pax_global_header00006660000000000000000000000064142051446730014520gustar00rootroot0000000000000052 comment=551dd8c9f8d10681dc535ec43d652bbadf60de48 synapse-1.53.0/000077500000000000000000000000001420514467300132705ustar00rootroot00000000000000synapse-1.53.0/.ci/000077500000000000000000000000001420514467300137415ustar00rootroot00000000000000synapse-1.53.0/.ci/patch_for_twisted_trunk.sh000077500000000000000000000003431420514467300212330ustar00rootroot00000000000000#!/bin/sh # replaces the dependency on Twisted in `python_dependencies` with trunk. set -e cd "$(dirname "$0")"/.. sed -i -e 's#"Twisted.*"#"Twisted @ git+https://github.com/twisted/twisted"#' synapse/python_dependencies.py synapse-1.53.0/.ci/postgres-config.yaml000066400000000000000000000007561420514467300177460ustar00rootroot00000000000000# Configuration file used for testing the 'synapse_port_db' script. # Tells the script to connect to the postgresql database that will be available in the # CI's Docker setup at the point where this file is considered. server_name: "localhost:8800" signing_key_path: ".ci/test.signing.key" report_stats: false database: name: "psycopg2" args: user: postgres host: localhost password: postgres database: synapse # Suppress the key server warning. trusted_key_servers: [] synapse-1.53.0/.ci/scripts/000077500000000000000000000000001420514467300154305ustar00rootroot00000000000000synapse-1.53.0/.ci/scripts/postgres_exec.py000077500000000000000000000020701420514467300206560ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys import psycopg2 # a very simple replacment for `psql`, to make up for the lack of the postgres client # libraries in the synapse docker image. # We use "postgres" as a database because it's bound to exist and the "synapse" one # doesn't exist yet. db_conn = psycopg2.connect( user="postgres", host="localhost", password="postgres", dbname="postgres" ) db_conn.autocommit = True cur = db_conn.cursor() for c in sys.argv[1:]: cur.execute(c) synapse-1.53.0/.ci/scripts/test_export_data_command.sh000077500000000000000000000036501420514467300230420ustar00rootroot00000000000000#!/usr/bin/env bash # Test for the export-data admin command against sqlite and postgres set -xe cd "$(dirname "$0")/../.." echo "--- Install dependencies" # Install dependencies for this test. pip install psycopg2 # Install Synapse itself. This won't update any libraries. pip install -e . echo "--- Generate the signing key" # Generate the server's signing key. python -m synapse.app.homeserver --generate-keys -c .ci/sqlite-config.yaml echo "--- Prepare test database" # Make sure the SQLite3 database is using the latest schema and has no pending background update. scripts/update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates # Run the export-data command on the sqlite test database python -m synapse.app.admin_cmd -c .ci/sqlite-config.yaml export-data @anon-20191002_181700-832:localhost:8800 \ --output-directory /tmp/export_data # Test that the output directory exists and contains the rooms directory dir="/tmp/export_data/rooms" if [ -d "$dir" ]; then echo "Command successful, this test passes" else echo "No output directories found, the command fails against a sqlite database." exit 1 fi # Create the PostgreSQL database. .ci/scripts/postgres_exec.py "CREATE DATABASE synapse" # Port the SQLite databse to postgres so we can check command works against postgres echo "+++ Port SQLite3 databse to postgres" scripts/synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml # Run the export-data command on postgres database python -m synapse.app.admin_cmd -c .ci/postgres-config.yaml export-data @anon-20191002_181700-832:localhost:8800 \ --output-directory /tmp/export_data2 # Test that the output directory exists and contains the rooms directory dir2="/tmp/export_data2/rooms" if [ -d "$dir2" ]; then echo "Command successful, this test passes" else echo "No output directories found, the command fails against a postgres database." exit 1 fi synapse-1.53.0/.ci/scripts/test_old_deps.sh000077500000000000000000000010611420514467300206150ustar00rootroot00000000000000#!/usr/bin/env bash # this script is run by GitHub Actions in a plain `focal` container; it installs the # minimal requirements for tox and hands over to the py3-old tox environment. # Prevent tzdata from asking for user input export DEBIAN_FRONTEND=noninteractive set -ex apt-get update apt-get install -y python3 python3-dev python3-pip libxml2-dev libxslt-dev xmlsec1 zlib1g-dev tox libjpeg-dev libwebp-dev export LANG="C.UTF-8" # Prevent virtualenv from auto-updating pip to an incompatible version export VIRTUALENV_NO_DOWNLOAD=1 exec tox -e py3-old synapse-1.53.0/.ci/scripts/test_synapse_port_db.sh000077500000000000000000000035211420514467300222220ustar00rootroot00000000000000#!/usr/bin/env bash # # Test script for 'synapse_port_db'. # - sets up synapse and deps # - runs the port script on a prepopulated test sqlite db # - also runs it against an new sqlite db set -xe cd "$(dirname "$0")/../.." echo "--- Install dependencies" # Install dependencies for this test. pip install psycopg2 coverage coverage-enable-subprocess # Install Synapse itself. This won't update any libraries. pip install -e . echo "--- Generate the signing key" # Generate the server's signing key. python -m synapse.app.homeserver --generate-keys -c .ci/sqlite-config.yaml echo "--- Prepare test database" # Make sure the SQLite3 database is using the latest schema and has no pending background update. scripts/update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates # Create the PostgreSQL database. .ci/scripts/postgres_exec.py "CREATE DATABASE synapse" echo "+++ Run synapse_port_db against test database" coverage run scripts/synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml # We should be able to run twice against the same database. echo "+++ Run synapse_port_db a second time" coverage run scripts/synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml ##### # Now do the same again, on an empty database. echo "--- Prepare empty SQLite database" # we do this by deleting the sqlite db, and then doing the same again. rm .ci/test_db.db scripts/update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates # re-create the PostgreSQL database. .ci/scripts/postgres_exec.py \ "DROP DATABASE synapse" \ "CREATE DATABASE synapse" echo "+++ Run synapse_port_db against empty database" coverage run scripts/synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml synapse-1.53.0/.ci/sqlite-config.yaml000066400000000000000000000006471420514467300174000ustar00rootroot00000000000000# Configuration file used for testing the 'synapse_port_db' script. # Tells the 'update_database' script to connect to the test SQLite database to upgrade its # schema and run background updates on it. server_name: "localhost:8800" signing_key_path: ".ci/test.signing.key" report_stats: false database: name: "sqlite3" args: database: ".ci/test_db.db" # Suppress the key server warning. trusted_key_servers: [] synapse-1.53.0/.ci/test_db.db000066400000000000000001114700001420514467300157000ustar00rootroot00000000000000SQLite format 3@ zgaz.?fhtS^:G!' x݁cŁN7|bnCW!<   X:  X 5oCvX2 | X +  Y ;  X - m D  t I  57:58/15unread_count.sql*4Y:58/13remove_presence_allow_inbound.sql33:58/12room_stats.sql23:58/11user_id_seq.py)1W:58/10federation_pos_instance_name.sql)0W:58/10drop_local_rejections_stream.sql/3:58/09shadow_ban.sql/.c:58/08_media_safe_from_quarantine.sql.sqlite -E:58/07persist_ui_auth_ips.sql,=:58/06dlols_unique_idx.py+=:58/03persist_ui_auth.sql&*Q:58/02remove_dup_outbound_pokes.sql')S:58/00background_update_ordering.sql((U957/rooms_version_column_3.sql.sqlite('U957/rooms_version_column_2.sql.sqlite&C957/rooms_version_column.sql%%O957/remove_sent_outbound_pokes.sql"$I957/local_current_membership.py)#W957/device_list_remote_cache_stale.sql*"Y957/delete_old_current_state_events.sql!C856/state_group_room_idx.sql, ]856/signing_keys_nonunique_signatures.sql7856/room_retention.sql5856/room_key_etag.sql1g856/remove_tombstoned_rooms_from_directory.sql=856/redaction_censor4.sql)W856/nuke_empty_communities_from_db.sql$M856/hidden_devices_fix.sql.sqlite)W856/event_labels_background_update.sql3856/event_labels.sql3856/event_expiry.sql"I856/device_stream_id_insert.sql+[856/delete_keys_from_deleted_backups.sql"I856/unique_user_filter_index.py3856/signing_keys.sql=856/redaction_censor2.sqlC856/public_room_list_idx.sql7856/hidden_devices.sql#K856/drop_unused_event_tables.sql=856/devices_last_seen.sql$ M856/users_in_public_rooms_idx.sql =856/user_external_ids.sql 9856/stats_separated.sql A856/room_membership_idx.sql ;856/redaction_censor.sqlA856/fix_room_keys_index.sql"I856/destinations_failure_ts.sql.a856/current_state_events_membership_mk2.sql*Y856/current_state_events_membership.sql$M856/add_spans_to_device_lists.sql"I755/users_alter_deactivated.sql%O755/track_threepid_validations.sqlA755/access_token_expiry.sql 5ql?    k ?   j dl EM& 7 q F  ` F q7:58/15unread_count.sql5,Y:58/13remove_presence_allow_inbound.sql43:58/12room_stats.sql33:58/11user_id_seq.py2+W:58/10federation_pos_instance_name.sql1+W:58/10drop_local_rejections_stream.sql03:58/09shadow_ban.sql/1c:58/08_media_safe_from_quarantine.sql.sqlite."E:58/07persist_ui_auth_ips.sql-=:58/06dlols_unique_idx.py,=:58/03persist_ui_auth.sql+(Q:58/02remove_dup_outbound_pokes.sql*)S:58/00background_update_ordering.sql)*U957/rooms_version_column_3.sql.sqlite(*U957/rooms_version_column_2.sql.sqlite'!C957/rooms_version_column.sql&'O957/remove_sent_outbound_pokes.sql%$I957/local_current_membership.py$+W957/device_list_remote_cache_stale.sql#,Y957/delete_old_current_state_events.sql"!C856/state_group_room_idx.sql!.]856/signing_keys_nonunique_signatures.sql 7856/room_retention.sql5856/room_key_etag.sql3g856/remove_tombstoned_rooms_from_directory.sql=856/redaction_censor4.sql+W856/nuke_empty_communities_from_db.sql&M856/hidden_devices_fix.sql.sqlite+W856/event_labels_background_update.sql3856/event_labels.sql3856/event_expiry.sql$I856/device_stream_id_insert.sql-[856/delete_keys_from_deleted_backups.sql$I856/unique_user_filter_index.py3856/signing_keys.sql=856/redaction_censor2.sql!C856/public_room_list_idx.sql7856/hidden_devices.sql%K856/drop_unused_event_tables.sql=856/devices_last_seen.sql&M856/users_in_public_rooms_idx.sql =856/user_external_ids.sql 9856/stats_separated.sql A856/room_membership_idx.sql ;856/redaction_censor.sql A856/fix_room_keys_index.sql$I856/destinations_failure_ts.sql0a856/current_state_events_membership_mk2.sql,Y856/current_state_events_membership.sql&M856/add_spans_to_device_lists.sql$I755/users_alter_deactivated.sql'O755/track_threepid_validations.sqlA 755/access_token_expiry.sql    AS-1  AS-1 ;     UeE%eF' m >  S % Y  j^ </    s SD %   j* ; xIR#cg48 }N}/.Q!DSFBpkqfnvBQbGoMUK:localhost:8800th.Q!CAGaRyRvrohDRBsrWH:localhost:8800th.Q!AYFqrmxwClFQlcTTYq:localhost:8800th.Q!AjjrNwXmPTCruHxaJq:localhost:8800th.Q!BpTqIemsWFZIqTcgJO:localhost:8800th.Q!BoyzlWNkRPncpDjBDg:localhost:8800th.Q!BkzROHxDAfKIzYpmPV:localhost:8800th.Q!BfEFIDBthhkweqfhir:localhost:8800th.Q!BckZfhQgrcyiMhEAAJ:localhost:8800th.Q!BPNyKqmwcpGxIbGFZG:localhost:8800th.Q!BKZJsoFNhiLTDYNclB:localhost:8800th.Q!BGbJEmJRVJGlZFQbZe:localhost:8800th.Q!BDASLhdcKfNwxCTCSg:localhost:8800th.Q!AoAvmnwMkhYBQsbCsL:localhost:8800th.Q!CkNvQnbApPIcuKygDk:localhost:8800th.Q!CgVBWWcRJoHEcwoLcq:localhost:8800th.Q!CSqENqzAezaZnGktbE:localhost:8800th.Q!CQKLQUpSYakhxVDltC:localhost:8800th.Q!CNFopUEQTFbzjmLvii:localhost:8800th.Q!CKNftKKCaOCVUyYWNY:localhost:8800th.Q!CGckPHdSYcIocFvRAq:localhost:8800th.Q!DqxFmsXPclgGqpSwdy:localhost:8800m".Q!DoiZErAdypBUMZKaeJ:localhost:8800th.Q!DntdfAPfCfgdOoRMdl:localhost:8800th.Q!DnUHoxreGexNmjSVpq:localhost:8800th.Q!DelfBAGvCrTXgNxmNV:localhost:8800th-Q!EABRjdYuYumMhLSwIa:localhost:8800m{.Q!DuqHkpTfWCUblSrxQj:localhost:8800th.Q!DuqHkpTfWCUblSrxQj:localhost:8800mq.Q!DqxFmsXPclgGqpSwdy:localhost:8800th.Q!DoiZErAdypBUMZKaeJ:localhost:8800m.Q!DntdfAPfCfgdOoRMdl:localhost:8800m.Q!DnUHoxreGexNmjSVpq:localhost:8800m.Q!DelfBAGvCrTXgNxmNV:localhost:8800m).Q!DSFBpkqfnvBQbGoMUK:localhost:8800m.Q!CkNvQnbApPIcuKygDk:localhost:8800m-Q!CgVBWWcRJoHEcwoLcq:localhost:8800m=.Q!CSqENqzAezaZnGktbE:localhost:8800m3-Q!CQKLQUpSYakhxVDltC:localhost:8800m@.Q!CNFopUEQTFbzjmLvii:localhost:8800m.Q!CKNftKKCaOCVUyYWNY:localhost:8800m.Q!CGckPHdSYcIocFvRAq:localhost:8800m.Q!CAGaRyRvrohDRBsrWH:localhost:8800m-Q!BrssELMbasSzTFpIXm:localhost:8800m).Q!BpTqIemsWFZIqTcgJO:localhost:8800m.Q!BoyzlWNkRPncpDjBDg:localhost:8800m-Q!BkzROHxDAfKIzYpmPV:localhost:8800mG.Q!BfEFIDBthhkweqfhir:localhost:8800m-Q!BckZfhQgrcyiMhEAAJ:localhost:8800mw.Q!BPNyKqmwcpGxIbGFZG:localhost:8800m.Q!BKZJsoFNhiLTDYNclB:localhost:8800m-Q!BGbJEmJRVJGlZFQbZe:localhost:8800ma-Q!BDASLhdcKfNwxCTCSg:localhost:8800m.Q!AoAvmnwMkhYBQsbCsL:localhost:8800m5-Q!AjjrNwXmPTCruHxaJq:localhost:8800mH.Q!AYFqrmxwClFQlcTTYq:localhost:8800mh.Q!AWfbViAZparIjmDaVT:localhost:8800th-Q!AWfbViAZparIjmDaVT:localhost:8800m.Q!AOEdqVKPFddrqbKPOL:localhost:8800th.Q!AOEdqVKPFddrqbKPOL:localhost:8800m|.Q!AMLmLqizBFklpqKibP:localhost:8800th.Q!AMLmLqizBFklpqKibP:localhost:8800m.Q!ABHbfUdkHCJksMsaUt:localhost:8800th.Q!ABHbfUdkHCJksMsaUt:localhost:8800m1!9:localhost:42455th1!9:localhost:42455m1!8:localhost:42455m1!7:localhost:42455m~1!6:localhost:42455th1!6:localhost:42455my1!5:localhost:42455th1!5:localhost:42455mo3!13:localhost:42455th3!13:localhost:42455m3!12:localhost:42455th3!12:localhost:42455m3!11:localhost:42455th3!11:localhost:42455m3!10:localhost:42455th3!10:localhost:42455m1!0:localhost:44405m1!0:localhost:42455th1!0:localhost:42455mf1!0:localhost:41985m1!0:localhost:37265m AH T ` $ l 0 x < H X f(o1y;EQ`"m1|@97 Q  !LaLcEGFLpjdlYlYKGC:localhost:8800th&\;6 Q!LFBhoxJpmBqFrwEzGP:localhost:8800th&\95 Q  !KxhGcTbEWmtgGNpdox:localhost:8800th&\94 Q  !KmuRTfGFgJdgIDAgIW:localhost:8800th&\:3 Q !KetCYFxrTxawNOGnOf:localhost:8800th&\92 Q  !KeqmSjifajNKxtgqhj:localhost:8800th&\91 Q  !KeBlWUQiLYUoILKkTB:localhost:8800th&\90 Q   !KdOYYnOuwAyQzqwUki:localhost:8800th&\:/ Q !KcXNWNfbLcYsBKZHIp:localhost:8800th&\9. Q  !KXMUzALpMMMKqoQXUS:localhost:8800th&\9- Q  !KIHYKMzkRDrJwiywwz:localhost:8800th&\;, Q!JusxqeECtidaPlWqhp:localhost:8800th&\9+ Q  !JnAKXOrlyisFUpgJPw:localhost:8800th&\:* Q !JiUawCFQnodcpssOfK:localhost:8800th&\9) Q  !JZouHBRxCRbcxYJnbn:localhost:8800th&\9( Q  !JYLMokjOhZZlmbZvTf:localhost:8800th&\;' Q!JPTwFTSDaBXwUTgitj:localhost:8800th&\9& Q  !JGhlAUflyNxErGGZZu:localhost:8800th&\9% Q  !IlGJpjzrvvAFuwTAgo:localhost:8800th&\;$ Q!IfYYyzLHSOeyJBxBfn:localhost:8800th&\;# Q !IZkczIYykpZDvjuUWn:localhost:8800th&\;" Q!IYxUkyFHOgvhLpdkOA:localhost:8800th&\9! Q   !ITdmSQpjMnaPoHIbws:localhost:8800th&\; Q!IPYMCBwcyNIzqdiIWv:localhost:8800th&\; Q!IMiczgkCTjejbnbeyP:localhost:8800th&\9 Q  !ILbUVZOfPPwaZRrKJd:localhost:8800th&\; Q!IGVHKYcSuxzVPlFHlj:localhost:8800th&\; Q!HusOrLtWZTLbmQZxmm:localhost:8800th&\; Q!HhYREfUiJTpjWmOuPF:localhost:8800th&\; Q!HcMGemcRrLnLprOJJR:localhost:8800th&\: Q !HbYxdEuVIeLKHwqJEh:localhost:8800th&\; Q!HZqzpRgqekPOtxstVc:localhost:8800th&\; Q!HXfrGcvJCbRItyQLVE:localhost:8800th&\9 Q  !HWTlaNxUKnDsrtlOxU:localhost:8800th&\9 Q  !HOPyhZPcKkrvSmDIvX:localhost:8800th&\; Q!HIZTeBCxvpMSpcqGVD:localhost:8800th&\9 Q  !HAFNBarGuVZuWCgwWM:localhost:8800th&\9 Q  !GwXGurbyEmykmmHcHJ:localhost:8800th&\9 Q  !GwLdUoDplyVUogXDzu:localhost:8800th&\9 Q  !GsjDgpaxdwYfnefiWO:localhost:8800th&\9 Q  !GixhPUMvtKSWoKRgvw:localhost:8800th&\: Q !GiSxJsKZhQVHBkrVPn:localhost:8800th&\ 9 Q  !GgUNbVXspVTpOlaHBl:localhost:8800th&\: Q !GSxvxNevpCiwmFCHys:localhost:8800th&\; Q!GGXyLHdVXqhQjPRvac:localhost:8800th&\9 Q  !GGTWnzJfvPQBgQqDIE:localhost:8800th&\9 Q  !GBPGYLDkXcAsHgkfuS:localhost:8800th&\; Q!FklhVuCInffbDxunWv:localhost:8800th&\; Q!FbJSiQoZtZkaFwzzQq:localhost:8800th&\9 Q  !FZOLkaLbBpaibrbHZx:localhost:8800th&\; Q!FPcQcheNebvdFvmOnr:localhost:8800th&\; Q!FIOuvzpMhoERunVYYA:localhost:8800th&\9 Q  !FAYqpziHeVZugCGaij:localhost:8800th&\9 Q  !EyyNoldCLUdFHzXTDP:localhost:8800th&\9 Q   !EyEaTZElOkdURKbEXo:localhost:8800th&\; Q!EieRtaCFZJJCIOkRPp:localhost:8800th&\9 Q  !EhUxBjnSkVXpTrQlrn:localhost:8800th&\;~ Q!EhFUhsgQbBWmrnGmaz:localhost:8800th&\9} Q  !EfJcWhdjNARbuHYrqU:localhost:8800th&\;| Q!EWkoFeckhXlNyjuIEB:localhost:8800th&\;{ Q!EMhFCPhwmnWVnjtXXM:localhost:8800th&\9z Q  !ELBgBaMSIMNkjFSumH:localhost:8800th&\;y Q!EABRjdYuYumMhLSwIa:localhost:8800th&\:x Q !DuqHkpTfWCUblSrxQj:localhost:8800th&\:w Q !DqxFmsXPclgGqpSwdy:localhost:8800th&\yyuT3Rp O . Al K *Ѓ hGa%Y- hxEw#  j8p> ?-]@anon-20191002_181700-821:localhost:8800&-]@anon-20191002_181700-757:localhost:8800O-]@anon-20191002_181700-681:localhost:8800 u-]@anon-20191002_181700-610:localhost:8800_ -]@anon-20191002_181700-532:localhost:8800-]@anon-20191002_181700-438:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-297:localhost:8800Os-]@anon-20191002_181700-227:localhost:8800r-]@anon-20191002_181700-155:localhost:8800H[{uoic]WQKE?93-'! ysmga[ʆ xmubOW%LAŅ6+ F gtiф^SVHQ=.2 ʄ'  W 1 z ~o 6d كY N jC 38 - "  ]  v Tk `U|J?4U)w|Qqf[MPE:W/$́BxTmbWK@7u,s!po  R Q $ [ $1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAoV 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgo}1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwweW9JRFk5aGt3VmE9a3QKMDAyZnNpZ25hdHVyZSDHqwHHHtg_uF13OA88pF-q5kS_mwIyEV79B7ibema-lgoM>|vpjd^XRLF@:4.(" ztnhb\VPJD>ȆxndZP_F5<2܅({ 2vlhb$XND:U0K& τ  Y~ 2t j ` 'V L B 8 \. 2$  ̓  O| r h W^LTՂJ@(6,x"AւzxpZf)\RǁH>41*  Hxn'dZPYF<2(zy  {xs) 6b h ЃS GEU}#"R9{[9=anon-20191002_181700-746 5;anon-20191002_181700-65U =anon-20191002_181700-537!=anon-20191002_181700-408=anon-20191002_181700-303U9anon-20191002_181700-2h bo a<ts ')1570040430164localhost:8829< #example.com # example.com R {uoic]WQKE?93-'! ysmga[UOIC=71+%  } w q k e _ Y S M G A ; 5 / ) #     | v p j d ^ X RovV^4F.ڜ~fN6jU7kR*ۛ sZ@8%S/n=R8ڙ jNn6D -xd L 4 ٗ × l I k1 B  i Q 9 ! q nY [A B) * y ` G ȓ.  | ~c aJ E2 0  j R đ: " s [[ GC /+  { c ׏K 3   k gS R; <$  kS<č% uy]ZE?- }e׋L4kl`T@<*$ t׉\D,m}Te2N6 ՇnV?(tVx4`H0ΆiQn9[!6 qYAʄ)ya_I@1% iтQ9!y gqXY9A!)yaAI(*2 . D2  Y j8  ` x Rn\ \ B P 5  V & h1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E 0 1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48-1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A F3$26:localhost:42455 1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U d0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ 1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc:H1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM L1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc`1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8[[1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc. !1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEL'Q$1570043503343snlnn:localhost:8800 x'Q$1570042732244zDmQh:localhost:8800 -1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks N1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI 1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoyb1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE&O$157004180650ruqIl:localhost:8800 I1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE +1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8 1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U' 1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ &1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE V 0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs{1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA y@1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU^ 'Q$1570043712439XdJFc:localhost:8800  1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU;1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo$51e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI$1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoNt1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMl 1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE '1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4=2'Q$1570042655148eXOyA:localhost:8800  .H v n n  1 W H   =x2  V H % &md y y b = < ?,Q!fDISaqNBhlOwherxSt:localhost:8800 | | ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 =,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 l,Q!QnmLrBAxeItdHsaxWf:localhost:8800 h h,Q!SBEprlZiuliFNSfNmz:localhost:8800ooC,Q!EfJcWhdjNARbuHYrqU:localhost:8800]]t+Q !VAEDgDJVqmxXZyAlSW:localhost:8800J,Q!YQATbgbLImCDamiDHC:localhost:8800K,Q!cHtqiAyCHEAoBIbCmL:localhost:8800EE 6+Q !WhLedNwPGGGTtqeqam:localhost:8800 L4+Q !mfzIRinBAGGrZvQAuI:localhost:8800+Q !lEJUJZxqZPKZetemiR:localhost:8800 - -  +Q !XIqmzIFbkHGQPIpywk:localhost:8800SS,Q!TlJCaYlCkOOVzFDlLx:localhost:8800kk,Q!jIfvTrwedrWLubsnlM:localhost:8800o,Q!KIHYKMzkRDrJwiywwz:localhost:8800 / / /+Q !ZaOktTIVeRgBXxfubH:localhost:8800+Q !BrssELMbasSzTFpIXm:localhost:8800JJ,Q!PQZMTVTeCYqMZwkHvW:localhost:8800 ,Q!NPdjmIfsBVIIkvWBzD:localhost:8800aaP,Q!pduebXnTyxQWVxEICp:localhost:8800 . .*,Q!nvclDopiBLEOKBIheH:localhost:8800CC x,Q!tkajvIKHoOMWGsReBs:localhost:8800 ,Q!rQeYcODvQiLsOIbQrJ:localhost:8800// 4,Q!vyCFfUTJKYJSDadFhT:localhost:8800\\,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 0@,Q!aWvVRVaDflYyyGTOdD:localhost:8800 J/,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!NhWgOTYzEPRwAxRQvS:localhost:8800ss *Q!zhCsYcaweVFJLLNwBz:localhost:8800// ],Q!hnQOBexFYpvJntEChZ:localhost:8800s,Q!hFwigdYZkwYNSwelRH:localhost:8800 S S ,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800F,Q!DnUHoxreGexNmjSVpq:localhost:8800PP+Q !HAFNBarGuVZuWCgwWM:localhost:8800(( +Q !HmkcAMkMjWRhTDJMsy:localhost:8800\\. ,Q!SrMQpDMFREKRMELwbL:localhost:88000,Q!azRJNFPIRSFAskLILK:localhost:8800%,Q!LFBhoxJpmBqFrwEzGP:localhost:8800j,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a a ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 & &~,Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z Z,Q!bOSxzttDtclnrWnLov:localhost:8800cc1   & ( x Go47:hhhp?tableusersusersCREATE TABLE users( name TEXT, password_hash TEXT, creation_ts BIGINT, admin SMALLINT DEFAULT 0 NOT NULL, upgrade_ts BIGINT, is_guest SMALLINT DEFAULT 0 NOT NULL, appservice_id TEXT, consent_version TEXT, consent_server_notice_sent TEXT, user_type TEXT DEFAULT NULL, deactivated SMALLINT DEFAULT 0 NOT NULL, shadow_banned BOOLEAN, UNIQUE(name) )%%tabledestinationsdestinationsCREATE TABLE destinations( destination TEXT PRIMARY KEY, retry_last_ts BIGINT, retry_interval INTEGER , failure_ts BIGINT)N''[tableaccess_tokensaccess_tokensCREATE TABLE access_tokens( id BIGINT PRIMARY KEY, user_id TEXT NOT NULL, device_id TEXT, token TEXT NOT NULL, last_used BIGINT, valid_until_ms BIGINT, UNIQUE(token) )tableeventseventsCREATE TABLE events( stream_ordering INTEGER PRIMARY KEY, topological_ordering BIGINT NOT NULL, event_id TEXT NOT NULL, type TEXT NOT NULL, room_id TEXT NOT NULL, content TEXT, unrecognized_keys TEXT, processed BOOL NOT NULL, outlier BOOL NOT NULL, depth BIGINT DEFAULT 0 NOT NULL, origin_server_ts BIGINT, received_ts BIGINT, sender TEXT, contains_url BOOLEAN, UNIQUE (event_id) )7K%indexsqlite_autoindex_destinations_1destinationsI]7indexsqlite_autoindex_received_transactions_1received_transactions}77tablereceived_transactionsreceived_transactionsCREATE TABLE received_transactions( transaction_id TEXT, origin TEXT, ts BIGINT, response_code INTEGER, response_json bytea, has_been_referenced smallint default 0, UNIQUE (transaction_id, origin) )/Cindexsqlite_autoindex_profiles_1profilesQtableprofilesprofilesCREATE TABLE profiles( user_id TEXT NOT NULL, displayname TEXT, avatar_url TEXT, UNIQUE(user_id) )?Qtableuser_ipsuser_ipsCREATE TABLE user_ips ( user_id TEXT NOT NULL, access_token TEXT NOT NULL, device_id TEXT, ip TEXT NOT NULL, user_agent TEXT NOT NULL, last_seen BIGINT NOT NULL )9M'indexsqlite_autoindex_access_tokens_2access_tokens9M'indexsqlite_autoindex_access_tokens_1access_tokens)=indexsqlite_autoindex_users_1users qtablepresencepresence CREATE TABLE presence( user_id TEXT NOT NULL, state VARCHAR(20), status_msg TEXT, mtime BIGINT, UNIQUE (user_id) )/ Cindexsqlite_autoindex_presence_1presence E?-indexapplication_services_txns_idapplication_services_txns CREATE INDEX application_services_txns_id ON application_services_txns ( as_id )E ??tableapplication_services_txnsapplication_services_txns CREATE TABLE application_services_txns( as_id TEXT NOT NULL, txn_id INTEGER NOT NULL, event_ids TEXT NOT NULL, UNIQUE(as_id, txn_id) )Q e?indexsqlite_autoindex_application_services_txns_1application_services_txns &AAWtableapplication_services_stateapplication_services_stateCREATE TABLE application_services_state( as_id TEXT PRIMARY KEY, state VARCHAR(5), last_txn INTEGER )SgAindexsqlite_autoindex_application_services_state_1application_services_state (99ktableapplied_module_schemasapplied_module_schemasCREATE TABLE applied_module_schemas( module_name TEXT NOT NULL, file TEXT NOT NULL, UNIQUE(module_name, file) )K_9indexsqlite_autoindex_applied_module_schemas_1applied_module_schemas 77_tableapplied_schema_deltasapplied_schema_deltasCREATE TABLE applied_schema_deltas( version INTEGER NOT NULL, file TEXT NOT NULL, UNIQUE(version, file) )I]7indexsqlite_autoindex_applied_schema_deltas_1applied_schema_deltas4))#tableschema_versionschema_versionCREATE TABLE schema_version( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, version INTEGER NOT NULL, upgraded BOOL NOT NULL, CHECK (Lock='X') );O)indexsqlite_autoindex_schema_version_1schema_version Y[RQ . [ c J ObJ1_YYYYYYYY{$55tablecurrent_state_eventscurrent_state_events'CREATE TABLE current_state_events( event_id TEXT NOT NULL, room_id TEXT NOT NULL, type TEXT NOT NULL, state_key TEXT NOT NULL, membership TEXT, UNIQUE (event_id), UNIQUE (room_id, type, state_key) )z1]tableroomsrooms4CREATE TABLE rooms( room_id TEXT PRIMARY KEY NOT NULL, is_public BOOL, creator TEXT , room_version TEXT)f:5!indexpush_rules_user_namepush_rules=CREATE INDEX push_rules_user_name on push_rules (user_name)39G!indexsqlite_autoindex_push_rules_2push_rules<38G!indexsqlite_autoindex_push_rules_1push_rules;7!!wtablepush_rulespush_rules:CREATE TABLE push_rules ( id BIGINT PRIMARY KEY, user_name TEXT NOT NULL, rule_id TEXT NOT NULL, priority_class SMALLINT NOT NULL, priority INTEGER NOT NULL DEFAULT 0, conditions TEXT NOT NULL, actions TEXT NOT NULL, UNIQUE(user_name, rule_id) )36G!indexsqlite_autoindex_rejections_1rejections95!!utablerejectionsrejections8CREATE TABLE rejections( event_id TEXT NOT NULL, reason TEXT NOT NULL, last_check TEXT NOT NULL, UNIQUE (event_id) )I4]7indexsqlite_autoindex_server_signature_keys_1server_signature_keys7j377stableserver_signature_keysserver_signature_keys6CREATE TABLE server_signature_keys( server_name TEXT, key_id TEXT, from_server TEXT, ts_added_ms BIGINT, verify_key bytea, ts_valid_until_ms BIGINT, UNIQUE (server_name, key_id) ))2=indexsqlite_autoindex_rooms_1rooms5x*=-indexroom_memberships_user_idroom_memberships-CREATE INDEX room_memberships_user_id ON room_memberships (user_id)x)=-indexroom_memberships_room_idroom_memberships,CREATE INDEX room_memberships_room_id ON room_memberships (room_id)?(S-indexsqlite_autoindex_room_memberships_1room_memberships+'--_tableroom_membershipsroom_memberships*CREATE TABLE room_memberships( event_id TEXT NOT NULL, user_id TEXT NOT NULL, sender TEXT NOT NULL, room_id TEXT NOT NULL, membership TEXT NOT NULL, forgotten INTEGER DEFAULT 0, display_name TEXT, avatar_url TEXT, UNIQUE (event_id) )G&[5indexsqlite_autoindex_current_state_events_2current_state_events)G%[5indexsqlite_autoindex_current_state_events_1current_state_events(7#K%indexsqlite_autoindex_state_events_1state_events&@"%%Ctablestate_eventsstate_events%CREATE TABLE state_events( event_id TEXT NOT NULL, room_id TEXT NOT NULL, type TEXT NOT NULL, state_key TEXT NOT NULL, prev_state TEXT, UNIQUE (event_id) )^!1!yindexevent_json_room_idevent_json$CREATE INDEX event_json_room_id ON event_json(room_id)3 G!indexsqlite_autoindex_event_json_1event_json#I!!]tableevent_jsonevent_json"CREATE TABLE event_json( event_id TEXT NOT NULL, room_id TEXT NOT NULL, internal_metadata TEXT NOT NULL, json TEXT NOT NULL, format_version INTEGER, UNIQUE (event_id) )/Cindexevents_order_roomeventsCREATE INDEX events_order_room ON events ( room_id, topological_ordering, stream_ordering )+?indexsqlite_autoindex_events_1events ǖ7 Ƌ:V2H;(} ` X~. #   xH \ B N ^ Pd J  & G  |1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YNl1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo7 1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk: 1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I 'Q$1570043476325vnEPO:localhost:8800 J1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw\ 1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT431e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA G1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs F 1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQD&O$157004180650ruqIl:localhost:88001e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0hv'Q$1570042725233SjCnf:localhost:8800 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwW1'Q$1570042655148eXOyA:localhost:8800 } 1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No v0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_45 'Q$1570043646419zIOAX:localhost:8800 z K1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs )1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMW 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY J1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ Kc1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYZA1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA  1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1 &1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY{1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gV K1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQY1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA  1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMdG1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE>1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE ,1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo !1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIc1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA 1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs 1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ9-E | y 1  H E M P l @ Uq ] f  ! 9  *t$'Q!UyLoIXmzVFwycmBUeh:localhost:8800 )'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800 h'Q!NQgavrmiCPUVaVjssy:localhost:8800f 'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!EABRjdYuYumMhLSwIa:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!qInWQPtNQfBFoVzUtP:localhost:8800 q'Q!oXKJArsPmtgaYANBrg:localhost:8800 $&Q!wvnfKBSrUlfNmYoeil:localhost:8800z'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 lA'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 dG'Q!EieRtaCFZJJCIOkRPp:localhost:8800t'Q!HZqzpRgqekPOtxstVc:localhost:8800<'Q!GSxvxNevpCiwmFCHys:localhost:8800 r!'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!WFHIeSFQyuugGeBFxW:localhost:8800N~'Q!TlJCaYlCkOOVzFDlLx:localhost:8800g p'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 o'Q!rZWweGEChkxxtzyfDB:localhost:8800 &Q!kxTDuIasPNpXtiRsif:localhost:8800|i'Q!SUDzkfFBgpuCANOxRS:localhost:8800 z&Q!scyFsXcUIJiLIMwWMY:localhost:8800m 'Q!vOfeZvbtpuHfoqShFl:localhost:8800zc'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800='Q!bzPCFeFSMbCESvNbxl:localhost:8800/ i'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 @'Q!XNfwczePlyYFWLCaui:localhost:8800 'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800_ 'Q!JusxqeECtidaPlWqhp:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800^ 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:8800f'Q!aZwMKYDXJRlSKjQNWM:localhost:8800%\'Q!DnUHoxreGexNmjSVpq:localhost:8800M5'Q!eySSVuCclRpBDgwKIU:localhost:8800 F&Q!LaLcEGFLpjdlYlYKGC:localhost:8800Y ysmga[UOIC=71+% }wqke_YSMGA;5/)#  pKyW5ǗqlO?,ԕ]:u=mG$YB7% q ȒM * w Dh G &  xc HA  ~ Y 4 V o ܎M + t Ff 'D Ս"  [a $@{Xh4;kFŊzyVS4'rˈQ/q =iG%_c<.vڅT1ek82,& ~xrlf`ZTNHB<60*$  >X)yWؖ4skWC3ڔpF{"@rL)Ē}^yA9 ܑf A  l{ .Z A ' q ^V 2;  [ m6 8 ƍ_ = Z =x e Ԍ6  Qs Vދ:uaQ6) h‰H$q>]9z\v=U!!lچN/Wu/Y <!ƅfyGY,5vكZ:Xr2U9ق{U=7 [: $&; : u d p > B (L .  ^ x  gP 1 ^1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c J0e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4I 1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A21e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0a1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU @1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kL 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4'Q$1570043523355SbJjm:localhost:8800 <'Q$1570042712218KQzXb:localhost:8800 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIp1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ 1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0 0'1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI 1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA)C'Q$1570043748463euAqZ:localhost:8800 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ`1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk !m1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k&O$157004187089FLOwV:localhost:880011e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98g1e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEI(1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A}1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkI {1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$^1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQJ`1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg) ;1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g" m1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw`0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoX +1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0m1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQBQ? !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility^* |vpjd^XRLF@:4.(" .jVB$.dže~dM)7 #  -{ ߄g yS &? ҄+  5 Ӄm bY E 0 6ƃ0t`[K7#5́{SeN97"gzfQL<( B  L P x^p1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ6 'Q$1570043192266CXqej:localhost:8800 Q1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YQ1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90:581e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUj1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsh ,1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1EO 1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM0e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY)  vP$|J 'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800$'Q!pduebXnTyxQWVxEICp:localhost:8800|T'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800f*&'Q!TcaopYfMoJFEcjYRzJ:localhost:8800 'Q!bkwyieHZwSMJfuSKvV:localhost:8800U'Q!JZouHBRxCRbcxYJnbn:localhost:8800{ 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800h'Q!OXpGdKbowFUTChPdmF:localhost:8800 ' j8p> w-]@anon-20191002_181700-732:localhost:8800N-]@anon-20191002_181700-231:localhost:8800 -]@anon-20191002_181700-662:localhost:8800 -]@anon-20191002_181700-571:localhost:8800 e-]@anon-20191002_181700-505:localhost:8800S -]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-323:localhost:8800w*-]@anon-20191002_181700-269:localhost:8800/*-]@anon-20191002_181700-173:localhost:8800),]@anon-20191002_181700-113:localhost:8800l  H\3 H f= q(Q!QyLUggxrTnULUAOseq:localhost:8800'Q !zNCItZNbpkZKuufRhC:localhost:8800(Q!zFdNewlKnUiMBxnYrN:localhost:8800(Q!vyCFfUTJKYJSDadFhT:localhost:8800 (Q!sPWVGnipjiiWQpywNO:localhost:8800(Q!mOrKBPhetifKHDmElM:localhost:8800 (Q!lAGTcYIuMBXsVRGCOe:localhost:8800(Q!kkgEEVUJynguTqAoWD:localhost:8800(Q!beBXQofoOfxNBtzsut:localhost:8800 (Q!WVzjUePHrzCjfyTbmK:localhost:8800(Q!UyLoIXmzVFwycmBUeh:localhost:8800(Q!SfYtaUhCFosNfHfUVm:localhost:8800(Q!QyLUggxrTnULUAOseq:localhost:8800 (Q!NPdjmIfsBVIIkvWBzD:localhost:8800(Q!KmuRTfGFgJdgIDAgIW:localhost:8800 (Q!KeBlWUQiLYUoILKkTB:localhost:8800(Q!KcXNWNfbLcYsBKZHIp:localhost:8800 M{    &k@O 2 a "  < G%s l2T2kE&=^anon-20191002_181700-367{"presence":{"not_types":["m.presence"]}}%=anon-20191002_181700-366{}$=anon-20191002_181700-365{}#=anon-20191002_181700-364{}"=anon-20191002_181700-363{}/!=0anon-20191002_181700-353{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}/ =0anon-20191002_181700-352{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}};=Hanon-20191002_181700-351{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":1,"types":["a.made.up.filler.type"]}}};=Hanon-20191002_181700-350{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":1,"types":["a.made.up.filler.type"]}}}=anon-20191002_181700-349{}=anon-20191002_181700-348{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}=anon-20191002_181700-347{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}=anon-20191002_181700-346{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}h="anon-20191002_181700-345{"room":{"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":2}}}/=0anon-20191002_181700-343{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}};=Hanon-20191002_181700-342{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":1,"types":["a.made.up.filler.type"]}}}/=0anon-20191002_181700-341{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}}/=0anon-20191002_181700-339{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}}/=0anon-20191002_181700-338{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}}A=Vanon-20191002_181700-337{"presence":{"types":["m.presence"]}}A=Vanon-20191002_181700-336{"presence":{"types":["m.presence"]}}A=Vanon-20191002_181700-335{"presence":{"types":["m.presence"]}}^=anon-20191002_181700-334{"account_data":{"types":[]},"presence":{"types":["m.presence"]}}==Nanon-20191002_181700-333{"room":{"timeline":{"limit":1}}}==Nanon-20191002_181700-332{"room":{"timeline":{"limit":1}}}= =Nanon-20191002_181700-331{"room":{"timeline":{"limit":1}}}? =Ranon-20191002_181700-330{"room":{"timeline":{"limit":100}}}" =anon-20191002_181700-329{"account_data":{"types":[]},"presence":{"types":[]},"room":{"state":{"types":[]},"timeline":{"limit":1,"types":["m.room.message"]}}}k =(anon-20191002_181700-328{"presence":{"types":[]},"room":{"state":{"types":[]},"timeline":{"limit":1}}}k =(anon-20191002_181700-327{"presence":{"types":[]},"room":{"state":{"types":[]},"timeline":{"limit":1}}}==Nanon-20191002_181700-326{"room":{"timeline":{"limit":2}}}o=0anon-20191002_181700-321{"room":{"state":{"types":[]},"timeline":{"limit":10,"types":["m.room.message"]}}}o=0anon-20191002_181700-320{"room":{"state":{"types":[]},"timeline":{"limit":10,"types":["m.room.message"]}}}>=Panon-20191002_181700-319{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-318{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-317{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-315{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-314{"room":{"timeline":{"limit":10}}} |7|,@<^ . R'MWL,$}P'Q!bQDOrbAknnQZfUbhgS:localhost:88006'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+5'Q!JiUawCFQnodcpssOfK:localhost:8800 B$ h Z ++Llocalhost:41985ed25519:1localhost:41985mxui4PE/)F8ڵ o'pm Z++Llocalhost:44405ed25519:1localhost:44405m܈hh$ PWm~BJm Z++Llocalhost:37265ed25519:1localhost:37265mW1w:k~ : m9%3dm ^+'+Llocalhost:43723ed25519:key_2localhost:43723m7A\VR܄PYOktąQY7>mX^+'+Llocalhost:43723ed25519:key_1localhost:43723m jWX9[˫yë{rq6zTXvd&4mp`+'+Llocalhost:43723ed25519:key_0localhost:43723m $*+,36qYb u7or:Bv؋Z++Llocalhost:42455ed25519:1localhost:42455m mF'Uei3<פ&! NG\0 ڍHme])))Llocalhost:8800ed25519:a_OdAolocalhost:8800m(lN'wU/indexsqlite_autoindex_push_rules_enable_1push_rules_enableAXHU99+tablelocal_media_repositorylocal_media_repositoryYCREATE TABLE local_media_repository ( media_id TEXT, media_type TEXT, media_length INTEGER, created_ts BIGINT, upload_name TEXT, user_id TEXT, quarantined_by TEXT, url_cache TEXT, last_access_ts BIGINT, safe_from_quarantine BOOLEAN NOT NULL DEFAULT 0, UNIQUE (media_id) )E=//9tablepush_rules_enablepush_rules_enable@CREATE TABLE push_rules_enable ( id BIGINT PRIMARY KEY, user_name TEXT NOT NULL, rule_id TEXT NOT NULL, enabled SMALLINT, UNIQUE(user_name, rule_id) )  m>8 p ݃F S! %|ɂHR;1T0& / O / M N TeQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ!kjjUsMowsioSQRIJeg:localhost:8800 |SeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800-  JQQ$1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800TTeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800 TeQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800O `TeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800OTeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4!wBBQYEPjQGnoAzDpEu:localhost:8800!SeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800 TeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800$}|}'Q!beBXQofoOfxNBtzsut:localhost:8800''Q!TlJCaYlCkOOVzFDlLx:localhost:8800XX'Q!uGpSboYkgxVNOqNeUG:localhost:8800B 'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!JiUawCFQnodcpssOfK:localhost:8800YR )R_1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0m;1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0U 1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw51e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso)1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo41e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4Z  Za8 Z 0  )33$80:localhost:42455!13:localhost:42455)33$76:localhost:42455!12:localhost:42455) 33$73:localhost:42455!11:localhost:42455) 33$70:localhost:42455!10:localhost:42455( 31$67:localhost:42455!9:localhost:42455> ?Q$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:88008 3Q$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:880083Q$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800(31$12:localhost:42455!5:localhost:42455'11$2:localhost:42455!0:localhost:42455QeQ$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800QeQ$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800QeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800QeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829QeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829  v3 Q & v]Y+33$80:localhost:42455!13:localhost:42455+33$76:localhost:42455!12:localhost:42455+33$73:localhost:42455!11:localhost:42455 +33$70:localhost:42455!10:localhost:42455 *31$67:localhost:42455!9:localhost:42455 @?Q$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800 :3Q$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 :3Q$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800*31$12:localhost:42455!5:localhost:42455)11$2:localhost:42455!0:localhost:42455SeQ$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800SeQ$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800SeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800SeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829ReQ $0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829 $'lT<$>e3!13:localhost:424553!12:localhost:424553!11:localhost:42455 3!10:localhost:42455 1!9:localhost:42455 &Q!dBfASZrfiFeSKTjYJm:localhost:8800 &Q!LazKtcHZriKzCvvGwV:localhost:8800 &Q!lEJUJZxqZPKZetemiR:localhost:88001!5:localhost:424551!0:localhost:42455&Q!JnAKXOrlyisFUpgJPw:localhost:8800&Q!XRAZJeoZBhGeHKKjaG:localhost:8800&Q!hFwigdYZkwYNSwelRH:localhost:8800&Q!XiwGxQKwjgutEClKUy:localhost:8829%Q !NajQnqYmGyTjxhFYar:localhost:8829 w_G/ =n3$80:localhost:424553$76:localhost:424553$73:localhost:42455 3$70:localhost:42455 3$67:localhost:42455 ?$58_msg_c:localhost:42455 3$51:localhost:42455 3$45:localhost:424553$12:localhost:424551$2:localhost:424550e$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc0e$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E940e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd80e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro/e $0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfco jztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$  | v p jw]Y1;יaC`%4^ܘ5uM-(ؖa?]~/N5  ֔} ^ @ Q"  f ܓH * kn PP 12  q M ) l Fe +G ) m O 1 T 3u W 9 ݎ } _ A m# Z Dg I + ϋoQ3],vU4rvSX5+yۈ[=kCcE'݇ kMu/PsUօ7{{T] ?!eGp)K mOՂ1~ueWI9(}^? Px h teeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM!laUExtszUaoCpZoyEq:localhost:8800 IeeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800ƁeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800fŁeeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800 d]0 ' 2 M <'  j ] xh c B^kO 4   5P 1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI 1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkI1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY> 1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQc 1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMCG1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13QH1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA 1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIv1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8##1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM&O$157004181857fcmAB:localhost:8800? 1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc#1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k 3$69:localhost:42455 I 1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ y 1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U %'Q$1570042697199ROUNP:localhost:8800 1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0 1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM Y /1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0  3$22:localhost:42455 ) 1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sn1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA_'Q$1570043591414NuXxd:localhost:8800 'Q$1570043375299fbyXJ:localhost:8800 C1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwd\1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68f -1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI QF1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM 1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwP81e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0ur1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIx 1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 Y1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIY C1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc 1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc] 1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUF1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk S'Q$1570042654147iSsjl:localhost:8800 Y1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UG.,[ j W >R ? b  ~, B P x Z( $ \ ^f0*1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgX1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM ]1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw Y 1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0'Q$1570043391316OJaBO:localhost:8800 R 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis2 1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMD1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o 'Q$1570042699203fHFjU:localhost:8800 Q1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog'Q$1570043646419zIOAX:localhost:8800 81e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0h'1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok(1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A &O$157004183063NdEPw:localhost:8800M1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkR1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ect1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc_1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM 81e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-01e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgK 4 1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig3$22:localhost:42455 1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4R1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU3 1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 5 R'Q$1570042657151cITOZ:localhost:88001e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE y 1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc J1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs e1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsP_1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs e 1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 B1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8- 1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU +1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ]o1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkM1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M !1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE3 1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs^ 1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw5 c1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc &>E=c%}Q'Q!bQDOrbAknnQZfUbhgS:localhost:8800<'Q!TkluVzxeeCbMtbFWWS:localhost:8800 &Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+;'Q!JiUawCFQnodcpssOfK:localhost:8800%}Q'Q!bQDOrbAknnQZfUbhgS:localhost:8800:'Q!TkluVzxeeCbMtbFWWS:localhost:8800 &Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+9'Q!JiUawCFQnodcpssOfK:localhost:8800F^~xrlf`ZTNHB<60*$ |vpjd^e(*{N!tVGݖb2o0Jǔe42 N Ɠ r eE  ޑk > W d ې6  WP ! t G : m @ ?f9 H_/NTpCىi1<,b5L[.ކTq'Ez M߄ seF9lӂ?Pe$8 ]/  n n ` o~~ znLLe ysmga[UOIC=71+% }wqke_YSMGA;5/)#  i|EY7əuTv2eSh1C uQ0hv@J.uG#ҕ]x88j ޓG “# |` X@  ȑ_ > g ?} \ :  Cs XP #0  n L U* - g F i' ,eҌC!x~L[7܊mG"jC_>}[i9<tR/ gj8G%…b?mR{'\={Y\7=rR΂0pAN%- hG#0}wqke_YSMGA;5/)# 6"֜W AiI6c ח& Z  ˕D ry 0. Փc y .. בc  7M  7 hl !ʍVt @ns MΊy7$lو!V+ ܆@u*τ_"Iɂ~p3.hP!3  \ l2   K  x & j/ 4{ 6 IP G B h 1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM 1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM z1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs 1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck  1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjse.1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no41e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEz'Q$1570043193267ZyDyW:localhost:8800 &O$157004180448zlZXD:localhost:8800 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q"1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM%1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78'Q$1570043535366hhblx:localhost:8800 %M$15700426753WBESe:localhost:8829 } 1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo 3 ,C1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-Ml1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0sP1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI ,1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU O,;1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8j1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M g51e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg91e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU4 1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27EO c1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q@*1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc c1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4fc1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw !1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q }L1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYV `1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0: 1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8a 1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4<w1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU 3'Q$1570042635128KJCvL:localhost:8800 Z 1e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUv  (;x   a =]OuIItfanEtSFldECastnZGSRimage/pngm@anon-20191002_181700-693:localhost:8800m>e =!]DybAaZpILwgEOzaUcIYTBVUstext/plainm|🐔@anon-20191002_181700-686:localhost:8800m>f =!]fmVopMLTKYLkXaaGxvBXYFjctext/plainm'ascii@anon-20191002_181700-689:localhost:8800m> =]]lysZMZCYXnmEbKQByqnCYPHfimage/pngm@anon-20191002_181700-698:localhost:8800@anon-20191002_181700-697:localhost:8800m>~ C]M2019-10-02_BRGgNtEwftdNPMfvimage/pngme@anon-20191002_181700-695:localhost:8800https://localhost:43723/test.png C]O2019-10-02_aqhaEGPqafvXwwngtext/htmlGm@anon-20191002_181700-695:localhost:8800https://localhost:43723/test.html >Wa =]esDQYsESEKVKiaLxoRzGzdOoimage/pngm@anon-20191002_181700-692:localhost:8800m>Pu =!5]dwTcqLlLiLNEXhbvbWhfUwSStext/plainm1name;with;semicolons@anon-20191002_181700-689:localhost:8800m>q =!-]YjSlqOqjlzFiLdHmqwMzmeQdtext/plainm戚name with spaces@anon-20191002_181700-689:localhost:8800m>f =!]tmaPjQKoSEQYwKoAUSvRRjZDtext/plainmascii@anon-20191002_181700-688:localhost:8800m>[a =!]OtyUtaUSDlUJOuQSrGfOehBotext/plainm惓@anon-20191002_181700-687:localhost:8800m>` =![iuKQhJicCsIkiNVeywGedTigtext/plain#m%L@anon-20191002_181700-40:localhost:8800m S6p=lysZMZCYXnmEbKQByqnCYPHf C2019-10-02_BRGgNtEwftdNPMfv C2019-10-02_aqhaEGPqafvXwwng =OuIItfanEtSFldECastnZGSR =esDQYsESEKVKiaLxoRzGzdOo=dwTcqLlLiLNEXhbvbWhfUwSS=YjSlqOqjlzFiLdHmqwMzmeQd=fmVopMLTKYLkXaaGxvBXYFjc=tmaPjQKoSEQYwKoAUSvRRjZD=OtyUtaUSDlUJOuQSrGfOehBo=DybAaZpILwgEOzaUcIYTBVUs= iuKQhJicCsIkiNVeywGedTig g5d, 3 =lysZMZCYXnmEbKQByqnCYPHfimage/pngscale w0 =lysZMZCYXnmEbKQByqnCYPHf``image/pngcrop 0 =lysZMZCYXnmEbKQByqnCYPHf image/pngcrop6 C2019-10-02_BRGgNtEwftdNPMfvimage/pngscale w3C2019-10-02_BRGgNtEwftdNPMfv``image/pngcrop 3C2019-10-02_BRGgNtEwftdNPMfv image/pngcrop3=OuIItfanEtSFldECastnZGSRimage/pngscale w0=OuIItfanEtSFldECastnZGSR``image/pngcrop 0=OuIItfanEtSFldECastnZGSR image/pngcrop3=esDQYsESEKVKiaLxoRzGzdOoimage/pngscale w0=esDQYsESEKVKiaLxoRzGzdOo``image/pngcrop 0=esDQYsESEKVKiaLxoRzGzdOo image/pngcrop oS(~D ,=lysZMZCYXnmEbKQByqnCYPHfimage/png *=lysZMZCYXnmEbKQByqnCYPHf``image/png *=lysZMZCYXnmEbKQByqnCYPHf image/png /C2019-10-02_BRGgNtEwftdNPMfvimage/png -C2019-10-02_BRGgNtEwftdNPMfv``image/png-C2019-10-02_BRGgNtEwftdNPMfv image/png,=OuIItfanEtSFldECastnZGSRimage/png*=OuIItfanEtSFldECastnZGSR``image/png*=OuIItfanEtSFldECastnZGSR image/png,=esDQYsESEKVKiaLxoRzGzdOoimage/png*=esDQYsESEKVKiaLxoRzGzdOo``image/png)= esDQYsESEKVKiaLxoRzGzdOo image/png 3pS=lysZMZCYXnmEbKQByqnCYPHf =lysZMZCYXnmEbKQByqnCYPHf =lysZMZCYXnmEbKQByqnCYPHf C2019-10-02_BRGgNtEwftdNPMfv C2019-10-02_BRGgNtEwftdNPMfvC2019-10-02_BRGgNtEwftdNPMfv=OuIItfanEtSFldECastnZGSR=OuIItfanEtSFldECastnZGSR=OuIItfanEtSFldECastnZGSR=esDQYsESEKVKiaLxoRzGzdOo=esDQYsESEKVKiaLxoRzGzdOo= esDQYsESEKVKiaLxoRzGzdOo     @d    | wlcUG n 1 1IFi--?tableserver_keys_jsoK<^!!CtableredactionsredactionscCREATE TABLE redactions ( event_id TEXT NOT NULL, redacts TEXT NOT NULL, have_censored BOOL NOT NULL DEFAULT false, received_ts BIGINT, UNIQUE (event_id) )Kn_9indexsqlite_autoindex_e2e_one_time_keys_json_1e2e_one_time_keys_jsons?YaO[indexlocal_media_repository_thumbnails_media_idlocal_media_repository_thumbnails]CREATE INDEX local_media_repository_thumbnails_media_id ON local_media_repository_thumbnails (media_id)aXuOindexsqlite_autoindex_local_media_repository_thumbnails_1local_media_repository_thumbnails\Pm99;tablee2e_one_time_keys_jsone2e_one_time_keys_jsonrCREATE TABLE e2e_one_time_keys_json ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, algorithm TEXT NOT NULL, key_id TEXT NOT NULL, ts_added_ms BIGINT NOT NULL, key_json TEXT NOT NULL, CONSTRAINT e2e_one_time_keys_json_uniqueness UNIQUE (user_id, device_id, algorithm, key_id) )Gl[5indexsqlite_autoindex_e2e_device_keys_json_1e2e_device_keys_jsonqk55/tablee2e_device_keys_jsone2e_device_keys_jsonpCREATE TABLE e2e_device_keys_json ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, ts_added_ms BIGINT NOT NULL, key_json TEXT NOT NULL, CONSTRAINT e2e_device_keys_json_uniqueness UNIQUE (user_id, device_id) )?jS-indexsqlite_autoindex_server_keys_json_1server_keys_jsonoFi--?tableserver_keys_jsonserver_keys_jsonnCREATE TABLE "server_keys_json" ( server_name TEXT NOT NULL, key_id TEXT NOT NULL, from_server TEXT NOT NULL, ts_added_ms BIGINT NOT NULL, ts_valid_until_ms BIGINT NOT NULL, key_json bytea NOT NULL, CONSTRAINT server_keys_json_uniqueness UNIQUE (server_name, key_id, from_server) )h?9!indexevent_reference_hashes_idevent_reference_hashesmCREATE INDEX event_reference_hashes_id ON event_reference_hashes(event_id)Kg_9indexsqlite_autoindex_event_reference_hashes_1event_reference_hashesl(f99ktableevent_reference_hashesevent_reference_hasheskCREATE TABLE event_reference_hashes ( event_id TEXT, algorithm TEXT, hash bytea, UNIQUE (event_id, algorithm) )~e=1indexroom_alias_servers_aliasroom_alias_serversjCREATE INDEX room_alias_servers_alias ON room_alias_servers(room_alias)d11/tableroom_alias_serversroom_alias_serversiCREATE TABLE room_alias_servers( room_alias TEXT NOT NULL, server TEXT NOT NULL )\c+%windexroom_aliases_idroom_aliaseshCREATE INDEX room_aliases_id ON room_aliases(room_id)7bK%indexsqlite_autoindex_room_aliases_1room_aliasesga%%ktableroom_aliasesroom_aliasesfCREATE TABLE room_aliases( room_alias TEXT NOT NULL, room_id TEXT NOT NULL, creator TEXT, UNIQUE (room_alias) )_`1!{indexredactions_redactsredactionseCREATE INDEX redactions_redacts ON redactions (redacts)3_G!indexsqlite_autoindex_redactions_1redactionsdY]mGindexsqlite_autoindex_remote_media_cache_thumbnails_1remote_media_cache_thumbnailsay\GGqtableremote_media_cache_thumbnailsremote_media_cache_thumbnails`CREATE TABLE remote_media_cache_thumbnails ( media_origin TEXT, media_id TEXT, thumbnail_width INTEGER, thumbnail_height INTEGER, thumbnail_method TEXT, thumbnail_type TEXT, thumbnail_length INTEGER, filesystem_id TEXT, UNIQUE ( media_origin, media_id, thumbnail_width, thumbnail_height, thumbnail_type ) )C[W1indexsqlite_autoindex_remote_media_cache_1remote_media_cache_"Z11otableremote_media_cacheremote_media_cache^CREATE TABLE remote_media_cache ( media_origin TEXT, media_id TEXT, media_type TEXT, created_ts BIGINT, upload_name TEXT, media_length INTEGER, filesystem_id TEXT, last_access_ts BIGINT, quarantined_by TEXT, UNIQUE (media_origin, media_id) )  ]9 J 7  w  cee $VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8UmAcee $QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ymcee $GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0m)c ee $7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgm~GII $63_redaction1:localhost:42455$64_redaction2:localhost:42455mFKMM $15700426765pydev:localhost:8829$15700426764DoRhm:localhost:8829mO .;GII $64_redaction2:localhost:42455$63_redaction1:localhost:42455m< I?AA $lolredact:localhost:42455$lolredact:localhost:42455mDc ee $MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Em c ee $CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgm䊱 Pc ee $y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgmc ee $JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmkm88cee $y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRsmMOO $157004274411xArrT:localhost:8829$157004274310jCQYA:localhost:8829mDWcee $Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58m)Wcee $iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4km/  6 Y 6 _ n= |."I$64_redaction2:localhost:42455"I$63_redaction1:localhost:42455A$lolredact:localhost:424550e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 0e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE 0e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U 0e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A 0e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 0e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts0e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow%O$157004274411xArrT:localhost:8829$M$15700426765pydev:localhost:88290e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ0e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw580e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc/e $QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc  6 6 Y_=. n |"I$63_redaction1:localhost:42455"I$64_redaction2:localhost:42455A$lolredact:localhost:424550e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 0e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 0e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 0e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 0e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 0e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr00e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs%O$157004274310jCQYA:localhost:8829$M$15700426764DoRhm:localhost:88290e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw580e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U0e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k/e $8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y GFF# QZgG'{cDN j6 p D   h <  ` 4  2 V*zm.O## w L ^&Q#astest-__ANON__-31:localhost:8800Q+[#test-20191002_181700-47:localhost:8800PC#__ANON__-26:localhost:8800O+[#test-20191002_181700-46:localhost:8800N+[#test-20191002_181700-45:localhost:8800M+[#test-20191002_181700-44:localhost:8800LC#__ANON__-25:localhost:8800K+[#test-20191002_181700-43:localhost:8800JC#__ANON__-24:localhost:8800IC#__ANON__-23:localhost:8800HC#__ANON__-22:localhost:8800GC#__ANON__-21:localhost:8800FC#__ANON__-20:localhost:8800EC#__ANON__-19:localhost:8800DC#__ANON__-18:localhost:8800CC#__ANON__-17:localhost:8800BC#__ANON__-16:localhost:8800AC#__ANON__-15:localhost:8800@.a#publicroomalias_with_topic:localhost:8800?3k#publicroomalias_with_name_topic:localhost:8800>+[#publicroomalias_no_name:localhost:8800=C#__ANON__-14:localhost:8800<C#__ANON__-13:localhost:8800;+[#test-20191002_181700-42:localhost:8800:+[#test-20191002_181700-41:localhost:88009+[#test-20191002_181700-40:localhost:88008C#__ANON__-12:localhost:88007+[#test-20191002_181700-39:localhost:88006+[#test-20191002_181700-38:localhost:88005+[#test-20191002_181700-37:localhost:88004+[#test-20191002_181700-36:localhost:88003+[#test-20191002_181700-35:localhost:88002+[#test-20191002_181700-34:localhost:88001+[#test-20191002_181700-33:localhost:88000+[#test-20191002_181700-32:localhost:8800/+[#test-20191002_181700-31:localhost:8800.+[#test-20191002_181700-30:localhost:8800-+[#test-20191002_181700-29:localhost:8800,!G#worldreadable:localhost:8800+$M#nonworldreadable:localhost:8800* E#listingtest0:localhost:8800) E#listingtest2:localhost:8800( E#listingtest1:localhost:8800'+[#test-20191002_181700-28:localhost:8800&+[#test-20191002_181700-27:localhost:8800%+[#test-20191002_181700-26:localhost:8800$+[#test-20191002_181700-25:localhost:8800#+[#test-20191002_181700-24:localhost:8800"+[#test-20191002_181700-23:localhost:8800!+[#test-20191002_181700-22:localhost:8800 +[#test-20191002_181700-21:localhost:8800+[#test-20191002_181700-20:localhost:8800+[#test-20191002_181700-19:localhost:8800+[#test-20191002_181700-18:localhost:8800+[#test-20191002_181700-17:localhost:8800+[#test-20191002_181700-16:localhost:8800+[#test-20191002_181700-15:localhost:8800+[#test-20191002_181700-14:localhost:8800+[#test-20191002_181700-13:localhost:8800+[#test-20191002_181700-12:localhost:8800+[#test-20191002_181700-11:localhost:8800+[#test-20191002_181700-10:localhost:8800*Y#test-20191002_181700-9:localhost:8800*Y#test-20191002_181700-8:localhost:8800*Y#test-20191002_181700-7:localhost:8800*Y#test-20191002_181700-6:localhost:8800*Y#test-20191002_181700-5:localhost:8800*Y#test-20191002_181700-4:localhost:8800A#__ANON__-9:localhost:8800 *Y#test-20191002_181700-3:localhost:8800 A#__ANON__-8:localhost:8800 A#__ANON__-5:localhost:8800 3#☕:localhost:8800 *Y#test-20191002_181700-2:localhost:8800*Y#test-20191002_181700-1:localhost:8800A#__ANON__-4:localhost:8800A#__ANON__-3:localhost:8800A#__ANON__-2:localhost:8800A#__ANON__-1:localhost:8800A#__ANON__-0:localhost:8800 G #30room-create:localhost:8800 QT & ~  c h o{ 2 m  y ! ^ H> YA j <0eWF+ R C 7 M - t&Q!TkluVzxeeCbMtbFWWS:localhost:8800Q&Q!sqkBzbHHJOTNWwynqV:localhost:8800P&Q!OCEHAjcOXWNyWIESIS:localhost:8800O&Q!qjijQBfMwsCPTVgKPm:localhost:8800N&Q!kjjUsMowsioSQRIJeg:localhost:8800M&Q!UTAORDrNxIbSlGByAp:localhost:8800L&Q!MXhwoqNXvexeDDSOZT:localhost:8800K&Q!wBkUBAjOznOyxrLchl:localhost:8800J&Q!vBvlJEXUSQKUYmsKcO:localhost:8800I&Q!mogJVPxghalmKbblUq:localhost:8800H&Q!iKezIvJyjkNqKayFju:localhost:8800G&Q!kOmCTyiizHqfCJdhlR:localhost:8800F&Q!DqxFmsXPclgGqpSwdy:localhost:8800E&Q!yAzXcNLHMuqFOcOexj:localhost:8800D&Q!HbYxdEuVIeLKHwqJEh:localhost:8800C&Q!JPTwFTSDaBXwUTgitj:localhost:8800B&Q!yfizglmCXdcqCgDrTr:localhost:8800A&Q!ePtMOPPOgOcBIMNZpn:localhost:8800@&Q!NPdjmIfsBVIIkvWBzD:localhost:8800?&Q!vyCFfUTJKYJSDadFhT:localhost:8800>&Q!beBXQofoOfxNBtzsut:localhost:8800=&Q!vpuivIQDEhyuhOLWpg:localhost:8800<&Q!vpuivIQDEhyuhOLWpg:localhost:8800;&Q!krhefVncoErkCtnvsy:localhost:8800:&Q!mMsxpaIlcykPuOnDyl:localhost:88009&Q!VOhMAiLfKyTOZbmKGw:localhost:88008&Q!FAYqpziHeVZugCGaij:localhost:88007&Q!wsvXTJXouVkEZcCFsD:localhost:88006&Q!DoiZErAdypBUMZKaeJ:localhost:88005&Q!SvKwEALYoNreUvqAlp:localhost:88004&Q!fOJLpnbtgKNxxVDquX:localhost:88003&Q!KXMUzALpMMMKqoQXUS:localhost:88002&Q!NfaPEGKjnUDUTavzol:localhost:88001&Q!fcdNYFWFyxmdpKAknc:localhost:88000&Q!MWCLSWWGdWcSivNVLI:localhost:8800/&Q!bnTuVBaAJTPbcYZtRl:localhost:8800.&Q!BGbJEmJRVJGlZFQbZe:localhost:8800-&Q!tDsPLsKOLPePtEWRwn:localhost:8800,&Q!zFdNewlKnUiMBxnYrN:localhost:8800+&Q!KeBlWUQiLYUoILKkTB:localhost:8800*&Q!WVzjUePHrzCjfyTbmK:localhost:8800)&Q!lAGTcYIuMBXsVRGCOe:localhost:8800(&Q!UyLoIXmzVFwycmBUeh:localhost:8800'&Q!qxqNYKdtgvOQdhmgsj:localhost:8800&&Q!aBCvSXjtZUEPlPGHvY:localhost:8800%&Q!GiSxJsKZhQVHBkrVPn:localhost:8800$&Q!AjjrNwXmPTCruHxaJq:localhost:8800#&Q!BkzROHxDAfKIzYpmPV:localhost:8800"&Q!WWZVpyLeZfyfpWidLx:localhost:8800!&Q!XIqmzIFbkHGQPIpywk:localhost:8800 &Q!cHtqiAyCHEAoBIbCmL:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800&Q!CQKLQUpSYakhxVDltC:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800&Q!SyIWYOmcGiASNkPCTB:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800&Q!edbUkYJIZBNOiTuLJs:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:8800&Q!XgobMgBjNcDRJnRXLD:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800 &Q!xhbvqJDfxMSsZPqvld:localhost:8800 &Q!AWfbViAZparIjmDaVT:localhost:8800 &Q!OSHhtkGUjpUCkXwIhj:localhost:8800 &Q!AWfbViAZparIjmDaVT:localhost:8800 &Q!wnriPzXkIMmdTNoJKU:localhost:8800&Q!OaCEdDAiatpwYcagUb:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!NZHpBquHDfJAjiawGk:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800 ' &I QZgG'{cDN j6 p D   h <  ` 4  2 V*zm.O## w L ^&Q#astest-__ANON__-31:localhost:8800Q+[#test-20191002_181700-47:localhost:8800PC#__ANON__-26:localhost:8800O+[#test-20191002_181700-46:localhost:8800N+[#test-20191002_181700-45:localhost:8800M+[#test-20191002_181700-44:localhost:8800LC#__ANON__-25:localhost:8800K+[#test-20191002_181700-43:localhost:8800JC#__ANON__-24:localhost:8800IC#__ANON__-23:localhost:8800HC#__ANON__-22:localhost:8800GC#__ANON__-21:localhost:8800FC#__ANON__-20:localhost:8800EC#__ANON__-19:localhost:8800DC#__ANON__-18:localhost:8800CC#__ANON__-17:localhost:8800BC#__ANON__-16:localhost:8800AC#__ANON__-15:localhost:8800@.a#publicroomalias_with_topic:localhost:8800?3k#publicroomalias_with_name_topic:localhost:8800>+[#publicroomalias_no_name:localhost:8800=C#__ANON__-14:localhost:8800<C#__ANON__-13:localhost:8800;+[#test-20191002_181700-42:localhost:8800:+[#test-20191002_181700-41:localhost:88009+[#test-20191002_181700-40:localhost:88008C#__ANON__-12:localhost:88007+[#test-20191002_181700-39:localhost:88006+[#test-20191002_181700-38:localhost:88005+[#test-20191002_181700-37:localhost:88004+[#test-20191002_181700-36:localhost:88003+[#test-20191002_181700-35:localhost:88002+[#test-20191002_181700-34:localhost:88001+[#test-20191002_181700-33:localhost:88000+[#test-20191002_181700-32:localhost:8800/+[#test-20191002_181700-31:localhost:8800.+[#test-20191002_181700-30:localhost:8800-+[#test-20191002_181700-29:localhost:8800,!G#worldreadable:localhost:8800+$M#nonworldreadable:localhost:8800* E#listingtest0:localhost:8800) E#listingtest2:localhost:8800( E#listingtest1:localhost:8800'+[#test-20191002_181700-28:localhost:8800&+[#test-20191002_181700-27:localhost:8800%+[#test-20191002_181700-26:localhost:8800$+[#test-20191002_181700-25:localhost:8800#+[#test-20191002_181700-24:localhost:8800"+[#test-20191002_181700-23:localhost:8800!+[#test-20191002_181700-22:localhost:8800 +[#test-20191002_181700-21:localhost:8800+[#test-20191002_181700-20:localhost:8800+[#test-20191002_181700-19:localhost:8800+[#test-20191002_181700-18:localhost:8800+[#test-20191002_181700-17:localhost:8800+[#test-20191002_181700-16:localhost:8800+[#test-20191002_181700-15:localhost:8800+[#test-20191002_181700-14:localhost:8800+[#test-20191002_181700-13:localhost:8800+[#test-20191002_181700-12:localhost:8800+[#test-20191002_181700-11:localhost:8800+[#test-20191002_181700-10:localhost:8800*Y#test-20191002_181700-9:localhost:8800*Y#test-20191002_181700-8:localhost:8800*Y#test-20191002_181700-7:localhost:8800*Y#test-20191002_181700-6:localhost:8800*Y#test-20191002_181700-5:localhost:8800*Y#test-20191002_181700-4:localhost:8800A#__ANON__-9:localhost:8800 *Y#test-20191002_181700-3:localhost:8800 A#__ANON__-8:localhost:8800 A#__ANON__-5:localhost:8800 3#☕:localhost:8800 *Y#test-20191002_181700-2:localhost:8800*Y#test-20191002_181700-1:localhost:8800A#__ANON__-4:localhost:8800A#__ANON__-3:localhost:8800A#__ANON__-2:localhost:8800A#__ANON__-1:localhost:8800A#__ANON__-0:localhost:8800 G #30room-create:localhost:8800U~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" oUCޜk?Hg 4֛Tb"+m;ș \r-5oM ) | P C$ x L t YH + p ͓> gZ 7,  ؑT ( | JP $$x ˏL t VH "pٍDrl:@؋b3}RX,T(W|&P$χxLl ?tH؆phD,lЄ@lh?<҂d8j G`4؁[.E;2!O^v Q8  m U tp  G9   03 S`  $  T  aIF7e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czssha256M8e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcsha256 b8e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgsha256$8e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVAsha256 8e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8sha2568e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIsha256D 8e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQsha256 .Q$1570043477327AgpMM:localhost:8800sha256 N8e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUsha256 b8e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0sha256 8e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUsha256D8e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIsha2568e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMsha256ZT 8e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0sha256+ s8e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYsha256 7e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxosha256\8e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdEsha256 8e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwsha256d.Q$1570042728238dtqIB:localhost:8800sha256 .Q$1570042629121nZoNG:localhost:8800sha256 b' .Q$1570043585409JoQZw:localhost:8800sha256 = .Q$1570042664163IAHXd:localhost:8800sha256 -O$157004177030bmvvg:localhost:8800sha2568e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwsha2568e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEsha256 ,8e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTEsha2567e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcsha256r 7e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4sha256w 9 #8e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Qsha256w8e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4sha256 '#8e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8sha256 8e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYsha256" 8e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIsha256 #8e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEsha2568e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0sha256M8e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfosha2568e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8sha256 8e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0sha25648e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0sha256E8e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8sha256OE8e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwgsha2562 Z8e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgsha256 8e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwsha256 8e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQsha256 8e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcsha256bE8e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wsha2568e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0sha2568e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08sha2568e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8sha256 8e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMsha2568e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Qsha256 8e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8sha256 8e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4sha256a8e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMsha2568e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELosha256 h8e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Asha256 8e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUsha256 Yp8e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIsha256 m8e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWosha256V2H<(} ` X~. "   xH \ B N ^ Pd J  & G  }1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YNn1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo71e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk: 1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I 'Q$1570043476325vnEPO:localhost:8800 L1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw\ 1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT451e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA J1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs F 1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQD&O$157004180650ruqIl:localhost:88001e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0h{'Q$1570042725233SjCnf:localhost:8800 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwW4'Q$1570042655148eXOyA:localhost:8800 } 1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No x1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 'Q$1570043646419zIOAX:localhost:8800 x M1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs +1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY J1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ Ke1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYTD1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1 &1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY{1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gV M1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQZ1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA  1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMdI1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEA1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE .1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo "1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIf1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA 1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs 1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ9 : t ;I8 ++localhost:41985ed25519:1localhost:41985mxm {"old_verify_keys":{},"server_name":"localhost:41985","signatures":{"localhost:41985":{"ed25519:1":"rHXty21coGSEOxs1aITz7g6zUtGThhyBU/4pQDscyBTD/U6QBy9QM8/E8LFyTVDjFdl+w9EkZ7I622qnqmhXAA"}},"tls_fingerprints":[{"sha256":"Q0e0BkEHTFJ/AnClqOWJmcuJnNuB81JFb2HhvSZbQ7s"}],"valid_until_ts":1570129912000,"verify_keys":{"ed25519:1":{"key":"0XVpNFCrRS8p+RpGyxiHuK+JOO7J5LTI2rUgb8wncLw"}}}8++localhost:44405ed25519:1localhost:44405mm {"old_verify_keys":{},"server_name":"localhost:44405","signatures":{"localhost:44405":{"ed25519:1":"dWcskinL0RIu3j/yMurAECXPVGMzL6uTnYwxpQ0+IlHlRUms7lE1vduRD7rvlPKLS3SC2KHXjXMr56YeIqStCw"}},"tls_fingerprints":[{"sha256":"H9qsaZXJ4ROkn+ry5NJtg2uP72+eAWXw3KfSWz21zO0"}],"valid_until_ts":1570129911000,"verify_keys":{"ed25519:1":{"key":"3IgPaGjjJLf7mcYgULX56YRXHOwAbYV+G/ofQqqySuo"}}}8++localhost:37265ed25519:1localhost:37265mWm {"old_verify_keys":{},"server_name":"localhost:37265","signatures":{"localhost:37265":{"ed25519:1":"elpetIbv8dNHlj76cSjmS2UwnYSotmf5nXoStKh3LlJWcNR3eLb0mYpFza85sw48xNJMzPIoSGPYufsQN68zAw"}},"tls_fingerprints":[{"sha256":"MdDqmEu2fQI2lQTfTdFxPMoaKpPeYAR9nyvYXF+icZ8"}],"valid_until_ts":1570129909000,"verify_keys":{"ed25519:1":{"key":"MZmNd/E6lWv8fg06Dg2CbY65ORe59RElpZ+wopIzZIs"}}}v+'+zlocalhost:43723ed25519:key_2localhost:43723m7mX{"old_verify_keys":{},"server_name":"localhost:43723","signatures":{"localhost:43723":{"ed25519:key_2":"zOOHCGhxR73Srfo2De3/Cu8PW615RDgF4EC3w7e2Wky9loQbqpwOvrZDZLCPrRpkuwYRQRtiXZGycDg/8Iw7Bw"}},"valid_until_ts":1569956935000,"verify_keys":{"ed25519:key_2":{"key":"okFcVqBS3IRQWY7jT7i/lGt0Gn/YwsSFkp9RWZI3iD4"}}}v+'+zlocalhost:43723ed25519:key_1localhost:43723m mp{"old_verify_keys":{},"server_name":"localhost:43723","signatures":{"localhost:43723":{"ed25519:key_1":"pho2c/vuhPYYnhjFRa2bEtdsooBlXyXDiHxVLsW8pLxQK4t1AKRH4tJCqXlhJmFQYMJOvjIA60m5byhpbzPjAg"}},"valid_until_ts":1569956934000,"verify_keys":{"ed25519:key_1":{"key":"tqhq9ldYOVvLq3nDq+x7nXKArHH8NnpUWHZk1CY0mu4"}}}{+'+localhost:43723ed25519:key_0localhost:43723m Bv؋{"old_verify_keys":{},"server_name":"localhost:43723","signatures":{"localhost:43723":{"ed25519:key_0":"xPqfJUNKXzNMpjXlB+Y5xwfuayLPq3WSIOqsf0JHVv1nb1dkH5/G709RCAuwI2Bpb2IgZUtuOSFwqCxgIfrTAg"}},"valid_until_ts":1569956933713.81,"verify_keys":{"ed25519:key_0":{"key":"hyQqGv8r+6AstzM2cf1ZEmINFg91jTdvm++JctvkOoM"}}}8++localhost:42455ed25519:1localhost:42455m mme{"old_verify_keys":{},"server_name":"localhost:42455","signatures":{"localhost:42455":{"ed25519:1":"adkVhzOTFnCODgDOCPHihewnpWFvM6JHuvW2k4ZCSQxvlVrN3/4TCS2tOQN0vUQZ/I8BtKHKFKrNDgyCUic6Cw"}},"tls_fingerprints":[{"sha256":"K4Nhc3Bvz3piaGcJgEw+7+GZCG1CfF+LE4iAM67YY6c"}],"valid_until_ts":1570129733000,"verify_keys":{"ed25519:1":{"key":"Ru0fGSdVZWkzPB3XpPYmIQ2oThipRxlc2TC/CdqNEUg"}}}C)))localhost:8800ed25519:a_OdAolocalhost:8800mmזw{"old_verify_keys":{},"server_name":"localhost:8800","signatures":{"localhost:8800":{"ed25519:a_OdAo":"66nr1zCfVJcwBCGX3gH4dk8DTUjnH9y2PKpGju45U54Oxif08w7DBmLWgqOPqDu6z6RIc3ZRL+9YYV4SEPE1Ag"}},"tls_fingerprints":[{"sha256":"JZ6LdKuMUVw66lZan47UtygkfE+z7rzeQcjKQjGq87o"}],"valid_until_ts":1570126665335,"verify_keys":{"ed25519:a_OdAo":{"key":"KPm0/ZIc4uet6YjebE4C3Q8fn+XnGoyxFyd3PHTQTLY"}}}C)))localhost:8829ed25519:a_UxIGlocalhost:8829mLmC{"old_verify_keys":{},"server_name":"localhost:8829","signatures":{"localhost:8829":{"ed25519:a_UxIG":"HelZOBcYwxLUN73WGrWVrolsrQsnUCJIv5zZ/LpwjhYNw1UZHNrIUp97vbrN9VJ8cQdlEj3VWULaDrqU9XpmAg"}},"tls_fingerprints":[{"sha256":"/GoqocKx0mi1yh1hFdrbA11WU5Z1CpWDLmvNtbRuMfw"}],"valid_until_ts":1570126830147,"verify_keys":{"ed25519:a_UxIG":{"key":"nRXKaR7XL4fGnMIa8ZDWmshBD0h+o32Y98mhLUmVSqY"}}} QQq? -++localhost:41985ed25519:1localhost:41985 -++localhost:44405ed25519:1localhost:44405-++localhost:37265ed25519:1localhost:372651+'+localhost:43723ed25519:key_2localhost:437231+'+localhost:43723ed25519:key_1localhost:437231+'+localhost:43723ed25519:key_0localhost:43723-++localhost:42455ed25519:1localhost:424550)))localhost:8800ed25519:a_OdAolocalhost:8800/))) localhost:8829ed25519:a_UxIGlocalhost:8829  sB  p }.]!m@anon-20191002_181700-673:localhost:8800VPLLNWDDCEm9b{"device_id":"VPLLNWDDCE","device_keys":{"updated":"keys"},"user_id":"@anon-20191002_181700-673:localhost:8800"} ]!M@anon-20191002_181700-674:localhost:8800GKOEAKYNVTm7{"device_id":"GKOEAKYNVT","device_keys":{},"user_id":"@anon-20191002_181700-674:localhost:8800"}.]!m@anon-20191002_181700-671:localhost:8800KUQBONAEMFm{"device_id":"KUQBONAEMF","device_keys":{"updated":"keys"},"user_id":"@anon-20191002_181700-671:localhost:8800"}]!M@anon-20191002_181700-557:localhost:8800KTBNHNNWDAm2({"device_id":"KTBNHNNWDA","device_keys":{},"user_id":"@anon-20191002_181700-557:localhost:8800"}]!M@anon-20191002_181700-555:localhost:8800MAWHFJMVIZm{"device_id":"MAWHFJMVIZ","device_keys":{},"user_id":"@anon-20191002_181700-555:localhost:8800"} ]!+@anon-20191002_181700-549:localhost:8800BYOSFCFMSOm۬{"device_id":"BYOSFCFMSO","user_id":"@anon-20191002_181700-549:localhost:8800"} ]!+@anon-20191002_181700-532:localhost:8800FXXARIFXSSmڐ{"device_id":"FXXARIFXSS","user_id":"@anon-20191002_181700-532:localhost:8800"}]!M@anon-20191002_181700-527:localhost:8800BACKHRSCZNmr2{"device_id":"BACKHRSCZN","device_keys":{},"user_id":"@anon-20191002_181700-527:localhost:8800"} ]!%@anon-20191002_181700-524:localhost:8800IVEUVINDHFmj#{"device_id":"alices_first_device","user_id":"@50-e2e-alice:localhost:8480"}  Y!yA 7]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT 7]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE7]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF7]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDA7]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ7]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO7]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS7]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN6]! @anon-20191002_181700-524:localhost:8800IVEUVINDHF :t K a ]!%+@anon-20191002_181700-674:localhost:8800GKOEAKYNVTmy_algorithmmy_id_1m7"my+base64+key"a]!%+@anon-20191002_181700-673:localhost:8800VPLLNWDDCEmy_algorithmmy_id_1m4<"my+base64+key"a]!%+@anon-20191002_181700-671:localhost:8800KUQBONAEMFmy_algorithmmy_id_1m "my+base64+key"a]!%+@anon-20191002_181700-557:localhost:8800KTBNHNNWDAmy_algorithmmy_id_1m2("my+base64+key"a]!%+@anon-20191002_181700-555:localhost:8800MAWHFJMVIZmy_algorithmmy_id_1m"my+base64+key"a]!%+@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmy_algorithmmy_id_1m۬"my+base64+key"a]!%+@anon-20191002_181700-532:localhost:8800FXXARIFXSSmy_algorithmmy_id_1mڐ"my+base64+key"a]!%+@anon-20191002_181700-527:localhost:8800BACKHRSCZNmy_algorithmmy_id_1mr2"my+base64+key"a]!%+@anon-20191002_181700-524:localhost:8800IVEUVINDHFmy_algorithmmy_id_1mh"my+base64+key" Lg3 LL]!%@anon-20191002_181700-674:localhost:8800GKOEAKYNVTmy_algorithmmy_id_1 L]!%@anon-20191002_181700-673:localhost:8800VPLLNWDDCEmy_algorithmmy_id_1L]!%@anon-20191002_181700-671:localhost:8800KUQBONAEMFmy_algorithmmy_id_1L]!%@anon-20191002_181700-557:localhost:8800KTBNHNNWDAmy_algorithmmy_id_1L]!%@anon-20191002_181700-555:localhost:8800MAWHFJMVIZmy_algorithmmy_id_1L]!%@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmy_algorithmmy_id_1L]!%@anon-20191002_181700-532:localhost:8800FXXARIFXSSmy_algorithmmy_id_1L]!%@anon-20191002_181700-527:localhost:8800BACKHRSCZNmy_algorithmmy_id_1K]!% @anon-20191002_181700-524:localhost:8800IVEUVINDHFmy_algorithmmy_id_1  )c' M )QEm!vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455["$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc"]{"ts": 0}Q]m7!jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800["$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU"]{"ts": 1570043611354}Q]m7!jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800["$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI"]{"ts": 1570042413531}Q]m7!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800["$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg"]{"ts": 1570042407359}Q]m7!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800["$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg"]{"ts": 1570041137984}Q]m7!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800["$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"]{"ts": 1570041032639}Q]m7!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800["$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg"]{"ts": 1570041027642}Q[m7!aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800["$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"]{"ts": 1570040386366}  VO VTJQE!vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455VQ]!jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800VQ]!jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800VQ]!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800VQ]!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800VQ]!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800VQ]!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800TQ[ !aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800  9e- Y 9QEe !vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc{"ts": 0}Q]e7 !jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU{"ts": 1570043611354}Q]e7 !jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI{"ts": 1570042413531}Q]e7!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg{"ts": 1570042407359}Q]e7!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg{"ts": 1570041137984}Q]e7!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw{"ts": 1570041032639}Q]e7!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg{"ts": 1570041027642}Q[e7!aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q{"ts": 1570040386366}  VO VTJQE!vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455VQ]!jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800VQ]!jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800VQ]!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800VQ]!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800VQ]!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800VQ]!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800TQ[ !aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800      4] (Q!vnFXnkCSfTbsSNKrtg:localhost:8800 (Q!jRuDexjFzIDOKbwDJQ:localhost:8800 (Q!jDKAOtmeAGbYTpwyEW:localhost:8800 (Q!JYLMokjOhZZlmbZvTf:localhost:8800(Q!MWCLSWWGdWcSivNVLI:localhost:8800(Q!ILbUVZOfPPwaZRrKJd:localhost:8800(Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q !aWbcZNVBalJilCEsdr:localhost:8800   v2 <Q  d GOE|p a2E<d33mtableroom_tags_revisionsroom_tags_revisionsCREATE TABLE room_tags_revisions ( user_id TEXT NOT NULL, room_id TEXT NOT NULL, stream_id BIGINT NOT NULL, CONSTRAINT room_tag_revisions_uniqueness UNIQUE (user_id, room_id) ) o))Qtablereceipts_graphreceipts_graphtCREATE TABLE receipts_graph( room_id TEXT NOT NULL, receipt_type TEXT NOT NULL, user_id TEXT NOT NULL, event_ids TEXT NOT NULL, data TEXT NOT NULL, CONSTRAINT receipts_graph_uniqueness UNIQUE (room_id, receipt_type, user_id) )2Eindexsqlite_autoindex_room_tags_1room_tagsSstableroom_tagsroom_tagsCREATE TABLE room_tags( user_id TEXT NOT NULL, room_id TEXT NOT NULL, tag TEXT NOT NULL, content TEXT NOT NULL, CONSTRAINT room_tag_uniqueness UNIQUE (user_id, room_id, tag) )ErY3indexsqlite_autoindex_receipts_linearized_1receipts_linearizedw:q33tablereceipts_linearizedreceipts_linearizedvCREATE TABLE receipts_linearized ( stream_id BIGINT NOT NULL, room_id TEXT NOT NULL, receipt_type TEXT NOT NULL, user_id TEXT NOT NULL, event_id TEXT NOT NULL, data TEXT NOT NULL, CONSTRAINT receipts_linearized_uniqueness UNIQUE (room_id, receipt_type, user_id) )o;pO)indexsqlite_autoindex_receipts_graph_1receipts_graphu _{x11!tablebackground_updatesbackground_updates~CREATE TABLE background_updates( update_name TEXT NOT NULL, progress_json TEXT NOT NULL, depends_on TEXT, ordering INT NOT NULL DEFAULT 0, CONSTRAINT background_updates_uniqueness UNIQUE (update_name) )t//tableevent_search_statevent_search_statCREATE TABLE 'event_search_stat'(id INTEGER PRIMARY KEY, value BLOB)55tableevent_search_docsizeevent_search_docsizeCREATE TABLE 'event_search_docsize'(docid INTEGER PRIMARY KEY, size BLOB)F~Y3indexsqlite_autoindex_event_search_segdir_1event_search_segdirR}33Itableevent_search_segdirevent_search_segdirCREATE TABLE 'event_search_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx))|77'tableevent_search_segmentsevent_search_segmentsCREATE TABLE 'event_search_segments'(blockid INTEGER PRIMARY KEY, block BLOB)/{55tableevent_search_contentevent_search_contentCREATE TABLE 'event_search_content'(docid INTEGER PRIMARY KEY, 'c0event_id', 'c1room_id', 'c2sender', 'c3key', 'c4value')zz%%9tableevent_searchevent_searchCREATE VIRTUAL TABLE event_search USING fts4 ( event_id, room_id, sender, key, value )CyW1indexsqlite_autoindex_background_updates_1background_updatesow9) indexuser_threepids_user_iduser_threepids}CREATE INDEX user_threepids_user_id ON user_threepids(user_id);vO)indexsqlite_autoindex_user_threepids_1user_threepids{yu))-tableuser_threepidsuser_threepidszCREATE TABLE "user_threepids" ( user_id TEXT NOT NULL, medium TEXT NOT NULL, address TEXT NOT NULL, validated_at BIGINT NOT NULL, added_at BIGINT NOT NULL, CONSTRAINT medium_address UNIQUE (medium, address) )tK3?indexreceipts_linearized_room_streamreceipts_linearizedyCREATE INDEX receipts_linearized_room_stream ON receipts_linearized( room_id, stream_id )}s93indexreceipts_linearized_idreceipts_linearizedxCREATE INDEX receipts_linearized_id ON receipts_linearized( stream_id )  !z' $B#<%{ F O) ] e A ߂ yU܁2 hiDa" YW V U T      YZE nIH GF E D C B!  D (     O3&  @v Q Y]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800test_tag{}Y]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800test_tag{}c]Q%@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800test_tag{"order": 1}Y]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800test_tag{}  9OD 9 X]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800test_tagX]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800test_tagX]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800test_tagX]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800test_tagX]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800test_tagX]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800test_tagX]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800test_tagW]Q @anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800test_tag ^ k x ' O ]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800O ]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800O ]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800O]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800O]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800O]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800O]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800O]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800O]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800 O]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800 O]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800 aq! 1 O]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 O]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800 O]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800 O]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800O]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800O]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800O]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800O]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800O]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800O]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800N]Q @anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800    iX \  Y  y i]3@anon-20191002_181700-613:localhost:8800m.ignored_user_list7{"ignored_users": {"@anon-20191002_181700-614:localhost:8800": {}}} ]3@anon-20191002_181700-611:localhost:8800m.ignored_user_list6{"ignored_users": {"@anon-20191002_181700-612:localhost:8800": {}}} ]3@anon-20191002_181700-608:localhost:8800m.ignored_user_list5{"ignored_users": {"@anon-20191002_181700-609:localhost:8800": {}}}V ]-=@anon-20191002_181700-584:localhost:8800my.changing.type3{"cats_or_rats": "cats"}Y ]1?@anon-20191002_181700-584:localhost:8800my.unchanging.type/{"cats_or_rats": "lions"}R ]%=@anon-20191002_181700-583:localhost:8800my.test.type.{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-581:localhost:8800my.test.type){"cats_or_rats": "cats"}R]%=@anon-20191002_181700-580:localhost:8800my.test.type'{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-579:localhost:8800my.test.type#{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-578:localhost:8800my.test.type{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-577:localhost:8800my.test.type{"cats_or_rats": "cats"}<]%@anon-20191002_181700-575:localhost:8800my.test.type{}1]@anon-20191002_181700-302:localhost:8800m.direct{"@anon-20191002_181700-302:localhost:8800": ["!EyyNoldCLUdFHzXTDP:localhost:8800", "!icheSPMgpemswIdQkw:localhost:8800"]}`[7I@anon-20191002_181700-59:localhost:8800a.made.up.filler.type{"id": "KH|M[LFJjtBREE{ONAQW"}  Og- u  4 @]3@anon-20191002_181700-613:localhost:8800m.ignored_user_list@]3@anon-20191002_181700-611:localhost:8800m.ignored_user_list @]3@anon-20191002_181700-608:localhost:8800m.ignored_user_list =]-@anon-20191002_181700-584:localhost:8800my.changing.type ?]1@anon-20191002_181700-584:localhost:8800my.unchanging.type 9]%@anon-20191002_181700-583:localhost:8800my.test.type 9]%@anon-20191002_181700-581:localhost:8800my.test.type9]%@anon-20191002_181700-580:localhost:8800my.test.type9]%@anon-20191002_181700-579:localhost:8800my.test.type9]%@anon-20191002_181700-578:localhost:8800my.test.type9]%@anon-20191002_181700-577:localhost:8800my.test.type9]%@anon-20191002_181700-575:localhost:8800my.test.type5]@anon-20191002_181700-302:localhost:8800m.direct@[7 @anon-20191002_181700-59:localhost:8800a.made.up.filler.type hd* , > P b hy ]Q-=@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.changing.type4{"cats_or_rats": "rats"}} ]Q1A@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.unchanging.type0{"cats_or_rats": "tigers"}u ]Q%=@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800my.test.type-{"cats_or_rats": "rats"}u ]Q%=@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800my.test.type*{"cats_or_rats": "rats"}u ]Q%=@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800my.test.type({"cats_or_rats": "rats"}u]Q%=@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800my.test.type${"cats_or_rats": "rats"}u]Q%=@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800my.test.type {"cats_or_rats": "rats"}u]Q%=@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800my.test.type{"cats_or_rats": "rats"}_]Q%@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800my.test.type{}]Q%@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800m.fully_read {"event_id": "$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs"}]Q%@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800m.fully_read{"event_id": "$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8"}]Q%@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800m.fully_read{"event_id": "$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw"}[Q%@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800m.fully_read{"event_id": "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"} ?H1 w  `  ? `]Q-@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.changing.type b]Q1@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.unchanging.type \]Q%@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800my.test.type \]Q%@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800my.test.type \]Q%@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800my.test.type \]Q%@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800my.test.type\]Q%@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800my.test.type\]Q%@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800my.test.type\]Q%@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800my.test.type\]Q%@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800m.fully_read\]Q%@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800m.fully_read\]Q%@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800m.fully_readZ[Q% @anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800m.fully_read  puF[,  p.]@anon-20191002_181700-613:localhost:88007.]@anon-20191002_181700-611:localhost:88006 .]@anon-20191002_181700-608:localhost:88005 .]@anon-20191002_181700-584:localhost:88003 .]@anon-20191002_181700-584:localhost:8800/ .]@anon-20191002_181700-583:localhost:8800. .]@anon-20191002_181700-581:localhost:8800).]@anon-20191002_181700-580:localhost:8800'.]@anon-20191002_181700-579:localhost:8800#.]@anon-20191002_181700-578:localhost:8800.]@anon-20191002_181700-577:localhost:8800.]@anon-20191002_181700-575:localhost:8800.]@anon-20191002_181700-302:localhost:8800,[ @anon-20191002_181700-59:localhost:8800 4%w L  4 T K oE711Ytableevent_push_actionsevent_push_actionsCREATE TABLE event_push_actions( room_id TEXT NOT NULL, event_id TEXT NOT NULL, user_id TEXT NOT NULL, profile_tag VARCHAR(32), actions TEXT NOT NULL, topological_ordering BIGINT, stream_ordering BIGINT, notif SMALLINT, highlight SMALLINT, unread SMALLINT, CONSTRAINT event_id_user_id_profile_tag_uniqueness UNIQUE (room_id, event_id, user_id, profile_tag) )8//tableex_outlier_streamex_outlier_streamCREATE TABLE ex_outlier_stream( event_stream_ordering BIGINT PRIMARY KEY NOT NULL, event_id TEXT NOT NULL, state_group BIGINT NOT NULL )M/9indexpush_rules_stream_user_stream_idpush_rules_streamCREATE INDEX push_rules_stream_user_stream_id on push_rules_stream(user_id, stream_id)E AAtableaccount_data_max_stream_idaccount_data_max_stream_idCREATE TABLE "account_data_max_stream_id"( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_id BIGINT NOT NULL, CHECK (Lock='X') )FY3indexsqlite_autoindex_room_tags_revisions_1room_tags_revisionst5/indexpush_rules_stream_idpush_rules_streamCREATE INDEX push_rules_stream_id ON push_rules_stream(stream_id)//etablepush_rules_streampush_rules_streamCREATE TABLE push_rules_stream( stream_id BIGINT NOT NULL, event_stream_ordering BIGINT NOT NULL, user_id TEXT NOT NULL, rule_id TEXT NOT NULL, op TEXT NOT NULL, priority_class SMALLINT, priority INTEGER, conditions TEXT, actions TEXT )t;+ indexpresence_stream_user_idpresence_streamCREATE INDEX presence_stream_user_id ON presence_stream(user_id)u1+indexpresence_stream_idpresence_streamCREATE INDEX presence_stream_id ON presence_stream(stream_id, user_id)t++tablepresence_streampresence_streamCREATE TABLE presence_stream( stream_id BIGINT, user_id TEXT, state TEXT, last_active_ts BIGINT, last_federation_update_ts BIGINT, last_user_sync_ts BIGINT, status_msg TEXT, currently_active BOOLEAN )6E1indexevent_push_actions_rm_tokensevent_push_actionsCREATE INDEX event_push_actions_rm_tokens on event_push_actions( user_id, room_id, topological_ordering, stream_ordering )=3indexreceipts_linearized_userreceipts_linearizedCREATE INDEX receipts_linearized_user ON receipts_linearized( user_id )U/qindexpublic_room_indexroomsCREATE INDEX public_room_index on rooms(is_public)i1indexevents_room_streameventsCREATE INDEX events_room_stream on events(room_id, stream_ordering)Q1;indexevent_push_actions_room_id_user_idevent_push_actionsCREATE INDEX event_push_actions_room_id_user_id on event_push_actions(room_id, user_id)DW1indexsqlite_autoindex_event_push_actions_1event_push_actions`indexevents_tseventsCREATE INDEX events_ts ON events(origin_server_ts, stream_ordering) C//indexroom_account_data_stream_idroom_account_dataCREATE INDEX room_account_data_stream_id on room_account_data(user_id, stream_id)w9%indexaccount_data_stream_idaccount_dataCREATE INDEX account_data_stream_id on account_data(user_id, stream_id)BU/indexsqlite_autoindex_room_account_data_1room_account_data' //{tableroom_account_dataroom_account_dataCREATE TABLE room_account_data( user_id TEXT NOT NULL, room_id TEXT NOT NULL, account_data_type TEXT NOT NULL, stream_id BIGINT NOT NULL, content TEXT NOT NULL, CONSTRAINT room_account_data_uniqueness UNIQUE (user_id, room_id, account_data_type) )8 K%indexsqlite_autoindex_account_data_1account_datas %%'tableaccount_dataaccount_dataCREATE TABLE account_data( user_id TEXT NOT NULL, account_data_type TEXT NOT NULL, stream_id BIGINT NOT NULL, content TEXT NOT NULL, CONSTRAINT account_data_uniqueness UNIQUE (user_id, account_data_type) )T gAindexsqlite_autoindex_account_data_max_stream_id_1account_data_max_stream_id uF[, .]@anon-20191002_181700-584:localhost:88004 .]@anon-20191002_181700-584:localhost:88000 .]@anon-20191002_181700-583:localhost:8800- .]@anon-20191002_181700-582:localhost:8800* .]@anon-20191002_181700-580:localhost:8800( .]@anon-20191002_181700-579:localhost:8800$.]@anon-20191002_181700-578:localhost:8800 .]@anon-20191002_181700-577:localhost:8800.]@anon-20191002_181700-576:localhost:8800.]@anon-20191002_181700-395:localhost:8800 .]@anon-20191002_181700-394:localhost:8800.]@anon-20191002_181700-393:localhost:8800,[ @anon-20191002_181700-39:localhost:8800+{hUB/ :m[^^Rm^. u uXm m݂$ mX m!U mG + + m)jXX 7mKI[mˁtmȍmŘ5m//mK2\\m"m*:mc   . ? % n ~  O  i : Y*s  yJ T d 5D  *Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800QQ*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!pduebXnTyxQWVxEICp:localhost:8800 , ,X*Q!nxLxsxzliamzflrEBs:localhost:8800&&*Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!eWRdwtyqHvuxZFvhNS:localhost:8800   *Q!yLccBXjjEasExpsXlt:localhost:8800 Q*Q!vyCFfUTJKYJSDadFhT:localhost:8800``*Q!uGpSboYkgxVNOqNeUG:localhost:8800 o*Q!WpThtNEVhrUbUdCdMJ:localhost:8800   *Q!SrwdtDytJDUBVZOueF:localhost:8800 "(Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e eO*Q!DnUHoxreGexNmjSVpq:localhost:8800WW*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 b*Q!kwXxkGQFkaeenFTQJr:localhost:8800 f*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800}}*Q!aZwMKYDXJRlSKjQNWM:localhost:8800//O*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 h h*Q!NajQnqYmGyTjxhFYar:localhost:8829 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 E*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 J*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800 *Q!drnXStKXkNQkouqUAg:localhost:8800 E E*Q!VUibrTIkcRbfrogbQV:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 3*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800 *Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW0*Q!ZOwibbprUCQrSJQCrx:localhost:8800 *Q!QyLUggxrTnULUAOseq:localhost:8800 a*Q!wnriPzXkIMmdTNoJKU:localhost:8800 @*Q!itKDOCtoMkFUETDtle:localhost:8800 *Q!hgjYwwwjWJNgwrzOto:localhost:8800ZZf*Q!SUDzkfFBgpuCANOxRS:localhost:8800 zupkfa\WRMHC>94/*%  {vqlgb]XS50+&!  z t n h b \ V P J D > 8 2 , &      x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     |vpjd^XRLF@:4.(" ztnhb\VPD>82,& ~xrlf`ZTNHB<60*$ NID?: ~ J ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!           ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\ [ Z Y X WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!         {N! E@__ANON__-38:localhost:42455,]@anon-20191002_181700-665:localhost:8800,]@anon-20191002_181700-390:localhost:8800,]@anon-20191002_181700-389:localhost:8800,]@anon-20191002_181700-195:localhost:8800,]@anon-20191002_181700-182:localhost:8800,]@anon-20191002_181700-181:localhost:8800*[ @anon-20191002_181700-38:localhost:8800 _ Յ - 2`u{^>]U,da, D0]@anon-20191002_181700-553:localhost:8829 00]@anon-20191002_181700-452:localhost:880080]I@anon-20191002_181700-318:localhost:8800H70]@anon-20191002_181700-206:localhost:88008Oj8 -]@anon-20191002_181700-581:localhost:8800 -]@anon-20191002_181700-479:localhost:88009Y-]@anon-20191002_181700-357:localhost:8800X-]@anon-20191002_181700-236:localhost:8800  /^ i ]i@anon-20191002_181700-300:localhost:8800global/room/!CNFopUEQTFbzjmLvii:localhost:8800DELETEN ]i E!@anon-20191002_181700-300:localhost:8800global/room/!NrxQuziwSWzsHuXIlG:localhost:8800ADD[{"kind": "event_match", "key": "room_id", "pattern": "!NrxQuziwSWzsHuXIlG:localhost:8800"}]["notify"]N ]iE!@anon-20191002_181700-300:localhost:8800global/room/!CNFopUEQTFbzjmLvii:localhost:8800ADD[{"kind": "event_match", "key": "room_id", "pattern": "!CNFopUEQTFbzjmLvii:localhost:8800"}]["notify"]   tt.]@anon-20191002_181700-300:localhost:8800.]@anon-20191002_181700-300:localhost:8800-] @anon-20191002_181700-300:localhost:8800 3$18:localhost:42455 3$17:localhost:42455 3$16:localhost:42455    >`(_ E ~wpib[TMF?81*#{tmf_XQJC<5.' EDCB~Ab@F? > = < ; : Y9 P8 f7 P6 H5 4 f3 2 1 p0"/.-,+q*f)V(>'$&%k$5#7"6!- MC8-"uj`zqo \ R L K BldR5'X ~ L~ K}]eQ@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829& 5g& {C= E 5( |ggg 507;;utabledevice_federation_inboxdevice_federation_inboxCREATE TABLE device_federation_inbox ( origin TEXT NOT NULL, message_id TEXT NOT NULL, received_ts BIGINT NOT NULL )?0AAtableappservice_stream_positionappservice_stream_positionCREATE TABLE appservice_stream_position( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_ordering BIGINT, CHECK (Lock='X') )T1gAindexsqlite_autoindex_appservice_stream_position_1appservice_stream_positionb,''tableevent_reportsevent_reportsCREATE TABLE event_reports( id BIGINT NOT NULL PRIMARY KEY, received_ts BIGINT NOT NULL, room_id TEXT NOT NULL, event_id TEXT NOT NULL, user_id TEXT NOT NULL, reason TEXT, content TEXT ):-M'indexsqlite_autoindex_event_reports_1event_reportsA*++7tablepusher_throttlepusher_throttleCREATE TABLE pusher_throttle( pusher BIGINT NOT NULL, room_id TEXT NOT NULL, last_sent_ts BIGINT, throttle_ms BIGINT, PRIMARY KEY (pusher, room_id) )>+Q+indexsqlite_autoindex_pusher_throttle_1pusher_throttle)M)1indexopen_id_tokens_ts_valid_until_msopen_id_tokensCREATE INDEX open_id_tokens_ts_valid_until_ms ON open_id_tokens(ts_valid_until_ms)3'))tableopen_id_tokensopen_id_tokensCREATE TABLE open_id_tokens ( token TEXT NOT NULL PRIMARY KEY, ts_valid_until_ms bigint NOT NULL, user_id TEXT NOT NULL, UNIQUE (token) )<(O)indexsqlite_autoindex_open_id_tokens_1open_id_tokens l #&Q1Oindexevent_push_actions_stream_orderingevent_push_actionsCREATE INDEX event_push_actions_stream_ordering on event_push_actions( stream_ordering, user_id )%A'_indexlocal_invites_for_user_idxlocal_invitesCREATE INDEX local_invites_for_user_idx ON local_invites(invitee, locally_rejected, replaced_by, room_id)c$-'indexlocal_invites_idlocal_invitesCREATE INDEX local_invites_id ON local_invites(stream_id)e#''tablelocal_inviteslocal_invitesCREATE TABLE local_invites( stream_id BIGINT NOT NULL, inviter TEXT NOT NULL, invitee TEXT NOT NULL, event_id TEXT NOT NULL, room_id TEXT NOT NULL, locally_rejected TEXT, replaced_by TEXT ) 56[=]indexdevice_federation_outbox_destination_iddevice_federation_outboxCREATE INDEX device_federation_outbox_destination_id ON device_federation_outbox(destination, stream_id)}4=7indexreceived_transactions_tsreceived_transactionsCREATE INDEX received_transactions_ts ON received_transactions(ts) 3C%;indexdevice_inbox_user_stream_iddevice_inboxCREATE INDEX device_inbox_user_stream_id ON device_inbox(user_id, device_id, stream_id))2%%tabledevice_inboxdevice_inboxCREATE TABLE device_inbox ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, stream_id BIGINT NOT NULL, message_json TEXT NOT NULL )3"QE[indexthreepid_guest_access_tokens_indexthreepid_guest_access_tokensCREATE UNIQUE INDEX threepid_guest_access_tokens_index ON threepid_guest_access_tokens(medium, address)}9!EEstablethreepid_guest_access_tokensthreepid_guest_access_tokensCREATE TABLE threepid_guest_access_tokens( medium TEXT, address TEXT, guest_access_token TEXT, first_inviter TEXT )B U/indexsqlite_autoindex_ex_outlier_stream_1ex_outlier_streamT5==9tabledevice_federation_outboxdevice_federation_outboxCREATE TABLE device_federation_outbox ( destination TEXT NOT NULL, stream_id BIGINT NOT NULL, queued_ts BIGINT NOT NULL, messages_json TEXT NOT NULL )  J=]lvsNRWfomUwYcbAznkuOytmqmT@anon-20191002_181700-585:localhost:8800 = lvsNRWfomUwYcbAznkuOytmq   mT       X%  X @S O I F@*]!o@anon-20191002_181700-598:localhost:8800TGNIJBJLOR{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-599:localhost:8829"}*]!o@anon-20191002_181700-597:localhost:8800TEPJNKLEKS{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-597:localhost:8800"})]!m@anon-20191002_181700-596:localhost:8800XLWTYGZVSG{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-596:localhost:8800"}) ]!m@anon-20191002_181700-596:localhost:8800WNSHUZKVHW{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-596:localhost:8800"} ) ]!m@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ {"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-595:localhost:8800"}*]!o@anon-20191002_181700-593:localhost:8800MHLBNUKOHT {"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-594:localhost:8829"}*]!o@anon-20191002_181700-590:localhost:8800WKVIGIMVPR{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-590:localhost:8800"})]!m@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-589:localhost:8800"})]!m@anon-20191002_181700-588:localhost:8800CHJPRGUPAU{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-588:localhost:8800"}*]!o@anon-20191002_181700-587:localhost:8800VGJOOHQHVE{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-587:localhost:8800"}*]!o@anon-20191002_181700-586:localhost:8800DOTBNZJMYC{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-586:localhost:8800"} S1 k9]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSG9]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHW 9]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS9]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ 9]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR9]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHT 9]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ9]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAU9]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPR9]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVE8]! @anon-20191002_181700-586:localhost:8800DOTBNZJMYC x }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    mH2x mCrw mvv mtKu mqt mnDs mOr mM:q mIp m,xo m*n m&m ml mk mj mi mh mqg m#f m e m d mc mb mXa mN` mv_ m ^ m䋘] m䅂\ m[ meZ mc]Y mGX muW mV mnU mfET mE S m`R m0Q m'P mO mgSN mM mʜL mTK mSJ m%I mbH mG mXF mQNE m%D m$C m#zB m!0A m@ m? m> m= ma< m`\; mF: m;9 m58 m27 mѕ6 m5 mٰ4 m٭ 3 mٗs2 mo1 m,0 m&v/ mؿ:. mؼS- m؛, mؘ4+ mJf* m#) mK( m' mׯ5& m׫% m׍2$ m׈# m#" m ! m m֨ m֥ mֆ4 mփ mO< m( m  m mդ/ mա mՃ mՁC m m7f m m ms m mX m m m W m Q m m mš m m[ m m  mE   ()-localhost:8829hNbIASrtTNVLfXIYm׮()-localhost:8829FNXeqVIqGFBRXVKTmN #)-localhost:8829hNbIASrtTNVLfXIY")- localhost:8829FNXeqVIqGFBRXVKT   T)|P$ t H *Q!QyLUggxrTnULUAOseq:localhost:8800*Q !KcXNWNfbLcYsBKZHIp:localhost:8800*Q !SfYtaUhCFosNfHfUVm:localhost:8800*Q !NPdjmIfsBVIIkvWBzD:localhost:8800* Q !vyCFfUTJKYJSDadFhT:localhost:8800* Q !beBXQofoOfxNBtzsut:localhost:8800* Q!KmuRTfGFgJdgIDAgIW:localhost:8800* Q !mOrKBPhetifKHDmElM:localhost:8800* Q !QyLUggxrTnULUAOseq:localhost:8800)Q \!zFdNewlKnUiMBxnYrN:localhost:8800)Q [!KeBlWUQiLYUoILKkTB:localhost:8800)Q Z!WVzjUePHrzCjfyTbmK:localhost:8800)Q Y!lAGTcYIuMBXsVRGCOe:localhost:8800)Q X!UyLoIXmzVFwycmBUeh:localhost:8800)Q !kkgEEVUJynguTqAoWD:localhost:8800)Q !sPWVGnipjiiWQpywNO:localhost:8800)Q !zNCItZNbpkZKuufRhC:localhost:8800      \[ZYX    ? i;  ? ] 4e )Q!QyLUggxrTnULUAOseq:localhost:8800)Q!KcXNWNfbLcYsBKZHIp:localhost:8800)Q!SfYtaUhCFosNfHfUVm:localhost:8800)Q!NPdjmIfsBVIIkvWBzD:localhost:8800)Q!vyCFfUTJKYJSDadFhT:localhost:8800 )Q!beBXQofoOfxNBtzsut:localhost:8800 )Q!KmuRTfGFgJdgIDAgIW:localhost:8800 )Q!mOrKBPhetifKHDmElM:localhost:8800 )Q!QyLUggxrTnULUAOseq:localhost:8800 (Q!zFdNewlKnUiMBxnYrN:localhost:8800\(Q!KeBlWUQiLYUoILKkTB:localhost:8800[(Q!WVzjUePHrzCjfyTbmK:localhost:8800Z(Q!lAGTcYIuMBXsVRGCOe:localhost:8800Y(Q!UyLoIXmzVFwycmBUeh:localhost:8800X(Q!kkgEEVUJynguTqAoWD:localhost:8800(Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q !zNCItZNbpkZKuufRhC:localhost:8800h= i A7/indexstate_group_edges_idxstate_group_edgesCREATE INDEX state_group_edges_idx ON state_group_edges(state_group)=//Ktablestate_group_edgesstate_group_edgesCREATE TABLE state_group_edges( state_group BIGINT NOT NULL, prev_state_group BIGINT NOT NULL )<I;Eindexpublic_room_list_stream_rm_idxpublic_room_list_streamCREATE INDEX public_room_list_stream_rm_idx on public_room_list_stream( room_id, stream_id );C;-indexpublic_room_list_stream_idxpublic_room_list_streamCREATE INDEX public_room_list_stream_idx on public_room_list_stream( stream_id )W:;;Ctablepublic_room_list_streampublic_room_list_streamCREATE TABLE public_room_list_stream ( stream_id BIGINT NOT NULL, room_id TEXT NOT NULL, visibility BOOLEAN NOT NULL , appservice_id TEXT, network_id TEXT) & B  | 13JM~ % A  | 02JL~T ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  P`3ݝYr,9~L~k?6ΙU$eu3H  m ? } ;e 8 Q ^ p1 L W ( u B U )b 5 ’ [ s. E T ' ȏz M } ^s =F l?^e 7ËV&hw2JщpCj3i<ۈbp5O[.uT@'z؄M }sFFڂl?mJe8ځ ]/ J  l J  Q~v3GL^]~ 1 a  % n *  " < T2 i ? Y f L    7s { D S *Q!rWGwSSefrZzQYCYFHs:localhost:8800 .U*Q!qSUSLLWjDxcGibUZdT:localhost:8800~ c*Q!TWETXUgfFZafDdbqLS:localhost:880000N*Q!DnUHoxreGexNmjSVpq:localhost:8800\ \*Q!mTlCLZQCmfDuQsJxxp:localhost:8800/l*Q!FAYqpziHeVZugCGaij:localhost:8800 *Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!LvARVIpJZeRQxbKefX:localhost:8800qwo*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!PCgUmZOwWmtDsuFqXg:localhost:8800,2 q*Q!UTAORDrNxIbSlGByAp:localhost:8800 = n*Q!fJXiUpbbOlLbHWmPgs:localhost:8800W*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 C *Q!bkwyieHZwSMJfuSKvV:localhost:8800 D*Q!vOfeZvbtpuHfoqShFl:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!BKZJsoFNhiLTDYNclB:localhost:8800gY*Q!NQgavrmiCPUVaVjssy:localhost:8800jn < 5(Q!zhCsYcaweVFJLLNwBz:localhost:8800,+(*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800.*Q!RmdhCjvouVLmyIHjaM:localhost:8800BB(Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800  h*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!csWEXfVEVxdviNvgAd:localhost:8800*T*Q!kjueCKHmYaYefEEpQY:localhost:8800!*Q!FklhVuCInffbDxunWv:localhost:880049*Q!SrMQpDMFREKRMELwbL:localhost:8800-*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800s*Q!raCWVWQGnXbmkexpCN:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800  q*Q!aLxrqpqLkbzyIxGgpk:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 "*Q!aZwMKYDXJRlSKjQNWM:localhost:88006X*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  V *Q!OJilSqnQvLgoXSqRaW:localhost:8800 p*Q!wAyboOFgsOPwkmgMAI:localhost:8800<@.*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 (Q!jYzridjeihmwPBuwLb:localhost:8800UT ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$  | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $    fGq(a TjCK-, nO0Ѳ±rS4~v_WK28oF߯ˮ`;rn]I:'|]=ի|X5thUE66'x Y 8 ߩ Ѩy Z ;  } ^ n? _ > $b C $  ٥f ƥG ( j jK U, G :n !O . ޢf ̢B  z V x3 d Hu 6V !7  y ҟZ ;  } p^ Y? H 8 *b C ڝ$ ͝ f G y( j Sj ;K !,  nOΚ0rS~4lXvGU53pP. ޖkʖK* hI|*d ZlFM1.  pQ2ӓtU6rxdYJ:9*|] >ߐяaÏB#exFf'DEi J+ mN/ŌqR3oudVX7L3yZ;}^?Ȉ bC$iZfPGE(- jK, nԄO0rS4Z?v5W'8z[Á<~_>lk1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw      events%!federation  @? { @<E+%@__ANON__-48:localhost:42455CURIOSITY_ROVER{"device_display_name": "Curiosity Rover", "device_id": "CURIOSITY_ROVER", "keys": {"keys": {"b": "flat", "c": "sharp"}, "device_id": "CURIOSITY_ROVER", "signatures": {"@__ANON__-48:localhost:42455": {"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"}}, "algorithms": ["fast", "and broken"], "user_id": "@__ANON__-48:localhost:42455"}}zE-@__ANON__-46:localhost:42455random_device_id{"device_display_name": "test display name", "keys": {"device_keys": {}}}A]!!@anon-20191002_181700-559:localhost:8829ESMCXDKMPQ{"device_id": "ESMCXDKMPQ", "keys": {"device_id": "ESMCXDKMPQ", "device_keys": {}, "user_id": "@anon-20191002_181700-559:localhost:8829"}}A]!!@anon-20191002_181700-553:localhost:8829UQYOPZHDDU{"device_id": "UQYOPZHDDU", "keys": {"device_id": "UQYOPZHDDU", "device_keys": {}, "user_id": "@anon-20191002_181700-553:localhost:8829"}}z]!@anon-20191002_181700-540:localhost:8829DTIXBTNGTL{"device_display_name": "test display name", "keys": {"device_id": "DTIXBTNGTL", "device_keys": {}, "user_id": "@anon-20191002_181700-540:localhost:8829"}, "org.matrix.opentracing_context": "{}"} sD" E@__ANON__-48:localhost:424553 E@__ANON__-46:localhost:424552-]@anon-20191002_181700-559:localhost:882966-]@anon-20191002_181700-553:localhost:882963-]@anon-20191002_181700-542:localhost:882958-]@anon-20191002_181700-540:localhost:882954 ='%t? y |:  &CP Hx5 r * d/[& B0]I@anon-20191002_181700-793:localhost:8800,=0] @anon-20191002_181700-725:localhost:88000]@anon-20191002_181700-654:localhost:8800 E0]w@anon-20191002_181700-579:localhost:8800^ i0] @anon-20191002_181700-492:localhost:8800 0]@anon-20191002_181700-406:localhost:88000]@anon-20191002_181700-333:localhost:880060]J@anon-20191002_181700-261:localhost:8800=V0]@anon-20191002_181700-196:localhost:88000]@anon-20191002_181700-130:localhost:8800-[Y@anon-20191002_181700-49:localhost:8800S U  <   X  X U# J B ]* y K UUUd A  cII9tableuser_directory_search_segmentsuser_directory_search_segmentsCREATE TABLE 'user_directory_search_segments'(blockid INTEGER PRIMARY KEY, block BLOB)'bGGKtableuser_directory_search_contentuser_directory_search_contentCREATE TABLE 'user_directory_search_content'(docid INTEGER PRIMARY KEY, 'c0user_id', 'c1value') \IA5indexcurrent_state_delta_stream_idxcurrent_state_delta_streamCREATE INDEX current_state_delta_stream_idx ON current_state_delta_stream(stream_id)n[AAetablecurrent_state_delta_streamcurrent_state_delta_streamCREATE TABLE current_state_delta_stream ( stream_id BIGINT NOT NULL, room_id TEXT NOT NULL, type TEXT NOT NULL, state_key TEXT NOT NULL, event_id TEXT, prev_event_id TEXT )Z91indexratelimit_override_idxratelimit_overrideCREATE UNIQUE INDEX ratelimit_override_idx ON ratelimit_override(user_id)Y11_tableratelimit_overrideratelimit_overrideCREATE TABLE ratelimit_override ( user_id TEXT NOT NULL, messages_per_second BIGINT, burst_count BIGINT )$XQC?indexdevice_lists_outbound_pokes_streamdevice_lists_outbound_pokesCREATE INDEX device_lists_outbound_pokes_stream ON device_lists_outbound_pokes(stream_id)>UQtablepusherspushersCREATE TABLE "pushers" ( id BIGINT PRIMARY KEY, user_name TEXT NOT NULL, access_token BIGINT DEFAULT NULL, profile_tag TEXT NOT NULL, kind TEXT NOT NULL, app_id TEXT NOT NULL, app_display_name TEXT NOT NULL, device_display_name TEXT NOT NULL, pushkey TEXT NOT NULL, ts BIGINT NOT NULL, lang TEXT, data TEXT, last_stream_ordering INTEGER, last_success BIGINT, failing_since BIGINT, UNIQUE (app_id, pushkey, user_name) ).WAindexsqlite_autoindex_pushers_2pushers.VAindexsqlite_autoindex_pushers_1pushersdTwQindexsqlite_autoindex_event_push_summary_stream_ordering_1event_push_summary_stream_ordering܁aSQQ+tableevent_push_summary_stream_orderingevent_push_summary_stream_orderingCREATE TABLE event_push_summary_stream_ordering ( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_ordering BIGINT NOT NULL, CHECK (Lock='X') ) RA1+indexevent_push_summary_user_rmevent_push_summaryCREATE INDEX event_push_summary_user_rm ON event_push_summary(user_id, room_id) 'R`e?indexsqlite_autoindex_user_directory_stream_pos_1user_directory_stream_pos7_??{tableuser_directory_stream_posuser_directory_stream_posCREATE TABLE user_directory_stream_pos ( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_id BIGINT, CHECK (Lock='X') )DUQ11Stableevent_push_summaryevent_push_summaryCREATE TABLE event_push_summary ( user_id TEXT NOT NULL, room_id TEXT NOT NULL, notif_count BIGINT NOT NULL, stream_ordering BIGINT NOT NULL , unread_count BIGINT)+PMCQindexdevice_lists_outbound_pokes_userdevice_lists_outbound_pokesCREATE INDEX device_lists_outbound_pokes_user ON device_lists_outbound_pokes(destination, user_id))OICQindexdevice_lists_outbound_pokes_iddevice_lists_outbound_pokesCREATE INDEX device_lists_outbound_pokes_id ON device_lists_outbound_pokes(destination, stream_id)~a77tableuser_directory_searchuser_directory_searchCREATE VIRTUAL TABLE user_directory_search USING fts4 ( user_id, value ) [  =   ` ysmga[UOIC=71+% }wqke_YSMGA;5/)#  Tb28pP0moQM -ؕdF" ~!Y7ܔv~PA/" j ɒG % ~ Sh I ) ő j \J 8*  ӏh E u# B a Ύ@  j} ?] (< ٍ kd 3F '،c{AS$}[8qtON/)qЈR2Pp'O1ԇoNU-! m݅L* ch>G* ƃkIj(JiJۂ) lHM), hG#&   r  } o[K4   X%  X`E&^c E U)  s nX <  @i6N2vW9   K  ||~               c B!  ]  - MQ]!zqQJfFCRlSEDPKlQPy:localhost:8800@anon-20191002_181700-604:localhost:8800 %Q !zqQJfFCRlSEDPKlQPy:localhost:8800 w OTChttps://localhost:43723/test.htmlmq{"og:title": "The Rock", "og:type": "video.movie", "og:url": "http://www.imdb.com/title/tt0117500/", "og:image": "mxc://localhost:8800/2019-10-02_BRGgNtEwftdNPMfv", "og:description": null, "og:image:width": 279, "og:image:height": 129, "og:image:type": "image/png", "matrix:image:size": 2239}2019-10-02_aqhaEGPqafvXwwngm sbY 6 [ zyq=ddXekEindexsqlite_autoindex_user_directory_search_segdir_1user_directory_search_segdirmdEE[tableuser_directory_search_segdiruser_directory_search_segdirCREATE TABLE 'user_directory_search_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx))Ux33Otablegroup_summary_usersgroup_summary_usersCREATE TABLE group_summary_users ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, role_id TEXT NOT NULL, user_order BIGINT NOT NULL, is_public BOOLEAN NOT NULL )Jw]7indexsqlite_autoindex_group_room_categories_1group_room_categoriescv77ctablegroup_room_categoriesgroup_room_categoriesCREATE TABLE group_room_categories ( group_id TEXT NOT NULL, category_id TEXT NOT NULL, profile TEXT NOT NULL, is_public BOOLEAN NOT NULL, UNIQUE (group_id, category_id) )ZumGindexsqlite_autoindex_group_summary_room_categories_1group_summary_room_categoriestGGtablegroup_summary_room_categoriesgroup_summary_room_categoriesCREATE TABLE group_summary_room_categories ( group_id TEXT NOT NULL, category_id TEXT NOT NULL, cat_order BIGINT NOT NULL, UNIQUE (group_id, category_id, cat_order), CHECK (cat_order > 0) )s?3Uindexgroup_summary_rooms_g_idxgroup_summary_roomsCREATE UNIQUE INDEX group_summary_rooms_g_idx ON group_summary_rooms(group_id, room_id, category_id)FrY3indexsqlite_autoindex_group_summary_rooms_1group_summary_rooms&q33qtablegroup_summary_roomsgroup_summary_roomsCREATE TABLE group_summary_rooms ( group_id TEXT NOT NULL, room_id TEXT NOT NULL, category_id TEXT NOT NULL, room_order BIGINT NOT NULL, is_public BOOLEAN NOT NULL, UNIQUE (group_id, category_id, room_id, room_order), CHECK (room_order > 0) ) p##Ytablegroup_roomsgroup_roomsCREATE TABLE group_rooms ( group_id TEXT NOT NULL, room_id TEXT NOT NULL, is_public BOOLEAN NOT NULL )to''%tablegroup_invitesgroup_invitesCREATE TABLE group_invites ( group_id TEXT NOT NULL, user_id TEXT NOT NULL )%n##tablegroup_usersgroup_usersCREATE TABLE group_users ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, is_admin BOOLEAN NOT NULL, is_public BOOLEAN NOT NULL )=maMWindexlocal_media_repository_url_cache_media_idxlocal_media_repository_url_cacheCREATE INDEX local_media_repository_url_cache_media_idx ON local_media_repository_url_cache(media_id)WlsMyindexlocal_media_repository_url_cache_by_url_download_tslocal_media_repository_url_cacheCREATE INDEX local_media_repository_url_cache_by_url_download_ts ON local_media_repository_url_cache(url, download_ts)CkeM_indexlocal_media_repository_url_cache_expires_idxlocal_media_repository_url_cacheCREATE INDEX local_media_repository_url_cache_expires_idx ON local_media_repository_url_cache(expires_ts)jjMMEtablelocal_media_repository_url_cachelocal_media_repository_url_cacheCREATE TABLE "local_media_repository_url_cache"( url TEXT, response_code INTEGER, etag TEXT, expires_ts BIGINT, og TEXT, media_id TEXT, download_ts BIGINT )ki/' indexblocked_rooms_idxblocked_roomsCREATE UNIQUE INDEX blocked_rooms_idx ON blocked_rooms(room_id)sh''#tableblocked_roomsblocked_roomsCREATE TABLE blocked_rooms ( room_id TEXT NOT NULL, user_id TEXT NOT NULL )gAA'tableuser_directory_search_statuser_directory_search_statCREATE TABLE 'user_directory_search_stat'(id INTEGER PRIMARY KEY, value BLOB)fGG1tableuser_directory_search_docsizeuser_directory_search_docsizeCREATE TABLE 'user_directory_search_docsize'(docid INTEGER PRIMARY KEY, size BLOB)   mq +O https://localhost:43723/test.htmlm C 2019-10-02_aqhaEGPqafvXwwng, PXVc]+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800 \ c j  Q cQ +__anon__-20191002_181700-28:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800Q cQ +__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800QcQ +__anon__-20191002_181700-26:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800QcQ +__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800QcQ +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800QcQ +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800QcQ +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800QcQ +__anon__-20191002_181700-10:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800PaQ +__anon__-20191002_181700-6:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800PaQ +__anon__-20191002_181700-1:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800 NVN ][cQ +__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800some_catTcQ  +__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800ScQ +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800ScQ +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800ScQ +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800 OWO ]\cQ +__anon__-20191002_181700-27:localhost:8800some_cat!CKNftKKCaOCVUyYWNY:localhost:8800Uc Q+__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800Tc Q +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800Tc Q +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800Sc Q +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800 UYU \[cQ+__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800some_catScQ +__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800ScQ +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800ScQ +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800RcQ +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800 7c +__anon__-20191002_181700-28:localhost:8800some_cat7c +__anon__-20191002_181700-27:localhost:8800some_cat 9c +__anon__-20191002_181700-28:localhost:8800some_cat8c +__anon__-20191002_181700-27:localhost:8800some_cat [W[Qc? +__anon__-20191002_181700-28:localhost:8800some_cat{"name": "Category Name"}Qc? +__anon__-20191002_181700-27:localhost:8800some_cat{"name": "Category Name"}TcC +__anon__-20191002_181700-19:localhost:8800some_cat2{"name": "Category Name 2"}TcC +__anon__-20191002_181700-19:localhost:8800some_cat1{"name": "Category Name 1"}Qc? +__anon__-20191002_181700-17:localhost:8800some_cat{"name": "Category Name"} T8c+__anon__-20191002_181700-28:localhost:8800some_cat8c+__anon__-20191002_181700-27:localhost:8800some_cat9c+__anon__-20191002_181700-19:localhost:8800some_cat29c+__anon__-20191002_181700-19:localhost:8800some_cat17c +__anon__-20191002_181700-17:localhost:8800some_cat J&dbc] +__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800some_roleZc]  +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800Yc] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800Yc] +__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800 AqA0/c+__anon__-20191002_181700-32:localhost:8800/c+__anon__-20191002_181700-30:localhost:8800/c+__anon__-20191002_181700-30:localhost:8800.c +__anon__-20191002_181700-29:localhost:8800 8c +__anon__-20191002_181700-33:localhost:8800some_role8c +__anon__-20191002_181700-32:localhost:8800some_role :c +__anon__-20191002_181700-33:localhost:8800some_role9c +__anon__-20191002_181700-32:localhost:8800some_role b] bRc? +__anon__-20191002_181700-33:localhost:8800some_role{"name": "Category Name"}Rc? +__anon__-20191002_181700-32:localhost:8800some_role{"name": "Category Name"}Qc!; +__anon__-20191002_181700-22:localhost:8800some_role2{"name": "Role Name 2"}Qc!; +__anon__-20191002_181700-22:localhost:8800some_role1{"name": "Role Name 1"}Nc7 +__anon__-20191002_181700-20:localhost:8800some_role{"name": "Role Name"} Q9c+__anon__-20191002_181700-33:localhost:8800some_role9c+__anon__-20191002_181700-32:localhost:8800some_role:c!+__anon__-20191002_181700-22:localhost:8800some_role2:c!+__anon__-20191002_181700-22:localhost:8800some_role18c +__anon__-20191002_181700-20:localhost:8800some_role B]c]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829mP]c]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829mX]c]+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829m[ OXc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829Wc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829 zz,]@anon-20191002_181700-824:localhost:8829,]@anon-20191002_181700-817:localhost:8829+] @anon-20191002_181700-776:localhost:8829  mP mX  m[ 4> A e # V?O@ =60{?+indexdeleted_pushers_stream_iddeleted_pushersCREATE INDEX deleted_pushers_stream_id ON deleted_pushers (stream_id)bz33itablegroup_summary_rolesgroup_summary_rolesCREATE TABLE group_summary_roles ( group_id TEXT NOT NULL, role_id TEXT NOT NULL, role_order BIGINT NOT NULL, UNIQUE (group_id, role_id, role_order), CHECK (role_order > 0) )y?3indexgroup_summary_users_g_idxgroup_summary_usersCREATE INDEX group_summary_users_g_idx ON group_summary_users(group_id), ++ tabledeleted_pushersdeleted_pushersCREATE TABLE "deleted_pushers" ( stream_id BIGINT NOT NULL, app_id TEXT NOT NULL, pushkey TEXT NOT NULL, user_id TEXT NOT NULL ) ?5!indexremote_profile_cache_timeremote_profile_cacheCREATE INDEX remote_profile_cache_time ON remote_profile_cache(last_check)6}I#indexsqlite_autoindex_group_roles_1group_roles=|##?tablegroup_rolesgroup_rolesCREATE TABLE group_roles ( group_id TEXT NOT NULL, role_id TEXT NOT NULL, profile TEXT NOT NULL, is_public BOOLEAN NOT NULL, UNIQUE (group_id, role_id) )$F{Y3indexsqlite_autoindex_group_summary_roles_1group_summary_roles E5/indexremote_profile_cache_user_idremote_profile_cacheCREATE UNIQUE INDEX remote_profile_cache_user_id ON remote_profile_cache(user_id)0 55tableremote_profile_cacheremote_profile_cacheCREATE TABLE remote_profile_cache ( user_id TEXT NOT NULL, displayname TEXT, avatar_url TEXT, last_check BIGINT NOT NULL )L 33=tablelocal_group_updateslocal_group_updatesCREATE TABLE local_group_updates ( stream_id BIGINT NOT NULL, group_id TEXT NOT NULL, user_id TEXT NOT NULL, type TEXT NOT NULL, content TEXT NOT NULL ) E9'indexlocal_group_membership_g_idxlocal_group_membershipCREATE INDEX local_group_membership_g_idx ON local_group_membership(group_id)E99indexlocal_group_membership_u_idxlocal_group_membershipCREATE INDEX local_group_membership_u_idx ON local_group_membership(user_id, group_id){99tablelocal_group_membershiplocal_group_membershipCREATE TABLE local_group_membership ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, is_admin BOOLEAN NOT NULL, membership TEXT NOT NULL, is_publicised BOOLEAN NOT NULL, content TEXT NOT NULL )K??indexgroup_attestations_remote_v_idxgroup_attestations_remoteCREATE INDEX group_attestations_remote_v_idx ON group_attestations_remote(valid_until_ms)K?1indexgroup_attestations_remote_u_idxgroup_attestations_remoteCREATE INDEX group_attestations_remote_u_idx ON group_attestations_remote(user_id)"K?Eindexgroup_attestations_remote_g_idxgroup_attestations_remote CREATE INDEX group_attestations_remote_g_idx ON group_attestations_remote(group_id, user_id)X??=tablegroup_attestations_remotegroup_attestations_remote CREATE TABLE group_attestations_remote ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, valid_until_ms BIGINT NOT NULL, attestation_json TEXT NOT NULL )'OCGindexgroup_attestations_renewals_v_idxgroup_attestations_renewals CREATE INDEX group_attestations_renewals_v_idx ON group_attestations_renewals(valid_until_ms) OC9indexgroup_attestations_renewals_u_idxgroup_attestations_renewals CREATE INDEX group_attestations_renewals_u_idx ON group_attestations_renewals(user_id)*OCMindexgroup_attestations_renewals_g_idxgroup_attestations_renewalsCREATE INDEX group_attestations_renewals_g_idx ON group_attestations_renewals(group_id, user_id)>~CCtablegroup_attestations_renewalsgroup_attestations_renewalsCREATE TABLE group_attestations_renewals ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, valid_until_ms BIGINT NOT NULL )  q{ qc]S+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829mr_{"group_id": "+__anon__-20191002_181700-42:localhost:8800", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "DmgTHKNuFoaBMfyCRpyEc1YIV3gGvBq056hPhKLHE8wbcXLhyPHlRXtkyDSlLncsJ7y4oPdmLF9I41lApmW2Aw"}}, "user_id": "@anon-20191002_181700-824:localhost:8829", "valid_until_ms": 1570321385567}c]S+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829ml{"group_id": "+__anon__-20191002_181700-38:localhost:8800", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "BznUesu9TQqFBll5aNtTG/dG1pIyfyF95QlzvF9cTpwEVq74sm4XiirItEh3eL2C/SyJiH++ynXHz1UyiZKWAQ"}}, "user_id": "@anon-20191002_181700-817:localhost:8829", "valid_until_ms": 1570366057499}c]S+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829mb_|{"group_id": "+__anon__-20191002_181700-14:localhost:8800", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "tkC8miM1JEBlqGJFgYGRa26NS0buuh1lVgEbvG/iKJU1eiB+rkMcLt7q4JiP9Fy8EA0Uu26RMhOVsx4BQuWOAg"}}, "user_id": "@anon-20191002_181700-776:localhost:8829", "valid_until_ms": 1570353864572} OXc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829Wc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829 zz,]@anon-20191002_181700-824:localhost:8829,]@anon-20191002_181700-817:localhost:8829+] @anon-20191002_181700-776:localhost:8829  mr_ ml  mb_|X]c@anon-20191002_181700-784:localhost:8800+__anon__-20191002_181700-20:localhost:8800 3{ k ; { K   [ + k ; t { K [+k;E {Z+/c+__anon__-20191002_181700-42:localhost:88003/c+__anon__-20191002_181700-41:localhost:88002/c+__anon__-20191002_181700-40:localhost:88001/c+__anon__-20191002_181700-40:localhost:88000/c+__anon__-20191002_181700-39:localhost:8800//c+__anon__-20191002_181700-38:localhost:8800./c+__anon__-20191002_181700-38:localhost:8800-/c+__anon__-20191002_181700-37:localhost:8800,/c+__anon__-20191002_181700-37:localhost:8800+/c+__anon__-20191002_181700-36:localhost:8800*/c+__anon__-20191002_181700-35:localhost:8800)/c+__anon__-20191002_181700-34:localhost:8800(/c+__anon__-20191002_181700-34:localhost:8800'/c+__anon__-20191002_181700-33:localhost:8800&/c+__anon__-20191002_181700-32:localhost:8800%/c+__anon__-20191002_181700-31:localhost:8800$/c+__anon__-20191002_181700-30:localhost:8800#/c+__anon__-20191002_181700-30:localhost:8800"/c+__anon__-20191002_181700-29:localhost:8800!/c+__anon__-20191002_181700-28:localhost:8800 /c+__anon__-20191002_181700-27:localhost:8800/c+__anon__-20191002_181700-26:localhost:8800/c+__anon__-20191002_181700-25:localhost:8800/c+__anon__-20191002_181700-24:localhost:8800/c+__anon__-20191002_181700-23:localhost:8800/c+__anon__-20191002_181700-22:localhost:8800/c+__anon__-20191002_181700-21:localhost:8800/c+__anon__-20191002_181700-20:localhost:8800/c+__anon__-20191002_181700-19:localhost:8800/c+__anon__-20191002_181700-18:localhost:8800/c+__anon__-20191002_181700-17:localhost:8800/c+__anon__-20191002_181700-16:localhost:8800/c+__anon__-20191002_181700-15:localhost:8800/c+__anon__-20191002_181700-14:localhost:8800/c+__anon__-20191002_181700-13:localhost:8800/c+__anon__-20191002_181700-13:localhost:8800/c+__anon__-20191002_181700-12:localhost:8800/c+__anon__-20191002_181700-12:localhost:8800/c+__anon__-20191002_181700-11:localhost:8800 /c+__anon__-20191002_181700-11:localhost:8800 /c+__anon__-20191002_181700-10:localhost:8800 .a+__anon__-20191002_181700-9:localhost:8800 .a+__anon__-20191002_181700-8:localhost:8800 .a+__anon__-20191002_181700-7:localhost:8800.a+__anon__-20191002_181700-6:localhost:8800.a+__anon__-20191002_181700-5:localhost:8800.a+__anon__-20191002_181700-4:localhost:8800.a+__anon__-20191002_181700-3:localhost:8800.a+__anon__-20191002_181700-2:localhost:8800.a+__anon__-20191002_181700-1:localhost:8800-a +__anon__-20191002_181700-0:localhost:88004 ffK]=@anon-20191002_181700-817:localhost:8829anon-20191002_181700-817mͽK]=@anon-20191002_181700-776:localhost:8829anon-20191002_181700-776m ,]@anon-20191002_181700-817:localhost:8829+] @anon-20191002_181700-776:localhost:8829  mͽ  m =![sytesta_push_key@anon-20191002_181700-55:localhost:8800=![sytesta_push_key@anon-20191002_181700-54:localhost:8800   +_Hk1 C H \ ! p 5 s 'Cp$GG _7+c +__anon__-20191002_181700-42:localhost:8800open9*c +__anon__-20191002_181700-41:localhost:8800invite7)c +__anon__-20191002_181700-40:localhost:8800open9(c +__anon__-20191002_181700-39:localhost:8800invite9'c +__anon__-20191002_181700-38:localhost:8800invite9&c +__anon__-20191002_181700-37:localhost:8800inviteC%c! +__anon__-20191002_181700-36:localhost:8800Test GroupinviteC$c! +__anon__-20191002_181700-35:localhost:8800Test GroupinviteC#c! +__anon__-20191002_181700-34:localhost:8800Test GroupinviteJ"c/ +__anon__-20191002_181700-33:localhost:8800Testing summariesinviteJ!c/ +__anon__-20191002_181700-32:localhost:8800Testing summariesinviteJ c/ +__anon__-20191002_181700-31:localhost:8800Testing summariesinvite9c +__anon__-20191002_181700-30:localhost:8800inviteJc/ +__anon__-20191002_181700-29:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-28:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-27:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-26:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-25:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-24:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-23:localhost:8800Testing summariesinvite9c +__anon__-20191002_181700-22:localhost:8800invite9c +__anon__-20191002_181700-21:localhost:8800invite9c +__anon__-20191002_181700-20:localhost:8800invite9c +__anon__-20191002_181700-19:localhost:8800invite9c +__anon__-20191002_181700-18:localhost:8800invite9c +__anon__-20191002_181700-17:localhost:8800invite9c +__anon__-20191002_181700-16:localhost:8800invite9c +__anon__-20191002_181700-15:localhost:8800invite9c +__anon__-20191002_181700-14:localhost:8800invite9c +__anon__-20191002_181700-13:localhost:8800invite9 c +__anon__-20191002_181700-12:localhost:8800invite9 c +__anon__-20191002_181700-11:localhost:8800inviteJ c/ +__anon__-20191002_181700-10:localhost:8800Testing summariesinvite8 a +__anon__-20191002_181700-9:localhost:8800invite8 a +__anon__-20191002_181700-8:localhost:8800invite a%?OQ +__anon__-20191002_181700-7:localhost:8800Random Groupmxc://example.org/fooooooA random topic for a random groupA longer desc for a random groupinviteIa/ +__anon__-20191002_181700-6:localhost:8800Testing summariesinvite8a +__anon__-20191002_181700-5:localhost:8800invite8a +__anon__-20191002_181700-4:localhost:8800invite a%?OQ +__anon__-20191002_181700-3:localhost:8800Random Groupmxc://example.org/fooooooA random topic for a random groupA longer desc for a random groupinvite8a +__anon__-20191002_181700-2:localhost:8800invite8a +__anon__-20191002_181700-1:localhost:8800inviteBa! +__anon__-20191002_181700-0:localhost:8800Test Groupinvite + k ; { K  [ + kt ; { K E[+Z+/c+__anon__-20191002_181700-42:localhost:8800+/c+__anon__-20191002_181700-41:localhost:8800*/c+__anon__-20191002_181700-40:localhost:8800)/c+__anon__-20191002_181700-39:localhost:8800(/c+__anon__-20191002_181700-38:localhost:8800'/c+__anon__-20191002_181700-37:localhost:8800&/c+__anon__-20191002_181700-36:localhost:8800%/c+__anon__-20191002_181700-35:localhost:8800$/c+__anon__-20191002_181700-34:localhost:8800#/c+__anon__-20191002_181700-33:localhost:8800"/c+__anon__-20191002_181700-32:localhost:8800!/c+__anon__-20191002_181700-31:localhost:8800 /c+__anon__-20191002_181700-30:localhost:8800/c+__anon__-20191002_181700-29:localhost:8800/c+__anon__-20191002_181700-28:localhost:8800/c+__anon__-20191002_181700-27:localhost:8800/c+__anon__-20191002_181700-26:localhost:8800/c+__anon__-20191002_181700-25:localhost:8800/c+__anon__-20191002_181700-24:localhost:8800/c+__anon__-20191002_181700-23:localhost:8800/c+__anon__-20191002_181700-22:localhost:8800/c+__anon__-20191002_181700-21:localhost:8800/c+__anon__-20191002_181700-20:localhost:8800/c+__anon__-20191002_181700-19:localhost:8800/c+__anon__-20191002_181700-18:localhost:8800/c+__anon__-20191002_181700-17:localhost:8800/c+__anon__-20191002_181700-16:localhost:8800/c+__anon__-20191002_181700-15:localhost:8800/c+__anon__-20191002_181700-14:localhost:8800/c+__anon__-20191002_181700-13:localhost:8800/c+__anon__-20191002_181700-12:localhost:8800 /c+__anon__-20191002_181700-11:localhost:8800 /c+__anon__-20191002_181700-10:localhost:8800 .a+__anon__-20191002_181700-9:localhost:8800 .a+__anon__-20191002_181700-8:localhost:8800 .a+__anon__-20191002_181700-7:localhost:8800.a+__anon__-20191002_181700-6:localhost:8800.a+__anon__-20191002_181700-5:localhost:8800.a+__anon__-20191002_181700-4:localhost:8800.a+__anon__-20191002_181700-3:localhost:8800.a+__anon__-20191002_181700-2:localhost:8800.a+__anon__-20191002_181700-1:localhost:8800-a +__anon__-20191002_181700-0:localhost:8800 tЄ; TN  ] /xȁN"g6@rk9@-]@anon-20191002_181700-728:localhost:8800U-]@anon-20191002_181700-319:localhost:8800j-]@anon-20191002_181700-242:localhost:8800i,]@anon-20191002_181700-152:localhost:8800X -]@anon-20191002_181700-542:localhost:8829 -]@anon-20191002_181700-448:localhost:8800YN-]@anon-20191002_181700-360:localhost:8800/ x-]@anon-20191002_181700-654:localhost:8800   , #ix V f  % , "[< yAA{tableevent_push_actions_stagingevent_push_actions_stagingCREATE TABLE event_push_actions_staging ( event_id TEXT NOT NULL, user_id TEXT NOT NULL, actions TEXT NOT NULL, notif SMALLINT NOT NULL, highlight SMALLINT NOT NULL , unread SMALLINT)v%99tablee2e_room_keys_versionse2e_room_keys_versions0CREATE TABLE "e2e_room_keys_versions" ( user_id TEXT NOT NULL, version BIGINT NOT NULL, algorithm TEXT NOT NULL, auth_data TEXT NOT NULL, deleted SMALLINT DEFAULT 0 NOT NULL , etag BIGINT)O!qindexgroups_idxgroupsCREATE UNIQUE INDEX groups_idx ON groups(group_id)Z tablegroupsgroupsCREATE TABLE "groups" ( group_id TEXT NOT NULL, name TEXT, avatar_url TEXT, short_description TEXT, long_description TEXT, is_public BOOL NOT NULL , join_policy TEXT NOT NULL DEFAULT 'invite')'''Ktablee2e_room_keyse2e_room_keys2CREATE TABLE "e2e_room_keys" ( user_id TEXT NOT NULL, room_id TEXT NOT NULL, session_id TEXT NOT NULL, version BIGINT NOT NULL, first_message_index INT, forwarded_count INT, is_verified BOOLEAN, session_data TEXT NOT NULL )&A9Aindexe2e_room_keys_versions_idxe2e_room_keys_versions1CREATE UNIQUE INDEX e2e_room_keys_versions_idx ON e2e_room_keys_versions(user_id, version)$K5+indexmonthly_active_users_time_stampmonthly_active_users/CREATE INDEX monthly_active_users_time_stamp ON monthly_active_users(timestamp) #A5+indexmonthly_active_users_usersmonthly_active_users.CREATE UNIQUE INDEX monthly_active_users_users ON monthly_active_users(user_id) "559tablemonthly_active_usersmonthly_active_users-CREATE TABLE monthly_active_users ( user_id TEXT NOT NULL, timestamp BIGINT NOT NULL )i!/% indexerased_users_usererased_users,CREATE UNIQUE INDEX erased_users_user ON erased_users(user_id)X %%stableerased_userserased_users+CREATE TABLE erased_users ( user_id TEXT NOT NULL )|=/indexuser_daily_visits_ts_idxuser_daily_visits*CREATE INDEX user_daily_visits_ts_idx ON user_daily_visits(timestamp)?/+indexuser_daily_visits_uts_idxuser_daily_visits)CREATE INDEX user_daily_visits_uts_idx ON user_daily_visits(user_id, timestamp)//Stableuser_daily_visitsuser_daily_visits(CREATE TABLE user_daily_visits ( user_id TEXT NOT NULL, device_id TEXT, timestamp BIGINT NOT NULL )_/#yindexgroup_rooms_r_idxgroup_rooms'CREATE INDEX group_rooms_r_idx ON group_rooms(room_id)q/#indexgroup_rooms_g_idxgroup_rooms&CREATE UNIQUE INDEX group_rooms_g_idx ON group_rooms(group_id, room_id)h3'indexgroup_invites_u_idxgroup_invites%CREATE INDEX group_invites_u_idx ON group_invites(user_id)_/#yindexgroup_users_u_idxgroup_users$CREATE INDEX group_users_u_idx ON group_users(user_id)q/#indexgroup_users_g_idxgroup_users#CREATE UNIQUE INDEX group_users_g_idx ON group_users(group_id, user_id)y3'#indexgroup_invites_g_idxgroup_invites"CREATE UNIQUE INDEX group_invites_g_idx ON group_invites(group_id, user_id)AAtableusers_pending_deactivationusers_pending_deactivation CREATE TABLE users_pending_deactivation ( user_id TEXT NOT NULL )GA1indexevent_push_actions_staging_idevent_push_actions_stagingCREATE INDEX event_push_actions_staging_id ON event_push_actions_staging(event_id)y;)indexuser_directory_user_idxuser_directoryCREATE UNIQUE INDEX user_directory_user_idx ON user_directory(user_id)r;) indexuser_directory_room_idxuser_directoryCREATE INDEX user_directory_room_idx ON user_directory(room_id)))_tableuser_directoryuser_directoryCREATE TABLE "user_directory" ( user_id TEXT NOT NULL, room_id TEXT, display_name TEXT, avatar_url TEXT ) OYWc] +__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800Xc]+__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800 3 zM l? ^ 1  } P # o B  a 4  S &rEd7 ,]@anon-20191002_181700-824:localhost:88293,]@anon-20191002_181700-823:localhost:88002,]@anon-20191002_181700-821:localhost:88001,]@anon-20191002_181700-820:localhost:88000,]@anon-20191002_181700-819:localhost:8800/,]@anon-20191002_181700-818:localhost:8800.,]@anon-20191002_181700-817:localhost:8829-,]@anon-20191002_181700-816:localhost:8800,,]@anon-20191002_181700-815:localhost:8800+,]@anon-20191002_181700-814:localhost:8800*,]@anon-20191002_181700-813:localhost:8800),]@anon-20191002_181700-812:localhost:8800(,]@anon-20191002_181700-811:localhost:8800',]@anon-20191002_181700-809:localhost:8800&,]@anon-20191002_181700-807:localhost:8800%,]@anon-20191002_181700-805:localhost:8800$,]@anon-20191002_181700-803:localhost:8800#,]@anon-20191002_181700-802:localhost:8800",]@anon-20191002_181700-801:localhost:8800!,]@anon-20191002_181700-799:localhost:8800 ,]@anon-20191002_181700-797:localhost:8800,]@anon-20191002_181700-795:localhost:8800,]@anon-20191002_181700-793:localhost:8800,]@anon-20191002_181700-791:localhost:8800,]@anon-20191002_181700-789:localhost:8800,]@anon-20191002_181700-787:localhost:8800,]@anon-20191002_181700-786:localhost:8800,]@anon-20191002_181700-785:localhost:8800,]@anon-20191002_181700-784:localhost:8800,]@anon-20191002_181700-783:localhost:8800,]@anon-20191002_181700-782:localhost:8800,]@anon-20191002_181700-781:localhost:8800,]@anon-20191002_181700-779:localhost:8800,]@anon-20191002_181700-777:localhost:8800,]@anon-20191002_181700-776:localhost:8829,]@anon-20191002_181700-775:localhost:8800,]@anon-20191002_181700-773:localhost:8800,]@anon-20191002_181700-771:localhost:8800,]@anon-20191002_181700-770:localhost:8800 ,]@anon-20191002_181700-769:localhost:8800 ,]@anon-20191002_181700-768:localhost:8800 ,]@anon-20191002_181700-767:localhost:8800 ,]@anon-20191002_181700-766:localhost:8800 ,]@anon-20191002_181700-764:localhost:8800,]@anon-20191002_181700-763:localhost:8800,]@anon-20191002_181700-762:localhost:8800,]@anon-20191002_181700-761:localhost:8800,]@anon-20191002_181700-759:localhost:8800,]@anon-20191002_181700-758:localhost:8800,]@anon-20191002_181700-757:localhost:8800+] @anon-20191002_181700-756:localhost:8800 -+] @anon-20191002_181700-810:localhost:8800  d k  ]RcQ+__anon__-20191002_181700-28:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800 RcQ+__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800 RcQ+__anon__-20191002_181700-26:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800RcQ+__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800RcQ+__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800RcQ+__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800RcQ+__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800RcQ+__anon__-20191002_181700-10:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800QaQ+__anon__-20191002_181700-6:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800PaQ +__anon__-20191002_181700-1:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800 {{>e&Q!ELBgBaMSIMNkjFSumH:localhost:8800 &Q!CKNftKKCaOCVUyYWNY:localhost:8800 &Q!cvXpMzcxNNhsNttxvt:localhost:8800&Q!jlGSdNttccYxjfLkwW:localhost:8800&Q!ZNIjCvcWhgcwskanjT:localhost:8800&Q!NJdkYMskQwIpIWlWkn:localhost:8800&Q!jGQNGXehugtTvjUGKI:localhost:8800&Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!pTvdDtkgovsIdAdxCm:localhost:8800%Q !hNCwypIzdDZDVmCEfd:localhost:8800 sc5 4w ˃8 }zՂ<́~@A Uq8 4]@anon-20191002_181700-701:localhost:8800m4ja4]@anon-20191002_181700-648:localhost:8800m47 34]@anon-20191002_181700-584:localhost:8800m4 4]@anon-20191002_181700-512:localhost:8800m4 -4]@anon-20191002_181700-430:localhost:8800m44]@anon-20191002_181700-366:localhost:8800m4I4]@anon-20191002_181700-302:localhost:8800m4 4]@anon-20191002_181700-238:localhost:8800m44]@anon-20191002_181700-173:localhost:8800m4 / m4 . m4 *]@anon-20191002_181700-636:localhost:8800*]@anon-20191002_181700-267:localhost:8800 ,]@anon-20191002_181700-636:localhost:8800+] @anon-20191002_181700-267:localhost:8800    SZ a  h  o  v # } *Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q ]1-@anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1-@anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1-@anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1- @anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1- @anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Y]1=@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"adifferentopaquestring"P] 1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"  uF[, p A  V ' .]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800,] @anon-20191002_181700-560:localhost:8800  ` SQ ]7@anon-20191002_181700-560:localhost:8800!abcd1234"anotheropaquestring"P ] 7@anon-20191002_181700-560:localhost:8800!abcd1234"anotheropaquestring"L ]-@anon-20191002_181700-560:localhost:8800!abcd1234"anopaquestring"  l$ 4 D T d t ,<L\lv]]Q@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800v]]Q@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800v]]Q@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800v]]Q@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800v]]Q@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800v]]Q@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800v]]Q@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800v]]Q@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800v]]Q@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800v]]Q@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800v]]Q@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800v]]Q@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800v]]Q@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800v]]Q@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800v]]Q@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800v]]Q@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800v ]]Q@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800v ]]Q@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800v ]]Q@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:8800v ]]Q@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800v ]]Q@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800v]]Q@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800v]]Q@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800v]]Q@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800v]]Q@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800v]]Q@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800v]]Q@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800t[[Q@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800t[[Q@anon-20191002_181700-87:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800 P! / = K Y gu &4BPx]]Q@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800x]]Q@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800x]]Q@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800x]]Q@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800x]]Q@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800x]]Q@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800x]]Q@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800x]]Q@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800x]]Q@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800x]]Q@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800x]]Q@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800x]]Q@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800x]]Q@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800x]]Q@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800x]]Q@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800x]]Q@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800x]]Q@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800 x]]Q@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800 x]]Q@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:8800 x]]Q@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800 x]]Q@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800 x]]Q@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800x]]Q@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800x]]Q@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800x]]Q@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800x]]Q@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800x]]Q@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800v[[Q@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800u[[Q @anon-20191002_181700-87:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800  j->  T Y 2e  { C &Q!sBcwyPoXKgnSGVTjNR:localhost:8800&Q!sBcwyPoXKgnSGVTjNR:localhost:8800&Q!LFBhoxJpmBqFrwEzGP:localhost:8800&Q!LFBhoxJpmBqFrwEzGP:localhost:8800&Q!URpLZLuBfVcfHVTBGS:localhost:8800&Q!URpLZLuBfVcfHVTBGS:localhost:8800&Q!NcJYmIbgjsaKJOzBcs:localhost:8800&Q!NcJYmIbgjsaKJOzBcs:localhost:8800&Q!aiOswwhoZqjhcjzbzc:localhost:8800&Q!aiOswwhoZqjhcjzbzc:localhost:8800&Q!yWhIsLsgNVGcnELrDS:localhost:8800&Q!yWhIsLsgNVGcnELrDS:localhost:8800&Q!CSqENqzAezaZnGktbE:localhost:8800&Q!RDEAXrqXQizuhCUFPq:localhost:8800&Q!RDEAXrqXQizuhCUFPq:localhost:8800&Q!rpVYLTJGcFNdGzFzXj:localhost:8800&Q!DelfBAGvCrTXgNxmNV:localhost:8800 &Q!DelfBAGvCrTXgNxmNV:localhost:8800 &Q!RSLvuCuAqKQQrKCxNq:localhost:8800 &Q!uqIEMXzdeNeXdJmuwh:localhost:8800 &Q!uqIEMXzdeNeXdJmuwh:localhost:8800 &Q!PcvmCDeVUSyJbXpTig:localhost:8800&Q!FbJSiQoZtZkaFwzzQq:localhost:8800&Q!FbJSiQoZtZkaFwzzQq:localhost:8800&Q!GSxvxNevpCiwmFCHys:localhost:8800&Q!XnUZiYJDWVNGfsBnGz:localhost:8800&Q!XnUZiYJDWVNGfsBnGz:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:8800%Q !duCKuavMBSfRbTFPsc:localhost:8800  O|"An 3 `   R % D q ,]@anon-20191002_181700-754:localhost:8800,]@anon-20191002_181700-755:localhost:8800,]@anon-20191002_181700-750:localhost:8800,]@anon-20191002_181700-751:localhost:8800,]@anon-20191002_181700-747:localhost:8800,]@anon-20191002_181700-746:localhost:8800,]@anon-20191002_181700-726:localhost:8800,]@anon-20191002_181700-727:localhost:8800,]@anon-20191002_181700-719:localhost:8800,]@anon-20191002_181700-718:localhost:8800,]@anon-20191002_181700-710:localhost:8800,]@anon-20191002_181700-711:localhost:8800,]@anon-20191002_181700-513:localhost:8829,]@anon-20191002_181700-508:localhost:8800,]@anon-20191002_181700-509:localhost:8800,]@anon-20191002_181700-498:localhost:8829,]@anon-20191002_181700-494:localhost:8800 ,]@anon-20191002_181700-493:localhost:8800 ,]@anon-20191002_181700-483:localhost:8829 ,]@anon-20191002_181700-478:localhost:8800 ,]@anon-20191002_181700-479:localhost:8800 ,]@anon-20191002_181700-468:localhost:8829,]@anon-20191002_181700-463:localhost:8800,]@anon-20191002_181700-464:localhost:8800,]@anon-20191002_181700-453:localhost:8829,]@anon-20191002_181700-448:localhost:8800,]@anon-20191002_181700-449:localhost:8800+[@anon-20191002_181700-87:localhost:8800*[ @anon-20191002_181700-86:localhost:8800 @a]]-C@anon-20191002_181700-825:localhost:8800emailbob1@example.comlocalhost.localdomain:40269 ?b^]-C @anon-20191002_181700-825:localhost:8800emailbob1@example.comlocalhost.localdomain:40269 <q  O o mAitFZ. =}GC35indexdevice_lists_stream_user_iddevice_lists_streamTCREATE INDEX device_lists_stream_user_id ON device_lists_stream (user_id, device_id)FI%-indexdevice_inbox_stream_id_user_iddevice_inboxRCREATE INDEX device_inbox_stream_id_user_id ON device_inbox (stream_id, user_id)EO51indexcurrent_state_events_member_indexcurrent_state_eventsQCREATE INDEX current_state_events_member_index ON current_state_events (state_key)CDS1 indexevent_push_actions_highlights_indexevent_push_actionsPCREATE INDEX event_push_actions_highlights_index ON event_push_actions (user_id, room_id, topological_ordering, stream_ordering)CI1Eindexevent_push_actions_u_highlightevent_push_actionsOCREATE INDEX event_push_actions_u_highlight ON event_push_actions (user_id, stream_ordering) B=Mindexevent_contains_url_indexeventsNCREATE INDEX event_contains_url_index ON events (room_id, topological_ordering, stream_ordering)sA1#indexuser_ips_device_iduser_ipsMCREATE INDEX user_ips_device_id ON user_ips (user_id, device_id, last_seen)|@;'!indexaccess_tokens_device_idaccess_tokensLCREATE INDEX access_tokens_device_id ON access_tokens (user_id, device_id)?G?;indexroom_stats_earliest_token_idxroom_stats_earliest_tokenKCREATE UNIQUE INDEX room_stats_earliest_token_idx ON room_stats_earliest_token(room_id)>??;tableroom_stats_earliest_tokenroom_stats_earliest_tokenJCREATE TABLE room_stats_earliest_token ( room_id TEXT NOT NULL, token BIGINT NOT NULL )5;+Yindexevent_relations_relatesevent_relationsACREATE INDEX event_relations_relates ON event_relations(relates_to_id, relation_type, aggregation_key)r41+indexevent_relations_idevent_relations@CREATE UNIQUE INDEX event_relations_id ON event_relations(event_id)33++tableevent_relationsevent_relations?CREATE TABLE event_relations ( event_id TEXT NOT NULL, relates_to_id TEXT NOT NULL, relation_type TEXT NOT NULL, aggregation_key TEXT )@2S-indexsqlite_autoindex_account_validity_1account_validity>;1--'tableaccount_validityaccount_validity=CREATE TABLE account_validity ( user_id TEXT PRIMARY KEY, expiration_ts_ms BIGINT NOT NULL, email_sent BOOLEAN NOT NULL, renewal_token TEXT )0C7Aindexusers_in_public_rooms_u_idxusers_in_public_roomsG wp'oWC*BX m?6l9 m<.Q!wBBQYEPjQGnoAzDpEu:localhost:8800m{:.Q!sfXbvAcOUJhzGwWEpZ:localhost:8800thQ8.Q!nvclDopiBLEOKBIheH:localhost:8800th- K.Q!aknLNLxfChlLvFYhkJ:localhost:8800m .Q!XGAmnfaVvjDtQJuufa:localhost:8800th.Q!SUDzkfFBgpuCANOxRS:localhost:8800tho.Q!ITdmSQpjMnaPoHIbws:localhost:8800th!i1.Q!NeYaCeYNFATCqlrlGT:localhost:8800thI.Q!EABRjdYuYumMhLSwIa:localhost:8800th1@.Q!jGQNGXehugtTvjUGKI:localhost:8800m4.Q!eWRdwtyqHvuxZFvhNS:localhost:8800th>6 th th m   &I U a &f6[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOjy8]!@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA 8]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGUo 8]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ7 8]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN 8]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJQ8]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGPV8]!@anon-20191002_181700-276:localhost:8800PBSDTTCZKK8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV y5i% Y  z?]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOSm?]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOBmzd=[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIm.;J?]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGIm,7` ?]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLMm, |?]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmۦ ^?]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPHmb?]!@anon-20191002_181700-414:localhost:8800JOACLHYIFXmr?]!@anon-20191002_181700-360:localhost:8800XKNFVZJCREmňd?]!@anon-20191002_181700-306:localhost:8800XZDIPYWWODm1t?]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJm{?]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVWm߄>]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSSmIr .H u n n  1 W H   =x2  V H % &md y y b = < >,Q!fDISaqNBhlOwherxSt:localhost:8800 | | ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 <,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 k,Q!QnmLrBAxeItdHsaxWf:localhost:8800 h h,Q!SBEprlZiuliFNSfNmz:localhost:8800ooB,Q!EfJcWhdjNARbuHYrqU:localhost:8800]]s+Q !VAEDgDJVqmxXZyAlSW:localhost:8800I,Q!YQATbgbLImCDamiDHC:localhost:8800J,Q!cHtqiAyCHEAoBIbCmL:localhost:8800EE 5+Q !WhLedNwPGGGTtqeqam:localhost:8800 L3+Q !mfzIRinBAGGrZvQAuI:localhost:8800+Q !lEJUJZxqZPKZetemiR:localhost:8800 - - +Q !XIqmzIFbkHGQPIpywk:localhost:8800SS,Q!TlJCaYlCkOOVzFDlLx:localhost:8800kk,Q!jIfvTrwedrWLubsnlM:localhost:8800n,Q!KIHYKMzkRDrJwiywwz:localhost:8800 / / /+Q !ZaOktTIVeRgBXxfubH:localhost:8800+Q !BrssELMbasSzTFpIXm:localhost:8800JJ,Q!PQZMTVTeCYqMZwkHvW:localhost:8800 ,Q!NPdjmIfsBVIIkvWBzD:localhost:8800aaN,Q!pduebXnTyxQWVxEICp:localhost:8800 . .),Q!nvclDopiBLEOKBIheH:localhost:8800CC w,Q!tkajvIKHoOMWGsReBs:localhost:8800 ,Q!rQeYcODvQiLsOIbQrJ:localhost:8800// 3,Q!vyCFfUTJKYJSDadFhT:localhost:8800\\,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 0?,Q!aWvVRVaDflYyyGTOdD:localhost:8800 J/,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!NhWgOTYzEPRwAxRQvS:localhost:8800ss *Q!zhCsYcaweVFJLLNwBz:localhost:8800// \,Q!hnQOBexFYpvJntEChZ:localhost:8800r,Q!hFwigdYZkwYNSwelRH:localhost:8800 S S ,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800E,Q!DnUHoxreGexNmjSVpq:localhost:8800PP+Q !HAFNBarGuVZuWCgwWM:localhost:8800(( +Q !HmkcAMkMjWRhTDJMsy:localhost:8800\\. ,Q!SrMQpDMFREKRMELwbL:localhost:88000,Q!azRJNFPIRSFAskLILK:localhost:8800$,Q!LFBhoxJpmBqFrwEzGP:localhost:8800i,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a a ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 & &},Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z Z,Q!bOSxzttDtclnrWnLov:localhost:8800cc1   e vh  rD 3 -]@anon-20191002_181700-102:localhost:8800$ -]@anon-20191002_181700-716:localhost:8800 9(C  ,[@anon-20191002_181700-95:localhost:8800-]@anon-20191002_181700-151:localhost:88009 X -]@anon-20191002_181700-522:localhost:8829H:/  -]@anon-20191002_181700-446:localhost:8800>:+[@anon-20191002_181700-36:localhost:8800m-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-300:localhost:8800 V-]@anon-20191002_181700-628:localhost:8800  0 C-]@anon-20191002_181700-234:localhost:8800 Et+ Z.]@anon-20191002_181700-596:localhost:8800.]@anon-20191002_181700-596:localhost:8800 .]@anon-20191002_181700-597:localhost:8800.] @anon-20191002_181700-595:localhost:8800 .]@anon-20191002_181700-598:localhost:8800.] @anon-20191002_181700-593:localhost:8800.]@anon-20191002_181700-589:localhost:8800.]@anon-20191002_181700-588:localhost:8800.]@anon-20191002_181700-590:localhost:8800.]@anon-20191002_181700-587:localhost:8800-] @anon-20191002_181700-586:localhost:8800 h6 M cKOx+ RTe?indexsqlite_autoindex_threepid_validation_token_1threepid_validation_tokenaQCC!tablethr ^E7#indexroom_stats_historical_end_tsroom_stats_historicalICREATE INDEX room_stats_historical_end_ts ON room_stats_historical (end_ts)J]]7indexsqlite_autoindex_room_stats_historical_1room_stats_historicalHS\77Ctableroom_stats_historicalroom_stats_historicalFCREATE TABLE room_stats_historical ( room_id TEXT NOT NULL, end_ts BIGINT NOT NULL, bucket_size BIGINT NOT NULL, current_state_events BIGINT NOT NULL, joined_members BIGINT NOT NULL, invited_members BIGINT NOT NULL, left_members BIGINT NOT NULL, banned_members BIGINT NOT NULL, local_users_in_room BIGINT NOT NULL, total_events BIGINT NOT NULL, total_event_bytes BIGINT NOT NULL, PRIMARY KEY (room_id, end_ts) )D[W1indexsqlite_autoindex_room_stats_current_1room_stats_currentEZZ11]tableroom_stats_currentroom_stats_currentDCREATE TABLE room_stats_current ( room_id TEXT NOT NULL PRIMARY KEY, current_state_events INT NOT NULL, joined_members INT NOT NULL, invited_members INT NOT NULL, left_members INT NOT NULL, banned_members INT NOT NULL, local_users_in_room INT NOT NULL, completed_delta_stream_id BIGINT NOT NULL )TYgAindexsqlite_autoindex_stats_incremental_position_1stats_incremental_positionCDXAAtablestats_incremental_positionstats_incremental_positionBCREATE TABLE stats_incremental_position ( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_id BIGINT NOT NULL, CHECK (Lock='X') )#VI'aindexe2e_room_keys_with_version_idxe2e_room_keyscCREATE UNIQUE INDEX e2e_room_keys_with_version_idx ON e2e_room_keys(user_id, version, room_id, session_id)%UU?Aindexthreepid_validation_token_session_idthreepid_validation_tokenbCREATE INDEX threepid_validation_token_session_id ON threepid_validation_token(session_id)RTe?indexsqlite_autoindex_threepid_validation_token_1threepid_validation_tokenaDS??tablethreepid_validation_tokenthreepid_validation_token`CREATE TABLE threepid_validation_token ( token TEXT PRIMARY KEY, session_id TEXT NOT NULL, next_link TEXT, expires BIGINT NOT NULL )VRiCindexsqlite_autoindex_threepid_validation_session_1threepid_validation_session_QCC!tablethreepid_validation_sessionthreepid_validation_session^CREATE TABLE threepid_validation_session ( session_id TEXT PRIMARY KEY, medium TEXT NOT NULL, address TEXT NOT NULL, client_secret TEXT NOT NULL, last_send_attempt BIGINT NOT NULL, validated_at BIGINT )PSKindexuser_ips_user_token_ip_unique_indexuser_ips]CREATE UNIQUE INDEX user_ips_user_token_ip_unique_index ON user_ips (user_id, access_token, ip)BOaKcindexdevice_lists_remote_extremeties_unique_idxdevice_lists_remote_extremeties\CREATE UNIQUE INDEX device_lists_remote_extremeties_unique_idx ON device_lists_remote_extremeties (user_id)NC1Eindexstate_groups_state_type_idxstate_groups_state[CREATE INDEX state_groups_state_type_idx ON state_groups_state(state_group, type, state_key)3MS?_indexdevice_lists_remote_cache_unique_iddevice_lists_remote_cacheZCREATE UNIQUE INDEX device_lists_remote_cache_unique_id ON device_lists_remote_cache (user_id, device_id)LI71indexevent_to_state_groups_sg_indexevent_to_state_groupsYCREATE INDEX event_to_state_groups_sg_index ON event_to_state_groups (state_group)XK/windexusers_creation_tsusersXCREATE INDEX users_creation_ts ON users (creation_ts)iJ;indexuser_ips_last_seen_onlyuser_ipsWCREATE INDEX user_ips_last_seen_only ON user_ips (last_seen)hI1 indexuser_ips_last_seenuser_ipsVCREATE INDEX user_ips_last_seen ON user_ips (user_id, last_seen)HI91indexlocal_media_repository_url_idxlocal_media_repositoryUCREATE INDEX local_media_repository_url_idx ON local_media_repository (created_ts) &I U c &8]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRW88]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNYT8]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK 78]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTX p6[!@anon-20191002_181700-56:localhost:8800UWHMGOHJLQ^ \8]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZk8]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAw8]!@anon-20191002_181700-261:localhost:8800HLJRYNNHWE=5Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF 8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT }} m me m m m m1 m戚 m' m m惓 m|  m%L yY u< |2[@anon-20191002_181700-77:localhost:8800m&@4]@anon-20191002_181700-703:localhost:8800m/* 4]@anon-20191002_181700-632:localhost:8800mH 4]@anon-20191002_181700-567:localhost:8800m _4]@anon-20191002_181700-490:localhost:8800m4]@anon-20191002_181700-411:localhost:8800mC4]@anon-20191002_181700-348:localhost:8800mVX4]@anon-20191002_181700-283:localhost:8800mԬ2[@anon-20191002_181700-21:localhost:8800m?z2[@anon-20191002_181700-14:localhost:8800mo MC mԚ B m!  ]  ]   Y * 5  ~ _C Cq@GMcba 'Y0E+@__ANON__-48:localhost:42455CURIOSITY_ROVER1E-@__ANON__-46:localhost:42455random_device_id7]!@anon-20191002_181700-559:localhost:8829ESMCXDKMPQ7]!@anon-20191002_181700-553:localhost:8829UQYOPZHDDU6]! @anon-20191002_181700-540:localhost:8829DTIXBTNGTL& z_>rK* { 8  K  d E ! w @ ! :"?  m.room.history_visibility Y>'] 9m.room.member@anon-20191002_181700-733:localhost:8800 o3  m.room.power_levels //  m.room.join_rules Y2'E bm.room.member@__ANON__-45:localhost:42455 '  .m.room.create 3  m.room.power_levels G2'E m.room.member@__ANON__-20:localhost:42455 =2'E dm.room.member@__ANON__-12:localhost:42455 9  m.room.canonical_alias 1 /  m.room.join_rules u>'] ]m.room.member@anon-20191002_181700-557:localhost:8800 l 3  m.room.power_levels  3 m.room.power_levels / im.room.join_rulesx >']m.room.member@anon-20191002_181700-464:localhost:8800% :>']m.room.member@anon-20191002_181700-443:localhost:8800 "? om.room.history_visibility~ 0>']m.room.member@anon-20191002_181700-381:localhost:8800" 3 m.room.power_levels / mm.room.join_rules|>']m.room.member@anon-20191002_181700-323:localhost:8800 "? m.room.history_visibility/ Qm.room.join_rulesUB3 m.room.power_levels3 m.room.power_levels]"? Em.room.history_visibilityH3 m.room.power_levelso"? m.room.history_visibility"? (m.room.history_visibility*>']m.room.member@anon-20191002_181700-169:localhost:88001>']pm.room.member@anon-20191002_181700-153:localhost:8800r/ $m.room.join_rules&S3 m.room.power_levels' jm.room.createl"? m.room.history_visibility='[m.room.member@anon-20191002_181700-75:localhost:8800/ am.room.join_rulesa  , zM E@__ANON__-48:localhost:42455 E@__ANON__-46:localhost:42455,]@anon-20191002_181700-559:localhost:8829,]@anon-20191002_181700-553:localhost:8829,]@anon-20191002_181700-542:localhost:8829+] @anon-20191002_181700-540:localhost:8829 , X Ԃd]c@anon-20191002_181700-710:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5Ao127.0.0.1 xd]c@anon-20191002_181700-588:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqSGd1d0BsaDFHO3BeaUwKMDAyZnNpZ25hdHVyZSA7uV5hX3vKBnLk0QaC8CYMcssMCkflw8aLsSo3BB2bIwo127.0.0.1!d]c@anon-20191002_181700-429:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7Qo127.0.0.1;d]c@anon-20191002_181700-309:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQo127.0.0.14:d]c@anon-20191002_181700-189:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVidUpNVXhuOGZWLl8zRUcKMDAyZnNpZ25hdHVyZSCXgK_fzAECd6qxDK5bXpGq3bXHnw2u9AkinbzsoF1L7wo127.0.0.1      SS:9]@anon-20191002_181700-560:localhost:8800!abcd12349]@anon-20191002_181700-560:localhost:8800!abcd12348] @anon-20191002_181700-560:localhost:8800!abcd1234  j8p> @-]@anon-20191002_181700-821:localhost:8800&-]@anon-20191002_181700-757:localhost:8800P-]@anon-20191002_181700-681:localhost:8800 v-]@anon-20191002_181700-610:localhost:8800_ -]@anon-20191002_181700-532:localhost:8800-]@anon-20191002_181700-438:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-297:localhost:8800Ou-]@anon-20191002_181700-227:localhost:8800t-]@anon-20191002_181700-155:localhost:8800L ĉM;O z P  &R r zTnVɄXYwNHӁF& oY oy@  b + P  4]@anon-20191002_181700-164:localhost:8800mR3[@anon-20191002_181700-89:localhost:8800m2]@anon-20191002_181700-783:localhost:8800aE 4]@anon-20191002_181700-733:localhost:8800m /Y@anon-20191002_181700-6:localhost:8800a#H4]@anon-20191002_181700-661:localhost:8800m r2]@anon-20191002_181700-626:localhost:8800aM {2]@anon-20191002_181700-580:localhost:8800a {2]@anon-20191002_181700-541:localhost:8800a 2]@anon-20191002_181700-493:localhost:8800a l2]@anon-20191002_181700-447:localhost:8800aOu4]@anon-20191002_181700-412:localhost:8800mO2]@anon-20191002_181700-343:localhost:8800a4]@anon-20191002_181700-303:localhost:8800mE4]@anon-20191002_181700-270:localhost:8800m4]@anon-20191002_181700-238:localhost:8800m4]@anon-20191002_181700-202:localhost:8800m~34]@anon-20191002_181700-120:localhost:8800m"2]@anon-20191002_181700-378:localhost:8800a7 L m 4 mJ aI aB a Ch_Ig t { :. +o4{ ap@_11)tableuser_stats_currentuser_stats_currentGCREATE TABLE user_stats_current ( user_id TEXT NOT NULL PRIMARY KEY, joined_rooms BIGINT NOT NULL, completed_delta_stream_id BIGINT NOT NULL )?l99tablee2e_cross_signing_keyse2e_cross_signing_keys0CREATE TABLE e2e_cross_signing_keys ( user_id TEXT NOT NULL, keytype TEXT NOT NULL, keydata TEXT NOT NULL, stream_id BIGINT NOT NULL ) kC!Cindexredactions_have_censored_tsredactions/CREATE INDEX redactions_have_censored_ts ON redactions(received_ts) WHERE not have_censored/jK;eindexpublic_room_list_stream_networkpublic_room_list_stream.CREATE INDEX public_room_list_stream_network ON public_room_list_stream (appservice_id, network_id, room_id)iU-=indexroom_memberships_user_room_forgottenroom_membershipsnCREATE INDEX room_memberships_user_room_forgotten ON room_memberships (user_id, room_id)hC7!indexusers_in_public_rooms_r_idxusers_in_public_roomsmCREATE INDEX users_in_public_rooms_r_idx ON users_in_public_rooms(room_id)Ef//7tableuser_external_idsuser_external_idskCREATE TABLE user_external_ids ( auth_provider TEXT NOT NULL, external_id TEXT NOT NULL, user_id TEXT NOT NULL, UNIQUE (auth_provider, external_id) )BgU/indexsqlite_autoindex_user_external_ids_1user_external_idslye7-indexroom_stats_state_roomroom_stats_statejCREATE UNIQUE INDEX room_stats_state_room ON room_stats_state(room_id)d--;tableroom_stats_stateroom_stats_stateiCREATE TABLE room_stats_state ( room_id TEXT NOT NULL, name TEXT, canonical_alias TEXT, join_rules TEXT, history_visibility TEXT, encryption TEXT, avatar TEXT, guest_access TEXT, is_federatable BOOLEAN, topic TEXT ) cE7#indexuser_stats_historical_end_tsuser_stats_historicalgCREATE INDEX user_stats_historical_end_ts ON user_stats_historical (end_ts)Jb]7indexsqlite_autoindex_user_stats_historical_1user_stats_historicalfda77etableuser_stats_historicaluser_stats_historicaleCREATE TABLE user_stats_historical ( user_id TEXT NOT NULL, end_ts BIGINT NOT NULL, bucket_size BIGINT NOT NULL, joined_rooms BIGINT NOT NULL, invites_sent BIGINT NOT NULL, rooms_created BIGINT NOT NULL, total_events BIGINT NOT NULL, total_event_bytes BIGINT NOT NULL, PRIMARY KEY (user_id, end_ts) ) s3%Iindexuser_filters_uniqueuser_filtersCREATE UNIQUE INDEX user_filters_unique ON "user_filters" (user_id, filter_id) q?7/indexuser_signature_stream_idxuser_signature_streamCREATE UNIQUE INDEX user_signature_stream_idx ON user_signature_stream(stream_id),p77utableuser_signature_streamuser_signature_streamCREATE TABLE user_signature_stream ( stream_id BIGINT NOT NULL, from_user_id TEXT NOT NULL, user_ids TEXT NOT NULL )unEEmtablee2e_cross_signing_signaturese2e_cross_signing_signatures2CREATE TABLE e2e_cross_signing_signatures ( user_id TEXT NOT NULL, key_id TEXT NOT NULL, target_user_id TEXT NOT NULL, target_device_id TEXT NOT NULL, signature TEXT NOT NULL )"mA9Windexe2e_cross_signing_keys_idxe2e_cross_signing_keys1CREATE UNIQUE INDEX e2e_cross_signing_keys_idx ON e2e_cross_signing_keys(user_id, keytype, stream_id)D`W1indexsqlite_autoindex_user_stats_current_1user_stats_currentdRxt%%1tableevent_expiryevent_expiryCREATE TABLE event_expiry ( event_id TEXT PRIMARY KEY, expiry_ts BIGINT NOT NULL )Nr%%]tableuser_filtersuser_filtersCREATE TABLE "user_filters" ( user_id TEXT NOT NULL, filter_id BIGINT NOT NULL, filter_json BYTEA NOT NULL ) Q (aWXzfy5%}Q'Q!bQDOrbAknnQZfUbhgS:localhost:8800A'Q!TkluVzxeeCbMtbFWWS:localhost:8800 &Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+@'Q!JiUawCFQnodcpssOfK:localhost:8800  ZP%|'Q!YgaGPEraeLCqHQirin:localhost:8800+ &Q!eKrOqiOabJcMgIJjwC:localhost:8800A|'Q!HZqzpRgqekPOtxstVc:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800}'Q!PgNDjhhIBAXKryuGKy:localhost:8800"    VX Y  Z  [ ` +P]Q@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800gP]Q@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800< P]Q@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800#N[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800 DEQ@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800 ?P]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800 sP]Q@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800 P]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800^ P]Q@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:88001 .P]Q@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800 OP]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800P]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:88009P]Q@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800OP]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800[P]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800/ZP]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800O]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800p P]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800aP]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800 U ? MQUQ K!K @chrtestuser-93-:localhost:8800HXQEHKTZDRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWLGRPaF92ZVAweXhAUiYKMDAyZnNpZ25hdHVyZSCyrYXuhBO9_ACodbjIlFuTQZFwMNWrU6IKmsYHIP4CMQoQ K!K @chrtestuser-91-:localhost:8800XTTHVJFCAEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkxLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9ZdyYtOGMwTklnVipVd0gKMDAyZnNpZ25hdHVyZSAqN5GeTyba8AtQt_NEvP4UNKXIcDnEfY5NN1vsU8R-EQoQ K!K @chrtestuser-64-:localhost:8800WQBPBXVRIIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTY0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZWO1FrV2t-TUZwOi1jaCoKMDAyZnNpZ25hdHVyZSDf3lQ4TmbmbkIw1M-a6n3wxFY1-Lh_hc6GFc-jFEW9zgoQK!K @chrtestuser-92-:localhost:8800CTWNGYMNFDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkyLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJDOWxhTWhSQCNufixZZ3cKMDAyZnNpZ25hdHVyZSDzLoJ5dpqIz0rBvXCYhlb3v6jEWz4h-04531Su4LsFRgoQK!K@chrtestuser-63-:localhost:8800DYMSSHFRNDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTYzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZETVFWeGlsSk4wblJOK1MKMDAyZnNpZ25hdHVyZSCn-wz9Tw-jjt4rqtaVHG0cFX3N3LpY5b0fOLeXehOZeQoQK!K@chrtestuser-58-:localhost:8800ZSYDIEMYSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTU4LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE52NmlnSy1kcGliXypDT0QKMDAyZnNpZ25hdHVyZSAy-4Mgs_9fC_7RAn96LN_adlNA10THGEv8fPInbQHL2woQK!K@chrtestuser-34-:localhost:8800JUJQTQDDTHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRod0QxZGlpdDA6bWJzUjUKMDAyZnNpZ25hdHVyZSDrxVNrCEJWqcDhcsHLeTxPxDitPxLC8RADDAGnL7LPWwoQK!K@chrtestuser-33-:localhost:8800ZAXVDOYTVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTMzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNpeU1ndWNuS0Q0N1hBWlMKMDAyZnNpZ25hdHVyZSCTD-9sDVpVUjQEBYf7UdI262xzQ-QpX9KIpTmx4UMBzwoGA%=@mycooluser:localhost:8800my_device_idMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQG15Y29vbHVzZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA4Yk9lOnhjO2ViSHktWXN4CjAwMmZzaWduYXR1cmUg2-cAmzT9LeZJSv-M-Cl-bAyyz7lR3q6wAxOrb6Hea5MKEA!=@user-upper:localhost:8800XOXAYMRLKGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQHVzZXItdXBwZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBAOTRvJkorc3U3OU0tOUFxCjAwMmZzaWduYXR1cmUgXpoBeubKg-Ik5ejvtr-psmVM1Oz0XAeT3O1OLE9I7YkKvk!u@01register-user-20191002_181700:localhost:8800KRNGWLGVFNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0MmNpZCB1c2VyX2lkID0gQDAxcmVnaXN0ZXItdXNlci0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBmSmN5T0AsNDBPZjE2IzR3CjAwMmZzaWduYXR1cmUg6amnW3IywB01VF1R8NJ0Ubcg_6jrRzSwysmfG4Z9EWwK : T RF{:>;!5@02login:localhost:8800OFRAEFMMXRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAsOHJ1YS5BS0Nmd0hRb0U7CjAwMmZzaWduYXR1cmUgzHYPunxJpBQiqir5P3VuwZSP0ZXB4j1LIt84JgdC5IMKd[!a@anon-20191002_181700-3a:localhost:8800KUKHFAMCTCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTNhOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmFsVDh1bWx-LkhEc1gwUwowMDJmc2lnbmF0dXJlINPPu22cfvWGUnbYiQp0rRf10U2OEfNRiMwG-qfutW0uCgaY!]@anon-20191002_181700-2:localhost:8800RDNVTAXLBRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBpaS1fKzkqPWtHdy5aMVczCjAwMmZzaWduYXR1cmUg8sQ2n3_x741YAfCyYun7Y2PkhdEyHXFnMOjwIdCuNhEKaY!]@anon-20191002_181700-1:localhost:8800IFSRUEYXNFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA0MzgtWU1vR1E5OjhpN2YtCjAwMmZzaWduYXR1cmUgIrUutjl3SLnqrTGy5LuefdrPdD9qydzxJ4bNNCs6O-AKQK!K@chrtestuser-39-:localhost:8800HQOBQJZUDVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM5LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBkdyt2LjFLRXNnOV9qdj0KMDAyZnNpZ25hdHVyZSCg1SFs7VvheJHXhWvw0soyxHYJz7h7hPCfX8Ct6ONo1QoQK!K@chrtestuser-10-:localhost:8800NPPZGPSUFOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEwLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGswMDl4YUJ-MFA1dC4sMm4KMDAyZnNpZ25hdHVyZSDyZa0gjEpSl2a-3QbLap_Tioclz0PXZZH3KADV9NVjjAoSM!M@chrtestuser-233-:localhost:8800AJJFHKXPHAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTIzMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtOWpWWWE3UVVMaU8xTkxVCjAwMmZzaWduYXR1cmUg-c7saPdHcjDLu8l7co2MAqkFGXisztLd7KEr6nWgIckKSM!M@chrtestuser-163-:localhost:8800FYFIWVYQAGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTE2My06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBwRWdYPVE0eF9HRllGQnI9CjAwMmZzaWduYXR1cmUge0lWfZnSWgtbomr2M2SHV93VNH-fMvhhYItKOnXvgqcKSM!M@chrtestuser-125-:localhost:8800YFYOOHMJPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNS06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBVazJvclRxSDNLYnJBKiwuCjAwMmZzaWduYXR1cmUgucH4RP5KP4QDWImn6lN9O1lV0P0xjlHxHermwF0i8c0KS M!M@chrtestuser-124-:localhost:8800BIQFYVWLZNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNC06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBxcGdTc1p-VHZKeSZ6cEZ2CjAwMmZzaWduYXR1cmUgqnOD7Bup756v5aI5CwmMojZvk4vLUdXDyfy7z2EgxR8KS M!M @chrtestuser-123-:localhost:8800GABZLTWEEJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBrS1M3Ji5PWlVlbGtLdllNCjAwMmZzaWduYXR1cmUgJH_PcBIs07GNF-zrpYgJwEjbPJa4ANT0uxPmE5GlPqwK , , t a M 3l>}MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NWNpZCB1c2VyX2lkID0gQF9hc3Rlc3QtMDFjcmVhdGUtMC0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBkOEdGK2hUQUl5Rzt3Ums6CjAwMmZzaWduYXR1cmUg-CanMzUXVM_nrXBr1DolihUkhdjrHy2fXncXv2KA26IK=MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQHVzZXItdXBwZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBAOTRvJkorc3U3OU0tOUFxCjAwMmZzaWduYXR1cmUgXpoBeubKg-Ik5ejvtr-psmVM1Oz0XAeT3O1OLE9I7YkK=MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQG15Y29vbHVzZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA4Yk9lOnhjO2ViSHktWXN4CjAwMmZzaWduYXR1cmUg2-cAmzT9LeZJSv-M-Cl-bAyyz7lR3q6wAxOrb6Hea5MK9MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCg5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBfQEdaMUg4Q0o6anY3QyY6CjAwMmZzaWduYXR1cmUgiZgl-adzKYYaDaq_1fyQvWaLqv1LWEUfwX8nxHvPuuoK5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQlBpRlFlbzs2OVo0bEJJCjAwMmZzaWduYXR1cmUgwOK3oTNrjX_K4Brn9h2TRy5ZRpuEQ1X-lll2OrUD534K5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAzdERaSEtHXzRqLjs9VUhJCjAwMmZzaWduYXR1cmUgvwD1fT-pOqWMM2XjLxcB4Vhfw2QkPSXmV6fu-bjsElkK5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAsOHJ1YS5BS0Nmd0hRb0U7CjAwMmZzaWduYXR1cmUgzHYPunxJpBQiqir5P3VuwZSP0ZXB4j1LIt84JgdC5IMK1MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyOGNpZCB1c2VyX2lkID0gQGFkbWluOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZis6ZT1Wc1c5ZDdQeHk2WAowMDJmc2lnbmF0dXJlIHqtTk4Xh7-OYbB6u-Bib0xNU0qc9P4IS6T4-ZrZOs8JCg<%MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6NDg4WTJ5QVRXUGk5QXZKCjAwMmZzaWduYXR1cmUgvLzn0wH0-sfnWpaRwSxJHZ0wtTVPh2Z7w5K2gN3eocoK%MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLLFpYOFVpLlFlZmwydkRyCjAwMmZzaWduYXR1cmUgYEGhRFNs0lRHngvsK-GRpseRLXHAVbnVmtbo3UIfeosKF%MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQ18weU5JbX4xM0JOSGFiCjAwMmZzaWduYXR1cmUg-Dgad0EACYaLWGOwYOoRIRLZToDmnw1csLvpA4s-iYEKG={MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NGNpZCB1c2VyX2lkID0gQGFzdGVzdC0wMWNyZWF0ZS0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg3Vlk5RURBKk5wVUY1fmUKMDAyZnNpZ25hdHVyZSBnfFubw9NgLkbaicepY-N33O3DczkknCqPfyu2xJSnaQo8u MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0MmNpZCB1c2VyX2lkID0gQDAxcmVnaXN0ZXItdXNlci0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBmSmN5T0AsNDBPZjE2IzR3CjAwMmZzaWduYXR1cmUg6amnW3IywB01VF1R8NJ0Ubcg_6jrRzSwysmfG4Z9EWwK    d > Z4/%MMDAxY2xvY2F0aW9uIGx%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTE2My06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBwRWdYPVE0eF9HRllGQnI9CjAwMmZzaWduYXR1cmUge0lWfZnSWgtbomr2M2SHV93VNH-fMvhhYItKOnXvgqcK$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkxLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9ZdyYtOGMwTklnVipVd0gKMDAyZnNpZ25hdHVyZSAqN5GeTyba8AtQt_NEvP4UNKXIcDnEfY5NN1vsU8R-EQo $KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTYzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZETVFWeGlsSk4wblJOK1MKMDAyZnNpZ25hdHVyZSCn-wz9Tw-jjt4rqtaVHG0cFX3N3LpY5b0fOLeXehOZeQo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTY0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZWO1FrV2t-TUZwOi1jaCoKMDAyZnNpZ25hdHVyZSDf3lQ4TmbmbkIw1M-a6n3wxFY1-Lh_hc6GFc-jFEW9zgo $KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTU4LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE52NmlnSy1kcGliXypDT0QKMDAyZnNpZ25hdHVyZSAy-4Mgs_9fC_7RAn96LN_adlNA10THGEv8fPInbQHL2wo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTMzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNpeU1ndWNuS0Q0N1hBWlMKMDAyZnNpZ25hdHVyZSCTD-9sDVpVUjQEBYf7UdI262xzQ-QpX9KIpTmx4UMBzwo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM5LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBkdyt2LjFLRXNnOV9qdj0KMDAyZnNpZ25hdHVyZSCg1SFs7VvheJHXhWvw0soyxHYJz7h7hPCfX8Ct6ONo1Qo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRod0QxZGlpdDA6bWJzUjUKMDAyZnNpZ25hdHVyZSDrxVNrCEJWqcDhcsHLeTxPxDitPxLC8RADDAGnL7LPWwo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEwLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGswMDl4YUJ-MFA1dC4sMm4KMDAyZnNpZ25hdHVyZSDyZa0gjEpSl2a-3QbLap_Tioclz0PXZZH3KADV9NVjjAo%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTIzMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtOWpWWWE3UVVMaU8xTkxVCjAwMmZzaWduYXR1cmUg-c7saPdHcjDLu8l7co2MAqkFGXisztLd7KEr6nWgIckK%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNS06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBVazJvclRxSDNLYnJBKiwuCjAwMmZzaWduYXR1cmUgucH4RP5KP4QDWImn6lN9O1lV0P0xjlHxHermwF0i8c0K%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNC06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBxcGdTc1p-VHZKeSZ6cEZ2CjAwMmZzaWduYXR1cmUgqnOD7Bup756v5aI5CwmMojZvk4vLUdXDyfy7z2EgxR8K %MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBrS1M3Ji5PWlVlbGtLdllNCjAwMmZzaWduYXR1cmUgJH_PcBIs07GNF-zrpYgJwEjbPJa4ANT0uxPmE5GlPqwK < } < 0f<_!Y]"@anon-20191002_181700-8:localhost:8800device_2MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLTXhlQ2QwWGJPQ2F5dmRzCjAwMmZzaWduYXR1cmUgM5dLNbhEha61joEng8Hx_u5bgSK7iHTvXeS_5s-_Hd0Ka Y!]!@anon-20191002_181700-8:localhost:8800EBQTKFPJODMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYKaY!] @anon-20191002_181700-7:localhost:8800FWKDVNUPWXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgKcY%]@anon-20191002_181700-6:localhost:8800login_deviceMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBFUERuKjBHKyMjMytzbFZDCjAwMmZzaWduYXR1cmUgLBoGUEjLVisGr9FV3LHFfZJqPnrzI5lxuWBAOaI6KWQKaY!]@anon-20191002_181700-6:localhost:8800YDTVVUXGOWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAKaY!]@anon-20191002_181700-5:localhost:8800WYYDRNGEZSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwKaY!]@anon-20191002_181700-4:localhost:8800OXDBJBCTVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcKA=!9@spyglass:localhost:8800BUNJZHLDRSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCg>;!5@02login:localhost:8800TUIMTGQXHFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQlBpRlFlbzs2OVo0bEJJCjAwMmZzaWduYXR1cmUgwOK3oTNrjX_K4Brn9h2TRy5ZRpuEQ1X-lll2OrUD534K?;#5@02login:localhost:8800my_super_idMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAzdERaSEtHXzRqLjs9VUhJCjAwMmZzaWduYXR1cmUgvwD1fT-pOqWMM2XjLxcB4Vhfw2QkPSXmV6fu-bjsElkK>;!5@02login:localhost:8800FHCBMHROPDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBfQEdaMUg4Q0o6anY3QyY6CjAwMmZzaWduYXR1cmUgiZgl-adzKYYaDaq_1fyQvWaLqv1LWEUfwX8nxHvPuuoK *Y s D U$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWLGRPaF92ZVAweXhAUiYKMDAyZnNpZ25hdHVyZSCyrYXuhBO9_ACodbjIlFuTQZFwMNWrU6IKmsYHIP4CMQo -]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA0MzgtWU1vR1E5OjhpN2YtCjAwMmZzaWduYXR1cmUgIrUutjl3SLnqrTGy5LuefdrPdD9qydzxJ4bNNCs6O-AK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBpaS1fKzkqPWtHdy5aMVczCjAwMmZzaWduYXR1cmUg8sQ2n3_x741YAfCyYun7Y2PkhdEyHXFnMOjwIdCuNhEK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBjYnJBan49QD0uTHJJckM4CjAwMmZzaWduYXR1cmUgZvoUJrtPWoPaYaOxmpzbYfNlPo2qKXvZ2cHa2mFkBgwK$-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtWnVHNlFHTnJGSip1O1hDCjAwMmZzaWduYXR1cmUgH0sSwQ71wzINqRanNx9XAgK_lZhq-GL6C1MYNEKwKvkK"-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLTXhlQ2QwWGJPQ2F5dmRzCjAwMmZzaWduYXR1cmUgM5dLNbhEha61joEng8Hx_u5bgSK7iHTvXeS_5s-_Hd0K!-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYK -]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBFUERuKjBHKyMjMytzbFZDCjAwMmZzaWduYXR1cmUgLBoGUEjLVisGr9FV3LHFfZJqPnrzI5lxuWBAOaI6KWQK  : m 8hd,[!a/@anon-20191002_181700-16:localhost:8800OZMNCFRFTFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3Cgd+[!a.@anon-20191002_181700-15:localhost:8800KLXIHUSAOGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCgf*[%a-@anon-20191002_181700-14:localhost:8800login_deviceMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbnlMLThPZW1EOFRLb3EzZAowMDJmc2lnbmF0dXJlIM7SjvTXKCgyTmaaWkqm5JrVgl3jJctC-s34a8tMqtrxCgd)[!a,@anon-20191002_181700-14:localhost:8800UAGQKBVBOWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCgd([!a*@anon-20191002_181700-12:localhost:8800ATMHTVRQSQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCgd'[!a)@anon-20191002_181700-13:localhost:8800VNBXZAVQZGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVgjPVk5Xm9QZD1kNmRXXwowMDJmc2lnbmF0dXJlIL-VI34WWyPiesTSXrpSLlJQIHTXePfNEs8nM59JpfX3Cgd&[!a'@anon-20191002_181700-11:localhost:8800GGVPWYJLFAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCgd%[!a&@anon-20191002_181700-10:localhost:8800FPVSQGRDQGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2Cgc$Y%]%@anon-20191002_181700-9:localhost:8800login_deviceMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBjYnJBan49QD0uTHJJckM4CjAwMmZzaWduYXR1cmUgZvoUJrtPWoPaYaOxmpzbYfNlPo2qKXvZ2cHa2mFkBgwKa#Y!]$@anon-20191002_181700-9:localhost:8800MGUQLDGKRQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsK_"Y]#@anon-20191002_181700-8:localhost:8800device_1MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtWnVHNlFHTnJGSip1O1hDCjAwMmZzaWduYXR1cmUgH0sSwQ71wzINqRanNx9XAgK_lZhq-GL6C1MYNEKwKvkK  m < xG1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCg4/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVgjPVk5Xm9QZD1kNmRXXwowMDJmc2lnbmF0dXJlIL-VI34WWyPiesTSXrpSLlJQIHTXePfNEs8nM59JpfX3Cg'/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCg(/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCg&/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2Cg%/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbE86LjU5K0ImSks7YUVtOgowMDJmc2lnbmF0dXJlIKirgGiuZLjz6h_A3nQlvdC5Ef5akvhwtYCDB0r4aRZ1Cg//aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTkwwRzk9VyZOYmt3KnE5LgowMDJmc2lnbmF0dXJlIHrNx3JvH7A75a7LMXd1PJkFMZ0mKX00UA0dYcN1YHZyCg./aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYnNwUXFWLS12dzR-aEJlNQowMDJmc2lnbmF0dXJlIIvFYu5qn5ABIoXhtIWNkEwLMydgKrj6CF0IHDki-iamCg-/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3Cg,/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCg+/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbnlMLThPZW1EOFRLb3EzZAowMDJmc2lnbmF0dXJlIM7SjvTXKCgyTmaaWkqm5JrVgl3jJctC-s34a8tMqtrxCg*/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCg) #.R v  , O q  %BW+AVj~}k@01register-user-20191002_181700:localhost:8800$2b$04$Yp86TgPt1/1nTs0zQNX2f.4oseXM0iAX5s0g8NNSqJukpGrk/pnwS]t# [@anon-20191002_181700-15:localhost:8800$2b$04$S8095.t9JasJHWn0IMWCAeNqj0qX8qsy18iJYgv9oGZo3g/ao/k.6]t" [@anon-20191002_181700-14:localhost:8800$2b$04$TCjHoYpoOHBSjYU/dXKGK.huuT5chfU0vHhxd0lyiTUlZ4Pyf/NCO]t! [@anon-20191002_181700-12:localhost:8800$2b$04$tnUyhVCv9EV8ObguILm3GeFzlrU9n.mCmn5A.Gu/HqnMV.0sUwCI2]t [@anon-20191002_181700-13:localhost:8800$2b$04$FN183HJ78BjkL4Rm19yVr.l8MB57GIwVMMmGPA6IRb5FaTxnB7Mwa]t [@anon-20191002_181700-11:localhost:8800$2b$04$6MbTMOrkD/8iGTkzYFpoge81SNqITZ8zpz1m1TS7g2BhhhlpJ98fO]t [@anon-20191002_181700-10:localhost:8800$2b$04$eT/rAkZ5tU50DTTwTruVXegHnowOc7nTJeF3xxoG7lNGiy0xVIFti]s Y@anon-20191002_181700-9:localhost:8800$2b$04$nTkZTLQw.M/MmuSksmDyse5wgwdK9NXUljOY9aCO4DaSYglDqXfEm]s Y@anon-20191002_181700-8:localhost:8800$2b$04$RdNo.ZARpuQMLD627NG98exnXgcN9rubTxUnr7IFZJtI80ccidE3K]s Y@anon-20191002_181700-7:localhost:8800$2b$04$CfTr2SSzmPiq8Ypwi1OTXuvwh7jAsaUZzFbgewiingug2CJjQIiie]s Y@anon-20191002_181700-6:localhost:8800$2b$04$VxcrUVh9xKbcVQSixyoJ4u5Fn22LmWHpdRGSMvGslRAlpckqmLXR.]s Y@anon-20191002_181700-5:localhost:8800$2b$04$K1wISv2ocjsh4o7dPTLLG.Rk6lcJsjFlJlniZxg/Ro5TorKEDh6Ci]s Y@anon-20191002_181700-4:localhost:8800$2b$04$kzIGXYJ2QwgBFzruGIxHyeg5ODbn8pi7ErCo96TeEt//Gm3zN1JcC]e =@spyglass:localhost:8800$2b$04$9dhHYFZA6p79gsMg0da4fukJCdJCZPtV4pLkVB0RsteJCu0PFQXA.]d ;@02login:localhost:8800$2b$04$3fiNXYbSoO9KKuKTAn1P4ev9RQ7q5XtYJq8F88DwYyYNgM/gnZDVu]t [@anon-20191002_181700-3a:localhost:8800$2b$04$JqkKJhaRgtAIdaFQy9gdrujIe6mrCaz.8hQ0F.uVti1.w1C5ks7IK]s Y @anon-20191002_181700-2:localhost:8800$2b$04$FuDZ9lkb97DR4re0gj5hfOzacQfWT9X.Vt8ta2Y5ilN/dWiQ.yvMC]s Y@anon-20191002_181700-1:localhost:8800$2b$04$YYOknz2Aa82KiBIWTdvTEuceaL8BrafRPuc33580iKm5fyUeSI0Rq]l K@chrtestuser-39-:localhost:8800$2b$04$9ma0ulqgEnLrDpgyB8tcVOCkjK7.TdEnuF6OwQ1vQdM8Ap6sjkTx6]l K@chrtestuser-10-:localhost:8800$2b$04$OIvxhEv.2Wvq/vnTfq.dpe9xcqWeqQlidSEeSE0HBbLd0meTj59Mq]m M@chrtestuser-233-:localhost:8800$2b$04$7NI1J8iDLpvU6.qZ1pVmeeQ9DEp6KPeIqqmnz36/A1FWuz7bXyv5K]m M@chrtestuser-163-:localhost:8800$2b$04$7hDdVVqPd5RsvLIsySD8U.8K.smF6zBc6Md00dB/65/JJ6NU9MngW]m M@chrtestuser-125-:localhost:8800$2b$04$.gDopZnZ6sP9bjKzBNFgY./QfMdTyPnKXBpp2vaPpAVLpLaYAbQTu]m M@chrtestuser-124-:localhost:8800$2b$04$NB0ywjloEFYcQsb8WGLNQ.7Lim1puyBghb8r6UoYzsKsNZ4eoWXTm]m M@chrtestuser-123-:localhost:8800$2b$04$j6BLx0IQJaXFl0Y0z0JyqOHgC1s.elOVhY3EbwxvSmBqZfrAZv8g2]l K@chrtestuser-93-:localhost:8800$2b$04$ldRKwu.RnQGqtu/O0kHSd.N6HIGFUbBkV0RSjuBhvOULX43Th834.]l K@chrtestuser-91-:localhost:8800$2b$04$DOJrOVwbgAV2PRw1e8SIGe2DQuctZS9QY1b8FkPt4T/8OBZ/0KsA.]l K@chrtestuser-64-:localhost:8800$2b$04$Whm6eh6RD2NVW9T4QUSdsOGIG21NSqDwY4ZCWYuYEy0opkCv7H786]l K@chrtestuser-92-:localhost:8800$2b$04$GCnztRoriZEc33/tbY44S.wxXnWgWJpkYb0cmykN00M5UtQjQXbe6]l K@chrtestuser-63-:localhost:8800$2b$04$oDCzznj/v/ocNEvQBgzaFeE.NmIWgr/BIkTlv8BjBSgFCX9pxSxJ2]l K@chrtestuser-58-:localhost:8800$2b$04$GquR6cpdAHon/sh9AZDszeznhP5ZpeE5bjVOyreHM1qCJyN0ZLq5G]l K@chrtestuser-34-:localhost:8800$2b$04$lFkKbfeiPq93UDLewRSgj.zylCgaf7pSJ30hg0hdT9wkRjncyoeMC]l K@chrtestuser-33-:localhost:8800$2b$04$3sFdjE2uexhKLCduR9gLo.7r.Dx3ePDRNFLJJ32hZUEmNUavCUdpW]g A@mycooluser:localhost:8800$2b$04$/iTGMZKj2p940f9PzsmLm.IG65Onskbxt8cFzF1OUzmfl2miYUHsy]g A@user-upper:localhost:8800$2b$04$VH52uevdMNCZIBncGaHfWOfURv9z8N3TxOIZggIxNNaX1I9aniSqa] "( < P d x  *>Rfz.BV)tE [@anon-20191002_181700-48:localhost:8800$2b$04$RIFa4hVp1ovZetNNyEFVXO4hjLIMlHgo0Z6sY8Cupo1UVXXr4iDwy]J+D C@cas_user=21:localhost:8800]JtC [@anon-20191002_181700-47:localhost:8800$2b$04$w1wpDxwp5Qst4cfjpka3FOGN0EEoU12v2DZQ5fe15K8BNlO6JevdK]ItB [@anon-20191002_181700-46:localhost:8800$2b$04$0BgUqv6UH.3dklXfj1TkX.G735R6YH0jMwbUOX33SQfMc.eXLlvya]ItA [@anon-20191002_181700-45:localhost:8800$2b$04$JK4nltUzFH7HTk95IOMTMeezk1ww034FoSMzwODw6HJaxB/ZKo5z6]It@ [@anon-20191002_181700-44:localhost:8800$2b$04$3W8aCJhb5b6Dh.5MoVrSe.fYUjySTjIxif9CoPlgprcF8VLpbMVCm]Ht? [@anon-20191002_181700-43:localhost:8800$2b$04$Q1YSqFf266ln0QBnVlX9tO9CwPRAQ5jU48vWxcOojyBColAzyI7sK]H^> /@0:localhost:8800$2b$04$atjPbdU.f7vIlyYlCIdl4OaV3OCm9qgXg/d.0FfnYmWBecZ5qJxSa]Gt= [@anon-20191002_181700-41:localhost:8800$2b$04$C3QzcdpBLQtCuUW1A88eGe.KMZOzyd1zzO86Nk9ULsIOdY.J6uXpu]Gt< [@anon-20191002_181700-40:localhost:8800$2b$04$iSKOnVNKfzaKEhs6Ig1/tOwy2KI.iWlfdQhfkc7PKI6ivajGwp5kK]Ft; [@anon-20191002_181700-39:localhost:8800$2b$04$jFJ.4vf.vUBRjGCnLRknL.qCljLPE9yOBqHtXPvLNC0JFzELMuW32]Bt: [@anon-20191002_181700-38:localhost:8800$2b$04$W0XgNSpp4qVjvuUyAA4tUeg5zMQJu2gOpKX3rhGtvQfVWfhvR5mXq]>t9 [@anon-20191002_181700-37:localhost:8800$2b$04$NaDGWiGlNlYB1uAa0jOQ3ONQg1Kjh0vJOJ5VSNNL46iavX7YjBcxm]8t8 [@anon-20191002_181700-36:localhost:8800$2b$04$7veyAf0H8Uz9j1G4ZFswv.xEpq4KtZrZOZRE2J8ezWIqG2nz6f7Dq]4t7 [@anon-20191002_181700-35:localhost:8800$2b$04$IKat3A20ReGz0yD73mfIxeyYomeAup0QtsAFXBwCZikVUu5vb3h5i]0t6 [@anon-20191002_181700-34:localhost:8800$2b$04$FvxeiOaY3.YPxl8sM0PO6u.9nnx4IYNMHGWPHRAzpJY6jUHs47sW6]+t5 [@anon-20191002_181700-33:localhost:8800$2b$04$r4CWdborFhjxdDRkbCKxvuIq0ZQrKryvhS2T/4cePrPewrI5cne1a]'t4 [@anon-20191002_181700-32:localhost:8800$2b$04$PN2E4wBase945.8tvL8.Eu94aNWqTRvOIniRSeFB5IxPE.Y6y.nwq]#t3 [@anon-20191002_181700-31:localhost:8800$2b$04$TGPLCdB/.Hzr82DERi9tCeuGuFaMlPVrj3WHLrHGHGJaJic8iZJZa]t2 [@anon-20191002_181700-30:localhost:8800$2b$04$k6wbtua775uLq8zZzCWmEeX8C359QPJ/hn8wPTsF2Aatl08QJJe5a]t1 [@anon-20191002_181700-29:localhost:8800$2b$04$FwfskMzrd.MD2RQvtaAQLeegjaX9qWiVwCjNGXvwJZSXD.Of5PBi2]t0 [@anon-20191002_181700-28:localhost:8800$2b$04$9pel6kypFF8Dl5mvLAGK5.1yGsOIVRX0yx/7GLFj8H5l5RjRFp8Fm]t/ [@anon-20191002_181700-27:localhost:8800$2b$04$HPPuuuroyuAt7v.hIXeAuuVYKJCS7XBlXoJ2P36V/MEYMC122NedC]t. [@anon-20191002_181700-26:localhost:8800$2b$04$HgzZouH03QPshWp14yksSO/BPmIZCEBcQmEGQ4dEFDQlKfbDe0wg2]t- [@anon-20191002_181700-25:localhost:8800$2b$04$QC4n7ZJNj2u59XTpl8qRDOivUkgY.8zbB5XFO4NPovptezvcuZtge]t, [@anon-20191002_181700-24:localhost:8800$2b$04$tA5nG1AEh8C9uQokAirXhuJ7fEKoh0x6AVaawKw7x70eQtwfZ9YB6]t+ [@anon-20191002_181700-23:localhost:8800$2b$04$86QXELFV676B5b5VTHdvEu2BAvob4HLmXhTTam2rM/bI1iOH77WKC]t* [@anon-20191002_181700-22:localhost:8800$2b$04$1kZpf1N9onRJtzHc0IvdlegpntN.VjWjXl/rZ4CCl0znIsrrn9rcy]t) [@anon-20191002_181700-21:localhost:8800$2b$04$zNT5bDCCV/OaCyhJ2nKl8uUO32ZhMfkH7yys40T4p95IyyqK.L.SC] t( [@anon-20191002_181700-20:localhost:8800$2b$04$.5fNQWZQ6qQKRg0y9xYBA.44iWazXCywIqPtP0WgbfciyLuW4zVCi]t' [@anon-20191002_181700-19:localhost:8800$2b$04$fCN7coU7NKee7NPyy8qthOUukztfw0HGlnaef.ldQN.43rad9P9LO]t& [@anon-20191002_181700-18:localhost:8800$2b$04$.y5bpxkyP180LIbJZrQAu.xY/MTqt/Ymgb.moLF6nbGUE/CQzqFj2]t% [@anon-20191002_181700-17:localhost:8800$2b$04$xjy.UA6OAvnZ9LQOUb/ot.iy7/txUvJIKhRt34JdluctCqEnvy2cq]t$ [@anon-20191002_181700-16:localhost:8800$2b$04$bC2LzDqeZEpsTyfZ7LTUcu7IAHWRjfxVM7zBVs5jJJnZz6xVhfDim]   v Z> [a!E@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCgGGVPWYJLFA127.0.0.1Perl + Net::Async::HTTP/0.44m? [a%E@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWSN2WXVlPTMqcXUyMHloTwowMDJmc2lnbmF0dXJlIElgAWxLGP37kzHWr9kr-ryrZrd7J-ty0eNd8-BjBJODCglogin_device127.0.0.1Perl + Net::Async::HTTP/0.44m݃[a!E@anon-20191002_181700-10:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2CgFPVSQGRDQG127.0.0.1Perl + Net::Async::HTTP/0.44m Y]!E@anon-20191002_181700-9:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsKMGUQLDGKRQ127.0.0.1Perl + Net::Async::HTTP/0.44mk Y]!E@anon-20191002_181700-8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYKEBQTKFPJOD127.0.0.1Perl + Net::Async::HTTP/0.44m}( Y]!E@anon-20191002_181700-7:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgKFWKDVNUPWX127.0.0.1Perl + Net::Async::HTTP/0.44my Y]!E@anon-20191002_181700-6:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAKYDTVVUXGOW127.0.0.1Perl + Net::Async::HTTP/0.44mx1 Y]!E@anon-20191002_181700-5:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwKWYYDRNGEZS127.0.0.1Perl + Net::Async::HTTP/0.44mua Y]!E@anon-20191002_181700-4:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcKOXDBJBCTVL127.0.0.1Perl + Net::Async::HTTP/0.44ms-k=9!E@spyglass:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCgBUNJZHLDRS127.0.0.1Perl + Net::Async::HTTP/0.44mp Vo M + xV[a!E@anon-20191002_181700-25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCgIOMJWWQXRT127.0.0.1Perl + Net::Async::HTTP/0.44mm[a!E@anon-20191002_181700-24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCgMRUESCORNA127.0.0.1Perl + Net::Async::HTTP/0.44miŃ[a!E@anon-20191002_181700-22:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXkZ-UCo4LWgwa0smME5ZQAowMDJmc2lnbmF0dXJlICAVkALm609BDF9Y2vumo9-DSlIRHPOSzCA6jqF4sRmuCgHVNUPXSZHY127.0.0.1Perl + Net::Async::HTTP/0.44md[a!E@anon-20191002_181700-23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCgSNOHQGNOOL127.0.0.1Perl + Net::Async::HTTP/0.44mS[a!E@anon-20191002_181700-21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCgKHJDEDTDXI127.0.0.1Perl + Net::Async::HTTP/0.44m?z[a!E@anon-20191002_181700-20:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNFKnFwXmJJMix3UDNuWQowMDJmc2lnbmF0dXJlIDfDhxgG6hysISJ-WB62IY0t37xYWbLaH-RvW_dJ43CrCgMIHVANNPDD127.0.0.1Perl + Net::Async::HTTP/0.44m[[a!E@anon-20191002_181700-16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3CgOZMNCFRFTF127.0.0.1Perl + Net::Async::HTTP/0.44mƃ [a!E@anon-20191002_181700-15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCgKLXIHUSAOG127.0.0.1Perl + Net::Async::HTTP/0.44m [a!E@anon-20191002_181700-14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCgUAGQKBVBOW127.0.0.1Perl + Net::Async::HTTP/0.44mo [a!E@anon-20191002_181700-12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCgATMHTVRQSQ127.0.0.1Perl + Net::Async::HTTP/0.44m O b  u&9OM1a@21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLkJrQm5VakZGZGhsNU5PMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlICqXq1qwtskmVrJQMMDVdeu1qG_0zXa2l4F6RetlyoxKCg127.0.0.1M1a@20:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZlAqPSxXKn5pXnk0OkBHTwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIL2BeshVfhts8YQdae9DJ7UFQnVNTRFffV076i9L-S-fCg127.0.0.1J/]@1:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBILWZqUE89REFCbywjQVVDCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUg8ZO9wx6wxEiQt9dWUnClqLyWpIT77ZqZu670k0ka4MQK127.0.0.1M1a@19:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSW9DYTd2SmxyOXZBN2ErRwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFFXI1T8uka05JtyfHQJjVTGEQH2CNCA7MRgOMOM3XwICg127.0.0.1M1a@18:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNWs7aXNYaCwmMmJJXmpNYQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIHmvdGjZx9PDEzLghbbZRbAAXV1IrS8sTsspJDM2mfFwCg127.0.0.1M1a@17:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gVmxQPTBXLEQ1ck55a1NRVAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlID4TV4jDe8XzM8I1F_eV7pQOZB6XTMr8qJwbCeCcTjVjCg127.0.0.1M1a@16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRktoSStZMWlBQUR2bXA0YQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIGkMsfrX_CDXuP0Xf33Iks0_9DU-E_vtEQC4bgdLzvYJCg127.0.0.1M1a@15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gT2g9az0zZExCPURJdHkyagowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIH2hVUWzUTzg0iqiItdcOb0l4V8wVp-qZPorOSUIDDIwCg127.0.0.1M1a@14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZSZFNGErMHFfdXhzcCtzQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlINrCwOwQyMEAprIa-T8zRFMD9PdqAvsYHDRxJuawVJrKCg127.0.0.1M1a@13:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO3Y0Q29GWE5YeHR-OnRIcQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEx9qDT1ndFqTfeFHMHmfj2Bk8E4hOUXORN-m3pDpxhZCg127.0.0.1M1a@12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWFUOm9kWmNsaVVebUA3VAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDrrNTqIEv5XDg0_ZAJPV_qQ87WBt8jea6wyg-AODVijCg127.0.0.1M1a@11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRSxDaUN4SGZIRTQjWUxJbAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDRs-ffUemCTWinkCFDGYbanMbjSiUB8-Nm-RndeIcAtCg127.0.0.1  b  u&<OOM1a@32:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQkxsZ2xiN01rUmZUQjBVbgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIHKzSYjEA-zB0wRYasOxymogLRj9wnPYe2tZGJZRi1JVCg127.0.0.1̂M1a@31:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gV1RaZW8teFo3TXQyLm5eYwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBcgjCOdXWZjvWca0bZSwB6G6iOikXTUAnwMBj71C0TXCg127.0.0.1ʂM1a@30:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSVJoM1JodzR0aDBhRFNQMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC79MAQDFp0t3idDH3_RY6Fsr_JvLoo9JC8ioIEUQJ2-Cg127.0.0.1ȂJ/]@2:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBoWWlYb2h1R2kqN1crQjUxCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgHpgk2vQ0DD-k7UWviF0jEnMlkDFqd-Xn_UAauehqWo8K127.0.0.1M1a@29:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGRWeDBtMTRaWVdaMzhHdgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFYE829LgFsLU0wxq-mP25iUQ47uGCA9V2NnR9yK12LuCg127.0.0.1ƂM1a@28:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdmdKOkE7Rmg3NUN5MTdZQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIOj15xwG3phYCeKNDvJ3DIY52LVnQeTh3PXqDiUeUfrYCg127.0.0.1ĂM1a@27:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdy5-LiYxUDBMcSs4aUtEPQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBgisZ0dzzpY_I4SEha4cg4fLFhHOqfVh1xtFZMsv2KPCg127.0.0.1‚M1a@26:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNlVzLT1hJlpCOGRnXj1HNgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIIID_n1sZN-dByVrhmD9i10e8C-geZxqIJRIyJ2gBXSzCg127.0.0.1M1a@25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXBeVl44LUc7VHc7VnVCLQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC8MWi9BCBjMe8Iol7_FlZLzWel11x7K3eungbpV0kByCg127.0.0.1M1a@24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMSZOay5naWRnbkpGSm5ZbwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIKBWQyWY5hgZBnE-se3uKiVfly8hRLpUhBLZqOOEW7seCg127.0.0.1M1a@23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbV96RjtHb2t3YTlYLDcjYgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIElRnIis52jvPcLdLVPjrmWcDWODcOj4buElXA8jMUolCg127.0.0.1   @eQY#$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 5}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU"], "type": "m.room.canonical_alias", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"alias": "#30room-create:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040289498, "hashes": {"sha256": "QiQyIKHxd/d80Lje6DjPkev/2YM+8ehMHXOJob2fur4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bVTj/5SXk2hS/TQEK+aHze5+QljKkkS50J46hG8/J6nM54t3IvABUlKFQKQ920wkHiS0tpv1UiTuHP0LCuImCQ"}}, "unsigned": {"age_ts": 1570040289498}}eeQY_$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 4}{"auth_events": ["$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "type": "m.room.power_levels", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040288907, "hashes": {"sha256": "UgQgaX1JraFysKpDl1S2w27tdEMf7QQ8lLZT+jLUF8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kTuok8e/AHqIy2v6PViOVwxG/DJnkTHhXi3tzkFdYViWLSLtz8O2btvPMfl+ptISxmNV4t6dSpXyDPkYl0sDCg"}}, "unsigned": {"age_ts": 1570040288907}}oeQYs$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 3}{"auth_events": ["$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A"], "prev_events": ["$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A"], "type": "m.room.member", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040288444, "hashes": {"sha256": "5Qa2uVz/DqKkxcLk4cRu8Li7OGODfiuSIOQPiCmeeBQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Uoj8RnX5WDVr6T+jIavm94zLcLPdu6y2PrhOaQXhBX8fib3kz8hXIvWmfiOhfoodI4zn0npUvXltJ+e2zlgfBQ"}}, "unsigned": {"age_ts": 1570040288444}}ceQY[$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 2}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040287847, "hashes": {"sha256": "Bg20sM2tVBSKhF7iUO/0pC7jlMjrr8xv/pdNHw9DPvs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T8JGu++WjglN0qCqOOa4ITgBS1jSaJZlMZt84ftm8/qdQZjv01bzwdhWhbBnPxxEibv/56u99wezNnY3feS4Ag"}}, "unsigned": {"age_ts": 1570040287847}}  wceQY[$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 9}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040292438, "hashes": {"sha256": "T58Ez/ibHYRjUo7ThV6vV0xzW89XhGM4aK2+kNjECqY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uR0IvAyuNpMUkYj65+d73jSqGV6WzgDOCno/KZXMdfU7B5Q90C4PozKkX3UONuTqNYquw/Uw9ike6FkwHE3QCA"}}, "unsigned": {"age_ts": 1570040292438}}eQY7$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 8}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g"], "type": "m.room.aliases", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"aliases": ["#30room-create:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040291666, "hashes": {"sha256": "cx8dysc9pSQ+Y0uE1X1SDBblD+B0u4BNOiJY0lbWl6w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D14+sH6Az40KGuCP10tG+uRiRj2MG8dp7VA+t6+DCAw/+nnuxXdgqheID8qMODngjw60EFLQOgnFCH0qHn/KBg"}}, "unsigned": {"age_ts": 1570040291666}}eQY$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 7}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc"], "type": "m.room.history_visibility", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040290823, "hashes": {"sha256": "n9CGYstsLIMNYHJbxQaam7DKoYGIhsBW7jg8uKtCuZ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pJPRvpRC3+k8JxmgjhFW1EOuXpeJmgtMgBvgKbIhjr9arVx//pn8N7xZcqAprQ5VQlV1lHCoE+4UD2hk2OfuDQ"}}, "unsigned": {"age_ts": 1570040290823}}oeQYs$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 6}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY"], "type": "m.room.join_rules", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040290190, "hashes": {"sha256": "gcaDwGyEL3c1QjN2PXDMGIVBg+dGO71UJSQxYh0Bhq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vrwSRezXDxtKYZaPJNwBGSB7fmiBgTBHH1Vmam002cJgUVVO+MFfMMTnh+0bDH9Hi6vY3ifPnf7K6vzvDZ+VDw"}}, "unsigned": {"age_ts": 1570040290190}} - $- eQ[$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 13}{"auth_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA", "$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs"], "type": "m.room.history_visibility", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040294591, "hashes": {"sha256": "u2zwnEA3KLHUB+1fpJerRVuif91fZ2534ZBxKAbHjrA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jz+wQGmxk/H/iOFmF/1AMe7NuWhSxOisdEP17ZFHlVeyseUFRM9S2k4Q8k0K3ZcmPuxvRvHBhlAmWMyOP3YXCg"}}, "unsigned": {"age_ts": 1570040294591}}p eQ[s$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 12}{"auth_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA", "$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA"], "type": "m.room.join_rules", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040293989, "hashes": {"sha256": "1rH9SN1yo/bvstFDrrCC+hrfStPlYprY6M1QgJ4/MtE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WpF9MstyePa2YUML5HfkTRpz9vuYjJR/4+eDPMwWEfkxrwqTxxOfVd9YYGEbgzNT3Iq/hDA1Z23RmpYN0eSUDA"}}, "unsigned": {"age_ts": 1570040293989}}f eQ[_$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 11}{"auth_events": ["$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "type": "m.room.power_levels", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040293418, "hashes": {"sha256": "FWw/fR3a7u3DfIt3EQHwZ+I57Jm4NWpP2Mox5UxALnE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k6L9th91HTtyhRWoqQyKjjdympV/suvub+QPpaWhABDNT+iBYjgNuv1xnSDK9xs84+2WBp0uANw+FBAZwrbQDg"}}, "unsigned": {"age_ts": 1570040293418}}p eQ[s$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 10}{"auth_events": ["$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU"], "prev_events": ["$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU"], "type": "m.room.member", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040293012, "hashes": {"sha256": "d5rruh10ePp5+NsY/NVpLxG5DtzeaGzTnfcoy2Hzjns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p/dB3VVLxAnW8FjtvsyHNrS2hhXtc/efAmco06J3NATgVj60hJkgPiHmnMye2zf1bEySPZ+CieosTLe1Eo+QCQ"}}, "unsigned": {"age_ts": 1570040293012}}  ,feQ[_$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 17}{"auth_events": ["$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "type": "m.room.power_levels", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040297774, "hashes": {"sha256": "4V6dsASCXrgikAO0SNskUQu2ipyBBoom8y1N1hTCsGE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lrJ7LRYGac2dxOO1HqTCJue0u5f2LzPUl+Z/TgeVXIfTsPR9bx08WCoHUS/2nXhTmEnOYQK7xtUic9K+ZERrBg"}}, "unsigned": {"age_ts": 1570040297774}}peQ[s$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 16}{"auth_events": ["$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0"], "prev_events": ["$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0"], "type": "m.room.member", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040297295, "hashes": {"sha256": "iJ57K9mDqkneWMzoVBVaEJ6d17pqGMoBBnO/t2XE4k8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7mO9qhGBKyyccT2plMYrhQBSBvpYJ22zBXUH18M/Z2flCDXE+fN4IrwVCT6v8ljnfoLHUGA/+9rWhKVVBV0SDw"}}, "unsigned": {"age_ts": 1570040297295}}deQ[[$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 15}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040296688, "hashes": {"sha256": "yhjmJiYJBY9TnmPuCZchHe7xyJ3gsrWUoqqnV3284G0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yzskE5jqyk0iKUHILZdU+NMvmDz9C4u6olp5iZYzPwnXsrnEEP83ei8IDYIj8zHHw/aB/6Zp1gNJSm4wE+H+CQ"}}, "unsigned": {"age_ts": 1570040296688}}w eQ[$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 14}{"auth_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA", "$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU"], "type": "m.room.guest_access", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040295441, "hashes": {"sha256": "Jgb2WE3SGq+MLRJmtNIObLcZQqZOkdePwHvwBzh5XyE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K5u2NaQ6KfiGcWSdCzgSYpvcKWu4Z5xMoLlLL2WBo0dqlcCfL7/SnnHcGTAiF26Cb+rWvvqmqvgBjx1EG2ajDA"}}, "unsigned": {"age_ts": 1570040295441}}  2 d/ad7[!a:@anon-20191002_181700-27:localhost:8800TWNKNEABLTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCgd6[!a9@anon-20191002_181700-26:localhost:8800UBEJKIDKFLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-Cgd5[!a8@anon-20191002_181700-25:localhost:8800IOMJWWQXRTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCgd4[!a7@anon-20191002_181700-24:localhost:8800MRUESCORNAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCgd3[!a6@anon-20191002_181700-23:localhost:8800SNOHQGNOOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCgd2[!a5@anon-20191002_181700-22:localhost:8800HVNUPXSZHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXkZ-UCo4LWgwa0smME5ZQAowMDJmc2lnbmF0dXJlICAVkALm609BDF9Y2vumo9-DSlIRHPOSzCA6jqF4sRmuCgd1[!a4@anon-20191002_181700-21:localhost:8800KHJDEDTDXIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCgd0[!a3@anon-20191002_181700-20:localhost:8800MIHVANNPDDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNFKnFwXmJJMix3UDNuWQowMDJmc2lnbmF0dXJlIDfDhxgG6hysISJ-WB62IY0t37xYWbLaH-RvW_dJ43CrCgd/[!a2@anon-20191002_181700-19:localhost:8800YBVCGWDMTLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbE86LjU5K0ImSks7YUVtOgowMDJmc2lnbmF0dXJlIKirgGiuZLjz6h_A3nQlvdC5Ef5akvhwtYCDB0r4aRZ1Cgd.[!a1@anon-20191002_181700-18:localhost:8800TRFQQDTHPKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTkwwRzk9VyZOYmt3KnE5LgowMDJmc2lnbmF0dXJlIHrNx3JvH7A75a7LMXd1PJkFMZ0mKX00UA0dYcN1YHZyCgd-[!a0@anon-20191002_181700-17:localhost:8800VRXIORHZEXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYnNwUXFWLS12dzR-aEJlNQowMDJmc2lnbmF0dXJlIIvFYu5qn5ABIoXhtIWNkEwLMydgKrj6CF0IHDki-iamCg  weQ[$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 20}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c"], "type": "m.room.guest_access", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040299824, "hashes": {"sha256": "62B/FGRscxlXt36bgx+7QkuhXTyz4PeT152FH/sBLrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "usJY910dWVk9EmYreAqGc3xRebhUoh/DMewPd1ktRMAMbE6iBr/efizTPV+QvhOkuJ9JIQuzqoibSgvbEsEMAQ"}}, "unsigned": {"age_ts": 1570040299824}}eQ[$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 19}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY"], "type": "m.room.history_visibility", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040299215, "hashes": {"sha256": "w4WP1rIcNauqqUm0XUxT6MtZ+RonkXOCPt1M97c7pvE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m74TRH3fs1Sb3LPVyEz4rQL6YBNt+scwYANJSJTDTfQR5TYWONxhz/xWkj4mhYlhLtlZ3FgXKJo45/ylnWorDA"}}, "unsigned": {"age_ts": 1570040299215}}peQ[s$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 18}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90"], "type": "m.room.join_rules", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040298624, "hashes": {"sha256": "KlPMZHuirJYCjQOqvtpc+/yLnyjVDZQ0WsoYo8YALzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BGU282NFxysUq49vnW/12fn8PlOFj5nZvupp2KhoKjmLjNt1gZnq2oCgyay9JL7CsrXJfp3RYyCPgaQ97Wl7AQ"}}, "unsigned": {"age_ts": 1570040298624}}  ~eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800  ~>eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800~=eeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~<eeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~;eeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800~:eeQ$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~9eeQ$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~8eeQ$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~7eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~6eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~5eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800~4eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~3eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~2eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800~1eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~0eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~/eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800~.eeQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~-eeQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~,eeQ$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~+eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~*eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800~)eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~(eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~'eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~&eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~%eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~$eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~#eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~"eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~!eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~ eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800  rpeQ[s$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 23}{"auth_events": ["$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0"], "prev_events": ["$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0"], "type": "m.room.member", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040302112, "hashes": {"sha256": "EopQCd5Pxy+DcXUDOQq4KR+KcRtsxUTDZQhujz4ghIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jBBEdVVQEWLBaPPyStXgUTs9rG/J31icoTJZyWldRCAQOsHT0SjBgwR8TYDGYc/HeDnvJ5gb6RFkdtniZzNpAA"}}, "unsigned": {"age_ts": 1570040302112}}deQ[[$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 22}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040301447, "hashes": {"sha256": "QVtbW2ZP1aZ4iXtvQURFyKKFnw7WT+m6Rw4mr0KiHEQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6l7WnCKKLGwxzXV/jVKCWh3X3I9MU0Cxp08EagrjJqApvMI/ZY43GlLWConmzEJU/j7jc1OYk+RkbIjcotgUCw"}}, "unsigned": {"age_ts": 1570040301447}} eQ[)$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 21}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs"], "type": "m.room.member", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-17", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-17:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040300507, "hashes": {"sha256": "cWPOUSa6Z+BYMNDOxJQ4pL6nvCEPwO3dfyA6ardcY5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5uzx5H2AH8UduTPUQW4natY3vWxFCf39ntPuqqD3a2LFBFPHgBqMh+3zJhSwufDiw9cCgEfsZd2C39uGdFSkBg"}}, "unsigned": {"age_ts": 1570040300507, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-16:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "sender": "@anon-20191002_181700-16:localhost:8800"}]}} 5 $5heQ[c$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 27}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ"], "type": "m.room.name", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"name": "Test Room"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040304635, "hashes": {"sha256": "0ykxiwmLpJzGhD6istgoh40cjC7XPwiyP/5IbzItWp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HmJVvNcO1wcjgECx39Y9bUnlaMyO2CK+xgupQn653b6LNYAlAMXNuIBXrvfhdcsg1dUwEgBvU2wgPcksVbfBCw"}}, "unsigned": {"age_ts": 1570040304635}}eQ[$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 26}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc"], "type": "m.room.history_visibility", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040303766, "hashes": {"sha256": "3c1qGnolJmPsEQYTp5Y+3OdC5rYDJaML52Rytxfk0xs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vDmrY+H8R3FF12nqnM+6bfFAv25MiCpt0l34yC8LqXkk1OA0t20hZWYjvpE+0/ZjxRYZ0cq2XPjkOGSnZtOxBA"}}, "unsigned": {"age_ts": 1570040303766}}peQ[s$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 25}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU"], "type": "m.room.join_rules", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040303167, "hashes": {"sha256": "EIV1J7xsy2LUqgtVI1Qng5r3ThZNbXDWzYqoqnEVwek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dtqeIB55fbJQvbJ2s/7ynndh1af1KthfaJFTyZfwaR+nLoQnrY7E+M7E8C/Bpf0YfNbhIa7DCJ9FAsCXSRgPBg"}}, "unsigned": {"age_ts": 1570040303167}}feQ[_$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 24}{"auth_events": ["$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "type": "m.room.power_levels", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040302592, "hashes": {"sha256": "wLplI4sLoJp1fLFsBNyZ7zWJ4Si906W4Xch6BEGDJzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r4aXu1MHn8vZ1AIGlKzCh/R+vfApcAinuyizh6Ser89fAThKm2QP/kzC9iiBVLVQw9dvA7Pza2/o9x5Q11r9BA"}}, "unsigned": {"age_ts": 1570040302592}} bb&N:` k  t 2 6Ll3)1 E $28:localhost:42455m.room.message!6:localhost:42455 mm6@__ANON__-20:localhost:42455l3)1 E $25:localhost:42455m.room.message!6:localhost:42455 mm1@__ANON__-20:localhost:42455l3)1 E$22:localhost:42455m.room.message!6:localhost:42455mm.-@__ANON__-20:localhost:42455l3)1 E$21:localhost:42455m.room.message!6:localhost:42455mm,u@__ANON__-20:localhost:42455l3)1 E$20:localhost:42455m.room.message!6:localhost:42455mm+O@__ANON__-20:localhost:42455l3)1 E$19:localhost:42455m.room.message!6:localhost:42455mm*@__ANON__-20:localhost:42455l3)1 E$24:localhost:42455m.room.message!6:localhost:42455mm0@__ANON__-20:localhost:42455l3)1 E$23:localhost:42455m.room.message!6:localhost:42455mm/b@__ANON__-20:localhost:42455l3)1 E $27:localhost:42455m.room.message!6:localhost:42455 mm4@__ANON__-20:localhost:42455l3)1 E $26:localhost:42455m.room.message!6:localhost:42455 mm3@__ANON__-20:localhost:42455#e/Q [$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYm.room.join_rules!plcvCHNbjCkNMMxnTk:localhost:8800mm4@anon-20191002_181700-16:localhost:8800%e3Q [$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90m.room.power_levels!plcvCHNbjCkNMMxnTk:localhost:8800m.m^@anon-20191002_181700-16:localhost:8800e'Q [$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8m.room.member!plcvCHNbjCkNMMxnTk:localhost:8800mOm@anon-20191002_181700-16:localhost:8800 e'Q  [$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0m.room.create!plcvCHNbjCkNMMxnTk:localhost:8800mmV@anon-20191002_181700-16:localhost:8800%e3Q [$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQm.room.guest_access!QZhNrNpwObZGJZpdAG:localhost:8800mm@anon-20191002_181700-16:localhost:8800+ e?Q [$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUm.room.history_visibility!QZhNrNpwObZGJZpdAG:localhost:8800mmW@anon-20191002_181700-16:localhost:8800# e/Q [$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxsm.room.join_rules!QZhNrNpwObZGJZpdAG:localhost:8800mem@anon-20191002_181700-16:localhost:8800% e3Q [$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkAm.room.power_levels!QZhNrNpwObZGJZpdAG:localhost:8800m*m@anon-20191002_181700-16:localhost:8800 e'Q [$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wm.room.member!QZhNrNpwObZGJZpdAG:localhost:8800mm@anon-20191002_181700-16:localhost:8800  e'Q  [$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXUm.room.create!QZhNrNpwObZGJZpdAG:localhost:8800mVm@anon-20191002_181700-16:localhost:8800 e)Q [$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0m.room.aliases!zNCItZNbpkZKuufRhC:localhost:8800mRmD@anon-20191002_181700-16:localhost:8800+e?Q [$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1gm.room.history_visibility!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800#e/Q [$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfcm.room.join_rules!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800(e9Q [$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYm.room.canonical_alias!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800%e3Q [$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdUm.room.power_levels!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800e'Q [$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAm.room.member!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800 e'Q  [$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_Am.room.create!zNCItZNbpkZKuufRhC:localhost:8800mgm@anon-20191002_181700-16:localhost:8800 MAR r ( 3 QU%e3Q [$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTsm.room.guest_access!plcvCHNbjCkNMMxnTk:localhost:8800m0m@anon-20191002_181700-16:localhost:8800+e?Q [$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4cm.room.history_visibility!plcvCHNbjCkNMMxnTk:localhost:8800mmp@anon-20191002_181700-16:localhost:8800 e'Q  [$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0m.room.create!odAvowLhHJcmkKlxFk:localhost:8800mLJm@anon-20191002_181700-16:localhost:8800#e/Q [$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApcm.room.join_rules!odAvowLhHJcmkKlxFk:localhost:8800m?m@anon-20191002_181700-16:localhost:8800%e3Q [$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntUm.room.power_levels!odAvowLhHJcmkKlxFk:localhost:8800mm@anon-20191002_181700-16:localhost:8800e'Q [$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQm.room.member!odAvowLhHJcmkKlxFk:localhost:8800m mʬ@anon-20191002_181700-16:localhost:8800e'Q [$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUm.room.member!plcvCHNbjCkNMMxnTk:localhost:8800mm<@anon-20191002_181700-16:localhost:8800+(e?Q [$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQm.room.history_visibility!loalEsWaTYwrVUNJLr:localhost:8800mEmw@anon-20191002_181700-16:localhost:8800#'e/Q [$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Ym.room.join_rules!loalEsWaTYwrVUNJLr:localhost:8800mm@anon-20191002_181700-16:localhost:8800%&e3Q [$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQm.room.power_levels!loalEsWaTYwrVUNJLr:localhost:8800m\mV@anon-20191002_181700-16:localhost:8800%e'Q [$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Ym.room.member!loalEsWaTYwrVUNJLr:localhost:8800mm@anon-20191002_181700-16:localhost:8800$ e'Q  [$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebom.room.create!loalEsWaTYwrVUNJLr:localhost:8800m'mw@anon-20191002_181700-16:localhost:8800#e#Q [$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjncm.room.test!LaLcEGFLpjdlYlYKGC:localhost:8800mm@anon-20191002_181700-16:localhost:8800"e%Q [$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEm.room.topic!LaLcEGFLpjdlYlYKGC:localhost:8800mxm@anon-20191002_181700-16:localhost:8800+!e?Q [$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0m.room.history_visibility!LaLcEGFLpjdlYlYKGC:localhost:8800mmW@anon-20191002_181700-16:localhost:8800# e/Q [$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEm.room.join_rules!LaLcEGFLpjdlYlYKGC:localhost:8800mm@anon-20191002_181700-16:localhost:8800%e3Q [$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0m.room.power_levels!LaLcEGFLpjdlYlYKGC:localhost:8800mߴm@anon-20191002_181700-16:localhost:8800e'Q [$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUm.room.member!LaLcEGFLpjdlYlYKGC:localhost:8800m-m~@anon-20191002_181700-16:localhost:8800 e'Q  [$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZIm.room.create!LaLcEGFLpjdlYlYKGC:localhost:8800mm]@anon-20191002_181700-16:localhost:8800e#Q [$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjYm.room.test!odAvowLhHJcmkKlxFk:localhost:8800mm@anon-20191002_181700-16:localhost:8800e#Q [$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iIm.room.name!odAvowLhHJcmkKlxFk:localhost:8800mmԵ@anon-20191002_181700-16:localhost:8800+e?Q [$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQm.room.history_visibility!odAvowLhHJcmkKlxFk:localhost:8800mЖmJ@anon-20191002_181700-16:localhost:8800  _feQ[_$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 31}{"auth_events": ["$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "type": "m.room.power_levels", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040307636, "hashes": {"sha256": "6lZZ7Kv6oAdHhkjA8VSA1F9fEjtTDlr4s/t0W2OriCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W1gDRtlZDH0OcfsJnKZS7wd4L4E7JQU/73JBEojwrt9Nsh/cr2pk5++iqAtNWtJsRzQoTgcKDipqHyOxMiuwBw"}}, "unsigned": {"age_ts": 1570040307636}}peQ[s$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 30}{"auth_events": ["$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI"], "prev_events": ["$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI"], "type": "m.room.member", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040307245, "hashes": {"sha256": "JWo1TN+BpliRdIWnSp9bqVbgT5qRWl5Mbbxz/mG0tgc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "to8Ald2rdrlv+oPPwmMyBz7kiOPJE17IgJpImrdvWZOTxrr6pIAAQTSmZhYIwmjWoS1MaNheWStWKAXhFTkrAg"}}, "unsigned": {"age_ts": 1570040307245}}deQ[[$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 29}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040306689, "hashes": {"sha256": "lwcdYcf8NL0gAXhIISrM8F7yUUbEMqWyyI3E1XtQ+b4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jdAFLUWqeZ4ty8g47SpFXr27y9mr25mPLCKnS4VAsQEXSj6VqHyo3JG+50LF8IxNcygiWOi5vHB8fcTaF9KPBg"}}, "unsigned": {"age_ts": 1570040306689}}DeQ[$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 28}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI"], "type": "m.room.test", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040305897, "hashes": {"sha256": "YAL1eja0IqAUUGgjSE55rnD9fnF5607TJlaWGv1thGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iSc9+8cf9LunoxG8BmCA/XM6+qPu4cra8tSJ0JBKkA12dFe9VuLcZwTLagxMSyM/2GaElTQl8umY0ca3Pq76Ag"}}, "unsigned": {"age_ts": 1570040305897}} U UD"eQ[$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 35}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE"], "type": "m.room.test", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040310418, "hashes": {"sha256": "GF360rW8tGK/jNnzf9SDQYtx7Z3/XFPglkG8y7jEbhs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5uzzSHuzEhrlugs70OfJ9nIrAr8otzyvPb96Cf2RoxHmsXTMTYdOB8wvNCRNYYEhNK/WaOKKIduv79Q4V2sPBA"}}, "unsigned": {"age_ts": 1570040310418}}j!eQ[g$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 34}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0"], "type": "m.room.topic", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"topic": "Test Room"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040309624, "hashes": {"sha256": "kCULAt9RZlfZvFzQdcl0NIOeaWJoVHMUxh2mcCCSPwQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B5yH53AVL2IDQZRjHpMalVTrJp3LUGTdx4mlP5uwFW9lrLKKqpjwABgNEhQQhogRQaBKG0pited+3jpsMnOdCQ"}}, "unsigned": {"age_ts": 1570040309624}} eQ[$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 33}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE"], "type": "m.room.history_visibility", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040308757, "hashes": {"sha256": "YDrbr4IEGq3C4E+yeg9xtmvoNvivx1GlWIzKVYOOZi0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rm+naPrwFg4d25QUYZyGwoK+mIIo3CZ20MAU+78VDEDEqgXcDZVdxfghRGfTrerzsWHB5OycjNHAAsnczFyMCw"}}, "unsigned": {"age_ts": 1570040308757}}peQ[s$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 32}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0"], "type": "m.room.join_rules", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040308216, "hashes": {"sha256": "vWzSXvTN6c8M8A0E27MoRK0P59a8VtGGZd/pcUT3Rro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jhgH4CUCRvGJhjbA0JPTCKKHPoD182EADjcRA5lkBjAbvomFT3XUkjhJ0+6dMty9Jt8hqZIA/XFNtWyIVueoBA"}}, "unsigned": {"age_ts": 1570040308216}} !X 0`(XXXXXX~_eeQ$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800~^eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800~]eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800~\eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800~[eeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800~ZeeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800~YeeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800~XeeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800~WeeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800~VeeQ$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800fUMMQ$15700403164ksjyG:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fTMMQ$15700403164ksjyG:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fSMMQ$15700403164ksjyG:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fRMMQ$15700403163gHYKC:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fQMMQ$15700403163gHYKC:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fPMMQ$15700403163gHYKC:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fOMMQ$15700403152dWVZA:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fNMMQ$15700403152dWVZA:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fMMMQ$15700403151blJmZ:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800~LeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800~KeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~JeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800~IeeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800~HeeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~GeeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800~FeeQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800~EeeQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~DeeQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~CeeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~BeeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~AeeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800~@eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~?eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800   =p&eQ[s$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 39}{"auth_events": ["$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ", "$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo", "$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"], "prev_events": ["$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ"], "type": "m.room.join_rules", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040312534, "hashes": {"sha256": "BcpDXjxw04FYxkanMR3OD5Ts/3CQj376/VZ1CmLUvEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hn2AsDUCaxS8U8fB6GGpcUJcFB20e4Vs55vclsJ67UMu9nBXzTlaqXSCUPmzTwbCqLHY3lpXDR0Ijp/ntdwDBg"}}, "unsigned": {"age_ts": 1570040312534}}f%eQ[_$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 38}{"auth_events": ["$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo", "$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"], "prev_events": ["$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"], "type": "m.room.power_levels", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040311900, "hashes": {"sha256": "ug7+TcZ6782Pseszkp2zxyIrde8wocqrHb1BPWvbfeo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hqC9WOoivaxaahGfYmQv05atS8eV+bxUrqa3/N1s/wpiLyBwce35gsMbRGDyLgIH4zCRvl2kMrgjI8fzesGlCw"}}, "unsigned": {"age_ts": 1570040311900}}p$eQ[s$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 37}{"auth_events": ["$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo"], "prev_events": ["$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo"], "type": "m.room.member", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040311480, "hashes": {"sha256": "y5PexWzxOdCpWOsOGJHH5VfHmvprkyMHaAUuOTLcalE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "trC9Y0fbo0Aq9tLqNYluWpBjgVHSlNokk2AUW08HfB/jnYuJLq1fBtjsOVgbeNO+A39gZCYbPKKPbQyACfC/Cw"}}, "unsigned": {"age_ts": 1570040311480}}d#eQ[[$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 36}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040310823, "hashes": {"sha256": "/EHIJYflUOgaoNYXGQ4YP4WPMYaBH3c8ze93WdoKBrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YFIiX9UPfy1QZU9AId8zleOFjDdCHCdDhr7pdiwGn8FLYAnzlPjqtgLDs42woMwuhRfiCYRm63OHPS6HmYorAA"}}, "unsigned": {"age_ts": 1570040310823}} }.&Fu  n  f N6> ^  V 6eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800eeQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo!mvgUHEsfGqDkPQUvfG:localhost:8800 ZeeQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800?eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800 ځeeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800 veeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800^eeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800 =eeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800` eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800 ɁeeQ$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800 YeeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800 ReeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800 VeeQ$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800 eeQ$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800́eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800ieeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800feeQ$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800ρeeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800<eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800݁eeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800ρeeQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800*eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY!zNCItZNbpkZKuufRhC:localhost:8800  |t L \  dD T <4,$ t l eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800ɁeeQ$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800 !eeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800eeQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800eeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800LeeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800ՁeeQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800 :eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800ÁeeQ$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800oeeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:88005 #: b - S c!+;i3=eh#Q3 e#!loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ "Q'[e"!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Yb!Q' e!!loalEsWaTYwrVUNJLr:localhost:8800m.room.create$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Eboa Q% e !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topic$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEnQ? e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibility$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0fQ/ e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rules$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEhQ3 e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levels$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0 Q'[e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUbQ' e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI`Q# e!odAvowLhHJcmkKlxFk:localhost:8800m.room.name$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iInQ? e!odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibility$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQfQ/ e!odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rules$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApchQ3 e!odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levels$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU Q'[e!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQbQ' e!odAvowLhHJcmkKlxFk:localhost:8800m.room.create$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUhQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_access$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTsnQ? e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibility$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4cfQ/ e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rules$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYhQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levels$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8bQ' e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.create$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0h Q3 e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_access$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQn Q? e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibility$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUf Q/ e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rules$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxsh Q3 e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA Q'[e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wbQ' e!QZhNrNpwObZGJZpdAG:localhost:8800m.room.create$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXUqQ))e!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0nQ? e!zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibility$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1gfQ/ e!zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rules$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2MsfckQ9 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_alias$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYhQ3 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levels$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU Q'[e!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAa Q' e!zNCItZNbpkZKuufRhC:localhost:8800m.room.create$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A $(Q 3 C q   :b*:h6SckGQ9 eG!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_alias$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUchFQ3 eF!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levels$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU EQ'[eE!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0bDQ' eD!jYzridjeihmwPBuwLb:localhost:8800m.room.create$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8qCQ))eC!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DknBQ? eB!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibility$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8fAQ/ eA!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rules$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4h@Q3 e@!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30 ?Q'[e?!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEb>Q' e>!NZHpBquHDfJAjiawGk:localhost:8800m.room.create$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYn=Q? e=!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibility$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcf<Q/ eeeQ$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800=eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800<eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800;eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800:eeQ$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:88009eeQ$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:88008eeQ$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:88007eeQ$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:88006eeQ$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms!uxKymrHZeXRYCZwekU:localhost:88005eeQ$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:88004eeQ$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:88003eeQ$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk!sPWVGnipjiiWQpywNO:localhost:88002eeQ$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk!sPWVGnipjiiWQpywNO:localhost:88001eeQ$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4!sPWVGnipjiiWQpywNO:localhost:88000eeQ$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0!sPWVGnipjiiWQpywNO:localhost:8800/eeQ$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw!sPWVGnipjiiWQpywNO:localhost:8800.eeQ$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc!sPWVGnipjiiWQpywNO:localhost:8800-eeQ$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800,eeQ$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko!GixhPUMvtKSWoKRgvw:localhost:8800+eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0!GixhPUMvtKSWoKRgvw:localhost:8800*eeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800)eeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800(eeQ$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800g'MMQ$15700403175seOtB:localhost:8800$15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g&MMQ$15700403164ksjyG:localhost:8800$15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g%MMQ$15700403163gHYKC:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g$MMQ$15700403152dWVZA:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g#MMQ$15700403151blJmZ:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800"eeQ$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!loalEsWaTYwrVUNJLr:localhost:8800!eeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800 eeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800 #5 [ ! E S$P|E|i#Q3 e&!loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ "Q'[e%!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Yc!Q' e$!loalEsWaTYwrVUNJLr:localhost:8800m.room.create$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebob Q% e"!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topic$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEoQ? e!!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibility$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0gQ/ e !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rules$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEiQ3 e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levels$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0 Q'[e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUcQ' e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZIaQ# e!odAvowLhHJcmkKlxFk:localhost:8800m.room.name$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iIoQ? e!odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibility$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQgQ/ e!odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rules$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApciQ3 e!odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levels$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU Q'[e!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQcQ' e!odAvowLhHJcmkKlxFk:localhost:8800m.room.create$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUiQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_access$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTsoQ? e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibility$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4cgQ/ e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rules$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYiQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levels$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8cQ' e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.create$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0i Q3 e!QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_access$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQo Q? e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibility$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUg Q/ e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rules$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxsi Q3 e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA Q'[e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wcQ' e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.create$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXUrQ))e!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0oQ? e!zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibility$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1ggQ/ e!zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rules$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2MsfclQ9 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_alias$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYiQ3 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levels$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU Q'[e!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAcQ' e!zNCItZNbpkZKuufRhC:localhost:8800m.room.create$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A $h&M , : f  *Py#Oy3AhlGQ9 eM!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_alias$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUciFQ3 eL!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levels$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU EQ'[eK!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0cDQ' eJ!jYzridjeihmwPBuwLb:localhost:8800m.room.create$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8rCQ))eI!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkoBQ? eH!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibility$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8gAQ/ eG!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rules$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4i@Q3 eF!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30 ?Q'[eE!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEc>Q' eD!NZHpBquHDfJAjiawGk:localhost:8800m.room.create$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYo=Q? eC!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibility$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcg<Q/ eB!uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rules$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dki;Q3 eA!uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM :Q'[e@!uxKymrHZeXRYCZwekU:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1msc9Q' e?!uxKymrHZeXRYCZwekU:localhost:8800m.room.create$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwb8Q% e>!sPWVGnipjiiWQpywNO:localhost:8800m.room.topic$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0a7Q# e=!sPWVGnipjiiWQpywNO:localhost:8800m.room.name$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4r6Q))ePMY!3ce$eQ/ $N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800m.room.join_rulesg#eQ3 $TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels"eQ'[$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800a!eQ' $T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800m.room.create` eQ% $y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topicmeQ? $2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibilityeeQ/ $5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rulesgeQ3 $1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levelseQ'[$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create_eQ# $a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800m.room.namemeQ? $_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ!odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibilityeeQ/ $XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc!odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rulesgeQ3 $gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levelseQ'[$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800m.room.createeQ'[$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800geQ3 $OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs!plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_accessmeQ? $reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c!plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibilityeeQ/ $s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rulesgeQ3 $BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levelseQ'[$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800m.room.createg eQ3 $FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ!QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_accessm eQ? $vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU!QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibilitye eQ/ $vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs!QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rulesg eQ3 $wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels eQ'[$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800m.room.createpeQ))$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800meQ? $6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g!zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibilityeeQ/ $-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc!zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rulesjeQ9 $HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY!zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_aliasgeQ3 $JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levelseQ'[$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800m.room.create $:_ > J t   JiCOy"LweHeQ/ $aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rulesjGeQ9 $iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_aliasgFeQ3 $mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levelsEeQ'[$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800aDeQ' $KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800m.room.createpCeQ))$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800mBeQ? $-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibilityeAeQ/ $paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rulesg@eQ3 $l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels?eQ'[$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800a>eQ' $dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800m.room.createm=eQ? $en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibilitye<eQ/ $UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rulesg;eQ3 $fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels:eQ'[$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms!uxKymrHZeXRYCZwekU:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800a9eQ' $UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:8800m.room.create`8eQ% $ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0!sPWVGnipjiiWQpywNO:localhost:8800m.room.topic_7eQ# $xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:8800m.room.namep6eQ))$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk!sPWVGnipjiiWQpywNO:localhost:8800m.room.aliaseslocalhost:8800m5eQ? $IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk!sPWVGnipjiiWQpywNO:localhost:8800m.room.history_visibilitye4eQ/ $TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4!sPWVGnipjiiWQpywNO:localhost:8800m.room.join_rulesj3eQ9 $WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0!sPWVGnipjiiWQpywNO:localhost:8800m.room.canonical_aliasg2eQ3 $gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw!sPWVGnipjiiWQpywNO:localhost:8800m.room.power_levels1eQ'[$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc!sPWVGnipjiiWQpywNO:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800a0eQ' $5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800m.room.createm/eQ? $mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko!GixhPUMvtKSWoKRgvw:localhost:8800m.room.history_visibilitye.eQ/ $h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0!GixhPUMvtKSWoKRgvw:localhost:8800m.room.join_rulesg-eQ3 $hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800m.room.power_levels,eQ'[$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800a+eQ' $drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800m.room.createa*MQ? $15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.history_visibilityY)MQ/ $15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.join_rules[(MQ3 $15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.power_levels|'MQ'[$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800U&MQ' $15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.createm%eQ? $Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!loalEsWaTYwrVUNJLr:localhost:8800m.room.history_visibility  h-MQ[} $15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 46}{"auth_events": [["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}], ["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "prev_events": [["$15700403163gHYKC:localhost:8800", {"sha256": "3vE7VNJbjajv2H/ko3n7edaDZc1TQ/4y4lpMl6fx+Tc"}]], "type": "m.room.history_visibility", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$15700403164ksjyG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040316952, "hashes": {"sha256": "e/12QvjYmwyUs0bieRKIZNSx8ReoimtHbh8ula12RG8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MfQxIXsthe5CHffmrEFHMBExIeCc/fXVwflAlkLCjt505+mvCOC+EkBWszJmX/S16kkeQ3JVsOy3PcgO1iUGAg"}}, "unsigned": {"age_ts": 1570040316952}}W,MQ[[ $15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 45}{"auth_events": [["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}], ["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}]], "prev_events": [["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}]], "type": "m.room.join_rules", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$15700403163gHYKC:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040316378, "hashes": {"sha256": "pM1yRptZUdnLF2Uy+OSkXjgL+GaxsUBgvMW74lgHKpU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TOXHT4y8EX6vV+Ai+T2MG5ik12iqJVMtd5YfiY5d5kYPgMf4UBjPEyG4IbHVuu4jEV6wiKJ8nwDNIOHSaeJlAA"}}, "unsigned": {"age_ts": 1570040316378}}+MQ[e $15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 44}{"auth_events": [["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "prev_events": [["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "type": "m.room.power_levels", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$15700403152dWVZA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040315787, "hashes": {"sha256": "FQFDub0ikVi9evgpVXlxoX74GZXUu0UhGfC99ROHirg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LnFpewLF9P558rjLQMU6GHf7K3SSjLoszVBIyhZ9iqufIyBXwtzXmrD6wi73D41phFQDkW8YsimfeBMO+xZnDA"}}, "unsigned": {"age_ts": 1570040315787}} M}m;3W ?esA y G  E -  MQ% _k9q  ] S !w Y '+ K 1e$-UT31e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYv1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYw1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE 1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c 1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c 1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQf1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQe1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMk1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE 1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE 1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I-1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I,1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8@1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8?1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8>1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMl1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gT1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMm1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQg1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYx1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg-1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYo1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYn1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cu1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2ct1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cs1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg,1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcb1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vca1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg.1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8n1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8m1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcc1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8o1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_5021e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUc1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUb1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUa1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggg1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggf1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k}1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k|1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k{1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_81e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_81e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_81e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQr0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc 0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc J Ph6( V $ \ *tT Z"NzHj8Bn<p> v D  b0 | J  h6rK1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg 1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcs1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Uq1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw 1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs &1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Ur1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Us1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac ;1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac :1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac 91e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM;1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsT1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUX1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUW1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsS1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsR1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcr1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw 1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs '1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI 1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sx1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sw1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sv1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3su1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg:1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg91e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg81e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg  ff1eQ[_$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800{"token_id": 47, "stream_ordering": 50}{"auth_events": ["$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg", "$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo"], "prev_events": ["$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo"], "type": "m.room.power_levels", "room_id": "!GixhPUMvtKSWoKRgvw:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040319459, "hashes": {"sha256": "sXYjCymdmpVTY+eVvKAAm6AM1fwpSNnqZ9cJZqAyOT8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tywg/E+f6AscqTbzaAI0r/JzD8H7wm/pIzMCAfqYVtYwzu1pv2fiTHs2ur7YM3wwvpWS/OJgwRsafmoD8eztCA"}}, "unsigned": {"age_ts": 1570040319459}}p0eQ[s$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800{"token_id": 47, "stream_ordering": 49}{"auth_events": ["$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg"], "prev_events": ["$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg"], "type": "m.room.member", "room_id": "!GixhPUMvtKSWoKRgvw:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040319006, "hashes": {"sha256": "m2Hrhuo3hQRnyzALib4SichGoJPRTIFduz2++qgdazg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wDVDzk6ANFAuqad90I7K8t8GfM72IsME+k54FDS+GH0MpvpSzwEyMv+k9tpIWhMyN/Xqt8Ll1ccuSo3lG116CA"}}, "unsigned": {"age_ts": 1570040319006}}v/eQ[$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800{"token_id": 47, "stream_ordering": 48}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GixhPUMvtKSWoKRgvw:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "test": "azerty", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040318368, "hashes": {"sha256": "Kxt2/mSZaVEM5vaqJTDiQJkndVJvcfR8iwT5IRcHcFQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vjSMfXU48t2KmFecGvB7K2SC9nBm8tfzza9on9y4jittWCRNfbtaiK5eIHNLlRghfcCQZdKjBUCJiUPnMUJQBw"}}, "unsigned": {"age_ts": 1570040318368}}+.MQ[ $15700403175seOtB:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 47}{"auth_events": [["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}], ["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "prev_events": [["$15700403164ksjyG:localhost:8800", {"sha256": "sCI/XhS8bO3QZue8YRWNcfu6y0O42ZTuVC9tDCBoV2M"}]], "type": "m.room.test", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "event_id": "$15700403175seOtB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040317768, "hashes": {"sha256": "CiW/k0IkAbPgaZLFixm+E+GdE8vwmfK6m5PzKetNCaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9+2pyEaUMraKAjSiFrJik3Kj6OSjTzycHLba2dt9pSF53Q9vzTjlZsndWXys6klKcGsYTEWfq7zCQ/8fZtyJBw"}}, "unsigned": {"age_ts": 1570040317768}} .xPH @ 8 0 ( x ph`XPH@\xJ.ML$15700403175seOtB:localhost:8800sha256,e3QJ)U!yr.J-ML$15700403164ksjyG:localhost:8800sha256"?^lfaqCٔT/m hWcJ,ML$15700403163gHYKC:localhost:8800sha256;T[yyփeSC2ZL7J+ML$15700403152dWVZA:localhost:8800sha25683gnAaq>` UJ*ML$15700403151blJmZ:localhost:8800sha256>cGYuX1[jZڱ}]J)ML$15700403140fJvpV:localhost:8800sha2561YeIGI) Nkd]3V< S*V(eL$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepwsha256F& WZA$;qWTb+zV'eL$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQsha256/qJxktz) zG|q]IVƷT4V&eL$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Ysha2567xjI#t[B%]WH7fV%eL$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQsha256LM`RZD4,TA$sWD Q}O7$V$eL$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Ysha256I㙲C*^ts C\GeVV#eL$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebosha256O&Lc<16s/sV"eL$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjncsha256Q'z{LB^hg2W[{۷*ǎwV!eL$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEsha256E T!\&=~qasNV eL$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0sha256ػ` l('vH_2E( VeL$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEsha256i tmyV›^[&5qDf#0VeL$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0sha256/ Th|Ja'z`_9WVeL$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUsha256yWC]_Pt 7LZVTeL$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIsha256%(/œp~ʰ !n=dbVSeL$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gsha2562`{ UäR%).$VReL$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicsha256-&y w<=AoHEeK BӚ'VQeL$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wsha256 h'lyt Ƅ[bBnxVPeL$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcsha256Oyb` WvP7k(04ص{'VOeL$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcsha2562,Y(Db0Ȃv2'\GVNeL$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4sha256vY(,뺬ڂx64{NqVMeL$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czssha256h݇`#f X:Ays;VLeL$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcsha2560oz5pS=vWpv}GVKeL$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUsha256RusQW\exVG VJeL$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0sha256V|O\"F|ܬk$MVIeL$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8sha256)rݗ% _fY4JAzVHeL$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dksha256?՗<2<.Ž:+J7؍o09VGeL$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8sha256Q$ r@4rA03VFeL$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4sha256].*^pF=?VEeL$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30sha256JEȉj ^T23.XhSg}VDeL$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEsha256?OBYP#VeӖ64AVCeL$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYsha256tw`"wMb:a0hzSVBeL$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcsha256z} Ҩ5DIHQ@`zx6d%VAeL$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dksha256Pwsu`ykO\LɞϚ?G/aAl߭V@eL$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMsha2562_GY' ϭ+uʺ-( cV?eL$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1mssha256umdJ+bG?jgkV>eL$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwsha256P8ć \]tLpM/0f1(ZƠV=eL$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0sha256]22%[lsMvГhL#`mV<eL$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4sha256xwϮ+l2;SaǼI>V;eL$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBksha256ťgWQ(%nޥ5>]Ixo&lV:eL$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYksha256 J/j6}uZ-ӥi9DѩV9eL$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4sha256LCzgًeɡ^V8eL$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0sha256XC7sjg~~LYÜҠNອnV7eL$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirwsha256; )Ft6͉&ԋSފV6eL$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNcsha2562#CwMP2lj M(jvV5eL$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4sha256K5( v7cBtlxNCV4eL$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPAsha256a4Z7 C<Qe?!uxKymrHZeXRYCZwekU:localhost:8800$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwS=Qe>!sPWVGnipjiiWQpywNO:localhost:8800$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0S<Qe=!sPWVGnipjiiWQpywNO:localhost:8800$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4S;QeQe>!NZHpBquHDfJAjiawGk:localhost:8800$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYS=Qe=!uxKymrHZeXRYCZwekU:localhost:8800$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcS<QeeQ[$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:8800{"token_id": 51, "stream_ordering": 63}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uxKymrHZeXRYCZwekU:localhost:8800", "sender": "@anon-20191002_181700-20:localhost:8800", "content": {"m.federate": false, "room_version": "4", "creator": "@anon-20191002_181700-20:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040328775, "hashes": {"sha256": "CUNoCzrD2yY7Keuobg3bmjBLGElYXHei4If9FjbJIz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ev+tbp6t8Z/bOaRMdUk4R2pRiUkz9rlkE6Lp/wSyZ8NzJgWlIjROca4Y3mHysJeUEVWzb+TvYGYH5IWz3eA1AQ"}}, "unsigned": {"age_ts": 1570040328775}}  | "fEeQ[_$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 70}{"auth_events": ["$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "type": "m.room.power_levels", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"users": {"@anon-20191002_181700-21:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040333261, "hashes": {"sha256": "E5MxceBEsrvbHveiyOGoDrGriEXGMp/LzcN2pX3CF+k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Lij62VIZtaTXPHZ1d9Cv74tZAUwWpf/8FahN5iiDr358BY1OKZ3PNWWFNm5kY9icbdyK/eDLARhnIbeTCPhAA"}}, "unsigned": {"age_ts": 1570040333261}}pDeQ[s$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 69}{"auth_events": ["$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY"], "prev_events": ["$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY"], "type": "m.room.member", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-21", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-21:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040332806, "hashes": {"sha256": "GmO5JOvOHvXPa3iiorzz5AcmaR1WFvBE4FOiO/1QrWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AynQaeG5onHkx20yXPKoM7xqB73v9oJ85vJacUalv3F0NqK1uUhmeXTy1lOnFXEPB0oXWyuDsYgZB5mPOQMpDw"}}, "unsigned": {"age_ts": 1570040332806}}dCeQ[[$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 68}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-21:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040332226, "hashes": {"sha256": "YeU9KnbW06uu1gFgmgMsU78V6odng+KVALOUZiaobug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gCQde49Qzee7ro7N8cXIIyO0zjTbXfSmQWUp8EKad6hhhEe1qt4wCf4kYle/n0mCffbFs7H/yq3tsKou7QfbDA"}}, "unsigned": {"age_ts": 1570040332226}}BeQ[$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800{"token_id": 51, "stream_ordering": 67}{"auth_events": ["$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM", "$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw", "$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms"], "prev_events": ["$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk"], "type": "m.room.history_visibility", "room_id": "!uxKymrHZeXRYCZwekU:localhost:8800", "sender": "@anon-20191002_181700-20:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040330834, "hashes": {"sha256": "Ow14NY6D7+lryEXw5rUPLS3RGZFZpAR4zWaYRN89Ga4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NUB7Hp25mquBzw9RZvVPHI9cp28oYeeD8asriBmWCs7MOb0PTXzuIe4Z3+ZDy1E+JYl2bbvXG6nq28E14JGnAA"}}, "unsigned": {"age_ts": 1570040330834}} >l5 M Y Y- h  5  QK  =J Xi#nYC+3/ !12:localhost:42455m.room.join_rules  O3']!13:localhost:42455m.room.member@anon-20191002_181700-677:localhost:8800 +3/ !13:localhost:42455m.room.join_rules '3' !13:localhost:42455m.room.create C3'E!13:localhost:42455m.room.member@__ANON__-51:localhost:42455 C3'E!13:localhost:42455m.room.member@__ANON__-50:localhost:42455 O3']!12:localhost:42455m.room.member@anon-20191002_181700-676:localhost:8800 C3'E!12:localhost:42455m.room.member@__ANON__-49:localhost:42455 '3' !12:localhost:42455m.room.create BQ? !ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibility :Q/ !ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rules <Q3 !ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels ^Q']!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800 6Q' !ABHbfUdkHCJksMsaUt:localhost:8800m.room.create :Q/ !AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules fBQ? !AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility g6Q' !AYFqrmxwClFQlcTTYq:localhost:8800m.room.create c<Q3 !AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels]Q'[!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800:Q/ !AWfbViAZparIjmDaVT:localhost:8800m.room.join_rulesBQ? !AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibility6Q' !AWfbViAZparIjmDaVT:localhost:8800m.room.createEQ))!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800<Q3 !AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levels ^Q']!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800 RQ'E!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455 :Q/ !AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rules BQ? !AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibility 6Q' !AOEdqVKPFddrqbKPOL:localhost:8800m.room.create <Q3 !AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels4Q# !AMLmLqizBFklpqKibP:localhost:8800m.room.name^Q']!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800^Q']!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800^Q']!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800:Q/ !AMLmLqizBFklpqKibP:localhost:8800m.room.join_rulesBQ? !AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibility6Q' !AMLmLqizBFklpqKibP:localhost:8800m.room.createN1']!9:localhost:42455m.room.member@anon-20191002_181700-671:localhost:8800 {B1'E!9:localhost:42455m.room.member@__ANON__-45:localhost:42455 z*1/ !9:localhost:42455m.room.join_rules y&1' !9:localhost:42455m.room.create xN1']!6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800 B1'E!6:localhost:42455m.room.member@__ANON__-20:localhost:42455 *1/ !6:localhost:42455m.room.join_rules &1' !6:localhost:42455m.room.create N1']!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800 B1'E!5:localhost:42455m.room.member@__ANON__-10:localhost:42455 *1/ !5:localhost:42455m.room.join_rules &1' !5:localhost:42455m.room.create O3']!11:localhost:42455m.room.member@anon-20191002_181700-674:localhost:8800 O3']!11:localhost:42455m.room.member@anon-20191002_181700-673:localhost:8800 C3'E!11:localhost:42455m.room.member@__ANON__-47:localhost:42455 +3/ !11:localhost:42455m.room.join_rules '3' !11:localhost:42455m.room.create O3']!10:localhost:42455m.room.member@anon-20191002_181700-672:localhost:8800 C3'E!10:localhost:42455m.room.member@__ANON__-46:localhost:42455 ~+3/ !10:localhost:42455m.room.join_rules |'3' !10:localhost:42455m.room.create }N1']!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800 \A1'C!0:localhost:42455m.room.member@__ANON__-0:localhost:42455 [*1/ !0:localhost:42455m.room.join_rules Y&1' !0:localhost:42455m.room.create Z =2M s\fR  9  D IhN l   W  r ; I=BQ? !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibility G^Q']!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800 BQ? !BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibility :Q/ !BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rules <Q3 !BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels ^Q']!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800 6Q' !BKZJsoFNhiLTDYNclB:localhost:8800m.room.create BQ? !AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibility 6Q' !AjjrNwXmPTCruHxaJq:localhost:8800m.room.createBQ? !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibility96Q' !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create5CQ?!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3 <Q3 !AjjrNwXmPTCruHxaJq:localhost:8800m.room.power_levels^Q']!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800 ^Q']!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-143:localhost:8800:Q/ !AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rules?Q9 !AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_aliasEQ))!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levels e<Q3 !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels E^Q']!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800 D6Q' !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.create C^Q']!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800 H:Q/ !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rules F6Q' !BfEFIDBthhkweqfhir:localhost:8800m.room.create6Q' !BfEFIDBthhkweqfhir:localhost:8800m.room.avatar<Q3 !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels<^Q']!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800;HQ'1!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800@:Q/ !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rules=BQ? !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility><Q3 !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access?6Q' !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.create:<Q3 !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels^Q']!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800^Q']!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800:Q/ !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rulesBQ? !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibility6Q' !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.create?Q9 !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_aliasEQ))!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800;Q3 !BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levelsZ\Q'[!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800Y9Q/ !BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rules[AQ? !BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility\5Q' !BDASLhdcKfNwxCTCSg:localhost:8800m.room.createX<Q3 !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels7^Q']!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829:^Q']!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:88006:Q/ !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rules8 b~ | z x v trpnljhfdb~eeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~eeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800  wdIeQ[[$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 74}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-23:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040337457, "hashes": {"sha256": "cYKbG6IeGZYA2yXoFpegEqodqf7u9+unUA2U/Nw/oro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "keGJEFpT1UZg+VIOcCvFMrgHyS5L+GzAx4Cv2+tqyQvXW55ttSDZVjIilhqumKbZ5Bd+r+x35rVy3Bn8DW24Aw"}}, "unsigned": {"age_ts": 1570040337457}}HeQ[1$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 73}{"auth_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30", "$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8"], "type": "m.room.aliases", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"aliases": ["#__ANON__-1:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040335536, "hashes": {"sha256": "X85bYn4qGSaXmpT9AD2IPXid4ICrTh/FuNP8iSZVDVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s3geuMjOOov07E0t+Y+34oEcDf9rNH886wttTws5zZCRPUyQ2/hAO0FPVHBwn6+VdKw0q/vhWGvLZkV1NCpqDg"}}, "unsigned": {"age_ts": 1570040335536}}GeQ[$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 72}{"auth_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30", "$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4"], "type": "m.room.history_visibility", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040334394, "hashes": {"sha256": "WyeJYX1Odu4jz1Srhw8IHbGXBsjXbkOwO6b6R/ypPgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NW/aijLkQv2dPBWi+KG0G805P6lu5Y2nF/6FpSRnZJnHAOJh++f2pvici+Qg4hUEbNX64nPDQ5uZEicII2tCBw"}}, "unsigned": {"age_ts": 1570040334394}}pFeQ[s$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 71}{"auth_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30", "$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30"], "type": "m.room.join_rules", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040333877, "hashes": {"sha256": "IXeZC7aYlRwXDRIJSeGxqKd5gigh5XjmwkvLEQX4E8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xm58OLK5kNSTB++ayFs5tUnDQf8GXZeuIKKk261YKxxcTt1Fgl2surP/RqcxgkMm+zBr1QSmTTcKvAwIRdb5DA"}}, "unsigned": {"age_ts": 1570040333877}} EUr9 V  r 9 U  q 8 T p7So6Rn5Qm4P8e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQsha2568e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYsha2568e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4Esha2568e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUsha256 8e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgsha256 8e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwsha2568e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgsha2568e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Ysha256 8e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUsha2568e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acsha256*8e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMsha2568e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYsha2568e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcosha256 8e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Usha256c8e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6Msha256_8e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0sha2568e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMsha256q8e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZssha256F8e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcsha256q8e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5Msha2568e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAsha256 <8e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAsha256|8e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0sha256%8e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcsha256 8e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnksha2568e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88sha2568e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bwsha256*8e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4sha2568e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcsha256C8e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYsha256M8e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTcsha256 8e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbssha256#8e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBksha2568e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1Isha256>8e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYsha256q8e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUsha2568e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggsha2568e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMsha256 8e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0sha2568e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nssha256 8e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4sha256c8e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEsha2568e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwsha256I8e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEsha2568e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4sha256[8e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwsha256 8e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIsha256 8e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2csha256 *8e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50sha2568e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcsha2568e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUssha256 8e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8sha256 8e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0csha2568e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7ksha2568e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8sha256l8e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gsha256 a8e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwsha256+7e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8sha256G8e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYsha256 (8e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYsha2568e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygsha256 8e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUsha2568e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYsha256 8e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcsha256 $8e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQsha256S7e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfcsha2568e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5ksha256?8e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8sha256 ?8e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwsha256 MUq8 T  p 7 T  p 7 S o6S3H(j>a4~P"j<V(1$0:localhost:42455sha256 K-O$157004176929ezeJB:localhost:8800sha256-O$157004176828ZZJWh:localhost:8800sha256-O$157004176727QjUJj:localhost:8800sha256-O$157004175925JuKDZ:localhost:8800sha256-O$157004175824dFhko:localhost:8800sha256-O$157004175723CBKAp:localhost:8800sha256-O$157004175622yCTNM:localhost:8800sha256-O$157004175621DDceh:localhost:8800sha256-O$157004175520JddPP:localhost:8800sha256-O$157004174718wxlLH:localhost:8800sha256-O$157004174617osGDW:localhost:8800sha256-O$157004174616PvcHe:localhost:8800sha256-O$157004174515XsrNb:localhost:8800sha256-O$157004174414klNmS:localhost:8800sha256-O$157004174313OKfBg:localhost:8800sha256-O$157004173511wRnRr:localhost:8800sha256-O$157004173510EIiCi:localhost:8800sha256,M$15700417349vUcYV:localhost:8800sha256,M$15700417338MBNFd:localhost:8800sha256,M$15700417327EEUMr:localhost:8800sha256,M$15700417316amiRb:localhost:8800sha256+M$15700403175seOtB:localhost:8800sha256.+M$15700403164ksjyG:localhost:8800sha256-+M$15700403163gHYKC:localhost:8800sha256,+M$15700403152dWVZA:localhost:8800sha256++M$15700403151blJmZ:localhost:8800sha256*+M$15700403140fJvpV:localhost:8800sha256)3$14:localhost:42455sha256 8e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgsha2568e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Msha256 3$13:localhost:42455sha256 8e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSosha256"8e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgsha2563$12:localhost:42455sha256 }8e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYsha256 3$11:localhost:42455sha256 |3$10:localhost:42455sha256 {7e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0sha2568e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewsha2568e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUosha256|8e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQsha256:8e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQsha256 8e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wsha256 8e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4sha256 N8e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8sha2568e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwsha2568e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAsha2568e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbassha256Z8e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsksha256U8e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAssha2568e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkosha2568e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMsha2568e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8sha256.8e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAsha2568e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEsha256 8e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUsha256%8e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9osha256R7e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwsha256n8e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMsha256)8e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wsha256n8e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgsha256 8e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQsha256 B8e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIsha2568e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEsha256 8e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMsha2568e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4csha256k8e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuUsha25648e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0sha2568e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEsha2568e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3ssha25658e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfcsha2568e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwsha256o8e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcsha2568e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQsha256 I8e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIsha2568e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgsha256 ` k  t 0 Jd"2Aae'Q [$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAm.room.member!BDASLhdcKfNwxCTCSg:localhost:8800m7m@anon-20191002_181700-32:localhost:8800` e'Q  [$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvom.room.create!BDASLhdcKfNwxCTCSg:localhost:8800mmS@anon-20191002_181700-32:localhost:8800 _e)Q [$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYm.room.message!xwoIOPTGmJIlTXakxC:localhost:8800mum@anon-20191002_181700-31:localhost:8800+^e?Q [$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUm.room.history_visibility!xwoIOPTGmJIlTXakxC:localhost:8800mmm@anon-20191002_181700-31:localhost:8800#]e/Q [$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxom.room.join_rules!xwoIOPTGmJIlTXakxC:localhost:8800mmf@anon-20191002_181700-31:localhost:8800%\e3Q [$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwm.room.power_levels!xwoIOPTGmJIlTXakxC:localhost:8800mcmH@anon-20191002_181700-31:localhost:8800[e'Q [$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8m.room.member!xwoIOPTGmJIlTXakxC:localhost:8800mmo@anon-20191002_181700-31:localhost:8800Z e'Q  [$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMm.room.create!xwoIOPTGmJIlTXakxC:localhost:8800m_m@anon-20191002_181700-31:localhost:8800Ye'Q [$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwm.room.member!jYzridjeihmwPBuwLb:localhost:8800mm@anon-20191002_181700-23:localhost:8800Xe'Q [$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMm.room.member!jYzridjeihmwPBuwLb:localhost:8800mKm@anon-20191002_181700-23:localhost:8800We'Q [$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUm.room.member!jYzridjeihmwPBuwLb:localhost:8800m}Pm~@anon-20191002_181700-28:localhost:8800Ve'Q [ $sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mzm{@anon-20191002_181700-28:localhost:8800Ue'Q [ $JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mvmw-@anon-20191002_181700-27:localhost:8800Te'Q [ $msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mqmre@anon-20191002_181700-26:localhost:8800Se'Q [ $LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mmmn]@anon-20191002_181700-25:localhost:8800Re'Q [ $C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mimj+@anon-20191002_181700-24:localhost:8800Qe'Q [$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcm.room.member!jYzridjeihmwPBuwLb:localhost:8800memf@anon-20191002_181700-22:localhost:8800 Pe)Q [$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcm.room.aliases!jYzridjeihmwPBuwLb:localhost:8800mcymd5@anon-20191002_181700-23:localhost:8800+Oe?Q [$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4m.room.history_visibility!jYzridjeihmwPBuwLb:localhost:8800m`Pma@anon-20191002_181700-23:localhost:8800#Ne/Q [$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsm.room.join_rules!jYzridjeihmwPBuwLb:localhost:8800m]{m^:@anon-20191002_181700-23:localhost:8800(Me9Q [$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcm.room.canonical_alias!jYzridjeihmwPBuwLb:localhost:8800mZm[@anon-20191002_181700-23:localhost:8800%Le3Q [$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUm.room.power_levels!jYzridjeihmwPBuwLb:localhost:8800mXmY@anon-20191002_181700-23:localhost:8800Ke'Q [$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0m.room.member!jYzridjeihmwPBuwLb:localhost:8800mVmW(@anon-20191002_181700-23:localhost:8800J e'Q  [$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8m.room.create!jYzridjeihmwPBuwLb:localhost:8800mT1mT@anon-20191002_181700-23:localhost:8800 ) $)pMeQ[s$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 78}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc"], "type": "m.room.join_rules", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040339835, "hashes": {"sha256": "qOJa+MVmQQx44B7ztR/15ezR5ruLgXVNMa8mZU/NdmI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h7utsmJfDFyLHepoPiOOFf+fGqPYBLZ5RGHcrEKz74VjQyIPevqeFQWJU0TOr/zIBwqZz42xA3ZCV1b4OtKMBA"}}, "unsigned": {"age_ts": 1570040339835}}LeQ[$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 77}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU"], "type": "m.room.canonical_alias", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"alias": "#__ANON__-2:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040339185, "hashes": {"sha256": "y9V4UkeVkX2w0+6XeLQIUJ8NvLO+VtRcRY8qGq1Sbz8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T4YM4fjAEZM9afCB//OxeFiPIP/5BXtVjNPsc0hdDLYsa7jpwtqX83gkE3NJQnQjs5bn0eFyYj9EMXdu605aDw"}}, "unsigned": {"age_ts": 1570040339185}}fKeQ[_$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 76}{"auth_events": ["$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "type": "m.room.power_levels", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"users": {"@anon-20191002_181700-23:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040338595, "hashes": {"sha256": "xUCaXB5iLvWes426zbeotYSJrDZplxQM+f3ypKEqhjY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5bFLtZyna+9foOx+K1XEvKRtfIPwHEzFDmIzio3oRc8CLtAmDFs2CnYz8fyu6l1gwVIgEvvQRe+BVhhE7HW5DQ"}}, "unsigned": {"age_ts": 1570040338595}}pJeQ[s$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 75}{"auth_events": ["$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8"], "prev_events": ["$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-23", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-23:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040338108, "hashes": {"sha256": "ok7ERkkMNJ4/k6syIG+Q8/RRDFIqWbamqJD7RTg1EhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0egRsQcFo+WtXUr8lecSqvLzuAiIUNLgsrAoWkjnxGlMScNK9Gbf+vHvMxkKxqQnPaCR2z1VKK1WsJEeegWMBw"}}, "unsigned": {"age_ts": 1570040338108}}  |t l d E=%5- e ] U Mo Q weeQ$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxleeQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800%eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800DeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800 ́eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800DeeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829/eeQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800 teeQ$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800 TeeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800leeQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800eeQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800 &eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800eeQ$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800BeeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800 |eeQ$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800  a} { y w u sqomkigeca^eeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800]eeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800\eeQ$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800[eeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800ZeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800YeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800XeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800WeeQ$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800VeeQ$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800UeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800TeeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800SeeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800ReeQ$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800QeeQ$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800PeeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800OeeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800NeeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800MeeQ$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800LeeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800KeeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800JeeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800IeeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800HeeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800GeeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800FeeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800EeeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800DeeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800CeeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800BeeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800AeeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800@eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800 !()  m U eo3=eu 3CqbhQ' eh!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.create$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkngQ? eg!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibility$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMffQ/ ef!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rules$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwheQ3 ee!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levels$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc dQ'[ed!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgbcQ' ec!scyFsXcUIJiLIMwWMY:localhost:8800m.room.create$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMnbQ? eb!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibility$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYfaQ/ ea!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rules$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h`Q3 e`!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo _Q'[e_!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQb^Q' e^!aWJOsiuJONOvjKWEjO:localhost:8800m.room.create$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4n]Q? e]!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwf\Q/ e\!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rules$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoh[Q3 e[!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levels$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk ZQ'[eZ!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAbYQ' eY!BDASLhdcKfNwxCTCSg:localhost:8800m.room.create$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvonXQ? eX!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibility$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUfWQ/ eW!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rules$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxohVQ3 eV!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levels$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw UQ'[eU!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8bTQ' eT!xwoIOPTGmJIlTXakxC:localhost:8800m.room.create$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM SQ'[eS!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw RQ'[eR!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM QQ'[eQ!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU PQ'[eP!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU OQ'[eO!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI NQ'[eN!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g MQ'[eM!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic LQ'[eL!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w KQ'[eK!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcqJQ))eJ!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcnIQ? eI!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibility$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4fHQ/ eH!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rules$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs !P&% ~ d  ,4Zh#1]&PchQ' er!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.create$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkogQ? ep!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibility$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMgfQ/ eo!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rules$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwieQ3 en!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levels$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc dQ'[em!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgccQ' el!scyFsXcUIJiLIMwWMY:localhost:8800m.room.create$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMobQ? ej!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibility$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYgaQ/ ei!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rules$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0i`Q3 eh!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo _Q'[eg!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQc^Q' ef!aWJOsiuJONOvjKWEjO:localhost:8800m.room.create$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4o]Q? ed!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwg\Q/ ec!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rules$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoi[Q3 eb!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levels$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk ZQ'[ea!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAcYQ' e`!BDASLhdcKfNwxCTCSg:localhost:8800m.room.create$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvooXQ? e^!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibility$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUgWQ/ e]!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rules$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoiVQ3 e\!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levels$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw UQ'[e[!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8cTQ' eZ!xwoIOPTGmJIlTXakxC:localhost:8800m.room.create$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM SQ'[eY!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw RQ'[eX!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM6QQ'[eeW!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU PQ'[eV!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU OQ'[eU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI NQ'[eT!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g MQ'[eS!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic LQ'[eR!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w KQ'[eQ!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcrJQ))eP!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcoIQ? eO!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibility$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4gHQ/ eN!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rules$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs !  K S} D*) | #2:dr e[eQ/ $GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rulesgZeQ3 $VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levels YeQ'[$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800joinaXeQ' $4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.createmWeQ? $8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibilityeVeQ/ $CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rulesgUeQ3 $yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levels TeQ'[$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800joinaSeQ' $zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800m.room.create ReQ'[$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800banQeQ'[$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800invite PeQ'[$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800leavejGeQ9 $iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_aliasgFeQ3 $mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levels EeQ'[$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800joinaDeQ' $KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800m.room.createpCeQ))$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800mBeQ? $-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibilityeAeQ/ $paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rulesg@eQ3 $l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels ?eQ'[$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800joina>eQ' $dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800m.room.createm=eQ? $en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibilitye<eQ/ $UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rulesg;eQ3 $fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels OeQ'[$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800join NeQ'[$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800join MeQ'[$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800join LeQ'[$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800join KeQ'[$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800joinpJeQ))$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800mIeQ? $doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibilityeHeQ/ $aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rules D |DPQeQ[3$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 55, "stream_ordering": 82}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-24:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-24", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-24:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040342985, "hashes": {"sha256": "evmDL6FL2m3tbCvcq6yHJHqjPtBtqVsMia7xX33CmRA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MtVaEUZ/WzB9sMGc80hARmvgHzHNRmeeEhr+wbHM1sdAQJdrtObrN0SfQFqascCx6ys6nVPgjuUPCWf4MvE0Cg"}}, "unsigned": {"age_ts": 1570040342985}}PPeQ[3$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 53, "stream_ordering": 81}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-22:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-22", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-22:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040341950, "hashes": {"sha256": "QhoPyZekCUIREPo+vpv/u3Rz4/VsI3BFTnQIsg6rnWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9C1fW7rPMSmeWhS/vJFSe7QdhaqvbOKOuMAtJOj+5jFHbF0feQTitW3oTpAtM4mN+Cgtq0JAEPwsF1XiD6MrCw"}}, "unsigned": {"age_ts": 1570040341950}}OeQ[1$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 80}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4"], "type": "m.room.aliases", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"aliases": ["#__ANON__-2:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040341369, "hashes": {"sha256": "mWu5UUZEufOMsEi2J8e8bo4BimGvXttdR5x1JMaYNAg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2/atFwPu0Qc6qZbKcnHbQ/Q10pvsPWrQLIcrND/4fjbAKhO5GVCFM0ej7E6352ujAoFgdXOn+8T1zLPfBCGcBw"}}, "unsigned": {"age_ts": 1570040341369}}NeQ[$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 79}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "type": "m.room.history_visibility", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040340560, "hashes": {"sha256": "+mKdgrdciZZt4V5FEkN+dYY7W06W5VqD1dOownKZ7H0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QF3bwqmetvbXx8QsFvxlKVTgudNgbffiosy8vvJ4Zln0PJ9B7t1T5UhcRZbP/OBCVQOqaQhu521JeAvVlPHRAA"}}, "unsigned": {"age_ts": 1570040340560}} ! ~ h R < N~!Q$R^%ieQ'[$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800aheQ' $E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.createmgeQ? $ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibilityefeQ/ $0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rulesgeeQ3 $xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levelsdeQ'[$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800aceQ' $q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.creatembeQ? $oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibilityeaeQ/ $iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rulesg`eQ3 $BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels_eQ'[$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800a^eQ' $gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800m.room.createm]eQ? $I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibilitye\eQ/ $GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rulesg[eQ3 $VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levelsZeQ'[$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800aYeQ' $4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.createmXeQ? $8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibilityeWeQ/ $CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rulesgVeQ3 $yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levelsUeQ'[$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800aTeQ' $zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800m.room.createSeQ'[$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800ReQ'[$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800QeQ'[$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800PeQ'[$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800OeQ'[$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800NeQ'[$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800MeQ'[$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800LeQ'[$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800KeQ'[$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800pJeQ))$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800mIeQ? $doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibility Pk9q? w E  } K  Q  W % ] +c1 sMS!Y'_-e3k9q? 0Pe$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcK0Oe$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcJ0Ne$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4I0Me$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsH0Le$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcG0Ke$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUF0Je$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0E0Ie$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8D0He$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkC0Ge$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8B0Fe$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4A0Ee$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30@0De$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE?0Ce$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY>0Be$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc=0Ae$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk<0@e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM;0?e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms:0>e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw90=e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW080<e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT470;e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk60:e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk509e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4408e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0307e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw206e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc105e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4004e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA/03e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko/02e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0.01e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw-00e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo,0/e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg+$.M$15700403175seOtB:localhost:8800*$-M$15700403164ksjyG:localhost:8800*$,M$15700403163gHYKC:localhost:8800)$+M$15700403152dWVZA:localhost:8800($*M$15700403151blJmZ:localhost:8800'$)M$15700403140fJvpV:localhost:8800&0(e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw%0'e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ%0&e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$0%e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ#0$e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"0#e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!0"e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc 0!e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE 0 e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe00e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls00e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h00e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq900e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl80e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY00 e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 0 e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 0 e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 0 e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 0 e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ00e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A Mj8p> v D  | J  P  V $ \ *b0h6l9m:k7g3c/_+1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01 e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81 e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I01 e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1 e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1 e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E00e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE~0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M}0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q|0e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc{0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6My0e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Mx0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIw0e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkv0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMu0~e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAt0}e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ks0|e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcr0{e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsq0ze$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsp0ye$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgo0xe$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68n0we$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4m0ve$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkl0ue$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Al0te$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAk0se$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQj0re$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rci0qe$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkh0pe$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYg0oe$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMg0ne$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwf0me$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAce0le$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgd0ke$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMc0je$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsb0ie$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYb0he$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0a0ge$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo`0fe$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ_0ee$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4^0de$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU]0ce$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw]0be$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo\0ae$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk[0`e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAZ0_e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoY0^e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYX0]e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUX0\e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoW0[e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwV0Ze$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8U0Ye$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMT0Xe$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwS0We$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMR0Ve$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUQ0Ue$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUP0Te$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIO0Se$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gN0Re$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicM0Qe$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wL NDk|8p9 Pr@jJD x F v > ~ L   Rp  X &v>  ^  ,8d2821e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcI1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw 1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Uc1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ I1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c *1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY (1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA|1$0:localhost:42455 K1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8r1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 ?1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc $1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g a1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA <1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYw1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s51e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwo1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac*1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M_1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMq1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsF1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcq1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0%1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw*1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYM1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs#1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I>1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4c1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwI1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4[1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw+0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8G1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQS0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k? X&X`.tC{h6n< Xj9bI0fA _ 8  u N ' d =  z S ,  i B X1  }V/700417471e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 N3$13:localhost:42455 3$12:localhost:42455 }3$11:localhost:42455 |3$10:localhost:42455 {1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU%1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oR0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwn1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM)1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wn1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasZ1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskU1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8.01e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo(1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$14:localhost:42455  1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ B1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI81e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4ck1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU4&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800.$M$15700403164ksjyG:localhost:8800-$M$15700403163gHYKC:localhost:8800,$M$15700403152dWVZA:localhost:8800+$M$15700403151blJmZ:localhost:8800*$M$15700403140fJvpV:localhost:8800)1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ:1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w   ,JhQUeQ[5$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 59, "stream_ordering": 86}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-28:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-28", "avatar_url": null}, "depth": 13, "prev_state": [], "state_key": "@anon-20191002_181700-28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040347378, "hashes": {"sha256": "QzjHB4jFc4E+lOBI24O99qchyW68a10IPeNlJXrJGUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8ykqVSI/MSlc3Tjg7BraNfex7I1Xfg+pDxGJWwt1aAA+aBJp2oXCiy8D+quEkD/r5zjzWmsdBAqJhVp5Uao1Cg"}}, "unsigned": {"age_ts": 1570040347378}}_TeQ[Q$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 58, "stream_ordering": 85}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-27:localhost:8800", "content": {"foo": "bar", "membership": "join", "displayname": "anon-20191002_181700-27", "avatar_url": null}, "depth": 12, "prev_state": [], "state_key": "@anon-20191002_181700-27:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040346316, "hashes": {"sha256": "jSZXhhDGs904uj3k+cFOPzcvpK4XeHy2P9/Qufo0dYM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qngsm7yVZVWIMy+oc/bljO0Adt0jKrIzotYXKLgAhw8Up6dUi7rjGx3mPkv95JTJAUl/I9MZoIP/eN8idw/xBQ"}}, "unsigned": {"age_ts": 1570040346316}}_SeQ[Q$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 57, "stream_ordering": 84}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-26:localhost:8800", "content": {"foo": "bar", "membership": "join", "displayname": "anon-20191002_181700-26", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-26:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040345082, "hashes": {"sha256": "G+1GiG5RXU2xp2hdkjp7+oMcP7mXtong7/upvO5cJFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HbCBlrJp4ntcZdmjea9zXhXgMunGD7zPGp+1gAyvEPY9AgLqVV3833U01c7gshM68HdyZXzm+QnSaZYgCxcFAA"}}, "unsigned": {"age_ts": 1570040345082}}QReQ[5$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 56, "stream_ordering": 83}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-25:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-25", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-25:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040344057, "hashes": {"sha256": "XivAXCFmRlAoWtlRbx9YM/NYK1aQz6JTn4s8xwoBaWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SekUsNfKKaGQyAi1xKJXE1iCzJSRtSrntsCN700lSTN9k0r+JmjPBpkMwY4HnX46tacrpo7f6QeKTNTrC3JRCg"}}, "unsigned": {"age_ts": 1570040344057}} NDk|8p9 Pr@jJD x F v > ~ L   Rp  X &v>  ^  ,8d2821e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcq1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw +1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Un1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ _1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c 51e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY 31e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1$0:localhost:42455 a1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV81e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 J1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc :1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g w1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA G1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s61e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwp1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac+1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY 1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M`1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMr1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsG1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc|1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF001e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw+1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYN1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1II1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4d1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwJ1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4\1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw,0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8H1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU 1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQT0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k@ X&X`.tC{h6n< Xj9bI0fA _ 8  u N ' d =  z S ,  i B X1  }V/1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 Y3$13:localhost:42455 3$12:localhost:42455 3$11:localhost:42455 3$10:localhost:42455 1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU&1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oS0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwo1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM41e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wy1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas[1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk`1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8901e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSoP1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$14:localhost:42455  1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ M1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI81e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4cv1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU5&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800/$M$15700403164ksjyG:localhost:8800.$M$15700403163gHYKC:localhost:8800-$M$15700403152dWVZA:localhost:8800,$M$15700403151blJmZ:localhost:8800+$M$15700403140fJvpV:localhost:8800*1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ;1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w  M%k}9r@ + x F  v] ~ L    R  Q X & ^ ,d2WDj8Kp>1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc q1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 01e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g Q1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA -1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ 91e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY p11e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0t1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYG1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8B1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s31e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwo1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUt1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac(1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_UT1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M_1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMo1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsF1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcb1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAm1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF01e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw*1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYM1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I/1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4c1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwG1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4Y1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw)0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8G1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY 1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQS0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k= QT"Z)j8p> v D  } K 2 k F ! e ?  | U . kDZ3 pI"_8zS,iB:1e$11WhPvhpUAeWTLW4aMSW-OFR1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU#x1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoR1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oR0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwn1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w_1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ 31e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c\&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800.$M$15700403164ksjyG:localhost:8800-$M$15700403163gHYKC:localhost:8800,$M$15700403152dWVZA:localhost:8800+$M$15700403151blJmZ:localhost:8800*$M$15700403140fJvpV:localhost:8800)3$14:localhost:42455 1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 3$13:localhost:42455 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ81e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w 1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 ?1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8w1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasZ1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskF1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu81e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE a} { y w u sqomkigeca~<eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800~;eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~:eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800~9eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800~8eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~7eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800~6eeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800~5eeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~4eeQ$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~3eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~2eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~1eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~0eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~/eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~.eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~-eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~,eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800~+eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~*eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~)eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~(eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~'eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~&eeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~%eeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~$eeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~#eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~"eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~!eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800 NDk|8p9 Pr@jJD x F v > ~ L   Rp  X &v>  ^  ,8d2821e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcC1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw 1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Uc1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ I1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c *1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY (1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA|1$0:localhost:42455 K1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8l1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 ?1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc $1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g a1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA <1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYq1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s51e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwo1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac*1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M_1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMq1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsF1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcq1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0%1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw*1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYM1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs#1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I>1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4c1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwI1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4[1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw+0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8G1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQS0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k? X&X`.tC{h6n< Xj9bI0fA _ 8  u N ' d =  z S ,  i B X1  }V/700417471e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 N3$13:localhost:42455 3$12:localhost:42455 }3$11:localhost:42455 |3$10:localhost:42455 {1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU%1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oR0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwn1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM)1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wn1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasZ1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskU1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8.01e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo"1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$14:localhost:42455  1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo|1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ B1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI81e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4ck1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU4&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800.$M$15700403164ksjyG:localhost:8800-$M$15700403163gHYKC:localhost:8800,$M$15700403152dWVZA:localhost:8800+$M$15700403151blJmZ:localhost:8800*$M$15700403140fJvpV:localhost:8800)1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ:1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w  N:l:f4HNT"Z(j8p>  v D  e L 3  `. k R g B  a ; zsL%b;xQ*&O$151e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI 1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU ,1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU +1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU *1e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw1e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw1e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAr1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAq1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk 1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs s1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs r1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs q1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMc1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8 1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8 1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA%1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA#1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE&O$157004173510EIiCi:localhost:8800 &O$157004173510EIiCi:localhost:8800 &O$157004173510EIiCi:localhost:8800 %M$15700417349vUcYV:localhost:8800 %M$15700417349vUcYV:localhost:8800 %M$15700417349vUcYV:localhost:8800 %M$15700417338MBNFd:localhost:8800 %M$15700417338MBNFd:localhost:8800 %M$15700417327EEUMr:localhost:8800 $M$15700403164ksjyG:localhost:8800U$M$15700403164ksjyG:localhost:8800T$M$15700403164ksjyG:localhost:8800S$M$15700403163gHYKC:localhost:8800R$M$15700403163gHYKC:localhost:8800Q$M$15700403163gHYKC:localhost:8800P$M$15700403152dWVZA:localhost:8800O$M$15700403152dWVZA:localhost:8800N$M$15700403151blJmZ:localhost:8800M1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg3$13:localhost:42455F3$13:localhost:42455E3$13:localhost:42455D1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgp1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgo1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgn3$12:localhost:424553$12:localhost:424551e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYq3$11:localhost:424550e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0:0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls091e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew 91e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew 81e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew 71e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4U1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4T1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4S1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwl1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwk1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwj1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAs Vo M + xV[a!E@anon-20191002_181700-37:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICgVQICIZWNXH127.0.0.1Perl + Net::Async::HTTP/0.44m3[a!E@anon-20191002_181700-36:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0CgKRWZEWLMKO127.0.0.1Perl + Net::Async::HTTP/0.44mJ[a!E@anon-20191002_181700-35:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCgEALQMPIKHO127.0.0.1Perl + Net::Async::HTTP/0.44m [a!E@anon-20191002_181700-34:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCgZGZSYILFGA127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-33:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECgSKGXUBFLKN127.0.0.1Perl + Net::Async::HTTP/0.44mʃ[a!E@anon-20191002_181700-32:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCgDXDIQOFVCB127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-31:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdXZ2YjV2VFhLQHNtSU5PQAowMDJmc2lnbmF0dXJlIG8K-NkIgFpGsJHN3sw043DlgE-jXfCHIknS8igoO6sBCgZSHMPNTQHC127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-28:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCgXMXOPMIZZU127.0.0.1Perl + Net::Async::HTTP/0.44mz[a!E@anon-20191002_181700-27:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCgTWNKNEABLT127.0.0.1Perl + Net::Async::HTTP/0.44mvǃ[a!E@anon-20191002_181700-26:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-CgUBEJKIDKFL127.0.0.1Perl + Net::Async::HTTP/0.44mq xG m < /aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXkZ-UCo4LWgwa0smME5ZQAowMDJmc2lnbmF0dXJlICAVkALm609BDF9Y2vumo9-DSlIRHPOSzCA6jqF4sRmuCg2/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCg1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNFKnFwXmJJMix3UDNuWQowMDJmc2lnbmF0dXJlIDfDhxgG6hysISJ-WB62IY0t37xYWbLaH-RvW_dJ43CrCg0/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-Cg6/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCg3/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZmhkZVQ7TUVCc1ZtTmltegowMDJmc2lnbmF0dXJlIIOojyB1wE_CbxRc56Osbj64XPlgFP87DdNhJ7vRLCFTCg9/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCg8/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCg71/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICgA/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0Cg@/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCg?/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCg> a 2 d/ad@[!aC@anon-20191002_181700-36:localhost:8800KRWZEWLMKOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0Cgd?[!aB@anon-20191002_181700-35:localhost:8800EALQMPIKHOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCgd>[!aA@anon-20191002_181700-34:localhost:8800ZGZSYILFGAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCgd=[!a@@anon-20191002_181700-33:localhost:8800SKGXUBFLKNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECgd<[!a?@anon-20191002_181700-32:localhost:8800DXDIQOFVCBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCgd;[!a>@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdXZ2YjV2VFhLQHNtSU5PQAowMDJmc2lnbmF0dXJlIG8K-NkIgFpGsJHN3sw043DlgE-jXfCHIknS8igoO6sBCgd:[!a=@anon-20191002_181700-30:localhost:8800STWEJRRVAKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQzprMUdrLDA2MUNoJnVBZAowMDJmc2lnbmF0dXJlIDlbKhGkrevhF1Qdfl6Xb7EYl-XlieGqusfY198Be6UrCgd9[!a<@anon-20191002_181700-29:localhost:8800WSREAIROYNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZmhkZVQ7TUVCc1ZtTmltegowMDJmc2lnbmF0dXJlIIOojyB1wE_CbxRc56Osbj64XPlgFP87DdNhJ7vRLCFTCgd8[!a;@anon-20191002_181700-28:localhost:8800XMXOPMIZZUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCg K 'K,XeQ[k$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 89}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"reason": "Just testing", "membership": "ban"}, "depth": 16, "prev_state": [], "state_key": "@anon-20191002_181700-30:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040350166, "hashes": {"sha256": "rzhcwPTBs8eSSvpm9IHnZP+RP9SECnFO5sKrO2QoCyQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/xldL4tAI8WGKD/y2SxkMMDHCO66+8sij7GHOO+Uncp29vUikCjTJPmErJe17IHUW+pdfOhnjWtCe4Q89keABA"}}, "unsigned": {"age_ts": 1570040350166}}*WeQ[g$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 88}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-29", "avatar_url": null}, "depth": 15, "prev_state": [], "state_key": "@anon-20191002_181700-29:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040349259, "hashes": {"sha256": "QILee2XSoDr/FnU5xr162+nZMSMYUh3DsvR4KYjWgAs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vKIe0bfedtvBoFCYCmWkIaFMrYRH7bn3w6ckdsdhn+ot9KVu7GJva5fAWMTzyHQj94folaLRZRAy81GOUV25CA"}}, "unsigned": {"age_ts": 1570040349259, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#__ANON__-2:localhost:8800"}, "sender": "@anon-20191002_181700-23:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-23:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-23:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-23", "avatar_url": null}, "sender": "@anon-20191002_181700-23:localhost:8800"}]}}VVeQ[?$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 59, "stream_ordering": 87}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU"], "prev_events": ["$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-28:localhost:8800", "content": {"membership": "leave"}, "depth": 14, "prev_state": [], "state_key": "@anon-20191002_181700-28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040347984, "hashes": {"sha256": "7kRTsGv9jjRSV2Auaem72Qa9uc9bJsHapQj/wbSLWvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jVcSYsOdbEuWrv/ce9JFG1CD677aBItIc5t7b9yP6PdeAsMSyU5orMpqaZ9CeGsMFWoqnFY/oc8mlRJgkUUgDQ"}}, "unsigned": {"age_ts": 1570040347984, "replaces_state": "$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU"}} =z / l /l#`T* e[[Q$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU@anon-20191002_181700-28:localhost:8800@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800leave@ e[[Q;$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU@anon-20191002_181700-28:localhost:8800@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-28@ e[[Q;$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI@anon-20191002_181700-27:localhost:8800@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-27@ e[[Q;$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g@anon-20191002_181700-26:localhost:8800@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-26@ e[[Q;$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic@anon-20191002_181700-25:localhost:8800@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-25@ e[[Q;$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w@anon-20191002_181700-24:localhost:8800@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-24@ e[[Q;$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc@anon-20191002_181700-22:localhost:8800@anon-20191002_181700-22:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-22@ e[[Q;$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0@anon-20191002_181700-23:localhost:8800@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-23@ e[[Q;$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE@anon-20191002_181700-21:localhost:8800@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800joinanon-20191002_181700-21@ e[[Q;$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms@anon-20191002_181700-20:localhost:8800@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800joinanon-20191002_181700-20@ e[[Q;$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc@anon-20191002_181700-20:localhost:8800@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800joinanon-20191002_181700-20@ e[[Q;$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800joinanon-20191002_181700-164 M[[Q;$15700403151blJmZ:localhost:8800@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800joinanon-20191002_181700-16@ e[[Q;$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800joinanon-20191002_181700-16@ e[[Q;$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800joinanon-20191002_181700-16@ e[[Q;$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800joinanon-20191002_181700-16B e[[Q;$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU@anon-20191002_181700-17:localhost:8800@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800inviteanon-20191002_181700-17@ e[[Q;$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800joinanon-20191002_181700-16@ e[[Q;$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!QZhNrNpwObZGJZpdAG:localhost:8800joinanon-20191002_181700-16@ e[[Q;$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800joinanon-20191002_181700-16 ; G ;x/lP@( e[[Q;$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4@anon-20191002_181700-70:localhost:8800@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800joinanon-20191002_181700-70@' e[[Q;$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk@anon-20191002_181700-68:localhost:8800@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800joinanon-20191002_181700-68L& e[[Q3-$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE@anon-20191002_181700-66:localhost:8829@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800joinMy remote name heremxc://foo/remoteB% e[[Q%'$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM@anon-20191002_181700-67:localhost:8800@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800joinMy name heremxc://foo/bar@$ e[[Q;$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg@anon-20191002_181700-64:localhost:8800@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800joinanon-20191002_181700-64B# e[[Q%'$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI@anon-20191002_181700-65:localhost:8800@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800joinMy name heremxc://foo/bar@" e[[Q;$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA@anon-20191002_181700-63:localhost:8800@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800joinanon-20191002_181700-63@! e[[Q;$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE@anon-20191002_181700-62:localhost:8800@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800joinanon-20191002_181700-62@ e[[Q;$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q@anon-20191002_181700-61:localhost:8800@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800joinanon-20191002_181700-61@ e[[Q;$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A@anon-20191002_181700-39:localhost:8800@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800joinanon-20191002_181700-39@ e[[Q;$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q@anon-20191002_181700-38:localhost:8800@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800joinanon-20191002_181700-38@ e[[Q;$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k@anon-20191002_181700-37:localhost:8800@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800joinanon-20191002_181700-37@ e[[Q;$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68@anon-20191002_181700-36:localhost:8800@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800joinanon-20191002_181700-36@ e[[Q;$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc@anon-20191002_181700-35:localhost:8800@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800joinanon-20191002_181700-35@ e[[Q;$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg@anon-20191002_181700-34:localhost:8800@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800joinanon-20191002_181700-34@ e[[Q;$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ@anon-20191002_181700-33:localhost:8800@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800joinanon-20191002_181700-33@ e[[Q;$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA@anon-20191002_181700-32:localhost:8800@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800joinanon-20191002_181700-32@ e[[Q;$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8@anon-20191002_181700-31:localhost:8800@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800joinanon-20191002_181700-31( e[[Q$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw@anon-20191002_181700-30:localhost:8800@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800banB e[[Q;$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM@anon-20191002_181700-29:localhost:8800@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800inviteanon-20191002_181700-29 qKj99 q? x F  k ~ L   R XE & ? ^ ,d2j8p>&^,wd2q1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY 1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc 1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE g1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM =1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc C1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ 11e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw 1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o 0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwf1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQB1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIh1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0U1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw=1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ 1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI81e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1$0:localhost:42455 1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 61e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU 1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoe1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0'1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA 1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk-1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkG1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1GgF1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE/1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEf1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw _1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cy1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 i1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kg1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g 01e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8B1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYw1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8A1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw0 6Va/NT");[m_:}V/ l E  [ 4 q J # ` 9  v O ( e>{T-^7tM&3$12:localhost:42455 3$11:localhost:42455 1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg3$13:localhost:42455 ,3$10:localhost:42455 1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskb1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs51e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM\1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu81e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo 1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo k1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY B0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4L1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas(8&O$157004183365ZxPWz:localhost:8800Y&O$157004183264ktTbL:localhost:8800X&O$157004183063NdEPw:localhost:8800W&O$157004183062AwGkL:localhost:8800V&O$157004182060gAdxi:localhost:8800K&O$157004181959Afmmv:localhost:8800J&O$157004181958ixShg:localhost:8800I&O$157004181857fcmAB:localhost:8800H&O$157004181756ejZNp:localhost:8800G&O$157004181655JUAvO:localhost:8800F&O$157004180853KmrHT:localhost:8800>&O$157004180752YHMqi:localhost:8800=&O$157004180751hMlwg:localhost:8800<&O$157004180650ruqIl:localhost:8800;&O$157004180549mJBJB:localhost:8800:&O$157004180448zlZXD:localhost:88009&O$157004180347MMmFf:localhost:88008&O$157004180346TRucp:localhost:88007&O$157004180045QtsUE:localhost:88005&O$157004179944JKWNJ:localhost:88004&O$157004179843yDrjz:localhost:88002&O$157004179742OaMxS:localhost:88000&O$157004179541PbBIm:localhost:8800.&O$157004179340NSiie:localhost:8800,&O$157004179239LLqht:localhost:8800*&O$157004179138NbBYh:localhost:8800(&O$157004179037FGMFG:localhost:8800'&O$157004178936zuJSX:localhost:8800&&O$157004178835mLAyG:localhost:8800%&O$157004178734ZpFdg:localhost:8800$&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800 &O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403164ksjyG:localhost:8800*$M$15700403163gHYKC:localhost:8800)$M$15700403152dWVZA:localhost:8800($M$15700403151blJmZ:localhost:8800'$M$15700403140fJvpV:localhost:8800&1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg Ij9r@  F  ~ LE  Q X & ^ ,d2 ?jW8wp?wE}}}}KK-1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M81e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc '1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1$0:localhost:42455 Z1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ W1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc ;1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg #1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw 1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 |1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY T1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 OK21e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ 1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50  21e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk 1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkos1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM41e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8p1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU=20e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwe1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg"1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw.1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgi1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acB1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM R21e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY x21e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk 1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJES1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI+1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c21e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k?1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8B1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kD1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG81e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw  _}*c \q?+pJ$!Ho qJ#c<yR+ h A  ~ W 0 m F  \ 5  r K $a:]5 &O$157004174515XsrNb:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:88004 $M$15700403140fJvpV:localhost:8800&1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg_1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800P/1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo ]0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQV1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$13:localhost:42455 3$11:localhost:42455 3$10:localhost:42455 3$12:localhost:42455 %M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403164ksjyG:localhost:8800*$M$15700403163gHYKC:localhost:8800)$M$15700403152dWVZA:localhost:8800($M$15700403151blJmZ:localhost:8800'-1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU41e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw&O$157004186988RkcKb:localhost:88000&O$157004186887sKbQU:localhost:8800/&O$157004186786RVgKA:localhost:8800.&O$157004186785fjAIs:localhost:8800-&O$157004185983tEalY:localhost:8800%&O$157004185982diSTq:localhost:8800$&O$157004185881ahRFW:localhost:8800#&O$157004185780kUwpq:localhost:8800"&O$157004185679NNCIw:localhost:8800!&O$157004185678lyJsT:localhost:8800 &O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800&O$157004184672SfwvS:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004180650ruqIl:localhost:8800&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800   =p\eQ[s$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 93}{"auth_events": ["$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw", "$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM", "$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8"], "prev_events": ["$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw"], "type": "m.room.join_rules", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040353228, "hashes": {"sha256": "grlwA0fhyeIKQN5Do2u38U5GDprog7klT0Dh5Nso8ew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9yIwugzbyHoaZWOJK763GE9nbqlfjtFNMTm3OOUZr/UmrwWjeLoCrZfENDzPRjK+bS+3EwBs+BlTiprJGTkrBg"}}, "unsigned": {"age_ts": 1570040353228}}f[eQ[_$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 92}{"auth_events": ["$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM", "$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8"], "prev_events": ["$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8"], "type": "m.room.power_levels", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"users": {"@anon-20191002_181700-31:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040352611, "hashes": {"sha256": "RhDbOcP2MNnAYJKgLp7nYKiWK/MyOmHGN8uhm4LpgaM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Lv857pb3IwNgms4adMAfFD4Mtb3+nnMuHy/3IoBHCIA+cIWzRid9aJWg7QXi1vXVK+gMpf3jG7Vk8X+6TSlCQ"}}, "unsigned": {"age_ts": 1570040352611}}pZeQ[s$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 91}{"auth_events": ["$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM"], "prev_events": ["$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM"], "type": "m.room.member", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-31", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-31:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040352004, "hashes": {"sha256": "C3pf0KTpoBwb9EEValzB6Io50u/s0YkWvc1uSf2pTww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I/xIoOTa6V8VTH+E1a4599ERz+d3sXfU7+0f6YtwefFaBOm4+qUp71SeNRRm4Mm7KVWRZzVDfKd2inRKUvJSBQ"}}, "unsigned": {"age_ts": 1570040352004}}dYeQ[[$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 90}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-31:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040351327, "hashes": {"sha256": "KNttIlq67EZHdI7MHO7Ei/2Ni/Ely8lMwebUSARxpG8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+hvALpYgeU1Nxe54c7sRdAQJ+zqd1E2ChSvf0P+W1yvqyffIllkPv2FdNr/O1OWTjXN292QEAJcK5HuPDMRFCg"}}, "unsigned": {"age_ts": 1570040351327}} iFd2j8 Z & [ , a . ^ % ] $y@Xy/p8K Vf,u;8F [@anon-20191002_181700-31:localhost:8800a&\8E [@anon-20191002_181700-30:localhost:8800a&\8D [@anon-20191002_181700-29:localhost:8800a&\=C [@anon-20191002_181700-28:localhost:8800m&\8B [@anon-20191002_181700-28:localhost:8800a&\ [@anon-20191002_181700-26:localhost:8800a&\<= [  @anon-20191002_181700-25:localhost:8800m&\T8< [@anon-20191002_181700-25:localhost:8800a&\<; [  @anon-20191002_181700-24:localhost:8800m&\S8: [@anon-20191002_181700-24:localhost:8800a&\<9 [  @anon-20191002_181700-22:localhost:8800m&\S=8 [ @anon-20191002_181700-23:localhost:8800m&\ 087 [@anon-20191002_181700-23:localhost:8800a&\86 [@anon-20191002_181700-22:localhost:8800a&\=5 [  @anon-20191002_181700-21:localhost:8800m&\L84 [@anon-20191002_181700-21:localhost:8800a&\?3 [@anon-20191002_181700-20:localhost:8800m&\*@. [ @anon-20191002_181700-16:localhost:8800m&\4 81 [@anon-20191002_181700-19:localhost:8800a&\80 [@anon-20191002_181700-18:localhost:8800a&\8/ [@anon-20191002_181700-17:localhost:8800a&\82 [@anon-20191002_181700-20:localhost:8800a&\8- [@anon-20191002_181700-16:localhost:8800a&\8, [@anon-20191002_181700-15:localhost:8800a&\8+ [@anon-20191002_181700-14:localhost:8800a&\8* [@anon-20191002_181700-12:localhost:8800a&\8) [@anon-20191002_181700-13:localhost:8800a&\8( [@anon-20191002_181700-11:localhost:8800a&\8' [@anon-20191002_181700-10:localhost:8800a&\7& Y@anon-20191002_181700-9:localhost:8800a&\7% Y@anon-20191002_181700-8:localhost:8800a&\7$ Y@anon-20191002_181700-7:localhost:8800a&\7# Y@anon-20191002_181700-6:localhost:8800a&\7" Y@anon-20191002_181700-5:localhost:8800a&\7! Y@anon-20191002_181700-4:localhost:8800a&\) =@spyglass:localhost:8800a&\( ;@02login:localhost:8800a&\8 [@anon-20191002_181700-3a:localhost:8800a&\7 Y@anon-20191002_181700-2:localhost:8800a&\7 Y@anon-20191002_181700-1:localhost:8800a&\0 K@chrtestuser-39-:localhost:8800a&\0 K@chrtestuser-10-:localhost:8800a&\1 M@chrtestuser-233-:localhost:8800a&\1 M@chrtestuser-163-:localhost:8800a&\1 M@chrtestuser-125-:localhost:8800a&\1 M@chrtestuser-124-:localhost:8800a&\1 M@chrtestuser-123-:localhost:8800a&\0 K@chrtestuser-93-:localhost:8800a&\- A@user-upper:localhost:8800m&\- A@mycooluser:localhost:8800m&\2 K@chrtestuser-92-:localhost:8800m&\2 K@chrtestuser-64-:localhost:8800m&\2 K@chrtestuser-63-:localhost:8800m&\2 K@chrtestuser-58-:localhost:8800m&\0 K@chrtestuser-91-:localhost:8800a&\2 K@chrtestuser-34-:localhost:8800m&\2 K@chrtestuser-33-:localhost:8800m&\B k@01register-user-20191002_181700:localhost:8800m&\0 K@chrtestuser-64-:localhost:8800a&\0 K@chrtestuser-92-:localhost:8800a&\0 K@chrtestuser-63-:localhost:8800a&\0 K@chrtestuser-58-:localhost:8800a&\0 K@chrtestuser-34-:localhost:8800a&\0 K@chrtestuser-33-:localhost:8800a&\+ A@mycooluser:localhost:8800a&\+ A@user-upper:localhost:8800a&\@ k@01register-user-20191002_181700:localhost:8800a&\ BHV d * r 8 a ' y ?  c ){AYl-z@J]j*t4= [  @anon-20191002_181700-79:localhost:8800m&\T8 [@anon-20191002_181700-79:localhost:8800a&\= [  @anon-20191002_181700-77:localhost:8800m&\ t8 [@anon-20191002_181700-77:localhost:8800a&\= [  @anon-20191002_181700-75:localhost:8800m&\N8 [@anon-20191002_181700-75:localhost:8800a&\= [  @anon-20191002_181700-74:localhost:8800m&\J8 [@anon-20191002_181700-74:localhost:8800a&\8 [@anon-20191002_181700-73:localhost:8800a&\< [  @anon-20191002_181700-71:localhost:8800m&\S=~ [  @anon-20191002_181700-70:localhost:8800m&\8} [@anon-20191002_181700-71:localhost:8800a&\8| [@anon-20191002_181700-70:localhost:8800a&\={ [  @anon-20191002_181700-68:localhost:8800m&\i8z [@anon-20191002_181700-68:localhost:8800a&\=y [  @anon-20191002_181700-67:localhost:8800m&\T8x [@anon-20191002_181700-67:localhost:8800a&\8N [@anon-20191002_181700-35:localhost:8800a&\=M [  @anon-20191002_181700-34:localhost:8800m&\>8L [@anon-20191002_181700-34:localhost:8800a&\=K [  @anon-20191002_181700-33:localhost:8800m&\A8J [@anon-20191002_181700-33:localhost:8800a&\=I [  @anon-20191002_181700-32:localhost:8800m&\A8H [@anon-20191002_181700-32:localhost:8800a&\=G [  @anon-20191002_181700-31:localhost:8800m&\A hqT7iK- }/Y a E ( ~ c H -  n Q 4  ,x i <  [ . zM m@`3S&sFe8 X3!13:localhost:42455 M3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 ,Q!ABHbfUdkHCJksMsaUt:localhost:8800"",Q!ABHbfUdkHCJksMsaUt:localhost:8800!!,Q!ABHbfUdkHCJksMsaUt:localhost:8800  ,Q!ABHbfUdkHCJksMsaUt:localhost:8800+Q !ABHbfUdkHCJksMsaUt:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AjjrNwXmPTCruHxaJq:localhost:8800 {{,Q!ABHbfUdkHCJksMsaUt:localhost:8800##,Q!AjjrNwXmPTCruHxaJq:localhost:8800 zz,Q!AjjrNwXmPTCruHxaJq:localhost:8800yy,Q!AjjrNwXmPTCruHxaJq:localhost:8800xx,Q!AjjrNwXmPTCruHxaJq:localhost:8800ww,Q!AjjrNwXmPTCruHxaJq:localhost:8800vv,Q!AjjrNwXmPTCruHxaJq:localhost:8800uu,Q!AjjrNwXmPTCruHxaJq:localhost:8800tt,Q!AjjrNwXmPTCruHxaJq:localhost:8800ss+Q !AjjrNwXmPTCruHxaJq:localhost:8800rr,Q!AYFqrmxwClFQlcTTYq:localhost:8800 r r,Q!AYFqrmxwClFQlcTTYq:localhost:8800 q q,Q!AYFqrmxwClFQlcTTYq:localhost:8800 p p,Q!AYFqrmxwClFQlcTTYq:localhost:8800 o o+Q !AYFqrmxwClFQlcTTYq:localhost:8800 n n,Q!AWfbViAZparIjmDaVT:localhost:8800 ,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800+Q !AWfbViAZparIjmDaVT:localhost:8800,Q!AOEdqVKPFddrqbKPOL:localhost:8800  ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 +Q !AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800+Q !AMLmLqizBFklpqKibP:localhost:88001!9:localhost:42455 1!9:localhost:42455 1 !9:localhost:42455 1!9:localhost:42455 1!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:42455 1 !6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1 !5:localhost:42455 1!5:localhost:42455 3 !13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3 !12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3 !11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3 !10:localhost:42455 3!10:localhost:42455 1!0:localhost:44405 1!0:localhost:42455 g g1!0:localhost:42455 c c1 !0:localhost:42455 b b1!0:localhost:42455 a a1!0:localhost:41985  1!0:localhost:37265 nS `[.5 QEkr  y;hA |LS&> ] 0 $ C  puH c 6  V )N!n ,Q!BKZJsoFNhiLTDYNclB:localhost:8800ff,Q!BKZJsoFNhiLTDYNclB:localhost:8800ee*Q!BDASLhdcKfNwxCTCSg:localhost:8800cc,Q!BGbJEmJRVJGlZFQbZe:localhost:8800**,Q!BGbJEmJRVJGlZFQbZe:localhost:8800..,Q!BkzROHxDAfKIzYpmPV:localhost:8800ll +Q !BfEFIDBthhkweqfhir:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800 Q*Q!BDASLhdcKfNwxCTCSg:localhost:8800dd,Q!BGbJEmJRVJGlZFQbZe:localhost:8800))+Q !BGbJEmJRVJGlZFQbZe:localhost:8800((*Q!BDASLhdcKfNwxCTCSg:localhost:8800aa*Q!BDASLhdcKfNwxCTCSg:localhost:8800bb,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BPNyKqmwcpGxIbGFZG:localhost:8800~,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 -,Q!BPNyKqmwcpGxIbGFZG:localhost:8800+Q !BPNyKqmwcpGxIbGFZG:localhost:8800)Q !BDASLhdcKfNwxCTCSg:localhost:8800``,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !BKZJsoFNhiLTDYNclB:localhost:8800cc,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800hh,Q!BKZJsoFNhiLTDYNclB:localhost:8800gg,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800nn,Q!BkzROHxDAfKIzYpmPV:localhost:8800mm,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BpTqIemsWFZIqTcgJO:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 pp,Q!BkzROHxDAfKIzYpmPV:localhost:8800 oo,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BkzROHxDAfKIzYpmPV:localhost:8800gg,Q!BkzROHxDAfKIzYpmPV:localhost:8800hh+Q !BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800+Q !BoyzlWNkRPncpDjBDg:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 qq,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BkzROHxDAfKIzYpmPV:localhost:8800kk,Q!BkzROHxDAfKIzYpmPV:localhost:8800jj,Q!BkzROHxDAfKIzYpmPV:localhost:8800ii,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 *Q!BDASLhdcKfNwxCTCSg:localhost:8800ee,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800 00,Q!BGbJEmJRVJGlZFQbZe:localhost:8800//,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800--,Q!BGbJEmJRVJGlZFQbZe:localhost:8800,,,Q!BGbJEmJRVJGlZFQbZe:localhost:8800++,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800dd,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BoyzlWNkRPncpDjBDg:localhost:8800 hqT7iK- }/Y a E ( ~ c H -  n Q 4  ,x i <  [ . zM m@`3S&sFe8 X3!13:localhost:42455 M3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 ,Q!ABHbfUdkHCJksMsaUt:localhost:8800"",Q!ABHbfUdkHCJksMsaUt:localhost:8800!!,Q!ABHbfUdkHCJksMsaUt:localhost:8800  ,Q!ABHbfUdkHCJksMsaUt:localhost:8800+Q !ABHbfUdkHCJksMsaUt:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AjjrNwXmPTCruHxaJq:localhost:8800 {{,Q!ABHbfUdkHCJksMsaUt:localhost:8800##,Q!AjjrNwXmPTCruHxaJq:localhost:8800 zz,Q!AjjrNwXmPTCruHxaJq:localhost:8800yy,Q!AjjrNwXmPTCruHxaJq:localhost:8800xx,Q!AjjrNwXmPTCruHxaJq:localhost:8800ww,Q!AjjrNwXmPTCruHxaJq:localhost:8800vv,Q!AjjrNwXmPTCruHxaJq:localhost:8800uu,Q!AjjrNwXmPTCruHxaJq:localhost:8800tt,Q!AjjrNwXmPTCruHxaJq:localhost:8800ss+Q !AjjrNwXmPTCruHxaJq:localhost:8800rr,Q!AYFqrmxwClFQlcTTYq:localhost:8800 r r,Q!AYFqrmxwClFQlcTTYq:localhost:8800 q q,Q!AYFqrmxwClFQlcTTYq:localhost:8800 p p,Q!AYFqrmxwClFQlcTTYq:localhost:8800 o o+Q !AYFqrmxwClFQlcTTYq:localhost:8800 n n,Q!AWfbViAZparIjmDaVT:localhost:8800 ,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800+Q !AWfbViAZparIjmDaVT:localhost:8800,Q!AOEdqVKPFddrqbKPOL:localhost:8800  ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 +Q !AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800+Q !AMLmLqizBFklpqKibP:localhost:88001!9:localhost:42455 1!9:localhost:42455 1 !9:localhost:42455 1!9:localhost:42455 1!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:42455 1 !6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1 !5:localhost:42455 1!5:localhost:42455 3 !13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3 !12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3 !11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3 !10:localhost:42455 3!10:localhost:42455 1!0:localhost:44405 1!0:localhost:42455 g g1!0:localhost:42455 c c1 !0:localhost:42455 b b1!0:localhost:42455 a a1!0:localhost:41985  1!0:localhost:37265 nS `[.5 QEkr  y;hA |LS&> ] 0 $ C  puH c 6  V )N!n ,Q!BKZJsoFNhiLTDYNclB:localhost:8800ff,Q!BKZJsoFNhiLTDYNclB:localhost:8800ee*Q!BDASLhdcKfNwxCTCSg:localhost:8800cc,Q!BGbJEmJRVJGlZFQbZe:localhost:8800**,Q!BGbJEmJRVJGlZFQbZe:localhost:8800..,Q!BkzROHxDAfKIzYpmPV:localhost:8800ll +Q !BfEFIDBthhkweqfhir:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800 Q*Q!BDASLhdcKfNwxCTCSg:localhost:8800dd,Q!BGbJEmJRVJGlZFQbZe:localhost:8800))+Q !BGbJEmJRVJGlZFQbZe:localhost:8800((*Q!BDASLhdcKfNwxCTCSg:localhost:8800aa*Q!BDASLhdcKfNwxCTCSg:localhost:8800bb,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BPNyKqmwcpGxIbGFZG:localhost:8800~,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 -,Q!BPNyKqmwcpGxIbGFZG:localhost:8800+Q !BPNyKqmwcpGxIbGFZG:localhost:8800)Q !BDASLhdcKfNwxCTCSg:localhost:8800``,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !BKZJsoFNhiLTDYNclB:localhost:8800cc,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800hh,Q!BKZJsoFNhiLTDYNclB:localhost:8800gg,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800nn,Q!BkzROHxDAfKIzYpmPV:localhost:8800mm,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BpTqIemsWFZIqTcgJO:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 pp,Q!BkzROHxDAfKIzYpmPV:localhost:8800 oo,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BkzROHxDAfKIzYpmPV:localhost:8800gg,Q!BkzROHxDAfKIzYpmPV:localhost:8800hh+Q !BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800+Q !BoyzlWNkRPncpDjBDg:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 qq,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BkzROHxDAfKIzYpmPV:localhost:8800kk,Q!BkzROHxDAfKIzYpmPV:localhost:8800jj,Q!BkzROHxDAfKIzYpmPV:localhost:8800ii,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 *Q!BDASLhdcKfNwxCTCSg:localhost:8800ee,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800 00,Q!BGbJEmJRVJGlZFQbZe:localhost:8800//,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800--,Q!BGbJEmJRVJGlZFQbZe:localhost:8800,,,Q!BGbJEmJRVJGlZFQbZe:localhost:8800++,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800dd,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BoyzlWNkRPncpDjBDg:localhost:8800 -PH @ 8 0 ( x ph`XPG<1VeL$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUsha256{vo}6f!a!̃`VeL$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEsha256n%p{V}Uمq'lVeL$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3Msha256釐Yӣ֧GsVeL$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qsha256zNCɐ*@#;B"'w=i7BTVeL$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcsha256o!X`v8$DOΔ3VeL$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Msha256ExR6ghXʘSo?8wwVeL$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Msha256) (7 z9%[nfVeL$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIsha256rІN,oH=(P{әVeL$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrksha2566?|<8DVDꦑ%P:#I(h\VeL$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMsha256@6Ibtgmf4qSCx+3V~eL$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAsha256tv=yc?a6)5eBV}eL$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ksha256Xv09!Qċom6SYV|eL$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcsha256.צ]@Qsü(V{eL$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhssha256a?}A@4E &7x>FVzeL$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHssha256 }i^w;?"ۿ iLG{VyeL$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgsha256N^/cj44| a hVxeL$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68sha256 : _^.5/Tw:{VweL$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4sha256~ZO~2aH;XO ̝'noibUPVveL$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwksha256. HmuH[s\ 86 RG + VueL$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Asha256OMgޏ-p6^<@Bd~ZVteL$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAsha256$ Vc+ vӜ#~HVoeL$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMsha256츼}R5{@goO:nNAVneL$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwsha256,"k|i%GE:-xȌVmeL$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcsha256W?+{u*Q!AMLmLqizBFklpqKibP:localhost:8800  =*Q!AMLmLqizBFklpqKibP:localhost:8800 <*Q!AMLmLqizBFklpqKibP:localhost:8800 ;*Q!AMLmLqizBFklpqKibP:localhost:8800 :*Q!AMLmLqizBFklpqKibP:localhost:8800 9*Q!AMLmLqizBFklpqKibP:localhost:8800 8*Q!AMLmLqizBFklpqKibP:localhost:8800 71!9:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 1!0:localhost:42455 g TU P % yuw} # NR )LN# { H's y! V X -  J{P oDqF%TR })' T +*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800LL*Q!BrssELMbasSzTFpIXm:localhost:8800KK*Q!BrssELMbasSzTFpIXm:localhost:8800JJ*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800QQ*Q!BrssELMbasSzTFpIXm:localhost:8800PP*Q!BrssELMbasSzTFpIXm:localhost:8800OO*Q!BrssELMbasSzTFpIXm:localhost:8800NN*Q!BrssELMbasSzTFpIXm:localhost:8800MM*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BkzROHxDAfKIzYpmPV:localhost:8800jl*Q!BkzROHxDAfKIzYpmPV:localhost:8800ik*Q!BkzROHxDAfKIzYpmPV:localhost:8800mo*Q!BkzROHxDAfKIzYpmPV:localhost:8800km*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800RR*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BfEFIDBthhkweqfhir:localhost:8800 +V*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800np +*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800qs*Q!BkzROHxDAfKIzYpmPV:localhost:8800pr*Q!BkzROHxDAfKIzYpmPV:localhost:8800oq*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800J*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BKZJsoFNhiLTDYNclB:localhost:8800hZ*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800hj*Q!BkzROHxDAfKIzYpmPV:localhost:8800gi*Q!BkzROHxDAfKIzYpmPV:localhost:8800ln*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800+*Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800 my^C' cG+ g K /  v ] D +  x ] B ' u J  s H qFoDmBk@i>g<e:c8 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AjjrNwXmPTCruHxaJq:localhost:8800{{*Q!AjjrNwXmPTCruHxaJq:localhost:8800zz*Q!AjjrNwXmPTCruHxaJq:localhost:8800yy*Q!AjjrNwXmPTCruHxaJq:localhost:8800xx*Q!AjjrNwXmPTCruHxaJq:localhost:8800ww*Q!AjjrNwXmPTCruHxaJq:localhost:8800vv*Q!AjjrNwXmPTCruHxaJq:localhost:8800uu*Q!AjjrNwXmPTCruHxaJq:localhost:8800tt*Q!AjjrNwXmPTCruHxaJq:localhost:8800ss*Q!AjjrNwXmPTCruHxaJq:localhost:8800rr*Q!AYFqrmxwClFQlcTTYq:localhost:8800 r r*Q!AYFqrmxwClFQlcTTYq:localhost:8800 q q*Q!AYFqrmxwClFQlcTTYq:localhost:8800 p p*Q!AYFqrmxwClFQlcTTYq:localhost:8800 o o*Q!AYFqrmxwClFQlcTTYq:localhost:8800 n n*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AOEdqVKPFddrqbKPOL:localhost:8800  *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AMLmLqizBFklpqKibP:localhost:8800 *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800 *Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!ABHbfUdkHCJksMsaUt:localhost:8800##*Q!ABHbfUdkHCJksMsaUt:localhost:8800""*Q!ABHbfUdkHCJksMsaUt:localhost:8800!!*Q!ABHbfUdkHCJksMsaUt:localhost:8800  *Q!ABHbfUdkHCJksMsaUt:localhost:8800*Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 1!0:localhost:44405 1!0:localhost:42455 g g1!0:localhost:42455 c c1!0:localhost:42455 b b1!0:localhost:42455 a a1!0:localhost:41985  1!0:localhost:37265 sU  V mJ +RB}L!uw% { PT } N #  T y oH D#qN' )y{P R ' ) % Fs*Q!BKZJsoFNhiLTDYNclB:localhost:8800hh*Q!BKZJsoFNhiLTDYNclB:localhost:8800gg*Q!BKZJsoFNhiLTDYNclB:localhost:8800ff*Q!BKZJsoFNhiLTDYNclB:localhost:8800ee*Q!BGbJEmJRVJGlZFQbZe:localhost:8800***Q!BGbJEmJRVJGlZFQbZe:localhost:8800))*Q!BGbJEmJRVJGlZFQbZe:localhost:8800..*Q!BGbJEmJRVJGlZFQbZe:localhost:8800--*Q!BGbJEmJRVJGlZFQbZe:localhost:8800,,*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800oo*Q!BkzROHxDAfKIzYpmPV:localhost:8800nn*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BGbJEmJRVJGlZFQbZe:localhost:8800//*Q!BrssELMbasSzTFpIXm:localhost:8800PP*Q!BrssELMbasSzTFpIXm:localhost:8800OO*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800pp*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BGbJEmJRVJGlZFQbZe:localhost:8800++*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BGbJEmJRVJGlZFQbZe:localhost:880000 V*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800qq*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800KK*Q!BrssELMbasSzTFpIXm:localhost:8800JJ*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800LL*Q!BkzROHxDAfKIzYpmPV:localhost:8800ii *Q!BGbJEmJRVJGlZFQbZe:localhost:8800(((Q!BDASLhdcKfNwxCTCSg:localhost:8800ee+*Q!BkzROHxDAfKIzYpmPV:localhost:8800jj*Q!BKZJsoFNhiLTDYNclB:localhost:8800cc(Q!BDASLhdcKfNwxCTCSg:localhost:8800dd(Q!BDASLhdcKfNwxCTCSg:localhost:8800cc(Q!BDASLhdcKfNwxCTCSg:localhost:8800bb(Q!BDASLhdcKfNwxCTCSg:localhost:8800aa(Q!BDASLhdcKfNwxCTCSg:localhost:8800``*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800kk*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800ll*Q!BrssELMbasSzTFpIXm:localhost:8800NN*Q!BrssELMbasSzTFpIXm:localhost:8800MM*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BKZJsoFNhiLTDYNclB:localhost:8800dd*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800hh*Q!BkzROHxDAfKIzYpmPV:localhost:8800gg*Q!BkzROHxDAfKIzYpmPV:localhost:8800mm*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800 a} { y w u sqomkigeca~[eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800~ZeeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800~YeeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800~XeeQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800~WeeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800~VeeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~UeeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800~TeeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800~SeeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~ReeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800~QeeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800~PeeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~OeeQ$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~NeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800~MeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~LeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800~KeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800~JeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~IeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800~HeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800~GeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~FeeQ$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~EeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800~DeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800~CeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800~BeeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800~AeeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800~@eeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800~?eeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800~>eeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800~=eeQ$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800 lKkr9rLx@~ xR: F  &  M ,  S ! ^  Y ' F@ _ -e3XlR1$0:localhost:42455 (1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA ;1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc 1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y "1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 ;1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2ca1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY_1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoE1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw U1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 W1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 [1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw >1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g Z1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ '1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU }1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY S1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE u1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ w1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0E1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc51e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwE1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI(1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EC1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM 1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs 1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0x1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0v1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0s1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw0e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4~1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY 1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkK1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg61e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE@1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEj1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8=1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ+0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k S}p> wEj8p> } w E , } K 2 y S -  l E  [ 4 qJ#`9vO(e>Y2 oH!1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo 1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8t1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o*0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw_1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ ]1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIm&O$157004183062AwGkL:localhost:8800L&O$157004181959Afmmv:localhost:8800B&O$157004181958ixShg:localhost:8800A&O$157004181857fcmAB:localhost:8800@&O$157004181756ejZNp:localhost:8800?&O$157004181655JUAvO:localhost:8800>&O$157004180752YHMqi:localhost:88007&O$157004180751hMlwg:localhost:88006&O$157004180650ruqIl:localhost:88005&O$157004180549mJBJB:localhost:88004&O$157004180448zlZXD:localhost:88003&O$157004180347MMmFf:localhost:88002&O$157004180045QtsUE:localhost:88001&O$157004179944JKWNJ:localhost:8800/&O$157004179843yDrjz:localhost:8800.&O$157004179742OaMxS:localhost:8800,&O$157004179541PbBIm:localhost:8800*&O$157004179340NSiie:localhost:8800(&O$157004179239LLqht:localhost:8800&&O$157004179138NbBYh:localhost:8800$&O$157004179037FGMFG:localhost:8800#&O$157004178936zuJSX:localhost:8800"&O$157004178835mLAyG:localhost:8800!&O$157004178734ZpFdg:localhost:8800 &O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800 &O$157004176828ZZJWh:localhost:8800 &O$157004176727QjUJj:localhost:8800 &O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403164ksjyG:localhost:8800'$M$15700403163gHYKC:localhost:8800&$M$15700403152dWVZA:localhost:8800%$M$15700403151blJmZ:localhost:8800$$M$15700403140fJvpV:localhost:8800#3$14:localhost:42455 s1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 3$13:localhost:42455 r1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg3$12:localhost:42455 Q1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$11:localhost:42455 P3$10:localhost:42455 O0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w )1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 h1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs31e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM] Gk9D+%r@Q Wv x F  ~ L  R ] X & ^ ,d2j8p> |J1e$0rbDtkdjrcnON7kchQ1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA :1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw T1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY R1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU |1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ &1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g Y1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY 1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 :]1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ v1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 V1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0D1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc/1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwD1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc%1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EB1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y !1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYL1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM 1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0o1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY 1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg51e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4 1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE?1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEi1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB41e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c`1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kf1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8<1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY^1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ*0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 Z1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw = PQX&j8p> v D  } K 2 x S .  n G ] 6 sL%b;xQ*g@lE[4 qJF1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo J1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw^1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMy1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMx1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMw1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIl1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE t&O$157004181756ejZNp:localhost:8800>&O$157004180853KmrHT:localhost:88007&O$157004180752YHMqi:localhost:88006&O$157004180751hMlwg:localhost:88005&O$157004180650ruqIl:localhost:88004&O$157004180549mJBJB:localhost:88003&O$157004180448zlZXD:localhost:88002&O$157004180346TRucp:localhost:88001&O$157004180045QtsUE:localhost:8800/&O$157004179944JKWNJ:localhost:8800.&O$157004179843yDrjz:localhost:8800,&O$157004179742OaMxS:localhost:8800*&O$157004179541PbBIm:localhost:8800(&O$157004179340NSiie:localhost:8800&&O$157004179239LLqht:localhost:8800$&O$157004179138NbBYh:localhost:8800#&O$157004179037FGMFG:localhost:8800"&O$157004178936zuJSX:localhost:8800!&O$157004178835mLAyG:localhost:8800 &O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800 &O$157004176929ezeJB:localhost:8800 &O$157004176828ZZJWh:localhost:8800 &O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800$M$15700403175seOtB:localhost:8800'$M$15700403164ksjyG:localhost:8800&$M$15700403163gHYKC:localhost:8800%$M$15700403152dWVZA:localhost:8800$$M$15700403151blJmZ:localhost:8800#3$14:localhost:42455 r1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg3$13:localhost:42455 q1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg3$12:localhost:42455 P1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$11:localhost:42455 O0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w (1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 g1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas11e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs21e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM\1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8r1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA  $deQ$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "txn_id": "1234", "stream_ordering": 101}{"auth_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk", "$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw"], "type": "m.room.message", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"msgtype": "m.message", "body": "Here is the message content"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040359011, "hashes": {"sha256": "QVBTX2AR0jcKJykqXG3WLWqoBO9oxqii1WeGEdSSuvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6qGjOAIjyTge7N45kOPed/xObciboA5wsJBRU1LylfF7V2z4TRIhuVpM+t82tnyw14+1zf7pZMgKLo8S7AnZAw"}}, "unsigned": {"age_ts": 1570040359011}}ceQ]$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "stream_ordering": 100}{"auth_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk", "$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo"], "type": "m.room.history_visibility", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040358127, "hashes": {"sha256": "/dJ3dkX/msTqoTtxYLpL2AouqtFJAPo9zdxVowBBPtc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tchycd9vstp6RHCBipWA+rl4ITSEn04kSPDamSiPMwls72fSS6b5m1xMKOpjqiulsPf2ZrRXgHogGppoBjq5Dw"}}, "unsigned": {"age_ts": 1570040358127}}pbeQ[s$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "stream_ordering": 99}{"auth_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk", "$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk"], "type": "m.room.join_rules", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040357411, "hashes": {"sha256": "8kYWDvYLx0Av9DerN6O2solRsrjSp0SNppECvLuN7ao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yL9Z0Li3L0ea972MfhL63Z1tNPPCUVGhmpgoSW9z1wXTa7yvqZXUS1EML4AUXnQ/yQMiilEK5i1bJfSvo9beDQ"}}, "unsigned": {"age_ts": 1570040357411}}faeQ[_$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "stream_ordering": 98}{"auth_events": ["$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "type": "m.room.power_levels", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"users": {"@anon-20191002_181700-32:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040356820, "hashes": {"sha256": "+PME7Lx/zDfTOkXSZxTbMr1IQLAvhKRVzra3GZPlXFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ly2etxVLFIAXiTwBmmng/qsArCTVkvDbpoI4Zv6B2CxNLAQm4y1Zl9cpvIXA63cF0LX3gv5q0hZmwr568wFwCg"}}, "unsigned": {"age_ts": 1570040356820}} |X a  w # >B]a|ye'Q [$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68m.room.member!wvnfKBSrUlfNmYoeil:localhost:8800mmB@anon-20191002_181700-36:localhost:8800x e'Q  [$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4m.room.create!wvnfKBSrUlfNmYoeil:localhost:8800mm@anon-20191002_181700-36:localhost:8800 we)Q [$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkm.room.message!NhWgOTYzEPRwAxRQvS:localhost:8800mRmܱ@anon-20191002_181700-35:localhost:8800+ve?Q [$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Am.room.history_visibility!NhWgOTYzEPRwAxRQvS:localhost:8800m/m@anon-20191002_181700-35:localhost:8800#ue/Q [$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAm.room.join_rules!NhWgOTYzEPRwAxRQvS:localhost:8800mm@anon-20191002_181700-35:localhost:8800%te3Q [$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQm.room.power_levels!NhWgOTYzEPRwAxRQvS:localhost:8800mӗm@anon-20191002_181700-35:localhost:8800se'Q [$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcm.room.member!NhWgOTYzEPRwAxRQvS:localhost:8800mхm@anon-20191002_181700-35:localhost:8800r e'Q  [$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkm.room.create!NhWgOTYzEPRwAxRQvS:localhost:8800mZmϥ@anon-20191002_181700-35:localhost:8800 qe)Q [$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYm.room.message!scyFsXcUIJiLIMwWMY:localhost:8800mm<@anon-20191002_181700-34:localhost:8800+pe?Q [$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMm.room.history_visibility!scyFsXcUIJiLIMwWMY:localhost:8800mšm@anon-20191002_181700-34:localhost:8800#oe/Q [$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwm.room.join_rules!scyFsXcUIJiLIMwWMY:localhost:8800mÊmB@anon-20191002_181700-34:localhost:8800%ne3Q [$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm.room.power_levels!scyFsXcUIJiLIMwWMY:localhost:8800m{m@anon-20191002_181700-34:localhost:8800me'Q [$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgm.room.member!scyFsXcUIJiLIMwWMY:localhost:8800mm@anon-20191002_181700-34:localhost:8800l e'Q  [$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMm.room.create!scyFsXcUIJiLIMwWMY:localhost:8800mmK@anon-20191002_181700-34:localhost:8800 ke)Q [$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsm.room.message!aWJOsiuJONOvjKWEjO:localhost:8800mNm@anon-20191002_181700-33:localhost:8800+je?Q [$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYm.room.history_visibility!aWJOsiuJONOvjKWEjO:localhost:8800mm@anon-20191002_181700-33:localhost:8800#ie/Q [$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0m.room.join_rules!aWJOsiuJONOvjKWEjO:localhost:8800mm@anon-20191002_181700-33:localhost:8800%he3Q [$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRom.room.power_levels!aWJOsiuJONOvjKWEjO:localhost:8800mm@anon-20191002_181700-33:localhost:8800ge'Q [$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQm.room.member!aWJOsiuJONOvjKWEjO:localhost:8800mmL@anon-20191002_181700-33:localhost:8800f e'Q  [$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4m.room.create!aWJOsiuJONOvjKWEjO:localhost:8800m(m@anon-20191002_181700-33:localhost:8800 ee)Q [$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUm.room.message!BDASLhdcKfNwxCTCSg:localhost:8800mcm@anon-20191002_181700-32:localhost:8800+de?Q [$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwm.room.history_visibility!BDASLhdcKfNwxCTCSg:localhost:8800mm1@anon-20191002_181700-32:localhost:8800#ce/Q [$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDom.room.join_rules!BDASLhdcKfNwxCTCSg:localhost:8800m#mn@anon-20191002_181700-32:localhost:8800%be3Q [$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kkm.room.power_levels!BDASLhdcKfNwxCTCSg:localhost:8800mm@anon-20191002_181700-32:localhost:8800 #.6 ` n  / = m <j r9AkyeeQ/ $dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rulesg~eQ3 $5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels }eQ'[$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800joina|eQ' $uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.createm{eQ? $e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibilityezeQ/ $EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rulesgyeQ3 $6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels xeQ'[$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800joinaweQ' $b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800m.room.createmueQ? $Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibilityeteQ/ $70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rulesgveQ3 $5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels reQ'[$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800joinaqeQ' $9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800m.room.creatempeQ? $YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibilityeoeQ/ $nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rulesgneQ3 $TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levels meQ'[$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800joinaleQ' $tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800m.room.createmkeQ? $4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibilityejeQ/ $FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rulesgieQ3 $8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels heQ'[$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800joinageQ' $E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.createmfeQ? $ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibilityeeeQ/ $0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rulesgdeQ3 $xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levels ceQ'[$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800joinabeQ' $q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.createmaeQ? $oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibilitye`eQ/ $iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rulesg_eQ3 $BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels ^eQ'[$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800joina]eQ' $gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800m.room.createm\eQ? $I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility FlDpu\+kReL3X@(hP8  x:" ~ P ( ` 8  p H X 0  h @ xP(`8pH X0 mF'Q!ABHbfUdkHCJksMsaUt:localhost:8800 3!11:localhost:42455 1!0:localhost:41985 3!11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 :'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AjjrNwXmPTCruHxaJq:localhost:8800z'Q!AjjrNwXmPTCruHxaJq:localhost:8800y'Q!AjjrNwXmPTCruHxaJq:localhost:8800x'Q!AjjrNwXmPTCruHxaJq:localhost:8800w'Q!AjjrNwXmPTCruHxaJq:localhost:8800v'Q!AjjrNwXmPTCruHxaJq:localhost:8800u'Q!AjjrNwXmPTCruHxaJq:localhost:8800t'Q!AjjrNwXmPTCruHxaJq:localhost:8800s'Q!AjjrNwXmPTCruHxaJq:localhost:8800r'Q!AjjrNwXmPTCruHxaJq:localhost:8800q'Q!AYFqrmxwClFQlcTTYq:localhost:8800 Y'Q!AYFqrmxwClFQlcTTYq:localhost:8800 X'Q!AYFqrmxwClFQlcTTYq:localhost:8800 W'Q!AYFqrmxwClFQlcTTYq:localhost:8800 V'Q!AYFqrmxwClFQlcTTYq:localhost:8800 U'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:88001!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 ~1!5:localhost:42455 }1!5:localhost:42455 |1!5:localhost:42455 {1!0:localhost:44405 1!0:localhost:42455 N1!0:localhost:42455 M1!0:localhost:42455 L1!0:localhost:42455 K1!0:localhost:37265 @X(  { SHph h @   P(pH`8`08P(Xx Hx p @h   (  ` X 0 8@P'Q!BPNyKqmwcpGxIbGFZG:localhost:8800k'Q!BPNyKqmwcpGxIbGFZG:localhost:8800j'Q!BkzROHxDAfKIzYpmPV:localhost:8800i'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800o'Q!BkzROHxDAfKIzYpmPV:localhost:8800n'Q!BfEFIDBthhkweqfhir:localhost:88000('Q!BGbJEmJRVJGlZFQbZe:localhost:8800-'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BKZJsoFNhiLTDYNclB:localhost:8800; &Q!BDASLhdcKfNwxCTCSg:localhost:8800_'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 8x'Q!BGbJEmJRVJGlZFQbZe:localhost:8800.'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800/'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800p'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BrssELMbasSzTFpIXm:localhost:8800P'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800h'Q!BkzROHxDAfKIzYpmPV:localhost:8800g'Q!BkzROHxDAfKIzYpmPV:localhost:8800f'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800k'Q!BkzROHxDAfKIzYpmPV:localhost:8800m'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800 P&Q!BDASLhdcKfNwxCTCSg:localhost:8800a&Q!BDASLhdcKfNwxCTCSg:localhost:8800` 0('Q!BrssELMbasSzTFpIXm:localhost:8800Q'Q!BrssELMbasSzTFpIXm:localhost:8800N'Q!BrssELMbasSzTFpIXm:localhost:8800M'Q!BrssELMbasSzTFpIXm:localhost:8800L'Q!BrssELMbasSzTFpIXm:localhost:8800K'Q!BrssELMbasSzTFpIXm:localhost:8800I 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'&Q!BDASLhdcKfNwxCTCSg:localhost:8800d&Q!BDASLhdcKfNwxCTCSg:localhost:8800c&Q!BDASLhdcKfNwxCTCSg:localhost:8800b'Q!BkzROHxDAfKIzYpmPV:localhost:8800l'Q!BPNyKqmwcpGxIbGFZG:localhost:8800f'Q!BKZJsoFNhiLTDYNclB:localhost:8800@'Q!BKZJsoFNhiLTDYNclB:localhost:8800?'Q!BKZJsoFNhiLTDYNclB:localhost:8800>'Q!BKZJsoFNhiLTDYNclB:localhost:8800='Q!BKZJsoFNhiLTDYNclB:localhost:8800<'Q!BrssELMbasSzTFpIXm:localhost:8800OP'Q!BPNyKqmwcpGxIbGFZG:localhost:8800h'Q!BPNyKqmwcpGxIbGFZG:localhost:8800g'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BrssELMbasSzTFpIXm:localhost:8800J'Q!BPNyKqmwcpGxIbGFZG:localhost:8800i'Q!BGbJEmJRVJGlZFQbZe:localhost:8800)'Q!BGbJEmJRVJGlZFQbZe:localhost:8800*'Q!BGbJEmJRVJGlZFQbZe:localhost:8800+'Q!BGbJEmJRVJGlZFQbZe:localhost:8800('Q!BGbJEmJRVJGlZFQbZe:localhost:8800,'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800j .VW X  Y  Z  [  \ ]^ _ ` _ZUPT Qe!vJQYmOxOBLwFKzYkNj:localhost:8800$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4T Qe!kkgEEVUJynguTqAoWD:localhost:8800$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwT Qe!kkgEEVUJynguTqAoWD:localhost:8800$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EgTQe!kkgEEVUJynguTqAoWD:localhost:8800$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLETQe!kkgEEVUJynguTqAoWD:localhost:8800$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0TQe!kkgEEVUJynguTqAoWD:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QTQe!kkgEEVUJynguTqAoWD:localhost:8800$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0TQe!dUnULFLGtgaVdwHtnz:localhost:8800$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8TQe!dUnULFLGtgaVdwHtnz:localhost:8800$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0TQe!dUnULFLGtgaVdwHtnz:localhost:8800$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUTQe!dUnULFLGtgaVdwHtnz:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1ATQe!dUnULFLGtgaVdwHtnz:localhost:8800$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0SQe!aWbcZNVBalJilCEsdr:localhost:8800$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUS~Qe~!aWbcZNVBalJilCEsdr:localhost:8800$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAES}Qe}!aWbcZNVBalJilCEsdr:localhost:8800$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3MS|Qe|!aWbcZNVBalJilCEsdr:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1QS{Qe{!aWbcZNVBalJilCEsdr:localhost:8800$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcSzQez!kxTDuIasPNpXtiRsif:localhost:8800$nzIpPfyeKHRFGxE7irJSyrFr8stmD4wCpB0YX3jrI9YSyQey!kxTDuIasPNpXtiRsif:localhost:8800$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6MSxQex!kxTDuIasPNpXtiRsif:localhost:8800$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__MSwQew!kxTDuIasPNpXtiRsif:localhost:8800$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdISvQev!kxTDuIasPNpXtiRsif:localhost:8800$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkSuQeu!kxTDuIasPNpXtiRsif:localhost:8800$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMStQet!kxTDuIasPNpXtiRsif:localhost:8800$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsASsQes!kxTDuIasPNpXtiRsif:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kSrQer!kxTDuIasPNpXtiRsif:localhost:8800$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcSqQeq!wvnfKBSrUlfNmYoeil:localhost:8800$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsSpQep!wvnfKBSrUlfNmYoeil:localhost:8800$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsSoQeo!wvnfKBSrUlfNmYoeil:localhost:8800$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgSnQen!wvnfKBSrUlfNmYoeil:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68SmQem!wvnfKBSrUlfNmYoeil:localhost:8800$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4SlQel!NhWgOTYzEPRwAxRQvS:localhost:8800$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97ASkQek!NhWgOTYzEPRwAxRQvS:localhost:8800$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUASjQej!NhWgOTYzEPRwAxRQvS:localhost:8800$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQSiQei!NhWgOTYzEPRwAxRQvS:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79RcShQeh!NhWgOTYzEPRwAxRQvS:localhost:8800$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkSgQeg!scyFsXcUIJiLIMwWMY:localhost:8800$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMSfQef!scyFsXcUIJiLIMwWMY:localhost:8800$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwSeQee!scyFsXcUIJiLIMwWMY:localhost:8800$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcSdQed!scyFsXcUIJiLIMwWMY:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgScQec!scyFsXcUIJiLIMwWMY:localhost:8800$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMSbQeb!aWJOsiuJONOvjKWEjO:localhost:8800$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYSaQea!aWJOsiuJONOvjKWEjO:localhost:8800$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0S`Qe`!aWJOsiuJONOvjKWEjO:localhost:8800$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRoS_Qe_!aWJOsiuJONOvjKWEjO:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQS^Qe^!aWJOsiuJONOvjKWEjO:localhost:8800$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4   :qheQ]s$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 105}{"auth_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo", "$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo"], "type": "m.room.join_rules", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040361704, "hashes": {"sha256": "fzH97NhcVmYC2R07UUafyMmokKZ8iWlraRcqH3FbAqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pBxL8KHWlCP4aR1K+LjYowqZ+K0omiWsXpRLAO4ZziL1Sywx6NnKfS+M7xden1FVZyWfJTzfPFYMWFtyTwYQAA"}}, "unsigned": {"age_ts": 1570040361704}}ggeQ]_$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 104}{"auth_events": ["$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "type": "m.room.power_levels", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"users": {"@anon-20191002_181700-33:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040361112, "hashes": {"sha256": "w+Rv1ixwO5bTE81wu9vI1Ls2O6+Or4Dj9HI8Qi/+ljc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9bTBLQMqSBGL/Betaxqji8RQsuAe8s2UY67LY4LutqXmwonShx98JW8496FAPKxSC/Ky2S+29JqqRiUvNkmJDA"}}, "unsigned": {"age_ts": 1570040361112}}qfeQ]s$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 103}{"auth_events": ["$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4"], "prev_events": ["$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4"], "type": "m.room.member", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-33", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-33:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040360683, "hashes": {"sha256": "L03PlugfWUnj7qvo4x97Kum6eG4OPxwGY0jmlJbvz9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6+OK2u+7u6IlOSZlF1o49d63VUAZaY0KDs/RShPocCjwUpCcDDgDd+8cqm2Ny66aPXPN1h7WouLcxOO5b5loCQ"}}, "unsigned": {"age_ts": 1570040360683}}eeeQ][$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 102}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-33:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040359976, "hashes": {"sha256": "UeaduyZrNkNNYmfJqEB07CUHXBQGFe1KqcjdU/hqpd0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LIq2oUu8SpQKDpX33E/aB8aElQ94iMUAXZHc+QrHK/nkAL891Ln7T/qndCV2qIjOgJN7ROrXqc85ml8X87XdDw"}}, "unsigned": {"age_ts": 1570040359976}}  {qleQ]s$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 109}{"auth_events": ["$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM"], "prev_events": ["$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM"], "type": "m.room.member", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-34", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-34:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040364742, "hashes": {"sha256": "BlVBwJHa6clr77oF2mCg8+yBztcKlZTcuo9hP6SK4+o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NjL9O8iPUOWXkCEv4ywOskwKSdP4sW4fbH/BWCJFBG/H2X0V7GKrPddH728GWr+8sZ3UVhnaCSs9vFqsJrUFBg"}}, "unsigned": {"age_ts": 1570040364742}}ekeQ][$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 108}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-34:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040364019, "hashes": {"sha256": "iYwRgcAKU7QvMlJkoKg9pi2+XpdkDNwG736aJ6Ps0ug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CvwmgS0qpbPUIx6wD1aADS2RsXt38ssYcvGNNPYiqKQGuSSnmEvBjqa+U1Zoq+KklVMiBFCn3gXCcSh5nFaSCQ"}}, "unsigned": {"age_ts": 1570040364019}}jeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "txn_id": "abcdef", "stream_ordering": 107}{"auth_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo", "$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY"], "type": "m.room.message", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"msgtype": "m.message", "body": "Here is the message content"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040363086, "hashes": {"sha256": "44CCJBCc10CQ9Gm338TquOv6TaZBG0gOndaVxralLp4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mrVFwD4jeMTCOsXXqhpnQCnmZqnZ+qw82d/6QT4M/Wrx2Cpd3kc0SZRt/v4VubLrSxN4em6qY7B8/DzslbnODQ"}}, "unsigned": {"age_ts": 1570040363086}}ieQ]$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 106}{"auth_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo", "$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0"], "type": "m.room.history_visibility", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040362211, "hashes": {"sha256": "Bs/adPXuRS882a2GXEfkI9tTX2pB5DUNlgC2qJC1D2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6ju48VqVkvQHWlkh39sH8kfjM5eiRwg3TUmo0w9g10VHJ0f5mDAxSUcoVj1icpG9q+MZA6UqY5a5fNI7XHzHAw"}}, "unsigned": {"age_ts": 1570040362211}}  " peQ{$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "txn_id": "0", "stream_ordering": 113}{"auth_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc", "$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM"], "type": "m.room.message", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"body": "Here is the message content", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040367328, "hashes": {"sha256": "plyJpuWCNl1p4P3dm5ylLJPKu7qJp3tZnmOKjsiSWoo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1RdepUeGCoYhYuejHiIhO3Q8Q+ed4wnr5kYPeIjdtzTNlVUeJf05dyVDoSuo5yd8SJpUINGY/6ySO5neo5MbBg"}}, "unsigned": {"age_ts": 1570040367328}}oeQ]$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 112}{"auth_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc", "$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw"], "type": "m.room.history_visibility", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040366497, "hashes": {"sha256": "nzA4UAwJF2twGhijaIEvMtGcuVkE5Du+N2aeSJkJYPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eiERssl73ajZi6exhMko7U+6JUNJJzDsU2PPHIfDTO3AqPTMnvwCP3SusgScaWRhc/Pd9FSe3Fve/tP3/5qaBg"}}, "unsigned": {"age_ts": 1570040366497}}qneQ]s$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 111}{"auth_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc", "$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc"], "type": "m.room.join_rules", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040365962, "hashes": {"sha256": "notRDfpfbfAHdvdHO2/DkfixNJqylZg8qhHZp7FwK10"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W1eJE/Y22Cd5wy77xtiphLs9QZwyaW2ShYBUFftaxC9sOYnfP2182+mJF5lzvnOOzTF56VjgnWGyakX3LzUvCQ"}}, "unsigned": {"age_ts": 1570040365962}}gmeQ]_$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 110}{"auth_events": ["$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "type": "m.room.power_levels", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"users": {"@anon-20191002_181700-34:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040365179, "hashes": {"sha256": "34JLvpnIHcLuUgyJXtV5X6btHnMmhtqgiJLqLkWY1CQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GWXphkwP8NPG2eGyl8SunL47GjZ3YTS2WzLcRUeywPqu31XmyMOwaI0j1M/NpkrtllrVYXi1j1ZyGtnw4AzdCQ"}}, "unsigned": {"age_ts": 1570040365179}} !&L r  + Q w 0V|5[:`GlOOQ$157004185780kUwpq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800glOOQ$157004185679NNCIw:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800flOOQ$157004184976eGgUf:localhost:8800$157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800_lOOQ$157004184875Wzayo:localhost:8800$157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800^lOOQ$157004184774CHMNl:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800]lOOQ$157004184773rCaRK:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800\lOOQ$157004184672SfwvS:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800[lOOQ$157004183969fQFzs:localhost:8800$157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800UlOOQ$157004183868QRvOi:localhost:8800$157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800TlOOQ$157004183467WkNdH:localhost:8800$157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800PlOOQ$157004183366iKFsz:localhost:8800$157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800OlOOQ$157004183365ZxPWz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800NlOOQ$157004183264ktTbL:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800MlOOQ$157004183063NdEPw:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800LlOOQ$157004182060gAdxi:localhost:8800$157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800BlOOQ$157004181959Afmmv:localhost:8800$157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800AlOOQ$157004181958ixShg:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800@lOOQ$157004181857fcmAB:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800?lOOQ$157004181756ejZNp:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800>lOOQ$157004180853KmrHT:localhost:8800$157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88007lOOQ$157004180752YHMqi:localhost:8800$157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88006lOOQ$157004180751hMlwg:localhost:8800$157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88005lOOQ$157004180650ruqIl:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88004lOOQ$157004180549mJBJB:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88003lOOQ$157004180448zlZXD:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88002lOOQ$157004180346TRucp:localhost:8800$157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:88001lOOQ$157004180045QtsUE:localhost:8800$157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800/lOOQ$157004179944JKWNJ:localhost:8800$157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800.lOOQ$157004179843yDrjz:localhost:8800$157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800,lOOQ$157004179742OaMxS:localhost:8800$157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800*lOOQ$157004179541PbBIm:localhost:8800$157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800(lOOQ$157004179340NSiie:localhost:8800$157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800&lOOQ$157004179239LLqht:localhost:8800$157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800$ a} { y w u sqomkigeca}eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800|eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800{eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800zeeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800yeeQ$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800xeeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800weeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800veeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800ueeQ$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800teeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800seeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800reeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800qeeQ$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800peeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800oeeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800neeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800meeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800leeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800keeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800jeeQ$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800ieeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800heeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800geeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800feeQ$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800eeeQ$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800deeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800ceeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800beeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800aeeQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800`eeQ$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800_eeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800   :qteQ]s$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 117}{"auth_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ", "$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ"], "type": "m.room.join_rules", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040370713, "hashes": {"sha256": "jQ6+XBssJ+U32ztUWlqEmMB/Py1aBBiKfT5lay4O5iU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eWNG1kKA8h6N+AeqMF8083JvsDKhZQZQ4oTmeIQs96Gi3QlR8DNp2JMwy5aWny2HRafX5UWwUSgJN9Az4qZaDA"}}, "unsigned": {"age_ts": 1570040370713}}gseQ]_$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 116}{"auth_events": ["$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "type": "m.room.power_levels", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"users": {"@anon-20191002_181700-35:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040370071, "hashes": {"sha256": "OBDCRc8lk+HAQwutKn2KrED5plKPGx+1YhfxGIwPzlY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2jY99tgGViNuJy2iIirDJXqYr8BhpEM1OwqkTuEDdotZ4GIpPmR0BsVUO2UdkBBbPTpqMKjYj2K3SsnFmwdYCQ"}}, "unsigned": {"age_ts": 1570040370071}}qreQ]s$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 115}{"auth_events": ["$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk"], "prev_events": ["$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk"], "type": "m.room.member", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-35", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-35:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040369541, "hashes": {"sha256": "nwUzYYVG+i2O74k9x3DvDzw64FuKtpy2xSbOJBTN3Jg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z32oh2X8PkS3uat8vc3jZMd1cmxI13pLDAAvieVKsQQ+5G7AAyH7h4TgOx3qL6PJ6fi7OE96BFsusgeUt5NlBQ"}}, "unsigned": {"age_ts": 1570040369541}}eqeQ][$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 114}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-35:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040368986, "hashes": {"sha256": "2j6quxCOzbCUtA9qlolZO8zHh5W+Obcfc6WZFX7WwP0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T7UN3fvYNZLbiuhJaJo06z5WKv56uW9JNPwueB1YqrPARWc7JUz7RGwbp/yQvLHkYjjPNVjmWuBfG0Y3RMNmAA"}}, "unsigned": {"age_ts": 1570040368986}} #t 2 B p  > d&6d*RX|c Q' e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4b Q% e!kkgEEVUJynguTqAoWD:localhost:8800m.room.topic$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwo Q? e!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibility$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EggQ/ e!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rules$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEiQ3 e!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0 Q'[e!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QcQ' e!kkgEEVUJynguTqAoWD:localhost:8800m.room.create$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0oQ? e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8gQ/ e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rules$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0iQ3 e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU Q'[e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1AcQ' e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.create$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0nQ? e!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibility$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUf~Q/ e~!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rules$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEh}Q3 e}!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M |Q'[e|!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qb{Q' e{!aWbcZNVBalJilCEsdr:localhost:8800m.room.create$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwchzQ3 ez!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$nzIpPfyeKHRFGxE7irJSyrFr8stmD4wCpB0YX3jrI9YhyQ3 ey!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6MhxQ3 ex!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__MhwQ3 ew!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdInvQ? ev!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibility$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkfuQ/ eu!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rules$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMhtQ3 et!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA sQ'[es!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kbrQ' er!kxTDuIasPNpXtiRsif:localhost:8800m.room.create$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcnqQ? eq!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibility$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsfpQ/ ep!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rules$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHshoQ3 eo!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levels$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg nQ'[en!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68bmQ' em!wvnfKBSrUlfNmYoeil:localhost:8800m.room.create$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4nlQ? el!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibility$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97AfkQ/ ek!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rules$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAhjQ3 ej!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ iQ'[ei!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc "is. < h  0 %)QUw6id Q' e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4c Q% e!kkgEEVUJynguTqAoWD:localhost:8800m.room.topic$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwpQ? e!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibility$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EghQ/ e!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rules$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEjQ3 e!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0 Q'[e!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QdQ' e!kkgEEVUJynguTqAoWD:localhost:8800m.room.create$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0pQ? e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8hQ/ e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rules$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0jQ3 e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU Q'[e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1AdQ' e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.create$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0p~Q? e!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibility$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUh}Q/ e!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rules$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEj|Q3 e!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M {Q'[e!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1QdzQ' e!aWbcZNVBalJilCEsdr:localhost:8800m.room.create$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcyQ3 ee!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__MxQ3 ee!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIwQ3 ee!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsApvQ? e!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibility$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkhuQ/ e!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rules$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMitQ3 e!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA sQ'[e~!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kcrQ' e}!kxTDuIasPNpXtiRsif:localhost:8800m.room.create$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcoqQ? e|!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibility$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsgpQ/ e{!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rules$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsioQ3 ez!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levels$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg nQ'[ey!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68cmQ' ex!wvnfKBSrUlfNmYoeil:localhost:8800m.room.create$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4olQ? ev!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibility$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97AgkQ/ eu!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rules$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAijQ3 et!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ iQ'[es!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc $w0^ j  1 = g ,>n>jt 9Iwe eQ/ $SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rulesg eQ3 $6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels eQ'[$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800a eQ' $-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create` eQ% $X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800m.room.topicmeQ? $CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibilityeeQ/ $L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rulesgeQ3 $CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levelseQ'[$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800aeQ' $NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800m.room.createmeQ? $XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibilityeeQ/ $dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rulesgeQ3 $5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levelseQ'[$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800aeQ' $uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.createm~eQ? $e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibilitye}eQ/ $EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rulesg|eQ3 $6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels{eQ'[$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800azeQ' $b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800m.room.creategyeQ3 $5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsgxeQ3 $6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsgweQ3 $cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsmveQ? $Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibilityeueQ/ $70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rulesgteQ3 $dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsseQ'[$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800areQ' $9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800m.room.createmqeQ? $YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibilityepeQ/ $nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rulesgoeQ3 $TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levelsneQ'[$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800ameQ' $tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800m.room.createmleQ? $4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibilityekeQ/ $FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rulesgjeQ3 $8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels a} { y w u sqomkigeca~zeeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~yeeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800~xeeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~weeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~veeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800~ueeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~teeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~seeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800~reeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~qeeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~peeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800~oeeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~neeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~meeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800~leeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~keeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~jeeQ$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~ieeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800~heeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~geeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800~feeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800~eeeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~deeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800~ceeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800~beeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~aeeQ$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~`eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800~_eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800~^eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800~]eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800~\eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800  {qxeQ]s$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800{"token_id": 67, "stream_ordering": 121}{"auth_events": ["$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4"], "prev_events": ["$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4"], "type": "m.room.member", "room_id": "!wvnfKBSrUlfNmYoeil:localhost:8800", "sender": "@anon-20191002_181700-36:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-36", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-36:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040373993, "hashes": {"sha256": "/pFkVeJGm1KOI/4UDdsEYJcAmooiTFplmQ0y6f9F1GY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nU1IqB66GZsOFuPMEojg8/V9u5xkGkQoEhsItmfxMyeqWaZUqAY/O6XNY/+DBSkb37d4KGmzagIa2uTv21ovBA"}}, "unsigned": {"age_ts": 1570040373993}}eweQ][$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800{"token_id": 67, "stream_ordering": 120}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wvnfKBSrUlfNmYoeil:localhost:8800", "sender": "@anon-20191002_181700-36:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-36:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040373394, "hashes": {"sha256": "h/DAMN14lqchvqzFoF9+z86o3w1ibyUr5L+F7Ltkmf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M0QiWuOWlQUpo35nZBefmlySLM4wEXnc65zbamiVOp6tiwNsIOKK9+iM7TuFSKGFfR1+u0atqBi9JXLiykcDAg"}}, "unsigned": {"age_ts": 1570040373394}}veQ{$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "txn_id": "1", "stream_ordering": 119}{"auth_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ", "$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A"], "type": "m.room.message", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"body": "Here is the message content", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040372306, "hashes": {"sha256": "6l/gwMVp7mZOj3kzQ7ERvKNkB5g2SRafFl5wYUTLGVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IAa4r3IYVxNK6LfC+rYvMLn2ZoPXcVIuUFXmOrq58iMUC4l6BOrxjt/+GHKIB2ATEO2U/GqmhvVm5h6zNvMlDg"}}, "unsigned": {"age_ts": 1570040372306}}ueQ]$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 118}{"auth_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ", "$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA"], "type": "m.room.history_visibility", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040371247, "hashes": {"sha256": "A2SkyJ8gNDnHZQmweve3DxdTAYBE6kUyTDFyEXa0Dfs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NFWVmg9n8z32DlXhJYZS2yMIO5KrtFiIhhDf5oZ6UvbHJAwC8UftuSJdEgtTDa10DRNhtdZhkE3H7KuT2EwFCg"}}, "unsigned": {"age_ts": 1570040371247}} `x_>tYD \ G R 7  } d C . L 1  m T 3 |cB-xc' Td(t_#}bI(m1pW6!3 `m.room.power_levels`;'[_m.room.member@anon-20191002_181700-33:localhost:8800_' ^m.room.create^ ? ]m.room.history_visibility]/ \m.room.join_rules\3 [m.room.power_levels[;'[Zm.room.member@anon-20191002_181700-32:localhost:8800Z' Ym.room.createY ? Xm.room.history_visibilityX/ Wm.room.join_rulesW3 Vm.room.power_levelsV;'[Um.room.member@anon-20191002_181700-31:localhost:8800U' Tm.room.createT;'[Sm.room.member@anon-20191002_181700-30:localhost:8800S;'[Rm.room.member@anon-20191002_181700-29:localhost:8800R;'[Qm.room.member@anon-20191002_181700-28:localhost:8800Q;'[Pm.room.member@anon-20191002_181700-28:localhost:8800P;'[Om.room.member@anon-20191002_181700-27:localhost:8800O;'[Nm.room.member@anon-20191002_181700-26:localhost:8800N;'[Mm.room.member@anon-20191002_181700-25:localhost:8800M;'[Lm.room.member@anon-20191002_181700-24:localhost:8800L;'[Km.room.member@anon-20191002_181700-22:localhost:8800K#))Jm.room.aliaseslocalhost:8800J ? Im.room.history_visibilityI/ Hm.room.join_rulesH9 Gm.room.canonical_aliasG3 Fm.room.power_levelsF;'[Em.room.member@anon-20191002_181700-23:localhost:8800E' Dm.room.createD#))Cm.room.aliaseslocalhost:8800C ? Bm.room.history_visibilityB/ Am.room.join_rulesA3 @m.room.power_levels@;'[?m.room.member@anon-20191002_181700-21:localhost:8800?' >m.room.create> ? =m.room.history_visibility=/ {T-vN&^6>fnF'f'Q$1570042619109qhpUv:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611100ueDzK:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042619110gZfPB:localhost:8800&O$157004188598DcHDt:localhost:8800 &O$157004188598DcHDt:localhost:8800 &O$157004188598DcHDt:localhost:8800 ~&O$157004188397MRiZP:localhost:8800 w&O$157004188397MRiZP:localhost:8800 v&O$157004188397MRiZP:localhost:8800 u&O$157004188296OVWxu:localhost:8800 t&O$157004188296OVWxu:localhost:8800 s&O$157004188296OVWxu:localhost:8800 r&O$157004188195thBOS:localhost:8800 q&O$157004188195thBOS:localhost:8800 p&O$157004188195thBOS:localhost:8800 o&O$157004188194vdqBG:localhost:8800 n&O$157004188194vdqBG:localhost:8800 m&O$157004188093UtRbN:localhost:8800 l&O$157004187190ZLRgN:localhost:8800 Y&O$157004187190ZLRgN:localhost:8800 X&O$157004187190ZLRgN:localhost:8800 W&O$157004187089FLOwV:localhost:8800 V&O$157004187089FLOwV:localhost:8800 U&O$157004187089FLOwV:localhost:8800 T&O$157004186988RkcKb:localhost:8800 S&O$157004186988RkcKb:localhost:8800 R&O$157004186988RkcKb:localhost:8800 Q&O$157004186887sKbQU:localhost:8800 P&O$157004186887sKbQU:localhost:8800 O&O$157004186786RVgKA:localhost:8800 N&O$157004185983tEalY:localhost:8800 >&O$157004185983tEalY:localhost:8800 =&O$157004185983tEalY:localhost:8800 <&O$157004185982diSTq:localhost:8800 ;&O$157004185982diSTq:localhost:8800 :&O$157004185982diSTq:localhost:8800 9&O$157004185881ahRFW:localhost:8800 8&O$157004185881ahRFW:localhost:8800 7&O$157004185881ahRFW:localhost:8800 6&O$157004185780kUwpq:localhost:8800 5&O$157004185780kUwpq:localhost:8800 4&O$157004185679NNCIw:localhost:8800 3&O$157004184976eGgUf:localhost:8800 #&O$157004184976eGgUf:localhost:8800 "&O$157004184976eGgUf:localhost:8800 !&O$157004184875Wzayo:localhost:8800 &O$157004184875Wzayo:localhost:8800 &O$157004184875Wzayo:localhost:8800 &O$157004184774CHMNl:localhost:8800 &O$157004184774CHMNl:localhost:8800 &O$157004184774CHMNl:localhost:8800 &O$157004184773rCaRK:localhost:8800 &O$157004184773rCaRK:localhost:8800 &O$157004184672SfwvS:localhost:8800 &O$157004183969fQFzs:localhost:8800 &O$157004183969fQFzs:localhost:8800 &O$157004183969fQFzs:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183467WkNdH:localhost:8800 &O$157004183467WkNdH:localhost:8800 &O$157004183467WkNdH:localhost:8800 &O$157004183366iKFsz:localhost:8800 &O$157004183366iKFsz:localhost:8800 &O$157004183366iKFsz:localhost:8800 &O$157004183365ZxPWz:localhost:8800 &O$157004183365ZxPWz:localhost:8800 &O$157004183365ZxPWz:localhost:8800 &O$157004183264ktTbL:localhost:8800 &O$157004183264ktTbL:localhost:8800 &O$157004183063NdEPw:localhost:8800 w  !}eeQ][$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 133}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-38:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040382803, "hashes": {"sha256": "cj8rj1W7wjdhS/dB/NLLz0Hfxa8A78fqOdJNWcaIs4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PcJ69w7pD5pfn0sLL43UzdkOZFtKBHFrbp9GJaY8TixrJq8birdZaPAxz+iWrNrfU5BKpPbsv8SCIxBqqGVEAA"}}, "unsigned": {"age_ts": 1570040382803}} eQ]Q$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800{"token_id": 68, "stream_ordering": 132}{"auth_events": ["$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M", "$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc", "$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k"], "prev_events": ["$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M"], "type": "m.room.power_levels", "room_id": "!kxTDuIasPNpXtiRsif:localhost:8800", "sender": "@anon-20191002_181700-37:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040381675, "hashes": {"sha256": "Abwab84RysESTKOR0Pugc7jxnunmMyj0i8TDP4Q5dpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HAgLV34m3aLWWSLDoLK6SQ6+Qvw47TsQf3CvTHpcTjiKk/gtHWHCFbGvj05WHmZtt40caG6wza7ec3fQfRqSBg"}}, "unsigned": {"age_ts": 1570040381675, "replaces_state": "$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M"}}YeQ]C$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800{"token_id": 68, "stream_ordering": 131}{"auth_events": ["$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI", "$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc", "$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k"], "prev_events": ["$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI"], "type": "m.room.power_levels", "room_id": "!kxTDuIasPNpXtiRsif:localhost:8800", "sender": "@anon-20191002_181700-37:localhost:8800", "content": {"users": {"@anon-20191002_181700-37:localhost:8800": 100}}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040381249, "hashes": {"sha256": "aAVNk7KZ32c5+IwJkxePMHWpWLA6V1aKTxjS8LFQbu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "scShulrn7uQB7Gra5sNxOvCl23g3M+AyNDlv7f8QAU9A6woP3otVy6ahbpCD79H1UHZsNe/pwH67JlwhgFHeBQ"}}, "unsigned": {"age_ts": 1570040381249, "replaces_state": "$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI"}}~eQ] $cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800{"token_id": 68, "stream_ordering": 130}{"auth_events": ["$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA", "$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc", "$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k"], "prev_events": ["$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk"], "type": "m.room.power_levels", "room_id": "!kxTDuIasPNpXtiRsif:localhost:8800", "sender": "@anon-20191002_181700-37:localhost:8800", "content": {"users": {"@anon-20191002_181700-37:localhost:8800": 100, "@random-other-user:their.home": 20}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.name": 50, "m.room.avatar": 50}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040380647, "hashes": {"sha256": "Epzs373zbvkeph+qU4TA8CNhjuuDwA1f5COaaPH6ZA4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AjJ39K4KyVWoE81A3lMpuymi+wtuV1j2tFX/HuwDErZxpgB4ZsQ3VRAlfvLARR78yX83CdaVRfxo3/TRTBF4Dw"}}, "unsigned": {"age_ts": 1570040380647, "replaces_state": "$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA"}} a} { y w u sqomkigeca~eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~ eeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800~~eeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800~}eeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~|eeQ$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~{eeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800 alQ4?"^{nQ4hK,h7TqL. d H * ! s > p ;  k 8  j 7 g2b/_*^1@35:localhost:8800a1@33:localhost:8800m1@32:localhost:8800m1@24:localhost:8800ap1@21:localhost:8800af1@19:localhost:8800a`1@17:localhost:8800m\1@14:localhost:8800aM1@16:localhost:8800mX1@16:localhost:8800aU1@15:localhost:8800mT1@15:localhost:8800aQ1@14:localhost:8800mP1@17:localhost:8800aY1@18:localhost:8800a]1@20:localhost:8800ac1@22:localhost:8800ai1@23:localhost:8800am1@30:localhost:8800a1@29:localhost:8800a1@28:localhost:8800m1@28:localhost:8800a|1@27:localhost:8800ay1@26:localhost:8800av1@25:localhost:8800as1@31:localhost:8800m1@31:localhost:8800a1@30:localhost:8800m1@32:localhost:8800a1@33:localhost:8800a1@34:localhost:8800a1@34:localhost:8800m)7@admin:localhost:8800a"1@36:localhost:8800a+<q@_astest-01create-0-20191002_181700:localhost:8800a|2]@anon-20191002_181700-120:localhost:8800a0[@anon-20191002_181700-11:localhost:8800a(4]@anon-20191002_181700-119:localhost:8800m2]@anon-20191002_181700-119:localhost:8800a4]@anon-20191002_181700-118:localhost:8800m2]@anon-20191002_181700-118:localhost:8800a4]@anon-20191002_181700-117:localhost:8800m2]@anon-20191002_181700-117:localhost:8800a4]@anon-20191002_181700-116:localhost:8800m2]@anon-20191002_181700-116:localhost:8800a4]@anon-20191002_181700-115:localhost:8800m2]@anon-20191002_181700-115:localhost:8800a4]@anon-20191002_181700-114:localhost:8800m2]@anon-20191002_181700-114:localhost:8800a4]@anon-20191002_181700-113:localhost:8800m2]@anon-20191002_181700-113:localhost:8800a4]@anon-20191002_181700-112:localhost:8800m2]@anon-20191002_181700-112:localhost:8800a4]@anon-20191002_181700-110:localhost:8800m2]@anon-20191002_181700-110:localhost:8800a0[@anon-20191002_181700-10:localhost:8800a'4]@anon-20191002_181700-109:localhost:8800m2]@anon-20191002_181700-109:localhost:8800a4]@anon-20191002_181700-108:localhost:8800m2]@anon-20191002_181700-108:localhost:8800a4]@anon-20191002_181700-107:localhost:8800m2]@anon-20191002_181700-107:localhost:8800a4]@anon-20191002_181700-106:localhost:8800m2]@anon-20191002_181700-106:localhost:8800a4]@anon-20191002_181700-104:localhost:8800m2]@anon-20191002_181700-104:localhost:8800a2]@anon-20191002_181700-103:localhost:8800a4]@anon-20191002_181700-102:localhost:8800m2]@anon-20191002_181700-102:localhost:8800a4]@anon-20191002_181700-101:localhost:8800m2]@anon-20191002_181700-101:localhost:8800a4]@anon-20191002_181700-100:localhost:8800m2]@anon-20191002_181700-100:localhost:8800a/@9:localhost:8800a&/@8:localhost:8800m(/@8:localhost:8800a#/@7:localhost:8800m"/@7:localhost:8800a/@6:localhost:8800m/@6:localhost:8800a/@5:localhost:8800m/@5:localhost:8800a/@4:localhost:8800a/@3:localhost:8800m/@3:localhost:8800a/@2:localhost:8800m/@2:localhost:8800a /@1:localhost:8800a 1@13:localhost:8800mL1@13:localhost:8800aI1@12:localhost:8800a01@11:localhost:8800a/1@10:localhost:8800a'/@0:localhost:8800aZ ;@02login:localhost:8800a:k@01register-user-20191002_181700:localhost:8800m 7k @01register-user-20191002_181700:localhost:8800a JtA e0`- a , ^ ) [ & Z % W "RQN~K{H|GwD?h2]@anon-20191002_181700-124:localhost:8800a4]@anon-20191002_181700-124:localhost:8800m2]@anon-20191002_181700-122:localhost:8800a2]@anon-20191002_181700-121:localhost:8800a4]@anon-20191002_181700-123:localhost:8800m2]@anon-20191002_181700-123:localhost:8800a52]@anon-20191002_181700-164:localhost:8800a4]@anon-20191002_181700-163:localhost:8800m2]@anon-20191002_181700-163:localhost:8800a4]@anon-20191002_181700-162:localhost:8800m2]@anon-20191002_181700-162:localhost:8800a4]@anon-20191002_181700-161:localhost:8800m2]@anon-20191002_181700-161:localhost:8800a4]@anon-20191002_181700-160:localhost:8800m2]@anon-20191002_181700-160:localhost:8800a 0[@anon-20191002_181700-15:localhost:8800a,2]@anon-20191002_181700-159:localhost:8800a 4]@anon-20191002_181700-158:localhost:8800m 2]@anon-20191002_181700-158:localhost:8800a2]@anon-20191002_181700-157:localhost:8800a4]@anon-20191002_181700-156:localhost:8800m2]@anon-20191002_181700-156:localhost:8800a2]@anon-20191002_181700-155:localhost:8800a4]@anon-20191002_181700-154:localhost:8800m2]@anon-20191002_181700-154:localhost:8800a4]@anon-20191002_181700-153:localhost:8800m2]@anon-20191002_181700-153:localhost:8800a4]@anon-20191002_181700-152:localhost:8800m2]@anon-20191002_181700-152:localhost:8800a4]@anon-20191002_181700-151:localhost:8800m2]@anon-20191002_181700-151:localhost:8800a4]@anon-20191002_181700-150:localhost:8800m2]@anon-20191002_181700-150:localhost:8800a0[@anon-20191002_181700-14:localhost:8800a+4]@anon-20191002_181700-149:localhost:8800m2]@anon-20191002_181700-149:localhost:8800a4]@anon-20191002_181700-146:localhost:8800m2]@anon-20191002_181700-146:localhost:8800a4]@anon-20191002_181700-144:localhost:8800m2]@anon-20191002_181700-144:localhost:8800a4]@anon-20191002_181700-143:localhost:8800m2]@anon-20191002_181700-143:localhost:8800a2]@anon-20191002_181700-142:localhost:8800a4]@anon-20191002_181700-141:localhost:8800m2]@anon-20191002_181700-141:localhost:8800a4]@anon-20191002_181700-140:localhost:8800m2]@anon-20191002_181700-140:localhost:8800a0[@anon-20191002_181700-13:localhost:8800a)4]@anon-20191002_181700-138:localhost:8800m2]@anon-20191002_181700-138:localhost:8800a4]@anon-20191002_181700-137:localhost:8800m2]@anon-20191002_181700-137:localhost:8800a4]@anon-20191002_181700-136:localhost:8800m2]@anon-20191002_181700-136:localhost:8800a2]@anon-20191002_181700-135:localhost:8800a4]@anon-20191002_181700-134:localhost:8800m2]@anon-20191002_181700-134:localhost:8800a2]@anon-20191002_181700-133:localhost:8800a4]@anon-20191002_181700-132:localhost:8800m2]@anon-20191002_181700-132:localhost:8800a4]@anon-20191002_181700-131:localhost:8800m2]@anon-20191002_181700-131:localhost:8800a2]@anon-20191002_181700-130:localhost:8800a0[@anon-20191002_181700-12:localhost:8800a*4]@anon-20191002_181700-129:localhost:8800m2]@anon-20191002_181700-129:localhost:8800a4]@anon-20191002_181700-128:localhost:8800m2]@anon-20191002_181700-128:localhost:8800a4]@anon-20191002_181700-127:localhost:8800m2]@anon-20191002_181700-127:localhost:8800a4]@anon-20191002_181700-126:localhost:8800m2]@anon-20191002_181700-126:localhost:8800a4]@anon-20191002_181700-125:localhost:8800m2]@anon-20191002_181700-125:localhost:8800a %  %eQ]$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 137}{"auth_events": ["$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M", "$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc", "$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "prev_events": ["$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE"], "type": "m.room.history_visibility", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040385221, "hashes": {"sha256": "J8j3Dn1w7vdHKrPX79VZ06PhKmZ3xnDwwxIqy3lErZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZY9tzV+r6jYkQkjsDHU1SJlJ2VMM5SqZObbF1jfd1Eawco/6znDEgi7cIcn3OurhMcSQCCKk8gnDYr/FRk2dAQ"}}, "unsigned": {"age_ts": 1570040385221}}qeQ]s$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 136}{"auth_events": ["$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M", "$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc", "$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "prev_events": ["$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M"], "type": "m.room.join_rules", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040384688, "hashes": {"sha256": "0kZC8WFeardWLdr2hrJd9NfzXSQzlI7BK63EH/CvH4Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IcnQtpwcpRRwUQQGDZVC/4gTKJ57T4MSVBtEVfm/ayrQhj0y13Jm00BseQrVs8ANSGkwjUd+PoOILo0ozkXjAQ"}}, "unsigned": {"age_ts": 1570040384688}}geQ]_$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 135}{"auth_events": ["$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc", "$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "prev_events": ["$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "type": "m.room.power_levels", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"users": {"@anon-20191002_181700-38:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040383963, "hashes": {"sha256": "a09rztfFEff77yEu5l6K/D9b61TVmQyX5DiFOsqUiAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RT+f6HmMVBu8T9RaX77yeXhUFQ7mLtTYCvMrhlHURZsWmcAa9iwzGlCfLTFRBR592OjnaVIU/h7PryMR2wYNBQ"}}, "unsigned": {"age_ts": 1570040383963}}qeQ]s$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 134}{"auth_events": ["$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc"], "prev_events": ["$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc"], "type": "m.room.member", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-38", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-38:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040383469, "hashes": {"sha256": "voDukrDMooUmowK4Lladn2T8LmcyVu2OLdLHNAbBAr0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Csbv3gYcaCUGkW71SaoHMMg3RkjHHMVaxRs7LQJbjBXXtFNIW38AtgfG0ZGqtYtBaK+pxUn/B/78f8skPjd4DQ"}}, "unsigned": {"age_ts": 1570040383469}} R1 R s4&i&\WIl y  F ^ #  m 0 P R^Q']!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800 6Q' !CAGaRyRvrohDRBsrWH:localhost:8800m.room.create >Q7 !BfEFIDBthhkweqfhir:localhost:8800m.room.related_groups<Q3 !BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels:Q/ !BfEFIDBthhkweqfhir:localhost:8800m.room.server_acl:Q/ !BkzROHxDAfKIzYpmPV:localhost:8800m.room.join_rulesBQ? !BkzROHxDAfKIzYpmPV:localhost:8800m.room.history_visibility6Q' !BkzROHxDAfKIzYpmPV:localhost:8800m.room.create?Q9 !BkzROHxDAfKIzYpmPV:localhost:8800m.room.canonical_aliasEQ))!BkzROHxDAfKIzYpmPV:localhost:8800m.room.aliaseslocalhost:88005Q% !BfEFIDBthhkweqfhir:localhost:8800m.room.topic^Q']!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800^Q']!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800^Q']!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-140:localhost:88004Q# !BpTqIemsWFZIqTcgJO:localhost:8800m.room.name^Q']!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800^Q']!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800^Q']!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800:Q/ !BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rulesBQ? !BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibility6Q' !BpTqIemsWFZIqTcgJO:localhost:8800m.room.create<Q3 !BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels^Q']!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800:Q/ !BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rulesBQ? !BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibility6Q' !BoyzlWNkRPncpDjBDg:localhost:8800m.room.createCQ?!BkzROHxDAfKIzYpmPV:localhost:8800m.room.third_party_invite2<Q3 !BkzROHxDAfKIzYpmPV:localhost:8800m.room.power_levels `BQ? !CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibility :Q/ !CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rules <Q3 !CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels ^Q']!CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800 6Q' !CKNftKKCaOCVUyYWNY:localhost:8800m.room.create BQ? !CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibility :Q/ !CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rules <Q3 !CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels 4Q# !BfEFIDBthhkweqfhir:localhost:8800m.room.name^Q']!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800:Q/ !BfEFIDBthhkweqfhir:localhost:8800m.room.join_rulesBQ? !BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility<Q3 !BfEFIDBthhkweqfhir:localhost:8800m.room.guest_accessBQ? !CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibility6Q' !CNFopUEQTFbzjmLvii:localhost:8800m.room.create<Q3 !CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels^Q']!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800:Q/ !CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rulesBQ? !CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibility6Q' !CGckPHdSYcIocFvRAq:localhost:8800m.room.create<Q3 !BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels [o M 0}[([a!E@anon-20191002_181700-51:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCgEXJVEMMDWD127.0.0.1Perl + Net::Async::HTTP/0.44m?'[a!E@anon-20191002_181700-50:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCgBNBHLRCHUX127.0.0.1Perl + Net::Async::HTTP/0.44m=&[a!E@anon-20191002_181700-49:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUYwRTlTOipQZThDdU9aMQowMDJmc2lnbmF0dXJlIMxDOMfQi7QpMEic-RaPEMXsMRJB1o80-j34WrEMdLcICgXXZIHXDAZY127.0.0.1Perl + Net::Async::HTTP/0.44m:%[a!E@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMExLdTVtY3hMMGo5d2dJNAowMDJmc2lnbmF0dXJlIOkvze_r9F0C3qDEEZB8FlDTKiRmp-FVbkGhwMBlMlMVCgXFFXACSKID127.0.0.1Perl + Net::Async::HTTP/0.44m6҃$[a!E@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLlp-aWV0aGpsb2VIdDhYaAowMDJmc2lnbmF0dXJlILz-X06NA3MCjvb6uGmoobDiJbicbG4nV2yzvbZkP-rwCgAJQOQZXPLW127.0.0.1Perl + Net::Async::HTTP/0.44m6ʃ #[aE@anon-20191002_181700-44:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0Cgxyzzy127.0.0.1Perl + Net::Async::HTTP/0.44m-"[a!E@anon-20191002_181700-41:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJjdjLW94WC5haSswXjpkbAowMDJmc2lnbmF0dXJlIMicE2dWZmTSWkQlL_dFdEb5UL5iuXwxyFxXiYecyuKlCgOLPAIVSAQX127.0.0.1Perl + Net::Async::HTTP/0.44m'#![a!E@anon-20191002_181700-40:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gX0ZsT2FNZiZrNXNfOGtPNAowMDJmc2lnbmF0dXJlIJNqzbEWoj9JkOWbaVGh5QZZNW-AjkyuhNXrGQdVqviaCgMBXHKMDVDX127.0.0.1Perl + Net::Async::HTTP/0.44m%K [a!E@anon-20191002_181700-39:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLipwfjtVQ3VJc1Z-UX46UQowMDJmc2lnbmF0dXJlIGVOSZR6uZ_XtI81neQU7GI-hz9O6cKZiLnIU-YzCBaKCgFJQMNXTSGY127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-38:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCgCOQUCEUZOK127.0.0.1Perl + Net::Async::HTTP/0.44m 0 2 eg_K[aN@anon-20191002_181700-45:localhost:8800xyzzyMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPTc0N1FpRnRmdXE5UkxRTwowMDJmc2lnbmF0dXJlIMoNZmY-XNh59FpalQrmNnYUsTPYIhOLgw9jcBySkeWyCg_J[aM@anon-20191002_181700-44:localhost:8800xyzzyMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0CgdB[!aE@anon-20191002_181700-38:localhost:8800COQUCEUZOKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCgdA[!aD@anon-20191002_181700-37:localhost:8800VQICIZWNXHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICgdI[!aL@anon-20191002_181700-43:localhost:8800QIUVDLRUPDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gY2Q5X1ZSS0ZuQ3ZoK0lQdgowMDJmc2lnbmF0dXJlICgJ_tDsFzgoqjbSMgd3egoxWDT2M0zA54qPLeNHN5FaCgdH[!aK@anon-20191002_181700-43:localhost:8800CHTLJMKZABMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTGc0Lis2MzYqM3VkXnNyUAowMDJmc2lnbmF0dXJlICIg6uN8HQaOzKNnj_FNg9FYNoiSqoT9TRnWywyeAag2Cg0G/!%J@0:localhost:8800BLOODGXNYNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQ18weU5JbX4xM0JOSGFiCjAwMmZzaWduYXR1cmUg-Dgad0EACYaLWGOwYOoRIRLZToDmnw1csLvpA4s-iYEK0F/!%I@0:localhost:8800DWCYKFLVQMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLLFpYOFVpLlFlZmwydkRyCjAwMmZzaWduYXR1cmUgYEGhRFNs0lRHngvsK-GRpseRLXHAVbnVmtbo3UIfeosKdE[!aH@anon-20191002_181700-41:localhost:8800OLPAIVSAQXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJjdjLW94WC5haSswXjpkbAowMDJmc2lnbmF0dXJlIMicE2dWZmTSWkQlL_dFdEb5UL5iuXwxyFxXiYecyuKlCgdD[!aG@anon-20191002_181700-40:localhost:8800MBXHKMDVDXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gX0ZsT2FNZiZrNXNfOGtPNAowMDJmc2lnbmF0dXJlIJNqzbEWoj9JkOWbaVGh5QZZNW-AjkyuhNXrGQdVqviaCgdC[!aF@anon-20191002_181700-39:localhost:8800FJQMNXTSGYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLipwfjtVQ3VJc1Z-UX46UQowMDJmc2lnbmF0dXJlIGVOSZR6uZ_XtI81neQU7GI-hz9O6cKZiLnIU-YzCBaKCg   7q eQ]s$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 141}{"auth_events": ["$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU", "$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0", "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "prev_events": ["$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU"], "type": "m.room.join_rules", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040388981, "hashes": {"sha256": "odmi6kyQllliv0QJ0zvfezg66smmFEpkmI6GviBb0hg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Na+krHWR+cHk8H65s9+7XwduQt/xY/zt0oYw6SQ5nIenIk6NwM042j2giC0u8KXG3VsKYgc6citPj9zSbvw7Bw"}}, "unsigned": {"age_ts": 1570040388981}}g eQ]_$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 140}{"auth_events": ["$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0", "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "prev_events": ["$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "type": "m.room.power_levels", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"users": {"@anon-20191002_181700-39:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040388090, "hashes": {"sha256": "QAxc6VhA1JUBxaod/63UbBzRXY8+3eHDBb1YtgXW/IY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lJRxsrcMviu86nf4K2UCAY9ytF4d89/PjjDJwlCvCSsg3ur6P3QVrlswzlo4OvpGUUEES+EuycYnCgKAJa4UCQ"}}, "unsigned": {"age_ts": 1570040388090}}q eQ]s$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 139}{"auth_events": ["$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0"], "prev_events": ["$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0"], "type": "m.room.member", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-39", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-39:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040387645, "hashes": {"sha256": "2MfW3SUaLI9aWvw8pQzZHltVpQAWrCViGTE4Q41WJqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zf8J/FWzzkON/UlD+8pjL5hU5xrY16mbLfyrr6saYA+GL+CrEHjiPqvBYuG7/fPKSA5qDMCcQOxDIKI/W1sEDg"}}, "unsigned": {"age_ts": 1570040387645}}e eQ][$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 138}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-39:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040387053, "hashes": {"sha256": "kqnEw7oAv2FBQ9VC6sG0xWc56takZhUJu8tQBY7GmY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oFutbkzyIyiJ7Uk9yD/2gavW5wXxT9MxiBi/dWWknLEXhU53YLrslpOctWSCwaDYQKSAOWFjsj5NvyTDCkY4Cg"}}, "unsigned": {"age_ts": 1570040387053}} ,NC 8 - { " p  e ZOD9.|#qf V4eL$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMsha256-YCTOM;Ruq8ߐ ΀V3eL$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgsha256t?`Ɓ!齓" ֞ -d`ıV2eL$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUsha256{"8']p>o<4C \z=?%V1eL$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egsha256Z\&fTُs&4FR5eV0eL$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKosha256U~wd8xc)^1c%,V/eL$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjksha256`S<#|sAXӂ0~9V.eL$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwksha256 i\]_b!$X87 VJH V-eL$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYsha256y|n|D& [}vxmĹ9LV,eL$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEsha256?hy PQ@\ u2ߏ-TqV+eL$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwsha256@"&9M%0 ?EbzU5HnV*eL$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQsha256,l\@]k>a`z":v8DV)eL$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukiksha256꡹I%=\H`F_C~?B)V(eL$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcsha2569K3TY .\V'eL$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8sha256bRpUYW26vźyl6 ir_V&eL$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMsha256[ϛ:\-ie~#"D3V%eL$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8sha256Qn ' ''nLaZܐ. ?V$eL$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgsha256A0_rɱwdۥzt8V#eL$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIsha256$(R8$@FuBj=ʶ2V"eL$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIsha2560/89&S1Sv. .2%'akFVeL$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8sha256Kwqe8ӆ)!6qXKCCVeL$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Esha256IXe/YBM$qSVeL$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0sha256w+5zj=OvflM*VeL$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwsha256_ hiLCrygۍ VeL$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Egsha256 ,`Dq33RY$tb.^'BRHVeL$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEsha256/Ӏ|s?CzS{P ?E~ʼVeL$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0sha256 p5 0=Fzgkl 4MVeL$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qsha256,sRt*J!X*.Ti 9 4/*|%w rmhc T8Qe!OaCEdDAiatpwYcagUb:localhost:8800$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDoT7Qe!OaCEdDAiatpwYcagUb:localhost:8800$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgT6Qe!OaCEdDAiatpwYcagUb:localhost:8800$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6ET5Qe!OaCEdDAiatpwYcagUb:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4T4Qe!OaCEdDAiatpwYcagUb:localhost:8800$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMT3Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgT2Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUT1Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egT0Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoT/Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkT.Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkT-Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYT,Qe!cosGKKhHvKaVukBCic:localhost:8800$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccET+Qe!cosGKKhHvKaVukBCic:localhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwT*Qe!cosGKKhHvKaVukBCic:localhost:8800$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQT)Qe!cosGKKhHvKaVukBCic:localhost:8800$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikT(Qe!cosGKKhHvKaVukBCic:localhost:8800$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcT'Qe!cosGKKhHvKaVukBCic:localhost:8800$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8T&Qe!cosGKKhHvKaVukBCic:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMT%Qe!cosGKKhHvKaVukBCic:localhost:8800$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8T$Qe!rZWweGEChkxxtzyfDB:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgT#Qe!rZWweGEChkxxtzyfDB:localhost:8800$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIT"Qe!rZWweGEChkxxtzyfDB:localhost:8800$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIT!Qe!rZWweGEChkxxtzyfDB:localhost:8800$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPAT Qe!rZWweGEChkxxtzyfDB:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitITQe!rZWweGEChkxxtzyfDB:localhost:8800$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0TQe!uJtKGXTNdEnCPNOGDx:localhost:8800$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLoTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrATQe!uJtKGXTNdEnCPNOGDx:localhost:8800$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067kTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8TQe!vJQYmOxOBLwFKzYkNj:localhost:8800$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6ETQe!vJQYmOxOBLwFKzYkNj:localhost:8800$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0TQe!vJQYmOxOBLwFKzYkNj:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbETQe!vJQYmOxOBLwFKzYkNj:localhost:8800$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4TQe!kkgEEVUJynguTqAoWD:localhost:8800$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwTQe!kkgEEVUJynguTqAoWD:localhost:8800$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EgTQe!kkgEEVUJynguTqAoWD:localhost:8800$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLETQe!kkgEEVUJynguTqAoWD:localhost:8800$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0TQe!kkgEEVUJynguTqAoWD:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QTQe!kkgEEVUJynguTqAoWD:localhost:8800$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0T Qe!dUnULFLGtgaVdwHtnz:localhost:8800$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8T Qe!dUnULFLGtgaVdwHtnz:localhost:8800$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0  z geQ]_$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 145}{"auth_events": ["$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "type": "m.room.power_levels", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"users": {"@anon-20191002_181700-61:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040407149, "hashes": {"sha256": "zOpcYkUF0GHGClTY3fGtWzKXar4mAGNkX1Clq1FyBdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AtV8xOUY/pQMPuRVoPbEqCf5ur/faDjZkJYCWtLroP+XqKbAyRWMfGUx2rfpbWasCdDlUXlMOXmNslz9AWSQAg"}}, "unsigned": {"age_ts": 1570040407149}}qeQ]s$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 144}{"auth_events": ["$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0"], "prev_events": ["$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0"], "type": "m.room.member", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-61", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-61:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040406679, "hashes": {"sha256": "8IfjxFYqgfd2ldwRqlZ8biNDrBiaMnByEjfSF7WoxQE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sZbjrrFGMsWDwrobSDiajLAFobGkRavWqbPHjW+D6j/6Q2/rjKkOCmTx1mPOj8J3xeqWjgAVDsdzOd0mQHWgBQ"}}, "unsigned": {"age_ts": 1570040406679}}eeQ][$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 143}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-61:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040405908, "hashes": {"sha256": "EYUzBfHaiVzAOLDnv4xDYIu2uHevEROh9mbsaHdK4E0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QwvgoorJS4oSkNFGkyCrJNPTGYmOb/kJKGuI9qrEaHuF4Ze0w2TiyLArbyC6NkZ2vCjFtLJaAQXOu/gNxtXwAQ"}}, "unsigned": {"age_ts": 1570040405908}} eQ]$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 142}{"auth_events": ["$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU", "$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0", "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "prev_events": ["$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0"], "type": "m.room.history_visibility", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040389515, "hashes": {"sha256": "P44iPeZH6RvvBVCwJhD+BYO+8E4AmDr1CdhR9N5xdP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fwiJPeTm9LKTX3pKsrdDulXBj0kbAdu9ZxxM6y1UwIzFOMdtH/qVYByICECVddtosMTs618BMCYL2sT/lsG2AQ"}}, "unsigned": {"age_ts": 1570040389515}} ,2 Z  1 Y e#/]]i*GSY9jeQ9 $q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_aliasgeQ3 $9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels eQ'[$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800joinaeQ' $kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800m.room.create eQ'[$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800joinmeQ? $wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibilityeeQ/ $MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rulesgeQ3 $jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels eQ'[$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800joinaeQ' $r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800m.room.createmeQ? $Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibilityeeQ/ $yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rulesgeQ3 $rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels eQ'[$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800joina eQ' $d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.createe eQ/ $Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.typem eQ? $S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibilitye eQ/ $SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rulesg eQ3 $6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels eQ'[$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800joinaeQ' $-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create`eQ% $X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800m.room.topicmeQ? $CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibilityeeQ/ $L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rulesgeQ3 $CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels eQ'[$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800joinaeQ' $NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800m.room.createmeQ? $XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility  x mG  < /aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPTc0N1FpRnRmdXE5UkxRTwowMDJmc2lnbmF0dXJlIMoNZmY-XNh59FpalQrmNnYUsTPYIhOLgw9jcBySkeWyCgK/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0CgJ/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECg=/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCgk!@01register-user-20191002_181700:localhost:8800KRNGWLGVFN GT t <  \ $ | D d , L lJ(b*Hh0Pp8X x@`(6r[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSE6q[!~@anon-20191002_181700-80:localhost:8800YTTBSSDSAF6p[!}@anon-20191002_181700-79:localhost:8800EJTCNAZVHD6o[!|@anon-20191002_181700-77:localhost:8800FSPHKPOXWN6n[!{@anon-20191002_181700-75:localhost:8800RNMICKNMBM6m[!z@anon-20191002_181700-74:localhost:8800SVXLVPCWLX6l[!y@anon-20191002_181700-73:localhost:8800XAYBGVYWKC6k[!x@anon-20191002_181700-71:localhost:8800TCTQJEZQFI6j[!w@anon-20191002_181700-70:localhost:8800PGQYANGMEI6i[!v@anon-20191002_181700-68:localhost:8800GNKAPUDEUD6h[!u@anon-20191002_181700-67:localhost:8800ONYGLHFWXM6g[!t@anon-20191002_181700-64:localhost:8800NPZFHRJOQI6f[!s@anon-20191002_181700-65:localhost:8800JPWZALXKWP6e[!r@anon-20191002_181700-63:localhost:8800VLTVDGDALO6d[!q@anon-20191002_181700-62:localhost:8800PJTOWKTNYX6c[!p@anon-20191002_181700-61:localhost:8800SXUBBXHSVU6b[!o@anon-20191002_181700-60:localhost:8800JSZKVAFOZG6a[!n@anon-20191002_181700-59:localhost:8800DRVLOZZUPQ6`[!m@anon-20191002_181700-58:localhost:8800XSIUOLPWQX6_[!k@anon-20191002_181700-57:localhost:8800NFIQURSFUO6^[!j@anon-20191002_181700-56:localhost:8800UWHMGOHJLQ6][!g@anon-20191002_181700-55:localhost:8800GJICSOZSSM6\[!f@anon-20191002_181700-54:localhost:8800MQMQOGGONN6[[!d@anon-20191002_181700-54:localhost:8800WKSZTPHXTG6Z[!c@anon-20191002_181700-53:localhost:8800MVQZRCIGFU6Y[!a@anon-20191002_181700-53:localhost:8800HCQPROAEXN6X[!_@anon-20191002_181700-52:localhost:8800KYXATQJIHB6W[!^@anon-20191002_181700-51:localhost:8800IJUKQYPGHP6V[!\@anon-20191002_181700-51:localhost:8800EXJVEMMDWD6U[!Z@anon-20191002_181700-50:localhost:8800BNBHLRCHUX6T[!Y@anon-20191002_181700-49:localhost:8800XXZIHXDAZY6S[!Y@anon-20191002_181700-49:localhost:8800TMAZYGEOXO6R[!V@anon-20191002_181700-48:localhost:8800XFFXACSKID6J[!N@anon-20191002_181700-43:localhost:8800CHTLJMKZAB I/!M@0:localhost:8800BLOODGXNYN H/!L@0:localhost:8800DWCYKFLVQM6G[!K@anon-20191002_181700-41:localhost:8800OLPAIVSAQX6F[!J@anon-20191002_181700-40:localhost:8800MBXHKMDVDX6E[!I@anon-20191002_181700-39:localhost:8800FJQMNXTSGY6D[!H@anon-20191002_181700-38:localhost:8800COQUCEUZOK6C[!G@anon-20191002_181700-37:localhost:8800VQICIZWNXH6B[!F@anon-20191002_181700-36:localhost:8800KRWZEWLMKO6A[!E@anon-20191002_181700-35:localhost:8800EALQMPIKHO6@[!D@anon-20191002_181700-34:localhost:8800ZGZSYILFGA6?[!C@anon-20191002_181700-33:localhost:8800SKGXUBFLKN6>[!B@anon-20191002_181700-32:localhost:8800DXDIQOFVCB6=[!A@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC6<[!@@anon-20191002_181700-30:localhost:8800STWEJRRVAK6;[!?@anon-20191002_181700-29:localhost:8800WSREAIROYN6:[!>@anon-20191002_181700-28:localhost:8800XMXOPMIZZU69[!=@anon-20191002_181700-27:localhost:8800TWNKNEABLT68[!<@anon-20191002_181700-26:localhost:8800UBEJKIDKFL67[!;@anon-20191002_181700-25:localhost:8800IOMJWWQXRT66[!:@anon-20191002_181700-24:localhost:8800MRUESCORNA65[!9@anon-20191002_181700-23:localhost:8800SNOHQGNOOL64[!8@anon-20191002_181700-22:localhost:8800HVNUPXSZHY63[!7@anon-20191002_181700-21:localhost:8800KHJDEDTDXI62[!6@anon-20191002_181700-20:localhost:8800MIHVANNPDD61[!5@anon-20191002_181700-19:localhost:8800YBVCGWDMTL60[!4@anon-20191002_181700-18:localhost:8800TRFQQDTHPK6/[!3@anon-20191002_181700-17:localhost:8800VRXIORHZEX6.[!2@anon-20191002_181700-16:localhost:8800OZMNCFRFTF6-[!1@anon-20191002_181700-15:localhost:8800KLXIHUSAOG8,[%0@anon-20191002_181700-14:localhost:8800login_device6Q[!U@anon-20191002_181700-48:localhost:8800AJQOQZXPLW6+[!/@anon-20191002_181700-14:localhost:8800UAGQKBVBOW*OC!S@cas_user=21:localhost:8800BIHKGABDWP6N[!R@anon-20191002_181700-47:localhost:8800JCZSZIHLLU1M[Q@anon-20191002_181700-45:localhost:8800xyzzy1L[P@anon-20191002_181700-44:localhost:8800xyzzy6K[!O@anon-20191002_181700-43:localhost:8800QIUVDLRUPD KStM%tO* q M (  olG" K& '  u Q -k% I  e ,Jf-Kg.Jh$1%@36:localhost:8800guest_device%$1%@30:localhost:8800guest_device$1%@29:localhost:8800guest_device$1%@28:localhost:8800guest_device$1%@27:localhost:8800guest_device$1%@26:localhost:8800guest_device$1%@33:localhost:8800guest_device$1%@32:localhost:8800guest_device$1%@31:localhost:8800guest_device$1%@34:localhost:8800guest_device$1%@35:localhost:8800guest_device# 1E+@__ANON__-48:localhost:42455CURIOSITY_ROVER2E-@__ANON__-46:localhost:42455random_device_id%7!@admin:localhost:8800GMJMIKRCODq/Bq!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZQ8]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN8[%@anon-20191002_181700-12:localhost:8800login_device*6[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQ)8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBE8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS8[%@anon-20191002_181700-11:localhost:8800login_device'6[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFA&8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH6[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQG%8]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA8]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH8]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW8]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF8]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF8]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUI8]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL8]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMG8]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHG#/%@9:localhost:8800guest_device#/%@8:localhost:8800guest_device!/!@8:localhost:8800SPYUTHBEKD#/%@7:localhost:8800guest_device#/%@6:localhost:8800guest_device#/%@5:localhost:8800guest_device#/%@4:localhost:8800guest_device#/%@3:localhost:8800guest_device#/%@2:localhost:8800guest_device$1%@25:localhost:8800guest_device$1%@24:localhost:8800guest_device$1%@23:localhost:8800guest_device$1%@22:localhost:8800guest_device$1%@21:localhost:8800guest_device$1%@20:localhost:8800guest_device#/%@1:localhost:8800guest_device$1%@19:localhost:8800guest_device$1%@18:localhost:8800guest_device$1%@17:localhost:8800guest_device$1%@16:localhost:8800guest_device$1%@15:localhost:8800guest_device$1%@14:localhost:8800guest_device$1%@13:localhost:8800guest_device$1%@12:localhost:8800guest_device$1%@11:localhost:8800guest_device$1%@10:localhost:8800guest_device /!@0:localhost:8800DWCYKFLVQMH /!@0:localhost:8800BLOODGXNYNI';#@02login:localhost:8800my_super_id&;!@02login:localhost:8800TUIMTGQXHF&;!@02login:localhost:8800OFRAEFMMXR&;!@02login:localhost:8800FHCBMHROPD=k! @01register-user-20191002_181700:localhost:8800KRNGWLGVFN C_&Ws: X  t ;  W u <  X v=Y w>Z!x?["w@8]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS8]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA68]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA6[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL18]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS8]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ8]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ8]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD8]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA8]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ8]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM8]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT8]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ6[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK08]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ8]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB8]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF8]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN8]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH6[!@anon-20191002_181700-17:localhost:8800VRXIORHZEX/8]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY8]!@anon-20191002_181700-170:localhost:8800SULWIONTNX6[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTF.8]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW8]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ8]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE8]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ8]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL8]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF8]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN8]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD6[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOG-8]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN8]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV8]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT8]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD8]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY8]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG8]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA8]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8[%@anon-20191002_181700-14:localhost:8800login_device,6[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOW+8]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8]!@anon-20191002_181700-140:localhost:8800OLUEHITWUA6[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZG(8]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS hJ* k`M/KqS т5  w OY /;|]> 1^ m z ) 6 C R  _ ly*7DQ`mz)P]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800}P]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800|P]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800{P]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800zP]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800yP]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800xP]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800wP]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800vP]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800uP]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800tP]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800sN[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800P]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800rP]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800qP]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800pP]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800oP]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800nP]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800mP]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800lP]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800kP]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800jN[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800P]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800iP]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800hP]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800gP]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800fP]Q@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800eP]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800dP]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800cP]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800bP]Q@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800aP]Q@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800`N[Q@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800P]Q@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800_P]Q@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800^P]Q@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800]P]Q@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800\P]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800[P]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800ZP]Q@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800YP]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800XP]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800VP]Q@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800WP]Q@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800UP]Q@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800TN[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800P]Q@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800SP]Q@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800RP]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800~  } }   ~Q[e!kkgEEVUJynguTqAoWD:localhost:8800@anon-20191002_181700-61:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qjoin~Q[e!dUnULFLGtgaVdwHtnz:localhost:8800@anon-20191002_181700-39:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1Ajoin~Q[e!aWbcZNVBalJilCEsdr:localhost:8800@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qjoin~Q[e!kxTDuIasPNpXtiRsif:localhost:8800@anon-20191002_181700-37:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kjoin~Q[e!wvnfKBSrUlfNmYoeil:localhost:8800@anon-20191002_181700-36:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68join~Q[e!NhWgOTYzEPRwAxRQvS:localhost:8800@anon-20191002_181700-35:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcjoin~Q[e!scyFsXcUIJiLIMwWMY:localhost:8800@anon-20191002_181700-34:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgjoin~Q[e!aWJOsiuJONOvjKWEjO:localhost:8800@anon-20191002_181700-33:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQjoin~Q[e!BDASLhdcKfNwxCTCSg:localhost:8800@anon-20191002_181700-32:localhost:8800$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAjoin~Q[e!xwoIOPTGmJIlTXakxC:localhost:8800@anon-20191002_181700-31:localhost:8800$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8join}Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-30:localhost:8800$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwbanQ[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMinviteQ[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-28:localhost:8800$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUleave~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-27:localhost:8800$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-26:localhost:8800$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-25:localhost:8800$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-24:localhost:8800$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-22:localhost:8800$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcjoin~ Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-23:localhost:8800$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0join~ Q[e!NZHpBquHDfJAjiawGk:localhost:8800@anon-20191002_181700-21:localhost:8800$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEjoin~ Q[e!uxKymrHZeXRYCZwekU:localhost:8800@anon-20191002_181700-20:localhost:8800$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1msjoin~ Q[e!sPWVGnipjiiWQpywNO:localhost:8800@anon-20191002_181700-20:localhost:8800$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNcjoin~ Q[e!GixhPUMvtKSWoKRgvw:localhost:8800@anon-20191002_181700-16:localhost:8800$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41LeojoinrQ[M!zhCsYcaweVFJLLNwBz:localhost:8800@anon-20191002_181700-16:localhost:8800$15700403151blJmZ:localhost:8800join~Q[e!loalEsWaTYwrVUNJLr:localhost:8800@anon-20191002_181700-16:localhost:8800$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Yjoin~Q[e!LaLcEGFLpjdlYlYKGC:localhost:8800@anon-20191002_181700-16:localhost:8800$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUjoin~Q[e!odAvowLhHJcmkKlxFk:localhost:8800@anon-20191002_181700-16:localhost:8800$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQjoinQ[e!plcvCHNbjCkNMMxnTk:localhost:8800@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUinvite~Q[e!plcvCHNbjCkNMMxnTk:localhost:8800@anon-20191002_181700-16:localhost:8800$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8join~Q[e!QZhNrNpwObZGJZpdAG:localhost:8800@anon-20191002_181700-16:localhost:8800$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wjoin~Q[e!zNCItZNbpkZKuufRhC:localhost:8800@anon-20191002_181700-16:localhost:8800$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAjoin DtM%?s; [ " y @  \ # z A  ] $y_B &{B ^%zAb)~Ec98]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8]!@anon-20191002_181700-140:localhost:8800OLUEHITWUA8]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS8]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS8]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA8]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA8]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBEc%7!@admin:localhost:8800GMJMIKRCOD<8]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT8]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD!/!@8:localhost:8800SPYUTHBEKDBq!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZ8]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY8]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG8]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA8]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8[%@anon-20191002_181700-14:localhost:8800login_device*6[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOW)6[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZG'8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN6[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQ(8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS6[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFA&8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH6[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQG%8]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA8]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH7]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW7]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF~7]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF}7]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUI{7]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL|7]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMGy7]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHGz /!@0:localhost:8800DWCYKFLVQMF /!@0:localhost:8800BLOODGXNYNG';#@02login:localhost:8800my_super_id&;!@02login:localhost:8800TUIMTGQXHF&;!@02login:localhost:8800OFRAEFMMXR&;!@02login:localhost:8800FHCBMHROPD=k! @01register-user-20191002_181700:localhost:8800KRNGWLGVFN >AWs: X  t ;  Y u <  X !v=Y zA]$y@ ^%zA_&8]!@anon-28]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP8]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH8]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN8]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF6[!@anon-20191002_181700-20:localhost:8800MIHVANNPDD08]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO8]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDH8]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIF8]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO8]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU8]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW5Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF6[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL/8]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS8]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ8]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ8]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD8]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA8]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ8]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM8]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT8]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ6[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK.8]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ8]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB8]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF8]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN8]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH6[!@anon-20191002_181700-17:localhost:8800VRXIORHZEX-8]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY8]!@anon-20191002_181700-170:localhost:8800SULWIONTNX6[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTF,8]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW8]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ8]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE8]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ8]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL8]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF8]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN8]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD6[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOG+8]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN 2 K}dW[!a_@anon-20191002_181700-57:localhost:8800NFIQURSFUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCgdU[!a[@anon-20191002_181700-54:localhost:8800WKSZTPHXTGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCgdT[!aY@anon-20191002_181700-53:localhost:8800HCQPROAEXNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3CgdS[!aX@anon-20191002_181700-52:localhost:8800KYXATQJIHBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCgdR[!aW@anon-20191002_181700-51:localhost:8800IJUKQYPGHPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJlVQTmN6N2ZrZ0AsZncudAowMDJmc2lnbmF0dXJlIJUSaBLHjckaJ7R3Ppmg1akirPJNWYeuvIErOqbAzrMgCgdQ[!aV@anon-20191002_181700-51:localhost:8800EXJVEMMDWDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCgdP[!aU@anon-20191002_181700-50:localhost:8800BNBHLRCHUXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCgHMC!AP@cas_user=21:localhost:8800BIHKGABDWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZWNpZCB1c2VyX2lkID0gQGNhc191c2VyPTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLmRpRWFhYk9OTTZ2OEh1SgowMDJmc2lnbmF0dXJlILOLH5HPvjexcEbks8f9RkkMx8yxtyhQZPbH0mI8YfWkCgdL[!aO@anon-20191002_181700-47:localhost:8800JCZSZIHLLUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2tfQndpViZYSElTfjpuawowMDJmc2lnbmF0dXJlIBTKbevNx3YzpjwgxT3xjUKRI8si9AGloAUDwSu4sxllCgdO[!aR@anon-20191002_181700-48:localhost:8800AJQOQZXPLWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLlp-aWV0aGpsb2VIdDhYaAowMDJmc2lnbmF0dXJlILz-X06NA3MCjvb6uGmoobDiJbicbG4nV2yzvbZkP-rwCgdV[!a]@anon-20191002_181700-55:localhost:8800GJICSOZSSMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCg #X( <  h |  .BVj~0DXth [@anon-20191002_181700-89:localhost:8800$2b$04$XHTTxfc7XfxTdgfLID0x.uNLdkr6HYzrsyM16IUGAmlwpA1ZQKG0G]tg [@anon-20191002_181700-86:localhost:8800$2b$04$xT.Y5nqfpO06eyBRXJbpTu4WFq.XA2hZ6vdDYB7TUepC4kZPLAhP2]tf [@anon-20191002_181700-87:localhost:8800$2b$04$1FJ2pV.yhVuSlr2WYN7hHeGXgszf8nu4nD52hOoux3zHdgmxV/6PS]te [@anon-20191002_181700-84:localhost:8800$2b$04$4HXEzkmiV592wvfzCn4BbO6wF7jRTVRvV5PfHYiIB/TYPePdwv4uC]td [@anon-20191002_181700-85:localhost:8800$2b$04$AVOmx2OplSpJgSQIQdjGtuOr0a9ptCuHSvFuTdMPyD2LzmYz9S3li]tc [@anon-20191002_181700-83:localhost:8800$2b$04$pxV7z34n/xQomFr.VyZiX.KJ3mLpWO1ePTrQxe5F2QtvuJXAu8DQ2]tb [@anon-20191002_181700-82:localhost:8800$2b$04$TP9e4RMBy7pRwukyx23RQOLU2s.aNfNQ9w.V1eBmixBqF1/bDqE9.]ta [@anon-20191002_181700-81:localhost:8800$2b$04$QPBXziWCFBPLgYH8Y5A3o.qTzIMIZwfKLCa.lWP0v/NYfUdfq6Cf.]t` [@anon-20191002_181700-80:localhost:8800$2b$04$bhu7vyY2DiS1p8ebebYsiei2cNML.Ovv5VEyUn8Rq1UxFipAOb5Wy]t_ [@anon-20191002_181700-79:localhost:8800$2b$04$QNR1dxI5.ABjYscVgJ/QQu/Qv/5QVJDiQohVm6F87ENooWKfuQsbq]t^ [@anon-20191002_181700-77:localhost:8800$2b$04$e1.eu7o17x0FIM6csxFrsufSucJsWnZyoC3BVy4Z171Xe0PXhzyCe]t] [@anon-20191002_181700-75:localhost:8800$2b$04$GnPae2RthgBPGec/OCGX9ONCBRrKD3BwdlHSos623lAxXld.EJDQq]t\ [@anon-20191002_181700-74:localhost:8800$2b$04$s50REOgJPHFkuyrrJZrLKODZvdwBZeeYkierCaixonH/dH8S.TQYO]t[ [@anon-20191002_181700-73:localhost:8800$2b$04$RVZpw.nEkN5vkeB1gK2D3upY5Hxojhi4G1phySGMdK8JgySYSEi/.]tZ [@anon-20191002_181700-71:localhost:8800$2b$04$JF07z/PbVFaezxUFH2vRsOzL7Q4ny.aePc8Bkxl9mNlXzpTYXXVvG]ytY [@anon-20191002_181700-70:localhost:8800$2b$04$ljmWByI/cFUPo7cWZvTNkeCidnG83tTfJkRaHWotlg9tlZkS7gHyC]ytX [@anon-20191002_181700-68:localhost:8800$2b$04$hr43mYpA0LiXmkFRE4YtHeN0PFadmWaxacRH37BPNyeZYQuZ1KW4e]stW [@anon-20191002_181700-67:localhost:8800$2b$04$eUuRJ4C7i0/9iQYq3lWAo.kGjZETmfIo.Hgi/pebvYQyuHazmOXlu]jtV [@anon-20191002_181700-64:localhost:8800$2b$04$5//IboQUv/ANaZ.B/CDCLu.BvRxrPG7aZeRdLg/PLqateuz0iWE3m]dtU [@anon-20191002_181700-65:localhost:8800$2b$04$zG178QrOoiPmI3b5zWkYn.xgmfEvbXWgIjxFgvAFafWvmC4ns5Eia]dtT [@anon-20191002_181700-63:localhost:8800$2b$04$ER81rHoxEbI8zvqV66Z5.OGXkvpOtD35RORFaghj8MoWQ7wtQH./W]`tS [@anon-20191002_181700-62:localhost:8800$2b$04$dvlxiDWzwMbxDjSEvHq8tOLHp0vfxOhG2NtwdWSLf63ftTfFKDfpu]ZtR [@anon-20191002_181700-61:localhost:8800$2b$04$X0nDUQ4coSITzL6fvkVMruqMuJYy3slx.tNxbfXGTUn89Q9j/xkSC]UtQ [@anon-20191002_181700-60:localhost:8800$2b$04$BwXhnjxi8sqyQ1w8UnYCk.JrkdYsPsoJ5BOhfJsAaoRTJouukyCIu]TtP [@anon-20191002_181700-59:localhost:8800$2b$04$Bow16lqaNKFFw3eCHpfEzuN1/govkNDqEPK1IN.yck0ZtfK/VV3x.]T7O [ @anon-20191002_181700-58:localhost:8800]StN [@anon-20191002_181700-57:localhost:8800$2b$04$vNSHMxG98OeY1e8t1kXKIO4felFasn1aJMBaX7mQXGDXrM2qOj3j6]R7M [ @anon-20191002_181700-56:localhost:8800]QtL [@anon-20191002_181700-55:localhost:8800$2b$04$EZw7tbUO1wxtTguOwR8zkej.0Tv.5/0PustsfQbwlYuSDQc3LHVaK]QtK [@anon-20191002_181700-54:localhost:8800$2b$04$OwxdiRTiEUxQMlZ.lCZQOOLVUScxSxK/.220j2mf6akFC.NS1kibu]OtJ [@anon-20191002_181700-53:localhost:8800$2b$04$DoDNqorN9ZC11lCSKfK9mOQ3AI1NytKRNBDoAxETGlZJQ3DlkpaB.]NtI [@anon-20191002_181700-52:localhost:8800$2b$04$Kqhj8en6./0p6wALgOnSSuNCmlRUtTLobMY3i/RKoYnykYIBJX9WK]NtH [@anon-20191002_181700-51:localhost:8800$2b$04$N4MxvLZHIJLbr8m1SP6wrO0Xe8KeKhVXSSPMPTZ566cx8AqLDpodi]MtG [@anon-20191002_181700-50:localhost:8800$2b$04$PpWeMVJXQv8dHvYHqsiB9.fxkEd.JygScKmYXQyrwtbgrzYHcx6.G]LtF [@anon-20191002_181700-49:localhost:8800$2b$04$/BRpwl4LxtqZ..I/z9Z.Au4bYNeCuqmTfrMNQUbnXVQfEmTIJFee6]K <  xG m </aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCgX/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCgW/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCgV/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gY2Q5X1ZSS0ZuQ3ZoK0lQdgowMDJmc2lnbmF0dXJlICgJ_tDsFzgoqjbSMgd3egoxWDT2M0zA54qPLeNHN5FaCgI/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3CgT/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCgS/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJlVQTmN6N2ZrZ0AsZncudAowMDJmc2lnbmF0dXJlIJUSaBLHjckaJ7R3Ppmg1akirPJNWYeuvIErOqbAzrMgCgR/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCgQ/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCgP1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0Cg]/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCg^/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCgU  4 h 9mfd]c@anon-20191002_181700-373:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-Bwo127.0.0.1qd]c@anon-20191002_181700-372:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgo127.0.0.1pd]c@anon-20191002_181700-371:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQo127.0.0.1od]c@anon-20191002_181700-370:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9go127.0.0.1na[a@anon-20191002_181700-36:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0Cg127.0.0.1d]c@anon-20191002_181700-369:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0wo127.0.0.1md]c@anon-20191002_181700-368:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-Qo127.0.0.1ld]c@anon-20191002_181700-367:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1Ewo127.0.0.1kd]c@anon-20191002_181700-366:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5Ao127.0.0.1id]c@anon-20191002_181700-365:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_go127.0.0.1j Vo M + xV2[a!E@anon-20191002_181700-59:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCgDRVLOZZUPQ127.0.0.1Perl + Net::Async::HTTP/0.44mZ1[a!E@anon-20191002_181700-58:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaVdGemVQMTNIbFouWCNQMwowMDJmc2lnbmF0dXJlIMS3QCp7F93TS2LA-booUWIaYlu3l9zJ8Gw8Sf7WHA_nCgXSIUOLPWQX127.0.0.1Perl + Net::Async::HTTP/0.44mVу0[a!E@anon-20191002_181700-57:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCgNFIQURSFUO127.0.0.1Perl + Net::Async::HTTP/0.44mUB/[a!E@anon-20191002_181700-56:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO0FsZFQwLSxGbjAzXixUXgowMDJmc2lnbmF0dXJlIFiy7c5jxVNqQKAd6fTEIOinfNma03Ww4HTuuirYbJ7_CgUWHMGOHJLQ127.0.0.1Perl + Net::Async::HTTP/0.44mQo.[a!E@anon-20191002_181700-55:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCgGJICSOZSSM127.0.0.1Perl + Net::Async::HTTP/0.44mN-[a!E@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCgWKSZTPHXTG127.0.0.1Perl + Net::Async::HTTP/0.44mK؃,[a!E@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaUQ6XkF1QW4wajMyUC1JLgowMDJmc2lnbmF0dXJlIE-_kuf73Jp-vYVvHnm5pGZPUIVOn9-qpj3OQ8fgERaZCgMQMQOGGONN127.0.0.1Perl + Net::Async::HTTP/0.44mK+[a!E@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3CgHCQPROAEXN127.0.0.1Perl + Net::Async::HTTP/0.44mG*[a!E@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGNyI2RHZVdfPXgxMmRPSAowMDJmc2lnbmF0dXJlICdrO5YfR0rOG-1uCgLG91mgocOY6hRHDoyFxBBlT9VDCgMVQZRCIGFU127.0.0.1Perl + Net::Async::HTTP/0.44mF)[a!E@anon-20191002_181700-52:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCgKYXATQJIHB127.0.0.1Perl + Net::Async::HTTP/0.44mBj Qc=Y2 p J  h J + w J  i ; U 'oA[-uGa3{Me7 ]/wI-[V@anon-20191002_181700-48:localhost:8800R-[U@anon-20191002_181700-48:localhost:8800Q!CS@cas_user=21:localhost:8800O-[R@anon-20191002_181700-47:localhost:8800N-[Q@anon-20191002_181700-45:localhost:8800M-[P@anon-20191002_181700-44:localhost:8800L-[O@anon-20191002_181700-43:localhost:8800K-[N@anon-20191002_181700-43:localhost:8800J/M@0:localhost:8800I/L@0:localhost:8800H-[K@anon-20191002_181700-41:localhost:8800G-[J@anon-20191002_181700-40:localhost:8800F-[I@anon-20191002_181700-39:localhost:8800E-[H@anon-20191002_181700-38:localhost:8800D-[G@anon-20191002_181700-37:localhost:8800C-[F@anon-20191002_181700-36:localhost:8800B-[E@anon-20191002_181700-35:localhost:8800A-[D@anon-20191002_181700-34:localhost:8800@-[C@anon-20191002_181700-33:localhost:8800?-[B@anon-20191002_181700-32:localhost:8800>-[A@anon-20191002_181700-31:localhost:8800=-[@@anon-20191002_181700-30:localhost:8800<-[?@anon-20191002_181700-29:localhost:8800;-[>@anon-20191002_181700-28:localhost:8800:-[=@anon-20191002_181700-27:localhost:88009-[<@anon-20191002_181700-26:localhost:88008-[;@anon-20191002_181700-25:localhost:88007-[:@anon-20191002_181700-24:localhost:88006-[9@anon-20191002_181700-23:localhost:88005-[8@anon-20191002_181700-22:localhost:88004-[7@anon-20191002_181700-21:localhost:88003-[6@anon-20191002_181700-20:localhost:88002-[5@anon-20191002_181700-19:localhost:88001-[4@anon-20191002_181700-18:localhost:88000-[3@anon-20191002_181700-17:localhost:8800/-[2@anon-20191002_181700-16:localhost:8800.-[1@anon-20191002_181700-15:localhost:8800--[0@anon-20191002_181700-14:localhost:8800,-[/@anon-20191002_181700-14:localhost:8800+-[.@anon-20191002_181700-12:localhost:8800*-[,@anon-20191002_181700-12:localhost:8800)-[+@anon-20191002_181700-13:localhost:8800(-[*@anon-20191002_181700-11:localhost:8800'-[(@anon-20191002_181700-11:localhost:8800&-['@anon-20191002_181700-10:localhost:8800%,Y&@anon-20191002_181700-9:localhost:8800$,Y$@anon-20191002_181700-9:localhost:8800#,Y#@anon-20191002_181700-8:localhost:8800",Y"@anon-20191002_181700-8:localhost:8800!,Y!@anon-20191002_181700-8:localhost:8800 ,Y @anon-20191002_181700-7:localhost:8800,Y@anon-20191002_181700-6:localhost:8800,Y@anon-20191002_181700-6:localhost:8800,Y@anon-20191002_181700-5:localhost:8800,Y@anon-20191002_181700-4:localhost:8800=@spyglass:localhost:8800;@02login:localhost:8800;@02login:localhost:8800;@02login:localhost:8800;@02login:localhost:8800-[@anon-20191002_181700-3a:localhost:8800,Y@anon-20191002_181700-2:localhost:8800,Y@anon-20191002_181700-1:localhost:8800%K@chrtestuser-39-:localhost:8800%K@chrtestuser-10-:localhost:8800&M@chrtestuser-233-:localhost:8800&M@chrtestuser-163-:localhost:8800&M@chrtestuser-125-:localhost:8800&M@chrtestuser-124-:localhost:8800 &M @chrtestuser-123-:localhost:8800 %K @chrtestuser-93-:localhost:8800 %K @chrtestuser-91-:localhost:8800 %K @chrtestuser-64-:localhost:8800 %K @chrtestuser-92-:localhost:8800%K@chrtestuser-63-:localhost:8800%K@chrtestuser-58-:localhost:8800%K@chrtestuser-34-:localhost:8800%K@chrtestuser-33-:localhost:8800 A@mycooluser:localhost:8800 A@user-upper:localhost:88004k @01register-user-20191002_181700:localhost:8800 I? ?Y+ d6~P"j<V(l=R#e4p? A  } L  W & b 1m m < x0]@anon-20191002_181700-106:localhost:88000]@anon-20191002_181700-104:localhost:88000]@anon-20191002_181700-102:localhost:88000]@anon-20191002_181700-103:localhost:88000]@anon-20191002_181700-100:localhost:88000]@anon-20191002_181700-101:localhost:8800/[@anon-20191002_181700-99:localhost:8800/[@anon-20191002_181700-96:localhost:8800.[@anon-20191002_181700-97:localhost:8800.[@anon-20191002_181700-95:localhost:8800~.[@anon-20191002_181700-93:localhost:8800}.[@anon-20191002_181700-90:localhost:8800|.[@anon-20191002_181700-91:localhost:8800{.[@anon-20191002_181700-88:localhost:8800z.[@anon-20191002_181700-89:localhost:8800y.[@anon-20191002_181700-86:localhost:8800x.[@anon-20191002_181700-87:localhost:8800w.[@anon-20191002_181700-84:localhost:8800v.[@anon-20191002_181700-85:localhost:8800u.[@anon-20191002_181700-83:localhost:8800t.[@anon-20191002_181700-82:localhost:8800s-[@anon-20191002_181700-81:localhost:8800r-[~@anon-20191002_181700-80:localhost:8800q-[}@anon-20191002_181700-79:localhost:8800p-[|@anon-20191002_181700-77:localhost:8800o-[{@anon-20191002_181700-75:localhost:8800n-[z@anon-20191002_181700-74:localhost:8800m-[y@anon-20191002_181700-73:localhost:8800l-[x@anon-20191002_181700-71:localhost:8800k-[w@anon-20191002_181700-70:localhost:8800j-[v@anon-20191002_181700-68:localhost:8800i-[u@anon-20191002_181700-67:localhost:8800h-[t@anon-20191002_181700-64:localhost:8800g-[s@anon-20191002_181700-65:localhost:8800f-[r@anon-20191002_181700-63:localhost:8800e-[q@anon-20191002_181700-62:localhost:8800d-[p@anon-20191002_181700-61:localhost:8800c-[o@anon-20191002_181700-60:localhost:8800b-[n@anon-20191002_181700-59:localhost:8800a-[m@anon-20191002_181700-58:localhost:8800`-[k@anon-20191002_181700-57:localhost:8800_-[j@anon-20191002_181700-56:localhost:8800^ r-[Y@anon-20191002_181700-49:localhost:8800T0]@anon-20191002_181700-124:localhost:88000]@anon-20191002_181700-123:localhost:88000]@anon-20191002_181700-122:localhost:88000]@anon-20191002_181700-121:localhost:88000]@anon-20191002_181700-120:localhost:88000]@anon-20191002_181700-118:localhost:88000]@anon-20191002_181700-119:localhost:88000]@anon-20191002_181700-117:localhost:88000]@anon-20191002_181700-116:localhost:88000]@anon-20191002_181700-115:localhost:88000]@anon-20191002_181700-114:localhost:88000]@anon-20191002_181700-113:localhost:88000]@anon-20191002_181700-112:localhost:88000]@anon-20191002_181700-110:localhost:88000]@anon-20191002_181700-109:localhost:88000]@anon-20191002_181700-108:localhost:88000]@anon-20191002_181700-107:localhost:8800,0]@anon-20191002_181700-127:localhost:8800-[g@anon-20191002_181700-55:localhost:8800]-[f@anon-20191002_181700-54:localhost:8800\-[d@anon-20191002_181700-54:localhost:8800[-[c@anon-20191002_181700-53:localhost:8800Z-[a@anon-20191002_181700-53:localhost:8800Y-[_@anon-20191002_181700-52:localhost:8800X-[^@anon-20191002_181700-51:localhost:8800W-[\@anon-20191002_181700-51:localhost:8800V-[Z@anon-20191002_181700-50:localhost:8800U0]@anon-20191002_181700-128:localhost:88000]@anon-20191002_181700-125:localhost:88000]@anon-20191002_181700-126:localhost:8800  2 d/adb[!ak@anon-20191002_181700-71:localhost:8800TCTQJEZQFIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCgda[!aj@anon-20191002_181700-70:localhost:8800PGQYANGMEIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09Cgd`[!ai@anon-20191002_181700-68:localhost:8800GNKAPUDEUDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCgd_[!ah@anon-20191002_181700-67:localhost:8800ONYGLHFWXMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8Cgd^[!ag@anon-20191002_181700-64:localhost:8800NPZFHRJOQIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCgd][!af@anon-20191002_181700-65:localhost:8800JPWZALXKWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0Cgd\[!ae@anon-20191002_181700-63:localhost:8800VLTVDGDALOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCgd[[!ad@anon-20191002_181700-62:localhost:8800PJTOWKTNYXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCgdZ[!ac@anon-20191002_181700-61:localhost:8800SXUBBXHSVUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCgdY[!ab@anon-20191002_181700-60:localhost:8800JSZKVAFOZGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCgdX[!aa@anon-20191002_181700-59:localhost:8800DRVLOZZUPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCg  4 h 9mfd]c@anon-20191002_181700-514:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9go127.0.0.1d]c@anon-20191002_181700-512:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAo127.0.0.1d]c@anon-20191002_181700-510:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-Ao127.0.0.1a[a@anon-20191002_181700-50:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCg127.0.0.1'd]c@anon-20191002_181700-509:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwo127.0.0.1d]c@anon-20191002_181700-508:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwo127.0.0.1d]c@anon-20191002_181700-507:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQo127.0.0.1߂d]c@anon-20191002_181700-506:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQo127.0.0.1ނd]c@anon-20191002_181700-505:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQo127.0.0.1݂d]c@anon-20191002_181700-503:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwo127.0.0.1 Vo M + xV<[a!E@anon-20191002_181700-71:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCgTCTQJEZQFI127.0.0.1Perl + Net::Async::HTTP/0.44m;[a!E@anon-20191002_181700-70:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09CgPGQYANGMEI127.0.0.1Perl + Net::Async::HTTP/0.44m.:[a!E@anon-20191002_181700-68:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCgGNKAPUDEUD127.0.0.1Perl + Net::Async::HTTP/0.44mA9[a!E@anon-20191002_181700-67:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8CgONYGLHFWXM127.0.0.1Perl + Net::Async::HTTP/0.44mg8[a!E@anon-20191002_181700-64:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCgNPZFHRJOQI127.0.0.1Perl + Net::Async::HTTP/0.44m7[a!E@anon-20191002_181700-65:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0CgJPWZALXKWP127.0.0.1Perl + Net::Async::HTTP/0.44m&6[a!E@anon-20191002_181700-63:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCgVLTVDGDALO127.0.0.1Perl + Net::Async::HTTP/0.44mK5[a!E@anon-20191002_181700-62:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCgPJTOWKTNYX127.0.0.1Perl + Net::Async::HTTP/0.44ms4[a!E@anon-20191002_181700-61:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCgSXUBBXHSVU127.0.0.1Perl + Net::Async::HTTP/0.44m^3[a!E@anon-20191002_181700-60:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCgJSZKVAFOZG127.0.0.1Perl + Net::Async::HTTP/0.44m\ TvHb4 | N h : T & n @  Z ,tF`2zLf8 P!e6zK`1.Q$1570042629120wtVFY:localhost:8800sha256 a.Q$1570042628119fxxBA:localhost:8800sha256 `.Q$1570042627118OLFSV:localhost:8800sha256 _.Q$1570042626117sfUAQ:localhost:8800sha256 ^.Q$1570042626116pKAbp:localhost:8800sha256 ].Q$1570042624115nZtIB:localhost:8800sha256 \.Q$1570042623114pBHTz:localhost:8800sha256 [.Q$1570042622113mtzjt:localhost:8800sha256 Z.Q$1570042621112AUAFX:localhost:8800sha256 Y.Q$1570042620111taWCG:localhost:8800sha256 X.Q$1570042619110gZfPB:localhost:8800sha256 W.Q$1570042619109qhpUv:localhost:8800sha256 V.Q$1570042618108WWxoQ:localhost:8800sha256 U.Q$1570042617107cANtu:localhost:8800sha256 T.Q$1570042616106fkZGL:localhost:8800sha256 S.Q$1570042615105OKfnm:localhost:8800sha256 R.Q$1570042614104FELge:localhost:8800sha256 Q.Q$1570042613103AHxGt:localhost:8800sha256 P.Q$1570042612102sQZCG:localhost:8800sha256 O.Q$1570042611101IffRu:localhost:8800sha256 N.Q$1570042611100ueDzK:localhost:8800sha256 M-O$157004261099UmKia:localhost:8800sha256 L-O$157004188598DcHDt:localhost:8800sha256>-O$157004188397MRiZP:localhost:8800sha256;-O$157004188296OVWxu:localhost:8800sha256:-O$157004188195thBOS:localhost:8800sha2569-O$157004188194vdqBG:localhost:8800sha2568-O$157004188093UtRbN:localhost:8800sha2567-O$157004187992XwpoQ:localhost:8800sha2566-O$157004187190ZLRgN:localhost:8800sha256--O$157004187089FLOwV:localhost:8800sha256,-O$157004186988RkcKb:localhost:8800sha256+-O$157004186887sKbQU:localhost:8800sha256*-O$157004186786RVgKA:localhost:8800sha256)-O$157004186785fjAIs:localhost:8800sha256(-O$157004185983tEalY:localhost:8800sha256 -O$157004185982diSTq:localhost:8800sha256-O$157004185881ahRFW:localhost:8800sha256-O$157004185780kUwpq:localhost:8800sha256-O$157004185679NNCIw:localhost:8800sha256-O$157004185678lyJsT:localhost:8800sha256-O$157004184976eGgUf:localhost:8800sha256-O$157004184875Wzayo:localhost:8800sha256-O$157004184774CHMNl:localhost:8800sha256-O$157004184773rCaRK:localhost:8800sha256-O$157004184672SfwvS:localhost:8800sha256-O$157004184571IVgQM:localhost:8800sha256-O$157004183969fQFzs:localhost:8800sha256-O$157004183868QRvOi:localhost:8800sha256-O$157004183467WkNdH:localhost:8800sha256-O$157004183366iKFsz:localhost:8800sha256-O$157004183365ZxPWz:localhost:8800sha256-O$157004183264ktTbL:localhost:8800sha256-O$157004183063NdEPw:localhost:8800sha256-O$157004183062AwGkL:localhost:8800sha256-O$157004182060gAdxi:localhost:8800sha256-O$157004181959Afmmv:localhost:8800sha256-O$157004181958ixShg:localhost:8800sha256-O$157004181857fcmAB:localhost:8800sha256-O$157004181756ejZNp:localhost:8800sha256-O$157004181655JUAvO:localhost:8800sha256-O$157004180853KmrHT:localhost:8800sha256-O$157004180752YHMqi:localhost:8800sha256-O$157004180751hMlwg:localhost:8800sha256-O$157004180650ruqIl:localhost:8800sha256-O$157004180549mJBJB:localhost:8800sha256-O$157004180448zlZXD:localhost:8800sha256-O$157004180347MMmFf:localhost:8800sha256-O$157004180346TRucp:localhost:8800sha256-O$157004180045QtsUE:localhost:8800sha256-O$157004179944JKWNJ:localhost:8800sha256-O$157004179843yDrjz:localhost:8800sha256-O$157004179742OaMxS:localhost:8800sha256-O$157004179541PbBIm:localhost:8800sha256-O$157004179340NSiie:localhost:8800sha256-O$157004179239LLqht:localhost:8800sha256-O$157004179138NbBYh:localhost:8800sha256-O$157004179037FGMFG:localhost:8800sha256-O$157004178936zuJSX:localhost:8800sha256-O$157004178835mLAyG:localhost:8800sha256-O$157004178734ZpFdg:localhost:8800sha256-O$157004177433OonrH:localhost:8800sha256-O$157004177232wsJyW:localhost:8800sha256-O$157004177131trwoi:localhost:8800sha256  feQ_[$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 149}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-62:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040411230, "hashes": {"sha256": "WPHzFLuI65nDDufJT+rdigG/npnTjht9+8Db8Ng0phk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q0S+l+YE5gNkDYF9exL0aJsXij7kH0auhUVWuWeXwIbvO0uCKRhJEfJWJH3g51EKrfM8lRJmV4Q+nvafdEl4Cg"}}, "unsigned": {"age_ts": 1570040411230}}eQ]$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 148}{"auth_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0", "$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg"], "type": "m.room.topic", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"topic": "Testing topic for the new room"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040410017, "hashes": {"sha256": "xS6hmmPr8TaVDZ9vzcspwiuIc8WylU/70T8gDMsEdyQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3M3n520QUyeowV/iEZVoI1oS4744C6hDPcVDWCM1Op/9tHqmJZTtBt77SEU6U12VATgA441xC3R/THOyBGk5BQ"}}, "unsigned": {"age_ts": 1570040410017}}eQ]$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 147}{"auth_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0", "$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE"], "type": "m.room.history_visibility", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040408608, "hashes": {"sha256": "vy5OJmGxfpAfpANOPfd34qS127zYzCoOW+t9OtSCqro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qh4CcxAiLKjTqKN2wiFUrItHV3kBgvYWJ0irD3Dk5QoxVGbAIyhGIGlUszppRN170TRRS5UlkA51Mg9TP01JCg"}}, "unsigned": {"age_ts": 1570040408608}}qeQ]s$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 146}{"auth_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0", "$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0"], "type": "m.room.join_rules", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040407851, "hashes": {"sha256": "y35FtYHbROph+Vg63Cidod0dR5YaFM5jXYxH4h/H1dE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z1WxWOIjVrpyWKbzvkuxLhopXLssAo2zeQFBymK/LT6LPHepYaDP7pGdr65OTkZE5sJG0IUO6fWST/Foqss3BQ"}}, "unsigned": {"age_ts": 1570040407851}} \Y g  t  }1:GT\()e9Q [$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcm.room.canonical_alias!cosGKKhHvKaVukBCic:localhost:8800mm€@anon-20191002_181700-67:localhost:8800%(e3Q [$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8m.room.power_levels!cosGKKhHvKaVukBCic:localhost:8800mmd@anon-20191002_181700-67:localhost:8800'e'Q [$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMm.room.member!cosGKKhHvKaVukBCic:localhost:8800m0m@anon-20191002_181700-67:localhost:8800& e'Q  [$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8m.room.create!cosGKKhHvKaVukBCic:localhost:8800mm@anon-20191002_181700-67:localhost:8800%e'Q [$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgm.room.member!rZWweGEChkxxtzyfDB:localhost:8800mmI@anon-20191002_181700-64:localhost:8800+$e?Q [$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIm.room.history_visibility!rZWweGEChkxxtzyfDB:localhost:8800mmd@anon-20191002_181700-65:localhost:8800##e/Q [$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIm.room.join_rules!rZWweGEChkxxtzyfDB:localhost:8800mm@anon-20191002_181700-65:localhost:8800%"e3Q [$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPAm.room.power_levels!rZWweGEChkxxtzyfDB:localhost:8800m?m'@anon-20191002_181700-65:localhost:8800!e'Q [$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIm.room.member!rZWweGEChkxxtzyfDB:localhost:8800m>m@anon-20191002_181700-65:localhost:8800  e'Q  [$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0m.room.create!rZWweGEChkxxtzyfDB:localhost:8800mmQ@anon-20191002_181700-65:localhost:8800+e?Q [$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsm.room.history_visibility!uJtKGXTNdEnCPNOGDx:localhost:8800mm@anon-20191002_181700-63:localhost:8800#e/Q [$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMm.room.join_rules!uJtKGXTNdEnCPNOGDx:localhost:8800mmj@anon-20191002_181700-63:localhost:8800%e3Q [$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLom.room.power_levels!uJtKGXTNdEnCPNOGDx:localhost:8800m;mx@anon-20191002_181700-63:localhost:8800e'Q [$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAm.room.member!uJtKGXTNdEnCPNOGDx:localhost:8800mm@anon-20191002_181700-63:localhost:8800 e'Q  [$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Qm.room.create!uJtKGXTNdEnCPNOGDx:localhost:8800mm@anon-20191002_181700-63:localhost:8800#e/Q [$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067ka.test.state.type!vJQYmOxOBLwFKzYkNj:localhost:8800mm@anon-20191002_181700-62:localhost:8800+e?Q [$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8m.room.history_visibility!vJQYmOxOBLwFKzYkNj:localhost:8800m}m @anon-20191002_181700-62:localhost:8800#e/Q [$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Em.room.join_rules!vJQYmOxOBLwFKzYkNj:localhost:8800m{Gm|@anon-20191002_181700-62:localhost:8800%e3Q [$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0m.room.power_levels!vJQYmOxOBLwFKzYkNj:localhost:8800mxmy@anon-20191002_181700-62:localhost:8800e'Q [$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEm.room.member!vJQYmOxOBLwFKzYkNj:localhost:8800mvmw?@anon-20191002_181700-62:localhost:8800 e'Q  [$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4m.room.create!vJQYmOxOBLwFKzYkNj:localhost:8800mt^mt@anon-20191002_181700-62:localhost:8800e%Q [$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwm.room.topic!kkgEEVUJynguTqAoWD:localhost:8800momo@anon-20191002_181700-61:localhost:8800+e?Q [$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Egm.room.history_visibility!kkgEEVUJynguTqAoWD:localhost:8800mj ml6@anon-20191002_181700-61:localhost:8800#e/Q [$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEm.room.join_rules!kkgEEVUJynguTqAoWD:localhost:8800mg+mh6@anon-20191002_181700-61:localhost:8800 Rd@hB b 0 q $ \ ( X $ T PL|HxDl8L|HxD2R;;anon-20191002_181700-61anon-20191002_181700-612Q;;anon-20191002_181700-60anon-20191002_181700-602P;;anon-20191002_181700-59anon-20191002_181700-592O;;anon-20191002_181700-58anon-20191002_181700-582N;;anon-20191002_181700-57anon-20191002_181700-572M;;anon-20191002_181700-56anon-20191002_181700-562L;;anon-20191002_181700-55anon-20191002_181700-552K;;anon-20191002_181700-54anon-20191002_181700-542J;;anon-20191002_181700-53anon-20191002_181700-532I;;anon-20191002_181700-52anon-20191002_181700-522H;;anon-20191002_181700-51anon-20191002_181700-512G;;anon-20191002_181700-50anon-20191002_181700-502F;;anon-20191002_181700-49anon-20191002_181700-492E;;anon-20191002_181700-48anon-20191002_181700-48D##cas_user=21cas_user=212C;;anon-20191002_181700-47anon-20191002_181700-472B;;anon-20191002_181700-46anon-20191002_181700-462A;;anon-20191002_181700-45anon-20191002_181700-452@;;anon-20191002_181700-44anon-20191002_181700-442?;;anon-20191002_181700-43anon-20191002_181700-43>002=;;anon-20191002_181700-41anon-20191002_181700-412<;;anon-20191002_181700-40anon-20191002_181700-402;;;anon-20191002_181700-39anon-20191002_181700-392:;;anon-20191002_181700-38anon-20191002_181700-3829;;anon-20191002_181700-37anon-20191002_181700-3728;;anon-20191002_181700-36anon-20191002_181700-3627;;anon-20191002_181700-35anon-20191002_181700-3526;;anon-20191002_181700-34anon-20191002_181700-3425;;anon-20191002_181700-33anon-20191002_181700-3324;;anon-20191002_181700-32anon-20191002_181700-3223;;anon-20191002_181700-31anon-20191002_181700-3122;;anon-20191002_181700-30anon-20191002_181700-3021;;anon-20191002_181700-29anon-20191002_181700-2920;;anon-20191002_181700-28anon-20191002_181700-282/;;anon-20191002_181700-27anon-20191002_181700-272.;;anon-20191002_181700-26anon-20191002_181700-262-;;anon-20191002_181700-25anon-20191002_181700-252,;;anon-20191002_181700-24anon-20191002_181700-242+;;anon-20191002_181700-23anon-20191002_181700-232*;;anon-20191002_181700-22anon-20191002_181700-222);;anon-20191002_181700-21anon-20191002_181700-212(;;anon-20191002_181700-20anon-20191002_181700-202';;anon-20191002_181700-19anon-20191002_181700-192&;;anon-20191002_181700-18anon-20191002_181700-182%;;anon-20191002_181700-17anon-20191002_181700-172$;;anon-20191002_181700-16anon-20191002_181700-162#;;anon-20191002_181700-15anon-20191002_181700-152";;anon-20191002_181700-14anon-20191002_181700-142!;;anon-20191002_181700-12anon-20191002_181700-122 ;;anon-20191002_181700-13anon-20191002_181700-132;;anon-20191002_181700-11anon-20191002_181700-112;;anon-20191002_181700-10anon-20191002_181700-10099anon-20191002_181700-9anon-20191002_181700-9099anon-20191002_181700-8anon-20191002_181700-8099anon-20191002_181700-7anon-20191002_181700-7099anon-20191002_181700-6anon-20191002_181700-6K99Canon-20191002_181700-5anon-20191002_181700-5http://somewhere/my-pic.jpg-93anon-20191002_181700-4Testing Displaynamespyglassspyglass02login02login2;;anon-20191002_181700-3aanon-20191002_181700-3a099anon-20191002_181700-2anon-20191002_181700-2099anon-20191002_181700-1anon-20191002_181700-1"++chrtestuser-39-chrtestuser-39-"++chrtestuser-10-chrtestuser-10-$--chrtestuser-233-chrtestuser-233-$--chrtestuser-163-chrtestuser-163-$--chrtestuser-125-chrtestuser-125-$ --chrtestuser-124-chrtestuser-124-$ --chrtestuser-123-chrtestuser-123-" ++chrtestuser-93-chrtestuser-93-" ++chrtestuser-91-chrtestuser-91-" ++chrtestuser-64-chrtestuser-64-"++chrtestuser-92-chrtestuser-92-"++chrtestuser-63-chrtestuser-63-"++chrtestuser-58-chrtestuser-58-"++chrtestuser-34-chrtestuser-34-"++chrtestuser-33-chrtestuser-33-!!mycoolusermycooluser!!user-upperuser-upperBKK01register-user-20191002_18170001register-user-20191002_181700 I0d\( X $ T P  L  x B j4\&Lp9]&Jn7[$4==anon-20191002_181700-146anon-20191002_181700-1464==anon-20191002_181700-143anon-20191002_181700-1434==anon-20191002_181700-144anon-20191002_181700-1444==anon-20191002_181700-142anon-20191002_181700-1424==anon-20191002_181700-141anon-20191002_181700-1414==anon-20191002_181700-140anon-20191002_181700-1404==anon-20191002_181700-138anon-20191002_181700-1384==anon-20191002_181700-136anon-20191002_181700-1364==anon-20191002_181700-137anon-20191002_181700-1374==anon-20191002_181700-135anon-20191002_181700-1354==anon-20191002_181700-134anon-20191002_181700-1344==anon-20191002_181700-133anon-20191002_181700-1334==anon-20191002_181700-131anon-20191002_181700-1314==anon-20191002_181700-132anon-20191002_181700-1324 ==anon-20191002_181700-129anon-20191002_181700-1294 ==anon-20191002_181700-130anon-20191002_181700-1304 ==anon-20191002_181700-127anon-20191002_181700-1274 ==anon-20191002_181700-128anon-20191002_181700-1284 ==anon-20191002_181700-125anon-20191002_181700-1254==anon-20191002_181700-126anon-20191002_181700-1264==anon-20191002_181700-124anon-20191002_181700-1244==anon-20191002_181700-123anon-20191002_181700-1234==anon-20191002_181700-122anon-20191002_181700-1224==anon-20191002_181700-121anon-20191002_181700-1214==anon-20191002_181700-120anon-20191002_181700-1204==anon-20191002_181700-118anon-20191002_181700-1184==anon-20191002_181700-119anon-20191002_181700-1194==anon-20191002_181700-117anon-20191002_181700-1174==anon-20191002_181700-116anon-20191002_181700-1164~==anon-20191002_181700-115anon-20191002_181700-1154}==anon-20191002_181700-114anon-20191002_181700-1144|==anon-20191002_181700-113anon-20191002_181700-1134{==anon-20191002_181700-112anon-20191002_181700-1124z==anon-20191002_181700-110anon-20191002_181700-1104y==anon-20191002_181700-109anon-20191002_181700-1094x==anon-20191002_181700-108anon-20191002_181700-1084w==anon-20191002_181700-107anon-20191002_181700-1074v==anon-20191002_181700-106anon-20191002_181700-1064u==anon-20191002_181700-104anon-20191002_181700-1044t==anon-20191002_181700-102anon-20191002_181700-1024s==anon-20191002_181700-103anon-20191002_181700-1034r==anon-20191002_181700-100anon-20191002_181700-1004q==anon-20191002_181700-101anon-20191002_181700-1012p;;anon-20191002_181700-99anon-20191002_181700-992o;;anon-20191002_181700-96anon-20191002_181700-962n;;anon-20191002_181700-97anon-20191002_181700-972m;;anon-20191002_181700-95anon-20191002_181700-952l;;anon-20191002_181700-93anon-20191002_181700-932k;;anon-20191002_181700-90anon-20191002_181700-902j;;anon-20191002_181700-91anon-20191002_181700-912i;;anon-20191002_181700-88anon-20191002_181700-882h;;anon-20191002_181700-89anon-20191002_181700-892g;;anon-20191002_181700-86anon-20191002_181700-862f;;anon-20191002_181700-87anon-20191002_181700-872e;;anon-20191002_181700-84anon-20191002_181700-842d;;anon-20191002_181700-85anon-20191002_181700-852c;;anon-20191002_181700-83anon-20191002_181700-832b;;anon-20191002_181700-82anon-20191002_181700-822a;;anon-20191002_181700-81anon-20191002_181700-812`;;anon-20191002_181700-80anon-20191002_181700-802_;;anon-20191002_181700-79anon-20191002_181700-792^;;anon-20191002_181700-77anon-20191002_181700-772];;anon-20191002_181700-75anon-20191002_181700-752\;;anon-20191002_181700-74anon-20191002_181700-742[;;anon-20191002_181700-73anon-20191002_181700-732Z;;anon-20191002_181700-71anon-20191002_181700-712Y;;anon-20191002_181700-70anon-20191002_181700-704W;%'anon-20191002_181700-67My name heremxc://foo/bar4U;%'anon-20191002_181700-65My name heremxc://foo/bar2V;;anon-20191002_181700-64anon-20191002_181700-642X;;anon-20191002_181700-68anon-20191002_181700-682T;;anon-20191002_181700-63anon-20191002_181700-632S;;anon-20191002_181700-62anon-20191002_181700-62 -RM H C > 9 4/*|%w rmhc T8Qe!OaCEdDAiatpwYcagUb:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgT7Qe!OaCEdDAiatpwYcagUb:localhost:8800$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYT6Qe!OaCEdDAiatpwYcagUb:localhost:8800$lB_yrRS9T0c8GHqgQ7gg2M84vM5P9-FhCikwa8-D7CgT5Qe!OaCEdDAiatpwYcagUb:localhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFET4Qe!OaCEdDAiatpwYcagUb:localhost:8800$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8T3Qe!OaCEdDAiatpwYcagUb:localhost:8800$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDoT2Qe!OaCEdDAiatpwYcagUb:localhost:8800$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgT1Qe!OaCEdDAiatpwYcagUb:localhost:8800$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6ET0Qe!OaCEdDAiatpwYcagUb:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4T/Qe!OaCEdDAiatpwYcagUb:localhost:8800$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMT.Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$QCk_2lkr4QGMynLh-oy3fDeO-XqBnPIwjTA2b2C_tlkT-Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgT,Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUT+Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egT*Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoT)Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkT(Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkT'Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYT&Qe!cosGKKhHvKaVukBCic:localhost:8800$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccET%Qe!cosGKKhHvKaVukBCic:localhost:8800$YcOkQ1aw2eRai8WI73BxGGABht8Nn4Si1nvwAWvlPE8T$Qe!cosGKKhHvKaVukBCic:localhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwT#Qe!cosGKKhHvKaVukBCic:localhost:8800$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQT"Qe!cosGKKhHvKaVukBCic:localhost:8800$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikT!Qe!cosGKKhHvKaVukBCic:localhost:8800$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcT Qe!cosGKKhHvKaVukBCic:localhost:8800$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8TQe!cosGKKhHvKaVukBCic:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMTQe!cosGKKhHvKaVukBCic:localhost:8800$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8TQe!rZWweGEChkxxtzyfDB:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgTQe!rZWweGEChkxxtzyfDB:localhost:8800$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjITQe!rZWweGEChkxxtzyfDB:localhost:8800$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqITQe!rZWweGEChkxxtzyfDB:localhost:8800$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPATQe!rZWweGEChkxxtzyfDB:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitITQe!rZWweGEChkxxtzyfDB:localhost:8800$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0TQe!uJtKGXTNdEnCPNOGDx:localhost:8800$5uWONOncDD6smZbW_xFpUEBCzgmhOGPCeOldG8nHGBsTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLoTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrATQe!uJtKGXTNdEnCPNOGDx:localhost:8800$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$46Ld1cDUVjDTUvkgLPA4mH-W1nB64zf9u6foX0tOCVITQe!vJQYmOxOBLwFKzYkNj:localhost:8800$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067kTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8TQe!vJQYmOxOBLwFKzYkNj:localhost:8800$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6ET Qe!vJQYmOxOBLwFKzYkNj:localhost:8800$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0T Qe!vJQYmOxOBLwFKzYkNj:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE "fr* V b  & ,P\b &Mfr-Q))e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgo,Q? e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibility$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUg+Q/ e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rules$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egl*Q9 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_alias$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoi)Q3 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk (Q'[e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkc'Q' e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY &Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE %Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829$YcOkQ1aw2eRai8WI73BxGGABht8Nn4Si1nvwAWvlPE8r$Q))e!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwo#Q? e!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibility$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQg"Q/ e!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rules$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukikl!Q9 e!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_alias$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNci Q3 e!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8 Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMcQ' e!cosGKKhHvKaVukBCic:localhost:8800m.room.create$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8 Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgoQ? e!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibility$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIgQ/ e!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rules$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIiQ3 e!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIcQ' e!rZWweGEChkxxtzyfDB:localhost:8800m.room.create$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0 Q'[e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800$5uWONOncDD6smZbW_xFpUEBCzgmhOGPCeOldG8nHGBsoQ? e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibility$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsgQ/ e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rules$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMiQ3 e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo Q'[e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAcQ' e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.create$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QgQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type$46Ld1cDUVjDTUvkgLPA4mH-W1nB64zf9u6foX0tOCVIgQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067koQ? e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8gQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rules$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Ei Q3 e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0 Q'[e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE ! !eQ_$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 153}{"auth_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0", "$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E"], "type": "m.room.history_visibility", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040413584, "hashes": {"sha256": "UO+vcP5Fu6SzR1Rstq3gkRMNJ6UgT/DjZMQ3dtjtAe4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FEkBqrmb/0g/V8JLk1nGx89KVYbl0q3Ho2nCy4tZrFXqjtptKcA/Os4erBxzPAxS2p0y3BndSQdqraPecZKjBg"}}, "unsigned": {"age_ts": 1570040413584}}reQ_s$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 152}{"auth_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0", "$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0"], "type": "m.room.join_rules", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040412999, "hashes": {"sha256": "I9CsztUyUsqIvFiLapXo/w0RzPMYDqRtiVSdfZ8MByQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WVVGdqAH9UnvW2D0DdT2GUIsuyA6ULv1MkeXYcJQina8rjyakbY8X2vZmjuVKsdPvQzjpQPVLKh+GRS0Lo7KBw"}}, "unsigned": {"age_ts": 1570040412999}}heQ__$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 151}{"auth_events": ["$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "type": "m.room.power_levels", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"users": {"@anon-20191002_181700-62:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040412344, "hashes": {"sha256": "Fi0Lh3wLHEqOCJfqPQLC+usnf3goNC8FpvWAFOp6/EU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fIBxNjFEfCDeRCpveKkVo5BioiuD9QmkUxKw5rgrfm3Fsbli2wKuQdIzpLA7iA67diQjZSj+g7yuQOKkrjUdAQ"}}, "unsigned": {"age_ts": 1570040412344}}reQ_s$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 150}{"auth_events": ["$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4"], "prev_events": ["$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4"], "type": "m.room.member", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-62", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-62:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040411847, "hashes": {"sha256": "SQgt1vNabYfrNmEFWxRNKFJLXodMp68g/8EIL6z8HPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WOnZ7e/5qDqly8lF0bMzfSGYPOKC9jzsfKVzPESWcwmsiCaGReLUlapxncK9t+NwCEOZtTY1fEK9ZjHBi9FqDg"}}, "unsigned": {"age_ts": 1570040411847}} a} { y w u sqomkigeca~8eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800~7eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800~6eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~5eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800~4eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800~3eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~2eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800~1eeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800~0eeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~/eeQ$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~.eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800~-eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~,eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800~+eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800~*eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~)eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800~(eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800~'eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~&eeQ$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~%eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~$eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~#eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800~"eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~!eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~ eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800 | x t p l hd`\XTPLHeeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800eeQ$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800eeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800eeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800eeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800eeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800 eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800 eeQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800 eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800 eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800 eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800eeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800 "jq& T X z   9CGl!Cfjj,Q3 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E +Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4d*Q' e!OaCEdDAiatpwYcagUb:localhost:8800m.room.create$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMs)Q))e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgp(Q? e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibility$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUh'Q/ e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rules$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egm&Q9 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_alias$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoj%Q3 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk $Q'[e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkd#Q' e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY "Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEs!Q))e!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwp Q? e!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibility$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQhQ/ e!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rules$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikmQ9 e!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_alias$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcjQ3 e!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8 Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMdQ' e!cosGKKhHvKaVukBCic:localhost:8800m.room.create$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8 Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgpQ? e!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibility$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIhQ/ e!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rules$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIjQ3 e!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIdQ' e!rZWweGEChkxxtzyfDB:localhost:8800m.room.create$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0pQ? e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibility$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPshQ/ e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rules$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMjQ3 e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo Q'[e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAdQ' e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.create$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QhQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067kpQ? e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8h Q/ e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rules$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Ej Q3 e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0 Q'[e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE V`8pH X 0  h @  x P ( ` 8  p H "^6nF~V0 nF~V.f>vN&b<('Q$1570042666166IBpPy:localhost:8800#'Q$1570042666165HDkhp:localhost:8800"'Q$1570042666165HDkhp:localhost:8800!'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042654147iSsjl:localhost:8800%M$15700426501OLytM:localhost:8829%M$15700426501OLytM:localhost:8829%M$15700426501OLytM:localhost:8829 %M$15700426501OLytM:localhost:8829 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042649143JxPAB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800%M$15700426410cEjWu:localhost:8829%M$15700426410cEjWu:localhost:8829%M$15700426410cEjWu:localhost:8829'Q$1570042639132zhjjB:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042620111taWCG:localhost:8800'Q$1570042620111taWCG:localhost:8800 #v(8 f  4 8 Hq &6@k$.Yvp0eQ))$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800m/eQ? $OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibilitye.eQ/ $kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rulesj-eQ9 $jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_aliasg,eQ3 $n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels+eQ'[$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800a*eQ' $vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800m.room.createp)eQ))$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800m(eQ? $e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibilitye'eQ/ $H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rulesj&eQ9 $HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_aliasg%eQ3 $YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels$eQ'[$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800a#eQ' $AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create"eQ'[$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829p!eQ))$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800m eQ? $xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibilityeeQ/ $6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rulesjeQ9 $q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_aliasgeQ3 $9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levelseQ'[$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800aeQ' $kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800m.room.createeQ'[$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800meQ? $wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibilityeeQ/ $MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rulesgeQ3 $jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levelseQ'[$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800aeQ' $r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800m.room.createmeQ? $Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibilityeeQ/ $yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rulesgeQ3 $rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levelseQ'[$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800aeQ' $d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.createeeQ/ $Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.typemeQ? $S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility  -heQ__$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 157}{"auth_events": ["$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q", "$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "prev_events": ["$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "type": "m.room.power_levels", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"users": {"@anon-20191002_181700-63:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040417851, "hashes": {"sha256": "Stt8VlF9Uw12kcnThuoQToGkNjXD8u495YszoxlXXis"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "69OPAdqlSjMEvDBrgd+KryNmSG8AsPpy7yRCjLhLsL9ZrNxU7ebFIfnD0brfETVnCyWv8T4h7fPAxktAwbctAA"}}, "unsigned": {"age_ts": 1570040417851}}reQ_s$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 156}{"auth_events": ["$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q"], "prev_events": ["$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q"], "type": "m.room.member", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-63", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-63:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040417420, "hashes": {"sha256": "82pJbN6ImPQwrrYtFjXqdeJEp1AZXJptm0T1QhPZWZ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "plkQUtW6Sp64bvreiLon/S2DaeD3umJ/41ynWoyEwiVGpthncmSZvFdmrCEHIiDDdRN6eZcdreq2qj3bgzitAw"}}, "unsigned": {"age_ts": 1570040417420}}feQ_[$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 155}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-63:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040416672, "hashes": {"sha256": "wHHWe4CWZYnLbIBLrAt3+5YMQ0Cx0/4e91gC1usJCeU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CSl41INmQtxqdaNK2hYmgcUaXs3YXggA5EmQtauLxvJI6q1WkkZz+bnVTLpSRrd0CAitT/0qvGcVrwg0qaRNBQ"}}, "unsigned": {"age_ts": 1570040416672}}oeQ_m$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 154}{"auth_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0", "$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8"], "type": "a.test.state.type", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"a_key": "a_value"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040415251, "hashes": {"sha256": "KV+tfFpcl7BsoaUsQsIEFOGD5a/Jupex4sPRE/tILuk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IvqMPLxfSJUH2AfT1yvyk8vDZGykBPzp1VGpUPXQfLJ5wbAgSRKHLPEjFvQL0dfiYQm6IEFBjDHu8/gfylQaDQ"}}, "unsigned": {"age_ts": 1570040415251}}  r eQ_s$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 161}{"auth_events": ["$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0"], "prev_events": ["$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0"], "type": "m.room.member", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"membership": "join", "displayname": "My name here", "avatar_url": "mxc://foo/bar"}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-65:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040422462, "hashes": {"sha256": "ziJE1pIKuDxAVsOGio8uhrlYnj7yMaX2PuDYbVP9H/U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uEEQgC/AP6CE8zelHvB4ELknQFJ2nl4xmn6pD3hB2H/z47/Fasvgn5+ZGJ0rwBLdSg4Zs2hOSFZIeD4quw0vDg"}}, "unsigned": {"age_ts": 1570040422462}}feQ_[$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 160}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-65:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040421857, "hashes": {"sha256": "1D1NKKKCWQ8PA9/9k8Z6kR7Vm3/vibn9uQeGQYEiyzA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ShLE8RbMvKT469Sy6gCR+6DPtyJ1y65HBTVNU/+ff2CGM/zJmsEGkU17dRnyOVOB/xQrymm9O1rw50kHWjSOAA"}}, "unsigned": {"age_ts": 1570040421857}}eQ_$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 159}{"auth_events": ["$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo", "$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q", "$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "prev_events": ["$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM"], "type": "m.room.history_visibility", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040419025, "hashes": {"sha256": "ITvyBKe4zBeL0vbJd5Vr8qoNnhMRdvhlXqIcablCaes"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZYLvZGT6QCSCaBtNu1j+Bmc+UJP+xU05WmCIL8HU7ILbTWPRwE2FRQJI19RSmUA2rAmPIVAyvqMEvh/DXatjAQ"}}, "unsigned": {"age_ts": 1570040419025}}reQ_s$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 158}{"auth_events": ["$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo", "$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q", "$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "prev_events": ["$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo"], "type": "m.room.join_rules", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040418491, "hashes": {"sha256": "POzdK08PoO2PVPe0LNrP/ebrDvlJpSIZUIjOBzLK8F8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UzN4ZPjgzr5V6h4FzrWUOUADPlsd3dOYqovdSQZ14RltIY6YjD1OKuVyczPuZ3u+vDpN1xI7l03+BIqEKiBKBQ"}}, "unsigned": {"age_ts": 1570040418491}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1he$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1ge$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1fe$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1ee$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41de$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1ce$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1be$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1ae$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1`e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1_e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1^e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1]e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1\e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1[e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1Ze$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81Ye$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1Xe$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1We$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1Ve$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1Ue$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081Te$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41Se$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1Re$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1Qe$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1Pe$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1Oe$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1Ne$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1Me$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1Le$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1Ke$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1Je$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1Ie$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1He$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1Ge$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1Fe$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1Ee$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1De$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1Ce$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1Be$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1Ae$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1@e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY1?e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1>e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1=e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1<e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg1;e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1:e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE19e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal818e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo17e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg16e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E15e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD414e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM13e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg12e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU11e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg10e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1/e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1.e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1-e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1,e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1+e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1*e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1)e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1(e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1'e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81&e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1%e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81$e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1#e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1"e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1!e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1 e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs m G < x m/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCge/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCgd/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09Cga/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCgY/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCg`/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCgb/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCgf/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCg\/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCg[/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCgZ1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8Cgc/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCgg  R$eQ_3$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 103, "stream_ordering": 165}{"auth_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA", "$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI"], "prev_events": ["$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI"], "type": "m.room.member", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-64:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-64", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-64:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040425651, "hashes": {"sha256": "glu9OEeRTVueCMgvDuFkvD1LEhxh1PTRX9sSPwXC3C0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2NtL6CT8DK9F3pB6/xT9DWp3KjbCSqM9KVCPsO4/CbUNwJd4yr86/6B4ZjLIAOV67h4VBqYTbItKDisyuBKxAQ"}}, "unsigned": {"age_ts": 1570040425651}}#eQ_$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 164}{"auth_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA", "$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "prev_events": ["$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI"], "type": "m.room.history_visibility", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040424440, "hashes": {"sha256": "PXPjrKq0ZmVA+Ow/DsQJEFr0aGXAhYRGPyoOyp6OH7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yAkj/uBEOaLkQmBQ53se4QTRSj07S2xQ1pCQ+uaudvm7yRcX+mwgZzYjVvMZDAA6ZelhBsHcsJWm4naaKzfEBQ"}}, "unsigned": {"age_ts": 1570040424440}}r"eQ_s$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 163}{"auth_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA", "$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "prev_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA"], "type": "m.room.join_rules", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040423574, "hashes": {"sha256": "10ZukLz1zIi26OvwcIIpJtupzIiyzj1/JulaI3+QA1w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ygriSQX5Km0+n3T7JZpwoVwtE9LQavMlIwDuzj4ly3xioNqRmA8R5K0CF59XjIV8rr0EWOYg/AFyx0DA15EyAg"}}, "unsigned": {"age_ts": 1570040423574}}h!eQ__$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 162}{"auth_events": ["$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "prev_events": ["$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "type": "m.room.power_levels", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"users": {"@anon-20191002_181700-65:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040422975, "hashes": {"sha256": "vVNPCBhpFGPzSWQog7rdBLDLRlK3Zcc4vtJI0torrzQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t6MNUjspq7kGeOMmRfLjXOvUmlmJa5mwMNuY3qHiD4ucMRLRZ0lvcguUwpgKE+X1vqMIF1mTOqorGdEZu4+HDg"}}, "unsigned": {"age_ts": 1570040422975}} [P)4 wE[  y R + hA~W0 l,|Td<`8pH X 0  h B  z R *  d <\4 &O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800'Q$1570042619110gZfPB:localhost:8800 W'Q$1570042619109qhpUv:localhost:8800 V'Q$1570042618108WWxoQ:localhost:8800 U'Q$1570042617107cANtu:localhost:8800 T'Q$1570042616106fkZGL:localhost:8800 S'Q$1570042615105OKfnm:localhost:8800 R&O$157004184672SfwvS:localhost:8800'Q$1570042611101IffRu:localhost:8800 N'Q$1570042612102sQZCG:localhost:8800 O'Q$1570042614104FELge:localhost:8800 Q'Q$1570042613103AHxGt:localhost:8800 P&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800'Q$1570042611100ueDzK:localhost:8800 M&O$157004261099UmKia:localhost:8800 L&O$157004188598DcHDt:localhost:8800>&O$157004188397MRiZP:localhost:8800;&O$157004188296OVWxu:localhost:8800:&O$157004188195thBOS:localhost:88009&O$157004188194vdqBG:localhost:88008&O$157004188093UtRbN:localhost:88007&O$157004187992XwpoQ:localhost:88006&O$157004187190ZLRgN:localhost:8800-&O$157004187089FLOwV:localhost:8800,&O$157004186988RkcKb:localhost:8800+&O$157004186887sKbQU:localhost:8800*&O$157004186786RVgKA:localhost:8800)&O$157004186785fjAIs:localhost:8800(&O$157004185983tEalY:localhost:8800 &O$157004185982diSTq:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:8800&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800'Q$1570042654147iSsjl:localhost:8800 |'Q$1570042653146dGCce:localhost:8800 {'Q$1570042651145wBynt:localhost:8800 z%M$15700426501OLytM:localhost:8829 y'Q$1570042649143JxPAB:localhost:8800 x'Q$1570042648142spuws:localhost:8800 w'Q$1570042648141xSHQB:localhost:8800 v'Q$1570042647140rNeEf:localhost:8800 u'Q$1570042646139VXLYO:localhost:8800 t'Q$1570042646138YEunv:localhost:8800 s'Q$1570042645137fBnPZ:localhost:8800 r'Q$1570042644136OugnY:localhost:8800 q'Q$1570042642135oMfQy:localhost:8800 p%M$15700426410cEjWu:localhost:8829 o'Q$1570042640133wGmrF:localhost:8800 n'Q$1570042639132zhjjB:localhost:8800 m'Q$1570042638131kazZm:localhost:8800 l'Q$1570042637130zlkqP:localhost:8800 k'Q$1570042636129shBTe:localhost:8800 j'Q$1570042635128KJCvL:localhost:8800 i'Q$1570042634127eDBry:localhost:8800 h'Q$1570042634126YmPkp:localhost:8800 g'Q$1570042632125lwdOR:localhost:8800 f'Q$1570042632124bMwzE:localhost:8800 e'Q$1570042631123SLyGA:localhost:8800 d'Q$1570042630122bUTeO:localhost:8800 c'Q$1570042629121nZoNG:localhost:8800 b'Q$1570042629120wtVFY:localhost:8800 a'Q$1570042628119fxxBA:localhost:8800 `'Q$1570042627118OLFSV:localhost:8800 _'Q$1570042626117sfUAQ:localhost:8800 ^'Q$1570042626116pKAbp:localhost:8800 ]'Q$1570042624115nZtIB:localhost:8800 \'Q$1570042623114pBHTz:localhost:8800 ['Q$1570042622113mtzjt:localhost:8800 Z'Q$1570042621112AUAFX:localhost:8800 Y'Q$1570042620111taWCG:localhost:8800 X [P)4 wE[  y R + hA~W0 l,|Td<`8pH X 0  h B  z R *  d <\4 &O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800'Q$1570042619110gZfPB:localhost:8800 b'Q$1570042619109qhpUv:localhost:8800 a'Q$1570042618108WWxoQ:localhost:8800 `'Q$1570042617107cANtu:localhost:8800 _'Q$1570042616106fkZGL:localhost:8800 ^'Q$1570042615105OKfnm:localhost:8800 ]&O$157004184672SfwvS:localhost:8800'Q$1570042611101IffRu:localhost:8800 Y'Q$1570042612102sQZCG:localhost:8800 Z'Q$1570042614104FELge:localhost:8800 \'Q$1570042613103AHxGt:localhost:8800 [&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800'Q$1570042611100ueDzK:localhost:8800 X&O$157004261099UmKia:localhost:8800 W&O$157004188598DcHDt:localhost:8800?&O$157004188397MRiZP:localhost:8800<&O$157004188296OVWxu:localhost:8800;&O$157004188195thBOS:localhost:8800:&O$157004188194vdqBG:localhost:88009&O$157004188093UtRbN:localhost:88008&O$157004187992XwpoQ:localhost:88007&O$157004187190ZLRgN:localhost:8800.&O$157004187089FLOwV:localhost:8800-&O$157004186988RkcKb:localhost:8800,&O$157004186887sKbQU:localhost:8800+&O$157004186786RVgKA:localhost:8800*&O$157004186785fjAIs:localhost:8800)&O$157004185983tEalY:localhost:8800!&O$157004185982diSTq:localhost:8800 &O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:8800&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800'Q$1570042654147iSsjl:localhost:8800 'Q$1570042653146dGCce:localhost:8800 'Q$1570042651145wBynt:localhost:8800 %M$15700426501OLytM:localhost:8829 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042648142spuws:localhost:8800 'Q$1570042648141xSHQB:localhost:8800 'Q$1570042647140rNeEf:localhost:8800 'Q$1570042646139VXLYO:localhost:8800 'Q$1570042646138YEunv:localhost:8800 ~'Q$1570042645137fBnPZ:localhost:8800 }'Q$1570042644136OugnY:localhost:8800 |'Q$1570042642135oMfQy:localhost:8800 {%M$15700426410cEjWu:localhost:8829 z'Q$1570042640133wGmrF:localhost:8800 y'Q$1570042639132zhjjB:localhost:8800 x'Q$1570042638131kazZm:localhost:8800 w'Q$1570042637130zlkqP:localhost:8800 v'Q$1570042636129shBTe:localhost:8800 u'Q$1570042635128KJCvL:localhost:8800 t'Q$1570042634127eDBry:localhost:8800 s'Q$1570042634126YmPkp:localhost:8800 r'Q$1570042632125lwdOR:localhost:8800 q'Q$1570042632124bMwzE:localhost:8800 p'Q$1570042631123SLyGA:localhost:8800 o'Q$1570042630122bUTeO:localhost:8800 n'Q$1570042629121nZoNG:localhost:8800 m'Q$1570042629120wtVFY:localhost:8800 l'Q$1570042628119fxxBA:localhost:8800 k'Q$1570042627118OLFSV:localhost:8800 j'Q$1570042626117sfUAQ:localhost:8800 i'Q$1570042626116pKAbp:localhost:8800 h'Q$1570042624115nZtIB:localhost:8800 g'Q$1570042623114pBHTz:localhost:8800 f'Q$1570042622113mtzjt:localhost:8800 e'Q$1570042621112AUAFX:localhost:8800 d'Q$1570042620111taWCG:localhost:8800 c vI { T -  j C  Y 2 oHf?Q*xO(e>`8pH X 0  h @  lD|T,f>v*2&O$157004185678lyJsT:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185983tEalY:localhost:8800&O$157004185982diSTq:localhost:8800&O$157004180549mJBJB:localhost:8800&O$157004186887sKbQU:localhost:8800(&O$157004186786RVgKA:localhost:8800'&O$157004186785fjAIs:localhost:8800&&O$157004187089FLOwV:localhost:8800*&O$157004186988RkcKb:localhost:8800)'Q$1570042612102sQZCG:localhost:8800 @'Q$1570042611101IffRu:localhost:8800 ?'Q$1570042611100ueDzK:localhost:8800 >&O$157004261099UmKia:localhost:8800 =&O$157004188598DcHDt:localhost:8800<&O$157004188397MRiZP:localhost:88009&O$157004188296OVWxu:localhost:88008&O$157004188195thBOS:localhost:88007&O$157004188194vdqBG:localhost:88006&O$157004188093UtRbN:localhost:88005&O$157004187992XwpoQ:localhost:88004&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800&O$157004184672SfwvS:localhost:8800 &O$157004184571IVgQM:localhost:8800 &O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004180650ruqIl:localhost:8800'Q$1570042634127eDBry:localhost:8800 Y'Q$1570042634126YmPkp:localhost:8800 X'Q$1570042632125lwdOR:localhost:8800 W'Q$1570042632124bMwzE:localhost:8800 V'Q$1570042631123SLyGA:localhost:8800 U'Q$1570042630122bUTeO:localhost:8800 T'Q$1570042629121nZoNG:localhost:8800 S'Q$1570042629120wtVFY:localhost:8800 R'Q$1570042628119fxxBA:localhost:8800 Q'Q$1570042627118OLFSV:localhost:8800 P'Q$1570042626117sfUAQ:localhost:8800 O'Q$1570042626116pKAbp:localhost:8800 N'Q$1570042624115nZtIB:localhost:8800 M'Q$1570042623114pBHTz:localhost:8800 L'Q$1570042622113mtzjt:localhost:8800 K'Q$1570042621112AUAFX:localhost:8800 J'Q$1570042620111taWCG:localhost:8800 I'Q$1570042619110gZfPB:localhost:8800 H'Q$1570042619109qhpUv:localhost:8800 G'Q$1570042618108WWxoQ:localhost:8800 F'Q$1570042617107cANtu:localhost:8800 E'Q$1570042616106fkZGL:localhost:8800 D'Q$1570042615105OKfnm:localhost:8800 C'Q$1570042614104FELge:localhost:8800 B'Q$1570042613103AHxGt:localhost:8800 A&O$157004187190ZLRgN:localhost:8800+ [P)4 wE[  y R + hA~W0 l,|Td<`8pH X 0  h B  z R *  d <\4 &O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800'Q$1570042619110gZfPB:localhost:8800 W'Q$1570042619109qhpUv:localhost:8800 V'Q$1570042618108WWxoQ:localhost:8800 U'Q$1570042617107cANtu:localhost:8800 T'Q$1570042616106fkZGL:localhost:8800 S'Q$1570042615105OKfnm:localhost:8800 R&O$157004184672SfwvS:localhost:8800'Q$1570042611101IffRu:localhost:8800 N'Q$1570042612102sQZCG:localhost:8800 O'Q$1570042614104FELge:localhost:8800 Q'Q$1570042613103AHxGt:localhost:8800 P&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800'Q$1570042611100ueDzK:localhost:8800 M&O$157004261099UmKia:localhost:8800 L&O$157004188598DcHDt:localhost:8800>&O$157004188397MRiZP:localhost:8800;&O$157004188296OVWxu:localhost:8800:&O$157004188195thBOS:localhost:88009&O$157004188194vdqBG:localhost:88008&O$157004188093UtRbN:localhost:88007&O$157004187992XwpoQ:localhost:88006&O$157004187190ZLRgN:localhost:8800-&O$157004187089FLOwV:localhost:8800,&O$157004186988RkcKb:localhost:8800+&O$157004186887sKbQU:localhost:8800*&O$157004186786RVgKA:localhost:8800)&O$157004186785fjAIs:localhost:8800(&O$157004185983tEalY:localhost:8800 &O$157004185982diSTq:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:8800&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800'Q$1570042654147iSsjl:localhost:8800 |'Q$1570042653146dGCce:localhost:8800 {'Q$1570042651145wBynt:localhost:8800 z%M$15700426501OLytM:localhost:8829 y'Q$1570042649143JxPAB:localhost:8800 x'Q$1570042648142spuws:localhost:8800 w'Q$1570042648141xSHQB:localhost:8800 v'Q$1570042647140rNeEf:localhost:8800 u'Q$1570042646139VXLYO:localhost:8800 t'Q$1570042646138YEunv:localhost:8800 s'Q$1570042645137fBnPZ:localhost:8800 r'Q$1570042644136OugnY:localhost:8800 q'Q$1570042642135oMfQy:localhost:8800 p%M$15700426410cEjWu:localhost:8829 o'Q$1570042640133wGmrF:localhost:8800 n'Q$1570042639132zhjjB:localhost:8800 m'Q$1570042638131kazZm:localhost:8800 l'Q$1570042637130zlkqP:localhost:8800 k'Q$1570042636129shBTe:localhost:8800 j'Q$1570042635128KJCvL:localhost:8800 i'Q$1570042634127eDBry:localhost:8800 h'Q$1570042634126YmPkp:localhost:8800 g'Q$1570042632125lwdOR:localhost:8800 f'Q$1570042632124bMwzE:localhost:8800 e'Q$1570042631123SLyGA:localhost:8800 d'Q$1570042630122bUTeO:localhost:8800 c'Q$1570042629121nZoNG:localhost:8800 b'Q$1570042629120wtVFY:localhost:8800 a'Q$1570042628119fxxBA:localhost:8800 `'Q$1570042627118OLFSV:localhost:8800 _'Q$1570042626117sfUAQ:localhost:8800 ^'Q$1570042626116pKAbp:localhost:8800 ]'Q$1570042624115nZtIB:localhost:8800 \'Q$1570042623114pBHTz:localhost:8800 ['Q$1570042622113mtzjt:localhost:8800 Z'Q$1570042621112AUAFX:localhost:8800 Y'Q$1570042620111taWCG:localhost:8800 X a} { y w u sqomkigeca~WeeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~VeeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~UeeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~TeeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~SeeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~ReeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~QeeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~PeeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~OeeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~NeeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~MeeQ$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~LeeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800~KeeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~JeeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~IeeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~HeeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~GeeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~FeeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~EeeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~DeeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~CeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~BeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~AeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~@eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~?eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~>eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~=eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~<eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~;eeQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~:eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800~9eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800 !"D f  ; ]  2Xz -Ou(JlnQQQ$15700nQQQ$1570042722229ehxUl:localhost:8800$1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042722228QkARL:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042721227mhNwo:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042720226wSTBF:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800lQMQ$1570042718224MBWNJ:localhost:8800$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800lMQQ$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042716222nflqt:localhost:8800$1570042715221Amlxc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042715221Amlxc:localhost:8800$1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042714220vWWFN:localhost:8800$1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042713219HcQXL:localhost:8800$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042712218KQzXb:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042712217nuYrc:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042711216KdEEo:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800lQMQ$1570042709214PwhVu:localhost:8800$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800lMQQ$15700427086bDrAU:localhost:8829$1570042707212LkSAM:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042707212LkSAM:localhost:8800$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042706211NniIl:localhost:8800$1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042705210LweYn:localhost:8800$1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042704209JQwmT:localhost:8800$1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042704208yLiWU:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042703207yqsGA:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042702206BIYsS:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042700204CxVfq:localhost:8800$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042698202juBqr:localhost:8800$1570042698201kDowV:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042698201kDowV:localhost:8800$1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042697200mrENr:localhost:8800$1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042697199ROUNP:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042696198qbnxj:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042695197vezoL:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042694196OHsWc:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042692194rxboZ:localhost:8800$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042691193uVdPZ:localhost:8800$1570042691192yNWVM:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800   4(eQ_$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 169}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8"], "type": "m.room.canonical_alias", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"alias": "#__ANON__-3:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040431066, "hashes": {"sha256": "1ogpIWuOAjFlVAeUx7XGEnlO8sYhKCbfQmiNAbPnmPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hg8GOmIQkJOefWTCpNzMhtHWaPz6mslSn9KWgkym9+pGgFZZm6MLBeVKqvRXw0nkc9ge7ylZm/TgKF9oGVvFCw"}}, "unsigned": {"age_ts": 1570040431066}}h'eQ__$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 168}{"auth_events": ["$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "type": "m.room.power_levels", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"users": {"@anon-20191002_181700-67:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040429700, "hashes": {"sha256": "/crwT5yvST06HuYSBtSg5CcdLVQD3L59nLXLJZRORqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fnp8L1tCwgueyfcMhMn1u8Ly4JpXnJyvdjGPxE90GMZiWmprhoccy+SZu1FUlytEGSjqPlC8YCDHrquzddnxBQ"}}, "unsigned": {"age_ts": 1570040429700}}r&eQ_s$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 167}{"auth_events": ["$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8"], "prev_events": ["$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8"], "type": "m.room.member", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"membership": "join", "displayname": "My name here", "avatar_url": "mxc://foo/bar"}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-67:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040429104, "hashes": {"sha256": "aVzTP5ek2O0zTaPU/l6eRa7H8cy6T2CWlwASxSdBToM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "05KtrHPUWwF80nrXE+wk0W/2koxm7tWk8GEY2X3BdpK+0LFMXk2bd+iONrW+MV3QUs/cD4q/a0OHBuxSYAlzAw"}}, "unsigned": {"age_ts": 1570040429104}}f%eQ_[$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 166}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-67:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040427921, "hashes": {"sha256": "sOnMkmKQNl7eFkCXFq7jcnSuojPCBQsPWX/7/5hwcok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vbRAoSCpCObcMHp+vJ44BVNxqAzxlRajApUmjsNtahFEDHofV2lcRXor52iI1IiqnrNMDp2p7DeqBURwghCmBQ"}}, "unsigned": {"age_ts": 1570040427921}}  nw,eQ/+$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 173}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik"], "content": {"avatar_url": "mxc://foo/remote", "displayname": "My remote name here", "membership": "join"}, "depth": 8, "hashes": {"sha256": "Q3lXPYmCiX5Mb3VexXNcj3Yq3UZ4r+PM8W0LFwsqXD0"}, "origin": "localhost:8829", "origin_server_ts": 1570040434766, "prev_events": ["$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw"], "prev_state": [], "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-66:localhost:8829", "state_key": "@anon-20191002_181700-66:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2tVMTHDIkslzFNzEnjHe1l71BMxs19X7wMIuMlzkwdLaThSzr/yUJ+NVvasI62XXm8IHQVQZFN08hTKvkjwwCw"}, "localhost:8829": {"ed25519:a_UxIG": "wOno4L9lOckwXgo4Sd46fYAheb5zkRwXNQ+9eZK64e+u3nxF7S/JHncoyWA5s2tQjlSKc8DuzzrdOBaHzd3cAg"}}, "unsigned": {"age": 96}}+eQ_1$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 172}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ"], "type": "m.room.aliases", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"aliases": ["#__ANON__-3:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040433433, "hashes": {"sha256": "AXs+JuWduwDOg4/lKb5XdXf3H6nKk2xuP0Fs9huvjw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A7AgqAbIZvv4ZnE9l2Qh6xQ1qeCRGTnX5W5m6GjX5uP2lDaP3Hs41/CihmWPSUbmbw50xWXKS3bVIIz8A56ODw"}}, "unsigned": {"age_ts": 1570040433433}}*eQ_$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 171}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik"], "type": "m.room.history_visibility", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040432375, "hashes": {"sha256": "lryZ5TvG81Q0n9PkdYeV4L+l1Z9wF1xOSC6mQ5yB3+Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lS4zy2kGFKdJOy8rjztqObsU+7nvlc1Sx6kFlNripbSOuUWyZmhVSE/+ncS/Bq4La+IONl5IRvhJ3W7bsET+AQ"}}, "unsigned": {"age_ts": 1570040432375}}r)eQ_s$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 170}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc"], "type": "m.room.join_rules", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040431758, "hashes": {"sha256": "tsgFxA+if2aTp2XMXNwGdY2y/nzbicH7eif3tuezNaE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J5OIHcEd6Ue9c+w2CT/Qgh+CY4Bg8NjLdmSHeFduGZvN988oq1g8svYnAlx8oc9Al8rAxECJu9CqETzKyMX2Bg"}}, "unsigned": {"age_ts": 1570040431758}} fY c  v # t/7=Sf%Ae3Q [$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYm.room.power_levels!jfshVGNDxkvqPxFxWB:localhost:8800mm@anon-20191002_181700-74:localhost:8800@e'Q [$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMm.room.member!jfshVGNDxkvqPxFxWB:localhost:8800mm@anon-20191002_181700-74:localhost:8800? e'Q  [$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYm.room.create!jfshVGNDxkvqPxFxWB:localhost:8800mPm@anon-20191002_181700-74:localhost:8800 >e)Q [ $XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQm.room.message!OaCEdDAiatpwYcagUb:localhost:8800 m cm @anon-20191002_181700-70:localhost:8800=e'Q [$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgm.room.member!OaCEdDAiatpwYcagUb:localhost:8800mm @anon-20191002_181700-71:localhost:8800<e'Q [$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYm.room.member!OaCEdDAiatpwYcagUb:localhost:8800mmr@anon-20191002_181700-72:localhost:8829 ;e)Q [$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEm.room.aliases!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:8800+:e?Q [$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8m.room.history_visibility!OaCEdDAiatpwYcagUb:localhost:8800mmJ@anon-20191002_181700-70:localhost:8800#9e/Q [$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDom.room.join_rules!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:8800(8e9Q [$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgm.room.canonical_alias!OaCEdDAiatpwYcagUb:localhost:8800mqm'@anon-20191002_181700-70:localhost:8800%7e3Q [$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6Em.room.power_levels!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:88006e'Q [$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4m.room.member!OaCEdDAiatpwYcagUb:localhost:8800m ma@anon-20191002_181700-70:localhost:88005 e'Q  [$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMm.room.create!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:8800 4e)Q [$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgm.room.aliases!GGTWnzJfvPQBgQqDIE:localhost:8800mBmK@anon-20191002_181700-68:localhost:8800+3e?Q [$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUm.room.history_visibility!GGTWnzJfvPQBgQqDIE:localhost:8800mm@anon-20191002_181700-68:localhost:8800#2e/Q [$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egm.room.join_rules!GGTWnzJfvPQBgQqDIE:localhost:8800m:mQ@anon-20191002_181700-68:localhost:8800(1e9Q [$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKom.room.canonical_alias!GGTWnzJfvPQBgQqDIE:localhost:8800mݹma@anon-20191002_181700-68:localhost:8800%0e3Q [$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkm.room.power_levels!GGTWnzJfvPQBgQqDIE:localhost:8800mQm@@anon-20191002_181700-68:localhost:8800/e'Q [$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkm.room.member!GGTWnzJfvPQBgQqDIE:localhost:8800mPmٹ@anon-20191002_181700-68:localhost:8800. e'Q  [$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYm.room.create!GGTWnzJfvPQBgQqDIE:localhost:8800mmD@anon-20191002_181700-68:localhost:8800-e'Q [$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEm.room.member!cosGKKhHvKaVukBCic:localhost:8800mNm@anon-20191002_181700-66:localhost:8829 ,e)Q [$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwm.room.aliases!cosGKKhHvKaVukBCic:localhost:8800mm+@anon-20191002_181700-67:localhost:8800++e?Q [$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQm.room.history_visibility!cosGKKhHvKaVukBCic:localhost:8800mmȥ@anon-20191002_181700-67:localhost:8800#*e/Q [$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukikm.room.join_rules!cosGKKhHvKaVukBCic:localhost:8800mĎmy@anon-20191002_181700-67:localhost:8800 dQ oH! i B   X 1 nG Z2< 4\tL$`8rJ" \ 4 l D  | V .  jB|T,d'Q$1570042616106fkZGL:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042626116pKAbp:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042620111taWCG:localhost:8800&O$157004184976eGgUf:localhost:8800l'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800&O$157004184875Wzayo:localhost:8800k&O$157004184774CHMNl:localhost:8800j&O$157004184773rCaRK:localhost:8800i&O$157004184672SfwvS:localhost:8800h&O$157004184571IVgQM:localhost:8800g&O$157004183969fQFzs:localhost:8800`&O$157004183868QRvOi:localhost:8800_&O$157004183467WkNdH:localhost:8800['Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611100ueDzK:localhost:8800&O$157004261099UmKia:localhost:8800&O$157004188598DcHDt:localhost:8800&O$157004188397MRiZP:localhost:8800&O$157004188296OVWxu:localhost:8800&O$157004188195thBOS:localhost:8800&O$157004188194vdqBG:localhost:8800&O$157004188093UtRbN:localhost:8800&O$157004187992XwpoQ:localhost:8800&O$157004187190ZLRgN:localhost:8800&O$157004187089FLOwV:localhost:8800&O$157004186988RkcKb:localhost:8800&O$157004186887sKbQU:localhost:8800&O$157004186786RVgKA:localhost:8800&O$157004186785fjAIs:localhost:8800&O$157004185983tEalY:localhost:8800y&O$157004185982diSTq:localhost:8800x&O$157004185881ahRFW:localhost:8800w&O$157004185780kUwpq:localhost:8800v&O$157004185679NNCIw:localhost:8800u&O$157004185678lyJsT:localhost:8800t'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800'Q$1570042670170TtDpX:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042663162sQrEh:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042654147iSsjl:localhost:8800'Q$1570042653146dGCce:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800'Q$1570042644136OugnY:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042634126YmPkp:localhost:8800'Q$1570042632124bMwzE:localhost:8800   0eQ_$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 177}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk"], "type": "m.room.canonical_alias", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"alias": "#__ANON__-4:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040438201, "hashes": {"sha256": "g1if5vtg30I4zMHVC0VO4zmOKeEQmr8hxsgV/ZHzZOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iSvh0b3LvpEyyzgXN3CkDB++OLAKFWqoTg4O8vsoz6NF2/dakjduT3xepbX+8K3tL9EB34LQWfvSfO4plA/bAw"}}, "unsigned": {"age_ts": 1570040438201}}h/eQ__$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 176}{"auth_events": ["$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "type": "m.room.power_levels", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"users": {"@anon-20191002_181700-68:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040437585, "hashes": {"sha256": "ChPhdvWorGk+tPs3Xql6W19u+DtgJLIZ3y5qfi66VXQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xsk+L/8IOwCtUtyxQMucwM0QlkpHvu9gkpV1oojfkA2S2VaVKTsqmUeDNYZSYILK0ufHZknPbvH8hCUFlR2IAw"}}, "unsigned": {"age_ts": 1570040437585}}r.eQ_s$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 175}{"auth_events": ["$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY"], "prev_events": ["$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY"], "type": "m.room.member", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-68", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-68:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040437072, "hashes": {"sha256": "/quI59H2VClKfg2jsMvryvdyR1moed3eiUgtfR6fTek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hmZ5IFMgiudKI/w/4cmRQn6vu24wZ4Ixz2d1Tsm0Gjn4cSPn7/W5CKkCWZsa2X97A3Yq7wvertZon0R2LPvODg"}}, "unsigned": {"age_ts": 1570040437072}}{-eQ_$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 174}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"m.federate": false, "room_version": "4", "creator": "@anon-20191002_181700-68:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040436455, "hashes": {"sha256": "kFSP6FRlHHLBeaa35673rex8bksdalADaOMOk3CdL3M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YXPOB0En+2V8MwkHAy7yDgrLw+/zHS+8UwlKJN0vLxIHHOPb2ZqzO2rSOSt29DnqUbK1XnUVlzEeBkWHiTTjCg"}}, "unsigned": {"age_ts": 1570040436455}} T[$U.|g? `8pH ,tL$b:tL$ \ 4 n F  X 0  h @  x P (X0hBdTP'Q$1570042639132zhjjB:localhost:8800R'Q$1570042638131kazZm:localhost:8800Q'Q$1570042637130zlkqP:localhost:8800PT'Q$1570042618108WWxoQ:localhost:8800?'Q$1570042617107cANtu:localhost:8800>'Q$1570042616106fkZGL:localhost:8800='Q$1570042613103AHxGt:localhost:8800<'Q$1570042612102sQZCG:localhost:8800;'Q$1570042611101IffRu:localhost:8800:'Q$1570042611100ueDzK:localhost:88009&O$157004261099UmKia:localhost:88008&O$157004188598DcHDt:localhost:8800C&O$157004188397MRiZP:localhost:8800@'Q$1570042636129shBTe:localhost:8800O&O$157004188093UtRbN:localhost:8800<&O$157004187992XwpoQ:localhost:8800;&O$157004187190ZLRgN:localhost:88002&O$157004188296OVWxu:localhost:8800?&O$157004188195thBOS:localhost:8800>'Q$1570042712217nuYrc:localhost:8800'Q$1570042711216KdEEo:localhost:8800'Q$1570042710215aaRza:localhost:8800%M$15700427086bDrAU:localhost:8829'Q$1570042706211NniIl:localhost:8800'Q$1570042705210LweYn:localhost:8800'Q$1570042704209JQwmT:localhost:8800'Q$1570042704208yLiWU:localhost:8800'Q$1570042703207yqsGA:localhost:8800'Q$1570042702206BIYsS:localhost:8800'Q$1570042701205bxgOX:localhost:8800'Q$1570042699203fHFjU:localhost:8800'Q$1570042697200mrENr:localhost:8800'Q$1570042635128KJCvL:localhost:8800N'Q$1570042634127eDBry:localhost:8800M'Q$1570042634126YmPkp:localhost:8800L'Q$1570042632124bMwzE:localhost:8800K'Q$1570042629121nZoNG:localhost:8800J'Q$1570042629120wtVFY:localhost:8800I'Q$1570042628119fxxBA:localhost:8800H'Q$1570042627118OLFSV:localhost:8800G'Q$1570042626117sfUAQ:localhost:8800F'Q$1570042626116pKAbp:localhost:8800E'Q$1570042623114pBHTz:localhost:8800D'Q$1570042621112AUAFX:localhost:8800C'Q$1570042620111taWCG:localhost:8800B'Q$1570042619110gZfPB:localhost:8800A'Q$1570042619109qhpUv:localhost:8800@'Q$1570042697199ROUNP:localhost:8800~'Q$1570042696198qbnxj:localhost:8800}'Q$1570042695197vezoL:localhost:8800|'Q$1570042694196OHsWc:localhost:8800{'Q$1570042693195hNKnU:localhost:8800z'Q$1570042691193uVdPZ:localhost:8800y'Q$1570042690191yQfnl:localhost:8800x'Q$1570042689190UkvMv:localhost:8800w'Q$1570042688189axPjv:localhost:8800v'Q$1570042687188ddQmS:localhost:8800u'Q$1570042687187gbArC:localhost:8800t'Q$1570042686186Qxqmn:localhost:8800s'Q$1570042685185RhcXe:localhost:8800r'Q$1570042681182ZiRRU:localhost:8800q'Q$1570042680181TFyrx:localhost:8800p'Q$1570042680180uuIxG:localhost:8800o'Q$1570042679179ZJCqE:localhost:8800n'Q$1570042678178HSUoI:localhost:8800m%M$15700426753WBESe:localhost:8829l'Q$1570042673174OxGuP:localhost:8800k'Q$1570042672173XsxsH:localhost:8800j'Q$1570042672172vPvbe:localhost:8800i'Q$1570042671171AQZaz:localhost:8800h'Q$1570042670170TtDpX:localhost:8800g%M$15700426692GLpqH:localhost:8829f'Q$1570042666166IBpPy:localhost:8800e'Q$1570042666165HDkhp:localhost:8800d'Q$1570042665164nYKmj:localhost:8800c'Q$1570042664163IAHXd:localhost:8800b'Q$1570042663162sQrEh:localhost:8800a'Q$1570042657151cITOZ:localhost:8800`'Q$1570042656150UsLRz:localhost:8800_'Q$1570042656149JNVWR:localhost:8800^'Q$1570042655148eXOyA:localhost:8800]'Q$1570042654147iSsjl:localhost:8800\'Q$1570042653146dGCce:localhost:8800[%M$15700426501OLytM:localhost:8829Z'Q$1570042648141xSHQB:localhost:8800Y'Q$1570042647140rNeEf:localhost:8800X'Q$1570042646139VXLYO:localhost:8800W'Q$1570042646138YEunv:localhost:8800V'Q$1570042645137fBnPZ:localhost:8800U'Q$1570042644136OugnY:localhost:8800T%M$15700426410cEjWu:localhost:8829S E-9?+H T }  2  LxEp)R&g7eQ3 $d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels 6eQ'[$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800joing"eQ3 $YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels !eQ'[$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800joina eQ' $AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create eQ'[$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829joinpeQ))$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800meQ? $xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibilityeeQ/ $6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rulesa5eQ' $6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800m.room.createm4eQ? $cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibilitye3eQ/ $Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rulesg2eQ3 $24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels 1eQ'[$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800joina0eQ' $XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create /eQ'[$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800join .eQ'[$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829joinp-eQ))$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800m,eQ? $OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibilitye+eQ/ $kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rulesj*eQ9 $jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_aliasg)eQ3 $n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels (eQ'[$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800joina'eQ' $vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800m.room.createp&eQ))$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800m%eQ? $e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibilitye$eQ/ $H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rulesj#eQ9 $HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_alias  nf4eQ_[$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 181}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-70:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040442306, "hashes": {"sha256": "BQtqAnoxr4y0T6q7f/Tp+3xkSgSDYWv3b0YaBkknB6g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jnyvLRrmoPEZG3anA+KWsnSx1vQFfYcYF56cjdF9qq+eANcT1Ocugc6d9UxCSnnIgUczZVU71DGZ1WImPjDOBQ"}}, "unsigned": {"age_ts": 1570040442306}}3eQ_1$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 180}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU"], "type": "m.room.aliases", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"aliases": ["#__ANON__-4:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040440642, "hashes": {"sha256": "k+lUPaSlfNpuxH90sxLss7duA9YOPE0lzGCFbGEMYJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MAoAouC9fsXOue6dFLF3vTig756aFdX2Ox1rNvRv2jKqykQOgldenncFMBWsr1Oqh7QeicEMP94o38tD5tt7CA"}}, "unsigned": {"age_ts": 1570040440642}}2eQ_$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 179}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg"], "type": "m.room.history_visibility", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040439531, "hashes": {"sha256": "eRqpYCRPh50cipcGIEJg7edT3C/3c+qbWg+cfhRZ2ZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NJ6Oby6YIhgVwxeRILJ2Bd7iMUaz2zi87k9134mNMEwffJR0bQao3LGJrb2xfJZ+AOOtEZSoGHGKqPGebmggBQ"}}, "unsigned": {"age_ts": 1570040439531}}r1eQ_s$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 178}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo"], "type": "m.room.join_rules", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040438842, "hashes": {"sha256": "VHIarMZCLZo85iZMOqYKLk/pjTtshRIkIN9jW10aGSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hHmbG89/KOT1dSA/Mb5IMSNE9rgNda/jDKYhB84M3oRDJQpRvvOWa6nidjoAo9Md0uMPE50fb4KwaT1VbBseDg"}}, "unsigned": {"age_ts": 1570040438842}} a} { y w u sqomkigeca~veeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800~ueeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~teeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800~seeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800~reeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~qeeQ$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~peeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800~oeeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~neeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~meeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800~leeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~keeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~jeeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~ieeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~heeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~geeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~feeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~eeeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~deeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~ceeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~beeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~aeeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~`eeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~_eeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~^eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~]eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~\eeQ$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~[eeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~ZeeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~YeeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~XeeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800  7 k 9mcd]c@anon-20191002_181700-598:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEA0fmc3Y0QxWUdmKzQ6O2IKMDAyZnNpZ25hdHVyZSBG-uobgFAmq9NLJXvEdSpgFgmN1SswLvdwubfHzKrPbQo127.0.0.1*d]c@anon-20191002_181700-597:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhTQTFmTnE7LUtBQHlCTEMKMDAyZnNpZ25hdHVyZSB55WriqUdXCaW2zuQkGHisLRCQSwSiwmIsJDDKATirEAo127.0.0.1)d]c@anon-20191002_181700-596:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF8jcExhLjZqWioqb3JJTGIKMDAyZnNpZ25hdHVyZSATTRbNO7ghd-MJRhbJOUDzReRA2eNpboVfGfaE7b5togo127.0.0.1(d]c@anon-20191002_181700-596:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX153K2cxK1BOU2JSS3IKMDAyZnNpZ25hdHVyZSAe6JbkGlIFoVwqKgUpSQhIS91WBgnR3pTMnBpm3t9nswo127.0.0.1'd]c@anon-20191002_181700-595:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpIME1rMDJaNTVnQV4mKmQKMDAyZnNpZ25hdHVyZSDs0_JHyuwrzhsZIXxSBOdggNNwVbh6b2PSU7kjM6VnBAo127.0.0.1&d]c@anon-20191002_181700-593:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV1IzBqNDdWXm5ncklhR2MKMDAyZnNpZ25hdHVyZSDHpR8ZHjt5986DzBZP0MnU2IPu3q7JCmTn5Jzgxs2pmwo127.0.0.1%d]c@anon-20191002_181700-591:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWSmFLJl5ZK0heb2ZuOlkKMDAyZnNpZ25hdHVyZSAO7MSz5oG_iGGUxl0k6OcSlgjGpZGamFhhrRuRdokuIgo127.0.0.1$d]c@anon-20191002_181700-590:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFJQ2k6JnR1d2csZCtTYkoKMDAyZnNpZ25hdHVyZSA9wYUO1vJBMowK4IpWVG5FkeN2atNDe-McB9m6-qrfWQo127.0.0.1#a[a@anon-20191002_181700-58:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaVdGemVQMTNIbFouWCNQMwowMDJmc2lnbmF0dXJlIMS3QCp7F93TS2LA-booUWIaYlu3l9zJ8Gw8Sf7WHA_nCg127.0.0.11d]c@anon-20191002_181700-589:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlYRj1wM05EOS5vXjFKVnoKMDAyZnNpZ25hdHVyZSBYYHFUdAxAnXimtmCEKeGe9KUUuXOT8Dkgh7rJMizMtgo127.0.0.1" !r ~ 9 R 6  &Px~3X^ iNQ3 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levels$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM MQ'[e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4cLQ' e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.create$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UrKQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEoJQ? e!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibility$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjggIQ/ e!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rules$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YiHQ3 e!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M GQ'[e!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAcFQ' e!AWfbViAZparIjmDaVT:localhost:8800m.room.create$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYrEQ))e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgoDQ? e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibility$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sgCQ/ e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rules$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJElBQ9 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_alias$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8iAQ3 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI @Q'[e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Ac?Q' e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.create$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6co>Q? e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibility$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAg=Q/ e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rules$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYi<Q3 e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY ;Q'[e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMc:Q' e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY 9Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY 8Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg 7Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY 6Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$lB_yrRS9T0c8GHqgQ7gg2M84vM5P9-FhCikwa8-D7Cgr5Q))e!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEo4Q? e!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibility$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8g3Q/ e!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rules$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDol2Q9 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_alias$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgi1Q3 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E 0Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4c/Q' e!OaCEdDAiatpwYcagUb:localhost:8800m.room.create$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM .Q'[e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-69:localhost:8829$QCk_2lkr4QGMynLh-oy3fDeO-XqBnPIwjTA2b2C_tlk Xb<~X1 o I  W * v H  b 3  z L f8 R$k< g8 Y*n?T%i: -X[ @anon-20191002_181700-68:localhost:8800-W[ @anon-20191002_181700-67:localhost:8800-V[ @anon-20191002_181700-64:localhost:8800-U[ @anon-20191002_181700-65:localhost:8800-T[ @anon-20191002_181700-63:localhost:8800-S[ @anon-20191002_181700-62:localhost:8800-R[ @anon-20191002_181700-61:localhost:8800-Q[@anon-20191002_181700-60:localhost:8800-P[@anon-20191002_181700-59:localhost:8800-O[@anon-20191002_181700-58:localhost:8800-N[@anon-20191002_181700-57:localhost:8800-M[@anon-20191002_181700-56:localhost:8800-L[@anon-20191002_181700-55:localhost:8800-K[@anon-20191002_181700-54:localhost:8800-J[@anon-20191002_181700-53:localhost:8800-I[@anon-20191002_181700-52:localhost:8800-H[@anon-20191002_181700-51:localhost:8800-G[@anon-20191002_181700-50:localhost:8800-F[@anon-20191002_181700-49:localhost:8800-E[@anon-20191002_181700-48:localhost:8800!DC@cas_user=21:localhost:8800-C[@anon-20191002_181700-47:localhost:8800-B[@anon-20191002_181700-46:localhost:8800-A[@anon-20191002_181700-45:localhost:8800-@[@anon-20191002_181700-44:localhost:8800-?[@anon-20191002_181700-43:localhost:8800>/@0:localhost:8800-=[@anon-20191002_181700-41:localhost:8800-<[@anon-20191002_181700-40:localhost:8800-;[ @anon-20191002_181700-39:localhost:8800-:[ @anon-20191002_181700-38:localhost:8800-9[ @anon-20191002_181700-37:localhost:8800,8[ @anon-20191002_181700-36:localhost:8800|,7[ @anon-20191002_181700-35:localhost:8800w,6[ @anon-20191002_181700-34:localhost:8800q,5[ @anon-20191002_181700-33:localhost:8800k,4[ @anon-20191002_181700-32:localhost:8800e,3[ @anon-20191002_181700-31:localhost:8800_,2[@anon-20191002_181700-30:localhost:8800X,1[@anon-20191002_181700-29:localhost:8800W,0[@anon-20191002_181700-28:localhost:8800W,/[ @anon-20191002_181700-27:localhost:8800U,.[ @anon-20191002_181700-26:localhost:8800T,-[ @anon-20191002_181700-25:localhost:8800S,,[ @anon-20191002_181700-24:localhost:8800R,+[ @anon-20191002_181700-23:localhost:8800Y,*[ @anon-20191002_181700-22:localhost:8800Q,)[ @anon-20191002_181700-21:localhost:8800I-([@anon-20191002_181700-20:localhost:8800C,'[@anon-20191002_181700-19:localhost:8800,&[@anon-20191002_181700-18:localhost:8800,%[@anon-20191002_181700-17:localhost:8800-$[@anon-20191002_181700-16:localhost:88005,#[@anon-20191002_181700-15:localhost:8800,"[@anon-20191002_181700-14:localhost:8800,![@anon-20191002_181700-12:localhost:8800, [@anon-20191002_181700-13:localhost:8800,[@anon-20191002_181700-11:localhost:8800,[@anon-20191002_181700-10:localhost:8800+Y@anon-20191002_181700-9:localhost:8800+Y@anon-20191002_181700-8:localhost:8800+Y@anon-20191002_181700-7:localhost:8800+Y@anon-20191002_181700-6:localhost:8800+Y@anon-20191002_181700-5:localhost:8800+Y@anon-20191002_181700-4:localhost:8800=@spyglass:localhost:8800;@02login:localhost:8800,[@anon-20191002_181700-3a:localhost:8800+Y@anon-20191002_181700-2:localhost:8800+Y@anon-20191002_181700-1:localhost:8800$K@chrtestuser-39-:localhost:8800$K@chrtestuser-10-:localhost:8800%M@chrtestuser-233-:localhost:8800%M@chrtestuser-163-:localhost:8800%M@chrtestuser-125-:localhost:8800% M@chrtestuser-124-:localhost:8800% M@chrtestuser-123-:localhost:8800$ K@chrtestuser-93-:localhost:8800$ K@chrtestuser-91-:localhost:8800$ K@chrtestuser-64-:localhost:8800$K@chrtestuser-92-:localhost:8800$K@chrtestuser-63-:localhost:8800$K@chrtestuser-58-:localhost:8800$K@chrtestuser-34-:localhost:8800$K@chrtestuser-33-:localhost:8800A@mycooluser:localhost:8800A@user-upper:localhost:88004k@01register-user-20191002_181700:localhost:8800 RsDY* n ?  T % h 8  x H  & W c2n= yHS"^-i8tCN4*/ @3:localhost:8800.)] @anon-20191002_181700-160:localhost:8800(/ @2:localhost:8800'/@1:localhost:8800.&]@anon-20191002_181700-159:localhost:8800.%] @anon-20191002_181700-158:localhost:8800.$]@anon-20191002_181700-157:localhost:8800.#] @anon-20191002_181700-156:localhost:8800."]@anon-20191002_181700-155:localhost:8800.!] @anon-20191002_181700-154:localhost:8800. ] @anon-20191002_181700-153:localhost:8800.] @anon-20191002_181700-152:localhost:8800.] @anon-20191002_181700-151:localhost:8800.]@anon-20191002_181700-149:localhost:8800.] @anon-20191002_181700-150:localhost:8800.] @anon-20191002_181700-146:localhost:8800.] @anon-20191002_181700-143:localhost:8800y.] @anon-20191002_181700-144:localhost:8800{.]@anon-20191002_181700-142:localhost:8800f.] @anon-20191002_181700-141:localhost:8800q.] @anon-20191002_181700-140:localhost:8800n.] @anon-20191002_181700-138:localhost:8800e.] @anon-20191002_181700-136:localhost:8800[.] @anon-20191002_181700-137:localhost:8800\.]@anon-20191002_181700-135:localhost:8800L.] @anon-20191002_181700-134:localhost:8800R.]@anon-20191002_181700-133:localhost:8800B.] @anon-20191002_181700-131:localhost:8800J.] @anon-20191002_181700-132:localhost:8800L. ] @anon-20191002_181700-129:localhost:8800B. ]@anon-20191002_181700-130:localhost:8800:. ]@anon-20191002_181700-127:localhost:88007. ] @anon-20191002_181700-128:localhost:8800:. ] @anon-20191002_181700-125:localhost:8800).] @anon-20191002_181700-126:localhost:8800'.] @anon-20191002_181700-124:localhost:8800.] @anon-20191002_181700-123:localhost:8800.]@anon-20191002_181700-122:localhost:8800 .]@anon-20191002_181700-121:localhost:8800 .] @anon-20191002_181700-120:localhost:8800.] @anon-20191002_181700-118:localhost:8800 .] @anon-20191002_181700-119:localhost:8800 .] @anon-20191002_181700-117:localhost:8800.] @anon-20191002_181700-116:localhost:8800/|]@anon-20191002_181700-113:localhost:8800/{]@anon-20191002_181700-112:localhost:8800.}] @anon-20191002_181700-114:localhost:8800/y]@anon-20191002_181700-109:localhost:8800.z] @anon-20191002_181700-110:localhost:8800.~] @anon-20191002_181700-115:localhost:8800.x] @anon-20191002_181700-108:localhost:8800.w] @anon-20191002_181700-107:localhost:8800~.v] @anon-20191002_181700-106:localhost:8800y.u] @anon-20191002_181700-104:localhost:8800t.t] @anon-20191002_181700-102:localhost:8800l.s]@anon-20191002_181700-103:localhost:8800d.r]@anon-20191002_181700-100:localhost:8800d.q]@anon-20191002_181700-101:localhost:8800c-p[@anon-20191002_181700-99:localhost:8800Z-o[@anon-20191002_181700-96:localhost:8800R-n[@anon-20191002_181700-97:localhost:8800Q-m[ @anon-20191002_181700-95:localhost:8800H-l[ @anon-20191002_181700-93:localhost:8800<-k[@anon-20191002_181700-90:localhost:88005-j[ @anon-20191002_181700-91:localhost:88004-i[@anon-20191002_181700-88:localhost:8800'-h[ @anon-20191002_181700-89:localhost:8800--g[ @anon-20191002_181700-86:localhost:8800&-f[ @anon-20191002_181700-87:localhost:8800'-e[ @anon-20191002_181700-84:localhost:8800-d[ @anon-20191002_181700-85:localhost:8800-c[ @anon-20191002_181700-83:localhost:8800-b[ @anon-20191002_181700-82:localhost:8800-a[ @anon-20191002_181700-81:localhost:8800 -`[@anon-20191002_181700-80:localhost:8800-_[ @anon-20191002_181700-79:localhost:8800-^[ @anon-20191002_181700-77:localhost:8800-][ @anon-20191002_181700-75:localhost:8800-\[ @anon-20191002_181700-74:localhost:8800-[[@anon-20191002_181700-73:localhost:8800-Z[ @anon-20191002_181700-71:localhost:8800-Y[ @anon-20191002_181700-70:localhost:8800  r8eQ_s$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 185}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg"], "type": "m.room.join_rules", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040444634, "hashes": {"sha256": "nFSHH7sLYX/iKXKcsUWlvT7Ru6EFHYnEZ91ZQmcsf7M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rc8N9myDkbR/EFj1hyUmyX1o5IKVaRLWUs2OoON8yAx7pbw58TSm82l5W8m5OhkSUKslxDJRRID1izIJGW7vBg"}}, "unsigned": {"age_ts": 1570040444634}}7eQ_5$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 184}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E"], "type": "m.room.canonical_alias", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"alias": "#test-20191002_181700-1:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040444017, "hashes": {"sha256": "qnlWWDnzEUI0cTcJppTeKDOve9YECylKrvHEX1fISU0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vdjLk2wz4ZpzRKaJnS+/DoS2ow3FOmsH4muigdFedpfsPiVNzm2NCKMP34HqYJu64tH05uplCK89fdilpLyAA"}}, "unsigned": {"age_ts": 1570040444017}}h6eQ__$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 183}{"auth_events": ["$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "type": "m.room.power_levels", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"users": {"@anon-20191002_181700-70:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040443343, "hashes": {"sha256": "rr5T93hoAjfR0pJ3dnukczmAh/QTuPLt/TM6zAyqzmc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "STx+2CVYnXQ3MPchgcaffGDvrfXJH46Mjk1cjcdXsrU3cWdOj8pWZDyAVqOXNoHmECzm2N1IqVGilkzj9/COAw"}}, "unsigned": {"age_ts": 1570040443343}}r5eQ_s$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 182}{"auth_events": ["$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM"], "prev_events": ["$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM"], "type": "m.room.member", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-70", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-70:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040442889, "hashes": {"sha256": "eBmH2/DAM2IuS5jjIGEgK/vHUCfmbKPy2cZFfTR4lMc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u6GVXyOu2WGuid2s9xlUnHQ/yOH/g3OoORBZl0cpnCw2pWV8YsLO9RHDp3fm5cQTbzlGeQapugVmVXheqZj/AQ"}}, "unsigned": {"age_ts": 1570040442889}} Wl v 7 ?pC_2~Q$  ^ 1yLyM  V ) d % r E RZ-gl? ;H,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800+Q !DnUHoxreGexNmjSVpq:localhost:8800OO,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CNFopUEQTFbzjmLvii:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  +Q !CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800MM,Q!BrssELMbasSzTFpIXm:localhost:8800LL,Q!BrssELMbasSzTFpIXm:localhost:8800KK,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 +Q !CSqENqzAezaZnGktbE:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 )),Q!CQKLQUpSYakhxVDltC:localhost:8800 ((,Q!CkNvQnbApPIcuKygDk:localhost:8800CC,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CkNvQnbApPIcuKygDk:localhost:8800EE,Q!CkNvQnbApPIcuKygDk:localhost:8800DD,Q!DelfBAGvCrTXgNxmNV:localhost:8800 b b,Q!DelfBAGvCrTXgNxmNV:localhost:8800 a a,Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` `,Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ _+Q !DelfBAGvCrTXgNxmNV:localhost:8800 ^ ^,Q!CkNvQnbApPIcuKygDk:localhost:8800FF,Q!DelfBAGvCrTXgNxmNV:localhost:8800 g g,Q!DelfBAGvCrTXgNxmNV:localhost:8800 f f,Q!DelfBAGvCrTXgNxmNV:localhost:8800 e e,Q!DelfBAGvCrTXgNxmNV:localhost:8800 d d,Q!DelfBAGvCrTXgNxmNV:localhost:8800 c c ,Q!BrssELMbasSzTFpIXm:localhost:8800OO+Q !CGckPHdSYcIocFvRAq:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800 RR,Q!BrssELMbasSzTFpIXm:localhost:8800QQ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!BrssELMbasSzTFpIXm:localhost:8800PP,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800+Q !CgVBWWcRJoHEcwoLcq:localhost:8800  ,Q!BrssELMbasSzTFpIXm:localhost:8800NN ,Q!CkNvQnbApPIcuKygDk:localhost:8800AA,Q!CkNvQnbApPIcuKygDk:localhost:8800@@+Q !CkNvQnbApPIcuKygDk:localhost:8800??,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CkNvQnbApPIcuKygDk:localhost:8800BB+Q !CAGaRyRvrohDRBsrWH:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CQKLQUpSYakhxVDltC:localhost:8800,Q!CQKLQUpSYakhxVDltC:localhost:8800!!,Q!CQKLQUpSYakhxVDltC:localhost:8800  ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 +Q !DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 '',Q!CQKLQUpSYakhxVDltC:localhost:8800&&,Q!CQKLQUpSYakhxVDltC:localhost:8800%%,Q!CQKLQUpSYakhxVDltC:localhost:8800$$,Q!CQKLQUpSYakhxVDltC:localhost:8800##,Q!CQKLQUpSYakhxVDltC:localhost:8800"" Wl v 7 ?pC_2~Q$  ^ 1yLyM  V ) d % r E RZ-gl? ;H,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800+Q !DnUHoxreGexNmjSVpq:localhost:8800OO,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CNFopUEQTFbzjmLvii:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  +Q !CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800MM,Q!BrssELMbasSzTFpIXm:localhost:8800LL,Q!BrssELMbasSzTFpIXm:localhost:8800KK,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 +Q !CSqENqzAezaZnGktbE:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 )),Q!CQKLQUpSYakhxVDltC:localhost:8800 ((,Q!CkNvQnbApPIcuKygDk:localhost:8800CC,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CkNvQnbApPIcuKygDk:localhost:8800EE,Q!CkNvQnbApPIcuKygDk:localhost:8800DD,Q!DelfBAGvCrTXgNxmNV:localhost:8800 b b,Q!DelfBAGvCrTXgNxmNV:localhost:8800 a a,Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` `,Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ _+Q !DelfBAGvCrTXgNxmNV:localhost:8800 ^ ^,Q!CkNvQnbApPIcuKygDk:localhost:8800FF,Q!DelfBAGvCrTXgNxmNV:localhost:8800 g g,Q!DelfBAGvCrTXgNxmNV:localhost:8800 f f,Q!DelfBAGvCrTXgNxmNV:localhost:8800 e e,Q!DelfBAGvCrTXgNxmNV:localhost:8800 d d,Q!DelfBAGvCrTXgNxmNV:localhost:8800 c c ,Q!BrssELMbasSzTFpIXm:localhost:8800OO+Q !CGckPHdSYcIocFvRAq:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800 RR,Q!BrssELMbasSzTFpIXm:localhost:8800QQ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!BrssELMbasSzTFpIXm:localhost:8800PP,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800+Q !CgVBWWcRJoHEcwoLcq:localhost:8800  ,Q!BrssELMbasSzTFpIXm:localhost:8800NN ,Q!CkNvQnbApPIcuKygDk:localhost:8800AA,Q!CkNvQnbApPIcuKygDk:localhost:8800@@+Q !CkNvQnbApPIcuKygDk:localhost:8800??,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CkNvQnbApPIcuKygDk:localhost:8800BB+Q !CAGaRyRvrohDRBsrWH:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CQKLQUpSYakhxVDltC:localhost:8800,Q!CQKLQUpSYakhxVDltC:localhost:8800!!,Q!CQKLQUpSYakhxVDltC:localhost:8800  ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 +Q !DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 '',Q!CQKLQUpSYakhxVDltC:localhost:8800&&,Q!CQKLQUpSYakhxVDltC:localhost:8800%%,Q!CQKLQUpSYakhxVDltC:localhost:8800$$,Q!CQKLQUpSYakhxVDltC:localhost:8800##,Q!CQKLQUpSYakhxVDltC:localhost:8800"" ,NC 8 - { " p  e ZOD9.|#qf V`eL$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTEsha2564Uٲ&|8Y>F~T[51V_eL$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcsha256zq/9!dѴ. E e>g'/V^eL$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMsha256毰StaG91u]ɽ-ՅL4cTCV]eL$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgsha256L +{]'VQ[vQe/V\eL$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_ssha256<@٫@j SY?TP&V[eL$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEsha256&N2\Uҗ/_sF4â"lVZeL$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8sha256gj&>p5:!zG=J3VYeL$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIsha256wq"@4 VW{xoyppC1VXeL$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Asha256}s&56볩ЙW7*VWeL$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6csha256|RQu¸{uz;VVeL$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzIsha256x:.1ܬZw+Ky8ڐJmU#2VUeL$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508sha256Z*~G&"|p7SnnOVTeL$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4sha2564-uqON8CB{d~e(KRVSeL$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kAsha256 <ԄuFPT'Q[N1(<%@VReL$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygsha256q^Euōnq/$O(VQeL$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQsha256&1?Wnkm;:;VPeL$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUsha256Q w|mlqTBv ϔ)9VOeL$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wsha256^7^ bKtSw;VNeL$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMsha256Lj1P+VtxUCK*};!VMeL$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1Usha256ּ@e()b$Rc4ycЅyrgUVLeL$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUsha256ʸmo@S" \^X%R]%VKeL$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQsha256!&^d69G^,R@ҾZc~]$VJeL$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wsha256Fz}~ qpJ͌y#K9 !ooVIeL$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQsha2566 Qd_Qh^~}~nVHeL$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01ssha256*G 1k5\ !m6;n[VGeL$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQsha256Aj s/c\m?^M"k VFeL$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfAsha256SD-rTDxCr+q4ýVEeL$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9Esha256k5%^in;%b^·VDeL$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCosha256p>U BxU5KZBIBt*VCeL$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wgsha256/ r5>Ua>NYL*T`hVBeL$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAsha256pHجܜ^d=]{3@?uVAeL$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYsha256"}_Ip,'BK쳓o{wV@eL$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYsha256ۈYhNkqϯ2%}uIox\#vV?eL$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMsha256\#=YM ;pʾAX^na9aV>eL$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYsha256]Rmw*.iYNbMt}8=IzgeV=eL$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQsha256\Z xu (8H[&1B@4V<eL$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgsha256kع<:qS.]E2IV;eL$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYsha256AT[f22dk(:V7eL$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgsha256 q}ÞuREV6eL$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6Esha256N~ѯ^ ?.V5eL$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4sha256|6W:z+A'Bc/> !%<  ( P v z ,OSu ,N5MQ))ee!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8LQ))ee!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEsKQ))e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0spJQ? e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibility$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIhIQ/ e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rules$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0mHQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwjGQ3 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levels$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM FQ'[e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4dEQ' e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.create$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UsDQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEpCQ? e!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibility$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjghBQ/ e!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rules$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YjAQ3 e!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M @Q'[e!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAd?Q' e!AWfbViAZparIjmDaVT:localhost:8800m.room.create$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYs>Q))e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgp=Q? e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibility$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sh<Q/ e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rules$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEm;Q9 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_alias$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8j:Q3 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI 9Q'[e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Ad8Q' e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.create$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cp7Q? e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibility$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAh6Q/ e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rules$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYj5Q3 e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY 4Q'[e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMd3Q' e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY 2Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg 1Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYs0Q))e!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEp/Q? e!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibility$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8h.Q/ e!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rules$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDom-Q9 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_alias$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg ~z v r n j fb^ZVRNJF9eeQ$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:88008eeQ$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA!jfshVGNDxkvqPxFxWB:localhost:88007eeQ$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:88006eeQ$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:88005eeQ$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:88004eeQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:88003eeQ$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:88002eeQ$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:88001eeQ$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:88000eeQ$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800/eeQ$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800.eeQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800-eeQ$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800,eeQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800+eeQ$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800*eeQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800)eeQ$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800(eeQ$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800'eeQ$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800&eeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800%eeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800$eeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800#eeQ$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800"eeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800!eeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800 eeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800eeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800eeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800 -RM H C > 9 4/*|%w rmhc TeQe!wnriPzXkIMmdTNoJKU:localhost:8800$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARwTdQe!wnriPzXkIMmdTNoJKU:localhost:8800$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBcTcQe!wnriPzXkIMmdTNoJKU:localhost:8800$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkUTbQe!wnriPzXkIMmdTNoJKU:localhost:8800$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_noTaQe!wnriPzXkIMmdTNoJKU:localhost:8800$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTET`Qe!wnriPzXkIMmdTNoJKU:localhost:8800$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcT_Qe!wnriPzXkIMmdTNoJKU:localhost:8800$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMT^Qe!wnriPzXkIMmdTNoJKU:localhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgT]Qe!wnriPzXkIMmdTNoJKU:localhost:8800$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sT\Qe!wnriPzXkIMmdTNoJKU:localhost:8800$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJET[Qe!wnriPzXkIMmdTNoJKU:localhost:8800$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8TZQe!wnriPzXkIMmdTNoJKU:localhost:8800$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsITYQe!wnriPzXkIMmdTNoJKU:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9ATXQe!wnriPzXkIMmdTNoJKU:localhost:8800$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cTWQe!jfshVGNDxkvqPxFxWB:localhost:8800$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzITVQe!jfshVGNDxkvqPxFxWB:localhost:8800$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508TUQe!jfshVGNDxkvqPxFxWB:localhost:8800$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4TTQe!jfshVGNDxkvqPxFxWB:localhost:8800$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kATSQe!jfshVGNDxkvqPxFxWB:localhost:8800$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygTRQe!jfshVGNDxkvqPxFxWB:localhost:8800$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQTQQe!jfshVGNDxkvqPxFxWB:localhost:8800$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUTPQe!jfshVGNDxkvqPxFxWB:localhost:8800$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wTOQe!jfshVGNDxkvqPxFxWB:localhost:8800$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMTNQe!jfshVGNDxkvqPxFxWB:localhost:8800$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1UTMQe!jfshVGNDxkvqPxFxWB:localhost:8800$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUTLQe!jfshVGNDxkvqPxFxWB:localhost:8800$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQTKQe!jfshVGNDxkvqPxFxWB:localhost:8800$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wTJQe!jfshVGNDxkvqPxFxWB:localhost:8800$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQTIQe!jfshVGNDxkvqPxFxWB:localhost:8800$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01sTHQe!jfshVGNDxkvqPxFxWB:localhost:8800$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQTGQe!jfshVGNDxkvqPxFxWB:localhost:8800$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfATFQe!jfshVGNDxkvqPxFxWB:localhost:8800$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9ETEQe!jfshVGNDxkvqPxFxWB:localhost:8800$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCoTDQe!jfshVGNDxkvqPxFxWB:localhost:8800$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_WgTCQe!jfshVGNDxkvqPxFxWB:localhost:8800$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaATBQe!jfshVGNDxkvqPxFxWB:localhost:8800$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYTAQe!jfshVGNDxkvqPxFxWB:localhost:8800$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYT@Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMT?Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYT>Qe!OaCEdDAiatpwYcagUb:localhost:8800$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQT=Qe!OaCEdDAiatpwYcagUb:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgT<Qe!OaCEdDAiatpwYcagUb:localhost:8800$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYT;Qe!OaCEdDAiatpwYcagUb:localhost:8800$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYT:Qe!OaCEdDAiatpwYcagUb:localhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFET9Qe!OaCEdDAiatpwYcagUb:localhost:8800$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8  ygR<eQ_3$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 107, "stream_ordering": 189}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo"], "prev_events": ["$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE"], "type": "m.room.member", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-71:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-71", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-71:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040448768, "hashes": {"sha256": "r8OkTt2swXWhYrtnlUK7H7EOpnc25VBnbMiS6Ihh+4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jhJT/9+KaTWXs0/t21JizAGIYZWJEkkzug2oWfvmVdflvzU+Uk7ERgdXUtcKePsTr38kVhj1NdZUBM3JnQjCCQ"}}, "unsigned": {"age_ts": 1570040448768}}m;eQ/$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 188}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-72", "membership": "join"}, "depth": 8, "hashes": {"sha256": "8NGSijME38+y1Xctg/ZKP207GViqMO7xzHWUVQNT9NQ"}, "origin": "localhost:8829", "origin_server_ts": 1570040448409, "prev_events": ["$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE"], "prev_state": [], "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-72:localhost:8829", "state_key": "@anon-20191002_181700-72:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BbcJdiOR4L4/9P21EwWvBSuoCh8hHqwLqrVMpk+oJ2xHg0Ppl6Ekn28Ab2+KB/WdVQf1amgF6BYN0HtfXu6+Dw"}, "localhost:8829": {"ed25519:a_UxIG": "NBE/SbM3duNxn5qUcK4INge+qqMSb1CxgWGSynD776tWiqqj+P1Qm6Qc3Je0D4Uw+2plGC264gBv1Ca61a92Bg"}}, "unsigned": {"age": 94}}:eQ_I$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 187}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8"], "type": "m.room.aliases", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"aliases": ["#test-20191002_181700-1:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040447400, "hashes": {"sha256": "1fKOcaAhfRlXcGMipTaCUQAi0Uoye1gliXYseIOdAJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4sIHps7BJNkamV3/JzBWTmQ8RlBp+tiU3woniqR7lggm+VjNJzm5IYWWYj3lFbsJTYpGA6AxM3rjdvP8LskKDw"}}, "unsigned": {"age_ts": 1570040447400}}9eQ_$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 186}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo"], "type": "m.room.history_visibility", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040445158, "hashes": {"sha256": "R508JNgWsoSfopXxmBDN+aKBY0RPU0cIHHgP6WwpmOg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AH2i98S7oXNOr20RJ2wwAUHhnPIJ3rjAmI9H1IF4mI77cSqznrMx2+bVhQ7dy+Sjyxr9kzp0zAvr6psszuFpDw"}}, "unsigned": {"age_ts": 1570040445158}} =z 1 n %bT \B< e[[Q;$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4@anon-20191002_181700-92:localhost:8829@anon-20191002_181700-93:localhost:8800!EyEaTZElOkdURKbEXo:localhost:8800inviteanon-20191002_181700-92@; e[[Q;$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo@anon-20191002_181700-93:localhost:8800@anon-20191002_181700-93:localhost:8800!EyEaTZElOkdURKbEXo:localhost:8800joinanon-20191002_181700-93*: e[[Q$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0@anon-20191002_181700-90:localhost:8800@anon-20191002_181700-90:localhost:8800!TWETXUgfFZafDdbqLS:localhost:8800leaveB9 e[[Q;$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk@anon-20191002_181700-90:localhost:8800@anon-20191002_181700-91:localhost:8800!TWETXUgfFZafDdbqLS:localhost:8800inviteanon-20191002_181700-90@8 e[[Q;$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8@anon-20191002_181700-91:localhost:8800@anon-20191002_181700-91:localhost:8800!TWETXUgfFZafDdbqLS:localhost:8800joinanon-20191002_181700-91@7 e[[Q;$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ@anon-20191002_181700-89:localhost:8800@anon-20191002_181700-89:localhost:8800!HAFNBarGuVZuWCgwWM:localhost:8800joinanon-20191002_181700-89@6 e[[Q;$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY@anon-20191002_181700-87:localhost:8800@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800joinanon-20191002_181700-87B5 e[[Q;$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg@anon-20191002_181700-87:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800inviteanon-20191002_181700-87@4 e[[Q;$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800joinanon-20191002_181700-86@3 e[[Q;$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo@anon-20191002_181700-85:localhost:8800@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800joinanon-20191002_181700-85@2 e[[Q;$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM@anon-20191002_181700-84:localhost:8800@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800joinanon-20191002_181700-84@1 e[[Q;$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg@anon-20191002_181700-83:localhost:8800@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800joinanon-20191002_181700-83@0 e[[Q;$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg@anon-20191002_181700-82:localhost:8800@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800joinanon-20191002_181700-82@/ e[[Q;$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o@anon-20191002_181700-81:localhost:8800@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800joinanon-20191002_181700-81@. e[[Q;$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4@anon-20191002_181700-79:localhost:8800@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800joinanon-20191002_181700-79@- e[[Q;$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA@anon-20191002_181700-77:localhost:8800@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800joinanon-20191002_181700-77@, e[[Q;$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A@anon-20191002_181700-75:localhost:8800@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800joinanon-20191002_181700-75@+ e[[Q;$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM@anon-20191002_181700-74:localhost:8800@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800joinanon-20191002_181700-74@* e[[Q;$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg@anon-20191002_181700-71:localhost:8800@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800joinanon-20191002_181700-71@) e[[Q;$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY@anon-20191002_181700-72:localhost:8829@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800joinanon-20191002_181700-72 #et & R \  @Jr8`z0:eeSeQ/ $XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rulesjReQ9 $sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliasgQeQ3 $KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levelsPeQ'[$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800aOeQ' $R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800m.room.createpNeQ))$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800pMeQ))$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800pLeQ))$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800pKeQ))$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800mJeQ? $Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibilityeIeQ/ $m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rulesjHeQ9 $Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_aliasgGeQ3 $SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levelsFeQ'[$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800aEeQ' $ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.createpDeQ))$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800mCeQ? $as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibilityeBeQ/ $jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rulesgAeQ3 $-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels@eQ'[$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800a?eQ' $Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800m.room.createp>eQ))$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800m=eQ? $PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibilitye<eQ/ $55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rulesj;eQ9 $vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_aliasg:eQ3 $d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels9eQ'[$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800a8eQ' $6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800m.room.createm7eQ? $cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibilitye6eQ/ $Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rulesg5eQ3 $24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels4eQ'[$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800a3eQ' $XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create2eQ'[$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:88001eQ'[$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829 yN { P % H  gqFoDmB s'k@T) J  L ! u N # w<e:i> oDB*Q!EWkoFeckhXlNyjuIEB:localhost:*Q!DnUHoxreGexNmjSVpq:localhost:8800[*Q!DnUHoxreGexNmjSVpq:localhost:8800Z*Q!DnUHoxreGexNmjSVpq:localhost:8800Z*Q!DnUHoxreGexNmjSVpq:localhost:8800Y~*Q!DnUHoxreGexNmjSVpq:localhost:8800Y}*Q!DnUHoxreGexNmjSVpq:localhost:8800X|*Q!DnUHoxreGexNmjSVpq:localhost:8800X{*Q!DnUHoxreGexNmjSVpq:localhost:8800Wz*Q!DnUHoxreGexNmjSVpq:localhost:8800Vy*Q!DnUHoxreGexNmjSVpq:localhost:8800Ux*Q!CQKLQUpSYakhxVDltC:localhost:8800(**Q!CQKLQUpSYakhxVDltC:localhost:8800')*Q!CQKLQUpSYakhxVDltC:localhost:8800&(*Q!CQKLQUpSYakhxVDltC:localhost:8800%'*Q!CQKLQUpSYakhxVDltC:localhost:8800$&*Q!DnUHoxreGexNmjSVpq:localhost:8800\*Q!DnUHoxreGexNmjSVpq:localhost:8800[*Q!CQKLQUpSYakhxVDltC:localhost:8800)+*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!CkNvQnbApPIcuKygDk:localhost:8800Fi*Q!CkNvQnbApPIcuKygDk:localhost:8800Eh*Q!CkNvQnbApPIcuKygDk:localhost:8800Dg*Q!CkNvQnbApPIcuKygDk:localhost:8800Cf*Q!CkNvQnbApPIcuKygDk:localhost:8800Be*Q!CkNvQnbApPIcuKygDk:localhost:8800Ad*Q!CkNvQnbApPIcuKygDk:localhost:8800@c*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ *Q!CQKLQUpSYakhxVDltC:localhost:8800!#*Q!CQKLQUpSYakhxVDltC:localhost:8800 "*Q!CQKLQUpSYakhxVDltC:localhost:8800!*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!DelfBAGvCrTXgNxmNV:localhost:8800 a *Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` *Q!DelfBAGvCrTXgNxmNV:localhost:8800 ^ *Q!DelfBAGvCrTXgNxmNV:localhost:8800 g *Q!DelfBAGvCrTXgNxmNV:localhost:8800 f *Q!DelfBAGvCrTXgNxmNV:localhost:8800 e *Q!DelfBAGvCrTXgNxmNV:localhost:8800 d *Q!DelfBAGvCrTXgNxmNV:localhost:8800 c *Q!DelfBAGvCrTXgNxmNV:localhost:8800 b *Q!DnUHoxreGexNmjSVpq:localhost:8800Tw*Q!DnUHoxreGexNmjSVpq:localhost:8800Sv*Q!DnUHoxreGexNmjSVpq:localhost:8800Ru*Q!DnUHoxreGexNmjSVpq:localhost:8800Qt*Q!DnUHoxreGexNmjSVpq:localhost:8800Ps*Q!DnUHoxreGexNmjSVpq:localhost:8800OrR*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CQKLQUpSYakhxVDltC:localhost:8800#%*Q!CQKLQUpSYakhxVDltC:localhost:8800"$*Q!CkNvQnbApPIcuKygDk:localhost:8800?b*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 W8e: ! # P % w L s H  y N' Ri>qFoDmBk@ u J  }) {Tg<c 8*Q!EieRtaCFZJJCIOkRPp:localh*Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800RR*Q!DnUHoxreGexNmjSVpq:localhost:8800TT*Q!DnUHoxreGexNmjSVpq:localhost:8800SS*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!DnUHoxreGexNmjSVpq:localhost:8800VV*Q!DnUHoxreGexNmjSVpq:localhost:8800UU*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!DnUHoxreGexNmjSVpq:localhost:8800OO*Q!DelfBAGvCrTXgNxmNV:localhost:8800 g g*Q!DelfBAGvCrTXgNxmNV:localhost:8800 f f*Q!DelfBAGvCrTXgNxmNV:localhost:8800 e e*Q!DelfBAGvCrTXgNxmNV:localhost:8800 d d*Q!DelfBAGvCrTXgNxmNV:localhost:8800 c c*Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CQKLQUpSYakhxVDltC:localhost:8800))*Q!CQKLQUpSYakhxVDltC:localhost:8800((*Q!CQKLQUpSYakhxVDltC:localhost:8800''*Q!CQKLQUpSYakhxVDltC:localhost:8800&&*Q!CkNvQnbApPIcuKygDk:localhost:8800FF*Q!CkNvQnbApPIcuKygDk:localhost:8800EE*Q!CkNvQnbApPIcuKygDk:localhost:8800DD*Q!CkNvQnbApPIcuKygDk:localhost:8800CC*Q!CkNvQnbApPIcuKygDk:localhost:8800BB*Q!CkNvQnbApPIcuKygDk:localhost:8800AA*Q!CkNvQnbApPIcuKygDk:localhost:8800@@*Q!CkNvQnbApPIcuKygDk:localhost:8800??*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800  *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!DnUHoxreGexNmjSVpq:localhost:8800PP*Q!CQKLQUpSYakhxVDltC:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CQKLQUpSYakhxVDltC:localhost:8800""*Q!CQKLQUpSYakhxVDltC:localhost:8800!!*Q!CQKLQUpSYakhxVDltC:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ _V*Q!CQKLQUpSYakhxVDltC:localhost:8800$$*Q!CQKLQUpSYakhxVDltC:localhost:8800##*Q!CQKLQUpSYakhxVDltC:localhost:8800%%*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DelfBAGvCrTXgNxmNV:localhost:8800 a a*Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` `*Q!DelfBAGvCrTXgNxmNV:localhost:8800 ^ ^*Q!DelfBAGvCrTXgNxmNV:localhost:8800 b b*Q!DnUHoxreGexNmjSVpq:localhost:8800RR*Q!DnUHoxreGexNmjSVpq:localhost:8800QQ+ -RM H C > 9 4/*|%w rmhc TeQe!IGVHKYcSuxzVPlFHlj:localhost:8800$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsTdQe!IGVHKYcSuxzVPlFHlj:localhost:8800$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UTcQe!IGVHKYcSuxzVPlFHlj:localhost:8800$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcTbQe!IGVHKYcSuxzVPlFHlj:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgTaQe!IGVHKYcSuxzVPlFHlj:localhost:8800$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYT`Qe!xhbvqJDfxMSsZPqvld:localhost:8800$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYT_Qe!xhbvqJDfxMSsZPqvld:localhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5YT^Qe!xhbvqJDfxMSsZPqvld:localhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAT]Qe!xhbvqJDfxMSsZPqvld:localhost:8800$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6oT\Qe!xhbvqJDfxMSsZPqvld:localhost:8800$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5MT[Qe!xhbvqJDfxMSsZPqvld:localhost:8800$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4TZQe!xhbvqJDfxMSsZPqvld:localhost:8800$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wTYQe!xhbvqJDfxMSsZPqvld:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8oTXQe!xhbvqJDfxMSsZPqvld:localhost:8800$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUTWQe!AWfbViAZparIjmDaVT:localhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3poTVQe!AWfbViAZparIjmDaVT:localhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5YknkTUQe!AWfbViAZparIjmDaVT:localhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8TTQe!OSHhtkGUjpUCkXwIhj:localhost:8800$TChcbvxgUyPUybeHMi0Q0-C2AdPwC0BNACooTs5ZPmsTSQe!OSHhtkGUjpUCkXwIhj:localhost:8800$mFqN6ZQmnheRDWnDa9-KZgWEyNrbvnGGVcQ7dEPlkAITRQe!OSHhtkGUjpUCkXwIhj:localhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0sTQQe!OSHhtkGUjpUCkXwIhj:localhost:8800$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHITPQe!OSHhtkGUjpUCkXwIhj:localhost:8800$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0TOQe!OSHhtkGUjpUCkXwIhj:localhost:8800$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwTNQe!OSHhtkGUjpUCkXwIhj:localhost:8800$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMTMQe!OSHhtkGUjpUCkXwIhj:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4TLQe!OSHhtkGUjpUCkXwIhj:localhost:8800$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UTKQe!AWfbViAZparIjmDaVT:localhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPETJQe!AWfbViAZparIjmDaVT:localhost:8800$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgTIQe!AWfbViAZparIjmDaVT:localhost:8800$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YTHQe!AWfbViAZparIjmDaVT:localhost:8800$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5MTGQe!AWfbViAZparIjmDaVT:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqATFQe!AWfbViAZparIjmDaVT:localhost:8800$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYTEQe!wnriPzXkIMmdTNoJKU:localhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgTDQe!wnriPzXkIMmdTNoJKU:localhost:8800$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sTCQe!wnriPzXkIMmdTNoJKU:localhost:8800$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJETBQe!wnriPzXkIMmdTNoJKU:localhost:8800$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8TAQe!wnriPzXkIMmdTNoJKU:localhost:8800$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIT@Qe!wnriPzXkIMmdTNoJKU:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9AT?Qe!wnriPzXkIMmdTNoJKU:localhost:8800$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cT>Qe!jfshVGNDxkvqPxFxWB:localhost:8800$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAT=Qe!jfshVGNDxkvqPxFxWB:localhost:8800$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYT<Qe!jfshVGNDxkvqPxFxWB:localhost:8800$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYT;Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMT:Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYT9Qe!OaCEdDAiatpwYcagUb:localhost:8800$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ f 2 Hfh@eQ__$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 193}{"auth_events": ["$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "type": "m.room.power_levels", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"users": {"@anon-20191002_181700-74:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040454303, "hashes": {"sha256": "ZoIWMpFkfzHUYpuT6p/g1HuFxP+N4GMuUPAhvapkqrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sfcGfeRdXEhfN+FTW0R/kCaugrAOkrTVg0d2+/2uwlb3iJ0DjMIct103/nDE+wdC6vmGKe1bTukd8YSO1n6zBQ"}}, "unsigned": {"age_ts": 1570040454303}}r?eQ_s$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 192}{"auth_events": ["$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY"], "prev_events": ["$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY"], "type": "m.room.member", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-74", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-74:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040453807, "hashes": {"sha256": "zH6XBJzKYHY/aXaDIiHeWyWn/a4u7N4e2bQNfI0YK0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W9nZlcznaI7HS+dK4IeWY3WS9bQrFRwELY+lMsDDoWY1n2NdFqC1sSNa/zEmBLtbBArDgmEvT87R9HtQlizqDQ"}}, "unsigned": {"age_ts": 1570040453807}}f>eQ_[$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 191}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-74:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040453200, "hashes": {"sha256": "x+UqHD+TrkgpqXj51RtJA43CsMW5mn0z9vU+5bAqlFs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "keANHXEVpCOJ0BGtkYnEvfkIGc5kZAYt2DB/4I9yHisv3OjxXmOxWBitAppYLmxQKNNgUxTtn9aeZUjrqq01BA"}}, "unsigned": {"age_ts": 1570040453200}}J=eQ}$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "txn_id": "2", "stream_ordering": 190}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY", "$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg"], "type": "m.room.message", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"msgtype": "m.message", "body": "Room message for 33room-messages"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040450403, "hashes": {"sha256": "736MuZFQxb0IgliIJ4xFYwHNyI1/SnpWPLf2CkOtgQ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wuI3pGfjSKhFPFx+lEkPcV0jlTpHWGdald6Bi7CMWr0tYWY2tCHzmRyWxi7blPeoHlLt/aWtopnP+x70c+0ZBQ"}}, "unsigned": {"age_ts": 1570040450403}} IEtM& c <  y R +  xP(`8X0h@`8rJ"Z4 l 0  p l DH \4 (&O$157004188397MRiZP:localhost:8800&O$157004261099UmKia:localhost:8800&O$157004183365ZxPWz:localhost:8800O&O$157004183264ktTbL:localhost:8800N'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042654147iSsjl:localhost:8800'Q$1570042653146dGCce:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042648142spuws:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800'Q$1570042644136OugnY:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042640133wGmrF:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042634126YmPkp:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800'Q$1570042616106fkZGL:localhost:8800'Q$1570042614104FELge:localhost:8800&O$157004183366iKFsz:localhost:8800P'Q$1570042632124bMwzE:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042630122bUTeO:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042626116pKAbp:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042622113mtzjt:localhost:8800'Q$1570042619109qhpUv:localhost:8800&O$157004188296OVWxu:localhost:8800&O$157004188195thBOS:localhost:8800&O$157004188194vdqBG:localhost:8800&O$157004188093UtRbN:localhost:8800~&O$157004187992XwpoQ:localhost:8800}&O$157004187089FLOwV:localhost:8800u&O$157004186988RkcKb:localhost:8800t&O$157004186887sKbQU:localhost:8800s&O$157004186786RVgKA:localhost:8800r&O$157004186785fjAIs:localhost:8800q&O$157004185982diSTq:localhost:8800j&O$157004185881ahRFW:localhost:8800i&O$157004185780kUwpq:localhost:8800h&O$157004185679NNCIw:localhost:8800g&O$157004185678lyJsT:localhost:8800f&O$157004184875Wzayo:localhost:8800_&O$157004184774CHMNl:localhost:8800^&O$157004184773rCaRK:localhost:8800]&O$157004184672SfwvS:localhost:8800\&O$157004184571IVgQM:localhost:8800[&O$157004183868QRvOi:localhost:8800U&O$157004183467WkNdH:localhost:8800T'Q$1570042611101IffRu:localhost:8800'Q$1570042620111taWCG:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042611100ueDzK:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800 I}V/lE E  [ 4 q J_8tL$\4 lD8`pH Z 2 l|T,jBtL$\4 'Q$1570042635128KJCvL:localhost:8800 &O$157004184672SfwvS:localhost:8800[&O$157004183969fQFzs:localhost:8800U&O$157004183868QRvOi:localhost:8800T&O$157004183467WkNdH:localhost:8800P&O$157004183366iKFsz:localhost:8800O&O$157004183365ZxPWz:localhost:8800N&O$157004183264ktTbL:localhost:8800M&O$157004183063NdEPw:localhost:8800L&O$157004182060gAdxi:localhost:8800B&O$157004181959Afmmv:localhost:8800A&O$157004181958ixShg:localhost:8800@'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042624115nZtIB:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042622113mtzjt:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042620111taWCG:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800'Q$1570042615105OKfnm:localhost:8800'Q$1570042614104FELge:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611100ueDzK:localhost:8800&O$157004188598DcHDt:localhost:8800&O$157004188397MRiZP:localhost:8800&O$157004188194vdqBG:localhost:8800~&O$157004188093UtRbN:localhost:8800}&O$157004188296OVWxu:localhost:8800&O$157004188195thBOS:localhost:8800&O$157004187190ZLRgN:localhost:8800u&O$157004187089FLOwV:localhost:8800t&O$157004186988RkcKb:localhost:8800s&O$157004186887sKbQU:localhost:8800r&O$157004186786RVgKA:localhost:8800q&O$157004185983tEalY:localhost:8800j&O$157004185982diSTq:localhost:8800i&O$157004185881ahRFW:localhost:8800h&O$157004185780kUwpq:localhost:8800g&O$157004185679NNCIw:localhost:8800f&O$157004184976eGgUf:localhost:8800_&O$157004184875Wzayo:localhost:8800^&O$157004184774CHMNl:localhost:8800]&O$157004184773rCaRK:localhost:8800\'Q$1570042651145wBynt:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042648142spuws:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800'Q$1570042642135oMfQy:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042640133wGmrF:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042630122bUTeO:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042632125lwdOR:localhost:8800'Q$1570042636129shBTe:localhost:8800(  2 d/adm[!av@anon-20191002_181700-84:localhost:8800YUGLTPPJENMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3Cgdl[!au@anon-20191002_181700-85:localhost:8800ITOHGGKZTVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCgdk[!at@anon-20191002_181700-83:localhost:8800STLQYGHMSUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCgdj[!as@anon-20191002_181700-82:localhost:8800JESTYYWXIOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECgdi[!ar@anon-20191002_181700-81:localhost:8800CWYDKHHDSEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCgdh[!aq@anon-20191002_181700-80:localhost:8800YTTBSSDSAFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCgdg[!ap@anon-20191002_181700-79:localhost:8800EJTCNAZVHDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCgdf[!ao@anon-20191002_181700-77:localhost:8800FSPHKPOXWNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCgde[!an@anon-20191002_181700-75:localhost:8800RNMICKNMBMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCgdd[!am@anon-20191002_181700-74:localhost:8800SVXLVPCWLXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCgdc[!al@anon-20191002_181700-73:localhost:8800XAYBGVYWKCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8Cg Q0h6n< tj8p> v D  | J  P  V $u \ *bBzaI1i7o= C1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk#1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds m1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds l1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I=1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I<1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I;1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w^1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w]1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w\1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1$2:localhost:424551$2:localhost:424553$29:localhost:424553$29:localhost:424553$29:localhost:424551e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYs1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYr1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo 1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo 1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k@1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw,1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw+1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw*1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo 1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo 1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo 1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQt1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQs1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo;1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo:1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo91e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k 1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k 1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k 1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU x1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU w1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU v1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo(1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI 6^c,OO5xA[ O s ^ # M  M  v ?  ;B^Q']!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800^Q']!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800OBQ? !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibilityN:Q/ !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rulesM<Q3 !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levelsL^Q']!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800K6Q' !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.createJBQ? !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility:Q/ !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rules<Q3 !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels^Q']!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800 6Q' !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create HQ'1!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800:Q/ !EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rulesBQ? !EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility<Q3 !EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_access6Q' !EieRtaCFZJJCIOkRPp:localhost:8800m.room.create<Q3 !EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels^Q']!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800:Q/ !EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rulesBQ? !EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility6Q' !EfJcWhdjNARbuHYrqU:localhost:8800m.room.create<Q3 !EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels^Q']!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800^Q']!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800:Q/ !EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rulesBQ? !EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibility^Q']!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800PHQ'1!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800U:Q/ !FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rulesRBQ? !FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibilityS<Q3 !FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_accessT6Q' !FIOuvzpMhoERunVYYA:localhost:8800m.room.createO<Q3 !FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels^Q']!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800:Q/ !FAYqpziHeVZugCGaij:localhost:8800m.room.join_rules BQ? !FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibility 6Q' !FAYqpziHeVZugCGaij:localhost:8800m.room.create?Q9 !FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_aliasEQ))!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800 9Q- !EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstone<Q3 !EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels^Q']!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800:Q/ !EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rulesBQ? !EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility6Q' !EyyNoldCLUdFHzXTDP:localhost:8800m.room.create <Q3 !EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levels]Q'[!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-93:localhost:8800]Q'[!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829:Q/ !EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rulesBQ? !EyEaTZElOkdURKbEXo:localhost:8800m.room.history_visibility<Q3 !EyEaTZElOkdURKbEXo:localhost:8800m.room.guest_access6Q' !EyEaTZElOkdURKbEXo:localhost:8800m.room.create<Q3 !EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels  xDeQ}$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "4", "stream_ordering": 197}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040456992, "hashes": {"sha256": "v2c54IbCFTTHDmPBnf70CpNcNc6ZWT9Z4QkzEtgkWDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xN9nnjweM2nqIhckmUtek4s/PR/WD7hMr0RxuCa33a6/MfkvRzl/2Ja5e3c7E4WiazWWfHuOPS64eR0vOBcODQ"}}, "unsigned": {"age_ts": 1570040456992}}CeQ}$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "3", "stream_ordering": 196}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040456486, "hashes": {"sha256": "ZzEWvJVlKpBIK0DQkO8yRL56S69pe1izO+vt8+PrzdY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fp5KJKDLCLuc/FhU59z+dugVqWGc6p/+Mua35ypg1CdGGxyIqzDMuBw/sCFfNJlSNLC9U2u0ZsjnqK0kqwUOBA"}}, "unsigned": {"age_ts": 1570040456486}}BeQ_$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 195}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY"], "type": "m.room.history_visibility", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040455602, "hashes": {"sha256": "C0M81kC8UQowRWYfKZ2B2T4ueFM6ebg5BtSL2SOr98U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s/bMnD0qN0327zDiZLFjgMJf6gG4Dm28QpRlCXVa8I7Ajjrme8Ji7qM7KWWu6eisaaQDXvhXR7oq6qociGtaAg"}}, "unsigned": {"age_ts": 1570040455602}}rAeQ_s$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 194}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY"], "type": "m.room.join_rules", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040454901, "hashes": {"sha256": "RukMG3Esp9mPv4hM1AQDUhdlprRNWuupA5vJJmPn8Kg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q9Xw3+g019+rjB+6E1iZSkR5y6U7Zt6Ijf/bsIZtIdQqDXtRrY8x/04o2x94r3Z5Fc7hZT98VJTIB6KyF9DoBA"}}, "unsigned": {"age_ts": 1570040454901}} Y b  v . BVj"~9Ye'Q [$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Am.room.member!wnriPzXkIMmdTNoJKU:localhost:8800mKmL@anon-20191002_181700-75:localhost:8800X e'Q  [$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cm.room.create!wnriPzXkIMmdTNoJKU:localhost:8800mIDmI@anon-20191002_181700-75:localhost:8800 We)Q [$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzIm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800mDmD@anon-20191002_181700-74:localhost:8800 Ve)Q [$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508m.room.message!jfshVGNDxkvqPxFxWB:localhost:8800mCmC@anon-20191002_181700-74:localhost:8800 Ue)Q [$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4m.room.message!jfshVGNDxkvqPxFxWB:localhost:8800mB>mBG@anon-20191002_181700-74:localhost:8800 Te)Q [$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kAm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m@m@@anon-20191002_181700-74:localhost:8800 Se)Q [$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m>m>@anon-20191002_181700-74:localhost:8800 Re)Q [$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m=Cm=I@anon-20191002_181700-74:localhost:8800 Qe)Q [$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m;m;@anon-20191002_181700-74:localhost:8800 Pe)Q [$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m:m:@anon-20191002_181700-74:localhost:8800 Oe)Q [$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m6m6@anon-20191002_181700-74:localhost:8800 Ne)Q [$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1Um.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m5bm5j@anon-20191002_181700-74:localhost:8800 Me)Q [$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m3]m3c@anon-20191002_181700-74:localhost:8800 Le)Q [$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m1m1@anon-20191002_181700-74:localhost:8800 Ke)Q [ $HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m0om0u@anon-20191002_181700-74:localhost:8800 Je)Q [ $NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m/ m/@anon-20191002_181700-74:localhost:8800 Ie)Q [ $AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01sm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m-am-k@anon-20191002_181700-74:localhost:8800 He)Q [ $QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m+m+@anon-20191002_181700-74:localhost:8800 Ge)Q [ $sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfAm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m*Ym*`@anon-20191002_181700-74:localhost:8800 Fe)Q [$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9Em.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m(~m(@anon-20191002_181700-74:localhost:8800 Ee)Q [$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCom.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m' m'&@anon-20191002_181700-74:localhost:8800 De)Q [$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wgm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m%&m%@anon-20191002_181700-74:localhost:8800+Ce?Q [$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAm.room.history_visibility!jfshVGNDxkvqPxFxWB:localhost:8800m!m#u@anon-20191002_181700-74:localhost:8800#Be/Q [$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYm.room.join_rules!jfshVGNDxkvqPxFxWB:localhost:8800mm@anon-20191002_181700-74:localhost:8800 Vo M + xVF[a!E@anon-20191002_181700-84:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3CgYUGLTPPJEN127.0.0.1Perl + Net::Async::HTTP/0.44mqE[a!E@anon-20191002_181700-83:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCgSTLQYGHMSU127.0.0.1Perl + Net::Async::HTTP/0.44m ;D[a!E@anon-20191002_181700-82:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECgJESTYYWXIO127.0.0.1Perl + Net::Async::HTTP/0.44mC[a!E@anon-20191002_181700-81:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCgCWYDKHHDSE127.0.0.1Perl + Net::Async::HTTP/0.44m:B[a!E@anon-20191002_181700-80:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCgYTTBSSDSAF127.0.0.1Perl + Net::Async::HTTP/0.44mA[a!E@anon-20191002_181700-79:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCgEJTCNAZVHD127.0.0.1Perl + Net::Async::HTTP/0.44m@[a!E@anon-20191002_181700-77:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCgFSPHKPOXWN127.0.0.1Perl + Net::Async::HTTP/0.44m&?[a!E@anon-20191002_181700-75:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCgRNMICKNMBM127.0.0.1Perl + Net::Async::HTTP/0.44mHm>[a!E@anon-20191002_181700-74:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCgSVXLVPCWLX127.0.0.1Perl + Net::Async::HTTP/0.44m=[a!E@anon-20191002_181700-73:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8CgXAYBGVYWKC127.0.0.1Perl + Net::Async::HTTP/0.44m a} { y w u sqomkigeca~eeQ$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~eeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~~eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~}eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~|eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~{eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~zeeQ$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~yeeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800~xeeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~weeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800  u^HeQ}$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "8", "stream_ordering": 201}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040458593, "hashes": {"sha256": "oqOXYWyanh44nuTekTW9w9Yp9KZK2Lw/XXHqI7NzSG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M1ZuJWZQuWwGRfGITaoQNAOaj0K6cJj6TSbmrp3HrPKHu1O+I8XkV3gJ9DCvUHwU/77CHotpkIwkgH1jBXK0Dw"}}, "unsigned": {"age_ts": 1570040458593}}GeQ}$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "7", "stream_ordering": 200}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040458226, "hashes": {"sha256": "XU2u1mUgpsfr2iRMhCgE5W6LpebSCwUdRvOIDX8X5Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NUoHsZ/QXBqeWScqyr249N9g90hluxb8/JVe80Rbmsmln1lbgcNTniBAPAlhvdVIWs75lw44tGWrK68OPyKZBQ"}}, "unsigned": {"age_ts": 1570040458226}}FeQ}$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "6", "stream_ordering": 199}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040457817, "hashes": {"sha256": "o9ghYuj9FwDAdFh18F5lnqmDzu+P3opBrKFGF5RF3Y0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sXUulpCyhfvpk7gJ2U801gs4OOQ0UZsyUciQ/Q1iDwzE62me93RTZ5ywosXB9UBTvggm6PdOAgSda8hklK5GCw"}}, "unsigned": {"age_ts": 1570040457817}}EeQ}$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "5", "stream_ordering": 198}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040457342, "hashes": {"sha256": "1XFek5rpxySfUVoeqzAmEq9yi8n4cPqGjcmFzv1i86o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LSzL+rI54Vq4RoZM8r0Yiyd2dZOVxMxXIo5u4grH5EVl4WodLxTNSqbGNsV14ekjhDaCUkAJ2imE1zkXSQ1lCw"}}, "unsigned": {"age_ts": 1570040457342}} V( H  p xP(X0pH xP@h H `8X`8p0h@  x P ( X  p H 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CQKLQUpSYakhxVDltC:localhost:8800!'Q!CQKLQUpSYakhxVDltC:localhost:8800 'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800''Q!CQKLQUpSYakhxVDltC:localhost:8800&'Q!CQKLQUpSYakhxVDltC:localhost:8800%'Q!CQKLQUpSYakhxVDltC:localhost:8800$'Q!CQKLQUpSYakhxVDltC:localhost:8800#'Q!CQKLQUpSYakhxVDltC:localhost:8800"'Q!CkNvQnbApPIcuKygDk:localhost:88007'Q!CkNvQnbApPIcuKygDk:localhost:88006'Q!CkNvQnbApPIcuKygDk:localhost:88005'Q!CkNvQnbApPIcuKygDk:localhost:88004'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CQKLQUpSYakhxVDltC:localhost:8800('Q!DelfBAGvCrTXgNxmNV:localhost:8800 Z'Q!DelfBAGvCrTXgNxmNV:localhost:8800 Y'Q!DelfBAGvCrTXgNxmNV:localhost:8800 X'Q!DelfBAGvCrTXgNxmNV:localhost:8800 W'Q!DelfBAGvCrTXgNxmNV:localhost:8800 V'Q!DelfBAGvCrTXgNxmNV:localhost:8800 U'Q!DelfBAGvCrTXgNxmNV:localhost:8800 T'Q!DelfBAGvCrTXgNxmNV:localhost:8800 S'Q!CkNvQnbApPIcuKygDk:localhost:8800;'Q!CkNvQnbApPIcuKygDk:localhost:8800:'Q!CkNvQnbApPIcuKygDk:localhost:88009'Q!CkNvQnbApPIcuKygDk:localhost:88008'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800H x'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800J'Q!DnUHoxreGexNmjSVpq:localhost:8800I'Q!DnUHoxreGexNmjSVpq:localhost:8800G'Q!DnUHoxreGexNmjSVpq:localhost:8800D'Q!DelfBAGvCrTXgNxmNV:localhost:8800 \'Q!DelfBAGvCrTXgNxmNV:localhost:8800 [@'Q!DnUHoxreGexNmjSVpq:localhost:8800L'Q!DnUHoxreGexNmjSVpq:localhost:8800K'Q!CgVBWWcRJoHEcwoLcq:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800 'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 x'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 w'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 u'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 t'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 s'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 r'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 q'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 p'Q!DnUHoxreGexNmjSVpq:localhost:8800F'Q!DnUHoxreGexNmjSVpq:localhost:8800E  tZ LeQ$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "12", "stream_ordering": 205}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040460125, "hashes": {"sha256": "yVaQmBtr5wbCCGR8KdUaGdVLzNPbuNCQZFWw9oduEsg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q6e2xiQikn2bu5wdlp572+bVB2XMQajaOQB8E5foCU4/ULPPe9F9smkFfgrGvlOQyj4U5vZhGoBzJHNB833DBQ"}}, "unsigned": {"age_ts": 1570040460125}} KeQ$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "11", "stream_ordering": 204}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040459743, "hashes": {"sha256": "LNvymlF0ryYewlcG1P525FkVEuo0zXYhYKDFDIgtFv4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6PcY32ePCXml5PlZfXEqwyPhq/M+Ty4t0psiW7CsA2cZWDFltKNONYr7gtA18nBsxEEdUVXKeHulsWBsFrvqDw"}}, "unsigned": {"age_ts": 1570040459743}} JeQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "10", "stream_ordering": 203}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040459375, "hashes": {"sha256": "5raDdKDDyej+aOE0BVbhrxJKF43qMmKRSM9zLaw/ID8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3gqSDa+COOld9pcjEmxtXMTxa1SEwS2B0KKXTfwp9zrRW7b+5V45avQcUMBv5JxccVIdBLhvJwnS6GVLw40/CA"}}, "unsigned": {"age_ts": 1570040459375}}IeQ}$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "9", "stream_ordering": 202}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040459017, "hashes": {"sha256": "kkAR+yPqVmT3D5EVoL8XXEPXBxr6wnxBeMeF5taGmTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ae+B/nwY1obVhxNKMAgxJK2q5wn1CS0N8kYtrRhpo46UhIZ/Tu00wfo3CoS0IwpDaLvTRawjl8KVFOQjnQ1FDg"}}, "unsigned": {"age_ts": 1570040459017}} $X?a"D f  ; ] 4V{62XnQQQ$1570043195269hcCzg:localhost:8800$1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 nQQQ$1570043192266CXqej:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 nQQQ$1570043151259knbjg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 ynQQQ$1570043154263raEaa:localhost:8800$1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 }nQQQ$1570043153262hRyOa:localhost:8800$1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 |nQQQ$1570043152261Skczg:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 {nQQQ$1570043152260dkyqc:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 znQQQ$1570042725233SjCnf:localhost:8800$1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042725232UzIHq:localhost:8800$1570042724231dYSEq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042724231dYSEq:localhost:8800$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570043194268zlNeZ:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 nQQQ$1570043193267ZyDyW:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 lOOQ$157004274411xArrT:localhost:8829$157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800 lMQQ$15700427439Hwxyi:localhost:8829$1570042742256IYRor:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 kOMQ$157004274310jCQYA:localhost:8829$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042742256IYRor:localhost:8800$1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042742255yQzPA:localhost:8800$1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042741254DKIYz:localhost:8800$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042740253GkWgu:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042739252bWghU:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042738251iukAg:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 lMQQ$15700427368TlZQs:localhost:8829$1570042735248drnws:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042735248drnws:localhost:8800$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042734247SfTxR:localhost:8800$1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042733246cYViL:localhost:8800$1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042733245smHTZ:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042732244zDmQh:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042731243YuOkC:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042729241UUSiz:localhost:8800$1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800 nQQQ$1570042729240aBRvS:localhost:8800$1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800 nQQQ$1570042728239BMOBm:localhost:8800$1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042728238dtqIB:localhost:8800$1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042727237iUlYB:localhost:8800$1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042727236AOaiE:localhost:8800$1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042726235bahBo:localhost:8800$1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042726234miteq:localhost:8800$1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800  rV PeQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "16", "stream_ordering": 209}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 14"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040462310, "hashes": {"sha256": "2E/NnrjRzx/jM5qQptihywPHwlMYlDTbhugCHmNtgh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TFYMUiWqkARfg5QrRkvixXmmstFAJaQ+XHtVXFMyESjOWuRMjtq4PNlfD64UTcHHysn0PIdU1aIzI7puVNV3BQ"}}, "unsigned": {"age_ts": 1570040462310}} OeQ$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "15", "stream_ordering": 208}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 13", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040461951, "hashes": {"sha256": "CfvfITYRRz7xXm2JfTpDXJPMLGIwtpCXQ5mIkDPCgnU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vx2pkbVS9Nh8f6rrjJNYrUGMArRI7MVfLyQ+GAmABtvpu0RHXskC8dGrsYXl/AaXhqOjQ4N/YWWGTJHL78+DBA"}}, "unsigned": {"age_ts": 1570040461951}} NeQ$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "14", "stream_ordering": 207}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 12", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040461043, "hashes": {"sha256": "0EUncMcMpDAhg4w8U6cTTOUHyD0CscetF09cQf4G0mI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x20MuObM/Wg6hkfDUz55K+c4PjR2DoVu/4piTUcOeE54peBY04llIe1Nmm+gritBMc9Y392mOZjfQMKqMs93Cw"}}, "unsigned": {"age_ts": 1570040461043}} MeQ$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "13", "stream_ordering": 206}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 11", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040460642, "hashes": {"sha256": "JZTa8zg6dmVW5kh3BM9Z8lwLI5IohTVpRnG9Wo3DyB0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Iqdg7Ra6kbtsn6Z0wz8SW25kDUB3pqiFt0etR/o8ZBk7ZLlakSWSZU3VeWwYXwFeL8XtopB3MGqF5IqERnzCw"}}, "unsigned": {"age_ts": 1570040460642}}  rV TeQ$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "20", "stream_ordering": 213}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 18", "msgtype": "m.text"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040463934, "hashes": {"sha256": "M9dhcSHYts98R9KU0akaEFXrvvpgu0RxwggHsO8PQRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SUCQm+k7SCaGb6f3SCUzsaeJMkoRcbPAqQcmJHJ8ypiNk3pwbtZu7GLCfV0V1GcSevnDi98zmTbQz29vc/YzBQ"}}, "unsigned": {"age_ts": 1570040463934}} SeQ$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "19", "stream_ordering": 212}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 17", "msgtype": "m.text"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040463551, "hashes": {"sha256": "qbMY2Oc4Nz9Gb9EmbJs+Oor7twa9SNJwjUVNHpz+oOg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YfAd9wVobPef1fSyCAiFl7+VfgkW/my1sSaikLlW4ZB9OrgvSWthe0pw4asZBNQHPf/zhxXAIizYVAmeA7GZCA"}}, "unsigned": {"age_ts": 1570040463551}} ReQ$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "18", "stream_ordering": 211}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 16", "msgtype": "m.text"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040463034, "hashes": {"sha256": "ssdahguGKgP/lf2U75ZCladGps9flfbKje+qfHt0Hsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0wtOgK0MLd+ITYroYkztZTygo4vU6FEJUaXue7Hb73XRGy1t+fnleyJeTou8aOpX533aK2KXsqjwofkmu1aMBQ"}}, "unsigned": {"age_ts": 1570040463034}} QeQ$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "17", "stream_ordering": 210}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 15"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040462659, "hashes": {"sha256": "I73AYnaa/QiuRbOzJeDlH87vX0+vO6RMRojbZNJoeU4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nDrTggisDdYh5aOfKwWOhDnbhjc+ixogqmHEaSHNzUI70TitmaNHM8jxjQ5TmFbBRn+zrJlfNFuXTa+XCR+HDA"}}, "unsigned": {"age_ts": 1570040462659}} "]': > B A J d~ %>Vn*C]q"eQ%-$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 3q!eQ%-$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 2q eQ%-$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 1reQ%/$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 20reQ%/$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 19reQ%/$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 18reQ%/$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 17reQ%/$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 16reQ%/$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 15reQ%/$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 14reQ%/$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 13reQ%/$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 12reQ%/$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 11reQ%/$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 10qeQ%-$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 9qeQ%-$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 8qeQ%-$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 7qeQ%-$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 6qeQ%-$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 5qeQ%-$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 4qeQ%-$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 3q eQ%-$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 2q eQ%-$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 1 eQ%M$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ!OaCEdDAiatpwYcagUb:localhost:8800content.bodyRoom message for 33room-messages eQ'I$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800content.topicTesting topic for the new room| eQ%C$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk!NhWgOTYzEPRwAxRQvS:localhost:8800content.bodyHere is the message content|eQ%C$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY!scyFsXcUIJiLIMwWMY:localhost:8800content.bodyHere is the message content|eQ%C$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs!aWJOsiuJONOvjKWEjO:localhost:8800content.bodyHere is the message content|eQ%C$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU!BDASLhdcKfNwxCTCSg:localhost:8800content.bodyHere is the message content|eQ%C$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY!xwoIOPTGmJIlTXakxC:localhost:8800content.bodyHere is the message contentzeQ'=$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0!sPWVGnipjiiWQpywNO:localhost:8800content.topicA new topic for the roomoeQ%)$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:8800content.nameroom name herekeQ'$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800content.topicTest RoomjeQ%$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800content.nameTest Room  sY deQ$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "29", "stream_ordering": 229}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040473252, "hashes": {"sha256": "RPS9oYVZxZtt38Dt72Pc/BGkOJvzhwSHrYQhxvLQ5kY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fyrzIwe8KvRn3ObxR53Pge3jiRghl9qOwA0dxagsD8DQ6DWPa6LFAYxeksZ+YIJ+tlc0aEXffYt9VnJPYUbsBg"}}, "unsigned": {"age_ts": 1570040473252}} ceQ$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "28", "stream_ordering": 228}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040472902, "hashes": {"sha256": "HesJVSV0wVRlfSDH3y2aufsFc86q5Em9Ev8lnEs44IQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pZ7UyEFbfoNUcgcweaQF/+grvPbOpvcuBYDMHx+9oGs0cCFJMVtEhqtL7vrImIxovSWtAMJFXku4NgLIB0t2AQ"}}, "unsigned": {"age_ts": 1570040472902}} beQ$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "27", "stream_ordering": 227}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040472493, "hashes": {"sha256": "A6ag9+pSMjJQZs06FUPhJ0HKSBTpn/vFyB6TSRPGe0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PwDHk2OVe0tq4AmLCAXyP7+1gYu6/f9cAOu8uRb3VPVJhvshhfFmxhy8u1R6tpnWZLtvJ2soLFZCNoAJ4yJXCg"}}, "unsigned": {"age_ts": 1570040472493}} aeQ$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "26", "stream_ordering": 226}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040471725, "hashes": {"sha256": "JtMFLX1avTN5npGFZWVCZDkD0hMRSD6PKdV02UxsN6s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0xTY1W5MRXdw4LTRfo39m4Ih2IIo0jyMXMOKbl4PRDcke73iHfkAXs7xtBMsKifMdYD2rnaTM5PKMtJtlIZsCg"}}, "unsigned": {"age_ts": 1570040471725}}  rrXeQ_s$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 217}{"auth_events": ["$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c"], "prev_events": ["$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c"], "type": "m.room.member", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-75", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-75:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040466340, "hashes": {"sha256": "1PlO5/EVzEyzsOkIanVEahHKez3cdrP9ea/xZPsvC7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zkMQuRMmSz3ZYyRoKaTn/4J846XjWY6GRXdFPiBNnmWVdVaX6AzYt3Kbm1VCjlWfsa/qgM0UIP2DYXb813vKDQ"}}, "unsigned": {"age_ts": 1570040466340}}fWeQ_[$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 216}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-75:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040465732, "hashes": {"sha256": "ctCIZ+HoLNhuWgfVEkSiyWIgsWJkXhyn6JN7LV26Dn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GInJjqSSz7znU1KdzmxjgCfcTKd34rhNBAorQ8smuJnMjLMgHo5FHMJ3giWJYCaGJq7p2CBK2vaNZEyHg1BPCg"}}, "unsigned": {"age_ts": 1570040465732}} VeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "22", "stream_ordering": 215}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 20"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040464626, "hashes": {"sha256": "Lkf1NxUg0CsL0kJRLe5yDTJdAeHwAMzabQOpr9RL5Rg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kG+9cCngtkECeUEicEAAdaWoChmb0OUWXrSdF3vkX1wS0YznIpwyT8//IIvGbAfOsB8Mhq8vF67AGUkvgNclDQ"}}, "unsigned": {"age_ts": 1570040464626}} UeQ$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "21", "stream_ordering": 214}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 19", "msgtype": "m.text"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040464268, "hashes": {"sha256": "cbTV+6wFNJyCG8rttBb3c5Wik6A6MqpdZtt+DKvkXP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1mKx0MFjfxavlVRW3y6YUpeb1dDTQ/fPMspFA76GOREA4uNmiYsfV4LEcbTuZEIsUWVvMIIN9U6P8rkTKUHDAg"}}, "unsigned": {"age_ts": 1570040464268}} 3LY* p A  V ) q B  W ( l = R#g8 |Mb5yJawHs2vGD3/.Q$1570042718224MBWNJ:localhost:8800sha256 s.Q$1570042723230DFoyn:localhost:8800sha256 .Q$1570042722229ehxUl:localhost:8800sha256 .Q$1570042722228QkARL:localhost:8800sha256 .Q$1570042721227mhNwo:localhost:8800sha256 .Q$1570042720226wSTBF:localhost:8800sha256 .Q$1570042719225dSNgP:localhost:8800sha256 r.Q$1570042727237iUlYB:localhost:8800sha256 .Q$1570042727236AOaiE:localhost:8800sha256 .Q$1570042726235bahBo:localhost:8800sha256 .Q$1570042726234miteq:localhost:8800sha256 ,M$15700427177BOUHn:localhost:8829sha256 .Q$1570042716222nflqt:localhost:8800sha256 .Q$1570042715221Amlxc:localhost:8800sha256 .Q$1570042714220vWWFN:localhost:8800sha256 .Q$1570042713219HcQXL:localhost:8800sha256 .Q$1570042712218KQzXb:localhost:8800sha256 .Q$1570042712217nuYrc:localhost:8800sha256 .Q$1570042711216KdEEo:localhost:8800sha256 .Q$1570042710215aaRza:localhost:8800sha256 .Q$1570042709214PwhVu:localhost:8800sha256 ,M$15700427086bDrAU:localhost:8829sha256 .Q$1570042707212LkSAM:localhost:8800sha256 .Q$1570042706211NniIl:localhost:8800sha256 .Q$1570042705210LweYn:localhost:8800sha256 .Q$1570042704209JQwmT:localhost:8800sha256 .Q$1570042704208yLiWU:localhost:8800sha256 .Q$1570042703207yqsGA:localhost:8800sha256 .Q$1570042702206BIYsS:localhost:8800sha256 .Q$1570042701205bxgOX:localhost:8800sha256 .Q$1570042700204CxVfq:localhost:8800sha256 .Q$1570042699203fHFjU:localhost:8800sha256 .Q$1570042698202juBqr:localhost:8800sha256 .Q$1570042698201kDowV:localhost:8800sha256 .Q$1570042697200mrENr:localhost:8800sha256 .Q$1570042697199ROUNP:localhost:8800sha256 .Q$1570042696198qbnxj:localhost:8800sha256 .Q$1570042695197vezoL:localhost:8800sha256 .Q$1570042694196OHsWc:localhost:8800sha256 .Q$1570042693195hNKnU:localhost:8800sha256 .Q$1570042692194rxboZ:localhost:8800sha256 .Q$1570042691193uVdPZ:localhost:8800sha256 .Q$1570042691192yNWVM:localhost:8800sha256 .Q$1570042690191yQfnl:localhost:8800sha256 .Q$1570042689190UkvMv:localhost:8800sha256 .Q$1570042688189axPjv:localhost:8800sha256 .Q$1570042687188ddQmS:localhost:8800sha256 .Q$1570042687187gbArC:localhost:8800sha256 .Q$1570042686186Qxqmn:localhost:8800sha256 .Q$1570042685185RhcXe:localhost:8800sha256 .Q$1570042683184TpChh:localhost:8800sha256 .Q$1570042682183iUUXF:localhost:8800sha256 .Q$1570042681182ZiRRU:localhost:8800sha256 .Q$1570042680181TFyrx:localhost:8800sha256 .Q$1570042680180uuIxG:localhost:8800sha256 .Q$1570042679179ZJCqE:localhost:8800sha256 .Q$1570042678178HSUoI:localhost:8800sha256 ,M$15700426765pydev:localhost:8829sha256 ,M$15700426764DoRhm:localhost:8829sha256 ,M$15700426753WBESe:localhost:8829sha256 .Q$1570042675176WKRiz:localhost:8800sha256 .Q$1570042674175gurnU:localhost:8800sha256 .Q$1570042673174OxGuP:localhost:8800sha256 .Q$1570042672173XsxsH:localhost:8800sha256 .Q$1570042672172vPvbe:localhost:8800sha256 .Q$1570042671171AQZaz:localhost:8800sha256 .Q$1570042670170TtDpX:localhost:8800sha256 ,M$15700426692GLpqH:localhost:8829sha256 .Q$1570042668168uCbYK:localhost:8800sha256 .Q$1570042667167mhSmJ:localhost:8800sha256 .Q$1570042666166IBpPy:localhost:8800sha256 .Q$1570042666165HDkhp:localhost:8800sha256 .Q$1570042665164nYKmj:localhost:8800sha256 .Q$1570042725233SjCnf:localhost:8800sha256 .Q$1570042725232UzIHq:localhost:8800sha256 .Q$1570042724231dYSEq:localhost:8800sha256 ~z v r n j fb^ZVRNJFWeeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800VeeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800UeeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800TeeQ$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800SeeQ$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800ReeQ$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800QeeQ$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800PeeQ$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800OeeQ$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800NeeQ$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800MeeQ$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800LeeQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800KeeQ$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800JeeQ$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800IeeQ$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800HeeQ$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800GeeQ$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800FeeQ$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800EeeQ$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800DeeQ$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800CeeQ$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc!wnriPzXkIMmdTNoJKU:localhost:8800BeeQ$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800AeeQ$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800@eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800?eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800>eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800=eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800<eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800;eeQ$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800:eeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800  \eQ_$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 221}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE"], "type": "m.room.history_visibility", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040468595, "hashes": {"sha256": "dsTlnQb6FhDjrvopc0oKUUPzs+OT4ZeJLXqlXCMcRrc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yS/Oaa0D/jBrWsDIG2RK0iDruxrr7m3KK9iardlbFYOtBRXRUzR4GeDwEqWjrsJRPuqZuxsb+JWnrmX8r/tLAg"}}, "unsigned": {"age_ts": 1570040468595}}r[eQ_s$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 220}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8"], "type": "m.room.join_rules", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040468035, "hashes": {"sha256": "CRPkGTn7Tz8KnWGEBFOBOLprVza7LjrGgQ3TA82muVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+ny3qRr9PMR75LJFWBO41b9W9H6D4d1ffiAfDH/ZIu3ucpDi/5rermUDyJ86/hUu+zZ+1IUbjUgaIYEbLPd1AQ"}}, "unsigned": {"age_ts": 1570040468035}}ZeQ_5$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 219}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI"], "type": "m.room.canonical_alias", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"alias": "#test-20191002_181700-2:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040467453, "hashes": {"sha256": "Tl+rEObN5CS+CNEq4yMMCOLAIry7AhK8ArhR4kjalds"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jTPT7A8X9mScDBLYxppkdlzhu57lJX5XSA26GDD+CTBbIEFnymtF5vhNeu5xMB83c94Ku3e65miHHN5GiYDODA"}}, "unsigned": {"age_ts": 1570040467453}}hYeQ__$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 218}{"auth_events": ["$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "type": "m.room.power_levels", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"users": {"@anon-20191002_181700-75:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040466804, "hashes": {"sha256": "yplSCvp31uVuBUz0Bv24v1ET4TSVG2omg3XdHYz2EC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+b7mszAjJjfi7tT7Y/1R4pnVU1Z6GeZACmez3EaVCAgiIem7XijMmj6hNskJnCz2WN4ht7GYen67gbh/rUeNDw"}}, "unsigned": {"age_ts": 1570040466804}} W U i ! }5I]q) qe)Q [$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0m.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mm@anon-20191002_181700-75:localhost:8800 pe)Q [$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tREm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800m@mE@anon-20191002_181700-75:localhost:8800 oe)Q [$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0sm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800m|m|@anon-20191002_181700-75:localhost:8800 ne)Q [$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFYm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mwmw@anon-20191002_181700-75:localhost:8800 me)Q [$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTcm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mu!mu*@anon-20191002_181700-75:localhost:8800 le)Q [$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIYm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mrmr @anon-20191002_181700-75:localhost:8800 ke)Q [$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mpWmpd@anon-20191002_181700-75:localhost:8800 je)Q [$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4m.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mnmn@anon-20191002_181700-75:localhost:8800 ie)Q [$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mom.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mmXmmb@anon-20191002_181700-75:localhost:8800 he)Q [$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gwm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mkmk@anon-20191002_181700-75:localhost:8800 ge)Q [$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNYm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mj!mj*@anon-20191002_181700-75:localhost:8800 fe)Q [$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4m.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mhmh@anon-20191002_181700-75:localhost:8800 ee)Q [$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARwm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mfmf@anon-20191002_181700-75:localhost:8800 de)Q [ $YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBcm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 meFmeO@anon-20191002_181700-75:localhost:8800 ce)Q [ $f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkUm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 mcmc@anon-20191002_181700-75:localhost:8800 be)Q [ $ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_nom.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 m`m`@anon-20191002_181700-75:localhost:8800 ae)Q [ $NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTEm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 m^m^@anon-20191002_181700-75:localhost:8800 `e)Q [ $eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 m]m]b@anon-20191002_181700-75:localhost:8800 _e)Q [$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mZ8mZ=@anon-20191002_181700-75:localhost:8800 ^e)Q [$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgm.room.aliases!wnriPzXkIMmdTNoJKU:localhost:8800mWmXo@anon-20191002_181700-75:localhost:8800+]e?Q [$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sm.room.history_visibility!wnriPzXkIMmdTNoJKU:localhost:8800mTsmU@anon-20191002_181700-75:localhost:8800#\e/Q [$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEm.room.join_rules!wnriPzXkIMmdTNoJKU:localhost:8800mRCmS@anon-20191002_181700-75:localhost:8800([e9Q [$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8m.room.canonical_alias!wnriPzXkIMmdTNoJKU:localhost:8800mOmP@anon-20191002_181700-75:localhost:8800%Ze3Q [$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIm.room.power_levels!wnriPzXkIMmdTNoJKU:localhost:8800mMtmNv@anon-20191002_181700-75:localhost:8800  _G `eQ$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "25", "stream_ordering": 225}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040471260, "hashes": {"sha256": "uiJaq9gDaMXr0OwOTpeiq2AxkBOCPlW+NtSm7xT76RU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KKqTR/xyKP+br9qlGXHndF+OfKZzixgm/uW6zTuspa2ie38F2bXksJIkJoh9xXtJi3srCNSQ2G0CzeiW6xKVBg"}}, "unsigned": {"age_ts": 1570040471260}}_eQ$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "24", "stream_ordering": 224}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040470784, "hashes": {"sha256": "kJ0MdPuQHRP9HRDgIf8yalu+jvGkNmEw6cP3IHGcrRA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GCtN7Tbcei2zGC/n0k8cY8JBp5zp40bK8nDLogr3qKFlSk2X18Qj+G5TlL2Os46tdtZRHhJtHJHxu2B9OHgDQ"}}, "unsigned": {"age_ts": 1570040470784}}^eQ$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "23", "stream_ordering": 223}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040470072, "hashes": {"sha256": "+ZDvEEgwwaGJngrON29xcfUQgE90vOGHewATg5AN+FU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i/QEN38l8EuLMETdLo9WQDFLFBtLR08vf/64SAWtagzy6KPhB2ugTKycob3b+GMrLoCRQDWp0eBb7U2SIqRMDA"}}, "unsigned": {"age_ts": 1570040470072}}]eQ_I$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 222}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s"], "type": "m.room.aliases", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"aliases": ["#test-20191002_181700-2:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040469435, "hashes": {"sha256": "+I/k8nmDxkZqPc1AxMnSYCxg5lnzLh+tlN3KI0GYWKA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0cHcZ5M0DSGJTXbst9qmHBwTu/vqbIYSfarfKHwlA4ew72UEJHIhyHtqvaGUBZlH/8+kC+JvhlGUh6BCJx/PCg"}}, "unsigned": {"age_ts": 1570040469435}} "4 N f ~ " :Vtg(B\urDeQ%/$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 12rCeQ%/$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 11rBeQ%/$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 10qAeQ%-$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 9q@eQ%-$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 8q?eQ%-$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 7q>eQ%-$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 6q=eQ%-$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 5q<eQ%-$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 4q;eQ%-$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 3q:eQ%-$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 2q9eQ%-$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 1q8eQ%-$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 0~7eQ%G$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800content.bodyRoom message for 90jira-SYT-1 6eQ']$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800content.topicHere I can set the topic at powerlevel 0p5eQ%+$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800content.nameA new room namen4eQ%'$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800content.nameThe room namen3eQ%'$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800content.nameThe room namer2eQ%/$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 19r1eQ%/$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 18r0eQ%/$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 17r/eQ%/$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 16r.eQ%/$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 15r-eQ%/$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 14r,eQ%/$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 13r+eQ%/$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 12r*eQ%/$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 11r)eQ%/$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 10q(eQ%-$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 9q'eQ%-$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 8q&eQ%-$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 7q%eQ%-$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 6q$eQ%-$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 5q#eQ%-$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 4 ,NC 8 - { " p  e ZOD9.|#qf V eL$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcsha256D-H'Ccט޳͗V eL$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgsha256io8N7>SΣ8>m $ oV}eL$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0ssha25699.gGTR1SDE_KV|eL$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIsha256cOqhաVbڡ[3LrV{eL$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0sha256IdBY։PbI}"I FVzeL$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwsha256xIϛ_EA VyeL$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMsha256HέٵUhbdN4mx[ 5OsVxeL$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4sha256 [2|eQ=3Ӊx*-e!z.VweL$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9Usha2562&σ Z2&pf7ŧjEs䣣VveL$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEsha256ؾsq $}%lm"`VueL$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgsha256j'Ui!{uc՛`t<gv8VteL$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Ysha256"9+|M_tKizUe6pQVseL$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5Msha256_rGGIzӇ6+^vHz  u_LeQw$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "324", "stream_ordering": 2007}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 30", "msgtype": "m.text"}, "depth": 40, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042227342, "hashes": {"sha256": "HjxXA4kHbIJ0/OnX1UAXyCz1HMuezFJ0wyWQ/C63wCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NNuznY5NNO1SgwZNbKzSIim8tkuQOuE4dmp0NCMss6IXc6HnZNkHOj9cMYGeLmaY2f4BTKbBjhqdLQ0KTkiqCA"}}, "unsigned": {"age_ts": 1570042227342}}KeQw$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "323", "stream_ordering": 2006}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 29"}, "depth": 39, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042226705, "hashes": {"sha256": "sdSqdc/0hfIE+/4YD9Rc9CXGmSL+bhFq1ooADO7JPng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZOuNkBIVG/kle0ZZ253CYByF7a2DqLBKeVh6QcmcvLkbVJ8Q+ljSuwzyJyeRj/BaeNolpmBotIodAsUOaD/IAg"}}, "unsigned": {"age_ts": 1570042226705}}JeQw$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "322", "stream_ordering": 2005}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 28", "msgtype": "m.text"}, "depth": 38, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042226197, "hashes": {"sha256": "UdwwkcIS5n72ZhLJ4voxJk8j4Os/wo/yC3PGAnbeYNA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z95HfIfqAEaK4+5AfXVtfmpW5g+GwLtq8SQp6+N1towdnGm1ZHTzBHhNDBtrB4oZwv9qJjDX/lUpIz7kXveKDg"}}, "unsigned": {"age_ts": 1570042226197}}IeQw$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "321", "stream_ordering": 2004}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 27"}, "depth": 37, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042225689, "hashes": {"sha256": "kfxpKlGqimpMkWWoGAR+ali6IjhAId2A+BHOd9UdTGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WhktcGcwVNCl0+sMW0lyTUJ0090nTZYgtgumLIaF+/X3h7UdQ9L5ZpRrRbHn34qKTpxXJ1M5+PUQVqKtL7DAAA"}}, "unsigned": {"age_ts": 1570042225689}} H i> u J  s H qk@mBFoDT)}R' { P % y N # w L !  >g<e:iq*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!EfJcWhdjNARbuHYrqU:localhost:8800^c*Q!EfJcWhdjNARbuHYrqU:localhost:8800]b*Q!EfJcWhdjNARbuHYrqU:localhost:8800\a*Q!EfJcWhdjNARbuHYrqU:localhost:8800[`*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ;*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 :*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 9*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 8*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 7*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 6*Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800 *Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyEaTZElOkdURKbEXo:localhost:8800==*Q!EyEaTZElOkdURKbEXo:localhost:8800<<*Q!EyEaTZElOkdURKbEXo:localhost:8800;;*Q!EyEaTZElOkdURKbEXo:localhost:8800::*Q!EyEaTZElOkdURKbEXo:localhost:880099*Q!EyEaTZElOkdURKbEXo:localhost:880088*Q!EyEaTZElOkdURKbEXo:localhost:880077*Q!EyEaTZElOkdURKbEXo:localhost:880066*Q!EieRtaCFZJJCIOkRPp:localhost:8800uy*Q!EieRtaCFZJJCIOkRPp:localhost:8800tx*Q!EieRtaCFZJJCIOkRPp:localhost:8800sw*Q!EieRtaCFZJJCIOkRPp:localhost:8800rv*Q!EieRtaCFZJJCIOkRPp:localhost:8800qu*Q!EieRtaCFZJJCIOkRPp:localhost:8800pt*Q!EieRtaCFZJJCIOkRPp:localhost:8800os*Q!EieRtaCFZJJCIOkRPp:localhost:8800nr*Q!EieRtaCFZJJCIOkRPp:localhost:8800mq*Q!EieRtaCFZJJCIOkRPp:localhost:8800lp*Q!EieRtaCFZJJCIOkRPp:localhost:8800ko*Q!EfJcWhdjNARbuHYrqU:localhost:8800af*Q!EfJcWhdjNARbuHYrqU:localhost:8800`e*Q!EfJcWhdjNARbuHYrqU:localhost:8800_d -RM H C > 9 4/*|%w rmhc TQe!IGVHKYcSuxzVPlFHlj:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UT Qe !IGVHKYcSuxzVPlFHlj:localhost:8800$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcT Qe !IGVHKYcSuxzVPlFHlj:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgT Qe !IGVHKYcSuxzVPlFHlj:localhost:8800$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYT Qe !xhbvqJDfxMSsZPqvld:localhost:8800$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYT Qe !xhbvqJDfxMSsZPqvld:localhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5YTQe!xhbvqJDfxMSsZPqvld:localhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UATQe!xhbvqJDfxMSsZPqvld:localhost:8800$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6oTQe!xhbvqJDfxMSsZPqvld:localhost:8800$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5MTQe!xhbvqJDfxMSsZPqvld:localhost:8800$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4TQe!xhbvqJDfxMSsZPqvld:localhost:8800$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wTQe!xhbvqJDfxMSsZPqvld:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8oTQe!xhbvqJDfxMSsZPqvld:localhost:8800$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUTQe!AWfbViAZparIjmDaVT:localhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3poTQe!AWfbViAZparIjmDaVT:localhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5YknkTQe!AWfbViAZparIjmDaVT:localhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8T~Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0sT}Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIT|Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0T{Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwTzQe!OSHhtkGUjpUCkXwIhj:localhost:8800$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMTyQe!OSHhtkGUjpUCkXwIhj:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4TxQe!OSHhtkGUjpUCkXwIhj:localhost:8800$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UTwQe!AWfbViAZparIjmDaVT:localhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPETvQe!AWfbViAZparIjmDaVT:localhost:8800$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgTuQe!AWfbViAZparIjmDaVT:localhost:8800$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YTtQe!AWfbViAZparIjmDaVT:localhost:8800$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5MTsQe!AWfbViAZparIjmDaVT:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqATrQe!AWfbViAZparIjmDaVT:localhost:8800$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYTqQe!wnriPzXkIMmdTNoJKU:localhost:8800$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0TpQe!wnriPzXkIMmdTNoJKU:localhost:8800$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tREToQe!wnriPzXkIMmdTNoJKU:localhost:8800$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0sTnQe!wnriPzXkIMmdTNoJKU:localhost:8800$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFYTmQe!wnriPzXkIMmdTNoJKU:localhost:8800$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTcTlQe!wnriPzXkIMmdTNoJKU:localhost:8800$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIYTkQe!wnriPzXkIMmdTNoJKU:localhost:8800$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQTjQe!wnriPzXkIMmdTNoJKU:localhost:8800$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4TiQe!wnriPzXkIMmdTNoJKU:localhost:8800$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5MoThQe!wnriPzXkIMmdTNoJKU:localhost:8800$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22GwTgQe!wnriPzXkIMmdTNoJKU:localhost:8800$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNYTfQe!wnriPzXkIMmdTNoJKU:localhost:8800$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4  sX heQ$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "33", "stream_ordering": 233}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 11"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040474968, "hashes": {"sha256": "xmf1QO2C40KylZKX1nMc61quV9VVlFzPhmOxyJKVT0g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZktLC/ERAzgHVlW5TaXb6kM2ZQY1YRDQX2Luc7FtQ6DnreQ6oJ36lo37f87nlcr5t8gZ0eziHuBsG84/kl8sBg"}}, "unsigned": {"age_ts": 1570040474968}} geQ$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "32", "stream_ordering": 232}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 10"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040474594, "hashes": {"sha256": "kH7TlZFafb2iL6TfygvR6bBeI2kfghfVqdbn58a/Gn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UAGV/dybmOnG41jbAJUkAgvPB+fWIIcytYjI0JDCSxBSDIy0rfvZ8TMDUr+GCOo5QidQityBTdCFyKvvXaVgCg"}}, "unsigned": {"age_ts": 1570040474594}} feQ$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "31", "stream_ordering": 231}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040474145, "hashes": {"sha256": "glquuj1iUj+t2CHimWj9leFjY92YrFJAMqLwQbsV8Ek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HojfmIzCfBYJpDW+/C8fNlea0QdcI6sS+pO45GiU+Ip4odxhEPhBJEVlpRp21nJ6qYFF+NXg/lDOlK+KAflbDA"}}, "unsigned": {"age_ts": 1570040474145}} eeQ$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "30", "stream_ordering": 230}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 8"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040473618, "hashes": {"sha256": "AYpj1+wVlmWmcar706wP8w2NbJtShIpw3phraGMp4hI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nDBWs1Ip3/NUJ0RrODVckk2CNyq8P9JpTWxaXCmnbzHzz5Q5AoeQRtgjeOgYwo31tv1iNHSyKgqGrefw4rRyAw"}}, "unsigned": {"age_ts": 1570040473618}}  rV leQ$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "37", "stream_ordering": 237}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 15", "msgtype": "m.text"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040476961, "hashes": {"sha256": "Uy0kaADxDXyOojP4Bh7R7OTM8Xkv04Uc2dfzLSRXl+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MPKlpss2tHVXEqXfxSI2ws12bRAKt7omQkVV5L+pt8bQYo2OnUbnMKq+hZWzqYVAiq+XCDzciQGCYF9ey9vcAQ"}}, "unsigned": {"age_ts": 1570040476961}} keQ$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "36", "stream_ordering": 236}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 14"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040476185, "hashes": {"sha256": "q1adRLG5VqzGW6BDhnqnd1qoKrfxSRa3Oglzkp3xHPM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5nOwL1UP0mAwB+M7Dgdu0o/rVVCQ1gEp9zDki/TWktZHU+48/oQz8ZZriU1HO04fam3tBmtl1Jqz2a3nZiIhAw"}}, "unsigned": {"age_ts": 1570040476185}} jeQ$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "35", "stream_ordering": 235}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 13", "msgtype": "m.text"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040475735, "hashes": {"sha256": "f1Qg3xxq58zZeCO7MLwOC5+xT1XCivH9Vl7PqzSoaLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mzjb102MEJIe10vgXySBS1eNBHdFGfyri8GjKPV20BrOmr+VLkWASJcAP7OyDNnkNWi3gDRTk+d9NVNB1w1tBw"}}, "unsigned": {"age_ts": 1570040475735}} ieQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "34", "stream_ordering": 234}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 12", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040475320, "hashes": {"sha256": "afv9hQDpEthG39BsSQjuDfuaJ994q2JZwoeGVsj11rg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EeIfQz44peTTdBugfU27/InLFl2acAaQTfUMCsxtIP4hY9s5W/54jzfheS1UJwRa8rsWAyBjJ74/pBzZQwetCg"}}, "unsigned": {"age_ts": 1570040475320}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,13e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk 12e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo 11e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU 10e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY 1/e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201.e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK81-e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc1,e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1+e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1*e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1)e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ1(e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1'e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1&e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1%e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1$e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1#e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1"e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1!e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1 e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1 e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1 e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1 e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1 e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1 e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1~e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81}e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1|e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1{e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01ze$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1ye$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1xe$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41we$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1ve$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1ue$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1te$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1se$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1re$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1qe$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1pe$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01oe$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1ne$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1me$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1le$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1ke$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1je$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1ie$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4  rV peQ$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "41", "stream_ordering": 241}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 19", "msgtype": "m.text"}, "depth": 26, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040479953, "hashes": {"sha256": "bhhsNr64Ni+s+5dlb/51sdW5Dp4mFm6aaKcoScZuXaQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/flQ8b6MxFA/5yEXr+4km5hGKWVmyqxisw9SlrzL9sHAkDMzLcPwkHYnj2nFxbZIPTQ0UQXWgaZef2EtaHb3Dw"}}, "unsigned": {"age_ts": 1570040479953}} oeQ$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "40", "stream_ordering": 240}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 18"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040479552, "hashes": {"sha256": "QWwpe8mipNXv97tTTWUJydZh+Ny2zE2TRVsa67m0JSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XRhAEqFOaUg3C6fdmLPctxj1rSyMShu9xNAHUrb2OKaSAg9pmmrlBInT1Czs3SC/0VlgPXfLTT4Tj5cvGhFGCg"}}, "unsigned": {"age_ts": 1570040479552}} neQ$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "39", "stream_ordering": 239}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 17"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040478860, "hashes": {"sha256": "f8MZ9NqvJhjeLUTriq+GmcJaKr4KpjC1UdmGOhbLXIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WqbsUTYfZAzozYF05nG+j0hExMWZBi/z+cX6EE5FhfVPAuf24XTT6T7tXsDp5NMWU9Y3hI/qNloTogIIx8RTAg"}}, "unsigned": {"age_ts": 1570040478860}} meQ$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "38", "stream_ordering": 238}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 16"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040477602, "hashes": {"sha256": "t5fW/TfNb9w8H+R5h9sxDXs1X4n43z4od8CLo2LYOGw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KseyDkdIHCvkBsSORr3yZXFqGj0oY5ObijMxcWkR8B9ZrcutUyOra111nRqZcZVqhbOQlep32xIgytKX337Cg"}}, "unsigned": {"age_ts": 1570040477602}} =_ w_G/lA)UiQ9!% >'Z- y L  l ?  [ /  w I  c 7 Q#m?Y+uGYk=ocalhost:=.1@36:localhost:88001@35:localhost:8800Y7q@_astest-01create-0-20191002_181700:localhost:880007@admin:localhost:8800U1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:88001@29:localhost:88001@28:localhost:88001@27:localhost:88001@26:localhost:88001@25:localhost:88001@24:localhost:88001@23:localhost:88001@22:localhost:8800.1@21:localhost:88001@20:localhost:88001@19:localhost:88001@18:localhost:88001@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:88001@13:localhost:88001@12:localhost:88001@11:localhost:8800-]@anon-20191002_181700-154:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-152:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-150:localhost:8800+[@anon-20191002_181700-14:localhost:8800"-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-140:localhost:8800+[@anon-20191002_181700-13:localhost:8800 -]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-131:localhost:8800-]@anon-20191002_181700-130:localhost:8800+[@anon-20191002_181700-12:localhost:8800!-]@anon-20191002_181700-129:localhost:8800-]@anon-20191002_181700-128:localhost:8800-]@anon-20191002_181700-127:localhost:8800-]@anon-20191002_181700-126:localhost:8800-]@anon-20191002_181700-125:localhost:8800-]@anon-20191002_181700-124:localhost:8800-]@anon-20191002_181700-123:localhost:8800-]@anon-20191002_181700-122:localhost:8800-]@anon-20191002_181700-121:localhost:8800-]@anon-20191002_181700-120:localhost:8800+[@anon-20191002_181700-11:localhost:8800-]@anon-20191002_181700-119:localhost:8800-]@anon-20191002_181700-118:localhost:8800-]@anon-20191002_181700-117:localhost:8800,]@anon-20191002_181700-116:localhost:8800,]@anon-20191002_181700-115:localhost:8800~,]@anon-20191002_181700-114:localhost:8800},]@anon-20191002_181700-113:localhost:8800|,]@anon-20191002_181700-112:localhost:8800{,]@anon-20191002_181700-110:localhost:8800z+[@anon-20191002_181700-10:localhost:8800,]@anon-20191002_181700-109:localhost:8800y,]@anon-20191002_181700-108:localhost:8800x,]@anon-20191002_181700-107:localhost:8800w,]@anon-20191002_181700-106:localhost:8800v,]@anon-20191002_181700-104:localhost:8800u,]@anon-20191002_181700-103:localhost:8800s,]@anon-20191002_181700-102:localhost:8800t,]@anon-20191002_181700-101:localhost:8800q,]@anon-20191002_181700-100:localhost:8800r/@9:localhost:8800/@8:localhost:8800/@7:localhost:8800/@6:localhost:8800/@5:localhost:8800/@4:localhost:8800/@3:localhost:8800/@2:localhost:8800/@1:localhost:88001@10:localhost:8800/@0:localhost:8800>;@02login:localhost:88002k @01register-user-20191002_181700:localhost:8800 K3}O!vHd6 R $ l >  Z , t F  e 7 Q#m?Y+uGai; W)-]@anon-20191002_181700-164:localhost:8800-]@anon-20191002_181700-163:localhost:8800-]@anon-20191002_181700-162:localhost:8800-]@anon-20191002_181700-161:localhost:8800-]@anon-20191002_181700-160:localhost:8800+[@anon-20191002_181700-15:localhost:8800#-]@anon-20191002_181700-159:localhost:8800-]@anon-20191002_181700-158:localhost:8800-]@anon-20191002_181700-157:localhost:8800-]@anon-20191002_181700-156:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-225:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-223:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-221:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800)-]@anon-20191002_181700-219:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800+[@anon-20191002_181700-20:localhost:8800(-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800*Y@anon-20191002_181700-1:localhost:8800+[@anon-20191002_181700-19:localhost:8800'-]@anon-20191002_181700-199:localhost:8800-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-196:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800+[@anon-20191002_181700-18:localhost:8800&-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800+[@anon-20191002_181700-17:localhost:8800%-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800$-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-168:localhost:8800-]@anon-20191002_181700-167:localhost:8800-]@anon-20191002_181700-165:localhost:8800 =_ w_G/lA)UiQ9!% >'Z- y L  l ?  [ /  w I  c 7 Q#m?Y+uGYk=ocalhost:=.1@36:localhost:88001@35:localhost:8800Y7q@_astest-01create-0-20191002_181700:localhost:880007@admin:localhost:8800U1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:88001@29:localhost:88001@28:localhost:88001@27:localhost:88001@26:localhost:88001@25:localhost:88001@24:localhost:88001@23:localhost:88001@22:localhost:8800.1@21:localhost:88001@20:localhost:88001@19:localhost:88001@18:localhost:88001@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:88001@13:localhost:88001@12:localhost:88001@11:localhost:8800-]@anon-20191002_181700-154:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-152:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-150:localhost:8800+[@anon-20191002_181700-14:localhost:8800"-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-140:localhost:8800+[@anon-20191002_181700-13:localhost:8800 -]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-131:localhost:8800-]@anon-20191002_181700-130:localhost:8800+[@anon-20191002_181700-12:localhost:8800!-]@anon-20191002_181700-129:localhost:8800-]@anon-20191002_181700-128:localhost:8800-]@anon-20191002_181700-127:localhost:8800-]@anon-20191002_181700-126:localhost:8800-]@anon-20191002_181700-125:localhost:8800-]@anon-20191002_181700-124:localhost:8800-]@anon-20191002_181700-123:localhost:8800-]@anon-20191002_181700-122:localhost:8800-]@anon-20191002_181700-121:localhost:8800-]@anon-20191002_181700-120:localhost:8800+[@anon-20191002_181700-11:localhost:8800-]@anon-20191002_181700-119:localhost:8800-]@anon-20191002_181700-118:localhost:8800-]@anon-20191002_181700-117:localhost:8800,]@anon-20191002_181700-116:localhost:8800,]@anon-20191002_181700-115:localhost:8800~,]@anon-20191002_181700-114:localhost:8800},]@anon-20191002_181700-113:localhost:8800|,]@anon-20191002_181700-112:localhost:8800{,]@anon-20191002_181700-110:localhost:8800z+[@anon-20191002_181700-10:localhost:8800,]@anon-20191002_181700-109:localhost:8800y,]@anon-20191002_181700-108:localhost:8800x,]@anon-20191002_181700-107:localhost:8800w,]@anon-20191002_181700-106:localhost:8800v,]@anon-20191002_181700-104:localhost:8800u,]@anon-20191002_181700-103:localhost:8800s,]@anon-20191002_181700-102:localhost:8800t,]@anon-20191002_181700-101:localhost:8800q,]@anon-20191002_181700-100:localhost:8800r/@9:localhost:8800/@8:localhost:8800/@7:localhost:8800/@6:localhost:8800/@5:localhost:8800/@4:localhost:8800/@3:localhost:8800/@2:localhost:8800/@1:localhost:88001@10:localhost:8800/@0:localhost:8800>;@02login:localhost:88002k @01register-user-20191002_181700:localhost:8800 K3}O!vHd6 R $ l >  Z , t F  e 7 Q#m?Y+uGai; W)-]@anon-20191002_181700-164:localhost:8800-]@anon-20191002_181700-163:localhost:8800-]@anon-20191002_181700-162:localhost:8800-]@anon-20191002_181700-161:localhost:8800-]@anon-20191002_181700-160:localhost:8800+[@anon-20191002_181700-15:localhost:8800#-]@anon-20191002_181700-159:localhost:8800-]@anon-20191002_181700-158:localhost:8800-]@anon-20191002_181700-157:localhost:8800-]@anon-20191002_181700-156:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-225:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-223:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-221:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800)-]@anon-20191002_181700-219:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800+[@anon-20191002_181700-20:localhost:8800(-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800*Y@anon-20191002_181700-1:localhost:8800+[@anon-20191002_181700-19:localhost:8800'-]@anon-20191002_181700-199:localhost:8800-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-196:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800+[@anon-20191002_181700-18:localhost:8800&-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800+[@anon-20191002_181700-17:localhost:8800%-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800$-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-168:localhost:8800-]@anon-20191002_181700-167:localhost:8800-]@anon-20191002_181700-165:localhost:8800 V`8pH X 0  j B  | V 0  h @  x P ( `8pH X0jBzR*d<tL$\4 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 %M$15700426753WBESe:localhost:8829 'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 'Q$1570042664163IAHXd:localhost:8800 'Q$1570042663162sQrEh:localhost:8800 'Q$1570042662161lGrSW:localhost:8800 'Q$1570042662160SrmtM:localhost:8800 'Q$1570042661159xQwJK:localhost:8800 'Q$1570042661158igwHF:localhost:8800 'Q$1570042660157svDcU:localhost:8800 'Q$1570042660156wxhvl:localhost:8800 'Q$1570042659155mEUeP:localhost:8800 'Q$1570042659154Fztdf:localhost:8800 'Q$1570042658153tmCYJ:localhost:8800 'Q$1570042658152btGpA:localhost:8800 'Q$1570042657151cITOZ:localhost:8800 'Q$1570042656150UsLRz:localhost:8800 'Q$1570042656149JNVWR:localhost:8800 ~   4rteQ_s$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 245}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M"], "type": "m.room.join_rules", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040485096, "hashes": {"sha256": "5NUS74J63xZLLbqLeE/G71ITToJYXVTqJjswkDuyXCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OAU5idwBWLMOETKXJqfcuHgXrwkvNm4QLyNJWzgX44AuAlfG0RbsC2MXZl6C8Wh0HDU46fZl2FMCCG4S8boAAQ"}}, "unsigned": {"age_ts": 1570040485096}}hseQ__$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 244}{"auth_events": ["$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "type": "m.room.power_levels", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"users": {"@anon-20191002_181700-77:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040484463, "hashes": {"sha256": "AKH0bMRE+XPxrAmtc6wW3jLix+k0R1VPq7ZfC0FzSSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H1L88DsAz+CwGI5nIps1DebLNDvnKCVsV4hGmqISadqkTnEYuJjvii29d2sl0jaEIsyGn98QGc+m7rAhuhc9AA"}}, "unsigned": {"age_ts": 1570040484463}}rreQ_s$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 243}{"auth_events": ["$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY"], "prev_events": ["$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY"], "type": "m.room.member", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-77", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-77:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040483583, "hashes": {"sha256": "eDjF9DNlevTkS81HG+ARcc0EsXfQ9ldMdxWjKPOa66M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tVhibvkJLuWJF1XRO+j14RVMv6goFxzSaKqxt2Yv19rAIQxF5OdwAavW0cIkKYefbKtuMgs4xbrtMCbjm+LnCA"}}, "unsigned": {"age_ts": 1570040483583}}fqeQ_[$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 242}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-77:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040480961, "hashes": {"sha256": "4E0Jw5/6sQIQanKGrnAJTbfyNjXq7SbRjo+lverepcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1BTAr2GgR0BlOCtgvea+w/KVvkeZ8uTAizu9TJZQEj1KijVafK48eY7W7caOojeBuSbi+eXMv9Y+n13J9L0TBQ"}}, "unsigned": {"age_ts": 1570040480961}} a`8pH X 0  j B  | V 0  h @  x P ( `8pH X0jBzR*d<tL$\4 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570042725233SjCnf:localhost:8800 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 %M$15700426753WBESe:localhost:8829 'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 'Q$1570042664163IAHXd:localhost:8800 'Q$1570042663162sQrEh:localhost:8800 'Q$1570042662161lGrSW:localhost:8800 'Q$1570042662160SrmtM:localhost:8800 'Q$1570042661159xQwJK:localhost:8800 'Q$1570042661158igwHF:localhost:8800 'Q$1570042660157svDcU:localhost:8800 'Q$1570042660156wxhvl:localhost:8800 'Q$1570042659155mEUeP:localhost:8800 'Q$1570042659154Fztdf:localhost:8800 'Q$1570042658153tmCYJ:localhost:8800 'Q$1570042658152btGpA:localhost:8800 'Q$1570042657151cITOZ:localhost:8800 'Q$1570042656150UsLRz:localhost:8800 'Q$1570042656149JNVWR:localhost:8800 c_ l  x , *>VZc e)Q [$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Ym.room.aliases!xhbvqJDfxMSsZPqvld:localhost:8800mm7@anon-20191002_181700-81:localhost:8800 e)Q [$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAm.room.aliases!xhbvqJDfxMSsZPqvld:localhost:8800mmmi@anon-20191002_181700-81:localhost:8800+e?Q [$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6om.room.history_visibility!xhbvqJDfxMSsZPqvld:localhost:8800mm@anon-20191002_181700-81:localhost:8800#e/Q [$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5Mm.room.join_rules!xhbvqJDfxMSsZPqvld:localhost:8800mem"@anon-20191002_181700-81:localhost:8800(e9Q [$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4m.room.canonical_alias!xhbvqJDfxMSsZPqvld:localhost:8800mm@anon-20191002_181700-81:localhost:8800%e3Q [$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wm.room.power_levels!xhbvqJDfxMSsZPqvld:localhost:8800mnmg@anon-20191002_181700-81:localhost:8800e'Q [$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8om.room.member!xhbvqJDfxMSsZPqvld:localhost:8800m֟mX@anon-20191002_181700-81:localhost:8800 e'Q  [$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUm.room.create!xhbvqJDfxMSsZPqvld:localhost:8800mʤm@anon-20191002_181700-81:localhost:8800 e)Q [ $WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3pom.room.aliases!AWfbViAZparIjmDaVT:localhost:8800 mm@anon-20191002_181700-77:localhost:8800 e)Q [$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknkm.room.aliases!AWfbViAZparIjmDaVT:localhost:8800mm @anon-20191002_181700-77:localhost:8800 e)Q [$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8m.room.aliases!AWfbViAZparIjmDaVT:localhost:8800mDm@anon-20191002_181700-77:localhost:8800 ~e)Q [$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0sm.room.aliases!OSHhtkGUjpUCkXwIhj:localhost:8800mpm3@anon-20191002_181700-79:localhost:8800+}e?Q [$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIm.room.history_visibility!OSHhtkGUjpUCkXwIhj:localhost:8800mm@anon-20191002_181700-79:localhost:8800#|e/Q [$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0m.room.join_rules!OSHhtkGUjpUCkXwIhj:localhost:8800m8m @anon-20191002_181700-79:localhost:8800({e9Q [$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwm.room.canonical_alias!OSHhtkGUjpUCkXwIhj:localhost:8800mmh@anon-20191002_181700-79:localhost:8800%ze3Q [$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMm.room.power_levels!OSHhtkGUjpUCkXwIhj:localhost:8800mm@anon-20191002_181700-79:localhost:8800ye'Q [$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4m.room.member!OSHhtkGUjpUCkXwIhj:localhost:8800mm~@anon-20191002_181700-79:localhost:8800x e'Q  [$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9Um.room.create!OSHhtkGUjpUCkXwIhj:localhost:8800mm@anon-20191002_181700-79:localhost:8800 we)Q [$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEm.room.aliases!AWfbViAZparIjmDaVT:localhost:8800mWm@anon-20191002_181700-77:localhost:8800+ve?Q [$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgm.room.history_visibility!AWfbViAZparIjmDaVT:localhost:8800m9m@anon-20191002_181700-77:localhost:8800#ue/Q [$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Ym.room.join_rules!AWfbViAZparIjmDaVT:localhost:8800mm@anon-20191002_181700-77:localhost:8800%te3Q [$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5Mm.room.power_levels!AWfbViAZparIjmDaVT:localhost:8800mom@anon-20191002_181700-77:localhost:8800se'Q [$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAm.room.member!AWfbViAZparIjmDaVT:localhost:8800mm@anon-20191002_181700-77:localhost:8800r e'Q  [$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYm.room.create!AWfbViAZparIjmDaVT:localhost:8800mm@anon-20191002_181700-77:localhost:8800 q\vN&^f> v N & ^ 6  n F  X 0  h @ zR*b:k[3 C`8I!6{nFq(&O$157004274310jCQYA:localhost:8829 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800  'Q$1570043152260dkyqc:localhost:8800 y&O$157004274411xArrT:localhost:8829 |'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 |'Q$1570043153262hRyOa:localhost:8800 {'Q$1570043152261Skczg:localhost:8800 z'Q$1570043151259knbjg:localhost:8800 x'Q$1570043150258cdaXl:localhost:8800 w'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570042725233SjCnf:localhost:8800 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 2%M$15700427439Hwxyi:localhost:8829 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 V`8pH X 0  j B  | V 0  h @  x P ( `8pH X0jBzR*d<tL$\4 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 %M$15700426753WBESe:localhost:8829 'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 'Q$1570042664163IAHXd:localhost:8800 'Q$1570042663162sQrEh:localhost:8800 'Q$1570042662161lGrSW:localhost:8800 'Q$1570042662160SrmtM:localhost:8800 'Q$1570042661159xQwJK:localhost:8800 'Q$1570042661158igwHF:localhost:8800 'Q$1570042660157svDcU:localhost:8800 'Q$1570042660156wxhvl:localhost:8800 'Q$1570042659155mEUeP:localhost:8800 'Q$1570042659154Fztdf:localhost:8800 'Q$1570042658153tmCYJ:localhost:8800 'Q$1570042658152btGpA:localhost:8800 'Q$1570042657151cITOZ:localhost:8800 'Q$1570042656150UsLRz:localhost:8800 'Q$1570042656149JNVWR:localhost:8800 ~  yrxeQ_s$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 249}{"auth_events": ["$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U"], "prev_events": ["$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U"], "type": "m.room.member", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-79", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-79:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040489442, "hashes": {"sha256": "uF1IYNOOVz6x+87ONdafc76Xuhd3ZxU5D9fOgWZYiXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZX/WggytwK9BYeLlslGe535CH9LtoPTVJ1CWX/G3ZHbjFpCFP2aL9NBGK9sTrr8E/35hRph1+nXUVBZJyJP8CA"}}, "unsigned": {"age_ts": 1570040489442}}fweQ_[$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 248}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-79:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040488725, "hashes": {"sha256": "bFu/C6Wf+08p2lbyTPHwFF6NRwNco1CYKgOBgWeQOYc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nLYYbZuraafAE4bkNsVqxL3AQlxo7ck3QpQQSxXx6LyjojcRSvrk36ZW1BwcyquxvHMOzysiA034DK595ElSAA"}}, "unsigned": {"age_ts": 1570040488725}} veQ_)$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 247}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040487511, "hashes": {"sha256": "Yj7iBvSOqmXa3RrKTc2hH6S30mOqqVeTEq9V9E4h6tw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E2jdjldDogBesiKBFSOYWtjCZe4XoD1u5VGSZPKowL354b+2UPwyYkURsvSvL323NhklQ2IIiw3Lt5q3zpsrAA"}}, "unsigned": {"age_ts": 1570040487511}}ueQ_$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 246}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y"], "type": "m.room.history_visibility", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040485945, "hashes": {"sha256": "6XKnsMp2UIzs8nNeCAC/9KXWHnooaisc/5B30GLIDcQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CHbfisR00LB+GWYosd9p2cVIDMp83ZsDDCCgqq1zyOCTh+4i5xSuwa1d+YwdVNPVLuV6MHdCIP6p+TJK/WRYAw"}}, "unsigned": {"age_ts": 1570040485945}} #|t l n - h ' b !  ` XP>d\UMFeeQ$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800 XeeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800 KeeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800܁eeQ$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800ueeQ$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800 eeQ$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800*eeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800 EeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800eeQ$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800&eeQ$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800 _3QQ$29:localhost:42455$1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800qeeQ$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y!laUExtszUaoCpZoyEq:localhost:8800 >111$2:localhost:42455$1:localhost:42455!0:localhost:42455 )@331$28:localhost:42455$27:localhost:42455!6:localhost:42455 @331$27:localhost:42455$26:localhost:42455!6:localhost:42455 @331$26:localhost:42455$25:localhost:42455!6:localhost:42455 @331$25:localhost:42455$24:localhost:42455!6:localhost:42455 eeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800@331$24:localhost:42455$23:localhost:42455!6:localhost:42455 @331$23:localhost:42455$22:localhost:42455!6:localhost:42455 eeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800 @331$22:localhost:42455$21:localhost:42455!6:localhost:42455 @331$21:localhost:42455$20:localhost:42455!6:localhost:42455 @331$20:localhost:42455$19:localhost:42455!6:localhost:42455 eeQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800eeQ$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800 eeQ$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800 ~z v r n j fb^ZVRNJFueeQ$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800teeQ$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800seeQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800reeQ$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800qeeQ$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800peeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800oeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800neeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800meeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800leeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800keeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800jeeQ$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800ieeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800heeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800geeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800feeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800eeeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800deeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800ceeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800beeQ$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800aeeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800`eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800_eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800^eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800]eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800\eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800[eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800ZeeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800YeeQ$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800XeeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800    |eQ_$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 253}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0"], "type": "m.room.history_visibility", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040491938, "hashes": {"sha256": "T8+xvKeq4FIYpabme1ppkyeNg2fK8SRy3jZJouXkBME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "spyDiy4tRhJAa7SGepSY5V7//7ij3FhDOinE8phpFTneDFz8Fni2GI/nCH8SpMMuDaJx1kuWZu9dTzSjunNCBw"}}, "unsigned": {"age_ts": 1570040491938}}r{eQ_s$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 252}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw"], "type": "m.room.join_rules", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040491320, "hashes": {"sha256": "BXZvTxfb4LV2qiq2SJottztUIEdasHcCSv0XecRdty0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbYO2x6YGJzaEp5zDZbEQ5iZcvEB9PJWDum7EQLtlmp35Vi6OJGqPAztimYeQlluAI2xZAST5dAdo0bojrYuCQ"}}, "unsigned": {"age_ts": 1570040491320}}zeQ_$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 251}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM"], "type": "m.room.canonical_alias", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"alias": "#__ANON__-5:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040490661, "hashes": {"sha256": "CydaFqDKme0FmFijzI7rXMW+XhBQ0x3R734awLNWhnk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zBb5P8ipygzTXEJEahMvOsAdtVBXkPs6mQH25hH8fO62vQRf9c0GdKc2YSxERQASP9zOA92R+q9PngNGRJxyAA"}}, "unsigned": {"age_ts": 1570040490661}}hyeQ__$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 250}{"auth_events": ["$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "type": "m.room.power_levels", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"users": {"@anon-20191002_181700-79:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040489954, "hashes": {"sha256": "bxHWd3LWFOwGvKhKcoVvbDoM8S2vXtFzYVwgCUShdc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b6a5FTz0pcUoOx3YHo5DFgKd6zp2bBFdcwJg3e5cWrbTjaNHZOLX22mY8HhFvV1g2E+0ET+jtSThyjJSl7TNCA"}}, "unsigned": {"age_ts": 1570040489954}} a} { y w u sqomkigeca~4eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~3eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~2eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~1eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~0eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~/eeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~.eeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~-eeQ$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~,eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~+eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~*eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~)eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~(eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~'eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~&eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~%eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~$eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~#eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~"eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~!eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~ eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800 mG`4fX,A;9 ]1d9CG L P  T  X  \ `"e+1%@29:localhost:8800guest_devicemN+1%@25:localhost:8800guest_devicem؍+1%@24:localhost:8800guest_devicem+1%@22:localhost:8800guest_devicem+1%@21:localhost:8800guest_devicemd+1%@20:localhost:8800guest_devicemN+1%@19:localhost:8800guest_devicem1+1%@18:localhost:8800guest_devicemF+1%@17:localhost:8800guest_devicemE+1%@16:localhost:8800guest_devicem+1%@15:localhost:8800guest_devicem+1%@14:localhost:8800guest_devicem+1%@12:localhost:8800guest_devicem/Z+1%@11:localhost:8800guest_devicem+a(/!@8:localhost:8800SPYUTHBEKDm2*/%@8:localhost:8800guest_devicem\*/%@7:localhost:8800guest_devicemy*/%@6:localhost:8800guest_devicemY?*/%@5:localhost:8800guest_devicem8*/%@4:localhost:8800guest_devicem"*/%@3:localhost:8800guest_devicem*/%@2:localhost:8800guest_devicem޵*/%@1:localhost:8800guest_devicemȫ+1%@13:localhost:8800guest_devicemP<+1%@23:localhost:8800guest_devicem)+1%@27:localhost:8800guest_devicem+1%@26:localhost:8800guest_devicemf+1%@28:localhost:8800guest_devicem0,7!@admin:localhost:8800GMJMIKRCODmc++1%@36:localhost:8800guest_devicem¨+1%@35:localhost:8800guest_devicem‰+1%@34:localhost:8800guest_devicems+1%@33:localhost:8800guest_devicem3 +1%@32:localhost:8800guest_devicem+1%@31:localhost:8800guest_devicem+1%@30:localhost:8800guest_devicemq>]!@anon-20191002_181700-134:localhost:8800PCQACQPKQAm3q>]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRTm&p>]!@anon-20191002_181700-131:localhost:8800SOOHJVIHORmHo=[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQm >]!@anon-20191002_181700-129:localhost:8800PFGGATLHBEmn>]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLYm m>]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUImul>]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXFmk>]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQmcj>]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJmli>]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQmlh>]!@anon-20191002_181700-122:localhost:8800KKXSFRABDEm_f>]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRMm_g>]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGSm9e?[%@anon-20191002_181700-11:localhost:8800login_devicem =[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFAm? >]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCLmd>]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVGmc>]!@anon-20191002_181700-117:localhost:8800AOWWBWACSKmb>]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZmBa>]!@anon-20191002_181700-115:localhost:8800XPQYONRAEBmg`>]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIHm-_>]!@anon-20191002_181700-113:localhost:8800DEIMBREIQTm^>]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDEmɸ]>]!@anon-20191002_181700-110:localhost:8800LARRQIDFNHmq\=[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQGm>]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAAm[>]!@anon-20191002_181700-108:localhost:8800KLPFELDKEHm}Z>]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCWmpY>]!@anon-20191002_181700-106:localhost:8800SACQZSUOIFm[PX>]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAFmCW>]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUIm>V>]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVLm)U>]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMGmS>]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHGm"eT 7SL PDG I I I K K K K K K SS?]!@anon-20191002_181700-199:localhost:8800UANUDVZWCSm<>]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLIm^z>]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYHmy>]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKYmx>]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQmw>]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDUmv>]!@anon-20191002_181700-140:localhost:8800OLUEHITWUAmLu>]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXSmjt>]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQmds?]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZm?]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZm?]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDLmh?]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRDmh?]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYAmQ?]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJm6 ?]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCMm}?]!@anon-20191002_181700-191:localhost:8800CZZXBALTJTm?]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZm?]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJm5?]!@anon-20191002_181700-188:localhost:8800HQVPFKSROBm?]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFFm_?]!@anon-20191002_181700-186:localhost:8800MCDWETOPHNm2%?]!@anon-20191002_181700-185:localhost:8800VORURBUNEEmU?]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZm?]!@anon-20191002_181700-183:localhost:8800PNPQZSANHGmG?]!@anon-20191002_181700-182:localhost:8800TONQTGLEJVm?]!@anon-20191002_181700-181:localhost:8800EXTONIIZTHm)?]!@anon-20191002_181700-179:localhost:8800LJJECQVQQOm?]!@anon-20191002_181700-178:localhost:8800RLQRIRERLRm?]!@anon-20191002_181700-177:localhost:8800HOVRIDACJIm ?]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMAm\?]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPWmV?]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQWmH?]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTYm1B?]!@anon-20191002_181700-170:localhost:8800SULWIONTNXm'=[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTFm?]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFRmµ?]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWWm?]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZm?]!@anon-20191002_181700-165:localhost:8800YDADSUNIXEmf?]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJmE?]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWLm'?]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXFm ?]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKNm?]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUDm=[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOGm ?]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAVm?]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBDm?]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGmqh>]!@anon-20191002_181700-153:localhost:8800RAWLINNCFAm`y>]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYGmKN~>]!@anon-20191002_181700-151:localhost:8800OZBCDWREHRm=}>]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUMm/|=[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOWmo >]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGMmf{ "'@ b x   4 Xn 0TQgs.opQ? e!TleKOyAElrpgyyrAQA:localhost:8800m.room.history_visibility$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUgoQ/ e!TleKOyAElrpgyyrAQA:localhost:8800m.room.join_rules$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8oglnQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8imQ3 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.power_levels$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ lQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-84:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMckQ' e!TleKOyAElrpgyyrAQA:localhost:8800m.room.create$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsrjQ))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08riQ))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA hQ'[e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgrgQ))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMofQ? e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibility$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkgeQ/ e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rules$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsldQ9 e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_alias$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UicQ3 e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc bQ'[e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgcaQ' e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.create$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYl`Q9 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYr_Q))e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Yr^Q))e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAo]Q? e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6og\Q/ e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rules$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5Ml[Q9 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4iZQ3 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w YQ'[e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8ocXQ' e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.create$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUrWQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3porVQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5YknkrUQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8lTQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$TChcbvxgUyPUybeHMi0Q0-C2AdPwC0BNACooTs5ZPmslSQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$mFqN6ZQmnheRDWnDa9-KZgWEyNrbvnGGVcQ7dEPlkAIrRQ))e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0soQQ? e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibility$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIgPQ/ e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rules$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0lOQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw H p = io(+1\y 4D  ggTeQ3 $8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels SeQ'[$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800joinaReQ' $wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.createpPeQ))$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800mOeQ? $6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibilityeNeQ/ $XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rulesjQeQ9 $PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliasgLeQ3 $KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels KeQ'[$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800joinaJeQ' $R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800m.room.createpIeQ))$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800jEeQ9 $Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_aliasgDeQ3 $SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levels CeQ'[$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800joinaBeQ' $ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.createm@eQ? $as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibilitye?eQ/ $jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rulesg>eQ3 $-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levelsjUeQ9 $4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_alias =eQ'[$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800joina<eQ' $Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800m.room.createp;eQ))$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800m:eQ? $PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibilitye9eQ/ $55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rulesj8eQ9 $vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_aliaspHeQ))$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800mGeQ? $Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibilityeFeQ/ $m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rules  kzmeQ_i$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 257}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800", "#__ANON__-8:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040496010, "hashes": {"sha256": "lZxwFEiFxxwnqZ7jvlw95lk/eqf0MXG7ngtAJKfy2TM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HyzZc+vtRanrz3RB0ih9AobgQOy71S0Rlg2ITIPsGR233hkZT0IQDbg9czkrF+OJHuLbUYWssF6H1/zBy+2SDQ"}}, "unsigned": {"age_ts": 1570040496010, "replaces_state": "$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk"}}OeQ_-$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 256}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040495023, "hashes": {"sha256": "H+qbzvKl54s1vqx2OyX0RjZxxkOSmWu6VAtfSD8yN7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zZczk6nqw0J2VNrYdaHD17oRJoP6LFhz/up6n0a5VFJ8lAaHsv/40jTeAy5NWNjEuCfSgiE1YYARThWBLOlHAQ"}}, "unsigned": {"age_ts": 1570040495023, "replaces_state": "$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8"}}m~eQ_i$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 255}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800", "#__ANON__-6:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040494404, "hashes": {"sha256": "yZX0rTHIr0HAD/k8Z19iRQ+DcW/2Tg0pwA1hLwJ6JW8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SgWLGJn2ex6Wurb/xRifUmEnhMtNfY1MYHhUkS8Sb1agKgdkJXvbLPBpumf54i3WFtlFAY51P9LPgqU7UUPHAA"}}, "unsigned": {"age_ts": 1570040494404, "replaces_state": "$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE"}}}eQ_1$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 254}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI"], "type": "m.room.aliases", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"aliases": ["#__ANON__-5:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040493424, "hashes": {"sha256": "+6jfBHo7c3R9yKg5PzOWxGnncFC4aajUKMc0tzcXb8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KlCI+P44OK1ohGyTZxCEPZSd8XIjJUf7L1/GVsU0MHWEV5IqnGIa65dexZMiTSTnbDCQIN9wUFsDi1TZvhWWBA"}}, "unsigned": {"age_ts": 1570040493424}} t5 l d \ T LE=-|%`eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800 ]eeQ$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800 l@331$37:localhost:42455$36:localhost:42455!8:localhost:42455 eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800 J@331$33:localhost:42455$32:localhost:42455!7:localhost:42455 eeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800yeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800jeeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800eeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800eeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800ځeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800'eeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800oeeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800eeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800JeeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800 *eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800H SsDY* p A  Y + o @  U & j ; P!e6zK`1uF[,qBW(.Q$1570043377301OraEa:lo.Q$1570043477326hyTqo:localhost:8800sha256 .Q$1570043476325vnEPO:localhost:8800sha256 .Q$1570043468324DLhaB:localhost:8800sha256 .Q$1570043429322ZfcNc:localhost:8800sha256 .Q$1570043428321klTqJ:localhost:8800sha256 .Q$1570043428320JDiOD:localhost:8800sha256 .Q$1570043426319TNjnu:localhost:8800sha256 .Q$1570043425318lLfNb:localhost:8800sha256 .Q$1570043392317hujur:localhost:8800sha256 .Q$1570043391316OJaBO:localhost:8800sha256 ~.Q$1570043388312YDkJu:localhost:8800sha256 y-O$157004338812XhwjX:localhost:8829sha256 z.Q$1570043387311DGzYi:localhost:8800sha256 x.Q$1570043386310bGMNl:localhost:8800sha256 w.Q$1570043385309imdbl:localhost:8800sha256 v.Q$1570043384308gPogh:localhost:8800sha256 u.Q$1570043383307bhuDV:localhost:8800sha256 t.Q$1570043382306WhWIU:localhost:8800sha256 s.Q$1570043380304caenp:localhost:8800sha256 r.Q$1570043379303bCgUn:localhost:8800sha256 q.Q$1570043378302mKBGD:localhost:8800sha256 p.Q$1570043377301OraEa:localhost:8800sha256 o.Q$1570043377300CLPUi:localhost:8800sha256 n.Q$1570043375299fbyXJ:localhost:8800sha256 m.Q$1570043374298UIMFg:localhost:8800sha256 l.Q$1570043373297SOjrf:localhost:8800sha256 k.Q$1570043372296yAiBq:localhost:8800sha256 j.Q$1570043371295coDXo:localhost:8800sha256 i.Q$1570043369294rquKy:localhost:8800sha256 h.Q$1570043369293ssSMv:localhost:8800sha256 g.Q$1570043368292FAoRb:localhost:8800sha256 f.Q$1570043367291AEdax:localhost:8800sha256 e.Q$1570043366290YSCqz:localhost:8800sha256 d.Q$1570043364289XIEhE:localhost:8800sha256 c.Q$1570043364288SCpzq:localhost:8800sha256 b.Q$1570043363287eSyun:localhost:8800sha256 a.Q$1570043362286KwXMK:localhost:8800sha256 `.Q$1570043361285xsPbY:localhost:8800sha256 _.Q$1570043354284IVfTL:localhost:8800sha256 Y.Q$1570043353283ubEdk:localhost:8800sha256 X.Q$1570043352282iTcSU:localhost:8800sha256 W.Q$1570043351281XHPOP:localhost:8800sha256 V.Q$1570043350280ydSwy:localhost:8800sha256 U.Q$1570043347278WlNld:localhost:8800sha256 S.Q$1570043346277FsKPl:localhost:8800sha256 R.Q$1570043346276qTXUF:localhost:8800sha256 Q.Q$1570043345275UDVPY:localhost:8800sha256 P.Q$1570043344274cabjv:localhost:8800sha256 O.Q$1570043341273LsXNn:localhost:8800sha256 N.Q$1570043198272DGmin:localhost:8800sha256 .Q$1570043195270GcoLc:localhost:8800sha256 .Q$1570043195269hcCzg:localhost:8800sha256 .Q$1570043194268zlNeZ:localhost:8800sha256 .Q$1570043193267ZyDyW:localhost:8800sha256 .Q$1570043192266CXqej:localhost:8800sha256 .Q$1570043191265cqITi:localhost:8800sha256 .Q$1570043154263raEaa:localhost:8800sha256 .Q$1570043153262hRyOa:localhost:8800sha256 .Q$1570043152261Skczg:localhost:8800sha256 .Q$1570043152260dkyqc:localhost:8800sha256 .Q$1570043151259knbjg:localhost:8800sha256 .Q$1570043150258cdaXl:localhost:8800sha256 -O$157004274411xArrT:localhost:8829sha256 ,M$15700427439Hwxyi:localhost:8829sha256 -O$157004274310jCQYA:localhost:8829sha256 .Q$1570042742256IYRor:localhost:8800sha256 .Q$1570042742255yQzPA:localhost:8800sha256 .Q$1570042741254DKIYz:localhost:8800sha256 .Q$1570042740253GkWgu:localhost:8800sha256 .Q$1570042739252bWghU:localhost:8800sha256 .Q$1570042738251iukAg:localhost:8800sha256 .Q$1570042737250jmxWx:localhost:8800sha256 ,M$15700427368TlZQs:localhost:8829sha256 .Q$1570042735248drnws:localhost:8800sha256 .Q$1570042734247SfTxR:localhost:8800sha256 .Q$1570042733246cYViL:localhost:8800sha256 .Q$1570042733245smHTZ:localhost:8800sha256 .Q$1570042732244zDmQh:localhost:8800sha256 .Q$1570042731243YuOkC:localhost:8800sha256 .Q$1570042730242eYFxu:localhost:8800sha256 .Q$1570042729241UUSiz:localhost:8800sha256 .Q$1570042729240aBRvS:localhost:8800sha256 .Q$1570042728239BMOBm:localhost:8800sha256 @JT ^ # i . x = C  Q W^"i(o3v:z>|;F9H ]@anon-20191002_181700-119:localhost:8800a&\>G ] @anon-20191002_181700-117:localhost:8800m&\]>F ]  @anon-20191002_181700-116:localhost:8800m&\9E ]@anon-20191002_181700-117:localhost:8800a&\9D ]@anon-20191002_181700-116:localhost:8800a&\>C ]  @anon-20191002_181700-115:localhost:8800m&\69B ]@anon-20191002_181700-115:localhost:8800a&\>A ]  @anon-20191002_181700-114:localhost:8800m&\M9@ ]@anon-20191002_181700-114:localhost:8800a&\A> ]@anon-20191002_181700-112:localhost:8800m&\B?? ]@anon-20191002_181700-113:localhost:8800m&\ %9= ]@anon-20191002_181700-113:localhost:8800a&\@: ]@anon-20191002_181700-109:localhost:8800m&\5#>; ] @anon-20191002_181700-110:localhost:8800m&\9< ]@anon-20191002_181700-112:localhost:8800a&\99 ]@anon-20191002_181700-110:localhost:8800a&\98 ]@anon-20191002_181700-109:localhost:8800a&\=7 ]  @anon-20191002_181700-108:localhost:8800m&\V>6 ]  @anon-20191002_181700-107:localhost:8800m&\C95 ]@anon-20191002_181700-108:localhost:8800a&\94 ]@anon-20191002_181700-107:localhost:8800a&\>3 ]  @anon-20191002_181700-106:localhost:8800m&\C92 ]@anon-20191002_181700-106:localhost:8800a&\>1 ] @anon-20191002_181700-104:localhost:8800m&\90 ]@anon-20191002_181700-104:localhost:8800a&\>/ ] @anon-20191002_181700-102:localhost:8800m&\|9. ]@anon-20191002_181700-102:localhost:8800a&\9- ]@anon-20191002_181700-103:localhost:8800a&\=, ] @anon-20191002_181700-100:localhost:8800m&\Z>+ ] @anon-20191002_181700-101:localhost:8800m&\9* ]@anon-20191002_181700-100:localhost:8800a&\9) ]@anon-20191002_181700-101:localhost:8800a&\=( [ @anon-20191002_181700-99:localhost:8800m&\8' [@anon-20191002_181700-99:localhost:8800a&\<& [ @anon-20191002_181700-96:localhost:8800m&\X=% [ @anon-20191002_181700-97:localhost:8800m&\8$ [@anon-20191002_181700-96:localhost:8800a&\8# [@anon-20191002_181700-97:localhost:8800a&\>" [  @anon-20191002_181700-95:localhost:8800m&\ #c8! [@anon-20191002_181700-95:localhost:8800a&\= [ @anon-20191002_181700-93:localhost:8800m&\8 [@anon-20191002_181700-93:localhost:8800a&\< [ @anon-20191002_181700-90:localhost:8800m&\X= [ @anon-20191002_181700-91:localhost:8800m&\B8 [@anon-20191002_181700-90:localhost:8800a&\8 [@anon-20191002_181700-91:localhost:8800a&\= [  @anon-20191002_181700-89:localhost:8800m&\48 [@anon-20191002_181700-88:localhost:8800a&\8 [@anon-20191002_181700-89:localhost:8800a&\< [  @anon-20191002_181700-87:localhost:8800m&\= [ @anon-20191002_181700-86:localhost:8800m&\B8 [@anon-20191002_181700-86:localhost:8800a&\8 [@anon-20191002_181700-87:localhost:8800a&\= [ @anon-20191002_181700-85:localhost:8800m&\ 3= [  @anon-20191002_181700-84:localhost:8800m&\8 [@anon-20191002_181700-84:localhost:8800a&\8 [@anon-20191002_181700-85:localhost:8800a&\= [ @anon-20191002_181700-83:localhost:8800m&\ 3= [  @anon-20191002_181700-82:localhost:8800m&\l8 [@anon-20191002_181700-83:localhost:8800a&\8 [@anon-20191002_181700-82:localhost:8800a&\= [  @anon-20191002_181700-81:localhost:8800m&\ 48 [@anon-20191002_181700-81:localhost:8800a&\8 [@anon-20191002_181700-80:localhost:8800a&\ ~qdWJ=0# zm`SF9, v i \ O B 5 (     r e X K > 1 $  { n a T G : -   w j ] P C 6 )    | m ^ O @ 1 "  }n_PA2#~o`QB3$paRC4%qbSD5&rcTE6' sdUF7( teVG8) m`m^m]mZ8mWmTsmRCmOmMtmKmIDmDmCmB>m@m>m=Cm;m:m6m5bm3]m1m0om/ m-am+m*Ym(~m' m%&m!mmmmPm cmmmmmmqmm mmBmm:mݹmQmPmmNmmmĎmmm0mmmmm?m>mmmm;mmmm}m{Gmxmvmt^momj mg+mdmmbm_mmumm=mmm m mmSmmAmm0m m m~~ m}} mM|| m{{ mzz myy mxx mRww m/vv muu mӗtt mхss mZrr mqq mšpp mÊoo m{nn mmm mll mNkk mjj mii mhh mgg m(ff mcee mdd m#cc mbb m7aa m`` mu__ m^^ m]] mc\\ m[[ m_ZZ mYY mKXX m}PWW mzVV mvUU mqTT mmSS miRR meQQ mcyPP m`POO m]{NN mZMM mXLL mVKK mT1JJ mLII mH:HH mF5GG mCFF mBEE m?DD m:RCC m8oBB m69AA m4@@ m2G?? m/w>> m-== m*x<< m%*;; m#:: m 99 mC88 mu77 m66 m+55 m?44 m)33 m 22 m 11 m 00 mH// m.. m-- m,, m++ m** m)) mE(( m'' m\&& m%% m'$$ m## mx"" m!! m mߴ m- m m m mЖ m? m m  mLJ m m0 m m m. mO m m m me m* m mV mR m m m m m mg |yj[L=.zk\M>qbSD5&rcTE6' sdUF7( teVG8) ufWH9* vgXI:+ whYJ;, m ^ O @ 1 "   } n _ P A 2 #   ~ o ` Q B 3 $    p a R C 4 %  /  { l ] N ? 0 !   |mdyymbdxxm_wwm]vvm[uumVttmQssmQrrmMqqmK8ppmHoomFannmD mmm=jllm8(kkm8&jjm43iim1hhm.ggm,yffm)eem#ddm!eccmbbmaamO``m__m^^m]]m>\\m L[[m]ZZmYYmXXmWWmfVVmUUmTTmjSSmkRRmCQQmRPPmOOmYNNmfMMmDLLm KKmxJJmIIm̷HHmGGmFFmbEEmDDmCCmBBmAAm@@m=??m>>m==mh<<mF;;m::m99m88m77m66m55m44m33m!22m|11mz[00mx//mu..mn--mk,,miZ++mf**mdt))ma((mZ8''mW&&mT%%mP$$mN##mEz""mB!!m@3  m:Fm4m1m-m+Em'4m$m"bmm<m mmm mmUmamm  m  m  m  m  mmmmemmnm֟mʤm'm%Wm"mNmmmkm$mLmm pm mm#mmEmmmmmmJmImmVmommm"mm7mRm)mNm›mmmmm.mm3mUmDm.mmmmm'mmommSmTmz~~mx}}mu||ms{{mqzzmmmDmpmm8mmmmmWm9mmommmm@m|mwmu!mrmpWmnmmXmkmj!mhmfmeF a]g  6 #E@'IDalQ))ee!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8kQ9 ee!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8jQ))ee!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0 iQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-85:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yoshQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0pgQ? e!TleKOyAElrpgyyrAQA:localhost:8800m.room.history_visibility$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUhfQ/ e!TleKOyAElrpgyyrAQA:localhost:8800m.room.join_rules$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogmeQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8jdQ3 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.power_levels$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ cQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-84:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMdbQ' e!TleKOyAElrpgyyrAQA:localhost:8800m.room.create$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsaQ))ee!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA`Q))ee!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM _Q'[e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgs^Q))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMp]Q? e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibility$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkh\Q/ e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rules$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsm[Q9 e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_alias$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UjZQ3 e !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc YQ'[e !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgdXQ' e !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.create$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYWQ9 ee !xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4VQ))ee !xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAsUQ))e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UApTQ? e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6ohSQ/ e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rules$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5MmRQ9 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4jQQ3 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w PQ'[e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8odOQ' e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.create$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUNQ))ee!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk   4eQ_5$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 261}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w"], "type": "m.room.canonical_alias", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"alias": "#test-20191002_181700-3:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040503839, "hashes": {"sha256": "Cb+eKYEpynCaarCdrnjoSFgUnTed7E8EObhvbLOn5gg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XNmyvEZ2MgBEHtMNoyWKWxMjxHkTOpTZ58NJO7DVkMYb1RNu+m0dDaNMCli6vuFGB7Uc4hGXVn90HAHUPGVaDg"}}, "unsigned": {"age_ts": 1570040503839}}heQ__$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 260}{"auth_events": ["$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "type": "m.room.power_levels", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"users": {"@anon-20191002_181700-81:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040502638, "hashes": {"sha256": "KcUqFQ6bb4zsWdgqhYg8mVwRY3I+7MqSicofYh2+590"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "76vhEaGkzlimcl5aMEaPeozdMNB+X38J9azozI8nSryeg25gu6kdcSnijIXhvfmN3leRhpaWw7rkhPe6f7IgAw"}}, "unsigned": {"age_ts": 1570040502638}}reQ_s$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 259}{"auth_events": ["$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU"], "prev_events": ["$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU"], "type": "m.room.member", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-81", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-81:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040501919, "hashes": {"sha256": "5psVXc0dmZWEw5/t85s5DMsooJcOmuN4P9/bdKIdnhg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nm3tdrrmLpxGq3tUdILzqfSpz3hn1f77jN5lv5F2iwqqObWoPdgow/gwKaRq9FLqiGoQjRXdlC2Gn0cRgEB3Cw"}}, "unsigned": {"age_ts": 1570040501919}}feQ_[$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 258}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-81:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040498852, "hashes": {"sha256": "94r+TAdCM2s8b0v8O+fqy9mquLiXdvlZOef75+t/IWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1L5NkbJWk44Pqgc7UPfBn052rpO6Y2hIHHRMYk3RG1aJeTWIxgxlTdU4i3xIpQwOJdIoXUK3hFkkYZepZeDDQ"}}, "unsigned": {"age_ts": 1570040498852}} Z]="gL)jG!oX y S 3  c = ^ A !   Y 9  f C &U8J-V?K zt6|>/ m.room.join_rules3 m.room.power_levels' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-77:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-95:localhost:8800' m.room.create='[m.room.member@anon-20191002_181700-92:localhost:8829='[m.room.member@anon-20191002_181700-92:localhost:8829='[m.room.member@anon-20191002_181700-92:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-93:localhost:8800' m.room.create='[ m.room.member@anon-20191002_181700-90:localhost:8800 ='[ m.room.member@anon-20191002_181700-90:localhost:8800 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3 m.room.power_levels='[m.room.member@anon-20191002_181700-91:localhost:8800' m.room.create='[m.room.member@anon-20191002_181700-88:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-89:localhost:8800' m.room.create='[m.room.member@anon-20191002_181700-87:localhost:8800='[m.room.member@anon-20191002_181700-87:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-86:localhost:8800' m.room.create9 m.room.canonical_alias%))m.room.aliaseslocalhost:88009 m.room.canonical_alias%))m.room.aliaseslocalhost:8800='[m.room.member@anon-20191002_181700-85:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-84:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800='[m.room.member@anon-20191002_181700-83:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-82:localhost:8800' m.room.create9 m.room.canonical_alias%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-81:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:88009 m.room.canonical_alias9 m.room.canonical_alias%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-79:localhost:8800 a ba}eQ_ $ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 265}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA"], "type": "m.room.aliases", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"aliases": ["#test-20191002_181700-3:localhost:8800", "#__ANON__-9:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040507271, "hashes": {"sha256": "74kAqRF/Nn09Cia0EqMWWCgpeB3+qKyuFu0J3v8XdTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rm0qT+wdzzTeY213VOpgi6N9EZKegZTeFtK3xYKFAClxzvQU8RZFCby4yJy/3tgNQho5ZzgsBowxQMLr9Cs6BQ"}}, "unsigned": {"age_ts": 1570040507271, "replaces_state": "$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA"}}eQ_I$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 264}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o"], "type": "m.room.aliases", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"aliases": ["#test-20191002_181700-3:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040505965, "hashes": {"sha256": "CNwnf7liifIouMyLZUehRvyiBknzzL8yOymcvfYccQc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5sUZFXHRim73+F85NrSRYm4EMmXY6aEwhzbf3mPHk89jx/jDhbow3XO8u80ydpJN0mysv1q6pTTgon+j9N6DBw"}}, "unsigned": {"age_ts": 1570040505965}}eQ_$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 263}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M"], "type": "m.room.history_visibility", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040504964, "hashes": {"sha256": "dukz4uUGyOYYjVjEUPYitxo+OrkPSPpYVMgXQzDUi1k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QDlNlQxd/svQYoNxZcq39T5TXQ93izVRO+6+rDNcOXof4MJfpfuovd3Nq76tVL0w0FUvzEOAb1JOAPMTChlPCw"}}, "unsigned": {"age_ts": 1570040504964}}reQ_s$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 262}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4"], "type": "m.room.join_rules", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040504421, "hashes": {"sha256": "Fb710LPapA22khFMu/cWeLJP1jPlemkdC15jSC/W+bg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hwo3vMPZAfPpjfkqnwoNwVfb0u27zxVi+t6gTFq0F0PXJPHd3IGEPRB7rXsMdD7w2H6cXSUFs+VWzEyn6iLNBg"}}, "unsigned": {"age_ts": 1570040504421}} a} { y w u sqomkigeca~SeeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800~ReeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~QeeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~PeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~OeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~NeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~MeeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~LeeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~KeeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~JeeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~IeeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~HeeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~GeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~FeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~EeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~DeeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~CeeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~BeeQ$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~AeeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~@eeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~?eeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~>eeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~=eeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~<eeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~;eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~:eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~9eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~8eeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~7eeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~6eeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~5eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800 "= M v  + , U_;dn,aueQ' $L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800m.room.createteQ'[$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800seQ'[$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800greQ3 $FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g!duCKuavMBSfRbTFPsc:localhost:8800m.room.guest_accessmqeQ? $_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck!duCKuavMBSfRbTFPsc:localhost:8800m.room.history_visibilityepeQ/ $Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800m.room.join_rulesgoeQ3 $mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800m.room.power_levelsneQ'[$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-86:localhost:8800ameQ' $3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800m.room.createpleQ))$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800jkeQ9 $1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_aliaspjeQ))$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800ieQ'[$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-85:localhost:8800pheQ))$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800mgeQ? $lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800m.room.history_visibilityefeQ/ $Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800m.room.join_rulesjeeQ9 $vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_aliasgdeQ3 $ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800m.room.power_levelsceQ'[$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-84:localhost:8800abeQ' $aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800m.room.createpaeQ))$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800p`eQ))$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800_eQ'[$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800p^eQ))$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800m]eQ? $N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibilitye\eQ/ $9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rulesj[eQ9 $4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_aliasgZeQ3 $8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levelsYeQ'[$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800aXeQ' $wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.createjWeQ9 $PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliaspVeQ))$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800pUeQ))$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800mTeQ? $6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility TuC~Lj8p> v D  | J  P  c1 W % ] +yGok9qX?i7&V=% 1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA{1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAz1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAy1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj41e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A3$39:localhost:424553$38:localhost:424553$38:localhost:424553$38:localhost:424551e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao\3$37:localhost:424553$37:localhost:424553$37:localhost:424551e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug11e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug01e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug/3$33:localhost:424553$33:localhost:424553$33:localhost:424551e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg *1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg )1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0@0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0?0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0>1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYb1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE 41$3:localhost:372651$3:localhost:372653$39:localhost:424553$39:localhost:424551e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k.1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k-1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kR1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kQ1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kP1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQu1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls:1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls91e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k C1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k B1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k A0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0f1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0e1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E01e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E/1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E.1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg 1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg 1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM 1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg + g 3 Igh eQ__$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 269}{"auth_events": ["$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "type": "m.room.power_levels", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"users": {"@anon-20191002_181700-82:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040511448, "hashes": {"sha256": "+SL17ET0JmHIJXgUS6OPwzPk59tZAnPVTDK8USImcUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "211ENDC9tUEvBJ6+K2f6AoKapgLg/gr0GuZZlLWIu3EI0G6jeJGcqRlkZaYPKU0Q9qjzxHFlZK299wJof6iMBA"}}, "unsigned": {"age_ts": 1570040511448}}r eQ_s$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 268}{"auth_events": ["$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY"], "prev_events": ["$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY"], "type": "m.room.member", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-82", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-82:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040510894, "hashes": {"sha256": "IxuiniP96oOBwsp/OMqNLXkHdlcgj6XXNLKccDG7BtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UoLqjczDuAYisGJuuXYHltXcdiTfuL29V3gQ2VFqmYDE6dwqDf7LtTb4TaBzbfXpm8rb1bsZyzhzjxcUNjyQCQ"}}, "unsigned": {"age_ts": 1570040510894}}f eQ_[$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 267}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-82:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040510186, "hashes": {"sha256": "dU0YJR6uCxi9gwOokbpCLi2PD9OOUd6qaxhIvcvxHSo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jiU72m1SYrlS2pK3QJEjTt5UVff4O1xLwKh7p5LA6Ek/5qPxyVP5aUsScKDiFSwcu3PGtqufaHcKY7MgpnI/BA"}}, "unsigned": {"age_ts": 1570040510186}}I eQ_!$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 266}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y"], "type": "m.room.canonical_alias", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"alias": "#__ANON__-9:localhost:8800"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040508058, "hashes": {"sha256": "r5Ull4eAy5Hq6nDMrnNKFZ7pvHi83LSinMoB8yK7eLU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BfhxhL2q2MnNGmZt8JFxo/IZAfHZbWtsRCCSQMNK2+dnTvuhZbA9QUOFxL4RMM2Mh3x7Naj6bnR8tzeHE0jcAw"}}, "unsigned": {"age_ts": 1570040508058, "replaces_state": "$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4"}} hT g  e  z5=CP h!e'Q [$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMm.room.member!duCKuavMBSfRbTFPsc:localhost:8800mBmC@anon-20191002_181700-86:localhost:8800  e'Q  [$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675om.room.create!duCKuavMBSfRbTFPsc:localhost:8800m@3m@@anon-20191002_181700-86:localhost:8800 e)Q [ $644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEm.room.aliases!TleKOyAElrpgyyrAQA:localhost:8800 m:Fm:@anon-20191002_181700-85:localhost:8800(e9Q [ $1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JEm.room.canonical_alias!TleKOyAElrpgyyrAQA:localhost:8800 m4m6/@anon-20191002_181700-84:localhost:8800 e)Q [ $y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8m.room.aliases!TleKOyAElrpgyyrAQA:localhost:8800 m1m2@anon-20191002_181700-85:localhost:8800e'Q [$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yom.room.member!TleKOyAElrpgyyrAQA:localhost:8800m-m.:@anon-20191002_181700-85:localhost:8800 e)Q [$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0m.room.aliases!TleKOyAElrpgyyrAQA:localhost:8800m+Em,@anon-20191002_181700-84:localhost:8800+e?Q [$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUm.room.history_visibility!TleKOyAElrpgyyrAQA:localhost:8800m'4m)@anon-20191002_181700-84:localhost:8800#e/Q [$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogm.room.join_rules!TleKOyAElrpgyyrAQA:localhost:8800m$m%@anon-20191002_181700-84:localhost:8800(e9Q [$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8m.room.canonical_alias!TleKOyAElrpgyyrAQA:localhost:8800m"bm#(@anon-20191002_181700-84:localhost:8800%e3Q [$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQm.room.power_levels!TleKOyAElrpgyyrAQA:localhost:8800mm @anon-20191002_181700-84:localhost:8800e'Q [$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMm.room.member!TleKOyAElrpgyyrAQA:localhost:8800m<m@anon-20191002_181700-84:localhost:8800 e'Q  [$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsm.room.create!TleKOyAElrpgyyrAQA:localhost:8800m m]@anon-20191002_181700-84:localhost:8800 e)Q [ $Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08m.room.aliases!IGVHKYcSuxzVPlFHlj:localhost:8800 mm@anon-20191002_181700-83:localhost:8800 e)Q [ $tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMAm.room.aliases!IGVHKYcSuxzVPlFHlj:localhost:8800 mm@anon-20191002_181700-83:localhost:8800e'Q [$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgm.room.member!IGVHKYcSuxzVPlFHlj:localhost:8800m m @anon-20191002_181700-83:localhost:8800 e)Q [$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMm.room.aliases!IGVHKYcSuxzVPlFHlj:localhost:8800mm{@anon-20191002_181700-82:localhost:8800+e?Q [$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkm.room.history_visibility!IGVHKYcSuxzVPlFHlj:localhost:8800mUm@anon-20191002_181700-82:localhost:8800#e/Q [$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsm.room.join_rules!IGVHKYcSuxzVPlFHlj:localhost:8800mam@anon-20191002_181700-82:localhost:8800(e9Q [$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81Um.room.canonical_alias!IGVHKYcSuxzVPlFHlj:localhost:8800mm @anon-20191002_181700-82:localhost:8800% e3Q [$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcm.room.power_levels!IGVHKYcSuxzVPlFHlj:localhost:8800mm@anon-20191002_181700-82:localhost:8800 e'Q [$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgm.room.member!IGVHKYcSuxzVPlFHlj:localhost:8800mm @anon-20191002_181700-82:localhost:8800  e'Q  [$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYm.room.create!IGVHKYcSuxzVPlFHlj:localhost:8800mm@anon-20191002_181700-82:localhost:8800( e9Q [ $PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYm.room.canonical_alias!xhbvqJDfxMSsZPqvld:localhost:8800 mm@anon-20191002_181700-81:localhost:8800 CUq8 T  l 1 E Y  m 2F Zn3G [ o4H \!85]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT84]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD83]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY82]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG81]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA80]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8/]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8.]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8-]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8,]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8+]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8*]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8)]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8(]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8']!@anon-20191002_181700-140:localhost:8800OLUEHITWUA8&]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS8%]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS8$]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8#]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA8"]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8!]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA8 ]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBE8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8 ]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8 ]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8 ]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH8 ]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA8 ]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH8]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW8]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF8]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF8]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL8]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUI8]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHG8]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMG7[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMY7[!@anon-20191002_181700-96:localhost:8800TASTZEHNVL7[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZ7~[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZT7}[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNB7|[!@anon-20191002_181700-90:localhost:8800BJDBLNAUER7{[!@anon-20191002_181700-91:localhost:8800UIADKEMPGA7z[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDI7y[!@anon-20191002_181700-89:localhost:8800OFESILMBJH7x[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYW7w[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZ7v[!@anon-20191002_181700-84:localhost:8800YUGLTPPJEN7u[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTV7t[!@anon-20191002_181700-83:localhost:8800STLQYGHMSU7s[!@anon-20191002_181700-82:localhost:8800JESTYYWXIO  xG m < 1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCgq/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCgp/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCgu/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8Cgn/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30Cgo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCgw/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCgk/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECgj/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCgi/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCgh/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCgl/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCgv  ileQ_I$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 273}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk"], "type": "m.room.aliases", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"aliases": ["#test-20191002_181700-4:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040514497, "hashes": {"sha256": "CIKeTQPXKP1fzkPrUoC1aK+GJukzHhAnQpkY+jgyzag"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pdcpCjldlERQmj5xA1uhbE+HUCxbtafzEop5blU7xUAYE5JS9DeAV8ee5N1lP6vk8CqC0NsOJPPxES03WU2YAQ"}}, "unsigned": {"age_ts": 1570040514497}}eQ_$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 272}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs"], "type": "m.room.history_visibility", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040513621, "hashes": {"sha256": "NY/vPzB2vnLoIGlnBOQdSbW2PO/l3AE6MAr3g+fQ0tk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+tzZahWbWCPk3ftSFbZw8mp0dyaUhKUlZUFnHGHBYHkQ5sbwnVZcFC7l+0xwdf8lSWYtugec5QtPV/7mnlrQDQ"}}, "unsigned": {"age_ts": 1570040513621}}reQ_s$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 271}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U"], "type": "m.room.join_rules", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040513121, "hashes": {"sha256": "a7ZUqJi+vZxrYcSdqYvAIi8tcCB0GAQF32GMHMDizo8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vJjEl5WDOjRsep50MoX/YJLQ8fWT10rqH930fUTyjUe1C5NmIaQuFoPHb3tvheu0ywIOYSSzJLRM0w4yR6PwDw"}}, "unsigned": {"age_ts": 1570040513121}} eQ_5$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 270}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc"], "type": "m.room.canonical_alias", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"alias": "#test-20191002_181700-4:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040512203, "hashes": {"sha256": "FeKVfi6F5VEc4drTJLe1LaqImW+AGLQP+C/2Jkji/r0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XV1Eo6J4XFP1/75HUeoBdOgDVLOpf5e1BGhSM+z+C0CWBAIA890y9NCe1cLjVsGZ4P9vAzkiMGqA1yQc+wnbAg"}}, "unsigned": {"age_ts": 1570040512203}} SRFFy\/Ji<M l? _ 2  ~ Q $ q D  d 7 W *v|O"nA'sa4S,Q!EfJcWhdjNARbuHYrqU:localhost:8800^^,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 +Q !FZOLkaLbBpaibrbHZx:localhost:8800 Z,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 +Q !FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800+Q !FPcQcheNebvdFvmOnr:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 +Q !EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 +Q !EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800+Q !FIOuvzpMhoERunVYYA:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800+Q !FAYqpziHeVZugCGaij:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  +Q !EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyEaTZElOkdURKbEXo:localhost:8800==,Q!EyEaTZElOkdURKbEXo:localhost:8800<<,Q!EyEaTZElOkdURKbEXo:localhost:8800;;,Q!EyEaTZElOkdURKbEXo:localhost:8800::,Q!EyEaTZElOkdURKbEXo:localhost:880099,Q!EyEaTZElOkdURKbEXo:localhost:880088,Q!EyEaTZElOkdURKbEXo:localhost:880077+Q !EyEaTZElOkdURKbEXo:localhost:880066,Q!EieRtaCFZJJCIOkRPp:localhost:8800 uu,Q!EieRtaCFZJJCIOkRPp:localhost:8800 tt,Q!EieRtaCFZJJCIOkRPp:localhost:8800 ss,Q!EieRtaCFZJJCIOkRPp:localhost:8800rr,Q!EieRtaCFZJJCIOkRPp:localhost:8800qq,Q!EieRtaCFZJJCIOkRPp:localhost:8800pp,Q!EieRtaCFZJJCIOkRPp:localhost:8800oo,Q!EieRtaCFZJJCIOkRPp:localhost:8800nn,Q!EieRtaCFZJJCIOkRPp:localhost:8800mm,Q!EieRtaCFZJJCIOkRPp:localhost:8800ll+Q !EieRtaCFZJJCIOkRPp:localhost:8800kk,Q!EfJcWhdjNARbuHYrqU:localhost:8800aa,Q!EfJcWhdjNARbuHYrqU:localhost:8800``,Q!EfJcWhdjNARbuHYrqU:localhost:8800__ SRFFy\/Ji<M l? _ 2  ~ Q $ q D  d 7 W *v|O"nA'sa4S,Q!EfJcWhdjNARbuHYrqU:localhost:8800^^,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 +Q !FZOLkaLbBpaibrbHZx:localhost:8800 Z,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 +Q !FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800+Q !FPcQcheNebvdFvmOnr:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 +Q !EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 +Q !EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800+Q !FIOuvzpMhoERunVYYA:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800+Q !FAYqpziHeVZugCGaij:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  +Q !EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyEaTZElOkdURKbEXo:localhost:8800==,Q!EyEaTZElOkdURKbEXo:localhost:8800<<,Q!EyEaTZElOkdURKbEXo:localhost:8800;;,Q!EyEaTZElOkdURKbEXo:localhost:8800::,Q!EyEaTZElOkdURKbEXo:localhost:880099,Q!EyEaTZElOkdURKbEXo:localhost:880088,Q!EyEaTZElOkdURKbEXo:localhost:880077+Q !EyEaTZElOkdURKbEXo:localhost:880066,Q!EieRtaCFZJJCIOkRPp:localhost:8800 uu,Q!EieRtaCFZJJCIOkRPp:localhost:8800 tt,Q!EieRtaCFZJJCIOkRPp:localhost:8800 ss,Q!EieRtaCFZJJCIOkRPp:localhost:8800rr,Q!EieRtaCFZJJCIOkRPp:localhost:8800qq,Q!EieRtaCFZJJCIOkRPp:localhost:8800pp,Q!EieRtaCFZJJCIOkRPp:localhost:8800oo,Q!EieRtaCFZJJCIOkRPp:localhost:8800nn,Q!EieRtaCFZJJCIOkRPp:localhost:8800mm,Q!EieRtaCFZJJCIOkRPp:localhost:8800ll+Q !EieRtaCFZJJCIOkRPp:localhost:8800kk,Q!EfJcWhdjNARbuHYrqU:localhost:8800aa,Q!EfJcWhdjNARbuHYrqU:localhost:8800``,Q!EfJcWhdjNARbuHYrqU:localhost:8800__ ,NC 8 - { " p  e ZOD9.|#qf V8eL$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugsha256pUJ2.2.קB8jm vV7eL$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Mssha256O**P1y,d%æuZBNV6eL$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPosha256ָЬXа눉&x˜S*4V5eL$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvosha256^secB6< T/Cu:V4eL$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0sha256UJp\ Q/ղƑ V3eL$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbksha256וcziJd9 _CS"ԨAAAV2eL$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1josha256I3n(KV MS;m{:V1eL$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUsha256f:daTT8a8(|ƵV0eL$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYsha256+s_NW!Q ˏ&PhP0V/eL$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20sha256ՙ'8Km,_·聵^ mV.eL$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8sha2563&-&'C@wI_H[ DjV-eL$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMcsha256V T[֏L:%]ܽW~V,eL$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byosha256!^K*cX u<73/-Zwaf!RSKxˠ?'SV eL$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMsha256Q|MD[0sVeL$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675osha256R=Hky7-1$  ƜVeL$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEsha256'̎.IK($O3bXc-'\FjVeL$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JEsha256H$fҰg$-堮1PwMVeL$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8sha256i~)TodB^hJVeL$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yosha256d'=ϝ򋙅ó@7:Wn*VeL$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0sha256lڿUǼ Kh=x P?SIdO”VeL$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUsha256}-30j҄FsRNZ߮VeL$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogsha256e%rSse&1VeL$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8sha256sM "V1+ bk Yto?VeL$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQsha256>4=+30&Z  dVeL$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMsha2568q-IՕ\˟=jfu=v^VeL$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBssha256h! 9 4/*|%w rmhc TQe!EyEaTZElOkdURKbEXo:localhost:8800$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6ETQe!EyEaTZElOkdURKbEXo:localhost:8800$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugTQe!EyEaTZElOkdURKbEXo:localhost:8800$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7MsTQe!EyEaTZElOkdURKbEXo:localhost:8800$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPoTQe!EyEaTZElOkdURKbEXo:localhost:8800$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvoT Qe !TWETXUgfFZafDdbqLS:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0T Qe !TWETXUgfFZafDdbqLS:localhost:8800$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbkT Qe !TWETXUgfFZafDdbqLS:localhost:8800$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1joT Qe !TWETXUgfFZafDdbqLS:localhost:8800$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUT Qe !TWETXUgfFZafDdbqLS:localhost:8800$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYTQe!TWETXUgfFZafDdbqLS:localhost:8800$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20TQe!TWETXUgfFZafDdbqLS:localhost:8800$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8TQe!TWETXUgfFZafDdbqLS:localhost:8800$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMcTQe!HAFNBarGuVZuWCgwWM:localhost:8800$BeV5z_4UPE_DRrVHJtOw1oX23Hq5zj73SDAUFQ1QoNkTQe!HAFNBarGuVZuWCgwWM:localhost:8800$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byoTQe!HAFNBarGuVZuWCgwWM:localhost:8800$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqYTQe!HAFNBarGuVZuWCgwWM:localhost:8800$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bwTQe!HAFNBarGuVZuWCgwWM:localhost:8800$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQTQe!HAFNBarGuVZuWCgwWM:localhost:8800$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQTQe!HAFNBarGuVZuWCgwWM:localhost:8800$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TAT~Qe!duCKuavMBSfRbTFPsc:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOYT}Qe!duCKuavMBSfRbTFPsc:localhost:8800$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUgT|Qe!duCKuavMBSfRbTFPsc:localhost:8800$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-gT{Qe!duCKuavMBSfRbTFPsc:localhost:8800$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0CkTzQe!duCKuavMBSfRbTFPsc:localhost:8800$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJcTyQe!duCKuavMBSfRbTFPsc:localhost:8800$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKETxQe!duCKuavMBSfRbTFPsc:localhost:8800$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMTwQe!duCKuavMBSfRbTFPsc:localhost:8800$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675oTvQe!TleKOyAElrpgyyrAQA:localhost:8800$daMdPBvh4bjssCbadTihtjyoYVAW4iIPKay6Hjm_6CQTuQe!TleKOyAElrpgyyrAQA:localhost:8800$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbETtQe!TleKOyAElrpgyyrAQA:localhost:8800$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JETsQe!TleKOyAElrpgyyrAQA:localhost:8800$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8TrQe!TleKOyAElrpgyyrAQA:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yoTqQe!TleKOyAElrpgyyrAQA:localhost:8800$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0TpQe!TleKOyAElrpgyyrAQA:localhost:8800$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUToQe!TleKOyAElrpgyyrAQA:localhost:8800$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogTnQe!TleKOyAElrpgyyrAQA:localhost:8800$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8TmQe!TleKOyAElrpgyyrAQA:localhost:8800$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQTlQe!TleKOyAElrpgyyrAQA:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMTkQe!TleKOyAElrpgyyrAQA:localhost:8800$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsTjQe!IGVHKYcSuxzVPlFHlj:localhost:8800$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08TiQe!IGVHKYcSuxzVPlFHlj:localhost:8800$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMAThQe!IGVHKYcSuxzVPlFHlj:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgTgQe!IGVHKYcSuxzVPlFHlj:localhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMTfQe!IGVHKYcSuxzVPlFHlj:localhost:8800$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk Z *(DZfeQ_[$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 277}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-84:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040519435, "hashes": {"sha256": "rD3jVG06ICy/IvG5l3GwW2W6q0rHw1ZhXcCW0Z8G3UQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bcwyjH0SiDaZhjxw3NQefGl6QK8exxRorcWitDHoJbczVBl5tFtfWYEAr14UQLYgxWRAM8lwMth/cw9kZbSRAA"}}, "unsigned": {"age_ts": 1570040519435}}`eQ_O$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 116, "stream_ordering": 276}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg"], "prev_events": ["$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA"], "type": "m.room.aliases", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-83:localhost:8800", "content": {"aliases": ["#test-20191002_181700-4:localhost:8800"]}, "depth": 10, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040516839, "hashes": {"sha256": "tKQMCE3f9SIum075NecFrQDWwe39PYIJdxUR1iMWa/M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RU51A0jnEnKossMMejtquI10OsW/nTqt3SmHGlVIcprJHeDwnnc1q8+X4Bc2Wjj1+zjT73oDHWrIMs4nO9IVBA"}}, "unsigned": {"age_ts": 1570040516839, "replaces_state": "$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA"}}~eQ_ $tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 116, "stream_ordering": 275}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg"], "prev_events": ["$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg"], "type": "m.room.aliases", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-83:localhost:8800", "content": {"aliases": ["#test-20191002_181700-4:localhost:8800", "#__ANON__-10:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040516253, "hashes": {"sha256": "C/GVrJADjsbS0Ds/78iylybewPa8hnH1zVmUh28C1IU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aYdQz4qHH9qiLPLngH1s1HdcA9OhfIUDBBXvp+x3IXdx8RVhoD8xFvdoL9y7yJYu797We362lpJnBuotID9BCQ"}}, "unsigned": {"age_ts": 1570040516253, "replaces_state": "$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM"}}ReQ_3$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 116, "stream_ordering": 274}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs"], "prev_events": ["$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM"], "type": "m.room.member", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-83:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-83", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-83:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040515221, "hashes": {"sha256": "iEDlagH56YIq9H8kUhxqIOYa8oTH57tZaizhLwvJPlc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K7JPtguHb6688Y3DE9bo9wuNTe6nhEjRObZlgLMaNgCP5b1CadXJ06MgI/qmCCyZ2+bRo4nT08IU3Z/WlEeqAw"}}, "unsigned": {"age_ts": 1570040515221}} -RM H C > 9 4/*|%w rmhc T?Qe?!RmdhCjvouVLmyIHjaM:localhost:8800$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcT>Qe>!RmdhCjvouVLmyIHjaM:localhost:8800$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8T=Qe=!EyEaTZElOkdURKbEXo:localhost:8800$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7kT<Qe'Q$1570043367291AEdax:localhost:8800 ='Q$1570043366290YSCqz:localhost:8800 <'Q$1570043364288SCpzq:localhost:8800 ;'Q$1570043363287eSyun:localhost:8800 :'Q$1570043362286KwXMK:localhost:8800 9'Q$1570043361285xsPbY:localhost:8800 8'Q$1570043353283ubEdk:localhost:8800 3'Q$1570043352282iTcSU:localhost:8800 2'Q$1570043351281XHPOP:localhost:8800 1'Q$1570043350280ydSwy:localhost:8800 0'Q$1570043347278WlNld:localhost:8800 /'Q$1570043346277FsKPl:localhost:8800 .'Q$1570043346276qTXUF:localhost:8800 -'Q$1570043345275UDVPY:localhost:8800 ,'Q$1570043344274cabjv:localhost:8800 +'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 }'Q$1570043152261Skczg:localhost:8800 |'Q$1570043152260dkyqc:localhost:8800 {'Q$1570043151259knbjg:localhost:8800 z'Q$1570043150258cdaXl:localhost:8800 y%M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800'Q$1570042727237iUlYB:localhost:8800'Q$1570042727236AOaiE:localhost:8800'Q$1570042726235bahBo:localhost:8800'Q$1570042726234miteq:localhost:8800'Q$1570042725233SjCnf:localhost:8800'Q$1570042725232UzIHq:localhost:8800'Q$1570042724231dYSEq:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800'Q$1570042719225dSNgP:localhost:8800%M$15700427177BOUHn:localhost:8829'Q$1570042716222nflqt:localhost:8800'Q$1570042715221Amlxc:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712217nuYrc:localhost:8800 V( h @  x P ( b :  r L $\4 lD|T,f>wQ*X0h@xPpH X( 0  `8 P'Q$1570043372296yAiBq:localhost:8800 @'Q$1570043346277FsKPl:localhost:8800 -'Q$1570043346276qTXUF:localhost:8800 ,'Q$1570043345275UDVPY:localhost:8800 +'Q$1570043341273LsXNn:localhost:8800 *'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043154263raEaa:localhost:8800 }'Q$1570043153262hRyOa:localhost:8800 |'Q$1570043152261Skczg:localhost:8800 {'Q$1570043152260dkyqc:localhost:8800 z 'Q$1570043151259knbjg:localhost:8800 y&O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800'Q$1570042728238dtqIB:localhost:8800'Q$1570042727237iUlYB:localhost:8800'Q$1570042727236AOaiE:localhost:8800'Q$1570042726235bahBo:localhost:8800'Q$1570042726234miteq:localhost:8800'Q$1570042725233SjCnf:localhost:8800'Q$1570042725232UzIHq:localhost:8800'Q$1570042724231dYSEq:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800'Q$1570042718224MBWNJ:localhost:8800%M$15700427177BOUHn:localhost:8829'Q$1570042716222nflqt:localhost:8800'Q$1570042715221Amlxc:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712217nuYrc:localhost:8800'Q$1570042711216KdEEo:localhost:8800'Q$1570042709214PwhVu:localhost:8800%M$15700427086bDrAU:localhost:8829'Q$1570042707212LkSAM:localhost:8800'Q$1570042706211NniIl:localhost:8800'Q$1570042705210LweYn:localhost:8800'Q$1570042704209JQwmT:localhost:8800'Q$1570042704208yLiWU:localhost:8800'Q$1570042703207yqsGA:localhost:8800'Q$1570042702206BIYsS:localhost:8800'Q$1570042700204CxVfq:localhost:8800'Q$1570042699203fHFjU:localhost:8800'Q$1570042698202juBqr:localhost:8800'Q$1570042698201kDowV:localhost:8800'Q$1570042697200mrENr:localhost:88008w'Q$1570043373297SOjrf:localhost:8800 A'Q$1570043367291AEdax:localhost:8800 <'Q$1570043364289XIEhE:localhost:8800 ;'Q$1570043364288SCpzq:localhost:8800 :'Q$1570043363287eSyun:localhost:8800 9'Q$1570043362286KwXMK:localhost:8800 8'Q$1570043354284IVfTL:localhost:8800 3'Q$1570043353283ubEdk:localhost:8800 2'Q$1570043352282iTcSU:localhost:8800 1'Q$1570043351281XHPOP:localhost:8800 0'Q$1570043369294rquKy:localhost:8800 ?'Q$1570043369293ssSMv:localhost:8800 >'Q$1570043368292FAoRb:localhost:8800 =P'Q$1570043374298UIMFg:localhost:8800 B('Q$1570043347278WlNld:localhost:8800 .  reQ_s$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 281}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8"], "type": "m.room.join_rules", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040521940, "hashes": {"sha256": "EP9PaN92pzNJCIrK61RbSQLglmtc9q6FewHq4aacWic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WJI5QK5N53KNeyVc2ghhsQdtImN89gwcQhe0rnXHhGxXST4bXtZArfGDzdABL/RD6r3HQA7U96MYtnTCrRVhCQ"}}, "unsigned": {"age_ts": 1570040521940}}eQ_5$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 280}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ"], "type": "m.room.canonical_alias", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"alias": "#test-20191002_181700-5:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040521314, "hashes": {"sha256": "xgFPog9+8ZYpSiP0tEU/wTIuv8KOZ1jkXAZI4C5As7c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q/Jpz3MbEzGLkZrkPUtwpEjWCAGzXQPkSjn8knmyf3HgYN0rG7JdzwOlcHk+Y2gBwpAdEZuaAouWfkaJXtLDAw"}}, "unsigned": {"age_ts": 1570040521314}}heQ__$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 279}{"auth_events": ["$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "type": "m.room.power_levels", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"users": {"@anon-20191002_181700-84:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040520673, "hashes": {"sha256": "Zt2pp1807NPCjs7xCYnWs45EX8il2350vOf8k4N2EaQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D+X6avNkcZAioYYsZ3c5qQgd9FkoAwq3llySEAlvIZx5g8u5wPPuZ4R4CRgK8qR2w9C5635eBqEfM/zDUw9pDQ"}}, "unsigned": {"age_ts": 1570040520673}}reQ_s$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 278}{"auth_events": ["$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs"], "prev_events": ["$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs"], "type": "m.room.member", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-84", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-84:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040519996, "hashes": {"sha256": "DsdsPv4LYPlIK25nWdcLKvUWSpwxyUGETwuneObD1rY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbMl6t88cD7s8FHDtmXMrXwY0ptYmVpEKGS1lF6iSaaxMqe7/toRpLLMVWKE+JztqA5NnTHQrsGwxqlrOKGfDw"}}, "unsigned": {"age_ts": 1570040519996}}  1Mcr eQ_s$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800{"token_id": 120, "stream_ordering": 289}{"auth_events": ["$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o"], "prev_events": ["$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o"], "type": "m.room.member", "room_id": "!duCKuavMBSfRbTFPsc:localhost:8800", "sender": "@anon-20191002_181700-86:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-86", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-86:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040529553, "hashes": {"sha256": "lSdBEUGUVSRAiUNTTUKOpiDpdT27hTsHu6k1+LVh/iQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gt/+hXtqbHfYSffPS43evoiGU9YivRrbefpgzhuWWtfdRTfmhOHUPM0Ci6HX4lFa79GIPz2ROkE7bq29JLP/BA"}}, "unsigned": {"age_ts": 1570040529553}}feQ_[$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800{"token_id": 120, "stream_ordering": 288}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!duCKuavMBSfRbTFPsc:localhost:8800", "sender": "@anon-20191002_181700-86:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-86:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040528947, "hashes": {"sha256": "NIzV/QnSxx9Ci4zcsLQjfLW6BR3bhVNF8HNRKTkDc24"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U3SAJsWLikKSYGmToG8hT+pT4N3n4Wnc5EMizoW0YjExYUJR+RW1CHJW5ffBN5oENPvMXrsOEiBN7LtkooHeCw"}}, "unsigned": {"age_ts": 1570040528947}}`eQ_O$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 117, "stream_ordering": 287}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo"], "prev_events": ["$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE"], "type": "m.room.aliases", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-85:localhost:8800", "content": {"aliases": ["#test-20191002_181700-5:localhost:8800"]}, "depth": 11, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040527430, "hashes": {"sha256": "X5Zgoz+Ti4r7WG1S0KOP8xZWzjiEsj3755QbJtXOvzk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kWE/C04b6cKG27ZDALvrTLBBMqb+7rI/g+UwNzoF/vQ5kPQPJNQSL+Ne/8vF3c33ufK4pUeXqYHtp1CZW1//DA"}}, "unsigned": {"age_ts": 1570040527430, "replaces_state": "$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8"}}KeQ_%$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 286}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8"], "type": "m.room.canonical_alias", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"alias": "#__ANON__-11:localhost:8800"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040526069, "hashes": {"sha256": "jyfPE4gjVoKK7QkHVSRx/Hd1oXjoFhCNhf+vxfdF0y8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mEJHbCv9uvGggrQZ82V5t1ffGxCKzPOe5GQ3Uf/Pne1aetVZ6BdOQq3V8jqrxdFsBodsR9SzoHp3k5ecRKaqDA"}}, "unsigned": {"age_ts": 1570040526069, "replaces_state": "$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8"}}  4 h 6jfa[a@anon-20191002_181700-70:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09Cg127.0.0.1;d]c@anon-20191002_181700-709:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1wo127.0.0.1d]c@anon-20191002_181700-708:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwo127.0.0.1d]c@anon-20191002_181700-707:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0Fwo127.0.0.1d]c@anon-20191002_181700-706:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQo127.0.0.1d]c@anon-20191002_181700-705:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAo127.0.0.1d]c@anon-20191002_181700-704:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAo127.0.0.1d]c@anon-20191002_181700-703:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQo127.0.0.1d]c@anon-20191002_181700-702:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwo127.0.0.1d]c@anon-20191002_181700-701:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAo127.0.0.1 [ u J {}  s H qFqFoDoDmBk@kB L ! )R' wsHT P % y N # *Q!GwLdUoDplyVUogXDzu:localhost:8800  7*Q!GwLdUoDplyVUogXDzu:localhost:8800  6*Q!GwLdUoDplyVUogXDzu:localhost:8800  5*Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800  *Q!GSxvxNevpCiwmFCHys:localhost:8800 ~ *Q!GSxvxNevpCiwmFCHys:localhost:8800 } *Q!GSxvxNevpCiwmFCHys:localhost:8800 | *Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800(Q!GixhPUMvtKSWoKRgvw:localhost:880054(Q!GixhPUMvtKSWoKRgvw:localhost:880043(Q!GixhPUMvtKSWoKRgvw:localhost:880032(Q!GixhPUMvtKSWoKRgvw:localhost:880021(Q!GixhPUMvtKSWoKRgvw:localhost:880010(Q!GixhPUMvtKSWoKRgvw:localhost:88000/*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800~*Q!GiSxJsKZhQVHBkrVPn:localhost:8800}*Q!GiSxJsKZhQVHBkrVPn:localhost:8800|~*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!FklhVuCInffbDxunWv:localhost:88008=*Q!FklhVuCInffbDxunWv:localhost:88007<*Q!FklhVuCInffbDxunWv:localhost:88006;*Q!FklhVuCInffbDxunWv:localhost:88005:*Q!GsjDgpaxdwYfnefiWO:localhost:8800,*Q!GsjDgpaxdwYfnefiWO:localhost:8800+*Q!GsjDgpaxdwYfnefiWO:localhost:8800**Q!GwLdUoDplyVUogXDzu:localhost:8800  8*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HAFNBarGuVZuWCgwWM:localhost:8800--*Q!HAFNBarGuVZuWCgwWM:localhost:8800,,*Q!HAFNBarGuVZuWCgwWM:localhost:8800++*Q!HAFNBarGuVZuWCgwWM:localhost:8800***Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GwLdUoDplyVUogXDzu:localhost:8800  3*Q!GwLdUoDplyVUogXDzu:localhost:8800  2*Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GsjDgpaxdwYfnefiWO:localhost:8800/!*Q!GsjDgpaxdwYfnefiWO:localhost:8800. *Q!GsjDgpaxdwYfnefiWO:localhost:8800-*Q!HAFNBarGuVZuWCgwWM:localhost:8800))*Q!HAFNBarGuVZuWCgwWM:localhost:8800((*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwLdUoDplyVUogXDzu:localhost:8800  4 Y iFoDmBk@T)}R' { P % y N # w L ! u J  c8 s H q>g<e:*Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!FklhVuCInffbDxunWv:localhost:880088*Q!FklhVuCInffbDxunWv:localhost:880077*Q!FklhVuCInffbDxunWv:localhost:880066*Q!FklhVuCInffbDxunWv:localhost:880055*Q!FklhVuCInffbDxunWv:localhost:880044*Q!FklhVuCInffbDxunWv:localhost:880033*Q!FklhVuCInffbDxunWv:localhost:880022*Q!FklhVuCInffbDxunWv:localhost:880011*Q!FklhVuCInffbDxunWv:localhost:880000*Q!FklhVuCInffbDxunWv:localhost:8800//*Q!FklhVuCInffbDxunWv:localhost:8800..*Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EyEaTZElOkdURKbEXo:localhost:880099*Q!EyEaTZElOkdURKbEXo:localhost:880088*Q!EyEaTZElOkdURKbEXo:localhost:880077*Q!EyEaTZElOkdURKbEXo:localhost:880066*Q!EieRtaCFZJJCIOkRPp:localhost:8800uu*Q!EieRtaCFZJJCIOkRPp:localhost:8800tt*Q!EieRtaCFZJJCIOkRPp:localhost:8800ss*Q!EieRtaCFZJJCIOkRPp:localhost:8800rr*Q!EieRtaCFZJJCIOkRPp:localhost:8800qq*Q!EieRtaCFZJJCIOkRPp:localhost:8800pp*Q!EieRtaCFZJJCIOkRPp:localhost:8800oo*Q!EieRtaCFZJJCIOkRPp:localhost:8800nn*Q!EieRtaCFZJJCIOkRPp:localhost:8800mm*Q!EieRtaCFZJJCIOkRPp:localhost:8800ll*Q!EieRtaCFZJJCIOkRPp:localhost:8800kk*Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyEaTZElOkdURKbEXo:localhost:8800==*Q!EyEaTZElOkdURKbEXo:localhost:8800<<*Q!EyEaTZElOkdURKbEXo:localhost:8800;;*Q!EyEaTZElOkdURKbEXo:localhost:8800:: ~z v r n j fb^ZVRNJFeeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800eeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g!duCKuavMBSfRbTFPsc:localhost:8800eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck!duCKuavMBSfRbTFPsc:localhost:8800eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800eeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800}eeQ$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800|eeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800{eeQ$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800zeeQ$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800yeeQ$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800xeeQ$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800weeQ$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800veeQ$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800  y~eQ_ $y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 117, "stream_ordering": 285}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo"], "prev_events": ["$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo"], "type": "m.room.aliases", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-85:localhost:8800", "content": {"aliases": ["#test-20191002_181700-5:localhost:8800", "#__ANON__-11:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040525220, "hashes": {"sha256": "u1OM75+1eg3D7W8e3SwWDQPJ8aLGVEcjkhGqJCmMQw8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GFMJtNvI+4XWAD7i5cisHlEmpcPeUh1Pfm2W1/XCkrX6zEW9ISVI4ENz46j1SHlMRA+cOZSHaSNV8e5IUUCAA"}}, "unsigned": {"age_ts": 1570040525220, "replaces_state": "$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0"}}ReQ_3$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 117, "stream_ordering": 284}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og"], "prev_events": ["$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0"], "type": "m.room.member", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-85:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-85", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-85:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040524217, "hashes": {"sha256": "OsCHjeYyRffh2RDMz7wIYCctSqAEIfGGl8IdTxGp/O0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dfohePob8K4X0enq85jhH0SADDl5oBBB23RkRLtU3pnoTVPadjUExBldpV1O2JbPSgn+RrVLa7wsxqqhewMYBA"}}, "unsigned": {"age_ts": 1570040524217}}eQ_I$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 283}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU"], "type": "m.room.aliases", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"aliases": ["#test-20191002_181700-5:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040523589, "hashes": {"sha256": "nzHDdajUkb6032FFBonZVHpn0Qvqt5lzY88e1T8fLhM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZX5hIcqJ9Nn9o/cnIRrOzVw7Bvsh9FnocxbS/Mg/6EqcURKj6nndPou0cboz4teD7I6pQ3zH3/0/sD5eBkBiCg"}}, "unsigned": {"age_ts": 1570040523589}}eQ_$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 282}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og"], "type": "m.room.history_visibility", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040522548, "hashes": {"sha256": "IlOxGdxY0yX40YRrhQmT6f+oVUP8Z6qVfZRKyIN7kdU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "11WRxamBEtcOC79c8rk9PVemq0WAPUd68Vbbk4MPZNahPy3vs1ehJkV8e9VCOdLdWRvt32b6DpHN0pGWz8nXAw"}}, "unsigned": {"age_ts": 1570040522548}} x/ [ `A'j. ) n  sW[ -s8z=)P s s s s s s s s<_^Q']!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:88004Q# !HXfrGcvJCbRItyQLVE:localhost:8800m.room.nameBQ? !HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibility:Q/ !HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rules<Q3 !HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels^Q']!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:88006Q' !HXfrGcvJCbRItyQLVE:localhost:8800m.room.create ^Q']!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829EQ))!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800BQ? !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility:Q/ !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules?Q9 !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias<Q3 !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levels^Q']!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:88006Q' !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create^Q']!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800<Q3 !HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levelsK^Q']!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800N^Q']!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800J:Q/ !HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rulesLBQ? !HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibilityM6Q' !HhYREfUiJTpjWmOuPF:localhost:8800m.room.createI<Q3 !HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels^Q']!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800^Q']!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800:Q/ !HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rulesBQ? !HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibility6Q' !HcMGemcRrLnLprOJJR:localhost:8800m.room.create?Q9 !HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_aliasEQ))!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800<Q3 !HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels^Q']!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800^Q']!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800:Q/ !HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rulesBQ? !HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility<Q3 !HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_access6Q' !HZqzpRgqekPOtxstVc:localhost:8800m.room.create<Q3 !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels9^Q']!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800<^Q']!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:88008:Q/ !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rules:BQ? !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibility;6Q' !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create7c^Q']!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800:Q/ !HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rulesBQ? !HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibility6Q' !HusOrLtWZTLbmQZxmm:localhost:8800m.room.createy ! 5 A k q }5;GqwgQ/ e!EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rules$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugiQ3 e!EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levels$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms Q'[e!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-93:localhost:8800$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPocQ' e!EyEaTZElOkdURKbEXo:localhost:8800m.room.create$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo Q'[e !TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0 Q'[e !TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbki Q3 e !TWETXUgfFZafDdbqLS:localhost:8800m.room.guest_access$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1joo Q? e !TWETXUgfFZafDdbqLS:localhost:8800m.room.history_visibility$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUg Q/ e !TWETXUgfFZafDdbqLS:localhost:8800m.room.join_rules$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYiQ3 e!TWETXUgfFZafDdbqLS:localhost:8800m.room.power_levels$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20 Q'[e!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-91:localhost:8800$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8cQ' e!TWETXUgfFZafDdbqLS:localhost:8800m.room.create$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc Q'[e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-88:localhost:8800$BeV5z_4UPE_DRrVHJtOw1oX23Hq5zj73SDAUFQ1QoNkiQ3 e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.guest_access$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byooQ? e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.history_visibility$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqYgQ/ e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.join_rules$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bwiQ3 e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.power_levels$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ Q'[e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-89:localhost:8800$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQcQ' e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.create$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA ~Q'[e!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY }Q'[e!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUgi|Q3 e!duCKuavMBSfRbTFPsc:localhost:8800m.room.guest_access$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-go{Q? e!duCKuavMBSfRbTFPsc:localhost:8800m.room.history_visibility$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0CkgzQ/ e!duCKuavMBSfRbTFPsc:localhost:8800m.room.join_rules$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJciyQ3 e!duCKuavMBSfRbTFPsc:localhost:8800m.room.power_levels$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE xQ'[e!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-86:localhost:8800$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMcwQ' e!duCKuavMBSfRbTFPsc:localhost:8800m.room.create$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675olvQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$daMdPBvh4bjssCbadTihtjyoYVAW4iIPKay6Hjm_6CQruQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEltQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JErsQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8 rQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-85:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yorqQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0 9Oc( w <  Q  e + } C a ,]IEv1cO ;l6DEQ@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800 DEQ@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800DEQ@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800DEQ@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800DEQ@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800DEQ@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800DEQ@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800DEQ@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800DEQ@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800DEQ@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800DEQ@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800CCQ@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800DEQ@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800DEQ@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800DEQ@__ANON__-23:localhost:42455!TSFcaXDBqrCREHRHxv:localhost:8800DEQ@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800DEQ@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:88004E1@__ANON__-20:localhost:42455!6:localhost:42455DEQ@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800DEQ@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800DEQ@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800DEQ@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800DEQ@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800DEQ@__ANON__-14:localhost:42455!UluPYLGXtInKDTjRzp:localhost:8800DEQ@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800DEQ@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800DEQ@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:88004E1@__ANON__-10:localhost:42455!5:localhost:424553C1@__ANON__-0:localhost:42455!0:localhost:424559/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:88009/Q@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88009/Q@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88009/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:88009/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:88009/Q@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:88009/Q@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:88009/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800:1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800:1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800:1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800:1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800:1Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:88009/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800:1Q@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800:1Q@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800:1Q@12:localhost:8800!VCSCNemqikJZiRtxrs:localhost:8829:1Q@11:localhost:8800!StEnDjTJToXKXsOHNf:localhost:8829 2v1K d  k : J Z j z*:JZ jz*:DEQ@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800%qDEQ@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800+DEQ@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800)DEQ@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800'O]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800oO]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800lO]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800aO]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800dO]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800fO]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800jO]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800nO]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800hO]Q@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800kO]Q@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800`O]Q@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800cO]Q@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800eO]Q@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800iO]Q@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800mO]Q@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800gO]Q@anon-20191002_181700-111:localhost:8829!egCvzKpbEwmuvDoBTb:localhost:8800_O]Q@anon-20191002_181700-111:localhost:8829!egCvzKpbEwmuvDoBTb:localhost:8800^O]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800\O]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800[O]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800ZO]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800YO]Q@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800]O]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800XO]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800WO]Q@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800VO]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800UO]Q@anon-20191002_181700-105:localhost:8829!SBEprlZiuliFNSfNmz:localhost:8800TO]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800SO]Q@anon-20191002_181700-103:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800RO]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800QO]Q@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800OO]Q@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800MO]Q@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800PO]Q@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800NDEQ@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800#DEQ@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800!DEQ@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:88005E3@__ANON__-51:localhost:42455!13:localhost:424555E3@__ANON__-50:localhost:42455!13:localhost:424555E3@__ANON__-49:localhost:42455!12:localhost:42455DEQ@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:88005E3@__ANON__-47:localhost:42455!11:localhost:424555E3@__ANON__-46:localhost:42455!10:localhost:424554E1@__ANON__-45:localhost:42455!9:localhost:42455DEQ@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800DEQ@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800 E &L r  + Q w 0V|Aw 0V|5[hk[ @anon-20191002_181700-71:localhost:8800@anon-20191002_181700-71:localhost:8800 anon-20191002_181700-71k[ @anon-20191002_181700-72:localhost:8829@anon-20191002_181700-72:localhost:8829 anon-20191002_181700-72k[ @anon-20191002_181700-70:localhost:8800@anon-20191002_181700-70:localhost:8800 anon-20191002_181700-70k[ @anon-20191002_181700-68:localhost:8800@anon-20191002_181700-68:localhost:8800 anon-20191002_181700-68g[@anon-20191002_181700-66:localhost:8829@anon-20191002_181700-66:localhost:8829 My remote name here_[u@anon-20191002_181700-67:localhost:8800@anon-20191002_181700-67:localhost:8800 My name herek[ @anon-20191002_181700-64:localhost:8800@anon-20191002_181700-64:localhost:8800 anon-20191002_181700-64_[u@anon-20191002_181700-65:localhost:8800@anon-20191002_181700-65:localhost:8800 My name herek[ @anon-20191002_181700-63:localhost:8800@anon-20191002_181700-63:localhost:8800 anon-20191002_181700-63k[ @anon-20191002_181700-62:localhost:8800@anon-20191002_181700-62:localhost:8800 anon-20191002_181700-62k[ @anon-20191002_181700-61:localhost:8800@anon-20191002_181700-61:localhost:8800 anon-20191002_181700-61k[ @anon-20191002_181700-39:localhost:8800@anon-20191002_181700-39:localhost:8800 anon-20191002_181700-39k[ @anon-20191002_181700-38:localhost:8800@anon-20191002_181700-38:localhost:8800 anon-20191002_181700-38k[ @anon-20191002_181700-37:localhost:8800@anon-20191002_181700-37:localhost:8800 anon-20191002_181700-37k[ @anon-20191002_181700-36:localhost:8800@anon-20191002_181700-36:localhost:8800 anon-20191002_181700-36k[ @anon-20191002_181700-35:localhost:8800@anon-20191002_181700-35:localhost:8800 anon-20191002_181700-35k [ @anon-20191002_181700-34:localhost:8800@anon-20191002_181700-34:localhost:8800 anon-20191002_181700-34k [ @anon-20191002_181700-33:localhost:8800@anon-20191002_181700-33:localhost:8800 anon-20191002_181700-33k [ @anon-20191002_181700-32:localhost:8800@anon-20191002_181700-32:localhost:8800 anon-20191002_181700-32k [ @anon-20191002_181700-31:localhost:8800@anon-20191002_181700-31:localhost:8800 anon-20191002_181700-31k [ @anon-20191002_181700-27:localhost:8800@anon-20191002_181700-27:localhost:8800 anon-20191002_181700-27k[ @anon-20191002_181700-26:localhost:8800@anon-20191002_181700-26:localhost:8800 anon-20191002_181700-26k[ @anon-20191002_181700-25:localhost:8800@anon-20191002_181700-25:localhost:8800 anon-20191002_181700-25k[ @anon-20191002_181700-24:localhost:8800@anon-20191002_181700-24:localhost:8800 anon-20191002_181700-24k[ @anon-20191002_181700-22:localhost:8800@anon-20191002_181700-22:localhost:8800 anon-20191002_181700-22k[ @anon-20191002_181700-23:localhost:8800@anon-20191002_181700-23:localhost:8800 anon-20191002_181700-23k[ @anon-20191002_181700-21:localhost:8800@anon-20191002_181700-21:localhost:8800 anon-20191002_181700-21k[ @anon-20191002_181700-20:localhost:8800@anon-20191002_181700-20:localhost:8800 anon-20191002_181700-20k[ @anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800 anon-20191002_181700-16  N t  -S&L r  + [{ +Kk;[n8]@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800 anon-20191002_181700-113n7]@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800 anon-20191002_181700-112n6]@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-110:localhost:8800 anon-20191002_181700-110n5]@anon-20191002_181700-109:localhost:8800@anon-20191002_181700-109:localhost:8800 anon-20191002_181700-109n4]@anon-20191002_181700-108:localhost:8800@anon-20191002_181700-108:localhost:8800 anon-20191002_181700-108n3]@anon-20191002_181700-107:localhost:8800@anon-20191002_181700-107:localhost:8800 anon-20191002_181700-107n2]@anon-20191002_181700-106:localhost:8800@anon-20191002_181700-106:localhost:8800 anon-20191002_181700-106n1]@anon-20191002_181700-104:localhost:8800@anon-20191002_181700-104:localhost:8800 anon-20191002_181700-104n0]@anon-20191002_181700-102:localhost:8800@anon-20191002_181700-102:localhost:8800 anon-20191002_181700-102n9]@anon-20191002_181700-114:localhost:8800@anon-20191002_181700-114:localhost:8800 anon-20191002_181700-114k%[ @anon-20191002_181700-84:localhost:8800@anon-20191002_181700-84:localhost:8800 anon-20191002_181700-84k$[ @anon-20191002_181700-83:localhost:8800@anon-20191002_181700-83:localhost:8800 anon-20191002_181700-83k#[ @anon-20191002_181700-82:localhost:8800@anon-20191002_181700-82:localhost:8800 anon-20191002_181700-82k"[ @anon-20191002_181700-81:localhost:8800@anon-20191002_181700-81:localhost:8800 anon-20191002_181700-81k![ @anon-20191002_181700-79:localhost:8800@anon-20191002_181700-79:localhost:8800 anon-20191002_181700-79k [ @anon-20191002_181700-77:localhost:8800@anon-20191002_181700-77:localhost:8800 anon-20191002_181700-77k[ @anon-20191002_181700-75:localhost:8800@anon-20191002_181700-75:localhost:8800 anon-20191002_181700-75k[ @anon-20191002_181700-74:localhost:8800@anon-20191002_181700-74:localhost:8800 anon-20191002_181700-74n/]@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-101:localhost:8800 anon-20191002_181700-101k.[ @anon-20191002_181700-99:localhost:8800@anon-20191002_181700-99:localhost:8800 anon-20191002_181700-99k-[ @anon-20191002_181700-97:localhost:8800@anon-20191002_181700-97:localhost:8800 anon-20191002_181700-97k,[ @anon-20191002_181700-95:localhost:8800@anon-20191002_181700-95:localhost:8800 anon-20191002_181700-95k+[ @anon-20191002_181700-93:localhost:8800@anon-20191002_181700-93:localhost:8800 anon-20191002_181700-93k*[ @anon-20191002_181700-91:localhost:8800@anon-20191002_181700-91:localhost:8800 anon-20191002_181700-91k)[ @anon-20191002_181700-89:localhost:8800@anon-20191002_181700-89:localhost:8800 anon-20191002_181700-89k([ @anon-20191002_181700-87:localhost:8800@anon-20191002_181700-87:localhost:8800 anon-20191002_181700-87k'[ @anon-20191002_181700-86:localhost:8800@anon-20191002_181700-86:localhost:8800 anon-20191002_181700-86k&[ @anon-20191002_181700-85:localhost:8800@anon-20191002_181700-85:localhost:8800 anon-20191002_181700-85 Vo M + xVP[a!E@anon-20191002_181700-97:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCgJTJHHIHPPZ127.0.0.1Perl + Net::Async::HTTP/0.44m+O[a!E@anon-20191002_181700-95:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCgRLXRFTIWZT127.0.0.1Perl + Net::Async::HTTP/0.44mN[a!E@anon-20191002_181700-93:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6CgJXLBIPXXNB127.0.0.1Perl + Net::Async::HTTP/0.44mAM[a!E@anon-20191002_181700-90:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCgBJDBLNAUER127.0.0.1Perl + Net::Async::HTTP/0.44mL[a!E@anon-20191002_181700-91:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCgUIADKEMPGA127.0.0.1Perl + Net::Async::HTTP/0.44muIK[a!E@anon-20191002_181700-88:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCgGEBSMXLRDI127.0.0.1Perl + Net::Async::HTTP/0.44mqJ[a!E@anon-20191002_181700-89:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCgOFESILMBJH127.0.0.1Perl + Net::Async::HTTP/0.44ma+I[a!E@anon-20191002_181700-87:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8CgNPXBGXDHGZ127.0.0.1Perl + Net::Async::HTTP/0.44mYH[a!E@anon-20191002_181700-86:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30CgYRHRLSEQYW127.0.0.1Perl + Net::Async::HTTP/0.44m?܃G[a!E@anon-20191002_181700-85:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCgITOHGGKZTV127.0.0.1Perl + Net::Async::HTTP/0.44m, a} { y w u sqomkigeca~eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~~eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~}eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~|eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~{eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~zeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~yeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~xeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~weeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~veeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~ueeQ$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~teeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800~seeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800  2 d/aex[!a@anon-20191002_181700-99:localhost:8800ZATUVUGXMYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCgew[!a@anon-20191002_181700-96:localhost:8800TASTZEHNVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCgdv[!a@anon-20191002_181700-97:localhost:8800JTJHHIHPPZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCgdu[!a~@anon-20191002_181700-95:localhost:8800RLXRFTIWZTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCgdt[!a}@anon-20191002_181700-93:localhost:8800JXLBIPXXNBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6Cgds[!a|@anon-20191002_181700-90:localhost:8800BJDBLNAUERMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCgdr[!a{@anon-20191002_181700-91:localhost:8800UIADKEMPGAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCgdq[!az@anon-20191002_181700-88:localhost:8800GEBSMXLRDIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCgdp[!ay@anon-20191002_181700-89:localhost:8800OFESILMBJHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCgdo[!ax@anon-20191002_181700-86:localhost:8800YRHRLSEQYWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30Cgdn[!aw@anon-20191002_181700-87:localhost:8800NPXBGXDHGZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8Cg t 2 R   : Zdbl!%jt Q'[e?!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcd Q' e>!RmdhCjvouVLmyIHjaM:localhost:8800m.room.create$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq87 Q'[ee=!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4 Q'[e  f ^eeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800ӁeeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800FP33Q$44:localhost:42455$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 _3QQ$44:localhost:42455$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 _3QQ$43:localhost:42455$1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 _3QQ$40:localhost:42455$1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 ՁeeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800فeeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800ׁeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:88009eeQ$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800 feeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800 сeeQ$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800 eeQ$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg!ubmTdQFAhrhZkGULDx:localhost:8800 *eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800P33Q$49:localhost:42455$46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$49:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$46:localhost:42455$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$46:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$45:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$48:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 ށeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800 oeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800deeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800eeQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800JeeQ$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800 !|t 2 d n  ,  $Rx`p.8 |eQ'[$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829geQ3 $IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_accessmeQ? $RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibilityeeQ/ $w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rulesg eQ3 $vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levels eQ'[$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800a eQ' $ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.create eQ'[$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829 eQ'[$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829geQ3 $gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800m.room.guest_accessmeQ? $2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800m.room.history_visibilityeeQ/ $cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rulesgeQ3 $5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levelseQ'[$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-93:localhost:8800aeQ' $GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800m.room.createeQ'[$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800eQ'[$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800geQ3 $iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800m.room.guest_accessmeQ? $ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800m.room.history_visibilitye~eQ/ $HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800m.room.join_rulesg}eQ3 $xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800m.room.power_levels|eQ'[$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-91:localhost:8800a{eQ' $VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800m.room.creategzeQ3 $IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo!HAFNBarGuVZuWCgwWM:localhost:8800m.room.guest_accessmyeQ? $IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY!HAFNBarGuVZuWCgwWM:localhost:8800m.room.history_visibilityexeQ/ $-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw!HAFNBarGuVZuWCgwWM:localhost:8800m.room.join_rulesgweQ3 $OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800m.room.power_levelsveQ'[$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-89:localhost:8800 [X0h@xP(`8`8pH X 0X0  h @  x P ( ` 8  pH  p H h@'Q!GSxvxNevpCiwmFCHys:localhost:8800 q'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800 m'Q!FZOLkaLbBpaibrbHZx:localhost:8800 l'Q!FZOLkaLbBpaibrbHZx:localhost:8800 k'Q!FZOLkaLbBpaibrbHZx:localhost:8800 j'Q!FZOLkaLbBpaibrbHZx:localhost:8800 i'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800<'Q!EyEaTZElOkdURKbEXo:localhost:8800;'Q!EyEaTZElOkdURKbEXo:localhost:8800:'Q!EyEaTZElOkdURKbEXo:localhost:88009'Q!EyEaTZElOkdURKbEXo:localhost:88008'Q!EyEaTZElOkdURKbEXo:localhost:88007'Q!EyEaTZElOkdURKbEXo:localhost:88006'Q!EyEaTZElOkdURKbEXo:localhost:88005'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:88007'Q!FklhVuCInffbDxunWv:localhost:88006'Q!FklhVuCInffbDxunWv:localhost:88005'Q!FklhVuCInffbDxunWv:localhost:88004'Q!FklhVuCInffbDxunWv:localhost:88003'Q!FklhVuCInffbDxunWv:localhost:88002'Q!FklhVuCInffbDxunWv:localhost:88001'Q!FklhVuCInffbDxunWv:localhost:88000'Q!FklhVuCInffbDxunWv:localhost:8800/'Q!FklhVuCInffbDxunWv:localhost:8800.'Q!FklhVuCInffbDxunWv:localhost:8800-'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800 fX[C+ i 7  o = 4;yGQ u C  { I  O U#[)a/g5m" sZA1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o/3$40:localhost:424551e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurases1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc m1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw 1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI3$45:localhost:424553$45:localhost:424553$45:localhost:424553$44:localhost:42455 3$44:localhost:42455 3$44:localhost:424553$44:localhost:424553$43:localhost:424553$43:localhost:424553$43:localhost:424551e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasf3$40:localhost:424553$40:localhost:424551e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc o1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw 1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM 1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM 1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM 1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE]1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE\1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE[1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cn1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg,1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM>1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM=1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM<1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kg1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kf1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-ke1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c 1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c 1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c 1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g 71e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g 61e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0 1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0 1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0 1e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IK1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kH1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kG1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kF1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY'1$3:localhost:444051$3:localhost:444051$3:localhost:444051$3:localhost:424551$3:localhost:424551$3:localhost:424551$3:localhost:419851$3:localhost:419851$3:localhost:419851e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoX1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoW1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoV1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU@1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU?1e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU3$45:localhost:424551e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc n  #h/eQ__$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 304}{"auth_events": ["$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "type": "m.room.power_levels", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"users": {"@anon-20191002_181700-91:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040543835, "hashes": {"sha256": "hRGncxreeBZKHJgkol5cR9zK+oGMEZAIbbI5LR+SEb0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wSIkOq44lB7pNnE99YOUD/EiIRp/2mh1whhuzcG5+6JLS8Y8ov23Eh8z+L82FuPJRwDhnzkKQzqgY3kQOdrMDw"}}, "unsigned": {"age_ts": 1570040543835}}r.eQ_s$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 303}{"auth_events": ["$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc"], "prev_events": ["$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc"], "type": "m.room.member", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-91", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-91:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040543371, "hashes": {"sha256": "ahVlYr8XYxHFiMpg5ODxKHMlMjmx3b9zWliETNKQDl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vJg4da0DfSgIqwnrbomVEzNEtMZxxPUJQa5MamZs9DhhxIIEb0AYsyMTZP3g3QkTls9+QEjk0A8J5wt8Qoy+Aw"}}, "unsigned": {"age_ts": 1570040543371}}f-eQ_[$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 302}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-91:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040542665, "hashes": {"sha256": "yPLB1YECa8D0A2K/iQdbZ3fgzZ6FA7TQ69LL/zAIJPs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bpoAEBkecAyqtgH+DI+xpkZ1i4Q/E4DryXv4jCpHJ0ZLMNcNSybhGQvsOp4x/j7n5zECflhdsNkaeX9QPP4ABw"}}, "unsigned": {"age_ts": 1570040542665}}y,eQ_$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo!HAFNBarGuVZuWCgwWM:localhost:8800{"token_id": 121, "stream_ordering": 301}{"auth_events": ["$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ", "$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA", "$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ"], "prev_events": ["$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY"], "type": "m.room.guest_access", "room_id": "!HAFNBarGuVZuWCgwWM:localhost:8800", "sender": "@anon-20191002_181700-89:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040540908, "hashes": {"sha256": "50LOwBZRaBxWO3m9ZEEmNvHnKpV54hFD81/HRddo4qQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AuFWxrBMGCCuxVDzIZXpPR5oiq0L1R91QpfqX708Uj1o2Psqdhg8xmRZ60ekgdhLRuqWAHeM3brffWU3O0+lAQ"}}, "unsigned": {"age_ts": 1570040540908}} a} { y w u sqomkigeca~0eeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~/eeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~.eeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~-eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~,eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~+eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~*eeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~)eeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~(eeQ$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~'eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800~&eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~%eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~$eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~#eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800~"eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~!eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~ eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800 a} { y w u sqomkigeca]Q]e!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-125:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Disjoin\Q]e!GwXGurbyEmykmmHcHJ:localhost:8800@anon-20191002_181700-124:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsjoin[Q]e!VWYMJxEviBNDdJCuKT:localhost:8800@anon-20191002_181700-123:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsjoinZQ]e!CgVBWWcRJoHEcwoLcq:localhost:8800@anon-20191002_181700-120:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gjoinYQ]e!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-119:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYjoinXQ]e!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-118:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8joinWQ]e!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-117:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEjoinVQ]e!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-116:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYjoinUQ]e!msMfSdLIAvklSSAnci:localhost:8800@anon-20191002_181700-115:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQjoinTQ]e!GgUNbVXspVTpOlaHBl:localhost:8800@anon-20191002_181700-114:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-EjoinSQ]e!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-113:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8joinRQ]e!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-112:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-AjoinQQ]e!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-113:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYjoinPQ]e!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-112:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wjoinOQ]e!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-113:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEjoinNQ]e!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-112:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsjoinMQ]e!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-113:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5AjoinLQ]e!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-112:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsjoinKQ]e!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-113:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkjoinJQ]e!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-112:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMjoinIQ]e!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-113:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUjoinHQ]e!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-112:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYjoinGQ]e!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-113:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wjoinFQ]e!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-112:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIjoinEQ]e!egCvzKpbEwmuvDoBTb:localhost:8800@anon-20191002_181700-109:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUjoinDQ]e!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-110:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukjoinCQ]e!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-109:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcjoinBQ]e!wIhMbfQzYbJobPdwyi:localhost:8800@anon-20191002_181700-108:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wjoinAQ]e!wIhMbfQzYbJobPdwyi:localhost:8800@anon-20191002_181700-107:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEjoin@Q]e!cSUQGmpIsSCBAVTOHo:localhost:8800@anon-20191002_181700-106:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygjoin?Q]e!SBEprlZiuliFNSfNmz:localhost:8800@anon-20191002_181700-104:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsjoin F7Uq8 T  p 7W T  p P  e E & s:TVpr9Uq878e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsosha2568e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUsha2568e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5ksha2568e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0sha256~8e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurassha256i8e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHksha25618e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEsha256m8e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mgsha256U8e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgsha2568e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74csha2568e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egsha2568e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgsha256 8e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIsha256 8e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMsha256 8e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMsha256a8e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-ksha256N8e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5csha2568e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675osha2568e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gsha2568e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0sha2568e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4Isha256 \8e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExssha256L8e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuosha2568e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMsha2568e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5Usha2568e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-Asha256}8e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1ksha256 8e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLksha256g8e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iEsha256 8e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIsha256z8e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYsha2568e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIsha256 {8e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Asha256 8e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_Msha256{1$3:localhost:44405sha256 1$3:localhost:42455sha256 T1$3:localhost:41985sha256 1$3:localhost:37265sha256 3$39:localhost:42455sha256 8e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujosha256b3$38:localhost:42455sha256 8e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaosha256 T3$37:localhost:42455sha256 8e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugsha256 N3$33:localhost:42455sha256 8e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAsha256J8e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4sha256 8e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYsha2568e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Qsha2568e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlssha256E8e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0sha25668e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0ksha2567e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wsha256 8e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUsha2568e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikksha2568e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAsha2568e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgsha2568e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0sha2568e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwsha2568e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYsha256k8e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Msha2568e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMsha2568e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAosha2568e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6Esha25698e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hgsha2568e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mksha256 .8e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMsha2568e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerAsha2568e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7ksha256 M8e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doosha256C  y2eQ_$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 307}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU"], "type": "m.room.guest_access", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040545783, "hashes": {"sha256": "DIEq9fYffXIXFn6PwFyEvQ8Ta5qNZI8eWbodZzsQV3A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dV5/ah8PHbyuQg17dmN0VvvGlH93NuHP/xdUY0hRUzEmS3GvRrpShQatfYoEL+KvPyEO/WcauV00Z+82CAFaDA"}}, "unsigned": {"age_ts": 1570040545783}}1eQ_$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 306}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY"], "type": "m.room.history_visibility", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040545057, "hashes": {"sha256": "L37Qe6WRXzYQKvaeoJRY9tL62krSGG1ztveVcXZBp1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mnsom60jAQ+o9UKhzHHE9A9P1EkPnu6aV3xHnWqIjEUUUvqdFePoxwmROz6ZRH7tBwflA4k+ltWHdcx3whB8AA"}}, "unsigned": {"age_ts": 1570040545057}}r0eQ_s$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 305}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20"], "type": "m.room.join_rules", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040544416, "hashes": {"sha256": "Q7rr/RAjQHDWohCO8Crw37CqRPZ5RzuZlFEz8b/7md8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nJZCWUjjGRCZ6lMxiduZnA0CV7HdVnGXGF8jw8xWtNuxbzO9ZxXlXOagyZa5UQDyJVkRWrbipYkepVb+7J4KBA"}}, "unsigned": {"age_ts": 1570040544416}} Ezupkfa\WRMHC>94/*%  {vqlgb]XSNID?:5/)#  { u o i c ] W Q K E ? 9 3 - ' !      y s m g a [ U O I C = 7 1 + %    } w q k e _ Y S M G A ; 5 / ) #     { u o i c ] W Q K E ? 9 3 - ' !      y s m g a [ U O I C = 7 1 + %     }wqke_YSMGA;5/)# {uoic]WQKE?93-'! ysmga[UOIC=71+% }wqke_YSMGA;5/)# {uoic]WQKEEEEEEEEEEEEEEEE?93-'! t                                                                                                           ~ } | { w v u t s r p n m l j i f c b a ^ \ [ Z Y W V S R Q O N K J I G E D C B @ > = < ; 9 7 6 5 3 1 0 / - + * ) ' $ # "                                                                                                    ~ } z y x u t s p o n k j g f e b a ` ] \ [ X V S R Q N K J I H F C B A @ > < ; : 8 7 6 5 3 1 0 / . - + ) ( ' & % #Z                                                                                              ~ | { z y w v u t q p o n l k j i g f e d b a ` _ ] \ [ Z X W V U S I H G F D B A @ > = < ; 9 8 7 5 4 3 2 0 / . - + * ) ( & % $ # !                              |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 , &    ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ h                                  } | { z x w v u s r q o n m l k j h g f c b ` _ ^ ] \ [ Z Y X U T S R Q O M L K I H G F D C B A @ ? > ; 9 8 5 4 3 2 1 0 / - , + ( ' & % $ # "                                                                                                                           } z y x w u s r q o n m l j i h g e b a ` ^ ] \ [ Y X W V T S R Q O I H G E B  @ ?  = < 2 : 6 5 0 / . , * ( & $ " !                                                                                                                       ~ } { y x w v t r q p o m k j i h f d c a ` ^ \ [ Y X V T S R Q O M L J I G F E D C A ? > = < : 9 6 5 4 2 0 / . - + * ) ( & % $ # !                auM'_7b:tL$ \ 4 l D  | T ,  d <  t L $\4 lD}U-e=oGW/.2'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570042731243YuOkC:localhost:8800'Q$1570042730242eYFxu:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800'Q$1570042719225dSNgP:localhost:8800%M$15700427177BOUHn:localhost:8829'Q$1570042714220vWWFN:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 'Q$1570043388312YDkJu:localhost:8800 &O$157004338812XhwjX:localhost:8829 'Q$1570043387311DGzYi:localhost:8800 'Q$1570043386310bGMNl:localhost:8800 'Q$1570043385309imdbl:localhost:8800 'Q$1570043384308gPogh:localhost:8800 'Q$1570043383307bhuDV:localhost:8800 'Q$1570043382306WhWIU:localhost:8800 'Q$1570043380304caenp:localhost:8800 'Q$1570043379303bCgUn:localhost:8800 'Q$1570043378302mKBGD:localhost:8800 ~'Q$1570043377301OraEa:localhost:8800 }'Q$1570043377300CLPUi:localhost:8800 |'Q$1570043375299fbyXJ:localhost:8800 {'Q$1570043374298UIMFg:localhost:8800 z'Q$1570043373297SOjrf:localhost:8800 y'Q$1570043372296yAiBq:localhost:8800 x'Q$1570043371295coDXo:localhost:8800 w'Q$1570043369294rquKy:localhost:8800 v'Q$1570043369293ssSMv:localhost:8800 u'Q$1570043368292FAoRb:localhost:8800 t'Q$1570043367291AEdax:localhost:8800 s'Q$1570043366290YSCqz:localhost:8800 r'Q$1570043364289XIEhE:localhost:8800 q'Q$1570043364288SCpzq:localhost:8800 p'Q$1570043363287eSyun:localhost:8800 o'Q$1570043362286KwXMK:localhost:8800 n'Q$1570043361285xsPbY:localhost:8800 m'Q$1570043354284IVfTL:localhost:8800 g'Q$1570043353283ubEdk:localhost:8800 f'Q$1570043352282iTcSU:localhost:8800 e'Q$1570043351281XHPOP:localhost:8800 d'Q$1570043350280ydSwy:localhost:8800 c'Q$1570043347278WlNld:localhost:8800 a'Q$1570043346277FsKPl:localhost:8800 `'Q$1570043346276qTXUF:localhost:8800 _'Q$1570043345275UDVPY:localhost:8800 ^'Q$1570043344274cabjv:localhost:8800 ]'Q$1570043341273LsXNn:localhost:8800 \'Q$1570043195270GcoLc:localhost:8800'Q$1570043195269hcCzg:localhost:8800'Q$1570043194268zlNeZ:localhost:8800'Q$1570043193267ZyDyW:localhost:8800'Q$1570043192266CXqej:localhost:8800'Q$1570043191265cqITi:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152260dkyqc:localhost:8800'Q$1570043151259knbjg:localhost:8800'Q$1570043150258cdaXl:localhost:8800%M$15700427439Hwxyi:localhost:8829'Q$1570042741254DKIYz:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042739252bWghU:localhost:8800'Q$1570042738251iukAg:localhost:8800'Q$1570042737250jmxWx:localhost:8800%M$15700427368TlZQs:localhost:8829'Q$1570042733246cYViL:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042732244zDmQh:localhost:8800 VwO'_7`:rJ" ^ 6  n F  ~ V .  f >  v N &^6nF~V.g?oGW/'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 ~'Q$1570043388312YDkJu:localhost:8800 y&O$157004338812XhwjX:localhost:8829 z'Q$1570043387311DGzYi:localhost:8800 x'Q$1570043386310bGMNl:localhost:8800 w'Q$1570043385309imdbl:localhost:8800 v'Q$1570043384308gPogh:localhost:8800 u'Q$1570043383307bhuDV:localhost:8800 t'Q$1570043382306WhWIU:localhost:8800 s'Q$1570043380304caenp:localhost:8800 r'Q$1570043379303bCgUn:localhost:8800 q'Q$1570043378302mKBGD:localhost:8800 p'Q$1570043377301OraEa:localhost:8800 o'Q$1570043377300CLPUi:localhost:8800 n'Q$1570043375299fbyXJ:localhost:8800 m'Q$1570043374298UIMFg:localhost:8800 l'Q$1570043373297SOjrf:localhost:8800 k'Q$1570043372296yAiBq:localhost:8800 j'Q$1570043371295coDXo:localhost:8800 i'Q$1570043369294rquKy:localhost:8800 h'Q$1570043369293ssSMv:localhost:8800 g'Q$1570043368292FAoRb:localhost:8800 f'Q$1570043367291AEdax:localhost:8800 e'Q$1570043366290YSCqz:localhost:8800 d'Q$1570043364289XIEhE:localhost:8800 c'Q$1570043364288SCpzq:localhost:8800 b'Q$1570043363287eSyun:localhost:8800 a'Q$1570043362286KwXMK:localhost:8800 `'Q$1570043361285xsPbY:localhost:8800 _'Q$1570043354284IVfTL:localhost:8800 Y'Q$1570043353283ubEdk:localhost:8800 X'Q$1570043352282iTcSU:localhost:8800 W'Q$1570043351281XHPOP:localhost:8800 V'Q$1570043350280ydSwy:localhost:8800 U'Q$1570043347278WlNld:localhost:8800 S'Q$1570043346277FsKPl:localhost:8800 R'Q$1570043346276qTXUF:localhost:8800 Q'Q$1570043345275UDVPY:localhost:8800 P'Q$1570043344274cabjv:localhost:8800 O'Q$1570043341273LsXNn:localhost:8800 N'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 'Q$1570043152261Skczg:localhost:8800 'Q$1570043152260dkyqc:localhost:8800 'Q$1570043151259knbjg:localhost:8800 'Q$1570043150258cdaXl:localhost:8800 &O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 4 o4r6eQ_s$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 311}{"auth_events": ["$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo"], "prev_events": ["$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo"], "type": "m.room.member", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-93", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-93:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040548997, "hashes": {"sha256": "LkWCcVRtNhWnCR5y+vdbuS31NjIK/jBVsddcVkJ1X40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rLMj7QF5Yvy+67QY05nmYS17ozkDQ+Std01SnIr8+n+S9DG1Hpk1xf6CmG1hjXqDtwhky/OE9OYPgDoDjd/Cw"}}, "unsigned": {"age_ts": 1570040548997}}f5eQ_[$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 310}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-93:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040548282, "hashes": {"sha256": "4r0Ta5YvTIKVaQORHa62o3FWORIKd4aV6ULQn2MStYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nK4Dp5OaFCaIgvjzeiG+QPucO/o4WFo2HplWodEZrVpNruupzX9l7TwFpwZJ+OfOb0BMKod7gSFmNVtNeM/sCg"}}, "unsigned": {"age_ts": 1570040548282}}W4eQ_=$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 124, "stream_ordering": 309}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"], "prev_events": ["$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"], "type": "m.room.member", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-90:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-90:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040547070, "hashes": {"sha256": "+KBZmLu9LNTuNV4zNkzyk/gby2Ennt70kb3dA8Vnyw8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SvGtmkjyKELx2mdApTEg6O78S9KGQ/X3sfp6bZepY5BbUmTmQrwZeAeopOBv1ceJgmCdCulZGx7VupFDTiMlDQ"}}, "unsigned": {"age_ts": 1570040547070, "replaces_state": "$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"}} 3eQ_)$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 308}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo"], "type": "m.room.member", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-90", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-90:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040546489, "hashes": {"sha256": "n71V5RQzyhPdAfnwSV1A2YqnwfVgw3SG7Jj/9f4gaZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oI/W+faj8cFQ+HmbpHUXqhSeg8fppOXdqwsvgkf+83quq2jcxjYoE7H5aAZDwic3L0/kVOG/80RARlhehiQjCw"}}, "unsigned": {"age_ts": 1570040546489, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-91:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-91:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-91", "avatar_url": null}, "sender": "@anon-20191002_181700-91:localhost:8800"}]}} \`:rJ" ^ 6  n F  ~ V .  f >  v N &^6nF~V.g?wO'_7oGW/'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 'Q$1570043388312YDkJu:localhost:8800 &O$157004338812XhwjX:localhost:8829 'Q$1570043387311DGzYi:localhost:8800 'Q$1570043386310bGMNl:localhost:8800 'Q$1570043385309imdbl:localhost:8800 'Q$1570043384308gPogh:localhost:8800 'Q$1570043383307bhuDV:localhost:8800 'Q$1570043382306WhWIU:localhost:8800 'Q$1570043380304caenp:localhost:8800 'Q$1570043379303bCgUn:localhost:8800 'Q$1570043378302mKBGD:localhost:8800 'Q$1570043377301OraEa:localhost:8800 'Q$1570043377300CLPUi:localhost:8800 'Q$1570043375299fbyXJ:localhost:8800 'Q$1570043374298UIMFg:localhost:8800 'Q$1570043373297SOjrf:localhost:8800 'Q$1570043372296yAiBq:localhost:8800 'Q$1570043371295coDXo:localhost:8800 'Q$1570043369294rquKy:localhost:8800 'Q$1570043369293ssSMv:localhost:8800 'Q$1570043368292FAoRb:localhost:8800 'Q$1570043367291AEdax:localhost:8800 ~'Q$1570043366290YSCqz:localhost:8800 }'Q$1570043364289XIEhE:localhost:8800 |'Q$1570043364288SCpzq:localhost:8800 {'Q$1570043363287eSyun:localhost:8800 z'Q$1570043362286KwXMK:localhost:8800 y'Q$1570043361285xsPbY:localhost:8800 x'Q$1570043354284IVfTL:localhost:8800 r'Q$1570043353283ubEdk:localhost:8800 q'Q$1570043352282iTcSU:localhost:8800 p'Q$1570043351281XHPOP:localhost:8800 o'Q$1570043350280ydSwy:localhost:8800 n'Q$1570043347278WlNld:localhost:8800 l'Q$1570043346277FsKPl:localhost:8800 k'Q$1570043346276qTXUF:localhost:8800 j'Q$1570043345275UDVPY:localhost:8800 i'Q$1570043344274cabjv:localhost:8800 h'Q$1570043341273LsXNn:localhost:8800 g'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 'Q$1570043152261Skczg:localhost:8800 'Q$1570043152260dkyqc:localhost:8800 'Q$1570043151259knbjg:localhost:8800 'Q$1570043150258cdaXl:localhost:8800 &O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 Y`8pH X 0  h @  x P ( ` 8  q I !Y1 iAyQ)a9qI!Y1 iAyQ)'Q$'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 i'Q$1570043391316OJaBO:localhost:8800 h'Q$1570043388312YDkJu:localhost:8800 f&O$157004338812XhwjX:localhost:8829 g'Q$1570043387311DGzYi:localhost:8800 e'Q$1570043386310bGMNl:localhost:8800 d'Q$1570043385309imdbl:localhost:8800 c'Q$1570043384308gPogh:localhost:8800 b'Q$1570043383307bhuDV:localhost:8800 a'Q$1570043382306WhWIU:localhost:8800 `'Q$1570043380304caenp:localhost:8800 _'Q$1570043379303bCgUn:localhost:8800 ^'Q$1570043378302mKBGD:localhost:8800 ]'Q$1570043377301OraEa:localhost:8800 \'Q$1570043377300CLPUi:localhost:8800 ['Q$1570043375299fbyXJ:localhost:8800 Z'Q$1570043374298UIMFg:localhost:8800 Y'Q$1570043373297SOjrf:localhost:8800 X'Q$1570043372296yAiBq:localhost:8800 W'Q$1570043371295coDXo:localhost:8800 V'Q$1570043369294rquKy:localhost:8800 U'Q$1570043369293ssSMv:localhost:8800 T'Q$1570043368292FAoRb:localhost:8800 S'Q$1570043367291AEdax:localhost:8800 R'Q$1570043366290YSCqz:localhost:8800 Q'Q$1570043364289XIEhE:localhost:8800 P'Q$1570043364288SCpzq:localhost:8800 O'Q$1570043363287eSyun:localhost:8800 N'Q$1570043362286KwXMK:localhost:8800 M'Q$1570043361285xsPbY:localhost:8800 L'Q$1570043354284IVfTL:localhost:8800 F'Q$1570043353283ubEdk:localhost:8800 E'Q$1570043352282iTcSU:localhost:8800 D'Q$1570043351281XHPOP:localhost:8800 C'Q$1570043350280ydSwy:localhost:8800 B'Q$1570043347278WlNld:localhost:8800 @'Q$1570043346277FsKPl:localhost:8800 ?'Q$1570043346276qTXUF:localhost:8800 >'Q$1570043345275UDVPY:localhost:8800 ='Q$1570043344274cabjv:localhost:8800 <'Q$1570043341273LsXNn:localhost:8800 ;'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 VwO'_7`:rJ" ^ 6  n F  ~ V .  f >  v N &^6nF~V.g?oGW/'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 ~'Q$1570043388312YDkJu:localhost:8800 y&O$157004338812XhwjX:localhost:8829 z'Q$1570043387311DGzYi:localhost:8800 x'Q$1570043386310bGMNl:localhost:8800 w'Q$1570043385309imdbl:localhost:8800 v'Q$1570043384308gPogh:localhost:8800 u'Q$1570043383307bhuDV:localhost:8800 t'Q$1570043382306WhWIU:localhost:8800 s'Q$1570043380304caenp:localhost:8800 r'Q$1570043379303bCgUn:localhost:8800 q'Q$1570043378302mKBGD:localhost:8800 p'Q$1570043377301OraEa:localhost:8800 o'Q$1570043377300CLPUi:localhost:8800 n'Q$1570043375299fbyXJ:localhost:8800 m'Q$1570043374298UIMFg:localhost:8800 l'Q$1570043373297SOjrf:localhost:8800 k'Q$1570043372296yAiBq:localhost:8800 j'Q$1570043371295coDXo:localhost:8800 i'Q$1570043369294rquKy:localhost:8800 h'Q$1570043369293ssSMv:localhost:8800 g'Q$1570043368292FAoRb:localhost:8800 f'Q$1570043367291AEdax:localhost:8800 e'Q$1570043366290YSCqz:localhost:8800 d'Q$1570043364289XIEhE:localhost:8800 c'Q$1570043364288SCpzq:localhost:8800 b'Q$1570043363287eSyun:localhost:8800 a'Q$1570043362286KwXMK:localhost:8800 `'Q$1570043361285xsPbY:localhost:8800 _'Q$1570043354284IVfTL:localhost:8800 Y'Q$1570043353283ubEdk:localhost:8800 X'Q$1570043352282iTcSU:localhost:8800 W'Q$1570043351281XHPOP:localhost:8800 V'Q$1570043350280ydSwy:localhost:8800 U'Q$1570043347278WlNld:localhost:8800 S'Q$1570043346277FsKPl:localhost:8800 R'Q$1570043346276qTXUF:localhost:8800 Q'Q$1570043345275UDVPY:localhost:8800 P'Q$1570043344274cabjv:localhost:8800 O'Q$1570043341273LsXNn:localhost:8800 N'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 'Q$1570043152261Skczg:localhost:8800 'Q$1570043152260dkyqc:localhost:8800 'Q$1570043151259knbjg:localhost:8800 'Q$1570043150258cdaXl:localhost:8800 &O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1~e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w]1}e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY\1|e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls[1{e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYZ1ze$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEY1ye$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwX1xe$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcV1we$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwU1ve$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcT1ue$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgS1te$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElER1se$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQQ1re$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQP1qe$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsO1pe$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsN1oe$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwM1ne$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooL1me$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsK1le$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcJ1ke$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AI1je$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAH1ie$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkG1he$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4F1ge$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61EE1fe$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYD1ee$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsC1de$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMB1ce$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIA1be$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA@1ae$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c?1`e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE>1_e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE=1^e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28<1]e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc;1\e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU:1[e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A91Ze$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas81Ye$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc61Xe$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng51We$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI41Ve$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY31Ue$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM21Te$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ11Se$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ01Re$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o/1Qe$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ.1Pe$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU-1Oe$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok,1Ne$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k+1Me$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I*1Le$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4)1Ke$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE(1Je$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI'1Ie$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs&1He$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y%1Ge$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU#1Fe$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs"1Ee$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI 1De$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1Ce$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA1Be$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1Ae$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81@e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1?e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c1>e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1=e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq81<e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k1;e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_41:e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU19e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E18e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug17e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms16e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo15e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo14e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0 ! !AeQ_$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 322}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U"], "type": "m.room.history_visibility", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040559617, "hashes": {"sha256": "U4zLRPJWrY5cb/mELzd5qTZvPLLvHmytSaSGck0gpx0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CqH+aGoajirc6WQwbu+LNZHW3cU/8znDrF7R6SRPru15SrAOsChfo2oVu0Bgsq9nwrkD8OrQCGSJgv7XvRtVAg"}}, "unsigned": {"age_ts": 1570040559617}}r@eQ_s$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 321}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c"], "type": "m.room.join_rules", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040558808, "hashes": {"sha256": "LF7+78i2aBxAwAd7q4IvdrLA8UenBk+cLtvpQNmD6Js"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GerMPztiejFlexBkA5d6ETlV0InJ95Qo1nxyDMgWZ1GeHG8OLYcWD0CkbJsuc0QUTthjnbvPSYmOPK7FZTEjDg"}}, "unsigned": {"age_ts": 1570040558808}}h?eQ__$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 320}{"auth_events": ["$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "type": "m.room.power_levels", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"users": {"@anon-20191002_181700-95:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040558077, "hashes": {"sha256": "3ptWq4Y0JG6L/csKZpm6lpa1EU+QYlo+KlHArDZlBhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PH3oO91yUI9I5adEdyYf8uuD4UslQsF5FxHf86t9In29l2V3v24mYUAyVHp1OTpBULm8oa2GtMwsSqGn02plDg"}}, "unsigned": {"age_ts": 1570040558077}}r>eQ_s$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 319}{"auth_events": ["$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8"], "prev_events": ["$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-95:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040557373, "hashes": {"sha256": "P5LVlKy/fYSUyE66Qso1kiu56Te/9wt1gSieaUUqCpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XLw6IExSRoB1v9NsT/aYLS93LR4be1dPTaif1X1hMk0BVOk1b4IK8HAMdNTuNvQ6b8QlB1OaKmEfIxG2hod5Bw"}}, "unsigned": {"age_ts": 1570040557373}}  y:eQ_$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 315}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E"], "type": "m.room.guest_access", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040551750, "hashes": {"sha256": "nlbh6iPq7aYogHmTC2iHo5U7yDTuWtqbds/AfGR+YlY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TOizQj6BEDGfw9g+S/MlDbzQx9l+5JkJk7Bvg6gWuEBOMXVpPKasSrOUA/zaX3fz9oz+hUnr9SM8++5gfvVjDw"}}, "unsigned": {"age_ts": 1570040551750}}9eQ_$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 314}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug"], "type": "m.room.history_visibility", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040551099, "hashes": {"sha256": "r5SrNWXyYK4b7zxBl4C1uGcag7MJFoXIfjG6W48SpdM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5sMaYih2XuTh9uQX6XtRkAKtWuNu3tZw0yPysl032gFHNxeUhAR8fggnx1O6ylAcnLMR4kEqivg8LcdnrYnaBw"}}, "unsigned": {"age_ts": 1570040551099}}r8eQ_s$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 313}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms"], "type": "m.room.join_rules", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040550324, "hashes": {"sha256": "9zVJHjKPLCsol2LzdZ+AAb+FGVYfg+NUjl3R5QrpAak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BC7Cgfxrp0pkYdamRgGrku2wBmsUUWCGRW6tTmMA4bYUiF5OdMnuCw92vE53TxuQF7HO+skNRNVrXMERCI/FDw"}}, "unsigned": {"age_ts": 1570040550324}}h7eQ__$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 312}{"auth_events": ["$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "type": "m.room.power_levels", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"users": {"@anon-20191002_181700-93:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040549576, "hashes": {"sha256": "KF/J/4ygyMNk74GjjaIgesbmIoCuI5QGiA9wu0M0l/k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GrRgZdAq9YacxTpvgVITNIQZPwL1hm0OUE2XThnu1+Om2NZpy9SPNumHxBUlfXPEEI+kRmy71CR0oqMC+HXuCA"}}, "unsigned": {"age_ts": 1570040549576}} QeF'nO0 w X 9  d F (  n :  j 6  g 3c/a-])Z&V"RO}H1@36:localhost:8800m¨1@35:localhost:8800m‰!7@admin:localhost:8800mc+3]@anon-20191002_181700-149:localhost:8800mf{3]@anon-20191002_181700-146:localhost:8800m^z3]@anon-20191002_181700-144:localhost:8800my3]@anon-20191002_181700-143:localhost:8800mx3]@anon-20191002_181700-142:localhost:8800mw3]@anon-20191002_181700-141:localhost:8800mv3]@anon-20191002_181700-140:localhost:8800mLu3]@anon-20191002_181700-138:localhost:8800mjt3]@anon-20191002_181700-137:localhost:8800mds3]@anon-20191002_181700-136:localhost:8800mIr3]@anon-20191002_181700-134:localhost:8800m3q3]@anon-20191002_181700-132:localhost:8800m&p3]@anon-20191002_181700-131:localhost:8800mHo2[@anon-20191002_181700-12:localhost:8800m 3]@anon-20191002_181700-129:localhost:8800mn3]@anon-20191002_181700-128:localhost:8800m m3]@anon-20191002_181700-127:localhost:8800mul3]@anon-20191002_181700-126:localhost:8800mk3]@anon-20191002_181700-125:localhost:8800mcj3]@anon-20191002_181700-124:localhost:8800mli3]@anon-20191002_181700-123:localhost:8800mlh3]@anon-20191002_181700-122:localhost:8800m_f3]@anon-20191002_181700-121:localhost:8800m_g3]@anon-20191002_181700-120:localhost:8800m9e2[@anon-20191002_181700-11:localhost:8800m? 2[@anon-20191002_181700-11:localhost:8800m 3]@anon-20191002_181700-119:localhost:8800md3]@anon-20191002_181700-118:localhost:8800mc3]@anon-20191002_181700-117:localhost:8800mb3]@anon-20191002_181700-116:localhost:8800mBa3]@anon-20191002_181700-115:localhost:8800mg`3]@anon-20191002_181700-114:localhost:8800m-_3]@anon-20191002_181700-113:localhost:8800m^3]@anon-20191002_181700-112:localhost:8800mɸ]3]@anon-20191002_181700-110:localhost:8800mq\2[@anon-20191002_181700-10:localhost:8800m3]@anon-20191002_181700-109:localhost:8800m[3]@anon-20191002_181700-108:localhost:8800m}Z3]@anon-20191002_181700-107:localhost:8800mpY3]@anon-20191002_181700-106:localhost:8800m[PX3]@anon-20191002_181700-104:localhost:8800mCW3]@anon-20191002_181700-103:localhost:8800m>V3]@anon-20191002_181700-102:localhost:8800m)U3]@anon-20191002_181700-101:localhost:8800mS3]@anon-20191002_181700-100:localhost:8800m"eT/@8:localhost:8800m2/@8:localhost:8800m\/@7:localhost:8800my/@6:localhost:8800mY?/@5:localhost:8800m8/@4:localhost:8800m"/@3:localhost:8800m1@34:localhost:8800ms1@33:localhost:8800m3 1@32:localhost:8800m1@31:localhost:8800m1@30:localhost:8800mq/@2:localhost:8800m޵1@29:localhost:8800mN1@28:localhost:8800m01@27:localhost:8800m1@26:localhost:8800mf1@25:localhost:8800m؍1@24:localhost:8800m1@23:localhost:8800m)1@22:localhost:8800m1@21:localhost:8800md1@20:localhost:8800mN/@1:localhost:8800mȫ1@19:localhost:8800m11@18:localhost:8800mF1@17:localhost:8800mE1@16:localhost:8800m1@15:localhost:8800m1@14:localhost:8800m1@13:localhost:8800mP<1@12:localhost:8800m/Z1@11:localhost:8800m+a B`8g2a,X% Q  } H  t ? k 6  b -Y$P|Iu@ l`-Y$4]@anon-20191002_181700-219:localhost:8800mu4]@anon-20191002_181700-160:localhost:8800m2[@anon-20191002_181700-15:localhost:8800m 4]@anon-20191002_181700-158:localhost:8800m4]@anon-20191002_181700-156:localhost:8800m4]@anon-20191002_181700-154:localhost:8800mqh3]@anon-20191002_181700-153:localhost:8800m`y3]@anon-20191002_181700-152:localhost:8800mKN~3]@anon-20191002_181700-151:localhost:8800m=}3]@anon-20191002_181700-150:localhost:8800m/|4]@anon-20191002_181700-218:localhost:8800mU4]@anon-20191002_181700-217:localhost:8800mU>4]@anon-20191002_181700-216:localhost:8800m/4]@anon-20191002_181700-215:localhost:8800m.4]@anon-20191002_181700-214:localhost:8800m 4]@anon-20191002_181700-213:localhost:8800m I4]@anon-20191002_181700-212:localhost:8800m]4]@anon-20191002_181700-211:localhost:8800mތ4]@anon-20191002_181700-210:localhost:8800m{2[@anon-20191002_181700-20:localhost:8800m[4]@anon-20191002_181700-209:localhost:8800m44]@anon-20191002_181700-208:localhost:8800mCZ4]@anon-20191002_181700-207:localhost:8800m^4]@anon-20191002_181700-206:localhost:8800mw4]@anon-20191002_181700-205:localhost:8800m}4]@anon-20191002_181700-204:localhost:8800mR4]@anon-20191002_181700-203:localhost:8800m e'Q  [$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8m.room.create!RmdhCjvouVLmyIHjaM:localhost:8800mmc@anon-20191002_181700-95:localhost:8800=e'Q [$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7km.room.member!EyEaTZElOkdURKbEXo:localhost:8800mm@anon-20191002_181700-92:localhost:8829<e'Q [$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4m.room.member!EyEaTZElOkdURKbEXo:localhost:8800mhm@anon-20191002_181700-93:localhost:8800%;e3Q [$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UUm.room.guest_access!EyEaTZElOkdURKbEXo:localhost:8800mFm @anon-20191002_181700-93:localhost:8800+:e?Q [$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6Em.room.history_visibility!EyEaTZElOkdURKbEXo:localhost:8800mm@anon-20191002_181700-93:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VdeL$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMsha256:/6dMq3t3VceL$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIsha256jd 0r\c"avyj_VVbeL$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAsha256%ڝ|͟ง7EF6+0VaeL$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0csha256pp+֙,>]Dz@SP/GV`eL$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEsha256pܷ8p;(E\XV_eL$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEsha256MPWn/^4PH_1]V^eL$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28sha256gf ]c }_ O݊oV]eL$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcsha256e &؇rY56GV\eL$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUsha256Ԑ[|Z7@'^ $<*V[eL$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2Asha256ɒ\Ÿbb)I&vE`VZeL$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbassha256eն5UesJLN۶Y@mVYeL$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncsha256TJyЏv}z'Mx梫6bqؿ-RwVXeL$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngsha256uiq ǚ nu(NZYj+>V_[xVWeL$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIsha2565F $ K& aUZn|اixw"eVVeL$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYsha256z8D$u?5pLe>r߇#8+&VUeL$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMsha2562VxhGe'8[ `c^`VTeL$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQsha256a*p{hBp cH-uC~ H$VSeL$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQsha256H<&Od39᛿%a`۬VReL$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9osha256%g ֳjz ˢlVQeL$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQsha256T%R] PlvVO TVPeL$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUsha256wI{"ޒ]Y{Z"'zچ VOeL$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Oksha256/Ĭ KCJx\ꘞMm6F0GVNeL$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-ksha256Hc hUщ@̒:;LB|0?VMeL$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Isha256FUH>1/?KV&g BVLeL$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4sha2562YPL#$dMaGSMYsLSh:>VKeL$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEsha256vk918{a6Zșݧ跴oVJeL$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIsha256uUg y%HKbC8桚lbVIeL$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGssha256q"JYmG34ʹL6MJhkVHeL$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Ysha256a 7Ǟ&^i*6 qqKpS*GFVGeL$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUsha256?=4J6m{f-^~!7YVFeL$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZssha2564zt_*ծ]5I5VEeL$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIsha256m-pMz 3߁Ԋ鍿UȄ>VDeL$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Ysha256aHgT6K da LvgFvVCeL$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAsha256-O  Plz𯕓,eWUTS?WVBeL$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUsha256"^#㣤eL$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcsha256l}Z>KYA{#"EfbGcV=eL$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8sha256zRhcZg{`vѽp.2;KHrV<eL$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7ksha256lwa2p.#xd ƎZ@3V;eL$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4sha256D`,NUؑ(g;i DmOV:eL$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UUsha256}rlop|)u90яD$\EV9eL$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6Esha256ٯ%Jmݣ#$ۙ+^82A' -RM H C > 9 4/*|%w rmhc T?Qe?!HmkcAMkMjWRhTDJMsy:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cT>Qe>!HmkcAMkMjWRhTDJMsy:localhost:8800$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbET=Qe=!HmkcAMkMjWRhTDJMsy:localhost:8800$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhET<QeeeQ$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~=eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800~<eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~;eeQ$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~:eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800~9eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~8eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~7eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~6eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800~5eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~4eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~3eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~2eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~1eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800 ~z v r n j fb^ZVRNJF1eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:88000eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800/eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800.eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800-eeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800,eeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800+eeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800*eeQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800)eeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800(eeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800'eeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800&eeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800%eeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800$eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800#eeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800"eeQ$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800!eeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800 eeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800  f=eQ_[$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 318}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-95:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040556440, "hashes": {"sha256": "jvnwd7Kc4/JMHnzlphK9TNgEhZYy4G3rUezjBUkRlwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t/OrlSO5iyKlNH94VI0kEsJxWO0Uml4ZkV4nMSI5bTmiWHdQpDmNiFsn555ciNooI7yCB3qKj9P35IyH14gVCA"}}, "unsigned": {"age_ts": 1570040556440}}J<eQa!$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800{"outlier": false, "stream_ordering": 317}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "r56fRX/7SEpJk9SUMF+wOLslg76HwOf8YKV1GR1x8yQ"}, "origin": "localhost:8829", "origin_server_ts": 1570040554996, "prev_events": ["$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4"], "prev_state": [], "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-92:localhost:8829", "state_key": "@anon-20191002_181700-92:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3PUz2FWoxZrsJnL0k2X/NQ0hD0Xp41C7/k7PUXis6jMy/u/YwAsTSDCEphiOrwS2vHfLIUR3luRRN9yKlCB7DA"}, "localhost:8829": {"ed25519:a_UxIG": "G7E20sA/hyZMQ/j3XPIhw8pZgT11tqsMxDlj/REqgiXi6UFacmcRwHiPmkfIiHBD9KVPLHeiyrGzR+EF9RFDDQ"}}, "unsigned": {"age": 93, "replaces_state": "$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4"}} ;eQ_)$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 316}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU"], "type": "m.room.member", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-92", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-92:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040552808, "hashes": {"sha256": "uSCBMSsi/Ugeh005HxMrP3dv15dgQ+J/Mq8mrWMXCJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xvPhmHO0H1LYKmg+b6gZ+qyQ9B87KKfsLpUYAmNFTBXgr00rNAcsufbFrJui6WFTQCl9zWeN1MMFPHFzSEA5Bg"}, "localhost:8829": {"ed25519:a_UxIG": "QfvQTzrdt7nVhJgsYi55TB0BzQXq9dE1/z5EMqtSYN3BZwZCQd25CHg26qsH/icmn3YMMJTUVDi3BxE+n+4cDQ"}}, "unsigned": {"age_ts": 1570040552808, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-93:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-93:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-93", "avatar_url": null}, "sender": "@anon-20191002_181700-93:localhost:8800"}]}} 3\If)}c r 7 y <  J O 2o O yB&Iv9\^Q']!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800U:Q/ !GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rulesWBQ? !GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibilityX<Q3 !GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_accessY6Q' !GSxvxNevpCiwmFCHys:localhost:8800m.room.createT<Q3 !GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels^Q']!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800^Q']!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800:Q/ !GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rulesBQ? !GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility<Q3 !GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_accessBQ? !FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility {:Q/ !FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules z<Q3 !FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levels y^Q']!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800 x6Q' !FZOLkaLbBpaibrbHZx:localhost:8800m.room.create w:Q/ !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rulesBQ? !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility<Q3 !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access<Q3 !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels^Q']!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:88006Q' !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.create6Q' !GGXyLHdVXqhQjPRvac:localhost:8800m.room.create<Q3 !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels]Q'[!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800:Q/ !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rulesBQ? !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibility6Q' !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create?Q9 !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_aliasEQ))!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800<Q3 !FklhVuCInffbDxunWv:localhost:8800m.room.power_levels}^Q']!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800^Q']!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800|:Q/ !FklhVuCInffbDxunWv:localhost:8800m.room.join_rules~BQ? !FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility<Q3 !FklhVuCInffbDxunWv:localhost:8800m.room.guest_access6Q' !FklhVuCInffbDxunWv:localhost:8800m.room.create{<Q3 !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels|^Q']!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800^Q']!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800{:Q/ !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules}BQ? !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility~<Q3 !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_access6Q' !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.createz<Q3 !FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels^Q']!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800HQ'1!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800:Q/ !FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rulesBQ? !FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibility<Q3 !FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_access6Q' !FPcQcheNebvdFvmOnr:localhost:8800m.room.create S  Y : wX#v9CQ e]]Q=$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs@anon-20191002_181700-102:localhost:8800@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800joinanon-20191002_181700-102,P e]]Q$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI@anon-20191002_181700-100:localhost:8800@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800leave,O e]]Q$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800leaveEN e]]Q=$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c@anon-20191002_181700-100:localhost:8800@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800inviteanon-20191002_181700-100CM e]]Q=$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800joinanon-20191002_181700-101*L e[[Q$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas@anon-20191002_181700-98:localhost:8829@anon-20191002_181700-98:localhost:8829!OMkiVTuuOEeiFAXtUY:localhost:8800leave*K e[[Q$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc@anon-20191002_181700-99:localhost:8800@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800leaveBJ e[[Q;$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng@anon-20191002_181700-98:localhost:8829@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800inviteanon-20191002_181700-98@I e[[Q;$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ@anon-20191002_181700-99:localhost:8800@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800joinanon-20191002_181700-99*H e[[Q$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ@anon-20191002_181700-96:localhost:8800@anon-20191002_181700-96:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800leave*G e[[Q$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU@anon-20191002_181700-97:localhost:8800@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800leaveBF e[[Q;$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok@anon-20191002_181700-96:localhost:8800@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800inviteanon-20191002_181700-96@E e[[Q;$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI@anon-20191002_181700-97:localhost:8800@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800joinanon-20191002_181700-97*D e[[Q$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800leaveBC e[[Q;$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800inviteanon-20191002_181700-94*B e[[Q$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800leaveBA e[[Q;$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800inviteanon-20191002_181700-94*@ e[[Q$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800leaveB? e[[Q;$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800inviteanon-20191002_181700-94@> e[[Q;$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc@anon-20191002_181700-95:localhost:8800@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800joinanon-20191002_181700-95*= e[[Q$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k@anon-20191002_181700-92:localhost:8829@anon-20191002_181700-92:localhost:8829!EyEaTZElOkdURKbEXo:localhost:8800leave  ! GRp. [ Z Z Z Z Z Z Z Z Z  d*d*e  eQ'[$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829leaveaeQ' $ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.create eQ'[$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829leavegeQ3 $gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800m.room.guest_accessm~eQ? $2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800m.room.history_visibilitye}eQ/ $cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rulesg|eQ3 $5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levelsgeQ3 $IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_accessmeQ? $RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibilityeeQ/ $w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rulesgeQ3 $vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levels eQ'[$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800join -RM H C > 9 4/*|%w rmhc TlQek!KxhGcTbEWmtgGNpdox:localhost:8800$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkTkQek!KxhGcTbEWmtgGNpdox:localhost:8800$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxATjQej!KxhGcTbEWmtgGNpdox:localhost:8800$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkTiQei!KxhGcTbEWmtgGNpdox:localhost:8800$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4ThQeh!KxhGcTbEWmtgGNpdox:localhost:8800$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61ETgQeg!KxhGcTbEWmtgGNpdox:localhost:8800$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYTfQef!KxhGcTbEWmtgGNpdox:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsTeQee!KxhGcTbEWmtgGNpdox:localhost:8800$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMTdQed!HmkcAMkMjWRhTDJMsy:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OITcQec!HmkcAMkMjWRhTDJMsy:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDATbQeb!HmkcAMkMjWRhTDJMsy:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cTaQea!HmkcAMkMjWRhTDJMsy:localhost:8800$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbET`Qe`!HmkcAMkMjWRhTDJMsy:localhost:8800$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhET_Qe_!HmkcAMkMjWRhTDJMsy:localhost:8800$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28T^Qe^!HmkcAMkMjWRhTDJMsy:localhost:8800$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcT]Qe]!HmkcAMkMjWRhTDJMsy:localhost:8800$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUT\Qe\!HmkcAMkMjWRhTDJMsy:localhost:8800$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2AT[Qe[!OMkiVTuuOEeiFAXtUY:localhost:8800$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasTZQeZ!OMkiVTuuOEeiFAXtUY:localhost:8800$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncTYQeY!OMkiVTuuOEeiFAXtUY:localhost:8800$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngTXQeX!OMkiVTuuOEeiFAXtUY:localhost:8800$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaITWQeW!OMkiVTuuOEeiFAXtUY:localhost:8800$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYTVQeV!OMkiVTuuOEeiFAXtUY:localhost:8800$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMTUQeU!OMkiVTuuOEeiFAXtUY:localhost:8800$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQTTQeT!OMkiVTuuOEeiFAXtUY:localhost:8800$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQTSQeS!OMkiVTuuOEeiFAXtUY:localhost:8800$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oTRQeR!BrssELMbasSzTFpIXm:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQTQQeQ!BrssELMbasSzTFpIXm:localhost:8800$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUTPQeP!BrssELMbasSzTFpIXm:localhost:8800$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkTOQeO!BrssELMbasSzTFpIXm:localhost:8800$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kTNQeN!BrssELMbasSzTFpIXm:localhost:8800$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0ITMQeM!BrssELMbasSzTFpIXm:localhost:8800$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4TLQeL!BrssELMbasSzTFpIXm:localhost:8800$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirETKQeK!BrssELMbasSzTFpIXm:localhost:8800$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGITJQeJ!BrssELMbasSzTFpIXm:localhost:8800$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsTIQeI!RmdhCjvouVLmyIHjaM:localhost:8800$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YTHQeH!RmdhCjvouVLmyIHjaM:localhost:8800$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUTGQeG!RmdhCjvouVLmyIHjaM:localhost:8800$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsTFQeF!RmdhCjvouVLmyIHjaM:localhost:8800$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsITEQeE!RmdhCjvouVLmyIHjaM:localhost:8800$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YTDQeD!RmdhCjvouVLmyIHjaM:localhost:8800$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtATCQeC!RmdhCjvouVLmyIHjaM:localhost:8800$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUTBQeB!RmdhCjvouVLmyIHjaM:localhost:8800$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8TAQeA!RmdhCjvouVLmyIHjaM:localhost:8800$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_UT@Qe@!RmdhCjvouVLmyIHjaM:localhost:8800$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c E(H C  Dd_i"gEd)Q' e\!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.create$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A7(Q'[ee[!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng7'Q'[eeZ!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ &Q'[eY!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngj%Q3 eX!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.guest_access$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIp$Q? eW!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.history_visibility$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYh#Q/ eV!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.join_rules$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMj"Q3 eU!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.power_levels$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ !Q'[eT!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQd Q' eS!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.create$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o7Q'[eeR!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok7Q'[eeQ!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI Q'[eP!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkjQ3 eO!BrssELMbasSzTFpIXm:localhost:8800m.room.guest_access$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kpQ? eN!BrssELMbasSzTFpIXm:localhost:8800m.room.history_visibility$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IhQ/ eM!BrssELMbasSzTFpIXm:localhost:8800m.room.join_rules$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4jQ3 eL!BrssELMbasSzTFpIXm:localhost:8800m.room.power_levels$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE Q'[eK!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIdQ' eJ!BrssELMbasSzTFpIXm:localhost:8800m.room.create$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs7Q'[eeI!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU7Q'[eeH!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs7Q'[eeG!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI7Q'[eeF!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y7Q'[eeE!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA Q'[eD!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAjQ3 eC!RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_access$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUpQ? eB!RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibility$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8hQ/ eA!RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rules$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_Uj Q3 e@!RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levels$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c $ r$JDeQa!$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800{"outlier": false, "stream_ordering": 325}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "nKbBFLurkwZ1uicSBnp7JhTNchvULPPg6QZ0dA2JJVw"}, "origin": "localhost:8829", "origin_server_ts": 1570040562530, "prev_events": ["$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA"], "prev_state": [], "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-94:localhost:8829", "state_key": "@anon-20191002_181700-94:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2jhG0+AHTkHMPkzjxlPFeUVYp8EwP5Ym1cTb65+3aM5t/7a66XqiwWorUmTvkyRMeJUvycqiR6Hbzh7EUNJ0BA"}, "localhost:8829": {"ed25519:a_UxIG": "IpECeFw7N13qaUsJLz1M/HkJj/YbuJS3ktrlkan8z37TmzG2mDmz46fKoP2txuqtHn+rhZU4gJK7rAbz3TEbBQ"}}, "unsigned": {"age": 84, "replaces_state": "$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA"}} CeQ_)$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 324}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-94", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-94:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040561937, "hashes": {"sha256": "Ba/ur+nzhXfCEAnm7BanNxOHXZztOKMi6Fe8PsQyMYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XnBL/KAmkNF6jm1BPhxRWdqlxzYcX9TLc/3WW02BvNUF4J5A+9tJAxI2k3twwPWyAVKhv+rDo+pBDZm3zzCGDg"}, "localhost:8829": {"ed25519:a_UxIG": "fGCGRw4JiXxRtrDfU6yD0iQl9aD5mMWJCxlm6J8TtjhBUKNKxoevLPDWCsquoEfz5SceJf9MBV9F8tDvFrxeCQ"}}, "unsigned": {"age_ts": 1570040561937, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-95:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "sender": "@anon-20191002_181700-95:localhost:8800"}]}}yBeQ_$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 323}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8"], "type": "m.room.guest_access", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040560830, "hashes": {"sha256": "WZb5AWnXCW93ugdfrRWXyfr/JILNPrxAUk8iLVAsyxg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2lesGTurPviDkDSX9ifulfudX5ypyd68nnPv0t/FftlhZ2snnFr6rReHLGRHw23pkumqaa70LuxQjFOm2pW+CA"}}, "unsigned": {"age_ts": 1570040560830}} RUc8  u J  s H qFoDmBk@g< { P %e:' i>T) y N # w L ! }R*Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800UG*Q!IZkczIYykpZDvjuUWn:localhost:8800 Q *Q!IZkczIYykpZDvjuUWn:localhost:8800 P *Q!IZkczIYykpZDvjuUWn:localhost:8800 O *Q!IZkczIYykpZDvjuUWn:localhost:8800 N *Q!IZkczIYykpZDvjuUWn:localhost:8800 M *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!IZkczIYykpZDvjuUWn:localhost:8800 R *Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IPYMCBwcyNIzqdiIWv:localhost:8800MR*Q!IPYMCBwcyNIzqdiIWv:localhost:8800LQ*Q!IPYMCBwcyNIzqdiIWv:localhost:8800KP*Q!IPYMCBwcyNIzqdiIWv:localhost:8800JO*Q!IPYMCBwcyNIzqdiIWv:localhost:8800IN*Q!IPYMCBwcyNIzqdiIWv:localhost:8800HM*Q!IPYMCBwcyNIzqdiIWv:localhost:8800GL*Q!IPYMCBwcyNIzqdiIWv:localhost:8800FK*Q!IPYMCBwcyNIzqdiIWv:localhost:8800EJ*Q!IPYMCBwcyNIzqdiIWv:localhost:8800DI*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!ILbUVZOfPPwaZRrKJd:localhost:8800DH*Q!ILbUVZOfPPwaZRrKJd:localhost:8800CG*Q!ILbUVZOfPPwaZRrKJd:localhost:8800BF*Q!ILbUVZOfPPwaZRrKJd:localhost:8800AE*Q!ILbUVZOfPPwaZRrKJd:localhost:8800@D*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800WI*Q!IYxUkyFHOgvhLpdkOA:localhost:8800VH*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZL*Q!IYxUkyFHOgvhLpdkOA:localhost:8800YK*Q!IYxUkyFHOgvhLpdkOA:localhost:8800XJ*Q!IZkczIYykpZDvjuUWn:localhost:8800 V *Q!IZkczIYykpZDvjuUWn:localhost:8800 U *Q!IZkczIYykpZDvjuUWn:localhost:8800 T *Q!IZkczIYykpZDvjuUWn:localhost:8800 S *Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ^ ^KFeQa#$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800{"outlier": false, "stream_ordering": 327}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI"], "content": {"membership": "leave"}, "depth": 10, "hashes": {"sha256": "5n+If1sEwoirHMTnLgc8QitEYvTLC+maCdaf7XWJbv4"}, "origin": "localhost:8829", "origin_server_ts": 1570040564254, "prev_events": ["$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI"], "prev_state": [], "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-94:localhost:8829", "state_key": "@anon-20191002_181700-94:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bl+2MgeO0Sz+T+cbg9fCLJWYp+uW5jq78xveSplD1MToJyesqX0u9/9ad+OoaBHVI5ZGg6keACTUB4VlAFTrDQ"}, "localhost:8829": {"ed25519:a_UxIG": "pX68743+yOZphHRJAH3vqRD8WKwwFw9Sam0y0hbJe8XDFEbg7MTZp80Lxsk8kzPaTdY4QWPbUNPKXj4QaHbhBw"}}, "unsigned": {"age": 94, "replaces_state": "$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI"}}OEeQ_-$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 326}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-94", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-94:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040563185, "hashes": {"sha256": "2lbEBznvoKaXbIyYryFwkxkbHC08gllMR9c1PFGlKQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "punViDCSIFy5DVxKapSECiByxaBOpwhohtVcOo04HUEi2gSXiKBJEfFBjA/OnH/C2jSsyC612LY6Evz9EGoaCw"}, "localhost:8829": {"ed25519:a_UxIG": "bAIbQT7ghTu6clmNwxJKIk3zxRAtro9LwbSN+3ms+ovujaP94exEoXbY4uHtuIJjgUJ43fYKjvnEX+JgOQ8bAA"}}, "unsigned": {"age_ts": 1570040563185, "replaces_state": "$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y", "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-95:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "sender": "@anon-20191002_181700-95:localhost:8800"}]}} [qF y N # w L ! u J  oD} s H qFoDsJ! % T) PwL!uJsHR' {*Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800  *Q!GSxvxNevpCiwmFCHys:localhost:8800 ~ ~*Q!GSxvxNevpCiwmFCHys:localhost:8800 } }*Q!GSxvxNevpCiwmFCHys:localhost:8800 | |*Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HAFNBarGuVZuWCgwWM:localhost:8800--*Q!HAFNBarGuVZuWCgwWM:localhost:8800,,*Q!HAFNBarGuVZuWCgwWM:localhost:8800++*Q!HAFNBarGuVZuWCgwWM:localhost:8800***Q!HAFNBarGuVZuWCgwWM:localhost:8800))*Q!HAFNBarGuVZuWCgwWM:localhost:8800((*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800(Q!GixhPUMvtKSWoKRgvw:localhost:880055(Q!GixhPUMvtKSWoKRgvw:localhost:880044(Q!GixhPUMvtKSWoKRgvw:localhost:880033(Q!GixhPUMvtKSWoKRgvw:localhost:880022(Q!GixhPUMvtKSWoKRgvw:localhost:880011(Q!GixhPUMvtKSWoKRgvw:localhost:880000*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800~~*Q!GiSxJsKZhQVHBkrVPn:localhost:8800}}*Q!GiSxJsKZhQVHBkrVPn:localhost:8800||*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GsjDgpaxdwYfnefiWO:localhost:8800--*Q!GsjDgpaxdwYfnefiWO:localhost:8800,,*Q!GsjDgpaxdwYfnefiWO:localhost:8800++*Q!GsjDgpaxdwYfnefiWO:localhost:8800***Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GsjDgpaxdwYfnefiWO:localhost:8800//*Q!GsjDgpaxdwYfnefiWO:localhost:8800..*Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GSxvxNevpCiwmFCHys:localhost:8800 a} { y w u sqomkigeca~neeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~meeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~leeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~keeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~jeeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800~ieeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~heeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~geeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~feeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~eeeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~deeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~ceeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~beeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~aeeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~`eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~_eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~^eeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~]eeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~\eeQ$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~[eeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800~ZeeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~YeeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~XeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800~WeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800~VeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~UeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~TeeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800~SeeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~ReeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~QeeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800~PeeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800 r \rfIeQ_[$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 330}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-97:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040567416, "hashes": {"sha256": "ZsWoUZsXGDTRcbqACyAHJvSvoKoCE57o78yuH9fybOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p/L6Z1aiFy0FRwnSy0NdvdLtxSwWSSJfYJUk0FUFBjg3TCLTZpoQ8tKqMipHghe44XvgmoFBGsV8oU83lI/XCw"}}, "unsigned": {"age_ts": 1570040567416}}LHeQa%$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800{"outlier": false, "stream_ordering": 329}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU"], "content": {"membership": "leave"}, "depth": 12, "hashes": {"sha256": "n2toyo2ZyuoCW43cVFVALAPBcGtDf3dQ8IEDihSLF6Y"}, "origin": "localhost:8829", "origin_server_ts": 1570040565761, "prev_events": ["$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU"], "prev_state": [], "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-94:localhost:8829", "state_key": "@anon-20191002_181700-94:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JFiHL8E3QtDvioOTuSPfkBT4yerDP4ha45DoMAi36MDkSwCMZJjUcsOUHmANUJVDvpfHAqO0mS6ee1aeBYCbBQ"}, "localhost:8829": {"ed25519:a_UxIG": "tiaGm6fA/31NWofDkNAPuaSEqbMx8XS1DT/zlQuJ9K58SF8XIKGkxTq8Z+YrDXPKakeD42JvdH+YyW15zosFBA"}}, "unsigned": {"age": 170, "replaces_state": "$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU"}}PGeQ_/$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 328}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-94", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-94:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040564919, "hashes": {"sha256": "1KjwutUh1d8ZFve5FFxEzRoyi8oSOWdhT9Y+UQGXwuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jTBf/x6MGc5AkdFlhKH2vfKAfBFCYHpQSoemTw7gAeT4X9QR3UbR3uQEdq2lAPJGH7EPZdcLReTleANAKTaqAA"}, "localhost:8829": {"ed25519:a_UxIG": "vkyWKbmPRFoBaBhsEZ0tECkc5bI/pHCzDk3y60eibBLuoaZsT3PtcQPIvMMQiBH/yftDFCFIPHETM4TeJ5C9CA"}}, "unsigned": {"age_ts": 1570040564919, "replaces_state": "$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs", "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-95:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "sender": "@anon-20191002_181700-95:localhost:8800"}]}} AG S _ " k . w : F W d'p3|?LXd(q4}A;A[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOm4;@[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEm4;?[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFm4:>Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWXm4;=[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDm4;<[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNm4;;[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMm4;:[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXm4;9[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCm4;8[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIm4;7[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIm4:6Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOWm4;5[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUDm4;4[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXMm4;3[!@anon-20191002_181700-65:localhost:8800JPWZALXKWPm4;2[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQIm4;1[!@anon-20191002_181700-63:localhost:8800VLTVDGDALOm4;0[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYXm4;/[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUm4;.[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGm4:-Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZSm4;,[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQm4;+[!@anon-20191002_181700-58:localhost:8800XSIUOLPWQXm4;*[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOm4;)[!@anon-20191002_181700-56:localhost:8800UWHMGOHJLQm4;([!@anon-20191002_181700-55:localhost:8800GJICSOZSSMm4;'[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGm4;&[!@anon-20191002_181700-54:localhost:8800MQMQOGGONNm4;%[!@anon-20191002_181700-53:localhost:8800MVQZRCIGFUm4;$[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNm4;#[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBm4;"[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDm4;![!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXm4: Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVLm4;[!@anon-20191002_181700-49:localhost:8800XXZIHXDAZYm4;[!@anon-20191002_181700-48:localhost:8800XFFXACSKIDm4;[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWm46[@anon-20191002_181700-44:localhost:8800xyzzym4;[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXm4;[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXm4;[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYm4;[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKm4;[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHm4;[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKOm4;[!@anon-20191002_181700-35:localhost:8800EALQMPIKHOm4;[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGAm4;[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKNm4;[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCBm4;[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCm4;[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZUm4;[!@anon-20191002_181700-27:localhost:8800TWNKNEABLTm4;[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFLm4; [!@anon-20191002_181700-25:localhost:8800IOMJWWQXRTm4; [!@anon-20191002_181700-24:localhost:8800MRUESCORNAm4; [!@anon-20191002_181700-23:localhost:8800SNOHQGNOOLm4; [!@anon-20191002_181700-22:localhost:8800HVNUPXSZHYm4; [!@anon-20191002_181700-21:localhost:8800KHJDEDTDXIm4;[!@anon-20191002_181700-20:localhost:8800MIHVANNPDDm4;[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTFm4;[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOGm4;[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOWm4;[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQm4=[%@anon-20191002_181700-11:localhost:8800login_devicem4;[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFAm4;[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQGm4 AI U b % } ?  G O  W _!g)o1w9AI Q[<]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGm4'/%@8:localhost:8800guest_devicem4%/!@8:localhost:8800SPYUTHBEKDm4;[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYm4;~[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZm4;}[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLm4<|]!@anon-20191002_181700-153:localhost:8800RAWLINNCFAm4<{]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYGm4 m8f1](!M!7@admin:localhost:8800m44]@anon-20191002_181700-170:localhost:8800m42[@anon-20191002_181700-16:localhost:8800m44]@anon-20191002_181700-169:localhost:8800m44]@anon-20191002_181700-168:localhost:8800m44]@anon-20191002_181700-167:localhost:8800m44]@anon-20191002_181700-165:localhost:8800m44]@anon-20191002_181700-164:localhost:8800m44]@anon-20191002_181700-163:localhost:8800m44]@anon-20191002_181700-162:localhost:8800m44]@anon-20191002_181700-161:localhost:8800m44]@anon-20191002_181700-160:localhost:8800m42[@anon-20191002_181700-15:localhost:8800m44]@anon-20191002_181700-158:localhost:8800m44]@anon-20191002_181700-156:localhost:8800m44]@anon-20191002_181700-154:localhost:8800m43]@anon-20191002_181700-153:localhost:8800m4|3]@anon-20191002_181700-152:localhost:8800m4{3]@anon-20191002_181700-151:localhost:8800m4z3]@anon-20191002_181700-150:localhost:8800m4y2[@anon-20191002_181700-14:localhost:8800m43]@anon-20191002_181700-149:localhost:8800m4x3]@anon-20191002_181700-146:localhost:8800m4w3]@anon-20191002_181700-144:localhost:8800m4v3]@anon-20191002_181700-143:localhost:8800m4u3]@anon-20191002_181700-142:localhost:8800m4t3]@anon-20191002_181700-141:localhost:8800m4s3]@anon-20191002_181700-140:localhost:8800m4r3]@anon-20191002_181700-138:localhost:8800m4q3]@anon-20191002_181700-137:localhost:8800m4p3]@anon-20191002_181700-136:localhost:8800m4o3]@anon-20191002_181700-134:localhost:8800m4n3]@anon-20191002_181700-132:localhost:8800m4m3]@anon-20191002_181700-131:localhost:8800m4l2[@anon-20191002_181700-12:localhost:8800m43]@anon-20191002_181700-129:localhost:8800m4k3]@anon-20191002_181700-128:localhost:8800m4j3]@anon-20191002_181700-127:localhost:8800m4i3]@anon-20191002_181700-126:localhost:8800m4h3]@anon-20191002_181700-125:localhost:8800m4g3]@anon-20191002_181700-124:localhost:8800m4f3]@anon-20191002_181700-123:localhost:8800m4e3]@anon-20191002_181700-122:localhost:8800m4d3]@anon-20191002_181700-121:localhost:8800m4c3]@anon-20191002_181700-120:localhost:8800m4b2[@anon-20191002_181700-11:localhost:8800m42[@anon-20191002_181700-11:localhost:8800m43]@anon-20191002_181700-119:localhost:8800m4a3]@anon-20191002_181700-118:localhost:8800m4`3]@anon-20191002_181700-117:localhost:8800m4_3]@anon-20191002_181700-116:localhost:8800m4^3]@anon-20191002_181700-115:localhost:8800m4]3]@anon-20191002_181700-114:localhost:8800m4\3]@anon-20191002_181700-113:localhost:8800m4[3]@anon-20191002_181700-112:localhost:8800m4Z3]@anon-20191002_181700-110:localhost:8800m4Y1[ @anon-20191002_181700-10:localhost:8800m43]@anon-20191002_181700-109:localhost:8800m4X3]@anon-20191002_181700-108:localhost:8800m4W3]@anon-20191002_181700-107:localhost:8800m4V3]@anon-20191002_181700-106:localhost:8800m4U3]@anon-20191002_181700-104:localhost:8800m4T3]@anon-20191002_181700-103:localhost:8800m4S3]@anon-20191002_181700-102:localhost:8800m4R3]@anon-20191002_181700-101:localhost:8800m4Q3]@anon-20191002_181700-100:localhost:8800m4P/@8:localhost:8800m4/@8:localhost:8800m4 B\a,X# O  { F  r =  i 4 ` +Y$P|Iu@ l7e0\'U 4]@anon-20191002_181700-237:localhost:8800m44]@anon-20191002_181700-236:localhost:8800m44]@anon-20191002_181700-235:localhost:8800m44]@anon-20191002_181700-234:localhost:8800m44]@anon-20191002_181700-233:localhost:8800m44]@anon-20191002_181700-232:localhost:8800m44]@anon-20191002_181700-231:localhost:8800m44]@anon-20191002_181700-230:localhost:8800m42[@anon-20191002_181700-22:localhost:8800m4 4]@anon-20191002_181700-229:localhost:8800m44]@anon-20191002_181700-228:localhost:8800m44]@anon-20191002_181700-227:localhost:8800m44]@anon-20191002_181700-226:localhost:8800m44]@anon-20191002_181700-225:localhost:8800m44]@anon-20191002_181700-224:localhost:8800m44]@anon-20191002_181700-223:localhost:8800m44]@anon-20191002_181700-222:localhost:8800m44]@anon-20191002_181700-221:localhost:8800m44]@anon-20191002_181700-220:localhost:8800m42[@anon-20191002_181700-21:localhost:8800m4 4]@anon-20191002_181700-219:localhost:8800m44]@anon-20191002_181700-218:localhost:8800m44]@anon-20191002_181700-217:localhost:8800m44]@anon-20191002_181700-216:localhost:8800m44]@anon-20191002_181700-215:localhost:8800m44]@anon-20191002_181700-214:localhost:8800m44]@anon-20191002_181700-213:localhost:8800m44]@anon-20191002_181700-212:localhost:8800m44]@anon-20191002_181700-211:localhost:8800m44]@anon-20191002_181700-210:localhost:8800m42[@anon-20191002_181700-20:localhost:8800m44]@anon-20191002_181700-209:localhost:8800m44]@anon-20191002_181700-208:localhost:8800m44]@anon-20191002_181700-207:localhost:8800m44]@anon-20191002_181700-206:localhost:8800m44]@anon-20191002_181700-205:localhost:8800m44]@anon-20191002_181700-204:localhost:8800m44]@anon-20191002_181700-203:localhost:8800m44]@anon-20191002_181700-202:localhost:8800m44]@anon-20191002_181700-201:localhost:8800m44]@anon-20191002_181700-200:localhost:8800m44]@anon-20191002_181700-199:localhost:8800m44]@anon-20191002_181700-198:localhost:8800m44]@anon-20191002_181700-197:localhost:8800m44]@anon-20191002_181700-196:localhost:8800m44]@anon-20191002_181700-195:localhost:8800m44]@anon-20191002_181700-194:localhost:8800m44]@anon-20191002_181700-193:localhost:8800m44]@anon-20191002_181700-192:localhost:8800m44]@anon-20191002_181700-191:localhost:8800m44]@anon-20191002_181700-190:localhost:8800m44]@anon-20191002_181700-189:localhost:8800m44]@anon-20191002_181700-188:localhost:8800m44]@anon-20191002_181700-187:localhost:8800m44]@anon-20191002_181700-186:localhost:8800m44]@anon-20191002_181700-185:localhost:8800m44]@anon-20191002_181700-184:localhost:8800m44]@anon-20191002_181700-183:localhost:8800m44]@anon-20191002_181700-182:localhost:8800m44]@anon-20191002_181700-181:localhost:8800m44]@anon-20191002_181700-179:localhost:8800m44]@anon-20191002_181700-178:localhost:8800m44]@anon-20191002_181700-177:localhost:8800m44]@anon-20191002_181700-176:localhost:8800m44]@anon-20191002_181700-175:localhost:8800m44]@anon-20191002_181700-174:localhost:8800m4 HssAc2d/ _ , \ ' [ & V # S NM}JzEwByFv> 2]@anon-20191002_181700-165:localhost:8800a 2]@anon-20191002_181700-168:localhost:8800a)4]@anon-20191002_181700-167:localhost:8800m%2]@anon-20191002_181700-167:localhost:8800a$4]@anon-20191002_181700-165:localhost:8800m!2]@anon-20191002_181700-202:localhost:8800a}4]@anon-20191002_181700-201:localhost:8800m{2]@anon-20191002_181700-201:localhost:8800az4]@anon-20191002_181700-200:localhost:8800mx2]@anon-20191002_181700-200:localhost:8800aw/Y@anon-20191002_181700-1:localhost:8800a0[@anon-20191002_181700-19:localhost:8800a14]@anon-20191002_181700-199:localhost:8800mu2]@anon-20191002_181700-199:localhost:8800at4]@anon-20191002_181700-198:localhost:8800mr2]@anon-20191002_181700-198:localhost:8800aq4]@anon-20191002_181700-197:localhost:8800mo2]@anon-20191002_181700-197:localhost:8800an2]@anon-20191002_181700-196:localhost:8800ak4]@anon-20191002_181700-195:localhost:8800ml2]@anon-20191002_181700-195:localhost:8800aj4]@anon-20191002_181700-194:localhost:8800mh2]@anon-20191002_181700-194:localhost:8800ag4]@anon-20191002_181700-193:localhost:8800me2]@anon-20191002_181700-193:localhost:8800ad4]@anon-20191002_181700-192:localhost:8800mb2]@anon-20191002_181700-192:localhost:8800aa4]@anon-20191002_181700-191:localhost:8800m_2]@anon-20191002_181700-191:localhost:8800a^4]@anon-20191002_181700-190:localhost:8800m[2]@anon-20191002_181700-190:localhost:8800aZ0[@anon-20191002_181700-18:localhost:8800a04]@anon-20191002_181700-189:localhost:8800mW2]@anon-20191002_181700-189:localhost:8800aV4]@anon-20191002_181700-188:localhost:8800mS2]@anon-20191002_181700-188:localhost:8800aR4]@anon-20191002_181700-187:localhost:8800mO2]@anon-20191002_181700-187:localhost:8800aN4]@anon-20191002_181700-186:localhost:8800mK2]@anon-20191002_181700-186:localhost:8800aJ4]@anon-20191002_181700-185:localhost:8800mH2]@anon-20191002_181700-185:localhost:8800aG4]@anon-20191002_181700-184:localhost:8800mF2]@anon-20191002_181700-184:localhost:8800aE4]@anon-20191002_181700-183:localhost:8800mD2]@anon-20191002_181700-183:localhost:8800aC4]@anon-20191002_181700-182:localhost:8800mB2]@anon-20191002_181700-182:localhost:8800aA4]@anon-20191002_181700-181:localhost:8800m@2]@anon-20191002_181700-181:localhost:8800a?0[@anon-20191002_181700-17:localhost:8800a/4]@anon-20191002_181700-179:localhost:8800m>2]@anon-20191002_181700-179:localhost:8800a<4]@anon-20191002_181700-178:localhost:8800m=2]@anon-20191002_181700-178:localhost:8800a;4]@anon-20191002_181700-177:localhost:8800m:2]@anon-20191002_181700-177:localhost:8800a94]@anon-20191002_181700-176:localhost:8800m82]@anon-20191002_181700-176:localhost:8800a74]@anon-20191002_181700-175:localhost:8800m62]@anon-20191002_181700-175:localhost:8800a44]@anon-20191002_181700-174:localhost:8800m52]@anon-20191002_181700-174:localhost:8800a34]@anon-20191002_181700-173:localhost:8800m22]@anon-20191002_181700-173:localhost:8800a14]@anon-20191002_181700-170:localhost:8800m.2]@anon-20191002_181700-170:localhost:8800a-2[@anon-20191002_181700-16:localhost:8800m.0[@anon-20191002_181700-16:localhost:8800a-4]@anon-20191002_181700-169:localhost:8800m,2]@anon-20191002_181700-169:localhost:8800a+4]@anon-20191002_181700-168:localhost:8800m* !> d L \ f $ %MV<Ky _7eQ# $rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800m.room.namem6eQ? $xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibilitye5eQ/ $U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rulesg4eQ3 $OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels 3eQ']$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800a2eQ' $FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800m.room.create 1eQ']$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800 0eQ']$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800 /eQ']$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800g.eQ3 $rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.guest_accessm-eQ? $TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.history_visibilitye,eQ/ $88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.join_rulesg+eQ3 $te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.power_levels *eQ']$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800a)eQ' $BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.create(eQ'[$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829'eQ'[$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800&eQ'[$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829g%eQ3 $pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.guest_accessm$eQ? $ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.history_visibilitye#eQ/ $MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.join_rulesg"eQ3 $1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.power_levels!eQ'[$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800a eQ' $0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.createeQ'[$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800eQ'[$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800eQ'[$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800geQ3 $3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800m.room.guest_accessmeQ? $RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800m.room.history_visibilityeeQ/ $MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800m.room.join_rulesgeQ3 $dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800m.room.power_levelseQ'[$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800aeQ' $cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800m.room.create ! !MeQ_$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 334}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4"], "type": "m.room.history_visibility", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040570713, "hashes": {"sha256": "cS1lfNAdsTcRJAXG5sJUA6R3k026UlhANfW9HjNQlEw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9LzAHQDzK2Ya/9UA89qMGg0V4HNJxxx31eEdELLyucXFPPXc04BXThEeBKouNZPEnP7nHakl3YcT18871jhyAQ"}}, "unsigned": {"age_ts": 1570040570713}}rLeQ_s$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 333}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE"], "type": "m.room.join_rules", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040569702, "hashes": {"sha256": "0OFpXass4/MzS4W+/0llafJtTauxQKActAhtq5B9fBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y4Tom0wlCX/zlHKgjlE++ypezsB+iZj9rSn878zbsHYAmhJ4LHvbYVyiaSR1gEjgaOyiVvDUJurDU2iunLiVDA"}}, "unsigned": {"age_ts": 1570040569702}}hKeQ__$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 332}{"auth_events": ["$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "type": "m.room.power_levels", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"users": {"@anon-20191002_181700-97:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040568644, "hashes": {"sha256": "yrpsk0bYIsharwgOl78Sjpo3xPo63tObKhS74Sh9kgw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BEmmo9KxA8LPEITjwkm3/BNz/VrS3jmgVGVH3L6MNYoLoDlspiSb0oJtafL3p8hyN4tbsOHoYOtLY6S8RlipBg"}}, "unsigned": {"age_ts": 1570040568644}}rJeQ_s$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 331}{"auth_events": ["$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs"], "prev_events": ["$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-97", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-97:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040568077, "hashes": {"sha256": "ExVkauMgLo7ik9mHAeTeEjp0cqsbWPKH5Gf0ptTaLKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CnqaSta/4XJOQ/obFTrx+nXG4tubX4xkgPorKPdjmdE4NhIIG8IdhJKek/pZXPBJYXzFMjjqAlUpXMRCcMeiDg"}}, "unsigned": {"age_ts": 1570040568077}}  WPeQ_=$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 337}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-97:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040572995, "hashes": {"sha256": "cI8P8hO4sz7H+m57wdwi+TxXzjq3uLwh01WEl29y660"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rnONWEqtcCOwcwUZJB/UdK2IHH9P23HUGRkKOi0AazczY/PskY6wuLqtYZI5PJqDTPg1nY3+OLGyXtAfyFYuAA"}}, "unsigned": {"age_ts": 1570040572995, "replaces_state": "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"}} OeQ_)$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 336}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-96", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-96:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040572498, "hashes": {"sha256": "SYFKsmnC3+NZhOZua5ZzLYf+2aUhw27xz63S2IX7CmU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rfowuiRGDOfMvYfjARiJ7KUidQzlyOgb6lywp94fVUAk632iicPxym/iS8vePhvA9zDGQO/KfBCtDg8tnuwtBA"}}, "unsigned": {"age_ts": 1570040572498, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-97:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-97", "avatar_url": null}, "sender": "@anon-20191002_181700-97:localhost:8800"}]}}yNeQ_$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 335}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I"], "type": "m.room.guest_access", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040571668, "hashes": {"sha256": "eZqMx+TS9VC7BEtvp0rcwZIVfBGNd2fJvHkM9ty3lA4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V8ba/A9n3/iGQUF1dHsSYPtQyK2abvtJ1NvmYr5zdB/R8+VLZJd/0+jC3FiNVoW15VoP+RWuwXZxOYKaPoCIDQ"}}, "unsigned": {"age_ts": 1570040571668}} \`8pH X 0  i A  y Q )  a 9  q I !Y1 iAyQ)a9qI!Y1 iA[B(w'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 ~'Q$1570043536368agmuM:localhost:8800 }'Q$1570043536367lvGLr:localhost:8800 |'Q$1570043535366hhblx:localhost:8800 {'Q$1570043534365WVAkx:localhost:8800 z'Q$1570043533364iwqCT:localhost:8800 y'Q$1570043530362jRUtV:localhost:8800 w'Q$1570043529361Oytod:localhost:8800 v'Q$1570043528360cetnZ:localhost:8800 u'Q$1570043527359ScxWW:localhost:8800 t'Q$1570043527358wChxc:localhost:8800 s'Q$1570043525357VEfrE:localhost:8800 r'Q$1570043524356NlySy:localhost:8800 q'Q$1570043523355SbJjm:localhost:8800 p'Q$1570043522354IAAap:localhost:8800 o'Q$1570043521353geZrN:localhost:8800 n'Q$1570043518351Popej:localhost:8800 l'Q$1570043517350ncbDd:localhost:8800 k'Q$1570043517349uVTMj:localhost:8800 j'Q$1570043516348vThZG:localhost:8800 i'Q$1570043515347LGRKl:localhost:8800 h'Q$1570043506346EEQDj:localhost:8800 b'Q$1570043504345DCjlJ:localhost:8800 a'Q$1570043503344dJwGF:localhost:8800 `'Q$1570043503343snlnn:localhost:8800 _'Q$1570043502342mVJmO:localhost:8800 ^'Q$1570043501341JmcnI:localhost:8800 ]'Q$1570043479329kvsXb:localhost:8800 P'Q$1570043478328DMkRS:localhost:8800 O'Q$1570043477327AgpMM:localhost:8800 N'Q$1570043477326hyTqo:localhost:8800 M'Q$1570043476325vnEPO:localhost:8800 L'Q$1570043468324DLhaB:localhost:8800 K'Q$1570043429322ZfcNc:localhost:8800 +'Q$1570043428321klTqJ:localhost:8800 *'Q$1570043428320JDiOD:localhost:8800 )'Q$1570043426319TNjnu:localhost:8800 ('Q$1570043425318lLfNb:localhost:8800 ''Q$1570043391316OJaBO:localhost:8800 'Q$1570043388312YDkJu:localhost:8800 &O$157004338812XhwjX:localhost:8829 'Q$1570043387311DGzYi:localhost:8800 'Q$1570043386310bGMNl:localhost:8800 'Q$1570043385309imdbl:localhost:8800 'Q$1570043384308gPogh:localhost:8800 'Q$1570043383307bhuDV:localhost:8800 'Q$1570043382306WhWIU:localhost:8800 'Q$1570043380304caenp:localhost:8800 'Q$1570043379303bCgUn:localhost:8800 'Q$1570043378302mKBGD:localhost:8800 'Q$1570043377301OraEa:localhost:8800 'Q$1570043377300CLPUi:localhost:8800 'Q$1570043375299fbyXJ:localhost:8800 'Q$1570043374298UIMFg:localhost:8800 'Q$1570043373297SOjrf:localhost:8800 'Q$1570043372296yAiBq:localhost:8800 'Q$1570043371295coDXo:localhost:8800 'Q$1570043369294rquKy:localhost:8800 'Q$1570043369293ssSMv:localhost:8800 'Q$1570043368292FAoRb:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 Y % ;YhTeQ__$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 341}{"auth_events": ["$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "type": "m.room.power_levels", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"users": {"@anon-20191002_181700-99:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040576402, "hashes": {"sha256": "PXsZ8pnrlUq7FzgrafsLkedW1dp43biWiB9z69eql38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mram1VBAK2EBrC+ULoDaFuaaENbhq1lnnQLO2Ioc80lwmmLBjwSq0nRanUV5spqncBLPX3+R9hlwAEsnHj9hDw"}}, "unsigned": {"age_ts": 1570040576402}}rSeQ_s$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 340}{"auth_events": ["$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o"], "prev_events": ["$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o"], "type": "m.room.member", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-99", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-99:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040575891, "hashes": {"sha256": "KupgylG3zWGfAKxEwEOxdd3pQQMw2uFJP0/3bU09bN8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7ArDIde68EUxRvrhB52zdc80HalIwzsWo9xodL2+F2K0gNOeHRdU3nkaOkwov1PvkWL/HZSPVSlulGc7yalDw"}}, "unsigned": {"age_ts": 1570040575891}}fReQ_[$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 339}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-99:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040575082, "hashes": {"sha256": "nfYan8m7he1o5gu/jpMAwCf7cUG95f1nML43uNj0i7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O16ZzUXeLFB1znxQrVtnlbVm2v07ZWVNrzaNMfEs1c+UjZsae4WIZN6w8YiK7oTdKeopJ63AY9Wyh3yRymVqBg"}}, "unsigned": {"age_ts": 1570040575082}}WQeQ_=$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 128, "stream_ordering": 338}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok"], "prev_events": ["$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-96:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-96:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040573547, "hashes": {"sha256": "kwRA4mNSnYcovXSZSQiZO2WIKTLN+G2hM6mt8HaPR7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lGH7e9wgzc5n1KOUrAUx2Y3rSlQzUIbP2Sin64ZT/hFA2IsgXdHWenBivDsgJ45HhKhye9cyyIMQE4Qij9z1BQ"}}, "unsigned": {"age_ts": 1570040573547, "replaces_state": "$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok"}} b] p  q + B@Ndb,ie?Q ]$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4m.room.history_visibility!KxhGcTbEWmtgGNpdox:localhost:8800m43m5@anon-20191002_181700-102:localhost:8800$he/Q ]$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Em.room.join_rules!KxhGcTbEWmtgGNpdox:localhost:8800m1m2@anon-20191002_181700-102:localhost:8800&ge3Q ]$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYm.room.power_levels!KxhGcTbEWmtgGNpdox:localhost:8800m.m/@anon-20191002_181700-102:localhost:8800 fe'Q ]$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsm.room.member!KxhGcTbEWmtgGNpdox:localhost:8800m,ym-@anon-20191002_181700-102:localhost:8800e e'Q  ]$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMm.room.create!KxhGcTbEWmtgGNpdox:localhost:8800m)m*;@anon-20191002_181700-102:localhost:8800 de'Q ] $asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800 m#m#@anon-20191002_181700-100:localhost:8800 ce'Q ]$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800m!em!@anon-20191002_181700-101:localhost:8800 be'Q ]$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800&ae3Q ]$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEm.room.guest_access!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800,`e?Q ]$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEm.room.history_visibility!HmkcAMkMjWRhTDJMsy:localhost:8800mOm@anon-20191002_181700-101:localhost:8800$_e/Q ]$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28m.room.join_rules!HmkcAMkMjWRhTDJMsy:localhost:8800mmb@anon-20191002_181700-101:localhost:8800&^e3Q ]$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcm.room.power_levels!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800 ]e'Q ]$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800\ e'Q  ]$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2Am.room.create!HmkcAMkMjWRhTDJMsy:localhost:8800m>m@anon-20191002_181700-101:localhost:8800[e'Q [ $0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800 m Lm r@anon-20191002_181700-98:localhost:8829Ze'Q [$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800m]mF@anon-20191002_181700-99:localhost:8800Ye'Q [$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800%Xe3Q [$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIm.room.guest_access!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800+We?Q [$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYm.room.history_visibility!OMkiVTuuOEeiFAXtUY:localhost:8800mm'@anon-20191002_181700-99:localhost:8800#Ve/Q [$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMm.room.join_rules!OMkiVTuuOEeiFAXtUY:localhost:8800mfmR@anon-20191002_181700-99:localhost:8800%Ue3Q [$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQm.room.power_levels!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800Te'Q [$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800S e'Q  [$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9om.room.create!OMkiVTuuOEeiFAXtUY:localhost:8800mjm@anon-20191002_181700-99:localhost:8800Re'Q [ $hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQm.room.member!BrssELMbasSzTFpIXm:localhost:8800 mkm@anon-20191002_181700-96:localhost:8800 a} { y w u sqomkigeca~ eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~}eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~|eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~{eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~zeeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~yeeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~xeeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~weeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~veeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~ueeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~teeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~seeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~reeQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~qeeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800~peeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~oeeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800  k 8 l9o31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCgs1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6Cgt/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCgr  7 k 9md]c@anon-20191002_181700-819:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8Qo127.0.0.1d]c@anon-20191002_181700-818:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgo127.0.0.1d]c@anon-20191002_181700-816:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4wo127.0.0.1d]c@anon-20191002_181700-815:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0Qpwo127.0.0.1d]c@anon-20191002_181700-814:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44Fgo127.0.0.1d]c@anon-20191002_181700-813:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgo127.0.0.1d]c@anon-20191002_181700-812:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQo127.0.0.1d]c@anon-20191002_181700-811:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_Ktwgo127.0.0.1d]c@anon-20191002_181700-810:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAo127.0.0.1a[a@anon-20191002_181700-80:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCg127.0.0.1Bd]c@anon-20191002_181700-809:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgo127.0.0.1 Fo K %lFZ]c!E@anon-20191002_181700-108:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAoKLPFELDKEH127.0.0.1Perl + Net::Async::HTTP/0.44m}Y]c!E@anon-20191002_181700-107:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3woIZRBPAPTCW127.0.0.1Perl + Net::Async::HTTP/0.44mpX]c!E@anon-20191002_181700-106:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQoSACQZSUOIF127.0.0.1Perl + Net::Async::HTTP/0.44m[PW]c!E@anon-20191002_181700-104:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_AoLWMHDFOEAF127.0.0.1Perl + Net::Async::HTTP/0.44mCV]c!E@anon-20191002_181700-103:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigoWCYOWUZDUI127.0.0.1Perl + Net::Async::HTTP/0.44m>ȃU]c!E@anon-20191002_181700-102:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQoGRLAMJPVVL127.0.0.1Perl + Net::Async::HTTP/0.44m)T]c!E@anon-20191002_181700-100:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEU2RHpoLVI4cnJSWFNPT3oKMDAyZnNpZ25hdHVyZSCANCtYnN5AyAhBu5Vj-kkdF3DfWcvAmn8qI0qr-BQc-goDHGUQTFIHG127.0.0.1Perl + Net::Async::HTTP/0.44m"eS]c!E@anon-20191002_181700-101:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6woPXXMUXFBMG127.0.0.1Perl + Net::Async::HTTP/0.44mR[a!E@anon-20191002_181700-99:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCgZATUVUGXMY127.0.0.1Perl + Net::Async::HTTP/0.44m*Q[a!E@anon-20191002_181700-96:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCgTASTZEHNVL127.0.0.1Perl + Net::Async::HTTP/0.44mQ "Y*L 0   I kMX]S^c#YaRQ# eQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.name$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUscQQ' eP!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQaPQ# eO!SBEprlZiuliFNSfNmz:localhost:8800m.room.name$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsoOQ? eN!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibility$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsgNQ/ eM!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rules$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwiMQ3 eL!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo LQ']eK!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIscKQ' eJ!SBEprlZiuliFNSfNmz:localhost:8800m.room.create$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc JQ']eI!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AaIQ# eI!KxhGcTbEWmtgGNpdox:localhost:8800m.room.name$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkcHQ' eH!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAaGQ# eG!KxhGcTbEWmtgGNpdox:localhost:8800m.room.name$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkoFQ? eF!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibility$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4gEQ/ eE!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rules$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61EiDQ3 eD!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY CQ']eC!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWscBQ' eB!KxhGcTbEWmtgGNpdox:localhost:8800m.room.create$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM AQ']eA!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI @Q']e@!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA ?Q']e?!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ci>Q3 e>!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.guest_access$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEo=Q? e=!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.history_visibility$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEg<Q/ e v D   | J  P   V $ z0 \ *T"Z(bHh61e$4AL1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA <1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0 11e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0 01e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0 /1e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU01e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT41e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT41e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw}1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk3$48:localhost:424553$48:localhost:42455 1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA ;1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk3$48:localhost:42455 3$48:localhost:42455 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw~1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU/1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU.1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0R1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA41e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA31e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA21e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA 1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw 1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw 1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw 1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 1e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A1e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A1e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A  \ LD=6/(  d| t l eeQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800 aeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800eeQ$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800zeeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800zeeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800{eeQ$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc!zNCItZNbpkZKuufRhC:localhost:8800eeQ$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800܁eeQ$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800eeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800oeeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800eeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800reeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800VeeQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800BeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800 jA333$70:localhost:42455$69:localhost:42455!10:localhost:42455 JeeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800\eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800 peeQ$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800eeQ$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800+eeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800weeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800 UeeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800/  yWeQ_$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 344}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY"], "type": "m.room.guest_access", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040578526, "hashes": {"sha256": "JCwF7lEpu1EOHz4EaolX7qNZXbAsz4PiMEx97rciHxI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hl/vdjGzwoG8ECdH00WsqRP7jKXgSt02hKaM4YawlGrzBMuTkqJKInq/Nkvb6Slakzy77bWpsaUxqVnDoDiDCw"}}, "unsigned": {"age_ts": 1570040578526}}VeQ_$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 343}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM"], "type": "m.room.history_visibility", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040577927, "hashes": {"sha256": "vMbriC7P5KrNLu0Y4M31rmP0iqzhycApGRWN7PgHMbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LQ1pbaNuRglqllGVte/uXdWOyBnafYWzO+RfnEJp+qO7BaAZWgxQIEZVysN4t4EFwleJfK1EfrXjsUNT5aVmCw"}}, "unsigned": {"age_ts": 1570040577927}}rUeQ_s$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 342}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ"], "type": "m.room.join_rules", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040577126, "hashes": {"sha256": "EG1DC/weJd16b60pILflK2G2rcPGDip/PN86ZD3+9t8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bh2bZgdAx2xP5qRDcMBrIS4egfPRvYCl8n9fR/rji6LGEyDGkl7i2PVxU+AbzchT+NUeSmOPjHCEBx2bCG+jAw"}}, "unsigned": {"age_ts": 1570040577126}}  KZeQa#$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas!OMkiVTuuOEeiFAXtUY:localhost:8800{"outlier": false, "stream_ordering": 347}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng"], "content": {"membership": "leave"}, "depth": 9, "hashes": {"sha256": "2QL6dNexETtgTtHVbwA53CE2yFEXERF0ysF48aldIK8"}, "origin": "localhost:8829", "origin_server_ts": 1570040580428, "prev_events": ["$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc"], "prev_state": [], "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-98:localhost:8829", "state_key": "@anon-20191002_181700-98:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eWybqMDKt2bjQQHE8suoQ5UuiqjbCJbJD37bPqOLUhKfDJYWt/3K/Vt7TulbFIQ/2lB5DCYzK9mL6EPWNqhsBA"}, "localhost:8829": {"ed25519:a_UxIG": "zc+dLm4rC8237tLE+EFSPKNEaCbqe7L9U4JQ0MO7nwxJnSeYKhS8iXBoD5CS4SySIaCwWbIqotJ0r0mY2GCEBw"}}, "unsigned": {"age": 198, "replaces_state": "$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng"}}WYeQ_=$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 346}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng"], "type": "m.room.member", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-99:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040579677, "hashes": {"sha256": "aPXoSS7Eh284MjSA+YoW95yEVCJhUqx+zipmJdjoIFY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eRgggStCSPv8R0wBClfkS8iBA6JqTasdBgc0n6p9BHcSUHkDLWvWfEIwoYV2LtF3T7swzjFewD60IKM8PwayDQ"}}, "unsigned": {"age_ts": 1570040579677, "replaces_state": "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"}} XeQ_)$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 345}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI"], "type": "m.room.member", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-98", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-98:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040579226, "hashes": {"sha256": "sOaEgFwuvit+13s0I/H7QRYJk8FhRyhWeLeAwZON3UI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t9qRFcRga8uWiM0P+geCknXMuA3sCnCqxz1/97ma2jmMqG1Fh6woa3UXF6zGV3KZjT/6E9yWS6KwkcyJgOveAA"}, "localhost:8829": {"ed25519:a_UxIG": "iHNKZzy92cJdYDdzI77QMbdAOUei43Wuk2kq+yb4PyvQgUxjMVpqFi2+CmV5hhPY27/6FoI4RbcfwoYQXYCAAA"}}, "unsigned": {"age_ts": 1570040579226, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-99:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-99", "avatar_url": null}, "sender": "@anon-20191002_181700-99:localhost:8800"}]}} P; K z w ` "  l . I 2 | > m.w8kH3rU:A$ Q4 Z =   C; [*  . ^>']im.room.member@anon-20191002_181700-110:localhost:8800k='[#m.room.member@anon-20191002_181700-94:localhost:8829#='["m.room.member@anon-20191002_181700-94:localhost:8829""? \m.room.history_visibility^/ [m.room.join_rules]3 Zm.room.power_levels\>']Ym.room.member@anon-20191002_181700-107:localhost:8800[' Xm.room.createZ>']Wm.room.member@anon-20191002_181700-106:localhost:8800Y"? Vm.room.history_visibilityX/ Um.room.join_rulesW3 Tm.room.power_levelsV>']Sm.room.member@anon-20191002_181700-106:localhost:8800U' Rm.room.createT>']Qm.room.member@anon-20191002_181700-105:localhost:8829S# Qm.room.nameR' Pm.room.avatarQ# Om.room.nameP"? Nm.room.history_visibilityO/ Mm.room.join_rulesN3 Lm.room.power_levelsM>']Km.room.member@anon-20191002_181700-104:localhost:8800L' Jm.room.createK>']Im.room.member@anon-20191002_181700-103:localhost:8800J# Im.room.nameI' Hm.room.avatarH# Gm.room.nameG"? Fm.room.history_visibilityF/ Em.room.join_rulesE3 Dm.room.power_levelsD>']Cm.room.member@anon-20191002_181700-102:localhost:8800C' Bm.room.createB>']Am.room.member@anon-20191002_181700-100:localhost:8800A>']@m.room.member@anon-20191002_181700-101:localhost:8800@>']?m.room.member@anon-20191002_181700-100:localhost:8800?3 >m.room.guest_access>"? =m.room.history_visibility=/ ']:m.room.member@anon-20191002_181700-101:localhost:8800:' 9m.room.create9='[8m.room.member@anon-20191002_181700-98:localhost:88298='[7m.room.member@anon-20191002_181700-98:localhost:88297='[6m.room.member@anon-20191002_181700-99:localhost:88006='[5m.room.member@anon-20191002_181700-98:localhost:882953 4m.room.guest_access4"? 3m.room.history_visibility3/ 2m.room.join_rules23 1m.room.power_levels1='[0m.room.member@anon-20191002_181700-99:localhost:88000' /m.room.create/='[.m.room.member@anon-20191002_181700-96:localhost:8800. 3 m.room.guest_access%))em.room.aliaseslocalhost:8800g"? dm.room.history_visibilityf/ cm.room.join_rulese9 bm.room.canonical_aliasd3 am.room.power_levelsc>']`m.room.member@anon-20191002_181700-109:localhost:8800b' _m.room.createa>']^m.room.member@anon-20191002_181700-108:localhost:8800`>']]m.room.member@anon-20191002_181700-108:localhost:8800_='[-m.room.member@anon-20191002_181700-97:localhost:8800-='[,m.room.member@anon-20191002_181700-96:localhost:8800,3 +m.room.guest_access+"? *m.room.history_visibility*/ )m.room.join_rules)3 (m.room.power_levels(='['m.room.member@anon-20191002_181700-97:localhost:8800'' &m.room.create&='[%m.room.member@anon-20191002_181700-94:localhost:8829%='[$m.room.member@anon-20191002_181700-94:localhost:8829$='[!m.room.member@anon-20191002_181700-94:localhost:8829!='[ m.room.member@anon-20191002_181700-94:localhost:8829 ='[m.room.member@anon-20191002_181700-94:localhost:8829='[m.room.member@anon-20191002_181700-94:localhost:8829='[m.room.member@anon-20191002_181700-94:localhost:8829>']hm.room.member@anon-20191002_181700-110:localhost:8800j>']gm.room.member@anon-20191002_181700-110:localhost:8800i>']fm.room.member@anon-20191002_181700-110:localhost:8800h n , XDng]!c@anon-20191002_181700-112:localhost:8800NJWUEDBXDEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6Swog]!c@anon-20191002_181700-110:localhost:8800LARRQIDFNHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAog]!c@anon-20191002_181700-109:localhost:8800OVPPVZDCAAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5gog]!c@anon-20191002_181700-108:localhost:8800KLPFELDKEHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAog]!c@anon-20191002_181700-107:localhost:8800IZRBPAPTCWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3wog~]!c@anon-20191002_181700-106:localhost:8800SACQZSUOIFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQog}]!c@anon-20191002_181700-104:localhost:8800LWMHDFOEAFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_Aog|]!c@anon-20191002_181700-102:localhost:8800GRLAMJPVVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQog{]!c@anon-20191002_181700-103:localhost:8800WCYOWUZDUIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigogz]!c@anon-20191002_181700-100:localhost:8800DHGUQTFIHGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEU2RHpoLVI4cnJSWFNPT3oKMDAyZnNpZ25hdHVyZSCANCtYnN5AyAhBu5Vj-kkdF3DfWcvAmn8qI0qr-BQc-gogy]!c@anon-20191002_181700-101:localhost:8800PXXMUXFBMGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6wo >^^6F~VpH \ 5 &fV.nF n F  ~ V .  f >  v N &^68n`.vN'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800}'Q!GiSxJsKZhQVHBkrVPn:localhost:8800|'Q!GiSxJsKZhQVHBkrVPn:localhost:8800{'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800 y'Q!GSxvxNevpCiwmFCHys:localhost:8800 x'Q!GSxvxNevpCiwmFCHys:localhost:8800 w'Q!GSxvxNevpCiwmFCHys:localhost:8800 v'Q!GSxvxNevpCiwmFCHys:localhost:8800 u'Q!GSxvxNevpCiwmFCHys:localhost:8800 t'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800 s'Q!HZqzpRgqekPOtxstVc:localhost:8800;'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800~('Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800 z~('Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 ('Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800:'Q!HZqzpRgqekPOtxstVc:localhost:88009'Q!HZqzpRgqekPOtxstVc:localhost:88008'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800,'Q!HAFNBarGuVZuWCgwWM:localhost:8800+'Q!HAFNBarGuVZuWCgwWM:localhost:8800*'Q!HAFNBarGuVZuWCgwWM:localhost:8800)'Q!HAFNBarGuVZuWCgwWM:localhost:8800('Q!HAFNBarGuVZuWCgwWM:localhost:8800''Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:88004&Q!GixhPUMvtKSWoKRgvw:localhost:88003&Q!GixhPUMvtKSWoKRgvw:localhost:88002&Q!GixhPUMvtKSWoKRgvw:localhost:88001&Q!GixhPUMvtKSWoKRgvw:localhost:88000&Q!GixhPUMvtKSWoKRgvw:localhost:8800/'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800   -s^eQ_u$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 351}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc"], "type": "m.room.join_rules", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040583611, "hashes": {"sha256": "R1NyWsJ7FdSPEsg1qfina5EWkj7j0rEl8V2T4eChUxw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mei6rjnE8xiHQS399P3Uh6yUZw6V18HEH98jKqfrSvwJydFFjmGxjs7zPzhmsl5pT5XPyVduGkxNGfqt018qCg"}}, "unsigned": {"age_ts": 1570040583611}}j]eQ_c$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 350}{"auth_events": ["$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "type": "m.room.power_levels", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"users": {"@anon-20191002_181700-101:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040583052, "hashes": {"sha256": "nm4L/D2bmu1JPYXm9u6N3FoBanL0VT7iZ7T4nvlN+ps"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w466PMk9bX0wIL18oGYtBZf7KGAZZ7CPhwffIiYB3JMNtzPoVFyC8RU1lisisld1nDEiMkp2SCBgW3m/+mubBg"}}, "unsigned": {"age_ts": 1570040583052}}u\eQ_y$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 349}{"auth_events": ["$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A"], "prev_events": ["$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-101", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-101:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040582540, "hashes": {"sha256": "rM1jSkUCBoWbFkwM5QPEJpT3iv2IYcyyME6NLDtDbRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nhI0/6EPvOvC0FkkHqam30XjTVhUyWbWKAyGRDJnNOCxkznOnKIWySdZJonfUEtWF65eXn3P/cbn89JJeafwBg"}}, "unsigned": {"age_ts": 1570040582540}}h[eQ__$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 348}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-101:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040581950, "hashes": {"sha256": "w9vBecwMm1yJHQXTQH5R6FPwmoaL/F5aODIw625E2RE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1fgygpY+rh+ix4E5+nv8AQlW2hC8Va4ELsyEWEFU8apgAGWDD37mycXJAHkoKMdB7dRjC/0d0Cb9BsVre34eCw"}}, "unsigned": {"age_ts": 1570040581950}} (XpH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP((('Q$1570043589412JaDTY:localhost:8800 ('Q$1570043645418ABZkc:localhost:8800 7'Q$1570043593416CouYv:localhost:8800 'Q$1570043592415heiAH:localhost:8800 'Q$1570043591414NuXxd:localhost:8800 'Q$1570043590413Khvee:localhost:8800 'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 q'Q$1570043428321klTqJ:localhost:8800 p'Q$1570043428320JDiOD:localhost:8800 o'Q$1570043426319TNjnu:localhost:8800 n'Q$1570043425318lLfNb:localhost:8800 m ~z v r n j fb^ZVRNJFOeeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800NeeQ$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800MeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800LeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800KeeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800JeeQ$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800IeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800HeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800GeeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800FeeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800EeeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800DeeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800CeeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800BeeQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800AeeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800@eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800?eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800>eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800=eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800<eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800;eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800:eeQ$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:88009eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:88008eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:88007eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:88006eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:88005eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:88004eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:88003eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:88002eeQ$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800 !cp% ( l I L n Ckt }2;chJQ/ e}!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rules$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsjIQ3 e|!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY HQ']e{!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEdGQ' ez!wIhMbfQzYbJobPdwyi:localhost:8800m.room.create$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwpFQ? ey!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibility$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTchEQ/ ex!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rules$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwjDQ3 ew!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc CQ']ev!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgdBQ' eu!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE AQ']et!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQd@Q' es!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQb?Q# er!SBEprlZiuliFNSfNmz:localhost:8800m.room.name$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsp>Q? eq!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibility$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsh=Q/ ep!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rules$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwj<Q3 eo!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo ;Q']en!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsd:Q' em!SBEprlZiuliFNSfNmz:localhost:8800m.room.create$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc 9Q']el!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ad8Q' ek!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAb7Q# ej!KxhGcTbEWmtgGNpdox:localhost:8800m.room.name$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkp6Q? ei!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibility$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h5Q/ eh!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rules$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Ej4Q3 eg!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY 3Q']ef!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsd2Q' ee!KxhGcTbEWmtgGNpdox:localhost:8800m.room.create$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM81Q']eed!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c80Q']eec!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU /Q']eb!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cj.Q3 ea!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.guest_access$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEp-Q? e`!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.history_visibility$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEh,Q/ e_!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.join_rules$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28j+Q3 e^!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.power_levels$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc *Q']e]!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU SryLl? ^ 1  } P # p C  b 6 V )uHh;Z.zM S&rm@_2D,,Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZZ,Q!IYxUkyFHOgvhLpdkOA:localhost:8800YY,Q!IYxUkyFHOgvhLpdkOA:localhost:8800XX,Q!IYxUkyFHOgvhLpdkOA:localhost:8800WW,Q!IYxUkyFHOgvhLpdkOA:localhost:8800VV+Q !IYxUkyFHOgvhLpdkOA:localhost:8800UU,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800+Q !IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IZkczIYykpZDvjuUWn:localhost:8800 V V,Q!IZkczIYykpZDvjuUWn:localhost:8800 U U,Q!IZkczIYykpZDvjuUWn:localhost:8800 T T,Q!IZkczIYykpZDvjuUWn:localhost:8800 S S,Q!IZkczIYykpZDvjuUWn:localhost:8800 R R,Q!IZkczIYykpZDvjuUWn:localhost:8800 Q Q,Q!IZkczIYykpZDvjuUWn:localhost:8800 P P,Q!IZkczIYykpZDvjuUWn:localhost:8800 O O,Q!IZkczIYykpZDvjuUWn:localhost:8800 N N+Q !IZkczIYykpZDvjuUWn:localhost:8800 M M,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800+Q !ITdmSQpjMnaPoHIbws:localhost:8800,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 MM,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 LL,Q!IPYMCBwcyNIzqdiIWv:localhost:8800KK,Q!IPYMCBwcyNIzqdiIWv:localhost:8800JJ,Q!IPYMCBwcyNIzqdiIWv:localhost:8800II,Q!IPYMCBwcyNIzqdiIWv:localhost:8800HH,Q!IPYMCBwcyNIzqdiIWv:localhost:8800GG,Q!IPYMCBwcyNIzqdiIWv:localhost:8800FF,Q!IPYMCBwcyNIzqdiIWv:localhost:8800EE+Q !IPYMCBwcyNIzqdiIWv:localhost:8800DD,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800+Q !IMiczgkCTjejbnbeyP:localhost:8800,Q!ILbUVZOfPPwaZRrKJd:localhost:8800DD,Q!ILbUVZOfPPwaZRrKJd:localhost:8800CC,Q!ILbUVZOfPPwaZRrKJd:localhost:8800BB,Q!ILbUVZOfPPwaZRrKJd:localhost:8800AA+Q !ILbUVZOfPPwaZRrKJd:localhost:8800@@,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  +Q !IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800+Q !HusOrLtWZTLbmQZxmm:localhost:8800,Q!HmkcAMkMjWRhTDJMsy:localhost:8800 dd,Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc,Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb,Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa,Q!HmkcAMkMjWRhTDJMsy:localhost:8800``,Q!HmkcAMkMjWRhTDJMsy:localhost:8800__,Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^,Q!HmkcAMkMjWRhTDJMsy:localhost:8800]] U X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pHFnwE,'Q$1570043388312YDkJu:localhost:8800 M&O$157004338812XhwjX:localhost:8829 N'Q$1570043387311DGzYi:localhost:8800 L'Q$1570043386310bGMNl:localhost:8800 K'Q$1570043385309imdbl:localhost:8800 J'Q$1570043384308gPogh:localhost:8800 I'Q$1570043383307bhuDV:localhost:8800 H'Q$1570043380304caenp:localhost:8800 G'Q$1570043379303bCgUn:localhost:8800 F'Q$1570043378302mKBGD:localhost:8800 E'Q$1570043590413Khvee:localhost:8800 'Q$1570043588411PDBWG:localhost:8800 'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043575399SiSKs:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 p'Q$1570043428321klTqJ:localhost:8800 o'Q$1570043428320JDiOD:localhost:8800 n'Q$1570043426319TNjnu:localhost:8800 m'Q$1570043392317hujur:localhost:8800 R'Q$1570043391316OJaBO:localhost:8800 Q'Q$1570043377301OraEa:localhost:8800 D b xbaeQ_7$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 354}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-100", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-100:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040585979, "hashes": {"sha256": "3y2Fk2/lIhykFBbljNw8b1UZFEcAiAKGSYpKmpOwzno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mZb8awDUnote9xG7I1za2alZE0IMqYkS7Ii8NLNeJUuK6sa4gk1lVeGvjfIqMv5B04uM7nCO9vs0fLfOGcxvCw"}}, "unsigned": {"age_ts": 1570040585979, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-101:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-101", "avatar_url": null}, "sender": "@anon-20191002_181700-101:localhost:8800"}]}}z`eQ_$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 353}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE"], "type": "m.room.guest_access", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040585152, "hashes": {"sha256": "Cm0j0Dzle/8DZN9DFfl1yh0OBOCxkxo4oiW0h6TFN+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FwAINwalIvBSa2kMrgEQRsTNm14mgJvuUBn5u714SKUUHWrQHFqL/KKN/Zl2IU09RzMB5WG06/S/omj4v8nbCA"}}, "unsigned": {"age_ts": 1570040585152}}_eQ_$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 352}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28"], "type": "m.room.history_visibility", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040584527, "hashes": {"sha256": "bxqdYjE0kxT8r2I4ROC4YwZr/J+ESNaorcZSYk6/7dc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kFshN8T6AYIfe5Jso87kGH0wVxel4rJHsdSgOcQ/ur2CEDZEUAvw4z8lIEip2jUTLY8OfoH2ubl5rqZctImxDg"}}, "unsigned": {"age_ts": 1570040584527}} a} { y w u sqomkigeca~,eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~+eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~*eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~)eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~(eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~'eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~&eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~%eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~$eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~#eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~"eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~!eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~ eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~eeQ$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800 P6 x C  I  m  X J Gt7ZD K 6 y Y<IPstst6<Q3 !IZkczIYykpZDv6Q' !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.create<Q3 !IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels14Q# !IZkczIYykpZDvjuUWn:localhost:8800m.room.name4^Q']!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:88006^Q']!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:88007^Q']!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:88000:Q/ !IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules2BQ? !IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibility36Q' !IZkczIYykpZDvjuUWn:localhost:8800m.room.create/<Q3 !ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels^Q']!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800^Q']!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800 :Q/ !ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rulesBQ? !ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibility6Q' !ITdmSQpjMnaPoHIbws:localhost:8800m.room.create <Q3 !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels^Q']!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800^Q']!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800:Q/ !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rulesBQ? !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibility<Q3 !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_access6Q' !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create<Q3 !IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levelsB^Q']!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800AGQ'/!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800F:Q/ !IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rulesCBQ? !IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibilityD<Q3 !IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_accessE6Q' !IMiczgkCTjejbnbeyP:localhost:8800m.room.create@<Q3 !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels^Q']!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800:Q/ !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rulesBQ? !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibility6Q' !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.create<Q3 !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels]Q'[!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800]Q'[!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800:Q/ !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rulesBQ? !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibility6Q' !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.create?Q9 !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_aliasEQ))!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800<Q3 !HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels4Q# !HusOrLtWZTLbmQZxmm:localhost:8800m.room.name^Q']!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800^Q']!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800 BQ? !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibility :Q/ !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rules <Q3 !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels ^Q']!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800 :Q/ !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rulesBQ? !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibility<Q3 !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_access6Q' !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.create -RM H C > 9 4/*|%w rmhc TlQel!egCvzKpbEwmuvDoBTb:localhost:8800$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0TkQek!egCvzKpbEwmuvDoBTb:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUTjQej!egCvzKpbEwmuvDoBTb:localhost:8800$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQTiQei!XgobMgBjNcDRJnRXLD:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukThQeh!XgobMgBjNcDRJnRXLD:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_PcTgQeg!XgobMgBjNcDRJnRXLD:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMTfQef!XgobMgBjNcDRJnRXLD:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMTeQee!XgobMgBjNcDRJnRXLD:localhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QTdQed!XgobMgBjNcDRJnRXLD:localhost:8800$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwTcQec!XgobMgBjNcDRJnRXLD:localhost:8800$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0ITbQeb!XgobMgBjNcDRJnRXLD:localhost:8800$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqITaQea!XgobMgBjNcDRJnRXLD:localhost:8800$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksT`Qe`!XgobMgBjNcDRJnRXLD:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcT_Qe_!XgobMgBjNcDRJnRXLD:localhost:8800$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYT^Qe^!wIhMbfQzYbJobPdwyi:localhost:8800$aCRkNlroYqeXIBSvwkqV6CGtk1jtlHW7P6P63as3oWoT]Qe]!wIhMbfQzYbJobPdwyi:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wT\Qe\!wIhMbfQzYbJobPdwyi:localhost:8800$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYT[Qe[!wIhMbfQzYbJobPdwyi:localhost:8800$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsTZQeZ!wIhMbfQzYbJobPdwyi:localhost:8800$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYTYQeY!wIhMbfQzYbJobPdwyi:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGETXQeX!wIhMbfQzYbJobPdwyi:localhost:8800$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwTWQeW!cSUQGmpIsSCBAVTOHo:localhost:8800$AKZ1HoWJTVWzDVZiwlV5S8VYT9TUQSuSS5rP48DorkETVQeV!cSUQGmpIsSCBAVTOHo:localhost:8800$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcTUQeU!cSUQGmpIsSCBAVTOHo:localhost:8800$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwTTQeT!cSUQGmpIsSCBAVTOHo:localhost:8800$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcTSQeS!cSUQGmpIsSCBAVTOHo:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgTRQeR!cSUQGmpIsSCBAVTOHo:localhost:8800$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElETQQeQ!SBEprlZiuliFNSfNmz:localhost:8800$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQTPQeP!SBEprlZiuliFNSfNmz:localhost:8800$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQTOQeO!SBEprlZiuliFNSfNmz:localhost:8800$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsTNQeN!SBEprlZiuliFNSfNmz:localhost:8800$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsTMQeM!SBEprlZiuliFNSfNmz:localhost:8800$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwTLQeL!SBEprlZiuliFNSfNmz:localhost:8800$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooTKQeK!SBEprlZiuliFNSfNmz:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsTJQeJ!SBEprlZiuliFNSfNmz:localhost:8800$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcTIQeI!KxhGcTbEWmtgGNpdox:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8ATHQeH!KxhGcTbEWmtgGNpdox:localhost:8800$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxATGQeG!KxhGcTbEWmtgGNpdox:localhost:8800$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkTFQeF!KxhGcTbEWmtgGNpdox:localhost:8800$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4TEQeE!KxhGcTbEWmtgGNpdox:localhost:8800$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61ETDQeD!KxhGcTbEWmtgGNpdox:localhost:8800$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYTCQeC!KxhGcTbEWmtgGNpdox:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsTBQeB!KxhGcTbEWmtgGNpdox:localhost:8800$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMTAQeA!HmkcAMkMjWRhTDJMsy:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIT@Qe@!HmkcAMkMjWRhTDJMsy:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA  #FZueeQ_y$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 358}{"auth_events": ["$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM"], "prev_events": ["$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM"], "type": "m.room.member", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-102", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-102:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040589433, "hashes": {"sha256": "8kb5UlDqODkvKh4RPP6/Ln8NWYJFUokxSfQVH+Lxjpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kzFs+6kmwF/BwPlksab2N5iGiLojgg7s5l6rEiDf0IZWruRnOJqQmkEM0yln1Z0m0li9cn6QPZwLGDCygdGfBQ"}}, "unsigned": {"age_ts": 1570040589433}}hdeQ__$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 357}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-102:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040588768, "hashes": {"sha256": "8Czy4DcCsS5gtDxMXnBBbGRtC/IDkUfu0/eSU53dDUw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "alfkZQ25OztqU4Gs6lTMoY86F5uO9L1roP1z2Fo7KSdAtevXth932fR7bQCE1Ypkk9R+QaqYcSMkxchBRLv3Aw"}}, "unsigned": {"age_ts": 1570040588768}}YceQ_A$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 131, "stream_ordering": 356}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c"], "prev_events": ["$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-100:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-100:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040587155, "hashes": {"sha256": "ViUav8Z51xFMTAk7ZofJk9PFPZBFJqmrmRQusiQsgxU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c9HcL7OZEoZOuSB7Ew+rbIZIvfh2Y6XRkKs6WkZ8rYOeRsNK60HREJTu7LTh2xN5sgJAgHpSVFY+KBVqJmf4Dw"}}, "unsigned": {"age_ts": 1570040587155, "replaces_state": "$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c"}}YbeQ_A$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 355}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-101:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040586597, "hashes": {"sha256": "9mm9xrNgbB3QoVcI/BXpA4Hc65lruLNM3ygupRGM2bU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aYeRGY/wbl5PHnIgSmYbIdJcOh6rquFNd2X4Zgnws1U5qljXnTf1pQdbq0c8clLHqF/9LDfWhzTKI2X+0FWuBg"}}, "unsigned": {"age_ts": 1570040586597, "replaces_state": "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"}} SryLl? ^ 1  } P # p C  b 6 V )uHh;Z.zM S&rm@_2D,,Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZZ,Q!IYxUkyFHOgvhLpdkOA:localhost:8800YY,Q!IYxUkyFHOgvhLpdkOA:localhost:8800XX,Q!IYxUkyFHOgvhLpdkOA:localhost:8800WW,Q!IYxUkyFHOgvhLpdkOA:localhost:8800VV+Q !IYxUkyFHOgvhLpdkOA:localhost:8800UU,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800+Q !IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IZkczIYykpZDvjuUWn:localhost:8800 V V,Q!IZkczIYykpZDvjuUWn:localhost:8800 U U,Q!IZkczIYykpZDvjuUWn:localhost:8800 T T,Q!IZkczIYykpZDvjuUWn:localhost:8800 S S,Q!IZkczIYykpZDvjuUWn:localhost:8800 R R,Q!IZkczIYykpZDvjuUWn:localhost:8800 Q Q,Q!IZkczIYykpZDvjuUWn:localhost:8800 P P,Q!IZkczIYykpZDvjuUWn:localhost:8800 O O,Q!IZkczIYykpZDvjuUWn:localhost:8800 N N+Q !IZkczIYykpZDvjuUWn:localhost:8800 M M,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800+Q !ITdmSQpjMnaPoHIbws:localhost:8800,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 MM,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 LL,Q!IPYMCBwcyNIzqdiIWv:localhost:8800KK,Q!IPYMCBwcyNIzqdiIWv:localhost:8800JJ,Q!IPYMCBwcyNIzqdiIWv:localhost:8800II,Q!IPYMCBwcyNIzqdiIWv:localhost:8800HH,Q!IPYMCBwcyNIzqdiIWv:localhost:8800GG,Q!IPYMCBwcyNIzqdiIWv:localhost:8800FF,Q!IPYMCBwcyNIzqdiIWv:localhost:8800EE+Q !IPYMCBwcyNIzqdiIWv:localhost:8800DD,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800+Q !IMiczgkCTjejbnbeyP:localhost:8800,Q!ILbUVZOfPPwaZRrKJd:localhost:8800DD,Q!ILbUVZOfPPwaZRrKJd:localhost:8800CC,Q!ILbUVZOfPPwaZRrKJd:localhost:8800BB,Q!ILbUVZOfPPwaZRrKJd:localhost:8800AA+Q !ILbUVZOfPPwaZRrKJd:localhost:8800@@,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  +Q !IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800+Q !HusOrLtWZTLbmQZxmm:localhost:8800,Q!HmkcAMkMjWRhTDJMsy:localhost:8800 dd,Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc,Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb,Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa,Q!HmkcAMkMjWRhTDJMsy:localhost:8800``,Q!HmkcAMkMjWRhTDJMsy:localhost:8800__,Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^,Q!HmkcAMkMjWRhTDJMsy:localhost:8800]] {X'k9q? y GO  N  Ub $I Y 2 o H ![3 mEY1 kC}U/iA'O'+({?'Q$1570043151259knbjg:localhost:88001e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwj1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0c1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoX1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8Q1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY3$13:localhost:424553$11:localhost:424551e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE91e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$%M$15700427439Hwxyi:localhost:8829,'Q$1570042742255yQzPA:localhost:8800+'Q$1570042738251iukAg:localhost:8800*%M$15700427368TlZQs:localhost:8829)'Q$1570042734247SfTxR:localhost:8800('Q$1570042731243YuOkC:localhost:8800''Q$1570042723230DFoyn:localhost:8800&'Q$1570042720226wSTBF:localhost:8800%%M$15700427177BOUHn:localhost:8829$'Q$1570042716222nflqt:localhost:8800#'Q$1570042711216KdEEo:localhost:8800"%M$15700427086bDrAU:localhost:8829!'Q$1570042702206BIYsS:localhost:8800 'Q$1570042699203fHFjU:localhost:8800'Q$1570042698202juBqr:localhost:8800'Q$1570042694196OHsWc:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042686186Qxqmn:localhost:8800'Q$1570042679179ZJCqE:localhost:8800%M$15700426753WBESe:localhost:8829'Q$1570042674175gurnU:localhost:8800'Q$1570042671171AQZaz:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042667167mhSmJ:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042654147iSsjl:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042645137fBnPZ:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042634127eDBry:localhost:8800 'Q$1570042632124bMwzE:localhost:8800 'Q$1570042631123SLyGA:localhost:8800 'Q$1570042626117sfUAQ:localhost:8800 'Q$1570042623114pBHTz:localhost:8800 'Q$1570042617107cANtu:localhost:8800'Q$1570042611100ueDzK:localhost:8800&O$157004188093UtRbN:localhost:8800h&O$157004186786RVgKA:localhost:8800f&O$157004185679NNCIw:localhost:8800d&O$157004184672SfwvS:localhost:8800b&O$157004183063NdEPw:localhost:8800`&O$157004181756ejZNp:localhost:8800^&O$157004180853KmrHT:localhost:8800\&O$157004180448zlZXD:localhost:8800[&O$157004178835mLAyG:localhost:8800X&O$157004176828ZZJWh:localhost:8800V&O$157004175621DDceh:localhost:8800T&O$157004174414klNmS:localhost:8800R%M$15700417327EEUMr:localhost:8800P$M$15700403151blJmZ:localhost:88001e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg0e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg*1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w20e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasL1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc0e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgt1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y00e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM%1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr00e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsB1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc0e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQI1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8? Z`8qI! Y 1 i A  y Q )  a 9  w F f4l; OZ(b0hP8 sAyG.1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkf21e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkk1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU3$43:localhost:424550e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5oz3$40:localhost:424551e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwI1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0w1e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k0e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYc1$3:localhost:444051$3:localhost:424551$3:localhost:419851$3:localhost:372653$39:localhost:424553$38:localhost:424551e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoC3$37:localhost:424551e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug3$33:localhost:424551e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj430e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w3$29:localhost:424551e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU0e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo;1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYY1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwm1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1$1:localhost:424551e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4#0e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQp3$17:localhost:424550e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk9'Q$1570043746461eQhrq:localhost:8800*'Q$1570043736453VtbeL:localhost:8800('Q$1570043727446CGYaE:localhost:8800&'Q$1570043711438bqOHL:localhost:8800"'Q$1570043683436iTOlZ:localhost:8800'Q$1570043680434abJWo:localhost:8800'Q$1570043670433bjAzo:localhost:8800'Q$1570043668432TfiHj:localhost:8800'Q$1570043664431IMLSL:localhost:8800'Q$1570043660430kLPpN:localhost:8800'Q$1570043653425AhyPB:localhost:8800 'Q$1570043646419zIOAX:localhost:8800 'Q$1570043590413Khvee:localhost:8800'Q$1570043580403vYYeb:localhost:8800'Q$1570043579402KDYtE:localhost:8800'Q$1570043567391GonfI:localhost:8800'Q$1570043566390qTwyJ:localhost:8800'Q$1570043557383IxQaJ:localhost:8800'Q$1570043546376YfkfL:localhost:8800'Q$1570043539370xCBJr:localhost:8800'Q$1570043534365WVAkx:localhost:8800'Q$1570043527359ScxWW:localhost:8800'Q$1570043522354IAAap:localhost:8800'Q$1570043516348vThZG:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043502342mVJmO:localhost:8800'Q$1570043477326hyTqo:localhost:8800'Q$1570043468324DLhaB:localhost:8800'Q$1570043426319TNjnu:localhost:8800'Q$1570043391316OJaBO:localhost:8800&O$157004338812XhwjX:localhost:8829'Q$1570043383307bhuDV:localhost:8800'Q$1570043377301OraEa:localhost:8800'Q$1570043372296yAiBq:localhost:8800'Q$1570043367291AEdax:localhost:8800'Q$1570043362286KwXMK:localhost:8800'Q$1570043351281XHPOP:localhost:8800'Q$1570043345275UDVPY:localhost:8800'Q$1570043341273LsXNn:localhost:8800( ,NC 8 - { " p  e ZOD9.|#qf VeL$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8sha256 jw QJ^cr伤|w?VeL$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgsha256%]BR\W7.^; 4jϑ (0ӕ0I,VeL$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0sha256k:S{s[e7Tb9v킝V eL$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgsha256ja~f82U9%8%)<&pv3;V eL$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0sha256|@>,aYSq_RzD5=V eL$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUsha256 ppQ*YD 3> K7PV eL$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQsha256Eǝd"6!h< ۰V eL$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuksha256*S 5#qdi {$qlK<]VeL$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pcsha256 Y06]`5y Re4=MRI,V= VeL$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMsha256uQP~`Ҋ'=It 3o~s̑;ۚ[V{eL$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYsha256>H)S:VreL$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQsha256.=DuAhd(r6~5 iR=DVqeL$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUssha256@]he u߮CcLPKVpeL$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexssha256r|c9gPjDLq쿨~Ze{VoeL$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwsha256\g =j\Oϩ6VFUjICGVieL$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vksha256 ,R`OwG޴1 /7BaVheL$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4sha256qUmYԳ#NO)A"nVgeL$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Esha256SQURFm\p{paiv%QVfeL$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYsha256; TBvK2Yt4VeeL$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWssha256J OJp ك}ǡ|2Wk CNo- g p u ; DO} NNNNNN| { 7 9eQ']$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800joina#eQ' $FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800m.room.createfa8eQ' $fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800m.room.createm7eQ? $ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibilitye6eQ/ $FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rulesg5eQ3 $54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels 4eQ']$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800joina3eQ' $fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create2eQ']$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829invitea1eQ' $Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar_0eQ# $QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800m.room.namem/eQ? $jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibilitye.eQ/ $0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rulesg-eQ3 $wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels ,eQ']$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800joina+eQ' $wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800m.room.create*eQ']$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800invitea)eQ' $PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar_(eQ# $rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800m.room.namem'eQ? $xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibilitye&eQ/ $U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rulesg%eQ3 $OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels $eQ']$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800join   oieQ_m$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 362}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4"], "type": "m.room.name", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"name": "The room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040592422, "hashes": {"sha256": "/sHVp1C91Opl5lTHwbIWfukhKZCu3CSZkliQ7TFw1MY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0f4Lk0swJRc27GiZ/i2c+C7vUmD2yRkMPgMUdtDteR+A/VthfMynPaOi/yAMlA8uTgf70VntRUig+bYMJFQICA"}}, "unsigned": {"age_ts": 1570040592422}}heQ_$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 361}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E"], "type": "m.room.history_visibility", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040591411, "hashes": {"sha256": "gupky+B3tenEiyby8TrHIfW7vio8SJK5cwrX/Fcs9OY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eUuV2a+TH9wfEcZ28bnhJCrQGVGqdTzDVmMtzERaQYwLO+Bh4JLGy4++dm7VMzr0mx46yyIgsBQLPvZiWY57Cw"}}, "unsigned": {"age_ts": 1570040591411}}sgeQ_u$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 360}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY"], "type": "m.room.join_rules", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040590827, "hashes": {"sha256": "UDX8Gsv0ZlLHjg/rcZx5YKaestQwSMup2y3srX2A548"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7d+yZrPqv+eumrLzbOlWP7AVG+RDWbS7G5bRLDSPITmnkx/4dASTvMvyXdom/r0fJjNby022RKthciUlAIbhDQ"}}, "unsigned": {"age_ts": 1570040590827}}jfeQ_c$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 359}{"auth_events": ["$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "type": "m.room.power_levels", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"users": {"@anon-20191002_181700-102:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040589953, "hashes": {"sha256": "ygxrb3WD21HIMyx9NiSgUGLhkOBGaGtYx2nShjQLfYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ET7e4/6OuAxbnF3/WRcFs+C82lDm+XNKbj4QxoeFEzjTsSz/T/Qhaq6ymjoBr3Mb4hE4vyyvoeU8AaRNZFRHCg"}}, "unsigned": {"age_ts": 1570040589953}}  4 k 9md]c@anon-20191002_181700-296:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAo127.0.0.1'd]c@anon-20191002_181700-295:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQo127.0.0.1&d]c@anon-20191002_181700-294:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQo127.0.0.1%d]c@anon-20191002_181700-293:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwo127.0.0.1$d]c@anon-20191002_181700-292:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_go127.0.0.1#d]c@anon-20191002_181700-291:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAo127.0.0.1"d]c@anon-20191002_181700-290:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwo127.0.0.1!a[a@anon-20191002_181700-28:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCg127.0.0.1d]c@anon-20191002_181700-289:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwo127.0.0.1 d]c@anon-20191002_181700-288:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElsOmlIcVhGQ2wyTEkzVzcKMDAyZnNpZ25hdHVyZSCzJfmtbG81Wrm2vimRJic-dEVRDEDntZmOEo-h59M2rwo127.0.0.1d]c@anon-20191002_181700-287:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLbHpJaVAweDZDd3JiPVUKMDAyZnNpZ25hdHVyZSAsElnH6_lTGWgAUIPCduvm_LujyRBeS5_Rv8VYp_0n3Ao127.0.0.1 j^ t & ~ , BLVTj e'Q ]$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800mm@anon-20191002_181700-109:localhost:8800 e'Q  ]$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYm.room.create!XgobMgBjNcDRJnRXLD:localhost:8800mSm@anon-20191002_181700-109:localhost:8800 e'Q ]$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wm.room.member!wIhMbfQzYbJobPdwyi:localhost:8800mTm@anon-20191002_181700-108:localhost:8800,~e?Q ]$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYm.room.history_visibility!wIhMbfQzYbJobPdwyi:localhost:8800mzm|B@anon-20191002_181700-107:localhost:8800$}e/Q ]$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsm.room.join_rules!wIhMbfQzYbJobPdwyi:localhost:8800mxmy@anon-20191002_181700-107:localhost:8800&|e3Q ]$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYm.room.power_levels!wIhMbfQzYbJobPdwyi:localhost:8800mumv@anon-20191002_181700-107:localhost:8800 {e'Q ]$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEm.room.member!wIhMbfQzYbJobPdwyi:localhost:8800msmtA@anon-20191002_181700-107:localhost:8800z e'Q  ]$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwm.room.create!wIhMbfQzYbJobPdwyi:localhost:8800mqmqe@anon-20191002_181700-107:localhost:8800,ye?Q ]$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcm.room.history_visibility!cSUQGmpIsSCBAVTOHo:localhost:8800mdmfo@anon-20191002_181700-106:localhost:8800$xe/Q ]$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwm.room.join_rules!cSUQGmpIsSCBAVTOHo:localhost:8800mbdmc@anon-20191002_181700-106:localhost:8800&we3Q ]$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcm.room.power_levels!cSUQGmpIsSCBAVTOHo:localhost:8800m_m`@anon-20191002_181700-106:localhost:8800 ve'Q ]$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygm.room.member!cSUQGmpIsSCBAVTOHo:localhost:8800m]m^x@anon-20191002_181700-106:localhost:8800u e'Q  ]$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEm.room.create!cSUQGmpIsSCBAVTOHo:localhost:8800m[m[@anon-20191002_181700-106:localhost:8800 te'Q ]$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQm.room.member!SBEprlZiuliFNSfNmz:localhost:8800mVmW@anon-20191002_181700-104:localhost:8800 se'Q ] $Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQm.room.avatar!SBEprlZiuliFNSfNmz:localhost:8800mQmT@anon-20191002_181700-104:localhost:8800re#Q ]$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsm.room.name!SBEprlZiuliFNSfNmz:localhost:8800mQmRy@anon-20191002_181700-104:localhost:8800,qe?Q ]$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsm.room.history_visibility!SBEprlZiuliFNSfNmz:localhost:8800mMmO @anon-20191002_181700-104:localhost:8800$pe/Q ]$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwm.room.join_rules!SBEprlZiuliFNSfNmz:localhost:8800mK8mK@anon-20191002_181700-104:localhost:8800&oe3Q ]$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoom.room.power_levels!SBEprlZiuliFNSfNmz:localhost:8800mHmI@anon-20191002_181700-104:localhost:8800 ne'Q ]$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm.room.member!SBEprlZiuliFNSfNmz:localhost:8800mFamG@anon-20191002_181700-104:localhost:8800m e'Q  ]$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcm.room.create!SBEprlZiuliFNSfNmz:localhost:8800mD mDp@anon-20191002_181700-104:localhost:8800 le'Q ]$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Am.room.member!KxhGcTbEWmtgGNpdox:localhost:8800m=jm=@anon-20191002_181700-102:localhost:8800 ke'Q ] $PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAm.room.avatar!KxhGcTbEWmtgGNpdox:localhost:8800m8(m;%@anon-20191002_181700-102:localhost:8800je#Q ]$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkm.room.name!KxhGcTbEWmtgGNpdox:localhost:8800m8&m8@anon-20191002_181700-102:localhost:8800  hleQ__$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 365}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-104:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040595468, "hashes": {"sha256": "mkaHlPkHiBZMRku14+LiNWDO98puW7nfY3Ym/4ooFQw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "voupR48trcIU2NkBDH1866IUkV5Bbcg5U/8trxKL6lSmHjzEK2yUhWdu8FO9QdbEUSWZ3W20G4mhLDtg9gRCAw"}}, "unsigned": {"age_ts": 1570040595468}}TkeQ_7$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 364}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk", "$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA"], "type": "m.room.member", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-103", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-103:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040593770, "hashes": {"sha256": "XllXlOS3RmNHLOO1ooe5ZDxftTUiAjTmoE7xc/7nF+o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "97NhA19mE031qszTyMw2dWBn4dhdRe1tR4amt1yvhAHepjXZQnjtD5HCOzNLQoFZPzzeuZRSJAvxvTYl2UshAQ"}}, "unsigned": {"age_ts": 1570040593770, "invite_room_state": [{"type": "m.room.member", "state_key": "@anon-20191002_181700-102:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-102", "avatar_url": null}, "sender": "@anon-20191002_181700-102:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-102:localhost:8800"}, {"type": "m.room.name", "state_key": "", "content": {"name": "The room name"}, "sender": "@anon-20191002_181700-102:localhost:8800"}, {"type": "m.room.avatar", "state_key": "", "content": {"url": "http://something"}, "sender": "@anon-20191002_181700-102:localhost:8800"}]}}sjeQ_u$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 363}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4"], "type": "m.room.avatar", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"url": "http://something"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040592424, "hashes": {"sha256": "3EzlxOChHqG4QCJMH/ZtB5dZp86852yKk8dE+cfKr0Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ikeiL9hMjwhZLDE7sUxbHyGKl8XLcLGAR1CsUdJn+5Tqay+m34OwICshQYtHNyFwAXbkvKNn0+eQJtS4UbzGCQ"}}, "unsigned": {"age_ts": 1570040592424}} SI j , e 1 ! Y 'j _ -e3Wk9q? wE%}Kv]QD  v ]p> c3$61:localhost:424553$62:localhost:424551e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx01e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4h3$62:localhost:424553$61:localhost:424553$61:localhost:424551e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4g1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4f1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk\1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk[1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0*1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas @1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas ?1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0)1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0(1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk 1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk/1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk.1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk-1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk,1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q 1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q 1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA 0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE;1e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0 1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0 1e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw1e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw1e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE=0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE<3$67:localhost:424553$66:localhost:424553$62:localhost:424551e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA51e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0 1e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0 "^ L z  % . Ve#2;fiO^ YeQ']$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800aXeQ' $RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create WeQ']$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800 VeQ']$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800 UeQ']$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800 TeQ']$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800pSeQ))$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800mReQ? $Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibilityeQeQ/ $GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rulesjPeQ9 $snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_aliasgOeQ3 $x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels NeQ']$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800aMeQ' $6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create LeQ']$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800mKeQ? $t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibilityeJeQ/ $Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rulesgIeQ3 $PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels HeQ']$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800aGeQ' $fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800m.room.createmFeQ? $ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibilityeEeQ/ $FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rulesgDeQ3 $54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels CeQ']$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800aBeQ' $fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create AeQ']$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829a@eQ' $Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar_?eQ# $QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800m.room.namem>eQ? $jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibilitye=eQ/ $0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rulesg<eQ3 $wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels ;eQ']$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800a:eQ' $wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800m.room.create 9eQ']$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800a8eQ' $PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar -RM H C > 9 4/*|%w rmhc TQe!oXKJArsPmtgaYANBrg:localhost:8800$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfETQe!oXKJArsPmtgaYANBrg:localhost:8800$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4TQe!oXKJArsPmtgaYANBrg:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWITQe!oXKJArsPmtgaYANBrg:localhost:8800$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYTQe!egCvzKpbEwmuvDoBTb:localhost:8800$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzATQe!egCvzKpbEwmuvDoBTb:localhost:8800$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4TQe!egCvzKpbEwmuvDoBTb:localhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8TQe!egCvzKpbEwmuvDoBTb:localhost:8800$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgTQe!egCvzKpbEwmuvDoBTb:localhost:8800$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0TQe!egCvzKpbEwmuvDoBTb:localhost:8800$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgTQe!egCvzKpbEwmuvDoBTb:localhost:8800$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0TQe!egCvzKpbEwmuvDoBTb:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUT Qe!egCvzKpbEwmuvDoBTb:localhost:8800$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_PcT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMTQe!XgobMgBjNcDRJnRXLD:localhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QTQe!XgobMgBjNcDRJnRXLD:localhost:8800$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwTQe!XgobMgBjNcDRJnRXLD:localhost:8800$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0ITQe!XgobMgBjNcDRJnRXLD:localhost:8800$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqITQe!XgobMgBjNcDRJnRXLD:localhost:8800$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksTQe!XgobMgBjNcDRJnRXLD:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcTQe!XgobMgBjNcDRJnRXLD:localhost:8800$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYTQe!wIhMbfQzYbJobPdwyi:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wTQe~!wIhMbfQzYbJobPdwyi:localhost:8800$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYTQe}!wIhMbfQzYbJobPdwyi:localhost:8800$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsT~Qe|!wIhMbfQzYbJobPdwyi:localhost:8800$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYT}Qe{!wIhMbfQzYbJobPdwyi:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGET|Qez!wIhMbfQzYbJobPdwyi:localhost:8800$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwT{Qey!cSUQGmpIsSCBAVTOHo:localhost:8800$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcTzQex!cSUQGmpIsSCBAVTOHo:localhost:8800$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwTyQew!cSUQGmpIsSCBAVTOHo:localhost:8800$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcTxQev!cSUQGmpIsSCBAVTOHo:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgTwQeu!cSUQGmpIsSCBAVTOHo:localhost:8800$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElETvQet!SBEprlZiuliFNSfNmz:localhost:8800$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQTuQes!SBEprlZiuliFNSfNmz:localhost:8800$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQTtQes!SBEprlZiuliFNSfNmz:localhost:8800$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsTsQer!SBEprlZiuliFNSfNmz:localhost:8800$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsTrQeq!SBEprlZiuliFNSfNmz:localhost:8800$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsTqQep!SBEprlZiuliFNSfNmz:localhost:8800$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwTpQeo!SBEprlZiuliFNSfNmz:localhost:8800$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooToQen!SBEprlZiuliFNSfNmz:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsTnQem!SBEprlZiuliFNSfNmz:localhost:8800$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcTmQel!KxhGcTbEWmtgGNpdox:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A a} { y w u sqomkigeca~KeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~JeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800~IeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800~HeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~GeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800~FeeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800~EeeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~DeeQ$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~CeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~BeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800~AeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~@eeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~?eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~>eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~=eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~<eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~;eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~:eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~9eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~8eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~7eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~6eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~5eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~4eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~3eeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~2eeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~1eeQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~0eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~/eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800~.eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~-eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800 78r  X pqO7Cf e]]Q=$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800joinanon-20191002_181700-113Ce e]]Q=$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800joinanon-20191002_181700-112Cd e]]Q=$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800joinanon-20191002_181700-113Cc e]]Q=$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800joinanon-20191002_181700-112b e/]Q$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc@random_dude:test@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800banCa e]]Q=$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800joinanon-20191002_181700-113C` e]]Q=$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800joinanon-20191002_181700-112*_ e]]Q$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA@anon-20191002_181700-111:localhost:8829@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800banC^ e]]Q=$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4@anon-20191002_181700-111:localhost:8829@anon-20191002_181700-111:localhost:8829!egCvzKpbEwmuvDoBTb:localhost:8800joinanon-20191002_181700-111C] e]]Q=$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU@anon-20191002_181700-109:localhost:8800@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800joinanon-20191002_181700-109C\ e]]Q=$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800joinanon-20191002_181700-110,[ e]]Q$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800leave*Z e]]Q$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800banCY e]]Q=$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800joinanon-20191002_181700-110CX e]]Q=$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc@anon-20191002_181700-109:localhost:8800@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800joinanon-20191002_181700-109CW e]]Q=$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w@anon-20191002_181700-108:localhost:8800@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800joinanon-20191002_181700-108CV e]]Q=$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE@anon-20191002_181700-107:localhost:8800@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800joinanon-20191002_181700-107CU e]]Q=$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg@anon-20191002_181700-106:localhost:8800@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800joinanon-20191002_181700-106ET e]]Q=$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ@anon-20191002_181700-105:localhost:8829@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800inviteanon-20191002_181700-105CS e]]Q=$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs@anon-20191002_181700-104:localhost:8800@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800joinanon-20191002_181700-104ER e]]Q=$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A@anon-20191002_181700-103:localhost:8800@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800inviteanon-20191002_181700-103  peQ_$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 369}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw"], "type": "m.room.history_visibility", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040597935, "hashes": {"sha256": "IvDex/mcqIAHJ1RFnO1mDJhP2ecTQyigXy6TvOxRiQ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CiD+2UTUO3oPGcAy8RMw4eEsGC96oPh1UtTHMVHrSLX72WCcedpCFgVIdWyZ3E6a3r1PdLcm0mS/glwmwp42CQ"}}, "unsigned": {"age_ts": 1570040597935}}soeQ_u$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 368}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo"], "type": "m.room.join_rules", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040597304, "hashes": {"sha256": "QHGNwc75ocdU4x+2VkCIiSa3OGXeaz8kbnb8jxED6/E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L0TByMZmgKP3rzdPOiwTiXiwNPkCMldlJDBAtlvCnI7zskHyE/63KmbZEdknMnpzRzDveey7qVYjlojuR5WtDg"}}, "unsigned": {"age_ts": 1570040597304}}jneQ_c$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 367}{"auth_events": ["$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "type": "m.room.power_levels", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"users": {"@anon-20191002_181700-104:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040596619, "hashes": {"sha256": "HzRHtnrYaYkY9nuK2lTAacvXOavnkEvYlhOFcshf4Tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LODW3/bXlP0CpDVuS64f30FEiMWh2HQpSnJ1Ohvp86dvtEAYSMHaqCCDOMu7YkvDRdlCcyKV6gPLFJvd6cDTDQ"}}, "unsigned": {"age_ts": 1570040596619}}umeQ_y$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 366}{"auth_events": ["$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc"], "prev_events": ["$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc"], "type": "m.room.member", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-104", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-104:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040596065, "hashes": {"sha256": "c60KR3h+6G/lczBtR6RU1+Hfo86nX2N/Zq0ERItm6Lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JxQkTPhCmnjjCUhiy9Xu80+k0GwU+KDRQLlCIB32QDTw/wQo4T/mTV3fIc4N4PLNYcm5g8wlsc4pOPrzw9VZBA"}}, "unsigned": {"age_ts": 1570040596065}} V ~ V .  K#oGW/ f R  sS!Y'_-e3j8kp> v D  4 | J  n V > 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800'Q$1570043747462YuUEF:localhost:8800'Q$1570043746461eQhrq:localhost:8800'Q$1570043745460sJOiY:localhost:8800'Q$1570043744459BIUYb:localhost:8800'Q$1570043741458PZvre:localhost:8800'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk43$15:localhost:42455 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 1$1:localhost:42455 b1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY@3$19:localhost:424551e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY[1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwQ1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ ;1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo 71e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 <1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpsu1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QCo3$25:localhost:424551e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:424553$23:localhost:424551e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:424553$21:localhost:424551e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU o1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk'Q$1570043754467mNKfq:localhost:8800'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 3$20:localhost:424551e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0W1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4Q1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foB1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQU1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ 1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kH1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo71e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM?1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM 61e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk@1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIR YmBT)}R' { P % y Nk@i>c8 e:g< # w L ! u J  s H qFoD> *Q!KIHYKMzkRDrJwiywwz:loca*Q!JnAKXOrlyisFUpgJPw:localhost:8800  N*Q!JnAKXOrlyisFUpgJPw:localhost:8800  M*Q!JnAKXOrlyisFUpgJPw:localhost:8800  L*Q!JnAKXOrlyisFUpgJPw:localhost:8800  K*Q!JnAKXOrlyisFUpgJPw:localhost:8800  J*Q!JnAKXOrlyisFUpgJPw:localhost:8800  I*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' X*Q!JnAKXOrlyisFUpgJPw:localhost:8800 # T*Q!JnAKXOrlyisFUpgJPw:localhost:8800 " S*Q!JnAKXOrlyisFUpgJPw:localhost:8800 ! R*Q!JnAKXOrlyisFUpgJPw:localhost:8800 Q*Q!JnAKXOrlyisFUpgJPw:localhost:8800  P*Q!JnAKXOrlyisFUpgJPw:localhost:8800  O*Q!JnAKXOrlyisFUpgJPw:localhost:8800 & W*Q!JnAKXOrlyisFUpgJPw:localhost:8800 % V*Q!JnAKXOrlyisFUpgJPw:localhost:8800 $ U+*Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KIHYKMzkRDrJwiywwz:localhost:8800 : v*Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 u*Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 t*Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 s*Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 r*Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 q*Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 p*Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 o*Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 n*Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 m*Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 l*Q!KIHYKMzkRDrJwiywwz:localhost:8800 / k*Q!KIHYKMzkRDrJwiywwz:localhost:8800 . j*Q!KIHYKMzkRDrJwiywwz:localhost:8800 - i*Q!KIHYKMzkRDrJwiywwz:localhost:8800 , h*Q!KIHYKMzkRDrJwiywwz:localhost:8800 + g*Q!KIHYKMzkRDrJwiywwz:localhost:8800 * f*Q!KIHYKMzkRDrJwiywwz:localhost:8800 ) e*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 N [vD v j8|J p> # < P\* H  U 6V$ z S 0 hb0nh6 /b0 ) 1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU"G$83_outlier_C:localhost:424551e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok K1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok J1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok I1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A 1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw=1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw<1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw;1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMe1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMd1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Az1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk+1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk*1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk)1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE 1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsz1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsy1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsx1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8"G$83_outlier_C:localhost:424553$82:localhost:42455 3$87:localhost:4245521e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA3$82:localhost:424551e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 d1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQv1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud41e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk1e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIG1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud41e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug3$82:localhost:424553$81:localhost:424553$81:localhost:424553$81:localhost:424553$80:localhost:424553$80:localhost:42455"G$83_outlier_C:localhost:42455"G$83_outlier_C:localhost:424551e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf41e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf41e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Ar1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Aq1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-ga1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g`1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gb1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA 1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug  TseQ_7$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 372}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs", "$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ"], "type": "m.room.member", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-105", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-105:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040600286, "hashes": {"sha256": "7Wj2HTgHj2RlTE1BWgYWQeGH3Axkv69V8vFE1RhAaZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0vxBwIwLSdoJzN2t4UhZQ6E7yAPfs+RkkLMeFY0KEjD+KmF4il30NdWBnNN/vDpv5LZEXWEMNWJufq2j9iiGDw"}, "localhost:8829": {"ed25519:a_UxIG": "UsDCV65gAaj3Q4/za0z22g9YK+XHlJJReldT5k8SErtB/QpHLQK83h0KINvogREpFfDzZmvfGq+zJL6o5xw8Cw"}}, "unsigned": {"age_ts": 1570040600286, "invite_room_state": [{"type": "m.room.member", "state_key": "@anon-20191002_181700-104:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-104", "avatar_url": null}, "sender": "@anon-20191002_181700-104:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-104:localhost:8800"}, {"type": "m.room.name", "state_key": "", "content": {"name": "The room name"}, "sender": "@anon-20191002_181700-104:localhost:8800"}, {"type": "m.room.avatar", "state_key": "", "content": {"url": "http://something"}, "sender": "@anon-20191002_181700-104:localhost:8800"}]}}sreQ_u$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 371}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs"], "type": "m.room.avatar", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"url": "http://something"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040598957, "hashes": {"sha256": "sn0m8fjBHd/L1Cr3V8JGaMxXmVJM5JXGS5AVHEAgZJA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G7MDkRf6jQSFH2zw6ZCHEWebsXlITsxQbNveEXCiedNgKLiiF60Eb9HvjEusGN0+7bFctsqrwlvcOjlInqIbAw"}}, "unsigned": {"age_ts": 1570040598957}}oqeQ_m$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 370}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs"], "type": "m.room.name", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"name": "The room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040598956, "hashes": {"sha256": "1FZ+p3GbOq7cDN6s1t5Q8yo/dT0uG0BUwqLPqwxmp90"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gUf3Xov7SjWs0+ncf6+Y+1RQ5tqc9wTx9QCA+p9mrxGOk0xmUhvuLV0KGUj8IlsL3S+BlAnbl9GwRi99m38ADA"}}, "unsigned": {"age_ts": 1570040598956}} q | 4 ? D h JUz) |ArrQ))ep!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8oqQ? eo!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibility$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIggpQ/ en!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rules$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0loQ9 em!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_alias$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hginQ3 el!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0 mQ']ek!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUclQ' ej!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ kQ']ei!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk jQ']eh!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc iQ']eg!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM hQ']ef!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMrgQ))ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QofQ? ed!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibility$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwgeQ/ ec!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rules$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IldQ9 eb!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_alias$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIicQ3 ea!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks bQ']e`!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBccaQ' e_!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY `Q']e^!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800$aCRkNlroYqeXIBSvwkqV6CGtk1jtlHW7P6P63as3oWo _Q']e]!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wo^Q? e\!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibility$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYg]Q/ e[!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rules$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsi\Q3 eZ!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY [Q']eY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEcZQ' eX!wIhMbfQzYbJobPdwyi:localhost:8800m.room.create$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw YQ']eW!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800$AKZ1HoWJTVWzDVZiwlV5S8VYT9TUQSuSS5rP48DorkEoXQ? eV!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibility$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcgWQ/ eU!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rules$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwiVQ3 eT!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc UQ']eS!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgcTQ' eR!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE SQ']eQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ Ui>qFT)}R' u J w L ! oDg<@:  s H mBk { P % y N # ec8 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZZ*Q!IYxUkyFHOgvhLpdkOA:localhost:8800YY*Q!IYxUkyFHOgvhLpdkOA:localhost:8800XX*Q!IYxUkyFHOgvhLpdkOA:localhost:8800WW*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!IYxUkyFHOgvhLpdkOA:localhost:8800VV*Q!IYxUkyFHOgvhLpdkOA:localhost:8800UU*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IPYMCBwcyNIzqdiIWv:localhost:8800MM*Q!IPYMCBwcyNIzqdiIWv:localhost:8800LL*Q!IPYMCBwcyNIzqdiIWv:localhost:8800KK*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IZkczIYykpZDvjuUWn:localhost:8800 V V*Q!IZkczIYykpZDvjuUWn:localhost:8800 U U*Q!IZkczIYykpZDvjuUWn:localhost:8800 T T*Q!IZkczIYykpZDvjuUWn:localhost:8800 S S*Q!IZkczIYykpZDvjuUWn:localhost:8800 R R*Q!IZkczIYykpZDvjuUWn:localhost:8800 Q Q*Q!IZkczIYykpZDvjuUWn:localhost:8800 P P*Q!IZkczIYykpZDvjuUWn:localhost:8800 O O*Q!IZkczIYykpZDvjuUWn:localhost:8800 N N*Q!IZkczIYykpZDvjuUWn:localhost:8800 M M*Q!IPYMCBwcyNIzqdiIWv:localhost:8800DD*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IPYMCBwcyNIzqdiIWv:localhost:8800JJ*Q!IPYMCBwcyNIzqdiIWv:localhost:8800II*Q!IPYMCBwcyNIzqdiIWv:localhost:8800HH*Q!IPYMCBwcyNIzqdiIWv:localhost:8800GG*Q!IPYMCBwcyNIzqdiIWv:localhost:8800FF*Q!IPYMCBwcyNIzqdiIWv:localhost:8800EE*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!ILbUVZOfPPwaZRrKJd:localhost:8800DD*Q!ILbUVZOfPPwaZRrKJd:localhost:8800CC*Q!ILbUVZOfPPwaZRrKJd:localhost:8800BB*Q!ILbUVZOfPPwaZRrKJd:localhost:8800AA*Q!ILbUVZOfPPwaZRrKJd:localhost:8800@@*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800 |t l d \ T MF>6.&eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800jeeQ$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800>eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800 فeeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800 eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800$eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800 4eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800 5eeQ$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800 PeeQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800OeeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800-eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800CeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800eeQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800ȁeeQ$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800 )eeQ$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800GeeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U!DnUHoxreGexNmjSVpq:localhost:8800eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800eeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800eeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH4!VCSCNemqikJZiRtxrs:localhost:8829eeQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800GeeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU!CSqENqzAezaZnGktbE:localhost:8800   -sweQ_u$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 376}{"auth_events": ["$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc", "$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE", "$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "prev_events": ["$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc"], "type": "m.room.join_rules", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040603236, "hashes": {"sha256": "ooO9Z5ISYFbXx9pk4N8q9MbOwF0eo1vmlN/cLNqPJh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xO8FewH6xBKN/C9cBrzb3/YB/DYe6UCOlXOoQubcABzyVjlF7mGuM1etQObMwwKBAEf4OdkTlyuBqdW/t4pfDA"}}, "unsigned": {"age_ts": 1570040603236}}jveQ_c$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 375}{"auth_events": ["$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE", "$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "prev_events": ["$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "type": "m.room.power_levels", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"users": {"@anon-20191002_181700-106:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040602587, "hashes": {"sha256": "hkm/0F/x2JkDKffX0D2LO5lrMhNsZrH8hOjQeHiY8a8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bdRrL1suVW0uvD1EJy4YD52Bdeehon5WolAnYsPFHkJZpfDukFmJIhPwlNuaGLdIUlGpP+XG3lO6QHB1IH/yBA"}}, "unsigned": {"age_ts": 1570040602587}}uueQ_y$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 374}{"auth_events": ["$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE"], "prev_events": ["$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE"], "type": "m.room.member", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-106", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-106:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040602082, "hashes": {"sha256": "PMlQQWrEdtM3akE7YH8iowBYjKjENo6U/o/k1ZYw4xY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1YdNgPQ5MN5nqnFzLjf1GoF6ihAkH3GNujBBKszZzgHEF/xEDl+w9L0/GO/klnl7LPGmZrlF8LflVp1Q5Mz8DA"}}, "unsigned": {"age_ts": 1570040602082}}hteQ__$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 373}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-106:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040601495, "hashes": {"sha256": "CPG8ho8i2beGtWhQRePlIxIbxvel6WlxYnwmqgAwHOQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xumzYHOv7IQHWeOpwvXktGHVgoWanfGJ85rOmK30u4CTsy5oaMpXBHXokMXxAJOPvHeqUyRR+sWzKpFiQUnIBg"}}, "unsigned": {"age_ts": 1570040601495}}  x j{eQ_c$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 380}{"auth_events": ["$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "prev_events": ["$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "type": "m.room.power_levels", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"users": {"@anon-20191002_181700-107:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040608195, "hashes": {"sha256": "4SUddcXwHQdXDG8xy1+Hoor5bqAFLLLycV6LeTF65Mk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "15OxdBV3UTcLUcTq8OyxT9Q7a6+uRhB6HRPFYyyRaN4uYin4FJxK18MevgEjHffU8TUszrTjz4E/HK/CCdrQCQ"}}, "unsigned": {"age_ts": 1570040608195}}uzeQ_y$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 379}{"auth_events": ["$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw"], "prev_events": ["$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw"], "type": "m.room.member", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-107", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-107:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040607651, "hashes": {"sha256": "WcX//OkYKaJ3Pm4xEBtQ4mLhp0CfmmD5inSLZUySO0M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O0MzB4gSVt5crbaF0/fssY6L8KY6OUJo52RApeRd4Eu+dLNFUKsauCneq68qKnlLis1I0mfuttUc/w2vqS54BA"}}, "unsigned": {"age_ts": 1570040607651}}hyeQ__$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 378}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-107:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040606994, "hashes": {"sha256": "PPLIgBKZQCw5AEvuqIe1Q4Txp+C3uNY3lUbZyTkFbQI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7gU+mQWD7ABO7S0Ac24SufPb4fkttj0J2vA3jV+gXlm8NRyN4IRxX50AKX8m5deCoKmuejcG6E/QJltc7avyAQ"}}, "unsigned": {"age_ts": 1570040606994}}xeQ_$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 377}{"auth_events": ["$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc", "$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE", "$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "prev_events": ["$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw"], "type": "m.room.history_visibility", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040603781, "hashes": {"sha256": "oLHDEYvij+40IWRy9AohoqK+aIbSb+NyXQNOifQK6/k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fSvgDXs9btALl15VpNcqbZB4TKNDKXMj8A34DUuiPK9g146EQgErFCbpKeDxUnaFsxFFSge2NI5DLSc1f/AbBg"}}, "unsigned": {"age_ts": 1570040603781}} a} { y w u sqomkigeca~jeeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800~ieeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~heeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~geeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~feeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~eeeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~deeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~ceeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~beeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~aeeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~`eeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~_eeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~^eeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~]eeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~\eeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~[eeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~ZeeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~YeeQ$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~XeeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800~WeeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~VeeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800~UeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800~TeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~SeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800~ReeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800~QeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~PeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800~OeeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800~NeeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~MeeQ$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~LeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800 < (<heQ__$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 384}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-109:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040612435, "hashes": {"sha256": "ISlqa9pt7Ke3bnRWwGEUMr4WUWQ9PiVqElo9amF4y+A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yurC0/vL9hhiYTFfLhIVvU5F2xtV0TYAPGe9RGGIvfN/q3lz/gueCKBrv3wqFdZzlVX/bh27w3EuzT+K8pSpDg"}}, "unsigned": {"age_ts": 1570040612435}}U~eQ_9$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 137, "stream_ordering": 383}{"auth_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY", "$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls"], "prev_events": ["$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY"], "type": "m.room.member", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-108:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-108", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-108:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040610644, "hashes": {"sha256": "3Hc/J0PgDc6pNN8fikOntGu8D7HWVN5Q/a0FPuS17B4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/yBtPrimo69/A8FLzg7ZVpt4fwZc5FUfISu60u4Bgb3GHEfMRn3z3aUeFpcCADHF40jWF/MyCJWYyP8VjWzfDw"}}, "unsigned": {"age_ts": 1570040610644}}}eQ_$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 382}{"auth_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY", "$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "prev_events": ["$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls"], "type": "m.room.history_visibility", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040609479, "hashes": {"sha256": "C6YTzMb167qAGbuctAJNc9V/DrwhI89jWtQcultN9v8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1gxPtxuMzKf83jfxlcrWsRjVnO/OX2QOGTJL236xg5mm5MEVxPXlPXLSKRqlaLAY1nGfjZJzxs9nY2l/ivqpBw"}}, "unsigned": {"age_ts": 1570040609479}}s|eQ_u$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 381}{"auth_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY", "$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "prev_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY"], "type": "m.room.join_rules", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040608938, "hashes": {"sha256": "IZB6Fhjz49QmKeHfRLUWfYSTb+oRbr3WYnZwHWOXntQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bqxSbQuK0qOs1oOAKEqpwLdXUffAi0huStN5ISePUVejf1Y3xiwARTneqln32kJfVsp6y4HEU44jY3n9w/TWBQ"}}, "unsigned": {"age_ts": 1570040608938}} ~z v r n j fb^ZVRNJFmeeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800leeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800keeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800jeeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800ieeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800heeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800geeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800feeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800eeeQ$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800deeQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800ceeQ$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800beeQ$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800aeeQ$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800`eeQ$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800_eeQ$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800^eeQ$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800]eeQ$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800\eeQ$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc!XgobMgBjNcDRJnRXLD:localhost:8800[eeQ$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800ZeeQ$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800YeeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800XeeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800WeeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800VeeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800UeeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800TeeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800SeeQ$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800ReeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800QeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800PeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800 K ) K E =_Y69^uKiQ3 ee!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 hQ']e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wsgQ))e!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwpfQ? e!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibility$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEheQ/ e!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rules$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgmdQ9 e!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_alias$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEjcQ3 e!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 bQ']e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIdaQ' e!oXKJArsPmtgaYANBrg:localhost:8800m.room.create$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY8`Q']ee!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4 _Q']e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4s^Q))e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8p]Q? e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibility$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgh\Q/ e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rules$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0m[Q9 e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_alias$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgjZQ3 e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0 YQ']e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUdXQ' e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ8WQ']ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc8VQ']ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM8UQ']ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM TQ']e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMsSQ))e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QpRQ? e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibility$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwhQQ/ e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rules$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0ImPQ9 e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_alias$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIjOQ3 e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks NQ']e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcdMQ' e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY LQ']e!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wpKQ? e~!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibility$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY 1WX ZD  ] l " D f >^}2U t)Kz/~UJQQ$1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800TeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800vTeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800dJQQ$1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800JQQ$1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800JQQ$1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800:Q1$1570043341273LsXNn:localhost:8800!0:localhost:42455JQQ$1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800JQQ$1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800IOQ$157004274411xArrT:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800HMQ$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800JQQ$1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800JQQ$1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800JQQ$1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800JQQ$1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800JQQ$1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800JQQ$1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800HMQ$15700426765pydev:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800HMQ$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800JQQ$1570042662161lGrSW:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800JQQ$1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800JQQ$1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800JQQ$1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800JQQ$1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800JQQ$1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800IOQ$157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800IOQ$157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800IOQ$157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800IOQ$157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800 IOQ$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800IOQ$157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800IOQ$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800IOQ$157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800IOQ$157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800IOQ$157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800IOQ$157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800IOQ$157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800GMQ$15700403175seOtB:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800TeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800TSeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800uTeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM!aZwMKYDXJRlSKjQNWM:localhost:8800OSeQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800;TeQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800SeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800UTeQ$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc!ubmTdQFAhrhZkGULDx:localhost:8800TeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800TeQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800TeQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800SeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800Y 4{@_ R  S  , . /Ic'CE_#y$z>5TeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800gSeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:88000TeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800;3Q$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:88008;3Q$55:localhost:42455!taANXnGBZntAreRurn:localhost:88005;3Q$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800*;3Q$53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 TeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800hUTeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800lTeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800TeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800;3Q$49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800TeQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800;3Q$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800TeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800SeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800^TeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800TeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800;TeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800SeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800R:1Q$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800;3Q$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800;3Q$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800TeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800TeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800TeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800TeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800;3Q$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800 TeQ$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU!jRuDexjFzIDOKbwDJQ:localhost:8800:TeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800TeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA!nhbUIcIbhuXkRqfeDa:localhost:8800GSeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800_TeQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:8800TeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800TeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800;3Q$15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800JQQ$1570043754467mNKfq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800ZJQQ$1570043744459BIUYb:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800YJQQ$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800V;Q3$1570043683436iTOlZ:localhost:8800!13:localhost:42455I;Q3$1570043680434abJWo:localhost:8800!12:localhost:42455H;Q3$1570043670433bjAzo:localhost:8800!11:localhost:42455F;Q3$1570043664431IMLSL:localhost:8800!10:localhost:42455E:Q1$1570043660430kLPpN:localhost:8800!9:localhost:42455DJQQ$1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:88006JQQ$1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800+JQQ$1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800JQQ$1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800JQQ$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800:Q1$1570043468324DLhaB:localhost:8800!6:localhost:42455 :Q1$1570043392317hujur:localhost:8800!5:localhost:42455IOQ$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Ie$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1He$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41Ge$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1Fe$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1Ee$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1De$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281Ce$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1Be$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1Ae$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1@e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1?e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1>e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1=e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1<e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1;e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1:e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs19e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM18e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs17e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw16e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe415e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM14e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE13e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk12e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk11e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA10e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1/e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM1.e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1-e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs1,e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1+e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1*e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1)e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1(e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81'e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1&e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1%e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1$e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1#e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1"e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1!e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1 e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0}1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ|1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w{1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwz1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEy1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgx1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEw1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4v1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIu1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYt1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAs1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4r1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8p1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgo1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0n1 e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgm1 e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0l1 e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUk1 e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQj1 e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuki1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pch1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMg1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMf1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Qe1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwd1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0Ic1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIb1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksa1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc`1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY_ F o 6  u S Uo6So6Rn5  Rn5U Iq8 m M  u1978e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMsha2568e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4sha256 p8e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-ssha256 n3$49:localhost:42455sha256 3$46:localhost:42455sha256 3$45:localhost:42455sha256 3$48:localhost:42455sha256 3$44:localhost:42455sha256 3$43:localhost:42455sha256 3$40:localhost:42455sha256 8e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAsha256x8e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0sha2568e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAksha256#8e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vcsha256 8e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMsha2568e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUsha2568e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQsha256 8e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0sha256i7e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvosha256_8e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAsha2568e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUsha2568e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Ysha2568e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_ssha256 8e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAsha2568e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwsha2568e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMsha256 8e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0sha2568e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyUsha2568e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUsha2568e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3issha256 G8e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90sha256 18e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-Esha256 8e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUsha2568e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81Usha256 8e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REsha2567e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Asha256u8e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bYsha256 }8e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8sha2568e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAsha2568e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEksha256 8e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEsha2568e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0sha256U8e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQsha2567e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUsha256V8e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMsha256A8e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5osha256*8e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcsha256A8e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwsha256s8e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLksha2568e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIsha2568e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvksha2568e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980sha256G8e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNoksha256A8e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760sha25638e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNssha256,3$53:localhost:42455sha256 '8e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogsha2563$52:localhost:42455sha256 &3$50:localhost:42455sha256 %8e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgsha256 8e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEsha2568e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1Usha2568e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYsha2568e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHYsha2568e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWosha256 Y8e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcsha2568e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogsha256Y8e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyosha2568e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwsha2568e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbssha256   seQ_u$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 388}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI"], "type": "m.room.join_rules", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040614695, "hashes": {"sha256": "xGz86QGPR2yYRmjLzpWQXC79EfQJhLJLvk+e0V5JeLk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tC9T8ynzR8ENEi+QAACMiqd41BVITk0/VlfXvYsmlHS9mBeRrOesP2hhkH+iz9POtzVDVF0pScsQWo61D4G1Ag"}}, "unsigned": {"age_ts": 1570040614695}}eQ_7$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 387}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks"], "type": "m.room.canonical_alias", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"alias": "#test-20191002_181700-6:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040614037, "hashes": {"sha256": "N72yBiKL1OcCsuYy/nQr4oh3U1spvp9WBVgGc2paR/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fQL3/rGvHg3iXkDTMiMUfq+je+P8wixTLzuOC0LoakTkjp5XR+TCHTuW+LbzPTxTzsZqaNEtpiI8HLEd8uF+Dw"}}, "unsigned": {"age_ts": 1570040614037}}jeQ_c$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 386}{"auth_events": ["$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "type": "m.room.power_levels", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"users": {"@anon-20191002_181700-109:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040613487, "hashes": {"sha256": "vxcByH/VSeFPLpFlI4xGh+cSnIdVqYP1/rZc2l7TUfs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0NjvHp1O9I6CIDjw8W1NMemokkDJDZ+gHFcm4mMlHMxGu/7UHcR1z0C9nIsNq+tV9R+RezABCJDOR4vIBitlDQ"}}, "unsigned": {"age_ts": 1570040613487}}ueQ_y$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 385}{"auth_events": ["$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY"], "prev_events": ["$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY"], "type": "m.room.member", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-109", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-109:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040613052, "hashes": {"sha256": "3QyrZvVJLvzKyfMB0Quzavl2OFKxJOfZ+NlFv0k7WhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9jPO4EpAuz4+8HVLnGnYdToiOAlRxG6/BE+EyWQ9fS0V4Y+DDNUeBDcVJTldvBsOe/UBSjnfiyT3pjpFgVhLDA"}}, "unsigned": {"age_ts": 1570040613052}} EV Q  d  z,':JE,e?Q ]$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEm.room.history_visibility!oXKJArsPmtgaYANBrg:localhost:8800m"mD@anon-20191002_181700-112:localhost:8800$e/Q ]$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgm.room.join_rules!oXKJArsPmtgaYANBrg:localhost:8800mmյ@anon-20191002_181700-112:localhost:8800)e9Q ]$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEm.room.canonical_alias!oXKJArsPmtgaYANBrg:localhost:8800m7m@anon-20191002_181700-112:localhost:8800&e3Q ]$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4m.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800mRmг@anon-20191002_181700-112:localhost:8800 e'Q ]$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIm.room.member!oXKJArsPmtgaYANBrg:localhost:8800m)mͨ@anon-20191002_181700-112:localhost:8800 e'Q  ]$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYm.room.create!oXKJArsPmtgaYANBrg:localhost:8800mNmʩ@anon-20191002_181700-112:localhost:8800 e'Q ] $_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAm.room.member!egCvzKpbEwmuvDoBTb:localhost:8800 m›mE@anon-20191002_181700-109:localhost:8800 e'Q ]$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4m.room.member!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-111:localhost:8829!e)Q ]$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8m.room.aliases!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800,e?Q ]$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgm.room.history_visibility!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800$e/Q ]$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0m.room.join_rules!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800)e9Q ]$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgm.room.canonical_alias!egCvzKpbEwmuvDoBTb:localhost:8800m.m @anon-20191002_181700-109:localhost:8800& e3Q ]$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0m.room.power_levels!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800 e'Q ]$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUm.room.member!egCvzKpbEwmuvDoBTb:localhost:8800m3m@anon-20191002_181700-109:localhost:8800  e'Q  ]$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQm.room.create!egCvzKpbEwmuvDoBTb:localhost:8800mUm@anon-20191002_181700-109:localhost:8800 e'Q ] $Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukukm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800 mDm@anon-20191002_181700-110:localhost:8800 e'Q ] $ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pcm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800 m.m@anon-20191002_181700-109:localhost:8800 e'Q ] $dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800 mm>@anon-20191002_181700-109:localhost:8800 e'Q ]$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800mm>@anon-20191002_181700-110:localhost:8800!e)Q ]$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Qm.room.aliases!XgobMgBjNcDRJnRXLD:localhost:8800mmn@anon-20191002_181700-109:localhost:8800,e?Q ]$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwm.room.history_visibility!XgobMgBjNcDRJnRXLD:localhost:8800mm@anon-20191002_181700-109:localhost:8800$e/Q ]$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0Im.room.join_rules!XgobMgBjNcDRJnRXLD:localhost:8800m'm@anon-20191002_181700-109:localhost:8800)e9Q ]$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIm.room.canonical_alias!XgobMgBjNcDRJnRXLD:localhost:8800mmM@anon-20191002_181700-109:localhost:8800&e3Q ]$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksm.room.power_levels!XgobMgBjNcDRJnRXLD:localhost:8800momS@anon-20191002_181700-109:localhost:8800  4 h 6jfd]c@anon-20191002_181700-199:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8Qo127.0.0.1d]c@anon-20191002_181700-198:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwo127.0.0.1d]c@anon-20191002_181700-197:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0wo127.0.0.1d]c@anon-20191002_181700-196:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFktYixvQUtYZWF0VUBuWk0KMDAyZnNpZ25hdHVyZSDs1SpADqu4MI3Kkq0UCmbydwdHoJTXpqEYg9OJG7YBnAo127.0.0.1d]c@anon-20191002_181700-195:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwweW9JRFk5aGt3VmE9a3QKMDAyZnNpZ25hdHVyZSDHqwHHHtg_uF13OA88pF-q5kS_mwIyEV79B7ibema-lgo127.0.0.1d]c@anon-20191002_181700-194:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEyOm1aOWtBTU5mNjtLNn4KMDAyZnNpZ25hdHVyZSAJNq38xYsAafEMGJjV-gyFAhEIRQMSyJcyHE_26icm3Ao127.0.0.1d]c@anon-20191002_181700-193:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHMxS2NQZ2VtLGJvcCZibkMKMDAyZnNpZ25hdHVyZSA3TN7LnS5yl4h57FSwjwg9GfgdePN17_r5hXeFHnU2RAo127.0.0.1d]c@anon-20191002_181700-192:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZLT3hqPWp5PU9uRCM1VEMKMDAyZnNpZ25hdHVyZSC2EoqChhKnAKlLFg2seUiR0-JQqprG-ktdGIfMC6k8qAo127.0.0.1d]c@anon-20191002_181700-191:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtlMlJqT3UqWEIsNSs3YzAKMDAyZnNpZ25hdHVyZSA1yZh7wJF3PyG6ywgs4xxgTMQPJbBMDXW2BrgJlZc33go127.0.0.1d]c@anon-20191002_181700-190:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl0LCxpVnpnPWN4OFdEdyoKMDAyZnNpZ25hdHVyZSAvHPED72aJ9dwVSH5v0uE3tWyTMdN6NBhOex2nXfW16Qo127.0.0.1 Bm G !hBd]c!E@anon-20191002_181700-119:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwoCPKUOIOMCL127.0.0.1Perl + Net::Async::HTTP/0.44mc]c!E@anon-20191002_181700-118:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQoEGGHWNCYVG127.0.0.1Perl + Net::Async::HTTP/0.44mƃb]c!E@anon-20191002_181700-117:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwoAOWWBWACSK127.0.0.1Perl + Net::Async::HTTP/0.44ma]c!E@anon-20191002_181700-116:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1goNOEVNPHDUZ127.0.0.1Perl + Net::Async::HTTP/0.44mB`]c!E@anon-20191002_181700-115:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwoXPQYONRAEB127.0.0.1Perl + Net::Async::HTTP/0.44mg_]c!E@anon-20191002_181700-114:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4QoCMIIGGQSIH127.0.0.1Perl + Net::Async::HTTP/0.44m-^]c!E@anon-20191002_181700-113:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygoDEIMBREIQT127.0.0.1Perl + Net::Async::HTTP/0.44m]]c!E@anon-20191002_181700-112:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6SwoNJWUEDBXDE127.0.0.1Perl + Net::Async::HTTP/0.44mɸ\]c!E@anon-20191002_181700-110:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAoLARRQIDFNH127.0.0.1Perl + Net::Async::HTTP/0.44mq[]c!E@anon-20191002_181700-109:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5goOVPPVZDCAA127.0.0.1Perl + Net::Async::HTTP/0.44m  x leQ_g$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 392}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM"], "type": "m.room.member", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-110:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040618464, "hashes": {"sha256": "oVPlNgCvfxEJsDnHOi8GL93wU53ALmcLHxvpaLjjUIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "du2cPaSD3tVmv0S8NbalNFIQKmqBHIAoEWbW1OzwCkCT0ZR+D0ixi6G8P8jwmmxJaianitWYutSx5/mLj9ZTAg"}}, "unsigned": {"age_ts": 1570040618464, "replaces_state": "$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM"}}UeQ_9$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 139, "stream_ordering": 391}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I"], "prev_events": ["$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q"], "type": "m.room.member", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-110:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-110", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-110:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040617445, "hashes": {"sha256": "wK+I2AB+2QDnhxIrxwzB30VRItbjHSG27ixtNKXNS1s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mTKLS1QWKTQ3l+yuw4diV3vgZefI9vc0TSZ1FDocsQkSOTQ9/NzTzJYb+9XANktJzWoij2pv5XUejENAaJQ0CQ"}}, "unsigned": {"age_ts": 1570040617445}}eQ_K$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 390}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw"], "type": "m.room.aliases", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"aliases": ["#test-20191002_181700-6:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040616478, "hashes": {"sha256": "6VF3xEpyLXoJrf6HpJOJYn3hcOmqVPKeB5KNU0kcPLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LlxC9g8TSiOoUnsX4jgAP2bWm+LX6oz4JhUPs6NOmzdE/vJoZU04HL03CDdsLcv2ucn9Iey6jAJ/O5Xh2o2JDg"}}, "unsigned": {"age_ts": 1570040616478}}eQ_$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 389}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I"], "type": "m.room.history_visibility", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040615170, "hashes": {"sha256": "kdRLtpo08baJOzGWUjcqlcUhF2L2f7lxfoyWh+2+9H8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2myMUNkoVlsVsPl6vbQoy54NkCdHomRr2j4rLKefoqxumbGKoN9sMU/wiTtfpI2XaLs1m63Fo94nrQu7dkASCg"}}, "unsigned": {"age_ts": 1570040615170}}  ipX@(iQ9! i H &  | Z 8  l J (   ] ;  o M + A0dBk>]0|O"nA`3Rc!E@__ANON__-48:localhost:424556 !E@__ANON__-49:localhost:42455c !E@__ANON__-50:localhost:42455!E@__ANON__-58:localhost:42455+!E@__ANON__-57:localhost:42455)!E@__ANON__-56:localhost:42455'!E@__ANON__-55:localhost:42455%!E@__ANON__-54:localhost:42455#!E@__ANON__-53:localhost:42455!!E@__ANON__-52:localhost:42455!E@__ANON__-51:localhost:42455,]@anon-20191002_181700-113:localhost:8800j,]@anon-20191002_181700-113:localhost:8800h,]@anon-20191002_181700-113:localhost:8800f,]@anon-20191002_181700-113:localhost:8800d,]@anon-20191002_181700-113:localhost:8800a,]@anon-20191002_181700-112:localhost:8800m,]@anon-20191002_181700-112:localhost:8800k,]@anon-20191002_181700-112:localhost:8800i,]@anon-20191002_181700-112:localhost:8800g,]@anon-20191002_181700-112:localhost:8800e,]@anon-20191002_181700-112:localhost:8800c,]@anon-20191002_181700-112:localhost:8800`,]@anon-20191002_181700-111:localhost:8829_,]@anon-20191002_181700-111:localhost:8829^,]@anon-20191002_181700-110:localhost:8800\,]@anon-20191002_181700-110:localhost:8800[,]@anon-20191002_181700-110:localhost:8800Z,]@anon-20191002_181700-110:localhost:8800Y,]@anon-20191002_181700-109:localhost:8800],]@anon-20191002_181700-109:localhost:8800X,]@anon-20191002_181700-108:localhost:8800W,]@anon-20191002_181700-107:localhost:8800V,]@anon-20191002_181700-106:localhost:8800U,]@anon-20191002_181700-105:localhost:8829T,]@anon-20191002_181700-104:localhost:8800S,]@anon-20191002_181700-103:localhost:8800R,]@anon-20191002_181700-102:localhost:8800Q,]@anon-20191002_181700-101:localhost:8800O,]@anon-20191002_181700-101:localhost:8800M,]@anon-20191002_181700-100:localhost:8800P,]@anon-20191002_181700-100:localhost:8800N!E@__ANON__-47:localhost:42455!E@__ANON__-46:localhost:42455!E@__ANON__-45:localhost:42455!E@__ANON__-43:localhost:42455!E@__ANON__-41:localhost:42455 !E@__ANON__-40:localhost:42455 !E@__ANON__-40:localhost:42455!E@__ANON__-39:localhost:42455!E@__ANON__-38:localhost:42455!E@__ANON__-37:localhost:42455!E@__ANON__-36:localhost:42455!E@__ANON__-35:localhost:42455!E@__ANON__-34:localhost:42455!E@__ANON__-33:localhost:42455!E@__ANON__-32:localhost:42455!E@__ANON__-31:localhost:42455!E@__ANON__-30:localhost:42455 C@__ANON__-2:localhost:42455!E@__ANON__-28:localhost:42455!E@__ANON__-26:localhost:42455!E@__ANON__-23:localhost:42455!E@__ANON__-22:localhost:42455!E@__ANON__-21:localhost:42455!E@__ANON__-20:localhost:42455!E@__ANON__-19:localhost:42455!E@__ANON__-18:localhost:42455!E@__ANON__-17:localhost:42455!E@__ANON__-16:localhost:42455!E@__ANON__-15:localhost:42455!E@__ANON__-14:localhost:42455!E@__ANON__-13:localhost:42455!E@__ANON__-12:localhost:42455!E@__ANON__-11:localhost:42455!E@__ANON__-10:localhost:42455 C@__ANON__-0:localhost:42455/@8:localhost:8800/@7:localhost:8800/@7:localhost:8800/@6:localhost:8800/@6:localhost:8800/@5:localhost:8800/@5:localhost:8800/@3:localhost:88001@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:8800/@2:localhost:88001@28:localhost:88001@28:localhost:88001@17:localhost:88001@17:localhost:88001@16:localhost:88001@16:localhost:88001@15:localhost:88001@15:localhost:88001@14:localhost:88001@14:localhost:88001@13:localhost:88001@13:localhost:88001@12:localhost:88001@11:localhost:8800 7KtGf9  R$)kW=vHb4 | N h : T & n @  _ 3 W)yKe7--]@anon-20191002_18170,]@anon-20191002_181700-127:localhost:8800|,]@anon-20191002_181700-129:localhost:8800}-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-140:localhost:8800-]@anon-20191002_181700-139:localhost:8829-]@anon-20191002_181700-139:localhost:8829-]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-132:localhost:8800,]@anon-20191002_181700-131:localhost:8800,]@anon-20191002_181700-130:localhost:8800~,]@anon-20191002_181700-128:localhost:8800{,]@anon-20191002_181700-127:localhost:8800z,]@anon-20191002_181700-126:localhost:8800y,]@anon-20191002_181700-125:localhost:8800x,]@anon-20191002_181700-124:localhost:8800w,]@anon-20191002_181700-123:localhost:8800v,]@anon-20191002_181700-120:localhost:8800u,]@anon-20191002_181700-119:localhost:8800t,]@anon-20191002_181700-118:localhost:8800s,]@anon-20191002_181700-117:localhost:8800r,]@anon-20191002_181700-116:localhost:8800q,]@anon-20191002_181700-115:localhost:8800p,]@anon-20191002_181700-114:localhost:8800o,]@anon-20191002_181700-113:localhost:8800n-]@anon-20191002_181700-170:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800 +[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800*[ @anon-20191002_181700-16:localhost:8800-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-168:localhost:8800-]@anon-20191002_181700-167:localhost:8800-]@anon-20191002_181700-166:localhost:8829-]@anon-20191002_181700-165:localhost:8800-]@anon-20191002_181700-164:localhost:8800-]@anon-20191002_181700-163:localhost:8800-]@anon-20191002_181700-162:localhost:8800-]@anon-20191002_181700-161:localhost:8800-]@anon-20191002_181700-160:localhost:8800-]@anon-20191002_181700-158:localhost:8800-]@anon-20191002_181700-156:localhost:8800-]@anon-20191002_181700-154:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-152:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-150:localhost:8800-]@anon-20191002_181700-150:localhost:8800-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-148:localhost:8829-]@anon-20191002_181700-148:localhost:8829-]@anon-20191002_181700-147:localhost:8829-]@anon-20191002_181700-147:localhost:8829-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-141:localhost:8800 =Oe* y @  e Q =  ~ 9k&WCt/IbN iDEQ@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800F DEQ@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800HO]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800/O]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800.O]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800-DEQ@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800DDEQ@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800BDEQ@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800@DEQ@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800>DEQ@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:8800<5E3@__ANON__-51:localhost:42455!13:localhost:4245585E3@__ANON__-50:localhost:42455!13:localhost:4245575E3@__ANON__-49:localhost:42455!12:localhost:424555DEQ@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:880045E3@__ANON__-47:localhost:42455!11:localhost:4245505E3@__ANON__-46:localhost:42455!10:localhost:42455.4E1@__ANON__-45:localhost:42455!9:localhost:42455,DEQ@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800+DEQ@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800)DEQ@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800%DEQ@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800'DEQ@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800#DEQ@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800!DEQ@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800DEQ@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800DEQ@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800DEQ@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800DEQ@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800DEQ@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800DEQ@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800DEQ@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800CCQ@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800DEQ@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800 DEQ@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800 DEQ@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800DEQ@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:88004E1@__ANON__-20:localhost:42455!6:localhost:42455DEQ@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800DEQ@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800DEQ@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800DEQ@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800DEQ@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800DEQ@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800DEQ@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800DEQ@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:88004E1@__ANON__-10:localhost:42455!5:localhost:424553C1@__ANON__-0:localhost:42455!0:localhost:424558/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800r8/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800n8/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800j:1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800:1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800:1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800:1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800:1Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:88008/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800h:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800 1`p 0 @ P `  p 0@P`p 0@P{O]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:88002O]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:88001O]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800cO]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800bO]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800aO]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800`O]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800]O]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800^O]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800\O]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800[O]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800ZO]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800YO]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800XO]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800WO]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800VO]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800UO]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800TO]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800SO]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800RO]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800QO]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800PO]Q@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800OO]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800MO]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800LO]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800KO]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800JO]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800IO]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800HO]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800GO]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800FO]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800EO]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800DO]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800CO]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800@O]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:88006O]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:88008O]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800:O]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800>O]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800BO]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800eQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800Q=eQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc!HcMGemcRrLnLprOJJR:localhost:8800Q<eQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc!SyIWYOmcGiASNkPCTB:localhost:8800Q;eQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800Q:eQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800Q9eQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800Q8eQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800Q7eQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800Q6eQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800Q5eQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800Q4eQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800Q3eQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800Q2eQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800 dc &Qn 4 \ MX6 X | E8m !/a>eQ' $6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create =eQ']$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800joinm<eQ? $t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibilitye;eQ/ $Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rulesg:eQ3 $PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levelspTeQ))$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800mSeQ? $-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibilityeReQ/ $acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rulesjQeQ9 $7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_alias !j OeQ']$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaNeQ' $idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800m.room.create MeQ']$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829ban EeQ']$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800joinpDeQ))$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800mCeQ? $Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibilityeBeQ/ $GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rulesjAeQ9 $snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_aliasg@eQ3 $x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels ?eQ']$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800join7 UeQ']$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpLeQ))$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800mKeQ? $JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibilityeJeQ/ $a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rulesjIeQ9 $amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_aliasgHeQ3 $mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels GeQ']$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800joinaFeQ' $RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create Tj8tq? wE~zeM5j8p> H v D  | JB2   P   V $n U  ]< +d 1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuraso1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk71e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk)1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE3$49:localhost:42455 3$46:localhost:42455 3$45:localhost:42455 3$48:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 3$39:localhost:42455 3$38:localhost:42455 1$3:localhost:41985 1$3:localhost:44405 1$3:localhost:37265 3$37:localhost:42455 3$33:localhost:42455 1$3:localhost:42455 T1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujob1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao T1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug N1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAJ1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsE1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J061e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Au1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY }1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0U1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUV1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMA1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o*1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcA1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOws1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMZ1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEm1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgU1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMa1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kN1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I \1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsL1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A}1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkg1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIz1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI {1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M{ Nvj8 p> v D  K } K  Q  p W ? w E >}QW%]+vc1P7p1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0T1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras?1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0U1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ3$46:localhost:42455 0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUV3$44:localhost:42455 3$43:localhost:42455 1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM21e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o*3$40:localhost:42455 1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc?1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwq1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMX1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE^1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgS1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMR1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kN1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I L1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs=1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-An1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLke1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIz1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI k1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_My1$3:localhost:42455 A3$39:localhost:42455 1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujob3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao E1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug ?1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAJ1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls61e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0'1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYk1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E91e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k >1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooA Tj8tq? wE~zeM5j8p> H v D  | JB2   P   V $n U  ]< +d 1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasi1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk11e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk#1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE3$49:localhost:42455 3$46:localhost:42455 3$45:localhost:42455 3$48:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 3$39:localhost:42455 3$38:localhost:42455 1$3:localhost:41985 1$3:localhost:44405 1$3:localhost:37265 3$37:localhost:42455 3$33:localhost:42455 1$3:localhost:42455 T1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujob1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao T1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug N1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAJ1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsE1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J061e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Au1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY }1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0U1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUV1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMA1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o*1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcA1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOws1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMZ1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEm1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgU1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMa1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kN1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I \1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsL1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A}1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkg1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIz1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI {1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M{ Y`8pH X 0  h @  x P ( ` 8  p H v]D}KQW%]+c1i7o= 'Q$1570043712439X1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk 1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ"1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ 1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uou1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEx1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI\1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwp1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo91e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw[1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoz1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY+1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ}1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E;1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4d3$18:localhost:42455 J1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 I3$16:localhost:42455 H1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk'Q$1570043750466Tmiqu:localhost:8800 /'Q$1570043748464QpNXV:localhost:8800 -'Q$1570043748463euAqZ:localhost:8800 ,'Q$1570043747462YuUEF:localhost:8800 +'Q$1570043746461eQhrq:localhost:8800 *'Q$1570043745460sJOiY:localhost:8800 )'Q$1570043741458PZvre:localhost:8800 ('Q$1570043739456qeuuS:localhost:8800 &'Q$1570043738455KNDHf:localhost:8800 %'Q$1570043737454adOjg:localhost:8800 $'Q$1570043736453VtbeL:localhost:8800 #'Q$1570043736452Igyim:localhost:8800 "'Q$1570043733451EJhWh:localhost:8800 !'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 'Q$1570043648422SglHQ:localhost:8800 'Q$1570043647421dmTZW:localhost:8800 'Q$1570043646420mPrhj:localhost:8800 'Q$1570043646419zIOAX:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 'Q$1570043593416CouYv:localhost:8800 'Q$1570043592415heiAH:localhost:8800 'Q$1570043591414NuXxd:localhost:8800 'Q$1570043590413Khvee:localhost:8800 'Q$1570043589412JaDTY:localhost:8800 'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800  eQ_$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 400}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0"], "type": "m.room.history_visibility", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040624912, "hashes": {"sha256": "CNTsFXE8KaTVLkAwTr+DGy0/VmjIB/EAFufF4kdGPbM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ia+OZXQp/NVWJWIY+E1DiL9zLoRjWaMsNB2dJMSh1djGV80ruSGxY1b6NHqE915tIZR07HLmJ2n7W5w9UVg/Dg"}}, "unsigned": {"age_ts": 1570040624912}}seQ_u$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 399}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg"], "type": "m.room.join_rules", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040624372, "hashes": {"sha256": "mfDgNb2iBUmiIuKSsDKht+z7oRPF/YfJIVLqSULeuiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pcu/prLL+2sbrTM4EH8+XBQdQBKI2EPUhWgn6c04xAu1xGlYMGNICZ3D3mK5CaYVzAx/p2aPK4+l1DzAsCbPDQ"}}, "unsigned": {"age_ts": 1570040624372}} eQ_7$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 398}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0"], "type": "m.room.canonical_alias", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"alias": "#test-20191002_181700-7:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040623662, "hashes": {"sha256": "rgZS86wlturfwcAB/koHeptAfoIvjmcFXM/UkKV+4d4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xn6CgrV3WwM65cxpreWfNx8gqhvv4dP4cqbreA+WxQT8yaOZO1Hm+NJfZFML/2nVdUyVIQ7OWntpfpUQeFQ6Ag"}}, "unsigned": {"age_ts": 1570040623662}}j eQ_c$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 397}{"auth_events": ["$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "type": "m.room.power_levels", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"users": {"@anon-20191002_181700-109:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040622356, "hashes": {"sha256": "YMFdTg8XHD0oTW6ZodPCHkdLV8krIGP8GiyFr3rQtiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y/OdtzthJcBJMOIkpb8nv6wULsO5YGk8O9jZrdmHQEJP7EWTVKiaQkvmIYx+s8jy+TUteJ8duW+XmHOWf6cFDA"}}, "unsigned": {"age_ts": 1570040622356}} #i)Q Q ` i $ $Pq A^g1@ij|eQ9 $A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_aliasg{eQ3 $bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels zeQ']$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800ayeQ' $J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800m.room.create_xeQ# $Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.namegweQ3 $GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levelsgveQ3 $c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levelsgueQ3 $1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels teQ']$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800pseQ))$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800mreQ? $kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibilityeqeQ/ $i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rulesjpeQ9 $1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_aliasgoeQ3 $HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels neQ']$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800ameQ' $gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.createrleQ'/$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:testgkeQ3 $VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levelsgjeQ3 $TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levelsgieQ3 $FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels heQ']$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800pgeQ))$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800mfeQ? $-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibilityeeeQ/ $acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rulesjdeQ9 $7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_aliasgceQ3 $9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels beQ']$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aaeQ' $idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800m.room.create `eQ']$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829 _eQ']$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829p^eQ))$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800m]eQ? $JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibilitye\eQ/ $a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rulesj[eQ9 $amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_aliasgZeQ3 $mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels -RM H C > 9 4/*|%w rmhc TQe!eySSVuCclRpBDgwKIU:localhost:8800$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMTQe!eySSVuCclRpBDgwKIU:localhost:8800$xROOFTUlx-3FUlG3Q3SGjI3owccAL018_sc6Tz8HZncTQe!eySSVuCclRpBDgwKIU:localhost:8800$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xETQe!eySSVuCclRpBDgwKIU:localhost:8800$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkTQe!eySSVuCclRpBDgwKIU:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkTQe!eySSVuCclRpBDgwKIU:localhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFATQe!eySSVuCclRpBDgwKIU:localhost:8800$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isTQe!eySSVuCclRpBDgwKIU:localhost:8800$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMTQe!eySSVuCclRpBDgwKIU:localhost:8800$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkTQe!eySSVuCclRpBDgwKIU:localhost:8800$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsTQe!eySSVuCclRpBDgwKIU:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMTQe!eySSVuCclRpBDgwKIU:localhost:8800$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYT Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IT Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3ET Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$EMmhoJ_-8_UITDaPtdQB8S0pvkFJDtjBABLPoFc1vNsT Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8T Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3UoTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwTQe!oXKJArsPmtgaYANBrg:localhost:8800$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcTQe!oXKJArsPmtgaYANBrg:localhost:8800$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0T~Qe~!oXKJArsPmtgaYANBrg:localhost:8800$32Lf1b7J36pLwmiF2YQxCwxXlE2IHivq6uGZx8xfneMT}Qe}!oXKJArsPmtgaYANBrg:localhost:8800$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0T|Qe|!oXKJArsPmtgaYANBrg:localhost:8800$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQT{Qe{!oXKJArsPmtgaYANBrg:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wTzQez!oXKJArsPmtgaYANBrg:localhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwTyQey!oXKJArsPmtgaYANBrg:localhost:8800$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJETxQex!oXKJArsPmtgaYANBrg:localhost:8800$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgTwQew!oXKJArsPmtgaYANBrg:localhost:8800$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfETvQev!oXKJArsPmtgaYANBrg:localhost:8800$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4TuQeu!oXKJArsPmtgaYANBrg:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWITtQet!oXKJArsPmtgaYANBrg:localhost:8800$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYTsQes!egCvzKpbEwmuvDoBTb:localhost:8800$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzATrQer!egCvzKpbEwmuvDoBTb:localhost:8800$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4TqQeq!egCvzKpbEwmuvDoBTb:localhost:8800$w7TrPGmnzzJgLwtRl9cor8J8Yra3EcrMt7ktvtambTQTpQep!egCvzKpbEwmuvDoBTb:localhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8ToQeo!egCvzKpbEwmuvDoBTb:localhost:8800$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgTnQen!egCvzKpbEwmuvDoBTb:localhost:8800$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0TmQem!egCvzKpbEwmuvDoBTb:localhost:8800$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg (dz, B X n 6 Lbx*@Vl4I\ oWtL([Q@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800L'[Q@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800L&[Q@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800L%[Q@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800L$[Q@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800L#[Q@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800L"[Q@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800L![Q@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800L [Q@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800L[Q@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800L[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800L[Q@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800L[Q@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800L[Q@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800L[Q@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800L[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800L[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800L[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800L[Q@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800L[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800L[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800L[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800L[Q@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800L[Q@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800L[Q@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800L[Q@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-22:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800L[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800L[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800 '0x* = 6I\ o 3FY l0b P  c  r # MM]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800ML]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800MK]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800MJ]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800MI]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800MH]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800MG]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800MF]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800ME]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800MD]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800MC]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800MB]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800MA]Q@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800M@]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800M?]Q@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800M>]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800M=]Q@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800M<]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800M;]Q@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800M:]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800M9]Q@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800M8]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800M7]Q@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800M6]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800M5]Q@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800M3]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800M2]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800M1]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800MP]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800M0]Q@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800M/]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800M.]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800M-]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800L,[Q@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800L+[Q@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800L*[Q@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800L)[Q@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800MO]Q@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800M4]Q@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800  ^ heQ__$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 404}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040629838, "hashes": {"sha256": "FuMwMT7tdtS+waO26ElJrWVpNL4KqV2h5pPZkT6OSuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qOzlr87fJC6qO1KGsbYF2C0Evn4/OfJ9gjB3k4Raa1wNNoigC+7O5U7IQLefUmhaAZeQxinSZ17KNZ23g49oAA"}}, "unsigned": {"age_ts": 1570040629838}}leQ_g$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 403}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4"], "type": "m.room.member", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-111:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040627867, "hashes": {"sha256": "+zzlFkkeZY2aInR8x0OaNYmrRA5AQHFY+VBj62hY6sA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y5kFYLbBV8ll80wtQoOrkiKKPP/3UcvBjvmkns43DnCPA2Pfjrk8c8zOq8MKj6d45r3tm+/1imyrpYw2SQGfCA"}}, "unsigned": {"age_ts": 1570040627867, "replaces_state": "$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4"}}qeQ/$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 402}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-111", "membership": "join"}, "depth": 8, "hashes": {"sha256": "5b33VlesaVRxEhp1z0dmef3ofywBOwrPQI6TzUJpbJg"}, "origin": "localhost:8829", "origin_server_ts": 1570040627145, "prev_events": ["$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8"], "prev_state": [], "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-111:localhost:8829", "state_key": "@anon-20191002_181700-111:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vyPujgyJjCkzby/qu4W54MjZd6TyHUCDkoL6FHPCYfNdzysjUk8OPV0Kt9mK4DsjKyXRWl2MENqvcEspvNegBQ"}, "localhost:8829": {"ed25519:a_UxIG": "UOyQAn1EzCrUf+nyeuhrzaG1eSNJuW54ZvFJnpRCJks6gOj/nH8UUqjOd5z0JccBqlgKDBW/NXTCSlWW+dDCAQ"}}, "unsigned": {"age": 114}}eQ_K$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 401}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg"], "type": "m.room.aliases", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"aliases": ["#test-20191002_181700-7:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040626388, "hashes": {"sha256": "0nKwqI4gL2hp3Mzvrd/hIsZthxcb27IAnKDzXe6qHvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SB//B23eiXBpr96AivVttZNUMkywFnj4ea306VvlsHXXM2KPZwPpIKUfVdXM3jXRpt20p2jR2AR7qUe3yl22CQ"}}, "unsigned": {"age_ts": 1570040626388}} "{qS ^  2 7 Tq |7PUOT{gQ/ e!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rules$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMlQ9 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_alias$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs Q']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMcQ' e!eySSVuCclRpBDgwKIU:localhost:8800m.room.create$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYaQ# e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.name$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IiQ3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ea Q# e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.name$EMmhoJ_-8_UITDaPtdQB8S0pvkFJDtjBABLPoFc1vNsi Q3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8i Q3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo Q']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUr Q))e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgoQ? e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibility$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkgQ/ e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rules$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwlQ9 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_alias$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwiQ3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY Q']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYcQ' e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.create$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwtQ'/e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:test$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mciQ3 e!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0tQ'/e~!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:test$32Lf1b7J36pLwmiF2YQxCwxXlE2IHivq6uGZx8xfneMiQ3 e}!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0i~Q3 e|!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ }Q']e{!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wr|Q))ez!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwo{Q? ey!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibility$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEgzQ/ ex!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rules$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrglyQ9 ew!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_alias$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEixQ3 ev!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 wQ']eu!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIcvQ' et!oXKJArsPmtgaYANBrg:localhost:8800m.room.create$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY uQ']es!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA tQ']er!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4 sQ']eq!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$w7TrPGmnzzJgLwtRl9cor8J8Yra3EcrMt7ktvtambTQ  T LD<4, $ |t l d \eeQ$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800ԁeeQ$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800ɁeeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800eeQ$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800eeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800(eeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800eeQ$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800 eeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800ƁeeQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:88003eeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800eeQ$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800\eeQ$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800 &eeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800 ʁeeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800 ^eeQ$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA!DSFBpkqfnvBQbGoMUK:localhost:8800 6eeQ$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:88006eeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800&eeQ$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V<eL$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ysha256 ~G*_'#FUҲ4V;eL$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIsha256̒k;l GHЁkq+2V:eL$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIssha256CC"f)JEG9=ǒq'#ňV9eL$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMsha256o;:ˇ^TԄQV8eL$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLssha256 M?*K{WzS')NG(\V7eL$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwsha256GuR7d 5CU2::V6eL$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4sha2569vIfye_6`m,zd V5eL$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMsha256_+ќX-=\${W"s:ٺS>V4eL$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEsha256EHVEؖ76 FƃV3eL$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgksha256u˜ۃaȊmrnhN咩 V2eL$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lksha256eU-l^=]gxu0mҡV1eL$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAsha256~7bhv@_f875>\PV0eL$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7issha256m,J;8S V-eL$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrssha256m4w'ƺe$fSK$KmDy%*V,eL$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMsha256 x"TNƌWdpV+eL$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYsha256'mrQͼ9 Cx^TN)aŀ lV*eL$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Isha256^\MX- TvHH(V)eL$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Esha256vDBfՙ&%μQ"<[qV(eL$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8sha256sxV 9HwgHyꇮə%qV'eL$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uosha2563q`ElXyJ-JV&eL$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUsha25695n-@Ɯy8^_kV%eL$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgsha256W'<*1 V]YE2ƆyQjZhV$eL$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLksha256*t!Cx̫1۠OBrv.xV#eL$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwsha256g7Py.l%f?GK=K)k:\V"eL$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwsha2565;=ױ0[X΄K-?V!eL$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYsha256Z/9PqS8r.[V eL$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYsha256_smH-{Zu]>~G)ޕQr?&VeL$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwsha256~@RݨI˙;o[VeL$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIsha256sXR Ud&xKE5lF 7e{ybVeL$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYsha256YxxC aة?x#&VeL$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAsha256- yZK1O4K=~ǧt6`+0VeL$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4sha256g>niFReǢWJUxdz B[ c  s % x {-7GB,1e?Q ]$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7ism.room.history_visibility!eySSVuCclRpBDgwKIU:localhost:8800mmV@anon-20191002_181700-112:localhost:8800$0e/Q ]$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMm.room.join_rules!eySSVuCclRpBDgwKIU:localhost:8800mm@anon-20191002_181700-112:localhost:8800)/e9Q ]$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkm.room.canonical_alias!eySSVuCclRpBDgwKIU:localhost:8800mkm)@anon-20191002_181700-112:localhost:8800&.e3Q ]$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800m$m@anon-20191002_181700-112:localhost:8800 -e'Q ]$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMm.room.member!eySSVuCclRpBDgwKIU:localhost:8800mLm@anon-20191002_181700-112:localhost:8800, e'Q  ]$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYm.room.create!eySSVuCclRpBDgwKIU:localhost:8800mmN@anon-20191002_181700-112:localhost:8800+e#Q ] $Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Im.room.name!fJXiUpbbOlLbHWmPgs:localhost:8800 m pm >@anon-20191002_181700-113:localhost:8800&*e3Q ] $GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Em.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800 m m @anon-20191002_181700-112:localhost:8800&)e3Q ] $c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8m.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800 mmH@anon-20191002_181700-112:localhost:8800&(e3Q ] $1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uom.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800 m#m@anon-20191002_181700-112:localhost:8800 'e'Q ]$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUm.room.member!fJXiUpbbOlLbHWmPgs:localhost:8800mmW@anon-20191002_181700-113:localhost:8800!&e)Q ]$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgm.room.aliases!fJXiUpbbOlLbHWmPgs:localhost:8800mEm@anon-20191002_181700-112:localhost:8800,%e?Q ]$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkm.room.history_visibility!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800$$e/Q ]$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwm.room.join_rules!fJXiUpbbOlLbHWmPgs:localhost:8800mmj@anon-20191002_181700-112:localhost:8800)#e9Q ]$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwm.room.canonical_alias!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800&"e3Q ]$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYm.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800 !e'Q ]$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYm.room.member!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800  e'Q  ]$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwm.room.create!fJXiUpbbOlLbHWmPgs:localhost:8800mJm@anon-20191002_181700-112:localhost:8800 e'Q ] $mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcm.room.member!oXKJArsPmtgaYANBrg:localhost:8800 mIm@anon-20191002_181700-113:localhost:8800&e3Q ] $VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0m.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800 mm@anon-20191002_181700-112:localhost:8800&e3Q ] $TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0m.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800 mVm@anon-20191002_181700-112:localhost:8800&e3Q ] $FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQm.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800 mom @anon-20191002_181700-112:localhost:8800 e'Q ]$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wm.room.member!oXKJArsPmtgaYANBrg:localhost:8800mmޕ@anon-20191002_181700-113:localhost:8800!e)Q ]$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwm.room.aliases!oXKJArsPmtgaYANBrg:localhost:8800mm@anon-20191002_181700-112:localhost:8800  xZeQ_C$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 412}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "invite": 0, "ban": 50, "redact": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "events": {"m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80}, "state_default": 50, "kick": 50, "events_default": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040636015, "hashes": {"sha256": "vI01lKoP9O4rkVbW63CKJpvFybTTwrReNdg26bOcafM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r8n/ZruBsL+6ILC2tv50Hj2/lh6IsjU+sHsy3G/48F8dnpzEJ7U1AcBqSyE/6RQL1eAopW1SO/Xl4WJKhS8pBA"}}, "unsigned": {"age_ts": 1570040636015, "replaces_state": "$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4"}}UeQ_9$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 141, "stream_ordering": 411}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg"], "prev_events": ["$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw"], "type": "m.room.member", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040634864, "hashes": {"sha256": "YpI9F7oq8WvwkprT7oYs2Q3w84uq/uU+3htvdR4ApTE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9+vH/mvaRjznfw/FZO8GsJX+KfyMD7ABznoObg3J3Zsc9aQTSizdo7Z0kY5Uk4ZXbuJd5/c1x7GqdLQogGmPCg"}}, "unsigned": {"age_ts": 1570040634864}}eQ_K$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 410}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE"], "type": "m.room.aliases", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-8:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040634139, "hashes": {"sha256": "LY/up/mlQIC44+E19stPe1dycTDcnwPU5RckMD7CTCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nTa47hbrn7iHyVq4WyKpcR1+e8iQHOdMqlnWL27az5CkENO+ISsT5RxudsHBiSg+hXEtb+frkp740bxNpBSrDg"}}, "unsigned": {"age_ts": 1570040634139}}eQ_$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 409}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg"], "type": "m.room.history_visibility", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040633122, "hashes": {"sha256": "HJiQOYiya+0t7nB7pEdq467Tf0eEws9uzBJutCmflvQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IO3qZG3btXiGL1THYTajB5MqrPXXv0PK4IQneMTcFkOGdYfMO3OblaC+kt0xWqhwhO4k0zgLiMqXJU/wbkAtBg"}}, "unsigned": {"age_ts": 1570040633122}} g * T~=gg]!c@anon-20191002_181700-123:localhost:8800GANYBEJLPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8Aog ]!c@anon-20191002_181700-122:localhost:8800KKXSFRABDEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgog ]!c@anon-20191002_181700-121:localhost:8800SXEBHSUFRMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQog ]!c@anon-20191002_181700-120:localhost:8800NYHQUMFAGSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5wog ]!c@anon-20191002_181700-118:localhost:8800EGGHWNCYVGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQog ]!c@anon-20191002_181700-119:localhost:8800CPKUOIOMCLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwog]!c@anon-20191002_181700-117:localhost:8800AOWWBWACSKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwog]!c@anon-20191002_181700-116:localhost:8800NOEVNPHDUZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1gog]!c@anon-20191002_181700-115:localhost:8800XPQYONRAEBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwog]!c@anon-20191002_181700-114:localhost:8800CMIIGGQSIHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4Qog]!c@anon-20191002_181700-113:localhost:8800DEIMBREIQTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygo V`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X03T; [)2'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 {'Q$1570043656428rZaqi:localhost:8800 s'Q$1570043655427tEtWD:localhost:8800 w'Q$1570043654426seixP:localhost:8800 t'Q$1570043653425AhyPB:localhost:8800 p'Q$1570043652424mkkFn:localhost:8800 u'Q$1570043648422SglHQ:localhost:8800 j'Q$1570043647421dmTZW:localhost:8800 n'Q$1570043646420mPrhj:localhost:8800 k'Q$1570043646419zIOAX:localhost:8800 g'Q$1570043645418ABZkc:localhost:8800 l'Q$1570043593416CouYv:localhost:8800 6'Q$1570043592415heiAH:localhost:8800 5'Q$1570043591414NuXxd:localhost:8800 4'Q$1570043590413Khvee:localhost:8800 3'Q$1570043589412JaDTY:localhost:8800 2'Q$1570043585409JoQZw:localhost:8800 0'Q$1570043584408XdGfO:localhost:8800 /'Q$1570043583407USfCf:localhost:8800 .'Q$1570043583406mAAxW:localhost:8800 -'Q$1570043582405uFoRY:localhost:8800 ,'Q$1570043581404AarAd:localhost:8800 +'Q$1570043580403vYYeb:localhost:8800 *'Q$1570043579402KDYtE:localhost:8800 )'Q$1570043578401arzBQ:localhost:8800 ('Q$1570043578400zncwP:localhost:8800 ''Q$1570043572397AAGBm:localhost:8800 %'Q$1570043572396lZXIU:localhost:8800 $'Q$1570043571395bDLFD:localhost:8800 #'Q$1570043570394QELCg:localhost:8800 "'Q$1570043569393UscIm:localhost:8800 !'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800   seQ_u$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 408}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE"], "type": "m.room.join_rules", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040632564, "hashes": {"sha256": "22ZHwlgkODtzNTvpT3IPhoj7r+491O/VoiMhf+nZkPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NPnCOQ9CYn6a2k2xz+1inK8LsTBATD2gC8iwvfldeASEMnSgpKSti2fX6cxD7lJI6MhObuoOKa/oU7qkpEbwCg"}}, "unsigned": {"age_ts": 1570040632564}}eQ_7$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 407}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4"], "type": "m.room.canonical_alias", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-8:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040631863, "hashes": {"sha256": "sGcFAU8oigBG9aPFHhxH0j1UNzndKmrfHRaMwS1cEJU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ziw2BY76RjAu4z3BiytwwCiA2PkaI0BsmoAj8yMq0/P3pwhgE3ygKpBzus584NVoRK4oilf6pp7TKNa9mAKKCQ"}}, "unsigned": {"age_ts": 1570040631863}}jeQ_c$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 406}{"auth_events": ["$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040631122, "hashes": {"sha256": "PlJnha74UYB4Qefg1Wdu/V5B4ot7Pt8Uf8JWMKH6IcE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7Pd5z7ML9IT79XXSrasrOyO6fSQ+gxGALlVH+o8NQ/l2zqyahL6r0WWBRqwEmzkmkgKumY2uZDJYCy6G75cDA"}}, "unsigned": {"age_ts": 1570040631122}}ueQ_y$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 405}{"auth_events": ["$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY"], "prev_events": ["$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY"], "type": "m.room.member", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040630569, "hashes": {"sha256": "OLIZP+80fnLYljzwsJen7xwNaOM0ty8Z37czU1H5LDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mFmDdWY2I3YtOmDoV4I6A984BFhsy/oAPqxqHZ7E0q1IHZE6pMbcOno5f6iyKdIR3vWk0B4KAd1oOf8yfmZ0Dw"}}, "unsigned": {"age_ts": 1570040630569}} a} { y w u sqomkigeca~(eeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~'eeQ$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~&eeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800~%eeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~$eeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800~#eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~"eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~!eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800 -RM H C > 9 4/*|%w rmhc TFQe!edbUkYJIZBNOiTuLJs:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsTEQe!edbUkYJIZBNOiTuLJs:localhost:8800$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYTDQe!VAEDgDJVqmxXZyAlSW:localhost:8800$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_SoTCQe!VAEDgDJVqmxXZyAlSW:localhost:8800$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsTBQe!VAEDgDJVqmxXZyAlSW:localhost:8800$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQATAQe!VAEDgDJVqmxXZyAlSW:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5AT@Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgT?Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7YT>Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIT=Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsT<Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMT;Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsT:Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwT9Qe!eySSVuCclRpBDgwKIU:localhost:8800$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4T8Qe!eySSVuCclRpBDgwKIU:localhost:8800$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMT7Qe!eySSVuCclRpBDgwKIU:localhost:8800$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xET6Qe!eySSVuCclRpBDgwKIU:localhost:8800$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkT5Qe!eySSVuCclRpBDgwKIU:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkT4Qe!eySSVuCclRpBDgwKIU:localhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAT3Qe!eySSVuCclRpBDgwKIU:localhost:8800$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isT2Qe!eySSVuCclRpBDgwKIU:localhost:8800$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMT1Qe!eySSVuCclRpBDgwKIU:localhost:8800$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkT0Qe!eySSVuCclRpBDgwKIU:localhost:8800$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsT/Qe!eySSVuCclRpBDgwKIU:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMT.Qe!eySSVuCclRpBDgwKIU:localhost:8800$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYT-Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IT,Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3ET+Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8T*Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3UoT)Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUT(Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgT'Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkT&Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwT%Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwT$Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYT#Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYT"Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwT!Qe!oXKJArsPmtgaYANBrg:localhost:8800$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcT Qe!oXKJArsPmtgaYANBrg:localhost:8800$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0TQe!oXKJArsPmtgaYANBrg:localhost:8800$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0TQe!oXKJArsPmtgaYANBrg:localhost:8800$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQTQe!oXKJArsPmtgaYANBrg:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wTQe!oXKJArsPmtgaYANBrg:localhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwTQe!oXKJArsPmtgaYANBrg:localhost:8800$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJETQe!oXKJArsPmtgaYANBrg:localhost:8800$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg Cj8p? y G   M  S ! Y ' _ -e3k9q? wE}KQ1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4d1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4c1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4b1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AF1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AE1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AD1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw 1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwh1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwg1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g k1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y41e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y41e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI:1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI91e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI81e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY 1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wj1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wi1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wh1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo a1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo `1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo _0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYkj0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYki0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYkh1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsS1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsR1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsQ1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsP1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0^ SjQpX@( z H  (Z N  T " M Z ( ` .mT" sAzHNT"1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso o1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU e1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k ]1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk 1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 .1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA+1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is $1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 M1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Ad1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY 1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 3$49:localhost:42455 3$49:localhost:42455 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE3$48:localhost:42455 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi03$46:localhost:42455 3$46:localhost:42455 0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUJ3$45:localhost:42455 3$44:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o3$40:localhost:42455 1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c91e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg f1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM y1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k&1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I U1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM81e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k@1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI51e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYp1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M1$3:localhost:44405 1$3:localhost:42455 /1$3:localhost:41985 1$3:localhost:37265 3$39:localhost:42455 1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao l3$37:localhost:42455 1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug J3$33:localhost:42455 1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA 1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 *1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYH K KeQ_7$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 141, "stream_ordering": 415}{"auth_events": ["$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w"], "prev_events": ["$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0"], "type": "m.room.member", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 12, "prev_state": [], "state_key": "@random_dude:test", "origin": "localhost:8800", "origin_server_ts": 1570040638025, "hashes": {"sha256": "mgWQf34fSxh9+C+wcT2FGFWqBnCpFSd2N/7Qm9oUI8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NdQViDl+t9VA6W3xyh5bO4Q9ze+8fjgP25flH1ah81JWStn334BTj8mEKfT9acj7d69yHdwVkJIv/QS2cOjpBQ"}}, "unsigned": {"age_ts": 1570040638025}} eQ_%$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 414}{"auth_events": ["$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-113:localhost:8800": 80, "@anon-20191002_181700-112:localhost:8800": 100}, "kick": 50, "state_default": 50, "events_default": 0, "events": {"m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50, "m.room.canonical_alias": 50}, "redact": 50, "ban": 50, "invite": 0, "users_default": 0}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040637424, "hashes": {"sha256": "ZZlU22ExcNy3MzvuQb/Vlwv6yh4Fuilr+RXAKi7PTv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bVzV+QEhNBHhcIjDDvbc+NDw87o9aZxCDoxSN9gk1fvU9pLBxCE8aztVbzYouA5criBsAb1cQxunmsBjKEfPDw"}}, "unsigned": {"age_ts": 1570040637424, "replaces_state": "$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0"}} eQ_#$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 413}{"auth_events": ["$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"ban": 50, "invite": 0, "redact": 50, "users_default": 0, "events": {"m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50, "m.room.canonical_alias": 50}, "state_default": 50, "kick": 50, "events_default": 0, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 0}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040636758, "hashes": {"sha256": "ez5u2LV2PDi0fXRgmoAhykjD2i7erSQsnGAutB/d1c0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kgoogKUTtE7XsK9YbVwjUs5tWp0/PryWmovKER7Les+gJ/Qm4zO0N30ZvBH/kveYHvoaEkugqYCIIptGWrd3AQ"}}, "unsigned": {"age_ts": 1570040636758, "replaces_state": "$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ"}} ufT ]  ,  hir*A}IRumQ9 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_alias$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsjQ3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsdQ' e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.create$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs Q']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LksQ))e!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAp~Q? e!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibility$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7ish}Q/ e!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rules$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMm|Q9 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_alias$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkj{Q3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs zQ']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMdyQ' e!eySSVuCclRpBDgwKIU:localhost:8800m.room.create$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYbxQ# e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.name$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IwQ3 ee!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8vQ3 ee!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3UouQ3 ee!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY tQ']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUssQ))e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgprQ? e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibility$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkhqQ/ e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rules$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwmpQ9 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_alias$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwjoQ3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY nQ']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYdmQ' e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.create$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwulQ'/e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:test$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mckQ3 ee!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0jQ3 ee!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ ~z v r n j fb^ZVRNJF eeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800eeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800eeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800eeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800eeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800~eeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800}eeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800|eeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800{eeQ$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800zeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800yeeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800xeeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800weeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800veeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800ueeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800teeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800seeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800reeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800qeeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800peeQ$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800oeeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800neeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800 +,l8ER_liv^ k x ' 4 A N [ fk{++OQ[!aWJOsiuJONOvjKWEjO:localhost:8800@anon-20191002_181700-33:localhost:88004OQ[!BDASLhdcKfNwxCTCSg:localhost:8800@anon-20191002_181700-32:localhost:88004O Q[!xwoIOPTGmJIlTXakxC:localhost:8800@anon-20191002_181700-31:localhost:88004O Q[!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-23:localhost:88004O Q[!NZHpBquHDfJAjiawGk:localhost:8800@anon-20191002_181700-21:localhost:88004O Q[!uxKymrHZeXRYCZwekU:localhost:8800@anon-20191002_181700-20:localhost:88004O Q [!sPWVGnipjiiWQpywNO:localhost:8800@anon-20191002_181700-20:localhost:88004OQ[!GixhPUMvtKSWoKRgvw:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!zhCsYcaweVFJLLNwBz:localhost:8800@anon-20191002_181700-16:localhost:88002OQ[!loalEsWaTYwrVUNJLr:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!LaLcEGFLpjdlYlYKGC:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!odAvowLhHJcmkKlxFk:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!plcvCHNbjCkNMMxnTk:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!QZhNrNpwObZGJZpdAG:localhost:8800@anon-20191002_181700-16:localhost:88004OQ [!zNCItZNbpkZKuufRhC:localhost:8800@anon-20191002_181700-16:localhost:88004 KOQ[!aWbcZNVBalJilCEsdr:localhost:8800@anon-20191002_181700-38:localhost:88004OQ[!kxTDuIasPNpXtiRsif:localhost:8800@anon-20191002_181700-37:localhost:88004OQ[!wvnfKBSrUlfNmYoeil:localhost:8800@anon-20191002_181700-36:localhost:88004OQ[!NhWgOTYzEPRwAxRQvS:localhost:8800@anon-20191002_181700-35:localhost:88004OQ[!scyFsXcUIJiLIMwWMY:localhost:8800@anon-20191002_181700-34:localhost:88004[P,Q]!KxhGcTbEWmtgGNpdox:localhost:8800@anon-20191002_181700-102:localhost:88004P+Q]!HmkcAMkMjWRhTDJMsy:localhost:8800@anon-20191002_181700-101:localhost:88004O*Q[!OMkiVTuuOEeiFAXtUY:localhost:8800@anon-20191002_181700-99:localhost:88004O)Q[!BrssELMbasSzTFpIXm:localhost:8800@anon-20191002_181700-97:localhost:88004O(Q[!RmdhCjvouVLmyIHjaM:localhost:8800@anon-20191002_181700-95:localhost:88004O'Q[!EyEaTZElOkdURKbEXo:localhost:8800@anon-20191002_181700-93:localhost:88004O&Q[!TWETXUgfFZafDdbqLS:localhost:8800@anon-20191002_181700-91:localhost:88004O%Q[!HAFNBarGuVZuWCgwWM:localhost:8800@anon-20191002_181700-89:localhost:88004O$Q[!duCKuavMBSfRbTFPsc:localhost:8800@anon-20191002_181700-86:localhost:88004O#Q[!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-84:localhost:88004O"Q[!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-82:localhost:88004O!Q[!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:88004O Q[!OSHhtkGUjpUCkXwIhj:localhost:8800@anon-20191002_181700-79:localhost:88004OQ[!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:88004OQ[!wnriPzXkIMmdTNoJKU:localhost:8800@anon-20191002_181700-75:localhost:88004OQ[!jfshVGNDxkvqPxFxWB:localhost:8800@anon-20191002_181700-74:localhost:88004OQ[!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-70:localhost:88004OQ[!GGTWnzJfvPQBgQqDIE:localhost:8800@anon-20191002_181700-68:localhost:88004OQ[!cosGKKhHvKaVukBCic:localhost:8800@anon-20191002_181700-67:localhost:88004OQ[!rZWweGEChkxxtzyfDB:localhost:8800@anon-20191002_181700-65:localhost:88004OQ[!uJtKGXTNdEnCPNOGDx:localhost:8800@anon-20191002_181700-63:localhost:88004OQ[!vJQYmOxOBLwFKzYkNj:localhost:8800@anon-20191002_181700-62:localhost:88004OQ [!kkgEEVUJynguTqAoWD:localhost:8800@anon-20191002_181700-61:localhost:88004OQ[!dUnULFLGtgaVdwHtnz:localhost:8800@anon-20191002_181700-39:localhost:88004 +>z(\ f p  z ( 2 < FPZdnx@PP3Q]!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-112:localhost:88004P-Q]!SBEprlZiuliFNSfNmz:localhost:8800@anon-20191002_181700-104:localhost:88004pFP2Q]!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-112:localhost:88004P1Q]!egCvzKpbEwmuvDoBTb:localhost:8800@anon-20191002_181700-109:localhost:88004P0Q]!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-109:localhost:88004P/Q]!wIhMbfQzYbJobPdwyi:localhost:8800@anon-20191002_181700-107:localhost:88004P.Q]!cSUQGmpIsSCBAVTOHo:localhost:8800@anon-20191002_181700-106:localhost:88004PWQ ]!UyLoIXmzVFwycmBUeh:localhost:8800@anon-20191002_181700-169:localhost:88004PVQ]!nteAxExBGJfaGIpuCx:localhost:8800@anon-20191002_181700-168:localhost:88004PUQ]!itKDOCtoMkFUETDtle:localhost:8800@anon-20191002_181700-167:localhost:88004PTQ]!qxqNYKdtgvOQdhmgsj:localhost:8800@anon-20191002_181700-165:localhost:88004PSQ]!MlzmtUYSZOiByAZdKx:localhost:8800@anon-20191002_181700-164:localhost:88004PRQ]!WjlTCJVOFJkanCtkFE:localhost:8800@anon-20191002_181700-163:localhost:88004PQQ]!aBCvSXjtZUEPlPGHvY:localhost:8800@anon-20191002_181700-162:localhost:88004PPQ]!IMiczgkCTjejbnbeyP:localhost:8800@anon-20191002_181700-161:localhost:88004POQ]!HIZTeBCxvpMSpcqGVD:localhost:8800@anon-20191002_181700-160:localhost:88004PNQ]!awHAhLuEkavTGACcUW:localhost:8800@anon-20191002_181700-158:localhost:88004PMQ]!OqPpVlCwmKdAUlwrXI:localhost:8800@anon-20191002_181700-156:localhost:88004PLQ]!quaZwrGnzbNWhwAOYB:localhost:8800@anon-20191002_181700-154:localhost:88004PKQ]!JusxqeECtidaPlWqhp:localhost:8800@anon-20191002_181700-152:localhost:88004PJQ]!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-149:localhost:88004PIQ]!GiSxJsKZhQVHBkrVPn:localhost:8800@anon-20191002_181700-146:localhost:88004PHQ]!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-143:localhost:88004PGQ]!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-140:localhost:88004PFQ]!WWZVpyLeZfyfpWidLx:localhost:8800@anon-20191002_181700-138:localhost:88004PEQ]!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-136:localhost:88004PDQ]!lMRBkbYJDQHgdBZBFJ:localhost:8800@anon-20191002_181700-134:localhost:88004PCQ]!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-131:localhost:88004PBQ]!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-129:localhost:88004PAQ]!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-127:localhost:88004P@Q]!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-125:localhost:88004P?Q]!GwXGurbyEmykmmHcHJ:localhost:8800@anon-20191002_181700-124:localhost:88004P>Q]!VWYMJxEviBNDdJCuKT:localhost:8800@anon-20191002_181700-123:localhost:88004P=Q]!CgVBWWcRJoHEcwoLcq:localhost:8800@anon-20191002_181700-120:localhost:88004P<Q]!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-118:localhost:88004P;Q]!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-116:localhost:88004P:Q]!msMfSdLIAvklSSAnci:localhost:8800@anon-20191002_181700-115:localhost:88004P9Q]!GgUNbVXspVTpOlaHBl:localhost:8800@anon-20191002_181700-114:localhost:88004P8Q]!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-112:localhost:88004P7Q]!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-112:localhost:88004P6Q]!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-112:localhost:88004P5Q]!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-112:localhost:88004P4Q]!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-112:localhost:88004   -"eQ_7$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 419}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY"], "type": "m.room.canonical_alias", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-9:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040641164, "hashes": {"sha256": "V7h0RlPN8rL0RJkOotQKsV5o9dB0qBUmJcQKqplEFUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/gSAmWMjNKM3nkA28MkJ92sdK8O2ehdHKfuK+jy3RDCKJd0wdZD/JI6W5Q4aZvtdSUYzpNw79CelW7mOqE6aDg"}}, "unsigned": {"age_ts": 1570040641164}}j!eQ_c$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 418}{"auth_events": ["$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040640248, "hashes": {"sha256": "OBzp9kf3e9/S3UTzJUO7+UUvByGwbuEo6FVNhTN4AeQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x0IsS+wvH7fsuOuoz7AoLV8asmPfo2ySo/ITSPU+gcOMemS++6ABePQN9N42uFNhbvp1uYqd9tFhStMRBf3GDQ"}}, "unsigned": {"age_ts": 1570040640248}}u eQ_y$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 417}{"auth_events": ["$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw"], "prev_events": ["$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw"], "type": "m.room.member", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040639510, "hashes": {"sha256": "8IdccT1TZllt276DQmgfXm6WFe5LvUIdMFnTtrX0ee4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XipGGxO7qkc4xqVo2HbT61zhkNCdNT1s0wg9CGhr015ce3kes1Sa80b5NaamJVg2bF6kTlIrusKUs8ij8GUMCA"}}, "unsigned": {"age_ts": 1570040639510}}heQ__$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 416}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040638794, "hashes": {"sha256": "1ZKhynw2NgwnJxC5ETgx3b261IDzW9XLTx9GgpXOtWA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yxVan7JeNAXesMzHf4x7KfqxvXkA9gZxbTnSUb72vjghspFUQAJbYmwGTA4EeTsW2hfQM/FKC3+5AlJX89vCCQ"}}, "unsigned": {"age_ts": 1570040638794}}  d% | ] U ME=5-t  leeQ$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800 !eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800 eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800?eeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800 TeeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800 ށeeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800 *eeQ$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:88006eeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800eeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800́eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800ށeeQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800́eeQ$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800eeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800geeQ$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800ׁeeQ$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g!duCKuavMBSfRbTFPsc:localhost:8800eeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800eeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800keeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800߁eeQ$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800 ReeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800 a} { y w u sqomkigeca~GeeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~FeeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~EeeQ$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~DeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800~CeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~BeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800~AeeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~@eeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~?eeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800~>eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~=eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~<eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800~;eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~:eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~9eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~8eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800~7eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~6eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~5eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~4eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~3eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~2eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~1eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~0eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~/eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~.eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~-eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~,eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~+eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~*eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~)eeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800 2Kjk8p> R9  w E  8 } K  3 R X &X j  _ -e&^,dK2j8d21e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM 1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI |3$52:localhost:42455 3$51:localhost:42455 3$50:localhost:42455 3$50:localhost:42455 1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo r1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw@1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs@1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 /1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s -3$46:localhost:42455 3$44:localhost:42455 3$45:localhost:42455 3$44:localhost:42455 3$44:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM z1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg g1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is %1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU11e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T00e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoR1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA-1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 N1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Ae1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY 1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8}1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUK1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c:1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k'1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c  _U&eQ_9$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 141, "stream_ordering": 423}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw"], "prev_events": ["$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg"], "type": "m.room.member", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040644062, "hashes": {"sha256": "7FRAbhffu+YkfEpf2H5ktP+z+Ex0VSBerHrHZgHtmRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P8s8bNP+Vlso4xjqMbJqwkBmmmQekh91M3UoFCqdP50qZNOFiyZWC4AbDDak/cQNxUyvEgyZrUpiYiDeSsoCCw"}}, "unsigned": {"age_ts": 1570040644062}}%eQ_K$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 422}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk"], "type": "m.room.aliases", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-9:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040643397, "hashes": {"sha256": "IvlqiF1aY8k3tvd062Nr5M3gnLCWItqlipBXfm9nMBU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZG/tlcyt1mgbfg3Fbs6IJoJLyPgMZSM+zDJVU1pMlR1q6FBKS6pNXPC0rAKyF9/kmjIxItsF/h80Qz+Kp4h+Cg"}}, "unsigned": {"age_ts": 1570040643397}}$eQ_$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 421}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw"], "type": "m.room.history_visibility", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040642575, "hashes": {"sha256": "dgEdbCq90v7hn47HaZ0zchMBTFSwEYjHFL5eyqfsCo8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jOdplObfsAzPF+qPH6D/o+TtIAOoTLsFkq3BYbT/hdXzHQ58f+tw/xe9O+5REU8y2dpPfiHipYCtgPC5BYwRDg"}}, "unsigned": {"age_ts": 1570040642575}}s#eQ_u$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 420}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw"], "type": "m.room.join_rules", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040641955, "hashes": {"sha256": "fcvJg/tTrz2LxqSBEiM2DGOWE54+rIy+8PT8nj9tTzs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KSFdM4NQ4benJFuYwCbO6Cpj+UFJFqwODPcQC70kJQsicQNeiGhdKDEk5Yv4lj7uMI0AK3tiz9LvR5bvl9J7Aw"}}, "unsigned": {"age_ts": 1570040641955}} ^iN+nQ1qT,mR/ {^I2 x R  k ,  L /  i N +  o X x9nN3qTcH%t]>']m.room.member@anon-20191002_181700-114:localhost:8800' m.room.create>']sm.room.member@anon-20191002_181700-111:localhost:8829u>']rm.room.member@anon-20191002_181700-111:localhost:8829t3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:88003 m.room.power_levels''/m.room.member@random_dude:test3 m.room.power_levels''/~m.room.member@random_dude:test3 }m.room.power_levels3 |m.room.power_levels~>']{m.room.member@anon-20191002_181700-113:localhost:8800}%))zm.room.aliaseslocalhost:8800|"? ym.room.history_visibility{/ xm.room.join_rulesz9 wm.room.canonical_aliasy3 vm.room.power_levelsx>']um.room.member@anon-20191002_181700-112:localhost:8800w' tm.room.createv>']qm.room.member@anon-20191002_181700-111:localhost:8829s%))pm.room.aliaseslocalhost:8800r"? om.room.history_visibilityq/ nm.room.join_rulesp9 mm.room.canonical_aliaso3 lm.room.power_levelsn>']km.room.member@anon-20191002_181700-109:localhost:8800m' m.room.create3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create% m.room.topic3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create# m.room.name3 m.room.power_levels# m.room.name3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create tc pW>%E-=%u]X}U1 iA z$L) R *  b :  s L %   ` 8  q I !Y1 iAyQd<t3!13:localhost:424553!13:localhost:424553!13:localhost:424551!5:localhost:424551!5:localhost:424551!9:localhost:424551!9:localhost:42455'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 1!0:localhost:419851!0:localhost:444051!0:localhost:372651!8:localhost:424551!7:localhost:42455'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:88001!6:localhost:424551!6:localhost:42455'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:88003!12:localhost:424553!12:localhost:424553!11:localhost:424553!11:localhost:424553!11:localhost:424553!10:localhost:424553!10:localhost:42455'Q!ABHbfUdkHCJksMsaUt:localhost:8800.'Q!DntdfAPfCfgdOoRMdl:localhost:8800-'Q!BKZJsoFNhiLTDYNclB:localhost:8800A'Q!BKZJsoFNhiLTDYNclB:localhost:8800B'Q!ELBgBaMSIMNkjFSumH:localhost:8800q'Q!CKNftKKCaOCVUyYWNY:localhost:8800p'Q!CAGaRyRvrohDRBsrWH:localhost:8800f'Q!BPNyKqmwcpGxIbGFZG:localhost:8800O'Q!BPNyKqmwcpGxIbGFZG:localhost:8800N'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800S'Q!EhFUhsgQbBWmrnGmaz:localhost:8800j'Q!EhFUhsgQbBWmrnGmaz:localhost:8800i'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800y'Q!EWkoFeckhXlNyjuIEB:localhost:8800x'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:88004'Q!DqxFmsXPclgGqpSwdy:localhost:88003'Q!DoiZErAdypBUMZKaeJ:localhost:8800 'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800E'Q!DelfBAGvCrTXgNxmNV:localhost:8800D'Q!DelfBAGvCrTXgNxmNV:localhost:8800C'Q!CkNvQnbApPIcuKygDk:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800u'Q!CSqENqzAezaZnGktbE:localhost:8800]'Q!CSqENqzAezaZnGktbE:localhost:8800\'Q!CSqENqzAezaZnGktbE:localhost:8800[&Q!CQKLQUpSYakhxVDltC:localhost:8800y&Q!CQKLQUpSYakhxVDltC:localhost:8800x'Q!CNFopUEQTFbzjmLvii:localhost:8800]'Q!CGckPHdSYcIocFvRAq:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800H&Q!BrssELMbasSzTFpIXm:localhost:8800G&Q!BrssELMbasSzTFpIXm:localhost:8800F&Q!BrssELMbasSzTFpIXm:localhost:8800E'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800X'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800b'Q!AoAvmnwMkhYBQsbCsL:localhost:8800a'Q!AoAvmnwMkhYBQsbCsL:localhost:8800`'Q!AjjrNwXmPTCruHxaJq:localhost:8800'Q!AjjrNwXmPTCruHxaJq:localhost:8800'Q!AjjrNwXmPTCruHxaJq:localhost:8800'Q!AYFqrmxwClFQlcTTYq:localhost:8800&Q!AWfbViAZparIjmDaVT:localhost:8800-'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:88001!0:localhost:424551!0:localhost:42455 U7wPkC`8&_{S,d=`8pH Z 3 n F  X 0   h @  x P ( H kCX1 &Q!HAFNBarGuVZuWCgwWM:localhost:88007&Q!EyEaTZElOkdURKbEXo:localhost:8800;'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800''Q!GBPGYLDkXcAsHgkfuS:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800C&Q!EyEaTZElOkdURKbEXo:localhost:8800=&Q!EyEaTZElOkdURKbEXo:localhost:8800<'Q!IYxUkyFHOgvhLpdkOA:localhost:8800='Q!FbJSiQoZtZkaFwzzQq:localhost:8800&Q!GwXGurbyEmykmmHcHJ:localhost:8800w'Q!GwLdUoDplyVUogXDzu:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800 'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800&Q!GgUNbVXspVTpOlaHBl:localhost:8800o'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:88001'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800a'Q!IYxUkyFHOgvhLpdkOA:localhost:8800<'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800_'Q!IlGJpjzrvvAFuwTAgo:localhost:8800^'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800 'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:88001&Q!IGVHKYcSuxzVPlFHlj:localhost:88000'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800P&Q!HmkcAMkMjWRhTDJMsy:localhost:8800O&Q!HmkcAMkMjWRhTDJMsy:localhost:8800N&Q!HmkcAMkMjWRhTDJMsy:localhost:8800M'Q!HhYREfUiJTpjWmOuPF:localhost:8800k'Q!HhYREfUiJTpjWmOuPF:localhost:8800j&Q!HcMGemcRrLnLprOJJR:localhost:8800t&Q!HcMGemcRrLnLprOJJR:localhost:8800s'Q!HbYxdEuVIeLKHwqJEh:localhost:8800!'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800z'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800  " )eQ_%$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 426}{"auth_events": ["$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"ban": 50, "invite": 0, "redact": 50, "users_default": 0, "events": {"m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50, "m.room.canonical_alias": 50}, "kick": 50, "state_default": 50, "events_default": 0, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 80}}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040646314, "hashes": {"sha256": "OPbhq99DqmPt4/NK4KL3jFkL3U2AoivRQ3Q51TIeh5A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ro55XJV/pgFu4vjPm44+xqBb4PZPEaBeifuI0B8wRpKJWIGzqmtqZy7ECWJlDel8zdy0cv1t6Js5iqHa6HXAAg"}}, "unsigned": {"age_ts": 1570040646314, "replaces_state": "$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8"}} (eQ_#$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 425}{"auth_events": ["$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"redact": 50, "invite": 0, "ban": 50, "users_default": 0, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 0}, "state_default": 50, "kick": 50, "events_default": 0, "events": {"m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50, "m.room.canonical_alias": 50}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040645577, "hashes": {"sha256": "DAiOzbmvD44AnGij5RnVbXdKc2VZzJeDxBK5n+yMrok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oA9XdOg32YHbE6FOBEsMrmuc+wTEX+vP0pkvOYXKSGprZoSo5argT51MP9C2V2JfrfMh6Dcv7olcQ9HgY6GWDQ"}}, "unsigned": {"age_ts": 1570040645577, "replaces_state": "$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo"}}Z'eQ_C$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 424}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "ban": 50, "invite": 0, "redact": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040644899, "hashes": {"sha256": "oKuAP+9uFy+B5554CIyF3U2jpd+/twIEyZCtKbLpmTg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AZ+CZyB38l0agDy5UbUSfzhPpsbnDPlqZPEDnU8leYCfkNT+l5MOxWpc30qNckvhMS4nEzR6ENBzch3RDTTMBg"}}, "unsigned": {"age_ts": 1570040644899, "replaces_state": "$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY"}}  %j-eQ_c$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 430}{"auth_events": ["$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040648740, "hashes": {"sha256": "0Eb5AyVTSzNArlGjQFl1C4ZfW0PFtb1P1J7NsN8AEzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cRuC9D2PTDaf6h5YoYSaUXcWtk4m8qHf/YNzaJcN7nKGWTF92Od9+oDUh6kYhfxngIaxKQJge3aWinG1CQvCDA"}}, "unsigned": {"age_ts": 1570040648740}}u,eQ_y$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 429}{"auth_events": ["$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY"], "prev_events": ["$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY"], "type": "m.room.member", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040648268, "hashes": {"sha256": "PVb1ix0rzSIkbuurhbhVFJmnJh++2QQ3BTcopuxHouA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7cyElsqey06ZYV3WY2rSCbMNW1onM4zbqXpCD/4Y8AB8m+JQmuIqtbEQREAmeHeobBKe8LNoOlM64XuZ8BxDg"}}, "unsigned": {"age_ts": 1570040648268}}h+eQ__$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 428}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040647653, "hashes": {"sha256": "tGOwbwh3CJM/4fEaQ/D8jc+r2Rd2SGZXcgEZyUl/lTc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Onvnln7gfWAvoHaeuqqaq5n3pTARdOCJw9yxvK0MUTrqQUepeqsqTnOVmDu/zGHa/dODJ2jIP1BlKBKYGyyqDA"}}, "unsigned": {"age_ts": 1570040647653}}r*eQ_s$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 141, "stream_ordering": 427}{"auth_events": ["$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU"], "prev_events": ["$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E"], "type": "m.room.name", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"name": "A new room name"}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040646768, "hashes": {"sha256": "guotQx7PJPtCERuhqDFfpW0tBgURAhRvxHmRZIBzqUk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yR9EyB/mXhk1cY2ceUjJphEVnRd/GcRMwTzBj9oBv8nJsuPCjYWFvygFUvJwrsjWcvfk5bYfrz6yppFKw84jBQ"}}, "unsigned": {"age_ts": 1570040646768}} N J y 9o* &kv7T, C  N ( reQ']$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpqeQ))$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800mpeQ? $C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibilityeoeQ/ $CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rulesjneQ9 $Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_aliasgVeQ3 $VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels leQ']$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinakeQ' $nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.creategjeQ3 $la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsabeQ' $J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800m.room.create_aeQ# $Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.nameg`eQ3 $GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels _eQ']$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinp^eQ))$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800m]eQ? $kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibilitye\eQ/ $i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rulesj[eQ9 $1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_aliask YeQ']$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaXeQ' $gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.createuWeQ'/$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:testban ieQ']$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpheQ))$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800mgeQ? $yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibilityefeQ/ $qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rulesjeeQ9 $A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_alias ceQ']$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800join  gh1eQ_M$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 434}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is"], "type": "m.room.aliases", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-10:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040651598, "hashes": {"sha256": "/4K/buzBH1rPhkYvHi8gJJz+Nssg2XCtibHm13p4LrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OsW4PfgC/GWBAQ4gncz3DavBb7maprYBoaLGJXBYe0HAuGnOvsXF7AyBSopNfP7Ldt83r1ye2wGt0M02+KPdAg"}}, "unsigned": {"age_ts": 1570040651598}}0eQ_$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 433}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM"], "type": "m.room.history_visibility", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040650707, "hashes": {"sha256": "dbSMYrRBzT15jRV866QlftVZAzZ8AGN7kemP3eOYISA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FxNOeOuIpbipXodGv/wiVTzcSyMJG810qk4vmqkvNO7C5+7gfrQtX1rOwn60A3eayI1mNb7spXwymagP4FyJCw"}}, "unsigned": {"age_ts": 1570040650707}}s/eQ_u$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 432}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk"], "type": "m.room.join_rules", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040649981, "hashes": {"sha256": "mUKImE7PJzavUPu3D0FQf1L6dMcyhnGLRTcvBli+WzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nn0f0e3X20QhkVDOkY7cNbgy+P65deTHUX03xIt2hVCecfIminDiRnSuMgwlQcjibxXwnSJ0MWUbskkKd7bqDw"}}, "unsigned": {"age_ts": 1570040649981}}.eQ_9$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 431}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs"], "type": "m.room.canonical_alias", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-10:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040649323, "hashes": {"sha256": "i3CrbNeDVxtop9RQvsPvqFQNQH/Ti2vUteDXIUpCOSk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JMkWGRvYsMXP3JLYL3hIzpBgb2ingGewM9Rtrj25qwt+KsOFFWQwEklAf0+3qx3xaOzHPDObuZMxAu2m2BfmBw"}}, "unsigned": {"age_ts": 1570040649323}} a} { y w u sqomkigeca~feeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~eeeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~deeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~ceeQ$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~beeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800~aeeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~`eeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800~_eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~^eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~]eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800~\eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~[eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~ZeeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800~YeeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~XeeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~WeeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~VeeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800~UeeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~TeeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~SeeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~ReeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~QeeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~PeeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~OeeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~NeeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~MeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~LeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~KeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~JeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~IeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~HeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800 #(( T  % P mv ENy  5DmmeQ? $LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibilityeeQ/ $izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rulesjeQ9 $pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_aliasgeQ3 $7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels eQ']$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aeQ' $6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800m.room.creategeQ3 $aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levelsgeQ3 $gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels eQ']$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800peQ))$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800meQ? $obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibilityeeQ/ $ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rulesjeQ9 $Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_aliasgeQ3 $xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels eQ']$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aeQ' $4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create`eQ% $Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topicgeQ3 $7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levelsg eQ3 $lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels eQ']$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800p eQ))$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800m eQ? $C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibilitye eQ/ $CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rulesjeQ9 $Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_aliasgeQ3 $8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels eQ']$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aeQ' $nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.creategeQ3 $la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsgeQ3 $XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsgeQ3 $H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsgeQ3 $dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels eQ']$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800peQ))$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800m~eQ? $yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibilitye}eQ/ $qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rules #S F n  y 4 MR G`e',Sg7Q/ e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rules$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYl6Q9 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_alias$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQi5Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto 4Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wc3Q' e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.create$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Ai2Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$suKbRPkLfO8HmfrJbs6D0wxzXYOlzmx55FEI1j6VLjoi1Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRki0Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q /Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEr.Q))e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4o-Q? e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibility$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wg,Q/ e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rules$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_ol+Q9 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_alias$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQi*Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28 )Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksc(Q' e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYb'Q% e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topic$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Soi&Q3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsi%Q3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA $Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Ar#Q))e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgo"Q? e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibility$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yg!Q/ e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rules$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIl Q9 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_alias$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsiQ3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLscQ' e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.create$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4iQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$xROOFTUlx-3FUlG3Q3SGjI3owccAL018_sc6Tz8HZnciQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk Q']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkrQ))e!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAoQ? e!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibility$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is }wqke_YSMGA;5/)# {uoic]WQKE?93-'!   y s m g a [ U O I C = 7 1 + %     ~ v n f ^ V N F > 6 . &     ~ v n f ^ V N F > 6 . &     ~ v n f ^ V N F > 6 . &     ~ v n f ^ V N F > 6 . &    ~vnf^VNF>6.&~vnf^VNF>6.&~vnf^VNF>6.&~vnf^VNF>6.&~vnf^VNF>6.&~vn}|~{}z|y{xzwyvxuwtvsustrsqrpqopnomnlmklkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!          e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    }|~{}z|y{xzwyvxuwtvsurtqsproqnpmolnkmjlikhjgifhegdfcebdac`b_a^`]_\^[]Z\Y[XZWYVXUWTVSURTQSPROQNPMOLNKMJLIKHJGIFHEGDFCEBDAC@B?A>@=?<>;=:<9;8:7968574635241302/1.0-/,.+-*,)+(*')&(%'$&#%"$!# "!           ~ @[ c  m  ru'}8=@!Ie)Q ]$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4m.room.aliases!edbUkYJIZBNOiTuLJs:localhost:8800m]{m^&@anon-20191002_181700-112:localhost:8800,He?Q ]$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wm.room.history_visibility!edbUkYJIZBNOiTuLJs:localhost:8800mZ+m[@anon-20191002_181700-112:localhost:8800$Ge/Q ]$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_om.room.join_rules!edbUkYJIZBNOiTuLJs:localhost:8800mX mX@anon-20191002_181700-112:localhost:8800)Fe9Q ]$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQm.room.canonical_alias!edbUkYJIZBNOiTuLJs:localhost:8800mUmVr@anon-20191002_181700-112:localhost:8800&Ee3Q ]$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28m.room.power_levels!edbUkYJIZBNOiTuLJs:localhost:8800mRmT]@anon-20191002_181700-112:localhost:8800 De'Q ]$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksm.room.member!edbUkYJIZBNOiTuLJs:localhost:8800mPmQG@anon-20191002_181700-112:localhost:8800C e'Q  ]$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYm.room.create!edbUkYJIZBNOiTuLJs:localhost:8800mNNmN@anon-20191002_181700-112:localhost:8800Be%Q ] $Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Som.room.topic!VAEDgDJVqmxXZyAlSW:localhost:8800 mJYmKT@anon-20191002_181700-113:localhost:8800&Ae3Q ] $7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsm.room.power_levels!VAEDgDJVqmxXZyAlSW:localhost:8800 mGmH^@anon-20191002_181700-112:localhost:8800&@e3Q ] $lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAm.room.power_levels!VAEDgDJVqmxXZyAlSW:localhost:8800 mEmF)@anon-20191002_181700-112:localhost:8800 ?e'Q ]$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Am.room.member!VAEDgDJVqmxXZyAlSW:localhost:8800mBmCR@anon-20191002_181700-113:localhost:8800!>e)Q ]$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgm.room.aliases!VAEDgDJVqmxXZyAlSW:localhost:8800m@8m@@anon-20191002_181700-112:localhost:8800,=e?Q ]$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ym.room.history_visibility!VAEDgDJVqmxXZyAlSW:localhost:8800m<m>@anon-20191002_181700-112:localhost:8800$<e/Q ]$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIm.room.join_rules!VAEDgDJVqmxXZyAlSW:localhost:8800m:tm;7@anon-20191002_181700-112:localhost:8800);e9Q ]$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsm.room.canonical_alias!VAEDgDJVqmxXZyAlSW:localhost:8800m7m8@anon-20191002_181700-112:localhost:8800&:e3Q ]$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMm.room.power_levels!VAEDgDJVqmxXZyAlSW:localhost:8800m5m6@anon-20191002_181700-112:localhost:8800 9e'Q ]$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsm.room.member!VAEDgDJVqmxXZyAlSW:localhost:8800m2m2@anon-20191002_181700-112:localhost:88008 e'Q  ]$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwm.room.create!VAEDgDJVqmxXZyAlSW:localhost:8800m/}m/@anon-20191002_181700-112:localhost:8800&7e3Q ] $la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4m.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m, m,@anon-20191002_181700-113:localhost:8800&6e3Q ] $XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m*:m*@anon-20191002_181700-112:localhost:8800&5e3Q ] $H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m'm'@anon-20191002_181700-112:localhost:8800&4e3Q ] $dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m%Wm%@anon-20191002_181700-112:localhost:8800 3e'Q ]$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lkm.room.member!eySSVuCclRpBDgwKIU:localhost:8800m"m"@anon-20191002_181700-113:localhost:8800!2e)Q ]$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAm.room.aliases!eySSVuCclRpBDgwKIU:localhost:8800mNm @anon-20191002_181700-112:localhost:8800 ; 'I; 4eQ_#$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 437}{"auth_events": ["$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 0}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80}, "redact": 50, "invite": 0, "ban": 50, "users_default": 0}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040653718, "hashes": {"sha256": "qtp/bUBGRCX2VGT8q+/4y6dy6mgeKHfyPqRgdJXAP3M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m0hBFfgQ0f0d3ovoKXf9h3eTNdbK+FZ7HRxbQydC5moHRpKHmn7VtZd61pBJG8mTzMB0bKyvWyQ2rAg0c95YCQ"}}, "unsigned": {"age_ts": 1570040653718, "replaces_state": "$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk"}}Z3eQ_C$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 436}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040653143, "hashes": {"sha256": "7M5GBtAxIT3RgSKLCeNMag5X0ooubPkraEMEmRC9JqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L5duNPpRhaP9HGZHPfnhTGNljg30YfXL4geYpGgveTgxXSl5IliZWT4xB8cd51glkXPfQVwGhOFgPNW3y6R4Bg"}}, "unsigned": {"age_ts": 1570040653143, "replaces_state": "$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs"}}U2eQ_9$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 141, "stream_ordering": 435}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM"], "prev_events": ["$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA"], "type": "m.room.member", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040652415, "hashes": {"sha256": "EUSv9xBpHp77rVreM7DvHGXnlW3R1av3Vkl5ZOB/uuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aV3AKyLiuAbVzgJnXxsLyLmt/wM6ckfhRNCVUrsmnVqXnOhkskOWFfydjVp/aIJwRStrFw9Qr5xD+X1je9cZDw"}}, "unsigned": {"age_ts": 1570040652415}} (gWgx(8H^ k x ' 4 A N [ her#O]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800tO]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800sO]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800rO]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800qP]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800O]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800O]Q@anon-20191002_181700-130:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800~O]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800}O]Q@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800{O]Q@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800|O]Q@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800zO]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800yO]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800xO]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800wO]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800vO]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800uP]Q@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800P]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800P]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800P]Q@anon-20191002_181700-142:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800P]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800P]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800P]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800P]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800P]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800P]Q@anon-20191002_181700-135:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800P]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800P]Q@anon-20191002_181700-133:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800P]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800  ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  z t n h b \ V P J D > 8 2 , &      y q i a Y Q I A 9 1 ) !    y q i a Y Q I A 9 1 ) !    y q i a Y Q I A 9 1 ) !    y q i a Y Q I A 9 1 ) !   yqiaYQIA91)! yqiaYQIA91)! yqiaYQIA91)! yqiaYQIA91)! yqiaYQIA91)! yq`_]~\}[|Z{YzXyVxUwTvSuRtQsPrOqNpMoLnKmJlIkHjGiFhEgDfCeBdAc@b?a>`=_<^;]:\9[8Z6Y5X4W3V2U1T0S/R.Q-P,O+N*M)L(K'J&I%H#G"F EDCBA@?>=<;:98765 4 3 2 1 0/.-,+*)('&%$#"!      ~}|{yxwvut~s}r|q{pzoynxmwlvluktjsirhqgpgofnemdlckbjbiah`g_f^e]d]c\b[aZ`Y_X^X]W\V[UZTYSXRWQVPUOTNSMRLQKPJOINHMGLFKEJDICHBGAF@E?D>C=B8=7<6;5:4938271605/4/3.2-1,0+/*.*-),(+'*&)%(%'$&#%"$!# " !       e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xphX`PH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    TSR~Q}P|O{LzKyJxIwHvGuFtEsDrCqBp@o?n>m=l<k;j:i9h8g7f6e4d2c1b0a/`._-^,]+\*[)Z'Y&X%W$V#U"T!S RQPONMLKJIHGFEDCBA@ ? > = < ;:9876543210/.-,+*)('&%$#"!      ~}|{zyvutsrqpomlkjihgfdcba`_^]\[ZYXVU}|{zyxwvutsrponmlkjihgfedcb  h7eQ__$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 440}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040655741, "hashes": {"sha256": "v7z6XN3Gon90kICwlMsdbbdL1MsN0oDt3PHzASNgErk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U4UsZSDN8HBh0LXic1jEdDg8gLvIvSPLMEvAhdv+3R/z8efHFMn5B3HZOcXsvFfUhbAf5PbjWg5mbKxY80xXAQ"}}, "unsigned": {"age_ts": 1570040655741}})6eQ_a$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 141, "stream_ordering": 439}{"auth_events": ["$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk"], "prev_events": ["$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50}, "users": {"@anon-20191002_181700-113:localhost:8800": 80, "@anon-20191002_181700-112:localhost:8800": 100, "@some-random-user:here": 50}, "redact": 50, "invite": 0, "ban": 50, "users_default": 0}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040654859, "hashes": {"sha256": "lK4gTkXOU/Px0yAsyxSh+dlxmD4ULQy4Z6cHHFHMFI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLzq16gi2kiFOl/s9Z9/SN8MAuAk6Tg1S4NuJBHbYgMa6nBTwHQsSEVw6joWSA7eUgJ+W19IkugLFU+UDmOqBQ"}}, "unsigned": {"age_ts": 1570040654859, "replaces_state": "$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM"}} 5eQ_%$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 438}{"auth_events": ["$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "invite": 0, "ban": 50, "redact": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 80}}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040654394, "hashes": {"sha256": "dg9vK6sX+cOkE5gc6Q3iumWkBhYZ69L04Pxkkdx1DQQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sVyrNl7jV+8gwK2aUQQv1+d3L2M9JUFqeL0NDGkWy70jGK5FJjnEi2vtuLlMCTKawK4+pt7aVpN1KrJMM7A9Aw"}}, "unsigned": {"age_ts": 1570040654394, "replaces_state": "$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE"}} -RM H C > 9 4/*|%w rmhc TFQe!eKrOqiOabJcMgIJjwC:localhost:8800$p3RSvJIioUnzTwblOB7REnaofAZlyDRqAbdOrVDoJOITEQe!eKrOqiOabJcMgIJjwC:localhost:8800$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUTDQe!eKrOqiOabJcMgIJjwC:localhost:8800$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQTCQe!eKrOqiOabJcMgIJjwC:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8TBQe!eKrOqiOabJcMgIJjwC:localhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwITAQe!eKrOqiOabJcMgIJjwC:localhost:8800$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduoT@Qe!eKrOqiOabJcMgIJjwC:localhost:8800$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggT?Qe!eKrOqiOabJcMgIJjwC:localhost:8800$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sT>Qe!eKrOqiOabJcMgIJjwC:localhost:8800$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTET=Qe!eKrOqiOabJcMgIJjwC:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-AT<Qe!eKrOqiOabJcMgIJjwC:localhost:8800$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4T;Qe!vVmSdclwPIqYDbnmPn:localhost:8800$oz9r46kXP9Bvvaw9ic4EMGz4-VdNDgAs-aEjevRH60QT:Qe!vVmSdclwPIqYDbnmPn:localhost:8800$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9TsT9Qe!vVmSdclwPIqYDbnmPn:localhost:8800$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8T8Qe!vVmSdclwPIqYDbnmPn:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYT7Qe!vVmSdclwPIqYDbnmPn:localhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUT6Qe!vVmSdclwPIqYDbnmPn:localhost:8800$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgT5Qe!vVmSdclwPIqYDbnmPn:localhost:8800$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYT4Qe!vVmSdclwPIqYDbnmPn:localhost:8800$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQT3Qe!vVmSdclwPIqYDbnmPn:localhost:8800$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtoT2Qe!vVmSdclwPIqYDbnmPn:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wT1Qe!vVmSdclwPIqYDbnmPn:localhost:8800$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9AT0Qe!edbUkYJIZBNOiTuLJs:localhost:8800$suKbRPkLfO8HmfrJbs6D0wxzXYOlzmx55FEI1j6VLjoT/Qe!edbUkYJIZBNOiTuLJs:localhost:8800$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRkT.Qe!edbUkYJIZBNOiTuLJs:localhost:8800$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3QT-Qe!edbUkYJIZBNOiTuLJs:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoET,Qe!edbUkYJIZBNOiTuLJs:localhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4T+Qe!edbUkYJIZBNOiTuLJs:localhost:8800$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wT*Qe!edbUkYJIZBNOiTuLJs:localhost:8800$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_oT)Qe!edbUkYJIZBNOiTuLJs:localhost:8800$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQT(Qe!edbUkYJIZBNOiTuLJs:localhost:8800$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28T'Qe!edbUkYJIZBNOiTuLJs:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsT&Qe!edbUkYJIZBNOiTuLJs:localhost:8800$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYT%Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_SoT$Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsT#Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAT"Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5AT!Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgT Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7YTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzITQe!VAEDgDJVqmxXZyAlSW:localhost:8800$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwTQe!eySSVuCclRpBDgwKIU:localhost:8800$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4   s;eQ_u$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 444}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs"], "type": "m.room.join_rules", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040658548, "hashes": {"sha256": "jidNmbkbSqBsl7oqvOEGAv14+9/QA5/QCoKAg+KIqvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qupbc+22tTl7c7SVXPDOpW7d3RDO2Sl6HXzhCO09Z6w8wJTZH45A5fjfXTvaD10rbqbIZVbyNGZ/mkVtNibXAg"}}, "unsigned": {"age_ts": 1570040658548}}:eQ_9$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 443}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM"], "type": "m.room.canonical_alias", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-11:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040657915, "hashes": {"sha256": "vz7u7jBs06VJhYlAvUCbAxxtzWMNNaonqVZ9Zn2UoqA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MThoLgeEyby0fiUYEHObyfr+Apg6De8EIxtUULcqkgWeJc5JexuTlul5NcbrqbdvMHdkvTCZ+WsJkkxG1kvQCg"}}, "unsigned": {"age_ts": 1570040657915}}j9eQ_c$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 442}{"auth_events": ["$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "type": "m.room.power_levels", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040657282, "hashes": {"sha256": "h9E5T/2r5xYnRWGQutZG9KaaTYkCQNU4Fp+9Pfs+0gQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9Fw/s4flE4qoBSqgYHAWJLYAl/2yNsdfJdNENuJbMU18Kgf4EjC8IlGaPAke5yTJ9QzNURHJI7Vh+6MrCsdbDA"}}, "unsigned": {"age_ts": 1570040657282}}u8eQ_y$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 441}{"auth_events": ["$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw"], "prev_events": ["$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw"], "type": "m.room.member", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040656404, "hashes": {"sha256": "N71tvulkh9Ori94WYGz+OB6MKqGrlY0vCSfnP6OO9b4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vHd/lCIvoxXVHM64Japd6Rt48/0iSnyCHBJXlTWml5EIHe+tjqXP4ksmqACwPrx//1yvnMiPDdovQy1qbWdBDA"}}, "unsigned": {"age_ts": 1570040656404}} :t " \ D~,fNCz e]]Q=$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o@anon-20191002_181700-127:localhost:8800@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800joinanon-20191002_181700-127Cy e]]Q=$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg@anon-20191002_181700-126:localhost:8800@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800joinanon-20191002_181700-126Cx e]]Q=$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis@anon-20191002_181700-125:localhost:8800@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800joinanon-20191002_181700-125Cw e]]Q=$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs@anon-20191002_181700-124:localhost:8800@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800joinanon-20191002_181700-124Cv e]]Q=$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs@anon-20191002_181700-123:localhost:8800@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800joinanon-20191002_181700-123Cu e]]Q=$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g@anon-20191002_181700-120:localhost:8800@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800joinanon-20191002_181700-120Ct e]]Q=$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY@anon-20191002_181700-119:localhost:8800@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800joinanon-20191002_181700-119Cs e]]Q=$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8@anon-20191002_181700-118:localhost:8800@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800joinanon-20191002_181700-118Cr e]]Q=$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE@anon-20191002_181700-117:localhost:8800@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800joinanon-20191002_181700-117Cq e]]Q=$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY@anon-20191002_181700-116:localhost:8800@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800joinanon-20191002_181700-116Cp e]]Q=$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ@anon-20191002_181700-115:localhost:8800@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800joinanon-20191002_181700-115Co e]]Q=$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E@anon-20191002_181700-114:localhost:8800@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800joinanon-20191002_181700-114Cn e]]Q=$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800joinanon-20191002_181700-113Cm e]]Q=$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800joinanon-20191002_181700-112Cl e]]Q=$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800joinanon-20191002_181700-113Ck e]]Q=$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800joinanon-20191002_181700-112Cj e]]Q=$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800joinanon-20191002_181700-113Ci e]]Q=$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800joinanon-20191002_181700-112Ch e]]Q=$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800joinanon-20191002_181700-113Cg e]]Q=$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800joinanon-20191002_181700-112 o`d=GW/vN& ^ 6  n F  ^6nF ~ V .  f >  v N &~V.f>vN&^6'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800 ('Q!LazKtcHZriKzCvvGwV:localhost:8800 ''Q!LazKtcHZriKzCvvGwV:localhost:8800 &'Q!LazKtcHZriKzCvvGwV:localhost:8800 %'Q!LazKtcHZriKzCvvGwV:localhost:8800 $'Q!LazKtcHZriKzCvvGwV:localhost:8800 #'Q!LazKtcHZriKzCvvGwV:localhost:8800 "'Q!LazKtcHZriKzCvvGwV:localhost:8800 !'Q!LazKtcHZriKzCvvGwV:localhost:8800 ''Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800e'Q!NQgavrmiCPUVaVjssy:localhost:8800d'Q!NQgavrmiCPUVaVjssy:localhost:8800c'Q!NQgavrmiCPUVaVjssy:localhost:8800b'Q!NQgavrmiCPUVaVjssy:localhost:8800a'Q!NQgavrmiCPUVaVjssy:localhost:8800`'Q!NPdjmIfsBVIIkvWBzD:localhost:8800k'Q!NPdjmIfsBVIIkvWBzD:localhost:8800i'Q!NPdjmIfsBVIIkvWBzD:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800e'Q!NPdjmIfsBVIIkvWBzD:localhost:8800c'Q!NPdjmIfsBVIIkvWBzD:localhost:8800a'Q!NPdjmIfsBVIIkvWBzD:localhost:8800`'Q!NPdjmIfsBVIIkvWBzD:localhost:8800^'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800R'Q!NFWKQvZkIwvecnREOC:localhost:8800Q'Q!NFWKQvZkIwvecnREOC:localhost:8800P'Q!NFWKQvZkIwvecnREOC:localhost:8800O'Q!MXhwoqNXvexeDDSOZT:localhost:8800 &'Q!MXhwoqNXvexeDDSOZT:localhost:8800 $'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!NFWKQvZkIwvecnREOC:localhost:8800N'Q!NFWKQvZkIwvecnREOC:localhost:8800M'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800s'Q!LvARVIpJZeRQxbKefX:localhost:8800r'Q!LvARVIpJZeRQxbKefX:localhost:8800q'Q!LvARVIpJZeRQxbKefX:localhost:8800p'Q!LvARVIpJZeRQxbKefX:localhost:8800o'Q!LvARVIpJZeRQxbKefX:localhost:8800n&Q!LaLcEGFLpjdlYlYKGC:localhost:8800"&Q!LaLcEGFLpjdlYlYKGC:localhost:8800!&Q!LaLcEGFLpjdlYlYKGC:localhost:8800 &Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800 a} { y w u sqomkigeca~eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~~eeQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~}eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800~|eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~{eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800~zeeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~yeeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~xeeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800~weeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~veeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~ueeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~teeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800~seeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~reeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~qeeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~peeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~oeeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~neeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~meeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~leeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~keeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~jeeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~ieeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~heeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~geeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800 k"   C Z0/2WnDCFkh(Q/ e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rules$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggm'Q9 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_alias$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sj&Q3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE %Q']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Ad$Q' e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.create$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4#Q3 ee!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8"Q3 ee!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto !Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYs Q))e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUpQ? e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibility$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjghQ/ e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rules$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYmQ9 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_alias$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQjQ3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wdQ' e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.create$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9AQ3 ee!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3QQ3 ee!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28 Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEsQ))e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4pQ? e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibility$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1whQ/ e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rules$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_omQ9 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_alias$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQjQ3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28 Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsdQ' e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYcQ% e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topic$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_SoQ3 ee!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA Q3 ee!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5As Q))e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgp Q? e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibility$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yh Q/ e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rules$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI  xZ?eQ_C$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 448}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A"], "type": "m.room.power_levels", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"redact": 50, "invite": 0, "ban": 50, "users_default": 0, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80}, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040661449, "hashes": {"sha256": "5URn/wuoOVrGKNFvQjwLUH6GSCGCyTbCPSqTRMzcpr4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rJbOsCjT7OtYfltJbURElTRjfVwkjiIsWSeZmr3OhYMuAuywLxOPic9J+RO9GQSFRCxgC0b4GcPIHdBRNG2fCQ"}}, "unsigned": {"age_ts": 1570040661449, "replaces_state": "$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM"}}U>eQ_9$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 141, "stream_ordering": 447}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI"], "prev_events": ["$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg"], "type": "m.room.member", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040660727, "hashes": {"sha256": "7Ib49BGu9J1ggvYzXeCOFCdEyCK0EtqKgksbrW2sf9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ipmDraII0xmNsvTjjCjdc8BgEB2gfhRAIHreMU8l0RlSQZUWdTMjH0V/2wxCASRBQNXhfhkMkyiaVZhtou9IBA"}}, "unsigned": {"age_ts": 1570040660727}}=eQ_M$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 446}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y"], "type": "m.room.aliases", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-11:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040660024, "hashes": {"sha256": "0XitWFHxWCNs1iXKcXMArAa8HaupmDXIFuZ9KTKcWOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HZlLg3MWKJQk4mIRpM2+blDu6Pj739ZsDS5Dhj3UoWBSRo7exlLWEotrq6faWTcBgAeeuA9VujQBWbGZiAcjBA"}}, "unsigned": {"age_ts": 1570040660024}}<eQ_$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 445}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI"], "type": "m.room.history_visibility", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040659143, "hashes": {"sha256": "ZvjffmRP/Q2f/IgDF1xnL0QHcrRePBK3YMAdLV9fAEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Qe2mFQuVk3boGoQN3rJQwlg65SZG/GFfitnM9wiasPzxVfo6OamV2CacLhv7q8edTSHoXGMXftin3BGth9YjDw"}}, "unsigned": {"age_ts": 1570040659143}} ,NC 8 - { " p  e ZOD9.|#qf VheL$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMsha256Tj>6B?\e9ܽ~BVgeL$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQsha256ײL+֑Q4s74ofTPiTVfeL$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8osha256d@HlNsVFyLj3VeeL$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUsha256o')nM*n7W4WsKۢlVdeL$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolksha256SXSF }|=ip)>0YVceL$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0sha256 [bx"'yxp 1^7&MVbeL$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Qsha256CŠ#M2+qWc̷%f$PgVaeL$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Esha256Iҭp*XwE \S EHApV`eL$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knlssha256c0T;.ˁz`Iٞ蚝{/[V_eL$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUsha2565k)nrs%rojW49 EV^eL$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQsha256 nHTD7 zz{:=t"T8V]eL$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8sha256\y?w4(k4 >oV\eL$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIsha256?Fxr+zzs9*IV[eL$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduosha256* qAey RK~\|IvVZeL$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggsha256@~Vʑٽ9r ?:PGVYeL$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8ssha2568H/!vr1>^n{sOVXeL$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTEsha2566"u^rVwϕđtB_R`f>1VWeL$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Asha256ĄQo>h6n3RTVVeL$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4sha256-)l Nޕk&EN>VUeL$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tssha256#ZIKeٵNK+ %v;VTeL$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8sha256dARFdr?, ~!:'ZU)\ݨOVSeL$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYsha256vאm}q~:R?oJD2㙶VReL$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUsha256Un|kI: p6v #/Xa! R[eVQeL$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgsha256,R (}O{Zow*k|:U8VPeL$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYsha2564*m8)}-VVOeL$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQsha256H4.ھ>h{(?=w1*V$VNeL$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtosha2563L}uA+^3-:6 ҞGNVMeL$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wsha256j\5ٿ.Nǡ~ L<VLeL$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Asha256`4'C釒JVKeL$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRksha256hM)i- mI5"VJeL$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Qsha256j`x%v'ZJ}F(1tVIeL$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEsha2565'7e c2L30xLqP6VHeL$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4sha256!~Tl[Ei\Tu(6B1>VGeL$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wsha25640m~s+4ր,Nć fC!44/\VFeL$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_osha256R]nq7sg'-KP_ 57_VEeL$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQsha256n}r~J%l!-VDeL$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28sha256Z.Bhge ; k>DOoVCeL$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Kssha256*QD+O::UOSigثVBeL$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYsha256Ƹ@Y?TyttdߞZ]g!fVAeL$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Sosha256- Z|:{+޺wEb*V@eL$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMssha2562+Hՠ&yX4C4ˇWi V?eL$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAsha256@X5HZUڎn2WqSpV>eL$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Asha256Bła iߒ0YV=eL$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgsha256:a]!X4R\|I Jp W  m ; Fxr@l:`.f4 S!Y' A sj8r@ x F  ~ M M M ` .f1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQA1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28[1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kn1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw[1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYi1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ e1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ E1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMe21e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cF1$2:localhost:42455 Y3$29:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4b1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JEM21e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kL1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU 3$18:localhost:42455 3$17:localhost:42455 3$16:localhost:42455 'Q$1570043748464QpNXV:localhost:8800 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU 1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk 1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI 1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk 1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 _1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwW1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Ml1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 [1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe41e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUD1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg+1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Mb1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A}0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds ?S}P#pC \yL^1 /  | O " o B  a 5  T (tGyLk-g: Zk>M -,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  +Q !JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' ',Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 + +,Q!KIHYKMzkRDrJwiywwz:localhost:8800 * *+Q !KIHYKMzkRDrJwiywwz:localhost:8800 ) ),Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800+Q !JusxqeECtidaPlWqhp:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800+Q !JZouHBRxCRbcxYJnbn:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800+Q !JYLMokjOhZZlmbZvTf:localhost:8800,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 +Q !JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800+Q !JGhlAUflyNxErGGZZu:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 - -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 , ,,Q!JnAKXOrlyisFUpgJPw:localhost:8800  -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 . .,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !JnAKXOrlyisFUpgJPw:localhost:8800  - ?S}P#pC \yL^1 /  | O " o B  a 5  T (tGyLk-g: Zk>M -,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  +Q !JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' ',Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 + +,Q!KIHYKMzkRDrJwiywwz:localhost:8800 * *+Q !KIHYKMzkRDrJwiywwz:localhost:8800 ) ),Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800+Q !JusxqeECtidaPlWqhp:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800+Q !JZouHBRxCRbcxYJnbn:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800+Q !JYLMokjOhZZlmbZvTf:localhost:8800,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 +Q !JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800+Q !JGhlAUflyNxErGGZZu:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 - -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 , ,,Q!JnAKXOrlyisFUpgJPw:localhost:8800  -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 . .,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !JnAKXOrlyisFUpgJPw:localhost:8800  - ~z v r n j fb^ZVRNJF)eeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800(eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800'eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800&eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800%eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800$eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800#eeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800"eeQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800!eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800 eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800  ^U]eQ_9$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 141, "stream_ordering": 478}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg"], "prev_events": ["$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI"], "type": "m.room.member", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040683736, "hashes": {"sha256": "DfyenRXuDlrCM2xKwgz28PxNkkvoMfJ58phGQCxZY6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w+84Nk3PYXD06Rk0HP3QUEtt1DFbwsNiJwLzJEzHweb8iceX2QonHsZsl08gt7DR9cOFmId0O5OYqTv7b6GvBA"}}, "unsigned": {"age_ts": 1570040683736}}\eQ_M$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 477}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo"], "type": "m.room.aliases", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-14:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040682966, "hashes": {"sha256": "EvG3JGlSrSGb5Orm9GeO23bsGZeMD3c83rXUJufgRE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iz51EmRQ6vh96Dd7tYUeOcaC/R6MczZMc+Lw3Fe6pTXiT+kYr7oHkGFypzgHPdyYKAsX3JRuA9xSomOpViWUCQ"}}, "unsigned": {"age_ts": 1570040682966}}[eQ_$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 476}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg"], "type": "m.room.history_visibility", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040681750, "hashes": {"sha256": "/Wh+erbtiAfLQdIPOmjwpdYizvkq55DxNMFyAg1RFOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/fIvxyTBjZZAQ1RGV9Hx2iOzZcipXtgJ//sNYrA7I6MPiLDz5QXPNV07TdCbF+YT8zSE1vCW0Flx5rc3/N/eAQ"}}, "unsigned": {"age_ts": 1570040681750}}sZeQ_u$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 475}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s"], "type": "m.room.join_rules", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040681034, "hashes": {"sha256": "PTo+tZjgSVvhTU9H0GTkJhdaeGB8mMqvFthRKMa2AIM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GYvtjIB6ZyapeA2ly0ezSGvLY3giancwibl0+NxFCIocvziHCwIfKVkiCoFJOuwNbMhR0fraTKF2G2SbvR7SBQ"}}, "unsigned": {"age_ts": 1570040681034}}   -YeQ_9$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 474}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE"], "type": "m.room.canonical_alias", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-14:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040680391, "hashes": {"sha256": "YxmlIIUevuJ2VdHpnGOG6BQ+MSMR1OkXiwLg0OurQpU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xf/LAAJGuv9ynj7JLDeZlcgPAbeTdnosfpD1f6MrWmhAw1dXjExsw6ryXSTm4Yv20FNedl+rUyyQFlu8xyckAA"}}, "unsigned": {"age_ts": 1570040680391}}jXeQ_c$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 473}{"auth_events": ["$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "type": "m.room.power_levels", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040679701, "hashes": {"sha256": "oGw4AtDp1fYZ463kSY9Y/valZmgkZF1IqtFUkbs46Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gzhqal9JcMa7zcV9HpFkVetvI02KowP2O8vXjf4XB/nTXGLZFdnCww7uBZcFqGF+UChOEJOz3AKcvwUOEFQSDQ"}}, "unsigned": {"age_ts": 1570040679701}}uWeQ_y$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 472}{"auth_events": ["$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4"], "prev_events": ["$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4"], "type": "m.room.member", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040679087, "hashes": {"sha256": "y4aFUftdlibUMVjvqWGYA29RH3JU8bc0FvzrU/jcC4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JXzO5V1TUKBWr3bLQv7XFF9stO7GsakecSHwvGfYFC616sv/h4nI3QsbDdeJXY2yAqfUcd9ZPa0nOHLLf8c/AA"}}, "unsigned": {"age_ts": 1570040679087}}hVeQ__$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 471}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040678430, "hashes": {"sha256": "MPamKP3WwjHwXqb5z5OxSPFMY9YEX4MHoEmLiHSUE2A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sYIsWEHkUr14/A0U4GOcggIh00hcCp9NT5eO4uw060sEPksZkw6WWNJSSGW/MFFtW0HELAeqDVDi9HcIpjD/CQ"}}, "unsigned": {"age_ts": 1570040678430}}  }uCeQ_y$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 452}{"auth_events": ["$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY"], "prev_events": ["$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY"], "type": "m.room.member", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040664294, "hashes": {"sha256": "zRAeIJ+sFiJCv3L2Sm+IjM6usbBlBQTfe326DBTIY2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OvfSRgdyzAnWZAeZlrMVED9OByFBez+Lx8EKIfn1k36UKd2IXuNc7/OknUYr9UHt6VvkWBQvJq06hFgCp557Cg"}}, "unsigned": {"age_ts": 1570040664294}}hBeQ__$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 451}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040663630, "hashes": {"sha256": "HpyNxFnF+yzyscdU98YMaoRn9Q0EEYg+dcKxYv0m8Nw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5mkvOZ+ORIiVF7S7ddwfZi18aywPuco/I+MGcdo2ZrYpK6ehFfw+Y+MrcoczJla/KcrILn4KBFuK1AYGz1VvBg"}}, "unsigned": {"age_ts": 1570040663630}} AeQ_)$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 141, "stream_ordering": 450}{"auth_events": ["$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A"], "prev_events": ["$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs"], "type": "m.room.topic", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"topic": "Here I can set the topic at powerlevel 0"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040662617, "hashes": {"sha256": "G6Pqg8UbE+NnISOFLDjQ4l4ynVhrwLf/xf/DgIz54o8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8fXfXcl48uZfc9dhRa6nlOFieviF7aqNYsfP5K5mXi4H9F74uLS/7WsTbPZFFZyBvoyfsHnEeN5iBEvagzIdBA"}}, "unsigned": {"age_ts": 1570040662617}}n@eQ_k$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 449}{"auth_events": ["$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA"], "type": "m.room.power_levels", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"invite": 0, "ban": 50, "redact": 50, "users_default": 0, "events": {"m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50, "m.room.topic": 0, "m.room.canonical_alias": 50}, "events_default": 0, "state_default": 50, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040661993, "hashes": {"sha256": "wVoltLF8uyAMSZ2kg9RUdpSf6OQTIT0L9050bXHyrmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MkiRQV4P9roNYFPxS0WRr3UqQLOH5dDaO/yxOw+WjxN4pyWs38roOxuNcz50p1SS942nWYr4rWJmRt06L/tBBw"}}, "unsigned": {"age_ts": 1570040661993, "replaces_state": "$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA"}} tQ\D+}K7Qk9q?i w E  } K   R X & w E , hW%]+6c11e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o 1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I r1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsW1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM 1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk_1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkh1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI{1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A-1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYe1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE T1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7we1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w`1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 c3$29:localhost:42455 3$28:localhost:424553$27:localhost:424551e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kO1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI 1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M|1$3:localhost:44405 1$3:localhost:42455 m1$3:localhost:41985 1$3:localhost:37265 3$39:localhost:42455 !1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujoc3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao _3$37:localhost:42455 1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug Y3$33:localhost:42455 1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAK1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsP1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0A1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYl1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E:1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk D1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k X1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooD1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ q1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0! Er@ X&l: (p. T "j8 P f4    | J v DFRx~  L  Z@1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8x1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8w`3$87:localhost:4245541e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY"1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8X1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY#1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8y1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8Y1e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU1e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw 1e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE {1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8Z1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIML1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMM1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl281e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl281e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl281e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$1e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMN1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8u1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8t1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM1e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgE1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM Z1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD081e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74M 21e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48q1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48p1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48o1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0:1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD09>1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM`1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM_1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc-1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc,1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc+1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc*1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM81e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM81e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw |1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgG1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgF1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE z1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE y1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM 1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM 1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8v21e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74O1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74N1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM821e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAS1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAR1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAQ1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMa yQGM  k 9 j  X r @  & x F   ~pQ8 Ll S W >  R ^,@d2!l:ry1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cP3$52:localhost:42455 '1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 3$54:localhost:42455 33$53:localhost:42455 (1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU{1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is G1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 111e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0~1e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwX0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w^1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEL1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ(1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w~1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4g1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 r1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo Y1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms71e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA.1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcv1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8 1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogY1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAx1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0i0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo_1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s p?$59_msg_d:localhost:42455 H=$57_pl_x:localhost:42455 G3$56:localhost:42455 F3$55:localhost:42455 ?1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs21e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA,1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 3$51:localhost:42455 &3$50:localhost:42455 %1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980M1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokG1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7609 QL  D X & ^ ,dQvW% ^,d2 j8 p>K}K %Q W1e$4yXvw1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog3$52:localhost:42455 3$50:localhost:42455 1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo J1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcp1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogJ1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAi1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0Z0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo_1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s Q1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 S1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw3$49:localhost:42455 3$56:localhost:42455 (3$55:localhost:42455 !1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcv3$54:localhost:42455 1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX83$53:localhost:42455 1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is 71e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 "1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Au1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY n1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk |>1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk~1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8o1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEL1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ(1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w~1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4e1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms71e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI?$59_msg_d:localhost:42455 )1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE ?Pj8p> v D   } K  Q  W % q ] +cJP7PV$9\*d2k?1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cJ1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980G21e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUu0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_451e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0~1e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwX0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w^1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA&1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEL1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ(1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w~1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4g1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms71e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI?$59_msg_d:localhost:42455 F3$56:localhost:42455 E1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA.1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE3$55:localhost:42455 >1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcv3$54:localhost:42455 21e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8 3$53:localhost:42455 '1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog3$52:localhost:42455 &3$50:localhost:42455 %1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI76031e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs,1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo Y1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokA1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogY1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAx1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0i0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo_1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s n1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 p1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is G1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 1 5e"_$ n 3 h - | A  7 1{@OCz7n+{@Cr5 Q[ ]!VAEDgDJVqmxXZyAlSW:localhost:8800#test-20191002_181700-11:localhost:8800publicsharedHere I can set the topic at powerlevel 0`4 Q[ !eySSVuCclRpBDgwKIU:localhost:8800#test-20191002_181700-10:localhost:8800publicsharedn3 Q+Y !fJXiUpbbOlLbHWmPgs:localhost:8800A new room name#test-20191002_181700-9:localhost:8800publicshared_2 QY !oXKJArsPmtgaYANBrg:localhost:8800#test-20191002_181700-8:localhost:8800publicshared_1 QY !egCvzKpbEwmuvDoBTb:localhost:8800#test-20191002_181700-7:localhost:8800publicshared_0 QY !XgobMgBjNcDRJnRXLD:localhost:8800#test-20191002_181700-6:localhost:8800publicshared9/ Q !wIhMbfQzYbJobPdwyi:localhost:8800publicshared9. Q !cSUQGmpIsSCBAVTOHo:localhost:8800publicsharedV- Q'- !SBEprlZiuliFNSfNmz:localhost:8800The room namepublicsharedhttp://somethingV, Q'- !KxhGcTbEWmtgGNpdox:localhost:8800The room namepublicsharedhttp://somethingA+ Q !HmkcAMkMjWRhTDJMsy:localhost:8800invitesharedcan_joinA* Q !OMkiVTuuOEeiFAXtUY:localhost:8800invitesharedcan_joinA) Q !BrssELMbasSzTFpIXm:localhost:8800invitesharedcan_joinA( Q !RmdhCjvouVLmyIHjaM:localhost:8800invitesharedcan_joinA' Q !EyEaTZElOkdURKbEXo:localhost:8800invitesharedcan_joinA& Q !TWETXUgfFZafDdbqLS:localhost:8800invitesharedcan_joinA% Q !HAFNBarGuVZuWCgwWM:localhost:8800invitesharedcan_joinA$ Q !duCKuavMBSfRbTFPsc:localhost:8800invitesharedcan_joinT# QC !TleKOyAElrpgyyrAQA:localhost:8800#__ANON__-11:localhost:8800publicshared_" QY !IGVHKYcSuxzVPlFHlj:localhost:8800#test-20191002_181700-4:localhost:8800publicsharedS! QA !xhbvqJDfxMSsZPqvld:localhost:8800#__ANON__-9:localhost:8800publicsharedS QA !OSHhtkGUjpUCkXwIhj:localhost:8800#__ANON__-5:localhost:8800publicshared9 Q !AWfbViAZparIjmDaVT:localhost:8800publicshared_ QY !wnriPzXkIMmdTNoJKU:localhost:8800#test-20191002_181700-2:localhost:8800publicshared9 Q !jfshVGNDxkvqPxFxWB:localhost:8800publicshared_ QY !OaCEdDAiatpwYcagUb:localhost:8800#test-20191002_181700-1:localhost:8800publicsharedS QA!GGTWnzJfvPQBgQqDIE:localhost:8800#__ANON__-4:localhost:8800publicsharedS QA !cosGKKhHvKaVukBCic:localhost:8800#__ANON__-3:localhost:8800publicshared9 Q !rZWweGEChkxxtzyfDB:localhost:8800publicshared9 Q !uJtKGXTNdEnCPNOGDx:localhost:8800publicshared9 Q !vJQYmOxOBLwFKzYkNj:localhost:8800publicsharedW Q I!kkgEEVUJynguTqAoWD:localhost:8800publicsharedTesting topic for the new room9 Q !dUnULFLGtgaVdwHtnz:localhost:8800publicshared9 Q !aWbcZNVBalJilCEsdr:localhost:8800publicshared9 Q !kxTDuIasPNpXtiRsif:localhost:8800publicshared9 Q !wvnfKBSrUlfNmYoeil:localhost:8800publicshared9 Q !NhWgOTYzEPRwAxRQvS:localhost:8800publicshared9 Q !scyFsXcUIJiLIMwWMY:localhost:8800publicshared9 Q !aWJOsiuJONOvjKWEjO:localhost:8800publicshared9 Q !BDASLhdcKfNwxCTCSg:localhost:8800publicshared9 Q !xwoIOPTGmJIlTXakxC:localhost:8800publicsharedS QA !jYzridjeihmwPBuwLb:localhost:8800#__ANON__-2:localhost:8800publicshared9 Q !NZHpBquHDfJAjiawGk:localhost:8800publicshared9 Q!uxKymrHZeXRYCZwekU:localhost:8800publicsharedy Q)A =!sPWVGnipjiiWQpywNO:localhost:8800room name here#__ANON__-0:localhost:8800publicsharedA new topic for the room9 Q !GixhPUMvtKSWoKRgvw:localhost:8800publicshared9 Q !zhCsYcaweVFJLLNwBz:localhost:8800publicshared9 Q !loalEsWaTYwrVUNJLr:localhost:8800publicsharedB Q !LaLcEGFLpjdlYlYKGC:localhost:8800publicsharedTest RoomB Q !odAvowLhHJcmkKlxFk:localhost:8800Test RoompublicsharedA Q !plcvCHNbjCkNMMxnTk:localhost:8800invitesharedcan_joinA Q !QZhNrNpwObZGJZpdAG:localhost:8800invitesharedcan_joinV QG !zNCItZNbpkZKuufRhC:localhost:8800#30room-create:localhost:8800publicshared 1q<d >  f " # _LP_~'yD Em2qIf Q) !hgjYwwwjWJNgwrzOto:localhost:8800publicworld_readablecan_join9e Q !dnZVySJLGNtUKsSgXW:localhost:8800publicshared9d Q !oznZaCpONuNDaLarkI:localhost:8800publicshared9c Q !eLsrBEnrHolwCNgkFW:localhost:8800publicshared9b Q !ILbUVZOfPPwaZRrKJd:localhost:8800publicshared9a Q !wAyboOFgsOPwkmgMAI:localhost:8800publicshared`` Q[ !bnTuVBaAJTPbcYZtRl:localhost:8800#test-20191002_181700-31:localhost:8800publicshared`_ Q[ !BGbJEmJRVJGlZFQbZe:localhost:8800#test-20191002_181700-30:localhost:8800publicshared`^ Q[ !tDsPLsKOLPePtEWRwn:localhost:8800#test-20191002_181700-29:localhost:8800publicshared9] Q !XMNRkfscQXRjgYrOSd:localhost:8800publicshared9\ Q !wUuodvgsmAJqKJUBCQ:localhost:8800publicshared[ QG)O !zFdNewlKnUiMBxnYrN:localhost:8800#worldreadable:localhost:8800publicworld_readablehttps://example.com/ringtails.jpgwZ QMI !KeBlWUQiLYUoILKkTB:localhost:8800#nonworldreadable:localhost:8800publicsharedhttps://example.com/ruffed.jpgUY QE !WVzjUePHrzCjfyTbmK:localhost:8800#listingtest0:localhost:8800publicsharedUX QE !lAGTcYIuMBXsVRGCOe:localhost:8800#listingtest2:localhost:8800publicsharedUW QE !UyLoIXmzVFwycmBUeh:localhost:8800#listingtest1:localhost:8800publicshared9V Q !nteAxExBGJfaGIpuCx:localhost:8800publicshared9U Q !itKDOCtoMkFUETDtle:localhost:8800publicsharediT Q[ !qxqNYKdtgvOQdhmgsj:localhost:8800#test-20191002_181700-28:localhost:8800publicsharedforbiddenAS Q !MlzmtUYSZOiByAZdKx:localhost:8800publicsharedcan_joinBR Q !WjlTCJVOFJkanCtkFE:localhost:8800publicsharedforbiddenhQ Q[) !aBCvSXjtZUEPlPGHvY:localhost:8800#test-20191002_181700-27:localhost:8800publicworld_readableAP Q !IMiczgkCTjejbnbeyP:localhost:8800publicsharedcan_joinAO Q !HIZTeBCxvpMSpcqGVD:localhost:8800publicsharedcan_join9N Q !awHAhLuEkavTGACcUW:localhost:8800publicshared9M Q !OqPpVlCwmKdAUlwrXI:localhost:8800publicshared9L Q !quaZwrGnzbNWhwAOYB:localhost:8800publicshared9K Q !JusxqeECtidaPlWqhp:localhost:8800publicshared9J Q !aWvVRVaDflYyyGTOdD:localhost:8800publicshared`I Q[ !GiSxJsKZhQVHBkrVPn:localhost:8800#test-20191002_181700-26:localhost:8800publicshared`H Q[ !AjjrNwXmPTCruHxaJq:localhost:8800#test-20191002_181700-25:localhost:8800publicshared`G Q[ !BkzROHxDAfKIzYpmPV:localhost:8800#test-20191002_181700-24:localhost:8800publicshared`F Q[ !WWZVpyLeZfyfpWidLx:localhost:8800#test-20191002_181700-23:localhost:8800publicshared`E Q[ !XIqmzIFbkHGQPIpywk:localhost:8800#test-20191002_181700-22:localhost:8800publicshared9D Q !lMRBkbYJDQHgdBZBFJ:localhost:8800publicshared`C Q[ !cHtqiAyCHEAoBIbCmL:localhost:8800#test-20191002_181700-21:localhost:8800publicshared`B Q[ !OBWkjfrDCNgYFfblia:localhost:8800#test-20191002_181700-20:localhost:8800publicshared~A QI[ !ntuwVdUxfzNIhIKYaz:localhost:8800N2. B's room name after A left#test-20191002_181700-19:localhost:8800publicshared`@ Q[ !CQKLQUpSYakhxVDltC:localhost:8800#test-20191002_181700-18:localhost:8800publicshared9? Q !GwXGurbyEmykmmHcHJ:localhost:8800publicshared9> Q !VWYMJxEviBNDdJCuKT:localhost:8800publicshared`= Q[ !CgVBWWcRJoHEcwoLcq:localhost:8800#test-20191002_181700-17:localhost:8800publicshared`< Q[ !HcMGemcRrLnLprOJJR:localhost:8800#test-20191002_181700-16:localhost:8800publicshared`; Q[ !SyIWYOmcGiASNkPCTB:localhost:8800#test-20191002_181700-15:localhost:8800publicshared9: Q !msMfSdLIAvklSSAnci:localhost:8800publicshared99 Q !GgUNbVXspVTpOlaHBl:localhost:8800publicshared`8 Q[ !eKrOqiOabJcMgIJjwC:localhost:8800#test-20191002_181700-14:localhost:8800publicshared`7 Q[ !vVmSdclwPIqYDbnmPn:localhost:8800#test-20191002_181700-13:localhost:8800publicshared`6 Q[ !edbUkYJIZBNOiTuLJs:localhost:8800#test-20191002_181700-12:localhost:8800publicshared q|ung`YRKD=6/(! yrkd]VOHA:3,%  } v o h a Z S L E > 7 0 ) "    { r i ` V L B 8 . $    z p f \ R H > 4 *   v l b X N D : 0 &    | r h ^ T J @ 6 , "   xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&|rh^TJ@6,"xndZPF<2( qponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM}L~}K}|J|{I{zHzyGyxFxwEwvDvuCutBsrArp@qp?po>on=nm<ml;lk:kj9ih8hg7gf6fe5ed4dc3cb2ba1a`0`_/^].]\-\[,[Z+ZY*YX)WV(VU'UT&TS%SR$QP#PN"ON!NM MLLKKJIHHFGFFEEDDCCBA@@??>>==<<;;::986 76 65 54 43 3221100/.--,,++**))(('~'&}%#|$#{#"z" y! x wvutsrqponmlkjihg  f  e  d  c ba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlk~j~}i}|h|{gzyfyxexwdwvcvubutats`sr_qp^po]on\nm[lkZkjYjiXihWgfVfeUedTdcSbaRa`Q`_P_^O]\N\[M[ZLZYKXWJWVIVUHUTGSRFRQEQPDPOCONBNMAML@LK?KJ>JI=IH<HG;GF:FE9ED8CB7BA6A@5@?4?>3=<2<;1;:0:9/87.76-65,54+43*32)21(10'/.&.-%-,$,+#*)")(!(' '&%$$##""!             T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&E)(D('C'&B&%A%$@#"?"!>! = <;:9876543210/. -  ,  +  * )('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543~2~1~}0}|/|{.{z-zy,xv+wv*vu)ut(ts'sr&rq%po$om#nm"ml!lk kjjiihgffdeddccbbaa``__^^]]\[ZZYYXXVWV VU UT TS SR RQQPPONLMLLKKJJIIHHGGF~FE}ED|DC{B@zA@y@?x?>w>=v=<u<;t;:s:9r98q87p64o54n42m32l21k10j0/i/.h.-g-,f,+e*)d)'c('b'&a&%`%$_$#^#"]"!\! [ZYXWVUTSRQPONML K  J  I  H  G FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsr -RM H C > 9 4/*|%w rmhc TsQe!msMfSdLIAvklSSAnci:localhost:8800$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4TrQe!msMfSdLIAvklSSAnci:localhost:8800$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gTqQe!msMfSdLIAvklSSAnci:localhost:8800$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJATpQe!msMfSdLIAvklSSAnci:localhost:8800$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4ToQe!msMfSdLIAvklSSAnci:localhost:8800$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4TnQe!msMfSdLIAvklSSAnci:localhost:8800$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUTmQe!msMfSdLIAvklSSAnci:localhost:8800$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUTlQe!msMfSdLIAvklSSAnci:localhost:8800$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssTkQe!msMfSdLIAvklSSAnci:localhost:8800$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMTjQe!msMfSdLIAvklSSAnci:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQTiQe!msMfSdLIAvklSSAnci:localhost:8800$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8oThQe!GgUNbVXspVTpOlaHBl:localhost:8800$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUTgQe!GgUNbVXspVTpOlaHBl:localhost:8800$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkTfQe!GgUNbVXspVTpOlaHBl:localhost:8800$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0TeQe!GgUNbVXspVTpOlaHBl:localhost:8800$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8QTdQe!GgUNbVXspVTpOlaHBl:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-ETcQe!GgUNbVXspVTpOlaHBl:localhost:8800$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-KnlsTbQe!eKrOqiOabJcMgIJjwC:localhost:8800$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUTaQe!eKrOqiOabJcMgIJjwC:localhost:8800$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQT`Qe!eKrOqiOabJcMgIJjwC:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8T_Qe!eKrOqiOabJcMgIJjwC:localhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIT^Qe!eKrOqiOabJcMgIJjwC:localhost:8800$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduoT]Qe!eKrOqiOabJcMgIJjwC:localhost:8800$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggT\Qe!eKrOqiOabJcMgIJjwC:localhost:8800$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sT[Qe!eKrOqiOabJcMgIJjwC:localhost:8800$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTETZQe!eKrOqiOabJcMgIJjwC:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-ATYQe!eKrOqiOabJcMgIJjwC:localhost:8800$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4TXQe!vVmSdclwPIqYDbnmPn:localhost:8800$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9TsTWQe!vVmSdclwPIqYDbnmPn:localhost:8800$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8TVQe!vVmSdclwPIqYDbnmPn:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYTUQe!vVmSdclwPIqYDbnmPn:localhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUTTQe!vVmSdclwPIqYDbnmPn:localhost:8800$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgTSQe!vVmSdclwPIqYDbnmPn:localhost:8800$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYTRQe!vVmSdclwPIqYDbnmPn:localhost:8800$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQTQQe!vVmSdclwPIqYDbnmPn:localhost:8800$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtoTPQe!vVmSdclwPIqYDbnmPn:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wTOQe!vVmSdclwPIqYDbnmPn:localhost:8800$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9ATNQe!edbUkYJIZBNOiTuLJs:localhost:8800$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRkTMQe!edbUkYJIZBNOiTuLJs:localhost:8800$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3QTLQe!edbUkYJIZBNOiTuLJs:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoETKQe!edbUkYJIZBNOiTuLJs:localhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4TJQe!edbUkYJIZBNOiTuLJs:localhost:8800$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wTIQe!edbUkYJIZBNOiTuLJs:localhost:8800$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_oTHQe!edbUkYJIZBNOiTuLJs:localhost:8800$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQTGQe!edbUkYJIZBNOiTuLJs:localhost:8800$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28  GeQ_$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 456}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o"], "type": "m.room.history_visibility", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040666667, "hashes": {"sha256": "ZqY4O745JALIsyc6Y6fkdT0RctqWhydMEKUqYdXqc6o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RbbBYezqzi69cebY2nbmSonM+ibNK6E+eL4Chc9P6BxzphnQpEzABei+bdaHj1P3e5o5XvOruIunMI3fM95lDQ"}}, "unsigned": {"age_ts": 1570040666667}}sFeQ_u$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 455}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ"], "type": "m.room.join_rules", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040666124, "hashes": {"sha256": "BKSY7rp+CV8+GBq+7dlH0Zf8/Ugaro3JOG4U+M8wL8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iVFl98VsyBDqvPA0mPWXq/hF9UW+UFsiVd0nTGHAdX/OVHsUUxjVlbTxTBnNbq5GOW/pxxp6DgQJTha+/LmRAw"}}, "unsigned": {"age_ts": 1570040666124}}EeQ_9$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 454}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28"], "type": "m.room.canonical_alias", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-12:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040665524, "hashes": {"sha256": "fA+0mZmYX9gYOPy0TQiBXlBRUHrPWzyLYJ92n7Fq0Qs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FutAf9ACHlde3h1jVLX5TkGfzi9aVqfHvb55Nt09ibwYpJR7l/My0tGus5zauYMuG+88mKyJl+TyB05Ew92NCw"}}, "unsigned": {"age_ts": 1570040665524}}jDeQ_c$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 453}{"auth_events": ["$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "type": "m.room.power_levels", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040664782, "hashes": {"sha256": "Xo/nmER670GvC/f4g+hqYOtofZafGJe8CxBONkdiEb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c3u096a+HFcOTk4mJZXj/3G0XWDQmPyj2G0LEaoY5L4Sxd83tDK299Kh+qZGNGPWeNn/RZ1zESJ1jsOeLgYfBg"}}, "unsigned": {"age_ts": 1570040664782}} 'XFoDFsHN# H q P # N u J so  % { w L ! qDT)}RsJ!mB yyqV*Q!LazKtcHZriKzCvvGwV:localhost:8800 < Q*Q!LazKtcHZriKzCvvGwV:localhost:8800 ; P*Q!LazKtcHZriKzCvvGwV:localhost:8800 : O*Q!LazKtcHZriKzCvvGwV:localhost:8800 9 N*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 g |*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 f {*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e z*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d y*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 c x*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KxhGcTbEWmtgGNpdox:localhost:8800jj*Q!KxhGcTbEWmtgGNpdox:localhost:8800ii*Q!KxhGcTbEWmtgGNpdox:localhost:8800hh*Q!KxhGcTbEWmtgGNpdox:localhost:8800gg*Q!KxhGcTbEWmtgGNpdox:localhost:8800ff*Q!KdOYYnOuwAyQzqwUki:localhost:8800 *Q!KdOYYnOuwAyQzqwUki:localhost:8800  s*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800 *Q!KdOYYnOuwAyQzqwUki:localhost:8800 *Q!LvARVIpJZeRQxbKefX:localhost:8800pv*Q!LvARVIpJZeRQxbKefX:localhost:8800ou(Q!LaLcEGFLpjdlYlYKGC:localhost:8800#"(Q!LaLcEGFLpjdlYlYKGC:localhost:8800"!(Q!LaLcEGFLpjdlYlYKGC:localhost:8800! (Q!LaLcEGFLpjdlYlYKGC:localhost:8800 (Q!LaLcEGFLpjdlYlYKGC:localhost:8800(Q!LaLcEGFLpjdlYlYKGC:localhost:8800(Q!LaLcEGFLpjdlYlYKGC:localhost:8800*Q!KxhGcTbEWmtgGNpdox:localhost:8800lm*Q!KxhGcTbEWmtgGNpdox:localhost:8800kl*Q!KxhGcTbEWmtgGNpdox:localhost:8800kk*Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KcXNWNfbLcYsBKZHIp:localhost:8800 h }*Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KeqmSjifajNKxtgqhj:localhost:8800#)*Q!KeqmSjifajNKxtgqhj:localhost:8800"(*Q!KeqmSjifajNKxtgqhj:localhost:8800!*Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KeqmSjifajNKxtgqhj:localhost:8800 *Q!KeqmSjifajNKxtgqhj:localhost:8800*Q!KeqmSjifajNKxtgqhj:localhost:8800*Q!KxhGcTbEWmtgGNpdox:localhost:8800ee*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!LazKtcHZriKzCvvGwV:localhost:8800 A U*Q!LazKtcHZriKzCvvGwV:localhost:8800 @ T*Q!LazKtcHZriKzCvvGwV:localhost:8800 > S*Q!LazKtcHZriKzCvvGwV:localhost:8800 = R*Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800  *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KeqmSjifajNKxtgqhj:localhost:8800*Q!KeBlWUQiLYUoILKkTB:localhost:8800*Q!KeBlWUQiLYUoILKkTB:localhost:8800+*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!KetCYFxrTxawNOGnOf:localhost:8800*Q!KetCYFxrTxawNOGnOf:localhost:8800 a} { y w u sqomkigeca~$eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~#eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~"eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~!eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~ eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800 ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  z t n h b \ V P J D > 8 2 , &     x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xp~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!        ]ZJeQ_C$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 459}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE"], "type": "m.room.power_levels", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "invite": 0, "ban": 50, "redact": 50}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040668928, "hashes": {"sha256": "MV8T0xRo5sdjl9y7qlrZhvuqdnXeU8irQz2qAQXxYto"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BNw+u2vVAkM2Wvs2IgjvfoQYZ1wJANGWQRQfFpcnJD/pNNuNR1MPolS57ZPwZjHIBqYhIVeyY4NRH5MwV1f9AQ"}}, "unsigned": {"age_ts": 1570040668928, "replaces_state": "$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28"}}UIeQ_9$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 141, "stream_ordering": 458}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o"], "prev_events": ["$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4"], "type": "m.room.member", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040668192, "hashes": {"sha256": "wRpPveu7RLsklfnfB8RoLi9ENPdTTlg2E9bJ7BJJATU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0V/QAE01rk0ynXFjbanEkmhp+OM2uxqxCRqZhcnu1oz/XXjJ4XXXVyQLi977bDvnZZRXHe9QGB1KtDiPTqTUDA"}}, "unsigned": {"age_ts": 1570040668192}}HeQ_M$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 457}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w"], "type": "m.room.aliases", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-12:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040667515, "hashes": {"sha256": "lvNf2gOvFTVF8BRiSVTkaeb57/uhpRtxXgNscJNWjZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1U+kxb52sKf6fk8YZuwf2pkHrB9GFWD08n1ywYlUNjIHEV3VW9GBQePIA2yJwn5vExyCRgBu9VsXIITWI+mfAA"}}, "unsigned": {"age_ts": 1570040667515}} B\ f  k  n v018Ba e'Q  ]$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knlsm.room.create!GgUNbVXspVTpOlaHBl:localhost:8800mm@anon-20191002_181700-114:localhost:8800&`e3Q ] $NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUm.room.power_levels!eKrOqiOabJcMgIJjwC:localhost:8800 mm@anon-20191002_181700-112:localhost:8800&_e3Q ] $Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQm.room.power_levels!eKrOqiOabJcMgIJjwC:localhost:8800 m^m@anon-20191002_181700-112:localhost:8800 ^e'Q ]$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8m.room.member!eKrOqiOabJcMgIJjwC:localhost:8800mme@anon-20191002_181700-113:localhost:8800!]e)Q ]$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIm.room.aliases!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800,\e?Q ]$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduom.room.history_visibility!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800$[e/Q ]$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggm.room.join_rules!eKrOqiOabJcMgIJjwC:localhost:8800mJm@anon-20191002_181700-112:localhost:8800)Ze9Q ]$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sm.room.canonical_alias!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800&Ye3Q ]$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTEm.room.power_levels!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800 Xe'Q ]$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Am.room.member!eKrOqiOabJcMgIJjwC:localhost:8800mmU@anon-20191002_181700-112:localhost:8800W e'Q  ]$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4m.room.create!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800&Ve3Q ] $HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tsm.room.power_levels!vVmSdclwPIqYDbnmPn:localhost:8800 mmN@anon-20191002_181700-112:localhost:8800&Ue3Q ] $ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8m.room.power_levels!vVmSdclwPIqYDbnmPn:localhost:8800 mHm@anon-20191002_181700-112:localhost:8800 Te'Q ]$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYm.room.member!vVmSdclwPIqYDbnmPn:localhost:8800m~m~r@anon-20191002_181700-113:localhost:8800!Se)Q ]$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUm.room.aliases!vVmSdclwPIqYDbnmPn:localhost:8800mzm{@anon-20191002_181700-112:localhost:8800,Re?Q ]$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgm.room.history_visibility!vVmSdclwPIqYDbnmPn:localhost:8800mv|mx@anon-20191002_181700-112:localhost:8800$Qe/Q ]$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYm.room.join_rules!vVmSdclwPIqYDbnmPn:localhost:8800mtmt@anon-20191002_181700-112:localhost:8800)Pe9Q ]$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQm.room.canonical_alias!vVmSdclwPIqYDbnmPn:localhost:8800mpmq@anon-20191002_181700-112:localhost:8800&Oe3Q ]$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtom.room.power_levels!vVmSdclwPIqYDbnmPn:localhost:8800mn'moD@anon-20191002_181700-112:localhost:8800 Ne'Q ]$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wm.room.member!vVmSdclwPIqYDbnmPn:localhost:8800mkmlW@anon-20191002_181700-112:localhost:8800M e'Q  ]$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Am.room.create!vVmSdclwPIqYDbnmPn:localhost:8800mi mi@anon-20191002_181700-112:localhost:8800&Le3Q ] $aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRkm.room.power_levels!edbUkYJIZBNOiTuLJs:localhost:8800 me`me@anon-20191002_181700-112:localhost:8800&Ke3Q ] $gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Qm.room.power_levels!edbUkYJIZBNOiTuLJs:localhost:8800 mcmcs@anon-20191002_181700-112:localhost:8800 Je'Q ]$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEm.room.member!edbUkYJIZBNOiTuLJs:localhost:8800m` m`{@anon-20191002_181700-113:localhost:8800 l3f!NeKX ^  D D m}c) 6 Y5(<7^Q']!fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-538:localhost:8800aEQ))!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800^<Q3 !fGkUEndqGrieltwbCh:localhost:8800m.room.power_levels^?Q9 !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_alias[9Q- !fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstoneBQ? !fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibility:Q/ !fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rules<Q3 !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels^Q']!fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:88006Q' !fdEymmlcUvjgshvVyl:localhost:8800m.room.create^Q']!fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-537:localhost:8800]:Q/ !fGkUEndqGrieltwbCh:localhost:8800m.room.join_rules_BQ? !fGkUEndqGrieltwbCh:localhost:8800m.room.history_visibility`6Q' !fGkUEndqGrieltwbCh:localhost:8800m.room.create\<Q3 !eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsj^Q']!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800iBQ? !fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility q:Q/ !fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules p<Q3 !fDISaqNBhlOwherxSt:localhost:8800m.room.power_levels o^Q']!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800 n6Q' !fDISaqNBhlOwherxSt:localhost:8800m.room.create m:Q/ !fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rulesRBQ? !fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibilityS6Q' !fsbkkRBZlUcBVVfMME:localhost:8800m.room.createOQ<Q3 !ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levelsq^Q']!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800t^Q']!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800p:Q/ !ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rulesrBQ? !ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibilitys6Q' !ffijTnPMbTrDXHqOXf:localhost:8800m.room.createo<Q3 !fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels^Q']!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800:Q/ !fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rulesBQ? !fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility 6Q' !fcdNYFWFyxmdpKAknc:localhost:8800m.room.create?Q9 !fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_aliasEQ))!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800<Q3 !fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels^Q']!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800:Q/ !fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rulesBQ? !fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibility6Q' !fOJLpnbtgKNxxVDquX:localhost:8800m.room.create?Q9 !fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_aliasEQ))!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800<Q3 !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels`4Q# !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.namea^Q']!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800_^Q']!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800Y:Q/ !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rules\BQ? !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibility]6Q' !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.createX Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1 e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1 e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1 e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc1 e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k1 e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1~e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81}e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01|e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1{e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1ze$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1ye$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1xe$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01we$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1ve$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1ue$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1te$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1se$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1re$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1qe$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1pe$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41oe$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1ne$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1me$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym41le$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41ke$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1je$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1ie$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1he$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1ge$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ1fe$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1ee$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1de$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1ce$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01be$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1ae$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1`e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1_e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1^e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1]e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81\e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI1[e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1Ze$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1Ye$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1Xe$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1We$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1Ve$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41Ue$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1Te$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81Se$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1Re$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1Qe$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1Pe$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1Oe$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1Ne$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1Me$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1Le$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1Ke$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1Je$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q N !5NjNeQ_c$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 463}{"auth_events": ["$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "type": "m.room.power_levels", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040671783, "hashes": {"sha256": "So09/hE4Iy+v/fSTmNA5NDPGxhcDxXS6//P9E31T+lI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TCum50FXfxY6N2nXdEcA4Bjrdf2y5WdsV3Fpc9+AfPvzTm9jiZg/1q9kZwVX2zl1XrhBJn+BM0o/xA4VOVIUAA"}}, "unsigned": {"age_ts": 1570040671783}}uMeQ_y$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 462}{"auth_events": ["$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A"], "prev_events": ["$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A"], "type": "m.room.member", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040671219, "hashes": {"sha256": "/iI8470/TkJhxKEsBm1aDKtYCioKNT/KEE7+W34x3Fs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SphkW7gHstBWiFqGl61t2c7wOKBpNBo4loql/+hsv03Oi85nMxG3cfhSTRAG38YuGmYbUi2dQLJKFp6igqVxCA"}}, "unsigned": {"age_ts": 1570040671219}}hLeQ__$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 461}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040670474, "hashes": {"sha256": "kYkJIyD48TOobqLJmPUL26fLgB7wN0vXJoDv5MT3NIw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/5wJr2YF0Ic0ar12mqJjGX2j3ErOG6nE/PFW5arpiAwWDEvRywlV8q9AAyzq5QW7uBygD8qUWQ/dL00q6DL7Bw"}}, "unsigned": {"age_ts": 1570040670474}}[KeQ_E$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 460}{"auth_events": ["$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q"], "type": "m.room.power_levels", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "events": {"m.room.canonical_alias": 50, "m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80}, "events_default": 0, "state_default": 50, "kick": 50, "users_default": 0, "ban": 25, "invite": 0, "redact": 50}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040669536, "hashes": {"sha256": "0s3LcMs+vdQFGi5ByIBT0n8F6HV6DaYcd10qj545Ths"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z1XTill+AZEH8KJJF2UXuEQufTUk+5+ue/1FIcYwcXU1DqKUb83Kwv1mZNHHzyUEtx7trnzrCM1ruAdYwk6HCg"}}, "unsigned": {"age_ts": 1570040669536, "replaces_state": "$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q"}} e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!             GcC# q8 S   o 6 R n6So6Rn 6  _ ?  R o6R f -8e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacsha256 8e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYssha256 r8e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAsha2568e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAsha256^8e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rosha2568e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUsha256$7e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQsha256f8e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Asha2568e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEsha256 8e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCAsha256 8e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMsha256j8e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4sha2568e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUsha2568e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfosha2567e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMsha2568e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14Isha2568e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeosha2568e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7ksha2568e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5Esha2568e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qsha256 8e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETssha256n8e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8sha256 :8e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPksha2568e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukiksha2568e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYsha2568e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAsha256d8e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiMsha256 G8e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIsha256*8e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYsha256;7e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1gsha2568e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRMsha2568e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Asha2567e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0sha2568e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Asha2568e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Msha2568e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgsha25668e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3Msha2568e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0sha2568e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6csha2568e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYsha2568e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwsha256^8e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0sha256h8e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUsha256X8e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUsha2568e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMsha2568e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygsha256n8e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYsha2568e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4sha256T8e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUssha2563$79:localhost:42455sha256 3$78:localhost:42455sha256 3$77:localhost:42455sha256 3$76:localhost:42455sha256 3$75:localhost:42455sha256 3$74:localhost:42455sha256 3$73:localhost:42455sha256 3$72:localhost:42455sha256 3$71:localhost:42455sha256 3$70:localhost:42455sha256 3$69:localhost:42455sha256 8e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUsha2568e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwsha2568e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6osha2568e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMsha2563$68:localhost:42455sha256 3$67:localhost:42455sha256 3$66:localhost:42455sha256 3$65:localhost:42455sha256 *I$64_redaction2:localhost:42455sha256 8e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8sha256 W8e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0sha256 } " = BM)Q M?;FtgeQ3 $4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels eQ']$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800joinaeQ' $2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800m.room.createmeQ? $vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibilityeeQ/ $5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rulesgeQ3 $Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels eQ']$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800joinaeQ' $5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800m.room.create eQ']$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinp eQ))$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800m eQ? $uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibilitye eQ/ $7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rulesj eQ9 $_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_aliasgeQ3 $NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels eQ']$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaeQ' $ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800m.room.creategeQ3 $HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels eQ']$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joina~eQ' $6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800m.room.createg}eQ3 $aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels |eQ']$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinp{eQ))$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800mzeQ? $obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibilityeyeQ/ $ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rulesjxeQ9 $Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_alias veQ']$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaueQ' $4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create`teQ% $Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topic eQ']$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpeQ))$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800meQ? $LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibilityeeQ/ $izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rulesjeQ9 $pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_aliasgseQ3 $7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels  ghReQ_M$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 467}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg"], "type": "m.room.aliases", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-13:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040675016, "hashes": {"sha256": "YRuEycEQDcPjQXHS6pYcWKvPVh6LYmXzqM+sLZnTjK0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GzpHEIYq8QVLHlpqJjY2N3/AqdqDcG7U3A5XPvlyG0U+lro9D6A8f0VX2sR7t8jH02o7CxcLlrn9BIOC/mgnDw"}}, "unsigned": {"age_ts": 1570040675016}}QeQ_$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 466}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY"], "type": "m.room.history_visibility", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040673916, "hashes": {"sha256": "M0OF45wtTI+qmYoirsLOfCOMpLyWidn8LLKPL/ZjPW4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l5jHtg2BR64UJu+4HepWA+/xrKZH5UwhnQOP7AdrJx5ucTqkGGrKNJtTW8Y/T9uUhIoU3oGt1sbP8a7e9ToeAw"}}, "unsigned": {"age_ts": 1570040673916}}sPeQ_u$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 465}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ"], "type": "m.room.join_rules", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040673300, "hashes": {"sha256": "T/pKwV2F+ac+NJFfJr/p1wktxz4rRQ56KJ1jDB6bSJk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4B95n2MvLPx/E1HgqxpD0y0ULopfIvcGnJmwyGwjaciI1vRtNHlc1QQwF7SB+u3FxWs7kCwnFHhg83apaRp8CQ"}}, "unsigned": {"age_ts": 1570040673300}}OeQ_9$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 464}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto"], "type": "m.room.canonical_alias", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-13:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040672408, "hashes": {"sha256": "vMKf3yuHEAFvweQS6U4ggoZmiLVLKdIMHDtzWaFbsAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p4uHSUAklyscTZwb70elmcja+tws1Ruzjet1OOyVSkoQ16+cQ7DvLAHd3110p2bku+tzUB3iHcTeW744rFuxDg"}}, "unsigned": {"age_ts": 1570040672408}} K | J  Z( P  n V $ 8< \ *p>BzHNT"tb0h6jEP22YF1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IF1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YO1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM31e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM21e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM11e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM01e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YN1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YM1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE 1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE 1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMb1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMa1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM`1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IH1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IG1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI1e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAq1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAp1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAo1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM_1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0S1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc '1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc &1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc %1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewX1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewW1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewV1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYv1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYu1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYt1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ 1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUF1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUE1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUD1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA^1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA]1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA\1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgL1e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI1e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI " F Q v % *R] Jrw,rYQ))e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8oXQ? e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibility$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0gWQ/ e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rules$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6UlVQ9 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_alias$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggiUQ3 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA TQ']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYcSQ' e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.create$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0oRQ? e!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibility$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUgQQ/ e!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rules$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssiPQ3 e!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM OQ']e!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQcNQ' e!msMfSdLIAvklSSAnci:localhost:8800m.room.create$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8ooMQ? e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibility$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkgLQ/ e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rules$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0iKQ3 e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q JQ']e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-EcIQ' e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.create$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-KnlsiHQ3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$p3RSvJIioUnzTwblOB7REnaofAZlyDRqAbdOrVDoJOIiGQ3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUiFQ3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ EQ']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8rDQ))e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIoCQ? e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibility$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduogBQ/ e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rules$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gglAQ9 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_alias$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8si@Q3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE ?Q']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Ac>Q' e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.create$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4i=Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$oz9r46kXP9Bvvaw9ic4EMGz4-VdNDgAs-aEjevRH60Qi<Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tsi;Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8 :Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYr9Q))e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUo8Q? e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibility$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg #W, ; d  " T]!*Ra"?NWgBeQ3 $rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels AeQ']$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800a@eQ' $UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800m.room.create ?eQ']$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800p>eQ))$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800m=eQ? $qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibilitye<eQ/ $Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rulesj;eQ9 $LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_aliasg:eQ3 $cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels 9eQ']$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800a8eQ' $Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.createm7eQ? $neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibilitye6eQ/ $A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rulesg5eQ3 $4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels 4eQ']$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800a3eQ' $2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800m.room.createm2eQ? $vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibilitye1eQ/ $5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rulesg0eQ3 $Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels /eQ']$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800a.eQ' $5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800m.room.createg-eQ3 $NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levelsg,eQ3 $Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels +eQ']$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800p*eQ))$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800m)eQ? $uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibilitye(eQ/ $7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rulesj'eQ9 $_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_aliasg&eQ3 $NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels %eQ']$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800a$eQ' $ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800m.room.createg#eQ3 $HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levelsg"eQ3 $ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels !eQ']$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800p eQ))$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800 j 'Ij[UeQ_E$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 470}{"auth_events": ["$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8"], "type": "m.room.power_levels", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"events_default": 0, "kick": 25, "state_default": 50, "events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.canonical_alias": 50}, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040677360, "hashes": {"sha256": "pjtY19fZK+zAdchav1eHYYKkiyPYJBIEZ0gYnPpX/LU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Je+hFKEsBvi7L7eoT9Kf0vjJy8WAMqK+qd24gSyAruN+d6qBj6niqJxd9I+E7wRSR645rGA8QUQeDAwMRslLCA"}}, "unsigned": {"age_ts": 1570040677360, "replaces_state": "$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8"}}ZTeQ_C$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 469}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY"], "type": "m.room.power_levels", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50}, "redact": 50, "ban": 50, "invite": 0, "users_default": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040676680, "hashes": {"sha256": "nN5ksE+Cw78WktVTJnM6MED4T95upa4Mlmtis1VUuIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2bIlV5kmZEskpHWC5XeAvAY0aXf1o8yTTr+leNcSV8ml1pOV9+qJAZXdY+EfnKvcE1R4bqkZJ/rSXdxcHPqSAA"}}, "unsigned": {"age_ts": 1570040676680, "replaces_state": "$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto"}}USeQ_9$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 141, "stream_ordering": 468}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY"], "prev_events": ["$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU"], "type": "m.room.member", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040675859, "hashes": {"sha256": "X7SBzSAuDvOwkxPcIcYzTASBML4ILEHZ+IE/bUBB0E0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ghj3d4/CPX3NuliOyBxXDHh40v19iPQqWSXNlDVoiigCzuzrIp+qzo4/fu/imaO8gE2s2XzlIaYRVjZaRAQpDg"}}, "unsigned": {"age_ts": 1570040675859}} a} { y w u sqomkigeca~CeeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800~BeeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~AeeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~@eeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~?eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800~>eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~=eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~<eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~;eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~:eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~9eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~8eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~7eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~6eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~5eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~4eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~3eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~2eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~1eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~0eeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~/eeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~.eeQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~-eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~,eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~+eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800~*eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~)eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~(eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~'eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800~&eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~%eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800 !h S \   Bhk Ce_h IQ']e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gdHQ' e !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg GQ']e !HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYsFQ))e !HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUpEQ? e!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibility$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQhDQ/ e!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rules$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYmCQ9 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_alias$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAjBQ3 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM AQ']e!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8d@Q' e!HcMGemcRrLnLprOJJR:localhost:8800m.room.create$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo ?Q']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEs>Q))e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8p=Q? e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibility$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0h<Q/ e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rules$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Um;Q9 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_alias$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggj:Q3 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA 9Q']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYd8Q' e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.create$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0p7Q? e!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibility$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUh6Q/ e!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rules$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssj5Q3 e!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM 4Q']e!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQd3Q' e!msMfSdLIAvklSSAnci:localhost:8800m.room.create$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8op2Q? e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibility$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkh1Q/ e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rules$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0j0Q3 e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q /Q']e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Ed.Q' e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.create$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls-Q3 ee!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ,Q3 ee!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE +Q']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8s*Q))e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIp)Q? e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibility$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo )Ve:c>}R' { P % y N # 8g<q@i w L ! uFoDmBk J  s H  c*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d d*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 c c*Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' '*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!KIHYKMzkRDrJwiywwz:localhost:8800 : :*Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 9*Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 8*Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 7*Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 6*Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 5*Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 4*Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 3*Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 2*Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 1*Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 0*Q!KIHYKMzkRDrJwiywwz:localhost:8800 / /*Q!KIHYKMzkRDrJwiywwz:localhost:8800 . .*Q!KIHYKMzkRDrJwiywwz:localhost:8800 - -*Q!KIHYKMzkRDrJwiywwz:localhost:8800 , ,*Q!KIHYKMzkRDrJwiywwz:localhost:8800 + +*Q!KIHYKMzkRDrJwiywwz:localhost:8800 * **Q!KIHYKMzkRDrJwiywwz:localhost:8800 ) )*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 V*Q!JiUawCFQnodcpssOfK:localhost:8800 V W "CWh`eQ__$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 481}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-114:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040686471, "hashes": {"sha256": "NbhWT3aVTUMg4vfSa01WCBtqeAXoIW4sL6JANg4Avao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ahytYMHtmWAD/4qUT+TxbpLopsA9DfvidXwTLkP/Shl2f12pnCkCwyzScko/gpjvZMJ3Th+AlrrnRsfFdPdqDQ"}}, "unsigned": {"age_ts": 1570040686471}}[_eQ_E$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 480}{"auth_events": ["$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ"], "type": "m.room.power_levels", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "redact": 25, "invite": 0, "ban": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.canonical_alias": 50}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040685263, "hashes": {"sha256": "UVfd2FrEaTUssb1+3ptzBDUctkIJTGthgFmrwJZZqfc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zqw4RGdDw4TZ7eSHcqdjxEVjojC2D2GOHfkNYZw3hPfiCvaUkbIk8UvrUpit5WJJ8ovy/nFXScMOm1ZWkc4GBw"}}, "unsigned": {"age_ts": 1570040685263, "replaces_state": "$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ"}}Z^eQ_C$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 479}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8"], "type": "m.room.power_levels", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "ban": 50, "invite": 0, "redact": 50, "events": {"m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040684638, "hashes": {"sha256": "HQ2UwQMIaA1F1itm4dFEugV4mJ4wIPPMngf9eBlnO2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LHlbBv5DJ8n0FLR4zARKEAEdLyfcqB2ctf0RrrvRiI6cCO/mMoERo8vO98qwnWg1oO0NmLg7mh52aJLs6xGOBQ"}}, "unsigned": {"age_ts": 1570040684638, "replaces_state": "$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE"}} a} { y w u sqomkigeca~beeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~aeeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~`eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~_eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~^eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~]eeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~\eeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~[eeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~ZeeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~YeeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~XeeQ$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~WeeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800~VeeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~UeeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800~TeeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800~SeeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~ReeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800~QeeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800~PeeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~OeeQ$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~NeeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800~MeeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~LeeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800~KeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800~JeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~IeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800~HeeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800~GeeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~FeeQ$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~EeeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~DeeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800 ~z v r n j fb^ZVRNJFGeeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800FeeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800EeeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800DeeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800CeeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800BeeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800AeeQ$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800@eeQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800?eeQ$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800>eeQ$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800=eeQ$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800<eeQ$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800;eeQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800:eeQ$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:88009eeQ$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:88008eeQ$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:88007eeQ$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:88006eeQ$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:88005eeQ$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:88004eeQ$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:88003eeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:88002eeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:88001eeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:88000eeQ$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800/eeQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800.eeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800-eeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800,eeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800+eeQ$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800*eeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48Cwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR3U3A3TUhYfnBhPV5YLH4KMDAyZnNpZ25hdHVyZSAvfXoK5cLowkEwFacOTLTOKnWnFL1vaxZ2eDRCM6QvbQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEIjZDNkYWZqQ3YjJipPNHUKMDAyZnNpZ25hdHVyZSBflUd8wD7C3GL0vPhtx6UvSnD7Yx4lQbVrhQjPOkB8Bwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlCYk5kMHZueFlwRS1SdS4KMDAyZnNpZ25hdHVyZSAQ9iRcidiF5PYiJqsN0NvRlFCfmgqacVu3ZWNUC6AdHgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0Ao -RM H C > 9 4/*|%w rmhc TsQe!CQKLQUpSYakhxVDltC:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9DisTrQe!CQKLQUpSYakhxVDltC:localhost:8800$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKsTqQe!GwXGurbyEmykmmHcHJ:localhost:8800$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYTpQe!VWYMJxEviBNDdJCuKT:localhost:8800$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsToQe!GwXGurbyEmykmmHcHJ:localhost:8800$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OoTnQe!VWYMJxEviBNDdJCuKT:localhost:8800$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYTmQe!GwXGurbyEmykmmHcHJ:localhost:8800$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgTlQe!VWYMJxEviBNDdJCuKT:localhost:8800$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0TkQe!GwXGurbyEmykmmHcHJ:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsTjQe!VWYMJxEviBNDdJCuKT:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsTiQe!GwXGurbyEmykmmHcHJ:localhost:8800$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQThQe!VWYMJxEviBNDdJCuKT:localhost:8800$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VATgQe!CgVBWWcRJoHEcwoLcq:localhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUTfQe!CgVBWWcRJoHEcwoLcq:localhost:8800$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4TeQe!CgVBWWcRJoHEcwoLcq:localhost:8800$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8ITdQe!CgVBWWcRJoHEcwoLcq:localhost:8800$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZATcQe!CgVBWWcRJoHEcwoLcq:localhost:8800$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMTbQe!CgVBWWcRJoHEcwoLcq:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gTaQe!CgVBWWcRJoHEcwoLcq:localhost:8800$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgT`Qe!HcMGemcRrLnLprOJJR:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYT_Qe!HcMGemcRrLnLprOJJR:localhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUT^Qe!HcMGemcRrLnLprOJJR:localhost:8800$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQT]Qe!HcMGemcRrLnLprOJJR:localhost:8800$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYT\Qe!HcMGemcRrLnLprOJJR:localhost:8800$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAT[Qe!HcMGemcRrLnLprOJJR:localhost:8800$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMTZQe!HcMGemcRrLnLprOJJR:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8TYQe!HcMGemcRrLnLprOJJR:localhost:8800$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExoTXQe!SyIWYOmcGiASNkPCTB:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnETWQe!SyIWYOmcGiASNkPCTB:localhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8TVQe!SyIWYOmcGiASNkPCTB:localhost:8800$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0TUQe!SyIWYOmcGiASNkPCTB:localhost:8800$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6UTTQe!SyIWYOmcGiASNkPCTB:localhost:8800$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggTSQe!SyIWYOmcGiASNkPCTB:localhost:8800$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LATRQe!SyIWYOmcGiASNkPCTB:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYTQQe!SyIWYOmcGiASNkPCTB:localhost:8800$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0TPQe!msMfSdLIAvklSSAnci:localhost:8800$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUTOQe!msMfSdLIAvklSSAnci:localhost:8800$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssTNQe!msMfSdLIAvklSSAnci:localhost:8800$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMTMQe!msMfSdLIAvklSSAnci:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQTLQe!msMfSdLIAvklSSAnci:localhost:8800$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8oTKQe!GgUNbVXspVTpOlaHBl:localhost:8800$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkTJQe!GgUNbVXspVTpOlaHBl:localhost:8800$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0TIQe!GgUNbVXspVTpOlaHBl:localhost:8800$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8QTHQe!GgUNbVXspVTpOlaHBl:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-ETGQe!GgUNbVXspVTpOlaHBl:localhost:8800$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls  deQ_$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 485}{"auth_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q", "$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0"], "type": "m.room.history_visibility", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040689776, "hashes": {"sha256": "UmaFFR3FVLE4yA6IA8vgfpg5/Pq6wm/kwoeqwELejus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BRxo+KOX/CLxgFlANg0jHo3LCaWtA6ic0UqOGfdDfoeNEbbkQNtgXO5eTUzKULJRo9BuBHSJywT/jxP9AmLGBA"}}, "unsigned": {"age_ts": 1570040689776}}sceQ_u$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 484}{"auth_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q", "$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q"], "type": "m.room.join_rules", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040689175, "hashes": {"sha256": "nFREtLDYwAuA7dQcsmey2eG68I9t+z22rVmGcxJb7ss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HyomZR1gFSV9fDoKgABmVNJmzgN51lvxB8rRSXwYwcgmW1QtKPVyJnrE21LbZm8TliTVS3hhQktuELrRJLEbCg"}}, "unsigned": {"age_ts": 1570040689175}}jbeQ_c$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 483}{"auth_events": ["$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "type": "m.room.power_levels", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"users": {"@anon-20191002_181700-114:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040687627, "hashes": {"sha256": "jrymdHNoitiAj/yWt9hw0p2e1CVClmry8cruET7oXYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Px8u18+1/xRMzVwLny8r1u+HCFvzb82pXI20CosslUGq5WSF05BZqqgUPYZhrsxvXtlT8z3Y0UnGbL5A0TXpAw"}}, "unsigned": {"age_ts": 1570040687627}}uaeQ_y$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 482}{"auth_events": ["$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls"], "prev_events": ["$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls"], "type": "m.room.member", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-114", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-114:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040687080, "hashes": {"sha256": "XAY23LYeODRuzeuWFPZc3LY35yEfxYFddQSkYtwwl+I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GsMc70wl+swdIkwljfQGieiEBQgUKAnLrK9YEjwFcelyeYt36U6gJRK06X3+EvFxCk3x77ugqasdtbiKDCtgBw"}}, "unsigned": {"age_ts": 1570040687080}} j\ Z  o  m#~4EV jy e'Q  ]$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0m.room.create!SyIWYOmcGiASNkPCTB:localhost:8800mm7@anon-20191002_181700-116:localhost:8800!xe)Q ]$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMm.room.message!msMfSdLIAvklSSAnci:localhost:8800mmI@anon-20191002_181700-115:localhost:8800!we)Q ]$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Qm.room.message!msMfSdLIAvklSSAnci:localhost:8800mm@anon-20191002_181700-115:localhost:8800!ve)Q ]$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFIm.room.message!msMfSdLIAvklSSAnci:localhost:8800m(m2@anon-20191002_181700-115:localhost:8800!ue)Q ]$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYm.room.message!msMfSdLIAvklSSAnci:localhost:8800mݦmݯ@anon-20191002_181700-115:localhost:8800!te)Q ]$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQm.room.message!msMfSdLIAvklSSAnci:localhost:8800mm@anon-20191002_181700-115:localhost:8800!se)Q ] $qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Ym.room.message!msMfSdLIAvklSSAnci:localhost:8800 m2m8@anon-20191002_181700-115:localhost:8800!re)Q ] $FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDom.room.message!msMfSdLIAvklSSAnci:localhost:8800 meml@anon-20191002_181700-115:localhost:8800!qe)Q ] $PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4m.room.message!msMfSdLIAvklSSAnci:localhost:8800 m?mE@anon-20191002_181700-115:localhost:8800!pe)Q ] $eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gm.room.message!msMfSdLIAvklSSAnci:localhost:8800 mm@anon-20191002_181700-115:localhost:8800!oe)Q ] $Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJAm.room.message!msMfSdLIAvklSSAnci:localhost:8800 mymс@anon-20191002_181700-115:localhost:8800!ne)Q ]$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4m.room.message!msMfSdLIAvklSSAnci:localhost:8800mBmJ@anon-20191002_181700-115:localhost:8800!me)Q ]$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4m.room.message!msMfSdLIAvklSSAnci:localhost:8800mm@anon-20191002_181700-115:localhost:8800!le)Q ]$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUm.room.message!msMfSdLIAvklSSAnci:localhost:8800mZma@anon-20191002_181700-115:localhost:8800,ke?Q ]$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUm.room.history_visibility!msMfSdLIAvklSSAnci:localhost:8800mcm@anon-20191002_181700-115:localhost:8800$je/Q ]$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssm.room.join_rules!msMfSdLIAvklSSAnci:localhost:8800m!m @anon-20191002_181700-115:localhost:8800&ie3Q ]$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMm.room.power_levels!msMfSdLIAvklSSAnci:localhost:8800m,m@anon-20191002_181700-115:localhost:8800 he'Q ]$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQm.room.member!msMfSdLIAvklSSAnci:localhost:8800mmt@anon-20191002_181700-115:localhost:8800g e'Q  ]$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8om.room.create!msMfSdLIAvklSSAnci:localhost:8800mm'@anon-20191002_181700-115:localhost:8800!fe)Q ]$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUm.room.message!GgUNbVXspVTpOlaHBl:localhost:8800mm"@anon-20191002_181700-114:localhost:8800,ee?Q ]$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkm.room.history_visibility!GgUNbVXspVTpOlaHBl:localhost:8800mpmD@anon-20191002_181700-114:localhost:8800$de/Q ]$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0m.room.join_rules!GgUNbVXspVTpOlaHBl:localhost:8800mm@anon-20191002_181700-114:localhost:8800&ce3Q ]$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Qm.room.power_levels!GgUNbVXspVTpOlaHBl:localhost:8800m m @anon-20191002_181700-114:localhost:8800 be'Q ]$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Em.room.member!GgUNbVXspVTpOlaHBl:localhost:8800mm>@anon-20191002_181700-114:localhost:8800 ~}wqke_YSMGA;5/)# {uoic]WQKE?93-'!   y s m g a [ U O I B ; 4 - &     | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $   |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tl~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML~K}J|I{HzGyFxEwDvCuBtAs@r?q>p=o<n;m:l9k8j7i6h5g4f3e2d1c0b/a.`-_,^+]*\)[(Z'Y&X%W$V#U"T!S RQPONMLKJIHGFEDCBA@ ? > = < ;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvut~s}r|q{pzoynxmvluktjsirhpgofnemdlcjbiah`g_f^d]c\b[aZ`Y^X]W\V[UZTYSXRWQVPUOTNSMRLQKPJOINHMGLFKEJDICHBGAF@E?D>C=B<A;@:?9>8=7<6;5:4938271604/3.2-1,0+.*-),(+'*&(%'$&#%"$!" !         e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543~2}1|0{/z.y-x,w+v*u)t(s'r&q%p$o#n"m!l kjihgfedcba`_^]\[ZY X W V U TSRQPONMLKJIHGFEDCBA@?>=<;:9743210/.-,+*&%$#"!    3210/.-,+*)('&%$#"!        c wjheQ_c$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 489}{"auth_events": ["$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "type": "m.room.power_levels", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"users": {"@anon-20191002_181700-115:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040693036, "hashes": {"sha256": "O4YfoSFAUjKgLjLwFZvsHp4SiQ79RY4kLyPvFQJoges"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vcEPmODb/FDrZpJVZYkaMaze7uoHeCQ79LCK72o4gggpD83YnLRuCxFS/ZsibXM3yBuYnmhDVHEfRJ0m28m8Cw"}}, "unsigned": {"age_ts": 1570040693036}}ugeQ_y$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 488}{"auth_events": ["$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o"], "prev_events": ["$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o"], "type": "m.room.member", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-115", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-115:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040692507, "hashes": {"sha256": "VlHlXr4eX8MtQjN2VmsyIXsdrn8ea+w0boOrg0x2KN0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iBd2TvLd+ATNT8Gu8l64QG+2Oy9MDfaLtY9NaZjHec85s2wElDA12ALVTAHnuoNGMf+9E0YxuFxEyor43KhmDA"}}, "unsigned": {"age_ts": 1570040692507}}hfeQ__$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 487}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-115:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040691920, "hashes": {"sha256": "LUZjhfZPxh1wEHor4K7Cvl1priKnbOSPqQELzV8Lwcs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6Xhy8x0m/NEVW92FM8X1skxSYyHVG+45Q8rFEEKM7X+eUOVmcheAg4T9iN0t+AglyCU9ZfTTB/EUHWmOvpsMCA"}}, "unsigned": {"age_ts": 1570040691920}}eeQ!$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "txn_id": "42", "stream_ordering": 486}{"auth_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q", "$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk"], "type": "m.room.message", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"msgtype": "m.message", "body": "Room message for 90jira-SYT-1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040690972, "hashes": {"sha256": "W5hPX0DmS9GXJrKnp18b7U2L6f83VbyTvqRDolHEyYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/69JVSGLlbRFJv6CeD/N3mZ38m63u9MwVq68JVAuRWx1jQKS6L+DxAyzrfJq/CTDKrVrRlUa4yU0z5PS5JlLBw"}}, "unsigned": {"age_ts": 1570040690972}} 6Rv1b N  : k & W  3dP <m(YCn'R }E6]=@anon-20191002_181700-110:localhost:8800anon-20191002_181700-110E5]=@anon-20191002_181700-109:localhost:8800anon-20191002_181700-109E4]=@anon-20191002_181700-108:localhost:8800anon-20191002_181700-108E3]=@anon-20191002_181700-107:localhost:8800anon-20191002_181700-107E2]=@anon-20191002_181700-106:localhost:8800anon-20191002_181700-106E1]=@anon-20191002_181700-104:localhost:8800anon-20191002_181700-104E0]=@anon-20191002_181700-102:localhost:8800anon-20191002_181700-102E/]=@anon-20191002_181700-101:localhost:8800anon-20191002_181700-101C.[;@anon-20191002_181700-99:localhost:8800anon-20191002_181700-99C-[;@anon-20191002_181700-97:localhost:8800anon-20191002_181700-97C,[;@anon-20191002_181700-95:localhost:8800anon-20191002_181700-95C+[;@anon-20191002_181700-93:localhost:8800anon-20191002_181700-93C*[;@anon-20191002_181700-91:localhost:8800anon-20191002_181700-91C)[;@anon-20191002_181700-89:localhost:8800anon-20191002_181700-89C([;@anon-20191002_181700-87:localhost:8800anon-20191002_181700-87C'[;@anon-20191002_181700-86:localhost:8800anon-20191002_181700-86C&[;@anon-20191002_181700-85:localhost:8800anon-20191002_181700-85C%[;@anon-20191002_181700-84:localhost:8800anon-20191002_181700-84C$[;@anon-20191002_181700-83:localhost:8800anon-20191002_181700-83C#[;@anon-20191002_181700-82:localhost:8800anon-20191002_181700-82C"[;@anon-20191002_181700-81:localhost:8800anon-20191002_181700-81C![;@anon-20191002_181700-79:localhost:8800anon-20191002_181700-79C [;@anon-20191002_181700-77:localhost:8800anon-20191002_181700-77C[;@anon-20191002_181700-75:localhost:8800anon-20191002_181700-75C[;@anon-20191002_181700-74:localhost:8800anon-20191002_181700-74C[;@anon-20191002_181700-71:localhost:8800anon-20191002_181700-71C[;@anon-20191002_181700-72:localhost:8829anon-20191002_181700-72C[;@anon-20191002_181700-70:localhost:8800anon-20191002_181700-70C[;@anon-20191002_181700-68:localhost:8800anon-20191002_181700-68O[3-@anon-20191002_181700-66:localhost:8829My remote name heremxc://foo/remoteE[%'@anon-20191002_181700-67:localhost:8800My name heremxc://foo/barC[;@anon-20191002_181700-64:localhost:8800anon-20191002_181700-64E[%'@anon-20191002_181700-65:localhost:8800My name heremxc://foo/barC[;@anon-20191002_181700-63:localhost:8800anon-20191002_181700-63C[;@anon-20191002_181700-62:localhost:8800anon-20191002_181700-62C[;@anon-20191002_181700-61:localhost:8800anon-20191002_181700-61C[;@anon-20191002_181700-39:localhost:8800anon-20191002_181700-39C[;@anon-20191002_181700-38:localhost:8800anon-20191002_181700-38C[;@anon-20191002_181700-37:localhost:8800anon-20191002_181700-37C[;@anon-20191002_181700-36:localhost:8800anon-20191002_181700-36C[;@anon-20191002_181700-35:localhost:8800anon-20191002_181700-35C [;@anon-20191002_181700-34:localhost:8800anon-20191002_181700-34C [;@anon-20191002_181700-33:localhost:8800anon-20191002_181700-33C [;@anon-20191002_181700-32:localhost:8800anon-20191002_181700-32C [;@anon-20191002_181700-31:localhost:8800anon-20191002_181700-31C [;@anon-20191002_181700-27:localhost:8800anon-20191002_181700-27C[;@anon-20191002_181700-26:localhost:8800anon-20191002_181700-26C[;@anon-20191002_181700-25:localhost:8800anon-20191002_181700-25C[;@anon-20191002_181700-24:localhost:8800anon-20191002_181700-24C[;@anon-20191002_181700-22:localhost:8800anon-20191002_181700-22C[;@anon-20191002_181700-23:localhost:8800anon-20191002_181700-23C[;@anon-20191002_181700-21:localhost:8800anon-20191002_181700-21C[;@anon-20191002_181700-20:localhost:8800anon-20191002_181700-20C[;@anon-20191002_181700-16:localhost:8800anon-20191002_181700-16 /Br+V : m&Q |5`Do( x 1 = O  z Al%G9E]]=@anon-20191002_181700-160:localhost:8800anon-20191002_181700-160E\]=@anon-20191002_181700-158:localhost:8800anon-20191002_181700-158E[]=@anon-20191002_181700-156:localhost:8800anon-20191002_181700-156EZ]=@anon-20191002_181700-154:localhost:8800anon-20191002_181700-154EY]=@anon-20191002_181700-153:localhost:8800anon-20191002_181700-153EX]=@anon-20191002_181700-152:localhost:8800anon-20191002_181700-152EV]=@anon-20191002_181700-150:localhost:8800anon-20191002_181700-150EW]=@anon-20191002_181700-151:localhost:8800anon-20191002_181700-151ET]=@anon-20191002_181700-147:localhost:8829anon-20191002_181700-147ES]=@anon-20191002_181700-148:localhost:8829anon-20191002_181700-148ER]=@anon-20191002_181700-146:localhost:8800anon-20191002_181700-146EQ]=@anon-20191002_181700-144:localhost:8800anon-20191002_181700-144EP]=@anon-20191002_181700-143:localhost:8800anon-20191002_181700-143EO]=@anon-20191002_181700-141:localhost:8800anon-20191002_181700-141EN]=@anon-20191002_181700-140:localhost:8800anon-20191002_181700-140EM]=@anon-20191002_181700-139:localhost:8829anon-20191002_181700-139EL]=@anon-20191002_181700-138:localhost:8800anon-20191002_181700-138EK]=@anon-20191002_181700-137:localhost:8800anon-20191002_181700-137EJ]=@anon-20191002_181700-136:localhost:8800anon-20191002_181700-136EI]=@anon-20191002_181700-134:localhost:8800anon-20191002_181700-134EH]=@anon-20191002_181700-132:localhost:8800anon-20191002_181700-132EG]=@anon-20191002_181700-131:localhost:8800anon-20191002_181700-131EF]=@anon-20191002_181700-129:localhost:8800anon-20191002_181700-129E9]=@anon-20191002_181700-114:localhost:8800anon-20191002_181700-114E8]=@anon-20191002_181700-113:localhost:8800anon-20191002_181700-113E7]=@anon-20191002_181700-112:localhost:8800anon-20191002_181700-112Eg]=@anon-20191002_181700-167:localhost:8800anon-20191002_181700-167Ef]=@anon-20191002_181700-166:localhost:8829anon-20191002_181700-166Ee]=@anon-20191002_181700-165:localhost:8800anon-20191002_181700-165d/@6:localhost:8800creeperEc]=@anon-20191002_181700-164:localhost:8800anon-20191002_181700-164Eb]=@anon-20191002_181700-163:localhost:8800anon-20191002_181700-163Ea]=@anon-20191002_181700-162:localhost:8800anon-20191002_181700-162`/@3:localhost:88003E_]=@anon-20191002_181700-161:localhost:8800anon-20191002_181700-161^/@2:localhost:88002EE]=@anon-20191002_181700-128:localhost:8800anon-20191002_181700-128EC]=@anon-20191002_181700-126:localhost:8800anon-20191002_181700-126EB]=@anon-20191002_181700-125:localhost:8800anon-20191002_181700-125EA]=@anon-20191002_181700-124:localhost:8800anon-20191002_181700-124E@]=@anon-20191002_181700-123:localhost:8800anon-20191002_181700-123E?]=@anon-20191002_181700-120:localhost:8800anon-20191002_181700-120E>]=@anon-20191002_181700-119:localhost:8800anon-20191002_181700-119E=]=@anon-20191002_181700-118:localhost:8800anon-20191002_181700-118E<]=@anon-20191002_181700-117:localhost:8800anon-20191002_181700-117E;]=@anon-20191002_181700-116:localhost:8800anon-20191002_181700-116E:]=@anon-20191002_181700-115:localhost:8800anon-20191002_181700-115  t leQ$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "44", "stream_ordering": 493}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040696275, "hashes": {"sha256": "7QbgyqakuVftck+gyfhlqzIYLYjDygw31bLAcvPSDsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JYuvbtjIm2Ydic6otoob5fwV0fiyKXyUmM0AHNO4pCk8YH5ZXJNSGlBhn8YBhOaVx1jFO6xiBFNbnSzF2GtxAw"}}, "unsigned": {"age_ts": 1570040696275}} keQ$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "43", "stream_ordering": 492}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 0", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040695898, "hashes": {"sha256": "3rLhbjulUXptak8GGSXyJxGv4CpvRFUDx3jglcNJDas"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SXZ8aI4nZQRePorx0iniVnDYkEVXkhAXwJdf6Rm7CGGjtFX7ybeXjOdJDANSQY+iyBoRYzNj8uFC2SrW0W5nBA"}}, "unsigned": {"age_ts": 1570040695898}}jeQ_$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 491}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss"], "type": "m.room.history_visibility", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040694627, "hashes": {"sha256": "M9v7JKr7wiZb/N0Lfav5o2y2TdprmEQMNPhoUGENAsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ll97nI19x9KmSr3Pbyp/rF+bMSZ++bvcbdPS3TPsRK9yK9dvs4LUqpTaNVwVyP5hAIOlVZmfiXiiGAi7HL+ABQ"}}, "unsigned": {"age_ts": 1570040694627}}sieQ_u$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 490}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM"], "type": "m.room.join_rules", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040693793, "hashes": {"sha256": "nuBnw8FPF8FVqQHO5brF8MpSMfXOPJxP4paITX0FUwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KoxVd5bQOeYTeRZEciV3MuDtWJYp1KKdybUsCFG5cEmr/NG+llggTgF3s2w7wJTc45JbvGvS6yjQWYj4I0uWCQ"}}, "unsigned": {"age_ts": 1570040693793}} ,NC 8 - { " p  e ZOD9.|#qf VeL$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQsha256GfF oUYLWVeL$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAsha2566s#&{&aM!'PVeL$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUsha256w|k\ЬYND$"!~۶bVeL$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4sha256DIP^"I$ɡQjcOFE/VeL$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8Isha256o2>I~4$t$3}pnÿ g#VeL$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAsha256>\a9mg]as 8`')UVeL$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMsha256BCIFɰO>./RۛH}1ރV eL$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gsha256^zCL/P$+lT)wxV eL$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgsha256 Z]-V>ϐ8XM3%Cf5 &XV eL$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcsha256A%jk<݊_Vu6qv'8 yF&GV eL$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4ksha256!f ~F>7x¹дb{V eL$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYsha256T'GEcT3T1fVeL$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcsha256Br;pA*$>>+ΦDh 흘^VeL$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ysha256ɈˑYa>%4pz cFVeL$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEsha2567ּV羱f+u]sOrbWqV~eL$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8sha256 >0&Xu|Ybͦwk* V}eL$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0sha256ZK p)w&WjV|eL$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Usha256*7&s ncue˷˵F}ǥV{eL$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggsha256-9._2UP|k =MVzeL$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAsha256qb4Oږ+d ^̺jWذVyeL$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYsha256gō},zۙi/ݱ&VxeL$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0sha256C3 =C[^ksn_qVweL$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMsha256@dtd*kؿ)<.RxĶ8#VveL$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Qsha256fDr!AڋRtkVueL$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFIsha256^ Nd`>oIn_.ؼ|RVteL$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYsha256Ы"~'p#抖DdVseL$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQsha256@ uPM^a"A]@v ?Я/4VreL$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Ysha256'ń[I4Yh޹ƁI骏tVqeL$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDosha256 k [*&2t[wKX96^,:VpeL$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4sha256=C5fSc&wk (LVoeL$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gsha256xC~ Er3Xp{VneL$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJAsha256 M3 &MX<&dq]%VmeL$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4sha256s;0ۥJ nVleL$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4sha256j~!L07A.5Z{M}[0ZnVkeL$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUsha256 XO|5n\]M33}AEVjeL$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUsha256i|&jnUb>uBbiql%VieL$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcsssha256yA'݄|bpHc r #S(3 \   ! Lity 4]hm3Sm:eQ? $bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibilitym9eQ? $wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibilitye8eQ/ $RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rulese7eQ/ $-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rulesg6eQ3 $s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levelsg5eQ3 $DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels 4eQ']$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800join 3eQ']$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800joina2eQ' $46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800m.room.createa1eQ' $NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800m.room.createp0eQ))$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800m/eQ? $REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibilitye.eQ/ $bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rulesj-eQ9 $FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_aliasg,eQ3 $Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels +eQ']$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800joina*eQ' $DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create )eQ']$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800joinp(eQ))$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800m'eQ? $BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibilitye&eQ/ $lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rulesj%eQ9 $ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_aliasg$eQ3 $rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels #eQ']$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800joina"eQ' $UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800m.room.create !eQ']$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800joinp eQ))$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800meQ? $qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibilityeeQ/ $Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rulesjeQ9 $LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_aliasgeQ3 $cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels eQ']$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800joinaeQ' $Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.createmeQ? $neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibilityeeQ/ $A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rules  sX peQ$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "48", "stream_ordering": 497}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040698175, "hashes": {"sha256": "/IKxPw1EppCz+VIDoNlaKz32xL3tyLLu/P+F4AnHaek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e+faJGGKwyJAs1NVFK/7uK8nZZZRVLXoJ8KJ7i5hfDSupFUD8FNPM1OMA36YB024FE2oteoZeLq3nfSYEzyDBA"}}, "unsigned": {"age_ts": 1570040698175}} oeQ$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "47", "stream_ordering": 496}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040697592, "hashes": {"sha256": "jdsO0wWuzWsQ4j2zaLHlLx6PJWq+5LPiFmKvfYGwdCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G408NhQ8lYq4a8Y5q/jiOsr9C6ePgjTRbO2/+RXV7XTafTGho94wMPukoMgjyXgTIWXqbX2I4ZCb+eihtXrDAQ"}}, "unsigned": {"age_ts": 1570040697592}} neQ$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "46", "stream_ordering": 495}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 3"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040697209, "hashes": {"sha256": "4ZNA04OCvimAAO+RFXJqkQxOfXxbLloZJlYNzC4UUww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/dLZ+VOZp2/Ir5RcrK+xSKr5P9vBT9EWQWvbVgIRWerJoghp9IpTG9XGx16IYxQ6oGk0x3Nq7zFTGHkoKoZfAg"}}, "unsigned": {"age_ts": 1570040697209}} meQ$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "45", "stream_ordering": 494}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040696642, "hashes": {"sha256": "eFBv39wQPF5FFeGxC06db0kd64xDbE9Q3O//RYTtMOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aI33r4dkBFVlxOTeIwn9YdNIKc3oRXFHAQvdy51z+hQkwNRIXfkY43+Rtq5qIO30TWhmvtHYDwy+yojarEh4Cg"}}, "unsigned": {"age_ts": 1570040696642}}  |t l  d4 \ T < LD,$ eeQ$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829ceeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800teeQ$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800VeeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU!xXYMxashIZAUOTuGAJ:localhost:8800}eeQ$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800ȁeeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800 0eeQ$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800 ÁeeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800 beeQ$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800ZeeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800eeQ$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800ŁeeQ$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800 6eeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800ՁeeQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800 ƁeeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829aeeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800 %eeQ$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800 ; g qSghxeQ__$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 505}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-116:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040703208, "hashes": {"sha256": "7JLxh+hHgxeg3dGxoEs6c29Wl6ogeh4/326LnXLp+Xg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Boi7DRfadj4IDOeF5QWpwhScBe5ypWUSrGR7q87KBn/2CtAbyUkdwoulJ7sdmAxhiCBHzWU0eGzyedUr0vBMAA"}}, "unsigned": {"age_ts": 1570040703208}} weQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "55", "stream_ordering": 504}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 12"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040701919, "hashes": {"sha256": "o5hwxEyL7gLAVEJg63qP6chQEtIp2f9DsvNtJtbNXTc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2maH/3qKWSIBvYHLrh9xkr51gAsMprJZuuqnVo5appJrd0QqbNFFuzj0ijOvcoh9z24fgpo0wsWdFpuGWTNbAg"}}, "unsigned": {"age_ts": 1570040701919}} veQ$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "54", "stream_ordering": 503}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 11", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040701367, "hashes": {"sha256": "MVuGmqLF2/3EGt/KaYoELre5KP23I+Gr96LIpyW9/1I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MEyEVAOqVlPKEdeu99Wt8t/4AS+vdozjvsP/mOlndq5Z//U7LzlOpvXLSfWuUlQb5OFsQa1HUuyCsQJ24a6GCw"}}, "unsigned": {"age_ts": 1570040701367}} ueQ$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "53", "stream_ordering": 502}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040700968, "hashes": {"sha256": "fGNRfkcNasz1+R+voXBDNqlUe48YVGsC+kGoT4LSqGo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zVjtAHVfUJygD6fvi8ApOrwv6/RyO8oJSttpqlGJEIeEHYveiJdmzwS3lUb9rHdO8VIbniehwdWFI6ULBRJxAw"}}, "unsigned": {"age_ts": 1570040700968}} -RM H C > 9 4/*|%w rmhc T Qe!VWYMJxEviBNDdJCuKT:localhost:8800$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04MTQe!GwXGurbyEmykmmHcHJ:localhost:8800$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYTQe!VWYMJxEviBNDdJCuKT:localhost:8800$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsTQe!GwXGurbyEmykmmHcHJ:localhost:8800$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OoTQe!VWYMJxEviBNDdJCuKT:localhost:8800$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYTQe!GwXGurbyEmykmmHcHJ:localhost:8800$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgTQe!VWYMJxEviBNDdJCuKT:localhost:8800$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0TQe!GwXGurbyEmykmmHcHJ:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsTQe!VWYMJxEviBNDdJCuKT:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsTQe!GwXGurbyEmykmmHcHJ:localhost:8800$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQTQe!VWYMJxEviBNDdJCuKT:localhost:8800$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VATQe!CgVBWWcRJoHEcwoLcq:localhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUTQe!CgVBWWcRJoHEcwoLcq:localhost:8800$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4TQe!CgVBWWcRJoHEcwoLcq:localhost:8800$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8ITQe!CgVBWWcRJoHEcwoLcq:localhost:8800$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZATQe!CgVBWWcRJoHEcwoLcq:localhost:8800$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMTQe!CgVBWWcRJoHEcwoLcq:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gTQe !CgVBWWcRJoHEcwoLcq:localhost:8800$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgTQe !HcMGemcRrLnLprOJJR:localhost:8800$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcT Qe !HcMGemcRrLnLprOJJR:localhost:8800$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4kT Qe !HcMGemcRrLnLprOJJR:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYT Qe !HcMGemcRrLnLprOJJR:localhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUT Qe!HcMGemcRrLnLprOJJR:localhost:8800$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQT Qe!HcMGemcRrLnLprOJJR:localhost:8800$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYTQe!HcMGemcRrLnLprOJJR:localhost:8800$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmATQe!HcMGemcRrLnLprOJJR:localhost:8800$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMTQe!HcMGemcRrLnLprOJJR:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8TQe!HcMGemcRrLnLprOJJR:localhost:8800$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExoTQe!SyIWYOmcGiASNkPCTB:localhost:8800$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcTQe!SyIWYOmcGiASNkPCTB:localhost:8800$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0YTQe!SyIWYOmcGiASNkPCTB:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnETQe!SyIWYOmcGiASNkPCTB:localhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8TQe!SyIWYOmcGiASNkPCTB:localhost:8800$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0TQe!SyIWYOmcGiASNkPCTB:localhost:8800$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6UT~Qe!SyIWYOmcGiASNkPCTB:localhost:8800$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggT}Qe!SyIWYOmcGiASNkPCTB:localhost:8800$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAT|Qe!SyIWYOmcGiASNkPCTB:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYT{Qe!SyIWYOmcGiASNkPCTB:localhost:8800$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0TzQe!msMfSdLIAvklSSAnci:localhost:8800$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMTyQe!msMfSdLIAvklSSAnci:localhost:8800$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5QTxQe!msMfSdLIAvklSSAnci:localhost:8800$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFITwQe!msMfSdLIAvklSSAnci:localhost:8800$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYTvQe!msMfSdLIAvklSSAnci:localhost:8800$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQTuQe!msMfSdLIAvklSSAnci:localhost:8800$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-YTtQe!msMfSdLIAvklSSAnci:localhost:8800$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo  rV teQ$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "52", "stream_ordering": 501}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 9", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040700326, "hashes": {"sha256": "jQNNbo9P3h+Qw1DtpAHn7Q9bT3ov6KIufH5Njy3H6SI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h/GUcYIiRRCszRgkX8k2lhrMxFFSr6WMmPzNfNiJUIrCtmHBTvvqNXF3kOySXNlZQHcVqR4DoC959JAu49fUCg"}}, "unsigned": {"age_ts": 1570040700326}} seQ$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "51", "stream_ordering": 500}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040699842, "hashes": {"sha256": "JS5MxBJeQTLztdnLT9ixXYMAnPtkgArjbLXMvUCeD38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/lIpe8Ui79wckolj5Ucbxk4IRzQOQy+79GHrqVSVcq4vklVZR0j5gZ6WsChkruohNvYQxe2Wm7A609p3XnxZBw"}}, "unsigned": {"age_ts": 1570040699842}} reQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "50", "stream_ordering": 499}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040699442, "hashes": {"sha256": "1LzooyIwqYALqP1fk0iYb8ABIp797yZjUp1fndLDs58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9WHpf6n7gvIUaXJg1DeHOsHQhaosGHZ1YhJcQAL7bpYayBtQBWn3KCSRfpGglUrieBh8pvDweuX+hhNjyEd8DA"}}, "unsigned": {"age_ts": 1570040699442}} qeQ$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "49", "stream_ordering": 498}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040698725, "hashes": {"sha256": "+BJQoz6M9nBod3qy4aMpwgubMv/G2dpDBTSaUlPddDA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dd+bMfRcfMBJK2flVZW/LrP/HrcIz7//InId6N8YtuF0ePxNWScCIR4S1IDV0mos9gHFm0q8RR+lNsFVPtVyDg"}}, "unsigned": {"age_ts": 1570040698725}} > ~ o ` Q B 3 $    p a R C 4 %  /  { l ] N ? 0 !   |qbSD5&rcTE6' sdUF7( teVG8) ufWH9* vgXI:+ whYJ;, m ^ O @ 1 "   } n _ P A 2 #   yj[L=.zk\M>mjjmiimhhmggmffmseemddm~7ccmybbmv^aams``mq__mo^^mk]]mew\\may[[m^ZZm[YYmVXXmTWWmR4VVmOUUmLTTmJOSSmD5RRm?(QQm<;PPm9_OOm6NNm4;MMm-SLLm'KKm%JJm"IImQHHmzGGm[FFmvEEmdDDmCCm"BBmAAmf@@mh??m>>m==m<<m;;m::m99m88m77mZ66m'55mބ44m33mٲ22m'11mӫ00m//m..mˠ--m,,m++m**m$))m:((mq''mL&&m%%mc$$m"##m""m$!!m  mmm'mmm|mm]my mvmnmlm[mRZmNmJ mEm?m:  m.  m(M  m e  m  mPm<mm:m `mbmmmmmQmLmFmmbmmmm(mݦmm2m~mzmv|mtmpmn'mkmi me`mcm` m]{mZ+mX mUmRmPmNNmJYmGmEmBm@8m<m:tm7m5m2m/}m, mm m)mmmmgmmzmm~~m>}}mm||m{{mzzmܗyym1xxmwwmˈvvmǘuum ttm-ssm`rrmqqmppmoom nnmmmmllmkkmem?mmymBmmZmcm!m,mmmmpmm mmmm^mmmmJmmmmmmH U < R X &  ^ , h 6jQ8d>%p>   nvD~L R X&q2j8xT" e$5ed21e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pkn1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA 1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 F1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUw1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwP1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAC1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwL0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 ^1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No41e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o:1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wR1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEp1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAp1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI-?$59_msg_d:localhost:42455 3$56:localhost:42455 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA0e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUv3$55:localhost:42455 3$54:localhost:42455 3$53:localhost:42455 3$53:localhost:42455 3$53:localhost:42455 3$52:localhost:42455 3$52:localhost:42455 3$52:localhost:42455 3$50:localhost:42455 3$61:localhost:42455 ;0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Mp1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw 1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcK1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX81e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo q1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw?1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs?1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU01e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI {1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA `1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk C1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 61e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok 1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs 3$67:localhost:42455 G3$66:localhost:42455 F#I$64_redaction2:localhost:42455 E1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 D#I$63_redaction1:localhost:42455 C3$62:localhost:42455 B1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY?$60_msg_e:localhost:42455 1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg"1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4~1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo  t l d \  T LD<4,$|eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800 NeeQ$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800 seeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800 eeQ$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800eeQ$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800&eeQ$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800aeeQ$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800āeeQ$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800eeQ$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58!CQKLQUpSYakhxVDltC:localhost:8800eeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800eeQ$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800jeeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:8800eeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800'eeQ$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800ˁeeQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:88007eeQ$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800ceeQ$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800yeeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE!coGyOAgYnlBZAqznax:localhost:8800 eeQ$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800 NW%c]+j8r@ Q 8  W % ^ ,  d 2 j 8 p> 1vD|JQj8p> 91e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAr1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkc1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8Y1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok21e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U 1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkd1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4@1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA 1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YI1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 @0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU^1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc @1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E ?1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8w1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQP1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEI1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMB1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg o1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQZ1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU~1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM a1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA u1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMX1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQt1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc 1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0#1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwN3$89:localhost:42455 1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28_3$88:localhost:42455 1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AIA$86_sent_F:localhost:42455 1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4A$85_sent_E:localhost:42455 1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o%M$84_backfilled_D:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug "G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk X3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokG1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 3$81:localhost:42455 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNoa3$80:localhost:42455   s|eQ_u$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 509}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg"], "type": "m.room.join_rules", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040705868, "hashes": {"sha256": "wP6e+l1u2c6KflwKagD1+o7gE1p3N3UsgljmMzzjmCU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Inl6MtRqKFWcsu1S85/Qaw+81D/wDYjhQZ58cljF/vD+J8PWfXqfE6y2nqUvv8N2d7G7iTH9NsFGNtIDyziSAg"}}, "unsigned": {"age_ts": 1570040705868}}{eQ_9$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 508}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA"], "type": "m.room.canonical_alias", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"alias": "#test-20191002_181700-15:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040705094, "hashes": {"sha256": "bHND3wm9esHCUKo8ZYpBB03FSv/6hqvQlsg5S5qRAbE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TTyMa7T4VteaxOIiRtT6SYIUNGzlcBh5n0Zd6TRR9uMiGiGrlVdgdfWoLG5di0YwdbogRt/+DdiAwRTumISwDw"}}, "unsigned": {"age_ts": 1570040705094}}jzeQ_c$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 507}{"auth_events": ["$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "type": "m.room.power_levels", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"users": {"@anon-20191002_181700-116:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040704452, "hashes": {"sha256": "XLdFGxVTAMIBPJxgkL0qJsG+Eh0HPj72dpe8IWJhIpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a4Vj9tiyimbQlKUlwRYpt1BeHgSgjlvN0QYkbZQgZm3wCcx30ik+8HYUPS45XdFNEXX3ZWnBzIu1OZXP0IQKCQ"}}, "unsigned": {"age_ts": 1570040704452}}uyeQ_y$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 506}{"auth_events": ["$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0"], "prev_events": ["$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0"], "type": "m.room.member", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-116", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-116:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040703842, "hashes": {"sha256": "y+8DBRo25qX4ra3+Br6Fw6440PDSQwuJ65vcCvVFWw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWRnnB2sMNm8hA2Qlg9fJIoKDqIYhDWzrMACptdBXYi9FRAdpLXIHiI/4rLnLf7rQbvtJNk+bwRToNGd/W4yAw"}}, "unsigned": {"age_ts": 1570040703842}} I\ ]  d  v({#~5HI$e/Q ]$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8Im.room.join_rules!CgVBWWcRJoHEcwoLcq:localhost:8800mNmO@anon-20191002_181700-120:localhost:8800)e9Q ]$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAm.room.canonical_alias!CgVBWWcRJoHEcwoLcq:localhost:8800mJ mK@anon-20191002_181700-120:localhost:8800&e3Q ]$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMm.room.power_levels!CgVBWWcRJoHEcwoLcq:localhost:8800mEmG@anon-20191002_181700-120:localhost:8800 e'Q ]$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gm.room.member!CgVBWWcRJoHEcwoLcq:localhost:8800m?mBl@anon-20191002_181700-120:localhost:8800  e'Q  ]$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgm.room.create!CgVBWWcRJoHEcwoLcq:localhost:8800m:m;I@anon-20191002_181700-120:localhost:8800# e-Q ] $iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcm.room.redaction!HcMGemcRrLnLprOJJR:localhost:8800 m.m/@anon-20191002_181700-119:localhost:8800! e)Q ] $wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4km.room.message!HcMGemcRrLnLprOJJR:localhost:8800 m(Mm(R@anon-20191002_181700-119:localhost:8800 e'Q ]$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYm.room.member!HcMGemcRrLnLprOJJR:localhost:8800m em!Z@anon-20191002_181700-119:localhost:8800! e)Q ]$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUm.room.aliases!HcMGemcRrLnLprOJJR:localhost:8800mm@anon-20191002_181700-118:localhost:8800,e?Q ]$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQm.room.history_visibility!HcMGemcRrLnLprOJJR:localhost:8800mPm@anon-20191002_181700-118:localhost:8800$e/Q ]$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYm.room.join_rules!HcMGemcRrLnLprOJJR:localhost:8800m<m@anon-20191002_181700-118:localhost:8800)e9Q ]$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAm.room.canonical_alias!HcMGemcRrLnLprOJJR:localhost:8800mm@anon-20191002_181700-118:localhost:8800&e3Q ]$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMm.room.power_levels!HcMGemcRrLnLprOJJR:localhost:8800m:mX@anon-20191002_181700-118:localhost:8800 e'Q ]$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8m.room.member!HcMGemcRrLnLprOJJR:localhost:8800m `m @anon-20191002_181700-118:localhost:8800 e'Q  ]$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExom.room.create!HcMGemcRrLnLprOJJR:localhost:8800mbm@anon-20191002_181700-118:localhost:8800#e-Q ] $QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcm.room.redaction!SyIWYOmcGiASNkPCTB:localhost:8800 mm@anon-20191002_181700-116:localhost:8800!e)Q ] $8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ym.room.message!SyIWYOmcGiASNkPCTB:localhost:8800 mm@anon-20191002_181700-117:localhost:8800 e'Q ]$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEm.room.member!SyIWYOmcGiASNkPCTB:localhost:8800mms@anon-20191002_181700-117:localhost:8800!e)Q ]$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8m.room.aliases!SyIWYOmcGiASNkPCTB:localhost:8800mm@anon-20191002_181700-116:localhost:8800,~e?Q ]$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0m.room.history_visibility!SyIWYOmcGiASNkPCTB:localhost:8800mQm @anon-20191002_181700-116:localhost:8800$}e/Q ]$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Um.room.join_rules!SyIWYOmcGiASNkPCTB:localhost:8800mLm@anon-20191002_181700-116:localhost:8800)|e9Q ]$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggm.room.canonical_alias!SyIWYOmcGiASNkPCTB:localhost:8800mFm_@anon-20191002_181700-116:localhost:8800&{e3Q ]$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAm.room.power_levels!SyIWYOmcGiASNkPCTB:localhost:8800mm@anon-20191002_181700-116:localhost:8800 ze'Q ]$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYm.room.member!SyIWYOmcGiASNkPCTB:localhost:8800mbm@anon-20191002_181700-116:localhost:8800 O{uCo= j8up? w E{  ~ L  S ! C Y ' x _ ; sZ(`.f4m; W>% 31e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA a1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU `1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 71e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 !1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ 1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU 1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI.?$59_msg_d:localhost:42455 ?$58_msg_c:localhost:42455 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcL1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX80e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A0e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Mp1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3Ms1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUb1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYS1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUsx1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwl1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:42455 J1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMc3$68:localhost:42455 I3$67:localhost:42455 H3$66:localhost:42455 G3$65:localhost:42455 F1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 #I$63_redaction1:localhost:42455 E3$62:localhost:42455 D1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY3$61:localhost:42455 =1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg#1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas0e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUw1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pko1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 G1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4-1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUx1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAD1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 `1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No/1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o;1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE 1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEq  6 l u?c]c@anon-20191002_181700-149:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20Ao127.0.0.1{c]c@anon-20191002_181700-144:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQo127.0.0.1yc]c@anon-20191002_181700-142:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAo127.0.0.1wc]c@anon-20191002_181700-143:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwo127.0.0.1xc]c@anon-20191002_181700-146:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwo127.0.0.1za[a@anon-20191002_181700-14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCg127.0.0.1 c]c@anon-20191002_181700-141:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_Ao127.0.0.1vc]c@anon-20191002_181700-140:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAo127.0.0.1uc]c@anon-20191002_181700-138:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAo127.0.0.1tc]c@anon-20191002_181700-137:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swo127.0.0.1sc]c@anon-20191002_181700-136:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0wo127.0.0.1r  eQ_$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 541}{"auth_events": ["$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg", "$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ", "$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "prev_events": ["$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo"], "type": "m.room.history_visibility", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040745511, "hashes": {"sha256": "X/YQt6fHt9wuWVLvA4YFtDf4xmgS99L7TE5wceWSc2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rBxx7+UbdJ9+3VqZbJwkmwmsmuzzm4H2Tuq2zLR0sHtKsY7dLjAcJIYpU6a4C+q2uofxbaXqMS1ccwHd+Uf7BQ"}}, "unsigned": {"age_ts": 1570040745511}}eQ_$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 540}{"auth_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0", "$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY"], "type": "m.room.history_visibility", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040744988, "hashes": {"sha256": "STBEoREb6iitJspl0nlLA7MGknxTdyMsRCd2QwZjdBI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bkwY4JWNU2bHU0BbQ+GvevipXZuv5oC7eK0y6eHDjIR8OWAopX9Mtb+u2/Meh55vcZHUAcgPyW148uqztaVUAw"}}, "unsigned": {"age_ts": 1570040744988}}seQ_u$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 539}{"auth_events": ["$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg", "$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ", "$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "prev_events": ["$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg"], "type": "m.room.join_rules", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040744186, "hashes": {"sha256": "Mw9zOWCL+HNPwuvAl5TfrO7OIf/2rGfoGFseQlajE9A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cNM48+BNBywSxgCWKM3hhWfkCmyjGQ/1ksGKCyFBCeTTnuCAbdl3tRRgJtv1GoqVSmV14JDxTXyYu9QLNVDzCw"}}, "unsigned": {"age_ts": 1570040744186}}seQ_u$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 538}{"auth_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0", "$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0"], "type": "m.room.join_rules", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040743804, "hashes": {"sha256": "Er7RziyysNorT1vcoLL6QmkBujUUlGFEgh27HmrXIqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aD8LTm8ML0vowHtWk4cvCehe7nQfLRYxp2MkWzAaxcmFF7iROngMw20vfNQj7sRfjo/yCfVhHFDKVG+jAQZRDg"}}, "unsigned": {"age_ts": 1570040743804}} ZY6n/xa"B+ q K 4  e J / v V ;  ] @  } ` K 0kN.t5UdI&tyS/r[ _9 #m.room.canonical_alias%/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-116:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-115:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 "m.room.power_levels$>']!m.room.member@anon-20191002_181700-136:localhost:8800#'  m.room.create">']m.room.member@anon-20191002_181700-135:localhost:8800!"? m.room.history_visibility / m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-134:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-133:localhost:8800>']m.room.member@anon-20191002_181700-132:localhost:8800>']m.room.member@anon-20191002_181700-132:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-131:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-130:localhost:8800%))m.room.aliaseslocalhost:8800"?  m.room.history_visibility/  m.room.join_rules9  m.room.canonical_alias 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-129:localhost:8800 ' m.room.create / madeup.test.state # m.room.name>']m.room.member@anon-20191002_181700-127:localhost:8800/ madeup.test.state# m.room.name3 m.room.power_levels>']m.room.member@anon-20191002_181700-128:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-127:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-126:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-125:localhost:8800' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-124:localhost:8800>']m.room.member@anon-20191002_181700-123:localhost:8800' m.room.create' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-120:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-119:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-118:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-117:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility  xZeQ#$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 145, "txn_id": "56", "stream_ordering": 513}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE"], "prev_events": ["$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE"], "type": "m.room.message", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-117:localhost:8800", "content": {}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040708849, "hashes": {"sha256": "oAsi/6K0jJsDg0Hng7MB+hegqHDlnMMlWX3YxCmX3Mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l5rWPiaeNMIJArr2lGf6AyxY1UErvlhsQqJHXGfLoF1zMpPY3MMxC1+rolxxwkFsTRpXKZkQooaxD0Fn1UhmBg"}}, "unsigned": {"age_ts": 1570040708849}}UeQ_9$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 145, "stream_ordering": 512}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U"], "prev_events": ["$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8"], "type": "m.room.member", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-117:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-117", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-117:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040708093, "hashes": {"sha256": "u8zgcXuJzKaiuXOw8VvfqESUqf4TTy8SBSMLNKtYu4c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8j5aoxjrsWiXoZU53983WpynndJUNXwQmxVzHdePQ8hzfMEcqkI0MlDKhqfotb5IMagGIRlEdQepHoOFagbAAg"}}, "unsigned": {"age_ts": 1570040708093}}~eQ_M$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 511}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0"], "type": "m.room.aliases", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"aliases": ["#test-20191002_181700-15:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040707318, "hashes": {"sha256": "YXUB/7icCiNQHfeyUyg8Fqpjzr2cNiRItFb11zwGCHA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C44U3/s8vbtYGFPQwT4+4IZUr3mZyPKZzIprYtTqk6KvJHDcJm65OO2ve9aoVYX2l1QOpFysu2Mq+7qcgkC+Ag"}}, "unsigned": {"age_ts": 1570040707318}}}eQ_$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 510}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U"], "type": "m.room.history_visibility", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040706385, "hashes": {"sha256": "Qo25wEgSyzzwIlcAV/YLawtlmx4yQtiL2Ewex/rVC4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RsyucuvRugjfRIPd8IUeNYqFt1+HLf54O6IJg6orWA0oGoS/EDWusZScioD1nZeqmc2Kxk2EbzEMDh70vberCw"}}, "unsigned": {"age_ts": 1570040706385}} a} { y w u sqomkigeca~eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800~~eeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~}eeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~|eeQ$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~{eeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800~zeeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~yeeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~xeeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~weeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~veeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~ueeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~teeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~seeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~reeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~qeeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~peeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~oeeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~neeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~meeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~leeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~keeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~jeeQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~ieeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800~heeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~geeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~feeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~eeeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~deeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~ceeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800 2|dyp@} 6 &lg*  D q . W>{|{8 CLiBQ? !JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibility (^Q']!JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800 %^Q']!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:88294<Q3 !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels1u~<Q3 !JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels &4Q# !JnAKXOrlyisFUpgJPw:localhost:8800m.room.name )L<Q3 !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels BQ? !JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility :Q/ !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules <Q3 !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levels^Q']!JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800 6Q' !JiUawCFQnodcpssOfK:localhost:8800m.room.create 7CQ?!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6%^Q']!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800yEQ))!JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800xBQ? !JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibilityw:Q/ !JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rulesv?Q9 !JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_aliasu<Q3 !JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levelst^Q']!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800s6Q' !JPTwFTSDaBXwUTgitj:localhost:8800m.room.createrBQ? !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibility3:Q/ !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules26Q' !JnAKXOrlyisFUpgJPw:localhost:8800m.room.create $J RQ'E!JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455 ^Q']!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:880006Q' !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create/<Q3 !JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels"^Q']!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800&^Q']!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800!:Q/ !JusxqeECtidaPlWqhp:localhost:8800m.room.join_rules#BQ? !JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibility$6Q' !JusxqeECtidaPlWqhp:localhost:8800m.room.create <Q3 !JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels^Q']!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800:Q/ !JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rulesBQ? !JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibility6Q' !JZouHBRxCRbcxYJnbn:localhost:8800m.room.create<Q3 !JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels^Q']!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800:Q/ !JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rulesBQ? !JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibility6Q' !JYLMokjOhZZlmbZvTf:localhost:8800m.room.create<Q3 !JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels(^Q']!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800':Q/ !JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rules)BQ? !JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility*6Q' !JGhlAUflyNxErGGZZu:localhost:8800m.room.create&^Q']!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800:Q/ !JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rules ' "vq | 7 P [ ` :EJt &1Vzv {Q']e!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgrzQ))e!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:8800$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUoyQ? e!CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibility$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEgxQ/ e!CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rules$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828lwQ9 e!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_alias$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEivQ3 e!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg uQ']e!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9DisctQ' e!CQKLQUpSYakhxVDltC:localhost:8800m.room.create$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKsosQ? e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibility$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYorQ? e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibility$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsgqQ/ e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rules$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OogpQ/ e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rules$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYioQ3 e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levels$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVginQ3 e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0 mQ']e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs lQ']e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsckQ' e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.create$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQcjQ' e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.create$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAriQ))e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUohQ? e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibility$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4ggQ/ e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rules$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8IlfQ9 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_alias$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAieQ3 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM dQ']e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gccQ' e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg bQ']e!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYraQ))e!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUo`Q? e!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibility$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQg_Q/ e!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rules$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYl^Q9 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_alias$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAi]Q3 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM \Q']e!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8c[Q' e!HcMGemcRrLnLprOJJR:localhost:8800m.room.create$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo ZQ']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE ~z v r n j fb^ZVRNJFeeeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800deeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800ceeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800beeQ$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800aeeQ$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800`eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800_eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800^eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800]eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800\eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800[eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800ZeeQ$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800YeeQ$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800XeeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800WeeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800VeeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800UeeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800TeeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800SeeQ$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800ReeQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800QeeQ$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800PeeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800OeeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800NeeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800MeeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800LeeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800KeeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800JeeQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800IeeQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800HeeQ$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800 $U"  9 _ 6Y|Gy<i)UiheQ%$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800content.bodypre_joinggeQ%$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800content.bodysharedjfeQ%$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800content.bodypost_joinieeQ%$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800content.bodypre_joingdeQ%$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800content.bodysharedgceQ%$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800content.bodypublichbeQ%$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800content.bodyprivatehaeQ%$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg!NfaPEGKjnUDUTavzol:localhost:8800content.bodyprivateg`eQ%$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800content.bodypublich_eQ%$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800content.bodyprivatee^eQ%$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800content.bodymicee]eQ%$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800content.bodymicee\eQ%$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800content.bodymicee[eQ%$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800content.bodymiceeZeQ%$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800content.bodymicemYeQ%%$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800content.bodyAfter invitelXeQ%#$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800content.bodyBefore joinmWeQ%%$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800content.bodyAfter invitelVeQ%#$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800content.bodyBefore joinmUeQ%%$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800content.bodyAfter invitelTeQ%#$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800content.bodyBefore joinmSeQ%%$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800content.bodyAfter invitelReQ%#$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800content.bodyBefore joinmQeQ%%$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ!hgjYwwwjWJNgwrzOto:localhost:8800content.bodyAfter invitelPeQ%#$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800content.bodyBefore joinjOeQ%$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg!wAyboOFgsOPwkmgMAI:localhost:8800content.bodya messagedNeQ%$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw!IMiczgkCTjejbnbeyP:localhost:8800content.bodysupMeQ%I$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800content.nameN2. B's room name after A left}LeQ%E$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800content.bodyM3. B's message after A left~KeQ%G$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800content.bodyM2. B's message before A left~JeQ%G$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800content.bodyM1. B's message before A leftIeQ%K$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800content.nameN1. B's room name before A left{HeQ%A$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800content.bodyorangutans are not monkeyseGeQ%$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M!VWYMJxEviBNDdJCuKT:localhost:8800content.bodytest{FeQ%A$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800content.bodyorangutans are not monkeys{EeQ%A$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800content.bodyorangutans are not monkeys  t jeQ_c$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 517}{"auth_events": ["$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "type": "m.room.power_levels", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"users": {"@anon-20191002_181700-118:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040712762, "hashes": {"sha256": "VTjb+hxAEVRjRtturbcpI7C//TSDGGMQz5qLcoTChZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "moIJRnX5ghpPcCWc93y2O0Lw/WFFQmBmalJ5wq0a82js+7iOfyBWcJWOJFbBeo1ty0zlV2L3RA+GeRIFy1XUBg"}}, "unsigned": {"age_ts": 1570040712762}}ueQ_y$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 516}{"auth_events": ["$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo"], "prev_events": ["$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo"], "type": "m.room.member", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-118", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-118:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040712032, "hashes": {"sha256": "tnuF+Hd3uOOlO2XhLeDoGOmqYBumRNhI4CD4Mlc6THo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HJ0W5b2KFWrAtPPoY2skNfn5HXcz0ULnqhHzYZOyc/nRHO3V5YdR06THJ5ZTo1oG65x0Oqm9xOW9dXbztjmxBg"}}, "unsigned": {"age_ts": 1570040712032}}heQ__$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 515}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-118:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040711266, "hashes": {"sha256": "etfa516NBGWx/rZWwdl9VB5IZ58TyZMRZO8h6hJg4Ow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GMoFgQoL95eb8Ihkhp6nImrO4FJ8vTrHRX9stbB+3XIh0FpkPPw/B10J35HQLjMQAi4Bqa2m0lXwEnvqBbRZAA"}}, "unsigned": {"age_ts": 1570040711266}}eQ_$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 514}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y"], "type": "m.room.redaction", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "redacts": "$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y", "origin": "localhost:8800", "origin_server_ts": 1570040709517, "hashes": {"sha256": "nHyD8AGxv86KNgplc+hKBXYUGpvF0EhARd/gbUcBq6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9gheMOIgjLhSlDzQ++9nyd7PnU4qfcxE5FSKS5wJFRiGUYDnz8cHIJuC9cBGv8ou9Hqkn0KNL6RpDCrrpqiiCA"}}, "unsigned": {"age_ts": 1570040709517}} ?BM  X V  \ g + m 1x<>IOT[` g+> ]  @anon-20191002_181700-156:localhost:8800m&\&9 ]@anon-20191002_181700-157:localhost:8800a&\9 ]@anon-20191002_181700-156:localhost:8800a&\> ]  @anon-20191002_181700-154:localhost:8800m&\&9 ]@anon-20191002_181700-155:localhost:8800a&\9 ]@anon-20191002_181700-154:localhost:8800a&\= ]  @anon-20191002_181700-153:localhost:8800m&\> ] @anon-20191002_181700-152:localhost:8800m&\w9 ]@anon-20191002_181700-153:localhost:8800a&\9~ ]@anon-20191002_181700-152:localhost:8800a&\?{ ] @anon-20191002_181700-149:localhost:8800m&\ "s=| ]  @anon-20191002_181700-150:localhost:8800m&\=} ]  @anon-20191002_181700-151:localhost:8800m&\9z ]@anon-20191002_181700-151:localhost:8800a&\9y ]@anon-20191002_181700-149:localhost:8800a&\9x ]@anon-20191002_181700-150:localhost:8800a&\?w ]  @anon-20191002_181700-146:localhost:8800m&\ 'f9v ]@anon-20191002_181700-146:localhost:8800a&\>u ] @anon-20191002_181700-144:localhost:8800m&\|>t ] @anon-20191002_181700-143:localhost:8800m&\:9s ]@anon-20191002_181700-143:localhost:8800a&\9r ]@anon-20191002_181700-144:localhost:8800a&\>q ] @anon-20191002_181700-141:localhost:8800m&\D>p ] @anon-20191002_181700-140:localhost:8800m&\:9o ]@anon-20191002_181700-142:localhost:8800a&\9n ]@anon-20191002_181700-141:localhost:8800a&\9m ]@anon-20191002_181700-140:localhost:8800a&\>l ] @anon-20191002_181700-138:localhost:8800m&\ !9k ]@anon-20191002_181700-138:localhost:8800a&\=j ]  @anon-20191002_181700-137:localhost:8800m&\>i ] @anon-20191002_181700-136:localhost:8800m&\ !#9h ]@anon-20191002_181700-136:localhost:8800a&\9g ]@anon-20191002_181700-137:localhost:8800a&\>f ] @anon-20191002_181700-134:localhost:8800m&\X9e ]@anon-20191002_181700-135:localhost:8800a&\9d ]@anon-20191002_181700-134:localhost:8800a&\>c ] @anon-20191002_181700-132:localhost:8800m&\ Z>b ] @anon-20191002_181700-131:localhost:8800m&\:9a ]@anon-20191002_181700-133:localhost:8800a&\9` ]@anon-20191002_181700-131:localhost:8800a&\9_ ]@anon-20191002_181700-132:localhost:8800a&\>^ ] @anon-20191002_181700-129:localhost:8800m&\:9] ]@anon-20191002_181700-129:localhost:8800a&\9\ ]@anon-20191002_181700-130:localhost:8800a&\>[ ] @anon-20191002_181700-128:localhost:8800m&\>Z ] @anon-20191002_181700-127:localhost:8800m&\ z9Y ]@anon-20191002_181700-127:localhost:8800a&\9X ]@anon-20191002_181700-128:localhost:8800a&\>W ] @anon-20191002_181700-126:localhost:8800m&\]>V ]  @anon-20191002_181700-125:localhost:8800m&\ 9U ]@anon-20191002_181700-125:localhost:8800a&\>R ]  @anon-20191002_181700-123:localhost:8800m&\19T ]@anon-20191002_181700-126:localhost:8800a&\>S ]  @anon-20191002_181700-124:localhost:8800m&\C9Q ]@anon-20191002_181700-124:localhost:8800a&\9P ]@anon-20191002_181700-123:localhost:8800a&\>O ]  @anon-20191002_181700-120:localhost:8800m&\y9N ]@anon-20191002_181700-122:localhost:8800a&\9M ]@anon-20191002_181700-121:localhost:8800a&\9L ]@anon-20191002_181700-120:localhost:8800a&\>K ] @anon-20191002_181700-119:localhost:8800m&\ f>J ]  @anon-20191002_181700-118:localhost:8800m&\y9I ]@anon-20191002_181700-118:localhost:8800a&\ #O { P % i>k@ :qFoDmB 'T) g<R} w L ! u J  e s H  y N #c8 #*Q!XIqmzIFbkHGQPIpywk:localhost:8800YY*Q!XIqmzIFbkHGQPIpywk:localhost:8800XX*Q!XIqmzIFbkHGQPIpywk:localhost:8800WW*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!XIqmzIFbkHGQPIpywk:localhost:8800VV*Q!XIqmzIFbkHGQPIpywk:localhost:8800UU*Q!XIqmzIFbkHGQPIpywk:localhost:8800TT*Q!XIqmzIFbkHGQPIpywk:localhost:8800SS*Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800  *Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800  *Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XIqmzIFbkHGQPIpywk:localhost:8800\\*Q!XIqmzIFbkHGQPIpywk:localhost:8800[[*Q!XIqmzIFbkHGQPIpywk:localhost:8800ZZ*Q!XiwGxQKwjgutEClKUy:localhost:8829%%*Q!XiwGxQKwjgutEClKUy:localhost:8829$$*Q!XiwGxQKwjgutEClKUy:localhost:8829!!*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  *Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800V*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800  *Q!XGAmnfaVvjDtQJuufa:localhost:8800 L]a:c;sK# [ 3 k C  iAyQ)t { S +  c ;  \4 $ u N ' a9qI!Y1 tL'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 ('Q!NcJYmIbgjsaKJOzBcs:localhost:8800l'Q!NcJYmIbgjsaKJOzBcs:localhost:8800e'Q!NcJYmIbgjsaKJOzBcs:localhost:8800^&Q!NZHpBquHDfJAjiawGk:localhost:8800E&Q!NZHpBquHDfJAjiawGk:localhost:8800D&Q!NZHpBquHDfJAjiawGk:localhost:8800C'Q!NQgavrmiCPUVaVjssy:localhost:8800i'Q!NQgavrmiCPUVaVjssy:localhost:8800h'Q!NQgavrmiCPUVaVjssy:localhost:8800gP'Q!NcJYmIbgjsaKJOzBcs:localhost:8800]'Q!NcJYmIbgjsaKJOzBcs:localhost:8800V'Q!NcJYmIbgjsaKJOzBcs:localhost:8800U'Q!NcJYmIbgjsaKJOzBcs:localhost:8800T'Q!NcJYmIbgjsaKJOzBcs:localhost:8800S'Q!NcJYmIbgjsaKJOzBcs:localhost:8800R'Q!NcJYmIbgjsaKJOzBcs:localhost:8800Q'Q!NcJYmIbgjsaKJOzBcs:localhost:8800P'Q!NcJYmIbgjsaKJOzBcs:localhost:8800O('Q!OCEHAjcOXWNyWIESIS:localhost:8800 J'Q!OCEHAjcOXWNyWIESIS:localhost:8800 I'Q!OCEHAjcOXWNyWIESIS:localhost:8800 H'Q!OCEHAjcOXWNyWIESIS:localhost:8800 G'Q!OCEHAjcOXWNyWIESIS:localhost:8800 F'Q!OCEHAjcOXWNyWIESIS:localhost:8800 E'Q!OBWkjfrDCNgYFfblia:localhost:8800A'Q!OBWkjfrDCNgYFfblia:localhost:8800@'Q!OBWkjfrDCNgYFfblia:localhost:8800?'Q!OBWkjfrDCNgYFfblia:localhost:8800>'Q!OBWkjfrDCNgYFfblia:localhost:8800='Q!OBWkjfrDCNgYFfblia:localhost:8800<'Q!OBWkjfrDCNgYFfblia:localhost:8800;'Q!OBWkjfrDCNgYFfblia:localhost:8800:'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800v&Q!NhWgOTYzEPRwAxRQvS:localhost:8800u&Q!NhWgOTYzEPRwAxRQvS:localhost:8800t&Q!NhWgOTYzEPRwAxRQvS:localhost:8800s&Q!NhWgOTYzEPRwAxRQvS:localhost:8800r&Q!NhWgOTYzEPRwAxRQvS:localhost:8800q'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800d'Q!NeYaCeYNFATCqlrlGT:localhost:8800c'Q!NeYaCeYNFATCqlrlGT:localhost:8800b'Q!NeYaCeYNFATCqlrlGT:localhost:8800a'Q!NeYaCeYNFATCqlrlGT:localhost:8800`'Q!NeYaCeYNFATCqlrlGT:localhost:8800_'Q!NboFFVLpJHTeuUKCjM:localhost:88003'Q!NboFFVLpJHTeuUKCjM:localhost:88002'Q!NboFFVLpJHTeuUKCjM:localhost:88001'Q!NboFFVLpJHTeuUKCjM:localhost:88000'Q!NboFFVLpJHTeuUKCjM:localhost:8800/'Q!NboFFVLpJHTeuUKCjM:localhost:8800.'Q!NboFFVLpJHTeuUKCjM:localhost:8800-'Q!NboFFVLpJHTeuUKCjM:localhost:8800,'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800H&Q!NZHpBquHDfJAjiawGk:localhost:8800G&Q!NZHpBquHDfJAjiawGk:localhost:8800F  gheQ_M$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 521}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ"], "type": "m.room.aliases", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"aliases": ["#test-20191002_181700-16:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040716415, "hashes": {"sha256": "KxJGNuLK8QU3l+eieA2VR0/24Q7RcNqOA1tDTKTP8+Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jlst5YlN+JwHot1nOTuz8Z5dVdk8QIcpyL9Li87X87yYn2XMcQxIB3YcOuDvIaxj1R77NCrwqcHUk+C+OQNACA"}}, "unsigned": {"age_ts": 1570040716415}}eQ_$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 520}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY"], "type": "m.room.history_visibility", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040714832, "hashes": {"sha256": "p0sj8RFiiJ5pSe7nQkzrOxfwiheyvhz+HUhkudtDKu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vs1bjY3C016BrWCCTfYJ2cOzzXzQv6O/jsDwO4K5msr8niyVDy85madSn6Y7+wfjemSEDwfDFutOGW5dta7JCA"}}, "unsigned": {"age_ts": 1570040714832}}seQ_u$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 519}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA"], "type": "m.room.join_rules", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040714044, "hashes": {"sha256": "aoBE6H+YRdD7yFdDyHuI2t2Ccd3F+5CZlIU1QH6YwcM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9z6DmHqM23iQs9IMFsXWvWMP7rkczJgg+fU50b8sZb98Dxd25WCUG1ufC4IqlaSu9gKzz9CcMyUXtHOwI3UpBw"}}, "unsigned": {"age_ts": 1570040714044}}eQ_9$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 518}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM"], "type": "m.room.canonical_alias", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"alias": "#test-20191002_181700-16:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040713444, "hashes": {"sha256": "9DzCQuKw091Nz4hYWjmgQVQsC8XeflmXezWO/qevR0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4SrHdSn1EKbaSFtfpsa67/R4jCvYJsklELYtxlcItSRSkT/DbQlivNvKtHWG/B/dwXeMZK/S9882gSa/Lm+Dg"}}, "unsigned": {"age_ts": 1570040713444}} L, v D ^ } K  Q X &  ^ ,d3l:r@xF ~L>&RX j8p1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA W1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ Q1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 ;1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT41e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgF1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQT1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo 1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw q1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U71e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 [1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwU1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 g1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0K1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU.0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wR1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 A1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0Z0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 t1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM^1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg11e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uw1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A\1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAp1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYZ1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE{1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U 1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRoh1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q<1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs*21e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE 21e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek81e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 #r+H W `  D S\"BQz/>GreeeQ/ $WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rulesjdeQ9 $msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_aliasgceQ3 $NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels beQ']$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800aaeQ' $PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create `eQ']$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800p_eQ))$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:8800m^eQ? $QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibilitye]eQ/ $pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rulesj\eQ9 $aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_aliasg[eQ3 $PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels ZeQ']$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800aYeQ' $q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800m.room.createmXeQ? $bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibilitymWeQ? $wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibilityeVeQ/ $RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_ruleseUeQ/ $-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rulesgTeQ3 $s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levelsgSeQ3 $DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels ReQ']$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800 QeQ']$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800aPeQ' $46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800m.room.createaOeQ' $NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800m.room.createpNeQ))$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800mMeQ? $REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibilityeLeQ/ $bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rulesjKeQ9 $FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_aliasgJeQ3 $Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels IeQ']$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800aHeQ' $DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create GeQ']$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800pFeQ))$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800mEeQ? $BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibilityeDeQ/ $lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rulesjCeQ9 $ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_alias  'h eQ__$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 525}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-120:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040724151, "hashes": {"sha256": "Z5u7CJoYXAMxvceDppVpad6Ug0edKojev5HnGpn0rbQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LcJdahV1m3Tk0N5PtrWgqofj5q6Ap1fFJrwNwtgKLXhOvVS0bimZC9N2Kn0N+iDwtgAwRdL9ZnTg4fCXUC/bDw"}}, "unsigned": {"age_ts": 1570040724151}}% eQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 146, "recheck_redaction": false, "stream_ordering": 524}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY"], "prev_events": ["$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k"], "type": "m.room.redaction", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-119:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "redacts": "$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k", "origin": "localhost:8800", "origin_server_ts": 1570040721150, "hashes": {"sha256": "dEXo8vOVuRne+w+yf0gsVT4KGcyWJ7uJ43B9qdkxT40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8IJpkObb8Xo5zbfNDyGPXvHKAkiQgYDdK2Dbdytn9XdICxBj/su+Gl44aUulyYtR3sE6csCx0NIfvMvopUQWBg"}}, "unsigned": {"age_ts": 1570040721150}}<Z eQ#$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 146, "txn_id": "57", "stream_ordering": 523}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY"], "prev_events": ["$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY"], "type": "m.room.message", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-119:localhost:8800", "content": {}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040719437, "hashes": {"sha256": "ZTKkqEL1A6v4hfvWvXzRGAgGlu9PfwAgJz2mDds682s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLu4k2pvW5tqv7UmiQM6fxi259+6wRGmk5pONen+EQtxWyaRbJTCbuWI7orTBpVXJbnmRja1ISVgBijwPDiHDw"}}, "unsigned": {"age_ts": 1570040719437}}U eQ_9$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 146, "stream_ordering": 522}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY"], "prev_events": ["$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU"], "type": "m.room.member", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-119:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-119", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-119:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040717413, "hashes": {"sha256": "PKY+INnwjyRZf/PVQmd/bojzno6LFpbCA1udBIuPkkY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQFP5+7HxdHs3ZOtF0qCK2aR/ES17T8/3/DQyXjNUBXkdFdk33+s8bGuq1vJtPsENrUHe3RU8LMA015lCJAGAQ"}}, "unsigned": {"age_ts": 1570040717413}} QeT)}R' { P % y N # w L ! u J  s H qFoeDmBk@i>g<*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NQgavrmiCPUVaVjssy:localhost:8800im*Q!NQgavrmiCPUVaVjssy:localhost:8800hl*Q!NQgavrmiCPUVaVjssy:localhost:8800gk*Q!NQgavrmiCPUVaVjssy:localhost:8800fj*Q!NQgavrmiCPUVaVjssy:localhost:8800ei*Q!NQgavrmiCPUVaVjssy:localhost:8800dh*Q!NQgavrmiCPUVaVjssy:localhost:8800cg*Q!NQgavrmiCPUVaVjssy:localhost:8800bf*Q!NQgavrmiCPUVaVjssy:localhost:8800ae*Q!NPdjmIfsBVIIkvWBzD:localhost:8800lr*Q!NPdjmIfsBVIIkvWBzD:localhost:8800jp*Q!NPdjmIfsBVIIkvWBzD:localhost:8800hn*Q!NPdjmIfsBVIIkvWBzD:localhost:8800fl*Q!NPdjmIfsBVIIkvWBzD:localhost:8800dj*Q!NPdjmIfsBVIIkvWBzD:localhost:8800bh*Q!NPdjmIfsBVIIkvWBzD:localhost:8800ag*Q!NPdjmIfsBVIIkvWBzD:localhost:8800_e*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NFWKQvZkIwvecnREOC:localhost:8800SX*Q!NFWKQvZkIwvecnREOC:localhost:8800RW*Q!NFWKQvZkIwvecnREOC:localhost:8800QV*Q!NFWKQvZkIwvecnREOC:localhost:8800PU*Q!NFWKQvZkIwvecnREOC:localhost:8800OT*Q!NFWKQvZkIwvecnREOC:localhost:8800NS*Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MXhwoqNXvexeDDSOZT:localhost:8800 < m*Q!MXhwoqNXvexeDDSOZT:localhost:8800 : k*Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 g*Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 f*Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 e*Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 d*Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 c*Q!MXhwoqNXvexeDDSOZT:localhost:8800 1 b*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!LvARVIpJZeRQxbKefX:localhost:8800tz*Q!LvARVIpJZeRQxbKefX:localhost:8800sy*Q!LvARVIpJZeRQxbKefX:localhost:8800rx BZZUq: V  r 9 W  s :  X t;Wu<Xv=Y u>!8]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU8]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW8]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO8]!@anon-20191002_181700-260:localhost:8800PEYMVGORHU<6[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRT78]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZA;8]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT:8]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTK98]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLF88]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEX78]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKS68]!@anon-20191002_181700-252:localhost:8800RURXOUWORG58]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ48]!@anon-20191002_181700-250:localhost:8800HLUDALFTVR36[!@anon-20191002_181700-24:localhost:8800MRUESCORNA68]!@anon-20191002_181700-249:localhost:8800TCARNJMFBO28]!@anon-20191002_181700-248:localhost:8800SFZRVIZXHM18]!@anon-20191002_181700-247:localhost:8800TRPUOTMOOT/8]!@anon-20191002_181700-246:localhost:8800VWLZTFZJKU08]!@anon-20191002_181700-245:localhost:8800BMGHUZBIKD.8]!@anon-20191002_181700-244:localhost:8800VWUTZPSOAH-8]!@anon-20191002_181700-243:localhost:8800FMNGREYZML,8]!@anon-20191002_181700-242:localhost:8800AYBUQGWFIB+8]!@anon-20191002_181700-241:localhost:8800AXXWURZRJC*8]!@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ)6[!@anon-20191002_181700-23:localhost:8800SNOHQGNOOL58]!@anon-20191002_181700-239:localhost:8800WFWDJJSKCM(8]!@anon-20191002_181700-238:localhost:8800CJBYPQAOBX'8]!@anon-20191002_181700-237:localhost:8800GTKLCHUYBN&8]!@anon-20191002_181700-236:localhost:8800ALVQESJRHC$8]!@anon-20191002_181700-235:localhost:8800OYRPJJEYFG"8]!@anon-20191002_181700-234:localhost:8800KLAICDFHKH!8]!@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY 8]!@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB6[!@anon-20191002_181700-22:localhost:8800HVNUPXSZHY48]!@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!@anon-20191002_181700-225:localhost:8800ZNKOABDJUU8]!@anon-20191002_181700-224:localhost:8800VJTZAJOEFY8]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDW8]!@anon-20191002_181700-222:localhost:8800VOKSLIDSSO8]!@anon-20191002_181700-221:localhost:8800REITENATXK8]!@anon-20191002_181700-220:localhost:8800OOLATWHSMP6[!@anon-20191002_181700-21:localhost:8800KHJDEDTDXI38]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP 8]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH 8]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN 8]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM 8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF6[!@anon-20191002_181700-20:localhost:8800MIHVANNPDD28]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT 8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO8]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDH8]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIF 8M T " Z) (ic1 ] +J  w S ! N 5   g o=# [uC{IP V ?q Q1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 }1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygn1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAd1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI*1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY;0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg61e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw^1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0h1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUX1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4T1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsn ?$60_msg_e:localhost:42455 I1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU3$62:localhost:42455 3$61:localhost:42455 ~1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 Y 1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m01e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykZ1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 )1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAd1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro3$69:localhost:42455 3$68:localhost:42455 3$67:localhost:42455 3$66:localhost:42455 3$65:localhost:42455 1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM#I$64_redaction2:localhost:42455 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 '1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYH1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM G1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 :21e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E  M% ]k9] r@~LxQ W % ( `.FW v D P  | J  }K +d2 +#I$63_host#I$63_redaction1:localhost:42455 g3$62:localhost:42455 f3$61:localhost:42455 _ 1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4T1e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU}1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o#I$64_redaction2:localhost:42455 h1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA41e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykK1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_451e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0|0e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwX0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w\1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM 81e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY,0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM|1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0U1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQQ1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUK1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg_1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAU0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwO1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0f1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUI1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 :1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 m1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 v1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY91e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw 1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B81e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg'?$60_msg_e:localhost:42455 *1e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A 8L T ( " ) Zic1 ]J D  S ! N 5  g o=# [uC{IP V  q Q1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 }1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygn1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAd1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI*1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY;0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg61e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw^1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0h1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUX1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4T1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsn ?$60_msg_e:localhost:42455 G1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU3$62:localhost:42455 1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYH3$61:localhost:42455 |1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 W 1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m01e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ{1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykZ1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 )1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA^1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro3$69:localhost:42455 3$68:localhost:42455 3$67:localhost:42455 1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM3$66:localhost:42455 3$65:localhost:42455 #I$64_redaction2:localhost:42455 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 '1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM G1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 :d1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E Bm G !hBn]c!E@anon-20191002_181700-129:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAoPFGGATLHBE127.0.0.1Perl + Net::Async::HTTP/0.44mm]c!E@anon-20191002_181700-128:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgoTAEIHPVZLY127.0.0.1Perl + Net::Async::HTTP/0.44m l]c!E@anon-20191002_181700-127:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgoDDIVPYVSUI127.0.0.1Perl + Net::Async::HTTP/0.44muk]c!E@anon-20191002_181700-126:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAoNXVZZYYNXF127.0.0.1Perl + Net::Async::HTTP/0.44m̃j]c!E@anon-20191002_181700-125:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAoKJCLUQSSUQ127.0.0.1Perl + Net::Async::HTTP/0.44mci]c!E@anon-20191002_181700-124:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwoCLOWKQMSAJ127.0.0.1Perl + Net::Async::HTTP/0.44mlh]c!E@anon-20191002_181700-123:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8AoGANYBEJLPQ127.0.0.1Perl + Net::Async::HTTP/0.44mlg]c!E@anon-20191002_181700-121:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQoSXEBHSUFRM127.0.0.1Perl + Net::Async::HTTP/0.44m_f]c!E@anon-20191002_181700-122:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgoKKXSFRABDE127.0.0.1Perl + Net::Async::HTTP/0.44m_e]c!E@anon-20191002_181700-120:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5woNYHQUMFAGS127.0.0.1Perl + Net::Async::HTTP/0.44m9   seQ_u$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 529}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA"], "type": "m.room.join_rules", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040729268, "hashes": {"sha256": "F1Luq5cgYJrWz1mX+VHsa/fxZ4lDphJIEMjVMashbYk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gNT8cSgeXcVE5bxMk8e84EUaQc8VuC5DEQa/58cAFcB7CUpsHDCY5rJnUYDwLGUW2D4sAACqhrMziElzxInlCA"}}, "unsigned": {"age_ts": 1570040729268}}eQ_9$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 528}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM"], "type": "m.room.canonical_alias", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"alias": "#test-20191002_181700-17:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040728076, "hashes": {"sha256": "heawuVnCk/L0qsx+m8YJB52m48A3Zlycx7aZtFZiNjw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xCqJ9JeW5tF77ttCniuMuzBJfQcQWCgXvVEPBRjD12+mM1kma1REB0hEC3WMkqrapREUPhAeZOcdsQwAZ6PSDA"}}, "unsigned": {"age_ts": 1570040728076}}jeQ_c$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 527}{"auth_events": ["$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "type": "m.room.power_levels", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"users": {"@anon-20191002_181700-120:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040726951, "hashes": {"sha256": "DHEzeymYGdg0rOg0cDwwO6CkC91XJi54libptHspXww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "opzc8P6PHUEwIPGJ2iy2Za8pV+jv/Y15dt+bA1nWeK8npExJ3ZJW2iU+cyzFp4GDyLfwnLNMCX/Eyi/DgWu/BA"}}, "unsigned": {"age_ts": 1570040726951}}u eQ_y$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 526}{"auth_events": ["$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg"], "prev_events": ["$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg"], "type": "m.room.member", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-120", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-120:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040725379, "hashes": {"sha256": "nmU7ud6S38oBmnPbtbs7EkPF6iW+6ZwirW4v6vg08oU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ym4xom6jObdUR7Vj0ewCZp8/GdkiR3Cm6hHNb7FqDCMlzOA60sHH2Hk1E4CmYBAAzLaORE3tBQRoPPVy1yWJCg"}}, "unsigned": {"age_ts": 1570040725379}} Ij8p> v D  | J  Ph  V $  \b0 *6W%n< tB}KQ1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs'0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs&0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs%1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY~1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY}1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI \1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI [1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI Z1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s L1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s K1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s J1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0F1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0E1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z981e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z981e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z981e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE 1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE 1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE 1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM s1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM r1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM q1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI 1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k11e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k01e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ "q#E h  q t  1 KTw #,/TkAqhkQ/ e4!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4bjQ# e3!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoiQ3 ee2!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k hQ']e1!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8sgQ))e0!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4pfQ? e/!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMheQ/ e.!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rules$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYmdQ9 e-!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_alias$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQjcQ3 e,!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k bQ']e+!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5odaQ' e*!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM `Q']e&!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgs_Q))e%!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:8800$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUp^Q? e$!CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibility$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEh]Q/ e#!CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rules$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828m\Q9 e"!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_alias$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEj[Q3 e!!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg ZQ']e !CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9DisdYQ' e!CQKLQUpSYakhxVDltC:localhost:8800m.room.create$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKspXQ? e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibility$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYpWQ? e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibility$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIshVQ/ e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rules$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OohUQ/ e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rules$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYjTQ3 e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levels$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgjSQ3 e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0 RQ']e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs QQ']e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsdPQ' e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.create$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQdOQ' e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.create$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAsNQ))e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUpMQ? e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibility$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4hLQ/ e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rules$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8ImKQ9 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_alias$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAjJQ3 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM V ~ L  - S ! Z _ ( ` .{bI0  f4l:Cr@zHPuV$kR X& 1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA "1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 3$68:localhost:42455 3$67:localhost:42455 3$66:localhost:42455 3$65:localhost:42455 3$62:localhost:42455 3$61:localhost:42455 1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 3$70:localhost:42455 1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14In1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac ]1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 J1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro Y1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 :3$69:localhost:42455 1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kV1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E 1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qs1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8=1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk@1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A|0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A0e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Mx1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgN0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M|1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYT1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwk1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUe1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUo1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg{1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYM1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4 1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU*1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw{1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM^1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY]1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgQ1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6My1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw11e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr01e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pkj1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykg1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_401e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUz1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAL1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA 1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU 1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ 1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA 0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ_1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE3$79:localhost:42455 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMu a} { y w u sqomkigeca~ eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800~ eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~ eeQ$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~ eeQ$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~ eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~ eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800  xheQ__$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 533}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-124:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040737483, "hashes": {"sha256": "klhXoAV76woGMfyXh1bM/GVXOrhGVyVUNQ5Yu5D2Ok4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "domBXJzWB/ezxXMVCQ6TOyUnM85oGjeNDKiVmCobuBS/GCjYLz/CTnEXJaq0apZ3noT/llL04bMe2j4ECorYBg"}}, "unsigned": {"age_ts": 1570040737483}}heQ__$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 532}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-123:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040737017, "hashes": {"sha256": "zgUO5RQLWYJPg7+H0YYp7NAQJX3/8vhzAgf8M2tCxiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ytgvalJGPKL5BVWmFSEvgiY7ectJHhUF2LaQ9cQ1uaE6kuJG/fo7J96X9ThkgIhNkiCc/iwCtIVUknXdZWeKBQ"}}, "unsigned": {"age_ts": 1570040737017}}eQ_M$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 531}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4"], "type": "m.room.aliases", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"aliases": ["#test-20191002_181700-17:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040732568, "hashes": {"sha256": "zLTGjrBKn8bOCpx7DviPZ/8ZdntW7HdErhrx+lpY/f8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f1VATQBVmvsmix0brIKMVphAad13aZ9mgrRakXycjC3Q97XXWpBzn+yMhOny8gKV1Mou52oRZKyVqLuKGWS+CQ"}}, "unsigned": {"age_ts": 1570040732568}}eQ_$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 530}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I"], "type": "m.room.history_visibility", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040730202, "hashes": {"sha256": "omuFG0dqpjzLcnraNfpfRmlz4mtur3U6csc9TLfuNj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FhraK23/4BqVNMWTDbonL7b1y8tcwwqQJ8SkrBH9abbChFHal5ZIGHHoLbWcRDbrB4nUxzH/NlI0R46/NoJcDA"}}, "unsigned": {"age_ts": 1570040730202}} EP g  u # {v018E#)e-Q ] $Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQm.room.redaction!CQKLQUpSYakhxVDltC:localhost:8800 m$m)@anon-20191002_181700-125:localhost:8800#(e-Q ] $VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58m.room.redaction!CQKLQUpSYakhxVDltC:localhost:8800 m:mA@anon-20191002_181700-125:localhost:8800!'e)Q ] $f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8Um.room.message!CQKLQUpSYakhxVDltC:localhost:8800 mqmu@anon-20191002_181700-126:localhost:8800 &e'Q ]$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgm.room.member!CQKLQUpSYakhxVDltC:localhost:8800mLm@anon-20191002_181700-126:localhost:8800!%e)Q ]$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUm.room.aliases!CQKLQUpSYakhxVDltC:localhost:8800mm@anon-20191002_181700-125:localhost:8800,$e?Q ]$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEm.room.history_visibility!CQKLQUpSYakhxVDltC:localhost:8800mcmx@anon-20191002_181700-125:localhost:8800$#e/Q ]$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828m.room.join_rules!CQKLQUpSYakhxVDltC:localhost:8800m"m@anon-20191002_181700-125:localhost:8800)"e9Q ]$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEm.room.canonical_alias!CQKLQUpSYakhxVDltC:localhost:8800mm@anon-20191002_181700-125:localhost:8800&!e3Q ]$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckgm.room.power_levels!CQKLQUpSYakhxVDltC:localhost:8800m$m2@anon-20191002_181700-125:localhost:8800 e'Q ]$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dism.room.member!CQKLQUpSYakhxVDltC:localhost:8800mmE@anon-20191002_181700-125:localhost:8800 e'Q  ]$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKsm.room.create!CQKLQUpSYakhxVDltC:localhost:8800mmb@anon-20191002_181700-125:localhost:8800!e)Q ]$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04Mm.room.message!VWYMJxEviBNDdJCuKT:localhost:8800mm@anon-20191002_181700-123:localhost:8800,e?Q ]$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYm.room.history_visibility!GwXGurbyEmykmmHcHJ:localhost:8800m'mv@anon-20191002_181700-124:localhost:8800,e?Q ]$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsm.room.history_visibility!VWYMJxEviBNDdJCuKT:localhost:8800mml@anon-20191002_181700-123:localhost:8800$e/Q ]$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oom.room.join_rules!GwXGurbyEmykmmHcHJ:localhost:8800mm:@anon-20191002_181700-124:localhost:8800$e/Q ]$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYm.room.join_rules!VWYMJxEviBNDdJCuKT:localhost:8800m|mG@anon-20191002_181700-123:localhost:8800&e3Q ]$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgm.room.power_levels!GwXGurbyEmykmmHcHJ:localhost:8800mm@anon-20191002_181700-124:localhost:8800&e3Q ]$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0m.room.power_levels!VWYMJxEviBNDdJCuKT:localhost:8800m]m@anon-20191002_181700-123:localhost:8800 e'Q ]$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsm.room.member!GwXGurbyEmykmmHcHJ:localhost:8800my m~@anon-20191002_181700-124:localhost:8800 e'Q ]$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsm.room.member!VWYMJxEviBNDdJCuKT:localhost:8800mvm{u@anon-20191002_181700-123:localhost:8800 e'Q  ]$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQm.room.create!GwXGurbyEmykmmHcHJ:localhost:8800mnmr@anon-20191002_181700-124:localhost:8800 e'Q  ]$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAm.room.create!VWYMJxEviBNDdJCuKT:localhost:8800mlmn@anon-20191002_181700-123:localhost:8800!e)Q ]$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUm.room.aliases!CgVBWWcRJoHEcwoLcq:localhost:8800m[m] @anon-20191002_181700-120:localhost:8800,e?Q ]$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4m.room.history_visibility!CgVBWWcRJoHEcwoLcq:localhost:8800mRZmV@anon-20191002_181700-120:localhost:8800 2vF o8 g  Q  X  ^ ' J XKzd)St7#6Q' !LFBhoxJpmBqFrwEzGP:localhost:880EQ))!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:88008<Q3 !KIHYKMzkRDrJwiywwz:localhost:8800m.room.power_levels^Q']!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829^Q']!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-484:localhost:8800:Q/ !KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rulesBQ? !KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibility9Q- !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstone<Q3 !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels^Q']!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800:Q/ !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rulesBQ? !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibility6Q' !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.create<Q3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels ^Q']!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800 RQ'E!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455 :Q/ !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules BQ? !KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility 6Q' !KetCYFxrTxawNOGnOf:localhost:8800m.room.create 9Q- !KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstone&<Q3 !KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels'^Q']!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800:Q/ !KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rulesBQ? !KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibility6Q' !KeqmSjifajNKxtgqhj:localhost:8800m.room.create<Q3 !KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levels^Q']!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800:Q/ !KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rulesBQ? !KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibility6Q' !KeBlWUQiLYUoILKkTB:localhost:8800m.room.create?Q9 !KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_alias6Q' !KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatarEQ))!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800<Q3 !KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels&^Q']!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800+^Q']!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800%:Q/ !KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules*BQ? !KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibility(6Q' !KdOYYnOuwAyQzqwUki:localhost:8800m.room.create$<Q3 !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels :^Q']!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800 9RQ'E!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455 =:Q/ !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rules ;BQ? !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibility <6Q' !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.create 8<Q3 !KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels4^Q']!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:88003:Q/ !KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rules6BQ? !KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility96Q' !KXMUzALpMMMKqoQXUS:localhost:8800m.room.create2?Q9 !KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_alias5  6 k < pd]c@anon-20191002_181700-163:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgo127.0.0.1d]c@anon-20191002_181700-160:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgo127.0.0.1d]c@anon-20191002_181700-162:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwo127.0.0.1d]c@anon-20191002_181700-161:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgo127.0.0.1a[a@anon-20191002_181700-15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCg127.0.0.1 d]c@anon-20191002_181700-158:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswo127.0.0.1d]c@anon-20191002_181700-156:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAo127.0.0.1d]c@anon-20191002_181700-154:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0Ao127.0.0.1c]c@anon-20191002_181700-153:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48Cwo127.0.0.1c]c@anon-20191002_181700-152:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgo127.0.0.1~c]c@anon-20191002_181700-151:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwo127.0.0.1} g * T~=gg]!c@anon-20191002_181700-134:localhost:8800PCQACQPKQAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58wog]!c@anon-20191002_181700-133:localhost:8800LAOZZBUWCAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPcHdsY2xTMmxNRHhGelAKMDAyZnNpZ25hdHVyZSCRO3NI972HYQiWbTV_AWWTe36rrhxCS0LG7T3jgGN7_gog]!c@anon-20191002_181700-131:localhost:8800SOOHJVIHORMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwog]!c@anon-20191002_181700-132:localhost:8800JPOUKBEMRTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQog]!c@anon-20191002_181700-129:localhost:8800PFGGATLHBEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAog]!c@anon-20191002_181700-130:localhost:8800OESOAGWHDNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5JbFJkNypzTWs2eURlTnUKMDAyZnNpZ25hdHVyZSCDDhptP9gyMvPD-AX61QNi0vzkJgRqWaZ8eBWmEREh6Aog]!c@anon-20191002_181700-127:localhost:8800DDIVPYVSUIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgog]!c@anon-20191002_181700-128:localhost:8800TAEIHPVZLYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgog]!c@anon-20191002_181700-125:localhost:8800KJCLUQSSUQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAog]!c@anon-20191002_181700-126:localhost:8800NXVZZYYNXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAog]!c@anon-20191002_181700-124:localhost:8800CLOWKQMSAJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwo 2 2jeQ_c$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 537}{"auth_events": ["$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ", "$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "prev_events": ["$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "type": "m.room.power_levels", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"users": {"@anon-20191002_181700-124:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040742834, "hashes": {"sha256": "/yrezdAxtlnGbj5sY3o2lp+Z9LBwCIJ6A89RLFh15Uw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PG4hkFNCy6Ilao3jNYvGGOFvyywTWjApu2WA0faXdh74Ynqpg/+6QmJSkjX1lI8bRLCc1Ld+b78LGUAw488zBw"}}, "unsigned": {"age_ts": 1570040742834}}jeQ_c$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 536}{"auth_events": ["$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "type": "m.room.power_levels", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"users": {"@anon-20191002_181700-123:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040741981, "hashes": {"sha256": "TO8ngDIB7W3athF2Y9w+qe/Tn/pt8tdm5MaZ8PI2WuI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RxFFYMbfC9LIfHa6AZTmkchuW3FPenLMZd5R3IwYeTO8OH5Gk+fygm75sr9u9gz5PI0iJnwZVgnh0lWnFJ6mCg"}}, "unsigned": {"age_ts": 1570040741981}}ueQ_y$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 535}{"auth_events": ["$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ"], "prev_events": ["$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ"], "type": "m.room.member", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-124", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-124:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040740105, "hashes": {"sha256": "J135xIpJ+ixGreNobvcyaHVm1ohYMEiyKLJvYJzI3+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xMu2Hz39uUPhPcBi3kmiFS3P61G545LGdRpRrfq28B9AeNyfy8nbNAniLS5xwcb1XknaG+SahsArEM01RDSEDw"}}, "unsigned": {"age_ts": 1570040740105}}ueQ_y$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 534}{"auth_events": ["$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA"], "prev_events": ["$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA"], "type": "m.room.member", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-123", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-123:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040739502, "hashes": {"sha256": "kBtNHQi1F5rH5s9Ql+3vvEzc3OILO5GHai2pvC1G7uY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IUAyX1hMWOn/KccFFYSbOHXlemO3HshtI8tSK9p+n9zXKhpvkbvZRb/IxuIxn3ERfGYX5biC8x5rGgsMDvEHBA"}}, "unsigned": {"age_ts": 1570040739502}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1_e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M.1^e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE-1]e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc,1\e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM+1[e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs*1Ze$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ)1Ye$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0'1Xe$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8&1We$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k%1Ve$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$1Ue$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0#1Te$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4"1Se$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!1Re$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY 1Qe$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1Pe$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1Oe$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1Ne$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201Me$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1Le$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE1Ke$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1Je$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1Ie$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI1He$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1Ge$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1Fe$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1Ee$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41De$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1Ce$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1Be$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q01Ae$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01@e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1?e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA 1>e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI 1=e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8 1<e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk 1;e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY 1:e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk19e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM18e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod417e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw16e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI15e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc14e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU13e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu412e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko11e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag10e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81/e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41.e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1-e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY1,e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ1+e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k1*e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o1)e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1(e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ1'e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw581&e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U1%e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1$e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1#e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1"e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281!e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1 e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs ,NC 8 - { " p  e ZOD9.|#qf V@eL$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYsha256(%F=`2n.xM58s6V?eL$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAsha256b$ !2rؽ@^ͫ~EM V>eL$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIsha256Y:qJ 1@CnV=eL$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8sha256s>Q> DsG"z:`oV<eL$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xksha256>yd^Y3fq X-*EQFE_!1sA_5ßV&eL$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8Usha256a2-EPv V%eL$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgsha256zJġ/!(|MD4a0V$eL$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUsha256\1qɦ}{?h.5V#eL$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEsha256A!wV|-D`ZETu~U\"AV"eL$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828sha256mDΧ? K݅[]<%V 4oV!eL$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEsha256hq|$f8ļϹ V eL$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckgsha256>Kْ *8gsrHVeL$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dissha256J\6"ϖD-QӃVeL$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYsha256lJrXob#*K:Z+TVeL$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIssha2560 *OJsv?էiJ]g uAXVeL$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oosha256Dt:)=9 Rr,=AUVeL$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYsha256Wf~kwR'34ʄ5ӌVfVeL$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgsha256c@⛆q=^_^]vsrIǥXVeL$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0sha256k0uKMO* SD1ŝVeL$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCssha256=qy4;~g=]w3߶ZܣP+VeL$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFssha256];n'wXu4⦐]ωFO[ MyM m@ _ 3   R % r E  d 7 W *wJi<\/|O"nAa4,Q!SBEprlZiuliFNSfNmz:localhost:8800nn+Q !SBEprlZiuliFNSfNmz:localhost:8800mm,Q!RmwbYvIIQyPlHlClty:localhost:8800||,Q!RmwbYvIIQyPlHlClty:localhost:8800{{,Q!RmwbYvIIQyPlHlClty:localhost:8800zz,Q!RmwbYvIIQyPlHlClty:localhost:8800yy,Q!RmwbYvIIQyPlHlClty:localhost:8800xx+Q !RmwbYvIIQyPlHlClty:localhost:8800ww,Q!RmdhCjvouVLmyIHjaM:localhost:8800 II,Q!RmdhCjvouVLmyIHjaM:localhost:8800 HH,Q!RmdhCjvouVLmyIHjaM:localhost:8800 GG,Q!RmdhCjvouVLmyIHjaM:localhost:8800 FF,Q!RmdhCjvouVLmyIHjaM:localhost:8800EE,Q!RmdhCjvouVLmyIHjaM:localhost:8800DD,Q!RmdhCjvouVLmyIHjaM:localhost:8800CC,Q!RmdhCjvouVLmyIHjaM:localhost:8800BB,Q!RmdhCjvouVLmyIHjaM:localhost:8800AA,Q!RmdhCjvouVLmyIHjaM:localhost:8800@@,Q!RmdhCjvouVLmyIHjaM:localhost:8800??+Q !RmdhCjvouVLmyIHjaM:localhost:8800>>,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 +Q !RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( (,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' ',Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & &,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % %,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ $,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # #,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " ",Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! !,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 +Q !RSLvuCuAqKQQrKCxNq:localhost:8800  ,Q!RPfffkmSEbWggEjnoI:localhost:8800--,Q!RPfffkmSEbWggEjnoI:localhost:8800++,Q!RPfffkmSEbWggEjnoI:localhost:8800((,Q!RPfffkmSEbWggEjnoI:localhost:8800%%,Q!RPfffkmSEbWggEjnoI:localhost:8800""+Q !RPfffkmSEbWggEjnoI:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800+Q !ROoilpDjLJfjKfSPIi:localhost:8800,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 +Q !RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800+Q !QyLUggxrTnULUAOseq:localhost:8800,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800  ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ ~+Q !QxqzQoEBIZhmzHIGrl:localhost:8800 } },Q!QnmLrBAxeItdHsaxWf:localhost:8800 k k,Q!QnmLrBAxeItdHsaxWf:localhost:8800 j j,Q!QnmLrBAxeItdHsaxWf:localhost:8800 i i MyM m@ _ 3   R % r E  d 7 W *wJi<\/|O"nAa4,Q!SBEprlZiuliFNSfNmz:localhost:8800nn+Q !SBEprlZiuliFNSfNmz:localhost:8800mm,Q!RmwbYvIIQyPlHlClty:localhost:8800||,Q!RmwbYvIIQyPlHlClty:localhost:8800{{,Q!RmwbYvIIQyPlHlClty:localhost:8800zz,Q!RmwbYvIIQyPlHlClty:localhost:8800yy,Q!RmwbYvIIQyPlHlClty:localhost:8800xx+Q !RmwbYvIIQyPlHlClty:localhost:8800ww,Q!RmdhCjvouVLmyIHjaM:localhost:8800 II,Q!RmdhCjvouVLmyIHjaM:localhost:8800 HH,Q!RmdhCjvouVLmyIHjaM:localhost:8800 GG,Q!RmdhCjvouVLmyIHjaM:localhost:8800 FF,Q!RmdhCjvouVLmyIHjaM:localhost:8800EE,Q!RmdhCjvouVLmyIHjaM:localhost:8800DD,Q!RmdhCjvouVLmyIHjaM:localhost:8800CC,Q!RmdhCjvouVLmyIHjaM:localhost:8800BB,Q!RmdhCjvouVLmyIHjaM:localhost:8800AA,Q!RmdhCjvouVLmyIHjaM:localhost:8800@@,Q!RmdhCjvouVLmyIHjaM:localhost:8800??+Q !RmdhCjvouVLmyIHjaM:localhost:8800>>,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 +Q !RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( (,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' ',Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & &,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % %,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ $,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # #,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " ",Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! !,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 +Q !RSLvuCuAqKQQrKCxNq:localhost:8800  ,Q!RPfffkmSEbWggEjnoI:localhost:8800--,Q!RPfffkmSEbWggEjnoI:localhost:8800++,Q!RPfffkmSEbWggEjnoI:localhost:8800((,Q!RPfffkmSEbWggEjnoI:localhost:8800%%,Q!RPfffkmSEbWggEjnoI:localhost:8800""+Q !RPfffkmSEbWggEjnoI:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800+Q !ROoilpDjLJfjKfSPIi:localhost:8800,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 +Q !RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800+Q !QyLUggxrTnULUAOseq:localhost:8800,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800  ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ ~+Q !QxqzQoEBIZhmzHIGrl:localhost:8800 } },Q!QnmLrBAxeItdHsaxWf:localhost:8800 k k,Q!QnmLrBAxeItdHsaxWf:localhost:8800 j j,Q!QnmLrBAxeItdHsaxWf:localhost:8800 i i }~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  y r k d ] V O H A : 3 , %     | t l d \ T L D < 4 , $    D | t l d \ T L < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $   |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tl}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPON}M}L|K{JzIyHxGwFvEuDtCrBpAp@o?n>m=l<k;j:h9g8f7e6d5c4b3a2`1_0]/\.[-Z,Y+X*V)U(T'S&R%P$N#N"M!L KJHFFEDCB@?>=<;:966 5 4 3 2 10/-,+*)('&##"      ~}|{zyxwvutsrqponml~k}j|i{hygxfwevductbsar`p_o^n]m\k[jZiYhXfWeVdUcTaS`R_Q^P\O[NZMYLWKVJUITHRGQFPEODNCMBLAK@J?I>H=G<F;E:D9B8A7@6?5>4<3;2:1907/6.5-4,3+2*1)0(.'-&,%+$)#("'!& $#"!       e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( hpx`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    }|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987654~3~2}1|0{/z.y-v,v+u*t)s(r'q&o%m$m#l"k!j ihfddcba`_^]\ZYXVVU T S R Q POLLKJIHGFEDC@@?>=<;:987442210/.-,+)''&%$#"!      KIHGFEDCB@?==<;:976543210.-,+*('&%$"!     ~ }}wqke_YSMGA;5/)# {uoic]WQKE?93-'!   x q j c \ U N G @ 9 2 + $      { s k c [ S K C ; 3 + #    { s k c [ S K C ; 3 + #    { s k c [ S K C ; 3 + #    { s k c [ S K C ; 3 + #   {skc[SKC;3+# {skc[SKC;3+# {skc[SKC;3+# {skc[SKC;3+# {skc[SKC;3+# {sk}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM~L}K|J{IzHyGxFwEvDuCsBrAq@p?o>n=m<l;k:i9h8g7f6e5d4c3b2a1`0^/].\-[,Z+Y*W)V(U'T&S%Q$P#O"N!M LKIHGFEDCA@?>=<;:87 6 5 4 3 210.-,+*)('%$#"!      ~}|{zyxwvutsrqponmlk~j}i|hzgyfxewdvcubtas`q_p^o]n\l[kZjYiXgWfVeUdTbSaR`Q_P]O\N[MZLXKWJVIUHSGRFQEPDOCNBMAL@K?J>I=H<G;F:E9C8B7A6@5?4=3<2;1:08/7.6-5,4+3*2)1(/'.&-%,$*#)"(!' %$#"          e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    }|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98765432~1}0|/{.z-x,w+v*u)t(s'r&p%o$n#m"l!k jigfedcba`_^][ZYXWV U T S R QPNMLKJIHGFEDBA@?>=<;:986543210/.-,*)('&%$#"!     LJIHGFEDCA@?>=<;:87654321/.-,+)('&%#"!     ~   j eQ_c$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 545}{"auth_events": ["$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "type": "m.room.power_levels", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"users": {"@anon-20191002_181700-125:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040751652, "hashes": {"sha256": "Zpj/pHIg3dw2Zh30HtThVF1Wl3QXuWPlzj6n3K8ZzL8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l3v6aLvonhQgtjM5rjc9gNXBq4JmTKHH+WVvG/fz2DcB0RDcr5/unkHLe6QfJOOkCFXKqRP/nn4MLnwWWS+ZBQ"}}, "unsigned": {"age_ts": 1570040751652}}ueQ_y$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 544}{"auth_events": ["$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs"], "prev_events": ["$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs"], "type": "m.room.member", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-125", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-125:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040749276, "hashes": {"sha256": "Nl2I4Z/u8Xd8hfPHLnh5iR3oFXMPIbFMxtbWexBoTnY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mOwHr6BfQb1neNUDXWwB7FuewieSj3cfNTuJhdOyufHmRFHeZFpN8wYr7F0x7EZA53EPishWfGLgWWvNkXSZDw"}}, "unsigned": {"age_ts": 1570040749276}}heQ__$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 543}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-125:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040748568, "hashes": {"sha256": "hMyHJiydY6LsaPrUq8rA2sBODvLcBIarWqn3z/0nVY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FYJgV/Am2QkGOrZim7PeAfoIy46fz3fxTFza2tdKnLXpHQBkouuc8Rt7LlU5aifPBz8/HUdQvAENY2KvNk9gAQ"}}, "unsigned": {"age_ts": 1570040748568}}}eQi$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "txn_id": "58", "stream_ordering": 542}{"auth_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0", "$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs"], "type": "m.room.message", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"body": "test", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040746912, "hashes": {"sha256": "X4ePuFhLISsJTrc5WPcGDFSlEkMBA8L1rcHLfoj1cKo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vyEoYHfSoqpMShthqoIh2JHlizjtZ+fHc2bYSflz7aSmJHx7Vt6Jql9rH89618/dKehDZMv6Xm/n+UrPG+X/Cg"}}, "unsigned": {"age_ts": 1570040746912}} -RM H C > 9 4/*|%w rmhc TMQeK!cHtqiAyCHEAoBIbCmL:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYATLQeJ!cHtqiAyCHEAoBIbCmL:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFITKQeI!cHtqiAyCHEAoBIbCmL:localhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3ETJQeH!cHtqiAyCHEAoBIbCmL:localhost:8800$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDATIQeG!cHtqiAyCHEAoBIbCmL:localhost:8800$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcTHQeF!cHtqiAyCHEAoBIbCmL:localhost:8800$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4TGQeE!cHtqiAyCHEAoBIbCmL:localhost:8800$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MTFQeD!cHtqiAyCHEAoBIbCmL:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRETEQeC!cHtqiAyCHEAoBIbCmL:localhost:8800$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0TDQeB!OBWkjfrDCNgYFfblia:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0TCQeA!OBWkjfrDCNgYFfblia:localhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYTBQe@!OBWkjfrDCNgYFfblia:localhost:8800$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSATAQe?!OBWkjfrDCNgYFfblia:localhost:8800$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIT@Qe>!OBWkjfrDCNgYFfblia:localhost:8800$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8T?Qe=!OBWkjfrDCNgYFfblia:localhost:8800$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkT>QeeQ9 $aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_aliasg=eQ3 $PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels <eQ']$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800joina;eQ' $q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800m.room.create ?FN V  \  d & l . q 1w9{;CH LNNR Q  !VWYMJxEviBNDdJCuKT:localhost:8800m&\1<= Q  !CgVBWWcRJoHEcwoLcq:localhost:8800m&\y>< Q!HcMGemcRrLnLprOJJR:localhost:8800m&\ >; Q!SyIWYOmcGiASNkPCTB:localhost:8800m&\ <: Q  !msMfSdLIAvklSSAnci:localhost:8800m&\6<9 Q  !GgUNbVXspVTpOlaHBl:localhost:8800m&\M>8 Q!eKrOqiOabJcMgIJjwC:localhost:8800m&\ !>7 Q!vVmSdclwPIqYDbnmPn:localhost:8800m&\ !>6 Q!edbUkYJIZBNOiTuLJs:localhost:8800m&\ !>5 Q!VAEDgDJVqmxXZyAlSW:localhost:8800m&\  $>4 Q!eySSVuCclRpBDgwKIU:localhost:8800m&\ *>3 Q!fJXiUpbbOlLbHWmPgs:localhost:8800m&\  )2>2 Q !oXKJArsPmtgaYANBrg:localhost:8800m&\  )T<1 Q  !egCvzKpbEwmuvDoBTb:localhost:8800m&\ >0 Q!XgobMgBjNcDRJnRXLD:localhost:8800m&\ #.>/ Q!wIhMbfQzYbJobPdwyi:localhost:8800m&\<. Q  !cSUQGmpIsSCBAVTOHo:localhost:8800m&\C<- Q  !SBEprlZiuliFNSfNmz:localhost:8800m&\<, Q  !KxhGcTbEWmtgGNpdox:localhost:8800m&\|=+ Q!HmkcAMkMjWRhTDJMsy:localhost:8800m&\ =* Q!OMkiVTuuOEeiFAXtUY:localhost:8800m&\ =) Q!BrssELMbasSzTFpIXm:localhost:8800m&\ <( Q   !RmdhCjvouVLmyIHjaM:localhost:8800m&\ .<' Q   !EyEaTZElOkdURKbEXo:localhost:8800m&\<& Q   !TWETXUgfFZafDdbqLS:localhost:8800m&\<% Q  !HAFNBarGuVZuWCgwWM:localhost:8800m&\4>$ Q!duCKuavMBSfRbTFPsc:localhost:8800m&\># Q!TleKOyAElrpgyyrAQA:localhost:8800m&\ ">" Q!IGVHKYcSuxzVPlFHlj:localhost:8800m&\  Q!OaCEdDAiatpwYcagUb:localhost:8800m&\  < Q  !GGTWnzJfvPQBgQqDIE:localhost:8800m&\i= Q !cosGKKhHvKaVukBCic:localhost:8800m&\#> Q!rZWweGEChkxxtzyfDB:localhost:8800m&\< Q  !uJtKGXTNdEnCPNOGDx:localhost:8800m&\:< Q  !vJQYmOxOBLwFKzYkNj:localhost:8800m&\*< Q  !kkgEEVUJynguTqAoWD:localhost:8800m&\<< Q  !dUnULFLGtgaVdwHtnz:localhost:8800m&\:< Q  !aWbcZNVBalJilCEsdr:localhost:8800m&\:< Q  !kxTDuIasPNpXtiRsif:localhost:8800m&\7< Q  !wvnfKBSrUlfNmYoeil:localhost:8800m&\:< Q  !NhWgOTYzEPRwAxRQvS:localhost:8800m&\>< Q  !scyFsXcUIJiLIMwWMY:localhost:8800m&\>< Q  !aWJOsiuJONOvjKWEjO:localhost:8800m&\A< Q  !BDASLhdcKfNwxCTCSg:localhost:8800m&\A< Q  !xwoIOPTGmJIlTXakxC:localhost:8800m&\A> Q !jYzridjeihmwPBuwLb:localhost:8800m&\5< Q  !NZHpBquHDfJAjiawGk:localhost:8800m&\L< Q  !uxKymrHZeXRYCZwekU:localhost:8800m&\O< Q  !sPWVGnipjiiWQpywNO:localhost:8800m&\ @< Q  !GixhPUMvtKSWoKRgvw:localhost:8800m&\< Q  !zhCsYcaweVFJLLNwBz:localhost:8800m&\b< Q  !loalEsWaTYwrVUNJLr:localhost:8800m&\< Q  !LaLcEGFLpjdlYlYKGC:localhost:8800m&\< Q  !odAvowLhHJcmkKlxFk:localhost:8800m&\< Q  !plcvCHNbjCkNMMxnTk:localhost:8800m&\B< Q  !QZhNrNpwObZGJZpdAG:localhost:8800m&\4< Q  !zNCItZNbpkZKuufRhC:localhost:8800m&\Z ?DG H  N  R  U   ! _h(l.s4t4x:BJ L <~ Q  !sfXbvAcOUJhzGwWEpZ:localhost:8800m&\ >} Q!YufaOfAlruTdjyUCwO:localhost:8800m&\ 9>| Q!ifQxHmNAcSSGHVMjfi:localhost:8800m&\ !>{ Q!EABRjdYuYumMhLSwIa:localhost:8800m&\ !>z Q!FIOuvzpMhoERunVYYA:localhost:8800m&\ 9>y Q!zNBpypJDRMlBdOcLlW:localhost:8800m&\ !l Q!FPcQcheNebvdFvmOnr:localhost:8800m&\ z>k Q!vOfeZvbtpuHfoqShFl:localhost:8800m&\ #>j Q!EieRtaCFZJJCIOkRPp:localhost:8800m&\ #>i Q!NQgavrmiCPUVaVjssy:localhost:8800m&\ z>h Q!hgjYwwwjWJNgwrzOto:localhost:8800m&\ #=g Q !dnZVySJLGNtUKsSgXW:localhost:8800m&\=f Q !oznZaCpONuNDaLarkI:localhost:8800m&\b Q!bnTuVBaAJTPbcYZtRl:localhost:8800m&\  <` Q  !tDsPLsKOLPePtEWRwn:localhost:8800m&\y>_ Q!XMNRkfscQXRjgYrOSd:localhost:8800m&\=^ Q !wUuodvgsmAJqKJUBCQ:localhost:8800m&\:] Q !VCSCNemqikJZiRtxrs:localhost:8829m&\ZU Q!itKDOCtoMkFUETDtle:localhost:8800m&\T=T Q  !qxqNYKdtgvOQdhmgsj:localhost:8800m&\  *j>S Q!MlzmtUYSZOiByAZdKx:localhost:8800m&\P Q!IMiczgkCTjejbnbeyP:localhost:8800m&\6>O Q!HIZTeBCxvpMSpcqGVD:localhost:8800m&\`K Q!JusxqeECtidaPlWqhp:localhost:8800m&\7>J Q !aWvVRVaDflYyyGTOdD:localhost:8800m&\ )=I Q !GiSxJsKZhQVHBkrVPn:localhost:8800m&\  / >H Q!AjjrNwXmPTCruHxaJq:localhost:8800m&\  #>G Q !BkzROHxDAfKIzYpmPV:localhost:8800m&\  *~=F Q !WWZVpyLeZfyfpWidLx:localhost:8800m&\  %>E Q!XIqmzIFbkHGQPIpywk:localhost:8800m&\  $C Q !cHtqiAyCHEAoBIbCmL:localhost:8800m&\  $@ Q!CQKLQUpSYakhxVDltC:localhost:8800m&\ " LYj8p> Y v ] D + | c 1 i 7  o = u C }KR Y(`.f4S!1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI 1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA 1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU 1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 x1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA A1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:42455 ~1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM3$68:localhost:42455 }3$67:localhost:42455 y3$66:localhost:42455 z3$65:localhost:42455 x1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 =1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE3$62:localhost:42455 v1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY3$61:localhost:42455 m1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM}1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4R1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkL1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ \0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Mv1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas0e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU~1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr081e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 `1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_401e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUR1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa00e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwR0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wc1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU V1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA 1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w=1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEJ1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c .1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI3$56:localhost:42455 71e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE3$55:localhost:42455 11e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc53$54:localhost:42455 &3$51:localhost:42455 3$50:localhost:42455 1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs 1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYu1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok %1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0 fP101/2041627384951062738495:6;7<8=9>20?3@4A5B6C8E9F3y1G2H4I6J7K8L9M4{0N1O3P4Q6R7T8S5}0V1W2X3Y4Z6[8\6~0]1_2a3b4c5e6f7g8i9j70k3l4m5n6o8p9r80q1s7002t3u4v5w6x7z8|9~902^01910021234567 3`1 2 3 4 567896d123456787012457 9!8h1"2#3$4%5&6'7(80029*1 9)91*3+5,7-9.  7 7Fanoncreeperdhere   lemurlovervocalhostmyname   overridden lremote -RM H C > 9 4/*|%w rmhc T Qe !XIqmzIFbkHGQPIpywk:localhost:8800$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20TQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSETQe!cHtqiAyCHEAoBIbCmL:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagTQe!cHtqiAyCHEAoBIbCmL:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYATQe!cHtqiAyCHEAoBIbCmL:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFITQe!cHtqiAyCHEAoBIbCmL:localhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3ETQe!cHtqiAyCHEAoBIbCmL:localhost:8800$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDATQe!cHtqiAyCHEAoBIbCmL:localhost:8800$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcTQe!cHtqiAyCHEAoBIbCmL:localhost:8800$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4TQe!cHtqiAyCHEAoBIbCmL:localhost:8800$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MTQe!cHtqiAyCHEAoBIbCmL:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRETQe!cHtqiAyCHEAoBIbCmL:localhost:8800$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0TQe!OBWkjfrDCNgYFfblia:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0TQe!OBWkjfrDCNgYFfblia:localhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYT Qe !OBWkjfrDCNgYFfblia:localhost:8800$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAT Qe !OBWkjfrDCNgYFfblia:localhost:8800$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIT Qe !OBWkjfrDCNgYFfblia:localhost:8800$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8T Qe !OBWkjfrDCNgYFfblia:localhost:8800$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkT Qe !OBWkjfrDCNgYFfblia:localhost:8800$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYTQe!OBWkjfrDCNgYFfblia:localhost:8800$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56VkTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEITQe!ntuwVdUxfzNIhIKYaz:localhost:8800$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMT~Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYT}Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQT|Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3kT{Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5oTzQe!ntuwVdUxfzNIhIKYaz:localhost:8800$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqMTyQe!CQKLQUpSYakhxVDltC:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgTxQe!CQKLQUpSYakhxVDltC:localhost:8800$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUTwQe!CQKLQUpSYakhxVDltC:localhost:8800$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEETvQe!CQKLQUpSYakhxVDltC:localhost:8800$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828TuQe!CQKLQUpSYakhxVDltC:localhost:8800$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPETtQe!CQKLQUpSYakhxVDltC:localhost:8800$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg  gh$eQ_M$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 549}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE"], "type": "m.room.aliases", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"aliases": ["#test-20191002_181700-18:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040754704, "hashes": {"sha256": "qJrOHmYoAzQnQvCTZYJTuu5bHPfDMm7dSGiZKZoQ9bM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6abx4lSw2WtBaf7arxKq2kIrO3Z+FKcVmr96uZHmbOsUkzanfAlHb5rVZFWNNYwK034COvfj4q4Za10C0pZpCA"}}, "unsigned": {"age_ts": 1570040754704}}#eQ_$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 548}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"], "type": "m.room.history_visibility", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040753507, "hashes": {"sha256": "GL4S172Gl12zqxB6rrLYeJ+UqyKxwzlhvxm40tOqV8w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3wd9urWbcVksNahpyr3zCoFP7ZzYKzk/Qpxxw/1KO7A6k/JZO2GqhJBDPr1qHX3nDUy0ZczQdETTM211P/7cAw"}}, "unsigned": {"age_ts": 1570040753507}}s"eQ_u$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 547}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE"], "type": "m.room.join_rules", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040752930, "hashes": {"sha256": "3tfCRuG4sY4txLcarG8r5hrYf8EDta/bc8ZSfkJk+OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KheeodYZUdkCzUVU49FCm3lPMGtg37JXOLJZMo6jRZTFbwfclHaZFtzGp0WpJKBrEMJIQAzqNEeYZRXONFm4BA"}}, "unsigned": {"age_ts": 1570040752930}}!eQ_9$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 546}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg"], "type": "m.room.canonical_alias", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"alias": "#test-20191002_181700-18:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040752332, "hashes": {"sha256": "nW0XM9wE9e1JWR3FYTfRdbDdky+J3SdnHwtTSZ8P+ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qsYWSaVJ9RB4b3o+RmaMOAGyWfg3DnH3WseSoM5S6fWdfeil33p43cpQIcZzUHrjLpnwwWQOXta+VcztGnw9Aw"}}, "unsigned": {"age_ts": 1570040752332}} a} { y w u sqomkigeca~?eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~>eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~=eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~<eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~;eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~:eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~9eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~8eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~7eeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~6eeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~5eeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~4eeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~3eeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~2eeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~1eeQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~0eeQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~/eeQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~.eeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800~-eeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~,eeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~+eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~*eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~)eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~(eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~'eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~&eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~%eeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~$eeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~#eeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~"eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~!eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800 ~z v r n j fb^ZVRNJFeeQ$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800eeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800eeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800~eeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800}eeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800|eeQ$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800{eeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800zeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800yeeQ$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800xeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800weeQ$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800veeQ$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800ueeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800teeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800seeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800reeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800qeeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800peeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800oeeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800neeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800meeQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800leeQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800keeQ$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58!CQKLQUpSYakhxVDltC:localhost:8800jeeQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800ieeQ$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800heeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800geeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800feeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800 V 'xV(eQ_$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 553}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58"], "type": "m.room.redaction", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {}, "depth": 11, "prev_state": [], "redacts": "$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58", "origin": "localhost:8800", "origin_server_ts": 1570040757540, "hashes": {"sha256": "WFQPyLctbiL03z6DC6pr0ghXBVcRCMJTjWnp8MS9We0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "owXjoQcedRqmiMBx0uFhXOWsO3R9KAednhZAdnwkvRQclRF5J9A6+PcLl2Cni0qRm/UG8E/JPP/KguedaLWRAw"}}, "unsigned": {"age_ts": 1570040757540}}M'eQ_)$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 552}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U"], "type": "m.room.redaction", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040757050, "hashes": {"sha256": "KjGpsPjT5dcsl44KFyLGCanb5btSgEEVedcejgQiaYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VX7tmEI+hMLApriqZPHkw5m0B9mv9n7qWwnvJ3t8/WezEo7df/VHUqOQ+Yhk6ZtFa5rzkB55btAuk1ezIzVWDQ"}}, "unsigned": {"age_ts": 1570040757050}}Z&eQ#$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 153, "txn_id": "59", "stream_ordering": 551}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg"], "prev_events": ["$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg"], "type": "m.room.message", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-126:localhost:8800", "content": {}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040756337, "hashes": {"sha256": "mRVaJFPDTU6NyObN7AKtrkSkHCmZVMOH3Df71oFZXBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Yr8exnAxOGRGDM7BLWtfYK8JWoBgm6cJu+PZQrJVHrcOJo1nGrQNIVcjN+ln8e1mvOouneZienYpJCW+FIAwBQ"}}, "unsigned": {"age_ts": 1570040756337}}U%eQ_9$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 153, "stream_ordering": 550}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"], "prev_events": ["$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU"], "type": "m.room.member", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-126:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-126", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-126:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040755532, "hashes": {"sha256": "v5PPwDaerkovCKrvpY2Zdj1pPDYQAGYhK0na95sXWi0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gRXkhxkJKlkjh93lx0i3CXc3w8tgBOgCjWg5qbT58R664FjQ6j2vAmTPs4J0ViNgUBAGPVkbpetmgjrL2lY2CA"}}, "unsigned": {"age_ts": 1570040755532}} $p 0 @ P ` p(8HXhD  pu- ]@anon-20191002_181700-162:localhost:8800$2b$04$i5xSH6eU8jakNTzW8p5ld.nsVvDK8BEm68MnZV./rPK0p84TOgaJS]K!, / @4:localhost:8800]Ku+ ]@anon-20191002_181700-161:localhost:8800$2b$04$0o3TSpWCE5106gJsz32tS.O5qGstK1SKyGoxHiLiGAfgsiVtBGpX.]C!* / @3:localhost:8800]Bu) ]@anon-20191002_181700-160:localhost:8800$2b$04$QUIQVwC/POVPj99X.Ift/uTwfdMUk0Fhp2QDfX9eMgNxo4c59TcnO];!( / @2:localhost:8800];!' / @1:localhost:8800];u& ]@anon-20191002_181700-159:localhost:8800$2b$04$yD58DqGX0mkrPSeGgUoIQuwgEsvBi80D7tPYfn6K0ouA8GlmiGQX2]3u% ]@anon-20191002_181700-158:localhost:8800$2b$04$8Kg6BxkvJ5rAS2Twoba49u8F7dRwiVpHTAoraZUl.D6R.mFVMyRwm]3u$ ]@anon-20191002_181700-157:localhost:8800$2b$04$sOd.OAO87i9ULYMauSE1oe4pAx9gK9ZSpeM3lDDIEMNipYBWuprQa]+u# ]@anon-20191002_181700-156:localhost:8800$2b$04$6XJmdjc8jOs2Mtqh6FCkb.yV/VPg7eoasZ.tLNv6mb2iW4Yoch/u.]*u" ]@anon-20191002_181700-155:localhost:8800$2b$04$POMbDLJ9p95iutvJplZ3re/arWQYPa7mPMs0Jfc.vZWdN1OVrS.1e]$u! ]@anon-20191002_181700-154:localhost:8800$2b$04$WsSQLGzUIiHQaCWufQmYVeOBUo1VsJwmmK6E/NomCDJMeLetqQKjK]$u ]@anon-20191002_181700-153:localhost:8800$2b$04$tmeI2JrIpki0UXkgATXL5.6A8ggupSPhJ0o/kXDm/5JXJNx7ZKffC]u ]@anon-20191002_181700-152:localhost:8800$2b$04$xjbk17XL/wsG323kEke7jeTlPc55Kh4oh3syONzj1K.GRY1xD/8kq]u ]@anon-20191002_181700-151:localhost:8800$2b$04$5wo5/18nhPJVe8xYRox7E.73u4FTSQwDDMRpB2Jp70i/kiQEk35uG]u ]@anon-20191002_181700-149:localhost:8800$2b$04$1RMfvFuh6Z6Qsrv1IxBfeeTud9Ou52yW7d1g6Kl5kqD69s8iPhcxu]u ]@anon-20191002_181700-150:localhost:8800$2b$04$byz1D8hQFz3fZUX81nCQCedsQWoIgKsTMpwWR9/RJzftclW6wX2e2]u ]@anon-20191002_181700-146:localhost:8800$2b$04$9InPJaJ.AZLKTOGgS1vu2uBkGA0x0fK3Rc.fSirT5yFX55lzUh6Ym]u ]@anon-20191002_181700-143:localhost:8800$2b$04$W0Bst5dKsTnCF4NOeJ2JX.hh12fZZgATSqBX1lE8C2PNaU7EJZMAm]u ]@anon-20191002_181700-144:localhost:8800$2b$04$DLN43kaqKun4BYU9InbduuUsygQF3GHnOLS1KJSEpr2xmU2T.OUQG]u ]@anon-20191002_181700-142:localhost:8800$2b$04$X8g8dW3bqgqoBXnhEKHEduaW1Fw8LPbUge1dpLHU7Uy5fLn1GR8cW]u ]@anon-20191002_181700-141:localhost:8800$2b$04$EK0l0pvKUeMdgaTWc3wUCe95TX8I.EqLhUKn0KRDnwipyoLzsQ16e]u ]@anon-20191002_181700-140:localhost:8800$2b$04$DYkWy/S.a5MNi.tuUvaDMuQvurNVtgWQ036s/r54ibpYrrXdFR9Iq]u ]@anon-20191002_181700-138:localhost:8800$2b$04$e4VBigcjuZ5a4qh8nPskJeVNcBUZz0Vx2.emWcCC0uFc9BwEb6pW2]u ]@anon-20191002_181700-136:localhost:8800$2b$04$opK1pzUOVesRdbRlud.fTOE6LgqNxrXQWNACBxi1xYLp2O8DT5OJm]u ]@anon-20191002_181700-137:localhost:8800$2b$04$beKushmAttf3SjctSh954ugvFDJDaK/k3TfT9hfZxnit1R8DSIBe6]u ]@anon-20191002_181700-135:localhost:8800$2b$04$fgm2H9.4rDLFYpZnEahnheMwmrOS5AiJcHpZ4MFSyVtADa7qdCepC]u ]@anon-20191002_181700-134:localhost:8800$2b$04$qe3j/sNng9hfDQtZ/yO30OuAXfiL01mL4nHInyOJD9lyVafffMZMC]u ]@anon-20191002_181700-133:localhost:8800$2b$04$2nwXlgQ5T2ENeVlZt1tnquHVob1xBBwmUGAadGq5MB2N7x5qeibdq]u ]@anon-20191002_181700-131:localhost:8800$2b$04$kOhwL24kDwkOe1ao.u/Gq.MubTF/0thgTHVI4aP0IICToHsBS.y0e]u ]@anon-20191002_181700-132:localhost:8800$2b$04$KSLDh9u9eIEzY7I5tPzF6.aMTtqVPry/1X0Pa1Evf.y4NoG5IfdMe]u ]@anon-20191002_181700-129:localhost:8800$2b$04$tvrCuHBc7LjuEIepEwY7NOeLI9Z.eqEJoHl3zXob0otFzl9zZswhm]u ]@anon-20191002_181700-130:localhost:8800$2b$04$mdNxjHymtmmMe/trsS0KB.kzhnumBfwEtp88N05nPPy649iPsX5MW]u ]@anon-20191002_181700-127:localhost:8800$2b$04$ToyuRrW23TWE87k3NRqoQ.kJ5lpIrjJjOcshQZHc8jI1O6eq4fvsW]u ]@anon-20191002_181700-128:localhost:8800$2b$04$VNGewciYdjkMbbw1T6klQ.SV0yQ7RynWK6MyLQ3A0UYU.a3BHAWEi] h g 4 5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6Swo ! 0 T P  # SX  9]Y;cQ' e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.create$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIrQ))e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EoQ? e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibility$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAgQ/ e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rules$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UclQ9 e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_alias$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4iQ3 e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREcQ' e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0 Q']e!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0rQ))e!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYoQ? e !OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibility$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAgQ/ e !OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rules$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIl Q9 e !OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_alias$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8i Q3 e !OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk Q']e !OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-129:localhost:8800$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYc Q' e!OBWkjfrDCNgYFfblia:localhost:8800m.room.create$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vkg Q/ e!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMaQ# e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4 Q']e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIgQ/ e!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4aQ# e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoiQ3 e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag Q']e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8rQ))e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4oQ? e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMgQ/ e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rules$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYlQ9 e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_alias$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQi~Q3 e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k }Q']e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5oc|Q' e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM   -,eQ_9$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 557}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k"], "type": "m.room.canonical_alias", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"alias": "#test-20191002_181700-19:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040761248, "hashes": {"sha256": "sBu1K+xSTcMQotMElylGn+r5WHGce8GJsnnN68TE3RU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cUhkr4q50mEU/KTW0eqMaXj2hZR5aJ0Szc/nhTKr9D5Mi7O32klGTp0FfaCSlU+9pNq+TOxp04isnW+U1sA5AA"}}, "unsigned": {"age_ts": 1570040761248}}j+eQ_c$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 556}{"auth_events": ["$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "type": "m.room.power_levels", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"users": {"@anon-20191002_181700-127:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040760349, "hashes": {"sha256": "A5a9Lkr+Y0/CK1oWUM4Ouil92wW9P9JS4SbYho/eBzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RSF4DOjHcUgFkA0H8tXueTmwcm5+M/Krl+1dCMyKlPuM/dvBMt4FTLWYQwC63llmW+TImLevoTRXgaiRPlCDBQ"}}, "unsigned": {"age_ts": 1570040760349}}u*eQ_y$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 555}{"auth_events": ["$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM"], "prev_events": ["$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM"], "type": "m.room.member", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-127", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-127:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040759785, "hashes": {"sha256": "HOt3EEddIXpcga81jei2p2To4qByldCgB4IgRgtP97Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3He4hNe1QRbdBmnUYlxCvxDZ7SDHgSjVlH1WNWew9KuoKJmHrPpINNQsPHQ2jT1ru7O+DITllg7jeQn5RLPDBQ"}}, "unsigned": {"age_ts": 1570040759785}}h)eQ__$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 554}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-127:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040759060, "hashes": {"sha256": "BLEUop/nVGcTr3YZG0X3re644zqvkk68WDakdaNwAYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8jFx09NYWdaT2qpwyUqnmJwH/Yay6OAM0wJca42PUaLKLMNjPb33zgWXGw/4ylXc4LKSChEb6ujjYweLbwxyBw"}}, "unsigned": {"age_ts": 1570040759060}} W^ c f  v);OTW!Ae)Q ]$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYm.room.aliases!OBWkjfrDCNgYFfblia:localhost:8800mmh@anon-20191002_181700-129:localhost:8800,@e?Q ]$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAm.room.history_visibility!OBWkjfrDCNgYFfblia:localhost:8800mfm9@anon-20191002_181700-129:localhost:8800$?e/Q ]$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIm.room.join_rules!OBWkjfrDCNgYFfblia:localhost:8800mhm@anon-20191002_181700-129:localhost:8800)>e9Q ]$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8m.room.canonical_alias!OBWkjfrDCNgYFfblia:localhost:8800mmK@anon-20191002_181700-129:localhost:8800&=e3Q ]$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkm.room.power_levels!OBWkjfrDCNgYFfblia:localhost:8800mm@anon-20191002_181700-129:localhost:8800 <e'Q ]$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYm.room.member!OBWkjfrDCNgYFfblia:localhost:8800mm@anon-20191002_181700-129:localhost:8800; e'Q  ]$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vkm.room.create!OBWkjfrDCNgYFfblia:localhost:8800mm@anon-20191002_181700-129:localhost:8800$:e/Q ]$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMmadeup.test.state!ntuwVdUxfzNIhIKYaz:localhost:8800mm@anon-20191002_181700-128:localhost:88009e#Q ]$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4m.room.name!ntuwVdUxfzNIhIKYaz:localhost:8800mm)@anon-20191002_181700-128:localhost:8800!8e)Q ]$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhwm.room.message!ntuwVdUxfzNIhIKYaz:localhost:8800mm@anon-20191002_181700-128:localhost:8800 7e'Q ]$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIm.room.member!ntuwVdUxfzNIhIKYaz:localhost:8800mm/@anon-20191002_181700-127:localhost:8800!6e)Q ] $yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Scm.room.message!ntuwVdUxfzNIhIKYaz:localhost:8800 mZmd@anon-20191002_181700-128:localhost:8800!5e)Q ] $0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuUm.room.message!ntuwVdUxfzNIhIKYaz:localhost:8800 m'm@anon-20191002_181700-128:localhost:8800$4e/Q ] $nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4madeup.test.state!ntuwVdUxfzNIhIKYaz:localhost:8800 mބm@anon-20191002_181700-128:localhost:88003e#Q ] $wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkom.room.name!ntuwVdUxfzNIhIKYaz:localhost:8800 mmܽ@anon-20191002_181700-128:localhost:8800&2e3Q ] $Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agm.room.power_levels!ntuwVdUxfzNIhIKYaz:localhost:8800 mٲm@anon-20191002_181700-127:localhost:8800 1e'Q ]$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8m.room.member!ntuwVdUxfzNIhIKYaz:localhost:8800m'm~@anon-20191002_181700-128:localhost:8800!0e)Q ]$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4m.room.aliases!ntuwVdUxfzNIhIKYaz:localhost:8800mӫmU@anon-20191002_181700-127:localhost:8800,/e?Q ]$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMm.room.history_visibility!ntuwVdUxfzNIhIKYaz:localhost:8800mmW@anon-20191002_181700-127:localhost:8800$.e/Q ]$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYm.room.join_rules!ntuwVdUxfzNIhIKYaz:localhost:8800mmΧ@anon-20191002_181700-127:localhost:8800)-e9Q ]$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQm.room.canonical_alias!ntuwVdUxfzNIhIKYaz:localhost:8800mˠmW@anon-20191002_181700-127:localhost:8800&,e3Q ]$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3km.room.power_levels!ntuwVdUxfzNIhIKYaz:localhost:8800mm@anon-20191002_181700-127:localhost:8800 +e'Q ]$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5om.room.member!ntuwVdUxfzNIhIKYaz:localhost:8800mmE@anon-20191002_181700-127:localhost:8800* e'Q  ]$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqMm.room.create!ntuwVdUxfzNIhIKYaz:localhost:8800mmÆ@anon-20191002_181700-127:localhost:8800 d 7 Kdj<eQ_c$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 573}{"auth_events": ["$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "type": "m.room.power_levels", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"users": {"@anon-20191002_181700-129:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040772865, "hashes": {"sha256": "EshxAKVeTB5uE2naXLRkQknsGH+kTiFxBtNMMY7K8YE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lfeoENNTc6qaVzY0E1YArx/8xQN2nQukCwz+KitDQaxT/1Em5P/uzJxQKDXXdADw29q/Vmynrx0PjmM5Tl/vAA"}}, "unsigned": {"age_ts": 1570040772865}}u;eQ_y$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 572}{"auth_events": ["$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk"], "prev_events": ["$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk"], "type": "m.room.member", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-129", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-129:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040772344, "hashes": {"sha256": "FQUz45dGIObKEtEnVgAo/8KYHm8rVrvMrwWzUH3CEf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s3+IBQBYkf5nHnbv2w2GJmjxVeUHQuWJHY9Q0LXJynzN8jjxL1d8WN7OTdlhQWTslFdQCy3nIKP0rSHuPRIPAg"}}, "unsigned": {"age_ts": 1570040772344}}h:eQ__$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 571}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-129:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040771713, "hashes": {"sha256": "2vKMEubttI35AhxbSJR3n0nNBd25mrfSnqD6zdpHJPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nhd2qZGxOoOpDEzUqugcKxDvOQZIPRU9BaO/h7Nab9y/6He4Z5LojxSFY5B9/x768Uxnx+DAvxY2W4FBK6XbAQ"}}, "unsigned": {"age_ts": 1570040771713}}E9eQ_$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 570}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4"], "type": "madeup.test.state", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "S2. B's state after A left"}, "depth": 17, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040769557, "hashes": {"sha256": "9ytOmL+WoKqWDGl/bqy722GzHrk++DnFL2Nu9Qm214Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BadjAUDXMYpOTLaVyUQYyDROR1ZdGB3fKgnBM5Iuti7r5eocELtIW9HlNpHq3ShHHPd0tpToiDFATPHs2ZueCw"}}, "unsigned": {"age_ts": 1570040769557, "replaces_state": "$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4"}} D/O k hr j1 P q9L M 4 2Ni  Q0 1 3V   m l 3$82:localhost:42455sha256 8e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gsha256 h8e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYsha2568e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQsha2568e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9Msha2568e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4sha2568e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwsha256M8e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0rosha2568e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8sha2568e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWEsha256 8e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Asha256H8e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4sha256F8e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28sha256^8e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0osha2568e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQoksha256F8e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNosha256`8e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMsha2568e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Oksha25618e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Asha2568e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEsha2568e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggsha2568e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMssha2568e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgsha2568e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMsha2568e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRosha256o8e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0sha256 8e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugsha256 8e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpAsha256 )G$83_outlier_C:localhost:42455sha256 8e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMsha256 8e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4sha256 8e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtosha2568e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8sha256X8e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08sha2568e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQsha256 8e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1ksha256J8e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4sha256 8e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0sha256"8e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyksha256 B8e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMosha2568e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgsha2568e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74sha256 8e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7wsha2568e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Asha256 _8e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Ysha2568e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Ysha256 3$87:localhost:42455sha256 8e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUsha256 8e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMsha256 8e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMsha256 V3$80:localhost:42455sha256 8e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8Usha256 e 23$89:localhost:42455sha256 3$88:localhost:42455sha256 8e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlksha256Y8e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIsha256K8e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAsha256 _r8e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywsha2568e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4sha2568e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAsha256D8e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfksha25658e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUsha2568e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqUsha256}8e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0sha2568e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMsha256W7e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQsha256s8e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcsha256 8e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8sha256  ^U0eQ_9$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 561}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY"], "prev_events": ["$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4"], "type": "m.room.member", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-128", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-128:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040763943, "hashes": {"sha256": "9gSN4jBJ/d2NG3DkSikuGXKcSpoJ8eOOW5K5boUBRSs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ohMT+6HJG53SGl8++hN3KW8mVs44cKbNB5Y1mXCP2bTA62O2yiMtIp744h6XWGn3kdG7F/PeYyovtYXPJCpzCA"}}, "unsigned": {"age_ts": 1570040763943}}/eQ_M$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 560}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM"], "type": "m.room.aliases", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"aliases": ["#test-20191002_181700-19:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040763307, "hashes": {"sha256": "GaVekx1c/pGX5n4TRLoHB84pMphHlAiD/HIokUJh0zE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3xE5984HLwR0ry0B5I0F18vs1egQ4Vc0ukw2ADOBJhk1sGAWDQ4tfZsEG2UK+FHJfJnqulcJbVjDQSJrtKpIBg"}}, "unsigned": {"age_ts": 1570040763307}}.eQ_$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 559}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY"], "type": "m.room.history_visibility", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040762355, "hashes": {"sha256": "/934++9a/Rw2LK7NrlqY48fxfJvq8W8/Th+8CRBpu3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mUR67ZqQ60VrxRHJBMUgt6a1NLhLXUHM8pOtRHo7os2DQ0rOggNPG41QUMw0SHgVnOd8G1gz4mHXblYg/b92BQ"}}, "unsigned": {"age_ts": 1570040762355}}s-eQ_u$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 558}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ"], "type": "m.room.join_rules", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040761855, "hashes": {"sha256": "+z6t+nq2t0IOah0JwPrbM6p+3RuBneZpelZFTpRasWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ob2Kq9ls4Z55MqJJ9lJwinuDiOqmeCihkQrN4iklOBjBDuyEsLIEWGLYSOAon/03yJaT5afrp7xCCEN7jtVnBA"}}, "unsigned": {"age_ts": 1570040761855}} "& \ m   = eet 5R8GPxaeQ' $KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800m.room.create eQ']$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800meQ? $pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibilityeeQ/ $hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rulesgeQ3 $PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels eQ']$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800aeQ' $5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.create eQ']$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800 eQ']$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800 ~eQ']$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800p}eQ))$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800m|eQ? $JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibilitye{eQ/ $KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rulesjzeQ9 $LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_aliasgyeQ3 $oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels xeQ']$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800aweQ' $frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create veQ']$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800pueQ))$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800mteQ? $GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibilityeseQ/ $pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rulesjreQ9 $mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_aliasgqeQ3 $Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels peQ']$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-129:localhost:8800aoeQ' $jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800m.room.createeneQ/ $UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state_meQ# $U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name leQ']$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800ekeQ/ $nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state_jeQ# $wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.namegieQ3 $Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels heQ']$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800pgeQ))$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800mfeQ? $d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility a} { y w u sqomkigeca~^eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~]eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~\eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~[eeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~ZeeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~YeeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~XeeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~WeeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~VeeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~UeeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~TeeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~SeeQ$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~ReeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~QeeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~PeeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~OeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~NeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~MeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~LeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~KeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~JeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~IeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~HeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~GeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~FeeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~EeeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~DeeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~CeeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~BeeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~AeeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~@eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800 : 7 n NH @y- e]]Q$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4@anon-20191002_181700-142:localhost:8800@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800inviteC e]]Q=$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800joinanon-20191002_181700-141E e]]Q=$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800inviteanon-20191002_181700-141C e]]Q=$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8@anon-20191002_181700-140:localhost:8800@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800joinanon-20191002_181700-140C e]]Q=$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0@anon-20191002_181700-139:localhost:8829@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800joinanon-20191002_181700-139- e]]Q$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk@anon-20191002_181700-139:localhost:8829@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800inviteC e]]Q=$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc@anon-20191002_181700-138:localhost:8800@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800joinanon-20191002_181700-138C e]]Q=$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs@anon-20191002_181700-137:localhost:8800@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800joinanon-20191002_181700-137- e]]Q$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ@anon-20191002_181700-137:localhost:8800@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800inviteC e]]Q=$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg@anon-20191002_181700-136:localhost:8800@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800joinanon-20191002_181700-136E e]]Q=$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ@anon-20191002_181700-135:localhost:8800@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800inviteanon-20191002_181700-135C e]]Q=$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY@anon-20191002_181700-134:localhost:8800@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800joinanon-20191002_181700-134E e]]Q=$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag@anon-20191002_181700-133:localhost:8800@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800inviteanon-20191002_181700-133C e]]Q=$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800joinanon-20191002_181700-132E e]]Q=$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800inviteanon-20191002_181700-132C e]]Q=$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE@anon-20191002_181700-131:localhost:8800@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800joinanon-20191002_181700-131E~ e]]Q=$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0@anon-20191002_181700-130:localhost:8800@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800inviteanon-20191002_181700-130C} e]]Q=$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY@anon-20191002_181700-129:localhost:8800@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800joinanon-20191002_181700-129,| e]]Q$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI@anon-20191002_181700-127:localhost:8800@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800leaveC{ e]]Q=$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8@anon-20191002_181700-128:localhost:8800@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800joinanon-20191002_181700-128 . Q.4eQ$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "txn_id": "60", "stream_ordering": 565}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4"], "type": "m.room.message", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "M1. B's message before A left", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040766759, "hashes": {"sha256": "+uV71p53vCatgNlErFeEz35yeavv0CQ1SLCIc48hQEo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IPEbHr3tzo9Tfes0mNL1Yp6auEXdLk/56IKOB9YSGy5yJPMdPS45wwI6jOslVuRNEdFX3aw1CGdneAtyTeybBg"}}, "unsigned": {"age_ts": 1570040766759}}3eQ_$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 564}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko"], "type": "madeup.test.state", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "S1. B's state before A left"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040766084, "hashes": {"sha256": "pCqrkF/y7c6Vz5uvOgRDiV1Iwufn5Vn0Tua5I8x4Jmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xeh+kWfw2/IGbUP08SW07IytgD4nhYk7O5YbBq8Gq8DMN350WQftEer+h+x7zHXbJ8xHFic9J/zr2ddfkQtlBQ"}}, "unsigned": {"age_ts": 1570040766084}}2eQ_$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 563}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag"], "type": "m.room.name", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"name": "N1. B's room name before A left"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040765464, "hashes": {"sha256": "/WlOs2rDjxvxwrQ+jWrVPSdf+d0KZLEwBiVG3WjUKdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h4cOqhOcbS7YaxIMZqIFV8yQzoF2B+eoiTMRMDl1fxb+EyKiZckJntWwzbwOOrXlM/l2W/+ENlnuRQTsJS1HCQ"}}, "unsigned": {"age_ts": 1570040765464}}%1eQ_Y$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 562}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "type": "m.room.power_levels", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "madeup.test.state": 50, "m.room.canonical_alias": 50}, "users": {"@anon-20191002_181700-127:localhost:8800": 100, "@anon-20191002_181700-128:localhost:8800": 50}, "redact": 50, "invite": 0, "ban": 50, "users_default": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040764850, "hashes": {"sha256": "YFvxAD1EORXRd03xQ0PvODWE69fXCA5MYJ2Oz2O1Dnw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AElPQXBNH0SoCsFJf7Wti/73ZDzpdMwAVFUyWFm9uYk6QbtzZWWogYnS3Tmf11q5Nz+uk/XWUlO7xICKJorOAw"}}, "unsigned": {"age_ts": 1570040764850, "replaces_state": "$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k"}} & e&C8eQ_$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 569}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw"], "type": "m.room.name", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"name": "N2. B's room name after A left"}, "depth": 16, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040768980, "hashes": {"sha256": "Y0p/pnbLgL4LQpS4qyLj6abkY4B3nvH1KIALcephOng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C2OT5HixwTzicmsBv6YbIUjWBWyOoEmH4LgChiPLTpL1gS07p6Ua/vLsUgBqeYf+6M08Dt9VpaiesE6Z32zVBw"}}, "unsigned": {"age_ts": 1570040768980, "replaces_state": "$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko"}}7eQ$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "txn_id": "62", "stream_ordering": 568}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI"], "type": "m.room.message", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "M3. B's message after A left", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040768206, "hashes": {"sha256": "i6E2sMZcfGv5uXF1WTJGYC1d46zN9y9gn2vFuxLvhTE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5FlneaNB0IUY5sH0mnMqTkk5NDgKh8aCZs4v0rUaWlIswpozyjl33lEurN2YoejMSlYXWVGrtPJfyIulB3PCBQ"}}, "unsigned": {"age_ts": 1570040768206}}Z6eQ_C$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 567}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc"], "type": "m.room.member", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"membership": "leave"}, "depth": 14, "prev_state": [], "state_key": "@anon-20191002_181700-127:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040767697, "hashes": {"sha256": "jRy5zm4Zk3tNRe8vmxf2wUdba8cI/VzSbHV+/+swdzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C+lvGmWzlBuiVAiHcu6IGPMb0XGK/rRVJArHGM7sxKiocIXLenzUv6tOslsumRzaCQShC9zVPcSyinpjEJTZDA"}}, "unsigned": {"age_ts": 1570040767697, "replaces_state": "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"}}5eQ$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "txn_id": "61", "stream_ordering": 566}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU"], "type": "m.room.message", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"msgtype": "m.text", "body": "M2. B's message before A left"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040767322, "hashes": {"sha256": "6b1tXsIT91yFtW4dJvmr5ym/jX7aHiNmNmmdEfdwu5M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LaLgHZAPCqhOz5LL3GR6qwC4bRrGiP/BHUmha1ozvFtOseIbctoA2Dq6hNzV/t+n0ZfyeV6920gCcOpKMWd/Bw"}}, "unsigned": {"age_ts": 1570040767322}} MD # F h b k#:^g%(Mh Q/ eW!XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rules$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQm Q9 eV!XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_alias$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0j Q3 eU!XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4 Q']eT!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgdQ' eS!XIqmzIFbkHGQPIpywk:localhost:8800m.room.create$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY Q']eR!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQpQ? eQ!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibility$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2chQ/ eP!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rules$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUjQ3 eO!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20 Q']eN!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYdQ' eM!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.create$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE Q']eL!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag8Q']eeK!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI ~Q']eJ!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIs}Q))eI!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Ep|Q? eH!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibility$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAh{Q/ eG!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rules$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcmzQ9 eF!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_alias$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4jyQ3 eE!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M xQ']eD!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREdwQ' eC!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0 vQ']eB!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0suQ))eA!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYptQ? e@!OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibility$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAhsQ/ e?!OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rules$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cImrQ9 e>!OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_alias$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8jqQ3 e=!OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk pQ']e\#8]!@anon-20191002_181700-272:localhost:8800NRGYAKPXEL8]!@anon-20191002_181700-275:localhost:8800BROWKVODJU8]!@anon-20191002_181700-274:localhost:8800RXKZBCJOXK8]!@anon-20191002_181700-224:localhost:8800VJTZAJOEFY8]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDW8]!@anon-20191002_181700-222:localhost:8800VOKSLIDSSO8]!@anon-20191002_181700-221:localhost:8800REITENATXK8]!@anon-20191002_181700-220:localhost:8800OOLATWHSMP6[!@anon-20191002_181700-21:localhost:8800KHJDEDTDXI18]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-273:localhost:8800SZMGOEVXQW8]!@anon-20191002_181700-271:localhost:8800EYEJMZUSJY8]!@anon-20191002_181700-270:localhost:8800SRSYWQDCQU6[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFL68]!@anon-20191002_181700-269:localhost:8800EDTNFCDRMR8]!@anon-20191002_181700-268:localhost:8800BTQHLEFFPU8]!@anon-20191002_181700-266:localhost:8800MREALOZRTW8]!@anon-20191002_181700-265:localhost:8800COAARRCECC8]!@anon-20191002_181700-264:localhost:8800DYYKUWOSTJ8]!@anon-20191002_181700-263:localhost:8800KUHOBSXQVM8]!@anon-20191002_181700-262:localhost:8800OLJVXJZUXG8]!@anon-20191002_181700-261:localhost:8800HLJRYNNHWE8]!@anon-20191002_181700-260:localhost:8800PEYMVGORHU6[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRT58]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZA8]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT 8]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTK 8]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLF 8]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEX 8]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKS 8]!@anon-20191002_181700-252:localhost:8800RURXOUWORG8]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ8]!@anon-20191002_181700-250:localhost:8800HLUDALFTVR6[!@anon-20191002_181700-24:localhost:8800MRUESCORNA48]!@anon-20191002_181700-249:localhost:8800TCARNJMFBO8]!@anon-20191002_181700-248:localhost:8800SFZRVIZXHM8]!@anon-20191002_181700-247:localhost:8800TRPUOTMOOT8]!@anon-20191002_181700-246:localhost:8800VWLZTFZJKU8]!@anon-20191002_181700-245:localhost:8800BMGHUZBIKD8]!@anon-20191002_181700-244:localhost:8800VWUTZPSOAH8]!@anon-20191002_181700-243:localhost:8800FMNGREYZML8]!@anon-20191002_181700-242:localhost:8800AYBUQGWFIB8]!@anon-20191002_181700-241:localhost:8800AXXWURZRJC8]!@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ6[!@anon-20191002_181700-23:localhost:8800SNOHQGNOOL38]!@anon-20191002_181700-239:localhost:8800WFWDJJSKCM8]!@anon-20191002_181700-238:localhost:8800CJBYPQAOBX8]!@anon-20191002_181700-237:localhost:8800GTKLCHUYBN8]!@anon-20191002_181700-236:localhost:8800ALVQESJRHC8]!@anon-20191002_181700-235:localhost:8800OYRPJJEYFG8]!@anon-20191002_181700-234:localhost:8800KLAICDFHKH8]!@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY8]!@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB6[!@anon-20191002_181700-22:localhost:8800HVNUPXSZHY28]!@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!@anon-20191002_181700-225:localhost:8800ZNKOABDJUU  gh@eQ_M$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 577}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA"], "type": "m.room.aliases", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"aliases": ["#test-20191002_181700-20:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040775831, "hashes": {"sha256": "aNO+adAaIvf5r46v3zp8ckt4rn4dBlMiP3LvUrycXI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6S+mRKNJA/Ca3m0HxbbQsl2x80UlJ29usAQzsiiq9Ovzv2uptrH+YesqCgZBpV4uO8r60uNZl8jiDK8tYXnAAw"}}, "unsigned": {"age_ts": 1570040775831}}?eQ_$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 576}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI"], "type": "m.room.history_visibility", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040774758, "hashes": {"sha256": "zZPUl+mDC6Z+ugKHBmAGL9/qn3zF997WSAnQRu1RKGo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zha7Yy8fLj+pXmisr+tpE0mzsJh6iGilAI/JPGFHKcYmvdNHGT1jNFq6jtYe62sC7fsf+Kmk8e6Ih6/K1qS0CQ"}}, "unsigned": {"age_ts": 1570040774758}}s>eQ_u$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 575}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8"], "type": "m.room.join_rules", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040774248, "hashes": {"sha256": "qdVRUGQePeWPd5a5GYpGJlErLXUN4IO/J1QdRc6VRFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oPob4qALMb7MlkVCYLoTzsnkdqvzfyj9SN+IkzIn6JkWAyoTqUQs6hC4CJcjOgASrjeCDVt6fLemrs1v7TtXAA"}}, "unsigned": {"age_ts": 1570040774248}}=eQ_9$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 574}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk"], "type": "m.room.canonical_alias", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"alias": "#test-20191002_181700-20:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040773523, "hashes": {"sha256": "6XPvNQw7B1ZXlwUsQ3IOgMvL1D4+Pr1gMIwPYcl2TC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uuhR7f+gcWQ0R260iaV4LhX2HrbIL9q2oJfZKZtCyZ+e+YbkCDlsYbg5ivLBTpSkSIikeJhCLM+GGu0/5YUxBQ"}}, "unsigned": {"age_ts": 1570040773523}} Le] 3 P  | J k9 v Dq? wj E8 }KQ  W% V $ \ *p>+1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8u1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8t1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8s1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk 1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgq1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgp1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgo1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ[1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQZ1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQY1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo 1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8g1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8f1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8e1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU81e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU71e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU61e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ /1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY 1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY 1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY 1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY1e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIy1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIx1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIw1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g|1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g{1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gz1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk 1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk 1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4t1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4s1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgD1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgC1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgB a} { y w u sqomkigeca~}eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~|eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~{eeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800~zeeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~yeeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~xeeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~weeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800~veeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~ueeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~teeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~seeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~reeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~qeeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~peeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~oeeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~neeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~meeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~leeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~keeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~jeeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~ieeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~heeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~geeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~feeQ$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~eeeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~deeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800~ceeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~beeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~aeeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~`eeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~_eeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800 W WuCeQ_y$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 580}{"auth_events": ["$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0"], "prev_events": ["$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-131", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-131:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040779620, "hashes": {"sha256": "eV/aY1ElZqRx+AVXjfZClgJzP82a3vwGdilwF+EsG70"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lJ68kTFYd2d04afVrD/JAPlhTWu0bNQL1oWgwTNQMzViLaKEVO67eSWOM0xWLAnipZbuj5WJoOYH+Djag8DoCw"}}, "unsigned": {"age_ts": 1570040779620}}hBeQ__$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 579}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-131:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040779037, "hashes": {"sha256": "5giiWEPECdVhEEt+fOP0b7cyZLYQCRKyKEE3ol6VLJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O+XsVjtMmzrULsTGLudatxQ3m/OTmHyaWguM6/0SwHzQkPZ5oE/JjmeP9E5Fg6JHTFeSu0wDBcExh65r2clfAQ"}}, "unsigned": {"age_ts": 1570040779037}}@AeQ_$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 578}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY"], "type": "m.room.member", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-130", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-130:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040776738, "hashes": {"sha256": "Gsk7U96J5Afv6bt2HG9TcSYEyf2PHkUETd+Z4SrE/WE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3yaxkBl8QR1rtCcw9FPCQ3KXJVw2mNi9ue0WdBSkIr9oFybWBm56O7Vz67Yl/crB7QcobcsWJgXYTOFL6BVyAA"}}, "unsigned": {"age_ts": 1570040776738, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-20:localhost:8800"}, "sender": "@anon-20191002_181700-129:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-129:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-129:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-129", "avatar_url": null}, "sender": "@anon-20191002_181700-129:localhost:8800"}]}} P\ l  g  z4>HMP!Ye)Q ]$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8m.room.aliases!XIqmzIFbkHGQPIpywk:localhost:8800m[m\t@anon-20191002_181700-136:localhost:8800,Xe?Q ]$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5km.room.history_visibility!XIqmzIFbkHGQPIpywk:localhost:8800mVmY@anon-20191002_181700-136:localhost:8800$We/Q ]$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQm.room.join_rules!XIqmzIFbkHGQPIpywk:localhost:8800mTmUk@anon-20191002_181700-136:localhost:8800)Ve9Q ]$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0m.room.canonical_alias!XIqmzIFbkHGQPIpywk:localhost:8800mR4mR@anon-20191002_181700-136:localhost:8800&Ue3Q ]$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4m.room.power_levels!XIqmzIFbkHGQPIpywk:localhost:8800mOmP@anon-20191002_181700-136:localhost:8800 Te'Q ]$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgm.room.member!XIqmzIFbkHGQPIpywk:localhost:8800mLmMi@anon-20191002_181700-136:localhost:8800S e'Q  ]$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYm.room.create!XIqmzIFbkHGQPIpywk:localhost:8800mJOmJ@anon-20191002_181700-136:localhost:8800 Re'Q ]$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQm.room.member!lMRBkbYJDQHgdBZBFJ:localhost:8800mD5mD@anon-20191002_181700-134:localhost:8800,Qe?Q ]$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cm.room.history_visibility!lMRBkbYJDQHgdBZBFJ:localhost:8800m?(m@@anon-20191002_181700-134:localhost:8800$Pe/Q ]$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUm.room.join_rules!lMRBkbYJDQHgdBZBFJ:localhost:8800m<;m=g@anon-20191002_181700-134:localhost:8800&Oe3Q ]$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20m.room.power_levels!lMRBkbYJDQHgdBZBFJ:localhost:8800m9_m:@anon-20191002_181700-134:localhost:8800 Ne'Q ]$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYm.room.member!lMRBkbYJDQHgdBZBFJ:localhost:8800m6m7@anon-20191002_181700-134:localhost:8800M e'Q  ]$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEm.room.create!lMRBkbYJDQHgdBZBFJ:localhost:8800m4;m4@anon-20191002_181700-134:localhost:8800 Le'Q ] $E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800 m-Sm-@anon-20191002_181700-132:localhost:8800 Ke'Q ] $32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800 m'm({@anon-20191002_181700-132:localhost:8800 Je'Q ]$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800m%m&@anon-20191002_181700-131:localhost:8800!Ie)Q ]$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Em.room.aliases!cHtqiAyCHEAoBIbCmL:localhost:8800m"m#@anon-20191002_181700-131:localhost:8800,He?Q ]$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAm.room.history_visibility!cHtqiAyCHEAoBIbCmL:localhost:8800mQm!!@anon-20191002_181700-131:localhost:8800$Ge/Q ]$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucm.room.join_rules!cHtqiAyCHEAoBIbCmL:localhost:8800mzm@anon-20191002_181700-131:localhost:8800)Fe9Q ]$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4m.room.canonical_alias!cHtqiAyCHEAoBIbCmL:localhost:8800m[md@anon-20191002_181700-131:localhost:8800&Ee3Q ]$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Mm.room.power_levels!cHtqiAyCHEAoBIbCmL:localhost:8800mvm@anon-20191002_181700-131:localhost:8800 De'Q ]$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800mdm@anon-20191002_181700-131:localhost:8800C e'Q  ]$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0m.room.create!cHtqiAyCHEAoBIbCmL:localhost:8800mmi@anon-20191002_181700-131:localhost:8800 Be'Q ]$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0m.room.member!OBWkjfrDCNgYFfblia:localhost:8800m"m}@anon-20191002_181700-129:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VleL$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8sha256F^WA6׳ۧx.[t"•/VkeL$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYsha256jP򸜅p/~t_%O*n6.(*fVjeL$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMsha256!JX^GYRῪoURdSVieL$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0sha2560% jU(P|7VheL$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0sha256 Ztsx3 ESKK x]VgeL$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8sha256qNIYAUrAJ:zǏ@YT3|5KVfeL$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4sha256_3l"+δ\&GN=E*[mVeeL$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0sha256/|,]$@wZ Y'oVVdeL$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuksha256o#LuUs xh-Q@HVceL$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4sha256]=j6_.y/uWTVbeL$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujosha256YuT*c|<7"<+}ҕ/&t:VaeL$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8sha2566bX8 HQ΁/ٽoV`eL$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Msha256PIȩ.,k/óY`D8V_eL$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6Msha25605Id3sc 9ATWwV^eL$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tEsha256x_ߚp]$T$5ÑF,>KwlV]eL$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcsha256gCc\eV=٬)V\eL$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCMsha256AIl79!>6(f=_5LlQq#V[eL$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBssha256VPϜ^cdN$+IuT; VZeL$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQsha256leX7IwaLc: +.+`2ldVYeL$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0sha256zFtWnIˠH5_VͪVXeL$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8sha256HX %}į8Iط'7 TOVWeL$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5ksha256Y/ʻZ>~jR5sȠVVVeL$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQsha256Kt7o;o25yx*T$VUeL$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0sha256Z젅c+& Vޚ:-VTeL$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4sha256t#0[h*FUer.VSeL$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgsha256KgxPy0~8$d첋GPHVReL$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYsha256+`e DR}&uG̜֨sVQeL$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQsha256>@KhpFi<,'wnLPPxmZVPeL$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2csha2565]~isg~IahDqpۙ~TgVOeL$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUsha256?$to8"GbuiόϪBVNeL$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20sha256= gVh3䐄ʖ:)$m<[,]mVMeL$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYsha256vT?~ߋObЈ&VLeL$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEsha256䄜jΩqdpAFNhߠym\љ!VKeL$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagsha256鹹r(ѩ Y/cB VJeL$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAsha256k8VI hD" n\(OVIeL$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIsha256.Եa+Ӂ|UC(%U OwdxRVHeL$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Esha256sgqKF\oPo6Ԥ3qVGeL$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAsha256%&lB%ՎZ }*.cCX.SĤ0VFeL$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucsha256*^+3D]4^~?GVEeL$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4sha256.KDG&B(qHݵ\t 5M$>VDeL$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Msha256V (.TeGMo9@dOuq VCeL$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREsha256_d1`!~!;=Ҏs=-VBeL$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0sha256~R  [*e6ʔL) VAeL$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0sha256 {:Nne8ְe!  U |tme]UME=5-%}`C& x \ ? "  r T 8  f H * x Z <  l N 0 ~`B$rT6fH* vZ<jL0|^@"sU7gI'Q_astest-01create-0-20191002_1817000 adminU=anon-20191002_181700-199=anon-20191002_181700-198=anon-20191002_181700-197=anon-20191002_181700-196=anon-20191002_181700-195=anon-20191002_181700-194=anon-20191002_181700-193=anon-20191002_181700-192=anon-20191002_181700-191=anon-20191002_181700-190;anon-20191002_181700-19'=anon-20191002_181700-189=anon-20191002_181700-188=anon-20191002_181700-187=anon-20191002_181700-186=anon-20191002_181700-185=anon-20191002_181700-184=anon-20191002_181700-183=anon-20191002_181700-182=anon-20191002_181700-181;anon-20191002_181700-18&=anon-20191002_181700-179=anon-20191002_181700-178=anon-20191002_181700-177=anon-20191002_181700-176=anon-20191002_181700-175=anon-20191002_181700-174=anon-20191002_181700-173=anon-20191002_181700-170;anon-20191002_181700-17%=anon-20191002_181700-169=anon-20191002_181700-168=anon-20191002_181700-167=anon-20191002_181700-165=anon-20191002_181700-164=anon-20191002_181700-163=anon-20191002_181700-162=anon-20191002_181700-161=anon-20191002_181700-160;anon-20191002_181700-16$=anon-20191002_181700-159=anon-20191002_181700-158=anon-20191002_181700-157=anon-20191002_181700-156=anon-20191002_181700-155=anon-20191002_181700-154=anon-20191002_181700-153=anon-20191002_181700-152=anon-20191002_181700-151=anon-20191002_181700-150;anon-20191002_181700-15#=anon-20191002_181700-149=anon-20191002_181700-146=anon-20191002_181700-144=anon-20191002_181700-143=anon-20191002_181700-142=anon-20191002_181700-141=anon-20191002_181700-140;anon-20191002_181700-14"=anon-20191002_181700-138=anon-20191002_181700-137=anon-20191002_181700-136=anon-20191002_181700-135=anon-20191002_181700-134=anon-20191002_181700-133=anon-20191002_181700-132=anon-20191002_181700-131=anon-20191002_181700-130;anon-20191002_181700-13 =anon-20191002_181700-129=anon-20191002_181700-128=anon-20191002_181700-127=anon-20191002_181700-126=anon-20191002_181700-125=anon-20191002_181700-124=anon-20191002_181700-123=anon-20191002_181700-122=anon-20191002_181700-121=anon-20191002_181700-120;anon-20191002_181700-12!=anon-20191002_181700-119=anon-20191002_181700-118=anon-20191002_181700-117=anon-20191002_181700-116=anon-20191002_181700-115~=anon-20191002_181700-114}=anon-20191002_181700-113|=anon-20191002_181700-112{=anon-20191002_181700-110z;anon-20191002_181700-11=anon-20191002_181700-109y=anon-20191002_181700-108x=anon-20191002_181700-107w=anon-20191002_181700-106v=anon-20191002_181700-104u=anon-20191002_181700-103s=anon-20191002_181700-102t=anon-20191002_181700-101q=anon-20191002_181700-100r;anon-20191002_181700-109anon-20191002_181700-1987654363534333231303292827262524232221202191817161514131211101 02login"K 01register-user-20191002_1817000> qz\> lP2jL.|^@" p R 4  d F ( t V :  h J ,  z \ > nP2bD&rT8fH* ~`B$rT6==anon-20191002_181700-302T=anon-20191002_181700-212=anon-20191002_181700-211=anon-20191002_181700-210;anon-20191002_181700-21)=anon-20191002_181700-209=anon-20191002_181700-208=anon-20191002_181700-207=anon-20191002_181700-206=anon-20191002_181700-205=anon-20191002_181700-204=anon-20191002_181700-203=anon-20191002_181700-202=anon-20191002_181700-201=anon-20191002_181700-200;anon-20191002_181700-20(=anon-20191002_181700-301S=anon-20191002_181700-300R;anon-20191002_181700-302=anon-20191002_181700-299Q=anon-20191002_181700-298P=anon-20191002_181700-297O=anon-20191002_181700-296N=anon-20191002_181700-295M=anon-20191002_181700-294L=anon-20191002_181700-293K=anon-20191002_181700-292J=anon-20191002_181700-291I=anon-20191002_181700-290H;anon-20191002_181700-291=anon-20191002_181700-289G=anon-20191002_181700-288F=anon-20191002_181700-287E=anon-20191002_181700-286D=anon-20191002_181700-285C=anon-20191002_181700-284B=anon-20191002_181700-283A=anon-20191002_181700-282@=anon-20191002_181700-281?=anon-20191002_181700-280>;anon-20191002_181700-280=anon-20191002_181700-279==anon-20191002_181700-278<=anon-20191002_181700-277;=anon-20191002_181700-276:=anon-20191002_181700-2759=anon-20191002_181700-2748=anon-20191002_181700-2736=anon-20191002_181700-2727=anon-20191002_181700-2714=anon-20191002_181700-2705;anon-20191002_181700-27/=anon-20191002_181700-2693=anon-20191002_181700-2682=anon-20191002_181700-2671=anon-20191002_181700-2660=anon-20191002_181700-265/=anon-20191002_181700-264.=anon-20191002_181700-263-=anon-20191002_181700-262,=anon-20191002_181700-261+=anon-20191002_181700-260*;anon-20191002_181700-26.=anon-20191002_181700-259)=anon-20191002_181700-258(=anon-20191002_181700-257'=anon-20191002_181700-255&=anon-20191002_181700-254%=anon-20191002_181700-253$=anon-20191002_181700-252#=anon-20191002_181700-251"=anon-20191002_181700-250!;anon-20191002_181700-25-=anon-20191002_181700-249 =anon-20191002_181700-248=anon-20191002_181700-247=anon-20191002_181700-246=anon-20191002_181700-245=anon-20191002_181700-244=anon-20191002_181700-243=anon-20191002_181700-242=anon-20191002_181700-241=anon-20191002_181700-240;anon-20191002_181700-24,=anon-20191002_181700-239=anon-20191002_181700-238=anon-20191002_181700-237=anon-20191002_181700-236=anon-20191002_181700-235=anon-20191002_181700-234=anon-20191002_181700-233=anon-20191002_181700-232 =anon-20191002_181700-231 =anon-20191002_181700-230 ;anon-20191002_181700-23+=anon-20191002_181700-229 =anon-20191002_181700-228 =anon-20191002_181700-227=anon-20191002_181700-226=anon-20191002_181700-225=anon-20191002_181700-224=anon-20191002_181700-223=anon-20191002_181700-222=anon-20191002_181700-221=anon-20191002_181700-220;anon-20191002_181700-22*=anon-20191002_181700-219=anon-20191002_181700-218=anon-20191002_181700-217=anon-20191002_181700-216=anon-20191002_181700-215=anon-20191002_181700-214=anon-20191002_181700-213 Bm G !hBx]c!E@anon-20191002_181700-143:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwoZFSJBJHVKY127.0.0.1Perl + Net::Async::HTTP/0.44mw]c!E@anon-20191002_181700-142:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAoDLSRULHTCQ127.0.0.1Perl + Net::Async::HTTP/0.44mv]c!E@anon-20191002_181700-141:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_AoXOYNHFFWDU127.0.0.1Perl + Net::Async::HTTP/0.44mu]c!E@anon-20191002_181700-140:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAoOLUEHITWUA127.0.0.1Perl + Net::Async::HTTP/0.44mLt]c!E@anon-20191002_181700-138:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAoJFLHGXHKXS127.0.0.1Perl + Net::Async::HTTP/0.44mjڃs]c!E@anon-20191002_181700-137:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swoTZFFQCVKWQ127.0.0.1Perl + Net::Async::HTTP/0.44mdr]c!E@anon-20191002_181700-136:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0woHMGQCGXZSS127.0.0.1Perl + Net::Async::HTTP/0.44mIq]c!E@anon-20191002_181700-134:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58woPCQACQPKQA127.0.0.1Perl + Net::Async::HTTP/0.44m3كp]c!E@anon-20191002_181700-132:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQoJPOUKBEMRT127.0.0.1Perl + Net::Async::HTTP/0.44m&o]c!E@anon-20191002_181700-131:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwoSOOHJVIHOR127.0.0.1Perl + Net::Async::HTTP/0.44mH  GeQ_$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 584}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc"], "type": "m.room.history_visibility", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040782673, "hashes": {"sha256": "yrF2mQfyfRhUYT2dyo0YqdYG1W7I+ZFGkaNcwCj7Wuw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NMxAbOaK1pHDqIw8UgaVIO7Pwsbws4837qRcHAAaYtjlsoPkt/fA5tYEAE8qlGvPPAxAvi86RZmlud9P7x37AA"}}, "unsigned": {"age_ts": 1570040782673}}sFeQ_u$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 583}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4"], "type": "m.room.join_rules", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040781690, "hashes": {"sha256": "imNY9k+IlZ5cXJtu+U5IJwTzZxgFfgMKSNv4dEBvH9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NdUMVx+pOmGckGozozeDYYYDGfm7bsmunemqfzgRvsoXKwY2HQwf3ZaDcpY05vX78JPGKNcu3PZ8aNvAZZOpBQ"}}, "unsigned": {"age_ts": 1570040781690}}EeQ_9$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 582}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M"], "type": "m.room.canonical_alias", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"alias": "#test-20191002_181700-21:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040780891, "hashes": {"sha256": "SOi4+nZ5TUAbS/ri3VgmxA0azrXRbop9FIk+kJm5zEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YPd5TNFUFjFpd3lF2m3PpIrrOwZDS7L/huiKA4hZHFb6dNcCH97kVn+V8tN4+LpNXSyFvOpfroBQA0/KdrT8CQ"}}, "unsigned": {"age_ts": 1570040780891}}jDeQ_c$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 581}{"auth_events": ["$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "type": "m.room.power_levels", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"users": {"@anon-20191002_181700-131:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040780150, "hashes": {"sha256": "VL4cG/OaVGl60ADcX9TYNH0wgD3CTuXFhPjvy9K2r5g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "veNaw5oKYI7mCCI2xLAxslI/Dny8z5yQAlDdvbwaHF1l4+8iyBblxLRiKhlB6+w6LoHy1IgRbFu/q8UyXq9MCw"}}, "unsigned": {"age_ts": 1570040780150}} ~z v r n j fb^ZVRNJF!eeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800 eeQ$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800  ]JeQ_=$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 159, "stream_ordering": 587}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc"], "prev_events": ["$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-132:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-132", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-132:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040784871, "hashes": {"sha256": "dvrOuIYIljgVUFZfpUx9ZgOVByo94539I38dusbd00o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QHDEO507iLrayA+zsDVyxjdofGcc5ZCdk2rhUclMo9C63vWsFSTITIOQBJtnWI5KvkC5PJqeoZX+liO3HsZFAw"}}, "unsigned": {"age_ts": 1570040784871, "replaces_state": "$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI"}}@IeQ_$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 586}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-132", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-132:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040784306, "hashes": {"sha256": "2KDL3+xDlOPC2mi4M627o1R7kAjjIgR/jWFdae6gFHw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cH9H8o7lOTjMiI5Csx1oXn7DHbnf2omvd47rnqgQcWhbM5TN3AoJDrJvWCKYFjN7+nDG/3RWDICwX3MPxHWVDw"}}, "unsigned": {"age_ts": 1570040784306, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-21:localhost:8800"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-131:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-131", "avatar_url": null}, "sender": "@anon-20191002_181700-131:localhost:8800"}]}}HeQ_M$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 585}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA"], "type": "m.room.aliases", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"aliases": ["#test-20191002_181700-21:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040783607, "hashes": {"sha256": "1MfnKgwPLdAlOc5eYxKtUXQYVirjbUQsmTeE7ADvDNo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h+5xVX9HCtTa9XlOpbLTpDl0rY6uOKkItXdUHolHT+Na0rFNOcWFjCJiOids+2vhvZRnwE65ZN3GL57LhtO+DA"}}, "unsigned": {"age_ts": 1570040783607}}  h|uSeQ_y$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800{"token_id": 165, "stream_ordering": 596}{"auth_events": ["$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY"], "prev_events": ["$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY"], "type": "m.room.member", "room_id": "!XIqmzIFbkHGQPIpywk:localhost:8800", "sender": "@anon-20191002_181700-136:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-136", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-136:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040794337, "hashes": {"sha256": "IIGBgvb9ebIUm3sIi61QUeVFgWTKTR8rDDk2Tbu3bZE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GoDhUC1BXx5EonstBYnMUdkmza5KYrKAAbHMJD01ME8nDa5no0c4/GXgCaHcLa6n1tgc6EkrVcQ2xC05wm5vCg"}}, "unsigned": {"age_ts": 1570040794337}}hReQ__$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800{"token_id": 165, "stream_ordering": 595}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XIqmzIFbkHGQPIpywk:localhost:8800", "sender": "@anon-20191002_181700-136:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-136:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040793679, "hashes": {"sha256": "iqyjC+kDS0/dcGZxnWeXl2XmoBJFDIwVo4xuOfvLfT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CmgWsf/kdfnF+ClPJvFjXFL9hE6ZCbYniNl8SSLco852ZAzxmmpwQxW6feWR9XhJillIvmKkqG90SZl9nytECQ"}}, "unsigned": {"age_ts": 1570040793679}}QeQ_7$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 594}{"auth_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20", "$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c"], "type": "m.room.member", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-135", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-135:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040792117, "hashes": {"sha256": "DjUHObScyjJfPZBlg5j2/9fb3JsoObWQAFrfArhD97I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7+agiVneBysH9tn/ifKUbeVxbdatOMpOCnQ6U41+8h72a/OINi9YqszFSymlXpiK1zl8pULB88o7+kbBD/chAg"}}, "unsigned": {"age_ts": 1570040792117, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-134:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-134:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-134", "avatar_url": null}, "sender": "@anon-20191002_181700-134:localhost:8800"}]}} -RM H C > 9 4/*|%w rmhc TzQex!AjjrNwXmPTCruHxaJq:localhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMTyQew!AjjrNwXmPTCruHxaJq:localhost:8800$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UTxQev!AjjrNwXmPTCruHxaJq:localhost:8800$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNoTwQeu!AjjrNwXmPTCruHxaJq:localhost:8800$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98TvQet!AjjrNwXmPTCruHxaJq:localhost:8800$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8TuQes!AjjrNwXmPTCruHxaJq:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvoTtQer!AjjrNwXmPTCruHxaJq:localhost:8800$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9ATsQeq!BkzROHxDAfKIzYpmPV:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4TrQep!BkzROHxDAfKIzYpmPV:localhost:8800$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoTqQeo!BkzROHxDAfKIzYpmPV:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQTpQen!BkzROHxDAfKIzYpmPV:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUToQem!BkzROHxDAfKIzYpmPV:localhost:8800$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8TnQel!BkzROHxDAfKIzYpmPV:localhost:8800$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYTmQek!BkzROHxDAfKIzYpmPV:localhost:8800$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMTlQej!BkzROHxDAfKIzYpmPV:localhost:8800$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0TkQei!BkzROHxDAfKIzYpmPV:localhost:8800$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0TjQeh!BkzROHxDAfKIzYpmPV:localhost:8800$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8TiQeg!BkzROHxDAfKIzYpmPV:localhost:8800$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4ThQef!WWZVpyLeZfyfpWidLx:localhost:8800$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0TgQee!WWZVpyLeZfyfpWidLx:localhost:8800$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukTfQed!WWZVpyLeZfyfpWidLx:localhost:8800$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4TeQec!WWZVpyLeZfyfpWidLx:localhost:8800$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4QujoTdQeb!WWZVpyLeZfyfpWidLx:localhost:8800$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8TcQea!WWZVpyLeZfyfpWidLx:localhost:8800$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96MTbQe`!WWZVpyLeZfyfpWidLx:localhost:8800$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6MTaQe_!WWZVpyLeZfyfpWidLx:localhost:8800$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tET`Qe^!WWZVpyLeZfyfpWidLx:localhost:8800$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcT_Qe]!WWZVpyLeZfyfpWidLx:localhost:8800$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCMT^Qe\!XIqmzIFbkHGQPIpywk:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBsT]Qe[!XIqmzIFbkHGQPIpywk:localhost:8800$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQT\QeZ!XIqmzIFbkHGQPIpywk:localhost:8800$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0T[QeY!XIqmzIFbkHGQPIpywk:localhost:8800$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8TZQeX!XIqmzIFbkHGQPIpywk:localhost:8800$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kTYQeW!XIqmzIFbkHGQPIpywk:localhost:8800$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQTXQeV!XIqmzIFbkHGQPIpywk:localhost:8800$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0TWQeU!XIqmzIFbkHGQPIpywk:localhost:8800$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4TVQeT!XIqmzIFbkHGQPIpywk:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgTUQeS!XIqmzIFbkHGQPIpywk:localhost:8800$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYTTQeR!lMRBkbYJDQHgdBZBFJ:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQTSQeQ!lMRBkbYJDQHgdBZBFJ:localhost:8800$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cTRQeP!lMRBkbYJDQHgdBZBFJ:localhost:8800$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUTQQeO!lMRBkbYJDQHgdBZBFJ:localhost:8800$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20TPQeN!lMRBkbYJDQHgdBZBFJ:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYTOQeM!lMRBkbYJDQHgdBZBFJ:localhost:8800$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSETNQeL!cHtqiAyCHEAoBIbCmL:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag V VuMeQ_y$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 590}{"auth_events": ["$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE"], "prev_events": ["$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE"], "type": "m.room.member", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-134", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-134:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040788730, "hashes": {"sha256": "XI+pWLquEKaK5YAKnW6LlWcRwCAZhwiGKmlr2PEYqHw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jBz/ajJBWbxPQGHetwmdfkdKa2PdSPqlWyh94nHC9WM6PeP0wUnjqHFkxkmG1YbTipjwieY0pj+x3wmh+15dDg"}}, "unsigned": {"age_ts": 1570040788730}}hLeQ__$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 589}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-134:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040788027, "hashes": {"sha256": "Xq7xcBrL/TxKiQV4i+gGu5NDXEnwCvCSokzX9eS/HlQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zej832djKgVWJtjcO93z0LhTZrjx21eguJ5sPAtIvJMc6ZLebg3KCCNscwl9Yd9Uo3EKcmn8DtkT145ZsUh0CQ"}}, "unsigned": {"age_ts": 1570040788027}}AKeQ_$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 159, "stream_ordering": 588}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc", "$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA"], "prev_events": ["$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-132:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-133", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-133:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040786259, "hashes": {"sha256": "gZcoMxgSzM9ExCE94z63zev7NABss9/mMAAOXrRGw58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gcv+0DBWgEMQgldHR1xTXVN3YvRM1NqcUMqDGhXRit0IFPc8r0W95gbKsm4WUDBL/35MBWYfSGqxF82AOrKqBA"}}, "unsigned": {"age_ts": 1570040786259, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-21:localhost:8800"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-132:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-132", "avatar_url": null}, "sender": "@anon-20191002_181700-132:localhost:8800"}]}} a} { y w u sqomkigeca~eeQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~ eeQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800~~eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800 |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l Z N B < 6 0 * $    | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ z V T S R P N M L J F E D C A ? > = ; 9 8 7 5 3 2 1 / - , + * ( % $ # "                                                                                                                   ~ } | z w v u t r q p o m k j i g e d c a _ ^ ] [ Y X W V T Q P O N L J I H G E B A @ ? = < ; : 8 4 3 2 1 / ) ( ' % " !                                                                                                                     ~ | H t s r q p o l k i T g ` e  ` ^ ] \ Z` A @ ? = ; : 9 7 5 4 3 1 , ) ( & !                                                                             34m x 6 ? D o &+V3OZ_mveQ? $NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800m.room.history_visibility `eQ']$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800joinp_eQ))$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800m^eQ? $JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibilitye]eQ/ $KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rulesj\eQ9 $LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_aliasg[eQ3 $oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levelseueQ/ $ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800m.room.join_rulesjteQ9 $-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800m.room.canonical_aliasgseQ3 $eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800m.room.power_levels reQ']$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-138:localhost:8800joinaqeQ' $QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800m.room.create peQ']$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800joinnoeQ?$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0!XIqmzIFbkHGQPIpywk:localhost:8800m.room.third_party_invite0pneQ))$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8!XIqmzIFbkHGQPIpywk:localhost:8800m.room.aliaseslocalhost:8800mmeQ? $zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k!XIqmzIFbkHGQPIpywk:localhost:8800m.room.history_visibilityeleQ/ $S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ!XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rulesjkeQ9 $47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0!XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_aliasgjeQ3 $6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels ieQ']$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800joinaheQ' $KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800m.room.creategeQ']$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800invitemfeQ? $pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibilityeeeQ/ $hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rulesgdeQ3 $PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels ceQ']$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800joinabeQ' $5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.createaeQ']$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800invite g * T~=gg$]!c@anon-20191002_181700-150:localhost:8800RWWSTPGDUMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwog#]!c@anon-20191002_181700-146:localhost:8800FNNRVHNVLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwog"]!c@anon-20191002_181700-143:localhost:8800ZFSJBJHVKYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwog!]!c@anon-20191002_181700-144:localhost:8800KPCPVEDJYHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQog ]!c@anon-20191002_181700-142:localhost:8800DLSRULHTCQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAog]!c@anon-20191002_181700-141:localhost:8800XOYNHFFWDUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_Aog]!c@anon-20191002_181700-140:localhost:8800OLUEHITWUAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAog]!c@anon-20191002_181700-138:localhost:8800JFLHGXHKXSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAog]!c@anon-20191002_181700-136:localhost:8800HMGQCGXZSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0wog]!c@anon-20191002_181700-137:localhost:8800TZFFQCVKWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swog]!c@anon-20191002_181700-135:localhost:8800SDWTGMDDUAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBLSjRYeXQ3R0B-X3RSOkkKMDAyZnNpZ25hdHVyZSAFX_b11eBwS97oCMz-uAp99gjpBtPRgBv8NVG-G8slwwo !Oq) 4 9 ` y  wYd86#(Og=Q/ e;!BkzROHxDAfKIzYpmPV:localhost:8800m.room.join_rules$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMl<Q9 e:!BkzROHxDAfKIzYpmPV:localhost:8800m.room.canonical_alias$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i;Q3 e9!BkzROHxDAfKIzYpmPV:localhost:8800m.room.power_levels$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0 :Q']e8!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-140:localhost:8800$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8c9Q' e7!BkzROHxDAfKIzYpmPV:localhost:8800m.room.create$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4 8Q']e6!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0 7Q']e5!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$GesYsoj-4zm2I-jni0RMOKDmuskdbSK6yAFZnCMj52U 6Q']e4!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk 5Q']e3!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$PBccJlN_hz4p6U9vI4K7-gONRRjPVpS1ayqbEedfgs8p4Q?e2!WWZVpyLeZfyfpWidLx:localhost:8800m.room.third_party_invite1$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4r3Q))e1!WWZVpyLeZfyfpWidLx:localhost:8800m.room.aliaseslocalhost:8800$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujoo2Q? e0!WWZVpyLeZfyfpWidLx:localhost:8800m.room.history_visibility$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8g1Q/ e/!WWZVpyLeZfyfpWidLx:localhost:8800m.room.join_rules$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Ml0Q9 e.!WWZVpyLeZfyfpWidLx:localhost:8800m.room.canonical_alias$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6Mi/Q3 e-!WWZVpyLeZfyfpWidLx:localhost:8800m.room.power_levels$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE .Q']e,!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-138:localhost:8800$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcc-Q' e+!WWZVpyLeZfyfpWidLx:localhost:8800m.room.create$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM ,Q']e*!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs +Q']e)!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ *Q']e(!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800$_osteQkqmrqJIH4VnHv7Ml-LORJqPB5jddG9d4QqbBYp)Q?e'!XIqmzIFbkHGQPIpywk:localhost:8800m.room.third_party_invite0$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0r(Q))e&!XIqmzIFbkHGQPIpywk:localhost:8800m.room.aliaseslocalhost:8800$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8o'Q? e%!XIqmzIFbkHGQPIpywk:localhost:8800m.room.history_visibility$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kg&Q/ e$!XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rules$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQl%Q9 e#!XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_alias$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0i$Q3 e"!XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4 #Q']e!!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgc"Q' e !XIqmzIFbkHGQPIpywk:localhost:8800m.room.create$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY !Q']e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQo Q? e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibility$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cgQ/ e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rules$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUiQ3 e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20 Q']e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY ?0( W O |8u  m e G _ )eeQ$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800eeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800ieeQ$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800YeeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800 `eeQ$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE!PgNDjhhIBAXKryuGKy:localhost:8800 'eeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800 zeeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800 heeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800ueeQ$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:8800eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800eeQ $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800ہeeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800NeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800XeeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800 >Ur9 V  7 r 9 U   q 8  T pS5o6nRn5QQ8e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegosha256z8e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEsha2568e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdEsha256 f8e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicosha256 Eq8e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXssha2568e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYsha256!8e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Egsha2568e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIsha2568e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIsha256e8e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQsha2568e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tssha256}8e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__csha256o8e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0sha2568e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIsha256g8e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQsha256 8e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8sha2568e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEsha256V8e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYsha256 8e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48sha2568e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQsha2568e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-Msha2568e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQosha2568e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7eksha25678e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcsha2568e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAsha2568e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4sha2568e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igsha256E8e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8sha256 %8e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RMsha2568e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMsha2568e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUgsha256 8e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0sha2568e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMsha256 8e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQsha256S8e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0sha2568e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIsha2568e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Esha2568e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieosha256 p8e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lwsha2568e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwsha256 [8e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4Usha25668e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10sha256 P8e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jEsha256 8e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwsha256J8e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4sha256 \8e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gsha2568e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4sha2568e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8sha256 8e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4sha2568e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ysha2568e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0sha2568e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0sha256@8e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUsha256-7e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wsha256Q8e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjosha256 8e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70sha256 68e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0sha256O7e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90sha2568e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pcsha2568e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmksha256 8e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8sha256 ^8e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Isha256  PeQ_$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 593}{"auth_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20", "$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU"], "type": "m.room.history_visibility", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040790824, "hashes": {"sha256": "xu52b7BfE5Lce0PdwWab/tQoOsYPQF2uRWWWqCO4bvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "etYCVy2G07i+3bPAp0qLoZ+PnHrnIRt781jAQ2QsuFoA4OBYjaK6WwMbf50lwfTh0N5XVi3WP8Xx+nLsrq0vAA"}}, "unsigned": {"age_ts": 1570040790824}}sOeQ_u$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 592}{"auth_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20", "$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20"], "type": "m.room.join_rules", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040790075, "hashes": {"sha256": "Tm1I6q+nWIJa85kSdRQhu9lw1g7sPOlS8FhkKYTx+/M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xCYy0QxWOqW6aHxIYAw6TEwFPkLLFon6TwErxHOVPtLAX+Vs8e4DE7QDZPIH4otsHafN7H9P7qwxPt3j4wNSDA"}}, "unsigned": {"age_ts": 1570040790075}}jNeQ_c$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 591}{"auth_events": ["$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "type": "m.room.power_levels", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"users": {"@anon-20191002_181700-134:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040789343, "hashes": {"sha256": "XigdTHgAH8XQ2CPkahScNS9RRVv+Hvb+BfcV60JG+nI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IlD36ot24VcryEgCZjUqoqhAcWzLd8GHBwshWZOXFoBOGHrGgZoKli/RKu7pJddD/4sD0dbwYJhzI+tCifSyAg"}}, "unsigned": {"age_ts": 1570040789343}} -RM H C > 9 4/*|%w rmhc TMQeM!AjjrNwXmPTCruHxaJq:localhost:8800$uXaQfdGMi7wi7vhRnFFHiTN1tigFEBnxGrl36KN7IhMTLQeL!AjjrNwXmPTCruHxaJq:localhost:8800$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SITKQeK!AjjrNwXmPTCruHxaJq:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMTJQeJ!AjjrNwXmPTCruHxaJq:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHITIQeI!AjjrNwXmPTCruHxaJq:localhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMTHQeH!AjjrNwXmPTCruHxaJq:localhost:8800$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UTGQeG!AjjrNwXmPTCruHxaJq:localhost:8800$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNoTFQeF!AjjrNwXmPTCruHxaJq:localhost:8800$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98TEQeE!AjjrNwXmPTCruHxaJq:localhost:8800$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8TDQeD!AjjrNwXmPTCruHxaJq:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvoTCQeC!AjjrNwXmPTCruHxaJq:localhost:8800$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9ATBQeB!BkzROHxDAfKIzYpmPV:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4TAQeA!BkzROHxDAfKIzYpmPV:localhost:8800$OLFNJqOLKWBVd4nTdKFKnN_Ls51W3F1_yjnATq13u0gT@Qe@!BkzROHxDAfKIzYpmPV:localhost:8800$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoT?Qe?!BkzROHxDAfKIzYpmPV:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQT>Qe>!BkzROHxDAfKIzYpmPV:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUT=Qe=!BkzROHxDAfKIzYpmPV:localhost:8800$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8T<Qe e3 Y ' yk9  vj8 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMR1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMQ1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMP1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4 1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4 1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws H1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34 n1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws J1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws I1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI21e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34 o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4 1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI41e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI31e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMi1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs 1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUs1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUr1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMk1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMj1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUt P @ ` 0 P p  @`0P  p \ nV]@anon-20191002_181700-150:localhost:8800@anon-20191002_181700-150:localhost:8800 anon-20191002_181700-150n:]@anon-20191002_181700-115:localhost:8800@anon-20191002_181700-115:localhost:8800 anon-20191002_181700-115nT]@anon-20191002_181700-147:localhost:8829@anon-20191002_181700-147:localhost:8829 anon-20191002_181700-147nS]@anon-20191002_181700-148:localhost:8829@anon-20191002_181700-148:localhost:8829 anon-20191002_181700-148nR]@anon-20191002_181700-146:localhost:8800@anon-20191002_181700-146:localhost:8800 anon-20191002_181700-146nQ]@anon-20191002_181700-144:localhost:8800@anon-20191002_181700-144:localhost:8800 anon-20191002_181700-144nP]@anon-20191002_181700-143:localhost:8800@anon-20191002_181700-143:localhost:8800 anon-20191002_181700-143nO]@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-141:localhost:8800 anon-20191002_181700-141nN]@anon-20191002_181700-140:localhost:8800@anon-20191002_181700-140:localhost:8800 anon-20191002_181700-140nM]@anon-20191002_181700-139:localhost:8829@anon-20191002_181700-139:localhost:8829 anon-20191002_181700-139nL]@anon-20191002_181700-138:localhost:8800@anon-20191002_181700-138:localhost:8800 anon-20191002_181700-138nJ]@anon-20191002_181700-136:localhost:8800@anon-20191002_181700-136:localhost:8800 anon-20191002_181700-136nI]@anon-20191002_181700-134:localhost:8800@anon-20191002_181700-134:localhost:8800 anon-20191002_181700-134nH]@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-132:localhost:8800 anon-20191002_181700-132nG]@anon-20191002_181700-131:localhost:8800@anon-20191002_181700-131:localhost:8800 anon-20191002_181700-131nF]@anon-20191002_181700-129:localhost:8800@anon-20191002_181700-129:localhost:8800 anon-20191002_181700-129nE]@anon-20191002_181700-128:localhost:8800@anon-20191002_181700-128:localhost:8800 anon-20191002_181700-128nC]@anon-20191002_181700-126:localhost:8800@anon-20191002_181700-126:localhost:8800 anon-20191002_181700-126nB]@anon-20191002_181700-125:localhost:8800@anon-20191002_181700-125:localhost:8800 anon-20191002_181700-125pnW]@anon-20191002_181700-151:localhost:8800@anon-20191002_181700-151:localhost:8800 anon-20191002_181700-151nA]@anon-20191002_181700-124:localhost:8800@anon-20191002_181700-124:localhost:8800 anon-20191002_181700-124n@]@anon-20191002_181700-123:localhost:8800@anon-20191002_181700-123:localhost:8800 anon-20191002_181700-123n?]@anon-20191002_181700-120:localhost:8800@anon-20191002_181700-120:localhost:8800 anon-20191002_181700-120n>]@anon-20191002_181700-119:localhost:8800@anon-20191002_181700-119:localhost:8800 anon-20191002_181700-119n=]@anon-20191002_181700-118:localhost:8800@anon-20191002_181700-118:localhost:8800 anon-20191002_181700-118n<]@anon-20191002_181700-117:localhost:8800@anon-20191002_181700-117:localhost:8800 anon-20191002_181700-117n;]@anon-20191002_181700-116:localhost:8800@anon-20191002_181700-116:localhost:8800 anon-20191002_181700-116nK]@anon-20191002_181700-137:localhost:8800@anon-20191002_181700-137:localhost:8800 anon-20191002_181700-137 T P ( @ H xP`8pH PX0h@ 8 `  X 0hx(p X0 p x `8(p  h @P('Q!OtBUhGeUSiDMWRKIOT:localhost:8800 >'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OMkiVTuuOEeiFAXtUY:localhost:8800Z'Q!OMkiVTuuOEeiFAXtUY:localhost:8800Y'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800)'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800&'Q!OMkiVTuuOEeiFAXtUY:localhost:8800R'Q!PCgUmZOwWmtDsuFqXg:localhost:8800#'Q!OMkiVTuuOEeiFAXtUY:localhost:8800S'Q!PCgUmZOwWmtDsuFqXg:localhost:8800 'Q!OMkiVTuuOEeiFAXtUY:localhost:8800T'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OMkiVTuuOEeiFAXtUY:localhost:8800U'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OMkiVTuuOEeiFAXtUY:localhost:8800X'Q!OMkiVTuuOEeiFAXtUY:localhost:8800W'Q!OMkiVTuuOEeiFAXtUY:localhost:8800V'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800 @P'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800 H'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 ='Q!OtBUhGeUSiDMWRKIOT:localhost:8800 <'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 ;'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 :'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 9'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 8'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 7('Q!PCgUmZOwWmtDsuFqXg:localhost:8800+'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800x   s`eQ_u$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 609}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M"], "type": "m.room.join_rules", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040804958, "hashes": {"sha256": "aHsXcQqKzbGEbLPjyFVKbCGhopv10wpLHHwXm4RSVJ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mS2cIM3Epw6ndXPZ6wMGlgMpGMfvzqnjTC/iL8T/7F2kSITP9MFBvKtmO8B7JAOK2vd0pX0LlCYdkXrrClVpDQ"}}, "unsigned": {"age_ts": 1570040804958}}_eQ_9$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 608}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE"], "type": "m.room.canonical_alias", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"alias": "#test-20191002_181700-23:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040804325, "hashes": {"sha256": "s8IRLyiW2GwRHHrVWr1iWfgPAkfXULtJhJnj+LES5Qg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f9Ds13t93578iadpDCRpB6xlxuc+FgOv06lXR39vlpVIj0pf/cqZvusuINK1yZb7KCOCtPNkndNkrdYkCLXHBQ"}}, "unsigned": {"age_ts": 1570040804325}}j^eQ_c$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 607}{"auth_events": ["$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "type": "m.room.power_levels", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"users": {"@anon-20191002_181700-138:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040803751, "hashes": {"sha256": "EAS/I3AfYUXKarNxQWp+tEiDoJwCT9qP/beIcDPbTI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "98XvfDe8yYvWyvBSze0a236uZHN/l2Va32NBI3l7nZcwzmqfP+GXac/BLIXcss5uzUjr4tHOcbXMfXGLROEjBQ"}}, "unsigned": {"age_ts": 1570040803751}}u]eQ_y$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 606}{"auth_events": ["$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM"], "prev_events": ["$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM"], "type": "m.room.member", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-138", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-138:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040803215, "hashes": {"sha256": "3LojN0FIhI9+AF0AGBLCa5I4j+AbfUyr407qDnj5Pg0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EEtMZ7wbYdBgPifnrtxazCe5fGdXAjYLyTLRHvcpBqO2Te9WjPCG2AV/0hBXQY1RNnF265t08aBbeKRsgiImBw"}}, "unsigned": {"age_ts": 1570040803215}} @Q2W%vE,dW% ^ , d 2 j 8  p > v D 8|jJPV$\*1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU :1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA k1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:42455 V1e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU3$74:localhost:42455 U3$73:localhost:42455 N3$72:localhost:42455 M3$71:localhost:42455 L0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMm3$70:localhost:42455 K1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I]1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k,1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qx1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 V1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk01e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 q1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY{1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM b0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y+1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE f1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEh1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ41e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM\1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g `1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo,1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A w1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro41e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0J0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQX1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44AK1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs a1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 3$79:localhost:42455 Z1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM'3$78:localhost:42455 Y3$77:localhost:42455 X3$76:localhost:42455 W1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA d ?L w E  { } K ) Q  U W % ] +c1i7oO= uCj8#[I1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4C1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4B1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4A1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo _1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo ^1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M01e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M01e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M01e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA41e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA31e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA21e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo `1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEc1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI 1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI 1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI 1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwS1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwR1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwQ1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg M1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg L1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg K1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM F1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM E1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM D1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU91e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU81e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT81e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT81e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 1e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk1e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk1e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y 1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y 1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIc1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEd1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs 1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E%1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E#1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1*e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1)e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1(e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1'e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1&e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1%e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns~1$e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE}1#e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA|1"e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M{1!e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEz1 e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwy1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYv1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iou1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYt1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAs1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4r1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4q1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIp1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwo1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4m1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48l1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsk1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAj1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4i1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkh1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0g1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0f1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8d1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoc1 e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokb1 e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0a1 e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI`1 e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4_1 e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c^1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs]1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4\1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg[1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsZ1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvoY1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nIX1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30V1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgU1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kT1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQS1~e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoR1}e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyEQ1|e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkP1{e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEO1ze$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIL1ye$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMK1xe$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIJ1we$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMI1ve$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UH1ue$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNoG1te$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98F1se$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8E1re$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvoD1qe$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9AC1pe$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4B1oe$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo@1ne$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ?1me$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU>1le$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8=1ke$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY<1je$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM;1ie$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0:1he$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF091ge$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx881fe$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ471ee$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr061de$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk41ce$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw421be$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo11ae$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW801`e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M/ o xobceQ_S$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 612}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo"], "type": "m.room.third_party_invite", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:46213/_matrix/identity/v2/pubkey/isvalid", "public_key": "T6DriTFG1NKhbYa+RaM2rNgmMdyk1sRUyDXJhmBZK1s"}, {"public_key": "eQfS9yJgFxwmx1oYxGYkum++glXz1/jR1pfZMsVKTsw", "key_validity_url": "https://localhost.localdomain:46213/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:46213/_matrix/identity/v2/pubkey/isvalid", "public_key": "T6DriTFG1NKhbYa+RaM2rNgmMdyk1sRUyDXJhmBZK1s"}, "depth": 8, "prev_state": [], "state_key": "1", "origin": "localhost:8800", "origin_server_ts": 1570040807668, "hashes": {"sha256": "2RyuWhztYukBJsI7pe+9YIyFB3vzn/HfVqnW5BdGlrc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/teTilxEmL483/veRJsrxcALpDHUHiYaolwp6JKZaO118EsAOkGgzmHNCX1kRLGHU+bQQHfRSN72F1N/tNhEDQ"}}, "unsigned": {"age_ts": 1570040807668}}beQ_M$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 611}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8"], "type": "m.room.aliases", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"aliases": ["#test-20191002_181700-23:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040806967, "hashes": {"sha256": "rngzio1NvFXK5z5+FJzWxTucL43qz6sHYItoWvO2nRA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RKsp49YS85EhzcvunOmEpmNd/l5KbZGiQk+P6AiEam3H2MtgAefWtWXc1Lx6P4/mQEcykgJo5BeDB9Gb9H69Cg"}}, "unsigned": {"age_ts": 1570040806967}}aeQ_$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 610}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M"], "type": "m.room.history_visibility", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040805808, "hashes": {"sha256": "rExcMDFOYbuVBTKWRTvhCl+Kd9cEhmf61T9TdTIUOM0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5n3wFhE+mnOTA2B7u4LcpJJE3SkPAMnc08QYzSBTAzjPLmoK3O+n9zIUNfTHU2GRwy8+uJTKec8doFVMyjG8Dg"}}, "unsigned": {"age_ts": 1570040805808}} {g{hfeQ__$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 615}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-140:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040812526, "hashes": {"sha256": "sLmHYunO7lyg0pBfVjItYyZJXhvoYBcow8ChlKx6H2A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BF+zGOGSJ+DgyarxTy0SUhsSyrddikRf4KBbtetkatgLejDLditrtgQ4Ze7qXQS4Aqsl8NC66Mif12j60bMTDQ"}}, "unsigned": {"age_ts": 1570040812526}}4eeQ/%$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0!WWZVpyLeZfyfpWidLx:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 614}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-139", "membership": "join"}, "depth": 10, "hashes": {"sha256": "uvRSoWmO7bN5hWYBI4BZzLqpDl5HWBvNsfc0nNiu8xg"}, "origin": "localhost:8829", "origin_server_ts": 1570040809972, "prev_events": ["$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk"], "prev_state": [], "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-139:localhost:8829", "state_key": "@anon-20191002_181700-139:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BN2ZpTIObSHZY7vvbYoiZxNXRjMoxjc2PIp6Yd4tS9vv7YY9w3XE84DVqHH7ACOLgf3sqRyW9bKD+kZaZkDzBw"}, "localhost:8829": {"ed25519:a_UxIG": "rVtiDG4ZYawwUxKL6ut2DcO33foGq7zgSYlQbd1eou4nO3UE6Qu9X7iRgYvEDlRnOrgBfrYzxWwa9R18bwsDCQ"}}, "unsigned": {"age": 138, "replaces_state": "$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk"}}]deQ $b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!WWZVpyLeZfyfpWidLx:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 613}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc", "$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4"], "prev_events": ["$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4"], "type": "m.room.member", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"mxid": "@anon-20191002_181700-139:localhost:8829", "signatures": {"localhost.localdomain:46213": {"ed25519:0": "q11GEcod8XEfLb5U+flWATO7H96azpaE3HUAh4NcMYO0Ic+9eOQXdUKO79vhgx+iNFFEsh5AkNZJQSB/dJHSAQ"}}, "token": "1"}, "display_name": "Bob"}}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-139:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040808563, "hashes": {"sha256": "1MmkI/6CuIla35XXJoJMjNgTG6E3QxexLGAaXzM9z4Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XYexViH0ZCY0QUDbq5Y/kr6/NW7EWSo9PXMEhbqRP52amG1+22sRFJ0IyOU7uJx8LM3S1P0umuPPSfRmygIMCg"}, "localhost:8829": {"ed25519:a_UxIG": "A2+bHW3Y/g+WMRhYcRYbkmnLWeqKootfGxgYYzTN86rFyFdX6GZWK/u23TeepVa6BtdK0PNqDmaR6FWjIUV8Bw"}}, "unsigned": {"age_ts": 1570040808563, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-23:localhost:8800"}, "sender": "@anon-20191002_181700-138:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-138:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-138:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-138", "avatar_url": null}, "sender": "@anon-20191002_181700-138:localhost:8800"}]}} a} { y w u sqomkigeca~ZeeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~YeeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800~XeeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~WeeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~VeeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800~UeeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~TeeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~SeeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~ReeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800~QeeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~PeeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~OeeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~NeeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~MeeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~LeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~KeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~JeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~IeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~HeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~GeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~FeeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~EeeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~DeeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~CeeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~BeeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~AeeQ$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~@eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800~?eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800~>eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800~=eeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800~<eeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800 =|t l d \ T  LE5-%eeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800UeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800SeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800TeeQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800́eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800 ÁeeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800ځeeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800eeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800 &eeQ$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800 eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800 +eeQ$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800%eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800AeeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:88002eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800eeQ$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800meeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800ǁeeQ$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800ǁeeQ$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800 teeQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800]eeQ$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800eeQ$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800` ~z v r n j fb^ZVRNJF?eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800>eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800=eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800<eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800;eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800:eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:88009eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:88008eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:88007eeQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:88006eeQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:88005eeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:88004eeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:88003eeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:88002eeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:88001eeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:88000eeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800/eeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800.eeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800-eeQ$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800,eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800+eeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800*eeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU!BkzROHxDAfKIzYpmPV:localhost:8800)eeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!BkzROHxDAfKIzYpmPV:localhost:8800(eeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY!BkzROHxDAfKIzYpmPV:localhost:8800'eeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800&eeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800%eeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800$eeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800#eeQ$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800"eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!WWZVpyLeZfyfpWidLx:localhost:8800   gh5 4i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPcHdsY2xTMmxNRHhGelAKMDAyZnNpZ25hdHVyZSCRO3NI972HYQiWbTV_AWWTe36rrhxCS0LG7T3jgGN7_go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5JbFJkNypzTWs2eURlTnUKMDAyZnNpZ25hdHVyZSCDDhptP9gyMvPD-AX61QNi0vzkJgRqWaZ8eBWmEREh6Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAo Gc0`+ _ , \ ' W $ T  O PK}JzEyFvAq> n94]@anon-20191002_181700-377:localhost:8800m2]@anon-20191002_181700-377:localhost:8800a4]@anon-20191002_181700-376:localhost:8800m2]@anon-20191002_181700-376:localhost:8800a4]@anon-20191002_181700-375:localhost:8800m2]@anon-20191002_181700-375:localhost:8800a4]@anon-20191002_181700-374:localhost:8800m2]@anon-20191002_181700-374:localhost:8800a4]@anon-20191002_181700-373:localhost:8800m2]@anon-20191002_181700-373:localhost:8800a4]@anon-20191002_181700-372:localhost:8800m2]@anon-20191002_181700-372:localhost:8800a4]@anon-20191002_181700-371:localhost:8800m2]@anon-20191002_181700-371:localhost:8800a4]@anon-20191002_181700-370:localhost:8800m2]@anon-20191002_181700-370:localhost:8800a2[@anon-20191002_181700-36:localhost:8800mQ0[@anon-20191002_181700-36:localhost:8800aP4]@anon-20191002_181700-369:localhost:8800m2]@anon-20191002_181700-369:localhost:8800a4]@anon-20191002_181700-368:localhost:8800m2]@anon-20191002_181700-368:localhost:8800a4]@anon-20191002_181700-367:localhost:8800m2]@anon-20191002_181700-367:localhost:8800a2]@anon-20191002_181700-366:localhost:8800a4]@anon-20191002_181700-365:localhost:8800m2]@anon-20191002_181700-365:localhost:8800a2]@anon-20191002_181700-364:localhost:8800a4]@anon-20191002_181700-363:localhost:8800m2]@anon-20191002_181700-363:localhost:8800a4]@anon-20191002_181700-362:localhost:8800m2]@anon-20191002_181700-362:localhost:8800a4]@anon-20191002_181700-361:localhost:8800m2]@anon-20191002_181700-361:localhost:8800a4]@anon-20191002_181700-360:localhost:8800m2]@anon-20191002_181700-360:localhost:8800a2[@anon-20191002_181700-35:localhost:8800mO0[@anon-20191002_181700-35:localhost:8800aN4]@anon-20191002_181700-359:localhost:8800m2]@anon-20191002_181700-359:localhost:8800a4]@anon-20191002_181700-358:localhost:8800m2]@anon-20191002_181700-358:localhost:8800a4]@anon-20191002_181700-357:localhost:8800m2]@anon-20191002_181700-357:localhost:8800a4]@anon-20191002_181700-356:localhost:8800m2]@anon-20191002_181700-356:localhost:8800a4]@anon-20191002_181700-355:localhost:8800m2]@anon-20191002_181700-355:localhost:8800a4]@anon-20191002_181700-354:localhost:8800m2]@anon-20191002_181700-354:localhost:8800a4]@anon-20191002_181700-353:localhost:8800m2]@anon-20191002_181700-353:localhost:8800a4]@anon-20191002_181700-352:localhost:8800m2]@anon-20191002_181700-352:localhost:8800a4]@anon-20191002_181700-351:localhost:8800m2]@anon-20191002_181700-351:localhost:8800a4]@anon-20191002_181700-350:localhost:8800m2]@anon-20191002_181700-350:localhost:8800a2[@anon-20191002_181700-34:localhost:8800mM0[@anon-20191002_181700-34:localhost:8800aL4]@anon-20191002_181700-349:localhost:8800m2]@anon-20191002_181700-349:localhost:8800a4]@anon-20191002_181700-348:localhost:8800m2]@anon-20191002_181700-348:localhost:8800a4]@anon-20191002_181700-347:localhost:8800m2]@anon-20191002_181700-347:localhost:8800a4]@anon-20191002_181700-346:localhost:8800m2]@anon-20191002_181700-346:localhost:8800a4]@anon-20191002_181700-345:localhost:8800m2]@anon-20191002_181700-345:localhost:8800a4]@anon-20191002_181700-343:localhost:8800m   sjeQ_u$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 619}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "prev_events": ["$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0"], "type": "m.room.join_rules", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040816010, "hashes": {"sha256": "BNdNOZAMFseYlZR25T05FQ4m0KsaP6tNsozXBzPHYFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nXQbxb8ItsbG/coCRE9eLyfTt6ezx0e0hdj0lUwBudzLfYvspn7rY9SPGsCIkr4NC5Bo+DQnKRDbmunTrfrADg"}}, "unsigned": {"age_ts": 1570040816010}}ieQ_9$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 618}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "prev_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0"], "type": "m.room.canonical_alias", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"alias": "#test-20191002_181700-24:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040815067, "hashes": {"sha256": "fy0+WaVb11+NEGQwvpoa+Zg/zRlsJmIcHmeB48ZBmk0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9VTSk58UanO/SK7GFgXrjoS1ZsV4pgxXWSoq5Ud3L5AhBVjtIzH6ocq2Dim636RKkls3pMbAm1MFUb5Qmb7bBQ"}}, "unsigned": {"age_ts": 1570040815067}}jheQ_c$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 617}{"auth_events": ["$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "prev_events": ["$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "type": "m.room.power_levels", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"users": {"@anon-20191002_181700-140:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040814302, "hashes": {"sha256": "3AQC7EqfwG0QteBdh4LSNbYVPzM/RaynLKQBw7FXJH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f9qT3giUnx9byQhGyKeFB+MFqLildfv/SSSSan75YcGJit1MH2z5JSZdzGVrBmzgTueTqbc1OR0mg0aFUOCrAg"}}, "unsigned": {"age_ts": 1570040814302}}ugeQ_y$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 616}{"auth_events": ["$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4"], "prev_events": ["$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4"], "type": "m.room.member", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-140", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-140:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040813710, "hashes": {"sha256": "v34n2h32Iz2QUpkv5LoeoWEFToVcwuH0/zG5Jb7RPoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WrkO+YdMDffBtvRdwUWt4Kcstw24OdudFug8zc8Jk/wR2uI3fjM5XEQD+lae5oSeyfeAaNqDIer70a3+M2qvCA"}}, "unsigned": {"age_ts": 1570040813710}}  K v D  | J  P   V $ \ *b0h6n< tBzHNT"]+j81e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw01e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw/1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY50e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0d0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0c0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0b1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw 1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo @1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo ?1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo >1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE 1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE 1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE 1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0 1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0 1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0 1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkB1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkA1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE~1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEW1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEj1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEi1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEh1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0#1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0"1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE 1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MY1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MX1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw%1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw#1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s#1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"1e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk1e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl471e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4 1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0'1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0&1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0%1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY71e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY61e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1 \$ T t LD<4,  l d eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800 "eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800<eeQ$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:88009eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800 ~eeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800 YeeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800 XeeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800 seeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800 )eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800ׁeeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800keeQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800ceeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800_eeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800heeQ$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800;eeQ$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800 \eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800>eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800?eeQ$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800eeQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800  K ' \ * VSM0i>7o j= Y! J u | { 8 $ICb  p R D 1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico [1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY$1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA 1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cw1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cz1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M )1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM 1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts~1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs01e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc#1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA 1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ]1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQf0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo]1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIf1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIh1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEa1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM O1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0p1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kl1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEH1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4F }1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ u1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkr1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagL1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk]1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o|1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o ?1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 11e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE O1e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o S1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA /1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU .  j  u 0 I+)49`y[Y \Q']eZ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsp[Q?eY!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo ZQ']eX!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI YQ']eW!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$yRMhVLnxeFdjrJfX5LJoNXmsoJ9RaoL8DBiSqs6Exmk XQ']eV!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30rWQ))eU!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgoVQ? eT!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibility$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kgUQ/ eS!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rules$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQlTQ9 eR!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_alias$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoiSQ3 eQ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE RQ']eP!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkcQQ' eO!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.create$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE PQ']eN!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-145:localhost:8829$zx789KIhAnVMgxg_3YnlXjechhEygoKwTRi6B-h53pM OQ']eM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-145:localhost:8829$uXaQfdGMi7wi7vhRnFFHiTN1tigFEBnxGrl36KN7IhMpNQ?eL!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI MQ']eK!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM LQ']eJ!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIrKQ))eI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMoJQ? eH!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibility$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UgIQ/ eG!AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rules$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNolHQ9 eF!AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_alias$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98iGQ3 eE!AjjrNwXmPTCruHxaJq:localhost:8800m.room.power_levels$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8 FQ']eD!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-143:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvocEQ' eC!AjjrNwXmPTCruHxaJq:localhost:8800m.room.create$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A DQ']eB!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4 CQ']eA!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800$OLFNJqOLKWBVd4nTdKFKnN_Ls51W3F1_yjnATq13u0gpBQ?e@!BkzROHxDAfKIzYpmPV:localhost:8800m.room.third_party_invite2$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo AQ']e?!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ @Q']e>!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUr?Q))e=!BkzROHxDAfKIzYpmPV:localhost:8800m.room.aliaseslocalhost:8800$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8o>Q? e l:8K^2,d2k1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAJ1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk;1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU#3$89:localhost:42455 3$88:localhost:42455 3$87:localhost:42455 A$86_sent_F:localhost:42455 1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQs1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc 1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0"1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwM1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28^1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AH1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4A$85_sent_E:localhost:42455 1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o%M$84_backfilled_D:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug "G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk B3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokF1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 3$81:localhost:42455 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo`3$80:localhost:42455 1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok11e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 3$79:localhost:42455 3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 3$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 3$70:localhost:42455 1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U g1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkY1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4F1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g h1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIK1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A _1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kJ1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8X1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQf1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMj1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM N  ~ L  S ! Y ' ` .f4l:r@xF~LR qX&Q|J*p> 9IUFyd1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AFA$86_sent_F:localhost:42455 1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4A$85_sent_E:localhost:42455 1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o%M$84_backfilled_D:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 23$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokD1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 3$81:localhost:42455 u1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo^1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok/1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U H1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkJ1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4D1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU 1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g X1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI<1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A P1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kH1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8X1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQf1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs x1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMj1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsl1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 +1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0 1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwK3$89:localhost:42455 1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU v1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28^3$88:localhost:42455 1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk RK2k9jq? x F  ~ L  R  X & 8 ^ ,dW%S!rY'xFM1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAD1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk51e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMW1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQs1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc 1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0"1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwM3$89:localhost:42455 1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28^3$88:localhost:42455 1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AH1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug "G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk B3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokF1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo`3$80:localhost:42455 1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok11e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 3$79:localhost:42455 3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 3$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 3$70:localhost:42455 1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U e1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkY1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4F1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g h1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIK1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A _1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kJ1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8X1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQf1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMj1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM ,NC 8 - { " p  e ZOD9.|#qf VeL$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwsha256;׃A2oh ε Ք¬VeL$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4sha256خtE(Zœ:su+)4uVeL$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48sha256 "L զq 1k"@?VeL$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNssha256JIFZ&cpwƘKxze~ uJpVeL$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAsha256Ky! Y)KjH`t=©VeL$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4sha256U楎eKs,k~ K 9=ݱaZ^VeL$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBksha256{wb>lێG8yFbEIuVeL$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0sha256PJ3 "x"\QW Z¼#e3VeL$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0sha256zbȺȝ~0>5X^%ͽJגPh1]VeL$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8sha256(o[D;ixYZ@AhEIzh)@VeL$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxosha256_K` (֪v{Y#!,M5ו畐oV eL$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9woksha256#^]!mnRrwiCK w)}‰V eL$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0sha256 ב |\Y^v̋Y*cL>n-V eL$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIsha256N.CD\J ɣn$<̜&bV eL$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4sha256 W9.M _E!+[)L*~V eL$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-csha256pXb<MJ]41. @/yaVzeL$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIsha256m)L%O!PH~k;@ol"VyeL$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMsha256QV0ׄ;'V=w2y4o`h`|VxeL$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIsha256N.Cp77ܥ5dwJrVweL$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMsha256p$J"ޮ&xQq OnhC;#VveL$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Usha256͐u)Z!){&ic7uVueL$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNosha256dc=>hꬬ ,VteL$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98sha2566RMd&CdCԁ C[H+}VseL$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8sha256nS>7C|znk/UEI0eoVreL$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvosha256_YOrm UtDžqDVqeL$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Asha256݃Bʁ١cVoeL$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRosha256?Q9 !XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_aliasAEQ))!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800D<Q3 !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels^Q']!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800:Q/ !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rulesBQ? !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibility6Q' !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.create<Q3 !XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels ^Q']!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800#^Q']!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800:Q/ !XNfwczePlyYFWLCaui:localhost:8800m.room.join_rules!BQ? !XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibility"6Q' !XNfwczePlyYFWLCaui:localhost:8800m.room.create<Q3 !XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels^Q']!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800^Q']!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800 P\3\1 Z /  X -  V +  T ) } R '{P%yN#wL!uJsHqFoDmB*Q!RmdhCjvouVLmyIHjaM:localhost:8800AA*Q!RmdhCjvouVLmyIHjaM:localhost:8800@@*Q!RmdhCjvouVLmyIHjaM:localhost:8800??*Q!RmdhCjvouVLmyIHjaM:localhost:8800>>*Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( d*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' c*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & b*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % a*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ `*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # _*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " ^*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! ]*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 \*Q!RSLvuCuAqKQQrKCxNq:localhost:8800  [*Q!RPfffkmSEbWggEjnoI:localhost:8800-3*Q!RPfffkmSEbWggEjnoI:localhost:8800+1*Q!RPfffkmSEbWggEjnoI:localhost:8800(.*Q!RPfffkmSEbWggEjnoI:localhost:8800%+*Q!RPfffkmSEbWggEjnoI:localhost:8800"(*Q!RPfffkmSEbWggEjnoI:localhost:8800%*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800  *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 } *Q!QnmLrBAxeItdHsaxWf:localhost:8800 k *Q!QnmLrBAxeItdHsaxWf:localhost:8800 j *Q!QnmLrBAxeItdHsaxWf:localhost:8800 i *Q!QnmLrBAxeItdHsaxWf:localhost:8800 h *Q!QnmLrBAxeItdHsaxWf:localhost:8800 g *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QcaNrIiUsWpTiVGOnt:localhost:8800<i*Q!QcaNrIiUsWpTiVGOnt:localhost:8800:g*Q!QcaNrIiUsWpTiVGOnt:localhost:88008e*Q!QcaNrIiUsWpTiVGOnt:localhost:88006c*Q!QcaNrIiUsWpTiVGOnt:localhost:88005b(Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 ~ ~coeQ_U$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 168, "stream_ordering": 624}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ"], "prev_events": ["$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ"], "type": "m.room.third_party_invite", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-141:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:41099/_matrix/identity/v2/pubkey/isvalid", "public_key": "FbyKncvpQLqMGCtHNQCZ6MkYPyKDlmPLgMm9ktXrlwk"}, {"key_validity_url": "https://localhost.localdomain:41099/_matrix/identity/v2/pubkey/isvalid", "public_key": "OefadBZjnA/DvLrfUjA9DWXooxJIE4XPhfg+rm7f2jQ"}], "key_validity_url": "https://localhost.localdomain:41099/_matrix/identity/v2/pubkey/isvalid", "public_key": "FbyKncvpQLqMGCtHNQCZ6MkYPyKDlmPLgMm9ktXrlwk"}, "depth": 10, "prev_state": [], "state_key": "2", "origin": "localhost:8800", "origin_server_ts": 1570040820891, "hashes": {"sha256": "iYCloOHSun1hEPyQCyijTfFtO9X7Eo802V9PTz0WGnI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R5u03hpN1fVTwrI+Ej0qAxPF0SViIle0m5GZ0yJfbfXU/Un9jv2qwqPNop4yRMzon53wkClI8XVgm1s4VxCwAQ"}}, "unsigned": {"age_ts": 1570040820891}}neQ_=$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 168, "stream_ordering": 623}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM"], "prev_events": ["$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU"], "type": "m.room.member", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-141:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-141", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-141:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040819594, "hashes": {"sha256": "hdzUSqDZcpxvWTAUcEisduVoV19kZg7qUZLmwprPSiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cmieDZ8Eu5if8tleyCq04FW9OYTcURjpfUBqpXK72G2tQWArfjz3LyZOtArlIdL4VLVUi6YAC47BDQiRQ+RIDA"}}, "unsigned": {"age_ts": 1570040819594, "replaces_state": "$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU"}} RoDF w L !mBk@qT)e:g<}R' { P % y N # c8  ui> J  s H *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & &*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % %*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ $*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # #*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 " "*Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i i*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] ]*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ \*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ [*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z Z*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y Y*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m m*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l l*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k k*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j j*Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n n*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800X*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X X*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 W W*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q q*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p p*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o o*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YtVXQjSPgVtbxrzUOA:localhost:8800ii*Q!YtVXQjSPgVtbxrzUOA:localhost:8800hh*Q!YtVXQjSPgVtbxrzUOA:localhost:8800gg*Q!YtVXQjSPgVtbxrzUOA:localhost:8800ff*Q!YtVXQjSPgVtbxrzUOA:localhost:8800ee*Q!YtVXQjSPgVtbxrzUOA:localhost:8800dd*Q!YgaGPEraeLCqHQirin:localhost:8800??*Q!YgaGPEraeLCqHQirin:localhost:8800<<*Q!YgaGPEraeLCqHQirin:localhost:8800;;*Q!YgaGPEraeLCqHQirin:localhost:8800::*Q!YgaGPEraeLCqHQirin:localhost:880099*Q!YgaGPEraeLCqHQirin:localhost:880088*Q!YgaGPEraeLCqHQirin:localhost:880077*Q!YQATbgbLImCDamiDHC:localhost:8800 KN(G0TA$ a " i * J i R  r 3Rb#BnQ6qZCF / /m.room.join_rules19 .m.room.canonical_alias03 -m.room.power_levels/>'],m.room.member@anon-20191002_181700-138:localhost:8800.' +m.room.create->']*m.room.member@anon-20191002_181700-137:localhost:8800,>'])m.room.member@anon-20191002_181700-137:localhost:8800+>'](m.room.member@anon-20191002_181700-137:localhost:8800*#?'m.room.third_party_invite0)%))&m.room.aliaseslocalhost:8800("? %m.room.history_visibility'>']om.room.member@anon-20191002_181700-153:localhost:8800q>']nm.room.member@anon-20191002_181700-153:localhost:8800p#?mm.room.third_party_invite6o"? lm.room.history_visibilityn/ km.room.join_rulesm3 jm.room.power_levelsl>']im.room.member@anon-20191002_181700-152:localhost:8800k' hm.room.createj>']gm.room.member@anon-20191002_181700-151:localhost:8800i>']fm.room.member@anon-20191002_181700-151:localhost:8800h>']em.room.member@anon-20191002_181700-151:localhost:8800g>']dm.room.member@anon-20191002_181700-149:localhost:8800f#?cm.room.third_party_invite5e>']bm.room.member@anon-20191002_181700-150:localhost:8800d>']am.room.member@anon-20191002_181700-150:localhost:8800c"? `m.room.history_visibilityb/ _m.room.join_rulesa3 ^m.room.power_levels`>']]m.room.member@anon-20191002_181700-149:localhost:8800_' \m.room.create^>'][m.room.member@anon-20191002_181700-147:localhost:8829]>']Zm.room.member@anon-20191002_181700-147:localhost:8829\#?Ym.room.third_party_invite4[>']Xm.room.member@anon-20191002_181700-148:localhost:8829Z>']Wm.room.member@anon-20191002_181700-148:localhost:8829Y>']Vm.room.member@anon-20191002_181700-148:localhost:8829X%))Um.room.aliaseslocalhost:8800W"? Tm.room.history_visibilityV/ Sm.room.join_rulesU9 Rm.room.canonical_aliasT3 Qm.room.power_levelsS>']Pm.room.member@anon-20191002_181700-146:localhost:8800R' Om.room.createQ>']Nm.room.member@anon-20191002_181700-145:localhost:8829P>']Mm.room.member@anon-20191002_181700-145:localhost:8829O#?Lm.room.third_party_invite3N>']Km.room.member@anon-20191002_181700-144:localhost:8800M>']Jm.room.member@anon-20191002_181700-144:localhost:8800L%))Im.room.aliaseslocalhost:8800K"? Hm.room.history_visibilityJ/ Gm.room.join_rulesI9 Fm.room.canonical_aliasH3 Em.room.power_levelsG>']Dm.room.member@anon-20191002_181700-143:localhost:8800F' Cm.room.createE>']Bm.room.member@anon-20191002_181700-142:localhost:8800D>']Am.room.member@anon-20191002_181700-142:localhost:8800C#?@m.room.third_party_invite2B>']?m.room.member@anon-20191002_181700-141:localhost:8800A>']>m.room.member@anon-20191002_181700-141:localhost:8800@%))=m.room.aliaseslocalhost:8800?"? / ;m.room.join_rules=9 :m.room.canonical_alias<3 9m.room.power_levels;>']8m.room.member@anon-20191002_181700-140:localhost:8800:' 7m.room.create9>']6m.room.member@anon-20191002_181700-139:localhost:88298>']5m.room.member@anon-20191002_181700-139:localhost:88297>']4m.room.member@anon-20191002_181700-139:localhost:88296>']3m.room.member@anon-20191002_181700-139:localhost:88295#?2m.room.third_party_invite14%))1m.room.aliaseslocalhost:88003"? 0m.room.history_visibility2 99ureQ_y$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 627}{"auth_events": ["$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A"], "prev_events": ["$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A"], "type": "m.room.member", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-143", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-143:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040824365, "hashes": {"sha256": "FFg92OV+lNkCwCeRDJZb6rU3k4vhsbgPqai+YSsTHeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ircWlxsBYU7XiTG05KXFbpMG72oWxr57i42KJA101O6diFBUz6UJkI3M+N7je9OET7j17UMeCqm/Nyh/D8XBBA"}}, "unsigned": {"age_ts": 1570040824365}}hqeQ__$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 626}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-143:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040823648, "hashes": {"sha256": "CAzqMHU0LLPoaBFgRDY/6ys4p+anhWWK2W7Zyt62lyU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZHw/VbktJ/0i2elOkBPjCIJ8zBGPFe9Nv4J4RIoNr9212KP3p4nUu9YE4tEW4+8gwZDBS+qZIYvK231r2W1tBQ"}}, "unsigned": {"age_ts": 1570040823648}}^peQ $cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 625}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM", "$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ", "$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo"], "prev_events": ["$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo"], "type": "m.room.member", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-141:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"mxid": "@anon-20191002_181700-142:localhost:8800", "signatures": {"localhost.localdomain:41099": {"ed25519:0": "csGIOmpI8sU3Cs6NMJvpj+IUt7n22naNzdH19wogmLYPIYGvrvN1TPRokNvy7IsbQVvvswKPATXCRjbEl9joAA"}}, "token": "2"}, "display_name": "Bob"}}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-142:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040821731, "hashes": {"sha256": "HL4x81Pm4Ok7GVWvY3GIehcTnNv1cdyG6EW/QGFrEF8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6/DdCftDP14oncxH2PeVKAGEXfD2fm/H6I4VgMn8lqduqtKMMcrEko45MNk53RB7//qzqe06s9l3GNTD4+n3AQ"}}, "unsigned": {"age_ts": 1570040821731, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-24:localhost:8800"}, "sender": "@anon-20191002_181700-140:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-140:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-141:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-141", "avatar_url": null}, "sender": "@anon-20191002_181700-141:localhost:8800"}]}} a} { y w u sqomkigeca~yeeQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~xeeQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~weeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800~veeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~ueeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~teeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800~seeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~reeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~qeeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~peeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800~oeeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~neeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~meeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~leeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~keeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~jeeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~ieeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~heeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~geeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~feeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~eeeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~deeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~ceeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~beeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~aeeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~`eeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~_eeQ$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~^eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800~]eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800~\eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800~[eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800 xN F  ~ L  R X & ^ ,dKyGjf4m; sAyGMS!9q? JPSogZKX50rSYi1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA 1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk ~1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI 1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUY1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc91e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw%1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwU1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8y1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 t1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg (1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8M1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgE1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMR1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA .1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM 1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 10e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQj1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8N1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUq1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28,1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYT3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug m"G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 z3$80:localhost:42455 1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkf1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0YU1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEd1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ41e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU f1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM[1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g 71e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA 1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0AY1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf41e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8 1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0Ec1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU <1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4M1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA =1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM 21e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUX1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw 1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM [ r } [ Hplm x 9 Vj- L yg|eQ3 $jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800m.room.power_levelseeQ/ $p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rulesjeQ9 $qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_aliasgeQ3 $GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels eQ']$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800joina eQ' $KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.createn eQ?$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3 eQ']$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800joinneQ?$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800m.room.third_party_invite2 eQ']$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800joinpeQ))$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!BkzROHxDAfKIzYpmPV:localhost:8800m.room.aliaseslocalhost:8800meQ? $2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY!BkzROHxDAfKIzYpmPV:localhost:8800m.room.history_visibilitye~eQ/ $78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800m.room.join_rulesj}eQ9 $MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800m.room.canonical_alias7 {eQ']$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-140:localhost:8800joinazeQ' $XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800m.room.create yeQ']$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829joinnxeQ?$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800m.room.third_party_invite1pweQ))$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800m.room.aliaseslocalhost:8800p eQ))$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800m eQ? $Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibilityeeQ/ $gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rulesjeQ9 $NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_aliasgeQ3 $blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800m.room.power_levels eQ']$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-143:localhost:8800joinaeQ' $wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800m.room.createeQ']$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800invite N^ c f  n(~)y08N e'Q ]$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsm.room.member!aWvVRVaDflYyyGTOdD:localhost:8800m"m#~@anon-20191002_181700-149:localhost:8800 e'Q  ]$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4m.room.create!aWvVRVaDflYyyGTOdD:localhost:8800mm@anon-20191002_181700-149:localhost:8800 e'Q ] $la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800 m m@anon-20191002_181700-147:localhost:8829 e'Q ] $4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800 m)m @anon-20191002_181700-146:localhost:8800,e?Q ] $Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvom.room.third_party_invite!GiSxJsKZhQVHBkrVPn:localhost:8800 mmC@anon-20191002_181700-146:localhost:8800 e'Q ] $Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nIm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800 mm@anon-20191002_181700-148:localhost:8829 e'Q ]$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30m.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800mmt@anon-20191002_181700-146:localhost:8800!e)Q ]$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Egm.room.aliases!GiSxJsKZhQVHBkrVPn:localhost:8800mgm'@anon-20191002_181700-146:localhost:8800,e?Q ]$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0km.room.history_visibility!GiSxJsKZhQVHBkrVPn:localhost:8800mm`@anon-20191002_181700-146:localhost:8800$e/Q ]$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQm.room.join_rules!GiSxJsKZhQVHBkrVPn:localhost:8800mzm9@anon-20191002_181700-146:localhost:8800)e9Q ]$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevom.room.canonical_alias!GiSxJsKZhQVHBkrVPn:localhost:8800mm@anon-20191002_181700-146:localhost:8800&~e3Q ]$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyEm.room.power_levels!GiSxJsKZhQVHBkrVPn:localhost:8800mm@anon-20191002_181700-146:localhost:8800 }e'Q ]$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800m>m@anon-20191002_181700-146:localhost:8800| e'Q  ]$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEm.room.create!GiSxJsKZhQVHBkrVPn:localhost:8800mmm@anon-20191002_181700-146:localhost:8800,{e?Q ] $3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIm.room.third_party_invite!AjjrNwXmPTCruHxaJq:localhost:8800 mm@anon-20191002_181700-144:localhost:8800 ze'Q ] $uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMm.room.member!AjjrNwXmPTCruHxaJq:localhost:8800 mm~@anon-20191002_181700-144:localhost:8800 ye'Q ]$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIm.room.member!AjjrNwXmPTCruHxaJq:localhost:8800mܗm@anon-20191002_181700-143:localhost:8800!xe)Q ]$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMm.room.aliases!AjjrNwXmPTCruHxaJq:localhost:8800m1mٽ@anon-20191002_181700-143:localhost:8800,we?Q ]$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Um.room.history_visibility!AjjrNwXmPTCruHxaJq:localhost:8800mm԰@anon-20191002_181700-143:localhost:8800$ve/Q ]$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNom.room.join_rules!AjjrNwXmPTCruHxaJq:localhost:8800mˈm@anon-20191002_181700-143:localhost:8800)ue9Q ]$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98m.room.canonical_alias!AjjrNwXmPTCruHxaJq:localhost:8800mǘm@anon-20191002_181700-143:localhost:8800&te3Q ]$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8m.room.power_levels!AjjrNwXmPTCruHxaJq:localhost:8800m m6@anon-20191002_181700-143:localhost:8800 se'Q ]$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvom.room.member!AjjrNwXmPTCruHxaJq:localhost:8800m-m„@anon-20191002_181700-143:localhost:8800r e'Q  ]$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Am.room.create!AjjrNwXmPTCruHxaJq:localhost:8800m`m@anon-20191002_181700-143:localhost:8800 9p  R J"[UC" e]]Q=$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM@anon-20191002_181700-158:localhost:8800@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800joinanon-20191002_181700-158C! e]]Q=$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE@anon-20191002_181700-156:localhost:8800@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800joinanon-20191002_181700-156C e]]Q=$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4@anon-20191002_181700-154:localhost:8800@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800joinanon-20191002_181700-154C e]]Q=$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI@anon-20191002_181700-153:localhost:8800@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800joinanon-20191002_181700-153- e]]Q$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw@anon-20191002_181700-153:localhost:8800@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800inviteC e]]Q=$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4@anon-20191002_181700-152:localhost:8800@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800joinanon-20191002_181700-152C e]]Q=$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0@anon-20191002_181700-151:localhost:8800@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800joinanon-20191002_181700-151- e]]Q$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0@anon-20191002_181700-151:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800invite, e]]Q$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800leaveC e]]Q=$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok@anon-20191002_181700-150:localhost:8800@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800joinanon-20191002_181700-150E e]]Q=$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0@anon-20191002_181700-150:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800inviteanon-20191002_181700-150C e]]Q=$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800joinanon-20191002_181700-149C e]]Q=$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg@anon-20191002_181700-147:localhost:8829@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800joinanon-20191002_181700-147- e]]Q$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs@anon-20191002_181700-147:localhost:8829@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800inviteC e]]Q=$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI@anon-20191002_181700-148:localhost:8829@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800joinanon-20191002_181700-148E e]]Q=$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30@anon-20191002_181700-148:localhost:8829@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800inviteanon-20191002_181700-148C e]]Q=$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk@anon-20191002_181700-146:localhost:8800@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800joinanon-20191002_181700-146C e]]Q=$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM@anon-20191002_181700-144:localhost:8800@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800joinanon-20191002_181700-144E e]]Q=$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI@anon-20191002_181700-144:localhost:8800@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800inviteanon-20191002_181700-144C e]]Q=$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo@anon-20191002_181700-143:localhost:8800@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800joinanon-20191002_181700-143  veQ_$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 631}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo"], "type": "m.room.history_visibility", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040828160, "hashes": {"sha256": "MSjXa0lOinZNvPLYeXgYCqANnIyoX/VkSddlD9dOEvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n2inq5mBxu+Gh+8F+VcITjGBKRad9MlMHpw2FoutWMriGMjSYJ1bfbBRy82eQZw4xnkGSs5nyTEuLy8JhH/WBQ"}}, "unsigned": {"age_ts": 1570040828160}}sueQ_u$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 630}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98"], "type": "m.room.join_rules", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040826760, "hashes": {"sha256": "Pv5cVfy+0OvhVOHiskKloFnBiiIcMGMhlZC06d2Vieg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dhdAvftzrzMrxKKX+Se3Kt7uawzmYu8+ZqgC9gvUaPWdWJQH6YGR0f8cjOexBkQ6aWc+SN1rYPY9meYd5+y6BA"}}, "unsigned": {"age_ts": 1570040826760}}teQ_9$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 629}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8"], "type": "m.room.canonical_alias", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"alias": "#test-20191002_181700-25:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040825752, "hashes": {"sha256": "zIRmRBmzHtChRMAxg9wtTdbMGYhSKNW/7PezQEB1ENk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Eb0XVjUbLTRlrNRlyHuKnVn4zPe6mS8jIvz8ix4EIrBoYBMqFum8dM+JgO7Ful8yB//thviTcsYqxgZcf/xqCA"}}, "unsigned": {"age_ts": 1570040825752}}jseQ_c$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 628}{"auth_events": ["$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "type": "m.room.power_levels", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"users": {"@anon-20191002_181700-143:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040824845, "hashes": {"sha256": "j8iNys1eB9k17LDgZ3Q1US4pgeVl1Y0imVKp59Qvjcc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "udLHQpj9/bezAbKgUY/fMG1J1FJaMN7d2SSSbtu0bd90hRJbcy7w9eDdUZQP2copxe2MlT8AXebNSUotz+O6CA"}}, "unsigned": {"age_ts": 1570040824845}}  4 h 9md]c@anon-20191002_181700-177:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAo127.0.0.1d]c@anon-20191002_181700-176:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgo127.0.0.1d]c@anon-20191002_181700-175:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgo127.0.0.1d]c@anon-20191002_181700-174:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywo127.0.0.1d]c@anon-20191002_181700-173:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAo127.0.0.1d]c@anon-20191002_181700-170:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwo127.0.0.1a[a@anon-20191002_181700-16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3Cg127.0.0.1d]c@anon-20191002_181700-169:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAo127.0.0.1d]c@anon-20191002_181700-168:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9wo127.0.0.1d]c@anon-20191002_181700-167:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwo127.0.0.1d]c@anon-20191002_181700-165:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgo127.0.0.1 D  Z r 7cۂc]c@anon-20191002_181700-101:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6wo127.0.0.1Sc]c@anon-20191002_181700-110:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAo127.0.0.1\9d]c@anon-20191002_181700-178:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAo127.0.0.1̂d]c@anon-20191002_181700-164:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgo127.0.0.1c]c@anon-20191002_181700-150:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwo127.0.0.1|c]c@anon-20191002_181700-134:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58wo127.0.0.1qǂc]c@anon-20191002_181700-127:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgo127.0.0.1lc]c@anon-20191002_181700-121:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQo127.0.0.1gc]c@anon-20191002_181700-117:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwo127.0.0.1b|M1a@33:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQXp2VTpsckdjK0Z3ajVDQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEj340icC11gde7sJcw2G9z4f2FFkEZhOxA16sQRUUD7Cg127.0.0.1{M1a@22:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQV5hazNoM0tPNWZxa1NrSQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBZOXTG7MCWWYCqevi_fF2y634we-GSf2Z3Q7ZUVMWmaCg127.0.0.1 f  XF ,rj߂d]c@anon-20191002_181700-276:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwo127.0.0.1d]c@anon-20191002_181700-265:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHU6ck1wSz1tVWVTMkVtVzgKMDAyZnNpZ25hdHVyZSDrXYqnfYXyORP9VnmM0xCb799bIeWZ0dEYe7F9SxtHtgo127.0.0.1 md]c@anon-20191002_181700-221:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQo127.0.0.1d]c@anon-20191002_181700-210:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdzZSZ6VnRTO3ZNYmYrTG4KMDAyZnNpZ25hdHVyZSAw_sTACB0grGYIQZBZO4mmUJGT8kaw30JozrC7XeOYYwo127.0.0.1(d]c@anon-20191002_181700-243:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_Qo127.0.0.1&d]c@anon-20191002_181700-200:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDF4dzt5NVhUQzR2aXp0JisKMDAyZnNpZ25hdHVyZSD9QSywnh8104wl3lN9t2uWjOUpqEtvPgW6Z2v56L6tXQo127.0.0.1[d]c@anon-20191002_181700-253:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8go127.0.0.1d]c@anon-20191002_181700-232:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAo127.0.0.1 d]c@anon-20191002_181700-297:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAo127.0.0.1(#d]c@anon-20191002_181700-286:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMuU1k6WlRjNHMzOW4zWC4KMDAyZnNpZ25hdHVyZSCm1CYMbpJeBEIlSqvHQLlTmNccB_w09A-mofLOOCns2wo127.0.0.1 +H . Y b  BEG-< HeQ']$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800aGeQ' $-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800m.room.create FeQ']$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800 EeQ']$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800 DeQ']$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800nCeQ?$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5 BeQ']$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800 AeQ']$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800m@eQ? $9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibilitye?eQ/ $C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rulesg>eQ3 $cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels =eQ']$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800a<eQ' $HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create ;eQ']$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829 :eQ']$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829n9eQ?$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4 8eQ']$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829 7eQ']$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829p6eQ))$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800m5eQ? $nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibilitye4eQ/ $p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rulesj3eQ9 $qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_aliasg2eQ3 $GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels 1eQ']$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800a0eQ' $KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.createn/eQ?$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3 .eQ']$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800 -eQ']$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800p,eQ))$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800m+eQ? $Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibilitye*eQ/ $gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rulesj)eQ9 $NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_alias ah`8pH @ p H x ` 8  xP(  x P (  @ X0h`8X0P(pH X 0  h @'Q!bOSxzttDtclnrWnLov:localhost:8800['Q!bOSxzttDtclnrWnLov:localhost:8800Z'Q!bOSxzttDtclnrWnLov:localhost:8800Y'Q!bOSxzttDtclnrWnLov:localhost:8800X'Q!bOSxzttDtclnrWnLov:localhost:8800W'Q!bOSxzttDtclnrWnLov:localhost:8800V'Q!bOSxzttDtclnrWnLov:localhost:8800U'Q!bOSxzttDtclnrWnLov:localhost:8800T'Q!bzPCFeFSMbCESvNbxl:localhost:8800-'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bzPCFeFSMbCESvNbxl:localhost:8800.'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800\'Q!beBXQofoOfxNBtzsut:localhost:8800Z'Q!beBXQofoOfxNBtzsut:localhost:8800X'Q!beBXQofoOfxNBtzsut:localhost:8800V'Q!beBXQofoOfxNBtzsut:localhost:8800T'Q!beBXQofoOfxNBtzsut:localhost:8800R'Q!beBXQofoOfxNBtzsut:localhost:8800O'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 ~'Q!bQDOrbAknnQZfUbhgS:localhost:8800 }'Q!bQDOrbAknnQZfUbhgS:localhost:8800 |'Q!bQDOrbAknnQZfUbhgS:localhost:8800 {'Q!bnTuVBaAJTPbcYZtRl:localhost:88008'Q!bnTuVBaAJTPbcYZtRl:localhost:88007'Q!bnTuVBaAJTPbcYZtRl:localhost:88006'Q!bnTuVBaAJTPbcYZtRl:localhost:88005'Q!bnTuVBaAJTPbcYZtRl:localhost:88004'Q!bnTuVBaAJTPbcYZtRl:localhost:88003'Q!bnTuVBaAJTPbcYZtRl:localhost:88002'Q!bnTuVBaAJTPbcYZtRl:localhost:88001'Q!bnTuVBaAJTPbcYZtRl:localhost:88000'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800N'Q!biBIcqnGelHvLnpkOu:localhost:8800M'Q!biBIcqnGelHvLnpkOu:localhost:8800L'Q!biBIcqnGelHvLnpkOu:localhost:8800K'Q!biBIcqnGelHvLnpkOu:localhost:8800J'Q!biBIcqnGelHvLnpkOu:localhost:8800I'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bOSxzttDtclnrWnLov:localhost:8800\  W `  / o#,TQ!edGQ' e!JusxqeECtidaPlWqhp:localhost:8800m.room.create$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk8FQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0 EQ']e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV08DQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsqCQ?e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo8BQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0 AQ']e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0p@Q? e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibility$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIh?Q/ e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rules$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4j>Q3 e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c =Q']e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsd<Q' e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M48;Q']ee!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs :Q']e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsq9Q?e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo88Q']ee!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30 7Q']e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30s6Q))e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Egp5Q? e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibility$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kh4Q/ e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rules$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQm3Q9 e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_alias$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoj2Q3 e~!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE 1Q']e}!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkd0Q' e|!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.create$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEq/Q?e{!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI8.Q']eez!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI -Q']ey!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIs,Q))ex!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMp+Q? ew!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibility$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U  ]yeQ_=$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 170, "stream_ordering": 634}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo"], "prev_events": ["$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI"], "type": "m.room.member", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-144:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-144", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-144:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040831770, "hashes": {"sha256": "qiMtEED/aK6dCt8mrrycUwSDrI/uD/JAXDVyXGSbEqs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LoisPpSNPBH8tLYHXJKYrVqRkHimREtcGVEl6encThAovueFV7v4t/wc889zC1goWXktWC7WFSDcT+6kfMMXAQ"}}, "unsigned": {"age_ts": 1570040831770, "replaces_state": "$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI"}}@xeQ_$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 633}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM"], "type": "m.room.member", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-144", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-144:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040831127, "hashes": {"sha256": "BV3e3JiXROAC+BpixXhsT1gyCKxZJVMThgXtKQ7j3wk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4S1rTdkdSrYp/BpEr8NtqMtnvZF3+HXKKfR67+357UhAZOC8UduDgoLx0S6hMUZbjPFOKuABoWcLcB6qLIFODA"}}, "unsigned": {"age_ts": 1570040831127, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-25:localhost:8800"}, "sender": "@anon-20191002_181700-143:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-143:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-143:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-143", "avatar_url": null}, "sender": "@anon-20191002_181700-143:localhost:8800"}]}}weQ_M$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 632}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U"], "type": "m.room.aliases", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"aliases": ["#test-20191002_181700-25:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040830001, "hashes": {"sha256": "uAsovKaszLdmJ6g1GFPS5Mffo+VhIL+EpSdp5j91gw8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Il+LMh8Z2KMQ7a2CQNWH/TgxhV2V4W1C5LJg3RZQsTs3h6yAxHVd6lAPtJk4pvcum2Merly9i0LZ5JFIegJ7DA"}}, "unsigned": {"age_ts": 1570040830001}} -RM H C > 9 4/*|%w rmhc T'Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDET&Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAT%Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MT$Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILET#Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwT"Qe!quaZwrGnzbNWhwAOYB:localhost:8800$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYT!Qe!quaZwrGnzbNWhwAOYB:localhost:8800$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioT Qe!quaZwrGnzbNWhwAOYB:localhost:8800$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYTQe!quaZwrGnzbNWhwAOYB:localhost:8800$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fATQe!quaZwrGnzbNWhwAOYB:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4TQe!quaZwrGnzbNWhwAOYB:localhost:8800$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4TQe!JusxqeECtidaPlWqhp:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRITQe!JusxqeECtidaPlWqhp:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwTQe!JusxqeECtidaPlWqhp:localhost:8800$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4TQe!JusxqeECtidaPlWqhp:localhost:8800$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48TQe!JusxqeECtidaPlWqhp:localhost:8800$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsTQe!JusxqeECtidaPlWqhp:localhost:8800$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BATQe!JusxqeECtidaPlWqhp:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4TQe!JusxqeECtidaPlWqhp:localhost:8800$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkTQe!aWvVRVaDflYyyGTOdD:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0TQe!aWvVRVaDflYyyGTOdD:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0TQe!aWvVRVaDflYyyGTOdD:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8TQe!aWvVRVaDflYyyGTOdD:localhost:8800$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoTQe!aWvVRVaDflYyyGTOdD:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokTQe!aWvVRVaDflYyyGTOdD:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0TQe!aWvVRVaDflYyyGTOdD:localhost:8800$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIT Qe!aWvVRVaDflYyyGTOdD:localhost:8800$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4T Qe!aWvVRVaDflYyyGTOdD:localhost:8800$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cT Qe!aWvVRVaDflYyyGTOdD:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsT Qe!aWvVRVaDflYyyGTOdD:localhost:8800$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4T Qe!GiSxJsKZhQVHBkrVPn:localhost:8800$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvoTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nITQe!GiSxJsKZhQVHBkrVPn:localhost:8800$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30TQe!GiSxJsKZhQVHBkrVPn:localhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoTQe~!GiSxJsKZhQVHBkrVPn:localhost:8800$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyETQe}!GiSxJsKZhQVHBkrVPn:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkT~Qe|!GiSxJsKZhQVHBkrVPn:localhost:8800$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWET}Qe{!AjjrNwXmPTCruHxaJq:localhost:8800$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIT|Qez!AjjrNwXmPTCruHxaJq:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMT{Qey!AjjrNwXmPTCruHxaJq:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI Mj8Vp>  v D  | J  Q  W % \ ]1 +c$i7*o= uC{IO1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmct1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0H1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kD1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE h0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkq1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagK1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk\1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM D1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 91e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc"1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs/1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY ]1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oq1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA $1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cl1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico E1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o =1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM 1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU #1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM|1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ\1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ[1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o )0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo\1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIe1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts}1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__co1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIg1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEV1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek71e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA 4 4u|eQ_y$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 637}{"auth_events": ["$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE"], "prev_events": ["$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE"], "type": "m.room.member", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-146", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-146:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040836158, "hashes": {"sha256": "vaSDzlnHNfcajlCEnIbni581vqyPERrpdUisVNxPXrQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KjJjhwCEcLU7abC2YhE9MbWUHneGvwGdWRyq+A9K7nRHGExFx/JgcBHRDjicguSFzEEV/wS7OKPS7LIW583wCA"}}, "unsigned": {"age_ts": 1570040836158}}h{eQ__$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 636}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-146:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040834669, "hashes": {"sha256": "8mEMl+C4dyloMkLfJYIetnQqmBaJ+KSlCyZ52n5GRT0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yLQby7x6oFWzj6h3IrhX5xvzrL8QaUFaIkyKt6iXwStcoI9P/b3uFfGJdhKQd/B0QwyxwsIPgid7N4kOgt15DA"}}, "unsigned": {"age_ts": 1570040834669}}czeQ_U$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 170, "stream_ordering": 635}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM"], "prev_events": ["$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM"], "type": "m.room.third_party_invite", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-144:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"public_key": "Sq3IS691msKOCPbzR73uOTHr7gSMb0UkA86rZdMClh8", "key_validity_url": "https://localhost.localdomain:41229/_matrix/identity/v2/pubkey/isvalid"}, {"public_key": "u6J8ItLWcMNCuYzFutG7NBDDiH3UZ1Ug8zHsC5zaYsI", "key_validity_url": "https://localhost.localdomain:41229/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:41229/_matrix/identity/v2/pubkey/isvalid", "public_key": "Sq3IS691msKOCPbzR73uOTHr7gSMb0UkA86rZdMClh8"}, "depth": 10, "prev_state": [], "state_key": "3", "origin": "localhost:8800", "origin_server_ts": 1570040832938, "hashes": {"sha256": "l+9U+8B6OtRxtJ7xa/DaQm7d201GH5Qk1NG6e1O/EXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YnOwFfaMaerdtQf/oH3OIvctFd4kNSVsh3hH4cpoG2IThHekocDpNppG+BiIF35494ev/Bej1+uhjBkn9oU3Cw"}}, "unsigned": {"age_ts": 1570040832938}} Ek9Qq? w E  } K  Q Y ' _ -e3k9q? wE}K]+k9 1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegoP1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYW1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEz1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U Y1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE I1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo}1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek51e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT41e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgC1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQQ1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0t1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo `1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw K1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U41e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 A1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw;1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 M1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV011e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU+0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wQ1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 '1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0@0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 N1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM[1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uv1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A[1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAm1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDkl0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRog1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 11e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ Mj8Vp>  v D  | J  Q  W % \ ]1 +c$i7*o= uC{IO1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcn1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0B1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k>1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE f0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkq1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagK1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk\1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM D1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 91e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc"1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs/1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY ]1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oq1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA $1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cl1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico E1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o =1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM 1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU #1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM|1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ\1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ[1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o )0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo\1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIe1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts}1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__co1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIg1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEV1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek71e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA -RM H C > 9 4/*|%w rmhc TzQez!OqPpVlCwmKdAUlwrXI:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILETyQey!OqPpVlCwmKdAUlwrXI:localhost:8800$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwTxQex!quaZwrGnzbNWhwAOYB:localhost:8800$a8pTE_6G9aGtNSW3C2nfpR5LTln7R7aa_15BOphsdPQTwQew!quaZwrGnzbNWhwAOYB:localhost:8800$OzrFWbF1BEYcT3aNcFRgRp0SXgwFdQoALxdzUQgTftUTvQev!quaZwrGnzbNWhwAOYB:localhost:8800$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYTuQeu!quaZwrGnzbNWhwAOYB:localhost:8800$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioTtQet!quaZwrGnzbNWhwAOYB:localhost:8800$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYTsQes!quaZwrGnzbNWhwAOYB:localhost:8800$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fATrQer!quaZwrGnzbNWhwAOYB:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4TqQeq!quaZwrGnzbNWhwAOYB:localhost:8800$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4TpQep!JusxqeECtidaPlWqhp:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIToQeo!JusxqeECtidaPlWqhp:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwTnQen!JusxqeECtidaPlWqhp:localhost:8800$0sFOiBFAgoj-vcKac45A6hPXKYvf03jJ6U-_hxApZNcTmQem!JusxqeECtidaPlWqhp:localhost:8800$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4TlQel!JusxqeECtidaPlWqhp:localhost:8800$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48TkQek!JusxqeECtidaPlWqhp:localhost:8800$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsTjQej!JusxqeECtidaPlWqhp:localhost:8800$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BATiQei!JusxqeECtidaPlWqhp:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4ThQeh!JusxqeECtidaPlWqhp:localhost:8800$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkTgQeg!aWvVRVaDflYyyGTOdD:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0TfQef!aWvVRVaDflYyyGTOdD:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0TeQee!aWvVRVaDflYyyGTOdD:localhost:8800$4HnS4R-03r-eGZ0oqE12X466wChAuA4-BygiL9ZOH_ITdQed!aWvVRVaDflYyyGTOdD:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8TcQec!aWvVRVaDflYyyGTOdD:localhost:8800$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoTbQeb!aWvVRVaDflYyyGTOdD:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokTaQea!aWvVRVaDflYyyGTOdD:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0T`Qe`!aWvVRVaDflYyyGTOdD:localhost:8800$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIT_Qe_!aWvVRVaDflYyyGTOdD:localhost:8800$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4T^Qe^!aWvVRVaDflYyyGTOdD:localhost:8800$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cT]Qe]!aWvVRVaDflYyyGTOdD:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsT\Qe\!aWvVRVaDflYyyGTOdD:localhost:8800$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4T[Qe[!GiSxJsKZhQVHBkrVPn:localhost:8800$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgTZQeZ!GiSxJsKZhQVHBkrVPn:localhost:8800$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsTYQeY!GiSxJsKZhQVHBkrVPn:localhost:8800$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvoTXQeX!GiSxJsKZhQVHBkrVPn:localhost:8800$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nITWQeW!GiSxJsKZhQVHBkrVPn:localhost:8800$yRMhVLnxeFdjrJfX5LJoNXmsoJ9RaoL8DBiSqs6ExmkTVQeV!GiSxJsKZhQVHBkrVPn:localhost:8800$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30TUQeU!GiSxJsKZhQVHBkrVPn:localhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgTTQeT!GiSxJsKZhQVHBkrVPn:localhost:8800$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kTSQeS!GiSxJsKZhQVHBkrVPn:localhost:8800$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQTRQeR!GiSxJsKZhQVHBkrVPn:localhost:8800$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoTQQeQ!GiSxJsKZhQVHBkrVPn:localhost:8800$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyETPQeP!GiSxJsKZhQVHBkrVPn:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkTOQeO!GiSxJsKZhQVHBkrVPn:localhost:8800$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWETNQeN!AjjrNwXmPTCruHxaJq:localhost:8800$zx789KIhAnVMgxg_3YnlXjechhEygoKwTRi6B-h53pM #Y+Y  ; i  +?Rdv#5GYu#[Q]#test-20191002_181700-25:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-143:localhost:8800u"[Q]#test-20191002_181700-24:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-140:localhost:8800u![Q]#test-20191002_181700-23:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800@anon-20191002_181700-138:localhost:8800u [Q]#test-20191002_181700-22:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-136:localhost:8800u[Q]#test-20191002_181700-21:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-131:localhost:8800u[Q]#test-20191002_181700-20:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-129:localhost:8800u[Q]#test-20191002_181700-19:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-127:localhost:8800u[Q]#test-20191002_181700-18:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-125:localhost:8800u[Q]#test-20191002_181700-17:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800@anon-20191002_181700-120:localhost:8800u[Q]#test-20191002_181700-16:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-118:localhost:8800u[Q]#test-20191002_181700-15:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-116:localhost:8800u[Q]#test-20191002_181700-14:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-13:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-12:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-11:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-10:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-112:localhost:8800tYQ]#test-20191002_181700-9:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-112:localhost:8800tYQ]#test-20191002_181700-8:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-112:localhost:8800tYQ]#test-20191002_181700-7:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800@anon-20191002_181700-109:localhost:8800tYQ]#test-20191002_181700-6:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-109:localhost:8800sYQ[#test-20191002_181700-5:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-84:localhost:8800sYQ[#test-20191002_181700-4:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-82:localhost:8800g AQ[#__ANON__-9:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:8800s YQ[#test-20191002_181700-3:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:8800g AQ[#__ANON__-8:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:8800g AQ[#__ANON__-5:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800@anon-20191002_181700-79:localhost:8800` 3Q[#☕:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:8800sYQ[#test-20191002_181700-2:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800@anon-20191002_181700-75:localhost:8800sYQ[#test-20191002_181700-1:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-70:localhost:8800gAQ[#__ANON__-4:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800@anon-20191002_181700-68:localhost:8800gAQ[#__ANON__-3:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800@anon-20191002_181700-67:localhost:8800gAQ[#__ANON__-2:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-23:localhost:8800gAQ[#__ANON__-1:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800@anon-20191002_181700-21:localhost:8800gAQ[#__ANON__-0:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800@anon-20191002_181700-20:localhost:8800jGQ[#30room-create:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800@anon-20191002_181700-16:localhost:8800 #Z/ W z   ' 9K]{"@Gq0ZiFCQ]#__ANON__-21:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-491:localhost:8800iECQ]#__ANON__-20:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800@anon-20191002_181700-480:localhost:8800iDCQ]#__ANON__-19:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-476:localhost:8800iCCQ]#__ANON__-18:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800@anon-20191002_181700-465:localhost:8800iBCQ]#__ANON__-17:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-461:localhost:8800iACQ]#__ANON__-16:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800@anon-20191002_181700-450:localhost:8800i@CQ]#__ANON__-15:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-446:localhost:8800x?aQ]#publicroomalias_with_topic:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800@anon-20191002_181700-311:localhost:8800}>kQ]#publicroomalias_with_name_topic:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800@anon-20191002_181700-311:localhost:8800u=[Q]#publicroomalias_no_name:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800@anon-20191002_181700-311:localhost:8800i<CQ]#__ANON__-14:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:8800i;CQ]#__ANON__-13:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:8800u:[Q]#test-20191002_181700-42:localhost:8800!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-292:localhost:8800u9[Q]#test-20191002_181700-41:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-290:localhost:8800u8[Q]#test-20191002_181700-40:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-288:localhost:8800i7CQ]#__ANON__-12:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800@anon-20191002_181700-254:localhost:8800u6[Q]#test-20191002_181700-39:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800@anon-20191002_181700-237:localhost:8800u5[Q]#test-20191002_181700-38:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800@anon-20191002_181700-236:localhost:8800u4[Q]#test-20191002_181700-37:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800@anon-20191002_181700-231:localhost:8800u3[Q]#test-20191002_181700-36:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800@anon-20191002_181700-228:localhost:8800u2[Q]#test-20191002_181700-35:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800@anon-20191002_181700-201:localhost:8800u1[Q]#test-20191002_181700-34:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800@anon-20191002_181700-200:localhost:8800u0[Q]#test-20191002_181700-33:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800@anon-20191002_181700-197:localhost:8800u/[Q]#test-20191002_181700-32:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800@anon-20191002_181700-195:localhost:8800u.[Q]#test-20191002_181700-31:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-178:localhost:8800u-[Q]#test-20191002_181700-30:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-176:localhost:8800u,[Q]#test-20191002_181700-29:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800@anon-20191002_181700-176:localhost:8800k+GQ]#worldreadable:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800@anon-20191002_181700-170:localhost:8800n*MQ]#nonworldreadable:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800@anon-20191002_181700-170:localhost:8800j)EQ]#listingtest0:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800@anon-20191002_181700-169:localhost:8800j(EQ]#listingtest2:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800@anon-20191002_181700-169:localhost:8800j'EQ]#listingtest1:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800@anon-20191002_181700-169:localhost:8800u&[Q]#test-20191002_181700-28:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800@anon-20191002_181700-165:localhost:8800u%[Q]#test-20191002_181700-27:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800@anon-20191002_181700-162:localhost:8800u$[Q]#test-20191002_181700-26:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800@anon-20191002_181700-146:localhost:8800 ?m G !g?]c!E@anon-20191002_181700-158:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswoXSKFBBFHAV127.0.0.1Perl + Net::Async::HTTP/0.44mǃ]c!E@anon-20191002_181700-156:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAoKJWWDXWUBD127.0.0.1Perl + Net::Async::HTTP/0.44mÃ]c!E@anon-20191002_181700-154:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0AoZNFFHUUXFG127.0.0.1Perl + Net::Async::HTTP/0.44mqh]c!E@anon-20191002_181700-153:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48CwoRAWLINNCFA127.0.0.1Perl + Net::Async::HTTP/0.44m`y~]c!E@anon-20191002_181700-152:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgoGXUCZNSPYG127.0.0.1Perl + Net::Async::HTTP/0.44mKN}]c!E@anon-20191002_181700-151:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwoOZBCDWREHR127.0.0.1Perl + Net::Async::HTTP/0.44m=|]c!E@anon-20191002_181700-150:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwoRWWSTPGDUM127.0.0.1Perl + Net::Async::HTTP/0.44m/{]c!E@anon-20191002_181700-149:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20AoAGJMWNVTGM127.0.0.1Perl + Net::Async::HTTP/0.44mfz]c!E@anon-20191002_181700-146:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwoFNNRVHNVLI127.0.0.1Perl + Net::Async::HTTP/0.44m^y]c!E@anon-20191002_181700-144:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQoKPCPVEDJYH127.0.0.1Perl + Net::Async::HTTP/0.44m wRa4T'sG"j= Q % q D OoBzM l? _ 2  ~]0|K U (  csG",Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XNfwczePlyYFWLCaui:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800  ,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800+Q !XMNRkfscQXRjgYrOSd:localhost:8800,Q!XIqmzIFbkHGQPIpywk:localhost:8800 \\,Q!XIqmzIFbkHGQPIpywk:localhost:8800 [[,Q!XIqmzIFbkHGQPIpywk:localhost:8800ZZ,Q!XIqmzIFbkHGQPIpywk:localhost:8800YY,Q!XIqmzIFbkHGQPIpywk:localhost:8800XX,Q!XIqmzIFbkHGQPIpywk:localhost:8800WW,Q!XIqmzIFbkHGQPIpywk:localhost:8800VV,Q!XIqmzIFbkHGQPIpywk:localhost:8800UU,Q!XIqmzIFbkHGQPIpywk:localhost:8800TT,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800+Q !XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q q,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p p,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o o,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n n,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m m,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l l,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k k,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j j,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i i+Q !XnUZiYJDWVNGfsBnGz:localhost:8800 h h,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y Y,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X X+Q !YGUjVdVdpcQoGkRnWB:localhost:8800 W W ++Q !YQATbgbLImCDamiDHC:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] ],Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ \,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ [,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z Z,Q!XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 +Q !XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!XNfwczePlyYFWLCaui:localhost:8800  ,Q!XiwGxQKwjgutEClKUy:localhost:8829%%,Q!XiwGxQKwjgutEClKUy:localhost:8829$$,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829!!,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829+Q !XiwGxQKwjgutEClKUy:localhost:8829,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800+Q !XgobMgBjNcDRJnRXLD:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800 wRa4T'sG"j= Q % q D OoBzM l? _ 2  ~]0|K U (  csG",Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XNfwczePlyYFWLCaui:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800  ,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800+Q !XMNRkfscQXRjgYrOSd:localhost:8800,Q!XIqmzIFbkHGQPIpywk:localhost:8800 \\,Q!XIqmzIFbkHGQPIpywk:localhost:8800 [[,Q!XIqmzIFbkHGQPIpywk:localhost:8800ZZ,Q!XIqmzIFbkHGQPIpywk:localhost:8800YY,Q!XIqmzIFbkHGQPIpywk:localhost:8800XX,Q!XIqmzIFbkHGQPIpywk:localhost:8800WW,Q!XIqmzIFbkHGQPIpywk:localhost:8800VV,Q!XIqmzIFbkHGQPIpywk:localhost:8800UU,Q!XIqmzIFbkHGQPIpywk:localhost:8800TT,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800+Q !XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q q,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p p,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o o,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n n,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m m,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l l,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k k,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j j,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i i+Q !XnUZiYJDWVNGfsBnGz:localhost:8800 h h,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y Y,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X X+Q !YGUjVdVdpcQoGkRnWB:localhost:8800 W W ++Q !YQATbgbLImCDamiDHC:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] ],Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ \,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ [,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z Z,Q!XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 +Q !XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!XNfwczePlyYFWLCaui:localhost:8800  ,Q!XiwGxQKwjgutEClKUy:localhost:8829%%,Q!XiwGxQKwjgutEClKUy:localhost:8829$$,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829!!,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829+Q !XiwGxQKwjgutEClKUy:localhost:8829,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800+Q !XgobMgBjNcDRJnRXLD:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800  eQ_$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 641}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ"], "type": "m.room.history_visibility", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040838569, "hashes": {"sha256": "5k7FQ+GMGZzAf5e0OwqRF3HfY7XvmIvMKW6bLf1xWN0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T9aahSDVLEWvEix8T3VNRVjHYBuJw4kmZH+Y6FPQ2yNLot8exbsORyto8w/j7HGEwidaopaVyaHGfVVm8p8kBw"}}, "unsigned": {"age_ts": 1570040838569}}seQ_u$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 640}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo"], "type": "m.room.join_rules", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040838010, "hashes": {"sha256": "Az1samYyH1dlZXKv+ocqdVjiQ8J7Te8uKiIQgQSz4Yk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9lofXn+SunPiODMPrRwzkD5dLKSVz6J1z7Eq4hir5MlS0cs8c6DZDZo6gdY6fiWD52mj4WT+3YYX3mXaQmklAg"}}, "unsigned": {"age_ts": 1570040838010}}~eQ_9$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 639}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE"], "type": "m.room.canonical_alias", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"alias": "#test-20191002_181700-26:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040837403, "hashes": {"sha256": "C0FQj9BTJJtL7mS8gQWV3iOeK0l55V5ftkmD5dP3sv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YG4LWIcC7aIqWw1IklzaCxHV6XAvr9JSwNLe0WjU4Mt58PvhOQtlHzW0STOGsxMjQVivQh3AARwCx7EmvJffDQ"}}, "unsigned": {"age_ts": 1570040837403}}j}eQ_c$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 638}{"auth_events": ["$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "type": "m.room.power_levels", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"users": {"@anon-20191002_181700-146:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040836762, "hashes": {"sha256": "NKWVJRk/1gTcte1Q7HSr+ve0CxsYgtlzki/lMNMzQzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QWb/oouiyKRROgvKu4ac7qxYgz40pM1pYWTpE1DOYKdlYYB3bGP0ZnfOVBBjWAiGiDtv8mgL5JM5pQHCijXOAA"}}, "unsigned": {"age_ts": 1570040836762}} a} { y w u sqomkigeca~eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~~eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~}eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~|eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~{eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~zeeQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800 T=P  o p 6 S  4 R  7 n5Q m4 QPmm5U T  o8e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcsha256n8e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54sha256 8e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIsha256 8e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8osha256 )8e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAsha256 8e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKAsha256 $8e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUsha256 #8e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8sha256 8e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMsha256 D8e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYsha256 ]8e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKciosha256 8e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98sha2568e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEsha256 98e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIsha256 8e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQsha256 j8e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4csha2567e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUsha2567e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjksha256q8e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagsha256K8e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYsha2568e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWksha256\8e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMsha2568e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0ssha2568e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJcsha256"8e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGssha256/8e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0sha2568e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04Msha2568e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Isha2568e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAsha2568e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYsha2568e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMsha2568e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQsha2568e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPwsha2568e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQsha2568e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9osha256q8e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0csha256l8e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kAsha2568e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcsha2568e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGAsha2568e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwksha2568e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgsha256 8e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAsha2568e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMsha256 8e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0Msha256 8e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQsha256\8e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4sha2568e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIsha2568e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQsha256[8e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0sha256B8e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48ksha256>8e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4sha2568e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwsha2568e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYsha256 8e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUsha256 8e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMsha256|8e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0sha256 8e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5osha256 =8e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVosha2568e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUsha256 *8e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70sha256U8e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPEsha256 K  lheQ__$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 659}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-152:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040859632, "hashes": {"sha256": "fvNnFFMGGiFdf1muBPL/nZry9DCj/PT+SnTlT6QfL3I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sIqJsuPJFpfAT+aghQRGwPNj09qMvfVyhIf8bqFDNqHeEpHCO9U4TSJKMZL/FrgEj/nEK9U3QIrqbjEmMVkTBA"}}, "unsigned": {"age_ts": 1570040859632}}eQ_?$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 175, "stream_ordering": 658}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4"], "prev_events": ["$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-151:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-151", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-151:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040856221, "hashes": {"sha256": "1x1mrGam5arlj8JQk+7had+MxNE+7yUcRXeO6S9hiSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KHGi4iXUKtloCKcZSmKH/t9FzJuJQ8wI3XpPaq4A9xI7d+4Vo373thct7m+XjqXqrdh9cWYTzoSvcDhcO15YAQ"}}, "unsigned": {"age_ts": 1570040856221, "replaces_state": "$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0"}}teQ I$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 657}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4", "$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8", "$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo"], "prev_events": ["$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"signatures": {"localhost.localdomain:46319": {"ed25519:0": "oSZLF+KC1Ipti4MX/8cJ09bHIqZowl+3uOoAAPejKNwBf3//VgtzGw8nyLRVSOKhvk9ZWF4wLl5bKNze+p0RAw"}}, "token": "5", "mxid": "@anon-20191002_181700-151:localhost:8800"}, "display_name": "Bob"}}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-151:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040855231, "hashes": {"sha256": "eCRVcNlbiNynmcKazOTcBuEkGl1z2CR1PnJi+0BvsX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OI3uUyRrmsY2bWUuzQMoXN/qJRQhUtgEWRiB01/YVD7LsYGeJxGruiOwtny/1wTne1gyNiBYMEd8LYWZbz86AA"}}, "unsigned": {"age_ts": 1570040855231, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-149:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "leave"}, "sender": "@anon-20191002_181700-149:localhost:8800"}]}}  ]2eQ/!$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 644}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-148", "membership": "join"}, "depth": 9, "hashes": {"sha256": "9gTmU4KpFeY4WqyGp1HI2MmrcsGg47WerHLaDlPY7K8"}, "origin": "localhost:8829", "origin_server_ts": 1570040840934, "prev_events": ["$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30"], "prev_state": [], "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-148:localhost:8829", "state_key": "@anon-20191002_181700-148:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DyJXhQFxHWEzouv/5bS+A575uvh4pIFfkE41fJEZQVYrqYMkXftOS+vK4vqx07UiVcE1/eSiUsRp5Ykvhvf7Bg"}, "localhost:8829": {"ed25519:a_UxIG": "MnEcsnuFuZVWf4EPa8AbT0bX6zv7gqpDmi0jQpmuLzzenU+OeVMrJzaxNtyi9yPe3fUrP/TLn7frRCZ3IcnTAQ"}}, "unsigned": {"age": 94, "replaces_state": "$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30"}}@eQ_$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 643}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg"], "type": "m.room.member", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-148", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-148:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040840192, "hashes": {"sha256": "dvXNFOTHOdWUZ84MOyqyzsv8GzMsHfq2/6osy1V1nyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7uyxo6ulNPec5/8dy4EHJjF3YEBvEy4fqdttMA8jvEimwlbsWIOdRx65qyzTd964auJxSOCYZ4nrz1HMEMr6BQ"}, "localhost:8829": {"ed25519:a_UxIG": "nf+qBX7AZjNJ4+l0EkT7zu2op95Ldu1Io16aDMgmHgj2nIemewZYcTBwLywaIBxiDNcVeUpES5Y30haS1x1JCA"}}, "unsigned": {"age_ts": 1570040840192, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-26:localhost:8800"}, "sender": "@anon-20191002_181700-146:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-146:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-146:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-146", "avatar_url": null}, "sender": "@anon-20191002_181700-146:localhost:8800"}]}}eQ_M$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 642}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k"], "type": "m.room.aliases", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"aliases": ["#test-20191002_181700-26:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040839527, "hashes": {"sha256": "RAmqbTPAKh7aZ3NTW+pGMqkEYSdizBm4GC3qIxo4PP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VAHD/2G14ZJUGBcDaIajMUE+6RCEl1+hDxXadS+uAIHiJX0UiouWxUQuEoAzcRKkj6mldhWVn78zZ1VDCjcQAA"}}, "unsigned": {"age_ts": 1570040839527}} M MHeQa$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800{"outlier": false, "stream_ordering": 646}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk", "$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo"], "content": {"membership": "invite", "third_party_invite": {"display_name": "Bob", "signed": {"mxid": "@anon-20191002_181700-147:localhost:8829", "signatures": {"localhost.localdomain:35601": {"ed25519:0": "EIUHuMFNpiHMV0Jl9xXFlX4qqR64oZavJ0KYlVOtB+gygUSpLgllLoyKvBabsfmJH9Dzp6U7jrMIWgE+KKHoDg"}}, "token": "4"}}}, "depth": 11, "hashes": {"sha256": "Z0ZEVsNjHQEVdgOGlpBABKjwOxRKr05OlWrf4yO9//M"}, "origin": "localhost:8829", "origin_server_ts": 1570040842281, "prev_events": ["$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo"], "prev_state": [], "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "@anon-20191002_181700-147:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "cgss7Ybb0jQcuhSW0znNI8Wwnwe6E8NW4sUrSJpRgSydXwHcTbQfMNtFc4+vBXpW7FmwsvSpQe2CqlHUY4jfCw"}}, "unsigned": {"age_ts": 1570040842281, "invite_room_state": [{"content": {"alias": "#test-20191002_181700-26:localhost:8800"}, "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "", "type": "m.room.canonical_alias"}, {"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-146", "membership": "join"}, "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "@anon-20191002_181700-146:localhost:8800", "type": "m.room.member"}]}}ceQ_U$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 645}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI"], "type": "m.room.third_party_invite", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"public_key": "4AE/+R4ppb0aU4h80h+ptaVOg2jg3KDU8zFin6FR24U", "key_validity_url": "https://localhost.localdomain:35601/_matrix/identity/v2/pubkey/isvalid"}, {"key_validity_url": "https://localhost.localdomain:35601/_matrix/identity/v2/pubkey/isvalid", "public_key": "JQhY6nQGe86+KYddThK8td5ZDllD5NUCrgaejATUDtU"}], "key_validity_url": "https://localhost.localdomain:35601/_matrix/identity/v2/pubkey/isvalid", "public_key": "4AE/+R4ppb0aU4h80h+ptaVOg2jg3KDU8zFin6FR24U"}, "depth": 10, "prev_state": [], "state_key": "4", "origin": "localhost:8800", "origin_server_ts": 1570040841953, "hashes": {"sha256": "CVYXTq4vg4eYuByb0JUUZTTVq94RYaGEdlK06KtC3OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fd05q1od+3IUls6EeYHnufVOpgCFY6yUSAe9/vTI2rapimOddlWzKW7M12jmEVE+L4NfT8XY5YTK0J763wsRDw"}}, "unsigned": {"age_ts": 1570040841953}} Np> v D  | J  P  V $ ] +c2j8p> vD|JPV$\*j81e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI 1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwM1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh3071e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMe1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Ac1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0,1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o L1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI E1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY M1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMx1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk|1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs;1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV41e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wF1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewI1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAM1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUki1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk21e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks 0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcr1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4z1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk |1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4c1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIW1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg <1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYX1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc<1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI@1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw /1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w41e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM 1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ481e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE\3$94:localhost:42455 .3$90:localhost:42455 '21e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU 31e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkD1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas=1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk9 q | 4   g r*( ?Z<c{Q' ey!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.create$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw zQ']ex!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-155:localhost:8800$a8pTE_6G9aGtNSW3C2nfpR5LTln7R7aa_15BOphsdPQ yQ']ew!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-155:localhost:8800$OzrFWbF1BEYcT3aNcFRgRp0SXgwFdQoALxdzUQgTftUpxQ?ev!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYowQ? eu!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibility$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iogvQ/ et!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rules$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYiuQ3 es!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA tQ']er!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4csQ' eq!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4 rQ']ep!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI qQ']eo!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw pQ']en!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$0sFOiBFAgoj-vcKac45A6hPXKYvf03jJ6U-_hxApZNcpoQ?em!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4onQ? el!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibility$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48gmQ/ ek!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rules$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsilQ3 ej!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA kQ']ei!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4cjQ' eh!JusxqeECtidaPlWqhp:localhost:8800m.room.create$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk iQ']eg!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0 hQ']ef!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0 gQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$4HnS4R-03r-eGZ0oqE12X466wChAuA4-BygiL9ZOH_I fQ']ed!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8peQ?ec!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo dQ']eb!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok cQ']ea!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0obQ? e`!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibility$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIgaQ/ e_!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rules$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4i`Q3 e^!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c _Q']e]!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsc^Q' e\!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4 ]Q']e[!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg  ~j eQ_c$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 650}{"auth_events": ["$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "type": "m.room.power_levels", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"users": {"@anon-20191002_181700-149:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040849688, "hashes": {"sha256": "DLuboBNY4XHBPIFzcJ8HvIYTkoKKMEzmuaiR+RewtRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "72oxm26rbJpgTqe6p+X2NM/rjkylj74YxtxBePgDi9nCQ4U0j7Xw1x3CAWZCxfs1pPuEvBQO1P7VT1cJbtQqDA"}}, "unsigned": {"age_ts": 1570040849688}}ueQ_y$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 649}{"auth_events": ["$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4"], "prev_events": ["$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-149", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-149:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040849099, "hashes": {"sha256": "l1lvIuPXzZQv6pO+LSalhh3nVDCcL+FgTVuQjvpaOQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZmckrCIB6rjJhm4049D2U8IaNw+F+FHp+9HBhbSYrG8kNkqxO5WnwT/shv+3X6zYOWjcW2crnA8uZIyMgJ0BAg"}}, "unsigned": {"age_ts": 1570040849099}}heQ__$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 648}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-149:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040848056, "hashes": {"sha256": "/wkYZKisXe7cXyvBuiGkEIeVqUk0GU2MOysOvhvwi00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HZLZWOPqxumbE4QJkeSKtJ7oBMNW3g4/PDjSqnWdwN5ZrS77tbYFH/2GyXOgLAVoQyGUokYQGxQ0H9hUs9a2DA"}}, "unsigned": {"age_ts": 1570040848056}}eQa?$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800{"outlier": false, "stream_ordering": 647}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-147", "membership": "join"}, "depth": 12, "hashes": {"sha256": "j+Gkkui3MEWFCFc4OCJpbaW4bxA51c336hZ2lNCkv0w"}, "origin": "localhost:8829", "origin_server_ts": 1570040843686, "prev_events": ["$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs"], "prev_state": [], "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-147:localhost:8829", "state_key": "@anon-20191002_181700-147:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "qFx756Mib67IEdrS7bqnLnvr6HYbHUjcrpglxaOiSENm7p/m4rFOpL+eXkVnRt2u683JgUg6JNpWBayhZF04CQ"}}, "unsigned": {"age_ts": 1570040843686, "replaces_state": "$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs"}} ~z v r n j fb^ZVRNJF]eeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800\eeQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800[eeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800ZeeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800YeeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800XeeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800WeeQ$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800VeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800UeeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800TeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800SeeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800ReeQ$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800QeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800PeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800OeeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800NeeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800MeeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800LeeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800KeeQ$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800JeeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800IeeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800HeeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800GeeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800FeeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800EeeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800DeeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800CeeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800BeeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800AeeQ$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800@eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800 b[$H Z Q   K Z  R    ` ) M uj3(mb+ eZ#h]&`UXM [$H4}==anon-20191002_181700-216anon-20191002_181700-2164|==anon-20191002_181700-215anon-20191002_181700-2154{==anon-20191002_181700-214anon-20191002_181700-2144z==anon-20191002_181700-213anon-20191002_181700-2134y==anon-20191002_181700-212anon-20191002_181700-2124x==anon-20191002_181700-211anon-20191002_181700-2114w==anon-20191002_181700-209anon-20191002_181700-2094v==anon-20191002_181700-210anon-20191002_181700-2104u==anon-20191002_181700-208anon-20191002_181700-208t34344s==anon-20191002_181700-207anon-20191002_181700-207r33334q==anon-20191002_181700-206anon-20191002_181700-206p32324o==anon-20191002_181700-205anon-20191002_181700-205n31314m==anon-20191002_181700-204anon-20191002_181700-204l30304k==anon-20191002_181700-203anon-20191002_181700-203j29294i==anon-20191002_181700-202anon-20191002_181700-202h28284g==anon-20191002_181700-201anon-20191002_181700-201f27274e==anon-20191002_181700-200anon-20191002_181700-200d26264c==anon-20191002_181700-199anon-20191002_181700-199b25254a==anon-20191002_181700-198anon-20191002_181700-198`24244_==anon-20191002_181700-197anon-20191002_181700-197^23234]==anon-20191002_181700-196anon-20191002_181700-1964\==anon-20191002_181700-195anon-20191002_181700-195[22224Z==anon-20191002_181700-194anon-20191002_181700-194Y21214X==anon-20191002_181700-193anon-20191002_181700-193W20204V==anon-20191002_181700-192anon-20191002_181700-192U19194T==anon-20191002_181700-191anon-20191002_181700-191S18184R==anon-20191002_181700-190anon-20191002_181700-190Q17174P==anon-20191002_181700-189anon-20191002_181700-189O16164N==anon-20191002_181700-188anon-20191002_181700-188M15154L==anon-20191002_181700-187anon-20191002_181700-187K14144J==anon-20191002_181700-186anon-20191002_181700-186I1313>H==!anon-20191002_181700-185anon-20191002_181700-185LemurLover&G=!anon-20191002_181700-184LemurLover4F==anon-20191002_181700-183anon-20191002_181700-1834E==anon-20191002_181700-182anon-20191002_181700-1824D==anon-20191002_181700-181anon-20191002_181700-1814C==anon-20191002_181700-179anon-20191002_181700-1794B==anon-20191002_181700-178anon-20191002_181700-1784A==anon-20191002_181700-177anon-20191002_181700-1774@==anon-20191002_181700-176anon-20191002_181700-1764?==anon-20191002_181700-175anon-20191002_181700-1754>==anon-20191002_181700-174anon-20191002_181700-1744===anon-20191002_181700-173anon-20191002_181700-173<1212;11114:==anon-20191002_181700-170anon-20191002_181700-17049==anon-20191002_181700-169anon-20191002_181700-16948==anon-20191002_181700-168anon-20191002_181700-1687101069945==anon-20191002_181700-167anon-20191002_181700-16748843==anon-20191002_181700-165anon-20191002_181700-165 06creeper41==anon-20191002_181700-164anon-20191002_181700-1642774/==anon-20191002_181700-163anon-20191002_181700-163.554-==anon-20191002_181700-162anon-20191002_181700-162,444+==anon-20191002_181700-161anon-20191002_181700-161*334)==anon-20191002_181700-160anon-20191002_181700-160(22'114&==anon-20191002_181700-159anon-20191002_181700-1594%==anon-20191002_181700-158anon-20191002_181700-1584$==anon-20191002_181700-157anon-20191002_181700-1574#==anon-20191002_181700-156anon-20191002_181700-1564"==anon-20191002_181700-155anon-20191002_181700-1554!==anon-20191002_181700-154anon-20191002_181700-1544 ==anon-20191002_181700-153anon-20191002_181700-1534==anon-20191002_181700-152anon-20191002_181700-1524==anon-20191002_181700-151anon-20191002_181700-1514==anon-20191002_181700-149anon-20191002_181700-1494==anon-20191002_181700-150anon-20191002_181700-150 QW&b1m< xG R ! Z @  y _ .  ~ d I  O Z)e4P5lQ R7nS"0]@anon-20191002_181700-195:localhost:88001@22:localhost:88000]@anon-20191002_181700-138:localhost:88000]@anon-20191002_181700-136:localhost:88000]@anon-20191002_181700-137:localhost:88000]@anon-20191002_181700-135:localhost:88000]@anon-20191002_181700-134:localhost:88000]@anon-20191002_181700-133:localhost:88000]@anon-20191002_181700-131:localhost:88000]@anon-20191002_181700-132:localhost:88000]@anon-20191002_181700-129:localhost:88000]@anon-20191002_181700-194:localhost:88001@21:localhost:88000]@anon-20191002_181700-193:localhost:88001@20:localhost:88000]@anon-20191002_181700-192:localhost:88001@19:localhost:88000]@anon-20191002_181700-191:localhost:88001@18:localhost:88000]@anon-20191002_181700-190:localhost:88001@17:localhost:88000]@anon-20191002_181700-189:localhost:88001@16:localhost:88000]@anon-20191002_181700-188:localhost:88001@15:localhost:88000]@anon-20191002_181700-187:localhost:88001@14:localhost:88000]@anon-20191002_181700-186:localhost:88001@13:localhost:88000]@anon-20191002_181700-185:localhost:88000]@anon-20191002_181700-184:localhost:88000]@anon-20191002_181700-183:localhost:88000]@anon-20191002_181700-182:localhost:88000]@anon-20191002_181700-181:localhost:88000]@anon-20191002_181700-179:localhost:88000]@anon-20191002_181700-178:localhost:88000]@anon-20191002_181700-177:localhost:88000]@anon-20191002_181700-176:localhost:88000]@anon-20191002_181700-175:localhost:88000]@anon-20191002_181700-174:localhost:88000]@anon-20191002_181700-173:localhost:88001@12:localhost:88001@11:localhost:88000]@anon-20191002_181700-170:localhost:88000]@anon-20191002_181700-169:localhost:88000]@anon-20191002_181700-168:localhost:88001@10:localhost:8800/@9:localhost:8800/@8:localhost:88000]@anon-20191002_181700-167:localhost:8800/@8:localhost:88000]@anon-20191002_181700-165:localhost:8800/@7:localhost:88000]@anon-20191002_181700-164:localhost:8800/@6:localhost:88000]@anon-20191002_181700-163:localhost:8800/@5:localhost:88000]@anon-20191002_181700-162:localhost:8800/@4:localhost:88000]@anon-20191002_181700-161:localhost:8800/@3:localhost:88000]@anon-20191002_181700-160:localhost:8800/@2:localhost:8800/@1:localhost:88000]@anon-20191002_181700-159:localhost:88000]@anon-20191002_181700-158:localhost:88000]@anon-20191002_181700-157:localhost:88000]@anon-20191002_181700-156:localhost:88000]@anon-20191002_181700-155:localhost:88000]@anon-20191002_181700-154:localhost:88000]@anon-20191002_181700-153:localhost:88000]@anon-20191002_181700-152:localhost:88000]@anon-20191002_181700-151:localhost:88000]@anon-20191002_181700-149:localhost:88000]@anon-20191002_181700-150:localhost:88000]@anon-20191002_181700-146:localhost:88000]@anon-20191002_181700-143:localhost:88000]@anon-20191002_181700-144:localhost:88000]@anon-20191002_181700-142:localhost:88000]@anon-20191002_181700-141:localhost:88000]@anon-20191002_181700-140:localhost:8800 g * T~=gg/]!c@anon-20191002_181700-160:localhost:8800RSEHRUSFUDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgog.]!c@anon-20191002_181700-159:localhost:8800AHWAAMEKYNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR3U3A3TUhYfnBhPV5YLH4KMDAyZnNpZ25hdHVyZSAvfXoK5cLowkEwFacOTLTOKnWnFL1vaxZ2eDRCM6QvbQog-]!c@anon-20191002_181700-158:localhost:8800XSKFBBFHAVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswog,]!c@anon-20191002_181700-157:localhost:8800FXSFHLELFTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEIjZDNkYWZqQ3YjJipPNHUKMDAyZnNpZ25hdHVyZSBflUd8wD7C3GL0vPhtx6UvSnD7Yx4lQbVrhQjPOkB8Bwog+]!c@anon-20191002_181700-156:localhost:8800KJWWDXWUBDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAog*]!c@anon-20191002_181700-155:localhost:8800LVXDKVKVJYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlCYk5kMHZueFlwRS1SdS4KMDAyZnNpZ25hdHVyZSAQ9iRcidiF5PYiJqsN0NvRlFCfmgqacVu3ZWNUC6AdHgog)]!c@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0Aog(]!c@anon-20191002_181700-153:localhost:8800RAWLINNCFAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48Cwog']!c@anon-20191002_181700-152:localhost:8800GXUCZNSPYGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgog&]!c@anon-20191002_181700-151:localhost:8800OZBCDWREHRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwog%]!c@anon-20191002_181700-149:localhost:8800AGJMWNVTGMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20Ao a} { y w u sqomkigeca~7eeQ$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~6eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~5eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~4eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~3eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800~2eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800~1eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~0eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~/eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~.eeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~-eeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~,eeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~+eeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~*eeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~)eeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~(eeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~'eeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~&eeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~%eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~$eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~#eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~"eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~!eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~ eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800  W S Q o z 8 "'Oz6 n,eQ?$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7m+eQ? $vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibilitye*eQ/ $ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rulesg)eQ3 $oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels (eQ']$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800joina'eQ' $poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create &eQ']$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800joineQ']$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800leaveneQ?$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5 eQ']$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800joinmeQ? $9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibilityeeQ/ $C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rulesgeQ3 $cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levelsaeQ' $HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create eQ']$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829joinneQ?$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4 eQ']$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829joinpeQ))$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800meQ? $nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibilityn%eQ?$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6m$eQ? $CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibilitye#eQ/ $gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rulesg"eQ3 $Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels !eQ']$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800joina eQ' $-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800m.room.create eQ']$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800join +z`^ k x ' 4 A N ] ly(5BmzS)P]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800P]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800P]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800P]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800P]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800P]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800N[Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800 P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-210:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800 N[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800 P]Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800P]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800P]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800P]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800P]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800P]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800P]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800P]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800P]Q@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800P]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800P]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800P]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800P]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800P]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800P]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800P]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800P]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800P]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800P]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800P]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800 @V Z  b  x*"~8B@! e'Q  ]$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwm.room.create!OqPpVlCwmKdAUlwrXI:localhost:8800m%mu@anon-20191002_181700-156:localhost:8800, e?Q ]$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYm.room.third_party_invite!quaZwrGnzbNWhwAOYB:localhost:8800mm@anon-20191002_181700-154:localhost:8800,e?Q ]$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iom.room.history_visibility!quaZwrGnzbNWhwAOYB:localhost:8800m}m@anon-20191002_181700-154:localhost:8800$e/Q ]$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYm.room.join_rules!quaZwrGnzbNWhwAOYB:localhost:8800m{Bm{@anon-20191002_181700-154:localhost:8800&e3Q ]$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAm.room.power_levels!quaZwrGnzbNWhwAOYB:localhost:8800mx\my@anon-20191002_181700-154:localhost:8800 e'Q ]$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4m.room.member!quaZwrGnzbNWhwAOYB:localhost:8800muKmv]@anon-20191002_181700-154:localhost:8800 e'Q  ]$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4m.room.create!quaZwrGnzbNWhwAOYB:localhost:8800mr0mr@anon-20191002_181700-154:localhost:8800 e'Q ]$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIm.room.member!JusxqeECtidaPlWqhp:localhost:8800mjmjy@anon-20191002_181700-153:localhost:8800 e'Q ]$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwm.room.member!JusxqeECtidaPlWqhp:localhost:8800meYmg@anon-20191002_181700-152:localhost:8800,e?Q ]$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4m.room.third_party_invite!JusxqeECtidaPlWqhp:localhost:8800m\8m]1@anon-20191002_181700-152:localhost:8800,e?Q ]$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48m.room.history_visibility!JusxqeECtidaPlWqhp:localhost:8800mWmY@anon-20191002_181700-152:localhost:8800$e/Q ]$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsm.room.join_rules!JusxqeECtidaPlWqhp:localhost:8800mUDmV6@anon-20191002_181700-152:localhost:8800&e3Q ]$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAm.room.power_levels!JusxqeECtidaPlWqhp:localhost:8800mRPmS@anon-20191002_181700-152:localhost:8800 e'Q ]$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4m.room.member!JusxqeECtidaPlWqhp:localhost:8800mOmP@anon-20191002_181700-152:localhost:8800 e'Q  ]$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkm.room.create!JusxqeECtidaPlWqhp:localhost:8800mKmL@anon-20191002_181700-152:localhost:8800 e'Q ] $qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800 m>m?@anon-20191002_181700-151:localhost:8800 e'Q ] $7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800 m:m<@anon-20191002_181700-149:localhost:8800 e'Q ] $tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800 m5Pm6@anon-20191002_181700-149:localhost:8800,e?Q ]$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxom.room.third_party_invite!aWvVRVaDflYyyGTOdD:localhost:8800m3m3@anon-20191002_181700-149:localhost:8800 e'Q ]$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokm.room.member!aWvVRVaDflYyyGTOdD:localhost:8800m0m0@anon-20191002_181700-150:localhost:8800 e'Q ]$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800m.cm.@anon-20191002_181700-149:localhost:8800, e?Q ]$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIm.room.history_visibility!aWvVRVaDflYyyGTOdD:localhost:8800m*Lm,@anon-20191002_181700-149:localhost:8800$ e/Q ]$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4m.room.join_rules!aWvVRVaDflYyyGTOdD:localhost:8800m'm(@anon-20191002_181700-149:localhost:8800& e3Q ]$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cm.room.power_levels!aWvVRVaDflYyyGTOdD:localhost:8800m%m& @anon-20191002_181700-149:localhost:8800 i i eQ_7$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 653}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-150", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-150:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040852067, "hashes": {"sha256": "LYMogqBveAhnhONn+QeWtOc4IWJpD1+RlcBLZQcCuJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bK6tAfRU8uH8jQRSL1/oP6gLtIHXs2VmK6pbNTGiXk06SqdcFo63YzI9myPR5ie9iSTU6n9x3lB9CXuqmvCKBA"}}, "unsigned": {"age_ts": 1570040852067, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-149:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-149", "avatar_url": null}, "sender": "@anon-20191002_181700-149:localhost:8800"}]}} eQ_$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 652}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4"], "type": "m.room.history_visibility", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040851020, "hashes": {"sha256": "Ve1Xdgo2YiM7I+JNEdarCCb6Wt0fxVxYYTKTkTEJfso"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yjk0NfTIlSsqtMcu8D/BaqFjKPeCsdNWhuJTdyIZnZS53IrASXp+xEknLPoAqexn1TPAImYN8YoIjHzyPuYNAg"}}, "unsigned": {"age_ts": 1570040851020}}s eQ_u$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 651}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c"], "type": "m.room.join_rules", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040850346, "hashes": {"sha256": "Gv7+s+N+bt8GY6m3+/gRCqiYOkzijx6duvL94ceDP+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpUSNbA/7e4sX/t/5TmPeySM+9gwCr52SVVvxiM24dlSrLHplBBiRA8WvM2C7nvhC2mpo0y6MLyVtKPsEpFSCw"}}, "unsigned": {"age_ts": 1570040850346}} Lj8pW> ] + d 2  j 8  p > v DJ |QW%sW;" e3k91e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w M1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 Q1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk T1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBER9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 3$94:localhost:42455 3$94:localhost:42455 9$91_m1:localhost:42455 9$91_m1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 3$90:localhost:42455 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI )1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA 1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx41e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM x1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUQ1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU^1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc R1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 P1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM 1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 41e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw71e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wH1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwW1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4B1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L81e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg T1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8=1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM o1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 x0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQc1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8>1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo*1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl2853$88:localhost:42455 1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY'3$87:localhost:42455 3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk !3$82:localhost:42455 p1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok3$80:localhost:42455 [1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM F | h6 $^n<  D  0uC|J  P , X  Jb &j8p>  v \ * V 1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk01e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV00e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wL0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU|1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U 21e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU81e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQx0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY[1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY^1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE90e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo_1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg^1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GcP1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkN1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEk1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQF1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego [1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA M1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yp 1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs 1e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwQ V21e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ- 21e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$ P11e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYx1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8c21e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico S1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA P1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 <1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O81e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY(1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE 1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT41e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgZ1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIo1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6EB1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw  YeQ_A$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 656}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-149:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040853840, "hashes": {"sha256": "xUivEAovkMTlujjVCJm8c5yHtFBlR8G8eAMyl5RkLwI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cvXNZx+qPSSTXbWjjMd/jFJ0tZ3K0vqH+QwzUpbkXqRt5vEZUoDVfj57iW3PVLpwzSsdd3eDijsWos21/g33BQ"}}, "unsigned": {"age_ts": 1570040853840, "replaces_state": "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"}}beQ_S$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 655}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok"], "type": "m.room.third_party_invite", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:46319/_matrix/identity/v2/pubkey/isvalid", "public_key": "z/aG2znABshpHan3tCZlbGbHN5ZgBbHfBCIltbX1qso"}, {"key_validity_url": "https://localhost.localdomain:46319/_matrix/identity/v2/pubkey/isvalid", "public_key": "ympIEbqLIGXG/cIaLJWfg78EVpeSyx3xW0O/nsXwxpg"}], "key_validity_url": "https://localhost.localdomain:46319/_matrix/identity/v2/pubkey/isvalid", "public_key": "z/aG2znABshpHan3tCZlbGbHN5ZgBbHfBCIltbX1qso"}, "depth": 8, "prev_state": [], "state_key": "5", "origin": "localhost:8800", "origin_server_ts": 1570040853397, "hashes": {"sha256": "RJQWShH18IgL0LoZzR0xGZIF/U+dzZy4zEmtvPEPllU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xs9lqMtbTfGqtw+3KrFV2Lnrn4hQFDtuBYwa+BwNKYbqWxEBtubUZV3IQRunnH3sQwBQUiKZjLR1FU1512SvCg"}}, "unsigned": {"age_ts": 1570040853397}} eQ_=$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 173, "stream_ordering": 654}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4"], "prev_events": ["$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-150:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-150", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-150:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040852635, "hashes": {"sha256": "eRLQdhxb3Lsto5IXuKYdlld3mpuIj07lPQZqFxJKI5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "euYSBzhd/aZJvv4BzmlNmNCrLcsTVeuwT2GwqAjUELoxMaokrzqSxzRvxU8CWitvgVV9LMBu+qKIjaDkhxATDg"}}, "unsigned": {"age_ts": 1570040852635, "replaces_state": "$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0"}} N*CV{I p> v D u O  VP $  ] +c18i 7\j {  Io= $1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 t1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUk1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU e1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcc1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q 1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 R1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAu1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g%1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwG1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskt1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag21e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYj1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70t1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg#1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo s1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4_1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsY1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYS1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wD1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y(1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsU0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgm1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA@1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoc1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE~1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEl1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo61e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E)1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8:1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoL1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM:1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 51e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM Q1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9wo  eQ_$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 663}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs"], "type": "m.room.history_visibility", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040862671, "hashes": {"sha256": "CsRSqugIxuNbAbkIYh+I7s1CoesIudZ5QfofwVIsWwo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VgHSbkFxpdx2wE35Bv3Tucf/Z0M8QRi06owFd+n2iXjJxpOqE09hzI+VTjD50Qw3XZkDzd5F6KqFLYBARgzeBA"}}, "unsigned": {"age_ts": 1570040862671}}seQ_u$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 662}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA"], "type": "m.room.join_rules", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040862020, "hashes": {"sha256": "gDAkl5Miyidz5G8tsSYEXZGRqP9+BJmPPwOitlqaZ6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OWbAE0cQHFVA55fLfEbcNUz90VPi3wGDKCa6DwMGzefNuJcDsz7l2SiZH7YbjerV5+M4/QovtXp2ek441uwoDA"}}, "unsigned": {"age_ts": 1570040862020}}jeQ_c$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 661}{"auth_events": ["$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "type": "m.room.power_levels", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"users": {"@anon-20191002_181700-152:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040861264, "hashes": {"sha256": "gQrFS43CTg3mCCaoN21C9VFE5rI+OYA33rm4ZJs/3rQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "byRk51RfYY+jhDZ/Ovhvl0dzhC7PfxW4NPjkPCvJbSrL/HpKWvoQkBt1GwDVoD8ofUuX2SLSPzTyWZJgzbQMDg"}}, "unsigned": {"age_ts": 1570040861264}}ueQ_y$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 660}{"auth_events": ["$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk"], "prev_events": ["$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk"], "type": "m.room.member", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-152", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-152:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040860669, "hashes": {"sha256": "kZxBZ46H1cTWhKPSzbyrIifOkrlJ3WEOBWlnVqEjfrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vh0TRndDh0Yz6bDzg8ZXQEuneNp6Latw9+1ZiHxRbyVdOYL7On2Ug4OWLEz89rDrRsYRuNIAN3rUrplhyuEkCQ"}}, "unsigned": {"age_ts": 1570040860669}} !p% ! e n  # HKm*CLtdhQ' e!IMiczgkCTjejbnbeyP:localhost:8800m.room.create$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMugQ'/e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kjfQ3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_access$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkpeQ? e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibility$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwhdQ/ e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rules$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gjcQ3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU bQ']e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4daQ' e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.create$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQq`Q?e!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUp_Q? e!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibility$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoh^Q/ e!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rules$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQj]Q3 e!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w \Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMd[Q' e!awHAhLuEkavTGACcUW:localhost:8800m.room.create$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMqZQ?e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznspYQ? e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibility$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEhXQ/ e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rules$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAjWQ3 e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M VQ']e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEdUQ' e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.create$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwqTQ?e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYpSQ? e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibility$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iohRQ/ e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rules$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYjQQ3 e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA PQ']e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4dOQ' e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg48NQ']ee!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw MQ']e!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwqLQ?e!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4pKQ? e!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibility$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48hJQ/ e!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rules$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsjIQ3 e!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA HQ']e!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4 a} { y w u sqomkigeca~VeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~UeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~TeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800~SeeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~ReeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~QeeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800~PeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~OeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~NeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800~MeeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~LeeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~KeeQ$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~JeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800~IeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~HeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~GeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800~FeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~EeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800~DeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~CeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~BeeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~AeeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~@eeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~?eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~>eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~=eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~<eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~;eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~:eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~9eeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~8eeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800 #r.M 3 B p + 4\(GV5DrekeQ/ $p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rulesgjeQ3 $jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels ieQ']$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800aheQ' $kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800m.room.creatergeQ'/$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800gfeQ3 $_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_accessmeeQ? $Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibilityedeQ/ $h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rulesgceQ3 $RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels beQ']$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800aaeQ' $DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.createn`eQ?$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9m_eQ? $rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibilitye^eQ/ $Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rulesg]eQ3 $G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels \eQ']$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800a[eQ' $7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800m.room.createnZeQ?$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8mYeQ? $XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibilityeXeQ/ $SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rulesgWeQ3 $VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels VeQ']$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800aUeQ' $8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.createnTeQ?$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7mSeQ? $vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibilityeReQ/ $ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rulesgQeQ3 $oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels PeQ']$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800aOeQ' $poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create NeQ']$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800 MeQ']$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800nLeQ?$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6mKeQ? $CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibilityeJeQ/ $gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rulesgIeQ3 $Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels  geQ /$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 665}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4", "$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4"], "prev_events": ["$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4"], "type": "m.room.member", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"mxid": "@anon-20191002_181700-153:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "signatures": {"localhost.localdomain:43793": {"ed25519:0": "+/+EWJrkgnkqLbLgg3SfQCxT4pxCukMdcGV6rLSOIBtfJK4Rjqm0R4XvwPuK3DBaTkhMsZKvnEIL67mxd+XvAA"}}, "token": "6"}, "display_name": "Bob"}}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-153:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040866137, "hashes": {"sha256": "dvqH1H49u0oXVPQ53jsLKXikJvczhIiWCaAhP3rHA3k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zw6mw62eMDXlMPvmJxnYB29N3AtJ4R0qaIACNUvIaD8Zv19xRM8VLc3SUSPeTcwTZfN4cTZ2w4pW0/+AuMHEAg"}}, "unsigned": {"age_ts": 1570040866137, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-152:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-152:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-152", "avatar_url": null}, "sender": "@anon-20191002_181700-152:localhost:8800"}]}}beQ_S$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 664}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48"], "type": "m.room.third_party_invite", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:43793/_matrix/identity/v2/pubkey/isvalid", "public_key": "X0tNmMR6HWSPTfKc+x5k3+gD/5CfgySsOI2zJoLlvF0"}, {"public_key": "gjSbZdBjn3YCtBvZBW1nWE3jbM9KWUKhi6m6ajPYr04", "key_validity_url": "https://localhost.localdomain:43793/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:43793/_matrix/identity/v2/pubkey/isvalid", "public_key": "X0tNmMR6HWSPTfKc+x5k3+gD/5CfgySsOI2zJoLlvF0"}, "depth": 6, "prev_state": [], "state_key": "6", "origin": "localhost:8800", "origin_server_ts": 1570040863800, "hashes": {"sha256": "Tzb5Ub20GMqZAUHqIX5XYJFyOUHvVSwo2EGuVaA0grE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sM7DhLamtpblPQVXCIEX3n0wysLNEBpORXPdpKr5GF32PKLbmFDGgcUFAewVuNi8MA8jCWSlCKVFqylz4kVLDg"}}, "unsigned": {"age_ts": 1570040863800}} X XueQ_y$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 668}{"auth_events": ["$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4"], "prev_events": ["$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4"], "type": "m.room.member", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-154", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-154:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040870219, "hashes": {"sha256": "9Eoheh5mnqo/VmYWsUz0XXxB6ZRaLJylfH6+ljGSBNk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dfvko0p0Z2U5vp+GE87HqiK+j8DsDXO2dA0dfTuSqQjeihQ8MQtqCoxQwrdiDimokCnWdQP+HPKJrvEdymuLCw"}}, "unsigned": {"age_ts": 1570040870219}}heQ__$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 667}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-154:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040869424, "hashes": {"sha256": "ng7GJIbw54TnR6fsYS+NMMJ6fUW9UUNvGaSBl0+zvXs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZIGWQzlYtXmEhllY/lZvxf76Sqz0jLJpKXZ4GyQmrFxtrWKBNeuahTCRU675qxOxhMcKSjZ3CNNpaLp8L8gBA"}}, "unsigned": {"age_ts": 1570040869424}}?eQ_ $yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 177, "stream_ordering": 666}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs"], "prev_events": ["$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw"], "type": "m.room.member", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-153:localhost:8800", "content": {"third_party_signed": {"mxid": "@anon-20191002_181700-153:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "signatures": {"localhost.localdomain:43793": {"ed25519:0": "+/+EWJrkgnkqLbLgg3SfQCxT4pxCukMdcGV6rLSOIBtfJK4Rjqm0R4XvwPuK3DBaTkhMsZKvnEIL67mxd+XvAA"}}, "token": "6"}, "membership": "join", "displayname": "anon-20191002_181700-153", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-153:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040867343, "hashes": {"sha256": "4aA6IIcQjye++z5M3K829S4J1IjzX5JdJOYVDHhOy3Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lZ4Yj9aOThkUw3vvT79OVGO9Q9FtaMi+b6Gz8xSzQ0gBIGJ6Bpa6cGq/8W6ojcad/7FopP1IPSX8WuXMYsUGCQ"}}, "unsigned": {"age_ts": 1570040867343, "replaces_state": "$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw"}} ,NC 8 - { " p  e ZOD9.|#qf VDeL$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0sha256aiF;$mjg2Wv0z5)0 .VCeL$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMsha256{Ci6Ä RZ.3uu$cVBeL$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAsha256p:oOgSP [[t)_lcLE`VAeL$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0sha256- qpfގ.}& ]zڼ6 V@eL$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0sha256Tpǡeh2LvNיw<-V?eL$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcsha256{\m8b*Vk[|tpE&I3V>eL$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEsha256oİσLAֲǮ/fTw Cɀ&vV=eL$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUsha256 !%VL~N fp $ V<eL$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4sha256Pr a:EuUV6eL$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIsha256/q%ny/ ZL~/s]ylSb]LV5eL$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMsha256GϢ6vϦ` !z>YcV4eL$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRsssha256C.";P-E,z;~~%x Y0M#FV3eL$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMsha256qӪsihh/Jlf[V2eL$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7ksha256ojCV۸v[Nu,^ùV1eL$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPksha256ɀ0*M@N=C7<:;V0eL$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwsha256z7#{mϠ2H%DsFCv)~9V/eL$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gsha256斈7\*WϓLxHV.eL$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUsha256G;fDL֎-=-YX5V-eL$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4sha256rY.33=e9 &~V,eL$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQsha256 *͍wdJu4 3.sލ#?+V+eL$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUsha256vbLsE˞$: nPnmvXեV*eL$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVosha256<ոwtp$]=]9gr/A%ZV)eL$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQsha256>^@cщ] lւxTV(eL$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wsha256J&WB*tʳ- V'eL$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMsha256,C?J3߉D61>v/^α NV&eL$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMsha2569Pͱned+*UthZ~bj1AV%eL$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznssha256V ,lcדK7/0Д|}{V$eL$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEsha256\WЬc{.ßZ(jWfPT 61V#eL$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAsha256J\k+7yHൊN*tZV"eL$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51Msha256Va.wv=UnH8|{SV!eL$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEsha256[w+D+N ] F^0 V eL$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwsha256񴐳&/\@˜WSbiֺC6Tȵ VeL$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYsha256~sbt0[M||ݘ07ֻrVeL$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iosha256 ӣ [ wD) ֭qfNB,*VeL$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYsha256RrְY("vU95!FVeL$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAsha256ZxfNUt1 ^n VeL$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4sha256&fVDr BF HX<)C/RVeL$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4sha256[8@p? S=^VeL$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIsha2568B+џР{Ҭ<~5{eڅ `v^F.yW5 i G %  | Z 8  l J (  ~ \ :   q o B a4S&rEd7 V)uH Y,!E@__ANON__-52:localhost:42455-, !E@__ANON__-53:localhost:42455/E!E@__ANON__-58:localhost:424559!E@__ANON__-57:localhost:424557!E@__ANON__-56:localhost:424555!E@__ANON__-55:localhost:424553!E@__ANON__-54:localhost:424551,]@anon-20191002_181700-151:localhost:8800W,]@anon-20191002_181700-150:localhost:8800V,]@anon-20191002_181700-148:localhost:8829S,]@anon-20191002_181700-147:localhost:8829T,]@anon-20191002_181700-146:localhost:8800R,]@anon-20191002_181700-144:localhost:8800Q,]@anon-20191002_181700-143:localhost:8800P,]@anon-20191002_181700-141:localhost:8800O,]@anon-20191002_181700-140:localhost:8800N,]@anon-20191002_181700-139:localhost:8829M,]@anon-20191002_181700-138:localhost:8800L,]@anon-20191002_181700-137:localhost:8800K,]@anon-20191002_181700-136:localhost:8800J,]@anon-20191002_181700-134:localhost:8800I,]@anon-20191002_181700-132:localhost:8800H,]@anon-20191002_181700-131:localhost:8800G,]@anon-20191002_181700-129:localhost:8800F,]@anon-20191002_181700-128:localhost:8800E,]@anon-20191002_181700-126:localhost:8800C,]@anon-20191002_181700-125:localhost:8800B,]@anon-20191002_181700-124:localhost:8800A,]@anon-20191002_181700-123:localhost:8800@,]@anon-20191002_181700-120:localhost:8800?,]@anon-20191002_181700-119:localhost:8800>,]@anon-20191002_181700-118:localhost:8800=,]@anon-20191002_181700-117:localhost:8800<,]@anon-20191002_181700-116:localhost:8800;,]@anon-20191002_181700-115:localhost:8800:,]@anon-20191002_181700-114:localhost:88009,]@anon-20191002_181700-113:localhost:88008,]@anon-20191002_181700-112:localhost:88007,]@anon-20191002_181700-110:localhost:88006,]@anon-20191002_181700-109:localhost:88005,]@anon-20191002_181700-108:localhost:88004,]@anon-20191002_181700-107:localhost:88003,]@anon-20191002_181700-106:localhost:88002,]@anon-20191002_181700-104:localhost:88001,]@anon-20191002_181700-102:localhost:88000,]@anon-20191002_181700-101:localhost:8800/!E@__ANON__-51:localhost:42455)!E@__ANON__-50:localhost:42455(!E@__ANON__-49:localhost:42455&!E@__ANON__-48:localhost:42455%!E@__ANON__-47:localhost:42455!!E@__ANON__-46:localhost:42455!E@__ANON__-45:localhost:42455!E@__ANON__-43:localhost:42455!E@__ANON__-41:localhost:42455!E@__ANON__-40:localhost:42455!E@__ANON__-39:localhost:42455!E@__ANON__-38:localhost:42455!E@__ANON__-37:localhost:42455!E@__ANON__-36:localhost:42455!E@__ANON__-35:localhost:42455!E@__ANON__-34:localhost:42455 !E@__ANON__-33:localhost:42455 !E@__ANON__-32:localhost:42455!E@__ANON__-31:localhost:42455!E@__ANON__-30:localhost:42455 C@__ANON__-2:localhost:42455!E@__ANON__-28:localhost:42455!E@__ANON__-26:localhost:42455!E@__ANON__-22:localhost:42455!E@__ANON__-21:localhost:42455!E@__ANON__-20:localhost:42455!E@__ANON__-19:localhost:42455!E@__ANON__-18:localhost:42455!E@__ANON__-17:localhost:42455!E@__ANON__-16:localhost:42455!E@__ANON__-15:localhost:42455!E@__ANON__-13:localhost:42455!E@__ANON__-12:localhost:42455!E@__ANON__-11:localhost:42455!E@__ANON__-10:localhost:42455 C@__ANON__-0:localhost:42455/@8:localhost:8800h/@6:localhost:8800d/@3:localhost:8800`1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:8800/@2:localhost:8800^1@17:localhost:88001@16:localhost:88001@15:localhost:8800}1@14:localhost:8800{1@13:localhost:8800y K d 7 V)uG.a[i<3|N vHb4 ~ P " j >  X , t F  j<X*-]@anon-20191002,]@anon-20191002_181700-169:localhost:8800j,]@anon-20191002_181700-173:localhost:8800l,]@anon-20191002_181700-179:localhost:8800r,]@anon-20191002_181700-183:localhost:8800u,]@anon-20191002_181700-182:localhost:8800t,]@anon-20191002_181700-181:localhost:8800s,]@anon-20191002_181700-187:localhost:8800z,]@anon-20191002_181700-186:localhost:8800x,]@anon-20191002_181700-185:localhost:8800w,]@anon-20191002_181700-184:localhost:8800v-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800,]@anon-20191002_181700-189:localhost:8800~,]@anon-20191002_181700-188:localhost:8800|,]@anon-20191002_181700-180:localhost:8829q,]@anon-20191002_181700-178:localhost:8800p,]@anon-20191002_181700-176:localhost:8800o,]@anon-20191002_181700-175:localhost:8800n,]@anon-20191002_181700-174:localhost:8800m,]@anon-20191002_181700-170:localhost:8800k*[ @anon-20191002_181700-16:localhost:8800,]@anon-20191002_181700-168:localhost:8800i,]@anon-20191002_181700-167:localhost:8800g,]@anon-20191002_181700-166:localhost:8829f,]@anon-20191002_181700-165:localhost:8800e,]@anon-20191002_181700-164:localhost:8800c,]@anon-20191002_181700-163:localhost:8800b,]@anon-20191002_181700-162:localhost:8800a,]@anon-20191002_181700-161:localhost:8800_,]@anon-20191002_181700-160:localhost:8800],]@anon-20191002_181700-158:localhost:8800\,]@anon-20191002_181700-156:localhost:8800[,]@anon-20191002_181700-154:localhost:8800Z,]@anon-20191002_181700-153:localhost:8800Y-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-236:localhost:8800-]@anon-20191002_181700-234:localhost:8800-]@anon-20191002_181700-232:localhost:8800-]@anon-20191002_181700-231:localhost:8800+[@anon-20191002_181700-22:localhost:8800-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800+[@anon-20191002_181700-20:localhost:8800-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800-]@anon-20191002_181700-199:localhost:8800  eQ_$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 671}{"auth_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA", "$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY"], "type": "m.room.history_visibility", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040872405, "hashes": {"sha256": "MjwJAEKAe9ll+Mdn1xo16IFPCRGAh2LYnGzb6lxjL6c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hdWxfSdyU8L+b5ucTHisFZvarqOLZ++XzCZ19bkU4hgufg6HgJuLfifnQAYMMcM6QvpV6vj+JpK12SH3TnXAAA"}}, "unsigned": {"age_ts": 1570040872405}}seQ_u$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 670}{"auth_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA", "$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA"], "type": "m.room.join_rules", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040871746, "hashes": {"sha256": "NDMChLt0wsknX2nlFvUUnwmFFTDtDurcEPJPWCSqJUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "If7sgQIDNN0WoDtIIi1ev3DZdBJhfFVoFMCu+EoL2Kfkwhs5hCdjrUro4Vk+pJ6f/BqwXFVmIY4WIHlDK6MZAQ"}}, "unsigned": {"age_ts": 1570040871746}}jeQ_c$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 669}{"auth_events": ["$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "type": "m.room.power_levels", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"users": {"@anon-20191002_181700-154:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040871004, "hashes": {"sha256": "23EhjSkkO9F5sW5kR+tm6Uso9Wa1GkixQt1KldakRww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jLJML2WNOCuHdWmVVFO5OBFhoS+hbeu/wkDr9PQBJ9RXyfmBTAt8oajg/WonOBSlqxZ1qMy4iBdfkY8P15r/Bg"}}, "unsigned": {"age_ts": 1570040871004}} 5 5u!eQ_y$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 674}{"auth_events": ["$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw"], "prev_events": ["$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw"], "type": "m.room.member", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-156", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-156:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040877255, "hashes": {"sha256": "KGLBT3GXrmqWGROZTL9hqY8qY5fiwAP3nPRcOVjcyD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DmZ01BepZFPXeOZupT+j6zeO1MNzG3Fw4e8JoBPRT5U/ZDVObMtL0FzYHRktV/hvuZE/U/H6ipnE9NQX7eKHAw"}}, "unsigned": {"age_ts": 1570040877255}}h eQ__$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 673}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-156:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040876069, "hashes": {"sha256": "CiEc6eMtAFTXLzwqgfkTob+8JE7VbXuNsSx+Xl9PZpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ejVQ0Xy39pflcN0gAANd1AB1pbsfi04emmEHsIYcRSzgTr0LSG14clPzOYf8iLG+2C1UJQ/ocdis/ugjj2USDA"}}, "unsigned": {"age_ts": 1570040876069}}beQ_S$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 672}{"auth_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA", "$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io"], "type": "m.room.third_party_invite", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:44181/_matrix/identity/v2/pubkey/isvalid", "public_key": "aOLm69mwDHiqO2jMooNzOmWBkiQlD3ZahYGdCcCAR5M"}, {"key_validity_url": "https://localhost.localdomain:44181/_matrix/identity/v2/pubkey/isvalid", "public_key": "Zm3H20l7gStcmLSCe12vYFHvAv0G4U6yV+qEkJx3Mvo"}], "key_validity_url": "https://localhost.localdomain:44181/_matrix/identity/v2/pubkey/isvalid", "public_key": "aOLm69mwDHiqO2jMooNzOmWBkiQlD3ZahYGdCcCAR5M"}, "depth": 6, "prev_state": [], "state_key": "7", "origin": "localhost:8800", "origin_server_ts": 1570040874115, "hashes": {"sha256": "SVVT0wYIh2tr7s8EnxspYttPYzuFEZic9DeD3//DuUo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x/fOJFkkmM1MWI8hFqkafySzXOfnF6NCJRaxtdk7ZsRzgsi5DEpw/nZVQLdCubIKIYRTAgWCaxdMt/8Vlb4jAQ"}}, "unsigned": {"age_ts": 1570040874115}} "Pq) ' 2 7 [ Ydi!DIm$)PgQ/ e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rules$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxclQ9 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_alias$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEiQ3 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU Q']e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4cQ' e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.create$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBItQ'/e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgiQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_access$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIoQ? e!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibility$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUgQ/ e!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rules$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIiQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM Q']e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRsscQ' e!IMiczgkCTjejbnbeyP:localhost:8800m.room.create$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMtQ'/e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kiQ3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_access$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkoQ? e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibility$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwgQ/ e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rules$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gi Q3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU Q']e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4c Q' e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.create$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-159:localhost:8800$pDZCc_muU7FZEV0l-bbrrkwShHurv9Zyg8JCphVzgAw Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-159:localhost:8800$Ork2nbB51j5NApw3JOJldmCVNa3KzuiSvgtPW6Xp-iApQ?e!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUoQ? e!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibility$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVogQ/ e!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rules$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQiQ3 e!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMcQ' e!awHAhLuEkavTGACcUW:localhost:8800m.room.create$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM Q']e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-157:localhost:8800$GlYkfN6Wk8HA6D0yW_ILUHEvSnGFCe9qP87ETDxa4DA Q']e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-157:localhost:8800$VpPduyG1nYeJTivWXejIiiZrTsLpfFGft-gO5yZruPopQ?e~!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsoQ? e}!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibility$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEg~Q/ e|!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rules$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAi}Q3 e{!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M |Q']ez!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE A\ Z  d  blj3CA&9e3Q ]$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIm.room.guest_access!IMiczgkCTjejbnbeyP:localhost:8800mm@anon-20191002_181700-161:localhost:8800,8e?Q ]$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUm.room.history_visibility!IMiczgkCTjejbnbeyP:localhost:8800mm@anon-20191002_181700-161:localhost:8800$7e/Q ]$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIm.room.join_rules!IMiczgkCTjejbnbeyP:localhost:8800mqm0@anon-20191002_181700-161:localhost:8800&6e3Q ]$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMm.room.power_levels!IMiczgkCTjejbnbeyP:localhost:8800mm)@anon-20191002_181700-161:localhost:8800 5e'Q ]$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssm.room.member!IMiczgkCTjejbnbeyP:localhost:8800mm@anon-20191002_181700-161:localhost:88004 e'Q  ]$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMm.room.create!IMiczgkCTjejbnbeyP:localhost:8800mmT@anon-20191002_181700-161:localhost:8800 3e'Q /$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7km.room.member!HIZTeBCxvpMSpcqGVD:localhost:8800mxm@2:localhost:8800&2e3Q ]$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkm.room.guest_access!HIZTeBCxvpMSpcqGVD:localhost:8800m+m߽@anon-20191002_181700-160:localhost:8800,1e?Q ]$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwm.room.history_visibility!HIZTeBCxvpMSpcqGVD:localhost:8800m m@anon-20191002_181700-160:localhost:8800$0e/Q ]$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gm.room.join_rules!HIZTeBCxvpMSpcqGVD:localhost:8800mbm@anon-20191002_181700-160:localhost:8800&/e3Q ]$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUm.room.power_levels!HIZTeBCxvpMSpcqGVD:localhost:8800mԘm@anon-20191002_181700-160:localhost:8800 .e'Q ]$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4m.room.member!HIZTeBCxvpMSpcqGVD:localhost:8800mmm@anon-20191002_181700-160:localhost:8800- e'Q  ]$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQm.room.create!HIZTeBCxvpMSpcqGVD:localhost:8800m`mͷ@anon-20191002_181700-160:localhost:8800,,e?Q ]$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUm.room.third_party_invite!awHAhLuEkavTGACcUW:localhost:8800mmG@anon-20191002_181700-158:localhost:8800,+e?Q ]$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVom.room.history_visibility!awHAhLuEkavTGACcUW:localhost:8800mm|@anon-20191002_181700-158:localhost:8800$*e/Q ]$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQm.room.join_rules!awHAhLuEkavTGACcUW:localhost:8800mm[@anon-20191002_181700-158:localhost:8800&)e3Q ]$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wm.room.power_levels!awHAhLuEkavTGACcUW:localhost:8800mkm2@anon-20191002_181700-158:localhost:8800 (e'Q ]$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMm.room.member!awHAhLuEkavTGACcUW:localhost:8800mm@anon-20191002_181700-158:localhost:8800' e'Q  ]$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMm.room.create!awHAhLuEkavTGACcUW:localhost:8800mmu@anon-20191002_181700-158:localhost:8800,&e?Q ]$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsm.room.third_party_invite!OqPpVlCwmKdAUlwrXI:localhost:8800mm#@anon-20191002_181700-156:localhost:8800,%e?Q ]$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEm.room.history_visibility!OqPpVlCwmKdAUlwrXI:localhost:8800m8mh@anon-20191002_181700-156:localhost:8800$$e/Q ]$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAm.room.join_rules!OqPpVlCwmKdAUlwrXI:localhost:8800mm@anon-20191002_181700-156:localhost:8800&#e3Q ]$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51Mm.room.power_levels!OqPpVlCwmKdAUlwrXI:localhost:8800mLmh@anon-20191002_181700-156:localhost:8800 "e'Q ]$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEm.room.member!OqPpVlCwmKdAUlwrXI:localhost:8800mm}@anon-20191002_181700-156:localhost:8800 a} { y w u sqomkigeca~ueeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~teeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~seeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~reeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~qeeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~peeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~oeeQ$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~neeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~meeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~leeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800~keeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~jeeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~ieeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800~heeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~geeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~feeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800~eeeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~deeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~ceeQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~beeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~aeeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~`eeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800~_eeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~^eeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~]eeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800~\eeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~[eeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~ZeeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800~YeeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~XeeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~WeeQ$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800 Q Z ( T  k: sB) a / 70 gb) " N 5 S![  h6n=i uDM1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK00e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q)1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY0e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A,1e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI0e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YD0e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU]1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc;1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw@3$54:localhost:424551e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog3$50:localhost:424551e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI51e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U0e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsS1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w0e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIE0e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y@0e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYq1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVAv1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0p1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM 1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx41e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIQ1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAm1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI\1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAM1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cG1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAE1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokD1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760?1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs=3$94:localhost:42455+3$90:localhost:42455)3$87:localhost:42455'3$82:localhost:42455#3$80:localhost:424553$78:localhost:424553$75:localhost:424553$72:localhost:424553$69:localhost:424551e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A-1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw3$66:localhost:424553$62:localhost:424553$61:localhost:42455 0e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo31e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk%1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk0e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx00e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ70e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wW1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA&3$56:localhost:424553$55:localhost:42455 -RM H C > 9 4/*|%w rmhc T'Qe!WjlTCJVOFJkanCtkFE:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oT&Qe!WjlTCJVOFJkanCtkFE:localhost:8800$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacT%Qe!WjlTCJVOFJkanCtkFE:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboT$Qe!WjlTCJVOFJkanCtkFE:localhost:8800$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIT#Qe!WjlTCJVOFJkanCtkFE:localhost:8800$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8T"Qe!WjlTCJVOFJkanCtkFE:localhost:8800$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUT!Qe!WjlTCJVOFJkanCtkFE:localhost:8800$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYT Qe!WjlTCJVOFJkanCtkFE:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0TQe!WjlTCJVOFJkanCtkFE:localhost:8800$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMTQe!aBCvSXjtZUEPlPGHvY:localhost:8800$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGATQe!aBCvSXjtZUEPlPGHvY:localhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0TQe!aBCvSXjtZUEPlPGHvY:localhost:8800$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0TQe!aBCvSXjtZUEPlPGHvY:localhost:8800$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcTQe!aBCvSXjtZUEPlPGHvY:localhost:8800$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvETQe!aBCvSXjtZUEPlPGHvY:localhost:8800$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUTQe!aBCvSXjtZUEPlPGHvY:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4TQe!aBCvSXjtZUEPlPGHvY:localhost:8800$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBITQe!IMiczgkCTjejbnbeyP:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgTQe!IMiczgkCTjejbnbeyP:localhost:8800$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbITQe!IMiczgkCTjejbnbeyP:localhost:8800$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUTQe!IMiczgkCTjejbnbeyP:localhost:8800$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIITQe!IMiczgkCTjejbnbeyP:localhost:8800$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMTQe!IMiczgkCTjejbnbeyP:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssTQe!IMiczgkCTjejbnbeyP:localhost:8800$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMTQe!HIZTeBCxvpMSpcqGVD:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kTQe!HIZTeBCxvpMSpcqGVD:localhost:8800$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4T Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQTQe!awHAhLuEkavTGACcUW:localhost:8800$pDZCc_muU7FZEV0l-bbrrkwShHurv9Zyg8JCphVzgAwTQe!awHAhLuEkavTGACcUW:localhost:8800$Ork2nbB51j5NApw3JOJldmCVNa3KzuiSvgtPW6Xp-iATQe!awHAhLuEkavTGACcUW:localhost:8800$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUTQe!awHAhLuEkavTGACcUW:localhost:8800$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoTQe!awHAhLuEkavTGACcUW:localhost:8800$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQTQe!awHAhLuEkavTGACcUW:localhost:8800$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wTQe!awHAhLuEkavTGACcUW:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMTQe!awHAhLuEkavTGACcUW:localhost:8800$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMTQe!OqPpVlCwmKdAUlwrXI:localhost:8800$GlYkfN6Wk8HA6D0yW_ILUHEvSnGFCe9qP87ETDxa4DATQe!OqPpVlCwmKdAUlwrXI:localhost:8800$VpPduyG1nYeJTivWXejIiiZrTsLpfFGft-gO5yZruPoT~Qe~!OqPpVlCwmKdAUlwrXI:localhost:8800$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsT}Qe}!OqPpVlCwmKdAUlwrXI:localhost:8800$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDET|Qe|!OqPpVlCwmKdAUlwrXI:localhost:8800$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAT{Qe{!OqPpVlCwmKdAUlwrXI:localhost:8800$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M  $eQ_$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 677}{"auth_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M", "$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA"], "type": "m.room.history_visibility", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040879416, "hashes": {"sha256": "5fjW3b3NNT9ctK4rlUWwL0NxHRs0O9OLGfOt7YcUduA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hEsveGbAl0R9+WzBncmbJTGwyu9q4pucYb01d9VZuhPpHCXlgdjM3nPKKW9K8hECVTtdSD3Fx45HcM7VAvNCDg"}}, "unsigned": {"age_ts": 1570040879416}}s#eQ_u$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 676}{"auth_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M", "$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M"], "type": "m.room.join_rules", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040878875, "hashes": {"sha256": "KRh25geEnHNjeBZP/4T2vQO+v2GqhnOgHCTArDqD24Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vql2HQ5d/KvuDT33e9NUFk4eCsxDCO2Ee2XDC7B6wlDRO74e9RanrkHfu12BXL5PLet0LuG3sqpjhHLZdz3DQ"}}, "unsigned": {"age_ts": 1570040878875}}j"eQ_c$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 675}{"auth_events": ["$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "type": "m.room.power_levels", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"users": {"@anon-20191002_181700-156:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040877900, "hashes": {"sha256": "1O5cyqzF0l6MNRq22D694F5qf/hAX6Ie19PIRp5bKbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GinTkAp4SVXX1uyfgWJcNtg7EMnqCiplQi3cPkNZbm7hfEpB2lapSwxA4ds+80+bQOvb1J27R8P5FVq6UbRDCA"}}, "unsigned": {"age_ts": 1570040877900}} P( g  z  c  v ' :MbT`(;e)x<O_o PkMz]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800Mx]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800My]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800Mv]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800Mu]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800Mt]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800Ms]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:88006r/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800Mq]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800Mp]Q@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800Mo]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88006n/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800Mm]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800Ml]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800Mk]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800Md]Q@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800Mc]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800Mb]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800Ma]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800M`]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800M^]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800M]]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800M\]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800M[]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800MZ]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800MY]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800MX]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800MW]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800*MV]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800MU]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800MT]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800MS]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800MR]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800MQ]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:88006j/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800Mi]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:88006h/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800Mg]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800Mf]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800Me]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800 7J J BB B  D  D  D  F FFHHJJ J ?]!@anon-20191002_181700-250:localhost:8800HLUDALFTVRm{$?]!@anon-20191002_181700-207:localhost:8800FTYKIESLCCm^?]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLVmw?]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDOm}?]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDHmR?]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIFm?]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJm/?]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFOm.?]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWPm ?]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGHm I?]!@anon-20191002_181700-212:localhost:8800RTYZTLKABNm]?]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSMmތ?]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDFm{=[!@anon-20191002_181700-20:localhost:8800MIHVANNPDDm[?]!@anon-20191002_181700-209:localhost:8800LYXETIOPNTm4?]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEYmCZ -RM H C > 9 4/*|%w rmhc TTQe!MlzmtUYSZOiByAZdKx:localhost:8800$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYTSQe!MlzmtUYSZOiByAZdKx:localhost:8800$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuITRQe!MlzmtUYSZOiByAZdKx:localhost:8800$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcTQQe!MlzmtUYSZOiByAZdKx:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMTPQe!MlzmtUYSZOiByAZdKx:localhost:8800$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8TOQe!WjlTCJVOFJkanCtkFE:localhost:8800$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacTNQe!WjlTCJVOFJkanCtkFE:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oTMQe!WjlTCJVOFJkanCtkFE:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oTLQe!WjlTCJVOFJkanCtkFE:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboTKQe!WjlTCJVOFJkanCtkFE:localhost:8800$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaITJQe!WjlTCJVOFJkanCtkFE:localhost:8800$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8TIQe!WjlTCJVOFJkanCtkFE:localhost:8800$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUTHQe!WjlTCJVOFJkanCtkFE:localhost:8800$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYTGQe!WjlTCJVOFJkanCtkFE:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0TFQe!WjlTCJVOFJkanCtkFE:localhost:8800$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMTEQe!aBCvSXjtZUEPlPGHvY:localhost:8800$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGATDQe!aBCvSXjtZUEPlPGHvY:localhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0TCQe!aBCvSXjtZUEPlPGHvY:localhost:8800$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0TBQe!aBCvSXjtZUEPlPGHvY:localhost:8800$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcTAQe!aBCvSXjtZUEPlPGHvY:localhost:8800$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvET@Qe!aBCvSXjtZUEPlPGHvY:localhost:8800$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUT?Qe!aBCvSXjtZUEPlPGHvY:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4T>Qe!aBCvSXjtZUEPlPGHvY:localhost:8800$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIT=Qe!IMiczgkCTjejbnbeyP:localhost:8800$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwT<Qe!IMiczgkCTjejbnbeyP:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgT;Qe!IMiczgkCTjejbnbeyP:localhost:8800$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIT:Qe!IMiczgkCTjejbnbeyP:localhost:8800$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUT9Qe!IMiczgkCTjejbnbeyP:localhost:8800$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIT8Qe!IMiczgkCTjejbnbeyP:localhost:8800$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMT7Qe!IMiczgkCTjejbnbeyP:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssT6Qe!IMiczgkCTjejbnbeyP:localhost:8800$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMT5Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kT4Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkT3Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwT2Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gT1Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUT0Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4T/Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQT.Qe!awHAhLuEkavTGACcUW:localhost:8800$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUT-Qe!awHAhLuEkavTGACcUW:localhost:8800$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoT,Qe!awHAhLuEkavTGACcUW:localhost:8800$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQT+Qe!awHAhLuEkavTGACcUW:localhost:8800$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wT*Qe!awHAhLuEkavTGACcUW:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMT)Qe!awHAhLuEkavTGACcUW:localhost:8800$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMT(Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns 5 5u'eQ_y$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 680}{"auth_events": ["$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM"], "prev_events": ["$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM"], "type": "m.room.member", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-158", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-158:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040885244, "hashes": {"sha256": "QsmKgP4FLT+cWTUSfZ2DD7vQ3dYJPUrE7eJ7a/sKl+g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ilaxiIriUmGrQcJ5sZxtoT1ECUk7/0y8ux0bfFWwQM1f1SObq0rxMlAxzJ+0JUYDYfRgPhnwRKrIunt51CpGBQ"}}, "unsigned": {"age_ts": 1570040885244}}h&eQ__$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 679}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-158:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040884508, "hashes": {"sha256": "zjGAxJxgk0Bs1+MRWvL3qNenKAeidS2RwuBxLDAoXuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JAWqDZlv4bWTI8O8abB3VNj1S8WweJI6CUTQDVpk4E3Ob9/TMqtUzHCHRzKGOBt9vPxJZ1Nih5r5PTkcMymiDw"}}, "unsigned": {"age_ts": 1570040884508}}b%eQ_S$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 678}{"auth_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M", "$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE"], "type": "m.room.third_party_invite", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:35155/_matrix/identity/v2/pubkey/isvalid", "public_key": "znqYscU5jX2zho8VfhRqUTh0bOlkv463JmNHQL7FiSU"}, {"key_validity_url": "https://localhost.localdomain:35155/_matrix/identity/v2/pubkey/isvalid", "public_key": "laOn5X9FA0X6yw9ikXXWGm96/ZYAt90UU5r6HPxZmEw"}], "key_validity_url": "https://localhost.localdomain:35155/_matrix/identity/v2/pubkey/isvalid", "public_key": "znqYscU5jX2zho8VfhRqUTh0bOlkv463JmNHQL7FiSU"}, "depth": 6, "prev_state": [], "state_key": "8", "origin": "localhost:8800", "origin_server_ts": 1570040882120, "hashes": {"sha256": "85jzFGr/NTqxMKQohdgvijRpfOhe1F4MnebR3UA/5Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WbCHC+kzWqHmDTGcH00+H9+8TVQ9cAZlO0uJFY7B/zqDFsBXxLXilXp29C+LRjUUT/vZNJ5Q46lcMGHFFBt8Ag"}}, "unsigned": {"age_ts": 1570040882120}} RGG"[2 f * G  {  - a % V k /o3h'n.2uy9?E f%9N ]@anon-20191002_181700-187:localhost:8800a&\#M 1@14:localhost:8800a&\'L 1  @13:localhost:8800m&\h>K ] @anon-20191002_181700-186:localhost:8800m&\ b9J ]@anon-20191002_181700-186:localhost:8800a&\#I 1@13:localhost:8800a&\>H ]  @anon-20191002_181700-185:localhost:8800m&\9G ]@anon-20191002_181700-185:localhost:8800a&\>F ]  @anon-20191002_181700-184:localhost:8800m&\9E ]@anon-20191002_181700-184:localhost:8800a&\>D ]  @anon-20191002_181700-183:localhost:8800m&\C9C ]@anon-20191002_181700-183:localhost:8800a&\>B ]  @anon-20191002_181700-182:localhost:8800m&\C9A ]@anon-20191002_181700-182:localhost:8800a&\>@ ]  @anon-20191002_181700-181:localhost:8800m&\69? ]@anon-20191002_181700-181:localhost:8800a&\=> ]  @anon-20191002_181700-179:localhost:8800m&\V>= ]  @anon-20191002_181700-178:localhost:8800m&\y9< ]@anon-20191002_181700-179:localhost:8800a&\9; ]@anon-20191002_181700-178:localhost:8800a&\@8 ]@anon-20191002_181700-176:localhost:8800m&\.a99 ]@anon-20191002_181700-177:localhost:8800a&\ =: ] @anon-20191002_181700-177:localhost:8800m&\V97 ]@anon-20191002_181700-176:localhost:8800a&\=6 ]  @anon-20191002_181700-175:localhost:8800m&\H>5 ]  @anon-20191002_181700-174:localhost:8800m&\C94 ]@anon-20191002_181700-175:localhost:8800a&\93 ]@anon-20191002_181700-174:localhost:8800a&\>2 ]  @anon-20191002_181700-173:localhost:8800m&\91 ]@anon-20191002_181700-173:localhost:8800a&\#0 1@12:localhost:8800a&\#/ 1@11:localhost:8800a&\@. ]@anon-20191002_181700-170:localhost:8800m&\4&9- ]@anon-20191002_181700-170:localhost:8800a&\@, ]@anon-20191002_181700-169:localhost:8800m&\@)9+ ]@anon-20191002_181700-169:localhost:8800a&\>* ]  @anon-20191002_181700-168:localhost:8800m&\C9) ]@anon-20191002_181700-168:localhost:8800a&\&( /  @8:localhost:8800m&\#' 1@10:localhost:8800a&\>% ]  @anon-20191002_181700-167:localhost:8800m&\C'" /@7:localhost:8800m&\a9$ ]@anon-20191002_181700-167:localhost:8800a&\"# /@8:localhost:8800a&\>! ]  @anon-20191002_181700-165:localhost:8800m&\ 9 ]@anon-20191002_181700-165:localhost:8800a&\' / @6:localhost:8800m&\" /@7:localhost:8800a&\"& /@9:localhost:8800a&\> ]  @anon-20191002_181700-164:localhost:8800m&\>9 ]@anon-20191002_181700-164:localhost:8800a&\" /@6:localhost:8800a&\' /@5:localhost:8800m&\_> ]  @anon-20191002_181700-163:localhost:8800m&\|9 ]@anon-20191002_181700-163:localhost:8800a&\" /@5:localhost:8800a&\> ]  @anon-20191002_181700-162:localhost:8800m&\9 ]@anon-20191002_181700-162:localhost:8800a&\" /@4:localhost:8800a&\' / @3:localhost:8800m&\> ]  @anon-20191002_181700-161:localhost:8800m&\>9 ]@anon-20191002_181700-161:localhost:8800a&\& /  @2:localhost:8800m&\"" /@3:localhost:8800a&\> ]  @anon-20191002_181700-160:localhost:8800m&\>9 ]@anon-20191002_181700-160:localhost:8800a&\" /@2:localhost:8800a&\" /@1:localhost:8800a&\> ]  @anon-20191002_181700-158:localhost:8800m&\&9 ]@anon-20191002_181700-159:localhost:8800a&\9 ]@anon-20191002_181700-158:localhost:8800a&\ Nd>|A  Y  s L  t M  a & u :b'c<x=yRzST-i.jC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV$1%@32:localhost:8800guest_device8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO$1% @31:localhost:8800guest_device8]! @anon-20191002_181700-204:localhost:8800HOFBXQYKDH$~1% @30:localhost:8800guest_device8}]! @anon-20191002_181700-203:localhost:8800UCNLRVNQIF$|1% @29:localhost:8800guest_device8{]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO$z1%@28:localhost:8800guest_device8y]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU$x1%@27:localhost:8800guest_device8w]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW$v1%@26:localhost:8800guest_device8u]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS$t1%@25:localhost:8800guest_device8s]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ$r1%@24:localhost:8800guest_device8q]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ$p1%@23:localhost:8800guest_device8o]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8n]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD$m1%@22:localhost:8800guest_device8l]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA$k1%@21:localhost:8800guest_device8j]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ$i1%@20:localhost:8800guest_device8h]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM$g1%@19:localhost:8800guest_device8f]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT$e1%@18:localhost:8800guest_device8d]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ$c1%@17:localhost:8800guest_device8b]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ$a1%@16:localhost:8800guest_device8`]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB$_1%@15:localhost:8800guest_device8^]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF$]1%@14:localhost:8800guest_device8\]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN$[1%@13:localhost:8800guest_device8Z]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8Y]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8X]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8W]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8V]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH8U]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8T]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8S]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8R]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8Q]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8P]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8O]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY$N1%@12:localhost:8800guest_device$M1%@11:localhost:8800guest_device8L]!@anon-20191002_181700-170:localhost:8800SULWIONTNX8K]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8J]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW$I1%@10:localhost:8800guest_device#H/%@9:localhost:8800guest_device!G/!@8:localhost:8800SPYUTHBEKD8F]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ#E/%@8:localhost:8800guest_device8D]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE#C/%@7:localhost:8800guest_device8B]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ#A/%@6:localhost:8800guest_device8@]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL#?/%@5:localhost:8800guest_device8>]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF#=/%@4:localhost:8800guest_device8<]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN#;/%@3:localhost:8800guest_device8:]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD#9/%@2:localhost:8800guest_device#8/%@1:localhost:8800guest_device87]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN86]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV /]|o- X ]  > Ck$|:Vaa3eQ' $7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800m.room.createn2eQ?$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8m1eQ? $XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibilitye0eQ/ $SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rulesg/eQ3 $VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels .eQ']$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800joina-eQ' $8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.createaGeQ' $ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.createvFeQ'/$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800joingEeQ3 $_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_accessmDeQ? $2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibilityeCeQ/ $p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rulesgBeQ3 $jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels AeQ']$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800joina@eQ' $kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800m.room.createv?eQ'/$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800joing>eQ3 $_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_accessm=eQ? $Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibilitye<eQ/ $h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rulesg;eQ3 $RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels :eQ']$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800joina9eQ' $DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.createn8eQ?$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9m7eQ? $rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibilitye6eQ/ $Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rulesg5eQ3 $G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels 4eQ']$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800join  *eQ_$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 683}{"auth_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w", "$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ"], "type": "m.room.history_visibility", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040887805, "hashes": {"sha256": "rr0agqRLl0hJOkYV9yxjgkD3sYn3C3TS4YKHBURaAxA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "92ZQ00O7hphFgOlxqjlElh1le11w2hvqGvSbpmUwEa75yHu2gvLLg2YsZ9i7ETu6OrYvV39u16asaGqDav/4CQ"}}, "unsigned": {"age_ts": 1570040887805}}s)eQ_u$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 682}{"auth_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w", "$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w"], "type": "m.room.join_rules", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040887190, "hashes": {"sha256": "UkG0gTyr8XyjGpoEBUJd6a2/KeO+umxzsijj8vzAXpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XynP6mcvdXltKZnoktP8Fkjd10yibUOP7vuuklUo+HFEsnegsbJff8GF05D2pqIolDuk3BvO8MtAlsJi53/NAg"}}, "unsigned": {"age_ts": 1570040887190}}j(eQ_c$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 681}{"auth_events": ["$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "type": "m.room.power_levels", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"users": {"@anon-20191002_181700-158:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040886123, "hashes": {"sha256": "rVwzE2ayxWM19M6zwVL1SSw78iEdJDXO9C+sCLgNF0k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gOlu5y7AM3DEfhP8u2sunuG26yqav1OjKKNfjTTEz7QrM3vc6MoyQiDZBLawCwS5umZyuDFK5wnfhHl+YX9ZCg"}}, "unsigned": {"age_ts": 1570040886123}} ~z v r n j fb^ZVRNJF{eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800zeeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!WjlTCJVOFJkanCtkFE:localhost:8800yeeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800xeeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800weeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800veeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800ueeQ$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800teeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800seeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800reeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800qeeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800peeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800oeeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800neeQ$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800meeQ$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800leeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800keeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800jeeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800ieeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800heeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800geeQ$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800feeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800eeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800deeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800ceeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800beeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800aeeQ$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800`eeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800_eeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800^eeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800 e*gN5pH Y2 mE m E   W /  jkC B  z R *  b : rJ"Z2 kDY2 kC'Q!CKNftKKCaOCVUyYWNY:localhost:8800{3!11:localhost:4245503!10:localhost:42455.'Q!DSFBpkqfnvBQbGoMUK:localhost:8800''Q!DSFBpkqfnvBQbGoMUK:localhost:8800&1!9:localhost:42455,1!9:localhost:42455-3!10:localhost:42455/3!11:localhost:424551'Q!CAGaRyRvrohDRBsrWH:localhost:8800q'Q!BPNyKqmwcpGxIbGFZG:localhost:8800h'Q!BPNyKqmwcpGxIbGFZG:localhost:8800g'Q!BKZJsoFNhiLTDYNclB:localhost:8800Z'Q!BKZJsoFNhiLTDYNclB:localhost:8800Y'Q!ELBgBaMSIMNkjFSumH:localhost:8800|'Q!ABHbfUdkHCJksMsaUt:localhost:8800K'Q!DntdfAPfCfgdOoRMdl:localhost:8800J3!13:localhost:4245593!13:localhost:4245583!13:localhost:4245573!12:localhost:4245563!12:localhost:4245553!11:localhost:424552x'Q!HXfrGcvJCbRItyQLVE:localhost:8800V'Q!HXfrGcvJCbRItyQLVE:localhost:8800U'Q!HXfrGcvJCbRItyQLVE:localhost:8800T'Q!HWTlaNxUKnDsrtlOxU:localhost:88001'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800h&Q!HIZTeBCxvpMSpcqGVD:localhost:8800g&Q!GwXGurbyEmykmmHcHJ:localhost:8800K'Q!GwLdUoDplyVUogXDzu:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800^&Q!GiSxJsKZhQVHBkrVPn:localhost:8800]&Q!GiSxJsKZhQVHBkrVPn:localhost:8800\&Q!GgUNbVXspVTpOlaHBl:localhost:8800C'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800 'Q!EWkoFeckhXlNyjuIEB:localhost:8800 'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800%'Q!DnUHoxreGexNmjSVpq:localhost:8800$'Q!CkNvQnbApPIcuKygDk:localhost:8800"&Q!CgVBWWcRJoHEcwoLcq:localhost:8800I&Q!CQKLQUpSYakhxVDltC:localhost:8800M&Q!CQKLQUpSYakhxVDltC:localhost:8800L'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800H'Q!BpTqIemsWFZIqTcgJO:localhost:8800P'Q!BpTqIemsWFZIqTcgJO:localhost:8800O'Q!BpTqIemsWFZIqTcgJO:localhost:8800N'Q!BoyzlWNkRPncpDjBDg:localhost:8800G&Q!BkzROHxDAfKIzYpmPV:localhost:8800Y&Q!BkzROHxDAfKIzYpmPV:localhost:8800X'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800~&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800&Q!AjjrNwXmPTCruHxaJq:localhost:8800[&Q!AjjrNwXmPTCruHxaJq:localhost:8800Z'Q!AYFqrmxwClFQlcTTYq:localhost:8800&Q!AWfbViAZparIjmDaVT:localhost:8800&'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800\'Q!AMLmLqizBFklpqKibP:localhost:8800['Q!AMLmLqizBFklpqKibP:localhost:8800Z1!6:localhost:424551!6:localhost:424551!5:localhost:424551!5:localhost:424551!0:localhost:424551!0:localhost:42455 ^oG Y1 lE=`8pH! Z 3 e m E  } V /   g ?  x P ( -a:uN'_}UG'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800W'Q!KetCYFxrTxawNOGnOf:localhost:8800H'Q!KetCYFxrTxawNOGnOf:localhost:8800G'Q!JiUawCFQnodcpssOfK:localhost:8800F'Q!JiUawCFQnodcpssOfK:localhost:8800E'Q!NgkQVVUNzoyCVPtckM:localhost:8800D'Q!NgkQVVUNzoyCVPtckM:localhost:8800C'Q!PUIxAaiCnbqaVbawGu:localhost:8800@'Q!PUIxAaiCnbqaVbawGu:localhost:8800?'Q!OJilSqnQvLgoXSqRaW:localhost:8800>'Q!OJilSqnQvLgoXSqRaW:localhost:8800='Q!PVyTvKbqnjSXfGWAMy:localhost:8800:'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800j&Q!IMiczgkCTjejbnbeyP:localhost:8800i'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800*&Q!IGVHKYcSuxzVPlFHlj:localhost:8800)'Q!HusOrLtWZTLbmQZxmm:localhost:8800S'Q!HusOrLtWZTLbmQZxmm:localhost:8800R'Q!HusOrLtWZTLbmQZxmm:localhost:8800Q'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800H(&Q!HcMGemcRrLnLprOJJR:localhost:8800G'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800w'Q!IYxUkyFHOgvhLpdkOA:localhost:8800XP'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800&Q!OqPpVlCwmKdAUlwrXI:localhost:8800e&Q!OaCEdDAiatpwYcagUb:localhost:8800#&Q!OaCEdDAiatpwYcagUb:localhost:8800"&Q!OaCEdDAiatpwYcagUb:localhost:8800!'Q!OXpGdKbowFUTChPdmF:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800''Q!OCEHAjcOXWNyWIESIS:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800P'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800@'Q!NboFFVLpJHTeuUKCjM:localhost:8800!'Q!NboFFVLpJHTeuUKCjM:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800}'Q!MqstbCLZIQFiYNHrqR:localhost:8800|&Q!MlzmtUYSZOiByAZdKx:localhost:8800n&Q!MlzmtUYSZOiByAZdKx:localhost:8800m'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800-'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800x'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800&Q!JusxqeECtidaPlWqhp:localhost:8800c&Q!JusxqeECtidaPlWqhp:localhost:8800b'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800B'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800t'Q!IZkczIYykpZDvjuUWn:localhost:8800r 5 5u-eQ_y$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 686}{"auth_events": ["$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ"], "prev_events": ["$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ"], "type": "m.room.member", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-160", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-160:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040893805, "hashes": {"sha256": "YYzpPJ6Rh9pCwiLZS73suw4q9P6MwJ9kmmVd71dVAOE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T921j6dz3iumHqKb02sY+tjwuSraAy/o5qmbSXo/ygvf/MgHsqL4VOTg8AI1+tiDWPuE+lG6Petehb3/7++1BA"}}, "unsigned": {"age_ts": 1570040893805}}h,eQ__$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 685}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-160:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040892768, "hashes": {"sha256": "DE1nsBnjt6uE3FWN3w/zV/xqCPM8JHpo+NabjAIUM44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J0r0mvtthXpR/uehY8DPh0FEISx72qjcgAcqkK3yDET/7LsU/Nb6CnmShzR7DiESogQJg4O9mVSSHhOFW33wBQ"}}, "unsigned": {"age_ts": 1570040892768}}b+eQ_S$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 684}{"auth_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w", "$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo"], "type": "m.room.third_party_invite", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"public_key": "s73MN4eaZx2KiDL6af1TGAQOQGZLP+BOL6yTDyNz8MM", "key_validity_url": "https://localhost.localdomain:43041/_matrix/identity/v2/pubkey/isvalid"}, {"public_key": "JWek1+rpJhGZjB4vSYETfkr2AEnsv1G5ZrIYtVijbR4", "key_validity_url": "https://localhost.localdomain:43041/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:43041/_matrix/identity/v2/pubkey/isvalid", "public_key": "s73MN4eaZx2KiDL6af1TGAQOQGZLP+BOL6yTDyNz8MM"}, "depth": 6, "prev_state": [], "state_key": "9", "origin": "localhost:8800", "origin_server_ts": 1570040889027, "hashes": {"sha256": "XGWP9BVnc3zT07sAeV8bwAhEenLyE9xsA0qZcjg+7Pw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8UaeFb9oJKincuxT+OUR+pXwzjesIZ34wlpLhXV+09/VKjqnDPvtJkSpyi0yh7tgY91ks7hgq6UjsYtECmf8Ag"}}, "unsigned": {"age_ts": 1570040889027}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1ue$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81te$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1se$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1re$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1qe$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1pe$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1oe$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1ne$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41me$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1le$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1ke$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1je$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1ie$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1he$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1ge$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1fe$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81ee$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81de$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1ce$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41be$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1ae$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1`e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1_e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41^e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1]e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1\e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41[e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1Ze$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1Ye$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01Xe$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1We$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1Ve$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1Ue$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1Te$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1Se$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1Re$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1Qe$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1Pe$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1Oe$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1Ne$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1Me$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1Le$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81Ke$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1Je$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1Ie$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1He$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1Ge$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81Fe$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1Ee$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1De$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01Ce$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM1Be$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1Ae$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01@e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01?e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1>e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1=e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1<e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41;e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1:e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw19e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg18e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI17e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU16e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII15e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM14e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss13e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM12e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k11e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk10e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1/e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1.e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1-e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41,e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1+e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU 9 p a  I8qUC9 e]]Q=$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM@anon-20191002_181700-170:localhost:8800@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800joinanon-20191002_181700-170C8 e]]Q=$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60@anon-20191002_181700-170:localhost:8800@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800joinanon-20191002_181700-170C7 e]]Q=$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800joinanon-20191002_181700-169C6 e]]Q=$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800joinanon-20191002_181700-169C5 e]]Q=$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800joinanon-20191002_181700-169C4 e]]Q=$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs@anon-20191002_181700-168:localhost:8800@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800joinanon-20191002_181700-168~3 e//Q$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8@8:localhost:8800@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800join8C2 e]]Q=$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y@anon-20191002_181700-167:localhost:8800@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800joinanon-20191002_181700-167~1 e//Q$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4@7:localhost:8800@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800leave~0 e//Q$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg@7:localhost:8800@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800join7C/ e]]Q=$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM@anon-20191002_181700-166:localhost:8829@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800joinanon-20191002_181700-166C. e]]Q=$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU@anon-20191002_181700-165:localhost:8800@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800joinanon-20191002_181700-165- e//Q$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg@6:localhost:8800@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800joincreeper~, e//Q$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog@6:localhost:8800@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800join6C+ e]]Q=$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM@anon-20191002_181700-164:localhost:8800@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800joinanon-20191002_181700-164~* e//Q$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o@5:localhost:8800@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800leave~) e//Q$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo@5:localhost:8800@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800join5C( e]]Q=$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0@anon-20191002_181700-163:localhost:8800@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800joinanon-20191002_181700-163C' e]]Q=$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4@anon-20191002_181700-162:localhost:8800@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800joinanon-20191002_181700-162~& e//Q$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg@3:localhost:8800@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800join3C% e]]Q=$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss@anon-20191002_181700-161:localhost:8800@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800joinanon-20191002_181700-161~$ e//Q$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k@2:localhost:8800@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800join2C# e]]Q=$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4@anon-20191002_181700-160:localhost:8800@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800joinanon-20191002_181700-160  z1eQ_$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 690}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw"], "type": "m.room.guest_access", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040897323, "hashes": {"sha256": "R/APGo6JRIdcMx1A/sOOHI0yEE8DN8buur/ST8YFfNg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPpsnMLox3FrMfId98Bt9RfC/hGtUj1pA6pbEK8bXb9MXZc5th6usHjR8MjfjyEd/a4gaaw7siikKtbzVQ4LDQ"}}, "unsigned": {"age_ts": 1570040897323}}0eQ_$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 689}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g"], "type": "m.room.history_visibility", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040896265, "hashes": {"sha256": "jyWzlqV38CnPrTRjwwFCJU2Tr5rfMdMa2FUbF8ldsDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uNuf8yEkHLvaAqNS1dv3q797ekNyWliJfbU9b7O9HxpTR2cGEsuP6Tu8do+3E9BX/i9NPAFBwLYt8yHlmWx3AQ"}}, "unsigned": {"age_ts": 1570040896265}}s/eQ_u$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 688}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU"], "type": "m.room.join_rules", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040895330, "hashes": {"sha256": "AuxGMlU9I+ATGpMUnqRHA1ooQx/MCrP5a3siu4hJIAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UVFesMJYil3zqB0amAHaZrEe/QysxCkp0zCEXPweSWQgipdT4azuOl3QrAMIIyCpNkBytzSjAnSi4w4VbGxQAQ"}}, "unsigned": {"age_ts": 1570040895330}}j.eQ_c$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 687}{"auth_events": ["$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "type": "m.room.power_levels", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"users": {"@anon-20191002_181700-160:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040894616, "hashes": {"sha256": "lRCZinzImwNU4xKh7Qqbx/gO7DhBBHU1cvumFVK1sIg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W3qBH64TBxrITRFjvvF8VI9SdFmE5Ea6ovquFu08DfVobx6sMVfwo8vhP3yDe9gngnr3Lez9T7vvENjsSIQrDQ"}}, "unsigned": {"age_ts": 1570040894616}}  t dTD ]c!E@anon-20191002_181700-164:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgoGPCCYGLLRJ127.0.0.1Perl + Net::Async::HTTP/0.44mEx /]%E@5:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAyMDFPRDZYNmhzJiZkai53CjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgPZ5hdnk3FstSSp8kf0DgtiUvX3xsJfAkKe2wDarudX8Kguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m8 ]c!E@anon-20191002_181700-163:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgoIWJPSDUPWL127.0.0.1Perl + Net::Async::HTTP/0.44m'x /]%E@4:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBWZzZraVB-XnJ1emI9TC5ACjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUg5NsSLwWAfmVU5_yZd-FdLBRssM7Om4a05_zqOuOY1ycKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m"]c!E@anon-20191002_181700-162:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwoPCGWJXGQXF127.0.0.1Perl + Net::Async::HTTP/0.44m x/]%E@3:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDM6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzSzhKUV4mcUtASkBCYUhsCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgrveDuRq97DeRCmk50DpZAFTVqh_77ueJH23PsBB8K3cKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mŃ]c!E@anon-20191002_181700-161:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgoEYZNWDJKKN127.0.0.1Perl + Net::Async::HTTP/0.44m詂x/]%E@2:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBoWWlYb2h1R2kqN1crQjUxCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgHpgk2vQ0DD-k7UWviF0jEnMlkDFqd-Xn_UAauehqWo8Kguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m޵]c!E@anon-20191002_181700-160:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgoRSEHRUSFUD127.0.0.1Perl + Net::Async::HTTP/0.44mx/]%E@1:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBILWZqUE89REFCbywjQVVDCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUg8ZO9wx6wxEiQt9dWUnClqLyWpIT77ZqZu670k0ka4MQKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mȫ H_j8q? w F  ~ L  ' R  X & _ -3Yl:_r@xF~LS!1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 z1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig y1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU P1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs 41e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprky1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw\1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk31e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ61e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Sot21e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQu1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30sle21e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc C1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8}0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAY1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT801e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA 21e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAF1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4 1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4{1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xsg1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wH1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 61e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw=1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s00e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgc1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E`1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0M1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun40e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo[1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 K1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IB1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I Q1hXH8(l C W  h x(x^ ^ k x ' 4 O]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800~O]Q@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800}O]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800QN[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800O]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800uP]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800P]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800P]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800O]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800eO]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800fO]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800gO]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800iO]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800lO]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800kO]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800oO]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800mO]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800qO]Q@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800pO]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800tO]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800vO]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800sO]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800|O]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800{O]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800zO]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800yO]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800xN[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800M[Q @anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800P]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800P]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800P]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800P]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800P]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800P]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800P]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800P]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800P]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800P]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800P]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800P]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800P]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800P]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800 a} { y w u sqomkigeca~eeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~ eeQ$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~ eeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800~ eeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~ eeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~ eeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~~eeQ$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~}eeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800~|eeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~{eeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~zeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~yeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~xeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~weeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~veeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800  l j5eQ_c$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 694}{"auth_events": ["$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "type": "m.room.power_levels", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"users": {"@anon-20191002_181700-161:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040901607, "hashes": {"sha256": "wqMXNggXtobrEHMT9PkWZayLs/1GK4Rr4o9wl7EHI+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njL2TvVAXq3FUELdSJRhluKN5kLDE44OuQHDOcFEKSAqd1chu13kGxeW0bIImtjnZ7WBPt6nXAvUNYnThVQ0DA"}}, "unsigned": {"age_ts": 1570040901607}}u4eQ_y$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 693}{"auth_events": ["$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM"], "prev_events": ["$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM"], "type": "m.room.member", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-161", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-161:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040901003, "hashes": {"sha256": "e13x+TA2L6Gsmy4y3YnqUaxHoqmHk3b3Bcw7lYVcY/I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DcG/DRgYs1Gqw/+eW+vnyOwdRBMbAnbY4zwTsbI+0KoPni2E6tBhfehbvPw07tTMyaAbMEmZqkKt2PVJqD6jDA"}}, "unsigned": {"age_ts": 1570040901003}}h3eQ__$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 692}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-161:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040899843, "hashes": {"sha256": "V1Czhl+b4jOhUuNJhkv5BrH8V+SbcDkIpIdKXeKNjAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M0B9vtGoLaHK3XTvyxdvjvtwzFqOt5TRBgZIje3MaN0VPNTTIzpElKWIbzfvlV3AUij/AohsT9Y3BIzaxYv0Bg"}}, "unsigned": {"age_ts": 1570040899843}}2eQ=Q$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800{"stream_ordering": 691}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g"], "prev_events": ["$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk"], "type": "m.room.member", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@2:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "2", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@2:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040898168, "hashes": {"sha256": "WDK4VOYhi8rk98qsnXmVjviVcjneETOelYGMFQtVWWc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7pSwcOu5APy7nDv1qZUw4AoZSCGv3gutjii+aKju3+94SDCowq1WoMaxQGWf0GWK9H2yQlV8FNDi+x6arzb/CQ"}}, "unsigned": {"age_ts": 1570040898168}} gL_-  GSMs vm;'  P  | J5 D! VYA % a /jp>  8yg1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwA1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI 1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A41e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA 1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoi1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoh1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnog1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A41e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQT1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0G1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8j1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8i1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI 1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQU1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwB 21e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0H1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4g0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4f0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4e0e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQF0e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQE1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYI1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYH1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYG1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8k1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw=1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw<1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw;1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQE1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQD1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwC1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M21e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA 1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQj1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcQ1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQF1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIJ1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ G1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQk  d \u $ T LD< 4, m}eeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800 eeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800zeeQ$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800NeeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8!bkwyieHZwSMJfuSKvV:localhost:8800ՁeeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800eeQ$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800݁eeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800eeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800ԁeeQ$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800qeeQ$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800eeQ$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800ceeQ$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800eeQ$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800ԁeeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800 ɁeeQ$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800 &eeQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800| -RM H C > 9 4/*|%w rmhc TTQe!UyLoIXmzVFwycmBUeh:localhost:8800$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDoTSQe!lAGTcYIuMBXsVRGCOe:localhost:8800$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60QTRQe!WVzjUePHrzCjfyTbmK:localhost:8800$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8TQQe!UyLoIXmzVFwycmBUeh:localhost:8800$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMTPQe!lAGTcYIuMBXsVRGCOe:localhost:8800$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUTOQe!WVzjUePHrzCjfyTbmK:localhost:8800$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8ETNQe!WVzjUePHrzCjfyTbmK:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosTMQe!lAGTcYIuMBXsVRGCOe:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwITLQe!UyLoIXmzVFwycmBUeh:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgTKQe!WVzjUePHrzCjfyTbmK:localhost:8800$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4TJQe!lAGTcYIuMBXsVRGCOe:localhost:8800$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wTIQe!UyLoIXmzVFwycmBUeh:localhost:8800$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQTHQe!nteAxExBGJfaGIpuCx:localhost:8800$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0oTGQe!nteAxExBGJfaGIpuCx:localhost:8800$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkoTFQe!nteAxExBGJfaGIpuCx:localhost:8800$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tETEQe!nteAxExBGJfaGIpuCx:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsTDQe!nteAxExBGJfaGIpuCx:localhost:8800$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksTCQe!itKDOCtoMkFUETDtle:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8TBQe!itKDOCtoMkFUETDtle:localhost:8800$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8TAQe!itKDOCtoMkFUETDtle:localhost:8800$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukT@Qe!itKDOCtoMkFUETDtle:localhost:8800$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4T?Qe!itKDOCtoMkFUETDtle:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YT>Qe!itKDOCtoMkFUETDtle:localhost:8800$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYT=Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4T<Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYT;Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgT:Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoT9Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4T8Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMT7Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$CF04RdjpJ7K-mLsJyANRCJNCr6Jg55SLV1iHydG6OyUT6Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYT5Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0T4Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_MT3Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUT2Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQT1Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUT0Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwT/Qe!MlzmtUYSZOiByAZdKx:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgT.Qe!MlzmtUYSZOiByAZdKx:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogT-Qe!MlzmtUYSZOiByAZdKx:localhost:8800$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scT,Qe!MlzmtUYSZOiByAZdKx:localhost:8800$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYT+Qe!MlzmtUYSZOiByAZdKx:localhost:8800$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIT*Qe!MlzmtUYSZOiByAZdKx:localhost:8800$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcT)Qe!MlzmtUYSZOiByAZdKx:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMT(Qe!MlzmtUYSZOiByAZdKx:localhost:8800$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8 ]j9X># s X ' 1 c m < s X ' t C (_D{J/fKg6R!],h7sB.] @anon-20191002_181700-226:localhost:8800g.]@anon-20191002_181700-225:localhost:8800`.] @anon-20191002_181700-224:localhost:8800a.]@anon-20191002_181700-223:localhost:8800Y.] @anon-20191002_181700-222:localhost:8800Z.]@anon-20191002_181700-221:localhost:8800R.] @anon-20191002_181700-220:localhost:8800S.]@anon-20191002_181700-219:localhost:8800M.] @anon-20191002_181700-218:localhost:8800M.~] @anon-20191002_181700-217:localhost:8800L.}] @anon-20191002_181700-216:localhost:8800C.|] @anon-20191002_181700-215:localhost:8800B.{] @anon-20191002_181700-214:localhost:88008.z] @anon-20191002_181700-213:localhost:88007.y] @anon-20191002_181700-212:localhost:8800-.x] @anon-20191002_181700-211:localhost:8800,.w] @anon-20191002_181700-209:localhost:8800#.v]@anon-20191002_181700-210:localhost:8800.u] @anon-20191002_181700-208:localhost:8800t1 @34:localhost:8800.s] @anon-20191002_181700-207:localhost:8800r1 @33:localhost:8800.q] @anon-20191002_181700-206:localhost:8800p1 @32:localhost:8800.o] @anon-20191002_181700-205:localhost:8800n1 @31:localhost:8800.m] @anon-20191002_181700-204:localhost:8800l1 @30:localhost:8800.k] @anon-20191002_181700-203:localhost:8800j1@29:localhost:8800.i] @anon-20191002_181700-202:localhost:8800h1@28:localhost:8800.g] @anon-20191002_181700-201:localhost:8800f1@27:localhost:8800.e] @anon-20191002_181700-200:localhost:8800d1@26:localhost:8800.c] @anon-20191002_181700-199:localhost:8800b1@25:localhost:8800.a] @anon-20191002_181700-198:localhost:8800`1@24:localhost:8800._] @anon-20191002_181700-197:localhost:8800^1@23:localhost:8800.]]@anon-20191002_181700-196:localhost:8800.\] @anon-20191002_181700-195:localhost:8800[1@22:localhost:8800.Z] @anon-20191002_181700-194:localhost:8800Y1@21:localhost:8800.X] @anon-20191002_181700-193:localhost:8800W1@20:localhost:8800.V] @anon-20191002_181700-192:localhost:8800U1@19:localhost:8800.T] @anon-20191002_181700-191:localhost:8800S1@18:localhost:8800.R] @anon-20191002_181700-190:localhost:8800Q1 @17:localhost:8800.P] @anon-20191002_181700-189:localhost:8800O1 @16:localhost:8800.N] @anon-20191002_181700-188:localhost:8800tM1 @15:localhost:8800u.L] @anon-20191002_181700-187:localhost:8800iK1 @14:localhost:8800j.J] @anon-20191002_181700-186:localhost:8800_I1 @13:localhost:8800`.H] @anon-20191002_181700-185:localhost:8800U.G] @anon-20191002_181700-184:localhost:8800O.F] @anon-20191002_181700-183:localhost:8800I.E] @anon-20191002_181700-182:localhost:8800D.D] @anon-20191002_181700-181:localhost:8800?.C] @anon-20191002_181700-179:localhost:88009/@]@anon-20191002_181700-176:localhost:88000.A]@anon-20191002_181700-177:localhost:88000.B] @anon-20191002_181700-178:localhost:88007.?] @anon-20191002_181700-175:localhost:8800 .>] @anon-20191002_181700-174:localhost:8800.=] @anon-20191002_181700-173:localhost:8800<1@12:localhost:8800;1@11:localhost:8800/:]@anon-20191002_181700-170:localhost:8800/9]@anon-20191002_181700-169:localhost:8800.8] @anon-20191002_181700-168:localhost:880071@10:localhost:88006/@9:localhost:8800.5] @anon-20191002_181700-167:localhost:88004/ @8:localhost:8800.3] @anon-20191002_181700-165:localhost:88002/@7:localhost:8800.1] @anon-20191002_181700-164:localhost:88000/ @6:localhost:8800./] @anon-20191002_181700-163:localhost:8800./@5:localhost:8800.-] @anon-20191002_181700-162:localhost:8800,/@4:localhost:8800.+] @anon-20191002_181700-161:localhost:8800  * T~Isg:]!c@anon-20191002_181700-173:localhost:8800HMAAIYSKTYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAog9]!c@anon-20191002_181700-170:localhost:8800SULWIONTNXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwog8]!c@anon-20191002_181700-169:localhost:8800MFKRKTWRFRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAog7]!c@anon-20191002_181700-168:localhost:8800LFMVYJKZWWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9wo16/!%@8:localhost:8800SPYUTHBEKDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6NDg4WTJ5QVRXUGk5QXZKCjAwMmZzaWduYXR1cmUgvLzn0wH0-sfnWpaRwSxJHZ0wtTVPh2Z7w5K2gN3eocoKg5]!c@anon-20191002_181700-167:localhost:8800CZRBBMXBTZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwog4]!c@anon-20191002_181700-165:localhost:8800YDADSUNIXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgog3]!c@anon-20191002_181700-164:localhost:8800GPCCYGLLRJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgog2]!c@anon-20191002_181700-163:localhost:8800IWJPSDUPWLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgog1]!c@anon-20191002_181700-162:localhost:8800PCGWJXGQXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwog0]!c@anon-20191002_181700-161:localhost:8800EYZNWDJKKNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgo 'OgmB # oDqF H  % T<k@ P y e: L ! u J  s { i>) w Nc8 mB g*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SfYtaUhCFosNfHfUVm:localhost:8800nt*Q!SfYtaUhCFosNfHfUVm:localhost:8800ms*Q!SfYtaUhCFosNfHfUVm:localhost:8800kq*Q!SfYtaUhCFosNfHfUVm:localhost:8800io*Q!SfYtaUhCFosNfHfUVm:localhost:8800gm*Q!RmdhCjvouVLmyIHjaM:localhost:8800EE*Q!RmdhCjvouVLmyIHjaM:localhost:8800DD*Q!RmdhCjvouVLmyIHjaM:localhost:8800CC*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!RmdhCjvouVLmyIHjaM:localhost:8800HH*Q!RmdhCjvouVLmyIHjaM:localhost:8800GG*Q!RmdhCjvouVLmyIHjaM:localhost:8800FF*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!RmwbYvIIQyPlHlClty:localhost:8800w|*Q!RmdhCjvouVLmyIHjaM:localhost:8800II*Q!SBEprlZiuliFNSfNmz:localhost:8800mn*Q!RmwbYvIIQyPlHlClty:localhost:8800|*Q!RmwbYvIIQyPlHlClty:localhost:8800{*Q!SpXEytywhTbAftyVBr:localhost:88005'*Q!SBEprlZiuliFNSfNmz:localhost:8800rs*Q!SBEprlZiuliFNSfNmz:localhost:8800qr*Q!SBEprlZiuliFNSfNmz:localhost:8800pq*Q!SBEprlZiuliFNSfNmz:localhost:8800op*Q!SBEprlZiuliFNSfNmz:localhost:8800no*Q!SfYtaUhCFosNfHfUVm:localhost:8800ek*Q!SfYtaUhCFosNfHfUVm:localhost:8800ci*Q!SBEprlZiuliFNSfNmz:localhost:8800tv*Q!SBEprlZiuliFNSfNmz:localhost:8800su*Q!SBEprlZiuliFNSfNmz:localhost:8800st*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!RmwbYvIIQyPlHlClty:localhost:8800y~*Q!RmwbYvIIQyPlHlClty:localhost:8800x}*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SpXEytywhTbAftyVBr:localhost:88007)*Q!SpXEytywhTbAftyVBr:localhost:88008**Q!RmwbYvIIQyPlHlClty:localhost:8800z*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SpXEytywhTbAftyVBr:localhost:88006(*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SpXEytywhTbAftyVBr:localhost:88009+*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 V   6 n c]c@anon-20191002_181700-132:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQo127.0.0.1pc]c@anon-20191002_181700-131:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwo127.0.0.1oa[a@anon-20191002_181700-12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCg127.0.0.1 c]c@anon-20191002_181700-129:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAo127.0.0.1nc]c@anon-20191002_181700-128:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgo127.0.0.1m j 4 h 6jd]c@anon-20191002_181700-188:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAjPUM3bmpqTndOZnYrMUoKMDAyZnNpZ25hdHVyZSC_kz-E8YmMBNcAclPvn3n3UpiiaFAKSaPlBkz2lbFOAQo127.0.0.1d]c@anon-20191002_181700-187:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZHK005MFlxMkksc35acnoKMDAyZnNpZ25hdHVyZSB77-Jon2mI9xbF7QXvmsgb-UWL0tcYtDp9oWaY2oeTbQo127.0.0.1d]c@anon-20191002_181700-186:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG00TmlBRUNYaklfIzUxQy0KMDAyZnNpZ25hdHVyZSAhw-vznghM1qodIeuqnym4f7ESqx4RXazHU0ls-7TVmQo127.0.0.1d]c@anon-20191002_181700-185:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwo127.0.0.1d]c@anon-20191002_181700-184:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1Qo127.0.0.1d]c@anon-20191002_181700-183:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1Ao127.0.0.1d]c@anon-20191002_181700-182:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4go127.0.0.1d]c@anon-20191002_181700-181:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswo127.0.0.1d]c@anon-20191002_181700-179:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQo127.0.0.1 [}>!A*BuR. Z = " d G , n Q 1  T 7  o X yQ:Zz]5\E~?iI. |' m.room.create' m.room.create>']zm.room.member@anon-20191002_181700-156:localhost:8800|' ym.room.create{>']xm.room.member@anon-20191002_181700-155:localhost:8800z>']wm.room.member@anon-20191002_181700-155:localhost:8800y#?vm.room.third_party_invite7x"? um.room.history_visibilityw/ tm.room.join_rulesv3 sm.room.power_levelsu>']rm.room.member@anon-20191002_181700-154:localhost:8800t' qm.room.creates' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-168:localhost:8800' m.room.create''/m.room.member@8:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-167:localhost:8800' m.room.create''/m.room.member@7:localhost:88003 m.room.guest_access''/m.room.member@7:localhost:88003 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-166:localhost:8829>']m.room.member@anon-20191002_181700-166:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-165:localhost:8800' m.room.create''/m.room.member@6:localhost:8800''/m.room.member@6:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-164:localhost:8800' m.room.create''/m.room.member@5:localhost:88003 m.room.guest_access''/m.room.member@5:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-163:localhost:8800' m.room.create"? m.room.history_visibility%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-162:localhost:8800' m.room.create''/m.room.member@3:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-161:localhost:8800' m.room.create''/m.room.member@2:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-160:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-159:localhost:8800>']m.room.member@anon-20191002_181700-159:localhost:8800#?m.room.third_party_invite9"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-158:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-157:localhost:8800>']m.room.member@anon-20191002_181700-157:localhost:8800#?~m.room.third_party_invite8"? }m.room.history_visibility/ |m.room.join_rules~3 {m.room.power_levels} T % P ! u3} {R'X-/\1d9f; H w L y N # T)^Z b7`5  J  s 3 *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 x x*Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!ffijTnPMbTrDXHqOXf:localhost:8800cc*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fkvdYkesQOFCAQkzky:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 y y*Q!ffijTnPMbTrDXHqOXf:localhost:8800jj*Q!ffijTnPMbTrDXHqOXf:localhost:8800ii*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 { {*Q!fDISaqNBhlOwherxSt:localhost:8800 z z*Q!fkvdYkesQOFCAQkzky:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 | |*Q!ffijTnPMbTrDXHqOXf:localhost:8800ll*Q!ffijTnPMbTrDXHqOXf:localhost:8800kk*Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fsbkkRBZlUcBVVfMME:localhost:8800;;*Q!fsbkkRBZlUcBVVfMME:localhost:8800::*Q!fsbkkRBZlUcBVVfMME:localhost:880099*Q!fJXiUpbbOlLbHWmPgs:localhost:8800 =V*Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!ffijTnPMbTrDXHqOXf:localhost:8800dd*Q!fOJLpnbtgKNxxVDquX:localhost:8800ll*Q!fOJLpnbtgKNxxVDquX:localhost:8800kk*Q!fOJLpnbtgKNxxVDquX:localhost:8800jj*Q!fOJLpnbtgKNxxVDquX:localhost:8800ii*Q!fOJLpnbtgKNxxVDquX:localhost:8800hh*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fOJLpnbtgKNxxVDquX:localhost:8800nn*Q!fOJLpnbtgKNxxVDquX:localhost:8800mm*Q!fsbkkRBZlUcBVVfMME:localhost:8800>>*Q!fsbkkRBZlUcBVVfMME:localhost:8800==*Q!fsbkkRBZlUcBVVfMME:localhost:8800<< *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fuHSJcznvGQnoYoLPW:localhost:8800..*Q!fuHSJcznvGQnoYoLPW:localhost:8800--*Q!fuHSJcznvGQnoYoLPW:localhost:8800,,*Q!fuHSJcznvGQnoYoLPW:localhost:8800++*Q!fuHSJcznvGQnoYoLPW:localhost:8800***Q!fuHSJcznvGQnoYoLPW:localhost:8800))*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800 +*Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!fGkUEndqGrieltwbCh:localhost:8800  *Q!fGkUEndqGrieltwbCh:localhost:8800  *Q!fGkUEndqGrieltwbCh:localhost:8800  *Q!fGkUEndqGrieltwbCh:localhost:8800 *Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fGkUEndqGrieltwbCh:localhost:8800 *Q!fGkUEndqGrieltwbCh:localhost:8800 *Q!ffijTnPMbTrDXHqOXf:localhost:8800hh*Q!ffijTnPMbTrDXHqOXf:localhost:8800gg*Q!ffijTnPMbTrDXHqOXf:localhost:8800ff*Q!ffijTnPMbTrDXHqOXf:localhost:8800ee*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fdEymmlcUvjgshvVyl:localhost:8800 Mj8p> v D  | J  P 0T V $ \ *bh6n< tBzH"Z(NTd1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE 1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE 1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8m1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k}1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI 21e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI 11e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI 01e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550m1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550l1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Ud1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66IS1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ91e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ81e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ71e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ01e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ/1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ.1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUX1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUW1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUV1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUn1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUm1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUl1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA+1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA*1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd41e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd41e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd41e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE^ !Op% @ I l   x 6QCcFO Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUdQ' e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.create$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!Q'/ee!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826woguQ'/e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogjQ3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_access$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scpQ? e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibility$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYhQ/ e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rules$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIjQ3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc Q']e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMdQ' e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.create$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8Q3 ee!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!~Q'/ee!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbou}Q'/e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboj|Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIp{Q? e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibility$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8hzQ/ e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rules$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUjyQ3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY xQ']e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0dwQ' e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.create$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMvQ? ee!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0suQ))e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0ptQ? e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0hsQ/ e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rules$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcmrQ9 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_alias$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEjqQ3 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU pQ']e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4doQ' e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.create$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIunQ'/e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgjmQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_access$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIplQ? e!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibility$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUhkQ/ e!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rules$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIjjQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM iQ']e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss #&M V  . = k=Lz +R[peQ))$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800m eQ? $OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibilitye eQ/ $2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rulesj eQ9 $l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_aliasg eQ3 $eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels eQ']$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800aeQ' $ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.createreQ'/$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800reQ'/$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800geQ3 $cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_accessmeQ? $BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibilityeeQ/ $rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rulesgeQ3 $nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels eQ']$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800aeQ' $4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800m.room.creategeQ3 $M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accessr~eQ'/$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800r}eQ'/$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800g|eQ3 $EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accessm{eQ? $FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibilityezeQ/ $5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rulesgyeQ3 $J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels xeQ']$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800aweQ' $pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800m.room.createmveQ? $qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilitypueQ))$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800mteQ? $VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilityeseQ/ $wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rulesjreQ9 $5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_aliasgqeQ3 $poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels peQ']$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800aoeQ' $ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.createrneQ'/$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800gmeQ3 $_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_accessmleQ? $2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibility  9eQ=Q$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800{"stream_ordering": 698}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII"], "prev_events": ["$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI"], "type": "m.room.member", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@3:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "3", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@3:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040905373, "hashes": {"sha256": "OjrVnwo/ShMbMuHVCAY1Z+1eiEVbeyJODXcUvecZY9M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BZfEWpkEq4xOBqOOkL9/a+STSA+Dms/UVK2ZqzpALxTwjNuyaQhQ2V9ZiXxzs686v4RaX5zKsMr8zHauOW1jCg"}}, "unsigned": {"age_ts": 1570040905373}}z8eQ_$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 697}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU"], "type": "m.room.guest_access", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040904476, "hashes": {"sha256": "/EZxo+2GAfzeFkuiSx7AJmZoUwybyrAZwnD85vjMy3c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mc/QN82z3HFknIRSYh6Xbay9583jelIaotePdIT8FS7+INtgs7X1xrYDCwZDZ8GU66z5MKZy21GFWVKvkxoGAw"}}, "unsigned": {"age_ts": 1570040904476}}7eQ_$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 696}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII"], "type": "m.room.history_visibility", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040903116, "hashes": {"sha256": "xMzn6x+SirLy37sT/w9hXXFn2iOvHJcso6/JEhFeXWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D2mVTZtHimcpQslrhvA5OJptcd7s18pItRo5KvtlFg0qtCYjcb67yy80y7N2bMr1dRy6ploD4S3JQ0puX1UKAw"}}, "unsigned": {"age_ts": 1570040903116}}s6eQ_u$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 695}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM"], "type": "m.room.join_rules", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040902257, "hashes": {"sha256": "oTpcxpIPzu3ojtLTzsXkdGXVZkWzStyO5Cy5joGBshw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HVTX/tKckEWGgK6/J+7eVOAycRi/ev3nG7Byud6Xh27z/KVcMI4YMCkgkyjiHZn0XDrqasvy8wZWdHT7XXivBg"}}, "unsigned": {"age_ts": 1570040902257}} sC H K USCM,Qe?Q ]$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYm.room.history_visibility!MlzmtUYSZOiByAZdKx:localhost:8800mRmT@anon-20191002_181700-164:localhost:8800$Pe/Q ]$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIm.room.join_rules!MlzmtUYSZOiByAZdKx:localhost:8800mPMmQ@anon-20191002_181700-164:localhost:8800&Oe3Q ]$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcm.room.power_levels!MlzmtUYSZOiByAZdKx:localhost:8800mL2mN{@anon-20191002_181700-164:localhost:8800 Ne'Q ]$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMm.room.member!MlzmtUYSZOiByAZdKx:localhost:8800mImJ@anon-20191002_181700-164:localhost:8800M e'Q  ]$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8m.room.create!MlzmtUYSZOiByAZdKx:localhost:8800mFjmF@anon-20191002_181700-164:localhost:8800&Le3Q ]$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacm.room.guest_access!WjlTCJVOFJkanCtkFE:localhost:8800m<m@X@anon-20191002_181700-163:localhost:8800 Ke'Q /$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07om.room.member!WjlTCJVOFJkanCtkFE:localhost:8800m=qm>@5:localhost:8800 Je'Q /$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbom.room.member!WjlTCJVOFJkanCtkFE:localhost:8800m9qm9@5:localhost:8800&Ie3Q ]$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIm.room.guest_access!WjlTCJVOFJkanCtkFE:localhost:8800m6*m6@anon-20191002_181700-163:localhost:8800,He?Q ]$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8m.room.history_visibility!WjlTCJVOFJkanCtkFE:localhost:8800m1m3@anon-20191002_181700-163:localhost:8800$Ge/Q ]$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUm.room.join_rules!WjlTCJVOFJkanCtkFE:localhost:8800m/Am0@anon-20191002_181700-163:localhost:8800&Fe3Q ]$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYm.room.power_levels!WjlTCJVOFJkanCtkFE:localhost:8800m,m-@anon-20191002_181700-163:localhost:8800 Ee'Q ]$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0m.room.member!WjlTCJVOFJkanCtkFE:localhost:8800m*m+@anon-20191002_181700-163:localhost:8800D e'Q  ]$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMm.room.create!WjlTCJVOFJkanCtkFE:localhost:8800m'm(:@anon-20191002_181700-163:localhost:8800,Ce?Q ]$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAm.room.history_visibility!aBCvSXjtZUEPlPGHvY:localhost:8800m_m @anon-20191002_181700-162:localhost:8800!Be)Q ]$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0m.room.aliases!aBCvSXjtZUEPlPGHvY:localhost:8800mmf@anon-20191002_181700-162:localhost:8800,Ae?Q ]$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0m.room.history_visibility!aBCvSXjtZUEPlPGHvY:localhost:8800m&m@anon-20191002_181700-162:localhost:8800$@e/Q ]$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcm.room.join_rules!aBCvSXjtZUEPlPGHvY:localhost:8800mm@anon-20191002_181700-162:localhost:8800)?e9Q ]$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEm.room.canonical_alias!aBCvSXjtZUEPlPGHvY:localhost:8800m#m@anon-20191002_181700-162:localhost:8800&>e3Q ]$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUm.room.power_levels!aBCvSXjtZUEPlPGHvY:localhost:8800mm@anon-20191002_181700-162:localhost:8800 =e'Q ]$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4m.room.member!aBCvSXjtZUEPlPGHvY:localhost:8800mm2@anon-20191002_181700-162:localhost:8800< e'Q  ]$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIm.room.create!aBCvSXjtZUEPlPGHvY:localhost:8800m m d@anon-20191002_181700-162:localhost:8800 ;e)Q /$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwm.room.message!IMiczgkCTjejbnbeyP:localhost:8800mKm@3:localhost:8800 :e'Q /$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgm.room.member!IMiczgkCTjejbnbeyP:localhost:8800mm4@3:localhost:8800  Cj=eQ_c$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 702}{"auth_events": ["$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "type": "m.room.power_levels", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"users": {"@anon-20191002_181700-162:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040910075, "hashes": {"sha256": "7e/PnoiK/GQxHwyssoEKLuwaiJU7++qg9YxoB1cz00I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1iA3qwN9YnS8PeqqhNUHbnB7fgTficXRx3egIxRyZ+hUlFam/PavJklY5Xjfez050o6rP8ycck6GpceHGpDOAA"}}, "unsigned": {"age_ts": 1570040910075}}u<eQ_y$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 701}{"auth_events": ["$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI"], "prev_events": ["$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI"], "type": "m.room.member", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-162", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-162:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040909527, "hashes": {"sha256": "N/dTT8XoPsRu2QraA3wtULzBGsGyCjrIu4zVTJCk5ig"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P9tSHMt2wROKiCY8Ai/CpsANfVFPVobv9d4fjp1q8b8mNap0QuG4bZRAEKBGG5BRhVKjREzsrDlRh8H1jzltBA"}}, "unsigned": {"age_ts": 1570040909527}}h;eQ__$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 700}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-162:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040908686, "hashes": {"sha256": "5w+kEWFYsPGzEqO99+ZHtaT8xvfYAleecuAPmKw2bYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "icOOwbd5yvVAUGlFD4VhrtVEm54GvPsd0gufogZ/al5HhIBZZbH/OCE5CoESFXv+RTzM/BsA1GnqAbRN1a4bDQ"}}, "unsigned": {"age_ts": 1570040908686}}T:eQ]9$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw!IMiczgkCTjejbnbeyP:localhost:8800{"txn_id": "63", "stream_ordering": 699}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg"], "prev_events": ["$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg"], "type": "m.room.message", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@3:localhost:8800", "content": {"msgtype": "m.text", "body": "sup"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040906059, "hashes": {"sha256": "Jqd3EeWEqzgaN8dRB1gR97ylcgc0W3KGH/L4wWlDcVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cbsU4SbZivwarodAF0dx0CEURyTvpi/vZqdChr9LwR5kWXKoSNOLdW33NqSWCF+tZn1RQA3bW0udWqUV3ByTBA"}}, "unsigned": {"age_ts": 1570040906059}} {UFkr@9 I $ a :  w P ( ` :  t L $_7pH X0h@i8W%xMR921e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0;1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8v0e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIR1$3:localhost:424553$39:localhost:424553$38:localhost:424551e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c3$29:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU:1e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAG0e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY_1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd41e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$15:localhost:42455'Q$1570043754467mNKfq:localhost:8800Z'Q$1570043744459BIUYb:localhost:8800Y'Q$1570043715443SSqOY:localhost:8800V'Q$1570043683436iTOlZ:localhost:8800I'Q$1570043680434abJWo:localhost:8800H'Q$1570043670433bjAzo:localhost:8800F'Q$1570043664431IMLSL:localhost:8800E'Q$1570043660430kLPpN:localhost:8800D'Q$1570043588411PDBWG:localhost:88006'Q$1570043575399SiSKs:localhost:8800+'Q$1570043536368agmuM:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043468324DLhaB:localhost:8800 'Q$1570043392317hujur:localhost:8800&O$157004338812XhwjX:localhost:8829'Q$1570043380304caenp:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043341273LsXNn:localhost:8800'Q$1570043198272DGmin:localhost:8800'Q$1570043154263raEaa:localhost:8800&O$157004274411xArrT:localhost:8829%M$15700427368TlZQs:localhost:8829'Q$1570042729241UUSiz:localhost:8800'Q$1570042718224MBWNJ:localhost:8800'Q$1570042709214PwhVu:localhost:8800'Q$1570042700204CxVfq:localhost:8800'Q$1570042692194rxboZ:localhost:8800'Q$1570042683184TpChh:localhost:8800%M$15700426765pydev:localhost:8829%M$15700426692GLpqH:localhost:8829'Q$1570042662161lGrSW:localhost:8800'Q$1570042651145wBynt:localhost:8800'Q$1570042642135oMfQy:localhost:8800'Q$1570042632125lwdOR:localhost:8800'Q$1570042624115nZtIB:localhost:8800'Q$1570042615105OKfnm:localhost:8800&O$157004188598DcHDt:localhost:8800&O$157004187190ZLRgN:localhost:8800&O$157004185983tEalY:localhost:8800&O$157004184976eGgUf:localhost:8800 &O$157004183969fQFzs:localhost:8800&O$157004182060gAdxi:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004173511wRnRr:localhost:8800$M$15700403175seOtB:localhost:88001e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew10e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAu1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMO0e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM;1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc0e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg21e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEd1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB40e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kY M k9 }EwqX? TZ(a/ g 5  K; n < u C  | J    P V%]+c11121e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s\3$89:localhost:42455X0e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw 1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNoT0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw0e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w01e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegox1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAr1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokl1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsh1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAg1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rob1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA3$56:localhost:4245583$55:localhost:4245553$54:localhost:42455*3$53:localhost:42455 1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU3$49:localhost:424551e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE3$40:localhost:424551e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw0e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg^ 1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwG1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-MB1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC41e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0|1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zego0e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUX1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z81e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY=1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMD1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEL1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g>1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkW1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx81e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK090e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA0e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y)1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ1e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA1e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ00e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ob1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud41e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U<1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg21e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIQ1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYS0e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYV1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU#I$64_redaction2:localhost:42455C0e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$?$60_msg_e:localhost:424557 PFvh&8Vp@}M [ + e 5  s B  N  V $`.l: xFNZ(. Q  !zhCsYcaweVFJLLNwBz:localhost:8800%. Q  !zNCItZNbpkZKuufRhC:localhost:8800%. Q  !xwoIOPTGmJIlTXakxC:localhost:8800%. Q  !wvnfKBSrUlfNmYoeil:localhost:8800%. Q  !uxKymrHZeXRYCZwekU:localhost:8800%. Q  !scyFsXcUIJiLIMwWMY:localhost:8800%. Q  !sPWVGnipjiiWQpywNO:localhost:8800 %. Q  !plcvCHNbjCkNMMxnTk:localhost:8800%. Q  !odAvowLhHJcmkKlxFk:localhost:8800%. Q  !loalEsWaTYwrVUNJLr:localhost:8800%0 Q !jYzridjeihmwPBuwLb:localhost:8800%. Q  !aWJOsiuJONOvjKWEjO:localhost:8800%. Q  !QZhNrNpwObZGJZpdAG:localhost:8800%. Q  !NhWgOTYzEPRwAxRQvS:localhost:8800%. Q  !NZHpBquHDfJAjiawGk:localhost:8800%. Q  !LaLcEGFLpjdlYlYKGC:localhost:8800%. Q  !GixhPUMvtKSWoKRgvw:localhost:8800%. Q  !BDASLhdcKfNwxCTCSg:localhost:8800%0P Q!IMiczgkCTjejbnbeyP:localhost:8800%0O Q!HIZTeBCxvpMSpcqGVD:localhost:8800%.N Q  !awHAhLuEkavTGACcUW:localhost:8800%.M Q  !OqPpVlCwmKdAUlwrXI:localhost:8800%.L Q  !quaZwrGnzbNWhwAOYB:localhost:8800%0K Q!JusxqeECtidaPlWqhp:localhost:8800%0J Q !aWvVRVaDflYyyGTOdD:localhost:8800%/I Q !GiSxJsKZhQVHBkrVPn:localhost:8800 %0H Q!AjjrNwXmPTCruHxaJq:localhost:8800 %0G Q !BkzROHxDAfKIzYpmPV:localhost:8800 %/F Q !WWZVpyLeZfyfpWidLx:localhost:8800 %0E Q!XIqmzIFbkHGQPIpywk:localhost:8800 %.D Q  !lMRBkbYJDQHgdBZBFJ:localhost:8800%0C Q !cHtqiAyCHEAoBIbCmL:localhost:8800 %.B Q  !OBWkjfrDCNgYFfblia:localhost:8800%.A Q   !ntuwVdUxfzNIhIKYaz:localhost:8800 %0@ Q!CQKLQUpSYakhxVDltC:localhost:8800%.> Q  !VWYMJxEviBNDdJCuKT:localhost:8800%.? Q  !GwXGurbyEmykmmHcHJ:localhost:8800%.= Q  !CgVBWWcRJoHEcwoLcq:localhost:8800%0< Q!HcMGemcRrLnLprOJJR:localhost:8800%0; Q!SyIWYOmcGiASNkPCTB:localhost:8800%.: Q  !msMfSdLIAvklSSAnci:localhost:8800%.9 Q  !GgUNbVXspVTpOlaHBl:localhost:8800%08 Q!eKrOqiOabJcMgIJjwC:localhost:8800%07 Q!vVmSdclwPIqYDbnmPn:localhost:8800%06 Q!edbUkYJIZBNOiTuLJs:localhost:8800%05 Q!VAEDgDJVqmxXZyAlSW:localhost:8800 %04 Q!eySSVuCclRpBDgwKIU:localhost:8800%03 Q!fJXiUpbbOlLbHWmPgs:localhost:8800 %02 Q !oXKJArsPmtgaYANBrg:localhost:8800 %.1 Q  !egCvzKpbEwmuvDoBTb:localhost:8800%00 Q!XgobMgBjNcDRJnRXLD:localhost:8800%0/ Q!wIhMbfQzYbJobPdwyi:localhost:8800%.. Q  !cSUQGmpIsSCBAVTOHo:localhost:8800%.- Q  !SBEprlZiuliFNSfNmz:localhost:8800%., Q  !KxhGcTbEWmtgGNpdox:localhost:8800%/+ Q!HmkcAMkMjWRhTDJMsy:localhost:8800d/* Q!OMkiVTuuOEeiFAXtUY:localhost:8800[/) Q!BrssELMbasSzTFpIXm:localhost:8800R.( Q   !RmdhCjvouVLmyIHjaM:localhost:8800%.' Q   !EyEaTZElOkdURKbEXo:localhost:8800%.& Q   !TWETXUgfFZafDdbqLS:localhost:8800%.% Q  !HAFNBarGuVZuWCgwWM:localhost:8800%0$ Q!duCKuavMBSfRbTFPsc:localhost:8800%0# Q!TleKOyAElrpgyyrAQA:localhost:8800%0" Q!IGVHKYcSuxzVPlFHlj:localhost:8800%.! Q  !xhbvqJDfxMSsZPqvld:localhost:8800%. Q  !OSHhtkGUjpUCkXwIhj:localhost:8800%. Q  !AWfbViAZparIjmDaVT:localhost:8800%. Q  !wnriPzXkIMmdTNoJKU:localhost:8800%. Q  !jfshVGNDxkvqPxFxWB:localhost:8800%0 Q!OaCEdDAiatpwYcagUb:localhost:8800 %. Q  !GGTWnzJfvPQBgQqDIE:localhost:8800%/ Q !cosGKKhHvKaVukBCic:localhost:8800%0 Q!rZWweGEChkxxtzyfDB:localhost:8800%. Q  !uJtKGXTNdEnCPNOGDx:localhost:8800%. Q  !vJQYmOxOBLwFKzYkNj:localhost:8800%. Q  !kkgEEVUJynguTqAoWD:localhost:8800%. Q  !dUnULFLGtgaVdwHtnz:localhost:8800%. Q  !aWbcZNVBalJilCEsdr:localhost:8800%. Q  !kxTDuIasPNpXtiRsif:localhost:8800% On= K{  ] * h 8  t B  | L  \ ,l:rBwFQ \+_,f5m <00 Q !bzPCFeFSMbCESvNbxl:localhost:8800%. Q  !nxLxsxzliamzflrEBs:localhost:8800%. Q  !RPfffkmSEbWggEjnoI:localhost:8800%. Q !PCgUmZOwWmtDsuFqXg:localhost:8800,0 Q !egbhiBqOGhloZzopol:localhost:8800%. Q   !KdOYYnOuwAyQzqwUki:localhost:8800%0 Q!XNfwczePlyYFWLCaui:localhost:8800%. Q   !PQZMTVTeCYqMZwkHvW:localhost:8800%. Q   !kpTPWDZdBbbXKLonZK:localhost:8800%. Q   !ITdmSQpjMnaPoHIbws:localhost:8800%. Q  !FAYqpziHeVZugCGaij:localhost:8800%0 Q!ZaOktTIVeRgBXxfubH:localhost:8800%0 Q!ZaltdIYVZjCHsCWTZD:localhost:8800%0 Q!kwXxkGQFkaeenFTQJr:localhost:8800%0 Q!EMhFCPhwmnWVnjtXXM:localhost:8800%0 Q!GGXyLHdVXqhQjPRvac:localhost:8800%0 Q!IfYYyzLHSOeyJBxBfn:localhost:8800%. Q  !ZYKvjplZRyIWvzkRyM:localhost:8800%. Q   !ROoilpDjLJfjKfSPIi:localhost:8800%. Q  !wsvXTJXouVkEZcCFsD:localhost:8800%. Q  !DoiZErAdypBUMZKaeJ:localhost:8800%. Q  !qSUSLLWjDxcGibUZdT:localhost:8800%. Q  !RmwbYvIIQyPlHlClty:localhost:8800%. Q  !SvKwEALYoNreUvqAlp:localhost:8800%. Q  !fOJLpnbtgKNxxVDquX:localhost:8800%. Q  !vAUAIZrCnHTeMGeNuw:localhost:8800%. Q  !EfJcWhdjNARbuHYrqU:localhost:8800%. Q  !vRRNxNyGboLHNhqQvr:localhost:8800%. Q  !NFWKQvZkIwvecnREOC:localhost:8800%0 Q!IPYMCBwcyNIzqdiIWv:localhost:8800%0 Q!HZqzpRgqekPOtxstVc:localhost:8800%0 Q!FklhVuCInffbDxunWv:localhost:8800%0 Q!eJPTUgihvSwaOhIkrC:localhost:8800%.~ Q  !sfXbvAcOUJhzGwWEpZ:localhost:8800%0} Q!YufaOfAlruTdjyUCwO:localhost:8800%0| Q!ifQxHmNAcSSGHVMjfi:localhost:8800%0{ Q!EABRjdYuYumMhLSwIa:localhost:8800%0z Q!FIOuvzpMhoERunVYYA:localhost:8800%0y Q!zNBpypJDRMlBdOcLlW:localhost:8800%.x Q  !TcaopYfMoJFEcjYRzJ:localhost:8800%.w Q   !BckZfhQgrcyiMhEAAJ:localhost:8800%.v Q  !KXMUzALpMMMKqoQXUS:localhost:8800%.u Q  !NfaPEGKjnUDUTavzol:localhost:8800%.t Q  !JGhlAUflyNxErGGZZu:localhost:8800%.s Q  !tkajvIKHoOMWGsReBs:localhost:8800%.r Q  !fcdNYFWFyxmdpKAknc:localhost:8800%.q Q  !MWCLSWWGdWcSivNVLI:localhost:8800%.p Q  !erBPdgtUsiOfIKUkho:localhost:8800%.o Q  !dWgOTucBVQBKZjfndN:localhost:8800%.n Q  !hSzBsirdPWHtVjagXn:localhost:8800%.m Q  !mfzIRinBAGGrZvQAuI:localhost:8800%0l Q!FPcQcheNebvdFvmOnr:localhost:8800%0k Q!vOfeZvbtpuHfoqShFl:localhost:8800%0j Q!EieRtaCFZJJCIOkRPp:localhost:8800%0i Q!NQgavrmiCPUVaVjssy:localhost:8800%0h Q!hgjYwwwjWJNgwrzOto:localhost:8800%.g Q  !dnZVySJLGNtUKsSgXW:localhost:8800%.f Q  !oznZaCpONuNDaLarkI:localhost:8800%.e Q  !eLsrBEnrHolwCNgkFW:localhost:8800%.d Q  !ILbUVZOfPPwaZRrKJd:localhost:8800%.c Q  !wAyboOFgsOPwkmgMAI:localhost:8800%0b Q!bnTuVBaAJTPbcYZtRl:localhost:8800 %.a Q   !BGbJEmJRVJGlZFQbZe:localhost:8800%.` Q  !tDsPLsKOLPePtEWRwn:localhost:8800%0_ Q!XMNRkfscQXRjgYrOSd:localhost:8800%.^ Q  !wUuodvgsmAJqKJUBCQ:localhost:8800%-] Q!VCSCNemqikJZiRtxrs:localhost:8829.Z Q  !KeBlWUQiLYUoILKkTB:localhost:8800%.[ Q  !zFdNewlKnUiMBxnYrN:localhost:8800%-\ Q!StEnDjTJToXKXsOHNf:localhost:8829.X Q  !lAGTcYIuMBXsVRGCOe:localhost:8800%.Y Q  !WVzjUePHrzCjfyTbmK:localhost:8800%.W Q  !UyLoIXmzVFwycmBUeh:localhost:8800%.V Q  !nteAxExBGJfaGIpuCx:localhost:8800%0U Q!itKDOCtoMkFUETDtle:localhost:8800%/T Q  !qxqNYKdtgvOQdhmgsj:localhost:8800 %0S Q!MlzmtUYSZOiByAZdKx:localhost:8800%.R Q   !WjlTCJVOFJkanCtkFE:localhost:8800%.Q Q  !aBCvSXjtZUEPlPGHvY:localhost:8800% <D, T L 4 \ $ t|< deeQ$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800eeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800eeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800BeeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800xeeQ$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:8800 7eeQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:88001eeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800 ׁeeQ$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800TeeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800.eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800ցeeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800;eeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800eeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800 deeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA!KIHYKMzkRDrJwiywwz:localhost:8800 B leeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800 3eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800 2eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800  ghAeQ_M$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 706}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0"], "type": "m.room.aliases", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"aliases": ["#test-20191002_181700-27:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040913065, "hashes": {"sha256": "0ZiAiYeMomAWk7qBGngDHloiKCUkhYCRpVBj29x9kJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3j3gHFxuzbbXYj4//uLEbAJVx77yEaldnHKGC/ic2eyy9JCsRvMgBw7+DAxTGJNbYdrsWWyZN09AnHTuzkNaBQ"}}, "unsigned": {"age_ts": 1570040913065}}@eQ_$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 705}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc"], "type": "m.room.history_visibility", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040912166, "hashes": {"sha256": "PzmArNK8AtyAobj7vXGBIUlLC046zrGFvkdiDakbOh0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6S6kKv9ePNaVqxOoUCaYnyLN87JGXv9twH4VCKvKtB7X7EYIoduuaiaLNdgkUFuU4leKDfxkEZ8yokTwW7e5Aw"}}, "unsigned": {"age_ts": 1570040912166}}s?eQ_u$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 704}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE"], "type": "m.room.join_rules", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040911575, "hashes": {"sha256": "tj6RIBX+Q3it5Bb6bHhj6R+NDIKmtCd1e0vkm78tgRY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Iw02tUpAhtiRdYaeRi1k5fPGzrJk4WSEUgQ+VEI1riMGWYvB+eKk1DpklRy4RoD5XyLB3HQz/LUWglcSmTi1Aw"}}, "unsigned": {"age_ts": 1570040911575}}>eQ_9$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 703}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU"], "type": "m.room.canonical_alias", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"alias": "#test-20191002_181700-27:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040910883, "hashes": {"sha256": "i3Q5ksCnKTU3sZYM+kAsMqsUPAZCdQvk1x4T3WTbndU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HPOSUcMWdI3bqh5lNM9lRvFSNZSzrngABgSP7M+gyGc+4Q5zhEd4A/809towXi+dOfqxd/RDhALf8wSR3W77AQ"}}, "unsigned": {"age_ts": 1570040910883}} a} { y w u sqomkigeca~3eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~2eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~1eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~0eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800~/eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~.eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~-eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800~,eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~+eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~*eeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~)eeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~(eeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~'eeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~&eeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~%eeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~$eeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~#eeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~"eeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~!eeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~ eeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~eeQ$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~eeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800 "A F j  > Cg =a]bt?Q'/e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4i>Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYt=Q'/e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgi<Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoi;Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4 :Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM 9Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829$CF04RdjpJ7K-mLsJyANRCJNCr6Jg55SLV1iHydG6OyUr8Q))e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYo7Q? e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibility$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0g6Q/ e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rules$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Ml5Q9 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_alias$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUi4Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ 3Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUc2Q' e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.create$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwt1Q'/e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgt0Q'/e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogi/Q3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_access$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sco.Q? e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibility$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYg-Q/ e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rules$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIi,Q3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc +Q']e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMc*Q' e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.create$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8t)Q'/e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oi(Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXact'Q'/e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboi&Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIo%Q? e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibility$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8g$Q/ e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rules$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUi#Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY "Q']e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0c!Q' e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.create$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMo Q? e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGArQ))e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0oQ? e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0 AQc1i7}o= vDk9q? w E  } K  Q Q  K W %  ] +X&^,1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo Z1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc 1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE &1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY0e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg|1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c0e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0z1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48N1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4q1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMw1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Iz1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAL1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY V1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA A1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA61e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAK1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM91e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0MU1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU @1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw)1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4.1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoO [ . B[jEeQ_c$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 710}{"auth_events": ["$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM", "$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0"], "prev_events": ["$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0"], "type": "m.room.power_levels", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"users": {"@anon-20191002_181700-163:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040917133, "hashes": {"sha256": "BF7D8pjXoBmzN0/JqK6xIctof6VNKcK9+BhcZVwpenE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+9yHRpdu1e9TeA9xSlL3TysfBvu3wiUZhZeMKpXgrELfnv2rzjr/+vUrJQMBNQjm8x4kouZ/IJVRthDHWyggBQ"}}, "unsigned": {"age_ts": 1570040917133}}uDeQ_y$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 709}{"auth_events": ["$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM"], "prev_events": ["$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM"], "type": "m.room.member", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-163", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-163:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040916642, "hashes": {"sha256": "FVrhZ/H5SGe1aa36EwOCmxpRXnbO2OXORIjHfKtse8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BzMCCEMfLBvbv9BC4oqn88lmVfUvjYIPWAyDgowGzoSew62B6AGN+Kasm3qRpL9blm1OpW8tzZV5K1SWK//rBw"}}, "unsigned": {"age_ts": 1570040916642}}hCeQ__$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 708}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-163:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040915946, "hashes": {"sha256": "ePh/6oQQscoimPzmXxwZBn+wseSJse27LWdKVobMzsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SCgWqINHrbHDCdYij/cTMWqnahtTs4D2dPB8IbG2Kx+vMxpfE9NYyEaKb/s9Ap5KJePOid3cn/FxeChLwYcKDw"}}, "unsigned": {"age_ts": 1570040915946}}NBeQ_+$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 707}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0"], "type": "m.room.history_visibility", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040913759, "hashes": {"sha256": "qI+Bs8gIw17HGnKYpn+o55qx9j9kHyNcqCEfQ5fMNWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xZqMNq528okI6UdkFX3JGWTz47jBNDeYuePYLRi7FLnSfUeJ3FosodDRhNhhsd6W4j7GEqWPvRu7B2tYda0RAA"}}, "unsigned": {"age_ts": 1570040913759, "replaces_state": "$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0"}} ,d@, +    y T d t ,zU@~iD"Y 1 @21:localhost:8800]"uX ]@anon-20191002_181700-193:localhost:8800$2b$04$ABLHNKBiRO.wwS.eSkfbauH7v77CFudpvrJ00lsxzB5JWxY0Mwv/u]"W 1 @20:localhost:8800]uV ]@anon-20191002_181700-192:localhost:8800$2b$04$IvULN03tfmCLm6pcQWoFd.DeSeMmJXGnVzOy0M6BNGaO8L4eyQtay]"U 1 @19:localhost:8800]uT ]@anon-20191002_181700-191:localhost:8800$2b$04$OdEarasUtTVHSUnWSq7e7urL4K9sdvV7283dG59YnJeqdBghutf9C]"S 1 @18:localhost:8800]uR ]@anon-20191002_181700-190:localhost:8800$2b$04$orOeSgVPnnaB.hUMItiKMeQD3SFgfsKAZ6NKtcjT.BeTyE68dj.rW]"Q 1 @17:localhost:8800]uP ]@anon-20191002_181700-189:localhost:8800$2b$04$XaUf4NES1jP3NUVXKfg3nuv9KpueTESd3smbXM.Z5O0TvNeKXHjdW]"O 1 @16:localhost:8800]uN ]@anon-20191002_181700-188:localhost:8800$2b$04$QtD0rsoW/cFquP./KnwAQOIKuuyG.aJiIfSTc9QOrcqm.xP09a.FO]"M 1 @15:localhost:8800]uL ]@anon-20191002_181700-187:localhost:8800$2b$04$nlNUvI2JwlH.o2QThnyhXOo/iYQUAtkaeFmF7SXUEBb4NFqvNerqG]"K 1 @14:localhost:8800]uJ ]@anon-20191002_181700-186:localhost:8800$2b$04$s5cwd3y8QZorHnDIrWWvLejtmMCHoVz1rImeBAvhDzCJQHZsJPi6y]"I 1 @13:localhost:8800]uH ]@anon-20191002_181700-185:localhost:8800$2b$04$RqUQdZkZATalvcCRttw8suQjRdwrqEF.tipbPFko3915cDaE/gF6i]uG ]@anon-20191002_181700-184:localhost:8800$2b$04$pRgoqWIY6D9t.xHORE0ane.iezVelS6U8b2u4Tb/zQ7kZaY8nUg7O]uF ]@anon-20191002_181700-183:localhost:8800$2b$04$ConOZpQFvSSMsuueixPIDe2BUAb2OrCeda6qf5WMLTB2sVHtOzk0e]uE ]@anon-20191002_181700-182:localhost:8800$2b$04$FLczDjy3Jei5CHicT2..FO0SX1SyVqi8pEuXev2gHTQa9UYQobXRm]uD ]@anon-20191002_181700-181:localhost:8800$2b$04$yfMIHs9iBdsMOyIxXqGAkesIFj6l7LgNYA4TYNotlwoSNqcphi2Ri]uC ]@anon-20191002_181700-179:localhost:8800$2b$04$ZlIc.Oi.4cjPhwjUQMHpouGulbC8FJ0zNl0TqyIW5Bs0A0QYvTJrW]uB ]@anon-20191002_181700-178:localhost:8800$2b$04$anBCVwQvelBCWFxGULcPfe8dn74OsfQb4IDZ4M94yNFg7v23hlWru]uA ]@anon-20191002_181700-177:localhost:8800$2b$04$E5RmPNQDQ3PAc9VaiRvA8eQh92DVKlfui90/3L.CwX7mEJGXKepOC]u@ ]@anon-20191002_181700-176:localhost:8800$2b$04$RyPVb3vEua.QncGxhBX8benuGdtCiX0nWHBZeZo2IAq6cEMAKP.KG]u? ]@anon-20191002_181700-175:localhost:8800$2b$04$VpoIBiooc7.st3lvNgwIXOfY09CCbaTRGpphyg3f8Dg9Oul3ML16u]u> ]@anon-20191002_181700-174:localhost:8800$2b$04$j5K8zAjHXEllRA1vmBNxquXnfQyLFUfjVjTGZeqosGrHfFluFWg9S]u= ]@anon-20191002_181700-173:localhost:8800$2b$04$eGqOXMn6p/gj5rjfkzfbDuhTrSFmWSeVhHp8czTkaQYbzkIxN1Nkm]"< 1 @12:localhost:8800]"; 1 @11:localhost:8800]u: ]@anon-20191002_181700-170:localhost:8800$2b$04$4tHBoslZWBe9neake.lfGeTDp2qh/jl1yegOvRg5Lo3Y/FFxxMDfu]u9 ]@anon-20191002_181700-169:localhost:8800$2b$04$snyLkw3VaFZ2a4vmR165AeBcJ4.883V3vSgXpMPUHMpB8kiCiwGLy]{u8 ]@anon-20191002_181700-168:localhost:8800$2b$04$ZaS2dLPz93JG4OKWJUdsre/AKt.al64w9AHNQSfxifs9jk2YQKfpq]u"7 1 @10:localhost:8800]ub4 /@8:localhost:8800$2b$04$bfceBWy3XaxFegGdC8mlzOc9SZpUa6DvdNZ8swfHks3ieCMlVdRDy]m]tu5 ]@anon-20191002_181700-167:localhost:8800$2b$04$Atm1xEbFcAX3l49M9y5Zi.P0oMqNuqwbqCO0BEiOFvAAhBAORefFy]n!6 / @9:localhost:8800]uu3 ]@anon-20191002_181700-165:localhost:8800$2b$04$/N79dDNrK2UtQj9NHLrTneNlWTz.UgMPVX1KMsQpPgjq0cyb7F5um]b!2 / @7:localhost:8800]bu1 ]@anon-20191002_181700-164:localhost:8800$2b$04$nbCqpHQicMU2A3BCDRikc.wSR8dMKMoMDK9T01aGi39VmE7Uks3ZC]Z!0 / @6:localhost:8800]Zu/ ]@anon-20191002_181700-163:localhost:8800$2b$04$Yyi2I5.smSlTV/fcosOTlee290nlOW22rAMpmycrOwXlAPtq8.1nK]S!. / @5:localhost:8800]S C{e0`- ] ( ^ ) Y & V ! Q RQNOL~K{FzG2]@an2]@anon-20191002_181700-238:localhost:8800a4]@anon-20191002_181700-237:localhost:8800m2]@anon-20191002_181700-237:localhost:8800a4]@anon-20191002_181700-236:localhost:8800m2]@anon-20191002_181700-236:localhost:8800a2]@anon-20191002_181700-235:localhost:8800a4]@anon-20191002_181700-234:localhost:8800m2]@anon-20191002_181700-234:localhost:8800a2]@anon-20191002_181700-233:localhost:8800a4]@anon-20191002_181700-232:localhost:8800m2]@anon-20191002_181700-232:localhost:8800a4]@anon-20191002_181700-231:localhost:8800m2]@anon-20191002_181700-231:localhost:8800a2]@anon-20191002_181700-230:localhost:8800a2[@anon-20191002_181700-22:localhost:8800m90[@anon-20191002_181700-22:localhost:8800a62]@anon-20191002_181700-229:localhost:8800a4]@anon-20191002_181700-228:localhost:8800m2]@anon-20191002_181700-228:localhost:8800a2]@anon-20191002_181700-227:localhost:8800a4]@anon-20191002_181700-226:localhost:8800m2]@anon-20191002_181700-226:localhost:8800a2]@anon-20191002_181700-225:localhost:8800a4]@anon-20191002_181700-224:localhost:8800m2]@anon-20191002_181700-224:localhost:8800a2]@anon-20191002_181700-223:localhost:8800a4]@anon-20191002_181700-222:localhost:8800m2]@anon-20191002_181700-222:localhost:8800a2]@anon-20191002_181700-221:localhost:8800a4]@anon-20191002_181700-220:localhost:8800m2]@anon-20191002_181700-220:localhost:8800a2[@anon-20191002_181700-21:localhost:8800m50[@anon-20191002_181700-21:localhost:8800a42]@anon-20191002_181700-219:localhost:8800a4]@anon-20191002_181700-218:localhost:8800m2]@anon-20191002_181700-218:localhost:8800a4]@anon-20191002_181700-217:localhost:8800m2]@anon-20191002_181700-217:localhost:8800a4]@anon-20191002_181700-216:localhost:8800m2]@anon-20191002_181700-216:localhost:8800a4]@anon-20191002_181700-215:localhost:8800m2]@anon-20191002_181700-215:localhost:8800a4]@anon-20191002_181700-214:localhost:8800m2]@anon-20191002_181700-214:localhost:8800a4]@anon-20191002_181700-213:localhost:8800m2]@anon-20191002_181700-213:localhost:8800a4]@anon-20191002_181700-212:localhost:8800m2]@anon-20191002_181700-212:localhost:8800a4]@anon-20191002_181700-211:localhost:8800m2]@anon-20191002_181700-211:localhost:8800a2]@anon-20191002_181700-210:localhost:8800a2[@anon-20191002_181700-20:localhost:8800m30[@anon-20191002_181700-20:localhost:8800a24]@anon-20191002_181700-209:localhost:8800m2]@anon-20191002_181700-209:localhost:8800a4]@anon-20191002_181700-208:localhost:8800m2]@anon-20191002_181700-208:localhost:8800a4]@anon-20191002_181700-207:localhost:8800m2]@anon-20191002_181700-207:localhost:8800a4]@anon-20191002_181700-206:localhost:8800m2]@anon-20191002_181700-206:localhost:8800a4]@anon-20191002_181700-205:localhost:8800m2]@anon-20191002_181700-205:localhost:8800a4]@anon-20191002_181700-204:localhost:8800m2]@anon-20191002_181700-204:localhost:8800a4]@anon-20191002_181700-203:localhost:8800m2]@anon-20191002_181700-203:localhost:8800a ,NC 8 - { " p  e ZOD9.|#qf VpeL$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIsha256¤4P'RN/Οqa<0*VoeL$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJossha256fds>a}, ذم&VneL$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4sha256[B==/T;?`JxCK?qUR*~VmeL$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wsha256E)j°R*Zkޓ?Mh]kʔVleL$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQsha256 _-?vn Hk03F,FptVkeL$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0osha256󟦆h\xi?DO S$v*ʋJVjeL$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkosha256!gl DMh]-|&PneyX ,sFJVieL$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEsha256{}4*?|h}$Ғi oCaVheL$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fssha25630dGv<'][VgeL$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhkssha256+mzYZUъ 5\ھՂ 6ΆKVfeL$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8sha256p$9U?:P,h,~/VeeL$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8sha256qazuA,925l ;7vvS/VdeL$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuksha256Y 3;Z8=4DbV_eL$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4sha2561Q vgI@o6lJV^eL$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgsha256A3[͑_nK?;xOV]eL$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEosha256?UPqq-:E\uOZ48e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_osha2568e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWssha256e8e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGssha256 !7e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQsha256'8e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUsha25698e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJAsha2568e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYsha2568e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHssha256 ;8e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQsha256r8e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1csha2568e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIsha256  T L  dD| l< \4, $ t \ eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800 eeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800 )eeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829eeeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800*eeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800eeQ$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800^eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800#eeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800eeQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800BeeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:88007eeQ$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800 leeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800 geeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800ՁeeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8!vRmMcoJDeCupADwqac:localhost:8800 eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800 ׁeeQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800 ReeQ$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800 3 + Q+uMeQ_y$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 718}{"auth_events": ["$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8"], "prev_events": ["$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8"], "type": "m.room.member", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-164", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-164:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040924663, "hashes": {"sha256": "H+7N2Vz8RxlBHNy7705l4CWHKL+XPrLT5wpRMupjN5w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gzNvpjd+0wbyJB0j08G5fshHlhDmKjISy7sUJsJ8GurEDpI6/DkH/0HIaAQop/mI9sg71J1mhq4T0XTLzT5WBw"}}, "unsigned": {"age_ts": 1570040924663}}hLeQ__$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 717}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-164:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040923754, "hashes": {"sha256": "WpmNtnvh5iPkI7YjPT+r76Xpv2A9c9N0k1g5o8Vetd4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9dOnPK5T2RLu+9cAts4IHgyzGeE/y1PcrvvLdqo8XqWXJT5LDPSotnFpQ3lFsPEnPg52oaS8PQUEpkI5qICbDA"}}, "unsigned": {"age_ts": 1570040923754}}=KeQ_ $M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 716}{"auth_events": ["$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY", "$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM", "$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0"], "prev_events": ["$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"], "type": "m.room.guest_access", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"guest_access": "forbidden"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040921287, "hashes": {"sha256": "c1ZWnT74we0ugTnezDrFwMGlg4aC24qNmwyaNDyG41c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "isTaH6CUfdW5qcPqcBDotkEuPUMrqhBLLO7UrJnu7W03RjVnETFd7X6krvuYw69hZPAUXmCdY7jxOWzawlZ8AQ"}}, "unsigned": {"age_ts": 1570040921287, "replaces_state": "$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI"}}+JeQ=$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800{"stream_ordering": 715}{"auth_events": ["$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY", "$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM", "$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"], "prev_events": ["$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"], "type": "m.room.member", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@5:localhost:8800", "content": {"membership": "leave", "kind": "guest"}, "depth": 8, "prev_state": [], "state_key": "@5:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040921457, "hashes": {"sha256": "/QL1Ch5tjVc91ugCWTdZ5vyipkiIetP67b9cItLfskE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uyaOh3MKmZ4xeV7Op4K6cxuOUO79PbOE3iH9o6qfOr2Qp7fLThdF5Yigq1jsB9wXSLasqLDGbYmqVpMFWVIABw"}}, "unsigned": {"age_ts": 1570040921457, "replaces_state": "$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"}} ~z v r n j fb^ZVRNJFeeQ$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800eeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800eeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800eeQ$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800eeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800eeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800eeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800eeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800eeQ$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800eeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~eeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800}eeQ$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800|eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800 a} { y w u sqomkigeca~ReeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~QeeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~PeeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~OeeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~NeeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~MeeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~LeeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~KeeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~JeeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~IeeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~HeeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~GeeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~FeeQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~EeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800~DeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~CeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~BeeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800~AeeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~@eeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~?eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~>eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~=eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~<eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~;eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~:eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~9eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~8eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~7eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~6eeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~5eeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~4eeQ$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800 XFX0h@`8pH X 0  h @  x P ( ` 8  p H xP(nFd=vN&^6'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800 U'Q!QnmLrBAxeItdHsaxWf:localhost:8800 T'Q!QnmLrBAxeItdHsaxWf:localhost:8800 S'Q!QnmLrBAxeItdHsaxWf:localhost:8800 R'Q!QnmLrBAxeItdHsaxWf:localhost:8800 Q'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QcaNrIiUsWpTiVGOnt:localhost:88001'Q!QcaNrIiUsWpTiVGOnt:localhost:8800/'Q!QcaNrIiUsWpTiVGOnt:localhost:8800-'Q!QcaNrIiUsWpTiVGOnt:localhost:8800+'Q!QcaNrIiUsWpTiVGOnt:localhost:8800*&Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800I'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!QMrkSPlQDGborAyWtQ:localhost:8800H'Q!QMrkSPlQDGborAyWtQ:localhost:8800G'Q!QMrkSPlQDGborAyWtQ:localhost:8800F'Q!QMrkSPlQDGborAyWtQ:localhost:8800E'Q!QMrkSPlQDGborAyWtQ:localhost:8800D'Q!QMrkSPlQDGborAyWtQ:localhost:8800C'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PgNDjhhIBAXKryuGKy:localhost:8800 i'Q!PgNDjhhIBAXKryuGKy:localhost:8800 h'Q!PgNDjhhIBAXKryuGKy:localhost:8800 g'Q!PgNDjhhIBAXKryuGKy:localhost:8800 f'Q!PgNDjhhIBAXKryuGKy:localhost:8800 e'Q!PgNDjhhIBAXKryuGKy:localhost:8800 d'Q!PgNDjhhIBAXKryuGKy:localhost:8800 c'Q!PgNDjhhIBAXKryuGKy:localhost:8800 b'Q!PgNDjhhIBAXKryuGKy:localhost:8800 a'Q!PgNDjhhIBAXKryuGKy:localhost:8800 `'Q!PgNDjhhIBAXKryuGKy:localhost:8800 _'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ^'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800  zQeQ_$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 722}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY"], "type": "m.room.guest_access", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040927922, "hashes": {"sha256": "fpBvMNTYVTmz+2MQWZyJZOpIRn1wc5sb/Xqg/udT6IU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vxA+Y/zFn5Hx/0snqZDSnHRT9G+uhfhk5nKFhH8ks6Q+MsPco2Qqy1CNO4uv0mSMj33Cyc7Lo25JsQNYNOi1Bw"}}, "unsigned": {"age_ts": 1570040927922}}PeQ_$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 721}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI"], "type": "m.room.history_visibility", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040926925, "hashes": {"sha256": "7w5vdDTSFnsqNICOyIvIo/MdFkbvF90Ns2mo2qOzZZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NWSfmAgiNNwq/X6x187mFJ0zJMeoXim1FlMoXa1gXZNa95dXbXgTcbj66Z+UkCPljSN54bqEqY1BLBm93otMCQ"}}, "unsigned": {"age_ts": 1570040926925}}sOeQ_u$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 720}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc"], "type": "m.room.join_rules", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040926285, "hashes": {"sha256": "uaGlZtUOzNEuh166CqhaYd15uRydGXDm8Furm0sRiIs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QvaY7q5Z2hS+oe8+eWvBwsYmlvYArgCrXjv00PSOo92yDbPtNJ14Y4u4UYFhfm+SnvoC6+mYC/fz1uOF0vqnAw"}}, "unsigned": {"age_ts": 1570040926285}}jNeQ_c$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 719}{"auth_events": ["$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "type": "m.room.power_levels", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"users": {"@anon-20191002_181700-164:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040925234, "hashes": {"sha256": "cOhLhvdca5b7UiJRixt0BD7Zj7jP23uyb9fRRT+ArGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zOLGvgXf4/AhuO9kkYpGbK3cpa+QgwaChdthmpFKglfgf+P63WH1KwGHLN9xShToYmUL5DI6zrHf4DJ7zLypCg"}}, "unsigned": {"age_ts": 1570040925234}} p Y  = B j".T#Ltp(-U eeQ']$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829joinpdeQ))$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800mceQ? $OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibilityebeQ/ $2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rulesjaeQ9 $l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_aliasgfeQ3 $Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels _eQ']$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800joina^eQ' $ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.createv]eQ'/$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800join XeQ']$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800joinaWeQ' $4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800m.room.creategVeQ3 $M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accesswUeQ'/$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800leavemSeQ? $FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibilityeReQ/ $5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rulesgQeQ3 $J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels PeQ']$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800joinaOeQ' $pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800m.room.createmNeQ? $qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilitypMeQ))$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800eKeQ/ $wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rulesjJeQ9 $5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_aliasgIeQ3 $poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels HeQ']$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800joing\eQ3 $cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_accessm[eQ? $BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibilityeZeQ/ $rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rulesgYeQ3 $nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels Q X+]0|O"nA 5  l? ^ 1  } P #g L U (  ztG c9 p Cj=w+,,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 22,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 11,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 00,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 //,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 ..,Q!aZwMKYDXJRlSKjQNWM:localhost:8800--,Q!aZwMKYDXJRlSKjQNWM:localhost:8800,,,Q!aZwMKYDXJRlSKjQNWM:localhost:8800++,Q!aZwMKYDXJRlSKjQNWM:localhost:8800**,Q!aZwMKYDXJRlSKjQNWM:localhost:8800)),Q!aZwMKYDXJRlSKjQNWM:localhost:8800((,Q!aZwMKYDXJRlSKjQNWM:localhost:8800''+Q !aZwMKYDXJRlSKjQNWM:localhost:8800&&J,,Q!aiOswwhoZqjhcjzbzc:localhost:8800 ii,Q!aiOswwhoZqjhcjzbzc:localhost:8800bb,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800+Q !azRJNFPIRSFAskLILK:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800 pp,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aiOswwhoZqjhcjzbzc:localhost:8800\\+Q !aiOswwhoZqjhcjzbzc:localhost:8800[[,Q!anErKtXIsVKEEsrzWM:localhost:8800SS,Q!anErKtXIsVKEEsrzWM:localhost:8800RR,Q!anErKtXIsVKEEsrzWM:localhost:8800QQ,Q!anErKtXIsVKEEsrzWM:localhost:8800PP,Q!anErKtXIsVKEEsrzWM:localhost:8800OO,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800+Q !aknLNLxfChlLvFYhkJ:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800]],Q!aZwMKYDXJRlSKjQNWM:localhost:8800 66,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 55,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 44,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 33,Q!atnRTMliktaVUhMVID:localhost:8800  +Q !atnRTMliktaVUhMVID:localhost:8800  ,Q!aiOswwhoZqjhcjzbzc:localhost:8800^^,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800+Q !awHAhLuEkavTGACcUW:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800+Q !aaRwQZdNAliyvRHpjs:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 -,Q!aiOswwhoZqjhcjzbzc:localhost:8800__+Q !anErKtXIsVKEEsrzWM:localhost:8800NN,Q!aiOswwhoZqjhcjzbzc:localhost:8800aa,Q!aiOswwhoZqjhcjzbzc:localhost:8800`` Q X+]0|O"nA 5  l? ^ 1  } P #g L U (  ztG c9 p Cj=w+,,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 22,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 11,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 00,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 //,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 ..,Q!aZwMKYDXJRlSKjQNWM:localhost:8800--,Q!aZwMKYDXJRlSKjQNWM:localhost:8800,,,Q!aZwMKYDXJRlSKjQNWM:localhost:8800++,Q!aZwMKYDXJRlSKjQNWM:localhost:8800**,Q!aZwMKYDXJRlSKjQNWM:localhost:8800)),Q!aZwMKYDXJRlSKjQNWM:localhost:8800((,Q!aZwMKYDXJRlSKjQNWM:localhost:8800''+Q !aZwMKYDXJRlSKjQNWM:localhost:8800&&J,,Q!aiOswwhoZqjhcjzbzc:localhost:8800 ii,Q!aiOswwhoZqjhcjzbzc:localhost:8800bb,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800+Q !azRJNFPIRSFAskLILK:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800 pp,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aiOswwhoZqjhcjzbzc:localhost:8800\\+Q !aiOswwhoZqjhcjzbzc:localhost:8800[[,Q!anErKtXIsVKEEsrzWM:localhost:8800SS,Q!anErKtXIsVKEEsrzWM:localhost:8800RR,Q!anErKtXIsVKEEsrzWM:localhost:8800QQ,Q!anErKtXIsVKEEsrzWM:localhost:8800PP,Q!anErKtXIsVKEEsrzWM:localhost:8800OO,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800+Q !aknLNLxfChlLvFYhkJ:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800]],Q!aZwMKYDXJRlSKjQNWM:localhost:8800 66,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 55,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 44,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 33,Q!atnRTMliktaVUhMVID:localhost:8800  +Q !atnRTMliktaVUhMVID:localhost:8800  ,Q!aiOswwhoZqjhcjzbzc:localhost:8800^^,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800+Q !awHAhLuEkavTGACcUW:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800+Q !aaRwQZdNAliyvRHpjs:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 -,Q!aiOswwhoZqjhcjzbzc:localhost:8800__+Q !anErKtXIsVKEEsrzWM:localhost:8800NN,Q!aiOswwhoZqjhcjzbzc:localhost:8800aa,Q!aiOswwhoZqjhcjzbzc:localhost:8800`` 6~KX f  V  y <  ( q 6G3?\j{DT~ ]<Q3 !ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels ^Q']!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800 BQ? !ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibility :Q/ !ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rules :Q/ !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rules MBQ? !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibility N6Q' !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.create J6Q' !ZNIjCvcWhgcwskanjT:localhost:8800m.room.create <Q3 !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels \^Q']!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800 _RQ'E!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455 ^:Q/ !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules `BQ? !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibility T6Q' !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create ]<Q3 !YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levelsh^Q']!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800gHQ'1!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800l:Q/ !YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rulesiBQ? !YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibilityj<Q3 !YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_accessk6Q' !YufaOfAlruTdjyUCwO:localhost:8800m.room.createf<Q3 !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels^Q']!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800:Q/ !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rulesBQ? !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibility6Q' !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create<Q3 !YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels ^Q']!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800 RQ'E!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455 :Q/ !YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rules BQ? !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility 6Q' !YpcmaMNMzjvtgYtrli:localhost:8800m.room.create <Q3 !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levels ^Q']!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800 :Q/ !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules BQ? !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility 6Q' !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.create <Q3 !YgaGPEraeLCqHQirin:localhost:8800m.room.power_levelsC^Q']!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800<:Q/ !YgaGPEraeLCqHQirin:localhost:8800m.room.join_rules@BQ? !YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility?<Q3 !YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access>6Q' !YgaGPEraeLCqHQirin:localhost:8800m.room.create;<Q3 !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels ^^Q']!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800 ]:Q/ !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rules _BQ? !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibility a6Q' !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create \<Q3 !YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels4Q# !YQATbgbLImCDamiDHC:localhost:8800m.room.name^Q']!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800^Q']!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800:Q/ !YQATbgbLImCDamiDHC:localhost:8800m.room.join_rulesBQ? !YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibility7 -RM H C > 9 4/*|%w rmhc TQe!lAGTcYIuMBXsVRGCOe:localhost:8800$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-EgTQe!WVzjUePHrzCjfyTbmK:localhost:8800$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXoTQe!UyLoIXmzVFwycmBUeh:localhost:8800$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIT~Qe!lAGTcYIuMBXsVRGCOe:localhost:8800$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0T}Qe!WVzjUePHrzCjfyTbmK:localhost:8800$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgT|Qe!UyLoIXmzVFwycmBUeh:localhost:8800$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDoT{Qe!lAGTcYIuMBXsVRGCOe:localhost:8800$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60QTzQe!WVzjUePHrzCjfyTbmK:localhost:8800$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8TyQe!UyLoIXmzVFwycmBUeh:localhost:8800$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMTxQe!lAGTcYIuMBXsVRGCOe:localhost:8800$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUTwQe!WVzjUePHrzCjfyTbmK:localhost:8800$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8ETvQe!UyLoIXmzVFwycmBUeh:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgTuQe!lAGTcYIuMBXsVRGCOe:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwITtQe!WVzjUePHrzCjfyTbmK:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosTsQe!WVzjUePHrzCjfyTbmK:localhost:8800$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4TrQe!lAGTcYIuMBXsVRGCOe:localhost:8800$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wTqQe!UyLoIXmzVFwycmBUeh:localhost:8800$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQTpQe!nteAxExBGJfaGIpuCx:localhost:8800$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0oToQe!nteAxExBGJfaGIpuCx:localhost:8800$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkoTnQe!nteAxExBGJfaGIpuCx:localhost:8800$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tETmQe!nteAxExBGJfaGIpuCx:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsTlQe!nteAxExBGJfaGIpuCx:localhost:8800$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksTkQe!itKDOCtoMkFUETDtle:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8TjQe!itKDOCtoMkFUETDtle:localhost:8800$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8TiQe!itKDOCtoMkFUETDtle:localhost:8800$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukThQe!itKDOCtoMkFUETDtle:localhost:8800$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4TgQe!itKDOCtoMkFUETDtle:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YTfQe!itKDOCtoMkFUETDtle:localhost:8800$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYTeQe!qxqNYKdtgvOQdhmgsj:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4TdQe!qxqNYKdtgvOQdhmgsj:localhost:8800$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYTcQe!qxqNYKdtgvOQdhmgsj:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4TbQe!qxqNYKdtgvOQdhmgsj:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgTaQe!qxqNYKdtgvOQdhmgsj:localhost:8800$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoT`Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4T_Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMT^Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYT]Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0T\Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_MT[Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUTZQe!qxqNYKdtgvOQdhmgsj:localhost:8800$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQTYQe!qxqNYKdtgvOQdhmgsj:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUTXQe!qxqNYKdtgvOQdhmgsj:localhost:8800$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwTWQe!MlzmtUYSZOiByAZdKx:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgTVQe!MlzmtUYSZOiByAZdKx:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogTUQe!MlzmtUYSZOiByAZdKx:localhost:8800$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc V< L G TDNo ie'Q ]$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fsm.room.member!nteAxExBGJfaGIpuCx:localhost:8800m/m@anon-20191002_181700-168:localhost:8800h e'Q  ]$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksm.room.create!nteAxExBGJfaGIpuCx:localhost:8800mAm@anon-20191002_181700-168:localhost:8800 ge'Q /$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8m.room.member!itKDOCtoMkFUETDtle:localhost:8800m6m@8:localhost:8800,fe?Q ]$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8m.room.history_visibility!itKDOCtoMkFUETDtle:localhost:8800mm@anon-20191002_181700-167:localhost:8800$ee/Q ]$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukm.room.join_rules!itKDOCtoMkFUETDtle:localhost:8800mmu@anon-20191002_181700-167:localhost:8800&de3Q ]$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4m.room.power_levels!itKDOCtoMkFUETDtle:localhost:8800mm+@anon-20191002_181700-167:localhost:8800 ce'Q ]$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Ym.room.member!itKDOCtoMkFUETDtle:localhost:8800m m@anon-20191002_181700-167:localhost:8800b e'Q  ]$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYm.room.create!itKDOCtoMkFUETDtle:localhost:8800m`m@anon-20191002_181700-167:localhost:8800&ae3Q ] $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYm.room.guest_access!qxqNYKdtgvOQdhmgsj:localhost:8800 mm@anon-20191002_181700-166:localhost:8829 `e'Q / $l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4m.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800 mm@7:localhost:8800 _e'Q / $oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgm.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800 mm/@7:localhost:8800&^e3Q ] $pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEom.room.guest_access!qxqNYKdtgvOQdhmgsj:localhost:8800 mma@anon-20191002_181700-165:localhost:8800&]e3Q ] $Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4m.room.power_levels!qxqNYKdtgvOQdhmgsj:localhost:8800 mm@anon-20191002_181700-165:localhost:8800 \e'Q ]$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMm.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800m|m}Z@anon-20191002_181700-166:localhost:8829![e)Q ]$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYm.room.aliases!qxqNYKdtgvOQdhmgsj:localhost:8800mymz@anon-20191002_181700-165:localhost:8800,Ze?Q ]$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0m.room.history_visibility!qxqNYKdtgvOQdhmgsj:localhost:8800mumw@anon-20191002_181700-165:localhost:8800$Ye/Q ]$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Mm.room.join_rules!qxqNYKdtgvOQdhmgsj:localhost:8800ms:mtd@anon-20191002_181700-165:localhost:8800)Xe9Q ]$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUm.room.canonical_alias!qxqNYKdtgvOQdhmgsj:localhost:8800mpmq>@anon-20191002_181700-165:localhost:8800&We3Q ]$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQm.room.power_levels!qxqNYKdtgvOQdhmgsj:localhost:8800mm=mnE@anon-20191002_181700-165:localhost:8800 Ve'Q ]$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUm.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800mjmk0@anon-20191002_181700-165:localhost:8800U e'Q  ]$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwm.room.create!qxqNYKdtgvOQdhmgsj:localhost:8800mfmg@anon-20191002_181700-165:localhost:8800 Te'Q /$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgm.room.member!MlzmtUYSZOiByAZdKx:localhost:8800m^m_;@6:localhost:8800 Se'Q /$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogm.room.member!MlzmtUYSZOiByAZdKx:localhost:8800mZm[W@6:localhost:8800&Re3Q ]$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scm.room.guest_access!MlzmtUYSZOiByAZdKx:localhost:8800mVmW{@anon-20191002_181700-164:localhost:8800 + l+uUeQ_y$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 726}{"auth_events": ["$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw"], "prev_events": ["$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw"], "type": "m.room.member", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-165", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-165:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040932991, "hashes": {"sha256": "W/xtbyHN3TEn+GP496tCGl4h5OVPPTC/3H/sKKM06vQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vr43CzfKBjEdKK+4mwXe0hIlhIk80k0OrTq4IeCe0J041zrztt5zHwPhbrHdoPubyh7WmNoHycqv2SHDAeMyDw"}}, "unsigned": {"age_ts": 1570040932991}}hTeQ__$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 725}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-165:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040932081, "hashes": {"sha256": "8M/3pLJfCc4zc6+XatmyX+k0md+7SeagTwDjiFwOFs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hBhQpobUfZ2RNTAzVqm93WEfqNELHyj1ozWEhv/pAKQE9zK7QzbOgNu+gnVOATnt/+xA1TaQ4jSnOF5kb3WAAw"}}, "unsigned": {"age_ts": 1570040932081}}XSeQ=a$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800{"stream_ordering": 724}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI"], "prev_events": ["$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog"], "type": "m.room.member", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@6:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "creeper", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@6:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040929965, "hashes": {"sha256": "VSu/okp3Sep08QBIpUhyb6QabWqpWGiSox6JvZMyuKg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vfrSp/0iCGA4DEJjv3mNgT8f10orbWW2LXDfuV2G8l02iaU9A9dtPdocVJPPUjVrJjX0dc25YpG1gX7wHVnDDQ"}}, "unsigned": {"age_ts": 1570040929965, "replaces_state": "$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog"}}ReQ=Q$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800{"stream_ordering": 723}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI"], "prev_events": ["$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc"], "type": "m.room.member", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@6:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "6", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@6:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040928921, "hashes": {"sha256": "Rsys+nAeIJRbJj5bqP6sXJrAbKnM5hufVyf6NEDCuO4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rNEVdb5cxZri2J35G+lFgnVRd2KCeEyRTgyTVX1dKAd5LPFu9yzlJdnKun559wC7Pw3V8z/is9+h5fKXoChZCg"}}, "unsigned": {"age_ts": 1570040928921}}  t drJ{1a%E@11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRSxDaUN4SGZIRTQjWUxJbAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDRs-ffUemCTWinkCFDGYbanMbjSiUB8-Nm-RndeIcAtCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m+a]c!E@anon-20191002_181700-170:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwoSULWIONTNX127.0.0.1Perl + Net::Async::HTTP/0.44m']c!E@anon-20191002_181700-169:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAoMFKRKTWRFR127.0.0.1Perl + Net::Async::HTTP/0.44mµ]c!E@anon-20191002_181700-168:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9woLFMVYJKZWW127.0.0.1Perl + Net::Async::HTTP/0.44mZ/%!E@8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6NDg4WTJ5QVRXUGk5QXZKCjAwMmZzaWduYXR1cmUgvLzn0wH0-sfnWpaRwSxJHZ0wtTVPh2Z7w5K2gN3eocoKSPYUTHBEKD127.0.0.1Perl + Net::Async::HTTP/0.44m2x/]%E@8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6d3NWM2ZicnRyM3lRbGlsCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgcajuWqQWVZJZ4N46e0cYOyxlQ44hNCyrjs_BbbpZQUoKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m\]c!E@anon-20191002_181700-167:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwoCZRBBMXBTZ127.0.0.1Perl + Net::Async::HTTP/0.44mx/]%E@7:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBHR3FtVDJSJm49NWNOWXEmCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgv9X5LbiYTmJlZGf63oLZ5jpPigCq9uv2saobAmUqhSwKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44my]c!E@anon-20191002_181700-165:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgoYDADSUNIXE127.0.0.1Perl + Net::Async::HTTP/0.44mfx /]%E@6:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMZnlQQVc6LSo2M1dqXlIjCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgQcV1gU-zOQ0MGI70Woi2nKJui6104TaX8QB36thjEEUKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mY? ~z v r n j n~&6FVfvu/Q]Q!kAxKaIQhXTtGFWSUgr:localhost:8800@anon-20191002_181700-473:localhost:8800$1570042738251iukAg:localhost:8800joinu.Q]Q!WhLedNwPGGGTtqeqam:localhost:8800@anon-20191002_181700-471:localhost:8800$1570042731243YuOkC:localhost:8800joinu-Q]Q!yLccBXjjEasExpsXlt:localhost:8800@anon-20191002_181700-469:localhost:8800$1570042720226wSTBF:localhost:8800joinu,Q]Q!PcvmCDeVUSyJbXpTig:localhost:8800@anon-20191002_181700-467:localhost:8800$1570042711216KdEEo:localhost:8800joinu+Q]Q!HbYxdEuVIeLKHwqJEh:localhost:8800@anon-20191002_181700-465:localhost:8800$1570042702206BIYsS:localhost:8800joinu*Q]Q!FbJSiQoZtZkaFwzzQq:localhost:8800@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800joinu)Q]Q!FbJSiQoZtZkaFwzzQq:localhost:8800@anon-20191002_181700-463:localhost:8800$1570042694196OHsWc:localhost:8800joinu(Q]Q!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-462:localhost:8800$1570042691193uVdPZ:localhost:8800joinu'Q]Q!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-461:localhost:8800$1570042686186Qxqmn:localhost:8800joinu&Q]Q!RYNJAGdRhIlwRZFbrO:localhost:8800@anon-20191002_181700-460:localhost:8800$1570042679179ZJCqE:localhost:8800joinu%Q]Q!MqstbCLZIQFiYNHrqR:localhost:8800@anon-20191002_181700-458:localhost:8800$1570042671171AQZaz:localhost:8800joinu$Q]Q!WuiaqqIOvBjgETqdus:localhost:8800@anon-20191002_181700-456:localhost:8800$1570042664163IAHXd:localhost:8800joinu#Q]Q!bQDOrbAknnQZfUbhgS:localhost:8800@anon-20191002_181700-454:localhost:8800$1570042654147iSsjl:localhost:8800joinu"Q]Q!GSxvxNevpCiwmFCHys:localhost:8800@anon-20191002_181700-452:localhost:8800$1570042645137fBnPZ:localhost:8800joinu!Q]Q!yfizglmCXdcqCgDrTr:localhost:8800@anon-20191002_181700-450:localhost:8800$1570042634127eDBry:localhost:8800joinu Q]Q!XnUZiYJDWVNGfsBnGz:localhost:8800@anon-20191002_181700-449:localhost:8800$1570042632124bMwzE:localhost:8800joinuQ]Q!XnUZiYJDWVNGfsBnGz:localhost:8800@anon-20191002_181700-448:localhost:8800$1570042626117sfUAQ:localhost:8800joinuQ]Q!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-447:localhost:8800$1570042623114pBHTz:localhost:8800joinuQ]Q!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-446:localhost:8800$1570042617107cANtu:localhost:8800joinuQ]Q!YGUjVdVdpcQoGkRnWB:localhost:8800@anon-20191002_181700-445:localhost:8800$1570042611100ueDzK:localhost:8800joinQ]e!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-443:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPEleaveQ]e!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-444:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYjoinQ]e!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-442:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-441:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-440:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-439:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_QsjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-438:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-437:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-436:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsjoinQ]e!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-435:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70joinQ]e!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-434:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMjoinQ]e!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-433:localhost:8800$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sjoin  g 4 h531cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEyOm1aOWtBTU5mNjtLNn4KMDAyZnNpZ25hdHVyZSAJNq38xYsAafEMGJjV-gyFAhEIRQMSyJcyHE_26icm3Ao΂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1AoÂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHMxS2NQZ2VtLGJvcCZibkMKMDAyZnNpZ25hdHVyZSA3TN7LnS5yl4h57FSwjwg9GfgdePN17_r5hXeFHnU2RAo͂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZLT3hqPWp5PU9uRCM1VEMKMDAyZnNpZ25hdHVyZSC2EoqChhKnAKlLFg2seUiR0-JQqprG-ktdGIfMC6k8qAô1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtlMlJqT3UqWEIsNSs3YzAKMDAyZnNpZ25hdHVyZSA1yZh7wJF3PyG6ywgs4xxgTMQPJbBMDXW2BrgJlZc33go˂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl0LCxpVnpnPWN4OFdEdyoKMDAyZnNpZ25hdHVyZSAvHPED72aJ9dwVSH5v0uE3tWyTMdN6NBhOex2nXfW16Qoʂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVidUpNVXhuOGZWLl8zRUcKMDAyZnNpZ25hdHVyZSCXgK_fzAECd6qxDK5bXpGq3bXHnw2u9AkinbzsoF1L7woɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAjPUM3bmpqTndOZnYrMUoKMDAyZnNpZ25hdHVyZSC_kz-E8YmMBNcAclPvn3n3UpiiaFAKSaPlBkz2lbFOAQoȂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZHK005MFlxMkksc35acnoKMDAyZnNpZ25hdHVyZSB77-Jon2mI9xbF7QXvmsgb-UWL0tcYtDp9oWaY2oeTbQoǂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG00TmlBRUNYaklfIzUxQy0KMDAyZnNpZ25hdHVyZSAhw-vznghM1qodIeuqnym4f7ESqx4RXazHU0ls-7TVmQoƂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwoł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1Qo  o : f1U7a1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCgx//aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3Cgm/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8Cg_ /aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTGc0Lis2MzYqM3VkXnNyUAowMDJmc2lnbmF0dXJlICIg6uN8HQaOzKNnj_FNg9FYNoiSqoT9TRnWywyeAag2CgHȂ/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCgBv/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCg5t-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsK#r$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkyLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJDOWxhTWhSQCNufixZZ3cKMDAyZnNpZ25hdHVyZSDzLoJ5dpqIz0rBvXCYhlb3v6jEWz4h-04531Su4LsFRgoqAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZWNpZCB1c2VyX2lkID0gQGNhc191c2VyPTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLmRpRWFhYk9OTTZ2OEh1SgowMDJmc2lnbmF0dXJlILOLH5HPvjexcEbks8f9RkkMx8yxtyhQZPbH0mI8YfWkCgM l [ $  lH57g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMuO3R3Z0lFdHlFNTFhOEoKMDAyZnNpZ25hdHVyZSA9WCMhYxIQ6llnmPpchLmEr6jOQg0B6NxG_uxP6dlbywo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQom#1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQo`g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmQkcsd34xVTBlNml5TTAKMDAyZnNpZ25hdHVyZSABdTcPgyX8yVTD-6TbXkRBMIld0slF_WoLEFV4QpTzWwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3Ao"1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0Qo!1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBLSjRYeXQ3R0B-X3RSOkkKMDAyZnNpZ25hdHVyZSAFX_b11eBwS97oCMz-uAp99gjpBtPRgBv8NVG-G8slwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgo"1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwo-݂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgo  ] \eQ_'$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 733}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM"], "type": "m.room.power_levels", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"users_default": 0, "ban": 50, "invite": 0, "redact": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50}, "events_default": 0, "state_default": 50, "kick": 50, "users": {"@anon-20191002_181700-165:localhost:8800": 100, "@anon-20191002_181700-166:localhost:8829": 50}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040938381, "hashes": {"sha256": "TRGYk9bjliqdB0APsW5IB9MgcW66qeDqBHErJDaVvp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QQpbm/eHCl3I8ENb8rUy2zRACqtdxO/gE7D8xF6ZIi66rlwFvz8MopErfMrDNtfGviJ73RJ4H3WSm9jOs4HOCA"}}, "unsigned": {"age_ts": 1570040938381, "replaces_state": "$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ"}}p[eQ/$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 732}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-166", "membership": "join"}, "depth": 8, "hashes": {"sha256": "gChUSbLAaNI/y5ABTWOiViUxz4OwecPxqH7aNnnKSE8"}, "origin": "localhost:8829", "origin_server_ts": 1570040937625, "prev_events": ["$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY"], "prev_state": [], "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-166:localhost:8829", "state_key": "@anon-20191002_181700-166:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OQQWnCisAN/0BxdZ4qb5NkyvRHTe1tatf6NqfwdcVNT2STgktlyukjwK0j9Y7rpKSfJg1hq/fuyExR9Evv20AQ"}, "localhost:8829": {"ed25519:a_UxIG": "P5/nzhrdGIrXZs3wVexeEO+Su+qA6Y1JhHjGML69tGcwUZvemZWQNtOJXC5K6YCJN4N0E+TRsFXD2qMoev4RAA"}}, "unsigned": {"age": 86}}ZeQ_M$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 731}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0"], "type": "m.room.aliases", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"aliases": ["#test-20191002_181700-28:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040936848, "hashes": {"sha256": "3dVyDkKViP1qpA+712SWkKtq8Ai3slTdahlCZM6tmZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BldUYAfTa2qbsTHUKLru9qOFy5KWdeIwmI0huOTuaChEGeqCiWdtQs7JCKZ91raUyCASE7EqhbUioUOLp8VOBg"}}, "unsigned": {"age_ts": 1570040936848}}  YeQ_$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 730}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M"], "type": "m.room.history_visibility", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040935892, "hashes": {"sha256": "n/GKVyUUxSsri0xC3elyT/ZKvOQah6XKtC6WoPdkghI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Afchiy5alLPPjBefYZ6yms+POCNaDjr1ZN+kDNbP5SnqNs9PXlGg9+Kd1eQL52CsOWYI+VRoCkl70ybEjul7AA"}}, "unsigned": {"age_ts": 1570040935892}}sXeQ_u$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 729}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU"], "type": "m.room.join_rules", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040935226, "hashes": {"sha256": "MHiEngugWmsfKfYjYpq+l/jJBMfmNWJxzGxb5cfh9oA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EeCYJUCW8pXpFJHPJJgsSsWhVx4Ws65E+sn+qXnzw7Id3uk0c7vRYe8YSuMRbapyhNNSSes75dpuKa9LSvVqCQ"}}, "unsigned": {"age_ts": 1570040935226}}WeQ_9$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 728}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ"], "type": "m.room.canonical_alias", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"alias": "#test-20191002_181700-28:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040934527, "hashes": {"sha256": "r30d2Ik2EKdp8nkR7MyY25EqDUGXJyaqL7X+DaWa2mg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7sp0dhGxxf4R3KSuSUbnuNaISKGTexC8y1r/6s1HvewxUGxDC2p/8Et+COSFa0e3/1p9/mXPNTxQmJz8LDgtBw"}}, "unsigned": {"age_ts": 1570040934527}}jVeQ_c$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 727}{"auth_events": ["$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "type": "m.room.power_levels", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"users": {"@anon-20191002_181700-165:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040933693, "hashes": {"sha256": "quHy36fFN7PRtSK87/X4cJZ+T2ihm4TRCBrHzMvoqTA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "olU+vREEw0BoyLecCk2i/aVtps2DBONp2D+fpE6sevsJj/PH5ZmzPWz6gXPqL3ZSqExKC2S6uS9UyLceJEMmAw"}}, "unsigned": {"age_ts": 1570040933693}} L,2p>  & v D   | J 8 Q  j W % ^ ,d,j8^p> wEX~LR j8d1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q n1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 f1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc Z1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg +1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I b1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Yg1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho01e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg\1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ey1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EH1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKsI0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoT1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE71e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IV1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AE1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4C1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwj1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w]1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qss1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE:1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMs1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4%1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA[1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU&1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkO0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAc1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY1e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD701e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI<1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQl1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4s1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI 1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwL1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8x1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE41e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM 1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ/1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY n1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw Y1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg S1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI B !y#E ? 8   ?`cP03Yym*Q9 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_alias$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qm)Q9 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_alias$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8j(Q3 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levels$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMj'Q3 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levels$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUj&Q3 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E %Q']e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg $Q']e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI #Q']e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosd"Q' e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.create$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4d!Q' e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.create$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wd Q' e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.create$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQpQ? e!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibility$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ohQ/ e!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rules$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkojQ3 e!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE Q']e!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsdQ' e!nteAxExBGJfaGIpuCx:localhost:8800m.room.create$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksuQ'/e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8pQ? e!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibility$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8hQ/ e!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rules$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukjQ3 e!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4 Q']e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YdQ' e!itKDOCtoMkFUETDtle:localhost:8800m.room.create$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYQ3 ee!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!Q'/ee!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqguQ'/e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgjQ3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoQ3 ee!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMsQ))e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYp Q? e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibility$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0h Q/ e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rules$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Mm Q9 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_alias$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUj Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ N)U [ ) $  C# ua /  U { h6 j n<  t[B {Ip8  > IP O  1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 81e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA *1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI ]1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 q1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk;1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY,1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0s1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68y1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkq1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwd1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s51e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwK1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAa1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk{1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0V1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMP1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UW1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY11e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490 1e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU}1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY.1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA {1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 /1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg C1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8#1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 `1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsj1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgb1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA^1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc n1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g a} { y w u sqomkigeca~qeeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~peeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800~oeeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800~neeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~meeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800~leeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800~keeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~jeeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800~ieeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800~heeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~geeQ$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~feeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800~eeeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~deeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~ceeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800~beeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~aeeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~`eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800~_eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~^eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~]eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~\eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~[eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~ZeeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~YeeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~XeeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~WeeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800~VeeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~UeeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~TeeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~SeeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800 #s * K Z  ? Hp D*3_Hpm1eQ? $75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibilitym0eQ? $3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibilitym/eQ? $TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibilitye.eQ/ $p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rulese-eQ/ $4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rulese,eQ/ $nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rulesj+eQ9 $seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_aliasj*eQ9 $5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_aliasj)eQ9 $rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_aliasg(eQ3 $60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levelsg'eQ3 $BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levelsg&eQ3 $x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels %eQ']$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800 $eQ']$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800 #eQ']$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800a"eQ' $F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800m.room.createa!eQ' $RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.createa eQ' $HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800m.room.createmeQ? $85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibilityeeQ/ $0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rulesgeQ3 $e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels eQ']$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800aeQ' $K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800m.room.createreQ'/$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800meQ? $cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibilityeeQ/ $WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rulesgeQ3 $xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels eQ']$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800aeQ' $gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800m.room.creategeQ3 $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accessreQ'/$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800reQ'/$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800geQ3 $pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accessgeQ3 $Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels eQ']$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829 y <y?`eQa $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800{"outlier": false, "stream_ordering": 737}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM"], "content": {"guest_access": "forbidden"}, "depth": 11, "hashes": {"sha256": "Q3ca4EP9yojvW3AaVN9Cmx5XapEVsq1dcG8Y91emwcI"}, "origin": "localhost:8829", "origin_server_ts": 1570040940782, "prev_events": ["$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo"], "prev_state": [], "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-166:localhost:8829", "state_key": "", "type": "m.room.guest_access", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "f33OCN8BqqaHiloZQ3gHJKjl0+0NPTNgj7h+p+BIZHo/1Z8jMMw3/dgd/wts451sVEuhcLGemZYCg4P471vwBg"}}, "unsigned": {"age_ts": 1570040940782, "replaces_state": "$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo"}},_eQ= $l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800{"stream_ordering": 736}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg"], "prev_events": ["$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg"], "type": "m.room.member", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@7:localhost:8800", "content": {"membership": "leave", "kind": "guest"}, "depth": 12, "prev_state": [], "state_key": "@7:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040941799, "hashes": {"sha256": "G1potxuH6QAfO/STtq+OvEx/0HFpd5NKBaYxXqJezoo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XUcSco4BqIcuXPMAUXMD3hTCGLKxFCwgOMO5THgWi/qO9wnlfN2Yt6NdeRBTvHqszj5tkxJ1dDvxfuqi4SaUAw"}}, "unsigned": {"age_ts": 1570040941799, "replaces_state": "$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg"}}^eQ=S$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800{"stream_ordering": 735}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M"], "prev_events": ["$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo"], "type": "m.room.member", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@7:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "7", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@7:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040940503, "hashes": {"sha256": "QsFi3HtWfAGQ8vG2RlET29V6/7leFAKhPIWb5pBei6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zIRJQJq8EZNW6bewx/KSFu9wICAxge7HPU/TmDj9awsiEaJC98WcMtCLYBFT1Uxe2U/6CA6mv3y0fjD2Ca6HDA"}}, "unsigned": {"age_ts": 1570040940503}}{]eQ_$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 734}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4"], "type": "m.room.guest_access", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040939688, "hashes": {"sha256": "U2/V9gdu6k7zcwayoYeQI/dgkJhk9BBjPVebb2FcXFw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RSVaBGIL0lwToiGzACHfXEOYH/UfdpaD1dJjjwx5BIPfJ8oVqWiRkX2mX093dr22Jpjoke9+7gQusr84BN7MCw"}}, "unsigned": {"age_ts": 1570040939688}} N p V $ 3 > D ^, ^ - P ek9q? | J x vF~LR &j8X1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd41e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd41e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsf1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dse1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsd1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMN1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMM1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iML1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok w1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfws1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY |1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY {1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4\1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8 b1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg j1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg i1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg h1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY c1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY b1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY a0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ,1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs f1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs e1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs d1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwu1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwt1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo 0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc|0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc{0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcz1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYH1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd41e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kb1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_ka1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k`1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYE1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYG1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYF1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcY1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD&5rcTE6' sdU7F( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m==m<<m;;m::m99m88m777m66m55mL44m33m22mV11m00m//ma..m--m}!,,mz++mx**mv))ms,((mm''mj&&mhm%%me$$mcc##ma""m^!!mW  mT mQmOmMmI>mBm>Dm<m9Am4.m1m-Mm&2m>m@m<mmm ?  m >  mv  mu  m  mmemcm9m;m|m{mmmkmmmmOmNmLmmmm.m-m,mɍmɎmɐmmmmmbmm/mAm6mmmm m`mmmmmm|mymums:mpmm=mjmfm^mZmVmRmPMmL2mImFjm=qm<m9qm6*m1m/Am,mF[[mBZZm@YYm=XXm7gWWm2sVVm,UUm(ETTm%SSm#lRRm LQQmPPmOOmXNNmiMMm LLm *KKmyJJmwIImcHHmTGGmFFmEEmDDmGCCmHBBmAAm@@mY??mB>>m*m'm_mm&mm#mmm mKmmmmqmmmmxm+m mbmԘmmm`mmmmkmmmm8mmLmm%mm}m{Bmx\muKmr0mjmeYm\8mWmUDmRPmOmKm>m:m5Pm3m0m.cm*Lm'm% #Q 5 L W  C N0X}5a} !FQ bQ']e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMcaQ' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.create$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qc`Q' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.create$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncr_Q))e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYr^Q))e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAr]Q))e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgo\Q? e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibility$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4o[Q? e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibility$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-EgoZQ? e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibility$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXogYQ/ e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rules$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIgXQ/ e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rules$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0gWQ/ e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rules$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICglVQ9 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_alias$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDolUQ9 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_alias$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60QlTQ9 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_alias$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8iSQ3 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levels$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMiRQ3 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levels$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUiQQ3 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E PQ']e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos OQ']e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI NQ']e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgcMQ' e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.create$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4cLQ' e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.create$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wcKQ' e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.create$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQoJQ? e!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibility$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ogIQ/ e!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rules$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkoiHQ3 e!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE GQ']e!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FscFQ' e!nteAxExBGJfaGIpuCx:localhost:8800m.room.create$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhkstEQ'/e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8oDQ? e!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibility$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8gCQ/ e!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rules$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukiBQ3 e!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4 AQ']e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Yc@Q' e!itKDOCtoMkFUETDtle:localhost:8800m.room.create$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY   -sdeQ_u$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 741}{"auth_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4", "$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "prev_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4"], "type": "m.room.join_rules", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040946627, "hashes": {"sha256": "/BjnefDfv8oNTqpIQUJxlXjCjx5/H+Hr5jAexzjCRdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EzCa/NCMoNA1owMXG+KECjRJH4oBcoqArKMAMHZJqeP4olY/qUYePPcMv4UKjy5vhk4lOj1nx8Heb6JUGyTFDQ"}}, "unsigned": {"age_ts": 1570040946627}}jceQ_c$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 740}{"auth_events": ["$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "prev_events": ["$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "type": "m.room.power_levels", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"users": {"@anon-20191002_181700-167:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040945845, "hashes": {"sha256": "U6+GMrDk6ej7Xa8OGe0+HiP800Rctd2kgyAflTj4jmk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nDdPIZwnx3SUanjoyrSWseGt6dUTUEnFWPTarc/S4+4nqqNZPXTSAWQLS17Nn8Al4EAHtFCurfEeHK3V0RhxCQ"}}, "unsigned": {"age_ts": 1570040945845}}ubeQ_y$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 739}{"auth_events": ["$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY"], "prev_events": ["$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY"], "type": "m.room.member", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-167", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-167:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040945184, "hashes": {"sha256": "XYnVTvDuCkBAIYRmoQvu0i+fpdUIBUaKrxxYgOLV6bU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AsFvBqPQS8K+PJ47fIvQmYEr9J8Su6fWl4B1TOXPUNLZ85sX0XJ6FUE540Annq5AtkEbTB/vVFiv8wvQUGQDBg"}}, "unsigned": {"age_ts": 1570040945184}}haeQ__$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 738}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-167:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040944224, "hashes": {"sha256": "eN9n6ZfXGyZfocJgui9Cj+TRduToZpaIqOnPrtjy4Kk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xs21qnDa7a1sAO1jPcHDeCWQb7uRZ9opRwucqJu/eMIr96TJ/NKauCkJGhC3YtTLjlu2nJfXonHrvUXIIYokAA"}}, "unsigned": {"age_ts": 1570040944224}}  xuheQ_y$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 745}{"auth_events": ["$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks"], "prev_events": ["$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks"], "type": "m.room.member", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-168", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-168:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040951855, "hashes": {"sha256": "odskUCKU38xDBMeVIvVCsCwhm+USgjnQJoUIuaTZhvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PfQisXt75bYZOk4GGwRK4S/1LqAmp94GeGQXrrqj/CJj+3IH0MwsVqopHYFlSywLFyH49Uj8RgzcmOlhxbwVDw"}}, "unsigned": {"age_ts": 1570040951855}}hgeQ__$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 744}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-168:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040951105, "hashes": {"sha256": "HNu/R9VxtbFVHzc3cvMR6p4apSNz/KbbMnARbdTFd5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ghMvYenW3+CkZQXKhBdo19btRIHhvwZiy72vSchIMN2AswtobwcRKOUzWiiXbKYN1lXz2215rYDmecieu0kuDw"}}, "unsigned": {"age_ts": 1570040951105}}feQ_/$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 191, "stream_ordering": 743}{"auth_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4", "$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk"], "prev_events": ["$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8"], "type": "m.room.member", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@8:localhost:8800", "content": {"membership": "join", "displayname": "8", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@8:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040948534, "hashes": {"sha256": "WYyws+ZA+e3zAI5EdY/6x5U6Ycy69dJDKRaUByabrRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x4t2t6S7b+7wZPk2z96sMoxEYoAnfePpxUQYLZDSHZVxUF4P7C+xrq6USIwGpqEV/ajJlUV4UiObMXyrdDuIDg"}}, "unsigned": {"age_ts": 1570040948534}}eeQ_$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 742}{"auth_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4", "$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "prev_events": ["$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk"], "type": "m.room.history_visibility", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040947178, "hashes": {"sha256": "01IqVtITEkBPX3gtXbMxgcKgo+WaJiZ1oVVxzEyxmKE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uOUb2Z7JfSRicS4uJKw2KFQxuKSM+zJ3rP6tPqOJXFZR3z2tYjhdCKwD1T+EcZKslVeY/NAVm/PoqiHie2OtAw"}}, "unsigned": {"age_ts": 1570040947178}} a} { y w u sqomkigeca~eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~ eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~ eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~ eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~ eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~ eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~~eeQ$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~}eeQ$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~|eeQ$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~{eeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800~zeeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~yeeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800~xeeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800~weeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~veeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800~ueeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800~teeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~seeQ$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~reeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800 8Cq#( P $  q  3YC!MsmneQ? $cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibilityemeQ/ $WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rulesgleQ3 $xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels keQ']$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800joinajeQ' $gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800m.room.creategieQ3 $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accesswheQ'/$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800leaveeeQ/ $4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_ruleseeQ/ $nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rulesjeQ9 $seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_aliasjeQ9 $5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_aliasj~eQ9 $rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_aliasg}eQ3 $60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levelsg|eQ3 $BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levelsg{eQ3 $x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels zeQ']$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800join yeQ']$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800join xeQ']$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800joinaweQ' $F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800m.room.createaveQ' $RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.createaueQ' $HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800m.room.createmteQ? $85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibilityeseQ/ $0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rulesgreQ3 $e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels qeQ']$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800joinapeQ' $K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800m.room.createvoeQ'/$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800join   6 l c]c@anon-20191002_181700-126:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAo127.0.0.1kc]c@anon-20191002_181700-125:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAo127.0.0.1jc]c@anon-20191002_181700-124:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwo127.0.0.1ic]c@anon-20191002_181700-123:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8Ao127.0.0.1hc]c@anon-20191002_181700-122:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgo127.0.0.1f Pk< sDa[{,L   2 r C     ZQ ,"    rf D7   o @ Z +   qU C' Y.Q!IGVHKYcSuxzVPlFHlj:localhost:8800th.Q!HIZTeBCxvpMSpcqGVD:localhost:8800th.Q!FZOLkaLbBpaibrbHZx:localhost:8800th.Q!EhFUhsgQbBWmrnGmaz:localhost:8800th.Q!EfJcWhdjNARbuHYrqU:localhost:8800th.Q!EyEaTZElOkdURKbEXo:localhost:8800th.Q!EieRtaCFZJJCIOkRPp:localhost:8800th.Q!EhUxBjnSkVXpTrQlrn:localhost:8800th.Q!FAYqpziHeVZugCGaij:localhost:8800th.Q!EyyNoldCLUdFHzXTDP:localhost:8800th.Q!FPcQcheNebvdFvmOnr:localhost:8800th.Q!FbJSiQoZtZkaFwzzQq:localhost:8800th.Q!GBPGYLDkXcAsHgkfuS:localhost:8800th .Q!HAFNBarGuVZuWCgwWM:localhost:8800th.Q!GwXGurbyEmykmmHcHJ:localhost:8800th.Q!GwLdUoDplyVUogXDzu:localhost:8800th.Q!GsjDgpaxdwYfnefiWO:localhost:8800th.Q!GixhPUMvtKSWoKRgvw:localhost:8800th.Q!GiSxJsKZhQVHBkrVPn:localhost:8800th.Q!GgUNbVXspVTpOlaHBl:localhost:8800th .Q!GSxvxNevpCiwmFCHys:localhost:8800th .Q!GGXyLHdVXqhQjPRvac:localhost:8800th .Q!GGTWnzJfvPQBgQqDIE:localhost:8800th .Q!EWkoFeckhXlNyjuIEB:localhost:8800m.Q!EMhFCPhwmnWVnjtXXM:localhost:8800th.Q!EMhFCPhwmnWVnjtXXM:localhost:8800m.Q!ELBgBaMSIMNkjFSumH:localhost:8800th.Q!ELBgBaMSIMNkjFSumH:localhost:8800m.Q!ILbUVZOfPPwaZRrKJd:localhost:8800th-Q!ILbUVZOfPPwaZRrKJd:localhost:8800md.Q!HusOrLtWZTLbmQZxmm:localhost:8800th.Q!HhYREfUiJTpjWmOuPF:localhost:8800th.Q!HcMGemcRrLnLprOJJR:localhost:8800th.Q!HbYxdEuVIeLKHwqJEh:localhost:8800th.Q!HZqzpRgqekPOtxstVc:localhost:8800th.Q!HXfrGcvJCbRItyQLVE:localhost:8800th.Q!HWTlaNxUKnDsrtlOxU:localhost:8800th.Q!HOPyhZPcKkrvSmDIvX:localhost:8800th.Q!ITdmSQpjMnaPoHIbws:localhost:8800m.Q!IPYMCBwcyNIzqdiIWv:localhost:8800th .Q!IPYMCBwcyNIzqdiIWv:localhost:8800m.Q!IMiczgkCTjejbnbeyP:localhost:8800th-Q!IMiczgkCTjejbnbeyP:localhost:8800mP-Q!IGVHKYcSuxzVPlFHlj:localhost:8800m".Q!HusOrLtWZTLbmQZxmm:localhost:8800m-Q!HmkcAMkMjWRhTDJMsy:localhost:8800m+.Q!HhYREfUiJTpjWmOuPF:localhost:8800m-Q!HcMGemcRrLnLprOJJR:localhost:8800m<.Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.Q!HZqzpRgqekPOtxstVc:localhost:8800m.Q!HXfrGcvJCbRItyQLVE:localhost:8800m.Q!HWTlaNxUKnDsrtlOxU:localhost:8800m.Q!HOPyhZPcKkrvSmDIvX:localhost:8800m-Q!HIZTeBCxvpMSpcqGVD:localhost:8800mO-Q!HAFNBarGuVZuWCgwWM:localhost:8800m%-Q!GwXGurbyEmykmmHcHJ:localhost:8800m?.Q!GwLdUoDplyVUogXDzu:localhost:8800m].Q!GsjDgpaxdwYfnefiWO:localhost:8800m-Q!GixhPUMvtKSWoKRgvw:localhost:8800m-Q!GiSxJsKZhQVHBkrVPn:localhost:8800mI-Q!GgUNbVXspVTpOlaHBl:localhost:8800m9.Q!GSxvxNevpCiwmFCHys:localhost:8800m.Q!GGXyLHdVXqhQjPRvac:localhost:8800m-Q!GGTWnzJfvPQBgQqDIE:localhost:8800m.Q!GBPGYLDkXcAsHgkfuS:localhost:8800mP.Q!FklhVuCInffbDxunWv:localhost:8800m.Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.Q!FZOLkaLbBpaibrbHZx:localhost:8800ml-Q!FPcQcheNebvdFvmOnr:localhost:8800ml-Q!FIOuvzpMhoERunVYYA:localhost:8800mz.Q!FAYqpziHeVZugCGaij:localhost:8800m.Q!EyyNoldCLUdFHzXTDP:localhost:8800m-Q!EyEaTZElOkdURKbEXo:localhost:8800m'-Q!EieRtaCFZJJCIOkRPp:localhost:8800mj.Q!EhUxBjnSkVXpTrQlrn:localhost:8800m/.Q!EhFUhsgQbBWmrnGmaz:localhost:8800m8.Q!EfJcWhdjNARbuHYrqU:localhost:8800m.Q!EWkoFeckhXlNyjuIEB:localhost:8800th.Q!FklhVuCInffbDxunWv:localhost:8800th.Q!FIOuvzpMhoERunVYYA:localhost:8800th FOY* o @  U & k < R # h 9 }N e6zKa3w[H,_0tuFF/.Q!NNiyzThHMivrxhojfp:localhost:8800thA.Q!NJdkYMskQwIpIWlWkn:localhost:8800th@.Q!NFWKQvZkIwvecnREOC:localhost:8800th?.Q!NajQnqYmGyTjxhFYar:localhost:8829thE.Q!NZHpBquHDfJAjiawGk:localhost:8800thD.Q!NQgavrmiCPUVaVjssy:localhost:8800thC.Q!NPdjmIfsBVIIkvWBzD:localhost:8800thBD..Q!NcJYmIbgjsaKJOzBcs:localhost:8800m.Q!NboFFVLpJHTeuUKCjM:localhost:8800thG.Q!NboFFVLpJHTeuUKCjM:localhost:8800m.Q!NanhNmCnVVpmZRJrTF:localhost:8800thF.Q!NanhNmCnVVpmZRJrTF:localhost:8800mp.Q!NajQnqYmGyTjxhFYar:localhost:8829m-Q!NZHpBquHDfJAjiawGk:localhost:8800m -Q!NQgavrmiCPUVaVjssy:localhost:8800mi.Q!NPdjmIfsBVIIkvWBzD:localhost:8800m.Q!NNiyzThHMivrxhojfp:localhost:8800m.Q!NJdkYMskQwIpIWlWkn:localhost:8800m.Q!NFWKQvZkIwvecnREOC:localhost:8800m.Q!MqstbCLZIQFiYNHrqR:localhost:8800th>.Q!MqstbCLZIQFiYNHrqR:localhost:8800m.Q!MlzmtUYSZOiByAZdKx:localhost:8800th=-Q!MlzmtUYSZOiByAZdKx:localhost:8800mS.Q!MXhwoqNXvexeDDSOZT:localhost:8800th<.Q!MXhwoqNXvexeDDSOZT:localhost:8800ma.Q!MWCLSWWGdWcSivNVLI:localhost:8800th;-Q!MWCLSWWGdWcSivNVLI:localhost:8800mq.Q!MBWnwKRwFznvRpAzxr:localhost:8800th:.Q!MBWnwKRwFznvRpAzxr:localhost:8800m.Q!LvARVIpJZeRQxbKefX:localhost:8800th9.Q!LvARVIpJZeRQxbKefX:localhost:8800m.Q!LazKtcHZriKzCvvGwV:localhost:8800th8.Q!LazKtcHZriKzCvvGwV:localhost:8800m.Q!LaLcEGFLpjdlYlYKGC:localhost:8800th7-Q!LaLcEGFLpjdlYlYKGC:localhost:8800m.Q!LFBhoxJpmBqFrwEzGP:localhost:8800th6.Q!LFBhoxJpmBqFrwEzGP:localhost:8800m.Q!KxhGcTbEWmtgGNpdox:localhost:8800th5-Q!KxhGcTbEWmtgGNpdox:localhost:8800m,.Q!KmuRTfGFgJdgIDAgIW:localhost:8800th4.Q!KmuRTfGFgJdgIDAgIW:localhost:8800m.Q!KetCYFxrTxawNOGnOf:localhost:8800th3.Q!KetCYFxrTxawNOGnOf:localhost:8800m.Q!KeqmSjifajNKxtgqhj:localhost:8800th2.Q!KeqmSjifajNKxtgqhj:localhost:8800m.Q!KeBlWUQiLYUoILKkTB:localhost:8800th1-Q!KeBlWUQiLYUoILKkTB:localhost:8800mZ.Q!KdOYYnOuwAyQzqwUki:localhost:8800th0.Q!KdOYYnOuwAyQzqwUki:localhost:8800m.Q!KcXNWNfbLcYsBKZHIp:localhost:8800th/.Q!KcXNWNfbLcYsBKZHIp:localhost:8800m.Q!KXMUzALpMMMKqoQXUS:localhost:8800th.-Q!KXMUzALpMMMKqoQXUS:localhost:8800mv.Q!KIHYKMzkRDrJwiywwz:localhost:8800th-.Q!KIHYKMzkRDrJwiywwz:localhost:8800m$.Q!JusxqeECtidaPlWqhp:localhost:8800th,-Q!JusxqeECtidaPlWqhp:localhost:8800mK.Q!JnAKXOrlyisFUpgJPw:localhost:8800th+.Q!JnAKXOrlyisFUpgJPw:localhost:8800m_.Q!JiUawCFQnodcpssOfK:localhost:8800th*.Q!JiUawCFQnodcpssOfK:localhost:8800m.Q!JZouHBRxCRbcxYJnbn:localhost:8800th).Q!JZouHBRxCRbcxYJnbn:localhost:8800m.Q!JYLMokjOhZZlmbZvTf:localhost:8800th(.Q!JYLMokjOhZZlmbZvTf:localhost:8800m.Q!JPTwFTSDaBXwUTgitj:localhost:8800th'.Q!JPTwFTSDaBXwUTgitj:localhost:8800m.Q!JGhlAUflyNxErGGZZu:localhost:8800th&-Q!JGhlAUflyNxErGGZZu:localhost:8800mt.Q!IlGJpjzrvvAFuwTAgo:localhost:8800th%.Q!IlGJpjzrvvAFuwTAgo:localhost:8800m4.Q!IfYYyzLHSOeyJBxBfn:localhost:8800th$.Q!IfYYyzLHSOeyJBxBfn:localhost:8800m.Q!IZkczIYykpZDvjuUWn:localhost:8800th#.Q!IZkczIYykpZDvjuUWn:localhost:8800m.Q!IYxUkyFHOgvhLpdkOA:localhost:8800th".Q!IYxUkyFHOgvhLpdkOA:localhost:8800m^.Q!NeYaCeYNFATCqlrlGT:localhost:8800m.Q!NcJYmIbgjsaKJOzBcs:localhost:8800thH ,`m^ m z ) 6 E R  _ n{*7DQ|+P]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800.P]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800 P]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800 P]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800 P]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800 P]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800N[Q@anon-20191002_181700-22:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:88000P]Q@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800-P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800,P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800+P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800*P]Q@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800)P]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800(P]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800'P]Q@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800&P]Q@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800%P]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800$P]Q@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800#P]Q@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800"N[Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800!P]Q@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800 P]Q@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800P]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800P]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800N[Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800N[Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800 `? \ . v J  d 6 ~P$R f82zLzLf8 R $ n @  l>Z,tF`-]@anon-2019-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-190:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-199:localhost:8800-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800-]@anon-20191002_181700-180:localhost:8829+[@anon-20191002_181700-17:localhost:8800-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800+[@anon-20191002_181700-22:localhost:8800-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800 -]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800+[@anon-20191002_181700-20:localhost:8800 +[@anon-20191002_181700-20:localhost:8800 -]@anon-20191002_181700-209:localhost:8800 NWi%  8| J v* |c Jj   7 Q 1 p>  W\ % D  ] Po= +vD1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs ?1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70U0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pww1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4J1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c)1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kY1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0L1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-oz1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kD0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFII1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ j1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE K1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs !1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i81e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs u1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI l1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwK1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMp1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ81e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U{1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs,1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWse0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ'1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU *1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg +1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc b1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU91e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY?1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs ;1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y S  hleQ__$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 749}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-169:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040956125, "hashes": {"sha256": "10DVyVIKFZ2DcNCgCcyXAqtklNoeuCtOQ/d6a1/5Trs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o5PUjaRKsauX+gOfqMsDkA63z/1gaeV9vzgn/GGtE067zDDCqawhPG9/G4qdTG212dY+wfsJwZ9cdLlEWLyyDA"}}, "unsigned": {"age_ts": 1570040956125}}keQ_$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 748}{"auth_events": ["$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE", "$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks", "$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "prev_events": ["$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko"], "type": "m.room.history_visibility", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040953852, "hashes": {"sha256": "RtQv38CW96f4RSegNk0AMx1iNbA0fx/opCB4C9+3JY0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2j+1vVqjV7PrdKjNtHqruLCgTwsjdINOJUxPspmxjERxB1RvXNdFfHY94Rt5DnLL7xG2dAiolriMSJwaWYQOAg"}}, "unsigned": {"age_ts": 1570040953852}}sjeQ_u$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 747}{"auth_events": ["$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE", "$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks", "$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "prev_events": ["$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE"], "type": "m.room.join_rules", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040953186, "hashes": {"sha256": "IXV3sNVQZVbYqWxhLYHwrt4IxDKRuVRGGZD1FyVLuTg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4mLCtYsfDlS/134DynbHhajxtDFbeXNAjsgT8jnlnZVZqULFsrzj+YszoIhRVanqOLh7xdsOlT1hJUu6vH8uCA"}}, "unsigned": {"age_ts": 1570040953186}}jieQ_c$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 746}{"auth_events": ["$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks", "$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "prev_events": ["$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "type": "m.room.power_levels", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"users": {"@anon-20191002_181700-168:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040952546, "hashes": {"sha256": "WnlXqh8o+way1bZDd8sapgVyVpFzvfcysUp+kGBQhNI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UUdcYQkPCnj6wJglY3AvkDT7Oi2O6qJvmaYlMXM1+UIkVD9QoVavW1kna8elsNKbOVBzP3FkRv7tFRqkUP8uDA"}}, "unsigned": {"age_ts": 1570040952546}} V \  t , .'/z!e)Q ]$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAm.room.aliases!lAGTcYIuMBXsVRGCOe:localhost:8800mm@anon-20191002_181700-169:localhost:8800!e)Q ]$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgm.room.aliases!WVzjUePHrzCjfyTbmK:localhost:8800mkm@anon-20191002_181700-169:localhost:8800,~e?Q ]$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4m.room.history_visibility!UyLoIXmzVFwycmBUeh:localhost:8800mm@anon-20191002_181700-169:localhost:8800,}e?Q ]$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egm.room.history_visibility!lAGTcYIuMBXsVRGCOe:localhost:8800mmb@anon-20191002_181700-169:localhost:8800,|e?Q ]$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXom.room.history_visibility!WVzjUePHrzCjfyTbmK:localhost:8800mm@anon-20191002_181700-169:localhost:8800${e/Q ]$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIm.room.join_rules!UyLoIXmzVFwycmBUeh:localhost:8800mOm:@anon-20191002_181700-169:localhost:8800$ze/Q ]$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0m.room.join_rules!lAGTcYIuMBXsVRGCOe:localhost:8800mNmO@anon-20191002_181700-169:localhost:8800$ye/Q ]$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgm.room.join_rules!WVzjUePHrzCjfyTbmK:localhost:8800mLmޮ@anon-20191002_181700-169:localhost:8800)xe9Q ]$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDom.room.canonical_alias!UyLoIXmzVFwycmBUeh:localhost:8800mmj@anon-20191002_181700-169:localhost:8800)we9Q ]$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qm.room.canonical_alias!lAGTcYIuMBXsVRGCOe:localhost:8800mm@anon-20191002_181700-169:localhost:8800)ve9Q ]$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8m.room.canonical_alias!WVzjUePHrzCjfyTbmK:localhost:8800mmA@anon-20191002_181700-169:localhost:8800&ue3Q ]$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMm.room.power_levels!UyLoIXmzVFwycmBUeh:localhost:8800m.m0@anon-20191002_181700-169:localhost:8800&te3Q ]$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUm.room.power_levels!lAGTcYIuMBXsVRGCOe:localhost:8800m-mӁ@anon-20191002_181700-169:localhost:8800&se3Q ]$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8Em.room.power_levels!WVzjUePHrzCjfyTbmK:localhost:8800m,m@anon-20191002_181700-169:localhost:8800 re'Q ]$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgm.room.member!UyLoIXmzVFwycmBUeh:localhost:8800mɍmW@anon-20191002_181700-169:localhost:8800 qe'Q ]$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIm.room.member!lAGTcYIuMBXsVRGCOe:localhost:8800mɎm̳@anon-20191002_181700-169:localhost:8800 pe'Q ]$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosm.room.member!WVzjUePHrzCjfyTbmK:localhost:8800mɐm"@anon-20191002_181700-169:localhost:8800o e'Q  ]$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4m.room.create!WVzjUePHrzCjfyTbmK:localhost:8800mm@anon-20191002_181700-169:localhost:8800n e'Q  ]$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wm.room.create!lAGTcYIuMBXsVRGCOe:localhost:8800mm{@anon-20191002_181700-169:localhost:8800m e'Q  ]$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQm.room.create!UyLoIXmzVFwycmBUeh:localhost:8800mm@anon-20191002_181700-169:localhost:8800,le?Q ]$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0om.room.history_visibility!nteAxExBGJfaGIpuCx:localhost:8800mm@anon-20191002_181700-168:localhost:8800$ke/Q ]$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkom.room.join_rules!nteAxExBGJfaGIpuCx:localhost:8800mbmP@anon-20191002_181700-168:localhost:8800&je3Q ]$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEm.room.power_levels!nteAxExBGJfaGIpuCx:localhost:8800mm@anon-20191002_181700-168:localhost:8800 D4UPq8 T  p 7 S  o 6 R n5Rn5Qm4Qm8e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94sha2568e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snssha2568e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ysha2568e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3csha256p8e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4sha256S8e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYsha2568e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4sha256 8e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIsha256 ,8e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBYsha2568e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlEsha2568e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEsha2567e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwksha256v8e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4sha256E8e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQosha256f8e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYsha2568e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwsha2568e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQsha256r8e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcsha256?8e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcsha2568e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMsha256 8e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4sha256 8e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0pssha2568e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIsha2568e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gsha256V8e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50sha256 8e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyEsha2568e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0sha2568e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLksha2568e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggsha2568e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8sha256o8e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAsha256C7e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicsha256R8e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0sha2568e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgsha2568e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wksha256 8e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQsha2568e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgsha2568e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gsha2568e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIsha256;8e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0osha256 8e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScsha256,8e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888sha256 8e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAsha256d8e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMsha256 98e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_Esha256 8e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAsha256 8e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEsha256-8e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGEsha2568e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqosha256 8e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Oksha256O8e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TAsha256'8e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcsha2568e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUsha2568e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Lssha256 8e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Kssha2568e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0sha256e8e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcsha2568e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tosha256<8e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEsha2568e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Asha2568e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYsha256R8e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Usha2568e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8sha256 {8e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIsha2568e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zosha256 8e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucsha256F8e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYsha256 8e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYsha256 A Fji7o= ]u , C 0>{ Ip8O V%b+ ^ v D  | K   X & 01e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k 1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQb1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL980e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkh1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Ix1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAI1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQa1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcR1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM^1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU31e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR411e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQh0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoW1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo 1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc 1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc  1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo W1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 D1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY ?1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI &21e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 A]1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs>1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQp1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI|1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEl0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE}1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4#1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4n1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI t1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 a1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY ,1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70 G%j8p> x F  ~ L2  R X & ^ ,dk9W%q? wE}KQ1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc R1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI}1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwI1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMn1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ)1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg 1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y D1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs 01e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Uy1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWse1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs 0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ'1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU*1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcf1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs ,1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4H1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c'1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs V1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI M1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kW1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0J1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU 1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70S1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE <1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ [1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkq1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagK1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkZ1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM 51e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMy1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE )1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc" NWi%  8| J v* |c Jj   7 Q 1 p>  W\ % D  ] Po= +vD1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs ?1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70U0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pww1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4J1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c)1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kY1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0L1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-oz1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kD0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFII1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ j1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE K1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs !1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs s1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI j1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwK1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMp1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ81e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U{1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs,1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWse0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ'1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU *1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg +1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc b1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU91e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY91e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs ;1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y S KxJJb6 ~ P " j >  X * t F  ` 2 |N h: V(pB^0xd6U'-]@anon-20191002_181700-296:localhost:8800N-]@anon-20191002_181700-236:localhost:8800-]@anon-20191002_181700-235:localhost:8800-]@anon-20191002_181700-234:localhost:8800-]@anon-20191002_181700-233:localhost:8800-]@anon-20191002_181700-295:localhost:8800M-]@anon-20191002_181700-294:localhost:8800L-]@anon-20191002_181700-293:localhost:8800K-]@anon-20191002_181700-292:localhost:8800J-]@anon-20191002_181700-291:localhost:8800I-]@anon-20191002_181700-290:localhost:8800H+[@anon-20191002_181700-28:localhost:88000-]@anon-20191002_181700-289:localhost:8800G-]@anon-20191002_181700-288:localhost:8800F-]@anon-20191002_181700-287:localhost:8800E-]@anon-20191002_181700-286:localhost:8800D-]@anon-20191002_181700-285:localhost:8800C-]@anon-20191002_181700-284:localhost:8800B-]@anon-20191002_181700-283:localhost:8800A-]@anon-20191002_181700-282:localhost:8800@-]@anon-20191002_181700-281:localhost:8800?-]@anon-20191002_181700-280:localhost:8800>+[@anon-20191002_181700-27:localhost:8800/-]@anon-20191002_181700-279:localhost:8800=-]@anon-20191002_181700-278:localhost:8800<-]@anon-20191002_181700-277:localhost:8800;-]@anon-20191002_181700-276:localhost:8800:-]@anon-20191002_181700-275:localhost:88009-]@anon-20191002_181700-274:localhost:88008-]@anon-20191002_181700-273:localhost:88006-]@anon-20191002_181700-272:localhost:88007-]@anon-20191002_181700-271:localhost:88004-]@anon-20191002_181700-270:localhost:88005+[@anon-20191002_181700-26:localhost:8800.-]@anon-20191002_181700-269:localhost:88003-]@anon-20191002_181700-268:localhost:88002-]@anon-20191002_181700-267:localhost:88001-]@anon-20191002_181700-266:localhost:88000-]@anon-20191002_181700-265:localhost:8800/-]@anon-20191002_181700-264:localhost:8800.-]@anon-20191002_181700-263:localhost:8800--]@anon-20191002_181700-262:localhost:8800,-]@anon-20191002_181700-261:localhost:8800+-]@anon-20191002_181700-260:localhost:8800*+[@anon-20191002_181700-25:localhost:8800--]@anon-20191002_181700-259:localhost:8800)-]@anon-20191002_181700-258:localhost:8800(-]@anon-20191002_181700-257:localhost:8800'-]@anon-20191002_181700-255:localhost:8800&-]@anon-20191002_181700-254:localhost:8800%-]@anon-20191002_181700-253:localhost:8800$-]@anon-20191002_181700-252:localhost:8800#-]@anon-20191002_181700-251:localhost:8800"-]@anon-20191002_181700-250:localhost:8800!+[@anon-20191002_181700-24:localhost:8800,-]@anon-20191002_181700-249:localhost:8800 -]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-241:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800+-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-232:localhost:8800 -]@anon-20191002_181700-231:localhost:8800 -]@anon-20191002_181700-230:localhost:8800 +[@anon-20191002_181700-22:localhost:8800*-]@anon-20191002_181700-229:localhost:8800 -]@anon-20191002_181700-228:localhost:8800 KxJJb6 ~ P " j >  X * t F  ` 2 |N h: V(pB^0xd6U'-]@anon-20191002_181700-296:localhost:8800N-]@anon-20191002_181700-236:localhost:8800-]@anon-20191002_181700-235:localhost:8800-]@anon-20191002_181700-234:localhost:8800-]@anon-20191002_181700-233:localhost:8800-]@anon-20191002_181700-295:localhost:8800M-]@anon-20191002_181700-294:localhost:8800L-]@anon-20191002_181700-293:localhost:8800K-]@anon-20191002_181700-292:localhost:8800J-]@anon-20191002_181700-291:localhost:8800I-]@anon-20191002_181700-290:localhost:8800H+[@anon-20191002_181700-28:localhost:88000-]@anon-20191002_181700-289:localhost:8800G-]@anon-20191002_181700-288:localhost:8800F-]@anon-20191002_181700-287:localhost:8800E-]@anon-20191002_181700-286:localhost:8800D-]@anon-20191002_181700-285:localhost:8800C-]@anon-20191002_181700-284:localhost:8800B-]@anon-20191002_181700-283:localhost:8800A-]@anon-20191002_181700-282:localhost:8800@-]@anon-20191002_181700-281:localhost:8800?-]@anon-20191002_181700-280:localhost:8800>+[@anon-20191002_181700-27:localhost:8800/-]@anon-20191002_181700-279:localhost:8800=-]@anon-20191002_181700-278:localhost:8800<-]@anon-20191002_181700-277:localhost:8800;-]@anon-20191002_181700-276:localhost:8800:-]@anon-20191002_181700-275:localhost:88009-]@anon-20191002_181700-274:localhost:88008-]@anon-20191002_181700-273:localhost:88006-]@anon-20191002_181700-272:localhost:88007-]@anon-20191002_181700-271:localhost:88004-]@anon-20191002_181700-270:localhost:88005+[@anon-20191002_181700-26:localhost:8800.-]@anon-20191002_181700-269:localhost:88003-]@anon-20191002_181700-268:localhost:88002-]@anon-20191002_181700-267:localhost:88001-]@anon-20191002_181700-266:localhost:88000-]@anon-20191002_181700-265:localhost:8800/-]@anon-20191002_181700-264:localhost:8800.-]@anon-20191002_181700-263:localhost:8800--]@anon-20191002_181700-262:localhost:8800,-]@anon-20191002_181700-261:localhost:8800+-]@anon-20191002_181700-260:localhost:8800*+[@anon-20191002_181700-25:localhost:8800--]@anon-20191002_181700-259:localhost:8800)-]@anon-20191002_181700-258:localhost:8800(-]@anon-20191002_181700-257:localhost:8800'-]@anon-20191002_181700-255:localhost:8800&-]@anon-20191002_181700-254:localhost:8800%-]@anon-20191002_181700-253:localhost:8800$-]@anon-20191002_181700-252:localhost:8800#-]@anon-20191002_181700-251:localhost:8800"-]@anon-20191002_181700-250:localhost:8800!+[@anon-20191002_181700-24:localhost:8800,-]@anon-20191002_181700-249:localhost:8800 -]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-241:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800+-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-232:localhost:8800 -]@anon-20191002_181700-231:localhost:8800 -]@anon-20191002_181700-230:localhost:8800 +[@anon-20191002_181700-22:localhost:8800*-]@anon-20191002_181700-229:localhost:8800 -]@anon-20191002_181700-228:localhost:8800 6  (6upeQ_y$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 753}{"auth_events": ["$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w"], "prev_events": ["$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w"], "type": "m.room.member", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-169", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-169:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040957326, "hashes": {"sha256": "6CijxQ+lYojZsr5RJlyvYxbqjI9TszepVocdBvE6nQc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JGYakKJSyfdPlmzdGfeEifCwWspJQyqdgPauSN7pKpEdmpqGnpeiku1oTOUv6GNm5IFhFOloVd3r2g5xAN5DDA"}}, "unsigned": {"age_ts": 1570040957326}}uoeQ_y$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 752}{"auth_events": ["$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4"], "prev_events": ["$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4"], "type": "m.room.member", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-169", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-169:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040957328, "hashes": {"sha256": "8gmq+qlasGrl/F8wa0QhRIPi73C40J6f7MfDmBHnnEM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hYPgJCXpSjN9JL8JC5blP29O2nIefPdrfB4v6z9Do/DzF2GZULPLmUG/rPZbEQXrreHd4ktdgvMzRJasCHbGCQ"}}, "unsigned": {"age_ts": 1570040957328}}hneQ__$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 751}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-169:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040956127, "hashes": {"sha256": "ZIYNCEmCuugiu78PgCxTsghkEcjlNmIPjeHpbwMa0Qs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MlhWQOmP1uSE3CijjRvtjZA6hRUDi4RbGk6N+GpEM9tKzQ+rw1zEauCEYQS0oPx81RsJKofsHdpBM4UUy1xbBg"}}, "unsigned": {"age_ts": 1570040956127}}hmeQ__$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 750}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-169:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040956126, "hashes": {"sha256": "Gam8IFiqeNCMCGuuTU0/wIf6c3Rt9FHh96y9L4UCC7Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CXoyL1nqytdXIWALuZeX7R68yNzI5qaPi4Mt9lIhCByO6K6kaAwpGC8pR6NrXUJ5hBcsB5KPI/DIxl8qcabnAw"}}, "unsigned": {"age_ts": 1570040956126}} ~z v r n j fb^ZVRNJF7eeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:88006eeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:88005eeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I!zFdNewlKnUiMBxnYrN:localhost:88004eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:88003eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:88002eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:88001eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:88000eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800/eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800.eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800-eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800,eeQ$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800+eeQ$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800*eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800)eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800(eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800'eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800&eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800%eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800$eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800#eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800"eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800!eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800 eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800  jseQ_c$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 756}{"auth_events": ["$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "type": "m.room.power_levels", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"users": {"@anon-20191002_181700-169:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040958765, "hashes": {"sha256": "LN0PJXBRhOo/WRd/HZlvK01nLnoVbTOF9d+xrb8jdsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qQCymEkjIu8PnShp7HBfVLdR1eWWRUzTu+H68IRK9SZzF+j8XvVgdK2Q68U6o5/dxyx9x7wwNkT+c1etJoQqCA"}}, "unsigned": {"age_ts": 1570040958765}}jreQ_c$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 755}{"auth_events": ["$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "type": "m.room.power_levels", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"users": {"@anon-20191002_181700-169:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040958764, "hashes": {"sha256": "YvFdrCNFyU/w8ICPC9HWJMsO692BdXhXR494iSZTpZc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rxfDdBSHn9Epu4PwdospjXJORlEXPYKEc3+gAStmxmy7OGFLziyu54JorIiv0VKL3PrEP547/DNwF0Dp5lg9DQ"}}, "unsigned": {"age_ts": 1570040958764}}uqeQ_y$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 754}{"auth_events": ["$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ"], "prev_events": ["$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ"], "type": "m.room.member", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-169", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-169:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040957325, "hashes": {"sha256": "CY7xlGB5wUsdWXLW4a6efB66tV48kyRlB9306EUdKCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R+cOwYsvqNDI2+dv4+pMYDaqjhXNXceglxsFTibVeihd0XvxMFEN4RhHIGdTT5ieQHgId7JlBW77S4VnHAg6Aw"}}, "unsigned": {"age_ts": 1570040957325}} ,NC 8 - { " p  e ZOD9.|#qf VeL$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0sha256ډ%4OE]l*[:VeL$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Usha256xU>@5iO]@F1#qgVeL$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqosha2569)<&# KoN͹VeL$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUsha256EaZJt *j>xOVeL$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53Asha256FE16s2"2N IKpVeL$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMsha256͆QyGI8J VeL$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAsha2564֒_XmHec2†VeL$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4sha256f9xFg4n&q\nVeL$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwsha256g3EWU&U 6k0ʗVeL$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qksha25616*JҫkT:ˆ֩VeL$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jtssha256 !2PVߗtfȄGvbS]-&VeL$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7ssha256K@W48)ŻD: Mٕ̝b˻VeL$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhosha256VL 8rgie {aVVeL$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYsha256OS39]Y!SV9=s .VeL$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6Esha256~w=q.*s$d<+6>trV eL$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMsha256W*ϼ}pJ,R~vV eL$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4sha256T]N/"r"y N[0$r4jWGB>V eL$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4Isha256L6שPBSaۃ3ť1ցV eL$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inosha256`{ATJw-0:qErq.Og2g}+z~Jfca~+1vVeL$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAsha256$\S$$_'Yy5-S(բd, V~eL$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgsha256kNIT`8:?`hΥ$dV}eL$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4sha256) a36!7Gmd0ԉV|eL$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egsha256i<."W nH saxEr<{(HV{eL$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXosha256L"Gk]s0 ~m / %zVzeL$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIsha256w;C̓Xs'?T6rxg5VyeL$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0sha256~eU'nLq!65y)VxeL$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgsha256KUGp~/Ql 8Qᜂ5 (VweL$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDosha256暄q/1"4 GG_&Hx:VveL$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qsha256忹u#baAzgDVueL$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8sha256G7l9h_xVteL$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMsha256CzWp BVc$kRG5sVseL$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUsha256`}V8muV3gCv܅!%VreL$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8Esha2560~g|Εл`kl)VqeL$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgsha256tcf|Ol6 &FPʳUk(ź  @ ` V , L l < \R@` ?2hZU_v]s@anon-20191002_181700-184:localhost:8800@anon-20191002_181700-184:localhost:8800 LemurLovernt]@anon-20191002_181700-182:localhost:8800@anon-20191002_181700-182:localhost:8800 anon-20191002_181700-182ns]@anon-20191002_181700-181:localhost:8800@anon-20191002_181700-181:localhost:8800 anon-20191002_181700-181nr]@anon-20191002_181700-179:localhost:8800@anon-20191002_181700-179:localhost:8800 anon-20191002_181700-179nq]@anon-20191002_181700-180:localhost:8829@anon-20191002_181700-180:localhost:8829 anon-20191002_181700-180np]@anon-20191002_181700-178:localhost:8800@anon-20191002_181700-178:localhost:8800 anon-20191002_181700-178no]@anon-20191002_181700-176:localhost:8800@anon-20191002_181700-176:localhost:8800 anon-20191002_181700-176_n]s@anon-20191002_181700-175:localhost:8800@anon-20191002_181700-175:localhost:8800 Overriddennm]@anon-20191002_181700-174:localhost:8800@anon-20191002_181700-174:localhost:8800 anon-20191002_181700-174_l]s@anon-20191002_181700-173:localhost:8800@anon-20191002_181700-173:localhost:8800 Overriddennk]@anon-20191002_181700-170:localhost:8800@anon-20191002_181700-170:localhost:8800 anon-20191002_181700-170ni]@anon-20191002_181700-168:localhost:8800@anon-20191002_181700-168:localhost:8800 anon-20191002_181700-168(h/3@8:localhost:8800@8:localhost:8800 8ng]@anon-20191002_181700-167:localhost:8800@anon-20191002_181700-167:localhost:8800 anon-20191002_181700-167nf]@anon-20191002_181700-166:localhost:8829@anon-20191002_181700-166:localhost:8829 anon-20191002_181700-166ne]@anon-20191002_181700-165:localhost:8800@anon-20191002_181700-165:localhost:8800 anon-20191002_181700-165.d/?@6:localhost:8800@6:localhost:8800 creepernc]@anon-20191002_181700-164:localhost:8800@anon-20191002_181700-164:localhost:8800 anon-20191002_181700-164nb]@anon-20191002_181700-163:localhost:8800@anon-20191002_181700-163:localhost:8800 anon-20191002_181700-163na]@anon-20191002_181700-162:localhost:8800@anon-20191002_181700-162:localhost:8800 anon-20191002_181700-162nu]@anon-20191002_181700-183:localhost:8800@anon-20191002_181700-183:localhost:8800 anon-20191002_181700-183(`/3@3:localhost:8800@3:localhost:8800 3n_]@anon-20191002_181700-161:localhost:8800@anon-20191002_181700-161:localhost:8800 anon-20191002_181700-161(^/3@2:localhost:8800@2:localhost:8800 2n]]@anon-20191002_181700-160:localhost:8800@anon-20191002_181700-160:localhost:8800 anon-20191002_181700-160n\]@anon-20191002_181700-158:localhost:8800@anon-20191002_181700-158:localhost:8800 anon-20191002_181700-158n[]@anon-20191002_181700-156:localhost:8800@anon-20191002_181700-156:localhost:8800 anon-20191002_181700-156nZ]@anon-20191002_181700-154:localhost:8800@anon-20191002_181700-154:localhost:8800 anon-20191002_181700-154nY]@anon-20191002_181700-153:localhost:8800@anon-20191002_181700-153:localhost:8800 anon-20191002_181700-153nX]@anon-20191002_181700-152:localhost:8800@anon-20191002_181700-152:localhost:8800 anon-20191002_181700-152nj]@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800 anon-20191002_181700-169 #yC R [  G gI]l*9BjyaTeQ' $XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800m.room.create SeQ']$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800mReQ? $0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibilityeQeQ/ $SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rulesgPeQ3 $2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels OeQ']$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800aNeQ' $5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800m.room.create MeQ']$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800mLeQ? $gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibilityeKeQ/ $DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rulesgJeQ3 $uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels IeQ']$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800aHeQ' $ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.createsGeQ'1$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk!VCSCNemqikJZiRtxrs:localhost:8829m.room.member@12:localhost:8800sFeQ'1$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts!StEnDjTJToXKXsOHNf:localhost:8829m.room.member@11:localhost:8800aEeQ' $S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avataraDeQ' $mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatarmCeQ? $T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibilitypBeQ))$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800pAeQ))$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800m@eQ? $pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibilitym?eQ? $2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibilitye>eQ/ $ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rulese=eQ/ $wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rulesj<eQ9 $4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_aliasj;eQ9 $9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_aliasg:eQ3 $cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levelsg9eQ3 $FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels 8eQ']$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800 7eQ']$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800a6eQ' $fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800m.room.createa5eQ' $1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800m.room.createp4eQ))$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800p3eQ))$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800p2eQ))$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800  v weQ_#$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 760}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM"], "type": "m.room.canonical_alias", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"alias": "#listingtest1:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040960730, "hashes": {"sha256": "Ni9Dgj8NR9WOcEvmNa/JU7UOTvcR+F1g5o8qlc9HgNo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cBkfQdk8w+sPy6GV+wozknS2Z+MtbZmY1EwxfzfIvKaeZ4zfk2eYiFIe49C+8CiqFcp8F5LjWQyfQBF6fI2lAA"}}, "unsigned": {"age_ts": 1570040960730}} veQ_#$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 759}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU"], "type": "m.room.canonical_alias", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"alias": "#listingtest2:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040960729, "hashes": {"sha256": "RB4t7iqjyu8lwYRLG2u4ClZLQsLJpNBQWXguLXPctgM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tc1v/54OdZz9LT6MWllhQ6N8Q+FqLDCOoH/aB/57eJvtrbPm7MnqNhUzQz/AH2WfIjnMFbUGdbUgf6dvOHO6CQ"}}, "unsigned": {"age_ts": 1570040960729}} ueQ_#$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 758}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E"], "type": "m.room.canonical_alias", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"alias": "#listingtest0:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040960727, "hashes": {"sha256": "+mCSKpvBgyuBLHXj3OOV/RZOC/rPteNOFKvRQIkRRRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h3oq+ittaY9Cn9+mG4pAC7t13FweNq0PZd/x0aW7QZrtFSUzAoIuwkTaN4G7v2w5zhYZRUmFT2hxDXb86azsCQ"}}, "unsigned": {"age_ts": 1570040960727}}jteQ_c$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 757}{"auth_events": ["$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "type": "m.room.power_levels", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"users": {"@anon-20191002_181700-169:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040958766, "hashes": {"sha256": "NZNm4X6wi9RMqhizv99u4++mdGFVfzKOVrEkX6M6EBM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bb3dQKxVJnG+ZimiyXRTew1DWlTCVzuElg8XCoxkcVkZSAv1AGCJe3P0BFAG5qJVkVFoiggHa/cRyghH9FTzAQ"}}, "unsigned": {"age_ts": 1570040958766}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1@e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1?e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1>e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1=e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1<e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg1;e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1:e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw19e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg18e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ17e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y816e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX415e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM14e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q13e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc12e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI11e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk10e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho 1/e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4 1.e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0 1-e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo 1,e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY 1+e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1*e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01)e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1(e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1'e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1&e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1%e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81$e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041#e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01"e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg1!e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1 e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1 e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1 e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41 e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1 e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1 e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1~e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1}e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41|e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1{e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1ze$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1ye$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01xe$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1we$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1ve$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q "q%O i - 6 9\0D=orqdLQ' e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.create$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo8KQ']ee!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4pJQ? e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibility$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53AhIQ/ e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rules$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMjHQ3 e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA GQ']e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4dFQ' e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.create$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwdEQ' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avatar$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sdDQ' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatar$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoCQ? ee!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4IsBQ))e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6EsAQ))e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMp@Q? e !KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibility$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4p?Q? e !zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4Ih>Q/ e !KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rules$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoh=Q/ e !zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rules$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4m<Q9 e !KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_alias$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAm;Q9 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_alias$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0j:Q3 e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levels$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIj9Q3 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg 8Q']e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM 7Q']e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60d6Q' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.create$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qd5Q' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.create$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncs4Q))e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYs3Q))e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAs2Q))e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgp1Q? e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibility$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4p0Q? e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibility$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egp/Q? e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibility$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXoh.Q/ e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rules$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIh-Q/ e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rules$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0h,Q/ e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rules$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgm+Q9 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_alias$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo -RM H C > 9 4/*|%w rmhc TQe!tDsPLsKOLPePtEWRwn:localhost:8800$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04TQe!tDsPLsKOLPePtEWRwn:localhost:8800$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0TQe!tDsPLsKOLPePtEWRwn:localhost:8800$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgT~Qe!tDsPLsKOLPePtEWRwn:localhost:8800$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAT}Qe!tDsPLsKOLPePtEWRwn:localhost:8800$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0T|Qe!tDsPLsKOLPePtEWRwn:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMT{Qe!tDsPLsKOLPePtEWRwn:localhost:8800$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwTzQe!XMNRkfscQXRjgYrOSd:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMTyQe!XMNRkfscQXRjgYrOSd:localhost:8800$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwTxQe!XMNRkfscQXRjgYrOSd:localhost:8800$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoTwQe!XMNRkfscQXRjgYrOSd:localhost:8800$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0TvQe!XMNRkfscQXRjgYrOSd:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6UTuQe!XMNRkfscQXRjgYrOSd:localhost:8800$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqoTtQe!wUuodvgsmAJqKJUBCQ:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUTsQe!wUuodvgsmAJqKJUBCQ:localhost:8800$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53ATrQe!wUuodvgsmAJqKJUBCQ:localhost:8800$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMTqQe!wUuodvgsmAJqKJUBCQ:localhost:8800$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwATpQe!wUuodvgsmAJqKJUBCQ:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4ToQe!wUuodvgsmAJqKJUBCQ:localhost:8800$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwTnQe!KeBlWUQiLYUoILKkTB:localhost:8800$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoTmQe!zFdNewlKnUiMBxnYrN:localhost:8800$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sTlQe!zFdNewlKnUiMBxnYrN:localhost:8800$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYTkQe!KeBlWUQiLYUoILKkTB:localhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ETjQe!zFdNewlKnUiMBxnYrN:localhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMTiQe!KeBlWUQiLYUoILKkTB:localhost:8800$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4ThQe!zFdNewlKnUiMBxnYrN:localhost:8800$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4ITgQe!KeBlWUQiLYUoILKkTB:localhost:8800$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoTfQe!zFdNewlKnUiMBxnYrN:localhost:8800$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4TeQe!KeBlWUQiLYUoILKkTB:localhost:8800$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FATdQe!zFdNewlKnUiMBxnYrN:localhost:8800$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0TcQe!KeBlWUQiLYUoILKkTB:localhost:8800$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdITbQe!zFdNewlKnUiMBxnYrN:localhost:8800$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USgTaQe!zFdNewlKnUiMBxnYrN:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60T`Qe!KeBlWUQiLYUoILKkTB:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMT_Qe!zFdNewlKnUiMBxnYrN:localhost:8800$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7QT^Qe!KeBlWUQiLYUoILKkTB:localhost:8800$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncT]Qe!UyLoIXmzVFwycmBUeh:localhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYT\Qe!lAGTcYIuMBXsVRGCOe:localhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAT[Qe!WVzjUePHrzCjfyTbmK:localhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgTZQe!UyLoIXmzVFwycmBUeh:localhost:8800$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4TYQe!lAGTcYIuMBXsVRGCOe:localhost:8800$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-EgTXQe!WVzjUePHrzCjfyTbmK:localhost:8800$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXoTWQe!UyLoIXmzVFwycmBUeh:localhost:8800$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKITVQe!lAGTcYIuMBXsVRGCOe:localhost:8800$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0TUQe!WVzjUePHrzCjfyTbmK:localhost:8800$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg  {eQ_$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 764}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg"], "type": "m.room.history_visibility", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040963557, "hashes": {"sha256": "ETWLq7awi3bCEjcfvjKMeeLf3Ln1uaSTv6l2VmoBF50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4P/CbuGzrdzh5g1KuDVSl7ESZQ25ZxLYr4sPvGwipZ8unnoVhuU2SdyN1iCZmG4uuQtxIF3r8ODbDYmLaLaQDA"}}, "unsigned": {"age_ts": 1570040963557}}szeQ_u$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 763}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo"], "type": "m.room.join_rules", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040962127, "hashes": {"sha256": "DdGRsOae/CMyhvUEPI8mhOL4ZReoHpXKY3bpsd/BWGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ehFRwEQC5P5F/wW3UGPBPgy/mIJ5do/TagOU+JcX1idkm8MJ+WiaEYlTphK1u+CSlKwmBrQEBPn7TZsh2DL0Aw"}}, "unsigned": {"age_ts": 1570040962127}}syeQ_u$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 762}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q"], "type": "m.room.join_rules", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040962126, "hashes": {"sha256": "4JLPM+QLvCxSDG/JrW0ZOvOkBXMXViLaKT+4k2REnPM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "057xHLuiPFmXDkSl1fMhS26b6Si1/Xwe+juPIYhKr+BW/FaP3U8SE4SBfnTgmRMG/bB26Ma9+75iMt1jP8LRCA"}}, "unsigned": {"age_ts": 1570040962126}}sxeQ_u$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 761}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8"], "type": "m.room.join_rules", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040962124, "hashes": {"sha256": "pQm92Tq0DP11fhy7oSf3tbWbQ3FIgf/szoHoPliQwm0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gi88S5AyPa3ULixK0WUNXLkwG/J7fQ+i60VEAqqXPykLvy6wKblLBcdCWFYCZbYKFpEQuXcrNXhS8zD51qoFCg"}}, "unsigned": {"age_ts": 1570040962124}} a} { y w u sqomkigeca~/eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~.eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~-eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~,eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~+eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~*eeQ$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~)eeQ$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~(eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~'eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~&eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~%eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~$eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~#eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800~"eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~!eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~ eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800  xXeQ_7$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 768}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg"], "type": "m.room.aliases", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"aliases": ["#listingtest2:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040965553, "hashes": {"sha256": "Kmpz+TBAOJkbY1yD2mMMzpDTl9K/TIalApsDXzhUe5A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wv3rCMk4Qlfgq5k8txBLxX5+f2gZZByJn9L3SmTnvwnHScx9OQ5c5tI4N/ZwZF65CXfHnwXoFl9CZhPorJMyAQ"}}, "unsigned": {"age_ts": 1570040965553}}~eQ_7$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 767}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo"], "type": "m.room.aliases", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"aliases": ["#listingtest0:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040965483, "hashes": {"sha256": "QGW67fz0vEv8ZFKICt3xZmHYueemYCr4FJmZ3i6hCGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TIKsOlk/6zJf+qMkYbuHtRblSbF75Twu/Qoj9QL34Q76vFsD4jnZ4/lr/4bhFGscdozlQKIkI1jqvdEdKXZWAQ"}}, "unsigned": {"age_ts": 1570040965483}}}eQ_$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 766}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI"], "type": "m.room.history_visibility", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040963560, "hashes": {"sha256": "0jNXXfTjmB77hkCatcPU3Z6VZRDtsnhyB0u+3Zqc+JE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YnpjJ6GiTAxmEBvV9K2lU/+rNeQ5IUc3F1SG4shokOD9g2NgmGQR73W9guJrFs3DQ4RCDcfoIkvAiDib4RoNAg"}}, "unsigned": {"age_ts": 1570040963560}}|eQ_$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 765}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0"], "type": "m.room.history_visibility", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040963559, "hashes": {"sha256": "TKOGdFaJyX/zD5XwKKpqSLHEbQac0lgL3v4CkWJnWtA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wS5MdfEa3xy35hqKYHO1Y9K15qnRX01f24NKTMH/PSNcwEs9zbRV4U0VLk5O6h/+mwl+pbugy5xePYT1SlejAA"}}, "unsigned": {"age_ts": 1570040963559}} -RM H C > 9 4/*|%w rmhc T.Qe+!BGbJEmJRVJGlZFQbZe:localhost:8800$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwT-Qe*!BGbJEmJRVJGlZFQbZe:localhost:8800$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1cT,Qe)!BGbJEmJRVJGlZFQbZe:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYT+Qe(!BGbJEmJRVJGlZFQbZe:localhost:8800$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8T*Qe'!tDsPLsKOLPePtEWRwn:localhost:8800$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04T)Qe&!tDsPLsKOLPePtEWRwn:localhost:8800$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0T(Qe%!tDsPLsKOLPePtEWRwn:localhost:8800$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgT'Qe$!tDsPLsKOLPePtEWRwn:localhost:8800$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAT&Qe#!tDsPLsKOLPePtEWRwn:localhost:8800$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0T%Qe"!tDsPLsKOLPePtEWRwn:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMT$Qe!!tDsPLsKOLPePtEWRwn:localhost:8800$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwT#Qe !XMNRkfscQXRjgYrOSd:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMT"Qe!XMNRkfscQXRjgYrOSd:localhost:8800$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwT!Qe!XMNRkfscQXRjgYrOSd:localhost:8800$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoT Qe!XMNRkfscQXRjgYrOSd:localhost:8800$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0TQe!XMNRkfscQXRjgYrOSd:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6UTQe!XMNRkfscQXRjgYrOSd:localhost:8800$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqoTQe!wUuodvgsmAJqKJUBCQ:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUTQe!wUuodvgsmAJqKJUBCQ:localhost:8800$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53ATQe!wUuodvgsmAJqKJUBCQ:localhost:8800$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMTQe!wUuodvgsmAJqKJUBCQ:localhost:8800$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwATQe!wUuodvgsmAJqKJUBCQ:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4TQe!wUuodvgsmAJqKJUBCQ:localhost:8800$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwTQe!zFdNewlKnUiMBxnYrN:localhost:8800$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYTQe!zFdNewlKnUiMBxnYrN:localhost:8800$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sTQe!KeBlWUQiLYUoILKkTB:localhost:8800$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoTQe!zFdNewlKnUiMBxnYrN:localhost:8800$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYTQe!KeBlWUQiLYUoILKkTB:localhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ETQe!zFdNewlKnUiMBxnYrN:localhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMTQe !KeBlWUQiLYUoILKkTB:localhost:8800$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4TQe !zFdNewlKnUiMBxnYrN:localhost:8800$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4ITQe !KeBlWUQiLYUoILKkTB:localhost:8800$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoTQe !zFdNewlKnUiMBxnYrN:localhost:8800$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4T Qe !KeBlWUQiLYUoILKkTB:localhost:8800$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAT Qe!zFdNewlKnUiMBxnYrN:localhost:8800$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0T Qe!KeBlWUQiLYUoILKkTB:localhost:8800$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIT Qe!zFdNewlKnUiMBxnYrN:localhost:8800$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USgT Qe!KeBlWUQiLYUoILKkTB:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMTQe!zFdNewlKnUiMBxnYrN:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60TQe!zFdNewlKnUiMBxnYrN:localhost:8800$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7QTQe!KeBlWUQiLYUoILKkTB:localhost:8800$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncTQe!UyLoIXmzVFwycmBUeh:localhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYTQe!lAGTcYIuMBXsVRGCOe:localhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbATQe!WVzjUePHrzCjfyTbmK:localhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgTQe!UyLoIXmzVFwycmBUeh:localhost:8800$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4 >KW%E+}KQ  v D  |]p J  8 P  V $ \ *b0j9q? wjp>1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww 1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww 1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Aq1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Ap1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Ao1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE71e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE61e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE51e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y 1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk (1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk '1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk &1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww 1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0 1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ 1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dky0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkx0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkw1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0 1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA `1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA _1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA ^1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA W1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA V1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA U1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4O1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4N1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4M1e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E1e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg1e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo j21e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4]1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Md1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M L+}KQp> v D  | J  Q  W ] Wj % ] ,+d28j8p> wE%1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 m1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc J1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 91e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig 71e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA 1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 S1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw /1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU r1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkA1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM `1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8S1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA 1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokF0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwU1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ^1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53ER1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0[1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0Z1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0Y1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 %0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAR1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8X1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 }1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs-1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak 1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0g0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY 1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYq1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI k1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY 1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk h1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sR1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sQ1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 {1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg |t l d \ U MF>6.&eeQ$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800 eeeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800eeQ$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800eeQ$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800 ieeQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:8800 2eeQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800 teeQ$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800HeeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800CeeQ$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800 eeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800EeeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800сeeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800EeeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800XeeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800keeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800 eeQ$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800[eeQ$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800 WeeQ$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800jeeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800leeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:88001eeQ$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800  I] ~ L  R X &  ^ ,pd28j8q? wWE}jKQ> v D  %]]]+1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI|1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScn1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks61e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toA1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Ap1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukE1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8D1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q' 21e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k11e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE 1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4IC1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksp1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw}1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY;1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IR1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk01e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E &1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEE1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI 1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y k1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c S1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY 71e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 61e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE  h |ueQ_y$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 772}{"auth_events": ["$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q"], "prev_events": ["$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q"], "type": "m.room.member", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-170", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-170:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040969019, "hashes": {"sha256": "254khwPyey+IOJmKtWwu2w6eFSGQxmFdFTfrV3hJEAQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c1hTwf30LlfmEVn3hVlXelaWBC7Pg+7SIe/GyPdBl6QmRziNMy93xbDcR0d9Pt69fl3E50idUdC/u5trT/w4Dw"}}, "unsigned": {"age_ts": 1570040969019}}heQ__$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 771}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-170:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040968060, "hashes": {"sha256": "7hoxHrnlDRa2Wq977uitzmclhzufz2t/Dc+Uvjp78Kg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rh3LoLQXtin7me+eZAkNlqHlzaac1dE8K8gVL9bSQK8ga1aYzZWE1BXmwqjNVyy9ikRi0/mwV3t5O9iR5/rFAA"}}, "unsigned": {"age_ts": 1570040968060}}heQ__$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 770}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-170:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040968059, "hashes": {"sha256": "0a1U2Ovhdw5K2Rm8cKwIdZNjcqU+CKYRXIyd02ZXiKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GtUap1D60qXvJ1pteUk11CyqSI5apUn9xzUhdnnGnjRpu2dFbmfd+QkbHZwEuNXtOyiJGmXDm20jwA4rgfyKCA"}}, "unsigned": {"age_ts": 1570040968059}}eQ_7$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 769}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4"], "type": "m.room.aliases", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"aliases": ["#listingtest1:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040965554, "hashes": {"sha256": "u4nwEVnwE9sn0U1YBQhiai/43t1lrYdstSxkSAZ/+Vg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ayzhInCtxYiVevbw7tFFKBAR5pgDsRCSUP4IuSzbp8BWhdm44I9zBVizLV2aAP4esH0lX6btu4OBQIzpeQhyAw"}}, "unsigned": {"age_ts": 1570040965554}} O[ s % { ! y!q'w/EO$e/Q ]$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMm.room.join_rules!wUuodvgsmAJqKJUBCQ:localhost:8800m<m<@anon-20191002_181700-173:localhost:8800&e3Q ]$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAm.room.power_levels!wUuodvgsmAJqKJUBCQ:localhost:8800m9Am:D@anon-20191002_181700-173:localhost:8800 e'Q ]$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4m.room.member!wUuodvgsmAJqKJUBCQ:localhost:8800m4.m4@anon-20191002_181700-173:localhost:8800 e'Q  ]$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwm.room.create!wUuodvgsmAJqKJUBCQ:localhost:8800m1m1@anon-20191002_181700-173:localhost:8800 e'Q ]$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkm.room.member!VCSCNemqikJZiRtxrs:localhost:8829m-Mm-Z@anon-20191002_181700-172:localhost:8829 e'Q ]$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jtsm.room.member!StEnDjTJToXKXsOHNf:localhost:8829m&2m(%@anon-20191002_181700-171:localhost:8829 e'Q ] $S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sm.room.avatar!zFdNewlKnUiMBxnYrN:localhost:8800m>m%=@anon-20191002_181700-170:localhost:8800 e'Q ] $mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhom.room.avatar!KeBlWUQiLYUoILKkTB:localhost:8800m@m"l@anon-20191002_181700-170:localhost:8800,e?Q ]$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYm.room.history_visibility!zFdNewlKnUiMBxnYrN:localhost:8800m<m!@anon-20191002_181700-170:localhost:8800!e)Q ]$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6Em.room.aliases!KeBlWUQiLYUoILKkTB:localhost:8800mm@anon-20191002_181700-170:localhost:8800!e)Q ]$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMm.room.aliases!zFdNewlKnUiMBxnYrN:localhost:8800mm@anon-20191002_181700-170:localhost:8800, e?Q ]$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4m.room.history_visibility!KeBlWUQiLYUoILKkTB:localhost:8800m ?m @anon-20191002_181700-170:localhost:8800, e?Q ]$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4Im.room.history_visibility!zFdNewlKnUiMBxnYrN:localhost:8800m >m 2@anon-20191002_181700-170:localhost:8800$ e/Q ]$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inom.room.join_rules!KeBlWUQiLYUoILKkTB:localhost:8800mvm@anon-20191002_181700-170:localhost:8800$ e/Q ]$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4m.room.join_rules!zFdNewlKnUiMBxnYrN:localhost:8800mum@anon-20191002_181700-170:localhost:8800) e9Q ]$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAm.room.canonical_alias!KeBlWUQiLYUoILKkTB:localhost:8800mmd@anon-20191002_181700-170:localhost:8800)e9Q ]$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0m.room.canonical_alias!zFdNewlKnUiMBxnYrN:localhost:8800mm@anon-20191002_181700-170:localhost:8800&e3Q ]$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIm.room.power_levels!KeBlWUQiLYUoILKkTB:localhost:8800mem?@anon-20191002_181700-170:localhost:8800&e3Q ]$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USgm.room.power_levels!zFdNewlKnUiMBxnYrN:localhost:8800mcm@anon-20191002_181700-170:localhost:8800 e'Q ]$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMm.room.member!KeBlWUQiLYUoILKkTB:localhost:8800m9m@anon-20191002_181700-170:localhost:8800 e'Q ]$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60m.room.member!zFdNewlKnUiMBxnYrN:localhost:8800m;m.@anon-20191002_181700-170:localhost:8800 e'Q  ]$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qm.room.create!zFdNewlKnUiMBxnYrN:localhost:8800m|m@anon-20191002_181700-170:localhost:8800 e'Q  ]$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncm.room.create!KeBlWUQiLYUoILKkTB:localhost:8800m{mX@anon-20191002_181700-170:localhost:8800!e)Q ]$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYm.room.aliases!UyLoIXmzVFwycmBUeh:localhost:8800mm2@anon-20191002_181700-169:localhost:8800   eQ_%$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 776}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg"], "type": "m.room.canonical_alias", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"alias": "#worldreadable:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040971928, "hashes": {"sha256": "Jns2UvSlwcr9v9/I7JNLnfWUy/gBBIboCxNy72+Hya0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ULVVehjIKatSDJgnnUf3d3afAQwy8aYlJ+adEldJqA7DJ26oBWhPNJUE/cbochKwmm7syF3SEJ0Z4gUVLph+DQ"}}, "unsigned": {"age_ts": 1570040971928}}jeQ_c$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 775}{"auth_events": ["$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "type": "m.room.power_levels", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"users": {"@anon-20191002_181700-170:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040970341, "hashes": {"sha256": "dHOFTHErGzDHH4woKQBkoOC/h3lxQy4s/60/DYmBFOo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EIEql4EWDMx0fWBC2ybFh+aah6W+cMEix1EMLaWq4PASxMpHdZdB6juQZSGYevwR4YSrzvtiHZ7NNBQvn/H+Bw"}}, "unsigned": {"age_ts": 1570040970341}}jeQ_c$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 774}{"auth_events": ["$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "type": "m.room.power_levels", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"users": {"@anon-20191002_181700-170:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040970339, "hashes": {"sha256": "9bkRqHHoSvMgjcDUkPIDK/qgiT5l58nZNwZaD/A2lpk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o2j5c+pwk8Wj5/1Xd6IYRIpb5tqProBJq4c6CbVpO9gEXOqB2kYt/DhVavhiOmyYWIU93j80FROIoisnk2/zAA"}}, "unsigned": {"age_ts": 1570040970339}}ueQ_y$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 773}{"auth_events": ["$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc"], "prev_events": ["$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc"], "type": "m.room.member", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-170", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-170:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040969017, "hashes": {"sha256": "ygpRJZbYo9cLdrFAWrHYvjgkQ9SvybkNB54AnsmCI70"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9CsQE5TS48t2TVJIjs6JP8KDz8y5ISYIX90T5onEs7//9rJMAn3J/9+bYjcIxOiwjXjJnvQQHLctzVs6ifpNCw"}}, "unsigned": {"age_ts": 1570040969017}} "q* Q u   A uzDCNs "cQ' e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.create$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8rQ))e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04oQ? e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibility$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0gQ/ e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rules$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEglQ9 e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_alias$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAiQ3 e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0 ~Q']e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMc}Q' e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.create$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw |Q']e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMo{Q? e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibility$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwgzQ/ e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rules$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoiyQ3 e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0 xQ']e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6UcwQ' e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.create$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo vQ']e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUouQ? e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibility$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53AgtQ/ e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rules$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMisQ3 e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA rQ']e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4cqQ' e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.create$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwcpQ' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatar$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhocoQ' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avatar$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sonQ? e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYrmQ))e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ErlQ))e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMokQ? e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibility$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4ojQ? e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4IgiQ/ e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rules$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoghQ/ e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rules$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4lgQ9 e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_alias$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAlfQ9 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_alias$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0ieQ3 e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levels$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIidQ3 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg cQ']e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60 ^G,d2Qk9q? wE,j8q? K w F  ~ L   R  X X & ^ ,}&^2^21e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I e1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc K1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig 80e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo 41e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk i1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y81e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4D1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwk1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w^1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE;1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMu1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4&1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA\1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU'1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkP1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAd1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYr1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-41e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s]1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s[1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 01e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU s1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkB1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM a1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwe1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Yh1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho11e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s001e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg]1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ez1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EI1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoU1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE81e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IW1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AF1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo a} { y w u sqomkigeca~NeeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~MeeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~LeeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~KeeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~JeeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~IeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~HeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~GeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~FeeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~EeeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~DeeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~CeeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~BeeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~AeeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~@eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~?eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~>eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~=eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~<eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~;eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~:eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~9eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~8eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~7eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~6eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~5eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~4eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~3eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~2eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~1eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~0eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800  n eQ_$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 780}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4"], "type": "m.room.history_visibility", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040973886, "hashes": {"sha256": "0pg5dtl1sZ8Qxvnwkv5HDOqUc0qHisdYclWjYviwQOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2QyS3faHOxqhTmK6NHnaKPv8+dgi5WEg8VMBq3vQhO0b2jmfFKhjCDMWWklRez7pEr5miNOf0TLDz3uTeulvCg"}}, "unsigned": {"age_ts": 1570040973886}}s eQ_u$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 779}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA"], "type": "m.room.join_rules", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040972918, "hashes": {"sha256": "85hHEvmyGkIfq4/agAmVFodeVZ6UhsQNaVCbjuvGKJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "56xNH0WBnEm2vTQHsdzayHDJIc+ROjK3gN7yIogbIZoh47XaDmnd1cOMuzQfIevbDsVbVF/sOOUuc4roXFwtCg"}}, "unsigned": {"age_ts": 1570040972918}}s eQ_u$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 778}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0"], "type": "m.room.join_rules", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040972917, "hashes": {"sha256": "Z+Hh+j4s+Gzw1s4ZImsYdSmwYB1y9Tt0oPI2xgs7luY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BofS4l8VvRp451RoXZ5ChUiK6tA6FiyGpL/7O9ncT63zEydElf5hR8oskfcSznQwb0epKiQYM6Apc9tr5osPDw"}}, "unsigned": {"age_ts": 1570040972917}}eQ_+$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 777}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI"], "type": "m.room.canonical_alias", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"alias": "#nonworldreadable:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040971930, "hashes": {"sha256": "73sSqH1oEwcMzSCrxaM62POVhuSciuU3mh1r8xY8Tf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iw3wrW5KUAfHA6f0Wfl0X5vHorZA303VZCp18L+EVkRKtSxfuBRntFl2ZemtRLquFkJLyHG/mP4IbCbXkVwPBw"}}, "unsigned": {"age_ts": 1570040971930}} V  4 ] hm)0P jU*V[a!eQ' $5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800m.room.createmeQ? $gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibilityeeQ/ $DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rulesgeQ3 $uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels eQ']$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800joinaeQ' $ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.createaeQ' $S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avataraeQ' $mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatarmeQ? $T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibilityjeQ9 $4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_aliasjeQ9 $9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_aliasgeQ3 $cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levelsgeQ3 $FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels eQ']$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800join eQ']$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800joina eQ' $fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800m.room.createa eQ' $1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800m.room.createp eQ))$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800peQ))$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800peQ))$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800meQ? $75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibilitymeQ? $3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibilitymeQ? $TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibilitypeQ))$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800peQ))$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800meQ? $pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibilityeeQ/ $p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_ruleseeQ/ $ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_ruleseeQ/ $wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rules q xCqNeQ_+$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 784}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM"], "type": "m.room.history_visibility", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040977980, "hashes": {"sha256": "1POr0OeYvLLfOSk1r3ibreWuHvao6jtzIndsxgC+6ts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CGlgXLy/JBw2PzwFzVJWr4OecqsaInI559TSvvryJeOLinUpL3SpXsLcZIFUm4d2jBAsP51KigGBBoCDFtA/Aw"}}, "unsigned": {"age_ts": 1570040977980, "replaces_state": "$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I"}}eQ_?$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 783}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4"], "type": "m.room.aliases", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"aliases": ["#nonworldreadable:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040975043, "hashes": {"sha256": "wHO4K0Pc30CBOVAW+/uLdI8PwlC+uPf7sLDdyPqr3y4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RN5t5Q97cIL05/GoNl3PAML0cR6ZwFft9WnRxzdg3rGWAB36vfcY4ser/fQBybO+WXX67rlSl7Jwpnfp+WvNCg"}}, "unsigned": {"age_ts": 1570040975043}} eQ_9$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 782}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I"], "type": "m.room.aliases", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"aliases": ["#worldreadable:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040975041, "hashes": {"sha256": "Bq6Awbfye8mXQeGwwjfI8pzoZU5XlgndNDorVUnTZAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6Nh37VbvgDSB8bbK0yfai2RdHu98YJWUhHgHWjOUcoXlUqCkj0H9rcOmBJtzRU1QjRBEgeSkfkSS7bkWS620Dg"}}, "unsigned": {"age_ts": 1570040975041}} eQ_$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 781}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino"], "type": "m.room.history_visibility", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040973887, "hashes": {"sha256": "bARW44Qy1SoBI2q1F0BQXbC7k6chHaTWMlwtQPiYuvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "55aO9QGEAF3UTpTP7l0p+EGBywsYdooFygj2N03KAYA57MttVZX0iCMUwJNlILHSOroIJbbcBVxUWYij7vzBBQ"}}, "unsigned": {"age_ts": 1570040973887}}  {zeQA$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts!StEnDjTJToXKXsOHNf:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 787}{"auth_events": ["$aZOoh1G2uwIQY35RIJsN5Nol-X67s9EZkgq6wolJV3o", "$oqef6H00voZpTwKaiclPcy6NB6CKguORI2afgN6nIWE", "$8_X27WizqdZONc8_x2b4SKQ-oxpbE1qT0QRe5kRcp98", "$1wxdDQwaKWXSPPbdxLajTapfMh68eVXrq9cn2SG00F4"], "content": {"avatar_url": null, "displayname": "11", "membership": "invite"}, "depth": 8, "hashes": {"sha256": "St4LNJdTKVO/YjZkd43QVOusRUptSj4NmyKwHKpLYfg"}, "origin": "localhost:8829", "origin_server_ts": 1570040981042, "prev_events": ["$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk"], "prev_state": [], "room_id": "!StEnDjTJToXKXsOHNf:localhost:8829", "sender": "@anon-20191002_181700-171:localhost:8829", "state_key": "@11:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "hDrH+P/J5m9tcBQxkVRGPqY+aqZyI7zA2JaNEUeJaTcOBCgfMr/wx7HTbh/WA1rqMU2UlV2GpfYWer994iFJDQ"}, "localhost:8800": {"ed25519:a_OdAo": "HxraPZqqEnLrc0kZPmZOyNyUkcpiTQeENECIdWFbB9eY6ry5pVmV1IGahWguGJoiy2P6fLJepG54DwkA83lOAA"}}, "unsigned": {"age": 7, "invite_room_state": [{"content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-171:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-171", "membership": "join"}, "sender": "@anon-20191002_181700-171:localhost:8829", "state_key": "@anon-20191002_181700-171:localhost:8829", "type": "m.room.member"}]}}eQ_$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 786}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM"], "type": "m.room.avatar", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"url": "https://example.com/ringtails.jpg"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040977982, "hashes": {"sha256": "Y3tpzj7B2UHWT+YNhmYOiRJ3iom+hbzkJ9WKaMMOW0k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OarTb3mYjNo78QSVfyoYw92qxONPkkVzTlp4wGLBWB2Qtjvjmx39kjrIOAdm/UTg6sXBPyQDN/xYsT/5D/oYDA"}}, "unsigned": {"age_ts": 1570040977982}}eQ_$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 785}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E"], "type": "m.room.avatar", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"url": "https://example.com/ruffed.jpg"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040977984, "hashes": {"sha256": "/XadDILHPIencRznCShjvRhFpSf4YZjgWZIxh46laZk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mWkW5+oJfuFMrbBk+OlParpzMj/ee4hkZEZ79aMB3JAQ2szaeVXTCy0Xt7TMsEBefljrDxDnZjgiT8SAErKMAQ"}}, "unsigned": {"age_ts": 1570040977984}} ~z v r n j fb^ZVRNJFUeeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800TeeQ$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800SeeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800ReeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800QeeQ$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800PeeQ$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800OeeQ$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800NeeQ$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800MeeQ$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800LeeQ$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800KeeQ$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800JeeQ$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800IeeQ$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800HeeQ$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800GeeQ$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800FeeQ$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800EeeQ$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800DeeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800CeeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800BeeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800AeeQ$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800@eeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800?eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800>eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800=eeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800<eeQ$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800;eeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH4!VCSCNemqikJZiRtxrs:localhost:8829:eeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk!StEnDjTJToXKXsOHNf:localhost:88299eeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:88008eeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800 a} { y w u sqomkigeca~meeQ$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800~leeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800~keeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~jeeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800~ieeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800~heeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~geeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800~feeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800~eeeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~deeQ$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~ceeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800~beeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~aeeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800~`eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800~_eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~^eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800~]eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800~\eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~[eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800~ZeeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800~YeeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~XeeQ$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~WeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$vg1PldPyHXQjZRe62yrZ_TeLuhqs2uKk2GBlCxkB5e8!VCSCNemqikJZiRtxrs:localhost:8829~VeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$WAZSK7WwpL2K4mliboAFFWgXOPUDW14kxXeE2t3rn24!VCSCNemqikJZiRtxrs:localhost:8829~UeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$RbLYxz9wpsLZYH1_2FBk_ArpAo3RY3FDxxuwFp_1c08!VCSCNemqikJZiRtxrs:localhost:8829~TeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$muLIa9hfLAC8hk3ZNvOwcxU3AzZyauMBaYkDmf7dXXk!VCSCNemqikJZiRtxrs:localhost:8829~SeeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$1wxdDQwaKWXSPPbdxLajTapfMh68eVXrq9cn2SG00F4!StEnDjTJToXKXsOHNf:localhost:8829~ReeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$8_X27WizqdZONc8_x2b4SKQ-oxpbE1qT0QRe5kRcp98!StEnDjTJToXKXsOHNf:localhost:8829~QeeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$oqef6H00voZpTwKaiclPcy6NB6CKguORI2afgN6nIWE!StEnDjTJToXKXsOHNf:localhost:8829~PeeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$aZOoh1G2uwIQY35RIJsN5Nol-X67s9EZkgq6wolJV3o!StEnDjTJToXKXsOHNf:localhost:8829~OeeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800 8c F  8 q3lP8CN e]]Q=$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0@anon-20191002_181700-186:localhost:8800@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800joinanon-20191002_181700-186MM e]]Q=!$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8@anon-20191002_181700-185:localhost:8800@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800joinanon-20191002_181700-185LemurLoverCL e]]Q=$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ@anon-20191002_181700-185:localhost:8800@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800joinanon-20191002_181700-1855K e]]Q!$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY@anon-20191002_181700-184:localhost:8800@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800joinLemurLoverCJ e]]Q=$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw@anon-20191002_181700-184:localhost:8800@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800joinanon-20191002_181700-184CI e]]Q=$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A@anon-20191002_181700-183:localhost:8800@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800joinanon-20191002_181700-183CH e]]Q=$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw@anon-20191002_181700-182:localhost:8800@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800joinanon-20191002_181700-182CG e]]Q=$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ@anon-20191002_181700-181:localhost:8800@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800joinanon-20191002_181700-181CF e]]Q=$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4@anon-20191002_181700-179:localhost:8800@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800joinanon-20191002_181700-179CE e]]Q=$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM@anon-20191002_181700-180:localhost:8829@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800joinanon-20191002_181700-180CD e]]Q=$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4@anon-20191002_181700-178:localhost:8800@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800joinanon-20191002_181700-178,C e]]Q$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo@anon-20191002_181700-177:localhost:8800@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800leaveCB e]]Q=$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY@anon-20191002_181700-177:localhost:8800@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800joinanon-20191002_181700-177CA e]]Q=$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY@anon-20191002_181700-176:localhost:8800@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800joinanon-20191002_181700-176C@ e]]Q=$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM@anon-20191002_181700-176:localhost:8800@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800joinanon-20191002_181700-1765? e]]Q!$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM@anon-20191002_181700-175:localhost:8800@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800joinOverriddenC> e]]Q=$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U@anon-20191002_181700-174:localhost:8800@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800joinanon-20191002_181700-1745= e]]Q!$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU@anon-20191002_181700-173:localhost:8800@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800joinOverriddenC< e]]Q=$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4@anon-20191002_181700-173:localhost:8800@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800joinanon-20191002_181700-173; e1]Q$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk@12:localhost:8800@anon-20191002_181700-172:localhost:8829!VCSCNemqikJZiRtxrs:localhost:8829invite12: e1]Q$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts@11:localhost:8800@anon-20191002_181700-171:localhost:8829!StEnDjTJToXKXsOHNf:localhost:8829invite11  ueQ_y$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 790}{"auth_events": ["$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw"], "prev_events": ["$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw"], "type": "m.room.member", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-173", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-173:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040984622, "hashes": {"sha256": "hkdWZ8h3Hbg0VuqA4Y0fr9Jp1mLF0R47PhwQKAAM64Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VgNpA9SOJ4WiMEDMEM/zIUIGo/reMLNfp3Txn9KV09JOcnccCQwrcFBVhWpP3G8yQ30JzS6/0Dxi3B1WayTlBA"}}, "unsigned": {"age_ts": 1570040984622}}heQ__$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 789}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-173:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040983957, "hashes": {"sha256": "i8AzCxnRV5/c8GNH9KwsKngCDnwBFHGU0WNL9je9Tpo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7bekTcg/jZIPMMGDA0yBzRy8fQoh43qq9tyyaWSVn1yIvWLmidSAgOxP5wCpYR+1YWxcDg0LpCfCpHYmJhz7BA"}}, "unsigned": {"age_ts": 1570040983957}}zeQA$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk!VCSCNemqikJZiRtxrs:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 788}{"auth_events": ["$muLIa9hfLAC8hk3ZNvOwcxU3AzZyauMBaYkDmf7dXXk", "$RbLYxz9wpsLZYH1_2FBk_ArpAo3RY3FDxxuwFp_1c08", "$WAZSK7WwpL2K4mliboAFFWgXOPUDW14kxXeE2t3rn24", "$vg1PldPyHXQjZRe62yrZ_TeLuhqs2uKk2GBlCxkB5e8"], "content": {"avatar_url": null, "displayname": "12", "membership": "invite"}, "depth": 8, "hashes": {"sha256": "70ioKWgda3BBPEObZzFs9kjX7Sq93BQieUDjUCUg+QM"}, "origin": "localhost:8829", "origin_server_ts": 1570040982861, "prev_events": ["$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH4"], "prev_state": [], "room_id": "!VCSCNemqikJZiRtxrs:localhost:8829", "sender": "@anon-20191002_181700-172:localhost:8829", "state_key": "@12:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "leDLjMx8+6uQtwTYlt6RHcPWrBGlwzNcER/xKKSg3K7Gcch0TbG2tw7ansfx1DzpF8So3V2lzJXY2gdHAJNTAQ"}, "localhost:8800": {"ed25519:a_OdAo": "Ut1K8rIT0A7bLym5NWO3EvhtEOWgRx2MKlBeXPnPWzK3r4HrJt1/madMFTvDEaygQLs8jjrPO48XfkGoPyrdBA"}}, "unsigned": {"age": 5, "invite_room_state": [{"content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-172:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-172", "membership": "join"}, "sender": "@anon-20191002_181700-172:localhost:8829", "state_key": "@anon-20191002_181700-172:localhost:8829", "type": "m.room.member"}]}} M Y 1 uM ]c!E@anon-20191002_181700-182:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4goTONQTGLEJV127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-181:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswoEXTONIIZTH127.0.0.1Perl + Net::Async::HTTP/0.44m)]c!E@anon-20191002_181700-179:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQoLJJECQVQQO127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-178:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAoRLQRIRERLR127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-177:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAoHOVRIDACJI127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-176:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgoKYCPIRLNMA127.0.0.1Perl + Net::Async::HTTP/0.44m\]c!E@anon-20191002_181700-175:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgoLQUTZGXEPW127.0.0.1Perl + Net::Async::HTTP/0.44mV]c!E@anon-20191002_181700-174:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywoXYSQAGTUQW127.0.0.1Perl + Net::Async::HTTP/0.44mH]c!E@anon-20191002_181700-173:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAoHMAAIYSKTY127.0.0.1Perl + Net::Async::HTTP/0.44m1B{1a%E@12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWFUOm9kWmNsaVVebUA3VAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDrrNTqIEv5XDg0_ZAJPV_qQ87WBt8jea6wyg-AODVijCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m/Z   eQ_!$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 794}{"auth_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA", "$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM"], "prev_events": ["$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A"], "type": "m.room.member", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"displayname": "Overridden", "membership": "join", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-173:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040988371, "hashes": {"sha256": "BPWTRuk2Q0icOJPv7Fx1/D1EWrgdojGTKUqqb6Hf44U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RUKeleaAv8DVLye7hsSYH9CDl9g7LNfOTOpHnDNgDfdQHNCpxbCDz0qpJntxr3ZBsiHToF+91h8VkxqiJN5xBQ"}}, "unsigned": {"age_ts": 1570040988371, "replaces_state": "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"}}eQ_$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 793}{"auth_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA", "$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "prev_events": ["$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM"], "type": "m.room.history_visibility", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040987204, "hashes": {"sha256": "QzpXCF5J85V2LYfA+GUsAtHQQSQMWodA2inXUmgwm+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fpb1MZrmATxP81+OqJvP6bNv7AjF17STTNIDOZShn5FtwluzMxq+TFfbQVLaBthbyUbdM1yHQJT9hVqmqW98Ag"}}, "unsigned": {"age_ts": 1570040987204}}seQ_u$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 792}{"auth_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA", "$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "prev_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA"], "type": "m.room.join_rules", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040986629, "hashes": {"sha256": "V3uYbHBX1+SLlZh2cq2yKdiEdLTe5gEMfjf1nR22ydM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cioUU9EDSV4Ydft7tTq5196zC0umL6Zc1m3uj1PEIj1WLiAmsOiV/6jfMc8cTLCWjJsJw+ahGuTqYbqKAfzOAw"}}, "unsigned": {"age_ts": 1570040986629}}jeQ_c$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 791}{"auth_events": ["$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "prev_events": ["$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "type": "m.room.power_levels", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"users": {"@anon-20191002_181700-173:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040985921, "hashes": {"sha256": "n6NTyF7Tmf1bPSDX0rwrvl0tfUUakE84Y9T2uJ3YUAg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ogH+8NPkBQ30ZVHjT1nfXYcCPrU901dixAJ4b6aM/sbGwhhrBiI3aZCfc5irE7n3/jNyHNiCkk9hMHoBC51QCA"}}, "unsigned": {"age_ts": 1570040985921}} F'R  P  > W % D  ] +Y v d-2  Jj8 p> wE } | _L p' v D21e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4T1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 $1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk s1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY p11e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI R1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8P1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 U1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68x1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkp1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s*1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwJ1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA`1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAkp1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0K1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMO1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 f1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UL1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA61e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8\1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc U1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsW1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsB1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg:1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUs1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM41e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY01e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg -,1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk81e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU " DP f  d  z#{&61D 0e'Q ] $qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUom.room.member!BGbJEmJRVJGlZFQbZe:localhost:8800 mm@anon-20191002_181700-176:localhost:8800 /e'Q ]$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYm.room.member!BGbJEmJRVJGlZFQbZe:localhost:8800mm@anon-20191002_181700-177:localhost:8800!.e)Q ]$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUm.room.aliases!BGbJEmJRVJGlZFQbZe:localhost:8800mam@anon-20191002_181700-176:localhost:8800,-e?Q ]$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0m.room.history_visibility!BGbJEmJRVJGlZFQbZe:localhost:8800mm<@anon-20191002_181700-176:localhost:8800$,e/Q ]$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwm.room.join_rules!BGbJEmJRVJGlZFQbZe:localhost:8800m}!m}@anon-20191002_181700-176:localhost:8800)+e9Q ]$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwm.room.canonical_alias!BGbJEmJRVJGlZFQbZe:localhost:8800mzm{n@anon-20191002_181700-176:localhost:8800&*e3Q ]$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1cm.room.power_levels!BGbJEmJRVJGlZFQbZe:localhost:8800mxmy@anon-20191002_181700-176:localhost:8800 )e'Q ]$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYm.room.member!BGbJEmJRVJGlZFQbZe:localhost:8800mvmv@anon-20191002_181700-176:localhost:8800( e'Q  ]$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8m.room.create!BGbJEmJRVJGlZFQbZe:localhost:8800ms,ms@anon-20191002_181700-176:localhost:8800!'e)Q ]$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04m.room.aliases!tDsPLsKOLPePtEWRwn:localhost:8800mmmn@anon-20191002_181700-176:localhost:8800,&e?Q ]$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0m.room.history_visibility!tDsPLsKOLPePtEWRwn:localhost:8800mjmk@anon-20191002_181700-176:localhost:8800$%e/Q ]$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgm.room.join_rules!tDsPLsKOLPePtEWRwn:localhost:8800mhmmi@anon-20191002_181700-176:localhost:8800)$e9Q ]$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAm.room.canonical_alias!tDsPLsKOLPePtEWRwn:localhost:8800memfn@anon-20191002_181700-176:localhost:8800&#e3Q ]$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0m.room.power_levels!tDsPLsKOLPePtEWRwn:localhost:8800mccmd\@anon-20191002_181700-176:localhost:8800 "e'Q ]$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMm.room.member!tDsPLsKOLPePtEWRwn:localhost:8800mamab@anon-20191002_181700-176:localhost:8800! e'Q  ]$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwm.room.create!tDsPLsKOLPePtEWRwn:localhost:8800m^m^@anon-20191002_181700-176:localhost:8800 e'Q ]$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMm.room.member!XMNRkfscQXRjgYrOSd:localhost:8800mWmXQ@anon-20191002_181700-175:localhost:8800,e?Q ]$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwm.room.history_visibility!XMNRkfscQXRjgYrOSd:localhost:8800mT mUk@anon-20191002_181700-174:localhost:8800$e/Q ]$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnom.room.join_rules!XMNRkfscQXRjgYrOSd:localhost:8800mQmRo@anon-20191002_181700-174:localhost:8800&e3Q ]$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0m.room.power_levels!XMNRkfscQXRjgYrOSd:localhost:8800mOmP@anon-20191002_181700-174:localhost:8800 e'Q ]$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Um.room.member!XMNRkfscQXRjgYrOSd:localhost:8800mMmMj@anon-20191002_181700-174:localhost:8800 e'Q  ]$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqom.room.create!XMNRkfscQXRjgYrOSd:localhost:8800mI>mI@anon-20191002_181700-174:localhost:8800 e'Q ]$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUm.room.member!wUuodvgsmAJqKJUBCQ:localhost:8800mBmCX@anon-20191002_181700-173:localhost:8800,e?Q ]$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53Am.room.history_visibility!wUuodvgsmAJqKJUBCQ:localhost:8800m>Dm@q@anon-20191002_181700-173:localhost:8800 H8Qj w E + }>] L%W   S ! Y '  _ -3epk9q? wE}K1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs'1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM&1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA U21e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8,1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwu1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUB1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A 61e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds 1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw-1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQd1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo,1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY,1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoK1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUc1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk:1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY+1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0Y1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 F1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68x1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkn1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 q21e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E F'R  P  > W % D  ] +Y v d-2  Jj8 p> wE } | _L p' v D21e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4T1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 $1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk s1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY p11e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI R1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8P1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 U1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68x1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkp1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s*1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwJ1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA`1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAkp1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0K1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMO1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 f1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UL1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA01e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8V1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc S1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsQ1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs<1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg41e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUm1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM41e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY01e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg -,1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk81e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU " [a"kP5nH1bB" Z 7 { X   h )  { X 2  a ;gJ*H {XAQ4]FmV' </ 'm.room.join_rules)3 &m.room.power_levels("? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules/ m.room.join_rules9 m.room.canonical_alias9 m.room.canonical_alias9 m.room.canonical_alias3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-169:localhost:8800>']m.room.member@anon-20191002_181700-169:localhost:8800>']%m.room.member@anon-20191002_181700-184:localhost:8800'' $m.room.create&"? #m.room.history_visibility%/ "m.room.join_rules$3 !m.room.power_levels#>'] m.room.member@anon-20191002_181700-183:localhost:8800"' m.room.create!"? m.room.history_visibility / m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-182:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-181:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-179:localhost:8800>']m.room.member@anon-20191002_181700-180:localhost:8829>']m.room.member@anon-20191002_181700-180:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3  m.room.power_levels>'] m.room.member@anon-20191002_181700-178:localhost:8800'  m.room.create >'] m.room.member@anon-20191002_181700-177:localhost:8800 >'] m.room.member@anon-20191002_181700-177:localhost:8800 %))m.room.aliaseslocalhost:8800 "? m.room.history_visibility / m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-176:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-176:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-175:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-174:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-173:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-173:localhost:8800' m.room.create' m.room.avatar' m.room.avatar"? m.room.history_visibility%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules9 m.room.canonical_alias9 m.room.canonical_alias3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-170:localhost:8800>']m.room.member@anon-20191002_181700-170:localhost:8800' m.room.create' m.room.create%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility"? m.room.history_visibility g * T~=ggE]!c@anon-20191002_181700-185:localhost:8800VORURBUNEEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwogD]!c@anon-20191002_181700-184:localhost:8800VWQCQPUGVZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1QogC]!c@anon-20191002_181700-183:localhost:8800PNPQZSANHGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1AogB]!c@anon-20191002_181700-182:localhost:8800TONQTGLEJVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4gogA]!c@anon-20191002_181700-181:localhost:8800EXTONIIZTHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswog@]!c@anon-20191002_181700-179:localhost:8800LJJECQVQQOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQog?]!c@anon-20191002_181700-178:localhost:8800RLQRIRERLRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAog>]!c@anon-20191002_181700-177:localhost:8800HOVRIDACJIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAog=]!c@anon-20191002_181700-176:localhost:8800KYCPIRLNMAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgog<]!c@anon-20191002_181700-175:localhost:8800LQUTZGXEPWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgog;]!c@anon-20191002_181700-174:localhost:8800XYSQAGTUQWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywo .oLM` b cdm)WX Z  \  ] o ^ e _ TeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800TeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800SeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800TeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:88006TeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800TeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800rTeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro!wCsDjKBtuUbrmZgjsB:localhost:8800bTeQ$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s!DntdfAPfCfgdOoRMdl:localhost:8800\FIQ$64_redaction2:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800CSeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE!TleKOyAElrpgyyrAQA:localhost:8800$A?Q$60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:88007;3Q$89:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800XTeQ$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo!PVyTvKbqnjSXfGWAMy:localhost:8800TTeQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800TeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U!PgNDjhhIBAXKryuGKy:localhost:8800TeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800TeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800WTeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800TeQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800TeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:88009SeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800TeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA!WpThtNEVhrUbUdCdMJ:localhost:8800TeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0!fGkUEndqGrieltwbCh:localhost:8800TeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800SeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800)TeQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800TeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800TeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800TeQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800SeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800b |t l d \ T LD<4,$eeQ$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800ԁeeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800teeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800ueeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800veeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800 ReeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU!coGyOAgYnlBZAqznax:localhost:8800 eeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800ҁeeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800؁eeQ$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800 eeQ$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10!kOmCTyiizHqfCJdhlR:localhost:8800 jeeQ$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800 leeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800eeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800eeQ$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800SeeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800    -seQ_u$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 798}{"auth_events": ["$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0", "$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo", "$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U"], "prev_events": ["$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0"], "type": "m.room.join_rules", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040992180, "hashes": {"sha256": "Qo0Cis3LkIr9goj80ozzS5YFJJjo3nevCnBe80vwihs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iKt94Zn6iyESmoPmRIdALqi5aozxDDjNpFOLykPAFDakLPCa9K7xbMjybhiMYudx8K/qXcWugXLp5wlcyL3EDg"}}, "unsigned": {"age_ts": 1570040992180}}jeQ_c$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 797}{"auth_events": ["$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo", "$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U"], "prev_events": ["$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U"], "type": "m.room.power_levels", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"users": {"@anon-20191002_181700-174:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040991507, "hashes": {"sha256": "i4gstDdEnIMIx3Be97ofJHDE7P8WGj9WAhQ2ahbt15U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v4HHEPUO3ZxLwJqBOD50d/w5UUIEzi9dqiR4OBgGt0CUmXtg3HpjspUsDq8a6ZUrHck/RdVxEWqm4SD/5vH3Bw"}}, "unsigned": {"age_ts": 1570040991507}}ueQ_y$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 796}{"auth_events": ["$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo"], "prev_events": ["$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo"], "type": "m.room.member", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-174", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-174:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040990981, "hashes": {"sha256": "vFkfDxce/vTXt4YAUh77UI/5CtYwS9AHpHW8ec2gLNk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wEc4LL8MsrOHWLxyKuAX1Tu2GYsSpuKZsD2bBAtBU5sxXm6/pDf4jCs9Tsdqn3pWGa9WDjxu2Aj2mttydzizDA"}}, "unsigned": {"age_ts": 1570040990981}}heQ__$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 795}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-174:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040990014, "hashes": {"sha256": "7AKmUTDtSTZUUTf5akY6a1jtdtwUKwgic1Xfq4Cp/MI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uRf0jkOFxFY6wSeS6j4N+D96Wm8w66rFxOzMQIFNQssx0uSIbLf8SEyyiqoeRcv5fD4PsDM5WQvf8+AU3BCVDA"}}, "unsigned": {"age_ts": 1570040990014}} !Mp% . 1 V m  v .E%GAJMjmQ3 ee?Q ]$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Mm.room.history_visibility!wAyboOFgsOPwkmgMAI:localhost:8800mBm!@anon-20191002_181700-181:localhost:8800$=e/Q ]$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwm.room.join_rules!wAyboOFgsOPwkmgMAI:localhost:8800mm@anon-20191002_181700-181:localhost:8800&<e3Q ]$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgm.room.power_levels!wAyboOFgsOPwkmgMAI:localhost:8800mm-@anon-20191002_181700-181:localhost:8800 ;e'Q ]$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQm.room.member!wAyboOFgsOPwkmgMAI:localhost:8800mm@anon-20191002_181700-181:localhost:8800: e'Q  ]$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8m.room.create!wAyboOFgsOPwkmgMAI:localhost:8800mm@anon-20191002_181700-181:localhost:8800 9e'Q ]$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4m.room.member!bnTuVBaAJTPbcYZtRl:localhost:8800mm%@anon-20191002_181700-179:localhost:8800 8e'Q ]$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMm.room.member!bnTuVBaAJTPbcYZtRl:localhost:8800mm@anon-20191002_181700-180:localhost:8829!7e)Q ]$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Qm.room.aliases!bnTuVBaAJTPbcYZtRl:localhost:8800m7m!@anon-20191002_181700-178:localhost:8800,6e?Q ]$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycm.room.history_visibility!bnTuVBaAJTPbcYZtRl:localhost:8800mmV@anon-20191002_181700-178:localhost:8800$5e/Q ]$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIm.room.join_rules!bnTuVBaAJTPbcYZtRl:localhost:8800mmC@anon-20191002_181700-178:localhost:8800)4e9Q ]$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkm.room.canonical_alias!bnTuVBaAJTPbcYZtRl:localhost:8800mLm4@anon-20191002_181700-178:localhost:8800&3e3Q ]$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhom.room.power_levels!bnTuVBaAJTPbcYZtRl:localhost:8800mm@anon-20191002_181700-178:localhost:8800 2e'Q ]$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4m.room.member!bnTuVBaAJTPbcYZtRl:localhost:8800mm!@anon-20191002_181700-178:localhost:88001 e'Q  ]$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0m.room.create!bnTuVBaAJTPbcYZtRl:localhost:8800mVm@anon-20191002_181700-178:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VHeL$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMsha256| .0Ⱦy~fZpFsQVGeL$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSksha256z ZbĹ~<5 zoR=})VFeL$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQoksha256Z k"شN@䈻5 !WGBVEeL$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20Asha256WuY!gXȩwQ$̙v*@VDeL$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAsha256]=_UnWVtR)Ѝ2L+FVCeL$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doosha256>a3|$Q5 3W8q3=y7vVBeL$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Qsha256mf`buҚa'2&=TVAeL$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcsha256(IS7K@PaR+ 㯃lIWV@eL$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwsha256蔵9-~C(,Ơ%pFp5άV?eL$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xksha256Jf!a}"GeL$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOgsha256:VΤ6-?F}Ty>v$V=eL$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Msha256xpCM5&BvL w V<eL$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwsha256[ƤNW] ,̃T˪I*#V;eL$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgsha2564> <45M̍O4lV:eL$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQsha256Ƹ kbSJH$+tvM tV9eL$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8sha2569EL^sa$ 䩎yڐxz/V8eL$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4sha2565wG3 J1 (Br@~V7eL$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMsha256U}@AT5(fq[ho_Xd V6eL$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Qsha256ox&i} Zkros:/tV5eL$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycsha256xߗI, UIG%pd+'V4eL$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIsha256`Sm?6:X% +lY7 "V3eL$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilksha256]Q]L,qiwk*x^YV2eL$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhosha256^y=l~%A ogaLDV1eL$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4sha256hT9{| PVږƭ|V0eL$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0sha256%_ }"8 &̓O6')V/eL$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUosha256&<)E>> JV.eL$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYsha256!]ϡT{8YU@&V-eL$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUsha256 i: z5zTVk} v D  } K  R X & _ -e3k9q? wE}KQ1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 =1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYy1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmId1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA ,1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoP1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4C1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AE1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw?1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds-1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y41e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI &1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8*1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY'1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI^1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgn1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wG1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo 0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk51e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA 41e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0u1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0Q1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68n1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 [1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs 1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg }1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8^1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokB0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw]1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ^1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 51e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g [ "s 4 Q ` ! > $3\4`imveQ? $2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibilityeueQ/ $1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rulesgteQ3 $tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels seQ']$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800areQ' $1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.createmqeQ? $eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibilityepeQ/ $W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rulesgoeQ3 $NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levels neQ']$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800ameQ' $GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800m.room.create leQ']$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800 keQ']$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829pjeQ))$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800mieQ? $oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibilityeheQ/ $YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rulesjgeQ9 $su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_aliasgfeQ3 $Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels eeQ']$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800adeQ' $JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create ceQ']$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800 beQ']$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800paeQ))$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800m`eQ? $Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibilitye_eQ/ $-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rulesj^eQ9 $yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_aliasg]eQ3 $ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels \eQ']$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800a[eQ' $_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.createpZeQ))$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800mYeQ? $o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibilityeXeQ/ $XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rulesjWeQ9 $YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_aliasgVeQ3 $yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels UeQ']$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800 *)o0 M X  6 @Ep4?Da'eQ' $XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800m.room.create &eQ']$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800joinm%eQ? $0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibilitye$eQ/ $SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rulesg#eQ3 $2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels "eQ']$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800joinp<eQ))$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800m;eQ? $oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibilitye:eQ/ $YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rulesj9eQ9 $su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_aliasg8eQ3 $Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels 7eQ']$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800joina6eQ' $JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create5eQ']$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800leavep4eQ))$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800m3eQ? $Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibilitye2eQ/ $-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rulesj1eQ9 $yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_aliasg0eQ3 $ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels /eQ']$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800joina.eQ' $_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.createp-eQ))$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800m,eQ? $o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibilitye+eQ/ $XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rulesj*eQ9 $YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_aliasg)eQ3 $yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels (eQ']$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800join 4 d \| T t,$ LD< l eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800`eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800 %eeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800 .eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800 eeQ$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:88009eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800ȁeeQ$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800 eeQ$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800EeeQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800ʁeeQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800 MeeQ$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800߁eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800keeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800 ieeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800 eeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800_  %eQ_$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 806}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg"], "type": "m.room.history_visibility", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040998530, "hashes": {"sha256": "hXtHe8PCL1fVMXT3Ts5n3v1P8bHb8u3FB2sX7YkiXvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ti1sQV2bAut9aUP/cZ3Pzuxp3JbNqTF9ozH6C/5NbfoQapkztKOlRAcJn3NbjAPRIOEIqzCadmJbbcygI833BQ"}}, "unsigned": {"age_ts": 1570040998530}}s$eQ_u$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 805}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA"], "type": "m.room.join_rules", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040997997, "hashes": {"sha256": "znjJ0dgyRPgI0STM4qIFjGrYsPeNEWYl85NY6vl2XEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "krCVx24gspFaAN1y3tmraZ1t6846lM0SIvAnEKWsZwE2f/hMyQwXs4UiGTBK7L/45EpS5VeeTSDjVC0adFlHDQ"}}, "unsigned": {"age_ts": 1570040997997}}#eQ_9$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 804}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0"], "type": "m.room.canonical_alias", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"alias": "#test-20191002_181700-29:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040997305, "hashes": {"sha256": "e/KKjnUfe81AjP7C2EVboY3/RS2Xf0+WdsDquSnpLOo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "27wfIv1x00us5mCEdPvBjOvBPeMeqgu7kmacYQ2kVAtVqfyMVdyo/K5Cw4y1y2s2Fcz3P5E2GVVcnwW/HqJCBw"}}, "unsigned": {"age_ts": 1570040997305}}j"eQ_c$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 803}{"auth_events": ["$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "type": "m.room.power_levels", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"users": {"@anon-20191002_181700-176:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040996707, "hashes": {"sha256": "5OfsMQ+JIgS1OeWdWT/NSTyurRU0NdFTAzd52Wbl9h0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HU5aWyORrhfxn4/suYA3CQbb6SBiGvi/2MibZa9iHNjzMByr3YTuFiB38mrsHzo++rOk98ergF5aT71kBCSQBA"}}, "unsigned": {"age_ts": 1570040996707}} $59<]HIr& O; ! j / } @ D P9"Rv6Q' !itfjLXhEaORJLkbfVS:localhost:8800m.room.create ^Q']!itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800 $:Q/ !itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rules BQ? !jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibility :Q/ !jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rules <Q3 !jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels ^Q']!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800 6Q' !jGQNGXehugtTvjUGKI:localhost:8800m.room.create BQ? !itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibility <Q3 !itKDOCtoMkFUETDtle:localhost:8800m.room.power_levelsl^Q']!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800kGQ'/!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800o:Q/ !itKDOCtoMkFUETDtle:localhost:8800m.room.join_rulesmBQ? !itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibilityn6Q' !itKDOCtoMkFUETDtle:localhost:8800m.room.createj<Q3 !ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels]Q'[!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800:Q/ !jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rulesBQ? !jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibility6Q' !jfshVGNDxkvqPxFxWB:localhost:8800m.room.create;Q3 !jYzridjeihmwPBuwLb:localhost:8800m.room.power_levelsF\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800R\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800Q\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800P\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800O\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800N\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800M\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800L\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800E\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800K9Q/ !jYzridjeihmwPBuwLb:localhost:8800m.room.join_rulesHAQ? !jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibilityI5Q' !jYzridjeihmwPBuwLb:localhost:8800m.room.createD>Q9 !jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_aliasGDQ))!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800J<Q3 !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels @^Q']!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800 ?RQ'E!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455 C:Q/ !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules ABQ? !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibility B6Q' !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create ><Q3 !jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels"^Q']!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800!:Q/ !jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rules%BQ? !jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility$<Q3 !jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access#6Q' !jIfvTrwedrWLubsnlM:localhost:8800m.room.create <Q3 !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels^Q']!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800:Q/ !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rulesBQ? !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibility6Q' !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.create<Q3 !itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels  ] U M |&E>6.t l d eeQ$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800MeeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800 \eeQ$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800ƁeeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800SeeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800veeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800MeeQ$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800ŁeeQ$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc!sPWVGnipjiiWQpywNO:localhost:8800.eeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800-eeQ$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800eeQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:88004eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800zeeQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800 jeeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA!UGVFuRGyPQmBbGsEDo:localhost:8800>eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800 eeQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800  ] qj)eQ_c$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 810}{"auth_events": ["$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "type": "m.room.power_levels", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"users": {"@anon-20191002_181700-176:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041001998, "hashes": {"sha256": "lqIgwZAzJ7ENseElV0JwuEAswbMogaiG6W3y2W7qeYI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V0l2R94PTzj6NGKfoAzlrvBsBvt+QklShbzB4tpIQ6ttvsSm+eJKDigl1Ytw+4jy+HLLPegwoczgi3ZJomXlCg"}}, "unsigned": {"age_ts": 1570041001998}}u(eQ_y$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 809}{"auth_events": ["$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8"], "prev_events": ["$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8"], "type": "m.room.member", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-176", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-176:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041001490, "hashes": {"sha256": "CrKhMcwtlEaPSGFf75zcKp1n23ELD7eWm8gRifwaF1k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u22z4H5FrUFU93qM14+95BSCTZRGP694xLNVbd5jjo8aldaoLGw1qjJCd+w3JZ8unJLklAMyNGe76UjD+CKTCw"}}, "unsigned": {"age_ts": 1570041001490}}h'eQ__$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 808}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-176:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041000748, "hashes": {"sha256": "HqAfGboLe2ixXvnW1Ad6xBBAM118DfUu73ASwEyl8LM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "frrKHCmIJSArPlXbDMgMMpXsFLBhdSoDKVFO0YF6/70xeVDQF63AlLT+T0Q7bTf/QY+bMgDokCYWMTlPq6FfBw"}}, "unsigned": {"age_ts": 1570041000748}}&eQ_M$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 807}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0"], "type": "m.room.aliases", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"aliases": ["#test-20191002_181700-29:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040999390, "hashes": {"sha256": "0ME2H30AKsUXDFamT3LbdmyVOXc1N8MK1CYTZJEQhYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S2brMbXZ5ZMAvfnV0hRk0/SGivWAJon2nOBnGhnU+FT5rauetK1ffaKDoENY1WRiM8/GwnpkSplHUZaOYlCzDQ"}}, "unsigned": {"age_ts": 1570040999390}} -RM H C > 9 4/*|%w rmhc T.Qe.!dnZVySJLGNtUKsSgXW:localhost:8800$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQT-Qe-!dnZVySJLGNtUKsSgXW:localhost:8800$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYT,Qe,!dnZVySJLGNtUKsSgXW:localhost:8800$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMT+Qe+!dnZVySJLGNtUKsSgXW:localhost:8800$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQT*Qe*!dnZVySJLGNtUKsSgXW:localhost:8800$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMT)Qe)!oznZaCpONuNDaLarkI:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYT(Qe(!oznZaCpONuNDaLarkI:localhost:8800$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMT'Qe'!oznZaCpONuNDaLarkI:localhost:8800$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgT&Qe&!oznZaCpONuNDaLarkI:localhost:8800$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAT%Qe%!oznZaCpONuNDaLarkI:localhost:8800$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwT$Qe$!oznZaCpONuNDaLarkI:localhost:8800$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80T#Qe#!eLsrBEnrHolwCNgkFW:localhost:8800$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMT"Qe"!eLsrBEnrHolwCNgkFW:localhost:8800$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkT!Qe!!eLsrBEnrHolwCNgkFW:localhost:8800$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokT Qe !eLsrBEnrHolwCNgkFW:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20ATQe!eLsrBEnrHolwCNgkFW:localhost:8800$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgATQe!ILbUVZOfPPwaZRrKJd:localhost:8800$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkTQe!wAyboOFgsOPwkmgMAI:localhost:8800$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MTQe!wAyboOFgsOPwkmgMAI:localhost:8800$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwTQe!wAyboOFgsOPwkmgMAI:localhost:8800$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgTQe!wAyboOFgsOPwkmgMAI:localhost:8800$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQTQe!wAyboOFgsOPwkmgMAI:localhost:8800$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8TQe!bnTuVBaAJTPbcYZtRl:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4TQe!bnTuVBaAJTPbcYZtRl:localhost:8800$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$Gby745twfjOw81-KFSSbVeIfLZqqYisOgUSAyVUguBgTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3QTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCITQe!bnTuVBaAJTPbcYZtRl:localhost:8800$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkT Qe !bnTuVBaAJTPbcYZtRl:localhost:8800$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhoT Qe !bnTuVBaAJTPbcYZtRl:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4T Qe !bnTuVBaAJTPbcYZtRl:localhost:8800$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0T Qe !BGbJEmJRVJGlZFQbZe:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUoT Qe !BGbJEmJRVJGlZFQbZe:localhost:8800$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0TQe!BGbJEmJRVJGlZFQbZe:localhost:8800$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1cTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8 !q, E ' 2 W { wYd'Qy~o%Q? e#!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibility$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMg$Q/ e"!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rules$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSki#Q3 e!!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok "Q']e !eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20Ac!Q' e!eLsrBEnrHolwCNgkFW:localhost:8800m.room.create$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAo Q? e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibility$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doogQ/ e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rules$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QiQ3 e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc Q']e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwcQ' e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.create$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkoQ? e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MgQ/ e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rules$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwiQ3 e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levels$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg Q']e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQcQ' e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.create$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8 Q']e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4 Q']e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM Q']e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829$Gby745twfjOw81-KFSSbVeIfLZqqYisOgUSAyVUguBgrQ))e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3QoQ? e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibility$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycgQ/ e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rules$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIlQ9 e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_alias$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkiQ3 e !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho Q']e !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4c Q' e !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0 Q']e !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo Q']e !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYr Q))e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUo Q? e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibility$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0gQ/ e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rules$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwlQ9 e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_alias$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwiQ3 e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c Q']e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY  gh-eQ_M$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 814}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0"], "type": "m.room.aliases", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"aliases": ["#test-20191002_181700-30:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041004897, "hashes": {"sha256": "eybInNtdmLfgvFWzlzBxY/3FiTOzIUKzk+EVrfECWOQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7mD1OUQa7WZ1TIw1CNY4/uyqiIA+Gvj/W8eiSxvEQIurPhEIGa3DnRHliacvYEWr5VvgX/LIsSTdSyr9jzJAg"}}, "unsigned": {"age_ts": 1570041004897}},eQ_$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 813}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw"], "type": "m.room.history_visibility", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041003913, "hashes": {"sha256": "jUYn4UTOWrlVae4n0gXJJMHXvu6UY+Qj/cg2FEFRuH0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GIXzshHNr8lpyzD3tCBKNnd8fxqb3N4nodBVGBvTkp+5Wpp6Ku6uhGCWtNk8kzshCtzD+qUMNiagjWyTi2haCA"}}, "unsigned": {"age_ts": 1570041003913}}s+eQ_u$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 812}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw"], "type": "m.room.join_rules", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041003297, "hashes": {"sha256": "2frSZHV/ir8m9nMBRyZEb9Xhk+j+WDmJt3/qUNd52MA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c+/lBDjz4LOEBzQj3F7WnkRBA+z4u/YY26/RuJrNlBAiwv0I68eJWCxAF5vEU9FXy+aMMJhrpJ75IaLULDeTCA"}}, "unsigned": {"age_ts": 1570041003297}}*eQ_9$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 811}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c"], "type": "m.room.canonical_alias", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"alias": "#test-20191002_181700-30:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041002664, "hashes": {"sha256": "PyLu7jAVmFAR+3ONCeYB2g9iB8WTJXU8Tqh2HL7bXI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m0o+1R3OpVcxY4reGLUWMxC08TBnSn/rOJrVo0NH/3HmTGEwDK1PeokfCWKitpEigGyvRuDDT4BWwwZ87mbKBA"}}, "unsigned": {"age_ts": 1570041002664}} -RM H C > 9 4/*|%w rmhc T[QeW!hgjYwwwjWJNgwrzOto:localhost:8800$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0TZQeV!hgjYwwwjWJNgwrzOto:localhost:8800$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70TYQeU!dnZVySJLGNtUKsSgXW:localhost:8800$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8TXQeT!dnZVySJLGNtUKsSgXW:localhost:8800$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQTWQeS!dnZVySJLGNtUKsSgXW:localhost:8800$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYTVQeR!dnZVySJLGNtUKsSgXW:localhost:8800$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMTUQeQ!dnZVySJLGNtUKsSgXW:localhost:8800$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQTTQeP!dnZVySJLGNtUKsSgXW:localhost:8800$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMTSQeO!oznZaCpONuNDaLarkI:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYTRQeN!oznZaCpONuNDaLarkI:localhost:8800$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMTQQeM!oznZaCpONuNDaLarkI:localhost:8800$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgTPQeL!oznZaCpONuNDaLarkI:localhost:8800$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIATOQeK!oznZaCpONuNDaLarkI:localhost:8800$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwTNQeJ!oznZaCpONuNDaLarkI:localhost:8800$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80TMQeI!eLsrBEnrHolwCNgkFW:localhost:8800$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMTLQeH!eLsrBEnrHolwCNgkFW:localhost:8800$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkTKQeG!eLsrBEnrHolwCNgkFW:localhost:8800$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokTJQeF!eLsrBEnrHolwCNgkFW:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20ATIQeE!eLsrBEnrHolwCNgkFW:localhost:8800$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgATHQeD!ILbUVZOfPPwaZRrKJd:localhost:8800$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooTGQeC!ILbUVZOfPPwaZRrKJd:localhost:8800$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QTFQeB!ILbUVZOfPPwaZRrKJd:localhost:8800$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcTEQeA!ILbUVZOfPPwaZRrKJd:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwTDQe@!ILbUVZOfPPwaZRrKJd:localhost:8800$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkTCQe?!wAyboOFgsOPwkmgMAI:localhost:8800$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOgTBQe>!wAyboOFgsOPwkmgMAI:localhost:8800$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MTAQe=!wAyboOFgsOPwkmgMAI:localhost:8800$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwT@QeQe:!wAyboOFgsOPwkmgMAI:localhost:8800$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8T=Qe9!bnTuVBaAJTPbcYZtRl:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4T<Qe9!bnTuVBaAJTPbcYZtRl:localhost:8800$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMT;Qe8!bnTuVBaAJTPbcYZtRl:localhost:8800$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMT:Qe7!bnTuVBaAJTPbcYZtRl:localhost:8800$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3QT9Qe6!bnTuVBaAJTPbcYZtRl:localhost:8800$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycT8Qe5!bnTuVBaAJTPbcYZtRl:localhost:8800$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIT7Qe4!bnTuVBaAJTPbcYZtRl:localhost:8800$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkT6Qe3!bnTuVBaAJTPbcYZtRl:localhost:8800$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhoT5Qe2!bnTuVBaAJTPbcYZtRl:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4T4Qe1!bnTuVBaAJTPbcYZtRl:localhost:8800$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0T3Qe0!BGbJEmJRVJGlZFQbZe:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUoT2Qe/!BGbJEmJRVJGlZFQbZe:localhost:8800$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYT1Qe.!BGbJEmJRVJGlZFQbZe:localhost:8800$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUT0Qe-!BGbJEmJRVJGlZFQbZe:localhost:8800$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0T/Qe,!BGbJEmJRVJGlZFQbZe:localhost:8800$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw a} { y w u sqomkigeca~+eeQ$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800~*eeQ$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~)eeQ$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~(eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800~'eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~&eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~%eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800~$eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~#eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~"eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~!eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~ eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800~ eeQ$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800  '5Iu1eQ_y$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 818}{"auth_events": ["$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0"], "prev_events": ["$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0"], "type": "m.room.member", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-178", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-178:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041009090, "hashes": {"sha256": "KlHg6VfJiolNDRQNi2260VPiawOC8GVUKXFvvaE87vA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xbTiJJsY6Lpp+scWlfvXRer9bXfatsFBChWzTyj0fWUb4cPSAEpQwOPeGo4VnMcqXrHxslhHEV+zLYYF85f+Bw"}}, "unsigned": {"age_ts": 1570041009090}}h0eQ__$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 817}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-178:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041008470, "hashes": {"sha256": "vphvrK1w5bjWN2K/GXq93EELM5mVkB/x4V71l4n/Vl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "REeEo0iprugp0buoQvVDQAgr7E/io4ZHoUteNYxcx5DgNx0jr2Jd+3cthSlWTtYNeW/+u6aV6X8MRdmNpo2XCw"}}, "unsigned": {"age_ts": 1570041008470}}n/eQ_k$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 816}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY"], "type": "m.room.member", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"reason": "testing", "membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-177:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041006476, "hashes": {"sha256": "bCUFxZJEDu+3iehK3z560+fPRyHxCF9TQKXjW0bnoSo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xy5o982qmwQZSxcn3oTI/waXVs1s2Q2GmC/kACnK6e9bpWD5xfdJRvRsSzZ24CnIRrJFuT2kT15OOZ/qZyV+AQ"}}, "unsigned": {"age_ts": 1570041006476, "replaces_state": "$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY"}}U.eQ_9$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 199, "stream_ordering": 815}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw"], "prev_events": ["$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU"], "type": "m.room.member", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-177:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-177", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-177:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041005591, "hashes": {"sha256": "DV8XQRNtSjdPT7dc/m86jIpVAG8p4NXAOUrUq+pDaHA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "35i9aYOJefsEpfuvmX8unDeM002XAmqw2HzSn6oA2D2tcUMkkxTrMz+dU5gLr2M7FNnQrxOpYKo9JzHP8m3gAQ"}}, "unsigned": {"age_ts": 1570041005591}}  5eQ_$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 822}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI"], "type": "m.room.history_visibility", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041012131, "hashes": {"sha256": "GxG9Hj5/WYtPaBH1oFByQW8vlCVXrqm9J1ZP19RAfZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VFV298C9WR5b3UpMGfRjQESMBWs+EPyEvMypjpsPVZcEtt0GMTzq9Fwty+CX60QMN5nzem0aDSVxkR2VML2nDw"}}, "unsigned": {"age_ts": 1570041012131}}s4eQ_u$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 821}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk"], "type": "m.room.join_rules", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041011589, "hashes": {"sha256": "cQatDEOtd8lZ2pxS7P5wEGtRNEmsad++YRgyFoAy5OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hjSyV2Ky978kyXqraAEn9Ek89srJ1DXo8fCU0iJ7HlYLG1MUt43JKsOSif+tfKWmoJMohG+Wl9iAbV/sIqckAg"}}, "unsigned": {"age_ts": 1570041011589}}3eQ_9$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 820}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho"], "type": "m.room.canonical_alias", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"alias": "#test-20191002_181700-31:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041010764, "hashes": {"sha256": "k8EyO0AFh6axvw0SvKvcH2rznBIsRURByBTZKm98rww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7gHyGSRoQ66HtFkRJl4hLK54kWEiuT12bPvrayd9LF58RKDqA34km/zmh9t2ixK3F1hZDpfA/KCUIKlrAIloAg"}}, "unsigned": {"age_ts": 1570041010764}}j2eQ_c$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 819}{"auth_events": ["$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "type": "m.room.power_levels", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"users": {"@anon-20191002_181700-178:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041009567, "hashes": {"sha256": "ZcklzeYvIcURwwC5rI6MogelqPFLDLds1oHmmWm64Y8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HqOUFRO5cvPHwe4jFq6xd+XO9nzYe0ivrUtKRt9+I8P9yLl7OCkCqhynkY+XKnFgJH8oYVEiHeB9RCIOOSeOAw"}}, "unsigned": {"age_ts": 1570041009567}} Bb k6c.Z% Q   J  v A o :  f 1_*V!O{Ft?b-Y$4]@anon-20191002_181700-282:localhost:8800m4]@anon-20191002_181700-227:localhost:8800mߞ4]@anon-20191002_181700-226:localhost:8800m4]@anon-20191002_181700-225:localhost:8800m_4]@anon-20191002_181700-224:localhost:8800m4]@anon-20191002_181700-223:localhost:8800m4]@anon-20191002_181700-222:localhost:8800mE4]@anon-20191002_181700-221:localhost:8800m4]@anon-20191002_181700-220:localhost:8800mvV4]@anon-20191002_181700-281:localhost:8800m4]@anon-20191002_181700-280:localhost:8800mƳ2[@anon-20191002_181700-27:localhost:8800mv4]@anon-20191002_181700-279:localhost:8800mƘ94]@anon-20191002_181700-278:localhost:8800mƔ4]@anon-20191002_181700-277:localhost:8800mƄ`4]@anon-20191002_181700-276:localhost:8800mj4]@anon-20191002_181700-274:localhost:8800m[t4]@anon-20191002_181700-273:localhost:8800m[s4]@anon-20191002_181700-272:localhost:8800mA}4]@anon-20191002_181700-271:localhost:8800m4]@anon-20191002_181700-270:localhost:8800m2[@anon-20191002_181700-26:localhost:8800mq4]@anon-20191002_181700-269:localhost:8800mq 4]@anon-20191002_181700-268:localhost:8800m 4]@anon-20191002_181700-267:localhost:8800m! 4]@anon-20191002_181700-266:localhost:8800m  4]@anon-20191002_181700-265:localhost:8800mſ; 4]@anon-20191002_181700-264:localhost:8800mų4]@anon-20191002_181700-263:localhost:8800mšT4]@anon-20191002_181700-262:localhost:8800mő'4]@anon-20191002_181700-261:localhost:8800mŁ4]@anon-20191002_181700-260:localhost:8800mq2[@anon-20191002_181700-25:localhost:8800mm4]@anon-20191002_181700-259:localhost:8800ma4]@anon-20191002_181700-258:localhost:8800mE4]@anon-20191002_181700-257:localhost:8800m/4]@anon-20191002_181700-254:localhost:8800m4]@anon-20191002_181700-253:localhost:8800m<4]@anon-20191002_181700-252:localhost:8800m04]@anon-20191002_181700-251:localhost:8800m{4]@anon-20191002_181700-250:localhost:8800m{$2[@anon-20191002_181700-24:localhost:8800mi4]@anon-20191002_181700-249:localhost:8800m(84]@anon-20191002_181700-248:localhost:8800m'\4]@anon-20191002_181700-247:localhost:8800mi*4]@anon-20191002_181700-246:localhost:8800mk4]@anon-20191002_181700-245:localhost:8800m 4]@anon-20191002_181700-244:localhost:8800m x4]@anon-20191002_181700-243:localhost:8800m4]@anon-20191002_181700-242:localhost:8800m?4]@anon-20191002_181700-241:localhost:8800mϕ4]@anon-20191002_181700-240:localhost:8800mϒ2[@anon-20191002_181700-23:localhost:8800mS4]@anon-20191002_181700-239:localhost:8800m¬G4]@anon-20191002_181700-238:localhost:8800m«4]@anon-20191002_181700-237:localhost:8800mŒ{4]@anon-20191002_181700-236:localhost:8800mpa4]@anon-20191002_181700-235:localhost:8800mXl4]@anon-20191002_181700-234:localhost:8800mXj4]@anon-20191002_181700-233:localhost:8800m?4]@anon-20191002_181700-232:localhost:8800m?4]@anon-20191002_181700-231:localhost:8800m4]@anon-20191002_181700-230:localhost:8800m"2[@anon-20191002_181700-22:localhost:8800md4]@anon-20191002_181700-229:localhost:8800m4]@anon-20191002_181700-228:localhost:8800m ~z v r n j fb^ZVRNJFseeQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800reeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800qeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800peeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800oeeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800neeQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800meeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800leeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800keeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800jeeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800ieeQ$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800heeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800geeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800feeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800eeeQ$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800deeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800ceeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800beeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800aeeQ$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800`eeQ$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800_eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800^eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800]eeQ$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800\eeQ$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800[eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800ZeeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800YeeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800XeeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800WeeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800VeeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800 H^,~L> v De   p } K   Q   X & j& _ -X4l:r@xF^8,1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 T1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI Z1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs.1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak 1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0i1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI _1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA ]1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 &81e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 n1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs 1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg 1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g&1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 71e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY91e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgm1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490J1e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w71e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYj1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk21e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt01e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 n1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68g1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8V1e$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokG0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwV1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ_1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30so1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAS1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4A1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8Y1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 |1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 21e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 2 # ]#h9eQ__$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 826}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-181:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041016751, "hashes": {"sha256": "YRJY++icC8OnXXeNDxX2b5/sECYaNGkRtg5i6MhEK/A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gp2yENZcvgyLrAqrkTCw3bd0C58b31+0AstzaQmgBoQrSqMH9nIC6L1Y+L2Yd/EPAG0U10SBN2SVAdVSYLMJAw"}}, "unsigned": {"age_ts": 1570041016751}}U8eQ_9$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 201, "stream_ordering": 825}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI"], "prev_events": ["$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q"], "type": "m.room.member", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-179:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-179", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-179:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041014189, "hashes": {"sha256": "9O8/wDUaWpFe6z7Ix5+V8yZ+CSr1Ml4YwCk5XIzNcE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nv3JiFbDJX6ufTLg1GRx/Q0o11apEcaGMimkXt2TDrjMjf72QTOxJI2ZgG8C/bjNsPG8S5V2rlD9hIYA0qFfAg"}}, "unsigned": {"age_ts": 1570041014189}}q7eQ/$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 824}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-180", "membership": "join"}, "depth": 8, "hashes": {"sha256": "HpN18De0xWs7EqDZbMXTsd3qNa5s4MaXTSzXxlIFPl0"}, "origin": "localhost:8829", "origin_server_ts": 1570041013778, "prev_events": ["$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q"], "prev_state": [], "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-180:localhost:8829", "state_key": "@anon-20191002_181700-180:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7DVdkI7NweoIO/sXBLT0MzgOc4tS1gJThS7fLB7oC2zq67Qd0LXULHl6qdljKIFgKzsEWO63UXLYKfC53urXAg"}, "localhost:8829": {"ed25519:a_UxIG": "6XqzDjVabDQZcmPpfwfPfKEFUxCnn4grCAEE3LWpC6SwfTYSL+Fky2n6hfwkqHyEO4BSqW2zf37uNLkz4+nfDg"}}, "unsigned": {"age": 137}}6eQ_M$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 823}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc"], "type": "m.room.aliases", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"aliases": ["#test-20191002_181700-31:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041013047, "hashes": {"sha256": "3sScjK/cOJRZLCDrxAJwUctHnEFuhCKW+n0UqrSAMg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "roYICBAfMyH6dDmuopGyhgn6G88mfn+IIxSM5GPHq1WYRXApK56clxwLE9xVu4B+zbY0KCPHE6lD3uHNZQ9HDQ"}}, "unsigned": {"age_ts": 1570041013047}} YlT<uN& _ 7  q I " [ 3 k C  { S , d<uN'b;sL$_7oGX0h@'Q!CAGaRyRvrohDRBsrWH:localhost:8800g'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800>'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800h'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800Z'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800#'Q!HusOrLtWZTLbmQZxmm:localhost:8800 ''Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800='Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800\'Q!HOPyhZPcKkrvSmDIvX:localhost:8800=&Q!HIZTeBCxvpMSpcqGVD:localhost:8800Y&Q!HAFNBarGuVZuWCgwWM:localhost:8800&&Q!GwXGurbyEmykmmHcHJ:localhost:8800H'Q!GwLdUoDplyVUogXDzu:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800_&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800S&Q!GgUNbVXspVTpOlaHBl:localhost:8800:'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800 &Q!EyEaTZElOkdURKbEXo:localhost:8800('Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800<'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800\'Q!DnUHoxreGexNmjSVpq:localhost:8800V'Q!DnUHoxreGexNmjSVpq:localhost:8800U'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DSFBpkqfnvBQbGoMUK:localhost:8800A'Q!CkNvQnbApPIcuKygDk:localhost:8800S&Q!CgVBWWcRJoHEcwoLcq:localhost:8800>'Q!CSqENqzAezaZnGktbE:localhost:8800&Q!CQKLQUpSYakhxVDltC:localhost:8800J'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800''Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800Q'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800t'Q!BKZJsoFNhiLTDYNclB:localhost:8800j'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800&Q!AjjrNwXmPTCruHxaJq:localhost:8800R'Q!AYFqrmxwClFQlcTTYq:localhost:8800&Q!AWfbViAZparIjmDaVT:localhost:8800!'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:8800]1!9:localhost:42455D1!6:localhost:42455 1!5:localhost:424553!13:localhost:42455I3!12:localhost:42455H3!11:localhost:42455F3!10:localhost:42455E1!0:localhost:42455 T=~V.ge`8?qI" Z 2 l D  X 0 h @  x P ) a9rJ#[3 mE{S=+'V(&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800} b'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800-'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800Z'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:88009'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800&Q!JusxqeECtidaPlWqhp:localhost:8800U'Q!TeraguiGoZoeOGFzlI:localhost:8800G'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800d&Q!TWETXUgfFZafDdbqLS:localhost:8800''Q!TSFcaXDBqrCREHRHxv:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800[&Q!SyIWYOmcGiASNkPCTB:localhost:8800<'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800S'Q!SrMQpDMFREKRMELwbL:localhost:8800Z'Q!SpXEytywhTbAftyVBr:localhost:8800a'Q!SnROoiDBapNNtMmKnT:localhost:8800C'Q!SfYtaUhCFosNfHfUVm:localhost:88006'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800.'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800)'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800w&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800{'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800='Q!PgNDjhhIBAXKryuGKy:localhost:8800<'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800T'Q!PUIxAaiCnbqaVbawGu:localhost:8800V'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800J ('Q!OtBUhGeUSiDMWRKIOT:localhost:8800&Q!OqPpVlCwmKdAUlwrXI:localhost:8800W&Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800 (&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 ''Q!OJilSqnQvLgoXSqRaW:localhost:8800U'Q!OCEHAjcOXWNyWIESIS:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800L'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800X'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800u'Q!NboFFVLpJHTeuUKCjM:localhost:8800R'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:8829I&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:88005'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800^'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:88007'Q!LazKtcHZriKzCvvGwV:localhost:8800 LM%}U-tL$ \ 5  o G 5]e=`8 pH!Y1  jCud<  W 0 }U h @  x P ( 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800I'Q!NcJYmIbgjsaKJOzBcs:localhost:8800G'Q!LazKtcHZriKzCvvGwV:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800O'Q!LvARVIpJZeRQxbKefX:localhost:8800q'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800''Q!NgkQVVUNzoyCVPtckM:localhost:8800&'Q!JiUawCFQnodcpssOfK:localhost:8800)'Q!JiUawCFQnodcpssOfK:localhost:8800('Q!OJilSqnQvLgoXSqRaW:localhost:8800!'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:88009'Q!KIHYKMzkRDrJwiywwz:localhost:88008'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800&Q!OMkiVTuuOEeiFAXtUY:localhost:8800I'Q!OCEHAjcOXWNyWIESIS:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800~&Q!OBWkjfrDCNgYFfblia:localhost:8800}'Q!NrxQuziwSWzsHuXIlG:localhost:8800^&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800o'Q!NNiyzThHMivrxhojfp:localhost:8800U'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800HG'Q!NJdkYMskQwIpIWlWkn:localhost:8800l'Q!LFBhoxJpmBqFrwEzGP:localhost:8800^'Q!LFBhoxJpmBqFrwEzGP:localhost:8800]'Q!LFBhoxJpmBqFrwEzGP:localhost:8800\'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800R&Q!KxhGcTbEWmtgGNpdox:localhost:8800Q'Q!KmuRTfGFgJdgIDAgIW:localhost:8800S'Q!KetCYFxrTxawNOGnOf:localhost:8800+'Q!KetCYFxrTxawNOGnOf:localhost:8800*'Q!KeqmSjifajNKxtgqhj:localhost:8800c'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800,'Q!KdOYYnOuwAyQzqwUki:localhost:8800+'Q!KdOYYnOuwAyQzqwUki:localhost:8800*'Q!KdOYYnOuwAyQzqwUki:localhost:8800)'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800.&Q!OMkiVTuuOEeiFAXtUY:localhost:8800L&Q!OMkiVTuuOEeiFAXtUY:localhost:8800K&Q!OMkiVTuuOEeiFAXtUY:localhost:8800J  =eQ_$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 830}{"auth_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg", "$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw"], "type": "m.room.history_visibility", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041022274, "hashes": {"sha256": "TcDUkLO5ezS6qwKVuY8zlzz7OmyjWsEQ2kwNAKDgHqQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j0vDU35U5xyfzIQoocvqfceGrBeSGjWryUb/889AfCMbfSr9i+ylXTMMs4evLyTykQOCxTGitiqhLAyRRCu1CQ"}}, "unsigned": {"age_ts": 1570041022274}}s<eQ_u$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 829}{"auth_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg", "$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg"], "type": "m.room.join_rules", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041020379, "hashes": {"sha256": "3T0Dqfbl7QIHmOgLnHsTG+6Lm25yEIXKiBDFD/4T92U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QA2T3olyAgPEYANXalmmM3KimfPU0+EJnw6GukLYMF4/3e+RbwiHp8ycr1IUt9rUcNTXBJxyLYJcqSoN7tJKAA"}}, "unsigned": {"age_ts": 1570041020379}}j;eQ_c$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 828}{"auth_events": ["$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "type": "m.room.power_levels", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"users": {"@anon-20191002_181700-181:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041019015, "hashes": {"sha256": "dsCm1OW5yusOkW6jimwxnrde+bkOrMVVAHeXvGvIGIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u/XP2owo6R9Ig5GPN/GkFM4cDtLME6zNpDHPikX1nwkcABWcx8SW4OBqWhz9/S13frP+6g0fAUQLVbHNNynbCA"}}, "unsigned": {"age_ts": 1570041019015}}u:eQ_y$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 827}{"auth_events": ["$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8"], "prev_events": ["$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8"], "type": "m.room.member", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-181", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-181:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041017749, "hashes": {"sha256": "0+cwZgWFgIemPCt+5qKbwEJfoJ2mZSRwnqvWYDLHjz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "laIiFrpV37YKb0GJhsvIw1dyQAJuDLl3yhK5gkyhsvjU3YnzOfZCArz9rBG/0BoCVtC8Iwj/XsKO50FdPPWICA"}}, "unsigned": {"age_ts": 1570041017749}} ;p)bT r+Z? { 4  m % M  u - U E)}a~6^E"]=@anon-20191002_181700-222:localhost:8800anon-20191002_181700-222E!]=@anon-20191002_181700-220:localhost:8800anon-20191002_181700-220E ]=@anon-20191002_181700-218:localhost:8800anon-20191002_181700-218E]=@anon-20191002_181700-217:localhost:8800anon-20191002_181700-217E]=@anon-20191002_181700-216:localhost:8800anon-20191002_181700-216E]=@anon-20191002_181700-215:localhost:8800anon-20191002_181700-215E]=@anon-20191002_181700-214:localhost:8800anon-20191002_181700-214E]=@anon-20191002_181700-213:localhost:8800anon-20191002_181700-213Er]=@anon-20191002_181700-179:localhost:8800anon-20191002_181700-179Eq]=@anon-20191002_181700-180:localhost:8829anon-20191002_181700-180Ep]=@anon-20191002_181700-178:localhost:8800anon-20191002_181700-178Eo]=@anon-20191002_181700-176:localhost:8800anon-20191002_181700-1767n]!@anon-20191002_181700-175:localhost:8800OverriddenEm]=@anon-20191002_181700-174:localhost:8800anon-20191002_181700-1747l]!@anon-20191002_181700-173:localhost:8800OverriddenEk]=@anon-20191002_181700-170:localhost:8800anon-20191002_181700-170Ej]=@anon-20191002_181700-169:localhost:8800anon-20191002_181700-169Ei]=@anon-20191002_181700-168:localhost:8800anon-20191002_181700-168h/@8:localhost:88008E]=@anon-20191002_181700-212:localhost:8800anon-20191002_181700-212E]=@anon-20191002_181700-211:localhost:8800anon-20191002_181700-211E]=@anon-20191002_181700-209:localhost:8800anon-20191002_181700-2091@34:localhost:880034E]=@anon-20191002_181700-208:localhost:8800anon-20191002_181700-2081@33:localhost:880033E]=@anon-20191002_181700-207:localhost:8800anon-20191002_181700-2071@32:localhost:880032E]=@anon-20191002_181700-206:localhost:8800anon-20191002_181700-2061@31:localhost:880031E]=@anon-20191002_181700-205:localhost:8800anon-20191002_181700-2051@30:localhost:880030E]=@anon-20191002_181700-204:localhost:8800anon-20191002_181700-204E ]=@anon-20191002_181700-203:localhost:8800anon-20191002_181700-203E ]=@anon-20191002_181700-202:localhost:8800anon-20191002_181700-202E ]=@anon-20191002_181700-201:localhost:8800anon-20191002_181700-201E ]=@anon-20191002_181700-200:localhost:8800anon-20191002_181700-200E ]=@anon-20191002_181700-199:localhost:8800anon-20191002_181700-199E]=@anon-20191002_181700-198:localhost:8800anon-20191002_181700-198E]=@anon-20191002_181700-197:localhost:8800anon-20191002_181700-197E]=@anon-20191002_181700-195:localhost:8800anon-20191002_181700-195E]=@anon-20191002_181700-194:localhost:8800anon-20191002_181700-194E]=@anon-20191002_181700-193:localhost:8800anon-20191002_181700-193E]=@anon-20191002_181700-192:localhost:8800anon-20191002_181700-192E]=@anon-20191002_181700-191:localhost:8800anon-20191002_181700-1911@17:localhost:880017E]=@anon-20191002_181700-190:localhost:8800anon-20191002_181700-1901@16:localhost:880016E~]=@anon-20191002_181700-189:localhost:8800anon-20191002_181700-189}1@15:localhost:880015E|]=@anon-20191002_181700-188:localhost:8800anon-20191002_181700-188{1@14:localhost:880014Ez]=@anon-20191002_181700-187:localhost:8800anon-20191002_181700-187y1@13:localhost:880013Ex]=@anon-20191002_181700-186:localhost:8800anon-20191002_181700-186Ow]=!@anon-20191002_181700-185:localhost:8800anon-20191002_181700-185LemurLover7v]!@anon-20191002_181700-184:localhost:8800LemurLoverEu]=@anon-20191002_181700-183:localhost:8800anon-20191002_181700-183Et]=@anon-20191002_181700-182:localhost:8800anon-20191002_181700-182Es]=@anon-20191002_181700-181:localhost:8800anon-20191002_181700-181 ]J p> vD|J9k W% X v D  & ^ ,p>+d2jQ | J  S1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs 1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs 21e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo41e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM Z1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM Y1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM X0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU-1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU.1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQq1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQp1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6EF1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6EE1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ED1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg f1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg e1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg d1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI61e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI51e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI41e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8 1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8  d1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMv 1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg 0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0s0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0r0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0q1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 {1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 z1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 y1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE 1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE 1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE 1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg21e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs 1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQr0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMu1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg a} { y w u sqomkigeca~JeeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800~IeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800~HeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~GeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800~FeeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800~EeeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~DeeQ$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~CeeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800~BeeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~AeeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800~@eeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800~?eeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~>eeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800~=eeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800~<eeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~;eeQ$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~:eeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800~9eeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~8eeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800~7eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800~6eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~5eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800~4eeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800~3eeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~2eeQ$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~1eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800~0eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~/eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800~.eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800~-eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~,eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800 "+ S y |  7 :\9<^;>`Sv Q'1e^!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMj Q3 e\!hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_access$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg Q? ee[!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibility$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kp Q? eZ!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibility$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kh Q/ eY!hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rules$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksjQ3 eX!hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM Q']eW!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0dQ' eV!hgjYwwwjWJNgwrzOto:localhost:8800m.room.create$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_708Q']eeU!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQpQ? eT!dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibility$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQhQ/ eS!dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rules$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYjQ3 eR!dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM Q']eQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQdQ' eP!dnZVySJLGNtUKsSgXW:localhost:8800m.room.create$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM8Q']eeO!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwp~Q? eN!oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibility$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMh}Q/ eM!oznZaCpONuNDaLarkI:localhost:8800m.room.join_rules$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgj|Q3 eL!oznZaCpONuNDaLarkI:localhost:8800m.room.power_levels$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA {Q']eK!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwdzQ' eJ!oznZaCpONuNDaLarkI:localhost:8800m.room.create$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80pyQ? eI!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibility$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMhxQ/ eH!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rules$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkjwQ3 eG!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok vQ']eF!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AduQ' eE!eLsrBEnrHolwCNgkFW:localhost:8800m.room.create$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAptQ? eD!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibility$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doohsQ/ eC!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rules$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QjrQ3 eB!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc qQ']eA!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwdpQ' e@!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.create$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkpoQ? e>!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MhnQ/ e=!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rules$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw  z jAeQ_c$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 834}{"auth_events": ["$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk", "$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "prev_events": ["$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "type": "m.room.power_levels", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"users": {"@anon-20191002_181700-182:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041030216, "hashes": {"sha256": "xPJIFTTt9dqswI9HikCrqiRAp/nt4q77BLtMovLt8FA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iwx6sTMFCGhQSgxZotIt/je81PSR9JH/EnpTi/lHo/AbLXSO4QXdEY6KXfBG4yVk6freYgrp5HoGvYfEpfTMBA"}}, "unsigned": {"age_ts": 1570041030216}}u@eQ_y$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 833}{"auth_events": ["$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk"], "prev_events": ["$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk"], "type": "m.room.member", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-182", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-182:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041029587, "hashes": {"sha256": "79f/KRTZSJny0LkE2n+J8tdtYPQutMEoEgw28jzyERA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LLwTVn06LmsqFQqplnFxgzEqnbSAKKxrxUoBXp+Yw5f/R/KBSPZV1u2R54m7DKNZaNdTxvau1NFIobehcgk2Dg"}}, "unsigned": {"age_ts": 1570041029587}}h?eQ__$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 832}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-182:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041028861, "hashes": {"sha256": "Scx90BBYmP5HTXLEvTV8nXZqZZPbjuLGIFG8JCKwwoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x43x0JpV0KeAhkIJCVwdBDxxpKBZr8N6XKCMcexd6xpVH0YVCxA5OzSQPt2HjBVZ9BGF9VcmezX2mvusmAPlDg"}}, "unsigned": {"age_ts": 1570041028861}}>eQs$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "txn_id": "64", "stream_ordering": 831}{"auth_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg", "$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M"], "type": "m.room.message", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"body": "a message", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041026649, "hashes": {"sha256": "a/tdEdVHN6aN+fInd+vX//p8m0vuqoWyQmiROOTwZu0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jZWVRTSCg8Iu4NaWJ5U8y6UzCvE2haUGHULdK0VMSVI6wwmELO0sitaxcht3rkRwcYljnNmgUIl3yXbZRR1oAw"}}, "unsigned": {"age_ts": 1570041026649}} h m 7  jm60cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigo{0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_Ao}0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQo~1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8Qoӂ0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3wof1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwo҂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0woт1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFktYixvQUtYZWF0VUBuWk0KMDAyZnNpZ25hdHVyZSDs1SpADqu4MI3Kkq0UCmbydwdHoJTXpqEYg9OJG7YBnAoЂ0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQo|0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6woy0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEU2RHpoLVI4cnJSWFNPT3oKMDAyZnNpZ25hdHVyZSCANCtYnN5AyAhBu5Vj-kkdF3DfWcvAmn8qI0qr-BQc-goz Sk>]0}P#pCzM l? _ 2   R % qc6 U( E  d 7 W *uH,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800 ,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800+Q !LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800+Q !KetCYFxrTxawNOGnOf:localhost:8800,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 h h,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 g g,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 f f,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e e,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d d+Q !KcXNWNfbLcYsBKZHIp:localhost:8800 c c,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800+Q !KXMUzALpMMMKqoQXUS:localhost:8800,Q!KIHYKMzkRDrJwiywwz:localhost:8800 : :,Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 9,Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 8,Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 7,Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 6,Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 5,Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 4,Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 3,Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 2,Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 1,Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 0,Q!KxhGcTbEWmtgGNpdox:localhost:8800ll,Q!KxhGcTbEWmtgGNpdox:localhost:8800kk,Q!KxhGcTbEWmtgGNpdox:localhost:8800jj,Q!KxhGcTbEWmtgGNpdox:localhost:8800ii,Q!KxhGcTbEWmtgGNpdox:localhost:8800hh,Q!KxhGcTbEWmtgGNpdox:localhost:8800gg,Q!KxhGcTbEWmtgGNpdox:localhost:8800ff+Q !KxhGcTbEWmtgGNpdox:localhost:8800ee,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800+Q !KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800##,Q!KeqmSjifajNKxtgqhj:localhost:8800"",Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800+Q !KeqmSjifajNKxtgqhj:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800+Q !KeBlWUQiLYUoILKkTB:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  +Q !KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KXMUzALpMMMKqoQXUS:localhost:8800  Sk>]0}P#pCzM l? _ 2   R % qc6 U( E  d 7 W *uH,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800 ,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800+Q !LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800+Q !KetCYFxrTxawNOGnOf:localhost:8800,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 h h,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 g g,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 f f,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e e,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d d+Q !KcXNWNfbLcYsBKZHIp:localhost:8800 c c,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800+Q !KXMUzALpMMMKqoQXUS:localhost:8800,Q!KIHYKMzkRDrJwiywwz:localhost:8800 : :,Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 9,Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 8,Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 7,Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 6,Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 5,Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 4,Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 3,Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 2,Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 1,Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 0,Q!KxhGcTbEWmtgGNpdox:localhost:8800ll,Q!KxhGcTbEWmtgGNpdox:localhost:8800kk,Q!KxhGcTbEWmtgGNpdox:localhost:8800jj,Q!KxhGcTbEWmtgGNpdox:localhost:8800ii,Q!KxhGcTbEWmtgGNpdox:localhost:8800hh,Q!KxhGcTbEWmtgGNpdox:localhost:8800gg,Q!KxhGcTbEWmtgGNpdox:localhost:8800ff+Q !KxhGcTbEWmtgGNpdox:localhost:8800ee,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800+Q !KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800##,Q!KeqmSjifajNKxtgqhj:localhost:8800"",Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800+Q !KeqmSjifajNKxtgqhj:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800+Q !KeBlWUQiLYUoILKkTB:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  +Q !KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KXMUzALpMMMKqoQXUS:localhost:8800  fnU<$ tL% ` 8q  r KI #! ] 5 m E  ~ V / jB{S,g@yQ*e>vN'_8''Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!KXMUzALpMMMKqoQXUS:localhost:8800v'Q!KIHYKMzkRDrJwiywwz:localhost:8800$&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!JnAKXOrlyisFUpgJPw:localhost:8800_'Q!JiUawCFQnodcpssOfK:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800&Q!JGhlAUflyNxErGGZZu:localhost:8800t'Q!IlGJpjzrvvAFuwTAgo:localhost:88004'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800P&Q!ILbUVZOfPPwaZRrKJd:localhost:8800d&Q!IGVHKYcSuxzVPlFHlj:localhost:8800"'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800+'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800<'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800O&Q!HAFNBarGuVZuWCgwWM:localhost:8800%&Q!GwXGurbyEmykmmHcHJ:localhost:8800?'Q!GwLdUoDplyVUogXDzu:localhost:8800]'Q!GsjDgpaxdwYfnefiWO:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800I&Q!GgUNbVXspVTpOlaHBl:localhost:88009'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800P'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800l&Q!FPcQcheNebvdFvmOnr:localhost:8800l&Q!FIOuvzpMhoERunVYYA:localhost:8800z'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800&Q!EyEaTZElOkdURKbEXo:localhost:8800'&Q!EieRtaCFZJJCIOkRPp:localhost:8800j'Q!EhUxBjnSkVXpTrQlrn:localhost:8800/'Q!EhFUhsgQbBWmrnGmaz:localhost:88008'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800&Q!EABRjdYuYumMhLSwIa:localhost:8800{'Q!DuqHkpTfWCUblSrxQj:localhost:8800q'Q!DqxFmsXPclgGqpSwdy:localhost:8800"'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800)'Q!DSFBpkqfnvBQbGoMUK:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800='Q!CSqENqzAezaZnGktbE:localhost:88003&Q!CQKLQUpSYakhxVDltC:localhost:8800@'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800G'Q!BfEFIDBthhkweqfhir:localhost:8800&Q!BckZfhQgrcyiMhEAAJ:localhost:8800w'Q!BKZJsoFNhiLTDYNclB:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800a&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:88005&Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AYFqrmxwClFQlcTTYq:localhost:8800h&Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800|'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:424551!8:localhost:424551!7:localhost:42455~1!6:localhost:42455y1!5:localhost:42455o3!13:localhost:424553!12:localhost:424553!11:localhost:424553!10:localhost:424551!0:localhost:444051!0:localhost:42455f1!0:localhost:419851!0:localhost:37265  ` YDlap9sKH# ^ 6  p I " Z 2 j B  { S + d<uM&a9rJ"1]6 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!MWCLSWWGdWcSivNVLI:localhost:8800q'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800&'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800X&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VUibrTIkcRbfrogbQV:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800&Q!VCSCNemqikJZiRtxrs:localhost:8829]&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800s'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800b'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800x&Q!TWETXUgfFZafDdbqLS:localhost:8800&'Q!TSFcaXDBqrCREHRHxv:localhost:8800}&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800&Q!StEnDjTJToXKXsOHNf:localhost:8829\'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800M&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800#'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:88001'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800k'Q!QnmLrBAxeItdHsaxWf:localhost:8800F'Q!QkkdnzvdrjHaFGkzMt:localhost:8800r'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800u'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88009'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800C&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800Z'Q!OWGKxAmTrHLciIdrJi:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 &Q!OMkiVTuuOEeiFAXtUY:localhost:8800*'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!OCEHAjcOXWNyWIESIS:localhost:8800e&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800&Q!NfaPEGKjnUDUTavzol:localhost:8800u'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800p'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800i'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!MXhwoqNXvexeDDSOZT:localhost:8800a XoDmg<Bk@T)i> N # y w L ! u J   { P e'R}: % c8 s H qF*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ;*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 :*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800  C*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  @*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 <*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  [*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  Z*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  Y*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  X*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  W*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  V*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  U*Q!XIqmzIFbkHGQPIpywk:localhost:8800XZ*Q!XIqmzIFbkHGQPIpywk:localhost:8800WY*Q!XIqmzIFbkHGQPIpywk:localhost:8800VX*Q!XIqmzIFbkHGQPIpywk:localhost:8800UW*Q!XIqmzIFbkHGQPIpywk:localhost:8800TV*Q!XIqmzIFbkHGQPIpywk:localhost:8800SU*Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  E*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  HV*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XMNRkfscQXRjgYrOSd:localhost:8800 #*Q!XMNRkfscQXRjgYrOSd:localhost:8800"*Q!XMNRkfscQXRjgYrOSd:localhost:8800!*Q!XIqmzIFbkHGQPIpywk:localhost:8800Y[*Q!XIqmzIFbkHGQPIpywk:localhost:8800Z\*Q!XIqmzIFbkHGQPIpywk:localhost:8800\^*Q!XIqmzIFbkHGQPIpywk:localhost:8800[]*Q!XMNRkfscQXRjgYrOSd:localhost:8800 *Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800  ?*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 >*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 =*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  B*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  A*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  D*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  F*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  G*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  9*Q!XGAmnfaVvjDtQJuufa:localhost:8800 +*Q!XGAmnfaVvjDtQJuufa:localhost:8800 **Q!XGAmnfaVvjDtQJuufa:localhost:8800 )*Q!XGAmnfaVvjDtQJuufa:localhost:8800 (*Q!XGAmnfaVvjDtQJuufa:localhost:8800 '*Q!XUbDuPDiMTXJZDyAPc:localhost:8800 !*Q!XUbDuPDiMTXJZDyAPc:localhost:8800  uEeQ_y$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 838}{"auth_events": ["$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA"], "prev_events": ["$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA"], "type": "m.room.member", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-183", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-183:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041034400, "hashes": {"sha256": "S8SUI+JiMx9fPD01mU2ZQp1Qi9iy1NrmvoK/rZ/63BU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xmmJFl/7z853VNarRwAkzCPlcZt0BFj6hS4SRWh0k3I/8Ywt+euBTAGtoNkeIOpjqZysZNHOsdsAhFeNcDPGBA"}}, "unsigned": {"age_ts": 1570041034400}}hDeQ__$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 837}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-183:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041033627, "hashes": {"sha256": "QdP3Nbp2ylZ1A1H3/6tyw+W6gaPwPCynCA49E1fLmDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JzgYD5hszVOwEGvf48ETyOVqmiyA0Kpd6Ec7LGjcu46yzzW1Y3O+AkVWWJjnKzkP8/C9wUpt0ZYGb9aWHhNCBg"}}, "unsigned": {"age_ts": 1570041033627}}CeQ_$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 836}{"auth_events": ["$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc", "$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk", "$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "prev_events": ["$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q"], "type": "m.room.history_visibility", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041031835, "hashes": {"sha256": "uEQQVr5KBKZDY9rsksFtLirgrRQZkXEtqd382Shx8gw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GQ3F5WLxbOhHeHsZu+fk4vmNqLogzmf8Zvm5007f0I2Yq8hurcwy4wkp4M6ll1DCI59KZS4I2TvXqeZTio/QBw"}}, "unsigned": {"age_ts": 1570041031835}}sBeQ_u$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 835}{"auth_events": ["$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc", "$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk", "$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "prev_events": ["$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc"], "type": "m.room.join_rules", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041030983, "hashes": {"sha256": "UbEBEPEQXGZoIZeEpMiq+dVnXxkO+6TJMpQbCG3pWnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q5G1oz6lAQADrKXD3phSp+NvII6Yge5QYXsaftClYsH5AAXSb7onyYrpTfPDpt6KCpnCEd1UM5oxWiXqA+hLDw"}}, "unsigned": {"age_ts": 1570041030983}} J? \ * P   j 8p> D    $b0 Vi7o v= uC|JQ  v D  P | J \ * X1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8A0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4S1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ/1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw#1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkr1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA90e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8N1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI 1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicV1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicR1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgb1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb01e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0v1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGII1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk^1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw91e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds ;1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY{1e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA U1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ,1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip431e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A `1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU B1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoV1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsB1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA s1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 .1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds ,1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYw1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI 1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko z1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko t1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 8 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1 e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk_1 e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0^1 e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw]1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ\1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk[1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgZ1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwZ1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gY1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0Y1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32LwX1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIW1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0IV1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcU1~e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0T1}e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUS1|e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmoR1{e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIR1ze$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcQ1ye$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIQ1xe$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsP1we$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEO1ve$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoN1ue$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcM1te$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNoL1se$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIK1re$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsJ1qe$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70I1pe$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QI1oe$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMH1ne$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoH1me$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAG1le$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekF1ke$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAE1je$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccD1ie$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEC1he$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUB1ge$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukA1fe$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk@1ee$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI@1de$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI?1ce$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To?1be$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w=1ae$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0<1`e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI;1_e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0:1^e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g91]e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc81\e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ71[e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM71Ze$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA61Ye$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg61Xe$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ51We$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k41Ve$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks31Ue$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM21Te$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr011Se$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_7001Re$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8/1Qe$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ.1Pe$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY-1Oe$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM,1Ne$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ+1Me$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM*1Le$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY)1Ke$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM(1Je$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg'1Ie$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA&1He$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw%1Ge$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80$1Fe$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM#1Ee$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk"1De$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!1Ce$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A 1Be$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA1Ae$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo ?QRo6q8 7 T  p 7 S  q 8 n 5 T pTp7SQU8e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAsha256 8e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4sha2568e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKAsha2568e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacsha2568e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavksha256 8e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gsha256 B8e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcsha256 >8e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590sha256 8e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAsha256 U8e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wsha2568e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0sha2568e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0sha256 8e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIsha2568e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXrosha2568e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5Esha256 /8e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Ysha256)8e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMsha256 8e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQsha2568e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSssha2568e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8sha2568e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgsha256;8e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0sha256 8e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUsha256[8e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4sha2568e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8sha256 8e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcsha2568e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwsha256 8e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgssha256G7e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Ysha256&8e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkksha2568e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgsha2568e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEsha256 8e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8sha256.8e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4sha256 8e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMsha256U8e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwsha2568e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04sha256&8e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMsha256 58e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAsha2568e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4sha256L8e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpssha2568e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28ssha2567e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNcsha25668e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Ysha256+7e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcsha256O8e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYsha256N8e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wosha256D8e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8sha256 8e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00sha256 8e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hssha2568e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUsha256S8e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8sha2568e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qksha2568e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Ysha256j8e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8Usha2568e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAsha256m8e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkksha2568e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38sha2568e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0sha256i8e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4sha2568e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAsha256 u8e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIsha256 8e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0sha256 K[j8p> v D  | J  P  V $ [ \ *b0h6o= uUC{#IO1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs41e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4,1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0f1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to=1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYS1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcG1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY L1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY Z1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYy0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8J1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw A1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU$1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 21e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA 1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoU1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE|1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM T1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM 1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYA1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM K1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts%1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMN1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwG1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8T1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IN1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A l1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI |1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo}1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 #g= i r  JM\@Tc!AgaeQ' $FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800m.room.createseQ'1$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800seQ'1$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800geQ3 $wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_accessmeQ? $2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibilityeeQ/ $gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rulesgeQ3 $pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels eQ']$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800aeQ' $bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800m.room.createseQ'1$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800seQ'1$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800geQ3 $JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_accessm eQ? $QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibilitym eQ? $EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibilitye eQ/ $9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rulesg eQ3 $8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels eQ']$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800aeQ' $EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800m.room.create eQ']$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800meQ? $ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibilityeeQ/ $GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rulesgeQ3 $VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels eQ']$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800aeQ' $HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.create eQ']$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800meQ? $K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibilityeeQ/ $iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800m.room.join_rulesg~eQ3 $Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800m.room.power_levels }eQ']$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800a|eQ' $fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800m.room.createm{eQ? $fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibilityezeQ/ $gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rulesgyeQ3 $81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels xeQ']$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800aweQ' $Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800m.room.create   _ v ?o- JU ( V _~ eBeQ/ $W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rulesmXeQ? $ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibilityeWeQ/ $GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rulesgVeQ3 $VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels YeQ']$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800joinaTeQ' $HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.create SeQ']$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800joinaIeQ' $Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800m.room.createmHeQ? $2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibilityeGeQ/ $1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rulesgFeQ3 $tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels EeQ']$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800joinaDeQ' $1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.createmCeQ? $eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility @eQ']$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800joina?eQ' $GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800m.room.create >eQ']$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800join =eQ']$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829joinmReQ? $K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibilityeQeQ/ $iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800m.room.join_rulesgPeQ3 $Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800m.room.power_levelsgAeQ3 $NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levelsaNeQ' $fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800m.room.createmMeQ? $fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibilityeLeQ/ $gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rulesgKeQ3 $81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels JeQ']$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800join zJ. H  N  T " Z ( a 0h6n< tBzHNT"Z(`.j8sA9d1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gt1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gs1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gr1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU %1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU $1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs&1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs%1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQD1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQC1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQB1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg"1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY`1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY_1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY^1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew\1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew[1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewZ1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsB1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsA1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os@1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU31e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU21e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU11e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs<1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs;1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs:1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI :1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirwa0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw`1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYz1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYy1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYx1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0h1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0g1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0x1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A`1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A_1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A^1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5At1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5As1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Arc1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg"1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0[0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0Z0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0Y1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 wl D 1 w*]c!E@anon-20191002_181700-189:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVidUpNVXhuOGZWLl8zRUcKMDAyZnNpZ25hdHVyZSCXgK_fzAECd6qxDK5bXpGq3bXHnw2u9AkinbzsoF1L7woRWJCTIMOHJ127.0.0.1Perl + Net::Async::HTTP/0.44m5{)1a%E@15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gT2g9az0zZExCPURJdHkyagowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIH2hVUWzUTzg0iqiItdcOb0l4V8wVp-qZPorOSUIDDIwCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m(]c!E@anon-20191002_181700-188:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAjPUM3bmpqTndOZnYrMUoKMDAyZnNpZ25hdHVyZSC_kz-E8YmMBNcAclPvn3n3UpiiaFAKSaPlBkz2lbFOAQoHQVPFKSROB127.0.0.1Perl + Net::Async::HTTP/0.44m{'1a%E@14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZSZFNGErMHFfdXhzcCtzQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlINrCwOwQyMEAprIa-T8zRFMD9PdqAvsYHDRxJuawVJrKCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m&]c!E@anon-20191002_181700-187:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZHK005MFlxMkksc35acnoKMDAyZnNpZ25hdHVyZSB77-Jon2mI9xbF7QXvmsgb-UWL0tcYtDp9oWaY2oeTbQoPTZIGIMOFF127.0.0.1Perl + Net::Async::HTTP/0.44m_{%1a%E@13:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO3Y0Q29GWE5YeHR-OnRIcQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEx9qDT1ndFqTfeFHMHmfj2Bk8E4hOUXORN-m3pDpxhZCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mP<$]c!E@anon-20191002_181700-186:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG00TmlBRUNYaklfIzUxQy0KMDAyZnNpZ25hdHVyZSAhw-vznghM1qodIeuqnym4f7ESqx4RXazHU0ls-7TVmQoMCDWETOPHN127.0.0.1Perl + Net::Async::HTTP/0.44m2%#]c!E@anon-20191002_181700-185:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwoVORURBUNEE127.0.0.1Perl + Net::Async::HTTP/0.44mU"]c!E@anon-20191002_181700-184:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1QoVWQCQPUGVZ127.0.0.1Perl + Net::Async::HTTP/0.44m!]c!E@anon-20191002_181700-183:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1AoPNPQZSANHG127.0.0.1Perl + Net::Async::HTTP/0.44mG  hIeQ__$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 842}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-184:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041038457, "hashes": {"sha256": "7sO4ndybwTxHSXYR320tMG3BnPQ0wztPMWwc0oljCoY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VaJvUabja1AdFcc4JR6Zg3N8ExjxLShKE4QxLzmy+3j9SrXzCJ+9pTr2/mckXeyNllyb2j3QIILpfng3dI1gCA"}}, "unsigned": {"age_ts": 1570041038457}}HeQ_$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 841}{"auth_events": ["$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok", "$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA", "$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "prev_events": ["$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk"], "type": "m.room.history_visibility", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041036407, "hashes": {"sha256": "GI9gazjoU45s6Jnj/c017RD1KD0z6nAr30lO4cq8n1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TyFIFVfeHqJWBJoRdYYLtkKoYURkoYijc8HtHZjnKMBED5rioA2H0yzEC4Dj7dh6vR5xSaWd2coWdJlqsFCGBw"}}, "unsigned": {"age_ts": 1570041036407}}sGeQ_u$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 840}{"auth_events": ["$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok", "$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA", "$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "prev_events": ["$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok"], "type": "m.room.join_rules", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041035875, "hashes": {"sha256": "5F1lAeLoJv4qX0sWb7bCM1K8++JSbb/igaSk4zGRGcE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5ILg5jxahCdyn8adq7JIJDBv32Co0LG0f4oVX/Qy4F9UCFyHW1i7LobYV8X3LTKGAPCdOHQWUumVbrdj8RQjAQ"}}, "unsigned": {"age_ts": 1570041035875}}jFeQ_c$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 839}{"auth_events": ["$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA", "$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "prev_events": ["$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "type": "m.room.power_levels", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"users": {"@anon-20191002_181700-183:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041035092, "hashes": {"sha256": "ZoLHnHoMg95ZqEP9Rc8Gt1lqmYpX+HT3TI0vDbcO0wY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hKdu7eqeV6mRVlECaZuyyUhQVuT7gE3i3H0fHQxXV3V8GgSJTET2Lxjqy3CBrOOTvLLLljt3nQAMxrrsTLLbCA"}}, "unsigned": {"age_ts": 1570041035092}} he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph          ~}|{z~y}x|w{vzuytxswrvquptosnrmqlpkojnimhlgkfjeidhcgbfae`d_c^b]a\`[_Z^Y]X\W[VZUYTXSWRVQUPTOSNRMQLPKOJNIM          FKEJDICHBGAF@E?D>C=B<A;@:?9>8=7<6;5:4938271605/4.3-2,1+0*/).(-',&+%*$)#("'!& %$#"! HLGKFJEIDHCGBFAE@D?C>B=A<@;?:>9=9<8;7:69584736251403/2.1-0,/+.*-),(+'*&)%($'#&"%!$ #"!  ZP `  d  tx201Z `e'Q 1 $_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcm.room.member!hgjYwwwjWJNgwrzOto:localhost:8800 mUumV6@13:localhost:8800!_e)Q ] $gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQm.room.message!hgjYwwwjWJNgwrzOto:localhost:8800 mSSmSW@anon-20191002_181700-186:localhost:8800 ^e'Q ] $BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMm.room.member!hgjYwwwjWJNgwrzOto:localhost:8800 mPmQ4@anon-20191002_181700-186:localhost:8800!]e)Q ]$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAm.room.message!hgjYwwwjWJNgwrzOto:localhost:8800mN mN%@anon-20191002_181700-186:localhost:8800&\e3Q ]$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgm.room.guest_access!hgjYwwwjWJNgwrzOto:localhost:8800mK2mK@anon-20191002_181700-186:localhost:8800,[e?Q ]$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQm.room.history_visibility!hgjYwwwjWJNgwrzOto:localhost:8800mFmG@anon-20191002_181700-186:localhost:8800,Ze?Q ]$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1km.room.history_visibility!hgjYwwwjWJNgwrzOto:localhost:8800mBmD@anon-20191002_181700-186:localhost:8800$Ye/Q ]$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mksm.room.join_rules!hgjYwwwjWJNgwrzOto:localhost:8800m@mAF@anon-20191002_181700-186:localhost:8800&Xe3Q ]$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMm.room.power_levels!hgjYwwwjWJNgwrzOto:localhost:8800m=m>@anon-20191002_181700-186:localhost:8800 We'Q ]$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0m.room.member!hgjYwwwjWJNgwrzOto:localhost:8800m7gm9@anon-20191002_181700-186:localhost:8800V e'Q  ]$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70m.room.create!hgjYwwwjWJNgwrzOto:localhost:8800m2sm2@anon-20191002_181700-186:localhost:8800 Ue'Q ]$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8m.room.member!dnZVySJLGNtUKsSgXW:localhost:8800m,m-.@anon-20191002_181700-185:localhost:8800,Te?Q ]$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQm.room.history_visibility!dnZVySJLGNtUKsSgXW:localhost:8800m(Em)@anon-20191002_181700-185:localhost:8800$Se/Q ]$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYm.room.join_rules!dnZVySJLGNtUKsSgXW:localhost:8800m%m&@anon-20191002_181700-185:localhost:8800&Re3Q ]$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMm.room.power_levels!dnZVySJLGNtUKsSgXW:localhost:8800m#lm$v@anon-20191002_181700-185:localhost:8800 Qe'Q ]$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQm.room.member!dnZVySJLGNtUKsSgXW:localhost:8800m Lm @anon-20191002_181700-185:localhost:8800P e'Q  ]$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMm.room.create!dnZVySJLGNtUKsSgXW:localhost:8800mm@anon-20191002_181700-185:localhost:8800 Oe'Q ]$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYm.room.member!oznZaCpONuNDaLarkI:localhost:8800mmE@anon-20191002_181700-184:localhost:8800,Ne?Q ]$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMm.room.history_visibility!oznZaCpONuNDaLarkI:localhost:8800mXm@anon-20191002_181700-184:localhost:8800$Me/Q ]$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgm.room.join_rules!oznZaCpONuNDaLarkI:localhost:8800mimB@anon-20191002_181700-184:localhost:8800&Le3Q ]$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAm.room.power_levels!oznZaCpONuNDaLarkI:localhost:8800m m@anon-20191002_181700-184:localhost:8800 Ke'Q ]$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwm.room.member!oznZaCpONuNDaLarkI:localhost:8800m *m @anon-20191002_181700-184:localhost:8800J e'Q  ]$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80m.room.create!oznZaCpONuNDaLarkI:localhost:8800mym@anon-20191002_181700-184:localhost:8800,Ie?Q ]$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMm.room.history_visibility!eLsrBEnrHolwCNgkFW:localhost:8800mwmH@anon-20191002_181700-183:localhost:8800 ZlT<uN& a 9  s K # ] 5 m E  ~ V . iB|T,g@zS+f?xP(a9sL$'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800&Q!JGhlAUflyNxErGGZZu:localhost:8800r'Q!IlGJpjzrvvAFuwTAgo:localhost:88003'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800P&Q!ILbUVZOfPPwaZRrKJd:localhost:8800b&Q!IGVHKYcSuxzVPlFHlj:localhost:8800"'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800+'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800<'Q!HbYxdEuVIeLKHwqJEh:localhost:8800&Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800O&Q!HAFNBarGuVZuWCgwWM:localhost:8800%&Q!GwXGurbyEmykmmHcHJ:localhost:8800?'Q!GwLdUoDplyVUogXDzu:localhost:8800\'Q!GsjDgpaxdwYfnefiWO:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800I&Q!GgUNbVXspVTpOlaHBl:localhost:88009'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800O&Q!FklhVuCInffbDxunWv:localhost:8800~'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800k&Q!FPcQcheNebvdFvmOnr:localhost:8800j&Q!FIOuvzpMhoERunVYYA:localhost:8800x'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800&Q!EyEaTZElOkdURKbEXo:localhost:8800'&Q!EieRtaCFZJJCIOkRPp:localhost:8800h'Q!EhUxBjnSkVXpTrQlrn:localhost:8800.'Q!EhFUhsgQbBWmrnGmaz:localhost:88007'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800&Q!EABRjdYuYumMhLSwIa:localhost:8800y'Q!DuqHkpTfWCUblSrxQj:localhost:8800p'Q!DqxFmsXPclgGqpSwdy:localhost:8800!'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800('Q!DSFBpkqfnvBQbGoMUK:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800='Q!CSqENqzAezaZnGktbE:localhost:88002&Q!CQKLQUpSYakhxVDltC:localhost:8800@'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800G'Q!BfEFIDBthhkweqfhir:localhost:8800&Q!BckZfhQgrcyiMhEAAJ:localhost:8800u'Q!BPNyKqmwcpGxIbGFZG:localhost:8800'Q!BKZJsoFNhiLTDYNclB:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800_&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:88004&Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AYFqrmxwClFQlcTTYq:localhost:8800g&Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800{'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:424551!6:localhost:42455x1!5:localhost:42455n3!13:localhost:424553!12:localhost:424553!11:localhost:424553!10:localhost:424551!0:localhost:42455e Ug~ jg@xP(Z2 rD>-b:bUrJ B#  k [ 3 m E :"  J  X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800^&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800Y'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800#'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800t&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800q'Q!OCEHAjcOXWNyWIESIS:localhost:8800d&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800j'Q!MXhwoqNXvexeDDSOZT:localhost:8800`&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800|&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800o'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800L&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800"'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:88000'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800E'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88008'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800B&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800( p%:DN\ f p  z ( 2 < FPt#0=PdQ]!oznZaCpONuNDaLarkI:localhost:8800@anon-20191002_181700-184:localhost:88004PXQ ]!lAGTcYIuMBXsVRGCOe:localhost:8800@anon-20191002_181700-169:localhost:880040:PcQ]!eLsrBEnrHolwCNgkFW:localhost:8800@anon-20191002_181700-183:localhost:88004PbQ]!ILbUVZOfPPwaZRrKJd:localhost:8800@anon-20191002_181700-182:localhost:88004PaQ]!wAyboOFgsOPwkmgMAI:localhost:8800@anon-20191002_181700-181:localhost:88004P`Q]!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-178:localhost:88004P_Q]!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-176:localhost:88004P^Q]!tDsPLsKOLPePtEWRwn:localhost:8800@anon-20191002_181700-176:localhost:88004P]Q]!XMNRkfscQXRjgYrOSd:localhost:8800@anon-20191002_181700-174:localhost:88004P\Q]!wUuodvgsmAJqKJUBCQ:localhost:8800@anon-20191002_181700-173:localhost:88004P[Q ]!zFdNewlKnUiMBxnYrN:localhost:8800@anon-20191002_181700-170:localhost:88004PZQ ]!KeBlWUQiLYUoILKkTB:localhost:8800@anon-20191002_181700-170:localhost:88004PYQ ]!WVzjUePHrzCjfyTbmK:localhost:8800@anon-20191002_181700-169:localhost:88004 P|Q]!sfXbvAcOUJhzGwWEpZ:localhost:8800@anon-20191002_181700-209:localhost:88004P{Q]!YufaOfAlruTdjyUCwO:localhost:8800@anon-20191002_181700-208:localhost:88004PzQ]!ifQxHmNAcSSGHVMjfi:localhost:8800@anon-20191002_181700-207:localhost:88004PyQ]!EABRjdYuYumMhLSwIa:localhost:8800@anon-20191002_181700-206:localhost:88004PxQ]!FIOuvzpMhoERunVYYA:localhost:8800@anon-20191002_181700-205:localhost:88004PwQ]!zNBpypJDRMlBdOcLlW:localhost:8800@anon-20191002_181700-204:localhost:88004PvQ]!TcaopYfMoJFEcjYRzJ:localhost:8800@anon-20191002_181700-203:localhost:88004PuQ]!BckZfhQgrcyiMhEAAJ:localhost:8800@anon-20191002_181700-202:localhost:88004PtQ]!KXMUzALpMMMKqoQXUS:localhost:8800@anon-20191002_181700-201:localhost:88004PsQ]!NfaPEGKjnUDUTavzol:localhost:8800@anon-20191002_181700-200:localhost:88004PrQ]!JGhlAUflyNxErGGZZu:localhost:8800@anon-20191002_181700-199:localhost:88004PqQ]!tkajvIKHoOMWGsReBs:localhost:8800@anon-20191002_181700-198:localhost:88004PpQ]!fcdNYFWFyxmdpKAknc:localhost:8800@anon-20191002_181700-197:localhost:88004PoQ]!MWCLSWWGdWcSivNVLI:localhost:8800@anon-20191002_181700-195:localhost:88004PnQ]!erBPdgtUsiOfIKUkho:localhost:8800@anon-20191002_181700-194:localhost:88004PmQ]!dWgOTucBVQBKZjfndN:localhost:8800@anon-20191002_181700-193:localhost:88004PlQ]!hSzBsirdPWHtVjagXn:localhost:8800@anon-20191002_181700-192:localhost:88004PkQ]!mfzIRinBAGGrZvQAuI:localhost:8800@anon-20191002_181700-191:localhost:88004PjQ]!FPcQcheNebvdFvmOnr:localhost:8800@anon-20191002_181700-190:localhost:88004PiQ]!vOfeZvbtpuHfoqShFl:localhost:8800@anon-20191002_181700-189:localhost:88004PhQ]!EieRtaCFZJJCIOkRPp:localhost:8800@anon-20191002_181700-188:localhost:88004PgQ]!NQgavrmiCPUVaVjssy:localhost:8800@anon-20191002_181700-187:localhost:88004PfQ]!hgjYwwwjWJNgwrzOto:localhost:8800@anon-20191002_181700-186:localhost:88004PeQ]!dnZVySJLGNtUKsSgXW:localhost:8800@anon-20191002_181700-185:localhost:88004 " 5 4 ? i h  s +M]h BR]gGQ/ eE!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rules$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAiFQ3 eD!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc EQ']eC!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEcDQ' eB!EieRtaCFZJJCIOkRPp:localhost:8800m.room.create$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUuCQ'1eA!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukuBQ'1e@!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIiAQ3 e?!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_access$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Too@Q? e>!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility$FoUAmMH_0UK92eU5EB9Aa8u3hMKir0klOhiqwMhM1uYo?Q? e=!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wg>Q/ e-b::ZUrJ B#  k [ 3 m E bJ  r " X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800]&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800X'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800"'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800s&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800p'Q!OCEHAjcOXWNyWIESIS:localhost:8800c&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800i'Q!MXhwoqNXvexeDDSOZT:localhost:8800_&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800{&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800n'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800K&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800/'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800D'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88007'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800A&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800( ZlT<uN& a 9  s K # ] 5 m E  ~ V . iB|T,g@zS+f?xP(a9sL$'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800&Q!JGhlAUflyNxErGGZZu:localhost:8800r'Q!IlGJpjzrvvAFuwTAgo:localhost:88002'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800P&Q!ILbUVZOfPPwaZRrKJd:localhost:8800b&Q!IGVHKYcSuxzVPlFHlj:localhost:8800"'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800+'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800<'Q!HbYxdEuVIeLKHwqJEh:localhost:8800&Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800O&Q!HAFNBarGuVZuWCgwWM:localhost:8800%&Q!GwXGurbyEmykmmHcHJ:localhost:8800?'Q!GwLdUoDplyVUogXDzu:localhost:8800['Q!GsjDgpaxdwYfnefiWO:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800I&Q!GgUNbVXspVTpOlaHBl:localhost:88009'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800N&Q!FklhVuCInffbDxunWv:localhost:8800~'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800j&Q!FPcQcheNebvdFvmOnr:localhost:8800j&Q!FIOuvzpMhoERunVYYA:localhost:8800x'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800&Q!EyEaTZElOkdURKbEXo:localhost:8800'&Q!EieRtaCFZJJCIOkRPp:localhost:8800h'Q!EhUxBjnSkVXpTrQlrn:localhost:8800-'Q!EhFUhsgQbBWmrnGmaz:localhost:88006'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800&Q!EABRjdYuYumMhLSwIa:localhost:8800y'Q!DuqHkpTfWCUblSrxQj:localhost:8800o'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800''Q!DSFBpkqfnvBQbGoMUK:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800='Q!CSqENqzAezaZnGktbE:localhost:88001&Q!CQKLQUpSYakhxVDltC:localhost:8800@'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800G'Q!BfEFIDBthhkweqfhir:localhost:8800&Q!BckZfhQgrcyiMhEAAJ:localhost:8800u'Q!BPNyKqmwcpGxIbGFZG:localhost:8800'Q!BKZJsoFNhiLTDYNclB:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800_&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:88003&Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AYFqrmxwClFQlcTTYq:localhost:8800f&Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800z'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:424551!6:localhost:42455w1!5:localhost:42455m3!13:localhost:424553!12:localhost:424553!11:localhost:424553!10:localhost:424551!0:localhost:42455d Ug~ jg@xP(2 D>-b::ZUrJ B#  k [ 3 m E bJ  r " X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800]&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800X'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800"'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800s&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800p'Q!OCEHAjcOXWNyWIESIS:localhost:8800c&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800i'Q!MXhwoqNXvexeDDSOZT:localhost:8800_&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800{&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800n'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800K&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800/'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800D'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88007'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800A&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800( cd=zS, i B   X 1 n G ] 6  s L %b;xQ*g@}V/lE[4 qJ#`9%cQ !eLsrBEnrHolwCNgkFW:localhost:8800%bQ !ILbUVZOfPPwaZRrKJd:localhost:8800%aQ !wAyboOFgsOPwkmgMAI:localhost:8800%`Q !bnTuVBaAJTPbcYZtRl:localhost:8800%_Q !BGbJEmJRVJGlZFQbZe:localhost:8800%^Q !tDsPLsKOLPePtEWRwn:localhost:8800%]Q !XMNRkfscQXRjgYrOSd:localhost:8800%\Q !wUuodvgsmAJqKJUBCQ:localhost:8800%[Q !zFdNewlKnUiMBxnYrN:localhost:8800%ZQ !KeBlWUQiLYUoILKkTB:localhost:8800%YQ !WVzjUePHrzCjfyTbmK:localhost:8800%XQ !lAGTcYIuMBXsVRGCOe:localhost:8800%WQ !UyLoIXmzVFwycmBUeh:localhost:8800%VQ !nteAxExBGJfaGIpuCx:localhost:8800%UQ !itKDOCtoMkFUETDtle:localhost:8800%TQ !qxqNYKdtgvOQdhmgsj:localhost:8800%SQ !MlzmtUYSZOiByAZdKx:localhost:8800%RQ !WjlTCJVOFJkanCtkFE:localhost:8800%QQ !aBCvSXjtZUEPlPGHvY:localhost:8800%PQ !IMiczgkCTjejbnbeyP:localhost:8800%OQ !HIZTeBCxvpMSpcqGVD:localhost:8800%NQ !awHAhLuEkavTGACcUW:localhost:8800%MQ !OqPpVlCwmKdAUlwrXI:localhost:8800%LQ !quaZwrGnzbNWhwAOYB:localhost:8800%KQ !JusxqeECtidaPlWqhp:localhost:8800%JQ !aWvVRVaDflYyyGTOdD:localhost:8800%IQ !GiSxJsKZhQVHBkrVPn:localhost:8800%HQ !AjjrNwXmPTCruHxaJq:localhost:8800%GQ !BkzROHxDAfKIzYpmPV:localhost:8800%FQ !WWZVpyLeZfyfpWidLx:localhost:8800%EQ !XIqmzIFbkHGQPIpywk:localhost:8800%DQ !lMRBkbYJDQHgdBZBFJ:localhost:8800%CQ !cHtqiAyCHEAoBIbCmL:localhost:8800%BQ !OBWkjfrDCNgYFfblia:localhost:8800%AQ !ntuwVdUxfzNIhIKYaz:localhost:8800%@Q !CQKLQUpSYakhxVDltC:localhost:8800%?Q !GwXGurbyEmykmmHcHJ:localhost:8800%>Q !VWYMJxEviBNDdJCuKT:localhost:8800%=Q !CgVBWWcRJoHEcwoLcq:localhost:8800%<Q !HcMGemcRrLnLprOJJR:localhost:8800%;Q !SyIWYOmcGiASNkPCTB:localhost:8800%:Q !msMfSdLIAvklSSAnci:localhost:8800%9Q !GgUNbVXspVTpOlaHBl:localhost:8800%8Q !eKrOqiOabJcMgIJjwC:localhost:8800%7Q !vVmSdclwPIqYDbnmPn:localhost:8800%6Q !edbUkYJIZBNOiTuLJs:localhost:8800%5Q !VAEDgDJVqmxXZyAlSW:localhost:8800%4Q !eySSVuCclRpBDgwKIU:localhost:8800%3Q !fJXiUpbbOlLbHWmPgs:localhost:8800%2Q !oXKJArsPmtgaYANBrg:localhost:8800%1Q !egCvzKpbEwmuvDoBTb:localhost:8800%0Q !XgobMgBjNcDRJnRXLD:localhost:8800%/Q !wIhMbfQzYbJobPdwyi:localhost:8800%.Q !cSUQGmpIsSCBAVTOHo:localhost:8800%-Q !SBEprlZiuliFNSfNmz:localhost:8800%,Q !KxhGcTbEWmtgGNpdox:localhost:8800%+Q !HmkcAMkMjWRhTDJMsy:localhost:8800%*Q !OMkiVTuuOEeiFAXtUY:localhost:8800%)Q !BrssELMbasSzTFpIXm:localhost:8800%(Q !RmdhCjvouVLmyIHjaM:localhost:8800%'Q !EyEaTZElOkdURKbEXo:localhost:8800%&Q !TWETXUgfFZafDdbqLS:localhost:8800%%Q !HAFNBarGuVZuWCgwWM:localhost:8800%$Q !duCKuavMBSfRbTFPsc:localhost:8800%#Q !TleKOyAElrpgyyrAQA:localhost:8800%"Q !IGVHKYcSuxzVPlFHlj:localhost:8800%!Q !xhbvqJDfxMSsZPqvld:localhost:8800% Q !OSHhtkGUjpUCkXwIhj:localhost:8800%Q !AWfbViAZparIjmDaVT:localhost:8800%Q !wnriPzXkIMmdTNoJKU:localhost:8800%Q !jfshVGNDxkvqPxFxWB:localhost:8800%Q !OaCEdDAiatpwYcagUb:localhost:8800%Q !GGTWnzJfvPQBgQqDIE:localhost:8800%Q !cosGKKhHvKaVukBCic:localhost:8800%Q !rZWweGEChkxxtzyfDB:localhost:8800%Q !uJtKGXTNdEnCPNOGDx:localhost:8800%Q !vJQYmOxOBLwFKzYkNj:localhost:8800%Q !kkgEEVUJynguTqAoWD:localhost:8800%Q !dUnULFLGtgaVdwHtnz:localhost:8800%Q !aWbcZNVBalJilCEsdr:localhost:8800%Q !kxTDuIasPNpXtiRsif:localhost:8800%Q !wvnfKBSrUlfNmYoeil:localhost:8800%Q !NhWgOTYzEPRwAxRQvS:localhost:8800%Q !scyFsXcUIJiLIMwWMY:localhost:8800%Q !aWJOsiuJONOvjKWEjO:localhost:8800%Q !BDASLhdcKfNwxCTCSg:localhost:8800% Q !xwoIOPTGmJIlTXakxC:localhost:8800% Q !jYzridjeihmwPBuwLb:localhost:8800% Q !NZHpBquHDfJAjiawGk:localhost:8800% Q !uxKymrHZeXRYCZwekU:localhost:8800% Q !sPWVGnipjiiWQpywNO:localhost:8800%Q !GixhPUMvtKSWoKRgvw:localhost:8800%Q !zhCsYcaweVFJLLNwBz:localhost:8800%Q !loalEsWaTYwrVUNJLr:localhost:8800%Q !LaLcEGFLpjdlYlYKGC:localhost:8800%Q !odAvowLhHJcmkKlxFk:localhost:8800%Q !plcvCHNbjCkNMMxnTk:localhost:8800%Q !QZhNrNpwObZGJZpdAG:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800 bd=zS, i B   X 1 l D  | T ,  d < tL$\4 lD|T,d<tL$\4 lD%EQ !NPdjmIfsBVIIkvWBzD:localhost:8800%DQ !vyCFfUTJKYJSDadFhT:localhost:8800%CQ !beBXQofoOfxNBtzsut:localhost:8800%BQ !xvblqEscwOtCqJntfF:localhost:8800%AQ !HhYREfUiJTpjWmOuPF:localhost:8800%@Q !nvclDopiBLEOKBIheH:localhost:8800%?Q !YgaGPEraeLCqHQirin:localhost:8800%>Q !aVxOoyiLLnxmzgLJat:localhost:8800%=Q !fuHSJcznvGQnoYoLPW:localhost:8800%<Q !hYPSaMPGsLnvYSmwhg:localhost:8800%;Q !jIfvTrwedrWLubsnlM:localhost:8800%:Q !KeqmSjifajNKxtgqhj:localhost:8800%9Q !icheSPMgpemswIdQkw:localhost:8800%8Q !EyyNoldCLUdFHzXTDP:localhost:8800%7Q !vpuivIQDEhyuhOLWpg:localhost:8800%6Q !uSBqTezaFcMnlowsEf:localhost:8800%5Q !NrxQuziwSWzsHuXIlG:localhost:8800%4Q !CNFopUEQTFbzjmLvii:localhost:8800%3Q !WhqVaRReBxJXADAyYD:localhost:8800%2Q !aLxrqpqLkbzyIxGgpk:localhost:8800%1Q !BfEFIDBthhkweqfhir:localhost:8800%0Q !aaRwQZdNAliyvRHpjs:localhost:8800%/Q !ZShBIxwbJmxjjZmoRQ:localhost:8800%.Q !NNiyzThHMivrxhojfp:localhost:8800%-Q !QFiJrWFFeTAAAUCjCE:localhost:8800%,Q !KmuRTfGFgJdgIDAgIW:localhost:8800%+Q !mOrKBPhetifKHDmElM:localhost:8800%*Q !QyLUggxrTnULUAOseq:localhost:8800%)Q !azRJNFPIRSFAskLILK:localhost:8800%(Q !MBWnwKRwFznvRpAzxr:localhost:8800%'Q !krhefVncoErkCtnvsy:localhost:8800%&Q !mMsxpaIlcykPuOnDyl:localhost:8800%%Q !VOhMAiLfKyTOZbmKGw:localhost:8800%$Q !ffijTnPMbTrDXHqOXf:localhost:8800%#Q !wLitJYvgvNJzanSIvO:localhost:8800%"Q !hWHyATwKfuznrqTiyu:localhost:8800%!Q !cGkVFpidyBBxUxsszG:localhost:8800% Q !jveVPZSXJOJyNDebPO:localhost:8800%Q !rJhSRzmWBQHlIhuDXT:localhost:8800%Q !fsbkkRBZlUcBVVfMME:localhost:8800%Q !bzPCFeFSMbCESvNbxl:localhost:8800%Q !RPfffkmSEbWggEjnoI:localhost:8800%Q !nxLxsxzliamzflrEBs:localhost:8800%Q !PCgUmZOwWmtDsuFqXg:localhost:8800%Q !egbhiBqOGhloZzopol:localhost:8800%Q !KdOYYnOuwAyQzqwUki:localhost:8800%Q !XNfwczePlyYFWLCaui:localhost:8800%Q !PQZMTVTeCYqMZwkHvW:localhost:8800%Q !kpTPWDZdBbbXKLonZK:localhost:8800%Q !ITdmSQpjMnaPoHIbws:localhost:8800%Q !FAYqpziHeVZugCGaij:localhost:8800%Q !ZaOktTIVeRgBXxfubH:localhost:8800%Q !ZaltdIYVZjCHsCWTZD:localhost:8800%Q !kwXxkGQFkaeenFTQJr:localhost:8800%Q !EMhFCPhwmnWVnjtXXM:localhost:8800%Q !GGXyLHdVXqhQjPRvac:localhost:8800% Q !IfYYyzLHSOeyJBxBfn:localhost:8800% Q !ZYKvjplZRyIWvzkRyM:localhost:8800% Q !ROoilpDjLJfjKfSPIi:localhost:8800% Q !wsvXTJXouVkEZcCFsD:localhost:8800% Q !DoiZErAdypBUMZKaeJ:localhost:8800%Q !qSUSLLWjDxcGibUZdT:localhost:8800%Q !RmwbYvIIQyPlHlClty:localhost:8800%Q !SvKwEALYoNreUvqAlp:localhost:8800%Q !fOJLpnbtgKNxxVDquX:localhost:8800%Q !vAUAIZrCnHTeMGeNuw:localhost:8800%Q !EfJcWhdjNARbuHYrqU:localhost:8800%Q !vRRNxNyGboLHNhqQvr:localhost:8800%Q !NFWKQvZkIwvecnREOC:localhost:8800%Q !IPYMCBwcyNIzqdiIWv:localhost:8800%Q !HZqzpRgqekPOtxstVc:localhost:8800%~Q !FklhVuCInffbDxunWv:localhost:8800%}Q !eJPTUgihvSwaOhIkrC:localhost:8800%|Q !sfXbvAcOUJhzGwWEpZ:localhost:8800%{Q !YufaOfAlruTdjyUCwO:localhost:8800%zQ !ifQxHmNAcSSGHVMjfi:localhost:8800%yQ !EABRjdYuYumMhLSwIa:localhost:8800%xQ !FIOuvzpMhoERunVYYA:localhost:8800%wQ !zNBpypJDRMlBdOcLlW:localhost:8800%vQ !TcaopYfMoJFEcjYRzJ:localhost:8800%uQ !BckZfhQgrcyiMhEAAJ:localhost:8800%tQ !KXMUzALpMMMKqoQXUS:localhost:8800%sQ !NfaPEGKjnUDUTavzol:localhost:8800%rQ !JGhlAUflyNxErGGZZu:localhost:8800%qQ !tkajvIKHoOMWGsReBs:localhost:8800%pQ !fcdNYFWFyxmdpKAknc:localhost:8800%oQ !MWCLSWWGdWcSivNVLI:localhost:8800%nQ !erBPdgtUsiOfIKUkho:localhost:8800%mQ !dWgOTucBVQBKZjfndN:localhost:8800%lQ !hSzBsirdPWHtVjagXn:localhost:8800%kQ !mfzIRinBAGGrZvQAuI:localhost:8800%jQ !FPcQcheNebvdFvmOnr:localhost:8800%iQ !vOfeZvbtpuHfoqShFl:localhost:8800%hQ !EieRtaCFZJJCIOkRPp:localhost:8800%gQ !NQgavrmiCPUVaVjssy:localhost:8800%fQ !hgjYwwwjWJNgwrzOto:localhost:8800%eQ !dnZVySJLGNtUKsSgXW:localhost:8800%dQ !oznZaCpONuNDaLarkI:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VteL$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpssha256Ԥ*Y|a>2)dž#킛VseL$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70sha256eΓNmn H|GVreL$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qsha256Wa//c-Ő4):Tq"]]!VqeL$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMsha256#ZZŁbp sn'<׳HAVpeL$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYosha256{' wȹ!v 㲻LYOVheL$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJksha256\|\㨘@li/u|?dVgeL$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIsha256iK>D;JLUd:5+F`VVfeL$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIsha256f1% r#^%NVeeL$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tosha256 5~4C%,TX<:VdeL$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wsha256؉Yc6Ebİъ,)+VceL$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0sha256 ٟT%w itjyVbeL$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIsha256j'mR%` zrXOY1Cxu3w2VaeL$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0sha256L < ;y`vͭqnLVI}V`eL$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gsha256mGEȗD]:A[sޫV_eL$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcsha256qQ"`$Vs~ee.-V^eL$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQsha256W%79xFp%9V]eL$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMsha256٥\xJ@" o#+Z kޓV\eL$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAsha256anıMNnT6d&Ya%d V[eL$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgsha256$kS˖@oaÑ1VZeL$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQsha256A/ԃXR/Z #{G VYeL$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1ksha256گc9;לDH JpთYVXeL$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mkssha256X+iLxj K2KVWeL$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMsha256iIqMoըk^=3lTVVeL$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0sha256O_XEq&-GqGa*aUnVUeL$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70sha256Dv^jh;-RRk GY DVTeL$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8sha256]}?%t0+E-a@ VSeL$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQsha256uT*z|E7MY߁]|h"|VReL$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYsha256ǕQh:gO , - kJVQeL$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMsha256T^*P TlغyVKT*JVPeL$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQsha256m$Ad[Ac:-b::ZUrJ B#  k [ 3 m E bJ  r " X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800]&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800X'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800"'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800s&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800p'Q!OCEHAjcOXWNyWIESIS:localhost:8800c&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800i'Q!MXhwoqNXvexeDDSOZT:localhost:8800_&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800{&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800n'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800K&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800/'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800D'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88007'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800A&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800(  MeQ_$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 846}{"auth_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA", "$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "prev_events": ["$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg"], "type": "m.room.history_visibility", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041042008, "hashes": {"sha256": "EZUxAmzPrXTVDt7iVKnAEgx7wgF3C84rLZ7/5TBBYKQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G2qxz/yzTDDyHXg/O9dZMLutbld3zkaVxRD4jDyPnM02GihGyrEWWxB5RMD5OplgJJUyr8Tn8uT0m6YEsrdIDA"}}, "unsigned": {"age_ts": 1570041042008}}sLeQ_u$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 845}{"auth_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA", "$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "prev_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA"], "type": "m.room.join_rules", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041041001, "hashes": {"sha256": "9GafK9pCNZT+laJ8PRBgilvDUiVAjSi/GuCIpDI+fow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QIMmffl3DX1Vu8o2Yailc0331+FFjWGZTMqNDGcYg3ptfplmHgDCLwHwvIRvUlPZ8kY3Ukw5DCdNvGWHRdwFDQ"}}, "unsigned": {"age_ts": 1570041041001}}jKeQ_c$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 844}{"auth_events": ["$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "prev_events": ["$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "type": "m.room.power_levels", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"users": {"@anon-20191002_181700-184:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041040141, "hashes": {"sha256": "IdroYWOJOnDF5Gkde1Nrup+32p4X4IBgrdFwrXwuAgc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A6cP09N+rUhgat1txRRZMswOnYsQLnxBy63DAsuFYB1ePfQztHPU469/sWALNo60gwyUewYenqp1r5BDIbBWAg"}}, "unsigned": {"age_ts": 1570041040141}}uJeQ_y$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 843}{"auth_events": ["$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80"], "prev_events": ["$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80"], "type": "m.room.member", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-184", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-184:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041039402, "hashes": {"sha256": "KuhiiW1jgWDBG3pKkV/28JSjplk7lJE5L1YAGepKWSU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UH7FTc+Bz5hwuWuDSuqBeHjsHGQ27zcn4dOHop8Z/AAIbhCE3B2UI/Lqg3FHGxMgiUJ+YQvDeCkNtRbS1Db4BA"}}, "unsigned": {"age_ts": 1570041039402}} l|vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X 4 . ( "     z t n h b \ V P J D > 8 2 , &      f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("                                     }  |  y  x  s  w  u  t  j  n  l  k  Z  e  b  a  T  `  ]  \  N  M  L  J  H  G  F  D  B  A  @  >  <  ;  :  8  6  5  4  2  0  /  .  -  ,  +  (  '  %  $  #  "  !                            Z                                                                                                                                                  }  |  y  x  w  u  t  s  n  l  k  j  e  b  a  `  ]  \  Z  T  N  M  L  J  H  G  F  D  B  A  @  >  <  ;  :  8  6  5  4  2  0  /  .  -  ,  +  (  '  %  $  #  "  !                                                                                                                                          :                                            ~  |  {  z  y  w  v  u  t  r  q  p  o  m  l  k  j  h  g  f  e  c  a  `  _  ]  Z  Y  W  V  U  S  P  O  N  M  K  H  G  F  E  C  ?  >  =  <  8  7  6  5  4  2  )  (  '  &  $  #  "  !                                                                                                                                                     ~ } | z x w v t r q p n l k j h f e d b ` _ ^ \ Z Y a} { y w u sqomkigeca~eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~}eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~|eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~{eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~zeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~yeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~xeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~weeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~veeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~ueeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~teeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~seeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~reeQ$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~qeeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800~peeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~oeeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~neeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~meeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800~leeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~keeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~jeeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800 a} { y w u sqomkigeca~ieeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~heeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~geeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~feeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~eeeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~deeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~ceeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~beeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~aeeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~`eeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~_eeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~^eeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~]eeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~\eeQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~[eeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800~ZeeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~YeeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800~XeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800~WeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~VeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800~UeeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800~TeeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~SeeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800~ReeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800~QeeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~PeeQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~OeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800~NeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~MeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800~LeeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800~KeeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800   jQeQ_c$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 850}{"auth_events": ["$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "prev_events": ["$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "type": "m.room.power_levels", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"users": {"@anon-20191002_181700-185:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041045868, "hashes": {"sha256": "rEMYK6glZ1gDxja3ffuCZBioHNjdDTgVq96qNYMJktg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c20PANK6DDb2vMpLKWm0N+sLTq8pURvyrPXQHZZJJ5mbBDx53L5dGiXRahVdKqeD3DmJmMlReHG+s44peNHIBQ"}}, "unsigned": {"age_ts": 1570041045868}}uPeQ_y$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 849}{"auth_events": ["$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM"], "prev_events": ["$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM"], "type": "m.room.member", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-185", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-185:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041045068, "hashes": {"sha256": "GUxMwwVWFnaX8cYxVa5KAyeIr8iqdVo/4ji62PdssYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E+tOaTXWGHM8RZnUnM1+AbiqlwGL0+x/RszmfJmr7pDrZ2mHzbMLvzfTbxHaEj/fncABxiya0BLhdU2Tp8tFCw"}}, "unsigned": {"age_ts": 1570041045068}}hOeQ__$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 848}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-185:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041044399, "hashes": {"sha256": "NqEpaFJ90ZzgVpHd1tXowOWezb0pUl3OsyEWNz9cDwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pLvGrstJQh7+JTAHqLqhmDJ6X2rqz515Ephzt0Ya36/4phyRmUTyyL6HHe8QU7u4fh8TExhEN+Nt5JozvxO9AQ"}}, "unsigned": {"age_ts": 1570041044399}} NeQ_!$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 847}{"auth_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA", "$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg"], "prev_events": ["$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM"], "type": "m.room.member", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"membership": "join", "displayname": "LemurLover", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-184:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041043159, "hashes": {"sha256": "HMWtN6y7maYfLsSmI8uTeMb21cnRuAM4L1tNcH/M2pA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mvi7mO9wRYs1Y6N2BrOvRSoxjVUyP583odrlDaKlWAq4b6o0xLTRwhLIKxorL6vDXDhZlAFNB/jv/7mASd5DCA"}}, "unsigned": {"age_ts": 1570041043159, "replaces_state": "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"}} he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     ~}|{zzyxwvutsrrqponmmlkjihggfedcb``_^]\[ZZYYXWVUT~S}R|R{QzQyPxOwNvMuLtKsJrIqIpHoHnGmFlEkDjCiBhAg@f@e?d?c=b<a;`:_9^8]7\7[6Z6Y5X4W3V2U1T0S/R.Q-P,O+N     LKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! *M)L(K'J&I%H$G#F"E!D CBA@?>=<;:987654321 0 / . - ,+*)('&%$#"!  T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&     ~}|{zyxwvutsrqponml~k}|j|{i{zhzygyxfxwewvdvuctsbsrarq`qp_po^on]ml\lk[kjZjiYihXhgWgfVedUdcTcbSbaRa`Q`_P_^O][N\[M[ZLZYKYXJXWIWVHUTGTSFSRERQDQPCPOBONAML@LK?KJ>JI=IH<GF;FD:EC9DC8CB7BA6A@5@?4>=3=<2<;1;:0:9/98.87-65,54+43*32)21(10'/.&.-%-,$,+#+*")(!(' '&&%%$#""!!               ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ~~} }| |{ zy yx xwwvvuuttsrqqppoonmllk~kj}ji|ih{gfzfeyedxdcwcbva`u`_t_^s^]r]\q[ZpZYoYXnXWmWVlVUkUTjSRiRQhQPgPOfONeNMdMLcLKbJIaIH`HG_GF^FE]ED\DC[CBZA@Y@?X?=W>=V=<U<;T;:S:9R87Q76P65O54N43M32L21K10J/.I.-H-,G,+F+* Szqh_VMD;2) ~ulcZQH?6-$  y p g ^ U L C : 1 (    } s i _ U K A 7 - #    y o e [ Q G = 3 )     u k a W M C 9 / %    { q g ] S I ? 5 + !  wmcYOE;1' }si_UKA7-#yoe[QG=3) ukaWMC9/%{qg]SI?5+! wmcYOE;1'   a@ a> a< a: a8 a6 a4 a2 a/ a. a+ a* a' a& a# a" a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a} a| az ay aw av at as aq ap an am ak aj ai ag af ad ac aa a` a^ a] aZ aY aV aU aR aQ aN aM aJ aI aG aE aC aA a? a< a; a9 a7 a4 a3 a1 a0 a/ a- a+ a) a' a& a$ a# a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a aa}a|azaxauatarapanamalakajaiahagafaeadacabaaa`a_a^a]a\a[aZaYaXaVaTaRaPaNaLaJaHaFaEaDaBa@a>a<a:a7a6a4a2a1a0a/a-a,a+a*a)a(a'a&a%a$a#a"a!a aaaaaaaaaaaaa a aaaaaaa a >zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ,"|rh^TJ@6vlbXND:0&~tj~tj`VLB8.$qg]SI?5+~ aC a a a a a a a a a a a a0 a/ a. a+ a* a) a' a& a$ a# a" a! a a a a a a a a a a a` a^ a\ aZ aX aV aT aS aR aP aO aM aK aI aG aE+ a a a a a a a a} a{ ay aw av au at as ar ap am al a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a| a{ ax aw au as aq ao am ak ah ag ad ac aa a_ a] a[ aY aW aT aS aP aO aM aI aH aG a@ a? a> a= a< a; a7 a6 a5 a1 a0 a/ a+ a* a) a% a$ a# a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a~ a} a| az ax av at ar ap an al ai ah ae ad aa a` a^ a\ aZ aY aX aW aU aS aQ aP aM aL aJ aH aF aD aj ah af ad ab aB a@ a? a= a; a: a8 a7 a5 a4  hUeQ__$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 854}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-186:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041049715, "hashes": {"sha256": "bBibhWSGL3YtVCPTLOQWmmNmxDriukPuaHuASvwAAVk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k7tEjgCIVM7w3CHOyspGMJPBCdBrfL4TKewX1GDgZNnIZGKxNObk91PL8IS7XxB4osuPrF1pX6y7EbxMDf0XDg"}}, "unsigned": {"age_ts": 1570041049715}}TeQ_M$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 853}{"auth_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM", "$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY"], "prev_events": ["$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ"], "type": "m.room.member", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-185", "avatar_url": "LemurLover"}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-185:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041048236, "hashes": {"sha256": "s5E3C1TVFbefv2MwXTevuPhvuJJX9q7yQuNJzWLSt7w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1zH/lQBafJGGRT1v7p7aAWVPRs8LQ4GsnxFWpWP+X/F3zCW9WdaCxDoGOJ93OXJPylPzgANHx1JuySxENrcDw"}}, "unsigned": {"age_ts": 1570041048236, "replaces_state": "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"}}SeQ_$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 852}{"auth_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM", "$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "prev_events": ["$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY"], "type": "m.room.history_visibility", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041047109, "hashes": {"sha256": "t8mzuDm0W7W3mePGvENjNyCnrWWLAvV9R7g0STm8IRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yCpHu0c5NUMdyUbOKOnbQYdNyNNC/CMOcGQZL+SDiiStY7Ow5rzIsqTADqBmvsJYP5oBNMWkU6wnIXnog+6PAQ"}}, "unsigned": {"age_ts": 1570041047109}}sReQ_u$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 851}{"auth_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM", "$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "prev_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM"], "type": "m.room.join_rules", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041046484, "hashes": {"sha256": "1DCUtbWRGqF8YTGYKR0pXbkWxfPiz1zSSYfFikSEbUw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4184kuKn2IBSWAPUA1KPpUrxPUuXPASDeBcO6HVpZ37bRiAzvAumTaFCcUKAXR+X3XsjurralcV/95vFl/O/CA"}}, "unsigned": {"age_ts": 1570041046484}} -RM H C > 9 4/*|%w rmhc T[Qe[!FPcQcheNebvdFvmOnr:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukTZQeZ!FPcQcheNebvdFvmOnr:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwTYQeY!FPcQcheNebvdFvmOnr:localhost:8800$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0TXQeX!FPcQcheNebvdFvmOnr:localhost:8800$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32LwTWQeW!FPcQcheNebvdFvmOnr:localhost:8800$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzITVQeV!FPcQcheNebvdFvmOnr:localhost:8800$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0ITUQeU!FPcQcheNebvdFvmOnr:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcTTQeT!FPcQcheNebvdFvmOnr:localhost:8800$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0TSQeS!vOfeZvbtpuHfoqShFl:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUTRQeR!vOfeZvbtpuHfoqShFl:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxITQQeQ!vOfeZvbtpuHfoqShFl:localhost:8800$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLITPQeP!vOfeZvbtpuHfoqShFl:localhost:8800$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsTOQeO!vOfeZvbtpuHfoqShFl:localhost:8800$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWETNQeN!vOfeZvbtpuHfoqShFl:localhost:8800$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoTMQeM!vOfeZvbtpuHfoqShFl:localhost:8800$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcTLQeL!vOfeZvbtpuHfoqShFl:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNoTKQeK!vOfeZvbtpuHfoqShFl:localhost:8800$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShITJQeJ!EieRtaCFZJJCIOkRPp:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsTIQeI!EieRtaCFZJJCIOkRPp:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QTHQeH!EieRtaCFZJJCIOkRPp:localhost:8800$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoTGQeG!EieRtaCFZJJCIOkRPp:localhost:8800$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GATFQeF!EieRtaCFZJJCIOkRPp:localhost:8800$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekTEQeE!EieRtaCFZJJCIOkRPp:localhost:8800$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFATDQeD!EieRtaCFZJJCIOkRPp:localhost:8800$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccTCQeC!EieRtaCFZJJCIOkRPp:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydETBQeB!EieRtaCFZJJCIOkRPp:localhost:8800$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUTAQeA!NQgavrmiCPUVaVjssy:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukT@Qe@!NQgavrmiCPUVaVjssy:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIT?Qe?!NQgavrmiCPUVaVjssy:localhost:8800$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86ToT>Qe>!NQgavrmiCPUVaVjssy:localhost:8800$FoUAmMH_0UK92eU5EB9Aa8u3hMKir0klOhiqwMhM1uYT=Qe=!NQgavrmiCPUVaVjssy:localhost:8800$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wT<Qe 9 4/*|%w rmhc TQe!FPcQcheNebvdFvmOnr:localhost:8800$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzITQe!FPcQcheNebvdFvmOnr:localhost:8800$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0ITQe!FPcQcheNebvdFvmOnr:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcTQe!FPcQcheNebvdFvmOnr:localhost:8800$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0TQe!vOfeZvbtpuHfoqShFl:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUTQe!vOfeZvbtpuHfoqShFl:localhost:8800$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmoTQe~!vOfeZvbtpuHfoqShFl:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxITQe}!vOfeZvbtpuHfoqShFl:localhost:8800$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcTQe|!vOfeZvbtpuHfoqShFl:localhost:8800$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLITQe{!vOfeZvbtpuHfoqShFl:localhost:8800$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsT~Qez!vOfeZvbtpuHfoqShFl:localhost:8800$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWET}Qey!vOfeZvbtpuHfoqShFl:localhost:8800$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoT|Qex!vOfeZvbtpuHfoqShFl:localhost:8800$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcT{Qew!vOfeZvbtpuHfoqShFl:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNoTzQev!vOfeZvbtpuHfoqShFl:localhost:8800$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShITyQeu!EieRtaCFZJJCIOkRPp:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsTxQet!EieRtaCFZJJCIOkRPp:localhost:8800$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70TwQes!EieRtaCFZJJCIOkRPp:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QTvQer!EieRtaCFZJJCIOkRPp:localhost:8800$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMTuQeq!EieRtaCFZJJCIOkRPp:localhost:8800$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoTtQep!EieRtaCFZJJCIOkRPp:localhost:8800$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GATsQeo!EieRtaCFZJJCIOkRPp:localhost:8800$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekTrQen!EieRtaCFZJJCIOkRPp:localhost:8800$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFATqQem!EieRtaCFZJJCIOkRPp:localhost:8800$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccTpQel!EieRtaCFZJJCIOkRPp:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEToQek!EieRtaCFZJJCIOkRPp:localhost:8800$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUTnQej!NQgavrmiCPUVaVjssy:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukTmQei!NQgavrmiCPUVaVjssy:localhost:8800$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkTlQeh!NQgavrmiCPUVaVjssy:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbITkQeg!NQgavrmiCPUVaVjssy:localhost:8800$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqITjQef!NQgavrmiCPUVaVjssy:localhost:8800$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86ToTiQee!NQgavrmiCPUVaVjssy:localhost:8800$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wThQed!NQgavrmiCPUVaVjssy:localhost:8800$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0TgQec!NQgavrmiCPUVaVjssy:localhost:8800$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzITfQeb!NQgavrmiCPUVaVjssy:localhost:8800$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0TeQea!NQgavrmiCPUVaVjssy:localhost:8800$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gTdQe`!hgjYwwwjWJNgwrzOto:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcTcQe_!hgjYwwwjWJNgwrzOto:localhost:8800$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQTbQe^!hgjYwwwjWJNgwrzOto:localhost:8800$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMTaQe]!hgjYwwwjWJNgwrzOto:localhost:8800$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAT`Qe\!hgjYwwwjWJNgwrzOto:localhost:8800$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgT_Qe[!hgjYwwwjWJNgwrzOto:localhost:8800$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQT^QeZ!hgjYwwwjWJNgwrzOto:localhost:8800$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kT]QeY!hgjYwwwjWJNgwrzOto:localhost:8800$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksT\QeX!hgjYwwwjWJNgwrzOto:localhost:8800$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM ~z v r n j fb^ZVRNJFeeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800eeQ$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800eeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800eeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800}eeQ$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800|eeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ!hgjYwwwjWJNgwrzOto:localhost:8800{eeQ$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800zeeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800yeeQ$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800xeeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800weeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k!hgjYwwwjWJNgwrzOto:localhost:8800veeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800ueeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800teeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800 ( .(\eQw$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "txn_id": "65", "stream_ordering": 861}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg"], "type": "m.room.message", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041056800, "hashes": {"sha256": "Do1FiyzsKXhl0dF3pgWxvNuCVD0CsFIOj5v1ktgAi1I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pkVmW0pwkcN9If91/LJdnm7rfkroTG8s//czw9hlrYcU/EV/8oW/cu5EAU+A5vqCQ/v7MRlYrLmNAnjgzdDrCg"}}, "unsigned": {"age_ts": 1570041056800}}z[eQ_$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 860}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ"], "type": "m.room.guest_access", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041056050, "hashes": {"sha256": "nZ2ytDfJUtge/hfj3kXpgLgBw7rJE9eD8GLd7+EN2UI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lnD5vrMhAJfug86LATMart012F1VNxAH15GzNBYj3T8aOVSOY3X2+X6ynk5ZKW7cUSaZs5xqkRybeSZ01rdEDw"}}, "unsigned": {"age_ts": 1570041056050}}NZeQ_+$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 859}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k"], "type": "m.room.history_visibility", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041054930, "hashes": {"sha256": "A02ue7fWkB3w+o3TYYg7w+BnlwQdtcCgdv5qhQoTh0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wkJFYPuGoYX8sepqicIhRXkuD8naj2Yqrki35Sduk2QYCEZURjOJgvohUW6VHrB8w/JU4zxKZEORkPvHqIyJBA"}}, "unsigned": {"age_ts": 1570041054930, "replaces_state": "$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k"}} D  0Dh`eQ__$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 865}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-187:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041061226, "hashes": {"sha256": "ilrBTD4mmG6EpBdKe4OfqQUxYN6tf5iujBcy6NvskCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZlB67k+9Wc3FiZF4jiHBOVORPSo4cjGaQaoXvNUaTv7856bVMpy0Xm0/QWUezTumQlhPiAttm9q0+bic57oGCw"}}, "unsigned": {"age_ts": 1570041061226}}V_eQ=]$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800{"stream_ordering": 864}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks"], "prev_events": ["$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ"], "type": "m.room.member", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@13:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "13", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@13:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041058677, "hashes": {"sha256": "oBtGJLuG+NDNOkETbPXea6ahSoHp5Shq3wN6v7XpWn8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y9oyTVfiyyys67BUbMYAanZJMf+N0XHU4N7xYfRC45hFdgqOjT8CsxDO+nzzz6l0Tq8kB/SOBx3md6vIxY3JCQ"}}, "unsigned": {"age_ts": 1570041058677, "replaces_state": "$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM"}}^eQ{$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "txn_id": "66", "stream_ordering": 863}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM"], "type": "m.room.message", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041058131, "hashes": {"sha256": "E0l9WPXNt686Js1q0U47g4d2KafTCrZcdU3pGCX53zA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tajMNjOdVCh+MZhjP6G83cHER287Dud343h9yVv6Nxq34ENdPRXdpBHc6Ka9fygatWTu5XVb21tRQnGGEyPSDQ"}}, "unsigned": {"age_ts": 1570041058131}}h]eQ__$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 862}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA"], "type": "m.room.member", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"membership": "invite", "displayname": "13", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@13:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041057479, "hashes": {"sha256": "8pC+seXwcB8MzHfaE5qyvu8N8hZXiI07orhao9FdhRY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mEdMR/0RlYyzsxJeC1kBcqm/AoR6sWM+jZ1SQlO5g4wnWoApqU8g5bethT409C9b9JKwWS+rmSmK2nfCKV0kAg"}}, "unsigned": {"age_ts": 1570041057479, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-186:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-186:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-186", "avatar_url": null}, "sender": "@anon-20191002_181700-186:localhost:8800"}]}} ;c z . E #\:sW;Ce e]]Q=$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4@anon-20191002_181700-200:localhost:8800@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800joinanon-20191002_181700-200Cd e]]Q=$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps@anon-20191002_181700-199:localhost:8800@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800joinanon-20191002_181700-199Cc e]]Q=$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0@anon-20191002_181700-198:localhost:8800@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800joinanon-20191002_181700-198Cb e]]Q=$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI@anon-20191002_181700-197:localhost:8800@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800joinanon-20191002_181700-197Ca e]]Q=$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c@anon-20191002_181700-195:localhost:8800@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800joinanon-20191002_181700-195C` e]]Q=$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE@anon-20191002_181700-194:localhost:8800@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800joinanon-20191002_181700-194C_ e]]Q=$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ@anon-20191002_181700-193:localhost:8800@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800joinanon-20191002_181700-193C^ e]]Q=$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM@anon-20191002_181700-192:localhost:8800@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800joinanon-20191002_181700-192C] e]]Q=$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw@anon-20191002_181700-191:localhost:8800@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800joinanon-20191002_181700-191\ e11Q$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk@17:localhost:8800@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800join17[ e1]Q$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw@17:localhost:8800@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800invite17CZ e]]Q=$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc@anon-20191002_181700-190:localhost:8800@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800joinanon-20191002_181700-190Y e11Q$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU@16:localhost:8800@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800join16X e1]Q$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI@16:localhost:8800@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800invite16CW e]]Q=$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo@anon-20191002_181700-189:localhost:8800@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800joinanon-20191002_181700-189V e11Q$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps@15:localhost:8800@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800join15U e1]Q$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q@15:localhost:8800@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800invite15CT e]]Q=$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE@anon-20191002_181700-188:localhost:8800@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800joinanon-20191002_181700-188S e11Q$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk@14:localhost:8800@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800join14R e1]Q$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI@14:localhost:8800@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800invite14CQ e]]Q=$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0@anon-20191002_181700-187:localhost:8800@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800joinanon-20191002_181700-187P e11Q$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc@13:localhost:8800@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800join13O e1]Q$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM@13:localhost:8800@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800invite13 6Nd-r 0 {  e * H  SX!DRW CQ~NRQ'E!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455 BQ? !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.history_visibility :Q/ !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.join_rules ^Q']!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@anon-20191002_181700-675:localhost:8800 6Q' !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.create <Q3 !nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels ^Q']!nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800 :Q/ !nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rules BQ? !nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibility 6Q' !nfxDdcgDfooxyiAzaB:localhost:8800m.room.create <Q3 !nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels^Q']!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800:Q/ !nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rulesBQ? !nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibility6Q' !nftGLlLhVgzOwOFufp:localhost:8800m.room.create<Q3 !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels^Q']!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829^Q']!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800:Q/ !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rulesBQ? !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibility6Q' !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create<Q3 !msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels^Q']!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800:Q/ !msMfSdLIAvklSSAnci:localhost:8800m.room.join_rulesBQ? !msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibility6Q' !msMfSdLIAvklSSAnci:localhost:8800m.room.create<Q3 !mogJVPxghalmKbblUq:localhost:8800m.room.power_levels^Q']!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800^Q']!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800:Q/ !mogJVPxghalmKbblUq:localhost:8800m.room.join_rulesBQ? !mogJVPxghalmKbblUq:localhost:8800m.room.history_visibility6Q' !mogJVPxghalmKbblUq:localhost:8800m.room.create?Q9 !mogJVPxghalmKbblUq:localhost:8800m.room.canonical_aliasEQ))!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800<Q3 !mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels^Q']!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800:Q/ !mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rulesBQ? !mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility6Q' !mfzIRinBAGGrZvQAuI:localhost:8800m.room.create<Q3 !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels^Q']!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800:Q/ !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rulesBQ? !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibility6Q' !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.createVQ3A!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_changeNQ31!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes<Q3 !mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels^Q']!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800:Q/ !mOrKBPhetifKHDmElM:localhost:8800m.room.join_rulesBQ? !mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility<Q3 !mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access6Q' !mOrKBPhetifKHDmElM:localhost:8800m.room.create<Q3 !mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels^Q']!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800 nZc  2 % ( J='O<VILnp-Q? e!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibility$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lwh,Q/ e!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rules$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIj+Q3 e!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I *Q']e!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcd)Q' e!FPcQcheNebvdFvmOnr:localhost:8800m.room.create$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0"(Q'1ee!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIv'Q'1e~!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIj&Q3 e|!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_access$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI%Q? ee{!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEp$Q? ez!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEh#Q/ ey!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rules$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoj"Q3 ex!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc !Q']ew!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNod Q' ev!vOfeZvbtpuHfoqShFl:localhost:8800m.room.create$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"Q'1eeu!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QvQ'1es!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QjQ3 eq!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_access$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoQ? eep!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekpQ? eo!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekhQ/ en!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rules$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAjQ3 em!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc Q']el!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEdQ' ek!EieRtaCFZJJCIOkRPp:localhost:8800m.room.create$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU"Q'1eej!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIvQ'1eh!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIjQ3 ef!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_access$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86TopQ? ee!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7whQ/ ed!NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rules$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0jQ3 ec!NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI Q']eb!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0dQ' ea!NQgavrmiCPUVaVjssy:localhost:8800m.room.create$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g"Q'1ee`!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM ^ h  i LJKt.&xe3Q ]$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcm.room.power_levels!vOfeZvbtpuHfoqShFl:localhost:8800mm @anon-20191002_181700-189:localhost:8800 we'Q ]$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNom.room.member!vOfeZvbtpuHfoqShFl:localhost:8800mmA@anon-20191002_181700-189:localhost:8800v e'Q  ]$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIm.room.create!vOfeZvbtpuHfoqShFl:localhost:8800mm@anon-20191002_181700-189:localhost:8800 ue'Q 1 $1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpsm.room.member!EieRtaCFZJJCIOkRPp:localhost:8800 mVm@15:localhost:8800!te)Q ] $FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70m.room.message!EieRtaCFZJJCIOkRPp:localhost:8800 mm@anon-20191002_181700-188:localhost:8800 se'Q ] $f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qm.room.member!EieRtaCFZJJCIOkRPp:localhost:8800 mmr@anon-20191002_181700-188:localhost:8800!re)Q ]$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMm.room.message!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800&qe3Q ]$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYom.room.guest_access!EieRtaCFZJJCIOkRPp:localhost:8800mkm @anon-20191002_181700-188:localhost:8800,pe?Q ]$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAm.room.history_visibility!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800,oe?Q ]$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekm.room.history_visibility!EieRtaCFZJJCIOkRPp:localhost:8800m&m@anon-20191002_181700-188:localhost:8800$ne/Q ]$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAm.room.join_rules!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800&me3Q ]$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccm.room.power_levels!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800 le'Q ]$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEm.room.member!EieRtaCFZJJCIOkRPp:localhost:8800m$m@anon-20191002_181700-188:localhost:8800k e'Q  ]$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUm.room.create!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800 je'Q 1 $wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukm.room.member!NQgavrmiCPUVaVjssy:localhost:8800 mmw@14:localhost:8800!ie)Q ] $qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkm.room.message!NQgavrmiCPUVaVjssy:localhost:8800 mWm\@anon-20191002_181700-187:localhost:8800 he'Q ]$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIm.room.member!NQgavrmiCPUVaVjssy:localhost:8800mmT@anon-20191002_181700-187:localhost:8800!ge)Q ]$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIm.room.message!NQgavrmiCPUVaVjssy:localhost:8800mm@anon-20191002_181700-187:localhost:8800&fe3Q ]$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tom.room.guest_access!NQgavrmiCPUVaVjssy:localhost:8800mm(@anon-20191002_181700-187:localhost:8800,ee?Q ]$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wm.room.history_visibility!NQgavrmiCPUVaVjssy:localhost:8800mw.mz@anon-20191002_181700-187:localhost:8800$de/Q ]$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0m.room.join_rules!NQgavrmiCPUVaVjssy:localhost:8800mqImtZ@anon-20191002_181700-187:localhost:8800&ce3Q ]$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIm.room.power_levels!NQgavrmiCPUVaVjssy:localhost:8800mgmj@anon-20191002_181700-187:localhost:8800 be'Q ]$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0m.room.member!NQgavrmiCPUVaVjssy:localhost:8800mcmc@anon-20191002_181700-187:localhost:8800a e'Q  ]$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gm.room.create!NQgavrmiCPUVaVjssy:localhost:8800m_jm_@anon-20191002_181700-187:localhost:8800  D r   ) W} 9)KPx05]ywueQ'1$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800joingteQ3 $zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_accessmseQ? $gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibilityereQ/ $SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rulesgqeQ3 $jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels peQ']$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800joinaoeQ' $ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.createwneQ'1$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800joingmeQ3 $e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_accessmleQ? $Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibilitywgeQ'1$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800joingfeQ3 $wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_accessmeeQ? $2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibilityedeQ/ $gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rulesgceQ3 $pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels beQ']$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800joinaaeQ' $bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800m.room.createw`eQ'1$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800joing_eQ3 $JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_accessm^eQ? $QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibilitye]eQ/ $9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rulesg\eQ3 $8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels [eQ']$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800joinaZeQ' $EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800m.room.createekeQ/ $MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rulesgjeQ3 $VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels ieQ']$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800joinaheQ' $FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800m.room.create 8y6|A 2 J R  = l (e(MbHt/k`$4p9 Q !fsbkkRBZlUcBVVfMME:localhost:8800publicshared9 Q !bzPCFeFSMbCESvNbxl:localhost:8800publicshared9 Q !PCgUmZOwWmtDsuFqXg:localhost:8800publicshared9 Q !nxLxsxzliamzflrEBs:localhost:8800publicshared9 Q !RPfffkmSEbWggEjnoI:localhost:8800publicshared9 Q !egbhiBqOGhloZzopol:localhost:8800publicshared9 Q !KdOYYnOuwAyQzqwUki:localhost:8800inviteshared9 Q !XNfwczePlyYFWLCaui:localhost:8800publicshared9 Q !PQZMTVTeCYqMZwkHvW:localhost:8800publicshared9 Q !kpTPWDZdBbbXKLonZK:localhost:8800publicshared9 Q !ITdmSQpjMnaPoHIbws:localhost:8800publicsharedT QC !FAYqpziHeVZugCGaij:localhost:8800#__ANON__-12:localhost:8800publicshared9 Q !ZaOktTIVeRgBXxfubH:localhost:8800publicsharedA Q !ZaltdIYVZjCHsCWTZD:localhost:8800publicsharedcan_joinA Q !kwXxkGQFkaeenFTQJr:localhost:8800publicjoinedcan_joinB Q !EMhFCPhwmnWVnjtXXM:localhost:8800publicinvitedcan_joinA Q !GGXyLHdVXqhQjPRvac:localhost:8800publicsharedcan_joinI Q) !IfYYyzLHSOeyJBxBfn:localhost:8800publicworld_readablecan_joinA Q !ZYKvjplZRyIWvzkRyM:localhost:8800publicsharedcan_joinI Q) !ROoilpDjLJfjKfSPIi:localhost:8800publicworld_readablecan_joinh Q[) !wsvXTJXouVkEZcCFsD:localhost:8800#test-20191002_181700-39:localhost:8800publicworld_readable` Q[ !DoiZErAdypBUMZKaeJ:localhost:8800#test-20191002_181700-38:localhost:8800publicsharedA Q) !qSUSLLWjDxcGibUZdT:localhost:8800publicworld_readableA Q) !RmwbYvIIQyPlHlClty:localhost:8800publicworld_readable` Q[ !SvKwEALYoNreUvqAlp:localhost:8800#test-20191002_181700-37:localhost:8800publicshared` Q[ !fOJLpnbtgKNxxVDquX:localhost:8800#test-20191002_181700-36:localhost:8800publicshared9 Q !vAUAIZrCnHTeMGeNuw:localhost:8800publicshared9 Q !EfJcWhdjNARbuHYrqU:localhost:8800publicjoined: Q !vRRNxNyGboLHNhqQvr:localhost:8800publicinvited9 Q !NFWKQvZkIwvecnREOC:localhost:8800publicsharedA Q !IPYMCBwcyNIzqdiIWv:localhost:8800publicsharedcan_joinA Q !HZqzpRgqekPOtxstVc:localhost:8800publicjoinedcan_joinB~ Q !FklhVuCInffbDxunWv:localhost:8800publicinvitedcan_joinA} Q !eJPTUgihvSwaOhIkrC:localhost:8800publicsharedcan_joinI| Q) !sfXbvAcOUJhzGwWEpZ:localhost:8800publicworld_readablecan_joinA{ Q !YufaOfAlruTdjyUCwO:localhost:8800publicsharedcan_joinAz Q !ifQxHmNAcSSGHVMjfi:localhost:8800publicjoinedcan_joinBy Q !EABRjdYuYumMhLSwIa:localhost:8800publicinvitedcan_joinAx Q !FIOuvzpMhoERunVYYA:localhost:8800publicsharedcan_joinIw Q) !zNBpypJDRMlBdOcLlW:localhost:8800publicworld_readablecan_joinAv Q !TcaopYfMoJFEcjYRzJ:localhost:8800publicsharedcan_joinIu Q) !BckZfhQgrcyiMhEAAJ:localhost:8800publicworld_readablecan_joinht Q[) !KXMUzALpMMMKqoQXUS:localhost:8800#test-20191002_181700-35:localhost:8800publicworld_readable`s Q[ !NfaPEGKjnUDUTavzol:localhost:8800#test-20191002_181700-34:localhost:8800publicsharedAr Q) !JGhlAUflyNxErGGZZu:localhost:8800publicworld_readableAq Q) !tkajvIKHoOMWGsReBs:localhost:8800publicworld_readablehp Q[) !fcdNYFWFyxmdpKAknc:localhost:8800#test-20191002_181700-33:localhost:8800publicworld_readableho Q[) !MWCLSWWGdWcSivNVLI:localhost:8800#test-20191002_181700-32:localhost:8800publicworld_readable9n Q !erBPdgtUsiOfIKUkho:localhost:8800publicshared9m Q !dWgOTucBVQBKZjfndN:localhost:8800publicjoined:l Q !hSzBsirdPWHtVjagXn:localhost:8800publicinvited9k Q !mfzIRinBAGGrZvQAuI:localhost:8800publicsharedAj Q !FPcQcheNebvdFvmOnr:localhost:8800publicsharedcan_joinAi Q !vOfeZvbtpuHfoqShFl:localhost:8800publicjoinedcan_joinBh Q !EieRtaCFZJJCIOkRPp:localhost:8800publicinvitedcan_joinAg Q !NQgavrmiCPUVaVjssy:localhost:8800publicsharedcan_join Jo3f% X .  e ) E  | @  a }Wx7n2d#V0c'ZL"9 ]@anon-20191002_181700-209:localhost:8800a&\9 ]@anon-20191002_181700-210:localhost:8800a&\' 1  @34:localhost:8800m&\%> ]  @anon-20191002_181700-208:localhost:8800m&\ 9 ]@anon-20191002_181700-208:localhost:8800a&\# 1@34:localhost:8800a&\' 1  @33:localhost:8800m&\&> ]  @anon-20191002_181700-207:localhost:8800m&\ [9 ]@anon-20191002_181700-207:localhost:8800a&\# 1@33:localhost:8800a&\' 1  @32:localhost:8800m&\&> ]  @anon-20191002_181700-206:localhost:8800m&\ \9 ]@anon-20191002_181700-206:localhost:8800a&\# 1@32:localhost:8800a&\' 1  @31:localhost:8800m&\%> ]  @anon-20191002_181700-205:localhost:8800m&\ 9 ]@anon-20191002_181700-205:localhost:8800a&\# 1@31:localhost:8800a&\' 1  @30:localhost:8800m&\&> ]  @anon-20191002_181700-204:localhost:8800m&\ c9 ]@anon-20191002_181700-204:localhost:8800a&\# 1@30:localhost:8800a&\> ]  @anon-20191002_181700-203:localhost:8800m&\>9 ]@anon-20191002_181700-203:localhost:8800a&\# 1@29:localhost:8800a&\( 1@28:localhost:8800m&\>~ ]  @anon-20191002_181700-202:localhost:8800m&\9} ]@anon-20191002_181700-202:localhost:8800a&\#| 1@28:localhost:8800a&\>{ ]  @anon-20191002_181700-201:localhost:8800m&\ 9z ]@anon-20191002_181700-201:localhost:8800a&\#y 1@27:localhost:8800a&\>x ]  @anon-20191002_181700-200:localhost:8800m&\j9w ]@anon-20191002_181700-200:localhost:8800a&\#v 1@26:localhost:8800a&\>u ]  @anon-20191002_181700-199:localhost:8800m&\9t ]@anon-20191002_181700-199:localhost:8800a&\#s 1@25:localhost:8800a&\>r ]  @anon-20191002_181700-198:localhost:8800m&\9q ]@anon-20191002_181700-198:localhost:8800a&\#p 1@24:localhost:8800a&\>o ]  @anon-20191002_181700-197:localhost:8800m&\ 9n ]@anon-20191002_181700-197:localhost:8800a&\#m 1@23:localhost:8800a&\>l ]  @anon-20191002_181700-195:localhost:8800m&\ 9k ]@anon-20191002_181700-196:localhost:8800a&\9j ]@anon-20191002_181700-195:localhost:8800a&\#i 1@22:localhost:8800a&\>h ]  @anon-20191002_181700-194:localhost:8800m&\19g ]@anon-20191002_181700-194:localhost:8800a&\#f 1@21:localhost:8800a&\>e ]  @anon-20191002_181700-193:localhost:8800m&\x9d ]@anon-20191002_181700-193:localhost:8800a&\#c 1@20:localhost:8800a&\>b ]  @anon-20191002_181700-192:localhost:8800m&\y9a ]@anon-20191002_181700-192:localhost:8800a&\#` 1@19:localhost:8800a&\>_ ]  @anon-20191002_181700-191:localhost:8800m&\19^ ]@anon-20191002_181700-191:localhost:8800a&\#] 1@18:localhost:8800a&\'\ 1  @17:localhost:8800m&\h>[ ] @anon-20191002_181700-190:localhost:8800m&\ 9Z ]@anon-20191002_181700-190:localhost:8800a&\#Y 1@17:localhost:8800a&\'X 1  @16:localhost:8800m&\h>W ] @anon-20191002_181700-189:localhost:8800m&\ Z9V ]@anon-20191002_181700-189:localhost:8800a&\#U 1@16:localhost:8800a&\'T 1  @15:localhost:8800m&\h>S ] @anon-20191002_181700-188:localhost:8800m&\ [9R ]@anon-20191002_181700-188:localhost:8800a&\#Q 1@15:localhost:8800a&\'P 1  @14:localhost:8800m&\h>O ] @anon-20191002_181700-187:localhost:8800m&\   deQ_$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 869}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0"], "type": "m.room.history_visibility", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041067310, "hashes": {"sha256": "zCVSLos5ty3/chyLwhR/6dEkaoW1MXfTTWEDv8RE2j8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R9kId2FYiq9zjKDfsDu/IHg+bxZvf+LRvizcG3ph+Utkuf3e3NlLYsMKIJUVt2wcvyP8T7te+Sdt+hvH7LcQDQ"}}, "unsigned": {"age_ts": 1570041067310}}sceQ_u$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 868}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI"], "type": "m.room.join_rules", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041065801, "hashes": {"sha256": "cbmlDOoWJYNfyc2hsEHPlYe12fCdCMPlmGE/OoTjEhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZCjBRZjZAPF4rsCfaOvkVuAuPTSkQv05ZlmgpnVChAjnUsQL8tOL+roWtuvzjsWe5Jx57hpbhMmhSa83YoHSCw"}}, "unsigned": {"age_ts": 1570041065801}}jbeQ_c$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 867}{"auth_events": ["$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "type": "m.room.power_levels", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"users": {"@anon-20191002_181700-187:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041063168, "hashes": {"sha256": "FBSbX8rfdSTulZIXe/bQU6o2a4tJQb12OYLuTHKxhQo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cEqxH4uDFoueQmYZ+t0zE2tLdsX/3CIM0h4tK0Mg00XDWxsaM2NuSI4bUL7hJHQLxx5EyBszOCklwxikBXltBQ"}}, "unsigned": {"age_ts": 1570041063168}}uaeQ_y$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 866}{"auth_events": ["$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g"], "prev_events": ["$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g"], "type": "m.room.member", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-187", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-187:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041062158, "hashes": {"sha256": "l3ivMME6PlDDOC+N2i59j5BIUBvKP7sVSY0hZgq68nA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NfJQmYfWJmmCCHRISjMRNxHsmd70iIhcluoqp2xY2//5XH4pnNhPJ6MBqLrtAXsTRmW/JRlp1hjgvdwQqkprDw"}}, "unsigned": {"age_ts": 1570041062158}} Nj8p? x F  ~ L  R X & ^ ,d2j8p> vD|JPV$]+11e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwb1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58(1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s U0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kkb1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM81e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ051e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM11e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMR1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs{1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccm1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikC1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8P1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws'1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 =1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncZ1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wW1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU 1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU 1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY*1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AF1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0D1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls}1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U\1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs 1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gv1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUG1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM:1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw F1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 71e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQk1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMU1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw ,0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw?1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 d1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkB1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE)1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk "1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly081e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc  hgeQ__$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 872}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI"], "type": "m.room.member", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"membership": "invite", "displayname": "14", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@14:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041071337, "hashes": {"sha256": "6UzxzPxrarmeH03Xu8UeUt7Mp8Yy0YNcW4Mc9TAq4dY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HCv7KxO3+g2VIntxLrIm90aswZksnBRV8iyzT5a8J0SdE1TbfDIS/Bhm6NEnN8OxMU0gAdVkQbrhKBAoKKFFAw"}}, "unsigned": {"age_ts": 1570041071337, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-187:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-187:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-187", "avatar_url": null}, "sender": "@anon-20191002_181700-187:localhost:8800"}]}}feQw$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "txn_id": "67", "stream_ordering": 871}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To"], "type": "m.room.message", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041070293, "hashes": {"sha256": "PMp0KYW9wIehdhNwomgSvoaZST1Gjz0JQrczuxuUgfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v8aT/v+PTsQbDO4sHlWVR8BtA/TkLFd7ZSqJr0OwrK+LHOKANcyINz7Olu4+//wO9jp9saKyNSFPXuLZGsMuAg"}}, "unsigned": {"age_ts": 1570041070293}}zeeQ_$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 870}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w"], "type": "m.room.guest_access", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041069504, "hashes": {"sha256": "LXN+mqXt1nfxJH3gumqIyNQyXu37Mt/Vqduxjpk0oho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "grrA83D0QyJBNsd4pnXG7fy22Xm8asXIMewZcVKC6Y9MFPC1mBp+8ZLNdaDeXUvQT78wYAwEsYqFy6Lb0+8ZDw"}}, "unsigned": {"age_ts": 1570041069504}} *w1Y A ]  y - U w +Sn-Rw*aP{.{{EU ]V@anon-20191002_181700-148:localhost:8829offlinem>m?S ]U@anon-20191002_181700-147:localhost:8829offlinem?R ]U@anon-20191002_181700-139:localhost:8829offlinemEO ]P@anon-20191002_181700-128:localhost:8800offlinemmKN ] P@anon-20191002_181700-127:localhost:8800offlinemmwmEJ ]K@anon-20191002_181700-126:localhost:8800offlinemmEI ]J@anon-20191002_181700-123:localhost:8800offlinemmKH ] I@anon-20191002_181700-115:localhost:8800offlinem*mfm˙KG ] H@anon-20191002_181700-114:localhost:8800offlinemmRmEF ]G@anon-20191002_181700-119:localhost:8800offlinem)m)EE ]F@anon-20191002_181700-117:localhost:8800offlinemm?B ]C@anon-20191002_181700-111:localhost:8829offlinemIKA ] B@anon-20191002_181700-100:localhost:8800offlinem$m|m&J? [ @@anon-20191002_181700-96:localhost:8800offlinemmmyJ= [ >@anon-20191002_181700-90:localhost:8800offlinemmmD9 [:@anon-20191002_181700-75:localhost:8800offlinemmZJ8 [ 9@anon-20191002_181700-74:localhost:8800offlinemFm$mGD7 [8@anon-20191002_181700-72:localhost:8829offlinemmJ6 [ 7@anon-20191002_181700-70:localhost:8800offlinemmmJ5 [ 7@anon-20191002_181700-71:localhost:8800offlinemmmD4 [ 5@anon-20191002_181700-61:localhost:8800offlinem^mZJ3 [ 5@anon-20191002_181700-67:localhost:8800offlinemimZmJD2 [ 5@anon-20191002_181700-60:localhost:8800offlinem\mZD0 [1@anon-20191002_181700-66:localhost:8829offlinemmZJ. [ /@anon-20191002_181700-65:localhost:8800offlinemm3m\J, [ -@anon-20191002_181700-64:localhost:8800offlinemCm \mJ# [ $@anon-20191002_181700-59:localhost:8800offlinemZm<mZJ" [ #@anon-20191002_181700-52:localhost:8800offlinemBmmCJ! [ #@anon-20191002_181700-53:localhost:8800offlinemFmmG J [ #@anon-20191002_181700-48:localhost:8800offlinem7mm8/J [ @anon-20191002_181700-35:localhost:8800offlinemOm] mJ [ @anon-20191002_181700-34:localhost:8800offlinemɧmImͩD [@anon-20191002_181700-39:localhost:8800offlinem!m!D [@anon-20191002_181700-38:localhost:8800offlinemmD [@anon-20191002_181700-36:localhost:8800offlinemmD [ @anon-20191002_181700-33:localhost:8800offlinem m D [ @anon-20191002_181700-32:localhost:8800offlinemGmGJ [ @anon-20191002_181700-16:localhost:8800offlinemmmD [ @anon-20191002_181700-31:localhost:8800offlinem>m>D [ @anon-20191002_181700-15:localhost:8800offlinemm4J [ @anon-20191002_181700-11:localhost:8800offlinemm|m9; = @spyglass:localhost:8800offlinempmmqS ,5k*lX G | 3 x / B w (}4iGl#Ha;F> ]@anon-20191002_181700-222:localhost:8800offlinemmL= ] @anon-20191002_181700-214:localhost:8800offlinem+,mdm+5Kh ] j@anon-20191002_181700-179:localhost:8800offlinemNm4mEd ]h@anon-20191002_181700-181:localhost:8800offlinemݠmԵ?] ]^@anon-20191002_181700-166:localhost:8829offlinem.K\ ] ]@anon-20191002_181700-165:localhost:8800offlinemmmKZ ] [@anon-20191002_181700-161:localhost:8800offlinemmm].W /X@3:localhost:8800offlinemmKV ] W@anon-20191002_181700-146:localhost:8800offlinem qmmL< ] @anon-20191002_181700-212:localhost:8800offlinem mm F: ]@anon-20191002_181700-220:localhost:8800offlinem~m~L6 ] @anon-20191002_181700-210:localhost:8800offlinemhmSDm 61 1 @34:localhost:8800offlinemCm$m;F- ]@anon-20191002_181700-206:localhost:8800offlinemmݤF, ]@anon-20191002_181700-208:localhost:8800offlinempmiF+ ]@anon-20191002_181700-207:localhost:8800offlinem9m%D6( 1 @33:localhost:8800offlinem;tmm=6% 1 @32:localhost:8800offlinem|m|lm6" 1 @31:localhost:8800offlinemm.LmbL ] @anon-20191002_181700-201:localhost:8800offlinem8mm6 1 @30:localhost:8800offlinemwTmmzYF ]@anon-20191002_181700-204:localhost:8800offlinemvmkF ]@anon-20191002_181700-205:localhost:8800offlinemmL ] @anon-20191002_181700-197:localhost:8800offlinemkm~mL ] @anon-20191002_181700-195:localhost:8800offlinem-mWtmi(L ] @anon-20191002_181700-196:localhost:8800offlinemmWtmizF ]@anon-20191002_181700-200:localhost:8800offlinemm6 1 @17:localhost:8800offlinemmmF ]@anon-20191002_181700-194:localhost:8800offlinemcmc6 1 @16:localhost:8800offlinemmYmF ]@anon-20191002_181700-193:localhost:8800offlinemMwmMw6 1 @15:localhost:8800offlinemBm2|mKF ]@anon-20191002_181700-192:localhost:8800offlinem0-m0-F ]@anon-20191002_181700-191:localhost:8800offlinemmF ]@anon-20191002_181700-188:localhost:8800offlinemHmF ]@anon-20191002_181700-187:localhost:8800offlinemmS6~ 1 @14:localhost:8800offlinemm lmF| ]@anon-20191002_181700-186:localhost:8800offlinemSmNFz ]@anon-20191002_181700-190:localhost:8800offlinemBmFy ]@anon-20191002_181700-189:localhost:8800offlinemmM5r 1 s@13:localhost:8800offlinemYmmYKm ] n@anon-20191002_181700-182:localhost:8800offlinemmo,mEj ]k@anon-20191002_181700-180:localhost:8829offlinemHm4Ki ] j@anon-20191002_181700-178:localhost:8800offlinemm4m 7X  1 Z  -)~"7>]1eQe`@anon-20191002_181700-186:localhost:8800@13:localhost:8800$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc]1eQ@anon-20191002_181700-172:localhost:8829@12:localhost:8800$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk!VCSCNemqikJZiRtxrs:localhost:8829]1eQ@anon-20191002_181700-171:localhost:8829@11:localhost:8800$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts!StEnDjTJToXKXsOHNf:localhost:8829T]]eQe@anon-20191002_181700-152:localhost:8800@anon-20191002_181700-153:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIT]]eQe@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-151:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0T]]eQe@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-150:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokT]]eQez@anon-20191002_181700-143:localhost:8800@anon-20191002_181700-144:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM(]]eQq@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-142:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800T ]]eQeo@anon-20191002_181700-140:localhost:8800@anon-20191002_181700-141:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU!BkzROHxDAfKIzYpmPV:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQT ]]eQe\@anon-20191002_181700-136:localhost:8800@anon-20191002_181700-137:localhost:8800$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ!XIqmzIFbkHGQPIpywk:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs( ]]eQR@anon-20191002_181700-134:localhost:8800@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800( ]]eQL@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800T ]]eQeK@anon-20191002_181700-131:localhost:8800@anon-20191002_181700-132:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA(]]eQB@anon-20191002_181700-129:localhost:8800@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800(]]eQl@anon-20191002_181700-102:localhost:8800@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800T]]eQed@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-100:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIR[[eQeR@anon-20191002_181700-97:localhost:8800@anon-20191002_181700-96:localhost:8800$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQR[[eQe5@anon-20191002_181700-91:localhost:8800@anon-20191002_181700-90:localhost:8800$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0R[[eQe'@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-87:localhost:8800$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY%[[eQX@anon-20191002_181700-23:localhost:8800@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800%[[eQ@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800 ?~ Q z sCl<T(]]eQeV@anon-20191002_181700-350:localhost:8800@anon-20191002_181700-351:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0T']]eQe>@anon-20191002_181700-346:localhost:8800@anon-20191002_181700-347:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40T&]]eQe$@anon-20191002_181700-344:localhost:8829@anon-20191002_181700-343:localhost:8800$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsT%]]eQe@anon-20191002_181700-340:localhost:8829@anon-20191002_181700-339:localhost:8800$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4T$]]eQek@anon-20191002_181700-286:localhost:8800@anon-20191002_181700-287:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoT!]]eQe6@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-273:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM(#]]eQ5@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-275:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800T"]]eQe7@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-274:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg( ]]eQ-@anon-20191002_181700-271:localhost:8800@anon-20191002_181700-270:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800T]]eQe@anon-20191002_181700-265:localhost:8800@anon-20191002_181700-266:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kT]]eQeM@anon-20191002_181700-217:localhost:8800@anon-20191002_181700-218:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0T]]eQeC@anon-20191002_181700-215:localhost:8800@anon-20191002_181700-216:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikT]]eQe8@anon-20191002_181700-213:localhost:8800@anon-20191002_181700-214:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekT]]eQe-@anon-20191002_181700-211:localhost:8800@anon-20191002_181700-212:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ(]]eQ"@anon-20191002_181700-209:localhost:8800@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800>]1eQe@anon-20191002_181700-190:localhost:8800@17:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk>]1eQe@anon-20191002_181700-189:localhost:8800@16:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU>]1eQeu@anon-20191002_181700-188:localhost:8800@15:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps>]1eQej@anon-20191002_181700-187:localhost:8800@14:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk 8 w8ukeQ_y$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 876}{"auth_events": ["$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU"], "prev_events": ["$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU"], "type": "m.room.member", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-188", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-188:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041075236, "hashes": {"sha256": "GYSGUlivdd3j3sLlYoq51iOpPJ7DTE4lnvq7HWcD14w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "puhWf7nSdV3rpUJXvSTUakJT/Ad5QLENDYhyne4X21S6sMZ2M4fbx3UGBma9gC6kt5ubTIwWRUnvOwRiINUtBg"}}, "unsigned": {"age_ts": 1570041075236}}hjeQ__$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 875}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-188:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041074577, "hashes": {"sha256": "sHp641aGcHZs+nhLpevCk/QIHHKrA1xxdJKnuX4fVBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NH1fNqimRAgyfkBaythStB2F9Xbbo5FQD76ZHjC7xAfMsa7yT4YmtRUTpCHhba9U9FJW9f8DzzPSA0ZzVTxmBg"}}, "unsigned": {"age_ts": 1570041074577}}VieQ=]$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800{"stream_ordering": 874}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0"], "prev_events": ["$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk"], "type": "m.room.member", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@14:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "14", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@14:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041072389, "hashes": {"sha256": "kmYqHbxOejqZuEHwmZ4g7fSO1Y7uj0SnkvClc/cqeug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/jsxpQzO8S17/CFhOjdKE7vk6ejK1mIuwoUDkEvF2EHhsZHDvgyLphX6vTQN2kTL6PPBX/5Ie7XWxtyuysGWAw"}}, "unsigned": {"age_ts": 1570041072389, "replaces_state": "$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI"}}heQy$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "txn_id": "68", "stream_ordering": 873}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI"], "type": "m.room.message", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041071959, "hashes": {"sha256": "pWxQ1Aw+jDvTZkSMcZDPnGszwF+hI3MEpT+HjC0sWIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/gV7jrbhcqEnYwe/lvOieJmDwfcSK4ywzADt1OX+HiXYscNLO7FjkHgr3eqOBXmgW3cd7kY2M/qlrmXpfx+JAA"}}, "unsigned": {"age_ts": 1570041071959}} P!uJ+ y Nw L % } R ' { ##yNT)}R'{P%T)X-V}R' { P %  T ) P *Q!kOmCTyiizHqfCJdhlR:localhost:8800 T T*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kOmCTyiizHqfCJdhlR:localhost:8800 \ \*Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y Y*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kOmCTyiizHqfCJdhlR:localhost:8800 U U*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800 P*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kOmCTyiizHqfCJdhlR:localhost:8800 X X*Q!kOmCTyiizHqfCJdhlR:localhost:8800 W W*Q!kOmCTyiizHqfCJdhlR:localhost:8800 V V*Q!kOmCTyiizHqfCJdhlR:localhost:8800 [ [*Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z Z*Q!kOmCTyiizHqfCJdhlR:localhost:8800 ] ] +*Q!kjjUsMowsioSQRIJeg:localhost:8800 Q Q*Q!kjjUsMowsioSQRIJeg:localhost:8800 P P*Q!kjjUsMowsioSQRIJeg:localhost:8800 O O*Q!kjjUsMowsioSQRIJeg:localhost:8800 N N*Q!kjjUsMowsioSQRIJeg:localhost:8800 M M*Q!kjjUsMowsioSQRIJeg:localhost:8800 L L*Q!kjjUsMowsioSQRIJeg:localhost:8800 K K*Q!kjjUsMowsioSQRIJeg:localhost:8800 J J*Q!kjjUsMowsioSQRIJeg:localhost:8800 I I}*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800 #s 1 W k  z  8 ^r?_&R[m<eQ? $sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibilitye;eQ/ $sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rulesg:eQ3 $kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels 9eQ']$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800a8eQ' $0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800m.room.createm7eQ? $FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibilitye6eQ/ $n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rulesg5eQ3 $O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels 4eQ']$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800a3eQ' $aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800m.room.creates2eQ'1$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800s1eQ'1$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800g0eQ3 $sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_accessm/eQ? $CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibilitye.eQ/ $fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rulesg-eQ3 $xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels ,eQ']$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800a+eQ' $tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800m.room.creates*eQ'1$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800s)eQ'1$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800g(eQ3 $zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_accessm'eQ? $gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibilitym&eQ? $WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibilitye%eQ/ $SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rulesg$eQ3 $jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels #eQ']$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800a"eQ' $ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.creates!eQ'1$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800s eQ'1$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800geQ3 $e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_accessmeQ? $Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibilitymeQ? $b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibilityeeQ/ $MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rulesgeQ3 $VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels eQ']$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800 :0 s 0 Y # l 1 L  UHk Uh+t9{>0j*gj'^Q']!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800 3:Q/ !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules B6Q' !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create -?Q9 !NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_alias.EQ))!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:88001<Q3 !NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels^Q']!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800:Q/ !NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rulesBQ? !NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibility6Q' !NeYaCeYNFATCqlrlGT:localhost:8800m.room.create<Q3 !NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels^Q']!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800^Q']!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800:Q/ !NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rulesBQ? !NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibility6Q' !NboFFVLpJHTeuUKCjM:localhost:8800m.room.create<Q3 !NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.state<Q3 !NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels ^Q']!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800 RQ'E!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455 :Q/ !NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules BQ? !NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibility 6Q' !NanhNmCnVVpmZRJrTF:localhost:8800m.room.create <Q3 !NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels^Q']!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829^Q']!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800:Q/ !NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rulesBQ? !NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibility6Q' !NajQnqYmGyTjxhFYar:localhost:8829m.room.create<Q3 !NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.state;Q3 !NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels@\Q'[!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800?9Q/ !NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rulesAAQ? !NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibilityB5Q' !NZHpBquHDfJAjiawGk:localhost:8800m.room.create>DQ))!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800C<Q3 !NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels^Q']!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800HQ'1!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800:Q/ !NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rulesBQ? !NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility<Q3 !NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_access6Q' !NQgavrmiCPUVaVjssy:localhost:8800m.room.create5Q% !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topicn<Q3 !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levelsf^Q']!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800e:Q/ !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rulesjBQ? !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibilityl6Q' !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.createc?Q9 !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_aliashEQ))!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800p9Q- !NNiyzThHMivrxhojfp:localhost:8800m.room.tombstone<Q3 !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_access 2<Q3 !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels /BQ? !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility IBQ? !NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility06Q' !NfaPEGKjnUDUTavzol:localhost:8800m.room.create+^Q']!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800 .  GoeQ_$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 880}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek"], "type": "m.room.history_visibility", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041078263, "hashes": {"sha256": "cJpXDv0ehPFXt94km7ADzj7FR9RuCnZo1b/ZCvsX2KA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8qc/xDSvA2EJjtmhqGnPm8yAFLhiFHUek1gFaR9D3fncQhRSzE5KPfOYZuagZaJ5Gp+9TcbG+c/sg4Tu+qr4CQ"}}, "unsigned": {"age_ts": 1570041078263, "replaces_state": "$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek"}}neQ_$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 879}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA"], "type": "m.room.history_visibility", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041077286, "hashes": {"sha256": "aBBGljpgNgAh92wEeM1rAtbxjw4HC7vxmbU5mb/FD38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S4yzTWEjayiDxkd5XBIrAOOHqNyq/fAH6PaQWyG1ubMpeHBrZRtn69rSvPs/vr/Yz4qnx9oFKsmkYX+ck0gSDQ"}}, "unsigned": {"age_ts": 1570041077286}}smeQ_u$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 878}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc"], "type": "m.room.join_rules", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041076677, "hashes": {"sha256": "F7iIH68YcKFi3lZrG4qMZVZnIMbKqqXqwjlD/vkWWDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oKdH3vOTs9NSQTChz+Io5jdUTveWZ4YITx1k2pPlZ+/Bh/g6LkeDQUk8XygIi/U7A94HtM5/oifbzL2TuoOJBA"}}, "unsigned": {"age_ts": 1570041076677}}jleQ_c$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 877}{"auth_events": ["$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "type": "m.room.power_levels", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"users": {"@anon-20191002_181700-188:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041075972, "hashes": {"sha256": "+3Tx1jyvLIu+1+zTJeRuoDUmOybLKHSmbFo6AAXv6MA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZxkA9+UFV8Hn3dGfGSDTnqUN/lTvVAMfAMdSHVCg0euicewkYns7H28yxXQTh/OR3VmPQ6LN6edyeOQvZJijAA"}}, "unsigned": {"age_ts": 1570041075972}} a} { y w u sqomkigeca~'eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~&eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~%eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~$eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~#eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~"eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~!eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~ eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800 #X8 Z _  - OTx 'Qmx 0XcjQ' eh!dWgOTucBVQBKZjfndN:localhost:8800m.room.create$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkoiQ? eg!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwohQ? ef!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosggQ/ ee!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rules$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UifQ3 ed!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ eQ']ec!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMcdQ' eb!hSzBsirdPWHtVjagXn:localhost:8800m.room.create$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIocQ? ea!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility$r_hXaVKZmV0IIXEBxUBb7sDraQn2hcW9UKClFAINECAobQ? e`!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUgaQ/ e_!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rules$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtki`Q3 e^!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0 _Q']e]!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwc^Q' e\!mfzIRinBAGGrZvQAuI:localhost:8800m.room.create$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQu]Q'1e[!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuku\Q'1eZ!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwi[Q3 eY!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_access$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0oZQ? eX!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibility$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32LwgYQ/ eW!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rules$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIiXQ3 eV!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I WQ']eU!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrccVQ' eT!FPcQcheNebvdFvmOnr:localhost:8800m.room.create$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0uUQ'1eS!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUuTQ'1eR!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIiSQ3 eQ!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_access$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIoRQ? eP!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsoQQ? eO!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEgPQ/ eN!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rules$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoiOQ3 eM!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc NQ']eL!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNocMQ' eK!vOfeZvbtpuHfoqShFl:localhost:8800m.room.create$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIuLQ'1eJ!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsuKQ'1eI!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QiJQ3 eH!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_access$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYooIQ? eG!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAoHQ? eF!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek  hreQ__$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 883}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM"], "type": "m.room.member", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"membership": "invite", "displayname": "15", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@15:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041081089, "hashes": {"sha256": "pL8a7jKWj/ZcofdQ/KZKXSGU2n4ULHQtQIfEnqTNaXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ep/9W3aZ/dAqTM5/TMrF7HfA8c78SziiB/DEFT3Nz5jKfh0HRuTy+HQ3K4VfGsW7Bp6YgarTybSxEfJSeDPgDw"}}, "unsigned": {"age_ts": 1570041081089, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-188:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-188:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-188", "avatar_url": null}, "sender": "@anon-20191002_181700-188:localhost:8800"}]}}qeQw$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "txn_id": "69", "stream_ordering": 882}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo"], "type": "m.room.message", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041080089, "hashes": {"sha256": "8QqTLD336ioBpPnS4WXGsiGYpLsKAejuuL3CT+jz1uo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9F/nFqid3jIHoNSnDNxLr64mqw/y6qM3XagKSQf28Id7IXaQkLxcCFk+hmH6oFupKD7yh5t2tNAloRJFKdfHAg"}}, "unsigned": {"age_ts": 1570041080089}}zpeQ_$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 881}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA"], "type": "m.room.guest_access", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041079147, "hashes": {"sha256": "1t7ultHCKI++2AaXkpEUVIjx9H90cr4BG6i0Q9g840Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hxRz2mwAfRHrzJAVc8TXPt/Ffv74i5AgTfUsPJgLwpTkJ+jQTT0mcPa6Lb4F9n9razYvhVP88jB86xII5NDYDQ"}}, "unsigned": {"age_ts": 1570041079147}} 7 v7uveQ_y$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 887}{"auth_events": ["$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"], "prev_events": ["$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"], "type": "m.room.member", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-189", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-189:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041085622, "hashes": {"sha256": "SOQ4aLOab1jGobvmozL+bew5On+aIBOUfkuunj4gM2Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uDtdTrMo5IKFHEi3p5icOD2lZTFGc1r0Rwcv0XrLAKcbUpRhC/g+U04kqyyizKKoEzAuR2SMCJuRRNg6LYhHCQ"}}, "unsigned": {"age_ts": 1570041085622}}hueQ__$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 886}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-189:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041084819, "hashes": {"sha256": "JmnF3i6gFNSFTb7I2RwwgMP2eNU3ZBAqiyjAExmO47c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RbLUXqiHUg55i/L3i0ze1ELm8qhximMaEYYATwY2A6Sim6f4qVNLetocgdoflaRsfikolAxsCbCNP2kLXMw+Cw"}}, "unsigned": {"age_ts": 1570041084819}}VteQ=]$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800{"stream_ordering": 885}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA"], "prev_events": ["$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70"], "type": "m.room.member", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@15:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "15", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@15:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041082454, "hashes": {"sha256": "9WwIFAq98cs3oMv7iJzgJLAB2xRlyC4hx4ZmcHMmsJw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "likrBtdn4qgizcdZOQBrduX5jscZf4xFWNVoNOjvA+lk70aL4Ni1ba8zS4pdJQWPzIXS15Q5PcvHd1m/A04kAw"}}, "unsigned": {"age_ts": 1570041082454, "replaces_state": "$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q"}}seQ{$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "txn_id": "70", "stream_ordering": 884}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q"], "type": "m.room.message", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041081769, "hashes": {"sha256": "fEHKktszfkkKVUi4Td6/vi4iPmVQ0BXvTXI129m8nuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gz1NKm6umdePVrLKp7rmGhM6DsLINqHmkPyr/kwnAUDNPJixu3njzJvda5ekuakXBpdnYzD9K1ZdJSvDvjFeBQ"}}, "unsigned": {"age_ts": 1570041081769}} N | J  * vV$p> wE d2 8 Q   W %  ^j > ,\|J P D pj81e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0B1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoc1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcH1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEp1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM(1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY@1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts 1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMK1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw-1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8Q1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU~1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0.1e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIT1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAG1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA l1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU 51e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y?1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgY1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI j1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI b1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IK1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAb0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8Z1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oO1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk *1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsb1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA|1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8d1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg u1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A F1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM 11e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w >?Uq8 V  r 9 W  s :  V t;Wx?["w>\#x?]$8]!@ano8]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJv8]!@anon-20191002_181700-317:localhost:8800KSXFFXWMCBu8]!@anon-20191002_181700-316:localhost:8800JHIWJLKOFGt8]!@anon-20191002_181700-315:localhost:8800KXXAQONTRLs8]!@anon-20191002_181700-314:localhost:8800BTSWZNQVTPr8]!@anon-20191002_181700-312:localhost:8800LFIOTRIQVMq8]!@anon-20191002_181700-311:localhost:8800BNVFQNMSXMp8]!@anon-20191002_181700-310:localhost:8800UKYXDPZQOOo6[!@anon-20191002_181700-30:localhost:8800STWEJRRVAK<8]!@anon-20191002_181700-309:localhost:8800OEPQWZYGARn8]!@anon-20191002_181700-308:localhost:8800VRKBCOUWEFm8]!@anon-20191002_181700-307:localhost:8800BEZNVUIADUl8]!@anon-20191002_181700-306:localhost:8800XZDIPYWWODk8]!@anon-20191002_181700-305:localhost:8800PDQTBQSPGXj8]!@anon-20191002_181700-304:localhost:8800MQWNAFYDXKi8]!@anon-20191002_181700-303:localhost:8800FUOYNGGDMQh8]!@anon-20191002_181700-302:localhost:8800PAWIWMHYHHg8]!@anon-20191002_181700-301:localhost:8800SJPGITTBTXf8]!@anon-20191002_181700-300:localhost:8800ZZJIQPLATKe5Y!@anon-20191002_181700-2:localhost:8800RDNVTAXLBR6[!@anon-20191002_181700-29:localhost:8800WSREAIROYN;8]!@anon-20191002_181700-299:localhost:8800BPDORAMNSEd8]!@anon-20191002_181700-298:localhost:8800GTROHDSCGVc8]!@anon-20191002_181700-297:localhost:8800DVSKNCGFXXb8]!@anon-20191002_181700-296:localhost:8800SBLEQBXZQLa8]!@anon-20191002_181700-295:localhost:8800CIYGWJHPPN`8]!@anon-20191002_181700-294:localhost:8800RKGLRVXFMG_8]!@anon-20191002_181700-293:localhost:8800PVLMJRXINQ^8]!@anon-20191002_181700-292:localhost:8800GGCVZACJDJ]8]!@anon-20191002_181700-291:localhost:8800OPDSPHGDRK\8]!@anon-20191002_181700-290:localhost:8800HIUKIRMYDG[6[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZU:8]!@anon-20191002_181700-289:localhost:8800WRUIAYGXANZ8]!@anon-20191002_181700-288:localhost:8800BKSOCJCTFTY8]!@anon-20191002_181700-287:localhost:8800UVZQFXTZFVX8]!@anon-20191002_181700-286:localhost:8800SFUJRXTQDYW8]!@anon-20191002_181700-285:localhost:8800RKYDKAHKAAV8]!@anon-20191002_181700-284:localhost:8800IDXGKZHMAKU8]!@anon-20191002_181700-283:localhost:8800GHCLSNIYIAT8]!@anon-20191002_181700-282:localhost:8800MZNVLNKEUXS8]!@anon-20191002_181700-281:localhost:8800HVGEGIPOZPR8]!@anon-20191002_181700-280:localhost:8800PLHJASTUFRQ6[!@anon-20191002_181700-27:localhost:8800TWNKNEABLT98]!@anon-20191002_181700-279:localhost:8800DVKCMEFQMCP8]!@anon-20191002_181700-278:localhost:8800OHJBILRNUPO8]!@anon-20191002_181700-277:localhost:8800YSVOUTLGFPN8]!@anon-20191002_181700-276:localhost:8800PBSDTTCZKKM8]!@anon-20191002_181700-275:localhost:8800BROWKVODJUL8]!@anon-20191002_181700-274:localhost:8800RXKZBCJOXKK8]!@anon-20191002_181700-273:localhost:8800SZMGOEVXQWI8]!@anon-20191002_181700-272:localhost:8800NRGYAKPXELJ8]!@anon-20191002_181700-271:localhost:8800EYEJMZUSJYG8]!@anon-20191002_181700-270:localhost:8800SRSYWQDCQUH6[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFL88]!@anon-20191002_181700-269:localhost:8800EDTNFCDRMRE8]!@anon-20191002_181700-268:localhost:8800BTQHLEFFPUD8]!@anon-20191002_181700-267:localhost:8800LUADSGSJTGF8]!@anon-20191002_181700-266:localhost:8800MREALOZRTWB8]!@anon-20191002_181700-265:localhost:8800COAARRCECCA8]!@anon-20191002_181700-264:localhost:8800DYYKUWOSTJ@8]!@anon-20191002_181700-263:localhost:8800KUHOBSXQVM?8]!@anon-20191002_181700-262:localhost:8800OLJVXJZUXG> ,NC 8 - { " p  e ZOD9.|#qf V eL$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggsha256D.JnzR~)ỵe@H\hVeL$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEsha2567Jz2sm`ўLPe㨗VeL$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4sha256y@;1 ;h12lCuɘڄ -faVeL$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcsha256R̀ UXį&c{!?o|d=gVeL$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4sha256"o!=Pؼzm|Z5VeL$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIsha256ndLQvbاi"^NrVeL$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjssha256"z$PٷN 3p;VeL$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPksha256RO牞3h]2`IlHi`VeL$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQsha256&QSc~V4K5Bcw.qTVeL$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWksha256|@(NpVeL$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwsha256iPR q\t"$g,VeL$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsossha256IE>יeuMSKK5ϲVeL$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Usha256fFS7`ъ):EJ)$WUVeL$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQsha2563$p.P0UDѯsu4VeL$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMsha256X! 8ɢDw9/VxeU\Je7ȚVeL$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0sha256&C$g9.a&Yܡ&e]h7?IVeL$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUsha256aGqLi(SsקqےV~eL$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmosha256B'R|]wx'BjV}eL$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIsha256H5ܬY q=ƘPWĤaoV|eL$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcsha256Й"" r#1c=VԺwV{eL$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIsha256D SŁk&\r{ϝVzeL$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxssha256Q wRY5K8beiGi6 VyeL$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEsha256Y>(Yr%2±}Rb{:aVxeL$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQosha256I١>!E `r_ ^.y) VweL$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcsha256>dEA܍+J?nVveL$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNosha256 SX}@\ObMOw\^MbdVueL$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIsha256kG}OMv!n$7R{J  4 h 6md]c@anon-20191002_181700-220:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgo127.0.0.1܂d]c@anon-20191002_181700-211:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlOUGI3cm0zS0NuM28wRy4KMDAyZnNpZ25hdHVyZSD4OpM6ZfPo7DlTj2wvV2Lfc6R4avGRyYucfSs91WVPAwo127.0.0.1ӂa[a@anon-20191002_181700-21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCg127.0.0.1d]c@anon-20191002_181700-219:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwo127.0.0.1ۂd]c@anon-20191002_181700-218:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQo127.0.0.1ڂd]c@anon-20191002_181700-217:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAo127.0.0.1قd]c@anon-20191002_181700-216:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0wo127.0.0.1؂d]c@anon-20191002_181700-215:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgo127.0.0.1ׂd]c@anon-20191002_181700-214:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3Ao127.0.0.1ւd]c@anon-20191002_181700-213:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBqSkBkdkBPR3EzaUx4eDUKMDAyZnNpZ25hdHVyZSBVuF6NBtiMz2bEdBixHOtv14eE0aYcLIdRBBgkOtjMIQo127.0.0.1Ղd]c@anon-20191002_181700-212:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHUjUyZPTkhCdTZQJlozd3AKMDAyZnNpZ25hdHVyZSDa3KCf8uR1pbc8KNvlnD4kU4zB76gI3XvbVm_g7R-GrAo127.0.0.1 he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph          ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMM          KKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!  LLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!   _r[k,nW}T+ z W :  u Z 7  O 2  n /  [ > # jO, {XAa>'mG$ pYF) M G"? m.room.history_visibility/ m.room.join_rules"? 4m.room.history_visibility6/ 3m.room.join_rules53 2m.room.power_levels4>']1m.room.member@anon-20191002_181700-186:localhost:88003' 0m.room.create2>']/m.room.member@anon-20191002_181700-185:localhost:88001"? .m.room.history_visibility0/ -m.room.join_rules/3 ,m.room.power_levels.>']+m.room.member@anon-20191002_181700-185:localhost:8800-' *m.room.create,>'])m.room.member@anon-20191002_181700-184:localhost:8800+3 m.room.power_levels>']m.room.member@anon-20191002_181700-198:localhost:8800' m.room.create"? m.room.history_visibility%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 ~m.room.canonical_alias3 }m.room.power_levels>']|m.room.member@anon-20191002_181700-197:localhost:8800~' {m.room.create}"? zm.room.history_visibility|%))ym.room.aliaseslocalhost:8800{"? xm.room.history_visibilityz/ wm.room.join_rulesy9 vm.room.canonical_aliasx3 um.room.power_levelsw>']tm.room.member@anon-20191002_181700-195:localhost:8800v' sm.room.createu"? rm.room.history_visibilityt/ qm.room.join_ruless3 pm.room.power_levelsr>']om.room.member@anon-20191002_181700-194:localhost:8800q' nm.room.createp"? mm.room.history_visibilityo"? lm.room.history_visibilityn/ km.room.join_rulesm3 jm.room.power_levelsl>']im.room.member@anon-20191002_181700-193:localhost:8800k' hm.room.createj"? gm.room.history_visibilityi"? fm.room.history_visibilityh/ em.room.join_rulesg3 dm.room.power_levelsf>']cm.room.member@anon-20191002_181700-192:localhost:8800e' bm.room.created"? am.room.history_visibilityc"? `m.room.history_visibilityb/ _m.room.join_rulesa3 ^m.room.power_levels`>']]m.room.member@anon-20191002_181700-191:localhost:8800_' \m.room.create^('1[m.room.member@17:localhost:8800]('1Zm.room.member@17:localhost:8800\3 Ym.room.guest_access["? Xm.room.history_visibilityZ/ Wm.room.join_rulesY3 Vm.room.power_levelsX>']Um.room.member@anon-20191002_181700-190:localhost:8800W' Tm.room.createV('1Sm.room.member@16:localhost:8800U('1Rm.room.member@16:localhost:8800T3 Qm.room.guest_accessS"? Pm.room.history_visibilityR"? Om.room.history_visibilityQ/ Nm.room.join_rulesP3 Mm.room.power_levelsO>']Lm.room.member@anon-20191002_181700-189:localhost:8800N' Km.room.createM('1Jm.room.member@15:localhost:8800L('1Im.room.member@15:localhost:8800K3 Hm.room.guest_accessJ"? Gm.room.history_visibilityI"? Fm.room.history_visibilityH/ Em.room.join_rulesG3 Dm.room.power_levelsF>']Cm.room.member@anon-20191002_181700-188:localhost:8800E' Bm.room.createD('1Am.room.member@14:localhost:8800C('1@m.room.member@14:localhost:8800B3 ?m.room.guest_accessA"? >m.room.history_visibility@"? =m.room.history_visibility?/ 3 ;m.room.power_levels=>']:m.room.member@anon-20191002_181700-187:localhost:8800<' 9m.room.create;('18m.room.member@13:localhost:8800:('17m.room.member@13:localhost:880093 6m.room.guest_access8"? 5m.room.history_visibility7 -RM H C > 9 4/*|%w rmhc T5Qe!fcdNYFWFyxmdpKAknc:localhost:8800$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikT4Qe!fcdNYFWFyxmdpKAknc:localhost:8800$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8T3Qe!fcdNYFWFyxmdpKAknc:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIT2Qe!fcdNYFWFyxmdpKAknc:localhost:8800$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQT1Qe!MWCLSWWGdWcSivNVLI:localhost:8800$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgT0Qe!MWCLSWWGdWcSivNVLI:localhost:8800$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15AumwT/Qe!MWCLSWWGdWcSivNVLI:localhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAT.Qe!MWCLSWWGdWcSivNVLI:localhost:8800$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8T-Qe!MWCLSWWGdWcSivNVLI:localhost:8800$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8T,Qe!MWCLSWWGdWcSivNVLI:localhost:8800$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsET+Qe!MWCLSWWGdWcSivNVLI:localhost:8800$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNET*Qe!MWCLSWWGdWcSivNVLI:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cT)Qe!MWCLSWWGdWcSivNVLI:localhost:8800$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQT(Qe!erBPdgtUsiOfIKUkho:localhost:8800$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8T'Qe!erBPdgtUsiOfIKUkho:localhost:8800$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0T&Qe!erBPdgtUsiOfIKUkho:localhost:8800$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wT%Qe!erBPdgtUsiOfIKUkho:localhost:8800$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1GgT$Qe!erBPdgtUsiOfIKUkho:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxET#Qe!erBPdgtUsiOfIKUkho:localhost:8800$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4T"Qe!dWgOTucBVQBKZjfndN:localhost:8800$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcT!Qe!dWgOTucBVQBKZjfndN:localhost:8800$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4T Qe!dWgOTucBVQBKZjfndN:localhost:8800$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnITQe!dWgOTucBVQBKZjfndN:localhost:8800$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsTQe!dWgOTucBVQBKZjfndN:localhost:8800$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkTQe!dWgOTucBVQBKZjfndN:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQTQe!dWgOTucBVQBKZjfndN:localhost:8800$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkTQe!hSzBsirdPWHtVjagXn:localhost:8800$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUTQe!hSzBsirdPWHtVjagXn:localhost:8800$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwTQe!hSzBsirdPWHtVjagXn:localhost:8800$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosTQe!hSzBsirdPWHtVjagXn:localhost:8800$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UTQe!hSzBsirdPWHtVjagXn:localhost:8800$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQTQe!hSzBsirdPWHtVjagXn:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMTQe!hSzBsirdPWHtVjagXn:localhost:8800$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXITQe!mfzIRinBAGGrZvQAuI:localhost:8800$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0TQe!mfzIRinBAGGrZvQAuI:localhost:8800$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUTQe!mfzIRinBAGGrZvQAuI:localhost:8800$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkTQe!mfzIRinBAGGrZvQAuI:localhost:8800$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0TQe!mfzIRinBAGGrZvQAuI:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwTQe!mfzIRinBAGGrZvQAuI:localhost:8800$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQTQe!FPcQcheNebvdFvmOnr:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukT Qe!FPcQcheNebvdFvmOnr:localhost:8800$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgT Qe!FPcQcheNebvdFvmOnr:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwT Qe!FPcQcheNebvdFvmOnr:localhost:8800$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gT Qe!FPcQcheNebvdFvmOnr:localhost:8800$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0T Qe!FPcQcheNebvdFvmOnr:localhost:8800$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw  FzeQ_$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 891}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE"], "type": "m.room.history_visibility", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041088649, "hashes": {"sha256": "HNxkVhnZWg172hbqlQmtRkToLNI6Sjx6aCNv5+Glwnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xTVpTN5hKREitUA595/TEF/Ka6zd3NO/IaY33VB+mGJ31voOBlf9FmSYJ+glTWOepPInxCY5N6DsTO5iCQcdCA"}}, "unsigned": {"age_ts": 1570041088649, "replaces_state": "$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE"}}yeQ_$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 890}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo"], "type": "m.room.history_visibility", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041087586, "hashes": {"sha256": "MdYTljQqWAVI+W2S61CnDMymIiVM9Gl9qxvz7IlJVkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZKSTVg2nL6w8qAvfvW9jYJgR4+kiMqZAtyLbGx+uFjesdlRvO39tUCJPpJD63ZxfLmo/ytowXHrh0alCS5HRCg"}}, "unsigned": {"age_ts": 1570041087586}}sxeQ_u$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 889}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc"], "type": "m.room.join_rules", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041087003, "hashes": {"sha256": "MP8qiz/QlJmbs40/IMf2+XwM7DRG+KovE/RSDIsrFic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EedbK7btppwuBK1JRzEkKo1I7XjWKf+nQBnzGkpNFtvQZKzvn3Rq+CbeTgMMVuhDzGg5Sx7XpF7RQZS2nUsJBA"}}, "unsigned": {"age_ts": 1570041087003}}jweQ_c$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 888}{"auth_events": ["$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "type": "m.room.power_levels", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"users": {"@anon-20191002_181700-189:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041086189, "hashes": {"sha256": "iCaRdJoKXsVnF7sEVnGk7aahqJaW5F/0ULN2aUGwo4g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jceihoLtkMYlqZUjDwk8e9oe34fH7KoL8HKG5IChQ/1SrYoWM/HB8yC04rnwA0/AcgqZsnH0rQi9T2ru2O/wCw"}}, "unsigned": {"age_ts": 1570041086189}} SuByLl? ^ 1  ~ Q $ q D  c 6 V )vIh;[.{N!nb5U(u+Q !hFwigdYZkwYNSwelRH:localhost:8800 R R,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800+Q !hDAzBWYEyRVBRlrCHh:localhost:8800  ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 +Q !gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800..,Q!fuHSJcznvGQnoYoLPW:localhost:8800--,Q!fuHSJcznvGQnoYoLPW:localhost:8800,,+Q !fGkUEndqGrieltwbCh:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800++,Q!fuHSJcznvGQnoYoLPW:localhost:8800**+Q !fuHSJcznvGQnoYoLPW:localhost:8800)),Q!fsbkkRBZlUcBVVfMME:localhost:8800>>,Q!fsbkkRBZlUcBVVfMME:localhost:8800==,Q!fsbkkRBZlUcBVVfMME:localhost:8800<<,Q!fsbkkRBZlUcBVVfMME:localhost:8800;;,Q!fsbkkRBZlUcBVVfMME:localhost:8800::+Q !fsbkkRBZlUcBVVfMME:localhost:880099,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800+Q !fkvdYkesQOFCAQkzky:localhost:8800,Q!ffijTnPMbTrDXHqOXf:localhost:8800 ll,Q!ffijTnPMbTrDXHqOXf:localhost:8800 kk,Q!ffijTnPMbTrDXHqOXf:localhost:8800jj,Q!ffijTnPMbTrDXHqOXf:localhost:8800ii,Q!ffijTnPMbTrDXHqOXf:localhost:8800hh,Q!ffijTnPMbTrDXHqOXf:localhost:8800gg,Q!ffijTnPMbTrDXHqOXf:localhost:8800ff,Q!ffijTnPMbTrDXHqOXf:localhost:8800ee,Q!ffijTnPMbTrDXHqOXf:localhost:8800dd+Q !ffijTnPMbTrDXHqOXf:localhost:8800cc,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 +Q !fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800+Q !fcdNYFWFyxmdpKAknc:localhost:8800,Q!fOJLpnbtgKNxxVDquX:localhost:8800nn,Q!fOJLpnbtgKNxxVDquX:localhost:8800mm,Q!fOJLpnbtgKNxxVDquX:localhost:8800ll,Q!fOJLpnbtgKNxxVDquX:localhost:8800kk,Q!fOJLpnbtgKNxxVDquX:localhost:8800jj,Q!fOJLpnbtgKNxxVDquX:localhost:8800ii+Q !fOJLpnbtgKNxxVDquX:localhost:8800hh,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800+Q !fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800 ,Q!fGkUEndqGrieltwbCh:localhost:8800 SuByLl? ^ 1  ~ Q $ q D  c 6 V )vIh;[.{N!nb5U(u+Q !hFwigdYZkwYNSwelRH:localhost:8800 R R,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800+Q !hDAzBWYEyRVBRlrCHh:localhost:8800  ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 +Q !gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800..,Q!fuHSJcznvGQnoYoLPW:localhost:8800--,Q!fuHSJcznvGQnoYoLPW:localhost:8800,,+Q !fGkUEndqGrieltwbCh:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800++,Q!fuHSJcznvGQnoYoLPW:localhost:8800**+Q !fuHSJcznvGQnoYoLPW:localhost:8800)),Q!fsbkkRBZlUcBVVfMME:localhost:8800>>,Q!fsbkkRBZlUcBVVfMME:localhost:8800==,Q!fsbkkRBZlUcBVVfMME:localhost:8800<<,Q!fsbkkRBZlUcBVVfMME:localhost:8800;;,Q!fsbkkRBZlUcBVVfMME:localhost:8800::+Q !fsbkkRBZlUcBVVfMME:localhost:880099,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800+Q !fkvdYkesQOFCAQkzky:localhost:8800,Q!ffijTnPMbTrDXHqOXf:localhost:8800 ll,Q!ffijTnPMbTrDXHqOXf:localhost:8800 kk,Q!ffijTnPMbTrDXHqOXf:localhost:8800jj,Q!ffijTnPMbTrDXHqOXf:localhost:8800ii,Q!ffijTnPMbTrDXHqOXf:localhost:8800hh,Q!ffijTnPMbTrDXHqOXf:localhost:8800gg,Q!ffijTnPMbTrDXHqOXf:localhost:8800ff,Q!ffijTnPMbTrDXHqOXf:localhost:8800ee,Q!ffijTnPMbTrDXHqOXf:localhost:8800dd+Q !ffijTnPMbTrDXHqOXf:localhost:8800cc,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 +Q !fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800+Q !fcdNYFWFyxmdpKAknc:localhost:8800,Q!fOJLpnbtgKNxxVDquX:localhost:8800nn,Q!fOJLpnbtgKNxxVDquX:localhost:8800mm,Q!fOJLpnbtgKNxxVDquX:localhost:8800ll,Q!fOJLpnbtgKNxxVDquX:localhost:8800kk,Q!fOJLpnbtgKNxxVDquX:localhost:8800jj,Q!fOJLpnbtgKNxxVDquX:localhost:8800ii+Q !fOJLpnbtgKNxxVDquX:localhost:8800hh,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800+Q !fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800 ,Q!fGkUEndqGrieltwbCh:localhost:8800 wX N  ` 0 :;dtw!e)Q ]$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0m.room.message!mfzIRinBAGGrZvQAuI:localhost:8800mZm_@anon-20191002_181700-191:localhost:8800,e?Q ]$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUm.room.history_visibility!mfzIRinBAGGrZvQAuI:localhost:8800mm"@anon-20191002_181700-191:localhost:8800$e/Q ]$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkm.room.join_rules!mfzIRinBAGGrZvQAuI:localhost:8800mmH@anon-20191002_181700-191:localhost:8800& e3Q ]$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0m.room.power_levels!mfzIRinBAGGrZvQAuI:localhost:8800m m @anon-20191002_181700-191:localhost:8800 e'Q ]$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwm.room.member!mfzIRinBAGGrZvQAuI:localhost:8800m[m@anon-20191002_181700-191:localhost:8800  e'Q  ]$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQm.room.create!mfzIRinBAGGrZvQAuI:localhost:8800m}m@anon-20191002_181700-191:localhost:8800 e'Q 1 $9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kukm.room.member!FPcQcheNebvdFvmOnr:localhost:8800 mmS@17:localhost:8800! e)Q ] $bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgm.room.message!FPcQcheNebvdFvmOnr:localhost:8800 m\ma@anon-20191002_181700-190:localhost:8800 e'Q ]$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwm.room.member!FPcQcheNebvdFvmOnr:localhost:8800mm7@anon-20191002_181700-190:localhost:8800!e)Q ]$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gm.room.message!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800&e3Q ]$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0m.room.guest_access!FPcQcheNebvdFvmOnr:localhost:8800mBm@anon-20191002_181700-190:localhost:8800,e?Q ]$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lwm.room.history_visibility!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800$e/Q ]$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIm.room.join_rules!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800&e3Q ]$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0Im.room.power_levels!FPcQcheNebvdFvmOnr:localhost:8800mCmN@anon-20191002_181700-190:localhost:8800 e'Q ]$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcm.room.member!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800 e'Q  ]$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0m.room.create!FPcQcheNebvdFvmOnr:localhost:8800mUm@anon-20191002_181700-190:localhost:8800 e'Q 1 $6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUm.room.member!vOfeZvbtpuHfoqShFl:localhost:8800 m#mڍ@16:localhost:8800!e)Q ] $QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmom.room.message!vOfeZvbtpuHfoqShFl:localhost:8800 mm@anon-20191002_181700-189:localhost:8800 ~e'Q ] $qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIm.room.member!vOfeZvbtpuHfoqShFl:localhost:8800 mhm@anon-20191002_181700-189:localhost:8800!}e)Q ]$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcm.room.message!vOfeZvbtpuHfoqShFl:localhost:8800mm@anon-20191002_181700-189:localhost:8800&|e3Q ]$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIm.room.guest_access!vOfeZvbtpuHfoqShFl:localhost:8800m-mό@anon-20191002_181700-189:localhost:8800,{e?Q ]$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsm.room.history_visibility!vOfeZvbtpuHfoqShFl:localhost:8800mʉm˄@anon-20191002_181700-189:localhost:8800,ze?Q ]$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEm.room.history_visibility!vOfeZvbtpuHfoqShFl:localhost:8800mbm%@anon-20191002_181700-189:localhost:8800$ye/Q ]$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQom.room.join_rules!vOfeZvbtpuHfoqShFl:localhost:8800mm@anon-20191002_181700-189:localhost:8800 ~z v r n j fb^ZVRNJF/eeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800.eeQ$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800-eeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800,eeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800+eeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800*eeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800)eeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800(eeQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800'eeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800&eeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800%eeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800$eeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800#eeQ$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800"eeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800!eeQ$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800 eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800eeQ$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800eeQ$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800 <(0 ]  p ! 1 A b Nv&L ^n~Dj0V| | , <  <7"1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800M!]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:88007 1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800M]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:880071Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800M]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800M]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800M]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800M]Q@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800M]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800M]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800M]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800M]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800M]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:88007 1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800M ]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:88007 1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800M ]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:880071Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800M]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800M]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800M]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800M]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800M]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800M]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800M]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800M]Q@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800M]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800M~]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800M}]Q@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800M|]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800M{]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800M]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800M]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800M]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800M]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:880071Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800M]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:880071Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800M ]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800  h}eQ__$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 894}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc"], "type": "m.room.member", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"membership": "invite", "displayname": "16", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041091432, "hashes": {"sha256": "3I5X7QLZG3MQo7VeyOH5VsU4SY6DuHA86Ias1bF9n9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TYi9QA3gn7E4Xr0fu14Ij4BuVLslv9K6qGupn4GGyWU6WZzwWR8snrwYkAnBCvytqbsG3wh/qIiJwKccpAQ5Bg"}}, "unsigned": {"age_ts": 1570041091432, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-189:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-189:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-189", "avatar_url": null}, "sender": "@anon-20191002_181700-189:localhost:8800"}]}}|eQw$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "txn_id": "71", "stream_ordering": 893}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI"], "type": "m.room.message", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041090777, "hashes": {"sha256": "HLxYukQJP7EKZUEYVrqi15kv6VosndaxVBFk92KEWnk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ylERT5r28XiMsCRSSU8QuSRSlR5N2zFbOHmbYYU9WJryKskvQyyhWeRmSPTXot1RXLLx+x+r70PND1pTPteGAQ"}}, "unsigned": {"age_ts": 1570041090777}}z{eQ_$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 892}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs"], "type": "m.room.guest_access", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041089837, "hashes": {"sha256": "35YTEve+nIXTngUy61KgEocRbIHXFuEkqc9TI8GH6zE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1+z8d+JMcKjLhJjkUviRuzTgmILalC8yNkQXsRKvIUm04Iwne6Evu+/ACV7lJWHrWb78E0NUPhZrUV9YbNCyAA"}}, "unsigned": {"age_ts": 1570041089837}} a} { y w u sqomkigeca~FeeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800~EeeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~DeeQ$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~CeeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800~BeeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~AeeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~@eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~?eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800~>eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~=eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~<eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~;eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~:eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~9eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~8eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~7eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~6eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~5eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~4eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~3eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~2eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~1eeQ$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~0eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800~/eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~.eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~-eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~,eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800~+eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~*eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~)eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~(eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800 H V v Dn<   (p>jN 8 *  6tb \T"ZzHB $h | J  P061e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU)1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo 1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo A1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo @1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU+1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU*1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo B1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94w1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po I1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po H1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0d1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc d1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94x1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgx1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgw1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94y1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgy1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0d1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0c1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0b1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEz1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEy1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsga1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg`1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg_1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q *1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEo21e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU|1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU{1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUz1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEp21e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEq1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0e 7 v7ueQ_y$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 898}{"auth_events": ["$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0"], "prev_events": ["$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0"], "type": "m.room.member", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-190", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-190:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041095404, "hashes": {"sha256": "EfmeXrBWLN3+6YJb7kPv8vOaupCJ1BIi1+Oc/WfeuZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zCKdOaRDeMBDfU8naLF2QanYZ/eI8fqXGEl22D9YRTjki83YnBjbfzs6aHdP8z+aRC7jRXOtIHYgcbL/rm9LAg"}}, "unsigned": {"age_ts": 1570041095404}}heQ__$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 897}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-190:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041094485, "hashes": {"sha256": "gMvrFvf9x4Y/zN+9AGDngVo1hoLYNs0Xt21DH4zBxEA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RALWl3zerHnaSmsgy9v8lAn9pCcWxtGI/LQwYmJumYYgCBoW49FgIPIP6IlRlNl7zJMNGEZq5M8tyMAglQqoCw"}}, "unsigned": {"age_ts": 1570041094485}}VeQ=]$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800{"stream_ordering": 896}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo"], "prev_events": ["$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo"], "type": "m.room.member", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@16:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "16", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041092643, "hashes": {"sha256": "KHU3F5ZfnLhqMjQUlReCFiFokQD/oPzSfbjVPCFIfV0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pa/p1lwKbXn2lDSl7efXXFAZupLepMlTO4LWcDt0bcrnWnx2uw0PBMFGO/IGdbx8Yh5Qs9IrfObTgmtBEqM9Ag"}}, "unsigned": {"age_ts": 1570041092643, "replaces_state": "$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI"}}~eQ{$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "txn_id": "72", "stream_ordering": 895}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI"], "type": "m.room.message", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041092069, "hashes": {"sha256": "WX1eQTvMljongYea50BmVvUrINklLYuSUBxKAYnX2M4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SgRmRd1Hqv6uNT/kYIjZPsJdAk/+paOdtpaqXuB7aSTHMtMJwWhtWb7isHk8uflrVbbCcT3pF40WAcKz8+BrAQ"}}, "unsigned": {"age_ts": 1570041092069}} ?7/' | l d \ T  MFteeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800 8teeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800 ܁eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800eeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800eeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800neeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800weeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800weeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800keeQ$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800ށeeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800[eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800@eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:88008eeQ$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800 R;W% & ^ , jd288p> ]v+D  |J  XP  } K  R &  ^ ,1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY+1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUr1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY#1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk:1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA e1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg[1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEr1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM*1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0Q1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew&1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUB1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMV1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw/1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQs1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo,1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY.1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoM1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 91e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI jP1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A E1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds 21e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 2 R;W% & ^ , jd288p> ]v+D  |J  XP  } K  R &  ^ ,1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY+1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUr1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY#1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk:1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA e1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg[1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEr1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM*1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0Q1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew&1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUB1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMP1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw/1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQs1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo,1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY.1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoM1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 91e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI jP1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A E1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds 21e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 2 Whp`8X0 ` 8  p H  x P ( X h @  X0h@ 0  xP(`Hh8pH P(`8p'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800f'Q!TlJCaYlCkOOVzFDlLx:localhost:8800e'Q!TlJCaYlCkOOVzFDlLx:localhost:8800d'Q!TlJCaYlCkOOVzFDlLx:localhost:8800c'Q!TlJCaYlCkOOVzFDlLx:localhost:8800b'Q!TlJCaYlCkOOVzFDlLx:localhost:8800a'Q!TlJCaYlCkOOVzFDlLx:localhost:8800`'Q!TlJCaYlCkOOVzFDlLx:localhost:8800_'Q!TlJCaYlCkOOVzFDlLx:localhost:8800^'Q!TlJCaYlCkOOVzFDlLx:localhost:8800]'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TWETXUgfFZafDdbqLS:localhost:88004'Q!TWETXUgfFZafDdbqLS:localhost:88003'Q!TWETXUgfFZafDdbqLS:localhost:88002'Q!TWETXUgfFZafDdbqLS:localhost:88001'Q!TWETXUgfFZafDdbqLS:localhost:88000'Q!TWETXUgfFZafDdbqLS:localhost:8800/'Q!TWETXUgfFZafDdbqLS:localhost:8800.'Q!TWETXUgfFZafDdbqLS:localhost:8800-'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800u'Q!SvKwEALYoNreUvqAlp:localhost:8800t'Q!SvKwEALYoNreUvqAlp:localhost:8800s'Q!SvKwEALYoNreUvqAlp:localhost:8800r'Q!SvKwEALYoNreUvqAlp:localhost:8800q'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!SvKwEALYoNreUvqAlp:localhost:8800p'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800#'Q!TcCLuIBUrtFqghDgay:localhost:8800"'Q!TcCLuIBUrtFqghDgay:localhost:8800!'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!SvKwEALYoNreUvqAlp:localhost:8800o'Q!SvKwEALYoNreUvqAlp:localhost:8800n'Q!StEnDjTJToXKXsOHNf:localhost:8829'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800$'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800   6 p c]c@anon-20191002_181700-120:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5wo127.0.0.1ea[a@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWSN2WXVlPTMqcXUyMHloTwowMDJmc2lnbmF0dXJlIElgAWxLGP37kzHWr9kr-ryrZrd7J-ty0eNd8-BjBJODCg127.0.0.1 a[a@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCg127.0.0.1 c]c@anon-20191002_181700-119:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwo127.0.0.1dc]c@anon-20191002_181700-118:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQo127.0.0.1c  n [H54]c!E@anon-20191002_181700-194:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEyOm1aOWtBTU5mNjtLNn4KMDAyZnNpZ25hdHVyZSAJNq38xYsAafEMGJjV-gyFAhEIRQMSyJcyHE_26icm3AoQUCVOCSWYA127.0.0.1Perl + Net::Async::HTTP/0.44mQ{31a%E@20:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZlAqPSxXKn5pXnk0OkBHTwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIL2BeshVfhts8YQdae9DJ7UFQnVNTRFffV076i9L-S-fCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mN2]c!E@anon-20191002_181700-193:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHMxS2NQZ2VtLGJvcCZibkMKMDAyZnNpZ25hdHVyZSA3TN7LnS5yl4h57FSwjwg9GfgdePN17_r5hXeFHnU2RAoPFHPRPBSVJ127.0.0.1Perl + Net::Async::HTTP/0.44m6 {11a%E@19:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSW9DYTd2SmxyOXZBN2ErRwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFFXI1T8uka05JtyfHQJjVTGEQH2CNCA7MRgOMOM3XwICgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m10]c!E@anon-20191002_181700-192:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZLT3hqPWp5PU9uRCM1VEMKMDAyZnNpZ25hdHVyZSC2EoqChhKnAKlLFg2seUiR0-JQqprG-ktdGIfMC6k8qAoOXPLOWSTCM127.0.0.1Perl + Net::Async::HTTP/0.44m}{/1a%E@18:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNWs7aXNYaCwmMmJJXmpNYQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIHmvdGjZx9PDEzLghbbZRbAAXV1IrS8sTsspJDM2mfFwCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mF.]c!E@anon-20191002_181700-191:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtlMlJqT3UqWEIsNSs3YzAKMDAyZnNpZ25hdHVyZSA1yZh7wJF3PyG6ywgs4xxgTMQPJbBMDXW2BrgJlZc33goCZZXBALTJT127.0.0.1Perl + Net::Async::HTTP/0.44m{-1a%E@17:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gVmxQPTBXLEQ1ck55a1NRVAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlID4TV4jDe8XzM8I1F_eV7pQOZB6XTMr8qJwbCeCcTjVjCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mE,]c!E@anon-20191002_181700-190:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl0LCxpVnpnPWN4OFdEdyoKMDAyZnNpZ25hdHVyZSAvHPED72aJ9dwVSH5v0uE3tWyTMdN6NBhOex2nXfW16QoQIEZENAKEZ127.0.0.1Perl + Net::Async::HTTP/0.44m{+1a%E@16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRktoSStZMWlBQUR2bXA0YQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIGkMsfrX_CDXuP0Xf33Iks0_9DU-E_vtEQC4bgdLzvYJCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m !dt }  2 ; c PYnw ,5XzdNQ? ee!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8sMQ))e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoApLQ? e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8hKQ/ e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rules$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8mJQ9 e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_alias$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEjIQ3 e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE HQ']e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cdGQ' e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.create$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQpFQ? e!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibility$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0hEQ/ e!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rules$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wjDQ3 e!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg CQ']e!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEdBQ' e!erBPdgtUsiOfIKUkho:localhost:8800m.room.create$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4AQ? ee!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIp@Q? e!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIh?Q/ e!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rules$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsj>Q3 e!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk =Q']e!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQd<Q' e!dWgOTucBVQBKZjfndN:localhost:8800m.room.create$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk;Q? ee!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosp:Q? e!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosh9Q/ e!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rules$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Uj8Q3 e!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ 7Q']e!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMd6Q' e!hSzBsirdPWHtVjagXn:localhost:8800m.room.create$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIp5Q? e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUh4Q/ e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rules$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkj3Q3 e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0 2Q']e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwd1Q' e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.create$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ"0Q'1ee!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwv/Q'1e!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwj.Q3 e!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_access$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0  zeQ_$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 902}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw"], "type": "m.room.guest_access", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041098306, "hashes": {"sha256": "3+v9zKQngz0ZblyLGd2xAjCKVPJMiyLBWRu1l2ORCvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lO7yzkMj2tw6XvaA2NVxUhEZBxc25sen0UCPaB3L9fBvKjuy3cp0dNa6aiZn52Yj/ckznF8kamqdqc1RxZ1bDA"}}, "unsigned": {"age_ts": 1570041098306}}eQ_$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 901}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI"], "type": "m.room.history_visibility", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041097213, "hashes": {"sha256": "B5GjQBScjeX3sA5RIoAFlFjgPaSsiPVira4BpD2Xq50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a60n9vcafhE47fFN36Pf5meeOsP/R/T6XdcgCWErrPm+g0Y6RlSC/hk3srB5q4XMllv/Ydek9S/8NqITM5hmBQ"}}, "unsigned": {"age_ts": 1570041097213}}seQ_u$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 900}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I"], "type": "m.room.join_rules", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041096645, "hashes": {"sha256": "B2vPvKyb3oqlwUeNnMtdEj3yEmGFFchpy35NwVZpQZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lFAdAseVKUt669v5i4bG4RkRVKdOqxBf9tA4tnYvAReJk8IZLUFdgvf5T11i68blk54IDFJIcdVWWG4pybjTAA"}}, "unsigned": {"age_ts": 1570041096645}}jeQ_c$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 899}{"auth_events": ["$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "type": "m.room.power_levels", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"users": {"@anon-20191002_181700-190:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041096003, "hashes": {"sha256": "h+7/Lrvii+4RVglZhyola4E2a6FkswUOif01m/A0y9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7P4MzvQ4LwuRf3vSnt2xTZK0PBZvllX88p8PgAlOb2Fa3/slJqK4G2/uRgu8r98+nVUMrMpEj+/UnAgAKgnFDA"}}, "unsigned": {"age_ts": 1570041096003}} Nj8p> $V x F  ~d L  R X & ^ ,2j8p> vD|JP\+1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58'1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s J0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kka1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM-1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 K1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU 1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM71e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ041e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM01e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMQ1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsz1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccl1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikB1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8O1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws&1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 21e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncY1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wV1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 !1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU r1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AE1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0C1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls|1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UQ1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs o1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gu1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM91e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw ;1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQj1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw !0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkA1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0-1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo~1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo#1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 n  x eQy$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "txn_id": "74", "stream_ordering": 905}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw"], "type": "m.room.message", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041100636, "hashes": {"sha256": "U/ihOdfmR9R3HS/TxEaXC0CGdLKWDJk8TYVmgpqEnDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xP1GbwMG1As4LOvGTg3ssfUyOXR3g/YLVKpAVlg6x2X8anNlSSXRVmAMx9Cr+MkghbZRbtmAchT2Phyivk30AQ"}}, "unsigned": {"age_ts": 1570041100636}}heQ__$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 904}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g"], "type": "m.room.member", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"membership": "invite", "displayname": "17", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@17:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041099745, "hashes": {"sha256": "acttZoNqV2BfjsnlBlKPrgZRu39qO/ZylsEimF+LwC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lDd/3z+f2Vv6ECeiV3igojAG17gDsnRpwxdzev5QGFwB2zVTjRKjqDFH0wukqK+ufByHjSvJl4byzVuK10xnCw"}}, "unsigned": {"age_ts": 1570041099745, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-190:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-190:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-190", "avatar_url": null}, "sender": "@anon-20191002_181700-190:localhost:8800"}]}}eQw$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "txn_id": "73", "stream_ordering": 903}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0"], "type": "m.room.message", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041098994, "hashes": {"sha256": "FeUOZDVKaivP+yPa0sP69hoUaM6LI3hTfCm+dq/tJT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P231RR3K54uSNyDQEJ0hl17mCk3pc/XDq40aUhFeU/vZhNm007iN3RLywZ6vcYWaZI2DXky6PLN/I6xX4Q49DQ"}}, "unsigned": {"age_ts": 1570041098994}} Nj8p> $V x F  ~d L  R X & ^ ,2j8p> vD|JP\+1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58'1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s J0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kka1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM'1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 I1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU 1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM71e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ041e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM01e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMQ1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsz1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccl1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikB1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8O1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws&1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 21e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncY1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wV1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 !1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU r1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AE1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0C1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls|1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UQ1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs o1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gu1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM91e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw ;1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQj1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw !0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkA1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0-1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo~1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo#1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 n S & :Sj eQ_c$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 909}{"auth_events": ["$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "type": "m.room.power_levels", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"users": {"@anon-20191002_181700-191:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041105024, "hashes": {"sha256": "IZebBlyo4AaroTONyfXMokGN19hplrogKNxtKtxu6c0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T1JSID1///ZgylW7yD5xu+n2haC8Dydq9XU1Q+OiMT6LFjLZbVF2flkyrmFkxQslXQknnyPuXRRPG28rLwCsDg"}}, "unsigned": {"age_ts": 1570041105024}}u eQ_y$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 908}{"auth_events": ["$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ"], "prev_events": ["$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ"], "type": "m.room.member", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-191", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-191:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041103963, "hashes": {"sha256": "yc816pJgLDClvj0cIIAoawnikAgtoOuOulIwtYvBZ7I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6FAX9pf4vt0NQx/AxIqBkddJbXl6+IiBWqI7uCjLGqgMt6FUMQzCMY7pTQ0rmo+8ikz/WCdu4FISnblI6Mz6Bw"}}, "unsigned": {"age_ts": 1570041103963}}h eQ__$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 907}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-191:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041103229, "hashes": {"sha256": "IbC0g2k6D4LmwU8QoBURfgnzwcAzQtTVOyzdKCUQnRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I9d36HIsqua05vE0gS5Jl7q4XPtfWPIa8U79ltLRqfZ74SV8ekwEGOhHoXoKRLzEOxNGRiAMaTuGT7/4f136Aw"}}, "unsigned": {"age_ts": 1570041103229}}V eQ=]$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800{"stream_ordering": 906}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI"], "prev_events": ["$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg"], "type": "m.room.member", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@17:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "17", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@17:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041101224, "hashes": {"sha256": "yr8a7xUZPgodcAeT4bPDbz/90n+wyAAKRArSsFj4giQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqRIb4IxoB+ADms1Cmu6LpGdOleS2varGQrrfawas51I4hjIr8l9zQuECvAAmw1CLcpzpRZJlTKTQYm5rQ+WCA"}}, "unsigned": {"age_ts": 1570041101224, "replaces_state": "$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw"}} -RM H C > 9 4/*|%w rmhc TQe!tkajvIKHoOMWGsReBs:localhost:8800$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObITQe!tkajvIKHoOMWGsReBs:localhost:8800$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0TQe!tkajvIKHoOMWGsReBs:localhost:8800$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkTQe!tkajvIKHoOMWGsReBs:localhost:8800$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0TQe!tkajvIKHoOMWGsReBs:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0TQe!tkajvIKHoOMWGsReBs:localhost:8800$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gTQe!fcdNYFWFyxmdpKAknc:localhost:8800$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYTQe!fcdNYFWFyxmdpKAknc:localhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVITQe!fcdNYFWFyxmdpKAknc:localhost:8800$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00TQe!fcdNYFWFyxmdpKAknc:localhost:8800$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0T~Qe~!fcdNYFWFyxmdpKAknc:localhost:8800$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikT}Qe}!fcdNYFWFyxmdpKAknc:localhost:8800$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8T|Qe|!fcdNYFWFyxmdpKAknc:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIT{Qe{!fcdNYFWFyxmdpKAknc:localhost:8800$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQTzQez!MWCLSWWGdWcSivNVLI:localhost:8800$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15AumwTyQey!MWCLSWWGdWcSivNVLI:localhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoATxQex!MWCLSWWGdWcSivNVLI:localhost:8800$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8TwQew!MWCLSWWGdWcSivNVLI:localhost:8800$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8TvQev!MWCLSWWGdWcSivNVLI:localhost:8800$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsETuQeu!MWCLSWWGdWcSivNVLI:localhost:8800$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNETtQet!MWCLSWWGdWcSivNVLI:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cTsQes!MWCLSWWGdWcSivNVLI:localhost:8800$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQTrQer!erBPdgtUsiOfIKUkho:localhost:8800$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0TqQeq!erBPdgtUsiOfIKUkho:localhost:8800$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wTpQep!erBPdgtUsiOfIKUkho:localhost:8800$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1GgToQeo!erBPdgtUsiOfIKUkho:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxETnQen!erBPdgtUsiOfIKUkho:localhost:8800$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4TmQem!dWgOTucBVQBKZjfndN:localhost:8800$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4TlQel!dWgOTucBVQBKZjfndN:localhost:8800$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnITkQek!dWgOTucBVQBKZjfndN:localhost:8800$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsTjQej!dWgOTucBVQBKZjfndN:localhost:8800$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkTiQei!dWgOTucBVQBKZjfndN:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQThQeh!dWgOTucBVQBKZjfndN:localhost:8800$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkTgQeg!hSzBsirdPWHtVjagXn:localhost:8800$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwTfQef!hSzBsirdPWHtVjagXn:localhost:8800$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosTeQee!hSzBsirdPWHtVjagXn:localhost:8800$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UTdQed!hSzBsirdPWHtVjagXn:localhost:8800$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQTcQec!hSzBsirdPWHtVjagXn:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMTbQeb!hSzBsirdPWHtVjagXn:localhost:8800$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXITaQea!mfzIRinBAGGrZvQAuI:localhost:8800$r_hXaVKZmV0IIXEBxUBb7sDraQn2hcW9UKClFAINECAT`Qe`!mfzIRinBAGGrZvQAuI:localhost:8800$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUT_Qe_!mfzIRinBAGGrZvQAuI:localhost:8800$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkT^Qe^!mfzIRinBAGGrZvQAuI:localhost:8800$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0T]Qe]!mfzIRinBAGGrZvQAuI:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwT\Qe\!mfzIRinBAGGrZvQAuI:localhost:8800$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ  ; a 9 e j /4\gw-R~eeQ/ $IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rulesgeQ3 $-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels eQ']$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800joina eQ' $edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800m.room.createm eQ? $Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibilitye eQ/ $riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rulesg eQ3 $6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels eQ']$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800joinaeQ' $PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800m.room.createmeQ? $n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibilitytmeQ? $jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibilityw|eQ'1$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800joing{eQ3 $sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_accessmzeQ? $CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibilityeyeQ/ $fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rulesgxeQ3 $xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels weQ']$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800joinaveQ' $tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800m.room.createeeQ/ $sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rulesgeQ3 $kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels eQ']$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800joinaeQ' $0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800m.room.createmeQ? $FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibilityeeQ/ $n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rulesgeQ3 $O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels ~eQ']$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800joina}eQ' $aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800m.room.create Mj8p> v D  | J  P  V $ \ *b0i7o= uD}KQW%^,1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA e1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoh1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Ys1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE_1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Wwz1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI ;1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF490e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ%1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 {1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0_1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo/1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw71e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo#1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg r1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 31e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQC1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT011e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8r1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo s1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ K1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwc1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg41e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQov1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog D1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ew1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg}1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s 1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAO1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc J1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI  heQ__$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 913}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-192:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041110350, "hashes": {"sha256": "vSUG88UwmAlc57JPCZVtturtw4jdokBG0DJgSHPjoX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AQUYW6RPq8Zg93Xe3Irds/quFk8LzKGPVY3xHR7o+dhwEk/3wSR0ULAl/+sQDh9eGj09CknDygs9hDxOt+4oAw"}}, "unsigned": {"age_ts": 1570041110350}}}eQi$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "txn_id": "75", "stream_ordering": 912}{"auth_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0", "$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU"], "type": "m.room.message", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041108314, "hashes": {"sha256": "PwJOCgpjsGPs4OBaYT2JmmKPMOnrs8PFo8Cdjl3QX2Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HHaSkvbtm3/etQ+nu3FPqnaldKK5YwGiUqVlt/SutOWp+splNC5aLKBAsUm3ATdbJtFljxJeSZgXTcjpWljmBw"}}, "unsigned": {"age_ts": 1570041108314}}eQ_$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 911}{"auth_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0", "$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk"], "type": "m.room.history_visibility", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041106914, "hashes": {"sha256": "VTokMT+XMQ82OEn5x0JlZ7XGoB+aL7eSBM4eWEfoZz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZF4PkjKIFlkkWn9E/5dqCnVwImHw7ktOSXF2wkp439wuOmewqXT/fulvz/ldSycY93U0skdVP+B1XwTCVD/8Cg"}}, "unsigned": {"age_ts": 1570041106914}}s eQ_u$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 910}{"auth_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0", "$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0"], "type": "m.room.join_rules", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041106197, "hashes": {"sha256": "crR0BTrwY4cDAdWy0C0zCMnjqKvYHq11G+K8BIm/3pA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c7AHl/ao2QUxurJpdUVYRB2yt6tmWsaHFCfu1HcHSES7Uj1i72uj6189HyfLNYnG2/6nKGsWXB0/b82PArNYAA"}}, "unsigned": {"age_ts": 1570041106197}} a} { y w u sqomkigeca~eeeQ$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800~deeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~ceeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~beeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800~aeeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~`eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~_eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800~^eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~]eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~\eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800~[eeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~ZeeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~YeeQ$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~XeeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~WeeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~VeeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800~UeeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~TeeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~SeeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800~ReeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~QeeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~PeeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800~OeeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~NeeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~MeeQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~LeeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800~KeeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~JeeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800~IeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800~HeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~GeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Ve$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781Ue$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41Te$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1Se$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk1Re$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1Qe$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1Pe$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1Oe$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1Ne$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41Me$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1Le$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1Ke$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1Je$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1Ie$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1He$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1Ge$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41Fe$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81Ee$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81De$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701Ce$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1Be$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41Ae$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1@e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1?e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1>e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1=e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1<e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1;e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1:e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI19e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j018e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk17e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws016e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie015e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g14e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs13e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY12e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w11e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI10e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001/e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01.e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik~1-e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8}1,e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI|1+e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ{1*e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgz1)e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwz1(e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAy1'e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8x1&e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8w1%e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEv1$e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEu1#e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74ct1"e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQs1!e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8r1 e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0r1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wq1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggp1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEo1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4n1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcm1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4m1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIl1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsk1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkj1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQi1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkh1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUg1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwg1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosf1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Ue1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQd1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIb1 e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0`1 e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU` <^ h  c  sk$.~7<)(e9Q ]$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEm.room.canonical_alias!MWCLSWWGdWcSivNVLI:localhost:8800msmt@anon-20191002_181700-195:localhost:8800&'e3Q ]$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEm.room.power_levels!MWCLSWWGdWcSivNVLI:localhost:8800mq3mr}@anon-20191002_181700-195:localhost:8800 &e'Q ]$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cm.room.member!MWCLSWWGdWcSivNVLI:localhost:8800mnmn@anon-20191002_181700-195:localhost:8800% e'Q  ]$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQm.room.create!MWCLSWWGdWcSivNVLI:localhost:8800mj(mjv@anon-20191002_181700-195:localhost:8800!$e)Q ]$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8m.room.message!erBPdgtUsiOfIKUkho:localhost:8800mb2mb@anon-20191002_181700-194:localhost:8800,#e?Q ]$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0m.room.history_visibility!erBPdgtUsiOfIKUkho:localhost:8800m^m`x@anon-20191002_181700-194:localhost:8800$"e/Q ]$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wm.room.join_rules!erBPdgtUsiOfIKUkho:localhost:8800m\Cm]@anon-20191002_181700-194:localhost:8800&!e3Q ]$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggm.room.power_levels!erBPdgtUsiOfIKUkho:localhost:8800mWmX@anon-20191002_181700-194:localhost:8800 e'Q ]$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEm.room.member!erBPdgtUsiOfIKUkho:localhost:8800mUnmU@anon-20191002_181700-194:localhost:8800 e'Q  ]$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4m.room.create!erBPdgtUsiOfIKUkho:localhost:8800mRCmR@anon-20191002_181700-194:localhost:8800!e)Q ]$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcm.room.message!dWgOTucBVQBKZjfndN:localhost:8800mLemL@anon-20191002_181700-193:localhost:8800,e?Q ]$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4m.room.history_visibility!dWgOTucBVQBKZjfndN:localhost:8800mIfmJk@anon-20191002_181700-193:localhost:8800,e?Q ]$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIm.room.history_visibility!dWgOTucBVQBKZjfndN:localhost:8800mCmE@anon-20191002_181700-193:localhost:8800$e/Q ]$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsm.room.join_rules!dWgOTucBVQBKZjfndN:localhost:8800mA>mB@anon-20191002_181700-193:localhost:8800&e3Q ]$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkm.room.power_levels!dWgOTucBVQBKZjfndN:localhost:8800m>rm?@anon-20191002_181700-193:localhost:8800 e'Q ]$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQm.room.member!dWgOTucBVQBKZjfndN:localhost:8800m9m;6@anon-20191002_181700-193:localhost:8800 e'Q  ]$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkm.room.create!dWgOTucBVQBKZjfndN:localhost:8800m6m6@anon-20191002_181700-193:localhost:8800!e)Q ]$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUm.room.message!hSzBsirdPWHtVjagXn:localhost:8800m/Hm/@anon-20191002_181700-192:localhost:8800,e?Q ]$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwm.room.history_visibility!hSzBsirdPWHtVjagXn:localhost:8800m,m-@anon-20191002_181700-192:localhost:8800,e?Q ]$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosm.room.history_visibility!hSzBsirdPWHtVjagXn:localhost:8800m)(m+>@anon-20191002_181700-192:localhost:8800$e/Q ]$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Um.room.join_rules!hSzBsirdPWHtVjagXn:localhost:8800m&m'q@anon-20191002_181700-192:localhost:8800&e3Q ]$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQm.room.power_levels!hSzBsirdPWHtVjagXn:localhost:8800m$5m%E@anon-20191002_181700-192:localhost:8800 e'Q ]$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMm.room.member!hSzBsirdPWHtVjagXn:localhost:8800m"m"@anon-20191002_181700-192:localhost:8800 e'Q  ]$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIm.room.create!hSzBsirdPWHtVjagXn:localhost:8800mNm@anon-20191002_181700-192:localhost:8800  eQ_$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 917}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U"], "type": "m.room.history_visibility", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041112872, "hashes": {"sha256": "2xTXco3N/h4+ejHFu0CjzoJiBNpjWs9ErgOI+kXCU30"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cFX3jeb+SVmNVMsLJ4GfbXAqVuUHvGcHNZh2KVbpzlL60zbryjmN6BhQ3IVreNCb7TKQtgvjIqSMKDJfHZY3Dg"}}, "unsigned": {"age_ts": 1570041112872}}seQ_u$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 916}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ"], "type": "m.room.join_rules", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041112230, "hashes": {"sha256": "ooYV6Zh4WYZ7mrYYcZmDLd8RlGTHc9PC0QV5IHgNqio"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "anRenQ9hMnQ/kPAfn/YQBLK7F7v/sR4TtfknRHKybhltLvi+MFCItQRG6FnmR3elz5R1Jhldz9BSCzSoe+dNCg"}}, "unsigned": {"age_ts": 1570041112230}}jeQ_c$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 915}{"auth_events": ["$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "type": "m.room.power_levels", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"users": {"@anon-20191002_181700-192:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041111605, "hashes": {"sha256": "/hYzWlyj7g01ilsB3tndNxynGKSkRtXGgTo7B3twktM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WyH7tm8Lm5NJ5JZoz1diNUTI+HAjDDWf03GolOU3RCIqEdmnflxcG/zdJyyyjLswnkro4a/OsMFGGBdXqXWzBA"}}, "unsigned": {"age_ts": 1570041111605}}ueQ_y$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 914}{"auth_events": ["$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI"], "prev_events": ["$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI"], "type": "m.room.member", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-192", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-192:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041111063, "hashes": {"sha256": "OldJE3/+oUDqD+D4B6Vbb4ItZ20+VLD9PXMXMbLXvEg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fUH5KMkHwGnX00/hSc6uyDieYwRN4dbJlLIjNq7M/CHVTA9z2Ijk51gpysVI6MsPQfW8UkZEdaZ+g2HJUaA3Cg"}}, "unsigned": {"age_ts": 1570041111063}} [\1Z/ X -  V +  T )oD } R ' { P %yN#wL!umBk@JsHqF*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!kjjUsMowsioSQRIJeg:localhost:8800 Q *Q!kjjUsMowsioSQRIJeg:localhost:8800 P *Q!kjjUsMowsioSQRIJeg:localhost:8800 O *Q!kjjUsMowsioSQRIJeg:localhost:8800 N *Q!kjjUsMowsioSQRIJeg:localhost:8800 M *Q!kjjUsMowsioSQRIJeg:localhost:8800 L ~*Q!kjjUsMowsioSQRIJeg:localhost:8800 K }*Q!kjjUsMowsioSQRIJeg:localhost:8800 J |*Q!kjjUsMowsioSQRIJeg:localhost:8800 I {*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jomrpmwwQQtghscizn:localhost:8800)*Q!jomrpmwwQQtghscizn:localhost:8800(*Q!jomrpmwwQQtghscizn:localhost:8800'*Q!jomrpmwwQQtghscizn:localhost:8800&*Q!jomrpmwwQQtghscizn:localhost:8800%*Q!jomrpmwwQQtghscizn:localhost:8800$*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kOmCTyiizHqfCJdhlR:localhost:8800 ] *Q!kOmCTyiizHqfCJdhlR:localhost:8800 \ *Q!kOmCTyiizHqfCJdhlR:localhost:8800 [ *Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z *Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y *Q!kOmCTyiizHqfCJdhlR:localhost:8800 X *Q!kOmCTyiizHqfCJdhlR:localhost:8800 W *Q!kOmCTyiizHqfCJdhlR:localhost:8800 V *Q!kOmCTyiizHqfCJdhlR:localhost:8800 U *Q!kOmCTyiizHqfCJdhlR:localhost:8800 T *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 5*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 4*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 3*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 2*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 1*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 0*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 /*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 .*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 -*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,*Q!jveVPZSXJOJyNDebPO:localhost:8800LR*Q!jveVPZSXJOJyNDebPO:localhost:8800KQ*Q!jveVPZSXJOJyNDebPO:localhost:8800JP*Q!jveVPZSXJOJyNDebPO:localhost:8800IO*Q!jveVPZSXJOJyNDebPO:localhost:8800HN*Q!jveVPZSXJOJyNDebPO:localhost:8800GM*Q!jveVPZSXJOJyNDebPO:localhost:8800FL*Q!jveVPZSXJOJyNDebPO:localhost:8800EK*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800(Q!jYzridjeihmwPBuwLb:localhost:8800YX(Q!jYzridjeihmwPBuwLb:localhost:8800XW(Q!jYzridjeihmwPBuwLb:localhost:8800WV(Q!jYzridjeihmwPBuwLb:localhost:8800VU PoF {@ y N # L ! u J  % <g >i w k Pi@ s HmB qFoD'T)   {*Q!laUExtszUaoCpZoyEq:localhost:8800 (Q!kxTDuIasPNpXtiRsif:localhost:8800(Q!kxTDuIasPNpXtiRsif:localhost:8800~~(Q!kxTDuIasPNpXtiRsif:localhost:8800}}*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800(Q!loalEsWaTYwrVUNJLr:localhost:8800))(Q!loalEsWaTYwrVUNJLr:localhost:8800(((Q!loalEsWaTYwrVUNJLr:localhost:8800''(Q!loalEsWaTYwrVUNJLr:localhost:8800&&(Q!loalEsWaTYwrVUNJLr:localhost:8800%%(Q!loalEsWaTYwrVUNJLr:localhost:8800$$*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OO*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QQ*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PP*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RR*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!mBQpGaIiadEuKBXfOw:localhost:8800MM*Q!mBQpGaIiadEuKBXfOw:localhost:8800LL*Q!mBQpGaIiadEuKBXfOw:localhost:8800KK*Q!mBQpGaIiadEuKBXfOw:localhost:8800JJ*Q!mBQpGaIiadEuKBXfOw:localhost:8800II*Q!mBQpGaIiadEuKBXfOw:localhost:8800HH*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mMsxpaIlcykPuOnDyl:localhost:8800~~*Q!mMsxpaIlcykPuOnDyl:localhost:8800}}*Q!mMsxpaIlcykPuOnDyl:localhost:8800||*Q!mMsxpaIlcykPuOnDyl:localhost:8800{{*Q!mMsxpaIlcykPuOnDyl:localhost:8800zz*Q!mMsxpaIlcykPuOnDyl:localhost:8800yy*Q!mMsxpaIlcykPuOnDyl:localhost:8800xx*Q!mMsxpaIlcykPuOnDyl:localhost:8800ww*Q!mMsxpaIlcykPuOnDyl:localhost:8800vv*Q!mMsxpaIlcykPuOnDyl:localhost:8800uu*Q!mBQpGaIiadEuKBXfOw:localhost:8800GG*Q!mBQpGaIiadEuKBXfOw:localhost:8800FF*Q!lEJUJZxqZPKZetemiR:localhost:8800 7 7*Q!lEJUJZxqZPKZetemiR:localhost:8800 6 6*Q!lEJUJZxqZPKZetemiR:localhost:8800 5 5*Q!lEJUJZxqZPKZetemiR:localhost:8800 4 4*Q!lEJUJZxqZPKZetemiR:localhost:8800 3 3*Q!lEJUJZxqZPKZetemiR:localhost:8800 2 2*Q!lEJUJZxqZPKZetemiR:localhost:8800 1 1*Q!lEJUJZxqZPKZetemiR:localhost:8800 0 0*Q!lEJUJZxqZPKZetemiR:localhost:8800 / /*Q!lEJUJZxqZPKZetemiR:localhost:8800 . .*Q!lEJUJZxqZPKZetemiR:localhost:8800 - -*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NN*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800MM*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lEJUJZxqZPKZetemiR:localhost:8800 8 8*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 a0pH  h@ x PXxP(px P ( ` 8  `8h@`8 p H XH X 0  ( h @  0'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800}'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:88000'Q!cOFSwLSkxZECJMvjjZ:localhost:8800~'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!bzPCFeFSMbCESvNbxl:localhost:88003'Q!bzPCFeFSMbCESvNbxl:localhost:88002'Q!bzPCFeFSMbCESvNbxl:localhost:88001'Q!cHtqiAyCHEAoBIbCmL:localhost:8800H'Q!cHtqiAyCHEAoBIbCmL:localhost:8800G'Q!cHtqiAyCHEAoBIbCmL:localhost:8800F'Q!cHtqiAyCHEAoBIbCmL:localhost:8800E'Q!cHtqiAyCHEAoBIbCmL:localhost:8800D'Q!bzPCFeFSMbCESvNbxl:localhost:88007'Q!bzPCFeFSMbCESvNbxl:localhost:88006'Q!bzPCFeFSMbCESvNbxl:localhost:88005'Q!bzPCFeFSMbCESvNbxl:localhost:88004'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!cGkVFpidyBBxUxsszG:localhost:8800M'Q!cGkVFpidyBBxUxsszG:localhost:8800L'Q!cSUQGmpIsSCBAVTOHo:localhost:8800t'Q!cHtqiAyCHEAoBIbCmL:localhost:8800K'Q!cHtqiAyCHEAoBIbCmL:localhost:8800J'Q!cHtqiAyCHEAoBIbCmL:localhost:8800I'Q!cGkVFpidyBBxUxsszG:localhost:8800O'Q!cGkVFpidyBBxUxsszG:localhost:8800N'Q!cGkVFpidyBBxUxsszG:localhost:8800U'Q!cGkVFpidyBBxUxsszG:localhost:8800T'Q!cGkVFpidyBBxUxsszG:localhost:8800S'Q!cGkVFpidyBBxUxsszG:localhost:8800R'Q!cGkVFpidyBBxUxsszG:localhost:8800Q'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cSUQGmpIsSCBAVTOHo:localhost:8800x'Q!cSUQGmpIsSCBAVTOHo:localhost:8800w'Q!cSUQGmpIsSCBAVTOHo:localhost:8800v'Q!cSUQGmpIsSCBAVTOHo:localhost:8800u'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cGkVFpidyBBxUxsszG:localhost:8800P'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cHtqiAyCHEAoBIbCmL:localhost:8800B'Q!cOFSwLSkxZECJMvjjZ:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800 G'Q!dBfASZrfiFeSKTjYJm:localhost:8800 F'Q!dBfASZrfiFeSKTjYJm:localhost:8800 E'Q!dBfASZrfiFeSKTjYJm:localhost:8800 D'Q!dBfASZrfiFeSKTjYJm:localhost:8800 C'Q!dBfASZrfiFeSKTjYJm:localhost:8800 B'Q!dBfASZrfiFeSKTjYJm:localhost:8800 A'Q!csWEXfVEVxdviNvgAd:localhost:8800('Q!csWEXfVEVxdviNvgAd:localhost:8800''Q!csWEXfVEVxdviNvgAd:localhost:8800&'Q!csWEXfVEVxdviNvgAd:localhost:8800%'Q!csWEXfVEVxdviNvgAd:localhost:8800"'Q!csWEXfVEVxdviNvgAd:localhost:8800!'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800|'Q!cOFSwLSkxZECJMvjjZ:localhost:8800{'Q!dBfASZrfiFeSKTjYJm:localhost:8800 I'Q!dBfASZrfiFeSKTjYJm:localhost:8800 H'Q!cidyuyekVzJHHvyomb:localhost:8800 ,'Q!cidyuyekVzJHHvyomb:localhost:8800 +'Q!cidyuyekVzJHHvyomb:localhost:8800 *'Q!cidyuyekVzJHHvyomb:localhost:8800 )'Q!cidyuyekVzJHHvyomb:localhost:8800 ('Q!cidyuyekVzJHHvyomb:localhost:8800 ' O 5OueQ_y$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 921}{"auth_events": ["$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk"], "prev_events": ["$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk"], "type": "m.room.member", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-193", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-193:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041117154, "hashes": {"sha256": "bKnDqIDs3HceNiPpom2RjYYRbkQMM5lWlEL/MEbGqDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ulb3hMGA+w3dlH3+ZK9cqntv8DcNRU4/wA3nVlzAxH4eI4rR6jJ1xQJf2o/lZAHi0Vg61irDvWoxhVdB7iGSDg"}}, "unsigned": {"age_ts": 1570041117154}}heQ__$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 920}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-193:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041116288, "hashes": {"sha256": "y5KbEqdllQEYE3q61F3wQxUNuwyDgaUUO0XaEmOGHaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GqkE4X7+/rbDa77trzFF+ktmQYULR3DY7VjcYkfDk4axNFoocF3gtAYHUuAizM9x0PvumwdTI9W1szaq2Ry+Dw"}}, "unsigned": {"age_ts": 1570041116288}}}eQi$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "txn_id": "76", "stream_ordering": 919}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw"], "type": "m.room.message", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041114440, "hashes": {"sha256": "YE8FvI+WLzSce2e500LQAQdqByvdrPJxJsDwGVzqsf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mlcWtCf1eP5fnHHB31MDpX9+D6IebjVt42yT4PT1qfi+QcWqWqe+AY8yYxZMfQXuUyJJJ1/gKPoqUWx0FbT0BQ"}}, "unsigned": {"age_ts": 1570041114440}}GeQ_$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 918}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos"], "type": "m.room.history_visibility", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041113831, "hashes": {"sha256": "ta7WlcZhzpLJiJg8i68xC4al6QLfNYt/efN8o+Wppq8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oasm5YesqzNAwJXL6MWHSKESUv7IzzLsrKpIe1c9emFiAp94BfAxgcC0Yt8WLDG9U89IcEwHay6YSrNyqiBQBQ"}}, "unsigned": {"age_ts": 1570041113831, "replaces_state": "$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos"}} #,5 ] * V _7Fo$PYa_eQ' $cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800m.room.createm^eQ? $IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibilitym]eQ? $KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibilitye\eQ/ $kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rulesg[eQ3 $OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels ZeQ']$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800aYeQ' $fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800m.room.createmXeQ? $31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibilitypWeQ))$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800mVeQ? $rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibilityeUeQ/ $0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rulesjTeQ9 $hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_aliasgSeQ3 $qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels ReQ']$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800aQeQ' $jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800m.room.createmPeQ? $4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibilitypOeQ))$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800mNeQ? $8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibilityeMeQ/ $8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rulesjLeQ9 $sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_aliasgKeQ3 $G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels JeQ']$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800aIeQ' $YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800m.room.createmHeQ? $jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibilityeGeQ/ $IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rulesgFeQ3 $-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels EeQ']$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800aDeQ' $edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800m.room.createmCeQ? $Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibilitymBeQ? $bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibilityeAeQ/ $riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rulesg@eQ3 $6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels ?eQ']$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800a>eQ' $PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800m.room.createm=eQ? $n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility "q) Q V z   @Y;T_? Q']e!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsc Q' e!JGhlAUflyNxErGGZZu:localhost:8800m.room.create$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMo Q? e!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIo Q? e!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0gQ/ e!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rules$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkiQ3 e!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0 Q']e!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0cQ' e!tkajvIKHoOMWGsReBs:localhost:8800m.room.create$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1goQ? e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYrQ))e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIoQ? e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00gQ/ e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rules$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0lQ9 e~!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_alias$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikiQ3 e}!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8 ~Q']e|!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIc}Q' e{!fcdNYFWFyxmdpKAknc:localhost:8800m.room.create$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQo|Q? ez!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwr{Q))ey!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAozQ? ex!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8gyQ/ ew!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rules$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8lxQ9 ev!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_alias$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEiwQ3 eu!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE vQ']et!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74ccuQ' es!MWCLSWWGdWcSivNVLI:localhost:8800m.room.create$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQotQ? er!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibility$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0gsQ/ eq!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rules$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wirQ3 ep!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg qQ']eo!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEcpQ' en!erBPdgtUsiOfIKUkho:localhost:8800m.room.create$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4ooQ? em!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4onQ? el!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIgmQ/ ek!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rules$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsilQ3 ej!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk kQ']ei!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ  N<eQ_+$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 957}{"auth_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0", "$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0"], "type": "m.room.history_visibility", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041151884, "hashes": {"sha256": "0+IreckMr1jS4/drZE+znYOMXIAfXtZNXDHpnQ1K/Lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "adLJGdPMGizEPknwlQp8S55r9RJvSj8Ei5jb9krdjRzyRW8V3LVxxwFRv0fr+ZTloFX0HmYpEjllVq26Bgi0Cg"}}, "unsigned": {"age_ts": 1570041151884, "replaces_state": "$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0"}};eQ_$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 956}{"auth_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0", "$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk"], "type": "m.room.history_visibility", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041150502, "hashes": {"sha256": "StIdO1zYF0OsqUkkztk+9LCVUEBi/HkoFBLNaZ9fiD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c43/CbOF0httb1M5KXOkvaHArXwSbdDiC1lUiqADpQBMJhxYv9+73p0h51CXAv6wvYFn6fuE+ey2ykaSte44Cg"}}, "unsigned": {"age_ts": 1570041150502}}s:eQ_u$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 955}{"auth_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0", "$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0"], "type": "m.room.join_rules", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041149759, "hashes": {"sha256": "yw6R/WcGPHb5TtZHK+58Up/AxAOfleDVlXK3wngMBa4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "00UTCcNa8jTD+xWO7S5n0bWUeJ74yHUM+0TgWQGZLLmH5fLWaW+254vrQo8ecg124T+lmWMLYOCbejJfBuwDDA"}}, "unsigned": {"age_ts": 1570041149759}}j9eQ_c$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 954}{"auth_events": ["$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "type": "m.room.power_levels", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"users": {"@anon-20191002_181700-198:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041149132, "hashes": {"sha256": "d8BdG+kE7szOO6GQBlV3xyGt+CvEPcJa+rjh9A5QTmw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ULDlp607x5SR327H8nFqx4R2iu1x+3c5cG6LwLG1Eu9yMRO7jaTh+fNTe5IqzNbHGiXdkAiypzUknJAQFCYaDg"}}, "unsigned": {"age_ts": 1570041149132}}  FeQ_$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 925}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI"], "type": "m.room.history_visibility", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041121126, "hashes": {"sha256": "pTvaCWLA0FbiY0TX2Ony8yYLfBayprPw/wt/bmWZKcY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xW4H0/pWKCvphrzaVwkp7Y8yxECQIkj7aU4WnuHij5PETSuJjRhgP4jJSBRV8mA+W7f3k9a/Ycfz47UdCE/yCA"}}, "unsigned": {"age_ts": 1570041121126, "replaces_state": "$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI"}}eQ_$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 924}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs"], "type": "m.room.history_visibility", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041119656, "hashes": {"sha256": "p4LfTxZ8sn4mGhEJE/LoxkqW2+fAHadyH8bFWqey0dI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eL6fmXq+gOvJ3fpOpkBt1iM9nGfp9ywX/8UCqjcnW/fwUQrb4hnD5pFK+TDw3PV28fcnz3odxR3SbY/lCJI7BQ"}}, "unsigned": {"age_ts": 1570041119656}}seQ_u$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 923}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk"], "type": "m.room.join_rules", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041119038, "hashes": {"sha256": "chN6vHfJveAxzbIrWfaGz6WRMYIOoRcYUyKeXk0ep5g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y3q7Mo4Xdx+CtqooLjtlRCPl+ToQ4pBEVpDUG7mx364V0axFI8+aOxdQc2rxyU7hMfQ+Xwfgx8fmpOpVJA/VCQ"}}, "unsigned": {"age_ts": 1570041119038}}jeQ_c$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 922}{"auth_events": ["$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "type": "m.room.power_levels", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"users": {"@anon-20191002_181700-193:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041118322, "hashes": {"sha256": "xQA09HH+Hus491r6KLWrrnbN2URjwVviyQzr0l8ut58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d32Rww8vHzelXK5ZBqCpiJpXDpNYyqxzKFkM6SGhodTEGLE29/XGX3QpHkr75U//AfI0uBc4QvCBGa7RI8ykCw"}}, "unsigned": {"age_ts": 1570041118322}} Hj8"p> v D b0 | J  P  V $ \ *h6n< tBTzHN1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUl1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUk1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAi1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAh1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAg1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk z1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwG1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwF1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwE1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwD1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwC1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c 1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ C1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI B1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI A1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU\1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU[1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUZ1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI @1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI ?1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U#1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkJ1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkI1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkH1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w 1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w 1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w 1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI\1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoU1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoT1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YM1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YL1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YK1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew 1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew 1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs p1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs o1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs n1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA ~z v r n j fb^ZVRNJFMeeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800LeeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800KeeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800JeeQ$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800IeeQ$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800HeeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800GeeQ$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800FeeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800EeeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800DeeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800CeeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800BeeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800AeeQ$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800@eeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800?eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800>eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800=eeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800<eeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800;eeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800:eeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:88009eeQ$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:88008eeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:88007eeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:88006eeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:88005eeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:88004eeQ$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:88003eeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:88002eeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:88001eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:88000eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800   j eQ_c$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 929}{"auth_events": ["$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "type": "m.room.power_levels", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"users": {"@anon-20191002_181700-194:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041124831, "hashes": {"sha256": "gi71+qoMLqPMy86ouvFTViB3/VSQSwzP804FGRp98TA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ib7/IRuHpHH409mHIC+6naXnHAL0vrd+hJluW2Hp413TDVEEvK5NspwXDuR+giZOub8Ovglp0i9q/NK82taeBg"}}, "unsigned": {"age_ts": 1570041124831}}ueQ_y$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 928}{"auth_events": ["$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4"], "prev_events": ["$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4"], "type": "m.room.member", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-194", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-194:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041124206, "hashes": {"sha256": "Vw0Si9m//gFWKD0YmnWPfrP76I6DeYL3P6CnVr9/Y/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Lt1PCL4S81VJBBEN7kOR7/WmyUCzkCe6v9xp1En5nDgYEwa+VtIhBEiCFcB4pfpNxp1zlmRe9jgNjVPXJZHCw"}}, "unsigned": {"age_ts": 1570041124206}}heQ__$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 927}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-194:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041123395, "hashes": {"sha256": "KPJNZYT2egJQfpaZD/XBYsmjdHbPMrn40Vyj1Guzm7s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FFYGpFtsbwvuVBKXFmnB+kZBQ0EdaW6qK5WN/f1h9XvwzEL6u2gzqmGHfoYqZyuVZ30UKM4ai+tCHyOuimXiDg"}}, "unsigned": {"age_ts": 1570041123395}}}eQi$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "txn_id": "77", "stream_ordering": 926}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4"], "type": "m.room.message", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041121893, "hashes": {"sha256": "kjpVbZFQt9peIoZN6c6twcNK+tHg4RDOmq4Qv6F8Xh0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "viAyFxzU0/4btUn8PUWI1MV83ZKAKpBgXzNLj3NbVLk8/QbgBtg6b6u5WT8Pf81P6LhE7NyOh75tw8SL1UmNBg"}}, "unsigned": {"age_ts": 1570041121893}} >CG K O  S  W  [ _ c$g(k,o0s4w8{<<@]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDWm4]!@anon-20191002_181700-221:localhost:8800REITENATXKm4<=]!@anon-20191002_181700-220:localhost:8800OOLATWHSMPm4<<]!@anon-20191002_181700-219:localhost:8800KBEVVOFICUm4<;]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQm4<:]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWWm4<9]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJm4<8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFOm4<7]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWPm4<6]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGHm4<5]!@anon-20191002_181700-212:localhost:8800RTYZTLKABNm4<4]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSMm4<3]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDFm4<2]!@anon-20191002_181700-209:localhost:8800LYXETIOPNTm4<1]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEYm4<0]!@anon-20191002_181700-207:localhost:8800FTYKIESLCCm4  X  ~ . > N^n~.>N^n~.]$yx?]$O]Q@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800`O]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800^O]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800]O]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800\O]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800[O]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800ZO]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800YO]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800XO]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800WO]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800VO]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800UO]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800TO]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800QO]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800GO]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800IO]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800KO]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800OO]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800SO]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800MO]Q@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800PO]Q@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800FO]Q@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800HO]Q@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800JO]Q@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800NO]Q@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800RO]Q@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800LO]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800DO]Q@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800EO]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800CO]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800BO]Q@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800AO]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800@O]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800?O]Q@anon-20191002_181700-103:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800>O]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800=O]Q@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800;O]Q@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800<9/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:88009/Q@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88009/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:88008/Q@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:88008/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800|:1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800:1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800:1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800:1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800:1Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:88008/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800z:1Q@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800 V?=\ _ 2  ~Ji/ R % q D  c 6 V )v{N!mAa4tGT'yM m,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!itfjLXhEaORJLkbfVS:localhost:880044,Q!itfjLXhEaORJLkbfVS:localhost:880033,Q!itfjLXhEaORJLkbfVS:localhost:880022,Q!itfjLXhEaORJLkbfVS:localhost:880011+Q !itfjLXhEaORJLkbfVS:localhost:880000,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800+Q !jDKAOtmeAGbYTpwyEW:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800+Q !itKDOCtoMkFUETDtle:localhost:8800,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 +Q !ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800   ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 +Q !hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 +Q !iLHJbsFszubrnybDNz:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!ifQxHmNAcSSGHVMjfi:localhost:8800+Q !ifQxHmNAcSSGHVMjfi:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800+Q !icheSPMgpemswIdQkw:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800+Q !iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iKezIvJyjkNqKayFju:localhost:8800 q q,Q!iKezIvJyjkNqKayFju:localhost:8800 p p,Q!iKezIvJyjkNqKayFju:localhost:8800 o o,Q!iKezIvJyjkNqKayFju:localhost:8800 n n,Q!iKezIvJyjkNqKayFju:localhost:8800 m m,Q!iKezIvJyjkNqKayFju:localhost:8800 l l,Q!iKezIvJyjkNqKayFju:localhost:8800 k k,Q!iKezIvJyjkNqKayFju:localhost:8800 j j,Q!iKezIvJyjkNqKayFju:localhost:8800 i i+Q !iKezIvJyjkNqKayFju:localhost:8800 h h,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jIfvTrwedrWLubsnlM:localhost:8800+Q !jIfvTrwedrWLubsnlM:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800+Q !jGQNGXehugtTvjUGKI:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800 V?=\ _ 2  ~Ji/ R % q D  c 6 V )v{N!mAa4tGT'yM m,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!itfjLXhEaORJLkbfVS:localhost:880044,Q!itfjLXhEaORJLkbfVS:localhost:880033,Q!itfjLXhEaORJLkbfVS:localhost:880022,Q!itfjLXhEaORJLkbfVS:localhost:880011+Q !itfjLXhEaORJLkbfVS:localhost:880000,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800+Q !jDKAOtmeAGbYTpwyEW:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800+Q !itKDOCtoMkFUETDtle:localhost:8800,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 +Q !ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800   ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 +Q !hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 +Q !iLHJbsFszubrnybDNz:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!ifQxHmNAcSSGHVMjfi:localhost:8800+Q !ifQxHmNAcSSGHVMjfi:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800+Q !icheSPMgpemswIdQkw:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800+Q !iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iKezIvJyjkNqKayFju:localhost:8800 q q,Q!iKezIvJyjkNqKayFju:localhost:8800 p p,Q!iKezIvJyjkNqKayFju:localhost:8800 o o,Q!iKezIvJyjkNqKayFju:localhost:8800 n n,Q!iKezIvJyjkNqKayFju:localhost:8800 m m,Q!iKezIvJyjkNqKayFju:localhost:8800 l l,Q!iKezIvJyjkNqKayFju:localhost:8800 k k,Q!iKezIvJyjkNqKayFju:localhost:8800 j j,Q!iKezIvJyjkNqKayFju:localhost:8800 i i+Q !iKezIvJyjkNqKayFju:localhost:8800 h h,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jIfvTrwedrWLubsnlM:localhost:8800+Q !jIfvTrwedrWLubsnlM:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800+Q !jGQNGXehugtTvjUGKI:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800 FW0p> v D  | J  P  Vh6 $ \ *bj8n< tBzHOW1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ41e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ31e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ20e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko^0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko]0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko\1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0 1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0 1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0 1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw~1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw}1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g+1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g*1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gp1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0go1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gn1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840141e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840141e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840141e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEL1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEK1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEJ1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ }1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ |1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ {1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8X1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8W1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8V1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY 1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ #1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4 1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI 1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI 1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI 1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU1e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM41e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g)1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoL1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoK1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoJ  ih g 4i 5 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6Two1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwo a} { y w u sqomkigeca~eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~~eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~}eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~|eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~{eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~zeeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~yeeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~xeeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~weeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~veeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~ueeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~teeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~seeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~reeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~qeeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~peeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~oeeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~neeQ$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~meeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800~leeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800~keeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800~jeeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800~ieeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800~heeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800~geeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800~feeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800  h$eQ__$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 933}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-195:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041129512, "hashes": {"sha256": "IGTEDqS3NwqdHIkklp/8rKiS55js7Jmi9aN/fYhTqYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jv5ItY6jym6IbfsnIYHd1bVqOe6WqN7CdQA85JWfpPdxzQHMGtiNIW2z3neId0MtOogXR4qa6y/nZDGvIOsnAA"}}, "unsigned": {"age_ts": 1570041129512}}}#eQi$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "txn_id": "78", "stream_ordering": 932}{"auth_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg", "$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0"], "type": "m.room.message", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041127474, "hashes": {"sha256": "A2o1ObBBH8qkvivGYrygceE/y6oUaf/zNx6HcqVx23g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bYeVBlZdtkV5G6pV85jUYiz2/zZ0HXw49ZnvRxvieNZrycv4cyvaa3XMW+RN90y9B1vb0eSa67xtHbcs8fW2DQ"}}, "unsigned": {"age_ts": 1570041127474}}"eQ_$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 931}{"auth_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg", "$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w"], "type": "m.room.history_visibility", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041126581, "hashes": {"sha256": "HWe+8R65gjDOs+Wn6JZe4ya6dwGe1ULfG2fGjfHXIT0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QhylGBv7eW5PgwcspM05BzGZ//ib+JxlRturSXmsdAO1JjE50qwWdZ55bF41zO4nz1gDYw7Wh+O0JBX+mK2RBQ"}}, "unsigned": {"age_ts": 1570041126581}}s!eQ_u$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 930}{"auth_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg", "$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg"], "type": "m.room.join_rules", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041125955, "hashes": {"sha256": "ClWaJ6CA0aX2rUPpMIgO35DD8+GrMcEJq0JMd23kLPg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uI+RI27XnGBasL7HGfFpGjEiNfAWYNQKDdnBdENxoZkTS/1/MxsJLIlVPXDLYfZvZNbJTMtZ3t7DzTuvbgL6DQ"}}, "unsigned": {"age_ts": 1570041125955}} ,NC 8 - { " p  e ZOD9.|#qf VLeL$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAsha2569T N 6X8ARb/) VKeL$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcsha2567M7!ԀdxER>xA7VJeL$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgsha256/ ŧ \QwߋI$!=08VIeL$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4sha256U*  c 1=TdhHi>nVHeL$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8sha256O+-.[\Mm.,i2'??VGeL$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8sha256$J X6@̣h p+zm9̟VFeL$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70sha256] m̪GsX TZ'oVEeL$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcsha256u#r $”>a g4Yd@t$CGVDeL$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4sha256o֦]q>&po̡&[Z(NzVCeL$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgsha256ڗdMCTA}2 ~FVBeL$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIsha256'qF_ !qazp9bVAeL$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQsha2564+}9J,5_j<̐NjՋU׬hDV@eL$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgsha256?a">q2!4eHlTxV?eL$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45ksha256rGtcD$1'eߜV>eL$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpssha2562ARDNsgbT$~V=eL$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMsha256pOdkp`QZ?qV<eL$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIsha256 "&%KJL ̐\ 9V;eL$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0sha256*#֤N_&IOb $u:7y*=V:eL$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLksha2566# 5^WvL߱V9eL$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0sha256:aKGOzeWFB5-[lꎞpV8eL$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0sha256_V 5fI)hJ)k V:iŰV4eL$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wsha256CA|T[〙b5 }rٺqV3eL$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIsha2562X`R/Îg^,OsQ^%RV2eL$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00sha256 X:~G%'hdbgMV1eL$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0sha256 Pv c%bѴbOa8OV0eL$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fviksha256=f_XO$\3ЉW:Nž)V/eL$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8sha256HqhP&5 cKAdoV.eL$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIsha256\@APQmP5ZfV-eL$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQsha256Bpp6. AJLgKhqV,eL$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgsha256w>xD5&Z@ss|= +U[g0yV+eL$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwsha256XL56og䩻~3|x?^@lV*eL$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAsha2562IqyÍ~`?ȬzW_ʀV)eL$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8sha2567Fu[{]̭~mח|l- rָKV(eL$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8sha256.Tm ^OY0Aa`S`JV'eL$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEsha256ᚚ=o `n3Be^U^x Zg^V&eL$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEsha256q￯w,7n )b qUuŰV%eL$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74csha256r>p]71a%E@25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXBeVl44LUc7VHc7VnVCLQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC8MWi9BCBjMe8Iol7_FlZLzWel11x7K3eungbpV0kByCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m؍=]c!E@anon-20191002_181700-199:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8QoUANUDVZWCS127.0.0.1Perl + Net::Async::HTTP/0.44m<{<1a%E@24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMSZOay5naWRnbkpGSm5ZbwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIKBWQyWY5hgZBnE-se3uKiVfly8hRLpUhBLZqOOEW7seCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m;]c!E@anon-20191002_181700-198:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwoMKVWNPADZZ127.0.0.1Perl + Net::Async::HTTP/0.44m{:1a%E@23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbV96RjtHb2t3YTlYLDcjYgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIElRnIis52jvPcLdLVPjrmWcDWODcOj4buElXA8jMUolCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m)9]c!E@anon-20191002_181700-197:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0woQFRRVNJLDZ127.0.0.1Perl + Net::Async::HTTP/0.44m{81a%E@22:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQV5hazNoM0tPNWZxa1NrSQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBZOXTG7MCWWYCqevi_fF2y634we-GSf2Z3Q7ZUVMWmaCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m7]c!E@anon-20191002_181700-196:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFktYixvQUtYZWF0VUBuWk0KMDAyZnNpZ25hdHVyZSDs1SpADqu4MI3Kkq0UCmbydwdHoJTXpqEYg9OJG7YBnAoRTTTFCSQDL127.0.0.1Perl + Net::Async::HTTP/0.44mh̓6]c!E@anon-20191002_181700-195:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwweW9JRFk5aGt3VmE9a3QKMDAyZnNpZ25hdHVyZSDHqwHHHtg_uF13OA88pF-q5kS_mwIyEV79B7ibema-lgoBSLOCEIQRD127.0.0.1Perl + Net::Async::HTTP/0.44mh˂{51a%E@21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLkJrQm5VakZGZGhsNU5PMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlICqXq1qwtskmVrJQMMDVdeu1qG_0zXa2l4F6RetlyoxKCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44md   s(eQ_u$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 937}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE"], "type": "m.room.join_rules", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041132705, "hashes": {"sha256": "3z+fe34v6vzkRoyEH+aJ8eEDk6au1SOzt6TzAKrlEcU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l0wmDHCFHZ4zC1xJQueRuXw7u/G+0CBtcvwBHu4ggRQB6Nuo8vOjvZ4Ot/r0z/5fpJMAYCErRBo1aR/PRekhBA"}}, "unsigned": {"age_ts": 1570041132705}}'eQ_9$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 936}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE"], "type": "m.room.canonical_alias", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"alias": "#test-20191002_181700-32:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041132031, "hashes": {"sha256": "1ZqCZ32E2jFKj1psyu0+iedA2sguGIZnLM7xgj7PC7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CfOZK4dx/hiF6+bOTlbj1WRFIjAU15Jd3Ag6XJ3OvYeXldXZk22qrKnhlcoiXUjpzKAli6o+wasfhqKUQzkmBQ"}}, "unsigned": {"age_ts": 1570041132031}}j&eQ_c$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 935}{"auth_events": ["$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "type": "m.room.power_levels", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"users": {"@anon-20191002_181700-195:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041131315, "hashes": {"sha256": "bIR7ICXOA60iZCc+uU8VdN/+/NWZ3/FHYf559aRxivE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q6yEaFIdTZJCd1DXEn+ymso+whoeyipH5BiwLh3AuWj9X5KrYiaWp6kin6yBrCVy4iegRSl8pzDKnANBtZb5AA"}}, "unsigned": {"age_ts": 1570041131315}}u%eQ_y$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 934}{"auth_events": ["$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ"], "prev_events": ["$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ"], "type": "m.room.member", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-195", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-195:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041130625, "hashes": {"sha256": "EPPgJB5yuvPlSziE+QHhWRoNCTWFxKqzSIdhf3QClX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NRsrhfuXeqrljJxG/lSWDO50NGYuWS1F5aV4o+MNukHK8FGmCf6pynOrMMY64xvK8ztglsiza7C+0ghROw/WCg"}}, "unsigned": {"age_ts": 1570041130625}} X S h  iox*" ?e'Q ]$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsm.room.member!JGhlAUflyNxErGGZZu:localhost:8800m`m@anon-20191002_181700-199:localhost:8800> e'Q  ]$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMm.room.create!JGhlAUflyNxErGGZZu:localhost:8800mȑm@anon-20191002_181700-199:localhost:8800,=e?Q ]$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIm.room.history_visibility!tkajvIKHoOMWGsReBs:localhost:8800mm@anon-20191002_181700-198:localhost:8800,<e?Q ]$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0m.room.history_visibility!tkajvIKHoOMWGsReBs:localhost:8800m&m\@anon-20191002_181700-198:localhost:8800$;e/Q ]$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkm.room.join_rules!tkajvIKHoOMWGsReBs:localhost:8800m?m>@anon-20191002_181700-198:localhost:8800&:e3Q ]$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0m.room.power_levels!tkajvIKHoOMWGsReBs:localhost:8800mm@anon-20191002_181700-198:localhost:8800 9e'Q ]$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0m.room.member!tkajvIKHoOMWGsReBs:localhost:8800mm"@anon-20191002_181700-198:localhost:88008 e'Q  ]$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gm.room.create!tkajvIKHoOMWGsReBs:localhost:8800mm^@anon-20191002_181700-198:localhost:8800!7e)Q ] $GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKsm.room.message!fcdNYFWFyxmdpKAknc:localhost:8800 m$m@anon-20191002_181700-197:localhost:8800,6e?Q ] $31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYm.room.history_visibility!fcdNYFWFyxmdpKAknc:localhost:8800 mm@anon-20191002_181700-197:localhost:8800!5e)Q ]$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wm.room.message!fcdNYFWFyxmdpKAknc:localhost:8800mmb@anon-20191002_181700-197:localhost:8800!4e)Q ]$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIm.room.aliases!fcdNYFWFyxmdpKAknc:localhost:8800mmf@anon-20191002_181700-197:localhost:8800,3e?Q ]$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00m.room.history_visibility!fcdNYFWFyxmdpKAknc:localhost:8800mm@anon-20191002_181700-197:localhost:8800$2e/Q ]$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0m.room.join_rules!fcdNYFWFyxmdpKAknc:localhost:8800mm@anon-20191002_181700-197:localhost:8800)1e9Q ]$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvikm.room.canonical_alias!fcdNYFWFyxmdpKAknc:localhost:8800m}m{@anon-20191002_181700-197:localhost:8800&0e3Q ]$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8m.room.power_levels!fcdNYFWFyxmdpKAknc:localhost:8800m6m6@anon-20191002_181700-197:localhost:8800 /e'Q ]$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIm.room.member!fcdNYFWFyxmdpKAknc:localhost:8800mm@anon-20191002_181700-197:localhost:8800. e'Q  ]$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQm.room.create!fcdNYFWFyxmdpKAknc:localhost:8800mmh@anon-20191002_181700-197:localhost:8800!-e)Q ] $d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgm.room.message!MWCLSWWGdWcSivNVLI:localhost:8800 m$m)@anon-20191002_181700-195:localhost:8800,,e?Q ]$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwm.room.history_visibility!MWCLSWWGdWcSivNVLI:localhost:8800mVm@anon-20191002_181700-195:localhost:8800!+e)Q ]$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAm.room.aliases!MWCLSWWGdWcSivNVLI:localhost:8800m~m~@anon-20191002_181700-195:localhost:8800,*e?Q ]$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8m.room.history_visibility!MWCLSWWGdWcSivNVLI:localhost:8800mym{@anon-20191002_181700-195:localhost:8800$)e/Q ]$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8m.room.join_rules!MWCLSWWGdWcSivNVLI:localhost:8800mvmwo@anon-20191002_181700-195:localhost:8800 he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     ~}|{zyxwutsrqponmlkjihfedcb`_^]\[YXWVUTRQPONMKIHGFEDCA?>=<;:98643210/.-+)('&%$"    ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLlkjhfedcba`^ \ [ Z Y XWVUTSRQPONMLKJIHGFEDCBA@>=<;:98765JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! KJIHGFEDCBA@?>=<;:9876543210/.-,+*)(~'|&{%z$y#x"w!v usqponm F P b ] V $ {  W \ *jh6n< vD+ v I|JQp> %0  %21e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590u1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAe1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4*1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMy1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId41e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w 1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC501e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs21e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKga1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK821e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM#1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA21e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps'1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc1 D20e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcJ1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk:1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIy1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Yk1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacV1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ11e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8x0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicM1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0M1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA "1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI B 1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEU1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE|1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE821e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc21e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 21e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 21e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc  x},eQi$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "txn_id": "79", "stream_ordering": 941}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw"], "type": "m.room.message", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041137444, "hashes": {"sha256": "cProvEv7P3Mo9sEO7UrIi54LBpmEcct8tjexm8s7YaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kao48alKIZFxuDeGpwDaAuiZj/W2U1ntjobgS+9vdApsVSsNBGOfETz+27hXLwLVhcGmsdID8Ywlx7QosbYRAQ"}}, "unsigned": {"age_ts": 1570041137444}}N+eQ_+$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 940}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA"], "type": "m.room.history_visibility", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041135446, "hashes": {"sha256": "QN29xlBLkKLbvHU/zLV80LRfi7On4ITbT4tkyQBjcDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IUhATXm4akkjL58eNyR4rO57kF0SFc7gWBHbXK9sAIuFMZ6VozEOu/+Np1/DyA9iL5ShHQcKzxvsUCt8j/RVBA"}}, "unsigned": {"age_ts": 1570041135446, "replaces_state": "$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8"}}*eQ_M$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 939}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8"], "type": "m.room.aliases", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"aliases": ["#test-20191002_181700-32:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041134616, "hashes": {"sha256": "9YbDDKpZIkfJsz9CzMQVRJbhhr4xUwGNIJjYuUci8ks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uT5nuf9Zf9yis4IvAexqxCjsD3rG1OtLIwtmckWotcf1lUtoItP06eLM59pvcEl76anOsj7vrg3tAiL1uIIUBg"}}, "unsigned": {"age_ts": 1570041134616}})eQ_$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 938}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8"], "type": "m.room.history_visibility", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041133330, "hashes": {"sha256": "4+C9meXcO16cq08YIWQ4qH1YKpj43LiyEEL9V6cNp2U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8p14/I23oWUp8gr3BhhMPON5x6WM0S+FT2iifeKXdBWIGbypn+LaAeeMNsmMbCLMEabmLSvv0VYqrF/J/SuoDg"}}, "unsigned": {"age_ts": 1570041133330}} >H dP R ^ x F  ~ L  , \$*j 8pV|Jj>2 vD   X &81e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 21e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s G1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ 1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2KkT1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4L1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw _1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYp1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4Z1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU h1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QX1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsQ1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwC1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM)1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEX1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER01e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0o1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEe1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MY1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc 1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw581e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYg1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0c1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo>1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU 1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc (1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMr1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr81e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsp1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0s1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc11e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kk1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh001e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwd1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg21e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41 CwFzEe0`- ] ( \ ) Y $ V ! Q RM}JzEywBr? 2]@anon-20191002_181700-270:localhost:8800a4]@anon-20191002_181700-242:localhost:8800m2]@anon-20191002_181700-242:localhost:8800a2]@anon-20191002_181700-241:localhost:8800a4]@anon-20191002_181700-240:localhost:8800m2]@anon-20191002_181700-240:localhost:8800a2[@anon-20191002_181700-23:localhost:8800m80[@anon-20191002_181700-23:localhost:8800a74]@anon-20191002_181700-239:localhost:8800m2]@anon-20191002_181700-239:localhost:8800a2[@anon-20191002_181700-26:localhost:8800m?0[@anon-20191002_181700-26:localhost:8800a>4]@anon-20191002_181700-269:localhost:8800m2]@anon-20191002_181700-269:localhost:8800a4]@anon-20191002_181700-268:localhost:8800m2]@anon-20191002_181700-268:localhost:8800a4]@anon-20191002_181700-267:localhost:8800m2]@anon-20191002_181700-267:localhost:8800a4]@anon-20191002_181700-266:localhost:8800m2]@anon-20191002_181700-266:localhost:8800a4]@anon-20191002_181700-265:localhost:8800m2]@anon-20191002_181700-265:localhost:8800a4]@anon-20191002_181700-264:localhost:8800m2]@anon-20191002_181700-264:localhost:8800a4]@anon-20191002_181700-263:localhost:8800m2]@anon-20191002_181700-263:localhost:8800a4]@anon-20191002_181700-262:localhost:8800m2]@anon-20191002_181700-262:localhost:8800a4]@anon-20191002_181700-261:localhost:8800m2]@anon-20191002_181700-261:localhost:8800a4]@anon-20191002_181700-260:localhost:8800m2]@anon-20191002_181700-260:localhost:8800a2[@anon-20191002_181700-25:localhost:8800m=0[@anon-20191002_181700-25:localhost:8800a<4]@anon-20191002_181700-259:localhost:8800m2]@anon-20191002_181700-259:localhost:8800a4]@anon-20191002_181700-258:localhost:8800m2]@anon-20191002_181700-258:localhost:8800a4]@anon-20191002_181700-257:localhost:8800m2]@anon-20191002_181700-257:localhost:8800a2]@anon-20191002_181700-255:localhost:8800a4]@anon-20191002_181700-254:localhost:8800m2]@anon-20191002_181700-254:localhost:8800a4]@anon-20191002_181700-253:localhost:8800m2]@anon-20191002_181700-253:localhost:8800a4]@anon-20191002_181700-252:localhost:8800m2]@anon-20191002_181700-252:localhost:8800a4]@anon-20191002_181700-251:localhost:8800m2]@anon-20191002_181700-251:localhost:8800a4]@anon-20191002_181700-250:localhost:8800m2]@anon-20191002_181700-250:localhost:8800a2[@anon-20191002_181700-24:localhost:8800m;0[@anon-20191002_181700-24:localhost:8800a:4]@anon-20191002_181700-249:localhost:8800m2]@anon-20191002_181700-249:localhost:8800a4]@anon-20191002_181700-248:localhost:8800m2]@anon-20191002_181700-248:localhost:8800a4]@anon-20191002_181700-247:localhost:8800m2]@anon-20191002_181700-247:localhost:8800a4]@anon-20191002_181700-246:localhost:8800m2]@anon-20191002_181700-246:localhost:8800a4]@anon-20191002_181700-245:localhost:8800m2]@anon-20191002_181700-245:localhost:8800a4]@anon-20191002_181700-244:localhost:8800m2]@anon-20191002_181700-244:localhost:8800a4]@anon-20191002_181700-243:localhost:8800m2]@anon-20191002_181700-243:localhost:8800a  |t l d \ T < LD4,$ eeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800 neeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800leeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800seeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8!laUExtszUaoCpZoyEq:localhost:8800 eeQ$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800eeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800LeeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800xeeQ$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800eeQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800́eeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800 eeQ$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800 HeeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800 BeeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:88004eeQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800 ZeeQ$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800/eeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800eeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800eeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800 +eeQ$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:8800eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800seeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800́eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800́eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800t 4Dm4Pl S  o  6 q U R o6 T R n 75  pQ8 P 8e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUsha2568e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0sha2568e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYsha256f8e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Esha256^8e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEsha2568e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgsha256 8e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMsha256 88e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrksha2568e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98sha256t8e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEsha2568e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEsha2568e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cgsha2568e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMsha2568e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIsha256u8e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0sha2568e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUsha2568e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hgsha2568e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVssha2568e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3ksha256+8e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0sha2568e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yksha2568e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hosha256c8e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Asha2568e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgsha2568e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQsha256'8e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfosha2568e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8sha2568e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwsha256s8e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUsha2568e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIsha2568e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4sha256m8e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQsha256)8e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgsha2568e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMsha2568e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcssha2568e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEsha2567e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTssha2568e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYsha2568e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIsha256.8e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0ssha2568e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0sha2568e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZksha2568e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEsha256 8e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5ssha2568e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8sha256a8e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAsha2568e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0csha256 8e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTEsha2568e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4sha256 8e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gsha256 8e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAsha256 8e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQsha256 8e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIsha256 8e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0sha256 58e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0sha256 8e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4sha256 8e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjssha2568e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQsha2568e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nksha256 8e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8sha256 `8e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwsha2568e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgsha2568e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAsha2568e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08sha2568e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qsha256E8e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wsha256.8e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6Isha256%8e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djsssha256 g * T~=gg[]!c@anon-20191002_181700-207:localhost:8800FTYKIESLCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICthcW5Dd2RoSnR-SF5lQ3YKMDAyZnNpZ25hdHVyZSBMaVQIlYxk5iDLt3ZqIvealffzFFXqSMQ9PEHlBhHh8gogZ]!c@anon-20191002_181700-206:localhost:8800AXGAUUMYLVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt1LS1YcDRrbjdjZEBNI2EKMDAyZnNpZ25hdHVyZSAYRHK0Z7R9RbffAIxQ6fMy4jbgrwX9p-pxyQGa-b1i2gogY]!c@anon-20191002_181700-205:localhost:8800MIXIJDMFDOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9ellVaTBvSWpHQ2Q4SnYKMDAyZnNpZ25hdHVyZSCpItHanU8_7u5Hd4n_6FLrV9BZVJt1cj4KHiC-lweYigogX]!c@anon-20191002_181700-204:localhost:8800HOFBXQYKDHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpLakxYWVUmREppenJxMmEKMDAyZnNpZ25hdHVyZSBN0jSmRAyfm65inJM6fRbjhvy_F10vt604j1fMtsvhHgogW]!c@anon-20191002_181700-203:localhost:8800UCNLRVNQIFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMuO3R3Z0lFdHlFNTFhOEoKMDAyZnNpZ25hdHVyZSA9WCMhYxIQ6llnmPpchLmEr6jOQg0B6NxG_uxP6dlbywogV]!c@anon-20191002_181700-202:localhost:8800TBTWVFPOAOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5jbWhGI3NVbzdRN0ZVOUYKMDAyZnNpZ25hdHVyZSDFOi3T8ib3QFWEJRdS9JEKRlY1pXMW0qqy2gWfbH2x3gogU]!c@anon-20191002_181700-201:localhost:8800OUGKUQQECUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1VeSt5ODEuWm87UjdKY0YKMDAyZnNpZ25hdHVyZSDTpoEgR9XlmVmJc5SliwVUnFErAOv6y_GJpoo2kiEBAwogT]!c@anon-20191002_181700-200:localhost:8800XLQZYUOVVWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDF4dzt5NVhUQzR2aXp0JisKMDAyZnNpZ25hdHVyZSD9QSywnh8104wl3lN9t2uWjOUpqEtvPgW6Z2v56L6tXQogS]!c@anon-20191002_181700-199:localhost:8800UANUDVZWCSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8QogR]!c@anon-20191002_181700-198:localhost:8800MKVWNPADZZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwogQ]!c@anon-20191002_181700-197:localhost:8800QFRRVNJLDZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0wo   -0eQ_9$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 945}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8"], "type": "m.room.canonical_alias", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"alias": "#test-20191002_181700-33:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041141373, "hashes": {"sha256": "7nODvuqvqvCS49C2BpsvikcgEmEKKsdJMaMnFlPMW8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kRuDWNJv52Ihq9U/FRxqJTni61B7YPoKfHon1nQ8fS4BPchrpEEo/YVjGur4MzN7vB85tHNlMRXHJ5uxYDIgCw"}}, "unsigned": {"age_ts": 1570041141373}}j/eQ_c$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 944}{"auth_events": ["$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "type": "m.room.power_levels", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"users": {"@anon-20191002_181700-197:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041140790, "hashes": {"sha256": "9N90jaTWkFLaNxTbxM0by/8+AQtUotSDzNmLtDcU4k0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+QYAeEPGppWJxoGRAv3+B0sXSATK7dgduluvNGYLyVM/kwGoAaGQRXP1grYDoSCEFo3XmXmOLEiqu1tHs66VBQ"}}, "unsigned": {"age_ts": 1570041140790}}u.eQ_y$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 943}{"auth_events": ["$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ"], "prev_events": ["$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ"], "type": "m.room.member", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-197", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-197:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041140125, "hashes": {"sha256": "8hKO41br+IVT1uXw4nf4eoOjOWrhJnOBs46veWdH0yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QATAfhoSLpXHDs1XyPCsbyhYSnzhLWIsn1fPnaO1nNb9AoO+GwLLp6X2F0otjFNjfWHCJhfK6RheapJYBqmHBw"}}, "unsigned": {"age_ts": 1570041140125}}h-eQ__$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 942}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-197:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041139447, "hashes": {"sha256": "EODOpe2V0fjxt2pPvg+fFN2trLFQR9jSgUKjs0X2vSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d9ZqTcHVboHWZ1WnMyhrPhwzA06F0YIkIXh+RJmSU/Es0EBZPjwLrky3CSw8xGj52BUXIxoY4u09OoNE+bWOCA"}}, "unsigned": {"age_ts": 1570041139447}} ! , N 8 A i V_t }5LUx poQ? e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4hnQ/ e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rules$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXommQ9 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_alias$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkjlQ3 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I kQ']e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAdjQ' e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.create$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcsiQ))e!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4phQ? e!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8hgQ/ e!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rules$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8mfQ9 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_alias$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70jeQ3 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc dQ']e!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4dcQ' e!NfaPEGKjnUDUTavzol:localhost:8800m.room.create$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgbQ? ee!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQpaQ? e!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQh`Q/ e!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rules$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgj_Q3 e!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k ^Q']e!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsd]Q' e!JGhlAUflyNxErGGZZu:localhost:8800m.room.create$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM\Q? ee!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0p[Q? e!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0hZQ/ e!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rules$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkjYQ3 e!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0 XQ']e!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0dWQ' e!tkajvIKHoOMWGsReBs:localhost:8800m.room.create$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gVQ? ee!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00sUQ))e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIpTQ? e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00hSQ/ e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rules$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0mRQ9 e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_alias$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikjQQ3 e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8 PQ']e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIdOQ' e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.create$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ E .Eu8eQ_y$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 953}{"auth_events": ["$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g"], "prev_events": ["$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g"], "type": "m.room.member", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-198", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-198:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041148578, "hashes": {"sha256": "97NaVZzSHYLzizOA6PoPOPC0uegNz/4NgOTn3hmaRg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vEwgtybxlonaxRCKRSoz2LJLcrI0Z5J+8zEDNeZ3h9MNfCBMYUi3G2F/xDt4Kop87P+0denRCXmrU+b4aYF2Dw"}}, "unsigned": {"age_ts": 1570041148578}}h7eQ__$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 952}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-198:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041147922, "hashes": {"sha256": "2L8y5GGROWFI5Eoay9rdTMxnVQutf7q6V55Qu2c/xxM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CNZq/OAjfVzkg+rSr3EWiQCgKoEtkZCCfSs11UoQQ9W3iAj4H9G678bo56VXe8FmC6ksqQ1BlFlGEiJ6vc45CQ"}}, "unsigned": {"age_ts": 1570041147922}}6eQo$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "txn_id": "81", "stream_ordering": 951}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY"], "type": "m.room.message", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"body": "public", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041146148, "hashes": {"sha256": "7Qju0Z8k9sjnW0Qie19L6tmcnn1AFyMT9wwsSti2qXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7H9er8rgQCi2oatmtcPxpx4XdxID2vvHo+z9BcT8WJJ83ZhQhGtDhadWzkMY5xmchAxoAfviGVdz3e/g/1M5BQ"}}, "unsigned": {"age_ts": 1570041146148}}N5eQ_+$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 950}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w"], "type": "m.room.history_visibility", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041145374, "hashes": {"sha256": "O7ONu8X/4Y77PBBZIxRpjv/O6FiqqcwJVGgtlQx7zYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VSVwNh1twLq5N0vDerd44gTjJ197RQ2pwx2sdnXJIigKDgaEoG8uvTM7OtqoH8dwk8htIIcz2rC+Ns8rbSuFBA"}}, "unsigned": {"age_ts": 1570041145374, "replaces_state": "$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00"}} a} { y w u sqomkigeca~#eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~"eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~!eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800~ eeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~eeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~eeQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~eeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800 1M> v D  } K  \ Q  W % V ] +cpi7o= uC*|$JPj81e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I b1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns 1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU 1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM 1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU q1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw `1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g|1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ks1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYv1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAB1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ya1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0a1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 51e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIr1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIV21e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIe1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs01e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsn1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssA1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkc1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsi1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUJ1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY:1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA)1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo,1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw&1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY 1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoN1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wv1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q J1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s -RM H C > 9 4/*|%w rmhc TbQe!BckZfhQgrcyiMhEAAJ:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwTaQe!BckZfhQgrcyiMhEAAJ:localhost:8800$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4T`Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYT_Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYT^Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0T]Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78T\Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4T[Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYTZQe!BckZfhQgrcyiMhEAAJ:localhost:8800$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkTYQe!KXMUzALpMMMKqoQXUS:localhost:8800$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUTXQe!KXMUzALpMMMKqoQXUS:localhost:8800$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuITWQe!KXMUzALpMMMKqoQXUS:localhost:8800$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcTVQe!KXMUzALpMMMKqoQXUS:localhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakTUQe!KXMUzALpMMMKqoQXUS:localhost:8800$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4TTQe!KXMUzALpMMMKqoQXUS:localhost:8800$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXoTSQe!KXMUzALpMMMKqoQXUS:localhost:8800$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkTRQe!KXMUzALpMMMKqoQXUS:localhost:8800$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14ITQQe!KXMUzALpMMMKqoQXUS:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxATPQe!KXMUzALpMMMKqoQXUS:localhost:8800$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcTOQe!NfaPEGKjnUDUTavzol:localhost:8800$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgTNQe!NfaPEGKjnUDUTavzol:localhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4TMQe!NfaPEGKjnUDUTavzol:localhost:8800$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8TLQe!NfaPEGKjnUDUTavzol:localhost:8800$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8TKQe!NfaPEGKjnUDUTavzol:localhost:8800$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70TJQe!NfaPEGKjnUDUTavzol:localhost:8800$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcTIQe!NfaPEGKjnUDUTavzol:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4THQe!NfaPEGKjnUDUTavzol:localhost:8800$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgTGQe!JGhlAUflyNxErGGZZu:localhost:8800$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmITFQe!JGhlAUflyNxErGGZZu:localhost:8800$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQTEQe!JGhlAUflyNxErGGZZu:localhost:8800$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgTDQe!JGhlAUflyNxErGGZZu:localhost:8800$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kTCQe!JGhlAUflyNxErGGZZu:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsTBQe!JGhlAUflyNxErGGZZu:localhost:8800$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMTAQe!tkajvIKHoOMWGsReBs:localhost:8800$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIT@Qe!tkajvIKHoOMWGsReBs:localhost:8800$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0T?Qe!tkajvIKHoOMWGsReBs:localhost:8800$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkT>Qe!tkajvIKHoOMWGsReBs:localhost:8800$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0T=Qe!tkajvIKHoOMWGsReBs:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0T<Qe!tkajvIKHoOMWGsReBs:localhost:8800$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gT;Qe!fcdNYFWFyxmdpKAknc:localhost:8800$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKsT:Qe!fcdNYFWFyxmdpKAknc:localhost:8800$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYT9Qe!fcdNYFWFyxmdpKAknc:localhost:8800$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wT8Qe!fcdNYFWFyxmdpKAknc:localhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIT7Qe!fcdNYFWFyxmdpKAknc:localhost:8800$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00T6Qe!fcdNYFWFyxmdpKAknc:localhost:8800$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0  ^4eQo$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "txn_id": "80", "stream_ordering": 949}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI"], "type": "m.room.message", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"body": "private", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041144819, "hashes": {"sha256": "mn7GSGJYBENLS/DC0SnpJULYTxdqNFYC4fhY28iLSlo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bdc7iwkwE2uB+U0UPlfSz0mzUpHpCR4d6/7PsSIruITUJh2VVqWykzLS33KLQW+aKo/jw1KyjsqBL66apTzLBg"}}, "unsigned": {"age_ts": 1570041144819}}3eQ_M$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 948}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00"], "type": "m.room.aliases", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"aliases": ["#test-20191002_181700-33:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041144192, "hashes": {"sha256": "HuU8Rb0Ttr33BWQfcS/YuvGvHY3zwp96Gr3ubtfKWNE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5zuijhc+zzKYSuusTPeGb9JYZH0QaJLegbDxxaizABaiZKTis3hpMbaogIMDVRr6nyPpINPC75Hh6x7+S2tsAQ"}}, "unsigned": {"age_ts": 1570041144192}}2eQ_$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 947}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0"], "type": "m.room.history_visibility", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041143026, "hashes": {"sha256": "NYKc6bALZG0N6zpPF8JnbgU0TVRnVXUvkcAfOw/Pj6g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bDDNBMxmkQSR3ZC2HpnOYzzh4PnHBU7JbFWoJL6oir2WMhlwZ0nj04Rve5Qm5nT3NUoDFhwpYPsQ6ixAuIdGDA"}}, "unsigned": {"age_ts": 1570041143026}}s1eQ_u$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 946}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik"], "type": "m.room.join_rules", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041142264, "hashes": {"sha256": "dzEMs5P4DYPafAW73Piz7dWwlb27PBRkV1XER1LeJyk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E0MZSQiARqIOUiFNFEW9XgRI2tRBqtmyeEzB2cYi+elg/bBl2rWd/dc9I2DwoOsioE2uRiV7gvECLaDOJtbMBg"}}, "unsigned": {"age_ts": 1570041142264}} E&j W^d8> 2 % Q Kv   pj} L>p X  vR D  D },8 ^ ,&j1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns 1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4u1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y1e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk$1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ5901e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAO1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT41e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps`0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc10e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcJ1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g 1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sL1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsH1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38.1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw(1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE#1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY]1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w 91e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ@1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4W1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk ^1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE x1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcl0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK81e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM#1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UQ1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM,21e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 [1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk2 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mCm8m3%m-  m)u  m$Q  mQ  m<  m0m Fmmmmmmm7mmmmBmSmmDmmmmmm^mmm}mumrmnmmmjmgmb)m_#mZmVmSamKmGhmDmAm@m<m3m1m+m+m&m$m!mnmKmmmm !mmmm/mmmmmJmm.mmVm\mmJmmm`mȑmm&m?mmmm$mmmmmm}m6mmm$mVm~mymvmsmq3mnmj(mb2m^m\CmWmUnmRCmLemIfmCmA>m>rm9m ..m--m,,mM++m**mU))m((m''m&&m%%m`$$m##mО""m!!m  m mmmmmMmm msmmumh?mamVmQamLmI#m6m/Hm,m)(m&m$5m"mNmZmmm m[m}mm\mmmBmmmCmmUm#mmh~~m}}m-||mʉ{{mbzzmyymxxmwwmvvmVuumttmssmrrmkqqmppm&oomnnmmmm$llmkkmjjmWiimhhmggmffmw.eemqIddmgccmcbbm_jaamUu``mSS__mP^^mN ]] 0 4 Y  B ns 7<do0MX :e/eQ/ $lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rulesj.eQ9 $XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_aliasg-eQ3 $dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels ,eQ']$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800joina+eQ' $2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800m.room.createm*eQ? $J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibilitye)eQ/ $k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rulesg(eQ3 $tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels 'eQ']$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800joina&eQ' $cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800m.room.createm%eQ? $IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibilitye$eQ/ $kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rulesg#eQ3 $OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels "eQ']$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800joina!eQ' $fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800m.room.createm eQ? $31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibilitypeQ))$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800eeQ/ $0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rulesjeQ9 $hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_aliasgeQ3 $qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels eQ']$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800joinaeQ' $jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800m.room.createmeQ? $4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibilitypeQ))$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800eeQ/ $8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rulesjeQ9 $sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_aliasgeQ3 $G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels eQ']$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800joinaeQ' $YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800m.room.create   u H : g  2Pn^N  .Lj x n]@anon-20191002_181700-208:localhost:8800@anon-20191002_181700-208:localhost:8800 anon-20191002_181700-208+17@33:localhost:8800@33:localhost:8800 33n]@anon-20191002_181700-207:localhost:8800@anon-20191002_181700-207:localhost:8800 anon-20191002_181700-207+17@32:localhost:8800@32:localhost:8800 32n]@anon-20191002_181700-206:localhost:8800@anon-20191002_181700-206:localhost:8800 anon-20191002_181700-206+17@31:localhost:8800@31:localhost:8800 31n]@anon-20191002_181700-205:localhost:8800@anon-20191002_181700-205:localhost:8800 anon-20191002_181700-205+17@30:localhost:8800@30:localhost:8800 30n]@anon-20191002_181700-204:localhost:8800@anon-20191002_181700-204:localhost:8800 anon-20191002_181700-204n ]@anon-20191002_181700-203:localhost:8800@anon-20191002_181700-203:localhost:8800 anon-20191002_181700-203n ]@anon-20191002_181700-202:localhost:8800@anon-20191002_181700-202:localhost:8800 anon-20191002_181700-202n ]@anon-20191002_181700-201:localhost:8800@anon-20191002_181700-201:localhost:8800 anon-20191002_181700-201n ]@anon-20191002_181700-200:localhost:8800@anon-20191002_181700-200:localhost:8800 anon-20191002_181700-200n]@anon-20191002_181700-198:localhost:8800@anon-20191002_181700-198:localhost:8800 anon-20191002_181700-198n]@anon-20191002_181700-197:localhost:8800@anon-20191002_181700-197:localhost:8800 anon-20191002_181700-197n]@anon-20191002_181700-195:localhost:8800@anon-20191002_181700-195:localhost:8800 anon-20191002_181700-195n]@anon-20191002_181700-194:localhost:8800@anon-20191002_181700-194:localhost:8800 anon-20191002_181700-194n]@anon-20191002_181700-193:localhost:8800@anon-20191002_181700-193:localhost:8800 anon-20191002_181700-193n]@anon-20191002_181700-192:localhost:8800@anon-20191002_181700-192:localhost:8800 anon-20191002_181700-192n]@anon-20191002_181700-191:localhost:8800@anon-20191002_181700-191:localhost:8800 anon-20191002_181700-191+17@17:localhost:8800@17:localhost:8800 174n]@anon-20191002_181700-190:localhost:8800@anon-20191002_181700-190:localhost:8800 anon-20191002_181700-190+17@16:localhost:8800@16:localhost:8800 16n~]@anon-20191002_181700-189:localhost:8800@anon-20191002_181700-189:localhost:8800 anon-20191002_181700-189+}17@15:localhost:8800@15:localhost:8800 15n|]@anon-20191002_181700-188:localhost:8800@anon-20191002_181700-188:localhost:8800 anon-20191002_181700-188+{17@14:localhost:8800@14:localhost:8800 14nz]@anon-20191002_181700-187:localhost:8800@anon-20191002_181700-187:localhost:8800 anon-20191002_181700-187+y17@13:localhost:8800@13:localhost:8800 13nx]@anon-20191002_181700-186:localhost:8800@anon-20191002_181700-186:localhost:8800 anon-20191002_181700-186nw]@anon-20191002_181700-185:localhost:8800@anon-20191002_181700-185:localhost:8800 anon-20191002_181700-185n ]@anon-20191002_181700-199:localhost:8800@anon-20191002_181700-199:localhost:8800 anon-20191002_181700-199   6 l c]c@anon-20191002_181700-116:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1go127.0.0.1ac]c@anon-20191002_181700-115:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwo127.0.0.1`c]c@anon-20191002_181700-114:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4Qo127.0.0.1_c]c@anon-20191002_181700-113:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygo127.0.0.1^c]c@anon-20191002_181700-112:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6Swo127.0.0.1] ~z v r n j fb^ZVRNJFkeeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800jeeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800ieeQ$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800heeQ$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800geeQ$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800feeQ$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800eeeQ$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800deeQ$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800ceeQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800beeQ$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800aeeQ$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800`eeQ$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800_eeQ$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800^eeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800]eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800\eeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800[eeQ$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800ZeeQ$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800YeeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800XeeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800WeeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800VeeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800UeeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800TeeQ$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800SeeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800ReeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800QeeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800PeeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800OeeQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800NeeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800 -RM H C > 9 4/*|%w rmhc T5Qe!FIOuvzpMhoERunVYYA:localhost:8800$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kT4Qe!zNBpypJDRMlBdOcLlW:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYT3Qe!zNBpypJDRMlBdOcLlW:localhost:8800$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sT2Qe!zNBpypJDRMlBdOcLlW:localhost:8800$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kT1Qe!zNBpypJDRMlBdOcLlW:localhost:8800$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0T0Qe!zNBpypJDRMlBdOcLlW:localhost:8800$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwT/Qe!zNBpypJDRMlBdOcLlW:localhost:8800$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAT.Qe!zNBpypJDRMlBdOcLlW:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8T-Qe!zNBpypJDRMlBdOcLlW:localhost:8800$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkT,Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cT+Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8T*Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYT)Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4IT(Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6ET'Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQT&Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkT%Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwT$Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4T#Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYT"Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0T!Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78T Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4TQe!BckZfhQgrcyiMhEAAJ:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYTQe!BckZfhQgrcyiMhEAAJ:localhost:8800$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkTQe!KXMUzALpMMMKqoQXUS:localhost:8800$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuITQe!KXMUzALpMMMKqoQXUS:localhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakTQe!KXMUzALpMMMKqoQXUS:localhost:8800$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4TQe!KXMUzALpMMMKqoQXUS:localhost:8800$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXoTQe!KXMUzALpMMMKqoQXUS:localhost:8800$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkTQe!KXMUzALpMMMKqoQXUS:localhost:8800$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14ITQe!KXMUzALpMMMKqoQXUS:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxATQe!KXMUzALpMMMKqoQXUS:localhost:8800$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcTQe!NfaPEGKjnUDUTavzol:localhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4TQe!NfaPEGKjnUDUTavzol:localhost:8800$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8TQe!NfaPEGKjnUDUTavzol:localhost:8800$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8TQe!NfaPEGKjnUDUTavzol:localhost:8800$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70TQe!NfaPEGKjnUDUTavzol:localhost:8800$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcTQe!NfaPEGKjnUDUTavzol:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4TQe!NfaPEGKjnUDUTavzol:localhost:8800$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgTQe!JGhlAUflyNxErGGZZu:localhost:8800$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIT Qe!JGhlAUflyNxErGGZZu:localhost:8800$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQT Qe!JGhlAUflyNxErGGZZu:localhost:8800$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgT Qe!JGhlAUflyNxErGGZZu:localhost:8800$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kT Qe!JGhlAUflyNxErGGZZu:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsT Qe!JGhlAUflyNxErGGZZu:localhost:8800$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM   -s@eQ_u$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 961}{"auth_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k", "$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k"], "type": "m.room.join_rules", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041155825, "hashes": {"sha256": "SJ6BEY4Sp8Ys2G43HsMu2qOC6ASwnQoQRe5xIhAldt8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i8Mgz38MPdjrmBpwEtgz4QNksBJ56cGD59rzU5DsTyxr59AS5rVWYlL5oEX/gexzlfA864I1lCymjf/XH23aBg"}}, "unsigned": {"age_ts": 1570041155825}}j?eQ_c$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 960}{"auth_events": ["$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "type": "m.room.power_levels", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"users": {"@anon-20191002_181700-199:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041155016, "hashes": {"sha256": "qLNnI7DHK379r+TTHGHaE5gZc7Vuu/026HEgI8vzxbc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CzsJP5xjNRHT51q0VoOGvKqNifXonqZVlb9YHb94AcXA6saKX6cFcD2clkXvgKvfeBwF4yO68JdiizP3AP5sAw"}}, "unsigned": {"age_ts": 1570041155016}}u>eQ_y$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 959}{"auth_events": ["$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM"], "prev_events": ["$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM"], "type": "m.room.member", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-199", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-199:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041154400, "hashes": {"sha256": "hD+aUWTxX8YTCzvoWBhMGtUETwjl1FMWGyuLZcLh+dw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jN2wbt5h3XZ8vCuX7pCGnNEdAOLog2y1kqTSipVhQ/FVT4y+lhit9d/UMWqjKuZmsoDrdlCWs6Gi9wezT6cNBQ"}}, "unsigned": {"age_ts": 1570041154400}}h=eQ__$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 958}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-199:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041153681, "hashes": {"sha256": "wcxmSqlvdDlkv8TRJ7rtOxv2xzh3M00e47dB73YHxjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "arx7ERt7nJ/1a9lvKXIlk11Z0//Y4JxneHULHErTLLdb73xngerFYyw/UzZ2YTssbVDRJTG4ecwXjnXupbfWCA"}}, "unsigned": {"age_ts": 1570041153681}} #s 1 ] f ! J S~+:h2AogeQ3 $2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_accessmeQ? $rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibilityeeQ/ $VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rulesgeQ3 $KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels ~eQ']$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800a}eQ' $1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.creates|eQ'1$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800s{eQ'1$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800gzeQ3 $9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_accessmyeQ? $T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibilitymxeQ? $HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibilityeweQ/ $WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rulesgveQ3 $x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels ueQ']$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800ateQ' $uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.createmseQ? $SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibilitypreQ))$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800mqeQ? $jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibilityepeQ/ $mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rulesjoeQ9 $JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_aliasgneQ3 $7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels meQ']$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800aleQ' $N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800m.room.createpkeQ))$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800mjeQ? $HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibilityeieQ/ $lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rulesjheQ9 $XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_aliasggeQ3 $dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels feQ']$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800aeeQ' $2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800m.room.createmdeQ? $J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibilitymceQ? $NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibilityebeQ/ $k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rulesgaeQ3 $tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels `eQ']$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800 #r*F Q v % 0 Uy,1Uw &Pri/Q3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_access$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9co.Q? e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibility$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8g-Q/ e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rules$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYi,Q3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I +Q']e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Ec*Q' e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.create$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQu)Q'1e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQku(Q'1e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwi'Q3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4i&Q3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4o%Q? e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYo$Q? e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0g#Q/ e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rules$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78i"Q3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4 !Q']e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYc Q' e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.create$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkoQ? e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIrQ))e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakoQ? e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4gQ/ e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rules$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXolQ9 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_alias$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkiQ3 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I Q']e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAcQ' e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.create$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcrQ))e!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4oQ? e!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8gQ/ e!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rules$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8lQ9 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_alias$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70iQ3 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc Q']e!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4cQ' e!NfaPEGKjnUDUTavzol:localhost:8800m.room.create$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgoQ? e!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIoQ? e!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQgQ/ e!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rules$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgi Q3 e!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k V N  ^ Ymru {V e'Q  ]$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkm.room.create!BckZfhQgrcyiMhEAAJ:localhost:8800mKm@anon-20191002_181700-202:localhost:8800!Ue)Q ] $ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUm.room.message!KXMUzALpMMMKqoQXUS:localhost:8800 mm@anon-20191002_181700-201:localhost:8800,Te?Q ] $SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIm.room.history_visibility!KXMUzALpMMMKqoQXUS:localhost:8800 mm@anon-20191002_181700-201:localhost:8800!Se)Q ]$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcm.room.message!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800!Re)Q ]$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakm.room.aliases!KXMUzALpMMMKqoQXUS:localhost:8800m !m @anon-20191002_181700-201:localhost:8800,Qe?Q ]$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4m.room.history_visibility!KXMUzALpMMMKqoQXUS:localhost:8800mm A@anon-20191002_181700-201:localhost:8800$Pe/Q ]$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXom.room.join_rules!KXMUzALpMMMKqoQXUS:localhost:8800mml@anon-20191002_181700-201:localhost:8800)Oe9Q ]$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkm.room.canonical_alias!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800&Ne3Q ]$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14Im.room.power_levels!KXMUzALpMMMKqoQXUS:localhost:8800m/m-@anon-20191002_181700-201:localhost:8800 Me'Q ]$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAm.room.member!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800L e'Q  ]$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcm.room.create!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800!Ke)Q ]$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgm.room.message!NfaPEGKjnUDUTavzol:localhost:8800mmY@anon-20191002_181700-200:localhost:8800!Je)Q ]$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4m.room.aliases!NfaPEGKjnUDUTavzol:localhost:8800mm~@anon-20191002_181700-200:localhost:8800,Ie?Q ]$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8m.room.history_visibility!NfaPEGKjnUDUTavzol:localhost:8800mJm@anon-20191002_181700-200:localhost:8800$He/Q ]$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8m.room.join_rules!NfaPEGKjnUDUTavzol:localhost:8800mm@anon-20191002_181700-200:localhost:8800)Ge9Q ]$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70m.room.canonical_alias!NfaPEGKjnUDUTavzol:localhost:8800m.m@anon-20191002_181700-200:localhost:8800&Fe3Q ]$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcm.room.power_levels!NfaPEGKjnUDUTavzol:localhost:8800mm@anon-20191002_181700-200:localhost:8800 Ee'Q ]$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4m.room.member!NfaPEGKjnUDUTavzol:localhost:8800mVm@anon-20191002_181700-200:localhost:8800D e'Q  ]$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgm.room.create!NfaPEGKjnUDUTavzol:localhost:8800m\m@anon-20191002_181700-200:localhost:8800,Ce?Q ]$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIm.room.history_visibility!JGhlAUflyNxErGGZZu:localhost:8800mmm@anon-20191002_181700-199:localhost:8800,Be?Q ]$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQm.room.history_visibility!JGhlAUflyNxErGGZZu:localhost:8800mJm.@anon-20191002_181700-199:localhost:8800$Ae/Q ]$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgm.room.join_rules!JGhlAUflyNxErGGZZu:localhost:8800mmѺ@anon-20191002_181700-199:localhost:8800&@e3Q ]$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45km.room.power_levels!JGhlAUflyNxErGGZZu:localhost:8800mmr@anon-20191002_181700-199:localhost:8800 VG\k9q?2 $  w E   P } K   Q   W % ^ ,dj8p> \vD|JV*V1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 01e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk'1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU71e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4c1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE s1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8y1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE p1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4G1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigK1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 .1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU51e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo b1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 D1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsi1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o{1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c71e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcm1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90c1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEt1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMV1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg}1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0Z1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM 1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M 1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 61e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQa1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 %1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls ;1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMK1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8 A xAuDeQ_y$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800{"token_id": 221, "stream_ordering": 965}{"auth_events": ["$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg"], "prev_events": ["$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg"], "type": "m.room.member", "room_id": "!NfaPEGKjnUDUTavzol:localhost:8800", "sender": "@anon-20191002_181700-200:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-200", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-200:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041160534, "hashes": {"sha256": "TA7GrYw3tTOv0M+9qFuPAoHpzlM5rCzU1/dlkLmLDf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A0xikx6mwOa0UZlkuQ7yoyJ+06ZQQKq91jM4Z5Bahksv26DctAT5bXIJDjhpQ4n/Hh60rkvx9rBH/t88FOKBCQ"}}, "unsigned": {"age_ts": 1570041160534}}hCeQ__$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800{"token_id": 221, "stream_ordering": 964}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NfaPEGKjnUDUTavzol:localhost:8800", "sender": "@anon-20191002_181700-200:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-200:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041159772, "hashes": {"sha256": "XgNZldkn7sN2TniiJCnZdFzzmRtY/QCGslnTIYPdCbA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "azgJH8JJi2BLOt8ATZIw1tYvetef+J2+ce3SOehEL1GpON+jR9qPZFvgQzjUQO/4pFzOWYa/59/TDb/SsG0ACA"}}, "unsigned": {"age_ts": 1570041159772}}NBeQ_+$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 963}{"auth_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k", "$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ"], "type": "m.room.history_visibility", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041157908, "hashes": {"sha256": "O9PTNlaAk9tiiFQLfUwutorcw7GBPyISlFyne4BMMwA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q6NOZgC7PDQLLbjISzgZpqghBx2wwQOQ5X8ncjWt/K9t//auMnRRWhEF/RHHwrlFs5MPak1tloQQmYDXeEFWDA"}}, "unsigned": {"age_ts": 1570041157908, "replaces_state": "$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ"}}AeQ_$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 962}{"auth_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k", "$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg"], "type": "m.room.history_visibility", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041156426, "hashes": {"sha256": "gLEjlO06rsX3N2Es7hXrOvk3U3BPiy86uc/q0y74l88"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OkFFY845Sf4WBXcxzVvd8DgoDIBhrTS6ixvnLRgUttd/dtA/zzGZR3rnsZ679vUumUzisMMOJ8HXV/QycqwTDA"}}, "unsigned": {"age_ts": 1570041156426}} a} { y w u sqomkigeca~BeeQ$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800~AeeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800~@eeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~?eeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800~>eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800~=eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~<eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800~;eeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800~:eeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~9eeQ$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~8eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~7eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~6eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~5eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~4eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~3eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~2eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~1eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~0eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~/eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~.eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~-eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~,eeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~+eeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~*eeQ$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~)eeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~(eeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~'eeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800~&eeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~%eeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~$eeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800 <4,$ l  d \ T  L |tDeeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800 7eeQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800 keeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800 JeeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800 /eeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800 eeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800 heeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800eeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo!DelfBAGvCrTXgNxmNV:localhost:8800 reeQ$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800eeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800AeeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800eeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800 `eeQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800ԁeeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800-eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800qeeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800 eeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800QeeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800ReeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800geeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:88002h  / I c } rb"RCVx eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800 : eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800:eeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800x$_3QQ$87:localhost:42455$1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 ́eeQ$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800l eeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800 ρeeQ$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800ہeeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800 $_3QQ$38:localhost:42455$1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 }eeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800 f]eeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800eeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w!whuymJoLfUdkFdxoyE:localhost:8800bznQQQ$1570043729448XmFHA:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 ~ nQQQ$1570043580403vYYeb:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800 (nQQQ$1570043524356NlySy:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043388312YDkJu:localhost:8800$1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 M^nQQQ$1570043195270GcoLc:localhost:8800$1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 6nQQQ$1570042723230DFoyn:localhost:8800$1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800 nQQQ$1570042691192yNWVM:localhost:8800$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800 nQQQ$1570042660157svDcU:localhost:8800$1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042629121nZoNG:localhost:8800$1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800lOOQ$157004185881ahRFW:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h lOOQ$157004179138NbBYh:localhost:8800$157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800#lOOQ$157004174414klNmS:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800ԁeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800 gseeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800 H v `0p Xxh P 8 @ )P@ eeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800" ~eeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800 eeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800`eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800eeQ$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800āeeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800 NeeQ$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800qeeQ$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800" eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800OeeQ$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800m HeeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:8800 5NeeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800/eeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800(HeeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800 <eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800 eeQ$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk!hDAzBWYEyRVBRlrCHh:localhost:8800ReeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800S eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800 DeeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800 veeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800 veeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:88295 l Y F3 {H1a%E@30:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSVJoM1JodzR0aDBhRFNQMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC79MAQDFp0t3idDH3_RY6Fsr_JvLoo9JC8ioIEUQJ2-Cgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mqŃG]c!E@anon-20191002_181700-204:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpLakxYWVUmREppenJxMmEKMDAyZnNpZ25hdHVyZSBN0jSmRAyfm65inJM6fRbjhvy_F10vt604j1fMtsvhHgoHOFBXQYKDH127.0.0.1Perl + Net::Async::HTTP/0.44mRЂ{F1a%E@29:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGRWeDBtMTRaWVdaMzhHdgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFYE829LgFsLU0wxq-mP25iUQ47uGCA9V2NnR9yK12LuCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mNE]c!E@anon-20191002_181700-203:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMuO3R3Z0lFdHlFNTFhOEoKMDAyZnNpZ25hdHVyZSA9WCMhYxIQ6llnmPpchLmEr6jOQg0B6NxG_uxP6dlbywoUCNLRVNQIF127.0.0.1Perl + Net::Async::HTTP/0.44m >*Q!LazKtcHZriKzCvvGwV:localhost:8800 = =*Q!LazKtcHZriKzCvvGwV:localhost:8800 < <*Q!LazKtcHZriKzCvvGwV:localhost:8800 ; ;*Q!LvARVIpJZeRQxbKefX:localhost:8800tt 9r i V Cr&_?xE{ e]]Q=$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s@anon-20191002_181700-214:localhost:8800@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800inviteanon-20191002_181700-214Cz e]]Q=$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0@anon-20191002_181700-213:localhost:8800@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800joinanon-20191002_181700-213Cy e]]Q=$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ@anon-20191002_181700-212:localhost:8800@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800joinanon-20191002_181700-212Ex e]]Q=$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM@anon-20191002_181700-212:localhost:8800@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800inviteanon-20191002_181700-212Cw e]]Q=$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I@anon-20191002_181700-211:localhost:8800@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800joinanon-20191002_181700-211Ev e]]Q=$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k@anon-20191002_181700-210:localhost:8800@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800inviteanon-20191002_181700-210Cu e]]Q=$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k@anon-20191002_181700-209:localhost:8800@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800joinanon-20191002_181700-209t e11Q$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M@34:localhost:8800@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800join34Cs e]]Q=$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU@anon-20191002_181700-208:localhost:8800@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800joinanon-20191002_181700-208r e11Q$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI@33:localhost:8800@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800join33Cq e]]Q=$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg@anon-20191002_181700-207:localhost:8800@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800joinanon-20191002_181700-207p e11Q$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms@32:localhost:8800@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800join32Co e]]Q=$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM@anon-20191002_181700-206:localhost:8800@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800joinanon-20191002_181700-206n e11Q$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE@31:localhost:8800@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800join31Cm e]]Q=$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY@anon-20191002_181700-205:localhost:8800@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800joinanon-20191002_181700-205l e11Q$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY@30:localhost:8800@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800join30Ck e]]Q=$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8@anon-20191002_181700-204:localhost:8800@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800joinanon-20191002_181700-204Cj e]]Q=$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E@anon-20191002_181700-203:localhost:8800@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800joinanon-20191002_181700-203i e11Q$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk@28:localhost:8800@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800leaveh e11Q$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw@28:localhost:8800@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800join28Cg e]]Q=$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY@anon-20191002_181700-202:localhost:8800@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800joinanon-20191002_181700-202Cf e]]Q=$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA@anon-20191002_181700-201:localhost:8800@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800joinanon-20191002_181700-201  PeQ_$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 977}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo"], "type": "m.room.history_visibility", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041170160, "hashes": {"sha256": "PyqoncRmQ1edu7NduQTuiGQwVyZLbHcQbyX8fuwNzB8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K4hoBfv+oQqynPj5TZs4KUt8rECS4mWoH2MG/qOwl0xBYmPOQegMqRRZP4ZUDVERqUJj07ybxW0znsNs9ieLBw"}}, "unsigned": {"age_ts": 1570041170160}}sOeQ_u$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 976}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk"], "type": "m.room.join_rules", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041169542, "hashes": {"sha256": "JPjvlWeu4Q/CltRuCEfriOj+xDlwq6pyjpdn2E6GIjI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LHYqFF4fuxcBjTAMNwNeSuubENZNs+VCoYGWIPSdootKAdyW5+kOsp0d7J8fY2Irnux9y8DOwai6KuaqhkJLCA"}}, "unsigned": {"age_ts": 1570041169542}}NeQ_9$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 975}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I"], "type": "m.room.canonical_alias", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"alias": "#test-20191002_181700-35:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041168859, "hashes": {"sha256": "UXEzkLy1zHsWoVLb2+BsRMgrthiCvsBlnHz7pg5B7is"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nu1JjHsNVmSdvq00O/hP8eORkMXOHQgYCOeMk2Y1fu5LcK9wXg0ZSRZxMS6M95N7/GVqVsufoN952HM/zIauCA"}}, "unsigned": {"age_ts": 1570041168859}}jMeQ_c$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 974}{"auth_events": ["$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "type": "m.room.power_levels", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"users": {"@anon-20191002_181700-201:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041168175, "hashes": {"sha256": "hSdisjs9g1xRUU2+OnW+Ye1OLiDWiMcxTb7b+18/0n4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "215gY88R8v8b30/ImSPcg/zjeBXzpPLL0j2/3oiIYqmdS/PdTre/0Kmwjqv4kxgDzcW/ebWO9+2REFH45I4TDw"}}, "unsigned": {"age_ts": 1570041168175}} ,NC 8 - { " p  e ZOD9.|#qf VxeL$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIsha2569&!6޺p+;`VweL$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEsha2565T\(?#]:;|$o#AVveL$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Qsha256Uwϟ@~{,7K 1qtVueL$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIosha256^`VҦܬDҁԘG,LVteL$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUsha256}BN,@CIEhB_zh[%VseL$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUsha256 }kIj#PͪO7VreL$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4sha256I- ?!7!gX#FI7.dLh,aVqeL$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwsha256Sa2Y d MnG4ޏ@^̧VjeL$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUssha256C3p)}0ˏbS ]W!&UEEV`eL$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Isha256(2NEdgQEְ -V_eL$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Esha256qlAyk,_4i8V^eL$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQsha256P"n@Ã{z۫KV]eL$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQksha256KsڝVm2dFka V\eL$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwsha256@И.M1wO w NlV[eL$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4sha256EcSԽTg۞[Q _ruVZeL$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYsha256O]Ѥ¬CTD=*4VYeL$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0sha256Υ뛸17gHUIţ=VXeL$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78sha256YBS{gELx{^wќ-2[$TVWeL$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4sha256H)\uэtsY\ݥidVVeL$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYsha256'8;l*ז#ԙ AؖY6VUeL$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgksha256CtK77E f<GD UF VTeL$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUsha256jUH]"mɬ+}I^Xn" H=`VSeL$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIsha256H1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYC1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs:d1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w w1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8  ]TeQo$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "txn_id": "84", "stream_ordering": 981}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI"], "type": "m.room.message", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"body": "public", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041173405, "hashes": {"sha256": "Mvk6SJHuqjVc1rJo3E8mR0XtGVDSi4Q4CLpLzQx06as"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zhaMhIUdwJAqiEOEBGXDR6hixvcXLsCYXjig9spSGzZJ1vdyN+InBfkHZso637glv5Ejqk76WALr/MHjA9ZXBg"}}, "unsigned": {"age_ts": 1570041173405}}NSeQ_+$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 980}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc"], "type": "m.room.history_visibility", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041172359, "hashes": {"sha256": "8cFRHx+H8kBrc6JhW1mnzwsVwiria+K0G6i0mBCjZ2k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9a1eMRCmvlHUo4v/MhjvcpALoyT8mkvbgQ99Kew2FJ4sxJoHOKyV3VRVV1iME0b0HdW7XIWlTbXdfI8UmRQLBQ"}}, "unsigned": {"age_ts": 1570041172359, "replaces_state": "$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4"}}ReQo$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "txn_id": "83", "stream_ordering": 979}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak"], "type": "m.room.message", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"msgtype": "m.text", "body": "private"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041171945, "hashes": {"sha256": "gPahpuGqrceRuD8Rm1o5F/MvAIwvzajUgtY+0BBra8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tnzn7/enpSi1mmXy1ZenHSztYY31bawGCJashiewtcxdzuGBVvueEsP4tcNTGChIVsUD4hOlDabQsJY+JDjrBw"}}, "unsigned": {"age_ts": 1570041171945}}QeQ_M$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 978}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4"], "type": "m.room.aliases", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"aliases": ["#test-20191002_181700-35:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041171233, "hashes": {"sha256": "ibPcJU1cobFqhiMs3IWJofKtaVAD8ToMbCSbuTSlnh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5hwMha/8MDrphQXFkj1ztnpV1Otp3PkZCKRBIDahiqmDiutW/EyHXvWYWfBdx67ajN7iqlwt+6OCAB2Vq5XtCQ"}}, "unsigned": {"age_ts": 1570041171233}} !v   " |  :fi~6VvdQ' e!EABRjdYuYumMhLSwIa:localhost:8800m.room.create$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcvQ'1e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEjQ3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_access$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUp Q? e!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibility$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUh Q/ e!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rules$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4j Q3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw Q']e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYd Q' e!FIOuvzpMhoERunVYYA:localhost:8800m.room.create$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kvQ'1e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYQ? ee!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0jQ3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_access$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kpQ? e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0hQ/ e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rules$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwjQ3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA Q']e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8dQ' e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.create$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkjQ3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_access$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cpQ? e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibility$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8h~Q/ e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rules$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYj}Q3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I |Q']e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Ed{Q' e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.create$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ"zQ'1ee!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwvyQ'1e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwjxQ3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4wQ? ee!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0pvQ? e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0huQ/ e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rules$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78jtQ3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4 sQ']e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYdrQ' e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.create$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkqQ? ee!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4spQ))e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak x\ Z r B LPZ[x ne'Q 1 $6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYm.room.member!zNBpypJDRMlBdOcLlW:localhost:8800 mrmr@30:localhost:8800!me)Q ] $Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8m.room.message!zNBpypJDRMlBdOcLlW:localhost:8800 mnmo@anon-20191002_181700-204:localhost:8800,le?Q ]$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sm.room.history_visibility!zNBpypJDRMlBdOcLlW:localhost:8800mmmmd@anon-20191002_181700-204:localhost:8800!ke)Q ]$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUsm.room.message!zNBpypJDRMlBdOcLlW:localhost:8800mjmj@anon-20191002_181700-204:localhost:8800&je3Q ]$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-km.room.guest_access!zNBpypJDRMlBdOcLlW:localhost:8800mgmg@anon-20191002_181700-204:localhost:8800,ie?Q ]$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0m.room.history_visibility!zNBpypJDRMlBdOcLlW:localhost:8800mb)mdw@anon-20191002_181700-204:localhost:8800$he/Q ]$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwm.room.join_rules!zNBpypJDRMlBdOcLlW:localhost:8800m_#m`*@anon-20191002_181700-204:localhost:8800&ge3Q ]$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAm.room.power_levels!zNBpypJDRMlBdOcLlW:localhost:8800mZm\@anon-20191002_181700-204:localhost:8800 fe'Q ]$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8m.room.member!zNBpypJDRMlBdOcLlW:localhost:8800mVmWM@anon-20191002_181700-204:localhost:8800e e'Q  ]$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkm.room.create!zNBpypJDRMlBdOcLlW:localhost:8800mSamS@anon-20191002_181700-204:localhost:8800&de3Q ]$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cm.room.guest_access!TcaopYfMoJFEcjYRzJ:localhost:8800mKmL@anon-20191002_181700-203:localhost:8800,ce?Q ]$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8m.room.history_visibility!TcaopYfMoJFEcjYRzJ:localhost:8800mGhmID@anon-20191002_181700-203:localhost:8800$be/Q ]$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYm.room.join_rules!TcaopYfMoJFEcjYRzJ:localhost:8800mDmE@anon-20191002_181700-203:localhost:8800&ae3Q ]$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Im.room.power_levels!TcaopYfMoJFEcjYRzJ:localhost:8800mAmB@anon-20191002_181700-203:localhost:8800 `e'Q ]$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Em.room.member!TcaopYfMoJFEcjYRzJ:localhost:8800m@m@@anon-20191002_181700-203:localhost:8800_ e'Q  ]$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQm.room.create!TcaopYfMoJFEcjYRzJ:localhost:8800m<m=@anon-20191002_181700-203:localhost:8800 ^e'Q 1$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkm.room.member!BckZfhQgrcyiMhEAAJ:localhost:8800m3m5@28:localhost:8800 ]e'Q 1$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwm.room.member!BckZfhQgrcyiMhEAAJ:localhost:8800m1m2@28:localhost:8800&\e3Q ]$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4m.room.guest_access!BckZfhQgrcyiMhEAAJ:localhost:8800m+m.(@anon-20191002_181700-202:localhost:8800,[e?Q ]$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYm.room.history_visibility!BckZfhQgrcyiMhEAAJ:localhost:8800m+m,%@anon-20191002_181700-202:localhost:8800,Ze?Q ]$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0m.room.history_visibility!BckZfhQgrcyiMhEAAJ:localhost:8800m&m)@anon-20191002_181700-202:localhost:8800$Ye/Q ]$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78m.room.join_rules!BckZfhQgrcyiMhEAAJ:localhost:8800m$m%y@anon-20191002_181700-202:localhost:8800&Xe3Q ]$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4m.room.power_levels!BckZfhQgrcyiMhEAAJ:localhost:8800m!m!@anon-20191002_181700-202:localhost:8800 We'Q ]$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYm.room.member!BckZfhQgrcyiMhEAAJ:localhost:8800mnm@anon-20191002_181700-202:localhost:8800   -sXeQ_u$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 985}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4"], "type": "m.room.join_rules", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041177267, "hashes": {"sha256": "zKG/unzeo2EFmYxBvpDXBAosYnkvvq6upMLgry/Bqgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DKwRaoXYI9f3ow1DSty2zWkydrgqJAvgQhpsvzruR9FB5cNi3pRFi7A65L8edYfSywv6KGhmnf1BfcpDreEiCA"}}, "unsigned": {"age_ts": 1570041177267}}jWeQ_c$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 984}{"auth_events": ["$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "type": "m.room.power_levels", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"users": {"@anon-20191002_181700-202:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041176320, "hashes": {"sha256": "+AR1OVe0eACP5ySz643h6GFM5X8j2FWxgdlAyHnggjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IjrV02Ovd3vfyZ1sm+wzOpbHoAD6amlbv+i7uByn7TCZ+CDc68pwXnlOxMS/XQaOvcGg9wXwGT2lmCTv98nHDg"}}, "unsigned": {"age_ts": 1570041176320}}uVeQ_y$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 983}{"auth_events": ["$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk"], "prev_events": ["$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk"], "type": "m.room.member", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-202", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-202:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041175662, "hashes": {"sha256": "vxk26R8txZQrEQUW0VMV12BqyMww2WtyZwN7djPaMYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sMGu4jLok9BPP96ffj22AZAbvCF5fEU4Tj0TgfzcSIkX2YV0vwwB9sQdEDXMMCOzRqv90O1ieaPaXZpVAg3pDQ"}}, "unsigned": {"age_ts": 1570041175662}}hUeQ__$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 982}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-202:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041174859, "hashes": {"sha256": "PFmBVFYcn8ZqQt/u3JBwir0Ob4hl9I2YoxSOAkUciaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "935tFOulFZN167NQMXgs9fgslgsA3syAvW+AJFflOupm6iqcV3RYUCtOy1k9iT5dD71P68j3ktV3g5h81aLFBQ"}}, "unsigned": {"age_ts": 1570041174859}} LJ Dj8p $ \ *b0  h6 Rn= u VC > {I O)  vU# [ ~ L1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg $1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAd1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s\1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg 1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwc1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4`1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro_1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIk1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qq1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY81e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y {1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU 1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwb1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8&1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMca1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk #1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns s1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA N1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE L1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs 51e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs 41e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo %1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg 1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk 1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX01e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8j1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ } a x(aC\eQ=7$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800{"stream_ordering": 989}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78"], "prev_events": ["$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY", "$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4"], "type": "m.room.member", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@28:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "28", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041180595, "hashes": {"sha256": "c4czAEgUwJEQwl3mb9y0/ZMvYbwRKFR4hKfrjXz1PRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dev4qiLYEbqlzouo81mD6cQE0wC6MfS+Zw5LugocFVtQvXn2ej+pN7bl/scTIUg28L2Ckq+IMbRnJUOPgzTOCg"}}, "unsigned": {"age_ts": 1570041180595}}z[eQ_$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 988}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0"], "type": "m.room.guest_access", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041179016, "hashes": {"sha256": "PbLRDv0DGMYEvonp6EwHsw5XCvQTYdpNl4J+hfPDkiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQYzmYgXB3kf1bo6bV7Y1wLXQ9h27bPGs1GAYF7mDYBgRGdMewALd7lTO+uUcpVFbq5rzYqoR5wQQ10FVAZ5Cw"}}, "unsigned": {"age_ts": 1570041179016}}NZeQ_+$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 987}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0"], "type": "m.room.history_visibility", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041179015, "hashes": {"sha256": "yaz75gTAz5UfE67QPYV+RVgIwDwqH2gzkQIrVvYLerU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ijFUQtwYuqdr55zroYWSzcVOq5E5UTg2GMWs3XcZRJOZaLMYc5yRaUv2POxCZEV8dDOyLY3ymFXtj0I3XmC2Aw"}}, "unsigned": {"age_ts": 1570041179015, "replaces_state": "$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0"}}YeQ_$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 986}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78"], "type": "m.room.history_visibility", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041177809, "hashes": {"sha256": "9sWDIj8lmkS4oUM2zh8DB9mu8nbPSxIQ6E2wvGNCUdg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HfMGipRuFDql4/zzisRGUPTsq6bu2n5ZFM8v7Y6JWxIW30JUIcUjwB9ii99onR2XilhjYx07tcBpx+KAJYGyBA"}}, "unsigned": {"age_ts": 1570041177809}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1!e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI1 e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ01e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX81e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1 e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1 e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1 e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1 e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE1 e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01~e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81}e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1|e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281{e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1ze$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1ye$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1xe$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1we$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1ve$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1ue$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1te$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1se$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo1re$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1qe$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1pe$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41oe$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1ne$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1me$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1le$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1ke$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1je$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81ie$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1he$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1ge$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1fe$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01ee$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1de$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1ce$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81be$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1ae$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1`e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81_e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1^e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1]e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1\e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1[e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1Ze$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1Ye$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41Xe$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1We$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0 .( Q v   ? e#IT.9gwNeQ'1$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800joinmMeQ? $bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilitygLeQ3 $q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_accesseJeQ/ $EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rulesgIeQ3 $hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels HeQ']$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800joinaGeQ' $JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800m.room.creategFeQ3 $2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_accessmEeQ? $rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibilityeDeQ/ $VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rulesgCeQ3 $KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels BeQ']$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800joinaAeQ' $1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.createx@eQ'1$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800leaveg?eQ3 $9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_accessm>eQ? $T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibilitye=eQ/ $WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rulesg<eQ3 $x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels ;eQ']$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800joina:eQ' $uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.createm9eQ? $SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibilityp8eQ))$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800e6eQ/ $mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rulesj5eQ9 $JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_aliasg4eQ3 $7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels 3eQ']$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800joina2eQ' $N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800m.room.createp1eQ))$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800m0eQ? $HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility -RM H C > 9 4/*|%w rmhc TQe !ifQxHmNAcSSGHVMjfi:localhost:8800$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkTQe !ifQxHmNAcSSGHVMjfi:localhost:8800$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZkT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60T Qe!EABRjdYuYumMhLSwIa:localhost:8800$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlITQe!EABRjdYuYumMhLSwIa:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsTQe!EABRjdYuYumMhLSwIa:localhost:8800$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0TQe!EABRjdYuYumMhLSwIa:localhost:8800$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8TQe!EABRjdYuYumMhLSwIa:localhost:8800$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwTQe!EABRjdYuYumMhLSwIa:localhost:8800$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28TQe!EABRjdYuYumMhLSwIa:localhost:8800$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaATQe!EABRjdYuYumMhLSwIa:localhost:8800$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYTQe!EABRjdYuYumMhLSwIa:localhost:8800$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQTQe!EABRjdYuYumMhLSwIa:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMTQe!EABRjdYuYumMhLSwIa:localhost:8800$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcT~Qe!FIOuvzpMhoERunVYYA:localhost:8800$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIT}Qe!FIOuvzpMhoERunVYYA:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkET|Qe!FIOuvzpMhoERunVYYA:localhost:8800$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13QT{Qe!FIOuvzpMhoERunVYYA:localhost:8800$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIoTzQe!FIOuvzpMhoERunVYYA:localhost:8800$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUTyQe!FIOuvzpMhoERunVYYA:localhost:8800$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUTxQe!FIOuvzpMhoERunVYYA:localhost:8800$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4TwQe!FIOuvzpMhoERunVYYA:localhost:8800$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwTvQe!FIOuvzpMhoERunVYYA:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYTuQe!FIOuvzpMhoERunVYYA:localhost:8800$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kTtQe!zNBpypJDRMlBdOcLlW:localhost:8800$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zoTsQe!zNBpypJDRMlBdOcLlW:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYTrQe!zNBpypJDRMlBdOcLlW:localhost:8800$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8TqQe!zNBpypJDRMlBdOcLlW:localhost:8800$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sTpQe!zNBpypJDRMlBdOcLlW:localhost:8800$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUsToQe!zNBpypJDRMlBdOcLlW:localhost:8800$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kTnQe!zNBpypJDRMlBdOcLlW:localhost:8800$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0TmQe!zNBpypJDRMlBdOcLlW:localhost:8800$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwTlQe!zNBpypJDRMlBdOcLlW:localhost:8800$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWATkQe!zNBpypJDRMlBdOcLlW:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8TjQe!zNBpypJDRMlBdOcLlW:localhost:8800$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkTiQe!TcaopYfMoJFEcjYRzJ:localhost:8800$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cThQe!TcaopYfMoJFEcjYRzJ:localhost:8800$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8TgQe!TcaopYfMoJFEcjYRzJ:localhost:8800$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYTfQe!TcaopYfMoJFEcjYRzJ:localhost:8800$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4ITeQe!TcaopYfMoJFEcjYRzJ:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6ETdQe!TcaopYfMoJFEcjYRzJ:localhost:8800$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQTcQe!BckZfhQgrcyiMhEAAJ:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk | O c|j`eQ_c$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 993}{"auth_events": ["$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "type": "m.room.power_levels", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"users": {"@anon-20191002_181700-203:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041184761, "hashes": {"sha256": "21MJFhKIuIkxHLndhssocxlRE0VG4nsNm2yu/PTPX4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uWrwwH1J27+c7wDtAlp3UNF5/z1qB3m/FucDvOkBGmP9+0aCMsOIcn3s+lrdxRfWX9joYjB9O10UZqyEk+FADA"}}, "unsigned": {"age_ts": 1570041184761}}u_eQ_y$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 992}{"auth_events": ["$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ"], "prev_events": ["$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ"], "type": "m.room.member", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-203", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-203:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041184260, "hashes": {"sha256": "0aK5JEoXHex6bwBN9qYwyET89U5MWDhEA1W05Qfs8Us"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E84EASpflk/jzoC1OydBiw+slly9NKdmp2X0AQBYR6pu9zqSia3dLuPZYO8RIEX49oiEn4LgEp7C34z5cUxaBQ"}}, "unsigned": {"age_ts": 1570041184260}}h^eQ__$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 991}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-203:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041183466, "hashes": {"sha256": "C1Q4IqOIWNKYvxXRqGIrZdx3zvPuQ/4AV8xc46cAdVY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYK19fK+40Ff2AxFq9HT+gH6nevAoFbbk7quVQ6izaKV+xTMCnnbm/ByYMaSl5yxOsGtEQ792kCnodCViicqDA"}}, "unsigned": {"age_ts": 1570041183466}}-]eQ= $rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800{"stream_ordering": 990}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw"], "prev_events": ["$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw"], "type": "m.room.member", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@28:localhost:8800", "content": {"membership": "leave", "kind": "guest"}, "depth": 8, "prev_state": [], "state_key": "@28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041181182, "hashes": {"sha256": "0cdwbjbtxXKP3CrTM/FsWNjn6mrhwHIgw6C7DJoDPbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XFGLdfmBanrGb5rvVILGWesfjBqGeTcxu7AhzEno4Rjy3NwmOabBkk/SwSxaUyfcX30GE0uAfrC2hNzzVbcMDw"}}, "unsigned": {"age_ts": 1570041181182, "replaces_state": "$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw"}} ~z v r n j fb^ZVRNJF eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800eeQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800eeQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800eeQ$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800eeQ$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800}eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800|eeQ$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800{eeQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800zeeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800yeeQ$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800xeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800weeQ$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800veeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800ueeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800teeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800seeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800reeQ$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800qeeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800peeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800oeeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800neeQ$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800meeQ$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800leeQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800 M E  } K  Q  W % ^ ,e> k9q? W wwE%}pKQ]+3j8 1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEw1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvos1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo V1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE M1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 J1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4&1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI@1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Al1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo )1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo 81e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEz1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o\1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQu1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k~1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM H1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY.0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh091e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEY1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw=1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsL1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksJ1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER091e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ11e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs\1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQM1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA91e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y81e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 P a} { y w u sqomkigeca~eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~~eeQ$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~}eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800~|eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~{eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~zeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~yeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~xeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~weeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~veeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~ueeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~teeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~seeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~reeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~qeeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~peeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~oeeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~neeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~meeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~leeQ$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~keeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800~jeeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800~ieeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800~heeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800~geeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800~feeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800~eeeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800~deeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800~ceeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800~beeQ$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800  hdeQ__$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 997}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-204:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041189217, "hashes": {"sha256": "+0dzqUNQreE+7poxMAE8Lsqg3JTEafPXUNE7eQPLaN8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AFgHHl64Sci+Ygn3qL+gYiZa0bBUdccvtbzWYdRgiNu5TqzOr2iGlTKyAigqVYr5cZBeNRs5OAzxaluEAGLAAQ"}}, "unsigned": {"age_ts": 1570041189217}}zceQ_$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 996}{"auth_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I", "$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8"], "type": "m.room.guest_access", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041187252, "hashes": {"sha256": "CsK8q/o+uBH1j3m4lE+usMFjpYISqZZ8YgBdKSXihE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G25/oQXn16XcoCZBCuCgfQSbuRGe6336bhqbTh4e29Rx7PnCRCfq8k8zrcehzPge+KiNilGGZVanxpV/VbChCw"}}, "unsigned": {"age_ts": 1570041187252}}beQ_$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 995}{"auth_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I", "$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY"], "type": "m.room.history_visibility", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041186152, "hashes": {"sha256": "XgVQDXFK0pGwy5bE9LXZm5FXYO/f4hznETaq1eISYcU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BobTWSRvjvGNT3ewEnsWsEqXad95yIvlgZZFC1uOy+eSndYbY1SAg4Um4WB2Au25LEDTze/NU4hQTmtq/HtTDw"}}, "unsigned": {"age_ts": 1570041186152}}saeQ_u$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 994}{"auth_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I", "$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I"], "type": "m.room.join_rules", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041185527, "hashes": {"sha256": "fMcBtX+6sCUpI9M144ig1vamRwo3xBV+8iWz4fuYpBA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YZwZg1+aJdGNHSrxvKF1ztVwK1YuyYpqJoNhfmSw1icnZTRIZynOPnbUVt1mRpA1yOcvjmIz2spx5ztjJfrqAw"}}, "unsigned": {"age_ts": 1570041185527}} FQ v D  n< t $ p> %W |0h6 *  V \ P ]+zHBb  1e$nH5JNtqyD91e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4G1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40 21e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwW1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40 31e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA#1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40 41e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g1e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA%1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwX1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E] /1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI,1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc%1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E^1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI-1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc&1e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs1e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI/1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI.1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4H1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4I1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI}1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guci1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4o1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4n1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkI1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkH1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkG1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU 1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwV1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU bHtBh6<  D z Z( N0 | JH  T" P   p>j V $ 8 vnn<tB1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Mz1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1My1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY91e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs461e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4~1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgd1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgc1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgb1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYa1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY`1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY_1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh41e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg [1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg Z1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qn,1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI/1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucn1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucm1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucl1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg .1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg -1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMp1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY81e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY71e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYX1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYW1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYV1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs451e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY _f' S6gG, jM2 ` I { <   x a "  ^ G  m D -vS*y\3_BuR/}|a>i* ">']m.room.member@anon-20191002_181700-213:localhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-200:localhost:8800' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-199:localhost:8800' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-212:localhost:8800>']m.room.member@anon-20191002_181700-212:localhost:88003 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-211:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-210:localhost:88003 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-209:localhost:8800' m.room.create('1m.room.member@34:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-208:localhost:8800' m.room.create('1m.room.member@33:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-207:localhost:8800' m.room.create('1m.room.member@32:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-206:localhost:8800' m.room.create('1m.room.member@31:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-205:localhost:8800' m.room.create('1m.room.member@30:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-204:localhost:8800' m.room.create3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-203:localhost:8800' m.room.create('1m.room.member@28:localhost:8800('1m.room.member@28:localhost:88003 m.room.guest_access3 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-202:localhost:8800' m.room.create"? m.room.history_visibility%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-201:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800 #S 5 W m  x 0 Rty1GR| ,NSiRQ3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s QQ']e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUcPQ' e!YufaOfAlruTdjyUCwO:localhost:8800m.room.create$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIuOQ'1e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIoNQ? e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYiMQ3 e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_access$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkoLQ? e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kgKQ/ e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rules$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgiJQ3 e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk IQ']e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgcHQ' e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.create$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60uGQ'1e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsoFQ? e!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8iEQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_access$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28oDQ? e!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAgCQ/ e!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rules$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYiBQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ AQ']e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMc@Q' e!EABRjdYuYumMhLSwIa:localhost:8800m.room.create$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcu?Q'1e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEo>Q? e!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibility$F2xtT1ByuijDFDK0pAwURiTVKXS3eRKRq_eWNNWXLmoi=Q3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_access$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUo<Q? e!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibility$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUg;Q/ e!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rules$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4i:Q3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw 9Q']e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYc8Q' e!FIOuvzpMhoERunVYYA:localhost:8800m.room.create$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6ku7Q'1e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYo6Q? e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_si5Q3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_access$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-ko4Q? e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0g3Q/ e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rules$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwi2Q3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA 1Q']e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8c0Q' e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.create$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk #= c }  " J j y7]$Jds e%eQ/ $xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rulesg$eQ3 $JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels #eQ']$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800a"eQ' $yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800m.room.creates!eQ'1$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800m eQ? $YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilitygeQ3 $Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_accessmeQ? $ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilityeeQ/ $N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rulesgeQ3 $pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels eQ']$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800aeQ' $_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.createseQ'1$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800meQ? $dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibilitygeQ3 $1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_accessmeQ? $2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibilityeeQ/ $aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rulesgeQ3 $gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels eQ']$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800aeQ' $kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800m.room.createseQ'1$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800geQ3 $n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_accessmeQ? $nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibilityeeQ/ $5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rulesg eQ3 $U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels eQ']$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800a eQ' $YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800m.room.creates eQ'1$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800m eQ? $bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilitygeQ3 $q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_accessmeQ? $JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilityeeQ/ $EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rulesgeQ3 $hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels eQ']$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800aeQ' $JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800m.room.create  heQa$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1001}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw"], "type": "m.room.history_visibility", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041193001, "hashes": {"sha256": "RRnPnukJzmpQpZRkXg1U7S+Wa26Car5xWv0ryL5BeTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OAIhC8XrY7f09PzsaAngBiazM5vrIX1ChMW+cHg6xu6cZR9KmQG/2PGLd9WU/Gg/7vJPpCnO47C1Wm3/9MLZBg"}}, "unsigned": {"age_ts": 1570041193001}}tgeQau$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1000}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA"], "type": "m.room.join_rules", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041192227, "hashes": {"sha256": "txiwMeCPCEdQRX+59tMioAla9jOFlDIFS7Q99QMpUUU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vx1kvwNVBIAKbl6wz7mkIPIk2sjxxOhmzyXnyZazMcLpnFX59IqM/omrn3lSlu5N5yLKxsC8AdTYfvLmtKvwAw"}}, "unsigned": {"age_ts": 1570041192227}}jfeQ_c$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 999}{"auth_events": ["$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "type": "m.room.power_levels", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"users": {"@anon-20191002_181700-204:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041191159, "hashes": {"sha256": "I0eYOSK8dLeVjkzUVMQNG+HPv45v4xhLkOaUKYiEm4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zelhrQdruIkdYGTNK9zvxiZyEmt0BUAsD/8iJT3lh9adFyFviWBSiFVc54dqLgi9PgOpwvyc6rRuwhUzXtxLCg"}}, "unsigned": {"age_ts": 1570041191159}}ueeQ_y$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 998}{"auth_events": ["$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk"], "prev_events": ["$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk"], "type": "m.room.member", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-204", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-204:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041190102, "hashes": {"sha256": "R7H/6ApIpf+L/AST+iVRw5EkRib3HCqgI58m9BF9NYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4fj3N2wnqp9tb11BmjMBuo3+OdINsCycbLySujgOCKMu8762sW4XOqXSA4cJMbw7tdAV0dwc0cW0L+vXC44IAA"}}, "unsigned": {"age_ts": 1570041190102}} ? 6 l c]c@anon-20191002_181700-104:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_Ao127.0.0.1Wc]c@anon-20191002_181700-103:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigo127.0.0.1Vc]c@anon-20191002_181700-102:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQo127.0.0.1Ua[a@anon-20191002_181700-10:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2Cg127.0.0.1c]c@anon-20191002_181700-109:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5go127.0.0.1[c]c@anon-20191002_181700-108:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAo127.0.0.1Zc]c@anon-20191002_181700-107:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3wo127.0.0.1Yc]c@anon-20191002_181700-106:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQo127.0.0.1X 6.>|u' F m e ]  U NeeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800 xeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800 eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM!vBvlJEXUSQKUYmsKcO:localhost:8800 ŁeeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800eeQ$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800 EeeQ$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800 \eeQ$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800́eeQ$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800*eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800eeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800ceeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800LeeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800 ^eeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800 ueeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800ŁeeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800 UeeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800сeeQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800eeQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800eeQ$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800heeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800{eeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800seeQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800eeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY!BkzROHxDAfKIzYpmPV:localhost:8800(eeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800`eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800)eeQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800J ,bo`m z ) 8 E R  a n},9HU|+IP]Q@anon-20191002_18170P]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800P]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800P]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800P]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800P]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800P]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800P]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800P]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800N[Q@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800P]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800P]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800P]Q@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800N[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800N[Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800P]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800P]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800P]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800N[Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800N[Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800  )leQq$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "txn_id": "87", "stream_ordering": 1005}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s"], "type": "m.room.message", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041196237, "hashes": {"sha256": "1VcGtDjUs8Q7EUwyWpYmG+M4nLjN8eV2SUYw+2WK2T8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JbCfFAY0Ns0Vc3wrB1JVoRzlcd1lZhDKyPMt66JMBQroVdMwNCzVidQpPdTy9yozLlFg6ylhQuSo8168Ks5hBA"}}, "unsigned": {"age_ts": 1570041196237}}OkeQa+$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1004}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs"], "type": "m.room.history_visibility", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041195784, "hashes": {"sha256": "zKhwlgWEIdj4MeOtqTKgSu26wWlfRomjsVeHjOq2F0o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nc7zn+/+gJvhlN6VsT2FG+xqQ5IfNdh3oOMRC1QfdFxq28U+9y5hBbMdVq4xWdhmuXclzmU5+p6gFG3duxulBA"}}, "unsigned": {"age_ts": 1570041195784, "replaces_state": "$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0"}}jeQm$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "txn_id": "86", "stream_ordering": 1003}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k"], "type": "m.room.message", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"msgtype": "m.text", "body": "shared"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041195239, "hashes": {"sha256": "3N5AQXK446qtgJ9QeB4AaAhAVppgF/Ui+21J+szXwAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VOeIK0TniC14U2c8plIBPuN/0lR79luFzEjhmBOl0A5lfrTAHqEUaUZSMc4jeFxDyibpDB4lsxrF33te44b/BA"}}, "unsigned": {"age_ts": 1570041195239}}{ieQa$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1002}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0"], "type": "m.room.guest_access", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041194377, "hashes": {"sha256": "uwyDEXiogF+r8mlT5VvvJM5oi3mHLoCoyK6d7CYlQy0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k4q8Qq7U6bXJoAYCGMueCrq/skQlLki4abXAF6tzO9S9NKI2yYEmJC+wrncEJCRAgxoIkXs5egHUac6wpOGVAQ"}}, "unsigned": {"age_ts": 1570041194377}} w gwvpeQay$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1009}{"auth_events": ["$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k"], "prev_events": ["$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k"], "type": "m.room.member", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-205", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-205:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041201078, "hashes": {"sha256": "QkoGaL5S+BvySN9ee2Axn3UBkFzbv4LK2R5h+E9IyD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ReRzs26BJzohY6QR07vh4s2+OP0/D+JaENG9/nDADjYOc4Tqhe19r+B3RVTb+qjhXeUQ5cSuJ//bQfeNIN+TDQ"}}, "unsigned": {"age_ts": 1570041201078}}ioeQa_$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1008}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-205:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041200100, "hashes": {"sha256": "Ewa6r7zaLTArICPT2TpRgtt4eS8Hk1Pe7G8zrkGSM2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "InAg3/RjYIGL3eY48qNtFNF+IY9LGAa/5bF9aR3Fgo3n1bhuFtLe3BOB8PXNvesdLOXEB3OfJ7HzBLcK6OyMDA"}}, "unsigned": {"age_ts": 1570041200100}}neQu$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "txn_id": "88", "stream_ordering": 1007}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY"], "type": "m.room.message", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"msgtype": "m.text", "body": "post_join"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041198053, "hashes": {"sha256": "NFg9i37NsOxK6q9b9CWotpLK2i6qFaKsG5FJKoouaiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2xoJfBXq/r66M9ELZryXJrItKGwGd37AWah9WJsQbonKLmjq9Y/Te0YfG3W5BqasYkN/HB19zCg59dFu7MDLAw"}}, "unsigned": {"age_ts": 1570041198053}}meQ?Y$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800{"stream_ordering": 1006}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw"], "prev_events": ["$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8"], "type": "m.room.member", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@30:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "30", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@30:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041197084, "hashes": {"sha256": "ofZCIF0gfvewfVxgBgTaSuWt5UnC+HNz6SyCGWAcxRM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tNq5uBpDec7WkG6k2BUokSp4ig2FwAHcUz6mlZGi0/82m1aAXdvonHAceqID7HVqU1hULChJ8GByD3uiNuWxAw"}}, "unsigned": {"age_ts": 1570041197084}} [ k  i  JTUr+ e'Q ]$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgm.room.member!ifQxHmNAcSSGHVMjfi:localhost:8800mmx@anon-20191002_181700-207:localhost:8800 e'Q  ]$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60m.room.create!ifQxHmNAcSSGHVMjfi:localhost:8800mm@anon-20191002_181700-207:localhost:8800!e)Q ] $_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlIm.room.message!EABRjdYuYumMhLSwIa:localhost:8800 mm@anon-20191002_181700-206:localhost:8800 e'Q 1 $VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsm.room.member!EABRjdYuYumMhLSwIa:localhost:8800 mm@32:localhost:8800!e)Q ] $roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0m.room.message!EABRjdYuYumMhLSwIa:localhost:8800 mm{@anon-20191002_181700-206:localhost:8800,e?Q ]$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8m.room.history_visibility!EABRjdYuYumMhLSwIa:localhost:8800mm=@anon-20191002_181700-206:localhost:8800!e)Q ]$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwm.room.message!EABRjdYuYumMhLSwIa:localhost:8800m7m=@anon-20191002_181700-206:localhost:8800&e3Q ]$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28m.room.guest_access!EABRjdYuYumMhLSwIa:localhost:8800mm @anon-20191002_181700-206:localhost:8800,~e?Q ]$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAm.room.history_visibility!EABRjdYuYumMhLSwIa:localhost:8800mm@anon-20191002_181700-206:localhost:8800$}e/Q ]$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYm.room.join_rules!EABRjdYuYumMhLSwIa:localhost:8800mm:@anon-20191002_181700-206:localhost:8800&|e3Q ]$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQm.room.power_levels!EABRjdYuYumMhLSwIa:localhost:8800mBmƫ@anon-20191002_181700-206:localhost:8800 {e'Q ]$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMm.room.member!EABRjdYuYumMhLSwIa:localhost:8800mSm@anon-20191002_181700-206:localhost:8800z e'Q  ]$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcm.room.create!EABRjdYuYumMhLSwIa:localhost:8800mm@anon-20191002_181700-206:localhost:8800!ye)Q ] $hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIm.room.message!FIOuvzpMhoERunVYYA:localhost:8800 mDmI@anon-20191002_181700-205:localhost:8800 xe'Q 1 $NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEm.room.member!FIOuvzpMhoERunVYYA:localhost:8800 mm@31:localhost:8800!we)Q ]$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Qm.room.message!FIOuvzpMhoERunVYYA:localhost:8800mm@anon-20191002_181700-205:localhost:8800!ve)Q ]$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIom.room.message!FIOuvzpMhoERunVYYA:localhost:8800mm@anon-20191002_181700-205:localhost:8800&ue3Q ]$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUm.room.guest_access!FIOuvzpMhoERunVYYA:localhost:8800mm @anon-20191002_181700-205:localhost:8800,te?Q ]$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUm.room.history_visibility!FIOuvzpMhoERunVYYA:localhost:8800mmO@anon-20191002_181700-205:localhost:8800$se/Q ]$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4m.room.join_rules!FIOuvzpMhoERunVYYA:localhost:8800m^mu@anon-20191002_181700-205:localhost:8800&re3Q ]$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwm.room.power_levels!FIOuvzpMhoERunVYYA:localhost:8800mm@anon-20191002_181700-205:localhost:8800 qe'Q ]$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYm.room.member!FIOuvzpMhoERunVYYA:localhost:8800mm5@anon-20191002_181700-205:localhost:8800p e'Q  ]$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6km.room.create!FIOuvzpMhoERunVYYA:localhost:8800m}m<@anon-20191002_181700-205:localhost:8800!oe)Q ] $mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zom.room.message!zNBpypJDRMlBdOcLlW:localhost:8800 mumu@anon-20191002_181700-204:localhost:8800 7HF@@ B  B  B  D  D DFFFFHH?]!@anon-20191002_181700-305:localhost:8800PDQTBQSPGXm&0=[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRTmm?]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZAma?]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDTmE?]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTKm/?]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEXm?]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKSm<?]!@anon-20191002_181700-252:localhost:8800RURXOUWORGm0?]!@anon-20191002_181700-304:localhost:8800MQWNAFYDXKməB/?]!@anon-20191002_181700-303:localhost:8800FUOYNGGDMQmp,.?]!@anon-20191002_181700-302:localhost:8800PAWIWMHYHHm=o-?]!@anon-20191002_181700-301:localhost:8800SJPGITTBTXmo,?]!@anon-20191002_181700-300:localhost:8800ZZJIQPLATKm̔+?]!@anon-20191002_181700-299:localhost:8800BPDORAMNSEmȃ*?]!@anon-20191002_181700-298:localhost:8800GTROHDSCGVmE)?]!@anon-20191002_181700-297:localhost:8800DVSKNCGFXXm(?]!@anon-20191002_181700-296:localhost:8800SBLEQBXZQLm'?]!@anon-20191002_181700-295:localhost:8800CIYGWJHPPNmǷ3&?]!@anon-20191002_181700-294:localhost:8800RKGLRVXFMGmdžg%?]!@anon-20191002_181700-293:localhost:8800PVLMJRXINQm{$?]!@anon-20191002_181700-292:localhost:8800GGCVZACJDJmg#?]!@anon-20191002_181700-291:localhost:8800OPDSPHGDRKm^t"?]!@anon-20191002_181700-290:localhost:8800HIUKIRMYDGmD`!=[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZUmz?]!@anon-20191002_181700-289:localhost:8800WRUIAYGXANm 9 4/*|%w rmhc TbQe!eJPTUgihvSwaOhIkrC:localhost:8800$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4ETaQe!eJPTUgihvSwaOhIkrC:localhost:8800$2DJ9MnVKofe1c6evu8PTksxjjAd_E1h06A6etRaEyocT`Qe!eJPTUgihvSwaOhIkrC:localhost:8800$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQT_Qe!eJPTUgihvSwaOhIkrC:localhost:8800$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewT^Qe!eJPTUgihvSwaOhIkrC:localhost:8800$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoT]Qe!eJPTUgihvSwaOhIkrC:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66IT\Qe!eJPTUgihvSwaOhIkrC:localhost:8800$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIT[Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kTZQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgTYQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgTXQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_ITWQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6ATVQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkTUQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kTTQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8TSQe!YufaOfAlruTdjyUCwO:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6MTRQe!YufaOfAlruTdjyUCwO:localhost:8800$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaETQQe!YufaOfAlruTdjyUCwO:localhost:8800$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgTPQe!YufaOfAlruTdjyUCwO:localhost:8800$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkTOQe!YufaOfAlruTdjyUCwO:localhost:8800$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sTNQe!YufaOfAlruTdjyUCwO:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUTMQe!YufaOfAlruTdjyUCwO:localhost:8800$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxITLQe!ifQxHmNAcSSGHVMjfi:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzITKQe!ifQxHmNAcSSGHVMjfi:localhost:8800$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYTJQe!ifQxHmNAcSSGHVMjfi:localhost:8800$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkTIQe!ifQxHmNAcSSGHVMjfi:localhost:8800$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kTHQe!ifQxHmNAcSSGHVMjfi:localhost:8800$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgTGQe!ifQxHmNAcSSGHVMjfi:localhost:8800$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZkTFQe!ifQxHmNAcSSGHVMjfi:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgTEQe!ifQxHmNAcSSGHVMjfi:localhost:8800$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60TDQe!EABRjdYuYumMhLSwIa:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsTCQe!EABRjdYuYumMhLSwIa:localhost:8800$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8TBQe!EABRjdYuYumMhLSwIa:localhost:8800$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28TAQe!EABRjdYuYumMhLSwIa:localhost:8800$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAT@Qe!EABRjdYuYumMhLSwIa:localhost:8800$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYT?Qe!EABRjdYuYumMhLSwIa:localhost:8800$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQT>Qe!EABRjdYuYumMhLSwIa:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMT=Qe!EABRjdYuYumMhLSwIa:localhost:8800$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcT<Qe!FIOuvzpMhoERunVYYA:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkET;Qe!FIOuvzpMhoERunVYYA:localhost:8800$F2xtT1ByuijDFDK0pAwURiTVKXS3eRKRq_eWNNWXLmoT:Qe!FIOuvzpMhoERunVYYA:localhost:8800$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUT9Qe!FIOuvzpMhoERunVYYA:localhost:8800$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUT8Qe!FIOuvzpMhoERunVYYA:localhost:8800$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4T7Qe!FIOuvzpMhoERunVYYA:localhost:8800$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwT6Qe!FIOuvzpMhoERunVYYA:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY UQuH  e ^ 1  Y . yL,)Ll?hk 8 W $ p C } P_Yy2>: uH,Q!NcJYmIbgjsaKJOzBcs:localhost:8800yy,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800>>,Q!NboFFVLpJHTeuUKCjM:localhost:8800==+Q !NQgavrmiCPUVaVjssy:localhost:8800aa,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800::,Q!NboFFVLpJHTeuUKCjM:localhost:880099,Q!NboFFVLpJHTeuUKCjM:localhost:880088+Q !NboFFVLpJHTeuUKCjM:localhost:880077,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829+Q !NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800<<,Q!NboFFVLpJHTeuUKCjM:localhost:8800;;,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 +Q !NcJYmIbgjsaKJOzBcs:localhost:8800ww,Q!NcJYmIbgjsaKJOzBcs:localhost:8800zz,Q!NcJYmIbgjsaKJOzBcs:localhost:8800{{,Q!NcJYmIbgjsaKJOzBcs:localhost:8800||,Q!NPdjmIfsBVIIkvWBzD:localhost:8800jj,Q!NPdjmIfsBVIIkvWBzD:localhost:8800hh,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ff,Q!NPdjmIfsBVIIkvWBzD:localhost:8800dd,Q!NPdjmIfsBVIIkvWBzD:localhost:8800bb,Q!NanhNmCnVVpmZRJrTF:localhost:8800 +Q !NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800~~,Q!NcJYmIbgjsaKJOzBcs:localhost:8800}},Q!NQgavrmiCPUVaVjssy:localhost:8800dd,Q!NQgavrmiCPUVaVjssy:localhost:8800cc,Q!NQgavrmiCPUVaVjssy:localhost:8800bb,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ll)Q !NhWgOTYzEPRwAxRQvS:localhost:8800rr,Q!NeYaCeYNFATCqlrlGT:localhost:8800oo,Q!NeYaCeYNFATCqlrlGT:localhost:8800nn,Q!NeYaCeYNFATCqlrlGT:localhost:8800mm,Q!NeYaCeYNFATCqlrlGT:localhost:8800ll,Q!NeYaCeYNFATCqlrlGT:localhost:8800kk+Q !NeYaCeYNFATCqlrlGT:localhost:8800jj,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800+Q !NfaPEGKjnUDUTavzol:localhost:8800*Q!NZHpBquHDfJAjiawGk:localhost:8800II*Q!NZHpBquHDfJAjiawGk:localhost:8800HH*Q!NZHpBquHDfJAjiawGk:localhost:8800GG*Q!NZHpBquHDfJAjiawGk:localhost:8800FF*Q!NZHpBquHDfJAjiawGk:localhost:8800EE)Q !NZHpBquHDfJAjiawGk:localhost:8800DD,Q!NQgavrmiCPUVaVjssy:localhost:8800 jj,Q!NQgavrmiCPUVaVjssy:localhost:8800 ii,Q!NQgavrmiCPUVaVjssy:localhost:8800hh,Q!NQgavrmiCPUVaVjssy:localhost:8800gg,Q!NQgavrmiCPUVaVjssy:localhost:8800ff,Q!NQgavrmiCPUVaVjssy:localhost:8800ee+Q !NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800xx,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 UQuH  e ^ 1  Y . yL,)Ll?hk 8 W $ p C } P_Yy2>: uH,Q!NcJYmIbgjsaKJOzBcs:localhost:8800yy,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800>>,Q!NboFFVLpJHTeuUKCjM:localhost:8800==+Q !NQgavrmiCPUVaVjssy:localhost:8800aa,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800::,Q!NboFFVLpJHTeuUKCjM:localhost:880099,Q!NboFFVLpJHTeuUKCjM:localhost:880088+Q !NboFFVLpJHTeuUKCjM:localhost:880077,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829+Q !NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800<<,Q!NboFFVLpJHTeuUKCjM:localhost:8800;;,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 +Q !NcJYmIbgjsaKJOzBcs:localhost:8800ww,Q!NcJYmIbgjsaKJOzBcs:localhost:8800zz,Q!NcJYmIbgjsaKJOzBcs:localhost:8800{{,Q!NcJYmIbgjsaKJOzBcs:localhost:8800||,Q!NPdjmIfsBVIIkvWBzD:localhost:8800jj,Q!NPdjmIfsBVIIkvWBzD:localhost:8800hh,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ff,Q!NPdjmIfsBVIIkvWBzD:localhost:8800dd,Q!NPdjmIfsBVIIkvWBzD:localhost:8800bb,Q!NanhNmCnVVpmZRJrTF:localhost:8800 +Q !NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800~~,Q!NcJYmIbgjsaKJOzBcs:localhost:8800}},Q!NQgavrmiCPUVaVjssy:localhost:8800dd,Q!NQgavrmiCPUVaVjssy:localhost:8800cc,Q!NQgavrmiCPUVaVjssy:localhost:8800bb,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ll)Q !NhWgOTYzEPRwAxRQvS:localhost:8800rr,Q!NeYaCeYNFATCqlrlGT:localhost:8800oo,Q!NeYaCeYNFATCqlrlGT:localhost:8800nn,Q!NeYaCeYNFATCqlrlGT:localhost:8800mm,Q!NeYaCeYNFATCqlrlGT:localhost:8800ll,Q!NeYaCeYNFATCqlrlGT:localhost:8800kk+Q !NeYaCeYNFATCqlrlGT:localhost:8800jj,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800+Q !NfaPEGKjnUDUTavzol:localhost:8800*Q!NZHpBquHDfJAjiawGk:localhost:8800II*Q!NZHpBquHDfJAjiawGk:localhost:8800HH*Q!NZHpBquHDfJAjiawGk:localhost:8800GG*Q!NZHpBquHDfJAjiawGk:localhost:8800FF*Q!NZHpBquHDfJAjiawGk:localhost:8800EE)Q !NZHpBquHDfJAjiawGk:localhost:8800DD,Q!NQgavrmiCPUVaVjssy:localhost:8800 jj,Q!NQgavrmiCPUVaVjssy:localhost:8800 ii,Q!NQgavrmiCPUVaVjssy:localhost:8800hh,Q!NQgavrmiCPUVaVjssy:localhost:8800gg,Q!NQgavrmiCPUVaVjssy:localhost:8800ff,Q!NQgavrmiCPUVaVjssy:localhost:8800ee+Q !NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800xx,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800  {teQa$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1013}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU"], "type": "m.room.guest_access", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041203892, "hashes": {"sha256": "bmROe22sel4nUWgBHBJcwtaBCVGSEuBP61t1NJzz6LQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3EQRyED/dkQlAunK6SdJsrxLDRwmeHODIqgIY0IhZWhL2ayML1I8faPua6u230+UfeSGSHXVPGmdRTlqagpMAw"}}, "unsigned": {"age_ts": 1570041203892}}seQa$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1012}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4"], "type": "m.room.history_visibility", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041202928, "hashes": {"sha256": "rXJ9TA4mbbPGk5/9slrCEkbdtlkOVIGzK5oCppB0mkM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lalHoLU3Y9Zp4Mu/WqH3SbelEMrehU5J1PXKqEwxM2A4spQXM5VpMqkaPpy0J9GwZ2TpEVMGrbctOQmkDdpeBQ"}}, "unsigned": {"age_ts": 1570041202928}}treQau$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1011}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw"], "type": "m.room.join_rules", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041202270, "hashes": {"sha256": "yG1DNsCpoMpSCH0HzjdE6B9f4hCNMwU80MvHB0q8dxo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Yn2VkTdl8TjETG7ZKZobiLx9AUpl3xyqdPIDYP6pTnXE8WXdnxd06Vee2LIKrui+GqvRAFZNFs25RIABV9TDw"}}, "unsigned": {"age_ts": 1570041202270}}kqeQac$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1010}{"auth_events": ["$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "type": "m.room.power_levels", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"users": {"@anon-20191002_181700-205:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041201603, "hashes": {"sha256": "OFpzHGRxCDd4Bupc3zONqe/CBzuZREtDBzqcHVvG9nk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qSPrj6rqWIDazoOSICJzzitSraqirKfU3izjoVtaXRpeZUy7Mol8Cvoi6rQeffzpEU19rY7H7hnPfheN1kAEAQ"}}, "unsigned": {"age_ts": 1570041201603}} O 8c:T)}R' { PqB % y N #k@e<g w L ! u J  si>o H DmF*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 h *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & =*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % <*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ ;*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # :*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 " 9*Q!XiwGxQKwjgutEClKUy:localhost:8829%<*Q!XiwGxQKwjgutEClKUy:localhost:8829$;m+*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YtVXQjSPgVtbxrzUOA:localhost:8800i*Q!YtVXQjSPgVtbxrzUOA:localhost:8800h*Q!YtVXQjSPgVtbxrzUOA:localhost:8800g*Q!YtVXQjSPgVtbxrzUOA:localhost:8800f*Q!YtVXQjSPgVtbxrzUOA:localhost:8800e*Q!YtVXQjSPgVtbxrzUOA:localhost:8800d*Q!YgaGPEraeLCqHQirin:localhost:8800?E*Q!YgaGPEraeLCqHQirin:localhost:8800<B*Q!YgaGPEraeLCqHQirin:localhost:8800;A*Q!YgaGPEraeLCqHQirin:localhost:8800:@*Q!YgaGPEraeLCqHQirin:localhost:88009?*Q!YgaGPEraeLCqHQirin:localhost:88008>*Q!YgaGPEraeLCqHQirin:localhost:88007=*Q!YQATbgbLImCDamiDHC:localhost:8800 *Q!YQATbgbLImCDamiDHC:localhost:8800 *Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 W *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q a} { y w u sqomkigeca~eeQ$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~ eeQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~ eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800~ eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~ eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~ eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800 KPx"' U k  v : P[05:`OwleQ'1$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800joingTeQ3 $n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_accessmSeQ? $nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibilityeReQ/ $5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rulesgQeQ3 $U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels PeQ']$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800joinaOeQ' $YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800m.room.creategkeQ3 $AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_accessmjeQ? $rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibilityeieQ/ $xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rulesgheQ3 $JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels geQ']$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800joinafeQ' $yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800m.room.createweeQ'1$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800joinmdeQ? $YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilitygceQ3 $Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_accesseaeQ/ $N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rulesg`eQ3 $pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels _eQ']$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800joina^eQ' $_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.createw]eQ'1$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800joinm\eQ? $dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibilityg[eQ3 $1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_accesseYeQ/ $aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rulesgXeQ3 $gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels WeQ']$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800joinaVeQ' $kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800m.room.createwUeQ'1$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800join TT)}R' { P % y N # w L ! u J  s H qFqFoDmBk@i>qH*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829(Q!NZHpBquHDfJAjiawGk:localhost:8800II(Q!NZHpBquHDfJAjiawGk:localhost:8800HH(Q!NZHpBquHDfJAjiawGk:localhost:8800GG(Q!NZHpBquHDfJAjiawGk:localhost:8800FF(Q!NZHpBquHDfJAjiawGk:localhost:8800EE(Q!NZHpBquHDfJAjiawGk:localhost:8800DD*Q!NQgavrmiCPUVaVjssy:localhost:8800jj*Q!NQgavrmiCPUVaVjssy:localhost:8800ii*Q!NQgavrmiCPUVaVjssy:localhost:8800hh*Q!NQgavrmiCPUVaVjssy:localhost:8800gg*Q!NQgavrmiCPUVaVjssy:localhost:8800ff*Q!NQgavrmiCPUVaVjssy:localhost:8800ee*Q!NQgavrmiCPUVaVjssy:localhost:8800dd*Q!NQgavrmiCPUVaVjssy:localhost:8800cc*Q!NQgavrmiCPUVaVjssy:localhost:8800bb*Q!NQgavrmiCPUVaVjssy:localhost:8800aa*Q!NPdjmIfsBVIIkvWBzD:localhost:8800ll*Q!NPdjmIfsBVIIkvWBzD:localhost:8800jj*Q!NPdjmIfsBVIIkvWBzD:localhost:8800hh*Q!NPdjmIfsBVIIkvWBzD:localhost:8800ff*Q!NPdjmIfsBVIIkvWBzD:localhost:8800dd*Q!NPdjmIfsBVIIkvWBzD:localhost:8800bb*Q!NPdjmIfsBVIIkvWBzD:localhost:8800aa*Q!NPdjmIfsBVIIkvWBzD:localhost:8800__*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NFWKQvZkIwvecnREOC:localhost:8800SS*Q!NFWKQvZkIwvecnREOC:localhost:8800RR*Q!NFWKQvZkIwvecnREOC:localhost:8800QQ*Q!NFWKQvZkIwvecnREOC:localhost:8800PP*Q!NFWKQvZkIwvecnREOC:localhost:8800OO*Q!NFWKQvZkIwvecnREOC:localhost:8800NN*Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MXhwoqNXvexeDDSOZT:localhost:8800 < <*Q!MXhwoqNXvexeDDSOZT:localhost:8800 : :*Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 6*Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 5*Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 4*Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 3*Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 2*Q!MXhwoqNXvexeDDSOZT:localhost:8800 1 1*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800  {\xeQu$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "txn_id": "91", "stream_ordering": 1017}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE"], "type": "m.room.message", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041210948, "hashes": {"sha256": "jGWOLhZZq6KyC0EhlN1P4FN7NnYK1cF3FWz02gYLSkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6gOZOmTYP+i0qRGYFyQcZL/nv+81NlUgWF83IMDeVyp+Ti7BrkTXztLEKGGrR1wIZ9CiCoxdyZxkWU2orqfFAA"}}, "unsigned": {"age_ts": 1570041210948}}weQ?W$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800{"stream_ordering": 1016}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4"], "prev_events": ["$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q"], "type": "m.room.member", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@31:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "31", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@31:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041207699, "hashes": {"sha256": "KKsfEXHXUjirGon4Oe0/WtQKfVYs8QBjg8cB0u6ZMlo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vs/XYwfseepS3MnHxqfCyFzvo264hY+HNRUnBYcpY20cRidL8pY+GM7hecMXgHC7L5Z7DVkDoDxRYlZfiKxHDg"}}, "unsigned": {"age_ts": 1570041207699}}veQq$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "txn_id": "90", "stream_ordering": 1015}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo"], "type": "m.room.message", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041206753, "hashes": {"sha256": "mPWuQurmpTUKJWQrglQ6rtaeTCWRfAPcYomtMRV5MZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pmJcEiPb6FtfjqGKk4rLuDgSqnWxhw6+ARxVM9CqT1JwQgv53XhloJbzlwWXtC0tILi3CSxwO1MvahAcUxICCQ"}}, "unsigned": {"age_ts": 1570041206753}}ueQm$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "txn_id": "89", "stream_ordering": 1014}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU"], "type": "m.room.message", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041205225, "hashes": {"sha256": "m6LKXzqgzg0pDAT1zt/Mgvt3wKpj0mgI6F8avT1dURw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ZOUE6QRMlfIrFLySys8EnjhRGbBGSf53z/M/xS0sLT7fr7Bqp+cjLZy3QAmkQTUHtxzyUcNlNHKPA60tylICg"}}, "unsigned": {"age_ts": 1570041205225}} %u+T  @ f  =`N{;e"Lug eQ%$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800content.bodysharedj eQ%$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800content.bodypost_joini eQ%$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:8800content.bodypre_joing eQ%$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:8800content.bodysharedi eQ%$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800content.bodypre_joingeQ%$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800content.bodysharedjeQ%$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800content.bodypost_joinieQ%$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800content.bodypre_joingeQ%$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800content.bodysharedgeQ%$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800content.bodypublicheQ%$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800content.bodyprivateheQ%$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo!DoiZErAdypBUMZKaeJ:localhost:8800content.bodyprivateheQ%$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800content.bodyprivateeeQ%$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800content.bodymiceeeQ%$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800content.bodymicee~eQ%$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800content.bodymicee}eQ%$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800content.bodymicem|eQ%%$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800content.bodyAfter invitel{eQ%#$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800content.bodyBefore joinmzeQ%%$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800content.bodyAfter invitelyeQ%#$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800content.bodyBefore joinmxeQ%%$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800content.bodyAfter invitelweQ%#$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800content.bodyBefore joinmveQ%%$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:8800content.bodyAfter invitelueQ%#$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:8800content.bodyBefore joinmteQ%%$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800content.bodyAfter invitelseQ%#$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800content.bodyBefore joinjreQ%$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800content.bodypost_joiniqeQ%$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800content.bodypre_joingpeQ%$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800content.bodysharedjoeQ%$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800content.bodypost_joinineQ%$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800content.bodypre_joingmeQ%$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800content.bodysharedjleQ%$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800content.bodypost_joinikeQ%$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800content.bodypre_joingjeQ%$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800content.bodysharedjieQ%$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800content.bodypost_join   *t|eQau$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1021}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ"], "type": "m.room.join_rules", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041219353, "hashes": {"sha256": "eADAHpWXU0Trb4bGFuY7JUFB3FYRBbmbkHmaRfcSJJQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l8vSIJv/KJScLcFJD+lmpcR773wIvAXIzRdb+rLpHXxITge68zGvhkDF1Zxh0KW2LdMMAQnocJQ8fLjGaPKKCw"}}, "unsigned": {"age_ts": 1570041219353}}k{eQac$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1020}{"auth_events": ["$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "type": "m.room.power_levels", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"users": {"@anon-20191002_181700-206:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041218114, "hashes": {"sha256": "VyvJt2okM4ZT9OeCxmbQ0a3B+NfV6S5RMYEd0R3bELA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ROnx8MdL4VnmczT2/W2xBbNy7MW9uBTPbLP9UOExF5tZ+kxo2oajY55mvftTmnU6r4omE7ADrIDwxva/ZSTJCw"}}, "unsigned": {"age_ts": 1570041218114}}vzeQay$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1019}{"auth_events": ["$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc"], "prev_events": ["$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc"], "type": "m.room.member", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-206", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-206:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041216339, "hashes": {"sha256": "LngqVcK/sLmz6jYWQrE9njDLFB1WxfuslJ6mWFVHlaM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Plt/0A4/Ne0ZxuAlz0oSooI+9lTZXEUMOYIP49wQKHjmQHhTAh8nRdnVkRXam14MNg7yKmv7P6kxCGQpgcIRBA"}}, "unsigned": {"age_ts": 1570041216339}}iyeQa_$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1018}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-206:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041214484, "hashes": {"sha256": "1b2fLE7TW7wiiWOFfagzv6nx8DPS6ubF5Eqh3ePO4lM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zLPNLuu/VdVx80ou+5tq2Qwy0zpduZYJfeOaP+Grq8yiu6E5I5fE8y5zUIix3JewLYpuua25tTobn2mdfLQBBA"}}, "unsigned": {"age_ts": 1570041214484}} ,NC 8 - { " p  e ZOD9.|#qf V$eL$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Isha256{J X eݵ^ t=nCzmeV#eL$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIsha256.Spq]J|8ɱIXS0WBV"eL$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0sha256,baTLY \uA@"\V!eL$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ksha256DMjsH.T>i7u @WV eL$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8sha256|w8\-u`>0I1eVeL$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgsha256%0yxCtZƓ kpQ"4,>VeL$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngsha256dlb1&TN1 O<'VVeL$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Isha256$zCفL1% /5ZHCVeL$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Asha256+ mWz9h%˖B8VeL$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMksha256[lcZJfr]O|5+2VeL$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0ksha256?6 BξV_T.!ؙ la^IVeL$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8sha256lW%j&{*6| 0g23,VeL$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcsha256:o۷ OMtiS}VeL$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Msha256*1/\6<[)Tm[VeL$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcsha256OTi))b@w;WVeL$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8sha256ATˋ{4?$o;v"Ǐ2îa/_VeL$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEsha256. skKsXW'9{VeL$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgsha256VLXYpPn|P nVeL$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSksha256"r^7!\crRZ{!e)VeL$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8ssha256&FW!qDMʙ9z ]h+LJVeL$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUsha2565BC!ڠ'ۦܻ r9uVeL$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIsha2566O֘QTU,ȗaI ^fY ;VeL$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Qsha256#"LջGNVVl8vV eL$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIsha256@(nwAv4|O0XbL =)?2V eL$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BEsha256lKB \'Svn:fm)WV eL$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYsha256b~0ljK L%OZh\qPV eL$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8sha256DiQ[^5xE Tt.uV eL$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbksha256Caݱ@Q yU «ã6(݃SiRQVeL$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-ksha256d8/1yUy~~6t KzVeL$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgsha2567jDܿ8w2mTmKMŁLti匨VeL$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZksha256ST[t CE`éVVeL$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgsha256wⱟκJc1VeL$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60sha256  91CL^K7)VeL$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlIsha256]|/&nԧ"H͍ ȎbRVeL$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmssha256UtYâG`&.k0WPRK_kVeL$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0sha256P9@óUw4S__VeL$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8sha256vvOJ10b|:̈R|E r6[VeL$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwsha256g f^ mz7i+E^`B|V~eL$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28sha256e\Z5 -uzrh_9(aLx3oV}eL$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAsha256ښE80_l4= :E[.]V|eL$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYsha256h׌ yl7(w<˕`V{eL$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQsha256dY).:ZzxLttMUVzeL$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMsha256N W@t{=]t^^;g}qBdݓVyeL$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcsha2562[VtlfQ}^g !lp%  8 ; ] Pps(HKm`ilj1Q3 e&!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo 0Q']e%!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Id/Q' e$!eJPTUgihvSwaOhIkrC:localhost:8800m.room.create$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI .Q']e"!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kj-Q3 e !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_access$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg,Q? ee!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Ip+Q? e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Ih*Q/ e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rules$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Aj)Q3 e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk (Q']e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kd'Q' e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.create$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8v&Q'1e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Mj%Q3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_access$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEp$Q? e!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibility$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgh#Q/ e!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rules$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkj"Q3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s !Q']e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUd Q' e!YufaOfAlruTdjyUCwO:localhost:8800m.room.create$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIvQ'1e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIQ? ee !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kjQ3 e !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_access$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkpQ? e !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-khQ/ e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rules$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgjQ3 e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk Q']e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgdQ' e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.create$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60vQ'1e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsQ? ee!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAjQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_access$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28pQ? e!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAhQ/ e!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rules$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYjQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ Q']e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM  wsHeQa$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1025}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw"], "type": "m.room.history_visibility", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041225381, "hashes": {"sha256": "jcZr3j7PIklrD3tQpvFj66RLxFIOho6lX2k7ym14mmA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SUt73Hr3JTlEtsfyIgjOyS2nj2uApeGp4P/BSNG3arqX43ImOPz8FPH8kX+lzsgmtiPRw7H2PNaioLmEzeABCA"}}, "unsigned": {"age_ts": 1570041225381, "replaces_state": "$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA"}}eQm$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "txn_id": "92", "stream_ordering": 1024}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28"], "type": "m.room.message", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041224247, "hashes": {"sha256": "ZuAvqOxkoMuxwB1rxAKkFUZO2e6ntKxGDoFtn5PgaGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbgpdfiTBCLCmNQY0Hg5EBYBRZQunHl2aQlenc7sHVBWqkFNFg4CCSOC07m3jcOrb3MdNv26Zy0wT3bBMoLeDw"}}, "unsigned": {"age_ts": 1570041224247}}{~eQa$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1023}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA"], "type": "m.room.guest_access", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041222680, "hashes": {"sha256": "gjSkukE+vKkdYZx5h2M8JtvHtz5Y1Fj3+DlYdtf1ck8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EswM7W5JWxxO3DjT45f5t4kGXuFD16XbNUO5q77y0f5OnBOpU5RcOfc/FFfkdBpW1rPcakyZnbMwWsALvR2YBg"}}, "unsigned": {"age_ts": 1570041222680}}}eQa$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1022}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY"], "type": "m.room.history_visibility", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041220862, "hashes": {"sha256": "9Dmlu0o0OKVfw4CAUdYL2fBDyuGZOL6JY3c14XLsfAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9+EP4VPuljF8PkoEl2CID7UwzK8AC/vNhNE0wktj4ddGk/Icxe2vsFIypw+r20+FGDqTb3wHnKikBB0O/5CkAw"}}, "unsigned": {"age_ts": 1570041220862}} ,J^0zLvHd6 R $ l >  Z t F  b 4 |N j<V(pBf8 R$-]@anon-20191002_181700-300:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800E-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-236:localhost:8800+[@anon-20191002_181700-29:localhost:8800Q-]@anon-20191002_181700-299:localhost:8800-]@anon-20191002_181700-299:localhost:8800-]@anon-20191002_181700-298:localhost:8800-]@anon-20191002_181700-298:localhost:8800-]@anon-20191002_181700-297:localhost:8800-]@anon-20191002_181700-297:localhost:8800-]@anon-20191002_181700-296:localhost:8800-]@anon-20191002_181700-296:localhost:8800-]@anon-20191002_181700-295:localhost:8800-]@anon-20191002_181700-295:localhost:8800-]@anon-20191002_181700-294:localhost:8800-]@anon-20191002_181700-294:localhost:8800-]@anon-20191002_181700-293:localhost:8800-]@anon-20191002_181700-292:localhost:8800-]@anon-20191002_181700-291:localhost:8800-]@anon-20191002_181700-290:localhost:8800~+[@anon-20191002_181700-28:localhost:8800P-]@anon-20191002_181700-289:localhost:8800|-]@anon-20191002_181700-288:localhost:8800v-]@anon-20191002_181700-287:localhost:8800t-]@anon-20191002_181700-286:localhost:8800p-]@anon-20191002_181700-284:localhost:8800k-]@anon-20191002_181700-283:localhost:8800f-]@anon-20191002_181700-282:localhost:8800d-]@anon-20191002_181700-281:localhost:8800c-]@anon-20191002_181700-280:localhost:8800_+[@anon-20191002_181700-27:localhost:8800O-]@anon-20191002_181700-279:localhost:8800Z-]@anon-20191002_181700-277:localhost:8800U-]@anon-20191002_181700-276:localhost:8800P-]@anon-20191002_181700-275:localhost:8800L-]@anon-20191002_181700-274:localhost:8800N-]@anon-20191002_181700-273:localhost:8800M-]@anon-20191002_181700-272:localhost:8800F-]@anon-20191002_181700-271:localhost:88009-]@anon-20191002_181700-270:localhost:8800D.-]@anon-20191002_181700-270:localhost:88007+[@anon-20191002_181700-26:localhost:8800N-]@anon-20191002_181700-269:localhost:88002-]@anon-20191002_181700-268:localhost:88001-]@anon-20191002_181700-267:localhost:88003-]@anon-20191002_181700-266:localhost:8800+-]@anon-20191002_181700-265:localhost:8800%-]@anon-20191002_181700-264:localhost:8800#-]@anon-20191002_181700-263:localhost:8800-]@anon-20191002_181700-262:localhost:8800-]@anon-20191002_181700-261:localhost:8800-]@anon-20191002_181700-260:localhost:8800+[@anon-20191002_181700-25:localhost:8800M-]@anon-20191002_181700-259:localhost:8800-]@anon-20191002_181700-258:localhost:8800-]@anon-20191002_181700-257:localhost:8800 -]@anon-20191002_181700-254:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800+[@anon-20191002_181700-24:localhost:8800L-]@anon-20191002_181700-249:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800 Nj8p> ( v D  } K  3 ` R X & . _ -ek9q? xFMS"Z1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgs1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE m1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi01e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgw1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4h1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU%1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo31e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwT0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 91e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM>1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0B1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQt1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQQ1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY 0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0i1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo I1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgM1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8j0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcM1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk :1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQR1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68D1e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUP1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 )1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4W1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A41e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcr0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y%1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEz1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw51e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8m1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sV1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI 31e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA]0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw21e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM,1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygv1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF031e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM=1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE741e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ#1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU#1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs{1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQn1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgB1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY '1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew z1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os 1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkH ~z v r n j fb^ZVRNJF'eeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800&eeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800%eeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800$eeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800#eeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800"eeQ$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800!eeQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800 eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800eeQ$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800eeQ$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800eeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800eeQ$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800eeQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800 he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     ~|{zyxwvusrqponlkjihgfdcba`_^[[ZYXWVTSRQPONLKJIHFDCCBA@?=<;:987543210.-,+*('&%$"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK~}| { y x w vutsqponlkjihfedcb`_^]\ZYXWVUTRQPONMIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     }|{zyxwvtsrqpomlkjihgedcba`_]\[ZYXWUTSRQPOMLKJIGFEDCBA@>=<;:98654321/.-,+)('&%#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK~} | z y x wvutrqpomlkjigfedca`_^][ZYXWVUSRQPONIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  j yWjieQa_$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1029}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-207:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041233669, "hashes": {"sha256": "bcJjTaICmjnz8e7sOhFE3y6LEvs5WXQEaS4oqGFjy1I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TCY/c+e/nMcnTmfbpcsrUcTEMbynbMnpOEaw7SIGXgaJGcznOb2B8Atk8BYhF117GGOf7rp1avkKaInT/Xl0Cw"}}, "unsigned": {"age_ts": 1570041233669}}eQu$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "txn_id": "94", "stream_ordering": 1028}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms"], "type": "m.room.message", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"msgtype": "m.text", "body": "post_join"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041229332, "hashes": {"sha256": "/0GO832/vG6GGaOL+AC/QkZo/j/cXXL0MZYb63XQ0zA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sVB+0YFzm29FEBC+sCTT6cYOl8JYnxKKOBvQ0bPg6Obq2KvYY+oHSnwdNgAOgBqsjquB8JfZu7aavCSQ4vOhDw"}}, "unsigned": {"age_ts": 1570041229332}}eQ?Y$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800{"stream_ordering": 1027}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY"], "prev_events": ["$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0"], "type": "m.room.member", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@32:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "32", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@32:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041227712, "hashes": {"sha256": "rIJ+qEOC7XcOSta2bE1QXLppMtacgHxanOTD/ODyM5E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UoHgHKnG3gxmSq6UbBrU2Hq8gWxe90vHEBvvlYodawlQx1w6+TEM8urMEJe7TuOWsl+zrG0A7kF3YVrVxu7yDw"}}, "unsigned": {"age_ts": 1570041227712}}eQq$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "txn_id": "93", "stream_ordering": 1026}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8"], "type": "m.room.message", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041226714, "hashes": {"sha256": "CC69l4MvlaUK/T60s/MUbPoy/AVaHlz7mTGIf/DnW7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oh3ud+jG9UfoOR4MRyKX4XdX3WuRXS3vG89MyFRsFL0g5QtEDSD9i1wrBsUiUx9M6t2w1sbDbGyB4W5qQktLAw"}}, "unsigned": {"age_ts": 1570041226714}} M.k9q? ` y G   M   T " [ ) a 046hn< vD|JfR!Z(1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cg1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8b1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8]1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8K1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMI1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg@1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF471e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i801e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE,1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j81e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ0e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAO0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM80e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o/0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds71e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY0e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4.1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe681e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn41e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk01e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk701e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYd1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUD1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc21e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI0e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Disx1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwl1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mku1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o.1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Us0e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>0e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsQ1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR41e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY IxP((`8pxh@P H  H (h@XX0 p0` 8   `8 P(h@`8xP('Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800 %'Q!UTAORDrNxIbSlGByAp:localhost:8800 #'Q!UTAORDrNxIbSlGByAp:localhost:8800 !'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800 +'Q!UTAORDrNxIbSlGByAp:localhost:8800 *'Q!UTAORDrNxIbSlGByAp:localhost:8800 )'Q!UTAORDrNxIbSlGByAp:localhost:8800 ('Q!UTAORDrNxIbSlGByAp:localhost:8800 ''Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800{'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 -'Q!UTAORDrNxIbSlGByAp:localhost:8800 , ('Q!UMFUOnYRvwKwSPkYHB:localhost:8800z'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 /'Q!UTAORDrNxIbSlGByAp:localhost:8800 .'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800~'Q!UMFUOnYRvwKwSPkYHB:localhost:8800}'Q!UMFUOnYRvwKwSPkYHB:localhost:8800|'Q!UTAORDrNxIbSlGByAp:localhost:8800 2'Q!UTAORDrNxIbSlGByAp:localhost:8800 1'Q!UTAORDrNxIbSlGByAp:localhost:8800 0'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!URpLZLuBfVcfHVTBGS:localhost:8800 PP'Q!URpLZLuBfVcfHVTBGS:localhost:8800H'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800 Dw<P d ) x =  Q  e * y > z?Sg,{@Th-|AU8H]!U@anon-20191002_181700-270:localhost:8800SRSYWQDCQU8G]!T@anon-20191002_181700-271:localhost:8800EYEJMZUSJY8E]!R@anon-20191002_181700-269:localhost:8800EDTNFCDRMR8D]!Q@anon-20191002_181700-268:localhost:8800BTQHLEFFPU8F]!S@anon-20191002_181700-267:localhost:8800LUADSGSJTG8B]!O@anon-20191002_181700-266:localhost:8800MREALOZRTW8A]!N@anon-20191002_181700-265:localhost:8800COAARRCECC8@]!M@anon-20191002_181700-264:localhost:8800DYYKUWOSTJ8?]!L@anon-20191002_181700-263:localhost:8800KUHOBSXQVM8>]!K@anon-20191002_181700-262:localhost:8800OLJVXJZUXG8=]!J@anon-20191002_181700-261:localhost:8800HLJRYNNHWE8<]!I@anon-20191002_181700-260:localhost:8800PEYMVGORHU8;]!H@anon-20191002_181700-259:localhost:8800CBTLKTDDZA8:]!G@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT89]!F@anon-20191002_181700-257:localhost:8800AZPFFCLWTK88]!E@anon-20191002_181700-255:localhost:8800QPFIMVOQLF87]!D@anon-20191002_181700-254:localhost:8800XJEYVFLUEX86]!C@anon-20191002_181700-253:localhost:8800VCNUHOFNKS85]!B@anon-20191002_181700-252:localhost:8800RURXOUWORG84]!A@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ83]!@@anon-20191002_181700-250:localhost:8800HLUDALFTVR82]!?@anon-20191002_181700-249:localhost:8800TCARNJMFBO81]!>@anon-20191002_181700-248:localhost:8800SFZRVIZXHM80]!=@anon-20191002_181700-246:localhost:8800VWLZTFZJKU8/]!<@anon-20191002_181700-247:localhost:8800TRPUOTMOOT8.]!;@anon-20191002_181700-245:localhost:8800BMGHUZBIKD8-]!:@anon-20191002_181700-244:localhost:8800VWUTZPSOAH8,]!9@anon-20191002_181700-243:localhost:8800FMNGREYZML8+]!8@anon-20191002_181700-242:localhost:8800AYBUQGWFIB8*]!7@anon-20191002_181700-241:localhost:8800AXXWURZRJC8)]!6@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ8(]!5@anon-20191002_181700-239:localhost:8800WFWDJJSKCM8']!4@anon-20191002_181700-238:localhost:8800CJBYPQAOBX8&]!3@anon-20191002_181700-237:localhost:8800GTKLCHUYBN$%1%2@36:localhost:8800guest_device8$]!1@anon-20191002_181700-236:localhost:8800ALVQESJRHC$#1%0@35:localhost:8800guest_device8"]!/@anon-20191002_181700-235:localhost:8800OYRPJJEYFG8!]!.@anon-20191002_181700-234:localhost:8800KLAICDFHKH8 ]!-@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY8]!,@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!+@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!*@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB8]!)@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!(@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!'@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!&@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!%@anon-20191002_181700-225:localhost:8800ZNKOABDJUU8]!$@anon-20191002_181700-224:localhost:8800VJTZAJOEFY8]!#@anon-20191002_181700-223:localhost:8800IOQWEQAUDW8]!"@anon-20191002_181700-222:localhost:8800VOKSLIDSSO8]!!@anon-20191002_181700-221:localhost:8800REITENATXK8]! @anon-20191002_181700-220:localhost:8800OOLATWHSMP8]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8 ]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP8 ]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH8 ]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN8 ]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM8 ]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY$1%@34:localhost:8800guest_device8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC$1%@33:localhost:8800guest_device =z@^%Us: V  r 9  Z ! v =  [ "w>Z#x?["yzA]$8]!@anon-20191002_181700-38]!@anon-20191002_181700-331:localhost:8800COONNUXFOLU8]!@anon-20191002_181700-283:localhost:8800GHCLSNIYIA&8]!@anon-20191002_181700-282:localhost:8800MZNVLNKEUX%8]!@anon-20191002_181700-281:localhost:8800HVGEGIPOZP$8]!@anon-20191002_181700-280:localhost:8800PLHJASTUFR#6[!@anon-20191002_181700-27:localhost:8800TWNKNEABLT78]!@anon-20191002_181700-279:localhost:8800DVKCMEFQMC"8]!@anon-20191002_181700-278:localhost:8800OHJBILRNUP!8]!@anon-20191002_181700-277:localhost:8800YSVOUTLGFP 8]!@anon-20191002_181700-330:localhost:8800TFGJMHITULT6[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCB<8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLSS8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUOR8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHCQ8]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYTP8]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGSO8]!@anon-20191002_181700-324:localhost:8800KKATIXOBNFN8]!@anon-20191002_181700-323:localhost:8800BHOVENVWZCM8]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTL8]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCK8]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBJ6[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC;8]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAI8]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJH8]!@anon-20191002_181700-317:localhost:8800KSXFFXWMCBG8]!@anon-20191002_181700-316:localhost:8800JHIWJLKOFGF8]!@anon-20191002_181700-315:localhost:8800KXXAQONTRLE8]!@anon-20191002_181700-314:localhost:8800BTSWZNQVTPD8]!@anon-20191002_181700-312:localhost:8800LFIOTRIQVMC8]!@anon-20191002_181700-311:localhost:8800BNVFQNMSXMB8]!@anon-20191002_181700-310:localhost:8800UKYXDPZQOOA6[!@anon-20191002_181700-30:localhost:8800STWEJRRVAK:8]!@anon-20191002_181700-309:localhost:8800OEPQWZYGAR@8]!@anon-20191002_181700-308:localhost:8800VRKBCOUWEF?8]!@anon-20191002_181700-307:localhost:8800BEZNVUIADU>8]!@anon-20191002_181700-306:localhost:8800XZDIPYWWOD=8]!@anon-20191002_181700-305:localhost:8800PDQTBQSPGX<8]!@anon-20191002_181700-304:localhost:8800MQWNAFYDXK;8]!@anon-20191002_181700-303:localhost:8800FUOYNGGDMQ:8]!@anon-20191002_181700-302:localhost:8800PAWIWMHYHH98]!@anon-20191002_181700-301:localhost:8800SJPGITTBTX88]!@anon-20191002_181700-300:localhost:8800ZZJIQPLATK75Y!@anon-20191002_181700-2:localhost:8800RDNVTAXLBR6[!@anon-20191002_181700-29:localhost:8800WSREAIROYN98]!@anon-20191002_181700-299:localhost:8800BPDORAMNSE68]!@anon-20191002_181700-298:localhost:8800GTROHDSCGV58]!@anon-20191002_181700-297:localhost:8800DVSKNCGFXX48]!@anon-20191002_181700-296:localhost:8800SBLEQBXZQL38]!@anon-20191002_181700-295:localhost:8800CIYGWJHPPN28]!@anon-20191002_181700-294:localhost:8800RKGLRVXFMG18]!@anon-20191002_181700-293:localhost:8800PVLMJRXINQ08]!@anon-20191002_181700-292:localhost:8800GGCVZACJDJ/8]!@anon-20191002_181700-291:localhost:8800OPDSPHGDRK.8]!@anon-20191002_181700-290:localhost:8800HIUKIRMYDG-6[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZU88]!@anon-20191002_181700-289:localhost:8800WRUIAYGXAN,8]!@anon-20191002_181700-288:localhost:8800BKSOCJCTFT+8]!@anon-20191002_181700-287:localhost:8800UVZQFXTZFV*8]!@anon-20191002_181700-286:localhost:8800SFUJRXTQDY)8]!@anon-20191002_181700-285:localhost:8800RKYDKAHKAA(8]!@anon-20191002_181700-284:localhost:8800IDXGKZHMAK'  eQa$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1033}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg"], "type": "m.room.history_visibility", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041239356, "hashes": {"sha256": "uyGh34b8bO8E/z6YU9yEVcgiTjKfw4qwEpNuo7RSvus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZH28LgEBs5PeUdSJrBAmbYeHcHdenb7B3eES4FnFrHV4GyGU2+A9zds92alXN9SM4NFfFwt+mHCHqtC7902EAg"}}, "unsigned": {"age_ts": 1570041239356}}teQau$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1032}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk"], "type": "m.room.join_rules", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041238064, "hashes": {"sha256": "8GHxA/XBe78yI7qCGYQlLqFJ1IbofEPtt1oSF87hc+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n9tLco7VlJgbDJnLn66J+2MNvxl/LMvyKFEcXSSs4Jw9hQBfbYZJ+TAZy7g8Nr2IzzCp7euRLRzklYDPF7SXCQ"}}, "unsigned": {"age_ts": 1570041238064}}keQac$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1031}{"auth_events": ["$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "type": "m.room.power_levels", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"users": {"@anon-20191002_181700-207:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041236550, "hashes": {"sha256": "Ml6JMMExiIWVMWMSPRpeUwYjiakq9DaTDlZah0+Jk4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iwGGacn5imj8KHY0yQbvTUObQlfX0NmFsNigEOpcCaPpKPcGLOCktJJbD38P94vR+5yL5L+4A0WRb+sEHybVCw"}}, "unsigned": {"age_ts": 1570041236550}}veQay$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1030}{"auth_events": ["$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60"], "prev_events": ["$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60"], "type": "m.room.member", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-207", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-207:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041234863, "hashes": {"sha256": "q+fbcZ2oKdqLhaBfZnUGHW0p38SxMScSMYCAEhJu9bc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x1RzMtWA+lJFthY4DUFBn7ihXL9MSrQOZWRZNUFRTEhUPVDTZ7Sulg9XpueBXUNMJplz3OtXTRuP5tvEdJuICg"}}, "unsigned": {"age_ts": 1570041234863}} 9 i & O OV!r/X!DJmK\& M  c ( j - N w_<Q3 !oznZaCpONuNDaLarkI:localhost:8800m.room.power_levels^Q']!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800:Q/ !oznZaCpONuNDaLarkI:localhost:8800m.room.join_rules<Q3 !oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levelsVGQ'/!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:testW^Q']!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800U^Q']!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800O:Q/ !oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rulesRBQ? !oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibilityS6Q' !oXKJArsPmtgaYANBrg:localhost:8800m.room.createN?Q9 !oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_aliasQEQ))!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800T<Q3 !nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels:^Q']!nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:88007:Q/ !nxLxsxzliamzflrEBs:localhost:8800m.room.join_rules=BQ? !nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibility@6Q' !nxLxsxzliamzflrEBs:localhost:8800m.room.create5<Q3 !nvclDopiBLEOKBIheH:localhost:8800m.room.power_levelsF^Q']!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800E:Q/ !nvclDopiBLEOKBIheH:localhost:8800m.room.join_rulesGBQ? !nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibilityH6Q' !nvclDopiBLEOKBIheH:localhost:8800m.room.createD:Q/ !ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state<Q3 !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels4Q# !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name^Q']!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800^Q']!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800:Q/ !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rulesBQ? !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility6Q' !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create?Q9 !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_aliasEQ))!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800<Q3 !nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levelsr^Q']!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800q:Q/ !nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rulessBQ? !nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibilityt6Q' !nteAxExBGJfaGIpuCx:localhost:8800m.room.createpBQ? !oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibility6Q' !oznZaCpONuNDaLarkI:localhost:8800m.room.create<Q3 !ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levelsp^Q']!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800u^Q']!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800n:Q/ !ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_rulesrBQ? !ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibilityt6Q' !ozgnwUlebxvzLVwyHW:localhost:8800m.room.createk;Q3 !odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levels3Q# !odAvowLhHJcmkKlxFk:localhost:8800m.room.name\Q'[!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:88009Q/ !odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rulesAQ? !odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibility5Q' !odAvowLhHJcmkKlxFk:localhost:8800m.room.create<Q3 !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levels ^Q']!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800 RQ'E!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455 :Q/ !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules BQ? !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility 6Q' !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.create pV T Z ' 75]r p,e?Q ]$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Im.room.history_visibility!sfXbvAcOUJhzGwWEpZ:localhost:8800mm^@anon-20191002_181700-209:localhost:8800$e/Q ]$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Am.room.join_rules!sfXbvAcOUJhzGwWEpZ:localhost:8800mmH@anon-20191002_181700-209:localhost:8800&e3Q ]$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkm.room.power_levels!sfXbvAcOUJhzGwWEpZ:localhost:8800mmmM@anon-20191002_181700-209:localhost:8800 e'Q ]$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0km.room.member!sfXbvAcOUJhzGwWEpZ:localhost:8800mMm@anon-20191002_181700-209:localhost:8800 e'Q  ]$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8m.room.create!sfXbvAcOUJhzGwWEpZ:localhost:8800mm@anon-20191002_181700-209:localhost:8800!e)Q ] $jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcm.room.message!YufaOfAlruTdjyUCwO:localhost:8800 m m@anon-20191002_181700-208:localhost:8800 e'Q 1 $1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Mm.room.member!YufaOfAlruTdjyUCwO:localhost:8800 msmt@34:localhost:8800!e)Q ]$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcm.room.message!YufaOfAlruTdjyUCwO:localhost:8800mmumm}@anon-20191002_181700-208:localhost:8800!e)Q ]$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8m.room.message!YufaOfAlruTdjyUCwO:localhost:8800mh?mhC@anon-20191002_181700-208:localhost:8800&e3Q ]$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEm.room.guest_access!YufaOfAlruTdjyUCwO:localhost:8800mamb@anon-20191002_181700-208:localhost:8800,e?Q ]$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgm.room.history_visibility!YufaOfAlruTdjyUCwO:localhost:8800mVm\m@anon-20191002_181700-208:localhost:8800$e/Q ]$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkm.room.join_rules!YufaOfAlruTdjyUCwO:localhost:8800mQamSi@anon-20191002_181700-208:localhost:8800&e3Q ]$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sm.room.power_levels!YufaOfAlruTdjyUCwO:localhost:8800mLmN@anon-20191002_181700-208:localhost:8800 e'Q ]$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUm.room.member!YufaOfAlruTdjyUCwO:localhost:8800mI#mI@anon-20191002_181700-208:localhost:8800 e'Q  ]$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIm.room.create!YufaOfAlruTdjyUCwO:localhost:8800mCmD@anon-20191002_181700-208:localhost:8800!e)Q ] $uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Qm.room.message!ifQxHmNAcSSGHVMjfi:localhost:8800 m8m8@anon-20191002_181700-207:localhost:8800 e'Q 1 $QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIm.room.member!ifQxHmNAcSSGHVMjfi:localhost:8800 m3%m3@33:localhost:8800! e)Q ] $bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BEm.room.message!ifQxHmNAcSSGHVMjfi:localhost:8800 m-m0n@anon-20191002_181700-207:localhost:8800, e?Q ]$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYm.room.history_visibility!ifQxHmNAcSSGHVMjfi:localhost:8800m)um*.@anon-20191002_181700-207:localhost:8800! e)Q ]$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8m.room.message!ifQxHmNAcSSGHVMjfi:localhost:8800m$Qm$V@anon-20191002_181700-207:localhost:8800& e3Q ]$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkm.room.guest_access!ifQxHmNAcSSGHVMjfi:localhost:8800mQm@anon-20191002_181700-207:localhost:8800, e?Q ]$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-km.room.history_visibility!ifQxHmNAcSSGHVMjfi:localhost:8800m<m@anon-20191002_181700-207:localhost:8800$e/Q ]$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgm.room.join_rules!ifQxHmNAcSSGHVMjfi:localhost:8800m0m@anon-20191002_181700-207:localhost:8800&e3Q ]$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZkm.room.power_levels!ifQxHmNAcSSGHVMjfi:localhost:8800m Fm@anon-20191002_181700-207:localhost:8800 a} { y w u sqomkigeca~>eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~=eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~<eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~;eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~:eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~9eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~8eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~7eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~6eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~5eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~4eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~3eeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~2eeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~1eeQ$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~0eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800~/eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~.eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~-eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~,eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~+eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~*eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~)eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~(eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~'eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~&eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~%eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~$eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~#eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~"eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~!eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~ eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800  1 eQq$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "txn_id": "96", "stream_ordering": 1037}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY"], "type": "m.room.message", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041245174, "hashes": {"sha256": "rD6ckRb22CqvnqPT0xiZa8pIAesAGbqQcu1LYR4gn2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWAN9WlJ4gZYU7zJJjO7bJuCRHD9RYUmOrCSpBsfrGOY+InMb4z0eWOdN6GHMUjDQ9R/uwhDfeKZ6QsGajBFAg"}}, "unsigned": {"age_ts": 1570041245174}}G eQa$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1036}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8"], "type": "m.room.history_visibility", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041244021, "hashes": {"sha256": "e10owe0zuaMydClkOIQCJbq3ADxYLJ5ZaslPVwGkaNs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mH15Ym+OnyVq7zDHRbeYozoZiQ2c90XkMI0K4qJKQaJTULplvptOZhIKByV3qT81jUgBh9sJvdMMtc5NN3xSAA"}}, "unsigned": {"age_ts": 1570041244021, "replaces_state": "$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k"}} eQm$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "txn_id": "95", "stream_ordering": 1035}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk"], "type": "m.room.message", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"msgtype": "m.text", "body": "shared"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041242705, "hashes": {"sha256": "Ht5Mv2g7JbC/S7vb4FdFqF8rKL2bFtuOE/nm11ZeMkw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZOX5UKBWP3mXxLeKhWoh8CG7rAW8FSrpwAvJG3znrwaOXabQ6hx2nRiCjp2e0x8Gyp7OhMWBRHhydY+AMISzBw"}}, "unsigned": {"age_ts": 1570041242705}}{ eQa$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1034}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k"], "type": "m.room.guest_access", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041241425, "hashes": {"sha256": "mOUJjD/FnGRd2AH86UoLItpO3L68NQfxB5Q4EQbW3lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fPmyLn90x001C9TKrr+PhmuvSj/k+dTP46mzU9LhvaQR8AkuC/H9v3Eqx1s8X4lNqbQIJ/HZ/213CIKbHZQHBQ"}}, "unsigned": {"age_ts": 1570041241425}} -RM H C > 9 4/*|%w rmhc T<Qe7!FklhVuCInffbDxunWv:localhost:8800$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4UT;Qe6!FklhVuCInffbDxunWv:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sT:Qe5!FklhVuCInffbDxunWv:localhost:8800$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0T9Qe4!FklhVuCInffbDxunWv:localhost:8800$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9AT8Qe3!FklhVuCInffbDxunWv:localhost:8800$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYT7Qe2!FklhVuCInffbDxunWv:localhost:8800$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgT6Qe1!FklhVuCInffbDxunWv:localhost:8800$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMT5Qe0!FklhVuCInffbDxunWv:localhost:8800$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-JwT4Qe/!FklhVuCInffbDxunWv:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0T3Qe.!FklhVuCInffbDxunWv:localhost:8800$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQT2Qe-!eJPTUgihvSwaOhIkrC:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQT1Qe,!eJPTUgihvSwaOhIkrC:localhost:8800$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMT0Qe+!eJPTUgihvSwaOhIkrC:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMT/Qe*!eJPTUgihvSwaOhIkrC:localhost:8800$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxAT.Qe)!eJPTUgihvSwaOhIkrC:localhost:8800$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4ET-Qe(!eJPTUgihvSwaOhIkrC:localhost:8800$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQT,Qe'!eJPTUgihvSwaOhIkrC:localhost:8800$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewT+Qe&!eJPTUgihvSwaOhIkrC:localhost:8800$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoT*Qe%!eJPTUgihvSwaOhIkrC:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66IT)Qe$!eJPTUgihvSwaOhIkrC:localhost:8800$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIT(Qe#!sfXbvAcOUJhzGwWEpZ:localhost:8800$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0T'Qe"!sfXbvAcOUJhzGwWEpZ:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kT&Qe!!sfXbvAcOUJhzGwWEpZ:localhost:8800$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8T%Qe !sfXbvAcOUJhzGwWEpZ:localhost:8800$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgT$Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgT#Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IT"Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AT!Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkT Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kTQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8TQe!YufaOfAlruTdjyUCwO:localhost:8800$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcTQe!YufaOfAlruTdjyUCwO:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6MTQe!YufaOfAlruTdjyUCwO:localhost:8800$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcTQe!YufaOfAlruTdjyUCwO:localhost:8800$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8TQe!YufaOfAlruTdjyUCwO:localhost:8800$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaETQe!YufaOfAlruTdjyUCwO:localhost:8800$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgTQe!YufaOfAlruTdjyUCwO:localhost:8800$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkTQe!YufaOfAlruTdjyUCwO:localhost:8800$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sTQe!YufaOfAlruTdjyUCwO:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUTQe!YufaOfAlruTdjyUCwO:localhost:8800$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxITQe!ifQxHmNAcSSGHVMjfi:localhost:8800$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5QTQe!ifQxHmNAcSSGHVMjfi:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzITQe !ifQxHmNAcSSGHVMjfi:localhost:8800$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BETQe !ifQxHmNAcSSGHVMjfi:localhost:8800$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYTQe !ifQxHmNAcSSGHVMjfi:localhost:8800$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8  S K  2*| k cBt: [" eeQ$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800JeeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800 eeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800eeQ$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800فeeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800veeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800seeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800r eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800{eeQ$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800ɁeeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800 GeeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800ӁeeQ$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8!IZkczIYykpZDvjuUWn:localhost:8800{eeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800qeeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:88005eeQ$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800A w gwveQay$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1041}{"auth_events": ["$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI"], "prev_events": ["$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI"], "type": "m.room.member", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-208", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-208:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041252131, "hashes": {"sha256": "7S0iBjzevCowCUBFBErrLJHJLPH3NlqL/BRBgGbWhjI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kws6rJvib9wwzbz7ptjvh6SPat+9S7gKlmudIgp+Y7EC03kPj++Pw5bkysMVYn2T14DItZBX9MjLuNBFP8PRBg"}}, "unsigned": {"age_ts": 1570041252131}}ieQa_$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1040}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-208:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041250813, "hashes": {"sha256": "Wc1n2al5h0jkosJud/Ay1z1OdqlaOijUNXEcDQ04bDk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g77qBugO0xhuZPFMdCm5VsBcuijqho8gTqvpnqrWkwUgcHhKpNAODZOVHS1AZi5+hYx1UdmadmH9+edpiURRDQ"}}, "unsigned": {"age_ts": 1570041250813}}eQu$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "txn_id": "97", "stream_ordering": 1039}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI"], "type": "m.room.message", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041247941, "hashes": {"sha256": "ye7o4NzUhGvrJGI2VWTB0wqQjL7Waqr9s6lXZ/YK/KY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dvurxq5NyrIZCSlGoxbqP1U+xhco0fXYcyaaQjkAMNS3V65bGKLFZq0rFgMzLQ/IoGEbXnyM8Nrc0AGogj2JAQ"}}, "unsigned": {"age_ts": 1570041247941}} eQ?Y$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800{"stream_ordering": 1038}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg"], "prev_events": ["$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE"], "type": "m.room.member", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@33:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "33", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@33:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041246501, "hashes": {"sha256": "SN5Dhr8mcWsIaY5jYJLmes9ThKXuNtzBAuU3CsheGXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mCZcZ/KHzNKItMHmBC+xnNfx5U7KL1+7bDYxz9VfeRyXSBaAVhpfc0RvEtfWfmfR3avURO83eEXdjsdsz1KwCQ"}}, "unsigned": {"age_ts": 1570041246501}} g * T~=ggf]!c@anon-20191002_181700-218:localhost:8800EJUSKMCYXQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQoge]!c@anon-20191002_181700-217:localhost:8800UMNJQPXSWWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAogd]!c@anon-20191002_181700-216:localhost:8800RYBXPLVXBJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0wogc]!c@anon-20191002_181700-215:localhost:8800YMMAIPPEFOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgogb]!c@anon-20191002_181700-214:localhost:8800MEYMCWHAWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3Aoga]!c@anon-20191002_181700-213:localhost:8800LEQWCYQYGHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBqSkBkdkBPR3EzaUx4eDUKMDAyZnNpZ25hdHVyZSBVuF6NBtiMz2bEdBixHOtv14eE0aYcLIdRBBgkOtjMIQog`]!c@anon-20191002_181700-212:localhost:8800RTYZTLKABNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHUjUyZPTkhCdTZQJlozd3AKMDAyZnNpZ25hdHVyZSDa3KCf8uR1pbc8KNvlnD4kU4zB76gI3XvbVm_g7R-GrAog_]!c@anon-20191002_181700-211:localhost:8800FQOBFRKZSMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlOUGI3cm0zS0NuM28wRy4KMDAyZnNpZ25hdHVyZSD4OpM6ZfPo7DlTj2wvV2Lfc6R4avGRyYucfSs91WVPAwog^]!c@anon-20191002_181700-209:localhost:8800LYXETIOPNTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8mc1E2cU87S0JPRzsqRHQKMDAyZnNpZ25hdHVyZSCE3lpnX8pbD2KC0McwXLUdzZuwlkbmxKEofNSySIjndgog]]!c@anon-20191002_181700-210:localhost:8800PHSGQQQBDFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdzZSZ6VnRTO3ZNYmYrTG4KMDAyZnNpZ25hdHVyZSAw_sTACB0grGYIQZBZO4mmUJGT8kaw30JozrC7XeOYYwog\]!c@anon-20191002_181700-208:localhost:8800NIDXMAEJEYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGIuM1JSNklvaWNiSjg4T14KMDAyZnNpZ25hdHVyZSCx9B_4CF5OokMqPENr8hBCMYZmdCxfyfiY1V2OUK9UeAo  {eQa$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1045}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg"], "type": "m.room.guest_access", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041258440, "hashes": {"sha256": "KeA6o6xXcEbJmnoA9AcvBkrU043PJ8pIL0Ie669GCro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0lUjthgZA2MOtP2XToMYQ/niEwB1hI1n9YF0sPUFoBpu4zH6UNmiBVbgyLExcQqGncSMfixf52YLJPxb6Q7QAw"}}, "unsigned": {"age_ts": 1570041258440}}eQa$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1044}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk"], "type": "m.room.history_visibility", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041255424, "hashes": {"sha256": "n84srN09BKsg2WVu6tf2q63jY+UH2v+0W6wK1zBqo9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0V7QgIVEYjz0cLJSp4jW0FwWK4LofLF9DvPKqILKgwxo6k/9yoLUkWVBMUA7JQzY8dQG+LhaQrYLUFSrp1/iAw"}}, "unsigned": {"age_ts": 1570041255424}}teQau$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1043}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s"], "type": "m.room.join_rules", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041254241, "hashes": {"sha256": "RVU4e0E/2+o8a5J0v6YXp3Ldg+NODEA8dKoHMIKpJWQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bSLwpivaG6CwQYww+6Mp1O6O3lnaHZgQnyA33CZeI1Tgd7f99jub7J16ZXbJ5cjvwW3CvEZI8GIagHP+n5D9CA"}}, "unsigned": {"age_ts": 1570041254241}}keQac$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1042}{"auth_events": ["$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "type": "m.room.power_levels", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"users": {"@anon-20191002_181700-208:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041253115, "hashes": {"sha256": "hideaHfWM9z8QBtVgss7XNooUZVukgmVhbkjaEGDMdM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zEpSNBjZVsQ4AlNdLcqGcMuqP8reH7NgVqmhcpXpIhhNVmXkp1yNE/gM23grH/PgEf2uVVv69OCpZX/u8lcDCw"}}, "unsigned": {"age_ts": 1570041253115}} "Y$@ K u  % 0 5Y{]h B$/YgtQ/ e!HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rules$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4isQ3 e!HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs rQ']e!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQcqQ' e!HZqzpRgqekPOtxstVc:localhost:8800m.room.create$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw pQ']e!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek oQ']e!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sinQ3 e!FklhVuCInffbDxunWv:localhost:8800m.room.guest_access$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9AomQ? e!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYolQ? e!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHggkQ/ e!FklhVuCInffbDxunWv:localhost:8800m.room.join_rules$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMijQ3 e!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw iQ']e!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0chQ' e!FklhVuCInffbDxunWv:localhost:8800m.room.create$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ gQ']e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ fQ']e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMieQ3 e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_access$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4EodQ? e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibility$2DJ9MnVKofe1c6evu8PTksxjjAd_E1h06A6etRaEyococQ? e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibility$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQgbQ/ e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rules$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewiaQ3 e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo `Q']e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Ic_Q' e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.create$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI ^Q']e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ki]Q3 e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_access$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgo\Q? e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngo[Q? e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IgZQ/ e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rules$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AiYQ3 e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk XQ']e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kcWQ' e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.create$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8uVQ'1e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6MiUQ3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_access$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEoTQ? e!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibility$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrggSQ/ e!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rules$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk "&L U }  % Sy_n,R8GumGeQ? $vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibilitymFeQ? $h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibilityeEeQ/ $kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rulesgDeQ3 $ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels CeQ']$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800aBeQ' $qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800m.room.create AeQ']$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800 @eQ']$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800g?eQ3 $hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800m.room.guest_accessm>eQ? $ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibilitym=eQ? $kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibilitye<eQ/ $VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800m.room.join_rulesg;eQ3 $IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels :eQ']$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800a9eQ' $vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800m.room.create 8eQ']$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800 7eQ']$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800g6eQ3 $GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_accessm5eQ? $OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibilitye4eQ/ $IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rulesg3eQ3 $A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels 2eQ']$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800a1eQ' $py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800m.room.create 0eQ']$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800g/eQ3 $JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_accessm.eQ? $ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibilitym-eQ? $JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibilitye,eQ/ $KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rulesg+eQ3 $W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels *eQ']$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800a)eQ' $bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.creates(eQ'1$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800g'eQ3 $AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_accessm&eQ? $rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibility  {\eQu$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "txn_id": "100", "stream_ordering": 1049}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M"], "type": "m.room.message", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041265930, "hashes": {"sha256": "LT3VROhGlST1vEGS81DbnioFPKMScSt288WWAvhPmMo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M7rQIFSYcvv3/TFd5UoTKWqSy3KMplzTgBIcSB+/71E56AHpV5UEItPR818lbFszTvmy27fUw0ul7rghzmDLDQ"}}, "unsigned": {"age_ts": 1570041265930}}eQ?W$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800{"stream_ordering": 1048}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk"], "prev_events": ["$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc"], "type": "m.room.member", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@34:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "34", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@34:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041262856, "hashes": {"sha256": "NbKzEtMWKAzSpaz7gsrHLRg6MhvaKnBQqv5b+2e9ghM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CwDVDGbakdgGHdfczN223Ye6AX4st4mdPkV+muEaZvsGyO/XTjbW/kKUpgMBbKzy/LoRBwEe9/RRTI6c0FnHBg"}}, "unsigned": {"age_ts": 1570041262856}}eQq$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "txn_id": "99", "stream_ordering": 1047}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8"], "type": "m.room.message", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041261429, "hashes": {"sha256": "lwNucu3UN51XKVQ8JldiGN24LFdfmr3FrxX5eYSjl1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FIYWGT/XsnMOyZDkU9dD2S7nJhmmS9WCUWeLZCBlI1Q4JdH6ljBLq/cn4L1s/OBArGZ7p2HsAsK/wO5n3/EjAw"}}, "unsigned": {"age_ts": 1570041261429}}eQm$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "txn_id": "98", "stream_ordering": 1046}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE"], "type": "m.room.message", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041260095, "hashes": {"sha256": "sCiKWDfaCflpoqBqH9qDw7orD/FQDdCpCV1i3zG6eks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITVH3C++3UMMVLB2HJph0g2GR6/PQpqigjQ1UHkQDMNSX1ctmAnDTq653qSsIZ0J5ni1NZ5dk5WBjziiPw6XBQ"}}, "unsigned": {"age_ts": 1570041260095}} WOx"v NzO$ y' M"U*~S(|Q& N $ w | Q & z O}RvK $xM, $W { P % *Q!lEJUJZxqZPKZetemiR:localhost:8800 8 M*Q!lEJUJZxqZPKZetemiR:localhost:8800 7 L*Q!lEJUJZxqZPKZetemiR:localhost:8800 4 K*Q!lEJUJZxqZPKZetemiR:localhost:8800 3 J*Q!lEJUJZxqZPKZetemiR:localhost:8800 2 I*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RT*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QS*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PR*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OQ*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NP*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800MO*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800(Q!kxTDuIasPNpXtiRsif:localhost:8800}|(Q!kxTDuIasPNpXtiRsif:localhost:8800~})Q!kxTDuIasPNpXtiRsif:localhost:8800(Q!kxTDuIasPNpXtiRsif:localhost:8800~*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800 *Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800)*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!lEJUJZxqZPKZetemiR:localhost:8800 1 H*Q!lEJUJZxqZPKZetemiR:localhost:8800 0 G*Q!lEJUJZxqZPKZetemiR:localhost:8800 / F*Q!lEJUJZxqZPKZetemiR:localhost:8800 . E*Q!lEJUJZxqZPKZetemiR:localhost:8800 - DV*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800 a} { y w u sqomkigeca~]eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~\eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~[eeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~ZeeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~YeeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~XeeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~WeeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~VeeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~UeeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~TeeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~SeeQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~ReeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~QeeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800~PeeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~OeeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~NeeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~MeeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~LeeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~KeeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~JeeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~IeeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~HeeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~GeeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~FeeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~EeeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~DeeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~CeeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~BeeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~AeeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~@eeQ$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~?eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800  d \t< T  LD|, l$4 eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800 :eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800 leeQ$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg!IlGJpjzrvvAFuwTAgo:localhost:8800 ցeeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800ҁeeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800 6eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:88008eeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800ˁeeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800ρeeQ$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800 _eeQ$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800āeeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800 reeQ$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800+eeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:88002eeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:88008eeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800eeQ$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800%eeQ$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800 eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800 eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800   *teQau$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1053}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk"], "type": "m.room.join_rules", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041274808, "hashes": {"sha256": "y90+ENLpz5PZV+QP/Cej09l6Fmd63LsElIAAYvOqTD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/T3hhhgekExExTHgY1EvlgXB01w0SgF7GhzpxuymKZZ9sivbFD+ZGTl1aTyKlegqFBSfecbC0aEAt3v+Tv5aAQ"}}, "unsigned": {"age_ts": 1570041274808}}keQac$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1052}{"auth_events": ["$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "type": "m.room.power_levels", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"users": {"@anon-20191002_181700-209:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041272941, "hashes": {"sha256": "1T4kbYH0Lpqw//B5nsq/gN7/dFZpqd5MukmnvznbGb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eOFIbpOhJmpyjHfw+9C/O46VHrfPx1+VYAGkq8g5/K9FwsPQXrMjx7yelq4mV/Y5xEqNpBs1EHIDrD1swfMPAQ"}}, "unsigned": {"age_ts": 1570041272941}}veQay$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1051}{"auth_events": ["$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8"], "prev_events": ["$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8"], "type": "m.room.member", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-209", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-209:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041271629, "hashes": {"sha256": "I4IprA/GcuHIxGu2AkPj6a0BZYgmDyGdV8j4nXgEZLc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iYnrro+4CgzT2pO9ODKL2Ak38x+muQoWC+hOTcQ690cOPuWL9yQxIDk5hIz7k9MetZoJa4VTCGJtayvQqMnrBg"}}, "unsigned": {"age_ts": 1570041271629}}ieQa_$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1050}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-209:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041269455, "hashes": {"sha256": "cppm6piRFcLr0DcQLzTNd34aPEn4rv88elOfeFUtfI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ncNybtTO40QzOyRg7TkaSHYjluJpUvbu8EutoIdJarCJHlDJdTq0KVcEF14RSKGpR1ccTy+LY0VNPSFIt40WAw"}}, "unsigned": {"age_ts": 1570041269455}} @GN U  \  c " i - t 8CI Tu4U[f%m,9X ]@anon-20191002_181700-247:localhost:8800a&\=W ]  @anon-20191002_181700-245:localhost:8800m&\V>V ]  @anon-20191002_181700-244:localhost:8800m&\ 9U ]@anon-20191002_181700-245:localhost:8800a&\9T ]@anon-20191002_181700-244:localhost:8800a&\=S ]  @anon-20191002_181700-243:localhost:8800m&\W>R ]  @anon-20191002_181700-242:localhost:8800m&\ c9Q ]@anon-20191002_181700-243:localhost:8800a&\9P ]@anon-20191002_181700-242:localhost:8800a&\>O ]  @anon-20191002_181700-240:localhost:8800m&\>9N ]@anon-20191002_181700-241:localhost:8800a&\9M ]@anon-20191002_181700-240:localhost:8800a&\>L ]@anon-20191002_181700-239:localhost:8800m&\>K ]  @anon-20191002_181700-238:localhost:8800m&\9J ]@anon-20191002_181700-239:localhost:8800a&\9I ]@anon-20191002_181700-238:localhost:8800a&\>H ]  @anon-20191002_181700-237:localhost:8800m&\ 9G ]@anon-20191002_181700-237:localhost:8800a&\#F 1@36:localhost:8800a&\>E ]  @anon-20191002_181700-236:localhost:8800m&\j9D ]@anon-20191002_181700-236:localhost:8800a&\#C 1@35:localhost:8800a&\>B ]  @anon-20191002_181700-234:localhost:8800m&\9A ]@anon-20191002_181700-235:localhost:8800a&\9@ ]@anon-20191002_181700-234:localhost:8800a&\>? ]  @anon-20191002_181700-232:localhost:8800m&\9> ]@anon-20191002_181700-233:localhost:8800a&\9= ]@anon-20191002_181700-232:localhost:8800a&\>< ]  @anon-20191002_181700-231:localhost:8800m&\j9; ]@anon-20191002_181700-231:localhost:8800a&\9: ]@anon-20191002_181700-230:localhost:8800a&\>9 ]  @anon-20191002_181700-228:localhost:8800m&\y98 ]@anon-20191002_181700-229:localhost:8800a&\97 ]@anon-20191002_181700-228:localhost:8800a&\96 ]@anon-20191002_181700-227:localhost:8800a&\>5 ]  @anon-20191002_181700-226:localhost:8800m&\194 ]@anon-20191002_181700-226:localhost:8800a&\93 ]@anon-20191002_181700-225:localhost:8800a&\>2 ]  @anon-20191002_181700-224:localhost:8800m&\x91 ]@anon-20191002_181700-224:localhost:8800a&\90 ]@anon-20191002_181700-223:localhost:8800a&\>/ ]  @anon-20191002_181700-222:localhost:8800m&\y9. ]@anon-20191002_181700-222:localhost:8800a&\9- ]@anon-20191002_181700-221:localhost:8800a&\>, ]  @anon-20191002_181700-220:localhost:8800m&\19+ ]@anon-20191002_181700-220:localhost:8800a&\9* ]@anon-20191002_181700-219:localhost:8800a&\=) ]  @anon-20191002_181700-218:localhost:8800m&\>( ] @anon-20191002_181700-217:localhost:8800m&\ >9' ]@anon-20191002_181700-218:localhost:8800a&\9& ]@anon-20191002_181700-217:localhost:8800a&\=% ]  @anon-20191002_181700-216:localhost:8800m&\>$ ] @anon-20191002_181700-215:localhost:8800m&\ 9# ]@anon-20191002_181700-216:localhost:8800a&\9" ]@anon-20191002_181700-215:localhost:8800a&\=! ]  @anon-20191002_181700-214:localhost:8800m&\> ] @anon-20191002_181700-213:localhost:8800m&\ 9 ]@anon-20191002_181700-214:localhost:8800a&\9 ]@anon-20191002_181700-213:localhost:8800a&\= ]  @anon-20191002_181700-212:localhost:8800m&\> ] @anon-20191002_181700-211:localhost:8800m&\ >9 ]@anon-20191002_181700-212:localhost:8800a&\9 ]@anon-20191002_181700-211:localhost:8800a&\> ] @anon-20191002_181700-209:localhost:8800m&\  w% eQw$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "txn_id": "101", "stream_ordering": 1057}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg"], "type": "m.room.message", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041285626, "hashes": {"sha256": "XjDwLnPVj8DuOCd1YD7G4+KpGikOJb6A4xGmGHF8Czg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TBsm1QMH0bKjhKzpn+Jwbk0Fs+eQrW9qEQHFTQ1RaZPouVrOC+cUtUVJ3XW7/ejuId2ttBjnqbqQ3e1SGfTaCA"}}, "unsigned": {"age_ts": 1570041285626}}{eQa$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1056}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng"], "type": "m.room.guest_access", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041282532, "hashes": {"sha256": "WtnWwj8Dd/OgVDAn2UntiqSVWFE7fJ/YtoB7TtMPtOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DaPes0Oe66J8U4ProOQHbC0c1Y16Ybx13gFJWkWInbEIZaMizkztXvqTuUFn2VsjG8XqTspDL7D4cH4kK7fWCA"}}, "unsigned": {"age_ts": 1570041282532}}OeQa+$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1055}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I"], "type": "m.room.history_visibility", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041278985, "hashes": {"sha256": "zQ3+exG/t7hquKExEXVZUaELsu1nYRkc7aIYMN73ldY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ghUJL0Ow5q46LCJpHeS/QNSGoageoBcN0AaTWUimTeXnE+/suHs/O9tFnXfW04vSz2e6b2SnWs3Bj+dslgIDQ"}}, "unsigned": {"age_ts": 1570041278985, "replaces_state": "$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I"}}eQa$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1054}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A"], "type": "m.room.history_visibility", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041276415, "hashes": {"sha256": "zdgt6AONSKUuq0yaOcQKiKgZNshq8p1QYtqAqIRfR+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "svhS5ahOymmechBMb/zs6SkFM8tC9FWdJvZa/qWqOnWaIzwpp/nlUod3bJ9l0irU13xnL0yg2+78w8peW1bXBA"}}, "unsigned": {"age_ts": 1570041276415}} IP ]  r p!}4D<I 6e'Q ] $0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sm.room.member!FklhVuCInffbDxunWv:localhost:8800 m#m$Z@anon-20191002_181700-213:localhost:8800!5e)Q ]$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0m.room.message!FklhVuCInffbDxunWv:localhost:8800m!m!@anon-20191002_181700-213:localhost:8800&4e3Q ]$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Am.room.guest_access!FklhVuCInffbDxunWv:localhost:8800mmm@anon-20191002_181700-213:localhost:8800,3e?Q ]$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYm.room.history_visibility!FklhVuCInffbDxunWv:localhost:8800mum@anon-20191002_181700-213:localhost:8800,2e?Q ]$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgm.room.history_visibility!FklhVuCInffbDxunWv:localhost:8800mm@anon-20191002_181700-213:localhost:8800$1e/Q ]$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMm.room.join_rules!FklhVuCInffbDxunWv:localhost:8800mim%@anon-20191002_181700-213:localhost:8800&0e3Q ]$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwm.room.power_levels!FklhVuCInffbDxunWv:localhost:8800mm@anon-20191002_181700-213:localhost:8800 /e'Q ]$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0m.room.member!FklhVuCInffbDxunWv:localhost:8800mm`@anon-20191002_181700-213:localhost:8800. e'Q  ]$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQm.room.create!FklhVuCInffbDxunWv:localhost:8800m m]@anon-20191002_181700-213:localhost:8800 -e'Q ] $9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQm.room.member!eJPTUgihvSwaOhIkrC:localhost:8800 mmS@anon-20191002_181700-212:localhost:8800!,e)Q ] $h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMm.room.message!eJPTUgihvSwaOhIkrC:localhost:8800 mm @anon-20191002_181700-211:localhost:8800 +e'Q ]$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMm.room.member!eJPTUgihvSwaOhIkrC:localhost:8800mMm@anon-20191002_181700-211:localhost:8800!*e)Q ]$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxAm.room.message!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800&)e3Q ]$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Em.room.guest_access!eJPTUgihvSwaOhIkrC:localhost:8800mUm@anon-20191002_181700-211:localhost:8800,(e?Q ]$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQm.room.history_visibility!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800$'e/Q ]$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewm.room.join_rules!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800&&e3Q ]$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yom.room.power_levels!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800 %e'Q ]$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Im.room.member!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800$ e'Q  ]$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIm.room.create!eJPTUgihvSwaOhIkrC:localhost:8800m`m@anon-20191002_181700-211:localhost:8800!#e)Q ] $8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0m.room.message!sfXbvAcOUJhzGwWEpZ:localhost:8800 mm@anon-20191002_181700-209:localhost:8800 "e'Q ] $RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9km.room.member!sfXbvAcOUJhzGwWEpZ:localhost:8800 mОmG@anon-20191002_181700-209:localhost:8800!!e)Q ]$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8m.room.message!sfXbvAcOUJhzGwWEpZ:localhost:8800mm@anon-20191002_181700-209:localhost:8800& e3Q ]$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgm.room.guest_access!sfXbvAcOUJhzGwWEpZ:localhost:8800mm@anon-20191002_181700-209:localhost:8800,e?Q ]$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngm.room.history_visibility!sfXbvAcOUJhzGwWEpZ:localhost:8800m m@anon-20191002_181700-209:localhost:8800  & d |t \ T MF> l6.eeQ$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800؁eeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800eeeQ$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800QeeQ$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:8800 8eeQ$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800}eeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800 VeeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:88003eeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800eeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800{eeQ$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800ueeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800oeeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800^eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800GeeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0!GixhPUMvtKSWoKRgvw:localhost:8800+eeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:88002eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800eeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800eeQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk!IlGJpjzrvvAFuwTAgo:localhost:8800 ߁eeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800eeQ$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800 [ ~z v r n j fb^ZVRNJFEeeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800DeeQ$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800CeeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800BeeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800AeeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800@eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800?eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800>eeQ$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800=eeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800<eeQ$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800;eeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800:eeQ$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:88009eeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:88008eeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:88007eeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:88006eeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:88005eeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:88004eeQ$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:88003eeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:88002eeQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:88001eeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:88000eeQ$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800/eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800.eeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800-eeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800,eeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800+eeQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800*eeQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800)eeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800(eeQ$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800 s gsv$eQay$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1061}{"auth_events": ["$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI"], "prev_events": ["$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI"], "type": "m.room.member", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-211", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-211:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041292050, "hashes": {"sha256": "Xjy+zASZtFPHmNkPZRPT3IIDqmmNHYLrwx8TM12++9g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vH3vENLUFk0K2WZVJOEE31xjgp55XfqbMN1bNOSkZwy96MGnWrNzLMIvYnBAZSI1Odxkl1CF5ZhAZY5gwv8FAA"}}, "unsigned": {"age_ts": 1570041292050}}i#eQa_$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1060}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-211:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041290592, "hashes": {"sha256": "zhl4TojhAGj3uYSpS2PZZ4aB0XBsCU4wcb4CqmD3ZCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yvF3F7O/0sW4iqqB+uDsL+sf0nzBzMcP/ud6Se52U2fGl9Jtxc0aAo9rruowYs6aieBaoDO3lVPXTn+EIoLhDQ"}}, "unsigned": {"age_ts": 1570041290592}} "eQ{$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "txn_id": "102", "stream_ordering": 1059}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k"], "type": "m.room.message", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041287875, "hashes": {"sha256": "0a+t564rezDfHdy2fJTqR0TI6k6Qp1J2DwOLlRzexn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NqE+m00bat53Pf2PUBRSmTvEkFpbmVRPCGk/aRlbW1g0Uox0O1ig+NmsKTa50LMYbItvPF6Vvo8fLPoEjt2CBA"}}, "unsigned": {"age_ts": 1570041287875}}!eQa7$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1058}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8"], "type": "m.room.member", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-210", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-210:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041286814, "hashes": {"sha256": "qmVrOtyzJXKryQLuGJ7RPIYlo11fc+G8AnCLLJlpB9Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A8t7fhqvIOMgSN5Me43djoD50pccJ1ZTwBK14SPl4Jul9eFPAYJ/GYvXHlz/EJk+LuZRxBAeV+yE4PQkq91ZDQ"}}, "unsigned": {"age_ts": 1570041286814, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-209:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-209:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-209", "avatar_url": null}, "sender": "@anon-20191002_181700-209:localhost:8800"}]}} L  7 W % ] +({I=COj"8Tp>Z  wcou E  } K    Q1i"1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg@1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwD1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM ]1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU d1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk 1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak+1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns {1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM 1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU 1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ 1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs?1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM~1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So w1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY $1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA )21e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y O1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 91e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q 1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U ?21e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw 1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU '1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8i1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssi1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk01e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYI1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s71e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIc1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioB1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s~1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk11e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc*1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k,1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI&  D I H K Vo z :?JxF > I l meQ? $vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibilityeeQ/ $kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rulesgeQ3 $ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels eQ']$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800joinaeQ' $qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800m.room.create eQ']$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800joingeQ3 $hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800m.room.guest_accessmeQ? $ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibilitygyeQ3 $GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_accessmxeQ? $OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibilityeweQ/ $IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rulesgveQ3 $A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels ueQ']$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800joinateQ' $py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800m.room.createseQ']$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800invitegreQ3 $JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_accessmqeQ? $ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility)epeQ/ $KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rulesgoeQ3 $W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels neQ']$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800joinameQ' $bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.createe~eQ/ $VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800m.room.join_rulesg}eQ3 $IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels |eQ']$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800joina{eQ' $vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800m.room.create zeQ']$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800join  i 4 gih5 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZVcXBRRmdlRi5Ld0dsdn4KMDAyZnNpZ25hdHVyZSC7-jUKU9NYTOVklufnDf5gGiyL1nsbucv8MyAzrMBrjwo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8go 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13Zgo3 >>@ D  H F  D  F  HJ L J NRVZ<< Q  !KeqmSjifajNKxtgqhj:localhost:8800m&\<; Q  !icheSPMgpemswIdQkw:localhost:8800m&\4<: Q  !EyyNoldCLUdFHzXTDP:localhost:8800m&\<9 Q  !vpuivIQDEhyuhOLWpg:localhost:8800m&\c<8 Q  !uSBqTezaFcMnlowsEf:localhost:8800m&\ &<7 Q  !NrxQuziwSWzsHuXIlG:localhost:8800m&\4<6 Q  !CNFopUEQTFbzjmLvii:localhost:8800m&\<5 Q  !WhqVaRReBxJXADAyYD:localhost:8800m&\*<4 Q  !aLxrqpqLkbzyIxGgpk:localhost:8800m&\<3 Q  !BfEFIDBthhkweqfhir:localhost:8800m&\ 4<2 Q  !aaRwQZdNAliyvRHpjs:localhost:8800m&\ /<1 Q  !ZShBIxwbJmxjjZmoRQ:localhost:8800m&\<0 Q  !NNiyzThHMivrxhojfp:localhost:8800m&\b( Q!mMsxpaIlcykPuOnDyl:localhost:8800m&\ >' Q!VOhMAiLfKyTOZbmKGw:localhost:8800m&\>& Q!ffijTnPMbTrDXHqOXf:localhost:8800m&\ !!<% Q  !wLitJYvgvNJzanSIvO:localhost:8800m&\9<$ Q  !hWHyATwKfuznrqTiyu:localhost:8800m&\9># Q!cGkVFpidyBBxUxsszG:localhost:8800m&\ <" Q  !jveVPZSXJOJyNDebPO:localhost:8800m&\$ Q !bzPCFeFSMbCESvNbxl:localhost:8800m&\ )J< Q  !nxLxsxzliamzflrEBs:localhost:8800m&\C< Q  !RPfffkmSEbWggEjnoI:localhost:8800m&\X< Q !PCgUmZOwWmtDsuFqXg:localhost:8800m&\> Q !egbhiBqOGhloZzopol:localhost:8800m&\ 8< Q   !KdOYYnOuwAyQzqwUki:localhost:8800m&\ !> Q!XNfwczePlyYFWLCaui:localhost:8800m&\< Q   !PQZMTVTeCYqMZwkHvW:localhost:8800m&\< Q   !kpTPWDZdBbbXKLonZK:localhost:8800m&\< Q   !ITdmSQpjMnaPoHIbws:localhost:8800m&\< Q  !FAYqpziHeVZugCGaij:localhost:8800m&\a> Q!ZaOktTIVeRgBXxfubH:localhost:8800m&\ %3> Q!ZaltdIYVZjCHsCWTZD:localhost:8800m&\ j> Q!kwXxkGQFkaeenFTQJr:localhost:8800m&\ !> Q!EMhFCPhwmnWVnjtXXM:localhost:8800m&\ !> Q!GGXyLHdVXqhQjPRvac:localhost:8800m&\ v> Q!IfYYyzLHSOeyJBxBfn:localhost:8800m&\ !< Q  !ZYKvjplZRyIWvzkRyM:localhost:8800m&\>< Q   !ROoilpDjLJfjKfSPIi:localhost:8800m&\ m< Q  !wsvXTJXouVkEZcCFsD:localhost:8800m&\ < Q  !DoiZErAdypBUMZKaeJ:localhost:8800m&\j< Q  !qSUSLLWjDxcGibUZdT:localhost:8800m&\< Q  !RmwbYvIIQyPlHlClty:localhost:8800m&\< Q  !SvKwEALYoNreUvqAlp:localhost:8800m&\j< Q  !fOJLpnbtgKNxxVDquX:localhost:8800m&\y< Q  !vAUAIZrCnHTeMGeNuw:localhost:8800m&\1< Q  !EfJcWhdjNARbuHYrqU:localhost:8800m&\x< Q  !vRRNxNyGboLHNhqQvr:localhost:8800m&\y< Q  !NFWKQvZkIwvecnREOC:localhost:8800m&\1> Q!IPYMCBwcyNIzqdiIWv:localhost:8800m&\ > Q!HZqzpRgqekPOtxstVc:localhost:8800m&\ $> Q!FklhVuCInffbDxunWv:localhost:8800m&\ $ > Q!eJPTUgihvSwaOhIkrC:localhost:8800m&\ Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1le$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1ke$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41je$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1ie$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1he$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1ge$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1fe$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01ee$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41de$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw1ce$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1be$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1ae$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1`e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1_e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1^e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo1]e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1\e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1[e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1Ze$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk 1Ye$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o 1Xe$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY 1We$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ 1Ve$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ 1Ue$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q 1Te$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1Se$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1Re$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1Qe$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81Pe$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD41Oe$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1Ne$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1Me$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1Le$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1Ke$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1Je$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01Ie$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo1He$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41Ge$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw1Fe$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1Ee$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1De$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1Ce$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1Be$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1Ae$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01@e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1?e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY1>e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1=e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY1<e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1;e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01:e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM19e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim418e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs17e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ16e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw15e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek14e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U13e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s12e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o011e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A10e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1/e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1.e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1-e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1,e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01+e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ1*e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1)e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM1(e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1'e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA1&e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1%e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ1$e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1#e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1"e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I  {(eQa$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1065}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ"], "type": "m.room.guest_access", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041298261, "hashes": {"sha256": "W3L4bmEneYlrvCmjeJEZRQznfrwQPEHcEy/m6bFnBiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oPWgbywP1Ziju07ts2Di9x5w0PyXRl3Xa8aoGo36RHQNprBwOFt+JE3vqsMuYgNq0CbAGIEPwXWIcWbNIUeMCA"}}, "unsigned": {"age_ts": 1570041298261}}'eQa$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1064}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew"], "type": "m.room.history_visibility", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041296072, "hashes": {"sha256": "r62lZQFWbpEWMPQqkHlD18aGJ3ZnNY5rScbF1vpNPrY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zd8SE0OTrSePycU5XPN109OrcuVWbAU9S5Vq4RKpwW6tjqV7xRTXFvUoCPPfuLXyXoX77AHyew63ZRPkO4lVAg"}}, "unsigned": {"age_ts": 1570041296072}}t&eQau$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1063}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo"], "type": "m.room.join_rules", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041294491, "hashes": {"sha256": "cSUr3FZkWXMaYfitiZU50g0y/FkpSgdFg+igEEgeIV4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "id56aYmVsTTyxbDWldKOBut8T5fd8nB5Sr0TJ5bClowoGnLabw2WzCMzQTBZ27QGv8J3OGqIHakM6KquwJFsAA"}}, "unsigned": {"age_ts": 1570041294491}}k%eQac$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1062}{"auth_events": ["$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "type": "m.room.power_levels", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"users": {"@anon-20191002_181700-211:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041293018, "hashes": {"sha256": "cP2L46mH22b8FRw6v06H/OQYW4eYtX7eLLhuMgHTqHI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/h2a6IG30GTjpVJOYVD72+7r8X7Exh67/DPROUvs5Vmjy+4YWa/2enDM/M2GhiPLMo8NyZ8voTrZtBiIoL4pAg"}}, "unsigned": {"age_ts": 1570041293018}} ,NC 8 - { " p  e ZOD9.|#qf VPeL$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEssha256vZ9ٚ]< mjD"oKVOeL$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQsha256~ajYŝ19( "6DVNeL$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3ksha256D.с+h_&^}(C9KyVMeL$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmosha256 nR/1Ԑ4_8!^T96Ak7ZjVLeL$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0sha256X1q0G摙uv=dĊ6=VKeL$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXosha256Y;9y\x>ɡ?A.4zVJeL$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4sha256e D5vV(mO fn _P.VIeL$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwsha256 @aL2lŦt$Sf0VHeL$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6csha256g\oE~v!÷{#'VGeL$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQsha256OA{N 3 _Z$VFeL$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUsha256>gd$͘c#U3-;adXEVEeL$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrssha256^пUl560PI,if{^VDeL$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wosha2561 h94F3( Dy ojVCeL$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0sha256WohXd=__|IU_R03ڽVBeL$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6iksha256T/oa$6pD =Wو)VAeL$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYsha256R@V?eL$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxYsha256x'T=N<-M;ۘ8oV>eL$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUsha2566XI;3"!š7Tf@4FMƵV=eL$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0sha256K]6G_)#'AoR R:aV<eL$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMsha256qtv)txH e[ O.@V;eL$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4sha256 \w ḐoݷnV:eL$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRssha256j4i/hyPփX8]d|nO1V9eL$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQsha256pHwe+{ ez2 7x;8TV8eL$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwsha256ʚ\4 7$@$6HV7eL$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7eksha256 bz^*-v@0=ZV6eL$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4Usha256k|K.\eM ^Y%rB"V5eL$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3ssha256>0E^ǮN4:[szȏi{V4eL$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0sha256DNdm7!IX!׻^{@ yOV3eL$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Asha256'5\MXȭVP簙n",UV2eL$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYsha256dqPoNDX %6'CSv,V1eL$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgsha256#q) ;Ѥp@ FVBxV0eL$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMsha256U1٤ii-㤦Zob p,jV/eL$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwsha256!װ`*`u/zMNI$R:V.eL$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0sha256 JS{Ű9F83E[Hܐ V-eL$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQsha256M2`р M OĸV,eL$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQsha256nZ\rVԣg煝_۷S<ܹV+eL$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMsha256ȋ(H2u3^z'~y'#V*eL$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMsha256$,{++M@\Engr!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMpDQ? e=!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMhCQ/ eQ']e6!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sj=Q3 e4!FklhVuCInffbDxunWv:localhost:8800m.room.guest_access$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A<Q? ee3!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgp;Q? e2!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgh:Q/ e1!FklhVuCInffbDxunWv:localhost:8800m.room.join_rules$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMj9Q3 e0!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw 8Q']e/!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0d7Q' e.!FklhVuCInffbDxunWv:localhost:8800m.room.create$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ86Q']ee-!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM 5Q']e+!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMj4Q3 e)!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_access$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Ep3Q? e(!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibility$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQh2Q/ e'!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rules$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew  4 h m9d]c@anon-20191002_181700-242:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwo127.0.0.1d]c@anon-20191002_181700-240:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6Two127.0.0.1d]c@anon-20191002_181700-238:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2go127.0.0.1d]c@anon-20191002_181700-239:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwo127.0.0.1d]c@anon-20191002_181700-241:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQo127.0.0.1a[a@anon-20191002_181700-23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCg127.0.0.1d]c@anon-20191002_181700-237:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgo127.0.0.1d]c@anon-20191002_181700-236:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQo127.0.0.1d]c@anon-20191002_181700-235:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwo127.0.0.1d]c@anon-20191002_181700-234:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2Ao127.0.0.1d]c@anon-20191002_181700-233:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAo127.0.0.1 8l D `8\]c!E@anon-20191002_181700-220:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgoOOLATWHSMP127.0.0.1Perl + Net::Async::HTTP/0.44mvV[]c!E@anon-20191002_181700-219:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwoKBEVVOFICU127.0.0.1Perl + Net::Async::HTTP/0.44muZ]c!E@anon-20191002_181700-218:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQoEJUSKMCYXQ127.0.0.1Perl + Net::Async::HTTP/0.44mUY]c!E@anon-20191002_181700-217:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAoUMNJQPXSWW127.0.0.1Perl + Net::Async::HTTP/0.44mU>X]c!E@anon-20191002_181700-216:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0woRYBXPLVXBJ127.0.0.1Perl + Net::Async::HTTP/0.44m/W]c!E@anon-20191002_181700-215:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgoYMMAIPPEFO127.0.0.1Perl + Net::Async::HTTP/0.44m.V]c!E@anon-20191002_181700-214:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3AoMEYMCWHAWP127.0.0.1Perl + Net::Async::HTTP/0.44m U]c!E@anon-20191002_181700-213:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBqSkBkdkBPR3EzaUx4eDUKMDAyZnNpZ25hdHVyZSBVuF6NBtiMz2bEdBixHOtv14eE0aYcLIdRBBgkOtjMIQoLEQWCYQYGH127.0.0.1Perl + Net::Async::HTTP/0.44m IT]c!E@anon-20191002_181700-212:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHUjUyZPTkhCdTZQJlozd3AKMDAyZnNpZ25hdHVyZSDa3KCf8uR1pbc8KNvlnD4kU4zB76gI3XvbVm_g7R-GrAoRTYZTLKABN127.0.0.1Perl + Net::Async::HTTP/0.44m]S]c!E@anon-20191002_181700-211:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlOUGI3cm0zS0NuM28wRy4KMDAyZnNpZ25hdHVyZSD4OpM6ZfPo7DlTj2wvV2Lfc6R4avGRyYucfSs91WVPAwoFQOBFRKZSM127.0.0.1Perl + Net::Async::HTTP/0.44mތ a} { y w u sqomkigeca~|eeQ$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~{eeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800~zeeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~yeeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~xeeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~weeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800~veeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~ueeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~teeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~seeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~reeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~qeeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~peeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~oeeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~neeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~meeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~leeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~keeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~jeeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~ieeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~heeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~geeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~feeQ$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~eeeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800~deeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~ceeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~beeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~aeeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800~`eeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~_eeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~^eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800 P uP+eQy$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "txn_id": "104", "stream_ordering": 1068}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM"], "type": "m.room.message", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041300231, "hashes": {"sha256": "YVdUfDVUIaoVji4zlm5rLFLtqIdaZEGKqKHuEPXaQv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2KxgDGjLwb9ug+03BMZMhLQSLWpiPmnI2/FozccAXz2qvBNmSZ/c0JhR4kgg19XDOuNuScOy7pbo5vDY4nWBDg"}}, "unsigned": {"age_ts": 1570041300231}}*eQa7$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1067}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA"], "type": "m.room.member", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-212", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-212:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041299533, "hashes": {"sha256": "vgv8ECowjC4SeeAk+VUHggDnq3v+nk1o73jpIY/ynNk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rM11NnTgS36OI40SzK9aIkAQhNDsYroxKuwiiygTZZ+GHvTt6Zs5p0AJEepSa+XL/kA2oNaRI+Aqo0bLbBaLBQ"}}, "unsigned": {"age_ts": 1570041299533, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-211:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-211:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-211", "avatar_url": null}, "sender": "@anon-20191002_181700-211:localhost:8800"}]}})eQw$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "txn_id": "103", "stream_ordering": 1066}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E"], "type": "m.room.message", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041298930, "hashes": {"sha256": "w5XrgHTAGCJ9yp17ZJVbXqs3t2ZWblza6ZVXv2dn+FE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+ynQx1QewGbGiKxBT/R2iIhwWVuPlVFnrzc0eUHjDNg/62QOcxrDheBox6+70cdG6W31q2ZJq5CxyxomUcegDw"}}, "unsigned": {"age_ts": 1570041298930}} -RM H C > 9 4/*|%w rmhc TQe!EfJcWhdjNARbuHYrqU:localhost:8800$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsTQe!EfJcWhdjNARbuHYrqU:localhost:8800$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIT Qe !EfJcWhdjNARbuHYrqU:localhost:8800$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkT Qe !EfJcWhdjNARbuHYrqU:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9oT Qe !EfJcWhdjNARbuHYrqU:localhost:8800$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYT Qe !vRRNxNyGboLHNhqQvr:localhost:8800$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQT Qe !vRRNxNyGboLHNhqQvr:localhost:8800$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QTQe!vRRNxNyGboLHNhqQvr:localhost:8800$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMTQe!vRRNxNyGboLHNhqQvr:localhost:8800$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgTQe!vRRNxNyGboLHNhqQvr:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoTQe!vRRNxNyGboLHNhqQvr:localhost:8800$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8TQe!NFWKQvZkIwvecnREOC:localhost:8800$Z1pbz4OPCbNrADxpDdYFj731zJFx2iLp29kJgdzLoZoTQe!NFWKQvZkIwvecnREOC:localhost:8800$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEATQe!NFWKQvZkIwvecnREOC:localhost:8800$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsTQe!NFWKQvZkIwvecnREOC:localhost:8800$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQTQe!NFWKQvZkIwvecnREOC:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kTQe!NFWKQvZkIwvecnREOC:localhost:8800$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoT~Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0T}Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4T|Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cT{Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQTzQe!IPYMCBwcyNIzqdiIWv:localhost:8800$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUTyQe!IPYMCBwcyNIzqdiIWv:localhost:8800$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsTxQe!IPYMCBwcyNIzqdiIWv:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoTwQe!IPYMCBwcyNIzqdiIWv:localhost:8800$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0TvQe!HZqzpRgqekPOtxstVc:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikTuQe!HZqzpRgqekPOtxstVc:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkATtQe!HZqzpRgqekPOtxstVc:localhost:8800$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUTsQe!HZqzpRgqekPOtxstVc:localhost:8800$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0TrQe!HZqzpRgqekPOtxstVc:localhost:8800$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMTqQe!HZqzpRgqekPOtxstVc:localhost:8800$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4TpQe!HZqzpRgqekPOtxstVc:localhost:8800$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRsToQe!HZqzpRgqekPOtxstVc:localhost:8800$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQTnQe!HZqzpRgqekPOtxstVc:localhost:8800$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwTmQe!FklhVuCInffbDxunWv:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekTlQe!FklhVuCInffbDxunWv:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sTkQe!FklhVuCInffbDxunWv:localhost:8800$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9ATjQe!FklhVuCInffbDxunWv:localhost:8800$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYTiQe!FklhVuCInffbDxunWv:localhost:8800$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgThQe!FklhVuCInffbDxunWv:localhost:8800$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMTgQe!FklhVuCInffbDxunWv:localhost:8800$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-JwTfQe!FklhVuCInffbDxunWv:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0TeQe!FklhVuCInffbDxunWv:localhost:8800$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQTdQe!eJPTUgihvSwaOhIkrC:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQTcQe!eJPTUgihvSwaOhIkrC:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM GtB ] } vKQW %b0 j8p J  P+ |  h6n<  \ * \ \ * D 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc 1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4b 21e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8 1e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc 1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc 1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgx1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgw1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgv0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc10e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc00e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc/1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE_1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE^1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE]1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdoh1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdog1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ 1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs 1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8 1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8 1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M U1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M T1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M S1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUZ1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUY1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU[1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU>d1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMv1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMu21e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas 1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas 1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas  | k/eQac$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1072}{"auth_events": ["$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "type": "m.room.power_levels", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"users": {"@anon-20191002_181700-213:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041303802, "hashes": {"sha256": "JFxfzcx0orjtmhvfpq8+Xphkm+xNctetUmtwmRGhBUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W9jnrGZDgI0yEFmlGMaiAUJ/vwYIxCRXiPw2I57f0TDtfrrNDkYIgIPdMrymFUrGvpVdrfaTFkOnjE5k49c7BA"}}, "unsigned": {"age_ts": 1570041303802}}v.eQay$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1071}{"auth_events": ["$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ"], "prev_events": ["$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ"], "type": "m.room.member", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-213", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-213:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041303301, "hashes": {"sha256": "mnasQX8o8e/r81rwbd8zerOKF0W2XCX7aDJiQZG6iD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TE/eZCsc9b637M6Wpoa18IsXSAxic4QX3qxYRZWGhWpfqc0uZUC4RL1/JngAoglCK/EHUK2pDZ4cKFNGGmLAAA"}}, "unsigned": {"age_ts": 1570041303301}}i-eQa_$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1070}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-213:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041302437, "hashes": {"sha256": "VGsy63GyIbHDj+CE9NnJV1kJBVMbCmoALQ91aM6eD6s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AcqCLFY1+rHiNRi5yA8qsZQO6BmveCIHH/lyta7NvolefsM73agjD+DfzQUhKpc64ZChQrJ9nzP53K9OUNHMBg"}}, "unsigned": {"age_ts": 1570041302437}},eQa?$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 233, "stream_ordering": 1069}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew"], "prev_events": ["$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM"], "type": "m.room.member", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-212:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-212", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-212:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041300724, "hashes": {"sha256": "Gh7kWjJb06IVFG471eCLBtiK9t0A04cCTspAnwesMqU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2i+HcBXijUD5UWTOZeyj7Bj0PRIRytFRSoYS6RcQ6V5EsbRgJWSeZ5BbhKZzEV5s0Cuk6a680HdqQZKfLMHiDA"}}, "unsigned": {"age_ts": 1570041300724, "replaces_state": "$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM"}}  3{3eQa$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1076}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY"], "type": "m.room.guest_access", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041306897, "hashes": {"sha256": "aDlbhuOJOpBa25MdHcJ0/DrhuEEBEEY2ck8krnqbcZ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9veAUiOLgRRbPYYPiXRgkW6j6TMDFE1vW7S5uN/T432KsvZkD/7SelYyaUN0qKcV2v4lc+QbY/wSUYdKk4CoBg"}}, "unsigned": {"age_ts": 1570041306897}}H2eQa$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1075}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg"], "type": "m.room.history_visibility", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041306229, "hashes": {"sha256": "YaMWAXdcXvaXuyXBP8aflwNLNuzFdL7AxhSh6eQd0Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sklkwhW+/MBo68Mo8Fr2ZOte38WLIdd3gZ0LjCzX3nCCaqn3RPBdBRa4pw/Daw7H8e6KPF6v7SxGc3I34YZ3Ag"}}, "unsigned": {"age_ts": 1570041306229, "replaces_state": "$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg"}}1eQa$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1074}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM"], "type": "m.room.history_visibility", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041305017, "hashes": {"sha256": "VNlDPFlFt6ADWPbmWIkzwKzPbrCFaGuN363xUwshH8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uE93bJ4DQthnRN/xV8srM2XRoHqmWe0kDhaV1U+VhMqcUWJ/8h6RyNkaTJGCIY8bGGwivART2rE3goAaNAI7Ag"}}, "unsigned": {"age_ts": 1570041305017}}t0eQau$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1073}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw"], "type": "m.room.join_rules", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041304425, "hashes": {"sha256": "R5naqAOg//Q39HVqNsssZsyIfk3yEzbHqvDadf6/77o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3y+ntNr8k2/mDcofV3t4vTGHaBpeuC0E3hJz+bKub6XwWl57LPA2Ug+GEn3NrGd4V81rj19PbbNk//YIAQ1YAw"}}, "unsigned": {"age_ts": 1570041304425}} O uO 6eQ{$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "txn_id": "106", "stream_ordering": 1079}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s"], "type": "m.room.message", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041308757, "hashes": {"sha256": "gzaPnxLnQNRB7NBiPeaJzS04BmSFxd80hfk/7+QmQNY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a9elOwhoIqfcO7CyuPflNCjyQvDcOwCGaXyE4A+C2L3OXTtgPVikYGBH8ORhON+5bKV8WN01VvXKa3sKYMMWBQ"}}, "unsigned": {"age_ts": 1570041308757}}5eQa7$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1078}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0"], "type": "m.room.member", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-214", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-214:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041308158, "hashes": {"sha256": "SH/aPstYuh/OKMwKrH+52Owti7+7Hw4wBeeFlG2BE8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2i7uy4CMEu6cjhYk52RzRRbHaMttneg8YtNugElScbo1NMQYuvtlwLONFNA5melq9UKHZsiD5+eXysDWBti/Bg"}}, "unsigned": {"age_ts": 1570041308158, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-213:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-213:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-213", "avatar_url": null}, "sender": "@anon-20191002_181700-213:localhost:8800"}]}}4eQw$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "txn_id": "105", "stream_ordering": 1077}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A"], "type": "m.room.message", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041307551, "hashes": {"sha256": "s7LLZ/5IxvRM6n+9K5zWuqzykkA7mKe2And15Tx6q9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "krF0gEVAqnIhKWJ6eKs4fzuGAbS2reITJ9WTbptlDvoWRCLvfklLY+vscv9nizteIMHgqzjHDrUzJ61RWQ4WCA"}}, "unsigned": {"age_ts": 1570041307551}} -RM H C > 9 4/*|%w rmhc T<Qee?Q ]$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0m.room.history_visibility!HZqzpRgqekPOtxstVc:localhost:8800mALmBS@anon-20191002_181700-215:localhost:8800,=e?Q ]$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMm.room.history_visibility!HZqzpRgqekPOtxstVc:localhost:8800ma@anon-20191002_181700-215:localhost:8800$<e/Q ]$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4m.room.join_rules!HZqzpRgqekPOtxstVc:localhost:8800m9Jm:@anon-20191002_181700-215:localhost:8800&;e3Q ]$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRsm.room.power_levels!HZqzpRgqekPOtxstVc:localhost:8800m5Zm7~@anon-20191002_181700-215:localhost:8800 :e'Q ]$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQm.room.member!HZqzpRgqekPOtxstVc:localhost:8800m2m3@@anon-20191002_181700-215:localhost:88009 e'Q  ]$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwm.room.create!HZqzpRgqekPOtxstVc:localhost:8800m/m0{@anon-20191002_181700-215:localhost:8800 8e'Q ] $CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekm.room.member!FklhVuCInffbDxunWv:localhost:8800 m(m(g@anon-20191002_181700-214:localhost:8800!7e)Q ] $CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4Um.room.message!FklhVuCInffbDxunWv:localhost:8800 m&Um&Y@anon-20191002_181700-213:localhost:8800 -RM H C > 9 4/*|%w rmhc TiQed!vAUAIZrCnHTeMGeNuw:localhost:8800$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUThQec!vAUAIZrCnHTeMGeNuw:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMTgQeb!vAUAIZrCnHTeMGeNuw:localhost:8800$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7ITfQea!EfJcWhdjNARbuHYrqU:localhost:8800$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNoTeQe`!EfJcWhdjNARbuHYrqU:localhost:8800$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2JwTdQe_!EfJcWhdjNARbuHYrqU:localhost:8800$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsTcQe^!EfJcWhdjNARbuHYrqU:localhost:8800$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTITbQe]!EfJcWhdjNARbuHYrqU:localhost:8800$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkTaQe\!EfJcWhdjNARbuHYrqU:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9oT`Qe[!EfJcWhdjNARbuHYrqU:localhost:8800$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYT_QeZ!vRRNxNyGboLHNhqQvr:localhost:8800$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQT^QeY!vRRNxNyGboLHNhqQvr:localhost:8800$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQT]QeX!vRRNxNyGboLHNhqQvr:localhost:8800$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QT\QeW!vRRNxNyGboLHNhqQvr:localhost:8800$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMT[QeV!vRRNxNyGboLHNhqQvr:localhost:8800$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgTZQeU!vRRNxNyGboLHNhqQvr:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoTYQeT!vRRNxNyGboLHNhqQvr:localhost:8800$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8TXQeS!NFWKQvZkIwvecnREOC:localhost:8800$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4TWQeR!NFWKQvZkIwvecnREOC:localhost:8800$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEATVQeQ!NFWKQvZkIwvecnREOC:localhost:8800$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsTUQeP!NFWKQvZkIwvecnREOC:localhost:8800$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQTTQeO!NFWKQvZkIwvecnREOC:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kTSQeN!NFWKQvZkIwvecnREOC:localhost:8800$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoTRQeM!IPYMCBwcyNIzqdiIWv:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0TQQeL!IPYMCBwcyNIzqdiIWv:localhost:8800$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoTPQeK!IPYMCBwcyNIzqdiIWv:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4TOQeJ!IPYMCBwcyNIzqdiIWv:localhost:8800$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwTNQeI!IPYMCBwcyNIzqdiIWv:localhost:8800$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cTMQeH!IPYMCBwcyNIzqdiIWv:localhost:8800$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQTLQeG!IPYMCBwcyNIzqdiIWv:localhost:8800$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUTKQeF!IPYMCBwcyNIzqdiIWv:localhost:8800$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsTJQeE!IPYMCBwcyNIzqdiIWv:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoTIQeD!IPYMCBwcyNIzqdiIWv:localhost:8800$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0THQeC!HZqzpRgqekPOtxstVc:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikTGQeB!HZqzpRgqekPOtxstVc:localhost:8800$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYTFQeA!HZqzpRgqekPOtxstVc:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkATEQe@!HZqzpRgqekPOtxstVc:localhost:8800$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxYTDQe?!HZqzpRgqekPOtxstVc:localhost:8800$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUTCQe>!HZqzpRgqekPOtxstVc:localhost:8800$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0TBQe=!HZqzpRgqekPOtxstVc:localhost:8800$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMTAQeQe9!HZqzpRgqekPOtxstVc:localhost:8800$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwT=Qe8!FklhVuCInffbDxunWv:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek  | k:eQac$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1083}{"auth_events": ["$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "type": "m.room.power_levels", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"users": {"@anon-20191002_181700-215:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041312602, "hashes": {"sha256": "TEbM+INOUgrZx+6TCOlx31nvm45gl30VksGhaqTgozA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mGg9VGsEr0KNld39S0laCchGLa6s0H8UwHKs2AkAekpHRhtfxMsTEAyvAoJE9px34eWed3RKJdzONR6Y5r+KDA"}}, "unsigned": {"age_ts": 1570041312602}}v9eQay$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1082}{"auth_events": ["$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw"], "prev_events": ["$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw"], "type": "m.room.member", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-215", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-215:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041311934, "hashes": {"sha256": "1VoS9ivr5hr4akUvSz8V28lWEmWfUiBGKYfEP6jfmYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lxb02tDueoLQdvVVkPB+zxUMIsgosW4WZHVfrDe0nnO2d5+42lDOSrHjGpPVc0TLqCxXErI+fqlhkAgTd2r4Bw"}}, "unsigned": {"age_ts": 1570041311934}}i8eQa_$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1081}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-215:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041311119, "hashes": {"sha256": "U8jhx4jLdfkrm26U8y963OtnEEhxR9QRVjAVMlATMrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "feji4SnLmYbR7+DQl6j0A1V0MOUBm2c3yqLuB+ARqnq3tdqRzwBc8cP2yKlHhb5+K1CKvLXNSN8NJ8q5+33yAw"}}, "unsigned": {"age_ts": 1570041311119}}7eQa?$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800{"token_id": 235, "stream_ordering": 1080}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM"], "prev_events": ["$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U"], "type": "m.room.member", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-214:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-214", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-214:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041309198, "hashes": {"sha256": "8Zai3aKTTJWrhx2HOzIbTnGjdbmnVLwvjrZ19QxzevU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "04IErPTr4APLsjrdUnFyb1mXFq3+pxAe+A1SXwubVojE8ZET7VdJe8qP8iqaD8Gq7JunKvA+3SomHxwuimFBAw"}}, "unsigned": {"age_ts": 1570041309198, "replaces_state": "$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s"}} 9r  R 6oS7, e]]Q$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0@anon-20191002_181700-239:localhost:8800@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800leaveC e]]Q=$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc@anon-20191002_181700-239:localhost:8800@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800joinanon-20191002_181700-239C e]]Q=$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8@anon-20191002_181700-238:localhost:8800@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800joinanon-20191002_181700-238C e]]Q=$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM@anon-20191002_181700-237:localhost:8800@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800joinanon-20191002_181700-237C e]]Q=$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE@anon-20191002_181700-236:localhost:8800@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800joinanon-20191002_181700-236C e]]Q=$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4@anon-20191002_181700-234:localhost:8800@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800joinanon-20191002_181700-234C e]]Q=$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI@anon-20191002_181700-232:localhost:8800@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800joinanon-20191002_181700-232C e]]Q=$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg@anon-20191002_181700-231:localhost:8800@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800joinanon-20191002_181700-231C e]]Q=$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0@anon-20191002_181700-228:localhost:8800@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800joinanon-20191002_181700-228C e]]Q=$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM@anon-20191002_181700-226:localhost:8800@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800joinanon-20191002_181700-226C e]]Q=$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o@anon-20191002_181700-224:localhost:8800@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800joinanon-20191002_181700-224C e]]Q=$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho@anon-20191002_181700-222:localhost:8800@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800joinanon-20191002_181700-222C e]]Q=$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k@anon-20191002_181700-220:localhost:8800@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800joinanon-20191002_181700-220C e]]Q=$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0@anon-20191002_181700-218:localhost:8800@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800joinanon-20191002_181700-218E e]]Q=$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4@anon-20191002_181700-218:localhost:8800@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800inviteanon-20191002_181700-218C e]]Q=$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo@anon-20191002_181700-217:localhost:8800@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800joinanon-20191002_181700-217C e]]Q=$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik@anon-20191002_181700-216:localhost:8800@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800joinanon-20191002_181700-216E~ e]]Q=$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA@anon-20191002_181700-216:localhost:8800@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800inviteanon-20191002_181700-216C} e]]Q=$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ@anon-20191002_181700-215:localhost:8800@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800joinanon-20191002_181700-215C| e]]Q=$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek@anon-20191002_181700-214:localhost:8800@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800joinanon-20191002_181700-214 MwtY( uZ)vE*m< xG R ! ] , h 7  X = y H S"a0l; wFQ 0]I@anon-20191002_181700-260:localhost:8800<0]H@anon-20191002_181700-259:localhost:8800;0]@anon-20191002_181700-201:localhost:88000]G@anon-20191002_181700-258:localhost:8800:0]F@anon-20191002_181700-257:localhost:880090]E@anon-20191002_181700-255:localhost:880080]D@anon-20191002_181700-254:localhost:880070]C@anon-20191002_181700-253:localhost:880060]B@anon-20191002_181700-252:localhost:880050]A@anon-20191002_181700-251:localhost:880040]@@anon-20191002_181700-250:localhost:880031@34:localhost:88000]@anon-20191002_181700-207:localhost:88001@33:localhost:88000]@anon-20191002_181700-206:localhost:88001@32:localhost:88000]@anon-20191002_181700-205:localhost:88001 @31:localhost:88000] @anon-20191002_181700-204:localhost:88001 @30:localhost:88000] @anon-20191002_181700-203:localhost:88001 @29:localhost:88000]@anon-20191002_181700-202:localhost:88001@28:localhost:88001@27:localhost:88000]@anon-20191002_181700-200:localhost:88001@26:localhost:88000]@anon-20191002_181700-199:localhost:88001@25:localhost:88000]@anon-20191002_181700-198:localhost:88001@24:localhost:88000]@anon-20191002_181700-197:localhost:88001@23:localhost:88000]?@anon-20191002_181700-249:localhost:880020]>@anon-20191002_181700-248:localhost:880010]=@anon-20191002_181700-246:localhost:880000]<@anon-20191002_181700-247:localhost:8800/0];@anon-20191002_181700-245:localhost:8800.0]:@anon-20191002_181700-244:localhost:8800-0]9@anon-20191002_181700-243:localhost:8800,0]8@anon-20191002_181700-242:localhost:8800+0]7@anon-20191002_181700-241:localhost:8800*0]6@anon-20191002_181700-240:localhost:8800)0]5@anon-20191002_181700-239:localhost:8800(0]4@anon-20191002_181700-238:localhost:8800'0]3@anon-20191002_181700-237:localhost:8800&12@36:localhost:8800%0]1@anon-20191002_181700-236:localhost:8800$10@35:localhost:8800#0]/@anon-20191002_181700-235:localhost:8800"0].@anon-20191002_181700-234:localhost:8800!0]-@anon-20191002_181700-233:localhost:8800 0],@anon-20191002_181700-232:localhost:88000]+@anon-20191002_181700-231:localhost:88000]*@anon-20191002_181700-230:localhost:88000])@anon-20191002_181700-229:localhost:88000](@anon-20191002_181700-228:localhost:88000]'@anon-20191002_181700-227:localhost:88000]&@anon-20191002_181700-226:localhost:88000]%@anon-20191002_181700-225:localhost:88000]$@anon-20191002_181700-224:localhost:88000]#@anon-20191002_181700-223:localhost:88000]"@anon-20191002_181700-222:localhost:88000]!@anon-20191002_181700-221:localhost:88000] @anon-20191002_181700-220:localhost:88000]@anon-20191002_181700-219:localhost:88000]@anon-20191002_181700-218:localhost:88000]@anon-20191002_181700-217:localhost:88000]@anon-20191002_181700-216:localhost:88000]@anon-20191002_181700-215:localhost:88000]@anon-20191002_181700-214:localhost:8800 0]@anon-20191002_181700-213:localhost:8800 0]@anon-20191002_181700-212:localhost:8800 0]@anon-20191002_181700-211:localhost:8800 0]@anon-20191002_181700-209:localhost:8800 0]@anon-20191002_181700-210:localhost:88000]@anon-20191002_181700-208:localhost:8800 MW)qC ] /  w I  c 5  { L  a 2 vG/sDT$b1~MX= Y( zI{1@33:localhost:88001@32:localhost:88001@31:localhost:88000]@anon-20191002_181700-201:localhost:88001@30:localhost:88000]@anon-20191002_181700-205:localhost:88000]@anon-20191002_181700-204:localhost:88000]@anon-20191002_181700-197:localhost:88000]@anon-20191002_181700-196:localhost:88000]@anon-20191002_181700-195:localhost:88000]@anon-20191002_181700-200:localhost:88001@17:localhost:88000]@anon-20191002_181700-194:localhost:88001@16:localhost:88000]@anon-20191002_181700-193:localhost:88001@15:localhost:88000]@anon-20191002_181700-192:localhost:88000]@anon-20191002_181700-191:localhost:8800/]@anon-20191002_181700-190:localhost:8800z/]@anon-20191002_181700-189:localhost:8800y0]@anon-20191002_181700-188:localhost:8800/]@anon-20191002_181700-187:localhost:8800/]@anon-20191002_181700-186:localhost:8800|1@14:localhost:8800~1s@13:localhost:8800r.]n@anon-20191002_181700-182:localhost:8800m.]k@anon-20191002_181700-180:localhost:8829j.]j@anon-20191002_181700-179:localhost:8800h.]j@anon-20191002_181700-178:localhost:8800i.]h@anon-20191002_181700-181:localhost:8800d.]^@anon-20191002_181700-166:localhost:8829].]]@anon-20191002_181700-165:localhost:8800\.][@anon-20191002_181700-161:localhost:8800Z/X@3:localhost:8800W.]W@anon-20191002_181700-146:localhost:8800V.]V@anon-20191002_181700-148:localhost:8829U.]U@anon-20191002_181700-147:localhost:8829S.]U@anon-20191002_181700-139:localhost:8829R.]P@anon-20191002_181700-128:localhost:8800O.]P@anon-20191002_181700-127:localhost:8800N.]K@anon-20191002_181700-126:localhost:8800J.]J@anon-20191002_181700-123:localhost:8800I.]I@anon-20191002_181700-115:localhost:8800H.]H@anon-20191002_181700-114:localhost:8800G.]G@anon-20191002_181700-119:localhost:8800F.]F@anon-20191002_181700-117:localhost:8800E.]C@anon-20191002_181700-111:localhost:8829B.]B@anon-20191002_181700-100:localhost:8800A-[@@anon-20191002_181700-96:localhost:8800?-[>@anon-20191002_181700-90:localhost:8800=-[:@anon-20191002_181700-75:localhost:88009-[9@anon-20191002_181700-74:localhost:88008-[8@anon-20191002_181700-72:localhost:88297-[7@anon-20191002_181700-71:localhost:88005-[7@anon-20191002_181700-70:localhost:88006-[5@anon-20191002_181700-67:localhost:88003-[5@anon-20191002_181700-61:localhost:88004-[5@anon-20191002_181700-60:localhost:88002-[1@anon-20191002_181700-66:localhost:88290-[/@anon-20191002_181700-65:localhost:8800.-[-@anon-20191002_181700-64:localhost:8800,-[$@anon-20191002_181700-59:localhost:8800#-[#@anon-20191002_181700-53:localhost:8800!-[#@anon-20191002_181700-52:localhost:8800"-[#@anon-20191002_181700-48:localhost:8800 -[@anon-20191002_181700-35:localhost:8800-[@anon-20191002_181700-34:localhost:8800-[@anon-20191002_181700-39:localhost:8800-[@anon-20191002_181700-38:localhost:8800-[@anon-20191002_181700-36:localhost:8800-[ @anon-20191002_181700-33:localhost:8800 -[ @anon-20191002_181700-32:localhost:8800 -[ @anon-20191002_181700-16:localhost:8800 -[ @anon-20191002_181700-31:localhost:8800-[@anon-20191002_181700-15:localhost:8800-[@anon-20191002_181700-11:localhost:8800=@spyglass:localhost:8800 GS"tCm< xG R ! ] , h 7  s B  ~ M X'c2n= yHNY(0]G@anon-20191002_181700-317:localhost:8800F0]@anon-20191002_181700-211:localhost:88000]@anon-20191002_181700-209:localhost:88000]@anon-20191002_181700-222:localhost:88000]@anon-20191002_181700-214:localhost:88000]@anon-20191002_181700-212:localhost:88000]@anon-20191002_181700-220:localhost:88000]@anon-20191002_181700-210:localhost:88001@34:localhost:88000]@anon-20191002_181700-208:localhost:88000]@anon-20191002_181700-207:localhost:88000]E@anon-20191002_181700-316:localhost:8800D0]:@anon-20191002_181700-300:localhost:880090]9@anon-20191002_181700-299:localhost:880080]6@anon-20191002_181700-298:localhost:880050]4@anon-20191002_181700-297:localhost:880030]1@anon-20191002_181700-294:localhost:880000].@anon-20191002_181700-290:localhost:8800-0]*@anon-20191002_181700-286:localhost:8800)0]*@anon-20191002_181700-280:localhost:8800'0]*@anon-20191002_181700-279:localhost:8800(0]&@anon-20191002_181700-284:localhost:8800%0]%@anon-20191002_181700-283:localhost:8800$0]"@anon-20191002_181700-277:localhost:8800!0]!@anon-20191002_181700-269:localhost:88000]!@anon-20191002_181700-268:localhost:8800 0]@anon-20191002_181700-276:localhost:88000]@anon-20191002_181700-266:localhost:88000]@anon-20191002_181700-262:localhost:88000]@anon-20191002_181700-267:localhost:88000]@anon-20191002_181700-260:localhost:88000]@anon-20191002_181700-265:localhost:88000]@anon-20191002_181700-258:localhost:88000]@anon-20191002_181700-263:localhost:88000]@anon-20191002_181700-261:localhost:88000]@anon-20191002_181700-253:localhost:88000] @anon-20191002_181700-259:localhost:8800 0] @anon-20191002_181700-252:localhost:88000] @anon-20191002_181700-250:localhost:8800 0]@anon-20191002_181700-257:localhost:88000]@anon-20191002_181700-251:localhost:88000]@anon-20191002_181700-249:localhost:88000]@anon-20191002_181700-248:localhost:88000]@anon-20191002_181700-246:localhost:88000]@anon-20191002_181700-247:localhost:88000]@anon-20191002_181700-245:localhost:88000]@anon-20191002_181700-244:localhost:88000]@anon-20191002_181700-243:localhost:88000]@anon-20191002_181700-242:localhost:88000]@anon-20191002_181700-237:localhost:88000]@anon-20191002_181700-241:localhost:88000]@anon-20191002_181700-239:localhost:88000]@anon-20191002_181700-231:localhost:88000]@anon-20191002_181700-235:localhost:88000]@anon-20191002_181700-233:localhost:88000]@anon-20191002_181700-230:localhost:88000]@anon-20191002_181700-236:localhost:88000]@anon-20191002_181700-229:localhost:88000]@anon-20191002_181700-228:localhost:88000]@anon-20191002_181700-227:localhost:88000]@anon-20191002_181700-225:localhost:88000]@anon-20191002_181700-223:localhost:88000]@anon-20191002_181700-221:localhost:88000]@anon-20191002_181700-219:localhost:88000]@anon-20191002_181700-218:localhost:88000]@anon-20191002_181700-226:localhost:88000]@anon-20191002_181700-216:localhost:88000]@anon-20191002_181700-224:localhost:88000]@anon-20191002_181700-217:localhost:88000]@anon-20191002_181700-215:localhost:88000]@anon-20191002_181700-213:localhost:8800 a} { y w u sqomkigeca~eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~~eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~}eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800  4{>eQa$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1087}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0"], "type": "m.room.guest_access", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041316494, "hashes": {"sha256": "h4qjVrJfpVPu+Gjy6n1hkYJkcV+YR0gAw5rFJdDzQUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8qrOqMKEK+6Xk5V7KkKmfS5ESCuNtqtqBupYlfhHNJvysXWDpubiOqYxJU8DJlpqpJwcIlMKz8FM6tI4S4GLBQ"}}, "unsigned": {"age_ts": 1570041316494}}G=eQa$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1086}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM"], "type": "m.room.history_visibility", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041315660, "hashes": {"sha256": "AHkIn7NYIWfx1zfX+snHcMXKG+yKYXhE5LZ/OUhBP/A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y3eDUuUDAMubylTZcRBHBf8dMA/I3aoog7Ez/iVFOuv9wpn/1vgt18LuoNND6VWK3LgyPEnk/QqhycV6W6q3BA"}}, "unsigned": {"age_ts": 1570041315660, "replaces_state": "$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM"}}<eQa$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1085}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4"], "type": "m.room.history_visibility", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041314402, "hashes": {"sha256": "T5DInfFN5dtoMIZmd76/xF0rAiFYXHfovClqthGdEM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lZQTMreJHubm+YDuhd0XZC3VN4CJBNBAD/vSlsEMQPtGczItD9EeIi4bInBH7icCuru8vrrRZEzmXVfc5+dIBw"}}, "unsigned": {"age_ts": 1570041314402}}t;eQau$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1084}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs"], "type": "m.room.join_rules", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041313610, "hashes": {"sha256": "sSIvaHQUiXag+ZJMOyt+lxwsK3M98xTc1Cq06uGFqSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fd8IDLGbvA5MJV2YH9XV8xGXfNn+Lk94Du+MM7AkEyEqAi3k1D6f846M8H1RkteNJ3TWXQkVCGR4fL2Jx6ExAg"}}, "unsigned": {"age_ts": 1570041313610}} J S ! Y ' _ -e3k9&q?X wE^}K8R, p> w E  } K 1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM t1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI o1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYob0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcB1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYU1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsR1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk #1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kk1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE^1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M;1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY 1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550R1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ -1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYon1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI?1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA 61e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ (1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUP1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA.1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsN1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg/j11e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEt1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMF1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw 1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU 40e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U `1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qp1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4j "]! , 1 U Z ej'Qmx 0X]iQ3 e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU Q']e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMcQ' e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.create$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7IoQ? e!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2JwoQ? e!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsgQ/ e!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rules$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIiQ3 e !EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk Q']e !EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9ocQ' e !EfJcWhdjNARbuHYrqU:localhost:8800m.room.create$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYo Q? e !vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQo Q? e !vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Qg Q/ e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rules$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMi Q3 e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg Q']e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhocQ' e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.create$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8oQ? e!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility$Z1pbz4OPCbNrADxpDdYFj731zJFx2iLp29kJgdzLoZooQ? e!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAgQ/ e!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rules$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsiQ3 e!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ Q']e!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kcQ' e!NFWKQvZkIwvecnREOC:localhost:8800m.room.create$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo Q']e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0 Q']e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4iQ3 e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_access$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6co~Q? e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibility$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQg}Q/ e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rules$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUi|Q3 e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs {Q']e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoczQ' e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0 yQ']e!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik xQ']e!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkAiwQ3 e!HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_access$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUovQ? e!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0ouQ? e!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM " | ! I R a j .7_,L[aieQ' $5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.createmheQ? $QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibilityegeQ/ $LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rulesgfeQ3 $myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels eeQ']$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800adeQ' $FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.createmceQ? $zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibilitymbeQ? $RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibilityeaeQ/ $wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rulesg`eQ3 $E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels _eQ']$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800a^eQ' $1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800m.room.createm]eQ? $_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibilitym\eQ? $9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibilitye[eQ/ $sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rulesgZeQ3 $3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels YeQ']$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800aXeQ' $K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800m.room.createmWeQ? $SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibilityeVeQ/ $dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rulesgUeQ3 $8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels TeQ']$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800aSeQ' $IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800m.room.create ReQ']$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800 QeQ']$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800gPeQ3 $sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_accessmOeQ? $irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibilityeNeQ/ $PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rulesgMeQ3 $yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels LeQ']$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800aKeQ' $V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create JeQ']$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800 IeQ']$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800gHeQ3 $tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_access Ldp>  Q  v D }K  ~9q+ 8k L  X &  ^ R] ,W%wE ? j21e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 71e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo @1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQj1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo -1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI51e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ak1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksI1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER081e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvor1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEv1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsA1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q 11e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM =1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQu1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ%1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 ?1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEy1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg |1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o[1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk21e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 E1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k}1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY-0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh081e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw<1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc-1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs[1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y-1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEX1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg O uO AeQ{$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "txn_id": "108", "stream_ordering": 1090}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA"], "type": "m.room.message", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041318387, "hashes": {"sha256": "k1L3n2syuoAfVSt6X9gWCSeBJwbyVRRup9ryQ+h6MOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EhwbW7LOEdIs/gFFB1b5rQ9u2VhFxaheFYGtq9eO0MA0dDYwOdbAXo7vq/ruEk2gYyRuNYpBi9C2ql+2jnvSAw"}}, "unsigned": {"age_ts": 1570041318387}}@eQa7$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1089}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY"], "type": "m.room.member", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-216", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-216:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041317764, "hashes": {"sha256": "Eb/dKkaWr9BCU9k5ijFQDpLgH2THxDslyX+R/hwCm4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IQy0gkHs1ywzcmj7zsby/L9ewaQC7T8oYtrryZrwJb7Ndfx8v2YBnFZGGwulPHCVVjBTWTtcraVMHC4MRGtRCw"}}, "unsigned": {"age_ts": 1570041317764, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-215:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-215:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-215", "avatar_url": null}, "sender": "@anon-20191002_181700-215:localhost:8800"}]}}?eQw$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "txn_id": "107", "stream_ordering": 1088}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU"], "type": "m.room.message", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041317173, "hashes": {"sha256": "egVo9n3nQ7vipmpAYIIGlZBEXPxSy7KqwwdJ0LR84Q8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0td7Sk8ktNAZPhfV8nN+u6LhYqTIhgLvhSHu20X/TNSxHhUUpiZsSyffigTv0r3iVEKUftFf7lZtsjaEHhvGCQ"}}, "unsigned": {"age_ts": 1570041317173}} }J K &Q ,2 ^j d8q?]W%  X } K  Q   w+jD8p> v21e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y41e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIF1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc71e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAe1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE.1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkP1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA(1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU E11e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYE1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0@1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Yu1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAn1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g M1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0j1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E E1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM &1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI B1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM +1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkw1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4F1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQog1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQs1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcJ1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4ga 21e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 21e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8p1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAD0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicS1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM D Ldp>  Q  v D }K  ~9q+ 8k L  X &  ^ R] ,W%wE ? j21e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 71e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo @1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQj1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo -1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI51e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ak1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksI1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER081e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvor1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEv1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsA1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q 11e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM =1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQo1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 ?1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEy1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg |1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o[1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk21e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 E1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k}1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY-0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh081e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw<1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc-1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs[1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y-1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEX1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg  Mj8 v \ JT"Z(zHB |  p> * P  V $ D nb0th6< Nn1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k[1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kZ1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kY1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ}1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ|1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ{1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q $1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE !1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE 1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q %1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE "1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA 1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q &1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI71e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E ?1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI81e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U}1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E A1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E @1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA 1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA 1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U~1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAM1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAL1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8@1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8?1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8>1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc11e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Yx1e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Mh1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Mg21e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY1e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E`1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg ~z v r n j fb^ZVRNJFceeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800beeQ$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800aeeQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800`eeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800_eeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800^eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800]eeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800\eeQ$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800[eeQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800ZeeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q!vRRNxNyGboLHNhqQvr:localhost:8800YeeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800XeeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800WeeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800VeeQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800UeeQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800TeeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800SeeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800ReeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800QeeQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800PeeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800OeeQ$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800NeeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800MeeQ$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800LeeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800KeeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800JeeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800IeeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800HeeQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800GeeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800FeeQ$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800  | kEeQac$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1094}{"auth_events": ["$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "type": "m.room.power_levels", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"users": {"@anon-20191002_181700-217:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041322428, "hashes": {"sha256": "Iog0q8Wzgbi1Bwgkuyp1MCVyW4eYfRQMZofYqhkIEMQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oFMVldUmfMQd5N9HEGM7gCfEZfwKj5FUAD6QiCMRVTaRYQ7Cgjm5p67i8Pbt9GFVKNIE6Yg6eoaUzdxutGkhDg"}}, "unsigned": {"age_ts": 1570041322428}}vDeQay$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1093}{"auth_events": ["$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0"], "prev_events": ["$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0"], "type": "m.room.member", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-217", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-217:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041321852, "hashes": {"sha256": "qexk+yLYC88Ii6kDvSDkqQBZ6Ee4F42PpFkxbLyFskU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LWXCfPcQvUf+kG2+UGY4zpqEN2lWzxDJrchN+0lhfsChZ7xP+EUUJLB0js0R6ZgB8+te2vZQg7B3cklBB7vLCg"}}, "unsigned": {"age_ts": 1570041321852}}iCeQa_$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1092}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-217:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041320869, "hashes": {"sha256": "WXn/FABLGbBdG9lajMcO1hUxQCvx1X0N9p5Hmw4f988"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G9pzbEYrZqdqJsvwDxnqoiyfeRdKzAIdEiOjgcVG6WgBS5Xo9BFgP2QzMCNqfrjXrsf1F8Bb0B4Lp8mVuYb4BA"}}, "unsigned": {"age_ts": 1570041320869}}BeQa?$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 237, "stream_ordering": 1091}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4"], "prev_events": ["$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY"], "type": "m.room.member", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-216:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-216", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-216:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041318824, "hashes": {"sha256": "Kv9uHKwX/ICBtdynFNmNyAFuuioH2ccIMHIO6K/SF3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b7OyfLGsouP9qHVoFZ6jDQfJhNS39i/ApN3MnKLBCdelpZZ+ZQd+vGq2ZlBs8JzBEG/S/H26vfCDTjHrZpttCg"}}, "unsigned": {"age_ts": 1570041318824, "replaces_state": "$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA"}} CVr9 U  q 8 U 5 rQ 9 8 U qTp7Son6R8e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urksha256H8e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMsha256'8e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUsha2568e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAsha256 o8e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4sha256 I8e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEsha256 8e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iUsha256 8e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIsha256 8e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwssha256&8e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0sha2568e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8sha256 28e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xcsha256 8e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncsha256Y8e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wsha256V8e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8osha2568e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYsha256 8e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8sha256 8e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4sha2568e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUsha256 r8e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYsha2568e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20Asha256E8e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0sha256C8e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qsha256 8e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlssha256|8e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4sha2568e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4Usha256Q8e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egsha256 8e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6ksha2568e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVssha256 o8e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4sha2568e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gsha256u8e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Ysha256 8e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4sha256 !8e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcsha2568e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMsha25698e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwsha256 ;8e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9Usha2568e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIsha256 8e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExosha2568e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34sha2568e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90sha256 8e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQsha256j8e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUsha2568e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwsha256 !7e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwsha256>8e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAAsha2567e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dksha256A8e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUsha256 8e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Ysha256 8e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEsha2568e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyksha256 8e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0sha256-8e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPosha256~8e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8sha2568e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcsha2568e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCosha256#8e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4sha256 n8e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAsha2568e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAsha2568e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4sha25688e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwsha2568e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Msha256 8e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0sha256t8e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Esha256g8e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Asha256 7e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgsha256y8e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMsha256  eQa$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1153}{"auth_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA", "$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8"], "type": "m.room.history_visibility", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041390315, "hashes": {"sha256": "qTM51c13wqTpgmGb7muL3qPtLi29bWeNVHJJ6sPf+SY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XZL7qTxSqfiWBU5bffQrK4Ie1BrZlCfLwPXLZFLtYektFwK+2TrFTFqAcQzhQiZwpLpUbsUMJCj8zQkOkXZRCg"}}, "unsigned": {"age_ts": 1570041390315}}teQau$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1152}{"auth_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA", "$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA"], "type": "m.room.join_rules", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041389682, "hashes": {"sha256": "DaX2eXksD5yO3JtLNRcB9/wKgVPjWYcfJXFEONpvv9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+u9KNccaH+qHW3ulLd3VTChYguL3zQOA8xb1D0xXCfIhzB2x3Mn9B5Mkdf28r96asn4Psp+LKNB5CbYPtKwvBA"}}, "unsigned": {"age_ts": 1570041389682}}k~eQac$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1151}{"auth_events": ["$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "type": "m.room.power_levels", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"users": {"@anon-20191002_181700-234:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041389009, "hashes": {"sha256": "gFTK2WbL6E6/OpBwp3zahFSjQV9eg+yLwsNVP+TIPls"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Me6T6L33kQL3F9qOm4exA/2ydBbGOz01nQmz3MvDcqYDM4x1EIkOSveusBy3gfyrPwWmOGbYhzz0vKHKScw0DQ"}}, "unsigned": {"age_ts": 1570041389009}}v}eQay$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1150}{"auth_events": ["$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o"], "prev_events": ["$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o"], "type": "m.room.member", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-234", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-234:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041388095, "hashes": {"sha256": "D5qqpqDXzbcLnipk6FOvtmjieioRN+2VKR9YREbSNqg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWdntnpeNsKBfTwTgbTTdDYJRpRGhqDmAyrTJmD3vKR55yQogfo5XGIzhlJom1qFbEkwubRPbGDUm7ixbC2wBQ"}}, "unsigned": {"age_ts": 1570041388095}} H[$H l 5 Y " g 0 T  x A e.Rv?c,P,tPt=4E==anon-20191002_181700-287anon-20191002_181700-2874D==anon-20191002_181700-286anon-20191002_181700-2864C==anon-20191002_181700-285anon-20191002_181700-2854B==anon-20191002_181700-284anon-20191002_181700-2844A==anon-20191002_181700-283anon-20191002_181700-2834@==anon-20191002_181700-282anon-20191002_181700-2824?==anon-20191002_181700-281anon-20191002_181700-2814>==anon-20191002_181700-280anon-20191002_181700-2804===anon-20191002_181700-279anon-20191002_181700-2794<==anon-20191002_181700-278anon-20191002_181700-2784;==anon-20191002_181700-277anon-20191002_181700-277E7=%Ganon-20191002_181700-272Display Namehttp://example.com/avatar.png49==anon-20191002_181700-275anon-20191002_181700-27548==anon-20191002_181700-274anon-20191002_181700-2744:==anon-20191002_181700-276anon-20191002_181700-27646==anon-20191002_181700-273anon-20191002_181700-27345==anon-20191002_181700-270anon-20191002_181700-27044==anon-20191002_181700-271anon-20191002_181700-27143==anon-20191002_181700-269anon-20191002_181700-26942==anon-20191002_181700-268anon-20191002_181700-26841==anon-20191002_181700-267anon-20191002_181700-26740==anon-20191002_181700-266anon-20191002_181700-2664/==anon-20191002_181700-265anon-20191002_181700-2654.==anon-20191002_181700-264anon-20191002_181700-2644-==anon-20191002_181700-263anon-20191002_181700-2634,==anon-20191002_181700-262anon-20191002_181700-2624+==anon-20191002_181700-261anon-20191002_181700-2614*==anon-20191002_181700-260anon-20191002_181700-2604)==anon-20191002_181700-259anon-20191002_181700-2594(==anon-20191002_181700-258anon-20191002_181700-2584'==anon-20191002_181700-257anon-20191002_181700-2574&==anon-20191002_181700-255anon-20191002_181700-2554%==anon-20191002_181700-254anon-20191002_181700-2544$==anon-20191002_181700-253anon-20191002_181700-2534#==anon-20191002_181700-252anon-20191002_181700-2524"==anon-20191002_181700-251anon-20191002_181700-2514!==anon-20191002_181700-250anon-20191002_181700-2504 ==anon-20191002_181700-249anon-20191002_181700-2494==anon-20191002_181700-248anon-20191002_181700-2484==anon-20191002_181700-246anon-20191002_181700-2464==anon-20191002_181700-247anon-20191002_181700-2474==anon-20191002_181700-245anon-20191002_181700-2454==anon-20191002_181700-244anon-20191002_181700-2444==anon-20191002_181700-243anon-20191002_181700-2434==anon-20191002_181700-242anon-20191002_181700-2424==anon-20191002_181700-241anon-20191002_181700-2414==anon-20191002_181700-240anon-20191002_181700-2404==anon-20191002_181700-239anon-20191002_181700-2394==anon-20191002_181700-238anon-20191002_181700-2384==anon-20191002_181700-237anon-20191002_181700-23736364==anon-20191002_181700-236anon-20191002_181700-23635354==anon-20191002_181700-235anon-20191002_181700-2354==anon-20191002_181700-234anon-20191002_181700-2344==anon-20191002_181700-233anon-20191002_181700-2334 ==anon-20191002_181700-232anon-20191002_181700-2324 ==anon-20191002_181700-231anon-20191002_181700-2314 ==anon-20191002_181700-230anon-20191002_181700-2304 ==anon-20191002_181700-229anon-20191002_181700-2294 ==anon-20191002_181700-228anon-20191002_181700-2284==anon-20191002_181700-227anon-20191002_181700-2274==anon-20191002_181700-226anon-20191002_181700-2264==anon-20191002_181700-225anon-20191002_181700-2254==anon-20191002_181700-224anon-20191002_181700-2244==anon-20191002_181700-223anon-20191002_181700-2234==anon-20191002_181700-222anon-20191002_181700-2224==anon-20191002_181700-221anon-20191002_181700-2214==anon-20191002_181700-220anon-20191002_181700-2204==anon-20191002_181700-219anon-20191002_181700-2194==anon-20191002_181700-218anon-20191002_181700-2184~==anon-20191002_181700-217anon-20191002_181700-217  IeQw$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "txn_id": "109", "stream_ordering": 1098}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c"], "type": "m.room.message", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041325725, "hashes": {"sha256": "7zcUmOe4Hw3fLlWN0zeHSHuJgv9vF459mV7rhU0ONew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mBOkd+RR/F7FmAGnkZp93nooN9sd9qwToPWfz5YoAcsdUNaJJgqQzsFIr+DQO+53yRNvKisnCv/lLXgBLyEsAw"}}, "unsigned": {"age_ts": 1570041325725}}{HeQa$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1097}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ"], "type": "m.room.guest_access", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041324696, "hashes": {"sha256": "v8fkMLX1bCiI0B9jJb4O1eCqLIWNuthMLLcBT78wpjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FenJ4K7ieq5/ajN7JeiuvtwFDCHg1RW7r30p184jgUHVdz/0gpYofEf21+o3/64ytanz+WP+mqA6STcHZyJADg"}}, "unsigned": {"age_ts": 1570041324696}}GeQa$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1096}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU"], "type": "m.room.history_visibility", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041323652, "hashes": {"sha256": "ienFVpqr2g0NIKyABgJjmnhh5w8A9t3RY8sCufiEVzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZhI6XwKU9gkrmh/xRr5ZD+4TKBZdp9Qs7JIa6Nl2JBOQVKZW4eDh/OQeVOg4NydKNnwN73XSB4QFwgP48zfSCQ"}}, "unsigned": {"age_ts": 1570041323652}}tFeQau$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1095}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs"], "type": "m.room.join_rules", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041323069, "hashes": {"sha256": "3li9angNWkiR337V6oNahdFUK9DUu1pqLPhxLIlXIKc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3LpY8nvK8eK3ZtFio2ro92owbwZbNlcddQDMALByBYG8BLen1b40kBbccKBGaIaJG5jxMbCmUwUsER+gCC6QDA"}}, "unsigned": {"age_ts": 1570041323069}} <&#OuCoYb1 i=> vj D  T | J 7 8z& PH C"N7221e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA s1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 +1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo ~1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPke1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g;1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs]1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0`1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 K1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE?1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE<1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usm1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s t1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E &1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE21e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM "1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ%0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsA1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawpX1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw )1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI91e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0k1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUc1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg_1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgh1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUU1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUS1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w21e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg Xd1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg Y21e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs a} { y w u sqomkigeca~:eeQ$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~9eeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~8eeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~7eeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800~6eeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~5eeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~4eeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800~3eeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~2eeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~1eeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800~0eeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~/eeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~.eeQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~-eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800~,eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~+eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800~*eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800~)eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~(eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800~'eeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800~&eeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~%eeQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~$eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800~#eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~"eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~!eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~ eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800 ~z v r n j fb^ZVRNJFQ]e!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-432:localhost:8800$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwjoinQ]e!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-431:localhost:8800$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCojoin Q]e!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-430:localhost:8800$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsjoin Q]e!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-429:localhost:8800$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsjoin Q]e!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-428:localhost:8800$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuojoin Q]e!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-427:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4join Q]e!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-426:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEjoinQ]e!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-425:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QjoinQ]e!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-424:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIjoinQ]e!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-422:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kjoinQ]e!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-421:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEjoinQ]e!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-420:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMjoinQ]e!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-419:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEjoinQ]e!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-418:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisjoinQ]e!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-417:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kjoinQ]e!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-416:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYjoinQ]e!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-415:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4join~Q]e!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-414:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsjoin}Q]e!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-413:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sjoin|Q]e!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-412:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMjoin{Q]e!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-411:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcjoinzQ]e!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-409:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkjoinyQ]e!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-408:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakjoinxQ]e!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-407:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgjoinwQ]e!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-405:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAjoinvQ]e!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-404:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEjoinuQ]e!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-403:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQjointQ]e!YQATbgbLImCDamiDHC:localhost:8800@anon-20191002_181700-401:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUjoinsQ]e!YQATbgbLImCDamiDHC:localhost:8800@anon-20191002_181700-400:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4joinrQ]e!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-399:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkjoin  I+vD e|J3 vP  J  D PV% j8p>   X &  ^ - ]i7o=1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo 1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A X1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs[1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM@1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0B1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg91e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80G1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUn1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U&1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwy1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q11e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE#1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIf1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 f1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A 1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU H1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 21e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ\0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0=1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q N1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4e1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo |d1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 21e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgw1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc"1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0a1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNou1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwd1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgr1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM3  gLeQa?$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 239, "stream_ordering": 1101}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU"], "prev_events": ["$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo"], "type": "m.room.member", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-218:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-218", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-218:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041327323, "hashes": {"sha256": "hgGb9Nx9IjEqCs3AKzQTnPUr0r2BMryyknTYzVxJgLI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4k4KkxJfnYJidneiUDzOokd63X4lfZxxlkfgxS/OPsmiSr6/FPu//7I2d3MYvx9muOtqFRAfKTCn6MxiOk+qAA"}}, "unsigned": {"age_ts": 1570041327323, "replaces_state": "$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4"}}KeQy$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "txn_id": "110", "stream_ordering": 1100}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4"], "type": "m.room.message", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041326923, "hashes": {"sha256": "rrl/cDYqcCauX6rHxRgTL3oaJXqN/i1WiEwm59Bqqz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7kSB0r1bUPLL4D0+sTGOdUxalWWQmRcpUdhPqspN1xZXD85ylu2pVnhCik9J1gWXMILYySo0Nyl5adLv9WfFDA"}}, "unsigned": {"age_ts": 1570041326923}}JeQa7$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1099}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw"], "type": "m.room.member", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-218", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-218:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041326290, "hashes": {"sha256": "2xWCdL/lbITSOPViws4OREopz5Cs1DbdoWXuaQskv64"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kXOL8wfJCce9NfU4r+wA527oMGjuvLLh+XNyD2P6mLVPzP4xt6xsSHT0Z+9kQdVhKfTrk1qq5wtmCVWCXMaUCg"}}, "unsigned": {"age_ts": 1570041326290, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-217:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-217:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-217", "avatar_url": null}, "sender": "@anon-20191002_181700-217:localhost:8800"}]}} |t l d ] U ME>6.&eeQ$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800#eeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800KeeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800eeQ$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800WeeQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800@eeQ$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800eeQ$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800ReeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800eeQ$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800.eeQ$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800"eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:88008eeQ$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800MeeQ$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800IeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800HeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800JeeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800a ,`m^ k x ' 6 C P ] n{*7DQz+P]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800WP]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:88001P]Q@anon-20191002_181700-270:localhost:8800!RPfffkmSEbWggEjnoI:localhost:88005P]Q@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:88004P]Q@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:88002N[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800XP]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800VP]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800UP]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800TP]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800SP]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800RP]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800QP]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800PP]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800OP]Q@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800NP]Q@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800MP]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800LP]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800KP]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800JN[Q@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800N[Q@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800IP]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800HP]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800GP]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800FP]Q@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800EP]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800DP]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800CP]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800BP]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800AP]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800@N[Q@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800?P]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800>P]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800=P]Q@anon-20191002_181700-275:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:88009P]Q@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800Go(JmpjpQ3 eq!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU oQ']ep!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgdnQ' eo!SvKwEALYoNreUvqAlp:localhost:8800m.room.create$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hksmQ))en!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4plQ? em!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibility$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUhkQ/ el!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rules$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEmjQ9 ek!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_alias$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3ojiQ3 ej!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY hQ']ei!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0dgQ' eh!fOJLpnbtgKNxxVDquX:localhost:8800m.room.create$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4pfQ? ef!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibility$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekheQ/ ee!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rules$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAjdQ3 ed!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU cQ']ec!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMdbQ' eb!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.create$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7IaQ? ee`!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsp`Q? e_!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsh_Q/ e^!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rules$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIj^Q3 e]!EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk ]Q']e\!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9od\Q' e[!EfJcWhdjNARbuHYrqU:localhost:8800m.room.create$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY[Q? eeY!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QpZQ? eX!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QhYQ/ eW!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rules$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMjXQ3 eV!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg WQ']eU!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhodVQ' eT!vRRNxNyGboLHNhqQvr:localhost:8800m.room.create$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8pUQ? eR!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAhTQ/ eQ!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rules$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsjSQ3 eP!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ RQ']eO!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kdQQ' eN!NFWKQvZkIwvecnREOC:localhost:8800m.room.create$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo8PQ']eeM!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4 g * T~=ggq]!c@anon-20191002_181700-229:localhost:8800HEUCKALXOCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJqc15IV1dGS25wcE9uYlEKMDAyZnNpZ25hdHVyZSCYjNjyDWdteJjxc8W-kRRu5ptViIlvWWCgl3LHeciJZgogp]!c@anon-20191002_181700-228:localhost:8800UJAKRYEXDSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmQkcsd34xVTBlNml5TTAKMDAyZnNpZ25hdHVyZSABdTcPgyX8yVTD-6TbXkRBMIld0slF_WoLEFV4QpTzWwogo]!c@anon-20191002_181700-227:localhost:8800WRSATVMLKKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2cV5HQmpVLmszdC46Z0kKMDAyZnNpZ25hdHVyZSBxHji81-3Tl3UczSXzJg5qfZZgB13uIQbfIRym3wSDDgogn]!c@anon-20191002_181700-226:localhost:8800AUORQAXWJLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFd5NFZtUHRFOSYxblE1LVkKMDAyZnNpZ25hdHVyZSCVI9s0qIkXNTwkwqnYOkibSgJyaCo_fwegq8COseHYwwogm]!c@anon-20191002_181700-225:localhost:8800ZNKOABDJUUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGgrMUR4Q0JRdSYqMCo6cFYKMDAyZnNpZ25hdHVyZSA-bbqwnLjAzn7aFa0FsGgHBD5osaljIstOUBLYh80AXwogl]!c@anon-20191002_181700-224:localhost:8800VJTZAJOEFYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA9QDRGT0t0TFkyXnlQMTkKMDAyZnNpZ25hdHVyZSD6ykFyEMZQKJtLTzJ9yjKPCcaZOJZWxkGQFtSCDeqSIAogk]!c@anon-20191002_181700-223:localhost:8800IOQWEQAUDWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZXVy50MVdNTHF1bEZ5TFoKMDAyZnNpZ25hdHVyZSCgkIRbXxnz-j2-gK-uHrcaHrgl60CO4Wf6nYmqJ5O6BQogj]!c@anon-20191002_181700-222:localhost:8800VOKSLIDSSOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVzOEBHLlItVjA4SjBGZGsKMDAyZnNpZ25hdHVyZSAKqdb-hXlfoAJG4zWoJDQqElxSrySuPjAMSbDJIEx7TQogi]!c@anon-20191002_181700-221:localhost:8800REITENATXKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQogh]!c@anon-20191002_181700-220:localhost:8800OOLATWHSMPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgogg]!c@anon-20191002_181700-219:localhost:8800KBEVVOFICUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwo $0X\ ` d  h  l  p t x$|(,048<Q;eQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800Q:eQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800Q9eQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800Q8eQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800Q7eQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800Q6eQ$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo!DoiZErAdypBUMZKaeJ:localhost:8800Q5eQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800Q4eQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800Q3eQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800Q2eQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800Q1eQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800Q0eQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800Q/eQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800Q-eQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800Q,eQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800Q+eQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800Q*eQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800Q)eQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800Q(eQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800Q'eQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800Q&eQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800Q%eQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800Q$eQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800Q#eQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800Q"eQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800Q!eQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800Q eQ$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg!NfaPEGKjnUDUTavzol:localhost:8800QeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800QeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800QeQ$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800QeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800QeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800QeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800QeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800QeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800Q.eQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800   *tPeQau$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1105}{"auth_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ", "$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ"], "type": "m.room.join_rules", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041331945, "hashes": {"sha256": "m3cfxuMlYYJATy3b88ugi5zINOzs4u0rPOkRvu51rUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eAPROix/r+CTy9jrMjPm0jCN2obZhvR/QCYoRGMXD0GV/Cn/04TWjpJzHknW0aDO/hcylDvjun/5AOwV2cCRCg"}}, "unsigned": {"age_ts": 1570041331945}}kOeQac$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1104}{"auth_events": ["$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "type": "m.room.power_levels", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"users": {"@anon-20191002_181700-220:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041331254, "hashes": {"sha256": "D5gCRcqw9tjsfljWMUloHIuBe8vP9Lqgut8BTInvqX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "82QpEFxSFVqk2eCF0YqEhgz1NKJEe2f++AEeN2LGqEnGfOgr93LFCOowyOnSX8iXpfNNZGh7JVgjd9a1RvyxCQ"}}, "unsigned": {"age_ts": 1570041331254}}vNeQay$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1103}{"auth_events": ["$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo"], "prev_events": ["$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo"], "type": "m.room.member", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-220", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-220:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041330025, "hashes": {"sha256": "lo4RAzbRIXVSL9ZjGD2IiUdXyrZW4AkbgIkM6QZcXnM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m4GYp06YmlRpBT7rrUz9CEe0opiIw+ABPNYLKVSGQWyOB1cpa9KnuBSkLkccrmBw/tznltqVNgHdQ5AqecliBQ"}}, "unsigned": {"age_ts": 1570041330025}}iMeQa_$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1102}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-220:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041329318, "hashes": {"sha256": "VBcHu7Q9bPykR5g1sfslZmiqbBGIdVY/6sCZWR4WwO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dcw0V0rgsFHzPuJ+vO6DYQ1vR2ituai3dbTFmPRO8ntmv2dF1Yrl++caIRdhfCFgUPiukimVLCAx96C7AGHtDQ"}}, "unsigned": {"age_ts": 1570041329318}} \ Z  o  mv( {5$ee/Q ]$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAm.room.join_rules!vAUAIZrCnHTeMGeNuw:localhost:8800mdm@anon-20191002_181700-226:localhost:8800&de3Q ]$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUm.room.power_levels!vAUAIZrCnHTeMGeNuw:localhost:8800mmu@anon-20191002_181700-226:localhost:8800 ce'Q ]$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMm.room.member!vAUAIZrCnHTeMGeNuw:localhost:8800mme@anon-20191002_181700-226:localhost:8800b e'Q  ]$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Im.room.create!vAUAIZrCnHTeMGeNuw:localhost:8800m"mt@anon-20191002_181700-226:localhost:8800!ae)Q ]$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNom.room.message!EfJcWhdjNARbuHYrqU:localhost:8800mmc@anon-20191002_181700-224:localhost:8800,`e?Q ]$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jwm.room.history_visibility!EfJcWhdjNARbuHYrqU:localhost:8800m?m.@anon-20191002_181700-224:localhost:8800,_e?Q ]$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsm.room.history_visibility!EfJcWhdjNARbuHYrqU:localhost:8800mm@anon-20191002_181700-224:localhost:8800$^e/Q ]$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIm.room.join_rules!EfJcWhdjNARbuHYrqU:localhost:8800mm|@anon-20191002_181700-224:localhost:8800&]e3Q ]$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkm.room.power_levels!EfJcWhdjNARbuHYrqU:localhost:8800m:mm@anon-20191002_181700-224:localhost:8800 \e'Q ]$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9om.room.member!EfJcWhdjNARbuHYrqU:localhost:8800mmh@anon-20191002_181700-224:localhost:8800[ e'Q  ]$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYm.room.create!EfJcWhdjNARbuHYrqU:localhost:8800mUm@anon-20191002_181700-224:localhost:8800!Ze)Q ]$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQm.room.message!vRRNxNyGboLHNhqQvr:localhost:8800mm@anon-20191002_181700-222:localhost:8800,Ye?Q ]$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQm.room.history_visibility!vRRNxNyGboLHNhqQvr:localhost:8800m:m@anon-20191002_181700-222:localhost:8800,Xe?Q ]$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Qm.room.history_visibility!vRRNxNyGboLHNhqQvr:localhost:8800mmD@anon-20191002_181700-222:localhost:8800$We/Q ]$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMm.room.join_rules!vRRNxNyGboLHNhqQvr:localhost:8800m'm@anon-20191002_181700-222:localhost:8800&Ve3Q ]$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mgm.room.power_levels!vRRNxNyGboLHNhqQvr:localhost:8800mm>@anon-20191002_181700-222:localhost:8800 Ue'Q ]$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhom.room.member!vRRNxNyGboLHNhqQvr:localhost:8800mmd@anon-20191002_181700-222:localhost:8800T e'Q  ]$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8m.room.create!vRRNxNyGboLHNhqQvr:localhost:8800mm@anon-20191002_181700-222:localhost:8800!Se)Q ]$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4m.room.message!NFWKQvZkIwvecnREOC:localhost:8800mm@anon-20191002_181700-220:localhost:8800,Re?Q ]$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAm.room.history_visibility!NFWKQvZkIwvecnREOC:localhost:8800mm/@anon-20191002_181700-220:localhost:8800$Qe/Q ]$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsm.room.join_rules!NFWKQvZkIwvecnREOC:localhost:8800mm@anon-20191002_181700-220:localhost:8800&Pe3Q ]$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQm.room.power_levels!NFWKQvZkIwvecnREOC:localhost:8800m~6mM@anon-20191002_181700-220:localhost:8800 Oe'Q ]$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3km.room.member!NFWKQvZkIwvecnREOC:localhost:8800myim|@anon-20191002_181700-220:localhost:8800  f  q  / 4?(3 aep.9g+S|g!eQ3 $myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels eQ']$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800joinaeQ' $FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.createmeQ? $zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibilityeeQ/ $wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rulesgeQ3 $E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels eQ']$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800joinaeQ' $1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800m.room.createmeQ? $_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibilitygeQ3 $8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels eQ']$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800joinaeQ' $IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800m.room.create eQ']$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800joingeQ3 $sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_accessm eQ? $irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibilitye eQ/ $PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rulesg eQ3 $yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels eQ']$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800joina eQ' $V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create eQ']$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800joingeQ3 $tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_accesseeQ/ $sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rulesgeQ3 $3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels eQ']$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800joinaeQ' $K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800m.room.createmeQ? $SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibilityeeQ/ $dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rules  wvTeQay$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1109}{"auth_events": ["$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8"], "prev_events": ["$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8"], "type": "m.room.member", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-222", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-222:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041336328, "hashes": {"sha256": "0y3cdOX8p7GjjzAhv3C5xbkDJNg66x99L9BaP3ZOz38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "humkTYVdRePPCyOwpb8Cg9XqRSarmDM/Ukne0FABjuYcjm9BWl4Ki3OabOfROyQNg2xcgOGAH5+coRBkemNIBA"}}, "unsigned": {"age_ts": 1570041336328}}iSeQa_$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1108}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-222:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041335185, "hashes": {"sha256": "cFMav+sNJ/UaoKDlEuER2ewd/qVqxk2cXKgDs3Vg/LQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3WPVViLoz1TZFqKx1/nk5QOQ7YaPJ33miTf/QFJe43kPKM2BPmsge743GIL1jYEjjw2tnfejNk2BdN4yZk2HAQ"}}, "unsigned": {"age_ts": 1570041335185}}ReQi$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "txn_id": "111", "stream_ordering": 1107}{"auth_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ", "$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA"], "type": "m.room.message", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041333735, "hashes": {"sha256": "mIJCiP5qNNJA5ruSoh2M6AcB64ghacKB3FMdzDKMk7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wjOKf+sykbe6TkxXpugctO24oumEr4ovyou2h1cbdOkgtmEnmqG8h9cwCiGWKuQfmilaJ/tjZ8WBbk7ip7/+DQ"}}, "unsigned": {"age_ts": 1570041333735}}QeQa$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1106}{"auth_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ", "$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs"], "type": "m.room.history_visibility", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041332661, "hashes": {"sha256": "eGARqDCHYJyiHueoMEe5A/gvpkxwDr3MELYDQO8kBUE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XJSo6djdevrsP/0U7lVYGJVmiH4mlTMCXiLhpwgqd/saK7GOy6VHXiV/MBS14WtQ1jga4wdHcznaBpt6tLhODQ"}}, "unsigned": {"age_ts": 1570041332661}} ,NC 8 - { " p  e ZOD9.|#qf V|eL$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7osha256c[llBYu3 ̤V= ,cV{eL$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMsha256e;$mڅ.qQĒe#VzeL$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEsha256㢤7fe0 EX7P?bTVyeL$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwsha256-ITXY2YKFdօL= %ĴVxeL$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYsha256)ջ4%IQ!Yrg؜,x:XVVweL$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIsha256e]p߁g  ݞ&QG\FVveL$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Msha2561ENrQc=g;sVueL$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gsha256R6`eqQ渓Z*zoB WVteL$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcsha256b@FAVqeL$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMosha256V}|e¯ݑꎻƔm GȸVpeL$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUsha256}=;["$; 1_u5DȒ5VoeL$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgsha256Ȫ—m`M*.a G.XVneL$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hksha2564P>Oesl?7gYVmeL$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4sha2568b/Nockrc6(3nVleL$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUsha256i\dT<df/i2VkeL$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEsha256|7Wz_Z6, QM]6VjeL$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3osha2567JS0(y|ٙס O'4zVieL$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYsha256+b FiQ :x?!QR6VheL$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0sha256mT͑2i1;3QBH.PN VgeL$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4sha256DkqxENF$ cj.Fx.VfeL$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwsha2563$gmPJxsV(LĴi|VeeL$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veksha256@mǺ}+@VdeL$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAsha256,OFd<Ց_o}q|VDu@VceL$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUsha256+PwN|itHz5M9DVbeL$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMsha256d i.: \@['TyVaeL$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Isha256ɿ^=vjX jbt馏V`eL$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNosha256LB'@9D!_`nXC()V_eL$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jwsha256@o[I+%"lJZN؜V^eL$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBssha256F$ YOsa/O0Enö+30V]eL$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIsha256kVQeL$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAsha256Hpt.pp~)k2@ٱ&_؟@ PrZB*uH h ;  Z .  { N ! m @  \ . vHb4|N h: T&n@Z,tF -]@anon-20191002_181700-235:localhost:8800-]@anon-20191002_181700-233:localhost:8800-]@anon-20191002_181700-231:localhost:8800-]@anon-20191002_181700-230:localhost:8800-]@anon-20191002_181700-229:localhost:8800-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-227:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-225:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-223:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-221:localhost:8800-]@anon-20191002_181700-220:localhost:8800-]@anon-20191002_181700-219:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-196:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800,]@anon-20191002_181700-190:localhost:8800z,]@anon-20191002_181700-189:localhost:8800y-]@anon-20191002_181700-188:localhost:8800,]@anon-20191002_181700-187:localhost:8800,]@anon-20191002_181700-186:localhost:8800|,]@anon-20191002_181700-182:localhost:8800m,]@anon-20191002_181700-181:localhost:8800d,]@anon-20191002_181700-180:localhost:8829j,]@anon-20191002_181700-179:localhost:8800h,]@anon-20191002_181700-178:localhost:8800i+[@anon-20191002_181700-16:localhost:8800 ,]@anon-20191002_181700-166:localhost:8829],]@anon-20191002_181700-165:localhost:8800\,]@anon-20191002_181700-161:localhost:8800Z+[@anon-20191002_181700-15:localhost:8800,]@anon-20191002_181700-148:localhost:8829U,]@anon-20191002_181700-147:localhost:8829S,]@anon-20191002_181700-146:localhost:8800V,]@anon-20191002_181700-139:localhost:8829R,]@anon-20191002_181700-128:localhost:8800O,]@anon-20191002_181700-127:localhost:8800N,]@anon-20191002_181700-126:localhost:8800J,]@anon-20191002_181700-123:localhost:8800I+[@anon-20191002_181700-11:localhost:8800,]@anon-20191002_181700-119:localhost:8800F,]@anon-20191002_181700-117:localhost:8800E,]@anon-20191002_181700-115:localhost:8800H,]@anon-20191002_181700-114:localhost:8800G,]@anon-20191002_181700-111:localhost:8829B,]@anon-20191002_181700-100:localhost:8800A/@3:localhost:8800W1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:88001@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:8800~1@13:localhost:8800r KZ,tFvHb4 | N h : T & n @  \ . vHd6~R$l>`2|N -]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-241:localhost:8800-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-351:localhost:8800+[@anon-20191002_181700-34:localhost:8800-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800|-]@anon-20191002_181700-341:localhost:8800z+[@anon-20191002_181700-33:localhost:8800 -]@anon-20191002_181700-339:localhost:8800y-]@anon-20191002_181700-338:localhost:8800w-]@anon-20191002_181700-337:localhost:8800u-]@anon-20191002_181700-336:localhost:8800t-]@anon-20191002_181700-334:localhost:8800q-]@anon-20191002_181700-333:localhost:8800r-]@anon-20191002_181700-332:localhost:8800j-]@anon-20191002_181700-331:localhost:8800e-]@anon-20191002_181700-330:localhost:8800b+[@anon-20191002_181700-32:localhost:8800 -]@anon-20191002_181700-329:localhost:8800Q-]@anon-20191002_181700-328:localhost:8800\-]@anon-20191002_181700-327:localhost:8800[-]@anon-20191002_181700-326:localhost:8800Y-]@anon-20191002_181700-324:localhost:8800U-]@anon-20191002_181700-323:localhost:8800P-]@anon-20191002_181700-321:localhost:8800N-]@anon-20191002_181700-320:localhost:8800T+[@anon-20191002_181700-31:localhost:8800-]@anon-20191002_181700-319:localhost:8800I-]@anon-20191002_181700-318:localhost:8800H-]@anon-20191002_181700-317:localhost:8800F-]@anon-20191002_181700-316:localhost:8800D-]@anon-20191002_181700-300:localhost:88009-]@anon-20191002_181700-299:localhost:88008-]@anon-20191002_181700-298:localhost:88005-]@anon-20191002_181700-297:localhost:88003-]@anon-20191002_181700-294:localhost:88000-]@anon-20191002_181700-290:localhost:8800--]@anon-20191002_181700-286:localhost:8800)-]@anon-20191002_181700-284:localhost:8800%-]@anon-20191002_181700-283:localhost:8800$-]@anon-20191002_181700-280:localhost:8800'-]@anon-20191002_181700-279:localhost:8800(-]@anon-20191002_181700-277:localhost:8800!-]@anon-20191002_181700-276:localhost:8800-]@anon-20191002_181700-269:localhost:8800-]@anon-20191002_181700-268:localhost:8800 -]@anon-20191002_181700-267:localhost:8800-]@anon-20191002_181700-266:localhost:8800-]@anon-20191002_181700-265:localhost:8800-]@anon-20191002_181700-263:localhost:8800-]@anon-20191002_181700-262:localhost:8800-]@anon-20191002_181700-261:localhost:8800-]@anon-20191002_181700-260:localhost:8800-]@anon-20191002_181700-259:localhost:8800 -]@anon-20191002_181700-258:localhost:8800-]@anon-20191002_181700-257:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800 -]@anon-20191002_181700-249:localhost:8800 8l D `8f]c!E@anon-20191002_181700-230:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJTUWhsR0JMUi1oYkNYYWcKMDAyZnNpZ25hdHVyZSAGiLKsOqoQuxKK_4Pmg-XFWgoT-qrRMYFwGMFT-hQ-YQoZDQWNSBGEB127.0.0.1Perl + Net::Async::HTTP/0.44m"e]c!E@anon-20191002_181700-229:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJqc15IV1dGS25wcE9uYlEKMDAyZnNpZ25hdHVyZSCYjNjyDWdteJjxc8W-kRRu5ptViIlvWWCgl3LHeciJZgoHEUCKALXOC127.0.0.1Perl + Net::Async::HTTP/0.44mփd]c!E@anon-20191002_181700-228:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmQkcsd34xVTBlNml5TTAKMDAyZnNpZ25hdHVyZSABdTcPgyX8yVTD-6TbXkRBMIld0slF_WoLEFV4QpTzWwoUJAKRYEXDS127.0.0.1Perl + Net::Async::HTTP/0.44mԃc]c!E@anon-20191002_181700-227:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2cV5HQmpVLmszdC46Z0kKMDAyZnNpZ25hdHVyZSBxHji81-3Tl3UczSXzJg5qfZZgB13uIQbfIRym3wSDDgoWRSATVMLKK127.0.0.1Perl + Net::Async::HTTP/0.44mߞb]c!E@anon-20191002_181700-226:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFd5NFZtUHRFOSYxblE1LVkKMDAyZnNpZ25hdHVyZSCVI9s0qIkXNTwkwqnYOkibSgJyaCo_fwegq8COseHYwwoAUORQAXWJL127.0.0.1Perl + Net::Async::HTTP/0.44mÃa]c!E@anon-20191002_181700-225:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGgrMUR4Q0JRdSYqMCo6cFYKMDAyZnNpZ25hdHVyZSA-bbqwnLjAzn7aFa0FsGgHBD5osaljIstOUBLYh80AXwoZNKOABDJUU127.0.0.1Perl + Net::Async::HTTP/0.44m_`]c!E@anon-20191002_181700-224:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA9QDRGT0t0TFkyXnlQMTkKMDAyZnNpZ25hdHVyZSD6ykFyEMZQKJtLTzJ9yjKPCcaZOJZWxkGQFtSCDeqSIAoVJTZAJOEFY127.0.0.1Perl + Net::Async::HTTP/0.44m_]c!E@anon-20191002_181700-223:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZXVy50MVdNTHF1bEZ5TFoKMDAyZnNpZ25hdHVyZSCgkIRbXxnz-j2-gK-uHrcaHrgl60CO4Wf6nYmqJ5O6BQoIOQWEQAUDW127.0.0.1Perl + Net::Async::HTTP/0.44m^]c!E@anon-20191002_181700-222:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVzOEBHLlItVjA4SjBGZGsKMDAyZnNpZ25hdHVyZSAKqdb-hXlfoAJG4zWoJDQqElxSrySuPjAMSbDJIEx7TQoVOKSLIDSSO127.0.0.1Perl + Net::Async::HTTP/0.44mE]]c!E@anon-20191002_181700-221:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQoREITENATXK127.0.0.1Perl + Net::Async::HTTP/0.44m   4 h 9md]c@anon-20191002_181700-252:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13Zgo127.0.0.1d]c@anon-20191002_181700-250:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgo127.0.0.1d]c@anon-20191002_181700-251:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awo127.0.0.1fa[a@anon-20191002_181700-24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCg127.0.0.1d]c@anon-20191002_181700-249:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0Qo127.0.0.1d]c@anon-20191002_181700-248:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813Qo127.0.0.1d]c@anon-20191002_181700-247:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwo127.0.0.1d]c@anon-20191002_181700-246:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwo127.0.0.1d]c@anon-20191002_181700-245:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAo127.0.0.1d]c@anon-20191002_181700-244:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQo127.0.0.1  HXeQa$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1113}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q"], "type": "m.room.history_visibility", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041339706, "hashes": {"sha256": "UgjCTfOOLhy5PgFXNG5Al3hTyJxCqbZimZWlCmy59xI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rFi0DCPwGMwGuXNmCrxs1Ye/WxIZG9x3Tto/Ovh+k8CQCfwkob8K/x1fX5ZltgGcX2GrYBE/a75PdFk2JapDg"}}, "unsigned": {"age_ts": 1570041339706, "replaces_state": "$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q"}}WeQa$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1112}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM"], "type": "m.room.history_visibility", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041338761, "hashes": {"sha256": "NsIpxg33Lq+fwhxvxcBvh9NItAfDncB/CopAGe3WG/g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "39CycjQjpT65s9xV2fDoMyljrjZd+lHNfqkcX39CrNPfU++7ICNWaZ9WdIrXyMgJgAO2RCPP4xUA5trUJV+XCw"}}, "unsigned": {"age_ts": 1570041338761}}tVeQau$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1111}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg"], "type": "m.room.join_rules", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041337895, "hashes": {"sha256": "cYLMXQ1D/0WzdCLFwaMmTg7JwrM1J9spxazvNcARRLs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KCHiFbZ6x74Y3kJ781UWrolVWqg64mMtVPrXVkqz37N0FnQLYddAdX3ScwahwSx4E6eBPtEoJHikx5hTSl/lDA"}}, "unsigned": {"age_ts": 1570041337895}}kUeQac$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1110}{"auth_events": ["$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "type": "m.room.power_levels", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"users": {"@anon-20191002_181700-222:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041337004, "hashes": {"sha256": "8zisB5ulpI+sLz6UH1gNkG0hFqQ2n+RmLogT8o5ZldA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9gjAKR69T/KJrox0y05BT+jPJMUEqTpE5LKp7ToMY4UGs5O84uB4Dv80pPl79ym/C75m4dxIfUNC6cQ8Dd1WAg"}}, "unsigned": {"age_ts": 1570041337004}} ]yV3B% B+t5 h E " q N 7 z c $  s V 6  | _ ? $ hM*yV3b<%kE" a"pU2 P 3 Dm.room.guest_accessG"? Cm.room.history_visibilityF"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-215:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-214:localhost:8800>']m.room.member@anon-20191002_181700-214:localhost:88003 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ Bm.room.join_rulesE3 Am.room.power_levelsD>']@m.room.member@anon-20191002_181700-238:localhost:8800C' ?m.room.createB"? >m.room.history_visibilityA%))=m.room.aliaseslocalhost:8800@"? 9 :m.room.canonical_alias=3 9m.room.power_levels<>']8m.room.member@anon-20191002_181700-237:localhost:8800;' 7m.room.create:%))6m.room.aliaseslocalhost:88009"? 5m.room.history_visibility8/ 4m.room.join_rules79 3m.room.canonical_alias63 2m.room.power_levels5>']1m.room.member@anon-20191002_181700-236:localhost:88004' 0m.room.create3"? /m.room.history_visibility2"? .m.room.history_visibility1/ -m.room.join_rules03 ,m.room.power_levels/>']+m.room.member@anon-20191002_181700-234:localhost:8800.' *m.room.create-"? )m.room.history_visibility,"? (m.room.history_visibility+/ 'm.room.join_rules*3 &m.room.power_levels)>']%m.room.member@anon-20191002_181700-232:localhost:8800(' $m.room.create'%))#m.room.aliaseslocalhost:8800&"? "m.room.history_visibility%/ !m.room.join_rules$9  m.room.canonical_alias#3 m.room.power_levels">']m.room.member@anon-20191002_181700-231:localhost:8800!' m.room.create %))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-228:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-226:localhost:8800' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3  m.room.power_levels>'] m.room.member@anon-20191002_181700-224:localhost:8800'  m.room.create"?  m.room.history_visibility "?  m.room.history_visibility / m.room.join_rules 3 m.room.power_levels >']m.room.member@anon-20191002_181700-222:localhost:8800 ' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-220:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-218:localhost:8800>']m.room.member@anon-20191002_181700-218:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-217:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-216:localhost:8800>']m.room.member@anon-20191002_181700-216:localhost:88003 m.room.guest_access"? m.room.history_visibility  | k\eQac$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1117}{"auth_events": ["$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "type": "m.room.power_levels", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"users": {"@anon-20191002_181700-224:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041343546, "hashes": {"sha256": "DGEnmB28Veqnafrjz2VhSRfFQ/7aSnIIKUNcnxS0FJs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pnQAlfNREuej8agLDYF2+ao6SvLleV4AiSmu/0QxcMsQE6Ig7zyFHIR0RoYHpEBdP37qCT+3wRJXxinrmsS5Ag"}}, "unsigned": {"age_ts": 1570041343546}}v[eQay$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1116}{"auth_events": ["$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY"], "prev_events": ["$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY"], "type": "m.room.member", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-224", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-224:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041342979, "hashes": {"sha256": "Zj2cykMFonudY3i4SGRYe1oOpZulzxJZf0/QmFXAcEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ncs4skbVXqHUXlLuCoJJtUT9R0Zej3ngWQLjV3VD29iBQov6GIBbklXjRBsH2QqzPSQmaITzu7CMTwuqFLX8AQ"}}, "unsigned": {"age_ts": 1570041342979}}iZeQa_$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1115}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-224:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041342293, "hashes": {"sha256": "73nCH7cwiG4vDoSQEbc75ZOcrWL58CMVtRIC6F4yf4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EqbZte8AINK5uHlzELK8x5+ebpcThLBuqHugByIoo0VsqNxOYHcfO8tgMYcEwDgrgr679OGQi86Sn+iGGgFpDg"}}, "unsigned": {"age_ts": 1570041342293}}YeQi$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "txn_id": "112", "stream_ordering": 1114}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ"], "type": "m.room.message", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041340550, "hashes": {"sha256": "oz8v4CbENVdmGA4eWBCYPmMJO0UicE83ResWwbTm2uE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GfvewCG9if6+lhUPh3qyJhewf1eW9JdRSfe0jqAOcrfZvyI067o2QsK8fst3YDx+miclmS75o6a8co0VBHatBg"}}, "unsigned": {"age_ts": 1570041340550}} VG\*|Jjp  v D $1 | J  PP  >  W % ] +ci8p>8 vDV\*1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 11e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo:1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM 1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo - 1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw 41e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4G1e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78g1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w:1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M 1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQb1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 &1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcML1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo <1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 61e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70W1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE[1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo{1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo.1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4c1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0K1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoH1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCky1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIy1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEE1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4d1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 C1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 =1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls <1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 71e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 !1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo c1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko j1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 R6 / y > ! Q Er;Et5 PSv9D%RK^Q']!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800 BQ? !anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibility :Q/ !anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rules <Q3 !anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels ^Q']!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800 6Q' !anErKtXIsVKEEsrzWM:localhost:8800m.room.create  7<Q3 !atnRTMliktaVUhMVID:localhost:8800m.room.power_levelsX^Q']!atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-536:localhost:8800[^Q']!atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800W:Q/ !atnRTMliktaVUhMVID:localhost:8800m.room.join_rulesYBQ? !atnRTMliktaVUhMVID:localhost:8800m.room.history_visibilityZ6Q' !atnRTMliktaVUhMVID:localhost:8800m.room.createV<Q3 !aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels?^Q']!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800>:Q/ !aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rules@BQ? !aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibilityA6Q' !aknLNLxfChlLvFYhkJ:localhost:8800m.room.create=5Q% !aaRwQZdNAliyvRHpjs:localhost:8800m.room.topic9Q- !aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstone:Q/ !aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_acl>Q7 !aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups<Q3 !aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels4Q# !aaRwQZdNAliyvRHpjs:localhost:8800m.room.name^Q']!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800:Q/ !aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rulesBQ? !aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility<Q3 !aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access:Q/ !aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption6Q' !aaRwQZdNAliyvRHpjs:localhost:8800m.room.create6Q' !aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatar<Q3 !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels^Q']!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800:Q/ !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rulesBQ? !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibility6Q' !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.createVQ3A!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_changeNQ31!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changesCQ?!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5<Q3 !aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels^Q']!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800^Q']!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800^Q']!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800:Q/ !aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rulesBQ? !aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibility6Q' !aWvVRVaDflYyyGTOdD:localhost:8800m.room.create;Q3 !aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levelsy\Q'[!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800xK BQ? !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility &:Q/ !aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rules <Q3 !aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels ^Q']!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800 ^Q']!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800 <Q3 !aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_access ~6Q' !aiOswwhoZqjhcjzbzc:localhost:8800m.room.create  " 0 @ P ` K &6FVfv.u% ]@anon-20191002_181700-254:localhost:8800$2b$04$F1N2X/qfoZ.aaFe9eoR1QuHvaL.HiXSKCzR5PQZhX6bstchyAL9wa]u$ ]@anon-20191002_181700-253:localhost:8800$2b$04$rbTGO3Kw2vs5CdlA2QR5AennjxYx.dop45xazryBfpyOXx4oZaujy]u# ]@anon-20191002_181700-252:localhost:8800$2b$04$RRFaEpieIohI/7YotMVWPOglkM.zTgsQ0EN8lQPSVmZyPyhwXT662]u" ]@anon-20191002_181700-251:localhost:8800$2b$04$9BJ7FXvr4MleL60kge1AmegI2yr4L8.5Yj1g8.CVbG05w5M9dUmqO]u! ]@anon-20191002_181700-250:localhost:8800$2b$04$pHjn.0xQQbcpiV3Tj7AM.uRLFWslpiCWCoGqOb6zhCxL7Pdqv0Zga]u ]@anon-20191002_181700-249:localhost:8800$2b$04$Qx1Mc9/NJcqAFkeL5aaUWOZCdT3IdJP8OOHXlx5G8PbTnYsmyjSbi]u ]@anon-20191002_181700-248:localhost:8800$2b$04$s9.NI9DyzGBS5zUuuHAgQ.IPhHYr9PTr0kJLWztlPixH5MeQsSUhe]u ]@anon-20191002_181700-246:localhost:8800$2b$04$fNa5lTMzTh6grAMuD8vMOucwVOtMYvFY65f2WVQgYLSrSzM4GInRS]nu ]@anon-20191002_181700-247:localhost:8800$2b$04$baR9dWo8uzjVdzeESeEaLOjdT.VtC0K6bRiO2TJvtnDwYSlcDmShu]mu ]@anon-20191002_181700-245:localhost:8800$2b$04$t1RZHs94HV4AwdUiscwT1uVj1fOD0wsMdlQHeNFYHPpODHj9sulbu]Xu ]@anon-20191002_181700-244:localhost:8800$2b$04$g5xNohsWrwiX.FBIGOopvuNisK9qIbjI6r.CdARwdS57ZVUF5M5Rq]Xu ]@anon-20191002_181700-243:localhost:8800$2b$04$hvZdTP6XA0wGj5zNvnPQWeAPKdnrjiaIOR0En84oGb66Nhe2ZjPxq]Nu ]@anon-20191002_181700-242:localhost:8800$2b$04$ONLD4oZV/LKFnouXj3JEbuOvvTpLvlRGjeWmMBV7nQrRYw5MfwluW]Nu ]@anon-20191002_181700-241:localhost:8800$2b$04$nv2lcdLaIefdFbtMLRGAke4gkzDegvEfQQZE2qnu2SLgyfFni0u8W]Hu ]@anon-20191002_181700-240:localhost:8800$2b$04$jp7jCeAVJdvNcvWUc9AYFeWBiVRsBgbrZw405Z63B.BS/V8Bqxs0m]Hu ]@anon-20191002_181700-239:localhost:8800$2b$04$7lismPReykr5t24SYKe0NuPheUZU1Ali5SwBh96Lm7hYcVl/mKPYe]?u ]@anon-20191002_181700-238:localhost:8800$2b$04$q5HdsknvoLQYGmgMcUWAHuKlfw8AT3lDWavO83gNiNJhX8r3MtSjO]?u ]@anon-20191002_181700-237:localhost:8800$2b$04$S88maDtvD36.srzELSP7ZekqxL/uQGYj3r8y9/bJHU6chKF7cpF7q]7" 1 @36:localhost:8800]7u ]@anon-20191002_181700-236:localhost:8800$2b$04$6zqmG8WPWTLMP7b9HYkng.ThTcMq1IMOEMUhYvt9oHBq3gMBvKTzq]0" 1 @35:localhost:8800]0u ]@anon-20191002_181700-235:localhost:8800$2b$04$24oAADm9RjzGcy2M2u3Js.qYOa1hbNx.D2nNz.eQGQoVI2iYMFcp.]*u ]@anon-20191002_181700-234:localhost:8800$2b$04$ktppnquTTc/3.ldQbx5CJemS0ZvXlQAAAsfSFoBKIqpjaEXyQki0a]*u ]@anon-20191002_181700-233:localhost:8800$2b$04$DNNi6y4ARwF8jONpXvsgA.mOfg.UfRj6c.HrsnVUZzQlaFny5OTTG]#u ]@anon-20191002_181700-232:localhost:8800$2b$04$dO4JJIM3gX6JrF5DSP9o1esLxNecGetSSSUDKNJLz2gO0TZGOywQS]#u ]@anon-20191002_181700-231:localhost:8800$2b$04$2OM0zPRA6A6yO5YiToc/ZuyzWL8bl5Co1L..//k56j9L4S/nxhI1e]u ]@anon-20191002_181700-230:localhost:8800$2b$04$TsLRa7SXCPj7i62B0zewq.B8JJHjbm7/VzN8EZ1kSrB1f4Uzgk8oq]u ]@anon-20191002_181700-229:localhost:8800$2b$04$R/pa5utiAUeucsNnrL9XiO.tYTu4cW3jHqMPa8U.iAkb4wLOEArkK] u ]@anon-20191002_181700-228:localhost:8800$2b$04$Blm2VXTI24GbnLLxqveVfOj8eD/NQ2CvZWQp4femaGVhsovSXQI.C] u ]@anon-20191002_181700-227:localhost:8800$2b$04$aJ0j3pHeCtLr6eZoBgy4gOiyCvQ.CZexuqNSZYfEUc1n7C9IthAH2] u ]@anon-20191002_181700-226:localhost:8800$2b$04$mHO.08CUQEBK7qNGbVg9gus2DHCE5xNUc1WV1vfJsC4FKD.SpOWLK]u ]@anon-20191002_181700-225:localhost:8800$2b$04$s7rmd5r74BEpcqD1r/S5YeaQdNFbNEXfGJHxcOyfT0XVJ5nlFehWy]u ]@anon-20191002_181700-224:localhost:8800$2b$04$ReAQlLGc5NC1uXMzy4P/9e387EGO3/y6wVFcykU136WTf6D7.k8tK]u ]@anon-20191002_181700-223:localhost:8800$2b$04$3VN7N4nsdJizKOYqKo.oXObEAVQ0LpnNybd2LCXzFsC0YY/2sIEiK] CP QU8l 3 T  p 7   T S o6Rn qq n55 7 Or8e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEsha256y8e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4sha2568e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awsha2568e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEsha2568e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51Msha2568e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4sha2568e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMsha25608e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbssha2568e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMsha256Q8e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccsha256l8e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6iksha256B8e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ecsha2568e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQosha2568e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUsha2568e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Qsha2567e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ksha256}8e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMsha256 =8e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYsha256-8e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEsha256 78e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wsha256 8e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4ssha256 J8e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIosha2568e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYsha2568e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQsha256j8e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGosha2568e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEsha256X8e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwsha256<8e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0sha2568e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMksha2568e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCssha256A8e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivkssha256I8e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxgsha2568e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Qsha2568e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEsha2568e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEsha2568e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0sha25688e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0sha2568e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4sha256 8e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78sha2568e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3posha2568e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwsha256W8e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuksha2568e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMsha2568e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebhosha256 8e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9osha256[7e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0sha25688e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBssha256[8e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMcsha256-8e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58sha256'7e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kksha256a8e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4sha2568e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4sha2568e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmssha2568e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMsha25678e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYsha2568e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0sha25648e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gsha2568e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpgsha256 |8e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGIsha2568e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUssha256z8e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIsha2568e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFosha256 @8e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwsha2568e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAsha256 8e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIsha2568e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawsha2568e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQsha256 PL  W %  ] +ci8*p> $\vD|J  }P V18q? K w E  jj21e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo l1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls =1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 81e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw t1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc 91e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ901e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE01e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg:1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA#1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw&1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4f1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM ~1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIt1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho21e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAD1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMW1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY&1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8T1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasx1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMg1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsK1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ21e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0~1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8f1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso31e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 H1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o|1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F41e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs{1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI41e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII a} { y w u sqomkigeca~YeeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~XeeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~WeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~VeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~UeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~TeeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~SeeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~ReeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~QeeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~PeeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~OeeQ$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~NeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800~MeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~LeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800~KeeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800~JeeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~IeeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800~HeeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800~GeeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~FeeQ$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~EeeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~DeeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~CeeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800~BeeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~AeeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~@eeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800~?eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~>eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~=eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800~<eeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~;eeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800  4`eQi$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "txn_id": "113", "stream_ordering": 1121}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw"], "type": "m.room.message", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041346562, "hashes": {"sha256": "8eejzS1thmojy+6kf8HEYKp7l/vZEGWjjZEjm0uWtzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WY6cHRiXf0VdUMfNgEJhck2B+ARFTthZjl/sj87I0Iyde86qvjVzNEIUmiVQQAnXQF3ZcJCyp3fNSpufsAc2AA"}}, "unsigned": {"age_ts": 1570041346562}}G_eQa$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1120}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs"], "type": "m.room.history_visibility", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041345855, "hashes": {"sha256": "VJ8MlcB+0c0vs42cGen22qN17U4LxMNCWS3Gjn5ziPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmwi0SN+ZDpxTrztnFF9CKakx14JWoBoecPEffo6icCnw58qhpou41TI2s5nmUc4buOqj/ebVvdWeYMVFScPCg"}}, "unsigned": {"age_ts": 1570041345855, "replaces_state": "$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs"}}^eQa$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1119}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI"], "type": "m.room.history_visibility", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041344747, "hashes": {"sha256": "p8RnFC0hu2ujDhtxvrBMfW4/RS8fkKMKc980WuTSERk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lYSlnmqXNuX3pn9OT2DTPh09epDG9eVrnbW1l1iIKcCYLfch+wc0AzmjBZ03eQFr4w7NdIw5rTQc6Mvh/GOTBQ"}}, "unsigned": {"age_ts": 1570041344747}}t]eQau$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1118}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk"], "type": "m.room.join_rules", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041344204, "hashes": {"sha256": "Oa8IdXCL1+u2V+FT4hJUxnLmHHxjHNEpigV8XqngIec"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7qOxgbyXCFyhiYyLB4BOh3FflAoK2RLvH1VnYs+zz5P7V3eyZik4bsY10m1ErSSrwykk7JKYY3vTdld45kgBQ"}}, "unsigned": {"age_ts": 1570041344204}} PL  W %  ] +ci8*p> $\vD|J  }P V18q? K w E  jj21e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo l1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls =1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 81e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw r1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc 91e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ901e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE01e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg:1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA#1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw&1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4f1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM ~1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIt1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho21e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAD1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMW1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY&1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8T1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasx1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMg1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsK1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ21e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0x1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8`1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso-1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 H1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o|1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F41e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs{1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI41e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII i g 4 h5i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2cV5HQmpVLmszdC46Z0kKMDAyZnNpZ25hdHVyZSBxHji81-3Tl3UczSXzJg5qfZZgB13uIQbfIRym3wSDDgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFd5NFZtUHRFOSYxblE1LVkKMDAyZnNpZ25hdHVyZSCVI9s0qIkXNTwkwqnYOkibSgJyaCo_fwegq8COseHYwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGgrMUR4Q0JRdSYqMCo6cFYKMDAyZnNpZ25hdHVyZSA-bbqwnLjAzn7aFa0FsGgHBD5osaljIstOUBLYh80AXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA9QDRGT0t0TFkyXnlQMTkKMDAyZnNpZ25hdHVyZSD6ykFyEMZQKJtLTzJ9yjKPCcaZOJZWxkGQFtSCDeqSIAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZXVy50MVdNTHF1bEZ5TFoKMDAyZnNpZ25hdHVyZSCgkIRbXxnz-j2-gK-uHrcaHrgl60CO4Wf6nYmqJ5O6BQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVzOEBHLlItVjA4SjBGZGsKMDAyZnNpZ25hdHVyZSAKqdb-hXlfoAJG4zWoJDQqElxSrySuPjAMSbDJIEx7TQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgo   *tdeQau$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1125}{"auth_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU", "$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU"], "type": "m.room.join_rules", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041350756, "hashes": {"sha256": "rUx/v8nPjki9R8QiZUHYbF6jJkHg+tDl8Wf78VAG6As"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J2N6r2tBCSuLUbDxmMF5UIavhIfWYpBqHgr0VldooS9kpgfOutPWEUg51q/US7ijDkNb0X3PAwhg0XyP3e/GAw"}}, "unsigned": {"age_ts": 1570041350756}}kceQac$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1124}{"auth_events": ["$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "type": "m.room.power_levels", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"users": {"@anon-20191002_181700-226:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041349663, "hashes": {"sha256": "g0VFanJS8J5M8lp1mkDUKA6GxezUfteTZntSKIY2M90"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "De1PPilyjW2qCukz1mU5ZBT4Fe9dBEhSFCQ+FD3idSQyniCm/ybwAJGBGItzDhcbH1tCrmCVGRSl8BvCO07VDA"}}, "unsigned": {"age_ts": 1570041349663}}vbeQay$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1123}{"auth_events": ["$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I"], "prev_events": ["$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I"], "type": "m.room.member", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-226", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-226:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041349112, "hashes": {"sha256": "kkYrPGmlpjnTJTX3G0md5z2tC3QzIWQEg4H3uP77BYk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rDcXRsQqHjZ9AVCXbXQiVGwn5il34eetTUbyQLiNDQfdyyTsNu4zKcYDtmAXG0QmuHYxIU17s1txWAEvScRFAQ"}}, "unsigned": {"age_ts": 1570041349112}}iaeQa_$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1122}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-226:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041348386, "hashes": {"sha256": "QqPfg18mzu4GlTF4v1AIvDicqUj0gjE9xUoOhY8m9OE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BFZ7pEbd+mRhKxFR8FR0ujO78uRuAoIQKRNldtcNus8hR22ug+RmLeVQza3AevUxzZqRz21+DWXsDPE3lp6aBg"}}, "unsigned": {"age_ts": 1570041348386}} #c$/ T x   3 W|3>h#Jcr9Q))e6!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9go8Q? e5!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibility$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwg7Q/ e4!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rules$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYl6Q9 e3!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwi5Q3 e2!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo 4Q']e1!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEc3Q' e0!DoiZErAdypBUMZKaeJ:localhost:8800m.room.create$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSko2Q? e/!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7ko1Q? e.!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIg0Q/ e-!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rules$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8i/Q3 e,!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA .Q']e+!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4c-Q' e*!qSUSLLWjDxcGibUZdT:localhost:8800m.room.create$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7oo,Q? e)!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMo+Q? e(!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEg*Q/ e'!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rules$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwi)Q3 e&!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY (Q']e%!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIc'Q' e$!RmwbYvIIQyPlHlClty:localhost:8800m.room.create$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mr&Q))e#!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwco%Q? e"!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibility$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwg$Q/ e!!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rules$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUl#Q9 e !SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_alias$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoi"Q3 e!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU !Q']e!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgc Q' e!SvKwEALYoNreUvqAlp:localhost:8800m.room.create$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkrQ))e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4oQ? e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibility$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUgQ/ e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rules$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqElQ9 e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_alias$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oiQ3 e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY Q']e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0cQ' e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.create$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4oQ? e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibility$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekgQ/ e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rules$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA -RM H C > 9 4/*|%w rmhc TQe!wsvXTJXouVkEZcCFsD:localhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKETQe!wsvXTJXouVkEZcCFsD:localhost:8800$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuITQe!wsvXTJXouVkEZcCFsD:localhost:8800$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2ATQe!wsvXTJXouVkEZcCFsD:localhost:8800$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RETQe!wsvXTJXouVkEZcCFsD:localhost:8800$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpATQe!wsvXTJXouVkEZcCFsD:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMTQe!wsvXTJXouVkEZcCFsD:localhost:8800$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQTQe!DoiZErAdypBUMZKaeJ:localhost:8800$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfoTQe!DoiZErAdypBUMZKaeJ:localhost:8800$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzoT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGETQe!DoiZErAdypBUMZKaeJ:localhost:8800$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSkTQe!qSUSLLWjDxcGibUZdT:localhost:8800$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7kTQe!qSUSLLWjDxcGibUZdT:localhost:8800$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czITQe!qSUSLLWjDxcGibUZdT:localhost:8800$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8TQe!qSUSLLWjDxcGibUZdT:localhost:8800$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFATQe~!qSUSLLWjDxcGibUZdT:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4TQe}!qSUSLLWjDxcGibUZdT:localhost:8800$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7oTQe|!RmwbYvIIQyPlHlClty:localhost:8800$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMTQe{!RmwbYvIIQyPlHlClty:localhost:8800$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMETQez!RmwbYvIIQyPlHlClty:localhost:8800$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwT~Qey!RmwbYvIIQyPlHlClty:localhost:8800$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYT}Qex!RmwbYvIIQyPlHlClty:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIT|Qew!RmwbYvIIQyPlHlClty:localhost:8800$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3MT{Qev!SvKwEALYoNreUvqAlp:localhost:8800$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gTzQeu!SvKwEALYoNreUvqAlp:localhost:8800$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcTyQet!SvKwEALYoNreUvqAlp:localhost:8800$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwTxQes!SvKwEALYoNreUvqAlp:localhost:8800$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUTwQer!SvKwEALYoNreUvqAlp:localhost:8800$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoTvQeq!SvKwEALYoNreUvqAlp:localhost:8800$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUTuQep!SvKwEALYoNreUvqAlp:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgTtQeo!SvKwEALYoNreUvqAlp:localhost:8800$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkTsQen!fOJLpnbtgKNxxVDquX:localhost:8800$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4TrQem!fOJLpnbtgKNxxVDquX:localhost:8800$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUTqQel!fOJLpnbtgKNxxVDquX:localhost:8800$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqETpQek!fOJLpnbtgKNxxVDquX:localhost:8800$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oToQej!fOJLpnbtgKNxxVDquX:localhost:8800$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYTnQei!fOJLpnbtgKNxxVDquX:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0TmQeh!fOJLpnbtgKNxxVDquX:localhost:8800$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4TlQeg!vAUAIZrCnHTeMGeNuw:localhost:8800$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0XwTkQef!vAUAIZrCnHTeMGeNuw:localhost:8800$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekTjQee!vAUAIZrCnHTeMGeNuw:localhost:8800$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA ~z v r n j fb^ZVRNJFeeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800}eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI!qSUSLLWjDxcGibUZdT:localhost:8800|eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800{eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800zeeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800yeeQ$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800xeeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800weeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800veeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800ueeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800teeQ$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800seeQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800reeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800qeeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800peeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800oeeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800neeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800meeQ$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800leeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800keeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800jeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800ieeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800heeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800geeQ$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800feeQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800eeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800deeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800  wvheQay$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1129}{"auth_events": ["$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4"], "prev_events": ["$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4"], "type": "m.room.member", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-228", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-228:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041358734, "hashes": {"sha256": "AkxNrLkh8DkJejq7pn9urZO1GEJnXywGQbfLkjUAYIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "doIL9bUdlSGjrTD+wpep/83ytYu36307KTvtnhrQbSL1sEs9TsGFLkibcYsUKbRWAPHQrlT5RlEtPr5cgu+5CA"}}, "unsigned": {"age_ts": 1570041358734}}igeQa_$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1128}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-228:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041357468, "hashes": {"sha256": "NioK2yQfbYKc0aVAWZ1N1l1FKovuxdhY25ytGOOdd+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gzPzXi+7lGRE9QBg68l2U3AqSjdcLXRjw8mZe5ID4NyPJ+0IRraGSg2v7QPCJ5RgCAON0FqoV6xaUY+fkVO6BQ"}}, "unsigned": {"age_ts": 1570041357468}}feQi$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "txn_id": "114", "stream_ordering": 1127}{"auth_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU", "$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek"], "type": "m.room.message", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041353134, "hashes": {"sha256": "mrUM/pe1hfX1b2Ljo0u3iI234vAHxy4VGNfu3m3U52A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MlSogDzhyMsgYbw+52YCK3QtUBpceuebais2R60i4F/Nc5ft0oZ2ix9jAJK55P0KTOSHCxW72eRv/TFFuC/3Dw"}}, "unsigned": {"age_ts": 1570041353134}}eeQa$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1126}{"auth_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU", "$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA"], "type": "m.room.history_visibility", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041351746, "hashes": {"sha256": "N/kaZiyBZiQ7VrMDKOUvzBeiwiNxJoyvglS8P1ei/Xw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QnQrssxYOxaT8U2fJ+F0djAje8sYRhjBu0is8EQ5XqCY6z0WDNCJPipHyXCkSWWSu9ebgGRI+Nf+zGRsGEo2DQ"}}, "unsigned": {"age_ts": 1570041351746}} 8P e  f  o!tw0:8} e'Q  ]$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7om.room.create!qSUSLLWjDxcGibUZdT:localhost:8800mYZmY@anon-20191002_181700-234:localhost:8800,|e?Q ]$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMm.room.history_visibility!RmwbYvIIQyPlHlClty:localhost:8800mPmQ@anon-20191002_181700-232:localhost:8800,{e?Q ]$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEm.room.history_visibility!RmwbYvIIQyPlHlClty:localhost:8800mKmM@anon-20191002_181700-232:localhost:8800$ze/Q ]$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwm.room.join_rules!RmwbYvIIQyPlHlClty:localhost:8800mIjmJ.@anon-20191002_181700-232:localhost:8800&ye3Q ]$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYm.room.power_levels!RmwbYvIIQyPlHlClty:localhost:8800mDmFT@anon-20191002_181700-232:localhost:8800 xe'Q ]$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIm.room.member!RmwbYvIIQyPlHlClty:localhost:8800mBmC#@anon-20191002_181700-232:localhost:8800w e'Q  ]$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mm.room.create!RmwbYvIIQyPlHlClty:localhost:8800m@Gm@@anon-20191002_181700-232:localhost:8800!ve)Q ]$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gm.room.message!SvKwEALYoNreUvqAlp:localhost:8800m8{m8@anon-20191002_181700-231:localhost:8800!ue)Q ]$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcm.room.aliases!SvKwEALYoNreUvqAlp:localhost:8800m5m5@anon-20191002_181700-231:localhost:8800,te?Q ]$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwm.room.history_visibility!SvKwEALYoNreUvqAlp:localhost:8800m1[m3@anon-20191002_181700-231:localhost:8800$se/Q ]$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUm.room.join_rules!SvKwEALYoNreUvqAlp:localhost:8800m.m/@anon-20191002_181700-231:localhost:8800)re9Q ]$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMom.room.canonical_alias!SvKwEALYoNreUvqAlp:localhost:8800m).m,@anon-20191002_181700-231:localhost:8800&qe3Q ]$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUm.room.power_levels!SvKwEALYoNreUvqAlp:localhost:8800m$m&O@anon-20191002_181700-231:localhost:8800 pe'Q ]$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgm.room.member!SvKwEALYoNreUvqAlp:localhost:8800mm@anon-20191002_181700-231:localhost:8800o e'Q  ]$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkm.room.create!SvKwEALYoNreUvqAlp:localhost:8800m[m@anon-20191002_181700-231:localhost:8800!ne)Q ]$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4m.room.aliases!fOJLpnbtgKNxxVDquX:localhost:8800mm@anon-20191002_181700-228:localhost:8800,me?Q ]$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUm.room.history_visibility!fOJLpnbtgKNxxVDquX:localhost:8800mAmu@anon-20191002_181700-228:localhost:8800$le/Q ]$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEm.room.join_rules!fOJLpnbtgKNxxVDquX:localhost:8800m)m@anon-20191002_181700-228:localhost:8800)ke9Q ]$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3om.room.canonical_alias!fOJLpnbtgKNxxVDquX:localhost:8800mm@anon-20191002_181700-228:localhost:8800&je3Q ]$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYm.room.power_levels!fOJLpnbtgKNxxVDquX:localhost:8800mQm@anon-20191002_181700-228:localhost:8800 ie'Q ]$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0m.room.member!fOJLpnbtgKNxxVDquX:localhost:8800mm1@anon-20191002_181700-228:localhost:8800h e'Q  ]$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4m.room.create!fOJLpnbtgKNxxVDquX:localhost:8800mm1@anon-20191002_181700-228:localhost:8800!ge)Q ]$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwm.room.message!vAUAIZrCnHTeMGeNuw:localhost:8800mӮm$@anon-20191002_181700-226:localhost:8800,fe?Q ]$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekm.room.history_visibility!vAUAIZrCnHTeMGeNuw:localhost:8800mBmѦ@anon-20191002_181700-226:localhost:8800 @H KzH.ZN Q T"q? w E( ` W % ] + j8c1i71e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4 1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMI1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4 1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw g1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw f1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM 1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM 1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s 0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKwX0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKwW1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg a1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew,1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi01e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsK1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsJ1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQq1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQp1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQo1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw.1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw-1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsL }21e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98;1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9At1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9As1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Ar1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc 1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc 1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc 0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31YD1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw h1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc1e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k >1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4X1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw/ Pm< xG, ~ M  X ' c 2  n = y H S"^-i8tCNY(`.f4/W]@anon-20191002_181700-305:localhost:8800?/V]@anon-20191002_181700-304:localhost:88000/U]@anon-20191002_181700-303:localhost:8800#/T]@anon-20191002_181700-302:localhost:8800/S]@anon-20191002_181700-301:localhost:8800 /R]@anon-20191002_181700-300:localhost:8800/Q]@anon-20191002_181700-299:localhost:8800/P]@anon-20191002_181700-298:localhost:8800/O]@anon-20191002_181700-297:localhost:8800/N]@anon-20191002_181700-296:localhost:8800/M]@anon-20191002_181700-295:localhost:8800/L]@anon-20191002_181700-294:localhost:8800.K]@anon-20191002_181700-293:localhost:8800.J] @anon-20191002_181700-292:localhost:8800.I] @anon-20191002_181700-291:localhost:8800}.H] @anon-20191002_181700-290:localhost:8800~.G] @anon-20191002_181700-289:localhost:8800t.F] @anon-20191002_181700-288:localhost:8800s.E] @anon-20191002_181700-287:localhost:8800k.D] @anon-20191002_181700-286:localhost:8800l.C]@anon-20191002_181700-285:localhost:8800[.B] @anon-20191002_181700-284:localhost:8800b.A] @anon-20191002_181700-283:localhost:8800\.@] @anon-20191002_181700-282:localhost:8800S.?] @anon-20191002_181700-281:localhost:8800R.>] @anon-20191002_181700-280:localhost:8800V.=] @anon-20191002_181700-279:localhost:8800L.<]@anon-20191002_181700-278:localhost:8800=.;] @anon-20191002_181700-277:localhost:8800D.:] @anon-20191002_181700-276:localhost:8800>.9]@anon-20191002_181700-275:localhost:8800-.8]@anon-20191002_181700-274:localhost:88008.7] @anon-20191002_181700-272:localhost:88005.6] @anon-20191002_181700-273:localhost:88006.5] @anon-20191002_181700-270:localhost:8800,.4] @anon-20191002_181700-271:localhost:8800-.3] @anon-20191002_181700-269:localhost:8800.2] @anon-20191002_181700-268:localhost:8800.1]@anon-20191002_181700-267:localhost:8800.0]@anon-20191002_181700-266:localhost:8800./] @anon-20191002_181700-265:localhost:8800..] @anon-20191002_181700-264:localhost:8800.-] @anon-20191002_181700-263:localhost:8800 .,]@anon-20191002_181700-262:localhost:8800.+] @anon-20191002_181700-261:localhost:8800.*]@anon-20191002_181700-260:localhost:8800.)] @anon-20191002_181700-259:localhost:8800.(]@anon-20191002_181700-258:localhost:8800.'] @anon-20191002_181700-257:localhost:8800.&]@anon-20191002_181700-255:localhost:8800.%] @anon-20191002_181700-254:localhost:8800.$] @anon-20191002_181700-253:localhost:8800.#] @anon-20191002_181700-252:localhost:8800."] @anon-20191002_181700-251:localhost:8800.!] @anon-20191002_181700-250:localhost:8800. ] @anon-20191002_181700-249:localhost:8800.] @anon-20191002_181700-248:localhost:8800.] @anon-20191002_181700-246:localhost:8800.] @anon-20191002_181700-247:localhost:8800.] @anon-20191002_181700-245:localhost:8800.] @anon-20191002_181700-244:localhost:8800.] @anon-20191002_181700-243:localhost:8800.] @anon-20191002_181700-242:localhost:8800.]@anon-20191002_181700-241:localhost:8800.] @anon-20191002_181700-240:localhost:8800.]@anon-20191002_181700-239:localhost:8800.] @anon-20191002_181700-238:localhost:8800.] @anon-20191002_181700-237:localhost:88001@36:localhost:8800.] @anon-20191002_181700-236:localhost:88001@35:localhost:8800.]@anon-20191002_181700-235:localhost:8800|.] @anon-20191002_181700-234:localhost:8800.]@anon-20191002_181700-233:localhost:8800u. ] @anon-20191002_181700-232:localhost:8800|. ] @anon-20191002_181700-231:localhost:8800v. ]@anon-20191002_181700-230:localhost:8800n. ]@anon-20191002_181700-229:localhost:8800f. ] @anon-20191002_181700-228:localhost:8800n.]@anon-20191002_181700-227:localhost:8800f Kj8q? x F  ~ L  R Y ' ` .f4l:r@xF~LR X&^,1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms]1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYD1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ01e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W411e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho%1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM~1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs}1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8T1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws+ 21e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7we1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYg1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls;1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj401e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg/1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Yj1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU 1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI:1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 81e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQo1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM 1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw921e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 90e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk<1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUA1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0o1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc?1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo(1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwQ1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Ml1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E&1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA d1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk ,1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AU0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgn1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMW1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGot1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y~21e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE #s 4 Q ` ! > M{ 7@h0Xg eQ3 $7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels eQ']$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800a eQ' $Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800m.room.createp eQ))$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800meQ? $Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibilityeeQ/ $qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rulesjeQ9 $4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_aliasgeQ3 $1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels eQ']$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800aeQ' $1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800m.room.createmeQ? $ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibilitymeQ? $o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibilityeeQ/ $NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rulesgeQ3 $zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels ~eQ']$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800a}eQ' $Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800m.room.createm|eQ? $ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibilitym{eQ? $w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibilityezeQ/ $vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rulesgyeQ3 $KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels xeQ']$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800aweQ' $ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800m.room.createpveQ))$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800mueQ? $OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibilityeteQ/ $9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rulesjseQ9 $g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_aliasgreQ3 $fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels qeQ']$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800apeQ' $qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800m.room.createpoeQ))$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800mneQ? $l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibilityemeQ/ $9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rulesjleQ9 $mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_aliasgkeQ3 $kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels jeQ']$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800 a} { y w u sqomkigeca~xeeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~weeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~veeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800~ueeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~teeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~seeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800~reeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~qeeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~peeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800~oeeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~neeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~meeQ$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~leeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~keeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~jeeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~ieeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~heeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~geeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~feeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~eeeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~deeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~ceeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~beeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~aeeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~`eeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~_eeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~^eeQ$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~]eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~\eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~[eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~ZeeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800  leQa$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1133}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE"], "type": "m.room.history_visibility", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041363521, "hashes": {"sha256": "zsqvR1uqObXg9GL3mWcG4x3Nq8yj5d6zau7aQT6AchM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d814YyqEstTvP3XRyA7Dvnw9DyCEIjPzKMGgQslAGSh5FZ7XvTKwPMveiHvPUWykOfsQCNS/gYeSDgG3j+VZDg"}}, "unsigned": {"age_ts": 1570041363521}}tkeQau$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1132}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o"], "type": "m.room.join_rules", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041362473, "hashes": {"sha256": "15n0vTnA4NJMB3XbRiij2wX9bG4Vzej9VTxSnQPmtPc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d0PonahalleCaF9yzKFWcHf6Z+XWnPcZBqqrZPfuIkhmSQXWhFSyloTnQkdIGtenBMqObGs/EnZP4Pjj3e85AQ"}}, "unsigned": {"age_ts": 1570041362473}}jeQa9$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1131}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY"], "type": "m.room.canonical_alias", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"alias": "#test-20191002_181700-36:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041360854, "hashes": {"sha256": "TvFQl3vmDb344H864UOcG2roQEZ4tW3r8DfQ8GzsMVs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6S2txiDRplgJzqseofLFBkShPTbzMEXEGfaUDT4BNB0ty+K9fszNq+Gi2ucaiHbXpn0+wRu+5V0wshGmkVsDAg"}}, "unsigned": {"age_ts": 1570041360854}}kieQac$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1130}{"auth_events": ["$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "type": "m.room.power_levels", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"users": {"@anon-20191002_181700-228:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041359697, "hashes": {"sha256": "y9hKmDzYYbvCCB1XYLEO4RmVP5BvIQ9YNycROxoLn2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "03T5Sz4dYtChXRbl8GEYMrnMP1VfGv0cvX5cw/6ZoEJQm5M2dJy+4Q+XZ8kmhL/vEjVVcOW/c5+FzixaURPpCA"}}, "unsigned": {"age_ts": 1570041359697}} Nj8p> w E  ) } K  Q  a W % ` .g5/m; sAzHO[U#1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 z1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU H1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y G1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo :1e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE 1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI R1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo 1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAy1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU)1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg(1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4O0e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4C1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMZ1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8f1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM*1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng01e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIi1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM[1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcV0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms61e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk0e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0x0e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY90e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAl1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ 91e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8\1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s01e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI91e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX41e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIo1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE_1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg S  \ okpeQac$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1137}{"auth_events": ["$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "type": "m.room.power_levels", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"users": {"@anon-20191002_181700-231:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041373865, "hashes": {"sha256": "Wa/SpALW7whzo9ZaFULVjZ8TT7lMg2zKAwy4ZYtX2Kw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9y9VDS6TCQvUMfqbyis6QQsaIemQKZRS9KcNTkcxxe656grxNkJoOyYWFAltrqkNnB/t3MV50LSLD/j7mKRXDw"}}, "unsigned": {"age_ts": 1570041373865}}voeQay$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1136}{"auth_events": ["$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk"], "prev_events": ["$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk"], "type": "m.room.member", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-231", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-231:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041372042, "hashes": {"sha256": "jKqy7VqsarLjCtAYs13+GsBoBn0UcQPhKTtHlWIrPBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j6DHS8zVPvcK6ZLMTEbv28ZNuB1CEJz4uEouY6OMS1OG4PfRv2vfPjgduyXeADSEplErduFFPwfevYlpcN3RAw"}}, "unsigned": {"age_ts": 1570041372042}}ineQa_$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1135}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-231:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041369947, "hashes": {"sha256": "pUEvcFWSYMYUiH3rsrpsh88PM2J28JtANOMIC8WlSks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iPEdDNCg84UVlkUDGU1kgP372kVo5ydnep2Q5VG8JeVlbtpIhb2yxNtFVBswixzBXUZbqOmRQ31PNDUA1+JyDg"}}, "unsigned": {"age_ts": 1570041369947}} meQaM$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1134}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU"], "type": "m.room.aliases", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"aliases": ["#test-20191002_181700-36:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041365948, "hashes": {"sha256": "0JrfuWhz2Eykc5K7cVwLr4iAxLNgNQH9uJrNN6QDQJM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7fEljZ7f22/OYvN9wdJ721n00GgVu9v3x0Ucz7xPzLt4RxeUpPCrMbC4yznqpxO89t8L2HF7vQelJXXhNjMNAA"}}, "unsigned": {"age_ts": 1570041365948}} <hm(). Y v   ? Jx%Mv{) =eQ']$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800joinm)eQ? $l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibilitye(eQ/ $9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rulesj'eQ9 $mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_aliasg&eQ3 $kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels %eQ']$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800joina$eQ' $5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.createm#eQ? $QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibilitye"eQ/ $LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rulesa<eQ' $1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800m.room.createm;eQ? $ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibilitye:eQ/ $NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rulesg9eQ3 $zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels 8eQ']$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800joina7eQ' $Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800m.room.createm6eQ? $ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibilitye5eQ/ $vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rulesg4eQ3 $KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels 3eQ']$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800joina2eQ' $ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800m.room.createp1eQ))$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800m0eQ? $OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibilitye/eQ/ $9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rulesj.eQ9 $g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_aliasg-eQ3 $fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels ,eQ']$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800joina+eQ' $qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800m.room.createp*eQ))$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800 g * T~=gg|]!c@anon-20191002_181700-240:localhost:8800CDHFDOSRPZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6Twog{]!c@anon-20191002_181700-239:localhost:8800WFWDJJSKCMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwogz]!c@anon-20191002_181700-238:localhost:8800CJBYPQAOBXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2gogy]!c@anon-20191002_181700-237:localhost:8800GTKLCHUYBNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgogx]!c@anon-20191002_181700-236:localhost:8800ALVQESJRHCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQogw]!c@anon-20191002_181700-235:localhost:8800OYRPJJEYFGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwogv]!c@anon-20191002_181700-234:localhost:8800KLAICDFHKHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2Aogu]!c@anon-20191002_181700-233:localhost:8800ZGKUWUKWUYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAogt]!c@anon-20191002_181700-232:localhost:8800UUXEQUNCHPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAogs]!c@anon-20191002_181700-231:localhost:8800BJMMTIEXWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhmczo4aXNLYlQ7cmc0c2YKMDAyZnNpZ25hdHVyZSCii7eda4u_cvWaTXkgDXF3fvhq4uqd2pt3gHuBIPdixAogr]!c@anon-20191002_181700-230:localhost:8800ZDQWNSBGEBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJTUWhsR0JMUi1oYkNYYWcKMDAyZnNpZ25hdHVyZSAGiLKsOqoQuxKK_4Pmg-XFWgoT-qrRMYFwGMFT-hQ-YQo bl D  ubp]c!E@anon-20191002_181700-238:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2goCJBYPQAOBX127.0.0.1Perl + Net::Async::HTTP/0.44m«{o1a%E@36:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPTNFZyNSODRzWjorLENIQgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIKQM99obt2UECGGZ1pdZMzcnYKVP-dzKMkmX8ObbkGkwCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m¨n]c!E@anon-20191002_181700-237:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgoGTKLCHUYBN127.0.0.1Perl + Net::Async::HTTP/0.44mŒ{{m1a%E@35:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdTc6TjRZT1NUQT0rMmd3TwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEL0zz_q8O_cYu0ZgqeGOMGgdcuXKyl6Sehn2Vtqr_FBCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m‰l]c!E@anon-20191002_181700-236:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQoALVQESJRHC127.0.0.1Perl + Net::Async::HTTP/0.44mpak]c!E@anon-20191002_181700-235:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwoOYRPJJEYFG127.0.0.1Perl + Net::Async::HTTP/0.44mXlj]c!E@anon-20191002_181700-234:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2AoKLAICDFHKH127.0.0.1Perl + Net::Async::HTTP/0.44mXji]c!E@anon-20191002_181700-233:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAoZGKUWUKWUY127.0.0.1Perl + Net::Async::HTTP/0.44m?h]c!E@anon-20191002_181700-232:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAoUUXEQUNCHP127.0.0.1Perl + Net::Async::HTTP/0.44m?g]c!E@anon-20191002_181700-231:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhmczo4aXNLYlQ7cmc0c2YKMDAyZnNpZ25hdHVyZSCii7eda4u_cvWaTXkgDXF3fvhq4uqd2pt3gHuBIPdixAoBJMMTIEXWQ127.0.0.1Perl + Net::Async::HTTP/0.44m Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,17e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU`16e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4_15e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk^14e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM]13e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4[12e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ[11e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38[10e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMZ1/e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kY1.e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1YgX1-e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcW1,e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsV1+e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcU1*e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwU1)e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNoT1(e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwT1'e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLkS1&e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIS1%e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUR1$e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygQ1#e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEP1"e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0O1!e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0N1 e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYM1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0kL1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGoK1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgoJ1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAI1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAH1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0G1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcF1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIE1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awD1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4C1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gB1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8A1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8@1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U?1e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM>1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA=1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE=1 e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI<1 e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A;1 e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE:1 e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA91 e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM81e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ71e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo61e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g61e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw51e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY41e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw31e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo21e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE11e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk01e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k/1~e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI.1}e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8-1|e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA,1{e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4+1ze$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o*1ye$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM)1xe$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME(1we$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw'1ve$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY&1ue$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI%1te$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M$1se$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g#1re$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc#1qe$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw"1pe$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!1oe$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo 1ne$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1me$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg   LtD<  \4, l % d| T|eeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800 eeQ$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800 ЁeeQ$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800 weeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:8800eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:88009eeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800;eeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800eeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800KeeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800āeeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800 .eeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800 ށeeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800leeQ$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:88007eeQ$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg!hnQOBexFYpvJntEChZ:localhost:8800XeeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800 eeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800 u (n%{2Eu& 9 R  e  ~ / Hg=\d}.GqHGF ]@anon-20191002_181700-263:localhost:8800offlinemŹ'mŹ'LU ] @anon-20191002_181700-221:localhost:8800offlinemm*mLR ] @anon-20191002_181700-219:localhost:8800offlinemum mLQ ] @anon-20191002_181700-218:localhost:8800offlinemrmmrFM ]@anon-20191002_181700-226:localhost:8800offlinemmLL ] @anon-20191002_181700-216:localhost:8800offlinemQRmsmQYFJ ]@anon-20191002_181700-224:localhost:8800offlinemmFI ]@anon-20191002_181700-209:localhost:8800offlinemՊḿF ]@anon-20191002_181700-261:localhost:8800offlinemŖmŖL ] @anon-20191002_181700-253:localhost:8800offlinemKmŅ|mSF ] @anon-20191002_181700-259:localhost:8800offlinemwmwF ] @anon-20191002_181700-250:localhost:8800offlinemĸmĦiF ] @anon-20191002_181700-252:localhost:8800offlinemmF ]@anon-20191002_181700-257:localhost:8800offlinemOzmOzL ] @anon-20191002_181700-251:localhost:8800offlinemĺm7\mĺL ] @anon-20191002_181700-249:localhost:8800offlinemqmm{ F ]@anon-20191002_181700-246:localhost:8800offlinemmm0F~ ]@anon-20191002_181700-248:localhost:8800offlinemomTLy ] @anon-20191002_181700-247:localhost:8800offlinemi+mTmkFx ]@anon-20191002_181700-242:localhost:8800offlinemmLw ] @anon-20191002_181700-237:localhost:8800offlinem§mÉmŒLv ] @anon-20191002_181700-243:localhost:8800offlinemhmÉmFt ]@anon-20191002_181700-244:localhost:8800offlinemBm;dLs ] @anon-20191002_181700-245:localhost:8800offlinem mÉm )Ln ] @anon-20191002_181700-241:localhost:8800offlinemϘmOm2Ll ] @anon-20191002_181700-239:localhost:8800offlinem¬Im(m¬Lj ] @anon-20191002_181700-231:localhost:8800offlinem9mmLg ] @anon-20191002_181700-235:localhost:8800offlinemY mmYWLe ] @anon-20191002_181700-233:localhost:8800offlinem?m\m@EL^ ] @anon-20191002_181700-230:localhost:8800offlinem%m‹mF] ]@anon-20191002_181700-236:localhost:8800offlinem‡m‡L\ ] @anon-20191002_181700-228:localhost:8800offlinemmdmL[ ] @anon-20191002_181700-227:localhost:8800offlinemߞmdmLZ ] @anon-20191002_181700-229:localhost:8800offlinemmdmKLX ] @anon-20191002_181700-225:localhost:8800offlinem`mQ,mLV ] @anon-20191002_181700-223:localhost:8800offlinemm=mFH ]@anon-20191002_181700-213:localhost:8800offlinem&m"YFG ]@anon-20191002_181700-215:localhost:8800offlinemLmGFB ]@anon-20191002_181700-217:localhost:8800offlinemmmiBFA ]@anon-20191002_181700-211:localhost:8800offlinemm  fe teQaM$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1141}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw"], "type": "m.room.aliases", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"aliases": ["#test-20191002_181700-37:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041378056, "hashes": {"sha256": "yv4aTAOKzXSCDw82JqfKLoivOCeEibzSehV7B2gG4XE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Lip9CuyH8kv/1dOdrUJHakygskbOnD5XmHDyo00sj14tJZPAWKcb6MZujqWON5o4LLj4zguuv+yCKH5AkjHAA"}}, "unsigned": {"age_ts": 1570041378056}}seQa$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1140}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU"], "type": "m.room.history_visibility", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041377115, "hashes": {"sha256": "jisa0B3U2wUWRqjEwsUzY1xjM1eT3ctpFdjMYbLdjKE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5WxEOhfena5oFwPjJ2MuKquUByojIUSujf6YvxRWYuedjAuSvXQa3cvSiWGdAttTowy7F4dQxFVCgrJvg74VAg"}}, "unsigned": {"age_ts": 1570041377115}}treQau$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1139}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo"], "type": "m.room.join_rules", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041376480, "hashes": {"sha256": "iRfc4q8csgiE4QXwwRGV2iZpm/L1tvv3TqMgkGyZnvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lEzGt8blsCd7M+5Qy09oi9RNqHsCSDmMpR+FLY+KD3gtpz16Oa7DBr5ByrY8M4YyIdpLrIGQNM+ejpGgKaVnBA"}}, "unsigned": {"age_ts": 1570041376480}}qeQa9$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1138}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU"], "type": "m.room.canonical_alias", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"alias": "#test-20191002_181700-37:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041375022, "hashes": {"sha256": "7kOzPvM3zb8RdTQi209O3qTUmlEX9HaxNjqU+LwkHUA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0HuKBeq8YYze5ketZTxJXCIH2RC1zVkBOqEFzNdWRgQTwAZMT/dXmCXqRkzVxzb7G3l7FJXICNOpDby94iwzCA"}}, "unsigned": {"age_ts": 1570041375022}} V 2  d7  X -  V +  T ) v I h;Z-yL _ M ll?^2~Q$pDy? ,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n n,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m m,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l l,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k k,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j j+Q !jRuDexjFzIDOKbwDJQ:localhost:8800 i i,Q!kOmCTyiizHqfCJdhlR:localhost:8800 U U+Q !kOmCTyiizHqfCJdhlR:localhost:8800 T T,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o o,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 +Q !kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jveVPZSXJOJyNDebPO:localhost:8800LL,Q!jveVPZSXJOJyNDebPO:localhost:8800KK,Q!jveVPZSXJOJyNDebPO:localhost:8800JJ,Q!jveVPZSXJOJyNDebPO:localhost:8800II,Q!jveVPZSXJOJyNDebPO:localhost:8800HH,Q!jveVPZSXJOJyNDebPO:localhost:8800GG,Q!jveVPZSXJOJyNDebPO:localhost:8800FF+Q !jveVPZSXJOJyNDebPO:localhost:8800EE,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800+Q !jfshVGNDxkvqPxFxWB:localhost:8800*Q!jYzridjeihmwPBuwLb:localhost:8800YY*Q!jYzridjeihmwPBuwLb:localhost:8800XX*Q!jYzridjeihmwPBuwLb:localhost:8800WW*Q!jYzridjeihmwPBuwLb:localhost:8800 VV*Q!jYzridjeihmwPBuwLb:localhost:8800 UU*Q!jYzridjeihmwPBuwLb:localhost:8800 TT*Q!jYzridjeihmwPBuwLb:localhost:8800 SS*Q!jYzridjeihmwPBuwLb:localhost:8800 RR*Q!jYzridjeihmwPBuwLb:localhost:8800QQ*Q!jYzridjeihmwPBuwLb:localhost:8800PP*Q!jYzridjeihmwPBuwLb:localhost:8800OO*Q!jYzridjeihmwPBuwLb:localhost:8800NN*Q!jYzridjeihmwPBuwLb:localhost:8800MM*Q!jYzridjeihmwPBuwLb:localhost:8800LL*Q!jYzridjeihmwPBuwLb:localhost:8800KK)Q !jYzridjeihmwPBuwLb:localhost:8800JJ,Q!jIfvTrwedrWLubsnlM:localhost:8800!!,Q!jIfvTrwedrWLubsnlM:localhost:8800  ,Q!jIfvTrwedrWLubsnlM:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800+Q !jlGSdNttccYxjfLkwW:localhost:8800-,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y Y,Q!jomrpmwwQQtghscizn:localhost:8800)),Q!jomrpmwwQQtghscizn:localhost:8800((,Q!jomrpmwwQQtghscizn:localhost:8800'',Q!jomrpmwwQQtghscizn:localhost:8800&&,Q!jomrpmwwQQtghscizn:localhost:8800%%+Q !jomrpmwwQQtghscizn:localhost:8800$$,Q!kOmCTyiizHqfCJdhlR:localhost:8800 X X,Q!kOmCTyiizHqfCJdhlR:localhost:8800 W W,Q!kOmCTyiizHqfCJdhlR:localhost:8800 V V V 2  d7  X -  V +  T ) v I h;Z-yL _ M ll?^2~Q$pDy? ,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n n,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m m,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l l,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k k,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j j+Q !jRuDexjFzIDOKbwDJQ:localhost:8800 i i,Q!kOmCTyiizHqfCJdhlR:localhost:8800 U U+Q !kOmCTyiizHqfCJdhlR:localhost:8800 T T,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o o,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 +Q !kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jveVPZSXJOJyNDebPO:localhost:8800LL,Q!jveVPZSXJOJyNDebPO:localhost:8800KK,Q!jveVPZSXJOJyNDebPO:localhost:8800JJ,Q!jveVPZSXJOJyNDebPO:localhost:8800II,Q!jveVPZSXJOJyNDebPO:localhost:8800HH,Q!jveVPZSXJOJyNDebPO:localhost:8800GG,Q!jveVPZSXJOJyNDebPO:localhost:8800FF+Q !jveVPZSXJOJyNDebPO:localhost:8800EE,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800+Q !jfshVGNDxkvqPxFxWB:localhost:8800*Q!jYzridjeihmwPBuwLb:localhost:8800YY*Q!jYzridjeihmwPBuwLb:localhost:8800XX*Q!jYzridjeihmwPBuwLb:localhost:8800WW*Q!jYzridjeihmwPBuwLb:localhost:8800 VV*Q!jYzridjeihmwPBuwLb:localhost:8800 UU*Q!jYzridjeihmwPBuwLb:localhost:8800 TT*Q!jYzridjeihmwPBuwLb:localhost:8800 SS*Q!jYzridjeihmwPBuwLb:localhost:8800 RR*Q!jYzridjeihmwPBuwLb:localhost:8800QQ*Q!jYzridjeihmwPBuwLb:localhost:8800PP*Q!jYzridjeihmwPBuwLb:localhost:8800OO*Q!jYzridjeihmwPBuwLb:localhost:8800NN*Q!jYzridjeihmwPBuwLb:localhost:8800MM*Q!jYzridjeihmwPBuwLb:localhost:8800LL*Q!jYzridjeihmwPBuwLb:localhost:8800KK)Q !jYzridjeihmwPBuwLb:localhost:8800JJ,Q!jIfvTrwedrWLubsnlM:localhost:8800!!,Q!jIfvTrwedrWLubsnlM:localhost:8800  ,Q!jIfvTrwedrWLubsnlM:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800+Q !jlGSdNttccYxjfLkwW:localhost:8800-,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y Y,Q!jomrpmwwQQtghscizn:localhost:8800)),Q!jomrpmwwQQtghscizn:localhost:8800((,Q!jomrpmwwQQtghscizn:localhost:8800'',Q!jomrpmwwQQtghscizn:localhost:8800&&,Q!jomrpmwwQQtghscizn:localhost:8800%%+Q !jomrpmwwQQtghscizn:localhost:8800$$,Q!kOmCTyiizHqfCJdhlR:localhost:8800 X X,Q!kOmCTyiizHqfCJdhlR:localhost:8800 W W,Q!kOmCTyiizHqfCJdhlR:localhost:8800 V V |t l  d \ T LD <5-%eeQ$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800 beeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800 ;eeQ$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800HeeQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800xeeQ$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus!csWEXfVEVxdviNvgAd:localhost:8800neeQ$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800eeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800ցeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800~eeQ$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!loalEsWaTYwrVUNJLr:localhost:8800"eeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800 eeQ$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800eeQ$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800BeeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800 eeQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800PeeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800ŁeeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800EeeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800NeeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800teeQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800ÁeeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800|eeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800 !%< E m Z c x9PY|(! Q']e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8dQ' e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.create$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5UQ? ee!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIsQ))e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEp Q? e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIh Q/ e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rules$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Am Q9 e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_alias$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REj Q3 e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA Q']e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMdQ' e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.create$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQsQ))e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gpQ? e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibility$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwhQ/ e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rules$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYmQ9 e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwjQ3 e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo Q']e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEdQ' e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.create$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSkQ? ee!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIpQ? e!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIh~Q/ e!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rules$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8j}Q3 e!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA |Q']e~!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4d{Q' e}!qSUSLLWjDxcGibUZdT:localhost:8800m.room.create$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7ozQ? ee|!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEpyQ? e{!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEhxQ/ ez!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rules$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwjwQ3 ey!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY vQ']ex!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIduQ' ew!RmwbYvIIQyPlHlClty:localhost:8800m.room.create$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3MstQ))eu!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcpsQ? et!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibility$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwhrQ/ es!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rules$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUmqQ9 er!SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_alias$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo  y kxeQac$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1145}{"auth_events": ["$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "type": "m.room.power_levels", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"users": {"@anon-20191002_181700-232:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041382110, "hashes": {"sha256": "f1jjQSvajhBg6t4EylK8kuLFv32+2UIT0Fa/64gQRiU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "duqFxMssA1kpXzbU/wJsHPSdvPiqZbNplcUhLFBArQDpfGQZomyTEbHqWDOaCHYoOakx9znEs8CHe6c5+11EBA"}}, "unsigned": {"age_ts": 1570041382110}}vweQay$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1144}{"auth_events": ["$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M"], "prev_events": ["$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M"], "type": "m.room.member", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-232", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-232:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041381576, "hashes": {"sha256": "3mpt24tCM33PIGX9VbNh2iTZ2Ccst1va+ufzErg0/Xo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y37L/m/++ktTlyTXyzO1ajAMwKcJJsEzLcpd4sZO4A7D0QYsxBNCvWkqzWelnNe+8SM4WsUEi9VEnRItazN0DQ"}}, "unsigned": {"age_ts": 1570041381576}}iveQa_$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1143}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-232:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041380935, "hashes": {"sha256": "ewHwbGUwXlb7oe8KyPfGb8QsT84Kqt9i7t+BAsFbWnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TFkXhOplUeVCXCcATo8hSmByO57U6beY2pJmmQrF1nSHt8RcOVyYu71x9/MwxIan220BAzeei7/5fu49fxFwDQ"}}, "unsigned": {"age_ts": 1570041380935}}ueQo$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "txn_id": "115", "stream_ordering": 1142}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc"], "type": "m.room.message", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"body": "private", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041378939, "hashes": {"sha256": "siBKvfqWq0MlQI+8OtCxQyHB7xc4KlLUnZr2Mff0t10"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "odNOfMRNSvL36RpoLzMaMtc0OJ6xnoyis9Lb+6xuNxTC16+qTqMTTej25SqWHj03D17OqszFvVZDq/rphEqDCA"}}, "unsigned": {"age_ts": 1570041378939}} ? ,?i|eQa_$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1149}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-234:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041387354, "hashes": {"sha256": "f20uzwQQn1AaZZDlsRXKoFVhu4S3eg5FlJrqw1WGu/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g+OOOELKq1alaqMfwq8+DQxwJYg489RmTKVSOJHFa0E6tR5pkOZdp1woMhISKvg9fSSVRo+Yi7f0PXeR+eepDA"}}, "unsigned": {"age_ts": 1570041387354}}O{eQa+$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1148}{"auth_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY", "$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME"], "type": "m.room.history_visibility", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041385185, "hashes": {"sha256": "tSAKTcaoGlbBmAzLZeDmht+Ifg+kWQD3A2lY80h7dEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NnZscnbYQ/ijuwZtLmJPQlunnTaonsVHo8yfqcHVSrUN2thGUFKSwYs79eY7x3ojH3NcPZReQmzP282O60HbDQ"}}, "unsigned": {"age_ts": 1570041385185, "replaces_state": "$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME"}}zeQa$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1147}{"auth_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY", "$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw"], "type": "m.room.history_visibility", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041383881, "hashes": {"sha256": "aDx8Wf/1GneaFLQtDpwjwIHPEsFWnwQvSvy74Kvd9zo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V1vjlSYeuZP/KDxDgjPCsUMu4cFhrIrKewhLYX3HfOPTzxTmoDHlZBuwYUo4Rfy00g86BlP3euFVikE3QV0uCA"}}, "unsigned": {"age_ts": 1570041383881}}tyeQau$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1146}{"auth_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY", "$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY"], "type": "m.room.join_rules", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041383274, "hashes": {"sha256": "4DzzEfs7ABFrthRAEZfbgqO0QZ0M0sh4JCz/RKfu18w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GwVxMMsz7gfB8icfHR09fZzue5LZEwra54RQLgUJxyMLKCnBGH6ZE1gAxIN921ZPlQV3E0P/z1Y2Dv99Jb7FBw"}}, "unsigned": {"age_ts": 1570041383274}} \ Z  d ek%{&v,|!e)Q ] $FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMm.room.message!wsvXTJXouVkEZcCFsD:localhost:8800 m¦m§@anon-20191002_181700-237:localhost:8800,e?Q ] $CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMm.room.history_visibility!wsvXTJXouVkEZcCFsD:localhost:8800 m£%m£@anon-20191002_181700-237:localhost:8800!e)Q ]$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAAm.room.message!wsvXTJXouVkEZcCFsD:localhost:8800m m¡N@anon-20191002_181700-237:localhost:8800!e)Q ]$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEm.room.aliases!wsvXTJXouVkEZcCFsD:localhost:8800mmžw@anon-20191002_181700-237:localhost:8800,e?Q ]$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIm.room.history_visibility!wsvXTJXouVkEZcCFsD:localhost:8800m™wm›@anon-20191002_181700-237:localhost:8800$e/Q ]$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Am.room.join_rules!wsvXTJXouVkEZcCFsD:localhost:8800m—?m—@anon-20191002_181700-237:localhost:8800)e9Q ]$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REm.room.canonical_alias!wsvXTJXouVkEZcCFsD:localhost:8800m”m•@anon-20191002_181700-237:localhost:8800& e3Q ]$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpAm.room.power_levels!wsvXTJXouVkEZcCFsD:localhost:8800m’Om“\@anon-20191002_181700-237:localhost:8800 e'Q ]$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMm.room.member!wsvXTJXouVkEZcCFsD:localhost:8800mem@anon-20191002_181700-237:localhost:8800  e'Q  ]$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQm.room.create!wsvXTJXouVkEZcCFsD:localhost:8800mmŽ@anon-20191002_181700-237:localhost:8800! e)Q ]$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfom.room.message!DoiZErAdypBUMZKaeJ:localhost:8800m…m‡@@anon-20191002_181700-236:localhost:8800! e)Q ]$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gm.room.aliases!DoiZErAdypBUMZKaeJ:localhost:8800m‚amƒ@anon-20191002_181700-236:localhost:8800,e?Q ]$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwm.room.history_visibility!DoiZErAdypBUMZKaeJ:localhost:8800m~m€ @anon-20191002_181700-236:localhost:8800$e/Q ]$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYm.room.join_rules!DoiZErAdypBUMZKaeJ:localhost:8800m|[m}@anon-20191002_181700-236:localhost:8800)e9Q ]$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwm.room.canonical_alias!DoiZErAdypBUMZKaeJ:localhost:8800mymzd@anon-20191002_181700-236:localhost:8800&e3Q ]$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzom.room.power_levels!DoiZErAdypBUMZKaeJ:localhost:8800mvmw@anon-20191002_181700-236:localhost:8800 e'Q ]$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEm.room.member!DoiZErAdypBUMZKaeJ:localhost:8800mt%mt@anon-20191002_181700-236:localhost:8800 e'Q  ]$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSkm.room.create!DoiZErAdypBUMZKaeJ:localhost:8800mpmqY@anon-20191002_181700-236:localhost:8800,e?Q ]$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7km.room.history_visibility!qSUSLLWjDxcGibUZdT:localhost:8800mimj@anon-20191002_181700-234:localhost:8800,e?Q ]$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIm.room.history_visibility!qSUSLLWjDxcGibUZdT:localhost:8800mdmg@anon-20191002_181700-234:localhost:8800$e/Q ]$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8m.room.join_rules!qSUSLLWjDxcGibUZdT:localhost:8800mbrmcJ@anon-20191002_181700-234:localhost:8800&e3Q ]$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFAm.room.power_levels!qSUSLLWjDxcGibUZdT:localhost:8800m_m`@anon-20191002_181700-234:localhost:8800 ~e'Q ]$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4m.room.member!qSUSLLWjDxcGibUZdT:localhost:8800m\?m\@anon-20191002_181700-234:localhost:8800 a} { y w u sqomkigeca~eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800~~eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~}eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~|eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800~{eeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~zeeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~yeeQ$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V(eL$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIsha256A ƧWo,pZ{62V'eL$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUsha256n]|g\+z%ck7@uV&eL$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygsha256>g[wju,ŦBw/ jt(V%eL$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEsha256.ƢH(oPV6jt@5p79aV$eL$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0sha256?&;YpgyQV!X <-V#eL$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0sha256pDX32, DI۪_^T=V"eL$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYsha256䌫9DɷGEjgSV!eL$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0ksha256Y6]"YmF-*#.ŅA]IV eL$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGosha256Xh(jY[\^51 ';՛#xjVeL$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgosha256`v8sX+c|}" VeL$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAsha2565Wp ) ?1I&Hwr[VeL$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAsha256 fo/GN\]%(f]2bVeL$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0sha256>HYt;ydgH!}VeL$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcsha256-c9d7NmCORIwVeL$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIsha256-]<\I'Lgk5#VeL$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awsha256Is&g,;좄ztѬVeL$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4sha256% is\^8u6QR|'= VeL$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gsha256zY+P˚, p'I XVeL$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8sha256'4SZ<?.;+8!8\DlvVeL$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8sha256¥s,e k5G-kJUH^ݲVeL$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5Usha256EC86,0b'/}x:]&'VeL$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMsha256'(BEx136/2}J!ʔVeL$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMsha256 # nkB#,َ\|'{&z7 cVeL$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAAsha256Pl|f7V&/?$o]sVeL$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEsha256jM|=FzU d]3hVeL$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIsha256HVD5O3yaYmUӻo&VeL$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Asha256:pk QoMye`V eL$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REsha256r]H[H4fCwtNdV eL$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpAsha2560A!lh\wlikQJ<"4@;ƖV eL$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMsha256`5@ LaM|K/"--V eL$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQsha256&=eKT8H.a\ʺ #jV eL$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfosha256q>+S|Of.q',`8(EVeL$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gsha256U=kzE!ᚽP J~|u5/VeL$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwsha2562˘.1י7(o0q@ VeL$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYsha256~9"<(e$i!Ʒ;1^Y@VeL$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwsha256=ir3i 4Q9N&kVeL$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzosha256W#6mu3BLNc:VeL$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEsha256;gѮļ_z00lZaVeL$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSksha256A^\a&>9NBN(=#St%)VeL$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7ksha256g! V5^}͌"x'aڞ*VeL$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIsha256mqoP঺oc #s2VeL$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8sha2564K:~v9H@ ŒoQ ЏV~eL$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFAsha256 !^UAcfC7#߉:{^2?PV}eL$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4sha2562\y'31+=?S {~+on a , J h  3Qo:Xv#A_n2]@anon-20191002_181700-247:localhost:8800@anon-20191002_181700-247:localhost:8800 anon-20191002_181700-247n1]@anon-20191002_181700-246:localhost:8800@anon-20191002_181700-246:localhost:8800 anon-20191002_181700-246n0]@anon-20191002_181700-245:localhost:8800@anon-20191002_181700-245:localhost:8800 anon-20191002_181700-245n/]@anon-20191002_181700-244:localhost:8800@anon-20191002_181700-244:localhost:8800 anon-20191002_181700-244n.]@anon-20191002_181700-243:localhost:8800@anon-20191002_181700-243:localhost:8800 anon-20191002_181700-243n-]@anon-20191002_181700-242:localhost:8800@anon-20191002_181700-242:localhost:8800 anon-20191002_181700-242n,]@anon-20191002_181700-240:localhost:8800@anon-20191002_181700-240:localhost:8800 anon-20191002_181700-240n+]@anon-20191002_181700-238:localhost:8800@anon-20191002_181700-238:localhost:8800 anon-20191002_181700-238n*]@anon-20191002_181700-237:localhost:8800@anon-20191002_181700-237:localhost:8800 anon-20191002_181700-237n)]@anon-20191002_181700-236:localhost:8800@anon-20191002_181700-236:localhost:8800 anon-20191002_181700-236n']@anon-20191002_181700-232:localhost:8800@anon-20191002_181700-232:localhost:8800 anon-20191002_181700-232n&]@anon-20191002_181700-231:localhost:8800@anon-20191002_181700-231:localhost:8800 anon-20191002_181700-231n%]@anon-20191002_181700-228:localhost:8800@anon-20191002_181700-228:localhost:8800 anon-20191002_181700-228n$]@anon-20191002_181700-226:localhost:8800@anon-20191002_181700-226:localhost:8800 anon-20191002_181700-226n#]@anon-20191002_181700-224:localhost:8800@anon-20191002_181700-224:localhost:8800 anon-20191002_181700-224n"]@anon-20191002_181700-222:localhost:8800@anon-20191002_181700-222:localhost:8800 anon-20191002_181700-222n!]@anon-20191002_181700-220:localhost:8800@anon-20191002_181700-220:localhost:8800 anon-20191002_181700-220n ]@anon-20191002_181700-218:localhost:8800@anon-20191002_181700-218:localhost:8800 anon-20191002_181700-218n]@anon-20191002_181700-217:localhost:8800@anon-20191002_181700-217:localhost:8800 anon-20191002_181700-217n]@anon-20191002_181700-216:localhost:8800@anon-20191002_181700-216:localhost:8800 anon-20191002_181700-216n]@anon-20191002_181700-215:localhost:8800@anon-20191002_181700-215:localhost:8800 anon-20191002_181700-215n]@anon-20191002_181700-214:localhost:8800@anon-20191002_181700-214:localhost:8800 anon-20191002_181700-214n]@anon-20191002_181700-213:localhost:8800@anon-20191002_181700-213:localhost:8800 anon-20191002_181700-213n]@anon-20191002_181700-212:localhost:8800@anon-20191002_181700-212:localhost:8800 anon-20191002_181700-212n]@anon-20191002_181700-211:localhost:8800@anon-20191002_181700-211:localhost:8800 anon-20191002_181700-211n]@anon-20191002_181700-209:localhost:8800@anon-20191002_181700-209:localhost:8800 anon-20191002_181700-209+17@34:localhost:8800@34:localhost:8800 34n(]@anon-20191002_181700-234:localhost:8800@anon-20191002_181700-234:localhost:8800 anon-20191002_181700-234 ? R  TQ  8n5 p 7Q S4m4 PR  n5m o 6  qt5uew8cYlDyb8e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4sha256*8e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-Usha2568e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdMsha256 8e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAsha256N8e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIsha2568e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYsha2568e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUsha256 8e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUsha256 8e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYsha2568e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQsha256 8e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4sha256 8e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIsha2568e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oEsha256 >8e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0sha256 8e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8Isha2568e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4sha2568e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUsha2568e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYsha2568e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIsha2568e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hosha2568e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8sha256s6e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_Asha2568e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUsha2568e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAsha256L8e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7Usha2568e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuksha256d8e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrssha2568e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gsha256`8e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_ssha2568e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgsha2568e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIsha25668e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7ksha256<8e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wsha2568e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BEsha256 8e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQsha256Z8e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8sha2568e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYsha2568e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcsha2568e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFeksha256n8e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4sha256/8e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-csha2568e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3csha256b8e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620sha256 8e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Esha256H8e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8sha2568e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Qsha2568e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMsha2568e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYsha2568e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEsha2568e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5Usha256 L8e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90sha256 %8e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEsha256 8e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUsha256 B8e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUsha256 <8e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4sha256 18e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Esha256 t8e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owsha256?8e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhssha2568e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMsha256X8e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYsha256 8e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938sha256U98e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gsha256 r8e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Isha256 W - @WkeQac$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1157}{"auth_events": ["$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "type": "m.room.power_levels", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"users": {"@anon-20191002_181700-236:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041394834, "hashes": {"sha256": "wImUO/J9hgVnMDFud7O9vT9oc5y6jWANtEZ4aES9EIY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iORv/MEY8jiUS2pa/Q52WTFTNTi6kDsPHPgiZknHNaoAKw/qvTLnPFsI5cpJ44Y7cJhyeR0naG2g52Zqi5SZCQ"}}, "unsigned": {"age_ts": 1570041394834}}veQay$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1156}{"auth_events": ["$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk"], "prev_events": ["$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk"], "type": "m.room.member", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-236", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-236:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041394213, "hashes": {"sha256": "7L1hQQpnxCNMjC8C2KmgIp7/1pwkFWTT/a6xSeuVyvM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J/uvIo325vaBFWi5mXfOq1C9e+1qoCI5tBGPyxTJoATyHE2kz44goVYZZLGKZ5uoj7DR03RmAcr7mbQwQi0LCA"}}, "unsigned": {"age_ts": 1570041394213}}ieQa_$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1155}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-236:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041393407, "hashes": {"sha256": "48oUwRNmLExGJ4UBTnijLM0oB6XUjYtCiXawxquqkIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UZ8awqe6OIStbqQsfUDZUOGfrpCJrXvMugTCXGcnEqZhFMKdo0SWP7/AR7eO1eExNwXVVQ0+fRxorjbLgm+EAw"}}, "unsigned": {"age_ts": 1570041393407}}OeQa+$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1154}{"auth_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA", "$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI"], "type": "m.room.history_visibility", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041391558, "hashes": {"sha256": "f5Jzl23imZf7kVk6shLWKiK+jmhN0E4FfPv1VWbmj8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pYeKen6BY8kzPcVykOizBvZ3+c/8pesuKRZpcDVMNNfs7pBjHfaT4XHvwTC6NaLwKFy8orh8GSeREoQxXJ6cAg"}}, "unsigned": {"age_ts": 1570041391558, "replaces_state": "$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI"}} DCK{Fe0d1 a . ^ ) [ & V % W "ROJN~vCs> 2]@anon-20191002_181700-303:localhost:8800aD4]@anon-20191002_181700-302:localhost:8800mC2]@anon-20191002_181700-275:localhost:8800a 4]@anon-20191002_181700-274:localhost:8800m2]@anon-20191002_181700-274:localhost:8800a 4]@anon-20191002_181700-273:localhost:8800m2]@anon-20191002_181700-273:localhost:8800a 4]@anon-20191002_181700-272:localhost:8800m 2]@anon-20191002_181700-272:localhost:8800a 4]@anon-20191002_181700-271:localhost:8800m2]@anon-20191002_181700-271:localhost:8800a2]@anon-20191002_181700-302:localhost:8800aB4]@anon-20191002_181700-301:localhost:8800mA2]@anon-20191002_181700-301:localhost:8800a@4]@anon-20191002_181700-300:localhost:8800m?2]@anon-20191002_181700-300:localhost:8800a>/Y@anon-20191002_181700-2:localhost:8800a0[@anon-20191002_181700-29:localhost:8800aD4]@anon-20191002_181700-299:localhost:8800m=2]@anon-20191002_181700-299:localhost:8800a<4]@anon-20191002_181700-298:localhost:8800m;2]@anon-20191002_181700-298:localhost:8800a:4]@anon-20191002_181700-297:localhost:8800m92]@anon-20191002_181700-297:localhost:8800a84]@anon-20191002_181700-296:localhost:8800m72]@anon-20191002_181700-296:localhost:8800a64]@anon-20191002_181700-295:localhost:8800m52]@anon-20191002_181700-295:localhost:8800a44]@anon-20191002_181700-294:localhost:8800m32]@anon-20191002_181700-294:localhost:8800a24]@anon-20191002_181700-293:localhost:8800m12]@anon-20191002_181700-293:localhost:8800a/4]@anon-20191002_181700-292:localhost:8800m02]@anon-20191002_181700-292:localhost:8800a.4]@anon-20191002_181700-291:localhost:8800m-2]@anon-20191002_181700-291:localhost:8800a+4]@anon-20191002_181700-290:localhost:8800m,2]@anon-20191002_181700-290:localhost:8800a*2[@anon-20191002_181700-28:localhost:8800mC0[@anon-20191002_181700-28:localhost:8800aB4]@anon-20191002_181700-289:localhost:8800m)2]@anon-20191002_181700-289:localhost:8800a'4]@anon-20191002_181700-288:localhost:8800m(2]@anon-20191002_181700-288:localhost:8800a&4]@anon-20191002_181700-287:localhost:8800m%2]@anon-20191002_181700-287:localhost:8800a#4]@anon-20191002_181700-286:localhost:8800m$2]@anon-20191002_181700-286:localhost:8800a"2]@anon-20191002_181700-285:localhost:8800a 4]@anon-20191002_181700-284:localhost:8800m!2]@anon-20191002_181700-284:localhost:8800a4]@anon-20191002_181700-283:localhost:8800m2]@anon-20191002_181700-283:localhost:8800a4]@anon-20191002_181700-282:localhost:8800m2]@anon-20191002_181700-282:localhost:8800a4]@anon-20191002_181700-281:localhost:8800m2]@anon-20191002_181700-281:localhost:8800a4]@anon-20191002_181700-280:localhost:8800m2]@anon-20191002_181700-280:localhost:8800a2[@anon-20191002_181700-27:localhost:8800mA0[@anon-20191002_181700-27:localhost:8800a@4]@anon-20191002_181700-279:localhost:8800m2]@anon-20191002_181700-279:localhost:8800a2]@anon-20191002_181700-278:localhost:8800a4]@anon-20191002_181700-277:localhost:8800m2]@anon-20191002_181700-277:localhost:8800a4]@anon-20191002_181700-276:localhost:8800m2]@anon-20191002_181700-276:localhost:8800a Hj8p> v D  |K]+ J  P  V $ \ *b0k9q? wW%E}Q1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0M1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0L1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0K1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0J1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ81e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ71e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ61e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc,1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Yj1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Yi1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Yh1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE1e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE1e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4o1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs^1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs]1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs\1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao 1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo-1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo,1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo+0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c#0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c"1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM=1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM<1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM;1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU 1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4{1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4z1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4y1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo(1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo'1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo =1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo <1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ D1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ C1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ B1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg.1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg-1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg,1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o ^1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o ]1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o \1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs Ij$8p> w E  ~ L  R X & ^ ,d2j8p> VvD|JP1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA G1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y *1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o 1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY 1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY >1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY h1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0M1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk\1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM 1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 a1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 51e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 D1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM|1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M k1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE h1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcZ1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM31e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg'1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4In1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg w1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM =1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts`1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw~1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYd1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo#1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QK1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgW1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8@0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4R1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ.1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw"1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA80e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8M1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI 1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicJ1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicI1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicH1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIga1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU FWj8p> v DW  }3 K  Q  W % ] +ek9q? wE}KQ1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw 1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoC1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4}1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkt1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A91e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA T1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo.1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q?1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ 1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC01e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE&1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4E1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78w1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo(1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw 1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQw1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ h1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo-1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 50e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ks1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh031e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwA1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM91e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW081e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEV1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER01e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0k1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE`1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MW1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwd1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s 0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk[1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4H1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ01e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4k1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w b  fe eQaM$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1161}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw"], "type": "m.room.aliases", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"aliases": ["#test-20191002_181700-38:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041397857, "hashes": {"sha256": "zldzU2M+QfmoSZfOsMsw091AipuAqEv+qSq9aaPT6Zw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4DiHXIiyhVElGapQpWBGsCVOfOjgFAHZn9KQ+DYOJgpj+f5RLBFhHbajjYap+onUF6kapuA3FRgiI4PhQqRnDg"}}, "unsigned": {"age_ts": 1570041397857}}eQa$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1160}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY"], "type": "m.room.history_visibility", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041396882, "hashes": {"sha256": "cZwu3eDLkv4C6heDfLMlDOTx84Ya6053RkiJ1dxZYWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VjJvPo2/mDDpDrI8Xjh2xjqnXE2HpevKEEZAXS0AmDpUfS41qRWXEDxY8D+UV6z91xwAf/cMejMS5Ueunxx+AA"}}, "unsigned": {"age_ts": 1570041396882}}teQau$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1159}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw"], "type": "m.room.join_rules", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041396315, "hashes": {"sha256": "gW7HohqizFcfCg77AiTRZ4m7wCtVzpzjK6DjB1TwP6s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H62P5JZcB5SrWXt4VzphmKVsWLCcPAeJEn1h2N/fUXxTITeFrcGzRMB8rUFnTIH0RBhA7VMEIfHaxqje9q5cAw"}}, "unsigned": {"age_ts": 1570041396315}}eQa9$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1158}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo"], "type": "m.room.canonical_alias", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"alias": "#test-20191002_181700-38:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041395608, "hashes": {"sha256": "2kxM0BpLuXUf2fA1XUrCYXiHsYdpIVboKpqgp5uhg74"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "32zJDoUm/jMo7ppuH6sOuUrs5/iRlAvjaPa9zxAWt/tGVvKvo9CzmTjiTziWk3IgPlycODuojr0/xiFAoSi9AA"}}, "unsigned": {"age_ts": 1570041395608}} i g 4 5ih1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQo^1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhmczo4aXNLYlQ7cmc0c2YKMDAyZnNpZ25hdHVyZSCii7eda4u_cvWaTXkgDXF3fvhq4uqd2pt3gHuBIPdixAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJTUWhsR0JMUi1oYkNYYWcKMDAyZnNpZ25hdHVyZSAGiLKsOqoQuxKK_4Pmg-XFWgoT-qrRMYFwGMFT-hQ-YQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJqc15IV1dGS25wcE9uYlEKMDAyZnNpZ25hdHVyZSCYjNjyDWdteJjxc8W-kRRu5ptViIlvWWCgl3LHeciJZgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAo_1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAo ~z v r n j fb^ZVRNJFeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800 eeQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800 DUq8  T    p 7  S  4 P o 6 R Rn5Qm4mn5R98e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8sha256 8e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUsha256 8e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncsha256 8e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Ysha256 8e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wsha256 8e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdosha2568e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90sha256_8e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQsha256 :8e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_Isha256 )8e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4sha256 8e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udcksha256 8e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73csha256^8e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAsha2568e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcsha2567e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1mssha256?8e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgksha2568e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9Esha256 F8e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEsha256/8e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0sha2568e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gsha256 8e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgcsha256 8e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1osha256 7e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYsha256C7e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAsha256~8e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgsha2568e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Msha2568e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8sha2568e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDossha2568e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYsha256 8e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgsha2568e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3ssha2568e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Qsha2568e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIsha2568e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMsha256.8e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qsha256h8e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MIsha2568e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4sha256<8e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYsha25698e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQsha2568e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uosha256 8e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYsha2568e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIsha2568e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8Msha2568e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4sha256p8e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwsha2568e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEsha2568e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8sha2568e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOcsha2568e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4sha256?8e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREsha2568e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIsha2568e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgsha256 68e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Msha256T8e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8sha256g8e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGssha256I8e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAsha2568e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Usha256 8e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scsha2568e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijksha256t8e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugsha25688e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4sha2568e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMsha2568e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0csha256a8e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8sha2568e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAsha2568e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMsha2568e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Aksha2568e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMsha256 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mmmmmfmmmلmmmm?mķmįEmĪmĤzmĝmĕYmĐmĉmăm{mnmem`mZmSGmNsmDGm>m6m0.m(<mmmmm>mmmmÃ#m|zmmmFmA:m9m0+m Emmmm mmmHmQmm!mm_mAmmmm"mm$mm5mmm¼m¼m¸m¶m²m°m¬Jm¦m£%m mm™wm—?m”m’Omemm…m‚am~m|[mymvmt%mpmimdmbrm_m\?~~mYZ}}mP||mK{{mIjzzmDyymBxxm@Gwwm8{vvm5uum1[ttm.ssm).rrm$qqmppm[oomnnmAmmm)llmŕmŒmōmŋ[mňmŅYmłwmxmvmsPmlmjhmgmdmamTmL mHm@m<m6Cm3Gm/m'mmmmmm cmmkkmQjjmiimhhmӮggmBffmdeemddmccm"bbmaam?``m__m^^m:]]m\\mU[[mZZm:YYmXXm'WWmVVmUUmTTmSSmRRmQQm~6PPmyiOOmvNNmnMMmmKLLmjKKmhJJmdIIm`HHm^=GGm[FFmY|EEmUDDmMCCmKBBmIAAmG5@@mD??mAL>>m!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMr@Q))e=!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEo?Q? eQ/ e;!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rules$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Al=Q9 e:!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_alias$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REi<Q3 e9!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA ;Q']e8!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMc:Q' e7!wsvXTJXouVkEZcCFsD:localhost:8800m.room.create$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ  fe eQaM$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1169}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI"], "type": "m.room.aliases", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"aliases": ["#test-20191002_181700-39:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041404849, "hashes": {"sha256": "5CcdU/9N82XzYk1JXkCnVZmieZahuP+uiljJ4wfJKo0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "afBvArwYDDN4vS6UcroTgtqtNI179f5XXZzVHuFGzvLf5yAFuTHlKG0KDrEx1NbQ7ZyrMszMDO+/zmX8/3+mAw"}}, "unsigned": {"age_ts": 1570041404849}}eQa$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1168}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A"], "type": "m.room.history_visibility", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041403767, "hashes": {"sha256": "NtDCy1345B3vhqeQzC+VO8LnmQcYyacItCzVfvu755Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/AfawULLzIsSdqRviQ51KyXaKWs3KOEQU6GuGFq41DUggvAqAy6XxKxj/3Tw6LvJKAg3sP6M3kov34JWQ+a0AA"}}, "unsigned": {"age_ts": 1570041403767}}teQau$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1167}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE"], "type": "m.room.join_rules", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041403199, "hashes": {"sha256": "U1i6T/6FUV+QmWQmtIjGOJQJJgPpW/Gkw2TBTJnorfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZuO7/gQ7qIsa9D5j0Y/slxtGhVmNJZuz4RSzCjZ9vjNKwzBV3zhWKF7CnO5zOmC9fHycnWjd58Ha001LJKTdDg"}}, "unsigned": {"age_ts": 1570041403199}} eQa9$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1166}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA"], "type": "m.room.canonical_alias", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"alias": "#test-20191002_181700-39:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041402557, "hashes": {"sha256": "NVFl2d9qeRyuiEkkGqJLZKEB2GwKxDZ3kg4W9rZkrqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X2eg9YNrmEjUD2fzGM59dnrL+k/vkR0AbZo1mhVkRv/28NKCK48elYNHtKLd8XFKiAS08X628sSU3gM1ewx0Dw"}}, "unsigned": {"age_ts": 1570041402557}} a} { y w u sqomkigeca~6eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~5eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~4eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~3eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~2eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~1eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~0eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~/eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~.eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~-eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~,eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~+eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~*eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~)eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~(eeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~'eeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~&eeQ$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~%eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~$eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~#eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~"eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~!eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~ eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800 #P+H t }  ; > MV~#QwzGP /eQ']$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800g.eQ3 $MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_accessm-eQ? $dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibilitye,eQ/ $QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rulesg+eQ3 $KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels *eQ']$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800a)eQ' $fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800m.room.create (eQ']$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800m'eQ? $JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibilityg&eQ3 $QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_accessm%eQ? $bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibilitye$eQ/ $Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rulesg#eQ3 $LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levels "eQ']$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800a!eQ' $8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.createg eQ3 $pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_accessmeQ? $2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibilityeeQ/ $WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rulesgeQ3 $rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels eQ']$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800aeQ' $pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.create eQ']$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800 eQ']$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800meQ? $LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibilitygeQ3 $uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_accessmeQ? $JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibilityeeQ/ $t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rulesgeQ3 $JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels eQ']$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800aeQ' $3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800m.room.createmeQ? $CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibilitypeQ))$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800meQ? $SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibilityeeQ/ $OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rulesj eQ9 $4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_alias Jj8h0p> v D  6 | J   P  V $   \ *b%n< tBzHPW1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90e1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms?1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E F1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE/1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYC0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA~1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ :1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM.1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qh1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4<1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY91e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E v1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4p1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4?1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg 61e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MT1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8g1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsI1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkt1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug81e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ca1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I )1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow?1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cb1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EH1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q Jj8h0p> v D  6 | J   P  V $   \ *b%n< tBzHPW1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90_1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms?1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E F1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE/1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYC0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA~1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ :1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM.1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qh1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4<1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY91e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E t1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4p1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4?1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg 61e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MT1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8g1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsI1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkt1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug81e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ca1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I )1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow?1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cb1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EH1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q -RM H C > 9 4/*|%w rmhc TiQei!kwXxkGQFkaeenFTQJr:localhost:8800$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7EThQeh!kwXxkGQFkaeenFTQJr:localhost:8800$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYTgQeg!kwXxkGQFkaeenFTQJr:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkTfQef!kwXxkGQFkaeenFTQJr:localhost:8800$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerATeQee!EMhFCPhwmnWVnjtXXM:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sTdQed!EMhFCPhwmnWVnjtXXM:localhost:8800$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQTcQec!EMhFCPhwmnWVnjtXXM:localhost:8800$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsTbQeb!EMhFCPhwmnWVnjtXXM:localhost:8800$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5HsTaQea!EMhFCPhwmnWVnjtXXM:localhost:8800$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoT`Qe`!EMhFCPhwmnWVnjtXXM:localhost:8800$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUT_Qe_!EMhFCPhwmnWVnjtXXM:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4T^Qe^!EMhFCPhwmnWVnjtXXM:localhost:8800$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxkT]Qe]!GGXyLHdVXqhQjPRvac:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMT\Qe\!GGXyLHdVXqhQjPRvac:localhost:8800$OC1oFZ4uuSXshsXR3huYiKBYsaTA1gL0P6dcIqnAfwAT[Qe[!GGXyLHdVXqhQjPRvac:localhost:8800$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38TZQeZ!GGXyLHdVXqhQjPRvac:localhost:8800$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMTYQeY!GGXyLHdVXqhQjPRvac:localhost:8800$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kTXQeX!GGXyLHdVXqhQjPRvac:localhost:8800$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1YgTWQeW!GGXyLHdVXqhQjPRvac:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcTVQeV!GGXyLHdVXqhQjPRvac:localhost:8800$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsTUQeU!IfYYyzLHSOeyJBxBfn:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwTTQeT!IfYYyzLHSOeyJBxBfn:localhost:8800$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwTSQeS!IfYYyzLHSOeyJBxBfn:localhost:8800$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTITRQeR!IfYYyzLHSOeyJBxBfn:localhost:8800$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUTQQeQ!IfYYyzLHSOeyJBxBfn:localhost:8800$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygTPQeP!IfYYyzLHSOeyJBxBfn:localhost:8800$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWETOQeO!IfYYyzLHSOeyJBxBfn:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0TNQeN!IfYYyzLHSOeyJBxBfn:localhost:8800$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0TMQeM!ZYKvjplZRyIWvzkRyM:localhost:8800$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYTLQeL!ZYKvjplZRyIWvzkRyM:localhost:8800$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0kTKQeK!ZYKvjplZRyIWvzkRyM:localhost:8800$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGoTJQeJ!ZYKvjplZRyIWvzkRyM:localhost:8800$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgoTIQeI!ZYKvjplZRyIWvzkRyM:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeATHQeH!ZYKvjplZRyIWvzkRyM:localhost:8800$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKATGQeG!ROoilpDjLJfjKfSPIi:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0TFQeF!ROoilpDjLJfjKfSPIi:localhost:8800$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcTEQeE!ROoilpDjLJfjKfSPIi:localhost:8800$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdITDQeD!ROoilpDjLJfjKfSPIi:localhost:8800$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awTCQeC!ROoilpDjLJfjKfSPIi:localhost:8800$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4TBQeB!ROoilpDjLJfjKfSPIi:localhost:8800$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gTAQeA!ROoilpDjLJfjKfSPIi:localhost:8800$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8T@Qe@!ROoilpDjLJfjKfSPIi:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8T?Qe?!ROoilpDjLJfjKfSPIi:localhost:8800$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5UT>Qe>!wsvXTJXouVkEZcCFsD:localhost:8800$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMT=Qe=!wsvXTJXouVkEZcCFsD:localhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE -RM H C > 9 4/*|%w rmhc TCQe!EMhFCPhwmnWVnjtXXM:localhost:8800$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsTBQe!EMhFCPhwmnWVnjtXXM:localhost:8800$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5HsTAQe!EMhFCPhwmnWVnjtXXM:localhost:8800$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoT@Qe!EMhFCPhwmnWVnjtXXM:localhost:8800$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUT?Qe!EMhFCPhwmnWVnjtXXM:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4T>Qe!EMhFCPhwmnWVnjtXXM:localhost:8800$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxkT=Qe!GGXyLHdVXqhQjPRvac:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMT<Qe!GGXyLHdVXqhQjPRvac:localhost:8800$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4T;Qe!GGXyLHdVXqhQjPRvac:localhost:8800$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQT:Qe!GGXyLHdVXqhQjPRvac:localhost:8800$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38T9Qe!GGXyLHdVXqhQjPRvac:localhost:8800$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMT8Qe!GGXyLHdVXqhQjPRvac:localhost:8800$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kT7Qe!GGXyLHdVXqhQjPRvac:localhost:8800$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1YgT6Qe!GGXyLHdVXqhQjPRvac:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcT5Qe!GGXyLHdVXqhQjPRvac:localhost:8800$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsT4Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcT3Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwT2Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNoT1Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwT0Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLkT/Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIT.Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUT-Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygT,Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWET+Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0T*Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0T)Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYT(Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0kT'Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGoT&Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgoT%Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAT$Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAT#Qe!ROoilpDjLJfjKfSPIi:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0T"Qe!ROoilpDjLJfjKfSPIi:localhost:8800$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcT!Qe!ROoilpDjLJfjKfSPIi:localhost:8800$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awT Qe!ROoilpDjLJfjKfSPIi:localhost:8800$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdITQe!ROoilpDjLJfjKfSPIi:localhost:8800$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awTQe!ROoilpDjLJfjKfSPIi:localhost:8800$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4TQe!ROoilpDjLJfjKfSPIi:localhost:8800$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gTQe!ROoilpDjLJfjKfSPIi:localhost:8800$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8TQe!ROoilpDjLJfjKfSPIi:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8TQe!ROoilpDjLJfjKfSPIi:localhost:8800$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5UTQe!wsvXTJXouVkEZcCFsD:localhost:8800$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMTQe!wsvXTJXouVkEZcCFsD:localhost:8800$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMTQe!wsvXTJXouVkEZcCFsD:localhost:8800$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA 2 y2ieQa_$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1173}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-238:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041408586, "hashes": {"sha256": "JMtyJCdUK7yZ5LhglnmPrlv0+mgxwX8UQLOiskBVa9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tNm1BgU3Y//Tu5KglzZA1kxgck2ZFieh9sl43QPlVJy4XmTYk2FSXIKOAOePcj16hYgeOAx3pWvyFeNjEo31CA"}}, "unsigned": {"age_ts": 1570041408586}}eQo$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "txn_id": "118", "stream_ordering": 1172}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM"], "type": "m.room.message", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"msgtype": "m.text", "body": "public"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041407230, "hashes": {"sha256": "sSCwqnAR2ubb4RuqpPzrBwPOctVY3ObWK6gHJ7UX6zU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VI+w4jKpF3HMRCR9WSSVKHcUneiFnD7fBvfQFY5zgnu6KUfpwj21BxuHDWhXRpvzTdCuikHswxB1O5EGwtd9Dg"}}, "unsigned": {"age_ts": 1570041407230}}OeQa+$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1171}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA"], "type": "m.room.history_visibility", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041406245, "hashes": {"sha256": "SPjBernq10vWyLXhgwCb9XRLUM3kdEtCVB0ATqKU0sM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mYkKtWE3vtSWeRgXeGCJbhqy3ciTaTd9Z1Ytx58EZ+Js3cfZiggquqCm1bTC7O6jsFWjpiEXyz9zzfjfQ34TBQ"}}, "unsigned": {"age_ts": 1570041406245, "replaces_state": "$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI"}}eQo$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "txn_id": "117", "stream_ordering": 1170}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE"], "type": "m.room.message", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"body": "private", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041405619, "hashes": {"sha256": "gj8jnbq+Ugc+eEeMyuXmh4z5N8c78e/h/PsjCtcvh1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mPTU9q63KTRyjs6XMuzCHbcem30i1VaziuHgElApeQmBHxezMRw6o81ibP5O/y6WYblR+B66HVbDycqtVffRAA"}}, "unsigned": {"age_ts": 1570041405619}} 8^ h  ^  t&~$428!,e)Q ] $JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNom.room.message!IfYYyzLHSOeyJBxBfn:localhost:8800 mHm]@anon-20191002_181700-242:localhost:8800,+e?Q ]$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwm.room.history_visibility!IfYYyzLHSOeyJBxBfn:localhost:8800mQm@anon-20191002_181700-242:localhost:8800!*e)Q ]$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLkm.room.message!IfYYyzLHSOeyJBxBfn:localhost:8800mm@anon-20191002_181700-242:localhost:8800&)e3Q ]$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIm.room.guest_access!IfYYyzLHSOeyJBxBfn:localhost:8800m!m@anon-20191002_181700-242:localhost:8800,(e?Q ]$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUm.room.history_visibility!IfYYyzLHSOeyJBxBfn:localhost:8800mm@anon-20191002_181700-242:localhost:8800$'e/Q ]$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygm.room.join_rules!IfYYyzLHSOeyJBxBfn:localhost:8800m_mb@anon-20191002_181700-242:localhost:8800&&e3Q ]$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEm.room.power_levels!IfYYyzLHSOeyJBxBfn:localhost:8800mAm@@anon-20191002_181700-242:localhost:8800 %e'Q ]$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0m.room.member!IfYYyzLHSOeyJBxBfn:localhost:8800mm@anon-20191002_181700-242:localhost:8800$ e'Q  ]$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0m.room.create!IfYYyzLHSOeyJBxBfn:localhost:8800mmB@anon-20191002_181700-242:localhost:8800&#e3Q ]$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYm.room.guest_access!ZYKvjplZRyIWvzkRyM:localhost:8800mmy@anon-20191002_181700-240:localhost:8800,"e?Q ]$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0km.room.history_visibility!ZYKvjplZRyIWvzkRyM:localhost:8800m"m@anon-20191002_181700-240:localhost:8800$!e/Q ]$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGom.room.join_rules!ZYKvjplZRyIWvzkRyM:localhost:8800mm٧@anon-20191002_181700-240:localhost:8800& e3Q ]$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgom.room.power_levels!ZYKvjplZRyIWvzkRyM:localhost:8800m$m@anon-20191002_181700-240:localhost:8800 e'Q ]$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAm.room.member!ZYKvjplZRyIWvzkRyM:localhost:8800mmF@anon-20191002_181700-240:localhost:8800 e'Q  ]$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAm.room.create!ZYKvjplZRyIWvzkRyM:localhost:8800m5mА@anon-20191002_181700-240:localhost:8800 e'Q ]$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0m.room.member!ROoilpDjLJfjKfSPIi:localhost:8800mm@anon-20191002_181700-239:localhost:8800 e'Q ]$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcm.room.member!ROoilpDjLJfjKfSPIi:localhost:8800mm*@anon-20191002_181700-239:localhost:8800,e?Q ]$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIm.room.history_visibility!ROoilpDjLJfjKfSPIi:localhost:8800m¼m¿}@anon-20191002_181700-238:localhost:8800&e3Q ]$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awm.room.guest_access!ROoilpDjLJfjKfSPIi:localhost:8800m¼m½>@anon-20191002_181700-238:localhost:8800,e?Q ]$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4m.room.history_visibility!ROoilpDjLJfjKfSPIi:localhost:8800m¸mºq@anon-20191002_181700-238:localhost:8800$e/Q ]$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gm.room.join_rules!ROoilpDjLJfjKfSPIi:localhost:8800m¶m¶@anon-20191002_181700-238:localhost:8800&e3Q ]$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8m.room.power_levels!ROoilpDjLJfjKfSPIi:localhost:8800m²m´r@anon-20191002_181700-238:localhost:8800 e'Q ]$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8m.room.member!ROoilpDjLJfjKfSPIi:localhost:8800m°m±@anon-20191002_181700-238:localhost:8800 e'Q  ]$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5Um.room.create!ROoilpDjLJfjKfSPIi:localhost:8800m¬Jm¬@anon-20191002_181700-238:localhost:8800  eQa$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1177}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g"], "type": "m.room.history_visibility", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041411716, "hashes": {"sha256": "sNxDYV1KNf6uVCPfMxUVSFAkoiBDp2LovVEsAtdUlSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mxS3AGWRp0JJiJKcSufQRFIvzcHM8g6BNw2BMw+lYF3VdVuPskeaNOKw16WKNdV1l9SfTgPU5y/RDHnzTW5ODg"}}, "unsigned": {"age_ts": 1570041411716}}teQau$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1176}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8"], "type": "m.room.join_rules", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041411101, "hashes": {"sha256": "gILuZqvHXkzmOCO98zrsdcgy8UAUvSpTBwQ/j/78bhY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BV3XfBwqZj7464WpjKmM7cXLVO8NoQrOgPyFqJAnwZiNkW/eZP/T6sVEKpnll0/WM6TJNbx81qGcKsTnbESaBQ"}}, "unsigned": {"age_ts": 1570041411101}}keQac$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1175}{"auth_events": ["$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "type": "m.room.power_levels", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"users": {"@anon-20191002_181700-238:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041410268, "hashes": {"sha256": "T/byRDv1tKqfPc8x1qccngVX78AT8bFCdwr+lfVBuRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8hiEI3C7Azp5r1KnQbynbTOHPLrFkPL/dIjBzfQTwOFIG3b13MEUsNoiJyR11ocoiPppvtCud5OEDY7/fgr9DA"}}, "unsigned": {"age_ts": 1570041410268}}veQay$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1174}{"auth_events": ["$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U"], "prev_events": ["$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U"], "type": "m.room.member", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-238", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-238:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041409705, "hashes": {"sha256": "sMObq6UvsuqdOkjPNtGVaq+yVJI0vLYcBuszgloWgLY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEQuGrFjo1NX5XXRomZw2Bv8Oyw9z83jlTkrTwmJeAzkk8wOIYkedqfadPmJuL08ZewgSPZqsv9u3x08RmQsDg"}}, "unsigned": {"age_ts": 1570041409705}}  4 h 9mfd]c@anon-20191002_181700-264:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdHci43UW5SQF5CQEd4U1MKMDAyZnNpZ25hdHVyZSDpw2G5Yx2gvOJSbmwv08VdYUxuigJtfQ4pOnDbSLCHBQo127.0.0.1d]c@anon-20191002_181700-263:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswo127.0.0.1d]c@anon-20191002_181700-262:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAo127.0.0.1d]c@anon-20191002_181700-261:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwo127.0.0.1d]c@anon-20191002_181700-260:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgo127.0.0.1a[a@anon-20191002_181700-25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCg127.0.0.1d]c@anon-20191002_181700-259:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQo127.0.0.1d]c@anon-20191002_181700-258:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQo127.0.0.1d]c@anon-20191002_181700-257:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgo127.0.0.1d]c@anon-20191002_181700-254:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgo127.0.0.1  w , XFrj d]c@anon-20191002_181700-405:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAo127.0.0.1 d]c@anon-20191002_181700-394:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ7MzBOJnJ4MjdkRlY4TH4KMDAyZnNpZ25hdHVyZSDEWdLU6ypMTjm7IoIQyEblzSvLEBWgti22-K26eYOJfwo127.0.0.1 d]c@anon-20191002_181700-384:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrSWNNYyMtcztDOTpSXl4KMDAyZnNpZ25hdHVyZSB-FTDcMYIrakCJawDmb3aBv18F3P31mU-pI3jX6M9MQQo127.0.0.1}d]c@anon-20191002_181700-374:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAo127.0.0.1r 5d]c@anon-20191002_181700-364:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAo127.0.0.1gd]c@anon-20191002_181700-353:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQo127.0.0.1\d]c@anon-20191002_181700-342:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAo127.0.0.1SQd]c@anon-20191002_181700-331:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAo127.0.0.1Id]c@anon-20191002_181700-321:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7Qwo127.0.0.1? d]c@anon-20191002_181700-417:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwo127.0.0.1 8l D `8z]c!E@anon-20191002_181700-248:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813QoSFZRVIZXHM127.0.0.1Perl + Net::Async::HTTP/0.44m'\y]c!E@anon-20191002_181700-246:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwoVWLZTFZJKU127.0.0.1Perl + Net::Async::HTTP/0.44mkx]c!E@anon-20191002_181700-247:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwoTRPUOTMOOT127.0.0.1Perl + Net::Async::HTTP/0.44mi*w]c!E@anon-20191002_181700-245:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAoBMGHUZBIKD127.0.0.1Perl + Net::Async::HTTP/0.44m Ӄv]c!E@anon-20191002_181700-244:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQoVWUTZPSOAH127.0.0.1Perl + Net::Async::HTTP/0.44m xu]c!E@anon-20191002_181700-243:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_QoFMNGREYZML127.0.0.1Perl + Net::Async::HTTP/0.44m椃t]c!E@anon-20191002_181700-242:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwoAYBUQGWFIB127.0.0.1Perl + Net::Async::HTTP/0.44m?s]c!E@anon-20191002_181700-241:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQoAXXWURZRJC127.0.0.1Perl + Net::Async::HTTP/0.44mϕr]c!E@anon-20191002_181700-240:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6TwoCDHFDOSRPZ127.0.0.1Perl + Net::Async::HTTP/0.44mϒq]c!E@anon-20191002_181700-239:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwoWFWDJJSKCM127.0.0.1Perl + Net::Async::HTTP/0.44m¬G !M(H  \ e  FIk^gj(+Mp2Q? e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsh1Q/ e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rules$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoj0Q3 e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU /Q']e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4d.Q' e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk -Q']e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMj,Q3 e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_access$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38p+Q? e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMh*Q/ e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rules$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kj)Q3 e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg (Q']e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcd'Q' e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.create$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs &Q']e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw%Q? ee!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibility$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUj$Q3 e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_access$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIp#Q? e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibility$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUh"Q/ e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rules$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygj!Q3 e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levels$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE Q']e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0dQ' e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.create$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0jQ3 e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_access$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYpQ? e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibility$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0khQ/ e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rules$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGojQ3 e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo Q']e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAdQ' e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.create$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA8Q']ee!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc Q']e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcQ? ee!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibility$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4jQ3 e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_access$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awpQ? e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibility$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4hQ/ e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rules$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gjQ3 e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8 (&. X u   A ^i6\-&LW-2(e\eQ/ $Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rulesg[eQ3 $LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levelsaYeQ' $8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.creategXeQ3 $pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_accessmWeQ? $2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibilityeVeQ/ $WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rulesgUeQ3 $rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels TeQ']$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800joinaSeQ' $pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.createReQ']$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800leavemQeQ? $LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibilitygMeQ3 $JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels LeQ']$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800joinaKeQ' $3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800m.room.createmJeQ? $CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibilitypIeQ))$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800eGeQ/ $OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rulesjFeQ9 $4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_aliasgEeQ3 $7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels DeQ']$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800joinaCeQ' $Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800m.room.createpBeQ))$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800mAeQ? $Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibilitye@eQ/ $qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rulesj?eQ9 $4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias ZeQ']$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800joingPeQ3 $uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_accessg>eQ3 $1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levelseNeQ/ $t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rules &`&L r " 2 B R  b r"2BRb2B`p pMH]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800MG]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800MF]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800ME]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800MD]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800MC]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800MB]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800MA]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800M@]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800M?]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800M>]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800M=]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800M<]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800M;]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800M9]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800M8]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800M7]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800M6]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800M5]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800M4]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800M3]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800M2]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800M1]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800M0]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800M/]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800M.]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800M-]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800M,]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800M+]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800M*]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800M)]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800:M(]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800M']Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:88007&1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800M%]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:88007$1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800M#]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800M:]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800  ZeQaA$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 260, "stream_ordering": 1181}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc"], "prev_events": ["$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc"], "type": "m.room.member", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-239:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-239:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041415159, "hashes": {"sha256": "hcS83dFiIigSN0hfwH7lC5FFz04T8Kxg+amNuZOUMt8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pCrNoazhoS5Ra0ptXEi8pRFWwOXHkB3dVpPM6rI4wQXKoJDs6gV4/uJ9YWkN2Jali9zotSNNcDMXd10MYk0cDw"}}, "unsigned": {"age_ts": 1570041415159, "replaces_state": "$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc"}}eQa$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 260, "stream_ordering": 1180}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g"], "prev_events": ["$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw", "$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI"], "type": "m.room.member", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-239:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-239", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-239:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041414611, "hashes": {"sha256": "liT7e7aMiRDe7OxDLIzEc6x5itmwFXgEDZlDqoJ+KnY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "01sOD45+r2r0ZJ3yMlaXzotAag3a/aZCTnuvAxzcAuZYNOszb4zN8ULO8EV6HHf9+27G8fKwaJQRHjff1AsVCA"}}, "unsigned": {"age_ts": 1570041414611}}OeQa+$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1179}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4"], "type": "m.room.history_visibility", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041412754, "hashes": {"sha256": "+LkvomR4LinvjMouXfPR3wfR/qVtvYaYxEYE9S1pVnI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "60YhYD0W1IXPOt4+yKgdzVseodckAjchZvDi2Hy8YC1cf8vBEMQel/mwWvrnXaZnIANPcBldCcyZ6QlSN9L1DQ"}}, "unsigned": {"age_ts": 1570041412754, "replaces_state": "$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4"}}{eQa$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1178}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4"], "type": "m.room.guest_access", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041412753, "hashes": {"sha256": "IQY48xQrm2oAzuY+k6sUPdm1ULK0NGRdbJOx0UzBcAw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dj/e5KlK/vbK2mXT2UVkE5eh42CdGwyxrjETTFlUBpzQ8WvzC2DAqG/nV8AsPQ3g7Q01R8ojObcFD9N3gY8BDA"}}, "unsigned": {"age_ts": 1570041412753}} -omWX  Y  Z  \  ` b ocefginkTeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800TeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800TeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800TeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800TeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800xTeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800mTeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800USeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:88008TeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0!mTlCLZQCmfDuQsJxxp:localhost:8800KSeQ$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08!IGVHKYcSuxzVPlFHlj:localhost:8800#TeQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800TeQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800TeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800SeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800TeQ$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ!UMFUOnYRvwKwSPkYHB:localhost:88009TeQ$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts!laUExtszUaoCpZoyEq:localhost:8800TeQ$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800TeQ$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800TeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800TeQ$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg!ABHbfUdkHCJksMsaUt:localhost:8800]TeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800JSeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ!QZhNrNpwObZGJZpdAG:localhost:8800TeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800^TeQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800TeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800:TeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829ISeQ$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw!IMiczgkCTjejbnbeyP:localhost:8800ZTeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800TeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800SeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800MSeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800 SeQ$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M!VWYMJxEviBNDdJCuKT:localhost:8800ISeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:88004TeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800TeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800GTeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800TeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M!nftGLlLhVgzOwOFufp:localhost:8800BTeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800TeQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800TeQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE!DqxFmsXPclgGqpSwdy:localhost:8800TeQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800TeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800TeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800|TeQ$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg!csWEXfVEVxdviNvgAd:localhost:8800oSeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800XU M $ \ S *c1 i7o=  uC}KR   X&^, Y !k9r @ y G   M 1e1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMT1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM-1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng&1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMU1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcg0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms:1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E 1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY>0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAt1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ 1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M 1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX41e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYQ1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ:1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY%0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIw1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4%1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw;1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4V1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREZ1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 51e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y 1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo 1e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE 1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA \1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 71e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 21e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ?1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcF1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU~1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ:1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w71e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg+1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM@1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4I1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8 a} { y w u sqomkigeca~UeeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~TeeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~SeeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~ReeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~QeeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~PeeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~OeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~NeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~MeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~LeeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~KeeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~JeeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~IeeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~HeeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~GeeQ$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~FeeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~EeeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~DeeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800~CeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~BeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~AeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800~@eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~?eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~>eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800~=eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~<eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~;eeQ$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~:eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800~9eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~8eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~7eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800 2 K S "t * | B: [ l eeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800 6eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800reeQ$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800ԁeeQ$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800#eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800$eeQ$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800heeQ$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800?eeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800% ceeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800b eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800߁eeQ$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800eeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800āeeQ$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:88293eeQ$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800beeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800ÁeeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800ueeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800] g * T~=gg]!c@anon-20191002_181700-251:localhost:8800PMDEYZFDXJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awog]!c@anon-20191002_181700-250:localhost:8800HLUDALFTVRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgog]!c@anon-20191002_181700-249:localhost:8800TCARNJMFBOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0Qog]!c @anon-20191002_181700-248:localhost:8800SFZRVIZXHMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813Qog]!c @anon-20191002_181700-246:localhost:8800VWLZTFZJKUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwog]!c @anon-20191002_181700-247:localhost:8800TRPUOTMOOTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwog]!c @anon-20191002_181700-245:localhost:8800BMGHUZBIKDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAog]!c @anon-20191002_181700-244:localhost:8800VWUTZPSOAHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQog]!c@anon-20191002_181700-243:localhost:8800FMNGREYZMLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_Qog~]!c@anon-20191002_181700-242:localhost:8800AYBUQGWFIBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwog}]!c@anon-20191002_181700-241:localhost:8800AXXWURZRJCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQo   *t eQau$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1185}{"auth_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo", "$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo"], "type": "m.room.join_rules", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041420011, "hashes": {"sha256": "vKpkiG08oLuAKD+yPP+5jiCZGaMbNHLNlJYFZHOOqc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bpR3hqjQA+7oYryqqhNvI+V/yIqQsGmx/L8DjZGckD2pK1jqGztwRunSsq56m5y8XU5D9lxC0jPtymsm9mRADw"}}, "unsigned": {"age_ts": 1570041420011}}keQac$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1184}{"auth_events": ["$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "type": "m.room.power_levels", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"users": {"@anon-20191002_181700-240:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041419044, "hashes": {"sha256": "CucScchgh3LwAtMZQm9DgmKfTmlVPnGx6E9ddbJfjiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4zNJZIBdgYJknL6taPcmgQo8K/XjltkqxlMDU2KFlt3Yz8NdMW5cscKU89E8LBVLTVMHX1tBRoSyhuih1UtkDg"}}, "unsigned": {"age_ts": 1570041419044}}veQay$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1183}{"auth_events": ["$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA"], "prev_events": ["$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA"], "type": "m.room.member", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-240", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-240:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041418471, "hashes": {"sha256": "gPnXOKII2Vzmkhfx639Kg03TI4c/C0PqkrSWO/XFFD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U77YRLRM7o6aNsLOnqI+SOdAxl09JaJoIso0sBFQybPbb7JlTBFqB9oq80B3vUeDNw/A/LhcIazNDlhHLVaOAA"}}, "unsigned": {"age_ts": 1570041418471}}ieQa_$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1182}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-240:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041417781, "hashes": {"sha256": "dkGjDObqJot0Ir4JK0KCitzWIZwadK9CHuiHblJVWoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pdte5j8OhF38FQues9ClU2es7cjJp+PHeHfc4W43jfwYlcWe2ZZ7/bNfH6vtks5lf4yFGo3cNt3Q71yxeOJbAA"}}, "unsigned": {"age_ts": 1570041417781}} 9r  V :sWR,# e]]Q $18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4@anon-20191002_181700-260:localhost:8800@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800leaveC" e]]Q =$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI@anon-20191002_181700-260:localhost:8800@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800joinanon-20191002_181700-260C! e]]Q=$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0@anon-20191002_181700-259:localhost:8800@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800joinanon-20191002_181700-259, e]]Q $Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw@anon-20191002_181700-258:localhost:8800@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800leaveC e]]Q =$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM@anon-20191002_181700-258:localhost:8800@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800joinanon-20191002_181700-258C e]]Q=$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s@anon-20191002_181700-257:localhost:8800@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800joinanon-20191002_181700-257C e]]Q=$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM@anon-20191002_181700-254:localhost:8800@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800joinanon-20191002_181700-254C e]]Q=$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE@anon-20191002_181700-253:localhost:8800@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800joinanon-20191002_181700-253C e]]Q=$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8@anon-20191002_181700-252:localhost:8800@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800joinanon-20191002_181700-252C e]]Q=$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w@anon-20191002_181700-251:localhost:8800@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800joinanon-20191002_181700-251C e]]Q=$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw@anon-20191002_181700-250:localhost:8800@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800joinanon-20191002_181700-250C e]]Q=$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8@anon-20191002_181700-249:localhost:8800@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800joinanon-20191002_181700-249C e]]Q=$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk@anon-20191002_181700-248:localhost:8800@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800joinanon-20191002_181700-248C e]]Q=$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s@anon-20191002_181700-247:localhost:8800@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800joinanon-20191002_181700-247C e]]Q=$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4@anon-20191002_181700-246:localhost:8800@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800joinanon-20191002_181700-246C e]]Q=$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM@anon-20191002_181700-245:localhost:8800@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800joinanon-20191002_181700-245C e]]Q=$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc@anon-20191002_181700-244:localhost:8800@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800joinanon-20191002_181700-244C e]]Q=$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw@anon-20191002_181700-243:localhost:8800@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800joinanon-20191002_181700-243C e]]Q=$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0@anon-20191002_181700-242:localhost:8800@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800joinanon-20191002_181700-242C e]]Q=$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA@anon-20191002_181700-240:localhost:8800@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800joinanon-20191002_181700-240 A9e0a,X# O  { F  r =  i 4  b -Y$R~IwB n^)W"4]@anon-20191002_181700-347:localhost:8800m5kW4]@anon-20191002_181700-290:localhost:8800mD`!2[@anon-20191002_181700-28:localhost:8800mz4]@anon-20191002_181700-289:localhost:8800m2[@anon-20191002_181700-31:localhost:8800m4]@anon-20191002_181700-319:localhost:8800m=4]@anon-20191002_181700-318:localhost:8800mʳ<4]@anon-20191002_181700-317:localhost:8800mʝt;4]@anon-20191002_181700-316:localhost:8800mʛ:4]@anon-20191002_181700-315:localhost:8800mʙ94]@anon-20191002_181700-314:localhost:8800mʗT84]@anon-20191002_181700-312:localhost:8800mi74]@anon-20191002_181700-311:localhost:8800m:64]@anon-20191002_181700-310:localhost:8800m%54]@anon-20191002_181700-309:localhost:8800m#44]@anon-20191002_181700-308:localhost:8800ms34]@anon-20191002_181700-307:localhost:8800m .24]@anon-20191002_181700-306:localhost:8800m14]@anon-20191002_181700-305:localhost:8800m&04]@anon-20191002_181700-304:localhost:8800məB/4]@anon-20191002_181700-303:localhost:8800mp,.4]@anon-20191002_181700-302:localhost:8800m=o-4]@anon-20191002_181700-301:localhost:8800mo,4]@anon-20191002_181700-300:localhost:8800m̔+4]@anon-20191002_181700-299:localhost:8800mȃ*4]@anon-20191002_181700-298:localhost:8800mE)4]@anon-20191002_181700-297:localhost:8800m(4]@anon-20191002_181700-296:localhost:8800m'4]@anon-20191002_181700-295:localhost:8800mǷ3&4]@anon-20191002_181700-294:localhost:8800mdžg%4]@anon-20191002_181700-293:localhost:8800m{$4]@anon-20191002_181700-292:localhost:8800mg#4]@anon-20191002_181700-291:localhost:8800m^t"  w v$eQay$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1189}{"auth_events": ["$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0"], "prev_events": ["$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0"], "type": "m.room.member", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-242", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-242:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041424307, "hashes": {"sha256": "SqKn3RaBguk7jV1ZhHs8SQswbY8UMyKQIg1aFc3Wze8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jD/vnw6hAgwgIvWXDQ7hHLbqGgjW1/J3fVXtbAOCltFRvFu4L7vt0wQ4RafpOaq4yItOrcwwuzNo1wsLhVaCAA"}}, "unsigned": {"age_ts": 1570041424307}}i#eQa_$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1188}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-242:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041423528, "hashes": {"sha256": "U0M+9peTj8LIQAdQIiVirV+FlJ0k3OoxXm05kleztWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/L8rjCfct9tyrEpcMmfwY9pmM1y31x4VWWeMcVFikNuHO0OZd2AQ4UM0mkUSa9fEfSvHSU5gnOYG7Drs5HkpBw"}}, "unsigned": {"age_ts": 1570041423528}}{"eQa$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1187}{"auth_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo", "$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k"], "type": "m.room.guest_access", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041421851, "hashes": {"sha256": "WugCWbUMlq1XXXE8VWTk6EqoHrI47qC3ZmUvXw575z8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6SaHJJVdGQ39+h6Gkda0h3zv0VB5jKwd5zRbnaTP4z1MNj/hKA/gMvCELkJLyogWz9onQZbqvs4Ki9HIFR4qBw"}}, "unsigned": {"age_ts": 1570041421851}}!eQa$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1186}{"auth_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo", "$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo"], "type": "m.room.history_visibility", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041420834, "hashes": {"sha256": "7V2WcNA25S0YOW/t8FoBy34DRJVpTJUtY9JTDwVMDg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SmM/RUw/qVLlDhI/ysw2mi1AsFeGtnfOoHJL4qw/HbK/5HeIdbVsz89dubdouy9Upz2HqIfaVxHAzmLe3VF5BA"}}, "unsigned": {"age_ts": 1570041420834}}  {(eQa$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1193}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU"], "type": "m.room.guest_access", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041427489, "hashes": {"sha256": "xvtJwkrRpHd6J3YSkAtzxKDMDe6AdDyd/xq2eLMJXp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYoG0bKfTSUYs4oP/JtYRvL9nSdgqgEO7TVXZmVi+wKcLoDNJlvVRYefOklkinEttCqNaWu3TwSHmbV4/BcWCg"}}, "unsigned": {"age_ts": 1570041427489}}'eQa$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1192}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg"], "type": "m.room.history_visibility", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041426451, "hashes": {"sha256": "5AVMsPAAMGQYfVQxS2OEbBOU3OIrFoKBPTkA3Kw9ZSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mbRKmfrFQ6XSj7oFrMg4oh8jIsIw0KH2ahpWBeGAtfFc04XkvcV5ngUKlJZ7HGLaciqXrFYCPULJ/ym/g+tYCw"}}, "unsigned": {"age_ts": 1570041426451}}t&eQau$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1191}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE"], "type": "m.room.join_rules", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041425759, "hashes": {"sha256": "MeOWJorM3lVe+/TCtH3zw/MbTuXcf1hcPDoAlp+9wik"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ayv+8udsWFqqaQyZHVnng+RJwqSEq/OpIs8KIx+pGFtesRtq5Bmxzh5ptRca8MRhmTvHyCERTnefOhbefnUnBQ"}}, "unsigned": {"age_ts": 1570041425759}}k%eQac$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1190}{"auth_events": ["$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "type": "m.room.power_levels", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"users": {"@anon-20191002_181700-242:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041424961, "hashes": {"sha256": "y5RWyAHfeUo7CZxXX0K3LN5tpEEsUGXr/de1WZU8P6c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/GLA+YGtwLmsHOGYvWQWzHEyOHeqeiUA2K6qFl/jreeDBpHgiqdSBEuk6dNIEOQz6T1E4v3MJCKl8m2ks9kaBA"}}, "unsigned": {"age_ts": 1570041424961}} Um:DR'c8 <T)}gk@ s H qFo Bi>  J u # w y N { P %e L # *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!beBXQofoOfxNBtzsut:localhost:8800U[*Q!beBXQofoOfxNBtzsut:localhost:8800SY*Q!beBXQofoOfxNBtzsut:localhost:8800PV*Q!bOSxzttDtclnrWnLov:localhost:8800g*Q!bOSxzttDtclnrWnLov:localhost:8800f*Q!bOSxzttDtclnrWnLov:localhost:8800e*Q!bOSxzttDtclnrWnLov:localhost:8800d*Q!bOSxzttDtclnrWnLov:localhost:8800c*Q!bOSxzttDtclnrWnLov:localhost:8800b*Q!bOSxzttDtclnrWnLov:localhost:8800a*Q!bOSxzttDtclnrWnLov:localhost:8800`*Q!bOSxzttDtclnrWnLov:localhost:8800_*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!biBIcqnGelHvLnpkOu:localhost:8800qc*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!beBXQofoOfxNBtzsut:localhost:8800W]*Q!beBXQofoOfxNBtzsut:localhost:8800Y_*Q!beBXQofoOfxNBtzsut:localhost:8800[a*Q!beBXQofoOfxNBtzsut:localhost:8800]c *Q!biBIcqnGelHvLnpkOu:localhost:8800vh*Q!biBIcqnGelHvLnpkOu:localhost:8800ug*Q!biBIcqnGelHvLnpkOu:localhost:8800tf*Q!biBIcqnGelHvLnpkOu:localhost:8800se*Q!biBIcqnGelHvLnpkOu:localhost:8800rd*Q!bjdLCdBwkKaihRIRFG:localhost:8800  6*Q!bjdLCdBwkKaihRIRFG:localhost:8800  5*Q!bjdLCdBwkKaihRIRFG:localhost:8800  4*Q!bjdLCdBwkKaihRIRFG:localhost:8800  3+*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! 8*Q!bjdLCdBwkKaihRIRFG:localhost:8800 7*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800 ~z v r n j fb^ZVRNJF=eeQ$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800<eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800;eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800:eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:88009eeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:88008eeQ$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:88007eeQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:88006eeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:88005eeQ$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:88004eeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:88003eeQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:88002eeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:88001eeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:88000eeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800/eeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800.eeQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800-eeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800,eeQ$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800+eeQ$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800*eeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800)eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800(eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800'eeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800&eeQ$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800%eeQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800$eeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800#eeQ$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800"eeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800!eeQ$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800 eeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800 5~^'ue"Kr#Y~ ^ N q  M3v O  ;xj<4<Q3 !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels6Q' !ZaOktTIVeRgBXxfubH:localhost:8800m.room.create!^Q']!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800 6Q' !ZWANpHlizyLrUiVvAm:localhost:8800m.room.create :Q/ !ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rules ?BQ? !ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibility @6Q' !ZOwibbprUCQrSJQCrx:localhost:8800m.room.create <<Q3 !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels L^Q']!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800 O^Q']!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800:Q/ !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rulesBQ? !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibility<Q3 !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_access6Q' !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.create<Q3 !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels^Q']!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800:Q/ !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rulesBQ? !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility<Q3 !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access6Q' !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.create<Q3 !ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels >^Q']!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800 A^Q']!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800 =^Q']!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-546:localhost:8829yBQ? !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.history_visibilityx:Q/ !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.join_rulesw<Q3 !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.power_levelsv^Q']!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800u6Q' !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.createt<<Q3 !ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels 6Q' !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.createZ<Q3 !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levelsI^Q']!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800H:Q/ !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rulesKBQ? !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilityN6Q' !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.createG?Q9 !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_aliasJEQ))!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800M<Q3 !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels^Q']!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800^Q']!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800:Q/ !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rulesBQ? !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibility<Q3 !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_access6Q' !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create<Q3 !ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels^Q']!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800^Q']!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800:Q/ !ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rulesBQ? !ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility^Q']!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800 BQ? !ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibility :Q/ !ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rules D zDW,eQa;$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 264, "stream_ordering": 1197}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg"], "prev_events": ["$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo"], "type": "m.room.member", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-243:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-243", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-243:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041430662, "hashes": {"sha256": "q2zns2xbEIC5LtkE7/OGGDqx4n2vLNm6uh4pJIZPK0I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbNCSKZD7A9CZmryWYVgcWIZ8Z1O/GoLKRNElCleXSsONOk19dwgAqf5+wTZhzj6YB8wYQTUcSkvsZfP4IFKDQ"}}, "unsigned": {"age_ts": 1570041430662}}+eQq$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "txn_id": "121", "stream_ordering": 1196}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw"], "type": "m.room.message", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041429320, "hashes": {"sha256": "NBCdEN7Ff9rj0aC2XnccGJfzTWCCkWyQAnes4ikiTXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Conm6DH9VX+dhO/CK5dO7pBpeeTziKhPyDN2RKJr3yGuLycL96of0VeWphGchOWSD4D+lehJBMap/Eym5WFjAg"}}, "unsigned": {"age_ts": 1570041429320}}O*eQa+$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1195}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk"], "type": "m.room.history_visibility", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041428817, "hashes": {"sha256": "AatzlEvrLZc2iQLUrKIo1/dlVZ+GpSgKCA0vioUksXc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s9OdNxmttwdrjeoqVq93KMvBM6k9+PEPcsVXcShDHSKTXe9/8CkprCkWc7kGTS93uBXV43aBGoEe3ypkTF3VDA"}}, "unsigned": {"age_ts": 1570041428817, "replaces_state": "$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU"}})eQm$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "txn_id": "120", "stream_ordering": 1194}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI"], "type": "m.room.message", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041428248, "hashes": {"sha256": "1gqr2SLYkGQRFacWo2E5ysHCHvHsqW6VyUmB9+usnik"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b732PWZ1xq/LBcz9NzfAeWCf57YnwJnfXRijpVvzmPyh+vVViHTfbtUOHg9umkAUPuBAE2Wew67AoKQKvgqLCA"}}, "unsigned": {"age_ts": 1570041428248}} ,NC 8 - { " p  e ZOD9.|#qf VTeL$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bssha256w "9_%cԢY&-=|"*VNeL$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwsha256X0VhR3wVW+~\VMeL$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6Esha256ΰnB~D=/]C_W^X?vTO̩VLeL$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIsha256X!"0SjPd?xCsAǰ[rVKeL$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8sha256&+⬌i1"7(s1Ž,n ?VJeL$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTosha256F|^K( [ 1FvC:VIeL$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAsha256|p?"k4TAsAm VHeL$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyEsha256-d(hj`js)oI%!VGeL$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcsha256~W9%~OA& N9% 7rjLVFeL$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucsha256  {]gR\EhrVEeL$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Esha2566}Zt[*HDS l˱VDeL$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYsha256|֏:y^b!&VCeL$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWksha256?ĀVZuUd;O/8 iVBeL$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerAsha256BAv1FZ{ ̢4 *FzVAeL$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUsha256d ӖhPg=bnx_XTq0EV@eL$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1ssha256D̅}>tA(fӳ7dDoR[k[V?eL$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEsha256pvӖ-!U?A_!V>eL$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQsha256yg]Ԟc{EAèݺbb DV=eL$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwsha256@0PkyMћ6)^ɹkوV<eL$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAssha256%m }xRI/% !U8Lx> V;eL$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hssha256rSP^DԇXe/+eYxu{V:eL$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhosha256R\hr>%w6V9eL$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUsha256/q ds?tBSpO0dhD,6,V8eL$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4sha256_jj8)@rI*AǞV7eL$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxksha256?3ac5azHŻ|QzgV6eL$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMsha256 .y0,SZgEeIV5eL$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4sha256HS@<":z\ڬ|MV4eL$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQsha256"sA:֙G?%9{0¾!8V3eL$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38sha2560.?V2{W9'*s2C ?V2eL$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMsha256v1d Hߦȗwr*^^V1eL$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1ksha256AcM,GlJGe lIݛ`AYV0eL$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Ygsha256(:9Ga1&A,Naa^zF8ՈV/eL$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcsha256BK`C e}TpgڵË< @_ V.eL$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgssha256}S2|CKjؖXΰ. V-eL$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcsha256Qz18]:TTHwV,eL$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwsha256.2/NeέҤ*K^ѰK 3[=,V+eL$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNosha256'1ղ/9-kt m&2zv=kV*eL$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwsha256%XF,GlmWV)eL$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLksha256EM nĥ^@tG_UɽyĹ T(xP(`8@`8pH X 0  h @  x P ( ` 8  p H pHX0hxP(h@ X00P'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 0('Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XNfwczePlyYFWLCaui:localhost:8800x'Q!YgaGPEraeLCqHQirin:localhost:8800>'Q!YgaGPEraeLCqHQirin:localhost:8800;'Q!YgaGPEraeLCqHQirin:localhost:8800:'Q!YgaGPEraeLCqHQirin:localhost:88009'Q!YgaGPEraeLCqHQirin:localhost:88008'Q!YgaGPEraeLCqHQirin:localhost:88007'Q!YgaGPEraeLCqHQirin:localhost:88006'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 R'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Q'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 P'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 O'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 N'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 M'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 L'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 f'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 e'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 d'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 c'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 b'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 a'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 `'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 _'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 ^'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 ]'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800 \\ q  o {5?@G\ De'Q ]$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkm.room.member!kwXxkGQFkaeenFTQJr:localhost:8800m0.m1@anon-20191002_181700-248:localhost:8800C e'Q  ]$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerAm.room.create!kwXxkGQFkaeenFTQJr:localhost:8800m(<m)@anon-20191002_181700-248:localhost:8800!Be)Q ] $ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUm.room.message!EMhFCPhwmnWVnjtXXM:localhost:8800 mm@anon-20191002_181700-246:localhost:8800 Ae'Q ] $RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sm.room.member!EMhFCPhwmnWVnjtXXM:localhost:8800 mm@anon-20191002_181700-247:localhost:8800!@e)Q ] $9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEm.room.message!EMhFCPhwmnWVnjtXXM:localhost:8800 mm@anon-20191002_181700-246:localhost:8800,?e?Q ]$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQm.room.history_visibility!EMhFCPhwmnWVnjtXXM:localhost:8800mm @anon-20191002_181700-246:localhost:8800!>e)Q ]$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwm.room.message!EMhFCPhwmnWVnjtXXM:localhost:8800m>mE@anon-20191002_181700-246:localhost:8800&=e3Q ]$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsm.room.guest_access!EMhFCPhwmnWVnjtXXM:localhost:8800mm@anon-20191002_181700-246:localhost:8800,<e?Q ]$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsm.room.history_visibility!EMhFCPhwmnWVnjtXXM:localhost:8800mm@anon-20191002_181700-246:localhost:8800$;e/Q ]$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhom.room.join_rules!EMhFCPhwmnWVnjtXXM:localhost:8800mmj@anon-20191002_181700-246:localhost:8800&:e3Q ]$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUm.room.power_levels!EMhFCPhwmnWVnjtXXM:localhost:8800mÃ#mÇ@anon-20191002_181700-246:localhost:8800 9e'Q ]$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4m.room.member!EMhFCPhwmnWVnjtXXM:localhost:8800m|zm}@anon-20191002_181700-246:localhost:88008 e'Q  ]$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxkm.room.create!EMhFCPhwmnWVnjtXXM:localhost:8800mmmp@anon-20191002_181700-246:localhost:8800 7e'Q ] $kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMm.room.member!GGXyLHdVXqhQjPRvac:localhost:8800 mFmH@anon-20191002_181700-245:localhost:8800!6e)Q ]$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4m.room.message!GGXyLHdVXqhQjPRvac:localhost:8800mA:mA>@anon-20191002_181700-244:localhost:8800!5e)Q ]$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQm.room.message!GGXyLHdVXqhQjPRvac:localhost:8800m9m9@anon-20191002_181700-244:localhost:8800&4e3Q ]$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38m.room.guest_access!GGXyLHdVXqhQjPRvac:localhost:8800m0+m1@anon-20191002_181700-244:localhost:8800,3e?Q ]$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMm.room.history_visibility!GGXyLHdVXqhQjPRvac:localhost:8800m Em$B@anon-20191002_181700-244:localhost:8800$2e/Q ]$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1km.room.join_rules!GGXyLHdVXqhQjPRvac:localhost:8800mm@anon-20191002_181700-244:localhost:8800&1e3Q ]$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Ygm.room.power_levels!GGXyLHdVXqhQjPRvac:localhost:8800mm;@anon-20191002_181700-244:localhost:8800 0e'Q ]$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcm.room.member!GGXyLHdVXqhQjPRvac:localhost:8800mm@anon-20191002_181700-244:localhost:8800/ e'Q  ]$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsm.room.create!GGXyLHdVXqhQjPRvac:localhost:8800m m @anon-20191002_181700-244:localhost:8800!.e)Q ] $0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcm.room.message!IfYYyzLHSOeyJBxBfn:localhost:8800 mm@anon-20191002_181700-242:localhost:8800 -e'Q ] $LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwm.room.member!IfYYyzLHSOeyJBxBfn:localhost:8800 mm@anon-20191002_181700-243:localhost:8800 a} { y w u sqomkigeca~teeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~seeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~reeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~qeeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~peeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~oeeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~neeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~meeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~leeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~keeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~jeeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~ieeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~heeQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~geeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800~feeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~eeeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~deeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~ceeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~beeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~aeeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~`eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~_eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~^eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~]eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~\eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~[eeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~ZeeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~YeeQ$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~XeeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800~WeeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~VeeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800  v k0eQac$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1201}{"auth_events": ["$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "type": "m.room.power_levels", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"users": {"@anon-20191002_181700-244:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041434522, "hashes": {"sha256": "nIMVithOlqgSlmehit84KERU0u7JRgwYDwI4cjQtHsg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xledTpGNlAyJOEy2F/w2/zSKEIrQ/+TE8AN2AIb47rDIK7w3mGkRhnYe/1VJwdvw9G/EDxa2M+94aVITWzXBCw"}}, "unsigned": {"age_ts": 1570041434522}}v/eQay$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1200}{"auth_events": ["$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs"], "prev_events": ["$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs"], "type": "m.room.member", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-244", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-244:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041433775, "hashes": {"sha256": "SFzRdoLU/dIYLmozWwtVAjzfAlbV3cVIu+tzLl8msIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iAwaH7oAPt+HCcpuXQXFxV+FVnlmDH1BpA18LA91dLRNeiIdvaJGE9RiBG3fqeZGSM5Y9TVg2pJnoajmwjEFCA"}}, "unsigned": {"age_ts": 1570041433775}}i.eQa_$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1199}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-244:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041433045, "hashes": {"sha256": "e++U0s7PBbw4M3rFdNYTDcj7erRkVbemZcJHBVeVOCU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Kgi83BKObzhRGtMckzzhNyU+9+B8QMlBEbnibM82QF0STM+6TnnzGH0+1ijVrIRYf0opv9XXaL0hQJmswqcDQ"}}, "unsigned": {"age_ts": 1570041433045}}-eQu$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "txn_id": "122", "stream_ordering": 1198}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw"], "type": "m.room.message", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"msgtype": "m.text", "body": "post_join"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041431516, "hashes": {"sha256": "uKDfbeIZ9T3vmTJDTif5H0J1Zlr2C7WE3EcqBUyAaY0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S/Q3r0RKGo2W3qFLyiyUnvux4U5GqzsdsVV3DQf54S91FcZdcoJNCA+GhgPi5yeql1UFPJ0CICceB45K+Zw+Dg"}}, "unsigned": {"age_ts": 1570041431516}} Li^0}O!vHd6 ~ R $ l >  Z , t F  b 4 |N j<V(rDi;W)-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-305:localhost:8800W-]@anon-20191002_181700-304:localhost:8800V-]@anon-20191002_181700-303:localhost:8800U-]@anon-20191002_181700-302:localhost:8800T-]@anon-20191002_181700-301:localhost:8800S-]@anon-20191002_181700-300:localhost:8800R*Y@anon-20191002_181700-2:localhost:8800+[@anon-20191002_181700-29:localhost:88001-]@anon-20191002_181700-299:localhost:8800Q-]@anon-20191002_181700-298:localhost:8800P-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:88007-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:88006-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800}-]@anon-20191002_181700-346:localhost:8800~-]@anon-20191002_181700-345:localhost:8800|-]@anon-20191002_181700-343:localhost:8800{-]@anon-20191002_181700-342:localhost:8800z-]@anon-20191002_181700-341:localhost:8800y+[@anon-20191002_181700-33:localhost:88005-]@anon-20191002_181700-339:localhost:8800x-]@anon-20191002_181700-338:localhost:8800w-]@anon-20191002_181700-337:localhost:8800v-]@anon-20191002_181700-336:localhost:8800u-]@anon-20191002_181700-335:localhost:8800t-]@anon-20191002_181700-334:localhost:8800s-]@anon-20191002_181700-333:localhost:8800r-]@anon-20191002_181700-332:localhost:8800q-]@anon-20191002_181700-331:localhost:8800p-]@anon-20191002_181700-330:localhost:8800o+[@anon-20191002_181700-32:localhost:88004-]@anon-20191002_181700-329:localhost:8800n-]@anon-20191002_181700-328:localhost:8800m-]@anon-20191002_181700-327:localhost:8800l-]@anon-20191002_181700-326:localhost:8800k-]@anon-20191002_181700-325:localhost:8800j-]@anon-20191002_181700-324:localhost:8800i-]@anon-20191002_181700-323:localhost:8800h-]@anon-20191002_181700-322:localhost:8800g-]@anon-20191002_181700-321:localhost:8800f-]@anon-20191002_181700-320:localhost:8800e+[@anon-20191002_181700-31:localhost:88003-]@anon-20191002_181700-319:localhost:8800d-]@anon-20191002_181700-318:localhost:8800c-]@anon-20191002_181700-317:localhost:8800b-]@anon-20191002_181700-316:localhost:8800a-]@anon-20191002_181700-315:localhost:8800`-]@anon-20191002_181700-314:localhost:8800_-]@anon-20191002_181700-312:localhost:8800^-]@anon-20191002_181700-311:localhost:8800]-]@anon-20191002_181700-310:localhost:8800\+[@anon-20191002_181700-30:localhost:88002-]@anon-20191002_181700-309:localhost:8800[-]@anon-20191002_181700-308:localhost:8800Z-]@anon-20191002_181700-307:localhost:8800Y-]@anon-20191002_181700-306:localhost:8800X Li^0}O!vHd6 ~ R $ l >  Z , t F  b 4 |N j<V(rDi;W)-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-305:localhost:8800W-]@anon-20191002_181700-304:localhost:8800V-]@anon-20191002_181700-303:localhost:8800U-]@anon-20191002_181700-302:localhost:8800T-]@anon-20191002_181700-301:localhost:8800S-]@anon-20191002_181700-300:localhost:8800R*Y@anon-20191002_181700-2:localhost:8800+[@anon-20191002_181700-29:localhost:88001-]@anon-20191002_181700-299:localhost:8800Q-]@anon-20191002_181700-298:localhost:8800P-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:88007-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:88006-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800}-]@anon-20191002_181700-346:localhost:8800~-]@anon-20191002_181700-345:localhost:8800|-]@anon-20191002_181700-343:localhost:8800{-]@anon-20191002_181700-342:localhost:8800z-]@anon-20191002_181700-341:localhost:8800y+[@anon-20191002_181700-33:localhost:88005-]@anon-20191002_181700-339:localhost:8800x-]@anon-20191002_181700-338:localhost:8800w-]@anon-20191002_181700-337:localhost:8800v-]@anon-20191002_181700-336:localhost:8800u-]@anon-20191002_181700-335:localhost:8800t-]@anon-20191002_181700-334:localhost:8800s-]@anon-20191002_181700-333:localhost:8800r-]@anon-20191002_181700-332:localhost:8800q-]@anon-20191002_181700-331:localhost:8800p-]@anon-20191002_181700-330:localhost:8800o+[@anon-20191002_181700-32:localhost:88004-]@anon-20191002_181700-329:localhost:8800n-]@anon-20191002_181700-328:localhost:8800m-]@anon-20191002_181700-327:localhost:8800l-]@anon-20191002_181700-326:localhost:8800k-]@anon-20191002_181700-325:localhost:8800j-]@anon-20191002_181700-324:localhost:8800i-]@anon-20191002_181700-323:localhost:8800h-]@anon-20191002_181700-322:localhost:8800g-]@anon-20191002_181700-321:localhost:8800f-]@anon-20191002_181700-320:localhost:8800e+[@anon-20191002_181700-31:localhost:88003-]@anon-20191002_181700-319:localhost:8800d-]@anon-20191002_181700-318:localhost:8800c-]@anon-20191002_181700-317:localhost:8800b-]@anon-20191002_181700-316:localhost:8800a-]@anon-20191002_181700-315:localhost:8800`-]@anon-20191002_181700-314:localhost:8800_-]@anon-20191002_181700-312:localhost:8800^-]@anon-20191002_181700-311:localhost:8800]-]@anon-20191002_181700-310:localhost:8800\+[@anon-20191002_181700-30:localhost:88002-]@anon-20191002_181700-309:localhost:8800[-]@anon-20191002_181700-308:localhost:8800Z-]@anon-20191002_181700-307:localhost:8800Y-]@anon-20191002_181700-306:localhost:8800X =w["Us: V  t ;  W  u <  X t;Y u<Z!v=w>\#8]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGS}8]!@anon-20191002_181700-324:localhost:8800KKATIXOBNF|8]!@anon-20191002_181700-323:localhost:8800BHOVENVWZC{8]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTz8]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCy8]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBx6[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC=8]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY8]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ8]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM8]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO8]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJ6[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKOB8]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRA8]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJ8]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXT8]!@anon-20191002_181700-366:localhost:8800FABJQITKMR8]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWO8]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTB8]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXF8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSUR8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJ8]!@anon-20191002_181700-360:localhost:8800XKNFVZJCRE6[!@anon-20191002_181700-35:localhost:8800EALQMPIKHOA8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBR8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILN8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERT8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFN8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJI8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKH8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRW8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMP8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFR8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAI6[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGA@8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYS8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZ8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYU8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROP8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHA8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML8]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP8]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW6[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKN?8]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH8]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD8]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQIS8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLI8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYY8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTU8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGP8]!@anon-20191002_181700-331:localhost:8800COONNUXFOL8]!@anon-20191002_181700-330:localhost:8800TFGJMHITUL6[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCB>8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLS8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUO8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHC8]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYT~ i  g5 4h i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAoh1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwoj1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQoi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5Qol1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQob1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3Grbcgoe1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAok1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAon1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgoa1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwod1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgoc1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgof1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwog PUX08`pH X 0  `8pH xh@ h@X p x h( 0 H ` @  8   P ( PxP('Q!ffijTnPMbTrDXHqOXf:localhost:8800h'Q!ffijTnPMbTrDXHqOXf:localhost:8800f'Q!ffijTnPMbTrDXHqOXf:localhost:8800d('Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800i'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800P'Q!ffijTnPMbTrDXHqOXf:localhost:8800g'Q!ffijTnPMbTrDXHqOXf:localhost:8800b'Q!fOJLpnbtgKNxxVDquX:localhost:8800j'Q!fsbkkRBZlUcBVVfMME:localhost:88008'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800m'Q!fOJLpnbtgKNxxVDquX:localhost:8800l'Q!fOJLpnbtgKNxxVDquX:localhost:8800k'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800 `'Q!fDISaqNBhlOwherxSt:localhost:8800 _'Q!ffijTnPMbTrDXHqOXf:localhost:8800i'Q!fdEymmlcUvjgshvVyl:localhost:8800 ('Q!fDISaqNBhlOwherxSt:localhost:8800 c'Q!fDISaqNBhlOwherxSt:localhost:8800 b'Q!fDISaqNBhlOwherxSt:localhost:8800 a'Q!ffijTnPMbTrDXHqOXf:localhost:8800k'Q!ffijTnPMbTrDXHqOXf:localhost:8800j'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800+'Q!fuHSJcznvGQnoYoLPW:localhost:8800*'Q!fuHSJcznvGQnoYoLPW:localhost:8800)'Q!fuHSJcznvGQnoYoLPW:localhost:8800('Q!fOJLpnbtgKNxxVDquX:localhost:8800h'Q!fOJLpnbtgKNxxVDquX:localhost:8800g'Q!fuHSJcznvGQnoYoLPW:localhost:8800,P'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 k'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 j'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fsbkkRBZlUcBVVfMME:localhost:8800='Q!fsbkkRBZlUcBVVfMME:localhost:8800<'Q!fsbkkRBZlUcBVVfMME:localhost:8800;'Q!fsbkkRBZlUcBVVfMME:localhost:8800:'Q!fsbkkRBZlUcBVVfMME:localhost:88009'Q!ffijTnPMbTrDXHqOXf:localhost:8800c'Q!ffijTnPMbTrDXHqOXf:localhost:8800e'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 ('Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800- Kf8 J ~ P " l >  X * v H  b 4 |N j<V(pB^0xxJd6~P$-]@anon-20191002_181700-322:localhost:8800v-]@anon-20191002_181700-274:localhost:88008-]@anon-20191002_181700-273:localhost:8800:-]@anon-20191002_181700-273:localhost:88007-]@anon-20191002_181700-272:localhost:88006-]@anon-20191002_181700-317:localhost:8800q-]@anon-20191002_181700-312:localhost:8800p-]@anon-20191002_181700-311:localhost:8800o-]@anon-20191002_181700-311:localhost:8800n-]@anon-20191002_181700-311:localhost:8800m-]@anon-20191002_181700-310:localhost:8800l+[@anon-20191002_181700-30:localhost:8800-]@anon-20191002_181700-308:localhost:8800k-]@anon-20191002_181700-307:localhost:8800j-]@anon-20191002_181700-306:localhost:8800i-]@anon-20191002_181700-305:localhost:8800h-]@anon-20191002_181700-305:localhost:8800g-]@anon-20191002_181700-304:localhost:8800f-]@anon-20191002_181700-304:localhost:8800e-]@anon-20191002_181700-303:localhost:8800d-]@anon-20191002_181700-303:localhost:8800c-]@anon-20191002_181700-302:localhost:8800b-]@anon-20191002_181700-302:localhost:8800a-]@anon-20191002_181700-301:localhost:8800`-]@anon-20191002_181700-301:localhost:8800_-]@anon-20191002_181700-300:localhost:8800^-]@anon-20191002_181700-300:localhost:8800]+[@anon-20191002_181700-29:localhost:8800-]@anon-20191002_181700-299:localhost:8800[-]@anon-20191002_181700-299:localhost:8800Y-]@anon-20191002_181700-298:localhost:8800X-]@anon-20191002_181700-298:localhost:8800W-]@anon-20191002_181700-297:localhost:8800V-]@anon-20191002_181700-297:localhost:8800U-]@anon-20191002_181700-296:localhost:8800T-]@anon-20191002_181700-296:localhost:8800S-]@anon-20191002_181700-295:localhost:8800R-]@anon-20191002_181700-295:localhost:8800Q-]@anon-20191002_181700-294:localhost:8800P-]@anon-20191002_181700-294:localhost:8800O-]@anon-20191002_181700-293:localhost:8800N-]@anon-20191002_181700-293:localhost:8800M-]@anon-20191002_181700-292:localhost:8800L-]@anon-20191002_181700-291:localhost:8800K-]@anon-20191002_181700-290:localhost:8800J+[@anon-20191002_181700-28:localhost:8800+[@anon-20191002_181700-28:localhost:8800-]@anon-20191002_181700-289:localhost:8800I-]@anon-20191002_181700-288:localhost:8800H-]@anon-20191002_181700-287:localhost:8800G-]@anon-20191002_181700-287:localhost:8800F-]@anon-20191002_181700-286:localhost:8800E-]@anon-20191002_181700-284:localhost:8800D-]@anon-20191002_181700-283:localhost:8800C-]@anon-20191002_181700-282:localhost:8800B-]@anon-20191002_181700-281:localhost:8800A-]@anon-20191002_181700-280:localhost:8800@+[@anon-20191002_181700-27:localhost:8800-]@anon-20191002_181700-279:localhost:8800?-]@anon-20191002_181700-277:localhost:8800>-]@anon-20191002_181700-276:localhost:8800=-]@anon-20191002_181700-275:localhost:88009-]@anon-20191002_181700-274:localhost:8800<-]@anon-20191002_181700-274:localhost:8800;-]@anon-20191002_181700-271:localhost:88003-]@anon-20191002_181700-270:localhost:88005-]@anon-20191002_181700-270:localhost:88004-]@anon-20191002_181700-270:localhost:88002-]@anon-20191002_181700-270:localhost:88001+[@anon-20191002_181700-26:localhost:8800-]@anon-20191002_181700-321:localhost:8800u-]@anon-20191002_181700-320:localhost:8800t+[@anon-20191002_181700-31:localhost:8800-]@anon-20191002_181700-319:localhost:8800s-]@anon-20191002_181700-318:localhost:8800r 7 ' &o- 2 = k Ydi'27 2Z  khgzeQ3 $nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels yeQ']$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800joinaxeQ' $zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create weQ']$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800joingueQ3 $sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_accessmveQ? $z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibilityeseQ/ $1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rulesgreQ3 $fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels qeQ']$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800joinapeQ' $2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create oeQ']$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800joinmneQ? $jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility aaeQ' $fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800m.room.create `eQ']$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800joinm_eQ? $JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibilityg^eQ3 $QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_accessgmeQ3 $0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_accesspekeQ/ $GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rulesgjeQ3 $L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels ieQ']$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800joinaheQ' $PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create geQ']$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800joingfeQ3 $MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_accessmeeQ? $dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibilityedeQ/ $QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rulesgceQ3 $KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels beQ']$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800join "*L K V  0 ;@d,NY^o}Q? ey!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0g|Q/ ex!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rules$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8i{Q3 ew!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew zQ']ev!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8cyQ' eu!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g xQ']et!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wiwQ3 es!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_access$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4ovQ? er!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibility$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AguQ/ eq!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rules$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkitQ3 ep!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo sQ']eo!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwcrQ' en!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E qQ']em!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8opQ? el!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAioQ3 ek!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_access$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBconQ? ej!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucgmQ/ ei!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rules$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7EilQ3 eh!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY kQ']eg!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkcjQ' ef!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA iQ']ee!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sohQ? ed!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQigQ3 ec!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_access$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsofQ? eb!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5HsgeQ/ ea!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rules$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoidQ3 e`!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU cQ']e_!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4cbQ' e^!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk aQ']e]!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMo`Q? e\!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility$OC1oFZ4uuSXshsXR3huYiKBYsaTA1gL0P6dcIqnAfwAi_Q3 e[!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_access$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38o^Q? eZ!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMg]Q/ eY!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rules$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1ki\Q3 eX!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg  4eQm$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "txn_id": "123", "stream_ordering": 1205}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38"], "type": "m.room.message", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041444828, "hashes": {"sha256": "vef5ZZjDU2VAiGARSRyG7tUSSi5xE6JY53m2RYM23uk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w0P0LJBMmvLwXhVPgyBU2X4byuPwcV1Rbb3HWClWtO+owdnO9KCxvT3ZAgo5dKH+zkgkEJrTC+002w081GWJCw"}}, "unsigned": {"age_ts": 1570041444828}}{3eQa$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1204}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM"], "type": "m.room.guest_access", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041442347, "hashes": {"sha256": "phmua075hnaXa6WS/fyqL5uzV3ooX1PzXRm2uf/nRb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9mvhuHOYW4WrKKY1g+3VLY0RZXnBBkzj2WeYaUEcQi0CsmAELDEkUc6VSNoaUO/8ex4quPj/aC9KsFCUoWgWCg"}}, "unsigned": {"age_ts": 1570041442347}}2eQa$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1203}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k"], "type": "m.room.history_visibility", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041438277, "hashes": {"sha256": "KCWENwXo4LEqCXqVI6GRX2wzbWtfPjkW1LP8vurpLgM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KBDNC/veqRwCUbQ1tEMY+sNLugsVrt17wJx1n6/bdYhv5GzQIVaGLKOr5NHsvjY9lJbgAk+1Iku74nnNStkCQ"}}, "unsigned": {"age_ts": 1570041438277}}t1eQau$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1202}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg"], "type": "m.room.join_rules", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041436444, "hashes": {"sha256": "8e5cKS4bSxFCqGevW4NnZgexrHPyq7TuzDkSAHMQwik"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ffG7LbSJ1mfnFpNWn+FyIbWZdpK/H7KvXbZ5nguNf7imBKjQF9nWo2oskCppxZQpAJ9FrX2PvlQaH3BeVoDECw"}}, "unsigned": {"age_ts": 1570041436444}} M v O N U $8 T \ * p | J Db0"  h6I(>nZ< j uC{   1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU [1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V4031e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0c1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs]1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY 1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4e1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNou1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwf1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM51e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoq0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM@1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0B1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg;1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80I1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUp1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U&1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwy1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEt1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMH1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qr1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U o1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q ]1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A g 1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU=1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo -1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU C1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ )1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw #1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc121e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo M v O N U $8 T \ * p | J Db0"  h6I(>nZ< j uC{   1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU [1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V4031e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0c1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs]1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY 1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4e1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNou1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwf1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM51e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoq0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM@1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0B1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg;1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80I1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUp1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U&1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwy1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEt1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMH1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qr1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U o1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q ]1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A g 1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU71e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo -1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU C1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ )1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw #1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc121e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo WK & d ^ , } ?  w k9 K ESr@  xYGqM Q j8_-(!2 1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0L1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo /1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgJ1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ 1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY e0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEw1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY 1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQN1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgo1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg(1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUO1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4T1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A11e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdco0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw21e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8l1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sS1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAZ0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw11e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM)1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygu0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF021e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM:1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew T1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU 1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsx1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkE1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU:1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA>0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw7 21e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0A1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQQ1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68A1e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE z1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg v 21e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI 1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5El21e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQT1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk 1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE741e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sks1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8P0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcL1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y  Dj8p> v D  | J  P  V $ \ *b0h6n< tBzHN1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 31e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o g1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMB1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c71e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I )1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 31e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 21e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cB1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8x1e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIe1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4T1e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 B1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI11e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI;1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 71e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8.1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4f1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs|1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE21e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sx1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wk1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUp1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM 1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U e1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g \ 7 x7v8eQay$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1209}{"auth_events": ["$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk"], "prev_events": ["$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk"], "type": "m.room.member", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-246", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-246:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041461882, "hashes": {"sha256": "0944A6KoG2PZ1SKGmFgwM8I61U8Za+cKPviz1TYOeR0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q+PyCe+LIPYDBqjmwSPIDbZ5H5O387MRNpdjNfxirF92fxr1Ba9fxud10JFBGj0tur1HfO2blVJIAfhsD4GMDQ"}}, "unsigned": {"age_ts": 1570041461882}}i7eQa_$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1208}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-246:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041458164, "hashes": {"sha256": "Rq7eRXGfu2s+V6VK10hQCZOPcxHEeMf+IuCaPLCPqjk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PyHx0Zyd/60rkpBmsx6HTmecc42vpewzWmB56gPfLJiJmgV93b1zgdhL57L/rw9HW2CFNRYxB0vrdz3tA/MNAA"}}, "unsigned": {"age_ts": 1570041458164}}V6eQa9$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 266, "stream_ordering": 1207}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k"], "prev_events": ["$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4"], "type": "m.room.member", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-245:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-245", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-245:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041448178, "hashes": {"sha256": "8/RG6sqnwX+eWMhca+uScpahzBiM3LWat1ZBfsLCMbE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MNUd4kevTNwxuIjxAvK36VgUSx68mmdan8L8iICto5oDOW7ipbePj1bn7bjW+cSHm9aNRS5BcMKsGv3lVxM4Aw"}}, "unsigned": {"age_ts": 1570041448178}}5eQq$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "txn_id": "124", "stream_ordering": 1206}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ"], "type": "m.room.message", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041446714, "hashes": {"sha256": "vJpplFcYmk4mKbN4J+G2WFJdUFfoGUCYO+QqmoJ7Yms"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RlNnDahO1Yy/cdBlLIS90URVRMfTnhgopZIeGUxP6hZhG34JXat28rx2SbaXSewQ2bgbIqlP+AUJuQXwPUdZBg"}}, "unsigned": {"age_ts": 1570041446714}} OU " n A  ` 3 0 S &rFe8 }C]Q$pX+wJyLj=k> _ 2   ho,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 +Q !SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  +Q !TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !THHfVSOSWiBQTHRAnJ:localhost:8800,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!THHfVSOSWiBQTHRAnJ:localhost:8800 +Q !TcCLuIBUrtFqghDgay:localhost:8800GG,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !TeraguiGoZoeOGFzlI:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800+Q !TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TWETXUgfFZafDdbqLS:localhost:880055,Q!TWETXUgfFZafDdbqLS:localhost:880044,Q!TWETXUgfFZafDdbqLS:localhost:880033,Q!TWETXUgfFZafDdbqLS:localhost:880022,Q!TWETXUgfFZafDdbqLS:localhost:880011,Q!TWETXUgfFZafDdbqLS:localhost:880000,Q!TWETXUgfFZafDdbqLS:localhost:8800//+Q !TWETXUgfFZafDdbqLS:localhost:8800..,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800+Q !SyIWYOmcGiASNkPCTB:localhost:8800,Q!SvKwEALYoNreUvqAlp:localhost:8800vv,Q!SvKwEALYoNreUvqAlp:localhost:8800uu,Q!SvKwEALYoNreUvqAlp:localhost:8800tt,Q!SvKwEALYoNreUvqAlp:localhost:8800ss,Q!SvKwEALYoNreUvqAlp:localhost:8800rr,Q!SvKwEALYoNreUvqAlp:localhost:8800qq,Q!SvKwEALYoNreUvqAlp:localhost:8800pp+Q !SvKwEALYoNreUvqAlp:localhost:8800oo,Q!StEnDjTJToXKXsOHNf:localhost:8829,Q!SrMQpDMFREKRMELwbL:localhost:8800=,Q!SrMQpDMFREKRMELwbL:localhost:8800<,Q!SrMQpDMFREKRMELwbL:localhost:8800;,Q!SrMQpDMFREKRMELwbL:localhost:8800:,Q!SrMQpDMFREKRMELwbL:localhost:88009,Q!SrMQpDMFREKRMELwbL:localhost:88008,Q!SrMQpDMFREKRMELwbL:localhost:88007,Q!SrMQpDMFREKRMELwbL:localhost:88006,Q!SrMQpDMFREKRMELwbL:localhost:88005,Q!SrMQpDMFREKRMELwbL:localhost:88004,Q!SrMQpDMFREKRMELwbL:localhost:88003,Q!SrMQpDMFREKRMELwbL:localhost:88002,Q!SrMQpDMFREKRMELwbL:localhost:88001\,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800+Q !TkluVzxeeCbMtbFWWS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800jj,Q!TlJCaYlCkOOVzFDlLx:localhost:8800ii+Q !TlJCaYlCkOOVzFDlLx:localhost:8800hh,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TcCLuIBUrtFqghDgay:localhost:8800LL,Q!TcCLuIBUrtFqghDgay:localhost:8800KK,Q!TcCLuIBUrtFqghDgay:localhost:8800JJ,Q!TcCLuIBUrtFqghDgay:localhost:8800II,Q!TcCLuIBUrtFqghDgay:localhost:8800HH OU " n A  ` 3 0 S &rFe8 }C]Q$pX+wJyLj=k> _ 2   ho,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 +Q !SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  +Q !TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !THHfVSOSWiBQTHRAnJ:localhost:8800,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!THHfVSOSWiBQTHRAnJ:localhost:8800 +Q !TcCLuIBUrtFqghDgay:localhost:8800GG,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !TeraguiGoZoeOGFzlI:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800+Q !TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TWETXUgfFZafDdbqLS:localhost:880055,Q!TWETXUgfFZafDdbqLS:localhost:880044,Q!TWETXUgfFZafDdbqLS:localhost:880033,Q!TWETXUgfFZafDdbqLS:localhost:880022,Q!TWETXUgfFZafDdbqLS:localhost:880011,Q!TWETXUgfFZafDdbqLS:localhost:880000,Q!TWETXUgfFZafDdbqLS:localhost:8800//+Q !TWETXUgfFZafDdbqLS:localhost:8800..,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800+Q !SyIWYOmcGiASNkPCTB:localhost:8800,Q!SvKwEALYoNreUvqAlp:localhost:8800vv,Q!SvKwEALYoNreUvqAlp:localhost:8800uu,Q!SvKwEALYoNreUvqAlp:localhost:8800tt,Q!SvKwEALYoNreUvqAlp:localhost:8800ss,Q!SvKwEALYoNreUvqAlp:localhost:8800rr,Q!SvKwEALYoNreUvqAlp:localhost:8800qq,Q!SvKwEALYoNreUvqAlp:localhost:8800pp+Q !SvKwEALYoNreUvqAlp:localhost:8800oo,Q!StEnDjTJToXKXsOHNf:localhost:8829,Q!SrMQpDMFREKRMELwbL:localhost:8800=,Q!SrMQpDMFREKRMELwbL:localhost:8800<,Q!SrMQpDMFREKRMELwbL:localhost:8800;,Q!SrMQpDMFREKRMELwbL:localhost:8800:,Q!SrMQpDMFREKRMELwbL:localhost:88009,Q!SrMQpDMFREKRMELwbL:localhost:88008,Q!SrMQpDMFREKRMELwbL:localhost:88007,Q!SrMQpDMFREKRMELwbL:localhost:88006,Q!SrMQpDMFREKRMELwbL:localhost:88005,Q!SrMQpDMFREKRMELwbL:localhost:88004,Q!SrMQpDMFREKRMELwbL:localhost:88003,Q!SrMQpDMFREKRMELwbL:localhost:88002,Q!SrMQpDMFREKRMELwbL:localhost:88001\,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800+Q !TkluVzxeeCbMtbFWWS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800jj,Q!TlJCaYlCkOOVzFDlLx:localhost:8800ii+Q !TlJCaYlCkOOVzFDlLx:localhost:8800hh,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TcCLuIBUrtFqghDgay:localhost:8800LL,Q!TcCLuIBUrtFqghDgay:localhost:8800KK,Q!TcCLuIBUrtFqghDgay:localhost:8800JJ,Q!TcCLuIBUrtFqghDgay:localhost:8800II,Q!TcCLuIBUrtFqghDgay:localhost:8800HH + `  @h Hp(P x 0 p(PxGo'Ow X  8  EN]=@anon-20191002_181700-284:localhost:8800anon-20191002_181700-284EM]=@anon-20191002_181700-283:localhost:8800anon-20191002_181700-283EL]=@anon-20191002_181700-282:localhost:8800anon-20191002_181700-282EK]=@anon-20191002_181700-281:localhost:8800anon-20191002_181700-281EJ]=@anon-20191002_181700-280:localhost:8800anon-20191002_181700-280EI]=@anon-20191002_181700-279:localhost:8800anon-20191002_181700-279EH]=@anon-20191002_181700-277:localhost:8800anon-20191002_181700-277EG]=@anon-20191002_181700-276:localhost:8800anon-20191002_181700-276EF]=@anon-20191002_181700-273:localhost:8800anon-20191002_181700-273VE]%G@anon-20191002_181700-272:localhost:8800Display Namehttp://example.com/avatar.pngED]=@anon-20191002_181700-271:localhost:8800anon-20191002_181700-271EB]=@anon-20191002_181700-269:localhost:8800anon-20191002_181700-269EA]=@anon-20191002_181700-268:localhost:8800anon-20191002_181700-268EC]=@anon-20191002_181700-270:localhost:8800anon-20191002_181700-270E?]=@anon-20191002_181700-265:localhost:8800anon-20191002_181700-265E>]=@anon-20191002_181700-264:localhost:8800anon-20191002_181700-264E=]=@anon-20191002_181700-263:localhost:8800anon-20191002_181700-263E<]=@anon-20191002_181700-261:localhost:8800anon-20191002_181700-261E;]=@anon-20191002_181700-259:localhost:8800anon-20191002_181700-259E/]=@anon-20191002_181700-244:localhost:8800anon-20191002_181700-244E.]=@anon-20191002_181700-243:localhost:8800anon-20191002_181700-243E-]=@anon-20191002_181700-242:localhost:8800anon-20191002_181700-242E,]=@anon-20191002_181700-240:localhost:8800anon-20191002_181700-240E+]=@anon-20191002_181700-238:localhost:8800anon-20191002_181700-238E*]=@anon-20191002_181700-237:localhost:8800anon-20191002_181700-237E)]=@anon-20191002_181700-236:localhost:8800anon-20191002_181700-236E(]=@anon-20191002_181700-234:localhost:8800anon-20191002_181700-234E']=@anon-20191002_181700-232:localhost:8800anon-20191002_181700-232E&]=@anon-20191002_181700-231:localhost:8800anon-20191002_181700-231E%]=@anon-20191002_181700-228:localhost:8800anon-20191002_181700-228E$]=@anon-20191002_181700-226:localhost:8800anon-20191002_181700-226E#]=@anon-20191002_181700-224:localhost:8800anon-20191002_181700-224@E:]=@anon-20191002_181700-257:localhost:8800anon-20191002_181700-257E9]=@anon-20191002_181700-254:localhost:8800anon-20191002_181700-254E8]=@anon-20191002_181700-253:localhost:8800anon-20191002_181700-253E7]=@anon-20191002_181700-252:localhost:8800anon-20191002_181700-252E6]=@anon-20191002_181700-251:localhost:8800anon-20191002_181700-251E5]=@anon-20191002_181700-250:localhost:8800anon-20191002_181700-250E4]=@anon-20191002_181700-249:localhost:8800anon-20191002_181700-249E3]=@anon-20191002_181700-248:localhost:8800anon-20191002_181700-248E2]=@anon-20191002_181700-247:localhost:8800anon-20191002_181700-247E1]=@anon-20191002_181700-246:localhost:8800anon-20191002_181700-246E0]=@anon-20191002_181700-245:localhost:8800anon-20191002_181700-245 ?CJ Q  X  c ' i - o 3v:}AG JO_`f*9 ]@anon-20191002_181700-280:localhost:8800a&\> ]  @anon-20191002_181700-279:localhost:8800m&\$9 ]@anon-20191002_181700-279:localhost:8800a&\> ]  @anon-20191002_181700-277:localhost:8800m&\99 ]@anon-20191002_181700-278:localhost:8800a&\9 ]@anon-20191002_181700-277:localhost:8800a&\> ]  @anon-20191002_181700-276:localhost:8800m&\99 ]@anon-20191002_181700-276:localhost:8800a&\> ]@anon-20191002_181700-274:localhost:8800m&\= ]  @anon-20191002_181700-273:localhost:8800m&\? ]  @anon-20191002_181700-272:localhost:8800m&\9 ]@anon-20191002_181700-275:localhost:8800a&\9 ]@anon-20191002_181700-274:localhost:8800a&\9 ]@anon-20191002_181700-272:localhost:8800a&\9 ]@anon-20191002_181700-273:localhost:8800a&\? ] @anon-20191002_181700-270:localhost:8800m&\ !> ] @anon-20191002_181700-271:localhost:8800m&\X9 ]@anon-20191002_181700-270:localhost:8800a&\9 ]@anon-20191002_181700-271:localhost:8800a&\= ]  @anon-20191002_181700-269:localhost:8800m&\V= ]  @anon-20191002_181700-268:localhost:8800m&\V> ] @anon-20191002_181700-267:localhost:8800m&\9 ]@anon-20191002_181700-269:localhost:8800a&\9 ]@anon-20191002_181700-268:localhost:8800a&\9 ]@anon-20191002_181700-267:localhost:8800a&\>~ ]@anon-20191002_181700-266:localhost:8800m&\#>} ] @anon-20191002_181700-265:localhost:8800m&\9| ]@anon-20191002_181700-266:localhost:8800a&\9{ ]@anon-20191002_181700-265:localhost:8800a&\=z ]  @anon-20191002_181700-264:localhost:8800m&\V>y ]  @anon-20191002_181700-263:localhost:8800m&\09x ]@anon-20191002_181700-264:localhost:8800a&\9w ]@anon-20191002_181700-263:localhost:8800a&\=v ] @anon-20191002_181700-262:localhost:8800m&\V>u ]  @anon-20191002_181700-261:localhost:8800m&\9t ]@anon-20191002_181700-262:localhost:8800a&\9s ]@anon-20191002_181700-261:localhost:8800a&\>r ]@anon-20191002_181700-260:localhost:8800m&\>q ]  @anon-20191002_181700-259:localhost:8800m&\09p ]@anon-20191002_181700-260:localhost:8800a&\9o ]@anon-20191002_181700-259:localhost:8800a&\>n ]@anon-20191002_181700-258:localhost:8800m&\>m ]  @anon-20191002_181700-257:localhost:8800m&\09l ]@anon-20191002_181700-258:localhost:8800a&\9k ]@anon-20191002_181700-257:localhost:8800a&\>j ]  @anon-20191002_181700-254:localhost:8800m&\a9i ]@anon-20191002_181700-255:localhost:8800a&\9h ]@anon-20191002_181700-254:localhost:8800a&\=g ]  @anon-20191002_181700-253:localhost:8800m&\W>f ]  @anon-20191002_181700-252:localhost:8800m&\ !9e ]@anon-20191002_181700-253:localhost:8800a&\9d ]@anon-20191002_181700-252:localhost:8800a&\=c ]  @anon-20191002_181700-251:localhost:8800m&\V>b ]  @anon-20191002_181700-250:localhost:8800m&\ 9a ]@anon-20191002_181700-251:localhost:8800a&\9` ]@anon-20191002_181700-250:localhost:8800a&\=_ ]  @anon-20191002_181700-249:localhost:8800m&\W>^ ]  @anon-20191002_181700-248:localhost:8800m&\ [9] ]@anon-20191002_181700-249:localhost:8800a&\9\ ]@anon-20191002_181700-248:localhost:8800a&\=[ ]  @anon-20191002_181700-247:localhost:8800m&\W>Z ]  @anon-20191002_181700-246:localhost:8800m&\ \9Y ]@anon-20191002_181700-246:localhost:8800a&\ Y T)}R'FoDe: { P % y N # w L ! u J  s H qmBk@i>g<c8 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SpXEytywhTbAftyVBr:localhost:880099*Q!SpXEytywhTbAftyVBr:localhost:880088*Q!SpXEytywhTbAftyVBr:localhost:880077*Q!SpXEytywhTbAftyVBr:localhost:880066*Q!SpXEytywhTbAftyVBr:localhost:880055*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SfYtaUhCFosNfHfUVm:localhost:8800nn*Q!SfYtaUhCFosNfHfUVm:localhost:8800mm*Q!SfYtaUhCFosNfHfUVm:localhost:8800kk*Q!SfYtaUhCFosNfHfUVm:localhost:8800ii*Q!SfYtaUhCFosNfHfUVm:localhost:8800gg*Q!SfYtaUhCFosNfHfUVm:localhost:8800ee*Q!SfYtaUhCFosNfHfUVm:localhost:8800cc*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 "= c f  u 3 Yhq />Go. QeQ']$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800aPeQ' $IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800m.room.create OeQ']$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800mNeQ? $sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilitymMeQ? $9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilitymLeQ? $kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilitymKeQ? $qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilityeJeQ/ $wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rulesgIeQ3 $9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels HeQ']$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800aGeQ' $kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create FeQ']$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800gEeQ3 $WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_accessmDeQ? $GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibilityeCeQ/ $tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rulesgBeQ3 $nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels AeQ']$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800a@eQ' $zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create ?eQ']$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800m>eQ? $z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibilityg=eQ3 $sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_accessm<eQ? $9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibilitye;eQ/ $1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rulesg:eQ3 $fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels 9eQ']$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800a8eQ' $2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create 7eQ']$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800m6eQ? $jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibilityg5eQ3 $0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_accessm4eQ? $nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibilitye3eQ/ $GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rulesg2eQ3 $L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels 1eQ']$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800a0eQ' $PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create  {<eQa$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1213}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs"], "type": "m.room.guest_access", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041494558, "hashes": {"sha256": "NYOkmOM5lmZ6sICa8dvuxpoIGn7GAZqw4RIvL3cerOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lLpD1Ng8S0h1gH9yDGy2s1hfh4e0Vj1yG7ISqxQJxfMKlSOjybSz2wFlUlRU0YZhav55sc0K9H6R2A5ONh0yCA"}}, "unsigned": {"age_ts": 1570041494558}};eQa$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1212}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho"], "type": "m.room.history_visibility", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041490358, "hashes": {"sha256": "hmkVi4gTwA6HTDPtDJ2olhH3T4lxkbKtcv4w2qhFUYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WKRKJ0Sc7BdrCM8+Lc8/ng6OMTNalKN6LWcieB7AbLa64B9mI/+UTZxK4HKnKAY5vvNS486sozuQUlY2m0ByBw"}}, "unsigned": {"age_ts": 1570041490358}}t:eQau$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1211}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU"], "type": "m.room.join_rules", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041485027, "hashes": {"sha256": "UxGWt1NEOj1EmOiKpvZDEK9OdmeZ6zcWBAlOaPWoasU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "942E/GLeRT38G+J6VWV3b+9E3BIS6JqJ6lXqky1STJt0cDf0I0II+R1dNf9rhYbhUyGV0QVhQLztv6+8bCemBw"}}, "unsigned": {"age_ts": 1570041485027}}k9eQac$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1210}{"auth_events": ["$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "type": "m.room.power_levels", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"users": {"@anon-20191002_181700-246:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041463587, "hashes": {"sha256": "mV4ee50Ww6RtML/AICCfAoDE2Xq6Nz+0J7EEvMe42gI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zUZUioZJiOqg5hTyiS/6RiwUn+rbUmkKCh8w8u8dpUX2D5wV5zTRwz1Rro+eEVrHkbGYqlDAS4/9pu/6cYKmAw"}}, "unsigned": {"age_ts": 1570041463587}} >CG K O  S  W  [ _ c$g(k,o0s4w8{<<~]!@anon-20191002_181700-288:localhost:8800BKSOCJCTFTm4<}]!@anon-20191002_181700-287:localhost:8800UVZQFXTZFVm4<|]!@anon-20191002_181700-286:localhost:8800SFUJRXTQDYm4<{]!@anon-20191002_181700-285:localhost:8800RKYDKAHKAAm4e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1se1=e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEd1<e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQd1;e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwc1:e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsc19e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsb18e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoa -l/ V   E u 8 [  a %k(QI|<)KKKKKKKKKRQ'E!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455 =]Q'[!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800:Q/ !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rulesBQ? !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibility6Q' !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.create?Q9 !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_aliasEQ))!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels ^Q']!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800 RQ'E!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455 :Q/ !OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules BQ? !OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibility 6Q' !OJilSqnQvLgoXSqRaW:localhost:8800m.room.create <Q3 !OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels U^Q']!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800 T:Q/ !OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rules VBQ? !OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibility W6Q' !OCEHAjcOXWNyWIESIS:localhost:8800m.room.create SEQ))!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800 X<Q3 !OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels^Q']!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800^Q']!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-129:localhost:8800:Q/ !OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rulesBQ? !OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibility6Q' !OBWkjfrDCNgYFfblia:localhost:8800m.room.create?Q9 !OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_aliasEQ))!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800<Q3 !NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels^Q']!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800:Q/ !NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rulesBQ? !NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility<Q3 !NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access6Q' !NrxQuziwSWzsHuXIlG:localhost:8800m.room.create;Q3 !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levelsi\Q'[!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800h9Q/ !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rulesjAQ? !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibilityk5Q' !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.createg^Q']!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800 6Q' !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create K<Q3 !NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels-^Q']!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800,<Q3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels BQ? !NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility z:Q/ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules Tc l !   BENvc#,/ThRQ/ e!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rules$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpImQQ9 e!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_alias$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwjPQ3 e!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg OQ']e!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMdNQ' e!FAYqpziHeVZugCGaij:localhost:8800m.room.create$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo MQ']e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QELQ? ee!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAKQ? ee!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08JQ? ee!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0pIQ? e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0hHQ/ e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rules$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8jGQ3 e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew FQ']e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8dEQ' e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g DQ']e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wjCQ3 e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_access$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4pBQ? e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibility$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AhAQ/ e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rules$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkj@Q3 e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo ?Q']e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwd>Q' e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E =Q']e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8<Q? ee!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucj;Q3 e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_access$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcp:Q? e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuch9Q/ e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rules$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Ej8Q3 e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY 7Q']e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkd6Q' e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA 5Q']e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s4Q? ee!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsj3Q3 e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_access$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs -RM H C > 9 4/*|%w rmhc TpQe!FAYqpziHeVZugCGaij:localhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIToQe!FAYqpziHeVZugCGaij:localhost:8800$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcTnQe!FAYqpziHeVZugCGaij:localhost:8800$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpITmQe!FAYqpziHeVZugCGaij:localhost:8800$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwTlQe!FAYqpziHeVZugCGaij:localhost:8800$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgTkQe!FAYqpziHeVZugCGaij:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMTjQe!FAYqpziHeVZugCGaij:localhost:8800$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoTiQe!ZaOktTIVeRgBXxfubH:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEThQe!ZaOktTIVeRgBXxfubH:localhost:8800$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruITgQe!ZaOktTIVeRgBXxfubH:localhost:8800$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MTfQe!ZaOktTIVeRgBXxfubH:localhost:8800$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGETeQe!ZaOktTIVeRgBXxfubH:localhost:8800$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwATdQe!ZaOktTIVeRgBXxfubH:localhost:8800$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMTcQe!ZaOktTIVeRgBXxfubH:localhost:8800$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08TbQe!ZaOktTIVeRgBXxfubH:localhost:8800$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0TaQe!ZaOktTIVeRgBXxfubH:localhost:8800$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8T`Qe!ZaOktTIVeRgBXxfubH:localhost:8800$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewT_Qe!ZaOktTIVeRgBXxfubH:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8T^Qe!ZaOktTIVeRgBXxfubH:localhost:8800$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gT]Qe!ZaltdIYVZjCHsCWTZD:localhost:8800$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAT\Qe!ZaltdIYVZjCHsCWTZD:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wT[Qe!ZaltdIYVZjCHsCWTZD:localhost:8800$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsTZQe!ZaltdIYVZjCHsCWTZD:localhost:8800$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4TYQe!ZaltdIYVZjCHsCWTZD:localhost:8800$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4TXQe!ZaltdIYVZjCHsCWTZD:localhost:8800$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_ATWQe!ZaltdIYVZjCHsCWTZD:localhost:8800$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkTVQe!ZaltdIYVZjCHsCWTZD:localhost:8800$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoTUQe!ZaltdIYVZjCHsCWTZD:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwTTQe!ZaltdIYVZjCHsCWTZD:localhost:8800$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6ETSQe!kwXxkGQFkaeenFTQJr:localhost:8800$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnITRQe!kwXxkGQFkaeenFTQJr:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8TQQe!kwXxkGQFkaeenFTQJr:localhost:8800$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnToTPQe!kwXxkGQFkaeenFTQJr:localhost:8800$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhATOQe!kwXxkGQFkaeenFTQJr:localhost:8800$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyETNQe!kwXxkGQFkaeenFTQJr:localhost:8800$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcTMQe!kwXxkGQFkaeenFTQJr:localhost:8800$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucTLQe!kwXxkGQFkaeenFTQJr:localhost:8800$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7ETKQe!kwXxkGQFkaeenFTQJr:localhost:8800$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYTJQe!kwXxkGQFkaeenFTQJr:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkTIQe!kwXxkGQFkaeenFTQJr:localhost:8800$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerATHQe!EMhFCPhwmnWVnjtXXM:localhost:8800$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUTGQe!EMhFCPhwmnWVnjtXXM:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sTFQe!EMhFCPhwmnWVnjtXXM:localhost:8800$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyETEQe!EMhFCPhwmnWVnjtXXM:localhost:8800$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQTDQe!EMhFCPhwmnWVnjtXXM:localhost:8800$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw K z&KW@eQa;$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 267, "stream_ordering": 1217}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho"], "prev_events": ["$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE"], "type": "m.room.member", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-247:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-247", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-247:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041500849, "hashes": {"sha256": "dfaJncwNpozm8pjNshu2tAXfFHu8I0eiIqah3k9nM3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eH8TjkRr+VCO70eenD/gre+GmiENIhnxCaTNJFDc6kt/1o3dEoY5sH481OmAmNu5JqAsvWHfJdyn1cFsO9KvBQ"}}, "unsigned": {"age_ts": 1570041500849}}?eQq$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "txn_id": "126", "stream_ordering": 1216}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ"], "type": "m.room.message", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041499531, "hashes": {"sha256": "eholfpYsBp+MCltKXuwWLbtrUMe96YesmQuFwdWOwhY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g5NixqyGrerbIrxQp6wzxG0N4ZhYZWxOSrV3+GU7zEWIFa/SDWGneZcE8FFUWgAkkvnGP/BADHsl1URemvgUDg"}}, "unsigned": {"age_ts": 1570041499531}}H>eQa$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1215}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw"], "type": "m.room.history_visibility", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041497822, "hashes": {"sha256": "Tvb7aidFAbvDappfDDnAkJcemXVbFufP/wRrCjNdwPg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q6AowOC1U+39LInKGih+/R4BwZTTiQiNhZBGLrt26e/SRJyxD94YjJ5b7CxpsiFv2kZB7mXZ0FEQTlQc05xCAA"}}, "unsigned": {"age_ts": 1570041497822, "replaces_state": "$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs"}}=eQm$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "txn_id": "125", "stream_ordering": 1214}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs"], "type": "m.room.message", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041496126, "hashes": {"sha256": "Fdre97WmhdD3VBdrFSQuMJyo2IyKuXoxbu3vU6h725o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/nRYPCouw1qXzdhryyFzwIhM8hNQAa9ACfWgMk/S7eyVDOiJFkhJFHDNMIh1IqLeSobvTp6Ui/CYYa1OPlOoBw"}}, "unsigned": {"age_ts": 1570041496126}} a} { y w u sqomkigeca~eeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800~ eeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~ eeQ$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~ eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800~ eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~ eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~~eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~}eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~|eeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~{eeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~zeeQ$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~yeeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800~xeeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~weeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~veeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~ueeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800  v kDeQac$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1221}{"auth_events": ["$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "type": "m.room.power_levels", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"users": {"@anon-20191002_181700-248:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041509509, "hashes": {"sha256": "IBgXhtAJpkzkVs6k9I5796rNE5b5bC2iuy1BDKehu9c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IwendqPbX/vJHrD7v/jZi8csE/qxDbj58IO/2J26Hge301A9m+/W6UM6lUcviSUgz2JOD+iU7+LZ4O8wfq0NAQ"}}, "unsigned": {"age_ts": 1570041509509}}vCeQay$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1220}{"auth_events": ["$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA"], "prev_events": ["$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA"], "type": "m.room.member", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-248", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-248:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041507886, "hashes": {"sha256": "6dtJLWacoq4Kax69DP3n+J8rgLyi9Xv8cKG+jIKwqLU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k8wwvsKYi2Jq1bP+1CGcQ4EyiYkSRGj9fEgNyYSvzWnvR217VIFsoi+M0JEmTeFzU7g/v++5jzGQ6x7w5pPECg"}}, "unsigned": {"age_ts": 1570041507886}}iBeQa_$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1219}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-248:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041505852, "hashes": {"sha256": "8LtD8qRH6QL5AoaNzRHBiuagtXhAu22AJMnb2VUlSBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mmf5tKkG0W2Zp7ZTnnr9v5RcU/Gt31worY2pfxgna3EhsdOUV+PmIQa2hVvLr79qM5GDlj2LNdU/REsdqgu+BQ"}}, "unsigned": {"age_ts": 1570041505852}}AeQu$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "txn_id": "127", "stream_ordering": 1218}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s"], "type": "m.room.message", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041502688, "hashes": {"sha256": "ica4k44GZD7zlN2RMZ04DVbzxZ0PRhz9Jse+NkGyX2M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pBqv4dYXCQDRiyD/aRbk/60bDYCOd/ciaTwAmqCLlmNMt4fd98V4nCcytlO3ARlPPvuRc8uYSv3jYBV92F1hAQ"}}, "unsigned": {"age_ts": 1570041502688}} Wq_  jG* ` ! p S p 1  c @ sP3{^C nQ6kTt]E. 6  z c $   qT9 {`=   >']m.room.member@anon-20191002_181700-263:localhost:8800>']Om.room.member@anon-20191002_181700-242:localhost:8800S>']m.room.member@anon-20191002_181700-259:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-258:localhost:8800>']m.room.member@anon-20191002_181700-258:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-257:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-254:localhost:8800' ~m.room.create>']}m.room.member@anon-20191002_181700-253:localhost:8800"? |m.room.history_visibility"? {m.room.history_visibility"? zm.room.history_visibility~"? ym.room.history_visibility}/ xm.room.join_rules|3 wm.room.power_levels{>']vm.room.member@anon-20191002_181700-252:localhost:8800z' um.room.createy>']tm.room.member@anon-20191002_181700-251:localhost:8800x3 sm.room.guest_accessw"? rm.room.history_visibilityv/ qm.room.join_rulesu3 pm.room.power_levelst>']om.room.member@anon-20191002_181700-250:localhost:8800s' nm.room.creater>']mm.room.member@anon-20191002_181700-249:localhost:8800q"? lm.room.history_visibilityp3 km.room.guest_accesso"? jm.room.history_visibilityn/ im.room.join_rulesm3 hm.room.power_levelsl>']gm.room.member@anon-20191002_181700-248:localhost:8800k' fm.room.createj>']em.room.member@anon-20191002_181700-247:localhost:8800i"? dm.room.history_visibilityh3 cm.room.guest_accessg"? bm.room.history_visibilityf/ am.room.join_rulese3 `m.room.power_levelsd>']_m.room.member@anon-20191002_181700-246:localhost:8800c' ^m.room.createb>']]m.room.member@anon-20191002_181700-245:localhost:8800a"? \m.room.history_visibility` ' Hm.room.createL' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-261:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-260:localhost:8800>']m.room.member@anon-20191002_181700-260:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels3 [m.room.guest_access_"? Zm.room.history_visibility^/ Ym.room.join_rules]3 Xm.room.power_levels\>']Wm.room.member@anon-20191002_181700-244:localhost:8800[' Vm.room.createZ>']Um.room.member@anon-20191002_181700-243:localhost:8800Y"? Tm.room.history_visibilityX3 Sm.room.guest_accessW"? Rm.room.history_visibilityV/ Qm.room.join_rulesU3 Pm.room.power_levelsT' Nm.room.createR3 Mm.room.guest_accessQ"? Lm.room.history_visibilityP/ Km.room.join_rulesO3 Jm.room.power_levelsN>']Im.room.member@anon-20191002_181700-240:localhost:8800M>']Gm.room.member@anon-20191002_181700-239:localhost:8800K>']Fm.room.member@anon-20191002_181700-239:localhost:8800J"? Fm.room.history_visibilityI>']m.room.member@anon-20191002_181700-262:localhost:8800>']m.room.member@anon-20191002_181700-262:localhost:8800 8l D `8]c!E@anon-20191002_181700-260:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgoPEYMVGORHU127.0.0.1Perl + Net::Async::HTTP/0.44mq]c!E@anon-20191002_181700-259:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQoCBTLKTDDZA127.0.0.1Perl + Net::Async::HTTP/0.44ma]c!E@anon-20191002_181700-258:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQoZRYHQQPEDT127.0.0.1Perl + Net::Async::HTTP/0.44mE]c!E@anon-20191002_181700-257:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgoAZPFFCLWTK127.0.0.1Perl + Net::Async::HTTP/0.44m/]c!E@anon-20191002_181700-254:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgoXJEYVFLUEX127.0.0.1Perl + Net::Async::HTTP/0.44mӃ]c!E@anon-20191002_181700-253:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8goVCNUHOFNKS127.0.0.1Perl + Net::Async::HTTP/0.44m<~]c!E@anon-20191002_181700-252:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13ZgoRURXOUWORG127.0.0.1Perl + Net::Async::HTTP/0.44m0}]c!E@anon-20191002_181700-251:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awoPMDEYZFDXJ127.0.0.1Perl + Net::Async::HTTP/0.44m{߃|]c!E@anon-20191002_181700-250:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgoHLUDALFTVR127.0.0.1Perl + Net::Async::HTTP/0.44m{${]c!E@anon-20191002_181700-249:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0QoTCARNJMFBO127.0.0.1Perl + Net::Async::HTTP/0.44m(8 DV T Z  o!yz1FD,\e?Q ]$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0m.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800mلm@anon-20191002_181700-252:localhost:8800$[e/Q ]$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8m.room.join_rules!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800&Ze3Q ]$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewm.room.power_levels!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800 Ye'Q ]$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8m.room.member!ZaOktTIVeRgBXxfubH:localhost:8800mmi@anon-20191002_181700-252:localhost:8800X e'Q  ]$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gm.room.create!ZaOktTIVeRgBXxfubH:localhost:8800m?m@anon-20191002_181700-252:localhost:8800!We)Q ] $zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAm.room.message!ZaltdIYVZjCHsCWTZD:localhost:8800 mķmķ@anon-20191002_181700-250:localhost:8800 Ve'Q ] $A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wm.room.member!ZaltdIYVZjCHsCWTZD:localhost:8800 mįEmİY@anon-20191002_181700-251:localhost:8800!Ue)Q ]$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsm.room.message!ZaltdIYVZjCHsCWTZD:localhost:8800mĪmĪ@anon-20191002_181700-250:localhost:8800!Te)Q ]$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4m.room.message!ZaltdIYVZjCHsCWTZD:localhost:8800mĤzmĤ~@anon-20191002_181700-250:localhost:8800&Se3Q ]$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4m.room.guest_access!ZaltdIYVZjCHsCWTZD:localhost:8800mĝmĞ@anon-20191002_181700-250:localhost:8800,Re?Q ]$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_Am.room.history_visibility!ZaltdIYVZjCHsCWTZD:localhost:8800mĕYmĘ@anon-20191002_181700-250:localhost:8800$Qe/Q ]$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkm.room.join_rules!ZaltdIYVZjCHsCWTZD:localhost:8800mĐmđ@anon-20191002_181700-250:localhost:8800&Pe3Q ]$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCom.room.power_levels!ZaltdIYVZjCHsCWTZD:localhost:8800mĉmČ@anon-20191002_181700-250:localhost:8800 Oe'Q ]$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwm.room.member!ZaltdIYVZjCHsCWTZD:localhost:8800mămĄ@anon-20191002_181700-250:localhost:8800N e'Q  ]$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6Em.room.create!ZaltdIYVZjCHsCWTZD:localhost:8800m{m}@anon-20191002_181700-250:localhost:8800!Me)Q ] $WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIm.room.message!kwXxkGQFkaeenFTQJr:localhost:8800 mnmn@anon-20191002_181700-248:localhost:8800 Le'Q ] $Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8m.room.member!kwXxkGQFkaeenFTQJr:localhost:8800 memg@anon-20191002_181700-249:localhost:8800!Ke)Q ] $Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTom.room.message!kwXxkGQFkaeenFTQJr:localhost:8800 m`ma@anon-20191002_181700-248:localhost:8800,Je?Q ]$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAm.room.history_visibility!kwXxkGQFkaeenFTQJr:localhost:8800mZm[@anon-20191002_181700-248:localhost:8800!Ie)Q ]$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyEm.room.message!kwXxkGQFkaeenFTQJr:localhost:8800mSGmSL@anon-20191002_181700-248:localhost:8800&He3Q ]$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcm.room.guest_access!kwXxkGQFkaeenFTQJr:localhost:8800mNsmO1@anon-20191002_181700-248:localhost:8800,Ge?Q ]$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucm.room.history_visibility!kwXxkGQFkaeenFTQJr:localhost:8800mDGmH @anon-20191002_181700-248:localhost:8800$Fe/Q ]$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Em.room.join_rules!kwXxkGQFkaeenFTQJr:localhost:8800m>m@@anon-20191002_181700-248:localhost:8800&Ee3Q ]$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYm.room.power_levels!kwXxkGQFkaeenFTQJr:localhost:8800m6m:@anon-20191002_181700-248:localhost:8800  HeQm$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "txn_id": "128", "stream_ordering": 1225}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc"], "type": "m.room.message", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"msgtype": "m.text", "body": "shared"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041516871, "hashes": {"sha256": "CZP+VKwKDU6kwgVkrx68rns9xmXEpRooDJFv3iL9PII"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3lesipYX2vvA5lHXQ2v37J1VwdiQcX1S9LM7FQhbwGj1u82zJO4zi4BnbPKMDZuqvsSuYKM9YXN/F+NArU8jBw"}}, "unsigned": {"age_ts": 1570041516871}}{GeQa$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1224}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc"], "type": "m.room.guest_access", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041515635, "hashes": {"sha256": "3OV3jJfrLmbB2lwC/fRJS5Dxg+mVP/G1e54CIvf/Q64"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y6VmTgT04bYt3Og2D97SZ5yvcLjmoWGfWGa24GJMBRXTg6rxYTSm9CgzWJPP2f4MLZnTprm7WjgcqInG9jIlCg"}}, "unsigned": {"age_ts": 1570041515635}}FeQa$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1223}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E"], "type": "m.room.history_visibility", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041513031, "hashes": {"sha256": "yuOCzpIGO8hcORTNteiSWclyecKxEqVx3jpK/QVPbxk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e7YkYcpQiP40MgjMHkoJMypYtZJLPNNE3DTTH/KbBHyIhxSsf34gxKWOTuqYqFBYdIX/RNlsmxhW6w1V2MzPBQ"}}, "unsigned": {"age_ts": 1570041513031}}tEeQau$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1222}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY"], "type": "m.room.join_rules", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041511576, "hashes": {"sha256": "TpktC2IhLw4cWfh1ombcmzoCyb2pB92w+XjysT3E/YI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pm2EG6l5ChHzTcmHyiM+m7fhTSVJOhxFifs+sBwq4NoqyjqKySn3zxL4IFV6Z5gH0o3hucEh7NUmNaEB8HboAw"}}, "unsigned": {"age_ts": 1570041511576}} -RM H C > 9 4/*|%w rmhc TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7ITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUTQe!kpTPWDZdBbbXKLonZK:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4TQe!kpTPWDZdBbbXKLonZK:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVITQe!kpTPWDZdBbbXKLonZK:localhost:8800$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfoTQe!kpTPWDZdBbbXKLonZK:localhost:8800$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HITQe!kpTPWDZdBbbXKLonZK:localhost:8800$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuET Qe!kpTPWDZdBbbXKLonZK:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0T Qe!kpTPWDZdBbbXKLonZK:localhost:8800$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMT Qe!ITdmSQpjMnaPoHIbws:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwT Qe!ITdmSQpjMnaPoHIbws:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMT Qe!ITdmSQpjMnaPoHIbws:localhost:8800$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGATQe!ITdmSQpjMnaPoHIbws:localhost:8800$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRETQe!ITdmSQpjMnaPoHIbws:localhost:8800$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVATQe!ITdmSQpjMnaPoHIbws:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sTQe!ITdmSQpjMnaPoHIbws:localhost:8800$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8TQe!FAYqpziHeVZugCGaij:localhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAITQe!FAYqpziHeVZugCGaij:localhost:8800$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcTQe!FAYqpziHeVZugCGaij:localhost:8800$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpITQe!FAYqpziHeVZugCGaij:localhost:8800$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwTQe!FAYqpziHeVZugCGaij:localhost:8800$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgTQe!FAYqpziHeVZugCGaij:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMT~Qe~!FAYqpziHeVZugCGaij:localhost:8800$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoT}Qe}!ZaOktTIVeRgBXxfubH:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QET|Qe|!ZaOktTIVeRgBXxfubH:localhost:8800$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MT{Qe{!ZaOktTIVeRgBXxfubH:localhost:8800$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwATzQez!ZaOktTIVeRgBXxfubH:localhost:8800$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08TyQey!ZaOktTIVeRgBXxfubH:localhost:8800$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0TxQex!ZaOktTIVeRgBXxfubH:localhost:8800$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8TwQew!ZaOktTIVeRgBXxfubH:localhost:8800$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewTvQev!ZaOktTIVeRgBXxfubH:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8TuQeu!ZaOktTIVeRgBXxfubH:localhost:8800$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gTtQet!ZaltdIYVZjCHsCWTZD:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wTsQes!ZaltdIYVZjCHsCWTZD:localhost:8800$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4TrQer!ZaltdIYVZjCHsCWTZD:localhost:8800$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_ATqQeq!ZaltdIYVZjCHsCWTZD:localhost:8800$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkTpQep!ZaltdIYVZjCHsCWTZD:localhost:8800$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoToQeo!ZaltdIYVZjCHsCWTZD:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwTnQen!ZaltdIYVZjCHsCWTZD:localhost:8800$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6ETmQem!kwXxkGQFkaeenFTQJr:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8TlQel!kwXxkGQFkaeenFTQJr:localhost:8800$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhATkQek!kwXxkGQFkaeenFTQJr:localhost:8800$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcTjQej!kwXxkGQFkaeenFTQJr:localhost:8800$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc H 5HLeQu$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "txn_id": "130", "stream_ordering": 1229}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8"], "type": "m.room.message", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041523894, "hashes": {"sha256": "uUyPqmG8fr8BS9Fxx5i0o+2fFltraZNp4YOkMR36WsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3gkftkSh+fhhJyc9PrPmiCirdReAeiNRcieFIGX8A4sokCXOGmhYZPb5qKVl3uY1uRNuC2R/EeEpkzP9M+HhDw"}}, "unsigned": {"age_ts": 1570041523894}}WKeQa;$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 270, "stream_ordering": 1228}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E"], "prev_events": ["$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo"], "type": "m.room.member", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-249:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-249", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-249:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041521601, "hashes": {"sha256": "3UiJSpDjzOve87NC83Fe3TS+gUtNGHhiT3BO7s+Lgpg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E18KRIXcMG71bsLrZVKk5mx9Pb6Cg4w9Oq1lTpBjzUYG2YeUsZHzPKRhpHYQ5o00j5jRW3yh0vJSUEbIxolhDg"}}, "unsigned": {"age_ts": 1570041521601}}JeQq$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "txn_id": "129", "stream_ordering": 1227}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA"], "type": "m.room.message", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041520345, "hashes": {"sha256": "04ANczYnJdKtMASv6ZM8qKdMMx44328Gnf4QUYdNXrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/sSpwW9OOqclbGXy8O5ULkYlzOe4YlOdUgZrsXjEdNe01F9rmBEFh3OmcoSlH7GgSoFS3r1PQ5XIV4+J3z5SAw"}}, "unsigned": {"age_ts": 1570041520345}}GIeQa$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1226}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE"], "type": "m.room.history_visibility", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041518791, "hashes": {"sha256": "jxk/cZhdj5dtZ/zjf50oMqeIxtIvPkBvwuLEAZwWs+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hd+zvHLnWxpu6iXkLsdNkGE2o1FaGyD3yIY9X7NY1m7gaJ5URFtPZxqJhqas+qTZjCB09+yCZZzLBYX8NMM9CA"}}, "unsigned": {"age_ts": 1570041518791, "replaces_state": "$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc"}} ~z v r n j fb^ZVRNJF[eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800ZeeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800YeeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800XeeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800WeeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800VeeQ$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800UeeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800TeeQ$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800SeeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800ReeQ$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800QeeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800PeeQ$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800OeeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800NeeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800MeeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800LeeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800KeeQ$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800JeeQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800IeeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800HeeQ$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800GeeQ$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800FeeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800EeeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800DeeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800CeeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800BeeQ$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800AeeQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800@eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800?eeQ$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800>eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800 %u'Q   N  @ `-Kl!O)Qul2eQ'!$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800content.topicTest Topicj1eQ%$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800content.nameTest Namei0eQ'$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800content.topictopic_1i/eQ'$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800content.topictopic_2g.eQ%$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800content.namename_2\-OQ'$157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800content.topictopicZ,OQ%$157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800content.namenamee+eQ%$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800content.namenameg*eQ'$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800content.topictopick)eQ%!$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800content.bodyHello backl(eQ%#$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800content.bodyHello worldk'eQ%!$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800content.bodyafter joinl&eQ%#$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800content.bodybefore joinm%eQ%%$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800content.bodyhello, worldm$eQ%%$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800content.bodyhello, worldo#eQ%)$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw!cGkVFpidyBBxUxsszG:localhost:8800content.bodyhello, world 3o"eQ%)$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:8800content.bodyhello, world 2o!eQ%)$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:8800content.bodyhello, world 1l eQ%#$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800content.bodyevent aftermeQ%%$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800content.bodyhello, worldmeQ%%$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800content.bodyevent beforemeQ%%$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800content.bodyhello, worldmeQ%%$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800content.bodyhello, worldfeQ%$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800content.bodybody1meQ%%$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800content.bodybefore leavedeQ%$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800content.bodysupdeQ%$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800content.bodysupdeQ%$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800content.bodysupdeQ%$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64!ITdmSQpjMnaPoHIbws:localhost:8800content.bodysupbeQ%$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800content.body3beQ%$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800content.body2beQ%$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800content.body1jeQ%$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800content.bodypost_joinieQ%$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800content.bodypre_joingeQ%$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800content.bodysharedjeQ%$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800content.bodypost_joinieQ%$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800content.bodypre_join  g 4h 5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdqVDFKT29rWEZRNCpROTcKMDAyZnNpZ25hdHVyZSC7lrKg9ImbTr8CkrYFvEEaWOzFNKfny6Qb31PEyfA4qgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVjBCO0NjMSswVWZoLHAKMDAyZnNpZ25hdHVyZSDv6IXplpGvW3jlO-0FOtxQ-E9qECaMgAeY8CAFUiL5ogo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBIdFo6SE85UUI3c2tXT1AKMDAyZnNpZ25hdHVyZSAFrwK26z26wZ38qQfYMIVB0i1v_8Hz2xQeFaaLRU2Vwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6Kkl4PTlUVU5KR3FheHoKMDAyZnNpZ25hdHVyZSBEN8WLrmQ2ofBQpLcVp4rDef2c2cjqk-3Tk2HecBbGhQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxFSCtCXjNzWFlZI2xeX1oKMDAyZnNpZ25hdHVyZSDPXAcW6JNqPJs4riWA-zStsg-aiwS5kychQygDCDgfBQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBESiZaMFpHcjBoMG9kaHYKMDAyZnNpZ25hdHVyZSB3cWspWGVRCZ23VJaGDJZEBWFBnLLtl-E0M7Fd3yI2Jgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVmeFMyeTlFdTAmcXdhLEAKMDAyZnNpZ25hdHVyZSAIHU-v60P7pi1FdbOEzdxbszKriuPshWipgFf-j3oEbQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0wRXVIdkQyT1RQcUZlMV8KMDAyZnNpZ25hdHVyZSCLKe7rBRRX4aJO_x_3H4GczclWYX5FRJw6F5fXglIgTAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBSMlBnb0dJWUY0UWRGcHcKMDAyZnNpZ25hdHVyZSA5TlH1MPC9AiHHA_RZQuGZo5OFkBI5DfuqzVVW_KuJoQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdHci43UW5SQF5CQEd4U1MKMDAyZnNpZ25hdHVyZSDpw2G5Yx2gvOJSbmwv08VdYUxuigJtfQ4pOnDbSLCHBQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHU6ck1wSz1tVWVTMkVtVzgKMDAyZnNpZ25hdHVyZSDrXYqnfYXyORP9VnmM0xCb799bIeWZ0dEYe7F9SxtHtgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwo   *tPeQau$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1233}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo"], "type": "m.room.join_rules", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041532420, "hashes": {"sha256": "YZiNXx6vQviqZSJiZ8WYjYQMNyvu4DRueJpO+k6GouM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/EJe+UAjvCGtEoPDKrZCGwFJ2HluiQGffxVZMv7Cq1PR9TQ59Zk/KtbKjK5JJd2koc5pwzkCG7eUjt4u0ztxCw"}}, "unsigned": {"age_ts": 1570041532420}}kOeQac$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1232}{"auth_events": ["$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "type": "m.room.power_levels", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"users": {"@anon-20191002_181700-250:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041530626, "hashes": {"sha256": "sUmXckDC5wEEVR7/g8b4sSqQO+gpXRC53RBph/S1mFU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vpEOCGNY/WfodvcHNGx+N719OPKbLE4nRZCQhP3iXpGuW3dLiaqCH43f7soOlQyRQFzX+bVOagKIoiTh77WYAQ"}}, "unsigned": {"age_ts": 1570041530626}}vNeQay$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1231}{"auth_events": ["$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E"], "prev_events": ["$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E"], "type": "m.room.member", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-250", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-250:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041529321, "hashes": {"sha256": "lNIsz7DIo3TxrNWTUmPAx3K9WudL7xTxK6YoO0IgHZg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5/bfIdsRKVAD49dX1QA2ljGXf5aN78OxpJKYX7TbYQ5KKmYocymLwTD53JezZQii4qnPBmUkyP3byTpucWnSBg"}}, "unsigned": {"age_ts": 1570041529321}}iMeQa_$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1230}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-250:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041527265, "hashes": {"sha256": "ZYUOctibAjONBBQgxnPDj2YiJpptz5TJgASipgJ/QPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nh7mfMNQ81HFV5pTjF2W4QZqIJrQF6+N/InVpYcuFJ8RgVdlZF20gl1znds/cGHw7mXnwpsNq2Ri1G+JBT7aBw"}}, "unsigned": {"age_ts": 1570041527265}}  4 k 9mfd]c@anon-20191002_181700-266:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBSMlBnb0dJWUY0UWRGcHcKMDAyZnNpZ25hdHVyZSA5TlH1MPC9AiHHA_RZQuGZo5OFkBI5DfuqzVVW_KuJoQo127.0.0.1 d]c@anon-20191002_181700-274:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6Kkl4PTlUVU5KR3FheHoKMDAyZnNpZ25hdHVyZSBEN8WLrmQ2ofBQpLcVp4rDef2c2cjqk-3Tk2HecBbGhQo127.0.0.1d]c@anon-20191002_181700-273:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0wRXVIdkQyT1RQcUZlMV8KMDAyZnNpZ25hdHVyZSCLKe7rBRRX4aJO_x_3H4GczclWYX5FRJw6F5fXglIgTAo127.0.0.1d]c@anon-20191002_181700-272:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVjBCO0NjMSswVWZoLHAKMDAyZnNpZ25hdHVyZSDv6IXplpGvW3jlO-0FOtxQ-E9qECaMgAeY8CAFUiL5ogo127.0.0.1d]c@anon-20191002_181700-271:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBESiZaMFpHcjBoMG9kaHYKMDAyZnNpZ25hdHVyZSB3cWspWGVRCZ23VJaGDJZEBWFBnLLtl-E0M7Fd3yI2Jgo127.0.0.1d]c@anon-20191002_181700-270:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxFSCtCXjNzWFlZI2xeX1oKMDAyZnNpZ25hdHVyZSDPXAcW6JNqPJs4riWA-zStsg-aiwS5kychQygDCDgfBQo127.0.0.1a[a@anon-20191002_181700-26:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-Cg127.0.0.1d]c@anon-20191002_181700-269:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBIdFo6SE85UUI3c2tXT1AKMDAyZnNpZ25hdHVyZSAFrwK26z26wZ38qQfYMIVB0i1v_8Hz2xQeFaaLRU2Vwwo127.0.0.1 d]c@anon-20191002_181700-268:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVmeFMyeTlFdTAmcXdhLEAKMDAyZnNpZ25hdHVyZSAIHU-v60P7pi1FdbOEzdxbszKriuPshWipgFf-j3oEbQo127.0.0.1 d]c@anon-20191002_181700-267:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEw9MV4wSUhjLnlNOWdVKk0KMDAyZnNpZ25hdHVyZSC0r7JuAI_YJyIGJfxb0zRZBRfiDT-Bp42jtVHYGfMVnAo127.0.0.1  wrTeQq$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "txn_id": "132", "stream_ordering": 1237}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4"], "type": "m.room.message", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041539307, "hashes": {"sha256": "z5QnkkysdbAThZE6Gb36TxbNbEqxpsI+lKRm/c+owes"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pxIo1uy0no2VpH8k8F1Fnf5F1N1sSq38drP4yMjvduRSOXgLbHCj5DEuKtRRIRbFkOzWqVMSzZvg+p2WqqsGAw"}}, "unsigned": {"age_ts": 1570041539307}}SeQm$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "txn_id": "131", "stream_ordering": 1236}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4"], "type": "m.room.message", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041537658, "hashes": {"sha256": "0QkBXlXIsyFx7byjubIzcwdkQ4vBl9yYLGP7otV9+JA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UfFeDTc1mEd2kuX+8J3q5pc5oYqKvvbI8fqDgSxY5zKTI039i796aUGpLL+J9VAui8XSjADiH916At+M8bxFBA"}}, "unsigned": {"age_ts": 1570041537658}}{ReQa$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1235}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A"], "type": "m.room.guest_access", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041535933, "hashes": {"sha256": "0mwSvDf7ROn9Vjf+MF2xe1uWWBvb3FDa4JwJ4LCdSk0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEuPQp2/Syycb+NPamdVwkRUc6NcE3uEMpE3QT1Ki5khpPGiVhNJiIf3cJxu89nDLMM92RyDRq3ffGDaZlP6CQ"}}, "unsigned": {"age_ts": 1570041535933}}QeQa$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1234}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk"], "type": "m.room.history_visibility", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041533785, "hashes": {"sha256": "xujwZ3MRDfA2JZ0TPvwMElbGdhZxxCWbHDlWCYpeWoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C8mi3/YpYLKKQR5kUFLKRsGFA1xtGxGRABmn+vm0TdVxZxwyqvNTu6++/kCjagkrQu/LwMZnbwv5DqAFkphUDQ"}}, "unsigned": {"age_ts": 1570041533785}} a} { y w u sqomkigeca~2eeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~1eeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~0eeQ$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~/eeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800~.eeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~-eeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~,eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~+eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~*eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~)eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~(eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~'eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~&eeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~%eeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~$eeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~#eeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~"eeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~!eeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~ eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800 N h V6Z #(n = > uC $  { vI | D U  O  \ *b0 P  J pj91e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY z1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc 1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYH 1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc L1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE K1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0i1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk;1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYB1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcx1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0{1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcs1e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkS1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQH1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA e1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg |1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0Q1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0'1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY 1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w"1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIp1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIK1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsq1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI+1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA (1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624"1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMh1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQJ1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgD1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 R1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c/1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o%0e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA51e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0/1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M 1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94 5 &5vXeQay$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1241}{"auth_events": ["$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g"], "prev_events": ["$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g"], "type": "m.room.member", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-252", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-252:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041546982, "hashes": {"sha256": "uGI0LOzN3DpRtZJbOpT5rLOxbDbk/9WpRDY90qjybyY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9jtNFTf2HgYjr14cQoCjLuSkBmfQ3lz10U/CoC90U1VbTQbcBLXAOLFc2VaNLxxo2bowGdYtlQST6mstw1lBAw"}}, "unsigned": {"age_ts": 1570041546982}}iWeQa_$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1240}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-252:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041545535, "hashes": {"sha256": "qsN6cGyVvBXpGK37f3BVr62+QOJ1unz+5LmsrCOrJ58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tz97upnkq+oDwbciGtKOuGkISk9G6H2xvnprYfjRqCKXQj+a2Jh3azdiHsf++f9hrQF0PapsJOHXSQSSPofBAQ"}}, "unsigned": {"age_ts": 1570041545535}}VeQu$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "txn_id": "133", "stream_ordering": 1239}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w"], "type": "m.room.message", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041542555, "hashes": {"sha256": "iDWEd/IOrs1dvw3Yl96X3MjoxWk6ATUsxr/fPTC9sQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q9xcF8hz/MzA1BIWXlu91JoDAt5rWF8c3OOOFOJAvhcZx0S5UmQf9TRL8Qg4mDbWj5RVEWoUK2fLNHP12jJgAA"}}, "unsigned": {"age_ts": 1570041542555}}VUeQa9$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 272, "stream_ordering": 1238}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk"], "prev_events": ["$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs"], "type": "m.room.member", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-251:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-251", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-251:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041540421, "hashes": {"sha256": "jzd0RXvpdMGRsGWSxe/wnw+z3r65Lj6Xt14mHUF3N9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y0LMO7tHR9/B8x6FwMevCki049gbIo1BnQTxZcL78biJDBZShBhXFyj2bP+HALUeDLwh4wCh3Pb1IgJP+4vFDQ"}}, "unsigned": {"age_ts": 1570041540421}} ,NC 8 - { " p  e ZOD9.|#qf VeL$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAosha256#5F^c׊YڙlCY@{\ VeL$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pksha256 E!Mt#n[n X.V~eL$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10sha256}F03R 4_N[6Lr};]V}eL$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIsha256[fHxO䕍ҝB9bV|eL$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0sha256jFk8;ryǑ|iCE V{eL$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Isha256zw x`r-J=h CsmHVzeL$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUsha256vB86$gL>#UVyeL$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4sha256t<"҄_p<85beVxeL$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQsha256gI*JN3lc9b!p>$VweL$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIsha256D؊];0hC5A?v!Z6؝eRVveL$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfosha2569c8SNcFjF|m]q VueL$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIsha256<Hr Q$&^qPrVteL$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEsha256Vc@v:duu^C9KIz҂<(FVseL$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0sha256 e?͏ZqTo&$z0VreL$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMsha25679DneSuƽD2o3VqeL$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwsha256fx!lLFlsmdH$lVpeL$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64sha256uQ8DEڍ\'[F4jcVoeL$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMsha25608#3>{WV^ !C7VYSVneL$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAsha256uKC&:9):>ᒡ`VmeL$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREsha256qJ(Sܼ3! GzS.{"BUUVleL$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAsha256K#9> ܺV{Y͔yp!PVkeL$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6ssha256f:#t,' e%|6**` 20.{VjeL$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8sha256Y$@߻悎뽂VieL$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIsha256x{7%2qMEj< 3T[VVheL$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcsha256(.eo NH@gt :)0m$gVgeL$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIsha256& &Êt5@Ct[YDbVfeL$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwsha256!F >U&LaŨ󋮇VR VeeL$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgsha256&wlvv<`pS?q2]\ ,F8VdeL$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMsha256`fAǴJ-bYڨ HZ?%sVceL$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMosha256"mo|6&ߡ cvKl=8:/ڒe9΀\ PN-fS ! & K o  /.9>bDOyxcQ' e!XNfwczePlyYFWLCaui:localhost:8800m.room.create$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8 Q']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA Q']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkoQ? e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibility$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10gQ/ e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rules$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIiQ3 e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 Q']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7IcQ' e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIoQ? e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibility$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfogQ/ e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rules$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIiQ3 e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0cQ' e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.create$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM Q']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw Q']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMo Q? e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibility$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAg Q/ e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rules$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREi Q3 e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA Q']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sc Q' e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.create$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8rQ))e!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIoQ? e!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibility$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcgQ/ e!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rules$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIlQ9 e!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_alias$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwiQ3 e!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg Q']e!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMcQ' e~!FAYqpziHeVZugCGaij:localhost:8800m.room.create$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo Q']e}!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEoQ? e|!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MoQ? e{!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAo~Q? ez!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08  e ] | U ME= 6.&t meeQ$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800 (eeQ$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800 IeeQ$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800 ]eeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800 eeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800;eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800SeeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800+eeQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800ReeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800܁eeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800_eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800eeQ$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800сeeQ$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800peeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:88006eeQ$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800aeeQ$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800eeQ$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800 $eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800IeeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800؁eeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800*eeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800 ' g * T~=gg]!c@anon-20191002_181700-263:localhost:8800KUHOBSXQVMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswog]!c@anon-20191002_181700-262:localhost:8800OLJVXJZUXGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAog]!c@anon-20191002_181700-261:localhost:8800HLJRYNNHWEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwog]!c@anon-20191002_181700-260:localhost:8800PEYMVGORHUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgog]!c@anon-20191002_181700-259:localhost:8800CBTLKTDDZAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQog ]!c@anon-20191002_181700-258:localhost:8800ZRYHQQPEDTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQog ]!c@anon-20191002_181700-257:localhost:8800AZPFFCLWTKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgog ]!c@anon-20191002_181700-255:localhost:8800QPFIMVOQLFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZVcXBRRmdlRi5Ld0dsdn4KMDAyZnNpZ25hdHVyZSC7-jUKU9NYTOVklufnDf5gGiyL1nsbucv8MyAzrMBrjwog ]!c@anon-20191002_181700-254:localhost:8800XJEYVFLUEXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgog ]!c@anon-20191002_181700-253:localhost:8800VCNUHOFNKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8gog]!c@anon-20191002_181700-252:localhost:8800RURXOUWORGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13Zgo f 2fH`eQa$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1249}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041557390, "hashes": {"sha256": "pMNh6Iww9OUO3tKm5ArycpJ9JPUPM/s62XlOg9PP3Sk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vwYabUSWv0SrVZIllwKtxt67RM8MOL6j4D6UptsfQhFe3OdmKo8OE3cHGutLhcOfH+fQXZGZgkvQIldPZUkkDw"}}, "unsigned": {"age_ts": 1570041557390, "replaces_state": "$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA"}}}_eQc$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "txn_id": "135", "stream_ordering": 1248}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA"], "type": "m.room.message", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"body": "2", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041556946, "hashes": {"sha256": "8nyP5e32ay/zZDRKECiOI6gX8TyDotbswiCRA5I5gms"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/jfojnOL+VUy0uOcT7tMLwMkqOOtmU7thu57X47qIresbdnst815LwwQsYfERpB4StmG1id3aXFQkSFLqWVNAA"}}, "unsigned": {"age_ts": 1570041556946}}H^eQa$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1247}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041556070, "hashes": {"sha256": "l66FkjUNOuYHUMpRevVXHZkPSsOvpqehsMNXW1ZW0U8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vQ6tb5rc2CSnZ9bf83Ik6xmubUQe43kn1DfeVCDcJMrXkbLJSe1WJ1OZ7QdDxqNP5AxQ9t93oY6FjgUwiSg6BA"}}, "unsigned": {"age_ts": 1570041556070, "replaces_state": "$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08"}}}]eQc$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "txn_id": "134", "stream_ordering": 1246}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08"], "type": "m.room.message", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041555119, "hashes": {"sha256": "E61dRdJBhEMj8061dvN0g08zzvXILGxzpq69hhvbHmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wKJw5VVAzBdauN5HmT2XQEUBnKYgyRoQOg2Gf/HSWPHiDAN70LUF3BGxKYMrNShTRbeeJ41YzqFCttFcvM2HAg"}}, "unsigned": {"age_ts": 1570041555119}}  G\eQa$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1245}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041553602, "hashes": {"sha256": "+EvXWk4ptzLAUWTSD2lfNSFt6xOQMan7iGnBYTASUM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JOejWPzj13RVn04rZDRBZkEN8N6Gbymbu8sWrIkDlssgNgSwRT1IJEzQv7hoohC1VWAS1RnROJxprLu8NUY5BA"}}, "unsigned": {"age_ts": 1570041553602, "replaces_state": "$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0"}}[eQa$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1244}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041551236, "hashes": {"sha256": "PYaeHcE7r5XkILlOXx8ytQ1dxQDGt96QPS6fn/yM5b8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4qxalQ5lEjrby6KaMQI/v8qbn3F740RolV8s+KzeTyQuCujjmevvtuozUpFJjfSuGi6dcO21IPWEYM4E1IrQAA"}}, "unsigned": {"age_ts": 1570041551236}}tZeQau$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1243}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew"], "type": "m.room.join_rules", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041548992, "hashes": {"sha256": "BbnFAP1lShCGbu+Yx6nNBfDboHJk2E9ravUww1XoB5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EnfaKYrqKzuNex4EXZsApkQBTgQjIIsplKLK+uHoz5ke/hcWOPHUeBV2ardvnO+aIzIC2o4t3hQZ7cXks5X6BQ"}}, "unsigned": {"age_ts": 1570041548992}}kYeQac$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1242}{"auth_events": ["$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "type": "m.room.power_levels", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"users": {"@anon-20191002_181700-252:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041547768, "hashes": {"sha256": "GSrbVKesAYvb5dALYACKStpk85Qev11Nx4Lcrv2hqrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "driZbheYbATgyEEbhjFya1Wl+h4ICU/J4iufPzGsDcv/96QS40i8Np5WASYW8Du/KqSU/+eMbYD+APFSj8PXDQ"}}, "unsigned": {"age_ts": 1570041547768}} %5-|t l d \ T = ME eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800 ^eeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800neeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800deeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800XeeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800ǁeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800ʁeeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800ǁeeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800ȁeeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800 FeeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800eeQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800eeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800SeeQ$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800KeeQ$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:88290eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800ځeeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800oeeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800YeeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800eeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800eeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800 C ! u J  s H qFoe:i>g<T)}R' { P % y N # w LFoDmBk@**Q!oZGRyBAkNDrEeiAqWL:localhost: *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L L*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K K*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J J*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I I*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H H*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G G*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F F*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E E*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D D*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 C C*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800 J+WK8Dp8]Qp>  v D  | J% jv  } P   W % ]> +c2j+21e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q l1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc61e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI 1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIj1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg?1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwZ1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E"1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv811e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ c1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8t1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0C1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO421e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk31e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7ME1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMp1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mw1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUn1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIc1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cQ1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIX1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4C1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI?1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE30e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4G1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQO1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828#1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0(1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE`1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo :1e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE {21e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI ^1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q 1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw w HP V  ]  mh!}+{2H te'Q ]$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0m.room.member!kpTPWDZdBbbXKLonZK:localhost:8800mdme@anon-20191002_181700-259:localhost:8800s e'Q  ]$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMm.room.create!kpTPWDZdBbbXKLonZK:localhost:8800mambA@anon-20191002_181700-259:localhost:8800 re'Q ]$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwm.room.member!ITdmSQpjMnaPoHIbws:localhost:8800mTmUw@anon-20191002_181700-258:localhost:8800!qe)Q ]$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64m.room.message!ITdmSQpjMnaPoHIbws:localhost:8800mL mN@anon-20191002_181700-257:localhost:8800 pe'Q ]$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMm.room.member!ITdmSQpjMnaPoHIbws:localhost:8800mHmH@anon-20191002_181700-258:localhost:8800,oe?Q ]$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAm.room.history_visibility!ITdmSQpjMnaPoHIbws:localhost:8800m@mD<@anon-20191002_181700-257:localhost:8800$ne/Q ]$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREm.room.join_rules!ITdmSQpjMnaPoHIbws:localhost:8800m<m>p@anon-20191002_181700-257:localhost:8800&me3Q ]$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAm.room.power_levels!ITdmSQpjMnaPoHIbws:localhost:8800m6Cm9O@anon-20191002_181700-257:localhost:8800 le'Q ]$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sm.room.member!ITdmSQpjMnaPoHIbws:localhost:8800m3Gm3@anon-20191002_181700-257:localhost:8800k e'Q  ]$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8m.room.create!ITdmSQpjMnaPoHIbws:localhost:8800m/m0S@anon-20191002_181700-257:localhost:8800!je)Q ]$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIm.room.aliases!FAYqpziHeVZugCGaij:localhost:8800m'm)@anon-20191002_181700-254:localhost:8800,ie?Q ]$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcm.room.history_visibility!FAYqpziHeVZugCGaij:localhost:8800mmm!i@anon-20191002_181700-254:localhost:8800$he/Q ]$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIm.room.join_rules!FAYqpziHeVZugCGaij:localhost:8800mm@anon-20191002_181700-254:localhost:8800)ge9Q ]$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwm.room.canonical_alias!FAYqpziHeVZugCGaij:localhost:8800mmc@anon-20191002_181700-254:localhost:8800&fe3Q ]$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgm.room.power_levels!FAYqpziHeVZugCGaij:localhost:8800mm@anon-20191002_181700-254:localhost:8800 ee'Q ]$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMm.room.member!FAYqpziHeVZugCGaij:localhost:8800m cm @anon-20191002_181700-254:localhost:8800d e'Q  ]$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMom.room.create!FAYqpziHeVZugCGaij:localhost:8800mm@anon-20191002_181700-254:localhost:8800 ce'Q ] $eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEm.room.member!ZaOktTIVeRgBXxfubH:localhost:8800 mm@@anon-20191002_181700-253:localhost:8800!be)Q ] $OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIm.room.message!ZaOktTIVeRgBXxfubH:localhost:8800 mm@anon-20191002_181700-252:localhost:8800,ae?Q ] $sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5Mm.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800 mm@anon-20191002_181700-252:localhost:8800!`e)Q ] $L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGEm.room.message!ZaOktTIVeRgBXxfubH:localhost:8800 mm@anon-20191002_181700-252:localhost:8800,_e?Q ]$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAm.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800mfm @anon-20191002_181700-252:localhost:8800!^e)Q ]$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMm.room.message!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800,]e?Q ]$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08m.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@x~w}v|u{tzsyrxqwpvountmslrkqjpiohngmflekdjcibhag`f_e^d]c\b[aZ`Y_X^W]V\U[TZSYRXQWPVOUNTMSLRKQJPIOHNGMFLEKDJCIBHAG@F?E>D=C<B;A:@9?8>7=6<5;4:39281706/5.4-3,2+1*0)/(.'-&,%+$*#)"(!' &%$#"!           ~}|{zy~}|{zy~x}w|v{uztysxrwqvpuotnsmrlqkpjoinhmglfkejdichbgaf`e_d^c]b\a[`Z_Y^X]W\V[UZTYSXRWQVPUOTNSMRLQKPJOINHM < ~<vdeQay$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1253}{"auth_events": ["$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo"], "prev_events": ["$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo"], "type": "m.room.member", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-254", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-254:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041564515, "hashes": {"sha256": "4qCi5VkWXFiFPziaIKLPXPaNjtTNarhrb+gIHZAXa9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TEnSgNSw0tHKd88iwBwyyEvBWWmxIo+yOSmySVGyHC2mMPQxrwyHnB51aKP8g8JQfWwvwCBj6OdTqQ3Z3lTABw"}}, "unsigned": {"age_ts": 1570041564515}}iceQa_$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1252}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-254:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041562774, "hashes": {"sha256": "zD6R5eHTsxQdEXkVs0/5+w9H/Sd4k8YiEHcoS/CWBF8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EsosxFBlOe8EAmT23lUg8gEIf/kIm1X8tNbl1UlUoHs+XZYSWR5qRQbU92fIU9q9eFDOisKM3fTIW4rGeNpfAA"}}, "unsigned": {"age_ts": 1570041562774}}WbeQa;$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 274, "stream_ordering": 1251}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8"], "prev_events": ["$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI"], "type": "m.room.member", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-253:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-253", "avatar_url": null}, "depth": 12, "prev_state": [], "state_key": "@anon-20191002_181700-253:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041558946, "hashes": {"sha256": "JuoOC5Mm7jdyXa9om+8bg61Z0UEb8qxMT/hVEokufm4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3+3J9i8qYO5oZO3tlH41esPahzCjk3i3QCnjZmCj6OeGRorT4XyQJrGH19xRLSDT6k/spObcth0lifhWal5eCg"}}, "unsigned": {"age_ts": 1570041558946}}~aeQe$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "txn_id": "136", "stream_ordering": 1250}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M"], "type": "m.room.message", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"msgtype": "m.text", "body": "3"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041558155, "hashes": {"sha256": "6HW/s4bRHA/Et2EcQjuB4gquNNDkUT4JF1VJcY+ezmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kK0NQ5XwFVvoDhK2Ea/9ekH3h1Nc2sHzs925xHfGgxDN4KrYpqj0CZBujXg4Z2Hp7dHrnLZGzF9q4qsygivgAg"}}, "unsigned": {"age_ts": 1570041558155}} ? T & d n @  \ . v"P~6\.vHvHb4 | N h : f8 R$n@d-]@anon-20191002_181700-269:localhost:8800+[@anon-20191002_181700-26:localhost:8800-]@anon-20191002_181700-270:localhost:8800-]@anon-20191002_181700-271:localhost:8800-]@anon-20191002_181700-273:localhost:8800-]@anon-20191002_181700-272:localhost:8800-]@anon-20191002_181700-277:localhost:8800-]@anon-20191002_181700-276:localhost:8800-]@anon-20191002_181700-279:localhost:8800+[@anon-20191002_181700-24:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-289:localhost:8800-]@anon-20191002_181700-288:localhost:8800-]@anon-20191002_181700-287:localhost:8800-]@anon-20191002_181700-286:localhost:8800-]@anon-20191002_181700-284:localhost:8800-]@anon-20191002_181700-283:localhost:8800-]@anon-20191002_181700-282:localhost:8800-]@anon-20191002_181700-281:localhost:8800-]@anon-20191002_181700-280:localhost:8800+[@anon-20191002_181700-27:localhost:8800 -]@anon-20191002_181700-268:localhost:8800-]@anon-20191002_181700-265:localhost:8800-]@anon-20191002_181700-264:localhost:8800-]@anon-20191002_181700-263:localhost:8800-]@anon-20191002_181700-261:localhost:8800+[@anon-20191002_181700-25:localhost:8800-]@anon-20191002_181700-259:localhost:8800-]@anon-20191002_181700-257:localhost:8800-]@anon-20191002_181700-254:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800-]@anon-20191002_181700-249:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-318:localhost:8800-]@anon-20191002_181700-317:localhost:8800-]@anon-20191002_181700-312:localhost:8800-]@anon-20191002_181700-311:localhost:8800-]@anon-20191002_181700-310:localhost:8800-]@anon-20191002_181700-308:localhost:8800-]@anon-20191002_181700-307:localhost:8800-]@anon-20191002_181700-306:localhost:8800-]@anon-20191002_181700-305:localhost:8800-]@anon-20191002_181700-304:localhost:8800-]@anon-20191002_181700-303:localhost:8800-]@anon-20191002_181700-302:localhost:8800-]@anon-20191002_181700-301:localhost:8800-]@anon-20191002_181700-300:localhost:8800-]@anon-20191002_181700-299:localhost:8800-]@anon-20191002_181700-298:localhost:8800-]@anon-20191002_181700-297:localhost:8800-]@anon-20191002_181700-296:localhost:8800-]@anon-20191002_181700-295:localhost:8800-]@anon-20191002_181700-294:localhost:8800-]@anon-20191002_181700-292:localhost:8800-]@anon-20191002_181700-291:localhost:8800-]@anon-20191002_181700-290:localhost:8800 "M 0 @ P % 5EUeu -=MuG ]@anon-20191002_181700-289:localhost:8800$2b$04$tE8YEWwlJrSIYkmGezuEpesffcK1BfbfWF40eTzKNwGL/HPTLf67m]duF ]@anon-20191002_181700-288:localhost:8800$2b$04$D26kQFKUjrG8Tnt39.QGUuwbHVzZNhz2p8opJ5vMTpBplwK223c.a]duE ]@anon-20191002_181700-287:localhost:8800$2b$04$jPYc9ui3iInerQBcKhLUpuHdMmA3AhsgByFe491Pn4bglv5U13lS6][uD ]@anon-20191002_181700-286:localhost:8800$2b$04$c/nXzsqBedmjIjrDNmErx.W44XkVPr4doEYQ/l4u/3Fzfybcn5mii][uC ]@anon-20191002_181700-285:localhost:8800$2b$04$hoLmw.f2mAxSiKCAlO0LNOioW9VDoLKBP399OEuPHsZqa4sxuFU3C]VuB ]@anon-20191002_181700-284:localhost:8800$2b$04$xmBi8dKP2RbglvOOHd1P5uwKadhnFMZmmvbhdIwPf/RNnrzF5WRTu]VuA ]@anon-20191002_181700-283:localhost:8800$2b$04$DTMdt6vyJljsYcEF5AKR2elT3/fMfyqRfu9tetmW/9Luoj8dtfOE6]Pu@ ]@anon-20191002_181700-282:localhost:8800$2b$04$SgOpMtej8fBX6BkvzpRE.OW676DtweT9zSE3yAmmKbVCB5zVRjfOS]Gu? ]@anon-20191002_181700-281:localhost:8800$2b$04$g6Ox62ygmSw9qeNHrDEaa.OfYcdI95pBlj3BMuuxJEiAc479oGCzm]Gu> ]@anon-20191002_181700-280:localhost:8800$2b$04$DOmZ3GqDECNFC.ilJhe20eCynlZYjZxlJrTqfzsd5BBxEU3It2b3O]Gu= ]@anon-20191002_181700-279:localhost:8800$2b$04$wM2ZOKrrwgX6F1TURRK3zOWskTA6zZRrDrVxcbCSf0HX0Q/r1w82i]@u< ]@anon-20191002_181700-278:localhost:8800$2b$04$Q4NVcQuBqzTu5UiJOcsc1eOP58AvJ0jVxny15gCL4Uxxabzh4YR82];u; ]@anon-20191002_181700-277:localhost:8800$2b$04$uz5N7mHKw5ADwBjxNmb4h.Te6UoxB3xzmDS1le4NdF1u6CBV7aVYu];u: ]@anon-20191002_181700-276:localhost:8800$2b$04$YIH0b2TwTxCHnKwZDIOHgO.LEiEU.Ro1RKzKTsE0lnUyviYD7Lfom]5u9 ]@anon-20191002_181700-275:localhost:8800$2b$04$T/Gl1H5jMxwKb9JkcJb6j.DxpM.UO.6Wyjl1sItY/UAiYO1AcKzIy]+u8 ]@anon-20191002_181700-274:localhost:8800$2b$04$kxHWwsrq1QjPAoXj9kQPxOIq2Q1TetTrjHjuhAe5fyweXAL6aZDmG])u7 ]@anon-20191002_181700-272:localhost:8800$2b$04$.A1MthwyqlsUwbn6cWfRX.JvfQgw.8nIj3qh2J35AihWEvVhbD0RC])u6 ]@anon-20191002_181700-273:localhost:8800$2b$04$EgIJSXL9CxpAfbhqDaidGOOZJ/7PWlKbeAxaEPBEK9ohf0Kz1wISG])u5 ]@anon-20191002_181700-270:localhost:8800$2b$04$eoNBtD3dJidIe4FVaazKO.B33b312NWLjUPeJJaZ4L6OxD4Ss51Ja]u4 ]@anon-20191002_181700-271:localhost:8800$2b$04$XAD7fdL/dvqBOqE7tHyXlObzWUk.bXUm3.qfdNUbb.hh0ZVxbPhSq]u3 ]@anon-20191002_181700-269:localhost:8800$2b$04$939JqvSwNgHws4GxiPT6Cu/GH6vq6z.OWaR6yPL3vF6QFWGO.awk6]u2 ]@anon-20191002_181700-268:localhost:8800$2b$04$.XPyeKVYoAELHeFzQLJZdOAsP.4nraOmpbuafKEthY.HcECu/GecS]81 ] @anon-20191002_181700-267:localhost:8800]u0 ]@anon-20191002_181700-266:localhost:8800$2b$04$OzZ9VLSGGQfxJqOZXFgHje20I84BFIFai6SHWjeoIppAGNHxtraF2] u/ ]@anon-20191002_181700-265:localhost:8800$2b$04$/Z9O2mlHnAk1pASWIba0QOmFhgGS0DtKtRcgY1aLtF9BelpY93upa] u. ]@anon-20191002_181700-264:localhost:8800$2b$04$BFlpvltY.VSPGWqhHM2FP.1nkfeHh8MGsVjnVnH./4Zbs6A/sZkiK]u- ]@anon-20191002_181700-263:localhost:8800$2b$04$9CO3v0UGabEzVRkkkP3P0OoUzDnpFqQC0iHmNlbJvpCjXsbEzXBF.]u, ]@anon-20191002_181700-262:localhost:8800$2b$04$oajtgU6EomvK8Vv0I/XmBuGoiHYVRyMbzbYtL2LZPQi6VoKwN/UaK]u+ ]@anon-20191002_181700-261:localhost:8800$2b$04$ZwDxrgHrMTnqkqfAw1xGjelOYMVIYd86B3x2UwoErecR6RzXUS6d6]u* ]@anon-20191002_181700-260:localhost:8800$2b$04$Tf0EC013kOpov0wl0fV.ruPE3wpBh975ja1qgcLQKxF9yUth5Vb.y]u) ]@anon-20191002_181700-259:localhost:8800$2b$04$5JrPXJu3N3.ifdCK6ynbCO76PfdLt7arc3oauRPkNzmSi.d/nl3iq]u( ]@anon-20191002_181700-258:localhost:8800$2b$04$2Rk6QSM9sYNuN1NYFZcwEu04ltfRsTHyxaMmu4vokEAsEQcS6rGYu]u' ]@anon-20191002_181700-257:localhost:8800$2b$04$URoeaw9cQkS06RxfkQ5k5Oxp.lJPILBkEODtUYid/ziqfnn84v3kG]u& ]@anon-20191002_181700-255:localhost:8800$2b$04$swrpwubl0Hsjup1jbzRyGeXk/pd50V/Lowru7AugZKW7VzHejYCmC] 1`p 0 @ P `  p 0@MZ k~/ANP]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800M[Q @anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!QZhNrNpwObZGJZpdAG:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800 P]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800P]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800P]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800P]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800P]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800O]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800~O]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800}O]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800{O]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800yO]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800xO]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800wO]Q@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800vO]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800uO]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800tO]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800sO]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800qO]Q@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800rO]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800pO]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800oO]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800nO]Q@anon-20191002_181700-142:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800mO]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800lO]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800kO]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800jO]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800iO]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800hO]Q@anon-20191002_181700-135:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800gO]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800fO]Q@anon-20191002_181700-133:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800eO]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800dO]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800cO]Q@anon-20191002_181700-130:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800bO]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800a  < GLto0 M X &$/][e{eQ/ $tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_ruleseeQ/ $PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rulesgeQ3 $VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels eQ']$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800joinaeQ' $6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800m.room.createeQ']$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800leaveaeQ' $IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800m.room.create eQ']$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800joinmeQ? $sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilityeeQ/ $wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rulesgeQ3 $9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels eQ']$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800joinaeQ' $kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create ~eQ']$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800joing}eQ3 $WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_accessm|eQ? $GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibilitymeQ? $onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibilityeeQ/ $cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rulesgeQ3 $S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels eQ']$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800joina eQ' $ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800m.room.createp eQ))$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800m eQ? $KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibilitye eQ/ $mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rulesjeQ9 $uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_aliasgeQ3 $JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels eQ']$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800join yUg<e: !@i> u 8FoDmB { Pk N # w LT H qc J  s)}R'  % { P*Q!cGkVFpidyBBxUxsszG:localhost:8800NT*Q!cGkVFpidyBBxUxsszG:localhost:8800OU*Q!cGkVFpidyBBxUxsszG:localhost:8800PV*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!bzPCFeFSMbCESvNbxl:localhost:880006*Q!bzPCFeFSMbCESvNbxl:localhost:8800/5*Q!bnTuVBaAJTPbcYZtRl:localhost:88009=*Q!bnTuVBaAJTPbcYZtRl:localhost:88009<*Q!bnTuVBaAJTPbcYZtRl:localhost:88008;*Q!bnTuVBaAJTPbcYZtRl:localhost:88007:*Q!bnTuVBaAJTPbcYZtRl:localhost:880069*Q!bnTuVBaAJTPbcYZtRl:localhost:880058*Q!bnTuVBaAJTPbcYZtRl:localhost:880047*Q!bnTuVBaAJTPbcYZtRl:localhost:880036*Q!bnTuVBaAJTPbcYZtRl:localhost:880025*Q!bnTuVBaAJTPbcYZtRl:localhost:880014*Q!csWEXfVEVxdviNvgAd:localhost:8800(R*Q!csWEXfVEVxdviNvgAd:localhost:8800&P*Q!csWEXfVEVxdviNvgAd:localhost:8800#M*Q!bzPCFeFSMbCESvNbxl:localhost:88007=*Q!bzPCFeFSMbCESvNbxl:localhost:88006<*Q!bzPCFeFSMbCESvNbxl:localhost:88005;*Q!bzPCFeFSMbCESvNbxl:localhost:88004:*Q!bzPCFeFSMbCESvNbxl:localhost:880039*Q!bzPCFeFSMbCESvNbxl:localhost:880028*Q!bzPCFeFSMbCESvNbxl:localhost:880017*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cSUQGmpIsSCBAVTOHo:localhost:8800uw*Q!cHtqiAyCHEAoBIbCmL:localhost:8800LN*Q!cHtqiAyCHEAoBIbCmL:localhost:8800KM*Q!cHtqiAyCHEAoBIbCmL:localhost:8800JL*Q!cHtqiAyCHEAoBIbCmL:localhost:8800IK*Q!cHtqiAyCHEAoBIbCmL:localhost:8800HJ*Q!cHtqiAyCHEAoBIbCmL:localhost:8800GI*Q!cHtqiAyCHEAoBIbCmL:localhost:8800FH*Q!cHtqiAyCHEAoBIbCmL:localhost:8800EG*Q!cHtqiAyCHEAoBIbCmL:localhost:8800DF*Q!cHtqiAyCHEAoBIbCmL:localhost:8800CE*Q!cGkVFpidyBBxUxsszG:localhost:8800V\*Q!cGkVFpidyBBxUxsszG:localhost:8800U[*Q!cGkVFpidyBBxUxsszG:localhost:8800TZ*Q!cGkVFpidyBBxUxsszG:localhost:8800SY*Q!cGkVFpidyBBxUxsszG:localhost:8800RX*Q!cGkVFpidyBBxUxsszG:localhost:8800QW*Q!cidyuyekVzJHHvyomb:localhost:8800 7 t*Q!cidyuyekVzJHHvyomb:localhost:8800 6 s*Q!cidyuyekVzJHHvyomb:localhost:8800 5 r*Q!cidyuyekVzJHHvyomb:localhost:8800 4 q*Q!cidyuyekVzJHHvyomb:localhost:8800 3 p*Q!cidyuyekVzJHHvyomb:localhost:8800 2 o*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!cGkVFpidyBBxUxsszG:localhost:8800MS*Q!bzPCFeFSMbCESvNbxl:localhost:88008>*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!bzPCFeFSMbCESvNbxl:localhost:8800.4*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cSUQGmpIsSCBAVTOHo:localhost:8800y{*Q!cSUQGmpIsSCBAVTOHo:localhost:8800xz*Q!cSUQGmpIsSCBAVTOHo:localhost:8800wy*Q!cSUQGmpIsSCBAVTOHo:localhost:8800vx  heQa$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1257}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI"], "type": "m.room.history_visibility", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041568877, "hashes": {"sha256": "XJK1+ouWoGBGZxdQa+mkG+89zVYLU+1KXFUHR1p6jwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VcWN/eIOJTIyklH1QZii0gcweMtT+OArD/u1oQC52WFYpkMmfJXjfsmCdMnpgY18jwz0YJr1dy8GHXelCO+ZCA"}}, "unsigned": {"age_ts": 1570041568877}}tgeQau$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1256}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw"], "type": "m.room.join_rules", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041567893, "hashes": {"sha256": "AtCenbHcWgf2G+FqMDpXJmskMI0UU4ViLtwYufDn1SY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WPByh4neR1QmO9rTWt5g/VS4dt9cYuESJYjSrnkT+1nuh5EHQioQoBWGfiLmBekipnt3UDHbNEncBGZ2bDNBDg"}}, "unsigned": {"age_ts": 1570041567893}} feQa!$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1255}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg"], "type": "m.room.canonical_alias", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"alias": "#__ANON__-12:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041566703, "hashes": {"sha256": "wZS70+IjkNJFSSzOzCb/zTF0pBh6/kZ6EuK3NlhbmhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PmZBOkucVyJXG3G0AuU15ciu1KouhqoAKDGMehnPzQM/99Uy/Chucloz6hVZpNjneYtUI/c14W2toGXlkrwBCg"}}, "unsigned": {"age_ts": 1570041566703}}keeQac$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1254}{"auth_events": ["$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "type": "m.room.power_levels", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"users": {"@anon-20191002_181700-254:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041565436, "hashes": {"sha256": "z/V4jjMJ0nPQsUntMvcGaq8X8104qlQbPUD1HmQpkCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9nj23VdXyj7B3y3d/dR7Vekh9hK60AYUugmGdaniakD7NHtgtrZLLgEE79wXccE2UkZequ0CZsU87nzlDZXKCw"}}, "unsigned": {"age_ts": 1570041565436}} !)Q z   - 6^DS47areQ' $pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800m.room.create qeQ']$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800mpeQ? $Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibilityeoeQ/ $FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800m.room.join_rulesgneQ3 $tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels meQ']$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800aleQ' $U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800m.room.create keQ']$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800 jeQ']$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800mieQ? $fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibilityeheQ/ $0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rulesggeQ3 $araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels feQ']$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800aeeQ' $g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create deQ']$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800 ceQ']$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800mbeQ? $OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibilityeaeQ/ $PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rulesg`eQ3 $VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels _eQ']$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800a^eQ' $6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800m.room.create ]eQ']$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800 \eQ']$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800m[eQ? $onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibilityeZeQ/ $cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rulesgYeQ3 $S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels XeQ']$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800aWeQ' $ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800m.room.createpVeQ))$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800mUeQ? $KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibilityeTeQ/ $mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rulesjSeQ9 $uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_aliasgReQ3 $JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels a} { y w u sqomkigeca~QeeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~PeeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800~OeeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~NeeQ$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~MeeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800~LeeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~KeeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~JeeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800~IeeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~HeeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~GeeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800~FeeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~EeeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~DeeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800~CeeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~BeeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~AeeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800~@eeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~?eeQ$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~>eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~=eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~<eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800~;eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~:eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~9eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800~8eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~7eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~6eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800~5eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~4eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~3eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}||{{zzyxwvuttsssrqponmmllkkjihgfeeddccba`_^]?>=<;:976543210/.-,+)('&%$#"!     [[[ZYXWVUUTTSSRQPONMLKJIHGFEDCBA@?>>==<;:98766543210/.~-},|+{*z)y(x'w&v%u$t#s#r"q!p onmlkjihgfedcba`_^]\[ Z Y X W V UTSRQPON  H E " % G,)mv +4 qQ']e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QdpQ' e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.create$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU oQ']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzopnQ? e!XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibility$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQhmQ/ e!XNfwczePlyYFWLCaui:localhost:8800m.room.join_rules$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4jlQ3 e!XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI kQ']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4djQ' e!XNfwczePlyYFWLCaui:localhost:8800m.room.create$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl88iQ']ee!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk hQ']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkpgQ? e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibility$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10hfQ/ e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rules$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIjeQ3 e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 dQ']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7IdcQ' e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU8bQ']ee!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI aQ']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIp`Q? e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibility$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfoh_Q/ e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rules$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIj^Q3 e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE ]Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0d\Q' e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.create$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM8[Q']ee!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM ZQ']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMpYQ? e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibility$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAhXQ/ e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rules$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREjWQ3 e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA VQ']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sdUQ' e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.create$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8sTQ))e!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIpSQ? e!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibility$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc  h {kleQac$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1261}{"auth_events": ["$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "type": "m.room.power_levels", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"users": {"@anon-20191002_181700-257:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041574979, "hashes": {"sha256": "aYj2yZhOxAGmDSxfqbc0RYjeA4+J9Y1/WT8ves9HNo4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tEXFHf/T3YrKG/CLr5niez6Tr29AW74RlM12+iv6qb7sHQX2bBn4MVGo52pawhgXH2BiINDm7TmyuLxLkdJvDQ"}}, "unsigned": {"age_ts": 1570041574979}}vkeQay$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1260}{"auth_events": ["$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8"], "prev_events": ["$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8"], "type": "m.room.member", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-257", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-257:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041574215, "hashes": {"sha256": "PzSQ9L2pp7HGojomORr1ubEmWsqpY712khsfZy6FxBk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gAGNWbT4Zr5FxgqoAwuPs3S2wcv7ctZ4dhEq6QZEIa9Yo112BTwlHXr/5m90dheVJ9y1pd/qdGMMYqLxk/2TDg"}}, "unsigned": {"age_ts": 1570041574215}}ijeQa_$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1259}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-257:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041573360, "hashes": {"sha256": "q55RPPzrEPhipT6xTjH6ZxwTjVaCd94yL5EndZxoRoY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mjb2I+71spe9/E3MW3bZ0SpOq+6ZcxXflBW3/YDQTzLB4wlPPBOfxu5vT2zTjAXnYJjLkWdKZj40Arv7fojoCw"}}, "unsigned": {"age_ts": 1570041573360}}ieQa5$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1258}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc"], "type": "m.room.aliases", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"aliases": ["#__ANON__-12:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041571091, "hashes": {"sha256": "zid4hyrYR46wRSsdG3AZdggHEDMADDDDoBuPaaATglk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ijsPn5ikAfG7WBi9QpdkQ9Q5dAzklLdHXgpEnFD9kTkNRxt8iXfOUchqTV+uIh3hihUQ9Js9c4fP8EcPG0pcBw"}}, "unsigned": {"age_ts": 1570041571091}} q( F (  t V 8   n P 2  T6Pn2`~B$Wu9dpR4FbD&(r bs D &  T r 6W<  dlN0|^@ T=anon-20191002_181700-386=anon-20191002_181700-377=anon-20191002_181700-366=anon-20191002_181700-339x=anon-20191002_181700-338w=anon-20191002_181700-337v=anon-20191002_181700-336u=anon-20191002_181700-335t=anon-20191002_181700-334s=anon-20191002_181700-333r=anon-20191002_181700-332q=anon-20191002_181700-388=anon-20191002_181700-387=anon-20191002_181700-385=anon-20191002_181700-384=anon-20191002_181700-383=anon-20191002_181700-382=anon-20191002_181700-381=anon-20191002_181700-380=anon-20191002_181700-379=anon-20191002_181700-378=anon-20191002_181700-375=anon-20191002_181700-376=anon-20191002_181700-374=anon-20191002_181700-372=anon-20191002_181700-373=anon-20191002_181700-371=anon-20191002_181700-370=anon-20191002_181700-369=anon-20191002_181700-368=anon-20191002_181700-367=anon-20191002_181700-365=anon-20191002_181700-359=anon-20191002_181700-357=anon-20191002_181700-358=anon-20191002_181700-356=anon-20191002_181700-354=anon-20191002_181700-355=anon-20191002_181700-353=anon-20191002_181700-352=anon-20191002_181700-350=anon-20191002_181700-351=anon-20191002_181700-349=anon-20191002_181700-348=anon-20191002_181700-346~=anon-20191002_181700-347}=anon-20191002_181700-345|=anon-20191002_181700-343{=anon-20191002_181700-342z=anon-20191002_181700-341y;anon-20191002_181700-313;anon-20191002_181700-40<9anon-20191002_181700-4;anon-20191002_181700-3a;anon-20191002_181700-39;;anon-20191002_181700-38:;anon-20191002_181700-379;anon-20191002_181700-368;anon-20191002_181700-357;anon-20191002_181700-346=anon-20191002_181700-363=anon-20191002_181700-364=anon-20191002_181700-360=anon-20191002_181700-361=anon-20191002_181700-362@=anon-20191002_181700-318c=anon-20191002_181700-317b=anon-20191002_181700-316a=anon-20191002_181700-315`=anon-20191002_181700-314_=anon-20191002_181700-312^=anon-20191002_181700-311]=anon-20191002_181700-310\=anon-20191002_181700-309[=anon-20191002_181700-308Z=anon-20191002_181700-307Y=anon-20191002_181700-306X=anon-20191002_181700-305W=anon-20191002_181700-304V=anon-20191002_181700-406=anon-20191002_181700-405=anon-20191002_181700-404=anon-20191002_181700-403=anon-20191002_181700-402=anon-20191002_181700-401=anon-20191002_181700-400=anon-20191002_181700-399=anon-20191002_181700-397=anon-20191002_181700-398=anon-20191002_181700-396=anon-20191002_181700-395=anon-20191002_181700-394=anon-20191002_181700-393=anon-20191002_181700-392=anon-20191002_181700-391=anon-20191002_181700-390=anon-20191002_181700-389=anon-20191002_181700-331p=anon-20191002_181700-330o;anon-20191002_181700-335=anon-20191002_181700-329n=anon-20191002_181700-328m=anon-20191002_181700-327l=anon-20191002_181700-326k=anon-20191002_181700-325j=anon-20191002_181700-324i=anon-20191002_181700-323h=anon-20191002_181700-322g=anon-20191002_181700-321f=anon-20191002_181700-320e;anon-20191002_181700-324=anon-20191002_181700-319d=anon-20191002_181700-407 -RM H C > 9 4/*|%w rmhc TQe!egbhiBqOGhloZzopol:localhost:8800$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5AgTQe!egbhiBqOGhloZzopol:localhost:8800$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYTQe!egbhiBqOGhloZzopol:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5ATQe!egbhiBqOGhloZzopol:localhost:8800$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgTQe!KdOYYnOuwAyQzqwUki:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUTQe!KdOYYnOuwAyQzqwUki:localhost:8800$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpcTQe!KdOYYnOuwAyQzqwUki:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kTQe!KdOYYnOuwAyQzqwUki:localhost:8800$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMTQe!KdOYYnOuwAyQzqwUki:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSETQe!KdOYYnOuwAyQzqwUki:localhost:8800$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBoTQe !KdOYYnOuwAyQzqwUki:localhost:8800$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgTQe !KdOYYnOuwAyQzqwUki:localhost:8800$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkTQe !KdOYYnOuwAyQzqwUki:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QTQe !KdOYYnOuwAyQzqwUki:localhost:8800$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUTQe !XNfwczePlyYFWLCaui:localhost:8800$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYTQe!XNfwczePlyYFWLCaui:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzoT Qe!XNfwczePlyYFWLCaui:localhost:8800$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQT Qe!XNfwczePlyYFWLCaui:localhost:8800$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4T Qe!XNfwczePlyYFWLCaui:localhost:8800$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIT Qe!XNfwczePlyYFWLCaui:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4T Qe!XNfwczePlyYFWLCaui:localhost:8800$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHATQe!PQZMTVTeCYqMZwkHvW:localhost:8800$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAoTQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkTQe!PQZMTVTeCYqMZwkHvW:localhost:8800$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7ITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUTQe!kpTPWDZdBbbXKLonZK:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4TQe!kpTPWDZdBbbXKLonZK:localhost:8800$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQT~Qe!kpTPWDZdBbbXKLonZK:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIT}Qe!kpTPWDZdBbbXKLonZK:localhost:8800$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfoT|Qe!kpTPWDZdBbbXKLonZK:localhost:8800$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIT{Qe!kpTPWDZdBbbXKLonZK:localhost:8800$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuETzQe!kpTPWDZdBbbXKLonZK:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0TyQe!kpTPWDZdBbbXKLonZK:localhost:8800$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMTxQe!ITdmSQpjMnaPoHIbws:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwTwQe!ITdmSQpjMnaPoHIbws:localhost:8800$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64TvQe!ITdmSQpjMnaPoHIbws:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMTuQe!ITdmSQpjMnaPoHIbws:localhost:8800$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGATtQe!ITdmSQpjMnaPoHIbws:localhost:8800$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRETsQe!ITdmSQpjMnaPoHIbws:localhost:8800$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVATrQe!ITdmSQpjMnaPoHIbws:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sTqQe!ITdmSQpjMnaPoHIbws:localhost:8800$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8 ~z v r n j fb^ZVRNJFyeeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800xeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800weeQ$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800veeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800ueeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800teeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800seeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800reeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800qeeQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800peeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800oeeQ$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800neeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800meeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800leeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800keeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800jeeQ$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800ieeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800heeQ$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800geeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800feeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800eeeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800deeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800ceeQ$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800beeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64!ITdmSQpjMnaPoHIbws:localhost:8800aeeQ$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800`eeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800_eeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800^eeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800]eeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800\eeQ$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800  %peQg$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "txn_id": "137", "stream_ordering": 1265}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM"], "type": "m.room.message", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041580557, "hashes": {"sha256": "hY0ALdsUO6hZcfq4AV9sEpTHRjSvs6pQcIcUC22uFe0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mvyn4Tc1fmTeLGz6AzKZRYV8o1/eMcKWnjYzfp1T1hWkIAv9Pqj2evtldvKisPansg4TKFXmwi0djrxh7AWaDA"}}, "unsigned": {"age_ts": 1570041580557}}VoeQa9$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 278, "stream_ordering": 1264}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE"], "prev_events": ["$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA"], "type": "m.room.member", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-258:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-258", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-258:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041579551, "hashes": {"sha256": "xLitqJukRzGrG0aM3dKjYikW9A1EmF7TYbv2eGWwUeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f+goWgAV0DEHJh+gKtf9qrohjDb8dGjrsm+PpUcRa9U5pS4R2F0ROQ5J6dSbxFh/nGcdYi8XB/xTe80YxIcpDg"}}, "unsigned": {"age_ts": 1570041579551}}neQa$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1263}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE"], "type": "m.room.history_visibility", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041577627, "hashes": {"sha256": "sQIOoY9ARssQVwAdqeRJkkDSDFNxI42oQUyMiNudV/Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JmVB04LeqXrgIMKO+ofV14a/CfEcVMMBFvyrDDAvBsmm0Wf6ArRJ0RRlZ1tvOeSV13DW7UL0t6a7Q0fqx7dBDQ"}}, "unsigned": {"age_ts": 1570041577627}}tmeQau$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1262}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA"], "type": "m.room.join_rules", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041576679, "hashes": {"sha256": "8ja7msXWqq7vWSF9P/KBwcRcF6gv2bS7XVm3ZGY8lLw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MRmLBXS+B8ma3hyOjHkoXoGroXd28NyFOsaIIuf6A7f1FmpKmwo/eiwdV03JFYst00vm9SUlgrZwoj6Ha7NDAw"}}, "unsigned": {"age_ts": 1570041576679}} jKVO w Fj82p$  \ ~ L  R X & ^ ,uCdp> * 8= {Ij81e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM&1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0`1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 y1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 x1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg81e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg71e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAe0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVok1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoj1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoi1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg91e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo 1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo 1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk#1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk"1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcY1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcX1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcW1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM'1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oz1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oy1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7ox1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM(1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo 1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UR1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UQ1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UP1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEs1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEr1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEq1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M 1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M 1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M 1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0<1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0;1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0:0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAg1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAf1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk 2L  ] v D  W | J  P  W &  Q ^ ,%}dpj8p>> K+wEj8>21e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ-1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE G1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC01e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM*1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo O1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo41e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70.1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE11e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo(1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4c1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk&1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A*1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc821e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukm1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78=1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kr1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh031e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE]1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMko1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE.1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0O1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0V1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M/1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw 0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2KkZ1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ R1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw u ]+kCh@xQ) a9[3sK#b:rK$ S ] 6  p I !{ Z 2 n F   X 0 g?'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800}'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800#'Q!VNdqhtoDkyMoQdMTtM:localhost:8800u'Q!WgXzOXLTeqaGfiDFhL:localhost:8800o'Q!YaLuQzmJKSMTSFEqjO:localhost:8800n'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:88006'Q!QMrkSPlQDGborAyWtQ:localhost:8800;'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800R'Q!TcCLuIBUrtFqghDgay:localhost:8800Q'Q!SpXEytywhTbAftyVBr:localhost:8800O'Q!THHfVSOSWiBQTHRAnJ:localhost:8800I'Q!SrwdtDytJDUBVZOueF:localhost:8800<'Q!SrwdtDytJDUBVZOueF:localhost:8800;'Q!TlJCaYlCkOOVzFDlLx:localhost:8800)'Q!TlJCaYlCkOOVzFDlLx:localhost:8800('Q!TlJCaYlCkOOVzFDlLx:localhost:8800''Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800&Q!SyIWYOmcGiASNkPCTB:localhost:8800F&Q!SyIWYOmcGiASNkPCTB:localhost:8800E'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800/'Q!SrMQpDMFREKRMELwbL:localhost:8800.'Q!SrMQpDMFREKRMELwbL:localhost:8800-'Q!SnROoiDBapNNtMmKnT:localhost:8800+'Q!SnROoiDBapNNtMmKnT:localhost:8800*'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800.'Q!RmwbYvIIQyPlHlClty:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800~'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800M'Q!YQATbgbLImCDamiDHC:localhost:8800L'Q!YGUjVdVdpcQoGkRnWB:localhost:8800u'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88003&Q!XgobMgBjNcDRJnRXLD:localhost:88002'Q!XcaKxZsPvbZhAGKKdx:localhost:8800D'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800|&Q!XMNRkfscQXRjgYrOSd:localhost:8800{&Q!XIqmzIFbkHGQPIpywk:localhost:8800U&Q!XIqmzIFbkHGQPIpywk:localhost:8800T'Q!XGAmnfaVvjDtQJuufa:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800{'Q!WpThtNEVhrUbUdCdMJ:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800l'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800W&Q!WWZVpyLeZfyfpWidLx:localhost:8800V&Q!WVzjUePHrzCjfyTbmK:localhost:8800t'Q!WFHIeSFQyuugGeBFxW:localhost:8800='Q!WFHIeSFQyuugGeBFxW:localhost:8800<'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800J'Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:8800<&Q!VAEDgDJVqmxXZyAlSW:localhost:8800;&Q!UyLoIXmzVFwycmBUeh:localhost:8800v'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800_'Q!UGVFuRGyPQmBbGsEDo:localhost:8800^'Q!UGVFuRGyPQmBbGsEDo:localhost:8800]&Q!TleKOyAElrpgyyrAQA:localhost:8800,&Q!TleKOyAElrpgyyrAQA:localhost:8800+ +\ c j  q  x %  , 3s z'.5<CP Q]!jveVPZSXJOJyNDebPO:localhost:8800@anon-20191002_181700-279:localhost:88004kCP'Q]!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-292:localhost:88004P&Q]!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-290:localhost:88004P%Q]!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-288:localhost:88004P$Q]!ffijTnPMbTrDXHqOXf:localhost:8800@anon-20191002_181700-286:localhost:88004P#Q]!wLitJYvgvNJzanSIvO:localhost:8800@anon-20191002_181700-284:localhost:88004P"Q]!hWHyATwKfuznrqTiyu:localhost:8800@anon-20191002_181700-283:localhost:88004P!Q]!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-280:localhost:88004PQ]!rJhSRzmWBQHlIhuDXT:localhost:8800@anon-20191002_181700-277:localhost:88004PQ]!fsbkkRBZlUcBVVfMME:localhost:8800@anon-20191002_181700-276:localhost:88004PQ]!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-272:localhost:88004PQ]!RPfffkmSEbWggEjnoI:localhost:8800@anon-20191002_181700-271:localhost:88004PQ]!nxLxsxzliamzflrEBs:localhost:8800@anon-20191002_181700-270:localhost:88004PQ]!PCgUmZOwWmtDsuFqXg:localhost:8800@anon-20191002_181700-270:localhost:88004PQ]!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-267:localhost:88004PQ]!KdOYYnOuwAyQzqwUki:localhost:8800@anon-20191002_181700-265:localhost:88004PQ]!XNfwczePlyYFWLCaui:localhost:8800@anon-20191002_181700-263:localhost:88004PQ]!PQZMTVTeCYqMZwkHvW:localhost:8800@anon-20191002_181700-261:localhost:88004PQ]!kpTPWDZdBbbXKLonZK:localhost:8800@anon-20191002_181700-259:localhost:88004P}Q]!eJPTUgihvSwaOhIkrC:localhost:8800@anon-20191002_181700-211:localhost:88004"PQ]!ITdmSQpjMnaPoHIbws:localhost:8800@anon-20191002_181700-257:localhost:88004PQ]!FAYqpziHeVZugCGaij:localhost:8800@anon-20191002_181700-254:localhost:88004PQ]!ZaOktTIVeRgBXxfubH:localhost:8800@anon-20191002_181700-252:localhost:88004PQ]!ZaltdIYVZjCHsCWTZD:localhost:8800@anon-20191002_181700-250:localhost:88004PQ]!kwXxkGQFkaeenFTQJr:localhost:8800@anon-20191002_181700-248:localhost:88004PQ]!EMhFCPhwmnWVnjtXXM:localhost:8800@anon-20191002_181700-246:localhost:88004PQ]!GGXyLHdVXqhQjPRvac:localhost:8800@anon-20191002_181700-244:localhost:88004P Q]!IfYYyzLHSOeyJBxBfn:localhost:8800@anon-20191002_181700-242:localhost:88004P Q]!ZYKvjplZRyIWvzkRyM:localhost:8800@anon-20191002_181700-240:localhost:88004P Q]!ROoilpDjLJfjKfSPIi:localhost:8800@anon-20191002_181700-238:localhost:88004P Q]!wsvXTJXouVkEZcCFsD:localhost:8800@anon-20191002_181700-237:localhost:88004P Q]!DoiZErAdypBUMZKaeJ:localhost:8800@anon-20191002_181700-236:localhost:88004PQ]!qSUSLLWjDxcGibUZdT:localhost:8800@anon-20191002_181700-234:localhost:88004PQ]!RmwbYvIIQyPlHlClty:localhost:8800@anon-20191002_181700-232:localhost:88004PQ]!SvKwEALYoNreUvqAlp:localhost:8800@anon-20191002_181700-231:localhost:88004PQ]!fOJLpnbtgKNxxVDquX:localhost:8800@anon-20191002_181700-228:localhost:88004PQ]!vAUAIZrCnHTeMGeNuw:localhost:8800@anon-20191002_181700-226:localhost:88004PQ]!EfJcWhdjNARbuHYrqU:localhost:8800@anon-20191002_181700-224:localhost:88004PQ]!vRRNxNyGboLHNhqQvr:localhost:8800@anon-20191002_181700-222:localhost:88004PQ]!NFWKQvZkIwvecnREOC:localhost:8800@anon-20191002_181700-220:localhost:88004PQ]!IPYMCBwcyNIzqdiIWv:localhost:8800@anon-20191002_181700-217:localhost:88004PQ]!HZqzpRgqekPOtxstVc:localhost:8800@anon-20191002_181700-215:localhost:88004P~Q]!FklhVuCInffbDxunWv:localhost:8800@anon-20191002_181700-213:localhost:88004 L " 5LkteQac$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1269}{"auth_events": ["$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "type": "m.room.power_levels", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"users": {"@anon-20191002_181700-259:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041587595, "hashes": {"sha256": "reorR51AyHiyTpnaTAA/d1nRz7KI/Qj2JQiJ/aaWbg0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K7q1/xDyUXyjs5IGKXYwo9oXZ6QvmMPIIPKDxNE1HQM2fhezd3RQOhY6AlLLwK9PQzLDbJW8dpHkHB+pjIgNBA"}}, "unsigned": {"age_ts": 1570041587595}}vseQay$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1268}{"auth_events": ["$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM"], "prev_events": ["$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM"], "type": "m.room.member", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-259", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-259:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041586865, "hashes": {"sha256": "fQWRTdauSHWPwMrA2W/drWIPxwlcbIt2SQikmgsZD9A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sviCeNmqgtaEOk3J2JSiNFTM4Eb2a6bKVC+oDC/bEohgfCQUf2OjHETSsxu3IjL7QDiRx31Ul5pWay26jiXZDA"}}, "unsigned": {"age_ts": 1570041586865}}ireQa_$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1267}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-259:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041586162, "hashes": {"sha256": "QzvlyJrVLAzrDGF/XuXZP+qlQr/dDDV0zdkHtZpW1zg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2BHSyMFnHUdDgqYrqq+J7Lv+YA5vq8EyhO/J3VJPb3zUF0n4wIJF9z3oENt7Yi7qQiNB40Iafq/nZQ9FQQoSCg"}}, "unsigned": {"age_ts": 1570041586162}}ZqeQaA$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 278, "stream_ordering": 1266}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM"], "prev_events": ["$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64"], "type": "m.room.member", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-258:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-258:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041582792, "hashes": {"sha256": "cUQRb8hpEzLMQZ6wmGImWh3Y/CoKOWRHC/1RH1TOiLQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I5U5S1T0mjho2Kp/Itm/SPBMDmXebwb3/aSko5Fyr5RxW3mXZIZ+/mVZCe+uU9Y2mJ518V8+yduKVUaAdjutBg"}}, "unsigned": {"age_ts": 1570041582792, "replaces_state": "$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM"}} wP'{P%yN#wL!L! N #w- V V +  T ) L! } R ' {wL P % yT)}Rw%yN#)+*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 j j*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 i i*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 h h)*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 (Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!nxLxsxzliamzflrEBs:localhost:8800))*Q!paDmNxsOZIKyApbxXs:localhost:8800 Q Q*Q!paDmNxsOZIKyApbxXs:localhost:8800 P P*Q!paDmNxsOZIKyApbxXs:localhost:8800 O O*Q!paDmNxsOZIKyApbxXs:localhost:8800 N N*Q!paDmNxsOZIKyApbxXs:localhost:8800 M M*Q!paDmNxsOZIKyApbxXs:localhost:8800 L L*Q!paDmNxsOZIKyApbxXs:localhost:8800 K K*Q!paDmNxsOZIKyApbxXs:localhost:8800 J J'*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pJUItjYTOUJQFIxyiX:localhost:8800 S S*Q!pJUItjYTOUJQFIxyiX:localhost:8800 R R*Q!pJUItjYTOUJQFIxyiX:localhost:8800 Q Q*Q!pJUItjYTOUJQFIxyiX:localhost:8800 P P*Q!pJUItjYTOUJQFIxyiX:localhost:8800 O O*Q!pJUItjYTOUJQFIxyiX:localhost:8800 N N*Q!pJUItjYTOUJQFIxyiX:localhost:8800 M M*Q!oznZaCpONuNDaLarkI:localhost:8800OO*Q!oznZaCpONuNDaLarkI:localhost:8800NN*Q!oznZaCpONuNDaLarkI:localhost:8800MM*Q!oznZaCpONuNDaLarkI:localhost:8800LL*Q!oznZaCpONuNDaLarkI:localhost:8800KK*Q!oznZaCpONuNDaLarkI:localhost:8800JJ*Q!ozgnwUlebxvzLVwyHW:localhost:8800>>*Q!ozgnwUlebxvzLVwyHW:localhost:8800==*Q!ozgnwUlebxvzLVwyHW:localhost:8800;;*Q!ozgnwUlebxvzLVwyHW:localhost:880099*Q!ozgnwUlebxvzLVwyHW:localhost:880077*Q!ozgnwUlebxvzLVwyHW:localhost:880044(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 m m*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 l l(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800V*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 k k K^ v D  }9 K  Q  W & ^ -k ^eq? &wE~LR  X3?j8q1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQa1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 k1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg{1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYT1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os?1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsN1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw/1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY.1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEw1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwp1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcK1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q u1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg '1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ`1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74W1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74U1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcH1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcG1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMaka1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4W1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo11e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUj1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEI1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM71e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gJ1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q01e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 F1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE `1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM v1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0+1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gd1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg`1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74Y WxP(@ hh@ ` 8  p pH  H  @  xP(`8pH X0 x P (h`8X0 xP( X 0 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 n'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 m'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hFwigdYZkwYNSwelRH:localhost:8800 N'Q!hFwigdYZkwYNSwelRH:localhost:8800 M'Q!hFwigdYZkwYNSwelRH:localhost:8800 L'Q!hFwigdYZkwYNSwelRH:localhost:8800 K'Q!hFwigdYZkwYNSwelRH:localhost:8800 J'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800]'Q!hgjYwwwjWJNgwrzOto:localhost:8800\'Q!hgjYwwwjWJNgwrzOto:localhost:8800['Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hYPSaMPGsLnvYSmwhg:localhost:8800/'Q!hYPSaMPGsLnvYSmwhg:localhost:8800.'Q!hYPSaMPGsLnvYSmwhg:localhost:8800''Q!hYPSaMPGsLnvYSmwhg:localhost:8800&'Q!hYPSaMPGsLnvYSmwhg:localhost:8800%'Q!hYPSaMPGsLnvYSmwhg:localhost:8800$'Q!hYPSaMPGsLnvYSmwhg:localhost:8800#'Q!hWHyATwKfuznrqTiyu:localhost:8800['Q!hWHyATwKfuznrqTiyu:localhost:8800Z'Q!hWHyATwKfuznrqTiyu:localhost:8800Y'Q!hWHyATwKfuznrqTiyu:localhost:8800X'Q!hWHyATwKfuznrqTiyu:localhost:8800W'Q!hWHyATwKfuznrqTiyu:localhost:8800V'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 H'Q!hFwigdYZkwYNSwelRH:localhost:8800 G'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800U'Q!hZuwenlFDapIPBOyfi:localhost:8800y'Q!hZuwenlFDapIPBOyfi:localhost:8800x'Q!hZuwenlFDapIPBOyfi:localhost:8800w'Q!hZuwenlFDapIPBOyfi:localhost:8800v'Q!hZuwenlFDapIPBOyfi:localhost:8800u'Q!hZuwenlFDapIPBOyfi:localhost:8800t'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 P'Q!hFwigdYZkwYNSwelRH:localhost:8800 O'Q!hegUPDZCEEmBhsNJJR:localhost:8800 i'Q!hegUPDZCEEmBhsNJJR:localhost:8800 h'Q!hegUPDZCEEmBhsNJJR:localhost:8800 g'Q!hegUPDZCEEmBhsNJJR:localhost:8800 f'Q!hegUPDZCEEmBhsNJJR:localhost:8800 e'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 I'Q!hGsPmWXboxZZtOlsxY:localhost:8800 @'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hgjYwwwjWJNgwrzOto:localhost:8800Z'Q!hgjYwwwjWJNgwrzOto:localhost:8800Y'Q!hgjYwwwjWJNgwrzOto:localhost:8800X'Q!hgjYwwwjWJNgwrzOto:localhost:8800V'Q!hgjYwwwjWJNgwrzOto:localhost:8800WP [V Z  o ! y%:DK[& e3Q ]$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkm.room.power_levels!KdOYYnOuwAyQzqwUki:localhost:8800mƬm@anon-20191002_181700-265:localhost:8800 e'Q ]$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qm.room.member!KdOYYnOuwAyQzqwUki:localhost:8800mĉm@anon-20191002_181700-265:localhost:8800  e'Q  ]$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUm.room.create!KdOYYnOuwAyQzqwUki:localhost:8800mſm@anon-20191002_181700-265:localhost:8800! e)Q ]$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYm.room.message!XNfwczePlyYFWLCaui:localhost:8800mŷmŸ@anon-20191002_181700-263:localhost:8800 e'Q ]$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzom.room.member!XNfwczePlyYFWLCaui:localhost:8800mŴmŵF@anon-20191002_181700-264:localhost:8800,e?Q ]$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQm.room.history_visibility!XNfwczePlyYFWLCaui:localhost:8800mŮmű@anon-20191002_181700-263:localhost:8800$e/Q ]$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4m.room.join_rules!XNfwczePlyYFWLCaui:localhost:8800mŪmŬ@anon-20191002_181700-263:localhost:8800&e3Q ]$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIm.room.power_levels!XNfwczePlyYFWLCaui:localhost:8800mŨ mũ@anon-20191002_181700-263:localhost:8800 e'Q ]$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4m.room.member!XNfwczePlyYFWLCaui:localhost:8800mťmŦT@anon-20191002_181700-263:localhost:8800 e'Q  ]$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8m.room.create!XNfwczePlyYFWLCaui:localhost:8800mšmŢL@anon-20191002_181700-263:localhost:8800 e'Q ]$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAm.room.member!PQZMTVTeCYqMZwkHvW:localhost:8800mŘ5mŘ@anon-20191002_181700-261:localhost:8800!e)Q ]$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAom.room.message!PQZMTVTeCYqMZwkHvW:localhost:8800mŕmŖW@anon-20191002_181700-261:localhost:8800 e'Q ]$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pkm.room.member!PQZMTVTeCYqMZwkHvW:localhost:8800mŒmœ?@anon-20191002_181700-262:localhost:8800,e?Q ]$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10m.room.history_visibility!PQZMTVTeCYqMZwkHvW:localhost:8800mōmŏ@anon-20191002_181700-261:localhost:8800$~e/Q ]$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIm.room.join_rules!PQZMTVTeCYqMZwkHvW:localhost:8800mŋ[mŌ&@anon-20191002_181700-261:localhost:8800&}e3Q ]$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0m.room.power_levels!PQZMTVTeCYqMZwkHvW:localhost:8800mňmʼn@anon-20191002_181700-261:localhost:8800 |e'Q ]$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Im.room.member!PQZMTVTeCYqMZwkHvW:localhost:8800mŅYmņ@anon-20191002_181700-261:localhost:8800{ e'Q  ]$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUm.room.create!PQZMTVTeCYqMZwkHvW:localhost:8800młwmł@anon-20191002_181700-261:localhost:8800 ze'Q ]$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4m.room.member!kpTPWDZdBbbXKLonZK:localhost:8800mxmy@anon-20191002_181700-260:localhost:8800!ye)Q ]$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQm.room.message!kpTPWDZdBbbXKLonZK:localhost:8800mvmv@anon-20191002_181700-259:localhost:8800 xe'Q ]$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIm.room.member!kpTPWDZdBbbXKLonZK:localhost:8800msPms@anon-20191002_181700-260:localhost:8800,we?Q ]$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfom.room.history_visibility!kpTPWDZdBbbXKLonZK:localhost:8800mlmo@anon-20191002_181700-259:localhost:8800$ve/Q ]$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIm.room.join_rules!kpTPWDZdBbbXKLonZK:localhost:8800mjhmk2@anon-20191002_181700-259:localhost:8800&ue3Q ]$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEm.room.power_levels!kpTPWDZdBbbXKLonZK:localhost:8800mgmh@anon-20191002_181700-259:localhost:8800 . N>F| &6 l Ut e ]eeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800 zeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800%eeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800}eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800:eeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800eeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800,eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800 ҁeeQ$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800IeeQ$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800oeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800eeQ$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800eeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800heeQ$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800|eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800 ceeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800eeQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800QeeQ$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800   %xeQg$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "txn_id": "138", "stream_ordering": 1273}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"], "type": "m.room.message", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041591313, "hashes": {"sha256": "4y8oN2IhA4APSmzIV63GZf0W18SZBHduYsL7FEfoYNE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qL2sI1PBpQZnsp1zNWoUskFyLa/auBzMFCJbsyiPghJ5S0dJ3UGH6estNaYllB1oRlG05Ng8fmN8DO4JIL0fAg"}}, "unsigned": {"age_ts": 1570041591313}}VweQa9$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 280, "stream_ordering": 1272}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI"], "prev_events": ["$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo"], "type": "m.room.member", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-260:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-260", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-260:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041590608, "hashes": {"sha256": "q51twREc9VlczXnmUDS7hbKSjktOpagKD1Q6eUKDb1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CttRE6UhK8t9sUfN/Ao6HZkJpIURJZw+34kTuvrsTbTNzpquW1OSo3H5rBlbilBQbDRGDV0ty2BcNWfDHGxVDg"}}, "unsigned": {"age_ts": 1570041590608}}veQa$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1271}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI"], "type": "m.room.history_visibility", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041588928, "hashes": {"sha256": "JfjjxLdC+qR8PRiHixPy1EWiR8LjNO/H5Lbq1KVh1eE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2p/CXUGpQdCwtRka5QCGXDhKDOZ1C4sX7PDDIaDuXRipR0PxaF/wqHx0wGljWTH4qULbnlBAXtGPb5JwjsgYBQ"}}, "unsigned": {"age_ts": 1570041588928}}tueQau$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1270}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE"], "type": "m.room.join_rules", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041588328, "hashes": {"sha256": "gJ30pniVxJVmj4EQ6Zt22vTPScRxT7KEWxrlQdhUEqU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MOgXcsBloGu/A+h2zai2XLLB7NmUTGJahsrWcj7Udr7a9hz8aCuOZvIdqZTDWvLCzM1c5PMtVBNl+u0w7fMdAQ"}}, "unsigned": {"age_ts": 1570041588328}} a} { y w u sqomkigeca~peeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~oeeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800~neeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800~meeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~leeQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~keeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~jeeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~ieeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~heeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800~geeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~feeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~eeeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~deeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~ceeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~beeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~aeeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~`eeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~_eeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~^eeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~]eeQ$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~\eeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800~[eeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~ZeeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~YeeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800~XeeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~WeeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~VeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800~UeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~TeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~SeeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800~ReeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Me$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01Le$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1Ke$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1Je$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA1Ie$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs1He$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns1Ge$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks1Fe$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1Ee$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1De$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1Ce$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig1Be$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI1Ae$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC681@e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1?e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1>e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1=e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1<e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-41;e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz01:e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX419e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg18e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU17e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc16e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER015e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo14e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg13e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM12e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE11e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7810e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE1/e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1.e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1-e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1,e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1+e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE1*e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1)e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y1(e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1'e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1&e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01%e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01$e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1#e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU1"e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc1!e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1 e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1 e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1 e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE1 e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo1 e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg1 e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4  %eQg$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "txn_id": "140", "stream_ordering": 1289}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo"], "type": "m.room.message", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041608143, "hashes": {"sha256": "gkmetPiRAFXFt+CihzdAc7ZHegzlicJ1JCGzMTRDqCY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O86J5Zpj7n+cLKi9RUgW0KgBuWTjIJcbtryc7vQ88A9F8k+QYPhAqoeTG8yxnW9rO7U2XgHWIH8XfUk3E2piBw"}}, "unsigned": {"age_ts": 1570041608143}}VeQa9$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 284, "stream_ordering": 1288}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4"], "prev_events": ["$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ"], "type": "m.room.member", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-264:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-264", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-264:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041607391, "hashes": {"sha256": "gK12dx+3VbVZfBHTWq4TFk8AHbRh23uDppeuCOwt/GA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2P8ysSYfl7Pe5+0NVdQ9DKUEOqyIn17kzwQyAqCyZTduuWdX1l761wBrRlNnDVA/73nfb8l1aSL46vzdoP81Bw"}}, "unsigned": {"age_ts": 1570041607391}}eQa$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1287}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4"], "type": "m.room.history_visibility", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041605805, "hashes": {"sha256": "tA56pIfJ0u147aSO7vkwaWemMmS7i2uVPb73VoQjaTw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qc95q4A5B5pZr6QvQ1Dn48GHL4bXdqsbtGNXoSWIK82/Nn0NAY8Tm0vnVH2JOuX0chZNr8WmmwgyyPvAj5NhDw"}}, "unsigned": {"age_ts": 1570041605805}}teQau$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1286}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI"], "type": "m.room.join_rules", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041604762, "hashes": {"sha256": "NzvlTQOQDCoCV9yOZluewD+BU8XAarti0CHwJQPN29k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QDqFum96fTXv0C/eUXzk7C3eaKKc94nYk7B7gei5+1b67OjcWagLJv3NJ77XPOn62RDNu2lTr4HNTIamLvyWCA"}}, "unsigned": {"age_ts": 1570041604762}} N D  } K  R  Y ' ^, _ -e3 vk9r@&XxF~Lj8R p> 1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc o1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY a1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE T1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 61e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 51e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8w1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM]1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcw1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI@1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIe1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0z1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY=1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 G1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcr1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkR1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQG1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdou1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgh1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo21e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwI0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 .1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM31e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0A1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQs1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQP1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY t0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo >1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgL1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8_0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcL1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI 1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ6241e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgO1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4@1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ"1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYA1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc N  J |  P  Z( V $ \ *p> b0h6n< tBzHNj8T"  v D  1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Yy1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA&1e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs1e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs1e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag 1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag 1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c 1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90 1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90 1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90 1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM 1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkO1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkN1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg(1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg'1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg&1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAu1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAt1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAs1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8 1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8 1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8 1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw /1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw .1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw -1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k%1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM^1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM_1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k#1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk~1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I 1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR41e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUv1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUu1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUt1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I N D  } K  R  Y ' ^, _ -e3 vk9r@&XxF~Lj8R p> 1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc m1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY _1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE R1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 61e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 51e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8w1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM]1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcw1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI@1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIe1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0z1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY=1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 G1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcr1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkR1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQG1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdou1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgh1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo21e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwI0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 .1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM31e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0A1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQs1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQP1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY t0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo >1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgL1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8_0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcL1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI 1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ6241e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgI1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4:1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYA1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 5O r5 ! \   i .[ M p3~h-W CQBQ? !hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibility ^Q']!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800:Q/ !hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rulesBQ? !hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibility6Q' !hegUPDZCEEmBhsNJJR:localhost:8800m.room.create<Q3 !hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levelsz^Q']!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800y:Q/ !hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rules{BQ? !hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibility|6Q' !hZuwenlFDapIPBOyfi:localhost:8800m.room.createx9Q- !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstone3<Q3 !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels4^Q']!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800):Q/ !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rules+BQ? !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibility,6Q' !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.create(<Q3 !hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levelsg^Q']!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800f:Q/ !hWHyATwKfuznrqTiyu:localhost:8800m.room.join_ruleshBQ? !hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibilityi6Q' !hWHyATwKfuznrqTiyu:localhost:8800m.room.createe<Q3 !hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels^Q']!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800:Q/ !hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rulesBQ? !hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility6Q' !hSzBsirdPWHtVjagXn:localhost:8800m.room.create<Q3 !hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels ^Q']!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800 :Q/ !hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rules 6Q' !hNCwypIzdDZDVmCEfd:localhost:8800m.room.create <Q3 !hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels^Q']!hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800:Q/ !hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rulesBQ? !hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibility6Q' !hGsPmWXboxZZtOlsxY:localhost:8800m.room.create<Q3 !hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels^Q']!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829^Q']!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800:Q/ !hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rulesBQ? !hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility6Q' !hFwigdYZkwYNSwelRH:localhost:8800m.room.createQ<Q3 !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels^Q']!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800:Q/ !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rulesBQ? !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibility6Q' !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.create<Q3 !fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels/^Q']!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800.:Q/ !fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rules2BQ? !fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility1<Q3 !fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access06Q' !fuHSJcznvGQnoYoLPW:localhost:8800m.room.create-<Q3 !fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levelsQ L " 5Lk|eQac$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1277}{"auth_events": ["$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "type": "m.room.power_levels", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"users": {"@anon-20191002_181700-261:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041596115, "hashes": {"sha256": "egt7AQbk72RXancDZlLw7h3XqlPrGUVHKHhhOkH72dE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QT9gesGUyjgK+tn6J31uPdtP8ONY3pK+zBzyg/p/+R+9FXTtcDpC3iwqA6V20VVsKsdY6KQv/SW/ORT+GO8BDA"}}, "unsigned": {"age_ts": 1570041596115}}v{eQay$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1276}{"auth_events": ["$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU"], "prev_events": ["$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU"], "type": "m.room.member", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-261", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-261:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041595225, "hashes": {"sha256": "2BCFWCkr5hG4GfJl5ztfGb+869LfNeJk7VmEsi79PlY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4HzcN9SHqN34HVKadODm1EtYYPt1JA+P5F2EgjGa3Jt+fJdYfxuYRz0+iOZ5J9mfKYF+qw+2qX4qdXOtaTLBDA"}}, "unsigned": {"age_ts": 1570041595225}}izeQa_$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1275}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-261:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041594487, "hashes": {"sha256": "i32nUjoSBrdbkfiXhwSN7gUNQVp13spQ2q1zwi6OVoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4f4dE/YW2fSrpcheqSl8HVZoPKMC2vDe+vOcueX3NNjVA3VduW9c1emBgiablhsXn9cUT8QKesRDSNThbrbaBg"}}, "unsigned": {"age_ts": 1570041594487}}ZyeQaA$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 280, "stream_ordering": 1274}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"], "prev_events": ["$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ"], "type": "m.room.member", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-260:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-260:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041592023, "hashes": {"sha256": "aXt1MiDxJ7OEVxHyZoL+Ub4TO0kRrma8kg2oQZc+FNM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jaqi7mg4A/KVHMlGx3QavJyxvuBEBEHtUcBy9Eg6ftdb/fI/9o+354jG99rkiVmXREe+O08ZIDGbQDNhreHpBA"}}, "unsigned": {"age_ts": 1570041592023, "replaces_state": "$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"}} <(N h6b0 P   $ *  \T"Z(tBzH 8 Vn<   | J   221e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM11e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Okk1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Okj1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AC1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E11e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E01e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g "1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g !1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g 1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc 1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AD1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to z1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to y1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to x1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU i1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cu1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Oki1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Okh1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU j1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cs1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk&1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO9471e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO9461e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYj1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk'1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk(1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYd1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3ct 8l D `8]c!E@anon-20191002_181700-270:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxFSCtCXjNzWFlZI2xeX1oKMDAyZnNpZ25hdHVyZSDPXAcW6JNqPJs4riWA-zStsg-aiwS5kychQygDCDgfBQoSRSYWQDCQU127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-269:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBIdFo6SE85UUI3c2tXT1AKMDAyZnNpZ25hdHVyZSAFrwK26z26wZ38qQfYMIVB0i1v_8Hz2xQeFaaLRU2VwwoEDTNFCDRMR127.0.0.1Perl + Net::Async::HTTP/0.44mq ]c!E@anon-20191002_181700-268:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVmeFMyeTlFdTAmcXdhLEAKMDAyZnNpZ25hdHVyZSAIHU-v60P7pi1FdbOEzdxbszKriuPshWipgFf-j3oEbQoBTQHLEFFPU127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-267:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEw9MV4wSUhjLnlNOWdVKk0KMDAyZnNpZ25hdHVyZSC0r7JuAI_YJyIGJfxb0zRZBRfiDT-Bp42jtVHYGfMVnAoLUADSGSJTG127.0.0.1Perl + Net::Async::HTTP/0.44m! ]c!E@anon-20191002_181700-266:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBSMlBnb0dJWUY0UWRGcHcKMDAyZnNpZ25hdHVyZSA5TlH1MPC9AiHHA_RZQuGZo5OFkBI5DfuqzVVW_KuJoQoMREALOZRTW127.0.0.1Perl + Net::Async::HTTP/0.44m  ]c!E@anon-20191002_181700-265:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHU6ck1wSz1tVWVTMkVtVzgKMDAyZnNpZ25hdHVyZSDrXYqnfYXyORP9VnmM0xCb799bIeWZ0dEYe7F9SxtHtgoCOAARRCECC127.0.0.1Perl + Net::Async::HTTP/0.44mſ;]c!E@anon-20191002_181700-264:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdHci43UW5SQF5CQEd4U1MKMDAyZnNpZ25hdHVyZSDpw2G5Yx2gvOJSbmwv08VdYUxuigJtfQ4pOnDbSLCHBQoDYYKUWOSTJ127.0.0.1Perl + Net::Async::HTTP/0.44mų]c!E@anon-20191002_181700-263:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswoKUHOBSXQVM127.0.0.1Perl + Net::Async::HTTP/0.44mšT]c!E@anon-20191002_181700-262:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAoOLJVXJZUXG127.0.0.1Perl + Net::Async::HTTP/0.44mő']c!E@anon-20191002_181700-261:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwoHLJRYNNHWE127.0.0.1Perl + Net::Async::HTTP/0.44mŁ L+j8p> W v D  | J  P  W % + ] ^ ,d2j8p> v%D|JQ1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0*1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAj1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg 1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo01e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20N1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM)1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo71e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcs1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg ;1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 D1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg'1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU 1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwct1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0 1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 71e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkH1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y01e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE21e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwU1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkED1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYf1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E^1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 `1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hoc1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ'1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 51e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIws1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI DK?  ( | J   P  p Zj W % "N ] +>zH wTBd2tj8 p v D1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso[1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU "1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc D1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo C1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM 1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE;1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgE1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA$1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU'1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA81e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 S1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls H1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o}1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4 1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs|1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI51e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw'1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G01e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4g1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho31e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAE0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMX1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY'1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8U1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasy1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsL1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc831e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg%1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 g1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMr21e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc2 9r 4 m -f(a#ZE7 e]]Q=$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE@anon-20191002_181700-273:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800inviteanon-20191002_181700-273T6 e]]Q%G$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800joinDisplay Namehttp://example.com/avatar.pngE5 e]]Q=$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800inviteanon-20191002_181700-270,4 e]]Q$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:8800leaveC3 e]]Q=$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY@anon-20191002_181700-271:localhost:8800@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800joinanon-20191002_181700-271C2 e]]Q=$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:8800joinanon-20191002_181700-270C1 e]]Q=$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800joinanon-20191002_181700-270,0 e]]Q$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk@anon-20191002_181700-267:localhost:8800@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800leaveC/ e]]Q=$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U@anon-20191002_181700-269:localhost:8800@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800joinanon-20191002_181700-269C. e]]Q=$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o@anon-20191002_181700-268:localhost:8800@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800joinanon-20191002_181700-268C- e]]Q=$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A@anon-20191002_181700-267:localhost:8800@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800joinanon-20191002_181700-267,, e]]Q $a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU@anon-20191002_181700-266:localhost:8800@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800leaveC+ e]]Q =$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k@anon-20191002_181700-266:localhost:8800@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800joinanon-20191002_181700-266E* e]]Q =$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE@anon-20191002_181700-266:localhost:8800@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800inviteanon-20191002_181700-266C) e]]Q=$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q@anon-20191002_181700-265:localhost:8800@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800joinanon-20191002_181700-265C( e]]Q=$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo@anon-20191002_181700-264:localhost:8800@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800joinanon-20191002_181700-264C' e]]Q=$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4@anon-20191002_181700-263:localhost:8800@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800joinanon-20191002_181700-263,& e]]Q $5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA@anon-20191002_181700-262:localhost:8800@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800leaveC% e]]Q =$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk@anon-20191002_181700-262:localhost:8800@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800joinanon-20191002_181700-262C$ e]]Q=$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I@anon-20191002_181700-261:localhost:8800@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800joinanon-20191002_181700-261 L+j8p> W v D  | J  P  W % + ] ^ ,d2j8p> v%D|JQ1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAj1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg 1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo01e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20N1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM)1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo71e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcs1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg ;1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 D1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg'1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU 1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwct1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0 1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 71e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkH1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y01e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE21e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwU1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkED1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYf1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E^1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 `1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hoc1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ'1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 51e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIws1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI  %eQg$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "txn_id": "139", "stream_ordering": 1281}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk"], "type": "m.room.message", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041599378, "hashes": {"sha256": "eR5eikvhjXUnLAf/fiHJHASpgiSw17KC3SQEdlF/H7I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xI7pck/5wqAScJ+8DNK1c/BqX/pS9HCb/ra4AzcVNuZoBV2ELmg1mkb2xzFGnDw+v7uN4egS5EWTcuoWLOetCg"}}, "unsigned": {"age_ts": 1570041599378}}VeQa9$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 282, "stream_ordering": 1280}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI"], "prev_events": ["$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10"], "type": "m.room.member", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-262:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-262", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-262:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041598612, "hashes": {"sha256": "kMbV3IVZnW2v/JsbA8CPyoylbBAULS6+91i32vVUsSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+d1IySTa2zY8/mNShjRHNmpt1t0OGiid9EGBfJEylfiFjoodwsG6HwTjy5/trwZrGhB3m7JT4sTiUNFak4SvCw"}}, "unsigned": {"age_ts": 1570041598612}}~eQa$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1279}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI"], "type": "m.room.history_visibility", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041597372, "hashes": {"sha256": "txccxRISFDKmmw1+wM8xhJ5w4MI+4dQtb7+/Upm5bOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gV2FUpdAMjMGzX3GyQJPV0WCFDcFpHZEVTT4o61Q6tkxqhueEbZ0NKbP1rX63bTtHJleLcL6Tll+m9u56NZCCw"}}, "unsigned": {"age_ts": 1570041597372}}t}eQau$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1278}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0"], "type": "m.room.join_rules", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041596763, "hashes": {"sha256": "BO4cgjqyqRIsttrPDBh8JJkntf8cmDQIjHpNZ3bwX+Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RoeibG0hYZ1A57rQm4N7K52ULDZ3NWl0KBmeTW/Op3uyUqjq8BqkJ5Nxu4OksaHx/crtamoU5M85af2oA84LDw"}}, "unsigned": {"age_ts": 1570041596763}} -RM H C > 9 4/*|%w rmhc TCQe!bzPCFeFSMbCESvNbxl:localhost:8800$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohETBQe!RPfffkmSEbWggEjnoI:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBITAQe!PCgUmZOwWmtDsuFqXg:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YT@Qe!RPfffkmSEbWggEjnoI:localhost:8800$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acT?Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYT>Qe!nxLxsxzliamzflrEBs:localhost:8800$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0T=Qe!RPfffkmSEbWggEjnoI:localhost:8800$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0T<Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwT;Qe!nxLxsxzliamzflrEBs:localhost:8800$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUT:Qe!RPfffkmSEbWggEjnoI:localhost:8800$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcT9Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsT8Qe!nxLxsxzliamzflrEBs:localhost:8800$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUT7Qe!RPfffkmSEbWggEjnoI:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYT6Qe!nxLxsxzliamzflrEBs:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cT5Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcT4Qe!RPfffkmSEbWggEjnoI:localhost:8800$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIT3Qe!nxLxsxzliamzflrEBs:localhost:8800$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQT2Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcT1Qe!egbhiBqOGhloZzopol:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkT0Qe!egbhiBqOGhloZzopol:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7UT/Qe!egbhiBqOGhloZzopol:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36oT.Qe!egbhiBqOGhloZzopol:localhost:8800$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMT-Qe!egbhiBqOGhloZzopol:localhost:8800$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5AgT,Qe!egbhiBqOGhloZzopol:localhost:8800$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYT+Qe!egbhiBqOGhloZzopol:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5AT*Qe!egbhiBqOGhloZzopol:localhost:8800$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgT)Qe!KdOYYnOuwAyQzqwUki:localhost:8800$vB9qJoYdYSyxUHqoWm4X5tLXhkzmY9ELabFFbawF5LcT(Qe!KdOYYnOuwAyQzqwUki:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUT'Qe!KdOYYnOuwAyQzqwUki:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kT&Qe!KdOYYnOuwAyQzqwUki:localhost:8800$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMT%Qe!KdOYYnOuwAyQzqwUki:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSET$Qe!KdOYYnOuwAyQzqwUki:localhost:8800$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBoT#Qe!KdOYYnOuwAyQzqwUki:localhost:8800$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgT"Qe!KdOYYnOuwAyQzqwUki:localhost:8800$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkT!Qe!KdOYYnOuwAyQzqwUki:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QT Qe!KdOYYnOuwAyQzqwUki:localhost:8800$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUTQe!XNfwczePlyYFWLCaui:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzoTQe!XNfwczePlyYFWLCaui:localhost:8800$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQTQe!XNfwczePlyYFWLCaui:localhost:8800$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4TQe!XNfwczePlyYFWLCaui:localhost:8800$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjITQe!XNfwczePlyYFWLCaui:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4TQe!XNfwczePlyYFWLCaui:localhost:8800$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHATQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkTQe!PQZMTVTeCYqMZwkHvW:localhost:8800$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 L " 5LkeQac$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1285}{"auth_events": ["$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "type": "m.room.power_levels", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"users": {"@anon-20191002_181700-263:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041604106, "hashes": {"sha256": "7p88xQijN0Q5rDCPSFPS/srIvw33FTuLJiyK00bwvaU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KGVi6oNQfo4rN0g/Ak6ei51+teMo6G2WCrg3gCPD1OfQ9uzNuoxuGulxhEGw9Nuorxdy8mxZ9TSEZppXX1Q3Bg"}}, "unsigned": {"age_ts": 1570041604106}}veQay$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1284}{"auth_events": ["$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8"], "prev_events": ["$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8"], "type": "m.room.member", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-263", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-263:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041603534, "hashes": {"sha256": "Zfqiyl61HFqfURK2XAAc61NxpIKTYTvHYVvzHCs6ymQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JVmd9lh6xbTE6FeUFFOnD7yPPme765jFxqJL10ea/6vQRfKVjtZhgvarBoXdnZjdBlUXRtwjaEK1shXyzqlyCg"}}, "unsigned": {"age_ts": 1570041603534}}ieQa_$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1283}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-263:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041602486, "hashes": {"sha256": "s8bOwgPor793+vZmPhN/x+BOO4iXBhGa16iB306ck8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Pid5cjB7dFFloDu4OLWkBU91m7FJ7qVi8QEaGMD8ufBKzZNRKUhkx/0CV4vV4YqMQLGGbeaXgu+rp2dwMwrCQ"}}, "unsigned": {"age_ts": 1570041602486}}ZeQaA$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1282}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo"], "type": "m.room.member", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-262:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041600053, "hashes": {"sha256": "Tcm5hSV1dB8ocD97WtSl2WYXLuM+XJ9OC54L4RBx9Xg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UqbOyZOMFRGQ2oQ7HjkPhiPFcX//ttOT5qJaILUT1GbzJf2RD3449/vhF44OC+sIZsPf0gHOwbkXjoHZFk1GCA"}}, "unsigned": {"age_ts": 1570041600053, "replaces_state": "$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk"}} ,NC 8 - { " p  e ZOD9.|#qf V,eL$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIsha2566x x$Tt#ى4V+eL$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Ysha2562u0j3 A噄V*eL$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acsha256.)סHΉ^ű$ѹl٧V)eL$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYsha256jC=<7m~'L,_tZp~V(eL$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0sha256-ʳ>_]ViR"*G28 >V'eL$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0sha256Nё4f'r&'=#= V&eL$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwsha256cQ  `s:g~PJUc~çM\V%eL$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUsha256覺i<."OR6tDȜ5V$eL$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcsha256uF0&p&ۿ@MO=j7lC dVeL$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcsha256R%9~yI6=75s혤gVeL$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFksha25630ΣYÑ9dP VYVeL$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7Usha256mH竿j8 Bp閗HCVeL$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUsha256cˋNJ&,5mxphl2dggVeL$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36osha256"ʵm4H U dz=ߪVeL$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMsha256 eF\!@HgZي 2,&`4'(F8cVeL$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agsha256`*cKpzY>m<$6VeL$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYsha256ne`9O9SI;{'%VeL$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Asha256hH猃aPnVeL$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIsha256 W lJF`ck*Ȉ2VeL$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4sha256 BCvht,} Y>VeL$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8sha256S ~ԅ EEksX`_VeL$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAsha256,,Wø۳s 4zY~p 7J@@ @ B  B  B  D DFFFHHJ J =[!@anon-20191002_181700-35:localhost:8800EALQMPIKHOm ?]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBRmβ c?]!@anon-20191002_181700-358:localhost:8800YPZTVFTILNm)b?]!@anon-20191002_181700-357:localhost:8800TFBXZDXERTm]a?]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFNm`?]!@anon-20191002_181700-355:localhost:8800LDOCSGURJIms_?]!@anon-20191002_181700-354:localhost:8800EEONPHMPKHm^?]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRWm\?]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMPm]?]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFRm͒+[?]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAIm͒)Z=[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGAm?]!@anon-20191002_181700-349:localhost:8800IPTJJENAYSmsY?]!@anon-20191002_181700-348:localhost:8800KYSIYINERZmVX?]!@anon-20191002_181700-347:localhost:8800CFRSANQZYUm5kW?]!@anon-20191002_181700-346:localhost:8800CIUYDTNROPm5hV?]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHAm U?]!@anon-20191002_181700-343:localhost:8800QPHBRHJQMLmT?]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXPm„S?]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMWm̢VR=[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKNm?]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOHm̑*Q?]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBDmoP?]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLFmSO?]!@anon-20191002_181700-336:localhost:8800OFRRIKPQISmRN?]!@anon-20191002_181700-335:localhost:8800WEGENLHOLImMM?]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYYmKL?]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUm.K?]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGPmJ?]!@anon-20191002_181700-331:localhost:8800COONNUXFOLm$I?]!@anon-20191002_181700-330:localhost:8800TFGJMHITULmͺH=[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCBm?]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLSm˟eG?]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUOmˈ F?]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHCmnE?]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYTmPD?]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGSmHC?]!@anon-20191002_181700-324:localhost:8800KKATIXOBNFm&B?]!@anon-20191002_181700-323:localhost:8800BHOVENVWZCmA?]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTm @?]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCm??]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBm>=[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCm?]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAm=?]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJmʳQ3 e!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levels$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTci=Q3 e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.power_levels$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsi<Q3 e!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU ;Q']e!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY :Q']e!nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c 9Q']e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcc8Q' e!RPfffkmSEbWggEjnoI:localhost:8800m.room.create$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIc7Q' e!nxLxsxzliamzflrEBs:localhost:8800m.room.create$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQc6Q' e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.create$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc 5Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 4Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-269:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 3Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-268:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36oo2Q? e!egbhiBqOGhloZzopol:localhost:8800m.room.history_visibility$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMg1Q/ e!egbhiBqOGhloZzopol:localhost:8800m.room.join_rules$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agi0Q3 e!egbhiBqOGhloZzopol:localhost:8800m.room.power_levels$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY /Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Ac.Q' e!egbhiBqOGhloZzopol:localhost:8800m.room.create$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg -Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$vB9qJoYdYSyxUHqoWm4X5tLXhkzmY9ELabFFbawF5Lc ,Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU +Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kg*Q/ e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM )Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEo(Q? e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibility$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBog'Q/ e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgi&Q3 e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk %Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qc$Q' e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.create$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU #Q']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzoo"Q? e!XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibility$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQg!Q/ e!XNfwczePlyYFWLCaui:localhost:8800m.room.join_rules$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4i Q3 e!XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI Q']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4 a} { y w u sqomkigeca~eeQ$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~~eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~}eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~|eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~{eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~zeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~yeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~xeeQ$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~weeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800~veeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~ueeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800~teeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800~seeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~reeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800~qeeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800 Z`8pH h@ X 0  h @  | U .  k D  X 0 xP(`8pH xP(X0h@'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800K'Q!jveVPZSXJOJyNDebPO:localhost:8800J'Q!jveVPZSXJOJyNDebPO:localhost:8800I'Q!jveVPZSXJOJyNDebPO:localhost:8800H'Q!jveVPZSXJOJyNDebPO:localhost:8800G'Q!jveVPZSXJOJyNDebPO:localhost:8800F'Q!jveVPZSXJOJyNDebPO:localhost:8800E'Q!jveVPZSXJOJyNDebPO:localhost:8800D'Q!jomrpmwwQQtghscizn:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800X&Q!jYzridjeihmwPBuwLb:localhost:8800W&Q!jYzridjeihmwPBuwLb:localhost:8800V&Q!jYzridjeihmwPBuwLb:localhost:8800U&Q!jYzridjeihmwPBuwLb:localhost:8800T&Q!jYzridjeihmwPBuwLb:localhost:8800S&Q!jYzridjeihmwPBuwLb:localhost:8800R&Q!jYzridjeihmwPBuwLb:localhost:8800Q&Q!jYzridjeihmwPBuwLb:localhost:8800P&Q!jYzridjeihmwPBuwLb:localhost:8800O&Q!jYzridjeihmwPBuwLb:localhost:8800N&Q!jYzridjeihmwPBuwLb:localhost:8800M&Q!jYzridjeihmwPBuwLb:localhost:8800L&Q!jYzridjeihmwPBuwLb:localhost:8800K&Q!jYzridjeihmwPBuwLb:localhost:8800J&Q!jYzridjeihmwPBuwLb:localhost:8800I'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 V'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 U'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 T'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 S'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 R'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 Q'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 P'Q!jIfvTrwedrWLubsnlM:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800  g 4 h5 g31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElsOmlIcVhGQ2wyTEkzVzcKMDAyZnNpZ25hdHVyZSCzJfmtbG81Wrm2vimRJic-dEVRDEDntZmOEo-h59M2rwo+1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMuU1k6WlRjNHMzOW4zWC4KMDAyZnNpZ25hdHVyZSCm1CYMbpJeBEIlSqvHQLlTmNccB_w09A-mofLOOCns2wo)1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGh1Q2kwWEtidWhRXjBEdToKMDAyZnNpZ25hdHVyZSAI9iPJyhUOhKPHzi0-DhXtv-V-HO0MnRbZvorFZptFhQo&1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLbHpJaVAweDZDd3JiPVUKMDAyZnNpZ25hdHVyZSAsElnH6_lTGWgAUIPCduvm_LujyRBeS5_Rv8VYp_0n3Ao*1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE6ZkwqeXVWQmhvWlleLnMKMDAyZnNpZ25hdHVyZSA8StBFwTVrjsV83F87BN0vcrrxEk92vGKl74R0SlFJRwo(1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg4SzFYZkhSVzlsbjJpalcKMDAyZnNpZ25hdHVyZSBxpaFTVrHdAtO3AwwUhNdQv_6hppCrsEFY91uIeRE0Ywo'1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVlc0phJitwKngyYURqODoKMDAyZnNpZ25hdHVyZSAp6TSwG3iNBrpimH2OUgfOfHhlH7rlFKNTnyY4t3P88wo%1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAo$1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygo#1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_go!1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgo"1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwo,  4 k 9md]c@anon-20191002_181700-277:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgo127.0.0.1d]c@anon-20191002_181700-285:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE6ZkwqeXVWQmhvWlleLnMKMDAyZnNpZ25hdHVyZSA8StBFwTVrjsV83F87BN0vcrrxEk92vGKl74R0SlFJRwo127.0.0.1d]c@anon-20191002_181700-284:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg4SzFYZkhSVzlsbjJpalcKMDAyZnNpZ25hdHVyZSBxpaFTVrHdAtO3AwwUhNdQv_6hppCrsEFY91uIeRE0Ywo127.0.0.1d]c@anon-20191002_181700-283:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGh1Q2kwWEtidWhRXjBEdToKMDAyZnNpZ25hdHVyZSAI9iPJyhUOhKPHzi0-DhXtv-V-HO0MnRbZvorFZptFhQo127.0.0.1d]c@anon-20191002_181700-282:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVlc0phJitwKngyYURqODoKMDAyZnNpZ25hdHVyZSAp6TSwG3iNBrpimH2OUgfOfHhlH7rlFKNTnyY4t3P88wo127.0.0.1d]c@anon-20191002_181700-281:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAo127.0.0.1d]c@anon-20191002_181700-280:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygo127.0.0.1a[a@anon-20191002_181700-27:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCg127.0.0.1d]c@anon-20191002_181700-279:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgo127.0.0.1d]c@anon-20191002_181700-278:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_go127.0.0.1   *t eQau$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1293}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk"], "type": "m.room.join_rules", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041612747, "hashes": {"sha256": "NDEcnjd/mIlVlw1fzS587spSdk7I5Z2fHuW+k99JIlE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d3Chz8+1bGzPkYPJoP4Nj+J/oaCcmD9X21EHyN5KdGO1zWouosJDiL+SeT5lP4b8/Qh7VTNQTzUir8eyUDPxAw"}}, "unsigned": {"age_ts": 1570041612747}}k eQac$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1292}{"auth_events": ["$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "type": "m.room.power_levels", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"users": {"@anon-20191002_181700-265:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041611948, "hashes": {"sha256": "xMQwlwKv9bSijdZ6e0+ftogOTiNyFGxbJoJgyiHM36k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sBWtkiF38uiyi/Or8a7xwLyAIs3b83YypTd1CcHJ3y7b0ccienzjQo98czIyuiQTum/FaOt3D0WWLWpT7T9ICg"}}, "unsigned": {"age_ts": 1570041611948}}v eQay$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1291}{"auth_events": ["$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU"], "prev_events": ["$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-265", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-265:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041611401, "hashes": {"sha256": "tMEjjN3idwIlC6ZoK12mTSfrwSjIVn4nT/Rdryoh9Ss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L3QLGBM4TEBdXd7Dua2kVVn5H21vfiO6ZIaAF+fVwnu335lykGMOXys/OMaETbfH6bSqcgNux1JS3vRg0NDDBQ"}}, "unsigned": {"age_ts": 1570041611401}}i eQa_$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1290}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-265:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041610204, "hashes": {"sha256": "+B1UMGckwMqIgDHmRq1ZuahzhpdoL0r597LpH79mAgY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eiJJxe0F0qbPSAShCw38FDLUM1xj5grM8LK+XinH2xz/ngp93zOfpmC8oA+O0fAZ720CrtdCtTRtCiQGtsqBDw"}}, "unsigned": {"age_ts": 1570041610204}} N $ | J  V P  \ *pb0 h6 o= uC {>IOU$ ]+ v Dj8 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls|1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k}1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY-0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh081e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEV1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw:1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs21e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksG1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER061e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs[1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc-1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwH1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58'0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kka1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM51e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ041e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM.1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMO1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsx1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccj1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIu1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik@1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8M1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wT1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncY1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0A1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 #1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AC1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM .1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawl1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ 1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU w1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 01e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE '1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU b1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s ;1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ[1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec Vc;sK# [ 3 k C  { S ,  d <  t L $\5rK#]5 mE}V/iB'Q!QWLJZmJqjWZjVOjdYF:localhost:8800v'Q!QWLJZmJqjWZjVOjdYF:localhost:8800u'Q!TcCLuIBUrtFqghDgay:localhost:88009'Q!TcCLuIBUrtFqghDgay:localhost:88008&Q!TWETXUgfFZafDdbqLS:localhost:8800:&Q!TWETXUgfFZafDdbqLS:localhost:88009&Q!TWETXUgfFZafDdbqLS:localhost:88008'Q!TSFcaXDBqrCREHRHxv:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800,&Q!SyIWYOmcGiASNkPCTB:localhost:8800r&Q!SyIWYOmcGiASNkPCTB:localhost:8800q'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!StEnDjTJToXKXsOHNf:localhost:8829'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:88003'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SfYtaUhCFosNfHfUVm:localhost:8800p'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800T&Q!SBEprlZiuliFNSfNmz:localhost:8800S'Q!RmwbYvIIQyPlHlClty:localhost:8800 &Q!RmdhCjvouVLmyIHjaM:localhost:8800D&Q!RmdhCjvouVLmyIHjaM:localhost:8800C&Q!RmdhCjvouVLmyIHjaM:localhost:8800B&Q!RmdhCjvouVLmyIHjaM:localhost:8800A&Q!RmdhCjvouVLmyIHjaM:localhost:8800@&Q!RmdhCjvouVLmyIHjaM:localhost:8800?&Q!RmdhCjvouVLmyIHjaM:localhost:8800>'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:88007'Q!RSLvuCuAqKQQrKCxNq:localhost:88006'Q!RSLvuCuAqKQQrKCxNq:localhost:88005'Q!RPfffkmSEbWggEjnoI:localhost:88005'Q!RPfffkmSEbWggEjnoI:localhost:88003'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800X'Q!RDEAXrqXQizuhCUFPq:localhost:8800W'Q!RDEAXrqXQizuhCUFPq:localhost:8800V'Q!QyLUggxrTnULUAOseq:localhost:8800Q'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800T'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800$'Q!PcvmCDeVUSyJbXpTig:localhost:8800#'Q!PcvmCDeVUSyJbXpTig:localhost:8800"'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800#'Q!PUIxAaiCnbqaVbawGu:localhost:8800"'Q!PQZMTVTeCYqMZwkHvW:localhost:8800&'Q!PQZMTVTeCYqMZwkHvW:localhost:8800%'Q!PQZMTVTeCYqMZwkHvW:localhost:8800$'Q!PHkVrXAyfGkFtzSagu:localhost:8800l'Q!PHkVrXAyfGkFtzSagu:localhost:8800k'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:88004'Q!PCgUmZOwWmtDsuFqXg:localhost:88002'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800&Q!OaCEdDAiatpwYcagUb:localhost:8800*&Q!OaCEdDAiatpwYcagUb:localhost:8800)&Q!OaCEdDAiatpwYcagUb:localhost:8800( !s 1 < " 1 _ bHu 7g" eQ']$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800 eQ']$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800meQ? $-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibilitymeQ? $aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.history_visibilitymeQ? $ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibilityeeQ/ $p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rulese eQ/ $Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.join_rulese eQ/ $0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rulesg eQ3 $wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levelsg eQ3 $-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.power_levelsg eQ3 $gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels eQ']$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:8800 eQ']$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800 eQ']$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800aeQ' $ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800m.room.createaeQ' $DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800m.room.createaeQ' $-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.create eQ']$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800 eQ']$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-269:localhost:8800 eQ']$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-268:localhost:8800meQ? $IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800m.room.history_visibilitye~eQ/ $YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800m.room.join_rulesg}eQ3 $bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800m.room.power_levels |eQ']$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800a{eQ' $vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800m.room.create zeQ']$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800 yeQ']$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800exeQ/ $A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules weQ']$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800mveQ? $X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibilityeueQ/ $tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rulesgteQ3 $WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels seQ']$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800 $ w$6eQay$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1296}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE"], "type": "m.room.join_rules", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"join_rule": "invite"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041615964, "hashes": {"sha256": "m4BU1iaz8H0s15TAq0cOm/7KenbPcjqepOrSn4iHWWQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kvq56pyijL/QI0vYBTUgXtbrQMB7/iimEWLQJ3xET78s1TRToJ7OPw72laSr4zgySKAM8IkuYYhVJP/7zFBECg"}}, "unsigned": {"age_ts": 1570041615964, "replaces_state": "$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg"}}eQa7$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1295}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-266", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-266:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041615477, "hashes": {"sha256": "0kmO8vWcCLrapiKbPHWcd4pXwLndqZexrE5tXDKfgmI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "maO1c1YYmbksdGRgo3+jKLBGiGeSy3o6fgedDTT8Z5lVw2ss2B1bAHGnjA7ksln0vM9Ww+zMfT1CzbOngonuBA"}}, "unsigned": {"age_ts": 1570041615477, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-265:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-265:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-265", "avatar_url": null}, "sender": "@anon-20191002_181700-265:localhost:8800"}]}} eQa$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1294}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg"], "type": "m.room.history_visibility", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041614073, "hashes": {"sha256": "k6RBU+eJ22IL+TiL7wW1ZNLCKU+NSdT87Cu8xW+iUsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wHpadA2POTOyF4p9s40ARUqZmswghtmCeYg/Adyxltdhg+2BPmf5xMN7grIoS+NcArE1VKhHex/GTxjKTAQaCw"}}, "unsigned": {"age_ts": 1570041614073}} u(%   F C)28`1u8Q']ee,!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcpQ? e+!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibility$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acpQ? e*!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.history_visibility$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYp Q? e)!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibility$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0h Q/ e(!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0h Q/ e'!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.join_rules$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwh Q/ e&!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rules$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUj Q3 e%!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levels$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcjQ3 e$!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.power_levels$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsjQ3 e#!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU Q']e"!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY Q']e!!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc Q']e !nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cdQ' e!RPfffkmSEbWggEjnoI:localhost:8800m.room.create$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIdQ' e!nxLxsxzliamzflrEBs:localhost:8800m.room.create$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQdQ' e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.create$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc8Q']ee!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-269:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U ~Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-268:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36op}Q? e!egbhiBqOGhloZzopol:localhost:8800m.room.history_visibility$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMh|Q/ e!egbhiBqOGhloZzopol:localhost:8800m.room.join_rules$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agj{Q3 e!egbhiBqOGhloZzopol:localhost:8800m.room.power_levels$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY zQ']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5AdyQ' e!egbhiBqOGhloZzopol:localhost:8800m.room.create$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg8xQ']ee!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k8wQ']ee!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEvQ/ ee!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg uQ']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEptQ? e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibility$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBohsQ/ e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgjrQ3 e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk pX \  o ) ':R hp&$e3Q ]$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsm.room.power_levels!PCgUmZOwWmtDsuFqXg:localhost:8800m'm"7@anon-20191002_181700-270:localhost:8800&#e3Q ]$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUm.room.power_levels!nxLxsxzliamzflrEBs:localhost:8800m%m!]@anon-20191002_181700-270:localhost:8800 "e'Q ]$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYm.room.member!RPfffkmSEbWggEjnoI:localhost:8800mm4@anon-20191002_181700-271:localhost:8800 !e'Q ]$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcm.room.member!PCgUmZOwWmtDsuFqXg:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q ]$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cm.room.member!nxLxsxzliamzflrEBs:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q  ]$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIm.room.create!RPfffkmSEbWggEjnoI:localhost:8800mme@anon-20191002_181700-271:localhost:8800 e'Q  ]$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQm.room.create!nxLxsxzliamzflrEBs:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q  ]$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcm.room.create!PCgUmZOwWmtDsuFqXg:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q ] $HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkm.room.member!egbhiBqOGhloZzopol:localhost:8800 m |m <@anon-20191002_181700-267:localhost:8800 e'Q ]$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7Um.room.member!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-269:localhost:8800!e)Q ]$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUm.room.message!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-267:localhost:8800 e'Q ]$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36om.room.member!egbhiBqOGhloZzopol:localhost:8800mmy@anon-20191002_181700-268:localhost:8800,e?Q ]$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMm.room.history_visibility!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-267:localhost:8800$e/Q ]$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agm.room.join_rules!egbhiBqOGhloZzopol:localhost:8800mqmd@anon-20191002_181700-267:localhost:8800&e3Q ]$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYm.room.power_levels!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-267:localhost:8800 e'Q ]$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Am.room.member!egbhiBqOGhloZzopol:localhost:8800mWm@anon-20191002_181700-267:localhost:8800 e'Q  ]$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgm.room.create!egbhiBqOGhloZzopol:localhost:8800m~m@anon-20191002_181700-267:localhost:8800 e'Q ] $a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUm.room.member!KdOYYnOuwAyQzqwUki:localhost:8800 m{m2@anon-20191002_181700-266:localhost:8800!e)Q ] $oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpcm.room.message!KdOYYnOuwAyQzqwUki:localhost:8800 mym2@anon-20191002_181700-265:localhost:8800 e'Q ]$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1km.room.member!KdOYYnOuwAyQzqwUki:localhost:8800mm@anon-20191002_181700-266:localhost:8800$e/Q ]$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMm.room.join_rules!KdOYYnOuwAyQzqwUki:localhost:8800m\m%@anon-20191002_181700-265:localhost:8800 e'Q ]$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEm.room.member!KdOYYnOuwAyQzqwUki:localhost:8800mum@anon-20191002_181700-265:localhost:8800,e?Q ]$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBom.room.history_visibility!KdOYYnOuwAyQzqwUki:localhost:8800mm%@anon-20191002_181700-265:localhost:8800$ e/Q ]$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgm.room.join_rules!KdOYYnOuwAyQzqwUki:localhost:8800mmʙ@anon-20191002_181700-265:localhost:8800 ~z v r n j fb^ZVRNJFeeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800 eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800 eeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800 eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800 eeQ$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800 eeQ$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800eeQ$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800eeQ$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800}eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800|eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800{eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800zeeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800 \ (I\ieQa_$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1300}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-267:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041621630, "hashes": {"sha256": "8Z8f1bqNBg7UV1F8v1b1Rl6ZYrb4fjakIOk+pfn6/po"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uJPya1yZ0Z9GKzaQHzK0YcGUfuDeFkFnZjXaoQkF3NTJFzmtztQ9g5cXIJLlOvyiVeT46/IFhO03sgoXVoblDg"}}, "unsigned": {"age_ts": 1570041621630}}[eQaC$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 286, "stream_ordering": 1299}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k"], "prev_events": ["$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-266:localhost:8800", "content": {"membership": "leave"}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-266:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041618811, "hashes": {"sha256": "/teL7OwpLxpVCtxCdeqIg4AEVsdEH61CdjGPt/RUnac"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d964JD5FyIH9zc/VfrKIGulAy6+9xvpL5NcoYwr2Si4aduol8bCq5o1OEKx6kmBvMp7IfzQce2aY0Cf8gDHYAg"}}, "unsigned": {"age_ts": 1570041618811, "replaces_state": "$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k"}}eQy$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "txn_id": "141", "stream_ordering": 1298}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k"], "type": "m.room.message", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"msgtype": "m.text", "body": "before leave"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041618041, "hashes": {"sha256": "UDnAof7eT56kobFozhddasJSwhN4t67jSdqMH86ZJiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0zKnWIdVAl26EwdIa5PJT9alGLEZ2V5Zv51ndZ8k+KgKXvv/DNEFCKApJzO07Dwths4H2Iw+wqg6Hwh2xI5hDA"}}, "unsigned": {"age_ts": 1570041618041}}HeQa$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 286, "stream_ordering": 1297}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM", "$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE"], "prev_events": ["$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-266:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-266", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-266:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041617166, "hashes": {"sha256": "oabQS2xtAjUQB73g5FyeyizHB+ssKNtG/nIZtT6HvOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uRcs/SMEAYmxuWUQLbp6Hp16kVaf/AvXFVkHEHXxkV9tMvF/pqbo3nnmk9cyHwuUKQwqo/oFMnh/x2cT22SMDA"}}, "unsigned": {"age_ts": 1570041617166, "replaces_state": "$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE"}}  weZ+eQaA$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1324}{"auth_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs", "$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY"], "type": "m.room.member", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"membership": "leave"}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041639706, "hashes": {"sha256": "C20ZpNWtksrC7xMnQkQYOw/wxWqQDMLIQbci+eAuHFQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/6RCG2eOyRHVC3/FyxjaiP/MY/wTbEmbCWvaEiRCiyQ2+DtlTc1DTasM/ZURIuL+eJvn+XBWVMdgyGvm3CK1DA"}}, "unsigned": {"age_ts": 1570041639706, "replaces_state": "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"}}*eQa$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1323}{"auth_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc", "$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0"], "type": "m.room.history_visibility", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041637861, "hashes": {"sha256": "rvRZcnUUwK/mpvMO5pBB8lbIjFZL4J+fEDaLNGrD+DQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9PuuYBSr7nmO7XP9wfwRlkNwGFfrGm1JW1W7Nfc2YjBT26LnsnjS80psUJSRqR0mpdXC04qbprmAoC0VtPF3Ag"}}, "unsigned": {"age_ts": 1570041637861}})eQa$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1322}{"auth_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs", "$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw"], "type": "m.room.history_visibility", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041637860, "hashes": {"sha256": "Nt3hn7Q3a0Ll5upIzDUhIplaCWn5E/8RV+feSmrDDbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7wTbSz+R2L3t1LoebA98DYPru0GSrWRM/25PKPXYJ7McgynPDSggGof6c99OIha8sJ431Mp4WobXftvQaw9CA"}}, "unsigned": {"age_ts": 1570041637860}}(eQa$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1321}{"auth_events": ["$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU", "$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ", "$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "prev_events": ["$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU"], "type": "m.room.history_visibility", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041637858, "hashes": {"sha256": "KHQieaeeoSqRgTv8TRQsy7ff7893EA5WTmKMuSZcxY4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X7wOXsOv1LeJiyE+n3UJsoAxwG/t+8KYaPoc+7u4cIziMXRmlywOoqsKwYrmt5fRNE2m3zZYiQX0tgYg04loCw"}}, "unsigned": {"age_ts": 1570041637858}} PT)}R' { P % y N # w L ! u J  s H qFoDmBk@i>g<e:c:*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!nxLxsxzliamzflrEBs:localhost:8800)/*Q!nxLxsxzliamzflrEBs:localhost:8800&,*Q!nxLxsxzliamzflrEBs:localhost:8800#)*Q!nxLxsxzliamzflrEBs:localhost:8800 &*Q!nxLxsxzliamzflrEBs:localhost:8800$*Q!nvclDopiBLEOKBIheH:localhost:8800DJ*Q!nvclDopiBLEOKBIheH:localhost:8800CI*Q!nvclDopiBLEOKBIheH:localhost:8800BH*Q!nvclDopiBLEOKBIheH:localhost:8800AG*Q!nvclDopiBLEOKBIheH:localhost:8800@F*Q!ntuwVdUxfzNIhIKYaz:localhost:8800:<*Q!ntuwVdUxfzNIhIKYaz:localhost:88009;*Q!ntuwVdUxfzNIhIKYaz:localhost:88008:*Q!ntuwVdUxfzNIhIKYaz:localhost:880079*Q!ntuwVdUxfzNIhIKYaz:localhost:880068*Q!ntuwVdUxfzNIhIKYaz:localhost:880057*Q!ntuwVdUxfzNIhIKYaz:localhost:880046*Q!ntuwVdUxfzNIhIKYaz:localhost:880035*Q!ntuwVdUxfzNIhIKYaz:localhost:880024*Q!ntuwVdUxfzNIhIKYaz:localhost:880013*Q!ntuwVdUxfzNIhIKYaz:localhost:880002*Q!ntuwVdUxfzNIhIKYaz:localhost:8800/1*Q!ntuwVdUxfzNIhIKYaz:localhost:8800.0*Q!ntuwVdUxfzNIhIKYaz:localhost:8800-/*Q!ntuwVdUxfzNIhIKYaz:localhost:8800,.*Q!ntuwVdUxfzNIhIKYaz:localhost:8800+-*Q!ntuwVdUxfzNIhIKYaz:localhost:8800*,*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 1*Q!nfxDdcgDfooxyiAzaB:localhost:8800 0*Q!nfxDdcgDfooxyiAzaB:localhost:8800 /*Q!nfxDdcgDfooxyiAzaB:localhost:8800 .*Q!nfxDdcgDfooxyiAzaB:localhost:8800 -*Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D M ~ L 9 ' R S_  X &!   k _j -eq? wFMY38q? - w E1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os>1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg =1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ_1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew \1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 j1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMG1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY f1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYS1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 41e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW041e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcD1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak`1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo01e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI'1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcu1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo 1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEv1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEH1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM61e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok*1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10m1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY91e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg"11e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 E1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgz1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsM1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw.1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI 1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY-1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo J1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg &  eQa$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1304}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag"], "type": "m.room.history_visibility", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041624540, "hashes": {"sha256": "/BfBzEJ9RZ9fZdVnTJCH3ShXaYQ2FxtIH/tKlketDXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D4cUO/JnC3GWEBOlMH2CisDdIlGrwaX0EXSGI0AsxVKi5yk4pNgJI5xzxwS25t2UL5zZtv+2pZv10MkuUNujCQ"}}, "unsigned": {"age_ts": 1570041624540}}teQau$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1303}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY"], "type": "m.room.join_rules", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041623665, "hashes": {"sha256": "ptJwR7eukAxljrqJNIkX0zANdHW9bFJRAbvehr6KxhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pojip8CPd2TZKIKbd4WL/yw4dCsqJMNcTEUH9XQuFpm0ZndDvKOGRgX2gx1M2KJ/gm+ldBD9RZqpeDyOi8NEDA"}}, "unsigned": {"age_ts": 1570041623665}}keQac$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1302}{"auth_events": ["$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "type": "m.room.power_levels", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"users": {"@anon-20191002_181700-267:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041622923, "hashes": {"sha256": "4/zfoMxAh8mrIYUAQ2zHYwtL0DiDubdhGpbDVVFvrkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nTa61KivznYRWsO7U25pdz7Dd7aE9+DPNCswrWPLBt1Ccuya3rgNUcRd3eOOLbG/ey59APiBENSUBcGWlDC8Dg"}}, "unsigned": {"age_ts": 1570041622923}}veQay$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1301}{"auth_events": ["$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg"], "prev_events": ["$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-267", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-267:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041622359, "hashes": {"sha256": "AoAvCf3bGDXvo9axELHMR6gNom+nbQLkL1p8uJg8Krk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kPXovtVWbXPbcKjZ8TjjcAiuA/BYs5wumlBZWQajpdsMTfgl5GhUB6j8npcP09kf3kFxKuYEGdcUEJnfnufcCQ"}}, "unsigned": {"age_ts": 1570041622359}} a} { y w u sqomkigeca~.eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~-eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800~,eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800~+eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~*eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800~)eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~(eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~'eeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800~&eeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~%eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800~$eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~#eeQ$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~"eeQ$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~!eeQ$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~ eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800~eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800~eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800 -RM H C > 9 4/*|%w rmhc TJQeD!rJhSRzmWBQHlIhuDXT:localhost:8800$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68TIQeC!rJhSRzmWBQHlIhuDXT:localhost:8800$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_ITHQeB!rJhSRzmWBQHlIhuDXT:localhost:8800$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcTGQeA!rJhSRzmWBQHlIhuDXT:localhost:8800$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUITFQe@!rJhSRzmWBQHlIhuDXT:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owTEQe?!rJhSRzmWBQHlIhuDXT:localhost:8800$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4TDQe>!fsbkkRBZlUcBVVfMME:localhost:8800$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0TCQe=!fsbkkRBZlUcBVVfMME:localhost:8800$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4TBQeQe8!bzPCFeFSMbCESvNbxl:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoT=Qe7!bzPCFeFSMbCESvNbxl:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgT<Qe6!bzPCFeFSMbCESvNbxl:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMT;Qe5!bzPCFeFSMbCESvNbxl:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWET:Qe4!bzPCFeFSMbCESvNbxl:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78T9Qe3!bzPCFeFSMbCESvNbxl:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUET8Qe2!bzPCFeFSMbCESvNbxl:localhost:8800$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkT7Qe1!bzPCFeFSMbCESvNbxl:localhost:8800$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwT6Qe0!bzPCFeFSMbCESvNbxl:localhost:8800$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsT5Qe/!bzPCFeFSMbCESvNbxl:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQT4Qe.!bzPCFeFSMbCESvNbxl:localhost:8800$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohET3Qe-!RPfffkmSEbWggEjnoI:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIT2Qe,!PCgUmZOwWmtDsuFqXg:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YT1Qe+!RPfffkmSEbWggEjnoI:localhost:8800$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acT0Qe*!PCgUmZOwWmtDsuFqXg:localhost:8800$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYT/Qe)!nxLxsxzliamzflrEBs:localhost:8800$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0T.Qe(!RPfffkmSEbWggEjnoI:localhost:8800$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0T-Qe'!PCgUmZOwWmtDsuFqXg:localhost:8800$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwT,Qe&!nxLxsxzliamzflrEBs:localhost:8800$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUT+Qe%!RPfffkmSEbWggEjnoI:localhost:8800$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcT*Qe$!PCgUmZOwWmtDsuFqXg:localhost:8800$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsT)Qe#!nxLxsxzliamzflrEBs:localhost:8800$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUT(Qe"!RPfffkmSEbWggEjnoI:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYT'Qe!!PCgUmZOwWmtDsuFqXg:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcT&Qe !nxLxsxzliamzflrEBs:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cT%Qe!RPfffkmSEbWggEjnoI:localhost:8800$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIT$Qe!nxLxsxzliamzflrEBs:localhost:8800$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQT#Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcT"Qe!egbhiBqOGhloZzopol:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkT!Qe!egbhiBqOGhloZzopol:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7UT Qe!egbhiBqOGhloZzopol:localhost:8800$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUTQe!egbhiBqOGhloZzopol:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36oTQe!egbhiBqOGhloZzopol:localhost:8800$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 2T~Q$L ~ Q $ V)uH ^ 1  u J  p C  b 6 g: Z-zM l?^yk> +Q !lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 4 4,Q!lEJUJZxqZPKZetemiR:localhost:8800 3 3,Q!lEJUJZxqZPKZetemiR:localhost:8800 2 2,Q!lEJUJZxqZPKZetemiR:localhost:8800 1 1,Q!lEJUJZxqZPKZetemiR:localhost:8800 0 0,Q!lEJUJZxqZPKZetemiR:localhost:8800 / /,Q!lEJUJZxqZPKZetemiR:localhost:8800 . . ,,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800   ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800+Q !mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800+Q !mOrKBPhetifKHDmElM:localhost:8800,Q!mMsxpaIlcykPuOnDyl:localhost:8800 ~~,Q!mMsxpaIlcykPuOnDyl:localhost:8800 }},Q!mMsxpaIlcykPuOnDyl:localhost:8800||,Q!mMsxpaIlcykPuOnDyl:localhost:8800{{,Q!mMsxpaIlcykPuOnDyl:localhost:8800zz,Q!mMsxpaIlcykPuOnDyl:localhost:8800yy,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 +Q !laUExtszUaoCpZoyEq:localhost:8800 ,Q!mMsxpaIlcykPuOnDyl:localhost:8800xx,Q!mMsxpaIlcykPuOnDyl:localhost:8800ww,Q!mMsxpaIlcykPuOnDyl:localhost:8800vv+Q !mMsxpaIlcykPuOnDyl:localhost:8800uu,Q!mBQpGaIiadEuKBXfOw:localhost:8800MM,Q!mBQpGaIiadEuKBXfOw:localhost:8800LL,Q!mBQpGaIiadEuKBXfOw:localhost:8800KK,Q!mBQpGaIiadEuKBXfOw:localhost:8800JJ,Q!mBQpGaIiadEuKBXfOw:localhost:8800II,Q!mBQpGaIiadEuKBXfOw:localhost:8800HH,Q!mBQpGaIiadEuKBXfOw:localhost:8800GG+Q !mBQpGaIiadEuKBXfOw:localhost:8800FF*Q!loalEsWaTYwrVUNJLr:localhost:8800))*Q!loalEsWaTYwrVUNJLr:localhost:8800((*Q!loalEsWaTYwrVUNJLr:localhost:8800''*Q!loalEsWaTYwrVUNJLr:localhost:8800&&*Q!loalEsWaTYwrVUNJLr:localhost:8800%%)Q !loalEsWaTYwrVUNJLr:localhost:8800$$,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RR,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QQ,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PP,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OO,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NN+Q !lMRBkbYJDQHgdBZBFJ:localhost:8800MM,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 Y,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 8 8,Q!lEJUJZxqZPKZetemiR:localhost:8800 7 7,Q!lEJUJZxqZPKZetemiR:localhost:8800 6 6,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 5 5 2T~Q$L ~ Q $ V)uH ^ 1  u J  p C  b 6 g: Z-zM l?^yk> +Q !lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 4 4,Q!lEJUJZxqZPKZetemiR:localhost:8800 3 3,Q!lEJUJZxqZPKZetemiR:localhost:8800 2 2,Q!lEJUJZxqZPKZetemiR:localhost:8800 1 1,Q!lEJUJZxqZPKZetemiR:localhost:8800 0 0,Q!lEJUJZxqZPKZetemiR:localhost:8800 / /,Q!lEJUJZxqZPKZetemiR:localhost:8800 . . ,,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800   ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800+Q !mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800+Q !mOrKBPhetifKHDmElM:localhost:8800,Q!mMsxpaIlcykPuOnDyl:localhost:8800 ~~,Q!mMsxpaIlcykPuOnDyl:localhost:8800 }},Q!mMsxpaIlcykPuOnDyl:localhost:8800||,Q!mMsxpaIlcykPuOnDyl:localhost:8800{{,Q!mMsxpaIlcykPuOnDyl:localhost:8800zz,Q!mMsxpaIlcykPuOnDyl:localhost:8800yy,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 +Q !laUExtszUaoCpZoyEq:localhost:8800 ,Q!mMsxpaIlcykPuOnDyl:localhost:8800xx,Q!mMsxpaIlcykPuOnDyl:localhost:8800ww,Q!mMsxpaIlcykPuOnDyl:localhost:8800vv+Q !mMsxpaIlcykPuOnDyl:localhost:8800uu,Q!mBQpGaIiadEuKBXfOw:localhost:8800MM,Q!mBQpGaIiadEuKBXfOw:localhost:8800LL,Q!mBQpGaIiadEuKBXfOw:localhost:8800KK,Q!mBQpGaIiadEuKBXfOw:localhost:8800JJ,Q!mBQpGaIiadEuKBXfOw:localhost:8800II,Q!mBQpGaIiadEuKBXfOw:localhost:8800HH,Q!mBQpGaIiadEuKBXfOw:localhost:8800GG+Q !mBQpGaIiadEuKBXfOw:localhost:8800FF*Q!loalEsWaTYwrVUNJLr:localhost:8800))*Q!loalEsWaTYwrVUNJLr:localhost:8800((*Q!loalEsWaTYwrVUNJLr:localhost:8800''*Q!loalEsWaTYwrVUNJLr:localhost:8800&&*Q!loalEsWaTYwrVUNJLr:localhost:8800%%)Q !loalEsWaTYwrVUNJLr:localhost:8800$$,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RR,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QQ,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PP,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OO,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NN+Q !lMRBkbYJDQHgdBZBFJ:localhost:8800MM,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 Y,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 8 8,Q!lEJUJZxqZPKZetemiR:localhost:8800 7 7,Q!lEJUJZxqZPKZetemiR:localhost:8800 6 6,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 5 5  &IeQ?A$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk!egbhiBqOGhloZzopol:localhost:8800{"stream_ordering": 1308}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-267:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041629308, "hashes": {"sha256": "qTxOabzjZQKqDWSLQqv/bEWrjjMWTH0nUUdpC+2j3L0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TqM2Q7yTka4zh/RheTO6Br2jMwXRTx79f1tjipfEGBlvNlQaXNrH8mQztd+Eq7bCrbJFehwrdeqthY+3/NLYDQ"}}, "unsigned": {"age_ts": 1570041629308, "replaces_state": "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"}}VeQa9$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800{"token_id": 289, "stream_ordering": 1307}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag"], "prev_events": ["$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-269:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-269", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-269:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041627339, "hashes": {"sha256": "45RiAtG1QR7jmXTuAM5G94mr9nXr4W9Z3t+BWSZWqOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sy07Bn6J72bNDwn8FF6k17wM7mTO023DWdqCJ+4beTxJVnONYjCOE8m8+rnCXcYAf8R3wiet5C1X1wJI5p15Bg"}}, "unsigned": {"age_ts": 1570041627339}}eQk$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "txn_id": "142", "stream_ordering": 1306}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o"], "type": "m.room.message", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"body": "body1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041626852, "hashes": {"sha256": "8NpyCXlKSec5m2yU0POQgfEH4x7eDoLTy2mYnvfV+fU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DSi6P1Y6S41pq89u++1YsDq5KqE72RJW7xjiRkQ0X8dqIsnSaY8NgEFVkZkT1ol3nr05gJYJ8zIEzXULGTbQDg"}}, "unsigned": {"age_ts": 1570041626852}}VeQa9$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800{"token_id": 288, "stream_ordering": 1305}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag"], "prev_events": ["$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-268:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-268", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-268:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041625872, "hashes": {"sha256": "TSvfwgPfs3C3sr82F/UZvGbIKeoo2/DxKTCsQlRAOKA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fFCmRAAN/0HIQ6PJZye737yacEz26+y/9So8xjfT6od3NhA6rfxx3/xCQYvVw1YMvX+a7FDhSCNjBtpIHnP3Dw"}}, "unsigned": {"age_ts": 1570041625872}} < Z x  % C a9Wu" @^| nN]@anon-20191002_181700-284:localhost:8800@anon-20191002_181700-284:localhost:8800 anon-20191002_181700-284nM]@anon-20191002_181700-283:localhost:8800@anon-20191002_181700-283:localhost:8800 anon-20191002_181700-283nL]@anon-20191002_181700-282:localhost:8800@anon-20191002_181700-282:localhost:8800 anon-20191002_181700-282nK]@anon-20191002_181700-281:localhost:8800@anon-20191002_181700-281:localhost:8800 anon-20191002_181700-281nJ]@anon-20191002_181700-280:localhost:8800@anon-20191002_181700-280:localhost:8800 anon-20191002_181700-280nI]@anon-20191002_181700-279:localhost:8800@anon-20191002_181700-279:localhost:8800 anon-20191002_181700-279nH]@anon-20191002_181700-277:localhost:8800@anon-20191002_181700-277:localhost:8800 anon-20191002_181700-277nG]@anon-20191002_181700-276:localhost:8800@anon-20191002_181700-276:localhost:8800 anon-20191002_181700-276nF]@anon-20191002_181700-273:localhost:8800@anon-20191002_181700-273:localhost:8800 anon-20191002_181700-273aE]w@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-272:localhost:8800 Display NamenC]@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800 anon-20191002_181700-270nB]@anon-20191002_181700-269:localhost:8800@anon-20191002_181700-269:localhost:8800 anon-20191002_181700-269nA]@anon-20191002_181700-268:localhost:8800@anon-20191002_181700-268:localhost:8800 anon-20191002_181700-268n?]@anon-20191002_181700-265:localhost:8800@anon-20191002_181700-265:localhost:8800 anon-20191002_181700-265n>]@anon-20191002_181700-264:localhost:8800@anon-20191002_181700-264:localhost:8800 anon-20191002_181700-264n=]@anon-20191002_181700-263:localhost:8800@anon-20191002_181700-263:localhost:8800 anon-20191002_181700-263n<]@anon-20191002_181700-261:localhost:8800@anon-20191002_181700-261:localhost:8800 anon-20191002_181700-261n;]@anon-20191002_181700-259:localhost:8800@anon-20191002_181700-259:localhost:8800 anon-20191002_181700-259qn:]@anon-20191002_181700-257:localhost:8800@anon-20191002_181700-257:localhost:8800 anon-20191002_181700-257n9]@anon-20191002_181700-254:localhost:8800@anon-20191002_181700-254:localhost:8800 anon-20191002_181700-254n8]@anon-20191002_181700-253:localhost:8800@anon-20191002_181700-253:localhost:8800 anon-20191002_181700-253n7]@anon-20191002_181700-252:localhost:8800@anon-20191002_181700-252:localhost:8800 anon-20191002_181700-252n6]@anon-20191002_181700-251:localhost:8800@anon-20191002_181700-251:localhost:8800 anon-20191002_181700-251n5]@anon-20191002_181700-250:localhost:8800@anon-20191002_181700-250:localhost:8800 anon-20191002_181700-250n4]@anon-20191002_181700-249:localhost:8800@anon-20191002_181700-249:localhost:8800 anon-20191002_181700-249n3]@anon-20191002_181700-248:localhost:8800@anon-20191002_181700-248:localhost:8800 anon-20191002_181700-248nD]@anon-20191002_181700-271:localhost:8800@anon-20191002_181700-271:localhost:8800 anon-20191002_181700-271 +gZ ^ k x ' 4 A N [ hu$1>Mgt#P]Q@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800P]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800P]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800P]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800N[Q@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800P]Q@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800P]Q@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800P]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800P]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800P]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800P]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800P]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800P]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800P]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800P]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800P]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800 Ly ; V $j ^ -s y g 5  M 8AmNT" \* G   b1G k9rA1e1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV01e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB81e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI0e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUd1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMX0e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM21e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE*1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0s1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE0e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEj1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIr1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs0e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK881e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4P1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590z1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc 1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y41e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYge1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM{1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HoE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE\1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM=1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEM1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM61e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888/1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI-1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g0e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA?0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gy1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc0e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkF1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr00e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI#0e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk\1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMa1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wt1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAi1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08e1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg^1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w>1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I;1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY61e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g051e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMW0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo 0e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo<1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE 1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8 ,`m^ k x ' 4 C P ] ly(5DQz)P]Q@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800_P]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800^P]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800]N[Q@anon-20191002_181700-29:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800YP]Q@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800P]Q@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800P]Q@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800P]Q@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800~N[Q@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800P]Q@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800}P]Q@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800|P]Q@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800{P]Q@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800zP]Q@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800yP]Q@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800xP]Q@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800wP]Q@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800vP]Q@anon-20191002_181700-321:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800uP]Q@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800tN[Q@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800P]Q@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800sP]Q@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800rP]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800qP]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800pP]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800mP]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800nP]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800oP]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800lN[Q@anon-20191002_181700-30:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800kP]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800jP]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800iP]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800gP]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hP]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800eP]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800fP]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800dP]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800cP]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800bP]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800aP]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800` E  &9Ev eQay$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1313}{"auth_events": ["$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc"], "prev_events": ["$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc"], "type": "m.room.member", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-270", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041632718, "hashes": {"sha256": "zP1xyH/MBBdjx9qhyP5glpdgYtoOXGgXlg3nnNi227o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OlAaCbIUiMFx6wk2YXQ/kzkiW8LfBB57g7DW4CmwVc039LeFtjavETCgnbRSnRYoPrW3m6uMcrbfxaQANd0ODg"}}, "unsigned": {"age_ts": 1570041632718}}veQay$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1312}{"auth_events": ["$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ"], "prev_events": ["$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ"], "type": "m.room.member", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-270", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041632720, "hashes": {"sha256": "YqO5K4py28xYuIlISfDHFobVHa1Sy9FbEsObvPwjEfY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "spdbWrj9uGA4tRj0pnvURCBNQXBNmbrsJ1ojDQQ7SSYiU4KcmZwDRBz2cB6ctZgiu9mZgfBFh6wl4ZdKExCvDA"}}, "unsigned": {"age_ts": 1570041632720}}ieQa_$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1311}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-271:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041631442, "hashes": {"sha256": "/NgSbL5NGLBnZDhhnq5Ay9QuCT/923OYzCHb5w5TrW8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q8AGtKRV44LM5Tjtuwr0VgRPHue8cb/+5AsuZvhE9knsdCMsVkMOR9S7/SQ1vAWoZWUw68bG6Mm/hBy8F6nRBQ"}}, "unsigned": {"age_ts": 1570041631442}}ieQa_$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1310}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-270:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041631441, "hashes": {"sha256": "cqgmNcz16mZEmOR3Up0yAFtqWRxT5rmJgq992H09izA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d4voPkphY6NHpe0rTnTIhMDlv7RSbFgiILBfthMIgG8ROECza0HqE0I+j0LGNnDZBvcTkphi2S53F9Kpt1uzDw"}}, "unsigned": {"age_ts": 1570041631441}}ieQa_$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1309}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-270:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041631440, "hashes": {"sha256": "ZkDNd2+Tk9acqTpXu4lMva6Ghge5grbLMjHreDfMIQM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MzeePuoSinmu8Np7myguHsvHzQAtsNikN7oEPoRjwUlNk/S5jll21p5pL7zQupMuKlwRzw29E3441NLUx5NvAA"}}, "unsigned": {"age_ts": 1570041631440}} A )q '? Y x F  ~ M   > !ZS!wE }L/`i78 b 0i70e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08#0e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s 1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV00e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYv0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk0e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac]1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUV0e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g<1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk0e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagM1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIo20e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo&1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc}1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY=1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks[0e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0P0e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk11e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52oE1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0K1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE0e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts80e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So6d1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 S0e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04MI0e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I41e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8pj21e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8^1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv41e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w0e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ91e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg]1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIJ0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ1e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk:1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4I0e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwZ1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH0421e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&m?>l>=k=<j;:i:9h98g87f65e54d43c32b10a0/`/._.-^,+]+*\*)[)(Z'&Y&%X%$W$#V"!U! T SRQPONMLKJIHGFE D  C  B  A @?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM{LKJ~I~}H}|G{zFzyEyxDxwCwuBvsAtk@sr?rq>qp=po<on;nm:li9kg8jW7ih6hf5ge4fd3ec2db1ca0b`/a_.`^-_],^\+\[*[Z)ZY(YX'WV&VU%UT$TS#SR"RP!QP POONNMMLLKKJJIIHGEF?EDDCCBBAA@?>>==<<; ;: :9 86 70 65544332210//..--,,+*(~)"}('|'&{&%z%$y$#x"!w! v utsrqponmlkjihg f  e  d  c  b a`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   k#eQac$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1316}{"auth_events": ["$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "type": "m.room.power_levels", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"users": {"@anon-20191002_181700-270:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041634343, "hashes": {"sha256": "75aX/ZnE4gApcBPXEAiKes5yndjz6t3I4u1pldB62Sg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s5XTJcJeApo7sgfdCLH6qez6EgPnVQjFSwWUQ6EUf+Glr8gmATiVoYvlBziBd7FOA1P9bOFJY3QIE25AeQnJAg"}}, "unsigned": {"age_ts": 1570041634343}}k"eQac$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1315}{"auth_events": ["$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ", "$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "prev_events": ["$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "type": "m.room.power_levels", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"users": {"@anon-20191002_181700-270:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041634341, "hashes": {"sha256": "q8jfvSvEeZjRQxB0hc0jBTsGmdJ4GD9Na7/J75iM3P8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PYIlnaWWv21ScLUcXhsAwBrCTclfz6znn+45ppOS7hA179Bh6THQRXniFalxxO4anNOYsp2/FpB+63yqfFbHAg"}}, "unsigned": {"age_ts": 1570041634341}}v!eQay$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1314}{"auth_events": ["$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI"], "prev_events": ["$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI"], "type": "m.room.member", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-271", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-271:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041632722, "hashes": {"sha256": "PDhYQYXmWSyou0bh9IAGFCzoJK7ZxkewxkGeTbFGgbo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wl3QREtGuvpa14vjMZ655HXcLymfgzaIQuHGW6v8AVg7z6lY/ij+utKc53hLt7KnKgeHR3CI/KT+vfngS8GaAw"}}, "unsigned": {"age_ts": 1570041632722}} RZ  :  N%M0\a%*RRRRRm]eQ? $8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibilitye\eQ/ $mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rulesg[eQ3 $Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels ZeQ']$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800joinaYeQ' $dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800m.room.createmXeQ? $9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibilityeWeQ/ $3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rulesgVeQ3 $QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels UeQ']$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800joinaTeQ' $soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.createmSeQ? $d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibilityeReQ/ $fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rulesgQeQ3 $vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levels PeQ']$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800joinNeQ']$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800leaveLeQ']$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800invite -aOeQ' $VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800m.room.create MeQ']$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800joinmIeQ? $7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibilityeHeQ/ $Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rulesgGeQ3 $Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levels FeQ']$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800joinaEeQ' $LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.createDeQ']$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800invite mBeQ? $-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibility pm@eQ? $ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibilitye?eQ/ $p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules,he=eQ/ $0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rulesg<eQ3 $wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levelsjg:eQ3 $gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels ) )t'eQau$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1320}{"auth_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc", "$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc"], "type": "m.room.join_rules", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041636412, "hashes": {"sha256": "JEhi2wRD0Z98ETfDJGVW8h1Uqe9qPkuIGacHZ3pmAwU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3eUBbzmLktX6MsTijlqnXXW0Jtt3PV4fHz8R6YwjZcBEL5kxLdH5gjgskNfnUo1mXwZxjrQqt+MKGD5AmkSbDA"}}, "unsigned": {"age_ts": 1570041636412}}t&eQau$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1319}{"auth_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs", "$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs"], "type": "m.room.join_rules", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041636409, "hashes": {"sha256": "vFbh6BDW7+TpSLDVK0o6KhtCFPHHTP9GMDrMBJx7dFg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rk5FNMsIftQt0Wy3AbDnTg83vFXj+K9Iovag3loIXJM8PbA7UnTTuuU/KkeAnugR/wFIkkt88DQIKz++dIiiDg"}}, "unsigned": {"age_ts": 1570041636409}}t%eQau$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1318}{"auth_events": ["$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU", "$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ", "$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "prev_events": ["$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU"], "type": "m.room.join_rules", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041636407, "hashes": {"sha256": "71yNNTnMg+pzthP0XbxpxhiABphBsOsxb9ervCa5Nu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e2ozBOd3AmsOt41toj9bX7Ep2W7COpbnYgZ9fwzpKtAJtvmJKvAhMyaLaoxxoZjzGfOkN2fKcKuzgWYt8ANoCA"}}, "unsigned": {"age_ts": 1570041636407}}k$eQac$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1317}{"auth_events": ["$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "type": "m.room.power_levels", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"users": {"@anon-20191002_181700-271:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041634348, "hashes": {"sha256": "pEBtyghlJ3Dl3BRB5FSyu2UWe3DxEYWanSgcbG+EyEg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ByetpOPgZkpHHCnyThrordtgKHTtjJiBmb1uzA3Xnf6EvUANd0UZg2Qta6bGM+hyRfmUy7wmLiMi9GfCvVc7Cg"}}, "unsigned": {"age_ts": 1570041634348}} NV ^ N  dnv.DN$<e/Q ]$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgm.room.join_rules!fsbkkRBZlUcBVVfMME:localhost:8800mvmw@anon-20191002_181700-276:localhost:8800&;e3Q ]$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUm.room.power_levels!fsbkkRBZlUcBVVfMME:localhost:8800msmtE@anon-20191002_181700-276:localhost:8800 :e'Q ]$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gcm.room.member!fsbkkRBZlUcBVVfMME:localhost:8800mp(mqF@anon-20191002_181700-276:localhost:88009 e'Q  ]$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0m.room.create!fsbkkRBZlUcBVVfMME:localhost:8800mjmk@anon-20191002_181700-276:localhost:8800 8e'Q ] $PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYom.room.member!bzPCFeFSMbCESvNbxl:localhost:8800 mcmev@anon-20191002_181700-274:localhost:8800 7e'Q ] $uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800 maWma@anon-20191002_181700-274:localhost:8800 6e'Q ] $g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800 m^0m^@anon-20191002_181700-273:localhost:8800 5e'Q ]$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mYmZP@anon-20191002_181700-272:localhost:8800 4e'Q ]$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78m.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mWmW@anon-20191002_181700-272:localhost:8800 3e'Q ]$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mTmUS@anon-20191002_181700-272:localhost:8800,2e?Q ]$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Okm.room.history_visibility!bzPCFeFSMbCESvNbxl:localhost:8800mPmR@anon-20191002_181700-272:localhost:8800$1e/Q ]$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgwm.room.join_rules!bzPCFeFSMbCESvNbxl:localhost:8800mNcmO%@anon-20191002_181700-272:localhost:8800&0e3Q ]$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsm.room.power_levels!bzPCFeFSMbCESvNbxl:localhost:8800mKmL@anon-20191002_181700-272:localhost:8800 /e'Q ]$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mHmJ>@anon-20191002_181700-272:localhost:8800. e'Q  ]$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEm.room.create!bzPCFeFSMbCESvNbxl:localhost:8800mCmD@anon-20191002_181700-272:localhost:8800 -e'Q ]$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIm.room.member!RPfffkmSEbWggEjnoI:localhost:8800m4m7@anon-20191002_181700-271:localhost:8800 ,e'Q ]$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Ym.room.member!PCgUmZOwWmtDsuFqXg:localhost:8800m3m6@anon-20191002_181700-270:localhost:8800,+e?Q ]$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acm.room.history_visibility!RPfffkmSEbWggEjnoI:localhost:8800m+m0@anon-20191002_181700-271:localhost:8800,*e?Q ]$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYm.room.history_visibility!PCgUmZOwWmtDsuFqXg:localhost:8800m+m0P@anon-20191002_181700-270:localhost:8800,)e?Q ]$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0m.room.history_visibility!nxLxsxzliamzflrEBs:localhost:8800m+m/@anon-20191002_181700-270:localhost:8800$(e/Q ]$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0m.room.join_rules!RPfffkmSEbWggEjnoI:localhost:8800m&<m)@anon-20191002_181700-271:localhost:8800$'e/Q ]$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwm.room.join_rules!PCgUmZOwWmtDsuFqXg:localhost:8800m&9m(@anon-20191002_181700-270:localhost:8800$&e/Q ]$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUm.room.join_rules!nxLxsxzliamzflrEBs:localhost:8800m&7m'@anon-20191002_181700-270:localhost:8800&%e3Q ]$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcm.room.power_levels!RPfffkmSEbWggEjnoI:localhost:8800m,m"@anon-20191002_181700-271:localhost:8800 8l D `8]c!E@anon-20191002_181700-281:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAoHVGEGIPOZP127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-280:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygoPLHJASTUFR127.0.0.1Perl + Net::Async::HTTP/0.44mƳЃ]c!E@anon-20191002_181700-279:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgoDVKCMEFQMC127.0.0.1Perl + Net::Async::HTTP/0.44mƘ9]c!E@anon-20191002_181700-278:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_goOHJBILRNUP127.0.0.1Perl + Net::Async::HTTP/0.44mƔ]c!E@anon-20191002_181700-277:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgoYSVOUTLGFP127.0.0.1Perl + Net::Async::HTTP/0.44mƄ`]c!E@anon-20191002_181700-276:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwoPBSDTTCZKK127.0.0.1Perl + Net::Async::HTTP/0.44mj]c!E@anon-20191002_181700-274:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6Kkl4PTlUVU5KR3FheHoKMDAyZnNpZ25hdHVyZSBEN8WLrmQ2ofBQpLcVp4rDef2c2cjqk-3Tk2HecBbGhQoRXKZBCJOXK127.0.0.1Perl + Net::Async::HTTP/0.44m[t]c!E@anon-20191002_181700-273:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0wRXVIdkQyT1RQcUZlMV8KMDAyZnNpZ25hdHVyZSCLKe7rBRRX4aJO_x_3H4GczclWYX5FRJw6F5fXglIgTAoSZMGOEVXQW127.0.0.1Perl + Net::Async::HTTP/0.44m[s]c!E@anon-20191002_181700-272:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVjBCO0NjMSswVWZoLHAKMDAyZnNpZ25hdHVyZSDv6IXplpGvW3jlO-0FOtxQ-E9qECaMgAeY8CAFUiL5ogoNRGYAKPXEL127.0.0.1Perl + Net::Async::HTTP/0.44mA}]c!E@anon-20191002_181700-271:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBESiZaMFpHcjBoMG9kaHYKMDAyZnNpZ25hdHVyZSB3cWspWGVRCZ23VJaGDJZEBWFBnLLtl-E0M7Fd3yI2JgoEYEJMZUSJY127.0.0.1Perl + Net::Async::HTTP/0.44m Sl-x9 e H - M 6   K .  ] : f I . Nz;mR/~g( O8H+z_<E( 9>']m.room.member@anon-20191002_181700-286:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-284:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-283:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-282:localhost:8800>']m.room.member@anon-20191002_181700-281:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-280:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-279:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-277:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-276:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-274:localhost:8800>']m.room.member@anon-20191002_181700-274:localhost:8800>']m.room.member@anon-20191002_181700-273:localhost:8800>']m.room.member@anon-20191002_181700-275:localhost:8800>']m.room.member@anon-20191002_181700-274:localhost:8800>']m.room.member@anon-20191002_181700-273:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-272:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-270:localhost:8800>']m.room.member@anon-20191002_181700-270:localhost:8800"? m.room.history_visibility"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-271:localhost:8800>']m.room.member@anon-20191002_181700-270:localhost:8800>']m.room.member@anon-20191002_181700-270:localhost:8800' m.room.create' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-267:localhost:8800>']m.room.member@anon-20191002_181700-269:localhost:8800>']m.room.member@anon-20191002_181700-268:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-267:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-266:localhost:8800>']m.room.member@anon-20191002_181700-266:localhost:8800>']m.room.member@anon-20191002_181700-266:localhost:8800/ m.room.join_rules>']m.room.member@anon-20191002_181700-266:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-265:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-264:localhost:8800"? m.room.history_visibility/ m.room.join_rules !r,P l N Y  dFQVz=Hrg_Q/ e!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rules$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVci^Q3 e!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw ]Q']e!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igc\Q' e!jveVPZSXJOJyNDebPO:localhost:8800m.room.create$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIo[Q? e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibility$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IgZQ/ e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rules$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhciYQ3 e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI XQ']e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owcWQ' e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.create$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4oVQ? e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibility$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4gUQ/ e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rules$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgiTQ3 e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levels$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU SQ']e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GccRQ' e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.create$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0 QQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo PQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg OQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM NQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE MQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 LQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEoKQ? e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibility$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkgJQ/ e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rules$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwiIQ3 e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levels$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs HQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQcGQ' e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.create$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE FQ']e!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI EQ']e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YoDQ? e!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibility$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acoCQ? e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.history_visibility$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYoBQ? e!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibility$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0gAQ/ e!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0g@Q/ e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.join_rules$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwg?Q/ e!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rules$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU |t l d  \ T LD< 4,$eeQ$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800 ZeeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800LeeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800 VeeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800 AeeQ$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg!rWGwSSefrZzQYCYFHs:localhost:8800$eeQ$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:88006eeQ$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800 eeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800KeeQ$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:88009eeQ$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800UeeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800 @eeQ$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800́eeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800)eeQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800.eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800eeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800  BUq8 T  p 7 S  o 6 R n5Rn5Qm5Qm4Pr8e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5Msha2568e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUsha256 8e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuosha256 88e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwsha256 r8e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhosha25628e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwsha256 8e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdosha256 l8e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgsha256 8e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQsha2568e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8sha256 8e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wsha2568e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lssha256 =8e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAsha256D8e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUsha2567e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMsha256W8e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOYsha256&8e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8sha256T8e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGassha256x8e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMsha256g8e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrssha256K8e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXcsha2568e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYsha2568e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFssha2568e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8sha2568e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUsha256 8e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70sha2568e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcsha2568e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5Msha2568e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgsha256$8e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUsha2567e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApcsha2568e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQsha256 8e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4sha256 8e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQsha2568e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEsha2568e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIsha2568e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ysha256-8e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4sha256 E8e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicsha256 8e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMsha2568e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEsha256v8e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBosha256 8e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvosha256r8e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTAsha2568e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwsha2568e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4sha2568e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0sha2568e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxosha2568e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4sha256 8e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCksha256 8e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQsha2568e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIsha25658e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Asha256k8e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAsha256 8e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxosha256 8e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qsha2568e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuosha256 -8e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8sha2568e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkosha256 8e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEsha2568e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wosha2568e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQsha256o8e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4sha2568e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4sha256 ?8e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmgsha256 98e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMssha256 a} { y w u sqomkigeca~MeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~LeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~KeeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~JeeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~IeeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~HeeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~GeeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~FeeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~EeeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~DeeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~CeeQ$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~BeeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~AeeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800~@eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~?eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800~>eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800~=eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~<eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800~;eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~:eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~9eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800~8eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800~7eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~6eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800~5eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800~4eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~3eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800~2eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~1eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~0eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800~/eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800 M Y ' _ _8 -e Ql: sA'-yGYMS!jp3>  v D  |  J  Vo1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA E1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI 31e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk 21e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY $1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ 71e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kz1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE^1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M=1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550a1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYop1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIN1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUP1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA=1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsP1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg/1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4N1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsT1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEK1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngX1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQS1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648d1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaID1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c^01e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEm1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYod0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcB1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg+1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYd1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ <1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ Ej8p> v D  | J  b P0  V $ \ *h6n< tBzHN1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4X1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA|1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAM1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 <1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuke1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9ga1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI71e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k=1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU M1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU G1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ[1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U W1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFeko1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE T1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe401e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE 1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA f1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE 1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OId1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY*1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQS1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs;1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIh1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg 1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wl1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc !1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY M Y ' _ _8 -e Ql: sA'-yGYMS!jp3>  v D  |  J  Vo1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA E1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI 31e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk 21e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY $1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ 71e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kz1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE^1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M=1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550a1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYop1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIN1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUP1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA=1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsP1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg/1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4N1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsT1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEK1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngX1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQS1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648d1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaID1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c^01e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEg1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYod0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcB1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg+1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYd1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ <1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ D%j8p> v D  |W J  P  V $ \ *b0h6n= wE}K%1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y 1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8\1e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE J d1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c71e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648i1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIY1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cl1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc-0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms:1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE40e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY>1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgz1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8]1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo {1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qm1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI91e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4S1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 B1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8n1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx821e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc\1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk}1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU91e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM&1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owU1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c  I I4lanondisplay localhostname 8l D `8T]c!E@anon-20191002_181700-343:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQoQPHBRHJQML127.0.0.1Perl + Net::Async::HTTP/0.44m˃S]c!E@anon-20191002_181700-342:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAoTTVUAXXSXP127.0.0.1Perl + Net::Async::HTTP/0.44m„R]c!E@anon-20191002_181700-341:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQoGZLOUPOIMW127.0.0.1Perl + Net::Async::HTTP/0.44m̢VQ]c!E@anon-20191002_181700-339:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAoDEVPCFFDOH127.0.0.1Perl + Net::Async::HTTP/0.44m̑*P]c!E@anon-20191002_181700-338:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgoOUNFKLKIBD127.0.0.1Perl + Net::Async::HTTP/0.44moO]c!E@anon-20191002_181700-337:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwoAOHNBPYYLF127.0.0.1Perl + Net::Async::HTTP/0.44mSN]c!E@anon-20191002_181700-336:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwoOFRRIKPQIS127.0.0.1Perl + Net::Async::HTTP/0.44mRM]c!E@anon-20191002_181700-335:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAoWEGENLHOLI127.0.0.1Perl + Net::Async::HTTP/0.44mMփL]c!E@anon-20191002_181700-334:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgoKPXDOKYVYY127.0.0.1Perl + Net::Async::HTTP/0.44mKK]c!E@anon-20191002_181700-333:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8QoZFSXBCPVTU127.0.0.1Perl + Net::Async::HTTP/0.44m.  gz.eQa$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1327}{"auth_events": ["$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE"], "prev_events": ["$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-272:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041645243, "hashes": {"sha256": "ny6lh9ok9DOqsFiLRwd15QujMj7Wj/khN/hteL9sD9A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S5qq6xEKWsLLgVgDJvNDWUoX/siwW6/1YMSMWshdm8BTRN6JzWRp/JwioR8UxK0XYveKbEFoSoShdSKGvXjyBQ"}}, "unsigned": {"age_ts": 1570041645243}}i-eQa_$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1326}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-272:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041644022, "hashes": {"sha256": "0PtTXl9F4Ni0kuvFmawMee5bvs9gBa0FFHJz/sKRVdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZ2lSRxrNE8Rj9W/wnykzUSe1pY/kuAruurzPCWiBXp6OWiVNlJnRX6KsD/fIETHip1YvHIxKe/YD+HemjxsAg"}}, "unsigned": {"age_ts": 1570041644022}},eQa7$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1325}{"auth_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc", "$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac"], "type": "m.room.member", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-270", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041640188, "hashes": {"sha256": "wXuDgoy8ZnQ7f1fHsH4nffRFVj2wxQRUATV+Rb1W8iY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S4kwLJQp6r5PcVY3/NJHwFkYKdbvHz97MCcEax+KogqFtz4gdC9QA8htaSaCV3DfmsnJKsxYIu1Rnbi53QtIDw"}}, "unsigned": {"age_ts": 1570041640188, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-271:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-271:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-271", "avatar_url": null}, "sender": "@anon-20191002_181700-271:localhost:8800"}]}} p y .  ~  JS{9_b h/Q/ eP!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rules$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0j.Q3 eO!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s -Q']eN!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwd,Q' eM!cGkVFpidyBBxUxsszG:localhost:8800m.room.create$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAp+Q? eI!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibility$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEh*Q/ eH!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rules$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcj)Q3 eG!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw (Q']eF!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igd'Q' eE!jveVPZSXJOJyNDebPO:localhost:8800m.room.create$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIp&Q? eC!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibility$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Ih%Q/ eB!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rules$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcj$Q3 eA!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI #Q']e@!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owd"Q' e?!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.create$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4p!Q? e=!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibility$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4h Q/ eRf+z?Sg,{@8 ]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH8 ]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD8 ]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQIS8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLI8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYY8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTU8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGP8]!@anon-20191002_181700-331:localhost:8800COONNUXFOL8]!@anon-20191002_181700-330:localhost:8800TFGJMHITUL8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLS8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUO8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHC8~]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYT8}]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGS8|]!@anon-20191002_181700-324:localhost:8800KKATIXOBNF8{]!@anon-20191002_181700-323:localhost:8800BHOVENVWZC8z]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXT8y]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGC8x]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGB8w]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIA8v]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJ8u]!@anon-20191002_181700-317:localhost:8800KSXFFXWMCB8t]!@anon-20191002_181700-316:localhost:8800JHIWJLKOFG8s]!@anon-20191002_181700-315:localhost:8800KXXAQONTRL8r]!@anon-20191002_181700-314:localhost:8800BTSWZNQVTP8q]!~@anon-20191002_181700-312:localhost:8800LFIOTRIQVM8p]!}@anon-20191002_181700-311:localhost:8800BNVFQNMSXM8o]!|@anon-20191002_181700-310:localhost:8800UKYXDPZQOO8n]!{@anon-20191002_181700-309:localhost:8800OEPQWZYGAR8m]!z@anon-20191002_181700-308:localhost:8800VRKBCOUWEF8l]!y@anon-20191002_181700-307:localhost:8800BEZNVUIADU8k]!x@anon-20191002_181700-306:localhost:8800XZDIPYWWOD8j]!w@anon-20191002_181700-305:localhost:8800PDQTBQSPGX8i]!v@anon-20191002_181700-304:localhost:8800MQWNAFYDXK8h]!u@anon-20191002_181700-303:localhost:8800FUOYNGGDMQ8g]!t@anon-20191002_181700-302:localhost:8800PAWIWMHYHH8f]!s@anon-20191002_181700-301:localhost:8800SJPGITTBTX8e]!r@anon-20191002_181700-300:localhost:8800ZZJIQPLATK8d]!q@anon-20191002_181700-299:localhost:8800BPDORAMNSE8c]!p@anon-20191002_181700-298:localhost:8800GTROHDSCGV8b]!o@anon-20191002_181700-297:localhost:8800DVSKNCGFXX8a]!n@anon-20191002_181700-296:localhost:8800SBLEQBXZQL8`]!m@anon-20191002_181700-295:localhost:8800CIYGWJHPPN8_]!l@anon-20191002_181700-294:localhost:8800RKGLRVXFMG8^]!k@anon-20191002_181700-293:localhost:8800PVLMJRXINQ8]]!j@anon-20191002_181700-292:localhost:8800GGCVZACJDJ8\]!i@anon-20191002_181700-291:localhost:8800OPDSPHGDRK8[]!h@anon-20191002_181700-290:localhost:8800HIUKIRMYDG8Z]!g@anon-20191002_181700-289:localhost:8800WRUIAYGXAN8Y]!f@anon-20191002_181700-288:localhost:8800BKSOCJCTFT8X]!e@anon-20191002_181700-287:localhost:8800UVZQFXTZFV8W]!d@anon-20191002_181700-286:localhost:8800SFUJRXTQDY8V]!c@anon-20191002_181700-285:localhost:8800RKYDKAHKAA8U]!b@anon-20191002_181700-284:localhost:8800IDXGKZHMAK8T]!a@anon-20191002_181700-283:localhost:8800GHCLSNIYIA8S]!`@anon-20191002_181700-282:localhost:8800MZNVLNKEUX8R]!_@anon-20191002_181700-281:localhost:8800HVGEGIPOZP8Q]!^@anon-20191002_181700-280:localhost:8800PLHJASTUFR8P]!]@anon-20191002_181700-279:localhost:8800DVKCMEFQMC8O]!\@anon-20191002_181700-278:localhost:8800OHJBILRNUP8N]![@anon-20191002_181700-277:localhost:8800YSVOUTLGFP8M]!Z@anon-20191002_181700-276:localhost:8800PBSDTTCZKK8L]!Y@anon-20191002_181700-275:localhost:8800BROWKVODJU8K]!X@anon-20191002_181700-274:localhost:8800RXKZBCJOXK8J]!W@anon-20191002_181700-272:localhost:8800NRGYAKPXEL8I]!V@anon-20191002_181700-273:localhost:8800SZMGOEVXQW =w;WUq8 V  r 9 W  s :  V t;Wu<Xtw>Z!88]!@anon-20191002_181700-6[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKB6[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKN=8]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH]8]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD\8]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF[8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQISZ8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLIY8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYYX8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUW8]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE8]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH8]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS8]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE8]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP8]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ8]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM8]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO8]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF6[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHA8]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT8]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZ8]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY~8]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ|8]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM}8]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO{8]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJz6[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKO@8]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRAy8]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJx8]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXTw8]!@anon-20191002_181700-366:localhost:8800FABJQITKMRu8]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWOv8]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTBs8]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXFt8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSURp8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJq8]!@anon-20191002_181700-360:localhost:8800XKNFVZJCREr6[!@anon-20191002_181700-35:localhost:8800EALQMPIKHO?8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBRo8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILNm8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERTn8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFNl8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJIj8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKHk8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRWi8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMPh8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFRf8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAIg6[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGA>8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYSe8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZd8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYUb8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROPc8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHAa8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML`8]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP_8]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW^ ,NC 8 - { " p  e ZOD9.|#qf VXeL$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xssha256Uqs>+YEU;{VWeL$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEsha256Wa7wbœCU데϶ ![ƑVVeL$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wsha256TA!͈hFˆ" |ƝVUeL$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwsha256?i%[음`=`?"_VTeL$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqssha256yu#!BňS],ρ1";+˛l~«VSeL$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQsha256Vݲg]ne,DA RVReL$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQksha256Ʃӝn2 q9mA)7rhRm VQeL$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawsha256h "?9J)NJ?E7ڴ+RV8u xVPeL$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4sha256'( @Jo獌;i6C ARVOeL$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0sha256AH4QVKBlꐱ`mVNeL$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0ssha2569 I-͊[[@VLxN|/KVMeL$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwsha256vDi6}E0/#gu},3QlVLeL$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAsha256mڤY(OPqÚ0p?%8VKeL$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrssha256]iU4Pה6B+~TCrVJeL$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Nssha256duHO8f 2Iws棲ޛtVIeL$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivkssha256[abeL<؇b ΏIabKVHeL$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEsha256sG⛖aw/\QOx_VGeL$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcsha256MRҴSg\TsuB$}UWVFeL$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwsha256NV lRx`݋UVVEeL$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igsha256 AX냈`049Z,$Z%XVDeL$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIsha256uXQ1 -p1߬IBpMJM{ VCeL$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68sha256%#JHB#ǧ =_A')X VBeL$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Isha256%9w yQ4C] WVAeL$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcsha256*Ac/=M1 t4)VV@eL$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIsha256@ov+lSC;D;/lABV?eL$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owsha256phuZvtN5 D﹒V>eL$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4sha25668.dFb?7IV=eL$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0sha256BF\f?ZNWg~b=V<eL$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4sha256wڐDDGm0Y!Gkpw\;~V;eL$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgsha256~+{YeOIu4/9/A=} `KxV:eL$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUsha256>.}igWgO@=%V9eL$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gcsha256wYAۓ i YUgV8eL$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0sha256V.? Xʦ #\>oIV7eL$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYosha256=,pP['Wj yMʾCB]'x)V6eL$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgsha256-PTJ7g ,{Շ? ]*8V5eL$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMsha256W2w[>(\rœу H]cV4eL$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEsha256Fߗ%wFmH9a1l3%aV3eL$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78sha256N sݭ2IX=v V2eL$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEsha256ب] JGFhœ h;fAV1eL$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Oksha256xp b:mS^*V0eL$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgwsha256gM idSJ.p.VsGΧN V/eL$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGssha256(t`<3apW.;1kV.eL$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQsha256Q3bxlJxV7WycV-eL$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEsha256,1ExX9.jX``n != @ &   $L[(V#& 4eQ']$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800 3eQ']$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800m2eQ? $1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibilitye1eQ/ $QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rulesg0eQ3 $xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels /eQ']$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800a.eQ' $bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800m.room.createm-eQ? $8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibilitye,eQ/ $mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rulesg+eQ3 $Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels *eQ']$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800a)eQ' $dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800m.room.createm(eQ? $9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibilitye'eQ/ $3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rulesg&eQ3 $QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels %eQ']$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800a$eQ' $soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.createm#eQ? $d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibilitye"eQ/ $fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rulesg!eQ3 $vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levels eQ']$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800aeQ' $VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800m.room.create eQ']$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800 eQ']$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800 eQ']$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800 eQ']$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800 eQ']$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800 eQ']$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800meQ? $7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibilityeeQ/ $Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rulesgeQ3 $Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levels eQ']$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800aeQ' $LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.create -RM H C > 9 4/*|%w rmhc TpQe!ffijTnPMbTrDXHqOXf:localhost:8800$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoToQe!ffijTnPMbTrDXHqOXf:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HoTnQe!ffijTnPMbTrDXHqOXf:localhost:8800$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMTmQe!wLitJYvgvNJzanSIvO:localhost:8800$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4TlQe!wLitJYvgvNJzanSIvO:localhost:8800$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrITkQe!wLitJYvgvNJzanSIvO:localhost:8800$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cTjQe!wLitJYvgvNJzanSIvO:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMTiQe!wLitJYvgvNJzanSIvO:localhost:8800$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQThQe!hWHyATwKfuznrqTiyu:localhost:8800$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsTgQe!hWHyATwKfuznrqTiyu:localhost:8800$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgTfQe!hWHyATwKfuznrqTiyu:localhost:8800$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsTeQe!hWHyATwKfuznrqTiyu:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpETdQe!hWHyATwKfuznrqTiyu:localhost:8800$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wTcQe!cGkVFpidyBBxUxsszG:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkTbQe!cGkVFpidyBBxUxsszG:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawTaQe!cGkVFpidyBBxUxsszG:localhost:8800$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4T`Qe!cGkVFpidyBBxUxsszG:localhost:8800$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0T_Qe!cGkVFpidyBBxUxsszG:localhost:8800$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sT^Qe!cGkVFpidyBBxUxsszG:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwT]Qe!cGkVFpidyBBxUxsszG:localhost:8800$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAT\Qe!jveVPZSXJOJyNDebPO:localhost:8800$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxET[Qe!jveVPZSXJOJyNDebPO:localhost:8800$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcTZQe!jveVPZSXJOJyNDebPO:localhost:8800$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwTYQe!jveVPZSXJOJyNDebPO:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgTXQe!jveVPZSXJOJyNDebPO:localhost:8800$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaITWQe!rJhSRzmWBQHlIhuDXT:localhost:8800$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_ITVQe!rJhSRzmWBQHlIhuDXT:localhost:8800$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcTUQe!rJhSRzmWBQHlIhuDXT:localhost:8800$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUITTQe!rJhSRzmWBQHlIhuDXT:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owTSQe!rJhSRzmWBQHlIhuDXT:localhost:8800$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4TRQe!fsbkkRBZlUcBVVfMME:localhost:8800$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4TQQe!fsbkkRBZlUcBVVfMME:localhost:8800$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgTPQe!fsbkkRBZlUcBVVfMME:localhost:8800$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUTOQe!fsbkkRBZlUcBVVfMME:localhost:8800$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GcTNQe!fsbkkRBZlUcBVVfMME:localhost:8800$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0TMQe!bzPCFeFSMbCESvNbxl:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoTLQe!bzPCFeFSMbCESvNbxl:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgTKQe!bzPCFeFSMbCESvNbxl:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMTJQe!bzPCFeFSMbCESvNbxl:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWETIQe!bzPCFeFSMbCESvNbxl:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78THQe!bzPCFeFSMbCESvNbxl:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUETGQe!bzPCFeFSMbCESvNbxl:localhost:8800$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkTFQe!bzPCFeFSMbCESvNbxl:localhost:8800$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwTEQe!bzPCFeFSMbCESvNbxl:localhost:8800$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsTDQe!bzPCFeFSMbCESvNbxl:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ g * T~=gg)]!c2@anon-20191002_181700-286:localhost:8800SFUJRXTQDYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMuU1k6WlRjNHMzOW4zWC4KMDAyZnNpZ25hdHVyZSCm1CYMbpJeBEIlSqvHQLlTmNccB_w09A-mofLOOCns2wog(]!c1@anon-20191002_181700-285:localhost:8800RKYDKAHKAAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE6ZkwqeXVWQmhvWlleLnMKMDAyZnNpZ25hdHVyZSA8StBFwTVrjsV83F87BN0vcrrxEk92vGKl74R0SlFJRwog']!c0@anon-20191002_181700-284:localhost:8800IDXGKZHMAKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg4SzFYZkhSVzlsbjJpalcKMDAyZnNpZ25hdHVyZSBxpaFTVrHdAtO3AwwUhNdQv_6hppCrsEFY91uIeRE0Ywog&]!c/@anon-20191002_181700-283:localhost:8800GHCLSNIYIAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGh1Q2kwWEtidWhRXjBEdToKMDAyZnNpZ25hdHVyZSAI9iPJyhUOhKPHzi0-DhXtv-V-HO0MnRbZvorFZptFhQog%]!c.@anon-20191002_181700-282:localhost:8800MZNVLNKEUXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVlc0phJitwKngyYURqODoKMDAyZnNpZ25hdHVyZSAp6TSwG3iNBrpimH2OUgfOfHhlH7rlFKNTnyY4t3P88wog$]!c-@anon-20191002_181700-281:localhost:8800HVGEGIPOZPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAog#]!c,@anon-20191002_181700-280:localhost:8800PLHJASTUFRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygog"]!c+@anon-20191002_181700-279:localhost:8800DVKCMEFQMCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgog!]!c*@anon-20191002_181700-278:localhost:8800OHJBILRNUPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_gog ]!c)@anon-20191002_181700-277:localhost:8800YSVOUTLGFPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgog]!c(@anon-20191002_181700-276:localhost:8800PBSDTTCZKKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwo Hn< tBj8p>  v D  O | J  P  V $ \ *U#[){Ib01e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg=1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg<1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg;1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg:1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Um1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Ul1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Uk1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsh1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM21e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41LeoV1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs 1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs ,1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM41e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM31e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsg1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsf1e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss~1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk*1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk)1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk(1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0 :1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0 91e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0 81e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs 1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs 1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs 1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkT1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU 1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg L1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg K1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg J1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM  1eQa$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1330}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw"], "type": "m.room.history_visibility", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041647341, "hashes": {"sha256": "ip3Tk0nard3bOZbnZUgcCqaG1vC6sbkPITYyNG4SxIA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/Rxrf/IrWQytKf6+nqZBvHpCFDMMRSdxvsne4g2dURpZZGFHOkAUq1rbrVyyPqlOBhHNRPItEqrjWPVGPgc9Dw"}}, "unsigned": {"age_ts": 1570041647341}}t0eQau$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1329}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs"], "type": "m.room.join_rules", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041646691, "hashes": {"sha256": "2ajwNlaqY53lWYHQKpz5EtuTAGZqf1ErS+RpwSujBws"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EaZpZp8QSyJY3awwSW13wQdlpHog0Xm/AP953eUxnNbwEQxIKzCA6UMdPUvkjLHbhBJn9lPXxnPVk6ax1Dy7Dw"}}, "unsigned": {"age_ts": 1570041646691}}k/eQac$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1328}{"auth_events": ["$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "type": "m.room.power_levels", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"users": {"@anon-20191002_181700-272:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041646050, "hashes": {"sha256": "SdzLw+H2OTeue9pS8qfg5mlSHT1hYJK0Oxxyp1AcMow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IFom1CI67tOnCEq2vOnC+5PwZJ78gVp2En43DrJdXXMO59AULvEkpmbwTYNlatgfM7Hp8c6xmwiPX6QsLB+fCA"}}, "unsigned": {"age_ts": 1570041646050}} ~z v r n j fb^ZVRNJF5eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:88004eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:88003eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:88002eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:88001eeQ$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:88000eeQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800/eeQ$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800.eeQ$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800-eeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800,eeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800+eeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800*eeQ$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800)eeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800(eeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800'eeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800&eeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800%eeQ$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800$eeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800#eeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800"eeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800!eeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800 eeQ$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800  X$3eQaU$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1332}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-274", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-274:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041649028, "hashes": {"sha256": "MK7Wo1oqm4i8pgyZlNI/03bP/1iXwZKLQY6P977MYzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oqK1bv8tBqGvdxPtRsnPa72KWI2JxpGWr1p/70TwxqV7QWPoknlIm4Bp3Oyu2AcD2hDgtjfZjRmfD/Gg1YI+Cg"}}, "unsigned": {"age_ts": 1570041649028, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-272:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "sender": "@anon-20191002_181700-272:localhost:8800"}]}}$2eQaU$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1331}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-273", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-273:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041648361, "hashes": {"sha256": "NUulgEGDbpIsls6wvjWR2iwynsYusyrIsiLUQZnHvbM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GrusZNiJgbHDy9UMDABbdkKuqLM3Jp319Mzih2E3iDj37AukaH/MVNIgituEhCO2jWiLVw2DLRm3OIvPPKuYCQ"}}, "unsigned": {"age_ts": 1570041648361, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-272:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "sender": "@anon-20191002_181700-272:localhost:8800"}]}} a} { y w u sqomkigeca~leeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800~keeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~jeeQ$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~ieeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800~heeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~geeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800~feeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800~eeeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~deeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800~ceeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800~beeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~aeeQ$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~`eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800~_eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~^eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~]eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~\eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~[eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~ZeeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~YeeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~XeeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~WeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~VeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~UeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~TeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~SeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~ReeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~QeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~PeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~OeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~NeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800 7n 0 i M1hLCK e]]Q=$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww@anon-20191002_181700-291:localhost:8800@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800joinanon-20191002_181700-291CJ e]]Q=$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y@anon-20191002_181700-290:localhost:8800@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800joinanon-20191002_181700-290CI e]]Q=$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw@anon-20191002_181700-289:localhost:8800@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800joinanon-20191002_181700-289CH e]]Q=$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY@anon-20191002_181700-288:localhost:8800@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800joinanon-20191002_181700-288CG e]]Q=$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo@anon-20191002_181700-287:localhost:8800@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800joinanon-20191002_181700-287EF e]]Q=$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk@anon-20191002_181700-287:localhost:8800@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800inviteanon-20191002_181700-287CE e]]Q=$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho@anon-20191002_181700-286:localhost:8800@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800joinanon-20191002_181700-286CD e]]Q=$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM@anon-20191002_181700-284:localhost:8800@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800joinanon-20191002_181700-284CC e]]Q=$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE@anon-20191002_181700-283:localhost:8800@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800joinanon-20191002_181700-283CB e]]Q=$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk@anon-20191002_181700-282:localhost:8800@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800joinanon-20191002_181700-282CA e]]Q=$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw@anon-20191002_181700-281:localhost:8800@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800joinanon-20191002_181700-281C@ e]]Q=$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw@anon-20191002_181700-280:localhost:8800@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800joinanon-20191002_181700-280C? e]]Q=$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig@anon-20191002_181700-279:localhost:8800@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800joinanon-20191002_181700-279C> e]]Q=$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow@anon-20191002_181700-277:localhost:8800@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800joinanon-20191002_181700-277C= e]]Q=$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc@anon-20191002_181700-276:localhost:8800@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800joinanon-20191002_181700-276,< e]]Q$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo@anon-20191002_181700-274:localhost:8800@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800leaveC; e]]Q=$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg@anon-20191002_181700-274:localhost:8800@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800joinanon-20191002_181700-274C: e]]Q=$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM@anon-20191002_181700-273:localhost:8800@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800joinanon-20191002_181700-273E9 e]]Q=$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE@anon-20191002_181700-275:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800inviteanon-20191002_181700-275E8 e]]Q=$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78@anon-20191002_181700-274:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800inviteanon-20191002_181700-274  X<6eQa?$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 294, "stream_ordering": 1335}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw"], "prev_events": ["$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-274:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-274", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-274:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041651543, "hashes": {"sha256": "V2ZxYTOJmTSMN60esTDibSV/N0yRAsVwJmxL71U+YkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0WyRg56JPsyqgbcRroL6tdbmi4m/B9xuFDxGq5hSOF3e7+iV0EDfQhOUxEkzRmSZ6Ud7DGI+CtGLpegdYWEvCw"}}, "unsigned": {"age_ts": 1570041651543, "replaces_state": "$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78"}}5eQa=$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 292, "stream_ordering": 1334}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw"], "prev_events": ["$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-273:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-273", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-273:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041650736, "hashes": {"sha256": "wH+wNbBI9EX8w4PzgUzxqlw8IPJow+ckNlGZwxLj1KY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WHlpGjEd/0TTsPSgMRm3A8feXjzPunI/Yh/mDDe3urz2ea6s9MFiDppbdWW+dMMfC2hsL9bvefvWaC3XDiCPDw"}}, "unsigned": {"age_ts": 1570041650736, "replaces_state": "$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE"}}$4eQaU$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1333}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-275", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-275:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041649637, "hashes": {"sha256": "hC4daz5N/Ks457MsjOQPj7O5pM8RLh9LzkFM4cwD6CI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xMQUe9HS8289FJ0usIf/Q1tWxIDSzIXs82zAD/cMoEnN87AWAb6GokTFG9W32ljph9T6nxmbNgW6n0gWzIscDA"}}, "unsigned": {"age_ts": 1570041649637, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-272:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "sender": "@anon-20191002_181700-272:localhost:8800"}]}} K ! 4Kk:eQac$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1339}{"auth_events": ["$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "type": "m.room.power_levels", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"users": {"@anon-20191002_181700-276:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041656092, "hashes": {"sha256": "f3ZjK/IOIg4+9PGfugiIl70kfryCCB18wqbcZmEPY9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nZR43axIVrWtLq2Rto0Lqho1BR/cCqlJXD1MZf/TsFCB6LmcCOVKDhn8+Uf+SwvRGLJueGSi6/8yZd+Qj336DA"}}, "unsigned": {"age_ts": 1570041656092}}v9eQay$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1338}{"auth_events": ["$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0"], "prev_events": ["$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0"], "type": "m.room.member", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-276", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-276:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041655336, "hashes": {"sha256": "FZyTPT7FzPySmwylZyliTcT0e09cHRfgKxPJfEGEEQ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qlIacggMxRKhUz/hgjhKdBh7ELHJOJpSn4lpV9eoh5eYaBLmVHy/knOwCTy4kuKu8XF/M0UiZefYFmSDhOB2Bg"}}, "unsigned": {"age_ts": 1570041655336}}i8eQa_$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1337}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-276:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041654008, "hashes": {"sha256": "q6G1Q9QICS7kO5/knAXnQSp46mspgYHE+LmbSoMiHAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mdolABM+7BgkC9wlz5S07gBRkPJE+T1AZ52HKZgqU1BQFKcZGOdD+N3kyc6qJ1qFPIrNIIWqtHFrUOJwx0kYAg"}}, "unsigned": {"age_ts": 1570041654008}}[7eQaC$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 294, "stream_ordering": 1336}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg"], "prev_events": ["$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-274:localhost:8800", "content": {"membership": "leave"}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-274:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041652168, "hashes": {"sha256": "Sum2wjKx67zPf00BuQZ6PvdHzjwvf8gq1FHSF1gj6JI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u1hELeZE/U/+bh9kaSX00Y17TinJ7560EFnsgxFmSwNuLtbzVyCMP5Nt6IVQjEqusIIS3dJS/glugevU/qdDBQ"}}, "unsigned": {"age_ts": 1570041652168, "replaces_state": "$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg"}} Om: r? { J  U $ ` / k : v E NW$^-i6q?xDzIT#.n Q  !csWEXfVEVxdviNvgAd:localhost:8800%.m Q   !aHyAJEOSdKqTiRjOvw:localhost:8800%.l Q !hnQOBexFYpvJntEChZ:localhost:8800.k Q !hDAzBWYEyRVBRlrCHh:localhost:8800.j Q !fkvdYkesQOFCAQkzky:localhost:8800 .i Q !OWGKxAmTrHLciIdrJi:localhost:8800.h Q  !aknLNLxfChlLvFYhkJ:localhost:8800%.g Q  !HWTlaNxUKnDsrtlOxU:localhost:8800%.f Q  !pUSFAnuwUuMlbiInDR:localhost:8800%0e Q!SrMQpDMFREKRMELwbL:localhost:8800%0d Q!bNSXSTadOMhIrYpMzH:localhost:8800%0c Q!TlJCaYlCkOOVzFDlLx:localhost:8800%.b Q   !bOSxzttDtclnrWnLov:localhost:8800%0a Q!DnUHoxreGexNmjSVpq:localhost:8800%.` Q  !rwUuVBrftGHDBOlEZm:localhost:8800%._ Q  !CkNvQnbApPIcuKygDk:localhost:8800%0^ Q!NboFFVLpJHTeuUKCjM:localhost:8800%.] Q  !aZwMKYDXJRlSKjQNWM:localhost:8800%/\ Q !XiwGxQKwjgutEClKUy:localhost:8829%.[ Q  !mTlCLZQCmfDuQsJxxp:localhost:8800%.Z Q  !PEcOacvKaBKpXjytEF:localhost:8800%/Y Q !NajQnqYmGyTjxhFYar:localhost:8829%.X Q  !sJnuQYOyruhUpXDsLY:localhost:8800%0W Q!TeraguiGoZoeOGFzlI:localhost:8800%.V Q  !UaitDdkGDcwvRLJSvp:localhost:8800%.U Q  !dDqNKNFdIjCAwnyaxp:localhost:8800%.T Q  !kjueCKHmYaYefEEpQY:localhost:8800%.S Q  !nftGLlLhVgzOwOFufp:localhost:8800%.R Q  !raCWVWQGnXbmkexpCN:localhost:8800%.Q Q  !kwJgbtogEzCqYbUXfh:localhost:8800%.P Q  !JZouHBRxCRbcxYJnbn:localhost:8800%.O Q  !HOPyhZPcKkrvSmDIvX:localhost:8800%0N Q!EWkoFeckhXlNyjuIEB:localhost:8800%0M Q!utJsNQubeIXvcTKGpx:localhost:8800%0L Q!iTQSCiLqRMDtgXtUdC:localhost:8800%.K Q  !UMFUOnYRvwKwSPkYHB:localhost:8800%.J Q  !hZuwenlFDapIPBOyfi:localhost:8800%.I Q  !LvARVIpJZeRQxbKefX:localhost:8800%.H Q  !SfYtaUhCFosNfHfUVm:localhost:8800%.G Q  !NPdjmIfsBVIIkvWBzD:localhost:8800%.E Q  !beBXQofoOfxNBtzsut:localhost:8800%.F Q  !vyCFfUTJKYJSDadFhT:localhost:8800 %.D Q  !xvblqEscwOtCqJntfF:localhost:8800%0C Q!HhYREfUiJTpjWmOuPF:localhost:8800%.B Q  !nvclDopiBLEOKBIheH:localhost:8800%.A Q  !YgaGPEraeLCqHQirin:localhost:8800%.@ Q  !aVxOoyiLLnxmzgLJat:localhost:8800%.? Q  !fuHSJcznvGQnoYoLPW:localhost:8800%.> Q  !hYPSaMPGsLnvYSmwhg:localhost:8800%.= Q  !jIfvTrwedrWLubsnlM:localhost:8800%.< Q  !KeqmSjifajNKxtgqhj:localhost:8800%.; Q  !icheSPMgpemswIdQkw:localhost:8800%.: Q  !EyyNoldCLUdFHzXTDP:localhost:8800%.9 Q  !vpuivIQDEhyuhOLWpg:localhost:8800%.8 Q  !uSBqTezaFcMnlowsEf:localhost:8800%.7 Q  !NrxQuziwSWzsHuXIlG:localhost:8800%.6 Q  !CNFopUEQTFbzjmLvii:localhost:8800%.5 Q  !WhqVaRReBxJXADAyYD:localhost:8800%.4 Q  !aLxrqpqLkbzyIxGgpk:localhost:8800%.3 Q  !BfEFIDBthhkweqfhir:localhost:8800 %.2 Q  !aaRwQZdNAliyvRHpjs:localhost:8800 %.1 Q  !ZShBIxwbJmxjjZmoRQ:localhost:8800%.0 Q  !NNiyzThHMivrxhojfp:localhost:8800%./ Q  !QFiJrWFFeTAAAUCjCE:localhost:8800%.. Q  !KmuRTfGFgJdgIDAgIW:localhost:8800%.- Q  !mOrKBPhetifKHDmElM:localhost:8800%., Q  !QyLUggxrTnULUAOseq:localhost:8800%.+ Q  !azRJNFPIRSFAskLILK:localhost:8800%.* Q  !MBWnwKRwFznvRpAzxr:localhost:8800%.) Q   !krhefVncoErkCtnvsy:localhost:8800%0( Q!mMsxpaIlcykPuOnDyl:localhost:8800%0' Q!VOhMAiLfKyTOZbmKGw:localhost:8800%0& Q!ffijTnPMbTrDXHqOXf:localhost:8800%.% Q  !wLitJYvgvNJzanSIvO:localhost:8800%.$ Q  !hWHyATwKfuznrqTiyu:localhost:8800%0# Q!cGkVFpidyBBxUxsszG:localhost:8800%." Q  !jveVPZSXJOJyNDebPO:localhost:8800%.! Q  !rJhSRzmWBQHlIhuDXT:localhost:8800%. Q  !fsbkkRBZlUcBVVfMME:localhost:8800%  si>eQa_$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1343}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-277:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041660607, "hashes": {"sha256": "VN9pXxmowhCyo0O9YWWXb2jOVTUA4OXCruB+XMwUqHc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rgkWnkgLF+zZ48ExibcGIP2uh7kfl7FH4xpFGMbKBdxLTA4G4bf87y3SgfoITFS4uoiw5oFmO/kpc7E1iEs3AA"}}, "unsigned": {"age_ts": 1570041660607}}=eQy$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "txn_id": "143", "stream_ordering": 1342}{"auth_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU", "$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4"], "type": "m.room.message", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"msgtype": "m.text", "body": "hello, world"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041658911, "hashes": {"sha256": "AkCDek/2N/w/zCmw49WLb8oxfZj3jtVDHkadx4ZV4g8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fOXEKGuHMirLo0dX17wIG5jmmop27qJ2WtfJ0G27Ejdr1wEcdnjlB8giQB+OwBfnkZiokED2S0lAqZVl//KYAw"}}, "unsigned": {"age_ts": 1570041658911}}<eQa$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1341}{"auth_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU", "$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg"], "type": "m.room.history_visibility", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041657743, "hashes": {"sha256": "Wek7Smx1xte8FTXyLDPQpmNCWP2IxviznNPYbmeHV+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8zAcHwlB9xnG2CNQ6N0aDdygNe2oBr03bzL43wW/+Ebz98Lx0EoKlEUEn7DCGrBrAuJcJ2KnLVy6cZc8QwpFAA"}}, "unsigned": {"age_ts": 1570041657743}}t;eQau$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1340}{"auth_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU", "$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU"], "type": "m.room.join_rules", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041657001, "hashes": {"sha256": "f8gbRd4MzdXRTJxlH/gZaBjKYDt9criBNbX52RipYC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/gwBy4BloFAfOSoDRKAWHssnni9oau296SuMOgB808oxG7CEKPplQfr1yhlGBpB5oNSCmluDZyYaoxrXMK5LCA"}}, "unsigned": {"age_ts": 1570041657001}} RP e  c  x&v,A?R!Te)Q ]$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQm.room.message!cGkVFpidyBBxUxsszG:localhost:8800mLm@anon-20191002_181700-280:localhost:8800 Se'Q ]$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkm.room.member!cGkVFpidyBBxUxsszG:localhost:8800mɔm@anon-20191002_181700-282:localhost:8800 Re'Q ]$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawm.room.member!cGkVFpidyBBxUxsszG:localhost:8800mAmƯ@anon-20191002_181700-281:localhost:8800,Qe?Q ]$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4m.room.history_visibility!cGkVFpidyBBxUxsszG:localhost:8800m må@anon-20191002_181700-280:localhost:8800$Pe/Q ]$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0m.room.join_rules!cGkVFpidyBBxUxsszG:localhost:8800mƼmƽ@anon-20191002_181700-280:localhost:8800&Oe3Q ]$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sm.room.power_levels!cGkVFpidyBBxUxsszG:localhost:8800mƺ5mƻ(@anon-20191002_181700-280:localhost:8800 Ne'Q ]$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwm.room.member!cGkVFpidyBBxUxsszG:localhost:8800mƸ+mƸ@anon-20191002_181700-280:localhost:8800M e'Q  ]$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAm.room.create!cGkVFpidyBBxUxsszG:localhost:8800mƴ5mƴ@anon-20191002_181700-280:localhost:8800!Le)Q ]$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsm.room.message!jveVPZSXJOJyNDebPO:localhost:8800mƬ^mƬe@anon-20191002_181700-279:localhost:8800!Ke)Q ]$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Nsm.room.message!jveVPZSXJOJyNDebPO:localhost:8800mƪmƪ@anon-20191002_181700-279:localhost:8800!Je)Q ]$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksm.room.message!jveVPZSXJOJyNDebPO:localhost:8800mƧmƧ@anon-20191002_181700-279:localhost:8800,Ie?Q ]$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEm.room.history_visibility!jveVPZSXJOJyNDebPO:localhost:8800mƣ:mƥ@anon-20191002_181700-279:localhost:8800$He/Q ]$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcm.room.join_rules!jveVPZSXJOJyNDebPO:localhost:8800mƠmơq@anon-20191002_181700-279:localhost:8800&Ge3Q ]$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwm.room.power_levels!jveVPZSXJOJyNDebPO:localhost:8800mƝmƞ@anon-20191002_181700-279:localhost:8800 Fe'Q ]$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igm.room.member!jveVPZSXJOJyNDebPO:localhost:8800mƛmƛ@anon-20191002_181700-279:localhost:8800E e'Q  ]$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIm.room.create!jveVPZSXJOJyNDebPO:localhost:8800mƘmƘ@anon-20191002_181700-279:localhost:8800!De)Q ]$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68m.room.message!rJhSRzmWBQHlIhuDXT:localhost:8800mƒmƒ@anon-20191002_181700-277:localhost:8800,Ce?Q ]$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Im.room.history_visibility!rJhSRzmWBQHlIhuDXT:localhost:8800mƏmƐ@anon-20191002_181700-277:localhost:8800$Be/Q ]$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcm.room.join_rules!rJhSRzmWBQHlIhuDXT:localhost:8800mƌmƍR@anon-20191002_181700-277:localhost:8800&Ae3Q ]$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIm.room.power_levels!rJhSRzmWBQHlIhuDXT:localhost:8800mƉmƊ@anon-20191002_181700-277:localhost:8800 @e'Q ]$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owm.room.member!rJhSRzmWBQHlIhuDXT:localhost:8800mƇmƈ-@anon-20191002_181700-277:localhost:8800? e'Q  ]$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4m.room.create!rJhSRzmWBQHlIhuDXT:localhost:8800mƄmƅ@anon-20191002_181700-277:localhost:8800!>e)Q ]$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0m.room.message!fsbkkRBZlUcBVVfMME:localhost:8800m~m~$@anon-20191002_181700-276:localhost:8800,=e?Q ]$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4m.room.history_visibility!fsbkkRBZlUcBVVfMME:localhost:8800mym{g@anon-20191002_181700-276:localhost:8800 9L5 o 3 o 3 o N No3o3w;tg+w;K[9W Q !NajQnqYmGyTjxhFYar:localhost:8829publicshared9V Q !sJnuQYOyruhUpXDsLY:localhost:8800publicshared9U Q !TeraguiGoZoeOGFzlI:localhost:8800publicshared9T Q !UaitDdkGDcwvRLJSvp:localhost:8800publicshared9S Q !dDqNKNFdIjCAwnyaxp:localhost:8800publicshared9R Q !kjueCKHmYaYefEEpQY:localhost:8800publicshared9Q Q !nftGLlLhVgzOwOFufp:localhost:8800publicshared9P Q !raCWVWQGnXbmkexpCN:localhost:8800publicshared9O Q !kwJgbtogEzCqYbUXfh:localhost:8800publicshared9N Q !JZouHBRxCRbcxYJnbn:localhost:8800publicshared9M Q !HOPyhZPcKkrvSmDIvX:localhost:8800publicshared9L Q !EWkoFeckhXlNyjuIEB:localhost:8800publicshared9K Q !utJsNQubeIXvcTKGpx:localhost:8800publicshared9J Q !iTQSCiLqRMDtgXtUdC:localhost:8800publicshared9I Q !UMFUOnYRvwKwSPkYHB:localhost:8800publicshared9H Q !hZuwenlFDapIPBOyfi:localhost:8800publicshared9G Q !LvARVIpJZeRQxbKefX:localhost:8800publicsharedjE Qa !NPdjmIfsBVIIkvWBzD:localhost:8800#publicroomalias_with_topic:localhost:8800publicsharedtopic_1`C Q[ !beBXQofoOfxNBtzsut:localhost:8800#publicroomalias_no_name:localhost:8800publicshared LF Q !!SfYtaUhCFosNfHfUVm:localhost:8800Test NamepublicsharedTest TopicuD Qk !vyCFfUTJKYJSDadFhT:localhost:8800name_2#publicroomalias_with_name_topic:localhost:8800publicsharedtopic_29B Q !xvblqEscwOtCqJntfF:localhost:8800publicshared9A Q !HhYREfUiJTpjWmOuPF:localhost:8800publicshared9@ Q !nvclDopiBLEOKBIheH:localhost:8800publicsharedA? Q !YgaGPEraeLCqHQirin:localhost:8800publicsharedcan_join9> Q !aVxOoyiLLnxmzgLJat:localhost:8800publicsharedA= Q !fuHSJcznvGQnoYoLPW:localhost:8800publicsharedcan_join9< Q !hYPSaMPGsLnvYSmwhg:localhost:8800publicsharedA; Q!jIfvTrwedrWLubsnlM:localhost:8800publicsharedcan_join9: Q!KeqmSjifajNKxtgqhj:localhost:8800publicsharedA9 Q !icheSPMgpemswIdQkw:localhost:8800publicsharedcan_join98 Q !EyyNoldCLUdFHzXTDP:localhost:8800publicshared\7 QC !vpuivIQDEhyuhOLWpg:localhost:8800#__ANON__-13:localhost:8800publicsharedcan_join96 Q !uSBqTezaFcMnlowsEf:localhost:8800publicsharedA5 Q !NrxQuziwSWzsHuXIlG:localhost:8800publicsharedcan_join94 Q !CNFopUEQTFbzjmLvii:localhost:8800publicsharedA3 Q !WhqVaRReBxJXADAyYD:localhost:8800publicsharedcan_join92 Q !aLxrqpqLkbzyIxGgpk:localhost:8800publicsharedo1 Q5- !BfEFIDBthhkweqfhir:localhost:8800namepublicjoinedm.megolm.v1.aes-sha2http://somethingforbiddentopico0 Q5- !aaRwQZdNAliyvRHpjs:localhost:8800namepublicjoinedm.megolm.v1.aes-sha2http://somethingforbiddentopicA/ Q !ZShBIxwbJmxjjZmoRQ:localhost:8800publicsharedcan_join9. Q !NNiyzThHMivrxhojfp:localhost:8800publicsharedA- Q !QFiJrWFFeTAAAUCjCE:localhost:8800publicsharedcan_join9, Q !KmuRTfGFgJdgIDAgIW:localhost:8800publicsharedA+ Q !mOrKBPhetifKHDmElM:localhost:8800publicsharedcan_join9* Q !QyLUggxrTnULUAOseq:localhost:8800publicsharedA) Q !azRJNFPIRSFAskLILK:localhost:8800publicsharedcan_join9( Q !MBWnwKRwFznvRpAzxr:localhost:8800publicshared`' Q[ !krhefVncoErkCtnvsy:localhost:8800#test-20191002_181700-42:localhost:8800publicshared`& Q[ !mMsxpaIlcykPuOnDyl:localhost:8800#test-20191002_181700-41:localhost:8800publicshared`% Q[ !VOhMAiLfKyTOZbmKGw:localhost:8800#test-20191002_181700-40:localhost:8800publicshared9$ Q !ffijTnPMbTrDXHqOXf:localhost:8800publicjoined9# Q !wLitJYvgvNJzanSIvO:localhost:8800publicshared9" Q !hWHyATwKfuznrqTiyu:localhost:8800publicshared9! Q !cGkVFpidyBBxUxsszG:localhost:8800publicshared9 Q !jveVPZSXJOJyNDebPO:localhost:8800publicshared9 Q !rJhSRzmWBQHlIhuDXT:localhost:8800publicshared  BeQa$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1347}{"auth_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI", "$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc"], "type": "m.room.history_visibility", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041663250, "hashes": {"sha256": "gFRhSog9Y3XIzDHjwl9tRmhk+ce+c4/UmFcwL8Znopo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h4fmDBzWZINwgnc1GvWhHsk1sHzUov1sDta/r7QpWQqVpu3lDaOvepN+pgmcYxCWKjKv1KtUJx/khHsHJyx+DA"}}, "unsigned": {"age_ts": 1570041663250}}tAeQau$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1346}{"auth_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI", "$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI"], "type": "m.room.join_rules", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041662625, "hashes": {"sha256": "kvzdw7A3TvsamAccizl8DstKPbF9n6h0MNKOcF/UCCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LyqRz7ibeCvhj0IOZ1SAaMQa1M3MzOeJHk2+5uj+ozno4+u0RU8D88uZz46lQhQfYA5NWXdouYE2S2dI+LtWCQ"}}, "unsigned": {"age_ts": 1570041662625}}k@eQac$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1345}{"auth_events": ["$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "type": "m.room.power_levels", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"users": {"@anon-20191002_181700-277:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041661926, "hashes": {"sha256": "59x+6kKTxRTma1HeA0D1zoYnPTVECITP/tzEU6mql7A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sGUpmu1XX6INp9NdUgygpEWI9xgbq1f5ALzjdJZUidbVQoueQYct1l8H6Tng7Ii8W3k9nIx0U5Uji0Hcyh5gBA"}}, "unsigned": {"age_ts": 1570041661926}}v?eQay$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1344}{"auth_events": ["$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4"], "prev_events": ["$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4"], "type": "m.room.member", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-277", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-277:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041661380, "hashes": {"sha256": "IopQeLoKXClQcXRcul2TllHhJACkMfawlNMk2fCmn0A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nbbrhBf0BpcdX95M7nP6eoXPci3Iwv2RTXzgQYIMp5+SU/Jlf6/bs4KgZ8Wb6xNAXqYuI//eDB1T28ue/qC6BA"}}, "unsigned": {"age_ts": 1570041661380}} H[)a/j8p>g V $ \ * b 0 i 7  o = uC{IO5U#o= 1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQz1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V871e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc |1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-401e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY ;1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ;1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8=1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q n1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY>1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw71e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNot1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc]1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4m1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U !1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oh1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt81e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 40e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUK1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcE1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUG1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcA1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT81e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A 1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoA$lolredact:localhost:42455 `1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4;1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8 a} { y w u sqomkigeca~ eeQ$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800~ eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800~ eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~~eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800~}eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~|eeQ$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~{eeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800~zeeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~yeeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800~xeeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800~weeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~veeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800~ueeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800~teeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~seeQ$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~reeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800~qeeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~peeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800~oeeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800~neeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~meeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800  t  kFeQac$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1351}{"auth_events": ["$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "type": "m.room.power_levels", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"users": {"@anon-20191002_181700-279:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041666945, "hashes": {"sha256": "gsd4g3p8pWhsMEEZZo4aMeRI/Q8D9Wd7PJoPWIA+9+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aPgQYP9MZCSO2MIBU+ZCiy5huDFldtwRZsso01GWuAen1W3tmdEeWkPQu7VVDOlpwnznpo6rHpdLOOUrAeYjBg"}}, "unsigned": {"age_ts": 1570041666945}}vEeQay$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1350}{"auth_events": ["$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI"], "prev_events": ["$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI"], "type": "m.room.member", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-279", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-279:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041666439, "hashes": {"sha256": "ZWeZX8MZw+qkVZdPlQk5cOINuJYjWmxhijtLQRsUITs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dERhnxtOt/maCK1vpqveq1IN5x7e7x2GELgUifZylYKg2rRz9QN5w57muv4I+mUNVvVvG7v/qPk6FeaBK0+fDg"}}, "unsigned": {"age_ts": 1570041666439}}iDeQa_$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1349}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-279:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041665693, "hashes": {"sha256": "KR3GEwgcaoy6Qx1mRo1cZFOEMN5X5OwK5tcqtdKLjb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aWws12iZ9CEkCScB0AmC8CF8GQTyFDP0vNMVQMhhHWmaJp5uJJMgKoLo56Lq0IZA3sq6KuHHvgOuFzVCTcH3Aw"}}, "unsigned": {"age_ts": 1570041665693}}CeQy$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "txn_id": "144", "stream_ordering": 1348}{"auth_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI", "$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I"], "type": "m.room.message", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"msgtype": "m.text", "body": "hello, world"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041664228, "hashes": {"sha256": "QBBb6t370KYB9YrKkkH9idjhfBL9yXUp23Nsvg8aDLE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FLsc8x+d9F7xImBo2zmFerbwh1H+Zl89Tt9IS0WoFu/vlE6RP6PkbsYy3sGrLu1aZVxTzMjbQvDNqsaeGWZRCw"}}, "unsigned": {"age_ts": 1570041664228}}  4 h 6jd]c@anon-20191002_181700-308:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgo127.0.0.13d]c@anon-20191002_181700-307:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgo127.0.0.12d]c@anon-20191002_181700-306:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwo127.0.0.11d]c@anon-20191002_181700-305:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQo127.0.0.10d]c@anon-20191002_181700-304:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1Owo127.0.0.1/d]c@anon-20191002_181700-303:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAo127.0.0.1.d]c@anon-20191002_181700-302:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQo127.0.0.1-d]c@anon-20191002_181700-301:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwo127.0.0.1,d]c@anon-20191002_181700-300:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0Qo127.0.0.1+d]c@anon-20191002_181700-299:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQo127.0.0.1*d]c@anon-20191002_181700-298:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4Qo127.0.0.1) 5 i 4 h gi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1VeSt5ODEuWm87UjdKY0YKMDAyZnNpZ25hdHVyZSDTpoEgR9XlmVmJc5SliwVUnFErAOv6y_GJpoo2kiEBAwoՂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5jbWhGI3NVbzdRN0ZVOUYKMDAyZnNpZ25hdHVyZSDFOi3T8ib3QFWEJRdS9JEKRlY1pXMW0qqy2gWfbH2x3goւ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQo61cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAo331cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4Qo51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAo41cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQo21cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQo11cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwo01cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDF4dzt5NVhUQzR2aXp0JisKMDAyZnNpZ25hdHVyZSD9QSywnh8104wl3lN9t2uWjOUpqEtvPgW6Z2v56L6tXQoԂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_go/1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAo. -RM H C > 9 4/*|%w rmhc TwQeq!VOhMAiLfKyTOZbmKGw:localhost:8800$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkTvQep!VOhMAiLfKyTOZbmKGw:localhost:8800$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8TuQeo!VOhMAiLfKyTOZbmKGw:localhost:8800$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwTtQen!VOhMAiLfKyTOZbmKGw:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYTsQem!VOhMAiLfKyTOZbmKGw:localhost:8800$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8TrQel!ffijTnPMbTrDXHqOXf:localhost:8800$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wTqQek!ffijTnPMbTrDXHqOXf:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoTpQej!ffijTnPMbTrDXHqOXf:localhost:8800$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0ToQei!ffijTnPMbTrDXHqOXf:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkTnQeh!ffijTnPMbTrDXHqOXf:localhost:8800$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkTmQeg!ffijTnPMbTrDXHqOXf:localhost:8800$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoTlQef!ffijTnPMbTrDXHqOXf:localhost:8800$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiITkQee!ffijTnPMbTrDXHqOXf:localhost:8800$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoTjQed!ffijTnPMbTrDXHqOXf:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HoTiQec!ffijTnPMbTrDXHqOXf:localhost:8800$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMThQeb!wLitJYvgvNJzanSIvO:localhost:8800$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4TgQea!wLitJYvgvNJzanSIvO:localhost:8800$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4TfQe`!wLitJYvgvNJzanSIvO:localhost:8800$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrITeQe_!wLitJYvgvNJzanSIvO:localhost:8800$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cTdQe^!wLitJYvgvNJzanSIvO:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMTcQe]!wLitJYvgvNJzanSIvO:localhost:8800$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQTbQe\!hWHyATwKfuznrqTiyu:localhost:8800$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4TaQe[!hWHyATwKfuznrqTiyu:localhost:8800$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsT`QeZ!hWHyATwKfuznrqTiyu:localhost:8800$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgT_QeY!hWHyATwKfuznrqTiyu:localhost:8800$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsT^QeX!hWHyATwKfuznrqTiyu:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpET]QeW!hWHyATwKfuznrqTiyu:localhost:8800$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wT\QeV!cGkVFpidyBBxUxsszG:localhost:8800$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwT[QeU!cGkVFpidyBBxUxsszG:localhost:8800$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsTZQeT!cGkVFpidyBBxUxsszG:localhost:8800$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQTYQeS!cGkVFpidyBBxUxsszG:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkTXQeR!cGkVFpidyBBxUxsszG:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawTWQeQ!cGkVFpidyBBxUxsszG:localhost:8800$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4TVQeP!cGkVFpidyBBxUxsszG:localhost:8800$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0TUQeO!cGkVFpidyBBxUxsszG:localhost:8800$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sTTQeN!cGkVFpidyBBxUxsszG:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwTSQeM!cGkVFpidyBBxUxsszG:localhost:8800$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeATRQeL!jveVPZSXJOJyNDebPO:localhost:8800$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsTQQeK!jveVPZSXJOJyNDebPO:localhost:8800$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsTPQeJ!jveVPZSXJOJyNDebPO:localhost:8800$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksTOQeI!jveVPZSXJOJyNDebPO:localhost:8800$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxETNQeH!jveVPZSXJOJyNDebPO:localhost:8800$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcTMQeG!jveVPZSXJOJyNDebPO:localhost:8800$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwTLQeF!jveVPZSXJOJyNDebPO:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgTKQeE!jveVPZSXJOJyNDebPO:localhost:8800$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI  sJeQy$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "txn_id": "146", "stream_ordering": 1355}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks"], "type": "m.room.message", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"body": "hello, world", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041670158, "hashes": {"sha256": "zQ+94Jt5SD3N25Se4zcLKt0rz9XYUeRhsUCA5s4slw0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C9hJn7gxvPCAyBKsq6jyEml81NAvQ3UANeyBgnLPKUNLGkl2uWbzYZaX8xP17k31jGVH2ZmSYgDACuC9D8HnAQ"}}, "unsigned": {"age_ts": 1570041670158}}IeQy$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "txn_id": "145", "stream_ordering": 1354}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE"], "type": "m.room.message", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"msgtype": "m.text", "body": "event before"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041669570, "hashes": {"sha256": "cOUtD2JMGHVbKLL5Ix0+oU3h9OEnFgD+gcLR6/dFvGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "snl1Vqldaw/JoMS4DpslsFIjRTJznxh8Hqx986JLWvfisHpPkGRDhcelY3TTofT1qYcL8BRfRpkurza3I/gYCA"}}, "unsigned": {"age_ts": 1570041669570}}HeQa$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1353}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc"], "type": "m.room.history_visibility", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041668410, "hashes": {"sha256": "7K0HN+LKn3yTdNSDTVwGxEOd85Ldq7tpLOw4zKoLoCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eCd0dLONYVZ9YsX1SIYUQzEWKo2gBM7Ycbz+E+P2e/TtlKDvyctMeSdghNrhUr2J5TA+0rFP2lwC6LAwjnZZCw"}}, "unsigned": {"age_ts": 1570041668410}}tGeQau$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1352}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw"], "type": "m.room.join_rules", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041667743, "hashes": {"sha256": "MN7kNd0tQ4ZHAoR3wxPiEZcZTMs3JqCiZh+ZA6YriD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F8iahVlZ+8Uiuv3/T2Kkzy4Nib/JLS+1YVFBZbKtnCHPtX2g+zkUJfTT9rQQrhpJmdyRoDefi1H4puUQ2duDDQ"}}, "unsigned": {"age_ts": 1570041667743}} !(- Q 3 > h +SX| {@rQ))e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQoQ? e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibility$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcg~Q/ e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rules$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkl}Q9 e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_alias$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8i|Q3 e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levels$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw {Q']e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYczQ' e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.create$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8 yQ']e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo xQ']e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkowQ? e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkovQ? e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoguQ/ e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rules$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIitQ3 e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levels$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo sQ']e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HocrQ' e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.create$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMoqQ? e!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibility$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4gpQ/ e!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rules$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIioQ3 e!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c nQ']e!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMcmQ' e!wLitJYvgvNJzanSIvO:localhost:8800m.room.create$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQolQ? e!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibility$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsgkQ/ e!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rules$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgijQ3 e!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs iQ']e!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEchQ' e!hWHyATwKfuznrqTiyu:localhost:8800m.room.create$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w gQ']e!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk fQ']e!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawoeQ? e!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibility$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4gdQ/ e!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rules$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0icQ3 e!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s bQ']e!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwcaQ' e!cGkVFpidyBBxUxsszG:localhost:8800m.room.create$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAo`Q? e!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibility$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE R[ p  n ' 1:D@R!le)Q ] $aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wm.room.message!ffijTnPMbTrDXHqOXf:localhost:8800 mm@anon-20191002_181700-286:localhost:8800 ke'Q ] $TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGom.room.member!ffijTnPMbTrDXHqOXf:localhost:8800 mCm@anon-20191002_181700-287:localhost:8800!je)Q ]$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0m.room.message!ffijTnPMbTrDXHqOXf:localhost:8800mm@anon-20191002_181700-286:localhost:8800 ie'Q ]$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkm.room.member!ffijTnPMbTrDXHqOXf:localhost:8800mm@anon-20191002_181700-286:localhost:8800,he?Q ]$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkm.room.history_visibility!ffijTnPMbTrDXHqOXf:localhost:8800mm1@anon-20191002_181700-286:localhost:8800,ge?Q ]$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQom.room.history_visibility!ffijTnPMbTrDXHqOXf:localhost:8800mm>@anon-20191002_181700-286:localhost:8800$fe/Q ]$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIm.room.join_rules!ffijTnPMbTrDXHqOXf:localhost:8800m m P@anon-20191002_181700-286:localhost:8800&ee3Q ]$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYom.room.power_levels!ffijTnPMbTrDXHqOXf:localhost:8800m m @anon-20191002_181700-286:localhost:8800 de'Q ]$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hom.room.member!ffijTnPMbTrDXHqOXf:localhost:8800mmI@anon-20191002_181700-286:localhost:8800c e'Q  ]$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMm.room.create!ffijTnPMbTrDXHqOXf:localhost:8800mm @anon-20191002_181700-286:localhost:8800!be)Q ]$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4m.room.message!wLitJYvgvNJzanSIvO:localhost:8800mm(@anon-20191002_181700-284:localhost:8800,ae?Q ]$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4m.room.history_visibility!wLitJYvgvNJzanSIvO:localhost:8800m@m@anon-20191002_181700-284:localhost:8800$`e/Q ]$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIm.room.join_rules!wLitJYvgvNJzanSIvO:localhost:8800mm@anon-20191002_181700-284:localhost:8800&_e3Q ]$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cm.room.power_levels!wLitJYvgvNJzanSIvO:localhost:8800mmV@anon-20191002_181700-284:localhost:8800 ^e'Q ]$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMm.room.member!wLitJYvgvNJzanSIvO:localhost:8800mm^@anon-20191002_181700-284:localhost:8800] e'Q  ]$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQm.room.create!wLitJYvgvNJzanSIvO:localhost:8800mim@anon-20191002_181700-284:localhost:8800!\e)Q ]$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4m.room.message!hWHyATwKfuznrqTiyu:localhost:8800mm@anon-20191002_181700-283:localhost:8800,[e?Q ]$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsm.room.history_visibility!hWHyATwKfuznrqTiyu:localhost:8800m,m&@anon-20191002_181700-283:localhost:8800$Ze/Q ]$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgm.room.join_rules!hWHyATwKfuznrqTiyu:localhost:8800mpmY@anon-20191002_181700-283:localhost:8800&Ye3Q ]$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xsm.room.power_levels!hWHyATwKfuznrqTiyu:localhost:8800mRmܬ@anon-20191002_181700-283:localhost:8800 Xe'Q ]$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEm.room.member!hWHyATwKfuznrqTiyu:localhost:8800m+mج@anon-20191002_181700-283:localhost:8800W e'Q  ]$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wm.room.create!hWHyATwKfuznrqTiyu:localhost:8800mmՊ@anon-20191002_181700-283:localhost:8800!Ve)Q ] $P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwm.room.message!cGkVFpidyBBxUxsszG:localhost:8800 mЀmЇ@anon-20191002_181700-280:localhost:8800!Ue)Q ] $eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsm.room.message!cGkVFpidyBBxUxsszG:localhost:8800 mm@anon-20191002_181700-280:localhost:8800 Ej18p> v D   } K  Q  W % ] +ci7o= uC{IO1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE a1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM 1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0%1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE]1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo 1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw ]1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg<1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw@1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI 81e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv801e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4/1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E;1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ91e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MD1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ w1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIP1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc31e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k B1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ h1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y $0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYi1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0#1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkq1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU\1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIJ1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY{1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ/1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ K1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI~1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY;1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 ]1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwM1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg  u kNeQac$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1359}{"auth_events": ["$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "type": "m.room.power_levels", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"users": {"@anon-20191002_181700-280:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041674293, "hashes": {"sha256": "JiJlQtbVEsFu4+W/5+tVP7KtXXMcieCPj0b3g+tMW+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nYGf1DuOCcUJFB2p1CFkF3RgbZoehLQwkhWNYhrK9bhLS1yHKRCE15PT7SYc/yfFuS7/D2qwIM3P1vKZEfQ8BQ"}}, "unsigned": {"age_ts": 1570041674293}}vMeQay$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1358}{"auth_events": ["$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA"], "prev_events": ["$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA"], "type": "m.room.member", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-280", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-280:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041673771, "hashes": {"sha256": "dcWKvZuRJwmxPOgwOGzp+6iW/7P1sbpmah3O1OMokA8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JB//GjLg3gIKzTlB1SzgeyCFXFanaSthdU+3Sz5INKL2Zh6GeGc0kudHGtbA1Umz3R0A3Qo7HbcTqoFWgVsCCQ"}}, "unsigned": {"age_ts": 1570041673771}}iLeQa_$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1357}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-280:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041672757, "hashes": {"sha256": "GTJRH4JWUhILYI3rFLNWHrk/6lT3uXYO0om8nsKu2mM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FWuwxXT/weHgenDTCg/UCy6ZHLk4rHu8OLR9xnOzimrwBl0VlnhmlllNS1ZepN3LO/LNIJ9/WfbGweMlYSV0Dw"}}, "unsigned": {"age_ts": 1570041672757}}KeQw$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "txn_id": "147", "stream_ordering": 1356}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns"], "type": "m.room.message", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"body": "event after", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041670750, "hashes": {"sha256": "9Co0jinwRcFIKvYdejE5nT4pS0UUKVYkojAaF2DmOD0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KepK6guagCGhNSuxuajZ8tFdJIbwuJAbwrafUi5IrlevYQFPbMvoos9kGUJV4V1WISHa401Ea/74Knj3IHJeAA"}}, "unsigned": {"age_ts": 1570041670750}} ?GJ U  \ c ' j . p -r/t1v3x5z7|;BM >V ]  @anon-20191002_181700-312:localhost:8800m&\9U ]@anon-20191002_181700-312:localhost:8800a&\@T ]@anon-20191002_181700-311:localhost:8800m&\IB9S ]@anon-20191002_181700-311:localhost:8800a&\>R ]  @anon-20191002_181700-310:localhost:8800m&\C9Q ]@anon-20191002_181700-310:localhost:8800a&\9P ]@anon-20191002_181700-309:localhost:8800a&\=O ]  @anon-20191002_181700-308:localhost:8800m&\V>N ]  @anon-20191002_181700-307:localhost:8800m&\C9M ]@anon-20191002_181700-308:localhost:8800a&\9L ]@anon-20191002_181700-307:localhost:8800a&\>K ]  @anon-20191002_181700-306:localhost:8800m&\C9J ]@anon-20191002_181700-306:localhost:8800a&\@I ]@anon-20191002_181700-305:localhost:8800m&\79H ]@anon-20191002_181700-305:localhost:8800a&\@G ]@anon-20191002_181700-304:localhost:8800m&\ .9F ]@anon-20191002_181700-304:localhost:8800a&\@E ]@anon-20191002_181700-303:localhost:8800m&\ .=9D ]@anon-20191002_181700-303:localhost:8800a&\@C ]@anon-20191002_181700-302:localhost:8800m&\ .9B ]@anon-20191002_181700-302:localhost:8800a&\@A ]@anon-20191002_181700-301:localhost:8800m&\F79@ ]@anon-20191002_181700-301:localhost:8800a&\@? ]@anon-20191002_181700-300:localhost:8800m&\ .9> ]@anon-20191002_181700-300:localhost:8800a&\@= ]@anon-20191002_181700-299:localhost:8800m&\59< ]@anon-20191002_181700-299:localhost:8800a&\@; ]@anon-20191002_181700-298:localhost:8800m&\d9: ]@anon-20191002_181700-298:localhost:8800a&\@9 ]@anon-20191002_181700-297:localhost:8800m&\798 ]@anon-20191002_181700-297:localhost:8800a&\@7 ]@anon-20191002_181700-296:localhost:8800m&\ .96 ]@anon-20191002_181700-296:localhost:8800a&\@5 ]@anon-20191002_181700-295:localhost:8800m&\ .94 ]@anon-20191002_181700-295:localhost:8800a&\@3 ]@anon-20191002_181700-294:localhost:8800m&\ -92 ]@anon-20191002_181700-294:localhost:8800a&\>1 ]@anon-20191002_181700-293:localhost:8800m&\>0 ]  @anon-20191002_181700-292:localhost:8800m&\y9/ ]@anon-20191002_181700-293:localhost:8800a&\9. ]@anon-20191002_181700-292:localhost:8800a&\=- ]  @anon-20191002_181700-291:localhost:8800m&\V>, ]  @anon-20191002_181700-290:localhost:8800m&\ c9+ ]@anon-20191002_181700-291:localhost:8800a&\9* ]@anon-20191002_181700-290:localhost:8800a&\=) ]  @anon-20191002_181700-289:localhost:8800m&\V>( ]  @anon-20191002_181700-288:localhost:8800m&\y9' ]@anon-20191002_181700-289:localhost:8800a&\9& ]@anon-20191002_181700-288:localhost:8800a&\=% ]  @anon-20191002_181700-287:localhost:8800m&\>$ ] @anon-20191002_181700-286:localhost:8800m&\ 9# ]@anon-20191002_181700-287:localhost:8800a&\9" ]@anon-20191002_181700-286:localhost:8800a&\>! ]  @anon-20191002_181700-284:localhost:8800m&\99 ]@anon-20191002_181700-285:localhost:8800a&\9 ]@anon-20191002_181700-284:localhost:8800a&\> ]  @anon-20191002_181700-283:localhost:8800m&\99 ]@anon-20191002_181700-283:localhost:8800a&\= ]  @anon-20191002_181700-282:localhost:8800m&\V= ]  @anon-20191002_181700-281:localhost:8800m&\V> ]  @anon-20191002_181700-280:localhost:8800m&\,9 ]@anon-20191002_181700-282:localhost:8800a&\9 ]@anon-20191002_181700-281:localhost:8800a&\ I>g<T)k@qF c8oDmB w L ! u J  e: s H i y N # g<T*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!drnXStKXkNQkouqUAg:localhost:8800 L `*Q!drnXStKXkNQkouqUAg:localhost:8800 K _*Q!drnXStKXkNQkouqUAg:localhost:8800 I ]*Q!drnXStKXkNQkouqUAg:localhost:8800 G [*Q!drnXStKXkNQkouqUAg:localhost:8800 E Y*Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ o*Q!dBfASZrfiFeSKTjYJm:localhost:8800 Z n*Q!csWEXfVEVxdviNvgAd:localhost:88003`*Q!csWEXfVEVxdviNvgAd:localhost:88003_*Q!csWEXfVEVxdviNvgAd:localhost:88003^*Q!csWEXfVEVxdviNvgAd:localhost:88002]*Q!csWEXfVEVxdviNvgAd:localhost:88002\*Q!csWEXfVEVxdviNvgAd:localhost:88002[*Q!csWEXfVEVxdviNvgAd:localhost:88000Z*Q!csWEXfVEVxdviNvgAd:localhost:8800-W*Q!csWEXfVEVxdviNvgAd:localhost:8800,V*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dBfASZrfiFeSKTjYJm:localhost:8800 a u*Q!dBfASZrfiFeSKTjYJm:localhost:8800 a t*Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ s*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ r*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] q*Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ p*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 b v*Q!duCKuavMBSfRbTFPsc:localhost:8800''*Q!duCKuavMBSfRbTFPsc:localhost:8800&&*Q!duCKuavMBSfRbTFPsc:localhost:8800%%*Q!duCKuavMBSfRbTFPsc:localhost:8800$$*Q!duCKuavMBSfRbTFPsc:localhost:8800##*Q!duCKuavMBSfRbTFPsc:localhost:8800""*Q!duCKuavMBSfRbTFPsc:localhost:8800!!*Q!duCKuavMBSfRbTFPsc:localhost:8800  *Q!dnZVySJLGNtUKsSgXW:localhost:8800UY*Q!dnZVySJLGNtUKsSgXW:localhost:8800TX*Q!dnZVySJLGNtUKsSgXW:localhost:8800SW*Q!dnZVySJLGNtUKsSgXW:localhost:8800RV*Q!dnZVySJLGNtUKsSgXW:localhost:8800QU*Q!dnZVySJLGNtUKsSgXW:localhost:8800PT*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!drnXStKXkNQkouqUAg:localhost:8800 C W*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 b w*Q!dDqNKNFdIjCAwnyaxp:localhost:8800 9 Ly6_   y(Kx5<JO;HR >  L  WBQ? !pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibility 5Q' !plcvCHNbjCkNMMxnTk:localhost:8800m.room.create<Q3 !peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels^Q']!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800:Q/ !peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rulesBQ? !peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibility6Q' !peJMRJtXBvIiCttNmm:localhost:8800m.room.create<Q3 !pduebXnTyxQWVxEICp:localhost:8800m.room.power_levels|^Q']!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-549:localhost:8800^Q']!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-548:localhost:8800{:Q/ !pduebXnTyxQWVxEICp:localhost:8800m.room.join_rules}BQ? !pduebXnTyxQWVxEICp:localhost:8800m.room.history_visibility~6Q' !pduebXnTyxQWVxEICp:localhost:8800m.room.createz<Q3 !paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels^Q']!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800^Q']!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800:Q/ !paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rulesBQ? !paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibility6Q' !paDmNxsOZIKyApbxXs:localhost:8800m.room.create<Q3 !pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels3^Q']!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:88006^Q']!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:88002:Q/ !pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rules4BQ? !pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibility56Q' !pUSFAnuwUuMlbiInDR:localhost:8800m.room.create1<Q3 !pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels^Q']!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800:Q/ !pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rulesBQ? !pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibility6Q' !pJUItjYTOUJQFIxyiX:localhost:8800m.room.create<Q3 !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levels _^Q']!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800 ^QQ'C!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455 b:Q/ !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules `BQ? !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility a:Q/ !pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rules ?Q9 !qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_alias NEQ))!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800 Q<Q3 !qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels^Q']!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800<Q3 !pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels ^Q']!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800 6Q' !pTvdDtkgovsIdAdxCm:localhost:8800m.room.create :Q/ !qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rulesBQ? !qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility6Q' !qSUSLLWjDxcGibUZdT:localhost:8800m.room.create<Q3 !qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels ~^Q']!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800 }:Q/ !qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules BQ? !qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility 6Q' !qInWQPtNQfBFoVzUtP:localhost:8800m.room.create |;Q3 !plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levels\Q'[!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800\Q'[!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:88009Q/ !plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rulesAQ? !plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibility;Q3 !plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_access "j 9 8 C H p { 9Drq |=ZejgeQ3 $XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels ~eQ']$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800joina}eQ' $cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800m.room.create |eQ']$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800joinp{eQ))$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800mzeQ? $houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibilityeyeQ/ $I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rulesjxeQ9 $LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_aliasgweQ3 $xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levels veQ']$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800joinaueQ' $uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.create teQ']$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800joinmseQ? $3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibilityereQ/ $QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rulesgqeQ3 $eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levels peQ']$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800joinaoeQ' $Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800m.room.createmneQ? $_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibilityemeQ/ $nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rulesgleQ3 $dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels keQ']$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800joinajeQ' $D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800m.room.createmieQ? $PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibilityeheQ/ $zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rulesggeQ3 $GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels feQ']$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800joinaeeQ' $VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800m.room.create deQ']$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800join ceQ']$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800joinmbeQ? $1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibilityeaeQ/ $QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rulesg`eQ3 $xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels _eQ']$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800joina^eQ' $bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800m.room.create K %KVReQa9$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 302, "stream_ordering": 1363}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0"], "prev_events": ["$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw"], "type": "m.room.member", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-282:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-282", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-282:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041678228, "hashes": {"sha256": "fsOnXWpVXRD2PhVeJeGjeIlIUy4oGfhiaRY7bxlRB9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AslIdC/DfOCWwzRa81fUL/jmxEYkzq79gCiuq6fDA20KNmub4ejGKQLxk5qM6Yp61kVpRYB6OSDfnXB4sNQBBQ"}}, "unsigned": {"age_ts": 1570041678228}}VQeQa9$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 301, "stream_ordering": 1362}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0"], "prev_events": ["$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4"], "type": "m.room.member", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-281:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-281", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-281:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041677377, "hashes": {"sha256": "tWDdu9JInSkkf0pNyaZmyvCWBqn3+wLmxAQeuFvaUjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OH6MPJ3OqcfnIKQlvVriENtVxmiRdGnsEhWVf0gz0NLclASvn7sqg/ype+XyyA8QdCoyRER1f6Fxmdgfq2Q5DA"}}, "unsigned": {"age_ts": 1570041677377}}PeQa$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1361}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0"], "type": "m.room.history_visibility", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041676301, "hashes": {"sha256": "VJ9wy2QtKJW3vj/4mQMtwF83PVV8hT4ZVfaU89ggfXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cJNnFLxUnC+b5v/mUNBhRKpOVhe4a/Qkfoa/rHbKU7VYXCyFVbhxfedPaJBzJHQh7dOqYmyielU73Yzl+j1wBw"}}, "unsigned": {"age_ts": 1570041676301}}tOeQau$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1360}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s"], "type": "m.room.join_rules", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041674943, "hashes": {"sha256": "BAwHHRelLATi04PNTOtdKr5Ruy3vSeAOpT3UgWNmctg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yq3LPh7gBRIgcv1E2L8nAVRY8C4xntevmYH2yIZlopnKsWfd2CLqLe2pjpN4Crp0IhYQxk3fEVegG6HMAAumDw"}}, "unsigned": {"age_ts": 1570041674943}} Nd0`, \ ( X $ T P  L |HxDt@ p<l8X0vBrI &O$157004174617osGDW:localhost:8800'&O$157004174616PvcHe:localhost:8800&&O$157004174515XsrNb:localhost:8800%&O$157004174414klNmS:localhost:8800$&O$157004174313OKfBg:localhost:8800#1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800% M$15700417349vUcYV:localhost:8800% M$15700417338MBNFd:localhost:8800% M$15700417327EEUMr:localhost:8800% M$15700417316amiRb:localhost:88001 e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1~e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1}e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1|e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1{e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU1ze$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1ye$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M1xe$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01we$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1ve$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1ue$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41te$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1se$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1re$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk1qe$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw1pe$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1oe$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc1ne$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1me$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts81le$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1ke$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1je$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz81ie$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w1he$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1ge$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-01fe$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1ee$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1de$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1ce$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1be$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo1ae$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho1`e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM1_e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H41^e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41]e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1\e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1[e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1Ze$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ1Ye$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB41Xe$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1We$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1Ve$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1Ue$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1Te$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w1Se$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw1Re$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs1Qe$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ1Pe$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1Oe$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw1Ne$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 m v + 4 \ wTW|  jOQ3 ew!mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE NQ']ev!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YdMQ' eu!mMsxpaIlcykPuOnDyl:localhost:8800m.room.create$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk LQ']et!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwsKQ))es!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQpJQ? er!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibility$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdchIQ/ eq!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rules$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkmHQ9 ep!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_alias$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8jGQ3 eo!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levels$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw FQ']en!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYdEQ' em!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.create$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz88DQ']eek!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk CQ']ei!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkBQ? eeh!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQopAQ? eg!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoh@Q/ ef!ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rules$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIj?Q3 ee!ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levels$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo >Q']ed!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hod=Q' ec!ffijTnPMbTrDXHqOXf:localhost:8800m.room.create$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMp<Q? ea!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibility$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4h;Q/ e`!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rules$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIj:Q3 e_!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c 9Q']e^!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMd8Q' e]!wLitJYvgvNJzanSIvO:localhost:8800m.room.create$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQp7Q? e[!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibility$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsh6Q/ eZ!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rules$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgj5Q3 eY!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs 4Q']eX!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEd3Q' eW!hWHyATwKfuznrqTiyu:localhost:8800m.room.create$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w 2Q']eS!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1Q']eR!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawp0Q? eQ!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibility$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 KZj8p> v D  | J  PZ   V $ T" \ *b0h6n< tBzHN1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0I1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0H1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI}1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI|1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI{1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ 1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ 1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ 1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecv1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecu1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTect1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI[1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIZ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIY1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E51e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE O1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE N1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE M1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE L1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qx1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qw1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qv1e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_41e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_41e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_41e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828%1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828#1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct41e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY F1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY E1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY D1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY01e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY01e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY01e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4@1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4?1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4>1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ d1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ c1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0 21e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0 11e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0 01e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ}1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ|1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ{1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE ~z v r n j fb^ZVRNJFSeeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800ReeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800QeeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800PeeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800OeeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800NeeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800MeeQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800LeeQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800KeeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800JeeQ$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800IeeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800HeeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo!ffijTnPMbTrDXHqOXf:localhost:8800GeeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800FeeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800EeeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800DeeQ$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800CeeQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800BeeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800AeeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800@eeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800?eeQ$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800>eeQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800=eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800<eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800;eeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800:eeQ$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:88009eeQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:88008eeQ$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:88007eeQ$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:88006eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800 h rUhiVeQa_$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1367}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-283:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041681174, "hashes": {"sha256": "vU3CKjIyagFwQFduDdHIuAa1uiQxCPhF+M9FUHmyW9c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njSkd8BW7l7Qs1Ko6RAxbKfVjIFawjVrigZAdSP4shazOH+5Ba7m8/BZAm3qbIX/BM28UsK9W6iJXL77ImstCA"}}, "unsigned": {"age_ts": 1570041681174}} UeQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "txn_id": "150", "stream_ordering": 1366}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs"], "type": "m.room.message", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"body": "hello, world 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041680000, "hashes": {"sha256": "HNFkLZcSTYUA0KEak0GiXv3XTNzz9Yf3osbJ4xZ89xg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YB+GVOE2oNEUbX797wK3Zlk6tSbyVLaNGCkuesLfMgA3Y1dwqOSPcaCvJRMxTGMsLfQ1/+fR5dRRhpq4hXNeAw"}}, "unsigned": {"age_ts": 1570041680000}} TeQ}$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "txn_id": "149", "stream_ordering": 1365}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ"], "type": "m.room.message", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"body": "hello, world 2", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041679577, "hashes": {"sha256": "lPTMM8d/y+qRZqJOMZYgTNlSxOPgWMXHfpktqrH9gdY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xDBBv0TomwdqtPenasPmZmEO4eX/jdfIgBEwx9tR9qzAYF0dZKljp3ia8G0uzc9dohwyU1ld+XzPRkgUTbvCCw"}}, "unsigned": {"age_ts": 1570041679577}} SeQ}$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "txn_id": "148", "stream_ordering": 1364}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk"], "type": "m.room.message", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"body": "hello, world 1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041678924, "hashes": {"sha256": "YQIGSWSUsu7Tkpxtky8bqD55GhWgnBu/lr6mE5gAR+k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MByy2umYv5dhomxrbqvggXvIvn25Qana2RrHniKXPRbCrWS6Kjmmku+U7ShGFH4+VfpAubVxBFPUBBSZ1kPnCA"}}, "unsigned": {"age_ts": 1570041678924}} 8l D `8"]c!E@anon-20191002_181700-291:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAoOPDSPHGDRK127.0.0.1Perl + Net::Async::HTTP/0.44m^t!]c!E@anon-20191002_181700-290:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwoHIUKIRMYDG127.0.0.1Perl + Net::Async::HTTP/0.44mD` ]c!E@anon-20191002_181700-289:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwoWRUIAYGXAN127.0.0.1Perl + Net::Async::HTTP/0.44meQ? $_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibilitye=eQ/ $nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rulesg<eQ3 $dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels ;eQ']$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800a:eQ' $D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800m.room.createm9eQ? $PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibilitye8eQ/ $zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rulesg7eQ3 $GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels 6eQ']$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800a5eQ' $VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800m.room.create exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMM  ZeQa$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1371}{"auth_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs", "$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg"], "type": "m.room.history_visibility", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041684268, "hashes": {"sha256": "OdZdhxhBvxb+sWPUPgl+gp68Fz8Y8sEyqI9cAxGMYD0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pjUC5PMbpqwxFJ8IOj9rmi/QXWyH0gHsFaw8RBxoZ97XB8UzV6E6BJ8ECmqdm2pnWdu2gqN/+dOQc46UMNPXDg"}}, "unsigned": {"age_ts": 1570041684268}}tYeQau$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1370}{"auth_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs", "$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs"], "type": "m.room.join_rules", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041683568, "hashes": {"sha256": "KNZaMjJblfhXkHaoAhiHqb9DzvnhaiBgIcQHPcI1aMo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ifAa1zSZBRqJF2LDT7IIYDqCyTSbBfk+UtHwxS+ovSRtS68hsn3wPZ3ENq6SArjm2YmofOp0Pl+8lrl0IqXwAw"}}, "unsigned": {"age_ts": 1570041683568}}kXeQac$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1369}{"auth_events": ["$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "type": "m.room.power_levels", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"users": {"@anon-20191002_181700-283:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041682514, "hashes": {"sha256": "NUjAhqZfwt98h4Nmg1mpGdNL8AlE4rUayOKQucLKdyI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bMx6PBZiT7DmsW91seunfcj0Jnmzm3MopzykB6ag7fga9Gh7FpEv3wi5lspy2PWtCJ0dj8QwtSMlBflV6EFXDg"}}, "unsigned": {"age_ts": 1570041682514}}vWeQay$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1368}{"auth_events": ["$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w"], "prev_events": ["$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w"], "type": "m.room.member", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-283", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-283:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041681963, "hashes": {"sha256": "NSTy2Fbp8TwOPsDBZlcTPH6LCruNOOU2gB23N+0E87c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TekwO91+Xb7C8UDXbeJEfcfTcpJivhwzbJemjO7VPnZ3kL63CNOJReEDEFm/b78SpNRaiStVvxHixmOUr4t/DA"}}, "unsigned": {"age_ts": 1570041681963}} a} { y w u sqomkigeca~*eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~)eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~(eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~'eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~&eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~%eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~$eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~#eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~"eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~!eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~ eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800~ eeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800~ eeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VeL$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejgsha256"7rpVkJuX8G}W\z8VeL$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8Msha256r>Iӿ~!c)Br>LW~[x{VeL$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcsha256bp#F RpJ5"D)*ٜ}b(N+,ЁVpeL$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprksha256#]&s)XE{[}dvA_֦VoeL$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8sha256-Ip5+mM -{poP6`VneL$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwsha256,{bظa$0A=x79)PLVmeL$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYsha256D󤷫9qDbPƍR:t}BVleL$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8sha256*77l(:W;}Uc}F:?VkeL$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wsha256imӖj[/>M}of"%gAyzVYeL$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgsha256:B1?^'VlFq@ɬ[+:X %p @ P `  p 0`p 0@P`p 0@PMo]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800Mn]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800Mm]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800Ml]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800Mk]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800Mj]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800Mi]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800Mh]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800Mg]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800Mf]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800Me]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800M[]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800MZ]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800MY]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800MX]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800MW]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800MV]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800MU]Q@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800MT]Q@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800MS]Q@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800MQ]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800MP]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800MO]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800MM]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800ML]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800MK]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800MJ]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800MI]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800Md]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800Mc]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800Mb]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800Ma]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800M`]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800M_]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800M^]Q@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800M]]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800M\]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800 E V * vE p}K Dq \V$Q  | v? $ J P   [ )a/g _I5mli8_J8gWac1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 s1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU01e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg+1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!921e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw^1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUe1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Iu1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU{1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEr1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4 1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq81e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE31e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q? .1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw81e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kN1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoq0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc= 1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V401e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg  21e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw 1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA~>21e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 821e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA20e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ  t  k^eQac$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1375}{"auth_events": ["$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "type": "m.room.power_levels", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"users": {"@anon-20191002_181700-284:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041688603, "hashes": {"sha256": "IeqGGlSg6RS6tsf5uXOnqg/CPIzwy3aSxF1lRQt6LsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "caDPtjaJyEG7qeP9M7w5VNv985iPq4cJrweg9epCbvFvOBGlFNvpwNs3SMxw55T9AEg80PBhf2C+OrAVxxuxAA"}}, "unsigned": {"age_ts": 1570041688603}}v]eQay$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1374}{"auth_events": ["$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ"], "prev_events": ["$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ"], "type": "m.room.member", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-284", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-284:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041688072, "hashes": {"sha256": "o909XUZLn9LOXX0bA9SrQHUpaAQIMGtInFW1GmVc7lE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UH5MPFZ39lo094G/itVm85YgqZk8EWExpg6QlFuRAnWmX3fa9Dfu9ZY6/j5XptBcRKu2BWbMcD1ZpfYVPgqbBA"}}, "unsigned": {"age_ts": 1570041688072}}i\eQa_$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1373}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-284:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041687401, "hashes": {"sha256": "GZo0Uw0kg/uWiRsToOFXVzugyAPCVaM5JRckCem3Bb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IDLS50GusLR/oMnUgl0NKfV1Z4EA5bX5KLVauVPblQ7J67334ZFAzgxZh1BJdaWUmNGSt07dNxstwvo6q5cFAQ"}}, "unsigned": {"age_ts": 1570041687401}}[eQy$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "txn_id": "151", "stream_ordering": 1372}{"auth_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs", "$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs"], "type": "m.room.message", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"body": "hello, world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041685652, "hashes": {"sha256": "7UXf2K/4GmHhbaHl0AkwEolYibKTX7W9ABPedasM0w0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ydkWsg/gPFa5J6wKo0u4bsE3BtAz/0lXE9atFeb/VCU1pqNDLfKgGSQFC+lri9XupPL/rjqizDWkD7i9B//cAA"}}, "unsigned": {"age_ts": 1570041685652}} g A 2 #   yj[L=.zk\M>/  { l ] N ? 0 !   ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) 9ufWH* gv | m ^ O @ 1 "   } n _ PXI:+ whYJ;,wm$m9'm6|m3 m/[m)Wm%3m!mmWmm5m)m dmm]mmm`mmmQmmommmmdm؀mՒmmmmmLmmǽmǺmǷmǮmǚ`mǪomǧmǥmǢUmǝmǚmǓWmǐmǍdmljmdžmǀCm|mymvmsXmpmm3mkPmhm`z~~m^w}}m[||mX{{mUzzmRyymPxxmKEwwmHjvvmE4uum=ttm:ssm2rrm0qqm.!ppm+Yoom(snnm%mmmllmCkkmjjmiimhhmggm ffm eemddmccmbbm@aam``m__m^^mi]]m\\m,[[mpZZmRYYm+XXmWWmЀVVmUUmLTTmɔSSmARRm QQmƼPPmƺ5OOmƸ+NNmƴ5MMmƬ^LLmƪKKmƧJJmƣ:IImƠHHmƝGGmƛFFmƘEEmƒDDmƏCCmƌBBmƉAAmƇ@@mƄ??mƬ  mĉ  mſ  mŷ  mŴmŮmŪmŨ mťmšmȉ&mȈmȅfmȅemȁm{%mw.msmrmnmkmhmdmam^Lm[mYmU?mQ_mNmKmHmEm@m=hm~>>my==mv<<ms;;mp(::mj99mc88maW77m^066mY55mW44mT33mP22mNc11mK00mH//mC..m4--m3,,m+++m+**m+))m&<((m&9''m&7&&m,%%m'$$m%##m""m  Km!!mmmm |mmmmmqmmWm~m{mymm\mumm  NS Z {N y  s8 =f 4'  ( #jl U O:p`  CA! u  G .   Y I 1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30;1e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0_1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakG0e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU@1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA 1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8X1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4z1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg<1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14?1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoN1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAJ1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc<1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE<1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg$1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEh1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 1e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8C1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA>1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo "1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw u1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQz1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc b1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q W1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY v1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk %1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY~1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 @1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIZ1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ e1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo T1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM D1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0/1e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8"1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 A1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 J ,NC 8 - { " p  e ZOD9.|#qf VxeL$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEsha256Zq0=Ҭ `*6Hn VweL$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4sha256 /N[ֳ,?ĭʄ>VveL$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4Esha256Ө޽&fyqt ֟^OfkoVueL$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4sha256Z~TUN6[Ί)i6jE!NVteL$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8sha256k]*Fs2 ,~ԨEKfVseL$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAsha256M>ZGBF`-o`L7b)vpVreL$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4sha256EVp@4ŨFVqeL$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYsha256o\Mx%5? VpeL$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Qsha256z9qƥ54εJ)W==6 VoeL$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXossha2567Vu=d`Pt9% T^VneL$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xwsha256ju29'^kmyo h|VmeL$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gsha256iQVqPÏIrb:uy6)CVleL$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4ssha256rzRH_Z:L^3 n')6VkeL$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkksha2560Dc b }OyQYFouZIVjeL$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MIsha256wiTG+D&J G(Y#UVieL$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMsha256?cXHG:OtF h3㳿փVheL$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgsha256ܩ^5Gڠڭݩӓv5ɲnCJQҺVceL$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEsha256mLyKLZ/Joj _[~aVbeL$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5ksha256)$M8M6(=h +5xo6*)VaeL$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4sha256R[Y~tu lɴzċ3>V`eL$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-osha256PT2My㤽35ui@OV_eL$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecsha256;a;0;q8܀:UV^eL$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0sha256bQ1Z;.sr挙 -mV]eL$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cgsha2565 |B~*ӬQdbg%S8mgٗ(V\eL$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8sha256c4X}t 0V[eL$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyEsha256HߓubhyFWN!'r.*N9!VZeL$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85ssha256ؖ#ژ0Rd(n(w] !VYeL$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMosha256%**Uʎ#͖߸t0 s VXeL$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwsha256?Ka/1bf94a1,VWeL$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYsha256emrթ&IFݳL6VVeL$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8sha256e_Jd(X_KoKcVUeL$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQsha256hM9*s7H6bS}tVTeL$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWAsha256Fbk$'dH&xaV"E`VSeL$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vcsha256~ȧs56yai7=5WVReL$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMsha256%8R2*qГqVf3VQeL$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8sha256}oގ#20r$‹Jy$њnVPeL$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwsha256b SQQx-&c߇d.+}MJLVOeL$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQsha256 ?v+ S%41cڄ? TVNeL$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNosha256$x) ; ~ LpVMeL$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94sha256.l?xw C{K6 C`Q k  sibeQa_$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1379}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-286:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041693059, "hashes": {"sha256": "GAz46O/nCSBvz6TDUeTOTqLkfxAgA6wkBG+SGI8JG48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "npcdOQ5SPHSX+TIwroIC5FRdqCQqLO7/veJslEAJSsSlhtKyfcKWxDzLpQ0JYdHnWQSq/sWF/0OzXOCHeD1FCg"}}, "unsigned": {"age_ts": 1570041693059}}aeQy$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "txn_id": "152", "stream_ordering": 1378}{"auth_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c", "$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4"], "type": "m.room.message", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"body": "hello, world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041691081, "hashes": {"sha256": "EIt6ExR1l1MOWOlIJugJ+O+sS9Ak4xY1yXzL3CrOqQk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "znEnKF712RylhI5/NXQZ764P5Q9oq97++PmFH5ZHBw16k50b1cPxuXr9xMBaK9oP2u0rIf92rlSaFhBC9sbOAA"}}, "unsigned": {"age_ts": 1570041691081}}`eQa$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1377}{"auth_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c", "$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI"], "type": "m.room.history_visibility", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041689920, "hashes": {"sha256": "6R0wxtSf07eA/Jux7rVULQ6CZxFz3ksR7Idh5Jr2Tck"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a+sUraeYSc3mHSfQp0+JHNnDpgevR6FvMaEPVv0lud3qXODWVhG+LSaZHywrDDfGa/rJUqyay3Nu0utALqWxBA"}}, "unsigned": {"age_ts": 1570041689920}}t_eQau$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1376}{"auth_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c", "$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c"], "type": "m.room.join_rules", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041689345, "hashes": {"sha256": "YQ0DjQVJ9Dtpb9f7VDc+NPl35V+VGm/mlVoKMctSW0M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pU9p/hSz/l+4YQpXXJAyWxs/CkkOS8HCSSj68LhuqZCBzskYDq0kP7aRjgUji6gXRD4SpOGHUDsV+oeLjsAaDg"}}, "unsigned": {"age_ts": 1570041689345}} g * T~=gg4]!c=@anon-20191002_181700-297:localhost:8800DVSKNCGFXXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAog3]!c<@anon-20191002_181700-296:localhost:8800SBLEQBXZQLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAog2]!c;@anon-20191002_181700-295:localhost:8800CIYGWJHPPNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQog1]!c:@anon-20191002_181700-294:localhost:8800RKGLRVXFMGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQog0]!c9@anon-20191002_181700-293:localhost:8800PVLMJRXINQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwog/]!c8@anon-20191002_181700-292:localhost:8800GGCVZACJDJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_gog.]!c7@anon-20191002_181700-291:localhost:8800OPDSPHGDRKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAog-]!c6@anon-20191002_181700-290:localhost:8800HIUKIRMYDGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwog,]!c5@anon-20191002_181700-289:localhost:8800WRUIAYGXANMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwog+]!c4@anon-20191002_181700-288:localhost:8800BKSOCJCTFTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElsOmlIcVhGQ2wyTEkzVzcKMDAyZnNpZ25hdHVyZSCzJfmtbG81Wrm2vimRJic-dEVRDEDntZmOEo-h59M2rwog*]!c3@anon-20191002_181700-287:localhost:8800UVZQFXTZFVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLbHpJaVAweDZDd3JiPVUKMDAyZnNpZ25hdHVyZSAsElnH6_lTGWgAUIPCduvm_LujyRBeS5_Rv8VYp_0n3Ao  feQa$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1383}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI"], "type": "m.room.history_visibility", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041695986, "hashes": {"sha256": "G+c9pi5JMH6Ow49YTGcjuF0pTdfiI2P3sxxL+SoDVhc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f8c7pMB/jQuotrewIBupezbl/In/9f3JeDSTOXO9Yc8KecA7j/p1xCEYLlqaLubu+jVInYAY4zgz6FrpLrVvBw"}}, "unsigned": {"age_ts": 1570041695986}}teeQau$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1382}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo"], "type": "m.room.join_rules", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041695244, "hashes": {"sha256": "/C+lPmlTmOUV9s6iLE5CjmkFDtKFTqelfk28uzB4gVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E6+mVEU/hcg7pqCCLLeXdUVkRKio64pprLULpVDJNhub7phowJQ9Wa2FAQpeyhJZr85/6PyomH8NI0ge6TxvDA"}}, "unsigned": {"age_ts": 1570041695244}}kdeQac$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1381}{"auth_events": ["$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "type": "m.room.power_levels", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"users": {"@anon-20191002_181700-286:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041694481, "hashes": {"sha256": "QwOSYiqb7gy/FwLSbvsC5xjxG86L1swpzZIfHJ40e+Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WjGySpBObeuhNkTJfsFe1ndmSftyyDtnShIjqI24+g/Dh3Kuce14JHnequ19GLNWH+yBqoGtcPQyHZfNnxQiCw"}}, "unsigned": {"age_ts": 1570041694481}}vceQay$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1380}{"auth_events": ["$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM"], "prev_events": ["$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM"], "type": "m.room.member", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-286", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-286:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041693882, "hashes": {"sha256": "WY5KgIEcYvmV9G9FnHVhSCM6NhrO1jbpXdrV13M9W8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z8VIsZ9jiQoEE4kTanCLzVmQUD1noWi8jBelVwlkLCmtmdMUH3fowJTaM2C+4Je1+8Gc95F+3mbeYPhXOET8Cw"}}, "unsigned": {"age_ts": 1570041693882}} .RM H C > 9 4/*|%w ry.L]TQe!QyLUggxrTnULUAOseq:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoITQe!QyLUggxrTnULUAOseq:localhost:8800$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_WoIQO!azRJNFPIRSFAskLILK:localhost:8800$157004173712pxBJg:localhost:8800TQe!MBWnwKRwFznvRpAzxr:localhost:8800$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8IQO!azRJNFPIRSFAskLILK:localhost:8800$157004173511wRnRr:localhost:8800IQO!azRJNFPIRSFAskLILK:localhost:8800$157004173510EIiCi:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417349vUcYV:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417338MBNFd:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417327EEUMr:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417316amiRb:localhost:8800TQe!MBWnwKRwFznvRpAzxr:localhost:8800$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6ITQe!MBWnwKRwFznvRpAzxr:localhost:8800$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cTQe!MBWnwKRwFznvRpAzxr:localhost:8800$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3YkTQe!MBWnwKRwFznvRpAzxr:localhost:8800$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlETQe!MBWnwKRwFznvRpAzxr:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4TQe!MBWnwKRwFznvRpAzxr:localhost:8800$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4TQe!krhefVncoErkCtnvsy:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8T Qe !krhefVncoErkCtnvsy:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYET Qe !krhefVncoErkCtnvsy:localhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgT Qe !krhefVncoErkCtnvsy:localhost:8800$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MT Qe !krhefVncoErkCtnvsy:localhost:8800$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3EjcT Qe !krhefVncoErkCtnvsy:localhost:8800$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMTQe!krhefVncoErkCtnvsy:localhost:8800$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUTQe!krhefVncoErkCtnvsy:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoTQe!krhefVncoErkCtnvsy:localhost:8800$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyATQe!mMsxpaIlcykPuOnDyl:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwTQe!mMsxpaIlcykPuOnDyl:localhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0TQe!mMsxpaIlcykPuOnDyl:localhost:8800$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61ETQe!mMsxpaIlcykPuOnDyl:localhost:8800$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasTQe!mMsxpaIlcykPuOnDyl:localhost:8800$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4TQe!mMsxpaIlcykPuOnDyl:localhost:8800$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICETQe!mMsxpaIlcykPuOnDyl:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YT~Qe!mMsxpaIlcykPuOnDyl:localhost:8800$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkT}Qe!VOhMAiLfKyTOZbmKGw:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwT|Qe!VOhMAiLfKyTOZbmKGw:localhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQT{Qe!VOhMAiLfKyTOZbmKGw:localhost:8800$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcTzQe!VOhMAiLfKyTOZbmKGw:localhost:8800$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkTyQe!VOhMAiLfKyTOZbmKGw:localhost:8800$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8TxQe!VOhMAiLfKyTOZbmKGw:localhost:8800$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwTwQe!VOhMAiLfKyTOZbmKGw:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYTvQe!VOhMAiLfKyTOZbmKGw:localhost:8800$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8TuQe!ffijTnPMbTrDXHqOXf:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoTtQe!ffijTnPMbTrDXHqOXf:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkTsQe!ffijTnPMbTrDXHqOXf:localhost:8800$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkTrQe!ffijTnPMbTrDXHqOXf:localhost:8800$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoTqQe!ffijTnPMbTrDXHqOXf:localhost:8800$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI  5ieQw$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "txn_id": "153", "stream_ordering": 1386}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk"], "type": "m.room.message", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"body": "before join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041698455, "hashes": {"sha256": "JGRsApKqw+h0GrggCXLhUUQioJiypfkVdgqLE9hsPpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mNTeTD79I1XtqZuYg1KddweUIX0mngxnTzpjqINpRFfpnT8Qn2VmtRaO++qC534v10hoPitkIcgnsKGc6mxBDA"}}, "unsigned": {"age_ts": 1570041698455}}heQa7$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1385}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk"], "type": "m.room.member", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-287", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-287:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041697936, "hashes": {"sha256": "N/nIaXURmgS02tyALlHlt5vSDTdfqgBwk7q/gY5tnss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pyw6k+HSokqt4+SwIhh1VjjX/ROMfD1RH1oDwPLPLJhHtmf9dTuX5HW/AMjb/2UmpapqFsicZTBuWmApZLSaAw"}}, "unsigned": {"age_ts": 1570041697936, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-286:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-286:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-286", "avatar_url": null}, "sender": "@anon-20191002_181700-286:localhost:8800"}]}}GgeQa$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1384}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo"], "type": "m.room.history_visibility", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041697222, "hashes": {"sha256": "UPu5SvYIXoqu7VUd7myqCVMaatnQhX1lyW1y1zsS6Qg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cWBX16wAX6vAucPC5zOp83KX/8npltL/q106o2fg2f4aT48sdXQMCCJBC66w2EgfPZ19bvS8MXcvx9SRGhlOCA"}}, "unsigned": {"age_ts": 1570041697222, "replaces_state": "$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo"}} a} { y w u sqomkigeca~IeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~HeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~GeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~FeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~EeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~DeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~CeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~BeeQ$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~AeeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800~@eeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~?eeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~>eeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~=eeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~<eeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~;eeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~:eeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~9eeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~8eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~7eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~6eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~5eeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~4eeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~3eeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~2eeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~1eeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~0eeQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~/eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800~.eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~-eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~,eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~+eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800 [e=E}U-md=vN& ^ 6&^  n F vN ~ V .  f >  v N &^6sL%6]5 'Q!qInWQPtNQfBFoVzUtP:localhost:8800 p'Q!qInWQPtNQfBFoVzUtP:localhost:8800 o'Q!qInWQPtNQfBFoVzUtP:localhost:8800 n'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 T'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 S'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 R'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 Q'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 P'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 O'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 &Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800 _'Q!peJMRJtXBvIiCttNmm:localhost:8800 ^'Q!peJMRJtXBvIiCttNmm:localhost:8800 ]'Q!peJMRJtXBvIiCttNmm:localhost:8800 \'Q!peJMRJtXBvIiCttNmm:localhost:8800 ['Q!pduebXnTyxQWVxEICp:localhost:8800 &'Q!pduebXnTyxQWVxEICp:localhost:8800 %'Q!pduebXnTyxQWVxEICp:localhost:8800 $'Q!pduebXnTyxQWVxEICp:localhost:8800 #'Q!pduebXnTyxQWVxEICp:localhost:8800 "'Q!pduebXnTyxQWVxEICp:localhost:8800 !'Q!paDmNxsOZIKyApbxXs:localhost:8800 F'Q!paDmNxsOZIKyApbxXs:localhost:8800 E'Q!paDmNxsOZIKyApbxXs:localhost:8800 D'Q!paDmNxsOZIKyApbxXs:localhost:8800 C'Q!paDmNxsOZIKyApbxXs:localhost:8800 B'Q!paDmNxsOZIKyApbxXs:localhost:8800 A'Q!paDmNxsOZIKyApbxXs:localhost:8800 @'Q!paDmNxsOZIKyApbxXs:localhost:8800 ?'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800 H'Q!pJUItjYTOUJQFIxyiX:localhost:8800 G'Q!pJUItjYTOUJQFIxyiX:localhost:8800 F'Q!pJUItjYTOUJQFIxyiX:localhost:8800 E'Q!pJUItjYTOUJQFIxyiX:localhost:8800 D'Q!pJUItjYTOUJQFIxyiX:localhost:8800 C'Q!pJUItjYTOUJQFIxyiX:localhost:8800 B'Q!oznZaCpONuNDaLarkI:localhost:8800N'Q!oznZaCpONuNDaLarkI:localhost:8800M'Q!oznZaCpONuNDaLarkI:localhost:8800L'Q!oznZaCpONuNDaLarkI:localhost:8800K'Q!oznZaCpONuNDaLarkI:localhost:8800J'Q!oznZaCpONuNDaLarkI:localhost:8800I'Q!ozgnwUlebxvzLVwyHW:localhost:88003'Q!ozgnwUlebxvzLVwyHW:localhost:88002'Q!ozgnwUlebxvzLVwyHW:localhost:88000'Q!ozgnwUlebxvzLVwyHW:localhost:8800.'Q!ozgnwUlebxvzLVwyHW:localhost:8800,'Q!ozgnwUlebxvzLVwyHW:localhost:8800)&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800  YlvmeQay$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1390}{"auth_events": ["$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8"], "prev_events": ["$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8"], "type": "m.room.member", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-288", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-288:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041702515, "hashes": {"sha256": "6ons5o/2HSPgLnu9iYxOXvAuTBvGu8aH+kH2Qvqb+sU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JaBLbVCpFJpJr8b+a/UBKe1XSmQNxcVCYfld1rZ/a6bFOSXqEVm9Xh2/ZUpUdOZFQReWn+NEt9sVIvDHCKuxAA"}}, "unsigned": {"age_ts": 1570041702515}}ileQa_$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1389}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-288:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041701776, "hashes": {"sha256": "SaAHaLInR0PdPM4M36/gd1bvu5qfrJkEnIfiM14wgP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zhU7G2tyYte1p6kCq9iGDVv34jOYNG4uZDIHvHj8/QAzF1emth5vjqueEbs9HMOj79oSMORwi/hO5aIV11aNBQ"}}, "unsigned": {"age_ts": 1570041701776}}keQw$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "txn_id": "154", "stream_ordering": 1388}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo"], "type": "m.room.message", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"msgtype": "m.text", "body": "after join"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041700078, "hashes": {"sha256": "5Idjxl+7Agn0m5ZgzKstVehIgIJDc7nJAau7ihWQxf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bS5SAgIXeDxrYHpjhu0C6hV3Ma0c3l7lFPeCRzbF47fWHrTHVAQFYwFcKy1tEzR4DuLOunCg8KYrkr+NOGTZAw"}}, "unsigned": {"age_ts": 1570041700078}}jeQa=$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 307, "stream_ordering": 1387}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI"], "prev_events": ["$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0"], "type": "m.room.member", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-287:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-287", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-287:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041699139, "hashes": {"sha256": "R4Cl64xvBexUdBECEt4K2gl0UlCXQlNWwthxUzIJ1kY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mcduVwjfiZR+cdXNcGlJGrYyMdjiG9EKatNV0IGqmOqRC6XZjOgGha8uulNUVgTu5Ct8RLbImQ9/8ElIifuEDw"}}, "unsigned": {"age_ts": 1570041699139, "replaces_state": "$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk"}} MKoUuD}j8p> w E   } K#  Q)= Q  W %   ] +c1 [i71e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI p1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 d1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k 1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwf1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8J1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck h1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA d1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 {1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0v1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo_0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gH1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko,1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM31e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk c1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ 1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI 1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 921e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs21e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoD1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw<1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k;1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu41e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0q1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsi1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY}1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k~1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw-1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk&1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI41e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU G[$H l 5 Y " } F  j 3 W {D h1UyB f/Sw@ d-4 ==anon-20191002_181700-361anon-20191002_181700-3614 ==anon-20191002_181700-362anon-20191002_181700-3624 ==anon-20191002_181700-359anon-20191002_181700-3594 ==anon-20191002_181700-357anon-20191002_181700-3574==anon-20191002_181700-358anon-20191002_181700-3584==anon-20191002_181700-356anon-20191002_181700-3564==anon-20191002_181700-354anon-20191002_181700-3544==anon-20191002_181700-355anon-20191002_181700-3554==anon-20191002_181700-353anon-20191002_181700-3534==anon-20191002_181700-352anon-20191002_181700-3524==anon-20191002_181700-350anon-20191002_181700-3504==anon-20191002_181700-351anon-20191002_181700-3514==anon-20191002_181700-349anon-20191002_181700-3494==anon-20191002_181700-348anon-20191002_181700-3484~==anon-20191002_181700-346anon-20191002_181700-3464}==anon-20191002_181700-347anon-20191002_181700-3474|==anon-20191002_181700-345anon-20191002_181700-3454{==anon-20191002_181700-343anon-20191002_181700-3434z==anon-20191002_181700-342anon-20191002_181700-3424y==anon-20191002_181700-341anon-20191002_181700-3414x==anon-20191002_181700-339anon-20191002_181700-3394w==anon-20191002_181700-338anon-20191002_181700-3384v==anon-20191002_181700-337anon-20191002_181700-3374u==anon-20191002_181700-336anon-20191002_181700-3364t==anon-20191002_181700-335anon-20191002_181700-3354s==anon-20191002_181700-334anon-20191002_181700-3344r==anon-20191002_181700-333anon-20191002_181700-3334q==anon-20191002_181700-332anon-20191002_181700-3324p==anon-20191002_181700-331anon-20191002_181700-3314o==anon-20191002_181700-330anon-20191002_181700-3304n==anon-20191002_181700-329anon-20191002_181700-3294m==anon-20191002_181700-328anon-20191002_181700-3284l==anon-20191002_181700-327anon-20191002_181700-3274k==anon-20191002_181700-326anon-20191002_181700-3264j==anon-20191002_181700-325anon-20191002_181700-3254i==anon-20191002_181700-324anon-20191002_181700-3244h==anon-20191002_181700-323anon-20191002_181700-3234g==anon-20191002_181700-322anon-20191002_181700-3224f==anon-20191002_181700-321anon-20191002_181700-3214e==anon-20191002_181700-320anon-20191002_181700-3204d==anon-20191002_181700-319anon-20191002_181700-3194c==anon-20191002_181700-318anon-20191002_181700-3184b==anon-20191002_181700-317anon-20191002_181700-3174a==anon-20191002_181700-316anon-20191002_181700-3164`==anon-20191002_181700-315anon-20191002_181700-3154_==anon-20191002_181700-314anon-20191002_181700-3144^==anon-20191002_181700-312anon-20191002_181700-3124]==anon-20191002_181700-311anon-20191002_181700-3114\==anon-20191002_181700-310anon-20191002_181700-3104[==anon-20191002_181700-309anon-20191002_181700-3094Z==anon-20191002_181700-308anon-20191002_181700-3084Y==anon-20191002_181700-307anon-20191002_181700-3074X==anon-20191002_181700-306anon-20191002_181700-3064W==anon-20191002_181700-305anon-20191002_181700-3054V==anon-20191002_181700-304anon-20191002_181700-3044U==anon-20191002_181700-303anon-20191002_181700-3034T==anon-20191002_181700-302anon-20191002_181700-3024S==anon-20191002_181700-301anon-20191002_181700-3014R==anon-20191002_181700-300anon-20191002_181700-3004Q==anon-20191002_181700-299anon-20191002_181700-2994P==anon-20191002_181700-298anon-20191002_181700-2984O==anon-20191002_181700-297anon-20191002_181700-2974N==anon-20191002_181700-296anon-20191002_181700-2964M==anon-20191002_181700-295anon-20191002_181700-2954L==anon-20191002_181700-294anon-20191002_181700-2944K==anon-20191002_181700-293anon-20191002_181700-2934J==anon-20191002_181700-292anon-20191002_181700-2924I==anon-20191002_181700-291anon-20191002_181700-2914H==anon-20191002_181700-290anon-20191002_181700-2904G==anon-20191002_181700-289anon-20191002_181700-2894F==anon-20191002_181700-288anon-20191002_181700-288 |v p j f ` \YURNJFB>qQ]e!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-398:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4AjoinpQ]e!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-397:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0joinoQ]e!CGckPHdSYcIocFvRAq:localhost:8800@anon-20191002_181700-395:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiojoinnQ]e!BoyzlWNkRPncpDjBDg:localhost:8800@anon-20191002_181700-394:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UjoinmQ]e!djwLhpJUYOKsgQtrky:localhost:8800@anon-20191002_181700-393:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYjoinlQ]e!bkwyieHZwSMJfuSKvV:localhost:8800@anon-20191002_181700-392:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIjoinkQ]e!XcaKxZsPvbZhAGKKdx:localhost:8800@anon-20191002_181700-391:localhost:8800$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYjoinjQ]e!jDKAOtmeAGbYTpwyEW:localhost:8800@anon-20191002_181700-390:localhost:8800$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkjoiniQ]e!JYLMokjOhZZlmbZvTf:localhost:8800@anon-20191002_181700-389:localhost:8800$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kjoinhQ]e!zoTQAhGwmDDUECKtbL:localhost:8800@anon-20191002_181700-388:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAjoingQ]e!NeYaCeYNFATCqlrlGT:localhost:8800@anon-20191002_181700-387:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwjoinfQ]e!YtVXQjSPgVtbxrzUOA:localhost:8800@anon-20191002_181700-386:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYjoin~eQ]e!zsXPhIPzeXXLvuazzQ:localhost:8800@anon-20191002_181700-385:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gbandQ]e!zsXPhIPzeXXLvuazzQ:localhost:8800@anon-20191002_181700-384:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0joincQ]e!WFHIeSFQyuugGeBFxW:localhost:8800@anon-20191002_181700-383:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0joinbQ]e!WFHIeSFQyuugGeBFxW:localhost:8800@anon-20191002_181700-382:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIjoin~aQ]e!QMrkSPlQDGborAyWtQ:localhost:8800@anon-20191002_181700-381:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0ban`Q]e!QMrkSPlQDGborAyWtQ:localhost:8800@anon-20191002_181700-380:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kjoin_Q]e!mBQpGaIiadEuKBXfOw:localhost:8800@anon-20191002_181700-379:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIjoin^Q]e!mBQpGaIiadEuKBXfOw:localhost:8800@anon-20191002_181700-378:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwjoin]Q]e!xXYMxashIZAUOTuGAJ:localhost:8800@anon-20191002_181700-377:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgleave\Q]e!ozgnwUlebxvzLVwyHW:localhost:8800@anon-20191002_181700-376:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMjoin[Q]e!ozgnwUlebxvzLVwyHW:localhost:8800@anon-20191002_181700-375:localhost:8800$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScjoinZQ]e!QcaNrIiUsWpTiVGOnt:localhost:8800@anon-20191002_181700-375:localhost:8800$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0joinYQ]e!rQeYcODvQiLsOIbQrJ:localhost:8800@anon-20191002_181700-374:localhost:8800$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUleaveXQ]e!csWEXfVEVxdviNvgAd:localhost:8800@anon-20191002_181700-374:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4joinWQ]e!aHyAJEOSdKqTiRjOvw:localhost:8800@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wleaveVQ]e!aHyAJEOSdKqTiRjOvw:localhost:8800@anon-20191002_181700-373:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYjoinUQ]e!hnQOBexFYpvJntEChZ:localhost:8800@anon-20191002_181700-371:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8leaveTQ]e!hDAzBWYEyRVBRlrCHh:localhost:8800@anon-20191002_181700-370:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Eleave Fm< xG R ! ]  ~ M X'c2n= yHS"^- , h 7  s B i8tC0]@anon-20191002_181700-319:localhost:8800w0]@anon-20191002_181700-318:localhost:8800v0]@anon-20191002_181700-317:localhost:8800u0]@anon-20191002_181700-316:localhost:8800t0]@anon-20191002_181700-315:localhost:8800s0]@anon-20191002_181700-314:localhost:8800r0]~@anon-20191002_181700-312:localhost:8800q0]}@anon-20191002_181700-311:localhost:8800p0]|@anon-20191002_181700-310:localhost:8800o0]{@anon-20191002_181700-309:localhost:8800n0]z@anon-20191002_181700-308:localhost:8800m0]y@anon-20191002_181700-307:localhost:8800l0]x@anon-20191002_181700-306:localhost:8800k0]w@anon-20191002_181700-305:localhost:8800j0]v@anon-20191002_181700-304:localhost:8800i0]u@anon-20191002_181700-303:localhost:8800h0]t@anon-20191002_181700-302:localhost:8800g0]s@anon-20191002_181700-301:localhost:8800f0]r@anon-20191002_181700-300:localhost:8800e0]q@anon-20191002_181700-299:localhost:8800d0]p@anon-20191002_181700-298:localhost:8800c0]o@anon-20191002_181700-297:localhost:8800b0]n@anon-20191002_181700-296:localhost:8800a0]m@anon-20191002_181700-295:localhost:8800`0]l@anon-20191002_181700-294:localhost:8800_0]k@anon-20191002_181700-293:localhost:8800^0]j@anon-20191002_181700-292:localhost:8800]0]i@anon-20191002_181700-291:localhost:8800\0]h@anon-20191002_181700-290:localhost:8800[0]g@anon-20191002_181700-289:localhost:8800Z0]f@anon-20191002_181700-288:localhost:8800Y0]e@anon-20191002_181700-287:localhost:8800X0]d@anon-20191002_181700-286:localhost:8800W0]c@anon-20191002_181700-285:localhost:8800V0]b@anon-20191002_181700-284:localhost:8800U0]a@anon-20191002_181700-283:localhost:8800T0]`@anon-20191002_181700-282:localhost:8800S0]_@anon-20191002_181700-281:localhost:8800R0]^@anon-20191002_181700-280:localhost:8800Q0]]@anon-20191002_181700-279:localhost:8800P0]@anon-20191002_181700-330:localhost:88000]@anon-20191002_181700-329:localhost:88000]@anon-20191002_181700-328:localhost:88000]@anon-20191002_181700-327:localhost:88000]@anon-20191002_181700-326:localhost:8800~0]@anon-20191002_181700-325:localhost:8800}0]@anon-20191002_181700-324:localhost:8800|0]@anon-20191002_181700-323:localhost:8800{0]@anon-20191002_181700-322:localhost:8800z0]@anon-20191002_181700-321:localhost:8800y0]@anon-20191002_181700-320:localhost:8800x0]\@anon-20191002_181700-278:localhost:8800O0][@anon-20191002_181700-277:localhost:8800N0]Z@anon-20191002_181700-276:localhost:8800M0]Y@anon-20191002_181700-275:localhost:8800L0]X@anon-20191002_181700-274:localhost:8800K0]W@anon-20191002_181700-272:localhost:8800J0]V@anon-20191002_181700-273:localhost:8800I0]U@anon-20191002_181700-270:localhost:8800H0]@anon-20191002_181700-332:localhost:88000]T@anon-20191002_181700-271:localhost:8800G0]S@anon-20191002_181700-267:localhost:8800F0]R@anon-20191002_181700-269:localhost:8800E0]Q@anon-20191002_181700-268:localhost:8800D0]O@anon-20191002_181700-266:localhost:8800B0]N@anon-20191002_181700-265:localhost:8800A0]M@anon-20191002_181700-264:localhost:8800@0]L@anon-20191002_181700-263:localhost:8800?0]K@anon-20191002_181700-262:localhost:8800>0]@anon-20191002_181700-331:localhost:8800 s$rX\ ` d  w # { '+:Ic) 8Ga p eQeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800FOQ$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800Q<eQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800FOQ$157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800Q~eQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800FoOQ$157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800QneQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800FjOQ$157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800QkeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800FgOQ$157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800QheQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800FdOQ$157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800QeeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800QbeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800QaeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800Q_eQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800Q^eQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800Q]eQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800Q\eQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw!cGkVFpidyBBxUxsszG:localhost:8800Q[eQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800QZeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800QYeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800QXeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800QWeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800 TQSeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800IQFeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk!egbhiBqOGhloZzopol:localhost:8800QEeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800QDeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800QCeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800QBeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800QAeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800Q@eQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800Q?eQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800Q>eQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800Q=eQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800Q`eQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800 E^ c f |%}(:JE,e?Q ]$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8Mm.room.history_visibility!krhefVncoErkCtnvsy:localhost:8800mvmw@anon-20191002_181700-292:localhost:8800$e/Q ]$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcm.room.join_rules!krhefVncoErkCtnvsy:localhost:8800msXmt(@anon-20191002_181700-292:localhost:8800)e9Q ]$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMm.room.canonical_alias!krhefVncoErkCtnvsy:localhost:8800mpmqI@anon-20191002_181700-292:localhost:8800&e3Q ]$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUm.room.power_levels!krhefVncoErkCtnvsy:localhost:8800mm3mo@anon-20191002_181700-292:localhost:8800 e'Q ]$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQom.room.member!krhefVncoErkCtnvsy:localhost:8800mkPmk@anon-20191002_181700-292:localhost:8800 e'Q  ]$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyAm.room.create!krhefVncoErkCtnvsy:localhost:8800mhmi@anon-20191002_181700-292:localhost:8800!~e)Q ] $8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqUm.room.message!mMsxpaIlcykPuOnDyl:localhost:8800 m`zma@anon-20191002_181700-290:localhost:8800 }e'Q ] $TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Wwm.room.member!mMsxpaIlcykPuOnDyl:localhost:8800 m^wm^@anon-20191002_181700-291:localhost:8800!|e)Q ]$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_Mm.room.message!mMsxpaIlcykPuOnDyl:localhost:8800m[m\@anon-20191002_181700-290:localhost:8800!{e)Q ]$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0m.room.aliases!mMsxpaIlcykPuOnDyl:localhost:8800mXmY@anon-20191002_181700-290:localhost:8800,ze?Q ]$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Em.room.history_visibility!mMsxpaIlcykPuOnDyl:localhost:8800mUmV@anon-20191002_181700-290:localhost:8800$ye/Q ]$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasm.room.join_rules!mMsxpaIlcykPuOnDyl:localhost:8800mRmS@anon-20191002_181700-290:localhost:8800)xe9Q ]$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4m.room.canonical_alias!mMsxpaIlcykPuOnDyl:localhost:8800mPmP@anon-20191002_181700-290:localhost:8800&we3Q ]$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEm.room.power_levels!mMsxpaIlcykPuOnDyl:localhost:8800mKEmL@anon-20191002_181700-290:localhost:8800 ve'Q ]$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Ym.room.member!mMsxpaIlcykPuOnDyl:localhost:8800mHjmH@anon-20191002_181700-290:localhost:8800u e'Q  ]$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkm.room.create!mMsxpaIlcykPuOnDyl:localhost:8800mE4mE@anon-20191002_181700-290:localhost:8800 te'Q ]$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwm.room.member!VOhMAiLfKyTOZbmKGw:localhost:8800m=m=@anon-20191002_181700-289:localhost:8800!se)Q ]$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQm.room.aliases!VOhMAiLfKyTOZbmKGw:localhost:8800m:m;N@anon-20191002_181700-288:localhost:8800,re?Q ]$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcm.room.history_visibility!VOhMAiLfKyTOZbmKGw:localhost:8800m2m5@anon-20191002_181700-288:localhost:8800$qe/Q ]$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkm.room.join_rules!VOhMAiLfKyTOZbmKGw:localhost:8800m0m1;@anon-20191002_181700-288:localhost:8800)pe9Q ]$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8m.room.canonical_alias!VOhMAiLfKyTOZbmKGw:localhost:8800m.!m.@anon-20191002_181700-288:localhost:8800&oe3Q ]$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwm.room.power_levels!VOhMAiLfKyTOZbmKGw:localhost:8800m+Ym,[@anon-20191002_181700-288:localhost:8800 ne'Q ]$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYm.room.member!VOhMAiLfKyTOZbmKGw:localhost:8800m(sm(@anon-20191002_181700-288:localhost:8800m e'Q  ]$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8m.room.create!VOhMAiLfKyTOZbmKGw:localhost:8800m%m%@anon-20191002_181700-288:localhost:8800  qeQa$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1394}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk"], "type": "m.room.history_visibility", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041705103, "hashes": {"sha256": "t/hijqauLI6vxynqOll5RR2n6cJsfRc6stxaRnVmNo4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/YbelcrzMsEmP8ecSitM8+VtMQmWEjFGbol4soqcwR/W7wfdzybPYdnDS4e9p2Gfan5IvQZpVEvxLFjHjCeuBg"}}, "unsigned": {"age_ts": 1570041705103}}tpeQau$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1393}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8"], "type": "m.room.join_rules", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041704579, "hashes": {"sha256": "8dDO1LsFLRcPuWq8Xu+aujVPXwSGu+VIvNfCN0enbM8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3NC+UpT3lEE5d4jA+xPILNhTm1g1RXK6jSxUfwi+9i9Zh/8XU1iahXW5rv4sj9/BpKpLFUhHdovbGiLq7gGyDA"}}, "unsigned": {"age_ts": 1570041704579}}oeQa9$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1392}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw"], "type": "m.room.canonical_alias", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"alias": "#test-20191002_181700-40:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041703969, "hashes": {"sha256": "uPnP4WlVQe/ggfAsL6052U+EvEumtottn/c/U1EB0Fw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "juX3h80bDXfDTyY+ogFGN7k3dNRudTRfzx2CYOK3pvVzd9qlVBGCHooV1dmWr1wJdIlaCTZcXwegaMn9g7/ECA"}}, "unsigned": {"age_ts": 1570041703969}}kneQac$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1391}{"auth_events": ["$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "type": "m.room.power_levels", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"users": {"@anon-20191002_181700-288:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041703257, "hashes": {"sha256": "NFr4buzsCOPFBfl3eamygTXSfZCL7m/KHQ6oHFZE/Mw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wrvW9ukN/JawJQhrZ6RIPs7DQeUQwkGLcTGkqax6/o+72x59g9t1DmOxUFIEOUGhdZU0lAFosKOQyQny0IMtBQ"}}, "unsigned": {"age_ts": 1570041703257}} L w  R X & ^ E , d2k9q@xF~LR  ~X&^, Lk9q?  1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc *1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gY1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQx1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q01e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu801e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI.1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs)1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10i1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMh1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY:1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8 1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A_1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwG1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEB1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E X1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Uf1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40K1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc=1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsr1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8 1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4D1e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYq1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEO1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ)1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIs1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg 1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 c1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw 81e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo*1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUe1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DER1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4|1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM;1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY   4 h m9d]c@anon-20191002_181700-320:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgo127.0.0.1>d]c@anon-20191002_181700-318:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAo127.0.0.1 9 4/*=[a \b~2T&Qe!QyLUggxrTnULUAOseq:localhost:8800$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0cI%QO!mOrKBPhetifKHDmElM:localhost:8800$157004174718wxlLH:localhost:8800I$QO!mOrKBPhetifKHDmElM:localhost:8800$157004174617osGDW:localhost:8800I#QO!mOrKBPhetifKHDmElM:localhost:8800$157004174616PvcHe:localhost:8800I"QO!mOrKBPhetifKHDmElM:localhost:8800$157004174515XsrNb:localhost:8800I!QO!mOrKBPhetifKHDmElM:localhost:8800$157004174414klNmS:localhost:8800I QO!mOrKBPhetifKHDmElM:localhost:8800$157004174313OKfBg:localhost:8800TQe!QyLUggxrTnULUAOseq:localhost:8800$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5HoTQe!QyLUggxrTnULUAOseq:localhost:8800$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgTQe!QyLUggxrTnULUAOseq:localhost:8800$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbsTQe!QyLUggxrTnULUAOseq:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoITQe!QyLUggxrTnULUAOseq:localhost:8800$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_WoTQe!MBWnwKRwFznvRpAzxr:localhost:8800$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8TQe!MBWnwKRwFznvRpAzxr:localhost:8800$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6IIQO!azRJNFPIRSFAskLILK:localhost:8800$157004173511wRnRr:localhost:8800IQO!azRJNFPIRSFAskLILK:localhost:8800$157004173510EIiCi:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417349vUcYV:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417338MBNFd:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417327EEUMr:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417316amiRb:localhost:8800TQe!MBWnwKRwFznvRpAzxr:localhost:8800$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cTQe!MBWnwKRwFznvRpAzxr:localhost:8800$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3YkTQe!MBWnwKRwFznvRpAzxr:localhost:8800$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlETQe!MBWnwKRwFznvRpAzxr:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4TQe!MBWnwKRwFznvRpAzxr:localhost:8800$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4T Qe!krhefVncoErkCtnvsy:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8T Qe!krhefVncoErkCtnvsy:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYET Qe!krhefVncoErkCtnvsy:localhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgT Qe!krhefVncoErkCtnvsy:localhost:8800$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MT Qe!krhefVncoErkCtnvsy:localhost:8800$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3EjcTQe!krhefVncoErkCtnvsy:localhost:8800$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMTQe!krhefVncoErkCtnvsy:localhost:8800$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUTQe!krhefVncoErkCtnvsy:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoTQe!krhefVncoErkCtnvsy:localhost:8800$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyATQe~!mMsxpaIlcykPuOnDyl:localhost:8800$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqUTQe}!mMsxpaIlcykPuOnDyl:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwTQe|!mMsxpaIlcykPuOnDyl:localhost:8800$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_MTQe{!mMsxpaIlcykPuOnDyl:localhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0TQez!mMsxpaIlcykPuOnDyl:localhost:8800$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61ETQey!mMsxpaIlcykPuOnDyl:localhost:8800$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasT~Qex!mMsxpaIlcykPuOnDyl:localhost:8800$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4T}Qew!mMsxpaIlcykPuOnDyl:localhost:8800$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICET|Qev!mMsxpaIlcykPuOnDyl:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YT{Qeu!mMsxpaIlcykPuOnDyl:localhost:8800$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkTzQet!VOhMAiLfKyTOZbmKGw:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwTyQes!VOhMAiLfKyTOZbmKGw:localhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQTxQer!VOhMAiLfKyTOZbmKGw:localhost:8800$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc G%|JPj8p> % v D  } K  Q  W % ] +c1Wi7o= uC[)1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o ?1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 <1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ 1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8|1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQA1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYj0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0a1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8M1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs>1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA 1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMj1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg 1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU01e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4q1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo 1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0H1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4N1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ e1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg31e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg _1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ61e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQQ1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYT1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qp1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rci1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc 1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYa1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo 1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 41e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw^  \vueQay$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1398}{"auth_events": ["$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk"], "prev_events": ["$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk"], "type": "m.room.member", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-290", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-290:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041710698, "hashes": {"sha256": "1BAPZ/UU1JyRWS2XJ+EHmqQliceQtSo9YVbH8D+e7AI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2OJdH5bek9BMEkRqXYmM+uhjil5FmqQlU+G+yECc6f3SKtmDoCBB1f+EfvCciAJeNFOOU4IlWlVSc9Hx5To9Dg"}}, "unsigned": {"age_ts": 1570041710698}}iteQa_$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1397}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-290:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041709876, "hashes": {"sha256": "MNaa0f7yN+jjXhFTaqlBbszy5GK9n8ohN+yNRJW/BU0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MUNMWWOPe3x4SRIh7BxsSjp/mC/03St1flm0vCXOf+wSr/dzYZG7MsAP/HSPF7RVEVyVHgVrjecFpPFZYEc1AQ"}}, "unsigned": {"age_ts": 1570041709876}}VseQa9$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 309, "stream_ordering": 1396}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk"], "prev_events": ["$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ"], "type": "m.room.member", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-289:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-289", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-289:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041707904, "hashes": {"sha256": "zqoSJ1kWL0bQ6V1sids3f0CNe6IeW6sla4rxAdTCn/M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "byv575WbbdSLodoQRUTv73RwsXs/hq0Bp4rxDKnd6Y4tYEGGl9wswK+7umGts1zJnbQaXM/JDlw+lVos/E4aBw"}}, "unsigned": {"age_ts": 1570041707904}} reQaM$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1395}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc"], "type": "m.room.aliases", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"aliases": ["#test-20191002_181700-40:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041707139, "hashes": {"sha256": "EeTV53icrzAHhy0BsfrSTV2fDVagn22NcqKXvWsj768"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmfUOL+LxDPI4bJbSoZql2pO5Xq/I5kwhFxhliraCdGp58I2Z8WradloIrsQyTIEH54y+s2TJ9erNiLZ1yKWDg"}}, "unsigned": {"age_ts": 1570041707139}} "q | 7 P [ ` !E@zG "Q']e!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIc!Q' e!QyLUggxrTnULUAOseq:localhost:8800m.room.create$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo^ Q3 O!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels$157004173712pxBJg:localhost:8800iQ3 e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8\Q/ O!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rules$157004173511wRnRr:localhost:8800dQ? O!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility$157004173510EIiCi:localhost:8800]Q3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access$15700417349vUcYV:localhost:8800]Q3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels$15700417338MBNFd:localhost:8800Q']M!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$15700417327EEUMr:localhost:8800WQ' M!azRJNFPIRSFAskLILK:localhost:8800m.room.create$15700417316amiRb:localhost:8800fQ- e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstone$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6IoQ? e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibility$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cgQ/ e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rules$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3YkiQ3 e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE Q']e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4cQ' e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4 Q']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8 Q']e !krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYErQ))e !krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgoQ? e !krhefVncoErkCtnvsy:localhost:8800m.room.history_visibility$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MgQ/ e !krhefVncoErkCtnvsy:localhost:8800m.room.join_rules$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcl Q9 e !krhefVncoErkCtnvsy:localhost:8800m.room.canonical_alias$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMi Q3 e!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU Q']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoc Q' e!krhefVncoErkCtnvsy:localhost:8800m.room.create$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA Q']e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwrQ))e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0oQ? e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibility$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61EgQ/ e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rules$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGaslQ9 e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_alias$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4iQ3 e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE Q']e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YcQ' e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.create$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk Q']e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw ! 0 @ P ` p(8HXhxuh ]@anon-20191002_181700-323:localhost:8800$2b$04$C/w98EvhoECVV6pOT2cYauAdWr5Yc5Y2YPEccotEHWs5U5l0GyNZe]dug ]@anon-20191002_181700-322:localhost:8800$2b$04$5E9uYzjVikTgJ07fg38x/OmwwEvbFO8yztOuJGtRdGnhuZhrFMdzy]duf ]@anon-20191002_181700-321:localhost:8800$2b$04$ZKG9xAeuwXBPoTqGD5S.8Owlz2uPjqU1nDF0rxoNGuxilFbmW7wTy]Yue ]@anon-20191002_181700-320:localhost:8800$2b$04$7xSju11bhFAvKi90tWCBxubptNlR4lJa3oG78d8AjTA0m.WqM5z6q]Yud ]@anon-20191002_181700-319:localhost:8800$2b$04$pZGzEuq4DIw1nr2g0v8HW.fydygfODrTLcB2QhLpxSrv6X8AjGK4y]Tuc ]@anon-20191002_181700-318:localhost:8800$2b$04$zwo3/Ws9wNdMDXs9KA2jY.nbHrb5Tl6NSKjVEUTZrE/DQBF.iP5pK]Nub ]@anon-20191002_181700-317:localhost:8800$2b$04$is66zpjFRb5b8LTQ9ZzYUuXajeUlXlDpYdL4YTWuCd53uDl/VhsnG]Hua ]@anon-20191002_181700-316:localhost:8800$2b$04$cv7EATBligFVjdhZ/e3cie112Rk0/4xhlw7l4UIbECBQekJwJZR.6]Hu` ]@anon-20191002_181700-315:localhost:8800$2b$04$xJNtW7DrktdzqAORR3NZVeU70vweHHbL09ghqa.KDydwqeU5Wo/R6]Gu_ ]@anon-20191002_181700-314:localhost:8800$2b$04$0lPRg5m4V/iNGII2JLdZAui4.oPgZmoalBbmhgKrBU.cVgIl.2WEu]Fu^ ]@anon-20191002_181700-312:localhost:8800$2b$04$Y3hzG8mwGMWmCdFPCde63uTNUxc7VxrIUfM/9e32YpmA3UHRy1M5G]:u] ]@anon-20191002_181700-311:localhost:8800$2b$04$fspmyx3ye8Rm5.mDtLUKTuA2q383wXS13FLYM2wgekMKcfCfWRsRq]/u\ ]@anon-20191002_181700-310:localhost:8800$2b$04$28nOFKr6L53oVmqFEeAVL.rK8SDojGVUGGachdbvK40iSVV7Olk.G])u[ ]@anon-20191002_181700-309:localhost:8800$2b$04$XSIcjlohLsZ5NQGisu1W8.LM85HtqwlLBVdyCHtgWA/MM1EnfiMlq])uZ ]@anon-20191002_181700-308:localhost:8800$2b$04$mMxZ3ZZZuQH3sg3lpdoehuvPrOgeS2XlDo1jBuP/M9OMS5lNkYUli]#uY ]@anon-20191002_181700-307:localhost:8800$2b$04$dSm4quUvSB9LPitsEgv2Ue84RSB2sSb2z//eOmeHV0IYYvDzlOhim]#uX ]@anon-20191002_181700-306:localhost:8800$2b$04$acrmKqEuHk6xophyYHZQP.yfGMBXFE50D24qGMFj3PVDYY6KZPAiC]uW ]@anon-20191002_181700-305:localhost:8800$2b$04$klDFGyDne3g1yIDeFPhh2.Cfxf1e7f77/fTn7xANweMSjMiaTyREi]uV ]@anon-20191002_181700-304:localhost:8800$2b$04$o4QvVEA5B.3FNWykvJpote5v4K6nS0rgx72ugmc.78/6ttJJ6NtW2]uU ]@anon-20191002_181700-303:localhost:8800$2b$04$oMwTVUej0MlqOy.dHIfSOewQ29TUcIyBM8vO3yoOLprtMI2SYHPZ2]uT ]@anon-20191002_181700-302:localhost:8800$2b$04$krxNvWOET3n4v7u9QYyoJO15NcrCGuG3RQEf4Pg6pJjPfkRpJV7yS]uS ]@anon-20191002_181700-301:localhost:8800$2b$04$XZAw9.ioz3vBi3JNJsgG9u.IMIiiUoDO4hevkp6bk4ZGNDE/OmYpC]uR ]@anon-20191002_181700-300:localhost:8800$2b$04$PpTDxyRGzSOYU3kv999N4u6B5Ohrl7OzfJ.TOtrx687nWMPOHvlDe]uQ ]@anon-20191002_181700-299:localhost:8800$2b$04$ne33lXy0yhFKKMcjNIFwxeP52n7mni4oQ7ctTLZnxVyspQW49yM06]uP ]@anon-20191002_181700-298:localhost:8800$2b$04$TDhvogHr9wzqXuzx7WbXM.WPGei.SbJiv7YVJlS8iuq/vHfG96L1C]uO ]@anon-20191002_181700-297:localhost:8800$2b$04$dTLyxL8yJVwoYJy/uruuj.nLBm2ZaTRCTxAe50w4o6mbJdMtfd5YW]uN ]@anon-20191002_181700-296:localhost:8800$2b$04$3pPr2lNphEAFVFpNhKUvIOxv6lfOY3u2JvP6rVmPzs9xQqnH/FD2G]uM ]@anon-20191002_181700-295:localhost:8800$2b$04$940QPvV9VJNgH6vTOGzzSeMkbP4tcc..7tuqNrlbwlr7Jy6x5WEci]uL ]@anon-20191002_181700-294:localhost:8800$2b$04$MJLlJ6y1blZ9MSzi7eubxOHITRnc7xKuDn.4.wcZJhTvt57hYcBk2]~uK ]@anon-20191002_181700-293:localhost:8800$2b$04$G4jV48WoqhsFWsFeUlokGeRsHdIjYwOJwhLy1B0IMhcXEaBjvra7q]vuJ ]@anon-20191002_181700-292:localhost:8800$2b$04$wX0v1fAMV5N5ShrcyljvJ.uu2NEFVKecKpxWMxytwtbOQxe582B4K]uuI ]@anon-20191002_181700-291:localhost:8800$2b$04$Yu2LQFeOFbtj7CTVTDi9XOqE8Qj5YM5BTdVaba.DJAJRPb1Pp.p8y]luH ]@anon-20191002_181700-290:localhost:8800$2b$04$Lt1iHPPVy.Q3YK4Usyrq3uQjU6D9lLVvSygmObXGY1FhNwMrV7ZVu]l ~z v r n j fb^ZVA=9reeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800qeeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800peeQ$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800oeeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800neeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800imOOQ$157004173511wRnRr:localhost:8800$157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800hlOMQ$157004173510EIiCi:localhost:8800$15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gkMMQ$15700417349vUcYV:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gjMMQ$15700417338MBNFd:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800giMMQ$15700417327EEUMr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800heeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800geeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800feeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800eeeQ$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800deeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800ceeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800beeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800aeeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800`eeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800_eeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800^eeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800]eeQ$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800\eeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800[eeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800ZeeQ$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800YeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800XeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800WeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800VeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800UeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800TeeQ$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800 !y} { y w  < j -Y}{y~ eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800~eeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~~eeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800g}OMQ$157004173511wRnRr:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800g|OMQ$157004173511wRnRr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800g{OMQ$157004173511wRnRr:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gzOMQ$157004173510EIiCi:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gyOMQ$157004173510EIiCi:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gxOMQ$157004173510EIiCi:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fwMMQ$15700417349vUcYV:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fvMMQ$15700417349vUcYV:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fuMMQ$15700417349vUcYV:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800ftMMQ$15700417338MBNFd:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fsMMQ$15700417338MBNFd:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800frMMQ$15700417327EEUMr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800~qeeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~peeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~oeeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800~neeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~meeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~leeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800~keeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~jeeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~ieeQ$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800  yeQa$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1402}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas"], "type": "m.room.history_visibility", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041714071, "hashes": {"sha256": "NLNnVSoUXd+O2Z+7HGixBiPUTGm59KHNVb5n/bY12bg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C1PZaEGebibpo1SoCGcx7kWbx59UECnNRQmW/K3NRyw3YTECVhQXx7uuTSGtuqlMjhSKuq9D7jK3uGaFHzH+Aw"}}, "unsigned": {"age_ts": 1570041714071}}txeQau$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1401}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4"], "type": "m.room.join_rules", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041713355, "hashes": {"sha256": "+zYuzfO0GWja5oLabSOVn0LuulnUP16ihUDw3YA1NR0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zBJGG/t9n4VFZ/6aeaA2f96ByFmVMnMK2GgdW1oV5WMjep3Pkk3XBfKUD5byJwTeLH0y3HAutDaMXG9LAjCNCA"}}, "unsigned": {"age_ts": 1570041713355}}weQa9$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1400}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE"], "type": "m.room.canonical_alias", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"alias": "#test-20191002_181700-41:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041712665, "hashes": {"sha256": "uPRPg8dZ38s1z6Lole/QnqSv/5g8nf+vo5CYNwJUPJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c8Ut8gHH3i9VQ+sdxokrvuUZLJ8ktzMPbo0zqsRs7DWNmJ1l9VssV2m51H3CTtJlBD0kGQvs6dWBQj1jDe8fAQ"}}, "unsigned": {"age_ts": 1570041712665}}kveQac$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1399}{"auth_events": ["$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "type": "m.room.power_levels", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"users": {"@anon-20191002_181700-290:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041711429, "hashes": {"sha256": "mbFzs9oy/XeSSVPx2N51ilbeDEfrxfGHqTGzhwLPrvw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPNmGgoW9istCOhr7fJJfjW4+vt8KP638ZMI8vBXF3EAujhjhwm/5lrHUR6sVlcAsJNQZN2/KiWT+qM04B3bAQ"}}, "unsigned": {"age_ts": 1570041711429}} "f%< E H m 8AiU#"%GfqQ']O!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$157004174414klNmS:localhost:8800YpQ' O!mOrKBPhetifKHDmElM:localhost:8800m.room.create$157004174313OKfBg:localhost:8800poQ? e!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibility$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5HohnQ/ e!QyLUggxrTnULUAOseq:localhost:8800m.room.join_rules$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgjmQ3 e!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs lQ']e!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIdkQ' e!QyLUggxrTnULUAOseq:localhost:8800m.room.create$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_WojQ3 ee!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlEgiQ- e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstone$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I]hQ/ O!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rules$157004173511wRnRr:localhost:8800egQ? O!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility$157004173510EIiCi:localhost:8800^fQ3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access$15700417349vUcYV:localhost:8800^eQ3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels$15700417338MBNFd:localhost:8800dQ']M!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$15700417327EEUMr:localhost:8800XcQ' M!azRJNFPIRSFAskLILK:localhost:8800m.room.create$15700417316amiRb:localhost:8800pbQ? e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibility$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5chaQ/ e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rules$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Ykj`Q3 e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE _Q']e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4d^Q' e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox48]Q']ee!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE \Q']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEs[Q))e!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgpZQ? e!krhefVncoErkCtnvsy:localhost:8800m.room.history_visibility$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MhYQ/ e!krhefVncoErkCtnvsy:localhost:8800m.room.join_rules$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3EjcmXQ9 e!krhefVncoErkCtnvsy:localhost:8800m.room.canonical_alias$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMjWQ3 e!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU VQ']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQodUQ' e!krhefVncoErkCtnvsy:localhost:8800m.room.create$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA TQ']e}!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwsSQ))e{!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0pRQ? ez!mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibility$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61EhQQ/ ey!mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rules$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasmPQ9 ex!mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_alias$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 #+H S X   G>| NAZ$OQ/ $157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rulesb#OQ? $157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility\"OQ3 $157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access\!OQ3 $157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels OQ']$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800joinVOQ' $157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.createmeQ? $boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibilityeeQ/ $PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800m.room.join_rulesj eQ']$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800joinaeQ' $WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800m.room.createdeQ- $YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstoneZOQ/ $157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rulesbOQ? $157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility[MQ3 $15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access[MQ3 $15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levelsMQ']$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800joinUMQ' $15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.createmeQ? $3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibilityeeQ/ $OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rulesgeQ3 $fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels eQ']$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800joina eQ' $C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create eQ']$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800leavep eQ))$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800m eQ? $coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800m.room.history_visibilitye eQ/ $YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800m.room.join_rulesjeQ9 $HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800m.room.canonical_aliasgeQ3 $JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels eQ']$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800joinaeQ' $KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800m.room.create eQ']$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800joinpeQ))$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800meQ? $SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibilityeeQ/ $XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rulesjeQ9 $qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_alias a} { y w u sqomkigeca~heeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800~geeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~feeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~eeeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800~deeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~ceeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~beeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~aeeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~`eeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~_eeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~^eeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~]eeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~\eeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~[eeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~ZeeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~YeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~XeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~WeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~VeeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~UeeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~TeeQ$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~SeeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800~ReeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~QeeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~PeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~OeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~NeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~MeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~LeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~KeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~JeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800 l \l}eQw$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "txn_id": "156", "stream_ordering": 1406}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww"], "type": "m.room.message", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"body": "Hello back", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041716858, "hashes": {"sha256": "7faWvdsopt7TR3wbfjJGGrT9gLFbvXvOtl/7DqOBowE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CVl2LReCErkhKNvbtU08bA+OPyUqHV0aDZmH4U3/470MNJLL4fiGoBZczGVezT+e8gfkn0QubYdnfQ3M7BYhDA"}}, "unsigned": {"age_ts": 1570041716858}}V|eQa9$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 311, "stream_ordering": 1405}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas"], "prev_events": ["$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M"], "type": "m.room.member", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-291:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-291", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-291:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041716343, "hashes": {"sha256": "ZmlDDLbv/NiK+E1osAMmyRRjgE+ZchQIPbVNQpYZ9bE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KGu21JJ+EQQLDn8xaw+O4bB/tdAeQPCFNr6ewnwmfr82dagMr0iwnQRZyWft0w4DZhVPYQtqQFtXdxoALD9vAg"}}, "unsigned": {"age_ts": 1570041716343}}{eQw$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "txn_id": "155", "stream_ordering": 1404}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0"], "type": "m.room.message", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"msgtype": "m.text", "body": "Hello world"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041715608, "hashes": {"sha256": "rn2UGymw2CEOBqKTWH4R8ERKDsfsvJ2VCq3TyoVXiCk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JlkHv10RryU/OsfArpY7p5XBVqT3LBRBGlQXSzVafd1FGHCDnuZzMX6LQV2jHQHMBvzCI0beFz/oNY2pRdC6Dg"}}, "unsigned": {"age_ts": 1570041715608}} zeQaM$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1403}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E"], "type": "m.room.aliases", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"aliases": ["#test-20191002_181700-41:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041714929, "hashes": {"sha256": "yJfQfNWGBSzCQbXnGtf6DIs18yZP1QsVlmgbWbygHPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XjdDtbsuRMuNe/BgR96k9d3Q3AxQwE37P47v1t5nqsUReXFim+Nw+vdoGFt2dw4aOKSCY70RGZMxhS5y5nPZCw"}}, "unsigned": {"age_ts": 1570041714929}}   *eQa9$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1410}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU"], "type": "m.room.canonical_alias", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"alias": "#test-20191002_181700-42:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041720980, "hashes": {"sha256": "bSX5Ec/yJm3CS5UpOzM0l1R/nzBh0JzAoFXrHv4QLQ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g8bEV0VghsVjB3yC06d7hLb2PEIhLHT3xdm2TBlM5pjuWM5v7C0ihzAE8o3wviFvh5A+CSvQMIvUQDhzbiCLDQ"}}, "unsigned": {"age_ts": 1570041720980}}keQac$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1409}{"auth_events": ["$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "type": "m.room.power_levels", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"users": {"@anon-20191002_181700-292:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041720115, "hashes": {"sha256": "8TustHf3Tj5EafhpWXq+UiFw3xoircOy3QIo4q3jAqg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "plsTHUUr0i7THamv02h3KEDu8JVIenIS9+gFXcLxJJZI4QQbcq6qTTSLvlSRRRRVjrO5Sjw3ICvAz+VGa/4BBg"}}, "unsigned": {"age_ts": 1570041720115}}veQay$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1408}{"auth_events": ["$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA"], "prev_events": ["$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA"], "type": "m.room.member", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-292", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-292:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041719632, "hashes": {"sha256": "ZbxsQi+i2JjfTrRnCBosLFKESLLscCC+RWD3sdChOzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6LJtgjMnw5lSstCDokcgqAPob0ICSvZPDqms+xxPrtnIUaZpDDZhwOmD48e8C8wP+zCjNKft4QTrU4bssSl5DA"}}, "unsigned": {"age_ts": 1570041719632}}i~eQa_$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1407}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-292:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041718969, "hashes": {"sha256": "REbXmKq5E8LdMCiYJNpyRFn5MYCl1AFPO7nD5sqcJjQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "529GB32JJPDXct8GXLbuCbpxt9ENszXNs8VSeC/XwQT6LQyxzt4RIzEobxwyIO/agadbJNTCHB4Ysq6Ou6taAQ"}}, "unsigned": {"age_ts": 1570041718969}} $8 ` ` o x  Hj JyFl IazeQ' $wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.creategyeQ3 $q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levelsdxeQ- $-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstoneZwOQ/ $157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rulesbvOQ? $157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility\uOQ3 $157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access\tOQ3 $157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels~sOQ']$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800VrOQ' $157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.createmqeQ? $boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibilityepeQ/ $PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800m.room.join_rulesgoeQ3 $VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels neQ']$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800ameQ' $WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800m.room.creategleQ3 $fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levelsdkeQ- $YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstoneZjOQ/ $157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rulesbiOQ? $157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility[hMQ3 $15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access[gMQ3 $15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels}fMQ']$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800UeMQ' $15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.createmdeQ? $3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibilityeceQ/ $OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rulesgbeQ3 $Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels aeQ']$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800a`eQ' $C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create _eQ']$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800 ^eQ']$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800p]eQ))$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800m\eQ? $coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800m.room.history_visibilitye[eQ/ $YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800m.room.join_rulesjZeQ9 $HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800m.room.canonical_aliasgYeQ3 $JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels XeQ']$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800aWeQ' $KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800m.room.create 9r @ y :s4mH8` O]]Q=$157004183063NdEPw:localhost:8800@anon-20191002_181700-301:localhost:8800@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800joinanon-20191002_181700-301C_ e]]Q=$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw@anon-20191002_181700-301:localhost:8800@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800joinanon-20191002_181700-3018^ O]]Q=$157004181756ejZNp:localhost:8800@anon-20191002_181700-300:localhost:8800@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800joinanon-20191002_181700-300C] e]]Q=$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao@anon-20191002_181700-300:localhost:8800@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800joinanon-20191002_181700-300\ O+]Q$157004180853KmrHT:localhost:8800@bob:matrix.org@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800ban8[ O]]Q=$157004180448zlZXD:localhost:8800@anon-20191002_181700-299:localhost:8800@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800joinanon-20191002_181700-299Z e+]Q$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE@bob:matrix.org@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800banCY e]]Q=$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY@anon-20191002_181700-299:localhost:8800@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800joinanon-20191002_181700-2998X O]]Q=$157004178835mLAyG:localhost:8800@anon-20191002_181700-298:localhost:8800@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800joinanon-20191002_181700-298CW e]]Q=$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw@anon-20191002_181700-298:localhost:8800@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800joinanon-20191002_181700-2988V O]]Q=$157004176828ZZJWh:localhost:8800@anon-20191002_181700-297:localhost:8800@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800joinanon-20191002_181700-297CU e]]Q=$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI@anon-20191002_181700-297:localhost:8800@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800joinanon-20191002_181700-2978T O]]Q=$157004175621DDceh:localhost:8800@anon-20191002_181700-296:localhost:8800@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800joinanon-20191002_181700-296CS e]]Q=$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE@anon-20191002_181700-296:localhost:8800@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800joinanon-20191002_181700-2968R O]]Q=$157004174414klNmS:localhost:8800@anon-20191002_181700-295:localhost:8800@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800joinanon-20191002_181700-295CQ e]]Q=$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI@anon-20191002_181700-295:localhost:8800@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800joinanon-20191002_181700-2957P M]]Q=$15700417327EEUMr:localhost:8800@anon-20191002_181700-294:localhost:8800@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800joinanon-20191002_181700-294CO e]]Q=$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4@anon-20191002_181700-294:localhost:8800@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800joinanon-20191002_181700-294,N e]]Q$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8@anon-20191002_181700-293:localhost:8800@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800leaveCM e]]Q=$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE@anon-20191002_181700-293:localhost:8800@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800joinanon-20191002_181700-293CL e]]Q=$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo@anon-20191002_181700-292:localhost:8800@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800joinanon-20191002_181700-292 8l D `8,]c!E@anon-20191002_181700-301:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwoSJPGITTBTX127.0.0.1Perl + Net::Async::HTTP/0.44mo+]c!E@anon-20191002_181700-300:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0QoZZJIQPLATK127.0.0.1Perl + Net::Async::HTTP/0.44m̔*]c!E@anon-20191002_181700-299:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQoBPDORAMNSE127.0.0.1Perl + Net::Async::HTTP/0.44mȃ)]c!E@anon-20191002_181700-298:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4QoGTROHDSCGV127.0.0.1Perl + Net::Async::HTTP/0.44mE(]c!E@anon-20191002_181700-297:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAoDVSKNCGFXX127.0.0.1Perl + Net::Async::HTTP/0.44mɃ']c!E@anon-20191002_181700-296:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAoSBLEQBXZQL127.0.0.1Perl + Net::Async::HTTP/0.44m&]c!E@anon-20191002_181700-295:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQoCIYGWJHPPN127.0.0.1Perl + Net::Async::HTTP/0.44mǷ3%]c!E@anon-20191002_181700-294:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQoRKGLRVXFMG127.0.0.1Perl + Net::Async::HTTP/0.44mdžg$]c!E@anon-20191002_181700-293:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwoPVLMJRXINQ127.0.0.1Perl + Net::Async::HTTP/0.44m{#]c!E@anon-20191002_181700-292:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_goGGCVZACJDJ127.0.0.1Perl + Net::Async::HTTP/0.44mg o:U# b0h6  { u J VIZ(= P O v D | C  $ *>o 8  b \ 1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08L1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9AL1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU 1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w 1e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkr1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg61e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM/1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo;1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14.1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA &1e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8^1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg X1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A A1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 21e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg 1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ:1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg> *c1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM/1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMh1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4p1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA<1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgb1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I q1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk\0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30@ ,1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw 21e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gG1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4 21e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU Y1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0  d1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ601e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQI 21e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino>21e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMd1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo  [VeQa9$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800{"token_id": 313, "stream_ordering": 1414}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc"], "prev_events": ["$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg"], "type": "m.room.member", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-293:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-293", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-293:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041724061, "hashes": {"sha256": "vInYYt6NDLWBOCedPdHxZOCT83W07d/OZuGlt09mDSk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8dHEHKyxockdqU6xMR9ErcqRQlu8kfT41/wTpHHtXYIi/YbB7p+rA/g9HfBsfC+HzqlXcrK8ZmxUqhWihVRkCg"}}, "unsigned": {"age_ts": 1570041724061}} eQaM$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1413}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M"], "type": "m.room.aliases", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"aliases": ["#test-20191002_181700-42:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041723355, "hashes": {"sha256": "3FjQRizUCo+h+s0zr9noQVAf/W4RbaiQtYYN68P4CuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Yepei9c7oz/PcS7xBU3SF+bgw7YVj67i3yYhJzt8buhuu4M/7R0MCITRLskX1JBAZxARn75fo4lW8bvhWeYYBg"}}, "unsigned": {"age_ts": 1570041723355}}eQa$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1412}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc"], "type": "m.room.history_visibility", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041722371, "hashes": {"sha256": "oheBZnFYA/7fEwabWd6ERukUTNjsva32wRQ/VKswQeI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DGfoTYOszZ3jLUGY/iUg1GBkkMSEOEz2oKw2StkfTbd5GB10NREXDSirv5THxuBl2JQfr7AD8suKVWFhjX7RCQ"}}, "unsigned": {"age_ts": 1570041722371}}teQau$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1411}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM"], "type": "m.room.join_rules", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041721688, "hashes": {"sha256": "JWTbI17urqHVi2TrT/37oeQE2d3mC9rezb3PncMpWTI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yxLqxFv2924mb7Kfiil/a3L2WW1H9JiFiPp4aApREwkzqDIm0KdsQk6olZWkqMUNyAV9oLKlhCLSNqKLcINGDA"}}, "unsigned": {"age_ts": 1570041721688}} [ q # { 5 ax,6VO3Q ]$157004174515XsrNb:localhost:8800m.room.power_levels!mOrKBPhetifKHDmElM:localhost:8800mm}@anon-20191002_181700-295:localhost:8800O'Q ]$157004174414klNmS:localhost:8800m.room.member!mOrKBPhetifKHDmElM:localhost:8800mm͂@anon-20191002_181700-295:localhost:8800 O'Q  ]$157004174313OKfBg:localhost:8800m.room.create!mOrKBPhetifKHDmElM:localhost:8800mm8@anon-20191002_181700-295:localhost:8800,e?Q ]$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hom.room.history_visibility!QyLUggxrTnULUAOseq:localhost:8800mLm @anon-20191002_181700-295:localhost:8800$e/Q ]$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgm.room.join_rules!QyLUggxrTnULUAOseq:localhost:8800mm<@anon-20191002_181700-295:localhost:8800&e3Q ]$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbsm.room.power_levels!QyLUggxrTnULUAOseq:localhost:8800mǽmǾ@anon-20191002_181700-295:localhost:8800 e'Q ]$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIm.room.member!QyLUggxrTnULUAOseq:localhost:8800mǺmǻg@anon-20191002_181700-295:localhost:8800 e'Q  ]$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wom.room.create!QyLUggxrTnULUAOseq:localhost:8800mǷmǸ@anon-20191002_181700-295:localhost:8800&e3Q ]$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8m.room.power_levels!MBWnwKRwFznvRpAzxr:localhost:8800mǮmǰ@anon-20191002_181700-294:localhost:8800#e-Q ]$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6Im.room.tombstone!MBWnwKRwFznvRpAzxr:localhost:8800mǚ`mǬ@anon-20191002_181700-294:localhost:8800O/Q ]$157004173511wRnRr:localhost:8800m.room.join_rules!azRJNFPIRSFAskLILK:localhost:8800mǪomǪ@anon-20191002_181700-294:localhost:8800!O?Q ]$157004173510EIiCi:localhost:8800m.room.history_visibility!azRJNFPIRSFAskLILK:localhost:8800mǧmǨ @anon-20191002_181700-294:localhost:8800M3Q ]$15700417349vUcYV:localhost:8800m.room.guest_access!azRJNFPIRSFAskLILK:localhost:8800mǥmǥ}@anon-20191002_181700-294:localhost:8800M3Q ]$15700417338MBNFd:localhost:8800m.room.power_levels!azRJNFPIRSFAskLILK:localhost:8800mǢUmǢ@anon-20191002_181700-294:localhost:8800M'Q ]$15700417327EEUMr:localhost:8800m.room.member!azRJNFPIRSFAskLILK:localhost:8800mǝmǟ@anon-20191002_181700-294:localhost:8800  M'Q  ]$15700417316amiRb:localhost:8800m.room.create!azRJNFPIRSFAskLILK:localhost:8800mǚmǛ=@anon-20191002_181700-294:localhost:8800, e?Q ]$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cm.room.history_visibility!MBWnwKRwFznvRpAzxr:localhost:8800mǓWmǕ@anon-20191002_181700-294:localhost:8800$ e/Q ]$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Ykm.room.join_rules!MBWnwKRwFznvRpAzxr:localhost:8800mǐmǑi@anon-20191002_181700-294:localhost:8800& e3Q ]$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlEm.room.power_levels!MBWnwKRwFznvRpAzxr:localhost:8800mǍdmǎ@anon-20191002_181700-294:localhost:8800 e'Q ]$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4m.room.member!MBWnwKRwFznvRpAzxr:localhost:8800mljmNJ;@anon-20191002_181700-294:localhost:8800 e'Q  ]$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4m.room.create!MBWnwKRwFznvRpAzxr:localhost:8800mdžmLJ @anon-20191002_181700-294:localhost:8800 e'Q ] $fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8m.room.member!krhefVncoErkCtnvsy:localhost:8800 mǀCmǀ@anon-20191002_181700-293:localhost:8800 e'Q ]$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEm.room.member!krhefVncoErkCtnvsy:localhost:8800m|m}@anon-20191002_181700-293:localhost:8800!e)Q ]$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejgm.room.aliases!krhefVncoErkCtnvsy:localhost:8800mymz@anon-20191002_181700-292:localhost:8800 /sNC D ]  h  ]  R h~%shs%;0~%sV3eL$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYsha25636&LWN2sV2eL$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKosha256/tc08R lT:jZoV1eL$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_ssha2560-+GLF@pia Z(뒋V0eL$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAsha256,}&;<)c :9V/eL$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIsha256C9x Z|~v ?O>TXV.eL$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4ssha256gҩdegb_.aSĦg0uV-eL$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewsha256B_O5R1Hh"+PV,eL$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDossha256tǗW"ϾSO*'\Hh5K+OL$157004175925JuKDZ:localhost:8800sha256Թz3}@VzRخ쪿&K*OL$157004175824dFhko:localhost:8800sha256wOp@Y%.>oǭÁ=KR5K)OL$157004175723CBKAp:localhost:8800sha256-zl_-u1x U; Sַ5K(OL$157004175622yCTNM:localhost:8800sha256>թSЧxYTӟjho..K'OL$157004175621DDceh:localhost:8800sha256Q:F}u4d3״C1K&OL$157004175520JddPP:localhost:8800sha2562ɿ %@Uqf^.KyV%eL$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcsha256$ mm[NS7_7uYӨV$eL$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Ysha256E'ǿZ')m"=yhš(b5ގ:V#eL$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4sha256ZE1dȫ]f>>T2:+NX7jV"eL$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEsha2569aq޹G1S6AJi|V!eL$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8sha256g7S~"|G$$zfPX7^.?tV eL$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0sha256mJ|!b YH}$5w9)tVeL$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0csha256g-LW KV2OH NGKOL$157004174718wxlLH:localhost:8800sha256,\F\2F앴,$)fKOL$157004174617osGDW:localhost:8800sha256}ǁ:P.1ҤE-==@fZKOL$157004174616PvcHe:localhost:8800sha256ϰI=P{S4k3$yB\X KOL$157004174515XsrNb:localhost:8800sha256K >y{MŝD x33؏KOL$157004174414klNmS:localhost:8800sha256i 3yG5,6[/KOL$157004174313OKfBg:localhost:8800sha256K( rY>9Ms)GdTx㺷ϙVeL$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hosha256nw˟~;cPQjxmd@KzVeL$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgsha256=qQ[| ';c],]ߓ˚W  \B}X ZQVeL$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4sha256EwOeyV\8W5@?Ӹ)I:ԽVeL$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4sha256 Frgf3|2FB3;VeL$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8sha256}r@C MANyg(3cQfl( VeL$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEsha256:љ,ݿ Vo6Q /hpڌ* N/tE]/Z  u F Q "{ L   f 7 a+2    w VH '   ] k  s pE A <  [, /.Q!QyLUggxrTnULUAOseq:localhost:8800thf.Q!PzoqoNRxeEEqiLyVSV:localhost:8800th].Q!OSHhtkGUjpUCkXwIhj:localhost:8800thQ.Q!OJilSqnQvLgoXSqRaW:localhost:8800thP.Q!OCEHAjcOXWNyWIESIS:localhost:8800thO.Q!OBWkjfrDCNgYFfblia:localhost:8800thN.Q!NrxQuziwSWzsHuXIlG:localhost:8800thM.Q!NhWgOTYzEPRwAxRQvS:localhost:8800thL.Q!NgkQVVUNzoyCVPtckM:localhost:8800thK.Q!NfaPEGKjnUDUTavzol:localhost:8800thJ-Q!NhWgOTYzEPRwAxRQvS:localhost:8800m.Q!NgkQVVUNzoyCVPtckM:localhost:8800m-Q!NfaPEGKjnUDUTavzol:localhost:8800mu-Q!OMkiVTuuOEeiFAXtUY:localhost:8800m*.Q!OJilSqnQvLgoXSqRaW:localhost:8800m.Q!OCEHAjcOXWNyWIESIS:localhost:8800me-Q!OBWkjfrDCNgYFfblia:localhost:8800mB.Q!NrxQuziwSWzsHuXIlG:localhost:8800m.Q!OtBUhGeUSiDMWRKIOT:localhost:8800mC-Q!OqPpVlCwmKdAUlwrXI:localhost:8800mM-Q!OaCEdDAiatpwYcagUb:localhost:8800m.Q!OXpGdKbowFUTChPdmF:localhost:8800mZ.Q!OWGKxAmTrHLciIdrJi:localhost:8800m-Q!OSHhtkGUjpUCkXwIhj:localhost:8800m .Q!ROoilpDjLJfjKfSPIi:localhost:8800m.Q!RDEAXrqXQizuhCUFPq:localhost:8800m1.Q!QyLUggxrTnULUAOseq:localhost:8800m.Q!QxqzQoEBIZhmzHIGrl:localhost:8800mk.Q!QnmLrBAxeItdHsaxWf:localhost:8800mF.Q!QkkdnzvdrjHaFGkzMt:localhost:8800mr.Q!QcaNrIiUsWpTiVGOnt:localhost:8800m-Q!QZhNrNpwObZGJZpdAG:localhost:8800m.Q!QWLJZmJqjWZjVOjdYF:localhost:8800m.Q!QMrkSPlQDGborAyWtQ:localhost:8800m.Q!QFiJrWFFeTAAAUCjCE:localhost:8800m.Q!PzoqoNRxeEEqiLyVSV:localhost:8800mu.Q!PgNDjhhIBAXKryuGKy:localhost:8800m.Q!PcvmCDeVUSyJbXpTig:localhost:8800m.Q!PVyTvKbqnjSXfGWAMy:localhost:8800m.Q!PUIxAaiCnbqaVbawGu:localhost:8800m.Q!PQZMTVTeCYqMZwkHvW:localhost:8800m.Q!PHkVrXAyfGkFtzSagu:localhost:8800m9.Q!PEcOacvKaBKpXjytEF:localhost:8800m.Q!PCgUmZOwWmtDsuFqXg:localhost:8800m.Q!PgNDjhhIBAXKryuGKy:localhost:8800th\.Q!PcvmCDeVUSyJbXpTig:localhost:8800th[.Q!PVyTvKbqnjSXfGWAMy:localhost:8800thZ.Q!PUIxAaiCnbqaVbawGu:localhost:8800thY.Q!PQZMTVTeCYqMZwkHvW:localhost:8800thX.Q!PHkVrXAyfGkFtzSagu:localhost:8800thW.Q!PEcOacvKaBKpXjytEF:localhost:8800thV.Q!OtBUhGeUSiDMWRKIOT:localhost:8800thU.Q!OqPpVlCwmKdAUlwrXI:localhost:8800thT.Q!OaCEdDAiatpwYcagUb:localhost:8800thS.Q!OXpGdKbowFUTChPdmF:localhost:8800thR.Q!RmwbYvIIQyPlHlClty:localhost:8800thm.Q!RmwbYvIIQyPlHlClty:localhost:8800m.Q!ROoilpDjLJfjKfSPIi:localhost:8800thh.Q!RDEAXrqXQizuhCUFPq:localhost:8800thg.Q!QxqzQoEBIZhmzHIGrl:localhost:8800the.Q!QnmLrBAxeItdHsaxWf:localhost:8800thd.Q!QkkdnzvdrjHaFGkzMt:localhost:8800thc.Q!QcaNrIiUsWpTiVGOnt:localhost:8800thb.Q!QZhNrNpwObZGJZpdAG:localhost:8800tha.Q!QWLJZmJqjWZjVOjdYF:localhost:8800th`.Q!QMrkSPlQDGborAyWtQ:localhost:8800th_.Q!QFiJrWFFeTAAAUCjCE:localhost:8800th^.Q!RmdhCjvouVLmyIHjaM:localhost:8800thl.Q!RYNJAGdRhIlwRZFbrO:localhost:8800thk.Q!RSLvuCuAqKQQrKCxNq:localhost:8800thj.Q!RPfffkmSEbWggEjnoI:localhost:8800thi.Q!SUDzkfFBgpuCANOxRS:localhost:8800mM.Q!SBEprlZiuliFNSfNmz:localhost:8800thn-Q!SBEprlZiuliFNSfNmz:localhost:8800m--Q!RmdhCjvouVLmyIHjaM:localhost:8800m(.Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.Q!RSLvuCuAqKQQrKCxNq:localhost:8800m#.Q!RPfffkmSEbWggEjnoI:localhost:8800m L " 5Lk eQac$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1418}{"auth_events": ["$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "type": "m.room.power_levels", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"users": {"@anon-20191002_181700-294:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041728356, "hashes": {"sha256": "ZCNJnXag2r7S+v93eEDGDHGd8RSI3YCc1C0Px7BGP+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BTyo1i5eU8cYi/twbB7kQqX1bXAkWc1A0ZlStgI6z3v9+obHB2g9C6cS2Sml8V2dxSgmX2vMcetpCytN4udGBQ"}}, "unsigned": {"age_ts": 1570041728356}}veQay$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1417}{"auth_events": ["$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4"], "prev_events": ["$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4"], "type": "m.room.member", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-294", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-294:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041727400, "hashes": {"sha256": "MGLaHPfaaA6OWnqU+GOWnIpGx4sLTxgpXFLN+nZAe2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DwVZm2erB6RMSEJocX/9LGnm+YjIZcbxnkcfyPXv3OOKLPdnQolP1AdJe3ikfSeYSTCYZfKMQCijEvs8oz08DQ"}}, "unsigned": {"age_ts": 1570041727400}}ieQa_$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1416}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-294:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041726661, "hashes": {"sha256": "BvFvkxRiwmSyR2kwT7ontr5apGi9+i1Cz1iFv505xD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7pMkSktqlQZJfeItyCaV1xXEHUOiJDSXi6K/OnWddzIDrDso21UuWIWDEGD3DWixLP0ucB5Z5sTeg808tWUEDw"}}, "unsigned": {"age_ts": 1570041726661}}ZeQaA$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800{"token_id": 313, "stream_ordering": 1415}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE"], "prev_events": ["$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE"], "type": "m.room.member", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-293:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-293:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041724995, "hashes": {"sha256": "/qCXo+3mAC8GGl7sxakHdGa7aj2nUs9UX7YDlglRhqo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RvIwYA7lbqopWIZM8841QxAlWCoBGqczwiprpkVe4xymz0OhvTIAMQgFVOugAfzjB5UgPDn233rfzniKtlHBAA"}}, "unsigned": {"age_ts": 1570041724995, "replaces_state": "$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE"}} `nK(T7kN.t5 U  e K 4 } ` C , x a "  p Y O2G*_B%W:hQ4sXA$`C,%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-288:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-287:localhost:8800>']m.room.member@anon-20191002_181700-287:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ Pm.room.server_aclT"? Om.room.history_visibilityS7 Nm.room.related_groupsR% Mm.room.topicQ"? Lm.room.history_visibilityP/ Km.room.join_rulesO3 Jm.room.power_levelsN>']Im.room.member@anon-20191002_181700-298:localhost:8800M' Hm.room.createL3 Gm.room.power_levelsK3 Fm.room.power_levelsJ/ Em.room.join_rulesI"? Dm.room.history_visibilityH3 Cm.room.guest_accessG3 Bm.room.power_levelsF>']Am.room.member@anon-20191002_181700-297:localhost:8800E' @m.room.createD- ?m.room.tombstoneC3 >m.room.power_levelsB"? =m.room.history_visibilityA/ ']:m.room.member@anon-20191002_181700-297:localhost:8800>' 9m.room.create=3 8m.room.power_levels<3 7m.room.power_levels;/ 6m.room.join_rules:"? 5m.room.history_visibility93 4m.room.guest_access83 3m.room.power_levels7>']2m.room.member@anon-20191002_181700-296:localhost:88006' 1m.room.create5- 0m.room.tombstone4"? /m.room.history_visibility3/ .m.room.join_rules23 -m.room.power_levels1>'],m.room.member@anon-20191002_181700-296:localhost:88000' +m.room.create/3 *m.room.power_levels.3 )m.room.power_levels-/ (m.room.join_rules,"? 'm.room.history_visibility+3 &m.room.guest_access*3 %m.room.power_levels)>']$m.room.member@anon-20191002_181700-295:localhost:8800(' #m.room.create'- "m.room.tombstone&"? !m.room.history_visibility%/  m.room.join_rules$3 m.room.power_levels#>']m.room.member@anon-20191002_181700-295:localhost:8800"' m.room.create!3 m.room.power_levels 3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-294:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-294:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-293:localhost:8800>'] m.room.member@anon-20191002_181700-293:localhost:8800%)) m.room.aliaseslocalhost:8800"?  m.room.history_visibility/  m.room.join_rules9  m.room.canonical_alias 3 m.room.power_levels >']m.room.member@anon-20191002_181700-292:localhost:8800 ' m.room.create >']m.room.member@anon-20191002_181700-291:localhost:8800 %))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-290:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-289:localhost:8800 NCo= $7  j \  *  &NX  V i P D  |p8t v   J >b0 RzH1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA ;1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU 1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 01e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc c1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0^1e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ h1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 I1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4n1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgQ1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw(1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rca1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMh1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qb1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8z1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M41e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08O1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 0e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA,1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsE1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM-1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkt1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv071e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ41e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo881e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ)1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA Q1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4_1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 01e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8A1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec/1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA 1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w_1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0b1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYv1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cn1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg 1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIf r qr{ MQa $15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1422}{"auth_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}]], "prev_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}]], "type": "m.room.member", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-294", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-294:localhost:8800", "event_id": "$15700417327EEUMr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041732594, "hashes": {"sha256": "P0XeGAYNGjEabydTj4MVmrysCsbtm9WC006Ey7Pd6L0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XqKk8I4CcFA8HNHNJFL/Lu0VJBJATLFkRqrPzATCYYYERytSi1YDnI885t+mbo09+hKNJsCfYUHi38DjgGQfDA"}}, "unsigned": {"age_ts": 1570041732594}} MQa; $15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1421}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "event_id": "$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I"}, "creator": "@anon-20191002_181700-294:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$15700417316amiRb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041731835, "hashes": {"sha256": "fiifXUwDgA8t/ucx47u5CvwhwgueiRMo90XMyK8m/LY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6eNgD5vYkNJApsWAfA6F6zVZG5P3vaCpiS0XNqIBGshNnsjFLNsSM9cJPzSm0MIbt5AWNM4hBEcYWscHRJ87BA"}}, "unsigned": {"age_ts": 1570041731835}} eQa$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1420}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk"], "type": "m.room.history_visibility", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041729879, "hashes": {"sha256": "XlJ+N1huHsTl2Mxsg6Wtz0+UhHti7R+wWQ8t6g6YdvE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3SJZS6Ig+MWH711TfB28EZgoMlnDJLpWSJf6rxQetRi+kHkz0DcryhUgCt/G1fRsB6Zv6qlZdKYhaENqIiq8CQ"}}, "unsigned": {"age_ts": 1570041729879}}t eQau$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1419}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE"], "type": "m.room.join_rules", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041729155, "hashes": {"sha256": "Pfv5bxBUC/vkVR/1xJpZSDuFNqb8UIzh7J3iaAlcwUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+T+HWlb6KLvTCJSklr4imZfzEBo8YjTs617qotD08l4JCkT6+6C9O3hQXfpClf8auc9Qr9fyCqKe0EaOB5OtAQ"}}, "unsigned": {"age_ts": 1570041729155}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@'}&|%{$z#y"x!w vutsrqponmlkjihgfed c b a ` _^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      }{zyxwvutsrqponmkihgfedca`_^][ZYXWSZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(~RQPONMIHGFECBA@?=<;:9876543210/.-,+*)('&%$#"! ~}|{zyxwvut s r q ponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML  unOQa $157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1425}{"auth_events": [["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}], ["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "prev_events": [["$15700417349vUcYV:localhost:8800", {"sha256": "rv9pf13B3ODnaoFWhqRNxXgqEEbQ1KfG3XtxhN62FuY"}]], "type": "m.room.history_visibility", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004173510EIiCi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041735076, "hashes": {"sha256": "Xwb465yJT64Wi1iJOCXhMEtOp6vlesuxlqLJNBw3zHE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WHxMNCUtQ20kaGGBOv4usbagrVTmRSk03ovy+zHZ7BiaKGUeuIBa156RP+Je1dNNRCBaQOeDAIA1PAcuuQFoAw"}}, "unsigned": {"age_ts": 1570041735076}}bMQak $15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1424}{"auth_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}], ["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}]], "prev_events": [["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}]], "type": "m.room.guest_access", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$15700417349vUcYV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041734424, "hashes": {"sha256": "I9Pe83/FZkhDqZLyiIvCHS3IAwaZDfzgEHEE3Nv05aE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aBp2pVE+D3op/qat2iJw66zZbO4jas/OEgMoCjROW2dCHNQxqQi5RViPdiLBFiBiUQhh9vQ/4ksJGLj/N1j9Dg"}}, "unsigned": {"age_ts": 1570041734424}}!MQai $15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1423}{"auth_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "prev_events": [["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "type": "m.room.power_levels", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"users": {"@anon-20191002_181700-294:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$15700417338MBNFd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041733717, "hashes": {"sha256": "tztkvdcGLdDYT/2ssM67bgX6VWsNhVtmwtgwfgmT5LA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0zmybKQs7FVDxkTFaxGEtNezxZ98VWmFHt5nFjGK6gLxX7+bkpsjd+GypPN6XiFcplydGfrL67A90auTuvGqDw"}}, "unsigned": {"age_ts": 1570041733717}} >L(|J  vP8Vb0 P  p $ $   i7oZ J =  *v V D \ D  |>j1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQE1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA~1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsIW1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9oY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI&1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ak1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo 1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEw1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg m1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho01e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAB0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMW1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY&1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8R1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg"0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls .1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo )1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasv1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 01e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEt1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo \1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 61e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvor1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4 1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMX1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM o1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIe1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw U1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUxj21e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 21e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M  _eQaK$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1428}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I"], "type": "m.room.power_levels", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"users": {"@anon-20191002_181700-294:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041736892, "hashes": {"sha256": "0KlP6QvYs/7yDsZKHa9m6Nx4j0cRS4nW6fyKowjng24"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bI2RMFxdO47oImOF2He2EjW03JEbumUZTD3ggFfr6DuxIhsfygSqMjpR1/zr6PEoMp+1CeDSKdDazLUWXXtMDA"}}, "unsigned": {"age_ts": 1570041736892, "replaces_state": "$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE"}}=eQa$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1427}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c"], "type": "m.room.tombstone", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!azRJNFPIRSFAskLILK:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041731680, "hashes": {"sha256": "u9Z/R/vVWJ/CrXFh0OhzQ+kXT9CUY4Q3x+3U765xjX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oEyja2W/0gi/uWn0fbi7QYtK04QKZKrkFMQH+Swbs8xbu8HsbrD4zPjA2Img2JIB+kRHl3d290sbMiWf0iSIAg"}}, "unsigned": {"age_ts": 1570041731680}}^OQaa $157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1426}{"auth_events": [["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}], ["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "prev_events": [["$157004173510EIiCi:localhost:8800", {"sha256": "YRls+K3WgE4FvMa00Q+PTxdRJQDnHu/RYavUC1cQEmc"}]], "type": "m.room.join_rules", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004173511wRnRr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041735791, "hashes": {"sha256": "Wvu8uEDRkQpnofn6687sP+gITzuxTep/kngXw8GmOBM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ugE4UtYN3oAe4LkKoa6UYHF1w8JUsMOqrG+acR5eJOBY3u7Gw8uwkfSTEd1UVFDbW42QxVb30aeSX2rqSDWbAA"}}, "unsigned": {"age_ts": 1570041735791}}   *teQau$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1432}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs"], "type": "m.room.join_rules", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041741441, "hashes": {"sha256": "0NFXm+iaJfqUseV2dh2ZrqRABzxz3Y8Omxbzmr3zKg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mc6mBO0/hRcNPC5CjJCwK/fz+jHV2pvdNMm4d2O/v1VLugCSb6XsTa43JDMhrPv0c9/tSJ5ztTzhc0i1iL/mDw"}}, "unsigned": {"age_ts": 1570041741441}}keQac$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1431}{"auth_events": ["$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "type": "m.room.power_levels", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"users": {"@anon-20191002_181700-295:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041740732, "hashes": {"sha256": "/0T7OUZy6f3sJqpPnZ86HqgHbF4cwJoA57iiWBPloSI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o+LL27Kxm2uX0IB40KPzImuWPz5zVDGzByfZprRn/azfsXpM1CY1czmQXGmUy+FePDIPGAixRKhAtTvIVC+oBw"}}, "unsigned": {"age_ts": 1570041740732}}veQay$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1430}{"auth_events": ["$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo"], "prev_events": ["$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo"], "type": "m.room.member", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-295", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-295:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041740017, "hashes": {"sha256": "6JwPXn42pC3t4lSAPpK2zcbeRiSNwJub5iHQh69beBw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Nqu91PHmKYXbPqDNCD/L6xwTxAYAJ42C84kHNy7YQr7bv4dQHyAeLz7iP3BeXC+KnhVBw8aKpbpJ1/oqWImBg"}}, "unsigned": {"age_ts": 1570041740017}}ieQa_$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1429}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-295:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041739213, "hashes": {"sha256": "2a2i/voPQAmaJ3PH+rqyZJra4xC4P9enpSOwRD/vOz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CsmGyE+rswzF22GipTu2qwh7O4f0PloFMOZpUilDFzyJ323lTHTAxRjvrGIqfWSknRacXsCvhk2IEu7mKBT9AQ"}}, "unsigned": {"age_ts": 1570041739213}} ?U6q9 U  q 8 T  p 8 T q8Tq8Tp7SoS8e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4osha2568e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewsha2568e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0sha2568e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcsha256 8e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQksha256R8e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQsha256G8e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcsha256 m8e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_posha2568e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGssha256 8e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9Usha2568e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4sha2568e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUsha2568e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYsha2568e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkIsha2568e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKosha2568e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdosha256u8e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEsha2568e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgsha256h8e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEsha256 R8e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4sha256 8e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUsha256$8e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1josha25628e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwsha256I7e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0sha2568e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8sha256 .8e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgsha256I8e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94sha2568e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMsha25638e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0sha256A8e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQsha256s8e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQsha256P8e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYsha256 t7e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0sha256h8e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4sha256:8e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNosha256 >8e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgsha256L8e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8sha256_7e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcsha256L8e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-ksha2568e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4sha2568e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwsha2568e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzssha256 8e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Ysha256 8e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zksha256 /8e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQsha256Q8e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68sha256C8e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14sha2568e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fviksha2568e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygsha2568e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUsha256O8e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sksha2568e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4sha256V8e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Qsha2568e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Asha25638e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcsha256q7e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Ysha256$8e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEsha256y8e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQsha2568e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwsha25648e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAsha2568e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgsha256 8e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIsha2568e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8sha256l 0RX t ( 9 4 / Kgmhc3DJETNQeN!aaRwQZdNAliyvRHpjs:localhost:8800$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8TMQeM!aaRwQZdNAliyvRHpjs:localhost:8800$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsTLQeL!aaRwQZdNAliyvRHpjs:localhost:8800$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYTKQeK!aaRwQZdNAliyvRHpjs:localhost:8800$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfATJQeJ!aaRwQZdNAliyvRHpjs:localhost:8800$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsTIQeI!aaRwQZdNAliyvRHpjs:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwTHQeH!aaRwQZdNAliyvRHpjs:localhost:8800$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkIGQOG!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177433OonrH:localhost:8800TFQeF!NNiyzThHMivrxhojfp:localhost:8800$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAIEQOE!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177232wsJyW:localhost:8800IDQOD!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177131trwoi:localhost:8800ICQOC!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177030bmvvg:localhost:8800IBQOB!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176929ezeJB:localhost:8800IAQOA!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176828ZZJWh:localhost:8800I@QO@!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176727QjUJj:localhost:8800T?Qe?!NNiyzThHMivrxhojfp:localhost:8800$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgT>Qe>!NNiyzThHMivrxhojfp:localhost:8800$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYT=Qe=!NNiyzThHMivrxhojfp:localhost:8800$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKoT<Qe!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYoAQ? e=!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibility$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKog@Q/ eQ']e:!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIc=Q' e9!NNiyzThHMivrxhojfp:localhost:8800m.room.create$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s^<Q3 O8!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels$157004176126IzriS:localhost:8800i;Q3 e7!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew\:Q/ O6!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rules$157004175925JuKDZ:localhost:8800d9Q? O5!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility$157004175824dFhko:localhost:8800^8Q3 O4!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access$157004175723CBKAp:localhost:8800^7Q3 O3!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels$157004175622yCTNM:localhost:88006Q']O2!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$157004175621DDceh:localhost:8800X5Q' O1!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.create$157004175520JddPP:localhost:8800f4Q- e0!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstone$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDoso3Q? e/!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibility$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcg2Q/ e.!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rules$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Yi1Q3 e-!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 0Q']e,!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEc/Q' e+!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.create$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8^.Q3 O*!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels$157004175019FhZnd:localhost:8800i-Q3 e)!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0\,Q/ O(!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rules$157004174718wxlLH:localhost:8800d+Q? O'!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility$157004174617osGDW:localhost:8800^*Q3 O&!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access$157004174616PvcHe:localhost:8800^)Q3 O%!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels$157004174515XsrNb:localhost:8800(Q']O$!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$157004174414klNmS:localhost:8800X'Q' O#!mOrKBPhetifKHDmElM:localhost:8800m.room.create$157004174313OKfBg:localhost:8800f&Q- e"!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0co%Q? e!!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibility$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hog$Q/ e !QyLUggxrTnULUAOseq:localhost:8800m.room.join_rules$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgi#Q3 e!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs  wOQa# $157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1435}{"auth_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}]], "prev_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}]], "type": "m.room.member", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-295", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-295:localhost:8800", "event_id": "$157004174414klNmS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041744628, "hashes": {"sha256": "r+Aw0bA3AsUWBBFb6eLauYtSOg/zwjWigWw6aL2w+mQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qQ7NGY+gBqcXtDHx92Ks4lWCLmTX/dqmcXwOJBWmB13y3K+w/jnEQjgNiG1PCKppf6Oj+d08+lxo5e9Vc7qJDQ"}}, "unsigned": {"age_ts": 1570041744628}} OQa= $157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1434}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "event_id": "$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c"}, "creator": "@anon-20191002_181700-295:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004174313OKfBg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041743850, "hashes": {"sha256": "VIjP1ssx3pvjIjI/awbCxnvnqFsV/6fgw+U1/qpG8Fg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xFcx623T0lmouQ25V74ufTPAaPr9PHteSVzMOmighUBdCIO3quoJoXOqSgGxEuAxsfskMHIIcn/xYl4aQyFhCg"}}, "unsigned": {"age_ts": 1570041743850}}eQa$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1433}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg"], "type": "m.room.history_visibility", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041742156, "hashes": {"sha256": "sufJUvR9GA1nFV3QJwIqChVHgy1yU872hYtUDKQ7EZA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+MxONrXXn0yj0W6Uf2vJ9wQqT3GQNVJ+u9mk/iXUJRNF0qHh9dteB3EaQXvlGuD6xM541gPCSB/xLr1R+LX6CA"}}, "unsigned": {"age_ts": 1570041742156}} ?UV) _ 2  ]Kj=  R % r E  d 7 1}P#vIc6 pC W *wyL!,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800+Q !ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800+Q !ZNIjCvcWhgcwskanjT:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800+Q !YaLuQzmJKSMTSFEqjO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800+Q !ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800+Q !ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 +Q !ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & &,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % %,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ $,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # #+Q !YmRuIWixFpaqEeDQLZ:localhost:8800 " ",Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 +Q !YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!ZYKvjplZRyIWvzkRyM:localhost:8800+Q !ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800+Q !ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800+Q !YufaOfAlruTdjyUCwO:localhost:8800,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ii,Q!YtVXQjSPgVtbxrzUOA:localhost:8800hh,Q!YtVXQjSPgVtbxrzUOA:localhost:8800gg,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ff,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ee+Q !YtVXQjSPgVtbxrzUOA:localhost:8800dd,Q!YgaGPEraeLCqHQirin:localhost:8800??,Q!YgaGPEraeLCqHQirin:localhost:8800<<,Q!YgaGPEraeLCqHQirin:localhost:8800;;,Q!YgaGPEraeLCqHQirin:localhost:8800::,Q!YgaGPEraeLCqHQirin:localhost:880099,Q!YgaGPEraeLCqHQirin:localhost:880088+Q !YgaGPEraeLCqHQirin:localhost:880077,Q!YQATbgbLImCDamiDHC:localhost:8800Y,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800 ?UV) _ 2  ]Kj=  R % r E  d 7 1}P#vIc6 pC W *wyL!,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800+Q !ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800+Q !ZNIjCvcWhgcwskanjT:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800+Q !YaLuQzmJKSMTSFEqjO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800+Q !ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800+Q !ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 +Q !ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & &,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % %,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ $,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # #+Q !YmRuIWixFpaqEeDQLZ:localhost:8800 " ",Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 +Q !YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!ZYKvjplZRyIWvzkRyM:localhost:8800+Q !ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800+Q !ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800+Q !YufaOfAlruTdjyUCwO:localhost:8800,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ii,Q!YtVXQjSPgVtbxrzUOA:localhost:8800hh,Q!YtVXQjSPgVtbxrzUOA:localhost:8800gg,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ff,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ee+Q !YtVXQjSPgVtbxrzUOA:localhost:8800dd,Q!YgaGPEraeLCqHQirin:localhost:8800??,Q!YgaGPEraeLCqHQirin:localhost:8800<<,Q!YgaGPEraeLCqHQirin:localhost:8800;;,Q!YgaGPEraeLCqHQirin:localhost:8800::,Q!YgaGPEraeLCqHQirin:localhost:880099,Q!YgaGPEraeLCqHQirin:localhost:880088+Q !YgaGPEraeLCqHQirin:localhost:880077,Q!YQATbgbLImCDamiDHC:localhost:8800Y,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800 !} < f % O ywusqomkh*OOQ$157004175622yCTNM:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h)OOQ$157004175622yCTNM:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h(OOQ$157004175621DDceh:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800~'eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~&eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~%eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800~$eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~#eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~"eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800~!eeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~ eeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~eeQ$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800~eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800hOOQ$157004174718wxlLH:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174718wxlLH:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174718wxlLH:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174617osGDW:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174617osGDW:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174617osGDW:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174616PvcHe:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174616PvcHe:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174616PvcHe:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174515XsrNb:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174515XsrNb:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800h OOQ$157004174414klNmS:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800~ eeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~ eeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~ eeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800 !~: b ^ Z V ~ :62.@h eeQ$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800iOOQ$157004177433OonrH:localhost:8800$157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800eeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800eeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800iOOQ$157004177232wsJyW:localhost:8800$157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800iOOQ$157004177131trwoi:localhost:8800$157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800i OOQ$157004177030bmvvg:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800i OOQ$157004176929ezeJB:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800i OOQ$157004176828ZZJWh:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 eeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800 eeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800eeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800eeQ$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800iOOQ$157004175925JuKDZ:localhost:8800$157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175824dFhko:localhost:8800$157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175723CBKAp:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175622yCTNM:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175621DDceh:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800~eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800}eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800|eeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800{eeQ$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800zeeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800yeeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800ixOOQ$157004174718wxlLH:localhost:8800$157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800iwOOQ$157004174617osGDW:localhost:8800$157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800ivOOQ$157004174616PvcHe:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800iuOOQ$157004174515XsrNb:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800itOOQ$157004174414klNmS:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800seeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800  jrOQa $157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1438}{"auth_events": [["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}], ["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "prev_events": [["$157004174616PvcHe:localhost:8800", {"sha256": "z7BJ+wL1nD1Q+td7UzRrMyR5QtD+nIqXXLBYBhMgnho"}]], "type": "m.room.history_visibility", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004174617osGDW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041746834, "hashes": {"sha256": "PdbewstGBNGKf8knvBZ24j8UdblAGJ/UNta2uKxjT2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TpLAgaZPsU38zGGEfi7TEQAg6gdA8gsTfV5n2aaDUHti9AdQ9tSe4QdvHBiYC4n4vqC/PBZtHQWyVUJFQ1ZNCg"}}, "unsigned": {"age_ts": 1570041746834}}hOQau $157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1437}{"auth_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}], ["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}]], "prev_events": [["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}]], "type": "m.room.guest_access", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004174616PvcHe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041746151, "hashes": {"sha256": "OEqW4Gnv4hcS0H/lekfpQIqDiLBqAipX88cQmDQbK3M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ynweqg0Ccup52ywE0+pAaDIbPGHfBzDzbZnt87i31jhx1YxuIb2Tt93WX5ShcoXuRh6ZtipcLnXRQFzwyI7lBQ"}}, "unsigned": {"age_ts": 1570041746151}}&OQaq $157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1436}{"auth_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "prev_events": [["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "type": "m.room.power_levels", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"users": {"@anon-20191002_181700-295:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004174515XsrNb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041745433, "hashes": {"sha256": "/jOe09F3SogL1aLiMWBJCDO1vLoMHxaLuogzBalE4X4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PwF5AIvGHGe96qB7B5omphR575hOK3I76oZGTwPYPDpk3U92+utWDmlIksYAFiIMUiVCefGTyzp8HztIBPZcBw"}}, "unsigned": {"age_ts": 1570041745433}} #<t p y . M !WVY{<t pdQ' e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.create$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkQ3 OO!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels$157004177433OonrH:localhost:8800$157004176929ezeJB:localhost:8800Q3 ee!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYgQ- e!NNiyzThHMivrxhojfp:localhost:8800m.room.tombstone$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg]Q/ O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rules$157004177232wsJyW:localhost:8800eQ? O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility$157004177131trwoi:localhost:8800_Q3 O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access$157004177030bmvvg:localhost:8800_ Q3 O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels$157004176929ezeJB:localhost:8800 Q']O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800$157004176828ZZJWh:localhost:8800Y Q' O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.create$157004176727QjUJj:localhost:8800 Q3 ee!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAp Q? e!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibility$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKohQ/ e!NNiyzThHMivrxhojfp:localhost:8800m.room.join_rules$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_sjQ3 e!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA Q']e!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIdQ' e!NNiyzThHMivrxhojfp:localhost:8800m.room.create$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4sQ3 ee!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4gQ- e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstone$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos]Q/ O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rules$157004175925JuKDZ:localhost:8800eQ? O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility$157004175824dFhko:localhost:8800_Q3 O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access$157004175723CBKAp:localhost:8800_Q3 O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels$157004175622yCTNM:localhost:8800~Q']O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$157004175621DDceh:localhost:8800Y}Q' O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.create$157004175520JddPP:localhost:8800p|Q? e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibility$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMch{Q/ e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rules$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8YjzQ3 e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 yQ']e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEdxQ' e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.create$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8wQ3 ee!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbsgvQ- e!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c]uQ/ O!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rules$157004174718wxlLH:localhost:8800etQ? O!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility$157004174617osGDW:localhost:8800_sQ3 O!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access$157004174616PvcHe:localhost:8800_rQ3 O!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels$157004174515XsrNb:localhost:8800 a x , 6 Vs/?=&4e3Q ]$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYm.room.power_levels!NNiyzThHMivrxhojfp:localhost:8800m!m!@anon-20191002_181700-297:localhost:8800,3e?Q ]$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKom.room.history_visibility!NNiyzThHMivrxhojfp:localhost:8800mm@anon-20191002_181700-297:localhost:8800$2e/Q ]$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_sm.room.join_rules!NNiyzThHMivrxhojfp:localhost:8800mWm @anon-20191002_181700-297:localhost:8800&1e3Q ]$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAm.room.power_levels!NNiyzThHMivrxhojfp:localhost:8800mm@anon-20191002_181700-297:localhost:8800 0e'Q ]$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIm.room.member!NNiyzThHMivrxhojfp:localhost:8800m5m@anon-20191002_181700-297:localhost:8800/ e'Q  ]$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4sm.room.create!NNiyzThHMivrxhojfp:localhost:8800m)mp@anon-20191002_181700-297:localhost:8800&.e3Q ]$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewm.room.power_levels!KmuRTfGFgJdgIDAgIW:localhost:8800m dm @anon-20191002_181700-296:localhost:8800#-e-Q ]$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDosm.room.tombstone!KmuRTfGFgJdgIDAgIW:localhost:8800mmC@anon-20191002_181700-296:localhost:8800,O/Q ]$157004175925JuKDZ:localhost:8800m.room.join_rules!QFiJrWFFeTAAAUCjCE:localhost:8800m]m@anon-20191002_181700-296:localhost:8800!+O?Q ]$157004175824dFhko:localhost:8800m.room.history_visibility!QFiJrWFFeTAAAUCjCE:localhost:8800mm@anon-20191002_181700-296:localhost:8800*O3Q ]$157004175723CBKAp:localhost:8800m.room.guest_access!QFiJrWFFeTAAAUCjCE:localhost:8800mmx@anon-20191002_181700-296:localhost:8800)O3Q ]$157004175622yCTNM:localhost:8800m.room.power_levels!QFiJrWFFeTAAAUCjCE:localhost:8800m`m@anon-20191002_181700-296:localhost:8800(O'Q ]$157004175621DDceh:localhost:8800m.room.member!QFiJrWFFeTAAAUCjCE:localhost:8800mm@anon-20191002_181700-296:localhost:8800' O'Q  ]$157004175520JddPP:localhost:8800m.room.create!QFiJrWFFeTAAAUCjCE:localhost:8800mm$@anon-20191002_181700-296:localhost:8800,&e?Q ]$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcm.room.history_visibility!KmuRTfGFgJdgIDAgIW:localhost:8800mQm@anon-20191002_181700-296:localhost:8800$%e/Q ]$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Ym.room.join_rules!KmuRTfGFgJdgIDAgIW:localhost:8800mm@anon-20191002_181700-296:localhost:8800&$e3Q ]$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4m.room.power_levels!KmuRTfGFgJdgIDAgIW:localhost:8800momb@anon-20191002_181700-296:localhost:8800 #e'Q ]$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEm.room.member!KmuRTfGFgJdgIDAgIW:localhost:8800mm&@anon-20191002_181700-296:localhost:8800" e'Q  ]$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8m.room.create!KmuRTfGFgJdgIDAgIW:localhost:8800mm-@anon-20191002_181700-296:localhost:8800&!e3Q ]$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0m.room.power_levels!QyLUggxrTnULUAOseq:localhost:8800mmߥ@anon-20191002_181700-295:localhost:8800# e-Q ]$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0cm.room.tombstone!QyLUggxrTnULUAOseq:localhost:8800mdm @anon-20191002_181700-295:localhost:8800O/Q ]$157004174718wxlLH:localhost:8800m.room.join_rules!mOrKBPhetifKHDmElM:localhost:8800m؀m @anon-20191002_181700-295:localhost:8800!O?Q ]$157004174617osGDW:localhost:8800m.room.history_visibility!mOrKBPhetifKHDmElM:localhost:8800mՒm(@anon-20191002_181700-295:localhost:8800O3Q ]$157004174616PvcHe:localhost:8800m.room.guest_access!mOrKBPhetifKHDmElM:localhost:8800mmL@anon-20191002_181700-295:localhost:8800  _ eQaK$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1441}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c"], "type": "m.room.power_levels", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"users": {"@anon-20191002_181700-295:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041748956, "hashes": {"sha256": "t8pR3q76n26MEpqiDWiTPNdmL/hy42MZLt7x5lJkBdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V2g6x6LoLhova+nGmUqMuCkt4u2lEDKz4rBVotCrOdaUb3Ki5++CLl/bSQUywbLpx8GFMjVl0UBT33m7xtv3DQ"}}, "unsigned": {"age_ts": 1570041748956, "replaces_state": "$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs"}}=eQa$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1440}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho"], "type": "m.room.tombstone", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!mOrKBPhetifKHDmElM:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041743716, "hashes": {"sha256": "PrB+CVPuwwkxCnyMHgt0/AFe8+AYpE9Ngt5n+f2RNfk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XxsqDSP/T8mP52kF7+8LYnPZqwu7TZX2BbVUeVEj9RGTo/rHZcVjF7RWHp7Bxk/Ns3lg5tVxBLJIFOQwojNcCw"}}, "unsigned": {"age_ts": 1570041743716}}aOQag $157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1439}{"auth_events": [["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}], ["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "prev_events": [["$157004174617osGDW:localhost:8800", {"sha256": "fcjHgcE696ODUC4x0qRF6y09kz2MQMZm3slamLveArc"}]], "type": "m.room.join_rules", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004174718wxlLH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041747584, "hashes": {"sha256": "TI408nz28usWN66TBeEYy8/gzLw1CeDFOYiSliCwHPo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3r32qMmp/YlKdynWW1JjvDGAgnyKoXMjJ42UXDaC1FGo1BRS2laK0WRi1FG+VMzQ2uijYYj/0K8gF3k0mQ5OAg"}}, "unsigned": {"age_ts": 1570041747584}} So;kB u A q = Z 1  w N  ~ J zFvM$uL^5{RzQ(n:jA&nO$157004181958ixShg:localhost:8800&mO$157004181857fcmAB:localhost:8800~&lO$157004181756ejZNp:localhost:8800}&kO$157004181655JUAvO:localhost:8800|1je$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkz1ie$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUy1he$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kcx1ge$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aow1fe$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wu1ee$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQt1de$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwk&cO$157004180853KmrHT:localhost:8800s&bO$157004180752YHMqi:localhost:8800r&aO$157004180751hMlwg:localhost:8800q&`O$157004180650ruqIl:localhost:8800p&_O$157004180549mJBJB:localhost:8800o&^O$157004180448zlZXD:localhost:8800n&]O$157004180347MMmFf:localhost:8800m&\O$157004180346TRucp:localhost:8800l1[e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIW&ZO$157004180045QtsUE:localhost:8800i&YO$157004179944JKWNJ:localhost:8800h1Xe$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEg&WO$157004179843yDrjz:localhost:8800f1Ve$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAe&UO$157004179742OaMxS:localhost:8800d1Te$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Mc&SO$157004179541PbBIm:localhost:8800b1Re$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAka&QO$157004179340NSiie:localhost:8800`1Pe$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY_&OO$157004179239LLqht:localhost:8800^1Ne$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ]&MO$157004179138NbBYh:localhost:8800\&LO$157004179037FGMFG:localhost:8800[&KO$157004178936zuJSX:localhost:8800Z&JO$157004178835mLAyG:localhost:8800Y&IO$157004178734ZpFdg:localhost:8800X1He$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0V1Ge$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8U1Fe$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUT1Ee$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5ES1De$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcR1Ce$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34P1Be$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcO1Ae$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8N1@e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsM1?e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYL1>e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAK1=e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsJ1<e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwI1;e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkH&:O$157004177433OonrH:localhost:8800G19e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAF18e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg?&7O$157004177232wsJyW:localhost:8800E&6O$157004177131trwoi:localhost:8800D&5O$157004177030bmvvg:localhost:8800C&4O$157004176929ezeJB:localhost:8800B&3O$157004176828ZZJWh:localhost:8800A&2O$157004176727QjUJj:localhost:8800@11e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY>10e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo=1/e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s<1.e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA;1-e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI:1,e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s91+e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew71*e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos0&)O$157004175925JuKDZ:localhost:88006&(O$157004175824dFhko:localhost:88005&'O$157004175723CBKAp:localhost:88004&&O$157004175622yCTNM:localhost:88003&%O$157004175621DDceh:localhost:88002&$O$157004175520JddPP:localhost:880011#e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc/1"e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y.1!e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4-1 e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE,1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8+1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0)1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c"&O$157004174718wxlLH:localhost:8800( L0My P  p> v DS V $  \' j *h6n< 8v |DY! Gb J  jTgq1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUn1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg51e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY 1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk 1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk 1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk 1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc ab1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8N1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I 1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUm1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUl1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ/e $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE<1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE;1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8O1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk~1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY 1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY 1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE1e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo1e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Uc1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8P1e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwf 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg41e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg3d1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h881e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8U1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8T1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8S1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY11e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY01e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY/1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Ue1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Ud1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U /: h  [ 2 =k^5@n/e`HeQ% $f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topicpeFeQ/ $U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rulesj DeQ']$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800joinaCeQ' $2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800m.room.created@eQ- $wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800m.room.tombstoneZ?OQ/ $157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rulesb>OQ? $157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility\=OQ3 $157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access\BOQ3 $157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels;OQ']$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800joinV:OQ' $157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.createm8eQ? $ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibilitye7eQ/ $wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800m.room.join_rulesgAeQ3 $U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels 5eQ']$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800joina4eQ' $vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800m.room.created2eQ- $dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstoneZ1OQ/ $157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rulesb0OQ? $157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility\/OQ3 $157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access\.OQ3 $157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels-OQ']$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800joinV,OQ' $157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.createm+eQ? $JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibilitye*eQ/ $RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rulesg3eQ3 $1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels (eQ']$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800joina'eQ' $wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.createg&eQ3 $q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levelsd%eQ- $-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone 0vRM ^  z . ) { $ v *FW]XSNIZvIVQO!BfEFIDBthhkweqfhir:localhost:8800$157004179138NbBYh:localhost:8800IUQO!BfEFIDBthhkweqfhir:localhost:8800$157004179037FGMFG:localhost:8800ITQO!BfEFIDBthhkweqfhir:localhost:8800$157004178936zuJSX:localhost:8800ISQO!BfEFIDBthhkweqfhir:localhost:8800$157004178835mLAyG:localhost:8800IRQO!BfEFIDBthhkweqfhir:localhost:8800$157004178734ZpFdg:localhost:8800TQQe!aaRwQZdNAliyvRHpjs:localhost:8800$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0TPQe!aaRwQZdNAliyvRHpjs:localhost:8800$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8TOQe!aaRwQZdNAliyvRHpjs:localhost:8800$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUTNQe!aaRwQZdNAliyvRHpjs:localhost:8800$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5ETMQe!aaRwQZdNAliyvRHpjs:localhost:8800$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcTLQe!aaRwQZdNAliyvRHpjs:localhost:8800$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34TKQe!aaRwQZdNAliyvRHpjs:localhost:8800$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcTJQe!aaRwQZdNAliyvRHpjs:localhost:8800$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8TIQe!aaRwQZdNAliyvRHpjs:localhost:8800$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsTHQe!aaRwQZdNAliyvRHpjs:localhost:8800$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYTGQe!aaRwQZdNAliyvRHpjs:localhost:8800$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfATFQe!aaRwQZdNAliyvRHpjs:localhost:8800$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsTEQe!aaRwQZdNAliyvRHpjs:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwTDQe!aaRwQZdNAliyvRHpjs:localhost:8800$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkICQO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177433OonrH:localhost:8800TBQe!NNiyzThHMivrxhojfp:localhost:8800$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozATAQe!NNiyzThHMivrxhojfp:localhost:8800$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgI@QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177232wsJyW:localhost:8800I?QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177131trwoi:localhost:8800I>QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177030bmvvg:localhost:8800I=QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176929ezeJB:localhost:8800I<QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176828ZZJWh:localhost:8800I;QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176727QjUJj:localhost:8800T:Qe!NNiyzThHMivrxhojfp:localhost:8800$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYT9Qe!NNiyzThHMivrxhojfp:localhost:8800$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKoT8Qe!NNiyzThHMivrxhojfp:localhost:8800$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_sT7Qe!NNiyzThHMivrxhojfp:localhost:8800$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAT6Qe!NNiyzThHMivrxhojfp:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIT5Qe!NNiyzThHMivrxhojfp:localhost:8800$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4sT4Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewT3Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDosI2QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175925JuKDZ:localhost:8800I1QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175824dFhko:localhost:8800I0QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175723CBKAp:localhost:8800I/QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175622yCTNM:localhost:8800I.QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175621DDceh:localhost:8800I-QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175520JddPP:localhost:8800T,Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcT+Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8YT*Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4T)Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttET(Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8T'Qe!QyLUggxrTnULUAOseq:localhost:8800$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0   *t$eQau$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1445}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4"], "type": "m.room.join_rules", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041753058, "hashes": {"sha256": "Q/CNCEyQ2SQMULZGm2DA/x/G/Bx29jMO/zJveGoMTY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+qBS+NRCUiHhv+ccp7WfhyvfTWhwKrAkoRItVU/J8HJbDZdDnw3Qhj+S3yFuPvSIxb1SuCT/iOt2TDM8zcryAw"}}, "unsigned": {"age_ts": 1570041753058}}k#eQac$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1444}{"auth_events": ["$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "type": "m.room.power_levels", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"users": {"@anon-20191002_181700-296:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041752431, "hashes": {"sha256": "Nilb2pbi329A/XX9feLjH/bqy0OCiO5Sly3zEvTWvAo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gRdwY+h4i1cxtPsgaT+JWZD7h2L+/Yxay9jNQrIn1f3SYbuC+oZquBxDQPF82X7P2rTz5XQXC+knRAGYePx1Bg"}}, "unsigned": {"age_ts": 1570041752431}}v"eQay$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1443}{"auth_events": ["$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8"], "prev_events": ["$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8"], "type": "m.room.member", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-296", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-296:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041751701, "hashes": {"sha256": "bceRWYWJpRLqH9TAGk0kjZy5UBYNivacETUGoH4HgTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tXSIHMwiiEKP3ZOWM2h1sld2zcK/9TP0PAxYY63LowUrXpGv4XnQBDfaDnMQidLq3AuR4iWnZn7k3KiEIUTJAQ"}}, "unsigned": {"age_ts": 1570041751701}}i!eQa_$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1442}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-296:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041750957, "hashes": {"sha256": "Ub36u8m+dwD0dWWR+gvqs32TDAgVfGfosJ/dIDnVLzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KJwJYZa8apyfrM7ngfG3eveY4K3gUp4kxxtXdj1cLvKwGoh3RIYhOtBj8oTM7azQS87Pld4PdSkFYaVFfMjAQ"}}, "unsigned": {"age_ts": 1570041750957}} %s 1 W 4 p   Ci0l>{Im_eQ# $tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.nameeeQ/ $UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_aclmeQ? $_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibilityieQ7 $x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups`eQ% $f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topicmeQ? $f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibilityeeQ/ $U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rulesgeQ3 $q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels eQ']$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800aeQ' $2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800m.room.create\OQ3 $157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levelsgeQ3 $U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levelsdeQ- $wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800m.room.tombstoneZOQ/ $157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rulesbOQ? $157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility\OQ3 $157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access\OQ3 $157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels~OQ']$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800V OQ' $157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.createg eQ3 $H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levelsm eQ? $ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibilitye eQ/ $wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800m.room.join_rulesg eQ3 $4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels eQ']$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800aeQ' $vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800m.room.creategeQ3 $1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levelsdeQ- $dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstoneZOQ/ $157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rulesbOQ? $157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility\OQ3 $157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access\OQ3 $157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels~OQ']$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800VOQ' $157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.createm~eQ? $JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibilitye}eQ/ $RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rulesg|eQ3 $WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels {eQ']$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800  w'OQa# $157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1448}{"auth_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}]], "prev_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}]], "type": "m.room.member", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-296", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-296:localhost:8800", "event_id": "$157004175621DDceh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041756043, "hashes": {"sha256": "y0WfG9Vl6AjSrexXKYfwj4AsobbemtMQOVr1rJGloMc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Ct9ZTXAKP0NKv9fk3oaPC3CCaA00KZXzMhOV5zsdBxjAfhmxmnHGXpg+tHonQ04c4UGkLMoThT1Sszz6BmXDg"}}, "unsigned": {"age_ts": 1570041756043}} &OQa= $157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1447}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "event_id": "$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos"}, "creator": "@anon-20191002_181700-296:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004175520JddPP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041755357, "hashes": {"sha256": "DEbhH2KKorDO/erV1F6xcGkbT3B2MueQHDUZX9Dob6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6kzVz08+iKD2GGq/of1Hiqy6GUs3zqCUrArxwX1f2zDHeR2Kf20Gh1/zOCAxcmCi708qKaJxe5AGZyMRUEI3BA"}}, "unsigned": {"age_ts": 1570041755357}}%eQa$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1446}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y"], "type": "m.room.history_visibility", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041753681, "hashes": {"sha256": "BcLvc5DSAM80HZHspj9hD/Hl6yckpWOCbRtHx+B24bA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tivjau0XDxv8stlt7o9xf+5nUuecZrGmFQ6sxmLDO/7Fi376yjCP3sf9ySXnr+bZP7Y/iyx13koXRwXNGJjBCg"}}, "unsigned": {"age_ts": 1570041753681}} IvHb4 ~ P " j <  X * r D  ` 2 zN h: V(pB^0xJfff8 R$-]@anon-20191002_181700-367:localhost:8800>-]@anon-20191002_181700-366:localhost:8800<-]@anon-20191002_181700-365:localhost:88008-]@anon-20191002_181700-364:localhost:88006-]@anon-20191002_181700-363:localhost:88002-]@anon-20191002_181700-362:localhost:8800/-]@anon-20191002_181700-361:localhost:88000-]@anon-20191002_181700-360:localhost:8800'+[@anon-20191002_181700-35:localhost:8800h-]@anon-20191002_181700-359:localhost:8800$-]@anon-20191002_181700-358:localhost:8800%-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800 -]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:8800c-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-346:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-344:localhost:8829-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800-]@anon-20191002_181700-341:localhost:8800-]@anon-20191002_181700-340:localhost:8829+[@anon-20191002_181700-33:localhost:8800^-]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-338:localhost:8800-]@anon-20191002_181700-337:localhost:8800-]@anon-20191002_181700-336:localhost:8800-]@anon-20191002_181700-333:localhost:8800-]@anon-20191002_181700-332:localhost:8800-]@anon-20191002_181700-331:localhost:8800-]@anon-20191002_181700-330:localhost:8800+[@anon-20191002_181700-32:localhost:8800Y-]@anon-20191002_181700-329:localhost:8800-]@anon-20191002_181700-328:localhost:8800-]@anon-20191002_181700-327:localhost:8800-]@anon-20191002_181700-326:localhost:8800-]@anon-20191002_181700-325:localhost:8800-]@anon-20191002_181700-324:localhost:8800-]@anon-20191002_181700-323:localhost:8800-]@anon-20191002_181700-322:localhost:8800-]@anon-20191002_181700-321:localhost:8800-]@anon-20191002_181700-320:localhost:8800+[@anon-20191002_181700-31:localhost:8800T-]@anon-20191002_181700-319:localhost:8800~-]@anon-20191002_181700-318:localhost:8800y-]@anon-20191002_181700-317:localhost:8800t-]@anon-20191002_181700-312:localhost:8800i-]@anon-20191002_181700-311:localhost:8800e-]@anon-20191002_181700-311:localhost:8800W-]@anon-20191002_181700-311:localhost:8800V-]@anon-20191002_181700-310:localhost:8800P+[@anon-20191002_181700-30:localhost:8800R-]@anon-20191002_181700-308:localhost:8800N-]@anon-20191002_181700-307:localhost:8800J-]@anon-20191002_181700-306:localhost:8800E-]@anon-20191002_181700-305:localhost:8800<-]@anon-20191002_181700-305:localhost:88006-]@anon-20191002_181700-304:localhost:8800.-]@anon-20191002_181700-304:localhost:8800)-]@anon-20191002_181700-303:localhost:8800!-]@anon-20191002_181700-303:localhost:8800-]@anon-20191002_181700-302:localhost:8800-]@anon-20191002_181700-302:localhost:8800-]@anon-20191002_181700-301:localhost:8800-]@anon-20191002_181700-301:localhost:8800  jr*OQa $157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1451}{"auth_events": [["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}], ["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "prev_events": [["$157004175723CBKAp:localhost:8800", {"sha256": "oZot0hZ6gmzM518t+cx1hjHQeAwcrVX1ATsMx1PWtzU"}]], "type": "m.room.history_visibility", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004175824dFhko:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041758109, "hashes": {"sha256": "lmyfHlLPnbqKcpsXqY5sdMXOmoLHmHMzmI5/LKzlt6o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6aYE5y5Zem07ZPGtAmvx1w0LL3e0vPWwxqBF/JJw6IozfGvhJMWCi8jUd+hFYBE+lkUoZTRbHqZ3TiSiT1gtDQ"}}, "unsigned": {"age_ts": 1570041758109}}h)OQau $157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1450}{"auth_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}], ["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}]], "prev_events": [["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}]], "type": "m.room.guest_access", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004175723CBKAp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041757426, "hashes": {"sha256": "TenenmOonrn9eJYMrs7iemZdEFBF17i11sXilAEuxzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aO6iz3xrPG97hS7MgDcRaL+oVp82CjrQjDFa8KzBbwYfqnX0vjMG6i5+N7XsF0pFL8Iu7NUoES//29jDBbLxBQ"}}, "unsigned": {"age_ts": 1570041757426}}&(OQaq $157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1449}{"auth_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "prev_events": [["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "type": "m.room.power_levels", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"users": {"@anon-20191002_181700-296:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004175622yCTNM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041756768, "hashes": {"sha256": "s2GsHwMMQiwcsL627QicdUJA0H6q6xxyFQe/3BOaNBI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vVNKQP5ICOLeglqDuNANHbXk8QmzrlzF4JwZoMLlsWjxK9OeI7PmOBLXNJ+Um6VHmNBx1MOOD/is7MCT01k+AA"}}, "unsigned": {"age_ts": 1570041756768}} K4l"zHk9(qN?  w F  ~ L  f S. !   . Y ' ` `ZT:r@.21e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA Q1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 A1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg d1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUw1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIU1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 #1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMk1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs 1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM-1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA?1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4%01e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfog1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 51e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 61e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI Q1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 21e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU 1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w 1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcse1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE|0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIw1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0%1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE0e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkn1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z9801e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg.1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM)1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI0e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0y1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQS1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc[1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwU1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg !*T ~  = ; 9 7531/-+UhKOOQ$157004177030bmvvg:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hJOOQ$157004177030bmvvg:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hIOOQ$157004177030bmvvg:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hHOOQ$157004176929ezeJB:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hGOOQ$157004176929ezeJB:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hFOOQ$157004176828ZZJWh:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800~EeeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~DeeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~CeeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800~BeeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~AeeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~@eeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800~?eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~>eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~=eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800~<eeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~;eeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~:eeQ$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~9eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~8eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~7eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800~6eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~5eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~4eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800h3OOQ$157004175925JuKDZ:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h2OOQ$157004175925JuKDZ:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h1OOQ$157004175925JuKDZ:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h0OOQ$157004175824dFhko:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h/OOQ$157004175824dFhko:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h.OOQ$157004175824dFhko:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h-OOQ$157004175723CBKAp:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h,OOQ$157004175723CBKAp:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h+OOQ$157004175723CBKAp:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800 I- } K   Q Y>p 'Yj - _ -'f4l :r@xF~L_S! v D8 _d_21e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 )1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA P1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s$1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 0e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkm1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98/1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg-1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM(1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQR1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 "1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwT1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y 1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM,1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMj1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA>1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsO1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc-1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcC1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00G1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y11e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 j1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI P1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 51e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 421e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w 1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 21e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc <  |t2 l * d \ U ME=5-% eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800 eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800eeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800 _eeQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800+eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800 veeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800 сeeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:88003eeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800IeeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY!rQeYcODvQiLsOIbQrJ:localhost:8800jeeQ$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800WeeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800JeeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800DA333$79:localhost:42455$78:localhost:42455!13:localhost:42455 YeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800&A333$78:localhost:42455$77:localhost:42455!13:localhost:42455 XA333$76:localhost:42455$75:localhost:42455!12:localhost:42455 VeeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800A333$75:localhost:42455$74:localhost:42455!12:localhost:42455 UeeQ$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800eeQ$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800A333$73:localhost:42455$72:localhost:42455!11:localhost:42455 MA333$72:localhost:42455$71:localhost:42455!11:localhost:42455 L 5*H . w < M  9 { >  LQ=[fXBcBQ? !biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibility +^Q']!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800 ,^Q']!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:88004:Q/ !awHAhLuEkavTGACcUW:localhost:8800m.room.join_rules6BQ? !awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibility7:Q/ !bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules BQ? !bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility 6Q' !bjdLCdBwkKaihRIRFG:localhost:8800m.room.create <Q3 !biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels )^Q']!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800 (:Q/ !biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rules *6Q' !biBIcqnGelHvLnpkOu:localhost:8800m.room.create '<Q3 !beBXQofoOfxNBtzsut:localhost:8800m.room.power_levelsY^Q']!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800W:Q/ !beBXQofoOfxNBtzsut:localhost:8800m.room.join_rules]BQ? !beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibility_6Q' !beBXQofoOfxNBtzsut:localhost:8800m.room.createT?Q9 !beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_alias[EQ))!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800a<Q3 !bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels]^Q']!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829`^Q']!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800\:Q/ !bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules^BQ? !bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility_6Q' !bQDOrbAknnQZfUbhgS:localhost:8800m.room.create[<Q3 !bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels ^Q']!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800^Q']!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800 :Q/ !bOSxzttDtclnrWnLov:localhost:8800m.room.join_rules BQ? !bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibility 6Q' !bOSxzttDtclnrWnLov:localhost:8800m.room.create <Q3 !bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.state<Q3 !bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels^Q']!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$^Q']!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800%^Q']!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800:Q/ !bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rulesBQ? !bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility!6Q' !bNSXSTadOMhIrYpMzH:localhost:8800m.room.create<Q3 !bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levels ^Q']!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800 RQ'E!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455 :Q/ !bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules BQ? !bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility 6Q' !bLWyXaXdvUhdSAooUz:localhost:8800m.room.create <Q3 !azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels^Q']!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800:Q/ !azRJNFPIRSFAskLILK:localhost:8800m.room.join_rulesBQ? !azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility<Q3 !azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access6Q' !azRJNFPIRSFAskLILK:localhost:8800m.room.createCQ?!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite98<Q3 !awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels5  _-eQaK$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1454}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos"], "type": "m.room.power_levels", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"users": {"@anon-20191002_181700-296:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041760356, "hashes": {"sha256": "Tizw8l6Yf7325oWVKp5KV8u+C2+yQooqZ4Bki+DjxZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NT36+BFjcS+rbG5tsLk5+DDlMRw8+3cJ37TYWlGf8QtHJiOxnI1chs48w4llHmfKLX0eZ24JEG08rEIiYsAnDA"}}, "unsigned": {"age_ts": 1570041760356, "replaces_state": "$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4"}}=,eQa$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1453}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc"], "type": "m.room.tombstone", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!QFiJrWFFeTAAAUCjCE:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041755151, "hashes": {"sha256": "1F2BME3Z70X8eGzp7suO6d7G4DMl9b9HB1B/vu5wDs4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U0IucH7g0MVjUF54TFDbxR95kr1Fvw2dKdInYCrXVuB6cxJ+m+CnKOGerH4K6tBSfQ4B3vvDVoAq9hsl6xTcDQ"}}, "unsigned": {"age_ts": 1570041755151}}a+OQag $157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1452}{"auth_events": [["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}], ["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "prev_events": [["$157004175824dFhko:localhost:8800", {"sha256": "0ndPhHBAWZElHBro7y4+BW/HrRDmGMOBPZT4S1KTyzU"}]], "type": "m.room.join_rules", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004175925JuKDZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041759069, "hashes": {"sha256": "DN7q5ORR781EuBXzVJbTd5OPjGUzN/l0vtr4g0gdP4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tneip3IJedmbEUSz897vqgDzwTH11FZkedSkr2+bhvfeGtVcRvvAnb6yxqwTWEiwgrIgTDUD75+DDcmcmVzPDw"}}, "unsigned": {"age_ts": 1570041759069}} Fb0 +h6 *o= uC|J  J | >PVj D8 \$ ] P  W % 1LekyFrrI6ojqSmR1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII h1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMQ1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU)1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUG1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ9091e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wA1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ71e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMR1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70h1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3YE1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBov1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo'1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4 1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs >1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y ;1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU B1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4a1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsq1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o~1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag~1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c&1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 ;1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo ;1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls 1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo  v21e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 21e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso vpd1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 321e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0f1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ41e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k   *t1eQau$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1458}{"auth_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA"], "type": "m.room.join_rules", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041764183, "hashes": {"sha256": "w+qqVaWFOf+/wejoGHgLW/wsZ5ITvDE4/VHi/mJn/8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dSVXG+xy/jhjZmEsUy8g8uUVVjifPESsKqYj5Ayx/Nox4gIQx20zcaqf6MDOZW3Fa+dzBKCN34hKepi6SdgKCg"}}, "unsigned": {"age_ts": 1570041764183}}k0eQac$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1457}{"auth_events": ["$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "type": "m.room.power_levels", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"users": {"@anon-20191002_181700-297:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041763533, "hashes": {"sha256": "WxUctF1nWGxcjHs/m1JNHIvTnpZNYWOgEEkDwA2bONM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "No80Z6vCkk1FeBLrk8fHaRyY1jnyu6G3FaNWUg/iEm1ewEWf7EqiL/3bWLWO0cNUwjqki9AKi/YvzVQc5zSkDQ"}}, "unsigned": {"age_ts": 1570041763533}}v/eQay$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1456}{"auth_events": ["$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s"], "prev_events": ["$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s"], "type": "m.room.member", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-297", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-297:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041762869, "hashes": {"sha256": "kQlSq2ZnnsdOOVEyPrnXeeBxQX8Qg9M6r7iKe6jfFeM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DGptyAFX+WNvfv+m8+7EI2ZAMxKWNgMczx7d0YxxoTCTwamZRKIDdfS3c86VAQpbBQUocUv58xeptUAoF0x+Cw"}}, "unsigned": {"age_ts": 1570041762869}}i.eQa_$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1455}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-297:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041762089, "hashes": {"sha256": "myELSE5Xkkw1qMjr9KKsMxwUPnm8wV83bETx7898TPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HaHX+uh2FGpJK035ceketvvQ01Qd1kbGIi1yy0W077SJEaHWuj8NswYV3d5jnXEeMoYmK2UGl1m97u3xqBtuDA"}}, "unsigned": {"age_ts": 1570041762089}} X8 % w L ! u J  s H q y N #:cFoD }RmBk@' { Pi>g<eT)8*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TlJCaYlCkOOVzFDlLx:localhost:8800rr*Q!TlJCaYlCkOOVzFDlLx:localhost:8800qq*Q!TlJCaYlCkOOVzFDlLx:localhost:8800pp*Q!TlJCaYlCkOOVzFDlLx:localhost:8800oo*Q!TlJCaYlCkOOVzFDlLx:localhost:8800nn*Q!TlJCaYlCkOOVzFDlLx:localhost:8800mm*Q!TlJCaYlCkOOVzFDlLx:localhost:8800ll*Q!TlJCaYlCkOOVzFDlLx:localhost:8800kk*Q!TlJCaYlCkOOVzFDlLx:localhost:8800jj*Q!TlJCaYlCkOOVzFDlLx:localhost:8800ii*Q!TlJCaYlCkOOVzFDlLx:localhost:8800hh*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TWETXUgfFZafDdbqLS:localhost:880055*Q!TWETXUgfFZafDdbqLS:localhost:880044*Q!TWETXUgfFZafDdbqLS:localhost:880033*Q!TWETXUgfFZafDdbqLS:localhost:880022*Q!TWETXUgfFZafDdbqLS:localhost:880011*Q!TWETXUgfFZafDdbqLS:localhost:880000*Q!TWETXUgfFZafDdbqLS:localhost:8800//*Q!TWETXUgfFZafDdbqLS:localhost:8800..*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SvKwEALYoNreUvqAlp:localhost:8800vv*Q!SvKwEALYoNreUvqAlp:localhost:8800uu*Q!SvKwEALYoNreUvqAlp:localhost:8800tt*Q!SvKwEALYoNreUvqAlp:localhost:8800ss*Q!SvKwEALYoNreUvqAlp:localhost:8800rr*Q!SvKwEALYoNreUvqAlp:localhost:8800qq*Q!SvKwEALYoNreUvqAlp:localhost:8800pp*Q!SvKwEALYoNreUvqAlp:localhost:8800oo*Q!StEnDjTJToXKXsOHNf:localhost:8829*Q!TcCLuIBUrtFqghDgay:localhost:8800II*Q!TcCLuIBUrtFqghDgay:localhost:8800HH*Q!TcCLuIBUrtFqghDgay:localhost:8800GG*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TcCLuIBUrtFqghDgay:localhost:8800LL*Q!TcCLuIBUrtFqghDgay:localhost:8800KK*Q!TcCLuIBUrtFqghDgay:localhost:8800JJ*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  w 4OQa= $157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1461}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "event_id": "$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg"}, "creator": "@anon-20191002_181700-297:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004176727QjUJj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041767219, "hashes": {"sha256": "BLkzKIy8a8g2dJv0iDpBBtI+MN9+1f1VzJ88mCLm/0A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "neuMSmc3auOCiSLEeaXzJXrUWwEsLjtnMtUNL3qD1X3OQL3n284nrHb3WFXwpJlW9SOWMkl2jgbSrJNEUgyaCQ"}}, "unsigned": {"age_ts": 1570041767219}}p3eQam$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1460}{"auth_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo"], "type": "m.room.power_levels", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@test:xyz": "40", "@anon-20191002_181700-297:localhost:8800": 100}, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041766167, "hashes": {"sha256": "b5OxMeV5NHL4d1BBWT1z0BytTp7MtbMXRIPFFZ0IQb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bHPgtZaIG+gWzSA/IRBMWrpCZpQ12w9EPcg3u3p9kndxE9fIOFFnqHy+O6i12JwjOjtCNtBabL6LyNDGUohqDg"}}, "unsigned": {"age_ts": 1570041766167, "replaces_state": "$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA"}}2eQa$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1459}{"auth_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s"], "type": "m.room.history_visibility", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041764765, "hashes": {"sha256": "zeoSY04xgrHyHiIgExfB/m5qLXZKQl4uTcM+WrA5wXc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ih7eCLL+l4Yn0rjoRxJrOwU+HefDRWSgMiqgJIPG3hUP8N059c6gjDxt0wGGRBE8lP5TbbB4Aq1teNqRotFhCQ"}}, "unsigned": {"age_ts": 1570041764765}} E T p7Tp78 S T  6 p 7R T  qU 8 o6qRo8e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUsha2568e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMsha256 8e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYsha256 J8e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwsha256 08e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIsha2568e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Ysha256 8e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Asha2568e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIsha2568e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMksha256 8e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Nssha256J8e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gsha2567e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHssha256z8e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYsha2568e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1ksha2568e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6Esha2568e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40sha2568e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwsha2568e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtksha2568e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUsha2568e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIsha256x8e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gsha256 8e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qsha256 8e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3Usha256 18e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYcsha256 8e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcsha256]8e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4sha256o8e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3osha256j8e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIsha2568e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0sha2568e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8sha2568e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014sha256 C7e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUsha256K8e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4sha256 "8e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcsha256G8e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEsha256 8e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFYsha2568e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kcsha2568e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUsha256G8e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcsha256P8e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAsha2568e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDAsha2568e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKEsha256!8e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUsha256c8e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zosha2568e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0sha2568e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcsha2568e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXosha2567e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gsha256S8e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQsha256,7e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7kosha25638e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMsha256w8e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0sha256W8e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcsha2568e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzcsha2568e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rksha2568e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhosha2568e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEsha2568e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQsha256=8e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8sha256=8e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEsha256!8e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYsha256@8e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhwsha25678e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4sha2568e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMsha256 &8e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQsha2568e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNosha256v8e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8sha256 8e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynksha256 8e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Esha256  Aa,X# O  } H  t ? k 8  d /[&TKyDp;i4`+Y$4]@anon-20191002_181700-365:localhost:8800m4H4]@anon-20191002_181700-364:localhost:8800m4G4]@anon-20191002_181700-363:localhost:8800m4F4]@anon-20191002_181700-362:localhost:8800m4E4]@anon-20191002_181700-361:localhost:8800m4D4]@anon-20191002_181700-360:localhost:8800m4C2[@anon-20191002_181700-35:localhost:8800m44]@anon-20191002_181700-359:localhost:8800m4B4]@anon-20191002_181700-358:localhost:8800m4A4]@anon-20191002_181700-357:localhost:8800m4@4]@anon-20191002_181700-356:localhost:8800m4?4]@anon-20191002_181700-355:localhost:8800m4>4]@anon-20191002_181700-354:localhost:8800m4=4]@anon-20191002_181700-353:localhost:8800m4<4]@anon-20191002_181700-352:localhost:8800m4;4]@anon-20191002_181700-351:localhost:8800m4:4]@anon-20191002_181700-350:localhost:8800m492[@anon-20191002_181700-34:localhost:8800m44]@anon-20191002_181700-349:localhost:8800m484]@anon-20191002_181700-348:localhost:8800m474]@anon-20191002_181700-347:localhost:8800m464]@anon-20191002_181700-346:localhost:8800m454]@anon-20191002_181700-345:localhost:8800m444]@anon-20191002_181700-343:localhost:8800m434]@anon-20191002_181700-342:localhost:8800m424]@anon-20191002_181700-341:localhost:8800m412[@anon-20191002_181700-33:localhost:8800m44]@anon-20191002_181700-339:localhost:8800m404]@anon-20191002_181700-338:localhost:8800m4/4]@anon-20191002_181700-337:localhost:8800m4.4]@anon-20191002_181700-336:localhost:8800m4-4]@anon-20191002_181700-335:localhost:8800m4,4]@anon-20191002_181700-334:localhost:8800m4+4]@anon-20191002_181700-333:localhost:8800m4*4]@anon-20191002_181700-332:localhost:8800m4)4]@anon-20191002_181700-331:localhost:8800m4(4]@anon-20191002_181700-330:localhost:8800m4'2[@anon-20191002_181700-32:localhost:8800m44]@anon-20191002_181700-329:localhost:8800m4&4]@anon-20191002_181700-328:localhost:8800m4%4]@anon-20191002_181700-327:localhost:8800m4$4]@anon-20191002_181700-326:localhost:8800m4#4]@anon-20191002_181700-325:localhost:8800m4"4]@anon-20191002_181700-324:localhost:8800m4!4]@anon-20191002_181700-323:localhost:8800m4 4]@anon-20191002_181700-322:localhost:8800m44]@anon-20191002_181700-321:localhost:8800m44]@anon-20191002_181700-320:localhost:8800m42[@anon-20191002_181700-31:localhost:8800m44]@anon-20191002_181700-319:localhost:8800m44]@anon-20191002_181700-318:localhost:8800m44]@anon-20191002_181700-317:localhost:8800m44]@anon-20191002_181700-316:localhost:8800m44]@anon-20191002_181700-315:localhost:8800m44]@anon-20191002_181700-314:localhost:8800m44]@anon-20191002_181700-312:localhost:8800m44]@anon-20191002_181700-311:localhost:8800m44]@anon-20191002_181700-310:localhost:8800m44]@anon-20191002_181700-309:localhost:8800m44]@anon-20191002_181700-308:localhost:8800m44]@anon-20191002_181700-307:localhost:8800m44]@anon-20191002_181700-306:localhost:8800m44]@anon-20191002_181700-305:localhost:8800m44]@anon-20191002_181700-304:localhost:8800m44]@anon-20191002_181700-303:localhost:8800m4 >CG K O  S  W  [ _ c$g(k,o0s4w8{<<<]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRWm4<;]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMPm4<:]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFRm4<9]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAIm4<8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYSm4<7]!@anon-20191002_181700-348:localhost:8800KYSIYINERZm4<6]!@anon-20191002_181700-347:localhost:8800CFRSANQZYUm4<5]!@anon-20191002_181700-346:localhost:8800CIUYDTNROPm4<4]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHAm4<3]!@anon-20191002_181700-343:localhost:8800QPHBRHJQMLm4<2]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXPm4<1]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMWm4<0]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOHm4FoqDT)}R  *Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 | *Q!fDISaqNBhlOwherxSt:localhost:8800 { *Q!fDISaqNBhlOwherxSt:localhost:8800 z *Q!fDISaqNBhlOwherxSt:localhost:8800 y *Q!fDISaqNBhlOwherxSt:localhost:8800 x *Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fGkUEndqGrieltwbCh:localhost:8800  M*Q!fGkUEndqGrieltwbCh:localhost:8800  L*Q!fGkUEndqGrieltwbCh:localhost:8800  K*Q!fGkUEndqGrieltwbCh:localhost:8800 J*Q!fGkUEndqGrieltwbCh:localhost:8800 I*Q!fGkUEndqGrieltwbCh:localhost:8800 H*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800"*Q!egbhiBqOGhloZzopol:localhost:8800!*Q!egbhiBqOGhloZzopol:localhost:8800 *Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # _*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " ^*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! ]*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 \*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  [*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  Z*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  Y*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  X*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  W i1 P ` puq'/L O'Q  ]$157004178734ZpFdg:localhost:8800m.room.create!BfEFIDBthhkweqfhir:localhost:8800msms@anon-20191002_181700-298:localhost:8800&Ke3Q ]$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0m.room.power_levels!aaRwQZdNAliyvRHpjs:localhost:8800mnmoY@anon-20191002_181700-298:localhost:8800&Je3Q ] $gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8m.room.guest_access!aaRwQZdNAliyvRHpjs:localhost:8800 mkml@anon-20191002_181700-298:localhost:8800 Ie'Q ] $1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUm.room.avatar!aaRwQZdNAliyvRHpjs:localhost:8800 mhmh@anon-20191002_181700-298:localhost:8800$He/Q ] $6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5Em.room.encryption!aaRwQZdNAliyvRHpjs:localhost:8800 mdme@anon-20191002_181700-298:localhost:8800Ge#Q ] $tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcm.room.name!aaRwQZdNAliyvRHpjs:localhost:8800 mambI@anon-20191002_181700-298:localhost:8800$Fe/Q ] $UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34m.room.server_acl!aaRwQZdNAliyvRHpjs:localhost:8800 m^Lm_ @anon-20191002_181700-298:localhost:8800,Ee?Q ]$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcm.room.history_visibility!aaRwQZdNAliyvRHpjs:localhost:8800m[m\x@anon-20191002_181700-298:localhost:8800(De7Q ]$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8m.room.related_groups!aaRwQZdNAliyvRHpjs:localhost:8800mYmZP@anon-20191002_181700-298:localhost:8800Ce%Q ]$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsm.room.topic!aaRwQZdNAliyvRHpjs:localhost:8800mU?mU@anon-20191002_181700-298:localhost:8800,Be?Q ]$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYm.room.history_visibility!aaRwQZdNAliyvRHpjs:localhost:8800mQ_mS @anon-20191002_181700-298:localhost:8800$Ae/Q ]$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAm.room.join_rules!aaRwQZdNAliyvRHpjs:localhost:8800mNmO@anon-20191002_181700-298:localhost:8800&@e3Q ]$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsm.room.power_levels!aaRwQZdNAliyvRHpjs:localhost:8800mKmL@anon-20191002_181700-298:localhost:8800 ?e'Q ]$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwm.room.member!aaRwQZdNAliyvRHpjs:localhost:8800mHmIL@anon-20191002_181700-298:localhost:8800> e'Q  ]$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkm.room.create!aaRwQZdNAliyvRHpjs:localhost:8800mEmF6@anon-20191002_181700-298:localhost:8800=O3Q ]$157004177433OonrH:localhost:8800m.room.power_levels!ZShBIxwbJmxjjZmoRQ:localhost:8800m@mAz@anon-20191002_181700-297:localhost:8800&<e3Q ]$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAm.room.power_levels!NNiyzThHMivrxhojfp:localhost:8800m=hm>@anon-20191002_181700-297:localhost:8800#;e-Q ]$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgm.room.tombstone!NNiyzThHMivrxhojfp:localhost:8800m$m;@anon-20191002_181700-297:localhost:8800:O/Q ]$157004177232wsJyW:localhost:8800m.room.join_rules!ZShBIxwbJmxjjZmoRQ:localhost:8800m9'm9@anon-20191002_181700-297:localhost:8800!9O?Q ]$157004177131trwoi:localhost:8800m.room.history_visibility!ZShBIxwbJmxjjZmoRQ:localhost:8800m6|m7 @anon-20191002_181700-297:localhost:88008O3Q ]$157004177030bmvvg:localhost:8800m.room.guest_access!ZShBIxwbJmxjjZmoRQ:localhost:8800m3 m3@anon-20191002_181700-297:localhost:88007O3Q ]$157004176929ezeJB:localhost:8800m.room.power_levels!ZShBIxwbJmxjjZmoRQ:localhost:8800m/[m/@anon-20191002_181700-297:localhost:88006O'Q ]$157004176828ZZJWh:localhost:8800m.room.member!ZShBIxwbJmxjjZmoRQ:localhost:8800m)Wm)@anon-20191002_181700-297:localhost:88005 O'Q  ]$157004176727QjUJj:localhost:8800m.room.create!ZShBIxwbJmxjjZmoRQ:localhost:8800m%3m%@anon-20191002_181700-297:localhost:8800 /dz, z , z ! o  d Y Ndo!z!z,,7MKbOL$157004180650ruqIl:localhost:8800sha256M{ȧßX̼ n5?9g:KaOL$157004180549mJBJB:localhost:8800sha256BSM<8O;!jKZm/ܢK`OL$157004180448zlZXD:localhost:8800sha256!Y){ .9;H![ cTgK_OL$157004180347MMmFf:localhost:8800sha256$͒[lbP)}>'O^_K^OL$157004180346TRucp:localhost:8800sha256_M/L)6q_xnHr*V]eL$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIsha256gtKXMسVwDKΣcK\OL$157004180045QtsUE:localhost:8800sha256LH+-tơy%M=K[OL$157004179944JKWNJ:localhost:8800sha256XAfn!oΙv-?ypseV#VZeL$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEsha256Ϡv _6N>ar# A ၱKYOL$157004179843yDrjz:localhost:8800sha256s'.MuFBaH*7zފ;DVXeL$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAsha2565|sg1vZdЧX@KWOL$157004179742OaMxS:localhost:8800sha256 ?tkED5m_Ҧ~VVeL$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Msha256~/7L,hldqLՑ.@;KUOL$157004179541PbBIm:localhost:8800sha256-)۫ L>̥e_VTeL$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAksha256d+1ZW<vZCKϹ@cf(chWn4l`}~VReL$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYsha256|psI)藡3dPy#omKQOL$157004179239LLqht:localhost:8800sha256 ^Wzb?M[B׬KRvVPeL$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQsha256y ڽeILR-7u^a-U?/KOOL$157004179138NbBYh:localhost:8800sha256ӛ]鿛BCG}L$K AKNOL$157004179037FGMFG:localhost:8800sha256T%X"/&0E꬛KMOL$157004178936zuJSX:localhost:8800sha256>ٺR!܉& 9-KLOL$157004178835mLAyG:localhost:8800sha256gR|wma KtSZ%qKKKOL$157004178734ZpFdg:localhost:8800sha256[nQ%eL$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwsha256=e4_,_m"1r*6P,V=eL$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikksha256ڿ`zb%LBU^K6OL$157004176929ezeJB:localhost:8800sha256U%L~>M{ KhQUfy>%(K5OL$157004176828ZZJWh:localhost:8800sha256hsDo6jAފKW/nW$DK4OL$157004176727QjUJj:localhost:8800sha256Gf[<gm!D !hm g gh7OQau $157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1464}{"auth_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}], ["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}]], "prev_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}]], "type": "m.room.guest_access", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004177030bmvvg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041770761, "hashes": {"sha256": "9xQhtZ6Mbck3NWUdXDTKW8w+b6rOZNYT7/trGv+/PIg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "evwwkKDf2hi0N2R7515mIMSb/DYh3Amltxwbe7zrVmKJ4ocrDG/3zv+BBYIA62yNtEfkaZ/FsXoOwlwWA9M2Cw"}}, "unsigned": {"age_ts": 1570041770761}}&6OQaq $157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1463}{"auth_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "type": "m.room.power_levels", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"users": {"@anon-20191002_181700-297:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004176929ezeJB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041769819, "hashes": {"sha256": "75qV7P/VtDfDe9mpLLNxT4mX9faCOHPItzKEb88EwJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mx670gPP2wLt3IilHT7X2qzJMIaUQkgblGCuQV8NtD7nQzMgZfUj3jlIzAcFoP0pdp0I3l/LuA4mGpeEoj/EDQ"}}, "unsigned": {"age_ts": 1570041769819}}5OQa# $157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1462}{"auth_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}]], "prev_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}]], "type": "m.room.member", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-297", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-297:localhost:8800", "event_id": "$157004176828ZZJWh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041768279, "hashes": {"sha256": "3iqr2Pt9G7a+njSbi7zy3rm9XGkIDsNxY6e/gfRXHK4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HxCFZD2vkibWJcxeyPiO560TJnFUn+1G0rojGSpVqEajf4ic9vpuLu2ivu7nfdGr26PY5gCvcMTeK7cVXV3ZCw"}}, "unsigned": {"age_ts": 1570041768279}} GV)  O"n\/vIc6 D  n A  @ ` 3 | O " ] 0   {k>j= S &mw  q,Q!bNSXSTadOMhIrYpMzH:localhost:88007,Q!bNSXSTadOMhIrYpMzH:localhost:88000,Q!bNSXSTadOMhIrYpMzH:localhost:8800*,Q!bNSXSTadOMhIrYpMzH:localhost:8800",Q!bNSXSTadOMhIrYpMzH:localhost:8800xx,Q!bNSXSTadOMhIrYpMzH:localhost:8800ww,Q!bNSXSTadOMhIrYpMzH:localhost:8800vv,Q!bNSXSTadOMhIrYpMzH:localhost:8800uu,Q!bNSXSTadOMhIrYpMzH:localhost:8800tt+Q !bNSXSTadOMhIrYpMzH:localhost:8800ss,Q!bNSXSTadOMhIrYpMzH:localhost:88008,Q!bNSXSTadOMhIrYpMzH:localhost:88005,Q!bNSXSTadOMhIrYpMzH:localhost:88001,Q!bNSXSTadOMhIrYpMzH:localhost:8800+,Q!bNSXSTadOMhIrYpMzH:localhost:8800 }},Q!bNSXSTadOMhIrYpMzH:localhost:8800 ||,Q!bNSXSTadOMhIrYpMzH:localhost:8800 {{,Q!bNSXSTadOMhIrYpMzH:localhost:8800zz,Q!bNSXSTadOMhIrYpMzH:localhost:8800yy,Q!bOSxzttDtclnrWnLov:localhost:8800bb,Q!bOSxzttDtclnrWnLov:localhost:8800aa,Q!bOSxzttDtclnrWnLov:localhost:8800``+Q !bOSxzttDtclnrWnLov:localhost:8800__+,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ~~,Q!bNSXSTadOMhIrYpMzH:localhost:8800=q,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) ),Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( (+Q !bLWyXaXdvUhdSAooUz:localhost:8800 ' ',Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800#,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bLWyXaXdvUhdSAooUz:localhost:8800 * *,Q!bNSXSTadOMhIrYpMzH:localhost:8800h,Q!bLWyXaXdvUhdSAooUz:localhost:8800 , ,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 + +,Q!bNSXSTadOMhIrYpMzH:localhost:8800%,Q!bNSXSTadOMhIrYpMzH:localhost:8800$,Q!bNSXSTadOMhIrYpMzH:localhost:8800!,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800),Q!bNSXSTadOMhIrYpMzH:localhost:8800(,Q!bNSXSTadOMhIrYpMzH:localhost:8800',Q!bNSXSTadOMhIrYpMzH:localhost:8800&,Q!bNSXSTadOMhIrYpMzH:localhost:8800/,Q!bNSXSTadOMhIrYpMzH:localhost:8800.,Q!bNSXSTadOMhIrYpMzH:localhost:8800-,Q!bNSXSTadOMhIrYpMzH:localhost:8800,,Q!bNSXSTadOMhIrYpMzH:localhost:88004,Q!bNSXSTadOMhIrYpMzH:localhost:88003,Q!bNSXSTadOMhIrYpMzH:localhost:88002,Q!bNSXSTadOMhIrYpMzH:localhost:88006,Q!bNSXSTadOMhIrYpMzH:localhost:8800:,Q!bNSXSTadOMhIrYpMzH:localhost:88009,Q!bNSXSTadOMhIrYpMzH:localhost:8800;,Q!bNSXSTadOMhIrYpMzH:localhost:8800< GV)  O"n\/vIc6 D  n A  @ ` 3 | O " ] 0   {k>j= S &mw  q,Q!bNSXSTadOMhIrYpMzH:localhost:88007,Q!bNSXSTadOMhIrYpMzH:localhost:88000,Q!bNSXSTadOMhIrYpMzH:localhost:8800*,Q!bNSXSTadOMhIrYpMzH:localhost:8800",Q!bNSXSTadOMhIrYpMzH:localhost:8800xx,Q!bNSXSTadOMhIrYpMzH:localhost:8800ww,Q!bNSXSTadOMhIrYpMzH:localhost:8800vv,Q!bNSXSTadOMhIrYpMzH:localhost:8800uu,Q!bNSXSTadOMhIrYpMzH:localhost:8800tt+Q !bNSXSTadOMhIrYpMzH:localhost:8800ss,Q!bNSXSTadOMhIrYpMzH:localhost:88008,Q!bNSXSTadOMhIrYpMzH:localhost:88005,Q!bNSXSTadOMhIrYpMzH:localhost:88001,Q!bNSXSTadOMhIrYpMzH:localhost:8800+,Q!bNSXSTadOMhIrYpMzH:localhost:8800 }},Q!bNSXSTadOMhIrYpMzH:localhost:8800 ||,Q!bNSXSTadOMhIrYpMzH:localhost:8800 {{,Q!bNSXSTadOMhIrYpMzH:localhost:8800zz,Q!bNSXSTadOMhIrYpMzH:localhost:8800yy,Q!bOSxzttDtclnrWnLov:localhost:8800bb,Q!bOSxzttDtclnrWnLov:localhost:8800aa,Q!bOSxzttDtclnrWnLov:localhost:8800``+Q !bOSxzttDtclnrWnLov:localhost:8800__+,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ~~,Q!bNSXSTadOMhIrYpMzH:localhost:8800=q,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) ),Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( (+Q !bLWyXaXdvUhdSAooUz:localhost:8800 ' ',Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800#,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bLWyXaXdvUhdSAooUz:localhost:8800 * *,Q!bNSXSTadOMhIrYpMzH:localhost:8800h,Q!bLWyXaXdvUhdSAooUz:localhost:8800 , ,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 + +,Q!bNSXSTadOMhIrYpMzH:localhost:8800%,Q!bNSXSTadOMhIrYpMzH:localhost:8800$,Q!bNSXSTadOMhIrYpMzH:localhost:8800!,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800),Q!bNSXSTadOMhIrYpMzH:localhost:8800(,Q!bNSXSTadOMhIrYpMzH:localhost:8800',Q!bNSXSTadOMhIrYpMzH:localhost:8800&,Q!bNSXSTadOMhIrYpMzH:localhost:8800/,Q!bNSXSTadOMhIrYpMzH:localhost:8800.,Q!bNSXSTadOMhIrYpMzH:localhost:8800-,Q!bNSXSTadOMhIrYpMzH:localhost:8800,,Q!bNSXSTadOMhIrYpMzH:localhost:88004,Q!bNSXSTadOMhIrYpMzH:localhost:88003,Q!bNSXSTadOMhIrYpMzH:localhost:88002,Q!bNSXSTadOMhIrYpMzH:localhost:88006,Q!bNSXSTadOMhIrYpMzH:localhost:8800:,Q!bNSXSTadOMhIrYpMzH:localhost:88009,Q!bNSXSTadOMhIrYpMzH:localhost:8800;,Q!bNSXSTadOMhIrYpMzH:localhost:8800< &Z:m x 0 ]  Iw GbBR ]ZWmQ% Oi!BfEFIDBthhkweqfhir:localhost:8800m.room.topic$157004180045QtsUE:localhost:8800\lQ/ Oh!BfEFIDBthhkweqfhir:localhost:8800m.room.server_acl$157004179944JKWNJ:localhost:8800rkQ'+eg!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE`jQ7 Of!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groups$157004179843yDrjz:localhost:8800oiQ? ee!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibility$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAVhQ# Od!BfEFIDBthhkweqfhir:localhost:8800m.room.name$157004179742OaMxS:localhost:8800ggQ/ ec!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rules$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M\fQ/ Ob!BfEFIDBthhkweqfhir:localhost:8800m.room.join_rules$157004179541PbBIm:localhost:8800ieQ3 ea!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkddQ? O`!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility$157004179340NSiie:localhost:8800 cQ']e_!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY^bQ3 O^!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_access$157004179239LLqht:localhost:8800caQ' e]!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.create$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ\`Q/ O\!BfEFIDBthhkweqfhir:localhost:8800m.room.encryption$157004179138NbBYh:localhost:8800X_Q' O[!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar$157004179037FGMFG:localhost:8800^^Q3 OZ!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004178936zuJSX:localhost:8800]Q']OY!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$157004178835mLAyG:localhost:8800X\Q' OX!BfEFIDBthhkweqfhir:localhost:8800m.room.create$157004178734ZpFdg:localhost:8800f[Q- eW!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstone$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIiZQ3 eV!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0iYQ3 eU!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8cXQ' eT!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatar$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUgWQ/ eS!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5EaVQ# eR!aaRwQZdNAliyvRHpjs:localhost:8800m.room.name$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcgUQ/ eQ!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rules$lbKDrQg_NEOhhWS7oUP1k25ycOmumS9X0BHOVdC--rQgTQ/ eP!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_acl$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34oSQ? eO!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvckRQ7 eN!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8bQQ% eM!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topic$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsoPQ? eL!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYgOQ/ eK!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rules$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAiNQ3 eJ!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs MQ']eI!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwcLQ' eH!aaRwQZdNAliyvRHpjs:localhost:8800m.room.create$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk^KQ3 OG!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels$157004177433OonrH:localhost:8800iJQ3 eF!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA\IQ/ OE!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rules$157004177232wsJyW:localhost:8800dHQ? OD!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility$157004177131trwoi:localhost:8800 d %d=:eQa$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1467}{"auth_events": ["$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY"], "type": "m.room.tombstone", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!ZShBIxwbJmxjjZmoRQ:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041767132, "hashes": {"sha256": "FytEwhC8psy6f/DC1lTbrVkAxDdj+OYld3gjRlR58/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hHkt3X4BjL+uBnjnA59IGC3HDiCX1G6k1rWbF77jLQ1vzEMlp2W2H2REPOEOwFvsmPpH++OD4OVOvS7+qwD7Dw"}}, "unsigned": {"age_ts": 1570041767132}}a9OQag $157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1466}{"auth_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}], ["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004177131trwoi:localhost:8800", {"sha256": "dpVW/OCyB7t1t29BgiF497FmUl3UTOEWIaLW+OghvJI"}]], "type": "m.room.join_rules", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004177232wsJyW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041772327, "hashes": {"sha256": "/no3EoFuKMJ+wBkzloKRCx/2i3hhh/HY9XSJDsuZxgE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eUJIZnkLaDr5OIrKkrEyEzOolBYRRF88GTLdD5NhilExJ+J89PElfFU7B/K0SdqlGUAnX37Xow5Ezh79MSNRAg"}}, "unsigned": {"age_ts": 1570041772327}}r8OQa $157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1465}{"auth_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}], ["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004177030bmvvg:localhost:8800", {"sha256": "CQJCMIrDDzvOHmJ4sz56DmIljZWWrO6KTKhCVQESXo8"}]], "type": "m.room.history_visibility", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004177131trwoi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041771644, "hashes": {"sha256": "sXlrSRY4pWQFjdPEr6yW/bIvPLVUCED84GJ1qsfjuaU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VfQUbA1Mo6jyxFU0ibJSvh1H5cm4Hy6T3HWx4795kvQClMfBJlaHeFN+dgCBzrHpq18oK+fGRY++uWH2nGKwAA"}}, "unsigned": {"age_ts": 1570041771644}} *T ~ | z x 7531/-+)'~keeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~jeeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~ieeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~heeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~geeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~feeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~eeeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~deeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~ceeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~beeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~aeeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~`eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~_eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~^eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~]eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~\eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~[eeQ$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800hZOOQ$157004177433OonrH:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hYOOQ$157004177433OonrH:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hXOOQ$157004177433OonrH:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800~WeeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~VeeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~UeeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800~TeeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~SeeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~ReeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800hQOOQ$157004177232wsJyW:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hPOOQ$157004177232wsJyW:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hOOOQ$157004177232wsJyW:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hNOOQ$157004177131trwoi:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hMOOQ$157004177131trwoi:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hLOOQ$157004177131trwoi:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 G 4Gi=eQa_$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1470}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-298:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041775589, "hashes": {"sha256": "CpP9ibsuB0/T4YAZIJ055OLu1zgTK7LkVy6AaQ72kW4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rPraqZ+WqBrbP44LBvLX1h0YHEezs2WIe9LaDpWEeB0QEhL2iiRa0KSWfD7mPkHj8iVFDfdAumlGKMQ9p1AICg"}}, "unsigned": {"age_ts": 1570041775589}}R<OQaI $157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1469}{"auth_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}], ["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004177232wsJyW:localhost:8800", {"sha256": "u0Ig920oGOlGT3FQ4t0cVHu8w8xZAoLouvGD/3Z98Zc"}]], "type": "m.room.power_levels", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@test:xyz": "40", "@anon-20191002_181700-297:localhost:8800": 100}, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004177433OonrH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041774267, "hashes": {"sha256": "Z/Y7jQtnZt+8CZhelcMxQK6NBANsskFFTbJzbdzBHSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1OlLVdlkN+nZxbNq4pUnzYFMhzzqBeIARBTb7c3StmsKcy+8hxaU1Cf6n+KQxnfG/9Zcc3PKdyhuK+THL4LVBg"}}, "unsigned": {"age_ts": 1570041774267, "replaces_state": "$157004176929ezeJB:localhost:8800"}}r;eQaq$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1468}{"auth_events": ["$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg"], "type": "m.room.power_levels", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 50, "kick": 50, "users": {"@test:xyz": "40", "@anon-20191002_181700-297:localhost:8800": 100}, "ban": 50, "invite": 50, "redact": 50, "users_default": 0}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041773416, "hashes": {"sha256": "VOt60ZtpWkSyCMevW1OBBpjQgLODsHnS2tep7HRmZ8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dvhPq8KCICLT/I3E8aNJ17hpHm8Bs4t42mO4nOkk3YwjRcbE2f0XeFlho9+tg4q2QVcuITC02mxK3whDqX/dAg"}}, "unsigned": {"age_ts": 1570041773416, "replaces_state": "$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY"}} g * T~=gg?]!cH@anon-20191002_181700-308:localhost:8800VRKBCOUWEFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgog>]!cG@anon-20191002_181700-307:localhost:8800BEZNVUIADUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgog=]!cF@anon-20191002_181700-306:localhost:8800XZDIPYWWODMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwog<]!cE@anon-20191002_181700-305:localhost:8800PDQTBQSPGXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQog;]!cD@anon-20191002_181700-304:localhost:8800MQWNAFYDXKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1Owog:]!cC@anon-20191002_181700-303:localhost:8800FUOYNGGDMQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAog9]!cB@anon-20191002_181700-302:localhost:8800PAWIWMHYHHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQog8]!cA@anon-20191002_181700-301:localhost:8800SJPGITTBTXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwog7]!c@@anon-20191002_181700-300:localhost:8800ZZJIQPLATKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0Qog6]!c?@anon-20191002_181700-299:localhost:8800BPDORAMNSEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQog5]!c>@anon-20191002_181700-298:localhost:8800GTROHDSCGVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4Qo  AeQa$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1474}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA"], "type": "m.room.history_visibility", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041778527, "hashes": {"sha256": "B52+QntYrbUsvFkCIqCZMXoY1CJpe94NO/OvaqHqfJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KN+nfDjkgVsoWQuK2ZGhMOI9w8+noNyaI+g88DcC6ulj/qmoNhLN9Lcm+ji/QwZ2cdUz86rxdbzHpgskEJIQCQ"}}, "unsigned": {"age_ts": 1570041778527}}t@eQau$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1473}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs"], "type": "m.room.join_rules", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041777876, "hashes": {"sha256": "qcrQAphCuyD42jJ3Vwcpj1iICERAxsMgSh8VqAJi/4w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TwEzfauUcQIZJ5pcTmXNCrlH8vkQvrl/vjl7iAVDeuJKJigYGkQ3IdH6aP7uiErX1f7NEtOTVKL6LQOSy0wwAg"}}, "unsigned": {"age_ts": 1570041777876}}k?eQac$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1472}{"auth_events": ["$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "type": "m.room.power_levels", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"users": {"@anon-20191002_181700-298:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041777051, "hashes": {"sha256": "9jLbzC315oJJFZ0jpSzLB8SY7iGAWoy6U6iGCiJL7K8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmDS3oRicfO2ygF7pipS4D6Yin3HqBgdPDIp6n656P3/8IiMfjhbL5SF6v57vU4p5jnhArMQGqfWvmzBotd/AA"}}, "unsigned": {"age_ts": 1570041777051}}v>eQay$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1471}{"auth_events": ["$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk"], "prev_events": ["$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk"], "type": "m.room.member", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-298", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-298:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041776354, "hashes": {"sha256": "vr7hZoM31X4ue/BdBbPhSBFGQseBwWcr4pGfNmUG3cY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xTkOHs35Ob1LwcyqFA34ggVXQ01EkFZOjJOcngxjE+iYFnFJwkPDygnql2L/yr8IrM7ncc7fplkWZOnAAR57BA"}}, "unsigned": {"age_ts": 1570041776354}} $|p% P E u   &h?GzBhCc|_8Q3 O!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels$157004180549mJBJB:localhost:88007Q']O!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$157004180448zlZXD:localhost:8800Y6Q' O!WhqVaRReBxJXADAyYD:localhost:8800m.room.create$157004180347MMmFf:localhost:88005Q3 OO!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004180346TRucp:localhost:8800$157004178936zuJSX:localhost:8800g4Q- e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstone$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIX3Q% O!BfEFIDBthhkweqfhir:localhost:8800m.room.topic$157004180045QtsUE:localhost:8800]2Q/ O!BfEFIDBthhkweqfhir:localhost:8800m.room.server_acl$157004179944JKWNJ:localhost:8800s1Q'+e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEa0Q7 O!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groups$157004179843yDrjz:localhost:8800p/Q? e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibility$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAW.Q# O!BfEFIDBthhkweqfhir:localhost:8800m.room.name$157004179742OaMxS:localhost:8800h-Q/ e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rules$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M],Q/ O!BfEFIDBthhkweqfhir:localhost:8800m.room.join_rules$157004179541PbBIm:localhost:8800j+Q3 e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAke*Q? O!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility$157004179340NSiie:localhost:8800 )Q']e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY_(Q3 O!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_access$157004179239LLqht:localhost:8800d'Q' e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.create$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ]&Q/ O!BfEFIDBthhkweqfhir:localhost:8800m.room.encryption$157004179138NbBYh:localhost:8800Y%Q' O!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar$157004179037FGMFG:localhost:8800_$Q3 O!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004178936zuJSX:localhost:8800#Q']O!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$157004178835mLAyG:localhost:8800Y"Q' O!BfEFIDBthhkweqfhir:localhost:8800m.room.create$157004178734ZpFdg:localhost:8800!Q3 ee!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsj Q3 e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8dQ' e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatar$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUhQ/ e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5EbQ# e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.name$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWchQ/ e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_acl$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34Q? ee!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYlQ7 e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8cQ% e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topic$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOspQ? e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYhQ/ e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rules$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAjQ3 e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs Q']e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw LT"ZB  v P  p>  V $( \ *b0h6 J  n<tzH8N D | 1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ER1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8P1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8O1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8N1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoK1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg \1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg [1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAS1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAR1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAQ1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo 1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo 1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo 1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ES1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ET1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw 11e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw 01e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw /1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAZ1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAY1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwD1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ 1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ 1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ 1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90 1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90 1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU 1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU 1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M 1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA j01e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0K1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0J1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0I1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoq1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMR1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMQ1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMP1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg|1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYl1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg~1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg}1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0+1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0*1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0)1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0(21e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYn1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYm !~z v r n j | 8J\n&8`i4OOQ$157004180650ruqIl:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i3OOQ$157004180549mJBJB:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i2OOQ$157004180448zlZXD:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i1OOQ$157004180346TRucp:localhost:8800$157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:88000eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800i/OOQ$157004180045QtsUE:localhost:8800$157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i.OOQ$157004179944JKWNJ:localhost:8800$157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800-eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800i,OOQ$157004179843yDrjz:localhost:8800$157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800+eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800i*OOQ$157004179742OaMxS:localhost:8800$157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800)eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800i(OOQ$157004179541PbBIm:localhost:8800$157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800'eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800i&OOQ$157004179340NSiie:localhost:8800$157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800%eeQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800i$OOQ$157004179239LLqht:localhost:8800$157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i#OOQ$157004179138NbBYh:localhost:8800$157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i"OOQ$157004179037FGMFG:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i!OOQ$157004178936zuJSX:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i OOQ$157004178835mLAyG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800  </EeQak$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1478}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc"], "type": "m.room.server_acl", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"allow": ["*"], "deny": ["*.evil.com", "evil.com"], "allow_ip_literals": "false"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041781836, "hashes": {"sha256": "k6I4bjkTzjDNCxsdNQcPkT6mmMC07e2iOd4X7UzdrpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eYbcS4TgLW9mk3vir2qp67IVVWjE5yJ0nA3KiqBoLye6C/w/PEWst7EI4pFwr9QpCMIz074udHwdpfA2sPDdCw"}}, "unsigned": {"age_ts": 1570041781836}}GDeQa$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1477}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8"], "type": "m.room.history_visibility", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041781152, "hashes": {"sha256": "X1SvehJzZikju0b5QmbbAaZAH6Th12Izfkc2Y7BAWy0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OjWPoA0pQNp3ht8pfe9B9j6EugL9idhUsooIaBmIMylBCLO/heM7VJNqi8ldyH3B+Jhg6sWkwsRccfo52522Aw"}}, "unsigned": {"age_ts": 1570041781152, "replaces_state": "$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY"}}CeQa$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1476}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs"], "type": "m.room.related_groups", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"groups": ["+something:example.org"]}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041780630, "hashes": {"sha256": "LP6ZAe6eJR66LtKXK+YGLe/N2ouDzLJ3nzjUVFif1sU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TawQ8yASlRz30z8ItkJVF4TB5uZfuZJC8HGthxG6fi6BK5TYHlcPsmO5NNqfnjCsyv6uBlH1zR2xsK9nKb2sCQ"}}, "unsigned": {"age_ts": 1570041780630}}jBeQaa$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1475}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY"], "type": "m.room.topic", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"topic": "topic"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041779519, "hashes": {"sha256": "1Q/BwPLy2usKka9tcrfsBt48VkRdkj/saS261QTFI5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T89YaGvS13E4ic5X024llChGD1aYjs8nnYkyJD6GQzUBVA/Lnl74NAtKssQFBzZ6cd2ThMZnpM9aMO0O3YG0BQ"}}, "unsigned": {"age_ts": 1570041779519}} 1lRM H Y u  { / 5FW]y-IOJPlIQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181958ixShg:localhost:8800I~QO~!NrxQuziwSWzsHuXIlG:localhost:8800$157004181857fcmAB:localhost:8800I}QO}!NrxQuziwSWzsHuXIlG:localhost:8800$157004181756ejZNp:localhost:8800I|QO|!NrxQuziwSWzsHuXIlG:localhost:8800$157004181655JUAvO:localhost:8800T{Qe{!CNFopUEQTFbzjmLvii:localhost:8800$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzATzQez!CNFopUEQTFbzjmLvii:localhost:8800$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkTyQey!CNFopUEQTFbzjmLvii:localhost:8800$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUTxQex!CNFopUEQTFbzjmLvii:localhost:8800$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcTwQew!CNFopUEQTFbzjmLvii:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AoIvQOv!WhqVaRReBxJXADAyYD:localhost:8800$157004181254abDEV:localhost:8800TuQeu!CNFopUEQTFbzjmLvii:localhost:8800$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wTtQet!aLxrqpqLkbzyIxGgpk:localhost:8800$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQIsQOs!WhqVaRReBxJXADAyYD:localhost:8800$157004180853KmrHT:localhost:8800IrQOr!WhqVaRReBxJXADAyYD:localhost:8800$157004180752YHMqi:localhost:8800IqQOq!WhqVaRReBxJXADAyYD:localhost:8800$157004180751hMlwg:localhost:8800IpQOp!WhqVaRReBxJXADAyYD:localhost:8800$157004180650ruqIl:localhost:8800IoQOo!WhqVaRReBxJXADAyYD:localhost:8800$157004180549mJBJB:localhost:8800InQOn!WhqVaRReBxJXADAyYD:localhost:8800$157004180448zlZXD:localhost:8800ImQOm!WhqVaRReBxJXADAyYD:localhost:8800$157004180347MMmFf:localhost:8800IlQOl!BfEFIDBthhkweqfhir:localhost:8800$157004180346TRucp:localhost:8800TkQek!aLxrqpqLkbzyIxGgpk:localhost:8800$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwTjQej!aaRwQZdNAliyvRHpjs:localhost:8800$Gn7wtV0iWwMPsZPtWJtusSChoJvnWZRBzM4A_qmzY30IiQOi!BfEFIDBthhkweqfhir:localhost:8800$157004180045QtsUE:localhost:8800IhQOh!BfEFIDBthhkweqfhir:localhost:8800$157004179944JKWNJ:localhost:8800TgQeg!aLxrqpqLkbzyIxGgpk:localhost:8800$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEIfQOf!BfEFIDBthhkweqfhir:localhost:8800$157004179843yDrjz:localhost:8800TeQee!aLxrqpqLkbzyIxGgpk:localhost:8800$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAIdQOd!BfEFIDBthhkweqfhir:localhost:8800$157004179742OaMxS:localhost:8800TcQec!aLxrqpqLkbzyIxGgpk:localhost:8800$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597MIbQOb!BfEFIDBthhkweqfhir:localhost:8800$157004179541PbBIm:localhost:8800TaQea!aLxrqpqLkbzyIxGgpk:localhost:8800$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkI`QO`!BfEFIDBthhkweqfhir:localhost:8800$157004179340NSiie:localhost:8800T_Qe_!aLxrqpqLkbzyIxGgpk:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYI^QO^!BfEFIDBthhkweqfhir:localhost:8800$157004179239LLqht:localhost:8800T]Qe]!aLxrqpqLkbzyIxGgpk:localhost:8800$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQI\QO\!BfEFIDBthhkweqfhir:localhost:8800$157004179138NbBYh:localhost:8800I[QO[!BfEFIDBthhkweqfhir:localhost:8800$157004179037FGMFG:localhost:8800IZQOZ!BfEFIDBthhkweqfhir:localhost:8800$157004178936zuJSX:localhost:8800IYQOY!BfEFIDBthhkweqfhir:localhost:8800$157004178835mLAyG:localhost:8800IXQOX!BfEFIDBthhkweqfhir:localhost:8800$157004178734ZpFdg:localhost:8800TWQeW!aaRwQZdNAliyvRHpjs:localhost:8800$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIITVQeV!aaRwQZdNAliyvRHpjs:localhost:8800$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0TUQeU!aaRwQZdNAliyvRHpjs:localhost:8800$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8TTQeT!aaRwQZdNAliyvRHpjs:localhost:8800$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUTSQeS!aaRwQZdNAliyvRHpjs:localhost:8800$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5ETRQeR!aaRwQZdNAliyvRHpjs:localhost:8800$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcTQQeQ!aaRwQZdNAliyvRHpjs:localhost:8800$lbKDrQg_NEOhhWS7oUP1k25ycOmumS9X0BHOVdC--rQTPQeP!aaRwQZdNAliyvRHpjs:localhost:8800$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34TOQeO!aaRwQZdNAliyvRHpjs:localhost:8800$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc !}} { y w u sqom,V?i}h OOQ$157004179340NSiie:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~ eeQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800h OOQ$157004179239LLqht:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h OOQ$157004179239LLqht:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179239LLqht:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179138NbBYh:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179138NbBYh:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179138NbBYh:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179037FGMFG:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179037FGMFG:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179037FGMFG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004178936zuJSX:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004178936zuJSX:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004178835mLAyG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~~eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~}eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~|eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~{eeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~zeeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~yeeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~xeeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~weeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~veeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~ueeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~teeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~seeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~reeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~qeeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~peeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~oeeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~neeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~meeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~leeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800 Hb0h6npH T" NjZ<  P  z8 V $ \ *(>tB v D  |21e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEg1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok%1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0A1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0@1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0?1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ@1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ?1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ>1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig 1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig 1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY-1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY,1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY+1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYq1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYp1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYo1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgK1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgJ1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgI1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k'1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k&1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k%1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw H1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw G1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw Fd1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g 1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc 1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs 1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig d1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk 1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk 1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEf1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEe2  }IeQa$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1482}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU"], "type": "m.room.guest_access", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"guest_access": "forbidden"}, "depth": 13, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041785270, "hashes": {"sha256": "XiziyfE9fTwiATAPaZPJp349r5KY2DLO+x8HJfKqeZE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F2H5k1rlLawzr6WvtjHawtd0szdmLA5p3iC+9LGKMag1S6Y8lWJzHqhsTBXESF1THFnwwd766ECHnOsyo3pjDQ"}}, "unsigned": {"age_ts": 1570041785270}}uHeQaw$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1481}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E"], "type": "m.room.avatar", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"url": "http://something"}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041784327, "hashes": {"sha256": "sZhYhiVMbnTJt4NsEf8KH/O1zHgr6e4aGS2wILli3CA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RHTD6nnuHqt51daDGI3hZnsqJfnju7qP+MH59zPDQqWc12iEy3Ajr/YTSPhXvujFQreMaVZ9yg+feLXrww5kCQ"}}, "unsigned": {"age_ts": 1570041784327}}GeQa$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1480}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc"], "type": "m.room.encryption", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"algorithm": "m.megolm.v1.aes-sha2"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041783486, "hashes": {"sha256": "9/dRO7OmId4YKMI7qRGZLTs/g1Rk0oEnw92mhWtm01g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vrMjBcQNahXYU9Pos+AvdoRgz/WntX4kMla3Id8xdCpT7xXYQ0CLeEV/EOgw8FqSVW8E0ngQ+jnIUfq1RSjvAg"}}, "unsigned": {"age_ts": 1570041783486}}hFeQa]$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1479}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34"], "type": "m.room.name", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"name": "name"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041782759, "hashes": {"sha256": "JfN03lGtTpTwhiFg8ejYC8vCz8hsgEmY+W1L/mg1qf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UBQF5RpeBhkLvF0IRKTdNVzOEkZ91bkSU/1sB1Zdi0ePVrqkMYXV1d+oQqPa6Ch6K5lW4GVAS0R9GLVx2Y0zBQ"}}, "unsigned": {"age_ts": 1570041782759}} 'X4` ' q ! R 6e=w>zN!XVFOQ' $157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.createmEeQ? $yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibilityeDeQ/ $rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rulesgCeQ3 $m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels BeQ']$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800aAeQ' $XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800m.room.createg@eQ3 $pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsd?eQ- $IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstonee>OQ'+$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.orgZ=OQ/ $157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rulesb<OQ? $157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility\;OQ3 $157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access\:OQ3 $157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels~9OQ']$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800V8OQ' $157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.create\7OQ3 $157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levelsd6eQ- $sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstoneU5OQ% $157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.topicZ4OQ/ $157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.server_aclp3eQ'+$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org^2OQ7 $157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groupsm1eQ? $4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibilityT0OQ# $157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.namee/eQ/ $u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rulesZ.OQ/ $157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.join_rulesg-eQ3 $ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsb,OQ? $157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility +eQ']$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800\*OQ3 $157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_accessa)eQ' $eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.createZ(OQ/ $157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.encryptionV'OQ' $157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar\&OQ3 $157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels~%OQ']$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800V$OQ' $157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.createg#eQ3 $Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levelsg"eQ3 $gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_accessa!eQ' $1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatare eQ/ $6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption 1?| X  >  { D  g  Q z@ ,Y?Kh+vvvvvv`%~BQ? !hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibility<Q3 !hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_access6Q' !hgjYwwwjWJNgwrzOto:localhost:8800m.room.create:Q/ !ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rulesBQ? !ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibility6Q' !ijOiudvuzOLNmgNKfG:localhost:8800m.room.create<Q3 !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels`^Q']!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800_HQ'1!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800e:Q/ !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rulesaBQ? !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilityd<Q3 !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_accessc6Q' !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.create^<Q3 !icheSPMgpemswIdQkw:localhost:8800m.room.power_levels^Q']!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800:Q/ !icheSPMgpemswIdQkw:localhost:8800m.room.join_rulesBQ? !icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility<Q3 !icheSPMgpemswIdQkw:localhost:8800m.room.guest_access6Q' !icheSPMgpemswIdQkw:localhost:8800m.room.create<Q3 !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels^Q']!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800^Q']!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800:Q/ !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rulesBQ? !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibility6Q' !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.create9Q- !iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone<Q3 !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels^Q']!iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800:Q/ !iLHJbsFszubrnybDNz:localhost:8800m.room.join_rulesBQ? !iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibility6Q' !iLHJbsFszubrnybDNz:localhost:8800m.room.create<Q3 !iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels^Q']!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829^Q']!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800:Q/ !iKezIvJyjkNqKayFju:localhost:8800m.room.join_rulesBQ? !iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibility6Q' !iKezIvJyjkNqKayFju:localhost:8800m.room.create?Q9 !iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_aliasEQ))!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800<Q3 !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels^Q']!hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800:Q/ !hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rulesBQ? !hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility<Q3 !hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access6Q' !hrhDJbmXvXBizKoiiK:localhost:8800m.room.createQ<Q3 !hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels^Q']!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800HQ'1!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800:Q/ !hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rules &t  l. d \  T LE=eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800 deeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800 NeeQ$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800 KeeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800 -eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:88004eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800 WeeQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800 #eeQ$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800 q|eeQ$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800ցeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800 eeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800WeeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800UeeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800<eeQ$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800+eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:88000eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800-eeQ$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800#eeQ$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800A  S,M 8 u  P (U =Xp.O haNeQ' $1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatareMeQ/ $6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption_LeQ# $tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.namemJeQ? $_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibilityiIeQ7 $x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups\hOQ3 $157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access\gOQ3 $157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levelsfOQ']$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800joinVeOQ' $157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.createdceQ- $sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstoneUbOQ% $157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.topicZaOQ/ $157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.server_acls`eQ'+$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.orgban^_OQ7 $157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groupsm^eQ? $4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibilityT]OQ# $157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.namee\eQ/ $u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rulesZ[OQ/ $157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.join_ruleseKeQ/ $UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_aclbYOQ? $157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility XeQ']$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800join\WOQ3 $157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_accessaVeQ' $eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.createZUOQ/ $157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.encryptionVTOQ' $157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar\dOQ3 $157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levelsROQ']$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800joinVQOQ' $157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.creategPeQ3 $Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levelsgOeQ3 $gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access  LOQa# $157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1485}{"auth_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}]], "prev_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}]], "type": "m.room.member", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-298", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-298:localhost:8800", "event_id": "$157004178835mLAyG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041788206, "hashes": {"sha256": "P+tiHAKMh9x8LUqZmYaAuyIkraAbObXCVouJYj7O0lE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "voK80ZJMZcRIu5LudnwuM3h8RAZjMEEqzzTB1um1mzZ/WpKoRLrjFvjSKkhHFePMNlYtGZmeXgZR6QTDwNk+AQ"}}, "unsigned": {"age_ts": 1570041788206}} KOQa= $157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1484}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "event_id": "$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII"}, "creator": "@anon-20191002_181700-298:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004178734ZpFdg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041787297, "hashes": {"sha256": "tWbv1df0yurqVFFLdT6kZ0bSsCkcdGfIwpIpqsLlXEM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/YnGCFPfoN2Jqc6BTlvwyoV6EANZCD//U0qFt71IQtCCFNyzOOdx/UyRu0/zxTtORtf54kx5M0eDTbCxRLwYBA"}}, "unsigned": {"age_ts": 1570041787297}}sJeQas$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1483}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8"], "type": "m.room.power_levels", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"events": {"m.room.history_visibility": 80, "m.room.power_levels": 100, "m.room.encryption": 80, "m.room.name": 80, "m.room.guest_access": 80, "m.room.canonical_alias": 50, "m.room.topic": 80, "m.room.related_groups": 80, "m.room.server_acl": 80, "m.room.join_rules": 80, "m.room.avatar": 80}, "events_default": 0, "kick": 50, "state_default": 50, "users": {"@anon-20191002_181700-298:localhost:8800": 50}, "users_default": 0, "ban": 50, "invite": 0, "redact": 50}, "depth": 14, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041786004, "hashes": {"sha256": "Ho9EwT+mV9O+a90aAhdhQCmpLoJNkEgFlX1g9b0tkxg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5iefrP74kfUH8ZsZTOI9aip7b9X9kJt3U1V5mdUejD0nkemtgTICgCOeR4ztqYojPP9P9vXW3BacBlyVhKZLBw"}}, "unsigned": {"age_ts": 1570041786004, "replaces_state": "$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs"}} bg/ Q  ^ 1X{CbeO/Q ]$157004180752YHMqi:localhost:8800m.room.join_rules!WhqVaRReBxJXADAyYD:localhost:8800m[m@anon-20191002_181700-299:localhost:8800!dO?Q ]$157004180751hMlwg:localhost:8800m.room.history_visibility!WhqVaRReBxJXADAyYD:localhost:8800mmC@anon-20191002_181700-299:localhost:8800cO3Q ]$157004180650ruqIl:localhost:8800m.room.guest_access!WhqVaRReBxJXADAyYD:localhost:8800mȽJmȽ@anon-20191002_181700-299:localhost:8800bO3Q ]$157004180549mJBJB:localhost:8800m.room.power_levels!WhqVaRReBxJXADAyYD:localhost:8800mȺ+mȺ@anon-20191002_181700-299:localhost:8800aO'Q ]$157004180448zlZXD:localhost:8800m.room.member!WhqVaRReBxJXADAyYD:localhost:8800mȷpmȷ@anon-20191002_181700-299:localhost:8800` O'Q  ]$157004180347MMmFf:localhost:8800m.room.create!WhqVaRReBxJXADAyYD:localhost:8800mȱmȳ;@anon-20191002_181700-299:localhost:8800_O3Q ] $157004180346TRucp:localhost:8800m.room.power_levels!BfEFIDBthhkweqfhir:localhost:8800 mȱ2mȱ@anon-20191002_181700-298:localhost:8800#^e-Q ]$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIm.room.tombstone!aaRwQZdNAliyvRHpjs:localhost:8800mrmȭ@anon-20191002_181700-298:localhost:8800]O%Q ] $157004180045QtsUE:localhost:8800m.room.topic!BfEFIDBthhkweqfhir:localhost:8800 mȨmȩ@anon-20191002_181700-298:localhost:8800\O/Q ] $157004179944JKWNJ:localhost:8800m.room.server_acl!BfEFIDBthhkweqfhir:localhost:8800 mȥ6mȦ@anon-20191002_181700-298:localhost:8800 [e'Q ]$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEm.room.member!aLxrqpqLkbzyIxGgpk:localhost:8800mȟmȣ|@anon-20191002_181700-299:localhost:8800ZO7Q ] $157004179843yDrjz:localhost:8800m.room.related_groups!BfEFIDBthhkweqfhir:localhost:8800 mȟmȢ@anon-20191002_181700-298:localhost:8800,Ye?Q ]$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAm.room.history_visibility!aLxrqpqLkbzyIxGgpk:localhost:8800mșmȝ@anon-20191002_181700-299:localhost:8800XO#Q ] $157004179742OaMxS:localhost:8800m.room.name!BfEFIDBthhkweqfhir:localhost:8800 mșmȝ@anon-20191002_181700-298:localhost:8800$We/Q ]$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Mm.room.join_rules!aLxrqpqLkbzyIxGgpk:localhost:8800mȕmȖ@anon-20191002_181700-299:localhost:8800VO/Q ]$157004179541PbBIm:localhost:8800m.room.join_rules!BfEFIDBthhkweqfhir:localhost:8800mȔ%mȖ"@anon-20191002_181700-298:localhost:8800&Ue3Q ]$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkm.room.power_levels!aLxrqpqLkbzyIxGgpk:localhost:8800mȎmȑ@anon-20191002_181700-299:localhost:8800!TO?Q ]$157004179340NSiie:localhost:8800m.room.history_visibility!BfEFIDBthhkweqfhir:localhost:8800mȍmȏ@anon-20191002_181700-298:localhost:8800 Se'Q ]$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYm.room.member!aLxrqpqLkbzyIxGgpk:localhost:8800mȉ&mȌt@anon-20191002_181700-299:localhost:8800RO3Q ]$157004179239LLqht:localhost:8800m.room.guest_access!BfEFIDBthhkweqfhir:localhost:8800mȈmȊz@anon-20191002_181700-298:localhost:8800Q e'Q  ]$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQm.room.create!aLxrqpqLkbzyIxGgpk:localhost:8800mȅfmȆ@anon-20191002_181700-299:localhost:8800PO/Q ]$157004179138NbBYh:localhost:8800m.room.encryption!BfEFIDBthhkweqfhir:localhost:8800mȅemȆ@anon-20191002_181700-298:localhost:8800OO'Q ] $157004179037FGMFG:localhost:8800m.room.avatar!BfEFIDBthhkweqfhir:localhost:8800mȁmȂz@anon-20191002_181700-298:localhost:8800NO3Q ]$157004178936zuJSX:localhost:8800m.room.power_levels!BfEFIDBthhkweqfhir:localhost:8800m{%m|$@anon-20191002_181700-298:localhost:8800MO'Q ]$157004178835mLAyG:localhost:8800m.room.member!BfEFIDBthhkweqfhir:localhost:8800mw.mw@anon-20191002_181700-298:localhost:8800 E q 8 T  p 7 S o6So6So6R n5 TQUq8  8e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257ssha2568e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egsha2568e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8sha2568e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEsha2568e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4sha2568e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8sha256 8e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwsha256 8e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xssha256X8e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUsha256 Z8e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Qsha2568e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYsha256R8e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVksha2568e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wsha256C8e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMsha256 F8e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAsha256 8e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwsha2568e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Ysha2568e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhosha2568e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPssha2568e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcsha256 8e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0sha2568e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQsha2568e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptssha256 8e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvssha256J7e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgsha256l8e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Esha2568e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0sha256 8e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAsha256?8e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMsha256 8e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Esha256 8e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4sha256 8e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKssha2567e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDosha256b8e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyEsha256}8e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEsha256k8e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8sha256 <8e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIsha2568e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0Isha2568e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Qsha256 z8e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_Asha2568e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvosha25658e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Esha256(8e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8sha25698e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4sha256 i8e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4sha2568e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwsha2568e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7osha256 8e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wsha2568e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEsha2568e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXosha256K8e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMsha256/8e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4sha2568e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAsha2568e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUsha2568e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Cksha2567e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYsha2568e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2Usha256L8e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcsha2568e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigsha2568e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPgsha256 8e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYsha25608e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAsha256 8e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYsha2568e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkIsha256 R8e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8sha256P8e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYsha2568e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIksha256 s8e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4sha256T8e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Isha256  qoOOQa $157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1488}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179037FGMFG:localhost:8800", {"sha256": "2cfEx1QVppclWCKZ8S/N5f/X/++2/yaUAO4wRdzqrJs"}]], "type": "m.room.encryption", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"algorithm": "m.megolm.v1.aes-sha2"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004179138NbBYh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041791845, "hashes": {"sha256": "65itMVWAuSjxxx1VAULXkLg1cx/F/Tmec8td/8UPgx8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aex7t3uE+6vQonbknJO7HSYkztQ5fk6+Q7n9cSQ8c1Hi6K5bHZ+uZz7n2X0/cTtTso5sHAe//ODHgW8Hw5ayDw"}}, "unsigned": {"age_ts": 1570041791845}}aNOQag $157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1487}{"auth_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}], ["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}]], "prev_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}]], "type": "m.room.avatar", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"url": "http://something"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004179037FGMFG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041790887, "hashes": {"sha256": "OAQ1TuVkoDNJQ4vW//TQeTmy8E3kx+TsqqbY5PGBoP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "riHhY0MmOOQyBZTTEAMh2parTVfNCH68TrbZxBAaTFS3nLxcAB2W3kFwytoXaBIzpEl4ZjIK+60Kn0Ugj6d1Cg"}}, "unsigned": {"age_ts": 1570041790887}}&MOQaq $157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1486}{"auth_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "type": "m.room.power_levels", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"users": {"@anon-20191002_181700-298:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004178936zuJSX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041789221, "hashes": {"sha256": "/iSdJ2/KDxZGo3oC6fwpiPylx2UB3WI7jlikZK+UotQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njSuRz/ph3VNLN4oMpJ+B+H7x4fW9M0QG9oUsyUBqISwfYqagIr4f6OEUSbLsPY6Mod6a370FYh5FuJS2PhRAg"}}, "unsigned": {"age_ts": 1570041789221}} 1l]c t  z . ? [  w +}&x!~2NTOJPlIQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183365ZxPWz:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183264ktTbL:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183063NdEPw:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183062AwGkL:localhost:8800TQe!uSBqTezaFcMnlowsEf:localhost:8800$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigTQe!uSBqTezaFcMnlowsEf:localhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgTQe!uSBqTezaFcMnlowsEf:localhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknATQe!uSBqTezaFcMnlowsEf:localhost:8800$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DETQe!uSBqTezaFcMnlowsEf:localhost:8800$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UT~Qe!uSBqTezaFcMnlowsEf:localhost:8800$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUT}Qe!uSBqTezaFcMnlowsEf:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwT|Qe!uSBqTezaFcMnlowsEf:localhost:8800$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4T{Qe!CNFopUEQTFbzjmLvii:localhost:8800$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoTzQe!CNFopUEQTFbzjmLvii:localhost:8800$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAIyQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004182060gAdxi:localhost:8800IxQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181959Afmmv:localhost:8800IwQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181958ixShg:localhost:8800IvQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181857fcmAB:localhost:8800IuQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181756ejZNp:localhost:8800ItQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181655JUAvO:localhost:8800TsQe!CNFopUEQTFbzjmLvii:localhost:8800$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkTrQe!CNFopUEQTFbzjmLvii:localhost:8800$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUTqQe!CNFopUEQTFbzjmLvii:localhost:8800$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcTpQe!CNFopUEQTFbzjmLvii:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AoToQe!CNFopUEQTFbzjmLvii:localhost:8800$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wTnQe!aLxrqpqLkbzyIxGgpk:localhost:8800$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQTmQe!aLxrqpqLkbzyIxGgpk:localhost:8800$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwIlQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180853KmrHT:localhost:8800IkQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180752YHMqi:localhost:8800IjQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180751hMlwg:localhost:8800IiQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180650ruqIl:localhost:8800IhQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180549mJBJB:localhost:8800IgQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180448zlZXD:localhost:8800IfQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180347MMmFf:localhost:8800IeQO!BfEFIDBthhkweqfhir:localhost:8800$157004180346TRucp:localhost:8800TdQe!aaRwQZdNAliyvRHpjs:localhost:8800$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIIcQO!BfEFIDBthhkweqfhir:localhost:8800$157004180045QtsUE:localhost:8800IbQO!BfEFIDBthhkweqfhir:localhost:8800$157004179944JKWNJ:localhost:8800TaQe!aLxrqpqLkbzyIxGgpk:localhost:8800$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEI`QO!BfEFIDBthhkweqfhir:localhost:8800$157004179843yDrjz:localhost:8800T_Qe!aLxrqpqLkbzyIxGgpk:localhost:8800$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAI^QO!BfEFIDBthhkweqfhir:localhost:8800$157004179742OaMxS:localhost:8800T]Qe!aLxrqpqLkbzyIxGgpk:localhost:8800$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597MI\QO!BfEFIDBthhkweqfhir:localhost:8800$157004179541PbBIm:localhost:8800T[Qe!aLxrqpqLkbzyIxGgpk:localhost:8800$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkIZQO!BfEFIDBthhkweqfhir:localhost:8800$157004179340NSiie:localhost:8800TYQe!aLxrqpqLkbzyIxGgpk:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYIXQO!BfEFIDBthhkweqfhir:localhost:8800$157004179239LLqht:localhost:8800TWQe!aLxrqpqLkbzyIxGgpk:localhost:8800$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ  ,rSOQa $157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1492}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179239LLqht:localhost:8800", {"sha256": "6wruXreAV3rz+txiP61NWxBCnNeszc7qB0tSru6I/HY"}]], "type": "m.room.history_visibility", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004179340NSiie:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041793996, "hashes": {"sha256": "hmZ0pmtmbcjVkYtHpAKrsaBpJGpSXCGROgAD6iBmGw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CDVedlnDXCJ67+lv/nG+8XPYm1HNtegi/75C/iBEAFCQAWnNMTsce9N9aK34hInaI3XcwT/9cJUMWLJZtt9kAw"}}, "unsigned": {"age_ts": 1570041793996}}vReQay$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1491}{"auth_events": ["$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ"], "prev_events": ["$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ"], "type": "m.room.member", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-299", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-299:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041792806, "hashes": {"sha256": "Q9KO49oDveyguSdosf5L/hm2aXzJnP11Np6zvbkm62k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GyILJXDVcaxneZEPvP26NQCiqhS8494pcgyCiPGQyj6s9QY6BFqIGRwvlrBSZifsrpvVC2pFpZE3px/pX7anAw"}}, "unsigned": {"age_ts": 1570041792806}}iQOQaw $157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1490}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179138NbBYh:localhost:8800", {"sha256": "05u1Xem/m7IA7ULolNVDH50dB7JHfQWsjwRMJEsgQaU"}]], "type": "m.room.guest_access", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"guest_access": "forbidden"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004179239LLqht:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041792699, "hashes": {"sha256": "y7Xgu8rB1Md6OYcdQ3z8/PxawdZH4B6cFo1QCiEj1DE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gn8PVsmykHhV32iE9CxqZ8S1n77fTAG83wLp2MeJYvp7AQZgTcrxIDYb03YcOQMq0b9IHgoGT1mcto0bpWrnAg"}}, "unsigned": {"age_ts": 1570041792699}}iPeQa_$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1489}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-299:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041791846, "hashes": {"sha256": "BNNVcXhMMqp7c5JbMx0AMJo6Tw4+GMFSpOZCXHmzS0g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5RWHLYIopc1o8xKIU1SJFVpNDshMso1czH1darjbYRDIxTKu/r0P250lMr27smGC2z1RZsKZJGJUhUArRrGYAA"}}, "unsigned": {"age_ts": 1570041791846}} LaU#/uC{8I a D 5 } K j / >g  o[ S=O !  )p [ v )  pIa21e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog T1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ey1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgC1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQox1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA u1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww|1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI J1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yu1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoj01e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQR1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod481e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eg0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgy1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE_1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF490e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ%1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0a1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo#1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ R1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0t1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawF1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA q1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ j1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0a1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo_1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkN1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE vM +D  ]oj8p>  v D\  | J  7 Q   =| W % *V$PJc1i1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-431e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ V1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo C1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM *1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc 1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ Q1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA 1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegz1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 <1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 X1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8X1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz811e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w{1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0d1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IV1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg=1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A&1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4<1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo Y1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y .1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA m1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss^0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30F1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRED1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUm1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEX1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0)1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4<1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A?1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYj1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg2 LaU#/uC{8I a D 5 } K j / >g  o[ S=O !  )p [ v )  pIa21e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog T1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ey1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgC1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQox1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA u1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww|1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI J1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yu1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoj01e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQR1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod481e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eg0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgy1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE_1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF490e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ%1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0a1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo#1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ P1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0t1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawF1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA o1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ h1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0[1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCoY1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkH1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE KUi7[I)o= duC { ^j18 ,># p v D  O | J  P  X & 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAkw1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIr1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocd1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8S1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwC1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu80e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMX1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI91e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8H1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo#1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU;1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk{ 21e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQF1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4A1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc 1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw m 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY #1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ ]1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg 1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ @ 21e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF440e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ#1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 31e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4P21e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY>1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc k1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo <1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2Mk1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Yk1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 >1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk#1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA01e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAH *0Hp(Px0p(P x 0 X  8 `  @h ~6^>EZ]=@anon-20191002_181700-298:localhost:8800anon-20191002_181700-298EY]=@anon-20191002_181700-297:localhost:8800anon-20191002_181700-297EX]=@anon-20191002_181700-296:localhost:8800anon-20191002_181700-296EW]=@anon-20191002_181700-295:localhost:8800anon-20191002_181700-295EV]=@anon-20191002_181700-294:localhost:8800anon-20191002_181700-294EU]=@anon-20191002_181700-292:localhost:8800anon-20191002_181700-292ET]=@anon-20191002_181700-291:localhost:8800anon-20191002_181700-291ES]=@anon-20191002_181700-290:localhost:8800anon-20191002_181700-290ER]=@anon-20191002_181700-289:localhost:8800anon-20191002_181700-289EQ]=@anon-20191002_181700-288:localhost:8800anon-20191002_181700-288EP]=@anon-20191002_181700-287:localhost:8800anon-20191002_181700-287EO]=@anon-20191002_181700-286:localhost:8800anon-20191002_181700-286Ex]=@anon-20191002_181700-333:localhost:8800anon-20191002_181700-333Ew]=@anon-20191002_181700-332:localhost:8800anon-20191002_181700-332Ev]=@anon-20191002_181700-331:localhost:8800anon-20191002_181700-331Eu]=@anon-20191002_181700-330:localhost:8800anon-20191002_181700-330Et]=@anon-20191002_181700-329:localhost:8800anon-20191002_181700-329Es]=@anon-20191002_181700-328:localhost:8800anon-20191002_181700-328Er]=@anon-20191002_181700-327:localhost:8800anon-20191002_181700-327Eq]=@anon-20191002_181700-326:localhost:8800anon-20191002_181700-326Ep]=@anon-20191002_181700-325:localhost:8800anon-20191002_181700-325Eo]=@anon-20191002_181700-324:localhost:8800anon-20191002_181700-324En]=@anon-20191002_181700-323:localhost:8800anon-20191002_181700-323Em]=@anon-20191002_181700-322:localhost:8800anon-20191002_181700-322El]=@anon-20191002_181700-321:localhost:8800anon-20191002_181700-321Ek]=@anon-20191002_181700-320:localhost:8800anon-20191002_181700-320Ej]=@anon-20191002_181700-319:localhost:8800anon-20191002_181700-319Ei]=@anon-20191002_181700-318:localhost:8800anon-20191002_181700-318Eh]=@anon-20191002_181700-317:localhost:8800anon-20191002_181700-317Eg]=@anon-20191002_181700-312:localhost:8800anon-20191002_181700-312Ef]=@anon-20191002_181700-311:localhost:8800anon-20191002_181700-311Ee]=@anon-20191002_181700-310:localhost:8800anon-20191002_181700-310Ed]=@anon-20191002_181700-308:localhost:8800anon-20191002_181700-308Ec]=@anon-20191002_181700-307:localhost:8800anon-20191002_181700-307Eb]=@anon-20191002_181700-306:localhost:8800anon-20191002_181700-306Ea]=@anon-20191002_181700-305:localhost:8800anon-20191002_181700-305E`]=@anon-20191002_181700-304:localhost:8800anon-20191002_181700-304E_]=@anon-20191002_181700-303:localhost:8800anon-20191002_181700-303E^]=@anon-20191002_181700-302:localhost:8800anon-20191002_181700-302E]]=@anon-20191002_181700-301:localhost:8800anon-20191002_181700-301E\]=@anon-20191002_181700-300:localhost:8800anon-20191002_181700-300E[]=@anon-20191002_181700-299:localhost:8800anon-20191002_181700-299 Oe>cmB i '  H}R : T)8 k@ L ! w # y N P % < {oDgqFe> u J*Q!atnRTMliktaVUhMVID:localhost:8800 *Q!atnRTMliktaVUhMVID:localhost:8800 *Q!atnRTMliktaVUhMVID:localhost:8800  *Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aiOswwhoZqjhcjzbzc:localhost:8800``*Q!aiOswwhoZqjhcjzbzc:localhost:8800]]*Q!anErKtXIsVKEEsrzWM:localhost:8800SS*Q!anErKtXIsVKEEsrzWM:localhost:8800OO*Q!aZwMKYDXJRlSKjQNWM:localhost:880033*Q!aZwMKYDXJRlSKjQNWM:localhost:880022*Q!aZwMKYDXJRlSKjQNWM:localhost:880011*Q!aZwMKYDXJRlSKjQNWM:localhost:880000*Q!aiOswwhoZqjhcjzbzc:localhost:8800[[*Q!bLWyXaXdvUhdSAooUz:localhost:8800 + +*Q!bNSXSTadOMhIrYpMzH:localhost:8800yy*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aZwMKYDXJRlSKjQNWM:localhost:880066*Q!aZwMKYDXJRlSKjQNWM:localhost:880055*Q!aZwMKYDXJRlSKjQNWM:localhost:880044*Q!aiOswwhoZqjhcjzbzc:localhost:8800\\*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800vv*Q!bNSXSTadOMhIrYpMzH:localhost:8800uu*Q!bNSXSTadOMhIrYpMzH:localhost:8800tt*Q!bNSXSTadOMhIrYpMzH:localhost:8800ss*Q!anErKtXIsVKEEsrzWM:localhost:8800PP*Q!bNSXSTadOMhIrYpMzH:localhost:8800ww+*Q!aiOswwhoZqjhcjzbzc:localhost:8800pp*Q!bNSXSTadOMhIrYpMzH:localhost:8800||*Q!bNSXSTadOMhIrYpMzH:localhost:8800{{*Q!bNSXSTadOMhIrYpMzH:localhost:8800zz s*Q!aknLNLxfChlLvFYhkJ:localhost:8800 J*Q!aiOswwhoZqjhcjzbzc:localhost:8800bb*Q!aiOswwhoZqjhcjzbzc:localhost:8800ii*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!aiOswwhoZqjhcjzbzc:localhost:8800^^*Q!aiOswwhoZqjhcjzbzc:localhost:8800aa*Q!bLWyXaXdvUhdSAooUz:localhost:8800 * **Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) )*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( (*Q!bLWyXaXdvUhdSAooUz:localhost:8800 , ,*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ' '*Q!atnRTMliktaVUhMVID:localhost:8800  *Q!anErKtXIsVKEEsrzWM:localhost:8800NN*Q!aiOswwhoZqjhcjzbzc:localhost:8800__*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!atnRTMliktaVUhMVID:localhost:8800  *Q!atnRTMliktaVUhMVID:localhost:8800  *Q!anErKtXIsVKEEsrzWM:localhost:8800RR*Q!anErKtXIsVKEEsrzWM:localhost:8800QQ*Q!bNSXSTadOMhIrYpMzH:localhost:8800xx "*( R f d # !5_]q0ZXlh.OOQ$157004180346TRucp:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h-OOQ$157004180346TRucp:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h,OOQ$157004180346TRucp:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~+eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~*eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~)eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800h(OOQ$157004180045QtsUE:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h'OOQ$157004180045QtsUE:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h&OOQ$157004180045QtsUE:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h%OOQ$157004179944JKWNJ:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h$OOQ$157004179944JKWNJ:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h#OOQ$157004179944JKWNJ:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~"eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~!eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~ eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179843yDrjz:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179843yDrjz:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179843yDrjz:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179742OaMxS:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179742OaMxS:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179742OaMxS:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179541PbBIm:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179541PbBIm:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179541PbBIm:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179340NSiie:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h OOQ$157004179340NSiie:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800  ,tVeQau$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1495}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk"], "type": "m.room.join_rules", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041795858, "hashes": {"sha256": "oIlPUKhmrvaH+/Fu+EfVd1g4vHHVr0OM6cNnWS0wYU4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZkZ/tO3TlQvaqU43V+GWFWPJ1WAi98hBQ1sdycsHMun7fsDpuU+pgHsOVEAM3RKI3KQw2AilNbDL4wU1w3SfBA"}}, "unsigned": {"age_ts": 1570041795858}}aUOQag $157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1494}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179340NSiie:localhost:8800", {"sha256": "0j7PuUBjw2Yotvrs4WMZu2hXyW4I3xM08mybYI19fqo"}]], "type": "m.room.join_rules", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"join_rule": "public"}, "depth": 8, "prev_state": [], "state_key": "", "event_id": "$157004179541PbBIm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041795621, "hashes": {"sha256": "dcKZ0aiIi1wp+dzPHmFmIMXDnIzjlxZRsde33HkC6iA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DAoalQsduiTbswm1z03CjIpWhct3XPrYQOF9/X8A0sCUGWtLcVMtuOf8tPePyId0AFvyNmU9PaZbA1w80JLtAg"}}, "unsigned": {"age_ts": 1570041795621}}kTeQac$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1493}{"auth_events": ["$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "type": "m.room.power_levels", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"users": {"@anon-20191002_181700-299:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041794303, "hashes": {"sha256": "1HOBKuCUzUR+vUt0zgEmuN+pPKnm5/6Fl2Y1YjAVPXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T+/uHRS9SjBHFXkGYjV9C968ydX3ULlMFl/v/NfhV/4CDuuFOa9mGvYL6vI30+BxyqYz0u02x/QbD4eNusFnAw"}}, "unsigned": {"age_ts": 1570041794303}} |t  l d \ U ME=5-%eeQ$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800eeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800 xeeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI!vttkrtSyHEJXVMlvLo:localhost:8800ieeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800)eeQ$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800eeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc!aHyAJEOSdKqTiRjOvw:localhost:8800]eeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8!eWRdwtyqHvuxZFvhNS:localhost:8800JeeQ$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800 eeQ$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800 #eeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800FeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800PeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800TeeQ$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800DeeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800 oeeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800HeeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:88003eeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800eeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800r % %}ZeQa$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1499}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA"], "type": "m.room.member", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "ban"}, "depth": 6, "prev_state": [], "state_key": "@bob:matrix.org", "origin": "localhost:8800", "origin_server_ts": 1570041798630, "hashes": {"sha256": "xrgpNOf0J/nBrKLEaxaCVqLXDELDeQY73u9+I3+P+mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7XAB4mIxVuQ/Rc/TvvRKHn8KYaL7cGkaJqx74vF5wVXEma4Ln0A8A05jpY+4eE5UEMv0EEpKCDZNtLMSQjNGDg"}}, "unsigned": {"age_ts": 1570041798630}}uYOQa $157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1498}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179742OaMxS:localhost:8800", {"sha256": "DNDBnaWjP3TCa9PYRROKRDW7bbT8X9KmodEUihF+5vM"}]], "type": "m.room.related_groups", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"groups": ["+something:example.org"]}, "depth": 10, "prev_state": [], "state_key": "", "event_id": "$157004179843yDrjz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041798627, "hashes": {"sha256": "ExO3KBnQQ727lEe4gUHOBIKr2dFI+RM9HqzEZ9Vpouo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HK+OIZ+rzIe92ZNLi2ct7YGwbZrDOvpwfxv2+STSErGC2NcyPNhVLv0Yj7wwQ8eQKd8I+r4XR0c3Z9NuqCtPCg"}}, "unsigned": {"age_ts": 1570041798627}}XeQa$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1497}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M"], "type": "m.room.history_visibility", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041797097, "hashes": {"sha256": "hZKIjHxcX03KFfrsZKq/w7q98Bak8Nwri/GhbUFnyF4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "176ap8VgwuDm8/NU5+go9WoUVxn0qyPxQ6YkWF7IuU1h8U/VCXvlUkSbl42WNXqKQogcZ8z04BsmkrUJCnfrDw"}}, "unsigned": {"age_ts": 1570041797097}}TWOQaM $157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1496}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179541PbBIm:localhost:8800", {"sha256": "hQaQhLe0Lcop26sMTKOkPsTMpefk3gPgmmXp6J3+XxI"}]], "type": "m.room.name", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"name": "name"}, "depth": 9, "prev_state": [], "state_key": "", "event_id": "$157004179742OaMxS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041797003, "hashes": {"sha256": "DG2BzP4pIRsPo44o8hr3MLyg34qkfnRh1R8BBYauoqc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ksrPDOy5RQTrFRZm2HHeAM2FRSn41VKu8JVB5WRPwO4Ri3C99I6FRFmPXBVFY6hsmSLnLJmbWyj2k245cdR7CQ"}}, "unsigned": {"age_ts": 1570041797003}} A _A>]eQa $sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1502}{"auth_events": ["$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0"], "type": "m.room.tombstone", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!BfEFIDBthhkweqfhir:localhost:8800"}, "depth": 15, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041787091, "hashes": {"sha256": "SWS3oipO4H7S0QQczpODDltdtpjk4Rh5LtJ6CuA5Psw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sOHXz+ixdiVDWmGMZmydVpnJGv5v3QsYztMVU/XLZfOK+QpdYLIEHRz7pgLGsRMmgjWT9eDGsCsP6qfzKMqfBg"}}, "unsigned": {"age_ts": 1570041787091}}X\OQaU $157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1501}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179944JKWNJ:localhost:8800", {"sha256": "gKZYEUGhZm4hb86ZdogYkqQtP3mCsHBzZaJWoJ0eI5o"}]], "type": "m.room.topic", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"topic": "topic"}, "depth": 12, "prev_state": [], "state_key": "", "event_id": "$157004180045QtsUE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041800855, "hashes": {"sha256": "E56qh4kVL0OaD1pa1XwTTDR5+Z855lp0Gx6SEAdmY7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/rpMv8C+RJeAgznXN13PBhg/sOStXkJEbYjvhrPf79UMNML42WzvEy2+g1kLPNr3znVHsjhfLfFJ77oEkCOICQ"}}, "unsigned": {"age_ts": 1570041800855}}[OQa_ $157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1500}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179843yDrjz:localhost:8800", {"sha256": "cycuTfCPdfoYRuJCf7CLA2FI4irhN3qB3oryO7T2RH8"}]], "type": "m.room.server_acl", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"allow": ["*"], "deny": ["*.evil.com", "evil.com"], "allow_ip_literals": "false"}, "depth": 11, "prev_state": [], "state_key": "", "event_id": "$157004179944JKWNJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041799990, "hashes": {"sha256": "JuKgVly0n9cGP+Xm4OwWM98RQbKsNfQvmRM8bpFUr0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YjqGJSTmOxmqG0lj6zt0BF/2xsBpfba+vbB9oaFTaeCHkLXMfDbe0dcAi/6wd4jG3net1xJdndcCfwlQxwXpDw"}}, "unsigned": {"age_ts": 1570041799990}} %t+o ) c ' 7 a+F~R]+StQ']O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$157004183063NdEPw:localhost:8800XQ' O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.create$157004183062AwGkL:localhost:8800fQ- e!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstone$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBElQ9 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigrQ))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hgr Q))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAo Q? e!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibility$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEg Q/ e!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rules$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8Ui Q3 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU Q']e!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwcQ' e!uSBqTezaFcMnlowsEf:localhost:8800m.room.create$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4^Q3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels$157004182361NlgQV:localhost:8800iQ3 e!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo\Q/ O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rules$157004182060gAdxi:localhost:8800dQ? O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility$157004181959Afmmv:localhost:8800^Q3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access$157004181958ixShg:localhost:8800^Q3 O~!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels$157004181857fcmAB:localhost:8800Q']O}!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$157004181756ejZNp:localhost:8800XQ' O|!NrxQuziwSWzsHuXIlG:localhost:8800m.room.create$157004181655JUAvO:localhost:8800fQ- e{!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstone$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAo~Q? ez!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibility$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkg}Q/ ey!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUi|Q3 ex!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc {Q']ew!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao^zQ3 Ov!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels$157004181254abDEV:localhost:8800cyQ' eu!CNFopUEQTFbzjmLvii:localhost:8800m.room.create$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wixQ3 et!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQgwQ'+Os!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.org$157004180853KmrHT:localhost:8800\vQ/ Or!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rules$157004180752YHMqi:localhost:8800duQ? Oq!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility$157004180751hMlwg:localhost:8800^tQ3 Op!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access$157004180650ruqIl:localhost:8800^sQ3 Oo!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels$157004180549mJBJB:localhost:8800rQ']On!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$157004180448zlZXD:localhost:8800XqQ' Om!WhqVaRReBxJXADAyYD:localhost:8800m.room.create$157004180347MMmFf:localhost:8800^pQ3 Ol!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004180346TRucp:localhost:8800foQ- ek!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstone$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwinQ3 ej!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$Gn7wtV0iWwMPsZPtWJtusSChoJvnWZRBzM4A_qmzY30  `OQa# $157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1505}{"auth_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}]], "prev_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}]], "type": "m.room.member", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-299", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-299:localhost:8800", "event_id": "$157004180448zlZXD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041804656, "hashes": {"sha256": "fDUg2iPHXbP726rb+Ia0V+TxST7XXdLwpGC7N+tomzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9SsorTTOU+RSKLME/6/W6Jsov/1i1N7PePxv6Fdbgn445AxVB1E6w9/AbqSpumX4DdFmJ1NgtCoWLCrezdAkCA"}}, "unsigned": {"age_ts": 1570041804656}} _OQa= $157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1504}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "event_id": "$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw"}, "creator": "@anon-20191002_181700-299:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004180347MMmFf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041803251, "hashes": {"sha256": "lr+id3P0rLemjwKTfjQnrfYwM5ZFN+M+VtZdMFqJSv4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AHp8sP981meqaiOxoYexLInILTg+eCQbuB3Zr9KrlFq5H5Ns6IwGv93oSQblideQhmaLMqeW9PI74lrwCeoaAg"}}, "unsigned": {"age_ts": 1570041803251}}U^OQaO $157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1503}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004180045QtsUE:localhost:8800", {"sha256": "nY/tnxm3TNhIK62guRQtdMjwgMaheSX0n/DigE3LPe0"}]], "type": "m.room.power_levels", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"events": {"m.room.history_visibility": 80, "m.room.power_levels": 100, "m.room.encryption": 80, "m.room.name": 80, "m.room.guest_access": 80, "m.room.canonical_alias": 50, "m.room.topic": 80, "m.room.related_groups": 80, "m.room.server_acl": 80, "m.room.join_rules": 80, "m.room.avatar": 80}, "events_default": 0, "kick": 50, "state_default": 50, "users": {"@anon-20191002_181700-298:localhost:8800": 50}, "users_default": 0, "ban": 50, "invite": 0, "redact": 50}, "depth": 13, "prev_state": [], "state_key": "", "event_id": "$157004180346TRucp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041803058, "hashes": {"sha256": "ADLjDhfgu99BMyCneq/J7rE/if+RZR8ZZ1zJbUkGa7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7QoS1p2atW5HL6hQbBZ4JRGcg4E39787Tz+lwzZnAvS5+BUV8An0+xPA8OkG9ppVGh61CXb4wQqadUpQyahuAQ"}}, "unsigned": {"age_ts": 1570041803058, "replaces_state": "$157004178936zuJSX:localhost:8800"}} "*T ~  = g & :86420.,VhPOOQ$157004181958ixShg:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hOOOQ$157004181857fcmAB:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hNOOQ$157004181857fcmAB:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hMOOQ$157004181756ejZNp:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800~LeeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~KeeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~JeeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800~IeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~HeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~GeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800~FeeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~EeeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~DeeQ$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~CeeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~BeeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~AeeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800~@eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~?eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~>eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800h=OOQ$157004180853KmrHT:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h<OOQ$157004180853KmrHT:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h;OOQ$157004180853KmrHT:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h:OOQ$157004180752YHMqi:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h9OOQ$157004180752YHMqi:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h8OOQ$157004180752YHMqi:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h7OOQ$157004180751hMlwg:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h6OOQ$157004180751hMlwg:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h5OOQ$157004180751hMlwg:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h4OOQ$157004180650ruqIl:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h3OOQ$157004180650ruqIl:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h2OOQ$157004180650ruqIl:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h1OOQ$157004180549mJBJB:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h0OOQ$157004180549mJBJB:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h/OOQ$157004180448zlZXD:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800 i1 P W y+)Zy#e-Q ]$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qm.room.tombstone!EyyNoldCLUdFHzXTDP:localhost:8800mWmg@anon-20191002_181700-302:localhost:8800O/Q ]$157004184976eGgUf:localhost:8800m.room.join_rules!icheSPMgpemswIdQkw:localhost:8800me=me@anon-20191002_181700-302:localhost:8800!O?Q ]$157004184875Wzayo:localhost:8800m.room.history_visibility!icheSPMgpemswIdQkw:localhost:8800mbymb@anon-20191002_181700-302:localhost:8800O3Q ]$157004184774CHMNl:localhost:8800m.room.guest_access!icheSPMgpemswIdQkw:localhost:8800m`m`X@anon-20191002_181700-302:localhost:8800O3Q ]$157004184773rCaRK:localhost:8800m.room.power_levels!icheSPMgpemswIdQkw:localhost:8800m]Lm]@anon-20191002_181700-302:localhost:8800O'Q ]$157004184672SfwvS:localhost:8800m.room.member!icheSPMgpemswIdQkw:localhost:8800mZ-mZ@anon-20191002_181700-302:localhost:8800 O'Q  ]$157004184571IVgQM:localhost:8800m.room.create!icheSPMgpemswIdQkw:localhost:8800mW~mX@anon-20191002_181700-302:localhost:8800,e?Q ]$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0m.room.history_visibility!EyyNoldCLUdFHzXTDP:localhost:8800mQmS`@anon-20191002_181700-302:localhost:8800$ e/Q ]$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMm.room.join_rules!EyyNoldCLUdFHzXTDP:localhost:8800mNmO@anon-20191002_181700-302:localhost:8800& e3Q ]$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjom.room.power_levels!EyyNoldCLUdFHzXTDP:localhost:8800mKmL@anon-20191002_181700-302:localhost:8800 e'Q ]$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qm.room.member!EyyNoldCLUdFHzXTDP:localhost:8800mFmI@anon-20191002_181700-302:localhost:8800& e3Q ] $m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Ym.room.power_levels!uSBqTezaFcMnlowsEf:localhost:8800 mD mE@anon-20191002_181700-301:localhost:8800  e'Q  ]$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4m.room.create!EyyNoldCLUdFHzXTDP:localhost:8800m@mA@anon-20191002_181700-302:localhost:8800O)Q ]$157004183969fQFzs:localhost:8800m.room.aliases!vpuivIQDEhyuhOLWpg:localhost:8800m@mA@anon-20191002_181700-301:localhost:8800O9Q ]$157004183868QRvOi:localhost:8800m.room.canonical_alias!vpuivIQDEhyuhOLWpg:localhost:8800m:m<@anon-20191002_181700-301:localhost:8800!e)Q ] $I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8m.room.aliases!uSBqTezaFcMnlowsEf:localhost:8800 m6m7@anon-20191002_181700-301:localhost:8800)e9Q ] $s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2om.room.canonical_alias!uSBqTezaFcMnlowsEf:localhost:8800 m3Em3@anon-20191002_181700-301:localhost:8800#e-Q ] $99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEm.room.tombstone!uSBqTezaFcMnlowsEf:localhost:8800 mm/@anon-20191002_181700-301:localhost:8800O/Q ]$157004183467WkNdH:localhost:8800m.room.join_rules!vpuivIQDEhyuhOLWpg:localhost:8800m,m-_@anon-20191002_181700-301:localhost:8800!O?Q ]$157004183366iKFsz:localhost:8800m.room.history_visibility!vpuivIQDEhyuhOLWpg:localhost:8800m)m*I@anon-20191002_181700-301:localhost:8800O3Q ]$157004183365ZxPWz:localhost:8800m.room.guest_access!vpuivIQDEhyuhOLWpg:localhost:8800m'1m'@anon-20191002_181700-301:localhost:8800O3Q ]$157004183264ktTbL:localhost:8800m.room.power_levels!vpuivIQDEhyuhOLWpg:localhost:8800m$ m$@anon-20191002_181700-301:localhost:8800O'Q ]$157004183063NdEPw:localhost:8800m.room.member!vpuivIQDEhyuhOLWpg:localhost:8800mGm@anon-20191002_181700-301:localhost:8800~ O'Q  ]$157004183062AwGkL:localhost:8800m.room.create!vpuivIQDEhyuhOLWpg:localhost:8800mmN@anon-20191002_181700-301:localhost:8800  jrcOQa $157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1508}{"auth_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}], ["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180650ruqIl:localhost:8800", {"sha256": "TXuRyKel8MOfneiC/FjMvH+iDbcXboTxkDXoPzmxZzo"}]], "type": "m.room.history_visibility", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004180751hMlwg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041807063, "hashes": {"sha256": "TiuvsyAQJXOd+2AV15UmHd0eHFn+lUItJABqHZLZedg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "phT549EHzz2WXRBXkcFgpmd3lb2VtuwzYI/DVAueycMKOk5omGBw1sCCj1FVyg2rnKMSg3MapaiVEmH2UetvBA"}}, "unsigned": {"age_ts": 1570041807063}}hbOQau $157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1507}{"auth_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}], ["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}]], "prev_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}]], "type": "m.room.guest_access", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004180650ruqIl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041806154, "hashes": {"sha256": "b7LC4XU+oX7M1GiKpmYOOxen3dmvpshxRbhRraQhuzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fs967R/EC4FIOrHPAcCQDI5jxJKMgqYcbnB3UkFmBYtnu4Ciu6IfeESOs/5l9efY9Kdw3EVIXvIfORJ13tenDQ"}}, "unsigned": {"age_ts": 1570041806154}}&aOQaq $157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1506}{"auth_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "type": "m.room.power_levels", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"users": {"@anon-20191002_181700-299:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004180549mJBJB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041805355, "hashes": {"sha256": "u5UGK7Sy5KLjxdyc5Kwj3v66/J704idflfIu7ybfAno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dXxODIlIc3NKQCnY7QQ9fc3HkowCZ7UTnv/Vm7lBi6jqj7Hzb8dRunr91wa50IcmYJknSNIpiJY0wDQrL7XbBg"}}, "unsigned": {"age_ts": 1570041805355}} #u6k g p  % D NMPrYD|u[Q9 ee!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLiggZQ- e!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstone$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE]YQ/ O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rules$157004183467WkNdH:localhost:8800eXQ? O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility$157004183366iKFsz:localhost:8800_WQ3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access$157004183365ZxPWz:localhost:8800_VQ3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels$157004183264ktTbL:localhost:8800UQ']O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$157004183063NdEPw:localhost:8800YTQ' O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.create$157004183062AwGkL:localhost:8800mSQ9 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigRQ))ee!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAsQQ))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknApPQ? e!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibility$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEhOQ/ e!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rules$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UjNQ3 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU MQ']e!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwdLQ' e!uSBqTezaFcMnlowsEf:localhost:8800m.room.create$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4KQ3 ee!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcgJQ- e!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstone$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA]IQ/ O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rules$157004182060gAdxi:localhost:8800eHQ? O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility$157004181959Afmmv:localhost:8800_GQ3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access$157004181958ixShg:localhost:8800_FQ3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels$157004181857fcmAB:localhost:8800EQ']O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$157004181756ejZNp:localhost:8800YDQ' O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.create$157004181655JUAvO:localhost:8800pCQ? e!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibility$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkhBQ/ e!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUjAQ3 e!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc @Q']e!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aod?Q' e!CNFopUEQTFbzjmLvii:localhost:8800m.room.create$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w>Q3 ee!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkg=Q- e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstone$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwh<Q'+O!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.org$157004180853KmrHT:localhost:8800];Q/ O!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rules$157004180752YHMqi:localhost:8800e:Q? O!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility$157004180751hMlwg:localhost:8800_9Q3 O!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access$157004180650ruqIl:localhost:8800 !(: 6 2 D l  *Rd`iUOOQ$157004183969fQFzs:localhost:8800$157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iTOOQ$157004183868QRvOi:localhost:8800$157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800SeeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800ReeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800QeeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800iPOOQ$157004183467WkNdH:localhost:8800$157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iOOOQ$157004183366iKFsz:localhost:8800$157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iNOOQ$157004183365ZxPWz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iMOOQ$157004183264ktTbL:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iLOOQ$157004183063NdEPw:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800KeeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800JeeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800IeeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800HeeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800GeeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800FeeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800EeeQ$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800DeeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800CeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800iBOOQ$157004182060gAdxi:localhost:8800$157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800iAOOQ$157004181959Afmmv:localhost:8800$157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800i@OOQ$157004181958ixShg:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800i?OOQ$157004181857fcmAB:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800i>OOQ$157004181756ejZNp:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800=eeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800<eeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800;eeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800:eeQ$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:88009eeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:88008eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800i7OOQ$157004180853KmrHT:localhost:8800$157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i6OOQ$157004180752YHMqi:localhost:8800$157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i5OOQ$157004180751hMlwg:localhost:8800$157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800 /dd Y Y o ! z ! o d Y o!,z,,z!z,KOL$157004184774CHMNl:localhost:8800sha256R)%,e.6d yyA߄cHKOL$157004184773rCaRK:localhost:8800sha256gp4A25BokKOL$157004184672SfwvS:localhost:8800sha256k\|rɱeIA+2=q[KOL$157004184571IVgQM:localhost:8800sha256<.azѠgz6$CV eL$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0sha256cvىoL.ht oWH4mV eL$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMsha256dd(ޟib-]MQV eL$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjosha256 K7i 4ޤs|XF\땛6 :V eL$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qsha256WS:ʧRF3QGR> [X'$+TV eL$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Ysha256kCEҦ K 1>d$)#NVeL$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4sha256axI|G6)'b;N:Cx7^KOL$157004183969fQFzs:localhost:8800sha256Շ6=躆g=kiҙV6(dPKOL$157004183868QRvOi:localhost:8800sha256mb~xR ZOqtVeL$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8sha256#8~˼JƱ_#)D^_"8|VgeL$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQsha256.FnSu'"כH pFҦtVfeL$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwsha256"~ Pk%̦i³o/^KeOL$157004180853KmrHT:localhost:8800sha256@&}3~Olp USKdOL$157004180752YHMqi:localhost:8800sha256ؖ(8܂yz XCQKRKcOL$157004180751hMlwg:localhost:8800sha256F9u؞m˰]r&թ8 l -l=feQa$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1511}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE"], "type": "m.room.tombstone", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!WhqVaRReBxJXADAyYD:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041803057, "hashes": {"sha256": "+bODTG6GCZQLw8BTf2bH4rYwMMRsKJdRE3ZoQHnXFcg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CAMYYFQmr8l69R8f39zscZCgrs9yAyFbls9SLwkjQzmMwmkEmME+8Di8LpXYn5uHUgelJS9Uwq5vhDRDQ1lpDQ"}}, "unsigned": {"age_ts": 1570041803057}}jeOQay $157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1510}{"auth_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}], ["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180752YHMqi:localhost:8800", {"sha256": "BOnYlu2ByRT9xPQPKDjt3IIceRiRegxYGUNRS4/KUu4"}]], "type": "m.room.member", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "ban"}, "depth": 7, "prev_state": [], "state_key": "@bob:matrix.org", "event_id": "$157004180853KmrHT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041808867, "hashes": {"sha256": "u5y540PqJRTkDDcGosjqolw8P8fp17C1iQKKG6jXSkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pIBpxO0HUHZz62HGcs5RniYb2a7X9GZZxNDUeUYW94sOFZ6PHH6DzhzzNjs3iwgW3VP4iL7iqLEoWlxKkjKsBw"}}, "unsigned": {"age_ts": 1570041808867}}adOQag $157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1509}{"auth_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}], ["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180751hMlwg:localhost:8800", {"sha256": "Rvry+93fOYF12Mzl2J5ty7CJ/l1y0yb8H9WpOK+VHPQ"}]], "type": "m.room.join_rules", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004180752YHMqi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041807963, "hashes": {"sha256": "FfBal6YahxCEJrMjQAh09RTc5L195C44He9dyPYtXMA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DFQA6pgw6SRtSjnf63rKP0mnqIFJctJULbqDkAPSLcXUJvf1C95unDde9ihv/486C/306bZGocrvqcK6KXt8BA"}}, "unsigned": {"age_ts": 1570041807963}} Lp> \ v D  | J $ Q   W %  ] +c1i*7o= uC{IPVj81e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ya1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cF1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY*1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4)1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY 1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gG1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8m1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAC0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicR1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI,1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o q1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAb1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM *1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE+1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkO1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA'1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0e1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc~1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to:1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYR1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 l1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcF1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY 21e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY @1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 y1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYv0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8I1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw '1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU 1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA Z1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoR1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE{1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM :1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMd1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI g t & ~ 7 `w+5;)}e9Q ]$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigm.room.canonical_alias!uSBqTezaFcMnlowsEf:localhost:8800mom@anon-20191002_181700-301:localhost:8800!|e)Q ]$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hgm.room.aliases!uSBqTezaFcMnlowsEf:localhost:8800mmC@anon-20191002_181700-301:localhost:8800!{e)Q ]$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAm.room.aliases!uSBqTezaFcMnlowsEf:localhost:8800mmZ@anon-20191002_181700-301:localhost:8800,ze?Q ]$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEm.room.history_visibility!uSBqTezaFcMnlowsEf:localhost:8800m Vm@anon-20191002_181700-301:localhost:8800$ye/Q ]$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8Um.room.join_rules!uSBqTezaFcMnlowsEf:localhost:8800m m @anon-20191002_181700-301:localhost:8800&xe3Q ]$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUm.room.power_levels!uSBqTezaFcMnlowsEf:localhost:8800mXm Y@anon-20191002_181700-301:localhost:8800 we'Q ]$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iwm.room.member!uSBqTezaFcMnlowsEf:localhost:8800mNm@anon-20191002_181700-301:localhost:8800v e'Q  ]$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4m.room.create!uSBqTezaFcMnlowsEf:localhost:8800mm@anon-20191002_181700-301:localhost:8800&ue3Q ]$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBom.room.power_levels!CNFopUEQTFbzjmLvii:localhost:8800mm@anon-20191002_181700-300:localhost:8800#te-Q ]$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAm.room.tombstone!CNFopUEQTFbzjmLvii:localhost:8800mm[@anon-20191002_181700-300:localhost:8800sO/Q ]$157004182060gAdxi:localhost:8800m.room.join_rules!NrxQuziwSWzsHuXIlG:localhost:8800m*m@anon-20191002_181700-300:localhost:8800!rO?Q ]$157004181959Afmmv:localhost:8800m.room.history_visibility!NrxQuziwSWzsHuXIlG:localhost:8800mm@anon-20191002_181700-300:localhost:8800qO3Q ]$157004181958ixShg:localhost:8800m.room.guest_access!NrxQuziwSWzsHuXIlG:localhost:8800mm@anon-20191002_181700-300:localhost:8800pO3Q ]$157004181857fcmAB:localhost:8800m.room.power_levels!NrxQuziwSWzsHuXIlG:localhost:8800m6m@anon-20191002_181700-300:localhost:8800oO'Q ]$157004181756ejZNp:localhost:8800m.room.member!NrxQuziwSWzsHuXIlG:localhost:8800mm@anon-20191002_181700-300:localhost:8800n O'Q  ]$157004181655JUAvO:localhost:8800m.room.create!NrxQuziwSWzsHuXIlG:localhost:8800mmm@anon-20191002_181700-300:localhost:8800,me?Q ]$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkm.room.history_visibility!CNFopUEQTFbzjmLvii:localhost:8800mm@anon-20191002_181700-300:localhost:8800$le/Q ]$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUm.room.join_rules!CNFopUEQTFbzjmLvii:localhost:8800mm@anon-20191002_181700-300:localhost:8800&ke3Q ]$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kcm.room.power_levels!CNFopUEQTFbzjmLvii:localhost:8800mmۊ@anon-20191002_181700-300:localhost:8800 je'Q ]$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aom.room.member!CNFopUEQTFbzjmLvii:localhost:8800mEm@anon-20191002_181700-300:localhost:8800i e'Q  ]$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wm.room.create!CNFopUEQTFbzjmLvii:localhost:8800mam@anon-20191002_181700-300:localhost:8800&he3Q ]$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQm.room.power_levels!aLxrqpqLkbzyIxGgpk:localhost:8800m]m@anon-20191002_181700-299:localhost:8800#ge-Q ]$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwm.room.tombstone!aLxrqpqLkbzyIxGgpk:localhost:8800mȱ1m+@anon-20191002_181700-299:localhost:8800fO'Q ]$157004180853KmrHT:localhost:8800m.room.member!WhqVaRReBxJXADAyYD:localhost:8800mmt@anon-20191002_181700-299:localhost:8800 G 0GkjeQac$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1515}{"auth_events": ["$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "type": "m.room.power_levels", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"users": {"@anon-20191002_181700-300:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041813496, "hashes": {"sha256": "qnGVP2uO0CQHv7SqJX+rqL2FFE7bKAlcHrEiBNtuFnA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sTQfmZB+QuHEI2SelCRWyhn2MjeE2i0E6mLxYWCtHK3aVB3QJ41C9rHBYo5C+oRzYaDg17txZg+Xd6by3s1xAQ"}}, "unsigned": {"age_ts": 1570041813496}}vieQay$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1514}{"auth_events": ["$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w"], "prev_events": ["$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w"], "type": "m.room.member", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-300", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-300:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041812549, "hashes": {"sha256": "I4OHI8HzO5+NgA90KZgbLrKMqVId8sfBdU5rlYZROlQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F/sLin7nzoX5Kmu1fHfly3EhkpY9ayn1Hsc1MtrLMM6VufXcPba6tCqBjIhX5z7WumMmWQRS0Nv1TWddmGX4Dg"}}, "unsigned": {"age_ts": 1570041812549}}iheQa_$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1513}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-300:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041811041, "hashes": {"sha256": "SaobONV+WI8XLYdErLgoW1Td1qpaXETGcLROX1NF4tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ugquKSXNKOtb9jdnVAG4coEhgTd8+9vQZH1YyZ+LfDJZ47TowJNMqcbbzKOe//BJ6n9Rh3bl+ND13W0FwK5rDw"}}, "unsigned": {"age_ts": 1570041811041}}_geQaK$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1512}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw"], "type": "m.room.power_levels", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"users": {"@anon-20191002_181700-299:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041811037, "hashes": {"sha256": "ZJIDrRj8KUIzo3V3S/cTAmY02Ke7ChsXZeRhTAaZCcM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qBG5HJcdFWWf5bsyR2jMBbjff9lPxWx8TZncabMwpnPsPIhuYPGmr/bsU5VWZEV943ux4xsToVh6h20wyV6fDw"}}, "unsigned": {"age_ts": 1570041811037, "replaces_state": "$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk"}} p`  ` 8pH X0p  h @H X 0 X0 H  x P ( h@xP(`8`8h@xP( p'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 \'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ['Q!ePtMOPPOgOcBIMNZpn:localhost:8800 Z'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 Y'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 X'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 W'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 V'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 U'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 T'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 S'Q!dnZVySJLGNtUKsSgXW:localhost:8800O'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800,'Q!eJPTUgihvSwaOhIkrC:localhost:8800+'Q!eJPTUgihvSwaOhIkrC:localhost:8800*'Q!eJPTUgihvSwaOhIkrC:localhost:8800)'Q!eJPTUgihvSwaOhIkrC:localhost:8800('Q!eJPTUgihvSwaOhIkrC:localhost:8800''Q!eJPTUgihvSwaOhIkrC:localhost:8800&'Q!eJPTUgihvSwaOhIkrC:localhost:8800%'Q!eJPTUgihvSwaOhIkrC:localhost:8800$'Q!eJPTUgihvSwaOhIkrC:localhost:8800#'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 ('Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800z'Q!eGEEtFXUXuZDImkeql:localhost:8800y'Q!eGEEtFXUXuZDImkeql:localhost:8800x'Q!eGEEtFXUXuZDImkeql:localhost:8800w'Q!eGEEtFXUXuZDImkeql:localhost:8800v'Q!eGEEtFXUXuZDImkeql:localhost:8800u'Q!eGEEtFXUXuZDImkeql:localhost:8800t'Q!eGEEtFXUXuZDImkeql:localhost:8800s'Q!drnXStKXkNQkouqUAg:localhost:8800 3'Q!drnXStKXkNQkouqUAg:localhost:8800 2'Q!drnXStKXkNQkouqUAg:localhost:8800 0'Q!drnXStKXkNQkouqUAg:localhost:8800 .'Q!drnXStKXkNQkouqUAg:localhost:8800 ,'Q!drnXStKXkNQkouqUAg:localhost:8800 *'Q!duCKuavMBSfRbTFPsc:localhost:8800&'Q!duCKuavMBSfRbTFPsc:localhost:8800%'Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!duCKuavMBSfRbTFPsc:localhost:8800#'Q!duCKuavMBSfRbTFPsc:localhost:8800"'Q!duCKuavMBSfRbTFPsc:localhost:8800!'Q!duCKuavMBSfRbTFPsc:localhost:8800 'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!dnZVySJLGNtUKsSgXW:localhost:8800T'Q!dnZVySJLGNtUKsSgXW:localhost:8800S'Q!dnZVySJLGNtUKsSgXW:localhost:8800R'Q!dnZVySJLGNtUKsSgXW:localhost:8800Q'Q!dnZVySJLGNtUKsSgXW:localhost:8800P'Q!eLsrBEnrHolwCNgkFW:localhost:8800H'Q!eLsrBEnrHolwCNgkFW:localhost:8800G'Q!eLsrBEnrHolwCNgkFW:localhost:8800F'Q!eLsrBEnrHolwCNgkFW:localhost:8800E'Q!eLsrBEnrHolwCNgkFW:localhost:8800D  d \ T LD<4,$| l eeQ$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800 eeQ$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800؁eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800DeeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800,eeQ$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800keeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800#eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800ցeeQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:88004eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800XeeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800ҁeeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800eeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800\eeQ$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800 /eeQ$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800meeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800 H l olnOQa# $157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1519}{"auth_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}]], "prev_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}]], "type": "m.room.member", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-300", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-300:localhost:8800", "event_id": "$157004181756ejZNp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041817340, "hashes": {"sha256": "zi+j4JHzRYpZ667Ngi8oWJKk4JWSN0C8/FInhzeh21A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rso4R9G+zwUHR+buUo4/wrj/uiM4n5NlMzyGcY8QqxjLskdzxqEOOwi2n2pSZyfW2GnylLlPDoKcFy5cVePkAw"}}, "unsigned": {"age_ts": 1570041817340}} mOQa= $157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1518}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "event_id": "$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA"}, "creator": "@anon-20191002_181700-300:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004181655JUAvO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041816685, "hashes": {"sha256": "qRAfm4Zs+R77EOm3WQdegOlhZNKEq19taai+QUoGE7c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KhbeYywQ4VVlJgY42JppmGVddd9NG8UpVJaR1GXNGT6jsuvLGg2OT87OwapKBwAX9/3AvQ97z+mLJJ4CaKPpAA"}}, "unsigned": {"age_ts": 1570041816685}}leQa$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1517}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU"], "type": "m.room.history_visibility", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041815261, "hashes": {"sha256": "fY5SRhPlU2mlYFWKG866lWnT7DXC85mPFjoP+bJKPuo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E5mOdPRv/rI64byioelwG+uBLOwUUpRAuP4QURI+ym9eH9rfuf8CQzm/x0EVv4SmT7KaBf1sGMy1GFINvFd4BQ"}}, "unsigned": {"age_ts": 1570041815261}}tkeQau$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1516}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc"], "type": "m.room.join_rules", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041814482, "hashes": {"sha256": "e3cWdWjY9f3W7d4h3BeEj/WX3TBIdrNtS3rQM2XxZfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7+3jtGR1dskq+DK17+/6jYqavdh65lPs/UpzqC+nyY5IMj1JVVD7wxRRO3/CiJAzZb3BljoTxzh+3OL9AxyDA"}}, "unsigned": {"age_ts": 1570041814482}} C pmC&OQaq $157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1536}{"auth_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "type": "m.room.power_levels", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"users": {"@anon-20191002_181700-301:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004183264ktTbL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041832457, "hashes": {"sha256": "+JWDyL6I3xmgsenjErgsttCn4oPtBf47Fb3jytPKq6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J5ddUOw1C49LGYyzgi0uPzXZs2SCXcCw/39WRjaFyNPHjS66BwlATRCWfW+pYHQyS1YCSHN76IkpUkQ4gmzzAw"}}, "unsigned": {"age_ts": 1570041832457}}~OQa# $157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1535}{"auth_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}]], "prev_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}]], "type": "m.room.member", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-301", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-301:localhost:8800", "event_id": "$157004183063NdEPw:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041830983, "hashes": {"sha256": "7KaKayeSCgDMs9+pX/6FRa/r1c1NYwuZ7iTrxFcItgU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bY0VEYtOXNbtk8LcV6PIjl7uJBrw3ABcFa+d4/4upI8I4NYkp4IiXKsStgaiI7jzsDrHLhW5RgIg6Oe/IdXCBA"}}, "unsigned": {"age_ts": 1570041830983}} }OQa= $157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1534}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "event_id": "$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE"}, "creator": "@anon-20191002_181700-301:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004183062AwGkL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041830131, "hashes": {"sha256": "o/ZWEJLhCX0Yln9EQ6+wKsUtC4/yqce0SSe2Qso+DBE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cbfTahv2uUGaKExpqApHYJ0qcKUP65Rn1JfUh+uGyVdjJ1GaRSzFm2jOd1mp352qnwDwDZzG3j4VfXrgY7wgBA"}}, "unsigned": {"age_ts": 1570041830131}} gs\?"~cL/uR3 q2 w ` C  x 9  p 1  j P 9 b < fI. ~a>#v[8kP3B%y: N,/ m.room.join_rules>']_m.room.member@anon-20191002_181700-299:localhost:8800c3 ^m.room.guest_accessb' ]m.room.createa/ \m.room.encryption`' [m.room.avatar_3 Zm.room.power_levels^>']Ym.room.member@anon-20191002_181700-298:localhost:8800]' Xm.room.create\- Wm.room.tombstone[3 Vm.room.power_levelsZ3 Um.room.guest_accessY' Tm.room.avatarX/ Sm.room.encryptionW# Rm.room.nameV3 m.room.power_levels>']m.room.member@anon-20191002_181700-304:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-303:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-303:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-302:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-302:localhost:88003 m.room.power_levels' m.room.create%))m.room.aliaseslocalhost:88009 m.room.canonical_alias%))m.room.aliaseslocalhost:88009 m.room.canonical_alias/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-301:localhost:8800' m.room.create- m.room.tombstone9 m.room.canonical_alias%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-301:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 ~m.room.power_levels>']}m.room.member@anon-20191002_181700-300:localhost:8800' |m.room.create- {m.room.tombstone"? zm.room.history_visibility~/ ym.room.join_rules}3 xm.room.power_levels|>']wm.room.member@anon-20191002_181700-300:localhost:8800{3 vm.room.power_levelsz' um.room.createy3 tm.room.power_levelsx%'+sm.room.member@bob:matrix.orgw/ rm.room.join_rulesv"? qm.room.history_visibilityu3 pm.room.guest_accesst3 om.room.power_levelss>']nm.room.member@anon-20191002_181700-299:localhost:8800r' mm.room.createq3 lm.room.power_levelsp- km.room.tombstoneo3 jm.room.power_levelsn% im.room.topicm/ hm.room.server_acll%'+gm.room.member@bob:matrix.orgk7 fm.room.related_groupsj"? em.room.history_visibilityi# dm.room.nameh/ cm.room.join_rulesg/ bm.room.join_rulesf3 am.room.power_levelse"? `m.room.history_visibilityd ,\ k^ k x ' 4 C P ] jw&3BOx'P]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800P]Q@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829N[Q@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800P]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829P]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829P]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800N[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800P]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800P]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800N[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800P]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800P]Q@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800P]Q@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800 % \ . = k  OoNz=oxGgbkOQ? $157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility\jOQ3 $157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access\iOQ3 $157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels~hOQ']$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800VgOQ' $157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.createmfeQ? $Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibilityeeeQ/ $AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rulesgdeQ3 $C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels ceQ']$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800gbeQ3 $m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levelsaaeQ' $YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800m.room.createe`OQ))$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800__OQ9 $157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_aliasp^eQ))$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800j]eQ9 $s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_aliasd\eQ- $99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstoneZ[OQ/ $157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rulesbZOQ? $157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility\YOQ3 $157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access\XOQ3 $157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels~WOQ']$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800VVOQ' $157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.createjUeQ9 $Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_aliaspTeQ))$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800pSeQ))$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800mReQ? $g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibilityeQeQ/ $MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rulesgPeQ3 $_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels OeQ']$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800aNeQ' $jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800m.room.creategMeQ3 $ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levelsdLeQ- $5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstoneZKOQ/ $157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rulesbJOQ? $157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility\IOQ3 $157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access\HOQ3 $157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels~GOQ']$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800  jrqOQa $157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1522}{"auth_events": [["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}], ["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "prev_events": [["$157004181958ixShg:localhost:8800", {"sha256": "nmYsthJMEAkoSimrK1KXTxYwHQn7ozzjWCCpNt77/RE"}]], "type": "m.room.history_visibility", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004181959Afmmv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041819780, "hashes": {"sha256": "rNIcnpdbQKVdv9h7cVo7pZ7Aar5+4IxwxDD0c/3p7Iw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CV4Sh22jL3/8d1uNGaBBNuEah+IMVGtQ521yqrWY8voSnaUpEmyMAkg489mt/TV0LeDBG0RyePE59iIXJBoGCg"}}, "unsigned": {"age_ts": 1570041819780}}hpOQau $157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1521}{"auth_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}], ["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}]], "prev_events": [["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}]], "type": "m.room.guest_access", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004181958ixShg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041819039, "hashes": {"sha256": "SoYsis0m9h7aa3MIJzP/kHh+mHhVpoHwvC+UusLAcf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6VWCpP5Sqy+bqLHOWsH8UpjW5T83tyQ8TVsvGClk5IyoFx3a30C1lbfIHNmcAvqitLVt9N54Tiur7PVU4jk0DA"}}, "unsigned": {"age_ts": 1570041819039}}&oOQaq $157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1520}{"auth_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "prev_events": [["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "type": "m.room.power_levels", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"users": {"@anon-20191002_181700-300:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004181857fcmAB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041818422, "hashes": {"sha256": "VgRLHOSnOHDtrd14ucd8h2lzY2zaibg8Z0xU1eiNFJU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uMqex+ZSxM4yzIzRSzcWxAoHBvjXt1bl7x5UpKIC2D8CKHKLeQqcebyK5nN143Rcjm0wDVqlOaNjaTtSepX7Bg"}}, "unsigned": {"age_ts": 1570041818422}} *T ~  ' % # !~peeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~oeeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~neeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~meeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~leeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~keeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~jeeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~ieeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~heeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~geeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~feeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~eeeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~deeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~ceeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~beeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~aeeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~`eeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~_eeQ$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~^eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~]eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~\eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800~[eeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~ZeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~YeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800hXOOQ$157004182060gAdxi:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hWOOQ$157004182060gAdxi:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hVOOQ$157004182060gAdxi:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hUOOQ$157004181959Afmmv:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hTOOQ$157004181959Afmmv:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hSOOQ$157004181959Afmmv:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hROOQ$157004181958ixShg:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hQOOQ$157004181958ixShg:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800 0hn i  d j  : @QWRc394:I/QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185780kUwpq:localhost:8800I.QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185679NNCIw:localhost:8800I-QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185678lyJsT:localhost:8800T,Qe!KeqmSjifajNKxtgqhj:localhost:8800$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_ET+Qe!KeqmSjifajNKxtgqhj:localhost:8800$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIT*Qe!KeqmSjifajNKxtgqhj:localhost:8800$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMT)Qe!KeqmSjifajNKxtgqhj:localhost:8800$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQT(Qe!KeqmSjifajNKxtgqhj:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QT'Qe!KeqmSjifajNKxtgqhj:localhost:8800$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUI&QO!icheSPMgpemswIdQkw:localhost:8800$157004185177LKzVW:localhost:8800T%Qe!EyyNoldCLUdFHzXTDP:localhost:8800$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xII$QO!icheSPMgpemswIdQkw:localhost:8800$157004184976eGgUf:localhost:8800I#QO!icheSPMgpemswIdQkw:localhost:8800$157004184875Wzayo:localhost:8800I"QO!icheSPMgpemswIdQkw:localhost:8800$157004184774CHMNl:localhost:8800I!QO!icheSPMgpemswIdQkw:localhost:8800$157004184773rCaRK:localhost:8800I QO!icheSPMgpemswIdQkw:localhost:8800$157004184672SfwvS:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184571IVgQM:localhost:8800TQe!EyyNoldCLUdFHzXTDP:localhost:8800$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9QTQe!EyyNoldCLUdFHzXTDP:localhost:8800$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0TQe!EyyNoldCLUdFHzXTDP:localhost:8800$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMTQe!EyyNoldCLUdFHzXTDP:localhost:8800$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjoIQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004184170QHBhx:localhost:8800TQe!EyyNoldCLUdFHzXTDP:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QTQe!uSBqTezaFcMnlowsEf:localhost:8800$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YTQe!EyyNoldCLUdFHzXTDP:localhost:8800$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183969fQFzs:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183868QRvOi:localhost:8800TQe!uSBqTezaFcMnlowsEf:localhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8TQe!uSBqTezaFcMnlowsEf:localhost:8800$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oIQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183467WkNdH:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183366iKFsz:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183365ZxPWz:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183264ktTbL:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183063NdEPw:localhost:8800I QO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183062AwGkL:localhost:8800T Qe!uSBqTezaFcMnlowsEf:localhost:8800$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBET Qe!uSBqTezaFcMnlowsEf:localhost:8800$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigT Qe!uSBqTezaFcMnlowsEf:localhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgT Qe!uSBqTezaFcMnlowsEf:localhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknATQe!uSBqTezaFcMnlowsEf:localhost:8800$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DETQe!uSBqTezaFcMnlowsEf:localhost:8800$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UTQe!uSBqTezaFcMnlowsEf:localhost:8800$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUTQe!uSBqTezaFcMnlowsEf:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwTQe!uSBqTezaFcMnlowsEf:localhost:8800$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4IQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004182361NlgQV:localhost:8800TQe!CNFopUEQTFbzjmLvii:localhost:8800$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoIQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004182060gAdxi:localhost:8800IQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181959Afmmv:localhost:8800 RzFvB } T +  | H  Z & a 8  ` ,\([2b.tK"h4d0c:uA 1@e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R41?e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1>e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1=e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k&<O$157004188598DcHDt:localhost:88001;e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1:e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to&9O$157004188397MRiZP:localhost:8800&8O$157004188296OVWxu:localhost:8800&7O$157004188195thBOS:localhost:8800&6O$157004188194vdqBG:localhost:8800&5O$157004188093UtRbN:localhost:8800&4O$157004187992XwpoQ:localhost:880013e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ12e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw11e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I10e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-41/e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI1.e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w1-e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE1,e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI&+O$157004187190ZLRgN:localhost:8800&*O$157004187089FLOwV:localhost:8800&)O$157004186988RkcKb:localhost:8800&(O$157004186887sKbQU:localhost:8800&'O$157004186786RVgKA:localhost:8800&&O$157004186785fjAIs:localhost:88001%e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg1$e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws1#e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s1"e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us1!e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo1 e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E&O$157004185983tEalY:localhost:8800&O$157004185982diSTq:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:88001e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800& O$157004184672SfwvS:localhost:8800& O$157004184571IVgQM:localhost:88001 e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G01 e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM1 e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:88001e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&~O$157004183365ZxPWz:localhost:8800&}O$157004183264ktTbL:localhost:8800&|O$157004183063NdEPw:localhost:8800&{O$157004183062AwGkL:localhost:88001ze$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1ye$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1xe$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1we$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1ve$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1ue$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1te$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1se$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41re$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1qe$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA{&pO$157004182060gAdxi:localhost:8800&oO$157004181959Afmmv:localhost:8800 ( t 8 Ck->m x 6Q([^ i deQ- $99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstoneZOQ/ $157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rulesbOQ? $157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility\OQ3 $157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access\OQ3 $157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levelsOQ']$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800joinVOQ' $157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.createj eQ9 $s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_aliasp eQ))$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800\vOQ3 $157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access\uOQ3 $157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levelstOQ']$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800joinVsOQ' $157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.createmreQ? $yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibilityeqeQ/ $rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules oeQ']$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800joinaneQ' $XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800m.room.creategmeQ3 $pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsdleQ- $IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstonehkOQ'+$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.orgbanZjOQ/ $157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rulesbiOQ? $157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibilitymeQ? $g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibilitye~eQ/ $MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rulesj |eQ']$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800joina{eQ' $jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800m.room.creategzeQ3 $ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levelsdyeQ- $5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstoneZxOQ/ $157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rulesbwOQ? $157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility  _teQaK$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1525}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA"], "type": "m.room.power_levels", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"users": {"@anon-20191002_181700-300:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041822194, "hashes": {"sha256": "iUnfqCn+ra5qohWsQd2V1BLqgO/4mFNb9VcWWaQg0tE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wsf9NRxuEn+Qj6F6gC+3YDXA2P1bsOKBicQAMFpOErTJ0IY+iIBHRNOW/9DpKde3RFFhkPNBAw5fkm5RwFKIAA"}}, "unsigned": {"age_ts": 1570041822194, "replaces_state": "$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc"}}=seQa$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1524}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk"], "type": "m.room.tombstone", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!NrxQuziwSWzsHuXIlG:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041816578, "hashes": {"sha256": "bNs5kexAbSQCn5oSOa+QELnbQ+x4nBDXVUvk2B2khr0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ZKiBK/9pJYIeIhEz6/e2IzbN7QOp5qCCwh40dL2fQB8+BEXTAyv+JY8R+9rcdemUbDgFUTyvUXV8gmbFJb8DQ"}}, "unsigned": {"age_ts": 1570041816578}}arOQag $157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1523}{"auth_events": [["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}], ["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "prev_events": [["$157004181959Afmmv:localhost:8800", {"sha256": "IFijkB8HJCzxWfZDhRCgVlcnOYCkLXVfsNKrIEfWeDI"}]], "type": "m.room.join_rules", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004182060gAdxi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041820714, "hashes": {"sha256": "r5XBSYVya7Qsa4yyrNwSLrTUnxHMtpW8R5Z5/TUHzMQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bfdkql3CW3EtXa4d3lq/xRnkn5NNPWFi+NbhNh3KCKf+Q/SZ4esYcxIIZIQmqm8dgEXoU0nk7bhtfFnPzhReBA"}}, "unsigned": {"age_ts": 1570041820714}}   *txeQau$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1529}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU"], "type": "m.room.join_rules", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041826028, "hashes": {"sha256": "BY/yibdVqkmnNw/Htz4jS4FEaBNsE9qadblR8uthopU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sMThNl73g9luBkfU3z1UkIT4qQ9DJ9M6ol3LS/tlTn1wMHsX33r4JGBhQaAFVaqrxFTiip2CA01uX387LG3aCQ"}}, "unsigned": {"age_ts": 1570041826028}}kweQac$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1528}{"auth_events": ["$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "type": "m.room.power_levels", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"users": {"@anon-20191002_181700-301:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041825112, "hashes": {"sha256": "TGYgOx60mJq/2O48M3TNQCR+6D/gjdJ587lgjA+LRgU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "42p0zDfs/nelmVqrG/itircKHNRe8wpr0w3hRbPg/Jne1DYiC6373aSYZ+VNdD3cwAMU5wyBMAiKZQYFS5DYBA"}}, "unsigned": {"age_ts": 1570041825112}}vveQay$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1527}{"auth_events": ["$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4"], "prev_events": ["$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4"], "type": "m.room.member", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-301", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-301:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041824590, "hashes": {"sha256": "f65FXma5mEh3eq9c0fv0fK6gYSAsfeEJqIJrfIX9J3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6MenPsGCp7pqwH0vvc7d1fsKZrQPLQAn0B7OT72qf2WcwNmTXwqSMR7lhCiwNRP3DhpUzWaf6AhWzGzNnwf+DA"}}, "unsigned": {"age_ts": 1570041824590}}iueQa_$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1526}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-301:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041823945, "hashes": {"sha256": "3TDzujl5u2KxORJ/eR1yaYZ8suxgMqMErMhNBz0ywwM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n77UdKUYqhJ02nDUay0AwE3J9AomFlb92e0KrL4m1MRbBjeq9RnOAWEwPKk/mLg7CiLFI+xaPWr7zTM+psAHAA"}}, "unsigned": {"age_ts": 1570041823945}} X wX |eQa!$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1533}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg"], "type": "m.room.canonical_alias", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"alias": "#__ANON__-13:localhost:8800"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041829231, "hashes": {"sha256": "RKXNQn6hYEE0rdkLNHotcreF03Bo2cpmQLwpoo9xiRM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/9hjdU3SqOnGdqGyMHO61e0OtjoR46HjZAJCLhZmGcMPVWZCOlGgXwKP5d8yO5lOHGe62Pm5gbYMW1mdI8/NAQ"}}, "unsigned": {"age_ts": 1570041829231}}u{eQaw$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1532}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA"], "type": "m.room.aliases", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": ["#__ANON__-13:localhost:8800", "#__ANON__-14:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041828567, "hashes": {"sha256": "hzOh2UCGQVjqpGNFodmab/fNa6t55U5+z9DGAF3rXzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hbeYVvbCKK6dbYo8RsM3ZZLCvb8UpmxJmyJxSNj8OOwv23gCqMtnSUTY5wNwZ+TkfoWxuud+kEdBug1/gNEvCA"}}, "unsigned": {"age_ts": 1570041828567, "replaces_state": "$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA"}}zeQa5$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1531}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE"], "type": "m.room.aliases", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": ["#__ANON__-13:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041827778, "hashes": {"sha256": "0oiTDAtIAcIs2v1+vancLUZIojNLLolf1YvqSfSPU/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OuLzHfallQSrsHUfbLyfJLnDI61BSOTt4txcJQJT1sWGE2HTo9PS73CuxwltAAkA9I6XwJBDIohi0g387l2cAA"}}, "unsigned": {"age_ts": 1570041827778}}yeQa$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1530}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U"], "type": "m.room.history_visibility", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041826646, "hashes": {"sha256": "D750+BEB73E7R/4lhfO7j3a2jaNHyt1lJpHV8mAFVrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/4FfLD8VkwdV3Xw579qdKGRJ41F8bKhJwdwGEeFtqiXwTwgEXKOd6LkFzv0YupUBKmLMshEyUVl0L73bkjjPBA"}}, "unsigned": {"age_ts": 1570041826646}} "j*T ~  = g { ywus2\pnlj~eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~ eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~ eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800h OOQ$157004183969fQFzs:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800h OOQ$157004183969fQFzs:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800h OOQ$157004183969fQFzs:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hOOQ$157004183868QRvOi:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hOOQ$157004183868QRvOi:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hOOQ$157004183868QRvOi:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800~eeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~~eeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~}eeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800h|OOQ$157004183467WkNdH:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800h{OOQ$157004183467WkNdH:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hzOOQ$157004183467WkNdH:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hyOOQ$157004183366iKFsz:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hxOOQ$157004183366iKFsz:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hwOOQ$157004183366iKFsz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hvOOQ$157004183365ZxPWz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800huOOQ$157004183365ZxPWz:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800htOOQ$157004183365ZxPWz:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hsOOQ$157004183264ktTbL:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hrOOQ$157004183264ktTbL:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hqOOQ$157004183063NdEPw:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800 `Lt l d` \  &Rd|\Th^hhQeeQ$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800ZeeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800eeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800 iGQQ$83_outlier_C:localhost:42455$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 siGQQ$83_outlier_C:localhost:42455$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 qiGQQ$83_outlier_C:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 reeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800 _3QQ$82:localhost:42455$1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 oeeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800A333$80:localhost:42455$79:localhost:42455!13:localhost:42455 ZeeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800 $eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800 %eeQ$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800geeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800 c KZ,tHvHd6 ~ P " j <  X * r D  ^ 0 zLf8 R$n@b4|N -]@anon-20191002_181700-373:localhost:8800-]@anon-20191002_181700-332:localhost:8800-]@anon-20191002_181700-331:localhost:8800-]@anon-20191002_181700-330:localhost:8800~+[@anon-20191002_181700-32:localhost:8800-]@anon-20191002_181700-329:localhost:8800}-]@anon-20191002_181700-328:localhost:8800|-]@anon-20191002_181700-327:localhost:8800{-]@anon-20191002_181700-326:localhost:8800z-]@anon-20191002_181700-325:localhost:8800y-]@anon-20191002_181700-324:localhost:8800x-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:8800-]@anon-20191002_181700-370:localhost:8800+[@anon-20191002_181700-36:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:8800-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:8800-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-346:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-344:localhost:8829-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800-]@anon-20191002_181700-341:localhost:8800-]@anon-20191002_181700-340:localhost:8829+[@anon-20191002_181700-33:localhost:8800-]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-338:localhost:8800-]@anon-20191002_181700-337:localhost:8800-]@anon-20191002_181700-336:localhost:8800-]@anon-20191002_181700-333:localhost:8800 %>x 0 ` e  . StK*Ty9qi7Q3 e!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ\6Q/ O!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rules$157004185983tEalY:localhost:8800d5Q? O!jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility$157004185982diSTq:localhost:8800^4Q3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access$157004185881ahRFW:localhost:8800^3Q3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels$157004185780kUwpq:localhost:88002Q']O!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$157004185679NNCIw:localhost:8800X1Q' O!jIfvTrwedrWLubsnlM:localhost:8800m.room.create$157004185678lyJsT:localhost:8800f0Q- e!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstone$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Eo/Q? e!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibility$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIg.Q/ e!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rules$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMi-Q3 e!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ ,Q']e!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qc+Q' e!KeqmSjifajNKxtgqhj:localhost:8800m.room.create$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU^*Q3 O!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels$157004185177LKzVW:localhost:8800i)Q3 e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI\(Q/ O!icheSPMgpemswIdQkw:localhost:8800m.room.join_rules$157004184976eGgUf:localhost:8800d'Q? O!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility$157004184875Wzayo:localhost:8800^&Q3 O!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access$157004184774CHMNl:localhost:8800^%Q3 O!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels$157004184773rCaRK:localhost:8800$Q']O!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$157004184672SfwvS:localhost:8800X#Q' O!icheSPMgpemswIdQkw:localhost:8800m.room.create$157004184571IVgQM:localhost:8800f"Q- e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstone$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qo!Q? e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0g Q/ e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rules$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMiQ3 e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo^Q3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels$157004184170QHBhx:localhost:8800 Q']e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QiQ3 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YcQ' e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.create$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4gQ))O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800$157004183969fQFzs:localhost:8800aQ9 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias$157004183868QRvOi:localhost:8800rQ))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8lQ9 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o\Q/ O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rules$157004183467WkNdH:localhost:8800dQ? O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility$157004183366iKFsz:localhost:8800^Q3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access$157004183365ZxPWz:localhost:8800^Q3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels$157004183264ktTbL:localhost:8800 dJpV$>2j8p> v D|J P\* v D  | J  V $ \ * P j  1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieoo1e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4 1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig s1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0 1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV01e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM %1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM $1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM #1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0 1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIk1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIj1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIi1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw91e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw81e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw71e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yn1e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ym1e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yl1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0%1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0#1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0"1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 01e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI 1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE"1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8d1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8e1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts 1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cd1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cc1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cb1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__ca1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48?1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48>1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48=1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo 1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek{1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekz1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7eky1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc 1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc 1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA Y1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr81e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0R1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0Q1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0P1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego  aOQag $157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1539}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183366iKFsz:localhost:8800", {"sha256": "fG+thi3Rq0cIgpD3RdtBm196M3enqCgj/LQ2e8ro6Lc"}]], "type": "m.room.join_rules", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004183467WkNdH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041834749, "hashes": {"sha256": "OCk745LTy8VlMRvIEy6lY8uQ2LhSsvDJr7+R9y0jU2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZZsHEga8//pZxYvpi4JBMMrHTm9Ik5JzooVRKSqcjm1cZw/pyB0eOl8DMj9310z5xwoDmweo7FieWlDfqdJQCg"}}, "unsigned": {"age_ts": 1570041834749}}rOQa $157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1538}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183365ZxPWz:localhost:8800", {"sha256": "fDIG3tg5nFv9GntOBSzErtaPWKwJtcQJtH+4vHEeuSA"}]], "type": "m.room.history_visibility", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004183366iKFsz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041833965, "hashes": {"sha256": "ONRxwJf0ssdKYW33UI4EBJ2pcqmJdyURfGf2eGkG/ss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QjxC5SsoSX+cW9rxa5kX6b8i+Ri0xfbYvPdZExF1eyx6RgzlS806WJFSYqAb3aW/8XcuoiyIgfhFpqFgj4VsCg"}}, "unsigned": {"age_ts": 1570041833965}}hOQau $157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1537}{"auth_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}], ["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}]], "prev_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}]], "type": "m.room.guest_access", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004183365ZxPWz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041833265, "hashes": {"sha256": "VhYb6IFwB6XIJWj6SftuBxWGk4zldk9PJVO//sDqZ34"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "om/udf2q8etBujHlUft1bK0/gLHbf6b2jwOJRDTNlhvpxPSTKR6ZvxnrGZzsGPufLYmsdayJDVn08oWZVZBsCQ"}}, "unsigned": {"age_ts": 1570041833265}} 0hc t  o  u ) E KFLhy"to#?PT7Qe1!aVxOoyiLLnxmzgLJat:localhost:8800$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wT6Qe0!hYPSaMPGsLnvYSmwhg:localhost:8800$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyET5Qe/!hYPSaMPGsLnvYSmwhg:localhost:8800$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxII4QO.!fuHSJcznvGQnoYoLPW:localhost:8800$157004187190ZLRgN:localhost:8800I3QO-!fuHSJcznvGQnoYoLPW:localhost:8800$157004187089FLOwV:localhost:8800I2QO,!fuHSJcznvGQnoYoLPW:localhost:8800$157004186988RkcKb:localhost:8800I1QO+!fuHSJcznvGQnoYoLPW:localhost:8800$157004186887sKbQU:localhost:8800I0QO*!fuHSJcznvGQnoYoLPW:localhost:8800$157004186786RVgKA:localhost:8800I/QO)!fuHSJcznvGQnoYoLPW:localhost:8800$157004186785fjAIs:localhost:8800T.Qe(!hYPSaMPGsLnvYSmwhg:localhost:8800$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgT-Qe'!hYPSaMPGsLnvYSmwhg:localhost:8800$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsT,Qe&!hYPSaMPGsLnvYSmwhg:localhost:8800$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sT+Qe%!hYPSaMPGsLnvYSmwhg:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usT*Qe$!hYPSaMPGsLnvYSmwhg:localhost:8800$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCoT)Qe#!KeqmSjifajNKxtgqhj:localhost:8800$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQT(Qe"!KeqmSjifajNKxtgqhj:localhost:8800$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_EI'QO!!jIfvTrwedrWLubsnlM:localhost:8800$157004185983tEalY:localhost:8800I&QO !jIfvTrwedrWLubsnlM:localhost:8800$157004185982diSTq:localhost:8800I%QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185881ahRFW:localhost:8800I$QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185780kUwpq:localhost:8800I#QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185679NNCIw:localhost:8800I"QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185678lyJsT:localhost:8800T!Qe!KeqmSjifajNKxtgqhj:localhost:8800$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIT Qe!KeqmSjifajNKxtgqhj:localhost:8800$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMTQe!KeqmSjifajNKxtgqhj:localhost:8800$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQTQe!KeqmSjifajNKxtgqhj:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QTQe!KeqmSjifajNKxtgqhj:localhost:8800$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUTQe!EyyNoldCLUdFHzXTDP:localhost:8800$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xITQe!EyyNoldCLUdFHzXTDP:localhost:8800$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9QIQO!icheSPMgpemswIdQkw:localhost:8800$157004184976eGgUf:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184875Wzayo:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184774CHMNl:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184773rCaRK:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184672SfwvS:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184571IVgQM:localhost:8800TQe!EyyNoldCLUdFHzXTDP:localhost:8800$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0TQe !EyyNoldCLUdFHzXTDP:localhost:8800$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMTQe !EyyNoldCLUdFHzXTDP:localhost:8800$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjoTQe !EyyNoldCLUdFHzXTDP:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QTQe !uSBqTezaFcMnlowsEf:localhost:8800$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YTQe !EyyNoldCLUdFHzXTDP:localhost:8800$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183969fQFzs:localhost:8800I QO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183868QRvOi:localhost:8800T Qe!uSBqTezaFcMnlowsEf:localhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8T Qe!uSBqTezaFcMnlowsEf:localhost:8800$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oT Qe!uSBqTezaFcMnlowsEf:localhost:8800$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEI QO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183467WkNdH:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183366iKFsz:localhost:8800 [ ?[wOQa $157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1543}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183467WkNdH:localhost:8800", {"sha256": "yRsqayXTqVPDQYaoHjh0NSgVH9n7AfMl34N7i/nKJAA"}]], "type": "m.room.canonical_alias", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"alias": "#__ANON__-13:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004183868QRvOi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041838234, "hashes": {"sha256": "cM5S6UD1F8aA9L0PjpvcXpnKEzrXlO5P0LISmelVRhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dl1b7NwOKbnVzaAajc2B69x7uwLhE89pEv/sEgzQSSfs3IFuUtv+hZ+MZIvElnQ+aNaLLA03ssf1KAeHHvyFBA"}}, "unsigned": {"age_ts": 1570041838234}}:eQa$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1542}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o"], "type": "m.room.aliases", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": []}, "depth": 11, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041837207, "hashes": {"sha256": "xA8HzAs6E6aO9JKguIJkULwo5Gr+ozskgHILV+mQGts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rYYJzxZjMQnt06Kfady0N/DCwrVkZfl3rzLM0Ou481fsr0bIffpSHXqx3Z4Iu0MHHwaGsh57qdBI1dFMRv+HDA"}}, "unsigned": {"age_ts": 1570041837207, "replaces_state": "$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg"}}'eQa[$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1541}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE"], "type": "m.room.canonical_alias", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041836357, "hashes": {"sha256": "jOZTKIUgJgWzHxQAkpMT6WwczBlyooi2Lr8CFkqpueI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aO4fNj8xtxu1QWmUJQe7lThO5/QJQ6BA576UypDj22+rXm/4SfR0BZFiuXlDibNvaZamKl3zGxfGT154LE/nAA"}}, "unsigned": {"age_ts": 1570041836357, "replaces_state": "$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig"}}=eQa$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1540}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig"], "type": "m.room.tombstone", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!vpuivIQDEhyuhOLWpg:localhost:8800"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041830029, "hashes": {"sha256": "xMME2OtwKYaxY0wbLOhxYWEEFm12e/xrZVdi6KsDmKQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0G0xcrRJvhGLrND99s5wVZ/Jg2yP63zI8xvsJpEv2Q7b8bxXVzrjwqFn2CvN8yDE7u3xAG5bfwOCpjnQ2De4Dg"}}, "unsigned": {"age_ts": 1570041830029}} t T d L \ <4  |$ l,DeeQ$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800 &eeQ$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0!sPWVGnipjiiWQpywNO:localhost:88000eeQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800eeQ$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800eeQ$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800heeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800ہeeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800ہeeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800meeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU!mogJVPxghalmKbblUq:localhost:8800 eeQ$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800)eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800ˁeeQ$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800ԁeeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:88005eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800ЁeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800>eeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800 eeQ$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800 ZeeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800 ceeQ$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800 _eeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800 C TP   p 7 4  T  p 7 S  o6Rqnm5Q8n5QU8e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHksha2568e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIsha256 8e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8sha256 Q8e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucsha256 O8e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgsha256 H8e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3pssha256 8e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_cksha256 8e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAsha256 8e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQsha256 ^8e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIsha2568e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQsha256 x8e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqksha2568e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5Usha2568e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcsha2568e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTssha256 8e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAsha2568e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgsha2568e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Ysha256 47e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYsha256i8e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0sha256%8e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCksha2568e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUsha256\8e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIsha256L8e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuYsha2568e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszksha2568e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQsha256>8e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIsha2568e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgsha2568e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYsha256;8e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0sha256 m8e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwsha256\8e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Ysha256 8e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qgsha2568e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hssha2568e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgsha2568e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgsha2568e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCosha2568e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4sha256 8e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMsha2568e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIsha256_8e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagsha256k8e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Msha256`8e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMsha256v8e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwsha2568e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcsha2568e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7ssha2568e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUsha2568e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0sha256Y8e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wsha2568e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xwsha2568e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8sha256 7e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYsha256^8e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9Esha2568e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0ksha2568e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-ksha256 m8e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgsha2568e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czyssha2568e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4sha25638e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUsha25698e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIsha2568e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Esha256e8e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQsha256c8e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIsha256O8e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMosha256898e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175ksha256 Q8e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKEsha256 8e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcsha256 "]& $ U n D@IqY'&)h}Q/ e'!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rules$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsj|Q3 e&!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s {Q']e%!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usdzQ' e$!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.create$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCoyQ3 ee#!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQgxQ- e"!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstone$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E]wQ/ O!!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rules$157004185983tEalY:localhost:8800evQ? O !jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility$157004185982diSTq:localhost:8800_uQ3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access$157004185881ahRFW:localhost:8800_tQ3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels$157004185780kUwpq:localhost:8800sQ']O!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$157004185679NNCIw:localhost:8800YrQ' O!jIfvTrwedrWLubsnlM:localhost:8800m.room.create$157004185678lyJsT:localhost:8800pqQ? e!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibility$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIhpQ/ e!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rules$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMjoQ3 e!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ nQ']e!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QdmQ' e!KeqmSjifajNKxtgqhj:localhost:8800m.room.create$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUlQ3 ee!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjogkQ- e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstone$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q]jQ/ O!icheSPMgpemswIdQkw:localhost:8800m.room.join_rules$157004184976eGgUf:localhost:8800eiQ? O!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility$157004184875Wzayo:localhost:8800_hQ3 O!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access$157004184774CHMNl:localhost:8800_gQ3 O!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels$157004184773rCaRK:localhost:8800fQ']O!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$157004184672SfwvS:localhost:8800YeQ' O!icheSPMgpemswIdQkw:localhost:8800m.room.create$157004184571IVgQM:localhost:8800pdQ? e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0hcQ/ e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rules$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMjbQ3 e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo aQ']e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q`Q3 ee !uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUd_Q' e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.create$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4h^Q))O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800$157004183969fQFzs:localhost:8800b]Q9 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias$157004183868QRvOi:localhost:8800\Q))ee!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg M+j8pW> w E ] } K  Q  W % _ -e3k9q? wE}K%Q1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak %1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw 1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM 1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 s1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 61e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx81e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U'1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM21e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c/1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM_1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8z1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY f1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c>1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 \1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8v1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM01e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIb1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4f1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ{1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY}1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIB1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI*1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE+1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8(/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU%1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs{1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k 1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wh1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UJ1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y40e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcz1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsI1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEc1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAV1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEa1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI11e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg  \ov eQay$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1547}{"auth_events": ["$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4"], "prev_events": ["$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4"], "type": "m.room.member", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-302", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-302:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041841316, "hashes": {"sha256": "LPlriNeqYL9im+V7GY1DRo/1+3Ggjy3P0FNNFTzvx6M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e7gxScPpZDM7Ua+z5C4HUrpNu+2/w8nkddF+I4Hy+AswowcCvoREbKQshApK6NueWwsqwmQ6LUynFxWJ0d8gBA"}}, "unsigned": {"age_ts": 1570041841316}}` eQaM$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1546}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8"], "type": "m.room.power_levels", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"users": {"@anon-20191002_181700-301:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041840672, "hashes": {"sha256": "cjFbkEAjOeDmFLaLCKo2dacjpHQpKO5GsF9gXLxGEis"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CuDOZkF84Wha7FQ96vFyFyzU0ZK+MK6FAt0IBd48hmqbSwHVJzgmJLrLLlgTlwhyZs5jxV7UzzAjZ96G1cZoBg"}}, "unsigned": {"age_ts": 1570041840672, "replaces_state": "$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU"}}ieQa_$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1545}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-302:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041839821, "hashes": {"sha256": "/F/Zgytzm1nOXOL5DV6/d9te0Mamh7vTl+hS+sGyA5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fDTirVelpeFfn5iQBgc6Bmh6j4yJ5ovFDQjPIAYvF911iEZsKewcC8nObALw9XMZu4eTjUeLP75LeeEhJHp1DQ"}}, "unsigned": {"age_ts": 1570041839821}} OQae $157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1544}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183868QRvOi:localhost:8800", {"sha256": "ueuGwYRtYpziD+mofnicj7XZEO7svVIJWuJPcdcGdAQ"}]], "type": "m.room.aliases", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": ["#__ANON__-13:localhost:8800", "#__ANON__-14:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "event_id": "$157004183969fQFzs:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041839645, "hashes": {"sha256": "WTmO9bMC23vRqTTap1himlTKbO7IFW0taR7y+qSnkgE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uY/aS3lythDlTG4YUD34YnEq+D8XSUBKoYoxgSB16U4n6szrD1ocGSHrBVbsXRt6HKl0F7f+IDkhriBNK8Z2CQ"}}, "unsigned": {"age_ts": 1570041839645}} FVj8p> v D  | J  P  V V $ b \ *0i7o= uC{IP1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI T1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y +1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c 1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU01e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to0e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE|1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY ?1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY i1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0N1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM 1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 b1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8>1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY 1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU`1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 E1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k21e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA a1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE61e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM}1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M l1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE i1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc[1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM41e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg(1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Io1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg x1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM >1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsb1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYe1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo$1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QL1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A Q1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI 1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo 8l D `86]c!E@anon-20191002_181700-311:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtpJjJyXl9fZkwjbXE5QncKMDAyZnNpZ25hdHVyZSAlQMVETAI9JwraP-0coRf6nU91QgVwG3VZKwPV1QeoogoBNVFQNMSXM127.0.0.1Perl + Net::Async::HTTP/0.44m:5]c!E@anon-20191002_181700-310:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpGdCZ5bVg2OF5MNENsZTUKMDAyZnNpZ25hdHVyZSAGdnSPXhdcyvh2jrndHbGjSQGNcRvNC_jdA14cLC5axwoUKYXDPZQOO127.0.0.1Perl + Net::Async::HTTP/0.44m%4]c!E@anon-20191002_181700-309:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQoOEPQWZYGAR127.0.0.1Perl + Net::Async::HTTP/0.44m#3]c!E@anon-20191002_181700-308:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgoVRKBCOUWEF127.0.0.1Perl + Net::Async::HTTP/0.44ms2]c!E@anon-20191002_181700-307:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgoBEZNVUIADU127.0.0.1Perl + Net::Async::HTTP/0.44m .1]c!E@anon-20191002_181700-306:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwoXZDIPYWWOD127.0.0.1Perl + Net::Async::HTTP/0.44m0]c!E@anon-20191002_181700-305:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQoPDQTBQSPGX127.0.0.1Perl + Net::Async::HTTP/0.44m&/]c!E@anon-20191002_181700-304:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1OwoMQWNAFYDXK127.0.0.1Perl + Net::Async::HTTP/0.44məB.]c!E@anon-20191002_181700-303:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAoFUOYNGGDMQ127.0.0.1Perl + Net::Async::HTTP/0.44mp,-]c!E@anon-20191002_181700-302:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQoPAWIWMHYHH127.0.0.1Perl + Net::Async::HTTP/0.44m=o Vy? _ 2  ~ Q % q D  c 6 U (uHg;ZrER%.zN!m@_2Ll,-,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 +Q !nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 +Q !nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!ntuwVdUxfzNIhIKYaz:localhost:880077,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 66,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 55,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 44,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 33,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 22,Q!ntuwVdUxfzNIhIKYaz:localhost:880011,Q!ntuwVdUxfzNIhIKYaz:localhost:880000,Q!ntuwVdUxfzNIhIKYaz:localhost:8800//,Q!ntuwVdUxfzNIhIKYaz:localhost:8800..,Q!ntuwVdUxfzNIhIKYaz:localhost:8800--,Q!ntuwVdUxfzNIhIKYaz:localhost:8800,,,Q!ntuwVdUxfzNIhIKYaz:localhost:8800+++Q !ntuwVdUxfzNIhIKYaz:localhost:8800**,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800+Q !nteAxExBGJfaGIpuCx:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800+Q !nftGLlLhVgzOwOFufp:localhost:8800,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L L,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K K,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J J,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I I,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H H,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G G,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F F,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E E,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D D+Q !mvgUHEsfGqDkPQUvfG:localhost:8800 C C,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800+Q !msMfSdLIAvklSSAnci:localhost:8800,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 +Q !mogJVPxghalmKbblUq:localhost:8800 ,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!nvclDopiBLEOKBIheH:localhost:8800BB,Q!nvclDopiBLEOKBIheH:localhost:8800AA+Q !nvclDopiBLEOKBIheH:localhost:8800@@,Q!ntuwVdUxfzNIhIKYaz:localhost:8800::,Q!ntuwVdUxfzNIhIKYaz:localhost:880099,Q!ntuwVdUxfzNIhIKYaz:localhost:880088,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800 Vy? _ 2  ~ Q % q D  c 6 U (uHg;ZrER%.zN!m@_2Ll,-,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 +Q !nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 +Q !nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!ntuwVdUxfzNIhIKYaz:localhost:880077,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 66,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 55,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 44,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 33,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 22,Q!ntuwVdUxfzNIhIKYaz:localhost:880011,Q!ntuwVdUxfzNIhIKYaz:localhost:880000,Q!ntuwVdUxfzNIhIKYaz:localhost:8800//,Q!ntuwVdUxfzNIhIKYaz:localhost:8800..,Q!ntuwVdUxfzNIhIKYaz:localhost:8800--,Q!ntuwVdUxfzNIhIKYaz:localhost:8800,,,Q!ntuwVdUxfzNIhIKYaz:localhost:8800+++Q !ntuwVdUxfzNIhIKYaz:localhost:8800**,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800+Q !nteAxExBGJfaGIpuCx:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800+Q !nftGLlLhVgzOwOFufp:localhost:8800,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L L,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K K,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J J,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I I,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H H,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G G,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F F,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E E,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D D+Q !mvgUHEsfGqDkPQUvfG:localhost:8800 C C,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800+Q !msMfSdLIAvklSSAnci:localhost:8800,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 +Q !mogJVPxghalmKbblUq:localhost:8800 ,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!nvclDopiBLEOKBIheH:localhost:8800BB,Q!nvclDopiBLEOKBIheH:localhost:8800AA+Q !nvclDopiBLEOKBIheH:localhost:8800@@,Q!ntuwVdUxfzNIhIKYaz:localhost:8800::,Q!ntuwVdUxfzNIhIKYaz:localhost:880099,Q!ntuwVdUxfzNIhIKYaz:localhost:880088,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800 Db0A\*yGMS! Y ( D   a / |8g5 J v m; s_  R 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gk1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gj0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioS1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioR1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioQ1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk 1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk 1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk 1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAp1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gi1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY 1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY 1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAt1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU c1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU b1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8~1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8}1e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks~1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c=1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c< 1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc]1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEH>21e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEJ1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEI1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkZ1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroAj1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugd1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9ka !~z v 2 Z V RNv 2.*&Nv veeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800iuOOQ$157004187190ZLRgN:localhost:8800$157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800itOOQ$157004187089FLOwV:localhost:8800$157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800isOOQ$157004186988RkcKb:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800irOOQ$157004186887sKbQU:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800iqOOQ$157004186786RVgKA:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800peeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800oeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800neeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800meeQ$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800leeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800keeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800ijOOQ$157004185983tEalY:localhost:8800$157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800iiOOQ$157004185982diSTq:localhost:8800$157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800ihOOQ$157004185881ahRFW:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800igOOQ$157004185780kUwpq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800ifOOQ$157004185679NNCIw:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800eeeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800deeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800ceeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800beeQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800aeeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800`eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800i_OOQ$157004184976eGgUf:localhost:8800$157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i^OOQ$157004184875Wzayo:localhost:8800$157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i]OOQ$157004184774CHMNl:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i\OOQ$157004184773rCaRK:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i[OOQ$157004184672SfwvS:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800ZeeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800YeeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800XeeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800WeeQ$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800VeeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800 =#BzH  |U  $a/g 5 J  \ * m; O V  P t  D  vj8)#d#d1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ {1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w i1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ $0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMl1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4~1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo01e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ:1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw9 D01e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewk1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q71e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw)1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo 1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4b1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hko1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ61e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gq1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 S1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI21e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk V1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwa1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4x1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk31e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI~1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngN1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIM1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r41e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc001e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAm1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY21e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJki1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 >1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk  jL#p>  v D  | J   Q  1 W % [ ] +ic7o= uC{I)O8Uj1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Ay1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0N1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIu1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gd1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY 1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMy1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsO1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0S1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu81e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY01e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYw1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE p1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE I1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcQ1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 A1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 91e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw.1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0*1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7oz1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F41e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs{1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI21e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc *1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg+1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA861e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw d1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y  d \ T LD<5|.&t eeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800 ΁eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:88009eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800=eeQ$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800eeQ$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800jeeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw!sPWVGnipjiiWQpywNO:localhost:8800/eeQ$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800BeeQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800AeeQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800(eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800ށeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829beeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800eeQ$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800 3eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU!zuCqeooOnfWkYrQdxA:localhost:8800q 9} 3 w -fJ.gCt e]]Q=$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU@anon-20191002_181700-320:localhost:8800@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800joinanon-20191002_181700-320Cs e]]Q=$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U@anon-20191002_181700-319:localhost:8800@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800joinanon-20191002_181700-319Cr e]]Q=$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI@anon-20191002_181700-318:localhost:8800@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800joinanon-20191002_181700-318Cq e]]Q=$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4@anon-20191002_181700-317:localhost:8800@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800joinanon-20191002_181700-317Cp e]]Q=$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648@anon-20191002_181700-312:localhost:8800@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800joinanon-20191002_181700-312Co e]]Q=$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800joinanon-20191002_181700-311Cn e]]Q=$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800joinanon-20191002_181700-311Cm e]]Q=$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800joinanon-20191002_181700-311Cl e]]Q=$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw@anon-20191002_181700-310:localhost:8800@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800joinanon-20191002_181700-310Ck e]]Q=$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk@anon-20191002_181700-308:localhost:8800@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800joinanon-20191002_181700-308Cj e]]Q=$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU@anon-20191002_181700-307:localhost:8800@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800joinanon-20191002_181700-307Ci e]]Q=$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY@anon-20191002_181700-306:localhost:8800@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800joinanon-20191002_181700-3068h O]]Q=$157004188093UtRbN:localhost:8800@anon-20191002_181700-305:localhost:8800@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800joinanon-20191002_181700-305Cg e]]Q=$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI@anon-20191002_181700-305:localhost:8800@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800joinanon-20191002_181700-3058f O]]Q=$157004186786RVgKA:localhost:8800@anon-20191002_181700-304:localhost:8800@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800joinanon-20191002_181700-304Ce e]]Q=$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us@anon-20191002_181700-304:localhost:8800@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800joinanon-20191002_181700-3048d O]]Q=$157004185679NNCIw:localhost:8800@anon-20191002_181700-303:localhost:8800@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800joinanon-20191002_181700-303Cc e]]Q=$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q@anon-20191002_181700-303:localhost:8800@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800joinanon-20191002_181700-3038b O]]Q=$157004184672SfwvS:localhost:8800@anon-20191002_181700-302:localhost:8800@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800joinanon-20191002_181700-302Ca e]]Q=$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q@anon-20191002_181700-302:localhost:8800@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800joinanon-20191002_181700-302 E<  \5t- %| l d  U  MeeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800_eeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:88000eeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800HeeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800ǁeeQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800eeQ$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms!uxKymrHZeXRYCZwekU:localhost:88006eeQ$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800 eeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800 feeQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800 4eeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800eeQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800eeQ$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800`eeQ$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800 &eeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800 EeeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800ueeQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    X x p h ` P H @ 8 0 (    xph`0XPH@8( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@Q|O{NzMyLxKwIvHuGtFsDrCqBpAo?n>m=l<k:j9i8h7g5f4e3d2c0b/a.`-_+^*])\([&Z%Y$X#W!V UTSRQPONMLKJIHGF E D C BA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwusrqponmkihgfedcba`~}|{zxwvutsrponmlkjhfedcba`^]\[ZYXUTS~R}_^]\[ZYXWVUTSRPPONMLKJIHEDCBA@?>=<;:96543210/.-,+('}&|%{$z#y"~!x wvutsqponmrlkjih g f e d cba`_^]\[ZYXWVUTSRQPONMLK exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@R|P{OzNyMxLwJvIuHtGsErDqCpBo@n?m>l=k;j:i9h8g6f5e4d3c1b0a/`._,^+]*\)['Z&Y%X$W"V!U TSRQPONMLKJIHGFE D C B A@?>=<;:9876543210/.-,+*)('&%$#"!      ~}{zyxwvtsrqponlkjihgfedc~}|{yxwvutsqponmlkigfedcba_^]\[ZYVUT~S}ba`_^\[ZYWVUTSRQPONMLKJIGFEDCBA?>=<;:87654320/.-,*)~(}'|&{%z$y"x!w vutsrqponmlkjihg f e d c ba`_^]\[ZYXWVUTSRQPONMLK   OQa= $157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1551}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "event_id": "$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q"}, "creator": "@anon-20191002_181700-302:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004184571IVgQM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041845630, "hashes": {"sha256": "WaIjsOrxL/bBHTmYitNAaRWm7T51OtrxBUAntYwE3rY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OXlPQDIGx0gFw4dXpZIb71i5BOiDFmoaEwVRLxmosSTMXfR2+AcIx6avu/D57lemsDI63Bu/hNjXZ5qsTrFgBw"}}, "unsigned": {"age_ts": 1570041845630}} eQa$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1550}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM"], "type": "m.room.history_visibility", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041844130, "hashes": {"sha256": "uAZaUgL64KBAw39Q8pAkcb/cXxNS8OfgPNgDoOk95WQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c22RDSEPjfjXWkQ7t8FrEkgNa4NKEQyrPsRtQz0Irhi9+uS9At9P0R6tbWFagllpfjNWqIYI2hqzxw75J/y5DQ"}}, "unsigned": {"age_ts": 1570041844130}}t eQau$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1549}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo"], "type": "m.room.join_rules", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041843362, "hashes": {"sha256": "XIFSPORPLYFr9faGFw1BXe8z5nT4lPJuoGArY6PJmAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OpaW7HJ06XMaNf/pNYH4cmZop8d8BLqGxtcf5bkPwoMybXvd/oXVVlo653tl2Nljt+0Loatpjg5nxWYyStgJDQ"}}, "unsigned": {"age_ts": 1570041843362}}k eQac$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1548}{"auth_events": ["$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "type": "m.room.power_levels", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"users": {"@anon-20191002_181700-302:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041842623, "hashes": {"sha256": "qkXQdsoc2GOHOqwCmeiVTm6EYOm89PvFTpbPpv1lPGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2pPS6zJAFLfN9YCkazn9JCx72O0Srkab8ZS+dZo0oYucePLEcFZJNARgl+rNBDWAA3muO1ihfVdhFP+xZl/JCw"}}, "unsigned": {"age_ts": 1570041842623}} !}} {  : d # Mwusqomki}h3OOQ$157004185679NNCIw:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800~2eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~1eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~0eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800~/eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~.eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~-eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800~,eeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~+eeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~*eeQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~)eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~(eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~'eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800~&eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~%eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~$eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800h#OOQ$157004184976eGgUf:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800h"OOQ$157004184976eGgUf:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800h!OOQ$157004184976eGgUf:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800h OOQ$157004184875Wzayo:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184875Wzayo:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184875Wzayo:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184774CHMNl:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184774CHMNl:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184774CHMNl:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184773rCaRK:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184773rCaRK:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184672SfwvS:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800~eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800  @E7R 1 ` k ) J'c n*fqeeQ/ $AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rules eQ']$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800joingeQ3 $m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levelsa eQ' $YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800m.room.createe OQ))$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800_ OQ9 $157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias )eQ']$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800joina(eQ' $U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.created&eQ- $ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstoneZ%OQ/ $157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rulesb$OQ? $157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility\#OQ3 $157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access\"OQ3 $157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels!OQ']$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800joinV OQ' $157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.createmeQ? $eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibilityeeQ/ $ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rulesg'eQ3 $rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels eQ']$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800joinaeQ' $6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800m.room.creategeQ3 $wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levelsdeQ- $p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstoneZOQ/ $157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.join_rulesbOQ? $157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility\OQ3 $157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access\OQ3 $157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.power_levelsOQ']$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800joinVOQ' $157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.createmeQ? $Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility g ghOQau $157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1554}{"auth_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}], ["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}]], "prev_events": [["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}]], "type": "m.room.guest_access", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004184774CHMNl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041847808, "hashes": {"sha256": "ksChPAMorsG9kOkizd+ZtTk7+ycR6ssUzIsEg2DvSHc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VbUkZIc3HjyL7VkW+ipFz7tGiljswYKxHlW+aYVcYtuU069pbYDNQFKkbT5PbR9bBg5UbC/Hvx/drjfkW0OMBw"}}, "unsigned": {"age_ts": 1570041847808}}&OQaq $157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1553}{"auth_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "prev_events": [["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "type": "m.room.power_levels", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"users": {"@anon-20191002_181700-302:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004184773rCaRK:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041847116, "hashes": {"sha256": "j7ApYZRcuRoB00tWqa9zhRPy2UhxyLkkvOUULWTQtRg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m2o2CE9z/chzlAMFc2pBQhXLZHOQS7jWATRot9/LIc2pXwHf42r03OCWZ72D+YPIW26q+REZNQNpc89/F6UvCA"}}, "unsigned": {"age_ts": 1570041847116}}OQa# $157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1552}{"auth_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}]], "prev_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}]], "type": "m.room.member", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-302", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-302:localhost:8800", "event_id": "$157004184672SfwvS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041846317, "hashes": {"sha256": "q/VbWy7YNhtlkXFhiZYAz82FVqhOtUVNblXL6H3L8UA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EZluJo2k/whHdRQMotB3dNU3sTz9ZjdFu1Ek3IVwX0WcZkfGpjbfaehfVQ7QXKrUYSvaKQMSvIgGmSeOxtXYCw"}}, "unsigned": {"age_ts": 1570041846317}} }@+%R c1i7>   v]W D  | J   PoK  = Vp $  \ +}Q+j81e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 1e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA T1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 m1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A _1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds :1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI 1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490I1e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w61e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYi1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk11e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU A1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 71e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA r1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 -1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds +1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI l1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 61e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY81e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIN1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgl1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIH1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk]1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsA1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYv1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIS1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ+1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip421e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw81e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g%1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 21e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ d %d=eQa$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1557}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0"], "type": "m.room.tombstone", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!icheSPMgpemswIdQkw:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041845530, "hashes": {"sha256": "U5N8V0UC4n7CVqRnuQzmysgNfDdiw17Cp5IQ79bTy40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+kEOcYsZ3UhFg5E+WWb80S1SsjvSfJYJ27XGC81Q29hLA3pSwslHoxhRvMJeWntPZM+tOp3qHxSofWwSvlfxCg"}}, "unsigned": {"age_ts": 1570041845530}}aOQag $157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1556}{"auth_events": [["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}], ["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "prev_events": [["$157004184875Wzayo:localhost:8800", {"sha256": "yv02ZN6VL9vmK0nLf6Mcf3y1Iv67LtOFF3A4laWPuMY"}]], "type": "m.room.join_rules", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004184976eGgUf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041849149, "hashes": {"sha256": "w3Scupr2FRzPIWlQWYb0hUEKmP5IBvdGyMr6GUet/TY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iMBR8RtwdB1QrWwPJeF+R6S6cCDwUZOhFNSDdEvB2cKzcUT9CcPb/UJIbWtL+39QqMK+QV0NlaBsKQaBCqtACQ"}}, "unsigned": {"age_ts": 1570041849149}}rOQa $157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1555}{"auth_events": [["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}], ["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "prev_events": [["$157004184774CHMNl:localhost:8800", {"sha256": "UiklwiytnmXyry6RzDYd+ogG+wBkCXl5D0H/od+EY0g"}]], "type": "m.room.history_visibility", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004184875Wzayo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041848441, "hashes": {"sha256": "ltoGYftRcnXR9JieZm9JWaKY527en5bNxmIeU8SUEj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NEAoTWQzsco3S0fJrhZsKCKjlnPPJkIgKgN/UUnBBHV2GGD0M0IMmFzqI473mii59jEcOi2XOZK1L8drS0WnAA"}}, "unsigned": {"age_ts": 1570041848441}} /d Y N Y o ! o  d dz,,z!oz,BBV@eL$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYsha256Kc! ʺ:yGC~u&V?eL$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5ksha256BhsXZB~e\,N^<#K>OL$157004188598DcHDt:localhost:8800sha256' Հ"4!-XnʳICzlPV=eL$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQsha256aP{AHC=Hf̶dV<eL$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tosha256/g(ōy&c JZvHEK;OL$157004188397MRiZP:localhost:8800sha256,t˥;SO0tx:!W诮CT}[K:OL$157004188296OVWxu:localhost:8800sha256%ab-_WL{Iq{Q3K9OL$157004188195thBOS:localhost:8800sha256E]CX?px t# *UkfL(K8OL$157004188194vdqBG:localhost:8800sha25669 T)K11Aڬx"86:8ʮoK7OL$157004188093UtRbN:localhost:8800sha256)w鼀T}S*_>:elWK6OL$157004187992XwpoQ:localhost:8800sha256 U ^# ׳вqŖG;=RV5eL$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQsha256AWb7gsgI[8V4eL$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwsha256_Iz]E#cx,R($V3eL$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Isha256|I"aeȂH&ljٱ [BV2eL$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4sha256oD$01EĪl薵V1eL$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIsha256zXӹM rZ+tjxi'$ +V0eL$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wsha256FxnI 392"ۘ%=\V/eL$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEsha256t{}rNOs=7GaSdMl!V.eL$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIsha256;a 7hln5uL<(m̃K-OL$157004187190ZLRgN:localhost:8800sha256Puf+.}:gyBGu-:_9O|K,OL$157004187089FLOwV:localhost:8800sha256H񕣇^phx8TlkH:6K+OL$157004186988RkcKb:localhost:8800sha256eG"hP/,*nJb @uOhK*OL$157004186887sKbQU:localhost:8800sha256EHyI.9䵞Xڞ-8*r{5K)OL$157004186786RVgKA:localhost:8800sha256EKmwvWu>7a#R-R~kQFL;SYK(OL$157004186785fjAIs:localhost:8800sha256X\.pxڟ7NAV'eL$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgsha256R7I?K OL$157004185983tEalY:localhost:8800sha256؅D? 2J*䅔T|@LPKOL$157004185982diSTq:localhost:8800sha256D aUˊog7]4gKOL$157004185881ahRFW:localhost:8800sha256~%∍O;b>-N=:%EÂWbKOL$157004185780kUwpq:localhost:8800sha256*j"Ɋ=Ɣ "!nֵF\KOL$157004185679NNCIw:localhost:8800sha256 g\먺V#.-#r8KOL$157004185678lyJsT:localhost:8800sha256ƺ璨Ƶ(_#hQYVeL$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIsha256xâ94_Kk](#a}FXVeL$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMsha256gh-!5/Cg_ tuwcVeL$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQsha256{v?/b!MAG\Q9VeL$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qsha256(t-g᪤Z}7li0VeL$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUsha256KQa g:M (α`VeL$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIsha256+1o5/u,4 g&E\*P$ݬVeL$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qsha256j|ʣ lݳ'*a1LvSKOL$157004184976eGgUf:localhost:8800sha2561^"9 *j`CL̨Vy@=5xKOL$157004184875Wzayo:localhost:8800sha2566dޕ/+I|".Ӆp8 %<n w  F f  E t AgD%Sy ~OQ']$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800VOQ' $157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.creategeQ3 $qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelsm eQ? $hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibilitye eQ/ $w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rulesg eQ3 $lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels eQ']$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800a eQ' $tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800m.room.creategeQ3 $dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levelsdeQ- $O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstoneZOQ/ $157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rulesbOQ? $157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility\OQ3 $157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access\OQ3 $157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels~OQ']$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800VOQ' $157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.createmeQ? $PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibilityeeQ/ $VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rulesg~eQ3 $QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels }eQ']$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800a|eQ' $U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.createg{eQ3 $rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levelsdzeQ- $ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstoneZyOQ/ $157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rulesbxOQ? $157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility\wOQ3 $157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access\vOQ3 $157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels~uOQ']$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800VtOQ' $157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.createmseQ? $eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibilityereQ/ $ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rulesgqeQ3 $ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels peQ']$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800aoeQ' $6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800m.room.creategneQ3 $wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levelsdmeQ- $p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstoneZlOQ/ $157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.join_rules FA4 Z-zMtGg: Q $ 1  ~l? _ ^ o B  b 5 M  U (-zM S&l?,Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ _,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` `,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OBWkjfrDCNgYFfblia:localhost:8800<<+Q !OBWkjfrDCNgYFfblia:localhost:8800;;,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800+Q !NrxQuziwSWzsHuXIlG:localhost:8800*Q!NhWgOTYzEPRwAxRQvS:localhost:8800ww*Q!NhWgOTYzEPRwAxRQvS:localhost:8800vv*Q!NhWgOTYzEPRwAxRQvS:localhost:8800uu*Q!NhWgOTYzEPRwAxRQvS:localhost:8800tt+Q !OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OXpGdKbowFUTChPdmF:localhost:8800 yU,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ ^,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] ],Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ \+Q !OCEHAjcOXWNyWIESIS:localhost:8800 [ [,Q!OBWkjfrDCNgYFfblia:localhost:8800BB,Q!OBWkjfrDCNgYFfblia:localhost:8800AA,Q!OBWkjfrDCNgYFfblia:localhost:8800@@,Q!OBWkjfrDCNgYFfblia:localhost:8800??,Q!OBWkjfrDCNgYFfblia:localhost:8800>>,Q!OBWkjfrDCNgYFfblia:localhost:8800==,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800+Q !OaCEdDAiatpwYcagUb:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800+Q !OWGKxAmTrHLciIdrJi:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800+Q !OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU,Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT+Q !OMkiVTuuOEeiFAXtUY:localhost:8800SS,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OMkiVTuuOEeiFAXtUY:localhost:8800 [[,Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY,Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX,Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW,Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OXpGdKbowFUTChPdmF:localhost:8800 +Q !OXpGdKbowFUTChPdmF:localhost:8800 FA4 Z-zMtGg: Q $ 1  ~l? _ ^ o B  b 5 M  U (-zM S&l?,Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ _,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` `,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OBWkjfrDCNgYFfblia:localhost:8800<<+Q !OBWkjfrDCNgYFfblia:localhost:8800;;,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800+Q !NrxQuziwSWzsHuXIlG:localhost:8800*Q!NhWgOTYzEPRwAxRQvS:localhost:8800ww*Q!NhWgOTYzEPRwAxRQvS:localhost:8800vv*Q!NhWgOTYzEPRwAxRQvS:localhost:8800uu*Q!NhWgOTYzEPRwAxRQvS:localhost:8800tt+Q !OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OXpGdKbowFUTChPdmF:localhost:8800 yU,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ ^,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] ],Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ \+Q !OCEHAjcOXWNyWIESIS:localhost:8800 [ [,Q!OBWkjfrDCNgYFfblia:localhost:8800BB,Q!OBWkjfrDCNgYFfblia:localhost:8800AA,Q!OBWkjfrDCNgYFfblia:localhost:8800@@,Q!OBWkjfrDCNgYFfblia:localhost:8800??,Q!OBWkjfrDCNgYFfblia:localhost:8800>>,Q!OBWkjfrDCNgYFfblia:localhost:8800==,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800+Q !OaCEdDAiatpwYcagUb:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800+Q !OWGKxAmTrHLciIdrJi:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800+Q !OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU,Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT+Q !OMkiVTuuOEeiFAXtUY:localhost:8800SS,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OMkiVTuuOEeiFAXtUY:localhost:8800 [[,Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY,Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX,Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW,Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OXpGdKbowFUTChPdmF:localhost:8800 +Q !OXpGdKbowFUTChPdmF:localhost:8800 2 2keQac$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1561}{"auth_events": ["$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "type": "m.room.power_levels", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"users": {"@anon-20191002_181700-303:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041853364, "hashes": {"sha256": "xDGEveNt6TdKKESdFfAOKIgq7tsWypSI7vb+wbHD4aM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UBpd65FpBhYfQeXMX7yNbU0cmsQWezi9LWeUpufMPjyHnAURvXe+ZCLzl3/Ac+REJd/GyawOYOmOkF8ENcHkCQ"}}, "unsigned": {"age_ts": 1570041853364}}veQay$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1560}{"auth_events": ["$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU"], "prev_events": ["$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU"], "type": "m.room.member", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-303", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-303:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041852824, "hashes": {"sha256": "CzCmLq3rFwbJejD3ZtYECKdLJ8T0IaDIAxVzYBwLlBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4TEbMIOScwoN+MOpEFWfhUndMJb7Ls5F7wNonew07GeAQhzbLvhfyp3a8gioKA72uXeGORGNj4sE82fYDxreAw"}}, "unsigned": {"age_ts": 1570041852824}}~eQa $6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1559}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"m.federate": false, "room_version": "4", "creator": "@anon-20191002_181700-303:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041852045, "hashes": {"sha256": "E2ySjRiz4tG2JUbhfo6l83pCj0wEmjAjvCr9m8jy+Fw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GbwaTGjPjV9RqZ+tApy7wLDyI4bffcFBxMctlFdR8uRSrAGTfNSSYs5vsGqtSQ6PYKHLoxApY6+2FupHE72Bw"}}, "unsigned": {"age_ts": 1570041852045}}_eQaK$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1558}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q"], "type": "m.room.power_levels", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"users": {"@anon-20191002_181700-302:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041850345, "hashes": {"sha256": "07cjlp6hUG/f8MThDVya2rCSB7PCDkGPOnCVTpI7bjE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twc+K+/kE99zw8RHTJgZbAvdFjS7lxcnCCun6lK3OWU5UDkHpHEdXh62O1eY6ogdONMVqNGmCIxCG2G9DtocAg"}}, "unsigned": {"age_ts": 1570041850345, "replaces_state": "$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo"}} V f  w ? ^ ku.W!-O?Q ]$157004187089FLOwV:localhost:8800m.room.history_visibility!fuHSJcznvGQnoYoLPW:localhost:8800mɷmɸX@anon-20191002_181700-304:localhost:8800,O3Q ]$157004186988RkcKb:localhost:8800m.room.guest_access!fuHSJcznvGQnoYoLPW:localhost:8800mɴmɵ`@anon-20191002_181700-304:localhost:8800+O3Q ]$157004186887sKbQU:localhost:8800m.room.power_levels!fuHSJcznvGQnoYoLPW:localhost:8800mɲmɲr@anon-20191002_181700-304:localhost:8800*O'Q ]$157004186786RVgKA:localhost:8800m.room.member!fuHSJcznvGQnoYoLPW:localhost:8800mɮmɯ<@anon-20191002_181700-304:localhost:8800) O'Q  ]$157004186785fjAIs:localhost:8800m.room.create!fuHSJcznvGQnoYoLPW:localhost:8800mɫmɬf@anon-20191002_181700-304:localhost:8800,(e?Q ]$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgm.room.history_visibility!hYPSaMPGsLnvYSmwhg:localhost:8800mɦmɨX@anon-20191002_181700-304:localhost:8800$'e/Q ]$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsm.room.join_rules!hYPSaMPGsLnvYSmwhg:localhost:8800mɣXmɤ@anon-20191002_181700-304:localhost:8800&&e3Q ]$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sm.room.power_levels!hYPSaMPGsLnvYSmwhg:localhost:8800mɠamɡ|@anon-20191002_181700-304:localhost:8800 %e'Q ]$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usm.room.member!hYPSaMPGsLnvYSmwhg:localhost:8800mɞRmɞ@anon-20191002_181700-304:localhost:8800$ e'Q  ]$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCom.room.create!hYPSaMPGsLnvYSmwhg:localhost:8800məmɚ%@anon-20191002_181700-304:localhost:8800&#e3Q ]$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQm.room.power_levels!KeqmSjifajNKxtgqhj:localhost:8800mɓmɕ$@anon-20191002_181700-303:localhost:8800#"e-Q ]$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Em.room.tombstone!KeqmSjifajNKxtgqhj:localhost:8800mɀmɑ@anon-20191002_181700-303:localhost:8800!O/Q ]$157004185983tEalY:localhost:8800m.room.join_rules!jIfvTrwedrWLubsnlM:localhost:8800mɎJmɎ@anon-20191002_181700-303:localhost:8800! O?Q ]$157004185982diSTq:localhost:8800m.room.history_visibility!jIfvTrwedrWLubsnlM:localhost:8800mɋmɌ5@anon-20191002_181700-303:localhost:8800O3Q ]$157004185881ahRFW:localhost:8800m.room.guest_access!jIfvTrwedrWLubsnlM:localhost:8800mɈmɉt@anon-20191002_181700-303:localhost:8800O3Q ]$157004185780kUwpq:localhost:8800m.room.power_levels!jIfvTrwedrWLubsnlM:localhost:8800mɆ@mɆ@anon-20191002_181700-303:localhost:8800O'Q ]$157004185679NNCIw:localhost:8800m.room.member!jIfvTrwedrWLubsnlM:localhost:8800mɃ/mɃ|@anon-20191002_181700-303:localhost:8800 O'Q  ]$157004185678lyJsT:localhost:8800m.room.create!jIfvTrwedrWLubsnlM:localhost:8800mɀmɀ@anon-20191002_181700-303:localhost:8800,e?Q ]$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIm.room.history_visibility!KeqmSjifajNKxtgqhj:localhost:8800mzm|@anon-20191002_181700-303:localhost:8800$e/Q ]$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMm.room.join_rules!KeqmSjifajNKxtgqhj:localhost:8800mx=mx@anon-20191002_181700-303:localhost:8800&e3Q ]$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQm.room.power_levels!KeqmSjifajNKxtgqhj:localhost:8800mumv@anon-20191002_181700-303:localhost:8800 e'Q ]$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qm.room.member!KeqmSjifajNKxtgqhj:localhost:8800msms@anon-20191002_181700-303:localhost:8800 e'Q  ]$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUm.room.create!KeqmSjifajNKxtgqhj:localhost:8800mpmp@anon-20191002_181700-303:localhost:8800&e3Q ]$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIm.room.power_levels!EyyNoldCLUdFHzXTDP:localhost:8800mimk@anon-20191002_181700-302:localhost:8800 < Z x  % C a,Jh3Qoni]@anon-20191002_181700-318:localhost:8800@anon-20191002_181700-318:localhost:8800 anon-20191002_181700-318nh]@anon-20191002_181700-317:localhost:8800@anon-20191002_181700-317:localhost:8800 anon-20191002_181700-317ng]@anon-20191002_181700-312:localhost:8800@anon-20191002_181700-312:localhost:8800 anon-20191002_181700-312nf]@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800 anon-20191002_181700-311ne]@anon-20191002_181700-310:localhost:8800@anon-20191002_181700-310:localhost:8800 anon-20191002_181700-310nd]@anon-20191002_181700-308:localhost:8800@anon-20191002_181700-308:localhost:8800 anon-20191002_181700-308nc]@anon-20191002_181700-307:localhost:8800@anon-20191002_181700-307:localhost:8800 anon-20191002_181700-307nb]@anon-20191002_181700-306:localhost:8800@anon-20191002_181700-306:localhost:8800 anon-20191002_181700-306na]@anon-20191002_181700-305:localhost:8800@anon-20191002_181700-305:localhost:8800 anon-20191002_181700-305n`]@anon-20191002_181700-304:localhost:8800@anon-20191002_181700-304:localhost:8800 anon-20191002_181700-304n^]@anon-20191002_181700-302:localhost:8800@anon-20191002_181700-302:localhost:8800 anon-20191002_181700-302n]]@anon-20191002_181700-301:localhost:8800@anon-20191002_181700-301:localhost:8800 anon-20191002_181700-301n\]@anon-20191002_181700-300:localhost:8800@anon-20191002_181700-300:localhost:8800 anon-20191002_181700-300n[]@anon-20191002_181700-299:localhost:8800@anon-20191002_181700-299:localhost:8800 anon-20191002_181700-299nZ]@anon-20191002_181700-298:localhost:8800@anon-20191002_181700-298:localhost:8800 anon-20191002_181700-298nY]@anon-20191002_181700-297:localhost:8800@anon-20191002_181700-297:localhost:8800 anon-20191002_181700-297nX]@anon-20191002_181700-296:localhost:8800@anon-20191002_181700-296:localhost:8800 anon-20191002_181700-296nW]@anon-20191002_181700-295:localhost:8800@anon-20191002_181700-295:localhost:8800 anon-20191002_181700-295nV]@anon-20191002_181700-294:localhost:8800@anon-20191002_181700-294:localhost:8800 anon-20191002_181700-294nU]@anon-20191002_181700-292:localhost:8800@anon-20191002_181700-292:localhost:8800 anon-20191002_181700-292nT]@anon-20191002_181700-291:localhost:8800@anon-20191002_181700-291:localhost:8800 anon-20191002_181700-291nS]@anon-20191002_181700-290:localhost:8800@anon-20191002_181700-290:localhost:8800 anon-20191002_181700-290nR]@anon-20191002_181700-289:localhost:8800@anon-20191002_181700-289:localhost:8800 anon-20191002_181700-289nQ]@anon-20191002_181700-288:localhost:8800@anon-20191002_181700-288:localhost:8800 anon-20191002_181700-288nP]@anon-20191002_181700-287:localhost:8800@anon-20191002_181700-287:localhost:8800 anon-20191002_181700-287nO]@anon-20191002_181700-286:localhost:8800@anon-20191002_181700-286:localhost:8800 anon-20191002_181700-286n_]@anon-20191002_181700-303:localhost:8800@anon-20191002_181700-303:localhost:8800 anon-20191002_181700-303 W ZWOQa# $157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1565}{"auth_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}]], "prev_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}]], "type": "m.room.member", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-303", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-303:localhost:8800", "event_id": "$157004185679NNCIw:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041856815, "hashes": {"sha256": "NnvWYJrAZalQLSvwEuDvWfbBxaGJxbzSbu5WCzlHAGI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o0D72cjJAlKQBAmEfrbHYOlO9lciWWlzahsNw5CQ9kDPUVMTQpA09nZhTrUDUxQxGiMz2GsvE25BX3/P0wScBQ"}}, "unsigned": {"age_ts": 1570041856815}}!OQag $157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1564}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "event_id": "$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E"}, "m.federate": false, "creator": "@anon-20191002_181700-303:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004185678lyJsT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041856132, "hashes": {"sha256": "sl45yDpkpirN5lq27k4Pytbxz6Jmyn7B+rcc0eUWRz8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JVt6zaDZpaTToSbRkW/WKiG41+m9uPy03MRrO+8RcITnFrsCsgR/J06F6qYpA11b0zpsbtQZH6V23+NZXr3cBw"}}, "unsigned": {"age_ts": 1570041856132}}eQa$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1563}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM"], "type": "m.room.history_visibility", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041854697, "hashes": {"sha256": "cWjwvUNjogzCvLxFcC60O0lWzMq4wyyqZfeMR4vLwSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "do9rD5cwPmcaTXctOf9hX5sngwqclUiVdOSPlMH7iBkNf0HIM/mXFylvcZYyDN2pe8Y6dq4J2Zqakz3PDD4/DQ"}}, "unsigned": {"age_ts": 1570041854697}}teQau$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1562}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ"], "type": "m.room.join_rules", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041854013, "hashes": {"sha256": "EnkFinI8IudEhnb/QrYSu4/iWtpX479mr96Oeym6r4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ldMzb7Bp+/b1F9KPUMIuezB2syUl6K2Pq1N1dyPKnoo1QS3vyk3a+LJ5RN1th/0L0dR7n/R+sI9dR7SB8YO3CA"}}, "unsigned": {"age_ts": 1570041854013}}  }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    t h \ P D 8 ,   x l ` T H < 0 $  |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pd` m  mſ; mų mšT mő' mŁ mq ma mE m/ m m< m0 m{ m{$ m(8 m'\ mk mi* m m x m m? mϕ mϒ m¬G m« m¨ mŒ{ m‰ mpa mXl mXj m? m? m m" m m mߞ m m_ m m mE m mvV mu mU mU> m/ m. m m I m] mތ m4 m{ ms mCZ m3 m^ m mw m m} mq mR mN mV m)U m"eT mS m*R mQQ m+P mO mAN mM muIL mqK ma+J mYI m?H m,G mqF m ;E mD m:C mB mA m&@ mHm? m> m= m< m.; mA: mg9 m8 m&7 mK6 ms5 m^4 m\3 mZ2 mV1 mUB0 mQo/ mN. mK- mK, mG+ mF* mBj) m?( m=' m:& m6% m6$ m-# m'#" m%K! m m m3 mJ m  m m m m mz mv mq mm mi md mS m?z m[ m m mo m m? m m mk m}( my mx1 mua ms-  mp DP8,  x l ` T H < 0 $    th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 ( x l ` T H < 0 $  | p d X L @ 4 ( m% m  mv m mը mՇP m^ mS m?R m4^ m m md m mړ m m mB m; m mԭ mԞ mԙ mԃ mvY mr) m] mH mF m04 m m m mk m m mӹ mӶw mӢY mӌ mӇS mr m_c mZU mC m0  m+! mj m mr m m mҲ mҚ mҖ m҂ m} md mK m1p m m| mI m mѧ mђ m}#~ mP=} mP9| m3{ m/z my mx m΅w m΃v mЛu mЇt mk~s m;|r m!%q mp mSo mcn mxm mϱl mϘk m~j m~i m`h m`g mf m^e mňd mβ c m)b m]a m` ms_ m^ m] m\ m͒+[ m͒)Z msY mVX m5kW m5hV m U mT m„S m̢VR m̑*Q moP mSO mRN mMM mKL m.K mJ m$I mͺH m˟eG mˈ F mnE mPD mHC m&B mA m @ m? m> m= mʳ< mʝt; mʛ: mʙ9 mʗT8 mi7 m:6 m%5 m#4 ms3 m .2 m1 m&0 məB/ m mܭn mܘS m܃ mr md m9 m+ m m  m mB mL m۲ mۦ mے mY m( m m# m m̌ m* mگ mڤ mڕ( mڋY m{ mv mr2 mo ml mh mf} m@ m? m m m՞ mٴ mَ mق| mj m` mG m/ m i m m¤ m؞ m|W mo mY? mOs m3_ m m! m mײ mא mm mb mON mEl m- m1 m me m֬ m։ mh m\ mH m? mp,. m=o- mo, m̔+ mȃ* mE) m( m' mǷ3& mdžg% m{$ mg# m^t" mD`! mCE I M K O  Q TTSQUYY[u Q!WFHIeSFQyuugGeBFxW:localhost:8800m&\s Q!mBQpGaIiadEuKBXfOw:localhost:8800m&\|p Q!ozgnwUlebxvzLVwyHW:localhost:8800m&\c Q!TlJCaYlCkOOVzFDlLx:localhost:8800m&\ %a Q!DnUHoxreGexNmjSVpq:localhost:8800m&\2=` Q !rwUuVBrftGHDBOlEZm:localhost:8800m&\=_ Q !CkNvQnbApPIcuKygDk:localhost:8800m&\>^ Q!NboFFVLpJHTeuUKCjM:localhost:8800m&\<] Q  !aZwMKYDXJRlSKjQNWM:localhost:8800m&\4=\ Q !XiwGxQKwjgutEClKUy:localhost:8829m&\<[ Q  !mTlCLZQCmfDuQsJxxp:localhost:8800m&\=W Q!TeraguiGoZoeOGFzlI:localhost:8800m&\N Q!EWkoFeckhXlNyjuIEB:localhost:8800m&\>M Q!utJsNQubeIXvcTKGpx:localhost:8800m&\>L Q!iTQSCiLqRMDtgXtUdC:localhost:8800m&\+C Q!HhYREfUiJTpjWmOuPF:localhost:8800m&\ Q  !hYPSaMPGsLnvYSmwhg:localhost:8800m&\<= Q  !jIfvTrwedrWLubsnlM:localhost:8800m&\I  jrOQa $157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1568}{"auth_events": [["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}], ["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "prev_events": [["$157004185881ahRFW:localhost:8800", {"sha256": "fiXo7OniiI2mT62AO2I+8NItTj06JUXUw4KU8MD1V2I"}]], "type": "m.room.history_visibility", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004185982diSTq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041859034, "hashes": {"sha256": "z+BnDplDwJ22K2uaVKU6R0sHnBjiivFXPAQZQ+Qzl8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JpoRra3R62QfVBu/cS48OM7zzABEnrI02JLEVn709WMpJjRPojyYcOEPXG18uuSz/VmViQD7UUZLH/duza/BAQ"}}, "unsigned": {"age_ts": 1570041859034}}hOQau $157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1567}{"auth_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}], ["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}]], "prev_events": [["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}]], "type": "m.room.guest_access", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004185881ahRFW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041858300, "hashes": {"sha256": "X8tM9gaE1G6D7I5dBvsBj3CsUIGX9cB7ogEl4lIdB4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gX67DSip+iMAJj9fYoITeWuE+0ciyFCeQFTRFGcxCsKJYEH+iLuWWtuz50ZA5o131HI2oN5B/oiAAtCKghw2AA"}}, "unsigned": {"age_ts": 1570041858300}}&OQaq $157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1566}{"auth_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "prev_events": [["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "type": "m.room.power_levels", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"users": {"@anon-20191002_181700-303:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004185780kUwpq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041857600, "hashes": {"sha256": "HrLRNYKp/X+lhmfCtu6R4U7LKvkA+/pHGVBWx2q4Oac"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mdAah+JTIwXbOMn2fU1IidroN0oPDwKbnIfc+fLdy3sRzP/f6sxiYFfvTw67i0zP7/mFxdOQHqF9/H2/jbz5Ag"}}, "unsigned": {"age_ts": 1570041857600}} "*T ~  = g e ca_][Ym,VhUOOQ$157004187089FLOwV:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hTOOQ$157004187089FLOwV:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hSOOQ$157004186988RkcKb:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hROOQ$157004186988RkcKb:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hQOOQ$157004186988RkcKb:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hPOOQ$157004186887sKbQU:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hOOOQ$157004186887sKbQU:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hNOOQ$157004186786RVgKA:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800~MeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~LeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~KeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800~JeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~IeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~HeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800~GeeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~FeeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~EeeQ$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~DeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~CeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~BeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800~AeeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~@eeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~?eeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800h>OOQ$157004185983tEalY:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h=OOQ$157004185983tEalY:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h<OOQ$157004185983tEalY:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h;OOQ$157004185982diSTq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h:OOQ$157004185982diSTq:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h9OOQ$157004185982diSTq:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h8OOQ$157004185881ahRFW:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h7OOQ$157004185881ahRFW:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h6OOQ$157004185881ahRFW:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h5OOQ$157004185780kUwpq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h4OOQ$157004185780kUwpq:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800 0vhy" t  o # ? P  VQW s'83.){$vT_Qe!xvblqEscwOtCqJntfF:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwT^Qe!xvblqEscwOtCqJntfF:localhost:8800$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kT]Qe!HhYREfUiJTpjWmOuPF:localhost:8800$yrx24DeUlVPn0WuKurI8zQ-dR2Upm89bUIKk4Y3e82QT\Qe!HhYREfUiJTpjWmOuPF:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkT[Qe!HhYREfUiJTpjWmOuPF:localhost:8800$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_ATZQe!HhYREfUiJTpjWmOuPF:localhost:8800$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kTYQe!HhYREfUiJTpjWmOuPF:localhost:8800$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4TXQe!HhYREfUiJTpjWmOuPF:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUTWQe!HhYREfUiJTpjWmOuPF:localhost:8800$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMETVQe!nvclDopiBLEOKBIheH:localhost:8800$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wTUQe!nvclDopiBLEOKBIheH:localhost:8800$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4TTQe!nvclDopiBLEOKBIheH:localhost:8800$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMTSQe!nvclDopiBLEOKBIheH:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYTRQe!nvclDopiBLEOKBIheH:localhost:8800$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kIQQO!YgaGPEraeLCqHQirin:localhost:8800$157004188598DcHDt:localhost:8800TPQe!aVxOoyiLLnxmzgLJat:localhost:8800$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQIOQO!YgaGPEraeLCqHQirin:localhost:8800$157004188397MRiZP:localhost:8800INQO!YgaGPEraeLCqHQirin:localhost:8800$157004188296OVWxu:localhost:8800IMQO!YgaGPEraeLCqHQirin:localhost:8800$157004188195thBOS:localhost:8800ILQO!YgaGPEraeLCqHQirin:localhost:8800$157004188194vdqBG:localhost:8800IKQO!YgaGPEraeLCqHQirin:localhost:8800$157004188093UtRbN:localhost:8800IJQO!YgaGPEraeLCqHQirin:localhost:8800$157004187992XwpoQ:localhost:8800TIQe!aVxOoyiLLnxmzgLJat:localhost:8800$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toTHQe!aVxOoyiLLnxmzgLJat:localhost:8800$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQTGQe!aVxOoyiLLnxmzgLJat:localhost:8800$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwTFQe!aVxOoyiLLnxmzgLJat:localhost:8800$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0ITEQe!aVxOoyiLLnxmzgLJat:localhost:8800$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4TDQe!aVxOoyiLLnxmzgLJat:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfITCQe!aVxOoyiLLnxmzgLJat:localhost:8800$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wIBQO!fuHSJcznvGQnoYoLPW:localhost:8800$157004187391eVGyJ:localhost:8800TAQe!hYPSaMPGsLnvYSmwhg:localhost:8800$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEI@QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004187190ZLRgN:localhost:8800I?QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004187089FLOwV:localhost:8800I>QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186988RkcKb:localhost:8800I=QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186887sKbQU:localhost:8800I<QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186786RVgKA:localhost:8800I;QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186785fjAIs:localhost:8800T:Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIT9Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgT8Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsT7Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sT6Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usT5Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCoI4QO!jIfvTrwedrWLubsnlM:localhost:8800$157004186184SzyvQ:localhost:8800T3Qe!KeqmSjifajNKxtgqhj:localhost:8800$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQI2QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185983tEalY:localhost:8800I1QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185982diSTq:localhost:8800I0QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185881ahRFW:localhost:8800  _"eQaK$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1571}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E"], "type": "m.room.power_levels", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"users": {"@anon-20191002_181700-303:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041861042, "hashes": {"sha256": "TKr/79khHIhnjbpFeVkaYAN7gwCL76RJXwXxDinLS1g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3ys99V8j1Q2y1SM+2QcwY0+QzwXIVZ/bYQfgulqKxc5Z93S+VYAtsoGEgw/iRBEYz7Eda1cGAbb9QqP6/eblAw"}}, "unsigned": {"age_ts": 1570041861042, "replaces_state": "$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ"}}=!eQa$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1570}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI"], "type": "m.room.tombstone", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!jIfvTrwedrWLubsnlM:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041856023, "hashes": {"sha256": "ZyhADv4iIE0yypWrOefmYKxzJfXrc/Z1h3GYvOZe0/Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0LGKZ7sdHd1UJIEIrnbnNxUh67DCH2MAt+c+KRGabF1QkX6Q9LrD5AX7hPr7T7EEANWeqZpZvDhxLiek13K6Cw"}}, "unsigned": {"age_ts": 1570041856023}}a OQag $157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1569}{"auth_events": [["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}], ["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "prev_events": [["$157004185982diSTq:localhost:8800", {"sha256": "i0QKt2FVy4rRywMBb75nsQazrqruN6WCo6xdjBs05mc"}]], "type": "m.room.join_rules", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004185983tEalY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041859658, "hashes": {"sha256": "SsAPp0nhxGqifB6d5swAWIevBADgqbpUV4cK3xw58zY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XL7fE7u7wZ2b4MbKaQzBevY6JTHFdFf0HsNl30wMiaQUEO/ntaT3P8cny+iRiAWGrg1ctWH9mNx0Hh6yPWj3Dw"}}, "unsigned": {"age_ts": 1570041859658}} NSyL l? ^ 1  } Q $ p CJi  c 6 V )v<[/{N!mA`3S,Q!cHtqiAyCHEAoBIbCmL:localhost:8800DD+Q !cHtqiAyCHEAoBIbCmL:localhost:8800CC,Q!cGkVFpidyBBxUxsszG:localhost:8800 VV,Q!cGkVFpidyBBxUxsszG:localhost:8800 UU,Q!cGkVFpidyBBxUxsszG:localhost:8800TT,Q!cGkVFpidyBBxUxsszG:localhost:8800SS,Q!cGkVFpidyBBxUxsszG:localhost:8800RR,Q!cGkVFpidyBBxUxsszG:localhost:8800QQ,Q!cGkVFpidyBBxUxsszG:localhost:8800PP,Q!cGkVFpidyBBxUxsszG:localhost:8800OO,Q!cGkVFpidyBBxUxsszG:localhost:8800NN+Q !cGkVFpidyBBxUxsszG:localhost:8800MM,Q!bzPCFeFSMbCESvNbxl:localhost:8800 88,Q!bzPCFeFSMbCESvNbxl:localhost:8800 77,Q!bzPCFeFSMbCESvNbxl:localhost:8800 66,Q!bzPCFeFSMbCESvNbxl:localhost:880055,Q!bzPCFeFSMbCESvNbxl:localhost:880044,Q!bzPCFeFSMbCESvNbxl:localhost:880033,Q!bzPCFeFSMbCESvNbxl:localhost:880022,Q!bzPCFeFSMbCESvNbxl:localhost:880011,Q!bzPCFeFSMbCESvNbxl:localhost:880000,Q!bzPCFeFSMbCESvNbxl:localhost:8800//+Q !bzPCFeFSMbCESvNbxl:localhost:8800..,Q!bnTuVBaAJTPbcYZtRl:localhost:880099,Q!bnTuVBaAJTPbcYZtRl:localhost:880088,Q!bnTuVBaAJTPbcYZtRl:localhost:880077,Q!bnTuVBaAJTPbcYZtRl:localhost:880066,Q!bnTuVBaAJTPbcYZtRl:localhost:880055,Q!bnTuVBaAJTPbcYZtRl:localhost:880044,Q!biBIcqnGelHvLnpkOu:localhost:8800vv,Q!biBIcqnGelHvLnpkOu:localhost:8800uu,Q!biBIcqnGelHvLnpkOu:localhost:8800tt,Q!biBIcqnGelHvLnpkOu:localhost:8800ss,Q!biBIcqnGelHvLnpkOu:localhost:8800rr+Q !biBIcqnGelHvLnpkOu:localhost:8800qq,Q!bnTuVBaAJTPbcYZtRl:localhost:880033,Q!bnTuVBaAJTPbcYZtRl:localhost:880022+Q !bnTuVBaAJTPbcYZtRl:localhost:880011,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800+Q !bkwyieHZwSMJfuSKvV:localhost:8800,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! !,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  +Q !bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!beBXQofoOfxNBtzsut:localhost:8800]],Q!beBXQofoOfxNBtzsut:localhost:8800[[,Q!beBXQofoOfxNBtzsut:localhost:8800YY,Q!beBXQofoOfxNBtzsut:localhost:8800WW,Q!beBXQofoOfxNBtzsut:localhost:8800UU,Q!beBXQofoOfxNBtzsut:localhost:8800SS+Q !beBXQofoOfxNBtzsut:localhost:8800PP,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 +Q !bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bOSxzttDtclnrWnLov:localhost:8800 gg,Q!bOSxzttDtclnrWnLov:localhost:8800ff,Q!bOSxzttDtclnrWnLov:localhost:8800ee,Q!bOSxzttDtclnrWnLov:localhost:8800dd NSyL l? ^ 1  } Q $ p CJi  c 6 V )v<[/{N!mA`3S,Q!cHtqiAyCHEAoBIbCmL:localhost:8800DD+Q !cHtqiAyCHEAoBIbCmL:localhost:8800CC,Q!cGkVFpidyBBxUxsszG:localhost:8800 VV,Q!cGkVFpidyBBxUxsszG:localhost:8800 UU,Q!cGkVFpidyBBxUxsszG:localhost:8800TT,Q!cGkVFpidyBBxUxsszG:localhost:8800SS,Q!cGkVFpidyBBxUxsszG:localhost:8800RR,Q!cGkVFpidyBBxUxsszG:localhost:8800QQ,Q!cGkVFpidyBBxUxsszG:localhost:8800PP,Q!cGkVFpidyBBxUxsszG:localhost:8800OO,Q!cGkVFpidyBBxUxsszG:localhost:8800NN+Q !cGkVFpidyBBxUxsszG:localhost:8800MM,Q!bzPCFeFSMbCESvNbxl:localhost:8800 88,Q!bzPCFeFSMbCESvNbxl:localhost:8800 77,Q!bzPCFeFSMbCESvNbxl:localhost:8800 66,Q!bzPCFeFSMbCESvNbxl:localhost:880055,Q!bzPCFeFSMbCESvNbxl:localhost:880044,Q!bzPCFeFSMbCESvNbxl:localhost:880033,Q!bzPCFeFSMbCESvNbxl:localhost:880022,Q!bzPCFeFSMbCESvNbxl:localhost:880011,Q!bzPCFeFSMbCESvNbxl:localhost:880000,Q!bzPCFeFSMbCESvNbxl:localhost:8800//+Q !bzPCFeFSMbCESvNbxl:localhost:8800..,Q!bnTuVBaAJTPbcYZtRl:localhost:880099,Q!bnTuVBaAJTPbcYZtRl:localhost:880088,Q!bnTuVBaAJTPbcYZtRl:localhost:880077,Q!bnTuVBaAJTPbcYZtRl:localhost:880066,Q!bnTuVBaAJTPbcYZtRl:localhost:880055,Q!bnTuVBaAJTPbcYZtRl:localhost:880044,Q!biBIcqnGelHvLnpkOu:localhost:8800vv,Q!biBIcqnGelHvLnpkOu:localhost:8800uu,Q!biBIcqnGelHvLnpkOu:localhost:8800tt,Q!biBIcqnGelHvLnpkOu:localhost:8800ss,Q!biBIcqnGelHvLnpkOu:localhost:8800rr+Q !biBIcqnGelHvLnpkOu:localhost:8800qq,Q!bnTuVBaAJTPbcYZtRl:localhost:880033,Q!bnTuVBaAJTPbcYZtRl:localhost:880022+Q !bnTuVBaAJTPbcYZtRl:localhost:880011,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800+Q !bkwyieHZwSMJfuSKvV:localhost:8800,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! !,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  +Q !bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!beBXQofoOfxNBtzsut:localhost:8800]],Q!beBXQofoOfxNBtzsut:localhost:8800[[,Q!beBXQofoOfxNBtzsut:localhost:8800YY,Q!beBXQofoOfxNBtzsut:localhost:8800WW,Q!beBXQofoOfxNBtzsut:localhost:8800UU,Q!beBXQofoOfxNBtzsut:localhost:8800SS+Q !beBXQofoOfxNBtzsut:localhost:8800PP,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 +Q !bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bOSxzttDtclnrWnLov:localhost:8800 gg,Q!bOSxzttDtclnrWnLov:localhost:8800ff,Q!bOSxzttDtclnrWnLov:localhost:8800ee,Q!bOSxzttDtclnrWnLov:localhost:8800dd $9> b  X & _dXsLBc[Q' e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.create$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEoZQ? e!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibility$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wgYQ/ e!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rules$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4iXQ3 e!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM WQ']e!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYcVQ' e!nvclDopiBLEOKBIheH:localhost:8800m.room.create$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k^UQ3 O!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels$157004188598DcHDt:localhost:8800iTQ3 e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ\SQ/ O!YgaGPEraeLCqHQirin:localhost:8800m.room.join_rules$157004188397MRiZP:localhost:8800dRQ? O!YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility$157004188296OVWxu:localhost:8800^QQ3 O!YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access$157004188195thBOS:localhost:8800^PQ3 O!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels$157004188194vdqBG:localhost:8800OQ']O!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800$157004188093UtRbN:localhost:8800XNQ' O!YgaGPEraeLCqHQirin:localhost:8800m.room.create$157004187992XwpoQ:localhost:8800fMQ- e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstone$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toiLQ3 e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQoKQ? e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibility$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwgJQ/ e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rules$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0IiIQ3 e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4 HQ']e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIcGQ' e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.create$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w^FQ3 O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels$157004187391eVGyJ:localhost:8800iEQ3 e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE\DQ/ O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rules$157004187190ZLRgN:localhost:8800dCQ? O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility$157004187089FLOwV:localhost:8800^BQ3 O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access$157004186988RkcKb:localhost:8800^AQ3 O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels$157004186887sKbQU:localhost:8800@Q']O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800$157004186786RVgKA:localhost:8800X?Q' O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.create$157004186785fjAIs:localhost:8800f>Q- e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstone$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIo=Q? e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibility$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgg<Q/ e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rules$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsi;Q3 e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s :Q']e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usc9Q' e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.create$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo^8Q3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels$157004186184SzyvQ:localhost:8800   *t&eQau$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1575}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s"], "type": "m.room.join_rules", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041865048, "hashes": {"sha256": "w/hw13/wz+xJpU92y9FOx4u54jKiPHqHFYvc4c/Hf5s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VYgXJHwY3BLIxVHtXr3VzwA1yZRBxjEV9nsjXiotBMV3zM1W8evvAfHnNnP+BJzKJviyQGdTKBH6avVP5e/eCQ"}}, "unsigned": {"age_ts": 1570041865048}}k%eQac$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1574}{"auth_events": ["$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "type": "m.room.power_levels", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"users": {"@anon-20191002_181700-304:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041864289, "hashes": {"sha256": "iG3bH7DuDznMep9AKpSin8ik9N4hDIwsyu3+QFIMzJ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N+Zmn+5gvuGQDYJYauWfmR3yvBbtLoeAh9g1hZ2nHVjsHJqlSELS842PeqcB+XVbC8NLK7Lxzpeqo3kpytkCBg"}}, "unsigned": {"age_ts": 1570041864289}}v$eQay$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1573}{"auth_events": ["$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo"], "prev_events": ["$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo"], "type": "m.room.member", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-304", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-304:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041863762, "hashes": {"sha256": "ZqTewQH6z4TJ1q0IXJ9s3e1+yuH7byY3OQ1ZFcT61Nw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o5l5N94kOH5zMIGRgVHAC3BweHy1C7F2E2rnX4Xezp09SYTPrWeVK5YDs8mGJ30g6XoysqZRinCFogJLIbuJCA"}}, "unsigned": {"age_ts": 1570041863762}}i#eQa_$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1572}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-304:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041862616, "hashes": {"sha256": "eTnC3BhMU1xr1qnaGlfUSZaVed+1wHPmsQ0OGcfxnIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RRJuCLSFnBUJdlrO3qLMmaEgT00C70wS4cKopsbMyVsutBMvtuX1QxYTz1/iJxsIC92jqszfXdbHqfufU2yFBg"}}, "unsigned": {"age_ts": 1570041862616}} WJP#pyLk>j=(6  f ;  _ 2   R % ]0 r E  +w e 8 cCW|V,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !pduebXnTyxQWVxEICp:localhost:8800 , ,,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!paDmNxsOZIKyApbxXs:localhost:8800 N N,Q!paDmNxsOZIKyApbxXs:localhost:8800 M M,Q!paDmNxsOZIKyApbxXs:localhost:8800 L L,Q!paDmNxsOZIKyApbxXs:localhost:8800 K K+Q !paDmNxsOZIKyApbxXs:localhost:8800 J J,Q!paDmNxsOZIKyApbxXs:localhost:8800 O O+Q !oXKJArsPmtgaYANBrg:localhost:8800,Q!nxLxsxzliamzflrEBs:localhost:8800)),Q!nxLxsxzliamzflrEBs:localhost:8800&&,Q!nxLxsxzliamzflrEBs:localhost:8800##,Q!nxLxsxzliamzflrEBs:localhost:8800  +Q !nxLxsxzliamzflrEBs:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 Q Q,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 m m,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 l l,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 k k,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 j j,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 i i+Q !pHoEnhQYhwlbJXqKQE:localhost:8800 h h,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!nvclDopiBLEOKBIheH:localhost:8800DD,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pduebXnTyxQWVxEICp:localhost:8800 - -,Q!pTvdDtkgovsIdAdxCm:localhost:8800+Q !pTvdDtkgovsIdAdxCm:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 P P,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800+Q !pUSFAnuwUuMlbiInDR:localhost:8800,Q!pJUItjYTOUJQFIxyiX:localhost:8800 S S,Q!pJUItjYTOUJQFIxyiX:localhost:8800 R R,Q!pJUItjYTOUJQFIxyiX:localhost:8800 Q Q,Q!pJUItjYTOUJQFIxyiX:localhost:8800 P P,Q!pJUItjYTOUJQFIxyiX:localhost:8800 O O,Q!pJUItjYTOUJQFIxyiX:localhost:8800 N N+Q !pJUItjYTOUJQFIxyiX:localhost:8800 M M,Q!oznZaCpONuNDaLarkI:localhost:8800OO,Q!oznZaCpONuNDaLarkI:localhost:8800NN,Q!oznZaCpONuNDaLarkI:localhost:8800MM,Q!oznZaCpONuNDaLarkI:localhost:8800LL,Q!oznZaCpONuNDaLarkI:localhost:8800KK+Q !oznZaCpONuNDaLarkI:localhost:8800JJ,Q!ozgnwUlebxvzLVwyHW:localhost:8800>>,Q!ozgnwUlebxvzLVwyHW:localhost:8800==,Q!ozgnwUlebxvzLVwyHW:localhost:8800;;,Q!ozgnwUlebxvzLVwyHW:localhost:880099,Q!ozgnwUlebxvzLVwyHW:localhost:880077+Q !ozgnwUlebxvzLVwyHW:localhost:880044*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800)Q !odAvowLhHJcmkKlxFk:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800 XFT)}R) \ 3  \ 1  Z /  X -  qF V + T)}R'{P%sHyN#wL!uJ*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rQeYcODvQiLsOIbQrJ:localhost:8800//*Q!rQeYcODvQiLsOIbQrJ:localhost:8800..*Q!rQeYcODvQiLsOIbQrJ:localhost:8800++*Q!rQeYcODvQiLsOIbQrJ:localhost:8800))*Q!rQeYcODvQiLsOIbQrJ:localhost:8800''*Q!rQeYcODvQiLsOIbQrJ:localhost:8800%%*Q!rQeYcODvQiLsOIbQrJ:localhost:8800$$*Q!rJhSRzmWBQHlIhuDXT:localhost:8800DD*Q!rJhSRzmWBQHlIhuDXT:localhost:8800CC*Q!rJhSRzmWBQHlIhuDXT:localhost:8800BB*Q!rJhSRzmWBQHlIhuDXT:localhost:8800AA*Q!rJhSRzmWBQHlIhuDXT:localhost:8800@@*Q!rJhSRzmWBQHlIhuDXT:localhost:8800??*Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z Z*Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y Y*Q!qjijQBfMwsCPTVgKPm:localhost:8800 X X*Q!qjijQBfMwsCPTVgKPm:localhost:8800 W W*Q!qjijQBfMwsCPTVgKPm:localhost:8800 V V*Q!qjijQBfMwsCPTVgKPm:localhost:8800 U U*Q!qjijQBfMwsCPTVgKPm:localhost:8800 T T*Q!qjijQBfMwsCPTVgKPm:localhost:8800 S S*Q!qjijQBfMwsCPTVgKPm:localhost:8800 R R*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800~~*Q!qSUSLLWjDxcGibUZdT:localhost:8800}}*Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 (Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!peJMRJtXBvIiCttNmm:localhost:8800 u u*Q!peJMRJtXBvIiCttNmm:localhost:8800 t t*Q!peJMRJtXBvIiCttNmm:localhost:8800 s s*Q!peJMRJtXBvIiCttNmm:localhost:8800 r r*Q!peJMRJtXBvIiCttNmm:localhost:8800 q q*Q!pduebXnTyxQWVxEICp:localhost:8800 1 1*Q!pduebXnTyxQWVxEICp:localhost:8800 0 0*Q!pduebXnTyxQWVxEICp:localhost:8800 / /*Q!pduebXnTyxQWVxEICp:localhost:8800 . .*Q!pduebXnTyxQWVxEICp:localhost:8800 - - WJP#pyLk>j=(6  f ;  _ 2   R % ]0 r E  +w e 8 cCW|V,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !pduebXnTyxQWVxEICp:localhost:8800 , ,,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!paDmNxsOZIKyApbxXs:localhost:8800 N N,Q!paDmNxsOZIKyApbxXs:localhost:8800 M M,Q!paDmNxsOZIKyApbxXs:localhost:8800 L L,Q!paDmNxsOZIKyApbxXs:localhost:8800 K K+Q !paDmNxsOZIKyApbxXs:localhost:8800 J J,Q!paDmNxsOZIKyApbxXs:localhost:8800 O O+Q !oXKJArsPmtgaYANBrg:localhost:8800,Q!nxLxsxzliamzflrEBs:localhost:8800)),Q!nxLxsxzliamzflrEBs:localhost:8800&&,Q!nxLxsxzliamzflrEBs:localhost:8800##,Q!nxLxsxzliamzflrEBs:localhost:8800  +Q !nxLxsxzliamzflrEBs:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 Q Q,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 m m,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 l l,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 k k,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 j j,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 i i+Q !pHoEnhQYhwlbJXqKQE:localhost:8800 h h,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!nvclDopiBLEOKBIheH:localhost:8800DD,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pduebXnTyxQWVxEICp:localhost:8800 - -,Q!pTvdDtkgovsIdAdxCm:localhost:8800+Q !pTvdDtkgovsIdAdxCm:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 P P,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800+Q !pUSFAnuwUuMlbiInDR:localhost:8800,Q!pJUItjYTOUJQFIxyiX:localhost:8800 S S,Q!pJUItjYTOUJQFIxyiX:localhost:8800 R R,Q!pJUItjYTOUJQFIxyiX:localhost:8800 Q Q,Q!pJUItjYTOUJQFIxyiX:localhost:8800 P P,Q!pJUItjYTOUJQFIxyiX:localhost:8800 O O,Q!pJUItjYTOUJQFIxyiX:localhost:8800 N N+Q !pJUItjYTOUJQFIxyiX:localhost:8800 M M,Q!oznZaCpONuNDaLarkI:localhost:8800OO,Q!oznZaCpONuNDaLarkI:localhost:8800NN,Q!oznZaCpONuNDaLarkI:localhost:8800MM,Q!oznZaCpONuNDaLarkI:localhost:8800LL,Q!oznZaCpONuNDaLarkI:localhost:8800KK+Q !oznZaCpONuNDaLarkI:localhost:8800JJ,Q!ozgnwUlebxvzLVwyHW:localhost:8800>>,Q!ozgnwUlebxvzLVwyHW:localhost:8800==,Q!ozgnwUlebxvzLVwyHW:localhost:8800;;,Q!ozgnwUlebxvzLVwyHW:localhost:880099,Q!ozgnwUlebxvzLVwyHW:localhost:880077+Q !ozgnwUlebxvzLVwyHW:localhost:880044*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800)Q !odAvowLhHJcmkKlxFk:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800   4 h m9d]c@anon-20191002_181700-330:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwo127.0.0.1Hd]c@anon-20191002_181700-328:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgo127.0.0.1Fd]c@anon-20191002_181700-329:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgo127.0.0.1Gfa[a@anon-20191002_181700-32:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCg127.0.0.1d]c@anon-20191002_181700-327:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0Qo127.0.0.1Ed]c@anon-20191002_181700-326:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0Ao127.0.0.1Dd]c@anon-20191002_181700-325:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggo127.0.0.1Cd]c@anon-20191002_181700-324:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAo127.0.0.1Bd]c@anon-20191002_181700-323:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_Rago127.0.0.1Ad]c@anon-20191002_181700-322:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwo127.0.0.1@  w)OQa# $157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1578}{"auth_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}]], "prev_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}]], "type": "m.room.member", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-304", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-304:localhost:8800", "event_id": "$157004186786RVgKA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041867995, "hashes": {"sha256": "T3Vim1CMUpej4xhazERNU2+Yf1h39oFgyOTfGvbHseM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yR0LZmsCuEUaR2/kn2hOiBfXiN2MmYGd2uNIYSwSd3rIEn6mcwGugD7B7wfablLBFaCtj0uSQ1/LYMIy/rPMAQ"}}, "unsigned": {"age_ts": 1570041867995}} (OQa= $157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1577}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "event_id": "$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI"}, "creator": "@anon-20191002_181700-304:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004186785fjAIs:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041867222, "hashes": {"sha256": "qtubqcgJSsQ+uCoH237dtlGWsMx+vaHN8tRTLV/y4eI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v3UFddd+9rrBm7rystE9gC6rIa++wODMvgrir5AhXESrVdA+QcJWlZ+n3I9uTOto4wFD8s8inHD96Ye3V5pFBQ"}}, "unsigned": {"age_ts": 1570041867222}}'eQa$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1576}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws"], "type": "m.room.history_visibility", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041865940, "hashes": {"sha256": "nXlDdO2/O6ocDrMUIkeUHOzA/4H/FMm+NCcpGPnrR4c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h2INrnUME2hyvW1/Z8OVSusX1gRZjM9TfDpsbCZ0io6LTMMIO2PgJ204xrHXW01RJLUiRIBY/+54+aNC8oUlAw"}}, "unsigned": {"age_ts": 1570041865940}} "1J  % M @_3iKT| :pQ? eI!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibility$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AhQ/ eH!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rules$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kjQ3 eG!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 Q']eF!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUdQ' eE!HhYREfUiJTpjWmOuPF:localhost:8800m.room.create$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEpQ? eD!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibility$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9whQ/ eC!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rules$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4jQ3 eB!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM Q']eA!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYdQ' e@!nvclDopiBLEOKBIheH:localhost:8800m.room.create$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kQ3 OO?!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels$157004188598DcHDt:localhost:8800$157004188194vdqBG:localhost:8800Q3 ee>!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQgQ- e=!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstone$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to]Q/ Ok*Q!ozgnwUlebxvzLVwyHW:localhost:8800=j*Q!ozgnwUlebxvzLVwyHW:localhost:8800;h*Q!ozgnwUlebxvzLVwyHW:localhost:88009f*Q!ozgnwUlebxvzLVwyHW:localhost:88007d*Q!ozgnwUlebxvzLVwyHW:localhost:88004a(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800  jr,OQa $157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1581}{"auth_events": [["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}], ["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "prev_events": [["$157004186988RkcKb:localhost:8800", {"sha256": "ZUciEKmNnrBoD4VQL/fwLIQqbkq8YpYNoMCHQAN1T2g"}]], "type": "m.room.history_visibility", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004187089FLOwV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041870326, "hashes": {"sha256": "DGHWaL0OPuentzPS1+p8uuVnbr7Pko8zdx0QU/SI2Pg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bqjWfYbMg8Vp4xZmvxzPU+iFvZ32d3BoHgAUgYqqHYzSdSAalx12hpuXCxOEqV8PeEbuwzKY+OVDNmrXsPfKCA"}}, "unsigned": {"age_ts": 1570041870326}}h+OQau $157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1580}{"auth_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}], ["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}]], "prev_events": [["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}]], "type": "m.room.guest_access", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004186988RkcKb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041869526, "hashes": {"sha256": "2HhF3PQzmEn5saoxHAeJcbdCSYtQjcRoyUbz72kDG6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nbB25u7kVanOpLlzf4DkTnBQ6ZuceAUnq02zLa24dlvcLRqOBq/FT+/oUPwSdrI/5eHV9hss2TR3iVu2SlaeCA"}}, "unsigned": {"age_ts": 1570041869526}}&*OQaq $157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1579}{"auth_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "prev_events": [["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "type": "m.room.power_levels", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"users": {"@anon-20191002_181700-304:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004186887sKbQU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041868825, "hashes": {"sha256": "puf9+r2PaXqpOoQfgS0kTbkR1q/jN1vTNaOAcc8mkzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M7FNdWI8upLPh49kqNU49m9ECLsmgbmNrS2LLqKJL+3JvyVuvvo6GsOPr/L/R0Zi03uMWq8GGT/o0h9fyw1mCQ"}}, "unsigned": {"age_ts": 1570041868825}} 0) V  y  c ( H  N )Vy<4aG|A^Q']!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800^Q']!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800:Q/ !rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rulesBQ? !rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibility6Q' !rWGwSSefrZzQYCYFHs:localhost:8800m.room.createQ<Q3 !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levelsV^Q']!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800U:Q/ !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rulesWBQ? !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibilityX6Q' !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.createT<Q3 !qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levels ^Q']!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800 RQ'E!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455 :Q/ !qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules BQ? !qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility 6Q' !qzurjQHmiriwjaUMhO:localhost:8800m.room.create <Q3 !qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levels ^Q']!qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800 :Q/ !qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules BQ? !qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility 6Q' !qzrZzAieCgGSbpKOQR:localhost:8800m.room.create <Q3 !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levelsf^Q']!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829e^Q']!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800_GQ'/!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800h:Q/ !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rulesbBQ? !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibilityc<Q3 !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accessi6Q' !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.create^?Q9 !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_aliasaEQ))!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800dCQ?!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7,<Q3 !quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels)^Q']!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800(:Q/ !quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rules*BQ? !quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibility+6Q' !quaZwrGnzbNWhwAOYB:localhost:8800m.room.create'<Q3 !qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels 6^Q']!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800 9^Q']!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800 5:Q/ !qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rules 7BQ? !qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibility 86Q' !qtelAHlSkrqEFmlCqS:localhost:8800m.room.create 4<Q3 !qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels M^Q']!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800 L^Q']!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800 R:Q/ !qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rules OBQ? !qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibility P !*T R P N L JHFDBl+UhvOOQ$157004188397MRiZP:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800huOOQ$157004188397MRiZP:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800htOOQ$157004188296OVWxu:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hsOOQ$157004188296OVWxu:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hrOOQ$157004188296OVWxu:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hqOOQ$157004188195thBOS:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hpOOQ$157004188195thBOS:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hoOOQ$157004188195thBOS:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hnOOQ$157004188194vdqBG:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hmOOQ$157004188194vdqBG:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hlOOQ$157004188093UtRbN:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800~keeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~jeeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~ieeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800~heeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~geeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~feeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800~eeeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~deeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~ceeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800~beeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~aeeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~`eeQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~_eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~^eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~]eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800~\eeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~[eeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~ZeeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800hYOOQ$157004187190ZLRgN:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hXOOQ$157004187190ZLRgN:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hWOOQ$157004187190ZLRgN:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hVOOQ$157004187089FLOwV:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800  _/eQaK$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1584}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI"], "type": "m.room.power_levels", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"users": {"@anon-20191002_181700-304:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041872464, "hashes": {"sha256": "H06MQYcRxNf9C8Hqh7EaMmDgQ6iiGUkvORAGI1O0204"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DQzNxtVCUIRNE0U9odyosNO55ECoSwi9LFvJwlK2rkglcPXgYUkgI7EgyeYIZ2ChYC8VI0EzogkGwvo/iGgpBA"}}, "unsigned": {"age_ts": 1570041872464, "replaces_state": "$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s"}}=.eQa$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1583}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg"], "type": "m.room.tombstone", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!fuHSJcznvGQnoYoLPW:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041867133, "hashes": {"sha256": "2BpNIXgDJeX1G9gnQeeX+yJweo0++xb3Q26jBpogSHA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hVpahFp5nmctuVnJ7t+fa62d4fjIusy6+ojhZDdnWENcUnOKlKWUiBd1lBPAS5AZuuI/xyDMyCQNQzht2bb0Aw"}}, "unsigned": {"age_ts": 1570041867133}}a-OQag $157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1582}{"auth_events": [["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}], ["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "prev_events": [["$157004187089FLOwV:localhost:8800", {"sha256": "SOrxlaOH417/cGh4yjgfleNUkpsO/WwVmctr7kg6Ntg"}]], "type": "m.room.join_rules", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004187190ZLRgN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041871100, "hashes": {"sha256": "43sYehVPYUQh6X7plFM2zGHA6JWVxnsNEQ+BJdqyEqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CsDQZkRglS2HvsdBp4L31jcbV0FDSdKBJ9e2HUFTjCI1wN1L7Hp4ZpYJganUyxSQTCg5Mm6M6CSovDDQVsCZDQ"}}, "unsigned": {"age_ts": 1570041871100}} c p " z Q p:8E e'Q  ]$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEm.room.create!HhYREfUiJTpjWmOuPF:localhost:8800m ~m @anon-20191002_181700-307:localhost:8800,De?Q ]$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wm.room.history_visibility!nvclDopiBLEOKBIheH:localhost:8800mmK@anon-20191002_181700-306:localhost:8800$Ce/Q ]$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4m.room.join_rules!nvclDopiBLEOKBIheH:localhost:8800mm@anon-20191002_181700-306:localhost:8800&Be3Q ]$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMm.room.power_levels!nvclDopiBLEOKBIheH:localhost:8800m4m2@anon-20191002_181700-306:localhost:8800 Ae'Q ]$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYm.room.member!nvclDopiBLEOKBIheH:localhost:8800m4m@anon-20191002_181700-306:localhost:8800@ e'Q  ]$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5km.room.create!nvclDopiBLEOKBIheH:localhost:8800mMm@anon-20191002_181700-306:localhost:8800?O3Q ]$157004188598DcHDt:localhost:8800m.room.power_levels!YgaGPEraeLCqHQirin:localhost:8800m4m@anon-20191002_181700-305:localhost:8800&>e3Q ]$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQm.room.power_levels!aVxOoyiLLnxmzgLJat:localhost:8800m mT@anon-20191002_181700-305:localhost:8800#=e-Q ]$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tom.room.tombstone!aVxOoyiLLnxmzgLJat:localhost:8800m`m@anon-20191002_181700-305:localhost:8800<O/Q ]$157004188397MRiZP:localhost:8800m.room.join_rules!YgaGPEraeLCqHQirin:localhost:8800mm@anon-20191002_181700-305:localhost:8800!;O?Q ]$157004188296OVWxu:localhost:8800m.room.history_visibility!YgaGPEraeLCqHQirin:localhost:8800mm~@anon-20191002_181700-305:localhost:8800:O3Q ]$157004188195thBOS:localhost:8800m.room.guest_access!YgaGPEraeLCqHQirin:localhost:8800mm'@anon-20191002_181700-305:localhost:88009O3Q ]$157004188194vdqBG:localhost:8800m.room.power_levels!YgaGPEraeLCqHQirin:localhost:8800mm@anon-20191002_181700-305:localhost:88008O'Q ]$157004188093UtRbN:localhost:8800m.room.member!YgaGPEraeLCqHQirin:localhost:8800mm!@anon-20191002_181700-305:localhost:88007 O'Q  ]$157004187992XwpoQ:localhost:8800m.room.create!YgaGPEraeLCqHQirin:localhost:8800mmI@anon-20191002_181700-305:localhost:8800&6e3Q ]$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQm.room.power_levels!aVxOoyiLLnxmzgLJat:localhost:8800m{m@anon-20191002_181700-305:localhost:8800,5e?Q ]$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwm.room.history_visibility!aVxOoyiLLnxmzgLJat:localhost:8800mҵm!@anon-20191002_181700-305:localhost:8800$4e/Q ]$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Im.room.join_rules!aVxOoyiLLnxmzgLJat:localhost:8800m&m&@anon-20191002_181700-305:localhost:8800&3e3Q ]$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4m.room.power_levels!aVxOoyiLLnxmzgLJat:localhost:8800m8m>@anon-20191002_181700-305:localhost:8800 2e'Q ]$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIm.room.member!aVxOoyiLLnxmzgLJat:localhost:8800m;mʌ@anon-20191002_181700-305:localhost:88001 e'Q  ]$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wm.room.create!aVxOoyiLLnxmzgLJat:localhost:8800mƊm@anon-20191002_181700-305:localhost:8800&0e3Q ]$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEm.room.power_levels!hYPSaMPGsLnvYSmwhg:localhost:8800mPm@anon-20191002_181700-304:localhost:8800#/e-Q ]$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIm.room.tombstone!hYPSaMPGsLnvYSmwhg:localhost:8800mɫ}mɽ@anon-20191002_181700-304:localhost:8800.O/Q ]$157004187190ZLRgN:localhost:8800m.room.join_rules!fuHSJcznvGQnoYoLPW:localhost:8800mɺmɻW@anon-20191002_181700-304:localhost:8800 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  &qbSD5rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mmm m mmmm^mmmm~~mZ}}m||m{{mzzmʿyymʽxxmʺwwmʷ!vvmʳuumʮ%ttmʩssmʧkrrmʤ`qqmʠppmʞ%oomʑnnmʋmmmʇ'llmʆ+kkmʁ)jjmʀfiimxhhmxYggmtffmqeemoddmlccmkbbmfaamb-``m^__m\{^^mWZ]]mWY\\mP[[mPZZmLaYYmL`XXmHfWWmHdVVmD$UUmD"TTm?SSm?RRm<QQm<PPm4OOm1RNNm-jMMm)LLm&KKmJJmIImHHmGGmFFm ~EEmDDmCCm4BBm4AAmM@@m4??m >>m`==m<<m;;m::m99m88m77m{66mҵ55m&44m833m;22mƊ11mP00mɺ..mɷ--mɴ,,mɲ++mɮ**mɫ))mɫ}//mɦ((mɣX''mɠa&&mɞR%%mə$$mɓ##mɎJ!!mɋ  mɈmɆ@mɃ/mɀmɀ""mzmx=mumsmpmime=mbym`m]Lm|mz/mvmsmo~mjZmgCmbm]wmYmVmSmH8mB2m93m3/m-m)m&m|mmQm|mm *m?m,m&mvmsmZ-mW~mWmQmN  mK  mF  mD   m@  m@m:m6m3Em,m)m'1m$ mGmmmommm Vm mXmNmmm*mmm6mmmmmmmmEmam]mm[mmȽJmȺ+mȷpmȱmȱ2mȱ1mȨmȥ6mȟmȟmșmșmȕmȔ%mȎ  w 6OQa= $157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1591}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "event_id": "$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to"}, "creator": "@anon-20191002_181700-305:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004187992XwpoQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041879539, "hashes": {"sha256": "2rhOx8Ww4xBnWPAbTp5et3UncSAYgE42+y/fKiOdsnE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fZcUQGMPWnLWdMC/dhUvOstbLTn3i7o/R+8L3tOiXdkEJvimQLWBnpI7EUul9z7uFw4BxTBVi/JAK43UOiGFDg"}}, "unsigned": {"age_ts": 1570041879539}}^5eQaI$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1590}{"auth_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw"], "type": "m.room.power_levels", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 0, "users_default": 80, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.avatar": 50, "m.room.name": 50}, "users": {"@anon-20191002_181700-305:localhost:8800": 100}}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041878395, "hashes": {"sha256": "iyXObKcHYbliJ7wNn33FDY0ykeV6LObjyi4CjhRmvhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1SaAiUE0pYr8E84jO00FpBogRG1I6BjxvhIF/1+q4uOcC5SDZwCyzE14qL7a0DyaTFgReWvQkNJgINWNRwqlDg"}}, "unsigned": {"age_ts": 1570041878395, "replaces_state": "$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4"}}4eQa$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1589}{"auth_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I"], "type": "m.room.history_visibility", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041877173, "hashes": {"sha256": "EFSU68XNFtg+mT8nek+FVuLVXXTewP2KrYaQCpHtmRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ipQ0GJXjfO5tU7HDbRqVv1/DsMnnx4g40m7JUCzpfsUMGFGWw2UmIINIFYeB3syo0sTt6vFvn0N9TZ0uQ7mbBA"}}, "unsigned": {"age_ts": 1570041877173}} ~z v  D V hd`\XTPLHeeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800eeQ$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800eeQ$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800 eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800eeQ$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800iOOQ$157004188598DcHDt:localhost:8800$157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800eeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800iOOQ$157004188397MRiZP:localhost:8800$157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800iOOQ$157004188296OVWxu:localhost:8800$157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800iOOQ$157004188195thBOS:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800i~OOQ$157004188194vdqBG:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800i}OOQ$157004188093UtRbN:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800|eeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800{eeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800zeeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800yeeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800xeeQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800weeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800 .RM i  . 4 / *|%w rmhc ^YTeQe_!NPdjmIfsBVIIkvWBzD:localhost:8800$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wTdQe^!vyCFfUTJKYJSDadFhT:localhost:8800$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsTcQe]!beBXQofoOfxNBtzsut:localhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YTbQe\!vyCFfUTJKYJSDadFhT:localhost:8800$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobATaQe[!beBXQofoOfxNBtzsut:localhost:8800$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMT`QeZ!vyCFfUTJKYJSDadFhT:localhost:8800$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYT_QeY!beBXQofoOfxNBtzsut:localhost:8800$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhET^QeX!vyCFfUTJKYJSDadFhT:localhost:8800$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0T]QeW!beBXQofoOfxNBtzsut:localhost:8800$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4T\QeV!vyCFfUTJKYJSDadFhT:localhost:8800$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sT[QeU!beBXQofoOfxNBtzsut:localhost:8800$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90TZQeT!vyCFfUTJKYJSDadFhT:localhost:8800$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcTYQeS!beBXQofoOfxNBtzsut:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRATXQeR!vyCFfUTJKYJSDadFhT:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsTWQeQ!vyCFfUTJKYJSDadFhT:localhost:8800$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0TVQeP!beBXQofoOfxNBtzsut:localhost:8800$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8TUQeO!xvblqEscwOtCqJntfF:localhost:8800$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cTTQeN!xvblqEscwOtCqJntfF:localhost:8800$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2ITSQeM!xvblqEscwOtCqJntfF:localhost:8800$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pITRQeL!xvblqEscwOtCqJntfF:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwTQQeK!xvblqEscwOtCqJntfF:localhost:8800$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kTPQeJ!HhYREfUiJTpjWmOuPF:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkTOQeI!HhYREfUiJTpjWmOuPF:localhost:8800$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_ATNQeH!HhYREfUiJTpjWmOuPF:localhost:8800$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kTMQeG!HhYREfUiJTpjWmOuPF:localhost:8800$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4TLQeF!HhYREfUiJTpjWmOuPF:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUTKQeE!HhYREfUiJTpjWmOuPF:localhost:8800$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMETJQeD!nvclDopiBLEOKBIheH:localhost:8800$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wTIQeC!nvclDopiBLEOKBIheH:localhost:8800$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4THQeB!nvclDopiBLEOKBIheH:localhost:8800$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMTGQeA!nvclDopiBLEOKBIheH:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYTFQe@!nvclDopiBLEOKBIheH:localhost:8800$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kIEQO?!YgaGPEraeLCqHQirin:localhost:8800$157004188598DcHDt:localhost:8800TDQe>!aVxOoyiLLnxmzgLJat:localhost:8800$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQTCQe=!aVxOoyiLLnxmzgLJat:localhost:8800$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toIBQOQO8!YgaGPEraeLCqHQirin:localhost:8800$157004188093UtRbN:localhost:8800I=QO7!YgaGPEraeLCqHQirin:localhost:8800$157004187992XwpoQ:localhost:8800T<Qe6!aVxOoyiLLnxmzgLJat:localhost:8800$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQT;Qe5!aVxOoyiLLnxmzgLJat:localhost:8800$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwT:Qe4!aVxOoyiLLnxmzgLJat:localhost:8800$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0IT9Qe3!aVxOoyiLLnxmzgLJat:localhost:8800$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4T8Qe2!aVxOoyiLLnxmzgLJat:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI   *t3eQau$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1588}{"auth_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4"], "type": "m.room.join_rules", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041876518, "hashes": {"sha256": "81h9Qd45so08hDkPMS2S5G2AaNL0A9jr6ZUb2ahHCTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bMrjKe7dQqunbCp0s9Pt7JRv1WAV3i9Qm0PBzHhcdU0vmt9mhREiGLLdVByfbwhVa5tN0z3vpxM8EftmLfaRAQ"}}, "unsigned": {"age_ts": 1570041876518}}k2eQac$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1587}{"auth_events": ["$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "type": "m.room.power_levels", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"users": {"@anon-20191002_181700-305:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041875768, "hashes": {"sha256": "KrHY1j+LE4piFIij9nwTNnnpbnC4BwxMXQysQU+5R4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bWwJ4010oEjGXiZXGJZ/hkdKDeJ2ZXgGHZeZaErVRLrOxibSnbpI/uK85QDfGuRWn6BUKRnaJkUUHIbVLzrfAQ"}}, "unsigned": {"age_ts": 1570041875768}}v1eQay$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1586}{"auth_events": ["$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w"], "prev_events": ["$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w"], "type": "m.room.member", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-305", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-305:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041875003, "hashes": {"sha256": "w2GFhwdXUBcLQwQ7tE8xqUvfllguqSdYr5U3CgMW8zs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dem2PUu2yPkwrzXf0eLoZwDgEIX29/awCbUbFmGTIoWUcjtxi/RlXmeZJyZKGeeEF+Lot9O73Ijb+jo+5RUxCQ"}}, "unsigned": {"age_ts": 1570041875003}}i0eQa_$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1585}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-305:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041874058, "hashes": {"sha256": "kKNg8IvXBbjzYsoSAqultl0yK15RyxZtAcLm/lytDVU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e1u+/PjIj3XiVtUK3z/mt5KE/qx3TtrSf9Cfj7tGN4c9IGdkWb6WQb4RVF9yUJrkdzNmIk1dVrnVUbPl6uKPCQ"}}, "unsigned": {"age_ts": 1570041874058}} B 1 > p7c o= ]uC{Ii QOU# %\ * j + W 8 v D  | K 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUa1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30@1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4h1e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEf1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0@1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8L1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM@1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4H1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg)1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcV1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk]1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0|1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMB1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg 1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 21e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U (1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs/1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA :1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg O1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo R 21e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz01e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ,1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ601e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w_1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo t1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0U21e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ31e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM $(  S *\cG $ ` 2^cgQeQ3 $o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels PeQ']$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800joinaOeQ' $7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800m.room.create NeQ']$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800joinmMeQ? $876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibilityeLeQ/ $1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rulesgKeQ3 $7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels JeQ']$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800joinaIeQ' $ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800m.room.createmHeQ? $GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibilityeGeQ/ $pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rulesgFeQ3 $8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels EeQ']$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800joinaDeQ' $-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800m.room.creategBeQ3 $mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelse8eQ/ $w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rules 6eQ']$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800joina5eQ' $tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800m.room.createg4eQ3 $dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levelsd3eQ- $O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstoneZ2OQ/ $157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rulesb1OQ? $157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility\0OQ3 $157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access\/OQ3 $157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels.OQ']$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800joinV-OQ' $157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.createm,eQ? $PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibilitydAeQ- $L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstoneZ@OQ/ $157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.join_rulesb?OQ? $157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility\>OQ3 $157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access\COQ3 $157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels<OQ']$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800joinV;OQ' $157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.createe+eQ/ $VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rulesm9eQ? $hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibility FYj8p> v D  } K  Q  Y ' _ -e3k:Yr@xF~MS!1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 91e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs \1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc y1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUV1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMW1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw 31e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 71e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o s0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8 1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc 11e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEa1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA{1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs1e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYq1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 m1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkj1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0j1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 /1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 p1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ f1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ#1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg&1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs C1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs Dj8q? w E  ~ L  R Y ' _ -e3k9q? wE}KQ1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoT1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE{1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM I1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M w1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA~1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY@1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM @1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw<1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8S1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IM1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A V1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI q1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKor1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcW1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAb0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8Z1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI y1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic 1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb001e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIT1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAG1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU D1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I J | J  R  X & ^ ,d2k9jq? wE}KQ8p> % v D W]+1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU 1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8b1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98u1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIv1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k,1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg<1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUf1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsR0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y'1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8/1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc I1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMV1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04'1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM @1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 '1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4M1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc71e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y,0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcP1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYO1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoE1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr001e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI/1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w\1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss:1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IS1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA Dj8q? w E  ~ L  R Y ' _ -e3k9q? wE}KQ1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoT1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE{1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM I1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M w1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA~1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY@1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM @1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw<1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8S1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IM1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A V1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI q1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKor1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcW1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAb0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8Z1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI y1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic 1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oy1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb001e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIT1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAG1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU D1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I g gh9OQau $157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1594}{"auth_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}], ["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}]], "prev_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}]], "type": "m.room.guest_access", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004188195thBOS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041881801, "hashes": {"sha256": "VwXVwUEG2dO42Psod0Z2cWe0sHAICTm5XChKVJ4DAic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W8OpN9B5ukM+ZUQMNJI5ma6VtbJDXjFgio4SNYqUxSdQTcRu7F7kEQzEFczWjZmeNaqCgbHgX/0BV0QGLnBcBw"}}, "unsigned": {"age_ts": 1570041881801}}&8OQaq $157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1593}{"auth_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "type": "m.room.power_levels", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"users": {"@anon-20191002_181700-305:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004188194vdqBG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041881118, "hashes": {"sha256": "p4c490G9aJEt+j3sudCaX7ZcMO9TEZ6pI7RJCr6ktQY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gPYgr9hjJbof8W/H42nvVoNYjFGvcf6UXE3G//rqCIWesVq0XmA8UqAeC2PeR+kSkYKw23CPCmFxavn8dYqQBw"}}, "unsigned": {"age_ts": 1570041881118}}7OQa# $157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1592}{"auth_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}]], "prev_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}]], "type": "m.room.member", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-305", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-305:localhost:8800", "event_id": "$157004188093UtRbN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041880265, "hashes": {"sha256": "ImNMdqN1Sn8eqa9l2MWxuIrHXeuT932MrKzHMIc4zQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IfCASom9n9iJoKpewnO62dUhajgZmL1VDDCfqJPjzawkVixgTTIicKUkEZQVPaQPs1zWbaesZfj2W0rSt9LDAQ"}}, "unsigned": {"age_ts": 1570041880265}} J V $ [ \# * |b0j h6o P) =  u pC {I U J>O D  v v v v>1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso 1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok61e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw Z1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 21e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMQ1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gk1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsV1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngq1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI61e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcX1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwH1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYd1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4f1e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4 1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsp1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oU1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag/1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kO1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ901e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8821e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G01e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ41e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 C1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc'1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ01e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYz1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc`1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA_1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk]1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A 1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 Y1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA21e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEr21e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ $B P _  , Z]l*bHt2Z_4eQ# $sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800m.room.namem3eQ? $3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibilitym2eQ? $BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibilitye1eQ/ $WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rulese0eQ/ $mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rulesj/eQ9 $htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_aliasj.eQ9 $hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_aliasg-eQ3 $uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levelsg,eQ3 $Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels +eQ']$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800 *eQ']$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800a)eQ' $joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.createa(eQ' $VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800m.room.createm'eQ? $wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibilitye&eQ/ $JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rulesg%eQ3 $o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels $eQ']$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800a#eQ' $7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800m.room.create "eQ']$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800m!eQ? $876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibilitye eQ/ $1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rulesgeQ3 $7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels eQ']$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800aeQ' $ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800m.room.createmeQ? $GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibilityeeQ/ $pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rulesgeQ3 $8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels eQ']$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800aeQ' $-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800m.room.create\OQ3 $157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levelsgeQ3 $mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelsdeQ- $L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstoneZOQ/ $157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.join_rulesbOQ? $157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility\OQ3 $157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access\OQ3 $157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels _Nk>vI ^ 1Z-  ~ Q $ {N!m@2h; q D  c 6 V )~R%rEUXuZDImkeql:loca,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ _+Q !ePtMOPPOgOcBIMNZpn:localhost:8800 ^ ^,Q!eLsrBEnrHolwCNgkFW:localhost:8800II,Q!eLsrBEnrHolwCNgkFW:localhost:8800HH,Q!eLsrBEnrHolwCNgkFW:localhost:8800GG,Q!eLsrBEnrHolwCNgkFW:localhost:8800FF+Q !eLsrBEnrHolwCNgkFW:localhost:8800EE,Q!eKrOqiOabJcMgIJjwC:localhost:8800 ,Q!eKrOqiOabJcMgIJjwC:localhost:8800 +Q !eGEEtFXUXuZDImkeql:localhost:8800`+Q !drnXStKXkNQkouqUAg:localhost:8800 C C,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!drnXStKXkNQkouqUAg:localhost:8800 I I,Q!drnXStKXkNQkouqUAg:localhost:8800 G G,Q!drnXStKXkNQkouqUAg:localhost:8800 E E,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 +Q !dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!drnXStKXkNQkouqUAg:localhost:8800 L L,Q!drnXStKXkNQkouqUAg:localhost:8800 K K,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800-,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` `,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800+Q !djwLhpJUYOKsgQtrky:localhost:8800-,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800+Q !eKrOqiOabJcMgIJjwC:localhost:8800,Q!eJPTUgihvSwaOhIkrC:localhost:8800 --,Q!eJPTUgihvSwaOhIkrC:localhost:8800 ,,,Q!eJPTUgihvSwaOhIkrC:localhost:8800++,Q!eJPTUgihvSwaOhIkrC:localhost:8800**,Q!eJPTUgihvSwaOhIkrC:localhost:8800)),Q!eJPTUgihvSwaOhIkrC:localhost:8800((,Q!eJPTUgihvSwaOhIkrC:localhost:8800'',Q!eJPTUgihvSwaOhIkrC:localhost:8800&&,Q!eJPTUgihvSwaOhIkrC:localhost:8800%%+Q !eJPTUgihvSwaOhIkrC:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800'',Q!duCKuavMBSfRbTFPsc:localhost:8800&&,Q!duCKuavMBSfRbTFPsc:localhost:8800%%,Q!duCKuavMBSfRbTFPsc:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800##,Q!duCKuavMBSfRbTFPsc:localhost:8800"",Q!duCKuavMBSfRbTFPsc:localhost:8800!!+Q !duCKuavMBSfRbTFPsc:localhost:8800  ,Q!dnZVySJLGNtUKsSgXW:localhost:8800UU,Q!dnZVySJLGNtUKsSgXW:localhost:8800TT,Q!dnZVySJLGNtUKsSgXW:localhost:8800SS,Q!dnZVySJLGNtUKsSgXW:localhost:8800RR,Q!dnZVySJLGNtUKsSgXW:localhost:8800QQ+Q !dnZVySJLGNtUKsSgXW:localhost:8800PP,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800- _Nk>vI ^ 1Z-  ~ Q $ {N!m@2h; q D  c 6 V )~R%rEUXuZDImkeql:loca,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ _+Q !ePtMOPPOgOcBIMNZpn:localhost:8800 ^ ^,Q!eLsrBEnrHolwCNgkFW:localhost:8800II,Q!eLsrBEnrHolwCNgkFW:localhost:8800HH,Q!eLsrBEnrHolwCNgkFW:localhost:8800GG,Q!eLsrBEnrHolwCNgkFW:localhost:8800FF+Q !eLsrBEnrHolwCNgkFW:localhost:8800EE,Q!eKrOqiOabJcMgIJjwC:localhost:8800 ,Q!eKrOqiOabJcMgIJjwC:localhost:8800 +Q !eGEEtFXUXuZDImkeql:localhost:8800`+Q !drnXStKXkNQkouqUAg:localhost:8800 C C,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!drnXStKXkNQkouqUAg:localhost:8800 I I,Q!drnXStKXkNQkouqUAg:localhost:8800 G G,Q!drnXStKXkNQkouqUAg:localhost:8800 E E,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 +Q !dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!drnXStKXkNQkouqUAg:localhost:8800 L L,Q!drnXStKXkNQkouqUAg:localhost:8800 K K,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800-,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` `,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800+Q !djwLhpJUYOKsgQtrky:localhost:8800-,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800+Q !eKrOqiOabJcMgIJjwC:localhost:8800,Q!eJPTUgihvSwaOhIkrC:localhost:8800 --,Q!eJPTUgihvSwaOhIkrC:localhost:8800 ,,,Q!eJPTUgihvSwaOhIkrC:localhost:8800++,Q!eJPTUgihvSwaOhIkrC:localhost:8800**,Q!eJPTUgihvSwaOhIkrC:localhost:8800)),Q!eJPTUgihvSwaOhIkrC:localhost:8800((,Q!eJPTUgihvSwaOhIkrC:localhost:8800'',Q!eJPTUgihvSwaOhIkrC:localhost:8800&&,Q!eJPTUgihvSwaOhIkrC:localhost:8800%%+Q !eJPTUgihvSwaOhIkrC:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800'',Q!duCKuavMBSfRbTFPsc:localhost:8800&&,Q!duCKuavMBSfRbTFPsc:localhost:8800%%,Q!duCKuavMBSfRbTFPsc:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800##,Q!duCKuavMBSfRbTFPsc:localhost:8800"",Q!duCKuavMBSfRbTFPsc:localhost:8800!!+Q !duCKuavMBSfRbTFPsc:localhost:8800  ,Q!dnZVySJLGNtUKsSgXW:localhost:8800UU,Q!dnZVySJLGNtUKsSgXW:localhost:8800TT,Q!dnZVySJLGNtUKsSgXW:localhost:8800SS,Q!dnZVySJLGNtUKsSgXW:localhost:8800RR,Q!dnZVySJLGNtUKsSgXW:localhost:8800QQ+Q !dnZVySJLGNtUKsSgXW:localhost:8800PP,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800- d %d=<eQa$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1597}{"auth_events": ["$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ"], "type": "m.room.tombstone", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!YgaGPEraeLCqHQirin:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041879392, "hashes": {"sha256": "pkuQmX+zevQTrnuCc6XFStxDGOQcRNCM8zk1TCVe0hk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r3dKVrnqe4suINSUgzb7dRmU7nab2v6R2n03KnVqXg5IeymPFhAXhhabZcrWHHEqz26v0jzlho+qTI7SSEy7Cw"}}, "unsigned": {"age_ts": 1570041879392}}a;OQag $157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1596}{"auth_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}], ["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188296OVWxu:localhost:8800", {"sha256": "rSX7Yaj5ENViLQRfF1emhbhM4Hv4SflxewWW3eOUUTM"}]], "type": "m.room.join_rules", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004188397MRiZP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041883360, "hashes": {"sha256": "qHxK9ER6EIZJoYG8DmYCUE1YE9JQrPY8jK4y6je8H5k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4vp7ljDzOYirwtvy2DfGkCNpYpSddt9sYmojvm4hW2D68WwP6g1L8iGlpIeiFY4D4kjoqAH6HfYRDzjnrQUQCQ"}}, "unsigned": {"age_ts": 1570041883360}}r:OQa $157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1595}{"auth_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}], ["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188195thBOS:localhost:8800", {"sha256": "CLSWRbpdQ6Sg6VgD7T/6cHgNdCMLn4QqVZASa2YQTCg"}]], "type": "m.room.history_visibility", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004188296OVWxu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041882643, "hashes": {"sha256": "wj5s/RRewfbCV5saUzAVT+OdLSauRClJ0jYo8ktGr3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4SAlZzXw3No5iBpeGmcPYg1UvjPtAmq3x9W3HB3xTpRRCVo+51VN0hJ9ntGDc0GU1Ng3ozMv95QTuGBmBW7AA"}}, "unsigned": {"age_ts": 1570041882643}}   $ N L JHFDB@><:~eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800~eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800~eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800~eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800~eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800~eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800~eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800~eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800~eeQ$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800hOOQ$157004188598DcHDt:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hOOQ$157004188598DcHDt:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800h~OOQ$157004188598DcHDt:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800~}eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~|eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~{eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800~zeeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~yeeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~xeeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800hwOOQ$157004188397MRiZP:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800 %p@P`p`p 0 @ P `  p 0 0@PM{]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800Mz]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800My]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800Mx]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800Mw]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800Mv]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800Mu]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800Mt]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800Ms]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800Mr]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800Mq]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800Mp]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800M]Q@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800M]Q@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800M]Q@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800M]Q@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800M]Q@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800M]Q@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800M]Q@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800M ]Q@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800M ]Q@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800M ]Q@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800M ]Q@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800M ]Q@anon-20191002_181700-321:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800M]Q@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800M]Q@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800M]Q@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800M]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800M]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800M]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800M]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800M]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800M]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800M]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800M~]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800M}]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800M|]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800 k Xki?eQa_$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1600}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-306:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041886797, "hashes": {"sha256": "4KV0MyzbgMe9RDjq9eWMkJy3DP4TEPPxuPe/fjxZdMg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "btBEuzyI1wee1QGD0sc6VvUamigz0pt+Be3xPfddIHu5vGp9blQ2quI+gDLefaD4b/A+hRNd718fXTNulll9Cw"}}, "unsigned": {"age_ts": 1570041886797}}@>OQa% $157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1599}{"auth_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}], ["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188397MRiZP:localhost:8800", {"sha256": "LHTLpTtT89xPhjCYdHihOiFX6K+ujkNU1gZ9W4eF1hs"}]], "type": "m.room.power_levels", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 0, "users_default": 80, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.avatar": 50, "m.room.name": 50}, "users": {"@anon-20191002_181700-305:localhost:8800": 100}}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004188598DcHDt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041885492, "hashes": {"sha256": "APjoRHIKeHyPmLAv1kvkKfWipABf+8iam3b0lrpN368"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OTxvW9xhlBhQSfldX6vXvSBEAbm7vRiMzjhMzOF6VLukBpYMNlU9zVJwnW9hfqmEst8AXWkjPAV7aQ4McpPnAQ"}}, "unsigned": {"age_ts": 1570041885492, "replaces_state": "$157004188194vdqBG:localhost:8800"}}`=eQaM$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1598}{"auth_events": ["$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to"], "type": "m.room.power_levels", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 81, "users_default": 80, "state_default": 50, "events_default": 81, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.avatar": 50, "m.room.name": 50}, "users": {"@anon-20191002_181700-305:localhost:8800": 100}}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041884682, "hashes": {"sha256": "mgaVQ24lceaJ+i+O9I46uFMxORRSQRmFQCIEnrMeNog"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+5gcOqrj1GJ+7NjOP8oLJSjRowxf3rr9FQKVu6/Hr214cnz7u/qe2yuSNdsM02dTDlaFgSwVYaOqk5R4FdTEAQ"}}, "unsigned": {"age_ts": 1570041884682, "replaces_state": "$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ"}} Vx  `X0pH H h@X0h@P(8pxP(`8 X 0  h @ ` 8  p H  X0x'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qSUSLLWjDxcGibUZdT:localhost:8800~'Q!qSUSLLWjDxcGibUZdT:localhost:8800}'Q!qSUSLLWjDxcGibUZdT:localhost:8800|'Q!qInWQPtNQfBFoVzUtP:localhost:8800 r'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800 >'Q!qjijQBfMwsCPTVgKPm:localhost:8800 ='Q!qjijQBfMwsCPTVgKPm:localhost:8800 <'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800 D'Q!rQeYcODvQiLsOIbQrJ:localhost:8800 'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800C'Q!rJhSRzmWBQHlIhuDXT:localhost:8800B'Q!rJhSRzmWBQHlIhuDXT:localhost:8800A'Q!rJhSRzmWBQHlIhuDXT:localhost:8800@'Q!rJhSRzmWBQHlIhuDXT:localhost:8800?'Q!rJhSRzmWBQHlIhuDXT:localhost:8800>'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800 x'Q!qtelAHlSkrqEFmlCqS:localhost:8800\'Q!qtelAHlSkrqEFmlCqS:localhost:8800['Q!qtelAHlSkrqEFmlCqS:localhost:8800Z'Q!qjijQBfMwsCPTVgKPm:localhost:8800 ?'Q!qjijQBfMwsCPTVgKPm:localhost:8800 A'Q!qjijQBfMwsCPTVgKPm:localhost:8800 @'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 q'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 p'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 s'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800@'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800$'Q!rQeYcODvQiLsOIbQrJ:localhost:8800#'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 o'Q!qjijQBfMwsCPTVgKPm:localhost:8800 B'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 r'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 t'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qtelAHlSkrqEFmlCqS:localhost:8800W'Q!qtelAHlSkrqEFmlCqS:localhost:8800X'Q!qtelAHlSkrqEFmlCqS:localhost:8800Y'Q!qjijQBfMwsCPTVgKPm:localhost:8800 C Pm< wF Q \ + g 6  r A  } L W&b1m< xGR!],g6rA.'] @anon-20191002_181700-388:localhost:8800.&] @anon-20191002_181700-387:localhost:8800o.%] @anon-20191002_181700-386:localhost:8800i.$]@anon-20191002_181700-385:localhost:8800a.#] @anon-20191002_181700-384:localhost:8800c."] @anon-20191002_181700-383:localhost:8800Z.!] @anon-20191002_181700-382:localhost:8800Y. ]@anon-20191002_181700-381:localhost:8800T.] @anon-20191002_181700-380:localhost:8800T.] @anon-20191002_181700-379:localhost:8800K.] @anon-20191002_181700-378:localhost:8800M.]@anon-20191002_181700-377:localhost:8800E/]@anon-20191002_181700-375:localhost:8800=.] @anon-20191002_181700-376:localhost:8800>.] @anon-20191002_181700-374:localhost:88003.]@anon-20191002_181700-372:localhost:8800".] @anon-20191002_181700-373:localhost:8800!.]@anon-20191002_181700-371:localhost:8800.]@anon-20191002_181700-370:localhost:8800.]@anon-20191002_181700-369:localhost:8800 .]@anon-20191002_181700-368:localhost:8800.] @anon-20191002_181700-367:localhost:8800.] @anon-20191002_181700-365:localhost:8800.]@anon-20191002_181700-366:localhost:8800.] @anon-20191002_181700-363:localhost:8800.]@anon-20191002_181700-364:localhost:8800. ] @anon-20191002_181700-360:localhost:8800. ] @anon-20191002_181700-361:localhost:8800. ] @anon-20191002_181700-362:localhost:8800. ] @anon-20191002_181700-359:localhost:8800. ] @anon-20191002_181700-357:localhost:8800.] @anon-20191002_181700-358:localhost:8800.] @anon-20191002_181700-356:localhost:8800q.] @anon-20191002_181700-354:localhost:8800o.] @anon-20191002_181700-355:localhost:8800r.]@anon-20191002_181700-353:localhost:8800g.] @anon-20191002_181700-352:localhost:8800e.] @anon-20191002_181700-350:localhost:8800^.] @anon-20191002_181700-351:localhost:8800V.] @anon-20191002_181700-349:localhost:8800N.] @anon-20191002_181700-348:localhost:8800F.~] @anon-20191002_181700-346:localhost:8800=.}] @anon-20191002_181700-347:localhost:8800>.|] @anon-20191002_181700-345:localhost:88006.{] @anon-20191002_181700-343:localhost:8800$.z] @anon-20191002_181700-342:localhost:8800.y] @anon-20191002_181700-341:localhost:8800.x] @anon-20191002_181700-339:localhost:8800.w] @anon-20191002_181700-338:localhost:8800.v] @anon-20191002_181700-337:localhost:8800.u] @anon-20191002_181700-336:localhost:8800.t]@anon-20191002_181700-335:localhost:8800.s]@anon-20191002_181700-334:localhost:8800.r] @anon-20191002_181700-333:localhost:8800.q] @anon-20191002_181700-332:localhost:8800.p] @anon-20191002_181700-331:localhost:8800.o] @anon-20191002_181700-330:localhost:8800.n] @anon-20191002_181700-329:localhost:8800.m] @anon-20191002_181700-328:localhost:8800.l] @anon-20191002_181700-327:localhost:8800.k] @anon-20191002_181700-326:localhost:8800.j] @anon-20191002_181700-325:localhost:8800.i] @anon-20191002_181700-324:localhost:8800.h] @anon-20191002_181700-323:localhost:8800.g] @anon-20191002_181700-322:localhost:8800.f] @anon-20191002_181700-321:localhost:8800.e] @anon-20191002_181700-320:localhost:8800.d] @anon-20191002_181700-319:localhost:8800.c] @anon-20191002_181700-318:localhost:8800z.b] @anon-20191002_181700-317:localhost:8800t.a]@anon-20191002_181700-316:localhost:8800n.`]@anon-20191002_181700-315:localhost:8800n._]@anon-20191002_181700-314:localhost:8800m.^] @anon-20191002_181700-312:localhost:8800n/]]@anon-20191002_181700-311:localhost:8800l.\] @anon-20191002_181700-310:localhost:8800O.[]@anon-20191002_181700-309:localhost:8800J.Z] @anon-20191002_181700-308:localhost:8800J.Y] @anon-20191002_181700-307:localhost:8800I.X] @anon-20191002_181700-306:localhost:8800D  CeQa$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1604}{"auth_events": ["$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM", "$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k", "$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "prev_events": ["$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4"], "type": "m.room.history_visibility", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041889983, "hashes": {"sha256": "OMhltPD+rofQRpxRcgrtv3mi6Cn5vDDqcoU9dAlrx9k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nG2ASvROXRTxUkm0De2SPsYS3krY84xxyUvggheOnZz2CMzu+P6n2HLveKTajGwOp2Eb991KPMUUg+fnGiHgAA"}}, "unsigned": {"age_ts": 1570041889983}}tBeQau$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1603}{"auth_events": ["$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM", "$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k", "$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "prev_events": ["$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM"], "type": "m.room.join_rules", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041889241, "hashes": {"sha256": "tHjsqlrvOGit8dOzrRrj8qYrg+nRkaxqCSFBrWJdJAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U4Hhp+dLShym1DhnCXe42CHU0E6+OjjjHVXk9j3R8ni7yNSL8fQZgFxL7GIT+znC3tuCJv7xAXSOaha7konCBg"}}, "unsigned": {"age_ts": 1570041889241}}kAeQac$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1602}{"auth_events": ["$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k", "$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "prev_events": ["$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "type": "m.room.power_levels", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"users": {"@anon-20191002_181700-306:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041888308, "hashes": {"sha256": "f9oD4c5WYKDVKNcLPgAB0KfjhK1exqXbyo8Fxxjw4rs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IBvXQ3Hd6gs26PqiXDH5tK+T8eOrPsK9PeULf0r+UJtR3p92uO0Tj4YVB2BRB8TbPNAe4/Vmx7XETvwoufZHDg"}}, "unsigned": {"age_ts": 1570041888308}}v@eQay$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1601}{"auth_events": ["$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k"], "prev_events": ["$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k"], "type": "m.room.member", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-306", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-306:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041887540, "hashes": {"sha256": "f2Fku2J8A6ZtkZVsIh3pVI+eju1OCHwqZC9V9E2QmNM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vw4BbUVQOa5mEdeP21mqjdYupuChINCnpSgJXEcMWZu+7jb/lz7loMg/4s2Ayomts8L34UZWJbLrCcq7ADd9AA"}}, "unsigned": {"age_ts": 1570041887540}} ,NC 8 - { " p  e ZOD9.|#qf VleL$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAsha256fYʛ;F26.bf.,AT0VkeL$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQsha256~#mlXbR^m-VjeL$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQsha256QUugTvW$, E@4VieL$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYsha256PY9.ajbk/xT8vVheL$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qsha256wSɳ^vԾ*>})(ߞKPVgeL$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIsha256 W dHѫ/r0bϳXVfeL$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gsha256e:a%-RtEFj8e.=HN VeeL$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIsha256 Q&(EY{~,4V9VdeL$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648sha256uL V}u[O&",VceL$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8sha256Ӥ\DyvYH'Ck?VbeL$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcsha256&Bz"r7R0uQ"g7VaeL$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAsha256PKNάZ/5,z PbR V`eL$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwsha256Oo555]' >x_dMA8V_eL$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEsha256Irs [ޮqP7as=rV^eL$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wsha256$Ű.򆉒`ElT|S䓼V]eL$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcssha256gR}-@n\LS_]Jl\V\eL$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ysha256B WbޘǍkV[eL$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAsha256j]т?EK_PbYtVZeL$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMsha2560HN`9(6܊WQ,i{ CVYeL$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYsha256Bc7ghÑ0Hx s8!)vVXeL$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEsha256X|Q5J4Ini _sLť2-:VWeL$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0sha256fјAAҥ;G\*3@ J ጲVVeL$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4sha256gSF~L^)y ]~VUeL$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9ssha256YdVBkW;Yٝ!PG0 VTeL$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90sha256xT|ԚяrV$PK>%xK[+SAVSeL$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcsha256gL,aug)$H9 ШgVReL$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAsha256B-z yM@D /VQeL$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHssha256dܗ&ǖJ9|z@x6{VPeL$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0sha25619*ZY3 T5Ei]]GaMVOeL$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8sha256T[. 6G@|P  BGBeVNeL$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2csha256FOdwYߜrܯxJSgVMeL$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Isha256' c(qHsg xrh܏bVLeL$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIsha256f5Ʀ$*)ef%ke~֒VKeL$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwsha256BT>hZubz6%~;]9VJeL$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1ksha256r^v31YVIeL$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELksha2561?2bt {)=hd3?VHeL$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Asha256s9<]s"C]Ǖ^װŲ1VGeL$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4ksha256Ŧ'`9+ =bz!cQQC#VFeL$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4sha256דU{@5=?`) 52ImVEeL$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUsha256>wxtQHDܹRPO}FfÊVDeL$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEsha256eqr˫%(,FGdVCeL$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wsha256yv. 5d \Hn9VRc?VBeL$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4sha2560/-ж񟯛iMZt' xVAeL$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMsha256Z1򓭙l?VXRz$ã ,`m^m z ) 8 E R  _ n{*7FS|+P]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:88001P]Q@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800P]Q@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800P]Q@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800 P]Q@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800 P]Q@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800 P]Q@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800 P]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:88000P]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800.P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800/P]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800-N[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800+P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800,P]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800*P]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800(P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800)P]Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800'P]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800&P]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800%P]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800$N[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800#P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800"P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800!P]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800 P]Q@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800P]Q@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800P]Q@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800P]Q@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829N[Q@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800P]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829P]Q@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800P]Q@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800P]Q@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800P]Q@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800P]Q@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800N[Q@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800P]Q@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800P]Q@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1 e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1 e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1 e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1~e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1}e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1|e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01{e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1ze$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1ye$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U 1xe$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs 1we$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE 1ve$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1ue$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk 1te$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM 1se$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI1re$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU1qe$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc1pe$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1oe$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY81ne$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1me$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41le$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs1ke$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk1je$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1ie$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ1he$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1ge$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY1fe$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1ee$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1de$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1ce$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1be$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481ae$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81`e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc1_e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1^e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1]e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE1\e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w1[e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1Ze$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y1Ye$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1Xe$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1We$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY1Ve$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1Ue$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01Te$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41Se$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1Re$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy901Qe$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1Pe$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1Oe$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs1Ne$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU01Me$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr81Le$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1Ke$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1Je$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1Ie$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1He$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k1Ge$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk1Fe$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1Ee$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1De$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ41Ce$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1Be$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME1Ae$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w Hvc2d/ _ , \ ' W $ X # S PMLK}HzEuDvA2]@anon-20191002_181700-412:localhost:8800a 4]@anon-20191002_181700-411:localhost:8800m 2]@anon-20191002_181700-411:localhost:8800a 2]@anon-20191002_181700-410:localhost:8800a0[@anon-20191002_181700-40:localhost:8800aX4]@anon-20191002_181700-409:localhost:8800m 2]@anon-20191002_181700-409:localhost:8800a4]@anon-20191002_181700-408:localhost:8800m2]@anon-20191002_181700-408:localhost:8800a4]@anon-20191002_181700-407:localhost:8800m2]@anon-20191002_181700-407:localhost:8800a2]@anon-20191002_181700-406:localhost:8800a4]@anon-20191002_181700-405:localhost:8800m2]@anon-20191002_181700-405:localhost:8800a4]@anon-20191002_181700-404:localhost:8800m2]@anon-20191002_181700-404:localhost:8800a4]@anon-20191002_181700-403:localhost:8800m2]@anon-20191002_181700-403:localhost:8800a2]@anon-20191002_181700-402:localhost:8800a4]@anon-20191002_181700-401:localhost:8800m2]@anon-20191002_181700-401:localhost:8800a4]@anon-20191002_181700-400:localhost:8800m2]@anon-20191002_181700-400:localhost:8800a0[@anon-20191002_181700-3a:localhost:8800a2[@anon-20191002_181700-39:localhost:8800mW0[@anon-20191002_181700-39:localhost:8800aV4]@anon-20191002_181700-399:localhost:8800m2]@anon-20191002_181700-399:localhost:8800a4]@anon-20191002_181700-398:localhost:8800m2]@anon-20191002_181700-398:localhost:8800a4]@anon-20191002_181700-397:localhost:8800m2]@anon-20191002_181700-397:localhost:8800a2]@anon-20191002_181700-396:localhost:8800a4]@anon-20191002_181700-395:localhost:8800m2]@anon-20191002_181700-395:localhost:8800a4]@anon-20191002_181700-394:localhost:8800m2]@anon-20191002_181700-394:localhost:8800a4]@anon-20191002_181700-393:localhost:8800m2]@anon-20191002_181700-393:localhost:8800a4]@anon-20191002_181700-392:localhost:8800m2]@anon-20191002_181700-392:localhost:8800a4]@anon-20191002_181700-391:localhost:8800m2]@anon-20191002_181700-391:localhost:8800a4]@anon-20191002_181700-390:localhost:8800m2]@anon-20191002_181700-390:localhost:8800a2[@anon-20191002_181700-38:localhost:8800mU0[@anon-20191002_181700-38:localhost:8800aT4]@anon-20191002_181700-389:localhost:8800m2]@anon-20191002_181700-389:localhost:8800a4]@anon-20191002_181700-388:localhost:8800m2]@anon-20191002_181700-388:localhost:8800a4]@anon-20191002_181700-387:localhost:8800m2]@anon-20191002_181700-387:localhost:8800a4]@anon-20191002_181700-386:localhost:8800m2]@anon-20191002_181700-386:localhost:8800a4]@anon-20191002_181700-385:localhost:8800m2]@anon-20191002_181700-385:localhost:8800a4]@anon-20191002_181700-384:localhost:8800m2]@anon-20191002_181700-384:localhost:8800a4]@anon-20191002_181700-383:localhost:8800m2]@anon-20191002_181700-383:localhost:8800a4]@anon-20191002_181700-382:localhost:8800m2]@anon-20191002_181700-382:localhost:8800a4]@anon-20191002_181700-381:localhost:8800m2]@anon-20191002_181700-381:localhost:8800a4]@anon-20191002_181700-380:localhost:8800m2]@anon-20191002_181700-380:localhost:8800a2[@anon-20191002_181700-37:localhost:8800mS0[@anon-20191002_181700-37:localhost:8800aR4]@anon-20191002_181700-379:localhost:8800m2]@anon-20191002_181700-379:localhost:8800a4]@anon-20191002_181700-378:localhost:8800m exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~}|{zyx~w}v|u{tzsyrxqwpvountmslrkqjpiohngmflekdjcibhag`f_e^d]c\b[aZ`Y_X^W]V\U[TZSYRXQWPVOUNTMSLRKQJPIOHNGMFLEKDJCIBHAG@F?E>D=C<B;A:@9?8>7=6<5;4:39281706/5.4-3,2+1*0)/(.'-&,%+$*#)"(!' &%$#"!                   *tGeQau$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1608}{"auth_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4", "$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "prev_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4"], "type": "m.room.join_rules", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041894533, "hashes": {"sha256": "fZgIjhUcUioxslaIbTL5/14rgahTIdyGKaN1GieExqU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hOd6BE0Z8CvSeeKN8XVWiIlNpLPBvTOUcPmt8hSqFKR3MDGdDUEzWM/R/AXcVOkvXkEwIbt0DCwCW0act6jBAg"}}, "unsigned": {"age_ts": 1570041894533}}kFeQac$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1607}{"auth_events": ["$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "prev_events": ["$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "type": "m.room.power_levels", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"users": {"@anon-20191002_181700-307:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041893543, "hashes": {"sha256": "idVYhReESVOR9VqJYYGlqiobz5Cd2fQrZiGESkvbdyw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FAnXJs3bYHDVXx2JXiqeeHMr/qb4Ac/+/XYbnMUPnWSMfTH504Sy2b7hzOpU9fA80Dkp5eyvwfcq1/dd3PqUDw"}}, "unsigned": {"age_ts": 1570041893543}}vEeQay$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1606}{"auth_events": ["$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME"], "prev_events": ["$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME"], "type": "m.room.member", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-307", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-307:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041892994, "hashes": {"sha256": "5yDENG8a01ZBzQ85aWGK+bWPBjQ4ZSy7d6gUAMq8sK8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Azkud7X2kHS/qbvFIRzxImHGmGQBq1nVfEqcd+AbdySS87bGmw83mcxZ36Vj7EQHmtqKiK4hTfyzDNSzfp/6BA"}}, "unsigned": {"age_ts": 1570041892994}}iDeQa_$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1605}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-307:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041892222, "hashes": {"sha256": "74Z1QUDrVmpaBAT4xtuf8nTGwHi75dUI58vvkgTXm3A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z0x7MNRJvZe9zN8b/iPhoneDJO7fZCOtbaGU5a5QRdkq4e6B0N20mLxm5rYz2gmGJfKSKkQOxs54DSY70Z3IAQ"}}, "unsigned": {"age_ts": 1570041892222}} #Nq) 1 < f ( 2T8^"$Ni~Q3 e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levels$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gg}Q/ e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI |Q']e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648l{Q9 e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_alias$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8czQ' e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.create$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzciyQ3 e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA xQ']e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwrwQ))e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEcvQ' e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wbuQ% e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topic$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsrtQ))e!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YasQ# e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.name$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAorQ? e!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibility$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMoqQ? e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibility$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYgpQ/ e!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rules$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEgoQ/ e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rules$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0lnQ9 e!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_alias$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4lmQ9 e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_alias$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9silQ3 e!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levels$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90ikQ3 e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc jQ']e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs iQ']e!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAchQ' e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.create$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0cgQ' e!beBXQofoOfxNBtzsut:localhost:8800m.room.create$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8ofQ? e!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibility$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cgeQ/ e!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rules$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IidQ3 e!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI cQ']e!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwcbQ' e!xvblqEscwOtCqJntfF:localhost:8800m.room.create$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kfaQ- e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.tombstone$yrx24DeUlVPn0WuKurI8zQ-dR2Upm89bUIKk4Y3e82Q `Q']e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELko_Q? e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibility$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Ag^Q/ e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rules$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4ki]Q3 e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 \Q']e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU =\ Z  p  n*844=!]e)Q ]$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ym.room.aliases!beBXQofoOfxNBtzsut:localhost:8800mWZmZ@anon-20191002_181700-311:localhost:8800\e#Q ]$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAm.room.name!vyCFfUTJKYJSDadFhT:localhost:8800mWYmY@anon-20191002_181700-311:localhost:8800,[e?Q ]$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMm.room.history_visibility!beBXQofoOfxNBtzsut:localhost:8800mPmU%@anon-20191002_181700-311:localhost:8800,Ze?Q ]$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYm.room.history_visibility!vyCFfUTJKYJSDadFhT:localhost:8800mPmT@anon-20191002_181700-311:localhost:8800$Ye/Q ]$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEm.room.join_rules!beBXQofoOfxNBtzsut:localhost:8800mLamN`@anon-20191002_181700-311:localhost:8800$Xe/Q ]$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0m.room.join_rules!vyCFfUTJKYJSDadFhT:localhost:8800mL`mM@anon-20191002_181700-311:localhost:8800)We9Q ]$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4m.room.canonical_alias!beBXQofoOfxNBtzsut:localhost:8800mHfmJ=@anon-20191002_181700-311:localhost:8800)Ve9Q ]$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sm.room.canonical_alias!vyCFfUTJKYJSDadFhT:localhost:8800mHdmI@anon-20191002_181700-311:localhost:8800&Ue3Q ]$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90m.room.power_levels!beBXQofoOfxNBtzsut:localhost:8800mD$mG*@anon-20191002_181700-311:localhost:8800&Te3Q ]$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcm.room.power_levels!vyCFfUTJKYJSDadFhT:localhost:8800mD"mFo@anon-20191002_181700-311:localhost:8800 Se'Q ]$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAm.room.member!beBXQofoOfxNBtzsut:localhost:8800m?mB@anon-20191002_181700-311:localhost:8800 Re'Q ]$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsm.room.member!vyCFfUTJKYJSDadFhT:localhost:8800m?mA@anon-20191002_181700-311:localhost:8800Q e'Q  ]$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0m.room.create!vyCFfUTJKYJSDadFhT:localhost:8800m<m=8@anon-20191002_181700-311:localhost:8800P e'Q  ]$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8m.room.create!beBXQofoOfxNBtzsut:localhost:8800m<m<@anon-20191002_181700-311:localhost:8800,Oe?Q ]$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cm.room.history_visibility!xvblqEscwOtCqJntfF:localhost:8800m4m6 @anon-20191002_181700-310:localhost:8800$Ne/Q ]$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Im.room.join_rules!xvblqEscwOtCqJntfF:localhost:8800m1Rm2U@anon-20191002_181700-310:localhost:8800&Me3Q ]$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIm.room.power_levels!xvblqEscwOtCqJntfF:localhost:8800m-jm/i@anon-20191002_181700-310:localhost:8800 Le'Q ]$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwm.room.member!xvblqEscwOtCqJntfF:localhost:8800m)m*@anon-20191002_181700-310:localhost:8800K e'Q  ]$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1km.room.create!xvblqEscwOtCqJntfF:localhost:8800m&m&@anon-20191002_181700-310:localhost:8800 Je'Q ]$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkm.room.member!HhYREfUiJTpjWmOuPF:localhost:8800mm@anon-20191002_181700-308:localhost:8800,Ie?Q ]$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Am.room.history_visibility!HhYREfUiJTpjWmOuPF:localhost:8800mmq@anon-20191002_181700-307:localhost:8800$He/Q ]$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4km.room.join_rules!HhYREfUiJTpjWmOuPF:localhost:8800mm^@anon-20191002_181700-307:localhost:8800&Ge3Q ]$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4m.room.power_levels!HhYREfUiJTpjWmOuPF:localhost:8800mm@anon-20191002_181700-307:localhost:8800 Fe'Q ]$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUm.room.member!HhYREfUiJTpjWmOuPF:localhost:8800mm@anon-20191002_181700-307:localhost:8800 6 w6vKeQay$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1612}{"auth_events": ["$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k"], "prev_events": ["$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k"], "type": "m.room.member", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-310", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-310:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041899516, "hashes": {"sha256": "9aVNro2B99ZXEfSfWajHOlTjxkhZKZHu2vu1dOquzCM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITZZfPMrecX4lscSuLXIb4c5p9lW/tQqis/TdNoTQ7e24bzz6iw45/1c27ZHA6S+cjOVQcOVKkjwtIs5h95KBw"}}, "unsigned": {"age_ts": 1570041899516}}iJeQa_$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1611}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-310:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041898515, "hashes": {"sha256": "x3Elg/vVUAeHaQWUj5qqcmq7iNbZIQHOt+z5DJMe7eI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7XbRhAPUTvdGC0OjJAusU/+UDd9uITg/sCgTAIgBQVNEckvHS0+Mp3RBs5fm5IlIn40FIj2OtTUf1rZw4fEIBQ"}}, "unsigned": {"age_ts": 1570041898515}}VIeQa9$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 328, "stream_ordering": 1610}{"auth_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4", "$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k"], "prev_events": ["$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A"], "type": "m.room.member", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-308:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-308", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-308:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041896469, "hashes": {"sha256": "NXQ0fdyb0MzxCPz6rSaMzX9vs7RJTCo2VcaqNpzayzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AuMkpaCxUAONczTr8P9C18fstdiFxR2QRchYomyxLFKyDbmRQ8ZI/DYsaBwpTins6AX6UCHZW7EPpJtkwE7EAQ"}}, "unsigned": {"age_ts": 1570041896469}}HeQa$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1609}{"auth_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4", "$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "prev_events": ["$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k"], "type": "m.room.history_visibility", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041895193, "hashes": {"sha256": "OQ+ZaM0WS8Qie3yf1ZxVPl6Tmp1N1eFQMMYr8sHPHO4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VRe6n557fstb5IfbjJlLv9Uffyh+Hep6EEKaiwekvmb+vJwZZv/FS9vpKV7fEuIDbGWvIfFEc/rGmHfJmrRrDA"}}, "unsigned": {"age_ts": 1570041895193}} "p y . ` @ f =e"HHp,pAQ? ek!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQc@Q% ej!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topic$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYh?Q/ ei!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rules$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qp>Q? eh!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibility$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIj=Q3 eg!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levels$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gh<Q/ ef!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI ;Q']ee!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648m:Q9 ed!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_alias$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8d9Q' ec!SfYtaUhCFosNfHfUVm:localhost:8800m.room.create$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcj8Q3 eb!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA 7Q']ea!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRws6Q))e`!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEd5Q' e_!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wc4Q% e^!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topic$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcss3Q))e]!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Yb2Q# e\!vyCFfUTJKYJSDadFhT:localhost:8800m.room.name$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAp1Q? e[!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibility$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMp0Q? eZ!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibility$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYh/Q/ eY!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rules$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEh.Q/ eX!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rules$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0m-Q9 eW!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_alias$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4m,Q9 eV!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_alias$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sj+Q3 eU!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levels$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90j*Q3 eT!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc )Q']eS!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA (Q']eR!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsd'Q' eQ!vyCFfUTJKYJSDadFhT:localhost:8800m.room.create$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0d&Q' eP!beBXQofoOfxNBtzsut:localhost:8800m.room.create$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8p%Q? eO!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibility$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2ch$Q/ eN!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rules$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Ij#Q3 eM!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI "Q']eL!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwd!Q' eK!xvblqEscwOtCqJntfF:localhost:8800m.room.create$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k Q']eJ!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk g * T~=ggJ]!cS@anon-20191002_181700-320:localhost:8800WFQFGOHNGBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgogI]!cR@anon-20191002_181700-319:localhost:8800HSJRSHPEIAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEN1KlE4cmt4ZHdeayYqRmIKMDAyZnNpZ25hdHVyZSCDi7ywkZTQz5JXqqEFhHe9nQqcZgcfJJGXdwiFuFZ9tgogH]!cQ@anon-20191002_181700-318:localhost:8800PHFUHLOHRJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAogG]!cP@anon-20191002_181700-317:localhost:8800KSXFFXWMCBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGp5X3ZqYWUwO1lSMVZfPWIKMDAyZnNpZ25hdHVyZSBXnyRWT7c5jVRFSAP8yBUFVPMpHFHO6Jh3lAfIH2WdGAogF]!cO@anon-20191002_181700-316:localhost:8800JHIWJLKOFGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ6eG4uLmo4eW94QlROanoKMDAyZnNpZ25hdHVyZSBbUWn8_gv5bniC91yO-BYhfQYBVRKyv5j5MVVtMP_JLwogE]!cN@anon-20191002_181700-315:localhost:8800KXXAQONTRLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEktc1A6I2xTMH5pbitmUy0KMDAyZnNpZ25hdHVyZSAHdPEVl-Zg5xmbVysqfNP8UeNclE06lAUk2sezF9wAlAogD]!cM@anon-20191002_181700-314:localhost:8800BTSWZNQVTPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDc4UmlwQ2g1OHNKcUkzVVAKMDAyZnNpZ25hdHVyZSAdNspZQ479GxtCNd_qDY7ARZWMjLUH92hEAKKLsgL4DQogC]!cL@anon-20191002_181700-312:localhost:8800LFIOTRIQVMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8jTldNRmhjQDJZSGt5a0kKMDAyZnNpZ25hdHVyZSAytp0T7K0GtNLyrrvvKThMXkDCn1jZ6wI9npjmCcM0CwogB]!cK@anon-20191002_181700-311:localhost:8800BNVFQNMSXMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtpJjJyXl9fZkwjbXE5QncKMDAyZnNpZ25hdHVyZSAlQMVETAI9JwraP-0coRf6nU91QgVwG3VZKwPV1QeoogogA]!cJ@anon-20191002_181700-310:localhost:8800UKYXDPZQOOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpGdCZ5bVg2OF5MNENsZTUKMDAyZnNpZ25hdHVyZSAGdnSPXhdcyvh2jrndHbGjSQGNcRvNC_jdA14cLC5axwog@]!cI@anon-20191002_181700-309:localhost:8800OEPQWZYGARMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQo JaWb sL% ^ 7  *?xP(/b:g 8 orK#]6nF m E  R  X 0  j B  z8'Q!hWHyATwKfuznrqTiyu:`('Q!ZOpRjvUhkWYJBFJZeO:localhost:8800v'Q!ZOwibbprUCQrSJQCrx:localhost:8800r&Q!TleKOyAElrpgyyrAQA:localhost:8800$'Q!aiOswwhoZqjhcjzbzc:localhost:8800m'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800f'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829N&Q!XgobMgBjNcDRJnRXLD:localhost:88001'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800@'Q!URpLZLuBfVcfHVTBGS:localhost:8800|'Q!UMFUOnYRvwKwSPkYHB:localhost:88009'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800F'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800Y'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800X'Q!atnRTMliktaVUhMVID:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800]'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800Q'Q!aZwMKYDXJRlSKjQNWM:localhost:8800P'Q!aZwMKYDXJRlSKjQNWM:localhost:8800O&Q!aWvVRVaDflYyyGTOdD:localhost:8800T&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800b&Q!aBCvSXjtZUEPlPGHvY:localhost:8800['Q!ZvLVbnHjeymRiFIkYr:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800&Q!XIqmzIFbkHGQPIpywk:localhost:8800O'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800{ R('Q!XGAmnfaVvjDtQJuufa:localhost:8800:'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800]&Q!WjlTCJVOFJkanCtkFE:localhost:8800\'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800~'Q!WYyiQAVvitxsLZKVCG:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800P&Q!WVzjUePHrzCjfyTbmK:localhost:8800t'Q!WFHIeSFQyuugGeBFxW:localhost:8800|'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800I'Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800(&Q!VAEDgDJVqmxXZyAlSW:localhost:88006&Q!UyLoIXmzVFwycmBUeh:localhost:8800v'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800W a} { y w u sqomkigeca~4eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~3eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~2eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~1eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~0eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~/eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~.eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~-eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~,eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~+eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~*eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~)eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~(eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~'eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~&eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~%eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~$eeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~#eeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~"eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~!eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~ eeQ$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~eeQ$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800~eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800~eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800~eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800~eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800~eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800~eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800~eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800~eeQ$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800 Bd= k6a.Z% Q   J  v A o :  f 1_*V!M{Frd/[&2[@anon-20191002_181700-40:localhost:8800m%K!4]@anon-20191002_181700-356:localhost:8800m`4]@anon-20191002_181700-355:localhost:8800ms_4]@anon-20191002_181700-354:localhost:8800m^4]@anon-20191002_181700-353:localhost:8800m\4]@anon-20191002_181700-352:localhost:8800m]4]@anon-20191002_181700-351:localhost:8800m͒+[4]@anon-20191002_181700-350:localhost:8800m͒)Z2[@anon-20191002_181700-34:localhost:8800m4]@anon-20191002_181700-349:localhost:8800msY4]@anon-20191002_181700-409:localhost:8800m0 4]@anon-20191002_181700-408:localhost:8800m+!4]@anon-20191002_181700-407:localhost:8800mj4]@anon-20191002_181700-405:localhost:8800m4]@anon-20191002_181700-404:localhost:8800mr4]@anon-20191002_181700-403:localhost:8800m4]@anon-20191002_181700-401:localhost:8800m4]@anon-20191002_181700-400:localhost:8800mҲ2[@anon-20191002_181700-39:localhost:8800m 4]@anon-20191002_181700-399:localhost:8800mҚ4]@anon-20191002_181700-398:localhost:8800mҖ4]@anon-20191002_181700-397:localhost:8800m҂4]@anon-20191002_181700-396:localhost:8800m}4]@anon-20191002_181700-395:localhost:8800md4]@anon-20191002_181700-394:localhost:8800mK4]@anon-20191002_181700-393:localhost:8800m1p4]@anon-20191002_181700-392:localhost:8800m4]@anon-20191002_181700-391:localhost:8800m|4]@anon-20191002_181700-390:localhost:8800mI2[@anon-20191002_181700-38:localhost:8800m4]@anon-20191002_181700-389:localhost:8800m4]@anon-20191002_181700-388:localhost:8800mѧ4]@anon-20191002_181700-387:localhost:8800mђ4]@anon-20191002_181700-386:localhost:8800m}#~4]@anon-20191002_181700-385:localhost:8800mP9|4]@anon-20191002_181700-384:localhost:8800mP=}4]@anon-20191002_181700-383:localhost:8800m3{4]@anon-20191002_181700-382:localhost:8800m/z4]@anon-20191002_181700-381:localhost:8800my4]@anon-20191002_181700-380:localhost:8800mx2[@anon-20191002_181700-37:localhost:8800m34]@anon-20191002_181700-379:localhost:8800m΅w4]@anon-20191002_181700-378:localhost:8800m΃v4]@anon-20191002_181700-377:localhost:8800mЛu4]@anon-20191002_181700-376:localhost:8800mЇt4]@anon-20191002_181700-375:localhost:8800mk~s4]@anon-20191002_181700-374:localhost:8800m;|r4]@anon-20191002_181700-373:localhost:8800m!%q4]@anon-20191002_181700-372:localhost:8800mp4]@anon-20191002_181700-371:localhost:8800mSo4]@anon-20191002_181700-370:localhost:8800mcn2[@anon-20191002_181700-36:localhost:8800mJ4]@anon-20191002_181700-369:localhost:8800mxm4]@anon-20191002_181700-368:localhost:8800mϱl4]@anon-20191002_181700-367:localhost:8800mϘk4]@anon-20191002_181700-366:localhost:8800m~i4]@anon-20191002_181700-365:localhost:8800m~j4]@anon-20191002_181700-364:localhost:8800m`g4]@anon-20191002_181700-363:localhost:8800m`h4]@anon-20191002_181700-362:localhost:8800mf4]@anon-20191002_181700-361:localhost:8800m^e4]@anon-20191002_181700-360:localhost:8800mňd2[@anon-20191002_181700-35:localhost:8800m 4]@anon-20191002_181700-359:localhost:8800mβ c4]@anon-20191002_181700-358:localhost:8800m)b4]@anon-20191002_181700-357:localhost:8800m]a -RM H C > 9 4/*|%w rmhc T Qe !UMFUOnYRvwKwSPkYHB:localhost:8800$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsT Qe !hZuwenlFDapIPBOyfi:localhost:8800$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gT Qe !hZuwenlFDapIPBOyfi:localhost:8800$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkT Qe !hZuwenlFDapIPBOyfi:localhost:8800$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMTQe!hZuwenlFDapIPBOyfi:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApITQe!hZuwenlFDapIPBOyfi:localhost:8800$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUTQe!LvARVIpJZeRQxbKefX:localhost:8800$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAETQe!LvARVIpJZeRQxbKefX:localhost:8800$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8TQe!LvARVIpJZeRQxbKefX:localhost:8800$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMTQe!LvARVIpJZeRQxbKefX:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4TQe!LvARVIpJZeRQxbKefX:localhost:8800$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsTQe!SfYtaUhCFosNfHfUVm:localhost:8800$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkTQe!SfYtaUhCFosNfHfUVm:localhost:8800$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TATQe!NPdjmIfsBVIIkvWBzD:localhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQT~Qe!SfYtaUhCFosNfHfUVm:localhost:8800$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQT}Qe!NPdjmIfsBVIIkvWBzD:localhost:8800$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYT|Qe!SfYtaUhCFosNfHfUVm:localhost:8800$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4QT{Qe!NPdjmIfsBVIIkvWBzD:localhost:8800$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLITzQe!SfYtaUhCFosNfHfUVm:localhost:8800$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gTyQe!NPdjmIfsBVIIkvWBzD:localhost:8800$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQITxQe!SfYtaUhCFosNfHfUVm:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648TwQe!NPdjmIfsBVIIkvWBzD:localhost:8800$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8TvQe!SfYtaUhCFosNfHfUVm:localhost:8800$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcTuQe!NPdjmIfsBVIIkvWBzD:localhost:8800$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiATtQe!NPdjmIfsBVIIkvWBzD:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwTsQe!vyCFfUTJKYJSDadFhT:localhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wETrQe!NPdjmIfsBVIIkvWBzD:localhost:8800$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wTqQe!vyCFfUTJKYJSDadFhT:localhost:8800$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsTpQe!beBXQofoOfxNBtzsut:localhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YToQe!vyCFfUTJKYJSDadFhT:localhost:8800$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobATnQe!beBXQofoOfxNBtzsut:localhost:8800$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMTmQe!vyCFfUTJKYJSDadFhT:localhost:8800$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYTlQe!beBXQofoOfxNBtzsut:localhost:8800$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhETkQe!vyCFfUTJKYJSDadFhT:localhost:8800$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0TjQe!beBXQofoOfxNBtzsut:localhost:8800$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4TiQe!vyCFfUTJKYJSDadFhT:localhost:8800$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sThQe!beBXQofoOfxNBtzsut:localhost:8800$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90TgQe!vyCFfUTJKYJSDadFhT:localhost:8800$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcTfQe!vyCFfUTJKYJSDadFhT:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsTeQe!beBXQofoOfxNBtzsut:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRATdQe!vyCFfUTJKYJSDadFhT:localhost:8800$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0TcQe!beBXQofoOfxNBtzsut:localhost:8800$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8TbQe!xvblqEscwOtCqJntfF:localhost:8800$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cTaQe!xvblqEscwOtCqJntfF:localhost:8800$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IT`Qe!xvblqEscwOtCqJntfF:localhost:8800$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI  iOeQa_$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1616}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-311:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041904133, "hashes": {"sha256": "508VlO9FLS+i4NlGtuI9wFo9p/pGWDDvU5F4KcJdW28"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v5DphIH3LYKz8gzNm1ffZeKFM7bd9iSMvw5nRQiJ11Dm7uNgK5jOxas6sKZ0hzBjpQvhFFAyMDSrvqGMy3zGCw"}}, "unsigned": {"age_ts": 1570041904133}}NeQa$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1615}{"auth_events": ["$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI", "$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k", "$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "prev_events": ["$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I"], "type": "m.room.history_visibility", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041902108, "hashes": {"sha256": "sXYQj27r1rtNeih1UsfnNxkxU3ZYqfJ++yUUB7IJeug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aZr4+eCgsgzU2eSfKD3mJN7YbkWFIT7rJqqmof4gVfa8ZixJ1KAAM1kqNkShgt1TKZIWvh6kjWxkLmMDry9fDQ"}}, "unsigned": {"age_ts": 1570041902108}}tMeQau$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1614}{"auth_events": ["$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI", "$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k", "$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "prev_events": ["$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI"], "type": "m.room.join_rules", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041901394, "hashes": {"sha256": "b3DBio88MxvaZKVUVyXsVm1PsaApqiCvyqDcnqwOdS4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZJXQ5BtkMVzam0kvhEUv/C4DC6bCEsl7DE/Yv8t9d31Vacu6Csl4pKGTc64AfBdZM9FqdpKpE3lhFkMeA9KcDw"}}, "unsigned": {"age_ts": 1570041901394}}kLeQac$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1613}{"auth_events": ["$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k", "$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "prev_events": ["$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "type": "m.room.power_levels", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"users": {"@anon-20191002_181700-310:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041900394, "hashes": {"sha256": "WoWYjcVqv2ox2NIDMH2KGKTQBxKbwSnKJL/6w3VGWFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zekwuCzh5gk42KsPmDJRXX3vL5Uc76owI7ukCQhlJWXahjbE3p5/79lfR1qS7cKny425ank0gfOH/HkbfEMhDg"}}, "unsigned": {"age_ts": 1570041900394}} $`(` > j ( P ~ D@rt 2g"[`gueQ3 $FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels teQ']$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800joinaseQ' $6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800m.room.create`reQ% $v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic_qeQ# $qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800m.room.nameppeQ))$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800moeQ? $UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility`neQ% $Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topicemeQ/ $d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rulesmleQ? $Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibilitygkeQ3 $ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levelsejeQ/ $CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules ieQ']$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800joinjheQ9 $vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_aliasageQ' $Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800m.room.creategfeQ3 $9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels eeQ']$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800joinpdeQ))$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800aceQ' $5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create`beQ% $gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topicpaeQ))$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800_`eQ# $sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800m.room.namem_eQ? $3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibilitym^eQ? $BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibilitye]eQ/ $WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rulese\eQ/ $mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rulesj[eQ9 $htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_aliasjZeQ9 $hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_aliasgYeQ3 $uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levelsgXeQ3 $Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels WeQ']$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800join VeQ']$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800joinaUeQ' $joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.createaTeQ' $VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800m.room.createmSeQ? $wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibilityeReQ/ $JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rules bn/}f' sV9kN3 _  x U > ' o O /  x b K % S 8 ~iS<L/~c@)P9v7G*>']"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-305:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-304:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-322:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-321:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-320:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>'] m.room.member@anon-20191002_181700-319:localhost:8800'  m.room.create"?  m.room.history_visibility/  m.room.join_rules3  m.room.power_levels >']m.room.member@anon-20191002_181700-318:localhost:8800 ' m.room.create "? m.room.history_visibility / m.room.join_rules 3 m.room.power_levels>']m.room.member@anon-20191002_181700-317:localhost:8800' m.room.create% m.room.topic# m.room.name%))m.room.aliaseslocalhost:8800"? m.room.history_visibility% m.room.topic/ m.room.join_rules"? m.room.history_visibility3 m.room.power_levels/ m.room.join_rules>']m.room.member@anon-20191002_181700-312:localhost:88009 m.room.canonical_alias' m.room.create3 m.room.power_levels>']m.room.member@anon-20191002_181700-311:localhost:8800%))m.room.aliaseslocalhost:8800' m.room.create% m.room.topic%))m.room.aliaseslocalhost:8800# m.room.name"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules9 m.room.canonical_alias9 m.room.canonical_alias3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-311:localhost:8800>']m.room.member@anon-20191002_181700-311:localhost:8800' m.room.create' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-310:localhost:8800' m.room.create- m.room.tombstone>']m.room.member@anon-20191002_181700-308:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-307:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-306:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-305:localhost:8800' m.room.create- m.room.tombstone3 m.room.power_levels X ! } T +  ^ 5 d9b7 Z/`5 ^3\1V+ { P % - y # X N w LT)}RQzlMcE*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!tcYctHPiaKzsKgrXlU:localhost:8800 P P*Q!taANXnGBZntAreRurn:localhost:8800 O O*Q!tcYctHPiaKzsKgrXlU:localhost:8800 N N*Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tDsPLsKOLPePtEWRwn:localhost:8800''*Q!tDsPLsKOLPePtEWRwn:localhost:8800&&*Q!tDsPLsKOLPePtEWRwn:localhost:8800%%*Q!tDsPLsKOLPePtEWRwn:localhost:8800$$*Q!tDsPLsKOLPePtEWRwn:localhost:8800##*Q!tDsPLsKOLPePtEWRwn:localhost:8800""*Q!tDsPLsKOLPePtEWRwn:localhost:8800!!*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800##*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800""*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!!*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  *Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800(Q!scyFsXcUIJiLIMwWMY:localhost:8800qq(Q!scyFsXcUIJiLIMwWMY:localhost:8800pp(Q!scyFsXcUIJiLIMwWMY:localhost:8800oo(Q!scyFsXcUIJiLIMwWMY:localhost:8800nn(Q!scyFsXcUIJiLIMwWMY:localhost:8800mm(Q!scyFsXcUIJiLIMwWMY:localhost:8800ll(Q!sPWVGnipjiiWQpywNO:localhost:8800>>(Q!sPWVGnipjiiWQpywNO:localhost:8800==(Q!sPWVGnipjiiWQpywNO:localhost:8800<<(Q!sPWVGnipjiiWQpywNO:localhost:8800;;(Q!sPWVGnipjiiWQpywNO:localhost:8800::(Q!sPWVGnipjiiWQpywNO:localhost:880099(Q!sPWVGnipjiiWQpywNO:localhost:880088(Q!sPWVGnipjiiWQpywNO:localhost:880077(Q!sPWVGnipjiiWQpywNO:localhost:880066*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y Y*Q!taANXnGBZntAreRurn:localhost:8800 X X*Q!taANXnGBZntAreRurn:localhost:8800 W W*Q!tcYctHPiaKzsKgrXlU:localhost:8800 V V*Q!taANXnGBZntAreRurn:localhost:8800 U U*Q!tcYctHPiaKzsKgrXlU:localhost:8800 T T*Q!taANXnGBZntAreRurn:localhost:8800 S S*Q!tcYctHPiaKzsKgrXlU:localhost:8800 R R*Q!taANXnGBZntAreRurn:localhost:8800 Q Q*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p p*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o o*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n n*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m m*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 l l*Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ONMLKJJJIHGFEEEDCBA@@@@@@@@@@@?>=<;;:987666666666666654321110/.-,,+*)('''&%$#"!! ~}|{z y x w v u tsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;987654:3210/.-+*)('&,%$#"! qqqqqqponmlk j i h g ggggggggggggfedcba`_^]\[ZYXWVUTSRQP     ~}|{zyxwutsrqponmlkihgfedcba`_^]\[ZYXWVUTSRPONMLKJIHGFEDCBA E]+%q?xF~L P   W % D  ^   W ,pd2> |Q vj J8  | J  +21e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMv1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0+1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw 01e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIx1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUc1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gS1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ,0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko31e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMw1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0W1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI_1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M`1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Y1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY^1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu431e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsJ0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsz1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkd1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIU1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo>1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 S1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc Q1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg J1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagk1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k m,   kSeQac$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1620}{"auth_events": ["$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "type": "m.room.power_levels", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"users": {"@anon-20191002_181700-311:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041906210, "hashes": {"sha256": "QDZAw7W973+AJHNKsxCW7mjeB/D2EZnECs2qRB97bH8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s4nh3+CFVuirSqfUn66qF6lle+Peffwhx8GhEaOAqScL0e42a/swmdiOQCXc10K8EPKgecAPSm5t6gKPNCLyBA"}}, "unsigned": {"age_ts": 1570041906210}}vReQay$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1619}{"auth_events": ["$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8"], "prev_events": ["$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8"], "type": "m.room.member", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-311", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-311:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041905074, "hashes": {"sha256": "uEAM6NjRZn7OB9lqLghCZ4UubSxIbzVCPCR2S/TaJjg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QWoXwywkO/+gezyoV8nMcPmW53RIY+3Dv/J6zwAEBGCIY9jc7yxXPx4Pbd5KJNE5hyfGBG38O7Q93L2yNLbADw"}}, "unsigned": {"age_ts": 1570041905074}}vQeQay$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1618}{"auth_events": ["$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0"], "prev_events": ["$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0"], "type": "m.room.member", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-311", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-311:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041905075, "hashes": {"sha256": "BSqT/gwqWYiApDc4ViV9FC3m+QnxVaPTMNwJKo4JHvA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JcBG34DXaBqRLIfS47BOi2od4xEj4gqPlRi+ys9Tjnxp/eDX++Lxp4Ly2xjUzky1E+Lwh4zqrAV0ZoXrIsGXDA"}}, "unsigned": {"age_ts": 1570041905075}}iPeQa_$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1617}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-311:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041904135, "hashes": {"sha256": "5gaE9AN6OTpFLeJjM3DbmknmVTpB3PtWKasuoC2tjFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mh5xpQDj4vKCZlzi3nXPH9zjG56oFU4H0DficEvehx40kn/5+pUrSqakumAF61ck4m1vcfQQoDyjEW4YGe6zBA"}}, "unsigned": {"age_ts": 1570041904135}} E]+%q?xF~L P   W % D  ^   W ,pd2> |Q vj J8  | J  +21e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMv1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0+1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw 01e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIx1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUc1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gS1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ,0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko31e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMw1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0W1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI_1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M`1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Y1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY^1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu431e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsJ0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsz1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkd1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIO1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo81e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 Q1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc O1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg H1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagk1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k m, _ a9sK# \ 4 l E  k } U -  f >  y Q ) b:rJ#\5 nFZ2 mEY1C'Q!ZNIjCvcWhgcwskanjT:localhost:8800P'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800%&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!fDISaqNBhlOwherxSt:localhost:8800j&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800p'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800e&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800R&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800g'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800o&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800-'Q!cidyuyekVzJHHvyomb:localhost:8800A&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800x'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800b'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:8800:'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800I'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800?'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZOwibbprUCQrSJQCrx:localhost:8800'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800}'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800v'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800Y'Q!XRAZJeoZBhGeHKKjaG:localhost:8800^'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800_&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!XGAmnfaVvjDtQJuufa:localhost:8800['Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800=&Q!WjlTCJVOFJkanCtkFE:localhost:8800R'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 8l D `8@]c!E@anon-20191002_181700-322:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwoCMZHVCVAXT127.0.0.1Perl + Net::Async::HTTP/0.44m Ճ?]c!E@anon-20191002_181700-321:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7QwoWXFXGVMZGC127.0.0.1Perl + Net::Async::HTTP/0.44m>]c!E@anon-20191002_181700-320:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgoWFQFGOHNGB127.0.0.1Perl + Net::Async::HTTP/0.44m=]c!E@anon-20191002_181700-319:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEN1KlE4cmt4ZHdeayYqRmIKMDAyZnNpZ25hdHVyZSCDi7ywkZTQz5JXqqEFhHe9nQqcZgcfJJGXdwiFuFZ9tgoHSJRSHPEIA127.0.0.1Perl + Net::Async::HTTP/0.44mÃ<]c!E@anon-20191002_181700-318:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAoPHFUHLOHRJ127.0.0.1Perl + Net::Async::HTTP/0.44mʳ;]c!E@anon-20191002_181700-317:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGp5X3ZqYWUwO1lSMVZfPWIKMDAyZnNpZ25hdHVyZSBXnyRWT7c5jVRFSAP8yBUFVPMpHFHO6Jh3lAfIH2WdGAoKSXFFXWMCB127.0.0.1Perl + Net::Async::HTTP/0.44mʝt:]c!E@anon-20191002_181700-316:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ6eG4uLmo4eW94QlROanoKMDAyZnNpZ25hdHVyZSBbUWn8_gv5bniC91yO-BYhfQYBVRKyv5j5MVVtMP_JLwoJHIWJLKOFG127.0.0.1Perl + Net::Async::HTTP/0.44mʛ9]c!E@anon-20191002_181700-315:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEktc1A6I2xTMH5pbitmUy0KMDAyZnNpZ25hdHVyZSAHdPEVl-Zg5xmbVysqfNP8UeNclE06lAUk2sezF9wAlAoKXXAQONTRL127.0.0.1Perl + Net::Async::HTTP/0.44mʙ8]c!E@anon-20191002_181700-314:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDc4UmlwQ2g1OHNKcUkzVVAKMDAyZnNpZ25hdHVyZSAdNspZQ479GxtCNd_qDY7ARZWMjLUH92hEAKKLsgL4DQoBTSWZNQVTP127.0.0.1Perl + Net::Async::HTTP/0.44mʗT7]c!E@anon-20191002_181700-312:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8jTldNRmhjQDJZSGt5a0kKMDAyZnNpZ25hdHVyZSAytp0T7K0GtNLyrrvvKThMXkDCn1jZ6wI9npjmCcM0CwoLFIOTRIQVM127.0.0.1Perl + Net::Async::HTTP/0.44mi pLzHNZ P(8  V $ \ * D b0 vh6 > nj< tBT" | J81e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18y1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18x1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18w1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIa1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI`1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI_1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ[1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQZ1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQY1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgY1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgX1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgW1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI R1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI Q1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8 1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8 1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8 1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc l1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc k1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc j1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k 1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k 1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k 1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90c1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoW1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoV1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90a1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90bd1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsa1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns`1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns_1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY~  UtWeQau$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1624}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s"], "type": "m.room.join_rules", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041908320, "hashes": {"sha256": "Cz2BElchLBWSye0e6Rf9NcALsBymMbcEaVUVYWwvTlQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Qt1+anwTBHKDazYGEN14pqQ8YldVlbFI8ss1L3Ot8k6jQwLiU8NXqU68cEIa4RKvBHNsW/x2WzUq2N/gcN1rCg"}}, "unsigned": {"age_ts": 1570041908320}}VeQa9$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1623}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90"], "type": "m.room.canonical_alias", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"alias": "#publicroomalias_no_name:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041907302, "hashes": {"sha256": "VDxwjsyErBx4bTOIfmSO5Nkqs5L2HtZG7PN6l5mtwvo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pgcmGdV8Fm3uUR6ghKoX4AOTmM/a1ueLqEuIvp1AuoTw53h+nv5lEKeS1YhxOXucnRg1RKOoXcEZgNexQuyYAw"}}, "unsigned": {"age_ts": 1570041907302}}UeQaI$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1622}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc"], "type": "m.room.canonical_alias", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"alias": "#publicroomalias_with_name_topic:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041907300, "hashes": {"sha256": "85GKhWVMwXWocIa8BxS0+9x+YWOSbq+VxvQhrQgfvSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0FNS+CL0ePTgSrQ6OrkEJEFQRn0gCsG1o1cz8+GFGIHpfksYN00hhPNBhusq1oqZCkrIyeiAFic/9vwzc8U9Ag"}}, "unsigned": {"age_ts": 1570041907300}}kTeQac$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1621}{"auth_events": ["$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "type": "m.room.power_levels", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"users": {"@anon-20191002_181700-311:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041906212, "hashes": {"sha256": "nxeuW5t5c21N5oUn9TnfptR2nRenPDd7TVjmPuVajhs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q8GIBUUdxuQPS98S3whZppCTjhNPiLjYFex4WDMV684b9YUSH65cU3jo+pgaI5rwFvaSS1wefsz5Ngz0IiKIAA"}}, "unsigned": {"age_ts": 1570041906212}} ~z v r n j fb^ZVRNJF3eeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:88002eeQ$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:88001eeQ$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:88000eeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800/eeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800.eeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800-eeQ$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800,eeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800+eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800*eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800)eeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800(eeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800'eeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800&eeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800%eeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800$eeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800#eeQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800"eeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800!eeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800 eeQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800  v i[eQa_$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1628}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY"], "type": "m.room.name", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"name": "name_2"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041911129, "hashes": {"sha256": "pUH8RoFoH+wwgfTJygEvEUiDVAchCHUXKOl+xfwC5sc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XwBZZzp+fW/h+S5IQYX7F+HMqubeCuC8Gu0stftdhMAaOzSWaQz2hczsTM4DMyC95prGEZACRZwI2pXhwRd4BQ"}}, "unsigned": {"age_ts": 1570041911129}}ZeQa$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1627}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE"], "type": "m.room.history_visibility", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041909399, "hashes": {"sha256": "rzz99m1AwnBhJjUsgM49erYKOTYqG4Ge6MZarikMC7E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ppBY/jqFv4rh5bbA8cqzwZN1u+zSczMLd/NuUOX0ZlK5DcwSAGG5ynIAXGZPmdqLTZAbqQlYFSZl+7Z8DiowAw"}}, "unsigned": {"age_ts": 1570041909399}}YeQa$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1626}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0"], "type": "m.room.history_visibility", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041909396, "hashes": {"sha256": "MJTi/XjLhkg0MQNBG9cfnK185YqdOI2X4+0J+YBFzv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TgqXS/IAbI9LnyMxdDW5zAsvm1lf0Ge3O9kEYcPUU0ibq/OlSCqhLBzvUF53Q1ONORwxGdd104jTQNRzyPqFDQ"}}, "unsigned": {"age_ts": 1570041909396}}tXeQau$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1625}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4"], "type": "m.room.join_rules", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041908321, "hashes": {"sha256": "EL3bYiF34XcBCRRoZDVQM0R00rCLkEA1U58RMmz+6Tk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N/sICQ0w4vDlJb80xZQ+PJ/9rxYG0dEkiyQDjDqheLqA8T589+DLbTb3wtmpFCOAiCHQvB21+IfAgoRQsbWBDA"}}, "unsigned": {"age_ts": 1570041908321}} a} { y w u sqomkigeca~SeeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~ReeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~QeeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~PeeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~OeeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~NeeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~MeeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~LeeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~KeeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~JeeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~IeeQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~HeeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~GeeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~FeeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~EeeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~DeeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~CeeQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~BeeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~AeeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~@eeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~?eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~>eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~=eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~<eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~;eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~:eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~9eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~8eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~7eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~6eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~5eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800 S \S(_eQa]$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1632}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs"], "type": "m.room.aliases", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"aliases": ["#publicroomalias_with_name_topic:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041913901, "hashes": {"sha256": "dFqD/uGciCpxUP4cwxkFRYp0h41G5VtEQq1Hp8EIrbM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eT6MtRIwxuaPZiHJbysGoXdtBYR3CCNawkcEW/ZNUiDYLhFMN7fLmAjdu0gtu7gShX+A6OAu51wwUIuU/LcZBA"}}, "unsigned": {"age_ts": 1570041913901}}i^eQa_$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1631}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-311:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041913055, "hashes": {"sha256": "WH+EsMsH4H2icR58ZK56Wl2baEh/dxbqRFtmOWAZtb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7EykwhMeXnv/6Q/usb5JjZtGYvEZ//SinqSVtRaVoSyERtagh6ZJOjgwITS36hBn+uPl01YZzpCh7UZ9u5XcBQ"}}, "unsigned": {"age_ts": 1570041913055}}l]eQae$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1630}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA"], "type": "m.room.topic", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"topic": "topic_2"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041912443, "hashes": {"sha256": "Jh8Kh40+j6EYmguDObwTZp01Ich9OaOCoYVm525wpXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wzNIkcyqxpM22Em8zSTIPw8hMvuz0w7q3zV/IqpL4eVm1joUKW+7sqGXDZWeBBiYnDBQMGLtpNLGjuzubUeEBA"}}, "unsigned": {"age_ts": 1570041912443}} \eQaM$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1629}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM"], "type": "m.room.aliases", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"aliases": ["#publicroomalias_no_name:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041911130, "hashes": {"sha256": "QI23XHidjhAfikkhK0nBK7AKrdhIVZsryTU0yd6ii/0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bRerEFqjAwDaE50+epqpy0cq8PGGsLEPQylp8NT8sC+2OmzJ+bq75zOX4vtmFQ7Oct3lVm08BZrUMIUXP2ljCw"}}, "unsigned": {"age_ts": 1570041911130}} $U*S \ , T IX%S LUgXeQ3 $MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels WeQ']$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800aVeQ' $L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.createmUeQ? $5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibilityeTeQ/ $CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rulesgSeQ3 $v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels ReQ']$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800aQeQ' $VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.createmPeQ? $RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibilityeOeQ/ $Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rulesgNeQ3 $nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels MeQ']$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800aLeQ' $tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800m.room.createmKeQ? $JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibilityeJeQ/ $_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rulesgIeQ3 $FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels HeQ']$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800aGeQ' $6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800m.room.create`FeQ% $v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic_EeQ# $qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800m.room.namepDeQ))$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800mCeQ? $UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility`BeQ% $Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topiceAeQ/ $d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rulesm@eQ? $Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibilityg?eQ3 $ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levelse>eQ/ $CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules =eQ']$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800j<eQ9 $vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_aliasa;eQ' $Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800m.room.createg:eQ3 $9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels 9eQ']$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800p8eQ))$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800a7eQ' $5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create`6eQ% $gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topicp5eQ))$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800 ;HGsK#^^T,avN& _ 7   o G  |  X 0 iB=eo6uM& ^ a :  ^ u M & T,;'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Z'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88009&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800r'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800a'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800='Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800W'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800X'Q!XRAZJeoZBhGeHKKjaG:localhost:8800]'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800$'Q!ZKPJvrCZHMHPEksYDc:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800H'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800>'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800u'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800<&Q!WjlTCJVOFJkanCtkFE:localhost:8800R'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800 e+ . 5 < CJQX_ gZa hnu>PFQ ]!NPdjmIfsBVIIkvWBzD:localhost:8800@anon-20191002_181700-311:localhost:88004P(Q]!MBWnwKRwFznvRpAzxr:localhost:8800@anon-20191002_181700-294:localhost:88004 'PRQ]!nftGLlLhVgzOwOFufp:localhost:8800@anon-20191002_181700-330:localhost:88004PQQ]!raCWVWQGnXbmkexpCN:localhost:8800@anon-20191002_181700-329:localhost:88004PPQ]!kwJgbtogEzCqYbUXfh:localhost:8800@anon-20191002_181700-328:localhost:88004POQ]!JZouHBRxCRbcxYJnbn:localhost:8800@anon-20191002_181700-327:localhost:88004PEQ ]!vyCFfUTJKYJSDadFhT:localhost:8800@anon-20191002_181700-311:localhost:88004PDQ ]!beBXQofoOfxNBtzsut:localhost:8800@anon-20191002_181700-311:localhost:88004PCQ]!xvblqEscwOtCqJntfF:localhost:8800@anon-20191002_181700-310:localhost:88004OBQ]!qmcQunYvuokVcPwFHx:localhost:8800@anon-20191002_181700-308:localhost:8800PAQ]!HhYREfUiJTpjWmOuPF:localhost:8800@anon-20191002_181700-307:localhost:88004P@Q]!nvclDopiBLEOKBIheH:localhost:8800@anon-20191002_181700-306:localhost:88004P?Q]!YgaGPEraeLCqHQirin:localhost:8800@anon-20191002_181700-305:localhost:88002P>Q]!aVxOoyiLLnxmzgLJat:localhost:8800@anon-20191002_181700-305:localhost:88004P=Q]!fuHSJcznvGQnoYoLPW:localhost:8800@anon-20191002_181700-304:localhost:88002P<Q]!hYPSaMPGsLnvYSmwhg:localhost:8800@anon-20191002_181700-304:localhost:88004P;Q]!jIfvTrwedrWLubsnlM:localhost:8800@anon-20191002_181700-303:localhost:88002P:Q]!KeqmSjifajNKxtgqhj:localhost:8800@anon-20191002_181700-303:localhost:88004P9Q]!icheSPMgpemswIdQkw:localhost:8800@anon-20191002_181700-302:localhost:88002P8Q]!EyyNoldCLUdFHzXTDP:localhost:8800@anon-20191002_181700-302:localhost:88004P7Q]!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:88002P6Q]!uSBqTezaFcMnlowsEf:localhost:8800@anon-20191002_181700-301:localhost:88004P5Q]!NrxQuziwSWzsHuXIlG:localhost:8800@anon-20191002_181700-300:localhost:88002P4Q]!CNFopUEQTFbzjmLvii:localhost:8800@anon-20191002_181700-300:localhost:88004P3Q]!WhqVaRReBxJXADAyYD:localhost:8800@anon-20191002_181700-299:localhost:88002P2Q]!aLxrqpqLkbzyIxGgpk:localhost:8800@anon-20191002_181700-299:localhost:88004P1Q]!BfEFIDBthhkweqfhir:localhost:8800@anon-20191002_181700-298:localhost:88002P0Q]!aaRwQZdNAliyvRHpjs:localhost:8800@anon-20191002_181700-298:localhost:88004P/Q]!ZShBIxwbJmxjjZmoRQ:localhost:8800@anon-20191002_181700-297:localhost:88002P.Q]!NNiyzThHMivrxhojfp:localhost:8800@anon-20191002_181700-297:localhost:88004P-Q]!QFiJrWFFeTAAAUCjCE:localhost:8800@anon-20191002_181700-296:localhost:88002P,Q]!KmuRTfGFgJdgIDAgIW:localhost:8800@anon-20191002_181700-296:localhost:88004P+Q ]!mOrKBPhetifKHDmElM:localhost:8800@anon-20191002_181700-295:localhost:88002P*Q]!QyLUggxrTnULUAOseq:localhost:8800@anon-20191002_181700-295:localhost:88004P)Q]!azRJNFPIRSFAskLILK:localhost:8800@anon-20191002_181700-294:localhost:88002APNQ]!HOPyhZPcKkrvSmDIvX:localhost:8800@anon-20191002_181700-326:localhost:88004PMQ]!EWkoFeckhXlNyjuIEB:localhost:8800@anon-20191002_181700-324:localhost:88004PLQ]!utJsNQubeIXvcTKGpx:localhost:8800@anon-20191002_181700-322:localhost:88004PKQ]!iTQSCiLqRMDtgXtUdC:localhost:8800@anon-20191002_181700-320:localhost:88004PJQ]!UMFUOnYRvwKwSPkYHB:localhost:8800@anon-20191002_181700-319:localhost:88004PIQ]!hZuwenlFDapIPBOyfi:localhost:8800@anon-20191002_181700-318:localhost:88004PHQ]!LvARVIpJZeRQxbKefX:localhost:8800@anon-20191002_181700-317:localhost:88004PGQ ]!SfYtaUhCFosNfHfUVm:localhost:8800@anon-20191002_181700-312:localhost:88004 b] r & y - +3LVbu e'Q  ]$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUm.room.create!hZuwenlFDapIPBOyfi:localhost:8800mʳmʴ6@anon-20191002_181700-318:localhost:8800te#Q ]$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcm.room.test!LvARVIpJZeRQxbKefX:localhost:8800mʮ%mʮ*@anon-20191002_181700-317:localhost:8800,se?Q ]$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEm.room.history_visibility!LvARVIpJZeRQxbKefX:localhost:8800mʩmʫ@anon-20191002_181700-317:localhost:8800$re/Q ]$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8m.room.join_rules!LvARVIpJZeRQxbKefX:localhost:8800mʧkmʨD@anon-20191002_181700-317:localhost:8800&qe3Q ]$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMm.room.power_levels!LvARVIpJZeRQxbKefX:localhost:8800mʤ`mʥ@anon-20191002_181700-317:localhost:8800 pe'Q ]$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4m.room.member!LvARVIpJZeRQxbKefX:localhost:8800mʠmʡ@anon-20191002_181700-317:localhost:8800o e'Q  ]$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsm.room.create!LvARVIpJZeRQxbKefX:localhost:8800mʞ%mʞ@anon-20191002_181700-317:localhost:8800ne%Q ]$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkm.room.topic!SfYtaUhCFosNfHfUVm:localhost:8800mʑmʓ*@anon-20191002_181700-312:localhost:8800me#Q ]$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAm.room.name!SfYtaUhCFosNfHfUVm:localhost:8800mʋmʍh@anon-20191002_181700-312:localhost:8800!le)Q ]$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQm.room.aliases!NPdjmIfsBVIIkvWBzD:localhost:8800mʇ'mʊ@anon-20191002_181700-311:localhost:8800,ke?Q ]$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQm.room.history_visibility!SfYtaUhCFosNfHfUVm:localhost:8800mʆ+mʉb@anon-20191002_181700-312:localhost:8800je%Q ]$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYm.room.topic!NPdjmIfsBVIIkvWBzD:localhost:8800mʁ)mʃz@anon-20191002_181700-311:localhost:8800$ie/Q ]$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qm.room.join_rules!SfYtaUhCFosNfHfUVm:localhost:8800mʀfmʂp@anon-20191002_181700-312:localhost:8800,he?Q ]$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIm.room.history_visibility!NPdjmIfsBVIIkvWBzD:localhost:8800mxm~B@anon-20191002_181700-311:localhost:8800&ge3Q ]$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gm.room.power_levels!SfYtaUhCFosNfHfUVm:localhost:8800mxYm}]@anon-20191002_181700-312:localhost:8800$fe/Q ]$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIm.room.join_rules!NPdjmIfsBVIIkvWBzD:localhost:8800mtmu@anon-20191002_181700-311:localhost:8800 ee'Q ]$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648m.room.member!SfYtaUhCFosNfHfUVm:localhost:8800mqmt@anon-20191002_181700-312:localhost:8800)de9Q ]$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8m.room.canonical_alias!NPdjmIfsBVIIkvWBzD:localhost:8800momq@anon-20191002_181700-311:localhost:8800c e'Q  ]$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcm.room.create!SfYtaUhCFosNfHfUVm:localhost:8800mlmm@anon-20191002_181700-312:localhost:8800&be3Q ]$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAm.room.power_levels!NPdjmIfsBVIIkvWBzD:localhost:8800mkmm @anon-20191002_181700-311:localhost:8800 ae'Q ]$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwm.room.member!NPdjmIfsBVIIkvWBzD:localhost:8800mfmi@anon-20191002_181700-311:localhost:8800!`e)Q ] $p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEm.room.aliases!vyCFfUTJKYJSDadFhT:localhost:8800 mb-md@anon-20191002_181700-311:localhost:8800_ e'Q  ]$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wm.room.create!NPdjmIfsBVIIkvWBzD:localhost:8800m^m`@anon-20191002_181700-311:localhost:8800^e%Q ]$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsm.room.topic!vyCFfUTJKYJSDadFhT:localhost:8800m\{m^@anon-20191002_181700-311:localhost:8800 }G J   V   P  | w v>Q  V $ ^ ,Kd 2E\*$j Dj8p> 8} p1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI 1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY|1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k}1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwe1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM C1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk $1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY}1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsh1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEg1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkQ 1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 z1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g [1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8I0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYQ1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k:1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k 1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu41e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw,1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk%1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI31e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo{1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0u1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mco1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo^0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gG1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko+1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM21e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA c1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q V1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUp21e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Ad1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 81e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0o  *ceQa?$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1636}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA"], "type": "m.room.canonical_alias", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"alias": "#publicroomalias_with_topic:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041917318, "hashes": {"sha256": "FubqE2SdNyc8+j3rVuxvlsjOYjsSFGu3YWrz7q55Cew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kghk3OPmk5Hq6nGjVtMygCnnkH71kH07UFTCX9ypvUMSyOATbtspVapMl3OCqOYjagbCMF6NMCaRSmRFE8tNAA"}}, "unsigned": {"age_ts": 1570041917318}}ibeQa_$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1635}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-312:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041916583, "hashes": {"sha256": "9J04lrHF3ZZukHWNi7jdesnu3M9eVly6M5giUI5qapg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7pP414f7+BmdqN1Ju0gb+V2aX7qsmMTmlag9WDPZVsqFuEuzJQrXMS6t5WVZpSA7EGjr3zoKzlnWnLchbunyCA"}}, "unsigned": {"age_ts": 1570041916583}}kaeQac$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1634}{"auth_events": ["$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "type": "m.room.power_levels", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"users": {"@anon-20191002_181700-311:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041916335, "hashes": {"sha256": "BF0XFuzKyb4bgB8OopipLqM2LS60PAjxKCpwqGMkrQ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6zH5OlQeUn3Lo+qZ6QMPC0SwpICAh4daxJ1TZvOunJCWMDgt46OwQzcmAMWb1MKfiYnQpp6FhjrYU/iPy/gnAQ"}}, "unsigned": {"age_ts": 1570041916335}}v`eQay$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1633}{"auth_events": ["$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w"], "prev_events": ["$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w"], "type": "m.room.member", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-311", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-311:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041914904, "hashes": {"sha256": "CFjMhZ9URVBYQg38rhegg9nmVDJKIFe2nP/1pZUp2FA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpWKzQYqmzjOWqSu/Bod+DRPkoE8i76W+QgBAQBARQRBCH7bPgFQxfItzotolENPEvX77CDstWDiqg1L1a5QDw"}}, "unsigned": {"age_ts": 1570041914904}} -RM H C > 9 4/*|%w rmhc TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1QTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1QTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYT Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkT Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkT Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938T Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8T Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0TQe~!UMFUOnYRvwKwSPkYHB:localhost:8800$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsTQe}!UMFUOnYRvwKwSPkYHB:localhost:8800$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYTQe|!UMFUOnYRvwKwSPkYHB:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9UTQe{!UMFUOnYRvwKwSPkYHB:localhost:8800$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsTQez!hZuwenlFDapIPBOyfi:localhost:8800$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sETQey!hZuwenlFDapIPBOyfi:localhost:8800$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gT~Qex!hZuwenlFDapIPBOyfi:localhost:8800$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkT}Qew!hZuwenlFDapIPBOyfi:localhost:8800$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMT|Qev!hZuwenlFDapIPBOyfi:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIT{Qeu!hZuwenlFDapIPBOyfi:localhost:8800$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUTzQet!LvARVIpJZeRQxbKefX:localhost:8800$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcTyQes!LvARVIpJZeRQxbKefX:localhost:8800$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAETxQer!LvARVIpJZeRQxbKefX:localhost:8800$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8TwQeq!LvARVIpJZeRQxbKefX:localhost:8800$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMTvQep!LvARVIpJZeRQxbKefX:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4TuQeo!LvARVIpJZeRQxbKefX:localhost:8800$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsTtQen!SfYtaUhCFosNfHfUVm:localhost:8800$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkTsQem!SfYtaUhCFosNfHfUVm:localhost:8800$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TATrQel!NPdjmIfsBVIIkvWBzD:localhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQTqQek!SfYtaUhCFosNfHfUVm:localhost:8800$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQTpQej!NPdjmIfsBVIIkvWBzD:localhost:8800$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYToQei!SfYtaUhCFosNfHfUVm:localhost:8800$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4QTnQeh!NPdjmIfsBVIIkvWBzD:localhost:8800$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLITmQeg!SfYtaUhCFosNfHfUVm:localhost:8800$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gTlQef!NPdjmIfsBVIIkvWBzD:localhost:8800$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQITkQee!SfYtaUhCFosNfHfUVm:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648TjQed!NPdjmIfsBVIIkvWBzD:localhost:8800$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8TiQec!SfYtaUhCFosNfHfUVm:localhost:8800$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcThQeb!NPdjmIfsBVIIkvWBzD:localhost:8800$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiATgQea!NPdjmIfsBVIIkvWBzD:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwTfQe`!vyCFfUTJKYJSDadFhT:localhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE =w=["Us: V  r ;  Y u <  Z !v=Y"w>Z!vw>Z!88]!@anon-20191002_181700-48]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN8]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP8]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ8]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM8]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO8]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF6[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHC8]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT8]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ6[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXG8]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK6[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXF8]!@anon-20191002_181700-409:localhost:8800GINWCFSINT8]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW6[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC6[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYE8]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL8]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH6[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKD8]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE8]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH8]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS8]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE  l  d \ T E Mt=5-%|eeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800 meeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800 9eeQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800 eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800ZeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800YeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800[eeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800 %eeQ$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800eeQ$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800ReeQ$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800XeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800߁eeQ$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800ցeeQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800 }eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800 { cHGsK#^>|T-vN _ 7  o H &  X 1 jC;eo6uM&  a :  ^ u M & |Tc'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Y'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88008&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800q'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800`'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800<'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800V'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800W'Q!XRAZJeoZBhGeHKKjaG:localhost:8800\'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800G'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800='Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800t'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800;&Q!WjlTCJVOFJkanCtkFE:localhost:8800R cHGsK#^>|T-vN _ 7  o H &  X 1 jC;eo6uM&  a :  ^ u M & |Tc'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Y'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88008&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800q'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800`'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800<'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800V'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800W'Q!XRAZJeoZBhGeHKKjaG:localhost:8800\'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800G'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800='Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800t'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800;&Q!WjlTCJVOFJkanCtkFE:localhost:8800R a`8pH X /  f >  v N & ^ 6  n F ~V.f>vN&^6nF~V.f>vN&%&Q !kOmCTyiizHqfCJdhlR:localhost:8800%%Q !pJUItjYTOUJQFIxyiX:localhost:8800%$Q !mvgUHEsfGqDkPQUvfG:localhost:8800%#Q !WYyiQAVvitxsLZKVCG:localhost:8800%"Q !KIHYKMzkRDrJwiywwz:localhost:8800%!Q !RSLvuCuAqKQQrKCxNq:localhost:8800% Q !DqxFmsXPclgGqpSwdy:localhost:8800%Q !uqIEMXzdeNeXdJmuwh:localhost:8800%Q !yAzXcNLHMuqFOcOexj:localhost:8800%Q !tLkhTnTgDjjAvscRkW:localhost:8800%Q !kAxKaIQhXTtGFWSUgr:localhost:8800%Q !WhLedNwPGGGTtqeqam:localhost:8800%Q !yLccBXjjEasExpsXlt:localhost:8800%Q !PcvmCDeVUSyJbXpTig:localhost:8800%Q !HbYxdEuVIeLKHwqJEh:localhost:8800%Q !FbJSiQoZtZkaFwzzQq:localhost:8800%Q !JPTwFTSDaBXwUTgitj:localhost:8800%Q !RYNJAGdRhIlwRZFbrO:localhost:8800%Q !MqstbCLZIQFiYNHrqR:localhost:8800%Q !WuiaqqIOvBjgETqdus:localhost:8800%Q !bQDOrbAknnQZfUbhgS:localhost:8800%Q !GSxvxNevpCiwmFCHys:localhost:8800%Q !yfizglmCXdcqCgDrTr:localhost:8800%Q !XnUZiYJDWVNGfsBnGz:localhost:8800%Q !ePtMOPPOgOcBIMNZpn:localhost:8800% Q !YGUjVdVdpcQoGkRnWB:localhost:8800% Q !IZkczIYykpZDvjuUWn:localhost:8800% Q !zuCqeooOnfWkYrQdxA:localhost:8800% Q !vttkrtSyHEJXVMlvLo:localhost:8800% Q !whuymJoLfUdkFdxoyE:localhost:8800%Q !yTQmLDAxZscWKLMSWh:localhost:8800%Q !eWRdwtyqHvuxZFvhNS:localhost:8800%Q !UGVFuRGyPQmBbGsEDo:localhost:8800%Q !AMLmLqizBFklpqKibP:localhost:8800%Q !rWGwSSefrZzQYCYFHs:localhost:8800%Q !HXfrGcvJCbRItyQLVE:localhost:8800%Q !HusOrLtWZTLbmQZxmm:localhost:8800%Q !BpTqIemsWFZIqTcgJO:localhost:8800%Q !YQATbgbLImCDamiDHC:localhost:8800%Q !svYOOXWZHtQQzlMcEP:localhost:8800%~Q !CGckPHdSYcIocFvRAq:localhost:8800%}Q !BoyzlWNkRPncpDjBDg:localhost:8800%|Q !djwLhpJUYOKsgQtrky:localhost:8800%{Q !bkwyieHZwSMJfuSKvV:localhost:8800%zQ !XcaKxZsPvbZhAGKKdx:localhost:8800%yQ !jDKAOtmeAGbYTpwyEW:localhost:8800%xQ !JYLMokjOhZZlmbZvTf:localhost:8800%wQ !zoTQAhGwmDDUECKtbL:localhost:8800%vQ !NeYaCeYNFATCqlrlGT:localhost:8800%uQ !YtVXQjSPgVtbxrzUOA:localhost:8800%tQ !zsXPhIPzeXXLvuazzQ:localhost:8800%sQ !WFHIeSFQyuugGeBFxW:localhost:8800%rQ !QMrkSPlQDGborAyWtQ:localhost:8800%qQ !mBQpGaIiadEuKBXfOw:localhost:8800%pQ !xXYMxashIZAUOTuGAJ:localhost:8800%oQ !QcaNrIiUsWpTiVGOnt:localhost:8800%nQ !ozgnwUlebxvzLVwyHW:localhost:8800%mQ !rQeYcODvQiLsOIbQrJ:localhost:8800%lQ !csWEXfVEVxdviNvgAd:localhost:8800%kQ !aHyAJEOSdKqTiRjOvw:localhost:8800%jQ !hnQOBexFYpvJntEChZ:localhost:8800%iQ !hDAzBWYEyRVBRlrCHh:localhost:8800%hQ !fkvdYkesQOFCAQkzky:localhost:8800%gQ !OWGKxAmTrHLciIdrJi:localhost:8800%fQ !aknLNLxfChlLvFYhkJ:localhost:8800%eQ !HWTlaNxUKnDsrtlOxU:localhost:8800%dQ !pUSFAnuwUuMlbiInDR:localhost:8800%cQ !SrMQpDMFREKRMELwbL:localhost:8800%bQ !bNSXSTadOMhIrYpMzH:localhost:8800%aQ !TlJCaYlCkOOVzFDlLx:localhost:8800%`Q !bOSxzttDtclnrWnLov:localhost:8800%_Q !DnUHoxreGexNmjSVpq:localhost:8800%^Q !rwUuVBrftGHDBOlEZm:localhost:8800%]Q !CkNvQnbApPIcuKygDk:localhost:8800%\Q !NboFFVLpJHTeuUKCjM:localhost:8800%[Q !aZwMKYDXJRlSKjQNWM:localhost:8800&ZQ!XiwGxQKwjgutEClKUy:localhost:8829%YQ !mTlCLZQCmfDuQsJxxp:localhost:8800%XQ !PEcOacvKaBKpXjytEF:localhost:8800&WQ!NajQnqYmGyTjxhFYar:localhost:8829%VQ !sJnuQYOyruhUpXDsLY:localhost:8800%UQ !TeraguiGoZoeOGFzlI:localhost:8800%TQ !UaitDdkGDcwvRLJSvp:localhost:8800%SQ !dDqNKNFdIjCAwnyaxp:localhost:8800%RQ !kjueCKHmYaYefEEpQY:localhost:8800%QQ !nftGLlLhVgzOwOFufp:localhost:8800%PQ !raCWVWQGnXbmkexpCN:localhost:8800%OQ !kwJgbtogEzCqYbUXfh:localhost:8800%NQ !JZouHBRxCRbcxYJnbn:localhost:8800%MQ !HOPyhZPcKkrvSmDIvX:localhost:8800%LQ !EWkoFeckhXlNyjuIEB:localhost:8800%KQ !utJsNQubeIXvcTKGpx:localhost:8800%JQ !iTQSCiLqRMDtgXtUdC:localhost:8800%IQ !UMFUOnYRvwKwSPkYHB:localhost:8800%HQ !hZuwenlFDapIPBOyfi:localhost:8800%GQ !LvARVIpJZeRQxbKefX:localhost:8800%FQ !SfYtaUhCFosNfHfUVm:localhost:8800 cHGsK#^>|T-vN _ 7  o H &  X 1 jC;eo6uM&  a :  ^ u M & |Tc'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Y'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88008&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800q'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800`'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800<'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800V'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800W'Q!XRAZJeoZBhGeHKKjaG:localhost:8800\'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800G'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800='Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800t'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800;&Q!WjlTCJVOFJkanCtkFE:localhost:8800R  geQa$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1640}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI"], "type": "m.room.history_visibility", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041919717, "hashes": {"sha256": "ceWxHNXATZegD20PcVIHwyUc6uiO9CnnS3AMwebFcaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+BfmyOHCYtBjvtyeKXFLXgI+XjoDHJ84n4FIzOKpBcg4FfUZYMp/zKlN8B62BLI68R6ulmrmt9KG9L2obg1WAg"}}, "unsigned": {"age_ts": 1570041919717}}kfeQac$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1639}{"auth_events": ["$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "type": "m.room.power_levels", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"users": {"@anon-20191002_181700-312:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041919577, "hashes": {"sha256": "DXw0qLMLnQNlc5HPUKwnbhYXTg7s/wvXvqGZd7LtkNo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rbIFNLzCrtuREGN1L/wEIrf2lwJwgY51vGGc7vqQwbHNPoGuemivtbAqbyATGOeXkOgdGCgBpv8Q7GqsijCKAA"}}, "unsigned": {"age_ts": 1570041919577}}teeQau$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1638}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8"], "type": "m.room.join_rules", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041918484, "hashes": {"sha256": "XY/k7/D4RYZovGExvOWZgXl74Eq4Jg2uqDjA4xQJC6g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kppO7FJzmMqbsLeqjGqiiiJ0Gg8P9FiMU+lFy+aqchiOfRKnF6BWcRMxj+C/58mI51wIrQdKF5DuWj87ILW+DQ"}}, "unsigned": {"age_ts": 1570041918484}}vdeQay$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1637}{"auth_events": ["$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc"], "prev_events": ["$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc"], "type": "m.room.member", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-312", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-312:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041917710, "hashes": {"sha256": "plNSQbIslAM62G1Qu2zIWwEZnxvqLvhmu/xj1z0lcn8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpEubYOMw3oSJqa4y6w+9reImu8jGNCYuQtaRM1igKYf0VBJCJfRdnQn8qmZ/oi0LJjB1zJWX1i21tcJLqDJDA"}}, "unsigned": {"age_ts": 1570041917710}} #Z$M t   D l q /4Xc&+OZc!Q' e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8 Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0oQ? e!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibility$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIgQ/ e!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rules$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAiQ3 e!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4cQ' e!utJsNQubeIXvcTKGpx:localhost:8800m.room.create$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4 Q']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkoQ? e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibility$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938gQ/ e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rules$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8iQ3 e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 Q']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUcQ' e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.create$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcoQ? e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibility$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0gQ/ e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rules$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsiQ3 e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY Q']e !UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9UcQ' e !UMFUOnYRvwKwSPkYHB:localhost:8800m.room.create$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsoQ? e !hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibility$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1ggQ/ e !hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rules$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrki Q3 e !hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM Q']e!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIc Q' e!hZuwenlFDapIPBOyfi:localhost:8800m.room.create$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUo Q? e!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibility$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEg Q/ e!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rules$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8iQ3 e!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM Q']e!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4cQ' e!LvARVIpJZeRQxbKefX:localhost:8800m.room.create$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsbQ% e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkaQ# e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.name$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TArQ))e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQoQ? e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQbQ% e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topic$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYgQ/ e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rules$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4QoQ? e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibility$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI  #keQaS$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1644}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY"], "type": "m.room.aliases", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"aliases": ["#publicroomalias_with_topic:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041923367, "hashes": {"sha256": "2Yjqu7/C3ak0c9GBWiXRMmxDmILlkf2NVGG7DFyU5tI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v1vrPE7XS7/we5TYV/5YHgkOpjUR0Rs0ta43UgHja8KRlL11Q/3NiqWG7t2tIRnOP3PMslNHT90b03e9zTy8BQ"}}, "unsigned": {"age_ts": 1570041923367}}jeQa$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1643}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q"], "type": "m.room.history_visibility", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041923115, "hashes": {"sha256": "/njmRWfYLWqZ0QVruXtG/xdoQTKskmvxZbdyuVlzBkM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sP1ivOe56d6ZowFI7r7u+UAZa27y084Yz5K2dsD6Ig14OBwt48uJYo9m/Qq4nnHjLjUYx8gnos1ofnyBVkjmAw"}}, "unsigned": {"age_ts": 1570041923115}}lieQae$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1642}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI"], "type": "m.room.topic", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"topic": "topic_1"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041921833, "hashes": {"sha256": "gsFw55NnfBKVuF5jPGVb4o/0ssdBL5PLQvoHuOOvj0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fqo/dOXotr+P/Od5xiNn5IECuVXNpo7WPIvcRKhYLVH2whDAfTliknVc+mRrA+oqhVqXRzjrVkWuiKDWwpivBw"}}, "unsigned": {"age_ts": 1570041921833}}theQau$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1641}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g"], "type": "m.room.join_rules", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041921638, "hashes": {"sha256": "/wqcRCL7OsPF1CwXemqvdaEmw/XKMd8IdgKOs1EH8hQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eTdmRC+xN7uOhBlaLrq7BilZsgWFNj+uAqO0Q9afQ+imeJR+hciJ4WrduevcB4iBzXjXNItWMBJg9KezJnOoBw"}}, "unsigned": {"age_ts": 1570041921638}} a} { y w u sqomkigeca~reeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800~qeeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~peeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800~oeeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800~neeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~meeQ$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~leeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800~keeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~jeeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800~ieeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800~heeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~geeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800~feeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800~eeeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~deeQ$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~ceeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~beeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~aeeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~`eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~_eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~^eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~]eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~\eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~[eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~ZeeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~YeeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~XeeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~WeeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~VeeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~UeeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~TeeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800 "%X [ }   ; Dl*'0XU^hcQ/ e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rules$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8jbQ3 e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc aQ']e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cd`Q' e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8 _Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0p^Q? e!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibility$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIh]Q/ e!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rules$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAj\Q3 e!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ [Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4dZQ' e!utJsNQubeIXvcTKGpx:localhost:8800m.room.create$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4 YQ']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkpXQ? e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibility$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938hWQ/ e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rules$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8jVQ3 e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 UQ']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUdTQ' e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.create$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcpSQ? e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibility$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0hRQ/ e~!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rules$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsjQQ3 e}!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY PQ']e|!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9UdOQ' e{!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.create$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUspNQ? ey!hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibility$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1ghMQ/ ex!hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rules$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkjLQ3 ew!hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM KQ']ev!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIdJQ' eu!hZuwenlFDapIPBOyfi:localhost:8800m.room.create$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUpIQ? es!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibility$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEhHQ/ er!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rules$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8jGQ3 eq!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM FQ']ep!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4dEQ' eo!LvARVIpJZeRQxbKefX:localhost:8800m.room.create$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETscDQ% en!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkbCQ# em!SfYtaUhCFosNfHfUVm:localhost:8800m.room.name$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAsBQ))el!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1-P V  z  J  m 0 r 7y<E1z?D 0]v6Q' !OqPpRQ'E!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455 :Q/ !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules BQ? !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility 6Q' !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create <Q3 !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels^Q']!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800^Q']!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800:Q/ !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rulesBQ? !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibility6Q' !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create<Q3 !PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levelsR^Q']!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800U^Q']!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800Q:Q/ !PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rulesSBQ? !PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibilityT6Q' !PHkVrXAyfGkFtzSagu:localhost:8800m.room.createP<Q3 !PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels^Q']!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800:Q/ !PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rulesBQ? !PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibility6Q' !PEcOacvKaBKpXjytEF:localhost:8800m.room.createVQ3A!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_changeNQ31!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changesdQ<Q3 !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels^Q']!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800^Q']!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800:Q/ !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rulesBQ? !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibility6Q' !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.createCQ?!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite82<Q3 !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels/^Q']!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800.:Q/ !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rules0BQ? !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibility16Q' !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.create-<Q3 !OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels]Q'[!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829]Q'[!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800]Q'[!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800:Q/ !OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rulesBQ? !OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibility6Q' !OaCEdDAiatpwYcagUb:localhost:8800m.room.create?Q9 !OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_aliasEQ))!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800<Q3 !OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels ^Q']!OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800 :Q/ !OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rules BQ? !OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibility 6Q' !OXpGdKbowFUTChPdmF:localhost:8800m.room.create  0voeQay$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1648}{"auth_events": ["$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs"], "prev_events": ["$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs"], "type": "m.room.member", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-317", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-317:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041929890, "hashes": {"sha256": "6l10XNw9kS2btgeCNYq84n6dUXjTdwh7FMDeEW6VP0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tmy1wT57/pOO9EQSYFJsY4xZaovLR5ggO1bL3aaVfB+Eirqhx4A/pAMXDfe4UhvtphCFKl1BVilrForY1xpHDw"}}, "unsigned": {"age_ts": 1570041929890}}ineQa_$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1647}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-317:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041929253, "hashes": {"sha256": "DHHPXNDEtuf0YL6xDbDIoN/SjRGhE56JKWOuYcZWw1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QYf2dyRm1swZtLGutn60FjvPaQCnuEccSNec821EopRCTn8JVV7NvF5q7y2E7TDLvKwBBq3pJE11n+8m3rBECQ"}}, "unsigned": {"age_ts": 1570041929253}}omeQak$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1646}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA"], "type": "m.room.topic", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"topic": "Test Topic"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041926045, "hashes": {"sha256": "m3R4CtoyjSX9ZsgHsWA+CoTSAdPRheSvcVgpCOpd63c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ojv0/QmZfcIAKJ1dnEcbCvtWHOTaKT5I4rVEYKXyfM2csXPL0l64O1tvMcoP53LpdKOckMK1JdCNH/U3If+eDg"}}, "unsigned": {"age_ts": 1570041926045}}lleQae$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1645}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ"], "type": "m.room.name", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"name": "Test Name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041924577, "hashes": {"sha256": "Ek1F0N0/NhwFfEQUMCJEqroLKffxHd6CeRZhf4lnyJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yBVm1Bt08XxXtNCrtftv+F4rCT1oeYsuKJjvnrseZgvOiKELWqmO3TPMTufAYbXLfDEAq3MUX1BY3IfOti5mCQ"}}, "unsigned": {"age_ts": 1570041924577}} JM8 | v D [)Uu>o +1 7 jO  # { P  cp J C=  W % i ]>1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q y1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUw1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA`1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ m1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R40e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY[1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_El1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qa1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE 1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k k1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!11e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFML1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMN1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk~1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs P1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI &1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUp1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI/1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4<1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIj1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ:1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw 1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAT1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 j1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ S1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM R1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM N1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo /1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMI1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE ?LR ]  d # k * m 1 s 7y=CNU\b"i-p/> ]  @anon-20191002_181700-349:localhost:8800m&\9 ]@anon-20191002_181700-349:localhost:8800a&\> ]  @anon-20191002_181700-348:localhost:8800m&\9 ]@anon-20191002_181700-348:localhost:8800a&\= ]  @anon-20191002_181700-347:localhost:8800m&\> ] @anon-20191002_181700-346:localhost:8800m&\D9 ]@anon-20191002_181700-346:localhost:8800a&\9 ]@anon-20191002_181700-347:localhost:8800a&\> ]  @anon-20191002_181700-345:localhost:8800m&\49 ]@anon-20191002_181700-345:localhost:8800a&\= ]  @anon-20191002_181700-343:localhost:8800m&\9 ]@anon-20191002_181700-343:localhost:8800a&\> ]  @anon-20191002_181700-342:localhost:8800m&\=9 ]@anon-20191002_181700-342:localhost:8800a&\> ]  @anon-20191002_181700-341:localhost:8800m&\9 ]@anon-20191002_181700-341:localhost:8800a&\= ]  @anon-20191002_181700-339:localhost:8800m&\9 ]@anon-20191002_181700-339:localhost:8800a&\> ]  @anon-20191002_181700-338:localhost:8800m&\/9 ]@anon-20191002_181700-338:localhost:8800a&\= ]  @anon-20191002_181700-337:localhost:8800m&\V> ]  @anon-20191002_181700-336:localhost:8800m&\C9 ]@anon-20191002_181700-337:localhost:8800a&\9~ ]@anon-20191002_181700-336:localhost:8800a&\9} ]@anon-20191002_181700-335:localhost:8800a&\9| ]@anon-20191002_181700-334:localhost:8800a&\>{ ]  @anon-20191002_181700-333:localhost:8800m&\9z ]@anon-20191002_181700-333:localhost:8800a&\>y ]  @anon-20191002_181700-332:localhost:8800m&\9x ]@anon-20191002_181700-332:localhost:8800a&\>w ]  @anon-20191002_181700-331:localhost:8800m&\,9v ]@anon-20191002_181700-331:localhost:8800a&\>u ]  @anon-20191002_181700-330:localhost:8800m&\ 9t ]@anon-20191002_181700-330:localhost:8800a&\>s ]  @anon-20191002_181700-329:localhost:8800m&\3=9r ]@anon-20191002_181700-329:localhost:8800a&\>q ]  @anon-20191002_181700-328:localhost:8800m&\9p ]@anon-20191002_181700-328:localhost:8800a&\>o ]  @anon-20191002_181700-327:localhost:8800m&\;9n ]@anon-20191002_181700-327:localhost:8800a&\>m ]  @anon-20191002_181700-326:localhost:8800m&\39l ]@anon-20191002_181700-326:localhost:8800a&\=k ]  @anon-20191002_181700-325:localhost:8800m&\V>j ]  @anon-20191002_181700-324:localhost:8800m&\r9i ]@anon-20191002_181700-325:localhost:8800a&\9h ]@anon-20191002_181700-324:localhost:8800a&\=g ]  @anon-20191002_181700-323:localhost:8800m&\V>f ]  @anon-20191002_181700-322:localhost:8800m&\C9e ]@anon-20191002_181700-323:localhost:8800a&\9d ]@anon-20191002_181700-322:localhost:8800a&\=c ]  @anon-20191002_181700-321:localhost:8800m&\>b ]  @anon-20191002_181700-320:localhost:8800m&\ '9a ]@anon-20191002_181700-321:localhost:8800a&\9` ]@anon-20191002_181700-320:localhost:8800a&\>_ ]  @anon-20191002_181700-319:localhost:8800m&\ 9^ ]@anon-20191002_181700-319:localhost:8800a&\>] ]  @anon-20191002_181700-318:localhost:8800m&\ 9\ ]@anon-20191002_181700-318:localhost:8800a&\>[ ]  @anon-20191002_181700-317:localhost:8800m&\ 9Z ]@anon-20191002_181700-317:localhost:8800a&\9Y ]@anon-20191002_181700-316:localhost:8800a&\9X ]@anon-20191002_181700-315:localhost:8800a&\9W ]@anon-20191002_181700-314:localhost:8800a&\ ,NC 8 - { " p  e ZOD9.|#qf VeL$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcsha256] :a)f[C-~VeL$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8sha256pjǠ4wG/ty !.+VeL$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcsha256 m밝]Elk&>U d'>''VeL$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8csha256'O Y#鴝yäqP#oVeL$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8sha256ZMPw;hdzJ:}bVeL$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0sha256ݛ^:܄i i>魑2VeL$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIsha256Ζ1+ےVcEv)П&GZVeL$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAsha256L!*j<_P}ޝ]pVeL$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQsha256"ɸ4zPubA흎{y QUVeL$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4sha256T d}u0iTS{<')VeL$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4sha256"N :$0(p]:V eL$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mksha256ʨhlO•)StV eL$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQsha256[C4!E1Or(Yrh$V eL$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQsha256,[NNX?+ Sd+$V eL$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGIsha256T.s%~n_"!@2,_.~֓bV eL$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-wsha256^Ԃ'TD9VV\;GJ f+[VeL$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgsha256H+d?6x''?2",ǰ\HVeL$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Qsha256[V_Xs3TVeL$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYsha256YkS=B*Oڹ@K6VeL$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qksha256yٞ#%>&c/B|zrרq8 VeL$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938sha256sQl*-!7 Iѿ`5ѳ7VeL$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8sha256cJo3ݵAaz^@₲}MXVeL$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4sha2560J4 7ظn yneBq^VeL$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUsha256&I 0c49J P.X<_jVeL$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcsha256/zdk\W~h"-jVeL$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQsha256'3JI6?bB.NʃT%DV~eL$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0sha256VD6YwS-G4,+ډoV}eL$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tssha256 A,^{"o ,@V|eL$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYsha256MiBok>7o@֗an^fV{eL$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Usha256/q7%PrNml8@^k+$p;VzeL$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUssha256T]葘s=*_ts5KVyeL$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEsha256t2]h]7 [jM9$A6BVxeL$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gsha256D'lnKi<%{= *OpԈH!oOCXVweL$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrksha256G 0nK^b jwD8IDmVveL$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMsha256J}sX @g|O6 cVueL$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIsha2565/ad{[ɒ|ogQd`VteL$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUsha256M'4Dr+lW :YR}#6)VseL$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcsha256= 0՜7~Bz RVreL$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEsha256$6PZ -IqT!lpVqeL$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8sha256]kYCtU=l s+KԗzwY.#YVpeL$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMsha256>`†s"k*2Hv?mVoeL$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4sha256V|7rŌC.3,0JAMc9=VneL$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETssha256,#\Pi3"zdy^2;VmeL$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hksha256N 5 , #    v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~tj`VLB8.$zpf\RH>4*  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$R ]  ]  ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]} ]} ]o ]o ]d ]c ]^ ]^ ]V ]U ]M ]M ]F ]F ]A ]@ ]: ]: ]2 ]2 ]( ]( ]( ]" ]" ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]{ ]u ]u ]u ]n ]m ]b ]b ]Z ]Z ]S ]S ]K ]K ]C ]B ]; ]; ]; ]3 ]3 ]+ ]* ]$ ]$ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]~]}]s~]n}]5|]4{]#z]#y]x]w]v]u] t] s]r]q]p]o]n]m]l]k]j]i]h]g]f]e]d]c]b]a]`]_]^]]]\][]yZ]yY]sX]jW]dV]dU]`T]ZS]UR]TQ]TP]SO]RN]QM]QL]OK]NJ]NI]MH]LG]KF]JE]JD]IC]IB]IA]H@]H?]G>]G=]F<]B;]>:]89]48]07]+6]'5]#4]3]2]1]0]/].]-],]+]*] )](]']&]%]$]#]"]!] ]]]]]]]]]]]]]]]]]]] ] ] ] ] ]]]]]]] ] \~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0& | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ ]  ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]z ]q ]i ]^ ]V ]M ]E ]E ]< ]< ]6 ]. ]' ] ] ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]~ ]~ ]~ ]s ]r ]r ]r ]g ]e ]e ]e ]Y ]Y ]X ]M ]M ]M ]L ]F ]? ]9 ]2 ]- ]' ]  ] ] ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]W ]W ]W ]+ ]+ ]+ ]  ]  ] ] ] ]  ]  ] ] ]~ ]} ]| ]{ ]z ]y ]x ]w ]v ]u ]t ]s ]r ]q ]p ]o ]n ]m ]~l ]vk ]kj ]ki ]dh ]dg ]Yf ]Ye ]Td ]Nc ]Hb ]HaR ]G` ]F_ ]:^ ]/] ])\ ])[ ]#Z ]#Y ]X ]W ]V ]U ]T ]S ]R ]Q ]P ]O ]N ]M ]~L ]vK ]uJ ]lI ]lH ]dG ]dF ][E ][D ]VC ]VB ]PA ]G@ ]G? ]G> ]@= ];< ];; ]5: ]+9 ])8 ])7 ])6 ]5 ]4 ]3 ]2 ]1 ] 0 ] / ]. ]- ], ]+ ]* ]) ]( ]' ]& ]% ]$ ]# ]" ]! ] ] ]n ]m ]X ]X ]N ]N ]H ]H ]? ]? ]7 ]7 ]0 ]0 ]* ]* ]# ]# ] ii 4 5 h g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAoo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9goz1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQoq1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1wop1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAos1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-Qox1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1Ewow1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQo{1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwot1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAor1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0woy1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_gov1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5Aou  4 h 6mfd]c@anon-20191002_181700-341:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQo127.0.0.1Ra[a@anon-20191002_181700-33:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECg127.0.0.1d]c@anon-20191002_181700-339:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAo127.0.0.1Qd]c@anon-20191002_181700-338:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgo127.0.0.1Pd]c@anon-20191002_181700-337:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwo127.0.0.1Od]c@anon-20191002_181700-336:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwo127.0.0.1Nd]c@anon-20191002_181700-335:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAo127.0.0.1Md]c@anon-20191002_181700-334:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgo127.0.0.1Ld]c@anon-20191002_181700-333:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8Qo127.0.0.1Kd]c@anon-20191002_181700-332:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-go127.0.0.1J D DHseQa$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1652}{"auth_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM", "$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE"], "type": "m.room.test", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041933349, "hashes": {"sha256": "aAPxAIB9UKOzCJhK5y++KDgs9ZfxOlUfK8VNP0E1ofE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OWbfxaYQ3NH46QYId2cyEME8XWaIQdpLvkWyRxrRVCLEVpSoKUP3mxqWVFuWN8Hi5lj2wS1ZKWxD8r3iY80DDg"}}, "unsigned": {"age_ts": 1570041933349}}reQa$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1651}{"auth_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM", "$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8"], "type": "m.room.history_visibility", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041932253, "hashes": {"sha256": "xGNDuFAOMTRQdNZZwIL/PT3r7G+eYQ3bs67AtaDNiVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7TMhFC29dgbewdxuzBxcjZXvnr/EBHfAHynNPd4a5ucEJURzNoLZg/BCCrbVN1rY+Z+y9LGPfnDqdIGiGQZaBg"}}, "unsigned": {"age_ts": 1570041932253}}tqeQau$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1650}{"auth_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM", "$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM"], "type": "m.room.join_rules", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041931627, "hashes": {"sha256": "oPQ3dyEY7xF8vJcgpNnGrGUmC5nLahUr4AQUrAa4Rj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u5KXiLQSXlTvHlMalsduZDmEu8R0Qf8owRD8oNhtPECTtwHI+whKWzb/VyeZmmp30OzeNoGFl6w0RsKWiX8GAg"}}, "unsigned": {"age_ts": 1570041931627}}kpeQac$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1649}{"auth_events": ["$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "type": "m.room.power_levels", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"users": {"@anon-20191002_181700-317:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041930848, "hashes": {"sha256": "z2Sv8vpFFTf5ahM/TpbbRyHMTJ5bZEXOqkMKDQbdeHk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+TbFPiMks7E+92XYo4IVaFE0ghDmWQjD0AHwzlPEX6mdL2FIN3CzdTWS54QVRhsJx01x9/lWK/onCO9mZJgAg"}}, "unsigned": {"age_ts": 1570041930848}} "(3 a * V [+*5cbmeeQ/ $TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rulesgeQ3 $aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels eQ']$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800joinaeQ' $-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create eQ']$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800joinmeQ? $XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibilityeeQ/ $cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rulesgeQ3 $CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels eQ']$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800joinaeQ' $WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create eQ']$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800joinm eQ? $zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibilitye eQ/ $TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rulesg eQ3 $IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels eQ']$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800joinaeQ' $iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800m.room.create eQ']$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800joinmeQ? $c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibilityeeQ/ $Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rulesgeQ3 $MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels eQ']$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800joinaeQ' $L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.createmeQ? $5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibilityeeQ/ $CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rulesgeQ3 $v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels ~eQ']$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800joina}eQ' $VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.createm|eQ? $RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibilitye{eQ/ $Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rulesgzeQ3 $nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels yeQ']$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800joinaxeQ' $tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800m.room.createmweQ? $JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibilityeveQ/ $_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rules   *tweQau$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1656}{"auth_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM", "$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM"], "type": "m.room.join_rules", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041937160, "hashes": {"sha256": "sZWdusNS/zqajMfjWD6IzcEjEwyq69io7u8V4Qmgbt4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kEa6+T7LOqrhXwuzXmK+NXeXF96yPlXqfq8lst3llGOGqGSd8gPU6PzAKzkV8lmMeu9K2n598aQXqPKbW+iFDQ"}}, "unsigned": {"age_ts": 1570041937160}}kveQac$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1655}{"auth_events": ["$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "type": "m.room.power_levels", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"users": {"@anon-20191002_181700-318:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041936391, "hashes": {"sha256": "sMFbC/RNOYLjlV/qvSo4INWmzDgNreyjxSxbwE5Cz5Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gTWnPcjvVWsL4+T7MxkwDryWSD1m1R1tyBJG5FGhK1dinah5ZWMkiRA+6b7bdWTuvOeuWHuTRIYMRzVsMGV7BA"}}, "unsigned": {"age_ts": 1570041936391}}vueQay$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1654}{"auth_events": ["$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU"], "prev_events": ["$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU"], "type": "m.room.member", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-318", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-318:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041935649, "hashes": {"sha256": "wiWycTXjGWTtBok+ABGUC90+Q8wZ8rx3r5b7gxA12AQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A5K5i/+VxQrAUddNnwkJYxET7pgJx7CqDAJG4ztVRlh3+wdRsLBmtFu0Ru8uTr4P4ztEA7iraIdpTsqU7cZ2DA"}}, "unsigned": {"age_ts": 1570041935649}}iteQa_$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1653}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-318:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041934759, "hashes": {"sha256": "01uPK6ykexLQdlftMFr4ISPHX22z4HspqgIchF785o4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v6RmfzVlP/o6ZKUy25cKfmQwmzi5uvKCiKI3bq4PmFLeLVEZjUG16lc0PGLNvqI9VPjQcVg3aTPDHePbqSXAAA"}}, "unsigned": {"age_ts": 1570041934759}} ^\ Z  r p,6<M^! e)Q ] $WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800 m,m @anon-20191002_181700-320:localhost:8800! e)Q ] $LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800 m&mI@anon-20191002_181700-320:localhost:8800! e)Q ]$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGIm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800mvm@anon-20191002_181700-320:localhost:8800! e)Q ]$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-wm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800msm{@anon-20191002_181700-320:localhost:8800! e)Q ]$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800mmP@anon-20191002_181700-320:localhost:8800!e)Q ]$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Qm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800mmy@anon-20191002_181700-320:localhost:8800!e)Q ]$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800m m@anon-20191002_181700-320:localhost:8800!e)Q ]$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800m m@anon-20191002_181700-320:localhost:8800,e?Q ]$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938m.room.history_visibility!iTQSCiLqRMDtgXtUdC:localhost:8800mmB@anon-20191002_181700-320:localhost:8800$e/Q ]$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8m.room.join_rules!iTQSCiLqRMDtgXtUdC:localhost:8800mm@anon-20191002_181700-320:localhost:8800&e3Q ]$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4m.room.power_levels!iTQSCiLqRMDtgXtUdC:localhost:8800mm@anon-20191002_181700-320:localhost:8800 e'Q ]$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUm.room.member!iTQSCiLqRMDtgXtUdC:localhost:8800m^m@anon-20191002_181700-320:localhost:8800 e'Q  ]$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcm.room.create!iTQSCiLqRMDtgXtUdC:localhost:8800mmQ@anon-20191002_181700-320:localhost:8800e#Q ]$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQm.room.test!UMFUOnYRvwKwSPkYHB:localhost:8800mm@anon-20191002_181700-319:localhost:8800,e?Q ]$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0m.room.history_visibility!UMFUOnYRvwKwSPkYHB:localhost:8800mmط@anon-20191002_181700-319:localhost:8800$~e/Q ]$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsm.room.join_rules!UMFUOnYRvwKwSPkYHB:localhost:8800mm@anon-20191002_181700-319:localhost:8800&}e3Q ]$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYm.room.power_levels!UMFUOnYRvwKwSPkYHB:localhost:8800mZmx@anon-20191002_181700-319:localhost:8800 |e'Q ]$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Um.room.member!UMFUOnYRvwKwSPkYHB:localhost:8800mma@anon-20191002_181700-319:localhost:8800{ e'Q  ]$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsm.room.create!UMFUOnYRvwKwSPkYHB:localhost:8800mmD@anon-20191002_181700-319:localhost:8800ze#Q ]$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEm.room.test!hZuwenlFDapIPBOyfi:localhost:8800mm @anon-20191002_181700-318:localhost:8800,ye?Q ]$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gm.room.history_visibility!hZuwenlFDapIPBOyfi:localhost:8800mʿm@anon-20191002_181700-318:localhost:8800$xe/Q ]$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkm.room.join_rules!hZuwenlFDapIPBOyfi:localhost:8800mʽmʽ@anon-20191002_181700-318:localhost:8800&we3Q ]$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMm.room.power_levels!hZuwenlFDapIPBOyfi:localhost:8800mʺmʻC@anon-20191002_181700-318:localhost:8800 ve'Q ]$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIm.room.member!hZuwenlFDapIPBOyfi:localhost:8800mʷ!mʷ@anon-20191002_181700-318:localhost:8800 ~z v r n j fb^ZVRNJFQeeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800PeeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800OeeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800NeeQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800MeeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800LeeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800KeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800JeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800IeeQ$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800HeeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800GeeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800FeeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800EeeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800DeeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800CeeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800BeeQ$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800AeeQ$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800@eeQ$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800?eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800>eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800=eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800<eeQ$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800;eeQ$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800:eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:88009eeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:88008eeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:88007eeQ$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:88006eeQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:88005eeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:88004eeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800  w +>v{eQay$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1660}{"auth_events": ["$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs"], "prev_events": ["$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs"], "type": "m.room.member", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-319", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-319:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041941716, "hashes": {"sha256": "etjYUl/miE/8kG0j3QwfBK4Hr3VlVSCJccPnE0GnPdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cez4YfZbvDVVlwSUnN5+D2OGhGNsz0/nfilgmFSPH3SUT0t4Bnhl2Bl77VMEby96XAOriNTQ14+9NHUwoGysDA"}}, "unsigned": {"age_ts": 1570041941716}}izeQa_$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1659}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-319:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041940704, "hashes": {"sha256": "WnARFabCFFgGMC3zQPrT2Z+nH/mRiHsU0PGGXrNh1/c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QJFSXNmGMLRymfMcABFHswjvii8fKh7wLHxMvakrtbATmPOq15r/A8Gpc2H/Qz5aFm5DEsFrPRVFfRzbiz21AQ"}}, "unsigned": {"age_ts": 1570041940704}}HyeQa$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1658}{"auth_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM", "$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g"], "type": "m.room.test", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041939483, "hashes": {"sha256": "y+6Dxmlmd20UYvhCDkgeMs//Lv4kIYkLZziLtey2G0s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uEFRy6EnKygYxICpcvIDXSf3YOuWq7OhrKunVkhbVU4+6cF9VuqErU//+s21KsrdOOmrQpqHNJDQwqNsS5QoCg"}}, "unsigned": {"age_ts": 1570041939483}}xeQa$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1657}{"auth_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM", "$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk"], "type": "m.room.history_visibility", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041937794, "hashes": {"sha256": "/aDHCwgVYNNpyMsxls483IhGvAWL+noMntFlUYpxofk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qo1Xz5mQxgO5ffr3jzF9UbMEd8iqzcBkkoQ0M2H2RfMSOKhllm/dsTFtIfVIAwYhPTnefuyD+IGhpAg37HqTAQ"}}, "unsigned": {"age_ts": 1570041937794}} a} { y w u sqomkigeca~eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800~ eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~~eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800~}eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~|eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800~{eeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800~zeeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~yeeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800~xeeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800~weeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~veeQ$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~ueeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800~teeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~seeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800 (hi9> c  v ' : M f 0CVL_r#Lu ] v@anon-20191002_181700-337:localhost:8800offlinemmmmmF$ ]%@anon-20191002_181700-283:localhost:8800offlinembmbF! ]"@anon-20191002_181700-277:localhost:8800offlinemƓmƓL ] !@anon-20191002_181700-268:localhost:8800offlinem mƃem qL ] !@anon-20191002_181700-269:localhost:8800offlinem mƃem L ] @anon-20191002_181700-266:localhost:8800offlinemm\Tm_L ] @anon-20191002_181700-262:localhost:8800offlinemśm!mŝMLt ] v@anon-20191002_181700-336:localhost:8800offlinemmmmmLr ] s@anon-20191002_181700-333:localhost:8800offlinemHmmIGLq ] s@anon-20191002_181700-334:localhost:8800offlinemKmmLLj ] p@anon-20191002_181700-332:localhost:8800offlinem,:m̱lm,FLe ] f@anon-20191002_181700-331:localhost:8800offlinemmvm:Lb ] c@anon-20191002_181700-330:localhost:8800offlinemmcLmL\ ] ]@anon-20191002_181700-328:localhost:8800offlinem˝[m,m˝L[ ] \@anon-20191002_181700-327:localhost:8800offlinem˃mm˄LY ] Z@anon-20191002_181700-326:localhost:8800offlinemlmmmLU ] X@anon-20191002_181700-324:localhost:8800offlinemF*m mHFT ]X@anon-20191002_181700-320:localhost:8800offlinemmFQ ]R@anon-20191002_181700-329:localhost:8800offlinem˲em˲eLP ] Q@anon-20191002_181700-323:localhost:8800offlinem#(m˟m#)LN ] O@anon-20191002_181700-321:localhost:8800offlinemmˌtmLI ] J@anon-20191002_181700-319:localhost:8800offlinememedmgLH ] I@anon-20191002_181700-318:localhost:8800offlinemImQmPLF ] G@anon-20191002_181700-317:localhost:8800offlinemʰm*mʰLD ] E@anon-20191002_181700-316:localhost:8800offlinemʛmDmʛL9 ] :@anon-20191002_181700-300:localhost:8800offlinemUmimL8 ] 9@anon-20191002_181700-299:localhost:8800offlinemȤ^m.mȫL5 ] 6@anon-20191002_181700-298:localhost:8800offlinempmdmrbL3 ] 4@anon-20191002_181700-297:localhost:8800offlinemCmȹmCL0 ] 1@anon-20191002_181700-294:localhost:8800offlinemǵ2m1mǵ;L- ] .@anon-20191002_181700-290:localhost:8800offlinemc1mm^oF) ]*@anon-20191002_181700-286:localhost:8800offlinemmF( ]*@anon-20191002_181700-279:localhost:8800offlinemƭmƨF' ]*@anon-20191002_181700-280:localhost:8800offlinem(mͩF% ]&@anon-20191002_181700-284:localhost:8800offlinemmF ]@anon-20191002_181700-276:localhost:8800offlinem~m~F ]@anon-20191002_181700-267:localhost:8800offlinemxmxL ] @anon-20191002_181700-260:localhost:8800offlinem|smm~OF ]@anon-20191002_181700-265:localhost:8800offlinemmL ] @anon-20191002_181700-258:localhost:8800offlinemYmӜm\ J!Y'r@ y H  P  4 W % ^ , d 2 `k9q@fx.F~LS9k1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI9.1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Yu1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEh1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw`1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgU1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8C1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j431e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ[0e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg01e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawA1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7use1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU,1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd81e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE91e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMM0e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA_1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkO1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgh1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI 1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsm1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX01e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY0e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4^1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok`1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR41e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkko0e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM0e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY61e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc80e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsv1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr40e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM+1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI0e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AR1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 Q?)HtBh6d W % ] , z[#n< 2 VOj8p>   \ *Hb1h6)21e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU/1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0\1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo60e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gN1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcW0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko/1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM 1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc 1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4t1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8/1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4j1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8o1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQB1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEi1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYE1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk2 Q1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw 1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ 1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 D1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0H1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840140e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUF1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM41e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc\1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY61e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI X0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHso1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYP1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw21e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw21e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUT1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0P -RM H C > 9 4/*|%w rmhc T9Qe9!nftGLlLhVgzOwOFufp:localhost:8800$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_poT8Qe8!nftGLlLhVgzOwOFufp:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQT7Qe7!nftGLlLhVgzOwOFufp:localhost:8800$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqoT6Qe6!raCWVWQGnXbmkexpCN:localhost:8800$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMT5Qe5!raCWVWQGnXbmkexpCN:localhost:8800$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYT4Qe4!raCWVWQGnXbmkexpCN:localhost:8800$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbasT3Qe3!raCWVWQGnXbmkexpCN:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kT2Qe2!raCWVWQGnXbmkexpCN:localhost:8800$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQT1Qe1!kwJgbtogEzCqYbUXfh:localhost:8800$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wT0Qe0!kwJgbtogEzCqYbUXfh:localhost:8800$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5MT/Qe/!kwJgbtogEzCqYbUXfh:localhost:8800$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gT.Qe.!kwJgbtogEzCqYbUXfh:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gT-Qe-!kwJgbtogEzCqYbUXfh:localhost:8800$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIT,Qe,!JZouHBRxCRbcxYJnbn:localhost:8800$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40T+Qe+!JZouHBRxCRbcxYJnbn:localhost:8800$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0T*Qe*!JZouHBRxCRbcxYJnbn:localhost:8800$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgT)Qe)!JZouHBRxCRbcxYJnbn:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgT(Qe(!JZouHBRxCRbcxYJnbn:localhost:8800$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98T'Qe'!HOPyhZPcKkrvSmDIvX:localhost:8800$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgT&Qe&!HOPyhZPcKkrvSmDIvX:localhost:8800$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-LkT%Qe%!HOPyhZPcKkrvSmDIvX:localhost:8800$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAroT$Qe$!HOPyhZPcKkrvSmDIvX:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQT#Qe#!HOPyhZPcKkrvSmDIvX:localhost:8800$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88T"Qe"!EWkoFeckhXlNyjuIEB:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gT!Qe!!EWkoFeckhXlNyjuIEB:localhost:8800$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcT Qe !EWkoFeckhXlNyjuIEB:localhost:8800$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8TQe!EWkoFeckhXlNyjuIEB:localhost:8800$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcTQe!EWkoFeckhXlNyjuIEB:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cTQe!EWkoFeckhXlNyjuIEB:localhost:8800$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8TQe!utJsNQubeIXvcTKGpx:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0TQe!utJsNQubeIXvcTKGpx:localhost:8800$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpITQe!utJsNQubeIXvcTKGpx:localhost:8800$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHATQe!utJsNQubeIXvcTKGpx:localhost:8800$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQTQe!utJsNQubeIXvcTKGpx:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4TQe!utJsNQubeIXvcTKGpx:localhost:8800$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0TQe!UMFUOnYRvwKwSPkYHB:localhost:8800$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYT Qe !UMFUOnYRvwKwSPkYHB:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U D DHeQa$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1664}{"auth_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY", "$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0"], "type": "m.room.test", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041944852, "hashes": {"sha256": "f9xX8S3VCxHpoPZ3wqI0PmnU8fjIICw0Tu23MbCwKOI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kTvt8FRKYuT1UAVKRauVqAX4bAUW42S0lWboFystFlQ8d7ogXY0g2YnJ6g5yvGi+bYuSweyW91X8AIFeNIwwCA"}}, "unsigned": {"age_ts": 1570041944852}}~eQa$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1663}{"auth_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY", "$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts"], "type": "m.room.history_visibility", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041943753, "hashes": {"sha256": "Sa8Blf09onyV9+np8S1y3y0NOSSCzfD3VABquQ6kGtI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T22udtO4rLN3/hEsTsNqWP7ovwCHzkVPEGF3BXIsitoJvZvAOY5tBBDiTM752hLxYVxQxEOTdCYEIug1EHRwBw"}}, "unsigned": {"age_ts": 1570041943753}}t}eQau$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1662}{"auth_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY", "$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY"], "type": "m.room.join_rules", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041943044, "hashes": {"sha256": "ZyLgZLLTyRELIyv7iKckvUFYXWPCI2jWTARRnhtHbQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ib0xTU++zqS/nZMMDBYuFr8aqPzBmEG13L6RGBTivD8uhszl08WU0qhEw5fHc/YmQ/VndNxi+2ySqoDq8JfkCA"}}, "unsigned": {"age_ts": 1570041943044}}k|eQac$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1661}{"auth_events": ["$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "type": "m.room.power_levels", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"users": {"@anon-20191002_181700-319:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041942362, "hashes": {"sha256": "0fY3WnCLu4uJYyfRo6xaEvRrG0tdeffNlnvsEUW6gA4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qqR75/s+YKea5RMSL103+Xzi9voVKSovl7ytvCBgDck+ZnUDPf3Sc77N17szPRuPPTbaRuqGltyPXeLQujHsDg"}}, "unsigned": {"age_ts": 1570041942362}} Hj8p> 2 v D  | J  j8 P  V $ \ +dp> vD}LS!Y'1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo>1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI (1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI '1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw 1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4B1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4A1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4@1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ00e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ00e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0 1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc )1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc (1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgA1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg@1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg?1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c 1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c 1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c 1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY 1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY 1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I e1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I d1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I c1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsb1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsa1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns`1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U?1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U>1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE 1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8 1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kc | l \ T LtD=5- e % eeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800 *eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800ہeeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800QeeQ$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800meeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800ЁeeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800~eeQ$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800YeeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800݁eeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800weeQ$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800فeeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800ށeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800 1eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800 )eeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800 eeQ$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800eeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800z 1^ m z ) 6 C P ] jw&3BQ^ kz)P]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800P]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800P]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800P]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800N[Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800 P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-210:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800 N[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800 P]Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800P]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800P]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800P]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800P]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800P]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800P]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800P]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800P]Q@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800P]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800P]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800P]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800P]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800P]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800P]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800P]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800P]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800P]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800P]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800P]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800P]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800P]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800P]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800P]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800P]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800P]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800N[Q@anon-20191002_181700-17:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800P]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800 g * T~=ggU]!c^@anon-20191002_181700-331:localhost:8800COONNUXFOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAogT]!c]@anon-20191002_181700-330:localhost:8800TFGJMHITULMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwogS]!c\@anon-20191002_181700-329:localhost:8800KKMPVZBDLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgogR]!c[@anon-20191002_181700-328:localhost:8800DZKGSTQGUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgogQ]!cZ@anon-20191002_181700-327:localhost:8800WQCLQHKZHCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0QogP]!cY@anon-20191002_181700-326:localhost:8800YBIXYTHJYTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0AogO]!cX@anon-20191002_181700-325:localhost:8800CDWNGKHJGSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggogN]!cW@anon-20191002_181700-324:localhost:8800KKATIXOBNFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAogM]!cV@anon-20191002_181700-323:localhost:8800BHOVENVWZCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_RagogL]!cU@anon-20191002_181700-322:localhost:8800CMZHVCVAXTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwogK]!cT@anon-20191002_181700-321:localhost:8800WXFXGVMZGCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7Qwo   *teQau$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1668}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4"], "type": "m.room.join_rules", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041949106, "hashes": {"sha256": "C3eOPIl4ZmYlQsoyzYntcAxXJ6WW5HxiZV8bEmPWEvU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W6SzsBImXYOPb6OeFpx0+lroz69KNVZMHCQW0WQbuKNdMVTy9gZfeD5lMRGRW+rnxA8bxQUfzyVPC6Mx1dpEDw"}}, "unsigned": {"age_ts": 1570041949106}}keQac$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1667}{"auth_events": ["$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "type": "m.room.power_levels", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"users": {"@anon-20191002_181700-320:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041948340, "hashes": {"sha256": "88iofFQJect8z5qUwaI4jp+IdQj6hNuoFGfVKvt/VBs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9RbcvcQsk5J1Dibt7ivnXip7KYOAXdwgjSu7ChoU5K1V4BQH4upAGWhq0XCCQ/ovRGtE1cL+tNe1i2hJ3zHbBQ"}}, "unsigned": {"age_ts": 1570041948340}}veQay$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1666}{"auth_events": ["$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc"], "prev_events": ["$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc"], "type": "m.room.member", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-320", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-320:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041947742, "hashes": {"sha256": "dX5rG+FnvXEbuJPOY6Cp7aaAierErYiYIECPMVtk5yw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hdOGWYUTWotF6MK2JvoguCzkm9NreMl2o4Q1yAHML0h/Brd/IJ+AdZ4BwmV6q5cbWOi3m6G5QJzcZJdqNZ1BAQ"}}, "unsigned": {"age_ts": 1570041947742}}ieQa_$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1665}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-320:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041946878, "hashes": {"sha256": "8yG/nlOKjACX8gbx91ana+2h4H/W6B2syMe5tvhxGb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCi1MI1o/AxpOsIh9/9YXIxhZJar5QJw681c0RXP2r7JENPOavuDdbRzIKjJ9VOCC3ohiS6YOvme+o9GpP6sDg"}}, "unsigned": {"age_ts": 1570041946878}} E* {IP$ ^\j8p?  w E  } K  Q XVd2j8p> e$pVGQHH99ReR2yTF1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI`1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cP1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIW1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4@1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q R1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw^1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI>1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE00e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4F1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ51e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwx1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 ,1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo~1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 91e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo h1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk <1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo-1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4:1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAj1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkf1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI{1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs m1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w 11e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 21e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM &21e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 21e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMk21e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q d1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwQ1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q41e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMo1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mt1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUm21e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 #O(7 @ h w  *X%QZ'Om{eQ? $PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibilityezeQ/ $c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rulesgyeQ3 $5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels xeQ']$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800aweQ' $Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800m.room.createmveQ? $aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibilityeueQ/ $yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rulesgteQ3 $3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels seQ']$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800areQ' $GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800m.room.createmqeQ? $n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibilityepeQ/ $4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rulesgoeQ3 $KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels neQ']$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800ameQ' $EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800m.room.createmleQ? $2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibilityekeQ/ $TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rulesgjeQ3 $aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels ieQ']$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800aheQ' $-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create geQ']$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800mfeQ? $XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibilityeeeQ/ $cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rulesgdeQ3 $CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels ceQ']$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800abeQ' $WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create aeQ']$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800m`eQ? $zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibilitye_eQ/ $TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rulesg^eQ3 $IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels ]eQ']$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800a\eQ' $iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800m.room.create [eQ']$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800mZeQ? $c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibilityeYeQ/ $Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rules 7J J BB B  D  D  D  F FFHHJJ J ?]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVVm_c?]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXTmϘk?]!@anon-20191002_181700-366:localhost:8800FABJQITKMRm~i?]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWOm~j?]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTBm`g?]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXFm`h?]!@anon-20191002_181700-362:localhost:8800DYTMFWLSURmf?]!@anon-20191002_181700-361:localhost:8800XCHGELQORJm^e?]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJmZU?]!@anon-20191002_181700-411:localhost:8800QBCZCYKWITmC=[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXm%K!?]!@anon-20191002_181700-409:localhost:8800GINWCFSINTm0 ?]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFBm+!?]!@anon-20191002_181700-407:localhost:8800RTGALMPCLSmj?]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGFm?]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDRmr?]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCIm?]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWSm?]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNWmҲ=[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYm ?]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQLmҚ?]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHMmҖ?]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYAm҂?]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGPm}?]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWEmd?]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEGmK?]!@anon-20191002_181700-393:localhost:8800ABJMLTSTASm1p?]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJm?]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLLm|?]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQHmI=[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKm?]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKAm?]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPEmѧ?]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDHmђ?]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWSm}#~?]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTEmP9|?]!@anon-20191002_181700-384:localhost:8800UKXQVESHRPmP=}?]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJm3{?]!@anon-20191002_181700-382:localhost:8800KSBAPZNICMm/z?]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUOmy?]!@anon-20191002_181700-380:localhost:8800KLOHIVURCFmx=[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHm3?]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOTm΅w?]!@anon-20191002_181700-378:localhost:8800BACPAMXENXm΃v?]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZmЛu?]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRNmЇt?]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBUmk~s?]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHYm;|r?]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZm!%q?]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNMmp?]!@anon-20191002_181700-371:localhost:8800MVADRLDOGOmSo?]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJmcn=[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKOmJ?]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRAmxm?]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJmϱl  wieQo$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "160", "stream_ordering": 1672}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test1-2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041952195, "hashes": {"sha256": "+DaUz8d+7Tb2umm+hiYap0MvWIYgQDW/KJuiQDE52uQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lPpRTYk28upkGaOaZU7Ecr4InJ5EdCupskhK7CSGEo2XHt9//yOBb3ZM4ApQt/h3dlMO7EwPb3d95luzsO1DBg"}}, "unsigned": {"age_ts": 1570041952195}}eQo$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "159", "stream_ordering": 1671}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test1-1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041951501, "hashes": {"sha256": "/66c3G21tzYFpk6pP/YIvj1z7fd/VYwxc+kS4CuFmiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MEt7ZaZ4vUQCRJE0ZN1/LV6lzzGEYzTj6xCqbPk6iy8uaa2HgKnjfOUTzjYVEs6kHw+CS/6hEmac7Vd3rlUpBw"}}, "unsigned": {"age_ts": 1570041951501}}eQo$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "158", "stream_ordering": 1670}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test1-0", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041951498, "hashes": {"sha256": "XYwCePYMoX9rka0wF65fVpg6XMPwL0iz6lVTKa2l7Xk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DoEgtulF3R7s2KMY49KMue76P2/YqKVi0VTGR+nbrNQtf588wSwRw3Y7K9N0SOZWwdDSSlh+p8ZlO3koDP7kDQ"}}, "unsigned": {"age_ts": 1570041951498}}eQa$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1669}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8"], "type": "m.room.history_visibility", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041949846, "hashes": {"sha256": "kw2DeUYFRABpvGdQlUVwicpJ2/UHsH1T4ztlU6aALFE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dul2QSQqzxTItLbYdM34CtlmYU1Kb9OifxOpdFwtvWFG+OVXAXaId+kuFkl9CC/tvzg1G7Nm/BE5Uo8+yHHoCw"}}, "unsigned": {"age_ts": 1570041949846}} #p*T ~   5 b3l%Kq(LpkUeQ%!$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 15kTeQ%!$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 14kSeQ%!$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 13kReQ%!$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 12kQeQ%!$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 11kPeQ%!$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 10jOeQ%$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 9jNeQ%$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 8jMeQ%$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 7jLeQ%$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 6jKeQ%$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 5jJeQ%$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 4jIeQ%$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 3jHeQ%$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 2jGeQ%$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 1*FeQ%$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800content.bodyA message to wait on because the m.room.member might not come down /sync(EeQ%$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY!CkNvQnbApPIcuKygDk:localhost:8800content.bodyA message to wait on because the m.room.member doesn't come down /syncbDeQ%$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s!UaitDdkGDcwvRLJSvp:localhost:8800content.body2bCeQ%$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800content.body1bBeQ%$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o!dDqNKNFdIjCAwnyaxp:localhost:8800content.body2bAeQ%$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800content.body1k@eQ%!$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800content.bodyMy messageo?eQ%)$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800content.bodyA test messageo>eQ%)$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g!JZouHBRxCRbcxYJnbn:localhost:8800content.bodyA test messageo=eQ%)$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY!HOPyhZPcKkrvSmDIvX:localhost:8800content.bodyTest message 2o<eQ%)$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800content.bodyTest message 1';eQ%$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800content.bodyWait for presence changes caused by the first sync to trickle throughh:eQ%$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-3h9eQ%$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-2h8eQ%$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-1h7eQ%$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-0h6eQ%$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-3h5eQ%$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-2h4eQ%$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-1h3eQ%$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-0 -RM H C > 9 4/*|%w rmhc T?Qe!raCWVWQGnXbmkexpCN:localhost:8800$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYT>Qe!raCWVWQGnXbmkexpCN:localhost:8800$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbasT=Qe!raCWVWQGnXbmkexpCN:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kT<Qe!raCWVWQGnXbmkexpCN:localhost:8800$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQT;Qe!kwJgbtogEzCqYbUXfh:localhost:8800$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcT:Qe!kwJgbtogEzCqYbUXfh:localhost:8800$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcT9Qe!kwJgbtogEzCqYbUXfh:localhost:8800$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wT8Qe!kwJgbtogEzCqYbUXfh:localhost:8800$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5MT7Qe!kwJgbtogEzCqYbUXfh:localhost:8800$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gT6Qe!kwJgbtogEzCqYbUXfh:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gT5Qe!kwJgbtogEzCqYbUXfh:localhost:8800$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIT4Qe!JZouHBRxCRbcxYJnbn:localhost:8800$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gT3Qe!JZouHBRxCRbcxYJnbn:localhost:8800$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40T2Qe!JZouHBRxCRbcxYJnbn:localhost:8800$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0T1Qe!JZouHBRxCRbcxYJnbn:localhost:8800$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgT0Qe!JZouHBRxCRbcxYJnbn:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgT/Qe!JZouHBRxCRbcxYJnbn:localhost:8800$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98T.Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYT-Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZkT,Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgT+Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-LkT*Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAroT)Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQT(Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88T'Qe!EWkoFeckhXlNyjuIEB:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gT&Qe!EWkoFeckhXlNyjuIEB:localhost:8800$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYT%Qe!EWkoFeckhXlNyjuIEB:localhost:8800$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcT$Qe!EWkoFeckhXlNyjuIEB:localhost:8800$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8T#Qe!EWkoFeckhXlNyjuIEB:localhost:8800$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcT"Qe!EWkoFeckhXlNyjuIEB:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cT!Qe!EWkoFeckhXlNyjuIEB:localhost:8800$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8T Qe!utJsNQubeIXvcTKGpx:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0TQe!utJsNQubeIXvcTKGpx:localhost:8800$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpITQe!utJsNQubeIXvcTKGpx:localhost:8800$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHATQe!utJsNQubeIXvcTKGpx:localhost:8800$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQTQe!utJsNQubeIXvcTKGpx:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4TQe!utJsNQubeIXvcTKGpx:localhost:8800$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGITQe!iTQSCiLqRMDtgXtUdC:localhost:8800$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-wTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGITQe!iTQSCiLqRMDtgXtUdC:localhost:8800$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w T IT eQo$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "164", "stream_ordering": 1676}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"msgtype": "m.text", "body": "test2-2"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041954086, "hashes": {"sha256": "dGTDH8dLZLUofS6C3G0GfTqRcE9cuTmsYWWP+YVlgbY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twjRN1nD0I7183T+uqlMXy+8c6ML9IvSRar9hrJYg/ubzyqOGPMWK40t6ROj3Sv+gG90XPdmRXA+Vn2/4wjdCg"}}, "unsigned": {"age_ts": 1570041954086}}3 eQO$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "163", "stream_ordering": 1675}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q", "$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test2-1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041953398, "hashes": {"sha256": "K3BczEGDXjS+iMevoXY3eF3bKtDN6o0UPX/uGaA+BSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SHQ53OOhBPTo7G2q+HwIzUWivnXulfB7cyP0j9JEjxvbX+KuD1Lf6nNgc6PBp7b3vHzDtDCahUQMDems60uhDA"}}, "unsigned": {"age_ts": 1570041953398}}3 eQO$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "162", "stream_ordering": 1674}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q", "$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test2-0", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041953395, "hashes": {"sha256": "yGfa5LC529zo76HgVfzudg3Vn3sycIDCHkpMfagWdmk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7Km1g+nQtZQ334qDgGhGbs/elCwpVijbwlw9Rna4CvrwxXh7f3wQiJKCwoX7TndutNk3N/U5v1tyojUvOAqbBQ"}}, "unsigned": {"age_ts": 1570041953395}}3eQO$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "161", "stream_ordering": 1673}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk", "$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"msgtype": "m.text", "body": "test1-3"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041952535, "hashes": {"sha256": "zij/Ds5BovnZaNb9ZNjNYVv/tiYV81IF2oJdG+T6UsE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n76qO9q/b1/eDeogyAPK3Ni4aE5l8y+3YMs3mjAKpNsaEwdqSCtCUUeEpz2OTKAFjIziYU4DwcoV0fsRpX3BDg"}}, "unsigned": {"age_ts": 1570041952535}} ]\ l  p * (=GM]&%e3Q ]$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgm.room.power_levels!JZouHBRxCRbcxYJnbn:localhost:8800mvmw@anon-20191002_181700-327:localhost:8800 $e'Q ]$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgm.room.member!JZouHBRxCRbcxYJnbn:localhost:8800msmtn@anon-20191002_181700-327:localhost:8800# e'Q  ]$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98m.room.create!JZouHBRxCRbcxYJnbn:localhost:8800mo~mq@anon-20191002_181700-327:localhost:8800!"e)Q ]$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYm.room.message!HOPyhZPcKkrvSmDIvX:localhost:8800mjZmj^@anon-20191002_181700-326:localhost:8800!!e)Q ]$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZkm.room.message!HOPyhZPcKkrvSmDIvX:localhost:8800mgCmg@anon-20191002_181700-326:localhost:8800, e?Q ]$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgm.room.history_visibility!HOPyhZPcKkrvSmDIvX:localhost:8800mbmd@anon-20191002_181700-326:localhost:8800$e/Q ]$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lkm.room.join_rules!HOPyhZPcKkrvSmDIvX:localhost:8800m]wm^@anon-20191002_181700-326:localhost:8800&e3Q ]$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jArom.room.power_levels!HOPyhZPcKkrvSmDIvX:localhost:8800mYm[R@anon-20191002_181700-326:localhost:8800 e'Q ]$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQm.room.member!HOPyhZPcKkrvSmDIvX:localhost:8800mVmW@anon-20191002_181700-326:localhost:8800 e'Q  ]$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88m.room.create!HOPyhZPcKkrvSmDIvX:localhost:8800mSmTG@anon-20191002_181700-326:localhost:8800 e'Q ]$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gm.room.member!EWkoFeckhXlNyjuIEB:localhost:8800mH8mI]@anon-20191002_181700-325:localhost:8800!e)Q ]$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYm.room.message!EWkoFeckhXlNyjuIEB:localhost:8800mB2mB:@anon-20191002_181700-324:localhost:8800,e?Q ]$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcm.room.history_visibility!EWkoFeckhXlNyjuIEB:localhost:8800m93m>@anon-20191002_181700-324:localhost:8800$e/Q ]$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8m.room.join_rules!EWkoFeckhXlNyjuIEB:localhost:8800m3/m4c@anon-20191002_181700-324:localhost:8800&e3Q ]$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcm.room.power_levels!EWkoFeckhXlNyjuIEB:localhost:8800m-m/@anon-20191002_181700-324:localhost:8800 e'Q ]$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cm.room.member!EWkoFeckhXlNyjuIEB:localhost:8800m)m*@anon-20191002_181700-324:localhost:8800 e'Q  ]$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8m.room.create!EWkoFeckhXlNyjuIEB:localhost:8800m&m'F@anon-20191002_181700-324:localhost:8800 e'Q ]$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0m.room.member!utJsNQubeIXvcTKGpx:localhost:8800m|m@anon-20191002_181700-323:localhost:8800,e?Q ]$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIm.room.history_visibility!utJsNQubeIXvcTKGpx:localhost:8800mm@anon-20191002_181700-322:localhost:8800$e/Q ]$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAm.room.join_rules!utJsNQubeIXvcTKGpx:localhost:8800mQm^@anon-20191002_181700-322:localhost:8800&e3Q ]$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQm.room.power_levels!utJsNQubeIXvcTKGpx:localhost:8800m|m@anon-20191002_181700-322:localhost:8800 e'Q ]$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4m.room.member!utJsNQubeIXvcTKGpx:localhost:8800mmy@anon-20191002_181700-322:localhost:8800 e'Q  ]$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4m.room.create!utJsNQubeIXvcTKGpx:localhost:8800m *m @anon-20191002_181700-322:localhost:8800 e'Q ] $F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mkm.room.member!iTQSCiLqRMDtgXtUdC:localhost:8800 m?m@anon-20191002_181700-321:localhost:8800  I>QveQay$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1680}{"auth_events": ["$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4"], "prev_events": ["$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4"], "type": "m.room.member", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-322", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-322:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041958174, "hashes": {"sha256": "/3Tvrf5QYy1ISl+2lmtBc+J7mEkv0yDeC4XOT9U83hY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rj8mHEE5KK42K3oOhuHHUEePh/oFEMmAldRPGdQXsqXfKfivgQ3M+5AVh9EG5ivGQC66uRq3vAc9rhFWLne/Dg"}}, "unsigned": {"age_ts": 1570041958174}}ieQa_$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1679}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-322:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041957418, "hashes": {"sha256": "Oh4N2vkGHVBl6svsABm1iG+/tWS8nRU5NDL+V9bpHtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FGNrKVm80YHUHytPsUyCwUUWSdMZ23I7IeUmthBOUc2kS+8IcJ1T5lGLdOrkDbqKyUTYJhTEYDpgBcGHJEpKCA"}}, "unsigned": {"age_ts": 1570041957418}} eQa$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 340, "stream_ordering": 1678}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8"], "prev_events": ["$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ", "$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ"], "type": "m.room.member", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-321:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-321", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-321:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041955391, "hashes": {"sha256": "/1ekvj4YWedNizdmn4/0v37whwE5DrXeAdxVQUjSZKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QaSKOA7IX4xba6heEysQgqq8oFek7YRcg1aWd5lEVMNJVNaRlrfJIUucf1033svcX9qdY9nAZsJTvxERg+LDCA"}}, "unsigned": {"age_ts": 1570041955391}}3 eQO$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "165", "stream_ordering": 1677}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w", "$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"msgtype": "m.text", "body": "test2-3"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041954604, "hashes": {"sha256": "EKOsjpxdj/4fBGIK8AVRLiUQe0LTIUoqwEm8qKXZnng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "//gjPcDMw8yHIiG23EGxmrEoqTyLritK/0g0xiayNdg88QI9qzhy/8Ht2UnT8Je81MOCYU6GkmMGJ7BneqtuDw"}}, "unsigned": {"age_ts": 1570041954604}} r9r  V :sW9rC e]]Q=$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw@anon-20191002_181700-341:localhost:8800@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800joinanon-20191002_181700-341C e]]Q=$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4@anon-20191002_181700-339:localhost:8800@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829joinanon-20191002_181700-339C e]]Q=$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4@anon-20191002_181700-340:localhost:8829@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829joinanon-20191002_181700-340E e]]Q=$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc@anon-20191002_181700-339:localhost:8800@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829inviteanon-20191002_181700-339C e]]Q=$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok@anon-20191002_181700-338:localhost:8800@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800joinanon-20191002_181700-338C e]]Q=$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw@anon-20191002_181700-337:localhost:8800@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800joinanon-20191002_181700-337C e]]Q=$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g@anon-20191002_181700-336:localhost:8800@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800joinanon-20191002_181700-336C e]]Q=$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8@anon-20191002_181700-333:localhost:8800@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800joinanon-20191002_181700-333C e]]Q=$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA@anon-20191002_181700-332:localhost:8800@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800joinanon-20191002_181700-332C e]]Q=$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw@anon-20191002_181700-331:localhost:8800@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800joinanon-20191002_181700-331C~ e]]Q=$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ@anon-20191002_181700-330:localhost:8800@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800joinanon-20191002_181700-330C} e]]Q=$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k@anon-20191002_181700-329:localhost:8800@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800joinanon-20191002_181700-329C| e]]Q=$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g@anon-20191002_181700-328:localhost:8800@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800joinanon-20191002_181700-328C{ e]]Q=$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg@anon-20191002_181700-327:localhost:8800@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800joinanon-20191002_181700-327Cz e]]Q=$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ@anon-20191002_181700-326:localhost:8800@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800joinanon-20191002_181700-326Cy e]]Q=$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g@anon-20191002_181700-325:localhost:8800@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800joinanon-20191002_181700-325Cx e]]Q=$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c@anon-20191002_181700-324:localhost:8800@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800joinanon-20191002_181700-324Cw e]]Q=$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0@anon-20191002_181700-323:localhost:8800@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800joinanon-20191002_181700-323Cv e]]Q=$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4@anon-20191002_181700-322:localhost:8800@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800joinanon-20191002_181700-322Cu e]]Q=$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk@anon-20191002_181700-321:localhost:8800@anon-20191002_181700-321:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800joinanon-20191002_181700-321 jK&<H ~ P " j N Th:| <  V ( Z p  B \ ..vb4|N& vHjb4j\-]@anon-20191002_181700-434:localhost:8800-]@anon-20191002_181700-396:localhost:8800-]@anon-20191002_181700-390:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800+[@anon-20191002_181700-39:localhost:8800;+[@anon-20191002_181700-38:localhost:8800:-]@anon-20191002_181700-395:localhost:8800+[@anon-20191002_181700-36:localhost:88008+[@anon-20191002_181700-41:localhost:8800=+[@anon-20191002_181700-40:localhost:8800<+[@anon-20191002_181700-3a:localhost:8800-]@anon-20191002_181700-373:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:88004,-]@anon-20191002_181700-435:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-436:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800-]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-423:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-410:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-406:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-402:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:88009-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800B-]@anon-20191002_181700-437:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-376:localhost:8800 jK&<H ~ P " j N Th:| <  V ( Z p  B \ ..vb4|N& vHjb4j\-]@anon-20191002_181700-434:localhost:8800-]@anon-20191002_181700-396:localhost:8800-]@anon-20191002_181700-390:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800+[@anon-20191002_181700-39:localhost:8800;+[@anon-20191002_181700-38:localhost:8800:-]@anon-20191002_181700-395:localhost:8800+[@anon-20191002_181700-36:localhost:88008+[@anon-20191002_181700-41:localhost:8800=+[@anon-20191002_181700-40:localhost:8800<+[@anon-20191002_181700-3a:localhost:8800-]@anon-20191002_181700-373:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:88004,-]@anon-20191002_181700-435:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-436:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800-]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-423:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-410:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-406:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-402:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:88009-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800B-]@anon-20191002_181700-437:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-376:localhost:8800 %cr) 8 G V  Z  ^ bfjnr v"z&~*QGeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800QFeQ$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s!UaitDdkGDcwvRLJSvp:localhost:8800QEeQ$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o!dDqNKNFdIjCAwnyaxp:localhost:8800QDeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM!kjueCKHmYaYefEEpQY:localhost:8800QCeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng!kjueCKHmYaYefEEpQY:localhost:8800QBeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M!nftGLlLhVgzOwOFufp:localhost:8800QAeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0!raCWVWQGnXbmkexpCN:localhost:8800Q@eQ$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg!raCWVWQGnXbmkexpCN:localhost:8800Q?eQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800Q>eQ$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g!JZouHBRxCRbcxYJnbn:localhost:8800Q=eQ$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY!HOPyhZPcKkrvSmDIvX:localhost:8800Q<eQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800Q:eQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800Q9eQ$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ!UMFUOnYRvwKwSPkYHB:localhost:8800Q8eQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE!hZuwenlFDapIPBOyfi:localhost:8800Q7eQ$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc!LvARVIpJZeRQxbKefX:localhost:8800Q6eQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800Q5eQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800Q*eQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800Q'eQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800QeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800QeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800QeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800QHeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800FOQ$157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800QeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800QeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800FOQ$157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800QeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800FOQ$157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800Q eQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800F OQ$157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800Q eQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800FOQ$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800QeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800FOQ$157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800Q;eQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Ve$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oD1Ue$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cC1Te$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAB1Se$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUA1Re$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng@1Qe$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM@1Pe$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA@1Oe$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4@1Ne$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM@1Me$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc@1Le$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps@1Ke$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA@1Je$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc@1Ie$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk@1He$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I@1Ge$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M?1Fe$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI>1Ee$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw=1De$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o<1Ce$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M;1Be$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8;1Ae$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s:1@e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po91?e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ81>e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo71=e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz061<e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg61;e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk61:e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg619e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig618e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik617e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo616e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg615e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg614e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M613e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00612e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q611e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM610e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY51/e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas41.e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k31-e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ21,e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc11+e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc11*e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w11)e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M01(e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g/1'e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g.1&e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII-1%e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g,1$e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40,1#e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0+1"e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg*1!e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg)1 e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98(1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY'1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk'1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg'1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk&1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro%1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88#1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g"1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1 e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41 e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4  eQa$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1696}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk"], "type": "m.room.history_visibility", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041979538, "hashes": {"sha256": "hwEFGM/ByKXWSF/3F3pDwns7Z1e0bRLX7yPEDQfRVRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmfKAdvQPSBzzZw8RySUkLKc7+s3Kd/PNv4+0DMrxzT6Bgg7iIAHXlJGYdzY/hAejZVrlP1nUJYL8N5AtLUECw"}}, "unsigned": {"age_ts": 1570041979538}}teQau$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1695}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro"], "type": "m.room.join_rules", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041978231, "hashes": {"sha256": "VnmXunGWrZS31vuSCQ5+M8YTKJ769Ttz5m/LRH/E7O8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wOorQyvQCx/2VNoDFWirFJeSlFYnHewT5EzsgjY+wIshdoXv+y5LPcD8E6zXizW61uJudaGWvmwVthAU+0jrDw"}}, "unsigned": {"age_ts": 1570041978231}}keQac$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1694}{"auth_events": ["$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "type": "m.room.power_levels", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"users": {"@anon-20191002_181700-326:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041977247, "hashes": {"sha256": "F8CTmQ7Ftfiuv38YKWx+H20iCB/n+cQVe5bLll8Td40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OLBABRg8DEsZxK9G+odkEWunm6HEdoNsA6VZEpY9gMmIKHBqZoFQ6R0GlrLS+fJEuSiUerZ9ps0psFFqYWtKAg"}}, "unsigned": {"age_ts": 1570041977247}}veQay$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1693}{"auth_events": ["$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88"], "prev_events": ["$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88"], "type": "m.room.member", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-326", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-326:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041976468, "hashes": {"sha256": "c8Mf9x6cUHl+QyB0srL8y3kFeuyu5yO9tACqleK6X44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HMd3k49KXuVVHpI+apMRIeP8bWhV/XyipJsaG7m2fUFMbBrLLaXN5hoUMBzB27Dwagj8lhkxXYf/2Z9bId1DDA"}}, "unsigned": {"age_ts": 1570041976468}}  VeQa9$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 342, "stream_ordering": 1684}{"auth_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ", "$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA"], "prev_events": ["$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI"], "type": "m.room.member", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-323:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-323", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-323:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041962364, "hashes": {"sha256": "IOwy6009Lq7aWmBNz50Cih2EKP4cxlWny3J4baKdkMM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bo2q/3tqBL2gok0XFPR4xnR+ciF6rkVFkBGBADdE/BdxaW0xUD52jlJ28GDbV7eDq4o0IGcTZevSrkniYU5sAw"}}, "unsigned": {"age_ts": 1570041962364}}eQa$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1683}{"auth_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ", "$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "prev_events": ["$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA"], "type": "m.room.history_visibility", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041960720, "hashes": {"sha256": "WzkUkcwc5RGgBYMAWKpmCY7wJ528OaUTRpiQr1aaVvw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K5/AeB/7A68yqcEeSXwzXiZNuM6dnqiQCpMEJR2xPEcqG9mICVFZGFE/QO8L5YLZ15B52kCZAQ613qi9eYlEBg"}}, "unsigned": {"age_ts": 1570041960720}}teQau$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1682}{"auth_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ", "$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "prev_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ"], "type": "m.room.join_rules", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041959761, "hashes": {"sha256": "oqJSmdoMlflTEeijd/GxriHQC99DVsfOF2R6f2rIWNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7+z/hRifuDs8jxGZgrsp4gEFIbgOyURrw6qt1gIMxj2CBJhmP4K67yUMQBJ9kgsTb7L+oUfUPqcifOwHg/gsCA"}}, "unsigned": {"age_ts": 1570041959761}}keQac$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1681}{"auth_events": ["$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "prev_events": ["$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "type": "m.room.power_levels", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"users": {"@anon-20191002_181700-322:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041958780, "hashes": {"sha256": "GSB5WX57MTVBdFCpLuYAPL9XP6cqgsKfy0utKeoEy18"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YkpwbRFkgaEw62VvorJP896Bqh/BpszAqWO2biHyjzLJfG0JdRVB1BwviHXUV7fsUg7UTxRYdK/PJKYBmWvTAA"}}, "unsigned": {"age_ts": 1570041958780}} 8 ] k U  ^ ! l \ i.LZ q 4[~n+d<Q3 !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_access yBQ? !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibility xRQ'E!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455 BQ? !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility :Q/ !sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rules <Q3 !sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels ^Q']!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800 6Q' !sAWFpvSUPExZLVcPEd:localhost:8800m.room.create :Q/ !sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rulesBQ? !sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibility6Q' !sJnuQYOyruhUpXDsLY:localhost:8800m.room.create<Q3 !sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.state<Q3 !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels=^Q']!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829@^Q']!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800<:Q/ !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rules>BQ? !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibility?6Q' !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create;<Q3 !rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels^Q']!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800:Q/ !rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rulesBQ? !rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibility6Q' !rwUuVBrftGHDBOlEZm:localhost:8800m.room.create<Q3 !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels^Q']!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829^Q']!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800:Q/ !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rulesBQ? !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibility<Q3 !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access6Q' !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create<Q3 !raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels^Q']!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800:Q/ !raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rulesBQ? !raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibility6Q' !raCWVWQGnXbmkexpCN:localhost:8800m.room.create<Q3 !rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels]Q'[!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800]Q'[!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800:Q/ !rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rulesBQ? !rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibility6Q' !rZWweGEChkxxtzyfDB:localhost:8800m.room.create<Q3 !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels^Q']!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800:Q/ !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rulesBQ? !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility6Q' !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.create<Q3 !rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels4Q# !rWGwSSefrZzQYCYFHs:localhost:8800m.room.name^Q']!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800 z:Q/ !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rules w<Q3 !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels v^Q']!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800 u6Q' !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.create tDQ))!sPWVGnipjiiWQpywNO:localhost:8800m.room.aliaseslocalhost:88006<Q3 !sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels^Q']!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800 a} { y w u sqomkigeca~0eeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~/eeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800~.eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800~-eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~,eeQ$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~+eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800~*eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~)eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800~(eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800~'eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~&eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800~%eeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800~$eeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~#eeQ$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~"eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800~!eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~ eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800 ~z v r n j fb^ZVRNJFoeeQ$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800neeQ$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800meeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800leeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800keeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800jeeQ$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800ieeQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc!kwJgbtogEzCqYbUXfh:localhost:8800heeQ$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800geeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800feeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800eeeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800deeQ$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800ceeQ$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800beeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800aeeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800`eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800_eeQ$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800^eeQ$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800]eeQ$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800\eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800[eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800ZeeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800YeeQ$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800XeeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800WeeQ$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800VeeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800UeeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800TeeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800SeeQ$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800ReeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800 ! 0 @ P ` p(8HXhxu ]@anon-20191002_181700-357:localhost:8800$2b$04$P5WZFPY1fxZrl8UgKsbcHeR0xEPkQeeBQ5BZRLXsuT0d4ep8HZ.ge]+u ]@anon-20191002_181700-358:localhost:8800$2b$04$bV3h7q/B3dbDuyycPwHfOeWnuB.b4vxgCIECnCFsJlQiTljUs7Ole]+u ]@anon-20191002_181700-356:localhost:8800$2b$04$f.mQxzWYzUY4kJvQqDM1De5AnXS6uSalScFc/dy9rYHwFFBtaveTa] u ]@anon-20191002_181700-354:localhost:8800$2b$04$KKAYqN8U89akp8lFaNjC5eKLD5wCsOPhgSW0CxrKSr6TTd9PiK.KO] u ]@anon-20191002_181700-355:localhost:8800$2b$04$5lEuo3cGzXDrWXdeSJIUY.iiH6GcixRjlqycA3CvEzEXOGOZTSFly]u ]@anon-20191002_181700-353:localhost:8800$2b$04$4tILlc4DVP0/gFJOpRjaQOiX0UV0o.lihaivIBGhyesBDv07qxDZ2]u ]@anon-20191002_181700-352:localhost:8800$2b$04$QJGK0L23UI3cO41eV.B0Z.11Im96BXwYPb917VhjQimpfMYiUeuVO]u ]@anon-20191002_181700-350:localhost:8800$2b$04$UKRgFWqmaNi0wS1uSLR44.ubh6tEmbG2Kxtu6v8vSe2Hc4j0FoUm6] u ]@anon-20191002_181700-351:localhost:8800$2b$04$fI5RSczPYU1b3ZCcdS6UVeikv15jKPGgKUM5jXFeCxctTrAhIYjxa] u ]@anon-20191002_181700-349:localhost:8800$2b$04$3acD3RzszMyMov/tvH2zxuXqtRHtXbgVCr33rGdOXVF2NguikIT5C]u ]@anon-20191002_181700-348:localhost:8800$2b$04$jRnHjfMnKCZB9zXtv5WM7urqNc4Q85iyjsO59hZzvUYODSLWL/DYe]u~ ]@anon-20191002_181700-346:localhost:8800$2b$04$znpHiQAXBeQ5dddjIXtfd.19u41no8NIJkiHnIxMcnScTrn8i07Ii]u} ]@anon-20191002_181700-347:localhost:8800$2b$04$X5I1BbRiWAMGTk2o1mcZmu96Gct0MCajg/7JtoXHv73oHny9PrP.a]u| ]@anon-20191002_181700-345:localhost:8800$2b$04$0CZsGw.L6x0vDBrBiKYeMOZqNSkS2.LFtUmXI97Vu3cleXOVcq0aO]u{ ]@anon-20191002_181700-343:localhost:8800$2b$04$qQIv8nHIqMudUnVHw4l/5eJluMqeA6EbYTQaUG3EGC8atNTRxqmT2]uz ]@anon-20191002_181700-342:localhost:8800$2b$04$yr2dSnvlNl0fr5kYsdsrPexOUquAOloDHpoE0L02NRUjDISTcX56G]uy ]@anon-20191002_181700-341:localhost:8800$2b$04$Zw.tU45r/.HTYuiO4EqGfO7kKMzuE4kxcJQYZvoaMxUY6Mcicg/kS]ux ]@anon-20191002_181700-339:localhost:8800$2b$04$6BbY2aBdDBfWzY1CDwq4QukltMPj4bGywpKXQRu6a7Fm2xrbchPfG]uw ]@anon-20191002_181700-338:localhost:8800$2b$04$bcnFp3xE3EJVyVvAgjWwUeBpKnANC.SHVseEBl6QTmk3h4gLVY6Ou]uv ]@anon-20191002_181700-337:localhost:8800$2b$04$YNPECxGnEriDl/tb2zjG8ueYY0CUj38cbtfuUBGNNtNRTHGFEN6oG]uu ]@anon-20191002_181700-336:localhost:8800$2b$04$WFLouD1gXqRPkneYOQJYx.SE/Ec2MSDcqqVqi20UsLNesFh7GIfqO]ut ]@anon-20191002_181700-335:localhost:8800$2b$04$BHC.uXiZXLpcS808aMCC.eW6rJ.E13OE4dW0EGFp3.zKTBcsbVJaa]us ]@anon-20191002_181700-334:localhost:8800$2b$04$.jXP09FaS1KxAd/RCDBa3eFnLDJvB3uGS4gIdmqF2Lky/SD/tJKku]ur ]@anon-20191002_181700-333:localhost:8800$2b$04$LKn5KNFEXkl2sDs2GRyAaOefbfZfF5u7V6Zo2bWe4IQLB4Zs42dCC]uq ]@anon-20191002_181700-332:localhost:8800$2b$04$WWpFVwECbIc3Fsp.BW9zludlZxOa4m8vvvbWwIgKqGSApRA6UBM.e]up ]@anon-20191002_181700-331:localhost:8800$2b$04$U7N4hji8RfwmO/84TVmyMu432kpHav8p/XvIAJM0bmlMuQbnThrwm]uo ]@anon-20191002_181700-330:localhost:8800$2b$04$kAGl3.OHwOr2CRN6VDDE0OXiuFr/6BVknoOwRH3TJwh6YehBXhB7C]un ]@anon-20191002_181700-329:localhost:8800$2b$04$cS8.nA0JVsZ6HiEv5V1N2.O2/hdM3EjgUXhM9kyrQ974M7lI1VYIy]um ]@anon-20191002_181700-328:localhost:8800$2b$04$xHBqT9H.7.7wL4FBI3LjeeG5DzagoaCo6DkkEqSoCwBBfypARhfnS]ul ]@anon-20191002_181700-327:localhost:8800$2b$04$CUSFsIr40Zr7ddBX2zh8ruY4LKil1mjcAqcXIB.yoFrTY/oJ6LNau]~uk ]@anon-20191002_181700-326:localhost:8800$2b$04$IpmqN4ikrh3WO1WLq40iKeL1F2mGIsjbRd0DQxiSvOelBbwJ2LQL.]vuj ]@anon-20191002_181700-325:localhost:8800$2b$04$s/ESQutWsATj115w0EMbse7SPDVECo8sRtlUtgHCY70YP79Q9PJoC]kui ]@anon-20191002_181700-324:localhost:8800$2b$04$IolMTHJpc22pgVdttPYNLefGN84KoPT75.mTtNb8rTRdj7mxlymMy]k   *teQau$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1688}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc"], "type": "m.room.join_rules", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041967407, "hashes": {"sha256": "+Y1QgqTXUp/w1lAo6kp7mCdCf3UBt6eP9l36AfDy/Vs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8kksYGVQDVDgtjzJq7Hr0eJyfQ6Ty07329wkCFpT2F/GkVfWxTf/QUrXe7V57iXF2pkThMIC+C8lpboi+pRKBw"}}, "unsigned": {"age_ts": 1570041967407}}keQac$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1687}{"auth_events": ["$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "type": "m.room.power_levels", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"users": {"@anon-20191002_181700-324:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041966071, "hashes": {"sha256": "OvHanAiKyTa5fsKqfTWak4DP2pjxoHSbnO2qV0t5zZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QkzNzGNNSZv/d4/Dyq+fPCen4DGCZG18tQQxAGqO6z2cUwXobaPw8zw428s0Sx20OOAMtP51/9giMgXzQ2rICA"}}, "unsigned": {"age_ts": 1570041966071}}veQay$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1686}{"auth_events": ["$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8"], "prev_events": ["$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8"], "type": "m.room.member", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-324", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-324:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041964959, "hashes": {"sha256": "gE2czwhD6NK0qJpgQRSvhXb+CGShR8WQf6S57pNS4T0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rULkH+Kpjy+bA2o1tZv91ZaMJqQ30UO6hveDuN2iFgZYrlYXcrt7t5HIALeIsQcKsmYKtSGbadoYIt3Gf0qlAw"}}, "unsigned": {"age_ts": 1570041964959}}ieQa_$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1685}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-324:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041964262, "hashes": {"sha256": "g7aWy1IZK8lTioQZu8CBJc69CCa+zfRW5fc5KJ003MY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/VVjxJ5w41yscBzz0ttodElN5rS6uF0L+AIkrkTSOvkuKi9xF6qDfl5wfV/8IFcGcB9T/vQw0DndtdZCBfpyCg"}}, "unsigned": {"age_ts": 1570041964262}} "q) 4 9 ] h +U}@EitgCQ/ e?!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rules$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MiBQ3 e>!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI AQ']e=!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwc@Q' eQ/ e:!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rules$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0si=Q3 e9!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po <Q']e8!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQc;Q' e7!nftGLlLhVgzOwOFufp:localhost:8800m.room.create$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqoo:Q? e6!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibility$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMg9Q/ e5!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rules$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYi8Q3 e4!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas 7Q']e3!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kc6Q' e2!raCWVWQGnXbmkexpCN:localhost:8800m.room.create$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQo5Q? e1!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibility$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wg4Q/ e0!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rules$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Mi3Q3 e/!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g 2Q']e.!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gc1Q' e-!kwJgbtogEzCqYbUXfh:localhost:8800m.room.create$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIo0Q? e,!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibility$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40g/Q/ e+!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rules$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0i.Q3 e*!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg -Q']e)!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgc,Q' e(!JZouHBRxCRbcxYJnbn:localhost:8800m.room.create$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98o+Q? e'!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgg*Q/ e&!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rules$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lki)Q3 e%!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro (Q']e$!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQc'Q' e#!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88 &Q']e"!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9go%Q? e!!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibility$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcg$Q/ e !EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rules$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8i#Q3 e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc "Q']e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c #KJsHwL! s H  u J # mB )Fq {D y No P % FoDu}q  w  u J # wT*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800!!*Q!aHyAJEOSdKqTiRjOvw:localhost:8800  *Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 & &*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + +*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * **Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) )*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( (*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' '*Q!ZaltdIYVZjCHsCWTZD:localhost:8800T*Q!aHyAJEOSdKqTiRjOvw:localhost:8800""*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800 9Ir; ! N }  g , z = Kx5<JOaNw@' 6Q' !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create ^Q']!PVy:Q/ !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rules BQ? !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibility 6Q' !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create <Q3 !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levelso^Q']!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800m:Q/ !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rulesqBQ? !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibilitys6Q' !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.createl;Q3 !QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels \Q'[!QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800 9Q/ !QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rules AQ? !QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibility ;Q3 !QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_access 5Q' !QZhNrNpwObZGJZpdAG:localhost:8800m.room.create<Q3 !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels ^Q']!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800 ^Q']!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800 :Q/ !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rules BQ? !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibility 6Q' !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create <Q3 !QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels^Q']!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800^Q']!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800:Q/ !QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rulesBQ? !QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibility6Q' !QMrkSPlQDGborAyWtQ:localhost:8800m.room.create<Q3 !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels^Q']!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800:Q/ !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rulesBQ? !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility<Q3 !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access6Q' !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.create<Q3 !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels ^Q']!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800 RQ'E!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455 :Q/ !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rules BQ? !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility 6Q' !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.create <Q3 !PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels L^Q']!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800 KRQ'E!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455 O:Q/ !PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules MBQ? !PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibility N6Q' !PgNDjhhIBAXKryuGKy:localhost:8800m.room.create J<Q3 !PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels^Q']!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829^Q']!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800:Q/ !PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rulesBQ? !PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility<Q3 !PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_access6Q' !PcvmCDeVUSyJbXpTig:localhost:8800m.room.create<Q3 !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels ^Q']!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800 :Q/ !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rules BQ? !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibility 6Q' !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create <Q3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels 8l D `8J]c!E@anon-20191002_181700-332:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-goTBDDBAQUGP127.0.0.1Perl + Net::Async::HTTP/0.44mI]c!E@anon-20191002_181700-331:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAoCOONNUXFOL127.0.0.1Perl + Net::Async::HTTP/0.44m$H]c!E@anon-20191002_181700-330:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwoTFGJMHITUL127.0.0.1Perl + Net::Async::HTTP/0.44mͺG]c!E@anon-20191002_181700-329:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgoKKMPVZBDLS127.0.0.1Perl + Net::Async::HTTP/0.44m˟eF]c!E@anon-20191002_181700-328:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgoDZKGSTQGUO127.0.0.1Perl + Net::Async::HTTP/0.44mˈ E]c!E@anon-20191002_181700-327:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0QoWQCLQHKZHC127.0.0.1Perl + Net::Async::HTTP/0.44mnԃD]c!E@anon-20191002_181700-326:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0AoYBIXYTHJYT127.0.0.1Perl + Net::Async::HTTP/0.44mPC]c!E@anon-20191002_181700-325:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggoCDWNGKHJGS127.0.0.1Perl + Net::Async::HTTP/0.44mHB]c!E@anon-20191002_181700-324:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAoKKATIXOBNF127.0.0.1Perl + Net::Async::HTTP/0.44m&A]c!E@anon-20191002_181700-323:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_RagoBHOVENVWZC127.0.0.1Perl + Net::Async::HTTP/0.44m  wieQa_$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1692}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-326:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041975780, "hashes": {"sha256": "DgI37ZML5o/ZDp5vugiDtfY7r7yg8kIfj7DlFppVlhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FlrddhrKIa9o5EnYH5TVg69fxwP6Ljmcn5QIOYezo5U3CV4ZL7tKWiW/QZ/lWaRWFVM+52F5X4nIZh8Q7P/tDw"}}, "unsigned": {"age_ts": 1570041975780}}VeQa9$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 344, "stream_ordering": 1691}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8"], "prev_events": ["$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY"], "type": "m.room.member", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-325:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-325", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-325:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041972792, "hashes": {"sha256": "Nf/J4yzaiRvEz+KTRCTa5bqc/8a7ZSEHAlb4i2oEfbc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "boT+xmwUY3qcMda9EMpRv63ogVHGbzjqusXIgmaI+Aai/n3KeXYGxjBDpiTp3Dq7zUD/NFe4sLOBge/zVOFFCQ"}}, "unsigned": {"age_ts": 1570041972792}}AeQk$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "txn_id": "166", "stream_ordering": 1690}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc"], "type": "m.room.message", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"msgtype": "m.text", "body": "Wait for presence changes caused by the first sync to trickle through"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041971250, "hashes": {"sha256": "RU3pMNOce2PqnyMcfr9m9z8AIfwLpR08ZrEKPw+7oAA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cPIFKCo33pq/BjlH319PJr4PxsKBU546rEhel+qnqcRfouCf0vk9oGbVYlsftBT+QgWGpHERTArSsEVPOLE3Ag"}}, "unsigned": {"age_ts": 1570041971250}}eQa$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1689}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8"], "type": "m.room.history_visibility", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041968947, "hashes": {"sha256": "G3C5OkOmWuMqkXTsgcRf5ri7CVLUxGZnEg0Cttjuk2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fI+mF4ULQP3BOdBmjm0JCznw1kduTz57k73hKNn70MaiWnf3LTYNlOqhZgcgw3quXVMgGVJphEzl69/HLe/IBg"}}, "unsigned": {"age_ts": 1570041968947}} FUOU8p>  v D  | J  j Q  W % ] +c1i7o= uC{I[)1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk b1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ R1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc~1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw 1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Ek1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI %1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdkv1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdku1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdkt1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc~1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE 1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k j1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ l1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAS1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYZ1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU21e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck g1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 71e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 c1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs11e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoC1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E 1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ  "z . T W y  7@h&LOq z Q']e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAdQ' e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.create$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUpQ? e!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibility$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1IhQ/ e!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rules$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MjQ3 e!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI Q']e!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwdQ' e!kjueCKHmYaYefEEpQY:localhost:8800m.room.create$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8op~Q? e!nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibility$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8h}Q/ e!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rules$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0sj|Q3 e!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po {Q']e!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQdzQ' e!nftGLlLhVgzOwOFufp:localhost:8800m.room.create$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqopyQ? e!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibility$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMhxQ/ e!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rules$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYjwQ3 e!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas vQ']e!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kduQ' e!raCWVWQGnXbmkexpCN:localhost:8800m.room.create$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQptQ? e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibility$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9whsQ/ e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rules$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5MjrQ3 e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g qQ']e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gdpQ' e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.create$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIpoQ? e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibility$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40hnQ/ e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rules$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0jmQ3 e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg lQ']e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgdkQ' e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.create$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98pjQ? e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEghiQ/ e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rules$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-LkjhQ3 e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro gQ']e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQdfQ' e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88 eQ']e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gpdQ? e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibility$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc ,NC 8 - { " p  e ZOD9.|#qf VDeL$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8sha2561I=糪I?VٱCFRw2yzx@AVCeL$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0ssha256;-sJ#|=Gb1opKKOKVBeL$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_posha256]cK{| c%GBd&@VAeL$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQsha256L MB*?q;v92#/V@eL$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqosha256+N`YN9~T̋z>gAJV?eL$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0sha256>˾ Cn49g&NvOD=V>eL$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hgsha2565D?Ρ3=EeI͑LǐνuCxV=eL$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtksha256RԴrxU;$޼oג vV<eL$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgsha256aX,?Ɖ74njfO3,V;eL$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igsha2565ъURa&}IkE3T(V:eL$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Iksha256 ӕwDGPֲ.#ƖѠo摞V9eL$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZosha256KP{ʖBjV8eL$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgsha256yܘ$o!~ه4|ęk̷ :V7eL$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qgsha256ia̷ͽyYp^H*Hͨg (b]!LGMV4eL$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Qsha256X1w׶ #"**2 NV3eL$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMsha256<[n1-C3\Ib$鬷*s*CP#V2eL$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYsha256sVɍy}y%>gY 56Кފ1y&V1eL$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbassha256"kP )k `BPzmV0eL$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-ksha256}yνƀ )tZ@ZV/eL$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQsha256b x{׾AcSհD-V.eL$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcsha256$nfnjpG s!sV-eL$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcsha256nh[jAV:ssugV,eL$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wsha256i$Ueo%DIi"/V+eL$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Msha256^VN?1Ysc0pλ8VMSǓV*eL$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gsha256+`]%%/%:|~Ǝ^ÈV)eL$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gsha256ɡ#W@[Z'M\4'V(eL$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIsha256(͇Y﹌ml'V'eL$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gsha256&giN:W̋NaOr&Ta[CV&eL$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40sha256y:ጆ:ר_K=!>0‡V%eL$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0sha256aWl̟cVR{9t(V>]V$eL$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgsha256)B&-gFme֓|l{Β_8V#eL$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgsha256LlLP}g&+-8xV:%6V"eL$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98sha256Axg[1R -k}ڝX/V!eL$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYsha256%ke@L g*$&b˺ޗIV eL$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZksha25673#-hf( 9;^(0Vc4M 5VeL$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgsha256ԯ,mvD?PA?HVeL$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lksha256MrWlX"W['ȚlVeL$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jArosha256h;,sk#v=5 oOVeL$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQsha2562Fwkߨ˲݄\DVeL$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88sha256Փ+9[sQfe[˄%VeL$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gsha256,J[gج[PT1FhVeL$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYsha256#a\3W𡔷m2/ɍc#O}1[& KIbBQ V $j8p+0>  t v D  \ * | J  ]h6n<W% P  1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo)1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4 1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo+1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo*1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo 1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo 1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo 1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQT1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQS1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQr1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQq1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE#1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE"1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMq1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE 1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 !1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4 1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78 LW $ \ 4 n F ypH ~h@ V /  xP)a9 qI!Y1 iAQ)c<`8rOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800&Q!XgobMgBjNcDRJnRXLD:localhost:8800[&Q!XgobMgBjNcDRJnRXLD:localhost:8800Z&Q!XgobMgBjNcDRJnRXLD:localhost:8800Y&Q!XgobMgBjNcDRJnRXLD:localhost:8800X'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800('Q!XNfwczePlyYFWLCaui:localhost:8800''Q!URpLZLuBfVcfHVTBGS:localhost:8800Y'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800v'Q!WpThtNEVhrUbUdCdMJ:localhost:8800u'Q!WpThtNEVhrUbUdCdMJ:localhost:8800t'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800\'Q!WhqVaRReBxJXADAyYD:localhost:8800['Q!WhLedNwPGGGTtqeqam:localhost:8800)'Q!WhLedNwPGGGTtqeqam:localhost:8800('Q!WhLedNwPGGGTtqeqam:localhost:8800''Q!WYyiQAVvitxsLZKVCG:localhost:8800<'Q!WYyiQAVvitxsLZKVCG:localhost:8800;'Q!WYyiQAVvitxsLZKVCG:localhost:8800:'Q!WWZVpyLeZfyfpWidLx:localhost:8800'Q!WWZVpyLeZfyfpWidLx:localhost:8800'Q!WWZVpyLeZfyfpWidLx:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800v'Q!VUibrTIkcRbfrogbQV:localhost:8800y'Q!VUibrTIkcRbfrogbQV:localhost:8800x'Q!VUibrTIkcRbfrogbQV:localhost:8800w 'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:8800\'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800I'Q!VOhMAiLfKyTOZbmKGw:localhost:8800H'Q!VCSCNemqikJZiRtxrs:localhost:8829&Q!VAEDgDJVqmxXZyAlSW:localhost:8800h&Q!VAEDgDJVqmxXZyAlSW:localhost:8800g'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800s'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:88003&Q!TleKOyAElrpgyyrAQA:localhost:88002'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800r'Q!VNdqhtoDkyMoQdMTtM:localhost:8800j'Q!WgXzOXLTeqaGfiDFhL:localhost:8800_'Q!URpLZLuBfVcfHVTBGS:localhost:8800['Q!URpLZLuBfVcfHVTBGS:localhost:8800Z'Q!YaLuQzmJKSMTSFEqjO:localhost:8800X'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829 7L= V u$C +> J* {J1 P\ipj8  v D  c | P   V $ ]o1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA 1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8M1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg11e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS080e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA41e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0.1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsp1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0P1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0h1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ F1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 21e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA W1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 11e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wS1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegR1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I.1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg c1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA L1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssS1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo 80e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30E1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREC1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUl1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEW1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0(1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM 1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU]1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4;1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A41e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 21e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYi1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc 7L= V u$C +> J* {J1 P\ipj8  v D  c | P   V $ ]o1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA 1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8M1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg11e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS080e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA41e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0.1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsp1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0P1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0h1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ F1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 21e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA W1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 11e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wM1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegL1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I(1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg a1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA J1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssS1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo 80e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30E1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREC1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUl1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEW1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0(1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM 1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUW1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4;1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A41e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 21e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYi1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc #,1 Y d " - [$PU}FQe:eQ/ $yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rulesg9eQ3 $pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels 8eQ']$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800joina7eQ' $8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800m.room.createm6eQ? $IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibilitye5eQ/ $rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rulesg4eQ3 $5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels 3eQ']$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800joina2eQ' $4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.createm1eQ? $_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibilitye0eQ/ $Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rulesg/eQ3 $_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels .eQ']$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800joina-eQ' $VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800m.room.createm,eQ? $MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibilitye+eQ/ $O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rulesg*eQ3 $ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels )eQ']$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800joina(eQ' $K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800m.room.createm'eQ? $PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibilitye&eQ/ $c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rulesg%eQ3 $5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels $eQ']$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800joina#eQ' $Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800m.room.createm"eQ? $aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibilitye!eQ/ $yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rulesg eQ3 $3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels eQ']$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800joinaeQ' $GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800m.room.createmeQ? $n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibilityeeQ/ $4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rulesgeQ3 $KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels eQ']$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800joinaeQ' $EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800m.room.createmeQ? $2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility } r}v#eQay$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1700}{"auth_events": ["$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98"], "prev_events": ["$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98"], "type": "m.room.member", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-327", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-327:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041983960, "hashes": {"sha256": "+73NBFv2Fd00k0bkQC7tYRcGsMaVsLDmo5zL6qOcGaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EhFp8ohk6RF+nJz1u15+um/vxJwLvFw5PytMEGAtSeuKOGdDwMn6iZPsuTY0vZfpU6uSLjUgi+wwm+DH6RzXAA"}}, "unsigned": {"age_ts": 1570041983960}}i"eQa_$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1699}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-327:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041982846, "hashes": {"sha256": "v9bbXhejZLOSMcAZORKKNfdAmFhJse+IWNXOh1J//Jw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rnadgrqMYtg4xyXED2hv6FVPALTIEr1q18l2R1GxeZB3EZXP2F9aPEnfkGiDUeJGHxMAJQ6IItuhv7oZyJ8HCA"}}, "unsigned": {"age_ts": 1570041982846}} !eQ}$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "txn_id": "168", "stream_ordering": 1698}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk"], "type": "m.room.message", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"body": "Test message 2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041981530, "hashes": {"sha256": "oMuUifZ/FxYnF+A7PFOeDXlL+DUgiMQVmPDgLleFuOI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SPpnYjalJ9Lf1C3IKKHktVYtcRM1bYM3S3VTNsWOPvCmusTyMYUaXvF3cUuik7IIupGjFYD2ypmIAJadlSMEAg"}}, "unsigned": {"age_ts": 1570041981530}} eQ}$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "txn_id": "167", "stream_ordering": 1697}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg"], "type": "m.room.message", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"body": "Test message 1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041980739, "hashes": {"sha256": "D14FxMz4LVjD9USeVNK8MABM5ljZ16pMRjVIcqRqKPc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpkybXh5V5oUyJ9cAsrFlitBp5qTsE8CjhfrrI1CXhhhaKGlOxqrg0wQTzapwkqgGpARANQQX9rf5kjo3nvpBw"}}, "unsigned": {"age_ts": 1570041980739}}   *t_eQau$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1760}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ"], "type": "m.room.join_rules", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042034525, "hashes": {"sha256": "gWUUPDK5aY4IjTujiAb0F/nY19tYnBsdsfA+1orf1rs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "heBNSrnNsLFSgmjsRBcNtukAFOTrAHO7GHgCY3yKhEqwP77IXDai6M7I+URuYXkeupYp0y7X5txckEAjmTLbAg"}}, "unsigned": {"age_ts": 1570042034525}}k^eQac$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1759}{"auth_events": ["$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "type": "m.room.power_levels", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"users": {"@anon-20191002_181700-333:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042033752, "hashes": {"sha256": "dA7K3d/sJwVvblupqJ9ibXfSrLvuPG3nUobHQ9yRLzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+WWBXDPOzUKK3tR1xSrbkvetirotQBELcmNKL40JW4PyGee+sgDMYwtPHazpVibnD5EE/jX3DDjvEDcnWy6fBw"}}, "unsigned": {"age_ts": 1570042033752}}v]eQay$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1758}{"auth_events": ["$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI"], "prev_events": ["$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI"], "type": "m.room.member", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-333", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-333:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042033064, "hashes": {"sha256": "jr2WGyKELEQYdejYUgjdN3X8+xM3xRVvuh64ErbIkxk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xa9pJ3VhdZEC+l/dwhkrA56VNa0x3ByxXyJrGHXIE1QN6boVTEGECgKdtQqBmYl4y5zCRfoYZ1R8js+wAHnuCA"}}, "unsigned": {"age_ts": 1570042033064}}i\eQa_$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1757}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-333:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042032391, "hashes": {"sha256": "AM9A6iML0YlzOyUfr6K+otQAtaTAAR8mgmvu/Gsie0o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hObXGlc20CEUfy8gnNdT/UQKVoo4ZVh6OKXiLWUP3kZmyqZziTnl+v8R044YkMUWmSVh8Ha5u/TRykYbGuC9BA"}}, "unsigned": {"age_ts": 1570042032391}} C  T  q 8 8  T  q p 7  S p7S7p8Tp7SUpSr8e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswsha256 (8e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2osha2568e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQsha256 P8e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUcsha256 &8e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNksha256 8e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMsha256 8e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8sha256 ,8e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAsha2567e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYsha2568e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgsha2568e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVosha2568e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgsha2568e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNssha2568e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8sha256 8e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8sha2568e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8sha2568e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEsha256`8e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4sha2568e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0sha2568e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAsha256p8e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gwsha2568e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjssha2568e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4sha2567e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYsha256p8e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aosha2568e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGosha2567e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4csha2568e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMsha2568e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUsha2568e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeEsha2568e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4sha256 b8e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00sha2568e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLosha2567e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjYsha2568e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIsha2568e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vksha256i8e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0sha256i8e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgosha2568e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64sha256 e8e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQksha2568e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQsha256"8e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgsha256%8e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9osha2568e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVIsha2568e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvssha256 88e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEksha2568e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bssha2568e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0sha2568e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIsha25618e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEksha256(8e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4sha256}8e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4sha256w8e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwsha25688e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMsha2567e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepwsha256(8e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngsha256C8e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQsha25698e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8sha2568e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0sha256 8e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNksha256 8e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9Asha256 8e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Esha2568e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYsha256 8e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQsha256 `8e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7osha256 X8e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Ysha256 8e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7Asha256 X8T)}R' { P % y N # w L ! u J  s H qFoDmBk@i>g<e:c8*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hFwigdYZkwYNSwelRH:localhost:8800 f *Q!hFwigdYZkwYNSwelRH:localhost:8800 Y *Q!hFwigdYZkwYNSwelRH:localhost:8800 X *Q!hFwigdYZkwYNSwelRH:localhost:8800 W *Q!hFwigdYZkwYNSwelRH:localhost:8800 V *Q!hFwigdYZkwYNSwelRH:localhost:8800 U *Q!hFwigdYZkwYNSwelRH:localhost:8800 T *Q!hFwigdYZkwYNSwelRH:localhost:8800 S *Q!hFwigdYZkwYNSwelRH:localhost:8800 R *Q!hDAzBWYEyRVBRlrCHh:localhost:8800=*Q!hDAzBWYEyRVBRlrCHh:localhost:8800<*Q!hDAzBWYEyRVBRlrCHh:localhost:8800;*Q!hDAzBWYEyRVBRlrCHh:localhost:8800:*Q!hDAzBWYEyRVBRlrCHh:localhost:88009*Q!hDAzBWYEyRVBRlrCHh:localhost:88008*Q!hDAzBWYEyRVBRlrCHh:localhost:8800 7*Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!fuHSJcznvGQnoYoLPW:localhost:8800.4*Q!fuHSJcznvGQnoYoLPW:localhost:8800-3*Q!fuHSJcznvGQnoYoLPW:localhost:8800,2*Q!fuHSJcznvGQnoYoLPW:localhost:8800+1*Q!fuHSJcznvGQnoYoLPW:localhost:8800*0*Q!fuHSJcznvGQnoYoLPW:localhost:8800)/*Q!fsbkkRBZlUcBVVfMME:localhost:8800>D*Q!fsbkkRBZlUcBVVfMME:localhost:8800=C*Q!fsbkkRBZlUcBVVfMME:localhost:8800<B*Q!fsbkkRBZlUcBVVfMME:localhost:8800;A*Q!fsbkkRBZlUcBVVfMME:localhost:8800:@*Q!fsbkkRBZlUcBVVfMME:localhost:88009?*Q!fkvdYkesQOFCAQkzky:localhost:8800 6*Q!fkvdYkesQOFCAQkzky:localhost:8800 5*Q!fkvdYkesQOFCAQkzky:localhost:8800 4*Q!fkvdYkesQOFCAQkzky:localhost:8800 3*Q!fkvdYkesQOFCAQkzky:localhost:88002*Q!fkvdYkesQOFCAQkzky:localhost:88001*Q!ffijTnPMbTrDXHqOXf:localhost:8800lr*Q!ffijTnPMbTrDXHqOXf:localhost:8800kq*Q!ffijTnPMbTrDXHqOXf:localhost:8800jp*Q!ffijTnPMbTrDXHqOXf:localhost:8800io*Q!ffijTnPMbTrDXHqOXf:localhost:8800hn*Q!ffijTnPMbTrDXHqOXf:localhost:8800gm*Q!ffijTnPMbTrDXHqOXf:localhost:8800fl*Q!ffijTnPMbTrDXHqOXf:localhost:8800ek*Q!ffijTnPMbTrDXHqOXf:localhost:8800dj*Q!ffijTnPMbTrDXHqOXf:localhost:8800ci*Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fOJLpnbtgKNxxVDquX:localhost:8800ns*Q!fOJLpnbtgKNxxVDquX:localhost:8800mr*Q!fOJLpnbtgKNxxVDquX:localhost:8800lq*Q!fOJLpnbtgKNxxVDquX:localhost:8800kp*Q!fOJLpnbtgKNxxVDquX:localhost:8800jo*Q!fOJLpnbtgKNxxVDquX:localhost:8800in*Q!fOJLpnbtgKNxxVDquX:localhost:8800hm*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800  'eQ}$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "txn_id": "my_transaction_id", "stream_ordering": 1704}{"auth_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg", "$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40"], "type": "m.room.message", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"body": "A test message", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041987444, "hashes": {"sha256": "OabbYqG1Raisiby1VFFKVVVSQCSzclKXIQF3I2ixIZ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "db78/YITF1IsZ8Y536maRJd26KTbxX62V87Uicaxbnouk+vUvNOElH4P8o/blUtFLjCgUFiGC69Yah0O4lwnDg"}}, "unsigned": {"age_ts": 1570041987444}}&eQa$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1703}{"auth_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg", "$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0"], "type": "m.room.history_visibility", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041986257, "hashes": {"sha256": "A8hYna0MlAvaoKD7sux3lcQbxW6XJbcNRiaLQfIGFng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uiOS6GXKr5HQb/NL+X9QkVXmj3II7WwHnpf26ZU3MnC9lZmj8GSfUsYqZ7eE/KQ6/dECobujVy+R+p2rfN+ZDg"}}, "unsigned": {"age_ts": 1570041986257}}t%eQau$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1702}{"auth_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg", "$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg"], "type": "m.room.join_rules", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041985583, "hashes": {"sha256": "zBaVOafHi6q3Pq7S7MqkZGrCfC1ipi0zvlP2EfkbKfY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lGrqv9lhoxnN9uogC38c9kX01bgk7OkXThOKFrJDkHgC6FKsgZI/ZfmaDt1GzK/dUz7ApAr40WjTaBMiJbLgAQ"}}, "unsigned": {"age_ts": 1570041985583}}k$eQac$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1701}{"auth_events": ["$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "type": "m.room.power_levels", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"users": {"@anon-20191002_181700-327:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041984717, "hashes": {"sha256": "BwUrjdu37hPOtBp1STdTlRS1vjazmy7s63LVYQMHokk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AXTO8qv7N7pgaq1ohgFOCejaEwZz3fPK6QnJqbf44Kv7wpTDbq/eM0IiQU5drhNPmhOPbDbGPVNS9yOoqjKADw"}}, "unsigned": {"age_ts": 1570041984717}} X a  k  t.,/+(<e7Q ] $jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6iga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˼xm˾4@anon-20191002_181700-329:localhost:8800(;e7Q ] $gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ika.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˻:m˼|@anon-20191002_181700-329:localhost:8800(:e7Q ] $lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoa.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˹m˺@anon-20191002_181700-329:localhost:8800(9e7Q ]$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˸Im˹@anon-20191002_181700-329:localhost:8800(8e7Q ]$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˶m˷l@anon-20191002_181700-329:localhost:8800(7e7Q ]$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4Ma.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˴m˵@anon-20191002_181700-329:localhost:8800(6e7Q ]$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00a.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˴m˴ @anon-20191002_181700-329:localhost:8800!5e)Q ]$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Qm.room.message!raCWVWQGnXbmkexpCN:localhost:8800m˱m˱@anon-20191002_181700-329:localhost:8800,4e?Q ]$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMm.room.history_visibility!raCWVWQGnXbmkexpCN:localhost:8800mˬmˮ@anon-20191002_181700-329:localhost:8800$3e/Q ]$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYm.room.join_rules!raCWVWQGnXbmkexpCN:localhost:8800m˩m˪@anon-20191002_181700-329:localhost:8800&2e3Q ]$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbasm.room.power_levels!raCWVWQGnXbmkexpCN:localhost:8800m˧+m˨)@anon-20191002_181700-329:localhost:8800 1e'Q ]$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-km.room.member!raCWVWQGnXbmkexpCN:localhost:8800mˤSmˤ@anon-20191002_181700-329:localhost:88000 e'Q  ]$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQm.room.create!raCWVWQGnXbmkexpCN:localhost:8800mˡmˡ@anon-20191002_181700-329:localhost:8800!/e)Q ]$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcm.room.message!kwJgbtogEzCqYbUXfh:localhost:8800m˛m˛@anon-20191002_181700-328:localhost:8800.e#Q ]$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcm.room.test!kwJgbtogEzCqYbUXfh:localhost:8800m˘m˘@anon-20191002_181700-328:localhost:8800,-e?Q ]$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wm.room.history_visibility!kwJgbtogEzCqYbUXfh:localhost:8800m˔!m˕@anon-20191002_181700-328:localhost:8800$,e/Q ]$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Mm.room.join_rules!kwJgbtogEzCqYbUXfh:localhost:8800mˑm˒Z@anon-20191002_181700-328:localhost:8800&+e3Q ]$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gm.room.power_levels!kwJgbtogEzCqYbUXfh:localhost:8800mˎmˏ@anon-20191002_181700-328:localhost:8800 *e'Q ]$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gm.room.member!kwJgbtogEzCqYbUXfh:localhost:8800mˋmˍ@anon-20191002_181700-328:localhost:8800) e'Q  ]$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIm.room.create!kwJgbtogEzCqYbUXfh:localhost:8800mˈmˉ:@anon-20191002_181700-328:localhost:8800!(e)Q ]$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gm.room.message!JZouHBRxCRbcxYJnbn:localhost:8800mˁtmˁx@anon-20191002_181700-327:localhost:8800,'e?Q ]$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40m.room.history_visibility!JZouHBRxCRbcxYJnbn:localhost:8800m|m~@anon-20191002_181700-327:localhost:8800$&e/Q ]$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0m.room.join_rules!JZouHBRxCRbcxYJnbn:localhost:8800mz/mz@anon-20191002_181700-327:localhost:8800 a} { y w u sqomkigeca~OeeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800~NeeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~MeeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800~LeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800~KeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~JeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800~IeeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800~HeeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~GeeQ$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~FeeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800~EeeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~DeeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800~CeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800~BeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~AeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800~@eeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800~?eeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~>eeQ$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~=eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800~<eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~;eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800~:eeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800~9eeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~8eeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800~7eeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800~6eeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~5eeQ$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~4eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800~3eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~2eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800~1eeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800   *t+eQau$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1708}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g"], "type": "m.room.join_rules", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041991557, "hashes": {"sha256": "UPOZCCwNflN9sh1BfzCjajmf3H3a55IkY6ZS5iI7hSI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mdls60wka6G4KzOSBcY/mA0o/41UjqWVU+X88SNmBVu7X47R71wENqCQVbVVUrZwxO92toqIii6GRutXDb2aAg"}}, "unsigned": {"age_ts": 1570041991557}}k*eQac$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1707}{"auth_events": ["$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "type": "m.room.power_levels", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"users": {"@anon-20191002_181700-328:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041990842, "hashes": {"sha256": "iudijkmTHrueSyuMbJYk7cqoGYt6N9K+WOwV5tjfBvw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "26TiGdHEXIM+eqzZlCVUFysWiFbtjwQfPa9H+dlfC/wxr157Ku9O4iuRdiCub3bjYpkArXY1pj80YIRuPF4fBQ"}}, "unsigned": {"age_ts": 1570041990842}}v)eQay$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1706}{"auth_events": ["$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII"], "prev_events": ["$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII"], "type": "m.room.member", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-328", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-328:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041990121, "hashes": {"sha256": "lbdN9T1XB095vaQqShwjjATg6vYjtVKQMmCYX66/Yy8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OLk4AiHbjJmctwTY2djLH2Jq3euv2HYFleiWh4966dQdkOELMFYS7uke8Fnodlls7y+zLtg5uBPKXWGmAeOvDA"}}, "unsigned": {"age_ts": 1570041990121}}i(eQa_$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1705}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-328:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041989299, "hashes": {"sha256": "sgQD7CtMXffuvD+xJyMz7MRMZXZ7Zt9eaDP19IdebdE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/H+96UftAXT429npWRv4h0ukg71XXHKenPI8lOlPyzuAHzyAzjTsOEQxoe6cMo6TyS9+SjaXHSjRHdvxQOmnCA"}}, "unsigned": {"age_ts": 1570041989299}}  w +i/eQa_$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1712}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-329:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041995550, "hashes": {"sha256": "pVHJW2l1pg/BQRAOS6WG8XpemtDZA6EuOUq97SqqSvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OYIaFtcaLOGGZHaleE9iUcMBIyMdayBzbKEi6FFlrcl1FJChlR3N6F9HKeJQx2MpVaeHeA5hdUCTluQrp3DcCQ"}}, "unsigned": {"age_ts": 1570041995550}}.eQ}$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "txn_id": "my_transaction_id", "stream_ordering": 1711}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc"], "type": "m.room.message", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"msgtype": "m.text", "body": "A test message"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041994141, "hashes": {"sha256": "oj5HDPrmSmnd28AqElVv0dGbBKMmIrC4BWXr17GSF6k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KK5v2auzCJXwG/soIiI+gfTvJFve1AUhrKmH96B1CbV28oy6IZHwE9zpGjZ1VLhNYMf2IXqSAihm7nWv32kWCA"}}, "unsigned": {"age_ts": 1570041994141}}H-eQa$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1710}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w"], "type": "m.room.test", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041993423, "hashes": {"sha256": "dLAsVtGXLFOwTuupuF3khp5xYphZFX6DnCiu55uAwww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aPWg4OrQrv32CW00yf1TxcmJUnTPO3u1z+vFTlgInG92K5ewjShNa9ZkRI4Fa57zRRNPJrpPnojBvfA8e4w9CA"}}, "unsigned": {"age_ts": 1570041993423}},eQa$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1709}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M"], "type": "m.room.history_visibility", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041992225, "hashes": {"sha256": "Ow0XsxHisi/Z11ShxD4MeYIVw8FgjDC5RIzrWrcpyTY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MBZClOp9oTuT4K5XaPha+t4N2VWFsthoq+QsYBIh/yx7AGSd9wGRUvoBdeQ+UxMVCmtffYN8u+wnAOxfzpq3AA"}}, "unsigned": {"age_ts": 1570041992225}}  4 h 9mfd]c@anon-20191002_181700-352:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAo127.0.0.1]d]c@anon-20191002_181700-351:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgo127.0.0.1[d]c@anon-20191002_181700-350:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwo127.0.0.1Za[a@anon-20191002_181700-34:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCg127.0.0.1d]c@anon-20191002_181700-349:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3Grbcgo127.0.0.1Yd]c@anon-20191002_181700-348:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwo127.0.0.1Xd]c@anon-20191002_181700-347:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQo127.0.0.1Wd]c@anon-20191002_181700-346:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgo127.0.0.1Vd]c@anon-20191002_181700-345:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgo127.0.0.1Ud]c@anon-20191002_181700-343:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQo127.0.0.1T  3eQa$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1716}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY"], "type": "m.room.history_visibility", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041998475, "hashes": {"sha256": "RkjMMrtfe1oCLxeexMYj10t1MsS+6WuQHYuJUVFbeCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i/BZkYsg4X+bxCsl7oXsSanFgIhY97AHrcb5zbpUQq8cWvpDZne+xn+aX/OL4TBkokhNulBGBQ0tacVqaPhhDg"}}, "unsigned": {"age_ts": 1570041998475}}t2eQau$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1715}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas"], "type": "m.room.join_rules", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041997774, "hashes": {"sha256": "QgobCRrb9wIMYCutQ66MNM0rmHmyou9RL+isRPHAjRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DqT5RDJ4SyZbuYZDjGYlS5Yg8GhQOrrF7HBCM5vGxbWvQv/pdY265FRXss53TmZIEH6075tFdyMYaYMebouqAw"}}, "unsigned": {"age_ts": 1570041997774}}k1eQac$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1714}{"auth_events": ["$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "type": "m.room.power_levels", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"users": {"@anon-20191002_181700-329:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041997099, "hashes": {"sha256": "OYfksItfHX7DMnsNYxMrd6WhXhXUAm0xpBI3/Q2VVjY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h9ZQaR7rZyp4NEH/FVMxSAkuybdunlrdvHauimJ/CMtRaHEP/w7Gl4iJQb641kDYADzJG/U/9aBl4awj3vafAQ"}}, "unsigned": {"age_ts": 1570041997099}}v0eQay$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1713}{"auth_events": ["$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ"], "prev_events": ["$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ"], "type": "m.room.member", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-329", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-329:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041996371, "hashes": {"sha256": "SeEhq4cyv8IK8/luFaifdpBdHO8UyceNgz+LnJopRAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f5Ypg4hmdCIW3dsaH6KIM8DyH+9YjcCXJV1MQMGMITUSHqXkDTzpYh3peOstnJfbU38GzTWmBPchC8HajO48DQ"}}, "unsigned": {"age_ts": 1570041996371}}  wuiceQa_$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1764}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-336:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042041342, "hashes": {"sha256": "EkR5N5djKCFdJ/401ImKMBY8sBpjfHoHXvcugj7PhPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kDVLTumlj3hkQyDbCynblrKZm35jWhpLSQiZ7IQl3ZMSpUGjKwWXW+Qg0ejhZm8fDoXhlHYIDRKuGQ8G/4MhCQ"}}, "unsigned": {"age_ts": 1570042041342}}}beQc$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "txn_id": "195", "stream_ordering": 1763}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y"], "type": "m.room.message", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"body": "2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042038075, "hashes": {"sha256": "AydnLgM6+OaqHM/aHYGSAc9JXG7DrkFzzdwDoJVpElg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "US4qmum9rCaYJsZTpSp+wKIcEL1cb0EpB5TMMdUDtdBGuPDQcflSW1Zntx8dbCz3zrNmsjJXhmoKWsXRhUG9Bg"}}, "unsigned": {"age_ts": 1570042038075}}}aeQc$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "txn_id": "194", "stream_ordering": 1762}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg"], "type": "m.room.message", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042037235, "hashes": {"sha256": "LPZcRcWzrpCM4FJniF0LpwM7XI/OhQ057P9qQudkvCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3ur9aIhhpm3UKaUBPeAYAMUm7VESXIiFsbK5dDC4hOaLpA2Xk6FE1ufoA+3DncA0prr0uHmnGGCOZuKk5rz0DA"}}, "unsigned": {"age_ts": 1570042037235}}`eQa$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1761}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA"], "type": "m.room.history_visibility", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042035168, "hashes": {"sha256": "dRcdVRDUwlWHNqhQMulECeQLIiMOM8ezngHwiS+5Mro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pG6qF4P52Yc7jjDOAHYj3xNwvBn72U1u72HH1cc/dHv9GFJj449TwVc5+jIIst/93bXlDWd1l0fQpR3K9UxcAg"}}, "unsigned": {"age_ts": 1570042035168}} -RM H C > 9 4/*|%w rmhc TlQe!kjueCKHmYaYefEEpQY:localhost:8800$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanATkQe!kjueCKHmYaYefEEpQY:localhost:8800$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4TjQe!kjueCKHmYaYefEEpQY:localhost:8800$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMTiQe!kjueCKHmYaYefEEpQY:localhost:8800$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMThQe!kjueCKHmYaYefEEpQY:localhost:8800$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0psTgQe!kjueCKHmYaYefEEpQY:localhost:8800$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXcTfQe!kjueCKHmYaYefEEpQY:localhost:8800$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0psTeQe!kjueCKHmYaYefEEpQY:localhost:8800$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAATdQe!kjueCKHmYaYefEEpQY:localhost:8800$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAATcQe!kjueCKHmYaYefEEpQY:localhost:8800$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOcTbQe!kjueCKHmYaYefEEpQY:localhost:8800$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBkTaQe!kjueCKHmYaYefEEpQY:localhost:8800$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1IT`Qe!kjueCKHmYaYefEEpQY:localhost:8800$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MT_Qe!kjueCKHmYaYefEEpQY:localhost:8800$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIT^Qe!kjueCKHmYaYefEEpQY:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwT]Qe!kjueCKHmYaYefEEpQY:localhost:8800$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8oT\Qe!nftGLlLhVgzOwOFufp:localhost:8800$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-MT[Qe!nftGLlLhVgzOwOFufp:localhost:8800$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8TZQe!nftGLlLhVgzOwOFufp:localhost:8800$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0sTYQe!nftGLlLhVgzOwOFufp:localhost:8800$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_poTXQe!nftGLlLhVgzOwOFufp:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQTWQe!nftGLlLhVgzOwOFufp:localhost:8800$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqoTVQe!raCWVWQGnXbmkexpCN:localhost:8800$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0TUQe!raCWVWQGnXbmkexpCN:localhost:8800$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0HgTTQe!raCWVWQGnXbmkexpCN:localhost:8800$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtkTSQe!raCWVWQGnXbmkexpCN:localhost:8800$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0HgTRQe!raCWVWQGnXbmkexpCN:localhost:8800$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgTQQe!raCWVWQGnXbmkexpCN:localhost:8800$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtkTPQe!raCWVWQGnXbmkexpCN:localhost:8800$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgTOQe!raCWVWQGnXbmkexpCN:localhost:8800$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igTNQe!raCWVWQGnXbmkexpCN:localhost:8800$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9IkTMQe!raCWVWQGnXbmkexpCN:localhost:8800$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igTLQe!raCWVWQGnXbmkexpCN:localhost:8800$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9IkTKQe!raCWVWQGnXbmkexpCN:localhost:8800$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoTJQe!raCWVWQGnXbmkexpCN:localhost:8800$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoTIQe!raCWVWQGnXbmkexpCN:localhost:8800$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgTHQe!raCWVWQGnXbmkexpCN:localhost:8800$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgTGQe!raCWVWQGnXbmkexpCN:localhost:8800$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6QgTFQe!raCWVWQGnXbmkexpCN:localhost:8800$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4MTEQe!raCWVWQGnXbmkexpCN:localhost:8800$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6QgTDQe!raCWVWQGnXbmkexpCN:localhost:8800$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4MTCQe!raCWVWQGnXbmkexpCN:localhost:8800$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00TBQe!raCWVWQGnXbmkexpCN:localhost:8800$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00TAQe!raCWVWQGnXbmkexpCN:localhost:8800$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6QT@Qe!raCWVWQGnXbmkexpCN:localhost:8800$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM  v o7eQG$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "172", "stream_ordering": 1720}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 3}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042001116, "hashes": {"sha256": "5K0Js78zBWWopRZ9maeWha2MXQ8DVfrrRjBAo1ppu58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DVXlfcdLId30gYfPW0c3KZ+hT4NZt/Uq52E0dIivaJ07UpgRZvMdGi7LnYuBiaPu2e2uUypSz9lVJne4WLQ6Bg"}}, "unsigned": {"age_ts": 1570042001116}}o6eQG$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "171", "stream_ordering": 1719}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 2}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042000392, "hashes": {"sha256": "RziDINJ8cTVmlpJG7o35fV5WjlO6PxPNmrtIeMKPmDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8wwgU8Eq7TJDeX0t4cgD7W4rPIcZ+W542gZMKoOyeHggKC8bnMDM8VggaRLrZLZ193aXoKHVTKgQVO73glY7Aw"}}, "unsigned": {"age_ts": 1570042000392}}o5eQG$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "170", "stream_ordering": 1718}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 1}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042000389, "hashes": {"sha256": "5lQ4G/QTyxdLsyKEYoO7LL+yu9cClbpzRUpsZDCbybg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3ZzhqNOn9sGpVdZUmROK/MRqVbtBjQ37Da32g2ULD/2gNWaO832qN2wUX1erTsoyrk65q8X/ubfWPyHy0/nXCQ"}}, "unsigned": {"age_ts": 1570042000389}}4eQu$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "169", "stream_ordering": 1717}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM"], "type": "m.room.message", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"body": "My message", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041999638, "hashes": {"sha256": "wQ5fbWzrwVktUHPsYLnbNBaxEdz664/rN6Qsn1NXFiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j/2RixOZC4yaeGtnWoINDGBblnf0GZ8iwb5QK3dsSP3yxEVmD4X6DJzINmE7wBWNK4/WCVVED9TGweQ/DsljBQ"}}, "unsigned": {"age_ts": 1570041999638}} ~z v r n j fb^ZVRNJF eeQ$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800eeQ$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800eeQ$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800eeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800eeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800eeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800eeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800eeQ$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk!raCWVWQGnXbmkexpCN:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800~eeQ$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800}eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800|eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800{eeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800zeeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800yeeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800xeeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800weeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800veeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800ueeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800teeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800seeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800reeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800qeeQ$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800peeQ$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800 s ]s ;eQ)$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "176", "stream_ordering": 1724}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg", "$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 7}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042002552, "hashes": {"sha256": "83r2G3kDD8NMlOrjJQJbjfTs5lNZSGtify54LyEO6q0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T3g61MY3YzRrzzu1XXVXQTQyg84WZhP0neMswlyEP5GaibjpzClYoE+gYXkz3dDoobWn/I02meDgoY6kwTyTBw"}}, "unsigned": {"age_ts": 1570042002552}}:eQ'$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "175", "stream_ordering": 1723}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg", "$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 6}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042002234, "hashes": {"sha256": "AnFGV8P+QNIm4xwkl3Zm5PXby7bBXMYm6vwb+tDAJ5M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XvT4ZfvS36j0hnui+nMtp+zVd2VDngknZdaTeIOZz/wT/T9Uoe7geOqFe9WXrpzqBpdeLhwO4wUZCs7gci5IBw"}}, "unsigned": {"age_ts": 1570042002234}}9eQ'$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "174", "stream_ordering": 1722}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M", "$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 5}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042001905, "hashes": {"sha256": "VmncAgS+B5tCiRY0eTV6F/Ch08bz0y9gjBfJMLdWlwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N3e+O723iP5iLICc4Jaos6IEB8IfBnHZUacgpNMeLsYYB2LIfoyKCPccn/QrxrOFHNw6NBg3XllSUdeUmR+3AA"}}, "unsigned": {"age_ts": 1570042001905}}8eQ'$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "173", "stream_ordering": 1721}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00", "$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 4}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042001481, "hashes": {"sha256": "6ATYnJxLRaWiwp1b1+iKaF40k2YSv/G04t5ysOZYdss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cqcwCuXYYkq++rqKFSto1UPyt9I+hdAmPeGq04RoI3trNtxTucde6VRQWSrtsspX5aM1WiDivFHwFyqC0B/zCw"}}, "unsigned": {"age_ts": 1570042001481}} n \n!?eQ+$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "180", "stream_ordering": 1728}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg", "$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 11}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042004963, "hashes": {"sha256": "Lf3Drfw6k+zbCe3UDxAXpv9Z3n6FlXvxRh/AQy6LKsA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LMsSV3Neb7nJ6Owmpqcu2GSeAWoU/VQiHREHWpSSCQha15vj/gfdYjVoxpgKGt79HA/Mb7xpr3VBnvIP5kCRCQ"}}, "unsigned": {"age_ts": 1570042004963}}!>eQ+$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "179", "stream_ordering": 1727}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig", "$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 10}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042004520, "hashes": {"sha256": "sXdZ0xGmjMcwPbPmo7Qo+GnqPU7tOd9Jo+gLBGDc5+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cifCNlz1vl4yjqem+CJbSfn9N0RPmoxAXUrhjbMypEHV9s2hnM864K5FTe+ohSniyuj8PvVMLQfKxd16XFt3Bw"}}, "unsigned": {"age_ts": 1570042004520}} =eQ)$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "178", "stream_ordering": 1726}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik", "$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 9}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042003734, "hashes": {"sha256": "fxAbE+NL9p3+n3MLufp5bvvp5mQ4JIK2sctU5z3SPlE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8sgrjxLtOQo/2aZqthtQg/FarqcYzyNW5j0/LB9ThtStULhyDKJN7xKVHVoG0phz02aQxflMqyefDSNROaDnDQ"}}, "unsigned": {"age_ts": 1570042003734}} <eQ)$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "177", "stream_ordering": 1725}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo", "$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 8}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042003147, "hashes": {"sha256": "4fUhCBtzWgB6FOtqECogmjKJOf5xSC75aSkCHdlDEXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ff/MmQqTH5whxZbRMzzr4YRtBM2mtx5Hd5fEDBZXIuMKnxVv78Qs4+yitWB28A7SBK6O3DGbqjTNdwNgn3QVCw"}}, "unsigned": {"age_ts": 1570042003147}} T P `  f v|$x t(Se7Q ] $slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanAa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 m lm B@anon-20191002_181700-331:localhost:8800(Re7Q ] $86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4a.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 mm @anon-20191002_181700-331:localhost:8800(Qe7Q ] $2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 mm@anon-20191002_181700-331:localhost:8800(Pe7Q ] $XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXca.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 m=m@@anon-20191002_181700-331:localhost:8800(Oe7Q ]$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0psa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800mm@anon-20191002_181700-331:localhost:8800(Ne7Q ]$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAAa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800mm@anon-20191002_181700-331:localhost:8800(Me7Q ]$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOca.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800mGmK@anon-20191002_181700-331:localhost:8800Le#Q ]$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBkm.room.test!kjueCKHmYaYefEEpQY:localhost:8800m m)@anon-20191002_181700-331:localhost:8800,Ke?Q ]$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1Im.room.history_visibility!kjueCKHmYaYefEEpQY:localhost:8800mDmB@anon-20191002_181700-331:localhost:8800$Je/Q ]$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5Mm.room.join_rules!kjueCKHmYaYefEEpQY:localhost:8800mmh@anon-20191002_181700-331:localhost:8800&Ie3Q ]$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIm.room.power_levels!kjueCKHmYaYefEEpQY:localhost:8800mImm@anon-20191002_181700-331:localhost:8800 He'Q ]$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwm.room.member!kjueCKHmYaYefEEpQY:localhost:8800m m@anon-20191002_181700-331:localhost:8800G e'Q  ]$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8om.room.create!kjueCKHmYaYefEEpQY:localhost:8800mMm@anon-20191002_181700-331:localhost:8800Fe#Q ]$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-Mm.room.test!nftGLlLhVgzOwOFufp:localhost:8800m+m1@anon-20191002_181700-330:localhost:8800,Ee?Q ]$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8m.room.history_visibility!nftGLlLhVgzOwOFufp:localhost:8800mmލ@anon-20191002_181700-330:localhost:8800$De/Q ]$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0sm.room.join_rules!nftGLlLhVgzOwOFufp:localhost:8800mXmT@anon-20191002_181700-330:localhost:8800&Ce3Q ]$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_pom.room.power_levels!nftGLlLhVgzOwOFufp:localhost:8800mm@anon-20191002_181700-330:localhost:8800 Be'Q ]$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQm.room.member!nftGLlLhVgzOwOFufp:localhost:8800mmҋ@anon-20191002_181700-330:localhost:8800A e'Q  ]$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqom.room.create!nftGLlLhVgzOwOFufp:localhost:8800mm1@anon-20191002_181700-330:localhost:8800(@e7Q ] $Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0a.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 mm%@anon-20191002_181700-329:localhost:8800(?e7Q ] $NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m(m@anon-20191002_181700-329:localhost:8800(>e7Q ] $oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtka.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 mm‘@anon-20191002_181700-329:localhost:8800(=e7Q ] $nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˾m@anon-20191002_181700-329:localhost:8800 W w L !sT J  s H)}R' { P % HFoD  uqmBoDqHuJF y Nq!uPxXJHJ*Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ ~*Q!ubmTdQFAhrhZkGULDx:localhost:8800  *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vAUAIZrCnHTeMGeNuw:localhost:8800gg*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ff*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ee*Q!vAUAIZrCnHTeMGeNuw:localhost:8800dd*Q!vAUAIZrCnHTeMGeNuw:localhost:8800cc*Q!vAUAIZrCnHTeMGeNuw:localhost:8800bb(Q!uxKymrHZeXRYCZwekU:localhost:8800CC(Q!uxKymrHZeXRYCZwekU:localhost:8800BB(Q!uxKymrHZeXRYCZwekU:localhost:8800AA(Q!uxKymrHZeXRYCZwekU:localhost:8800@@(Q!uxKymrHZeXRYCZwekU:localhost:8800??*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 } }*Q!ubmTdQFAhrhZkGULDx:localhost:8800 | |*Q!uSBqTezaFcMnlowsEf:localhost:8800  *Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggoO1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAoN1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_RagoM1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwoL1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7QwoK1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgoJ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEN1KlE4cmt4ZHdeayYqRmIKMDAyZnNpZ25hdHVyZSCDi7ywkZTQz5JXqqEFhHe9nQqcZgcfJJGXdwiFuFZ9tgoI1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAoH1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGp5X3ZqYWUwO1lSMVZfPWIKMDAyZnNpZ25hdHVyZSBXnyRWT7c5jVRFSAP8yBUFVPMpHFHO6Jh3lAfIH2WdGAoG1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ6eG4uLmo4eW94QlROanoKMDAyZnNpZ25hdHVyZSBbUWn8_gv5bniC91yO-BYhfQYBVRKyv5j5MVVtMP_JLwoF1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEktc1A6I2xTMH5pbitmUy0KMDAyZnNpZ25hdHVyZSAHdPEVl-Zg5xmbVysqfNP8UeNclE06lAUk2sezF9wAlAoE1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDc4UmlwQ2g1OHNKcUkzVVAKMDAyZnNpZ25hdHVyZSAdNspZQ479GxtCNd_qDY7ARZWMjLUH92hEAKKLsgL4DQoD   *tCeQau$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1732}{"auth_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po", "$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po"], "type": "m.room.join_rules", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042009944, "hashes": {"sha256": "UrlWVEqRVmGMoA5rykkd5qX87Jea6wv+7uPar/ECEmc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QRGKLHCrRLcDyNseoD1DcEWZ4WT2xzIe7fSv8KN3P1+AwW9EjwPZQ0nB6h49+aS1WxmgE2qA9yzP39MDLG7yCw"}}, "unsigned": {"age_ts": 1570042009944}}kBeQac$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1731}{"auth_events": ["$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "type": "m.room.power_levels", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"users": {"@anon-20191002_181700-330:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042008812, "hashes": {"sha256": "bBminyhNgTAF7Idpdo3mOdTFL9Nv6bXtmuFtJ9HO+nI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UblBfwMvTPAlxxVUk5izL6bzYXZHo0wg0L0YCmFe/nEjqX6PLIusq0bHmmW2YHCKAMzcYtxQ8JE+H4FtppZFAw"}}, "unsigned": {"age_ts": 1570042008812}}vAeQay$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1730}{"auth_events": ["$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo"], "prev_events": ["$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo"], "type": "m.room.member", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-330", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-330:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042008087, "hashes": {"sha256": "Hg/X5EipkXm51wgGILPWNKjEiZK0RMdCbDUt0XEOmWM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w0R683A4kPMqLFjGdEqG9cgtgnyJf4G3TtM0D3oW4l13bMowWdDvDgaThxIpxDnNEB0/JQQAUffcEvvY1K2oCg"}}, "unsigned": {"age_ts": 1570042008087}}i@eQa_$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1729}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-330:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042007239, "hashes": {"sha256": "fZoXcU3H95deloLIrrPNCngmE2nUwnkCA+Yu7vLP7VU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6m5V8ClI7D7Cq2n5h5CiBEn6sHNICWi3KJFHAC2NBmIX9tbZRNZloD7T0tjOaXQE4bj74ENasz+SRtsUf07bAw"}}, "unsigned": {"age_ts": 1570042007239}} #Y= i r 6 ? g v 4CqtAJY eQ']$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829aeQ' $d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829m.room.create eQ']$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800geQ3 $wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.statemeQ? $HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibilityeeQ/ $z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rulesgeQ3 $sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels eQ']$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800aeQ' $b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create eQ']$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800meQ? $Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibilityeeQ/ $9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rulesgeQ3 $2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels eQ']$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800aeQ' $vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800m.room.createmeQ? $fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibilityeeQ/ $yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rulesg eQ3 $pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels eQ']$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800a eQ' $8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800m.room.createm eQ? $IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibilitye eQ/ $rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rulesgeQ3 $5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels eQ']$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800aeQ' $4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.createmeQ? $_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibilityeeQ/ $Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rulesgeQ3 $_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels eQ']$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800aeQ' $VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800m.room.createmeQ? $MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibilityeeQ/ $O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rulesg~eQ3 $ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels }eQ']$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800a|eQ' $K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800m.room.create 'Q { S + c;sK#[3 `8pH _7kC X 0  h @  x Q *  g @  W/g?'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 |'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 k'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 j'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 i'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 h'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 g'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800l&Q!scyFsXcUIJiLIMwWMY:localhost:8800k&Q!sPWVGnipjiiWQpywNO:localhost:8800=&Q!sPWVGnipjiiWQpywNO:localhost:8800<&Q!sPWVGnipjiiWQpywNO:localhost:8800;&Q!sPWVGnipjiiWQpywNO:localhost:8800:&Q!sPWVGnipjiiWQpywNO:localhost:88009&Q!sPWVGnipjiiWQpywNO:localhost:88008&Q!sPWVGnipjiiWQpywNO:localhost:88007&Q!sPWVGnipjiiWQpywNO:localhost:88006&Q!sPWVGnipjiiWQpywNO:localhost:88005'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!rwUuVBrftGHDBOlEZm:localhost:8800C'Q!rwUuVBrftGHDBOlEZm:localhost:8800B'Q!rwUuVBrftGHDBOlEZm:localhost:8800A'Q!rwUuVBrftGHDBOlEZm:localhost:8800@'Q!rwUuVBrftGHDBOlEZm:localhost:8800?'Q!rwUuVBrftGHDBOlEZm:localhost:8800>'Q!rwUuVBrftGHDBOlEZm:localhost:8800='Q!rwUuVBrftGHDBOlEZm:localhost:8800<'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 p'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 o'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 n'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 l'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 m yM^X  Dl:~fr  p }R K  4 Q j@>8    Y ' v .LG,   & `y1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM}1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk 1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGoY1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MN1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ 1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc=1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AoB1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII61e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk K11e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc 21e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA}1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk71e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk|1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ{1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o 1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk01e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64^1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4\1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk61e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI"1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs 0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIP1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos<1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUP1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U;1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEL1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr000e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo_1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE.1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4b1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsA0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00V1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o]1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUD1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD781e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E 1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc ;1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y >1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM  -RM H C > 9 4/*|%w rmhc TfQef!mTlCLZQCmfDuQsJxxp:localhost:8800$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMTeQee!mTlCLZQCmfDuQsJxxp:localhost:8800$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkTdQed!mTlCLZQCmfDuQsJxxp:localhost:8800$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkTcQec!mTlCLZQCmfDuQsJxxp:localhost:8800$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thETbQeb!mTlCLZQCmfDuQsJxxp:localhost:8800$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14TaQea!mTlCLZQCmfDuQsJxxp:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQoT`Qe`!mTlCLZQCmfDuQsJxxp:localhost:8800$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0T_Qe_!PEcOacvKaBKpXjytEF:localhost:8800$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIT^Qe^!PEcOacvKaBKpXjytEF:localhost:8800$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIT]Qe]!PEcOacvKaBKpXjytEF:localhost:8800$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oT\Qe\!PEcOacvKaBKpXjytEF:localhost:8800$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIoT[Qe[!PEcOacvKaBKpXjytEF:localhost:8800$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYTZQeZ!PEcOacvKaBKpXjytEF:localhost:8800$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cTYQeY!PEcOacvKaBKpXjytEF:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwTXQeX!PEcOacvKaBKpXjytEF:localhost:8800$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkTWQeW!NajQnqYmGyTjxhFYar:localhost:8829$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4TVQeV!sJnuQYOyruhUpXDsLY:localhost:8800$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgTUQeU!sJnuQYOyruhUpXDsLY:localhost:8800$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsTTQeT!sJnuQYOyruhUpXDsLY:localhost:8800$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7ATSQeS!sJnuQYOyruhUpXDsLY:localhost:8800$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90TRQeR!sJnuQYOyruhUpXDsLY:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkTQQeQ!sJnuQYOyruhUpXDsLY:localhost:8800$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYTPQeP!TeraguiGoZoeOGFzlI:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwTOQeO!TeraguiGoZoeOGFzlI:localhost:8800$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMTNQeN!TeraguiGoZoeOGFzlI:localhost:8800$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsTMQeM!TeraguiGoZoeOGFzlI:localhost:8800$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsTLQeL!TeraguiGoZoeOGFzlI:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gTKQeK!TeraguiGoZoeOGFzlI:localhost:8800$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcTJQeJ!UaitDdkGDcwvRLJSvp:localhost:8800$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgTIQeI!UaitDdkGDcwvRLJSvp:localhost:8800$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsATHQeH!UaitDdkGDcwvRLJSvp:localhost:8800$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQTGQeG!UaitDdkGDcwvRLJSvp:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8TFQeF!UaitDdkGDcwvRLJSvp:localhost:8800$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqITEQeE!dDqNKNFdIjCAwnyaxp:localhost:8800$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGoTDQeD!dDqNKNFdIjCAwnyaxp:localhost:8800$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oTCQeC!dDqNKNFdIjCAwnyaxp:localhost:8800$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cTBQeB!dDqNKNFdIjCAwnyaxp:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CATAQeA!dDqNKNFdIjCAwnyaxp:localhost:8800$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUT@Qe@!kjueCKHmYaYefEEpQY:localhost:8800$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1IT?Qe?!kjueCKHmYaYefEEpQY:localhost:8800$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MT>Qe>!kjueCKHmYaYefEEpQY:localhost:8800$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIT=Qe=!kjueCKHmYaYefEEpQY:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwT<QevGeQay$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "stream_ordering": 1736}{"auth_events": ["$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o"], "prev_events": ["$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o"], "type": "m.room.member", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-331", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-331:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042014221, "hashes": {"sha256": "WZFpixiY+rCucTQHWkPuctKblLiDRdH1rtLcJdtQs7s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6e/U3bfZJeQEGEgyPTfeoI/Z5HHQUq44bzm9hN0dP6V0hReZ/molphDsNmW99roPRfEmvgKbo+iz8bEh9gUADA"}}, "unsigned": {"age_ts": 1570042014221}}iFeQa_$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "stream_ordering": 1735}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-331:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042013517, "hashes": {"sha256": "Ha38dXVfEsECDIPlf0vd1Q1LEFhm9prgLEk65/9ghkc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4uZ/vhSOm5T0fx4yFz375fSEz0kPcNYmvMBviicMrZaRhsoWZMnOPVHc6N4zOz9nwuDgIfuhodxq3iarRe2ECA"}}, "unsigned": {"age_ts": 1570042013517}}HEeQa$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1734}{"auth_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po", "$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8"], "type": "m.room.test", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042011947, "hashes": {"sha256": "yeNmfLySVRhRLF1A/psP490aPAXgLzUoUJZ+swJwnWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYZlDpbeFb7UybncweBOScq0IgcCEysrwEI48C7P8RcygINJXWxQklAxOaObsp4nTLdzFECzWVQ9LXUGLDzDAQ"}}, "unsigned": {"age_ts": 1570042011947}}DeQa$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1733}{"auth_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po", "$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s"], "type": "m.room.history_visibility", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042010827, "hashes": {"sha256": "rjMyaY89sai14NOEOpbEwzYwgh4vYBOQTxYl5T7N3rE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQQ1n1ARLbn1j7N8OQ15R2To3TXJ4HVnkR997sXLhPSMHO97Kkw8B5oOlmpMJAvMLD/9aw3GK73mdJ1I4tQYAg"}}, "unsigned": {"age_ts": 1570042010827}} ,NC 8 - { " p  e ZOD9.|#qf VpeL$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3ssha256w#NDAQqɃrZ$E?OxX5{VoeL$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfcsha256Ћq׉()-|/K Ba?]VneL$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgsha256_uIԲ^4S!m3/NڪUVmeL$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqssha256ç*T>r[~h{uHlVUY'/bVleL$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7Asha256ϯcaD/B}|Kg׿VkeL$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90sha256SDBڦ[έeJ!VjeL$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Oksha256}o=v<}>8x>sVieL$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYsha256oCo Td'tJ{:ݗ 'UVheL$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwsha256).a)onLVgeL$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMsha2565]m (Yl~~+5#VfeL$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCssha256hYGInO"؋46cP+VeeL$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dssha256jβ2 Ҍ{VdeL$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gsha256!68k__bZ %;VceL$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcsha256_-BO`u+눚tBNVbeL$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5ssha2566޲!ɠ6Sf+ᢐrN!T OZ˛VaeL$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Ysha256K '|>ׅ*\1eţV`eL$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgsha256|R9 GzegN cWCmV_eL$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAsha256SaWzs/gLĈuV^eL$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQsha256*jΟi躙a(``'JV]eL$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8sha256|}0t1r (K'V\eL$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIsha256Aw2-A@9hʓ̞ǗV[eL$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52osha256+?OR8eOkؐKjVZeL$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0sha256MBb~:3AFE]]e t~3{VYeL$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGosha256 q]L@ 6$~DjVXeL$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9osha256cKQeu_Pw<ˀuTVWeL$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2csha256\^HY;x}h lyrX(gVVeL$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAsha256 X*0Gbua e}א2NAS VUeL$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUsha256ᖷJ}Ü>Ϝ@سrcYVTeL$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngsha256nhrD>@T厭NApߤ^lxVSeL$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMsha256sװ9NC1p3?Ms/PVReL$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanAsha256\=rDa+)'jbe"f jpVQeL$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4sha256а:?%Q`ײ$*a|ƪd MhD,nVPeL$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMsha256[OPm o q R   n 53  Q4  p 78m4 Sl  TPU PO 698e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wsha2568e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94sha2568e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYsha2568e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8csha256$8e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQsha256 8e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igsha2568e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8sha256w8e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84sha256 8e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8sha256 G8e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Usha256 8e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qsha2568e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScsha256 8e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIosha2568e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624sha2568e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQsha2568e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598sha2568e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEsha256 58e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgsha2568e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYsha256=7e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPAsha25648e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0sha256.8e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexssha256p8e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMsha2568e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0sha256P8e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4sha2568e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLksha2568e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYsha2568e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0sha256h8e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vksha256:8e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0sha2568e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYsha256A8e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4sha2568e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPAsha2568e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcsha256w8e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcsha2568e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQsha2568e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8sha2568e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0sha256z8e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQsha2568e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Ysha2568e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQsha2568e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgsha256 98e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GEsha256 8e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocsha256 6 98e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIsha256@8e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0sha2568e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIsha256 8e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAsha256 8e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8sha2568e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecsha2568e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwsha256 98e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317osha256 98e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7Msha2568e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8sha256U98e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgsha2568e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8sha2568e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYsha256 _8e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAsha256 J8e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIsha256e8e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMsha256]98e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgsha256 a8e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUsha256 T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&A@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{~z~}y}|x|{wzyvyxuxwtwvsvurutqtsprqoqpnpomonlnmkmljlkijihihghgfgfefededcdcbbaaa```___^^^]]]\\[Z[ZYZYXYXWXWVWVUVUTUSRTRQSQPRPOQNMPMLOLKNKJMIHLHGKGFJFEIDCHCBGBAFA@E?>D>=C=<B<;A:9@98?87>76=54<43;32:2190/8/.7.-6-,5+*4*)3)(2('1&%0%$/$#.#"-! , +*)('&%$#"!               ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"~!~} }||{{zyxxwwvvuuttssrqppoonnmmllkkjihgf fe ed dc cb baa`_^^]]\\[[ZZYYXVUUT~TS}SR|RQ{POzONyNMxMLwLKvJIuIHtHGsGFrEDqDCpCBoBAn@? "(- Q \   IHS} 9cgrgeQ/ e[!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rules$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYidQ3 eZ!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c cQ']eY!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwcbQ' eX!PEcOacvKaBKpXjytEF:localhost:8800m.room.create$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk aQ']eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 `Q']eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4i_Q3 eW!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.state$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Noo^Q? eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibility$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUog]Q/ eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rules$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTki\Q3 eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4c[Q' eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.create$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3siZQ3 eV!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.state$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgoYQ? eU!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibility$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsgXQ/ eT!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rules$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7AiWQ3 eS!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 VQ']eR!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkcUQ' eQ!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY TQ']eP!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwoSQ? eO!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibility$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMgRQ/ eN!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rules$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsiQQ3 eM!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds PQ']eL!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gcOQ' eK!TeraguiGoZoeOGFzlI:localhost:8800m.room.create$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcoNQ? eJ!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdggMQ/ eI!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rules$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAiLQ3 eH!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ KQ']eG!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8cJQ' eF!UaitDdkGDcwvRLJSvp:localhost:8800m.room.create$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIoIQ? eE!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibility$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGogHQ/ eD!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rules$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oiGQ3 eC!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c FQ']eB!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAcEQ' eA!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.create$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUoDQ? e@!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibility$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I 4 4oOeQG$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "184", "stream_ordering": 1744}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 3}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042020925, "hashes": {"sha256": "lGogEaf02kMUcAV0x63pKbMmEu6MckzNrytOVNycsoI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eAWcL3o2nDouwze84quEHUxZ0/jcsGyKEJ5SMIWC2yCKVVsDNxp6S5kiCGdqa1xAzbdlenWi/tP5VW+SX1PLBA"}}, "unsigned": {"age_ts": 1570042020925}}oNeQG$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "183", "stream_ordering": 1743}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 2}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042019245, "hashes": {"sha256": "ryJjDiHIQx8W4ZBUjb3UmsEk+jBAwrwGWqQMjjAbh4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLpUGM8wDXWzHgUVaKZy+l054+mr4HjzcPynKpQUvH3KgACcJVwdXLK/oLFQxgYehUsakQxJmkmRxVY0tAUJCg"}}, "unsigned": {"age_ts": 1570042019245}}oMeQG$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "182", "stream_ordering": 1742}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 1}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042019065, "hashes": {"sha256": "zKasu1z0/9oJYnvkZtHsRrqqSrfIFoivK66fMEg6agQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fmwZ7qAYtDzQhd1XH2Kmy15ZrPq3i1S5kUbKiAyjLywX8cWycdvEjunGZ8jRLV0/hd0en6r1MmjrqrJq3yFnAA"}}, "unsigned": {"age_ts": 1570042019065}}oLeQG$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "181", "stream_ordering": 1741}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 0}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042018887, "hashes": {"sha256": "BnlBQNL6MXbJUwviQSqoqNCobjLY9dvENGzeZlFVo+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ImE8mnIWbomWa1NURSCXxRhUyRcYGcg3o1vyaokwK2jLw6zl0qP0koIBYyAV43vjoQ5+7ArcTAYpBxI+1lTeCA"}}, "unsigned": {"age_ts": 1570042018887}} & ]  d | U MEt=6  l&eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800qeeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800XeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800WeeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800 j.eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800CeeQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:88007eeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800heeQ$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800ρeeQ$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800SeeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800eeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800}eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800<eeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800geeQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800eeQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800 -eeQ$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800 >eeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800OeeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:8800 ~z v r n j fb^ZVRNJF+eeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800*eeQ$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800)eeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800(eeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800'eeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800&eeQ$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800%eeQ$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800$eeQ$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800#eeQ$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800"eeQ$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800!eeQ$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800 eeQ$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800eeQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800eeQ$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800 QeT)}R' { P % y N # w L ! u J  s HoFDm qBk@i>g<e*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y m*Q!taANXnGBZntAreRurn:localhost:8800 X l*Q!taANXnGBZntAreRurn:localhost:8800 W k*Q!tcYctHPiaKzsKgrXlU:localhost:8800 V j*Q!taANXnGBZntAreRurn:localhost:8800 U i*Q!tcYctHPiaKzsKgrXlU:localhost:8800 T h*Q!taANXnGBZntAreRurn:localhost:8800 S g*Q!tcYctHPiaKzsKgrXlU:localhost:8800 R f*Q!taANXnGBZntAreRurn:localhost:8800 Q e*Q!tcYctHPiaKzsKgrXlU:localhost:8800 P d*Q!taANXnGBZntAreRurn:localhost:8800 O c*Q!tcYctHPiaKzsKgrXlU:localhost:8800 N b*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 l *Q!tLkhTnTgDjjAvscRkW:localhost:8800 <*Q!tLkhTnTgDjjAvscRkW:localhost:8800 ;*Q!tLkhTnTgDjjAvscRkW:localhost:8800 :*Q!tLkhTnTgDjjAvscRkW:localhost:8800 9*Q!tLkhTnTgDjjAvscRkW:localhost:8800 8*Q!tLkhTnTgDjjAvscRkW:localhost:8800 7*Q!tLkhTnTgDjjAvscRkW:localhost:8800 6*Q!tDsPLsKOLPePtEWRwn:localhost:8800'**Q!tDsPLsKOLPePtEWRwn:localhost:8800&)*Q!tDsPLsKOLPePtEWRwn:localhost:8800%(*Q!tDsPLsKOLPePtEWRwn:localhost:8800$'*Q!tDsPLsKOLPePtEWRwn:localhost:8800#&*Q!tDsPLsKOLPePtEWRwn:localhost:8800"%*Q!tDsPLsKOLPePtEWRwn:localhost:8800!$*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800  \D SeQ)$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "188", "stream_ordering": 1748}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM", "$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 7}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042022971, "hashes": {"sha256": "vPcv9oIW7PENbPrXR4Q/+T6nn1R6es2tgnNPZI1Wbuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gMzX8puxfbFSGKJA5iONz6NJkAesYCZwQoZf5Gd6lPBBVyO3//s3JpMPtZsZ+Ak1ySX1oXRYpZQoJYm2pdgsAQ"}}, "unsigned": {"age_ts": 1570042022971}}pReQI$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "187", "stream_ordering": 1747}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 6}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042022764, "hashes": {"sha256": "Nni2f7cKDqljC+iuCQy9XgWTzyjEiBlCDSvejpKH3wU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XJoNVF6dPK+AztRQaUVwuNCS7dWc7zaBVeZcN73imvCYM37Zkq0LkMLQMpnFPAwM/EG41GPVAdtWtTwPwxoKBQ"}}, "unsigned": {"age_ts": 1570042022764}} QeQ)$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "186", "stream_ordering": 1746}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps", "$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 5}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042022071, "hashes": {"sha256": "XIjtTef0jOyRdOpW60L/e2Vq6d6JBOc4NO8TtaKta9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LZGJNfh20ymdwUiPZI8gGn9GU5b83z2P71J2m6kzkwG646DQLPJGdh5bVUkeWO6Wu2xoyOqwr9nQ3rJNAgN4AA"}}, "unsigned": {"age_ts": 1570042022071}} PeQ)$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "185", "stream_ordering": 1745}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps", "$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 4}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042021819, "hashes": {"sha256": "e0oPO3JXQPOBxKrtCmZdhGjCBN3Yutusf1XI4EUnyG0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I+RDIr+sxjuswDBpk3pw09Mc5UaUbgiIG2VninqO93oz7mvn6mjUxoJ5Yv2aO/GFhN6aSz+JJ43mgUGr3JJQDw"}}, "unsigned": {"age_ts": 1570042021819}} UyLk> ^ 1  ~ Q $ q D  c 6 U (uHg: Z-zM R%sF2m@_,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800+Q !sBcwyPoXKgnSGVTjNR:localhost:8800+Q !rWGwSSefrZzQYCYFHs:localhost:8800,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 Y,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 +Q !sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 +Q !sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!rwUuVBrftGHDBOlEZm:localhost:8800NN,Q!rwUuVBrftGHDBOlEZm:localhost:8800MM,Q!rwUuVBrftGHDBOlEZm:localhost:8800LL,Q!rwUuVBrftGHDBOlEZm:localhost:8800KK,Q!rwUuVBrftGHDBOlEZm:localhost:8800JJ,Q!rwUuVBrftGHDBOlEZm:localhost:8800II,Q!rwUuVBrftGHDBOlEZm:localhost:8800HH+Q !rwUuVBrftGHDBOlEZm:localhost:8800GG,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { {,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z z,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y y,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x x,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w w,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v v,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u u,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t t,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s s+Q !rpVYLTJGcFNdGzFzXj:localhost:8800 r r,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800+Q !raCWVWQGnXbmkexpCN:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800+Q !rZWweGEChkxxtzyfDB:localhost:8800,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 +Q !rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800 UyLk> ^ 1  ~ Q $ q D  c 6 U (uHg: Z-zM R%sF2m@_,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800+Q !sBcwyPoXKgnSGVTjNR:localhost:8800+Q !rWGwSSefrZzQYCYFHs:localhost:8800,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 Y,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 +Q !sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 +Q !sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!rwUuVBrftGHDBOlEZm:localhost:8800NN,Q!rwUuVBrftGHDBOlEZm:localhost:8800MM,Q!rwUuVBrftGHDBOlEZm:localhost:8800LL,Q!rwUuVBrftGHDBOlEZm:localhost:8800KK,Q!rwUuVBrftGHDBOlEZm:localhost:8800JJ,Q!rwUuVBrftGHDBOlEZm:localhost:8800II,Q!rwUuVBrftGHDBOlEZm:localhost:8800HH+Q !rwUuVBrftGHDBOlEZm:localhost:8800GG,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { {,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z z,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y y,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x x,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w w,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v v,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u u,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t t,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s s+Q !rpVYLTJGcFNdGzFzXj:localhost:8800 r r,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800+Q !raCWVWQGnXbmkexpCN:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800+Q !rZWweGEChkxxtzyfDB:localhost:8800,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 +Q !rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800 -RM H C > 9 4/*|%w rmhc TQe !mTlCLZQCmfDuQsJxxp:localhost:8800$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thETQe!mTlCLZQCmfDuQsJxxp:localhost:8800$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14TQe!mTlCLZQCmfDuQsJxxp:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQoTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0TQe!PEcOacvKaBKpXjytEF:localhost:8800$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOITQe!PEcOacvKaBKpXjytEF:localhost:8800$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYITQe!PEcOacvKaBKpXjytEF:localhost:8800$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oTQe!PEcOacvKaBKpXjytEF:localhost:8800$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIoTQe!PEcOacvKaBKpXjytEF:localhost:8800$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYTQe!PEcOacvKaBKpXjytEF:localhost:8800$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cTQe!PEcOacvKaBKpXjytEF:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwT Qe!PEcOacvKaBKpXjytEF:localhost:8800$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkT Qe!NajQnqYmGyTjxhFYar:localhost:8829$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4T Qe!sJnuQYOyruhUpXDsLY:localhost:8800$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgT Qe!sJnuQYOyruhUpXDsLY:localhost:8800$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsT Qe!sJnuQYOyruhUpXDsLY:localhost:8800$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7ATQe!sJnuQYOyruhUpXDsLY:localhost:8800$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90TQe!sJnuQYOyruhUpXDsLY:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkTQe!sJnuQYOyruhUpXDsLY:localhost:8800$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYTQe!TeraguiGoZoeOGFzlI:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwTQe!TeraguiGoZoeOGFzlI:localhost:8800$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMTQe!TeraguiGoZoeOGFzlI:localhost:8800$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsTQe!TeraguiGoZoeOGFzlI:localhost:8800$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsTQe!TeraguiGoZoeOGFzlI:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gTQe!TeraguiGoZoeOGFzlI:localhost:8800$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcTQe!UaitDdkGDcwvRLJSvp:localhost:8800$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sT~Qe!UaitDdkGDcwvRLJSvp:localhost:8800$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4YT}Qe!UaitDdkGDcwvRLJSvp:localhost:8800$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgT|Qe!UaitDdkGDcwvRLJSvp:localhost:8800$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAT{Qe!UaitDdkGDcwvRLJSvp:localhost:8800$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQTzQe!UaitDdkGDcwvRLJSvp:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8TyQe!UaitDdkGDcwvRLJSvp:localhost:8800$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqITxQe!dDqNKNFdIjCAwnyaxp:localhost:8800$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52oTwQe!dDqNKNFdIjCAwnyaxp:localhost:8800$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0TvQe!dDqNKNFdIjCAwnyaxp:localhost:8800$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGoTuQe!dDqNKNFdIjCAwnyaxp:localhost:8800$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oTtQe!dDqNKNFdIjCAwnyaxp:localhost:8800$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cTsQe!dDqNKNFdIjCAwnyaxp:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CATrQe!dDqNKNFdIjCAwnyaxp:localhost:8800$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUTqQe!kjueCKHmYaYefEEpQY:localhost:8800$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMTpQe!kjueCKHmYaYefEEpQY:localhost:8800$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngToQe!kjueCKHmYaYefEEpQY:localhost:8800$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanATnQe!kjueCKHmYaYefEEpQY:localhost:8800$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMTmQe!kjueCKHmYaYefEEpQY:localhost:8800$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4 RT b  `  t&~)><R ke'Q ]$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Okm.room.member!sJnuQYOyruhUpXDsLY:localhost:8800mtmu+@anon-20191002_181700-338:localhost:8800j e'Q  ]$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYm.room.create!sJnuQYOyruhUpXDsLY:localhost:8800mpmqD@anon-20191002_181700-338:localhost:8800 ie'Q ]$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwm.room.member!TeraguiGoZoeOGFzlI:localhost:8800mhmh@anon-20191002_181700-337:localhost:8800,he?Q ]$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMm.room.history_visibility!TeraguiGoZoeOGFzlI:localhost:8800mc me@anon-20191002_181700-336:localhost:8800$ge/Q ]$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsm.room.join_rules!TeraguiGoZoeOGFzlI:localhost:8800m`man@anon-20191002_181700-336:localhost:8800&fe3Q ]$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsm.room.power_levels!TeraguiGoZoeOGFzlI:localhost:8800m]m^@anon-20191002_181700-336:localhost:8800 ee'Q ]$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gm.room.member!TeraguiGoZoeOGFzlI:localhost:8800m[Om[@anon-20191002_181700-336:localhost:8800d e'Q  ]$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcm.room.create!TeraguiGoZoeOGFzlI:localhost:8800mSmV@anon-20191002_181700-336:localhost:8800!ce)Q ]$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sm.room.message!UaitDdkGDcwvRLJSvp:localhost:8800mG;mG?@anon-20191002_181700-333:localhost:8800!be)Q ]$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Ym.room.message!UaitDdkGDcwvRLJSvp:localhost:8800mCmC@anon-20191002_181700-333:localhost:8800,ae?Q ]$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgm.room.history_visibility!UaitDdkGDcwvRLJSvp:localhost:8800m;mA0@anon-20191002_181700-333:localhost:8800$`e/Q ]$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAm.room.join_rules!UaitDdkGDcwvRLJSvp:localhost:8800m9]m:@anon-20191002_181700-333:localhost:8800&_e3Q ]$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQm.room.power_levels!UaitDdkGDcwvRLJSvp:localhost:8800m6Xm7@anon-20191002_181700-333:localhost:8800 ^e'Q ]$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8m.room.member!UaitDdkGDcwvRLJSvp:localhost:8800m3m4 @anon-20191002_181700-333:localhost:8800] e'Q  ]$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIm.room.create!UaitDdkGDcwvRLJSvp:localhost:8800m1m1e@anon-20191002_181700-333:localhost:8800!\e)Q ]$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52om.room.message!dDqNKNFdIjCAwnyaxp:localhost:8800m)Fm)L@anon-20191002_181700-332:localhost:8800![e)Q ]$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0m.room.message!dDqNKNFdIjCAwnyaxp:localhost:8800m%m&T@anon-20191002_181700-332:localhost:8800,Ze?Q ]$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGom.room.history_visibility!dDqNKNFdIjCAwnyaxp:localhost:8800m m#@anon-20191002_181700-332:localhost:8800$Ye/Q ]$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9om.room.join_rules!dDqNKNFdIjCAwnyaxp:localhost:8800mIm@anon-20191002_181700-332:localhost:8800&Xe3Q ]$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cm.room.power_levels!dDqNKNFdIjCAwnyaxp:localhost:8800mm*@anon-20191002_181700-332:localhost:8800 We'Q ]$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAm.room.member!dDqNKNFdIjCAwnyaxp:localhost:8800mzm@anon-20191002_181700-332:localhost:8800V e'Q  ]$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUm.room.create!dDqNKNFdIjCAwnyaxp:localhost:8800mHm@anon-20191002_181700-332:localhost:8800(Ue7Q ] $wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jnga.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 mm@anon-20191002_181700-331:localhost:8800(Te7Q ] $Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 m ;m'@anon-20191002_181700-331:localhost:8800  \ okWeQac$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1752}{"auth_events": ["$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "type": "m.room.power_levels", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"users": {"@anon-20191002_181700-332:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042026735, "hashes": {"sha256": "jJkz+G8ydncLUvNmcMCFfImuKxETOk0EsJcuOdhDU4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L7FhzhHdADd/jWUrXrgzy6QUxWTe3JUYb7Ns/eeKwgzbkD/Lsm7LOF162lKypH6ZwwD9gCUy0Yu/AM5PxVJ/AQ"}}, "unsigned": {"age_ts": 1570042026735}}vVeQay$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1751}{"auth_events": ["$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU"], "prev_events": ["$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU"], "type": "m.room.member", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-332", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-332:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042026106, "hashes": {"sha256": "huJY4Yy3NkvrDmYcLu0bq8kE86Zf0duvlC+yRW72eTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K8n9Y/Oa3X8fiP9r/+Bh4Rel/yTVqqGxKIfGm+jk0SFOWCFY0Toc+64oqXR/W4lcAazX0//acVV3MiKMMcUQBQ"}}, "unsigned": {"age_ts": 1570042026106}}iUeQa_$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1750}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-332:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042025032, "hashes": {"sha256": "rPIVbyJ4LK9u+lL5DjF8Uv5S9yKu0uUk7Q8WVNMMJVU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kw/v+eN6ptnY5xOYva0tpRvpacY2SoB6Ecay/34C451Nub/s2pi0YbwISTcPKAm29hlLahsDSbJpbGusgBPsAw"}}, "unsigned": {"age_ts": 1570042025032}} TeQ)$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "189", "stream_ordering": 1749}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4", "$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 8}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042023649, "hashes": {"sha256": "L3OmSfVwy+atmZ6DplI7Hbjg7QDHAq80hNLCQH1SyFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SFUP4HUIVLZ6Dx7Q+Exf/0FT6r9UGcRhVbXERjblJ/DOiHCkk92ID537B0bNi3ky/VGEFQ5fkrQMCgbjcnmMCA"}}, "unsigned": {"age_ts": 1570042023649}} g * T~=gg`]!ci@anon-20191002_181700-343:localhost:8800QPHBRHJQMLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQog_]!ch@anon-20191002_181700-342:localhost:8800TTVUAXXSXPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAog^]!cg@anon-20191002_181700-341:localhost:8800GZLOUPOIMWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQog]]!cf@anon-20191002_181700-339:localhost:8800DEVPCFFDOHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAog\]!ce@anon-20191002_181700-338:localhost:8800OUNFKLKIBDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgog[]!cd@anon-20191002_181700-337:localhost:8800AOHNBPYYLFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwogZ]!cc@anon-20191002_181700-336:localhost:8800OFRRIKPQISMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwogY]!cb@anon-20191002_181700-335:localhost:8800WEGENLHOLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAogX]!ca@anon-20191002_181700-334:localhost:8800KPXDOKYVYYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgogW]!c`@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8QogV]!c_@anon-20191002_181700-332:localhost:8800TBDDBAQUGPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-go [~c@`C(wT=jO,{d% t W <   h )  x [ > '  k N 7 n 7 zW(]Bs4g8|_D!_3 lm.room.power_levels{' (m.room.create,"? 'm.room.history_visibility+/ &m.room.join_rules*3 %m.room.power_levels)>']km.room.member@anon-20191002_181700-345:localhost:8800z' jm.room.createy3 ia.madeup.test.statex3 hm.room.power_levelss>']hm.room.member@anon-20191002_181700-344:localhost:8829v>']hm.room.member@anon-20191002_181700-343:localhost:8800w/ hm.room.join_rulest"? hm.room.history_visibilityu' hm.room.creater.31ga.madeup.test.statethis_state_changesq/ 5m.room.join_rules93 4m.room.power_levels8>']3m.room.member@anon-20191002_181700-329:localhost:88007' 2m.room.create6"? 1m.room.history_visibility5/ 0m.room.join_rules43 /m.room.power_levels3>'].m.room.member@anon-20191002_181700-328:localhost:88002' -m.room.create1"? ,m.room.history_visibility0/ +m.room.join_rules/3 *m.room.power_levels.>'])m.room.member@anon-20191002_181700-327:localhost:8800- >']$m.room.member@anon-20191002_181700-326:localhost:8800(' #m.room.create'>']"m.room.member@anon-20191002_181700-325:localhost:8800&"? !m.room.history_visibility%/  m.room.join_rules$3 m.room.power_levels#>']m.room.member@anon-20191002_181700-324:localhost:8800"' m.room.create!63Afa.madeup.test.statethis_state_does_not_changep.31ea.madeup.test.statethis_state_changeso"? dm.room.history_visibilityn/ cm.room.join_rulesm3 bm.room.power_levelsl>']am.room.member@anon-20191002_181700-342:localhost:8800k' `m.room.createj.31_a.madeup.test.statethis_state_changesi63A^a.madeup.test.statethis_state_does_not_changeh.31]a.madeup.test.statethis_state_changesg"? \m.room.history_visibilityf/ [m.room.join_rulese3 Zm.room.power_levelsd>']Ym.room.member@anon-20191002_181700-341:localhost:8800c' Xm.room.createb3 Wm.room.power_levels\>']Wm.room.member@anon-20191002_181700-340:localhost:8829`>']Wm.room.member@anon-20191002_181700-339:localhost:8800a/ Wm.room.join_rules]"? Wm.room.history_visibility^' Wm.room.create[3 Wa.madeup.test.state_3 Va.madeup.test.stateZ"? Um.room.history_visibilityY/ Tm.room.join_rulesX3 Sm.room.power_levelsW>']Rm.room.member@anon-20191002_181700-338:localhost:8800V' Qm.room.createU>']Pm.room.member@anon-20191002_181700-337:localhost:8800T"? Om.room.history_visibilityS/ Nm.room.join_rulesR3 Mm.room.power_levelsQ>']Lm.room.member@anon-20191002_181700-336:localhost:8800P' Km.room.createO"? Jm.room.history_visibilityN/ Im.room.join_rulesM3 Hm.room.power_levelsL>']Gm.room.member@anon-20191002_181700-333:localhost:8800K' Fm.room.createJ"? Em.room.history_visibilityI/ Dm.room.join_rulesH3 Cm.room.power_levelsG>']Bm.room.member@anon-20191002_181700-332:localhost:8800F' Am.room.createE"? @m.room.history_visibilityD/ ?m.room.join_rulesC3 >m.room.power_levelsB>']=m.room.member@anon-20191002_181700-331:localhost:8800A' 3 9m.room.power_levels=>']8m.room.member@anon-20191002_181700-330:localhost:8800<' 7m.room.create;"? 6m.room.history_visibility: Hx0x | P " j <  X * r D  ` 2 zLf8 R$l>X*rDHb4 J -]@anon-20191002_181700-375:localhost:8800m^.-]@anon-20191002_181700-374:localhost:8800c-]@anon-20191002_181700-373:localhost:8800[-]@anon-20191002_181700-372:localhost:8800_ .-]@anon-20191002_181700-442:localhost:88000-]@anon-20191002_181700-441:localhost:8800.-]@anon-20191002_181700-440:localhost:8800--]@anon-20191002_181700-439:localhost:8800,-]@anon-20191002_181700-438:localhost:8800+-]@anon-20191002_181700-437:localhost:8800*-]@anon-20191002_181700-436:localhost:8800&-]@anon-20191002_181700-435:localhost:8800$-]@anon-20191002_181700-434:localhost:8800#-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800 -]@anon-20191002_181700-425:localhost:8800 -]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800+[@anon-20191002_181700-39:localhost:8800}-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-395:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800-]@anon-20191002_181700-390:localhost:8800+[@anon-20191002_181700-38:localhost:8800x-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:8800r-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800}v-]@anon-20191002_181700-445:localhost:88009-]@anon-20191002_181700-444:localhost:88006-]@anon-20191002_181700-443:localhost:88007.-]@anon-20191002_181700-376:localhost:8800u-]@anon-20191002_181700-375:localhost:8800n Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1!e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Yv1 e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzou1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAt1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ys1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcsr1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgq1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIq1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMq1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdkq1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYq1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcq1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0q1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAq1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYq1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiop1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8o1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsn1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEm1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Yl1 e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokk1 e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresj1 e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwi1 e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsh1 e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEg1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0g1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgg1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUg1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sg1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74g1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Micg1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00g1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMg1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMg1~e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcg1}e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIg1|e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMf1{e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVke1ze$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkd1ye$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEc1xe$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14b1we$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQoa1ve$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0`1ue$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI_1te$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI^1se$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o]1re$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo\1qe$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY[1pe$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cZ1oe$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwY1ne$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkX1me$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4W1le$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgV1ke$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsU1je$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7AT1ie$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90S1he$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkR1ge$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYQ1fe$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwP1ee$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMO1de$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsN1ce$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsM1be$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gL1ae$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcK1`e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sJ1_e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4YJ1^e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgJ1]e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAI1\e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQH1[e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8G1Ze$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIF1Ye$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52oE1Xe$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0E1We$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGoE "j(N Q s |  1 :=_@CLOqj'Q3Ae!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_change$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI|&Q31e!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4op%Q? e!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibility$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIoh$Q/ e!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rules$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYj#Q3 e!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c "Q']e!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwd!Q' e!PEcOacvKaBKpXjytEF:localhost:8800m.room.create$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk Q']e!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 Q']e!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4jQ3 e!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.state$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7NopQ? e!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibility$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUohQ/ e!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rules$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTkjQ3 e!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4dQ' e!NajQnqYmGyTjxhFYar:localhost:8829m.room.create$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3sjQ3 e!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.state$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgpQ? e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibility$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqshQ/ e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rules$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7AjQ3 e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 Q']e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkdQ' e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY Q']e!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwpQ? e!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibility$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMhQ/ e!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rules$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsjQ3 e!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds Q']e!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gdQ' e!TeraguiGoZoeOGFzlI:localhost:8800m.room.create$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcp Q? e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgh Q/ e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rules$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAj Q3 e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ Q']e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8d Q' e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.create$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIpQ? e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibility$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGohQ/ e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rules$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9ojQ3 e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c  ~}[eQc$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "txn_id": "193", "stream_ordering": 1756}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0"], "type": "m.room.message", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"body": "2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042030406, "hashes": {"sha256": "bweWUuqvEq8wi4oBWRnfd3LZzcoJJlUGsmWzprul2Jk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LPMOjaESgNdLmbS8B+BR73RT3irzfEuKwB7aDNgW/XCcWi6rVmR7EamSL/mx3wsvcl+KANCschzrj5ouG0zODg"}}, "unsigned": {"age_ts": 1570042030406}}}ZeQc$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "txn_id": "192", "stream_ordering": 1755}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo"], "type": "m.room.message", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042029493, "hashes": {"sha256": "XDwPj7xhi4uDaF3nv8eGcigLcd1+Guv+DUoZkpBmV18"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FDIk/oBFcZsK0axyNdCmA+zsrO2i42QeMKgJRp5h3uLvfRMCIHN2hDnd61fqSEts/nMJNjHVkgL5SqQFCoF8Dg"}}, "unsigned": {"age_ts": 1570042029493}}YeQa$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1754}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o"], "type": "m.room.history_visibility", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042028275, "hashes": {"sha256": "wlAcVv/+iIIOr1LgJ+qCVWuiXNRg+f5r0Evz4pqDnbs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qWjX4C5nirB/Vrobmkq4J5xinJq/NBD54d0alJq14raFVcsLPag0L82GlxYsAKdZr1bMr8v2UtcN29ezRog5Cg"}}, "unsigned": {"age_ts": 1570042028275}}tXeQau$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1753}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c"], "type": "m.room.join_rules", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042027593, "hashes": {"sha256": "g+nYtW5c0ZFlliCRdSYPMyCHT9SazVn3ybLvlgJb0CM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ofB/drEzAsTsYB2Ga6y7/4Rced3RwGa8WRLInOG8kLw4Ona5VuS+HmnEGtLNK9EAWE8WbIR28UqhTKWDhU7AAw"}}, "unsigned": {"age_ts": 1570042027593}} ||178170090123457892001910022345678911234567820246831246789402345678950123478960123456789701234679801234678990123456789300123456781012789201234348800 H P  Vp $ \ * | Db0 v tB h6 JZzT"H(> Nn<   N21e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY 1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY 1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY 1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI-1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI,1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI+1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI*1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs ]1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs \1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI051e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI041e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA 1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA 1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA 1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw 1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk 1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk&1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk%1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI061e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc@1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc?1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc>1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAME1e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM1e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM1e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk'1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd81e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd81e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl01e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewk1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd81e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0 1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0 1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4]1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4\1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4[1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXII1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0 1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y En5QnUq8 T  pQ 7 T  p 7  5 T p7So6R8e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGosha2568e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0sha256 #8e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIsha256h8e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucsha256 8e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqIsha256 8e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0sha256 K8e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMsha256 8e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgsha256 8e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-Esha256 8e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fosha256 \8e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBssha256 F7e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUsha256U8e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMsha256V8e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Usha2568e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEsha2568e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5Msha2568e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90sha2568e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUsha256 8e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfAsha2568e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0sha2568e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIsha2568e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45ksha2568e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMsha25688e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgsha256 8e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRssha256 @8e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUsha256>8e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzksha2568e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcsha2568e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEsha256 :8e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMIsha2568e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blcsha256 8e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4Usha256 8e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wsha25608e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIsha256 R8e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0sha256I8e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tREsha2568e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8sha2568e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGoksha2568e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gsha2567e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPssha256j8e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYsha256}8e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74sha256v8e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcsha256x8e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6csha256H8e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAsha256[8e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpMsha256 .8e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilksha25638e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78sha25637e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8sha2568e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgsha2568e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4sha256>8e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIsha2568e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcsha2568e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanAsha2568e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsossha2568e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIsha2568e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIsha256 8e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDosha2568e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFssha2568e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4sha256 8e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krksha256 ~8e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnksha2568e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsksha256 28e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUsha2568e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vcsha2568e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYsha2568e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEsha256 8e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcsha256 c8e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4sha256 ,1 Y d i  ' Y.BY^ UeQ3A$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_changeyVeQ31$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changesmSeQ? $WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibilityeReQ/ $IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rulesgQeQ3 $YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels PeQ']$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800joinaOeQ' $LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800m.room.create NeQ']$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800join MeQ']$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829joingLeQ3 $5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.statemKeQ? $S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibilityeJeQ/ $PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rulesgIeQ3 $UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levelsaHeQ' $d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829m.room.creategGeQ3 $wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.statemFeQ? $HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibilityeEeQ/ $z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rulesgDeQ3 $sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels CeQ']$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800joinaBeQ' $b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create AeQ']$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800joinm@eQ? $Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibilitye?eQ/ $9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rulesg>eQ3 $2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels =eQ']$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800joina<eQ' $vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800m.room.createm;eQ? $fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility  u_TeQw$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "332", "stream_ordering": 2015}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 38", "msgtype": "m.text"}, "depth": 48, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042231664, "hashes": {"sha256": "w1Qw7h0+EswsA798p9tGwXPTDz8fejBdEAS7dWdokv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uF81c77lwhOkVypZDW8WueYtu95ZJbOORLUs8INv9Hhkc4IGYNQN8xScuv2SEy+8ZO4PIfoAh9fU7efz3XwiCQ"}}, "unsigned": {"age_ts": 1570042231664}}SeQw$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "331", "stream_ordering": 2014}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 37"}, "depth": 47, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042231223, "hashes": {"sha256": "cYG86nGSX4yG9idhCwsTdlUYepxvrU61iyWHLTSKOf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zUr3hmIHllrny1ja2jueWOdyy138C6U4joISV5L13LMjWQBzwJR3FoDnIp/nLqabYIWR3s4n0HEHWMMWIu1GAg"}}, "unsigned": {"age_ts": 1570042231223}}ReQw$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "330", "stream_ordering": 2013}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 36"}, "depth": 46, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042230789, "hashes": {"sha256": "HX8lu3kqj8cS62M/LKXb/2ln6RZifvv6bgfTx6wyrW4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2yOwr0vVPtQhE5kkQKv8htwM6GDz7LxgDraHi6lVDyHIXwL9yG2rIfAmnn71vuAY1iOjA4iCtQ2vZnxF4jbhDA"}}, "unsigned": {"age_ts": 1570042230789}}QeQw$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "329", "stream_ordering": 2012}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 35", "msgtype": "m.text"}, "depth": 45, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042230255, "hashes": {"sha256": "NwIG2fcIp9o1D+sDw49U3XOGrOAwzf5a76a34SRayn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2ronb+TzQgVohxME8mXfDFN4KfMmSsJv3xE4uoPrlzIl25i+C5fl8jVQUQBMIAyFYoWO5/D8nHTQmTOYeM57DQ"}}, "unsigned": {"age_ts": 1570042230255}} =w?["Y u< X  v =  Y w >  Z !v=Y u<\#xw>a(8]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK6[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPDI6[!@anon-20191002_181700-43:localhost:8800CHTLJMKZABH8]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN8]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ6[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXE8]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK6[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXD8]!@anon-20191002_181700-409:localhost:8800GINWCFSINT8]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW6[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC6[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYC8]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!                        geQa$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1768}{"auth_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds", "$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "prev_events": ["$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs"], "type": "m.room.history_visibility", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042045193, "hashes": {"sha256": "v3Oi1rL3IXdbKEWCHBl50TvA2bhtbhMN6J0sTNWzmao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FeaAFO16rh+csCcLeRSaHDGTWuknf91Bw7JuOSVk9RxMU4PXpUjiJ9+RQzEJhv3SLpBlHd8lGVzEEmTaHIB0Cw"}}, "unsigned": {"age_ts": 1570042045193}}tfeQau$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1767}{"auth_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds", "$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "prev_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds"], "type": "m.room.join_rules", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042044585, "hashes": {"sha256": "LyayByQeV5DNAIE3Hv21IHmgx0s5hQTxeQmBcGfd5yU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1JMO/P1pw131jLHSAiRzel/EhdvmqnPPGRnFB4hVbHMlUAkbmGatpJz2ydJSFMfiWnYDAXSDsclc6Y4pXcwnCQ"}}, "unsigned": {"age_ts": 1570042044585}}keeQac$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1766}{"auth_events": ["$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "prev_events": ["$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "type": "m.room.power_levels", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"users": {"@anon-20191002_181700-336:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042043803, "hashes": {"sha256": "NxhqxGjG9bEcjYhQC907y97vZUo6PTEKRE0wDRv3hsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CYoC9e4br1b8mgEI6csGhltzPH3daLxjo3f3hnOc/fOsmtcILGd6tM3Uy1izhiXUM1p65ZzApCABKoBtBslhBg"}}, "unsigned": {"age_ts": 1570042043803}}vdeQay$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1765}{"auth_events": ["$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc"], "prev_events": ["$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc"], "type": "m.room.member", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-336", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-336:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042043215, "hashes": {"sha256": "f4sU2xl+StRkkfQEBKiPaTYqPUFiK+yAa2734DlUV5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JhXDOPcOfxuFK4ZHsdkE0tMCwEzaENZ8x7vIWg8tQBY0FloNTo+ePspv8Q0g/PpycEB1aixenFeTT5hLvBgFDQ"}}, "unsigned": {"age_ts": 1570042043215}} P & 9PkkeQac$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1772}{"auth_events": ["$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "type": "m.room.power_levels", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"users": {"@anon-20191002_181700-338:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042050671, "hashes": {"sha256": "TWh0jvIXK+OncQUDo8QiZb0jW5I/jbvN4yDoNLrH0u0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IazVqWEZq2MmxBWEzpvu2ZubkHGBegVawmGvTAOehTwdkwQ4k1UXabxewbVGsl30lETNHC3I5wkIhCiYGCHVBg"}}, "unsigned": {"age_ts": 1570042050671}}vjeQay$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1771}{"auth_events": ["$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY"], "prev_events": ["$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY"], "type": "m.room.member", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-338", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-338:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042049682, "hashes": {"sha256": "ZcIfj5cS/8N/qRJKnpaffRTXqtezWu/EBvDYAbe3mI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KtmCATWUdIF+pLazcqveG/bvd6pczOsRSloXHRIzXx9ZsOlEuaGQY+iprwQFrelQyizXrQzrj0XNuwo8hO5lCg"}}, "unsigned": {"age_ts": 1570042049682}}iieQa_$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1770}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-338:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042048708, "hashes": {"sha256": "F/qOGHKohyxFMY+IPMA1JeYEFumrx4Allqu0hmhZbFE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DNqhEIliGo3HD7GwrD6FpuchI1nOIIT7BBSC38TIg5uQWW+vUE+jVF8BqpdxMUd3sZ4yib3bAmtgTBQ1J/gtDw"}}, "unsigned": {"age_ts": 1570042048708}}VheQa9$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 356, "stream_ordering": 1769}{"auth_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds", "$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs"], "prev_events": ["$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM"], "type": "m.room.member", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-337:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-337", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-337:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042046607, "hashes": {"sha256": "B9iViZkyLdh+41UBb/W0nPfmWz+iHO5DO+aymz1s52s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3T2Rb+VcGTd3njTLrD3+00lIjPL/dsBUz2HPyAFV2igFtFvPvms/aJi+mlhoER1rSrFeUGOaTqk5URZNvix0Aw"}}, "unsigned": {"age_ts": 1570042046607}} ~HR uCi7o=  | J ^,XL Qc1 j  Wp % ] +8& > > v D1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEZ1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEY1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4[1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU D/1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8z1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj00e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU81e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag~1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag}1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag|1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs/1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8|1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8{1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 d1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEX1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k Lp> v E   M   Sj8 ! Y ' % _ -e3k9q? ]+wE}KQW1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIx1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIw1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIv1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIu1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU11e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzww1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwv1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwu1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEe1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcV1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcU1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw 1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg,1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg+1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM 1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM 1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ 1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ 1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ 1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk 1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk 1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk 1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg:1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg91e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg81e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o 1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o 1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o 1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc;1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsl1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsk1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsj0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQL0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQK0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQJ1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs61e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs51e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs41e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ d1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAO1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAN1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAM1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 a} { y w u sqomkigeca~ eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800~eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~~eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~}eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800~|eeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~{eeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~zeeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800~yeeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~xeeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~weeQ$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~veeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800~ueeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800~teeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800~seeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800~reeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800~qeeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800~peeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800~oeeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800 < Z x  % C a,Jh [y&`n]@anon-20191002_181700-346:localhost:8800@anon-20191002_181700-346:localhost:8800 anon-20191002_181700-346n]@anon-20191002_181700-345:localhost:8800@anon-20191002_181700-345:localhost:8800 anon-20191002_181700-345n]@anon-20191002_181700-343:localhost:8800@anon-20191002_181700-343:localhost:8800 anon-20191002_181700-343n]@anon-20191002_181700-344:localhost:8829@anon-20191002_181700-344:localhost:8829 anon-20191002_181700-344n]@anon-20191002_181700-342:localhost:8800@anon-20191002_181700-342:localhost:8800 anon-20191002_181700-342n~]@anon-20191002_181700-341:localhost:8800@anon-20191002_181700-341:localhost:8800 anon-20191002_181700-341n}]@anon-20191002_181700-339:localhost:8800@anon-20191002_181700-339:localhost:8800 anon-20191002_181700-339n|]@anon-20191002_181700-340:localhost:8829@anon-20191002_181700-340:localhost:8829 anon-20191002_181700-340n{]@anon-20191002_181700-338:localhost:8800@anon-20191002_181700-338:localhost:8800 anon-20191002_181700-338ny]@anon-20191002_181700-336:localhost:8800@anon-20191002_181700-336:localhost:8800 anon-20191002_181700-336nx]@anon-20191002_181700-333:localhost:8800@anon-20191002_181700-333:localhost:8800 anon-20191002_181700-333nw]@anon-20191002_181700-332:localhost:8800@anon-20191002_181700-332:localhost:8800 anon-20191002_181700-332nv]@anon-20191002_181700-331:localhost:8800@anon-20191002_181700-331:localhost:8800 anon-20191002_181700-331nu]@anon-20191002_181700-330:localhost:8800@anon-20191002_181700-330:localhost:8800 anon-20191002_181700-330nt]@anon-20191002_181700-329:localhost:8800@anon-20191002_181700-329:localhost:8800 anon-20191002_181700-329ns]@anon-20191002_181700-328:localhost:8800@anon-20191002_181700-328:localhost:8800 anon-20191002_181700-328nr]@anon-20191002_181700-327:localhost:8800@anon-20191002_181700-327:localhost:8800 anon-20191002_181700-327n]@anon-20191002_181700-347:localhost:8800@anon-20191002_181700-347:localhost:8800 anon-20191002_181700-347nq]@anon-20191002_181700-326:localhost:8800@anon-20191002_181700-326:localhost:8800 anon-20191002_181700-326np]@anon-20191002_181700-325:localhost:8800@anon-20191002_181700-325:localhost:8800 anon-20191002_181700-325no]@anon-20191002_181700-324:localhost:8800@anon-20191002_181700-324:localhost:8800 anon-20191002_181700-324nn]@anon-20191002_181700-323:localhost:8800@anon-20191002_181700-323:localhost:8800 anon-20191002_181700-323nm]@anon-20191002_181700-322:localhost:8800@anon-20191002_181700-322:localhost:8800 anon-20191002_181700-322nl]@anon-20191002_181700-321:localhost:8800@anon-20191002_181700-321:localhost:8800 anon-20191002_181700-321nk]@anon-20191002_181700-320:localhost:8800@anon-20191002_181700-320:localhost:8800 anon-20191002_181700-320nj]@anon-20191002_181700-319:localhost:8800@anon-20191002_181700-319:localhost:8800 anon-20191002_181700-319nz]@anon-20191002_181700-337:localhost:8800@anon-20191002_181700-337:localhost:8800 anon-20191002_181700-337 <V T  j  hx*(~2<$e/Q ]$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEm.room.join_rules!mTlCLZQCmfDuQsJxxp:localhost:8800mm@anon-20191002_181700-342:localhost:8800&e3Q ]$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14m.room.power_levels!mTlCLZQCmfDuQsJxxp:localhost:8800m$m+@anon-20191002_181700-342:localhost:8800 e'Q ]$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQom.room.member!mTlCLZQCmfDuQsJxxp:localhost:8800mm?@anon-20191002_181700-342:localhost:8800 e'Q  ]$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0m.room.create!mTlCLZQCmfDuQsJxxp:localhost:8800mUmí@anon-20191002_181700-342:localhost:8800&e3Q ]$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIa.madeup.test.state!PEcOacvKaBKpXjytEF:localhost:8800m̽m̾D@anon-20191002_181700-341:localhost:8800&e3Q ]$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIa.madeup.test.state!PEcOacvKaBKpXjytEF:localhost:8800m̺m̺@anon-20191002_181700-341:localhost:8800&e3Q ]$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oa.madeup.test.state!PEcOacvKaBKpXjytEF:localhost:8800m̷!m̸3@anon-20191002_181700-341:localhost:8800,e?Q ]$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIom.room.history_visibility!PEcOacvKaBKpXjytEF:localhost:8800m̯m̴@anon-20191002_181700-341:localhost:8800$e/Q ]$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYm.room.join_rules!PEcOacvKaBKpXjytEF:localhost:8800m̫m̬@anon-20191002_181700-341:localhost:8800&e3Q ]$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cm.room.power_levels!PEcOacvKaBKpXjytEF:localhost:8800m̨zm̩@anon-20191002_181700-341:localhost:8800 ~e'Q ]$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwm.room.member!PEcOacvKaBKpXjytEF:localhost:8800m̦m̦@anon-20191002_181700-341:localhost:8800} e'Q  ]$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkm.room.create!PEcOacvKaBKpXjytEF:localhost:8800m̢ṃY@anon-20191002_181700-341:localhost:8800 |e'Q ]$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4m.room.member!NajQnqYmGyTjxhFYar:localhost:8829m̗?m̚*@anon-20191002_181700-339:localhost:8800&ye3Q ]$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Noa.madeup.test.state!NajQnqYmGyTjxhFYar:localhost:8829m̒Im̗@anon-20191002_181700-340:localhost:8829,xe?Q ]$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUom.room.history_visibility!NajQnqYmGyTjxhFYar:localhost:8829m̒+m̗@anon-20191002_181700-340:localhost:8829$te/Q ]$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTkm.room.join_rules!NajQnqYmGyTjxhFYar:localhost:8829m̒m̗@anon-20191002_181700-340:localhost:8829&se3Q ]$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4m.room.power_levels!NajQnqYmGyTjxhFYar:localhost:8829m̑m̗@anon-20191002_181700-340:localhost:8829 re'Q ]$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4m.room.member!NajQnqYmGyTjxhFYar:localhost:8829m̑m̗@anon-20191002_181700-340:localhost:8829q e'Q ]$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3sm.room.create!NajQnqYmGyTjxhFYar:localhost:8829m̑~m̗@anon-20191002_181700-340:localhost:8829 pe'Q ]$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfcm.room.member!NajQnqYmGyTjxhFYar:localhost:8829m̔ m̔@anon-20191002_181700-340:localhost:8829&oe3Q ]$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOga.madeup.test.state!sJnuQYOyruhUpXDsLY:localhost:8800m̌zm̌@anon-20191002_181700-338:localhost:8800,ne?Q ]$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsm.room.history_visibility!sJnuQYOyruhUpXDsLY:localhost:8800m̆m̈@anon-20191002_181700-338:localhost:8800$me/Q ]$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7Am.room.join_rules!sJnuQYOyruhUpXDsLY:localhost:8800m}m@anon-20191002_181700-338:localhost:8800&le3Q ]$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90m.room.power_levels!sJnuQYOyruhUpXDsLY:localhost:8800mxom{@anon-20191002_181700-338:localhost:8800  lneQae$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1775}{"auth_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90", "$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs"], "type": "a.madeup.test.state", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042055802, "hashes": {"sha256": "fcIGQ/xtSUdFuKR1cvIPxf4e6ZHpFDwIKZWQb0pxKJQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lyrqacOWO7temdkdzxcOz8mDnorVC1B0fl7KTWYuV4bPPBFhx+dpw9qYuRd/4VvKd0nO4llT23QPoKCEz33eDA"}}, "unsigned": {"age_ts": 1570042055802}}meQa$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1774}{"auth_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90", "$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A"], "type": "m.room.history_visibility", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042054344, "hashes": {"sha256": "6rQeSuTTLbDxiDDNGSw9bxaH34icdlrBwyeukPxmDAM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QaYs4g1H1XUWpeljtbRYoHKoTG8P5zh9j/kohsvPmNZ95yvud+OJwB+HHuuIpfm26jTKeUCowkex1aqyb7CEAg"}}, "unsigned": {"age_ts": 1570042054344}}tleQau$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1773}{"auth_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90", "$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90"], "type": "m.room.join_rules", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042051978, "hashes": {"sha256": "TT+FZySLJw3BwTuWhaFLuf6GPj5O/BF2Jgrst0ZH4GY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tnl7MGZSt5Y6aGRbbMohCBI4gkxXuHy0Du0673fIgBHZfmiWRuAT4Tnz8l04cIpMGP0WTGvIyQzlNJsm4szSCQ"}}, "unsigned": {"age_ts": 1570042051978}} ~z v r n j fb^ZVRNJFIeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800HeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800GeeQ$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800FeeQ$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800EeeQ$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800DeeQ$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800CeeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800BeeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800AeeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800@eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800?eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800>eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800=eeQ$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800<eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800;eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800:eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:88009eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:88008eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:88007eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:88006eeQ$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:88005eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:88294eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:88293eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:88292eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:88291eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:88290eeQ$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829/eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829.eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800-eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800,eeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800  jqeQaa$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1778}{"auth_events": ["$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s"], "prev_events": ["$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s"], "type": "m.room.member", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"membership": "join", "displayname": "anon-20191002_181700-340", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-340:localhost:8829", "origin": "localhost:8829", "origin_server_ts": 1570042057111, "hashes": {"sha256": "YFyRJqZHCWL9NNd6beMwdSTBjYs1BWCXQD9VcQa5kfw"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "v1ob1Wl3/iQmpgSUWaI7XE8imTHMmL5JeY3uaFA7Yhl+ND2eUxDxpPbKYn3jrrSeUxoHQF/QxmapluFv++4bDg"}}, "unsigned": {"age": 1471}}]peQaG$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1777}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"room_version": "4", "creator": "@anon-20191002_181700-340:localhost:8829"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057086, "hashes": {"sha256": "8yunQ1kDV+WMDLk+uHjEaY5PfvXIV2G23VX2mKCAe/4"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "+a9pgZj3SNT5PR6rtlP52QjfjTTZGBk/VCf4tE4hafWX33RVJAg9ykt/9a+Oc3QAffh58/Eyn9DmHfGT+00AAA"}}, "unsigned": {"age": 1496}}'oeQ!$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 1776}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-339", "membership": "invite"}, "depth": 7, "hashes": {"sha256": "P3T1kClxH38O7jpeL7KR0s5Dyh3UpsRgyfXzWC3VnRY"}, "origin": "localhost:8829", "origin_server_ts": 1570042057737, "prev_events": ["$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No"], "prev_state": [], "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "state_key": "@anon-20191002_181700-339:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "2fw5DCbf+HUzJ/3mZTD+A9Z4rVVuM/zJZMiHeWm/1pByd6/JO+N+teyhexIsSy4p6wZMDA7MCw3Hgsqc4H14AA"}, "localhost:8800": {"ed25519:a_OdAo": "FpIOqo9/oWVppW8Flub+lCVSppHnwAcmOp2k+q7I8DcUvArcVuNvnkrNWc3OV83gP2j8YLIWiWSvL9bsKffKDw"}}, "unsigned": {"age": 5, "invite_room_state": [{"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-340:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-340", "membership": "join"}, "sender": "@anon-20191002_181700-340:localhost:8829", "state_key": "@anon-20191002_181700-340:localhost:8829", "type": "m.room.member"}]}} P 1P`ueQaM$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1785}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo"], "type": "a.madeup.test.state", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057289, "hashes": {"sha256": "S1o+zDGdA+YVObKUkY1TgoHwJACFuEKjlm3MDAJhJes"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "g4Z+nqNf+s9RD+WH/iXX3Td9fqPZSkmd6gbl1OJdln9KWYSdx1q1wBymS4byHTnHW1ZuVzN1eoxeWjQpHQbcDA"}}, "unsigned": {"age": 1293}}yteQa$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1784}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk"], "type": "m.room.history_visibility", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057259, "hashes": {"sha256": "4BUNyAKfc7h27mSkqLpwzMzD7qlLDyamJGk9QukdRL0"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "96AdrMmnTeHVbcRUN6GLwnR3nFnMOnCfLfmuBuiKYLSBlWmsLPidbWoQr1YHa5G7eLNXwXyD9OcXTo+lNDMmAw"}}, "unsigned": {"age": 1323}}hseQa]$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1780}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4"], "type": "m.room.join_rules", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057235, "hashes": {"sha256": "fiedibKwhG3sjCyCVuT5YyZQJI0SUyfcqjuWGOSNq/M"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "rgKaXRI6G3djPmDnZJXu0lRcW3IBEidFRNu6xKjLrMgi9CAEUhOVX6J5MyeHkasQKiwz7650AiqVVybBkOhPDw"}}, "unsigned": {"age": 1347}}_reQaK$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1779}{"auth_events": ["$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "type": "m.room.power_levels", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"users": {"@anon-20191002_181700-340:localhost:8829": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057138, "hashes": {"sha256": "urpb4M5YZxWrTGeuk/aJ2IdCzodHImJaMByFXSJCT5A"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "K5CxBWJ34uCb9P2EvW+CcD1oqiWV+LWnzIfdw2OFG9nirG4kVG7AsrcEWeGjqPRkJEeVpnTtrt3p2enA4pFHDw"}}, "unsigned": {"age": 1444}} a} { y w u sqomkigeca~,eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~+eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~*eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~)eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~(eeQ$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~'eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~&eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~%eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~$eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~#eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~"eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~!eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~ eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829 ,NC 8 - { " p  e ZOD9.|#qf VeL$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGoksha256]B; -YcZi[6VeL$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yressha256\E6jD7" 4g/sX|VeL$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwsha256r2/u6;lͿEj(Shq<tTiVeL$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcssha2568Iʓ;ZauJ bQd.K3)VeL$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90sha256`[ѩ z "sKޗwG IorN'VeL$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0sha256[H pmoĭVYI!ymVeL$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQsha256^?ZMqx LӓTM|Y1:4\VeL$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4sha256Vn񲪇ik{F J(2aM*2ZVeL$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwgsha256L;cN(6jh4*aER7VeL$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brosha256菛|HɭW*Ϲ{պPpxItVeL$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEsha256,q`a' J?e-#<\]!V{֑VeL$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0sha256;#:S["ttBZg4mVeL$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgsha256MQ w7< ‡. Hֈ2uVeL$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUsha256kөaUr @]G=&*zeVeL$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257ssha256`%g;ʥ,Bó$r۴]MV eL$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6ssha256Y%i@gz3;YqY:fv5V eL$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74sha256%WL;}q=i ' V eL$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Micsha256%=Lbm"z\i]zU 3'|?2'V eL$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00sha2563ȘBi/μPankMV eL$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMsha256> +?n/Nge ^5zVeL$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMsha2568_q!!P oK OP%SVeL$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcsha256Ij9XFXyT'VeL$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIsha256Nl,E[mءpt$VeL$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMsha256puD$uC˯fŀzڥPWgPdVeL$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVksha256HשNQ"Sq@jIX&ݓIVeL$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEsha256齰}}›pn!L5"[5ZcдVeL$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14sha256+"K 놡7_=h57'^VeL$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQosha256XA[24DαodUHb0Oo VeL$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0sha2567{ҒWng7!)縮|*_Um-V~eL$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIsha2567􌑒ѫg|qV}eL$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIsha256n SC7gfjRU9F>|4eV|eL$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4osha256nSㄪ#l APCVoV{eL$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIosha256Yl*}Gr=RPf6/29'VzeL$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYsha256!,#_41I1 L'MGxsVyeL$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8csha256`R<(Ԭc-mscpX1;VxeL$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwsha2569{rƌ9yjb  VweL$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLksha256- !뎤4PO)ߟm4wԀVveL$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4sha256└+<6:Tg[cz QHCnVueL$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Nosha256䣇~PA)E/.v-fԚ)VteL$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUosha256K;߃@<@+\Z!JVseL$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTksha256<%c:Pƪ*VqeL$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4sha256Ut[Rk)qu=? ERn5QnVr9m U  q 8 TQ  p 7  S5 o4P68e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwsha2568e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEsha256g8e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Ysha2568e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwsha2568e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgsha2568e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgsha256+8e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4sha256 8e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUsha2568e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIsha256 8e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcsha2568e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMsha256 8e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4sha2568e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8sha256 8e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMsha256 8e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367essha256 8e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQsha256 8e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcsha256 8e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMsha2568e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4sha2567e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4sha256N8e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8sha2568e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEsha256K8e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMsha2568e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8sha2568e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_csha2568e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMsha2568e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngsha256X8e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQsha256S8e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648sha256d8e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIsha256 38e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwsha2568e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8sha2568e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUsha2568e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4sha2568e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8sha256=8e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYsha256d8e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqssha256T8e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvksha256 28e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEsha2568e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQsha2568e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_ksha256z8e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQsha2568e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIsha2568e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tEsha256^8e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Msha256=8e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhYsha256 $8e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550sha256a8e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gsha2568e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktUsha2568e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAsha2568e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Usha2568e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Isha256$8e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQsha256 <8e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcsha2568e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYosha256p8e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUsha2568e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIsha256N8e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAsha256 E8e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUsha2568e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEsha2568e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQsha256 78e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXssha2568e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUsha256P8e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wsha2568e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAsha256=8e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEssha256P8e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYsha2567e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwgsha256/8e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIsha256 "}.T c l    &ThgvLU}m@eQ? $BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibilitye?eQ/ $UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rulesg>eQ3 $Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels =eQ']$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800a<eQ' $yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.createg;eQ3 $cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state :eQ']$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800m9eQ? $YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibilitye8eQ/ $W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rulesg7eQ3 $Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levels 6eQ']$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829a5eQ' $h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829m.room.create 4eQ']$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800y3eQ31$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes2eQ3A$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_changey1eQ31$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changesm0eQ? $r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibilitye/eQ/ $-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rulesg.eQ3 $lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels -eQ']$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800a,eQ' $AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.createy+eQ31$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes*eQ3A$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_changey)eQ31$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changesm(eQ? $WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibilitye'eQ/ $IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rulesg&eQ3 $YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels %eQ']$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800a$eQ' $LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800m.room.create #eQ']$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800g"eQ3 $5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.statem!eQ? $S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibilitye eQ/ $PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rulesgeQ3 $UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels  ukyeQac$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1791}{"auth_events": ["$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "type": "m.room.power_levels", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"users": {"@anon-20191002_181700-341:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042062970, "hashes": {"sha256": "CGYTiutpkLhJ9kMCDfirJkZfnAQK45LYQunQXxbfYy8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oy3LylN9UF43eh+7IhqPpVqXG5DXz9u7uqtYdbATLh+h0C8zm6dWFPj+uzBnVhmvLRoxnrCmUBHdcEhXUfCgCA"}}, "unsigned": {"age_ts": 1570042062970}}vxeQay$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1790}{"auth_events": ["$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk"], "prev_events": ["$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk"], "type": "m.room.member", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-341", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-341:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042062474, "hashes": {"sha256": "YrLA2CmM57dLKCYajZo2sD04DXrB4zk7S3+JNfkh15Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MeGggMaV7GjZ3527Iz8TnxrmFg9LUsReuvbptN1M7pYiuTncSaoE89GTpGPxvBd1FUz4ZveGomwGKEsWYR1KAA"}}, "unsigned": {"age_ts": 1570042062474}}iweQa_$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1789}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-341:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042061551, "hashes": {"sha256": "pfz6n+1jraDbfRLaqSmt28aDM2hmrL7k66WwXwwymUw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XdD3zYUH7Vh0ISPIyS1SQs4ni81o114/jOmbFa/b2qhKSOZkAgXhvBTRUurAXsDTEqqIaZaITsVD/m/KIdVWBw"}}, "unsigned": {"age_ts": 1570042061551}}veQ?=$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829{"stream_ordering": 1788}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk"], "prev_events": ["$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc"], "type": "m.room.member", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-339:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-339", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-339:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042058559, "hashes": {"sha256": "ozxjg6SMSy078yYP7bec22mtD3+HFR1x6y4ZuAeMooo"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "gqyB4dbOdQhKt2gphaOKMtVSwx41HDIawuPoGUoskAIjQVoLCZM8FPgaeGXSyPcNJBKHJXh1Ob/4yRz/McE3AQ"}, "localhost:8800": {"ed25519:a_OdAo": "TEUxUF9zq549k0XPfvESpC9oVl8bKjurgya9b7E7/ij/y+sEJ70mlsCFsi5qV+iHGHfpkfBQqfueswsSUq4aCQ"}}, "unsigned": {"replaces_state": "$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc", "age_ts": 1570042058561}} 8Oc( w <  P  d ) x =  Q e*y>Rf+z?Sg,{@8C]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8B]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8A]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8@]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8?]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8>]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8=]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8<]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH8;]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8:]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE89]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH88]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS87]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE86]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP85]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ84]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM83]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO82]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF81]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT80]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8/]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZ8.]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8-]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8,]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY8+]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM8*]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ8)]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO8(]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJ8']!@anon-20191002_181700-369:localhost:8800PMLSUBDYRA8&]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJ8%]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXT8$]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWO8#]!@anon-20191002_181700-366:localhost:8800FABJQITKMR8"]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXF8!]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTB8 ]!@anon-20191002_181700-360:localhost:8800XKNFVZJCRE8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJ8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSUR8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBR8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERT8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILN8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFN8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKH8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJI8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRW8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMP8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAI8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFR8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYS8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZ8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROP8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYU8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHA8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML8 ]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP8 ]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW *Dc1Ui7o= puC>{)IO [j8# v D  | J  P  cCR0Rl4rzMzq53DIP0pH1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak 1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I 41e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 $1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsJ1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijku1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug91e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cb1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow@1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cm1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EI1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 01e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE $1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8t0e$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYD1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4q1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw%1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx901e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4J1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg A1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M_1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8h2 >L\ l 0 | @  P  ` $ p 4DTNy2]W}9b&9 Q !RYNJAGdRhIlwRZFbrO:localhost:8800publicshared9 Q !MqstbCLZIQFiYNHrqR:localhost:8800publicshared9 Q !WuiaqqIOvBjgETqdus:localhost:8800publicshared9 Q !bQDOrbAknnQZfUbhgS:localhost:8800publicsharedA Q !GSxvxNevpCiwmFCHys:localhost:8800invitesharedcan_joinT QC !yfizglmCXdcqCgDrTr:localhost:8800#__ANON__-16:localhost:8800publicsharedA Q !XnUZiYJDWVNGfsBnGz:localhost:8800invitesharedcan_joinT QC !ePtMOPPOgOcBIMNZpn:localhost:8800#__ANON__-15:localhost:8800publicshared9 Q !YGUjVdVdpcQoGkRnWB:localhost:8800publicsharedD Q# !IZkczIYykpZDvjuUWn:localhost:8800A room namepublicshared9 Q !zuCqeooOnfWkYrQdxA:localhost:8800publicsharedD Q# !vttkrtSyHEJXVMlvLo:localhost:8800A room namepublicshared9 Q !whuymJoLfUdkFdxoyE:localhost:8800publicsharedD Q# !yTQmLDAxZscWKLMSWh:localhost:8800A room namepublicsharedD Q# !eWRdwtyqHvuxZFvhNS:localhost:8800A room namepublicsharedD Q# !UGVFuRGyPQmBbGsEDo:localhost:8800A room namepublicsharedD Q# !AMLmLqizBFklpqKibP:localhost:8800A room namepublicsharedD Q# !rWGwSSefrZzQYCYFHs:localhost:8800A room namepublicsharedD Q# !HXfrGcvJCbRItyQLVE:localhost:8800A room namepublicsharedD Q# !HusOrLtWZTLbmQZxmm:localhost:8800A room namepublicsharedD Q# !BpTqIemsWFZIqTcgJO:localhost:8800A room namepublicsharedD Q# !YQATbgbLImCDamiDHC:localhost:8800A room namepublicsharedD Q# !svYOOXWZHtQQzlMcEP:localhost:8800A room namepublicshared9~ Q !CGckPHdSYcIocFvRAq:localhost:8800publicshared9} Q !BoyzlWNkRPncpDjBDg:localhost:8800publicshared9| Q !djwLhpJUYOKsgQtrky:localhost:8800publicshared9{ Q !bkwyieHZwSMJfuSKvV:localhost:8800publicshared9z Q !XcaKxZsPvbZhAGKKdx:localhost:8800publicshared9y Q !jDKAOtmeAGbYTpwyEW:localhost:8800publicshared9x Q !JYLMokjOhZZlmbZvTf:localhost:8800publicshared9w Q !zoTQAhGwmDDUECKtbL:localhost:8800publicshared9v Q !NeYaCeYNFATCqlrlGT:localhost:8800publicshared9u Q !YtVXQjSPgVtbxrzUOA:localhost:8800publicshared9t Q !zsXPhIPzeXXLvuazzQ:localhost:8800publicshared9s Q !WFHIeSFQyuugGeBFxW:localhost:8800publicshared9r Q !QMrkSPlQDGborAyWtQ:localhost:8800publicshared9q Q !mBQpGaIiadEuKBXfOw:localhost:8800publicshared9p Q !xXYMxashIZAUOTuGAJ:localhost:8800publicshared9n Q !ozgnwUlebxvzLVwyHW:localhost:8800publicshared9o Q !QcaNrIiUsWpTiVGOnt:localhost:8800publicshared9l Q !csWEXfVEVxdviNvgAd:localhost:8800publicshared9m Q !rQeYcODvQiLsOIbQrJ:localhost:8800publicshared9k Q !aHyAJEOSdKqTiRjOvw:localhost:8800publicjoined9j Q !hnQOBexFYpvJntEChZ:localhost:8800publicjoined9i Q !hDAzBWYEyRVBRlrCHh:localhost:8800publicshared9h Q !fkvdYkesQOFCAQkzky:localhost:8800publicshared9g Q !OWGKxAmTrHLciIdrJi:localhost:8800publicshared9f Q !aknLNLxfChlLvFYhkJ:localhost:8800publicshared9e Q !HWTlaNxUKnDsrtlOxU:localhost:8800publicshared9d Q !pUSFAnuwUuMlbiInDR:localhost:8800publicshared9c Q !SrMQpDMFREKRMELwbL:localhost:8800publicjoined9b Q !bNSXSTadOMhIrYpMzH:localhost:8800publicjoined9a Q !TlJCaYlCkOOVzFDlLx:localhost:8800publicjoined9` Q !bOSxzttDtclnrWnLov:localhost:8800publicshared9_ Q !DnUHoxreGexNmjSVpq:localhost:8800publicshared9^ Q !rwUuVBrftGHDBOlEZm:localhost:8800publicshared9] Q !CkNvQnbApPIcuKygDk:localhost:8800publicshared9\ Q !NboFFVLpJHTeuUKCjM:localhost:8800publicshared9[ Q !aZwMKYDXJRlSKjQNWM:localhost:8800publicshared9Z Q !XiwGxQKwjgutEClKUy:localhost:8829publicshared9Y Q !mTlCLZQCmfDuQsJxxp:localhost:8800publicshared9X Q !PEcOacvKaBKpXjytEF:localhost:8800publicshared I(h@ X 0  h @  x P ( X0xP(`8pH `8xP(pH  z S ,  i B   X 0 `(@(@P'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hgjYwwwjWJNgwrzOto:localhost:8800_'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800p'Q!iKezIvJyjkNqKayFju:localhost:8800 f'Q!iKezIvJyjkNqKayFju:localhost:8800 e'Q!iKezIvJyjkNqKayFju:localhost:8800 d'Q!iKezIvJyjkNqKayFju:localhost:8800 c'Q!iKezIvJyjkNqKayFju:localhost:8800 b'Q!iKezIvJyjkNqKayFju:localhost:8800 a'Q!iKezIvJyjkNqKayFju:localhost:8800 `'Q!iKezIvJyjkNqKayFju:localhost:8800 _'Q!iKezIvJyjkNqKayFju:localhost:8800 ^'Q!iKezIvJyjkNqKayFju:localhost:8800 ]'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800  }}eQa$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1795}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o"], "type": "a.madeup.test.state", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"my_key": 1}, "depth": 7, "prev_state": [], "state_key": "this_state_does_not_change", "origin": "localhost:8800", "origin_server_ts": 1570042067625, "hashes": {"sha256": "05yjpOCQtJ6Xn9bEDTHgCVxTg/QNIryHL81cS8lGElg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4egdGHbaDsSFrOzf0Ys/nGfUXXuZ3o0fJkfSRbTDZfQhnJxuYicWVByxsZreH6JWD3CVS8rcWmNiF4rmYUBFAQ"}}, "unsigned": {"age_ts": 1570042067625}}~|eQa $5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1794}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo"], "type": "a.madeup.test.state", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042066721, "hashes": {"sha256": "oYexf+/pI0mIrV4vRK1ztReRmszCROEiQ+WMKslqSjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6AOanfXqATKIuDGFabJ+UFUafR90AzhIApWZXRg7MS7xbvpQNy29yW0Jl0AhO+RB26pdhONkQzeSlNZb7UemDQ"}}, "unsigned": {"age_ts": 1570042066721}}{eQa$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1793}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY"], "type": "m.room.history_visibility", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042064871, "hashes": {"sha256": "cW5183KFCY80w7WbKa8NkQtTivHzk28EWRM31ZAaMx8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u6YAz1SRjvh8GCDMpLwLUkHRyv/OBmSKZqk9FrpzZDzspu/1hMJh7ueUhLZmtWB3wZYZ+L8ZxTxJ/SBehGtIDg"}}, "unsigned": {"age_ts": 1570042064871}}tzeQau$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1792}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c"], "type": "m.room.join_rules", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042063777, "hashes": {"sha256": "1DM5cz6mwLbIHf5NYf3Y9UHH97FYjDWeK/tVbKrNVwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TMEVW9w3nuOuHRFdkIMx51G3rS7cW4OAM+7F1PVVF1MlDf6qwP79RRR9xZxbZ26M2TDk+I/q3pse9PQ/L53jCA"}}, "unsigned": {"age_ts": 1570042063777}} Cj8p> v D  | J  P  V $ \ *b0h6n< tBzHN1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wx1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91ww1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4'1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4&1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wv1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIw1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIv1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIu1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE 1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE 1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE I1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE H1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4k1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4j1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4i1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo 1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo 1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo 1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY(1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY'1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY&1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw X1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw W1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw V1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc11e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc01e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc/1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc 71e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc 61e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc 51e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI 41e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI 31e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI 21e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4ga1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g`1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g_1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC501e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC501e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAJ1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAI1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAH1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAG1e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic !  @ P K y HXS^iQ3 ew!NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.state$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2QoQ? ev!NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibility$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-YgQ/ eu!NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rules$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzoiQ3 et!NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA Q']es!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3YcQ' er!NboFFVLpJHTeuUKCjM:localhost:8800m.room.create$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs{Q31eq!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYQ3Aep!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_change$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio{~Q31eo!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8o}Q? en!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibility$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsg|Q/ em!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rules$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEi{Q3 el!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y zQ']ek!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokcyQ' ej!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.create$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresixQ3 ei!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw wQ']eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs vQ']eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4ouQ? eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibility$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90gtQ/ eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rules$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0isQ3 eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levels$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQcrQ' eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.create$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg{qQ31eg!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIpQ3Aef!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_change$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM{oQ31ee!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkonQ? ed!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibility$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkgmQ/ ec!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rules$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEilQ3 eb!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 kQ']ea!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQocjQ' e`!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.create$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0{iQ31e_!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIhQ3Ae^!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_change$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI{gQ31e]!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oofQ? e\!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibility$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo A=k6a,Z% Q   J  v A m :  f 1_*V!O{Frb-Y$4]@anon-20191002_181700-374:localhost:8800m4Q4]@anon-20191002_181700-373:localhost:8800m4P4]@anon-20191002_181700-372:localhost:8800m4O4]@anon-20191002_181700-371:localhost:8800m4N4]@anon-20191002_181700-370:localhost:8800m4M2[@anon-20191002_181700-36:localhost:8800m44]@anon-20191002_181700-369:localhost:8800m4L4]@anon-20191002_181700-368:localhost:8800m4K4]@anon-20191002_181700-367:localhost:8800m4J4]@anon-20191002_181700-429:localhost:8800m44]@anon-20191002_181700-428:localhost:8800m44]@anon-20191002_181700-427:localhost:8800m44]@anon-20191002_181700-426:localhost:8800m44]@anon-20191002_181700-425:localhost:8800m44]@anon-20191002_181700-424:localhost:8800m44]@anon-20191002_181700-422:localhost:8800m4~4]@anon-20191002_181700-421:localhost:8800m4}4]@anon-20191002_181700-420:localhost:8800m4|2[@anon-20191002_181700-41:localhost:8800m44]@anon-20191002_181700-419:localhost:8800m4{4]@anon-20191002_181700-418:localhost:8800m4z4]@anon-20191002_181700-417:localhost:8800m4y4]@anon-20191002_181700-416:localhost:8800m4x4]@anon-20191002_181700-415:localhost:8800m4w4]@anon-20191002_181700-414:localhost:8800m4v4]@anon-20191002_181700-413:localhost:8800m4u4]@anon-20191002_181700-412:localhost:8800m4t4]@anon-20191002_181700-411:localhost:8800m4s2[@anon-20191002_181700-40:localhost:8800m44]@anon-20191002_181700-409:localhost:8800m4r4]@anon-20191002_181700-408:localhost:8800m4q4]@anon-20191002_181700-407:localhost:8800m4p4]@anon-20191002_181700-405:localhost:8800m4o4]@anon-20191002_181700-404:localhost:8800m4n4]@anon-20191002_181700-403:localhost:8800m4m4]@anon-20191002_181700-401:localhost:8800m4l4]@anon-20191002_181700-400:localhost:8800m4k2[@anon-20191002_181700-39:localhost:8800m44]@anon-20191002_181700-399:localhost:8800m4j4]@anon-20191002_181700-398:localhost:8800m4i4]@anon-20191002_181700-397:localhost:8800m4h4]@anon-20191002_181700-396:localhost:8800m4g4]@anon-20191002_181700-395:localhost:8800m4f4]@anon-20191002_181700-394:localhost:8800m4e4]@anon-20191002_181700-393:localhost:8800m4d4]@anon-20191002_181700-392:localhost:8800m4c4]@anon-20191002_181700-391:localhost:8800m4b4]@anon-20191002_181700-390:localhost:8800m4a2[@anon-20191002_181700-38:localhost:8800m44]@anon-20191002_181700-389:localhost:8800m4`4]@anon-20191002_181700-388:localhost:8800m4_4]@anon-20191002_181700-387:localhost:8800m4^4]@anon-20191002_181700-386:localhost:8800m4]4]@anon-20191002_181700-385:localhost:8800m4\4]@anon-20191002_181700-384:localhost:8800m4[4]@anon-20191002_181700-383:localhost:8800m4Z4]@anon-20191002_181700-382:localhost:8800m4Y4]@anon-20191002_181700-381:localhost:8800m4X4]@anon-20191002_181700-380:localhost:8800m4W2[@anon-20191002_181700-37:localhost:8800m44]@anon-20191002_181700-379:localhost:8800m4V4]@anon-20191002_181700-378:localhost:8800m4U4]@anon-20191002_181700-377:localhost:8800m4T4]@anon-20191002_181700-376:localhost:8800m4S4]@anon-20191002_181700-375:localhost:8800m4R }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    t h \ P D 8 ,   x l ` T H < 0 $  |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pd` m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4~ m4} m4| m4{ m4z m4y m4x m4w m4v m4u m4t m4s m4r m4q m4p m4o m4n m4m m4l m4k m4j m4i m4h m4g m4f m4e m4d m4c m4b m4a m4` m4_ m4^ m4] m4\ m4[ m4Z m4Y m4X m4W m4V m4U m4T m4S m4R m4Q m4P m4O m4N m4M m4L m4K m4J m4I m4H m4G m4F m4E m4D m4C m4B m4A m4@ m4? m4> m4= m4< m4; m4: m49 m48 m47 m46 m45 m44 m43 m42 m41 m40 m4/ m4. m4- m4, m4+ m4* m4) m4( m4' m4& m4% m4$ m4# m4" m4! m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4  m4 (P|pdXL@4(th\PD8,  x l ` T H < 0 $    th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 ( m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4~ m4} m4| m4{ m4z m4y m4x m4w m4v m4u m4t m4s m4r m4q m4p m4o m4n m4m m4l m4k m4j m4i m4h m4g m4f m4e m4d m4c m4b m4a m4` m4_ m4^ m4] m4\ m4[ m4Z m4Y m4X m4W m4V m4U m4T m4S m4R m4Q m4P m4O m4N m4M m4L m4K m4J m4I m4H m4G m4F m4E m4D m4C m4B m4A m4@ m4? m4> m4= m4< m4; m4: m49 m48 m47 m46 m45 m44 m43 m42 m41 m40 m4/x m4. m4- m4, m4+ m4* m4) m4( m4' m4& m4% m4$ m4# m4" m4! m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 IX' ] , ~ M xG 2 n yS"H^=-8cmi<tC R ! h 7  s B  0]@anon-20191002_181700-388:localhost:88000]@anon-20191002_181700-391:localhost:88000]@anon-20191002_181700-390:localhost:88000]@anon-20191002_181700-416:localhost:88000]@anon-20191002_181700-413:localhost:88000]@anon-20191002_181700-387:localhost:88000]@anon-20191002_181700-392:localhost:88000]@anon-20191002_181700-408:localhost:88000]@anon-20191002_181700-383:localhost:88000]@anon-20191002_181700-395:localhost:88000]@anon-20191002_181700-377:localhost:88000]@anon-20191002_181700-412:localhost:88000]@anon-20191002_181700-385:localhost:88000]@anon-20191002_181700-379:localhost:88000]@anon-20191002_181700-368:localhost:88000]@anon-20191002_181700-386:localhost:88000]@anon-20191002_181700-381:localhost:88000]@anon-20191002_181700-369:localhost:88000]@anon-20191002_181700-366:localhost:88000]@anon-20191002_181700-364:localhost:88000]@anon-20191002_181700-378:localhost:88000]@anon-20191002_181700-361:localhost:88000]@anon-20191002_181700-370:localhost:88000]@anon-20191002_181700-372:localhost:88000]@anon-20191002_181700-367:localhost:88000]@anon-20191002_181700-360:localhost:88000]@anon-20191002_181700-355:localhost:88000]@anon-20191002_181700-374:localhost:88000]@anon-20191002_181700-353:localhost:88000]@anon-20191002_181700-371:localhost:88000]@anon-20191002_181700-349:localhost:88000]@anon-20191002_181700-351:localhost:88000]@anon-20191002_181700-357:localhost:88000]@anon-20191002_181700-343:localhost:88000]@anon-20191002_181700-347:localhost:88000]@anon-20191002_181700-389:localhost:88000]J@anon-20191002_181700-319:localhost:8800I0]@anon-20191002_181700-345:localhost:88000]X@anon-20191002_181700-320:localhost:8800T0]R@anon-20191002_181700-329:localhost:8800Q0]Q@anon-20191002_181700-323:localhost:8800P0]O@anon-20191002_181700-321:localhost:8800N0]@anon-20191002_181700-358:localhost:88000]X@anon-20191002_181700-324:localhost:8800U0]@anon-20191002_181700-348:localhost:88000]f@anon-20191002_181700-331:localhost:8800e0]c@anon-20191002_181700-330:localhost:8800b0]}@anon-20191002_181700-342:localhost:8800|W0]@anon-20191002_181700-433:localhost:88000]@anon-20191002_181700-450:localhost:88000]@anon-20191002_181700-448:localhost:88000]@anon-20191002_181700-446:localhost:88000]]@anon-20191002_181700-328:localhost:8800\0]\@anon-20191002_181700-327:localhost:8800[0]Z@anon-20191002_181700-326:localhost:8800Y0]@anon-20191002_181700-430:localhost:88000]@anon-20191002_181700-428:localhost:88000]@anon-20191002_181700-425:localhost:88000]@anon-20191002_181700-421:localhost:88000]@anon-20191002_181700-418:localhost:88000]@anon-20191002_181700-415:localhost:88000]{@anon-20191002_181700-341:localhost:8800z0]z@anon-20191002_181700-339:localhost:8800y0]x@anon-20191002_181700-338:localhost:8800w0]v@anon-20191002_181700-337:localhost:8800u0]v@anon-20191002_181700-336:localhost:8800t0]s@anon-20191002_181700-334:localhost:8800q0]s@anon-20191002_181700-333:localhost:8800r0]p@anon-20191002_181700-332:localhost:8800j0]@anon-20191002_181700-398:localhost:88000]@anon-20191002_181700-393:localhost:88000]@anon-20191002_181700-404:localhost:88000]@anon-20191002_181700-394:localhost:8800 |t l d \  T ME=5-%eeQ$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800߁eeQ$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800[eeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800BeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800 QeeQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:8800eeQ$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800ԁeeQ$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800eeQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800 WeeQ$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800xeeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800teeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg!WYyiQAVvitxsLZKVCG:localhost:8800 SeeQ$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800(eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800ӁeeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800eeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800N f < OfkeQac$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1799}{"auth_events": ["$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "type": "m.room.power_levels", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"users": {"@anon-20191002_181700-342:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042071332, "hashes": {"sha256": "J7plpVhkRtZjWLIhmQyj6w0RggX8uPNCZKIRw5TgcTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DL50rEZbm9jZVSZqUpG77uQJ8d9+iA/fDgbabqVOnyRzQz1Q5nv3Pxc5MyA/xssZqm8MTu81CJ4nNPvBNGewBA"}}, "unsigned": {"age_ts": 1570042071332}}veQay$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1798}{"auth_events": ["$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0"], "prev_events": ["$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0"], "type": "m.room.member", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-342", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-342:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042070747, "hashes": {"sha256": "yfuJlBzRPH8kCteyddq+jnSKirDDUUsja2wFy/kWmx8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z5xDyN1/NMGUNEG8FVZY/M/55tLERmx1WH5F09eGytraMH5SDNJrWiiVMLaSpMRvAvKFPnxIu/9ORY72iE9uBQ"}}, "unsigned": {"age_ts": 1570042070747}}ieQa_$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1797}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-342:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042069845, "hashes": {"sha256": "PIwmYZKD7kEyDqs/zP77d9BrEVWatMn2kBKyi3IUalA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k14C6ZY73iKiYVRL1/Qt9Dnx4eclYqUvI0e/rFVAB5kivROzLT8PSWZkHf9xKPGAEM8yV5eJ8kBNPbLbBvOZBQ"}}, "unsigned": {"age_ts": 1570042069845}}@~eQa $FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1796}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI"], "type": "a.madeup.test.state", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"my_key": 2}, "depth": 8, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042068420, "hashes": {"sha256": "+zvqzeflTgmJJfYZvxSP2qsR1TkXHM0OJHVpCDGdfm8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8r4Xw45TEE2pQc53/uv+vRzrxKu2wy9fCyBKP+wcbNhe0kEZSEUFQ+sEn6ZB4cWyKp6nTFqWA1+e3/2Kt4AIBg"}}, "unsigned": {"age_ts": 1570042068420, "replaces_state": "$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o"}} T]  _  )Q_+4\| FQ']e=!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEjEQ3 eQ3Ae,!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_change$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio|=Q31e+!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8p<Q? e*!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibility$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsh;Q/ e)!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rules$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEj:Q3 e(!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y 9Q']e'!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokd8Q' e&!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.create$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresj7Q3 e%!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 6Q']e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 5Q']e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4p4Q? e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibility$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90h3Q/ e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rules$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0j2Q3 e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levels$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQd1Q' e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.create$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg(0Q31ee !mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk/Q3Ae !mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_change$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM|.Q31e !mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkp-Q? e !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibility$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkh,Q/ e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rules$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEj+Q3 e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 *Q']e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQod)Q' e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.create$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0((Q31ee!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o <#yoe[Q~tj`VLB8.$G=3) ukaWMC9/%wmcYOE;1' }si_UKA7-[QG=3) yncXMB7,!  | q f [ P E : / $    u i ] Q E 9 - !  y m a U I = 1 %   } q e Y M A 5 )    u i ] Q E 9 - !  ymaUI=1% }qe ah aA a@ a? a> a= a< a; a: a8 a6 a5 a a4 a2 a0 a/ a. a- a+ a) a( a% a$ a" a! a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ap ao an am al ak aj ai ag af ae ad ac ab aa a` a_ a^ a] a\ a[ aY aX aV aU aS aR aP aO aM aL aJ aI aH aG aF aE aD aC aB a a a a} a| a{ ay ax aw av au at as ar aq m m m m m m m~ m{ mx mu mr mo ml mh me mb m_ m\ m[ mX mW mT mS mP mO mL mK mH mF mD mB m@ m> m= m: m8 m6 m5 m2 m. m, m* m( m% m" m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m{ my mw mv ms mq mo mW mU mS mQ mO mM mK mI mG mC mA m? m= m; m9 m8 m5 m3 m. m m m m m m m m m a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a  4 h 9md]c@anon-20191002_181700-363:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwo127.0.0.1hd]c@anon-20191002_181700-354:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAo127.0.0.1^d]c@anon-20191002_181700-362:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1wo127.0.0.1fd]c@anon-20191002_181700-361:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQo127.0.0.1ed]c@anon-20191002_181700-360:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAo127.0.0.1da[a@anon-20191002_181700-35:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCg127.0.0.1d]c@anon-20191002_181700-359:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAo127.0.0.1cd]c@anon-20191002_181700-358:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQo127.0.0.1bd]c@anon-20191002_181700-357:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAo127.0.0.1ad]c@anon-20191002_181700-356:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5Qo127.0.0.1`d]c@anon-20191002_181700-355:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwo127.0.0.1_ 9p  T I>w pC e]]Q=$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw@anon-20191002_181700-354:localhost:8800@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-354, e]]Q$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk@anon-20191002_181700-353:localhost:8800@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800leaveC e]]Q=$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ@anon-20191002_181700-353:localhost:8800@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800joinanon-20191002_181700-353E e]]Q=$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk@anon-20191002_181700-353:localhost:8800@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800inviteanon-20191002_181700-353C e]]Q=$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk@anon-20191002_181700-352:localhost:8800@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800joinanon-20191002_181700-352C e]]Q=$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0@anon-20191002_181700-351:localhost:8800@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800joinanon-20191002_181700-351E e]]Q=$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs@anon-20191002_181700-351:localhost:8800@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800inviteanon-20191002_181700-351C e]]Q=$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro@anon-20191002_181700-350:localhost:8800@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800joinanon-20191002_181700-3500 e]]Q$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY@anon-20191002_181700-349:localhost:8800@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800joinborisC e]]Q=$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY@anon-20191002_181700-349:localhost:8800@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800joinanon-20191002_181700-3490 e]]Q$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY@anon-20191002_181700-348:localhost:8800@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800joinborisC e]]Q=$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4@anon-20191002_181700-348:localhost:8800@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800joinanon-20191002_181700-348C e]]Q=$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40@anon-20191002_181700-347:localhost:8800@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800joinanon-20191002_181700-347E e]]Q=$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE@anon-20191002_181700-347:localhost:8800@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800inviteanon-20191002_181700-347C e]]Q=$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y@anon-20191002_181700-346:localhost:8800@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800joinanon-20191002_181700-346C e]]Q=$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok@anon-20191002_181700-345:localhost:8800@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800joinanon-20191002_181700-345C e]]Q=$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs@anon-20191002_181700-343:localhost:8800@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829joinanon-20191002_181700-343C e]]Q=$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4@anon-20191002_181700-344:localhost:8829@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829joinanon-20191002_181700-344E e]]Q=$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro@anon-20191002_181700-343:localhost:8800@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829inviteanon-20191002_181700-343C e]]Q=$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo@anon-20191002_181700-342:localhost:8800@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800joinanon-20191002_181700-342 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m*ffmٝeemLddmёccmbbmaam``m__mͽ^^m͸k]]mͷp\\m͵[[mʹZZmͲYYmͯXXmͯWWmͭVVmͪUUmͦXTTm͠pSSm͛RRm͙@QQm͖PPm͓OOm͋NNm͉MMm͆dLLm͂"KKmJJm{XIImwHHmtBGGmpFFml[EEmhkDDmcCCm_BBm]0AAmZ@@mW??mQ>>mNy==mKP<<mG;;mE[::mA99m=+88m677m-866m+=55m)\44m'33m&x22m%11m#00m#//m#..m --m+,,m+++m**mq))m((m O''m &&m%%mO$$mt!!m^mLm5m m:mmm mymm mm-m߆mmm  m[  m4  mS  m΂  mm$mmUm̽m̺m̷!m̯m̫m̨zm̦m̢m̗?m̔ m̒Im̒+m̒m̑m̑m̑~m̌zm̆m}mxomtmpmhmc m`m]m[OmHmEmCmBm@m>Emzzm.;yym+xxm"wwm Kvvmvuum'ttmssm xrrm 7qqm}ppmoom!nnmmmmllmkkm>jjmiimRhhmggmSmG;mCm;m9]m6Xm3m1m)Fm%m mImmzmHmm ;m lmmm=mmmGm mDmmIm mMm+mmXmmmmm(mm˾m˼xm˻:m˹m˸Im˶m˴m˴m˱mˬm˩m˧+mˤSmˡm˛m˘m˔!mˑmˎmˋmˈ Mj9q?  w E  } K  R X & * ^ ,d2\j8p> vD|JVP$1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI <1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A c1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 }1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsm1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkA1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsI1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIy1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk 1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8C1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMQ1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAF1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0O1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo91e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0|1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo 1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk H1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQQ1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk61e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY}1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY{1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ 1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIB0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM\1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kw1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s *1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM|1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMu0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM`1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU*1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIF  }eQa$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1803}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk"], "type": "a.madeup.test.state", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"my_key": 1}, "depth": 7, "prev_state": [], "state_key": "this_state_does_not_change", "origin": "localhost:8800", "origin_server_ts": 1570042074420, "hashes": {"sha256": "KgV9SQhAr9xXGng55KsIjtE/gyDl/BSElvAjA09NJ9k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MW+wXs3jmBBIEjecVEWxSGsbDHn+iCkFljHbuVsf8lKpV8l6CuU16fZ/6iqvMwF2mKSBeaHTR/GDjZYXTgaFDA"}}, "unsigned": {"age_ts": 1570042074420}}~eQa $Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1802}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk"], "type": "a.madeup.test.state", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042073683, "hashes": {"sha256": "XF6iOmgj/OFJXuAquwAt98dB8OEQu6EtRRufW+JYRFs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YxPnNOrp0viTr6lbx/GAp5SHIvwb6M9JXrN28PHFGHeCbtx3EX9CKIvkyF5aloDVMsFB4v19mGvNOniYhfVIDA"}}, "unsigned": {"age_ts": 1570042073683}}eQa$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1801}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE"], "type": "m.room.history_visibility", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042072706, "hashes": {"sha256": "boa80qkkI2AiCuOhsQlPtJtGd/rfuOPgjoNis28+R/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ME/PdOL/xSB7TovodX6eQTOdpjQpweGUbn7523GY/sa+i3feuFjTZXGEU8H7UkqQwhUbmvy/TCbBSafc6HIrAw"}}, "unsigned": {"age_ts": 1570042072706}}teQau$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1800}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14"], "type": "m.room.join_rules", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042072055, "hashes": {"sha256": "PIvCkOLsA43LdoIpJ6PLBiVCkW3bVXmEPPltE+8y1Y4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pqKlDSh5PY+wHfnbvQUZUlYtDGVtVX/7LFWfBi587iNzolizGT5RrKOYoAHpP/dzuAT2YJdXzLrZqdA4Dg5/BQ"}}, "unsigned": {"age_ts": 1570042072055}} VnvN&d<`8pH ^ 6  n F  ~ V .  f >  v N &^6nF~V.f>FxR*('Q$1570042705210LweYn:localhost:8800w'Q$1570042705210LweYn:localhost:8800v'Q$1570042705210LweYn:localhost:8800u'Q$1570042666166IBpPy:localhost:8800%.'Q$1570042706211NniIl:localhost:8800z'Q$1570042706211NniIl:localhost:8800y'Q$1570042706211NniIl:localhost:8800x'Q$1570042672172vPvbe:localhost:8800/'Q$1570042672172vPvbe:localhost:8800.'Q$1570042671171AQZaz:localhost:8800-%M$15700426692GLpqH:localhost:8829,%M$15700426692GLpqH:localhost:8829+%M$15700426692GLpqH:localhost:8829*'Q$1570042667167mhSmJ:localhost:8800)'Q$1570042667167mhSmJ:localhost:8800('Q$1570042667167mhSmJ:localhost:8800''Q$1570042667167mhSmJ:localhost:8800&'Q$1570042704209JQwmT:localhost:8800t'Q$1570042704209JQwmT:localhost:8800s'Q$1570042704209JQwmT:localhost:8800r'Q$1570042704208yLiWU:localhost:8800q'Q$1570042704208yLiWU:localhost:8800p'Q$1570042704208yLiWU:localhost:8800o'Q$1570042703207yqsGA:localhost:8800n'Q$1570042703207yqsGA:localhost:8800m'Q$1570042702206BIYsS:localhost:8800l'Q$1570042699203fHFjU:localhost:8800k'Q$1570042699203fHFjU:localhost:8800j'Q$1570042699203fHFjU:localhost:8800i'Q$1570042699203fHFjU:localhost:8800h'Q$1570042698202juBqr:localhost:8800g'Q$1570042698202juBqr:localhost:8800f'Q$1570042698202juBqr:localhost:8800e'Q$1570042698202juBqr:localhost:8800d'Q$1570042697200mrENr:localhost:8800c'Q$1570042697200mrENr:localhost:8800b'Q$1570042697200mrENr:localhost:8800a'Q$1570042697199ROUNP:localhost:8800`'Q$1570042697199ROUNP:localhost:8800_'Q$1570042697199ROUNP:localhost:8800^'Q$1570042696198qbnxj:localhost:8800]'Q$1570042696198qbnxj:localhost:8800\'Q$1570042696198qbnxj:localhost:8800['Q$1570042695197vezoL:localhost:8800Z'Q$1570042695197vezoL:localhost:8800Y'Q$1570042694196OHsWc:localhost:8800X'Q$1570042691193uVdPZ:localhost:8800W'Q$1570042691193uVdPZ:localhost:8800V'Q$1570042691193uVdPZ:localhost:8800U'Q$1570042690191yQfnl:localhost:8800T'Q$1570042690191yQfnl:localhost:8800S'Q$1570042690191yQfnl:localhost:8800R'Q$1570042689190UkvMv:localhost:8800Q'Q$1570042689190UkvMv:localhost:8800P'Q$1570042689190UkvMv:localhost:8800O'Q$1570042688189axPjv:localhost:8800N'Q$1570042688189axPjv:localhost:8800M'Q$1570042688189axPjv:localhost:8800L'Q$1570042687188ddQmS:localhost:8800K'Q$1570042687188ddQmS:localhost:8800J'Q$1570042687188ddQmS:localhost:8800I'Q$1570042687187gbArC:localhost:8800H'Q$1570042687187gbArC:localhost:8800G'Q$1570042686186Qxqmn:localhost:8800F'Q$1570042681182ZiRRU:localhost:8800E'Q$1570042681182ZiRRU:localhost:8800D'Q$1570042681182ZiRRU:localhost:8800C'Q$1570042680181TFyrx:localhost:8800B'Q$1570042680181TFyrx:localhost:8800A'Q$1570042680181TFyrx:localhost:8800@'Q$1570042680180uuIxG:localhost:8800?'Q$1570042680180uuIxG:localhost:8800>'Q$1570042679179ZJCqE:localhost:8800=%M$15700426753WBESe:localhost:8829<%M$15700426753WBESe:localhost:8829;%M$15700426753WBESe:localhost:8829:'Q$1570042674175gurnU:localhost:88009'Q$1570042674175gurnU:localhost:88008'Q$1570042674175gurnU:localhost:88007'Q$1570042674175gurnU:localhost:88006'Q$1570042673174OxGuP:localhost:88005'Q$1570042673174OxGuP:localhost:88004'Q$1570042673174OxGuP:localhost:88003'Q$1570042672173XsxsH:localhost:88002'Q$1570042672173XsxsH:localhost:88001'Q$1570042672173XsxsH:localhost:88000x a} { y w u sqomkigeca~KeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~JeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~IeeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829~HeeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~GeeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~FeeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~EeeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~DeeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~CeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~BeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~AeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~@eeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~?eeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~>eeQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~=eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~<eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829~;eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~:eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~9eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~8eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~7eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~6eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~5eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~4eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~3eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~2eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~1eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~0eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~/eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~.eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~-eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800 P R N JFBXV $e'Q ]$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsm.room.member!XiwGxQKwjgutEClKUy:localhost:8829mOm@anon-20191002_181700-343:localhost:8800,!e?Q ]$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90m.room.history_visibility!XiwGxQKwjgutEClKUy:localhost:8829mtm@anon-20191002_181700-344:localhost:8829$e/Q ]$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0m.room.join_rules!XiwGxQKwjgutEClKUy:localhost:8829m^m@anon-20191002_181700-344:localhost:8829&e3Q ]$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQm.room.power_levels!XiwGxQKwjgutEClKUy:localhost:8829mLm@anon-20191002_181700-344:localhost:8829 e'Q ]$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4m.room.member!XiwGxQKwjgutEClKUy:localhost:8829m5m@anon-20191002_181700-344:localhost:8829 e'Q ]$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwgm.room.create!XiwGxQKwjgutEClKUy:localhost:8829m m@anon-20191002_181700-344:localhost:8829 e'Q ]$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brom.room.member!XiwGxQKwjgutEClKUy:localhost:8829m:mE@anon-20191002_181700-344:localhost:8829(e7Q ] $9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800(e7Q ] $Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0a.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm @anon-20191002_181700-342:localhost:8800(e7Q ] $TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZga.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m mT@anon-20191002_181700-342:localhost:8800(e7Q ] $a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mym@anon-20191002_181700-342:localhost:8800(e7Q ] $H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800(e7Q ] $z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m m@anon-20191002_181700-342:localhost:8800(e7Q ] $h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74a.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800(e7Q ] $JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mica.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m-m@anon-20191002_181700-342:localhost:8800(e7Q ] $M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00a.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m߆m6@anon-20191002_181700-342:localhost:8800(e7Q ] $PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm\@anon-20191002_181700-342:localhost:8800(e7Q ] $p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm\@anon-20191002_181700-342:localhost:8800( e7Q ] $gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCca.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800& e3Q ]$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIa.madeup.test.state!mTlCLZQCmfDuQsJxxp:localhost:8800m[m@anon-20191002_181700-342:localhost:8800& e3Q ]$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMa.madeup.test.state!mTlCLZQCmfDuQsJxxp:localhost:8800m4m֬@anon-20191002_181700-342:localhost:8800& e3Q ]$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVka.madeup.test.state!mTlCLZQCmfDuQsJxxp:localhost:8800mSm@anon-20191002_181700-342:localhost:8800, e?Q ]$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkm.room.history_visibility!mTlCLZQCmfDuQsJxxp:localhost:8800m΂m@anon-20191002_181700-342:localhost:8800 -RM H C > 9 4/*|%w rmhc TFQe0!aZwMKYDXJRlSKjQNWM:localhost:8800$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0TEQe.!aZwMKYDXJRlSKjQNWM:localhost:8800$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWATDQe-!aZwMKYDXJRlSKjQNWM:localhost:8800$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYTCQe,!aZwMKYDXJRlSKjQNWM:localhost:8800$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioTBQe+!aZwMKYDXJRlSKjQNWM:localhost:8800$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8TAQe*!aZwMKYDXJRlSKjQNWM:localhost:8800$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsT@Qe)!aZwMKYDXJRlSKjQNWM:localhost:8800$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjET?Qe(!aZwMKYDXJRlSKjQNWM:localhost:8800$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_YT>Qe'!aZwMKYDXJRlSKjQNWM:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokT=Qe&!aZwMKYDXJRlSKjQNWM:localhost:8800$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresT<Qe%!XiwGxQKwjgutEClKUy:localhost:8829$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwT;Qe$!XiwGxQKwjgutEClKUy:localhost:8829$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsT:Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgT9Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pET8Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0T7Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgT6Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT5Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0T4Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT3Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sT2Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgT1Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT0Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sT/Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sT.Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sT-Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74T,Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sT+Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT*Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74T)Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sT(Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT'Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00T&Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74T%Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT$Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00T#Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMT"Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00T!Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMT Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcTQe !mTlCLZQCmfDuQsJxxp:localhost:8800$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcTQe !mTlCLZQCmfDuQsJxxp:localhost:8800$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAITQe !mTlCLZQCmfDuQsJxxp:localhost:8800$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMTQe !mTlCLZQCmfDuQsJxxp:localhost:8800$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk  |t l d \ T LE= 5-%eeQ$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800 ՁeeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800eeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800 ՁeeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800 0eeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800)eeQ$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800 QeeQ$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800-eeQ$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800teeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800OeeQ$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko!GixhPUMvtKSWoKRgvw:localhost:8800,eeQ$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800eeQ$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:88004eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800 ʁeeQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA!aknLNLxfChlLvFYhkJ:localhost:8800AeeQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800 ;eeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800eeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800EeeQ$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800 0eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800heeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800b -RM H C > 9 4/*|%w rmhc TQe!bOSxzttDtclnrWnLov:localhost:8800$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUTQe!bOSxzttDtclnrWnLov:localhost:8800$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwTQe!bOSxzttDtclnrWnLov:localhost:8800$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTETQe!bOSxzttDtclnrWnLov:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskTQe!bOSxzttDtclnrWnLov:localhost:8800$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4TQe!DnUHoxreGexNmjSVpq:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0T Qe!DnUHoxreGexNmjSVpq:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsT Qe!DnUHoxreGexNmjSVpq:localhost:8800$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwT Qe!DnUHoxreGexNmjSVpq:localhost:8800$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYT Qe!DnUHoxreGexNmjSVpq:localhost:8800$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIT Qe!DnUHoxreGexNmjSVpq:localhost:8800$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwTQe!DnUHoxreGexNmjSVpq:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroTQe!DnUHoxreGexNmjSVpq:localhost:8800$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQTQe!rwUuVBrftGHDBOlEZm:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYTQe!rwUuVBrftGHDBOlEZm:localhost:8800$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0TQe!rwUuVBrftGHDBOlEZm:localhost:8800$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4TQe!rwUuVBrftGHDBOlEZm:localhost:8800$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQTQe!rwUuVBrftGHDBOlEZm:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYTQe!rwUuVBrftGHDBOlEZm:localhost:8800$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeITQe!CkNvQnbApPIcuKygDk:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYTQe!CkNvQnbApPIcuKygDk:localhost:8800$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYT~Qe~!CkNvQnbApPIcuKygDk:localhost:8800$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQT}Qe}!CkNvQnbApPIcuKygDk:localhost:8800$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foT|Qe|!CkNvQnbApPIcuKygDk:localhost:8800$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgT{Qe{!CkNvQnbApPIcuKygDk:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4TzQez!CkNvQnbApPIcuKygDk:localhost:8800$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9ATyQey!NboFFVLpJHTeuUKCjM:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40TxQex!NboFFVLpJHTeuUKCjM:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeETwQew!NboFFVLpJHTeuUKCjM:localhost:8800$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2QTvQev!NboFFVLpJHTeuUKCjM:localhost:8800$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-YTuQeu!NboFFVLpJHTeuUKCjM:localhost:8800$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzoTtQet!NboFFVLpJHTeuUKCjM:localhost:8800$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KATsQes!NboFFVLpJHTeuUKCjM:localhost:8800$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3YTrQer!NboFFVLpJHTeuUKCjM:localhost:8800$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2EgcsTqQeq!aZwMKYDXJRlSKjQNWM:localhost:8800$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYTpQep!aZwMKYDXJRlSKjQNWM:localhost:8800$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioToQeo!aZwMKYDXJRlSKjQNWM:localhost:8800$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8TnQen!aZwMKYDXJRlSKjQNWM:localhost:8800$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsTmQem!aZwMKYDXJRlSKjQNWM:localhost:8800$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjETlQel!aZwMKYDXJRlSKjQNWM:localhost:8800$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_YTkQek!aZwMKYDXJRlSKjQNWM:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokTjQej!aZwMKYDXJRlSKjQNWM:localhost:8800$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresTiQei!XiwGxQKwjgutEClKUy:localhost:8829$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwThQeh!XiwGxQKwjgutEClKUy:localhost:8829$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsTgQeg!mTlCLZQCmfDuQsJxxp:localhost:8800$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI  <Vo eQG$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "198", "stream_ordering": 1807}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 3}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042076378, "hashes": {"sha256": "shI6Db3VQ2IkpMBsPIKA55eubPCXbR2O3Xb89LcXV3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TAkISyiN/rjXS4H2sihUTcxfDXHnYNyb7VrsI5zzO3e+6fJmdW8KYNDHo19ffps/Nlyu29s6oesxbXIQHkOaBg"}}, "unsigned": {"age_ts": 1570042076378}}oeQG$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "197", "stream_ordering": 1806}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 2}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042076372, "hashes": {"sha256": "wUFeoGqHqmaj8sZoNnVV2w1iZV1y3gNL1Ik3Opbze7M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DnVGrJubF+nMEQxX+pbXRSyIF8FGm3oSz9PsVPsFecOIAj08Uo/4hTpf+PqeR9RTXobwZXr/Rd5TOzLGfaIjBQ"}}, "unsigned": {"age_ts": 1570042076372}}oeQG$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "196", "stream_ordering": 1805}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042076367, "hashes": {"sha256": "o2Pu19y/UF6/dLjmunOMTMNUDLp5/zxrKBavCtDhXtA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4DTwI4BowLq+H7ZcsIkkvaeqjJraNqcB7uEwHVUBnGDxa3Chy/+3cuzbaK+2bSCy8rwjr7ivD3RDQGaS8IV4Bw"}}, "unsigned": {"age_ts": 1570042076367}}@eQa $TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1804}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM"], "type": "a.madeup.test.state", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"my_key": 2}, "depth": 8, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042075483, "hashes": {"sha256": "JDIM9EjgLNVvppu+qz/kT9vQf7GHGpAXv4q1n7wffjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cwjtsd+Cb9Y/4Jbh7dtHWCrANy1OjXo0Ffp4yjpNCHYzE7OmOLWJdPKBkRQo2C+dwaEQ/Ui5YpVGE3LdFiFuCQ"}}, "unsigned": {"age_ts": 1570042075483, "replaces_state": "$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk"}}  P eQ $z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "202", "stream_ordering": 1811}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM", "$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM", "$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 7}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077965, "hashes": {"sha256": "QU7h1NB31f4/VtpOkKrvcw4iP5KZ5sZPsb03MxpHMOw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+8ky+0JBtQX8YWcdtvJGeeEeTVH8Aj+iqDmHnig8YDIhc2w4UYmEruxnnv6TUOtUdsD/TTePaXYwszX500f0Aw"}}, "unsigned": {"age_ts": 1570042077965}}P eQ $h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "201", "stream_ordering": 1810}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc", "$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM", "$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 6}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077430, "hashes": {"sha256": "BwQKRufcQ4QMyttex/i61dk+27nAjrA3ZI+x+s7Xc7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nd9u7sa7SAFiJLt5XdoU4juFTa4liTV/uxflg9UuQhHMmtYR3/MMldjXlDqwtJWOH0g6Fp788GA7BMt0oF6eDg"}}, "unsigned": {"age_ts": 1570042077430}}P eQ $JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "200", "stream_ordering": 1809}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc", "$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM", "$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 5}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077229, "hashes": {"sha256": "SQgWoC6z1ekCSAJHSzBHl2wHvxZnto2uUhk9xTffLWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UGKcoNegFbIGNaRfXdSzlTHjvBpaAEXyDdZZIUkrbeqpdX6tpRl7vBjldPKEtQMzmZNUeOYmTuuZ0mg+wb06CA"}}, "unsigned": {"age_ts": 1570042077229}}p eQI$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "199", "stream_ordering": 1808}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 4}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077062, "hashes": {"sha256": "yf0Ed2b2Mno6weyPYanIJJAGUZ3DH6vum6ArjLZSFjw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "53L3s1u7++W2HfzzZS7HvzWRN8ZpH9VLckmD8mvKwiQ/eRSpQ98iN0GMcTIe86suDUk9yen9b0rLzSjai6FRDg"}}, "unsigned": {"age_ts": 1570042077062}} $M \ *b1i7o= uC W |J PW%  ]+j8 p> w E  Q } K P01e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk r1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk O1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc$1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY51e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEB1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc \1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUJ1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U+1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE<1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MT1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90,1e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUS1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw )1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oS1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 J1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo`1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8q1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE71e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4b1e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs11e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym41e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao;1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo/0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU=1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 z1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00F1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk@31e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E %1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY _1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM e1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg \1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E Y1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 61e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs $1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokg1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYR1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM L1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD780e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8 1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgX1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-41e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIV1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc=1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos,1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI .1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0  JQb  V $ |  J \ *0 D h6jo= v D P8 vp> \*V$|J1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 @1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E w1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgo1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIe1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8X1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsd1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE{0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY 21e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE u1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 f1e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0S1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk20e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk=1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM71e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE91e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYl1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY;1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0K1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 41e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfof1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUv1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 21e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA i1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ U1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIT1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 21e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 w1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg 11e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ {1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ z1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ y1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90G1e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 "1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA 1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgp1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg .21e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU: ~z v r n j fb^ZVRNJFgeeQ$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800feeQ$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800eeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829deeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829ceeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829beeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829aeeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829`eeQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829_eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!XiwGxQKwjgutEClKUy:localhost:8829^eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU!mTlCLZQCmfDuQsJxxp:localhost:8800]eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800\eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800[eeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800ZeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800YeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800XeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800WeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800VeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800UeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800TeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800SeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800ReeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800QeeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800PeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800OeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800NeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800MeeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800LeeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800KeeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800JeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800 |D   T3 e \#+; Lu m eeQ$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800 eeQ$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800beeQ$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800eeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800 ueeQ$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800eeQ$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800eeQ$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800 eeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800neeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800LeeQ$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800 <eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800=eeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800:eeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800 D T < Lt|4 -% d D T \eeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800U \eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800 zeeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800 eeQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs!QZhNrNpwObZGJZpdAG:localhost:8800 eeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800UeeQ$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800ځeeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800@eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800 'eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800 eeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800 deeQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800 -eeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800 ueeQ$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800   \QeQ $Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "206", "stream_ordering": 1815}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74", "$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s", "$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 11}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042079624, "hashes": {"sha256": "li9TPSBy+HAhMFx9DmsjrPqCBzvBh0hGA2lWfIV+lCI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tuwqg+DPOJnyp4/vvsW9kxYUHxuOHtdrZWjfZV2nNQhYMmwSegwbP0WwBdFBMlkoyXT2TanYNkXHfqkPK/LbCQ"}}, "unsigned": {"age_ts": 1570042079624}}QeQ $TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "205", "stream_ordering": 1814}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic", "$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74", "$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 10}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042079245, "hashes": {"sha256": "uUjppIf70QkXh6rFJkXTfpHiyNLd5gUUjd0prJ/b544"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3alkYOj9SwBLsAKMY8cjwCSPttTky3asgdWQFjCrLA7igjXdNyCv+IWzOfUbeRPL/Kgs9tk4IA9EPyHXdc83Cg"}}, "unsigned": {"age_ts": 1570042079245}}PeQ $a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "204", "stream_ordering": 1813}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00", "$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic", "$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 9}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042078841, "hashes": {"sha256": "9HYsjjQrUAt7oBieJoAlAa2QHDIgeLeuSEzJgphPLWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPYrv9uOzXXE1lOlMBCI+yIrHEj1deJ+Mdc6kGdrmKf+BG4wzI2Pn31dvY0WeuUVGQ4SeblyUefPbKNyhOjaAw"}}, "unsigned": {"age_ts": 1570042078841}} eQ)$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "203", "stream_ordering": 1812}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00", "$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 8}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042078406, "hashes": {"sha256": "c/Zn+ik7zstPcDybT1B/RLarCmqxlC05us9S6j9saw0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wXCsaPyRxhmBL7w/SZQB6F8iYwReTIZI1VijIbU76jdlTq2wF9r1eMxN1TbrkF7EL9WdKSWjiP6iB/LgBEzgBA"}}, "unsigned": {"age_ts": 1570042078406}}   d,t \ 4 T $ LD<eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800 heeQ$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800ZeeQ$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800 ρeeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800 GeeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800 weeQ$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800 keeQ$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~eeQ$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800`eeQ$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800ƁeeQ$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:88003 leeQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800 DeeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800ցeeQ$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800|eeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800'eeQ$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800neeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800eeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800eeQ$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800d|eeQ$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800 =  + \eQaE$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829{"outlier": true, "stream_ordering": 1818}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-344:localhost:8829", "content": {"room_version": "4", "creator": "@anon-20191002_181700-344:localhost:8829"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042082080, "hashes": {"sha256": "cZxyERKs7CLJqE8aqH3SznkJ6hzDpiFjL1maKpcX53E"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "zQjY9aapKn8XG8//Af80f3ZXx63ktQGPknLIH/g0+zRSVobl2IKVLhmk9vLDqZ+/A8K8beoyiaADMskrbKJIAg"}}, "unsigned": {"age": 838}}'eQ!$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 1817}{"auth_events": ["$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ", "$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg", "$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0", "$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-343", "membership": "invite"}, "depth": 6, "hashes": {"sha256": "3KHFv46iFoE+NIYG4yaDFoxg6cRsDIRkLftYzxR67Wk"}, "origin": "localhost:8829", "origin_server_ts": 1570042082362, "prev_events": ["$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90"], "prev_state": [], "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "@anon-20191002_181700-343:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "lA7NLPZyt80xWWZLLC+hJQ8wnyLJGBCDs29YsFw7ThO9zI0Hi2rLsWEaDJt6ixPfyU4Lq5XeS0n9W3ZTBeu2Bg"}, "localhost:8800": {"ed25519:a_OdAo": "RSgvBWrttn7RrftwMg0DTqC6i3zO2OdgJOHMJ8ocTiKqaWxZp+T4WUDjJrw21R68mhdi0wbLQv8+TlIU1dQOCw"}}, "unsigned": {"age": 4, "invite_room_state": [{"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-344", "membership": "join"}, "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "@anon-20191002_181700-344:localhost:8829", "type": "m.room.member"}]}}QeQ $9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "207", "stream_ordering": 1816}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s", "$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s", "$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 12}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042080275, "hashes": {"sha256": "PUbIocaZ24ErVc6kS/dV5052T/tpyYyBjvXI5wBFqQI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f3ItvzxAS9DGw32Y2VwxjUZszbaG4AplcwsHrp7CEcewFSMHvIeW8Dwa2bU6n7+yNtwgZ1oSNRM4ECMGfokxBg"}}, "unsigned": {"age_ts": 1570042080275}}  IvD| v D  }> K* p  Q2J   \ W % ] +$PVdj8j81e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 61e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE v1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMM1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM 1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYP1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAA1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMO1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E x1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk.1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA j1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ V1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 x1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0L1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssh1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgp1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU;1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo)1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIf1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA 1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgv1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk.1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0T1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk31e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM81e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE:1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYo1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYn1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYm1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY<1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 g1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg 21e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU 11e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMJ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw f ""~F j  H & V Z^^b`dhGe _}]eQ@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829%P[Q@anon-20191002_181700-29:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800}]eQ@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800$Q]Q@anon-20191002_181700-275:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800#}]eQ@anon-20191002_181700-274:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800"}]eQ@anon-20191002_181700-273:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800!}]eQ@anon-20191002_181700-266:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800}]eQ@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800}]eQ@anon-20191002_181700-216:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800g1eQ@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800g1eQ@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800g1eQ@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800g1eQ@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800g1eQ@13:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800;1Q@12:localhost:8800!VCSCNemqikJZiRtxrs:localhost:8829;1Q@11:localhost:8800!StEnDjTJToXKXsOHNf:localhost:8829}]eQ@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800}]eQ@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800}]eQ@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800}]eQ@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800Q]Q@anon-20191002_181700-142:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800}]eQ@anon-20191002_181700-141:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800 }]eQ@anon-20191002_181700-137:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs!XIqmzIFbkHGQPIpywk:localhost:8800 Q]Q@anon-20191002_181700-135:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800 Q]Q@anon-20191002_181700-133:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800 }]eQ@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800 Q]Q@anon-20191002_181700-130:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800Q]Q@anon-20191002_181700-103:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800}]eQ@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI!HmkcAMkMjWRhTDJMsy:localhost:8800(Q]Q@anon-20191002_181700-270:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800 }]eQ@anon-20191002_181700-214:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800}]eQ@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800Q]Q@anon-20191002_181700-210:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800O[Q @anon-20191002_181700-17:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800 K"d  @X\`d\R   G |}]eQ@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:88007}]eQ@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:88006}]eQ@anon-20191002_181700-555:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:88005}]eQ@anon-20191002_181700-509:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:88004}]eQ@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:88003}]eQ@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:88002s]QQ@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:88001s]QQ@anon-20191002_181700-449:localhost:8800$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:88000}]eQ@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800/Q]Q@anon-20191002_181700-366:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800.}]eQ@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800,}]eQ@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800+}]eQ@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800*}]eQ@anon-20191002_181700-353:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800)}]eQ@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800(}]eQ@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800'}]eQ@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800C|[eQ@anon-20191002_181700-96:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ!BrssELMbasSzTFpIXm:localhost:8800|[eQ@anon-20191002_181700-90:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800|[eQ@anon-20191002_181700-87:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY!duCKuavMBSfRbTFPsc:localhost:8800Q]Q@anon-20191002_181700-364:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800-Q]Q@anon-20191002_181700-755:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800E}]eQ@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800D}]eQ@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800B}]eQ@anon-20191002_181700-727:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800A}]eQ@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800@}]eQ@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800?B]1@anon-20191002_181700-651:localhost:88001!0:localhost:41985>B]1@anon-20191002_181700-650:localhost:88001!0:localhost:44405=B]1@anon-20191002_181700-649:localhost:88001!0:localhost:37265 wE9}K>Q Wk v D  } K  Q  %q+1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g ?1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk 1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI h1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo u1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 %1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMC1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs K1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU?1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE E1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI 1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w11e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0T1e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok'1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsk1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY~1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cI1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA\1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM 91e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk41e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7840e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4?1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk =1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A]1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc 1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 01e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo -1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcQ1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUu1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw b1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcB1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc^1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAS1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 f0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4x1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI ,^ k x ) 6 C P ] jy(5BO^ kx'P]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800P]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800P]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800P]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800N[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800P]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800P]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800P]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800P]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800P]Q@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800P]Q@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800P]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800P]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800P]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800P]Q@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800P]Q@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800P]Q@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800N[Q@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800P]Q@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800P]Q@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800P]Q@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800P]Q@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800P]Q@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800P]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800P]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800P]Q@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800P]Q@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800P]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800P]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800P]Q@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800P]Q@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800P]Q@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800P]Q@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800P]Q@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800P]Q@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800N[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800P]Q@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800P]Q@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800P]Q@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800P]Q@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800P]Q@anon-20191002_181700-367:localhost:8800!aknLNLxfChlLvFYhkJ:localhost:8800P]Q@anon-20191002_181700-366:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800P]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800P]Q@anon-20191002_181700-364:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800  uveQay$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1831}{"auth_events": ["$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres"], "prev_events": ["$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres"], "type": "m.room.member", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-345", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-345:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042088783, "hashes": {"sha256": "Kdx/UHFh+3h1ZXZcqiWjB5hqXj1qLnphabTpXd5ptkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DffeiCYaDHWHwTmuCU5COnpZU7kU82CTPb20L2adyQxSGDrfLigwRgKxba28iM1iRKEHeaaUm/4+mxntjbZSDw"}}, "unsigned": {"age_ts": 1570042088783}}ieQa_$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1830}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-345:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042088131, "hashes": {"sha256": "VVD3WZ6mgzUtc+EY15k/AHrbfxVIXBMQrp2WXyDY/Uw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cJhxCTviVsRWJhtmJwX1hsSeokUR9dCQoV5Y5AaL3Zz9z+uDCi/V16SV7rB3tTEYOUcerwpgDkAuPqs1RXyRCA"}}, "unsigned": {"age_ts": 1570042088131}}meQce$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829{"outlier": false, "stream_ordering": 1829}{"auth_events": ["$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ", "$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg", "$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4"], "content": {"my_key": 1}, "depth": 8, "hashes": {"sha256": "FTQsb7xJXl+6uSvOcgv6UoGj6sVm0sGn1wz9zgY5qEo"}, "origin": "localhost:8829", "origin_server_ts": 1570042086379, "prev_events": ["$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs"], "prev_state": [], "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "", "type": "a.madeup.test.state", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "MlkppNWZbF+ANUAjc+x3XiokZdk+/JsdTbnKL0FmnzUEwGfyWw0UQHfQiiDqXM0dIwexbiDaMKkfJuynMb0+Bg"}}, "unsigned": {"age_ts": 1570042086379}}eQ?=$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829{"stream_ordering": 1828}{"auth_events": ["$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ", "$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg", "$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0"], "prev_events": ["$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro"], "type": "m.room.member", "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-343:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-343", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-343:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042082895, "hashes": {"sha256": "VkjHpeGzrjPxCiP1lUmVEZt+x89IxKwBJvZv6sW0zu4"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "Qol2FLrlGWzch9B2vLOVlXnwjQx8739Z6zzDpo1oyOreIwBAqT8XYaNUWheybtd5ejrKs3pZmOF5OmKGIZDRDQ"}, "localhost:8800": {"ed25519:a_OdAo": "buyVblOy1jfo0KEKV+jdE/HT+OXGNEfGEXgy/xTjP1j50pt9fE2iN4ELa1ZDqfx5BD/VN4b06EGSPQzGJZZHDA"}}, "unsigned": {"replaces_state": "$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro", "age_ts": 1570042082897}} j('2Z 8 j o   27_,^2gseQ3 $BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.statey^eQ31$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes]eQ3A$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_changem[eQ? $r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibilityeZeQ/ $-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rulesgYeQ3 $lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels XeQ']$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800joinaWeQ' $AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.createmreQ? $P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibilityeqeQ/ $Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rulesgpeQ3 $55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels oeQ']$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800joinaneQ' $EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800m.room.createleQ3A$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_changeymeQ31$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changesmjeQ? $BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibilityeieQ/ $UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rulesgheQ3 $Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels geQ']$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800joinafeQ' $yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.creategeeQ3 $cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state deQ']$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800join ceQ']$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829joinmbeQ? $YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibilityeaeQ/ $W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rulesg`eQ3 $Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levelsa_eQ' $h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829m.room.create V f  d  d `\bl,;e?Q ]$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Ym.room.history_visibility!NboFFVLpJHTeuUKCjM:localhost:8800mGmIN@anon-20191002_181700-346:localhost:8800$:e/Q ]$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzom.room.join_rules!NboFFVLpJHTeuUKCjM:localhost:8800mE[mF@anon-20191002_181700-346:localhost:8800&9e3Q ]$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAm.room.power_levels!NboFFVLpJHTeuUKCjM:localhost:8800mAmCf@anon-20191002_181700-346:localhost:8800 8e'Q ]$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ym.room.member!NboFFVLpJHTeuUKCjM:localhost:8800m=+m>[@anon-20191002_181700-346:localhost:88007 e'Q  ]$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcsm.room.create!NboFFVLpJHTeuUKCjM:localhost:8800m6m7[@anon-20191002_181700-346:localhost:8800(6e7Q ] $e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAga.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m-8m/}@anon-20191002_181700-345:localhost:8800(5e7Q ] $6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m+=m-@anon-20191002_181700-345:localhost:8800(4e7Q ] $0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m)\m,U@anon-20191002_181700-345:localhost:8800(3e7Q ] $oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdka.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m'm*X@anon-20191002_181700-345:localhost:8800(2e7Q ] $qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m&xm(@anon-20191002_181700-345:localhost:8800(1e7Q ] $yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjca.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m%m&}@anon-20191002_181700-345:localhost:8800(0e7Q ] $-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0a.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m#m$@anon-20191002_181700-345:localhost:8800(/e7Q ] $jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8ca.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m#m$@anon-20191002_181700-345:localhost:8800(.e7Q ] $wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m#m#@anon-20191002_181700-345:localhost:8800&-e3Q ]$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYa.madeup.test.state!aZwMKYDXJRlSKjQNWM:localhost:8800m m!=@anon-20191002_181700-345:localhost:8800&,e3Q ]$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioa.madeup.test.state!aZwMKYDXJRlSKjQNWM:localhost:8800m+m@anon-20191002_181700-345:localhost:8800&+e3Q ]$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8a.madeup.test.state!aZwMKYDXJRlSKjQNWM:localhost:8800m+m@anon-20191002_181700-345:localhost:8800,*e?Q ]$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsm.room.history_visibility!aZwMKYDXJRlSKjQNWM:localhost:8800mmz@anon-20191002_181700-345:localhost:8800$)e/Q ]$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEm.room.join_rules!aZwMKYDXJRlSKjQNWM:localhost:8800mqm@anon-20191002_181700-345:localhost:8800&(e3Q ]$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Ym.room.power_levels!aZwMKYDXJRlSKjQNWM:localhost:8800mm@anon-20191002_181700-345:localhost:8800 'e'Q ]$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokm.room.member!aZwMKYDXJRlSKjQNWM:localhost:8800m Om @anon-20191002_181700-345:localhost:8800& e'Q  ]$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresm.room.create!aZwMKYDXJRlSKjQNWM:localhost:8800m m @anon-20191002_181700-345:localhost:8800&%e3Q ]$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwa.madeup.test.state!XiwGxQKwjgutEClKUy:localhost:8829mmz@anon-20191002_181700-344:localhost:8829 a} { y w u sqomkigeca~jeeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~ieeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~heeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~geeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~feeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~eeeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~deeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~ceeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~beeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~aeeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~`eeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~_eeQ$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~^eeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~]eeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~\eeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~[eeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~ZeeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~YeeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~XeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~WeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~VeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~UeeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~TeeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~SeeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~ReeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~QeeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~PeeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~OeeQ$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~NeeQ$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~MeeQ$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~LeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829 g * T~=ggk]!ct@anon-20191002_181700-354:localhost:8800EEONPHMPKHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAogj]!cs@anon-20191002_181700-355:localhost:8800LDOCSGURJIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwogi]!cr@anon-20191002_181700-353:localhost:8800JNEJUBWWRWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQogh]!cq@anon-20191002_181700-352:localhost:8800HQKTWVQFMPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAogg]!cp@anon-20191002_181700-350:localhost:8800TQWBNMPIAIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwogf]!co@anon-20191002_181700-351:localhost:8800GHNDMAFVFRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgoge]!cn@anon-20191002_181700-349:localhost:8800IPTJJENAYSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3Grbcgogd]!cm@anon-20191002_181700-348:localhost:8800KYSIYINERZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwogc]!cl@anon-20191002_181700-346:localhost:8800CIUYDTNROPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgogb]!ck@anon-20191002_181700-347:localhost:8800CFRSANQZYUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQoga]!cj@anon-20191002_181700-345:localhost:8800QSMLRPQTHAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgo  ~ eQa $ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1835}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs"], "type": "a.madeup.test.state", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042092331, "hashes": {"sha256": "YnqcqVlXkNwgdJQhj6py9y4qroxFn+NhoREjHwaA0Bo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "42hVtVi9IP6r36o9jfosUQ7492TjiiIpDQBUjFxp85kDLnG5sHLi2L0W/pTbmL/hmih7ZBMQGXrGwAXB4PfKAw"}}, "unsigned": {"age_ts": 1570042092331}}eQa$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1834}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE"], "type": "m.room.history_visibility", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042091207, "hashes": {"sha256": "WuIpImERMXlX+pVKN/V02hmFOfthrgLWGoGOHRGA5eI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLwcm6Ep8K/0pbHvv6gfvpaNMGnnhCbrOdXysjnzHE6PRK0jJU4ujR06Tef/pnjHJxqyKRecklPrxIjGzZKtDA"}}, "unsigned": {"age_ts": 1570042091207}}teQau$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1833}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y"], "type": "m.room.join_rules", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042090097, "hashes": {"sha256": "rGfeHuNq0ryw6gKXJ8bGHyyGetBlusce0FZdBg1GvDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w8obhbtH36ept9/kkaQSEAuYCqS+XVJ2wvGTO9gdYOMQyx8kshYOtZ1KcDlsf3Z5jfjmr4fStRBhpQZW9LykDQ"}}, "unsigned": {"age_ts": 1570042090097}}keQac$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1832}{"auth_events": ["$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "type": "m.room.power_levels", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"users": {"@anon-20191002_181700-345:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042089398, "hashes": {"sha256": "eExG0iK3cu+nPFliVD4xWfQpbKqemTrdXqY6sT+bIIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AcHzd7d2UvznE+bMnbh1gMYi2384blniPoOo5tst9xK36nzpEDH6iyqfAuW3eQE80usOqQqUtpO6/VeeT2QmBg"}}, "unsigned": {"age_ts": 1570042089398}} ,NC 8 - { " p  e ZOD9.|#qf VHeL$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYsha256Pő" /QY6 GGM7+ |VGeL$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIsha2563v eէnT]TVFeL$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwsha2561BoE_W|y=-*lVEeL$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrosha256 ^$bAfmy`s˘gºVDeL$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQsha256<[@5a @1z.KI9v2VCeL$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgsha256IĎ;jh];VBeL$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYsha256RW$XSe"(m!Q@iS6]@VAeL$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCssha256[WL=ɱ* c^Sƶ8o49w+V@eL$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0sha256 pE.+e-?40]V?eL$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4sha256sP9W BreL$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQsha256DbL{ɑ>Y-"vZ$V=eL$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYsha256?72ˑՉPCBS;v $V<eL$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIsha256dYk' J=r/p󨚢NㅰaV;eL$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYsha256`i$}+F&Y57?R.'69NV:eL$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYsha256FETZl"UF'T Y^cFV9eL$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYsha256s/ 0:ʯ@6Nu {E)%vV8eL$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQsha256Vǧx"_le ^,@V7eL$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fosha256 ;nC!}oo"6(hV6eL$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgsha256ӊ&aM㐉hI_%&IΈhV5eL$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4sha2566<]Lqr_5>^gV4eL$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Asha256Y%55]%mgbہV?V3eL$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40sha2568 cνCCcOhYy>WV2eL$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEsha256?qzwFurb")l 6ulQB-V1eL$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qsha256l7 N#8)g},Qጂ6sdV0eL$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Ysha256?:TB FPIbIEe)TNeqV/eL$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzosha256gJWA k˒~tiZ O*C:V.eL$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAsha256yT?=?}{G:uG AgV-eL$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ysha256\GFO^"?bw|”vV,eL$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcssha256g)?i DӌHͭV+eL$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgsha256{9"8,;˽zGs;}?V*eL$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIsha256BH~ `V"eL$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYsha256;+T7țK uR4 _YV!eL$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiosha256B-g:y8ci% hTT>6e*V eL$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8sha256d[\(22 ^ dS) T|o'YłVeL$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSssha256}miP/?^f,+Pp^+VeL$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEsha256PUXeriOE86͇1VeL$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Ysha256},j5o[H6(jX$ 8l D `8^]c!E@anon-20191002_181700-354:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAoEEONPHMPKH127.0.0.1Perl + Net::Async::HTTP/0.44m钃]]c!E@anon-20191002_181700-352:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAoHQKTWVQFMP127.0.0.1Perl + Net::Async::HTTP/0.44m\]c!E@anon-20191002_181700-353:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQoJNEJUBWWRW127.0.0.1Perl + Net::Async::HTTP/0.44m[]c!E@anon-20191002_181700-351:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgoGHNDMAFVFR127.0.0.1Perl + Net::Async::HTTP/0.44m͒+Z]c!E@anon-20191002_181700-350:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwoTQWBNMPIAI127.0.0.1Perl + Net::Async::HTTP/0.44m͒)Y]c!E@anon-20191002_181700-349:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3GrbcgoIPTJJENAYS127.0.0.1Perl + Net::Async::HTTP/0.44msX]c!E@anon-20191002_181700-348:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwoKYSIYINERZ127.0.0.1Perl + Net::Async::HTTP/0.44mVW]c!E@anon-20191002_181700-347:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQoCFRSANQZYU127.0.0.1Perl + Net::Async::HTTP/0.44m5kV]c!E@anon-20191002_181700-346:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgoCIUYDTNROP127.0.0.1Perl + Net::Async::HTTP/0.44m5hU]c!E@anon-20191002_181700-345:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgoQSMLRPQTHA127.0.0.1Perl + Net::Async::HTTP/0.44m N  n> P  | JT" V $ \ *b 0' pj8 N Y< htBzH  v D 61e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUc1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU O1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU N1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU M1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIa1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI`1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI_1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG81e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG81e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI 1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI 1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUd1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UM1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938 1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938 1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938 1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho 1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho 1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho 1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsG1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsF1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIL1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIK1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIJ1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k:1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k91e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k81e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA*1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA)1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUe1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UO1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y41e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y41e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y41e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvME1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMD1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMC1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA+1e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY 1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UN1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY 1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4 O h 6   n < t B  { I  H  O U#[N)a j/z8g5m; sAb01e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY u1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc `1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo !1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 I1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A ,1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 0e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU?1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 ?1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE;1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc;1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU 1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAI1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI[1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YV1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoM1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0.1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8B1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg#1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA 1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_41e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8W1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg@1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4y1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg;1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14>1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakF1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ d1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQy1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA=1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30:1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkL1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8b1e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM <1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0^1e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 @1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg A$lolredact:localhost:42455 =A$lolredact:localhost:42455 <1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw t1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ ?1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg ~z v r n j fb^ZVRNJFeeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk!aZwMKYDXJRlSKjQNWM:localhost:8800}eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800|eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800{eeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800zeeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800yeeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800xeeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800weeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800veeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800ueeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800teeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800seeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800reeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800qeeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800peeQ$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800oeeQ$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800neeQ$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800meeQ$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800leeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800keeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800jeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800ieeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800heeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800 ! ( P Y h q />Go~E+aaeQ' $H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800m.room.create `eQ']$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800 _eQ']$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800g^eQ3 $iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.statem]eQ? $61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibilitye\eQ/ $1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rulesg[eQ3 $1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels ZeQ']$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800aYeQ' $p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800m.room.create XeQ']$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800mWeQ? $C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibilityeVeQ/ $c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rulesgUeQ3 $o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels TeQ']$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800aSeQ' $wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create ReQ']$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800gQeQ3 $cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.statemPeQ? $FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibilityeOeQ/ $1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rulesgNeQ3 $6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels MeQ']$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800aLeQ' $klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800m.room.create KeQ']$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800 JeQ']$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800gIeQ3 $BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.statemHeQ? $P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibilityeGeQ/ $Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rulesgFeQ3 $55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels EeQ']$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800aDeQ' $EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800m.room.createyCeQ31$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changesBeQ3A$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_changeyAeQ31$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes  Gi>g< u J g>oD@R' { P % y N # w L ! FoDmBkT)}qe:c8 *Q!mBQpGaIiadEuKBXfOw:localhost:8800Lyq *Q!mBQpGaIiadEuKBXfOw:localhost:8800Hu*Q!mBQpGaIiadEuKBXfOw:localhost:8800Gt*Q!mBQpGaIiadEuKBXfOw:localhost:8800Fs(Q!loalEsWaTYwrVUNJLr:localhost:8800)((Q!loalEsWaTYwrVUNJLr:localhost:8800('(Q!loalEsWaTYwrVUNJLr:localhost:8800'&(Q!loalEsWaTYwrVUNJLr:localhost:8800&%(Q!loalEsWaTYwrVUNJLr:localhost:8800%$(Q!loalEsWaTYwrVUNJLr:localhost:8800$#*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800.*Q!mTlCLZQCmfDuQsJxxp:localhost:8800-*Q!mBQpGaIiadEuKBXfOw:localhost:8800Kx*Q!mBQpGaIiadEuKBXfOw:localhost:8800Jw*Q!mBQpGaIiadEuKBXfOw:localhost:8800Iv*Q!mTlCLZQCmfDuQsJxxp:localhost:8800,*Q!mTlCLZQCmfDuQsJxxp:localhost:8800+*Q!mTlCLZQCmfDuQsJxxp:localhost:8800**Q!mTlCLZQCmfDuQsJxxp:localhost:8800)*Q!mTlCLZQCmfDuQsJxxp:localhost:8800(*Q!mTlCLZQCmfDuQsJxxp:localhost:8800'*Q!mTlCLZQCmfDuQsJxxp:localhost:8800&*Q!mTlCLZQCmfDuQsJxxp:localhost:8800%*Q!mTlCLZQCmfDuQsJxxp:localhost:8800$*Q!mTlCLZQCmfDuQsJxxp:localhost:8800#*Q!mTlCLZQCmfDuQsJxxp:localhost:8800"*Q!mTlCLZQCmfDuQsJxxp:localhost:8800!*Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 }*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mMsxpaIlcykPuOnDyl:localhost:8800~*Q!mMsxpaIlcykPuOnDyl:localhost:8800}*Q!mMsxpaIlcykPuOnDyl:localhost:8800|*Q!mMsxpaIlcykPuOnDyl:localhost:8800{*Q!mMsxpaIlcykPuOnDyl:localhost:8800z*Q!mMsxpaIlcykPuOnDyl:localhost:8800y*Q!mMsxpaIlcykPuOnDyl:localhost:8800x~*Q!mMsxpaIlcykPuOnDyl:localhost:8800w}*Q!mMsxpaIlcykPuOnDyl:localhost:8800v|*Q!mMsxpaIlcykPuOnDyl:localhost:8800u{*Q!mBQpGaIiadEuKBXfOw:localhost:8800Mz  v?o$eQG$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "217", "stream_ordering": 1839}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 3}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042094469, "hashes": {"sha256": "pBx/tVhu1GYuzM0+LrR+v5AmHm9C8wufWbVps+tVA8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O801Wr6sHEg/XS0yU73BMUBA9ad5O3lUhhAUgVRLVg8LgM0wyqT1aa0MGtcfb0K+VqMfy/31h8gXPqswK1X1Cw"}}, "unsigned": {"age_ts": 1570042094469}}o#eQG$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "216", "stream_ordering": 1838}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 2}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042094467, "hashes": {"sha256": "krNbainh7Ce7lxe36qzUyp11hhyWtaOThF8ImrM4yfg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NJmFuh2izGBUJeoKercqqBeVzmbTl4MlSgIRKHr2MqiRZFKGsW0jd+lYn3sd51Pxjv8BvQ9RbEOJN/2o29E/BQ"}}, "unsigned": {"age_ts": 1570042094467}}@"eQa $Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1837}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio"], "type": "a.madeup.test.state", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"my_key": 2}, "depth": 8, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042093793, "hashes": {"sha256": "NFyqQAs6TuIkkuxL1osoLLk3lJpwE0BRgBgkPpcQMoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ABL1cRYtw8APpC4zbIbAp6C4JV1l5WjpfGz4u6kWaaSlTKogAoSKO1YvG18icq4c1hwxuvYknVJ3WRhmYfuTDQ"}}, "unsigned": {"age_ts": 1570042093793, "replaces_state": "$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8"}}!eQa$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1836}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8"], "type": "a.madeup.test.state", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"my_key": 1}, "depth": 7, "prev_state": [], "state_key": "this_state_does_not_change", "origin": "localhost:8800", "origin_server_ts": 1570042093099, "hashes": {"sha256": "hzPJHFU5N8dT35Y1PCHQaeEvDxBYU/0jKEDWucxpA9k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q76FOApmHOVnSe18cuZaX86BdJK96rbPTU/MDTMjb5uKMJYPQPVIrtEKHZYikTabwItq8p/3RRSxYSrpRB0TBw"}}, "unsigned": {"age_ts": 1570042093099}} -RM H C > 9 4/*|%w rmhc TsQeP!DnUHoxreGexNmjSVpq:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroTrQeO!DnUHoxreGexNmjSVpq:localhost:8800$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQTqQeN!rwUuVBrftGHDBOlEZm:localhost:8800$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgTpQeM!rwUuVBrftGHDBOlEZm:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYToQeL!rwUuVBrftGHDBOlEZm:localhost:8800$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsTnQeK!rwUuVBrftGHDBOlEZm:localhost:8800$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0TmQeJ!rwUuVBrftGHDBOlEZm:localhost:8800$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4TlQeI!rwUuVBrftGHDBOlEZm:localhost:8800$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQTkQeH!rwUuVBrftGHDBOlEZm:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYTjQeG!rwUuVBrftGHDBOlEZm:localhost:8800$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeITiQeF!CkNvQnbApPIcuKygDk:localhost:8800$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYThQeE!CkNvQnbApPIcuKygDk:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYTgQeD!CkNvQnbApPIcuKygDk:localhost:8800$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYTfQeC!CkNvQnbApPIcuKygDk:localhost:8800$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQTeQeB!CkNvQnbApPIcuKygDk:localhost:8800$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foTdQeA!CkNvQnbApPIcuKygDk:localhost:8800$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgTcQe@!CkNvQnbApPIcuKygDk:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4TbQe?!CkNvQnbApPIcuKygDk:localhost:8800$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9ATaQe>!NboFFVLpJHTeuUKCjM:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40T`Qe=!NboFFVLpJHTeuUKCjM:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeET_Qe  w EX  } K  R  X & ^ ,d2&j8q? wF~^-j811e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E o1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg s1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01EZ1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY y1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o ;1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc 1e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE`1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAa1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok 1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsj1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY}1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74g1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXci1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cF1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAY1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM 1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk11e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7810e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4<1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk n1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk #1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs 61e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc S1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMT1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNsq1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM |1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo I 3C c m  [ S +t K|#; eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800.eeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800CeeQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800eeQ$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800eeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800zeeQ$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800TeeQ$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800 GeeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800qeeQ$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800ueeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800eeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800[eeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800eeQ$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800eeQ$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800 deeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g!zNCItZNbpkZKuufRhC:localhost:8800eeQ$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800eeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800 P  ,i,eQa_$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1847}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-346:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042099446, "hashes": {"sha256": "LJfCv7N6fpRryTyCXHCWziyWOqFEBqkdwwRBNQ2Z2Tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ttQ25l2nqABE/slLmvbbuNOb+kg4ks7RoO9B+a8RUTnsELXpVipL4wnDvTUQZzZvJ8nrzwFBwfBHS26HsEuvCA"}}, "unsigned": {"age_ts": 1570042099446}}P+eQ $e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "223", "stream_ordering": 1846}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc", "$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY", "$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 9}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042096952, "hashes": {"sha256": "XyXA3FC8IQt/COiWVxBs48FNFhqBLGEUZ2Z51tDs5Yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o6lKQvd2Tw94M8QpuHYKaAc3E4qe6qrCL1F6e4TWtqz5dF9RGTmIPXaj0j8RaPfy7482X/Fx0Nrp7j19LbSGBQ"}}, "unsigned": {"age_ts": 1570042096952}} *eQ)$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "222", "stream_ordering": 1845}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc", "$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 8}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042096445, "hashes": {"sha256": "wDS8NpfSfudcw8n5XfetnCZMAm5WW5EyBa09JBShfKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4wbCIUDxb1KlVZPnWFAeM3iRaj9DUerxQ5FiTl3/s6k77pT8+IEjliiI2GHX0fo1qatRUhKl1pGKAJo8yiTTBA"}}, "unsigned": {"age_ts": 1570042096445}}P)eQ $0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "221", "stream_ordering": 1844}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c", "$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0", "$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 7}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042095964, "hashes": {"sha256": "4rCDlOsUb2MPKekMLIu7ZGTMN/c3ynsJaL58v8rexBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dQeCLZNb/ntcirHQ/GSZm07hJFQY9ZBEX98OQdxc9ZaFxyYJKPFkbQOV/WuVouewSaFZy4yn43E/Uo45NT1qCg"}}, "unsigned": {"age_ts": 1570042095964}} K > v Dp3 R | J   P  W %  _^ -e k9q? XwE,&}L j81e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ 1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic (1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y 1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooD1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcB0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I{1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E 1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY H1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kU1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg {1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugs1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro ^1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI 0e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qz0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc%1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioV1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwV1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA v1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg1e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz81e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8\1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc ^1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 I1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY D1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc .1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo e1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE ( i g 4h5 i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAo]1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgo\1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwo[1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgoX1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8QoW1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-goV1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAoU1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwoZ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAoY1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwoT1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgoS1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgoR1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0QoQ  0eQa$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1851}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo"], "type": "m.room.history_visibility", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042103748, "hashes": {"sha256": "iFKxQ22HrgjXpsEvFfNyajDj7lqTFhhDowIi0XJVkC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fxynWAhug1SBFH47kA9kjRrraIK5hRe3j1hbbTTNCTky1HbYbzjgP+LzVuXYFbyLW53OjM7fWzXmr79u3si3BA"}}, "unsigned": {"age_ts": 1570042103748}}t/eQau$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1850}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA"], "type": "m.room.join_rules", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042103131, "hashes": {"sha256": "fFsxUyrmIapU0sJgwYGcDs16+zguoEx/lDXaambZgl8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hmAz3THumN0PRw9Xww6TBh0R6RL6A67DQXDYmaLWiJwqM6Pc+KWvTNUhjPSTA2ylOMd/rONhG6F0JND7V4FQBQ"}}, "unsigned": {"age_ts": 1570042103131}}k.eQac$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1849}{"auth_events": ["$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "type": "m.room.power_levels", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"users": {"@anon-20191002_181700-346:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042102189, "hashes": {"sha256": "ASR+EQjlmFFDdOFwPDgJGIsMGEraN+9rJL7tlr1iJ4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lBsoZYXWkvsf0sLWlzDRP/B51YClA9urcs7/4S8TETeM3w+q4wkSSmN2PfNsOMyDP/MSkTwqClslV771jjmuBQ"}}, "unsigned": {"age_ts": 1570042102189}}v-eQay$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1848}{"auth_events": ["$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs"], "prev_events": ["$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs"], "type": "m.room.member", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-346", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-346:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042101035, "hashes": {"sha256": "UqSkpV36y324So2v2qUE3VVep9aSBMQdLvMWDBICub0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g8Info5mdpqb0NKva7820B9QlWnE0va4XFJLiClrtlmzKlz9gVb3BgT2hzHWNt7oOQ0OJdfvEHDk5+mfUsiuAQ"}}, "unsigned": {"age_ts": 1570042101035}}  3eQa=$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 363, "stream_ordering": 1854}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo"], "prev_events": ["$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE"], "type": "m.room.member", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-347:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-347", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-347:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042106291, "hashes": {"sha256": "6jZI+UQbyeGoeXRhab/taPeLEJlP+4QJt5dfOAZrUUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yg4jmbCgA4Rrg1+cnTnzGt7ll9YsPqQshUkDG4VKBrPMTX298eBtW3aJzTScz8UAIoqkfe35KcrCSWUXKYQ3Bg"}}, "unsigned": {"age_ts": 1570042106291, "replaces_state": "$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE"}}2eQa7$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1853}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q"], "type": "m.room.member", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-347", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-347:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042105465, "hashes": {"sha256": "udoT1qQzIBuHeegbRb2F6pnzqx3br/P/hS4bvtfWNus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7couX0cP1vXKmws9QT2/56FugxQreC1SzDlkj/Eto2e4/ps1sGd7eTwX2njT+nnxvoQfIRFHNphLnIMLWoneDA"}}, "unsigned": {"age_ts": 1570042105465, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-346:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-346:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-346", "avatar_url": null}, "sender": "@anon-20191002_181700-346:localhost:8800"}]}}l1eQae$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1852}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y"], "type": "a.madeup.test.state", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042104656, "hashes": {"sha256": "BxyUfjI3+2GBCzdKOtZcCHTpgFyz2Y96k4o0LGnVHd0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WiW/E6uPuIxkLBzlWPXxE+0H56/29JcA6BXQi9CX2lNdQuobw8oqSGO7P/n2VYX3M8G6mZiG9ubhw4nBJeVqAw"}}, "unsigned": {"age_ts": 1570042104656}} XV l  v  x1;EZX,Se?Q ]$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYm.room.history_visibility!DnUHoxreGexNmjSVpq:localhost:8800m͠pm͢7@anon-20191002_181700-350:localhost:8800$Re/Q ]$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIm.room.join_rules!DnUHoxreGexNmjSVpq:localhost:8800m͛m͝@anon-20191002_181700-350:localhost:8800&Qe3Q ]$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwm.room.power_levels!DnUHoxreGexNmjSVpq:localhost:8800m͙@m͚l@anon-20191002_181700-350:localhost:8800 Pe'Q ]$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrom.room.member!DnUHoxreGexNmjSVpq:localhost:8800m͖m͗N@anon-20191002_181700-350:localhost:8800O e'Q  ]$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQm.room.create!DnUHoxreGexNmjSVpq:localhost:8800m͓m͔^@anon-20191002_181700-350:localhost:8800!Ne)Q ]$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgm.room.message!rwUuVBrftGHDBOlEZm:localhost:8800m͋m͋@anon-20191002_181700-349:localhost:8800 Me'Q ]$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYm.room.member!rwUuVBrftGHDBOlEZm:localhost:8800m͉m͉@anon-20191002_181700-349:localhost:8800Le#Q ]$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsm.room.test!rwUuVBrftGHDBOlEZm:localhost:8800m͆dm͆k@anon-20191002_181700-349:localhost:8800,Ke?Q ]$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0m.room.history_visibility!rwUuVBrftGHDBOlEZm:localhost:8800m͂"m̓@anon-20191002_181700-349:localhost:8800$Je/Q ]$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4m.room.join_rules!rwUuVBrftGHDBOlEZm:localhost:8800mm̀=@anon-20191002_181700-349:localhost:8800&Ie3Q ]$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQm.room.power_levels!rwUuVBrftGHDBOlEZm:localhost:8800m{Xm}@anon-20191002_181700-349:localhost:8800 He'Q ]$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYm.room.member!rwUuVBrftGHDBOlEZm:localhost:8800mwmw@anon-20191002_181700-349:localhost:8800G e'Q  ]$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIm.room.create!rwUuVBrftGHDBOlEZm:localhost:8800mtBmt@anon-20191002_181700-349:localhost:8800!Fe)Q ]$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYm.room.message!CkNvQnbApPIcuKygDk:localhost:8800mpmp@anon-20191002_181700-348:localhost:8800 Ee'Q ]$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYm.room.member!CkNvQnbApPIcuKygDk:localhost:8800ml[ml@anon-20191002_181700-348:localhost:8800&De3Q ]$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYa.madeup.test.state!CkNvQnbApPIcuKygDk:localhost:8800mhkmi:@anon-20191002_181700-348:localhost:8800,Ce?Q ]$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQm.room.history_visibility!CkNvQnbApPIcuKygDk:localhost:8800mcmd@anon-20191002_181700-348:localhost:8800$Be/Q ]$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fom.room.join_rules!CkNvQnbApPIcuKygDk:localhost:8800m_m`@anon-20191002_181700-348:localhost:8800&Ae3Q ]$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgm.room.power_levels!CkNvQnbApPIcuKygDk:localhost:8800m]0m^/@anon-20191002_181700-348:localhost:8800 @e'Q ]$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4m.room.member!CkNvQnbApPIcuKygDk:localhost:8800mZm[I@anon-20191002_181700-348:localhost:8800? e'Q  ]$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Am.room.create!CkNvQnbApPIcuKygDk:localhost:8800mWmX@anon-20191002_181700-348:localhost:8800 >e'Q ]$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40m.room.member!NboFFVLpJHTeuUKCjM:localhost:8800mQmR@anon-20191002_181700-347:localhost:8800 =e'Q ]$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEm.room.member!NboFFVLpJHTeuUKCjM:localhost:8800mNymN@anon-20191002_181700-346:localhost:8800&<e3Q ]$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qa.madeup.test.state!NboFFVLpJHTeuUKCjM:localhost:8800mKPmL@anon-20191002_181700-346:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1le$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1ke$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1je$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1ie$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1he$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81ge$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841fe$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1ee$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1de$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ1ce$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU1be$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc1ae$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA1`e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c1_e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg1^e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1]e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L81\e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1[e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1Ze$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T01Ye$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt01Xe$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo1We$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1Ve$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1Ue$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1Te$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ1Se$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX01Re$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM1Qe$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg1Pe$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1Oe$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1Ne$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g1Me$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1Le$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ1Ke$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk1Je$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk1Ie$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU1He$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw1Ge$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE1Fe$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1Ee$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-41De$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU1Ce$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo1Be$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1Ae$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81@e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1?e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1>e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I1=e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1<e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01;e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1:e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw19e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY18e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI17e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw16e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro15e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ14e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg13e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY12e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs11e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV010e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41/e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1.e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1-e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI1,e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY1+e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1*e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1)e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ~1(e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo}1'e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg|1&e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4{1%e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Az1$e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40y1#e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEx1"e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qw ![q|  9 D I mx}5"LnP[c'Q' e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g &Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk %Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ $Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyki#Q3 e!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.state$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlko"Q? e!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibility$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUg!Q/ e!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rules$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwi Q3 e!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskcQ' e!bOSxzttDtclnrWnLov:localhost:8800m.room.create$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4 Q']e!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0 Q']e!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsiQ3 e!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.state$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwoQ? e!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibility$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYgQ/ e!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rules$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIiQ3 e!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw Q']e!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrocQ' e!DnUHoxreGexNmjSVpq:localhost:8800m.room.create$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ Q']e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYoQ? e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibility$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0gQ/ e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rules$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4iQ3 e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ Q']e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYcQ' e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI Q']e!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYiQ3 e!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.state$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYo Q? e~!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibility$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQg Q/ e}!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rules$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foi Q3 e|!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg Q']e{!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4c Q' ez!CkNvQnbApPIcuKygDk:localhost:8800m.room.create$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A Q']ey!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 Q']ex!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE a} { y w u sqomkigeca~ eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800~eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~~eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~}eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~|eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~{eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~zeeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~yeeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~xeeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~weeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~veeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~ueeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~teeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~seeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~reeQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~qeeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800~peeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~oeeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~neeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~meeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800~leeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~keeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800 DM u  r u tw ,y|18dQ']eef!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk cQ']ee!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykjbQ3 ed!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.state$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkpaQ? ec!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibility$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUh`Q/ eb!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rules$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwj_Q3 ea!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE ^Q']e`!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskd]Q' e_!bOSxzttDtclnrWnLov:localhost:8800m.room.create$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-48\Q']eeV!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs [Q']eU!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsjZQ3 eT!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.state$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwpYQ? eS!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibility$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYhXQ/ eR!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rules$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIjWQ3 eQ!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw VQ']eP!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrodUQ' eO!DnUHoxreGexNmjSVpq:localhost:8800m.room.create$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ8TQ']eeM!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYpSQ? eK!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibility$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0hRQ/ eJ!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rules$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4jQQ3 eI!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ PQ']eH!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYdOQ' eG!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI8NQ']eeE!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4jMQ3 eD!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.state$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYpLQ? eC!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibility$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQhKQ/ eB!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rules$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fojJQ3 eA!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg IQ']e@!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4dHQ' e?!CkNvQnbApPIcuKygDk:localhost:8800m.room.create$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A8GQ']ee>!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE ESe0`- _ , \ ) Y $ T ! Q L|IyFL|I|GwD4]@anon-20191002_181700-444:localhost:8800mL4]@anon-20191002_181700-443:localhost:8800mK4]@anon-20191002_181700-442:localhost:8800mJ2]@anon-20191002_181700-444:localhost:8800aI2]@anon-20191002_181700-443:localhost:8800aH2]@anon-20191002_181700-442:localhost:8800aG4]@anon-20191002_181700-441:localhost:8800mF4]@anon-20191002_181700-440:localhost:8800mE4]@anon-20191002_181700-439:localhost:8800mD4]@anon-20191002_181700-438:localhost:8800mC4]@anon-20191002_181700-414:localhost:8800m2]@anon-20191002_181700-414:localhost:8800a4]@anon-20191002_181700-413:localhost:8800m2]@anon-20191002_181700-413:localhost:8800a Y4]@anon-20191002_181700-446:localhost:8800mQ2]@anon-20191002_181700-446:localhost:8800aP4]@anon-20191002_181700-445:localhost:8800mN2]@anon-20191002_181700-445:localhost:8800aM2]@anon-20191002_181700-441:localhost:8800a@2]@anon-20191002_181700-440:localhost:8800a?0[@anon-20191002_181700-43:localhost:8800a[2]@anon-20191002_181700-439:localhost:8800a>2]@anon-20191002_181700-438:localhost:8800a;4]@anon-20191002_181700-437:localhost:8800mB2]@anon-20191002_181700-437:localhost:8800a=4]@anon-20191002_181700-436:localhost:8800mA2]@anon-20191002_181700-436:localhost:8800a<4]@anon-20191002_181700-435:localhost:8800m:2]@anon-20191002_181700-435:localhost:8800a54]@anon-20191002_181700-434:localhost:8800m92]@anon-20191002_181700-434:localhost:8800a74]@anon-20191002_181700-433:localhost:8800m82]@anon-20191002_181700-433:localhost:8800a64]@anon-20191002_181700-432:localhost:8800m42]@anon-20191002_181700-432:localhost:8800a14]@anon-20191002_181700-431:localhost:8800m32]@anon-20191002_181700-431:localhost:8800a04]@anon-20191002_181700-430:localhost:8800m22]@anon-20191002_181700-430:localhost:8800a/4]@anon-20191002_181700-429:localhost:8800m.2]@anon-20191002_181700-429:localhost:8800a+4]@anon-20191002_181700-428:localhost:8800m-2]@anon-20191002_181700-428:localhost:8800a*4]@anon-20191002_181700-427:localhost:8800m,2]@anon-20191002_181700-427:localhost:8800a)4]@anon-20191002_181700-426:localhost:8800m(2]@anon-20191002_181700-426:localhost:8800a%4]@anon-20191002_181700-425:localhost:8800m'2]@anon-20191002_181700-425:localhost:8800a#4]@anon-20191002_181700-424:localhost:8800m&2]@anon-20191002_181700-424:localhost:8800a$2]@anon-20191002_181700-423:localhost:8800a4]@anon-20191002_181700-422:localhost:8800m"2]@anon-20191002_181700-422:localhost:8800a4]@anon-20191002_181700-421:localhost:8800m!2]@anon-20191002_181700-421:localhost:8800a4]@anon-20191002_181700-420:localhost:8800m 2]@anon-20191002_181700-420:localhost:8800a0[@anon-20191002_181700-41:localhost:8800aY4]@anon-20191002_181700-419:localhost:8800m2]@anon-20191002_181700-419:localhost:8800a4]@anon-20191002_181700-418:localhost:8800m2]@anon-20191002_181700-418:localhost:8800a4]@anon-20191002_181700-417:localhost:8800m2]@anon-20191002_181700-417:localhost:8800a4]@anon-20191002_181700-416:localhost:8800m2]@anon-20191002_181700-416:localhost:8800a4]@anon-20191002_181700-415:localhost:8800m2]@anon-20191002_181700-415:localhost:8800a ~z v r n j fb^ZVRNJF#eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800"eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800!eeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800 eeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800eeQ$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800eeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800 eeQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800 eeQ$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800 eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800 eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800 eeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800eeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800eeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800eeQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800   *t7eQau$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1858}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg"], "type": "m.room.join_rules", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042109931, "hashes": {"sha256": "o3Db5cqGhvp/GZ1pyWnlKOZEtQhpKsSMtpZQwdKOYqA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kWPFJL0jTv1ppcMoqvOBwS5j4FT9MXwydQsDhNc7rTgTyXOMSd459KvqzJUMM5+3V2OCeA0kOhOUL+keVx8VAQ"}}, "unsigned": {"age_ts": 1570042109931}}k6eQac$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1857}{"auth_events": ["$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "type": "m.room.power_levels", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"users": {"@anon-20191002_181700-348:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042109232, "hashes": {"sha256": "DGL5/qzwkCmizuojtHr/Zca7yVb5vwuPID4oR/WPTIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzX+zT31dnc8gRsdx6MiMQP2ER43zBqkvDzGYvgAKzfJ+ZXAIiq2So+Nv1oWR4rIzUs57k1IhhVrzq8Ygu/NAQ"}}, "unsigned": {"age_ts": 1570042109232}}v5eQay$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1856}{"auth_events": ["$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A"], "prev_events": ["$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A"], "type": "m.room.member", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-348", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-348:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042108646, "hashes": {"sha256": "oWr/BPvPEgSmY9HP0+WMXxl8WCAocJW7OaWZWA1z/9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0CMckGCnXCdmam7EWtW0pCmrmgruBk/UCwd2qbU3vkcR/XExVOr1gXI+op1hpx4Liv0GjuMrcxyzeTjApgQyBw"}}, "unsigned": {"age_ts": 1570042108646}}i4eQa_$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1855}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-348:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042107830, "hashes": {"sha256": "huKItinP9CNZIyfCKeGLD0164b4xHlrnpV5QRpWcYs8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vlcla4UqnkwdI4gUioYCEurOPT6ixvAap1uGWF/GeiJtDwF2zGYsathxbW1Ty8p45fqDoIf19rnbau752KXdAQ"}}, "unsigned": {"age_ts": 1570042107830}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@UTSRQPONMKJIHGFECBA@?>=<;:987654/,+*)('&%$#"!      ~}|{zyzxywxvwuvtustrsqrpqopnomnlmkljkijhighfgefdecdbcab`a_`^_]V\U[TZSYRXQWPVOUMTKSJRIQHPGOENDMCLBKAJ@I?H>G=F<E;D:C9B8A7@-?,>+=*<);(:'9&8%7$6$5$4$3$2$1 0 / . -,+*)('&%$#"!      tsrqpnmlkjhgfeda`_^]\[ZYXWV     ~}|{yxwvusrqponmlkjihgfedcba`_^]\ 8 w 8B;eQm$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "txn_id": "224", "stream_ordering": 1862}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY"], "prev_events": ["$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY"], "type": "m.room.message", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"msgtype": "m.text", "body": "A message to wait on because the m.room.member doesn't come down /sync"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042114065, "hashes": {"sha256": "dkJW5hgG8R/V5VpEK2WXJDuKEFeUfm7qhKC5EpU7YG8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PnDwZGdoDPg6z6tJKckNkm6EW+MAGkOB6zUNVBjPfbczC2L7IIYswWoEcnaTs9L2d5VUfzivOPccUD1il4pPDQ"}}, "unsigned": {"age_ts": 1570042114065}}:eQa$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1861}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo"], "prev_events": ["$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY"], "type": "m.room.member", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"displayname": "boris", "membership": "join", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-348:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042113115, "hashes": {"sha256": "Eog5AmTLmj+ZvkYWFtVLGMrCvH7W83vA9G+XS7uWUG0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J+f0G97M5EsIzGWv/U7xEbDbmSt3x0R9z9sBBZN8K9i6DnpG8Owd/FWj78XQzSecL1HdY8rHEqoKgthkE7MhDw"}}, "unsigned": {"age_ts": 1570042113115, "replaces_state": "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"}}l9eQae$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1860}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ"], "type": "a.madeup.test.state", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042112107, "hashes": {"sha256": "pL4sqx7PjKFTzIsjt6fvZW3qosHQxDd+SuFYDHFHxyc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k2w5yxFEc7Ij+k+7TzdvCk4Ft6hqGzwblXTEGcjneEYNWygsVifPOpchzDP1QBXEKOfXlu4pYdz1vEcZGpz6Dw"}}, "unsigned": {"age_ts": 1570042112107}}8eQa$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1859}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo"], "type": "m.room.history_visibility", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042110736, "hashes": {"sha256": "9TREHdbDIRMN/eshI+E/xVsL/edkpfpgMgf88hh+5a0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J6ZubsSg9xt9V8kk2uB5YPjmy6Ac/qd8hz0QvFG5pUIJ+Ib6qF2svp8HzTx5X/tS3EV7FuAtJ+rN0O0UYJemAg"}}, "unsigned": {"age_ts": 1570042110736}} QeT)Fo}R' { P %<e y N # w L ! u J  s H qDmBk@gi>*Q!TkluVzxeeCbMtbFWWS:localhost:8800 *Q!TkluVzxeeCbMtbFWWS:localhost:8800 *Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 ; l*Q!UTAORDrNxIbSlGByAp:localhost:8800 9 j*Q!UTAORDrNxIbSlGByAp:localhost:8800 7 h*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800~*Q!UMFUOnYRvwKwSPkYHB:localhost:8800}*Q!UMFUOnYRvwKwSPkYHB:localhost:8800|*Q!UMFUOnYRvwKwSPkYHB:localhost:8800{*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  R*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  Q*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  P*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  O*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  N*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  M*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  L*Q!TcCLuIBUrtFqghDgay:localhost:8800L>*Q!TcCLuIBUrtFqghDgay:localhost:8800K=*Q!TcCLuIBUrtFqghDgay:localhost:8800J<*Q!TcCLuIBUrtFqghDgay:localhost:8800I;*Q!TcCLuIBUrtFqghDgay:localhost:8800H:*Q!TcCLuIBUrtFqghDgay:localhost:8800G9*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  K*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  J*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 I*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 H*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 G*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 F*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TlJCaYlCkOOVzFDlLx:localhost:8800r*Q!TlJCaYlCkOOVzFDlLx:localhost:8800q*Q!TlJCaYlCkOOVzFDlLx:localhost:8800p*Q!TlJCaYlCkOOVzFDlLx:localhost:8800o*Q!TlJCaYlCkOOVzFDlLx:localhost:8800n*Q!TlJCaYlCkOOVzFDlLx:localhost:8800m*Q!TlJCaYlCkOOVzFDlLx:localhost:8800l*Q!TlJCaYlCkOOVzFDlLx:localhost:8800k*Q!TlJCaYlCkOOVzFDlLx:localhost:8800j*Q!TlJCaYlCkOOVzFDlLx:localhost:8800i*Q!TlJCaYlCkOOVzFDlLx:localhost:8800h*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TWETXUgfFZafDdbqLS:localhost:880055*Q!TWETXUgfFZafDdbqLS:localhost:880044*Q!TWETXUgfFZafDdbqLS:localhost:880033*Q!TWETXUgfFZafDdbqLS:localhost:880022*Q!TWETXUgfFZafDdbqLS:localhost:880011   *t?eQau$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1866}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ"], "type": "m.room.join_rules", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042117916, "hashes": {"sha256": "jBTX6YJBW9MR2E76ZBZYEdhl/zp+4eBZ/nTtNc5c2Bw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bTZgrPbHOijAs6y0wUwKKMeRxkgoKKwLtn5chVSUWpHgQ2EFCcm8T1JhdYHvbMbG0W1gICiw3Z/1qjEamuoLDg"}}, "unsigned": {"age_ts": 1570042117916}}k>eQac$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1865}{"auth_events": ["$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "type": "m.room.power_levels", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"users": {"@anon-20191002_181700-349:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042116952, "hashes": {"sha256": "3Xqob0jIGznXo5ndOKwWCJ00zROq+sMaVGdexlAEeVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YCRoqZqg+Gur9SFEx1xmWhNxgCyBX9N7klsE51bNjdbY9rwYHYSHuUBcROSjQwf+4ED4w3IWD6DZ7ZXp7WjdBQ"}}, "unsigned": {"age_ts": 1570042116952}}v=eQay$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1864}{"auth_events": ["$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI"], "prev_events": ["$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI"], "type": "m.room.member", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-349", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-349:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042115976, "hashes": {"sha256": "VFZEAffbv4gzx/tnSbBNGT3PTvIdTJmNuummcUZ7+eE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BXDg92n/e0d4YXzRRx/E7dHsfpK+fpXnhqrCgYUY8WQVvb303bWrPf8AfzRvodlgaBRDhEMPTuDYfgfi7ybYBg"}}, "unsigned": {"age_ts": 1570042115976}}i<eQa_$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1863}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-349:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042115138, "hashes": {"sha256": "9ILNu+F80y1EzzqDezzPO73lRgFqFYXSbPTJTWkcuAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sO/h6KcF0iw1WDXSfc1zQSCqR302eqomEr948DfxIQKhpHEy/df1OgFQO15YGQkLuS9xl2+EwjK9Skw57doCDg"}}, "unsigned": {"age_ts": 1570042115138}} 4$| l d \ T,  L Dt< eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800aeeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800meeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800OeeQ$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800 ہeeQ$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800 <eeQ$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800MeeQ$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800сeeQ$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800KeeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800ށeeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800eeQ$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800 (eeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800 veeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800MeeQ$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800E qaQxh X H 8 ) A1! eeQ$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800F"eeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800V OeeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800=eeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800OeeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800 ,>eeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800neeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800 # <eeQ$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:8800zeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800 f7eeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800%eeQ$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800 eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ!odAvowLhHJcmkKlxFk:localhost:8800eeQ$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800 eeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800 peeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800m eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800 oeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800/eeQ$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800feeQ$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800W eeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800o eeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800 Z w +"ZDCeQq$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "txn_id": "225", "stream_ordering": 1870}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY"], "prev_events": ["$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY"], "type": "m.room.message", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"msgtype": "m.text", "body": "A message to wait on because the m.room.member might not come down /sync"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042121186, "hashes": {"sha256": "Oic6x/eC81n8fjiICNjrjVr6jOOi+qI0Z+1cxHJHg3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EVI6fQqMGtymc1jCF8Wxz+jUHYNqQnrQyYBQ3IlJ5b6XMj07EiadjRtmwnL8c+lV8zbc5y1J+7rcqH8Ukn/5DA"}}, "unsigned": {"age_ts": 1570042121186}}BeQa$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1869}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4"], "prev_events": ["$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs"], "type": "m.room.member", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"membership": "join", "displayname": "boris", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-349:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042120475, "hashes": {"sha256": "qO84QfFzZOYkENoeeZ2AS3KyMyoqlpYZDtxQ+VD9+N8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7SJoaxBA7+IB8sEwrT6g0tW0/f2/cjmeMMtVjjTFptbKuA+LtLs8Q7Uci4PNSNRsQtATTylbbiPfk2uUPlrOCA"}}, "unsigned": {"age_ts": 1570042120475, "replaces_state": "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"}}HAeQa$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1868}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0"], "type": "m.room.test", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042119780, "hashes": {"sha256": "YU+3ds5DL+C8sOrMLVtH2BQ6rED/kxwhUR3oZS/mKhk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n4d9C1l+jM5s0rhr5DCsKs6svCt3Qa1gMYBP7izBQn3KSpyQkD8BkSLmcLNAtxdN6sZ2n6febswoZMwxgWqlCQ"}}, "unsigned": {"age_ts": 1570042119780}}@eQa$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1867}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4"], "type": "m.room.history_visibility", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042118690, "hashes": {"sha256": "VBY1ARQSX2YroCBfHfFjDGFKmICP10z6/5NqGKrUZfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VfBzOzx7pdDNWLLTpPKQX6v4xV8Re50rg36IzKTOHBH2/ModdywgOLH3Wfg/YPtOkcbJxsFPDIUdknPodAGzDw"}}, "unsigned": {"age_ts": 1570042118690}}  E=6.|t l e ] U& M eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800 eeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800 keeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800 OeeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800yeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800LeeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800seeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800΁eeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800ŁeeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800ƁeeQ$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800ρeeQ$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800́eeQ$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800 ݁eeQ$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800:eeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800XeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800!eeQ$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800|eeQ$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:8800eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800!eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800 VeeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800t W _ 2 f ;  d 9 c8 Z-yLqDc6 l?^1~Q$yLl? T F  ' s   ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 X X,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 +Q !sqkBzbHHJOTNWwynqV:localhost:8800 +Q !tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800&&,Q!tDsPLsKOLPePtEWRwn:localhost:8800%%,Q!tDsPLsKOLPePtEWRwn:localhost:8800$$,Q!tDsPLsKOLPePtEWRwn:localhost:8800##,Q!tDsPLsKOLPePtEWRwn:localhost:8800""+Q !tDsPLsKOLPePtEWRwn:localhost:8800!!,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800+Q !svYOOXWZHtQQzlMcEP:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 ##,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 "",Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!!,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  ,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800+Q !sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!scyFsXcUIJiLIMwWMY:localhost:8800qq*Q!scyFsXcUIJiLIMwWMY:localhost:8800pp*Q!scyFsXcUIJiLIMwWMY:localhost:8800oo*Q!scyFsXcUIJiLIMwWMY:localhost:8800nn*Q!scyFsXcUIJiLIMwWMY:localhost:8800mm)Q !scyFsXcUIJiLIMwWMY:localhost:8800ll*Q!sPWVGnipjiiWQpywNO:localhost:8800 >>*Q!sPWVGnipjiiWQpywNO:localhost:8800==*Q!sPWVGnipjiiWQpywNO:localhost:8800<<*Q!sPWVGnipjiiWQpywNO:localhost:8800;;*Q!sPWVGnipjiiWQpywNO:localhost:8800::*Q!sPWVGnipjiiWQpywNO:localhost:880099*Q!sPWVGnipjiiWQpywNO:localhost:880088*Q!sPWVGnipjiiWQpywNO:localhost:880077)Q !sPWVGnipjiiWQpywNO:localhost:880066,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 W W,Q!tcYctHPiaKzsKgrXlU:localhost:8800 V V,Q!taANXnGBZntAreRurn:localhost:8800 U U,Q!tcYctHPiaKzsKgrXlU:localhost:8800 T T,Q!taANXnGBZntAreRurn:localhost:8800 S S,Q!tcYctHPiaKzsKgrXlU:localhost:8800 R R,Q!taANXnGBZntAreRurn:localhost:8800 Q Q,Q!tcYctHPiaKzsKgrXlU:localhost:8800 P P+Q !taANXnGBZntAreRurn:localhost:8800 O O+Q !tcYctHPiaKzsKgrXlU:localhost:8800 N N,Q!tkajvIKHoOMWGsReBs:localhost:8800+Q !tkajvIKHoOMWGsReBs:localhost:8800,Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y Y,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800+Q !sJnuQYOyruhUpXDsLY:localhost:8800,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p p,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o o,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n n,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m m+Q !tPkCGJBKmqUXJoRrnY:localhost:8800 l l,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800'' W _ 2 f ;  d 9 c8 Z-yLqDc6 l?^1~Q$yLl? T F  ' s   ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 X X,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 +Q !sqkBzbHHJOTNWwynqV:localhost:8800 +Q !tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800&&,Q!tDsPLsKOLPePtEWRwn:localhost:8800%%,Q!tDsPLsKOLPePtEWRwn:localhost:8800$$,Q!tDsPLsKOLPePtEWRwn:localhost:8800##,Q!tDsPLsKOLPePtEWRwn:localhost:8800""+Q !tDsPLsKOLPePtEWRwn:localhost:8800!!,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800+Q !svYOOXWZHtQQzlMcEP:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 ##,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 "",Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!!,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  ,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800+Q !sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!scyFsXcUIJiLIMwWMY:localhost:8800qq*Q!scyFsXcUIJiLIMwWMY:localhost:8800pp*Q!scyFsXcUIJiLIMwWMY:localhost:8800oo*Q!scyFsXcUIJiLIMwWMY:localhost:8800nn*Q!scyFsXcUIJiLIMwWMY:localhost:8800mm)Q !scyFsXcUIJiLIMwWMY:localhost:8800ll*Q!sPWVGnipjiiWQpywNO:localhost:8800 >>*Q!sPWVGnipjiiWQpywNO:localhost:8800==*Q!sPWVGnipjiiWQpywNO:localhost:8800<<*Q!sPWVGnipjiiWQpywNO:localhost:8800;;*Q!sPWVGnipjiiWQpywNO:localhost:8800::*Q!sPWVGnipjiiWQpywNO:localhost:880099*Q!sPWVGnipjiiWQpywNO:localhost:880088*Q!sPWVGnipjiiWQpywNO:localhost:880077)Q !sPWVGnipjiiWQpywNO:localhost:880066,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 W W,Q!tcYctHPiaKzsKgrXlU:localhost:8800 V V,Q!taANXnGBZntAreRurn:localhost:8800 U U,Q!tcYctHPiaKzsKgrXlU:localhost:8800 T T,Q!taANXnGBZntAreRurn:localhost:8800 S S,Q!tcYctHPiaKzsKgrXlU:localhost:8800 R R,Q!taANXnGBZntAreRurn:localhost:8800 Q Q,Q!tcYctHPiaKzsKgrXlU:localhost:8800 P P+Q !taANXnGBZntAreRurn:localhost:8800 O O+Q !tcYctHPiaKzsKgrXlU:localhost:8800 N N,Q!tkajvIKHoOMWGsReBs:localhost:8800+Q !tkajvIKHoOMWGsReBs:localhost:8800,Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y Y,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800+Q !sJnuQYOyruhUpXDsLY:localhost:8800,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p p,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o o,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n n,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m m+Q !tPkCGJBKmqUXJoRrnY:localhost:8800 l l,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800'' a} { y w u sqomkigeca~(eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~'eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~&eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~%eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~$eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~#eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~"eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~!eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~ eeQ$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~ eeQ$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~ eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800~ eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~ eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800 +?GN Y  [  b l h 0 ,s2y8>IJOZa 9T ]@anon-20191002_181700-382:localhost:8800a&\=S ] @anon-20191002_181700-381:localhost:8800m&\V>R ]  @anon-20191002_181700-380:localhost:8800m&\9Q ]@anon-20191002_181700-381:localhost:8800a&\9P ]@anon-20191002_181700-380:localhost:8800a&\=O ]  @anon-20191002_181700-379:localhost:8800m&\V>N ]  @anon-20191002_181700-378:localhost:8800m&\&9M ]@anon-20191002_181700-379:localhost:8800a&\9L ]@anon-20191002_181700-378:localhost:8800a&\>K ] @anon-20191002_181700-377:localhost:8800m&\e9J ]@anon-20191002_181700-377:localhost:8800a&\=I ]  @anon-20191002_181700-376:localhost:8800m&\V@H ]@anon-20191002_181700-375:localhost:8800m&\ 9G ]@anon-20191002_181700-375:localhost:8800a&\9F ]@anon-20191002_181700-376:localhost:8800a&\?E ] @anon-20191002_181700-374:localhost:8800m&\29D ]@anon-20191002_181700-374:localhost:8800a&\=C ] @anon-20191002_181700-372:localhost:8800m&\Z>B ] @anon-20191002_181700-373:localhost:8800m&\9A ]@anon-20191002_181700-372:localhost:8800a&\9@ ]@anon-20191002_181700-373:localhost:8800a&\>? ] @anon-20191002_181700-371:localhost:8800m&\9> ]@anon-20191002_181700-371:localhost:8800a&\>= ] @anon-20191002_181700-370:localhost:8800m&\e9< ]@anon-20191002_181700-370:localhost:8800a&\>; ] @anon-20191002_181700-369:localhost:8800m&\9: ]@anon-20191002_181700-369:localhost:8800a&\>9 ] @anon-20191002_181700-368:localhost:8800m&\e98 ]@anon-20191002_181700-368:localhost:8800a&\>7 ]  @anon-20191002_181700-367:localhost:8800m&\96 ]@anon-20191002_181700-367:localhost:8800a&\>5 ] @anon-20191002_181700-365:localhost:8800m&\X94 ]@anon-20191002_181700-365:localhost:8800a&\93 ]@anon-20191002_181700-366:localhost:8800a&\>2 ] @anon-20191002_181700-363:localhost:8800m&\X91 ]@anon-20191002_181700-363:localhost:8800a&\?- ] @anon-20191002_181700-360:localhost:8800m&\9p=/ ]  @anon-20191002_181700-362:localhost:8800m&\>. ] @anon-20191002_181700-361:localhost:8800m&\ I90 ]@anon-20191002_181700-364:localhost:8800a&\9, ]@anon-20191002_181700-360:localhost:8800a&\9+ ]@anon-20191002_181700-361:localhost:8800a&\9* ]@anon-20191002_181700-362:localhost:8800a&\?' ] @anon-20191002_181700-357:localhost:8800m&\9o=) ]  @anon-20191002_181700-359:localhost:8800m&\>( ] @anon-20191002_181700-358:localhost:8800m&\ J9& ]@anon-20191002_181700-359:localhost:8800a&\9% ]@anon-20191002_181700-357:localhost:8800a&\9$ ]@anon-20191002_181700-358:localhost:8800a&\=# ]  @anon-20191002_181700-356:localhost:8800m&\>" ] @anon-20191002_181700-355:localhost:8800m&\ I>! ] @anon-20191002_181700-354:localhost:8800m&\9 ]@anon-20191002_181700-356:localhost:8800a&\9 ]@anon-20191002_181700-354:localhost:8800a&\9 ]@anon-20191002_181700-355:localhost:8800a&\> ]@anon-20191002_181700-353:localhost:8800m&\> ] @anon-20191002_181700-352:localhost:8800m&\D9 ]@anon-20191002_181700-353:localhost:8800a&\9 ]@anon-20191002_181700-352:localhost:8800a&\= ]  @anon-20191002_181700-351:localhost:8800m&\> ] @anon-20191002_181700-350:localhost:8800m&\/"9 ]@anon-20191002_181700-350:localhost:8800a&\9 ]@anon-20191002_181700-351:localhost:8800a&\   *tGeQau$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1874}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw"], "type": "m.room.join_rules", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042125282, "hashes": {"sha256": "OJs3dl6zO8+jnHAPFRcKOP+PmWoWqzXv/i3+ueybPww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xNo8qXxn73BfdIrcU5kuivld0nvznmHfS25pg+tLe6T1u+YKxmU1AHMLKPfmAhhuDxDLSjDyq0Cc+iBe5Y5bDA"}}, "unsigned": {"age_ts": 1570042125282}}kFeQac$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1873}{"auth_events": ["$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "type": "m.room.power_levels", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"users": {"@anon-20191002_181700-350:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042124608, "hashes": {"sha256": "vsEHC/RlncvRAFDzEnlfM59NkW9VFv2wcp9Yri08knk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ETm+rKesYu8/M0nbkKiKfjOzo8ryx7w1XZgDV8l2VmkJbS/8f9cBnfZ731GkS/ts95zXDKayGCBM4tO7e4plBQ"}}, "unsigned": {"age_ts": 1570042124608}}vEeQay$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1872}{"auth_events": ["$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ"], "prev_events": ["$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ"], "type": "m.room.member", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-350", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-350:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042123961, "hashes": {"sha256": "CFA2bVTM2CynUlebIbhEeOzlQrX5o+kwyiZQHYZO0lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LLTPBT+XW2N7+W6GZQ084ena31IswVXEQfc48V9Ao5t0wGkaIJlsxPPffqu1MJ9Ey35erkF2wkMV5ugsPFr+Bw"}}, "unsigned": {"age_ts": 1570042123961}}iDeQa_$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1871}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-350:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042123191, "hashes": {"sha256": "B8oL1QbLQaHntOFJfJodpBmDUWgz4dU7VQAxFO1oR5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z59djYIVfFr830OZgvH99m/E5bQ7CWXl3qwxkOzbyam5RYDdT8RN/dy7fVchVP61KToubdeHDFXZ/1KRB06lAw"}}, "unsigned": {"age_ts": 1570042123191}} h+mYld Zm  \  ^   `g b ckifTeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800TeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800}TeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800aTeQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08!qjijQBfMwsCPTVgKPm:localhost:8800TeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800TeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800TeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU!DuqHkpTfWCUblSrxQj:localhost:8800SeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800'TeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800TeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800TeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800nTeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y!itfjLXhEaORJLkbfVS:localhost:8800`UTeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800TeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg!mTlCLZQCmfDuQsJxxp:localhost:8800MTeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800TeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800TTeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800TeQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800SeQ$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs!XIqmzIFbkHGQPIpywk:localhost:8800OTeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800TeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ!lgejtcwlywOoIXwEgy:localhost:8800WSeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800!TeQ$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc!DSFBpkqfnvBQbGoMUK:localhost:8800ATeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800ZTeQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800TeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800SeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM!ntuwVdUxfzNIhIKYaz:localhost:8800KTeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800TeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800TeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800TeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800SeQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc!SyIWYOmcGiASNkPCTB:localhost:8800 9 4/*|%w rmhc T Qev!bNSXSTadOMhIrYpMzH:localhost:8800$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagTQeu!bNSXSTadOMhIrYpMzH:localhost:8800$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQTQet!bNSXSTadOMhIrYpMzH:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0TQes!bNSXSTadOMhIrYpMzH:localhost:8800$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0TQer!TlJCaYlCkOOVzFDlLx:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoTQeq!TlJCaYlCkOOVzFDlLx:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gTQep!TlJCaYlCkOOVzFDlLx:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfATQeo!TlJCaYlCkOOVzFDlLx:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYTQen!TlJCaYlCkOOVzFDlLx:localhost:8800$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQTQem!TlJCaYlCkOOVzFDlLx:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0TQel!TlJCaYlCkOOVzFDlLx:localhost:8800$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMTQek!TlJCaYlCkOOVzFDlLx:localhost:8800$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgTQej!TlJCaYlCkOOVzFDlLx:localhost:8800$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EITQei!TlJCaYlCkOOVzFDlLx:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwTQeh!TlJCaYlCkOOVzFDlLx:localhost:8800$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gTQeg!bOSxzttDtclnrWnLov:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkTQef!bOSxzttDtclnrWnLov:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQTQee!bOSxzttDtclnrWnLov:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykTQed!bOSxzttDtclnrWnLov:localhost:8800$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkT Qec!bOSxzttDtclnrWnLov:localhost:8800$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUT Qeb!bOSxzttDtclnrWnLov:localhost:8800$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwT Qea!bOSxzttDtclnrWnLov:localhost:8800$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTET Qe`!bOSxzttDtclnrWnLov:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskT Qe_!bOSxzttDtclnrWnLov:localhost:8800$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4TQe^!DnUHoxreGexNmjSVpq:localhost:8800$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUTQe^!DnUHoxreGexNmjSVpq:localhost:8800$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoTQe]!DnUHoxreGexNmjSVpq:localhost:8800$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoTQe]!DnUHoxreGexNmjSVpq:localhost:8800$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UTQe\!DnUHoxreGexNmjSVpq:localhost:8800$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8TQe\!DnUHoxreGexNmjSVpq:localhost:8800$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UTQe[!DnUHoxreGexNmjSVpq:localhost:8800$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwTQe[!DnUHoxreGexNmjSVpq:localhost:8800$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8TQeZ!DnUHoxreGexNmjSVpq:localhost:8800$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WITQeZ!DnUHoxreGexNmjSVpq:localhost:8800$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwT~QeY!DnUHoxreGexNmjSVpq:localhost:8800$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIT}QeY!DnUHoxreGexNmjSVpq:localhost:8800$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IT|QeX!DnUHoxreGexNmjSVpq:localhost:8800$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IT{QeX!DnUHoxreGexNmjSVpq:localhost:8800$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsTzQeW!DnUHoxreGexNmjSVpq:localhost:8800$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsTyQeV!DnUHoxreGexNmjSVpq:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0TxQeU!DnUHoxreGexNmjSVpq:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsTwQeT!DnUHoxreGexNmjSVpq:localhost:8800$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwTvQeS!DnUHoxreGexNmjSVpq:localhost:8800$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYTuQeR!DnUHoxreGexNmjSVpq:localhost:8800$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMITtQeQ!DnUHoxreGexNmjSVpq:localhost:8800$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw S $XHS @ 8 0 ( tlX;;Q$97_sf2:localhost:42455$96_sf1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 S93Q$95_m1:localhost:42455$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 W;9Q$92_sf1:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 S93Q$91_m1:localhost:42455$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 _3QQ$90:localhost:42455$1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800 W;9Q$96_sf1:localhost:42455$95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 l!b9QQ$98_m2:localhost:42455$1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 eeQ$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800 (W9;Q$98_m2:localhost:42455$97_sf2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 eeQ$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800ȁeeQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800eeQ$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800eeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800 SeeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc!fGkUEndqGrieltwbCh:localhost:8800 eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800;eeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800DeeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800сeeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800 PeeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800فeeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800QeeQ$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800_3QQ$94:localhost:42455$1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 W;9Q$93_sf2:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800  _  " - U`.T>Iw  _ L [aeQ' $_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.createeQ']$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800leavegeQ3 $7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.statem eQ? $6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibilitye eQ/ $VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rulesg eQ3 $CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels eQ']$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800joina eQ' $H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800m.room.create eQ']$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800join eQ']$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800joinaeQ' $p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800m.room.create eQ']$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800joinmeQ? $C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibilityeeQ/ $c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rulesg~eQ3 $o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levelsa|eQ' $wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create' {eQ']$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800joingzeQ3 $cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.statemyeQ? $FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibilityexeQ/ $1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rulesgweQ3 $6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levelsaueQ' $klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800m.room.create teQ']$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800joingeQ3 $iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.statemeQ? $61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibilityeeQ/ $1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rulesgeQ3 $1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels m gKmZ\eQaA$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 370, "stream_ordering": 1895}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ"], "prev_events": ["$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-353:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-353:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042142958, "hashes": {"sha256": "j/1YvBtV0ohWWN2IvClXVfm5y2HWr7KbRzRbmcY+7E0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LjCRBcST9+A8AjNAN39WwOSkuOhfjhhwzs66oZ1F/CsD8wjczlZfLGBtMuyrmUKeUGIRUl45LX8IZv0cpcl+CA"}}, "unsigned": {"age_ts": 1570042142958, "replaces_state": "$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ"}}[eQa=$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 370, "stream_ordering": 1894}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw"], "prev_events": ["$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-353:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-353", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-353:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042141994, "hashes": {"sha256": "WAn975XYb9RcmsHtYbINAdaGGAiaaQ+3MPWnsj7gIH0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q6TTGHGTizxZ8t4HRvVVaq/Df9D8zKrtjmBf1XnU7LI7xGj+9P/VzKzyV1aj69svhibjt5E6dObTu5iNKOtEAw"}}, "unsigned": {"age_ts": 1570042141994, "replaces_state": "$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk"}}ZeQa7$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1893}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-353", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-353:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042141085, "hashes": {"sha256": "AMNwnrRgK9D4BzvwceNXkdCIS85csnaYWR9mLGEbCho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Az64csrpqObMim+mfnolmxReRd7M1bH+tCFsRhlkkWDJW4QInM7AiYMm/4R7Lp07ab96xa36h50s+TbUCPttAA"}}, "unsigned": {"age_ts": 1570042141085, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-352:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-352:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-352", "avatar_url": null}, "sender": "@anon-20191002_181700-352:localhost:8800"}]}} JV*rDvHb4 | P " j <  X * r D  ^ 0 xJd6~P"j<^0xJ +[@anon-20191002_181700-36:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-478:localhost:8800*-]@anon-20191002_181700-477:localhost:88007-]@anon-20191002_181700-476:localhost:8800(-]@anon-20191002_181700-475:localhost:88005-]@anon-20191002_181700-474:localhost:8829%-]@anon-20191002_181700-473:localhost:8800.-]@anon-20191002_181700-469:localhost:88001-]@anon-20191002_181700-468:localhost:8829+-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-466:localhost:8829#-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800"-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-459:localhost:8829-]@anon-20191002_181700-458:localhost:8800!-]@anon-20191002_181700-454:localhost:8800 -]@anon-20191002_181700-453:localhost:8829-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-451:localhost:8829-]@anon-20191002_181700-450:localhost:8800-]@anon-20191002_181700-449:localhost:8800-]@anon-20191002_181700-448:localhost:8800-]@anon-20191002_181700-447:localhost:8800 -]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-404:localhost:8800+[@anon-20191002_181700-39:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-395:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800-]@anon-20191002_181700-390:localhost:8800+[@anon-20191002_181700-38:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:8800 HHb  O U# j8 P0) p>  D v V $ \ * |[h6n< tBzDyzFx_DyzF1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8r1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o01e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiok1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx40e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE~1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg q1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 21e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog O1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sd1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM}1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE+1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 61e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIb1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw *1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA T1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU R 21e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y#1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo31e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA]1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUb1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns 1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs 1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 21e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I !1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y , d1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzou21e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wh1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA$1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo?1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I%1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4?1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s61e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g n w nJeQa7$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1877}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw"], "type": "m.room.member", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-351", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-351:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042128924, "hashes": {"sha256": "G+ha6J9HtmUes8RNuTw5Rh1FZnKVmpEOafPBITJ+BCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9caFLWAuMQMEBD+M3S1BtOUBSfmzdDvXdSK8K8th2DTbO4UgxsBov/lnQQ6RUmlGn9I/3hjLEwCfx5F0jjQ3AQ"}}, "unsigned": {"age_ts": 1570042128924, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-350:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-350:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-350", "avatar_url": null}, "sender": "@anon-20191002_181700-350:localhost:8800"}]}}lIeQae$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1876}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY"], "type": "a.madeup.test.state", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042127960, "hashes": {"sha256": "42Gusph6f9fk2MugoZIiP58SJDJQpptDtIQDM9PB/fE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/kNaIj3AffMEtUtxLrYqwpxufoQCCUGL152PMBJYc2iQ/Za+2wKkh6zdFFQu0BOCuPtrJG4Zoes68xBaeCOUCg"}}, "unsigned": {"age_ts": 1570042127960}}HeQa$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1875}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI"], "type": "m.room.history_visibility", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042126448, "hashes": {"sha256": "hgGkTNqZnI6eVJabPCn6Gi8M+ASnoH/83YTLym6gLnU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kCb3okpgGcc9KBYIGupX38lZ6OVxfEGGaQotesPz1XKqAjv6eys/JznXoWKj15GyecSHgZTXWvdgL+suNt0NCQ"}}, "unsigned": {"age_ts": 1570042126448}} 8V b ^  Z hft.8$ke/Q ]$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgm.room.join_rules!TlJCaYlCkOOVzFDlLx:localhost:8800mm@anon-20191002_181700-354:localhost:8800&je3Q ]$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIm.room.power_levels!TlJCaYlCkOOVzFDlLx:localhost:8800m>mv@anon-20191002_181700-354:localhost:8800 ie'Q ]$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800mms@anon-20191002_181700-354:localhost:8800h e'Q  ]$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gm.room.create!TlJCaYlCkOOVzFDlLx:localhost:8800mRm@anon-20191002_181700-354:localhost:8800 ge'Q ] $9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkm.room.member!bOSxzttDtclnrWnLov:localhost:8800 mmT@anon-20191002_181700-353:localhost:8800 fe'Q ]$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQm.room.member!bOSxzttDtclnrWnLov:localhost:8800m*mݎ@anon-20191002_181700-353:localhost:8800 ee'Q ]$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykm.room.member!bOSxzttDtclnrWnLov:localhost:8800mٝm@anon-20191002_181700-352:localhost:8800&de3Q ]$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlka.madeup.test.state!bOSxzttDtclnrWnLov:localhost:8800mLm:@anon-20191002_181700-352:localhost:8800,ce?Q ]$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUm.room.history_visibility!bOSxzttDtclnrWnLov:localhost:8800mёm4@anon-20191002_181700-352:localhost:8800$be/Q ]$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwm.room.join_rules!bOSxzttDtclnrWnLov:localhost:8800mm@anon-20191002_181700-352:localhost:8800&ae3Q ]$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEm.room.power_levels!bOSxzttDtclnrWnLov:localhost:8800mmI@anon-20191002_181700-352:localhost:8800 `e'Q ]$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskm.room.member!bOSxzttDtclnrWnLov:localhost:8800mmZ@anon-20191002_181700-352:localhost:8800_ e'Q  ]$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4m.room.create!bOSxzttDtclnrWnLov:localhost:8800mmū@anon-20191002_181700-352:localhost:8800(^e7Q ] $MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͽmͿ@anon-20191002_181700-350:localhost:8800(]e7Q ] $ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 m͸kmͽ @anon-20191002_181700-350:localhost:8800(\e7Q ] $UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4Ua.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͷpm͸q@anon-20191002_181700-350:localhost:8800([e7Q ] $H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8a.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 m͵mͶ@anon-20191002_181700-350:localhost:8800(Ze7Q ] $oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mʹm͵S@anon-20191002_181700-350:localhost:8800(Ye7Q ] $e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͲmͳz@anon-20191002_181700-350:localhost:8800(Xe7Q ] $zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7Ia.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͯmͲ@anon-20191002_181700-350:localhost:8800(We7Q ] $3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͯmͰ@anon-20191002_181700-350:localhost:8800 Ve'Q ]$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0m.room.member!DnUHoxreGexNmjSVpq:localhost:8800mͭmͭ@anon-20191002_181700-351:localhost:8800 Ue'Q ]$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsm.room.member!DnUHoxreGexNmjSVpq:localhost:8800mͪmͪ@anon-20191002_181700-350:localhost:8800&Te3Q ]$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwa.madeup.test.state!DnUHoxreGexNmjSVpq:localhost:8800mͦXmͦ@anon-20191002_181700-350:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VteL$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIsha256^DQxVQ7OvN7mP7у2VseL$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQsha256!IZB;+,mK*&_q`eVreL$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUsha256 I`Zc-Քw)2 [o!#D%VqeL$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcsha256ZR"ճjmeObץ⠦VpeL$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAsha256_'ɸ _Pj٭|#u1sm0VoeL$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__csha256 'K Wml.I.FzOrmVneL$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygsha256CLF-Hq*ׁ&`m,VVeL$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEsha256 ՘ mdfLG*\ 1VUeL$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsksha256W$R|(IKUGR"VTeL$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4sha256`Zib{흏[.Qp*?DVSeL$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUsha2561Wm!xr]%(n|!5VReL$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQosha256t iy<b4{٢ VQeL$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4Usha256R&+GARX>@B'ౄ7VPeL$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8sha256Ҵz[)QeLBGq֝ ZNVOeL$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwsha256'ߝ0MPeH!V&4(/c-ilVNeL$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIsha256{  (R\ⷤq+ I/d-a(kbVMeL$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7Isha256vC9j,ri8Y^& cVLeL$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExssha256ll{*Wo'QA(]VKeL$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0sha256BN^#zJL"0VJeL$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvssha2569o)!y]`a$CVIeL$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwsha2560oQ6T%[1,)< ]`8xP(pHh@`8pH X 0  h @ ( P x ` 8  p H X0h@ X0xPX0 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800L'Q!IPYMCBwcyNIzqdiIWv:localhost:8800K'Q!IPYMCBwcyNIzqdiIWv:localhost:8800J'Q!IPYMCBwcyNIzqdiIWv:localhost:8800I'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HZqzpRgqekPOtxstVc:localhost:8800B'Q!HZqzpRgqekPOtxstVc:localhost:8800A'Q!HZqzpRgqekPOtxstVc:localhost:8800@'Q!HZqzpRgqekPOtxstVc:localhost:8800?'Q!HZqzpRgqekPOtxstVc:localhost:8800>'Q!HZqzpRgqekPOtxstVc:localhost:8800= x'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800H'Q!IPYMCBwcyNIzqdiIWv:localhost:8800G'Q!IPYMCBwcyNIzqdiIWv:localhost:8800F'Q!IPYMCBwcyNIzqdiIWv:localhost:8800E'Q!IPYMCBwcyNIzqdiIWv:localhost:8800D'Q!IPYMCBwcyNIzqdiIWv:localhost:8800C'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800C'Q!ILbUVZOfPPwaZRrKJd:localhost:8800B'Q!ILbUVZOfPPwaZRrKJd:localhost:8800A'Q!ILbUVZOfPPwaZRrKJd:localhost:8800@'Q!ILbUVZOfPPwaZRrKJd:localhost:8800?'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ('Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HmkcAMkMjWRhTDJMsy:localhost:8800c'Q!HmkcAMkMjWRhTDJMsy:localhost:8800b'Q!HmkcAMkMjWRhTDJMsy:localhost:8800a'Q!HmkcAMkMjWRhTDJMsy:localhost:8800`'Q!HmkcAMkMjWRhTDJMsy:localhost:8800_'Q!HmkcAMkMjWRhTDJMsy:localhost:8800^'Q!HmkcAMkMjWRhTDJMsy:localhost:8800]'Q!HmkcAMkMjWRhTDJMsy:localhost:8800\'Q!HmkcAMkMjWRhTDJMsy:localhost:8800['Q!HhYREfUiJTpjWmOuPF:localhost:8800I'Q!HhYREfUiJTpjWmOuPF:localhost:8800H'Q!HhYREfUiJTpjWmOuPF:localhost:8800G'Q!HhYREfUiJTpjWmOuPF:localhost:8800F'Q!HhYREfUiJTpjWmOuPF:localhost:8800E'Q!HhYREfUiJTpjWmOuPF:localhost:8800D'Q!HcMGemcRrLnLprOJJR:localhost:8800  qpNeQI$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "228", "stream_ordering": 1881}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 3}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042131174, "hashes": {"sha256": "SmcVWoYzby05XgJ/iH1vYqKzJ8sy+fqZtGypJHf8ibU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sWW5XuscbzgwUkhUhk/w/+TqZcXJZuOC1+6SdIaRB3TXRcfD7eLNV6oOp+OZFzKMDEKfXak4qZ+OcEj+I08mCg"}}, "unsigned": {"age_ts": 1570042131174}}oMeQG$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "226", "stream_ordering": 1880}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042130328, "hashes": {"sha256": "7HhJx5kG7MCuvLEG6B2jkEukS6NAZzFXF3Mh9OBFppQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1SBCUd1ZA0sLy4aiPAAZ8t4ebbAAyoB1hoqxQ3DrlL85A5VLTvTLiF5BY/8YKanzX2DfBGRO17YvbHE0zMxSDQ"}}, "unsigned": {"age_ts": 1570042130328}}oLeQG$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "227", "stream_ordering": 1879}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 2}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042130325, "hashes": {"sha256": "xfdz9IiVoI9wKkka2INiDfk2Pu5OIpNuvMZmj1I2CTo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MaQXPGTvm6DyaVe5efwsk7XHcoorRngxH3DO5SvBVQtX1jcAKDIZHUfEY6VoZvurgmbzVCAhJQUNJ2dqb0tlDQ"}}, "unsigned": {"age_ts": 1570042130325}}KeQa=$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 367, "stream_ordering": 1878}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI"], "prev_events": ["$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs"], "type": "m.room.member", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-351:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-351", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-351:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042129693, "hashes": {"sha256": "FQYfelEVloxndCYhfdirtnpdVe2E01j4y8cmgNZ4onY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lTZt9evuLHDa2P7/Uqh38St8IL3IrnzHAwAscuF2cCQvpSfjrZQDffAJkBU7+dtMeeITXojmCnPVAiU7gnd0DA"}}, "unsigned": {"age_ts": 1570042129693, "replaces_state": "$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs"}} p \p ReQ)$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "232", "stream_ordering": 1885}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw", "$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 7}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042132587, "hashes": {"sha256": "lr33ej4rrIZk+MMwfRBNOyAGYkluHDFdUCSz93+djZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d+m86A/nUkvfn56em8SoNUXEK/oq7Y5JoSNcouhwo4ass+sA/KmeGrtThIik71LQTh7FTNqfIIEFhg6rYI8+Ag"}}, "unsigned": {"age_ts": 1570042132587}} QeQ)$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "231", "stream_ordering": 1884}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI", "$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 6}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042132336, "hashes": {"sha256": "h+x/fLWzsyuAMP+WlV2E30E6io9kuHs8tIUHoafD7Ls"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JWm+n08kFLMFFPc7aCzfAqF1dlL4O0HXsjq+ZKQf+VxYSRW93wXZKYCL3qhtnnEGXqA7/k3vNh0xdQbnQAvrBw"}}, "unsigned": {"age_ts": 1570042132336}} PeQ)$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "230", "stream_ordering": 1883}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I", "$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 5}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042131955, "hashes": {"sha256": "XQyUP9Hj9Y/NZUlINszPAmYrieGlAZjaxdXKn6Y1MB8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "goYzpeKXbKfa5s9rGEHCaGVmY5Q2aBhENd+jfmLHDwzKHf6qZwe33YlTH/9mZEZ4P53R+SLI/eDE/3IGlWDQCw"}}, "unsigned": {"age_ts": 1570042131955}} OeQ)$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "229", "stream_ordering": 1882}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs", "$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 4}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042131624, "hashes": {"sha256": "xSIGanmdXDMoYlnl+mSk+jdmitttPkuy9kit+o0ejlc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NBMIPoCw3F0i4+mFL2KAh82GEBRsui+LmYgSGQMoFisJLYSK8qRk7bgXjM3RAfFBBChGWJ6XVL2SZWl6FEFdAQ"}}, "unsigned": {"age_ts": 1570042131624}} ~z v r n j fb^ZVRNJFAeeQ$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800@eeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800?eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800>eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8!bNSXSTadOMhIrYpMzH:localhost:8800=eeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800<eeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800;eeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800:eeQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:88009eeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:88008eeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:88007eeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:88006eeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:88005eeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:88004eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:88003eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:88002eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:88001eeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:88000eeQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800/eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800.eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800-eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800,eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800+eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800*eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800)eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800(eeQ$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800'eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U!DnUHoxreGexNmjSVpq:localhost:8800&eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800%eeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800$eeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800  \ okVeQac$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1889}{"auth_events": ["$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "type": "m.room.power_levels", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"users": {"@anon-20191002_181700-352:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042137358, "hashes": {"sha256": "Jtk0vf6bC7LCpLeb+FvewXt58n6jPwXZm8CxfKvTqhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HPRHYvLnV6bHr8IYpHsElIqxAp0hz2GO9PkdDzy6tMijLSmbJugsz3+KlcECjOWo9J2BwoW2xnFsaBMjYP+vAQ"}}, "unsigned": {"age_ts": 1570042137358}}vUeQay$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1888}{"auth_events": ["$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4"], "prev_events": ["$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-352", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-352:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042136781, "hashes": {"sha256": "MIZvp9hWNbcKqOr8DSFhXa7+j+8JD/AcxRZjcXjh1dA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1X5fCI7dEf05ZDcwNILMbv3NKa5UQmRkUVMzPDtm0QTdhcXc275Zs2Fy87I366QZR+cd6jYorrwvZUJcZX9nDA"}}, "unsigned": {"age_ts": 1570042136781}}iTeQa_$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1887}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-352:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042135807, "hashes": {"sha256": "WPGDhCJfkKSo3qUSyGiPmCWTSpafZKSFvv43dDScbtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5u4aHaELX4b8Z4zmrk1HyV4yN2Zj1j2xDanIn41Zmre9lRM2SKYLpbhgUkmwRw5TWGpdhZhvera6zf0tJzF4CA"}}, "unsigned": {"age_ts": 1570042135807}} SeQ)$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "233", "stream_ordering": 1886}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8", "$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 8}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042133955, "hashes": {"sha256": "+lwzJlNvFEhOkE7cenLgZR7NOucIR4kK91GqYom7Es4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RjZRsNQkmGuu7kVoWE2OYKSmP8Xid8GjT/irU3lOgyPMA9RK/7UETY07BeZbH/iqkTq1HQhWScZu/uVu6fqxBw"}}, "unsigned": {"age_ts": 1570042133955}} i5hi g 4  1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrSWNNYyMtcztDOTpSXl4KMDAyZnNpZ25hdHVyZSB-FTDcMYIrakCJawDmb3aBv18F3P31mU-pI3jX6M9MQQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAo~1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-Bwo|1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6Bjdgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9go  } $  [ H $5 $n q1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg2MU1hXm5BPV9mY3pHSDIKMDAyZnNpZ25hdHVyZSDYwznq40c_q4a6OD39IVJeXYATWzSsye1YD37lAobSewo d1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFacUN2dzJMWTcjMnh6S04KMDAyZnNpZ25hdHVyZSBIE31dBp2khHIslpt9L2ttXRkowx20GElKVJtaEFSdkgo g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8jTldNRmhjQDJZSGt5a0kKMDAyZnNpZ25hdHVyZSAytp0T7K0GtNLyrrvvKThMXkDCn1jZ6wI9npjmCcM0CwoC P1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_wo ɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0AoP 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9Fc0wuMl8xM1c4YW1CREgKMDAyZnNpZ25hdHVyZSA3WuGT1fvmgWAOhsMNpgmzTj0NDM9yJnvO3x46JsV22Qo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9wo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0Qo7 MG\?$kN3^A& n Q 6  x a "  k , z _ < \ kP-My\A}>jmJ }Z.h >'>']xm.room.member@anon-20191002_181700-347:localhost:88003 wa.madeup.test.state"? vm.room.history_visibility/ um.room.join_rules3 tm.room.power_levels>']sm.room.member@anon-20191002_181700-346:localhost:8800' rm.room.create.31qa.madeup.test.statethis_state_changes63Apa.madeup.test.statethis_state_does_not_change.31oa.madeup.test.statethis_state_changes~"? nm.room.history_visibility}>']m.room.member@anon-20191002_181700-363:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-361:localhost:8800>']m.room.member@anon-20191002_181700-362:localhost:8800>']m.room.member@anon-20191002_181700-361:localhost:8800>']m.room.member@anon-20191002_181700-362:localhost:8800"? m.room.history_visibility>']m.room.member@anon-20191002_181700-361:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-360:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-358:localhost:8800>']m.room.member@anon-20191002_181700-359:localhost:8800>']m.room.member@anon-20191002_181700-358:localhost:8800>']m.room.member@anon-20191002_181700-359:localhost:8800"? m.room.history_visibility>']m.room.member@anon-20191002_181700-358:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-357:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-355:localhost:8800>']m.room.member@anon-20191002_181700-356:localhost:8800>']m.room.member@anon-20191002_181700-355:localhost:8800>']m.room.member@anon-20191002_181700-356:localhost:8800"? m.room.history_visibility>']m.room.member@anon-20191002_181700-355:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-354:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-353:localhost:8800>']m.room.member@anon-20191002_181700-353:localhost:8800>']m.room.member@anon-20191002_181700-353:localhost:88003 a.madeup.test.state"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-352:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-351:localhost:8800>']m.room.member@anon-20191002_181700-351:localhost:88003 a.madeup.test.state"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-350:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-349:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-349:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-348:localhost:88003 a.madeup.test.state"? ~m.room.history_visibility/ }m.room.join_rules3 |m.room.power_levels>']{m.room.member@anon-20191002_181700-348:localhost:8800' zm.room.create>']ym.room.member@anon-20191002_181700-347:localhost:8800 ("D f  ; a 6X~1Su(JlQQQ$1570042655148eXOyA:locnQQQ$1570042660156wxhvl:localhost:8800$1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042659155mEUeP:localhost:8800$1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042659154Fztdf:localhost:8800$1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042658153tmCYJ:localhost:8800$1570042658152btGpA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042658152btGpA:localhost:8800$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042657151cITOZ:localhost:8800$1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042656150UsLRz:localhost:8800$1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042656149JNVWR:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042655148eXOyA:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042654147iSsjl:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800lQMQ$1570042651145wBynt:localhost:8800$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800lMQQ$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042649143JxPAB:localhost:8800$1570042648142spuws:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042648142spuws:localhost:8800$1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042648141xSHQB:localhost:8800$1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042647140rNeEf:localhost:8800$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042646139VXLYO:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042646138YEunv:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042645137fBnPZ:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800lQMQ$1570042642135oMfQy:localhost:8800$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800lMQQ$15700426410cEjWu:localhost:8829$1570042640133wGmrF:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042640133wGmrF:localhost:8800$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042639132zhjjB:localhost:8800$1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042638131kazZm:localhost:8800$1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042637130zlkqP:localhost:8800$1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042636129shBTe:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042635128KJCvL:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042634127eDBry:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042632125lwdOR:localhost:8800$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800nQQQ$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800nQQQ$1570042631123SLyGA:localhost:8800$1570042630122bUTeO:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800nQQQ$1570042630122bUTeO:localhost:8800$1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 gs 1 : / ] `cIXarXg eQ']$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800aeQ' $PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800m.room.create eQ']$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800 ~eQ']$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800 }eQ']$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800 |eQ']$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800m{eQ? $6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility zeQ']$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800myeQ? $8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibilityexeQ/ $nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rulesgweQ3 $WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels veQ']$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800aueQ' $IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create teQ']$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800 seQ']$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800 reQ']$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800 qeQ']$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800mpeQ? $gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility oeQ']$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800mneQ? $3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibilityemeQ/ $wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rulesgleQ3 $oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levels keQ']$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800ajeQ' $_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create ieQ']$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800 heQ']$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800 geQ']$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800gfeQ3 $7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.statemeeQ? $6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibilityedeQ/ $VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rulesgceQ3 $CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels beQ']$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800  lYeQae$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1892}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU"], "type": "a.madeup.test.state", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042139980, "hashes": {"sha256": "09dSc7SDwIMlFtiU9egL1NdzXlGh0/+o3/8MxLokAu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DQSPIyW1dBEMsix9+2dAkz7amsGZlXLVmg1fYxu1OY6syL6bLyVpTjcRV9YC8vqI5SFJU5xV4bOif/OZLonoDw"}}, "unsigned": {"age_ts": 1570042139980}}XeQa$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1891}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw"], "type": "m.room.history_visibility", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042139025, "hashes": {"sha256": "dGcT7QF6dR76Ae6Utohva8cN6WgHSTu+moFLLOk7LPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IPib8LDL2qYxNc5n53WRZpCJJQNFJa8LvybfIAeqHr2lofiQ3Fi2BFDCFRCF2eBNVZKj8DuWaLZkmDIAwBaYBQ"}}, "unsigned": {"age_ts": 1570042139025}}tWeQau$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1890}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE"], "type": "m.room.join_rules", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042138100, "hashes": {"sha256": "PV5XV9TvDhCW7uC1F3GpRbgkoeiyZgLWxgn1Q74gr7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4ncsPxfOZ0t6Wg7EV8ufy8spbDZOy2hq098kUJWKMEM4P6GsJ5W73Pg8SVK6SW02qSUT8dyJugrFI0cf4WBnDQ"}}, "unsigned": {"age_ts": 1570042138100}} -RM H C > 9 4/*|%w rmhc T@Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMT?Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgT>Qe!pUSFAnuwUuMlbiInDR:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsT=Qe!pUSFAnuwUuMlbiInDR:localhost:8800$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkT<Qe!pUSFAnuwUuMlbiInDR:localhost:8800$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYT;Qe!pUSFAnuwUuMlbiInDR:localhost:8800$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0roT:Qe!pUSFAnuwUuMlbiInDR:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GET9Qe!pUSFAnuwUuMlbiInDR:localhost:8800$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5kT8Qe!SrMQpDMFREKRMELwbL:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4T7Qe!SrMQpDMFREKRMELwbL:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUT6Qe!SrMQpDMFREKRMELwbL:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqkT5Qe!SrMQpDMFREKRMELwbL:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYT4Qe!SrMQpDMFREKRMELwbL:localhost:8800$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUT3Qe!SrMQpDMFREKRMELwbL:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94T2Qe!SrMQpDMFREKRMELwbL:localhost:8800$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQT1Qe!SrMQpDMFREKRMELwbL:localhost:8800$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAT0Qe!SrMQpDMFREKRMELwbL:localhost:8800$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9oT/Qe!SrMQpDMFREKRMELwbL:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-QT.Qe!SrMQpDMFREKRMELwbL:localhost:8800$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1CjodwT-Qe!bNSXSTadOMhIrYpMzH:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMT,Qe!bNSXSTadOMhIrYpMzH:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgT+Qe!bNSXSTadOMhIrYpMzH:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAT*Qe!bNSXSTadOMhIrYpMzH:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cT)Qe!bNSXSTadOMhIrYpMzH:localhost:8800$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8YgT(Qe!bNSXSTadOMhIrYpMzH:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumET'Qe!bNSXSTadOMhIrYpMzH:localhost:8800$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8T&Qe!bNSXSTadOMhIrYpMzH:localhost:8800$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagT%Qe!bNSXSTadOMhIrYpMzH:localhost:8800$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQT$Qe!bNSXSTadOMhIrYpMzH:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0T#Qe!bNSXSTadOMhIrYpMzH:localhost:8800$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0T"Qe!TlJCaYlCkOOVzFDlLx:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoT!Qe!TlJCaYlCkOOVzFDlLx:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gT Qe!TlJCaYlCkOOVzFDlLx:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfATQe!TlJCaYlCkOOVzFDlLx:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0TQe!TlJCaYlCkOOVzFDlLx:localhost:8800$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EITQe!TlJCaYlCkOOVzFDlLx:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gTQe!bOSxzttDtclnrWnLov:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkTQe!bOSxzttDtclnrWnLov:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQTQe!bOSxzttDtclnrWnLov:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykTQe!bOSxzttDtclnrWnLov:localhost:8800$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk a} { y w u sqomkigeca~GeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~FeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~EeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~DeeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~CeeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~BeeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~AeeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~@eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~?eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~>eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~=eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~<eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~;eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~:eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~9eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~8eeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~7eeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~6eeQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~5eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800~4eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~3eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~2eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800~1eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~0eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~/eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~.eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800~-eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~,eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~+eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~*eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~)eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800 Q)R { N w Cl<5Qp>?]11 @__ANON__:localhost:41985@anon-20191002_181700-651:localhost:8800$3:localhost:41985!0:localhost:419851p=?]11 @__ANON__:localhost:44405@anon-20191002_181700-650:localhost:8800$3:localhost:44405!0:localhost:444051p<?]11 @__ANON__:localhost:37265@anon-20191002_181700-649:localhost:8800$3:localhost:37265!0:localhost:372651s;E]31 @__ANON__-25:localhost:42455@anon-20191002_181700-648:localhost:8800$37:localhost:42455!8:localhost:42455s:E]31 @__ANON__-24:localhost:42455@anon-20191002_181700-647:localhost:8800$33:localhost:42455!7:localhost:42455(9]]eQ Y@anon-20191002_181700-614:localhost:8800@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800(8]]eQ P@anon-20191002_181700-612:localhost:8800@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800T7]]eQe f@anon-20191002_181700-559:localhost:8829@anon-20191002_181700-558:localhost:8800$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQT6]]eQe P@anon-20191002_181700-556:localhost:8800@anon-20191002_181700-557:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4T5]]eQe H@anon-20191002_181700-554:localhost:8800@anon-20191002_181700-555:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsT4]]eQe @anon-20191002_181700-508:localhost:8800@anon-20191002_181700-509:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMT3]]eQe f@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-494:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAT2]]eQe @anon-20191002_181700-478:localhost:8800@anon-20191002_181700-479:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w@1]]QQQ @anon-20191002_181700-463:localhost:8800@anon-20191002_181700-464:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042699203fHFjU:localhost:8800@0]]QQQ p@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-449:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632124bMwzE:localhost:8800T/]]eQe"@anon-20191002_181700-373:localhost:8800@anon-20191002_181700-372:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w(.]]eQ@anon-20191002_181700-365:localhost:8800@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800(-]]eQ@anon-20191002_181700-363:localhost:8800@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800T,]]eQe@anon-20191002_181700-360:localhost:8800@anon-20191002_181700-362:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUT+]]eQe@anon-20191002_181700-357:localhost:8800@anon-20191002_181700-359:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgT*]]eQeq@anon-20191002_181700-354:localhost:8800@anon-20191002_181700-356:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gT)]]eQef@anon-20191002_181700-352:localhost:8800@anon-20191002_181700-353:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ DM u  r B ?< Pqt pQ? e!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQhQ/ e!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rules$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAj~Q3 e!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o }Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qd|Q' e!SrMQpDMFREKRMELwbL:localhost:8800m.room.create$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw8{Q']ee!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA8zQ']ee!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c8yQ']ee!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE xQ']ez!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cwQ? eey!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8 vQ']ex!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEpuQ? ew!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8htQ/ ev!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rules$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagjsQ3 eu!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ rQ']et!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0dqQ' es!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt08pQ']eer!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA8oQ']eeq!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY8nQ']eep!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0 mQ']eo!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYlQ? een!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM kQ']em!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0pjQ? el!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMhiQ/ ek!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rules$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgjhQ3 ej!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levels$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI gQ']ei!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwdfQ' eh!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g8eQ']eeg!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ g * T~=ggv]!c@anon-20191002_181700-365:localhost:8800GEIVTPEZWOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_gogu]!c~@anon-20191002_181700-366:localhost:8800FABJQITKMRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5Aogt]!c}@anon-20191002_181700-363:localhost:8800OFUEGGAJXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwogs]!c|@anon-20191002_181700-364:localhost:8800PEYTIDQOTBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAogr]!c{@anon-20191002_181700-360:localhost:8800XKNFVZJCREMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAogq]!cz@anon-20191002_181700-361:localhost:8800XCHGELQORJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQogp]!cy@anon-20191002_181700-362:localhost:8800DYTMFWLSURMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1wogo]!cx@anon-20191002_181700-359:localhost:8800NYAYBPPYBRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAogn]!cw@anon-20191002_181700-357:localhost:8800TFBXZDXERTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAogm]!cv@anon-20191002_181700-358:localhost:8800YPZTVFTILNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQogl]!cu@anon-20191002_181700-356:localhost:8800ECXXWUQUFNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5Qo  4 h 9mfd]c@anon-20191002_181700-382:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9go127.0.0.1zd]c@anon-20191002_181700-383:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQo127.0.0.1{d]c@anon-20191002_181700-375:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAo127.0.0.1sd]c@anon-20191002_181700-381:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6Bjdgo127.0.0.1yd]c@anon-20191002_181700-380:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgo127.0.0.1xa[a@anon-20191002_181700-37:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICg127.0.0.1d]c@anon-20191002_181700-379:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwo127.0.0.1wd]c@anon-20191002_181700-378:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgo127.0.0.1vd]c@anon-20191002_181700-377:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggo127.0.0.1ud]c@anon-20191002_181700-376:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgo127.0.0.1t   *t`eQau$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1899}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI"], "type": "m.room.join_rules", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042147568, "hashes": {"sha256": "ADXhul/NFd12rjVkv4a1q379QxUWkvpIO5ksasu/XNU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ilYdmWmjKhlQW3qUPM62d+Odkq9MZ9wTUW4hLriROt2rpQAYqZkCsLSY5pCbCab3wRpmUb0yhJB3RFj0ZyCVDQ"}}, "unsigned": {"age_ts": 1570042147568}}k_eQac$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1898}{"auth_events": ["$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "type": "m.room.power_levels", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"users": {"@anon-20191002_181700-354:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042146878, "hashes": {"sha256": "bEsH0wryhyvpJC8ojUbS33i7+vEFJjTS+ms6yCebT/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XwUQTxRa8WjFj+RKSlWv1DFDQQKy/HG8LB3g+7YC929mJYS4R8VfZf61wNrYuUhtVZJcpRfUUhyREXn7OKV+Dg"}}, "unsigned": {"age_ts": 1570042146878}}v^eQay$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1897}{"auth_events": ["$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g"], "prev_events": ["$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-354", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-354:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042146300, "hashes": {"sha256": "5wF8sb8+y1D57FLcwW9jNmIDrRjPSCFMV+ml3IqmhVc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r8b/6am4y4aVLD2JrqkGJBpr9angfvcWIePYqPBsztM4raypJNTCNbjk7oYbbKVWfQl/B8yX5HkjLBPBhOAcBw"}}, "unsigned": {"age_ts": 1570042146300}}i]eQa_$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1896}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-354:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042145618, "hashes": {"sha256": "6xp5QgOLEj/q9JmGLU2c1nVae0phLPjxrgU2yJGJY3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o3NRQefaDjjkwZg0LhCcqSDhEVBldnHX8s8DPyxm/s7YHMPz4SO80qHsQH/bX2G4r+sPKR++AUw8Z/JVeUIWBg"}}, "unsigned": {"age_ts": 1570042145618}} q) ( { ! r }54 FQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU EQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk DQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYoCQ? e!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU BQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94oAQ? e!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQg@Q/ e!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rules$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAi?Q3 e!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o >Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qc=Q' e!SrMQpDMFREKRMELwbL:localhost:8800m.room.create$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw <Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM ;Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg :Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA 9Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__co8Q? e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg 7Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEo6Q? e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8g5Q/ e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rules$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagi4Q3 e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ 3Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0c2Q' e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0 1Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo 0Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g /Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA .Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYo-Q? e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ ,Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0o+Q? e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMg*Q/ e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rules$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgi)Q3 e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levels$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI (Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw 0z~Gj-e")Vy G H + h 1TYBez X  ""6Q' !cRbfhxZdPstEsPGPAu:localhost:8800m.room.create "<Q3 !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels X6Q' !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create V<Q3 !bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels^Q']!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800:Q/ !bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rulesBQ? !bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibility6Q' !bkwyieHZwSMJfuSKvV:localhost:8800m.room.create<Q3 !bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levels ^Q']!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800 ^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800M^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800F:Q/ !bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rulesHBQ? !bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibilityI6Q' !bzPCFeFSMbCESvNbxl:localhost:8800m.room.createE<Q3 !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels^Q']!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829^Q']!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800^Q']!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800:Q/ !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rulesBQ? !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibility6Q' !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create?Q9 !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_aliasEQ))!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800 :7<Q3 !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels^Q']!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800^Q']!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800^Q']!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800:Q/ !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rulesBQ? !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibility6Q' !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create?Q9 !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_aliasEQ))!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800<Q3 !cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels`^Q']!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800d^Q']!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800c^Q']!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800_:Q/ !cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rulesaBQ? !cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibilityb6Q' !cGkVFpidyBBxUxsszG:localhost:8800m.room.create^<Q3 !bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levelsG  ^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800N^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800L SBQ? !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility ^Q']!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800 [BQ? !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibility Z:Q/ !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rules Y^Q']!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800 W_  wGceQa$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1902}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0"], "type": "m.room.history_visibility", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042150945, "hashes": {"sha256": "ZeyA1kkgPZWk7IkL0cfZvd3rHI4FP3JKD1EWrbyMjgk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V5jttSGNCPgCzbg/m1QMIWJKMhIL1iH+AEx1e0IHoNiU60JVwjjtVdUtt0XueeNumLV9NS1EjnzKEfVDR6fhBw"}}, "unsigned": {"age_ts": 1570042150945, "replaces_state": "$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM"}}VbeQa9$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 371, "stream_ordering": 1901}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "prev_events": ["$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-355:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-355", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-355:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042149884, "hashes": {"sha256": "lk9kaQPvWxHYSKZiO8M4+SKEG3ztidIbQamtltgv9u8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MKExIKmh4g4y+hAXyGM5oxPHEA7Mb19UStTcX0PzeeanaiEeU3h7yGMtNa5P5Y/XM03CEvIREpzor8+R73ZLDA"}}, "unsigned": {"age_ts": 1570042149884}}aeQa$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1900}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "type": "m.room.history_visibility", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042148243, "hashes": {"sha256": "FlZMl0gfIjKXk/ufM3hSGm3ciFZ3s5OQbPolehpKQMY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dqU2dBcCpCh3TNWIYTqWkzr5c9/csd9CwNNQI6/LxM9ld2WXM2KADyeQtcypUZndFufGSZORM8QhmZ/Wg3njAw"}}, "unsigned": {"age_ts": 1570042148243}} _P X  l & |$,=N_!e)Q ]$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mEmE@anon-20191002_181700-357:localhost:8800!e)Q ]$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mCmD@anon-20191002_181700-357:localhost:8800!e)Q ]$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mBmB$@anon-20191002_181700-357:localhost:8800!e)Q ]$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800m@m@@anon-20191002_181700-357:localhost:8800!e)Q ] $XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800 m>Em>L@anon-20191002_181700-357:localhost:8800!~e)Q ] $IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800 mm2@anon-20191002_181700-357:localhost:8800,ye?Q ]$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygm.room.history_visibility!bNSXSTadOMhIrYpMzH:localhost:8800m.;m/@anon-20191002_181700-357:localhost:8800 xe'Q ]$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800m+m,@anon-20191002_181700-358:localhost:8800,we?Q ]$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8m.room.history_visibility!bNSXSTadOMhIrYpMzH:localhost:8800m"m(@anon-20191002_181700-357:localhost:8800$ve/Q ]$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagm.room.join_rules!bNSXSTadOMhIrYpMzH:localhost:8800m Km! @anon-20191002_181700-357:localhost:8800&ue3Q ]$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQm.room.power_levels!bNSXSTadOMhIrYpMzH:localhost:8800mvm@anon-20191002_181700-357:localhost:8800 te'Q ]$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0m.room.member!bNSXSTadOMhIrYpMzH:localhost:8800m'm@anon-20191002_181700-357:localhost:8800s e'Q  ]$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0m.room.create!bNSXSTadOMhIrYpMzH:localhost:8800mm@anon-20191002_181700-357:localhost:8800 re'Q ] $xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjom.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800 m xm @anon-20191002_181700-355:localhost:8800 qe'Q ] $qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800 m 7m @anon-20191002_181700-356:localhost:8800 pe'Q ] $y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800 m}m@anon-20191002_181700-355:localhost:8800 oe'Q ]$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800mm@anon-20191002_181700-354:localhost:8800,ne?Q ]$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQm.room.history_visibility!TlJCaYlCkOOVzFDlLx:localhost:8800m!m@anon-20191002_181700-354:localhost:8800 me'Q ]$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0m.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800mm@anon-20191002_181700-355:localhost:8800,le?Q ]$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMm.room.history_visibility!TlJCaYlCkOOVzFDlLx:localhost:8800mm^@anon-20191002_181700-354:localhost:8800 9p 2 k +dFAxC0 e]]Q=$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM@anon-20191002_181700-365:localhost:8800@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800joinanon-20191002_181700-365E/ e]]Q=$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks@anon-20191002_181700-364:localhost:8800@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800inviteanon-20191002_181700-364C. e]]Q=$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE@anon-20191002_181700-363:localhost:8800@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800joinanon-20191002_181700-363C- e]]Q=$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-361C, e]]Q=$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU@anon-20191002_181700-362:localhost:8800@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-362,+ e]]Q$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800leaveE* e]]Q=$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY@anon-20191002_181700-362:localhost:8800@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800inviteanon-20191002_181700-362C) e]]Q=$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-361C( e]]Q=$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q@anon-20191002_181700-360:localhost:8800@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-360C' e]]Q=$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-358C& e]]Q=$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg@anon-20191002_181700-359:localhost:8800@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-359,% e]]Q$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800leaveE$ e]]Q=$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c@anon-20191002_181700-359:localhost:8800@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800inviteanon-20191002_181700-359C# e]]Q=$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-358C" e]]Q=$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0@anon-20191002_181700-357:localhost:8800@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-357C! e]]Q=$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-355C e]]Q=$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g@anon-20191002_181700-356:localhost:8800@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-356, e]]Q$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800leaveE e]]Q=$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY@anon-20191002_181700-356:localhost:8800@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800inviteanon-20191002_181700-356C e]]Q=$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-355 8l D `8h]c!E@anon-20191002_181700-363:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwoOFUEGGAJXF127.0.0.1Perl + Net::Async::HTTP/0.44m`g]c!E@anon-20191002_181700-364:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAoPEYTIDQOTB127.0.0.1Perl + Net::Async::HTTP/0.44m`ۃf]c!E@anon-20191002_181700-362:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1woDYTMFWLSUR127.0.0.1Perl + Net::Async::HTTP/0.44mㅃe]c!E@anon-20191002_181700-361:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQoXCHGELQORJ127.0.0.1Perl + Net::Async::HTTP/0.44m^d]c!E@anon-20191002_181700-360:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAoXKNFVZJCRE127.0.0.1Perl + Net::Async::HTTP/0.44mňc]c!E@anon-20191002_181700-359:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAoNYAYBPPYBR127.0.0.1Perl + Net::Async::HTTP/0.44mβ b]c!E@anon-20191002_181700-358:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQoYPZTVFTILN127.0.0.1Perl + Net::Async::HTTP/0.44m)a]c!E@anon-20191002_181700-357:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAoTFBXZDXERT127.0.0.1Perl + Net::Async::HTTP/0.44m]`]c!E@anon-20191002_181700-356:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5QoECXXWUQUFN127.0.0.1Perl + Net::Async::HTTP/0.44m܃_]c!E@anon-20191002_181700-355:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwoLDOCSGURJI127.0.0.1Perl + Net::Async::HTTP/0.44ms l glfeQa?$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 373, "stream_ordering": 1905}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "prev_events": ["$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-356:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-356", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-356:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042153527, "hashes": {"sha256": "302w5oks57M6pmQoIpIVcJ0SriybJxj8PBiLExakz0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whPq6H07/c0RCYM0PcnSSA1xtsjo9hlW64mUVfQFLMKNxpZ4N0ph3k/CAwUUhiDbDXIjeblLyOfDl+oEzXVzAQ"}}, "unsigned": {"age_ts": 1570042153527, "replaces_state": "$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY"}}ZeeQaA$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 371, "stream_ordering": 1904}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0"], "prev_events": ["$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-355:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-355:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042152573, "hashes": {"sha256": "+D49UDbZ937KLtAZTp1LJ4ZNeC2dhHMfvVlDdnijzwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hhsQafdz0gufVEERCl5+Cypy34dxiubTotuzmcZGwNijb3HSTxN5w9lq5S94SUyFHjLWzm/wfGg6sAqMSPZ7DQ"}}, "unsigned": {"age_ts": 1570042152573, "replaces_state": "$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0"}}deQa7$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1903}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-356", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-356:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042151863, "hashes": {"sha256": "t6NaWkH5V36GwpJ2ZzDwEa9Rgf7MsCz+1Z+UjIDNiNA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vNG10ewjdKTupHKXQ0aXU8GCmnAtAKpFwBnVljunGfBn6rp6F3BJ/nUM30A6MbG5quB48TdRqOR+/WKbBYOeAw"}}, "unsigned": {"age_ts": 1570042151863, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-354:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-354:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-354", "avatar_url": null}, "sender": "@anon-20191002_181700-354:localhost:8800"}]}} a} { y w u sqomkigeca~feeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~eeeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~deeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~ceeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~beeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~aeeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~`eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~_eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~^eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~]eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~\eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~[eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~ZeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~YeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~XeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~WeeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~VeeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~UeeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~TeeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~SeeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~ReeQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~QeeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~PeeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~OeeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~NeeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~MeeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~LeeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~KeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800~JeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~IeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~HeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800  | kjeQac$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "stream_ordering": 1909}{"auth_events": ["$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "type": "m.room.power_levels", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"users": {"@anon-20191002_181700-357:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042158454, "hashes": {"sha256": "2NW/qs3OdgmIhs6dQ4+ZfZ/8XMjN6LR/1or1TIV5nfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P2NFOsurqYXXRoO1X1Dn31RYcHlpipgyMZAnmf0JnmzzzBTwngOS5+2QTq3Tw1Wt6aBIaUYRMDk1r7U8adnCAg"}}, "unsigned": {"age_ts": 1570042158454}}vieQay$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "stream_ordering": 1908}{"auth_events": ["$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0"], "prev_events": ["$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-357", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-357:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042157863, "hashes": {"sha256": "hR8xJgZyglgTcDx1cU7cLP0ufPnrWdICnj6BdNcdOCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KRrZT9sVzP+HqXfKNBWlOrvDVb/4IVlMWWjuQMXtD4tZwbuQg8+j8YEbvg+u4oDc/ltAdt9FqSNDyCYxELbIBA"}}, "unsigned": {"age_ts": 1570042157863}}iheQa_$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "stream_ordering": 1907}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-357:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042157232, "hashes": {"sha256": "J0VtSbc+mPGM4gbPGjMoFKvTfLR3G8UxTTIRF5CcE20"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZYjfIbKiO8hRFohKUgux/GpDyFP1TfHWTOZ3HPbByu1RsspRs5CQqEQ5Vl/xG1vwmCkVGcCbPVfmMUd4ICp/BA"}}, "unsigned": {"age_ts": 1570042157232}}geQa?$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 371, "stream_ordering": 1906}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "prev_events": ["$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-355:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-355", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-355:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042154360, "hashes": {"sha256": "f49vuBVbVotMQm42JcZO1/k4YSqlFWva4q1J7Gsv+V8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v2JBxe9V2Ew3pw3YQ9bCOpB8nqt2olf2orJghS+wKxZicCsEiMonJP77s3AA1diqBXs2cZyoOopB9h6X+SHLCw"}}, "unsigned": {"age_ts": 1570042154360, "replaces_state": "$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA"}} TT)}R' Fo { P % y N # w L ! u J  s H qDmBk@i>ge:<*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cHtqiAyCHEAoBIbCmL:localhost:8800LL*Q!cHtqiAyCHEAoBIbCmL:localhost:8800KK*Q!cHtqiAyCHEAoBIbCmL:localhost:8800JJ*Q!cHtqiAyCHEAoBIbCmL:localhost:8800II*Q!cHtqiAyCHEAoBIbCmL:localhost:8800HH*Q!cHtqiAyCHEAoBIbCmL:localhost:8800GG*Q!cHtqiAyCHEAoBIbCmL:localhost:8800FF*Q!cHtqiAyCHEAoBIbCmL:localhost:8800EE*Q!cHtqiAyCHEAoBIbCmL:localhost:8800DD*Q!cHtqiAyCHEAoBIbCmL:localhost:8800CC*Q!cGkVFpidyBBxUxsszG:localhost:8800VV*Q!cGkVFpidyBBxUxsszG:localhost:8800UU*Q!cGkVFpidyBBxUxsszG:localhost:8800TT*Q!cGkVFpidyBBxUxsszG:localhost:8800SS*Q!cGkVFpidyBBxUxsszG:localhost:8800RR*Q!cGkVFpidyBBxUxsszG:localhost:8800QQ*Q!cGkVFpidyBBxUxsszG:localhost:8800PP*Q!cGkVFpidyBBxUxsszG:localhost:8800OO*Q!cGkVFpidyBBxUxsszG:localhost:8800NN*Q!cGkVFpidyBBxUxsszG:localhost:8800MM*Q!bzPCFeFSMbCESvNbxl:localhost:880088*Q!bzPCFeFSMbCESvNbxl:localhost:880077*Q!biBIcqnGelHvLnpkOu:localhost:8800vv*Q!biBIcqnGelHvLnpkOu:localhost:8800uu*Q!biBIcqnGelHvLnpkOu:localhost:8800tt*Q!biBIcqnGelHvLnpkOu:localhost:8800ss*Q!biBIcqnGelHvLnpkOu:localhost:8800rr*Q!biBIcqnGelHvLnpkOu:localhost:8800qq*Q!bzPCFeFSMbCESvNbxl:localhost:880066*Q!bzPCFeFSMbCESvNbxl:localhost:880055*Q!bzPCFeFSMbCESvNbxl:localhost:880044*Q!bzPCFeFSMbCESvNbxl:localhost:880033*Q!bzPCFeFSMbCESvNbxl:localhost:880022*Q!bzPCFeFSMbCESvNbxl:localhost:880011*Q!bzPCFeFSMbCESvNbxl:localhost:880000*Q!bzPCFeFSMbCESvNbxl:localhost:8800//*Q!bzPCFeFSMbCESvNbxl:localhost:8800..*Q!bnTuVBaAJTPbcYZtRl:localhost:880099*Q!bnTuVBaAJTPbcYZtRl:localhost:880088*Q!bnTuVBaAJTPbcYZtRl:localhost:880077*Q!bnTuVBaAJTPbcYZtRl:localhost:880066*Q!bnTuVBaAJTPbcYZtRl:localhost:880055*Q!bnTuVBaAJTPbcYZtRl:localhost:880044*Q!bnTuVBaAJTPbcYZtRl:localhost:880033*Q!bnTuVBaAJTPbcYZtRl:localhost:880022*Q!bnTuVBaAJTPbcYZtRl:localhost:880011*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! !*Q!bjdLCdBwkKaihRIRFG:localhost:8800 *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!beBXQofoOfxNBtzsut:localhost:8800]]*Q!beBXQofoOfxNBtzsut:localhost:8800[[*Q!beBXQofoOfxNBtzsut:localhost:8800YY*Q!beBXQofoOfxNBtzsut:localhost:8800WW*Q!beBXQofoOfxNBtzsut:localhost:8800UU*Q!beBXQofoOfxNBtzsut:localhost:8800SS*Q!beBXQofoOfxNBtzsut:localhost:8800PP*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,`m^ m z ) 6 E R  _ n{*7DQz)P]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800[P]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:88007P]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:88006P]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:88005P]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:88003N[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800P]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800ZP]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800YP]Q@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800XP]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800WP]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800VP]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800UP]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800TP]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800SP]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800RP]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800QP]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800PP]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800OP]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800NP]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800MP]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800LN[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800P]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800KP]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800JP]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800IP]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800HP]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800GP]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800FP]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800EP]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800DP]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800CN[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800P]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800BP]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800AP]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800@P]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800?P]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800>P]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800=P]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800 9 4/*|%w rmhc TMQe!bNSXSTadOMhIrYpMzH:localhost:8800$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8TLQe!bNSXSTadOMhIrYpMzH:localhost:8800$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnkTKQe!bNSXSTadOMhIrYpMzH:localhost:8800$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXroTJQe!bNSXSTadOMhIrYpMzH:localhost:8800$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1QTIQe!bNSXSTadOMhIrYpMzH:localhost:8800$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgTHQe!bNSXSTadOMhIrYpMzH:localhost:8800$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDATGQe!bNSXSTadOMhIrYpMzH:localhost:8800$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RMTFQe!bNSXSTadOMhIrYpMzH:localhost:8800$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFsTEQe!bNSXSTadOMhIrYpMzH:localhost:8800$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxgTDQe!bNSXSTadOMhIrYpMzH:localhost:8800$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317oTCQe!bNSXSTadOMhIrYpMzH:localhost:8800$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0TBQe!bNSXSTadOMhIrYpMzH:localhost:8800$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTATAQe!bNSXSTadOMhIrYpMzH:localhost:8800$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwgT@Qe!bNSXSTadOMhIrYpMzH:localhost:8800$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRMT?Qe!bNSXSTadOMhIrYpMzH:localhost:8800$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuYT>Qe!bNSXSTadOMhIrYpMzH:localhost:8800$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gT=Qe!bNSXSTadOMhIrYpMzH:localhost:8800$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMT<Qe!bNSXSTadOMhIrYpMzH:localhost:8800$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwT;Qe!bNSXSTadOMhIrYpMzH:localhost:8800$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8T:Qe!bNSXSTadOMhIrYpMzH:localhost:8800$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUT9Qe!bNSXSTadOMhIrYpMzH:localhost:8800$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwT8Qe!bNSXSTadOMhIrYpMzH:localhost:8800$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0T7Qe!bNSXSTadOMhIrYpMzH:localhost:8800$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4skT6Qe!bNSXSTadOMhIrYpMzH:localhost:8800$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgT5Qe!bNSXSTadOMhIrYpMzH:localhost:8800$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNsT4Qe!bNSXSTadOMhIrYpMzH:localhost:8800$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_IT3Qe!bNSXSTadOMhIrYpMzH:localhost:8800$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPoT2Qe!bNSXSTadOMhIrYpMzH:localhost:8800$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-AT1Qe!bNSXSTadOMhIrYpMzH:localhost:8800$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMT0Qe!bNSXSTadOMhIrYpMzH:localhost:8800$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5ET/Qe!bNSXSTadOMhIrYpMzH:localhost:8800$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-oT.Qe!bNSXSTadOMhIrYpMzH:localhost:8800$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oT-Qe!bNSXSTadOMhIrYpMzH:localhost:8800$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAT,Qe!bNSXSTadOMhIrYpMzH:localhost:8800$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8T+Qe!bNSXSTadOMhIrYpMzH:localhost:8800$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84T*Qe!bNSXSTadOMhIrYpMzH:localhost:8800$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIT)Qe!bNSXSTadOMhIrYpMzH:localhost:8800$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIT(Qe~!bNSXSTadOMhIrYpMzH:localhost:8800$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQT'Qe}!bNSXSTadOMhIrYpMzH:localhost:8800$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUT&Qe|!bNSXSTadOMhIrYpMzH:localhost:8800$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0BwcT%Qe{!bNSXSTadOMhIrYpMzH:localhost:8800$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAT$Qez!bNSXSTadOMhIrYpMzH:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cT#Qey!bNSXSTadOMhIrYpMzH:localhost:8800$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8YgT"Qex!bNSXSTadOMhIrYpMzH:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumET!Qew!bNSXSTadOMhIrYpMzH:localhost:8800$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8 K*rFvJd6 R $ l >  Z , t F  ` 2 zLf8 R$l>X`2zL -]@anon-20191002_181700-447:localhost:8800X-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-373:localhost:8800+[@anon-20191002_181700-36:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-446:localhost:8800W-]@anon-20191002_181700-445:localhost:8800V-]@anon-20191002_181700-444:localhost:8800U-]@anon-20191002_181700-442:localhost:8800S-]@anon-20191002_181700-441:localhost:8800R-]@anon-20191002_181700-440:localhost:8800Q-]@anon-20191002_181700-439:localhost:8800P-]@anon-20191002_181700-438:localhost:8800O-]@anon-20191002_181700-437:localhost:8800N-]@anon-20191002_181700-436:localhost:8800M-]@anon-20191002_181700-435:localhost:8800L-]@anon-20191002_181700-434:localhost:8800K-]@anon-20191002_181700-433:localhost:8800J-]@anon-20191002_181700-432:localhost:8800I-]@anon-20191002_181700-431:localhost:8800H-]@anon-20191002_181700-430:localhost:8800G-]@anon-20191002_181700-429:localhost:8800F-]@anon-20191002_181700-428:localhost:8800E-]@anon-20191002_181700-427:localhost:8800D-]@anon-20191002_181700-426:localhost:8800C-]@anon-20191002_181700-425:localhost:8800B-]@anon-20191002_181700-424:localhost:8800A-]@anon-20191002_181700-422:localhost:8800@-]@anon-20191002_181700-421:localhost:8800?-]@anon-20191002_181700-420:localhost:8800>-]@anon-20191002_181700-419:localhost:8800=-]@anon-20191002_181700-418:localhost:8800<-]@anon-20191002_181700-417:localhost:8800;-]@anon-20191002_181700-416:localhost:8800:-]@anon-20191002_181700-415:localhost:88009-]@anon-20191002_181700-414:localhost:88008-]@anon-20191002_181700-413:localhost:88007-]@anon-20191002_181700-412:localhost:88006-]@anon-20191002_181700-411:localhost:88005-]@anon-20191002_181700-409:localhost:88004-]@anon-20191002_181700-408:localhost:88003-]@anon-20191002_181700-407:localhost:88002-]@anon-20191002_181700-405:localhost:88001-]@anon-20191002_181700-404:localhost:88000-]@anon-20191002_181700-403:localhost:8800/-]@anon-20191002_181700-401:localhost:8800.-]@anon-20191002_181700-400:localhost:8800-+[@anon-20191002_181700-39:localhost:8800-]@anon-20191002_181700-399:localhost:8800,-]@anon-20191002_181700-398:localhost:8800+-]@anon-20191002_181700-397:localhost:8800*-]@anon-20191002_181700-395:localhost:8800)-]@anon-20191002_181700-394:localhost:8800(-]@anon-20191002_181700-393:localhost:8800'-]@anon-20191002_181700-392:localhost:8800&-]@anon-20191002_181700-391:localhost:8800%-]@anon-20191002_181700-390:localhost:8800$+[@anon-20191002_181700-38:localhost:8800-]@anon-20191002_181700-389:localhost:8800#-]@anon-20191002_181700-388:localhost:8800"-]@anon-20191002_181700-387:localhost:8800!-]@anon-20191002_181700-386:localhost:8800 -]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:8800-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800-]@anon-20191002_181700-376:localhost:8800 W a 5U( t P # o B Hg: Y-yLk> >  ^1}P#zM oD j ] 0  } ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 +Q !uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800  ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ ~,Q!ubmTdQFAhrhZkGULDx:localhost:8800 } }+Q !ubmTdQFAhrhZkGULDx:localhost:8800 | |,Q!uSBqTezaFcMnlowsEf:localhost:8800   ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800+Q !uSBqTezaFcMnlowsEf:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 +Q !vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vAUAIZrCnHTeMGeNuw:localhost:8800gg,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ff,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ee,Q!vAUAIZrCnHTeMGeNuw:localhost:8800dd,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vAUAIZrCnHTeMGeNuw:localhost:8800cc+Q !vAUAIZrCnHTeMGeNuw:localhost:8800bb*Q!uxKymrHZeXRYCZwekU:localhost:8800CC*Q!uxKymrHZeXRYCZwekU:localhost:8800BB*Q!uxKymrHZeXRYCZwekU:localhost:8800AA*Q!uxKymrHZeXRYCZwekU:localhost:8800@@)Q !uxKymrHZeXRYCZwekU:localhost:8800??,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800+Q !utJsNQubeIXvcTKGpx:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800   FvD}K Q>] WQ W1 D  | J    c +%i7 % p ] + v j8> q1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc01e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAk1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkv1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4E1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQod1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQr>d1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y&1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8.1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc /1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 {1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMU1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04$1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM &1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI n1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA X1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUL1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs81e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4L1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 }1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcO1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoB1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr001e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUD1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y[1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYL1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y)8e0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc61e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snsx1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g 3 ~z v r n j fb^ZVRNJF_eeQ$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800^eeQ$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800]eeQ$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800\eeQ$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800[eeQ$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800ZeeQ$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800YeeQ$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800XeeQ$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800WeeQ$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800VeeQ$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800UeeQ$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800TeeQ$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800SeeQ$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800ReeQ$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800QeeQ$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800PeeQ$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800OeeQ$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800NeeQ$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800MeeQ$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800LeeQ$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800KeeQ$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800JeeQ$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA!bNSXSTadOMhIrYpMzH:localhost:8800IeeQ$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800HeeQ$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800GeeQ$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800FeeQ$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800EeeQ$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800DeeQ$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800CeeQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc!bNSXSTadOMhIrYpMzH:localhost:8800BeeQ$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA!bNSXSTadOMhIrYpMzH:localhost:8800  vbueQu$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "250", "stream_ordering": 1920}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 6"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042167311, "hashes": {"sha256": "DGIr7samzzBa/FAfPgQdVOddnygO4Cz5k8RUqr3hruk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LCXKRiPPrs9sihzLljQK+0u9urkXbCjebESuH7kC1UauWvMe120+YWnDSo7Ly5K65y29MqVpfrlpF9BN+k8gBg"}}, "unsigned": {"age_ts": 1570042167311}}teQu$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "249", "stream_ordering": 1919}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042166853, "hashes": {"sha256": "3m/h7VeKLa0Kg76/Mh4tznu11iTkMLZMcl0i/CATNSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g2WooyQxMktGTqFslwbXITTrqBQiwryO4R14twtDc05eipRmvjkEynUh9AWlq73tfNTz9vJ6TO34IVnNgw/eDg"}}, "unsigned": {"age_ts": 1570042166853}}seQu$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "248", "stream_ordering": 1918}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 4", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042166351, "hashes": {"sha256": "R6RPf7k+P8S3WrBmwynQCXZDcYMKoJK7k0q5gg/Zj2Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ffsqzUWSQvQ60G4aO6hyC5mLYqUMqiP16wS3ZGmJjz8ct1YIbS3Vh/TGOMsJ4DE8cbstYvl8uwThHxSpUvVUCQ"}}, "unsigned": {"age_ts": 1570042166351}}reQu$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "247", "stream_ordering": 1917}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042165694, "hashes": {"sha256": "oAiWUqgKZglrfx2xa6h8GZ4dSJlr4eb5gZybNPngq+U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q4AK2wij/819PlCQcKw1JwNohwiahJ+U7/c6NAjrhzeVGiC6mWZuYuplGi591UMqVm0aYBHXkMb0MkX8WOCEDA"}}, "unsigned": {"age_ts": 1570042165694}} ~L $  9  \ *  b0h6  n V< qt B L R zH w? N ET" [) k 1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk G1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE20e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgS1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4^1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg`1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM s1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg f1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8%1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck#1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY&1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc]1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gN1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQV1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oj1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8o1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y U1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU11e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE x1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM`1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo81e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi81e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEB1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg E1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY =1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y 81e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ c1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsn1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsm1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo[1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgJ1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogA1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90<1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk y1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqId1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ(1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI ,NC 8 - { " p  e ZOD9.|#qf V eL$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4sha256p9,9EAԎ`7Mzv4VeL$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeEsha256k q<21#TVeL$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgsha256Dç;RPPyn {XVeL$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMsha256ع1W;jѠz`FڈfUVeL$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwsha256`# XH){R.宠*lVeL$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8sha256Үq7WU'Ky &"qewvlVeL$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUsha256пmG}ajKqZe?v_扊iJVeL$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwsha256~sz  .&NosVeL$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0sha256RcP,td6hteVeL$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sksha2568:߶i?UJ|ʋ($VeL$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgsha256!%|9:|1Рjԙe  VeL$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNssha256}h޴@RwDYW-$VeL$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Isha256o*1}!5h8m0gV~eL$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPosha256PyaFos<L/JHV}eL$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-Asha256} hT4$.]rO3_'\͗'V|eL$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMsha2561v-VA[V{Ӓ1-+ V{eL$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5Esha2565i7p01sRs1VzeL$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-osha256l}9sWEJp>cVyeL$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1osha256P/ ?'xxkpsdX_ZVxeL$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAsha256@\3 =+RzI4PVweL$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8sha256U()OwP^U=Xu7lsoVveL$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84sha256hIg:~8!}U/xN9QkVueL$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIsha256 1kj^aLz P % y N # w L ! @c8 e:k}mBT)g<R' { u J  s H qFoD*Q!qzurjQHmiriwjaUMhO:localhost:8800  +*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qzurjQHmiriwjaUMhO:localhost:8800  **Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!rQeYcODvQiLsOIbQrJ:localhost:8800%O*Q!rQeYcODvQiLsOIbQrJ:localhost:8800$N*Q!rJhSRzmWBQHlIhuDXT:localhost:8800DJ*Q!rJhSRzmWBQHlIhuDXT:localhost:8800CI*Q!qjijQBfMwsCPTVgKPm:localhost:8800 S *Q!qjijQBfMwsCPTVgKPm:localhost:8800 R *Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qzrZzAieCgGSbpKOQR:localhost:8800  2*Q!qzrZzAieCgGSbpKOQR:localhost:8800  1*Q!qzrZzAieCgGSbpKOQR:localhost:8800  0*Q!qzrZzAieCgGSbpKOQR:localhost:8800  /*Q!qzrZzAieCgGSbpKOQR:localhost:8800  .*Q!qzurjQHmiriwjaUMhO:localhost:8800  -*Q!qzurjQHmiriwjaUMhO:localhost:8800  ,*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800v*Q!qtelAHlSkrqEFmlCqS:localhost:8800u*Q!qtelAHlSkrqEFmlCqS:localhost:8800t*Q!qtelAHlSkrqEFmlCqS:localhost:8800s*Q!qtelAHlSkrqEFmlCqS:localhost:8800r*Q!qtelAHlSkrqEFmlCqS:localhost:8800q*Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z *Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y *Q!qjijQBfMwsCPTVgKPm:localhost:8800 X *Q!qjijQBfMwsCPTVgKPm:localhost:8800 W *Q!qjijQBfMwsCPTVgKPm:localhost:8800 V *Q!qjijQBfMwsCPTVgKPm:localhost:8800 U *Q!qjijQBfMwsCPTVgKPm:localhost:8800 T *Q!rWGwSSefrZzQYCYFHs:localhost:8800 -*Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,*Q!rWGwSSefrZzQYCYFHs:localhost:8800 +*Q!rWGwSSefrZzQYCYFHs:localhost:8800 **Q!rQeYcODvQiLsOIbQrJ:localhost:8800/Y*Q!rQeYcODvQiLsOIbQrJ:localhost:8800.X*Q!qzurjQHmiriwjaUMhO:localhost:8800  )*Q!qzurjQHmiriwjaUMhO:localhost:8800  (*Q!rJhSRzmWBQHlIhuDXT:localhost:8800BH*Q!rJhSRzmWBQHlIhuDXT:localhost:8800AG*Q!rJhSRzmWBQHlIhuDXT:localhost:8800@F*Q!rJhSRzmWBQHlIhuDXT:localhost:8800?E*Q!rQeYcODvQiLsOIbQrJ:localhost:8800+U*Q!rQeYcODvQiLsOIbQrJ:localhost:8800)S*Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q  vbyeQw$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "254", "stream_ordering": 1924}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 10", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042169594, "hashes": {"sha256": "+uhOwp1sTjf8U69yhc+g90V3WW3TgE2/kJiUYlChHfw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h/4RgvUsKiYL+WTHj8gfUTAgM2yNRGF2aPvPSs8LqRUZPYcUjCZAS5BQUI4bGog4Vs9HoDaZduWtI6MV4LsxBg"}}, "unsigned": {"age_ts": 1570042169594}}xeQu$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "253", "stream_ordering": 1923}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 9"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042168818, "hashes": {"sha256": "Tqu27HjVQf/VigKka+PaI2zPIK/PwQDNN6WK9hAaRwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BTRuc+YyTgeFIvYRNnJ0FGmureongqGB+OebVuv0sKUmQz9l5J1X8RRKr0VdqR2Cb4UHzZqxHjg5Z5NWtNt7DA"}}, "unsigned": {"age_ts": 1570042168818}}weQu$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "252", "stream_ordering": 1922}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 8", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042168310, "hashes": {"sha256": "vx5IfTP3JvXfLYBliuMmBB/8jmsn+zTB2MeyYP0Q/Q8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "urgu/j/VIYcpkTht9uR5DeVN3NHF5FEPKlX4rXwygr0LWzH8Sb7PD4aL3MrJB81BbY9B/LQs9O0OMaokXXWeBg"}}, "unsigned": {"age_ts": 1570042168310}}veQu$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "251", "stream_ordering": 1921}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 7"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042167835, "hashes": {"sha256": "0if32U1m5+S5/SWkfnnufemP19z3d9jfegd+XzQwfT8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i+LHXC8qowM1sgu6tE5hy7y+7SqDsTuJb188U2zOj/PKteJ06aUO+5mnyxSUEdKj8PuaYZrtT7KjyrxShUrTDQ"}}, "unsigned": {"age_ts": 1570042167835}} [ l " } 3 DU fw-!e)Q ])$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800)mΉmΉ@anon-20191002_181700-357:localhost:8800!e)Q ]($jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317om.room.message!bNSXSTadOMhIrYpMzH:localhost:8800(m·m·@anon-20191002_181700-357:localhost:8800!e)Q ]'$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800'm΅"m΅-@anon-20191002_181700-357:localhost:8800!e)Q ]&$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTAm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800&m΃m΃@anon-20191002_181700-357:localhost:8800!e)Q ]%$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800%m΀m΀@anon-20191002_181700-357:localhost:8800!e)Q ]$$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800$m{m{@anon-20191002_181700-357:localhost:8800!e)Q ]#$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuYm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800#mumu@anon-20191002_181700-357:localhost:8800!e)Q ]"$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800"mpmp@anon-20191002_181700-357:localhost:8800!e)Q ]!$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800!mm4mm;@anon-20191002_181700-357:localhost:8800!e)Q ] $pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800 mhmh@anon-20191002_181700-357:localhost:8800!e)Q ]$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800meme@anon-20191002_181700-357:localhost:8800!e)Q ]$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800maTma`@anon-20191002_181700-357:localhost:8800!e)Q ]$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800m^Cm^N@anon-20191002_181700-357:localhost:8800!e)Q ]$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800m\m\@anon-20191002_181700-357:localhost:8800! e)Q ]$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4skm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mZmZ@anon-20191002_181700-357:localhost:8800! e)Q ]$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mYRmY\@anon-20191002_181700-357:localhost:8800! e)Q ]$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNsm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mVmW^@anon-20191002_181700-357:localhost:8800! e)Q ]$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Im.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mTmT@anon-20191002_181700-357:localhost:8800! e)Q ]$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPom.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mRmR@anon-20191002_181700-357:localhost:8800!e)Q ]$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-Am.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mQ-mQ7@anon-20191002_181700-357:localhost:8800!e)Q ]$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mOZmOa@anon-20191002_181700-357:localhost:8800!e)Q ]$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5Em.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mMmM@anon-20191002_181700-357:localhost:8800!e)Q ]$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-om.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mKImKP@anon-20191002_181700-357:localhost:8800!e)Q ]$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1om.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mHmI@anon-20191002_181700-357:localhost:8800  u_}eQw$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "258", "stream_ordering": 1928}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 14"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042171693, "hashes": {"sha256": "/Q1LvJwWkjVlFw3B6msdav+PKUKGtJN/hbGv1UrYkbA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PGW1vzW1eC6Nwc7lAzNuGqJbOKFPOqJNe/ucnVxzUexmkOJt3bbx5sbTugkG2yuLPJASqFRfT6Ld/xseCSSpDQ"}}, "unsigned": {"age_ts": 1570042171693}}|eQw$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "257", "stream_ordering": 1927}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 13"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042171226, "hashes": {"sha256": "m4BDzjhNzolkEupvxwFWZSjpLCyEqw4emf3itVYjCVw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HcmUfIYT8j94JFSkP9iqMoFUiPsstqkYM13VUuw0jYWnfTXVAf5BXmmAB5hcwp9yRgG5JbvrFib2Si6PyY6uBw"}}, "unsigned": {"age_ts": 1570042171226}}{eQw$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "256", "stream_ordering": 1926}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 12"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042170759, "hashes": {"sha256": "CEDJCVOJv9il0PqdCPWpEjDT5UYFXBVG2IUvDMTBbqE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nzK/nRHCaS8hTknkZWPa2z17Xzfpb0YjR0602BxBWU6cL5yLUgrvcfuexivB+yffUIwlBnxlOtdHnJNZJFXNDQ"}}, "unsigned": {"age_ts": 1570042170759}}zeQw$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "255", "stream_ordering": 1925}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 11", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042170185, "hashes": {"sha256": "OZ5q/cQhfNWTPbZc6U4tRXU31f3YcJVtnOUUJg2nnSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QLKh7FJ9DcADWqXNhxedjN8HGW7B5IhgNYUkdxRvyKiqU++WJdGcdpygEZsfxIuiLzoQ2AcH0pn4jZe6Gtd8CA"}}, "unsigned": {"age_ts": 1570042170185}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ JIHGFEDCBA@?>=<;:98 7 6 5 4 3210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^^]]\\[[ZZP}O|N{MzLyKxJwIvHuGtFsErDqCpBoAn@m?l>k=j<i;h:g9f8e7d6c5b4a3`3_3^2]2\2[0Z/Y.X-W,V+U*T)S(R'Q&P%O$N#M"L!KY~Y}X|X{WzVyUxTwSvRuQtPsOrNqMpLoKnJmIlHkGjFiEhDgCfBeAd@c?b>a=`<_;^:]9\8[7Z6Y6X6W5V5U5T4S4R4Q3P3O3N2M2L1K1J1I0H0G0F.E-D,C+B*A)@(?'>&=%<$;:9876543210/.-,+*)('&%$#"!       Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,17e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys16e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI15e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c14e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU13e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo12e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg11e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY10e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1/e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481.e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81-e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1,e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1+e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q1*e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI1)e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1(e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1'e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1&e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1%e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1$e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1#e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1"e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1!e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1 e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1 e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1 e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1 e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1 e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141 e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01~e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1}e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1|e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1{e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1ze$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1ye$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1xe$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1we$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81ve$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1ue$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1te$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01se$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1re$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1qe$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1pe$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1oe$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1ne$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1me$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM E S o7T 8 p7T p7Sp7S U U qq8 U  r 9 8e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0sha256 8e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQsha256c8e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgsha25678e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYsha256 8e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Ossha256 8e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSksha256G8e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UUsha256:8e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQsha2568e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNssha2568e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIsha2568e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkAsha256@7e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirwsha25678e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIsha2568e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYsha256V8e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQsha2568e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcsha2568e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEsha25628e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIsha256u8e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQsha2568e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53Asha2568e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Asha2568e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgsha2568e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwsha2568e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQsha256^7e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0sha256=8e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYsha2568e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcsha2568e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8sha2568e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Qsha256 ]8e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwsha2567e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntUsha2568e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMaksha2568e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Qsha2568e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Iksha2567e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4sha256e8e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcssha256]8e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwsha2568e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0sha256c8e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qksha2568e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNosha256u8e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9ssha2568e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwsha256f8e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0sha256v8e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUsha25678e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmREsha256 8e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMsha256 8e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98sha256 8e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5Nosha256 8e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwsha256 8e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMksha256 8e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0sha256 v8e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawsha256 8e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9ssha256U8e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIsha256 (8e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAsha256\7e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKwsha25618e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMsha256+8e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygsha256u7e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0sha25628e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMsha256<8e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gsha2568e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5Esha256{8e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgsha256~8e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwgsha2568e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74sha256 8e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQsha2568e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUsha256"8e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxssha256z8e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewsha256 d V> r9 S 5  U  q 8 p  7 TQm4no6So6 RP9P9ns8e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Usha256 8e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEsha256 8e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNksha256|8e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0sha256=8e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcsha2568e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwEsha2568e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMsha2568e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcsha2568e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ysha256\8e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8sha2568e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0sha256O8e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5aksha2568e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797Sosha256 8e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmosha256~8e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcsha256 v8e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUsha2568e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4sha256 8e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIsha2568e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgsha2568e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4sha2568e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEsha2568e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAsha256 8e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUgsha256%8e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIsha2568e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUsha2568e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAsha256 Z8e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawsha256 k8e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Usha256 7e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZIsha2568e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAsha256K8e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiosha256!8e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9ssha256%8e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghwsha256 D8e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMsha256 8e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokgsha256 x8e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgsha256 =8e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYsha256 8e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Isha2568e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUssha256 %8e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pkssha256 08e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwsha256 8e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwsha256 8e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYsha2568e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLksha2568e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCMsha256\8e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1ksha2568e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEsha256#8e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQsha2568e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIsha2568e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQsha256Z8e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIsha256e8e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwsha2568e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIsha256@8e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwsha2568e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIsha256 8e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veksha256e8e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUssha256q8e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQsha2568e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIssha2568e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0sha2568e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRsssha2568e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbksha256  u_eQw$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "262", "stream_ordering": 1932}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 18"}, "depth": 26, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042173778, "hashes": {"sha256": "Xy1Xas2kDmu20f+fmnHCfPDSVbB0o4X3d8kwV9HYmws"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AQTxvMiKqHx5W34q2mnwvEsrwer7gfCv/Qrr8ZmIGZZS55wDSzYIHCu97EemA2C82R7qbHe4+nOnBrVmNaGvCg"}}, "unsigned": {"age_ts": 1570042173778}}eQw$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "261", "stream_ordering": 1931}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 17"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042173152, "hashes": {"sha256": "HbPCNpY5dFcUdHNpjQ+aVswvz6FYoQQjAcDYnkbHjUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6QhCN9SHETcNcFmFAs9mv90T0TA+Mlke8Tfvl0yAablVfP4nPTOQK38VJxc9Gk+62IycVWTJllZclRRwhKJyDg"}}, "unsigned": {"age_ts": 1570042173152}}eQw$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "260", "stream_ordering": 1930}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 16"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042172619, "hashes": {"sha256": "WJOHugkckiuhS0S6ekdkp7U5/n1zii1l1+G5vxBzUfQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XNa/tdFyI+HZZy9y4k1+y4tsKRufmitGNfyJBHi5TqQ87bB8XRK8k2Z1adZVUyGcDwy04yUpytJP3vikya9cDg"}}, "unsigned": {"age_ts": 1570042172619}}~eQw$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "259", "stream_ordering": 1929}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 15"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042172117, "hashes": {"sha256": "t2PFrqnNmKMtuSC7KbQIgVXKT+k8VprYqij8x772qeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pNs+hEiafJsprZlMZyAXmldrU/eCpi7prHHfWbK+A19bCHWMj0iDtvFR+ojV/RgAje1/8hiTWaYW6jGTdtKZCA"}}, "unsigned": {"age_ts": 1570042172117}} $$H l " F j DhBf@djyeQ%$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 1kxeQ%!$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 50kweQ%!$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 49kveQ%!$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 48kueQ%!$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 47kteQ%!$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 46kseQ%!$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 45kreQ%!$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 44kqeQ%!$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 43kpeQ%!$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 42koeQ%!$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 41kneQ%!$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 40kmeQ%!$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 39kleQ%!$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 38kkeQ%!$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 37kjeQ%!$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 36kieQ%!$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 35kheQ%!$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 34kgeQ%!$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 33kfeQ%!$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 32keeQ%!$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 31kdeQ%!$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 30kceQ%!$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 29kbeQ%!$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 28kaeQ%!$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 27k`eQ%!$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 26k_eQ%!$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 25k^eQ%!$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 24k]eQ%!$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 23k\eQ%!$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 22k[eQ%!$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 21kZeQ%!$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 20kYeQ%!$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 19kXeQ%!$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 18kWeQ%!$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 17kVeQ%!$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 16  u_eQw$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "266", "stream_ordering": 1936}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 22"}, "depth": 30, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042175828, "hashes": {"sha256": "xCrEfz7FID6tCBPf0WYZbYDZgUKb2OD/UorN8nH7ghQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xfeu2+Xm/Alo9O2CULG1D7K2v5QAkB4tUmquDwNQV39rXwL7JUHCGGOUtch7GHD4tErGJYmOB0i+LTZCzfWuAg"}}, "unsigned": {"age_ts": 1570042175828}}eQw$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "265", "stream_ordering": 1935}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 21"}, "depth": 29, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042175043, "hashes": {"sha256": "mb1wNIHsEyotX0a72/HrEykQfvWz4Xt2VFAlNMMl5DQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e+W1dUJCV7mfsE9yMiyrBPbdL8v47dxyUF1nJLNCM9D75TkzMb7Fz5mNkjhMTl/ihDuudObwydxp+ThtFEElCA"}}, "unsigned": {"age_ts": 1570042175043}}eQw$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "264", "stream_ordering": 1934}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 20"}, "depth": 28, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042174602, "hashes": {"sha256": "8lEnvefABQfmG2bQCR15IHeiOSuUu1SuS2DXFjJlCL0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Gm3zZAJKPUUZXdXTZYLAknhGxwVDUfNoRwDOdpO4zeh8vGYHctEyLEqiSSkiq9Q+/FFP8bqIDn2+HpS+voGAw"}}, "unsigned": {"age_ts": 1570042174602}}eQw$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "263", "stream_ordering": 1933}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 19", "msgtype": "m.text"}, "depth": 27, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042174177, "hashes": {"sha256": "zDkxPoJAl1RCAWIFXV37XzImWoqHUvrwqf9/KRDC4Zw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EgdgtlYBMRLdjLNX350iioKt1JevcN1WBxyW5ghwnc7b0hgoCYJAg6dW2sjDtHJkFb4o/p1+tGXBN9cm/CuSBg"}}, "unsigned": {"age_ts": 1570042174177}} T x P ( ` 8  p H XxP(`8pH `8pH X0hh@0xP(@ localhost:8800 :'Q!kjjUs'Q!kjjUsMowsioSQRIJeg:localhost:8800 :'Q!kjjUsMowsioSQRIJeg:localhost:8800 9'Q!kjjUsMowsioSQRIJeg:localhost:8800 8'Q!kjjUsMowsioSQRIJeg:localhost:8800 7'Q!kjjUsMowsioSQRIJeg:localhost:8800 6'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800 5'Q!kjjUsMowsioSQRIJeg:localhost:8800 4'Q!kjjUsMowsioSQRIJeg:localhost:8800 3'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800 ;'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800~'Q!kOmCTyiizHqfCJdhlR:localhost:8800 R'Q!kOmCTyiizHqfCJdhlR:localhost:8800 Q'Q!kOmCTyiizHqfCJdhlR:localhost:8800 P'Q!kOmCTyiizHqfCJdhlR:localhost:8800 O'Q!kOmCTyiizHqfCJdhlR:localhost:8800 N'Q!kOmCTyiizHqfCJdhlR:localhost:8800 M'Q!kOmCTyiizHqfCJdhlR:localhost:8800 L'Q!kOmCTyiizHqfCJdhlR:localhost:8800 K'Q!kOmCTyiizHqfCJdhlR:localhost:8800 J'Q!kOmCTyiizHqfCJdhlR:localhost:8800 I'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800 T u J  s H g<k@e:c8 qFoD i>T)}R' { P % mB y N # q*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hFwigdYZkwYNSwelRH:localhost:8800 U U*Q!hFwigdYZkwYNSwelRH:localhost:8800 T T*Q!hFwigdYZkwYNSwelRH:localhost:8800 S S*Q!hFwigdYZkwYNSwelRH:localhost:8800 R R*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hFwigdYZkwYNSwelRH:localhost:8800 f f*Q!hFwigdYZkwYNSwelRH:localhost:8800 Z Z*Q!hFwigdYZkwYNSwelRH:localhost:8800 Y Y*Q!hFwigdYZkwYNSwelRH:localhost:8800 X X*Q!hFwigdYZkwYNSwelRH:localhost:8800 W W*Q!hFwigdYZkwYNSwelRH:localhost:8800 V V*Q!hegUPDZCEEmBhsNJJR:localhost:8800  *Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ ~*Q!hegUPDZCEEmBhsNJJR:localhost:8800 } }*Q!hegUPDZCEEmBhsNJJR:localhost:8800 | |*Q!hegUPDZCEEmBhsNJJR:localhost:8800 { {*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800  *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hgjYwwwjWJNgwrzOto:localhost:8800YY*Q!hgjYwwwjWJNgwrzOto:localhost:8800XX*Q!hgjYwwwjWJNgwrzOto:localhost:8800WW*Q!hgjYwwwjWJNgwrzOto:localhost:8800VV*Q!hZuwenlFDapIPBOyfi:localhost:8800zz*Q!hZuwenlFDapIPBOyfi:localhost:8800yy*Q!hZuwenlFDapIPBOyfi:localhost:8800xx*Q!hZuwenlFDapIPBOyfi:localhost:8800ww*Q!hZuwenlFDapIPBOyfi:localhost:8800vv*Q!hZuwenlFDapIPBOyfi:localhost:8800uu*Q!hYPSaMPGsLnvYSmwhg:localhost:880000*Q!hYPSaMPGsLnvYSmwhg:localhost:8800//*Q!hYPSaMPGsLnvYSmwhg:localhost:8800((*Q!hYPSaMPGsLnvYSmwhg:localhost:8800''*Q!hYPSaMPGsLnvYSmwhg:localhost:8800&&*Q!hYPSaMPGsLnvYSmwhg:localhost:8800%%*Q!hYPSaMPGsLnvYSmwhg:localhost:8800$$*Q!hWHyATwKfuznrqTiyu:localhost:8800\\*Q!hWHyATwKfuznrqTiyu:localhost:8800[[*Q!hWHyATwKfuznrqTiyu:localhost:8800ZZ*Q!hWHyATwKfuznrqTiyu:localhost:8800YY*Q!hWHyATwKfuznrqTiyu:localhost:8800XX*Q!hWHyATwKfuznrqTiyu:localhost:8800WW*Q!hSzBsirdPWHtVjagXn:localhost:8800 T m e& L |u E=5- l d eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800VeeQ$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800ɁeeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800ցeeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800ZeeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800KeeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800eeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800ׁeeQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800eeQ$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800فeeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800xeeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800eeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800 5eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800 BeeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800 eeQ$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800́eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800  u_ eQw$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "270", "stream_ordering": 1940}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 26"}, "depth": 34, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042179818, "hashes": {"sha256": "0gPe2LSYVs69+K2d/mOzCx4Ms62mnfT/frRO5YWMySQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C80nJUX+4Co5RzoZVpjqppOUAuLNDXXJZWs8HYNDFu40S2uLP1BL3Z3LaeFCIPbnZLpW/5aORhGcUKv4Evb2AQ"}}, "unsigned": {"age_ts": 1570042179818}}eQw$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "269", "stream_ordering": 1939}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 25"}, "depth": 33, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042178868, "hashes": {"sha256": "nrR5aLH6OxwrGmBXCWX6cL8Ywhvr8rvimmIq7lRoWK8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6k/gbI+JJKCK2XTpAAqFCcgR9mfCQIku3OqojJ3ZySMecCUj3J6GVtPDk7veda5Aq39RPPq0e3ZlgVcZjQuMDw"}}, "unsigned": {"age_ts": 1570042178868}}eQw$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "268", "stream_ordering": 1938}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 24", "msgtype": "m.text"}, "depth": 32, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042177693, "hashes": {"sha256": "XrCSAa7yFnCU/+zKG1SKU6PKQEk/ov4PNxfuTX04EQs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYzj8g5soqhqzXiBvYnPZYFYQM1xOtl4BVmYaZ2rPJUnqE3N/Kncuti6wuEoZ1V7qstug1Qtwya85PT5fy4+Bw"}}, "unsigned": {"age_ts": 1570042177693}}eQw$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "267", "stream_ordering": 1937}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 23"}, "depth": 31, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042176784, "hashes": {"sha256": "J4MTF+ROkVESFpCG1/3mKOmyXzHvA/0lqD0Je1k9U9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p10zwazb7CiZKieOvcUtwVsY0bI4w8dZ+YE1AQl6MeM7dfAvpxunQd+qy0xOCb3QtEgVVOC8Cf3RUTXpILs1Cg"}}, "unsigned": {"age_ts": 1570042176784}}  u_ eQw$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "274", "stream_ordering": 1944}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 30", "msgtype": "m.text"}, "depth": 38, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042184463, "hashes": {"sha256": "CjGSCYmdP8IsaWoNcaZPVYsaLemU/YHCCJpDTzUlspE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CnMbhAp5C96kj0vr+UTGUu5McFWSeTEWQ0y1AShxVU4VUoK3YVdaWxSrMcy4KcTyWhqzaWzUDJXL2UBAijDWBA"}}, "unsigned": {"age_ts": 1570042184463}} eQw$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "273", "stream_ordering": 1943}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 29"}, "depth": 37, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042183868, "hashes": {"sha256": "9bt6jq2wLsJYAeOQf6XyzgfBsVoE+GivzI7l/BozOtI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m1ZUP3gN2TixUkNPqYJcCECLUREw+WGrI7hHfgnxJU8aylXXkaPxYlwrZFr0iNgvehGpSe8TMzaH4fSQa4laAQ"}}, "unsigned": {"age_ts": 1570042183868}} eQw$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "272", "stream_ordering": 1942}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 28", "msgtype": "m.text"}, "depth": 36, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042182610, "hashes": {"sha256": "oFKTPjUABjMZYwLlsrlt2agRBY0KS6VeOUhSZiOEAv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7lq+yqlMqekME6DH9zNHO7i7Kdg4o9fD4tLXB0jqFWU6hIRyJjAxSAoZ8GixVl+aN5S0Jx8/GHvhPooYjVYCDA"}}, "unsigned": {"age_ts": 1570042182610}} eQw$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "271", "stream_ordering": 1941}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 27"}, "depth": 35, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042181027, "hashes": {"sha256": "1mZ/3UpRrx54WNwUCAQTJ0hMDVzADIOuPv4IAr5UmdI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VAl3B7TIJD/sy5BGOmsjT+ORH48o6BNFPsSiXzNOCQ5lVd4giN/V3ttGXETnpxNGCFFKYCusetG10UuOs9ltCw"}}, "unsigned": {"age_ts": 1570042181027}}  u_PeQw$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "328", "stream_ordering": 2011}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 34"}, "depth": 44, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042229497, "hashes": {"sha256": "0/DpNXQoTZfa3T2MVxmlvtp6hb6qgdcqr+5X1XDxN8s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FE6s7dYEgvMq3lOGpYmaF32BIKJt+SU+dMnuJGMRG5GfF6m2AU7xGDxv2zHxZMNO+L+J7NMsRAExhrugzk1uDg"}}, "unsigned": {"age_ts": 1570042229497}}OeQw$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "327", "stream_ordering": 2010}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 33"}, "depth": 43, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042229055, "hashes": {"sha256": "NQPZ+h5GJ/aMlz5LabDgGg611PlI0Jg+XtZt9OnaB5o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T1QGrKtpltJtj+6bN47jbr1KvXyLaRsvtdTnMg+k3WnKK7JBPgzvt5Q2ergskFj0U1uuthV5QDNuT/bnisbrDw"}}, "unsigned": {"age_ts": 1570042229055}}NeQw$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "326", "stream_ordering": 2009}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 32"}, "depth": 42, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042228523, "hashes": {"sha256": "oQ+9MW/aQ8m7Jyt4Ew97ZXXsAD9ZFv/4IaeAssNyrrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iEO63ZD7WCS2D/u3WkMXsPnEnFm7EXlIHfgB+bLbfZmVkzT8nDtCYChzaUjqIkoCDhHmOL10E5ToTEUseyUbDg"}}, "unsigned": {"age_ts": 1570042228523}}MeQw$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "325", "stream_ordering": 2008}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 31"}, "depth": 41, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042228021, "hashes": {"sha256": "m7oM3Bz4GJ19jbgC3TQRfnJ0s91fojxgaasm3402y+U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KG3gl3LA5uuLW7Edz15IrAbKlm1Nnf+QS8tTCORLIv0XZyPuyp9DNTtyTQEABk8YGk9BqVjYc6snusETONU8Bw"}}, "unsigned": {"age_ts": 1570042228021}}  u_eQw$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "278", "stream_ordering": 1948}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 34", "msgtype": "m.text"}, "depth": 42, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042186552, "hashes": {"sha256": "eC1aLdEemGnvjx/fLnSDYfvopuBTAIQOouO9fCSIBq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kk65gXxEmvWS7LMmjunmHETH+0PhE7RAOT3L0OAokXfSL35IEmj7uGiZQxAdv2F0Kz10cei6UxY6nIM/qE/kBw"}}, "unsigned": {"age_ts": 1570042186552}}eQw$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "277", "stream_ordering": 1947}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 33", "msgtype": "m.text"}, "depth": 41, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042186111, "hashes": {"sha256": "NxDyyYEGeDdn94Ygym3Gd9digl5n+Pd/idFGt5fH3ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sMY8xV4vvB3tTVe5fmeKiAkGHwEJvJzxRn5GkjELJoT+Fo1VhU6Hs0WfyZvFXEGJhrcPeu6DV4aSUJLum1F3AA"}}, "unsigned": {"age_ts": 1570042186111}}eQw$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "276", "stream_ordering": 1946}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 32"}, "depth": 40, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042185636, "hashes": {"sha256": "ZVhmKi38KAHRauBMMAhKsR8RWV1iT1JgLL0mz5Qd798"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uZUNOPhvQjvP+hqq1LT+ePTZtUKOpu0FM/aKYncdcZh/MCg07Y5YJTB80KfYbuGf+IPgnzlymSBC8bsadhTwBQ"}}, "unsigned": {"age_ts": 1570042185636}}eQw$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "275", "stream_ordering": 1945}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 31"}, "depth": 39, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042184994, "hashes": {"sha256": "fQCdtERpP2n8a73LOeqVX2DpezEBafMTpprFn3jmJoM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7TktRKXEmo3IVup+xiVdjeK078Uc+kQRCvJQGe4MeAHCKNGZvWogvVWS/MOEMh2hacXNFvbYNMiiGD8qocAWBA"}}, "unsigned": {"age_ts": 1570042184994}} ~z v r n j fb^ZVRNJF}eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800|eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800{eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800zeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800yeeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800xeeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800weeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800veeQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800ueeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800teeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800seeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800reeQ$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800qeeQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800peeQ$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800oeeQ$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800neeQ$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800meeQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800leeQ$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800keeQ$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800jeeQ$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800ieeQ$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800heeQ$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800geeQ$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800feeQ$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800eeeQ$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800deeQ$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800ceeQ$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800beeQ$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800aeeQ$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800`eeQ$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800 [ l " } 3 DU g}/$3e/Q ]$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAm.room.join_rules!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800&2e3Q ]$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9om.room.power_levels!SrMQpDMFREKRMELwbL:localhost:8800m<mr@anon-20191002_181700-360:localhost:8800 1e'Q ]$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qm.room.member!SrMQpDMFREKRMELwbL:localhost:8800msm@anon-20191002_181700-360:localhost:88000 e'Q  ]$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodwm.room.create!SrMQpDMFREKRMELwbL:localhost:8800mmƉ@anon-20191002_181700-360:localhost:8800 /e'Q ]=$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800=mιmκ5@anon-20191002_181700-358:localhost:8800 .e'Q ]<$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800<mδmεJ@anon-20191002_181700-359:localhost:8800 -e'Q ];$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800;mΰmα@anon-20191002_181700-358:localhost:8800!,e)Q ]:$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800:mήmή@anon-20191002_181700-357:localhost:8800!+e)Q ]9$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4m.room.message!bNSXSTadOMhIrYpMzH:localhost:88009mΫmΫ@anon-20191002_181700-357:localhost:8800!*e)Q ]8$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeEm.room.message!bNSXSTadOMhIrYpMzH:localhost:88008mΩmΩ@anon-20191002_181700-357:localhost:8800!)e)Q ]7$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBYm.room.message!bNSXSTadOMhIrYpMzH:localhost:88007mΧmΧ@anon-20191002_181700-357:localhost:8800!(e)Q ]6$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQm.room.message!bNSXSTadOMhIrYpMzH:localhost:88006mΥ4mΥ?@anon-20191002_181700-357:localhost:8800!'e)Q ]5$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuom.room.message!bNSXSTadOMhIrYpMzH:localhost:88005mΣmΣ@anon-20191002_181700-357:localhost:8800!&e)Q ]4$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ecm.room.message!bNSXSTadOMhIrYpMzH:localhost:88004m΢ m΢@anon-20191002_181700-357:localhost:8800!%e)Q ]3$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7wm.room.message!bNSXSTadOMhIrYpMzH:localhost:88003mΠmΠ @anon-20191002_181700-357:localhost:8800!$e)Q ]2$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14m.room.message!bNSXSTadOMhIrYpMzH:localhost:88002mΝmΝ@anon-20191002_181700-357:localhost:8800!#e)Q ]1$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8m.room.message!bNSXSTadOMhIrYpMzH:localhost:88001mΛmΛ#@anon-20191002_181700-357:localhost:8800!"e)Q ]0$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnkm.room.message!bNSXSTadOMhIrYpMzH:localhost:88000mΘmΘ@anon-20191002_181700-357:localhost:8800!!e)Q ]/$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXrom.room.message!bNSXSTadOMhIrYpMzH:localhost:8800/mΖmΖ@anon-20191002_181700-357:localhost:8800! e)Q ].$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Qm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800.mΔmΔ@anon-20191002_181700-357:localhost:8800!e)Q ]-$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800-mΒmΒ)@anon-20191002_181700-357:localhost:8800!e)Q ],$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDAm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800,mΐ]mΐg@anon-20191002_181700-357:localhost:8800!e)Q ]+$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800+m΍5m΍>@anon-20191002_181700-357:localhost:8800!e)Q ]*$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFsm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800*m΋8m΋@@anon-20191002_181700-357:localhost:8800  u_eQw$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "282", "stream_ordering": 1952}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 38"}, "depth": 46, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042188961, "hashes": {"sha256": "Mhx55PXyc4QqJNyPhTVDm3Dp5K8wbqEKXBx/LLDZeO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SlvZj3/HQN1eIS+2evQOdwq7cXIjBXDBgRMOkm/kFW6jjllpGKz0DMhzo5SgzoCkO2oZjLUGVZPwWpfvP2cNAA"}}, "unsigned": {"age_ts": 1570042188961}}eQw$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "281", "stream_ordering": 1951}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 37", "msgtype": "m.text"}, "depth": 45, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042188319, "hashes": {"sha256": "9RcEW7WMSmIWEOfHEXWzyUv7hmSS+LVD8f7/RCz4xV0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m+1bG1warohRwUNPbTigMCnoC2RYXf7R2ERZY8277nKTn0kfNjirCKAx7y4qsXW5a2oHlLNUuhawhojI+gS2BA"}}, "unsigned": {"age_ts": 1570042188319}}eQw$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "280", "stream_ordering": 1950}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 36", "msgtype": "m.text"}, "depth": 44, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042187869, "hashes": {"sha256": "05mv1NujF9x4nHebCgZyZyZLLoQEwzVMIa6WWOojsDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "842Wet5YtnLuefUVmzQ2+NwhjesYlqTrYNrJMWEjBjYO6DpQgqt7RqMcJ4NFYx9n1pdnUbvHCOtE5zmy11opCg"}}, "unsigned": {"age_ts": 1570042187869}}eQw$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "279", "stream_ordering": 1949}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 35", "msgtype": "m.text"}, "depth": 43, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042187061, "hashes": {"sha256": "qGIg9d7AUyloQaFisRbx7hHq8t61CqeWVn2iANlsiRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fg31iubbV4BURRodYof1Iu1QzgeXXTKVrlpuEudGymMkSLP3dgL7f3z7EvMdOLR4vlIQ9PBULFNxl0EjxwtTDQ"}}, "unsigned": {"age_ts": 1570042187061}} IVj8p>  | v D  | J* P  P  W % \  ] ,d2j8p> vD$J1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gA1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU&1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU k1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc f1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg U1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE '1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI<1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Toe1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Aq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA#1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI]1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoX1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc|1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocww1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cN1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY:1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoon1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcl0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I31e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEz1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ r1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8c1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA A1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY *1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU:1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0=1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug > IVj8p>  | v D  | J* P  P  W % \  ] ,d2j8p> vD$J1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g;1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU i1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc f1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg U1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE '1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI<1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Toe1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Aq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA#1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI]1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoX1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc|1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocww1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cN1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY:1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoon1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcl0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I31e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEz1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ r1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8c1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA A1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY *1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU:1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0=1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug >  u_eQw$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "286", "stream_ordering": 1956}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 42"}, "depth": 50, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042191252, "hashes": {"sha256": "NCURc7l8YMJAacjFYVaBTNGUqk0zi54X4s4veUkdXQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zh4l16S+keU6w9i5YpQZ0sMAqyOY5qSqdaRYYZ+C5G3mhGR4Ri+jHRf23H/eJKqvE7XDDQue+VIFCEzD+KNZBw"}}, "unsigned": {"age_ts": 1570042191252}}eQw$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "285", "stream_ordering": 1955}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 41", "msgtype": "m.text"}, "depth": 49, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042190619, "hashes": {"sha256": "LqiWfLAM/utS4GgaCJrRGO2NFMJXCcMRhXYDTJeGEnE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9uhfYSwOuxj3cR3QdUVoKsUI0DQoiXq43hM8U83m8KZ8kxNX9e/7GzOiF2agPK0U4IJxTQhEy6DRGyPNR1PwDw"}}, "unsigned": {"age_ts": 1570042190619}}eQw$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "284", "stream_ordering": 1954}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 40"}, "depth": 48, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042190045, "hashes": {"sha256": "cbb2c5s6FXE011WvIi1M37galwzNegZR8x3A0fjboak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GfIDL6hxNyt5Nw+HL8yg+WpNBLc+k51TkfP1UnEKi8HtBpD4kCWn01Kh4ixCkuJ8RS5RyGKxZQ5w4VNkbSx4Cg"}}, "unsigned": {"age_ts": 1570042190045}}eQw$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "283", "stream_ordering": 1953}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 39"}, "depth": 47, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042189528, "hashes": {"sha256": "cYvY40hBWe2869RjortoCIaH1dQS50udbaUOVJy/ffA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uBr9rP1v43VprJzozazkdob3Nq4nczfLjCrBSz7Fmpr6a7M9guYMaetdzemXp7Vftr+KPliNHCkPbP9nenJXDQ"}}, "unsigned": {"age_ts": 1570042189528}}~ytoje`ZTNHB<60*$ |vpjd^XRLF@:4.("  z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ً7ҋ4Ћ1΋-ȋ*Ƌ'ċ$   }yuqmifb^{ZwVrRmNiJeFbB_>]:\6Y3W1M.-+?'=#: 50,($  | xtplhd`\XTމPډL؉HԉD҉@̉<ʼn840,($  F|x|tupsllhhde`^\\XVTSPMLHIDE?A:>4:06/3./++%($   |xtplhd܇`؇\ևXӇT·PɇLȇH‡D@<840,($  zw}qzivhreoak\gZdR`Q\NYKUFQBM2I)E"A=951-) %! ߅{ۅwׅsՅpͅląhÅd`\YUQMIEA=951~-z*v'r$l!kgfbN_\ S POKB|?y8v2r/o(m#jfc`\YWS PMJGC@<840,($ׄ ΄ɄĄ |xtplhd`q]rYURNJ~GsCk?f;d7`4Y1W-V)R&N"IAD<7. (${wsp l iea^ZWTPMIނF܂DʂAւ=˂:ł62/+'$  ||xwtqpolnhbdh`f\cX`T_P]L[HWDQ@K<D8>4;08,7(0$- ,&  |xtplhd`\XUQMIEA=951-*&" ~} ~ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     4 1 - ) % ! { t q m i f d [ N H} Ay =u 8q *m )i #e a ^ Z W T P L H E A > ; 7 3 / + ' #  ە ו ҕ Е ʕ Ǖ Õ  ~ z v s o Zl h d ` \ Y U Q M tI wE qA o= m: i6 e3 d/ a+ `' ]# X T R M I E A @ = <~ 7z /v )r %n $k "i f c a ^ [ X U R P M J H E B ? < 9 6 4 1 . + ( % ܓ" ړ ד ֓ ԓ Г ϓ Γ Ǔ Ɠ ē Ó   | y w t q n k h e c ` ] Z W T P zM J F }B v> r: f6 k2 b. ^* [& I" T L G D = ; 9 4 1~ /z -v *r 'n j f b ^ Z V R N J F ˑB > ޑ: 6 2 ّ. Ց* ϑ& ʑ" Ǒ Ñ      ~ z v r n j f b ^ Z yV |R uN nJ hF dB `> X: S6 V2 P. L* I& B" > 6 9 4 1 , ) & #{ w s o l h d ` \ X T PkL H D @ < 8 4 ܏0 ؏, ӏ) ̏% ʏ! ɏ ŏ     } y u q n j f c ` \ Y V R N J {G uC r? p; n7 f3 e0 b, _( ]$ U P M I G A @ 9 2 *} %y u q n k gc_ [ W SOKGC?;73/+'ߍ#ˍ֍э̍ōÍ {wsokgc_[WSOzKwGqCn?k<f9\6_3Y/V,R)M&I"FA>974& !|xtq n jfc`]ZVSOLIEAߋ= -RM H C > 9 4/*|%w rmhc TzQe!SrMQpDMFREKRMELwbL:localhost:8800$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVITyQe!SrMQpDMFREKRMELwbL:localhost:8800$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4cTxQe!SrMQpDMFREKRMELwbL:localhost:8800$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktUTwQe!SrMQpDMFREKRMELwbL:localhost:8800$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeoTvQe!SrMQpDMFREKRMELwbL:localhost:8800$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEgTuQe!SrMQpDMFREKRMELwbL:localhost:8800$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHYTtQe!SrMQpDMFREKRMELwbL:localhost:8800$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwETsQe!SrMQpDMFREKRMELwbL:localhost:8800$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48TrQe!SrMQpDMFREKRMELwbL:localhost:8800$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8TqQe!SrMQpDMFREKRMELwbL:localhost:8800$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeATpQe!SrMQpDMFREKRMELwbL:localhost:8800$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUToQe!SrMQpDMFREKRMELwbL:localhost:8800$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1QTnQe!SrMQpDMFREKRMELwbL:localhost:8800$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeITmQe!SrMQpDMFREKRMELwbL:localhost:8800$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkITlQe!SrMQpDMFREKRMELwbL:localhost:8800$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPwTkQe!SrMQpDMFREKRMELwbL:localhost:8800$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyUTjQe!SrMQpDMFREKRMELwbL:localhost:8800$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzsTiQe!SrMQpDMFREKRMELwbL:localhost:8800$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEThQe!SrMQpDMFREKRMELwbL:localhost:8800$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwTgQe!SrMQpDMFREKRMELwbL:localhost:8800$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKATfQe!SrMQpDMFREKRMELwbL:localhost:8800$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwTeQe!SrMQpDMFREKRMELwbL:localhost:8800$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwTdQe!SrMQpDMFREKRMELwbL:localhost:8800$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcTcQe!SrMQpDMFREKRMELwbL:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUTbQe!SrMQpDMFREKRMELwbL:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqkTaQe!SrMQpDMFREKRMELwbL:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYT`Qe!SrMQpDMFREKRMELwbL:localhost:8800$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUT_Qe!SrMQpDMFREKRMELwbL:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94T^Qe!SrMQpDMFREKRMELwbL:localhost:8800$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQT]Qe!SrMQpDMFREKRMELwbL:localhost:8800$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAT\Qe!SrMQpDMFREKRMELwbL:localhost:8800$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9oT[Qe!SrMQpDMFREKRMELwbL:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-QTZQe!SrMQpDMFREKRMELwbL:localhost:8800$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1CjodwTYQe!bNSXSTadOMhIrYpMzH:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMTXQe!bNSXSTadOMhIrYpMzH:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgTWQe!bNSXSTadOMhIrYpMzH:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxATVQe!bNSXSTadOMhIrYpMzH:localhost:8800$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQTUQe!bNSXSTadOMhIrYpMzH:localhost:8800$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4TTQe!bNSXSTadOMhIrYpMzH:localhost:8800$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeETSQe!bNSXSTadOMhIrYpMzH:localhost:8800$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBYTRQe!bNSXSTadOMhIrYpMzH:localhost:8800$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQTQQe!bNSXSTadOMhIrYpMzH:localhost:8800$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuoTPQe!bNSXSTadOMhIrYpMzH:localhost:8800$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7EcTOQe!bNSXSTadOMhIrYpMzH:localhost:8800$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7wTNQe!bNSXSTadOMhIrYpMzH:localhost:8800$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14  u_eQw$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "290", "stream_ordering": 1960}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 46"}, "depth": 54, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042193204, "hashes": {"sha256": "7IlwtTfnWnjvnkxHP08VUxO0K+67JvuHR02PHhkA/GA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oGXRLpA9oKsPPqbZP4qiwXU07yfmr4Xp+QYgyUfBAKFpOWjjLXNDhT0gmzCZsjJ1PjvAVUufpNA8652e3bq9BQ"}}, "unsigned": {"age_ts": 1570042193204}}eQw$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "289", "stream_ordering": 1959}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 45"}, "depth": 53, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042192777, "hashes": {"sha256": "OyWp142RrK97RnZmoQDLE8PckQB6O5WBKzNDxKyZGcI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TstNRquUBNr5cSc4SE/SVzvP35tMQz+dudeAZr19yLlsOsQGFgF1hfuVOaSggxX7s3Is4Fe8c6sd96n5dKFUBQ"}}, "unsigned": {"age_ts": 1570042192777}}eQw$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "288", "stream_ordering": 1958}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 44", "msgtype": "m.text"}, "depth": 52, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042192394, "hashes": {"sha256": "qjurEH3vIdz8IQqa7TDa78XJaS2kr/VznMnX4EMxFiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QI5TWLKqJLt0lAM+zJX4KPiyS2BlgoT3ctzrnJ21RECwesyUgO7JC+0nwmQc/v4nhpNahzV/mVOLL0kJ2RZkBQ"}}, "unsigned": {"age_ts": 1570042192394}}eQw$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "287", "stream_ordering": 1957}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 43"}, "depth": 51, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042191878, "hashes": {"sha256": "xi1SOyRA9wRxYDmrOVmYGHWT1LTEFWoAu8fcyYb5rUE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5TblCmrzymlZmRrP3YXAIXWz1FSVaLw+PQXUtcXY6IxY5ktu3CYgwJWp7Riz7CL7hpXeB9vc4UUdeXN5gNVjBw"}}, "unsigned": {"age_ts": 1570042191878}}  u_!eQw$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "294", "stream_ordering": 1964}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 50"}, "depth": 58, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042195618, "hashes": {"sha256": "IwZA3t2phXdrIL2NxSHP8GZvXBlTVNQlzOJCSII68Q0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VYHTL9oPG5+Z/7rjZIU+NMntWfpILsqvkcry2JAn0AJNXVv/86FDmew3dB2fFpCMzc6xEg1PDkTVxKTKlpAtDw"}}, "unsigned": {"age_ts": 1570042195618}} eQw$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "293", "stream_ordering": 1963}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 49"}, "depth": 57, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042194936, "hashes": {"sha256": "ZUgrEoTlI3yd7pH0f/QVcgOqYSKyVATIX2vF+c86ZOg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HoB5CHapV4IQoAUkQbPxO/zZXVbKqHvP6TuFFnEkumE9hqs+VHcdxsqmnUHofhuAfrrW8xdSkMJ4cdlFis36Cg"}}, "unsigned": {"age_ts": 1570042194936}}eQw$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "292", "stream_ordering": 1962}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 48", "msgtype": "m.text"}, "depth": 56, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042194378, "hashes": {"sha256": "SGGYutfIAQ8Ez7gKmORHlALNDhTeQU0DRVazzhtCznY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VCO7SDDRkObnw5zNZUecHRKM7UxgywKad5FdbbiWENCOHLwpH785qcohS6SUMcUSuW8cqD45fJOeYkts0sKFAA"}}, "unsigned": {"age_ts": 1570042194378}}eQw$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "291", "stream_ordering": 1961}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 47", "msgtype": "m.text"}, "depth": 55, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042193828, "hashes": {"sha256": "+1t9jdJLbQt/iPZT0yCvcCaZfkomDQ6l3s7Qvn+eqRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LXZGR6JSRFYRenMQiEqMAT8l8SvQzyF34ayMSeJ7UO8+ec+WxCN6m/ggusfMT2NXlTyu8fVVVIEdBlAfxLoIDg"}}, "unsigned": {"age_ts": 1570042193828}} ,NC 8 - { " p  e ZOD9.|#qf VLeL$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwsha256:l-^[X^yW~+w|VKeL$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxssha256jiy1GV.]H/_-Цo js VJeL$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7ssha256&w(Ea>]6]KnNƌ ûVIeL$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wsha256G׌np7(>Y㧐p|VHeL$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzcsha256("zl 鋱'n "9C/7VGeL$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIsha256v("LW}ox1EȢVFeL$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czyssha256ÅK #a/REHssGDR+VEeL$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVIsha256\Iꌚ/=j_GcϡU6.|%RVDeL$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4csha256*Zۏ? : e7EAuԆE)LvV?eL$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwEsha256BFZ͒#?~>kSd"u;gi7V>eL$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48sha256t@40!3R8x#V=eL$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8sha256 bSZ5_:Fl2ܲ*nࠩzV<eL$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeAsha256!B7ĖVZboZYAdV;eL$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUsha256XW4c>;KK%뎿AާV:eL$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Qsha256sqp&s:#lr*:VPTV9eL$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeIsha256j歕юoH֖\2kmq V8eL$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkIsha256ĉEt{}4^]1/1mWbI#TLvL;;V4eL$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEsha256޲̶6øJK)z'5FV3eL$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwsha256}nrtN`vN~)k zKj V2eL$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKAsha2563zFd}qdUdso gygBuLV1eL$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwsha256׹l". L TV FV0eL$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwsha2564F[L.銞$nX7LV/eL$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcsha256/ô&Q8EFU>м0*sX0:.jV.eL$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUsha2567= 1qa`%I~QN#ܑpV-eL$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqksha256{\g+XcREgZV,eL$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYsha2568S9~ ؉U̗Lw!UA_T6V+eL$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUsha256&u=9?k &5~,V*eL$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94sha256C$`WP "&B\?6rQ:GV)eL$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQsha256qXR, ,ib~[ĭVV(eL$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAsha256sCvt`HE䕉2n֒L>V'eL$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9osha256Y^/z5Yf5Ww&q^ QTV&eL$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qsha256)iX VBP oV%eL$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodwsha256=O^㭷? RkPV$eL$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMsha256G2 5.Tԋ1kr)<3V#eL$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgsha256iAwh""6"[JߦqLV"eL$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAsha256(%*N4377MrC H V!eL$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQsha256y֮l{#*Ԙs֤ r `D  !i%eQa_$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1968}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-360:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042201573, "hashes": {"sha256": "Yu/Lan1vGtpzBXrOpL6HbyOOo5xYWOYI9iUuVhDREmM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OUpKGZATq4H4kVWrvCGSfvD11iNjN3Iv3GpaZE4U91NZ9PTHqwockYXwYpMfh0WB0cITGzIvrYtAghGQbV14DQ"}}, "unsigned": {"age_ts": 1570042201573}}$eQa?$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 374, "stream_ordering": 1967}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag"], "prev_events": ["$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-358:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-358", "avatar_url": null}, "depth": 61, "prev_state": [], "state_key": "@anon-20191002_181700-358:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042198492, "hashes": {"sha256": "28nBn3Epg7UPFfkTipAk0YN3G8/6wABe8MJcMd8JEj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lJrfL246BvpyKqdp11mv33kPxjPVRjo/qt1Oh7/Q53CXb3FDujYzqxT8MKjqZWFapn/1UgdjarEJpXtQAWqoDg"}}, "unsigned": {"age_ts": 1570042198492, "replaces_state": "$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA"}}#eQa?$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 376, "stream_ordering": 1966}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag"], "prev_events": ["$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-359:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-359", "avatar_url": null}, "depth": 60, "prev_state": [], "state_key": "@anon-20191002_181700-359:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042197197, "hashes": {"sha256": "5BJvNp+poVPow7WDdhvKehDENppr0qRfRi42MQwtjMc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j5bmVwWyMkz+KfMawGjuNfEYZEGgtVwPadNyw7P0yZwV/ypLddQwe6B04kQ20Gt+KjOcFpTNwhGjmrt2e0QcCA"}}, "unsigned": {"age_ts": 1570042197197, "replaces_state": "$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c"}}["eQaC$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 374, "stream_ordering": 1965}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE"], "prev_events": ["$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-358:localhost:8800", "content": {"membership": "leave"}, "depth": 59, "prev_state": [], "state_key": "@anon-20191002_181700-358:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042196153, "hashes": {"sha256": "viDIHUI9UojBhMdVvRTUz89bFNtC7F2HGE2wvz7FQBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wyBRXzIvruvzG7FDWu+fPmswMl/pbGh95zvaS6IVAKgiOaykPgELOx3qV67i5hUHQPGJFvYOrKMyWS9WOOnZCA"}}, "unsigned": {"age_ts": 1570042196153, "replaces_state": "$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE"}} a} { y w u sqomkigeca~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800~~eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~}eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~|eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~{eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~zeeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~yeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800~xeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~weeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~veeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~ueeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~teeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~seeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~reeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~qeeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~peeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~oeeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~neeQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~meeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~leeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~keeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~jeeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~ieeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~heeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~geeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800 W a 5U( t P # o B Hg: Y-yLk> >  ^1}P#zM oD j ] 0  } ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 +Q !uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800  ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ ~,Q!ubmTdQFAhrhZkGULDx:localhost:8800 } }+Q !ubmTdQFAhrhZkGULDx:localhost:8800 | |,Q!uSBqTezaFcMnlowsEf:localhost:8800   ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800+Q !uSBqTezaFcMnlowsEf:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 +Q !vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vAUAIZrCnHTeMGeNuw:localhost:8800gg,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ff,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ee,Q!vAUAIZrCnHTeMGeNuw:localhost:8800dd,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vAUAIZrCnHTeMGeNuw:localhost:8800cc+Q !vAUAIZrCnHTeMGeNuw:localhost:8800bb*Q!uxKymrHZeXRYCZwekU:localhost:8800CC*Q!uxKymrHZeXRYCZwekU:localhost:8800BB*Q!uxKymrHZeXRYCZwekU:localhost:8800AA*Q!uxKymrHZeXRYCZwekU:localhost:8800@@)Q !uxKymrHZeXRYCZwekU:localhost:8800??,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800+Q !utJsNQubeIXvcTKGpx:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800   El:r@!xGj8r@ x F M ~ L  Y S ! S Y ' ` .'f_-41e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 4,1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM d1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E W1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs #1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY ]1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc [1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ L1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw (1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc '1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 y1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00E1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk>1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-01e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 |1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkl1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQl1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsl1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk@1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsH1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A b1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY41e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEA1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUI1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U*1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE;1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MS1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90+1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oR1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 I1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo_1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8p1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE61e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4a1e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs01e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY`1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao:1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo.0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU<1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E $ G[$H l 5 Y " } F  j 3 W {D h1UyB f/Sw@ d-4S==anon-20191002_181700-432anon-20191002_181700-4324R==anon-20191002_181700-431anon-20191002_181700-4314Q==anon-20191002_181700-430anon-20191002_181700-4304P==anon-20191002_181700-429anon-20191002_181700-4294O==anon-20191002_181700-428anon-20191002_181700-4284N==anon-20191002_181700-427anon-20191002_181700-4274M==anon-20191002_181700-426anon-20191002_181700-4264L==anon-20191002_181700-424anon-20191002_181700-4244K==anon-20191002_181700-425anon-20191002_181700-4254J==anon-20191002_181700-423anon-20191002_181700-4234I==anon-20191002_181700-421anon-20191002_181700-4214H==anon-20191002_181700-422anon-20191002_181700-4224G==anon-20191002_181700-420anon-20191002_181700-4204F==anon-20191002_181700-419anon-20191002_181700-4194E==anon-20191002_181700-417anon-20191002_181700-4174D==anon-20191002_181700-418anon-20191002_181700-4184C==anon-20191002_181700-416anon-20191002_181700-4164B==anon-20191002_181700-414anon-20191002_181700-4144A==anon-20191002_181700-415anon-20191002_181700-4154@==anon-20191002_181700-413anon-20191002_181700-4134?==anon-20191002_181700-411anon-20191002_181700-4114>==anon-20191002_181700-412anon-20191002_181700-4124===anon-20191002_181700-410anon-20191002_181700-4104<==anon-20191002_181700-409anon-20191002_181700-4094;==anon-20191002_181700-408anon-20191002_181700-4084:==anon-20191002_181700-407anon-20191002_181700-40749==anon-20191002_181700-406anon-20191002_181700-40648==anon-20191002_181700-405anon-20191002_181700-40547==anon-20191002_181700-404anon-20191002_181700-40446==anon-20191002_181700-403anon-20191002_181700-40345==anon-20191002_181700-402anon-20191002_181700-40244==anon-20191002_181700-401anon-20191002_181700-40143==anon-20191002_181700-400anon-20191002_181700-40042==anon-20191002_181700-399anon-20191002_181700-39941==anon-20191002_181700-397anon-20191002_181700-39740==anon-20191002_181700-398anon-20191002_181700-3984/==anon-20191002_181700-396anon-20191002_181700-3964.==anon-20191002_181700-395anon-20191002_181700-3954-==anon-20191002_181700-394anon-20191002_181700-3944,==anon-20191002_181700-393anon-20191002_181700-3934+==anon-20191002_181700-392anon-20191002_181700-3924*==anon-20191002_181700-391anon-20191002_181700-3914)==anon-20191002_181700-390anon-20191002_181700-3904(==anon-20191002_181700-389anon-20191002_181700-3894'==anon-20191002_181700-388anon-20191002_181700-3884&==anon-20191002_181700-387anon-20191002_181700-3874%==anon-20191002_181700-386anon-20191002_181700-3864$==anon-20191002_181700-385anon-20191002_181700-3854#==anon-20191002_181700-384anon-20191002_181700-3844"==anon-20191002_181700-383anon-20191002_181700-3834!==anon-20191002_181700-382anon-20191002_181700-3824 ==anon-20191002_181700-381anon-20191002_181700-3814==anon-20191002_181700-380anon-20191002_181700-3804==anon-20191002_181700-379anon-20191002_181700-3794==anon-20191002_181700-378anon-20191002_181700-3784==anon-20191002_181700-377anon-20191002_181700-3774==anon-20191002_181700-375anon-20191002_181700-3754==anon-20191002_181700-376anon-20191002_181700-3764==anon-20191002_181700-374anon-20191002_181700-3744==anon-20191002_181700-372anon-20191002_181700-3724==anon-20191002_181700-373anon-20191002_181700-3734==anon-20191002_181700-371anon-20191002_181700-3714==anon-20191002_181700-370anon-20191002_181700-3704==anon-20191002_181700-369anon-20191002_181700-3694==anon-20191002_181700-368anon-20191002_181700-3684==anon-20191002_181700-367anon-20191002_181700-3674==anon-20191002_181700-365anon-20191002_181700-3654==anon-20191002_181700-366anon-20191002_181700-3664==anon-20191002_181700-363anon-20191002_181700-3634==anon-20191002_181700-364anon-20191002_181700-3644 ==anon-20191002_181700-360anon-20191002_181700-360 X~   |xtplhd`\X5Q]e!TeraguiGoZoeOGFzlI:localhost:8800@anon-20191002_181700-337:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwjoin4Q]e!TeraguiGoZoeOGFzlI:localhost:8800@anon-20191002_181700-336:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gjoin3Q]e!UaitDdkGDcwvRLJSvp:localhost:8800@anon-20191002_181700-333:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8join2Q]e!dDqNKNFdIjCAwnyaxp:localhost:8800@anon-20191002_181700-332:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAjoin1Q]e!kjueCKHmYaYefEEpQY:localhost:8800@anon-20191002_181700-331:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwjoin0Q]e!nftGLlLhVgzOwOFufp:localhost:8800@anon-20191002_181700-330:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQjoin/Q]e!raCWVWQGnXbmkexpCN:localhost:8800@anon-20191002_181700-329:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kjoin.Q]e!kwJgbtogEzCqYbUXfh:localhost:8800@anon-20191002_181700-328:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gjoin-Q]e!JZouHBRxCRbcxYJnbn:localhost:8800@anon-20191002_181700-327:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgjoin,Q]e!HOPyhZPcKkrvSmDIvX:localhost:8800@anon-20191002_181700-326:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQjoin+Q]e!EWkoFeckhXlNyjuIEB:localhost:8800@anon-20191002_181700-325:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gjoin*Q]e!EWkoFeckhXlNyjuIEB:localhost:8800@anon-20191002_181700-324:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cjoin)Q]e!utJsNQubeIXvcTKGpx:localhost:8800@anon-20191002_181700-323:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0join(Q]e!utJsNQubeIXvcTKGpx:localhost:8800@anon-20191002_181700-322:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4join'Q]e!iTQSCiLqRMDtgXtUdC:localhost:8800@anon-20191002_181700-321:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mkjoin&Q]e!iTQSCiLqRMDtgXtUdC:localhost:8800@anon-20191002_181700-320:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUjoin%Q]e!UMFUOnYRvwKwSPkYHB:localhost:8800@anon-20191002_181700-319:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Ujoin$Q]e!hZuwenlFDapIPBOyfi:localhost:8800@anon-20191002_181700-318:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIjoin#Q]e!LvARVIpJZeRQxbKefX:localhost:8800@anon-20191002_181700-317:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4join"Q]e!SfYtaUhCFosNfHfUVm:localhost:8800@anon-20191002_181700-312:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648join!Q]e!NPdjmIfsBVIIkvWBzD:localhost:8800@anon-20191002_181700-311:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwjoin Q]e!beBXQofoOfxNBtzsut:localhost:8800@anon-20191002_181700-311:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAjoinQ]e!vyCFfUTJKYJSDadFhT:localhost:8800@anon-20191002_181700-311:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsjoinQ]e!xvblqEscwOtCqJntfF:localhost:8800@anon-20191002_181700-310:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwjoinQ]e!HhYREfUiJTpjWmOuPF:localhost:8800@anon-20191002_181700-308:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkjoinQ]e!HhYREfUiJTpjWmOuPF:localhost:8800@anon-20191002_181700-307:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUjoinQ]e!nvclDopiBLEOKBIheH:localhost:8800@anon-20191002_181700-306:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYjointQ]O!YgaGPEraeLCqHQirin:localhost:8800@anon-20191002_181700-305:localhost:8800$157004188093UtRbN:localhost:8800joinQ]e!aVxOoyiLLnxmzgLJat:localhost:8800@anon-20191002_181700-305:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIjointQ]O!fuHSJcznvGQnoYoLPW:localhost:8800@anon-20191002_181700-304:localhost:8800$157004186786RVgKA:localhost:8800joinQ]e!hYPSaMPGsLnvYSmwhg:localhost:8800@anon-20191002_181700-304:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usjoin F8 m< xG R ! ] , ~ M X'c2n= yHS"^-i8 h 7  s B  tC 0]@anon-20191002_181700-394:localhost:88000]@anon-20191002_181700-393:localhost:88000]@anon-20191002_181700-392:localhost:88000]@anon-20191002_181700-391:localhost:88000]@anon-20191002_181700-390:localhost:88000]@anon-20191002_181700-389:localhost:88000]@anon-20191002_181700-388:localhost:88000]@anon-20191002_181700-387:localhost:88000]@anon-20191002_181700-386:localhost:88000]@anon-20191002_181700-385:localhost:88000]@anon-20191002_181700-384:localhost:88000]@anon-20191002_181700-383:localhost:88000]@anon-20191002_181700-382:localhost:88000]@anon-20191002_181700-381:localhost:88000]@anon-20191002_181700-380:localhost:88000]@anon-20191002_181700-379:localhost:88000]@anon-20191002_181700-378:localhost:88000]@anon-20191002_181700-377:localhost:88000]@anon-20191002_181700-375:localhost:88000]@anon-20191002_181700-376:localhost:88000]@anon-20191002_181700-374:localhost:88000]@anon-20191002_181700-372:localhost:88000]@anon-20191002_181700-373:localhost:88000]@anon-20191002_181700-371:localhost:88000]@anon-20191002_181700-370:localhost:88000]@anon-20191002_181700-369:localhost:88000]@anon-20191002_181700-368:localhost:88000]@anon-20191002_181700-367:localhost:88000]@anon-20191002_181700-365:localhost:88000]@anon-20191002_181700-366:localhost:88000]@anon-20191002_181700-363:localhost:88000]@anon-20191002_181700-364:localhost:88000]@anon-20191002_181700-360:localhost:88000]@anon-20191002_181700-361:localhost:88000]@anon-20191002_181700-362:localhost:88000]@anon-20191002_181700-359:localhost:88000]@anon-20191002_181700-357:localhost:88000]@anon-20191002_181700-358:localhost:88000]@anon-20191002_181700-356:localhost:88000]@anon-20191002_181700-354:localhost:88000]@anon-20191002_181700-334:localhost:88000]@anon-20191002_181700-405:localhost:88000]@anon-20191002_181700-404:localhost:88000]@anon-20191002_181700-403:localhost:88000]@anon-20191002_181700-402:localhost:88000]@anon-20191002_181700-401:localhost:88000]@anon-20191002_181700-400:localhost:88000]@anon-20191002_181700-399:localhost:88000]@anon-20191002_181700-397:localhost:88000]@anon-20191002_181700-398:localhost:88000]@anon-20191002_181700-396:localhost:88000]@anon-20191002_181700-395:localhost:88000]@anon-20191002_181700-355:localhost:88000]@anon-20191002_181700-353:localhost:88000]@anon-20191002_181700-352:localhost:88000]@anon-20191002_181700-350:localhost:88000]@anon-20191002_181700-351:localhost:88000]@anon-20191002_181700-349:localhost:88000]@anon-20191002_181700-348:localhost:88000]@anon-20191002_181700-346:localhost:88000]@anon-20191002_181700-347:localhost:8800b0]@anon-20191002_181700-345:localhost:88000]@anon-20191002_181700-343:localhost:88000]@anon-20191002_181700-342:localhost:88000]@anon-20191002_181700-341:localhost:88000]@anon-20191002_181700-339:localhost:88000]@anon-20191002_181700-338:localhost:88000]@anon-20191002_181700-337:localhost:88000]@anon-20191002_181700-336:localhost:88000]@anon-20191002_181700-335:localhost:8800  )eQa$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1972}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "type": "m.room.history_visibility", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042204846, "hashes": {"sha256": "VJxFq7yVigLsogq7rWP6oMfKJJiPV+YWYHB4zODdXmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QUIZcAxSR7iIEdIv97EuI0LiYijly9M2UQaBwDOOLSm6Uq7dCrjQsx/vIW2b52ry8dibyTjCM4OM/JBrycy9Aw"}}, "unsigned": {"age_ts": 1570042204846}}t(eQau$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1971}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o"], "type": "m.room.join_rules", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042204148, "hashes": {"sha256": "Mw8EJ5g3V0uT2KCRVSE8UJVaUCRQGvlPvhPr0dcSWME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "de1nQN+MyJ50n/mOv+AXnwXz+RaauqtWP4Lg9a+akzR3ewXyQpmHg9HpFItmOwRR4oPLkjw+DT5RJaxc8CZoAA"}}, "unsigned": {"age_ts": 1570042204148}}k'eQac$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1970}{"auth_events": ["$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "type": "m.room.power_levels", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"users": {"@anon-20191002_181700-360:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042203196, "hashes": {"sha256": "QlT+liNsD5neLEKkNlT+eBCpojiANy51OlrxyMa289M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OpaylwLJRrR7MtsqpUBGTBGBhkYO/z506clcuniy1ytQ7kuTEi+uJallCiqZ/3xWauolpSYEAhoIsDSdYeRUDw"}}, "unsigned": {"age_ts": 1570042203196}}v&eQay$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1969}{"auth_events": ["$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw"], "prev_events": ["$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-360", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-360:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042202483, "hashes": {"sha256": "mDqNNUckRubFvKiFCgndhmr+UwcWiC23eGgz/DjOA1k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bchHZuUztVgjhFkLAvmnTxFxMv2nckr39amAy7rcdkuqYW2j5+WnUltsBNKOzeyq08bOgKXFqvZmVM3kWVzUBg"}}, "unsigned": {"age_ts": 1570042202483}}  3 3   JIToS ^%*R[ 1 6eQ']$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800invitem5eQ? $qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibilitye4eQ/ $sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rulesg3eQ3 $7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels 2eQ']$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800joina1eQ' $KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create /eQ']$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800joinm,eQ? $if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibilitya&eQ' $PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800m.room.create %eQ']$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800join $eQ']$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800joinm!eQ? $6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibilityeeQ/ $nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rulesgeQ3 $WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels eQ']$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800joinaeQ' $IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create eQ']$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800join eQ']$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800joinmeQ? $gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibilityeeQ/ $wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rules eQ']$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800join 0eQ']$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800joingeQ3 $oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levelse)eQ/ $0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rulesg(eQ3 $xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels 'eQ']$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800join !.1 4  ) 2 Zir  Jva"eQ' $zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800m.room.create !eQ']$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800m eQ? $qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800m.room.history_visibilityeeQ/ $WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800m.room.join_rulesgeQ3 $GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800m.room.power_levels eQ']$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800aeQ' $8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800m.room.createmeQ? $RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibilityeeQ/ $b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rulesgeQ3 $ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels eQ']$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800aeQ' $nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create eQ']$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800meQ? $x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibilityeeQ/ $MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rulesgeQ3 $d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels eQ']$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800aeQ' $FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create eQ']$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800meQ? $qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibilityeeQ/ $sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rulesg eQ3 $7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels eQ']$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800a eQ' $KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create eQ']$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800 eQ']$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800 eQ']$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800 eQ']$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800meQ? $if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility eQ']$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800meQ? $7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibilityeeQ/ $0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rulesgeQ3 $xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels 1`p 0 @ P `  p 0@P`p 0@PMF]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800ME]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800MD]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800MC]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800MB]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800MA]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800M@]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800M?]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800M>]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800M=]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800M<]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800M;]Q@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800M:]Q@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800M9]Q@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800M8]Q@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800M7]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800M5]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800M6]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800M3]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800M2]Q@anon-20191002_181700-367:localhost:8800!aknLNLxfChlLvFYhkJ:localhost:8800M1]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800M0]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800M/]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800M.]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800M,]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800M+]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800M*]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800M)]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800M(]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800M']Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800M&]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800M%]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800M$]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800M#]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800M"]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800M!]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800M ]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800M]Q@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800M]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829M]Q@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829M]Q@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800M]Q@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800M]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829M]Q@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829M]Q@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800M]Q@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800M]Q@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800M]Q@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800M-]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800 vP X  k ! |2CT ev!Ke)Q ]$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHYm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Je)Q ]$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwEm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ie)Q ]$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48m.room.message!SrMQpDMFREKRMELwbL:localhost:8800m m @anon-20191002_181700-360:localhost:8800!He)Q ]$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8m.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ge)Q ]$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeAm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Fe)Q ]$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUm.room.message!SrMQpDMFREKRMELwbL:localhost:8800m)m4@anon-20191002_181700-360:localhost:8800!Ee)Q ]$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Qm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mfml@anon-20191002_181700-360:localhost:8800!De)Q ]$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ce)Q ]$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Be)Q ]$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ae)Q ]$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyUm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!@e)Q ]$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzsm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!?e)Q ]$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!>e)Q ]$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mBmR@anon-20191002_181700-360:localhost:8800!=e)Q ]$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKAm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mnmw@anon-20191002_181700-360:localhost:8800!<e)Q ] $w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 mm@anon-20191002_181700-360:localhost:8800!;e)Q ] $09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 mm@anon-20191002_181700-360:localhost:8800!:e)Q ] $L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 m<mg@anon-20191002_181700-360:localhost:8800 9e'Q ] $mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUm.room.member!SrMQpDMFREKRMELwbL:localhost:8800 mm@anon-20191002_181700-362:localhost:8800 8e'Q ] $oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqkm.room.member!SrMQpDMFREKRMELwbL:localhost:8800 mZm@anon-20191002_181700-361:localhost:8800 7e'Q ]$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYm.room.member!SrMQpDMFREKRMELwbL:localhost:8800mm߉@anon-20191002_181700-360:localhost:8800,6e?Q ]$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUm.room.history_visibility!SrMQpDMFREKRMELwbL:localhost:8800mmܜ@anon-20191002_181700-360:localhost:8800 5e'Q ]$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94m.room.member!SrMQpDMFREKRMELwbL:localhost:8800mmM@anon-20191002_181700-361:localhost:8800,4e?Q ]$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQm.room.history_visibility!SrMQpDMFREKRMELwbL:localhost:8800mҮmU@anon-20191002_181700-360:localhost:8800  &[,eQa7$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1975}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-362", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-362:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042208019, "hashes": {"sha256": "LsEn1uIurb26cLdbsn53QYEWKuV+Zm+nGb5aeAIqp8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gBUaU+NvK5A54COUNonKpNDPJDd0/5w9Cih0h3+OTlqhW9ovaRimXCDgJU7wHz2mETWUcLmI9U7ZqGvKv9zIBQ"}}, "unsigned": {"age_ts": 1570042208019, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-360:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-360:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-360", "avatar_url": null}, "sender": "@anon-20191002_181700-360:localhost:8800"}]}}G+eQa$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1974}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94"], "type": "m.room.history_visibility", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042206972, "hashes": {"sha256": "ntogINXoc1ZVUjw7AwodniON9G846uaQrQzn4sNYBKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rNHnqeBby4v2E6WoY7k0vwywvktHvDi/d5tFPfgYDUY2iGqMD2QaJbo6SBK73aRyzPXaG8w2IZXnoiRtdUCvCg"}}, "unsigned": {"age_ts": 1570042206972, "replaces_state": "$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ"}}V*eQa9$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 378, "stream_ordering": 1973}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "prev_events": ["$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-361:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-361", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-361:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042206199, "hashes": {"sha256": "1h0gEgEJXdd1ZNSiRll97wqkJuEkoEDz1qtI9FL4SoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pjKJeHg/uO2+5f2EDm+DHQgR4tndmfUCdi4snrMaOlDwPcIwEXV2W2t9+GLD+46/YUKuo6H6CDxBCFLUqjUbCg"}}, "unsigned": {"age_ts": 1570042206199}} p@  = :Ckhq&/W(dQ' e!fkvdYkesQOFCAQkzky:localhost:8800m.room.create$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a08Q']ee!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EpQ? e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.history_visibility$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAhQ/ e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.join_rules$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEjQ3 e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.power_levels$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4 Q']e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EdQ' e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.create$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4pQ? e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibility$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4hQ/ e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rules$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYjQ3 e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q Q']e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosdQ' e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw Q']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gpQ? e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibility$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4shQ/ e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rules$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkjQ3 e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI Q']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMd Q' e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg Q']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ksp Q? e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibility$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkh Q/ e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rules$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYj Q3 e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro Q']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEdQ' e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k8Q']ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk8Q']ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY8Q']ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94 Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYQ? ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94 a} { y w u sqomkigeca~$eeQ$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800~#eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~"eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800~!eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~ eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800 XM`8oGuMpH Y 1 l E  _7 } V .  f >   v O 'Y1 jB|T,e='Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800~'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800k'Q!dvZnfJonDkxlrrDXUk:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800F'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800z'Q!csWEXfVEVxdviNvgAd:localhost:88005&Q!cosGKKhHvKaVukBCic:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800&Q!cSUQGmpIsSCBAVTOHo:localhost:8800/'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800m'Q!cOFSwLSkxZECJMvjjZ:localhost:8800l&Q!cHtqiAyCHEAoBIbCmL:localhost:8800R&Q!cHtqiAyCHEAoBIbCmL:localhost:8800Q'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800x'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800j'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800i'Q!ZOwibbprUCQrSJQCrx:localhost:8800f'Q!ZOwibbprUCQrSJQCrx:localhost:8800e'Q!biBIcqnGelHvLnpkOu:localhost:8800`'Q!biBIcqnGelHvLnpkOu:localhost:8800_'Q!anErKtXIsVKEEsrzWM:localhost:8800V'Q!anErKtXIsVKEEsrzWM:localhost:8800U'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800E'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800z'Q!bOSxzttDtclnrWnLov:localhost:8800&'Q!bNSXSTadOMhIrYpMzH:localhost:8800,'Q!bNSXSTadOMhIrYpMzH:localhost:8800+'Q!bNSXSTadOMhIrYpMzH:localhost:8800*'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800f'Q!atnRTMliktaVUhMVID:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:88002'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800a&Q!aWvVRVaDflYyyGTOdD:localhost:8800`&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:88003&Q!aBCvSXjtZUEPlPGHvY:localhost:8800k'Q!ZvLVbnHjeymRiFIkYr:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800%'Q!ZKPJvrCZHMHPEksYDc:localhost:8800$'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800?'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800  "{0eQu$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "296", "stream_ordering": 1979}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042211554, "hashes": {"sha256": "3IJRuNInxdQ12jNoxN9jTBc5Mxx3lSAN6nsyb1s3iF0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IJi4cRCjSYflcGQ1amyIcp4tbANUPhmkaA7hE9CF78UIU1bbxSDqqKlwdRkLxT5Tqn1r5x5OBWaTqRB3d2qfAQ"}}, "unsigned": {"age_ts": 1570042211554}}/eQu$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "295", "stream_ordering": 1978}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 1", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042210620, "hashes": {"sha256": "j4f23iHoJ84KTPqJMEqpdfdm4VJEBJwupQXtqlK1K44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ntAQ66ZkYesQQFyoWBybU0XUn12BJzMuwoB2NhYHBIIHbGPxDBWVXNB8O721iP4G53Qodz5CK5eHAPooO8J1DQ"}}, "unsigned": {"age_ts": 1570042210620}}.eQa?$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 377, "stream_ordering": 1977}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "prev_events": ["$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-362:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-362", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-362:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042209781, "hashes": {"sha256": "BkJ6X/JrAkKdC+wZpJu8LsMRYBo7mHVdXtXJmJVHbZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1kTcMXVJmVCgjC7Fyzun9L1ZtTdx+ZVMHpBcDkVWQv5LVsVBfZi03DFo/xM3pvptIryEnkJFgh6ShSC337UtBA"}}, "unsigned": {"age_ts": 1570042209781, "replaces_state": "$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY"}}Z-eQaA$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 378, "stream_ordering": 1976}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94"], "prev_events": ["$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-361:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-361:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042208858, "hashes": {"sha256": "n1AXgvryVkVZeLu0ibMwtw2x9/rL09ZO5PCBI7m1gts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DntTynea8+GyFlfPVnfNW1m0cRJSHAMUmXgb5NYBi8HGETVAENOWRBKq5SBGRSXEMHmgtmluXYORXtSItjK8DA"}}, "unsigned": {"age_ts": 1570042208858, "replaces_state": "$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94"}} ~z v r n j fb^ZVRNJFeeQ$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800eeQ$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800eeQ$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800eeQ$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800eeQ$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800eeQ$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800eeQ$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800eeQ$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800eeQ$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800 KV(pBvHb4 ~ P " j <  X * r D  ^ 0 xJd6~P"j<^0xJ-]@anon-20191002_181700-444:localhost:8800+[@anon-20191002_181700-37:localhost:8800-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-376:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-441:localhost:8800-]@anon-20191002_181700-440:localhost:8800-]@anon-20191002_181700-439:localhost:8800-]@anon-20191002_181700-438:localhost:8800-]@anon-20191002_181700-437:localhost:8800-]@anon-20191002_181700-436:localhost:8800-]@anon-20191002_181700-435:localhost:8800-]@anon-20191002_181700-434:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800+[@anon-20191002_181700-39:localhost:8800-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-395:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800-]@anon-20191002_181700-390:localhost:8800+[@anon-20191002_181700-38:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800 $&L r  * N r  (Lp&Jn$HlkeQ%!$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 37keQ%!$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 36keQ%!$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 35keQ%!$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 34keQ%!$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 33keQ%!$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 32keQ%!$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 31keQ%!$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 30keQ%!$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 29keQ%!$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 28keQ%!$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 27keQ%!$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 26keQ%!$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 25keQ%!$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 24keQ%!$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 23keQ%!$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 22k eQ%!$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 21k eQ%!$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 20k eQ%!$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 19k eQ%!$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 18k eQ%!$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 17keQ%!$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 16keQ%!$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 15keQ%!$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 14keQ%!$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 13keQ%!$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 12keQ%!$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 11keQ%!$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 10jeQ%$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 9jeQ%$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 8jeQ%$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 7j~eQ%$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 6j}eQ%$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 5j|eQ%$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 4j{eQ%$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 3jzeQ%$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 2  vb4eQu$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "300", "stream_ordering": 1983}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 6", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042214020, "hashes": {"sha256": "NQnpJsZGs2C+7LRoR3K26bSr8XoFjuAywUzDCcslLj4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zbymagnUCpRSfmChWKabF1zZhq9PzPLzaS9s8FNZxtfe/k5tWLYRG/lulinMsBUAou1TCz/UR3ue7zn7e2ZLCg"}}, "unsigned": {"age_ts": 1570042214020}}3eQu$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "299", "stream_ordering": 1982}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042212930, "hashes": {"sha256": "S7vuqWJwNGUywk6FyCOcL6S5mvuh3bUtqKGY2ic1o9M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ok1YddDUEPmlUWZt/MqlalZ7YNeImryVviXuBl1vnEF0SKCUeJSyBbINGB0Iue0LHebXp/pbvzJ+xKrnqAh0Bw"}}, "unsigned": {"age_ts": 1570042212930}}2eQu$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "298", "stream_ordering": 1981}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042212462, "hashes": {"sha256": "v3TcNMZs0GuYMpf22HB7EtB7n6kW66ZusU3Zq6kh5NY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2H0hbD6oWKvesma2VSPnmxaDDoZyUmtOdLrwodF/J6j0y/8OQkFeNCGjPIpExmJtfWUzwTmWMro0N8e6o6eHAA"}}, "unsigned": {"age_ts": 1570042212462}}1eQu$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "297", "stream_ordering": 1980}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042212012, "hashes": {"sha256": "QN62v/qPt0NgpUIa84NYEZ9qREVvp5Vyjagt3mTCP14"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a6+PjAbsLMs0Hn2OtxcV6mGwkcTB4Wyu4rLraRH073rc/j5tbArurm8dgxpOj432RQObF9g4vzXU1RCzniHaAg"}}, "unsigned": {"age_ts": 1570042212012}} Nj81p>  w E  } K  Q  W % ] +cUi7[o= uC{I)O#1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Ek1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQi1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU 1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE p1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM 1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0'1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE_1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo /1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw l1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg>1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwO1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI H1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv801e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO411e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk(1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MD1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI_1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc51e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k Q1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ x1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 40e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYi1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0%1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU\1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIL1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ>1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ ^1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY;1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 m Nj81p>  w E  } K  Q  W % ] +cUi7[o= uC{I)O#1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Ee1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQc1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU 1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE p1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM 1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0'1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE_1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo /1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw l1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg>1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwO1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI H1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv801e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO411e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk(1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MD1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI_1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc51e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k Q1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ x1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 40e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYi1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0%1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU\1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIL1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ>1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ ^1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY;1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 m ? W%> vD|J VQ  $ K ] +j >  v  Qc2 } j8 p  8QpW D  +21e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 .1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w.1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI B1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI v1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4w1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0~1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM)1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs 11e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU<1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE +1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc p1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q 1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQi1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMy1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQp1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90R1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc"1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAP1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcP1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUr1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc?1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc]1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI>1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsg 1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q z d1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw H1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM  1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g %1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo p21e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 21e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E21e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc  vb8eQw$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "304", "stream_ordering": 1987}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 10"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042216105, "hashes": {"sha256": "P8T3fBxkEVnFX5iYYb7CcMbj3CE41B6q1xF/3z/5Z04"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0vqZqZGYCrG2OHYBYXs0G+7WGTLHOBhITNLQT/+ZjYOTf4TQsOdUWnlAqowqmP/QlujVCagWSJB1x/0KliCJBA"}}, "unsigned": {"age_ts": 1570042216105}}7eQu$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "303", "stream_ordering": 1986}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 9", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042215630, "hashes": {"sha256": "GJimq9Hy+OGQUtBisiQI9006E2iooa1iT6BNZvPDh8o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3QV3b8Y1XOwQsSJINSSNEkm8ppUOPybKuM4bcLXY3kcYH8QODAtd0NmgPid/SNkebMMDTI7iF9kuMGX5C7ivCQ"}}, "unsigned": {"age_ts": 1570042215630}}6eQu$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "302", "stream_ordering": 1985}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 8", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042215172, "hashes": {"sha256": "noFPRjAq3TUjL03psHbqhqfvmKl83jqScQMAzUjbQ9g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XbRTm+61rcJduGTzsdGWer9VLd1vTDw1jshSsfXNWXqBz/8ob2FRq69a8NyW2Co1lzmsHn2TglhvZnTkPQs0Dw"}}, "unsigned": {"age_ts": 1570042215172}}5eQu$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "301", "stream_ordering": 1984}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 7"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042214637, "hashes": {"sha256": "wowcBKnVr+VO66If0p2dwfZz+71er1qpqPTxXMkEf4g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rVlK7L+8k6vEhlho5HzVVVQ1hTmzVrvGv/48Djpli5QRSFtX9oJ+44xsmjHdhFMUlf6ty1NClLCWHscfCFTKCA"}}, "unsigned": {"age_ts": 1570042214637}}  u_<eQw$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "308", "stream_ordering": 1991}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 14", "msgtype": "m.text"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042217971, "hashes": {"sha256": "XK+noAp+rDrH2l0ZMqFF4w5wy5yCcpW5m5vZ5uGd/so"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pufffkJxXvo5JMNilWGPeZcBLU6qkv+1l+5uVNK2zVyFHcj8701ok9xprLLJY03GVIHYkj7F68vZxGcvRXjcDQ"}}, "unsigned": {"age_ts": 1570042217971}};eQw$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "307", "stream_ordering": 1990}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 13"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042217513, "hashes": {"sha256": "KyAN/T29la5GR2W3peE3aoZP7i/s7duKcTU8RzSB4wY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wf9JhrDVWzDJP6OEDBme4lELExYx5UtvVaAMJDpaX/BIzMlH/7VLgcOP2UniQdMg+iJyolvSRtnbB+TskPFmAQ"}}, "unsigned": {"age_ts": 1570042217513}}:eQw$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "306", "stream_ordering": 1989}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 12"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042217062, "hashes": {"sha256": "yE3nNeYT0NmuoGlaHuY+OSn90tajg1uH26q/Fa+vJ3E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "leM/vT7Cz8oSjbrHqsWaiDMJLnxM4hFpne8Ho6nlikhMReqPdRLQkFcb3AaqjWpOL47ekuRH0Y5lm44egmJ8BQ"}}, "unsigned": {"age_ts": 1570042217062}}9eQw$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "305", "stream_ordering": 1988}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 11"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042216580, "hashes": {"sha256": "nN6tQFoWGDu+msiCBs9Od+spemEUHksfih9Am6G/a1Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hI2QjUe6+nWSTXq8LJEpWg1nBtcFkG2GII0OyGwtXUS1dpnlrPjXeOmaelx5wbUV89jdqZ/Uw+zVdkZf0rohAw"}}, "unsigned": {"age_ts": 1570042216580}} ~z v r n j fb^ZVRNJF9eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:88008eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:88007eeQ$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:88006eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:88005eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:88004eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:88003eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:88002eeQ$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:88001eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:88000eeQ$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:8800/eeQ$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800.eeQ$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800-eeQ$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800,eeQ$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800+eeQ$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800*eeQ$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800)eeQ$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800(eeQ$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800'eeQ$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800&eeQ$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800%eeQ$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800$eeQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800#eeQ$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800"eeQ$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800!eeQ$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800eeQ$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800eeQ$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800  u_@eQw$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "312", "stream_ordering": 1995}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 18"}, "depth": 28, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042220722, "hashes": {"sha256": "vMNm2ZpkPg2CRbqy5z3ia0XCpSwiSxMsqVzgK4tnpms"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/3myc4T3KUugASeWRZVHFJzZ/pYwCzZIrvjUQ9QnmGl2DdNPpmO8ipulr2dkuCFP9a36SlO1lWJ9G7roTV0tBQ"}}, "unsigned": {"age_ts": 1570042220722}}?eQw$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "311", "stream_ordering": 1994}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 17"}, "depth": 27, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042220172, "hashes": {"sha256": "69bWv3WDEGMD/4AscAdZ2cwJj7qkBJfXNcOJU3PkIwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VygPhzy81JONfpsp5uH/Fcf+ztHruv8O0P+if553BYmgy32s6MjWS5w3RjASRPwdEfQTCxLd2NJXeWC6rWfRAQ"}}, "unsigned": {"age_ts": 1570042220172}}>eQw$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "310", "stream_ordering": 1993}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 16"}, "depth": 26, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042219722, "hashes": {"sha256": "Vp4suxl+Tf/85fRAPozpCxOGH/9JtoKtaX3mm9u7c94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UdSTG9zRChkXZg+P4ZGyW7lHLjnCr2PdVT3bYD7VMiJmK1liEEtqL9jeTicLhPNTml/xvrMaYos/uqfl305GBA"}}, "unsigned": {"age_ts": 1570042219722}}=eQw$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "309", "stream_ordering": 1992}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 15"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042218396, "hashes": {"sha256": "mkm1M/t/grYNb/mqeG1DKkuvTqo3RdYdUcWZYH3hSpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3a/A1slWrPd3wo5IwTrkck/eV6Ppov5Ugi3eg3J/qQUskO3g2CaVUuv/gIbxAYZRtxDnY/6vrl+kAJyC6wi/Cw"}}, "unsigned": {"age_ts": 1570042218396}} Ij18p>  v D  | J  P  W % ] +ci7%o= uCW|JQ1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU y1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE M1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs 61e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs 51e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo &1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0a1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 L1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkf1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUG1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s]1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I 1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y 1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg %1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4a1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw 1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg $1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ ~1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brod1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI 1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIl1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qr1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY81e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk &1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk %1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y |1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU 1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8'1e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcb1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk 1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY #1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs Jj8+%p> v D  |] J  P  V $ | ] +c2Wj8p> JvD1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0R1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs/1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI(1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 Z1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo81e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndct1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg F1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg(1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU 1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcu1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM B1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkI1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y;1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE=1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwV1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEE1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY-1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYg1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Ei1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 k1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hod1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ(1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 @1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwt1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4n1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ*1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE  u_DeQw$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "316", "stream_ordering": 1999}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 22", "msgtype": "m.text"}, "depth": 32, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042222964, "hashes": {"sha256": "y4l+0ka61MP1MpE1jygmTYVPrWXJ5jQFa8qntx9Ltuk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twWNxHxSrjOb20YslHc1dQzjW0F3sgti+f95WVECDFYJsVp40+4GJDSJGcsK5t6OK8vwHAPWy3/CttDWRsQxBw"}}, "unsigned": {"age_ts": 1570042222964}}CeQw$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "315", "stream_ordering": 1998}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 21"}, "depth": 31, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042222464, "hashes": {"sha256": "oaA9MLceeuwquFWhho90C/pBO0crXDFw0vFIUtDYmAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q9Fawu9Fw6V2aq8RVfULqJPQ0RJ8p1KCZM8EPDPenfcWMLJcvJ9wUT0QZyyHFgrVFexPgjjNe9Hbj5Zeu8QLCw"}}, "unsigned": {"age_ts": 1570042222464}}BeQw$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "314", "stream_ordering": 1997}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 20"}, "depth": 30, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042221998, "hashes": {"sha256": "twa8zZE5WZfXuDs9IT/0YpdKnw7HlYkO4BELki/+UuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mxfrcDPr/2ujBT9x3JWpVpbK+h8U0/QN0xmo/xZVaUXOzNGN5gv5YhNBwfYZLee/TuqfGL9etSMzYJ3UOdMaBA"}}, "unsigned": {"age_ts": 1570042221998}}AeQw$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "313", "stream_ordering": 1996}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 19", "msgtype": "m.text"}, "depth": 29, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042221371, "hashes": {"sha256": "wC3s+F5ri4BSk+wS1JiEbYoc/Ou3UOhPYJJsyras39s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hDmr/68VcQ/fENGLN9pjGJBYAyQeGhIP++DCU+TgbVJ5hHopoTJp2z6ySzKKNH5BmekecaVnZW8/Wp0CyQu8Dw"}}, "unsigned": {"age_ts": 1570042221371}} [ l " } 3 DU fw-!ce)Q ]4$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwm.room.message!SrMQpDMFREKRMELwbL:localhost:88004mCmC@anon-20191002_181700-360:localhost:8800!be)Q ]3$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYm.room.message!SrMQpDMFREKRMELwbL:localhost:88003mAmA@anon-20191002_181700-360:localhost:8800!ae)Q ]2$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8m.room.message!SrMQpDMFREKRMELwbL:localhost:88002m?m?@anon-20191002_181700-360:localhost:8800!`e)Q ]1$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQm.room.message!SrMQpDMFREKRMELwbL:localhost:88001m=}m=@anon-20191002_181700-360:localhost:8800!_e)Q ]0$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWAm.room.message!SrMQpDMFREKRMELwbL:localhost:88000m;pm;{@anon-20191002_181700-360:localhost:8800!^e)Q ]/$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vcm.room.message!SrMQpDMFREKRMELwbL:localhost:8800/m9m9@anon-20191002_181700-360:localhost:8800!]e)Q ].$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMm.room.message!SrMQpDMFREKRMELwbL:localhost:8800.m8m8 @anon-20191002_181700-360:localhost:8800!\e)Q ]-$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8m.room.message!SrMQpDMFREKRMELwbL:localhost:8800-m5m6O@anon-20191002_181700-360:localhost:8800![e)Q ],$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800,m2m2@anon-20191002_181700-360:localhost:8800!Ze)Q ]+$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQm.room.message!SrMQpDMFREKRMELwbL:localhost:8800+m1?m1M@anon-20191002_181700-360:localhost:8800!Ye)Q ]*$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNom.room.message!SrMQpDMFREKRMELwbL:localhost:8800*m/+m/5@anon-20191002_181700-360:localhost:8800!Xe)Q ])$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94m.room.message!SrMQpDMFREKRMELwbL:localhost:8800)m-5m-<@anon-20191002_181700-360:localhost:8800!We)Q ]($Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800(m*m*@anon-20191002_181700-360:localhost:8800!Ve)Q ]'$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxsm.room.message!SrMQpDMFREKRMELwbL:localhost:8800'm(m(@anon-20191002_181700-360:localhost:8800!Ue)Q ]&$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7sm.room.message!SrMQpDMFREKRMELwbL:localhost:8800&m&m&@anon-20191002_181700-360:localhost:8800!Te)Q ]%$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wm.room.message!SrMQpDMFREKRMELwbL:localhost:8800%m$m$%@anon-20191002_181700-360:localhost:8800!Se)Q ]$$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzcm.room.message!SrMQpDMFREKRMELwbL:localhost:8800$m"_m"h@anon-20191002_181700-360:localhost:8800!Re)Q ]#$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800#memj@anon-20191002_181700-360:localhost:8800!Qe)Q ]"$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czysm.room.message!SrMQpDMFREKRMELwbL:localhost:8800"mcmj@anon-20191002_181700-360:localhost:8800!Pe)Q ]!$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800!mhmt@anon-20191002_181700-360:localhost:8800!Oe)Q ] $E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4cm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 mtm@anon-20191002_181700-360:localhost:8800!Ne)Q ]$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktUm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Me)Q ]$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeom.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Le)Q ]$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEgm.room.message!SrMQpDMFREKRMELwbL:localhost:8800m;mA@anon-20191002_181700-360:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XHP@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@#K"J!I!H!G FEDCBA@?>=<;:987654 3 2 1 0 / .-,+*)('&%$#"!      B~A}@|?{?z>y=x<w;v:u:t9s8r7q6p5o5n4m3l2k1j0i0h0g0f0e0d0c0b0a0`0_0^0]0\0[0Z/Y.X-W,V+U+T*S)R(Q'P&O&N%M$L~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*~)}(|'{&z%y$x#w"v!u tsrqqq  u_HeQw$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "320", "stream_ordering": 2003}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 26"}, "depth": 36, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042225247, "hashes": {"sha256": "KFxzGe+PagxzOivXw6wINsixpfKXbkgqq2T9smS16vw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aza/XCCPQoKwlytU1oLXLR18TDInNnrBwyPUU1Gn5KfqpP6nJR/t6tlJXKke6N1K3NynAbV4rGyxVDVaqOIQBQ"}}, "unsigned": {"age_ts": 1570042225247}}GeQw$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "319", "stream_ordering": 2002}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 25"}, "depth": 35, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042224485, "hashes": {"sha256": "ZtCS/ygWX4HQKP7qR886l+utoET6/YpK/F+y4kKztpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zzTe17dQ5PBEJtdVoizkRPF/RKiWJG7aUkiELNBQmt6A3So9ptTXCyDHPcIY64T7ESWshKM1sO3gqnjoSMg7DQ"}}, "unsigned": {"age_ts": 1570042224485}}FeQw$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "318", "stream_ordering": 2001}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 24"}, "depth": 34, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042223971, "hashes": {"sha256": "nSsvtbiaVcsnYXyEzw8zQzMuv05FIFK3oqRFu2LbF94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EuiP8PMNuHosYQoYKNlX0WOU4Ybl4U2t034wb8XOfNnbDwsmNGRGgQf0+O+KDzDbUoLcWisZCMuyLKdjrPyfDA"}}, "unsigned": {"age_ts": 1570042223971}}EeQw$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "317", "stream_ordering": 2000}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 23"}, "depth": 33, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042223464, "hashes": {"sha256": "/T10dTFEngpQUScWvNgHUdPZvd9dju82Ij99Z8CZZBs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m/BrbFYwyQgL2mMT2Ljv/CdHTV2qCj9Q9Htv5w+RW/hmPY7kYX05F6MvmIxaJwTL3gIx6+Bz1FNLPZSM6x1RCg"}}, "unsigned": {"age_ts": 1570042223464}} -RM H C > 9 4/*|%w rmhc T'Qe!aknLNLxfChlLvFYhkJ:localhost:8800$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4T&Qe!aknLNLxfChlLvFYhkJ:localhost:8800$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYT%Qe!aknLNLxfChlLvFYhkJ:localhost:8800$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5QT$Qe!aknLNLxfChlLvFYhkJ:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosT#Qe!aknLNLxfChlLvFYhkJ:localhost:8800$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4XwT"Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gT!Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sT Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkTQe!HWTlaNxUKnDsrtlOxU:localhost:8800$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MITQe!HWTlaNxUKnDsrtlOxU:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMTQe!HWTlaNxUKnDsrtlOxU:localhost:8800$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgTQe!pUSFAnuwUuMlbiInDR:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsTQe!pUSFAnuwUuMlbiInDR:localhost:8800$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkTQe!pUSFAnuwUuMlbiInDR:localhost:8800$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYTQe!pUSFAnuwUuMlbiInDR:localhost:8800$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0roTQe!pUSFAnuwUuMlbiInDR:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GETQe!pUSFAnuwUuMlbiInDR:localhost:8800$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5kTQe!SrMQpDMFREKRMELwbL:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4TQe!SrMQpDMFREKRMELwbL:localhost:8800$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-oTQe!SrMQpDMFREKRMELwbL:localhost:8800$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecTQe!SrMQpDMFREKRMELwbL:localhost:8800$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0TQe!SrMQpDMFREKRMELwbL:localhost:8800$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4CgTQe!SrMQpDMFREKRMELwbL:localhost:8800$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8TQe!SrMQpDMFREKRMELwbL:localhost:8800$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyETQe!SrMQpDMFREKRMELwbL:localhost:8800$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85sTQe!SrMQpDMFREKRMELwbL:localhost:8800$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMoT Qe!SrMQpDMFREKRMELwbL:localhost:8800$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwT Qe!SrMQpDMFREKRMELwbL:localhost:8800$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYT Qe!SrMQpDMFREKRMELwbL:localhost:8800$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8T Qe!SrMQpDMFREKRMELwbL:localhost:8800$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQT Qe!SrMQpDMFREKRMELwbL:localhost:8800$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWATQe!SrMQpDMFREKRMELwbL:localhost:8800$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15VcTQe!SrMQpDMFREKRMELwbL:localhost:8800$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMTQe!SrMQpDMFREKRMELwbL:localhost:8800$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8TQe!SrMQpDMFREKRMELwbL:localhost:8800$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwTQe!SrMQpDMFREKRMELwbL:localhost:8800$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQTQe!SrMQpDMFREKRMELwbL:localhost:8800$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNoTQe!SrMQpDMFREKRMELwbL:localhost:8800$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94TQe!SrMQpDMFREKRMELwbL:localhost:8800$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwTQe!SrMQpDMFREKRMELwbL:localhost:8800$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxsTQe!SrMQpDMFREKRMELwbL:localhost:8800$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7sT~Qe!SrMQpDMFREKRMELwbL:localhost:8800$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wT}Qe!SrMQpDMFREKRMELwbL:localhost:8800$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7FzcT|Qe!SrMQpDMFREKRMELwbL:localhost:8800$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIT{Qe!SrMQpDMFREKRMELwbL:localhost:8800$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1~e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901}e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1|e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1{e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01ze$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1ye$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1xe$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1we$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1ve$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1ue$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41te$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1se$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1re$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1qe$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1pe$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1oe$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901ne$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1me$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01le$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901ke$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1je$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1ie$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1he$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41ge$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1fe$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41ee$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81de$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1ce$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41be$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1ae$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1`e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1_e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1^e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1]e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1\e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1[e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1Ze$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1Ye$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1Xe$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1We$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1Ve$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1Ue$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1Te$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1Se$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k1Re$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41Qe$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1Pe$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1Oe$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01Ne$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1Me$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81Le$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1Ke$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1Je$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1Ie$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1He$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY1Ge$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81Fe$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1Ee$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1De$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1Ce$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1Be$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt81Ae$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1@e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1?e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1>e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941=e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1<e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1;e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1:e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w19e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc18e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI ;;B02 n  3ldtctal7vtcpfb5hdyo0gow0wqyx425yaj 9crirqkfaA y0pptcfub fhgehoz8467*q4dtsnxlzfy0ldvj7bleqsmiu2wr73nccxld812bm8r2eadqxoh3kpla9Jyesyzy0fkecsuuxhH*udc5lsig5fkdmxkkmvyvymzh8u8mi6ouol4gcs2ocmDynmhjtlyzo5huobpouiJ1F Z20123457004179742oamxs 80045qtsue6789vlecf5y)cp1s8jpt8slvene3h4a3bz0cedzafcwbtunidbx1oeuuh5vmpi3judjk04mG jrumvjdjyznumxaoppvegi"rxvchwhenf6qbqrcwprhupb57ulegfwcjmZued0vjwdk2e17jldo>2F Z 20 123456789aBgffizwahmnlbt8y8bkzvapkfmqlgywxkctt4skigi5muac2f7cfvb9fsbu6sqrnulyqalowejaugad9q9ii30>20k@1v34mh23room 456789ag13l4xlxalqynckcebjqh4cxo8gzs8gia4 uos1lx8v4 mr9iaxwdew#s6zho83dojtbxlgblymhbvivtaa7yi7b8qs ummyjfpdyagyg4sfsmmalt4uk8qdq 'uthtvztq6nggvjepeo31e8zgrh0x2ojatgzvpem420123456789eom44k6fh7g5xfgwa84fokzjkS*kdi2lysmydo5d0rm1lv3wn6szvyfow0xfxlepentlaq4pylkokcrejsrn3cclolh*ta8hudezsiikfrf9xdijplsgmodnhlj9dcfexlxz1u5}202vrg #3x3bxyvwthclfckdfzg4t7emnrzyekxzebwscxqxn0hgw vdpzvkujxolfw z8iwxixj0t62*co7igwlusz7r1x90dcwvo6gkknpmk0leuucicutrrmeykymkxaqukfstgjlk1wzi1n4wj5dmdrm72*3gghj744ctthad8t5bmns6lcsfczscglmvg2jgorfo4yueics8bjqw ckgfibcxqiwwiql31ks4brd0su gw8txfxruiia k7rygwkwarmku  pgr4rdxnfczam0ayshnz7xygpqsr1vvb^r#*srnch2ak6681yuh0kzworh7lnbjhm2vmwdwkpon1x8ubtgrkB820z37yyxgjewwhb2q9cwcvpg1L800 *byd3eotqxz9vpvb44czyjxlcn3qaiwuctm68vvxe9w_cxiyvrmpfpgjlkno1x1gczbqb8cto6ah8gwahavfay2sbjijq8y5g0wweEtqehat7nlx9ol72kk~90jira768axmafswgz5mzwgdxkg7ujwmrwudruqfeew9a8pfccmzdahiooo4cup22lrdx9b604eqgjbnk17nds1iq# NN/b+9yev2bmpchaewtowlsgqvyexp6g438ry9bbb3hqmxye"zn1gmktjpxzito2nlhw09yqacjjlrh9ydba?1o1zvL2wv0cbid1iotcwtukl775drriez62elhu4sy4zudjnqhmaluq,6an0hwqpnmij8j7p99l09oljzf0)knymo9hxpyykac12aljpwlfric4o5hddpyid4qi1qqliqhxcer6zyx5i0vnosd9irbvb5w8 dtiqwvecjebt5b4hbucakd4arwqzdnaliyvrhpjs bh9blwi&cv!fmmtmw7zccqrvdlv81wntnhn1bmafcwm49terFL$*i11uy3jpee4oesgnqff2o1crdmn1ftgngr3vtwhy64 kgzvdqkloulssdrekipwa6desdyup1vlkhditb25m2tyawrffcreEsnlvixiejnrgjjsxavzyuivtwychh0t6)eqrydrmqzrrjuzxayc3yftnjsdyfqxgjl9bsut01swjosiujonovjkwejoxxszpgteioyv9fcubbh4dwqszlt05zqphryoo0fbnxrqn3q3i8bI0nrblB3gnN5)9dnnwfl6om8dbu1fq01kci5rlizy36vwqkyi6fylilackbropbwnfattgw4xxh2n5qodaslhdckfnwxctcsgencause forePIfefidbthhkweqfhir yto4=jfpwksbaekzifzrjnjht33gssf2scearjcciw=k38q9wqbjew7fc0v8hzs9uibou7 lamnjsnygpi7 f4h6urwezd70Ug3newmr3fhgh9nsxstadomhirypmzhody  1qhqpinslv14cuii7xrmssytliiwjxm1azezdYtwnmbadptdjsdglttrw7yc1yo2hnmpcs0afer0xw 4owoejfd4}8kqgmztyc0gagyfakmlran3rgurfy/an6used elulrto4gym4:gkvfpidybbxuxsszgt81kuaxhangesf86xnl8g0d8invckz67tclsi4'jc7xzm9fcw5rfmcvbknvqnbappicukygdk ndskztjjldiliv0vt2y2ornqxzdbmwjoavrlnneome  --P$content qasye9ravyy8yfqklqupsyakhxvdltcHuzaP!d1t1tkffpqbpwpsjiwik88kh2bwwtotbc%6^nzqbxse7ls3pvct6cagv 7k7cknc1emrtNludh8i*8uemfh26y33hlyexkfbz1z79qwyudoshzetkxofikmc14dqnknfdijcawnyaxp ebm5ef52o g4flti8ffiBl)6zmzbclk2lwc0lf1t9dulwski9aysi6gzikogo94i5nxuuJoesn izeradypbumzkaejwn pnc92qz2rrsm1mvzutdjxsGq@ty%vjubzkdzudx6neuosiatmtfcn1g9ixx3o6btawgotucbvqbkzjfndn\eabrjdyuyummhlswiajemxfrbhcs0v30w<fjcwhdjnarbuhyrqugbhibqoghlozzopolh;5xlzkhzng0jy4mrd0mqgu!iertacfzjjciokrpp TjNptugihvswaohikrc umhfcphwmnwvnjtxxmohzrmbpf3cfr960gaqxdc3pryestqrvyiaufda0luknjlzrbpdgtusiofikukho]s78qdxujma3fk1nenbinm4)nax3wwrtafygsb2qulig5ubti4vzs4djpxyl9netc.v7ugifsvetporxwrlbqxk87r7bkcent wkofeckhxlnyjuieb xtiyjvvybbzzujiq5cxs3fipk2u zcn97wgeimvfH3qtahtcynnp6yddijkr4k48qtihygod2c6psznhw9pivks5dpa8lkc7bpqayzfea$alrcdxtw4qu4yqd84gqjjj0>cdnyfwfyxmdpkaknc _ wlzuq0dvzy3Edjvbzwaafijtnpmbtrdxhqoxf iouvzpmhoerunvyyagrst jxiupbbollbhwmpgs5klhvucinffbdxunwv wpd1nlvu3khd2ch3 *l4nkelyhexunngx7jmtetyvmpqtyn2vmeqobyhklnmmcq8g)gp9a0sd7vti8tmjpf2gquanyvaspsbmbpul7sywq4+xmlvejzpnoe22mbg1i2hyrkorjUor,u2szw9vwt6rub4fuhludw3qe1gpcqchenebvdfvmonr Xqjh"s8dglbzjy45lophyydqyt5ilubrg4ivhxibkkrbzlucbvvfmmenbfpsn3haq6yjvjsostyogefwtm7fgrahiap&w5ykxqdtpzgdk7xfqxddhypa4xhihqsjc5li2q'ziffe56kpzwpvxco4zzqbzbi1fsnc4phwvywev3y8ddhi15cgaplxuyx8 o=gX 46zm0pnleancqoti48dfprnxpqelepoiq~5q 6nzowc|a*bgape8cvwallzew0tnuektgo6kkwodwg533ff4lobqQ*celfae5onyhmjhc0kbq1jnjzzoniamjts0fcosxyqgyy37y5mjt30xwyydmk66dnhw2subiczupk3xhgunbvxspvtpolahbl7 qmfrna2q4mf5xylhdvxqhqjprvac hmx2z6jiywupuimkmmv8&wuho8gg6ndnmw0mtvgz8zwrjmtfcv3hfywkwja;(wsysevg69zm5qhivwkkdhbbcybqtzavah1hpewxciv9gjm6qvfhd7p0oky7lhnoj2lxmu9nfel1kbfykbcspqy2wsuzwbs4x0tp0apbo3 qezawtcnygYscpnjarpzpegee8ejg9cxppjg4fhfzh`xogjsemqj63odptps?#ujm5kszcocfbcgj9q9b2ou6vldsswud1cbhCws3z3ihcx49jiztxhwL y8nmh1djwus4$h40zncdpgteew3cumjsh8jgcsnmd3vl3c6yw5gxmpxitjzjyfamwygrunzk0d8ilcchicpmtltj11ei7mxyog9beeidvbbzsca5jveh4auznt66cpg7simgemcrrlnlprojjrF uuhello3re#-&ggwg8fuxlhptffatm7vvi02zcavwyfhjblktrzPjywwwjwjngwrzoto Pje3swkxcawa977d13qhkltyAlgcvnhwboi69n1kgrbvktg1ceda*mekssorsrpkru4zblbj9bdfzjnt4mih2c1wfeogpiq nbncwg3oly0yEopyhzpckkrvsmdivx szbsirdpwhtvjagxn[ ts41qy6lt#uhx9shwxkw2s6v13swnbvugrxevjbzp38lc vrgehotfafucwhfbhizhtldnfhjiez0whyatwkfuznrqtiyunzijzgpshsgzumwus4u5a6gporjkmw$xkpafasozosd9syvmflch9esitmqslfkfj3mx84teoziMal7cnk8khcuyowrmenfgk9xxzbj econ7rc7j4eueldj4qdk8nrc4mthiaf2'y2nialzzfqww9j8oveiynsdk7qr3rp3uevibpsc6zqzprgqekpotxstvc yi 60d1cnld4okg4iqdzoyafg2qnk2ipnh0ogvgponwku$6bhxo2cm1fwozs36t*amrsvr1f0i7k6udljeg2bxtsmflgyrqjqxf83fgzzqpessy2nso4eepliaiwhymzgnq2jfqxhmnacssghvmjfimyyyzlhsoeyjbxbfnhquv1tkalg3eerui)jjrwdgymzat8bty6qt1zswd7wpmidkzftviayjrcumiczgkctjejbnbeypNrt06zmvyysku7vkglack7sj2cqnp9qtrwmqxdwkcvite2Qpymcbwcynizqdiiwv {sqtc$)uaggx1nisnhhmf5g6lkrb80tnwerwyo00bnvqd5mo*tdmsqpjmnapohibwsqscilqrmdtgxtudc)*y8mnh1ek2q2oynsr14elkpsqpge0r5ay6nj6n6exsq9yphb58ossuwyyej#2znacuylpnqvup1xfthrrxwcksgkcbo22gw)&b3uhhw9rlbumxknufwpw04xkahyo4w8jr0b9kaezwg9toxiucv2nrxq378muxud]fshvgndxkvqpxfxwbd jeexjozzgeeqpgx4mr)mksgjcjzsmoatzdjljg6k0qwd5cx9tdgglyc9x9ay*kwuvk3eczflgt9uxkveqhrhkscdx9obvcm9eclwxlk*lhv6igpt3cxlvde87zevprvyj1y2xu3r8yzm2xz1w8 m0wr9zj1ga4z)l21dcpbhsvt9qhqpbdrqyhftltcrtd3kt0ntv317ooinP  tzzvevpzsxjojyndebpowatlqewclscy6zlnkiqwuzhvsi85ouhbrxcrbcxyjnbnk9nc6mrjbwdoyynouwayqzqwukiyy1nihzfmvy0ovoqnwiy-kgeevujyngutqaowd mcudodmxugo9et9cqptspj6n8jpkj n0lbyzde4vk3ptpwdzdbbbxklonzk uw0x2nujkm wjgbtogezcqybuxfhxxkgqfkaeenftqjrx0a5qChgctbewmtggnpdox3muzalpmmmkqoqxus byy3qttmswyfgxts96pxro l5niubrilq7xzjbddpawaj01wsr4*8o0asa4utj4rbdgj1xoptc8mcrkwc5zwddeos4uaqc9lmcr)zskye0y5qtqycqp9bojhxqsrzhonlk1mzoc9f9agealcegflpjdlylykgc$wltiaptreojjso5vekjsyy3frvg8f3nnm5x72zkkgjramcv0wqa57z2cxop9cqeaveftI  *f3sedquljhcrixad8xv4osr8et5oidakeptvdwjwzi ieavtjy2rqldkufto 11L localhost peveX r0lpx13x8m)qlgkhtdr2ysfvec6rzxa04nt0g6fkar6nicfsrzwk scf0l1cd0d1zhbfhxpfy*vnoccrovhsq4ymmgrcmubtpbu1lcpzouo0g8xmvobym,|  0at7muinxw0rwo8]1J aeanbvx4ope2K3Lr1rmtwfqfxzfxjzhnvimbn8fxf5k p3hceqxrqm/ 9n5dxbc6hbhefvekc5fr2cc n6c6icrccoxAember   ssagems fzirinbaggrzvqauiZhln7iuerhsy3n4zgrvd2vhwe9g<ice-Zght yppsuuk&8cffsgemkpkqqchr6jnhizgwiaqhen2tubx83gqfe9hakshcf9azrwmsxpailcykpuondyl nkm7frdvonkeysEsmfsdliavklssanciA8tpLwclswwgdwcsivnvli^y&pk4oi6mtz13wyxvdhutbvxmbyqmw2rcbn5z9jyfzcrwgkttazimtwq366cuxn1I2M3i@7o0bwcameU0^c11cz4d4pvptqiooeplqej75xpksvhbcuLsnjwi8hsfv9stz-)dbplxrew2nqtziebnvnuvn4wraqofjpbreqqgvdco ew+fapegkjnudutavzolawkqvzkiwvecnreoc}'gr148bit9443gamcqdpmkl3vnmr5oajsvla3pt0h4nlsklnt8bzhbrnzdntowgotyzeprwaxrqvs km3kxe0ogwkqll8szumecstiogxqovox2ojzg7hqk9bwdamagjoqfhg37x4w qfdrmevgf8po#)lvldmyjnw4waucprga9ttswlrsrn717eyz8vrbnte"tE~ pdjmifsbviikvwbzd*qeragvxnatdjv6xjlrp3sgnzm47jrlisrdesidct9egavrmicpuvavjssy Rrfjz5amg3wvag5milbbust6yicmg1bqlnlpuwvduxfznihikyazIuladp0mufzkrdbfucmber  vuxdm7nyrnxzj387v4zsfyqmoWzjeta5ipg83hosyoiarmvg)oviy1ovwyo4bwgof05uztekdcdslzjnahnqjcgnzko2q44t5z3kwqlztbjnhovro5uhvuasfarw& JJ3jo6qdoxzsptfuzitggcv1v0hbdsbw)8mqbkxuccgyy3b2bxg9ezamr1sy8wmdcrtzgd8mbw{!9auu4ij8v4xeao1bnqbwwet2lo16xiokzaceddaiatpwycagub bjmmilblmewxbtccegdavowlhhjcmkklxfkhgthd3lced6qz8mh3j| guzqaea8kzf2v1dzbajsej0gh4ze7ci7*jrxg4jwq86k0zytp7tirpb9nvr5hj7sytlqdhwhjogOn )yfccdbag5ahj2c1gdphnritywucbmcxc5hbynvjpc rangutansEqdisxy5sh6xkwfgo6avynr1quavhlii*ymfdiz9gjktklbmf2qxtujtefcbtbu6vrnl5tpzon0+p2mcfsvbikw8yeed6ybu7j2mgshgpwcfp7bqishsxxw6rpurg4hwvpinbrhvausozy2jd6hogke65mntx8sost-fwerlevel6 qzmtvtecyqmzwkhvwre2esencehxhspcmwxzbswjl7iag4yivate_ublic`!okldvmu= waa1okjcx#t006ir2dxy0opv4yb2fdizg6mqtmm8x4gfi(*x9srli5orezaxx178y7mfbd0xykeosmawdycnhfjnuqbtb7wlvgd6yqelytvwjpvhtbarepgxpcezclntn9ecgticdubi91ue3txmeiqchcxub2j5kfdd@u2modpk9jerqthotaxcziuxxluvwa3pekseyepyvmul3hs0p7okb9q7epjwdikix4p f0pbonldqlo14)mymazh40jpw5axoz50gscohatvqbevewqo6ol06mmynS*gybbvnkm9c7rtaybjbgfc5izvwulcxb2vsbvjyw4ta)iei95alczaxyhhypvtcjym2nnujzzc17pufr1iqemTnfbwmwew0k0bfmqan65?vlnzyjvaqbg*mmwvlck2py7g2t5tdgbno8pfane2npnybn6a8lzipwokqoq zulkcjqey1yuyrkajxzrdlix9fxg3hnhfkv5Wxe5wqpiicwp6jzl4nuamol01xtv6cuy ykc9yi9jac68r8jacwvwqgnxbmkexpcnbaoz1egv smjzkqoxswd8xooomjgier8aqgzx1p1pl9n1inwSgziegc8ao8quuvvfrcx2cvkt05wm5oh2gczv3iwubmp6ur62b26wn8uqqg:zBiw3ahkbr) kqeuubwmffjy!jhsrzmwbqhlihudxt kgqdd0cqhswkql8nof3f3wvov5lexovkaqdmkwrrx8bwk5c2ujnsobpfd7qzmoqmozvz93jdssu5qcfvkmF(x  "puuis1lesgtn2ppnridfppplocsnwh8i4cXr6dxmw7uhpkhevmvwxismqqyue!s5vkc9tjwcys2btem725irooczh93rbxyyasd1l3'tmrtktchajhjnlgi9chxu17fe4fa0gx5t6ot7o0wxehagbx9fpuffbjv6pqbu1gpfheeujmuh0vd9iaihanxvwn60qfkkdwuuvbrftghdbolezm#zdrag1xpmzpmgcxp84cbvm8rz0oimemduhrsI2gxuialcjj2n4iftah4qmhfhc364nplsnosgdz3zg08xbeprlziulifnsfnmz4cKuckmhkpxk2eccnqquyfsxcuijilimwwmy d5oqw1hrepAn ecsb8rw4ftejgt6*fne8c3vclrer5x4keohmyhyyh7sk8docew07zpdvfaxbvacoujhzgwwepz sytauhcfosnfhfuvm hared2dyiu98navuxk3nh4ynxabnm8jykejt0ko6pwvgnipjiiwqpywno rmqpdmfrekrmelwbl)u55pHswc6fvc4fj3aict9vstteupNH*v5qxdgcp9iazewxkesevrvrx1biwxqurva1krenoba)dkmb8hbs01tysgannahm4tiwekpmrrwiyawnqkpwgkwealyonreuvqalp*xhgun4ayjjossx98oh6qt70oxyvxmxaxsjttqv0cou[ydkgsufeypt9vqliwyomcgiasnkpctbEnc t7zf4ekpfc0hhsafbpnit *2edbofriv78f4viryqu8bqcqfycmslej5usa5rfips*7ohhbaogv8tzgzpjetclhxjvgylvupd9hydlkz5tre1*drnafoygl9l1ylfwxewpaeydboktoykop7fokmfywcest-Ej 12ing heB) rough kybosi7wmlql8ly4ei1kjzpptqo7br469p8bso 6zqb7kbapourrcdxy2picE,trickle sulz02jw0xwhcb4zNu2pqvb7pghfuzfvfxrkjpg4rqgkhM8poxgreB*a95gdfb3ghhrm8g5azz1dy2riuctkrp0y9ksbmlspoittddkgdcwvrljsvp ebrvq0sokrt9mpm7iqmgck5yruk5ydbdi7u2hhvekvat4dvbhxm4ozsb9y3vfycsnphgpcmlz8kb HU Bc8 oDe:T)k@i> u J qF # }R' { P % y Ng<m w L ! dyuyekVzJH*Q!cidyuyekVzJHHvyomb:localhost:8800 7 7*Q!cidyuyekVzJHHvyomb:localhost:8800 6 6*Q!cidyuyekVzJHHvyomb:localhost:8800 5 5*Q!cidyuyekVzJHHvyomb:localhost:8800 4 4*Q!cidyuyekVzJHHvyomb:localhost:8800 3 3*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!cidyuyekVzJHHvyomb:localhost:8800 2 2*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ ^*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!csWEXfVEVxdviNvgAd:localhost:880033*Q!csWEXfVEVxdviNvgAd:localhost:880022*Q!csWEXfVEVxdviNvgAd:localhost:880011*Q!csWEXfVEVxdviNvgAd:localhost:880000*Q!csWEXfVEVxdviNvgAd:localhost:8800--*Q!csWEXfVEVxdviNvgAd:localhost:8800,,*Q!csWEXfVEVxdviNvgAd:localhost:8800***Q!csWEXfVEVxdviNvgAd:localhost:8800((*Q!csWEXfVEVxdviNvgAd:localhost:8800&&*Q!csWEXfVEVxdviNvgAd:localhost:8800##*Q!cSUQGmpIsSCBAVTOHo:localhost:8800yy*Q!cSUQGmpIsSCBAVTOHo:localhost:8800xx*Q!cSUQGmpIsSCBAVTOHo:localhost:8800ww*Q!cSUQGmpIsSCBAVTOHo:localhost:8800vv*Q!cSUQGmpIsSCBAVTOHo:localhost:8800uu*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!dnZVySJLGNtUKsSgXW:localhost:8800RR*Q!dnZVySJLGNtUKsSgXW:localhost:8800QQ*Q!dnZVySJLGNtUKsSgXW:localhost:8800PP*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] ]*Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ \*Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ [*Q!dBfASZrfiFeSKTjYJm:localhost:8800 Z Z*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!drnXStKXkNQkouqUAg:localhost:8800 C C*Q!dnZVySJLGNtUKsSgXW:localhost:8800UU*Q!dnZVySJLGNtUKsSgXW:localhost:8800TT*Q!dnZVySJLGNtUKsSgXW:localhost:8800SS*Q!dBfASZrfiFeSKTjYJm:localhost:8800 b b*Q!dBfASZrfiFeSKTjYJm:localhost:8800 a a*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ` `*Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ _*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800 t l d \ U | ME=6/'eeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:8800 2eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800eeQ$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800(eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84!DqxFmsXPclgGqpSwdy:localhost:8800 1eeQ$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800ӁeeQ$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800 ^eeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800]eeQ$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk!sPWVGnipjiiWQpywNO:localhost:88003eeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800 NeeQ$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800 eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800āeeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800TeeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800:eeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800>eeQ$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800eeeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800eeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800 eeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800NeeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800eeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800 g l[ l " } 4 DHX\l&{e3Q ]$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Qm.room.power_levels!aknLNLxfChlLvFYhkJ:localhost:8800mϟzmϠw@anon-20191002_181700-367:localhost:8800 ze'Q ]$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosm.room.member!aknLNLxfChlLvFYhkJ:localhost:8800mϝQmϝ@anon-20191002_181700-367:localhost:8800y e'Q  ]$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xwm.room.create!aknLNLxfChlLvFYhkJ:localhost:8800mϙmϙ@anon-20191002_181700-367:localhost:8800 xe'Q ]$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gm.room.member!HWTlaNxUKnDsrtlOxU:localhost:8800mϔUmϔ@anon-20191002_181700-365:localhost:8800,we?Q ]$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sm.room.history_visibility!HWTlaNxUKnDsrtlOxU:localhost:8800mώ;mϐ@anon-20191002_181700-365:localhost:8800$ve/Q ]$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkkm.room.join_rules!HWTlaNxUKnDsrtlOxU:localhost:8800mϊmϋ@anon-20191002_181700-365:localhost:8800&ue3Q ]$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MIm.room.power_levels!HWTlaNxUKnDsrtlOxU:localhost:8800mφ"mχ@anon-20191002_181700-365:localhost:8800 te'Q ]$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMm.room.member!HWTlaNxUKnDsrtlOxU:localhost:8800mσLmσ@anon-20191002_181700-365:localhost:8800s e'Q  ]$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgm.room.create!HWTlaNxUKnDsrtlOxU:localhost:8800mπlmπ@anon-20191002_181700-365:localhost:8800 re'Q ]$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ksm.room.member!pUSFAnuwUuMlbiInDR:localhost:8800mx>mx@anon-20191002_181700-363:localhost:8800,qe?Q ]$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkm.room.history_visibility!pUSFAnuwUuMlbiInDR:localhost:8800mo/mu@anon-20191002_181700-363:localhost:8800$pe/Q ]$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYm.room.join_rules!pUSFAnuwUuMlbiInDR:localhost:8800mlmm\@anon-20191002_181700-363:localhost:8800&oe3Q ]$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0rom.room.power_levels!pUSFAnuwUuMlbiInDR:localhost:8800mhmj@anon-20191002_181700-363:localhost:8800 ne'Q ]$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEm.room.member!pUSFAnuwUuMlbiInDR:localhost:8800mfqmf@anon-20191002_181700-363:localhost:8800m e'Q  ]$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5km.room.create!pUSFAnuwUuMlbiInDR:localhost:8800mb4mb@anon-20191002_181700-363:localhost:8800 le'Q ]=$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4m.room.member!SrMQpDMFREKRMELwbL:localhost:8800=mW4mW@anon-20191002_181700-361:localhost:8800!ke)Q ]<$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-om.room.message!SrMQpDMFREKRMELwbL:localhost:8800<mU@mUE@anon-20191002_181700-360:localhost:8800!je)Q ];$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecm.room.message!SrMQpDMFREKRMELwbL:localhost:8800;mSTmS]@anon-20191002_181700-360:localhost:8800!ie)Q ]:$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0m.room.message!SrMQpDMFREKRMELwbL:localhost:8800:mQmQ@anon-20191002_181700-360:localhost:8800!he)Q ]9$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cgm.room.message!SrMQpDMFREKRMELwbL:localhost:88009mO"mO,@anon-20191002_181700-360:localhost:8800!ge)Q ]8$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8m.room.message!SrMQpDMFREKRMELwbL:localhost:88008mLmL@anon-20191002_181700-360:localhost:8800!fe)Q ]7$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyEm.room.message!SrMQpDMFREKRMELwbL:localhost:88007mJJmJV@anon-20191002_181700-360:localhost:8800!ee)Q ]6$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85sm.room.message!SrMQpDMFREKRMELwbL:localhost:88006mGmG@anon-20191002_181700-360:localhost:8800!de)Q ]5$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMom.room.message!SrMQpDMFREKRMELwbL:localhost:88005mEmE@anon-20191002_181700-360:localhost:8800  u_\eQw$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "340", "stream_ordering": 2023}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 46"}, "depth": 56, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042236081, "hashes": {"sha256": "lMsdgjvCRZkjem2SCKUkj4MktH/U13tcyd8eZpA+HG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6f7NH1Wn1IJ/zpM8GL9DIfi5/h5M7OIQf7NwTMG8j0u4aKPHUIAPD2a3Tb82xnHuz0rdrmtzGPQ/whEZqkNxDA"}}, "unsigned": {"age_ts": 1570042236081}}[eQw$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "339", "stream_ordering": 2022}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 45", "msgtype": "m.text"}, "depth": 55, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042235466, "hashes": {"sha256": "xjtXQDGMpTJMHpc3m99zkJsFY1GaA/K7bl5Y2GgLbLc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O4Z30qRz2UQnD6v5dXxlBL3bJ3T4hALxTUL7DjyEDBQT3K3awCzQ2R3hclRAlr5gY0pPyoDhydKSBY3cp5ZZBw"}}, "unsigned": {"age_ts": 1570042235466}}ZeQw$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "338", "stream_ordering": 2021}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 44", "msgtype": "m.text"}, "depth": 54, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042234773, "hashes": {"sha256": "Drix3MRlgJ8+ZsszPVBGErWr9g+IFCU4q6VWDQmhVyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qx9LAv+jaJkCnuEmeBLgfwx5dQBx/C351pDFW9GxBzh2pm8azEux+KWGHw9S4/raIP6DCaTMwBhGWOt9ChDUDg"}}, "unsigned": {"age_ts": 1570042234773}}YeQw$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "337", "stream_ordering": 2020}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 43"}, "depth": 53, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042234280, "hashes": {"sha256": "7ZOdJ+FHQ+kzcweUr/YV6NhqHK1xuLO/R2kgm69DEXk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p0Ae/TJHzANHBKX2Xtzo5gPvh6R62YvkspPUtWKADfkRBlDY8LQwoGJo2dDyOInoTmjhEauOUyFwIsZ7+8PGAg"}}, "unsigned": {"age_ts": 1570042234280}} yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mu99mu~88mqe77mqg66ml55ml44mb33m_22m_11m_00m]9//mX..mX--mN,,mN++mK**mK ))mE((mE''mA&&mA%%m<$$m<##m7""m5J!!m1  m-nm)im&m$wm!mmBmm m mmmmpmmhmzmm  m  m  m  m  mѢmcmPmÈmϽmϻAmϸmϵmϲmϭmϪmϥomϢmϟzmϝQmϙmϔUmώ;mϊmφ"mσLmπlmx>mo/mlmhmfqmb4mW4mU@mSTmQmO"mLmJJmGmEmCmAm?m=}m;pm9m8m5m2m1?m/+m-5m*m(m&m$m"_memcmhmtmmm;mmm mmm)mfmmmm#WWm}VVm=UUm{TTm SSmRRmrQQmPPm{OOmNNm|MMmLLm*KKm3JJmBIImHHmoGGmԽFFm0EEmлKDDmвCCmЮeBBmШAAmУ@@mНm??mЌ">>mj==me<<my;;my::mmmmBmnmmm<mmZmmmmҮmm<msmmιmδmΰmήmΫmΩmΧmΥ4mΣm΢ mΠmΝmΛmΘmΖmΔmΒmΐ]m΍5m΋8mΉm·m΅"m΃m΀m{mumpmm4mhmemaTm^Cm\mZmYRmVmTmRmQ-mOZmM $$H l " F j  1^Jq*Pr+lAeQ%#$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800content.nameA room namej@eQ%$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800content.bodyMessage 3j?eQ%$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800content.bodyMessage 2j>eQ%$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk!BpTqIemsWFZIqTcgJO:localhost:8800content.bodyMessage 1l=eQ%#$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800content.nameA room namel<eQ%#$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800content.nameA room namej;eQ%$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 5j:eQ%$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 4j9eQ%$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 3j8eQ%$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 2j7eQ%$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 1l6eQ%#$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800content.nameA room nameg5eQ%$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs!CGckPHdSYcIocFvRAq:localhost:8800content.bodyhello2f4eQ%$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M!CGckPHdSYcIocFvRAq:localhost:8800content.bodyhellof3eQ%$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800content.bodyhellof2eQ%$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800content.bodyhellom1eQ%%$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800content.bodyTest messagef0eQ%$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800content.bodyhellof/eQ%$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800content.bodyhellog.eQ%$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA!NeYaCeYNFATCqlrlGT:localhost:8800content.bodysyncedg-eQ%$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800content.bodysyncedg,eQ%$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800content.bodybeforeb+eQ%$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800content.body1k*eQ%!$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 50k)eQ%!$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 49k(eQ%!$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 48k'eQ%!$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 47k&eQ%!$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 46k%eQ%!$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 45k$eQ%!$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 44k#eQ%!$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 43k"eQ%!$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 42k!eQ%!$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 41k eQ%!$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 40keQ%!$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 39keQ%!$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 38  u_XeQw$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "336", "stream_ordering": 2019}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 42", "msgtype": "m.text"}, "depth": 52, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042233823, "hashes": {"sha256": "iVOUEe5wCjU/x3OVQbA+l7beDkt0wFiY3ZiyI+Yz9i4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jde9syRvQ++L0WgOjngv+dbLVtcQ8vmx1nUyA8lV8tovz4cq65J3my31waXJiFPWplUTluRuAngU8x3K/qTdBQ"}}, "unsigned": {"age_ts": 1570042233823}}WeQw$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "335", "stream_ordering": 2018}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 41"}, "depth": 51, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042233288, "hashes": {"sha256": "JxTQn6ePvJg+WwHsYiUgDeLE0x1qiMYxuBgOSrSDTFw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AWAI6UdtIH4lFAJjadCqRks//IiHhUDfyyTl10s3ljlsQj0tQJjgO6PEUEQggUeM14cG8ig2B4+WUcEVIRzfDQ"}}, "unsigned": {"age_ts": 1570042233288}}VeQw$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "334", "stream_ordering": 2017}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 40"}, "depth": 50, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042232705, "hashes": {"sha256": "dRvWKVKaG06bY6sG5SASztiFPoWwm5ZnrBm1+rhwkzQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ridzb8KhFcmQ5bbRhm2uB2RYp0DyE6W+m1UNsZJ+onBi8aoDyvriBm1QgnWDmvt2uRqM0kKH0EWFEZwWL96FBg"}}, "unsigned": {"age_ts": 1570042232705}}UeQw$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "333", "stream_ordering": 2016}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 39", "msgtype": "m.text"}, "depth": 49, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042232189, "hashes": {"sha256": "arj8uDAzTo9lqo9rsSk2DokE6YFaGguMNTjyIZZQyZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0/gxqemGNYA+01s4oEpcBwt4iI7QEf+IP24+cPKZrPrbp6+fU6Jw0OiSg54uVxGSc4yDP0oEbqQuejYzNo7TAA"}}, "unsigned": {"age_ts": 1570042232189}} XDwE}K&p> w E  } K  R 28 X & ^ ,d^j8q? ,jR 1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg [1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 51e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU-1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI M1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo #1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc j1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo W1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII01e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI -1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk q1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk N1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4EJ1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoF1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3EP1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYT1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcD1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw o1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8H1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc31e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIr1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kP1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM{1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgy1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs [1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkD1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEn1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI71e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8,1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokf1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs[1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYQ1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM K1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD780e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8 1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgW1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIU1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc<1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos+1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A 1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 d1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI pL $h6*n< vuCj{I D>O | J  \V $  \ *b80 P  V HpWo1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4B1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo/1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk K1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 H1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMk1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q61e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI#1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMo1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mv1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUm1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIb1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cP1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIW1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI>1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE20e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4F1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4a1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkn1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ51e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gf1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo~1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIB1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAl1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY'1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkh1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI}1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw`1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q a1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w P1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo w1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ b1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew`d1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4j1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00X1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8L1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q t pL $h6*n< vuCj{I D>O | J  \V $  \ *b80 P  V HpWo1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4B1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo/1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk K1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 H1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMk1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q61e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI#1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMo1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mv1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUm1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIb1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cP1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIW1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI>1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE20e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4F1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4a1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkn1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ51e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gf1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo~1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIB1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAl1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY'1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkh1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI}1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw`1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q a1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w N1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo w1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ `1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew`d1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4d1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00R1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8F1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q t %\p+ M V s  F p&Sp C`3l"\Z~Q' Q '!bLWyXaXdvUhdSAooUz:localhost:8800m.room.create$1570043538369ozxqx:localhost:8800f}Q? Q &!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility$1570043536368agmuM:localhost:8800^|Q/ Q %!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules$1570043536367lvGLr:localhost:8800`{Q3 Q $!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levels$1570043535366hhblx:localhost:8800zQ']Q #!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800$1570043534365WVAkx:localhost:8800ZyQ' Q "!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.create$1570043533364iwqCT:localhost:8800gxQ'E3 !!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455$39:localhost:42455fwQ? Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility$1570043530362jRUtV:localhost:8800^vQ/ Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules$1570043529361Oytod:localhost:8800`uQ3 Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levels$1570043528360cetnZ:localhost:8800tQ']Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800$1570043527359ScxWW:localhost:8800ZsQ' Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.create$1570043527358wChxc:localhost:8800frQ? Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility$1570043525357VEfrE:localhost:8800^qQ/ Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules$1570043524356NlySy:localhost:8800`pQ3 Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levels$1570043523355SbJjm:localhost:8800oQ']Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800$1570043522354IAAap:localhost:8800ZnQ' Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.create$1570043521353geZrN:localhost:8800gmQ'E3 !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455$38:localhost:42455flQ? Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility$1570043518351Popej:localhost:8800^kQ/ Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules$1570043517350ncbDd:localhost:8800`jQ3 Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levels$1570043517349uVTMj:localhost:8800iQ']Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800$1570043516348vThZG:localhost:8800ZhQ' Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.create$1570043515347LGRKl:localhost:8800vgQ'EQ !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455$1570043506346EEQDj:localhost:8800ffQ? Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility$1570043504345DCjlJ:localhost:8800^eQ/ Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules$1570043503344dJwGF:localhost:8800`dQ3 Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels$1570043503343snlnn:localhost:8800cQ']Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800$1570043502342mVJmO:localhost:8800ZbQ' Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.create$1570043501341JmcnI:localhost:8800aQ'Ee !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620p`Q? e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibility$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gp_Q? e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibility$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEh^Q/ e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rules$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8h]Q/ e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rules$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Ej\Q3 e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levels$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQj[Q3 e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I ZQ']e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg y ~y_QQ} $1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "610", "stream_ordering": 3317}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043485338vbLwS:localhost:8800", {"sha256": "1/Q1593wH/R4spgkgsDjmFb3FQZ15BNPiTBy+K2OIP8"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 10 here", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "event_id": "$1570043486339YbYQQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043486304, "hashes": {"sha256": "0OKz6NuOqKsA966RsNiu0aN+eFIo2xZsvPaDa3heqdo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bhb6RqNQhTBM/sUDkealyUosOazCyAdLYdYtyCPUeqhxWjDJEDJZPAUrOoTt5zI5d86FfKp9etj/jTQs9fTODg"}}, "unsigned": {"age_ts": 1570043486304}}~^QQ{ $1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "609", "stream_ordering": 3316}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043484337ylFDA:localhost:8800", {"sha256": "pPpaAxhCwooReijBaY60WY3U+awlZ5XDkUJmEtONyDw"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 9 here", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "event_id": "$1570043485338vbLwS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043485713, "hashes": {"sha256": "mM5RdExl9TflBHU0eH9TV7Pp3SDHDQi7M9FzUsTnMoQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "148R6tY4ACyzR4jzBEiwaeS5Phg74GbGJRghICeeYHCql+CcfUTUxXSC7foEiU0VVJM/LYveAfjUTp/Yl9B1AA"}}, "unsigned": {"age_ts": 1570043485713}}~]QQ{ $1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "608", "stream_ordering": 3315}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043484336qKOPD:localhost:8800", {"sha256": "XwvlJ1Ce8aqNeNXdnJqo+prZAYnlClb7nE/2pLzIL+4"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 8 here", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "event_id": "$1570043484337ylFDA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043484952, "hashes": {"sha256": "HpOiXbNVmSnyEO2yw6MCc7DF8Hxf0+ZkR2uGfR8JtOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VRHwVMCNM7tClFffdODduB4VaRU5Pueeosoe7mudfUgUsrzGmySVhbBGxBlE8EENB9oLR8XQ2SQkq8Mh0TXKDQ"}}, "unsigned": {"age_ts": 1570043484952}}  u_`eQw$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "344", "stream_ordering": 2027}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 50", "msgtype": "m.text"}, "depth": 60, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042238272, "hashes": {"sha256": "i2fFFP5JLUQbkIGPzIykTYcDI2NjlS/9dUzrMlbmsZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bR6oslm1SjUxtmJzvoDJRKugwC4QrhdolVcggL2+3dXuSr5YmlH4yjITGoPQXP5CHU9lkHmeWf/DQRi1PTgXAA"}}, "unsigned": {"age_ts": 1570042238272}}_eQw$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "343", "stream_ordering": 2026}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 49"}, "depth": 59, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042237780, "hashes": {"sha256": "Xe7XlPmlt3fyNx+p/7wv7FmO+VYopjGzF3bNdO9M2TM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Yw4+e2NjiFPQzQj6Dri1AY34B2Yj9Sy2bstB9QtOpiIGFhHmu6tj+dm0ou3ud9yDSL6NZubCmhyFsnPeOkBcDA"}}, "unsigned": {"age_ts": 1570042237780}}^eQw$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "342", "stream_ordering": 2025}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 48"}, "depth": 58, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042237191, "hashes": {"sha256": "RxJkE6ZmXutL0/6EOLLXNyzaKVpvBNp2vD0y6iGHWYs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lmuJMRy3weCRpzrFUW1h1Y7hHFIMfHTo5UH8klHmy6URnLjQ3M+pxc/6JYL3XXZ3UYZSBZYCCk7oj1cwxgznBg"}}, "unsigned": {"age_ts": 1570042237191}}]eQw$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "341", "stream_ordering": 2024}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 47"}, "depth": 57, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042236706, "hashes": {"sha256": "ImVQiHsE52wUbAPElrt58ZE7lohaJonYYQWpANiywiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w9El2RgVXsN9RUstIcWXVcgzdQpNSn6T4g/ddNFLxYPkOAVRzw+8+0PKRl3GIppKtGadxRJmegkiZ95jtpKjDA"}}, "unsigned": {"age_ts": 1570042236706}} V c 6 U T'sF )uIh<[.{N!nA`3 r E  zLl? ^ 2  ~ R %Q,Q!cOFSwLSkxZECJMvjjZ:localhost:8800+Q !cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 +Q !cRbfhxZdPstEsPGPAu:localhost:8800 +Q!dBfASZrfiFeSKTjYJm:localhost:8800 ` `,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!csWEXfVEVxdviNvgAd:localhost:880033,Q!csWEXfVEVxdviNvgAd:localhost:880022,Q!csWEXfVEVxdviNvgAd:localhost:880011,Q!csWEXfVEVxdviNvgAd:localhost:880000,Q!csWEXfVEVxdviNvgAd:localhost:8800--,Q!csWEXfVEVxdviNvgAd:localhost:8800,,,Q!csWEXfVEVxdviNvgAd:localhost:8800**,Q!csWEXfVEVxdviNvgAd:localhost:8800((,Q!csWEXfVEVxdviNvgAd:localhost:8800&&+Q !csWEXfVEVxdviNvgAd:localhost:8800##,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800+Q !cosGKKhHvKaVukBCic:localhost:8800,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 +Q !coGyOAgYnlBZAqznax:localhost:8800 ,Q!cidyuyekVzJHHvyomb:localhost:8800 7 7,Q!cidyuyekVzJHHvyomb:localhost:8800 6 6,Q!cidyuyekVzJHHvyomb:localhost:8800 5 5,Q!cidyuyekVzJHHvyomb:localhost:8800 4 4,Q!cidyuyekVzJHHvyomb:localhost:8800 3 3+Q !cidyuyekVzJHHvyomb:localhost:8800 2 2,Q!cSUQGmpIsSCBAVTOHo:localhost:8800yy,Q!cSUQGmpIsSCBAVTOHo:localhost:8800xx,Q!cSUQGmpIsSCBAVTOHo:localhost:8800ww,Q!cSUQGmpIsSCBAVTOHo:localhost:8800vv+Q !cSUQGmpIsSCBAVTOHo:localhost:8800uu,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 LL,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 KK,Q!cHtqiAyCHEAoBIbCmL:localhost:8800JJ,Q!cHtqiAyCHEAoBIbCmL:localhost:8800II,Q!cHtqiAyCHEAoBIbCmL:localhost:8800HH,Q!cHtqiAyCHEAoBIbCmL:localhost:8800GG,Q!cHtqiAyCHEAoBIbCmL:localhost:8800FF.,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800+Q !cvXpMzcxNNhsNttxvt:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800+Q !dWgOTucBVQBKZjfndN:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800+Q !dUnULFLGtgaVdwHtnz:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800+Q !dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dBfASZrfiFeSKTjYJm:localhost:8800 b b,Q!dBfASZrfiFeSKTjYJm:localhost:8800 a a,Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ _,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ ^,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] ],Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ \,Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ [+Q !dBfASZrfiFeSKTjYJm:localhost:8800 Z Z V c 6 U T'sF )uIh<[.{N!nA`3 r E  zLl? ^ 2  ~ R %Q,Q!cOFSwLSkxZECJMvjjZ:localhost:8800+Q !cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 +Q !cRbfhxZdPstEsPGPAu:localhost:8800 +Q!dBfASZrfiFeSKTjYJm:localhost:8800 ` `,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!csWEXfVEVxdviNvgAd:localhost:880033,Q!csWEXfVEVxdviNvgAd:localhost:880022,Q!csWEXfVEVxdviNvgAd:localhost:880011,Q!csWEXfVEVxdviNvgAd:localhost:880000,Q!csWEXfVEVxdviNvgAd:localhost:8800--,Q!csWEXfVEVxdviNvgAd:localhost:8800,,,Q!csWEXfVEVxdviNvgAd:localhost:8800**,Q!csWEXfVEVxdviNvgAd:localhost:8800((,Q!csWEXfVEVxdviNvgAd:localhost:8800&&+Q !csWEXfVEVxdviNvgAd:localhost:8800##,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800+Q !cosGKKhHvKaVukBCic:localhost:8800,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 +Q !coGyOAgYnlBZAqznax:localhost:8800 ,Q!cidyuyekVzJHHvyomb:localhost:8800 7 7,Q!cidyuyekVzJHHvyomb:localhost:8800 6 6,Q!cidyuyekVzJHHvyomb:localhost:8800 5 5,Q!cidyuyekVzJHHvyomb:localhost:8800 4 4,Q!cidyuyekVzJHHvyomb:localhost:8800 3 3+Q !cidyuyekVzJHHvyomb:localhost:8800 2 2,Q!cSUQGmpIsSCBAVTOHo:localhost:8800yy,Q!cSUQGmpIsSCBAVTOHo:localhost:8800xx,Q!cSUQGmpIsSCBAVTOHo:localhost:8800ww,Q!cSUQGmpIsSCBAVTOHo:localhost:8800vv+Q !cSUQGmpIsSCBAVTOHo:localhost:8800uu,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 LL,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 KK,Q!cHtqiAyCHEAoBIbCmL:localhost:8800JJ,Q!cHtqiAyCHEAoBIbCmL:localhost:8800II,Q!cHtqiAyCHEAoBIbCmL:localhost:8800HH,Q!cHtqiAyCHEAoBIbCmL:localhost:8800GG,Q!cHtqiAyCHEAoBIbCmL:localhost:8800FF.,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800+Q !cvXpMzcxNNhsNttxvt:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800+Q !dWgOTucBVQBKZjfndN:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800+Q !dUnULFLGtgaVdwHtnz:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800+Q !dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dBfASZrfiFeSKTjYJm:localhost:8800 b b,Q!dBfASZrfiFeSKTjYJm:localhost:8800 a a,Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ _,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ ^,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] ],Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ \,Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ [+Q !dBfASZrfiFeSKTjYJm:localhost:8800 Z Z J_ ~ v J  R P  >  V $ | \ * b1 , iL8&q8?X pxF D | 1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcq1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo(1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8M1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 21e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4O1e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 v1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk ^1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 N1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwE1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4=0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk21e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc]0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT431e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksT1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s:1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0>1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4e1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU (1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8M1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8K1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAm1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIa1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw ]1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcjd1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo g1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM <1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw '1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1d1e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEN !q | 4 ? D h sx6;_joigQ3 e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.power_levels$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4 fQ']e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoceQ' e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.create$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI dQ']e!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYocQ? e!fkvdYkesQOFCAQkzky:localhost:8800m.room.history_visibility$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAgbQ/ e!fkvdYkesQOFCAQkzky:localhost:8800m.room.join_rules$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44AiaQ3 e!fkvdYkesQOFCAQkzky:localhost:8800m.room.power_levels$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490 `Q']e!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gc_Q' e!fkvdYkesQOFCAQkzky:localhost:8800m.room.create$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0 ^Q']e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90o]Q? e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.history_visibility$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAg\Q/ e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.join_rules$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEi[Q3 e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.power_levels$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4 ZQ']e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EcYQ' e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.create$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4oXQ? e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibility$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4gWQ/ e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rules$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYiVQ3 e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q UQ']e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXoscTQ' e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw SQ']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4goRQ? e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibility$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sgQQ/ e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rules$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkiPQ3 e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI OQ']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMcNQ' e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg MQ']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsoLQ? e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibility$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkgKQ/ e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rules$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYiJQ3 e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro IQ']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEcHQ' e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k GQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4  | kdeQac$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2031}{"auth_events": ["$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "type": "m.room.power_levels", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"users": {"@anon-20191002_181700-363:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042243319, "hashes": {"sha256": "7wxd+B5pW1FRhlj0xkgldvb+UiCAq091O4UxAN3mQQk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YLhYxRPKlZU81laq8h2MnTszQcmlMw9akDtmmZCOrNX8zKZXkdZ/STA4X/XInPNnJRdrdo7YJjZG8uXM8/viBw"}}, "unsigned": {"age_ts": 1570042243319}}vceQay$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2030}{"auth_events": ["$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k"], "prev_events": ["$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k"], "type": "m.room.member", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-363", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-363:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042242673, "hashes": {"sha256": "/R4qHusA3btIkCkcLr/+kSwHZmVoog/oxCxTkw2c4rE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oS1fR8MnZ7nTNZCkZfSCKIlZfaMAfpxqI/70VF8MRtB4dM3/RYnWPzlI6hub53qOSVe7n7owsoKkJ2Gil5hrCw"}}, "unsigned": {"age_ts": 1570042242673}}ibeQa_$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2029}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-363:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042241588, "hashes": {"sha256": "ZuaxpnYOv7wJUXOSQ1Qt1So9Tk44yzZ6d2ZgWbcfl5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jcBb+iBng8UB8TOjf9HrjMW29gJxiUe+6I96I7RVSWe2fvWy5+LowM4GFcHqdzbM0FvWhv1NY1AHA1/hg6neCQ"}}, "unsigned": {"age_ts": 1570042241588}}aeQa?$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 378, "stream_ordering": 2028}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "prev_events": ["$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-361:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-361", "avatar_url": null}, "depth": 61, "prev_state": [], "state_key": "@anon-20191002_181700-361:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042238772, "hashes": {"sha256": "hFxrVJ+uMxbOpogeZyPMo0Tw1q2jTSvqq29FyPj3NAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uzlo026Of8/KsCQ7e9PnVS+D15/M8kcnXOYWGT9xS4lSbslXuMc1WPhv1/PdsxI20BWRs7UjZBHH+pam264/Dg"}}, "unsigned": {"age_ts": 1570042238772, "replaces_state": "$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk"}} 7P x 0 X  K  > f Fp(n&Nv.V~6^>E/]=@anon-20191002_181700-403:localhost:8800anon-20191002_181700-403E.]=@anon-20191002_181700-401:localhost:8800anon-20191002_181700-401E-]=@anon-20191002_181700-400:localhost:8800anon-20191002_181700-400E,]=@anon-20191002_181700-399:localhost:8800anon-20191002_181700-399E+]=@anon-20191002_181700-398:localhost:8800anon-20191002_181700-398E*]=@anon-20191002_181700-397:localhost:8800anon-20191002_181700-397E)]=@anon-20191002_181700-395:localhost:8800anon-20191002_181700-395E(]=@anon-20191002_181700-394:localhost:8800anon-20191002_181700-394E']=@anon-20191002_181700-393:localhost:8800anon-20191002_181700-393E&]=@anon-20191002_181700-392:localhost:8800anon-20191002_181700-392E%]=@anon-20191002_181700-391:localhost:8800anon-20191002_181700-391E$]=@anon-20191002_181700-390:localhost:8800anon-20191002_181700-390E#]=@anon-20191002_181700-389:localhost:8800anon-20191002_181700-389E"]=@anon-20191002_181700-388:localhost:8800anon-20191002_181700-388E!]=@anon-20191002_181700-387:localhost:8800anon-20191002_181700-387E ]=@anon-20191002_181700-386:localhost:8800anon-20191002_181700-386E]=@anon-20191002_181700-384:localhost:8800anon-20191002_181700-384E]=@anon-20191002_181700-383:localhost:8800anon-20191002_181700-383E]=@anon-20191002_181700-382:localhost:8800anon-20191002_181700-382E]=@anon-20191002_181700-380:localhost:8800anon-20191002_181700-380E]=@anon-20191002_181700-379:localhost:8800anon-20191002_181700-379E]=@anon-20191002_181700-378:localhost:8800anon-20191002_181700-378E]=@anon-20191002_181700-376:localhost:8800anon-20191002_181700-376E]=@anon-20191002_181700-375:localhost:8800anon-20191002_181700-375E]=@anon-20191002_181700-374:localhost:8800anon-20191002_181700-374E]=@anon-20191002_181700-373:localhost:8800anon-20191002_181700-373E]=@anon-20191002_181700-362:localhost:8800anon-20191002_181700-362E]=@anon-20191002_181700-360:localhost:8800anon-20191002_181700-360E]=@anon-20191002_181700-358:localhost:8800anon-20191002_181700-358E]=@anon-20191002_181700-359:localhost:8800anon-20191002_181700-359E ]=@anon-20191002_181700-357:localhost:8800anon-20191002_181700-357E ]=@anon-20191002_181700-355:localhost:8800anon-20191002_181700-355E ]=@anon-20191002_181700-356:localhost:8800anon-20191002_181700-356E ]=@anon-20191002_181700-354:localhost:8800anon-20191002_181700-354E ]=@anon-20191002_181700-352:localhost:8800anon-20191002_181700-352E]=@anon-20191002_181700-351:localhost:8800anon-20191002_181700-351E]=@anon-20191002_181700-350:localhost:8800anon-20191002_181700-3502]@anon-20191002_181700-349:localhost:8800boris2]@anon-20191002_181700-348:localhost:8800borisE]=@anon-20191002_181700-347:localhost:8800anon-20191002_181700-347E]=@anon-20191002_181700-346:localhost:8800anon-20191002_181700-346E]=@anon-20191002_181700-345:localhost:8800anon-20191002_181700-345E]=@anon-20191002_181700-343:localhost:8800anon-20191002_181700-343E]=@anon-20191002_181700-344:localhost:8829anon-20191002_181700-344E]=@anon-20191002_181700-342:localhost:8800anon-20191002_181700-342E~]=@anon-20191002_181700-341:localhost:8800anon-20191002_181700-341E}]=@anon-20191002_181700-339:localhost:8800anon-20191002_181700-339E|]=@anon-20191002_181700-340:localhost:8829anon-20191002_181700-340E{]=@anon-20191002_181700-338:localhost:8800anon-20191002_181700-338Ez]=@anon-20191002_181700-337:localhost:8800anon-20191002_181700-337Ey]=@anon-20191002_181700-336:localhost:8800anon-20191002_181700-336E]=@anon-20191002_181700-367:localhost:8800anon-20191002_181700-367E]=@anon-20191002_181700-365:localhost:8800anon-20191002_181700-365E]=@anon-20191002_181700-363:localhost:8800anon-20191002_181700-363E]=@anon-20191002_181700-361:localhost:8800anon-20191002_181700-361 L " 5Lk eQac$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2070}{"auth_events": ["$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "type": "m.room.power_levels", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"users": {"@anon-20191002_181700-371:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042284561, "hashes": {"sha256": "ACCKy7AdDl/TaTJ96bZYfycTR7Gjb+yFsm4cg1lzaIw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sk2fbSsTGu0Kwnr+IVgDdTxFHBwhVdEqx0xi5bLhSjrCmJl9Of1Acvve1lwb+oqBL8oA7GMJVaC8eoJgq/p9DA"}}, "unsigned": {"age_ts": 1570042284561}}v eQay$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2069}{"auth_events": ["$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU"], "prev_events": ["$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU"], "type": "m.room.member", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-371", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-371:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042284031, "hashes": {"sha256": "bvTMlwTDDV9lxpHtlpRMlqkFtrnTn0PfAcLg6Gp91gA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MKGaeeZ98Gylc2zeqWANrRguLo0LYIW5DwEcOJbCuom2jcIqI61bohJOSRmW830MtClduFOkPTugsRphz1d5Cg"}}, "unsigned": {"age_ts": 1570042284031}}i eQa_$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2068}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-371:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042283260, "hashes": {"sha256": "5nyYkj0wRSZePL/u1m7okRNQaGOvaAP7IZaNmqAP9H4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+28vunXmVlE9Yyi3gd9nAMYT+tIww5nKW3fswdHtNXPTDMMTyCx1010S6fm8Efxgc4pfmYcJ3zJt3N03utciCg"}}, "unsigned": {"age_ts": 1570042283260}}ZeQaA$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2067}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk"], "type": "m.room.member", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-370:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042281500, "hashes": {"sha256": "sQkKyOALfY5Ck3KG1V+yE9hQo3XU2mKUAKdxCzujv7A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HWRkIML674KI3ofQgHys67dw0+pttdv4Pk79WW4w0uW64ltOsJGwHGKL8pKdQLqWSw4pkLUzQm1ILT7Hgg0ZAQ"}}, "unsigned": {"age_ts": 1570042281500, "replaces_state": "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"}} y fyiheQa_$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2035}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-365:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042249324, "hashes": {"sha256": "F8RUCAGot2cT7zkshA1iRVpjIckZw5knLOlYFzw03QA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "naGgvK7OVkbw6nVZtfypnsWtAkZLaMtxAX68zhzzeeJmeKkSKqXJNhakuj0K0Zo+QoT7I9OG4G3FkRxTiNjsCw"}}, "unsigned": {"age_ts": 1570042249324}}geQa7$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2034}{"auth_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro", "$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk"], "type": "m.room.member", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-364", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-364:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042247230, "hashes": {"sha256": "YJgJnNROm00vw8USSHzuWMdSMIiAb0Kde30bwNKo4jM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fAqWYz2rCUKx3PT+49uz7ZOExx/VucOjViz/Jo0tY8ZjgfPPB+LAzTMP49Y7WGnN6Dqo85oziIO7/loVsiy3Cg"}}, "unsigned": {"age_ts": 1570042247230, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-363:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-363:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-363", "avatar_url": null}, "sender": "@anon-20191002_181700-363:localhost:8800"}]}}feQa$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2033}{"auth_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro", "$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY"], "type": "m.room.history_visibility", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042244911, "hashes": {"sha256": "VI/1pxuoBXpEMKVRwRpls1IEON1Fo5N+LkiT1aWkNOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+CF9YZiZa3K3csSxxhvm3U/HGSYUF6/q0MU7GgCLbw/DwhZElOPVMVyspiO1CxVJygy7IVRMJJIStGWt4NWtAA"}}, "unsigned": {"age_ts": 1570042244911}}teeQau$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2032}{"auth_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro", "$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro"], "type": "m.room.join_rules", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042244249, "hashes": {"sha256": "zaDCUOts97VI8PxknUr090s+mfGknKGc0omV+R8xBj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o1R31/7ufDyIyEtMd5hQAweUi+JEqdhTzVG351MofoIGzjGSnGe/0h0d6ICG0Rw7lLulNN0Hl0wU0nCL0GncBQ"}}, "unsigned": {"age_ts": 1570042244249}}  leQa$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2039}{"auth_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI", "$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk"], "type": "m.room.history_visibility", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042252859, "hashes": {"sha256": "bis7+UJ8UYK44OdXoc6U50Wz7zGPuEOQKAQIwjMX954"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E/Obo3mWHAzCQVLDSzSzRCt2jN0bU4V9CVNQKMfPPjRyVfJsseuIcGwIWLOtXJ+XZPy1MEMFIJaBr4hVNiEQBg"}}, "unsigned": {"age_ts": 1570042252859}}tkeQau$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2038}{"auth_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI", "$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI"], "type": "m.room.join_rules", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042252008, "hashes": {"sha256": "oYCEKhvOrR85TojRPTug/jEhKjZiBP1LXBGVdmN5T+Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BRcad8JBeBEqYmvbcWAj3sTXgwg0kx30QPmDo6csCNcrSNWxsNdvzA7UPK/+Z2GpiN2Ycn636X/peaAtQk/jCA"}}, "unsigned": {"age_ts": 1570042252008}}kjeQac$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2037}{"auth_events": ["$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "type": "m.room.power_levels", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"users": {"@anon-20191002_181700-365:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042250786, "hashes": {"sha256": "G+CaFPOgBIYtfoWWese4Veezf3aPkf8N+MUt88j2j/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LPdZh111h61+hYqK7vaB2t1Y7HhAIKdCVKOtPnySPh3N6RNCL+bSkjX9sWEPWqDaFpK6XLqNdSMsSWdGZCCaBg"}}, "unsigned": {"age_ts": 1570042250786}}vieQay$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2036}{"auth_events": ["$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg"], "prev_events": ["$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg"], "type": "m.room.member", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-365", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-365:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042250060, "hashes": {"sha256": "CHO1mqdxb7Sa1f7+mKxjODX4cjSywZlJEi4BfP3oV2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bsVdk1rWwRuXI4id1Svfi7x/Kjt9w4f9vspuCM6ecC/GBdMNu+ii6CBA+iXvlOrRz2MGYjOW48PlZSdMqgqaCQ"}}, "unsigned": {"age_ts": 1570042250060}}  4 h 9mfd]c@anon-20191002_181700-385:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwo127.0.0.1|d]c@anon-20191002_181700-393:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNFeF4sQUJaWVY3JkBwOXQKMDAyZnNpZ25hdHVyZSCWZXxHZjQTxOtAVnyUKA9idywM-AHyiS4-GrYtUx6zdAo127.0.0.1d]c@anon-20191002_181700-392:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1XI3RjVjo6QXR3Tjl4aEcKMDAyZnNpZ25hdHVyZSD2lW-Xgp8w5ukMnbPAV39B0bWFhYFL1jT6Wn_Ww0npIgo127.0.0.1d]c@anon-20191002_181700-391:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwqRHE3bH5-PVYyK2I0RCYKMDAyZnNpZ25hdHVyZSAEG-vFxynCIErZN0PU9O5i56FHtZEbxFuvsVBOwFxA1wo127.0.0.1d]c@anon-20191002_181700-390:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0ubU5jK1RtaWFBbHliVmcKMDAyZnNpZ25hdHVyZSDyfrDkklGvY9_vom0YlJRLBj1NQstwJXx13pdW6-MaMwo127.0.0.1a[a@anon-20191002_181700-38:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCg127.0.0.1d]c@anon-20191002_181700-389:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHp6Z0EwUm80KitaMkpETXcKMDAyZnNpZ25hdHVyZSBlsB49JvXxCyMk6o6fapIVQCnBcva45QBGYmtS5BKKBAo127.0.0.1d]c@anon-20191002_181700-388:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF95VU5hemV6fmJedmtMaFgKMDAyZnNpZ25hdHVyZSDz7FxYpShuVIV36DhvtTaitY3TlWlv68YskuY-1Ot6Qwo127.0.0.1d]c@anon-20191002_181700-387:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlia0JtQkBmV3VPS09kanUKMDAyZnNpZ25hdHVyZSCHeSHljZsgNpyA0gvbQbkJ8-4G5t4Ywq-t7geng7Ih6Qo127.0.0.1d]c@anon-20191002_181700-386:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9Fc0wuMl8xM1c4YW1CREgKMDAyZnNpZ25hdHVyZSA3WuGT1fvmgWAOhsMNpgmzTj0NDM9yJnvO3x46JsV22Qo127.0.0.1~ 8l D `8r]c!E@anon-20191002_181700-374:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAoAEAOAEZYHY127.0.0.1Perl + Net::Async::HTTP/0.44m;|q]c!E@anon-20191002_181700-373:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-BwoLNMPGJNAVZ127.0.0.1Perl + Net::Async::HTTP/0.44m!%p]c!E@anon-20191002_181700-372:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgoADGVRBGQNM127.0.0.1Perl + Net::Async::HTTP/0.44mo]c!E@anon-20191002_181700-371:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQoMVADRLDOGO127.0.0.1Perl + Net::Async::HTTP/0.44mSn]c!E@anon-20191002_181700-370:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9goSBQUDYTSCJ127.0.0.1Perl + Net::Async::HTTP/0.44mcm]c!E@anon-20191002_181700-369:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0woPMLSUBDYRA127.0.0.1Perl + Net::Async::HTTP/0.44mxl]c!E@anon-20191002_181700-368:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-QoOXEBNZFASJ127.0.0.1Perl + Net::Async::HTTP/0.44mϱk]c!E@anon-20191002_181700-367:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1EwoYMOZJNEHXT127.0.0.1Perl + Net::Async::HTTP/0.44mϘj]c!E@anon-20191002_181700-365:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_goGEIVTPEZWO127.0.0.1Perl + Net::Async::HTTP/0.44m~i]c!E@anon-20191002_181700-366:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5AoFABJQITKMR127.0.0.1Perl + Net::Async::HTTP/0.44m~ ~z v r n j fb^ZVRNJFWeeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800VeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800UeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800TeeQ$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800SeeQ$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800ReeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk!hDAzBWYEyRVBRlrCHh:localhost:8800QeeQ$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800PeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800OeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800NeeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800MeeQ$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800LeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800KeeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800JeeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800IeeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800HeeQ$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800GeeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak!OWGKxAmTrHLciIdrJi:localhost:8800FeeQ$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800EeeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800DeeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800CeeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800BeeQ$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800AeeQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA!aknLNLxfChlLvFYhkJ:localhost:8800@eeQ$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800?eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800>eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800=eeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800<eeQ$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800;eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800:eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800 -RM H C > 9 4/*|%w rmhc TmQe!csWEXfVEVxdviNvgAd:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4TlQe!rQeYcODvQiLsOIbQrJ:localhost:8800$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUTkQe!csWEXfVEVxdviNvgAd:localhost:8800$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQTjQe!aHyAJEOSdKqTiRjOvw:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wTiQe!aHyAJEOSdKqTiRjOvw:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0ThQe!aHyAJEOSdKqTiRjOvw:localhost:8800$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcTgQe!aHyAJEOSdKqTiRjOvw:localhost:8800$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4QcTfQe!aHyAJEOSdKqTiRjOvw:localhost:8800$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8TeQe!aHyAJEOSdKqTiRjOvw:localhost:8800$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsTdQe!aHyAJEOSdKqTiRjOvw:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYTcQe!aHyAJEOSdKqTiRjOvw:localhost:8800$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiITbQe!hnQOBexFYpvJntEChZ:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8TaQe!hnQOBexFYpvJntEChZ:localhost:8800$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgT`Qe!hnQOBexFYpvJntEChZ:localhost:8800$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90T_Qe!hnQOBexFYpvJntEChZ:localhost:8800$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwT^Qe!hnQOBexFYpvJntEChZ:localhost:8800$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwT]Qe!hnQOBexFYpvJntEChZ:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0T\Qe!hnQOBexFYpvJntEChZ:localhost:8800$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUT[Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53ETZQe!hDAzBWYEyRVBRlrCHh:localhost:8800$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3ETYQe!hDAzBWYEyRVBRlrCHh:localhost:8800$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkTXQe!hDAzBWYEyRVBRlrCHh:localhost:8800$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4TWQe!hDAzBWYEyRVBRlrCHh:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoTVQe!hDAzBWYEyRVBRlrCHh:localhost:8800$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiITUQe!fkvdYkesQOFCAQkzky:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYTTQe!fkvdYkesQOFCAQkzky:localhost:8800$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPATSQe!fkvdYkesQOFCAQkzky:localhost:8800$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44ATRQe!fkvdYkesQOFCAQkzky:localhost:8800$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490TQQe!fkvdYkesQOFCAQkzky:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gTPQe!fkvdYkesQOFCAQkzky:localhost:8800$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0TOQe!OWGKxAmTrHLciIdrJi:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90TNQe!OWGKxAmTrHLciIdrJi:localhost:8800$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBATMQe!OWGKxAmTrHLciIdrJi:localhost:8800$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMETLQe!OWGKxAmTrHLciIdrJi:localhost:8800$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4TKQe!OWGKxAmTrHLciIdrJi:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4ETJQe!OWGKxAmTrHLciIdrJi:localhost:8800$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4TIQe!aknLNLxfChlLvFYhkJ:localhost:8800$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4THQe!aknLNLxfChlLvFYhkJ:localhost:8800$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYTGQe!aknLNLxfChlLvFYhkJ:localhost:8800$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5QTFQe!aknLNLxfChlLvFYhkJ:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosTEQe!aknLNLxfChlLvFYhkJ:localhost:8800$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4XwTDQe!HWTlaNxUKnDsrtlOxU:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gTCQe!HWTlaNxUKnDsrtlOxU:localhost:8800$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sTBQe!HWTlaNxUKnDsrtlOxU:localhost:8800$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkTAQe!HWTlaNxUKnDsrtlOxU:localhost:8800$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI  gzvoeQay$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2042}{"auth_events": ["$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw"], "prev_events": ["$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw"], "type": "m.room.member", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-367", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-367:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042256721, "hashes": {"sha256": "eP4OC47BeHHO+/xUk2i+E+xMuYsP8Jx3iDTWMtVIqaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QaZKRtkLLb93fb6hKPZJES7sfsGWCtx4iVk4d24tO60WVX8rQS4I694OapKvPkfLmSs6+qro9MH3nZxIf3u3Bw"}}, "unsigned": {"age_ts": 1570042256721}}ineQa_$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2041}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-367:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042255764, "hashes": {"sha256": "4mKt7kDo3ObOebwvrWA8vpsJqvcmsspJdrZHxecuiGc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jLPu5Dynt7DCSwbQd9+5k/Pehj5T05KtZGdwNzpIn3WL07ftEUpdxhIylPQIQRO0RgqdHtP+80imA+P5kQDZAg"}}, "unsigned": {"age_ts": 1570042255764}}meQa7$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2040}{"auth_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI", "$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s"], "type": "m.room.member", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-366", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-366:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042254421, "hashes": {"sha256": "c+zJlUVKub/+1gfhU8NzsDyT4T/O4HneBRWh25zt44k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XLbEAdX1zTZBRVnrtZZpD9hajnCwgH/zz4Zl7cZWDjpa+9ZFFysVhq6oy0E7cfp9g6J/62bRCnSY3mxR1PRUCw"}}, "unsigned": {"age_ts": 1570042254421, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-365:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-365:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-365", "avatar_url": null}, "sender": "@anon-20191002_181700-365:localhost:8800"}]}} [<uC{IOV$  Q ) W % ] +c1 i7 o= [ ~j:r@ x F [21e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE .1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg p K31e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw`1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMX1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E 1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsM1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawO1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 O1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP81e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o *1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84g1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekl1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Ip1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4/1e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA L1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIc1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwv1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY'1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ91e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs81e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIe1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wi1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk F1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g x1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo J7p 2 DTOJ,E e]]Q$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg@anon-20191002_181700-377:localhost:8800@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800leaveCD e]]Q=$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI@anon-20191002_181700-377:localhost:8800@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800joinanon-20191002_181700-377CC e]]Q=$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM@anon-20191002_181700-376:localhost:8800@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800joinanon-20191002_181700-376CB e]]Q=$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc@anon-20191002_181700-375:localhost:8800@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800joinanon-20191002_181700-375CA e]]Q=$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0@anon-20191002_181700-375:localhost:8800@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800joinanon-20191002_181700-375,@ e]]Q$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800leaveC? e]]Q=$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800joinanon-20191002_181700-374C> e]]Q=$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800joinanon-20191002_181700-374,= e]]Q$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w@anon-20191002_181700-372:localhost:8800@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800leaveE< e]]Q=$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0@anon-20191002_181700-372:localhost:8800@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800inviteanon-20191002_181700-372C; e]]Q=$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY@anon-20191002_181700-373:localhost:8800@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800joinanon-20191002_181700-373,: e]]Q$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8@anon-20191002_181700-371:localhost:8800@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800leaveC9 e]]Q=$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0@anon-20191002_181700-371:localhost:8800@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800joinanon-20191002_181700-371,8 e]]Q$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E@anon-20191002_181700-370:localhost:8800@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800leaveC7 e]]Q=$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo@anon-20191002_181700-370:localhost:8800@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800joinanon-20191002_181700-370,6 e]]Q$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY@anon-20191002_181700-369:localhost:8800@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800leaveC5 e]]Q=$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g@anon-20191002_181700-369:localhost:8800@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800joinanon-20191002_181700-369,4 e]]Q$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90@anon-20191002_181700-368:localhost:8800@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800leaveC3 e]]Q=$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E@anon-20191002_181700-368:localhost:8800@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800joinanon-20191002_181700-368C2 e]]Q=$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos@anon-20191002_181700-367:localhost:8800@anon-20191002_181700-367:localhost:8800!aknLNLxfChlLvFYhkJ:localhost:8800joinanon-20191002_181700-367E1 e]]Q=$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g@anon-20191002_181700-366:localhost:8800@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800inviteanon-20191002_181700-366 ih5i g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNFeF4sQUJaWVY3JkBwOXQKMDAyZnNpZ25hdHVyZSCWZXxHZjQTxOtAVnyUKA9idywM-AHyiS4-GrYtUx6zdAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1XI3RjVjo6QXR3Tjl4aEcKMDAyZnNpZ25hdHVyZSD2lW-Xgp8w5ukMnbPAV39B0bWFhYFL1jT6Wn_Ww0npIgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwqRHE3bH5-PVYyK2I0RCYKMDAyZnNpZ25hdHVyZSAEG-vFxynCIErZN0PU9O5i56FHtZEbxFuvsVBOwFxA1wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0ubU5jK1RtaWFBbHliVmcKMDAyZnNpZ25hdHVyZSDyfrDkklGvY9_vom0YlJRLBj1NQstwJXx13pdW6-MaMwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHp6Z0EwUm80KitaMkpETXcKMDAyZnNpZ25hdHVyZSBlsB49JvXxCyMk6o6fapIVQCnBcva45QBGYmtS5BKKBAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF95VU5hemV6fmJedmtMaFgKMDAyZnNpZ25hdHVyZSDz7FxYpShuVIV36DhvtTaitY3TlWlv68YskuY-1Ot6Qwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlia0JtQkBmV3VPS09kanUKMDAyZnNpZ25hdHVyZSCHeSHljZsgNpyA0gvbQbkJ8-4G5t4Ywq-t7geng7Ih6Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ7MzBOJnJ4MjdkRlY4TH4KMDAyZnNpZ25hdHVyZSDEWdLU6ypMTjm7IoIQyEblzSvLEBWgti22-K26eYOJfwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQo g * T~=gg]!c@anon-20191002_181700-377:localhost:8800IARUZBQDWZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggog]!c@anon-20191002_181700-375:localhost:8800ABNAUGMGBUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAog]!c@anon-20191002_181700-376:localhost:8800IDKHLQVFRNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgog~]!c@anon-20191002_181700-374:localhost:8800AEAOAEZYHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAog}]!c@anon-20191002_181700-372:localhost:8800ADGVRBGQNMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgog|]!c@anon-20191002_181700-373:localhost:8800LNMPGJNAVZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-Bwog{]!c@anon-20191002_181700-371:localhost:8800MVADRLDOGOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQogz]!c@anon-20191002_181700-370:localhost:8800SBQUDYTSCJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9gogy]!c@anon-20191002_181700-369:localhost:8800PMLSUBDYRAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0wogx]!c@anon-20191002_181700-368:localhost:8800OXEBNZFASJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-Qogw]!c@anon-20191002_181700-367:localhost:8800YMOZJNEHXTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1Ewo n 9 3 > l 31o- 7T 7 7 geeQ3 $e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levelsij ceQ']$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800joinda`eQ' $gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800m.room.create_eQ']$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800leavem^eQ? $u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibilitye]eQ/ $dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rulesg\eQ3 $yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels [eQ']$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800joinaZeQ' $D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create 7mAeQ? $RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibilitye@eQ/ $b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rulesg?eQ3 $ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels >eQ']$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800joina=eQ' $nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create<eQ']$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800invitem;eQ? $x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibilitye:eQ/ $MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rulesg9eQ3 $d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels 8eQ']$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800joina7eQ' $FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create 2d  / % C a,Jh3Qo n ]@anon-20191002_181700-386:localhost:8800@anon-20191002_181700-386:localhost:8800 anon-20191002_181700-386n]@anon-20191002_181700-384:localhost:8800@anon-20191002_181700-384:localhost:8800 anon-20191002_181700-384n]@anon-20191002_181700-383:localhost:8800@anon-20191002_181700-383:localhost:8800 anon-20191002_181700-383n]@anon-20191002_181700-382:localhost:8800@anon-20191002_181700-382:localhost:8800 anon-20191002_181700-382n]@anon-20191002_181700-380:localhost:8800@anon-20191002_181700-380:localhost:8800 anon-20191002_181700-380n]@anon-20191002_181700-379:localhost:8800@anon-20191002_181700-379:localhost:8800 anon-20191002_181700-379n]@anon-20191002_181700-378:localhost:8800@anon-20191002_181700-378:localhost:8800 anon-20191002_181700-378n]@anon-20191002_181700-376:localhost:8800@anon-20191002_181700-376:localhost:8800 anon-20191002_181700-376n]@anon-20191002_181700-375:localhost:8800@anon-20191002_181700-375:localhost:8800 anon-20191002_181700-375n]@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800 anon-20191002_181700-374n]@anon-20191002_181700-373:localhost:8800@anon-20191002_181700-373:localhost:8800 anon-20191002_181700-373n]@anon-20191002_181700-365:localhost:8800@anon-20191002_181700-365:localhost:8800 anon-20191002_181700-365n]@anon-20191002_181700-363:localhost:8800@anon-20191002_181700-363:localhost:8800 anon-20191002_181700-363n]@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800 anon-20191002_181700-361n]@anon-20191002_181700-362:localhost:8800@anon-20191002_181700-362:localhost:8800 anon-20191002_181700-362n]@anon-20191002_181700-360:localhost:8800@anon-20191002_181700-360:localhost:8800 anon-20191002_181700-360n]@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800 anon-20191002_181700-358n]@anon-20191002_181700-359:localhost:8800@anon-20191002_181700-359:localhost:8800 anon-20191002_181700-359n ]@anon-20191002_181700-357:localhost:8800@anon-20191002_181700-357:localhost:8800 anon-20191002_181700-357(n ]@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800 anon-20191002_181700-355n ]@anon-20191002_181700-356:localhost:8800@anon-20191002_181700-356:localhost:8800 anon-20191002_181700-356n ]@anon-20191002_181700-354:localhost:8800@anon-20191002_181700-354:localhost:8800 anon-20191002_181700-354n ]@anon-20191002_181700-352:localhost:8800@anon-20191002_181700-352:localhost:8800 anon-20191002_181700-352n]@anon-20191002_181700-351:localhost:8800@anon-20191002_181700-351:localhost:8800 anon-20191002_181700-351n]@anon-20191002_181700-350:localhost:8800@anon-20191002_181700-350:localhost:8800 anon-20191002_181700-350Z]i@anon-20191002_181700-349:localhost:8800@anon-20191002_181700-349:localhost:8800 borisZ]i@anon-20191002_181700-348:localhost:8800@anon-20191002_181700-348:localhost:8800 borisn]@anon-20191002_181700-367:localhost:8800@anon-20191002_181700-367:localhost:8800 anon-20191002_181700-367 D DHseQa$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2046}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4"], "type": "m.room.test", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042260123, "hashes": {"sha256": "r/g8+rUZNU9sUVSjqj21x3BtwQRIIDtoiectA1w2u+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Sg77B7V7JByNP3NTV+Op3+MmZkx7GkEHX9/Kfs7vzbrJVH9kffuP2Ffo7hLEhmZEZvxTMD45nvNWi8ZCUqoAQ"}}, "unsigned": {"age_ts": 1570042260123}}reQa$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2045}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY"], "type": "m.room.history_visibility", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042258799, "hashes": {"sha256": "497WEF1x/Ca1jIo3OqzVRCNP3VDgCisRuFHorPf7ZoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EpTDG2mWffrcajMOLOGbD2eT+fUJ4eYVyHXpR/vbbs0Ijf9dko+yyjttepvjghDb1fTVLDSmf7mcbUfmaLLbAg"}}, "unsigned": {"age_ts": 1570042258799}}tqeQau$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2044}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q"], "type": "m.room.join_rules", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042258075, "hashes": {"sha256": "yPqV5U31X90DZuZybPECuB2KUeljxxvxcodMsRUw0gw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Em5rgFNoeWtSefhuc3q3VuMfsChQvH6+PuhbkHqdpLVUxqx3kwKM6Sjve6bgl65Tc+gtgNLVTPIoD6uyZ9gSDQ"}}, "unsigned": {"age_ts": 1570042258075}}kpeQac$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2043}{"auth_events": ["$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "type": "m.room.power_levels", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"users": {"@anon-20191002_181700-367:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042257274, "hashes": {"sha256": "b/9QNCDHGSg0KGPawzhtEd2PgmzzgRixAv89o68cumY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8F4YCDHgwwcWDaIwV17uv+OnMeL2jDfp8qn56Q9UkhCHGIGRN4t1btq36XCBd0gBsBdWhEG37DggSR61OeubDQ"}}, "unsigned": {"age_ts": 1570042257274}} a} { y w u sqomkigeca~CeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~BeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800~AeeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800~@eeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~?eeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800~>eeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800~=eeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~<eeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800~;eeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800~:eeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~9eeQ$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~8eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~7eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~6eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800~5eeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~4eeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~3eeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800~2eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~1eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~0eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800~/eeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~.eeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~-eeQ$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~,eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800~+eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800~*eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800~)eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800~(eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800~'eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800~&eeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800~%eeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800 V/x; n  s < _ "m&c[ [#P s 6 #yB(V^Q']!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829<Q3 !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levels6Q' !kOmCTyiizHqfCJdhlR:localhost:8800m.room.create?Q9 !kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_aliasEQ))!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800:Q/ !kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rulesBQ? !kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibility6Q' !kjjUsMowsioSQRIJeg:localhost:8800m.room.create C?Q9 !kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_alias FEQ))!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800 I<Q3 !kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels^Q']!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800^Q']!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800gBQ? !jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibility :Q/ !jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules <Q3 !jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels ^Q']!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800 6Q' !jlGSdNttccYxjfLkwW:localhost:8800m.room.create ^Q']!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800:Q/ !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rulesBQ? !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibility6Q' !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.create<Q3 !jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels[^Q']!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800Z:Q/ !jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rules\BQ? !jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibility]6Q' !jveVPZSXJOJyNDebPO:localhost:8800m.room.createY<Q3 !jomrpmwwQQtghscizn:localhost:8800m.room.power_levels ^Q']!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800 ^Q']!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800 :Q/ !jomrpmwwQQtghscizn:localhost:8800m.room.join_rules BQ? !jomrpmwwQQtghscizn:localhost:8800m.room.history_visibility 6Q' !jomrpmwwQQtghscizn:localhost:8800m.room.create ]Q'[!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800:Q/ !kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rulesBQ? !kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibility6Q' !kkgEEVUJynguTqAoWD:localhost:8800m.room.create<Q3 !kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels^Q']!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800:Q/ !kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rulesBQ? !kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibility6Q' !kjueCKHmYaYefEEpQY:localhost:8800m.room.create<Q3 !kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels E^Q']!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800 D^Q']!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800 J:Q/ !kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rules GBQ? !kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibility H YX a  q  w1;EOY e'Q ]$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Em.room.member!hDAzBWYEyRVBRlrCHh:localhost:8800mmz@anon-20191002_181700-370:localhost:8800e#Q ]$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkm.room.test!hDAzBWYEyRVBRlrCHh:localhost:8800mpmt@anon-20191002_181700-370:localhost:8800,e?Q ]$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3Em.room.history_visibility!hDAzBWYEyRVBRlrCHh:localhost:8800mm@anon-20191002_181700-370:localhost:8800$e/Q ]$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ckm.room.join_rules!hDAzBWYEyRVBRlrCHh:localhost:8800mhmR@anon-20191002_181700-370:localhost:8800&e3Q ]$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4m.room.power_levels!hDAzBWYEyRVBRlrCHh:localhost:8800mzm@anon-20191002_181700-370:localhost:8800 e'Q ]$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWom.room.member!hDAzBWYEyRVBRlrCHh:localhost:8800mm%@anon-20191002_181700-370:localhost:8800  e'Q  ]$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIm.room.create!hDAzBWYEyRVBRlrCHh:localhost:8800mm@anon-20191002_181700-370:localhost:8800 e'Q ]$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYm.room.member!fkvdYkesQOFCAQkzky:localhost:8800mm8@anon-20191002_181700-369:localhost:8800, e?Q ]$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAm.room.history_visibility!fkvdYkesQOFCAQkzky:localhost:8800mm@anon-20191002_181700-369:localhost:8800$ e/Q ]$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Am.room.join_rules!fkvdYkesQOFCAQkzky:localhost:8800mm@anon-20191002_181700-369:localhost:8800& e3Q ]$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490m.room.power_levels!fkvdYkesQOFCAQkzky:localhost:8800mm@anon-20191002_181700-369:localhost:8800 e'Q ]$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gm.room.member!fkvdYkesQOFCAQkzky:localhost:8800mѢmҪ@anon-20191002_181700-369:localhost:8800 e'Q  ]$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0m.room.create!fkvdYkesQOFCAQkzky:localhost:8800mcm@anon-20191002_181700-369:localhost:8800 e'Q ]$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90m.room.member!OWGKxAmTrHLciIdrJi:localhost:8800mPm@anon-20191002_181700-368:localhost:8800e#Q ]$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakm.room.test!OWGKxAmTrHLciIdrJi:localhost:8800mÈmÏ@anon-20191002_181700-368:localhost:8800,e?Q ]$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAm.room.history_visibility!OWGKxAmTrHLciIdrJi:localhost:8800mϽm~@anon-20191002_181700-368:localhost:8800$e/Q ]$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEm.room.join_rules!OWGKxAmTrHLciIdrJi:localhost:8800mϻAmϻ@anon-20191002_181700-368:localhost:8800&e3Q ]$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4m.room.power_levels!OWGKxAmTrHLciIdrJi:localhost:8800mϸmϹ@anon-20191002_181700-368:localhost:8800 e'Q ]$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4Em.room.member!OWGKxAmTrHLciIdrJi:localhost:8800mϵm϶h@anon-20191002_181700-368:localhost:8800 e'Q  ]$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4m.room.create!OWGKxAmTrHLciIdrJi:localhost:8800mϲmϳ/@anon-20191002_181700-368:localhost:8800!e)Q ]$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8m.room.message!aknLNLxfChlLvFYhkJ:localhost:8800mϭmϭ@anon-20191002_181700-367:localhost:8800~e#Q ]$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAm.room.test!aknLNLxfChlLvFYhkJ:localhost:8800mϪmϪ@anon-20191002_181700-367:localhost:8800,}e?Q ]$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4m.room.history_visibility!aknLNLxfChlLvFYhkJ:localhost:8800mϥomϧi@anon-20191002_181700-367:localhost:8800$|e/Q ]$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYm.room.join_rules!aknLNLxfChlLvFYhkJ:localhost:8800mϢmϣ@anon-20191002_181700-367:localhost:8800 -RM H C > 9 4/*|%w rmhc TTQe*!csWEXfVEVxdviNvgAd:localhost:8800$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYTSQe)!rQeYcODvQiLsOIbQrJ:localhost:8800$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8TRQe(!csWEXfVEVxdviNvgAd:localhost:8800$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUTQQe'!rQeYcODvQiLsOIbQrJ:localhost:8800$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0TPQe&!csWEXfVEVxdviNvgAd:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4TOQe%!rQeYcODvQiLsOIbQrJ:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsTNQe$!rQeYcODvQiLsOIbQrJ:localhost:8800$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUTMQe#!csWEXfVEVxdviNvgAd:localhost:8800$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQTLQe"!aHyAJEOSdKqTiRjOvw:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wTKQe!!aHyAJEOSdKqTiRjOvw:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0TJQe !aHyAJEOSdKqTiRjOvw:localhost:8800$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcTIQe!aHyAJEOSdKqTiRjOvw:localhost:8800$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4QcTHQe!aHyAJEOSdKqTiRjOvw:localhost:8800$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8TGQe!aHyAJEOSdKqTiRjOvw:localhost:8800$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsTFQe!aHyAJEOSdKqTiRjOvw:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYTEQe!aHyAJEOSdKqTiRjOvw:localhost:8800$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiITDQe!hnQOBexFYpvJntEChZ:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8TCQe!hnQOBexFYpvJntEChZ:localhost:8800$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgTBQe!hnQOBexFYpvJntEChZ:localhost:8800$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90TAQe!hnQOBexFYpvJntEChZ:localhost:8800$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwT@Qe!hnQOBexFYpvJntEChZ:localhost:8800$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwT?Qe!hnQOBexFYpvJntEChZ:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0T>Qe!hnQOBexFYpvJntEChZ:localhost:8800$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUT=Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53ET<Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkT;Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3ET:Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkT9Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4T8Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoT7Qe !hDAzBWYEyRVBRlrCHh:localhost:8800$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIT6Qe !fkvdYkesQOFCAQkzky:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYT5Qe !fkvdYkesQOFCAQkzky:localhost:8800$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAT4Qe !fkvdYkesQOFCAQkzky:localhost:8800$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44AT3Qe !fkvdYkesQOFCAQkzky:localhost:8800$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490T2Qe!fkvdYkesQOFCAQkzky:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gT1Qe!fkvdYkesQOFCAQkzky:localhost:8800$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0T0Qe!OWGKxAmTrHLciIdrJi:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90T/Qe!OWGKxAmTrHLciIdrJi:localhost:8800$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakT.Qe!OWGKxAmTrHLciIdrJi:localhost:8800$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAT-Qe!OWGKxAmTrHLciIdrJi:localhost:8800$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMET,Qe!OWGKxAmTrHLciIdrJi:localhost:8800$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4T+Qe!OWGKxAmTrHLciIdrJi:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4ET*Qe!OWGKxAmTrHLciIdrJi:localhost:8800$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4T)Qe!aknLNLxfChlLvFYhkJ:localhost:8800$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8T(Qe!aknLNLxfChlLvFYhkJ:localhost:8800$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA   kweQac$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2050}{"auth_events": ["$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "type": "m.room.power_levels", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"users": {"@anon-20191002_181700-368:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042263692, "hashes": {"sha256": "Bv3qN0JKUMApnjSPSfUOHb+S8I/dmU1McFyoye3SILw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Lv8IekwCJCr6mJWa/5mlcNPIwsYVuVdm5OZUT0YmX1gTkmd8u8tl+pkLnyN5xjB5n/40O6kFi0RpReexOS7Cw"}}, "unsigned": {"age_ts": 1570042263692}}vveQay$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2049}{"auth_events": ["$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4"], "prev_events": ["$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4"], "type": "m.room.member", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-368", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-368:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042263004, "hashes": {"sha256": "j8gyx64kcU7mhMief6Ug0W1tmGfbSZM6JFrhim78pew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RoYGyRax/FxLT+/iD0DzwftV417vc6e5DhOEmkza1pH7CHJqeaF6VX/uWaMNaZ2wlzdsW26AVpm5fFaJjvrjDw"}}, "unsigned": {"age_ts": 1570042263004}}iueQa_$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2048}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-368:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042262240, "hashes": {"sha256": "oFXe5poU1WMLrCDBheMqhK9nQRiELMo7Yz+Hj2e9Jqo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3YTSLdghsd9wU7GAIPP4wRuzobmsE1Xo3OB2BfX3brPbvkYMlAKhyw8FLwyuD9sR3dc9PE774jrhEpTle7DhCQ"}}, "unsigned": {"age_ts": 1570042262240}}}teQc$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "txn_id": "345", "stream_ordering": 2047}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA"], "type": "m.room.message", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042260924, "hashes": {"sha256": "kkfoMbDG2Q2I4N+qRVthZkmeu0zQCllW1qCNTILvhR4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AmR2iISGJNxxfKaEOO3jTWsGn6P7VGoVf/zow3p08O+qiPA/cAE/Ngf2NPDWDAeibjA/h4SbfGklecToPVpiBQ"}}, "unsigned": {"age_ts": 1570042260924}} ~z v r n h pw~ &tQ]O!jIfvTrwedrWLubsnlM:localhost:8800@anon-20191002_181700-303:localhost:8800$157004185679NNCIw:localhost:8800joinQ]e!KeqmSjifajNKxtgqhj:localhost:8800@anon-20191002_181700-303:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QjointQ]O!icheSPMgpemswIdQkw:localhost:8800@anon-20191002_181700-302:localhost:8800$157004184672SfwvS:localhost:8800joinQ]e!EyyNoldCLUdFHzXTDP:localhost:8800@anon-20191002_181700-302:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QjointQ]O!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:8800$157004183063NdEPw:localhost:8800joinQ]e!uSBqTezaFcMnlowsEf:localhost:8800@anon-20191002_181700-301:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwjointQ]O!NrxQuziwSWzsHuXIlG:localhost:8800@anon-20191002_181700-300:localhost:8800$157004181756ejZNp:localhost:8800joinQ]e!CNFopUEQTFbzjmLvii:localhost:8800@anon-20191002_181700-300:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AojointQ]O!WhqVaRReBxJXADAyYD:localhost:8800@anon-20191002_181700-299:localhost:8800$157004180448zlZXD:localhost:8800join Q]e!aLxrqpqLkbzyIxGgpk:localhost:8800@anon-20191002_181700-299:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYjoint Q]O!BfEFIDBthhkweqfhir:localhost:8800@anon-20191002_181700-298:localhost:8800$157004178835mLAyG:localhost:8800join Q]e!aaRwQZdNAliyvRHpjs:localhost:8800@anon-20191002_181700-298:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwjoint Q]O!ZShBIxwbJmxjjZmoRQ:localhost:8800@anon-20191002_181700-297:localhost:8800$157004176828ZZJWh:localhost:8800join Q]e!NNiyzThHMivrxhojfp:localhost:8800@anon-20191002_181700-297:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIjointQ]O!QFiJrWFFeTAAAUCjCE:localhost:8800@anon-20191002_181700-296:localhost:8800$157004175621DDceh:localhost:8800joinQ]e!KmuRTfGFgJdgIDAgIW:localhost:8800@anon-20191002_181700-296:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEjointQ]O!mOrKBPhetifKHDmElM:localhost:8800@anon-20191002_181700-295:localhost:8800$157004174414klNmS:localhost:8800joinQ]e!QyLUggxrTnULUAOseq:localhost:8800@anon-20191002_181700-295:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIjoinsQ]M!azRJNFPIRSFAskLILK:localhost:8800@anon-20191002_181700-294:localhost:8800$15700417327EEUMr:localhost:8800joinQ]e!MBWnwKRwFznvRpAzxr:localhost:8800@anon-20191002_181700-294:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4joinQ]e!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-293:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8leaveQ]e!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-292:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQojoinQ]e!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-291:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwjoinQ]e!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-290:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yjoin~Q]e!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-289:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwjoin}Q]e!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-288:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYjoin|Q]e!ffijTnPMbTrDXHqOXf:localhost:8800@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGojoin{Q]e!ffijTnPMbTrDXHqOXf:localhost:8800@anon-20191002_181700-286:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HojoinzQ]e!wLitJYvgvNJzanSIvO:localhost:8800@anon-20191002_181700-284:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMjoinyQ]e!hWHyATwKfuznrqTiyu:localhost:8800@anon-20191002_181700-283:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEjoinxQ]e!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-282:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkjoin ~z v p j d `ZTPG@:62wQ]e!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-281:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawjoinvQ]e!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-280:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwjoinuQ]e!jveVPZSXJOJyNDebPO:localhost:8800@anon-20191002_181700-279:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgjointQ]e!rJhSRzmWBQHlIhuDXT:localhost:8800@anon-20191002_181700-277:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owjoinsQ]e!fsbkkRBZlUcBVVfMME:localhost:8800@anon-20191002_181700-276:localhost:8800$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GcjoinrQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-274:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoleaveqQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-273:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMjoinpQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-275:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEinviteoQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-272:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQjoinnQ]e!RPfffkmSEbWggEjnoI:localhost:8800@anon-20191002_181700-270:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIinvitemQ]e!PCgUmZOwWmtDsuFqXg:localhost:8800@anon-20191002_181700-270:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YleavelQ]e!RPfffkmSEbWggEjnoI:localhost:8800@anon-20191002_181700-271:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYjoinkQ]e!nxLxsxzliamzflrEBs:localhost:8800@anon-20191002_181700-270:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cjoinjQ]e!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-267:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkleaveiQ]e!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-269:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7UjoinhQ]e!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-268:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36ojoingQ]e!KdOYYnOuwAyQzqwUki:localhost:8800@anon-20191002_181700-266:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUleavefQ]e!KdOYYnOuwAyQzqwUki:localhost:8800@anon-20191002_181700-265:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QjoineQ]e!XNfwczePlyYFWLCaui:localhost:8800@anon-20191002_181700-264:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzojoindQ]e!XNfwczePlyYFWLCaui:localhost:8800@anon-20191002_181700-263:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4joincQ]e!PQZMTVTeCYqMZwkHvW:localhost:8800@anon-20191002_181700-262:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAleavebQ]e!PQZMTVTeCYqMZwkHvW:localhost:8800@anon-20191002_181700-261:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7IjoinaQ]e!kpTPWDZdBbbXKLonZK:localhost:8800@anon-20191002_181700-260:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4leave`Q]e!kpTPWDZdBbbXKLonZK:localhost:8800@anon-20191002_181700-259:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0join_Q]e!ITdmSQpjMnaPoHIbws:localhost:8800@anon-20191002_181700-258:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwleave^Q]e!ITdmSQpjMnaPoHIbws:localhost:8800@anon-20191002_181700-257:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sjoin]Q]e!FAYqpziHeVZugCGaij:localhost:8800@anon-20191002_181700-254:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMjoin\Q]e!ZaOktTIVeRgBXxfubH:localhost:8800@anon-20191002_181700-253:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEjoin[Q]e!ZaOktTIVeRgBXxfubH:localhost:8800@anon-20191002_181700-252:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8joinZQ]e!ZaltdIYVZjCHsCWTZD:localhost:8800@anon-20191002_181700-251:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wjoin G0*k9r@   z I P  D  Q Y>$\ 'V  b 0 v b 0J| h 7 p1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw|1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk{1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Et1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOoS1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc;1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM41e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo~1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0{1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIz1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEkn1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIm1e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD41e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA0e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIU0e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc/1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoU1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoX1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI 1e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngC/e $wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgH0e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsW1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk61e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ50e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc0e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU>1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMY0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU0e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw0e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA[1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H41e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo0e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0T1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE*1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY |<5-t  l d \ T LD% |eeQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800 PeeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800 ӁeeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800meeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800/eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800veeQ$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800 ځeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800eeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800$eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800 ҁeeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck!vRmMcoJDeCupADwqac:localhost:8800 eeQ$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800݁eeQ$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800$eeQ$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800- KT( | J   P   V" $  \ *b0hj6n<  DtBzHNZ8 vp>  1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk f1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ 1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 Q1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8q1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y d1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU11e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMb1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIf1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ(1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMED1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIw1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gf1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY !1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM{1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsQ1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0b1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY21e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE X1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcS1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo/1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw01e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0,1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ d1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8F1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY/21e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g]1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY \1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQX1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oy1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo KT( | J   P   V" $  \ *b0hj6n<  DtBzHNZ8 vp>  1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk d1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ 1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 Q1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8q1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y d1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU11e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMb1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIf1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ(1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMED1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIw1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gf1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY !1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM{1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsQ1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0b1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY21e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE X1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcS1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo/1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw01e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0,1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ d1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8@1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY)21e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g]1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY Z1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQX1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oy1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo  Z{eQaA$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2054}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak"], "type": "m.room.member", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-368:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042267472, "hashes": {"sha256": "+SM7SMKmf2JEVG0JKRGPFczDK7EB6NSMSGeLD13iXiA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fokZvi0+tSsZXnSe2G0n7wfi5JAH3g93tHzcwbypP8fJREZbneVmYLHdBfkzOJ5WS4LPT0t88ajD9VxWR4O3Aw"}}, "unsigned": {"age_ts": 1570042267472, "replaces_state": "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"}}HzeQa$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2053}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA"], "type": "m.room.test", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042266504, "hashes": {"sha256": "8by1UtZrE5wGYneNYxWb0O+Kl4oEyd8lcouI/uQibjg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3s/20fBya7UKPyLqVPcUG26tCcyb17EX+HmHNPzSZgXEpD4SMOchQfNj07HUsCXnzIDcX6ziKCoZjiNg5bZ/BA"}}, "unsigned": {"age_ts": 1570042266504}}yeQa$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2052}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME"], "type": "m.room.history_visibility", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042265050, "hashes": {"sha256": "K6xWfnuDDhHkpgksRG8B41qOhzVUi8mJTn37vbAp1H0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rlH6KMfGa8orT4wpEXzCq+/EQkBnVgcuXoHAeQw4rVUQuXLUnrdxmOA9msmhpJ4eFnVSm+gEqGaYDggtb+mgAA"}}, "unsigned": {"age_ts": 1570042265050}}txeQau$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2051}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4"], "type": "m.room.join_rules", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042264385, "hashes": {"sha256": "mhiu0o09RmEobdsC8p8jxWIpFLgiT24uyQMAGXTrYUU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x4aNdcZl3bZrnFrEkcFqTVUQlRLepyeqtNfo/RLQg0lbUcmelJxzq7In2f74saKM44GinNjvd5wbRCd6sbo2CQ"}}, "unsigned": {"age_ts": 1570042264385}} ,NC 8 - { " p  e ZOD9.|#qf V$eL$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUsha256s:f.k ۝R̈<[ve~^V#eL$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYsha256 A 7$"asyot͉(t=ЦV"eL$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wsha256G"NQs;&ĶFh8AV!eL$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEsha256aʛfGH&v-y&y&dAV eL$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIsha256Trו2fS_X) TβVeL$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYsha256WDݗه/Gct2%I2Ʒ[Y&VeL$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8sha256vEVin6U2ۯ_ؗ9oVeL$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUsha256{! k ܊ ! i; *3VeL$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0sha256T. )I.\| ++`[ VeL$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4sha256_x^',R]1q3u*py&VeL$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtssha256+X!Jv& mw.ERvFB*VeL$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUsha256)JC/܈:_7 @VeL$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQsha256. S| ч=Pn3ji4VeL$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wsha256 q yK[b O .ҿEUJs7VeL$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0sha256=P$/nB 4~2ks@-VeL$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcsha256Q Vj`k;Wu$ TuݓVeL$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcsha256rɾ;KL^W@ FVeL$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8sha256t^SMoR2 /nʙT8@ʋgd_VeL$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSssha256iG|po&i9Cڨd+VeL$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYsha256 YSa_< V*WJVeL$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAsha256 Q)M5> h"EX&Fb0VeL$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Asha256PO3,~C|L˛ެɼ{4Y5-V~eL$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490sha256 ]@z%o\`4Qv 2V}eL$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gsha256  &+8>7Wͅ.o}V|eL$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0sha256͵%g>"[|,ޑͯ@g]V{eL$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90sha256<| ΗNq ޞ3K#VzeL$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebaksha256Ȕ,hs1"rRv kjf^mVyeL$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAsha256A|8Uz t3l 0X\ ` d  h  l  p t$(,0 48<Q{eQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800QzeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800|TQweQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800QxeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800QoeQ$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg!csWEXfVEVxdviNvgAd:localhost:8800QneQ$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk!csWEXfVEVxdviNvgAd:localhost:8800xTQmeQ$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI!csWEXfVEVxdviNvgAd:localhost:8800QbeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800Q]eQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800Q\eQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800Q[eQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800QZeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800QYeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800QXeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800QWeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800QVeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU!DnUHoxreGexNmjSVpq:localhost:8800QUeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo!DnUHoxreGexNmjSVpq:localhost:8800QTeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800Q|eQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800QSeQ$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY!CkNvQnbApPIcuKygDk:localhost:8800QReQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800QQeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI!aZwMKYDXJRlSKjQNWM:localhost:8800QPeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg!aZwMKYDXJRlSKjQNWM:localhost:8800QOeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM!aZwMKYDXJRlSKjQNWM:localhost:8800QNeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829QMeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg!mTlCLZQCmfDuQsJxxp:localhost:8800QLeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE!mTlCLZQCmfDuQsJxxp:localhost:8800QKeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0!mTlCLZQCmfDuQsJxxp:localhost:8800QJeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800QIeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829T   *teQau$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2058}{"auth_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490", "$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490"], "type": "m.room.join_rules", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042271710, "hashes": {"sha256": "wGf7NLV7gPhhSz/w1XNc+gV5KodxMNADxS7acZRXius"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gSXWIRsrPZuN4kxOWtGW+0IZ49fViCtu4aavA3o1Lg77tZ8z1Ye5+m5Xhy0N64GHRgSKb5F7H2AlJ/ScTc5MAA"}}, "unsigned": {"age_ts": 1570042271710}}k~eQac$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2057}{"auth_events": ["$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "type": "m.room.power_levels", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"users": {"@anon-20191002_181700-369:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042270935, "hashes": {"sha256": "j6OpBvQWNB9qwGORQg9fyyevZiBF9n5eviUlY44p4Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4JdKGlmjC04RprM13f1dWnEw2e2JKEwLfOJoWzmDzOzFz4rNBjy+e8sWSM/OM012DfOiC3qB+CxYkSOnhqpSCQ"}}, "unsigned": {"age_ts": 1570042270935}}v}eQay$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2056}{"auth_events": ["$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0"], "prev_events": ["$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0"], "type": "m.room.member", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-369", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-369:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042270114, "hashes": {"sha256": "lPIOIOXiAO8P/Pn1BH31HYmj0BcsntG1Q3mvTUM9IQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hyZ0h72gx4FwlxM4b+8IYX0r96/ZKP+RrcksemX2VjtRN06QkHYaQgBiUJ7WhLFk3Q65DMViB0MsN+9vA3QdCg"}}, "unsigned": {"age_ts": 1570042270114}}i|eQa_$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2055}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-369:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042269283, "hashes": {"sha256": "J7db1WNA7lNgPq7j3NjpuCA75B+eXir/Fcpc5N/dRLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DwqfE1xf6DH6bJwPJ5+vzByK7pf921K9kP/I206whGlYutn68KXoHMb7DtiFpz6DOGrrpvDYS2fKqafvpoz5BQ"}}, "unsigned": {"age_ts": 1570042269283}} "qs 1 @ I q !APY/AqeDeQ/ $V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800m.room.join_ruleseCeQ/ $dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.join_rulesgBeQ3 $e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levelsgAeQ3 $jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.power_levels @eQ']$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800 ?eQ']$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800a>eQ' $KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.createa=eQ' $gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800m.room.create <eQ']$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800 ;eQ']$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800m:eQ? $u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibilitym9eQ? $uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibilitye8eQ/ $dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rulesg7eQ3 $yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels 6eQ']$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800a5eQ' $D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create 4eQ']$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800m3eQ? $sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibilitym2eQ? $UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibilitye1eQ/ $v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800m.room.join_rulesg0eQ3 $N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800m.room.power_levels /eQ']$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800a.eQ' $sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800m.room.create -eQ']$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800m,eQ? $tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.history_visibilitye+eQ/ $FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.join_rulesg*eQ3 $dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.power_levels )eQ']$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800a(eQ' $CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.create 'eQ']$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800m&eQ? $DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800m.room.history_visibilitye%eQ/ $7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800m.room.join_rulesg$eQ3 $ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800m.room.power_levels #eQ']$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800 p% i  r  ' k  t )fi[8A <Q']e&!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4 ;Q']e%!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsd:Q' e$!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.create$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUd9Q' e#!csWEXfVEVxdviNvgAd:localhost:8800m.room.create$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ88Q']ee"!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0 7Q']e!!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC06Q? ee !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcp5Q? e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qch4Q/ e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rules$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8j3Q3 e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs 2Q']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYd1Q' e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI80Q']ee!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0/Q? ee!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90p.Q? e!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90h-Q/ e!hnQOBexFYpvJntEChZ:localhost:8800m.room.join_rules$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gwj,Q3 e!hnQOBexFYpvJntEChZ:localhost:8800m.room.power_levels$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw +Q']e!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0d*Q' e!hnQOBexFYpvJntEChZ:localhost:8800m.room.create$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU8)Q']ee!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWop(Q? e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.history_visibility$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3Eh'Q/ e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.join_rules$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ckj&Q3 e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.power_levels$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4 %Q']e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWod$Q' e !hDAzBWYEyRVBRlrCHh:localhost:8800m.room.create$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI8#Q']ee !fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gp"Q? e !fkvdYkesQOFCAQkzky:localhost:8800m.room.history_visibility$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAh!Q/ e !fkvdYkesQOFCAQkzky:localhost:8800m.room.join_rules$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Aj Q3 e !fkvdYkesQOFCAQkzky:localhost:8800m.room.power_levels$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490 Q']e!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g 2 w2veQay$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2062}{"auth_events": ["$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI"], "prev_events": ["$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI"], "type": "m.room.member", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-370", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-370:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042276788, "hashes": {"sha256": "X+2HILa5JTVwSnSTLh2zsmouQHUhonFHfOwfrK3WcNA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/Pi5byHJJe3XTVEhkEM9WLu76sQDTEVirjLIrHf5maDb92gyf89KRM9EyMYzRXra/9WpAl0MtFrcwnQ0Z7qmDw"}}, "unsigned": {"age_ts": 1570042276788}}ieQa_$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2061}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-370:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042276001, "hashes": {"sha256": "PeGL81tYF0Y7WYwdubB3DVOApWTM7Ldm3ht1TktIOEg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CI6Nc/ypxYuspvrLUMbNoIkwRwA5VyZLFj2YAojiCyRwhcEyXY4V0xqu9ZSO1tum/N6FgKCemSellaKyMU2oCQ"}}, "unsigned": {"age_ts": 1570042276001}}ZeQaA$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2060}{"auth_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490", "$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA"], "type": "m.room.member", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"membership": "leave"}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-369:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042274002, "hashes": {"sha256": "pTW1v/zTO5QYOIh8ELwE1g1jg5KALKmZzxoExoC2+j0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JAIzgW/AiEHBXkJYKBTxK8+7bW0Ospisqc76MzTxbekPpv/ekG2yzbM/5Uo9V2n68jIxTNmgpV96vVuJ/JsLBA"}}, "unsigned": {"age_ts": 1570042274002, "replaces_state": "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"}}eQa$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2059}{"auth_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490", "$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A"], "type": "m.room.history_visibility", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042272753, "hashes": {"sha256": "Tr93aAUH8tZ/qoYuHLOTRlO3tuMg3rolwWERctJmvVg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yO5PrGx/P76lUocmpQdParW7Y2a9w/knTZlQsoQ87ubQo67KN0V9YOWwHWrqcjlmLYs4+LAsopuP70/dBMZ5Dw"}}, "unsigned": {"age_ts": 1570042272753}} a} { y w u sqomkigeca~beeQ$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~aeeQ$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~`eeQ$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~_eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~^eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~]eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~\eeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~[eeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~ZeeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~YeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~XeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~WeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~VeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~UeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~TeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~SeeQ$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~ReeQ$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~QeeQ$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~PeeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~OeeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~NeeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800~MeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~LeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~KeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800~JeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~IeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~HeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800~GeeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~FeeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~EeeQ$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~DeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800 | lt - ME% d \>5 U eeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800 yeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800leeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800eeQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800EeeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800>eeQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800leeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y!iKezIvJyjkNqKayFju:localhost:8800 |eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800.eeQ$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800 eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800:eeQ$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800ʁeeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800eeQ$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:88000eeQ$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:8800eeQ$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800`eeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800ˁeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800<eeQ$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800leeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800 L D DHeQa$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2066}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E"], "type": "m.room.test", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042280816, "hashes": {"sha256": "yjRoSKv9UTwpM11SMrbYLJ+aOwwNuIZrexI1bPfPpc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rfeEGLjraNoplUfiKLy/hFT4hFZRcBczPU5wJmyXNQCxlO5QaBb0JCUWVOyesYFscZMMOlChgznVCO1RFQXCDw"}}, "unsigned": {"age_ts": 1570042280816}}eQa$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2065}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck"], "type": "m.room.history_visibility", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042279385, "hashes": {"sha256": "BRdsCVwUyYIxXfbekBvB9qvwVCLQcdBFFBfGWGRIkDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VrkTgSyHfHxDwbl6DjNfJnPstbjy54YyTjK0phBxYTlL7i9PpNz8MG6wCPrItt45S/cOs/nP/+YeONglzCQRCw"}}, "unsigned": {"age_ts": 1570042279385}}teQau$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2064}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4"], "type": "m.room.join_rules", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042278760, "hashes": {"sha256": "zTAFSq9oPQoYHg2xEBzlC+HZJZAWjoLAnKGk6reX5jw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zb13A5TC0L12iRaXSp6GGBF5WkrmgHGplcDYG4J8mZovItAdQDI+dIbOUSMWHLucYsndtEcUHKXG/lo9/6r+BA"}}, "unsigned": {"age_ts": 1570042278760}}keQac$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2063}{"auth_events": ["$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "type": "m.room.power_levels", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"users": {"@anon-20191002_181700-370:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042278010, "hashes": {"sha256": "qdvTpGiLeidhW8Sm4YyXahzssPuvgijfbAYylA4QpcI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kElVA55tytD/UwV5mmxB70VvQ9d7pkada2HhfsZj6Sr8Ilzq1MjTJyRkxdlE+lrFS1VBNwhr+GKInfiYi9xjAg"}}, "unsigned": {"age_ts": 1570042278010}} !$/ 4 X W b $/4^& Q']e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0 Q']e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSccQ' e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.create$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30scQ' e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.create$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y Q']e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUoQ? e!csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibility$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEoQ? e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.history_visibility$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIgQ/ e!csWEXfVEVxdviNvgAd:localhost:8800m.room.join_rules$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYgQ/ e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.join_rules$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8iQ3 e!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levels$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUi~Q3 e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.power_levels$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0 }Q']e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts |Q']e!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4c{Q' e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.create$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUczQ' e!csWEXfVEVxdviNvgAd:localhost:8800m.room.create$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ yQ']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w xQ']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0owQ? e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcovQ? e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4QcguQ/ e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rules$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8itQ3 e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs sQ']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYcrQ' e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI qQ']e!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8opQ? e!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgooQ? e!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90gnQ/ e!hnQOBexFYpvJntEChZ:localhost:8800m.room.join_rules$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwimQ3 e!hnQOBexFYpvJntEChZ:localhost:8800m.room.power_levels$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw lQ']e!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0ckQ' e!hnQOBexFYpvJntEChZ:localhost:8800m.room.create$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU jQ']e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53EoiQ? e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.history_visibility$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3EghQ/ e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.join_rules$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck ,Xg^ k x ' 4 A N [ hu$1>Kt#P]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800N[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800P]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800P]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800P]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800P]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800P]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800P]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800P]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800P]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800P]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800P]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800P]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800P]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800P]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800P]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800P]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800 D^ h  d  tl$<DD,+e?Q ]$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIm.room.history_visibility!rQeYcODvQiLsOIbQrJ:localhost:8800mNmP@anon-20191002_181700-374:localhost:8800$*e/Q ]$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYm.room.join_rules!csWEXfVEVxdviNvgAd:localhost:8800mKmL@anon-20191002_181700-374:localhost:8800$)e/Q ]$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8m.room.join_rules!rQeYcODvQiLsOIbQrJ:localhost:8800mK mL@anon-20191002_181700-374:localhost:8800&(e3Q ]$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUm.room.power_levels!csWEXfVEVxdviNvgAd:localhost:8800mEmIb@anon-20191002_181700-374:localhost:8800&'e3Q ]$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0m.room.power_levels!rQeYcODvQiLsOIbQrJ:localhost:8800mEmH@anon-20191002_181700-374:localhost:8800 &e'Q ]$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4m.room.member!csWEXfVEVxdviNvgAd:localhost:8800mAmC@anon-20191002_181700-374:localhost:8800 %e'Q ]$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsm.room.member!rQeYcODvQiLsOIbQrJ:localhost:8800mAmC$@anon-20191002_181700-374:localhost:8800$ e'Q  ]$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUm.room.create!rQeYcODvQiLsOIbQrJ:localhost:8800m<m=@anon-20191002_181700-374:localhost:8800# e'Q  ]$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQm.room.create!csWEXfVEVxdviNvgAd:localhost:8800m<m=]@anon-20191002_181700-374:localhost:8800 "e'Q ]$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wm.room.member!aHyAJEOSdKqTiRjOvw:localhost:8800m7m8-@anon-20191002_181700-372:localhost:8800 !e'Q ]$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0m.room.member!aHyAJEOSdKqTiRjOvw:localhost:8800m5Jm5@anon-20191002_181700-373:localhost:8800, e?Q ]$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcm.room.history_visibility!aHyAJEOSdKqTiRjOvw:localhost:8800m1m2i@anon-20191002_181700-373:localhost:8800,e?Q ]$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcm.room.history_visibility!aHyAJEOSdKqTiRjOvw:localhost:8800m-nm/Z@anon-20191002_181700-373:localhost:8800$e/Q ]$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8m.room.join_rules!aHyAJEOSdKqTiRjOvw:localhost:8800m)im+@anon-20191002_181700-373:localhost:8800&e3Q ]$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsm.room.power_levels!aHyAJEOSdKqTiRjOvw:localhost:8800m&m'@anon-20191002_181700-373:localhost:8800 e'Q ]$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYm.room.member!aHyAJEOSdKqTiRjOvw:localhost:8800m$wm% @anon-20191002_181700-373:localhost:8800 e'Q  ]$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIm.room.create!aHyAJEOSdKqTiRjOvw:localhost:8800m!m!@anon-20191002_181700-373:localhost:8800 e'Q ]$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8m.room.member!hnQOBexFYpvJntEChZ:localhost:8800mmr@anon-20191002_181700-371:localhost:8800,e?Q ]$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgm.room.history_visibility!hnQOBexFYpvJntEChZ:localhost:8800mBm@anon-20191002_181700-371:localhost:8800,e?Q ]$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90m.room.history_visibility!hnQOBexFYpvJntEChZ:localhost:8800mm@anon-20191002_181700-371:localhost:8800$e/Q ]$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gwm.room.join_rules!hnQOBexFYpvJntEChZ:localhost:8800m m*@anon-20191002_181700-371:localhost:8800&e3Q ]$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwm.room.power_levels!hnQOBexFYpvJntEChZ:localhost:8800m m 1@anon-20191002_181700-371:localhost:8800 e'Q ]$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0m.room.member!hnQOBexFYpvJntEChZ:localhost:8800mmk@anon-20191002_181700-371:localhost:8800 e'Q  ]$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUm.room.create!hnQOBexFYpvJntEChZ:localhost:8800mmZ@anon-20191002_181700-371:localhost:8800 W_  o0lO4|_D! o T 1  d A  l Q . v _ q N +@#K4[DkN7~?(O8 e U3 m.room.power_levels>']m.room.member@anon-20191002_181700-367:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-366:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-365:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-364:localhost:8800"? m.room.history_visibility/ m.room.join_rules"? m.room.history_visibility!/ m.room.join_rules 3 m.room.power_levels>']m.room.member@anon-20191002_181700-380:localhost:8800' m.room.create3  a.madeup.test.state>'] m.room.member@anon-20191002_181700-379:localhost:8800"?  m.room.history_visibility/  m.room.join_rules3  m.room.power_levels>']m.room.member@anon-20191002_181700-378:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-377:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-377:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-376:localhost:8800"? m.room.history_visibility"? m.room.history_visibility / m.room.join_rules / m.room.join_rules 3 m.room.power_levels 3 m.room.power_levels >']m.room.member@anon-20191002_181700-375:localhost:8800>']m.room.member@anon-20191002_181700-375:localhost:8800' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-374:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-374:localhost:8800>']m.room.member@anon-20191002_181700-374:localhost:8800' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-372:localhost:8800>']m.room.member@anon-20191002_181700-372:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-373:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-371:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-371:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-370:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-370:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-369:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-369:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-368:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-368:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules V 4VZeQaA$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2074}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg"], "type": "m.room.member", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-371:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042288103, "hashes": {"sha256": "xmd2Fgd1o5yb/4wkgoIddtEuhc9AGmqxFYEL6xNCjYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LePZ/XpB9Q5B61r7U0X/t+vLKqVCG29wndhq5kRHCFPeG/dtCN9fXZbFsfnnTiz+nKCrHAv/JwFAwfWxb+icBw"}}, "unsigned": {"age_ts": 1570042288103, "replaces_state": "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"}}GeQa$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2073}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90"], "type": "m.room.history_visibility", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042287170, "hashes": {"sha256": "/zcYlrPnqVlmGB6o5WyTlg3eiG8z8wR9uF4RXSF8c/g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wA6esi1BgqESX0+erLLEF7A95cUTZXqREXLLsAp8SefOxP5jdzKSPGX+8Q7s8Lr2A9DyaWbOzvCcS55lbaQUDw"}}, "unsigned": {"age_ts": 1570042287170, "replaces_state": "$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90"}} eQa$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2072}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw"], "type": "m.room.history_visibility", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042286094, "hashes": {"sha256": "FRpzdnDVfo/RvCnEQBYNQiaGFmAE/nsCakWRGZL+HeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "49i0xLO4vXihDsY0HPByHxMArsi/BvuQ/4GVsDX6xkHelOPGGTqi1vHvuGAGFCIV0pMjckV/x17HO734NXG0Aw"}}, "unsigned": {"age_ts": 1570042286094}}t eQau$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2071}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw"], "type": "m.room.join_rules", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042285285, "hashes": {"sha256": "BSo0qpMv1HICcNB3f5DLIVySvZhnerIZEYEmcM/8tA0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITbtzgSi/9TJKj8nO7kQHOuXuF2rKTHxE/N/4ef/YcLz/DBpfc19HJrA/9wM9H/FKeolM/k+JDFMWlSUXGVvAw"}}, "unsigned": {"age_ts": 1570042285285}} ' 2EXb{2 E X k " 5 H[ n w.S x/L` ] @anon-20191002_181700-392:localhost:8800offlinem.Hmm.L ] @anon-20191002_181700-349:localhost:8800offlinem͎mm͎[L ] @anon-20191002_181700-348:localhost:8800offlinemqmmqL ] @anon-20191002_181700-347:localhost:8800offlinemUumdmU|L ] @anon-20191002_181700-345:localhost:8800offlinem tm͛m L ] @anon-20191002_181700-343:localhost:8800offlinemm͈DmL| ] }@anon-20191002_181700-342:localhost:8800offlinemma4mSLz ] {@anon-20191002_181700-341:localhost:8800offlinemEm:$mLy ] z@anon-20191002_181700-339:localhost:8800offlinem̟m&m̠Lw ] x@anon-20191002_181700-338:localhost:8800offlinem̎mm̏;L_ ] @anon-20191002_181700-391:localhost:8800offlinemmmL^ ] @anon-20191002_181700-394:localhost:8800offlinema.mtmaL] ] @anon-20191002_181700-390:localhost:8800offlinemmtmL\ ] @anon-20191002_181700-389:localhost:8800offlinemkmmLV ] @anon-20191002_181700-388:localhost:8800offlinemѸm/mѸLN ] @anon-20191002_181700-387:localhost:8800offlinemѥqm$mѥtLL ] @anon-20191002_181700-386:localhost:8800offlinemѐmmёLI ] @anon-20191002_181700-385:localhost:8800offlinemsUmmtqLF ] @anon-20191002_181700-383:localhost:8800offlinem@mmP4LC ] @anon-20191002_181700-381:localhost:8800offlinemmѓlm}L> ] @anon-20191002_181700-379:localhost:8800offlinemml\mL= ] @anon-20191002_181700-377:localhost:8800offlinemпmELmL6 ] @anon-20191002_181700-371:localhost:8800offlinemEm,mF5 ]@anon-20191002_181700-378:localhost:8800offlinemmL3 ] @anon-20191002_181700-374:localhost:8800offlinem\mm]2L2 ] @anon-20191002_181700-370:localhost:8800offlinemmm{L0 ] @anon-20191002_181700-372:localhost:8800offlinem:mмm:L/ ] @anon-20191002_181700-369:localhost:8800offlinemmЩ mL. ] @anon-20191002_181700-368:localhost:8800offlinemmЕmoL- ] @anon-20191002_181700-367:localhost:8800offlinemϮ_mЁmϮiL$ ] @anon-20191002_181700-366:localhost:8800offlinemϖm TmϖL# ] @anon-20191002_181700-364:localhost:8800offlinem{(m Tm{L ] @anon-20191002_181700-361:localhost:8800offlinemZmDmZF ]@anon-20191002_181700-360:localhost:8800offlinemUmKF ]@anon-20191002_181700-357:localhost:8800offlinemίm6L ] @anon-20191002_181700-358:localhost:8800offlinemνm5mνL ] @anon-20191002_181700-355:localhost:8800offlinemmΆ-mvL ] @anon-20191002_181700-353:localhost:8800offlinem3m_mj8K%q]? WwE+ w E p Q ~ L}  R    Y ' _ -e3k91>o1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE 1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs 1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs 1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo 1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM 1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg 1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY r1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 Q1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y 1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 81e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 71e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s .1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMn1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA`1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sX1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgk1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw{1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A,1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt461e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw 1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg[1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIo1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrge1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg~1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsH1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM]1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE\1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us}1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ31e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsv1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUz1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0\0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkf1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUP1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gj1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro41e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIm1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E  " 5HveQay$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2085}{"auth_events": ["$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU"], "prev_events": ["$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU"], "type": "m.room.member", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-374", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-374:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042298758, "hashes": {"sha256": "1/UvnuX7qCS8KathoAKsNhVtjHqDiNvItNT53nSYWPk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0KfMY3ort5LLpEGcYkgZMkCJPIJyZ0k9RLCAIpnls8vJKU6poF32keuF01W2Zgj511YXYlPezzgvojrvX2B/Cg"}}, "unsigned": {"age_ts": 1570042298758}}ieQa_$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2084}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-374:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042297535, "hashes": {"sha256": "O1BX3wUh38ziYI5KwYnFZ2Qi6eVrZb176aQLszsgJj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8TszwPSEol5IWFlMX3MqJ2FF0ywnymS9gUuaNu0PSzH2ytg5HXK06P1ESkiAy+4fFa52oComb4Zvnol2f65dBA"}}, "unsigned": {"age_ts": 1570042297535}}ieQa_$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2083}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-374:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042297534, "hashes": {"sha256": "a6dG8CPTAngME5hBHqaPq9AUuB5dv9oUqVmt7kvAsvk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BWQbCk60MFCxjALTSxtB4thCUQHoKywdzRnst3OYdVVWBjc7WAQwKkQNNzJrMfvCftNQXAJfUv7p64CTwud8DQ"}}, "unsigned": {"age_ts": 1570042297534}}ZeQaA$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 390, "stream_ordering": 2082}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0"], "prev_events": ["$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0"], "type": "m.room.member", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-372:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-372:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042296258, "hashes": {"sha256": "pe2mGSbs5QvgQhN3pavil0bDH02z+i+SoHWzIopjP2c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7nYAkTDnUmyPHzQcI4L9gpkBHumY0QJTcDyLKcAaqbjhvjyQfvurKghK1+4O6heziBTYgtAK+BMRrr25p+z6AQ"}}, "unsigned": {"age_ts": 1570042296258, "replaces_state": "$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0"}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Me$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw%1Le$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$1Ke$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY#1Je$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog"1Ie$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!1He$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc!1Ge$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!1Fe$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w 1Ee$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M1De$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss1Ce$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1Be$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01Ae$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1@e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk01?e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1>e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81=e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1<e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1;e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw1:e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI019e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ18e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs17e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw16e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls15e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k14e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng13e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI 12e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM 11e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI 10e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc 1/e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I 1.e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA 1-e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1,e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI1+e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg1*e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU1)e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM1(e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg1'e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01&e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI1%e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM1$e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1#e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1"e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1!e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1 e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu81e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly01e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg1e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1 e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01 e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41 e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1 e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1 e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs a} { y w u sqomkigeca~eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800~~eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800~}eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~|eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800~{eeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~zeeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~yeeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800~xeeQ$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800~weeQ$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~veeQ$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~ueeQ$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~teeQ$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~seeQ$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~reeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800~qeeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~peeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~oeeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~neeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800~meeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~leeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~keeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~jeeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~ieeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~heeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~geeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~feeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~eeeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~deeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~ceeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800  weQa7$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 389, "stream_ordering": 2081}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8", "$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY"], "prev_events": ["$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc"], "type": "m.room.member", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-373:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-372", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-372:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042295626, "hashes": {"sha256": "BoqzHXCgz8hqaUWR50ZSCMhac4+0du0PxP0wnoLxAgU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zDJzTrLU/jK0QJERSiLETzNmjuMgpTLc2mOUDz98C835cR+ADqsfNhxdEh7H8mOQYKy33uQKIdTYlgjSVMFjAw"}}, "unsigned": {"age_ts": 1570042295626, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-373:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-373:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-373", "avatar_url": null}, "sender": "@anon-20191002_181700-373:localhost:8800"}]}}GeQa$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 389, "stream_ordering": 2080}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY"], "prev_events": ["$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc"], "type": "m.room.history_visibility", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-373:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042294770, "hashes": {"sha256": "i3BfNGz169F4w/Y1/iGmJy+a9I9MUPFZe+YG4ZwfWWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lR8klbpXXkzC6G9snllkQ9Y4HpQ9IEwFrVWVjpnKk/l7hiXTtMJ1UzlmCud6gdIxgBZEVcNo+o4aEH2DqNb3Dg"}}, "unsigned": {"age_ts": 1570042294770, "replaces_state": "$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc"}}eQa$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 389, "stream_ordering": 2079}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY"], "prev_events": ["$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8"], "type": "m.room.history_visibility", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-373:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042293614, "hashes": {"sha256": "6m2Xka7uXWKUn9nqlIvlDfRyvuN+TNQx1G65KmiJGLw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KIm1HhJSBNeRtFXeFSZJP7TActsm3jhX+wk3GvRRc0bPahjFvT4B7+OBM5dE10Y7rWrQgdcE7ULdFDF8OqlBBg"}}, "unsigned": {"age_ts": 1570042293614}} -RM H C > 9 4/*|%w rmhc TQe!WFHIeSFQyuugGeBFxW:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0TQe!WFHIeSFQyuugGeBFxW:localhost:8800$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YTQe!WFHIeSFQyuugGeBFxW:localhost:8800$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8TQe!WFHIeSFQyuugGeBFxW:localhost:8800$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UTQe!WFHIeSFQyuugGeBFxW:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeITQe!WFHIeSFQyuugGeBFxW:localhost:8800$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwTQe!QMrkSPlQDGborAyWtQ:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0TQe!QMrkSPlQDGborAyWtQ:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQTQe!QMrkSPlQDGborAyWtQ:localhost:8800$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsTQe!QMrkSPlQDGborAyWtQ:localhost:8800$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawTQe!QMrkSPlQDGborAyWtQ:localhost:8800$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsTQe!QMrkSPlQDGborAyWtQ:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kTQe!QMrkSPlQDGborAyWtQ:localhost:8800$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1IT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXATQe!mBQpGaIiadEuKBXfOw:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwTQe!mBQpGaIiadEuKBXfOw:localhost:8800$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlITQe!xXYMxashIZAUOTuGAJ:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgTQe!xXYMxashIZAUOTuGAJ:localhost:8800$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMTQe!xXYMxashIZAUOTuGAJ:localhost:8800$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgTQe!xXYMxashIZAUOTuGAJ:localhost:8800$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0TQe!xXYMxashIZAUOTuGAJ:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YITQe!xXYMxashIZAUOTuGAJ:localhost:8800$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMTQe!ozgnwUlebxvzLVwyHW:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMTQe!ozgnwUlebxvzLVwyHW:localhost:8800$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziET~Qe!QcaNrIiUsWpTiVGOnt:localhost:8800$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcT}Qe!ozgnwUlebxvzLVwyHW:localhost:8800$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeET|Qe!QcaNrIiUsWpTiVGOnt:localhost:8800$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMT{Qe!ozgnwUlebxvzLVwyHW:localhost:8800$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8TzQe!QcaNrIiUsWpTiVGOnt:localhost:8800$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0TyQe!QcaNrIiUsWpTiVGOnt:localhost:8800$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0TxQe!ozgnwUlebxvzLVwyHW:localhost:8800$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScTwQe!QcaNrIiUsWpTiVGOnt:localhost:8800$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30sTvQe!ozgnwUlebxvzLVwyHW:localhost:8800$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5YTuQe!rQeYcODvQiLsOIbQrJ:localhost:8800$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUTtQe!csWEXfVEVxdviNvgAd:localhost:8800$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEETsQe!rQeYcODvQiLsOIbQrJ:localhost:8800$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrITrQe!csWEXfVEVxdviNvgAd:localhost:8800$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYTqQe!rQeYcODvQiLsOIbQrJ:localhost:8800$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8TpQe!csWEXfVEVxdviNvgAd:localhost:8800$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUToQe!rQeYcODvQiLsOIbQrJ:localhost:8800$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0TnQe!rQeYcODvQiLsOIbQrJ:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts Nk:rA } L  U " V # W $ Z 'a/f4o< tCzHQV%Z'/< Q !vRmMcoJDeCupADwqac:localhost:8800%0; Q!fGkUEndqGrieltwbCh:localhost:8800%0: Q!atnRTMliktaVUhMVID:localhost:8800%09 Q!PHkVrXAyfGkFtzSagu:localhost:8800%08 Q!EhFUhsgQbBWmrnGmaz:localhost:8800%07 Q!wBkUBAjOznOyxrLchl:localhost:8800 %/6 Q !sHRHoXzYrrPSlWBkoh:localhost:8800%.5 Q   !AoAvmnwMkhYBQsbCsL:localhost:8800%.4 Q  !IlGJpjzrvvAFuwTAgo:localhost:8800%/3 Q !CSqENqzAezaZnGktbE:localhost:8800%/2 Q !vBvlJEXUSQKUYmsKcO:localhost:8800%01 Q!RDEAXrqXQizuhCUFPq:localhost:8800%00 Q!mogJVPxghalmKbblUq:localhost:8800%./ Q  !EhUxBjnSkVXpTrQlrn:localhost:8800%/. Q !laUExtszUaoCpZoyEq:localhost:8800%.- Q   !coGyOAgYnlBZAqznax:localhost:8800%., Q  !ubmTdQFAhrhZkGULDx:localhost:8800%/+ Q !rpVYLTJGcFNdGzFzXj:localhost:8800%/* Q !iKezIvJyjkNqKayFju:localhost:8800%0) Q!DelfBAGvCrTXgNxmNV:localhost:8800%0( Q!kOmCTyiizHqfCJdhlR:localhost:8800%.' Q  !pJUItjYTOUJQFIxyiX:localhost:8800%/& Q !mvgUHEsfGqDkPQUvfG:localhost:8800%.% Q   !WYyiQAVvitxsLZKVCG:localhost:8800%.$ Q  !KIHYKMzkRDrJwiywwz:localhost:8800%/# Q !RSLvuCuAqKQQrKCxNq:localhost:8800%/" Q !DqxFmsXPclgGqpSwdy:localhost:8800%0! Q!uqIEMXzdeNeXdJmuwh:localhost:8800%0 Q!yAzXcNLHMuqFOcOexj:localhost:8800%. Q  !tLkhTnTgDjjAvscRkW:localhost:8800%/ Q !kAxKaIQhXTtGFWSUgr:localhost:8800%. Q   !WhLedNwPGGGTtqeqam:localhost:8800%. Q  !yLccBXjjEasExpsXlt:localhost:8800%/ Q !PcvmCDeVUSyJbXpTig:localhost:8800%/ Q !HbYxdEuVIeLKHwqJEh:localhost:8800%0 Q!FbJSiQoZtZkaFwzzQq:localhost:8800%0 Q!JPTwFTSDaBXwUTgitj:localhost:8800%. Q  !RYNJAGdRhIlwRZFbrO:localhost:8800%/ Q !MqstbCLZIQFiYNHrqR:localhost:8800%. Q   !WuiaqqIOvBjgETqdus:localhost:8800%. Q  !bQDOrbAknnQZfUbhgS:localhost:8800%/ Q !GSxvxNevpCiwmFCHys:localhost:8800%/ Q !yfizglmCXdcqCgDrTr:localhost:8800%0 Q!XnUZiYJDWVNGfsBnGz:localhost:8800%0 Q!ePtMOPPOgOcBIMNZpn:localhost:8800%. Q  !YGUjVdVdpcQoGkRnWB:localhost:8800%0 Q !IZkczIYykpZDvjuUWn:localhost:8800%0 Q!zuCqeooOnfWkYrQdxA:localhost:8800 %0 Q!vttkrtSyHEJXVMlvLo:localhost:8800%0 Q!whuymJoLfUdkFdxoyE:localhost:8800%0 Q!yTQmLDAxZscWKLMSWh:localhost:8800%0 Q!eWRdwtyqHvuxZFvhNS:localhost:8800%0 Q!UGVFuRGyPQmBbGsEDo:localhost:8800%0 Q!AMLmLqizBFklpqKibP:localhost:8800%0 Q!rWGwSSefrZzQYCYFHs:localhost:8800%0 Q!HXfrGcvJCbRItyQLVE:localhost:8800%0 Q!HusOrLtWZTLbmQZxmm:localhost:8800%0 Q!BpTqIemsWFZIqTcgJO:localhost:8800%0 Q!YQATbgbLImCDamiDHC:localhost:8800%0 Q!svYOOXWZHtQQzlMcEP:localhost:8800%. Q  !CGckPHdSYcIocFvRAq:localhost:8800%. Q  !BoyzlWNkRPncpDjBDg:localhost:8800%.~ Q  !djwLhpJUYOKsgQtrky:localhost:8800%.} Q  !bkwyieHZwSMJfuSKvV:localhost:8800%.| Q  !XcaKxZsPvbZhAGKKdx:localhost:8800%.{ Q  !jDKAOtmeAGbYTpwyEW:localhost:8800%.z Q  !JYLMokjOhZZlmbZvTf:localhost:8800%.y Q  !zoTQAhGwmDDUECKtbL:localhost:8800%.x Q  !NeYaCeYNFATCqlrlGT:localhost:8800%.w Q  !YtVXQjSPgVtbxrzUOA:localhost:8800%.v Q  !zsXPhIPzeXXLvuazzQ:localhost:8800%0u Q!WFHIeSFQyuugGeBFxW:localhost:8800%.t Q  !QMrkSPlQDGborAyWtQ:localhost:8800%0s Q!mBQpGaIiadEuKBXfOw:localhost:8800%.r Q !xXYMxashIZAUOTuGAJ:localhost:8800E0p Q!ozgnwUlebxvzLVwyHW:localhost:8800%.q Q  !QcaNrIiUsWpTiVGOnt:localhost:8800%.o Q !rQeYcODvQiLsOIbQrJ:localhost:8800/ #t L l|; 3  + T d  \eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800 zeeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800oeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800 ҁeeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:88292eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800=eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800 { eeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800 ieeQ$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800SeeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800 CeeQ$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak!OWGKxAmTrHLciIdrJi:localhost:8800GeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800peeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800 eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800:eeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800eeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800eeeQ$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800 yeeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800 weeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800 1eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800 UeeQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800 "eeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800 eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800   : Zity?_ooooooo_ ueQ']$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800joinmteQ? $ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibilitymseQ? $g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibilityereQ/ $YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_ruleseqeQ/ $G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rulesgpeQ3 $0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levelsgoeQ3 $UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levels neQ']$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800join meQ']$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800joinaleQ' $HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.createakeQ' $M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800m.room.create mieQ? $mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibility pegeQ/ $V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800m.room.join_rules^ 0 0teQau$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2089}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0"], "type": "m.room.join_rules", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042301196, "hashes": {"sha256": "3BtOIW9/UTvNSk0/GbdfvyzWQpU9HNJhtlNajYbEr8o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Db1Ab+sgztwS9BwfbyJtMmN0hT9ySFaVCcBSB5ywxYYBNqWuWHXeMWl62k32tjGxl3u0LLVzoOl5Fpy9kwniBA"}}, "unsigned": {"age_ts": 1570042301196}}keQac$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2088}{"auth_events": ["$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "type": "m.room.power_levels", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"users": {"@anon-20191002_181700-374:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042299881, "hashes": {"sha256": "ZP3k7pr5kNJlxfLV1ig2Rj6tPdsrMsa8Cc/mvCUoEXw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1h9X3oO2FeTpC3bdzcSNzXi4+mHL6n1cyZVsUZ6sKowjUH7NGDMEuE2DCaNoNlDc/4feio27OsW7Oc8Gtf9QCg"}}, "unsigned": {"age_ts": 1570042299881}}keQac$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2087}{"auth_events": ["$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "type": "m.room.power_levels", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"users": {"@anon-20191002_181700-374:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042299879, "hashes": {"sha256": "5NzEW/viOepmghdJOH8rZvDkOYGLWoB1Wp18bS5eoSo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PhBHhnS6Mb7QYYdIGkxZx9ZITcERRH7O1bCDA6e+fLOuOW7bBXNTGXJcttlHz2bvmbNbjvxDTSXcTuEfjzs2Cg"}}, "unsigned": {"age_ts": 1570042299879}}veQay$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2086}{"auth_events": ["$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ"], "prev_events": ["$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ"], "type": "m.room.member", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-374", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-374:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042298756, "hashes": {"sha256": "LnNllEdE0gvWU64d58QXtQWhKXUQwRiq3nG9+41fhs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C++DBYsggiWXq8elITJe2KI+hDvxI5Bitm5q5dOioIt4OYUdC9kBzlVZn+C/osPMwYlu0KFbICjQadQbBrouDA"}}, "unsigned": {"age_ts": 1570042298756}} !f&P j G P S { *36X58Z]f ]Q']eO!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kd\Q' eN!QMrkSPlQDGborAyWtQ:localhost:8800m.room.create$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngj[Q3 eM!mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI ZQ']eK!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIpYQ? eJ!mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibility$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEchXQ/ eI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rules$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1IjWQ3 eH!mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA VQ']eG!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwdUQ' eF!mBQpGaIiadEuKBXfOw:localhost:8800m.room.create$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI8TQ']eeE!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIpSQ? eC!xXYMxashIZAUOTuGAJ:localhost:8800m.room.history_visibility$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMhRQ/ eB!xXYMxashIZAUOTuGAJ:localhost:8800m.room.join_rules$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgjQQ3 eA!xXYMxashIZAUOTuGAJ:localhost:8800m.room.power_levels$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0 PQ']e@!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIdOQ' e?!xXYMxashIZAUOTuGAJ:localhost:8800m.room.create$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM NQ']e>!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMpMQ? e=!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibility$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEpLQ? eQ3 e(!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levels$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUj=Q3 e'!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.power_levels$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0 B+]W |JP > P  \ *%+   b $0 ji7 Vo= J vpD | V $]d1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4G11e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E&1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI V1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wz1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIt1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk`1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMc1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMO0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMf1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4'1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUI1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c 21e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4A1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIC1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU$1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0?1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w >1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ[1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEd1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct41e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E<1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ 1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM 1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 *1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec d Ld}2j8p> vDQj8p> w E  } K  K Q  X &  ^ ,W%],1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 c1e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz81e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo @1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg]1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY 1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs 1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI 1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A x1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 21e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4m1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0+1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIn1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45ka1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgu1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkC1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI !1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok=1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYK1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoM1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8W1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw41e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM.1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwS1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy900e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkt1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Qt1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M/1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4Ej1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYog1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYR1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcK1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwS1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8D1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc+1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw * v*H"eQa$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2093}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE"], "type": "m.room.test", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042304648, "hashes": {"sha256": "HJxplxeMGUlsXaCKf9jWxzIoFH3cVWS9teM65eun7vg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p+GXjxhMWlQX9N7sJznOW6HIwLCjhZObCdcraAfIPOhhxGe7dJzVnphCFcFQR8SDaMDoyMl12uoOTPGu6vliCw"}}, "unsigned": {"age_ts": 1570042304648}}!eQa$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2092}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY"], "type": "m.room.history_visibility", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042302164, "hashes": {"sha256": "rLsVhjGFQSPcBtQQVWyKf5FHq5SYFVYPFzJvah/daRo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VDldcwQstbAELJwmvw30ocRsXnuY2T7nf2KCrvuIB4InafNPb0UZVMH04ahrwexlBcuunYxkkJVyNJDuV+i2Dw"}}, "unsigned": {"age_ts": 1570042302164}} eQa$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2091}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8"], "type": "m.room.history_visibility", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042302162, "hashes": {"sha256": "BzmkcRNi7XaxP8S4npw2cOSTe31zUzT3qfD7babi8nc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7hdtak8Is06BmJDV/97i36ZLBg/VwmUs8QBpEdkuPhh9qUtDXh8fxyGONwAM6W/lz7D2B1gEW3DJkTdbeFjNBw"}}, "unsigned": {"age_ts": 1570042302162}}teQau$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2090}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU"], "type": "m.room.join_rules", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042301199, "hashes": {"sha256": "XvXal3vw6wgpOqd+bmSJkzuCYqu1jS5E9Ym3niib+bs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cYl1mHvvbtWWhjiIf3zmE/cfY1Jod25pQ1zEYsnK/tglxUjRDJ07tIu1IeixiEKCXjL/wSHH5gueOvQb7wUPCQ"}}, "unsigned": {"age_ts": 1570042301199}} *|vHb4 | N h : X * r D  ` 2 |-]@anon-20191002_181700-232:localhost:8800-]@anon-20191002_181700-231:localhost:8800+[@anon-20191002_181700-22:localhost:8800K-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800?-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800|-]@anon-20191002_181700-212:localhost:8800z-]@anon-20191002_181700-211:localhost:8800u-]@anon-20191002_181700-210:localhost:8800s+[@anon-20191002_181700-20:localhost:8800:+[@anon-20191002_181700-20:localhost:88001-]@anon-20191002_181700-209:localhost:8800n-]@anon-20191002_181700-208:localhost:8800g-]@anon-20191002_181700-207:localhost:8800_-]@anon-20191002_181700-206:localhost:8800W-]@anon-20191002_181700-205:localhost:8800P-]@anon-20191002_181700-204:localhost:8800H-]@anon-20191002_181700-203:localhost:8800B-]@anon-20191002_181700-202:localhost:8800;-]@anon-20191002_181700-201:localhost:88003-]@anon-20191002_181700-200:localhost:8800,-]@anon-20191002_181700-199:localhost:8800'-]@anon-20191002_181700-198:localhost:8800"-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800 -]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800 mQ}R' {P%yN#wL!B P % y N # w L ! y P ' } R 'uJsHqFoDlocalhost:8800**Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800{V*Q!vOfeZvbtpuHfoqShFl:localhost:8800~*Q!vOfeZvbtpuHfoqShFl:localhost:8800}*Q!vOfeZvbtpuHfoqShFl:localhost:8800|*Q!vOfeZvbtpuHfoqShFl:localhost:8800{*Q!vOfeZvbtpuHfoqShFl:localhost:8800z~*Q!vOfeZvbtpuHfoqShFl:localhost:8800y}*Q!vOfeZvbtpuHfoqShFl:localhost:8800x|*Q!vOfeZvbtpuHfoqShFl:localhost:8800w{*Q!vOfeZvbtpuHfoqShFl:localhost:8800vz*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800  *Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ *Q!ubmTdQFAhrhZkGULDx:localhost:8800 } *Q!ubmTdQFAhrhZkGULDx:localhost:8800 | +*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vAUAIZrCnHTeMGeNuw:localhost:8800gl*Q!vAUAIZrCnHTeMGeNuw:localhost:8800fk*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ej*Q!vAUAIZrCnHTeMGeNuw:localhost:8800di*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ch*Q!vAUAIZrCnHTeMGeNuw:localhost:8800bg(Q!uxKymrHZeXRYCZwekU:localhost:8800CB(Q!uxKymrHZeXRYCZwekU:localhost:8800BA(Q!uxKymrHZeXRYCZwekU:localhost:8800A@(Q!uxKymrHZeXRYCZwekU:localhost:8800@?(Q!uxKymrHZeXRYCZwekU:localhost:8800?>*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  P*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  O*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  N*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  M*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  L*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  K*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  J*Q!uqIEMXzdeNeXdJmuwh:localhost:8800 I*Q!uqIEMXzdeNeXdJmuwh:localhost:8800 H*Q!uqIEMXzdeNeXdJmuwh:localhost:8800 G*Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800- -RM H C > 9 4/*|%w rmhc TQeT!QMrkSPlQDGborAyWtQ:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0TQeS!QMrkSPlQDGborAyWtQ:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQTQeR!QMrkSPlQDGborAyWtQ:localhost:8800$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsT~QeQ!QMrkSPlQDGborAyWtQ:localhost:8800$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawT}QeP!QMrkSPlQDGborAyWtQ:localhost:8800$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsT|QeO!QMrkSPlQDGborAyWtQ:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kT{QeN!QMrkSPlQDGborAyWtQ:localhost:8800$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngTzQeM!mBQpGaIiadEuKBXfOw:localhost:8800$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgITyQeL!mBQpGaIiadEuKBXfOw:localhost:8800$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMTxQeK!mBQpGaIiadEuKBXfOw:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPITwQeJ!mBQpGaIiadEuKBXfOw:localhost:8800$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcTvQeI!mBQpGaIiadEuKBXfOw:localhost:8800$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1ITuQeH!mBQpGaIiadEuKBXfOw:localhost:8800$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXATtQeG!mBQpGaIiadEuKBXfOw:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwTsQeF!mBQpGaIiadEuKBXfOw:localhost:8800$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlITrQeE!xXYMxashIZAUOTuGAJ:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgTqQeD!xXYMxashIZAUOTuGAJ:localhost:8800$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUTpQeC!xXYMxashIZAUOTuGAJ:localhost:8800$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMToQeB!xXYMxashIZAUOTuGAJ:localhost:8800$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgTnQeA!xXYMxashIZAUOTuGAJ:localhost:8800$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0TmQe@!xXYMxashIZAUOTuGAJ:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YITlQe?!xXYMxashIZAUOTuGAJ:localhost:8800$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMTkQe>!ozgnwUlebxvzLVwyHW:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMTjQe=!ozgnwUlebxvzLVwyHW:localhost:8800$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziETiQe G u - <Em| R[i feQ']$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800 eeQ']$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800mdeQ? $N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibilityeceQ/ $T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rulesgbeQ3 $3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels aeQ']$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800a`eQ' $qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800m.room.createg_eQ3 $qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state ^eQ']$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800m]eQ? $Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibilitye\eQ/ $-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rulesg[eQ3 $dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels ZeQ']$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800aYeQ' $LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.create XeQ']$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800mWeQ? $tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800m.room.history_visibilityeVeQ/ $gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800m.room.join_rulesgUeQ3 $2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800m.room.power_levels TeQ']$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800aSeQ' $1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800m.room.create ReQ']$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800mQeQ? $ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibilitymPeQ? $g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibilityeOeQ/ $YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_ruleseNeQ/ $G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rulesgMeQ3 $0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levelsgLeQ3 $UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levels KeQ']$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800 JeQ']$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800aIeQ' $HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.createaHeQ' $M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800m.room.create GeQ']$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800mFeQ? $mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibilitymEeQ? $jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.history_visibility <P h  d  t,0(><,Ce?Q ]$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMm.room.history_visibility!xXYMxashIZAUOTuGAJ:localhost:8800mвmж@anon-20191002_181700-377:localhost:8800$Be/Q ]$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgm.room.join_rules!xXYMxashIZAUOTuGAJ:localhost:8800mЮemЯ@anon-20191002_181700-377:localhost:8800&Ae3Q ]$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0m.room.power_levels!xXYMxashIZAUOTuGAJ:localhost:8800mШmЬC@anon-20191002_181700-377:localhost:8800 @e'Q ]$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIm.room.member!xXYMxashIZAUOTuGAJ:localhost:8800mУmФw@anon-20191002_181700-377:localhost:8800? e'Q  ]$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMm.room.create!xXYMxashIZAUOTuGAJ:localhost:8800mНmmО]@anon-20191002_181700-377:localhost:8800 >e'Q ]$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMm.room.member!ozgnwUlebxvzLVwyHW:localhost:8800mЌ"mЏ@anon-20191002_181700-376:localhost:8800,=e?Q ]$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEm.room.history_visibility!ozgnwUlebxvzLVwyHW:localhost:8800mjmЄ@anon-20191002_181700-375:localhost:8800,<e?Q ]$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcm.room.history_visibility!QcaNrIiUsWpTiVGOnt:localhost:8800memЃx@anon-20191002_181700-375:localhost:8800$;e/Q ]$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEm.room.join_rules!ozgnwUlebxvzLVwyHW:localhost:8800mym|z@anon-20191002_181700-375:localhost:8800$:e/Q ]$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMm.room.join_rules!QcaNrIiUsWpTiVGOnt:localhost:8800mym{@anon-20191002_181700-375:localhost:8800&9e3Q ]$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8m.room.power_levels!ozgnwUlebxvzLVwyHW:localhost:8800mumxd@anon-20191002_181700-375:localhost:8800&8e3Q ]$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0m.room.power_levels!QcaNrIiUsWpTiVGOnt:localhost:8800mu~mw@anon-20191002_181700-375:localhost:8800 7e'Q ]$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScm.room.member!ozgnwUlebxvzLVwyHW:localhost:8800mqems@anon-20191002_181700-375:localhost:8800 6e'Q ]$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0m.room.member!QcaNrIiUsWpTiVGOnt:localhost:8800mqgmr@anon-20191002_181700-375:localhost:88005 e'Q  ]$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30sm.room.create!QcaNrIiUsWpTiVGOnt:localhost:8800mlmm@anon-20191002_181700-375:localhost:88004 e'Q  ]$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Ym.room.create!ozgnwUlebxvzLVwyHW:localhost:8800mlmmB@anon-20191002_181700-375:localhost:8800(3e7Q ]$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEka.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800mbmc@anon-20191002_181700-374:localhost:8800(2e7Q ]$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIa.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800m_ma@anon-20191002_181700-374:localhost:8800(1e7Q ]$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zega.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800m_ma@anon-20191002_181700-374:localhost:8800(0e7Q ]$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnusa.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800m_m_@anon-20191002_181700-374:localhost:8800 /e'Q ]$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUm.room.member!rQeYcODvQiLsOIbQrJ:localhost:8800m]9m]@anon-20191002_181700-374:localhost:8800.e#Q ]$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYm.room.test!rQeYcODvQiLsOIbQrJ:localhost:8800mXmY]@anon-20191002_181700-374:localhost:8800-e#Q ]$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wm.room.test!csWEXfVEVxdviNvgAd:localhost:8800mXmX@anon-20191002_181700-374:localhost:8800,,e?Q ]$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEm.room.history_visibility!csWEXfVEVxdviNvgAd:localhost:8800mNmQ@anon-20191002_181700-374:localhost:8800 a} { y w u sqomkigeca~ eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800~ eeQ$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800~ eeQ$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~ eeQ$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800~ eeQ$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~ eeQ$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800~eeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~eeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800  co&eQG$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "348", "stream_ordering": 2097}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 3}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042306446, "hashes": {"sha256": "zlq058dGIT/+XKdCRnGmkumZE1jc2wvZQsDKc3ffmgI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KZS8wXKvxJfLr37hSwvcHfLOyRWF+LIefqZ4PkY5SMk8+VFalNk6KeHCVVXAjV60y78ZIyJeJDgZ9R2It7pcDA"}}, "unsigned": {"age_ts": 1570042306446}}o%eQG$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "347", "stream_ordering": 2096}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 2}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042306439, "hashes": {"sha256": "DBDgMQG7/UheHSzqAV2khY55qKq6bmSvyiSrPcwHvZc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zNaZKgYaEP858W5+Yj+kV6sjFSwIvWLNgKdZpiB0Jgf2/Fuz3lo4fF1ZJxIrznBqoIwxzhJ6yfpmp7l6LuSqDA"}}, "unsigned": {"age_ts": 1570042306439}}Z$eQaA$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2095}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY"], "type": "m.room.member", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-374:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042305849, "hashes": {"sha256": "M+mCGETdjFvXtK/yIEA0mNuYDhFWS6I/bGfxnTm9H5E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m10ywdwESNr/y/eYrUs/YVPsw6igAs2Iv3iCcLlUFqTq8znammWavpgBl2iNDp49OSVrtnmI8FJNLxfFK2qoAA"}}, "unsigned": {"age_ts": 1570042305849, "replaces_state": "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"}}H#eQa$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2094}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI"], "type": "m.room.test", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042304652, "hashes": {"sha256": "4R6abIHpt7SLUKzmSBij8m/Mo3SchvytXh5cRIPWcdE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vi09h1NimEyRviPbZW11nhwEP25KdL5Ry0TGGTlrffLQD0Ndj1d76LXUaNfdBklGGbSkJVUbWsEjYoKHJj4mBg"}}, "unsigned": {"age_ts": 1570042304652}} ,NC 8 - { " p  e ZOD9.|#qf VPeL$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcsha256/b[ u{t"zl$[:CVOeL$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0sha256 An3 Sd:xb*}1[~MVNeL$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Ysha256$I-󮡤haؔcV\ TGoBVMeL$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8sha256<%yr$3%Dk@pt_VLeL$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2Usha256<軁5BgrsJu(/l2+eVKeL$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIsha256W]WH" O nԙ 4 VJeL$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwsha256^wDl*j9kWaկ~87ȌVIeL$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0sha2563l%l z@p3(sčVHeL$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQsha256j^&ҳzmds+@tVGeL$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgssha2567"]W1,gD"FV VFeL$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Fawsha256OY8=ǘΉbF\Oޭed}VEeL$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlssha256䒝PMϞ˶rڏ_Q*[VDeL$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9ksha256[ N VI&4=&?-: Q,VCeL$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngsha256TN33bV` ]}=%Ǭ&xVBeL$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIsha256 HP3m|RGV>eL$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1Isha256yX&eY}מ†sC[RV=eL$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAsha256vS-^MaC^rN"&~%pV<eL$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwsha256+D96 @Rk;&W"(,bĬV;eL$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIsha256,v_{@g/ED[G"@=(\RV:eL$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgsha256`5"d4jm/8-ugbI S4HV9eL$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUsha256.Df*X+Zp-Gr`m3[S%V8eL$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMsha256 k"0MbG³DV7eL$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgsha256º[[r[ܝV5eL$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIsha256[ Rukp~gi[D)z GNw݂V4eL$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMsha256֌II tw4R;Sx V3eL$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMsha256_M')"h!V2eL$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEsha256 KkC&N<  E?9!V1eL$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcsha256VFww~ \Mp,DV0eL$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEsha256`U;n90c OmQV/eL$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMsha256jj^blpTg/a,0V.eL$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8sha256ܛ‰{-<*#DpІV-eL$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0sha256P ݮCTe`uVb/-V,eL$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScsha256,bb/ւ^6~H'tGivІnU'V+eL$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0sha256u "\&2o9. YYGaeV*eL$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30ssha256q}QHs~⬋x:g>KV)eL$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Ysha2563ۏV )/9@zTO+V(eL$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEksha256CM)nri9^ag#A\IV'eL$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIsha256g0GK5&!$C 114qUHV&eL$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zegsha256n0X@ΣQ$A/B eV%eL$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnussha256Ef: 3f N FE}K3,  W % ^8 v _ D -k9 e   Jj P q?   X&pw | R 1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 h1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo I1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMb1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE &1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko21e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE 1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg`1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20/1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sN1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwn c1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok}0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk;1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g 1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjog0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4<1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM]1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0J1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruki1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g ?1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE +1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc`1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc >21e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk g1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 S1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 31e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 21e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0y21e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU [1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0[1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h @ -@i*eQa_$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2101}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-375:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042309807, "hashes": {"sha256": "sdcfoDiSifFt0ZtYq0V6MTOXoJJrQ2fAbJqs8C+DOuo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/X8R+4wF/8IP6eTxANmOmtemS3bvvtH/w1rbRRUHkCKLnNxzltepno1dKf6c2J/Q0E5FcMcsqHasrRDwOQifBg"}}, "unsigned": {"age_ts": 1570042309807}}i)eQa_$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2100}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-375:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042309805, "hashes": {"sha256": "Erv0frDue+60c+vjFY1FhEw84f0AxCU/nmQiZ9CpjT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v1HufgsPDUMQA1wSioz4bzuZnd0EG8DjPtbDbLF3hlNfOvmLiCZey96rt3JnQPKJm83nZNXFTEPf/FdJGkkuAQ"}}, "unsigned": {"age_ts": 1570042309805}}o(eQG$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "349", "stream_ordering": 2099}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 4}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042307306, "hashes": {"sha256": "QN6bwx1yRHDM9VzqqI/+fZjcTo2lSOtPPVJsDKdi8xI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZkUw4oImCPeKBQ5zedjMMDMMzUug9v/jbXuUxm02AmYldJUiGL0Jot1+bwfUhxUKCan8ZGbF+ojCgBkm0ZN+Aw"}}, "unsigned": {"age_ts": 1570042307306}}o'eQG$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "346", "stream_ordering": 2098}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 1}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042306452, "hashes": {"sha256": "VIH88OVXe8imk6wHPWOCRN8bBEMD6eKXGqtByzoj/3w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4y0tNuxtyNZWiv2C4cJ5azsRk53kXni20ZMn1j3wA/i4E5pSuD3o0Wj4hpTZAhtQ8S/CgMLr+bEjV2mVNQHYCA"}}, "unsigned": {"age_ts": 1570042306452}} FE}K3,  W % ^8 v _ D -k9 e   Jj P q?   X&pw | R 1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 h1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo I1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMb1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE &1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko21e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE 1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg`1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20/1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sN1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwn c1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok}0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk;1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g 1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjog0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4<1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM]1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0J1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruki1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g ?1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE +1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScZ1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc >21e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk g1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 S1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 31e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 21e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0s21e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU Y1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0U1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h 9 m5RR r T nU 8  q 8   T 4p7 SPo6 V   8 8e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0sha256 L8e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwsha2568e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYsha2568e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnussha256%8e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcsha2568e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMAsha2568e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgsha256 8e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7ssha2568e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcsha256]8e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMsha2568e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Esha256 8e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIsha256'7e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcsha256P8e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUsha256t8e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwsha256 W8e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8sha2568e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcsha256A8e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Qsha256 8e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4Esha256 8e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8sha256 8e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yosha256 "8e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYosha256 8e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3Esha2568e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYsha2568e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUsha256 8e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAsha2568e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBosha2568e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8sha2568e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awsha2568e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4sha2568e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAsha2568e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8sha2568e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwsha2568e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8sha2568e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUsha2568e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Qsha2568e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQsha256k8e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMsha256y8e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwsha2568e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQsha256r8e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90sha256T8e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0sha2568e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQsha2568e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgksha2567e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjncsha256"8e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUsha2568e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFIsha2568e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Msha2568e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAsha256R8e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0sha256\8e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_Asha256/8e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LAsha256 8e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMsha256 8e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYsha256 88e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxssha2568e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcsha2568e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gsha256 4r 8l D `8|]c!E@anon-20191002_181700-385:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwoZHNFADRSTE127.0.0.1Perl + Net::Async::HTTP/0.44mP9{]c!E@anon-20191002_181700-383:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQoCPGAGQTCJJ127.0.0.1Perl + Net::Async::HTTP/0.44m3z]c!E@anon-20191002_181700-382:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9goKSBAPZNICM127.0.0.1Perl + Net::Async::HTTP/0.44m/y]c!E@anon-20191002_181700-381:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6BjdgoCRNWPBWJUO127.0.0.1Perl + Net::Async::HTTP/0.44mՃx]c!E@anon-20191002_181700-380:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgoKLOHIVURCF127.0.0.1Perl + Net::Async::HTTP/0.44m҃w]c!E@anon-20191002_181700-379:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwoXGMNNMSEOT127.0.0.1Perl + Net::Async::HTTP/0.44m΅v]c!E@anon-20191002_181700-378:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgoBACPAMXENX127.0.0.1Perl + Net::Async::HTTP/0.44m΃u]c!E@anon-20191002_181700-377:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggoIARUZBQDWZ127.0.0.1Perl + Net::Async::HTTP/0.44mЛt]c!E@anon-20191002_181700-376:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgoIDKHLQVFRN127.0.0.1Perl + Net::Async::HTTP/0.44mЇӃs]c!E@anon-20191002_181700-375:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAoABNAUGMGBU127.0.0.1Perl + Net::Async::HTTP/0.44mk~ . .k.eQac$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2105}{"auth_events": ["$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "prev_events": ["$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "type": "m.room.power_levels", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"users": {"@anon-20191002_181700-375:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042312064, "hashes": {"sha256": "O+Io4cUVXDD52ALFDBO6h8zQfOJdmGIP/DqPvWacTOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gTv5gR5NhHKBJfvyuXb4bJavUnS5Hsn5yVjcQDwEnmgr/RtD5xR1Yip1Bdmz7WG0OgqBtzwm/shzKBYU98SVBg"}}, "unsigned": {"age_ts": 1570042312064}}k-eQac$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2104}{"auth_events": ["$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s", "$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "prev_events": ["$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "type": "m.room.power_levels", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"users": {"@anon-20191002_181700-375:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042312062, "hashes": {"sha256": "Aui/MmlZZEYboYu4WToMXUlnpfQQDxk7IB5S2GRzrJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "06S7fdRBgAIomdANOAX1sUmeKXR7QZ6v2nUJ8SRXsM7QZ3QomF39fgAd8jXBCGtica5kg5P2iqjxeKv4aJxoDg"}}, "unsigned": {"age_ts": 1570042312062}}v,eQay$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2103}{"auth_events": ["$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y"], "prev_events": ["$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y"], "type": "m.room.member", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-375", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-375:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042311013, "hashes": {"sha256": "ivoPvbTnKjaZDS2omyZfHrQ8E66G2+EL/GT4XzwqQZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1PaUEEls4dk1VMnMAyj+heZiIYqZq05KQfh012x8syF2fUdCZi4BXkT4QYmAhMQJHw91jZvjm+9g6lPnn28IAQ"}}, "unsigned": {"age_ts": 1570042311013}}v+eQay$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2102}{"auth_events": ["$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s"], "prev_events": ["$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s"], "type": "m.room.member", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-375", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-375:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042311015, "hashes": {"sha256": "WSMvo0+8Nm+MrkyVSpyEHXyb1yAP3dtp4G5vpnJ/iOQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "23YH9ujNzL1hDTWTcCo6Z4sas6FX+InGf8aqurK34LLiSfBlEiDm7MEIroX232h5fn/w1lS4afydJfSzDixyBg"}}, "unsigned": {"age_ts": 1570042311015}} cM> =LS!Z(8 1 N  W % j ` .  g 5  oCu vp~ D  k9rA Gj1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y0e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIP1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4S1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAE1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3UJ1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udckr1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ< 0e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wa1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU0e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k=1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4x 01e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U50e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cN1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8R1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow>1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6200e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI`1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUj1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U/1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE0e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI|1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4]0e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Ah0e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEr0e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Am1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM:1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8N1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU-1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok0e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4(1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-80e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V401e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE0e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA-1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I0e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUG0e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYl0e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMY1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c10e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngJ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648p0e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMZ0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms 1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8.1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB01e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8s1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcq1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Akp0e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQH0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewl1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawZ1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn980e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgU1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0V1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIU ?9 0 U  | @ N S S Zh KS?Mz7`)N:Q/ !taANXnGBZntAreRurn:localhost:8800m.room.join_rules .BQ? !taANXnGBZntAreRurn:localhost:8800m.room.history_visibility 06Q' !taANXnGBZntAreRurn:localhost:8800m.room.create (<Q3 !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels^Q']!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800:Q/ !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rulesBQ? !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibility6Q' !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.create<Q3 !tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels^Q']!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800:Q/ !tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rulesBQ? !tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility6Q' !tLkhTnTgDjjAvscRkW:localhost:8800m.room.create<Q3 !tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels^Q']!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800:Q/ !tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rulesBQ? !tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibility6Q' !tDsPLsKOLPePtEWRwn:localhost:8800m.room.create?Q9 !tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_aliasEQ))!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800<Q3 !svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels4Q# !svYOOXWZHtQQzlMcEP:localhost:8800m.room.name^Q']!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800^Q']!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800^Q']!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800:Q/ !svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rulesBQ? !svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibility6Q' !svYOOXWZHtQQzlMcEP:localhost:8800m.room.create<Q3 !sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels ^Q']!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829 ^Q']!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800 :Q/ !sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules BQ? !sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility 6Q' !sqkBzbHHJOTNWwynqV:localhost:8800m.room.create ?Q9 !sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias EQ))!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levelso^Q']!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800s^Q']!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800n:Q/ !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rulespBQ? !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibilityq<Q3 !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_accessr6Q' !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.createm;Q3 !scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levelsd\Q'[!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800c9Q/ !scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_ruleseAQ? !scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibilityf5Q' !scyFsXcUIJiLIMwWMY:localhost:8800m.room.createb4Q% !sPWVGnipjiiWQpywNO:localhost:8800m.room.topic8;Q3 !sPWVGnipjiiWQpywNO:localhost:8800m.room.power_levels23Q# !sPWVGnipjiiWQpywNO:localhost:8800m.room.name7\Q'[!sPWVGnipjiiWQpywNO:localhost:8800m.room.member@anon-20191002_181700-20:localhost:880019Q/ !sPWVGnipjiiWQpywNO:localhost:8800m.room.join_rules4AQ? !sPWVGnipjiiWQpywNO:localhost:8800m.room.history_visibility55Q' !sPWVGnipjiiWQpywNO:localhost:8800m.room.create0^Q']!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800 *RQ'E!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455 1 P & 9Pk6eQac$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2113}{"auth_events": ["$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "type": "m.room.power_levels", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"users": {"@anon-20191002_181700-377:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042325139, "hashes": {"sha256": "NZzRIjUZEIuc66zxpZa+GpsDwi1szv8znazq6rZVHfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aLFKm5qgbQX0gnseW7nToV0Iil9u2oW5gW3wdhaKP7hS2DUdo9MK3w5Tciuun4Dxs/qLhpxAF9tpXuXcSWJICQ"}}, "unsigned": {"age_ts": 1570042325139}}v5eQay$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2112}{"auth_events": ["$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM"], "prev_events": ["$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM"], "type": "m.room.member", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-377", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-377:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042323878, "hashes": {"sha256": "KD0UBvpQyvlucgOXsEjj+7u3veAsEaLywd6cGiHfwmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p+Tnf6X1aINKTBb2QObdrrrfEUTkI9neqGO5qYXARG3QTY+MYqKtFngkLKbe4Yuvd07XUcnpUhECv0zIrsX8CA"}}, "unsigned": {"age_ts": 1570042323878}}i4eQa_$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2111}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-377:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042322285, "hashes": {"sha256": "TBTyNzfA9oVLpxDrC02ZOXVrWbAJhKHOdkoORUWv4D4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/kmxONfBbbwa1mPo8OrmIbOMfNBI5rinALMZAFXYTYxwzl4Zh3BumiE4MtWDWmm944vA00Trgths+1doUpVjBw"}}, "unsigned": {"age_ts": 1570042322285}}V3eQa9$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 392, "stream_ordering": 2110}{"auth_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8", "$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE"], "prev_events": ["$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE"], "type": "m.room.member", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-376:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-376", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-376:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042317858, "hashes": {"sha256": "sChWqSZu0EaOsIeIkd1ccYdSWurPWFFm139l5u0KaX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DQgQa3Dtih7LEXTIWMysSaD0esvLjj2xvURV1QnPsryH9pf5MFQbIKi4iGwI2TVMRP8WF+HYGAsA/Myauih0AQ"}}, "unsigned": {"age_ts": 1570042317858}} ~z v r n j fb^ZVRNJFeeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800 eeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~eeQ$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800}eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU!xXYMxashIZAUOTuGAJ:localhost:8800|eeQ$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800{eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800zeeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800yeeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800xeeQ$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800weeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800veeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800 "P(T p {   JIw|!EPc*Q' e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc )Q']e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0o(Q? e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibility$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Yg'Q/ e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rules$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8i&Q3 e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U %Q']e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIc$Q' e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw #Q']e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0 "Q']e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQo!Q? e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibility$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsg Q/ e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rules$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawiQ3 e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls Q']e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kcQ' e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.create$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngiQ3 e !mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI Q']e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIoQ? e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibility$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcgQ/ e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rules$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1IiQ3 e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA Q']e!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwcQ' e!mBQpGaIiadEuKBXfOw:localhost:8800m.room.create$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI Q']e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgoQ? e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.history_visibility$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMgQ/ e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.join_rules$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgiQ3 e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.power_levels$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0 Q']e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIcQ' e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.create$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM Q']e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMoQ? e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibility$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEo Q? e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibility$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcg Q/ e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_rules$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEg Q/ e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rules$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMi Q3 e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levels$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8i Q3 e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levels$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0  2eQa$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2109}{"auth_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8", "$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "prev_events": ["$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE"], "type": "m.room.history_visibility", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042314602, "hashes": {"sha256": "be/Ba0kr8uDR7mnUHewD0R08WQcOrPnoWSuggx2Hoq8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iR4CrQ82RlEEB6wQhlaVI/yPmvO9HQCwlybkscnHF8TnM1g9XI0PTq+WpwUQmKc08uoog9ZWuEXLjAslBSJdAw"}}, "unsigned": {"age_ts": 1570042314602}}1eQa$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2108}{"auth_events": ["$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0", "$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s", "$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "prev_events": ["$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM"], "type": "m.room.history_visibility", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042314597, "hashes": {"sha256": "xvAA+GmvgQtPQpiT/w8afjTojl4jco8Rq02SqVcwfV8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a9OT1KwTcC9QwVEhjydkQwpsijf8Ric4m9QStuGMje5xasMCeKXml7FNJ48BRiPXYuu77T57e0YI+naA7fgzAw"}}, "unsigned": {"age_ts": 1570042314597}}t0eQau$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2107}{"auth_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8", "$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "prev_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8"], "type": "m.room.join_rules", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042313126, "hashes": {"sha256": "armzEu/EI3W0xrjN8LuSTck4TYDfFCE3vwncGITY0aM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j9aYDoiJYUJQT7JA900yVJmfKu636xExEiYEalYXB4jptPgbBIZdiTHvKaBp7cC7E8lgrPFuPnsw9kn7mbMxBQ"}}, "unsigned": {"age_ts": 1570042313126}}t/eQau$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2106}{"auth_events": ["$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0", "$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s", "$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "prev_events": ["$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0"], "type": "m.room.join_rules", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042313125, "hashes": {"sha256": "FHVj1utqtbaObpF8hKbs6GRISqb8QyQq5/h2h9GCLSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "moIIrkpkTGP9k6udpbTlAWEQq2IiTrdCLTgwIZKnLngBOykwx0spFyfNlrbJwpHO1z1f2XRQP+Pn6RWPhwunAA"}}, "unsigned": {"age_ts": 1570042313125}}  4 h 6jd]c@anon-20191002_181700-440:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFacUN2dzJMWTcjMnh6S04KMDAyZnNpZ25hdHVyZSBIE31dBp2khHIslpt9L2ttXRkowx20GElKVJtaEFSdkgo127.0.0.1d]c@anon-20191002_181700-439:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg2MU1hXm5BPV9mY3pHSDIKMDAyZnNpZ25hdHVyZSDYwznq40c_q4a6OD39IVJeXYATWzSsye1YD37lAobSewo127.0.0.1d]c@anon-20191002_181700-438:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAo127.0.0.1d]c@anon-20191002_181700-437:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgo127.0.0.1d]c@anon-20191002_181700-436:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQo127.0.0.1d]c@anon-20191002_181700-435:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgo127.0.0.1d]c@anon-20191002_181700-434:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQo127.0.0.1d]c@anon-20191002_181700-433:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5Ao127.0.0.1d]c@anon-20191002_181700-432:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2Qgo127.0.0.1d]c@anon-20191002_181700-431:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1wo127.0.0.1d]c@anon-20191002_181700-430:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwo127.0.0.1  Z:eQaA$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2117}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU"], "type": "m.room.member", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-377:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042331184, "hashes": {"sha256": "x+pSH7ZxFMAgyP1hlk4g0C9BS3HAk3lXwi8orBgpeIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IadkHLYsEePG1outuF840cRkHhnXHLk9Nij9BTFVvLaD7gaEJRsr4KLcM8cv92W2sGRsS88dRlGc497o8lt7DQ"}}, "unsigned": {"age_ts": 1570042331184, "replaces_state": "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"}}H9eQa$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2116}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM"], "type": "m.room.test", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042329931, "hashes": {"sha256": "PzNRQTTo4mFqv7knAJTYk2zA4wqvHaW+M7tPpXuWp+U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4Z8VvGBsFJqoO6J6kTqMLD6E3Zt8SPwKxg1ZGdiotT3IYF+79a69qnBsGAi1vLXGcYa7Jdk4M01sqwjTz8xBBA"}}, "unsigned": {"age_ts": 1570042329931}}8eQa$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2115}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg"], "type": "m.room.history_visibility", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042327807, "hashes": {"sha256": "hpZ/X9jmz1aVvZd+/mIasQIiKIq93Q1gYdBx9bfwuwM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UrU90MiyqaVerp6ObAqqr0yOWlyf6zRRpAlomikeyNH5yib3xaRdxOItqE5guDywcgYA9eaxmVW8xcpkLzsgDA"}}, "unsigned": {"age_ts": 1570042327807}}t7eQau$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2114}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0"], "type": "m.room.join_rules", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042326629, "hashes": {"sha256": "XvtJcsl3JIvbww7O7gX3c4/MOBvnC3qc+uQ5M+9mhTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gQKgfxXitvyumc+EzkGjSRFJGtvk86kgIdNrVEzxgX2hhozQrQSLN+ssA8g0SCZlvGy+jnSnNoTlxqCOhNWADA"}}, "unsigned": {"age_ts": 1570042326629}} a} { y w u sqomkigeca~?eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~>eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~=eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800~<eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~;eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~:eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800~9eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~8eeQ$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~7eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~6eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~5eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~4eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800~3eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~2eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~1eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~0eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~/eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~.eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~-eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~,eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~+eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~*eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~)eeQ$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~(eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~'eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~&eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800~%eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~$eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~#eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800~"eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~!eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800 s2 7 _ d o  -9>fqvGssssaeQ' $iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800m.room.createmeQ? $jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibilityeeQ/ $nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rulesgeQ3 $NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels eQ']$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800joinaeQ' $4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create eQ']$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800banmeQ? $cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibilityeeQ/ $l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rulesgeQ3 $SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels eQ']$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800joinaeQ' $m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create eQ']$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800joinm eQ? $JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibilitye eQ/ $kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rulesg eQ3 $HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels eQ']$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800joina eQ' $CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create eQ']$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800banmeQ? $N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibilityeeQ/ $T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rulesgeQ3 $3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels eQ']$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800joinaeQ' $qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800m.room.creategeQ3 $qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state eQ']$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800joinmeQ? $Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibilityeeQ/ $-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rulesg~eQ3 $dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels }eQ']$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800joina|eQ' $LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.createj a^ t " r ) 97MWa[ e'Q  ]$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcm.room.create!zsXPhIPzeXXLvuazzQ:localhost:8800mSmT@anon-20191002_181700-384:localhost:8800 Ze'Q ]$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0m.room.member!WFHIeSFQyuugGeBFxW:localhost:8800m:sm;@anon-20191002_181700-383:localhost:8800,Ye?Q ]$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Ym.room.history_visibility!WFHIeSFQyuugGeBFxW:localhost:8800m/6m6'@anon-20191002_181700-382:localhost:8800$Xe/Q ]$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8m.room.join_rules!WFHIeSFQyuugGeBFxW:localhost:8800m)jm,a@anon-20191002_181700-382:localhost:8800&We3Q ]$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2Um.room.power_levels!WFHIeSFQyuugGeBFxW:localhost:8800m#m%@anon-20191002_181700-382:localhost:8800 Ve'Q ]$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIm.room.member!WFHIeSFQyuugGeBFxW:localhost:8800m}m@anon-20191002_181700-382:localhost:8800U e'Q  ]$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwm.room.create!WFHIeSFQyuugGeBFxW:localhost:8800m=m@anon-20191002_181700-382:localhost:8800 Te'Q ]$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0m.room.member!QMrkSPlQDGborAyWtQ:localhost:8800m{m@anon-20191002_181700-380:localhost:8800 Se'Q ]$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQm.room.member!QMrkSPlQDGborAyWtQ:localhost:8800m m e@anon-20191002_181700-381:localhost:8800,Re?Q ]$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsm.room.history_visibility!QMrkSPlQDGborAyWtQ:localhost:8800mm@anon-20191002_181700-380:localhost:8800$Qe/Q ]$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Fawm.room.join_rules!QMrkSPlQDGborAyWtQ:localhost:8800mrm!@anon-20191002_181700-380:localhost:8800&Pe3Q ]$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsm.room.power_levels!QMrkSPlQDGborAyWtQ:localhost:8800mm@anon-20191002_181700-380:localhost:8800 Oe'Q ]$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9km.room.member!QMrkSPlQDGborAyWtQ:localhost:8800m{m@anon-20191002_181700-380:localhost:8800N e'Q  ]$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngm.room.create!QMrkSPlQDGborAyWtQ:localhost:8800mm$@anon-20191002_181700-380:localhost:8800&Me3Q ]$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIa.madeup.test.state!mBQpGaIiadEuKBXfOw:localhost:8800m|m @anon-20191002_181700-378:localhost:8800!Le)Q ]$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMm.room.message!mBQpGaIiadEuKBXfOw:localhost:8800mm@anon-20191002_181700-378:localhost:8800 Ke'Q ]$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIm.room.member!mBQpGaIiadEuKBXfOw:localhost:8800m*m@anon-20191002_181700-379:localhost:8800,Je?Q ]$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcm.room.history_visibility!mBQpGaIiadEuKBXfOw:localhost:8800m3m`@anon-20191002_181700-378:localhost:8800$Ie/Q ]$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1Im.room.join_rules!mBQpGaIiadEuKBXfOw:localhost:8800mBmy@anon-20191002_181700-378:localhost:8800&He3Q ]$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAm.room.power_levels!mBQpGaIiadEuKBXfOw:localhost:8800mmq@anon-20191002_181700-378:localhost:8800 Ge'Q ]$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwm.room.member!mBQpGaIiadEuKBXfOw:localhost:8800mom/@anon-20191002_181700-378:localhost:8800F e'Q  ]$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIm.room.create!mBQpGaIiadEuKBXfOw:localhost:8800mԽm[@anon-20191002_181700-378:localhost:8800 Ee'Q ]$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgm.room.member!xXYMxashIZAUOTuGAJ:localhost:8800m0m@anon-20191002_181700-377:localhost:8800De#Q ]$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUm.room.test!xXYMxashIZAUOTuGAJ:localhost:8800mлKmлO@anon-20191002_181700-377:localhost:8800 >Qj1Uq8 [ " w E a ( } D ` '~E c,Hd-NQm68]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQA6[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPDK6[!@anon-20191002_181700-43:localhost:8800CHTLJMKZABJ8]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!@anon-20191002_181700-501:localhost:8800YBYGOFEONK5Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVL6[!@anon-20191002_181700-49:localhost:8800XXZIHXDAZYT6[!@anon-20191002_181700-49:localhost:8800TMAZYGEOXOS8]!@anon-20191002_181700-499:localhost:8800VXSECXNERA8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSC8]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ8]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]!@anon-20191002_181700-493:localhost:8800GRPWUCANVU8]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU6[!@anon-20191002_181700-48:localhost:8800XFFXACSKIDR6[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWQ8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ 8]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS 6[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLUN8]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH 8]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ 8]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA 8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]!@anon-20191002_181700-462:localhost:8800SKOLIDFQEN8]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZU8]!@anon-20191002_181700-460:localhost:8800GJEFYISBJP1[@anon-20191002_181700-45:localhost:8800xyzzyM8]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSG8]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC1[@anon-20191002_181700-44:localhost:8800xyzzyL8]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJ8]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK g * T~=gg ]!c@anon-20191002_181700-388:localhost:8800WFNOXGPIPEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF95VU5hemV6fmJedmtMaFgKMDAyZnNpZ25hdHVyZSDz7FxYpShuVIV36DhvtTaitY3TlWlv68YskuY-1Ot6Qwog ]!c@anon-20191002_181700-387:localhost:8800AJRMDNNIDHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlia0JtQkBmV3VPS09kanUKMDAyZnNpZ25hdHVyZSCHeSHljZsgNpyA0gvbQbkJ8-4G5t4Ywq-t7geng7Ih6Qog ]!c@anon-20191002_181700-386:localhost:8800QTCKZJPBWSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9Fc0wuMl8xM1c4YW1CREgKMDAyZnNpZ25hdHVyZSA3WuGT1fvmgWAOhsMNpgmzTj0NDM9yJnvO3x46JsV22Qog ]!c@anon-20191002_181700-385:localhost:8800ZHNFADRSTEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwog]!c@anon-20191002_181700-384:localhost:8800UKXQVESHRPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrSWNNYyMtcztDOTpSXl4KMDAyZnNpZ25hdHVyZSB-FTDcMYIrakCJawDmb3aBv18F3P31mU-pI3jX6M9MQQog]!c@anon-20191002_181700-383:localhost:8800CPGAGQTCJJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQog]!c@anon-20191002_181700-382:localhost:8800KSBAPZNICMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9gog]!c@anon-20191002_181700-381:localhost:8800CRNWPBWJUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6Bjdgog]!c@anon-20191002_181700-380:localhost:8800KLOHIVURCFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgog]!c@anon-20191002_181700-379:localhost:8800XGMNNMSEOTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwog]!c@anon-20191002_181700-378:localhost:8800BACPAMXENXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgo 7IG@@ @ @ @ @ @ GGGGGI I ?]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZmON?]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQm=[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXm'#"?]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZGmӹ?]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZmӶw?]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEPmӢY?]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJAmӌ?]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKNmӇS?]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBAmEl?]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQBm-?]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAHm1?]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHNm?]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTBme?]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXRm֬?]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBKm։?]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJMmh?]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNEm\?]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIOmH?]!@anon-20191002_181700-462:localhost:8800SKOLIDFQENm??]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZUm%?]!@anon-20191002_181700-460:localhost:8800GJEFYISBJPm ?]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSGmv?]!@anon-20191002_181700-456:localhost:8800CRSASZJZPSm?]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLAmը?]!@anon-20191002_181700-452:localhost:8800NISMZSIYDMmՇP?]!@anon-20191002_181700-450:localhost:8800JKUEUBZDECm^8[@anon-20191002_181700-44:localhost:8800xyzzym-#?]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHYmS?]!@anon-20191002_181700-448:localhost:8800LJFADOXYLPm?R?]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLWm4^?]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJm?]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYFm?]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJmd?]!@anon-20191002_181700-443:localhost:8800EZTQKOQREEm?]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBAmړ?]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQVm?]!@anon-20191002_181700-440:localhost:8800OHPAOKURKKm?]!@anon-20191002_181700-439:localhost:8800CVIXABNKXUmB?]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBFm;?]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHMm?]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHEmԭ?]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKMmԞ?]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZmԙ?]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQBmԃ?]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRNmvY?]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDLmr)?]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCCm]?]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDNmH?]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYKmF?]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCAm04?]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJm?]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYMm?]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSRm?]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTTmk?]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWHm B^7c.c.Z% Q  } H  t ? k 6  d /[&R~Iu@ l^)U 2[@anon-20191002_181700-48:localhost:8800m6%2[@anon-20191002_181700-48:localhost:8800m6$4]@anon-20191002_181700-419:localhost:8800mӹ4]@anon-20191002_181700-418:localhost:8800mӶw4]@anon-20191002_181700-417:localhost:8800mӢY4]@anon-20191002_181700-416:localhost:8800mӌ4]@anon-20191002_181700-415:localhost:8800mӇS4]@anon-20191002_181700-414:localhost:8800mr4]@anon-20191002_181700-413:localhost:8800m_c4]@anon-20191002_181700-412:localhost:8800mZU4]@anon-20191002_181700-488:localhost:8800m!4]@anon-20191002_181700-486:localhost:8800m4]@anon-20191002_181700-484:localhost:8800mײ4]@anon-20191002_181700-482:localhost:8800mא4]@anon-20191002_181700-480:localhost:8800mm4]@anon-20191002_181700-479:localhost:8800mb4]@anon-20191002_181700-478:localhost:8800mON4]@anon-20191002_181700-477:localhost:8800mEl4]@anon-20191002_181700-476:localhost:8800m-4]@anon-20191002_181700-475:localhost:8800m14]@anon-20191002_181700-473:localhost:8800m4]@anon-20191002_181700-471:localhost:8800me4]@anon-20191002_181700-469:localhost:8800m֬4]@anon-20191002_181700-467:localhost:8800m։4]@anon-20191002_181700-465:localhost:8800mh4]@anon-20191002_181700-464:localhost:8800m\4]@anon-20191002_181700-463:localhost:8800mH4]@anon-20191002_181700-462:localhost:8800m?4]@anon-20191002_181700-461:localhost:8800m%4]@anon-20191002_181700-460:localhost:8800m 4]@anon-20191002_181700-458:localhost:8800mv4]@anon-20191002_181700-456:localhost:8800m4]@anon-20191002_181700-454:localhost:8800mը4]@anon-20191002_181700-452:localhost:8800mՇP4]@anon-20191002_181700-450:localhost:8800m^2[@anon-20191002_181700-44:localhost:8800m-#4]@anon-20191002_181700-449:localhost:8800mS4]@anon-20191002_181700-448:localhost:8800m?R4]@anon-20191002_181700-447:localhost:8800m4^4]@anon-20191002_181700-446:localhost:8800m4]@anon-20191002_181700-445:localhost:8800m4]@anon-20191002_181700-444:localhost:8800md4]@anon-20191002_181700-443:localhost:8800m4]@anon-20191002_181700-442:localhost:8800mړ4]@anon-20191002_181700-441:localhost:8800m4]@anon-20191002_181700-440:localhost:8800m4]@anon-20191002_181700-439:localhost:8800mB4]@anon-20191002_181700-438:localhost:8800m;4]@anon-20191002_181700-437:localhost:8800m4]@anon-20191002_181700-436:localhost:8800mԭ4]@anon-20191002_181700-435:localhost:8800mԞ4]@anon-20191002_181700-434:localhost:8800mԙ4]@anon-20191002_181700-433:localhost:8800mԃ4]@anon-20191002_181700-432:localhost:8800mvY4]@anon-20191002_181700-431:localhost:8800mr)4]@anon-20191002_181700-430:localhost:8800m]4]@anon-20191002_181700-429:localhost:8800mH4]@anon-20191002_181700-428:localhost:8800mF4]@anon-20191002_181700-427:localhost:8800m044]@anon-20191002_181700-426:localhost:8800m4]@anon-20191002_181700-425:localhost:8800m4]@anon-20191002_181700-424:localhost:8800m4]@anon-20191002_181700-422:localhost:8800mk4]@anon-20191002_181700-421:localhost:8800m4]@anon-20191002_181700-420:localhost:8800m2[@anon-20191002_181700-41:localhost:8800m'#"   *t>eQau$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2121}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA"], "type": "m.room.join_rules", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042340674, "hashes": {"sha256": "poy6uw79IjUh3TRgKJfKnY3CLtAGBEbmowv9TfdhEEI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j7LqLtBOeqJbUOIoc+2kbrovj8h3Kw2clKyHJvpS1Tkfj/GUkWy5sMsG1TF0pfYGvHkuraVhWag4LNp63Ec7Aw"}}, "unsigned": {"age_ts": 1570042340674}}k=eQac$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2120}{"auth_events": ["$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "type": "m.room.power_levels", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"users": {"@anon-20191002_181700-378:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042339100, "hashes": {"sha256": "L8vBLnBRRAVhN2iSqfUweL8Go8qzfIOG+5OeURX4jA8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "myD2kDG3R/F2rdDHA/TG4oZmMp9os9psTaRSuX02xistIKmT6xLDOSxGVJMsH462J6swC99AHr1CK8PZ9TsXDA"}}, "unsigned": {"age_ts": 1570042339100}}v<eQay$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2119}{"auth_events": ["$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI"], "prev_events": ["$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI"], "type": "m.room.member", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-378", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-378:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042338159, "hashes": {"sha256": "qMeaG6Kyee2cTrF3rpktNYUbIjhRpsG02309L27UASg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sot4XDbKSco8rYMlqxj7Og6o+Rxi8YV70lVUpFgydfBBrr/7Hsh3NFti+oKn6WiuZpjxMNbwPdULzeu58pH3AQ"}}, "unsigned": {"age_ts": 1570042338159}}i;eQa_$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2118}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-378:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042336445, "hashes": {"sha256": "pKrxjnKQfypQl2sFUEY9LnlasPl7lk/r6k5t5Gow2Cw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2YC4UbPGByCVvDVnR2jgv9S2rMC94G4O7X19Z/iN2dPQPOC4okB/ALLLr86jlPQ2AXuyWNpTRO8zqNMNVKy/DA"}}, "unsigned": {"age_ts": 1570042336445}} IFoDmBk@i>T)}R' { P % y N # w L ! u J  s H qqFoDmBQ*Q!wCsDjKBtuUbrmZgjsB:localhost:8800>>*Q!wCsDjKBtuUbrmZgjsB:localhost:8800==*Q!wCsDjKBtuUbrmZgjsB:localhost:8800<<*Q!wCsDjKBtuUbrmZgjsB:localhost:8800;;*Q!wCsDjKBtuUbrmZgjsB:localhost:8800::*Q!wIhMbfQzYbJobPdwyi:localhost:8800{{*Q!wIhMbfQzYbJobPdwyi:localhost:8800zz*Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800  *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wAyboOFgsOPwkmgMAI:localhost:8800??*Q!wAyboOFgsOPwkmgMAI:localhost:8800>>*Q!wAyboOFgsOPwkmgMAI:localhost:8800==*Q!wAyboOFgsOPwkmgMAI:localhost:8800<<*Q!wAyboOFgsOPwkmgMAI:localhost:8800;;*Q!wAyboOFgsOPwkmgMAI:localhost:8800::*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!whuymJoLfUdkFdxoyE:localhost:8800 8 8*Q!whuymJoLfUdkFdxoyE:localhost:8800 7 7*Q!whuymJoLfUdkFdxoyE:localhost:8800 6 6*Q!whuymJoLfUdkFdxoyE:localhost:8800 5 5*Q!whuymJoLfUdkFdxoyE:localhost:8800 4 4*Q!whuymJoLfUdkFdxoyE:localhost:8800 3 3*Q!whuymJoLfUdkFdxoyE:localhost:8800 2 2*Q!whuymJoLfUdkFdxoyE:localhost:8800 1 1*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wLitJYvgvNJzanSIvO:localhost:8800bb*Q!wLitJYvgvNJzanSIvO:localhost:8800aa*Q!wLitJYvgvNJzanSIvO:localhost:8800``*Q!wLitJYvgvNJzanSIvO:localhost:8800__*Q!wLitJYvgvNJzanSIvO:localhost:8800^^*Q!wLitJYvgvNJzanSIvO:localhost:8800]]*Q!wIhMbfQzYbJobPdwyi:localhost:8800*Q!wIhMbfQzYbJobPdwyi:localhost:8800~~*Q!wIhMbfQzYbJobPdwyi:localhost:8800}}*Q!wIhMbfQzYbJobPdwyi:localhost:8800|| 9r 6 o lP4mCY e]]Q=$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio@anon-20191002_181700-395:localhost:8800@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800joinanon-20191002_181700-395CX e]]Q=$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U@anon-20191002_181700-394:localhost:8800@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800joinanon-20191002_181700-394CW e]]Q=$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY@anon-20191002_181700-393:localhost:8800@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800joinanon-20191002_181700-393CV e]]Q=$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI@anon-20191002_181700-392:localhost:8800@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800joinanon-20191002_181700-392CU e]]Q=$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY@anon-20191002_181700-391:localhost:8800@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800joinanon-20191002_181700-391CT e]]Q=$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk@anon-20191002_181700-390:localhost:8800@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800joinanon-20191002_181700-390CS e]]Q=$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k@anon-20191002_181700-389:localhost:8800@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800joinanon-20191002_181700-389CR e]]Q=$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA@anon-20191002_181700-388:localhost:8800@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800joinanon-20191002_181700-388CQ e]]Q=$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew@anon-20191002_181700-387:localhost:8800@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800joinanon-20191002_181700-387CP e]]Q=$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY@anon-20191002_181700-386:localhost:8800@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800joinanon-20191002_181700-386*O e]]Q$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g@anon-20191002_181700-385:localhost:8800@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800banCN e]]Q=$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w@anon-20191002_181700-385:localhost:8800@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800joinanon-20191002_181700-385CM e]]Q=$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0@anon-20191002_181700-384:localhost:8800@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800joinanon-20191002_181700-384CL e]]Q=$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0@anon-20191002_181700-383:localhost:8800@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800joinanon-20191002_181700-383CK e]]Q=$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI@anon-20191002_181700-382:localhost:8800@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800joinanon-20191002_181700-382*J e]]Q$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0@anon-20191002_181700-381:localhost:8800@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800banCI e]]Q=$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ@anon-20191002_181700-381:localhost:8800@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800joinanon-20191002_181700-381CH e]]Q=$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k@anon-20191002_181700-380:localhost:8800@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800joinanon-20191002_181700-380CG e]]Q=$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI@anon-20191002_181700-379:localhost:8800@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800joinanon-20191002_181700-379CF e]]Q=$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw@anon-20191002_181700-378:localhost:8800@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800joinanon-20191002_181700-378 I}KQj8p> v D  | J   P  W % W % ] +c1j8p> vD^,11e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY '1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA #1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg 1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c 1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A S1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2EgcsD1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc 1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs31e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGst0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ%1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AD1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y81e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4a1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwg1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o u1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w]1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEK1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4S1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAm1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU71e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAk1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo 1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 @1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 11e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI+1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM21e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQi1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4o1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwE1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8{1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEE1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc 11e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQP1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04YO1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI  wsBeQas$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2125}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM"], "type": "a.madeup.test.state", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"my_key": "before"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042344572, "hashes": {"sha256": "78zmQozj9Ij8qlmhwcIJZi54BzNN/Yqvq3wViXK7BfY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SSoMD7eJeip41cLud62qnpIcMSmkRBcjRymGAMAhHTonPYAD7SxJTcUGpkYLvAp7VCPK/FbetMqkszoeRL/UDQ"}}, "unsigned": {"age_ts": 1570042344572}}AeQm$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "txn_id": "365", "stream_ordering": 2124}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI"], "type": "m.room.message", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"body": "before", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042343908, "hashes": {"sha256": "0V43EgAoRtiLcRLtYwCmzDKB3sRNzh1EoG8lmW6tAS8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HENcCNu6cIkDQS7a446akuAgktM+wJKdekZ3EfW4scNasbUbUT5UeXCd4YuEdsen0sKP5c5aeAdR9k8vnLPDAg"}}, "unsigned": {"age_ts": 1570042343908}}V@eQa9$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 396, "stream_ordering": 2123}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I"], "prev_events": ["$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc"], "type": "m.room.member", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-379:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-379", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-379:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042342954, "hashes": {"sha256": "fBNYqgOUizJvnukSWKB46kRcm+a/modLBOs/nrfmhnU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YPFaaf9CnyElGG2UeB81uFFtrh0JiJVGPOB8HJXNbrw6X9AfOhO6DUk1+/ImstQ9CPlg7rAoFlPCmt/AID0VCg"}}, "unsigned": {"age_ts": 1570042342954}}?eQa$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2122}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I"], "type": "m.room.history_visibility", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042341683, "hashes": {"sha256": "OaCNa7HTIw6XjoCK+pkDIBFAGS74ObGh3V0FEbrp3x8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1/YRb75XyGTUAwt6rmF90F1BMkH/qBql+dpTJZcHhDZs0vUNYVID9MsC64Cbd3fk9DTwUeI60oFjXGRltbXIAQ"}}, "unsigned": {"age_ts": 1570042341683}} RG j  X &  L+ _ -e3k9q? ~8 W%Q}K]wEp> v D  S/v0H7p7kqDN8x1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM U1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0&1e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g @1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 ,1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38+1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM :1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4-1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA 1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk:1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Yp1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UH1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw%1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQI1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE>1e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk61e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts81e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicG1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0t1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI~1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScr1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGES1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w ~1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 b1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns ?1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc.0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcD1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00S1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00Q1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00P1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 21e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA d SH ! Y ' _ -+e3]k9Wq? wE}KQ%j8p> | J v D  21e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgS1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgR1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU^1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU]1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU\1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoF1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoE1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoD1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s ?1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s >1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s =1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg;1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg:1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg91e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8 &1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm41e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm41e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI71e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI61e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI51e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie471e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie461e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie451e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg T1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg S1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg R1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA ;1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoF1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoE1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoD1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8 i1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8 h1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8 g1e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB01e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4  i 4 gih5 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwo=1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgo>1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgo?1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQo91cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtpJjJyXl9fZkwjbXE5QncKMDAyZnNpZ25hdHVyZSAlQMVETAI9JwraP-0coRf6nU91QgVwG3VZKwPV1QeoogoB1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpGdCZ5bVg2OF5MNENsZTUKMDAyZnNpZ25hdHVyZSAGdnSPXhdcyvh2jrndHbGjSQGNcRvNC_jdA14cLC5axwoA1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQo@f1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwo81cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQo<1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1Owo;1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAo:   *tFeQau$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2129}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls"], "type": "m.room.join_rules", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042348658, "hashes": {"sha256": "C/xdfH/ox6hmhjQ7iUp0cgu1bSENk+x4itKUB0MN2Lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EL0x2AuledF7flldRT5PkvVTgNtQ/vWSk+wF/E1P/AqIBadeoyUHUIrlvhHaoTMAtwPnmeIMBJiSy0J4qUrdAA"}}, "unsigned": {"age_ts": 1570042348658}}kEeQac$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2128}{"auth_events": ["$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "type": "m.room.power_levels", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"users": {"@anon-20191002_181700-380:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042347957, "hashes": {"sha256": "PVWII/xRkAplBRfzz9uHAIgrTdAFRYe6LmYQ3LoUFxc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sp+e4P1QpZxAsz5kby8HKVapaREhOq5ySwyy5/AX0zP55+dfhQkPxqZTR/1sgMzIFHZOWwJFNpU/gbluzlf9AQ"}}, "unsigned": {"age_ts": 1570042347957}}vDeQay$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2127}{"auth_events": ["$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng"], "prev_events": ["$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng"], "type": "m.room.member", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-380", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-380:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042347387, "hashes": {"sha256": "97qj4tCCkPRnpHXKBvrSlFX2zFi8smAW6EYoogDO8A8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F9wLHiUk53p4c2ybGUsa1EOmG7PjwG+dQ7k2NW9j/cMQNQN3KtVlr9bYpG2KnhGVeaZgRt7+5KfRbZ/+ytWUDw"}}, "unsigned": {"age_ts": 1570042347387}}iCeQa_$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2126}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-380:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042346713, "hashes": {"sha256": "bYKT5kMyQ7wUaW/WvV5nRy7m6p/qEP03+GtZ9N/1Us8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IBOhhFG8wOhZMco2T5W3pLaQiDNskh0o6qx50VabvKaZv6zk2+Srj5NlDZfY/GLqJdWmZmyOWUdMZ9GcsbZxDA"}}, "unsigned": {"age_ts": 1570042346713}} XYh@x (xX0P( `0h@ x P ( h @   0  8  p H 8 X`8pH `Ph @'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!YtVXQjSPgVtbxrzUOA:localhost:8800]'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800^'Q!YtVXQjSPgVtbxrzUOA:localhost:8800Z'Q!YtVXQjSPgVtbxrzUOA:localhost:8800Y'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800['Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!ZOwibbprUCQrSJQCrx:localhost:8800_'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 v'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 o'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 n'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 m'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 l'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 k'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 j'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800\'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800r'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800q'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800p'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800o'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800n'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800m'Q!ZOwibbprUCQrSJQCrx:localhost:8800d'Q!ZOwibbprUCQrSJQCrx:localhost:8800c'Q!ZOwibbprUCQrSJQCrx:localhost:8800b'Q!ZOwibbprUCQrSJQCrx:localhost:8800a'Q!ZOwibbprUCQrSJQCrx:localhost:8800`@'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800 (% i  r  ' 0 3U :`c!h}Q/ es!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rules$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgj|Q3 er!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM {Q']eq!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAdzQ' ep!zoTQAhGwmDDUECKtbL:localhost:8800m.room.create$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIpyQ? en!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibility$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_UhxQ/ em!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rules$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cjwQ3 el!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550 vQ']ek!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwduQ' ej!NeYaCeYNFATCqlrlGT:localhost:8800m.room.create$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8ptQ? eh!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibility$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMhsQ/ eg!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rules$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwjrQ3 ef!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU qQ']ee!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYdpQ' ed!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog8oQ']eea!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w nQ']e`!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wpmQ? e_!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibility$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MhlQ/ e^!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rules$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssjkQ3 e]!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ jQ']e\!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0diQ' e[!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc hQ']eZ!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0pgQ? eY!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibility$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YhfQ/ eX!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rules$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8jeQ3 eW!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U dQ']eV!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIdcQ' eU!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw8bQ']eeT!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ aQ']eS!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQp`Q? eR!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibility$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsh_Q/ eQ!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rules$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Fawj^Q3 eP!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls T\/{N!U( 7 W*vIi<yLl? _ 2  ~nA T ) } Q $ q D  dT',Q+Q !PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800  ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!QWLJZmJqjWZjVOjdYF:localhost:8800%%,Q!QWLJZmJqjWZjVOjdYF:localhost:8800$$,Q!QWLJZmJqjWZjVOjdYF:localhost:8800##,Q!QWLJZmJqjWZjVOjdYF:localhost:8800"",Q!QWLJZmJqjWZjVOjdYF:localhost:8800!!+Q !QWLJZmJqjWZjVOjdYF:localhost:8800  ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 +Q !PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ ~,Q!PgNDjhhIBAXKryuGKy:localhost:8800 } },Q!PgNDjhhIBAXKryuGKy:localhost:8800 | |,Q!PgNDjhhIBAXKryuGKy:localhost:8800 { {,Q!PgNDjhhIBAXKryuGKy:localhost:8800 z z,Q!PgNDjhhIBAXKryuGKy:localhost:8800 y y,Q!PgNDjhhIBAXKryuGKy:localhost:8800 x x+Q !PgNDjhhIBAXKryuGKy:localhost:8800 w w,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 +Q !PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !QnmLrBAxeItdHsaxWf:localhost:8800 g g,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 +Q !QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QcaNrIiUsWpTiVGOnt:localhost:8800<<,Q!QcaNrIiUsWpTiVGOnt:localhost:8800::,Q!QcaNrIiUsWpTiVGOnt:localhost:880088,Q!QcaNrIiUsWpTiVGOnt:localhost:880066+Q !QcaNrIiUsWpTiVGOnt:localhost:880055*Q!QZhNrNpwObZGJZpdAG:localhost:8800*Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 )Q !QZhNrNpwObZGJZpdAG:localhost:8800 ,Q!QMrkSPlQDGborAyWtQ:localhost:8800TT,Q!QMrkSPlQDGborAyWtQ:localhost:8800SS,Q!QMrkSPlQDGborAyWtQ:localhost:8800RR,Q!QMrkSPlQDGborAyWtQ:localhost:8800QQ,Q!QMrkSPlQDGborAyWtQ:localhost:8800PP,Q!QMrkSPlQDGborAyWtQ:localhost:8800OO+Q !QMrkSPlQDGborAyWtQ:localhost:8800NN,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800+Q !QFiJrWFFeTAAAUCjCE:localhost:8800,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 T\/{N!U( 7 W*vIi<yLl? _ 2  ~nA T ) } Q $ q D  dT',Q+Q !PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800  ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!QWLJZmJqjWZjVOjdYF:localhost:8800%%,Q!QWLJZmJqjWZjVOjdYF:localhost:8800$$,Q!QWLJZmJqjWZjVOjdYF:localhost:8800##,Q!QWLJZmJqjWZjVOjdYF:localhost:8800"",Q!QWLJZmJqjWZjVOjdYF:localhost:8800!!+Q !QWLJZmJqjWZjVOjdYF:localhost:8800  ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 +Q !PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ ~,Q!PgNDjhhIBAXKryuGKy:localhost:8800 } },Q!PgNDjhhIBAXKryuGKy:localhost:8800 | |,Q!PgNDjhhIBAXKryuGKy:localhost:8800 { {,Q!PgNDjhhIBAXKryuGKy:localhost:8800 z z,Q!PgNDjhhIBAXKryuGKy:localhost:8800 y y,Q!PgNDjhhIBAXKryuGKy:localhost:8800 x x+Q !PgNDjhhIBAXKryuGKy:localhost:8800 w w,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 +Q !PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !QnmLrBAxeItdHsaxWf:localhost:8800 g g,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 +Q !QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QcaNrIiUsWpTiVGOnt:localhost:8800<<,Q!QcaNrIiUsWpTiVGOnt:localhost:8800::,Q!QcaNrIiUsWpTiVGOnt:localhost:880088,Q!QcaNrIiUsWpTiVGOnt:localhost:880066+Q !QcaNrIiUsWpTiVGOnt:localhost:880055*Q!QZhNrNpwObZGJZpdAG:localhost:8800*Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 )Q !QZhNrNpwObZGJZpdAG:localhost:8800 ,Q!QMrkSPlQDGborAyWtQ:localhost:8800TT,Q!QMrkSPlQDGborAyWtQ:localhost:8800SS,Q!QMrkSPlQDGborAyWtQ:localhost:8800RR,Q!QMrkSPlQDGborAyWtQ:localhost:8800QQ,Q!QMrkSPlQDGborAyWtQ:localhost:8800PP,Q!QMrkSPlQDGborAyWtQ:localhost:8800OO+Q !QMrkSPlQDGborAyWtQ:localhost:8800NN,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800+Q !QFiJrWFFeTAAAUCjCE:localhost:8800,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 JHj8q?  w E  } K  %  W W % ] +c1i7o= uD|P1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI }1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E e1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 G1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 51e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ N1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o G0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo71e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgj1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8E1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8~1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc Q21e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4:1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs 1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM?1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk41e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIZ1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk(1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk@1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ'1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs&1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI61e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk '1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMf1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkZ1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-021e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAN1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fsq1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl041e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8f1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk51e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAq1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwe1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMb1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q  wiJeQa_$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2133}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-382:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042354237, "hashes": {"sha256": "gtaijJr1YG3KMJ79o5HqkQ2c5RZtxhNeyBd4n5ibP3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4+vgSjn8Mg0RPQJpyZbNyX3nhFtdwhgiQfqyB7LZP5AYhizgsFdNFOOe05DW9GRnOugZXpHEXo4K84QDsrILBg"}}, "unsigned": {"age_ts": 1570042354237}}mIeQag$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2132}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ"], "type": "m.room.member", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-381:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042351995, "hashes": {"sha256": "J5SwjV0ij2dPoEZbIuHWDU/gdHBn+CsGrocXRVNDq6k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hy4GgdV/6h6eHJLpQUl0HtKv4uyaFVHtXHP4t7oJMcNfOPjcFD8eGiRY2jnczEQeNB0uU4jCXLzSNTLN2G73Ag"}}, "unsigned": {"age_ts": 1570042351995, "replaces_state": "$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ"}}VHeQa9$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 398, "stream_ordering": 2131}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw"], "prev_events": ["$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs"], "type": "m.room.member", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-381:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-381", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-381:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042350730, "hashes": {"sha256": "xIttrgS0C1jhjqpV+tapJemw/0VC90sIfEfIcGhLEEA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2YYWtCCe4ekTyAjlqeQ+OBWeM/Kf//kKlihlVUX0QfHVHCkzH1wj7GDal+23BJyiKIC3piXzqb9WjPwphVamAg"}}, "unsigned": {"age_ts": 1570042350730}}GeQa$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2130}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw"], "type": "m.room.history_visibility", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042349299, "hashes": {"sha256": "VnZS6zSWHVfDxYf+ecIV+vvScOjlyVvnd6/LqwAfxLg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xJG7NuIZ1dnzBm13kTIgGm4cKpUn/5HrGfgWh8BH3rN+iHwVPqzdE6J5BCyxzxq5KO7U8WBrA8YyzAky17GJAQ"}}, "unsigned": {"age_ts": 1570042349299}} BL:g<R' Fo { P % y N # w L ! i>k@eT u J  s H c8 g<c8 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VUibrTIkcRbfrogbQV:localhost:8800 ! !*Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!VUibrTIkcRbfrogbQV:localhost:8800 % %*Q!VUibrTIkcRbfrogbQV:localhost:8800 $ $*Q!VUibrTIkcRbfrogbQV:localhost:8800 # #*Q!VUibrTIkcRbfrogbQV:localhost:8800 " "*Q!WYyiQAVvitxsLZKVCG:localhost:8800 B B*Q!WYyiQAVvitxsLZKVCG:localhost:8800 A A*Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ @*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? ?*Q!WYyiQAVvitxsLZKVCG:localhost:8800 > >*Q!WYyiQAVvitxsLZKVCG:localhost:8800 = =*Q!WYyiQAVvitxsLZKVCG:localhost:8800 < <*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ; ;*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VhUAklonNaWKRnLkcr:localhost:8800 q-*Q!WFHIeSFQyuugGeBFxW:localhost:8800ZZ*Q!WFHIeSFQyuugGeBFxW:localhost:8800YY*Q!WFHIeSFQyuugGeBFxW:localhost:8800XX*Q!WFHIeSFQyuugGeBFxW:localhost:8800WW*Q!WFHIeSFQyuugGeBFxW:localhost:8800VV*Q!WFHIeSFQyuugGeBFxW:localhost:8800UU}V*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WWZVpyLeZfyfpWidLx:localhost:8800ff*Q!WWZVpyLeZfyfpWidLx:localhost:8800ee*Q!WWZVpyLeZfyfpWidLx:localhost:8800dd*Q!WWZVpyLeZfyfpWidLx:localhost:8800cc*Q!WWZVpyLeZfyfpWidLx:localhost:8800bb*Q!WWZVpyLeZfyfpWidLx:localhost:8800aa*Q!WWZVpyLeZfyfpWidLx:localhost:8800``*Q!WWZVpyLeZfyfpWidLx:localhost:8800__*Q!WWZVpyLeZfyfpWidLx:localhost:8800^^*Q!WWZVpyLeZfyfpWidLx:localhost:8800]]*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 a} { y w u sqomkigeca~^eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800~]eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~\eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800~[eeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~ZeeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~YeeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800~XeeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~WeeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~VeeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800~UeeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~TeeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~SeeQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~ReeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800~QeeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~PeeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800~OeeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800~NeeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~MeeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800~LeeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800~KeeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~JeeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800~IeeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800~HeeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~GeeQ$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~FeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800~EeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~DeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~CeeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800~BeeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~AeeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~@eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800 NqF y J # u}R'  w L !>oDmBk@D)Ti>qF s H  N  %Fo i *Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' d*Q!aLxrqpqLkbzyIxGgpk:localhost:8800i'*Q!ZaOktTIVeRgBXxfubH:localhost:8800)*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800G*Q!aHyAJEOSdKqTiRjOvw:localhost:8800F*Q!aHyAJEOSdKqTiRjOvw:localhost:8800Eo'*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 & c*Q!ZaltdIYVZjCHsCWTZD:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800{*Q!ZOwibbprUCQrSJQCrx:localhost:8800z*Q!ZOwibbprUCQrSJQCrx:localhost:8800y*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800 J*Q!aHyAJEOSdKqTiRjOvw:localhost:8800I*Q!aHyAJEOSdKqTiRjOvw:localhost:8800H*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800~*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800!K*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800"L*Q!ZOwibbprUCQrSJQCrx:localhost:8800| %V*Q!ZOwibbprUCQrSJQCrx:localhost:8800}*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800 *Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( e*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) f*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * g*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + h ?CJ P  V  \ b & h ,x7v:E LOZ]Z> ]  @anon-20191002_181700-414:localhost:8800m&\9 ]@anon-20191002_181700-416:localhost:8800a&\9 ]@anon-20191002_181700-414:localhost:8800a&\> ] @anon-20191002_181700-412:localhost:8800m&\&> ] @anon-20191002_181700-413:localhost:8800m&\LV9 ]@anon-20191002_181700-415:localhost:8800a&\> ]  @anon-20191002_181700-411:localhost:8800m&\9 ]@anon-20191002_181700-413:localhost:8800a&\9 ]@anon-20191002_181700-411:localhost:8800a&\> ] @anon-20191002_181700-408:localhost:8800m&\= ]  @anon-20191002_181700-409:localhost:8800m&\V 9 ]@anon-20191002_181700-412:localhost:8800a&\> ]  @anon-20191002_181700-407:localhost:8800m&\9 ]@anon-20191002_181700-410:localhost:8800a&\9 ]@anon-20191002_181700-409:localhost:8800a&\9 ]@anon-20191002_181700-408:localhost:8800a&\> ] @anon-20191002_181700-404:localhost:8800m&\ 2= ]  @anon-20191002_181700-405:localhost:8800m&\V9 ]@anon-20191002_181700-407:localhost:8800a&\> ]  @anon-20191002_181700-403:localhost:8800m&\9 ]@anon-20191002_181700-406:localhost:8800a&\=~ ]  @anon-20191002_181700-401:localhost:8800m&\V9} ]@anon-20191002_181700-405:localhost:8800a&\9| ]@anon-20191002_181700-404:localhost:8800a&\9{ ]@anon-20191002_181700-403:localhost:8800a&\>z ]  @anon-20191002_181700-400:localhost:8800m&\9y ]@anon-20191002_181700-402:localhost:8800a&\9x ]@anon-20191002_181700-401:localhost:8800a&\>u ] @anon-20191002_181700-398:localhost:8800m&\=v ]  @anon-20191002_181700-399:localhost:8800m&\V9w ]@anon-20191002_181700-400:localhost:8800a&\>t ]  @anon-20191002_181700-397:localhost:8800m&\9s ]@anon-20191002_181700-399:localhost:8800a&\9r ]@anon-20191002_181700-397:localhost:8800a&\9q ]@anon-20191002_181700-398:localhost:8800a&\9p ]@anon-20191002_181700-396:localhost:8800a&\>o ]  @anon-20191002_181700-395:localhost:8800m&\"9n ]@anon-20191002_181700-395:localhost:8800a&\>m ]  @anon-20191002_181700-394:localhost:8800m&\29l ]@anon-20191002_181700-394:localhost:8800a&\>k ]  @anon-20191002_181700-393:localhost:8800m&\29j ]@anon-20191002_181700-393:localhost:8800a&\>i ]  @anon-20191002_181700-392:localhost:8800m&\9h ]@anon-20191002_181700-392:localhost:8800a&\>g ]  @anon-20191002_181700-391:localhost:8800m&\ 9f ]@anon-20191002_181700-391:localhost:8800a&\>e ]  @anon-20191002_181700-390:localhost:8800m&\29d ]@anon-20191002_181700-390:localhost:8800a&\>c ]  @anon-20191002_181700-389:localhost:8800m&\29b ]@anon-20191002_181700-389:localhost:8800a&\>a ]  @anon-20191002_181700-388:localhost:8800m&\<9` ]@anon-20191002_181700-388:localhost:8800a&\>_ ]  @anon-20191002_181700-387:localhost:8800m&\39^ ]@anon-20191002_181700-387:localhost:8800a&\>] ]  @anon-20191002_181700-386:localhost:8800m&\39\ ]@anon-20191002_181700-386:localhost:8800a&\=[ ] @anon-20191002_181700-385:localhost:8800m&\V>Z ]  @anon-20191002_181700-384:localhost:8800m&\j9Y ]@anon-20191002_181700-385:localhost:8800a&\9X ]@anon-20191002_181700-384:localhost:8800a&\=W ]  @anon-20191002_181700-383:localhost:8800m&\V>V ]  @anon-20191002_181700-382:localhost:8800m&\C9U ]@anon-20191002_181700-383:localhost:8800a&\ -RM H C > 9 4/*|%w rmhc T.Qe{!zoTQAhGwmDDUECKtbL:localhost:8800$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgT-Qez!zoTQAhGwmDDUECKtbL:localhost:8800$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wT,Qez!zoTQAhGwmDDUECKtbL:localhost:8800$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgT+Qey!zoTQAhGwmDDUECKtbL:localhost:8800$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQT*Qey!zoTQAhGwmDDUECKtbL:localhost:8800$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wT)Qex!zoTQAhGwmDDUECKtbL:localhost:8800$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQT(Qex!zoTQAhGwmDDUECKtbL:localhost:8800$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cT'Qew!zoTQAhGwmDDUECKtbL:localhost:8800$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cT&Qew!zoTQAhGwmDDUECKtbL:localhost:8800$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4cT%Qev!zoTQAhGwmDDUECKtbL:localhost:8800$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5YT$Qev!zoTQAhGwmDDUECKtbL:localhost:8800$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4cT#Qeu!zoTQAhGwmDDUECKtbL:localhost:8800$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5YT"Qet!zoTQAhGwmDDUECKtbL:localhost:8800$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskT!Qes!zoTQAhGwmDDUECKtbL:localhost:8800$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgT Qer!zoTQAhGwmDDUECKtbL:localhost:8800$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMTQeq!zoTQAhGwmDDUECKtbL:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhATQep!zoTQAhGwmDDUECKtbL:localhost:8800$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xITQeo!NeYaCeYNFATCqlrlGT:localhost:8800$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uATQen!NeYaCeYNFATCqlrlGT:localhost:8800$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_UTQem!NeYaCeYNFATCqlrlGT:localhost:8800$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cTQel!NeYaCeYNFATCqlrlGT:localhost:8800$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550TQek!NeYaCeYNFATCqlrlGT:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwTQej!NeYaCeYNFATCqlrlGT:localhost:8800$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8TQei!YtVXQjSPgVtbxrzUOA:localhost:8800$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27ETQeh!YtVXQjSPgVtbxrzUOA:localhost:8800$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMTQeg!YtVXQjSPgVtbxrzUOA:localhost:8800$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwTQef!YtVXQjSPgVtbxrzUOA:localhost:8800$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUTQee!YtVXQjSPgVtbxrzUOA:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYTQed!YtVXQjSPgVtbxrzUOA:localhost:8800$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogTQec!zsXPhIPzeXXLvuazzQ:localhost:8800$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoTQec!zsXPhIPzeXXLvuazzQ:localhost:8800$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcTQeb!zsXPhIPzeXXLvuazzQ:localhost:8800$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcTQea!zsXPhIPzeXXLvuazzQ:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gT Qe`!zsXPhIPzeXXLvuazzQ:localhost:8800$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wT Qe_!zsXPhIPzeXXLvuazzQ:localhost:8800$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MT Qe^!zsXPhIPzeXXLvuazzQ:localhost:8800$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssT Qe]!zsXPhIPzeXXLvuazzQ:localhost:8800$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQT Qe\!zsXPhIPzeXXLvuazzQ:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0TQe[!zsXPhIPzeXXLvuazzQ:localhost:8800$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcTQeZ!WFHIeSFQyuugGeBFxW:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0TQeY!WFHIeSFQyuugGeBFxW:localhost:8800$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YTQeX!WFHIeSFQyuugGeBFxW:localhost:8800$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8TQeW!WFHIeSFQyuugGeBFxW:localhost:8800$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UTQeV!WFHIeSFQyuugGeBFxW:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeITQeU!WFHIeSFQyuugGeBFxW:localhost:8800$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw "= @ O } 0\e)2Zi'aeQ' $4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.createmeQ? $x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibilityeeQ/ $-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rulesgeQ3 $BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels eQ']$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800aeQ' $FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800m.room.createmeQ? $Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800m.room.history_visibilityeeQ/ $i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rulesgeQ3 $XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels eQ']$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800a~eQ' $jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800m.room.createm}eQ? $-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibilitye|eQ/ $cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rulesg{eQ3 $eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels zeQ']$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800ayeQ' $iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800m.room.createmxeQ? $jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibilityeweQ/ $nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rulesgveQ3 $NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels ueQ']$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800ateQ' $4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create seQ']$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800 reQ']$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800mqeQ? $cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibilityepeQ/ $l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rulesgoeQ3 $SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels neQ']$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800ameQ' $m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create leQ']$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800mkeQ? $JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibilityejeQ/ $kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rulesgieQ3 $HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels heQ']$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800ageQ' $CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create  NeQa$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2137}{"auth_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U", "$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "prev_events": ["$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8"], "type": "m.room.history_visibility", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042359606, "hashes": {"sha256": "1OOUHGoq1ZRqxrRh37I1Gy2UTwbT5X19TaMoP+sPU6Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g28dz8H98ut9hDpGQggqKn8U0dI/IpYTIIPDxz5claNQ6Ybl9ZL+9YxwYpxkVU05nRIz3/OgkJGfxawDpgxWDw"}}, "unsigned": {"age_ts": 1570042359606}}tMeQau$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2136}{"auth_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U", "$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "prev_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U"], "type": "m.room.join_rules", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042358122, "hashes": {"sha256": "BSs4HR+CO7e4GB+ixjQ0vrBmoawHApSPsUOytljUz8s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NwB12UPCZqo5FGPaCC6HJQ4fdWVjDVu2YJhEz1/WJ2WBn/yT797tHCnV6Q2Pm4EqtpjdwRzP4deSBBxpcJr3DQ"}}, "unsigned": {"age_ts": 1570042358122}}kLeQac$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2135}{"auth_events": ["$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "prev_events": ["$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "type": "m.room.power_levels", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"users": {"@anon-20191002_181700-382:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042356484, "hashes": {"sha256": "Sf3qqG0vk+tOmzj//39tBdCkfh2deQHqQK3hG4Jf7kQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j7lObD854p/UdIfJ+knB5Z2XzVyB6oONZH7vfTjBB1ZE2Hi7BB3SAJ1VH+8gSEtoGyILpcfeyseGcaQHq4kfCw"}}, "unsigned": {"age_ts": 1570042356484}}vKeQay$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2134}{"auth_events": ["$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw"], "prev_events": ["$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw"], "type": "m.room.member", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-382", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-382:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042355069, "hashes": {"sha256": "TEvO5K0HJiPtMnn1da+RGfKKwMOhppr13rkgZ9ld3f4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WUpvM9JokZ7jm57EotOYDmXJd2/ZR0wXtm4nfdHgx6/aTAJjvIX1Aa7LOKXfLQ9qRTu9Ehczcrck+/HoWI34Dw"}}, "unsigned": {"age_ts": 1570042355069}} T & M. \|E>6t l d eeQ$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800ˁeeQ$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800[eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800%eeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800OeeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800 SeeQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800 feeQ$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800ρeeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800seeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800&eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800ceeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck!duCKuavMBSfRbTFPsc:localhost:8800eeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800eeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU!QZhNrNpwObZGJZpdAG:localhost:8800 eeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800 YeeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800CeeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800jeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800 eeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800]eeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800:eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800<eeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800  4 k 9md]c@anon-20191002_181700-428:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwo127.0.0.1d]c@anon-20191002_181700-427:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7Cllgo127.0.0.1d]c@anon-20191002_181700-426:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAo127.0.0.1d]c@anon-20191002_181700-425:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAo127.0.0.1d]c@anon-20191002_181700-424:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgo127.0.0.1d]c@anon-20191002_181700-422:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowo127.0.0.1d]c@anon-20191002_181700-421:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0ego127.0.0.1d]c@anon-20191002_181700-420:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwo127.0.0.1a[a@anon-20191002_181700-41:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJjdjLW94WC5haSswXjpkbAowMDJmc2lnbmF0dXJlIMicE2dWZmTSWkQlL_dFdEb5UL5iuXwxyFxXiYecyuKlCg127.0.0.1"d]c@anon-20191002_181700-419:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3go127.0.0.1d]c@anon-20191002_181700-418:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwo127.0.0.1 u  / [Iu sd]c@anon-20191002_181700-577:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQo127.0.0.1 Wd]c@anon-20191002_181700-441:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtabDZuOFRSSyZ4U2U1NzUKMDAyZnNpZ25hdHVyZSA2B1qWMNWGc58YXM1YhnKM2QCsGLDKkznatQDfh-YpqQo127.0.0.1 :d]c@anon-20191002_181700-567:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQo127.0.0.1 d]c@anon-20191002_181700-454:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwo127.0.0.1 (d]c@anon-20191002_181700-556:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQo127.0.0.1 ̂d]c@anon-20191002_181700-541:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAo127.0.0.1 _a[a@anon-20191002_181700-52:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCg127.0.0.1)d]c@anon-20191002_181700-516:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920wo127.0.0.1 d]c@anon-20191002_181700-501:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0Hwo127.0.0.1 a[a@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLlp-aWV0aGpsb2VIdDhYaAowMDJmc2lnbmF0dXJlILz-X06NA3MCjvb6uGmoobDiJbicbG4nV2yzvbZkP-rwCg127.0.0.1$ Nd]c@anon-20191002_181700-473:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwo127.0.0.1 4 %4mVeQag$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2145}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w"], "type": "m.room.member", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-385:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042377337, "hashes": {"sha256": "UwurZvQugyu5EaKO0k+1D6WD9kwANVhh1XmBI/3UOwQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nNaBtOX2Ix+J+uC+SS/Mf8w97XGdxLUbfWQGZL1AFXJXVQocMOAxSZec6F93eQej9vxgkzJKGFBGTjIEbasHCg"}}, "unsigned": {"age_ts": 1570042377337, "replaces_state": "$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w"}}VUeQa9$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 402, "stream_ordering": 2144}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss"], "prev_events": ["$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M"], "type": "m.room.member", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-385:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-385", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-385:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042376245, "hashes": {"sha256": "OvhLEPDh4wu/vkWEOnlsF5/Kj+14CPTfX8k3zbr9qAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9TU1EoAodMrvQzi/TQIUkCd4NdCGXj2tlAjfTrJD6M8TExno0JeP8CoAQ1eDIKyvf8becHpuBvJDCIWWapLrDg"}}, "unsigned": {"age_ts": 1570042376245}}TeQa$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2143}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss"], "type": "m.room.history_visibility", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042375172, "hashes": {"sha256": "2on+FStH+NuZFecqwHm7JMSupV4riEMTHXHoV2POOOU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MTuVNhhBlvN6/TMMWA79zfCAFRcAdPAP19BJG/9OzUjBgo5MYAiR5bNK8DcjejfQ5JKh/AG1A6aip91ghrMRCQ"}}, "unsigned": {"age_ts": 1570042375172}}tSeQau$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2142}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ"], "type": "m.room.join_rules", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042374188, "hashes": {"sha256": "3b6RmR1VCWTdSc8NYBmRjazhAqazP5JBQdVp/n/tzJI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e2+Y4pdtdTOcTAehwaRyGDhBoNTZZJCyBMvLrZgtbit8WQscECD8jaFFWJFYl5Pc+nmFOXiq8hTx3Dqs/23PCw"}}, "unsigned": {"age_ts": 1570042374188}} xKr@ ~ L  S ! Y ' ` .f4l: Fr@yG NT#[)a/k9 x 1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwq1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 01e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Yy1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikT1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QS1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg Q1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM\1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw-1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgC1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM /1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0.1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gd1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg51e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs'1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQp1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYp1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew 31e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Osb1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsJ1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw21e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIO1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO01e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ61e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 D1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwm0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW081e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8"1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8QW1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw20e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s 1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakr1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4^1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew 1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m80e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcG1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU jL%Q>e  W9 q? pwEk38}K  J  Q ] X & v |+ _ - DjQ1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 T1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qx1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8v1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgI1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo E1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 !1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMo1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E~1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg|1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAM1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s 1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91ME1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIE1e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60^1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs w1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs v1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo f1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg U1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog N1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosx1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsH1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawc1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us)1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk}1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU+1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0J0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk>1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEL0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4n1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 I1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk&1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o J1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 $1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns 1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU 1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY I1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y D21e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM2 P & 9PkReQac$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2141}{"auth_events": ["$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "type": "m.room.power_levels", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"users": {"@anon-20191002_181700-384:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042372567, "hashes": {"sha256": "lZ5wbQmO6cQOV47hl7eBYVCpxX7WEW+P8LBrEx2bV74"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fD1HAA2XdlQPwedEcouA3JGY5CDhQkgo+s5mPOw39l+IANeIdm3VnXA3SCDZ7o3xrC1t4jLcne2gX+eGdOH/Dg"}}, "unsigned": {"age_ts": 1570042372567}}vQeQay$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2140}{"auth_events": ["$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc"], "prev_events": ["$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc"], "type": "m.room.member", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-384", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-384:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042370512, "hashes": {"sha256": "ECbX46rhMN4+7Mnggl9ho4UrweM7OdBPAYcvS+qxJcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SLqrUkXZCDK3CodCbp3HxEyuLN27DYmy6t1KAzai1rqc5Pvfh6Swj7H6KXLX3cb4jXLTJd1ayXT0cpTjhy8fDA"}}, "unsigned": {"age_ts": 1570042370512}}iPeQa_$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2139}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-384:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042368791, "hashes": {"sha256": "dYJolET/vdE0esglJ3RcsZVjqXNtynG1suRfd5zI6yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4c0Z1Vr+DGK1DnzdsBtxPs2YO4IQTwaldAOlNLuUVW2s+mAIrsipEaxqYd2EaFxKtOyOwkwM1B7zwhd6o1ZEAQ"}}, "unsigned": {"age_ts": 1570042368791}}VOeQa9$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 400, "stream_ordering": 2138}{"auth_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U", "$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8"], "prev_events": ["$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y"], "type": "m.room.member", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-383:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-383", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-383:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042362483, "hashes": {"sha256": "8K08VYsLGtdW5+cAlU2V5rSIiwsFDUeMMYCxj/TRrXY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ISOCWZidDls9mQo39Hf/SW80/qynbRUeg9rTii61JlxTrHGl7D2kzOECZaEdxxCNkDc5e51yVeVb2iHLbX0SCg"}}, "unsigned": {"age_ts": 1570042362483}} >CG K O  S  W  [ _ c$g(k,o0s4w8{<]!@anon-20191002_181700-355:localhost:8800LDOCSGURJIm4<=]!@anon-20191002_181700-354:localhost:8800EEONPHMPKHm4 1^ k z ) 6 C R  _ l{*7DQ`mz)P]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800P]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800P]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800P]Q@anon-20191002_181700-275:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:8800N[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800P]Q@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800P]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800P]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800P]Q@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800N[Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800P]Q@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800P]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800P]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800N[Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800N[Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800P]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800P]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800P]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800P]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800 -RM H C > 9 4/*|%w rmhc TGQeG!djwLhpJUYOKsgQtrky:localhost:8800$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3YTFQeF!djwLhpJUYOKsgQtrky:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYTEQeE!djwLhpJUYOKsgQtrky:localhost:8800$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UTDQeD!bkwyieHZwSMJfuSKvV:localhost:8800$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMTCQeC!bkwyieHZwSMJfuSKvV:localhost:8800$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcTBQeB!bkwyieHZwSMJfuSKvV:localhost:8800$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQTAQeA!bkwyieHZwSMJfuSKvV:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIT@Qe@!bkwyieHZwSMJfuSKvV:localhost:8800$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMT?Qe?!XcaKxZsPvbZhAGKKdx:localhost:8800$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwT>Qe>!XcaKxZsPvbZhAGKKdx:localhost:8800$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIT=Qe=!XcaKxZsPvbZhAGKKdx:localhost:8800$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUT<QeQ/ e/!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rules$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgi=Q3 e.!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM <Q']e-!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAc;Q' e,!zoTQAhGwmDDUECKtbL:localhost:8800m.room.create$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIo:Q? e+!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibility$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Ug9Q/ e*!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rules$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3ci8Q3 e)!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550 7Q']e(!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewc6Q' e'!NeYaCeYNFATCqlrlGT:localhost:8800m.room.create$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8o5Q? e&!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibility$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMg4Q/ e%!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rules$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwi3Q3 e$!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU 2Q']e#!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYc1Q' e"!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog 0Q']e!!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g /Q']e !zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wo.Q? e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibility$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Mg-Q/ e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rules$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssi,Q3 e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ +Q']e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0 H\ Z  f  t"r+5>H$se/Q ]$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgm.room.join_rules!zoTQAhGwmDDUECKtbL:localhost:8800mѰ!mѰ@anon-20191002_181700-388:localhost:8800&re3Q ]$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMm.room.power_levels!zoTQAhGwmDDUECKtbL:localhost:8800mѭ4mѮ@anon-20191002_181700-388:localhost:8800 qe'Q ]$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAm.room.member!zoTQAhGwmDDUECKtbL:localhost:8800mѪmѫD@anon-20191002_181700-388:localhost:8800p e'Q  ]$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIm.room.create!zoTQAhGwmDDUECKtbL:localhost:8800mѧmѨ+@anon-20191002_181700-388:localhost:8800!oe)Q ]$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAm.room.message!NeYaCeYNFATCqlrlGT:localhost:8800mѣmѣ@anon-20191002_181700-387:localhost:8800,ne?Q ]$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Um.room.history_visibility!NeYaCeYNFATCqlrlGT:localhost:8800mџ*mѠ@anon-20191002_181700-387:localhost:8800$me/Q ]$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cm.room.join_rules!NeYaCeYNFATCqlrlGT:localhost:8800mќFmѝ@anon-20191002_181700-387:localhost:8800&le3Q ]$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550m.room.power_levels!NeYaCeYNFATCqlrlGT:localhost:8800mљvmњ@anon-20191002_181700-387:localhost:8800 ke'Q ]$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewm.room.member!NeYaCeYNFATCqlrlGT:localhost:8800mїMmї@anon-20191002_181700-387:localhost:8800j e'Q  ]$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8m.room.create!NeYaCeYNFATCqlrlGT:localhost:8800mєlmє@anon-20191002_181700-387:localhost:8800!ie)Q ]$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Em.room.message!YtVXQjSPgVtbxrzUOA:localhost:8800mюmю@anon-20191002_181700-386:localhost:8800,he?Q ]$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMm.room.history_visibility!YtVXQjSPgVtbxrzUOA:localhost:8800mщ!mыj@anon-20191002_181700-386:localhost:8800$ge/Q ]$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwm.room.join_rules!YtVXQjSPgVtbxrzUOA:localhost:8800mцmч@anon-20191002_181700-386:localhost:8800&fe3Q ]$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUm.room.power_levels!YtVXQjSPgVtbxrzUOA:localhost:8800mуmф@anon-20191002_181700-386:localhost:8800 ee'Q ]$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYm.room.member!YtVXQjSPgVtbxrzUOA:localhost:8800mс mс@anon-20191002_181700-386:localhost:8800d e'Q  ]$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogm.room.create!YtVXQjSPgVtbxrzUOA:localhost:8800m}m~g@anon-20191002_181700-386:localhost:8800(ce7Q ]$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoa.made.up.filler.type!zsXPhIPzeXXLvuazzQ:localhost:8800mwmz@anon-20191002_181700-384:localhost:8800(be7Q ]$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxca.made.up.filler.type!zsXPhIPzeXXLvuazzQ:localhost:8800mw mw@anon-20191002_181700-384:localhost:8800 ae'Q ]$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gm.room.member!zsXPhIPzeXXLvuazzQ:localhost:8800mtymu@anon-20191002_181700-384:localhost:8800 `e'Q ]$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wm.room.member!zsXPhIPzeXXLvuazzQ:localhost:8800mp5mp@anon-20191002_181700-385:localhost:8800,_e?Q ]$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Mm.room.history_visibility!zsXPhIPzeXXLvuazzQ:localhost:8800mlmn@anon-20191002_181700-384:localhost:8800$^e/Q ]$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssm.room.join_rules!zsXPhIPzeXXLvuazzQ:localhost:8800mh,mi@anon-20191002_181700-384:localhost:8800&]e3Q ]$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQm.room.power_levels!zsXPhIPzeXXLvuazzQ:localhost:8800mamd@anon-20191002_181700-384:localhost:8800 \e'Q ]$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0m.room.member!zsXPhIPzeXXLvuazzQ:localhost:8800mYm\ @anon-20191002_181700-384:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V|eL$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAsha256AK~.鰳#Dzmٔ`V{eL$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDksha256 ^)R i x?H9VzeL$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_ksha256y xCB9s*-o^!nmSVyeL$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4sha256hvӕq/w! .:*qzVxeL$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcsha2566t_RYև%ϥ%G*G $VleL$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0csha256 ]N#a.◻ Htrl3GVkeL$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4csha256,? 8Ma bAKVjeL$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Ysha2561kbC{"!Wo:OtNVieL$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsksha256ټDgr%[^p5of.V`eL$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewsha2560W Huɽ³Y LV_eL$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8sha25623w0;s3XW"_cH]nyoV^eL$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Esha256; S(B!Sכ5^~Qct3I,۱V]eL$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMsha256:(hxl4hH 6V\eL$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwsha256/AvlU{k(¨YpV[eL$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUsha2564%ap-I-5SΠm#VZeL$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYsha256ؘ} ~~C+g~.3dWV }&VYeL$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogsha256xRTp1dt>(IlluΈVXeL$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVosha256ahEB.h%@g]zJk5NuZVWeL$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcsha256%7/BMzlw^lVVeL$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gsha256-_{ #ƽަA 3_VUeL$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wsha256?NCI߉IV^VTeL$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Msha256qXKaU l!Pc\BlCcVSeL$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqsssha256zHJSZ RRsJ/2tڪVReL$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQsha256J!96^v}'*Up 7HcVQeL$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0sha256$ .}ҁ.}mN_4̭ >j8p> v D  | J  Q X & ^ ,d2j8p> vD|J1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4 a1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQX1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQW1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0.1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0-1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0,1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK01e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo11e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo01e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo/1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo.1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3As1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Ar1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQL1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQK1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssX1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssW1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssV0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ300e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30~1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREf1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE 1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0 51e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0 41e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0 31e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDod1e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDoc1e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDob1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw [1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk  .& d| \ U  l NtF>6eeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800 veeQ$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800ӁeeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800eeQ$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800weeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800CeeQ$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800eeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800HeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800IeeQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800YeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800@eeQ$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800eeQ$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800seeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800)eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE!laUExtszUaoCpZoyEq:localhost:8800 eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg!mvgUHEsfGqDkPQUvfG:localhost:8800 YeeQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800 L ~z v r n j fb^ZVRNJF1eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:88000eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800/eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800.eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800-eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800,eeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800+eeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800*eeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800)eeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800(eeQ$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800'eeQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800&eeQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800%eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800$eeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800#eeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800"eeQ$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800!eeQ$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800 eeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800 a} { y w u sqomkigeca~}eeQ$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800~|eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800~{eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~zeeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800~yeeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800~xeeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~weeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800~veeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800~ueeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~teeQ$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~seeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800~reeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~qeeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800~peeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800~oeeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~neeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800~meeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800~leeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~keeQ$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~jeeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800~ieeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~heeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800~geeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800~feeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~eeeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800~deeQ$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800~ceeQ$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~beeQ$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~aeeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~`eeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~_eeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800  -vZeQay$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2149}{"auth_events": ["$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog"], "prev_events": ["$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog"], "type": "m.room.member", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-386", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-386:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042380553, "hashes": {"sha256": "jKqFTVbiFc57+waCJCBPunUS49IA6mwVLNxSRLG0Mzk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1sNsZXG/ghS+vSQsGPM7pTSO5R964CVUTRZ6kzamRFHWWq8mdGI3gtDIPh4WQ/7FFeZxQUZ+XM5DODqP85tADw"}}, "unsigned": {"age_ts": 1570042380553}}iYeQa_$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2148}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-386:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042379758, "hashes": {"sha256": "a5yoHwNgTh5DMUWqR4MOxcGKeWNQ9onS/YNRz60upsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dQ7xSkDy66/R/IHKvbC7jlbBku6jN278aFYnJavX3H2OB1cZficZvIIKB2RFlYzmn1qjzMSnmEGuYOK15ToEDw"}}, "unsigned": {"age_ts": 1570042379758}}oXeQG$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "txn_id": "366", "stream_ordering": 2147}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g"], "type": "a.made.up.filler.type", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"filler": 1}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042378002, "hashes": {"sha256": "OibN6/LsmNqy51+W6w7FKhMBF/UzI7Qy1AnadvTNEoQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VL2tWJEVNLbI122RvZKYXs6NU9wQNpz+00uL2UWXfuE1fXDKln5Lpt2snNq7mZJ098sbHlEXYHWuju7fXpcmCQ"}}, "unsigned": {"age_ts": 1570042378002}}oWeQG$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "txn_id": "367", "stream_ordering": 2146}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g"], "type": "a.made.up.filler.type", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"filler": 2}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042377997, "hashes": {"sha256": "lmm9W+bn2eObf/3OK1Ss9Ler0P1N0tCPXnpm0ShUJJ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0aIICwvCzACLUmlw+YMpwEp4EQRpl7egLV8OVoJkqcSvrltAFD9Jg56P5HBb8jChtj2Q6yXeI/OnSMHYKWcuDw"}}, "unsigned": {"age_ts": 1570042377997}}   ^eQm$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "txn_id": "385", "stream_ordering": 2153}{"auth_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU", "$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM"], "type": "m.room.message", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042384048, "hashes": {"sha256": "nd6SscfLCcD1lt5bJKJ4vCfpbA7Oofg9ZrsiKfdCyPc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xYx47qNCOxoj/aBtq1EpxgmJIpBnzLLF8LF8NecGBHS+CNBCIzJwPkJc2Jo9Wn24F3iDqK5vYM4nR0h+UUnCBg"}}, "unsigned": {"age_ts": 1570042384048}}]eQa$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2152}{"auth_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU", "$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw"], "type": "m.room.history_visibility", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042382625, "hashes": {"sha256": "+ar2Y7FhuGxeOiOoBhYklvTRECka/I4YdQXn40IiKhw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NThDvAcZPToNiLkQn+dZBx0NrYAd4TfmK81S7fLrBm7dJN8LKO4Bcl0y7GJ1lG+gAPS9Qdjwvau1JNKxBq3oAg"}}, "unsigned": {"age_ts": 1570042382625}}t\eQau$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2151}{"auth_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU", "$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU"], "type": "m.room.join_rules", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042381967, "hashes": {"sha256": "OLlKpKnDmGGkurpStVECMkXfiy5NCVkdCRLNC3whEkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rVAY/+1wOiIVlTTFoO1cGFVgwa91nEsfg3HiB7XcKBMkloM9a1E8Xt7tPYRwUR2z6nei9h/e9v8jBmlvAq41DA"}}, "unsigned": {"age_ts": 1570042381967}}k[eQac$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2150}{"auth_events": ["$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "type": "m.room.power_levels", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"users": {"@anon-20191002_181700-386:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042381200, "hashes": {"sha256": "lHVWW6aKmMffLCVspxG5QAqtNwrSq6ZEuGWZ7eQ9zw0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FFxBGajDIKVT4xyju4eLeNJ3fbIFJV4YhGEnuYU81qAsuSSGuLbAeQosPrdYIZfWTouJT2XStv8NjEXkWx7FAQ"}}, "unsigned": {"age_ts": 1570042381200}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQV1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0U1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgT1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVsS1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9MS1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYS1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8R1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5UQ1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioP1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUO1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8N1 e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MN1 e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgM1 e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYL1 e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UK1 e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kJ1e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwI1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkI1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIH1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3YG1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYF1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UE1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQD1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8D1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMD1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcC1~e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQB1}e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIA1|e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM@1{e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA?1ze$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw?1ye$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI>1xe$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU=1we$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY<1ve$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw;1ue$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI:1te$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU:1se$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF091re$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U881qe$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk71pe$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc61oe$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg51ne$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok51me$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA41le$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk31ke$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k21je$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg411ie$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc01he$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw01ge$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx7401fe$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo01ee$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j001de$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M01ce$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo01be$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o01ae$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk01`e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg01_e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w01^e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ01]e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c01\e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c01[e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y01Ze$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk01Ye$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg/1Xe$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM.1We$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA-1Ve$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI,1Ue$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA+1Te$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U+1Se$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c*1Re$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550)1Qe$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew(1Pe$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8'1Oe$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E&1Ne$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM& AZ(< tBzHO J | V P   $ \ *b0 T"h6nj8p> v D 1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosS1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII 1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII 1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE 1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uch1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0b1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0a1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0`1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 S1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 R1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 Q1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 P0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc 1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc 1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc 1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosU1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosT1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk 1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk 1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk 1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc r1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0F1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0E1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0D1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc q1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc p1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok 1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g +1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g *1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g )1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI91e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA 1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA 1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo"1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!  4,$ ltD| d  \< T  LeeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800 beeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800 ceeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~eeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800 geeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800 7eeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:88001eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800CeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800 eeQ$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800eeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800ƁeeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800eeQ$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800ʁeeQ$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:88002eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800eeQ$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800ہeeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800eeQ$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800߁eeQ$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800eeQ$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800eeQ$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800 eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800  D4   oUq T   i0N  7  k R P2mL n S5 p 6Q88e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNEsha256 '8e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIsha256 8e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQsha256 8e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngsha2568e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8sha256 8e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgsha2568e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIsha256<8e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_Usha256@8e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEsha2568e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0sha2567e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkAsha256 8e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznssha2568e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEsha256z8e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUsha256 i98e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Asha256q8e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8sha2568e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoosha256n8e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcsha256l8e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUsha256 8e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcsha256$8e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicsha2568e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkksha2568e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gsha256;8e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcsha2568e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcsha256 f8e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgsha256 U8e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4sha2568e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIssha2567e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0sha2568e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAsha256#8e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgsha2568e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgsha256 8e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMsha2568e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAsha2568e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcsha256|8e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIsha2568e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8sha2568e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0sha256=8e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYsha256:8e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMsha2568e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508sha2568e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwsha256w8e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVosha256X8e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNosha2568e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8sha256c8e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2csha256N8e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Isha25638e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIsha2568e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iwsha2568e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYsha2568e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgsha2568e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4sha2568e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4sha256 8e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Esha2568e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwsha2568e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtksha256 8e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11Isha256 8e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcsha256 8e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQsha256 r8e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYsha256 8e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tosha256e8e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsYsha256 *8e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAsha256 A8e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYsha2568e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9ksha256 8e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUsha256:8e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFosha2568e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIsha256] = 5|u- m%  e ]  U  MEeeQ$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800 DeeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800 eeQ$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:88005eeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800 eeQ$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800 eeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800 .eeQ$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800{eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:88007eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800GeeQ$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800KeeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800ЁeeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800ƁeeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800eeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800݁eeQ$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800ieeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800   *tbeQau$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2157}{"auth_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550", "$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550"], "type": "m.room.join_rules", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042387526, "hashes": {"sha256": "BmutY0ati20yFuT+B2++PlsNX6e2fv5o4ewsAMK1IaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ELSG0wi9ocAk15jDs1OZ3he2ruFUns5DpwNsZB1LK+MDDWV5pjADC9VubfBlqEdqTKvak67sgkMJEGgR7NNaBQ"}}, "unsigned": {"age_ts": 1570042387526}}kaeQac$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2156}{"auth_events": ["$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "type": "m.room.power_levels", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"users": {"@anon-20191002_181700-387:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042386806, "hashes": {"sha256": "KpEVdjeft8VOv24pIRP5rTX4Yv9bPRCe6ofrs7c3Fsw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "69QGUTk4cRb1zdkLvihcx4t0xY5d6bJ13ITnoN1hLEEHuPFjK8BpCTqmTAIs0Ttu3s51mUH2hf/QyS7SiRyjDg"}}, "unsigned": {"age_ts": 1570042386806}}v`eQay$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2155}{"auth_events": ["$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8"], "prev_events": ["$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8"], "type": "m.room.member", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-387", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-387:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042386253, "hashes": {"sha256": "Fj7jNNNPEsHsBPm63Dk01BaAidV+CjlztWSLDPNfeaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2g1yVEDdxv0yOhtgjT8YVtRqJSiGIALLExXY8FiwAdAOWywQxB6QjvRPP5wxMnz84yCAd1yFBl7ETyWHeWvSDw"}}, "unsigned": {"age_ts": 1570042386253}}i_eQa_$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2154}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-387:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042385516, "hashes": {"sha256": "Fy+UgXEcUTnGaBesjEgiQf38LObYOicyWw9S2ivl6d0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fu3bD6qFL7NzmiuUTd1IXlvin4i6NZOrU0dlmsIPOvu2NVV4abEVu2zre8iEjBU976B6sSMcskXCKzcidN77CQ"}}, "unsigned": {"age_ts": 1570042385516}} #o- 8 f  / [`$)Q\%Sa=eQ' $UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800m.room.createm<eQ? $3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibilitye;eQ/ $mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rulesg:eQ3 $4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels 9eQ']$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800joina8eQ' $ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800m.room.createm7eQ? $Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibilitye6eQ/ $oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rulesg5eQ3 $yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels 4eQ']$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800joina3eQ' $S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.createm2eQ? $dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibilitye1eQ/ $R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rulesg0eQ3 $XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels /eQ']$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800joina.eQ' $apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.createm-eQ? $-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibilitye,eQ/ $pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rulesg+eQ3 $SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels *eQ']$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800joina)eQ' $4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.createm(eQ? $x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibilitye'eQ/ $-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rulesg&eQ3 $BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels %eQ']$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800joina$eQ' $FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800m.room.createm#eQ? $Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800m.room.history_visibilitye"eQ/ $i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rulesg!eQ3 $XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels eQ']$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800joinaeQ' $jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800m.room.createmeQ? $-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibilityeeQ/ $cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rulesgeQ3 $eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels eQ']$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800join 7}q}~GfP  y B e (nT s  x 2 x =[fk'r::Q/ !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rules <Q3 !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels ^Q']!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800 BQ? !VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibility :Q/ !VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rules <Q3 !VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels ^Q']!VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800 6Q' !VhUAklonNaWKRnLkcr:localhost:8800m.room.create ^Q']!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829sBQ? !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibilityz6Q' !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.createu?Q9 !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_aliasxEQ))!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800{mBQ? !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibility ^Q']!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829^Q']!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800:Q/ !WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rulesBQ? !WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibility6Q' !WYyiQAVvitxsLZKVCG:localhost:8800m.room.createCQ?!WWZVpyLeZfyfpWidLx:localhost:8800m.room.third_party_invite1<Q3 !WWZVpyLeZfyfpWidLx:localhost:8800m.room.power_levels^Q']!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829^Q']!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-138:localhost:8800:Q/ !WWZVpyLeZfyfpWidLx:localhost:8800m.room.join_rulesBQ? !WWZVpyLeZfyfpWidLx:localhost:8800m.room.history_visibility6Q' !WWZVpyLeZfyfpWidLx:localhost:8800m.room.create?Q9 !WWZVpyLeZfyfpWidLx:localhost:8800m.room.canonical_aliasEQ))!WWZVpyLeZfyfpWidLx:localhost:8800m.room.aliaseslocalhost:8800<Q3 !WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels{^Q']!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800x:Q/ !WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rulesBQ? !WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibility6Q' !WVzjUePHrzCjfyTbmK:localhost:8800m.room.createw?Q9 !WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_alias~EQ))!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800<Q3 !WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels^Q']!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800^Q']!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800:Q/ !WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rulesBQ? !WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibility6Q' !WFHIeSFQyuugGeBFxW:localhost:8800m.room.create<Q3 !VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels^Q']!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800:Q/ !VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rulesBQ? !VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibility6Q' !VWYMJxEviBNDdJCuKT:localhost:8800m.room.create<Q3 !VUibrTIkcRbfrogbQV:localhost:8800m.room.power_levelsp^Q']!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-543:localhost:8800o:Q/ !VUibrTIkcRbfrogbQV:localhost:8800m.room.join_rulesqBQ? !VUibrTIkcRbfrogbQV:localhost:8800m.room.history_visibilityr6Q' !VUibrTIkcRbfrogbQV:localhost:8800m.room.createn<Q3 !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levelsw^Q']!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800|^Q']!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800v:Q/ !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rulesy  wvfeQay$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2161}{"auth_events": ["$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI"], "prev_events": ["$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI"], "type": "m.room.member", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-388", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-388:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042391269, "hashes": {"sha256": "O2u5psnqMv81ozCs3eQYWzJvOLHffstsgz2MoarXajg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xV8fWyybPnqH2UsGBLpIC14KceC6KOFT4d/vJUBTb2G9RE+HV1nkdip4zodLGZJFD5FO8U4gwocowmtlJJXYBQ"}}, "unsigned": {"age_ts": 1570042391269}}ieeQa_$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2160}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-388:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042390503, "hashes": {"sha256": "AJbeA/K5wa6uXKQxvA68CzxDpdYk1Lml0Qm+AWHtICA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ES9K2awVApbePr/8dnfthXQ3O+Nsz2BCsnmIo4g9y06CI4WTJBT019ubYJH+rQzZjeSYcqQd/nuwhEIaz/uDg"}}, "unsigned": {"age_ts": 1570042390503}}deQm$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "txn_id": "386", "stream_ordering": 2159}{"auth_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550", "$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U"], "type": "m.room.message", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042389472, "hashes": {"sha256": "pFu96mVjW0t+K8Uc6OYpgMr3ecF1Tp88rj6fnvWnXYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dDzuNjSfSkE2NubVLVpytJUau+0O2oBpeT/8eMw5WxrQcdB1NW0k2MnT8195IXY3gsoHOOsSYl0hZEFiVbeIAQ"}}, "unsigned": {"age_ts": 1570042389472}}ceQa$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2158}{"auth_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550", "$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c"], "type": "m.room.history_visibility", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042388266, "hashes": {"sha256": "8RurfY8EKEc78rw2XZ0yMcy12+i9JW8m5OL3J5Y2/SY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oYjauXpPkHoyqMYa+x0IZTpAGJw8SDQc1cOV082rTwOOPFGawV4yYg2mW2Z3pjfM5lO7PyIS/4HxLpf83xN9CA"}}, "unsigned": {"age_ts": 1570042388266}} .fZa6 e  l  s z ' .5<CJQX_ fNwQ]!&PQ]!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-397:localhost:88004PQ]!CGckPHdSYcIocFvRAq:localhost:8800@anon-20191002_181700-395:localhost:88004P~Q]!BoyzlWNkRPncpDjBDg:localhost:8800@anon-20191002_181700-394:localhost:88004P}Q]!djwLhpJUYOKsgQtrky:localhost:8800@anon-20191002_181700-393:localhost:88004P|Q]!bkwyieHZwSMJfuSKvV:localhost:8800@anon-20191002_181700-392:localhost:88004P{Q]!XcaKxZsPvbZhAGKKdx:localhost:8800@anon-20191002_181700-391:localhost:88004PzQ]!jDKAOtmeAGbYTpwyEW:localhost:8800@anon-20191002_181700-390:localhost:88004PyQ]!JYLMokjOhZZlmbZvTf:localhost:8800@anon-20191002_181700-389:localhost:88004PxQ]!zoTQAhGwmDDUECKtbL:localhost:8800@anon-20191002_181700-388:localhost:88004PwQ]!NeYaCeYNFATCqlrlGT:localhost:8800@anon-20191002_181700-387:localhost:88004PvQ]!YtVXQjSPgVtbxrzUOA:localhost:8800@anon-20191002_181700-386:localhost:88004PuQ]!zsXPhIPzeXXLvuazzQ:localhost:8800@anon-20191002_181700-384:localhost:88004PtQ]!WFHIeSFQyuugGeBFxW:localhost:8800@anon-20191002_181700-382:localhost:88004PsQ]!QMrkSPlQDGborAyWtQ:localhost:8800@anon-20191002_181700-380:localhost:88004PrQ]!mBQpGaIiadEuKBXfOw:localhost:8800@anon-20191002_181700-378:localhost:88004PqQ]!xXYMxashIZAUOTuGAJ:localhost:8800@anon-20191002_181700-377:localhost:88004PpQ]!QcaNrIiUsWpTiVGOnt:localhost:8800@anon-20191002_181700-375:localhost:88004PoQ]!ozgnwUlebxvzLVwyHW:localhost:8800@anon-20191002_181700-375:localhost:88004PnQ]!rQeYcODvQiLsOIbQrJ:localhost:8800@anon-20191002_181700-374:localhost:88004PmQ]!csWEXfVEVxdviNvgAd:localhost:8800@anon-20191002_181700-374:localhost:88004PlQ]!aHyAJEOSdKqTiRjOvw:localhost:8800@anon-20191002_181700-373:localhost:88004PkQ]!hnQOBexFYpvJntEChZ:localhost:8800@anon-20191002_181700-371:localhost:88004PjQ]!hDAzBWYEyRVBRlrCHh:localhost:8800@anon-20191002_181700-370:localhost:88004PiQ]!fkvdYkesQOFCAQkzky:localhost:8800@anon-20191002_181700-369:localhost:88004PhQ]!OWGKxAmTrHLciIdrJi:localhost:8800@anon-20191002_181700-368:localhost:88004PgQ]!aknLNLxfChlLvFYhkJ:localhost:8800@anon-20191002_181700-367:localhost:88004PfQ]!HWTlaNxUKnDsrtlOxU:localhost:8800@anon-20191002_181700-365:localhost:88004PeQ]!pUSFAnuwUuMlbiInDR:localhost:8800@anon-20191002_181700-363:localhost:88004PdQ]!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-360:localhost:88004PcQ]!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-357:localhost:88004PbQ]!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-354:localhost:88004PaQ]!bOSxzttDtclnrWnLov:localhost:8800@anon-20191002_181700-352:localhost:88004P`Q]!DnUHoxreGexNmjSVpq:localhost:8800@anon-20191002_181700-350:localhost:88004P_Q]!rwUuVBrftGHDBOlEZm:localhost:8800@anon-20191002_181700-349:localhost:88004P^Q]!CkNvQnbApPIcuKygDk:localhost:8800@anon-20191002_181700-348:localhost:88004P]Q]!NboFFVLpJHTeuUKCjM:localhost:8800@anon-20191002_181700-346:localhost:88004P\Q]!aZwMKYDXJRlSKjQNWM:localhost:8800@anon-20191002_181700-345:localhost:88004([Q !XiwGxQKwjgutEClKUy:localhost:88294PZQ]!mTlCLZQCmfDuQsJxxp:localhost:8800@anon-20191002_181700-342:localhost:88004PYQ]!PEcOacvKaBKpXjytEF:localhost:8800@anon-20191002_181700-341:localhost:88004(XQ !NajQnqYmGyTjxhFYar:localhost:88294PWQ]!sJnuQYOyruhUpXDsLY:localhost:8800@anon-20191002_181700-338:localhost:88004PVQ]!TeraguiGoZoeOGFzlI:localhost:8800@anon-20191002_181700-336:localhost:88004PUQ]!UaitDdkGDcwvRLJSvp:localhost:8800@anon-20191002_181700-333:localhost:88004PTQ]!dDqNKNFdIjCAwnyaxp:localhost:8800@anon-20191002_181700-332:localhost:88004PSQ]!kjueCKHmYaYefEEpQY:localhost:8800@anon-20191002_181700-331:localhost:88004  ojeQG$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "387", "stream_ordering": 2165}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 1}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042394662, "hashes": {"sha256": "kJtQElYjgaJuTq9JyNw1B/q8NgOfmcyd7WGYfnZEfOo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zcdXMQ1WbIGnbLLpoHjOaEd/YVzYp6LoDoqgTbSGDseh9A+8i19+LqNClGTaAl+vmc7IR7eAPo5axNeFI5XXCg"}}, "unsigned": {"age_ts": 1570042394662}}ieQa$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2164}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg"], "type": "m.room.history_visibility", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042393358, "hashes": {"sha256": "1psrOJMWyEMT6R0kCSBwpG7SLpdRgTfT8SFJcPJNMXY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J2FZqK4UudPsFKGwwD6ctxd5xRg5a8xzoWEj18NwAIQNAdap5HO2MJZFT2X5khK6IYgu3JIALnY7OsvOQgy7Ag"}}, "unsigned": {"age_ts": 1570042393358}}theQau$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2163}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM"], "type": "m.room.join_rules", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042392609, "hashes": {"sha256": "1243TI3L5btT2g2BcrTFO+gMIOtuP6SWKdzDYwSk/vw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TAf6+SKFT6C8GJSfl53TnJQma3/LfLTgyIHphjccuZEfuCiVEVwaDxbjyDAQJB0lPORljpKtsH04GtqFAJ27Cg"}}, "unsigned": {"age_ts": 1570042392609}}kgeQac$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2162}{"auth_events": ["$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "type": "m.room.power_levels", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"users": {"@anon-20191002_181700-388:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042391860, "hashes": {"sha256": "c5L2itKZS9o5CFiI9GjxDkLi+ndlWB0cz60K1P1JQsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uiwLTcmYT3xqCwqQnSCkSElSxT6UiXzWQN3ODXJASsPkWcGP17dvA2T6eRY7JyT+EKJHDbBt7eLGj9hSbH/FCA"}}, "unsigned": {"age_ts": 1570042391860}} MjkK8p> v D?   } KQ  Q   + W % }3 q ]9 +eW%]wElhosA$lolredact:localhost:42455 1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIy1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE"1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUd1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U G1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 N1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V81e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A 71e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM 11e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 -1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E %1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY U1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw ;1e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8 1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE 21e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gT1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ-0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko41e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMx1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0X1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ>1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8>1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE,1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYA1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw81e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNow1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc^1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4p1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3ok1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt80e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUL1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcH1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUH1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc[1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo2 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~}|~{}z|y{xywxvwuvtustrsqqppoonnmmllkkjiihhggffeeddccab`a_`^_]^\]Z\Y[XZWYVXUWTVRUQTPSORMQLPKOJNHMGLFKEJCIBHAG@F>E=D<C;B9A8@7?6>4=3<2;1:/9.8-7,6*5)4(3'2%1$0#/". -,+*)('&%$#"!     /-,+*)&&% $ # " !             a} { y w u sqomkigeca~;eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800~:eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~9eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800~8eeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800~7eeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~6eeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800~5eeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800~4eeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~3eeQ$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~2eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800~1eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~0eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800~/eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800~.eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~-eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800~,eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800~+eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~*eeQ$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~)eeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800~(eeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~'eeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800~&eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800~%eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~$eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800~#eeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800~"eeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~!eeQ$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~ eeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800 P L H D@<LO  e'Q  ]$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcm.room.create!jDKAOtmeAGbYTpwyEW:localhost:8800mdm@anon-20191002_181700-390:localhost:8800! e)Q ]$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgm.room.message!JYLMokjOhZZlmbZvTf:localhost:8800mim@anon-20191002_181700-389:localhost:8800,e?Q ]$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokm.room.history_visibility!JYLMokjOhZZlmbZvTf:localhost:8800mVmL@anon-20191002_181700-389:localhost:8800$e/Q ]$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAm.room.join_rules!JYLMokjOhZZlmbZvTf:localhost:8800mm@anon-20191002_181700-389:localhost:8800&e3Q ]$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDkm.room.power_levels!JYLMokjOhZZlmbZvTf:localhost:8800mm@anon-20191002_181700-389:localhost:8800 e'Q ]$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_km.room.member!JYLMokjOhZZlmbZvTf:localhost:8800mmf@anon-20191002_181700-389:localhost:8800 e'Q  ]$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4m.room.create!JYLMokjOhZZlmbZvTf:localhost:8800m5mՆ@anon-20191002_181700-389:localhost:8800(e7Q ] $szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXca.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mmК@anon-20191002_181700-388:localhost:8800(e7Q ] $wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 m8mB@anon-20191002_181700-388:localhost:8800(e7Q ] $t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74a.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm@anon-20191002_181700-388:localhost:8800(e7Q ] $iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdoa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm @anon-20191002_181700-388:localhost:8800(e7Q ] $U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0a.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mcm@anon-20191002_181700-388:localhost:8800(~e7Q ] $9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Ma.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mlmnj@anon-20191002_181700-388:localhost:8800(}e7Q ] $JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm-@anon-20191002_181700-388:localhost:8800(|e7Q ] $DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm@anon-20191002_181700-388:localhost:8800({e7Q ] $HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAka.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mam@anon-20191002_181700-388:localhost:8800(ze7Q ]$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZga.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѾm@anon-20191002_181700-388:localhost:8800(ye7Q ]$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѾ6mѾ@anon-20191002_181700-388:localhost:8800(xe7Q ]$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѼmѽ@anon-20191002_181700-388:localhost:8800(we7Q ]$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0ca.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѻ1mѼ@anon-20191002_181700-388:localhost:8800(ve7Q ]$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4ca.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѸ)mѹ@anon-20191002_181700-388:localhost:8800(ue7Q ]$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Ya.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѸ&mѸ.@anon-20191002_181700-388:localhost:8800,te?Q ]$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskm.room.history_visibility!zoTQAhGwmDDUECKtbL:localhost:8800mѳmѴ@anon-20191002_181700-388:localhost:8800 "&) K T |  :`c!CLt jQ3 e!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U Q']e!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiodQ' e!CGckPHdSYcIocFvRAq:localhost:8800m.room.create$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUpQ? e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibility$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MhQ/ e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rules$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgjQ3 e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY Q']e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UdQ' e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.create$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kpQ? e!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibility$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkhQ/ e!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rules$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIjQ3 e!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y Q']e!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYdQ' e!djwLhpJUYOKsgQtrky:localhost:8800m.room.create$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UpQ? e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibility$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMhQ/ e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rules$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcjQ3 e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ Q']e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIdQ' e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.create$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMp Q? e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibility$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwh Q/ e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rules$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIj Q3 e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU Q']e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYd Q' e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.create$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwpQ? e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibility$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUhQ/ e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rules$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0jQ3 e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8 Q']e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkdQ' e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.create$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcpQ? e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibility$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokhQ/ e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rules$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAjQ3 e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk Q']e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kdQ' e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.create$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4p~Q? et!zoTQAhGwmDDUECKtbL:localhost:8800m.room.history_visibility$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk D]+%i7p> vDp> v D  | J  | W P  P  V $J  ] +1P+j]21e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04&1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM 51e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM c1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QK1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w41e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I+1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg;1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU[1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw 1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsG0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y&1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8.1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc >1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMU1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4m21e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ)1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI.1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8a1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98t1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIu1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k+1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE  wneQ'$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "391", "stream_ordering": 2169}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c", "$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 5}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042396214, "hashes": {"sha256": "guwaPMvpNHhBCWQ//Lzg0rSZfofzmLlR8fvdQIHknCI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "weX4qmvKuFKzM9DywjwQ7aAddBP2xAKNehBtkqC9wXuCWho+Rz1A8HH+5mVOyj6JZW6YkPY+utkIowz/rq2gAg"}}, "unsigned": {"age_ts": 1570042396214}}meQ'$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "390", "stream_ordering": 2168}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y", "$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 4}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042395832, "hashes": {"sha256": "GATbLM950r3jm2SSAhshHOneWy3LUzvee1Bep74Uqcc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Env8RfkNf1oANX/Fuht3Ku+6VqAKU8dPdjUB4Ue3NzGfOZSMSaiOsO4bWX9PpXYId1ZTgorBOvOM3Wls38WwAQ"}}, "unsigned": {"age_ts": 1570042395832}}oleQG$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "389", "stream_ordering": 2167}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 3}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042395441, "hashes": {"sha256": "liDdVmRCE8eTbTdEPrd95bTToabkonxOqfdTF8MuP4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8O+q64/8+REWRwHTLS7Qxb+nRHypvm0O7jSREcR+CA4OJK3EVo3wuHH2Ktdb8yILv7JQJKxcidKZuuRK4w+NCw"}}, "unsigned": {"age_ts": 1570042395441}}okeQG$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "388", "stream_ordering": 2166}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 2}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042394665, "hashes": {"sha256": "Z4mBFKl9mW5HMLOo5/ftRnmEM2V5xA3ftAL+6G3NdGI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pduIXN92jOFZhZmzz/OAPQzBo03msnIhHGY+07x79P2XXoQt125Eucf7FTFFErZMkwHx1I5BejIRA8HCz77VAg"}}, "unsigned": {"age_ts": 1570042394665}} M\7p>$ v|D | K   Q J j W p> %  ] +V8c*1iP v D  21e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg H1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk}1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0>1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMB1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc 1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw 1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQR1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs[1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUG1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk=1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUF1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY|1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAk1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo11e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20O1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM*1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y]1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0P1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM]1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ[1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIf1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIA1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekf1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsr1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk 1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUe1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX00e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAL1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio,1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s&1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUI1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf41e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw O1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs 01e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg 1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks F1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 41e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY D]+%i7p> vDp> v D  | J  | W P  P  V $J  ] +1P+j]21e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04&1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM 51e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM c1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QE1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w.1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I%1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss 1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg;1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU[1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw 1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsG0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y&1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8.1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc >1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMU1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4m21e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ)1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI.1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8a1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98t1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIu1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k+1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE s ]s reQ)$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "395", "stream_ordering": 2173}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg", "$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 9}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042397896, "hashes": {"sha256": "M9qNYCaxRgtYoctbnKi3Re2T23A5xdBMTcoiRDYuYPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MpEpXm9zlgg8SswOs4lGRhnczzbjNQWfjJGwHpAEAxZm/xEJIk1pcQAjF9mXi9Zq1m5LYgezyBswm6c3OsajAQ"}}, "unsigned": {"age_ts": 1570042397896}}qeQ'$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "394", "stream_ordering": 2172}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w", "$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 8}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042397419, "hashes": {"sha256": "7+g1wnQd9gpUGDf22hVMiQRalIIzkfFv7BQR3N0OCsA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QpuOiuaKb8EmaGqe3JONe1okEs1UnLcwxmlwvieD2tNVl0iW3mSuKotduVeS8Trp+7GiIHiKZ8zB9cYXtqKVBQ"}}, "unsigned": {"age_ts": 1570042397419}}peQ'$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "393", "stream_ordering": 2171}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ", "$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 7}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042397025, "hashes": {"sha256": "KaFirGtuehbfHsZq0mAzP0jS6CATrmtsrqBrtFuzYVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u3YbnX+BEra3tyT/tB7WBnnkDH7R95jmH9g/nS5P3iuz4taSM3Ehy9Si+tXFL6d73G39V9zvV57tqIt8U41LDg"}}, "unsigned": {"age_ts": 1570042397025}}oeQ'$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "392", "stream_ordering": 2170}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c", "$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 6}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042396395, "hashes": {"sha256": "jAJZk0ZHgt1CUNNMWise4TJ8jK8dJW6AJ9nyqk+agtU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Do2W/7GdxP2VJQWIaSCiGNaDnRtTVCcm3s4D4rVHfVJGPynmKZY1xyw2Gi1qTBUJFJ1xHeOJMkgcRKgNluqDQ"}}, "unsigned": {"age_ts": 1570042396395}} t d  \ T LE=5|- l%teeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800 ceeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800 ,eeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:88008eeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800فeeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800ցeeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800eeQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800beeQ$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800zeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800aeeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800^eeQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800ҁeeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800ˁeeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800eeQ$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800 eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800 keeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800  -RM H C > 9 4/*|%w rmhc T[Qe!djwLhpJUYOKsgQtrky:localhost:8800$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3YTZQe!djwLhpJUYOKsgQtrky:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYTYQe!djwLhpJUYOKsgQtrky:localhost:8800$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UTXQe!bkwyieHZwSMJfuSKvV:localhost:8800$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQTWQe!bkwyieHZwSMJfuSKvV:localhost:8800$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8TVQe!bkwyieHZwSMJfuSKvV:localhost:8800$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMTUQe!bkwyieHZwSMJfuSKvV:localhost:8800$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcTTQe!bkwyieHZwSMJfuSKvV:localhost:8800$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQTSQe!bkwyieHZwSMJfuSKvV:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgITRQe!bkwyieHZwSMJfuSKvV:localhost:8800$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMTQQe!XcaKxZsPvbZhAGKKdx:localhost:8800$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iATPQe!XcaKxZsPvbZhAGKKdx:localhost:8800$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwTOQe!XcaKxZsPvbZhAGKKdx:localhost:8800$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yITNQe!XcaKxZsPvbZhAGKKdx:localhost:8800$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUTMQe!XcaKxZsPvbZhAGKKdx:localhost:8800$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYTLQe!XcaKxZsPvbZhAGKKdx:localhost:8800$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwTKQe!jDKAOtmeAGbYTpwyEW:localhost:8800$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoITJQe!jDKAOtmeAGbYTpwyEW:localhost:8800$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUTIQe!jDKAOtmeAGbYTpwyEW:localhost:8800$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0THQe!jDKAOtmeAGbYTpwyEW:localhost:8800$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8TGQe!jDKAOtmeAGbYTpwyEW:localhost:8800$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkTFQe!jDKAOtmeAGbYTpwyEW:localhost:8800$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcTEQe!JYLMokjOhZZlmbZvTf:localhost:8800$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgTDQe!JYLMokjOhZZlmbZvTf:localhost:8800$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokTCQe!JYLMokjOhZZlmbZvTf:localhost:8800$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWATBQe!JYLMokjOhZZlmbZvTf:localhost:8800$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDkTAQe!JYLMokjOhZZlmbZvTf:localhost:8800$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kT@Qe!JYLMokjOhZZlmbZvTf:localhost:8800$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4T?Qe!zoTQAhGwmDDUECKtbL:localhost:8800$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwT>Qe!zoTQAhGwmDDUECKtbL:localhost:8800$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcT=Qe!zoTQAhGwmDDUECKtbL:localhost:8800$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwT<Qe!zoTQAhGwmDDUECKtbL:localhost:8800$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74T;Qe!zoTQAhGwmDDUECKtbL:localhost:8800$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5FdoT:Qe!zoTQAhGwmDDUECKtbL:localhost:8800$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74T9Qe!zoTQAhGwmDDUECKtbL:localhost:8800$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5FdoT8Qe!zoTQAhGwmDDUECKtbL:localhost:8800$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0T7Qe!zoTQAhGwmDDUECKtbL:localhost:8800$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0MT6Qe!zoTQAhGwmDDUECKtbL:localhost:8800$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0T5Qe~!zoTQAhGwmDDUECKtbL:localhost:8800$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoT4Qe~!zoTQAhGwmDDUECKtbL:localhost:8800$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0MT3Qe}!zoTQAhGwmDDUECKtbL:localhost:8800$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoT2Qe}!zoTQAhGwmDDUECKtbL:localhost:8800$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oT1Qe|!zoTQAhGwmDDUECKtbL:localhost:8800$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAkT0Qe|!zoTQAhGwmDDUECKtbL:localhost:8800$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oT/Qe{!zoTQAhGwmDDUECKtbL:localhost:8800$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk Uc;sK# [ 3 k C  { S +  c ;  s K #[3 kC{S+c;sK#[3 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 'Q!uGpSboYkgxVNOqNeUG:localhost:8800 ~'Q!uGpSboYkgxVNOqNeUG:localhost:8800 }'Q!uGpSboYkgxVNOqNeUG:localhost:8800 |'Q!uGpSboYkgxVNOqNeUG:localhost:8800 {'Q!uGpSboYkgxVNOqNeUG:localhost:8800 z'Q!uGpSboYkgxVNOqNeUG:localhost:8800 y'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800 @'Q!tcYctHPiaKzsKgrXlU:localhost:8800 ='Q!tcYctHPiaKzsKgrXlU:localhost:8800 ;'Q!tcYctHPiaKzsKgrXlU:localhost:8800 9'Q!tcYctHPiaKzsKgrXlU:localhost:8800 7'Q!tcYctHPiaKzsKgrXlU:localhost:8800 5'Q!taANXnGBZntAreRurn:localhost:8800 ?'Q!taANXnGBZntAreRurn:localhost:8800 >'Q!taANXnGBZntAreRurn:localhost:8800 <'Q!taANXnGBZntAreRurn:localhost:8800 :'Q!taANXnGBZntAreRurn:localhost:8800 8'Q!taANXnGBZntAreRurn:localhost:8800 6'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 Z'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 Y'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 X'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 W'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 V'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tDsPLsKOLPePtEWRwn:localhost:8800&'Q!tDsPLsKOLPePtEWRwn:localhost:8800%'Q!tDsPLsKOLPePtEWRwn:localhost:8800$'Q!tDsPLsKOLPePtEWRwn:localhost:8800#'Q!tDsPLsKOLPePtEWRwn:localhost:8800"'Q!tDsPLsKOLPePtEWRwn:localhost:8800!'Q!tDsPLsKOLPePtEWRwn:localhost:8800 'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800 z'Q!sqkBzbHHJOTNWwynqV:localhost:8800 y'Q!sqkBzbHHJOTNWwynqV:localhost:8800 x'Q!sqkBzbHHJOTNWwynqV:localhost:8800 w'Q!sqkBzbHHJOTNWwynqV:localhost:8800 v'Q!sqkBzbHHJOTNWwynqV:localhost:8800 u'Q!sqkBzbHHJOTNWwynqV:localhost:8800 t'Q!sqkBzbHHJOTNWwynqV:localhost:8800 s'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800"'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800p&Q!scyFsXcUIJiLIMwWMY:localhost:8800o&Q!scyFsXcUIJiLIMwWMY:localhost:8800n ~z v r n j fb^ZVRNJFOeeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800NeeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800MeeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800LeeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800KeeQ$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800JeeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800IeeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800HeeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800GeeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800FeeQ$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800EeeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800DeeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800CeeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800BeeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800AeeQ$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800@eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74!zoTQAhGwmDDUECKtbL:localhost:8800?eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800>eeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800=eeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800<eeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800;eeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800:eeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:88009eeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:88008eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:88007eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:88006eeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:88005eeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:88004eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:88003eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:88002eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800 l [l!veQ+$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "399", "stream_ordering": 2177}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M", "$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 13}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042399495, "hashes": {"sha256": "s44Q+qVm65XB193M64JM2uGy52xeUvTA2/9PCdADV8w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NK0Sl2A0FO0+5/QJsYG5hMbomO/LsR2G9M8Rnd7WGZwVf+tvO5EUTF+kA4wqMHRv8Fmw51adhSIgg8iglXdYDg"}}, "unsigned": {"age_ts": 1570042399495}}!ueQ+$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "398", "stream_ordering": 2176}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo", "$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 12}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042399170, "hashes": {"sha256": "zaHb1XOVs3rKMfSb3DJNCZvH2hxULd7MgGZCAWbCM8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qjgdEvdE6kps6rzWgctFLS4ZBRlLi2yjVbj1UwJMhZHpSsjB8CpnuHwjpCGa1/WqA9c6L4ey2fOVPgRPGrSeBA"}}, "unsigned": {"age_ts": 1570042399170}}!teQ+$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "397", "stream_ordering": 2175}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o", "$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 11}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042398819, "hashes": {"sha256": "f/Ng8noIyWRM7ZNIxBb7nKHOnh9q4iZZK9XQl/ISVJk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XzD7cxWwt9vm8L7/9M9SyINX/3g6P753rCSuuotk80nz+W1joZ5Ge/whtl+sNRihy6m2rNmIODonNTqB68o2Dg"}}, "unsigned": {"age_ts": 1570042398819}}!seQ+$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "396", "stream_ordering": 2174}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk", "$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 10}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042398316, "hashes": {"sha256": "YTzwdrMxWer8ZXHctsUVVtd1SIPENAvEkzbp4TZLN6Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i0Z+eP1ucRZ4dWdJercXWvC4iFk1yQH80fj1z/g8nM6qEVqagv5FD3mdsLO0UOGe56gsElhdk5romnX4yVRzAQ"}}, "unsigned": {"age_ts": 1570042398316}} E1 +  i7o= ] u PcC > |{IP vV$ Dp\ *j8 J W %  +11e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ%1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwq1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4k1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ)1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI,1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8a1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98t1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8}1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08{1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k+1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I 1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 &1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs 1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 Q1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hoa1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 Q{T)}R' X /  X -  V +  T ) } R '{R)Z/X-V+T)}R'{*Q!yLccBXjjEasExpsXlt:localhost:8800 !*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800 F*Q!yAzXcNLHMuqFOcOexj:localhost:8800 E*Q!yAzXcNLHMuqFOcOexj:localhost:8800  D*Q!yAzXcNLHMuqFOcOexj:localhost:8800  C*Q!yAzXcNLHMuqFOcOexj:localhost:8800  B*Q!yAzXcNLHMuqFOcOexj:localhost:8800  A*Q!yAzXcNLHMuqFOcOexj:localhost:8800  @*Q!yAzXcNLHMuqFOcOexj:localhost:8800  ?*Q!yAzXcNLHMuqFOcOexj:localhost:8800  >*Q!yAzXcNLHMuqFOcOexj:localhost:8800  =*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 s (Q!xwoIOPTGmJIlTXakxC:localhost:8800_^(Q!xwoIOPTGmJIlTXakxC:localhost:8800^](Q!xwoIOPTGmJIlTXakxC:localhost:8800]\(Q!xwoIOPTGmJIlTXakxC:localhost:8800\[(Q!xwoIOPTGmJIlTXakxC:localhost:8800[Z(Q!xwoIOPTGmJIlTXakxC:localhost:8800ZY*Q!xvblqEscwOtCqJntfF:localhost:8800OU*Q!xvblqEscwOtCqJntfF:localhost:8800NT*Q!xvblqEscwOtCqJntfF:localhost:8800MS*Q!xvblqEscwOtCqJntfF:localhost:8800LR*Q!xvblqEscwOtCqJntfF:localhost:8800KQ*Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xXYMxashIZAUOTuGAJ:localhost:8800Er*Q!xXYMxashIZAUOTuGAJ:localhost:8800Dq*Q!xXYMxashIZAUOTuGAJ:localhost:8800Cp*Q!xXYMxashIZAUOTuGAJ:localhost:8800Bo*Q!xXYMxashIZAUOTuGAJ:localhost:8800An*Q!xXYMxashIZAUOTuGAJ:localhost:8800@m*Q!xXYMxashIZAUOTuGAJ:localhost:8800?l(Q!wvnfKBSrUlfNmYoeil:localhost:8800|{(Q!wvnfKBSrUlfNmYoeil:localhost:8800{z(Q!wvnfKBSrUlfNmYoeil:localhost:8800zy(Q!wvnfKBSrUlfNmYoeil:localhost:8800yx(Q!wvnfKBSrUlfNmYoeil:localhost:8800xw*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800 O [OvzeQay$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2181}{"auth_events": ["$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4"], "prev_events": ["$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4"], "type": "m.room.member", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-389", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-389:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042403526, "hashes": {"sha256": "gLbO9tSlO2ABd1XySLatrUP9b8Ao8QpkO9VUAe7cbJA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "au8PNQWwOx9LyXDzvSSImHq65Zt2ncmlu6N/Z4CQOc0LMPvpgK2Q+8V+6S9c6TOeUhCayrGw7q69wfV++UTXDQ"}}, "unsigned": {"age_ts": 1570042403526}}iyeQa_$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2180}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-389:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042402101, "hashes": {"sha256": "IstVC8OYDJUoDiMGMl7KRQtlRipD7sM0nblXk3ZcsDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+miskrzK495tLLL9H6kev1rI1senhTGZnsM2E+c1Fid7rI9wYhSSM2YdQQkeVOWxk/GFXv4kRqT/R0rCD8VFBg"}}, "unsigned": {"age_ts": 1570042402101}}!xeQ+$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "401", "stream_ordering": 2179}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo", "$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 15}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042400469, "hashes": {"sha256": "msqTIx1QUmVZNEPs/FbHsB2+B8XRj7hpTYk50TVWugY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbOJAXiaMHjpjs8ALZFjv0IuRiJ9m66jOLPsvsf0FhY2GzklkpyU8ix/FRqFZdYJHKqMHBEGR72OQA1uSeKzBw"}}, "unsigned": {"age_ts": 1570042400469}}!weQ+$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "400", "stream_ordering": 2178}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0", "$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 14}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042400056, "hashes": {"sha256": "/MNf3kD6AS9vLEddMlyVmVXMPuqykvaZmmw31X//DVU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wt2QYPfXbkabyo8QprFL+r+vKkovDPRBr08/VSprRVfdnQhq+H9NIXTxnP3G6MngUO3qOvK12tYELf4ayU7mDw"}}, "unsigned": {"age_ts": 1570042400056}}  qM w Y ;  i  a C ' s UgI+ Yw;iK-y[=tkMXs7U=!eG)uW; 7  g I + K -  qS5/ \ H 4  <=anon-20191002_181700-486=anon-20191002_181700-484=anon-20191002_181700-482=anon-20191002_181700-480=anon-20191002_181700-479=anon-20191002_181700-478=anon-20191002_181700-477=anon-20191002_181700-476=anon-20191002_181700-475=anon-20191002_181700-473=anon-20191002_181700-471=anon-20191002_181700-469=anon-20191002_181700-467=anon-20191002_181700-465=anon-20191002_181700-464=anon-20191002_181700-463=anon-20191002_181700-462=anon-20191002_181700-461=anon-20191002_181700-460=anon-20191002_181700-458=anon-20191002_181700-456=anon-20191002_181700-454=anon-20191002_181700-452=anon-20191002_181700-450=anon-20191002_181700-448=anon-20191002_181700-449=anon-20191002_181700-446=anon-20191002_181700-447=anon-20191002_181700-445=anon-20191002_181700-444=anon-20191002_181700-443=anon-20191002_181700-442=anon-20191002_181700-441=anon-20191002_181700-440=anon-20191002_181700-439=anon-20191002_181700-437=anon-20191002_181700-516=anon-20191002_181700-438  ;anon-20191002_181700-41==anon-20191002_181700-409=anon-20191002_181700-521=anon-20191002_181700-520;anon-20191002_181700-52I=anon-20191002_181700-518=anon-20191002_181700-514=anon-20191002_181700-512=anon-20191002_181700-510 =anon-20191002_181700-509 =anon-20191002_181700-488=anon-20191002_181700-508 =anon-20191002_181700-507 =anon-20191002_181700-506 =anon-20191002_181700-505=anon-20191002_181700-503=anon-20191002_181700-501=anon-20191002_181700-499=anon-20191002_181700-497=anon-20191002_181700-495=anon-20191002_181700-493=anon-20191002_181700-494=anon-20191002_181700-492=anon-20191002_181700-491=anon-20191002_181700-490~=anon-20191002_181700-536=anon-20191002_181700-422=anon-20191002_181700-421=anon-20191002_181700-420=anon-20191002_181700-419=anon-20191002_181700-418=anon-20191002_181700-417=anon-20191002_181700-416=anon-20191002_181700-415=anon-20191002_181700-414=anon-20191002_181700-413=anon-20191002_181700-412=anon-20191002_181700-411=anon-20191002_181700-410=anon-20191002_181700-535=anon-20191002_181700-534=anon-20191002_181700-533=anon-20191002_181700-532=anon-20191002_181700-531;anon-20191002_181700-53J=anon-20191002_181700-529=anon-20191002_181700-527=anon-20191002_181700-526=anon-20191002_181700-525=anon-20191002_181700-524=anon-20191002_181700-523=anon-20191002_181700-436=anon-20191002_181700-435=anon-20191002_181700-434=anon-20191002_181700-433=anon-20191002_181700-432=anon-20191002_181700-431=anon-20191002_181700-430;anon-20191002_181700-43?=anon-20191002_181700-429=anon-20191002_181700-428=anon-20191002_181700-427=anon-20191002_181700-426=anon-20191002_181700-425=anon-20191002_181700-424=anon-20191002_181700-423;anon-20191002_181700-51H;anon-20191002_181700-50G9anon-20191002_181700-5;anon-20191002_181700-49F;anon-20191002_181700-48E;anon-20191002_181700-47C;anon-20191002_181700-46B;anon-20191002_181700-45A;anon-20191002_181700-44@ Pm< xG R ! ] , h 7  s B  ~ M X'c2n= yHS"^-i8tC.w] @anon-20191002_181700-478:localhost:8800 .v] @anon-20191002_181700-477:localhost:8800 .u] @anon-20191002_181700-476:localhost:8800 .t] @anon-20191002_181700-475:localhost:8800 .s] @anon-20191002_181700-473:localhost:8800 .r] @anon-20191002_181700-471:localhost:8800 .q] @anon-20191002_181700-469:localhost:8800 .p] @anon-20191002_181700-467:localhost:8800 .o] @anon-20191002_181700-465:localhost:8800 .n] @anon-20191002_181700-464:localhost:8800 .m] @anon-20191002_181700-463:localhost:8800 .l] @anon-20191002_181700-462:localhost:8800 .k] @anon-20191002_181700-461:localhost:8800 .j] @anon-20191002_181700-460:localhost:8800 .i] @anon-20191002_181700-458:localhost:8800 .h] @anon-20191002_181700-456:localhost:8800 .g] @anon-20191002_181700-454:localhost:8800 .f] @anon-20191002_181700-452:localhost:8800 .e] @anon-20191002_181700-450:localhost:8800 {.d] @anon-20191002_181700-448:localhost:8800 q.c] @anon-20191002_181700-449:localhost:8800 p.b] @anon-20191002_181700-446:localhost:8800 g.a] @anon-20191002_181700-447:localhost:8800 f.`] @anon-20191002_181700-445:localhost:8800 ]._] @anon-20191002_181700-444:localhost:8800 U.^]@anon-20191002_181700-443:localhost:8800 V.]] @anon-20191002_181700-442:localhost:8800 S.\] @anon-20191002_181700-441:localhost:8800 L.[] @anon-20191002_181700-440:localhost:8800 K.Z] @anon-20191002_181700-439:localhost:8800 J.Y] @anon-20191002_181700-437:localhost:8800 H.X] @anon-20191002_181700-436:localhost:8800 G.W] @anon-20191002_181700-438:localhost:8800 I.V] @anon-20191002_181700-434:localhost:8800 @.U] @anon-20191002_181700-433:localhost:8800 ?.T] @anon-20191002_181700-435:localhost:8800 A.S] @anon-20191002_181700-432:localhost:8800 8.R] @anon-20191002_181700-431:localhost:8800 7.Q] @anon-20191002_181700-430:localhost:8800 6.P] @anon-20191002_181700-429:localhost:8800 ,.O] @anon-20191002_181700-428:localhost:8800 0.N] @anon-20191002_181700-427:localhost:8800 *.M] @anon-20191002_181700-426:localhost:8800 .L] @anon-20191002_181700-424:localhost:8800 .K] @anon-20191002_181700-425:localhost:8800 #.J]@anon-20191002_181700-423:localhost:8800 .I] @anon-20191002_181700-421:localhost:8800 .H] @anon-20191002_181700-422:localhost:8800 .G] @anon-20191002_181700-420:localhost:8800 .F] @anon-20191002_181700-419:localhost:8800 .E] @anon-20191002_181700-417:localhost:8800 .D] @anon-20191002_181700-418:localhost:8800 .C] @anon-20191002_181700-416:localhost:8800.B] @anon-20191002_181700-414:localhost:8800.A] @anon-20191002_181700-415:localhost:8800.@] @anon-20191002_181700-413:localhost:8800.?] @anon-20191002_181700-411:localhost:8800.>] @anon-20191002_181700-412:localhost:8800.=]@anon-20191002_181700-410:localhost:8800.<] @anon-20191002_181700-409:localhost:8800.;] @anon-20191002_181700-408:localhost:8800.:] @anon-20191002_181700-407:localhost:8800.9]@anon-20191002_181700-406:localhost:8800.8] @anon-20191002_181700-405:localhost:8800.7] @anon-20191002_181700-404:localhost:8800.6] @anon-20191002_181700-403:localhost:8800.5]@anon-20191002_181700-402:localhost:8800.4] @anon-20191002_181700-401:localhost:8800.3] @anon-20191002_181700-400:localhost:8800.2] @anon-20191002_181700-399:localhost:8800.1] @anon-20191002_181700-397:localhost:8800.0] @anon-20191002_181700-398:localhost:8800./]@anon-20191002_181700-396:localhost:8800..] @anon-20191002_181700-395:localhost:8800.-] @anon-20191002_181700-394:localhost:8800.,] @anon-20191002_181700-393:localhost:8800.+] @anon-20191002_181700-392:localhost:8800.*] @anon-20191002_181700-391:localhost:8800.)] @anon-20191002_181700-390:localhost:8800.(] @anon-20191002_181700-389:localhost:8800 g * T~=gg]!c@anon-20191002_181700-399:localhost:8800PYXHCRNRQLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgog]!c@anon-20191002_181700-397:localhost:8800MUYZSHOUYAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQog]!c@anon-20191002_181700-398:localhost:8800QJTBFOFNHMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgog]!c@anon-20191002_181700-396:localhost:8800ALHPRAAFGPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQog]!c@anon-20191002_181700-395:localhost:8800QBHVPKMMWEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawog]!c@anon-20191002_181700-394:localhost:8800PSPZGMAOEGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ7MzBOJnJ4MjdkRlY4TH4KMDAyZnNpZ25hdHVyZSDEWdLU6ypMTjm7IoIQyEblzSvLEBWgti22-K26eYOJfwog]!c@anon-20191002_181700-393:localhost:8800ABJMLTSTASMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNFeF4sQUJaWVY3JkBwOXQKMDAyZnNpZ25hdHVyZSCWZXxHZjQTxOtAVnyUKA9idywM-AHyiS4-GrYtUx6zdAog]!c@anon-20191002_181700-392:localhost:8800GEJMGKQZNJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1XI3RjVjo6QXR3Tjl4aEcKMDAyZnNpZ25hdHVyZSD2lW-Xgp8w5ukMnbPAV39B0bWFhYFL1jT6Wn_Ww0npIgog]!c@anon-20191002_181700-391:localhost:8800XGNSQPEQLLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwqRHE3bH5-PVYyK2I0RCYKMDAyZnNpZ25hdHVyZSAEG-vFxynCIErZN0PU9O5i56FHtZEbxFuvsVBOwFxA1wog]!c@anon-20191002_181700-390:localhost:8800IMMWZCJBQHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0ubU5jK1RtaWFBbHliVmcKMDAyZnNpZ25hdHVyZSDyfrDkklGvY9_vom0YlJRLBj1NQstwJXx13pdW6-MaMwog ]!c@anon-20191002_181700-389:localhost:8800NHRBBKCZKAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHp6Z0EwUm80KitaMkpETXcKMDAyZnNpZ25hdHVyZSBlsB49JvXxCyMk6o6fapIVQCnBcva45QBGYmtS5BKKBAo   ~eQk$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "txn_id": "406", "stream_ordering": 2185}{"auth_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk", "$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok"], "type": "m.room.message", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042406761, "hashes": {"sha256": "kkxmhsBGZP5vdXFNja/JKC7cj1uRTeyEKPqRiKGbSh4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Klb1pC939z4ALjPH6HDPQmGfmSFpzbB2tQa1AWd883Vyz8GSF7crtTtdhSi3V6vEAbv8qIHQomNTGaTyNMcDDA"}}, "unsigned": {"age_ts": 1570042406761}}}eQa$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2184}{"auth_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk", "$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA"], "type": "m.room.history_visibility", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042405718, "hashes": {"sha256": "awG6ztozg5DS4NCH2mJCJiG6zZ9eeRE4PKIuncfISIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2e/6NPElC4meKGTWRldE4KAZt2IbY/RbLudxgbA8PkfBvV18Iq9bczB4TWeHmuaHA6AXkwFg/CGcL3kDBGIyCw"}}, "unsigned": {"age_ts": 1570042405718}}t|eQau$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2183}{"auth_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk", "$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk"], "type": "m.room.join_rules", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042404886, "hashes": {"sha256": "U7OtpPX6jbp+6iadO/TWNqPbDCC5sse60LUhEVZqeMA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SDYtc90p91aKgGlhBwRbR3NB6fGsJdsp/IEHBFqPyCUjghZriE1WFmIYXqnjBW9LInmQ/Qfs/+6Hpg1b4pZ/Dw"}}, "unsigned": {"age_ts": 1570042404886}}k{eQac$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2182}{"auth_events": ["$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "type": "m.room.power_levels", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"users": {"@anon-20191002_181700-389:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042404102, "hashes": {"sha256": "FWREytB5GS8ejejVLRTUkG4iU7hsKo+WBXgvhiRHYeE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AwoQZanrCHO6wjSwSKfY9IR0pLknIV9OCi8GCiQCDr2+/fRgQMOZNWuz0WD8Yr6FK1svJEbytClxXGmx5ziUDQ"}}, "unsigned": {"age_ts": 1570042404102}} a} { y w u sqomkigeca~eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800~~eeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800  4 h 9mfd]c@anon-20191002_181700-395:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawo127.0.0.1d]c@anon-20191002_181700-404:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAo127.0.0.1d]c@anon-20191002_181700-403:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggago127.0.0.1d]c@anon-20191002_181700-401:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwo127.0.0.1d]c@anon-20191002_181700-400:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwo127.0.0.1a[a@anon-20191002_181700-39:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLipwfjtVQ3VJc1Z-UX46UQowMDJmc2lnbmF0dXJlIGVOSZR6uZ_XtI81neQU7GI-hz9O6cKZiLnIU-YzCBaKCg127.0.0.1 d]c@anon-20191002_181700-399:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgo127.0.0.1d]c@anon-20191002_181700-398:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgo127.0.0.1d]c@anon-20191002_181700-397:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQo127.0.0.1d]c@anon-20191002_181700-396:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQo127.0.0.1 ,NC 8 - { " p  e ZOD9.|#qf V(eL$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwsha256df[<6 Iovo|Ñ;V'eL$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQsha256bS@j|U )s2\|4V&eL$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0sha256$~`}%a, 6cv>{ƎV%eL$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgsha256D$QTޜFR-,8 6C&-8V$eL$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVssha25653Y֝ Ɇ_Rș^Ol) [dq8HRNvV!eL$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8sha256*ټ\ V}sQ$HG.V eL$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5Usha256h !cDOk⫉r3>"ZiW4/VeL$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiosha256ހ$(GRkEX #V.ԒGm*VeL$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUsha256Dbnj).ޡmߝhrሥVeL$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8sha256EG6 [ʙ| $^VeL$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Msha256taj_/9SBiޟܹVeL$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgsha2568/-@s5bZVO8VeL$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYsha256ƻu%\ rVNyZB^VeL$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9Usha256SeGCp~AƧ{*VeL$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6ksha256RYMX6LcˆN6tҷVeL$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwsha256w'р; ciGM`ӆr,VeL$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLksha256,ekOcNsgԭVeL$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIsha256Difeqc(&4§RVeL$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Ysha256}G^4,`} bs* }6vVeL$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYsha256B@q|zi+EI $`ҳa4VeL$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4Usha256kE^I^Xiڊ++EO@uVeL$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQsha256 c ^m=ؔ>vVsVeL$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8sha256_!߯٫N= U&xC[7Xe/VeL$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMsha256J,x,Lh>TY5veucVeL$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcsha256ly`9_^dOUֻ,CXV eL$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQsha256ɃC8prٹ߿svXї2cyHp`V eL$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIsha256ϳ٬u)@70dJ7E9n1&ҎV eL$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMsha256KVoYGHJ2W.ŋ:/fE{{EV eL$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iAsha256ɯH\DAWK8&lS8 V eL$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwsha256u9 }n;^aˏG< j hVeL$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIsha256G]ChAQ?ȻQN'"VeL$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUsha256\{qńq<`ko$BvqAeVeL$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYsha256d K$_m}pHvVVeL$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwsha256j|a|L,,d }. $s 3ElVeL$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIsha256TYB.OO01V]ZVeL$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUsha2569;dmSP垀UI%-:~*=VeL$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0sha256=d{ 6_r-zl]VeL$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8sha256J˵NCh@3|ܮC/0$OVeL$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCksha256 xz?(Äxdлer.)VeL$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcsha256uB~8/Bֈ`Ry߼V~eL$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgsha256TWB" hLBe-U+E'gMV}eL$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAoksha256ǻ/JЏ-+lH] W X 0  ` 8  p H  `8Y1 H  yQ)pX0lEqI!a9iAyQ) h @'Q!uqIEMXzdeNeXdJ('Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!vAUAIZrCnHTeMGeNuw:localhost:8800c'Q!vAUAIZrCnHTeMGeNuw:localhost:8800b'Q!vAUAIZrCnHTeMGeNuw:localhost:8800a&Q!uxKymrHZeXRYCZwekU:localhost:8800B&Q!uxKymrHZeXRYCZwekU:localhost:8800A&Q!uxKymrHZeXRYCZwekU:localhost:8800@&Q!uxKymrHZeXRYCZwekU:localhost:8800?'Q!ubmTdQFAhrhZkGULDx:localhost:8800 |'Q!ubmTdQFAhrhZkGULDx:localhost:8800 {'Q!ubmTdQFAhrhZkGULDx:localhost:8800 z'Q!ubmTdQFAhrhZkGULDx:localhost:8800 y'Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~'Q!ubmTdQFAhrhZkGULDx:localhost:8800 }'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vAUAIZrCnHTeMGeNuw:localhost:8800f'Q!vAUAIZrCnHTeMGeNuw:localhost:8800e'Q!vAUAIZrCnHTeMGeNuw:localhost:8800d'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 &Q!uxKymrHZeXRYCZwekU:localhost:8800>'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800 'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800h'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800y'Q!vOfeZvbtpuHfoqShFl:localhost:8800x'Q!vOfeZvbtpuHfoqShFl:localhost:8800w'Q!vOfeZvbtpuHfoqShFl:localhost:8800v'Q!vOfeZvbtpuHfoqShFl:localhost:8800u'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!ubmTdQFAhrhZkGULDx:localhost:8800 s'Q!ubmTdQFAhrhZkGULDx:localhost:8800 r'Q!ubmTdQFAhrhZkGULDx:localhost:8800 q'Q!ubmTdQFAhrhZkGULDx:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!ubmTdQFAhrhZkGULDx:localhost:8800 x'Q!ubmTdQFAhrhZkGULDx:localhost:8800 w'Q!ubmTdQFAhrhZkGULDx:localhost:8800 v'Q!ubmTdQFAhrhZkGULDx:localhost:8800 u'Q!ubmTdQFAhrhZkGULDx:localhost:8800 t'Q!uqIEMXzdeNeXdJmuwh:localhost:8800    *teQau$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2189}{"auth_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8", "$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8"], "type": "m.room.join_rules", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042410894, "hashes": {"sha256": "A4ynoQUn9CK5VUxhnb0AqEzga3LGB8w8SV1XU1ftzjE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UTBn4yLIhCE8IrDSonBlUz1WETJ0mZPZrxdrmP+kwaemozd4pFHHxc7WdvR2qQWAnmUiWlCswsIRHPopjLroCw"}}, "unsigned": {"age_ts": 1570042410894}}keQac$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2188}{"auth_events": ["$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "type": "m.room.power_levels", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"users": {"@anon-20191002_181700-390:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042409936, "hashes": {"sha256": "zkQ9vxAQox75e9G7aIUjKZVyG95ZIV8VkBfVQcj/3Zs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WwKMuBj3DLr+m80Ph70zukIBAyQZlkaPI3zQ4MmdPpeMA8aFbw4ZBnP6GF+JpRbxru5baXsWHezzMPHsDTCzDA"}}, "unsigned": {"age_ts": 1570042409936}}veQay$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2187}{"auth_events": ["$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc"], "prev_events": ["$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc"], "type": "m.room.member", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-390", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-390:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042409256, "hashes": {"sha256": "SgWlPuuIXxwuHrTY7qhF6dvGOYmjkv9dir9M+dLu7Og"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eP9149nX7ZTjLlCLNVqZToWuO9RUYNDobZGhOS3aTWgm8IXBIr+JJPAaiayLUZuTyv2km1pwa5BnZUfAFIYvBg"}}, "unsigned": {"age_ts": 1570042409256}}ieQa_$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2186}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-390:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042408292, "hashes": {"sha256": "s3Vc+jOAqsYgPqu4A1uZGIvWuQWwW6dqgJehBpToF50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4srSLAAVlqeMUTbfBr0OJLCOX2QBZ3HZ8QDsW3xH8G0nPGq7V8bgaFP1BypIRQ/5ZwUJ3/CRIUqGWwGuwSl4CQ"}}, "unsigned": {"age_ts": 1570042408292}} =CE A ~ = z 9 x 7 x 9y8y:z9z;{:{<|;|=>7 Q!wBkUBAjOznOyxrLchl:localhost:8800m&\  =6 Q !sHRHoXzYrrPSlWBkoh:localhost:8800m&\ !<5 Q   !AoAvmnwMkhYBQsbCsL:localhost:8800m&\m<4 Q  !IlGJpjzrvvAFuwTAgo:localhost:8800m&\5m=3 Q !CSqENqzAezaZnGktbE:localhost:8800m&\ !=2 Q !vBvlJEXUSQKUYmsKcO:localhost:8800m&\ >1 Q!RDEAXrqXQizuhCUFPq:localhost:8800m&\ >0 Q!mogJVPxghalmKbblUq:localhost:8800m&\ o) Q!DelfBAGvCrTXgNxmNV:localhost:8800m&\ >( Q!kOmCTyiizHqfCJdhlR:localhost:8800m&\ o<' Q  !pJUItjYTOUJQFIxyiX:localhost:8800m&\=& Q !mvgUHEsfGqDkPQUvfG:localhost:8800m&\ !<% Q   !WYyiQAVvitxsLZKVCG:localhost:8800m&\m<$ Q  !KIHYKMzkRDrJwiywwz:localhost:8800m&\8i=# Q !RSLvuCuAqKQQrKCxNq:localhost:8800m&\ !=" Q !DqxFmsXPclgGqpSwdy:localhost:8800m&\ >! Q!uqIEMXzdeNeXdJmuwh:localhost:8800m&\ > Q!yAzXcNLHMuqFOcOexj:localhost:8800m&\ o< Q  !tLkhTnTgDjjAvscRkW:localhost:8800m&\= Q !kAxKaIQhXTtGFWSUgr:localhost:8800m&\ *>< Q   !WhLedNwPGGGTtqeqam:localhost:8800m&\"< Q  !yLccBXjjEasExpsXlt:localhost:8800m&\E= Q !PcvmCDeVUSyJbXpTig:localhost:8800m&\ *= Q !HbYxdEuVIeLKHwqJEh:localhost:8800m&\ 'e> Q!FbJSiQoZtZkaFwzzQq:localhost:8800m&\ )> Q!JPTwFTSDaBXwUTgitj:localhost:8800m&\ &< Q  !RYNJAGdRhIlwRZFbrO:localhost:8800m&\= Q !MqstbCLZIQFiYNHrqR:localhost:8800m&\ *;< Q   !WuiaqqIOvBjgETqdus:localhost:8800m&\"< Q  !bQDOrbAknnQZfUbhgS:localhost:8800m&\A= Q !GSxvxNevpCiwmFCHys:localhost:8800m&\ *= Q !yfizglmCXdcqCgDrTr:localhost:8800m&\ 'e> Q!XnUZiYJDWVNGfsBnGz:localhost:8800m&\ )> Q!ePtMOPPOgOcBIMNZpn:localhost:8800m&\ &< Q  !YGUjVdVdpcQoGkRnWB:localhost:8800m&\> Q !IZkczIYykpZDvjuUWn:localhost:8800m&\ > Q!zuCqeooOnfWkYrQdxA:localhost:8800m&\  "> Q!vttkrtSyHEJXVMlvLo:localhost:8800m&\ > Q!whuymJoLfUdkFdxoyE:localhost:8800m&\> Q!yTQmLDAxZscWKLMSWh:localhost:8800m&\ 'u> Q!eWRdwtyqHvuxZFvhNS:localhost:8800m&\ 'u> Q!UGVFuRGyPQmBbGsEDo:localhost:8800m&\ 'u> Q!AMLmLqizBFklpqKibP:localhost:8800m&\-]> Q!rWGwSSefrZzQYCYFHs:localhost:8800m&\ 'w> Q!HXfrGcvJCbRItyQLVE:localhost:8800m&\*k> Q!HusOrLtWZTLbmQZxmm:localhost:8800m&\*i> Q!BpTqIemsWFZIqTcgJO:localhost:8800m&\ $> Q!YQATbgbLImCDamiDHC:localhost:8800m&\O> Q!svYOOXWZHtQQzlMcEP:localhost:8800m&\*i< Q  !CGckPHdSYcIocFvRAq:localhost:8800m&\"< Q  !BoyzlWNkRPncpDjBDg:localhost:8800m&\2<~ Q  !djwLhpJUYOKsgQtrky:localhost:8800m&\2<} Q  !bkwyieHZwSMJfuSKvV:localhost:8800m&\<| Q  !XcaKxZsPvbZhAGKKdx:localhost:8800m&\ <{ Q  !jDKAOtmeAGbYTpwyEW:localhost:8800m&\2 [kN3{^C L /  ~ c @ ) x 9   k P -  | e & uX=iRbE*t]oXj+ze&tY6! / nm.room.join_rules}3 mm.room.power_levels|>']lm.room.member@anon-20191002_181700-407:localhost:8800{' km.room.createz>']jm.room.member@anon-20191002_181700-405:localhost:8800y>']im.room.member@anon-20191002_181700-404:localhost:8800x# hm.room.namew"? gm.room.history_visibilityv/ fm.room.join_rulesu3 em.room.power_levelst>']dm.room.member@anon-20191002_181700-403:localhost:8800s' cm.room.creater>']bm.room.member@anon-20191002_181700-401:localhost:8800q# am.room.namep"? `m.room.history_visibilityo/ _m.room.join_rulesn3 ^m.room.power_levelsm>']]m.room.member@anon-20191002_181700-400:localhost:8800l' \m.room.createk>'][m.room.member@anon-20191002_181700-399:localhost:8800j>']Zm.room.member@anon-20191002_181700-398:localhost:8800i# Ym.room.nameh"? Xm.room.history_visibilityg/ Wm.room.join_rulesf3 Vm.room.power_levelse>']Um.room.member@anon-20191002_181700-397:localhost:8800d' Tm.room.createc"? Sm.room.history_visibilityb/ Rm.room.join_rulesa3 Qm.room.power_levels`>']Pm.room.member@anon-20191002_181700-395:localhost:8800_' Om.room.create^"? Nm.room.history_visibility]/ Mm.room.join_rules\3 Lm.room.power_levels[>']Km.room.member@anon-20191002_181700-394:localhost:8800Z' Jm.room.createY"? Im.room.history_visibilityX/ Hm.room.join_rulesW3 Gm.room.power_levelsV>']Fm.room.member@anon-20191002_181700-393:localhost:8800U' Em.room.createT"? Dm.room.history_visibilityS/ Cm.room.join_rulesR3 Bm.room.power_levelsQ>']Am.room.member@anon-20191002_181700-392:localhost:8800P' @m.room.createO"? ?m.room.history_visibilityN/ >m.room.join_rulesM3 =m.room.power_levelsL>']']7m.room.member@anon-20191002_181700-390:localhost:8800F' 6m.room.createE"? 5m.room.history_visibilityD/ 4m.room.join_rulesC3 3m.room.power_levelsB>']2m.room.member@anon-20191002_181700-389:localhost:8800A' 1m.room.create@"? 0m.room.history_visibility?/ /m.room.join_rules>3 .m.room.power_levels=>']-m.room.member@anon-20191002_181700-388:localhost:8800<' ,m.room.create;"? +m.room.history_visibility:/ *m.room.join_rules93 )m.room.power_levels8>'](m.room.member@anon-20191002_181700-387:localhost:88007' 'm.room.create6"? &m.room.history_visibility5/ %m.room.join_rules43 $m.room.power_levels3>']#m.room.member@anon-20191002_181700-386:localhost:88002' "m.room.create1>']!m.room.member@anon-20191002_181700-385:localhost:88000>'] m.room.member@anon-20191002_181700-385:localhost:8800/"? m.room.history_visibility./ m.room.join_rules-3 m.room.power_levels,>']m.room.member@anon-20191002_181700-384:localhost:8800+' m.room.create*>']m.room.member@anon-20191002_181700-383:localhost:8800)"? m.room.history_visibility(/ m.room.join_rules'3 m.room.power_levels&>']m.room.member@anon-20191002_181700-382:localhost:8800%' m.room.create$>']m.room.member@anon-20191002_181700-381:localhost:8800# O\ Z  o  m)3<LO!"e)Q ]$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwm.room.message!djwLhpJUYOKsgQtrky:localhost:8800mFmG@anon-20191002_181700-393:localhost:8800,!e?Q ]$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkm.room.history_visibility!djwLhpJUYOKsgQtrky:localhost:8800mABmD@anon-20191002_181700-393:localhost:8800$ e/Q ]$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIm.room.join_rules!djwLhpJUYOKsgQtrky:localhost:8800m=(m?t@anon-20191002_181700-393:localhost:8800&e3Q ]$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Ym.room.power_levels!djwLhpJUYOKsgQtrky:localhost:8800m9Qm:@anon-20191002_181700-393:localhost:8800 e'Q ]$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYm.room.member!djwLhpJUYOKsgQtrky:localhost:8800m6am6@anon-20191002_181700-393:localhost:8800 e'Q  ]$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4Um.room.create!djwLhpJUYOKsgQtrky:localhost:8800m1m2'@anon-20191002_181700-393:localhost:8800!e)Q ]$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQm.room.message!bkwyieHZwSMJfuSKvV:localhost:8800m+m+@anon-20191002_181700-392:localhost:8800e#Q ]$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8m.room.test!bkwyieHZwSMJfuSKvV:localhost:8800m(m(@anon-20191002_181700-392:localhost:8800,e?Q ]$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMm.room.history_visibility!bkwyieHZwSMJfuSKvV:localhost:8800m$Ym&O@anon-20191002_181700-392:localhost:8800$e/Q ]$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcm.room.join_rules!bkwyieHZwSMJfuSKvV:localhost:8800m!m"@anon-20191002_181700-392:localhost:8800&e3Q ]$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQm.room.power_levels!bkwyieHZwSMJfuSKvV:localhost:8800m,m >@anon-20191002_181700-392:localhost:8800 e'Q ]$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIm.room.member!bkwyieHZwSMJfuSKvV:localhost:8800m|m@anon-20191002_181700-392:localhost:8800 e'Q  ]$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMm.room.create!bkwyieHZwSMJfuSKvV:localhost:8800mm@anon-20191002_181700-392:localhost:8800e#Q ]$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iAm.room.test!XcaKxZsPvbZhAGKKdx:localhost:8800m(m,@anon-20191002_181700-391:localhost:8800,e?Q ]$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwm.room.history_visibility!XcaKxZsPvbZhAGKKdx:localhost:8800mmy@anon-20191002_181700-391:localhost:8800$e/Q ]$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIm.room.join_rules!XcaKxZsPvbZhAGKKdx:localhost:8800m m@anon-20191002_181700-391:localhost:8800&e3Q ]$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUm.room.power_levels!XcaKxZsPvbZhAGKKdx:localhost:8800m m @anon-20191002_181700-391:localhost:8800 e'Q ]$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYm.room.member!XcaKxZsPvbZhAGKKdx:localhost:8800mmA@anon-20191002_181700-391:localhost:8800 e'Q  ]$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwm.room.create!XcaKxZsPvbZhAGKKdx:localhost:8800mm.@anon-20191002_181700-391:localhost:8800!e)Q ]$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIm.room.message!jDKAOtmeAGbYTpwyEW:localhost:8800mmT@anon-20191002_181700-390:localhost:8800,e?Q ]$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUm.room.history_visibility!jDKAOtmeAGbYTpwyEW:localhost:8800mm@anon-20191002_181700-390:localhost:8800$ e/Q ]$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0m.room.join_rules!jDKAOtmeAGbYTpwyEW:localhost:8800mm@anon-20191002_181700-390:localhost:8800& e3Q ]$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8m.room.power_levels!jDKAOtmeAGbYTpwyEW:localhost:8800mm@anon-20191002_181700-390:localhost:8800 e'Q ]$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkm.room.member!jDKAOtmeAGbYTpwyEW:localhost:8800m(m@anon-20191002_181700-390:localhost:8800 #s 1 @ n ; gp4=et 2Ao_+eQ# $QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800m.room.namem*eQ? $w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibilitye)eQ/ $gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rulesg(eQ3 $YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels 'eQ']$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800a&eQ' $okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800m.room.createm%eQ? $cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibilitye$eQ/ $jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rulesg#eQ3 $oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels "eQ']$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800a!eQ' $yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800m.room.createm eQ? $dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibilityeeQ/ $OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rulesgeQ3 $xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels eQ']$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800aeQ' $UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800m.room.createmeQ? $3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibilityeeQ/ $mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rulesgeQ3 $4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels eQ']$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800aeQ' $ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800m.room.createmeQ? $Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibilityeeQ/ $oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rulesgeQ3 $yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels eQ']$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800aeQ' $S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.createmeQ? $dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibilityeeQ/ $R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rulesgeQ3 $XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels eQ']$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800a eQ' $apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.createm eQ? $-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibilitye eQ/ $pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rulesg eQ3 $SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels eQ']$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800 9j'P < 3 2 _  F  >\gZ}nm*1z?BQ? !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibility <Q3 !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels :Q/ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules n6Q' !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.create :Q/ !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rules ^Q']!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800:Q/ !utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rulesBQ? !utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibility6Q' !utJsNQubeIXvcTKGpx:localhost:8800m.room.create<Q3 !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels^Q']!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800^Q']!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800:Q/ !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rulesBQ? !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibility<Q3 !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_access6Q' !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create<Q3 !ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels^Q']!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829^Q']!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800:Q/ !ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rulesBQ? !ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibility6Q' !ubmTdQFAhrhZkGULDx:localhost:8800m.room.create9Q- !uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstone<Q3 !uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels^Q']!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800:Q/ !uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rulesBQ? !uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibility6Q' !uSBqTezaFcMnlowsEf:localhost:8800m.room.create?Q9 !uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias EQ))!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels ^Q']!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800 RQ'E!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455 :Q/ !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules BQ? !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility 6Q' !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create <Q3 !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels]Q'[!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800:Q/ !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rulesBQ? !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibility6Q' !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.create<Q3 !uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels k^Q']!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800 gRQ'E!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455 m6Q' !uGpSboYkgxVNOqNeUG:localhost:8800m.room.create lBQ? !uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility j<Q3 !tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels#^Q']!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800":Q/ !tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rules$BQ? !tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility%6Q' !tkajvIKHoOMWGsReBs:localhost:8800m.room.create!<Q3 !tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels +^Q']!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800 ):Q/ !tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules -BQ? !tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility /6Q' !tcYctHPiaKzsKgrXlU:localhost:8800m.room.create '^Q']!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800  wveQay$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2193}{"auth_events": ["$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw"], "prev_events": ["$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw"], "type": "m.room.member", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-391", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-391:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042415066, "hashes": {"sha256": "ob1YkLwynAD8PhXvGR7q3piuNVZjx861s7hBeN0PJsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dZwSo0oHbeuwtznl6m8aUYrYOKXSkQPcp7r/OW/gYWFexEIR7mm6+Dw6Ws1reVxwFRAYyfjWELPE/RA91MpOBA"}}, "unsigned": {"age_ts": 1570042415066}}ieQa_$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2192}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-391:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042414291, "hashes": {"sha256": "DzmqHOtqan9dkgfyYFq7QxAac9+DumT5kqz++N2knrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/TDqzkkZPv3EDjyvn1sjXrnXQ5uIdS6WoCeNrm2lTmLMl2wasvP6VVVv1f3m/z0FSIEXopXdkhYJOJl6vX8kBw"}}, "unsigned": {"age_ts": 1570042414291}}eQk$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "txn_id": "407", "stream_ordering": 2191}{"auth_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8", "$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU"], "type": "m.room.message", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042412530, "hashes": {"sha256": "gIUFbnG/hCDy5PHTf/wZYsjbuvOQxkL6uFXgPzFgdDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fhovmjnly9VOua/L/D4RSXPwVDrdKUvi/0Vy1ob3HUg0JVrn6L9Fz4ib2hxit0pEIX5sGTqYXcNORrsfHpRoCQ"}}, "unsigned": {"age_ts": 1570042412530}}eQa$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2190}{"auth_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8", "$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0"], "type": "m.room.history_visibility", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042411544, "hashes": {"sha256": "RuFI8kGPXzGyUlgQAESoq/F5+p113NHamwuVHhJG/ek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEjQR7K2rw5Fogwo5raF/W7jW9C1H4jL1gjnjpKvSPUpP9giuchFV561CEyWtKSx09U/9UrXgtuHwk19LXfcCQ"}}, "unsigned": {"age_ts": 1570042411544}} >47Smo6R4nUq8  Q T5   q 8 T  q 8 T pR8e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAsha256j8e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZIsha256 8e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNosha256 8e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYsha256 g8e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88sha256 8e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8sha256 8e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYsha256 8e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHosha256 8e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAsha256 A8e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQsha256 ;8e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWksha2568e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwsha2568e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8csha2568e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYsha2568e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQsha256.8e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYsha256 8e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30sha2568e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMsha256 8e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Asha256 k8e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0sha2568e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIsha256,8e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64sha2568e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0osha256 8e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYsha256 8e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAsha2568e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Usha256 8e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIsha256 8e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMsha2568e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMsha256]8e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zegsha256&8e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Usha256v8e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8sha256 8e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2Asha256[8e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUsha2568e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4sha2568e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwsha256 8e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQsha2567e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAsha2568e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYsha2568e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAsha256o8e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwsha2568e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEgsha2568e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYsha256Y8e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEsha256z8e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Awsha256 8e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Usha256 i8e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDksha256{7e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRosha256g8e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQsha2568e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qsha25618e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgsha2568e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSssha2568e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gcsha25698e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkksha256 8e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6Asha256 "8e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELksha256I8e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVksha2568e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEsha2568e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01ssha2568e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMsha2568e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQsha256 @8e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aassha256 >^,XiQK o= uC= z H u  \  P    & *  % C}c1XwE pj8,21e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUq1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80J1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg<1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo 1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMA1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ 41e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0C1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI701e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU t1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM61e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc<1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMor1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc 21e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUe1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkAA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw81e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYW1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs^1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q h W21e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE= d1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ_0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0>1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4f1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0d1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNov1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwg d1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkp1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg21e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0  D DH eQa$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2197}{"auth_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU", "$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw"], "type": "m.room.test", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042418216, "hashes": {"sha256": "vZ1ET/MICfrc0OMu0jsiYePWw0dt9kNKuaCH7+/vZdE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pyALJNISmrZB+9FXesjHRwtxWIhpDPVGGCOgVyfaLeDftfNiUmT8fk5syBuQCMuQCvgdk+BKRMk0GXquCJgTAw"}}, "unsigned": {"age_ts": 1570042418216}} eQa$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2196}{"auth_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU", "$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI"], "type": "m.room.history_visibility", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042417151, "hashes": {"sha256": "WJErC88DzkdnQVsamg/tvoqYUPLWaINhJz9zp+9+Ud4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8Kqve11G99ccP75SU6QU9jdiU3NTVttHZzeCQT9SoUxYcUN3KHOQzuXGOw0Z6a47Q72/DaNU9PiTag16KYLvBg"}}, "unsigned": {"age_ts": 1570042417151}}teQau$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2195}{"auth_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU", "$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU"], "type": "m.room.join_rules", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042416519, "hashes": {"sha256": "xf2/zqioOXmzMoaErl2ndYpn4G5OsRjoZ7Bux0PNc4w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QuK5QvU8x9984H5woQez5flpJlLlUbYMbxwLpy1bD83f9LadBUKKEFXGpBgCzGrD6Pmp73b1qmb8AGZgbgJ8Bw"}}, "unsigned": {"age_ts": 1570042416519}}keQac$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2194}{"auth_events": ["$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "type": "m.room.power_levels", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"users": {"@anon-20191002_181700-391:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042415869, "hashes": {"sha256": "5pm3QPsfJo2OC2mmskNNfnDhuoPPEI+qxVAnwQGF1ZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kaPsp+2FkPah+gLtICNWVk6HmMN5/I0qNj68ydCORs3Rx9XePs0Mme5f5KVX1WElmaVfTvirNEvYHN/sdnczDg"}}, "unsigned": {"age_ts": 1570042415869}} "$/ Y  D Imx 0;eq |gnQ/ e_!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rules$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00FwimQ3 e^!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM lQ']e]!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4ckQ' e\!YQATbgbLImCDamiDHC:localhost:8800m.room.create$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk jQ']e[!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk iQ']eZ!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4AahQ# eY!svYOOXWZHtQQzlMcEP:localhost:8800m.room.name$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akogQ? eX!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibility$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYgfQ/ eW!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rules$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwieQ3 eV!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ dQ']eU!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0ccQ' eT!svYOOXWZHtQQzlMcEP:localhost:8800m.room.create$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgobQ? eS!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibility$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYgaQ/ eR!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rules$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8i`Q3 eQ!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U _Q']eP!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioc^Q' eO!CGckPHdSYcIocFvRAq:localhost:8800m.room.create$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUo]Q? eN!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibility$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Mg\Q/ eM!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rules$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgi[Q3 eL!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY ZQ']eK!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UcYQ' eJ!BoyzlWNkRPncpDjBDg:localhost:8800m.room.create$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6koXQ? eI!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibility$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkgWQ/ eH!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rules$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIiVQ3 eG!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y UQ']eF!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYcTQ' eE!djwLhpJUYOKsgQtrky:localhost:8800m.room.create$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UoSQ? eD!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibility$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMgRQ/ eC!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rules$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wciQQ3 eB!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ PQ']eA!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIcOQ' e@!bkwyieHZwSMJfuSKvV:localhost:8800m.room.create$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMoNQ? e?!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibility$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwgMQ/ e>!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rules$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI ! 0 @ P ` p(8HXhxuK ]@anon-20191002_181700-425:localhost:8800$2b$04$g08/VV2w5h/4WIWwAVkFluPQuklx6EtPIg2toIEd8g126NXm7AwCm]uJ ]@anon-20191002_181700-423:localhost:8800$2b$04$L4/GybbKaC9KJl0ArAUpwebICzcuVpTg8W/ggoqaDxAAXNbHXvH.u]uI ]@anon-20191002_181700-421:localhost:8800$2b$04$J1dYtaUFq92hNdEUvnUYC.a7j3zpKavF4thxbUr2fuldWaNPEuzL6]uH ]@anon-20191002_181700-422:localhost:8800$2b$04$Uh7U0J1Sbm1iuB8sVQhd1.76w3m2lZKf7FmDFrxQ9GOsinonVcab.]uG ]@anon-20191002_181700-420:localhost:8800$2b$04$kLtzEFC4aQKqh9d4L1mDm.ejQlqF2J1A.lmIF2/8WD2cWe1VRzGC.]uF ]@anon-20191002_181700-419:localhost:8800$2b$04$WywDkRQv1WaEX9gvQEUXpeRnuRGt5SqgRYlyqkzIHn6KRdghLFhxK]uE ]@anon-20191002_181700-417:localhost:8800$2b$04$LuljtSz5ulNIKuXLGkbhw.213sk3P9D.5gyKrssvoshRv05AYCIYq]uD ]@anon-20191002_181700-418:localhost:8800$2b$04$DQCDDAOjBf8Ee89vWIhvOOh1k2kVIqBPGQSiBMKPjuGPTYTDu3lnm]uC ]@anon-20191002_181700-416:localhost:8800$2b$04$0fUY.L.IP7nLjT40eoZRReHAnITJ4UhZs6rDoYoNxQek9yIpsrLUe]uB ]@anon-20191002_181700-414:localhost:8800$2b$04$gNnV64r1IQqxgOZjwh45N.vDksK2UxOGaif89D294z8GAwQCa7km.]uA ]@anon-20191002_181700-415:localhost:8800$2b$04$T7SKcb0Ss8KXSYU4jL63EeqCwG22.133zVVbBkXroags6PBQtRN.6]u@ ]@anon-20191002_181700-413:localhost:8800$2b$04$NN1aWsWDskJFcHlY.CiHEetGxd4uQLvs6UpAlI85iPKVnG48T8Xty]~u? ]@anon-20191002_181700-411:localhost:8800$2b$04$kfBrV8.VVftZaUpbUcELSO3ZlQhJrwwjpGM0N4nJzTsF3X6hsEIPu]~u> ]@anon-20191002_181700-412:localhost:8800$2b$04$EnTJov31KqLqrD7PaRUaGOGYFJ.3i46SiSF01jcgoQcJiirSzBbUu]~u= ]@anon-20191002_181700-410:localhost:8800$2b$04$RDep0GT79se7d72BRdTMxuIQ4YrlbWcXbeaApkmq4p5wdlaMWyi3q]su< ]@anon-20191002_181700-409:localhost:8800$2b$04$jRlsD/XB6qNNf0laUUDgwe19IIw7moUzHx9caLlFM04CaadLlaR86]ru; ]@anon-20191002_181700-408:localhost:8800$2b$04$6F/wAW6duOc0x7MLy033H.f/kLG/450hADDbTv2/UdY.v95PHkeVG]ru: ]@anon-20191002_181700-407:localhost:8800$2b$04$BKdPefBzjt3V6AuEoMNXYeKPCLB5XxxwFM2J3I/SKgjAz/MK3Zwsi]ru9 ]@anon-20191002_181700-406:localhost:8800$2b$04$8uupj7xXUWfYargQnlK0IuJBsODLF6qrv.rZ2Op5f3MqTw0KIxCEW]gu8 ]@anon-20191002_181700-405:localhost:8800$2b$04$Y6K6UCamzF9lJCF7eCh6peYGDq9kuBQjNtaf9btiRezEyrJ.VT2wO]eu7 ]@anon-20191002_181700-404:localhost:8800$2b$04$xrEyYx7/gdXYyopx2OHelO/2ZrJMdYdrc9ZQC57iWLsaFosJH69zy]eu6 ]@anon-20191002_181700-403:localhost:8800$2b$04$0O6YnXLth4ZpyePAvSUt2esIh226Gsq5UHCblczkLd31ZGcXcH2Lm]eu5 ]@anon-20191002_181700-402:localhost:8800$2b$04$SciAO4fkbxttJ1EJ7PP.keMK5HV2p7PjegCco/tqeKbq1/0AOxOQK]Yu4 ]@anon-20191002_181700-401:localhost:8800$2b$04$8FmQJCvecPg60RaqFsgAw.i3pfNK5MjXqXIE92HuqKptRmlbVM9fO]Yu3 ]@anon-20191002_181700-400:localhost:8800$2b$04$c9fZdq.p.89hK5fFq6SSWOr6CK9ZM4nI90D3N1l4E5PEFwnAuk9ui]Xu2 ]@anon-20191002_181700-399:localhost:8800$2b$04$i7uxk5U8xX7EPGrKQiqE7uc8L7TbxKPa/AEvweH5CZoWrACetSTy2]Mu1 ]@anon-20191002_181700-397:localhost:8800$2b$04$fxWcwnVJi5w1m.rljDMgTuK3A2si.LGmy2rs2LLduIQgscfYXKvQe]Mu0 ]@anon-20191002_181700-398:localhost:8800$2b$04$HTaAVJZrTDMYFtf3jDCWieLwJPNA6In6ifJf8AY/MjeNgTQ9QcZ5y]Mu/ ]@anon-20191002_181700-396:localhost:8800$2b$04$zeBrhhHBeZBHebfPCy4m7uROq0ORJ1sOUNP9KdTKC0WT4HofT.veG]Lu. ]@anon-20191002_181700-395:localhost:8800$2b$04$M0M8d8bim2vWz//Hrgk5OOIKluB4DSOHk54MROopaurgzl2KMhNK6]Fu- ]@anon-20191002_181700-394:localhost:8800$2b$04$L7nzqjObxgeyfhGzMQNHD.ISOap/hTai0Xj3d6niqlD15wQGr2bPS]?u, ]@anon-20191002_181700-393:localhost:8800$2b$04$DrDEPrwcvmaiywsvs6qSgujlDOqKFKn/rYc9WFDCn0vMiRSAWxaea]9u+ ]@anon-20191002_181700-392:localhost:8800$2b$04$L9AF/lpC/y6bq0S5w8sWK.3JhQ5UPVXXt.soVG8dE9SDTuAW81r6C]2   *teQau$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2201}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ"], "type": "m.room.join_rules", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042421662, "hashes": {"sha256": "x7fSbqQ41/tHC3K/KCiKbwpUM0nSagWuYjXWbl0xegs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ykwKKZlx1QRYop4LKsFW7xbG3Rv0yl1sRf42OwKTb9a27tsYDL2cvXlu0baDmsZRz+8y+B1C9wDNwCVqamrpDQ"}}, "unsigned": {"age_ts": 1570042421662}}k eQac$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2200}{"auth_events": ["$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "type": "m.room.power_levels", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"users": {"@anon-20191002_181700-392:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042421036, "hashes": {"sha256": "PfzqPeN8FRb4Ei7TkETsF4Ji54qKIoPMRyw6lffVpE4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gxYc671GQ1APpiQBXvvGVfY8+KD9VkMTpcj6jzJILk/jn7iVre4joWyDHck/zDXU4tVMlbdobuIKZ53BldyRBg"}}, "unsigned": {"age_ts": 1570042421036}}v eQay$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2199}{"auth_events": ["$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM"], "prev_events": ["$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM"], "type": "m.room.member", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-392", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-392:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042420348, "hashes": {"sha256": "5qepIhEA8TOzNgGO3Obwbw23pcYzjtQo71MM2TB4AhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "22wYVc7bbCuzbpV1SVF4ZAwsnvE9xHPecierHDoH+i2vm2v89hGKwA/fqnNbv6pMPKt625pUu/thYu99cYKZDg"}}, "unsigned": {"age_ts": 1570042420348}}i eQa_$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2198}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-392:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042419603, "hashes": {"sha256": "Gw+KKaUPBGNwkRYaHLUNDs3h572obEsfUpLkxte3C+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Is/NoShhUl97OQl3XyLE2VQbVFo1tpw6pCEj8QNBo/6UfPFQ99irLg+8nhFw82IfgqZnnm+nRqhXgkSCEstqCw"}}, "unsigned": {"age_ts": 1570042419603}} ~z v r n j fb^ZVRNJFmeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800leeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800keeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM!svYOOXWZHtQQzlMcEP:localhost:8800jeeQ$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800ieeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800heeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800geeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800feeQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800eeeQ$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M!CGckPHdSYcIocFvRAq:localhost:8800deeQ$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800ceeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800beeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800aeeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800`eeQ$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800_eeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800^eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800]eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800\eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800[eeQ$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800ZeeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800YeeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800XeeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800WeeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800VeeQ$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800UeeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8!bkwyieHZwSMJfuSKvV:localhost:8800TeeQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800SeeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800ReeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800QeeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800PeeQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~}|{~z}y|xzwyvxuwtvsurtqrpqopnomnlmkljjiihhggffeeddcbbaa``__^^]][\Z[YZXYWXVWUVSURTQSPRNQMPLOKNIMHLGKFJDICHBGAF?E>D=C<B:A9@8?7>5=4<3;2:09/8.7-6+5*4)3(2&1%0$/#.!- ,+*)('&%$#"!      0.-,+*('& % $ # " !            w +ieQa_$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2205}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-393:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042425793, "hashes": {"sha256": "lXW7LWcl9fij23e2ONbO9FvrkRTsRPYBqzaUeZv2vOY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eDKR0Rpf9731wZGq3kRoqaEJ8JNavztPt80UZoe/CjX2yyj3b7nI5W5BhIKg7Xii8HWPXXs50RnSgfkcsk4QDg"}}, "unsigned": {"age_ts": 1570042425793}}eQy$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "txn_id": "408", "stream_ordering": 2204}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8"], "type": "m.room.message", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"body": "Test message", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042424084, "hashes": {"sha256": "Legul06qa3+2GJiPCkLPpmZmlLsq0twHjmzAvtYxE1c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dKXYLw1Po6QOisl/bQrMkRvnkb15NO8BnQMhR1u2GKx8403AIE0ezrwNnIamWEdBXcz5VsgtDIJDFMwItO+vBQ"}}, "unsigned": {"age_ts": 1570042424084}}HeQa$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2203}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM"], "type": "m.room.test", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042423529, "hashes": {"sha256": "tQhdqoDtUAneI/xkrP6NYnnGVdhEfcHSR7Nde8SvVQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Qj6bQ1WJ2z0XmLCJYUg51ONAlVrG19EKQfsDEccMba+7MuY5ISvAvYRrUBTraYNYExwoo98YbW9Z4I8YLIFDg"}}, "unsigned": {"age_ts": 1570042423529}}eQa$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2202}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc"], "type": "m.room.history_visibility", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042422361, "hashes": {"sha256": "gHKKPARmva/1Xtf2Rouo4ojLiX56HooCf/uValkhfv4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iOIhcohjaJuIO8nwAzA+uuFyMoUUPWGwdEubufhKST2Up50+09E/tuHJHXTZJiIeivR8c0UmbVzCXA6jr6Z1BQ"}}, "unsigned": {"age_ts": 1570042422361}}  eQa$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2209}{"auth_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y", "$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI"], "type": "m.room.history_visibility", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042429762, "hashes": {"sha256": "7hO+Lv4RwhAi2KIYApuEQzkTFPV0nEgBd+NxzFCbySs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tVk5I6Njzck3xv0ELXVWqbx2dCDDsb4ayGrTZ7eOnTHvAv91HSm3zxH3TrgEChnWYbYoGHsAPWQypJrGXMPSCQ"}}, "unsigned": {"age_ts": 1570042429762}}teQau$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2208}{"auth_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y", "$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y"], "type": "m.room.join_rules", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042428712, "hashes": {"sha256": "2cvKfoT2NEaNESbfi1tHymI2sR3r0OSPFceMOeLq25E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6falrRhxb7QipI5E9JI5h5wCUGTfDP/DJk2ZZyNw9t3B8QF3+JLQ9VRet7xkXvDJJ29iZ0zwk6PONYrMms9LDA"}}, "unsigned": {"age_ts": 1570042428712}}keQac$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2207}{"auth_events": ["$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "type": "m.room.power_levels", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"users": {"@anon-20191002_181700-393:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042427729, "hashes": {"sha256": "p+gFr02galGX1wmK1ypskDzgzlKwLD0rmGxz/z+CPbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IW+tkC0zRM+lTBCd5PX5sUN3CwItm3EmgczAGn6XJV5EnFdCNU47FvuBuJG5zybiJeVC02l8FFP01puKKpgOCQ"}}, "unsigned": {"age_ts": 1570042427729}}veQay$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2206}{"auth_events": ["$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U"], "prev_events": ["$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U"], "type": "m.room.member", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-393", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-393:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042426977, "hashes": {"sha256": "mCBH85FXp6KePFxDw5ksDizekSV77JaIWBWUlYqxMa8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1F9BqYWDcy2632oOdD5Z+tNDkhdyZfjLU1hQg+BxRvMnXIcCiI/78NhZJQ46IJQP/ygUXQgV8PQK2mZ4bJoDBA"}}, "unsigned": {"age_ts": 1570042426977}} LD ,$; d4 l T D,; L eeQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800FeeQ$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800eeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800feeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800"eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800i eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800 eeQ$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800a eeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:88005eeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800 |eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U!WpThtNEVhrUbUdCdMJ:localhost:8800  -RM H C > 9 4/*|%w rmhc TtQet!HXfrGcvJCbRItyQLVE:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcTsQes!HXfrGcvJCbRItyQLVE:localhost:8800$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgTrQer!HusOrLtWZTLbmQZxmm:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkTqQeq!HusOrLtWZTLbmQZxmm:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakTpQep!HusOrLtWZTLbmQZxmm:localhost:8800$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMToQeo!HusOrLtWZTLbmQZxmm:localhost:8800$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4ETnQen!HusOrLtWZTLbmQZxmm:localhost:8800$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMTmQem!HusOrLtWZTLbmQZxmm:localhost:8800$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2QTlQel!HusOrLtWZTLbmQZxmm:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgTkQek!HusOrLtWZTLbmQZxmm:localhost:8800$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9AasTjQej!BpTqIemsWFZIqTcgJO:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrATiQei!BpTqIemsWFZIqTcgJO:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEThQeh!BpTqIemsWFZIqTcgJO:localhost:8800$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQTgQeg!BpTqIemsWFZIqTcgJO:localhost:8800$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoTfQef!BpTqIemsWFZIqTcgJO:localhost:8800$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcTeQee!BpTqIemsWFZIqTcgJO:localhost:8800$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wTdQed!BpTqIemsWFZIqTcgJO:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQTcQec!BpTqIemsWFZIqTcgJO:localhost:8800$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgTbQeb!YQATbgbLImCDamiDHC:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUTaQea!YQATbgbLImCDamiDHC:localhost:8800$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgT`Qe`!YQATbgbLImCDamiDHC:localhost:8800$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwT_Qe_!YQATbgbLImCDamiDHC:localhost:8800$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00FwT^Qe^!YQATbgbLImCDamiDHC:localhost:8800$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMT]Qe]!YQATbgbLImCDamiDHC:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4T\Qe\!YQATbgbLImCDamiDHC:localhost:8800$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekkT[Qe[!svYOOXWZHtQQzlMcEP:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkTZQeZ!svYOOXWZHtQQzlMcEP:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4ATYQeY!svYOOXWZHtQQzlMcEP:localhost:8800$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akTXQeX!svYOOXWZHtQQzlMcEP:localhost:8800$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYTWQeW!svYOOXWZHtQQzlMcEP:localhost:8800$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwTVQeV!svYOOXWZHtQQzlMcEP:localhost:8800$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQTUQeU!svYOOXWZHtQQzlMcEP:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0TTQeT!svYOOXWZHtQQzlMcEP:localhost:8800$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgTSQeS!CGckPHdSYcIocFvRAq:localhost:8800$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYTRQeR!CGckPHdSYcIocFvRAq:localhost:8800$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8TQQeQ!CGckPHdSYcIocFvRAq:localhost:8800$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5UTPQeP!CGckPHdSYcIocFvRAq:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioTOQeO!CGckPHdSYcIocFvRAq:localhost:8800$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUTNQeN!BoyzlWNkRPncpDjBDg:localhost:8800$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MTMQeM!BoyzlWNkRPncpDjBDg:localhost:8800$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgTLQeL!BoyzlWNkRPncpDjBDg:localhost:8800$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYTKQeK!BoyzlWNkRPncpDjBDg:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UTJQeJ!BoyzlWNkRPncpDjBDg:localhost:8800$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kTIQeI!djwLhpJUYOKsgQtrky:localhost:8800$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkTHQeH!djwLhpJUYOKsgQtrky:localhost:8800$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI -RM H C > 9 4/*|%w rmhc TQe!BpTqIemsWFZIqTcgJO:localhost:8800$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQTQe!BpTqIemsWFZIqTcgJO:localhost:8800$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08TQe!BpTqIemsWFZIqTcgJO:localhost:8800$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoTQe!BpTqIemsWFZIqTcgJO:localhost:8800$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcTQe!BpTqIemsWFZIqTcgJO:localhost:8800$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wTQe!BpTqIemsWFZIqTcgJO:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQTQe!BpTqIemsWFZIqTcgJO:localhost:8800$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgTQe!YQATbgbLImCDamiDHC:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUTQe!YQATbgbLImCDamiDHC:localhost:8800$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgTQe!YQATbgbLImCDamiDHC:localhost:8800$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIT~Qe!YQATbgbLImCDamiDHC:localhost:8800$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwT}Qe!YQATbgbLImCDamiDHC:localhost:8800$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00FwT|Qe!YQATbgbLImCDamiDHC:localhost:8800$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMT{Qe!YQATbgbLImCDamiDHC:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4TzQe!YQATbgbLImCDamiDHC:localhost:8800$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekkTyQe!svYOOXWZHtQQzlMcEP:localhost:8800$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-UTxQe!svYOOXWZHtQQzlMcEP:localhost:8800$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cETwQe!svYOOXWZHtQQzlMcEP:localhost:8800$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszkTvQe!svYOOXWZHtQQzlMcEP:localhost:8800$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1ATuQe!svYOOXWZHtQQzlMcEP:localhost:8800$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8TtQe!svYOOXWZHtQQzlMcEP:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkTsQe!svYOOXWZHtQQzlMcEP:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4ATrQe!svYOOXWZHtQQzlMcEP:localhost:8800$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akTqQe!svYOOXWZHtQQzlMcEP:localhost:8800$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMTpQe!svYOOXWZHtQQzlMcEP:localhost:8800$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYToQe!svYOOXWZHtQQzlMcEP:localhost:8800$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwTnQe!svYOOXWZHtQQzlMcEP:localhost:8800$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQTmQe!svYOOXWZHtQQzlMcEP:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0TlQe!svYOOXWZHtQQzlMcEP:localhost:8800$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgTkQe!CGckPHdSYcIocFvRAq:localhost:8800$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVsTjQe!CGckPHdSYcIocFvRAq:localhost:8800$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9MTiQe!CGckPHdSYcIocFvRAq:localhost:8800$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYThQe!CGckPHdSYcIocFvRAq:localhost:8800$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8TgQe!CGckPHdSYcIocFvRAq:localhost:8800$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5UTfQe!CGckPHdSYcIocFvRAq:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioTeQe!CGckPHdSYcIocFvRAq:localhost:8800$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUTdQe!BoyzlWNkRPncpDjBDg:localhost:8800$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8TcQe!BoyzlWNkRPncpDjBDg:localhost:8800$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MTbQe!BoyzlWNkRPncpDjBDg:localhost:8800$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgTaQe!BoyzlWNkRPncpDjBDg:localhost:8800$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYT`Qe!BoyzlWNkRPncpDjBDg:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UT_Qe!BoyzlWNkRPncpDjBDg:localhost:8800$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kT^Qe!djwLhpJUYOKsgQtrky:localhost:8800$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwT]Qe!djwLhpJUYOKsgQtrky:localhost:8800$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkT\Qe!djwLhpJUYOKsgQtrky:localhost:8800$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI  { keQac$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2213}{"auth_events": ["$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "type": "m.room.power_levels", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"users": {"@anon-20191002_181700-394:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042433788, "hashes": {"sha256": "viF8d0UgnlMazXRoMT8eC4QQLCMq9N/L1uE/UISkImQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uueCTN+ZMF9Ui2VPg1BYoCCnB/ULI0LmOdTQHMWTkduepiTz7ukX8/i3/OuWJjXQb0qWJ2gJKdbYc0lCVw3qCw"}}, "unsigned": {"age_ts": 1570042433788}}veQay$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2212}{"auth_events": ["$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k"], "prev_events": ["$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k"], "type": "m.room.member", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-394", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-394:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042433151, "hashes": {"sha256": "iA3H0tVU+GPfiHTcKLfRbtf/4L9rmMWnYTzF2cuKWuQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FcQp1b6mXwLQJZ9F0NV1Xh5BTnSEemPN0IASAGPH9/Rd+cuQMxAOgdb0VPRTn/5U3Rrtc627xvT4sBCDnG/FDw"}}, "unsigned": {"age_ts": 1570042433151}}ieQa_$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2211}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-394:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042432369, "hashes": {"sha256": "c3S9hmVsKVbqoooDNnn3WNgITqq761mxO3sgAsamq0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2rIEFbTefjvWFhAf6v4PGK5bMTJ3+RpyjY8IvAuU1pQildggma+jYf8cQ71BTcdOeOZ3zomvStV1aUyytSoLBA"}}, "unsigned": {"age_ts": 1570042432369}}eQk$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "txn_id": "409", "stream_ordering": 2210}{"auth_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y", "$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk"], "type": "m.room.message", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042431137, "hashes": {"sha256": "ECZZ74Y2v4MkiMxm7jqBb7nYvybadoXkBg1SrT4C3W8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cuNCeUIh8HiR3G0AFVJPMLVXbswBXeDOoJTNO55L0ChNCuEYiH15dG5ReNqukMrByG8cOgBv8sDFsOjmk58DDQ"}}, "unsigned": {"age_ts": 1570042431137}} c^ h  q # {&;9Qc!:e)Q ] $mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Am.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҢmҢ@anon-20191002_181700-398:localhost:8800!9e)Q ] $xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8m.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҞmҠn@anon-20191002_181700-398:localhost:8800 8e'Q ] $-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkm.room.member!svYOOXWZHtQQzlMcEP:localhost:8800 mқmҜ3@anon-20191002_181700-399:localhost:8800 7e'Q ]$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Am.room.member!svYOOXWZHtQQzlMcEP:localhost:8800mҘmҘ@anon-20191002_181700-398:localhost:88006e#Q ]$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akm.room.name!svYOOXWZHtQQzlMcEP:localhost:8800mҕcmҕ@anon-20191002_181700-397:localhost:88005e#Q ]$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMm.room.test!svYOOXWZHtQQzlMcEP:localhost:8800mғmғ@anon-20191002_181700-397:localhost:8800,4e?Q ]$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYm.room.history_visibility!svYOOXWZHtQQzlMcEP:localhost:8800mҎ&mҏ@anon-20191002_181700-397:localhost:8800$3e/Q ]$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwm.room.join_rules!svYOOXWZHtQQzlMcEP:localhost:8800mҋmҌ@anon-20191002_181700-397:localhost:8800&2e3Q ]$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQm.room.power_levels!svYOOXWZHtQQzlMcEP:localhost:8800m҈Sm҉i@anon-20191002_181700-397:localhost:8800 1e'Q ]$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0m.room.member!svYOOXWZHtQQzlMcEP:localhost:8800m҆:m҆@anon-20191002_181700-397:localhost:88000 e'Q  ]$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgm.room.create!svYOOXWZHtQQzlMcEP:localhost:8800m҃m҄ @anon-20191002_181700-397:localhost:8800!/e)Q ]$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVsm.room.message!CGckPHdSYcIocFvRAq:localhost:8800my-my1@anon-20191002_181700-395:localhost:8800!.e)Q ]$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9Mm.room.message!CGckPHdSYcIocFvRAq:localhost:8800mumv@anon-20191002_181700-395:localhost:8800,-e?Q ]$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYm.room.history_visibility!CGckPHdSYcIocFvRAq:localhost:8800mq5ms@anon-20191002_181700-395:localhost:8800$,e/Q ]$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8m.room.join_rules!CGckPHdSYcIocFvRAq:localhost:8800mnmou@anon-20191002_181700-395:localhost:8800&+e3Q ]$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5Um.room.power_levels!CGckPHdSYcIocFvRAq:localhost:8800mkml@anon-20191002_181700-395:localhost:8800 *e'Q ]$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiom.room.member!CGckPHdSYcIocFvRAq:localhost:8800mhqmh@anon-20191002_181700-395:localhost:8800) e'Q  ]$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUm.room.create!CGckPHdSYcIocFvRAq:localhost:8800mdWmd@anon-20191002_181700-395:localhost:8800!(e)Q ]$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8m.room.message!BoyzlWNkRPncpDjBDg:localhost:8800m^m^@anon-20191002_181700-394:localhost:8800,'e?Q ]$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Mm.room.history_visibility!BoyzlWNkRPncpDjBDg:localhost:8800mY&mZ@anon-20191002_181700-394:localhost:8800$&e/Q ]$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgm.room.join_rules!BoyzlWNkRPncpDjBDg:localhost:8800mVkmW@anon-20191002_181700-394:localhost:8800&%e3Q ]$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYm.room.power_levels!BoyzlWNkRPncpDjBDg:localhost:8800mPmT@anon-20191002_181700-394:localhost:8800 $e'Q ]$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9Um.room.member!BoyzlWNkRPncpDjBDg:localhost:8800mNmO,@anon-20191002_181700-394:localhost:8800# e'Q  ]$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6km.room.create!BoyzlWNkRPncpDjBDg:localhost:8800mKqmK@anon-20191002_181700-394:localhost:8800 \P W ( 4xIMe^6 /c{ 8 g } lN =   e 7 R # | M-    q Bs  D\ /.Q!VhUAklonNaWKRnLkcr:localhost:8800th.Q!TeraguiGoZoeOGFzlI:localhost:8800th|.Q!TWETXUgfFZafDdbqLS:localhost:8800thy.Q!TSFcaXDBqrCREHRHxv:localhost:8800thx.Q!THHfVSOSWiBQTHRAnJ:localhost:8800thw.Q!SyIWYOmcGiASNkPCTB:localhost:8800thv.Q!SvKwEALYoNreUvqAlp:localhost:8800thu.Q!SrwdtDytJDUBVZOueF:localhost:8800tht.Q!SrMQpDMFREKRMELwbL:localhost:8800ths.Q!SpXEytywhTbAftyVBr:localhost:8800thr.Q!TcCLuIBUrtFqghDgay:localhost:8800thz.Q!SrwdtDytJDUBVZOueF:localhost:8800m.Q!SrMQpDMFREKRMELwbL:localhost:8800m.Q!TkluVzxeeCbMtbFWWS:localhost:8800th}.Q!TSFcaXDBqrCREHRHxv:localhost:8800m}.Q!THHfVSOSWiBQTHRAnJ:localhost:8800m-Q!SyIWYOmcGiASNkPCTB:localhost:8800m;.Q!SvKwEALYoNreUvqAlp:localhost:8800m-Q!StEnDjTJToXKXsOHNf:localhost:8829m\.Q!TlJCaYlCkOOVzFDlLx:localhost:8800m.Q!TkluVzxeeCbMtbFWWS:localhost:8800m.Q!TeraguiGoZoeOGFzlI:localhost:8800m-Q!TcaopYfMoJFEcjYRzJ:localhost:8800mx.Q!TcCLuIBUrtFqghDgay:localhost:8800m-Q!TWETXUgfFZafDdbqLS:localhost:8800m&.Q!WYyiQAVvitxsLZKVCG:localhost:8800m%-Q!WWZVpyLeZfyfpWidLx:localhost:8800mF-Q!WVzjUePHrzCjfyTbmK:localhost:8800mY.Q!WFHIeSFQyuugGeBFxW:localhost:8800m.Q!VhUAklonNaWKRnLkcr:localhost:8800mX-Q!VWYMJxEviBNDdJCuKT:localhost:8800m>.Q!VUibrTIkcRbfrogbQV:localhost:8800m>.Q!VOhMAiLfKyTOZbmKGw:localhost:8800m.Q!VNdqhtoDkyMoQdMTtM:localhost:8800m-Q!VCSCNemqikJZiRtxrs:localhost:8829m]-Q!VAEDgDJVqmxXZyAlSW:localhost:8800m5-Q!UyLoIXmzVFwycmBUeh:localhost:8800mW.Q!UluPYLGXtInKDTjRzp:localhost:8800ms.Q!UaitDdkGDcwvRLJSvp:localhost:8800m.Q!UTAORDrNxIbSlGByAp:localhost:8800mb.Q!URpLZLuBfVcfHVTBGS:localhost:8800m.Q!UMFUOnYRvwKwSPkYHB:localhost:8800m.Q!UGVFuRGyPQmBbGsEDo:localhost:8800m-Q!TleKOyAElrpgyyrAQA:localhost:8800m#.Q!TcaopYfMoJFEcjYRzJ:localhost:8800th{.Q!TlJCaYlCkOOVzFDlLx:localhost:8800th~.Q!TleKOyAElrpgyyrAQA:localhost:8800th.Q!UGVFuRGyPQmBbGsEDo:localhost:8800th.Q!VWYMJxEviBNDdJCuKT:localhost:8800th.Q!VUibrTIkcRbfrogbQV:localhost:8800th.Q!VOhMAiLfKyTOZbmKGw:localhost:8800th.Q!VNdqhtoDkyMoQdMTtM:localhost:8800th.Q!VAEDgDJVqmxXZyAlSW:localhost:8800th.Q!UyLoIXmzVFwycmBUeh:localhost:8800th.Q!UaitDdkGDcwvRLJSvp:localhost:8800th.Q!UTAORDrNxIbSlGByAp:localhost:8800th.Q!URpLZLuBfVcfHVTBGS:localhost:8800th.Q!UMFUOnYRvwKwSPkYHB:localhost:8800th.Q!SpXEytywhTbAftyVBr:localhost:8800m.Q!SnROoiDBapNNtMmKnT:localhost:8800thq.Q!SnROoiDBapNNtMmKnT:localhost:8800m.Q!SfYtaUhCFosNfHfUVm:localhost:8800thp.Q!SfYtaUhCFosNfHfUVm:localhost:8800m.Q!WpThtNEVhrUbUdCdMJ:localhost:8800m=.Q!WjlTCJVOFJkanCtkFE:localhost:8800th-Q!WjlTCJVOFJkanCtkFE:localhost:8800mR.Q!WhqVaRReBxJXADAyYD:localhost:8800th.Q!WhLedNwPGGGTtqeqam:localhost:8800th.Q!WgXzOXLTeqaGfiDFhL:localhost:8800th.Q!WYyiQAVvitxsLZKVCG:localhost:8800th.Q!WWZVpyLeZfyfpWidLx:localhost:8800th.Q!WVzjUePHrzCjfyTbmK:localhost:8800th.Q!WFHIeSFQyuugGeBFxW:localhost:8800th[.Q!XGAmnfaVvjDtQJuufa:localhost:8800m[.Q!WuiaqqIOvBjgETqdus:localhost:8800th.Q!WuiaqqIOvBjgETqdus:localhost:8800m.Q!WpThtNEVhrUbUdCdMJ:localhost:8800th.Q!WhqVaRReBxJXADAyYD:localhost:8800m.Q!WhLedNwPGGGTtqeqam:localhost:8800m.Q!WgXzOXLTeqaGfiDFhL:localhost:8800m "ao- 8 f  / ];FtJxVa _eQ']$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800joina^eQ' $Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create ]eQ']$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800join \eQ']$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800join_[eQ# $cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.namemZeQ? $1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibilityeYeQ/ $SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rulesgXeQ3 $dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels WeQ']$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800joinaVeQ' $np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create UeQ']$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800join_TeQ# $jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800m.room.namemSeQ? $gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibilityeReQ/ $5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rulesgQeQ3 $c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels PeQ']$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800joinaOeQ' $xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800m.room.create NeQ']$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800join MeQ']$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800join_LeQ# $QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800m.room.namemKeQ? $w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibilityeJeQ/ $gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rulesgIeQ3 $YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels HeQ']$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800joinaGeQ' $okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800m.room.createmFeQ? $cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibilityeEeQ/ $jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rulesgDeQ3 $oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels CeQ']$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800joinaBeQ' $yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800m.room.createmAeQ? $dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibilitye@eQ/ $OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rulesg?eQ3 $xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels >eQ']$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800join  zieQa_$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2217}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-395:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042438743, "hashes": {"sha256": "D/3avfn7RH5dWqRfbck7NiG6GKW+0KlqjyYELguC5mE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xyAozhpbVDnm0ruHc4R7L28oswp7nVN2SQX03VXz8LKEmXdFmV6zAxYSLtHwV4Eh9VR4W0kPtVr8pMmu++mFAw"}}, "unsigned": {"age_ts": 1570042438743}}eQk$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "txn_id": "410", "stream_ordering": 2216}{"auth_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY", "$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M"], "type": "m.room.message", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042437123, "hashes": {"sha256": "ClZ6LmzNTXL+PHVWF7BYcYszaSDlaYNQMYu2pqkdMFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N6pVME3NGF2JtvFnNIduLqSPwJ/XsxOFpZFlhdAdEI2elQ3nRfGcp2/+OjqmHKeuL3z39tbcG+X2C2YPQ7EUAQ"}}, "unsigned": {"age_ts": 1570042437123}}eQa$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2215}{"auth_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY", "$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg"], "type": "m.room.history_visibility", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042435878, "hashes": {"sha256": "4wEDnYOFupjBpdab3dRWBsUPjUYRcXIHznefFkQxVwE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kg1aE9P6JpK2vd+mIl9YsLrb4Mi71DV2cfHYRcn4OyChTicgvmRKgDAxLOXwJKoADHXjDpPle4wQ8wNid3YdAw"}}, "unsigned": {"age_ts": 1570042435878}}teQau$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2214}{"auth_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY", "$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY"], "type": "m.room.join_rules", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042435179, "hashes": {"sha256": "xB1LBuRrhgEJD+4RnCJRAToGECiXGu2LpX/xdDNZ6uc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6/dQ07MhkpFLZ5mYsGxQVgChHTqDMz33ISIi6/FoOXOjH4GgonzDEzrHIbcs/wn8m/Fk2FpMacg+Us9CkivJAw"}}, "unsigned": {"age_ts": 1570042435179}} )0`p 0 @ P `  p 0@P`p 0@PMo]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mn]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mm]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Ml]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mk]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800Mj]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800Mi]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800Mh]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800Mg]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800Mf]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800Me]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800Md]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800Mc]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800Mb]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800Ma]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800M`]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800M_]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800M^]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800M]]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800M\]Q@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800M[]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800MZ]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800MY]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800MX]Q@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800MW]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800MV]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800MU]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800MT]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800MS]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800MR]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800MQ]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800MP]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800MO]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800MN]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800MM]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800ML]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800MK]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800MJ]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800MI]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800MH]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800MG]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800 ii 45h  g 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5Da1ZYVGEsbVJOZmI1dCYKMDAyZnNpZ25hdHVyZSBjz-vUfZk1Zkypt5OEijykhRSxh43fSCBn96gcrHzhqAoÂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY5Ni5nNmJVdVc3TVQwd0gKMDAyZnNpZ25hdHVyZSBnyuRDIco-3F101-WmUcWzSotfzDJSJ1tRM1jivmRsOAo‚1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-MgoĂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywoƂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0woǂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwoʂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAoɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAoȂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwo˂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAoł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwô1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQo͂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtabDZuOFRSSyZ4U2U1NzUKMDAyZnNpZ25hdHVyZSA2B1qWMNWGc58YXM1YhnKM2QCsGLDKkznatQDfh-YpqQo  "eQa$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2221}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8"], "type": "m.room.history_visibility", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042442037, "hashes": {"sha256": "uixn6kw7GPbeWU6CnfTVCJUKWm7fbMDSd2Hrz2vm4Gg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YFdrp+xOWSmM7/zW5vy3x2hTLL9Kn/Yd45Td189ypr6jzvLAjzRhIty4aLHfjK4w+QNR61cdGG8Lt8wg6jboDQ"}}, "unsigned": {"age_ts": 1570042442037}}t!eQau$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2220}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U"], "type": "m.room.join_rules", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042441397, "hashes": {"sha256": "k1zmwwJL+hUaA2aSfs8hnpuHXByxaMpUw1Pg8pe1M1M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FIrAUpT3FIcRUmsWgDtfM33/SVUbNSGMZTdQtqUiuoJ1MXPchlsfNYhRemCoNkJHnDv9+Tkb6QuRhnO74PHXAQ"}}, "unsigned": {"age_ts": 1570042441397}}k eQac$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2219}{"auth_events": ["$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "type": "m.room.power_levels", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"users": {"@anon-20191002_181700-395:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042440603, "hashes": {"sha256": "cKdTf+9gD2zR/tH5Tms9CnPBQCW942pFwUeE6ORab2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e+2scq6SsImHL2cFYkoohHHHrlgLcr6vzcIK9PvY9ZI2SGSvkovAtx9U87QI7lrB0aB8/XQ3bwHBX7Yv6P5yAQ"}}, "unsigned": {"age_ts": 1570042440603}}veQay$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2218}{"auth_events": ["$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU"], "prev_events": ["$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU"], "type": "m.room.member", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-395", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-395:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042439793, "hashes": {"sha256": "pvdIIrHxhCiHHHHeEQqrbKZjRDvnwVwT0sP7VJLXbuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zdZhETbpIr00dUn8NcRh72ONIhZYuMH4Pv6V5pV7OgrGlxMnuXdCd19bfqtcKmqqzKPLNfVqo6PEeb1dGhPxDQ"}}, "unsigned": {"age_ts": 1570042439793}}  w +VBeQa9$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "stream_ordering": 2253}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc"], "prev_events": ["$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ"], "type": "m.room.member", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-404", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-404:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042478771, "hashes": {"sha256": "hYfgeUJ0p+yFfNnj3GfyZUL47+6rMvjTbvZSmIjaVEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MdZ92i9QObEf4j+gprKhZ/6WyBUCMcoCBESqqLECSCne+kZt3nNH400EANjZkBXXzRAMtwrsMKkIzIKikyvtBA"}}, "unsigned": {"age_ts": 1570042478771}}nAeQai$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2252}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08"], "type": "m.room.name", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042478003, "hashes": {"sha256": "n9jjwO6ayxIyapsr2Sq6N+FQjTwuyRoklsP9QXKdack"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fNHg0RndNgHw667Hc5qo+LIDApkF1GiKRFh+dQ16KUmldO/60xbq0o3qKClPOHYdcvqu88Vg2kEc+7x6eVUbCw"}}, "unsigned": {"age_ts": 1570042478003}}H@eQa$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2251}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo"], "type": "m.room.test", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042477584, "hashes": {"sha256": "mYNBY+7w9ingqwn3Joocywmb4YP95r/8BNY7Ody70Io"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4gf3+2N61FhJ3K9imYo3WVZIEvfB9CDA7aDRjUrLK0/U/QA9jwTTnwW3bbSKiJeYnijVpXTg5rTNxfIESs+qAg"}}, "unsigned": {"age_ts": 1570042477584}}?eQa$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2250}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc"], "type": "m.room.history_visibility", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042474889, "hashes": {"sha256": "jPKWSZaVeR+4AIlPQIeAemvysy7aUw9r1RRCHkd22O4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5j/pVfFCTAepNXsoNjPmT2rEYXhE89ZdRSUOlyhH87sssu7C7v4t1Ftkux76qrvObcwPEo/IU1iUEkxgT5xFBw"}}, "unsigned": {"age_ts": 1570042474889}} KZp8  0bh6n  tB< zH |(N> DjT" V $ v P   * \  1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU `1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwso1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0r1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc01e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QW1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsP1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz411e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc31e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 10e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk71e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw 91e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90V1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw >1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA 21e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw ^1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE j1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEW1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0n1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEd1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MX1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ01e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g J2 1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw580e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2KkS1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4K1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYo1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s F21e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4Y1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUykO1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg401e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj411e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEh1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcS1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc '1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0q1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYe1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU _ 8l D `8]c!E@anon-20191002_181700-405:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAoQVDYLSWJGF127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-404:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAoQFVVSFPXDR127.0.0.1Perl + Net::Async::HTTP/0.44mr]c!E@anon-20191002_181700-403:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggagoMFLWYWCNCI127.0.0.1Perl + Net::Async::HTTP/0.44m仃 ]c!E@anon-20191002_181700-401:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwoEBUCUMIOWS127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-400:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwoQHUMTZGCNW127.0.0.1Perl + Net::Async::HTTP/0.44mҲȃ ]c!E@anon-20191002_181700-399:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgoPYXHCRNRQL127.0.0.1Perl + Net::Async::HTTP/0.44mҚ ]c!E@anon-20191002_181700-398:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgoQJTBFOFNHM127.0.0.1Perl + Net::Async::HTTP/0.44mҖ ]c!E@anon-20191002_181700-397:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQoMUYZSHOUYA127.0.0.1Perl + Net::Async::HTTP/0.44m҂]c!E@anon-20191002_181700-396:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQoALHPRAAFGP127.0.0.1Perl + Net::Async::HTTP/0.44m}]c!E@anon-20191002_181700-395:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawoQBHVPKMMWE127.0.0.1Perl + Net::Async::HTTP/0.44md !"+ S { [ d $-U}]f& @Q']e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk ?Q']e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakb>Q# e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.name$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMp=Q? e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibility$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Eh<Q/ e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rules$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMj;Q3 e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q :Q']e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgd9Q' e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas 8Q']e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA 7Q']e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEb6Q# e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.name$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQp5Q? e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibility$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoh4Q/ e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rules$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcj3Q3 e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w 2Q']e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQd1Q' e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg 0Q']e!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUb/Q# e!YQATbgbLImCDamiDHC:localhost:8800m.room.name$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgp.Q? e!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibility$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwh-Q/ e!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rules$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fwj,Q3 e!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM +Q']e!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4d*Q' e!YQATbgbLImCDamiDHC:localhost:8800m.room.create$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk )Q']e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk (Q']e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Ab'Q# e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.name$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akp&Q? e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibility$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYh%Q/ e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rules$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwj$Q3 e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ #Q']e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0d"Q' e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.create$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgp!Q? e!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibility$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYh Q/ e!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rules$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8  {v&eQay$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2225}{"auth_events": ["$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg"], "prev_events": ["$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg"], "type": "m.room.member", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-397", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-397:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042447418, "hashes": {"sha256": "1+Xtn1pLk6bmRkYtx81VEXxBnEndrgGX6HRaSuxLyZ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0/+8MZvVXN10QoZHuwhf4Hjj2tl501FZdKg0bMfv6B+NjTzLy3A21zme21BjxKKMixuh0gA4yuFv+bpcKNE1CA"}}, "unsigned": {"age_ts": 1570042447418}}i%eQa_$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2224}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-397:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042446778, "hashes": {"sha256": "/tStrZcYfQkjIJBofsbNuGlJDvhnecfEg2zjnAyCpvs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tjuHvwoP4oVfxuoezjds2sUbFwhhjGdlA/YM/zMMIkw0OxImSmf1Ux5CeVK44GiSHsJUeBUAcutBYtYygIfoDg"}}, "unsigned": {"age_ts": 1570042446778}}$eQm$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "txn_id": "412", "stream_ordering": 2223}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M"], "type": "m.room.message", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"body": "hello2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042444077, "hashes": {"sha256": "7JMaoQFxaNQ9WdwufyOm9Qj9r1/+kvz4wMy2Ars/YNI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X+MP3BLrszuM3nlAD+9S09ytZ9OCsElNKflCBrhhXWXqEZvdvriug1+BNaspV+A0dB3I7NkyFNikJdq6lezlBA"}}, "unsigned": {"age_ts": 1570042444077}}#eQk$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "txn_id": "411", "stream_ordering": 2222}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY"], "type": "m.room.message", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042443206, "hashes": {"sha256": "AA+NnvWqndjtMwGAzqmO9hQQi4lXJVqN85RRNrHvSeU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MgYNJAsw+lJXxTZf562rNw2MVWrNPw7hPmo/dZUR71ASF+yHah22mA3IpY/gpVxlHPREddj/hniLvtmoJUijCw"}}, "unsigned": {"age_ts": 1570042443206}} ^WpCT)2~Q$vI i <  \ /  { NT'sF " n A  a 4 f9 cY,xK,Q!LazKtcHZriKzCvvGwV:localhost:8800 A A,Q!LazKtcHZriKzCvvGwV:localhost:8800 @ @,Q!LazKtcHZriKzCvvGwV:localhost:8800 ? ?,Q!LazKtcHZriKzCvvGwV:localhost:8800 > >,Q!LazKtcHZriKzCvvGwV:localhost:8800 = =,Q!LazKtcHZriKzCvvGwV:localhost:8800 < <,Q!LazKtcHZriKzCvvGwV:localhost:8800 ; ;,Q!LazKtcHZriKzCvvGwV:localhost:8800 : :+Q !LazKtcHZriKzCvvGwV:localhost:8800 9 9,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800+Q !NJdkYMskQwIpIWlWkn:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LaLcEGFLpjdlYlYKGC:localhost:8800)Q !LaLcEGFLpjdlYlYKGC:localhost:8800+Q !NPdjmIfsBVIIkvWBzD:localhost:8800__,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800+Q !NNiyzThHMivrxhojfp:localhost:8800,Q!NFWKQvZkIwvecnREOC:localhost:8800SS,Q!NFWKQvZkIwvecnREOC:localhost:8800RR,Q!NFWKQvZkIwvecnREOC:localhost:8800QQ,Q!NFWKQvZkIwvecnREOC:localhost:8800PP,Q!NFWKQvZkIwvecnREOC:localhost:8800OO+Q !NFWKQvZkIwvecnREOC:localhost:8800NN,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MXhwoqNXvexeDDSOZT:localhost:8800 < <,Q!MXhwoqNXvexeDDSOZT:localhost:8800 : :,Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 6,Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 5,Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 4,Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 3,Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 2+Q !MXhwoqNXvexeDDSOZT:localhost:8800 1 1,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 +Q !MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800+Q !MlzmtUYSZOiByAZdKx:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800 ,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800+Q !MWCLSWWGdWcSivNVLI:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800+Q !MBWnwKRwFznvRpAzxr:localhost:8800,Q!LvARVIpJZeRQxbKefX:localhost:8800tt,Q!LvARVIpJZeRQxbKefX:localhost:8800ss,Q!LvARVIpJZeRQxbKefX:localhost:8800rr,Q!LvARVIpJZeRQxbKefX:localhost:8800qq,Q!LvARVIpJZeRQxbKefX:localhost:8800pp+Q !LvARVIpJZeRQxbKefX:localhost:8800oo*Q!LaLcEGFLpjdlYlYKGC:localhost:8800##*Q!LaLcEGFLpjdlYlYKGC:localhost:8800""*Q!LaLcEGFLpjdlYlYKGC:localhost:8800!!*Q!LaLcEGFLpjdlYlYKGC:localhost:8800 *Q!LaLcEGFLpjdlYlYKGC:localhost:8800 ^WpCT)2~Q$vI i <  \ /  { NT'sF " n A  a 4 f9 cY,xK,Q!LazKtcHZriKzCvvGwV:localhost:8800 A A,Q!LazKtcHZriKzCvvGwV:localhost:8800 @ @,Q!LazKtcHZriKzCvvGwV:localhost:8800 ? ?,Q!LazKtcHZriKzCvvGwV:localhost:8800 > >,Q!LazKtcHZriKzCvvGwV:localhost:8800 = =,Q!LazKtcHZriKzCvvGwV:localhost:8800 < <,Q!LazKtcHZriKzCvvGwV:localhost:8800 ; ;,Q!LazKtcHZriKzCvvGwV:localhost:8800 : :+Q !LazKtcHZriKzCvvGwV:localhost:8800 9 9,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800+Q !NJdkYMskQwIpIWlWkn:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LaLcEGFLpjdlYlYKGC:localhost:8800)Q !LaLcEGFLpjdlYlYKGC:localhost:8800+Q !NPdjmIfsBVIIkvWBzD:localhost:8800__,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800+Q !NNiyzThHMivrxhojfp:localhost:8800,Q!NFWKQvZkIwvecnREOC:localhost:8800SS,Q!NFWKQvZkIwvecnREOC:localhost:8800RR,Q!NFWKQvZkIwvecnREOC:localhost:8800QQ,Q!NFWKQvZkIwvecnREOC:localhost:8800PP,Q!NFWKQvZkIwvecnREOC:localhost:8800OO+Q !NFWKQvZkIwvecnREOC:localhost:8800NN,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MXhwoqNXvexeDDSOZT:localhost:8800 < <,Q!MXhwoqNXvexeDDSOZT:localhost:8800 : :,Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 6,Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 5,Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 4,Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 3,Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 2+Q !MXhwoqNXvexeDDSOZT:localhost:8800 1 1,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 +Q !MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800+Q !MlzmtUYSZOiByAZdKx:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800 ,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800+Q !MWCLSWWGdWcSivNVLI:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800+Q !MBWnwKRwFznvRpAzxr:localhost:8800,Q!LvARVIpJZeRQxbKefX:localhost:8800tt,Q!LvARVIpJZeRQxbKefX:localhost:8800ss,Q!LvARVIpJZeRQxbKefX:localhost:8800rr,Q!LvARVIpJZeRQxbKefX:localhost:8800qq,Q!LvARVIpJZeRQxbKefX:localhost:8800pp+Q !LvARVIpJZeRQxbKefX:localhost:8800oo*Q!LaLcEGFLpjdlYlYKGC:localhost:8800##*Q!LaLcEGFLpjdlYlYKGC:localhost:8800""*Q!LaLcEGFLpjdlYlYKGC:localhost:8800!!*Q!LaLcEGFLpjdlYlYKGC:localhost:8800 *Q!LaLcEGFLpjdlYlYKGC:localhost:8800 a} { y w u sqomkigeca~ZeeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~YeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~XeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~WeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~VeeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~UeeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~TeeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~SeeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~ReeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~QeeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~PeeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~OeeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~NeeQ$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~MeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800~LeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~KeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~JeeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800~IeeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~HeeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~GeeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~FeeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~EeeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~DeeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~CeeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~BeeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~AeeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~@eeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~?eeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~>eeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~=eeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~<eeQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800 t9r  V :sW;tCm e]]Q=$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE@anon-20191002_181700-419:localhost:8800@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800joinanon-20191002_181700-419Cl e]]Q=$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis@anon-20191002_181700-418:localhost:8800@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800joinanon-20191002_181700-418Ck e]]Q=$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k@anon-20191002_181700-417:localhost:8800@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800joinanon-20191002_181700-417Cj e]]Q=$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY@anon-20191002_181700-416:localhost:8800@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800joinanon-20191002_181700-416Ci e]]Q=$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4@anon-20191002_181700-415:localhost:8800@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800joinanon-20191002_181700-415Ch e]]Q=$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs@anon-20191002_181700-414:localhost:8800@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800joinanon-20191002_181700-414Cg e]]Q=$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s@anon-20191002_181700-413:localhost:8800@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800joinanon-20191002_181700-413Cf e]]Q=$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM@anon-20191002_181700-412:localhost:8800@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800joinanon-20191002_181700-412Ce e]]Q=$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc@anon-20191002_181700-411:localhost:8800@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800joinanon-20191002_181700-411Cd e]]Q=$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk@anon-20191002_181700-409:localhost:8800@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800joinanon-20191002_181700-409Cc e]]Q=$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak@anon-20191002_181700-408:localhost:8800@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800joinanon-20191002_181700-408Cb e]]Q=$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg@anon-20191002_181700-407:localhost:8800@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800joinanon-20191002_181700-407Ca e]]Q=$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA@anon-20191002_181700-405:localhost:8800@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800joinanon-20191002_181700-405C` e]]Q=$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE@anon-20191002_181700-404:localhost:8800@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800joinanon-20191002_181700-404C_ e]]Q=$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ@anon-20191002_181700-403:localhost:8800@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800joinanon-20191002_181700-403C^ e]]Q=$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU@anon-20191002_181700-401:localhost:8800@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800joinanon-20191002_181700-401C] e]]Q=$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4@anon-20191002_181700-400:localhost:8800@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800joinanon-20191002_181700-400C\ e]]Q=$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk@anon-20191002_181700-399:localhost:8800@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800joinanon-20191002_181700-399C[ e]]Q=$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A@anon-20191002_181700-398:localhost:8800@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800joinanon-20191002_181700-398CZ e]]Q=$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0@anon-20191002_181700-397:localhost:8800@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800joinanon-20191002_181700-397 I] Rp J  P V 0 \ *   g5b $m;  +%u > C  |8jW  | J D ]1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIl1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 $1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY[1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs %1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIj1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE I1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 20e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoV1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY91e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg v20e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ%1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ"0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEz1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_700e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkg1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsG1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Ia1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA"1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ5 1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o L1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o ?1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ91e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k "1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE71e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM11e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 &1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio^1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQj1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc o1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc Q1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs21e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo 1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR41e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIZ21e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI \1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs cd D DH*eQa$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2229}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY"], "type": "m.room.test", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042450859, "hashes": {"sha256": "g53Lk50yq0AMfNfWBITE4y9+NF4Iy07EPVhxQ1156Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y5reL3ATmET6EyWLF8vqQoZhOkpYRne++8GSHjdU/iGq1El/7TZvyYQE+IFwZfOcyhukgG/MDdNt7apoUnesBg"}}, "unsigned": {"age_ts": 1570042450859}})eQa$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2228}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw"], "type": "m.room.history_visibility", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042449446, "hashes": {"sha256": "3d0Pxe5I63GA0S9EQ++vc5dxV1raNvQ/a8CCbR+lNkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IGWy1KBqxEJ5WPu6DQiiI/kch3Vm0DHZ00iNLO7dr3/MA6+DEGn/1KNnkWnXPZ9u53Bzs2RfPADopmnO0CWcAg"}}, "unsigned": {"age_ts": 1570042449446}}t(eQau$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2227}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ"], "type": "m.room.join_rules", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042448771, "hashes": {"sha256": "0e48M0qwEJdsxXwF7RAgnBsRkSiRVb5SsVcxGJzypdg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "am4vYtruWU+jHiOk0XvUMm7dUJpx7m3LrUHTOladvXkYZHlpnP6EKMrNT7p8xLCWkid+2213UzTPgU2Ou9P/AA"}}, "unsigned": {"age_ts": 1570042448771}}k'eQac$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2226}{"auth_events": ["$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "type": "m.room.power_levels", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"users": {"@anon-20191002_181700-397:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042447955, "hashes": {"sha256": "DpoKVSYERQqAWNSO0cBu5PWZagNV0sh/ZJ/jqQaf5t8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Yl3onaPjZgSyalYcJPcbmy4nSwqIwfFl3MHcszSgh+0jyegjgML/M11kqKRyrswT+O+5VBUzJPVd+7zfoUTCw"}}, "unsigned": {"age_ts": 1570042447955}} yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m^ m m m m  m  m»  m  mӾk  mӻR  mӸ  mӴ  mӲ mӮ"mӫmӨmӦnmӣmӗmӖ)mӓmӑFmӌmӈmӅmӃmm|'myEmvmrmkmimgme3mbm_tm[mXSmVmQzmOKmLHmGmDTm<%m:Km8m6Im3m0m,Sm)m'm"mmmm/m fm mmmmmmmmmYmmimpmӒmmmҿ2mҷPmҴwmҩmmҧ>mҥmҢmҞmқmҘmҕcmғmҎ&mҋm҈Sm҆:m҃my-mumq5mnmkmhqmdWm^mY&mVkmPmNmKqmFmABm=(m9Qm6am1m+m(m$Ym!m,m|mm(mCY * *mAr ) )m;t ( (m8 ' 'm6 & &m3 % %m1/ $ $m)A # #m& " "m%4 ! !m! mK  m  m  m  m&  m  m k  m  m  m  mw  mj  m  m=  m  m  m  m3  m2 mm m mmmmmmm(mdmimVmmmm5mm8mmmcml~~m}}m||ma{{mѾzzmѾ6yymѼxxmѻ1wwmѸ)vvmѸ&uumѳttmѰ!ssmѭ4rrmѪqqmѧppmѣoomџ*nnmќFmmmљvllmїMkkmєljjmюiimщ!hhmцggmуffmс eem}ddmwccmw bbmtyaamp5``ml__mh,^^ma]]mY\\mS[[m:sZZm/6YY Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1ce$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41be$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1ae$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1`e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1_e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM1^e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1]e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1\e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY1[e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41Ze$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1Ye$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1Xe$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1We$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY~1Ve$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI}1Ue$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs|1Te$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8{1Se$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIz1Re$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXsz1Qe$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNoz1Pe$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcz1Oe$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7sz1Ne$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sz1Me$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMy1Le$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsx1Ke$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8w1Je$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsw1Ie$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsv1He$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUu1Ge$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIct1Fe$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgs1Ee$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMr1De$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMr1Ce$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8cr1Be$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgr1Ae$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAr1@e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkr1?e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakq1>e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMp1=e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbAo1<e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Eo1;e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMn1:e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qm19e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgl18e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aask17e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEj16e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0j15e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBkj14e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAj13e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEi12e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQh11e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08g10e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELog1/e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcf1.e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55we1-e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQd1,e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgc1+e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUb1*e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXga1)e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI`1(e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw`1'e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw_1&e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM^1%e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4]1$e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk\1#e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U[1"e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE[1!e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk[1 e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A[1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8[1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk[1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4AZ1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akY1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMX1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYX1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwW ,NC 8 - { " p  e ZOD9.|#qf VTeL$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMsha256( !%xN=\5%|.jVSeL$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMsha256Pq uiU]>5BWzVReL$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8csha256,Kd~O0۟3`M)VQeL$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgsha256-1*N$*S-3S{?ƺ)|(VPeL$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAsha256#d^9ŧÝ?PfA>Lޟ\VOeL$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVksha256+@ .@8*PtgmKGyoYVNeL$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaaksha256,iPÆn!o8~YGE?iVMeL$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMsha256)@/eaH9hVLeL$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbAsha256<z[Ø s ,63]ͰVKeL$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Esha256eU6n=ZH&NqDy{]VJeL$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMsha256vx~hW J0fHRQKuF;RaVIeL$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qsha256Zs? z9 P (ղ@Q@.dVHeL$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgsha256Vnh]}WY.yoX+VGeL$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aassha256A<9>\lL1}VFeL$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEsha256Vwγa|CӦ訚cd]VEeL$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0sha256YOkcQk4te ɚr~Ei>;VDeL$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBksha256Ipfɩšt2jNsdVCeL$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAsha256biBwURjGS !́  VBeL$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEsha256Lw$%v >'gqVAeL$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQsha256sa|hqi.mU5laVX*%J$V@eL$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08sha256`1ԈvD~P-Oz#?OV?eL$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELosha2561a|&Y&yOrXqDZ8`>XV>eL$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcsha256JpQ^m26k'd"h鯔V=eL$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wsha256wپ2rB IoůXV<eL$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQsha256}to 88di]e3?9CV;eL$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgsha2565w@&8hQwF9hV:eL$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUsha2563G ױdrKV_%5V9eL$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgsha256e@2EBʘ&n3hX!MmxV8eL$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIsha256Ƀ(Uɲ ugΰcV1eL$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cEsha256Z!jYV}QԹ}u- n;V0eL$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszksha256aU!RbOFR${$9V/eL$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Asha256+"" I6v;7\EgPV.eL$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8sha256wpY=EoTrd(GV-eL$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnksha256una]7Hzq ( yV,eL$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Asha256i|:|+I3ʜ |UJ/GV+eL$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5aksha256A '3Dx~=Ū,IrV*eL$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMsha256ɹ{>$,YU[}˟)V)eL$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYsha256âXc懵āQozk텛6zv P P.eQu$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "413", "stream_ordering": 2233}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 1", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042453708, "hashes": {"sha256": "g6YK6r2Xz5zQKZ+6dAdPG+864o20Ey1ulICt7WfE07g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0jfGmqWy1vTiJreFoPDdqsLZy9Jptufob0LPerY6OeR7g3ns5F7qHXiKfizqsBU26hnkBwMCrmCpn0WxqF6yBw"}}, "unsigned": {"age_ts": 1570042453708}}V-eQa9$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 416, "stream_ordering": 2232}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw"], "prev_events": ["$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "type": "m.room.member", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-399:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-399", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-399:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042452939, "hashes": {"sha256": "97LeFaFjyDm6f1X70z/vwV+VB33szi3eMfwEz2XOhMw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sjFwhZuE9CEaej3yyYsBb9S6KcQTNY5MVZAGVxSa9M7uAjMfOdDmjTKFNohxRoJJRh7buzPrTgb5EkahJcQkAA"}}, "unsigned": {"age_ts": 1570042452939}}V,eQa9$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "stream_ordering": 2231}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw"], "prev_events": ["$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak"], "type": "m.room.member", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-398", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-398:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042451996, "hashes": {"sha256": "TCf11ECyTaLVYzXzRV48noJEnV2aa1k//rL01N8enBQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UtsmzeIVda9QBDGpWaYGoM/I+HX70SSE5SCVS0SXBHXsRaTeM37b/CUojp2QBaPvVWcn13ZZIZb8S7y8gzsPCw"}}, "unsigned": {"age_ts": 1570042451996}}n+eQai$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2230}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM"], "type": "m.room.name", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042451299, "hashes": {"sha256": "f6qcdhAWSt2OltMuSpWiSSQ5haz5s7WK1PNF3OQlj5k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7nIt6wTCq61RFeaTkMGqxh9gQnJOWBpeTgNtaUoIfI4f97HLvubJjBKnC2UNbfbVABicIkgnkg2xhsnz/imrAA"}}, "unsigned": {"age_ts": 1570042451299}} {M I,  P   V $ \ *Xb0i7^p> wE}KQ & i7o= v D 1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc &1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o Z1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ P1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 ,1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8 1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE`1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAp1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs1e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYp1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 b1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vki1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0i1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 e1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ"1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg%1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs 81e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI11e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk(1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4}1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4w1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw81e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw(1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngC31e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc c1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMV1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU 1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw (1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk  {M I,  P   V $ \ *Xb0i7^p> wE}KQ & i7o= v D 1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc &1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o X1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ P1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 ,1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8 1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE`1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAp1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs1e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYp1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 b1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vki1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0i1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 e1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ"1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg%1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs 81e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI11e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk(1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4}1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4w1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw81e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw(1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngC31e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc c1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMV1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU 1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw (1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk  "Ss # Q ` i  /$Rfu 3DSaMeQ' $k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create LeQ']$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800 KeQ']$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800_JeQ# $PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.namemIeQ? $b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibilityeHeQ/ $MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rulesgGeQ3 $XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels FeQ']$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800aEeQ' $8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create DeQ']$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800 CeQ']$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800_BeQ# $KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.namemAeQ? $vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibilitye@eQ/ $dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rulesg?eQ3 $WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels >eQ']$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800a=eQ' $Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create <eQ']$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800 ;eQ']$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800_:eQ# $cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.namem9eQ? $1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibilitye8eQ/ $SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rulesg7eQ3 $dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels 6eQ']$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800a5eQ' $np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create 4eQ']$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800_3eQ# $jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800m.room.namem2eQ? $gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibilitye1eQ/ $5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rulesg0eQ3 $c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels /eQ']$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800a.eQ' $xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800m.room.create -eQ']$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800 ,eQ']$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800 V&L r  + Q w 0VlOOQ$157004179037FGMFG:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800"lOOQ$157004178936zuJSX:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800!lOOQ$157004178835mLAyG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800 lOOQ$157004177433OonrH:localhost:8800$157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800lOOQ$157004177232wsJyW:localhost:8800$157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800lOOQ$157004177131trwoi:localhost:8800$157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800lOOQ$157004177030bmvvg:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 lOOQ$157004176929ezeJB:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 lOOQ$157004176828ZZJWh:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 lOOQ$157004175925JuKDZ:localhost:8800$157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175824dFhko:localhost:8800$157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175723CBKAp:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175622yCTNM:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175621DDceh:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004174718wxlLH:localhost:8800$157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800lOOQ$157004174617osGDW:localhost:8800$157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800lOOQ$157004174616PvcHe:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800lOOQ$157004174515XsrNb:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800  w +V:eQa9$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 418, "stream_ordering": 2245}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw"], "prev_events": ["$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg"], "type": "m.room.member", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-401:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-401", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-401:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042468457, "hashes": {"sha256": "I/PLfUpFgZD66jpPhn75L7zFL2ALKYI0Njxirow3eAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HoJ/7/853ZguNrgsZnubwLtyHMHqsl7pWbzl3XAxwTDvMgShH70D8kEX73ALhGU/I44zj2qbVI8mrYozszCiCA"}}, "unsigned": {"age_ts": 1570042468457}}n9eQai$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2244}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI"], "type": "m.room.name", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042467696, "hashes": {"sha256": "vnBtIaCUEdRPUkccP5yGEd1+fyL+0yqooeUsJjzz44E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hFJmbWw1X0HRqgQLGcY4fLuTHoybskPNsEgcrApP3nWC1TiP7b+pkx1rPYqB5x6F/bpomVMMreBB/OqP67vcAA"}}, "unsigned": {"age_ts": 1570042467696}}H8eQa$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2243}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw"], "type": "m.room.test", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042467218, "hashes": {"sha256": "Zs6CfhmXrc2tKnRAG8hg6DS5dmMgIsaVQSt8s/VO/hY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Sd1FbEoNiYtm4mWo81X7PxDSkMol54lCOHzG18TumrsYYqXvFVQR02sgzFyd5/YcKUnqGBbnHNKJcd6Tn5mDA"}}, "unsigned": {"age_ts": 1570042467218}}7eQa$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2242}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw"], "type": "m.room.history_visibility", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042464738, "hashes": {"sha256": "XIpRYST0EHoPVyr+9HUrRjBxKspDcEIuo8g22Zzh3QE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qLtezTPbDq0tTZeIc9qxreH82O9SSuqQh54AvrayLICnIbN2qIpzMLTARAGYNHbMqHTB4ejsYQ182f5C/ob5AQ"}}, "unsigned": {"age_ts": 1570042464738}} Lp? w E  } K  Q  W % ] +c1i7o= uC|JQW%]+j811e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc |1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE 21e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug I1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro N1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc v1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwz1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ.1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c@0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc 91e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkn1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA i1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g >1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY}1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAq1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY `1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg71e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8m1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo%1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIv1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg n1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY R1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI21e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 W1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus01e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy01e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQl1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMz1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQs1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90U1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc#1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg d1e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0>1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs ~z v r n j fb^ZVRNJF eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08!BpTqIemsWFZIqTcgJO:localhost:8800~eeQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800}eeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800|eeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800{eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800zeeQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800yeeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800xeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI!YQATbgbLImCDamiDHC:localhost:8800weeQ$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800veeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800ueeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800teeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800seeQ$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800reeQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800qeeQ$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800peeQ$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800oeeQ$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800neeQ$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800  vb2eQu$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "417", "stream_ordering": 2237}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042456429, "hashes": {"sha256": "GdvD2+LzAjhjGil8k6yxedcZx2ZGAcy2orV+YhmFGhM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "35z1rB3OZ2VrraVxZJhvbhshcr68G4+VvHY9tX5Uhksf52Y4tKyBf7pCv0K0StMduD9MHETBMyKV70QSpY62Dg"}}, "unsigned": {"age_ts": 1570042456429}}1eQu$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "416", "stream_ordering": 2236}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042455870, "hashes": {"sha256": "LQ+ebMtYeBr7yAAgUdNBjYiVlt8ACLKebbf2R/prEkE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hqAXqtLMAOmd038Rk9o5a7z0iHAKS76rPfqvKWw1fSNA7q6E/++PpHUICaPypr32Mu3fj6TaKarIf9bm3h65BA"}}, "unsigned": {"age_ts": 1570042455870}}0eQu$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "415", "stream_ordering": 2235}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042455304, "hashes": {"sha256": "8L+CtzZhjKUyFLbCBiOtl1aRHg29A8jZsPGbeGH8DEk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lAyrHFEQKL4rHRG9BqOPzFt4MoMGjaR7FY2IBorcrbGpZXAbUKuAKxgcNciQLOEhyUQoyB2HsR5KCFsP/++WCw"}}, "unsigned": {"age_ts": 1570042455304}}/eQu$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "414", "stream_ordering": 2234}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042454746, "hashes": {"sha256": "oe25u6/Jfr8w0WNxvjXo4blVO1UktywXnVJJHjPa5JA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xdr44hvZY3DWr0nPInK/ofptl8oZn9oRd3sfbZmgXtWmEealtGxKo5xtzCTlJ1aQdglyuuCSDUMwwRm6tPUADg"}}, "unsigned": {"age_ts": 1570042454746}} |[ o ! y ' ?IU h|R e'Q  ]$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aasm.room.create!HusOrLtWZTLbmQZxmm:localhost:8800m/m{@anon-20191002_181700-407:localhost:8800!Qe)Q ] $499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEm.room.message!BpTqIemsWFZIqTcgJO:localhost:8800 m fm@anon-20191002_181700-404:localhost:8800!Pe)Q ] $_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0m.room.message!BpTqIemsWFZIqTcgJO:localhost:8800 m m @anon-20191002_181700-404:localhost:8800!Oe)Q ] $SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBkm.room.message!BpTqIemsWFZIqTcgJO:localhost:8800 mm@anon-20191002_181700-404:localhost:8800 Ne'Q ] $kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAm.room.member!BpTqIemsWFZIqTcgJO:localhost:8800 mm @anon-20191002_181700-405:localhost:8800 Me'Q ]$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEm.room.member!BpTqIemsWFZIqTcgJO:localhost:8800mm @anon-20191002_181700-404:localhost:8800Le#Q ]$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQm.room.name!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800Ke#Q ]$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08m.room.test!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800,Je?Q ]$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELom.room.history_visibility!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800$Ie/Q ]$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcm.room.join_rules!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800&He3Q ]$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wm.room.power_levels!BpTqIemsWFZIqTcgJO:localhost:8800mm @anon-20191002_181700-403:localhost:8800 Ge'Q ]$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQm.room.member!BpTqIemsWFZIqTcgJO:localhost:8800mYm@anon-20191002_181700-403:localhost:8800F e'Q  ]$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgm.room.create!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800 Ee'Q ]$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUm.room.member!YQATbgbLImCDamiDHC:localhost:8800mimR@anon-20191002_181700-401:localhost:8800De#Q ]$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgm.room.name!YQATbgbLImCDamiDHC:localhost:8800mpm@anon-20191002_181700-400:localhost:8800Ce#Q ]$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIm.room.test!YQATbgbLImCDamiDHC:localhost:8800mӒmӕ@anon-20191002_181700-400:localhost:8800,Be?Q ]$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwm.room.history_visibility!YQATbgbLImCDamiDHC:localhost:8800mm@anon-20191002_181700-400:localhost:8800$Ae/Q ]$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fwm.room.join_rules!YQATbgbLImCDamiDHC:localhost:8800mm3@anon-20191002_181700-400:localhost:8800&@e3Q ]$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMm.room.power_levels!YQATbgbLImCDamiDHC:localhost:8800mҿ2m{@anon-20191002_181700-400:localhost:8800 ?e'Q ]$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4m.room.member!YQATbgbLImCDamiDHC:localhost:8800mҷPmҷ@anon-20191002_181700-400:localhost:8800> e'Q  ]$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekkm.room.create!YQATbgbLImCDamiDHC:localhost:8800mҴwmҴ@anon-20191002_181700-400:localhost:8800!=e)Q ]$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-Um.room.message!svYOOXWZHtQQzlMcEP:localhost:8800mҩmmҩv@anon-20191002_181700-398:localhost:8800!<e)Q ] $8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cEm.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҧ>mҧD@anon-20191002_181700-398:localhost:8800!;e)Q ] $o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszkm.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҥmҥ@anon-20191002_181700-398:localhost:8800 Lf: T& R $ nR$l>Lf8U ) @  Z ,  t F   ` 2 zzLxJd6 -]@anon-20191002_181700-523:localhost:8800-]@anon-20191002_181700-488:localhost:8800-]@anon-20191002_181700-478:localhost:8800-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-486:localhost:8800-]@anon-20191002_181700-484:localhost:8800-]@anon-20191002_181700-482:localhost:8800-]@anon-20191002_181700-480:localhost:8800-]@anon-20191002_181700-479:localhost:8800-]@anon-20191002_181700-477:localhost:8800-]@anon-20191002_181700-476:localhost:8800-]@anon-20191002_181700-475:localhost:8800-]@anon-20191002_181700-473:localhost:8800-]@anon-20191002_181700-471:localhost:8800-]@anon-20191002_181700-469:localhost:8800+[@anon-20191002_181700-51:localhost:8800H+[@anon-20191002_181700-50:localhost:8800G*Y@anon-20191002_181700-4:localhost:8800+[@anon-20191002_181700-49:localhost:8800F+[@anon-20191002_181700-48:localhost:8800E+[@anon-20191002_181700-47:localhost:8800C+[@anon-20191002_181700-46:localhost:8800B -]@anon-20191002_181700-447:localhost:8800-]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-444:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-441:localhost:8800-]@anon-20191002_181700-440:localhost:8800+[@anon-20191002_181700-43:localhost:8800?-]@anon-20191002_181700-439:localhost:8800-]@anon-20191002_181700-529:localhost:8800-]@anon-20191002_181700-527:localhost:8800-]@anon-20191002_181700-526:localhost:8800-]@anon-20191002_181700-525:localhost:8800-]@anon-20191002_181700-524:localhost:8800-]@anon-20191002_181700-521:localhost:8800-]@anon-20191002_181700-520:localhost:8800-]@anon-20191002_181700-518:localhost:8800-]@anon-20191002_181700-516:localhost:8800-]@anon-20191002_181700-514:localhost:8800-]@anon-20191002_181700-512:localhost:8800-]@anon-20191002_181700-510:localhost:8800 -]@anon-20191002_181700-509:localhost:8800 -]@anon-20191002_181700-508:localhost:8800 -]@anon-20191002_181700-507:localhost:8800 -]@anon-20191002_181700-506:localhost:8800 -]@anon-20191002_181700-505:localhost:8800-]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800-]@anon-20191002_181700-490:localhost:8800+[@anon-20191002_181700-45:localhost:8800A-]@anon-20191002_181700-458:localhost:8800-]@anon-20191002_181700-456:localhost:8800-]@anon-20191002_181700-454:localhost:8800-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-450:localhost:8800+[@anon-20191002_181700-44:localhost:8800@-]@anon-20191002_181700-449:localhost:8800-]@anon-20191002_181700-448:localhost:8800-]@anon-20191002_181700-531:localhost:8800+[@anon-20191002_181700-52:localhost:8800I Lf: T& R $ nR$l>Lf8U ) @  Z ,  t F   ` 2 zzLxJd6 -]@anon-20191002_181700-523:localhost:8800-]@anon-20191002_181700-488:localhost:8800-]@anon-20191002_181700-478:localhost:8800-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-486:localhost:8800-]@anon-20191002_181700-484:localhost:8800-]@anon-20191002_181700-482:localhost:8800-]@anon-20191002_181700-480:localhost:8800-]@anon-20191002_181700-479:localhost:8800-]@anon-20191002_181700-477:localhost:8800-]@anon-20191002_181700-476:localhost:8800-]@anon-20191002_181700-475:localhost:8800-]@anon-20191002_181700-473:localhost:8800-]@anon-20191002_181700-471:localhost:8800-]@anon-20191002_181700-469:localhost:8800+[@anon-20191002_181700-51:localhost:8800H+[@anon-20191002_181700-50:localhost:8800G*Y@anon-20191002_181700-4:localhost:8800+[@anon-20191002_181700-49:localhost:8800F+[@anon-20191002_181700-48:localhost:8800E+[@anon-20191002_181700-47:localhost:8800C+[@anon-20191002_181700-46:localhost:8800B -]@anon-20191002_181700-447:localhost:8800-]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-444:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-441:localhost:8800-]@anon-20191002_181700-440:localhost:8800+[@anon-20191002_181700-43:localhost:8800?-]@anon-20191002_181700-439:localhost:8800-]@anon-20191002_181700-529:localhost:8800-]@anon-20191002_181700-527:localhost:8800-]@anon-20191002_181700-526:localhost:8800-]@anon-20191002_181700-525:localhost:8800-]@anon-20191002_181700-524:localhost:8800-]@anon-20191002_181700-521:localhost:8800-]@anon-20191002_181700-520:localhost:8800-]@anon-20191002_181700-518:localhost:8800-]@anon-20191002_181700-516:localhost:8800-]@anon-20191002_181700-514:localhost:8800-]@anon-20191002_181700-512:localhost:8800-]@anon-20191002_181700-510:localhost:8800 -]@anon-20191002_181700-509:localhost:8800 -]@anon-20191002_181700-508:localhost:8800 -]@anon-20191002_181700-507:localhost:8800 -]@anon-20191002_181700-506:localhost:8800 -]@anon-20191002_181700-505:localhost:8800-]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800-]@anon-20191002_181700-490:localhost:8800+[@anon-20191002_181700-45:localhost:8800A-]@anon-20191002_181700-458:localhost:8800-]@anon-20191002_181700-456:localhost:8800-]@anon-20191002_181700-454:localhost:8800-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-450:localhost:8800+[@anon-20191002_181700-44:localhost:8800@-]@anon-20191002_181700-449:localhost:8800-]@anon-20191002_181700-448:localhost:8800-]@anon-20191002_181700-531:localhost:8800+[@anon-20191002_181700-52:localhost:8800I g * T~=gg"]!c@anon-20191002_181700-410:localhost:8800UDEVOELNMKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTQmFTQF9xWmYxSks7SjsKMDAyZnNpZ25hdHVyZSA4-gzkLZKYXLB46g30xrx2tIZN_FnuhyntWJJRBiVylQog!]!c@anon-20191002_181700-409:localhost:8800GINWCFSINTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8wog ]!c@anon-20191002_181700-408:localhost:8800XKDKZYMRFBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQog]!c@anon-20191002_181700-407:localhost:8800RTGALMPCLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwog]!c@anon-20191002_181700-406:localhost:8800TSQHBFVCGUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ-UHZ1OGYrSF5vamxtST0KMDAyZnNpZ25hdHVyZSByyqu_00ypE6JP2NuI0vdtntNW8bwA8GIuJndn3cBSyAog]!c@anon-20191002_181700-405:localhost:8800QVDYLSWJGFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAog]!c@anon-20191002_181700-404:localhost:8800QFVVSFPXDRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAog]!c@anon-20191002_181700-403:localhost:8800MFLWYWCNCIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggagog]!c@anon-20191002_181700-402:localhost:8800RGMKVZWLLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlMeTIuVWdTdTpEKzFmLloKMDAyZnNpZ25hdHVyZSBbuaigjRLKzptcrlgAHJJ5r_SxDpA6cZWDs2LWx5spbwog]!c@anon-20191002_181700-401:localhost:8800EBUCUMIOWSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwog]!c@anon-20191002_181700-400:localhost:8800QHUMTZGCNWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwo >Mj1\#x? [ " w >  \ # z A  ] $|C _&}D d+GMk28]!@anon-20191002_181700-526:localhost:8800CNSENJMXXV8]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC1[@anon-20191002_181700-44:localhost:8800xyzzyJ8]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8]!@anon-20191002_181700-525:localhost:8800DQXQXDJYET8]!@anon-20191002_181700-524:localhost:8800IVEUVINDHF8]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLH8]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOV8]!@anon-20191002_181700-520:localhost:8800LGMWFFKPIS6[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPR6[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDQ8]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWN8]!@anon-20191002_181700-516:localhost:8800DBXNPICYFO8]!@anon-20191002_181700-514:localhost:8800LBNXTFJTIT8]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHY8]!@anon-20191002_181700-510:localhost:8800TMGCAARJXM6[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXP8]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEU8]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOH8]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQA8]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!@anon-20191002_181700-501:localhost:8800YBYGOFEONK5Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVL8]!@anon-20191002_181700-499:localhost:8800VXSECXNERA8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSC8]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ8]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]!@anon-20191002_181700-493:localhost:8800GRPWUCANVU8]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU6[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWO8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ8]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS6[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLUL8]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH8]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ8]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]!@anon-20191002_181700-462:localhost:8800SKOLIDFQEN8]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZU8]!@anon-20191002_181700-460:localhost:8800GJEFYISBJP1[@anon-20191002_181700-45:localhost:8800xyzzyK8]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSG   *t6eQau$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2241}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM"], "type": "m.room.join_rules", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042463746, "hashes": {"sha256": "vHByQho/P3ADOcNxqUXpUDJU3/I20pTJznwKy9r3tOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rms691EjXpVwQ4PF4YlZ7eI4J8Bz+r6Ds8PT3QoOE+InBLBeCGBQ0eEovDoPtcJsQn4ufOC4N10DUvZOtadXDw"}}, "unsigned": {"age_ts": 1570042463746}}k5eQac$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2240}{"auth_events": ["$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "type": "m.room.power_levels", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"users": {"@anon-20191002_181700-400:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042462002, "hashes": {"sha256": "oKwCw+bvkWMUzKiUcprT7sq25QYdcbq+qpGicwbgbkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7kQbjVPGRnCCsYQFERVGEGxU/QhUTnW2c9Bt6WL9vUzBTrUqRWoF8rDqZAKbsDiDD9egSNJfBvqvhHD0UOCZAQ"}}, "unsigned": {"age_ts": 1570042462002}}v4eQay$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2239}{"auth_events": ["$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk"], "prev_events": ["$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk"], "type": "m.room.member", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-400", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-400:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042459984, "hashes": {"sha256": "gadrMirt2/ebRVbkMOr68xe23baPZgENgOpknHlfLKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WcDH4Hjev+6uLxGO/YiUTW5vnqLbd1pPp/Zb3HOK3HtKpq9PGJJcgqasLKsDDk+bE3Vc5Ru7qcBnNU12X4xrCQ"}}, "unsigned": {"age_ts": 1570042459984}}i3eQa_$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2238}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-400:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042459255, "hashes": {"sha256": "yBJTSl89ENAtLjPcv0mnBZ2YEJcM3QOG7ttfM2JbJoQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jr+/8Cg8TFnvT5w+7RBNo9Tt0dQj5UCadvW8OQ0txvm8xU2gVZ8rOC3bgYu/VV/2NapKyDc3goKDn6lsKNgUAA"}}, "unsigned": {"age_ts": 1570042459255}}  4m9  hd]c@anon-20191002_181700-407:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwo127.0.0.1d]c@anon-20191002_181700-409:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8wo127.0.0.1d]c@anon-20191002_181700-413:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9wo127.0.0.1d]c@anon-20191002_181700-411:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAo127.0.0.1a[a@anon-20191002_181700-40:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gX0ZsT2FNZiZrNXNfOGtPNAowMDJmc2lnbmF0dXJlIJNqzbEWoj9JkOWbaVGh5QZZNW-AjkyuhNXrGQdVqviaCg127.0.0.1!d]c@anon-20191002_181700-412:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwo127.0.0.1d]c@anon-20191002_181700-415:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAo127.0.0.1d]c@anon-20191002_181700-414:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgo127.0.0.1d]c@anon-20191002_181700-408:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQo127.0.0.1d]c@anon-20191002_181700-416:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQo127.0.0.1 !*5 : ^ k v { ;(R|^i!aQ# e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.name$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcoQ? e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibility$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgg Q/ e~!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rules$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYi Q3 e}!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI Q']e|!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsc Q' e{!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8 Q']ez!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s Q']ey!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMaQ# ex!HXfrGcvJCbRItyQLVE:localhost:8800m.room.name$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsoQ? ew!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibility$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsgQ/ ev!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rules$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsiQ3 eu!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU Q']et!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIccQ' es!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg Q']er!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk Q']eq!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakaQ# ep!HusOrLtWZTLbmQZxmm:localhost:8800m.room.name$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMo~Q? eo!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibility$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Eg}Q/ en!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rules$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMi|Q3 em!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q {Q']el!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgczQ' ek!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas yQ']ej!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA xQ']ei!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEawQ# eh!BpTqIemsWFZIqTcgJO:localhost:8800m.room.name$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQovQ? eg!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibility$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoguQ/ ef!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rules$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcitQ3 ee!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w sQ']ed!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQcrQ' ec!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg qQ']eb!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUapQ# ea!YQATbgbLImCDamiDHC:localhost:8800m.room.name$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgooQ? e`!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibility$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw a} { y w u sqomkigeca~yeeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~xeeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~weeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800~veeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~ueeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~teeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800~seeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~reeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~qeeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800~peeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~oeeQ$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~neeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800~meeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~leeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~keeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800~jeeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~ieeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~heeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~geeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~feeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~eeeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~deeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~ceeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~beeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~aeeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~`eeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~_eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~^eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~]eeQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~\eeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800~[eeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800 B@tA e0`- _ , \ ' W $ V # S N~M}JzE@uwD n;@m4]@anon-20191002_181700-491:localhost:8800m2]@anon-20191002_181700-492:localhost:8800a2]@anon-20191002_181700-491:localhost:8800a0[@anon-20191002_181700-44:localhost:8800a\4]@anon-20191002_181700-449:localhost:8800mV2]@anon-20191002_181700-449:localhost:8800aS4]@anon-20191002_181700-448:localhost:8800mU2]@anon-20191002_181700-448:localhost:8800aT4]@anon-20191002_181700-447:localhost:8800mRf4]@anon-20191002_181700-492:localhost:8800m4]@anon-20191002_181700-490:localhost:8800m2]@anon-20191002_181700-490:localhost:8800a0[@anon-20191002_181700-48:localhost:8800aa4]@anon-20191002_181700-488:localhost:8800m2]@anon-20191002_181700-488:localhost:8800a4]@anon-20191002_181700-486:localhost:8800m2]@anon-20191002_181700-486:localhost:8800a4]@anon-20191002_181700-484:localhost:8800m2]@anon-20191002_181700-484:localhost:8800a4]@anon-20191002_181700-482:localhost:8800m2]@anon-20191002_181700-482:localhost:8800a4]@anon-20191002_181700-480:localhost:8800m2]@anon-20191002_181700-480:localhost:8800a0[@anon-20191002_181700-47:localhost:8800a_4]@anon-20191002_181700-479:localhost:8800m~2]@anon-20191002_181700-479:localhost:8800a|4]@anon-20191002_181700-478:localhost:8800m}2]@anon-20191002_181700-478:localhost:8800a{4]@anon-20191002_181700-477:localhost:8800mz2]@anon-20191002_181700-477:localhost:8800ax4]@anon-20191002_181700-476:localhost:8800my2]@anon-20191002_181700-476:localhost:8800aw4]@anon-20191002_181700-475:localhost:8800mv2]@anon-20191002_181700-475:localhost:8800au4]@anon-20191002_181700-473:localhost:8800mt2]@anon-20191002_181700-473:localhost:8800as4]@anon-20191002_181700-471:localhost:8800mr2]@anon-20191002_181700-471:localhost:8800aq0[@anon-20191002_181700-46:localhost:8800a^4]@anon-20191002_181700-469:localhost:8800mp2]@anon-20191002_181700-469:localhost:8800ao4]@anon-20191002_181700-467:localhost:8800mn2]@anon-20191002_181700-467:localhost:8800am4]@anon-20191002_181700-465:localhost:8800ml2]@anon-20191002_181700-465:localhost:8800ak4]@anon-20191002_181700-464:localhost:8800mj2]@anon-20191002_181700-464:localhost:8800ah4]@anon-20191002_181700-463:localhost:8800mi2]@anon-20191002_181700-463:localhost:8800ag4]@anon-20191002_181700-462:localhost:8800mf2]@anon-20191002_181700-462:localhost:8800ad4]@anon-20191002_181700-461:localhost:8800me2]@anon-20191002_181700-461:localhost:8800ac4]@anon-20191002_181700-460:localhost:8800mb2]@anon-20191002_181700-460:localhost:8800aa0[@anon-20191002_181700-45:localhost:8800a]4]@anon-20191002_181700-458:localhost:8800m`2]@anon-20191002_181700-458:localhost:8800a_4]@anon-20191002_181700-456:localhost:8800m^2]@anon-20191002_181700-456:localhost:8800a]4]@anon-20191002_181700-454:localhost:8800m\2]@anon-20191002_181700-454:localhost:8800a[4]@anon-20191002_181700-452:localhost:8800mZ2]@anon-20191002_181700-452:localhost:8800aY4]@anon-20191002_181700-450:localhost:8800mX2]@anon-20191002_181700-450:localhost:8800aW   *t>eQau$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2249}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w"], "type": "m.room.join_rules", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042474233, "hashes": {"sha256": "EPnz2e7DuWMIs3iIZf/DXLCbMokD2GzAUiLbVu7krZA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4iUwTOmVEzf3S6/tl3TopyLELXCBzQMSLCA8qJXQN52zLFr3z0Bnr+IJ2dHvw2MkJrAwZqlOwcgxVgEx9e8RBQ"}}, "unsigned": {"age_ts": 1570042474233}}k=eQac$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2248}{"auth_events": ["$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "type": "m.room.power_levels", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"users": {"@anon-20191002_181700-403:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042473142, "hashes": {"sha256": "oTE5fgRYiJ1ZglZolMscZAL/aaL7xm5WEZmNAJgQ0Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qB7EHanVfS59Y5BijVrnCcOxdj/fEJmLq4Pmb9QCkj9ktiB8aCBB6SzCJztjvF9K34xcl8hSUJfL2//ZF7ZAAA"}}, "unsigned": {"age_ts": 1570042473142}}v<eQay$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2247}{"auth_events": ["$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg"], "prev_events": ["$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg"], "type": "m.room.member", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-403", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-403:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042472537, "hashes": {"sha256": "p1KkcROP3H36DU/QY2kViTLM8e2qZF0Yb70s7popZss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hVgbAz8vIvY15cBR7EXw5A/9P67/NBR//MaPBFhcw9oG+lv7qYmCLRDy6b3Bcm/lWhaN8tmnq3WmMUeLp9JhDA"}}, "unsigned": {"age_ts": 1570042472537}}i;eQa_$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2246}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-403:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042471857, "hashes": {"sha256": "3A/IfUkueCrrVo0LQBE8BClkFRTI78ypl/5Lmau6R0k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pje/qsUgoMxUBeEBZSc0B3BMpJJslQ/K86g+75OyspaNh+zcTjsfW9+GyA1yPEwwyDSVP1HnW6nYdNTIq2DUDg"}}, "unsigned": {"age_ts": 1570042471857}} 6g #`)LQ [ *  * eH q:Cm6 { 3  Q^Q']^Q']!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800  6Q' !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create<Q3 !GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels <Q3 !GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levelsV 7:Q/ !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rulesBQ? !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility6Q' !HAFNBarGuVZuWCgwWM:localhost:8800m.room.create<Q3 !GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levels^Q']!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800:Q/ !GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rulesBQ? !GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibility6Q' !GwXGurbyEmykmmHcHJ:localhost:8800m.room.create;Q3 !GixhPUMvtKSWoKRgvw:localhost:8800m.room.power_levels-\Q'[!GixhPUMvtKSWoKRgvw:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800,9Q/ !GixhPUMvtKSWoKRgvw:localhost:8800m.room.join_rules.AQ? !GixhPUMvtKSWoKRgvw:localhost:8800m.room.history_visibility/5Q' !GixhPUMvtKSWoKRgvw:localhost:8800m.room.create+CQ?!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4<Q3 !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels^Q']!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829^Q']!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829^Q']!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800:Q/ !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rulesBQ? !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibility6Q' !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.create ?Q9 !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_aliasEQ))!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800<Q3 !GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels^Q']!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800:Q/ !GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rulesBQ? !GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibility6Q' !GgUNbVXspVTpOlaHBl:localhost:8800m.room.create 8_<Q3 !GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_access BQ? !GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibility :Q/ !GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rules ^Q']!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:88006Q' !GsjDgpaxdwYfnefiWO:localhost:8800m.room.create BQ? !GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibility :Q/ !GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rules <Q3 !GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels ^Q']!GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800 6Q' !GwLdUoDplyVUogXDzu:localhost:8800m.room.create _<Q3 !HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels;^Q']!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800:GQ'/!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800?:Q/ !HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rules6Q' !HIZTeBCxvpMSpcqGVD:localhost:8800m.room.create9<Q3 !HAFNBarGuVZuWCgwWM:localhost:8800m.room.power_levels]Q'[!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-89:localhost:8800:Q/ !HAFNBarGuVZuWCgwWM:localhost:8800m.room.join_rulesBQ? !HAFNBarGuVZuWCgwWM:localhost:8800m.room.history_visibility<Q3 !HAFNBarGuVZuWCgwWM:localhost:8800m.room.guest_access= >H |NzH JT   P  V $ \Z * b0"jh6( vn<  t DB p>H v1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY u1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY ,1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU 1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0-1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ +1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw11e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA31e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gh1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQY1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8r1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU21e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMc1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIg1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ)1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEE1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIx1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gg1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM|1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsR1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0m1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8+1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY31e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k 1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcT1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo:1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYW1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw51e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8n1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo.1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk ,1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y o1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE c S X -  V +  T )' {}R'{P%yN#oDRwL!uJqFsH P % y N # IOT:locaslo*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 G G*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 F F*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 E E*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 D D*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 C C*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 B B*Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800 *Q!PHkVrXAyfGkFtzSagu:localhost:8800 *Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PCgUmZOwWmtDsuFqXg:localhost:8800,,*Q!PCgUmZOwWmtDsuFqXg:localhost:8800***Q!PCgUmZOwWmtDsuFqXg:localhost:8800''*Q!PCgUmZOwWmtDsuFqXg:localhost:8800$$*Q!PCgUmZOwWmtDsuFqXg:localhost:8800!!*Q!PCgUmZOwWmtDsuFqXg:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OMkiVTuuOEeiFAXtUY:localhost:8800[[*Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ*Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY*Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX}*Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 I I-*Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 H H M t  H P   V % ] +co2  z=l:_jY8'-  SrA yG B!M1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYe1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI 1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQA1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg ~1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qc1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8{1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcb1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0_1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0 1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0Z1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcA1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwt1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikD1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QY1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQi1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw|1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAt1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8)1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMa1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw*1e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM11e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s V1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc d1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc 31e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs l1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew ]1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo Z1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI F1e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8d1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 {1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs w1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m81e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y -RM H C > 9 4/*|%w rmhc T5Qe!rWGwSSefrZzQYCYFHs:localhost:8800$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEMT4Qe!rWGwSSefrZzQYCYFHs:localhost:8800$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNoT3Qe!rWGwSSefrZzQYCYFHs:localhost:8800$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIT2Qe!rWGwSSefrZzQYCYFHs:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYT1Qe!rWGwSSefrZzQYCYFHs:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4T0Qe!rWGwSSefrZzQYCYFHs:localhost:8800$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcT/Qe!rWGwSSefrZzQYCYFHs:localhost:8800$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9KwgT.Qe!rWGwSSefrZzQYCYFHs:localhost:8800$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgT-Qe!rWGwSSefrZzQYCYFHs:localhost:8800$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYT,Qe!rWGwSSefrZzQYCYFHs:localhost:8800$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIT+Qe!rWGwSSefrZzQYCYFHs:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsT*Qe!rWGwSSefrZzQYCYFHs:localhost:8800$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8T)Qe!HXfrGcvJCbRItyQLVE:localhost:8800$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIT(Qe!HXfrGcvJCbRItyQLVE:localhost:8800$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXsT'Qe!HXfrGcvJCbRItyQLVE:localhost:8800$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNoT&Qe!HXfrGcvJCbRItyQLVE:localhost:8800$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcT%Qe!HXfrGcvJCbRItyQLVE:localhost:8800$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7sT$Qe!HXfrGcvJCbRItyQLVE:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sT#Qe!HXfrGcvJCbRItyQLVE:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMT"Qe!HXfrGcvJCbRItyQLVE:localhost:8800$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsT!Qe!HXfrGcvJCbRItyQLVE:localhost:8800$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8T Qe!HXfrGcvJCbRItyQLVE:localhost:8800$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsTQe!HXfrGcvJCbRItyQLVE:localhost:8800$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsTQe!HXfrGcvJCbRItyQLVE:localhost:8800$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUTQe!HXfrGcvJCbRItyQLVE:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcTQe!HXfrGcvJCbRItyQLVE:localhost:8800$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgTQe!HusOrLtWZTLbmQZxmm:localhost:8800$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8cTQe!HusOrLtWZTLbmQZxmm:localhost:8800$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgTQe!HusOrLtWZTLbmQZxmm:localhost:8800$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKATQe!HusOrLtWZTLbmQZxmm:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkTQe!HusOrLtWZTLbmQZxmm:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakTQe!HusOrLtWZTLbmQZxmm:localhost:8800$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbATQe!HusOrLtWZTLbmQZxmm:localhost:8800$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4ETQe!HusOrLtWZTLbmQZxmm:localhost:8800$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2QTQe!HusOrLtWZTLbmQZxmm:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgTQe!HusOrLtWZTLbmQZxmm:localhost:8800$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9AasT Qe!BpTqIemsWFZIqTcgJO:localhost:8800$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdET Qe!BpTqIemsWFZIqTcgJO:localhost:8800$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0T Qe!BpTqIemsWFZIqTcgJO:localhost:8800$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBkT Qe!BpTqIemsWFZIqTcgJO:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAT Qe!BpTqIemsWFZIqTcgJO:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE (ZwO ` 8  p 0 X1  H  ' kD x }U-X    Hh@zR +g? @ c; `8 p H  x('Q!coGyOAgYnlBZAqznax:localhost:8800M'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:8800d&Q!fJXiUpbbOlLbHWmPgs:localhost:8800c&Q!eySSVuCclRpBDgwKIU:localhost:8800f&Q!eySSVuCclRpBDgwKIU:localhost:8800e'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800N'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:88000'Q!egbhiBqOGhloZzopol:localhost:8800/'Q!egbhiBqOGhloZzopol:localhost:8800.'Q!egbhiBqOGhloZzopol:localhost:8800-&Q!egCvzKpbEwmuvDoBTb:localhost:8800_&Q!egCvzKpbEwmuvDoBTb:localhost:8800^&Q!egCvzKpbEwmuvDoBTb:localhost:8800]&Q!edbUkYJIZBNOiTuLJs:localhost:8800j&Q!edbUkYJIZBNOiTuLJs:localhost:8800i'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eLsrBEnrHolwCNgkFW:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800n&Q!eKrOqiOabJcMgIJjwC:localhost:8800m'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:88006&Q!duCKuavMBSfRbTFPsc:localhost:88005&Q!duCKuavMBSfRbTFPsc:localhost:88004'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800&&Q!cosGKKhHvKaVukBCic:localhost:8800%&Q!cSUQGmpIsSCBAVTOHo:localhost:8800U'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800R'Q!eGEEtFXUXuZDImkeql:localhost:8800T'Q!eZjhYVNpwdogVDKHCk:localhost:8800c'Q!cOFSwLSkxZECJMvjjZ:localhost:8800W'Q!cOFSwLSkxZECJMvjjZ:localhost:8800V'Q!eGEEtFXUXuZDImkeql:localhost:8800U'Q!cGkVFpidyBBxUxsszG:localhost:8800@'Q!bzPCFeFSMbCESvNbxl:localhost:8800<'Q!bzPCFeFSMbCESvNbxl:localhost:8800;'Q!bzPCFeFSMbCESvNbxl:localhost:8800:'Q!bzPCFeFSMbCESvNbxl:localhost:88009'Q!bzPCFeFSMbCESvNbxl:localhost:88008'Q!bzPCFeFSMbCESvNbxl:localhost:88007'Q!bzPCFeFSMbCESvNbxl:localhost:88006'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 hP'Q!cvXpMzcxNNhsNttxvt:localhost:8800o'Q!eZjhYVNpwdogVDKHCk:localhost:8800d'Q!cidyuyekVzJHHvyomb:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800~'Q!fGkUEndqGrieltwbCh:localhost:8800p'Q!fGkUEndqGrieltwbCh:localhost:8800o ('Q!fDISaqNBhlOwherxSt:localhost:8800p('Q!dvZnfJonDkxlrrDXUk:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800O'Q!cGkVFpidyBBxUxsszG:localhost:8800A'Q!cGkVFpidyBBxUxsszG:localhost:8800B'Q!eGEEtFXUXuZDImkeql:localhost:8800S'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800P'Q!fuHSJcznvGQnoYoLPW:localhost:8800f'Q!fsbkkRBZlUcBVVfMME:localhost:8800='Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800G'Q!ffijTnPMbTrDXHqOXf:localhost:8800F'Q!ffijTnPMbTrDXHqOXf:localhost:8800E'Q!fcdNYFWFyxmdpKAknc:localhost:8800 -Xp(P x 0 X  8 `  @h Hp(Px0X8`E]]=@anon-20191002_181700-452:localhost:8800anon-20191002_181700-452E\]=@anon-20191002_181700-451:localhost:8829anon-20191002_181700-451E[]=@anon-20191002_181700-450:localhost:8800anon-20191002_181700-450EZ]=@anon-20191002_181700-449:localhost:8800anon-20191002_181700-449EY]=@anon-20191002_181700-448:localhost:8800anon-20191002_181700-448EX]=@anon-20191002_181700-447:localhost:8800anon-20191002_181700-447EW]=@anon-20191002_181700-446:localhost:8800anon-20191002_181700-446EU]=@anon-20191002_181700-444:localhost:8800anon-20191002_181700-444EV]=@anon-20191002_181700-445:localhost:8800anon-20191002_181700-445ES]=@anon-20191002_181700-442:localhost:8800anon-20191002_181700-442ER]=@anon-20191002_181700-441:localhost:8800anon-20191002_181700-441EQ]=@anon-20191002_181700-440:localhost:8800anon-20191002_181700-440EP]=@anon-20191002_181700-439:localhost:8800anon-20191002_181700-439EO]=@anon-20191002_181700-438:localhost:8800anon-20191002_181700-438EN]=@anon-20191002_181700-437:localhost:8800anon-20191002_181700-437EM]=@anon-20191002_181700-436:localhost:8800anon-20191002_181700-436EL]=@anon-20191002_181700-435:localhost:8800anon-20191002_181700-435EK]=@anon-20191002_181700-434:localhost:8800anon-20191002_181700-434EJ]=@anon-20191002_181700-433:localhost:8800anon-20191002_181700-433EI]=@anon-20191002_181700-432:localhost:8800anon-20191002_181700-432EH]=@anon-20191002_181700-431:localhost:8800anon-20191002_181700-431EG]=@anon-20191002_181700-430:localhost:8800anon-20191002_181700-430EF]=@anon-20191002_181700-429:localhost:8800anon-20191002_181700-429EE]=@anon-20191002_181700-428:localhost:8800anon-20191002_181700-428ED]=@anon-20191002_181700-427:localhost:8800anon-20191002_181700-427EC]=@anon-20191002_181700-426:localhost:8800anon-20191002_181700-426EB]=@anon-20191002_181700-425:localhost:8800anon-20191002_181700-425EA]=@anon-20191002_181700-424:localhost:8800anon-20191002_181700-424E@]=@anon-20191002_181700-422:localhost:8800anon-20191002_181700-422E?]=@anon-20191002_181700-421:localhost:8800anon-20191002_181700-421E>]=@anon-20191002_181700-420:localhost:8800anon-20191002_181700-420E=]=@anon-20191002_181700-419:localhost:8800anon-20191002_181700-419E<]=@anon-20191002_181700-418:localhost:8800anon-20191002_181700-418E;]=@anon-20191002_181700-417:localhost:8800anon-20191002_181700-417E:]=@anon-20191002_181700-416:localhost:8800anon-20191002_181700-416E9]=@anon-20191002_181700-415:localhost:8800anon-20191002_181700-415E8]=@anon-20191002_181700-414:localhost:8800anon-20191002_181700-414E7]=@anon-20191002_181700-413:localhost:8800anon-20191002_181700-413E6]=@anon-20191002_181700-412:localhost:8800anon-20191002_181700-412E5]=@anon-20191002_181700-411:localhost:8800anon-20191002_181700-411E4]=@anon-20191002_181700-409:localhost:8800anon-20191002_181700-409E3]=@anon-20191002_181700-408:localhost:8800anon-20191002_181700-408E2]=@anon-20191002_181700-407:localhost:8800anon-20191002_181700-407E1]=@anon-20191002_181700-405:localhost:8800anon-20191002_181700-405E0]=@anon-20191002_181700-404:localhost:8800anon-20191002_181700-404 < Z x  % C a,Jh 3Qon<]@anon-20191002_181700-418:localhost:8800@anon-20191002_181700-418:localhost:8800 anon-20191002_181700-418n:]@anon-20191002_181700-416:localhost:8800@anon-20191002_181700-416:localhost:8800 anon-20191002_181700-416n9]@anon-20191002_181700-415:localhost:8800@anon-20191002_181700-415:localhost:8800 anon-20191002_181700-415n8]@anon-20191002_181700-414:localhost:8800@anon-20191002_181700-414:localhost:8800 anon-20191002_181700-414n7]@anon-20191002_181700-413:localhost:8800@anon-20191002_181700-413:localhost:8800 anon-20191002_181700-413n6]@anon-20191002_181700-412:localhost:8800@anon-20191002_181700-412:localhost:8800 anon-20191002_181700-412n5]@anon-20191002_181700-411:localhost:8800@anon-20191002_181700-411:localhost:8800 anon-20191002_181700-411n4]@anon-20191002_181700-409:localhost:8800@anon-20191002_181700-409:localhost:8800 anon-20191002_181700-409n3]@anon-20191002_181700-408:localhost:8800@anon-20191002_181700-408:localhost:8800 anon-20191002_181700-408n2]@anon-20191002_181700-407:localhost:8800@anon-20191002_181700-407:localhost:8800 anon-20191002_181700-407n/]@anon-20191002_181700-403:localhost:8800@anon-20191002_181700-403:localhost:8800 anon-20191002_181700-403n.]@anon-20191002_181700-401:localhost:8800@anon-20191002_181700-401:localhost:8800 anon-20191002_181700-401n-]@anon-20191002_181700-400:localhost:8800@anon-20191002_181700-400:localhost:8800 anon-20191002_181700-400n,]@anon-20191002_181700-399:localhost:8800@anon-20191002_181700-399:localhost:8800 anon-20191002_181700-399n+]@anon-20191002_181700-398:localhost:8800@anon-20191002_181700-398:localhost:8800 anon-20191002_181700-398n*]@anon-20191002_181700-397:localhost:8800@anon-20191002_181700-397:localhost:8800 anon-20191002_181700-397n)]@anon-20191002_181700-395:localhost:8800@anon-20191002_181700-395:localhost:8800 anon-20191002_181700-395n(]@anon-20191002_181700-394:localhost:8800@anon-20191002_181700-394:localhost:8800 anon-20191002_181700-394n;]@anon-20191002_181700-417:localhost:8800@anon-20191002_181700-417:localhost:8800 anon-20191002_181700-417n']@anon-20191002_181700-393:localhost:8800@anon-20191002_181700-393:localhost:8800 anon-20191002_181700-393n&]@anon-20191002_181700-392:localhost:8800@anon-20191002_181700-392:localhost:8800 anon-20191002_181700-392n%]@anon-20191002_181700-391:localhost:8800@anon-20191002_181700-391:localhost:8800 anon-20191002_181700-391n$]@anon-20191002_181700-390:localhost:8800@anon-20191002_181700-390:localhost:8800 anon-20191002_181700-390n#]@anon-20191002_181700-389:localhost:8800@anon-20191002_181700-389:localhost:8800 anon-20191002_181700-389n"]@anon-20191002_181700-388:localhost:8800@anon-20191002_181700-388:localhost:8800 anon-20191002_181700-388n!]@anon-20191002_181700-387:localhost:8800@anon-20191002_181700-387:localhost:8800 anon-20191002_181700-387n1]@anon-20191002_181700-405:localhost:8800@anon-20191002_181700-405:localhost:8800 anon-20191002_181700-405n0]@anon-20191002_181700-404:localhost:8800@anon-20191002_181700-404:localhost:8800 anon-20191002_181700-404 22K880029C\anonboris  localhost aP g  l  o)><La9 e'Q  ]$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpIm.room.create!vBvlJEXUSQKUYmsKcO:localhost:8800mُmِ%@anon-20191002_181700-510:localhost:8800!8e)Q ] $K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIwm.room.message!RDEAXrqXQizuhCUFPq:localhost:8800 mيmي@anon-20191002_181700-508:localhost:8800 7e'Q ] $ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMm.room.member!RDEAXrqXQizuhCUFPq:localhost:8800 mنmه@anon-20191002_181700-509:localhost:8800 6e'Q ]$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMm.room.member!RDEAXrqXQizuhCUFPq:localhost:8800mكmك@anon-20191002_181700-508:localhost:88005e#Q ]$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0m.room.test!RDEAXrqXQizuhCUFPq:localhost:8800mـ5mـ9@anon-20191002_181700-508:localhost:8800&4e3Q ]$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkm.room.guest_access!RDEAXrqXQizuhCUFPq:localhost:8800m|*m}@anon-20191002_181700-508:localhost:8800,3e?Q ]$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIm.room.history_visibility!RDEAXrqXQizuhCUFPq:localhost:8800myTmz)@anon-20191002_181700-508:localhost:8800$2e/Q ]$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Ym.room.join_rules!RDEAXrqXQizuhCUFPq:localhost:8800mumw @anon-20191002_181700-508:localhost:8800&1e3Q ]$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwEm.room.power_levels!RDEAXrqXQizuhCUFPq:localhost:8800mrms@anon-20191002_181700-508:localhost:8800 0e'Q ]$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUm.room.member!RDEAXrqXQizuhCUFPq:localhost:8800mnmp<@anon-20191002_181700-508:localhost:8800/ e'Q  ]$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60m.room.create!RDEAXrqXQizuhCUFPq:localhost:8800mjmk@anon-20191002_181700-508:localhost:8800!.e)Q ] $_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0m.room.message!mogJVPxghalmKbblUq:localhost:8800 mdxmd|@anon-20191002_181700-506:localhost:8800 -e'Q ] $TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQm.room.member!mogJVPxghalmKbblUq:localhost:8800 m`ma!@anon-20191002_181700-507:localhost:8800,e#Q ]$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUm.room.test!mogJVPxghalmKbblUq:localhost:8800m^m^@anon-20191002_181700-506:localhost:8800!+e)Q ]$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4m.room.aliases!mogJVPxghalmKbblUq:localhost:8800m[sm\Z@anon-20191002_181700-506:localhost:8800,*e?Q ]$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYm.room.history_visibility!mogJVPxghalmKbblUq:localhost:8800mW9mY5@anon-20191002_181700-506:localhost:8800$)e/Q ]$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPom.room.join_rules!mogJVPxghalmKbblUq:localhost:8800mTmU@anon-20191002_181700-506:localhost:8800)(e9Q ]$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYm.room.canonical_alias!mogJVPxghalmKbblUq:localhost:8800mQmR@anon-20191002_181700-506:localhost:8800&'e3Q ]$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8m.room.power_levels!mogJVPxghalmKbblUq:localhost:8800mNmO@anon-20191002_181700-506:localhost:8800 &e'Q ]$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4m.room.member!mogJVPxghalmKbblUq:localhost:8800mLmL@anon-20191002_181700-506:localhost:8800% e'Q  ]$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYm.room.create!mogJVPxghalmKbblUq:localhost:8800mImIn@anon-20191002_181700-506:localhost:8800!$e)Q ]$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOIm.room.message!EhUxBjnSkVXpTrQlrn:localhost:8800mBdmBj@anon-20191002_181700-505:localhost:8800#e#Q ]$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtkm.room.test!EhUxBjnSkVXpTrQlrn:localhost:8800m?m?@anon-20191002_181700-505:localhost:8800,"e?Q ]$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIm.room.history_visibility!EhUxBjnSkVXpTrQlrn:localhost:8800m:m=_@anon-20191002_181700-505:localhost:8800 V  V -  'R}T X -  T)}R' V +  T )}R')P%Z1Z/{X-V+8800 **Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800AC*Q!OBWkjfrDCNgYFfblia:localhost:8800@B*Q!OBWkjfrDCNgYFfblia:localhost:8800?A*Q!NcJYmIbgjsaKJOzBcs:localhost:8800wi*Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` *Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] *Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ *Q!OCEHAjcOXWNyWIESIS:localhost:8800 [ *Q!OBWkjfrDCNgYFfblia:localhost:8800BD*Q!OBWkjfrDCNgYFfblia:localhost:8800>@*Q!OBWkjfrDCNgYFfblia:localhost:8800=?*Q!OBWkjfrDCNgYFfblia:localhost:8800<>*Q!OBWkjfrDCNgYFfblia:localhost:8800;=*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800(Q!NhWgOTYzEPRwAxRQvS:localhost:8800wv(Q!NhWgOTYzEPRwAxRQvS:localhost:8800vu(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ut(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ts(Q!NhWgOTYzEPRwAxRQvS:localhost:8800sr(Q!NhWgOTYzEPRwAxRQvS:localhost:8800rq*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NeYaCeYNFATCqlrlGT:localhost:8800o*Q!NeYaCeYNFATCqlrlGT:localhost:8800n*Q!NeYaCeYNFATCqlrlGT:localhost:8800m*Q!NeYaCeYNFATCqlrlGT:localhost:8800l*Q!NeYaCeYNFATCqlrlGT:localhost:8800k*Q!NeYaCeYNFATCqlrlGT:localhost:8800j*Q!NboFFVLpJHTeuUKCjM:localhost:8800>a*Q!NboFFVLpJHTeuUKCjM:localhost:8800=`*Q!NboFFVLpJHTeuUKCjM:localhost:8800<_*Q!NboFFVLpJHTeuUKCjM:localhost:8800;^*Q!NboFFVLpJHTeuUKCjM:localhost:8800:]*Q!NboFFVLpJHTeuUKCjM:localhost:88009\*Q!NboFFVLpJHTeuUKCjM:localhost:88008[*Q!NboFFVLpJHTeuUKCjM:localhost:88007Z*Q!NajQnqYmGyTjxhFYar:localhost:8829 (Q!NZHpBquHDfJAjiawGk:localhost:8800IH(Q!NZHpBquHDfJAjiawGk:localhost:8800HG(Q!NZHpBquHDfJAjiawGk:localhost:8800GF(Q!NZHpBquHDfJAjiawGk:localhost:8800FE(Q!NZHpBquHDfJAjiawGk:localhost:8800ED(Q!NZHpBquHDfJAjiawGk:localhost:8800DC*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800x*Q!NcJYmIbgjsaKJOzBcs:localhost:8800w*Q!NcJYmIbgjsaKJOzBcs:localhost:8800~p*Q!NcJYmIbgjsaKJOzBcs:localhost:8800}o*Q!NcJYmIbgjsaKJOzBcs:localhost:8800|n*Q!NcJYmIbgjsaKJOzBcs:localhost:8800{m*Q!NcJYmIbgjsaKJOzBcs:localhost:8800zl*Q!NcJYmIbgjsaKJOzBcs:localhost:8800yk*Q!NcJYmIbgjsaKJOzBcs:localhost:8800xj*Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800  &FeQu$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "txn_id": "420", "stream_ordering": 2257}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "prev_events": ["$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0"], "type": "m.room.message", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042482022, "hashes": {"sha256": "bzhNo0DtTZ77FVN4iqKqWiyO/h37KYjkSbYaWlhgRP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EJpZLk4tjRgmic5R7xRQidNci4ItwE/ShIq3gspnh0ZbhwBYETzOyqe4R8zAVM8AaYf1O4GpApIy3R6uLosYDw"}}, "unsigned": {"age_ts": 1570042482022}}EeQu$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "txn_id": "419", "stream_ordering": 2256}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "prev_events": ["$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk"], "type": "m.room.message", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042481389, "hashes": {"sha256": "uJRdN4taoDTOVCCVkaNSl4DhmuZSSUeDQfLbLsu/e9Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "px31lbzh/Eo+vkP5CTzap8SirflR8n81iG6DOcRGFwgzSY8gRAz5iahdxFNaiGUVKIf9SfXJeXoHbDPcFaf0DA"}}, "unsigned": {"age_ts": 1570042481389}}DeQu$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "txn_id": "418", "stream_ordering": 2255}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "prev_events": ["$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA"], "type": "m.room.message", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042480559, "hashes": {"sha256": "wR1mBf4kYWuSrsv4Ih41K7tEGl3Ut2LcijBe8MsLevM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zflsBozUpHXNXJ5ZZuXBSeU0kVeOMDIAh2x5hOXW3CBL4i/4sx69PjXbcf82UHa0lvonCGVdxbz988RYrUOtAw"}}, "unsigned": {"age_ts": 1570042480559}}VCeQa9$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 422, "stream_ordering": 2254}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc"], "prev_events": ["$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "type": "m.room.member", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-405:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-405", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-405:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042479771, "hashes": {"sha256": "r7vFfu0yuXsGsXWxduywfxdpi7WV/ifqjjaJrFgLHoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+ulbSEC6/OT5AQGpdJwOnWe6A3+bCVqzA0E+YrEhWmRGhYwWREUtf0bXcwiPVh8WdUn1x3X6XCoiQ2B4OpgUAw"}}, "unsigned": {"age_ts": 1570042479771}} Hpo=  u V J Dj \ P  C* > V\{ | I $bP0h6 *  $ CtmNKv8Nw0DQ1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q>1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o11e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY(1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUe1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A ~1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI(1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8 1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo K1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwN1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEJ0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq81e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih441e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I11e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok+1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs&1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10n1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMH1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY:1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg# v11e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu801e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY\1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw[1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsW1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw }1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc q1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg >1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY g1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIk1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ%1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc d1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ X1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM ]821e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUw21e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkh1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs L,L,X&R j8p>^ v D   | J  P  W %  ] +e3k9q?xF~11e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY D1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM =1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU 21e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU )1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwF1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4P1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcr1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw ^1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4?1e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4>1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk31e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 31e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo)1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 21e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo c1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk _0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc^0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT441e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 O1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE]1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksU1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s;1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0?1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4f1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko1e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEO1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s 1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8N1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 w1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8L1e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8N1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A-1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAt1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAp1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI @@f+z?SOc( w <  P  d ) x =  Q e*y>Rg,{@8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]! @anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]! @anon-20191002_181700-462:localhost:8800SKOLIDFQEN8~]! @anon-20191002_181700-461:localhost:8800GRYRTUWCZU8}]! @anon-20191002_181700-460:localhost:8800GJEFYISBJP8|]! @anon-20191002_181700-458:localhost:8800BKBKPFYUSG8N]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8M]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8L]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8K]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8J]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8I]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8H]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8G]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8F]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW8E]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL8D]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8{]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8z]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8y]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8x]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC8w]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8v]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8u]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJ8t]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8s]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8r]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8q]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8p]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8o]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8n]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK8m]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8l]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8k]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8j]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8i]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8h]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8g]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8f]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN8e]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8d]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8c]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8b]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8a]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8`]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8_]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8^]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8\]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8[]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8Z]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ8Y]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8X]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8W]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8V]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8U]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8T]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8S]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8R]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8Q]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8P]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK8O]!@anon-20191002_181700-409:localhost:8800GINWCFSINT w\ Z  r ) :OM ew!je)Q ] $zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 me3me;@anon-20191002_181700-412:localhost:8800!ie)Q ] $uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7sm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 mbmb@anon-20191002_181700-413:localhost:8800 he'Q ] $MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sm.room.member!HXfrGcvJCbRItyQLVE:localhost:8800 m_tm_@anon-20191002_181700-413:localhost:8800 ge'Q ]$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMm.room.member!HXfrGcvJCbRItyQLVE:localhost:8800m[m[@anon-20191002_181700-412:localhost:8800fe#Q ]$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsm.room.name!HXfrGcvJCbRItyQLVE:localhost:8800mXSmX@anon-20191002_181700-411:localhost:8800ee#Q ]$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8m.room.test!HXfrGcvJCbRItyQLVE:localhost:8800mVmV@anon-20191002_181700-411:localhost:8800,de?Q ]$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsm.room.history_visibility!HXfrGcvJCbRItyQLVE:localhost:8800mQzmSg@anon-20191002_181700-411:localhost:8800$ce/Q ]$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsm.room.join_rules!HXfrGcvJCbRItyQLVE:localhost:8800mOKmP@anon-20191002_181700-411:localhost:8800&be3Q ]$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUm.room.power_levels!HXfrGcvJCbRItyQLVE:localhost:8800mLHmM@anon-20191002_181700-411:localhost:8800 ae'Q ]$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcm.room.member!HXfrGcvJCbRItyQLVE:localhost:8800mGmH@anon-20191002_181700-411:localhost:8800` e'Q  ]$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgm.room.create!HXfrGcvJCbRItyQLVE:localhost:8800mDTmD@anon-20191002_181700-411:localhost:8800!_e)Q ]$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800m<%m<0@anon-20191002_181700-408:localhost:8800!^e)Q ] $8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m:Km:R@anon-20191002_181700-408:localhost:8800!]e)Q ] $kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8cm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m8m8 @anon-20191002_181700-408:localhost:8800!\e)Q ] $LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m6Im6N@anon-20191002_181700-408:localhost:8800![e)Q ] $I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m3m3@anon-20191002_181700-408:localhost:8800 Ze'Q ] $AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkm.room.member!HusOrLtWZTLbmQZxmm:localhost:8800 m0m0@anon-20191002_181700-409:localhost:8800 Ye'Q ]$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakm.room.member!HusOrLtWZTLbmQZxmm:localhost:8800m,Sm,@anon-20191002_181700-408:localhost:8800Xe#Q ]$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMm.room.name!HusOrLtWZTLbmQZxmm:localhost:8800m)m*@anon-20191002_181700-407:localhost:8800We#Q ]$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbAm.room.test!HusOrLtWZTLbmQZxmm:localhost:8800m'm'@anon-20191002_181700-407:localhost:8800,Ve?Q ]$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Em.room.history_visibility!HusOrLtWZTLbmQZxmm:localhost:8800m"m$O@anon-20191002_181700-407:localhost:8800$Ue/Q ]$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMm.room.join_rules!HusOrLtWZTLbmQZxmm:localhost:8800mm@anon-20191002_181700-407:localhost:8800&Te3Q ]$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qm.room.power_levels!HusOrLtWZTLbmQZxmm:localhost:8800mm%@anon-20191002_181700-407:localhost:8800 Se'Q ]$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgm.room.member!HusOrLtWZTLbmQZxmm:localhost:8800mm-@anon-20191002_181700-407:localhost:8800   *tJeQau$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2261}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q"], "type": "m.room.join_rules", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042486559, "hashes": {"sha256": "qArkG4YK3/6bquEpEhH8tKuo1Ngiw7xjIuUosJ1Onzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tQoc4Gbx5zKWc28FHItvJurWWdG4ryYBihqWqfDEfOH2+FjTqm7Z3HmtXpRXSWeP4/WeEJh5c4NhPF9y9ZVbAQ"}}, "unsigned": {"age_ts": 1570042486559}}kIeQac$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2260}{"auth_events": ["$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "type": "m.room.power_levels", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"users": {"@anon-20191002_181700-407:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042485786, "hashes": {"sha256": "1frZse1vd1thy/ZMgoAfUNuJRh8PcJ6v4kJv3+t23hY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2XnDiIobnvPObTwNq5jGWdEZMOz8orLJfrjcXn8HAVP/9fZVMqkASn5jCWAJYUURY00MeQVXKoKV5zC1zIBaBQ"}}, "unsigned": {"age_ts": 1570042485786}}vHeQay$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2259}{"auth_events": ["$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas"], "prev_events": ["$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas"], "type": "m.room.member", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-407", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-407:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042484937, "hashes": {"sha256": "jRfJl2CGI2p7YPQVdJq97M7MyqW8Z17ymM9TVupJfds"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "psZkRyiGtors6EVQy9P16zRh5GuOx7p9QU+Cy2TZ6pdDjwBJAErDEEfFp/Ymc1T90JDd21VQE/N8i2QY9HtjBw"}}, "unsigned": {"age_ts": 1570042484937}}iGeQa_$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2258}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-407:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042484271, "hashes": {"sha256": "JBQQDa13eWPteBFxpuX8GIivfOakXoXytVsM/lNr1nc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "msnXjHUGI5gnHX91sx8A8mB8KHArhuZquDjHf3LT8wMhowPBeGt5URcoJaFyvfNOOjqQEKf0VUR2Fx/h+BSfAQ"}}, "unsigned": {"age_ts": 1570042484271}} KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD-]@anon-20191002_181700-521:localhost:8800I-]@anon-20191002_181700-456:localhost:8800b-]@anon-20191002_181700-455:localhost:8829`-]@anon-20191002_181700-454:localhost:8800\-]@anon-20191002_181700-453:localhost:8829Z-]@anon-20191002_181700-452:localhost:8800U-]@anon-20191002_181700-451:localhost:8829S-]@anon-20191002_181700-450:localhost:8800M-]@anon-20191002_181700-449:localhost:8800K-]@anon-20191002_181700-448:localhost:8800F-]@anon-20191002_181700-447:localhost:8800D-]@anon-20191002_181700-520:localhost:8800B-]@anon-20191002_181700-519:localhost:8829@-]@anon-20191002_181700-518:localhost:8800<-]@anon-20191002_181700-517:localhost:8829:-]@anon-20191002_181700-516:localhost:88006-]@anon-20191002_181700-515:localhost:88294-]@anon-20191002_181700-514:localhost:88000-]@anon-20191002_181700-513:localhost:8829.-]@anon-20191002_181700-512:localhost:8800)-]@anon-20191002_181700-511:localhost:8829'-]@anon-20191002_181700-510:localhost:8800!-]@anon-20191002_181700-509:localhost:8800-]@anon-20191002_181700-508:localhost:8800-]@anon-20191002_181700-507:localhost:8800-]@anon-20191002_181700-506:localhost:8800-]@anon-20191002_181700-505:localhost:8800 -]@anon-20191002_181700-504:localhost:8829 -]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-502:localhost:8829-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-500:localhost:8829-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-498:localhost:8829-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-496:localhost:8829-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800-]@anon-20191002_181700-490:localhost:8800-]@anon-20191002_181700-489:localhost:8829-]@anon-20191002_181700-488:localhost:8800-]@anon-20191002_181700-487:localhost:8829-]@anon-20191002_181700-486:localhost:8800-]@anon-20191002_181700-485:localhost:8829-]@anon-20191002_181700-484:localhost:8800-]@anon-20191002_181700-483:localhost:8829-]@anon-20191002_181700-482:localhost:8800-]@anon-20191002_181700-481:localhost:8829-]@anon-20191002_181700-480:localhost:8800-]@anon-20191002_181700-479:localhost:8800-]@anon-20191002_181700-478:localhost:8800-]@anon-20191002_181700-477:localhost:8800-]@anon-20191002_181700-476:localhost:8800-]@anon-20191002_181700-475:localhost:8800-]@anon-20191002_181700-474:localhost:8829-]@anon-20191002_181700-473:localhost:8800-]@anon-20191002_181700-472:localhost:8829-]@anon-20191002_181700-471:localhost:8800-]@anon-20191002_181700-470:localhost:8829-]@anon-20191002_181700-469:localhost:8800-]@anon-20191002_181700-468:localhost:8829-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-466:localhost:8829-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800{-]@anon-20191002_181700-462:localhost:8800y-]@anon-20191002_181700-461:localhost:8800s-]@anon-20191002_181700-460:localhost:8800n-]@anon-20191002_181700-459:localhost:8829l-]@anon-20191002_181700-458:localhost:8800h-]@anon-20191002_181700-457:localhost:8829f 8l D `8]c!E@anon-20191002_181700-417:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwoVZYHWNRJEP127.0.0.1Perl + Net::Async::HTTP/0.44mӢY]c!E@anon-20191002_181700-416:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQoDJBLIYEMJA127.0.0.1Perl + Net::Async::HTTP/0.44mӌ܃]c!E@anon-20191002_181700-415:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAoGYOCEBCXKN127.0.0.1Perl + Net::Async::HTTP/0.44mӇS]c!E@anon-20191002_181700-414:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgoJOACLHYIFX127.0.0.1Perl + Net::Async::HTTP/0.44mr]c!E@anon-20191002_181700-413:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9woADVOIWYJVV127.0.0.1Perl + Net::Async::HTTP/0.44m_c]c!E@anon-20191002_181700-412:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwoEGSWCNVTAJ127.0.0.1Perl + Net::Async::HTTP/0.44mZU]c!E@anon-20191002_181700-411:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAoQBCZCYKWIT127.0.0.1Perl + Net::Async::HTTP/0.44mC]c!E@anon-20191002_181700-409:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8woGINWCFSINT127.0.0.1Perl + Net::Async::HTTP/0.44m0 ]c!E@anon-20191002_181700-408:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQoXKDKZYMRFB127.0.0.1Perl + Net::Async::HTTP/0.44m+!]c!E@anon-20191002_181700-407:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwoRTGALMPCLS127.0.0.1Perl + Net::Async::HTTP/0.44mj !.\ : E s     HU`e+ geQ3 $PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels eQ']$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800joina~eQ' $aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create }eQ']$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800join |eQ']$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800join_{eQ# $4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800m.room.namemzeQ? $rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibilityeyeQ/ $5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rulesgxeQ3 $M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels weQ']$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800joinaveQ' $7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800m.room.create ueQ']$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800join teQ']$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800join_seQ# $DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800m.room.namemreQ? $5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibilityeqeQ/ $Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rulesgpeQ3 $gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels oeQ']$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800joinaneQ' $k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create meQ']$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800join leQ']$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800join_keQ# $PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.namemjeQ? $b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibilityeieQ/ $MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rulesgheQ3 $XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels geQ']$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800joinafeQ' $8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create eeQ']$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800join deQ']$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800join_ceQ# $KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.namembeQ? $vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibilityeaeQ/ $dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rulesg`eQ3 $WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels  w +VNeQa9$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "stream_ordering": 2265}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM"], "prev_events": ["$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM"], "type": "m.room.member", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-408", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-408:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042489939, "hashes": {"sha256": "i9DmNfAwMTRw8R3Mim4sGrso1qc5MsKjtSyBMCHBV34"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+439dZccb5JhBpJ8z4Be24ydeYXIWD0k8sYclITGIZ2v/AhQTa1GZt2Cwv12jXjSYJbsKVE1zT2JX1QjCnnAQ"}}, "unsigned": {"age_ts": 1570042489939}}nMeQai$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2264}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA"], "type": "m.room.name", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042489246, "hashes": {"sha256": "07u0JlOBjYewB/FReTbBFZHgziRW26T4JUjR45Fz6dA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s/RNRjgFE7alrVsHs1Saody5KbOM3NpEdPTQQCwoCJPwW9lhWaX1YUDHK+Wv5CCjjLcJV4kEanvlEywaK0ZaAQ"}}, "unsigned": {"age_ts": 1570042489246}}HLeQa$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2263}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E"], "type": "m.room.test", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042488751, "hashes": {"sha256": "G37tJt6K9kdJj3enPIceDK3ndHHWHrUrwxbnAiXWiq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uS6yRk+Zh08LCgSI/Lhom1Xq1iZVaPZL8z8g4o0GxTLthmredAiSHqoCjaJ7SbE+o6c1HwPbRhP07Jud2jOxBg"}}, "unsigned": {"age_ts": 1570042488751}}KeQa$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2262}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM"], "type": "m.room.history_visibility", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042487476, "hashes": {"sha256": "IMgG/hImG0qkJ2PZi6mSx4LUkbomgglcyqOi2WSF1YQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+8pjW88jmS0pkZRaBTVO/kImkrPIY+ikfdcxJZJGwaVpNtJo6Mbaf6SagOXwePUUdu0IG3NWNiO9jOkUQz2CBA"}}, "unsigned": {"age_ts": 1570042487476}} B T  T  p 7 O8 4 Sq QP3mo6lU 5 R n  p 798e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwsha256 l8e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwsha2568e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIsha256 H8e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0sha256'8e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQsha2568e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIsha2568e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEsha256_8e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4sha256 8e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIsha2568e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQsha256D8e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYsha2568e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0sha2567e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4sha256F8e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUsha256 8e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIsha256_8e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwsha256O8e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICEsha256 p8e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdksha256(8e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0sha2568e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828sha256"8e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMsha2568e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qsha256 a8e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLosha256 /8e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQsha256 8e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4sha256 8e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4sha256B8e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQsha2568e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQsha2568e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIsha256>8e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Esha256 8e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEsha25628e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQsha2568e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAsha2568e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMsha2568e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8sha2568e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMsha256 8e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qsha2568e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAsha2568e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOgsha256>8e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Esha256!8e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8sha25608e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMsha2568e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wsha2568e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4sha25618e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Msha256D8e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgsha2568e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycsha25658e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpcsha25688e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMsha2568e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecsha256 8e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4sha2568e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUsha2568e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIsha256b8e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2csha256P8e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIsha256W8e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQsha256 8e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQsha2568e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJssha256 8e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQsha256 8e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-Usha256 8e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgsha2568e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0sha2568e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcsha2568e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0sha2568e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0sha256 98e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtksha256 a} { y w u sqomkigeca~eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800~eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~~eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~}eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800~|eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~{eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~zeeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800 vA D j | J T " P  V $ 0 \ *bh6n< tBzIO8NN1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0*1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0) 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4a1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4`1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4_1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc_1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y >1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y =1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y <1e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc1e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc1e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8 O1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8 N1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8 M1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkW1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkV1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkU1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkT1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U 1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U 1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38 d1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38 c1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38 b1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 1e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI31e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI21e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM^1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g01e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0+2  &ReQu$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "423", "stream_ordering": 2269}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042492931, "hashes": {"sha256": "ATz6Q8pB0Fqh09jGbB7xRqYMzdAKHBettxcftleCHSU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t2WviDweky5Q8JfZvQ3qO9K+Nn/i9NQs9CmpjS9BkZApOz3Im58u35A/ASkBOKfZPyNCPx0DNA+6IIOmO9ItDg"}}, "unsigned": {"age_ts": 1570042492931}}QeQu$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "422", "stream_ordering": 2268}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042492489, "hashes": {"sha256": "/PsGXhrf+8pa0XQ3mwrnDoWdOaeFJ+C01L82DhpBI2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAkj+tzyVNyb5sh9rpUSGMDfEX0jaL3CTL0SsmUtd9SpLspFHM4kg3Rru+mJeP86Avi4XZLkjUb64/MKDMLHCg"}}, "unsigned": {"age_ts": 1570042492489}}PeQu$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "421", "stream_ordering": 2267}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042491836, "hashes": {"sha256": "tRyAdSxyBp7mwAgKT8WlsXK9AFqOx4XgSKpfAt0paRs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lIi2N7l2IDPhj8QOUO98rUcKceWzE6o1SfD9dykn1dAt/ZVDr3474ohWLZisWbWV0c3fC9EY6sDzif5Vozb2Bw"}}, "unsigned": {"age_ts": 1570042491836}}VOeQa9$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 426, "stream_ordering": 2266}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM"], "prev_events": ["$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "type": "m.room.member", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-409:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-409", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-409:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042490911, "hashes": {"sha256": "WDL9iLn3n66Ry7VbCRy6sTrPFGEt6z4wJ5+ZlBDXgdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YeliLzg18udccneqyEbdS2khFUFo3Vl9UtbksbFZY2D3x59O1j/sHEVRBK7OAgqRZlxi52EfNyWA+yRYkS6RCA"}}, "unsigned": {"age_ts": 1570042490911}} ~z v r n j fb^ZVRNJF)eeQ$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800(eeQ$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800'eeQ$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800&eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800%eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800$eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg!rWGwSSefrZzQYCYFHs:localhost:8800#eeQ$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800"eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800!eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800 eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800eeQ$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800eeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800 8Ir; ^ ! l _ " E r 5XBI U\j Z~ <Q3 !Qkkdnzvdr^Q']!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800 ]Q'[!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800]Q'[!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829:Q/ !RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rulesBQ? !RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibility<Q3 !RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_access6Q' !RmdhCjvouVLmyIHjaM:localhost:8800m.room.create<Q3 !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levelso^Q']!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800n:Q/ !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rulespBQ? !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibilityq6Q' !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.createm<Q3 !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels^Q']!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829^Q']!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800:Q/ !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rulesBQ? !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibility<Q3 !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_access6Q' !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create<Q3 !RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levels<^Q']!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:88009^Q']!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800D:Q/ !RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules?BQ? !RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibilityB6Q' !RPfffkmSEbWggEjnoI:localhost:8800m.room.create6<Q3 !ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels^Q']!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800^Q']!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800:Q/ !ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rulesBQ? !ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibility<Q3 !ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_access6Q' !ROoilpDjLJfjKfSPIi:localhost:8800m.room.create<Q3 !RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels^Q']!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800^Q']!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800:Q/ !RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rulesBQ? !RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibility<Q3 !RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_access6Q' !RDEAXrqXQizuhCUFPq:localhost:8800m.room.create9Q- !QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone<Q3 !QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels^Q']!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800:Q/ !QyLUggxrTnULUAOseq:localhost:8800m.room.join_rulesBQ? !QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibility6Q' !QyLUggxrTnULUAOseq:localhost:8800m.room.create<Q3 !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levels t^Q']!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800 s:Q/ !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules uBQ? !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility v6Q' !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.create r<Q3 !QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels^Q']!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800:Q/ !QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rulesBQ? !QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibility6Q' !QnmLrBAxeItdHsaxWf:localhost:8800m.room.create<Q3 !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B ~ A } @ | ? { > z = y < x ; w : v 9 u 8 t 7 s 6 r 5 q 4 p 3 o 2 n 1 m 0 l / k . j - i , h + g * f ) e ( d ' c & b % a $ ` # _ " ^ ! ] \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J I H G F E  D  C  B  A  @  ?  >  = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                            ~  }  |  {  z  y  x  w  v  u ~~}}||{{zzyyxxwwvvutsrqponmlkjihgfedccba`_^]\[ZYXWVUTSR $&L p  ' M o  (Lr+Ou,Rv jeeQ%$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 2jdeQ%$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 1lceQ%#$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800content.nameA room namejbeQ%$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 4jaeQ%$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 3j`eQ%$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 2j_eQ%$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 1l^eQ%#$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800content.nameA room namej]eQ%$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 4j\eQ%$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 3j[eQ%$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 2jZeQ%$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 1lYeQ%#$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800content.nameA room namejXeQ%$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 6jWeQ%$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 5jVeQ%$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 4jUeQ%$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 3jTeQ%$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 2jSeQ%$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 1lReQ%#$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800content.nameA room namejQeQ%$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyMessage 3jPeQ%$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyMessage 2jOeQ%$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyMessage 1lNeQ%#$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyHello worldlMeQ%#$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800content.nameA room namejLeQ%$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 4jKeQ%$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 3jJeQ%$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 2jIeQ%$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 1lHeQ%#$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyHello worldlGeQ%#$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800content.nameA room namejFeQ%$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 5jEeQ%$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 4jDeQ%$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 3jCeQ%$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 2jBeQ%$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 1 HVj8p> v D   | J 2 P  V $ ] +d$j8p> vD|JP1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0YM1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy021e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA 21e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY 1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU81e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0;1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc V1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE 1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug /1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro 41e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc >1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOww1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ+1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c?0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc 1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gz1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkk1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA O1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYz1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAW1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY :1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg41e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8j1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIs1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg T1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY 81e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 =1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8 \\B+tW:#lO4`I Y < ! p M 6 F )  W B %  | _ H h)U8Pp1iCqV3 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-576:localhost:8800 '  m.room.create 3  m.room.power_levels 3  m.room.power_levels /  m.room.join_rules "?  m.room.history_visibility 3  m.room.guest_access 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-574:localhost:8800 '  m.room.create -  m.room.tombstone "?  m.room.history_visibility 3  m.room.power_levels 0>'] m.room.member@anon-20191002_181700-612:localhost:8800 /'  m.room.create .>'] m.room.member@anon-20191002_181700-610:localhost:8800 ->'] m.room.member@anon-20191002_181700-609:localhost:8800 ,%)) m.room.aliaseslocalhost:8800 +"?  m.room.history_visibility */  m.room.join_rules )9  m.room.canonical_alias (3  m.room.power_levels '>'] m.room.member@anon-20191002_181700-605:localhost:8800 &>'] m.room.member@anon-20191002_181700-608:localhost:8800 %>'] m.room.member@anon-20191002_181700-605:localhost:8800 $'  m.room.create ##  m.room.name ""?  m.room.history_visibility !/  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-606:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-607:localhost:8829 >'] m.room.member@anon-20191002_181700-607:localhost:8829 >'] m.room.member@anon-20191002_181700-607:localhost:8829 %)) m.room.aliaseslocalhost:8800 "?  m.room.history_visibility /  m.room.join_rules 9  m.room.canonical_alias 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-605:localhost:8800 '  m.room.create 3  m.room.power_levels #  m.room.name >'] m.room.member@anon-20191002_181700-603:localhost:8800 /  m.room.join_rules "?  m.room.history_visibility '  m.room.create 3  m.room.power_levels #  m.room.name >'] m.room.member@anon-20191002_181700-601:localhost:8800 /  m.room.join_rules "?  m.room.history_visibility '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-584:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-583:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-582:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-580:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-579:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-578:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-577:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules  vvVeQay$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2273}{"auth_events": ["$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg"], "prev_events": ["$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg"], "type": "m.room.member", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-411", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-411:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042496959, "hashes": {"sha256": "CpCwPFShpYWE4FSUaEUnM0RJjeDrERMSz0Q6YQ64/4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tdYl6Ld9a5p/41pdA6ey2Lm3jYWt2H18gFOKYZ5d/Nw1wvWrzsHInVkkNQVr88nKC7EXTlWi8YCJYs5Nlv//DQ"}}, "unsigned": {"age_ts": 1570042496959}}iUeQa_$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2272}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-411:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042496084, "hashes": {"sha256": "fLlPvom7lSgAndbAmwTygtpGu9pRz85/7zd2eiSAoi4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eYlH4fBNZkPzCh0mNQ7UjZAfFqohqcpAoNjLS5NkV1OyyEH+Cp2y3/WtnWoAa8W1VJ2bYrVazDxD2TYL73oiAA"}}, "unsigned": {"age_ts": 1570042496084}}TeQu$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "425", "stream_ordering": 2271}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042493989, "hashes": {"sha256": "Z8jC2hfRncaIfkuTNFa5uq8c6ifZpSP3onEWgCvSNqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DyvPoIumiALEJ3rzcGs5k1s75RtKMlOmY9Q6q7LChlm4srbmPrak4FyKOiQSgA1s3ZIhrDbO2vlMMo/IVvhDBA"}}, "unsigned": {"age_ts": 1570042493989}}SeQu$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "424", "stream_ordering": 2270}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042493515, "hashes": {"sha256": "vsTzw/u40Vn/JjWvZloiaeN8+/T9uAE7lM+g0QlbqZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/bp3c9zjR8n7F7gpmiIEP13vT3hOECp7V0CrNDAzN4bMghVO2Px3QysJJGWUn4dOpwnriMLYukgjcVBlW19LCw"}}, "unsigned": {"age_ts": 1570042493515}} D~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   { p e Z O D 9 . #   ~ s h ] R G < 1 &   vk`UJ?4)yncXMB7,! |qf[PE:/$ti^SH=2'wlaVK@5* zodYNC8-" DCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<; :9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876 543210/.-,+*)('&%$#"!       |qf[PE:/$ti^SH=2' w l a V K @ 5 *   z o d Y N C 8 - "   } r g \ Q F ; 0 %    u j _ T I > 3 (    x m b W L A 6 + {peZOD9.# ~sh]RG<1&210/.-,+*)('&%$#"!      ~}|{qrfzyxwvutsg\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE g * T~=gg-]!c@anon-20191002_181700-422:localhost:8800VPDAIJPBTTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowog,]!c@anon-20191002_181700-420:localhost:8800PFSCBSPFUQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwog+]!c@anon-20191002_181700-419:localhost:8800WRAHOCOTZGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3gog*]!c@anon-20191002_181700-417:localhost:8800VZYHWNRJEPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwog)]!c@anon-20191002_181700-418:localhost:8800UIZEZFRVWZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwog(]!c@anon-20191002_181700-416:localhost:8800DJBLIYEMJAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQog']!c@anon-20191002_181700-414:localhost:8800JOACLHYIFXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgog&]!c@anon-20191002_181700-415:localhost:8800GYOCEBCXKNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAog%]!c@anon-20191002_181700-413:localhost:8800ADVOIWYJVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9wog$]!c@anon-20191002_181700-411:localhost:8800QBCZCYKWITMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAog#]!c@anon-20191002_181700-412:localhost:8800EGSWCNVTAJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwo ,NC 8 - { " p  e ZOD9.|#qf VeL$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMsha256 5.m9kG/X ߃wm VeL$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMsha256h_ "7>L#-G9 V~eL$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMsha256aikmRߪ뫂c۳Dc ZV}eL$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMIsha256$31~Ԡylm+:O/=<݅[TV|eL$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGAsha256 L-^esc_4?yXiHT `V{eL$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUsha256bq-y(1>aQGVzeL$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7Msha256zަZun?RʼbۙsG0{VyeL$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMsha256(P |·Uef榦L%>TVxeL$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEsha256h64XTտ[JДI1VweL$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdissha256l5L"4!SG{,B O[sv+VveL$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUsha256F$p[kY  >î'JT{5VueL$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQsha2564\TZr!}c7XiZq鋚(TVteL$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGosha256"Af*ӓNzv *3ox\0jVseL$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIsha256G!ח } 3pa);7bWbҒVreL$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4sha2563uʬUT5zaBL.VqeL$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7ksha256~*5v "Jq.9p{(ԝVpeL$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Ysha256p?:a8kj+2@kFVoeL$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEsha256r02]vKi4JrR"M#SBVneL$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEMsha256Lrp [إ B ,Tz}dİCVmeL$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNosha256L@@ڮp#;HdVleL$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIsha256|fl)]YyjN'Y[p\Ttd"VkeL$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYsha256HP\0{'~(KOʼdTVjeL$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4sha256Y7 _Ko^(%[8‘ Q/GhyN.VieL$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcsha256 j>?AbapܜmMUt)F"VheL$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwgsha2567@p:EQ;!; łYLQa+VgeL$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgsha256+kTԩԑٖ@*=Sk/&VfeL$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYsha256zS%E\[PK=T*VeeL$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIsha2566ǐv(ZZ|E 8яcZ2%RVdeL$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSssha2564eɩMO*B%YE3ya+VceL$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8sha256Ew1nU/Ȕw%Agw5VbeL$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIsha256\J+& .,h9[e50'D7P2VaeL$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXssha256w3+Yq ;,3g-s%{V`eL$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNosha256CZ؍+U7 l5)Um ⍩NV_eL$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcsha256|*ϒZoV]#27h~L@V^eL$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7ssha256}K_A P߭?HSﺦ;V]eL$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28ssha2562*Q{%B!G!v#NupV\eL$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMsha256^<Vʛqj*ѾtjjSV[eL$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zssha256=bԀFa}1~Mw&;VZeL$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8sha256^´CEzo8m=bVYeL$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhssha256o* M!AbpiV z&EVXeL$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hssha2561bf'qN5% SW85hʭ&VWeL$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUsha256] Bӻ '<5\2vuVVeL$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcsha256{חBfJl('T"9O VUeL$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgsha256M㪮߉J=۩YFwek2QI,mz !} 1 Y 9 B j r {0;DGit}daQ' e !eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco `Q']e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k _Q']e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEb^Q# e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.name$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Osp]Q? e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibility$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEh\Q/ e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rules$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEj[Q3 e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU ZQ']e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMdYQ' e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM XQ']e !AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE WQ']e !AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisbVQ# e !AMLmLqizBFklpqKibP:localhost:8800m.room.name$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUpUQ? e!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibility$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGohTQ/ e!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rules$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIjSQ3 e!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4 RQ']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kdQQ' e!AMLmLqizBFklpqKibP:localhost:8800m.room.create$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y PQ']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY OQ']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4bNQ# e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.name$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcpMQ? e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibility$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpghLQ/ e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rules$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYjKQ3 e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI JQ']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsdIQ' e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8 HQ']e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s GQ']e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMbFQ# e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.name$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zspEQ? e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibility$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhshDQ/ e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rules$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsjCQ3 e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU BQ']e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcdAQ' e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg , k x ' K 4 A N [ u$1Xhe>^r!P]Q@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:88000P]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800-P]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800,P]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800'P]Q@anon-20191002_181700-470:localhost:8829!yLccBXjjEasExpsXlt:localhost:8800&P]Q@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800.P]Q@anon-20191002_181700-472:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800)P]Q@anon-20191002_181700-472:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800(P]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800%P]Q@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800$P]Q@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800#P]Q@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800"P]Q@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800!P]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800 P]Q@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800*P]Q@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800P]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-457:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-457:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-455:localhost:8829!bQDOrbAknnQZfUbhgS:localhost:8800P]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800P]Q@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800P]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800 P]Q@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 P]Q@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 P]Q@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 P]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800 P]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800P]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800P]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800/P]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800+ -RM H C > 9 4/*|%w rmhc T!Qe!yTQmLDAxZscWKLMSWh:localhost:8800$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoT Qe!yTQmLDAxZscWKLMSWh:localhost:8800$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsTQe!yTQmLDAxZscWKLMSWh:localhost:8800$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kTQe!yTQmLDAxZscWKLMSWh:localhost:8800$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYTQe!yTQmLDAxZscWKLMSWh:localhost:8800$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUTQe!yTQmLDAxZscWKLMSWh:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4TQe!yTQmLDAxZscWKLMSWh:localhost:8800$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlETQe!eWRdwtyqHvuxZFvhNS:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ETQe!eWRdwtyqHvuxZFvhNS:localhost:8800$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3ETQe!eWRdwtyqHvuxZFvhNS:localhost:8800$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXITQe!eWRdwtyqHvuxZFvhNS:localhost:8800$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoTQe!UGVFuRGyPQmBbGsEDo:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kTQe!UGVFuRGyPQmBbGsEDo:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxETQe!UGVFuRGyPQmBbGsEDo:localhost:8800$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsTQe!UGVFuRGyPQmBbGsEDo:localhost:8800$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BETQe!UGVFuRGyPQmBbGsEDo:localhost:8800$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoET Qe!UGVFuRGyPQmBbGsEDo:localhost:8800$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUT Qe!UGVFuRGyPQmBbGsEDo:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMT Qe!UGVFuRGyPQmBbGsEDo:localhost:8800$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMT Qe!AMLmLqizBFklpqKibP:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zET Qe!AMLmLqizBFklpqKibP:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisTQe!AMLmLqizBFklpqKibP:localhost:8800$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUTQe!AMLmLqizBFklpqKibP:localhost:8800$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGoTQe!AMLmLqizBFklpqKibP:localhost:8800$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pITQe!AMLmLqizBFklpqKibP:localhost:8800$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4TQe!AMLmLqizBFklpqKibP:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kTQe!AMLmLqizBFklpqKibP:localhost:8800$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0YTQe!rWGwSSefrZzQYCYFHs:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYTQe!rWGwSSefrZzQYCYFHs:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4TQe!rWGwSSefrZzQYCYFHs:localhost:8800$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcTQe!rWGwSSefrZzQYCYFHs:localhost:8800$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgT~Qe~!rWGwSSefrZzQYCYFHs:localhost:8800$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYT}Qe}!rWGwSSefrZzQYCYFHs:localhost:8800$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIT|Qe|!rWGwSSefrZzQYCYFHs:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsT{Qe{!rWGwSSefrZzQYCYFHs:localhost:8800$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8TzQez!HXfrGcvJCbRItyQLVE:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sTyQey!HXfrGcvJCbRItyQLVE:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMTxQex!HXfrGcvJCbRItyQLVE:localhost:8800$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsTwQew!HXfrGcvJCbRItyQLVE:localhost:8800$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsTvQev!HXfrGcvJCbRItyQLVE:localhost:8800$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsTuQeu!HXfrGcvJCbRItyQLVE:localhost:8800$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU D DHZeQa$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2277}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs"], "type": "m.room.test", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042500777, "hashes": {"sha256": "eMlnAZpgTUwYggFyrRlQme34K+IaKUHHZIXgJvGLGP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+6jLjnewu9rST35B7BF3VlxO+Nx+uCqmUJup5gHkh36BqdRtqzK9M13nSCdhQ8BQZzkrOP7KHEkj/p1tc+59Cw"}}, "unsigned": {"age_ts": 1570042500777}}YeQa$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2276}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs"], "type": "m.room.history_visibility", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042499450, "hashes": {"sha256": "ERniiTX4zXqdjRhiWUWC1Lp5dkwb7749zXkyOLhqsbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qZhlDLl2dUS4BzwAPMZDZWoPsOuv1IwMv9wZanWbvs2/o/Ik+ObaTc9xhGf2eSL587nMxBlBlHQVdjUbJgg4Ag"}}, "unsigned": {"age_ts": 1570042499450}}tXeQau$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2275}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU"], "type": "m.room.join_rules", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042498891, "hashes": {"sha256": "dK0nal+9n8oWQS1hiYhbqvaHPdnuzmLBeSQMKHZqYKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ISwDJV9S6ergtJU+/qGJUeoKHDPyWCe4V00hk9MdjvmUkkkG5l42fg1PgPIKovyq0HzcOnplMV7NmAw3xxo4Cg"}}, "unsigned": {"age_ts": 1570042498891}}kWeQac$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2274}{"auth_events": ["$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "type": "m.room.power_levels", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"users": {"@anon-20191002_181700-411:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042498120, "hashes": {"sha256": "0OlJ07PQHWF8Lcg9kPdzxQNkfRacK3iO1IXiWhVrQDs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FBCRRrpgv50a4pY1kqmWzy5lsA2gl4/RdylgMTclXU6hdpxrmDysw33abaY7KGh1lFLkYVmE8uMm7OSxR+9CBw"}}, "unsigned": {"age_ts": 1570042498120}} pD7SUq9 U   q 9  V  r 9 U r69RUoq8T8e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWposha2568e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywsha2568e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4ksha256 8e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScsha256Z8e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0sha256U8e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUsha256 8e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycsha2568e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8sha256 8e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4sha256 8e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_ssha2568e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgsha256`8e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8sha2568e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIsha2568e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMsha256b8e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYsha256 8e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8sha2568e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4sha256 98e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYsha2568e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgsha256 8e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKcsha256 8e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8sha256 8e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEsha256 +8e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28sha2568e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9osha2568e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gsha256 ?8e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8sha256 h8e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0ssha256N8e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMsha256 8e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwsha256n8e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1Usha256 8e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwsha256 8e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSksha2568e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4sha2568e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4sha256h8e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwsha256 7e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBksha256;8e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8sha256 8e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknksha2568e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmIsha256 38e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0Isha2568e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNosha2568e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gksha256 8e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekksha2568e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gsha256 8e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvosha256 I8e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQsha2568e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8sha2568e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjosha256g8e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbksha256 8e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bksha256 g7e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcsha256m7e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4sha256<8e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8sha256 S8e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMsha256]8e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAsha256 8e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAoksha256}8e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQEsha256 &8e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDkssha2568e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4ssha2568e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8sha2567e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0sha256J8e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4sha2568e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8Esha2568e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruksha256i8e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYsha256 8e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAsha256 8e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkosha25628e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEsha256  N N^eQy$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 430, "txn_id": "426", "stream_ordering": 2281}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s"], "prev_events": ["$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-413:localhost:8800", "content": {"msgtype": "m.text", "body": "Hello world"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042503876, "hashes": {"sha256": "S+il6Vm+53mdF2j8j/HbEeoCOlSUVlN79WUN/Ud9TZ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IvuCUhwonlExj+5L77pmzcqJFg1wq72bOf+tH+FUviOeyUsoCyvJEpe1c6TG7Ef9KuLuNw45ujeNU5nDC8RRBA"}}, "unsigned": {"age_ts": 1570042503876}}V]eQa9$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 430, "stream_ordering": 2280}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs"], "prev_events": ["$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "type": "m.room.member", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-413:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-413", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-413:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042503028, "hashes": {"sha256": "He+VEB1AqmRtl5Zj2MHcLL0PbIFtfBbvD1U6qcLiWzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ek6PiB1arp3JLuHOCtnJmNi8O+SGRiL8kkV/Ssbo73WrYfTqsMp2mqmdCeEOrmDvc9UZ3LG+bO1EbJkEGexrAQ"}}, "unsigned": {"age_ts": 1570042503028}}V\eQa9$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "stream_ordering": 2279}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs"], "prev_events": ["$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs"], "type": "m.room.member", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-412", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-412:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042502017, "hashes": {"sha256": "lroW5g/jHK6j9H+TRQrbBg1mQG1jVbl4KRUyC/MQJbk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5mB/324ELJNOMrsghCLsVwgA6psW7csvHf0VsxARa8kePz4osZ19t6ZILOEOTCXlzS07Tie/xqBliOC6digrDQ"}}, "unsigned": {"age_ts": 1570042502017}}n[eQai$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2278}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8"], "type": "m.room.name", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042501203, "hashes": {"sha256": "L4QQuseQp0JSgarvvMS06kNCPWD+vAIHi9nO1Vlo5UI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yMGrk8uDrICkH0+J/U9+pGb2DRUxr/E0JTjpRYqOPNSdyM6vmVSIQUJdWmzMVWLLcfEcvnw2s1rJW3qHsn9ZCw"}}, "unsigned": {"age_ts": 1570042501203}} CZ("NB  V $ tzH> b v DT  *   | \ Jnp < P 0 j0h6 821e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE q1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0`1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4#1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 /1e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU611e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8k1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 E1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMW1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90_1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEv1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k|1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcn1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg t1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI8,1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA O1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A @1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4W1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c81e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk)1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4d1e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8z1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4H1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigQ1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ91e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE t1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 M1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH41e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ  vbbeQu$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "430", "stream_ordering": 2285}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042506129, "hashes": {"sha256": "h5FqQmtKDVjyk7IWK5lQtAWKNg8jrz56IxSAi65pvp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Cc2H3mktgz7LtUYpjssA0TZAk42RCvxHuCUwEZrcjRbGy6+ffidYSHAogT8N69yL4fL42pP4Nls17+tske1Dw"}}, "unsigned": {"age_ts": 1570042506129}}aeQu$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "429", "stream_ordering": 2284}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042505599, "hashes": {"sha256": "YSJbDajHxhnSNBVwogCFiN0qLtR84VacQaj8R6iMhAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ylFd7keaRGfyC0uh+3Wolv4DZIgcpRzkBrk4TAafY0hZYRHJULyKrPOGqneNiM1rz7TgvhyxdJx/OGOANyPYDA"}}, "unsigned": {"age_ts": 1570042505599}}`eQu$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "428", "stream_ordering": 2283}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042505125, "hashes": {"sha256": "mRB6l8NaoFv7EzPJtEAY6fHuQABS5q/E2gXqBjNvi/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T3BRhyhyavozehSq8h+6Q+3zTQd2cmXjCwxjaxwBgwNb0ZXr5qz0LnnvPZWnS+2bpLl8NeUV3bSFw6pQF6VVDg"}}, "unsigned": {"age_ts": 1570042505125}}_eQu$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "427", "stream_ordering": 2282}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042504499, "hashes": {"sha256": "iIq6tlCmbjw5E8tRCDQ0gqrROgWfy3KNAREMAOMuogA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3y5LcLSmCISl6VtpJH4Z8pvHJxCIIQmFdvT+ceEjFUvU5n6YrToCv76Fu8oR7V3ItL114breggC1fU3wcUYqAQ"}}, "unsigned": {"age_ts": 1570042504499}} y[ o ! y ' =Ncay e'Q ]$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdism.room.member!AMLmLqizBFklpqKibP:localhost:8800mӸmӸ@anon-20191002_181700-418:localhost:8800e#Q ]$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUm.room.name!AMLmLqizBFklpqKibP:localhost:8800mӴmӵz@anon-20191002_181700-417:localhost:8800e#Q ]$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQm.room.test!AMLmLqizBFklpqKibP:localhost:8800mӲmӲ@anon-20191002_181700-417:localhost:8800,e?Q ]$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGom.room.history_visibility!AMLmLqizBFklpqKibP:localhost:8800mӮ"mӯ@anon-20191002_181700-417:localhost:8800$~e/Q ]$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIm.room.join_rules!AMLmLqizBFklpqKibP:localhost:8800mӫmӬ@anon-20191002_181700-417:localhost:8800&}e3Q ]$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4m.room.power_levels!AMLmLqizBFklpqKibP:localhost:8800mӨmӪG@anon-20191002_181700-417:localhost:8800 |e'Q ]$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7km.room.member!AMLmLqizBFklpqKibP:localhost:8800mӦnmӦ@anon-20191002_181700-417:localhost:8800{ e'Q  ]$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Ym.room.create!AMLmLqizBFklpqKibP:localhost:8800mӣmӣ@anon-20191002_181700-417:localhost:8800!ze)Q ] $chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEm.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӗmӘG@anon-20191002_181700-415:localhost:8800!ye)Q ] $THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEMm.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӖ)mӖ1@anon-20191002_181700-415:localhost:8800!xe)Q ] $xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNom.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӓmӓ@anon-20191002_181700-415:localhost:8800!we)Q ] $fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIm.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӑFmӑJ@anon-20191002_181700-416:localhost:8800 ve'Q ] $88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYm.room.member!rWGwSSefrZzQYCYFHs:localhost:8800 mӌmӍI@anon-20191002_181700-416:localhost:8800 ue'Q ]$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4m.room.member!rWGwSSefrZzQYCYFHs:localhost:8800mӈmӉ@anon-20191002_181700-415:localhost:8800te#Q ]$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcm.room.name!rWGwSSefrZzQYCYFHs:localhost:8800mӅmӆ1@anon-20191002_181700-414:localhost:8800se#Q ]$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwgm.room.test!rWGwSSefrZzQYCYFHs:localhost:8800mӃmӃ@anon-20191002_181700-414:localhost:8800,re?Q ]$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgm.room.history_visibility!rWGwSSefrZzQYCYFHs:localhost:8800mmӁ5@anon-20191002_181700-414:localhost:8800$qe/Q ]$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYm.room.join_rules!rWGwSSefrZzQYCYFHs:localhost:8800m|'m}@anon-20191002_181700-414:localhost:8800&pe3Q ]$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIm.room.power_levels!rWGwSSefrZzQYCYFHs:localhost:8800myEmz@anon-20191002_181700-414:localhost:8800 oe'Q ]$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsm.room.member!rWGwSSefrZzQYCYFHs:localhost:8800mvmwX@anon-20191002_181700-414:localhost:8800n e'Q  ]$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8m.room.create!rWGwSSefrZzQYCYFHs:localhost:8800mrmt@anon-20191002_181700-414:localhost:8800!me)Q ]$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800mkml@anon-20191002_181700-412:localhost:8800!le)Q ] $dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXsm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 mimi@anon-20191002_181700-412:localhost:8800!ke)Q ] $1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNom.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 mgmg@anon-20191002_181700-412:localhost:8800 ah@0`8pH `8xP(  p H pH X0h@ X 0  h @  xP( ` P (   8 xX'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!IZkczIYykpZDvjuUWn:localhost:8800 B'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:88002'Q!IYxUkyFHOgvhLpdkOA:localhost:88001'Q!IYxUkyFHOgvhLpdkOA:localhost:88000'Q!IYxUkyFHOgvhLpdkOA:localhost:8800/'Q!IYxUkyFHOgvhLpdkOA:localhost:8800.'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800-'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800 K'Q!IZkczIYykpZDvjuUWn:localhost:8800 J'Q!IZkczIYykpZDvjuUWn:localhost:8800 I'Q!IZkczIYykpZDvjuUWn:localhost:8800 H'Q!IZkczIYykpZDvjuUWn:localhost:8800 G'Q!IZkczIYykpZDvjuUWn:localhost:8800 F'Q!IZkczIYykpZDvjuUWn:localhost:8800 E'Q!IZkczIYykpZDvjuUWn:localhost:8800 D'Q!IZkczIYykpZDvjuUWn:localhost:8800 C'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800~'Q!JYLMokjOhZZlmbZvTf:localhost:8800}'Q!JYLMokjOhZZlmbZvTf:localhost:8800|'Q!JYLMokjOhZZlmbZvTf:localhost:8800{'Q!JYLMokjOhZZlmbZvTf:localhost:8800z'Q!JYLMokjOhZZlmbZvTf:localhost:8800y'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800 i g 4 i5h 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1WlgoԂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAoӂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgo҂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAoق1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAoՂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwo؂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDegoׂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwoւ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7Qoт1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0VzngoЂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAoς1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAoۂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQo   *tfeQau$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2289}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI"], "type": "m.room.join_rules", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042510375, "hashes": {"sha256": "mENT5ymw2EShmSuqWLwbPPtvE1HwbVdj/rYfWRkCgYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x1LYU40sb+Bpfs9+NCkNIRjLswj4dS+rkP0ORwpk4t8afrVdz4EVjmPS0lMRtDDkZ4iomCZTPMHW99cHs+MzBQ"}}, "unsigned": {"age_ts": 1570042510375}}keeQac$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2288}{"auth_events": ["$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "type": "m.room.power_levels", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"users": {"@anon-20191002_181700-414:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042509637, "hashes": {"sha256": "AbLAkrqeyTJ8gE7S/VxGbKoqUM5I4unu711JFqqEX6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ffd215NBn7tr9cW8xmMRGKtmGa8mw7pUtlPAYrU1VLMmeUnoucemT1fNoHyYL7427d6DIGF1D0tYnm6GLCPAAw"}}, "unsigned": {"age_ts": 1570042509637}}vdeQay$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2287}{"auth_events": ["$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8"], "prev_events": ["$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8"], "type": "m.room.member", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-414", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-414:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042509029, "hashes": {"sha256": "In0vIQikqGsOWsmP+DB/4eus0Yx0pL8uFMjOgLuwNXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O7qyJhCN44uQPYwDbmdOq6OdqISQTD0seBADY/q/gMz8/Pbzck5fFBFP6VyE2S+NE69Xa+IjkRHeEAgit/8DCw"}}, "unsigned": {"age_ts": 1570042509029}}iceQa_$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2286}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-414:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042507968, "hashes": {"sha256": "fhwM1wAj8wH5nA9swHM/gfUcQVbWL7BRpCARNvoKA2A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6pK2ER8VJY9uZjirehYQ55/3ciGr9fst6r/FlCMuNMA+E0JkHV2B4pIH2KrEIwcSb8pGfmIy++BjD4vInByJDA"}}, "unsigned": {"age_ts": 1570042507968}} Jp? w E  } K   Q  W % ^ ,d2j8p> vD|J*P\V$j1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ6241e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIok1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0 1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0h1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk:1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY?1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc &1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8h1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMN1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcu1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI11e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIV1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0x1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY B1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE %1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY.1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 81e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcr1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkP1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQE1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc P1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdof1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgY1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 51e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo21e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw:0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg D1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0N1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o "Ms 1 B Q Z CqWf$5DMgoeQ3 $yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels neQ']$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800ameQ' $qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800m.room.create leQ']$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-426:localhost:8800 keQ']$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-425:localhost:8800_jeQ# $tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.namemieQ? $GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.history_visibilityeheQ/ $fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.join_rulesggeQ3 $tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.power_levels feQ']$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-424:localhost:8800aeeQ' $-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create deQ']$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800 ceQ']$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800_beQ# $gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.namemaeQ? $auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibilitye`eQ/ $mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rulesg_eQ3 $PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels ^eQ']$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800a]eQ' $aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create \eQ']$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800 [eQ']$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800_ZeQ# $4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800m.room.namemYeQ? $rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibilityeXeQ/ $5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rulesgWeQ3 $M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels VeQ']$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800aUeQ' $7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800m.room.create TeQ']$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800 SeQ']$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800_ReQ# $DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800m.room.namemQeQ? $5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibilityePeQ/ $Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rulesgOeQ3 $gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels NeQ']$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800  4 h m9d]c@anon-20191002_181700-452:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwo127.0.0.1d]c@anon-20191002_181700-449:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAo127.0.0.1d]c@anon-20191002_181700-447:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywo127.0.0.1d]c@anon-20191002_181700-448:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAo127.0.0.1d]c@anon-20191002_181700-450:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwo127.0.0.1a[a@anon-20191002_181700-44:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0Cg127.0.0.1#d]c@anon-20191002_181700-446:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0wo127.0.0.1d]c@anon-20191002_181700-445:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAo127.0.0.1d]c@anon-20191002_181700-444:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-Mgo127.0.0.1d]c@anon-20191002_181700-443:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5Da1ZYVGEsbVJOZmI1dCYKMDAyZnNpZ25hdHVyZSBjz-vUfZk1Zkypt5OEijykhRSxh43fSCBn96gcrHzhqAo127.0.0.1d]c@anon-20191002_181700-442:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY5Ni5nNmJVdVc3TVQwd0gKMDAyZnNpZ25hdHVyZSBnyuRDIco-3F101-WmUcWzSotfzDJSJ1tRM1jivmRsOAo127.0.0.1  w +VjeQa9$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "stream_ordering": 2293}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"], "prev_events": ["$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc"], "type": "m.room.member", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-415", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-415:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042513642, "hashes": {"sha256": "fFaq2H+MGQHgs/iT10WeNkQa2rtBin0p56Myy/mmmRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DNBaB7LCT3JtwyG7Wx/0LCEmpRlDQCC3cb3zdj0jfweBK558CPC9Qg8HbjrIV9jbjGTcNUHtqr4hlZoOKnUgDA"}}, "unsigned": {"age_ts": 1570042513642}}nieQai$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2292}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg"], "type": "m.room.name", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042512811, "hashes": {"sha256": "4AU+arNG0MxjZBHqeBNBkN6XpgbmtMUCXHgaXrB/njA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nJmfXgbi4haY8i2Bb9xPYJ3dB38/J+2/euoBNZIXythYHY3qaUD2kXlXpYJ3UUxSmi0QmIYuynU9yoocSbSqAg"}}, "unsigned": {"age_ts": 1570042512811}}HheQa$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2291}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg"], "type": "m.room.test", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042512368, "hashes": {"sha256": "WJaMK5OvZ3y8x4qj0csX/ar0IXaM0bzU38A5QipYEzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QNPHZ/QUUoPdrcCnot55E0RcRwBxQtVRAiEPwnF5QTil9QeBO/mBVUN9ZzcHHF2P05ucNlIRzKfZxatNFp5/Bg"}}, "unsigned": {"age_ts": 1570042512368}}geQa$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2290}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"], "type": "m.room.history_visibility", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042511135, "hashes": {"sha256": "2Vt6kjtY2vbThmrDktqd9IpGW4BgOT4S01WTp3wm8q8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W66Rtj5XVTGbHLg+/6rhekrSvty89LA/KbeuAp32KwCXWM5LC1yFDQdm0flhmq8880lW3mpBZb3GrySVD24HDw"}}, "unsigned": {"age_ts": 1570042511135}} a} { y w u sqomkigeca~7eeQ$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~6eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800~5eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~4eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~3eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800~2eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~1eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~0eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~/eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~.eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~-eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~,eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~+eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~*eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~)eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~(eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~'eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~&eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~%eeQ$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~$eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800~#eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~"eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~!eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800~ eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800 HMt P  J nYb h6 V $    \ * | 'S! v>yGA< 0 MA 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y 1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho m1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EQ1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMI1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObww1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwv1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwu1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y 1e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo1e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w 1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY 1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAY1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMA1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0_1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0^1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMH1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMG1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUh1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA\1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMC1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMB1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUi1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs-1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs,1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc "1e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3EA1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E@1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E?1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA^1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA]1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I D21e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUj1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs.1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho k1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 ~1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 }1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 | 21e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAWp21e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho l1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAX821e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EP1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EO1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4d1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0]1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 !uq|  A # . Xdo'4?Dhu 0Q']e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-428:localhost:8800$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoa/Q# e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.name$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dso.Q? e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.history_visibility$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kg-Q/ e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.join_rules$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYi,Q3 e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU +Q']e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4c*Q' e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.create$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ )Q']e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-426:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE (Q']e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-425:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Qa'Q# e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.name$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4Eo&Q? e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.history_visibility$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Eg%Q/ e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.join_rules$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMi$Q3 e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.power_levels$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo #Q']e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-424:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIc"Q' e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco !Q']e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k Q']e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEaQ# e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.name$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsoQ? e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibility$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEgQ/ e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rules$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEiQ3 e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU Q']e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMcQ' e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM Q']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE Q']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisaQ# e!AMLmLqizBFklpqKibP:localhost:8800m.room.name$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUoQ? e!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibility$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGogQ/ e!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rules$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIiQ3 e!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4 Q']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kcQ' e!AMLmLqizBFklpqKibP:localhost:8800m.room.create$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y Q']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY Q']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4 [[3 }U-X0h@`pH X 0  h @  x P ( ` 8  p H xP(`8pH mE8'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wAyboOFgsOPwkmgMAI:localhost:88009'Q!wCsDjKBtuUbrmZgjsB:localhost:88008'Q!wAyboOFgsOPwkmgMAI:localhost:8800>'Q!wAyboOFgsOPwkmgMAI:localhost:8800='Q!wAyboOFgsOPwkmgMAI:localhost:8800<'Q!wAyboOFgsOPwkmgMAI:localhost:8800;'Q!wAyboOFgsOPwkmgMAI:localhost:8800:&Q!wvnfKBSrUlfNmYoeil:localhost:8800y&Q!wvnfKBSrUlfNmYoeil:localhost:8800x&Q!wvnfKBSrUlfNmYoeil:localhost:8800w'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 -'Q!whuymJoLfUdkFdxoyE:localhost:8800 ,'Q!whuymJoLfUdkFdxoyE:localhost:8800 +'Q!whuymJoLfUdkFdxoyE:localhost:8800 *'Q!whuymJoLfUdkFdxoyE:localhost:8800 )'Q!whuymJoLfUdkFdxoyE:localhost:8800 ('Q!whuymJoLfUdkFdxoyE:localhost:8800 ''Q!whuymJoLfUdkFdxoyE:localhost:8800 &'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800a'Q!wLitJYvgvNJzanSIvO:localhost:8800`'Q!wLitJYvgvNJzanSIvO:localhost:8800_'Q!wLitJYvgvNJzanSIvO:localhost:8800^'Q!wLitJYvgvNJzanSIvO:localhost:8800]'Q!wLitJYvgvNJzanSIvO:localhost:8800\'Q!wIhMbfQzYbJobPdwyi:localhost:8800~'Q!wIhMbfQzYbJobPdwyi:localhost:8800}'Q!wIhMbfQzYbJobPdwyi:localhost:8800|'Q!wIhMbfQzYbJobPdwyi:localhost:8800{'Q!wIhMbfQzYbJobPdwyi:localhost:8800z'Q!wIhMbfQzYbJobPdwyi:localhost:8800y('Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 +eX^ k x ' 4 A N [ hu$1>Ker!P]Q@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800P]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800aP]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800`P]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800_P]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800^P]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800]P]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800P]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800P]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800P]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800P]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800P]Q@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800P]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800P]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800~P]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800}P]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800|P]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800{P]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800zP]Q@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800yP]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800xP]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800wP]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800vP]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800uP]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800tP]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800rP]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800qP]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800pP]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800oP]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800nP]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800mP]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800lP]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800kP]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800jP]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800iP]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800hP]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800gP]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800fP]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800eP]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800dP]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800cP]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800b N?> I L   O U  X   [ a!i-l0|@CG RP=R ]  @anon-20191002_181700-447:localhost:8800m&\T>Q ]  @anon-20191002_181700-446:localhost:8800m&\ "9P ]@anon-20191002_181700-446:localhost:8800a&\9O ]@anon-20191002_181700-447:localhost:8800a&\>N ]  @anon-20191002_181700-445:localhost:8800m&\>K ]@anon-20191002_181700-443:localhost:8800m&\=L ]  @anon-20191002_181700-444:localhost:8800m&\V 9M ]@anon-20191002_181700-445:localhost:8800a&\>J ]  @anon-20191002_181700-442:localhost:8800m&\9I ]@anon-20191002_181700-444:localhost:8800a&\9H ]@anon-20191002_181700-443:localhost:8800a&\9G ]@anon-20191002_181700-442:localhost:8800a&\=F ]  @anon-20191002_181700-441:localhost:8800m&\W=E ]  @anon-20191002_181700-440:localhost:8800m&\W=D ]  @anon-20191002_181700-439:localhost:8800m&\V=C ]  @anon-20191002_181700-438:localhost:8800m&\V=B ]  @anon-20191002_181700-437:localhost:8800m&\V>A ]  @anon-20191002_181700-436:localhost:8800m&\ 9@ ]@anon-20191002_181700-441:localhost:8800a&\9? ]@anon-20191002_181700-440:localhost:8800a&\9> ]@anon-20191002_181700-439:localhost:8800a&\9= ]@anon-20191002_181700-437:localhost:8800a&\9< ]@anon-20191002_181700-436:localhost:8800a&\9; ]@anon-20191002_181700-438:localhost:8800a&\=: ]  @anon-20191002_181700-435:localhost:8800m&\V=9 ]  @anon-20191002_181700-434:localhost:8800m&\V>8 ]  @anon-20191002_181700-433:localhost:8800m&\97 ]@anon-20191002_181700-434:localhost:8800a&\96 ]@anon-20191002_181700-433:localhost:8800a&\95 ]@anon-20191002_181700-435:localhost:8800a&\=4 ]  @anon-20191002_181700-432:localhost:8800m&\V=3 ]  @anon-20191002_181700-431:localhost:8800m&\V>2 ]  @anon-20191002_181700-430:localhost:8800m&\ 91 ]@anon-20191002_181700-432:localhost:8800a&\90 ]@anon-20191002_181700-431:localhost:8800a&\>- ] @anon-20191002_181700-428:localhost:8800m&\&=. ]  @anon-20191002_181700-429:localhost:8800m&\V 9/ ]@anon-20191002_181700-430:localhost:8800a&\>, ]  @anon-20191002_181700-427:localhost:8800m&\9+ ]@anon-20191002_181700-429:localhost:8800a&\9* ]@anon-20191002_181700-428:localhost:8800a&\>' ] @anon-20191002_181700-425:localhost:8800m&\&=( ]  @anon-20191002_181700-426:localhost:8800m&\V 9) ]@anon-20191002_181700-427:localhost:8800a&\>& ]  @anon-20191002_181700-424:localhost:8800m&\9% ]@anon-20191002_181700-426:localhost:8800a&\9$ ]@anon-20191002_181700-424:localhost:8800a&\>! ] @anon-20191002_181700-421:localhost:8800m&\&=" ]  @anon-20191002_181700-422:localhost:8800m&\VE9# ]@anon-20191002_181700-425:localhost:8800a&\> ]  @anon-20191002_181700-420:localhost:8800m&\9 ]@anon-20191002_181700-423:localhost:8800a&\9 ]@anon-20191002_181700-421:localhost:8800a&\9 ]@anon-20191002_181700-422:localhost:8800a&\> ] @anon-20191002_181700-418:localhost:8800m&\= ]  @anon-20191002_181700-419:localhost:8800m&\V9 ]@anon-20191002_181700-420:localhost:8800a&\> ]  @anon-20191002_181700-417:localhost:8800m&\9 ]@anon-20191002_181700-419:localhost:8800a&\9 ]@anon-20191002_181700-417:localhost:8800a&\> ] @anon-20191002_181700-415:localhost:8800m&\ 2> ] @anon-20191002_181700-416:localhost:8800m&\L9 ]@anon-20191002_181700-418:localhost:8800a&\  &neQu$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "txn_id": "433", "stream_ordering": 2297}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "prev_events": ["$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042517033, "hashes": {"sha256": "Jtgp3ifSLYphf4UbrtV2uqZX+M5s/fVb8fsCaXEO56w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZfBahrzLtyMUl5qxN5m37+mYfbY2tCjeaYj5JniApY2zO6jf8bzv+0HfTogeek7u+UUnaM00U71vcFz4OqrpCQ"}}, "unsigned": {"age_ts": 1570042517033}}meQu$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "txn_id": "432", "stream_ordering": 2296}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "prev_events": ["$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"body": "Message 1", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042516391, "hashes": {"sha256": "ZaTz44DLi8/LbjEsssgp57smsuDwUESTTOW6FqsSVSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vXFxJUMmrCnGpq/uzKXc2+V7xpYYyqvNFub8DSKb12J9Un4due1UzlkuNqJmizFzkT0w6FABDvGIPwXpUzQ8AA"}}, "unsigned": {"age_ts": 1570042516391}}leQy$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 433, "txn_id": "431", "stream_ordering": 2295}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY"], "prev_events": ["$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-416:localhost:8800", "content": {"msgtype": "m.text", "body": "Hello world"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042515782, "hashes": {"sha256": "OIslmMgxWJncYlfM0cdQCXcfNmWf/3atazK8FqfJId8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T8HkF0PvdMME77OQQoV6PGqEXI8XA2PQKr1VEoYPFGvk+frnD+1Sto5MY2vvW72QwAscxOd22Dr7r/wTCA7dDw"}}, "unsigned": {"age_ts": 1570042515782}}VkeQa9$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 433, "stream_ordering": 2294}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"], "prev_events": ["$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "type": "m.room.member", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-416:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-416", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-416:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042514669, "hashes": {"sha256": "9RLJHrYSqnKrGZnkB2/75b7xdqDzr0/+Q0xHQMRtgsU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wKMdv2RzmDx2mnBV9mUbpz0jUQ/JRVmTv4X9D0p/2FHLjZ1bPi+GfwBwybW293jQ2Eh9gwqCJbnMVaoHz0b1Dg"}}, "unsigned": {"age_ts": 1570042514669}} 9HW%j83p> ?  v D  | K  Sw ! _ - Y} ' ]+QKEq1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA<1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs 1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs 1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UI1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UH1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY>1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4R1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY@1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY?1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA=1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAP1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAO1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAN1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYA1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkw1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkv1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIku1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs ed1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA21e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs ~1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs }1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe01e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe01e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY)1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY(1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY E1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY D1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY C1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egU1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egT1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egS1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE\1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE[1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEZ1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu81e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu81e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4Q -RM H C > 9 4/*|%w rmhc TbQe &!yTQmLDAxZscWKLMSWh:localhost:8800$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUTaQe %!yTQmLDAxZscWKLMSWh:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4T`Qe $!yTQmLDAxZscWKLMSWh:localhost:8800$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQT_Qe #!eWRdwtyqHvuxZFvhNS:localhost:8800$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwT^Qe "!eWRdwtyqHvuxZFvhNS:localhost:8800$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUykT]Qe !!eWRdwtyqHvuxZFvhNS:localhost:8800$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAET\Qe !eWRdwtyqHvuxZFvhNS:localhost:8800$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8T[Qe !eWRdwtyqHvuxZFvhNS:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlETZQe !eWRdwtyqHvuxZFvhNS:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QTYQe !eWRdwtyqHvuxZFvhNS:localhost:8800$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ETXQe !eWRdwtyqHvuxZFvhNS:localhost:8800$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8TWQe !eWRdwtyqHvuxZFvhNS:localhost:8800$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3ETVQe !eWRdwtyqHvuxZFvhNS:localhost:8800$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMTUQe !eWRdwtyqHvuxZFvhNS:localhost:8800$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoTTQe !eWRdwtyqHvuxZFvhNS:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXITSQe !eWRdwtyqHvuxZFvhNS:localhost:8800$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoTRQe !UGVFuRGyPQmBbGsEDo:localhost:8800$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCATQQe !UGVFuRGyPQmBbGsEDo:localhost:8800$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMTPQe !UGVFuRGyPQmBbGsEDo:localhost:8800$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8TOQe !UGVFuRGyPQmBbGsEDo:localhost:8800$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxETNQe !UGVFuRGyPQmBbGsEDo:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kTMQe !UGVFuRGyPQmBbGsEDo:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxETLQe !UGVFuRGyPQmBbGsEDo:localhost:8800$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsTKQe !UGVFuRGyPQmBbGsEDo:localhost:8800$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyATJQe !UGVFuRGyPQmBbGsEDo:localhost:8800$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BETIQe !UGVFuRGyPQmBbGsEDo:localhost:8800$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoETHQe !UGVFuRGyPQmBbGsEDo:localhost:8800$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUTGQe !UGVFuRGyPQmBbGsEDo:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMTFQe !UGVFuRGyPQmBbGsEDo:localhost:8800$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMTEQe !AMLmLqizBFklpqKibP:localhost:8800$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMTDQe !AMLmLqizBFklpqKibP:localhost:8800$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMITCQe !AMLmLqizBFklpqKibP:localhost:8800$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGATBQe !AMLmLqizBFklpqKibP:localhost:8800$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUTAQe !AMLmLqizBFklpqKibP:localhost:8800$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7MT@Qe !AMLmLqizBFklpqKibP:localhost:8800$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMT?Qe !AMLmLqizBFklpqKibP:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zET>Qe !AMLmLqizBFklpqKibP:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisT=Qe !AMLmLqizBFklpqKibP:localhost:8800$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUT<Qe !AMLmLqizBFklpqKibP:localhost:8800$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQT;Qe!AMLmLqizBFklpqKibP:localhost:8800$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGoT:Qe!AMLmLqizBFklpqKibP:localhost:8800$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIT9Qe!AMLmLqizBFklpqKibP:localhost:8800$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4T8Qe!AMLmLqizBFklpqKibP:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kT7Qe!AMLmLqizBFklpqKibP:localhost:8800$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0YT6Qe!rWGwSSefrZzQYCYFHs:localhost:8800$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE  v kreQac$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2301}{"auth_events": ["$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "type": "m.room.power_levels", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"users": {"@anon-20191002_181700-417:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042521803, "hashes": {"sha256": "bbeC5ciphOZue3utLPMpkoDTTkWD6Qcr5Ki1JlkuN6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r0u5NgLw7IN+2xIS+TSReO2pzARioJDCBQzkGfqVs5e/w3tnr9/UMufzoVHPg8GqOKeSq27bK4drfCc74MF4AQ"}}, "unsigned": {"age_ts": 1570042521803}}vqeQay$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2300}{"auth_events": ["$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y"], "prev_events": ["$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y"], "type": "m.room.member", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-417", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-417:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042521198, "hashes": {"sha256": "ElJzSUFd8LzmccYdDESKxhA3LdtPQilURs3g0cc5YDQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r6H+A/fNROknFWW7/77v5rUL4wPoPmzd6mCRqQjYsBD9g19eBj+QNggty++QL5HsNfHQApXN17iA40GlC1DFBA"}}, "unsigned": {"age_ts": 1570042521198}}ipeQa_$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2299}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-417:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042520451, "hashes": {"sha256": "lTP4CeAWrHHpS0QZKL+mcEbFMgUWQ31YAVQnYVVN/JY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZGB+2Etaqj9XhzOaNzjEgKOLerY6kPoVmN9EUresgyvW0YnXiKyI6NK2pWPaROCdIE8qAPcwJy0xDUdpQ/mRDA"}}, "unsigned": {"age_ts": 1570042520451}}oeQu$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "txn_id": "434", "stream_ordering": 2298}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "prev_events": ["$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042517496, "hashes": {"sha256": "hmahNd97Qj7O7Wsc5CE2FdQ/nuNX9lzq9M5n94zLoj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F5OOrGfIpOwaeuXqwVgDDS5bFgtmjjvMnxhClMKQV7wTEJp1XnKlzCl3IiH+ET9oMNJk2/jY2deiOqyY7gT6Dw"}}, "unsigned": {"age_ts": 1570042517496}} ~z v r n j fb^ZVRNJFGeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800FeeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800EeeQ$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800DeeQ$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800CeeQ$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800BeeQ$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800AeeQ$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800@eeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800?eeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800>eeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA!UGVFuRGyPQmBbGsEDo:localhost:8800=eeQ$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800<eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800;eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800:eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:88009eeQ$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:88008eeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:88007eeQ$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:88006eeQ$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:88005eeQ$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:88004eeQ$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:88003eeQ$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:88002eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:88001eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:88000eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ!AMLmLqizBFklpqKibP:localhost:8800/eeQ$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800.eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800-eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800,eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800+eeQ$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800*eeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800 L  y H  r7 P   V $i  \ * b 0p> 5wE~LS![)a/gk:1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQd0e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wk1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8N1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIH1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4B1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0A1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I<1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc21e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI11e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k+1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv00e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcb0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY0e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE&1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM.1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYi1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQz1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4q0e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUC1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A0e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4<1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz01e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xoa0e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Eo1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ40e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEC1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwW1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM81e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUt1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qc1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR940e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkB1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM0e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0~0e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQT1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k}1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4c1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4ov1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwr1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQo1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk0e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUM1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg{0e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY}1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y A AnveQai$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2305}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ"], "type": "m.room.name", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042524903, "hashes": {"sha256": "s0UO7MxXt9k34wlzXmqe6bdaoOuiZU0BdS8luPnmHeU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gstmsIDw0gB8v0UuS7h69l8VmK2pTfBDTamMlWlGm9t8BOxc8LXxYl8ZCxiWBSD8GdbPz6j/O70ocTSFtBL9AQ"}}, "unsigned": {"age_ts": 1570042524903}}HueQa$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2304}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo"], "type": "m.room.test", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042524301, "hashes": {"sha256": "y6Kfbx/Ez6xNsATAnsCNmD+vOva0dY0sRlnsSJC0yiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SQSQKs7fGogqI0I+9FFUYMI1iv+OhxhZ16e1CCB/rsBvStNqbCO0VlhWdkDLwIoLfXli6TVS1Dbwy31VTKnbDg"}}, "unsigned": {"age_ts": 1570042524301}}teQa$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2303}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI"], "type": "m.room.history_visibility", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042523170, "hashes": {"sha256": "BXzzzq0xooFwBBEA8u0bgUX5lAxxcZ/U0V8IrcAualg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VyYwjRdh4WH0gTACgK3on3E4k39Zdr2Xdlwo1PKteLt4Rch7z/ag/GUNqX+JLSNKe9ax2xIkNdr2KBV/JstkBA"}}, "unsigned": {"age_ts": 1570042523170}}tseQau$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2302}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4"], "type": "m.room.join_rules", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042522577, "hashes": {"sha256": "44xElXHJDbw1A74wYf+BKexfqZxT+L8UXYH+Ws/vzHc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m0YneecatTdMlrIbHD1+mucbgojCBS5iTYTF8/tpRRJbz7yMFCxeq80KYaRdqmhNegGiVBgV01nf4x5qp6ybAg"}}, "unsigned": {"age_ts": 1570042522577}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1.e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1-e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU1,e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1+e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1*e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1)e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs1(e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV41'e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701&e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1%e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1$e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI1#e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1"e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41!e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw1 e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s1e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX81e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k1 e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY1 e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU1 e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR41 e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ1 e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk1e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE81e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l81e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo1~e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1}e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco1|e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA1{e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM1ze$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT81ye$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE1xe$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k1we$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1ve$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os1ue$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA1te$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE1se$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE1re$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU1qe$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1pe$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1oe$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1ne$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1me$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1le$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1ke$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1je$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1ie$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1he$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis1ge$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1fe$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1ee$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo1de$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI 8 &L8zeQu$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "436", "stream_ordering": 2309}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042528017, "hashes": {"sha256": "FOkHQsApTf4YFlLgcdtZ/xvwMfmC1l04K1bdhMrIfNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bg71FNGmtI/2zVBbXCC9w+Z6+1j9j1xGfO0njVPm22NSHn17kh8J6rXRE6yaNNuh1yxiQiDtjRvsgaL06eKFCg"}}, "unsigned": {"age_ts": 1570042528017}}yeQu$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "435", "stream_ordering": 2308}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042527339, "hashes": {"sha256": "7ZSjWjLRWbXWgJcsvf8ZFcFKKAPLDiNyogEp6JbEqns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GeWTVQgIOvX9O6facU+E2Z5wCkNw3EIznuTk1QJsYtNPMxdltxR445gxNEMkpcQUeSTUvhgxf+JLtHeVPb7PDA"}}, "unsigned": {"age_ts": 1570042527339}}VxeQa9$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 436, "stream_ordering": 2307}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI"], "prev_events": ["$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "type": "m.room.member", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-419:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-419", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-419:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042526546, "hashes": {"sha256": "0GrcRtIRY6tpFl5GDvhPZcwoLJ6tQH87f9rqs7/bjZc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lBcPBPIOemerXK8Ynf9P3vxIaaPb5xpWtVWHa3Wbc1UfHHSltYQ74VqD0aWbpn2dG0T/lfjTYxvCCkZN5EwdBg"}}, "unsigned": {"age_ts": 1570042526546}}VweQa9$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "stream_ordering": 2306}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI"], "prev_events": ["$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU"], "type": "m.room.member", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-418", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-418:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042525718, "hashes": {"sha256": "OvQZZ2CB8fDBXfBZGuv6KZunkW/TSDkU0eosSB20wdo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wVg2mQyYmOsQFusG7JSxZ9KqTos/av4gcbsj462JbIz4zgnDGtrra2FYafFAGaffIYQCIRQx0x5h5uTld7VuCA"}}, "unsigned": {"age_ts": 1570042525718}} ~\ m # ~ 8 6N`t&~$e/Q ]$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMm.room.join_rules!eWRdwtyqHvuxZFvhNS:localhost:8800m m @anon-20191002_181700-424:localhost:8800&e3Q ]$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYom.room.power_levels!eWRdwtyqHvuxZFvhNS:localhost:8800m km @anon-20191002_181700-424:localhost:8800 e'Q ]$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIm.room.member!eWRdwtyqHvuxZFvhNS:localhost:8800mm@anon-20191002_181700-424:localhost:8800 e'Q  ]$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcom.room.create!eWRdwtyqHvuxZFvhNS:localhost:8800mm@anon-20191002_181700-424:localhost:8800!e)Q ] $7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCAm.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mm@anon-20191002_181700-421:localhost:8800!e)Q ] $xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMm.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mwm@anon-20191002_181700-421:localhost:8800!e)Q ] $lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8m.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mjmr@anon-20191002_181700-421:localhost:8800!e)Q ] $sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEm.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mm@anon-20191002_181700-421:localhost:8800 e'Q ] $3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1km.room.member!UGVFuRGyPQmBbGsEDo:localhost:8800 m=m@anon-20191002_181700-422:localhost:8800 e'Q ]$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEm.room.member!UGVFuRGyPQmBbGsEDo:localhost:8800mm@anon-20191002_181700-421:localhost:8800e#Q ]$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Osm.room.name!UGVFuRGyPQmBbGsEDo:localhost:8800mmM@anon-20191002_181700-420:localhost:8800e#Q ]$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyAm.room.test!UGVFuRGyPQmBbGsEDo:localhost:8800mm@anon-20191002_181700-420:localhost:8800,e?Q ]$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEm.room.history_visibility!UGVFuRGyPQmBbGsEDo:localhost:8800m3mA@anon-20191002_181700-420:localhost:8800$ e/Q ]$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEm.room.join_rules!UGVFuRGyPQmBbGsEDo:localhost:8800m2mޜ@anon-20191002_181700-420:localhost:8800& e3Q ]$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUm.room.power_levels!UGVFuRGyPQmBbGsEDo:localhost:8800m^m۶@anon-20191002_181700-420:localhost:8800 e'Q ]$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMm.room.member!UGVFuRGyPQmBbGsEDo:localhost:8800mm[@anon-20191002_181700-420:localhost:8800  e'Q  ]$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMm.room.create!UGVFuRGyPQmBbGsEDo:localhost:8800mm^@anon-20191002_181700-420:localhost:8800! e)Q ]$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMm.room.message!AMLmLqizBFklpqKibP:localhost:8800mm@anon-20191002_181700-418:localhost:8800!e)Q ]$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMIm.room.message!AMLmLqizBFklpqKibP:localhost:8800mm@anon-20191002_181700-418:localhost:8800!e)Q ] $DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGAm.room.message!AMLmLqizBFklpqKibP:localhost:8800 mm@anon-20191002_181700-418:localhost:8800!e)Q ] $Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUm.room.message!AMLmLqizBFklpqKibP:localhost:8800 m»m@anon-20191002_181700-418:localhost:8800!e)Q ] $k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7Mm.room.message!AMLmLqizBFklpqKibP:localhost:8800 mm@anon-20191002_181700-418:localhost:8800!e)Q ] $KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMm.room.message!AMLmLqizBFklpqKibP:localhost:8800 mӾkmӿ@anon-20191002_181700-418:localhost:8800 e'Q ] $aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEm.room.member!AMLmLqizBFklpqKibP:localhost:8800 mӻRmӻ@anon-20191002_181700-419:localhost:8800  vb~eQu$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "440", "stream_ordering": 2313}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 6"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042530299, "hashes": {"sha256": "ALBFA1kxC6XHYfWxx/kK2Kgvq3EP0E1m8B0NSXqIXOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tcZLfCAogqYTt8UCBXYKEGmicswCsBfTlaghkubxDZ3HmqXUYl/k2CshEB5lgxGIjxjYkJS9n8GYb2VbAEJfBg"}}, "unsigned": {"age_ts": 1570042530299}}}eQu$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "439", "stream_ordering": 2312}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042529784, "hashes": {"sha256": "777NCizjwuj2l8H2bDjuSDOKonTnem7wIyOjd4Pu1W8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UhbGOnpWSQVZQCQaPF0bKltzb9KjqI2I7FahIraDUub2udgA8B1ilw2Hr62G3LOJNy26JR6VOk/R1rXjZrcAAg"}}, "unsigned": {"age_ts": 1570042529784}}|eQu$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "438", "stream_ordering": 2311}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042528960, "hashes": {"sha256": "Z2P5+225cu7CHYBqWBNYBrIMVaO2jE58rNg+ku4GN1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iEN3C7EixaNm33MXOFqlvDaG5zslp5VklenCBbAyzAXh9IdeK79vOsyMOPu925MBxJv80bapplEGUccGnfDbBQ"}}, "unsigned": {"age_ts": 1570042528960}}{eQu$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "437", "stream_ordering": 2310}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042528443, "hashes": {"sha256": "zcFPoHOTnZY1ZlJhkjI9UQVBTdWCJ4xbqN/y9eIJSGM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HgBYLjV79D28KCwNmn66S5m2DG5mtByai9PhxwFhxvIVFsxWNq81mvGDtJm5UCd4PX7eUyPrGcOuhtBEAjdtCg"}}, "unsigned": {"age_ts": 1570042528443}} 8l D `8$]c!E@anon-20191002_181700-428:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwoXEDNEAYRYK127.0.0.1Perl + Net::Async::HTTP/0.44mF#]c!E@anon-20191002_181700-427:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7CllgoJZIIFMRYCA127.0.0.1Perl + Net::Async::HTTP/0.44m04"]c!E@anon-20191002_181700-426:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAoGGEPZOIJRJ127.0.0.1Perl + Net::Async::HTTP/0.44m!]c!E@anon-20191002_181700-425:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAoTXVBKWCWYM127.0.0.1Perl + Net::Async::HTTP/0.44mۃ ]c!E@anon-20191002_181700-424:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgoZTZZRYHYSR127.0.0.1Perl + Net::Async::HTTP/0.44m΃]c!E@anon-20191002_181700-422:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowoVPDAIJPBTT127.0.0.1Perl + Net::Async::HTTP/0.44mk]c!E@anon-20191002_181700-421:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0egoUDSBEIJMWH127.0.0.1Perl + Net::Async::HTTP/0.44m܃]c!E@anon-20191002_181700-420:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwoPFSCBSPFUQ127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-419:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3goWRAHOCOTZG127.0.0.1Perl + Net::Async::HTTP/0.44mӹ]c!E@anon-20191002_181700-418:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwoUIZEZFRVWZ127.0.0.1Perl + Net::Async::HTTP/0.44mӶw g * T~=gg8]!c@anon-20191002_181700-432:localhost:8800ZOPSRSBYRNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2Qgog7]!c@anon-20191002_181700-431:localhost:8800JIBNPXSTDLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1wog6]!c@anon-20191002_181700-430:localhost:8800EJQMGEXFCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwog5]!c@anon-20191002_181700-429:localhost:8800OXLZZLMFDNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7Qog4]!c@anon-20191002_181700-428:localhost:8800XEDNEAYRYKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwog3]!c@anon-20191002_181700-427:localhost:8800JZIIFMRYCAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7Cllgog2]!c@anon-20191002_181700-426:localhost:8800GGEPZOIJRJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAog1]!c@anon-20191002_181700-424:localhost:8800ZTZZRYHYSRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgog0]!c@anon-20191002_181700-425:localhost:8800TXVBKWCWYMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAog/]!c@anon-20191002_181700-423:localhost:8800LYUZSTXPZRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHorO0g7Y3pjeU5hT1JYbDUKMDAyZnNpZ25hdHVyZSDe3Y0t8ijjLdfk7SzErUv9v-bCc_iVroIMJTor_bCpmgog.]!c@anon-20191002_181700-421:localhost:8800UDSBEIJMWHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0ego   *teQau$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2317}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU"], "type": "m.room.join_rules", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042535218, "hashes": {"sha256": "5KGen/+P5R7AOK1rZfP7DKG4nQufRiUFrBWjSNpTBsE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "giwPtkzkDiG6iHYPB502aV2R3LO67LR5WOTNiD4nleADfW3Wn/C9GV1QWyjnDPw5505imLtivVwt9WIQsQNOCA"}}, "unsigned": {"age_ts": 1570042535218}}keQac$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2316}{"auth_events": ["$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "type": "m.room.power_levels", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"users": {"@anon-20191002_181700-420:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042534494, "hashes": {"sha256": "MM5Fny44Sc9nxfjQ+o7f8Taj1aWy7PoE9SUxmnPJ1Gs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VfKv6wvcFBQCMjYdiSnu53mDaA9hKFCoDnlEP3ZX9cjUaQA6OcqLmYZ3tA0l+cUleCAGFEfPxM2Zj/anbVe0AA"}}, "unsigned": {"age_ts": 1570042534494}}veQay$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2315}{"auth_events": ["$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM"], "prev_events": ["$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM"], "type": "m.room.member", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-420", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-420:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042533850, "hashes": {"sha256": "J4I/Q2DJjjFk3TXqEkelb296/VnCey71+xHwsSJjU+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DLn+9e12xcPAr6GM0DAz0b+gc3HUN1e+X+PXbCe6xr74lj6Oy3eSub3YA03g2OwdhocLtblaOW2dyV9PMf1PCw"}}, "unsigned": {"age_ts": 1570042533850}}ieQa_$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2314}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-420:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042532858, "hashes": {"sha256": "/N+yEiHDRxtudHqATraypuyGu4ap2oIpXtUgIH/vCXY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/jx8pPQLhW64qK3UVBpYp+cdVaUTHi9lPJZGl6LkCxw2JuZ5ra8RXSDCS1EyeMlGXhpx106XokzGHoPklnGMAA"}}, "unsigned": {"age_ts": 1570042532858}} t9r  V :sW;tC e]]Q=$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ@anon-20191002_181700-440:localhost:8800@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-440C e]]Q=$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs@anon-20191002_181700-439:localhost:8800@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-439C e]]Q=$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug@anon-20191002_181700-438:localhost:8800@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-438C~ e]]Q=$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM@anon-20191002_181700-437:localhost:8800@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-437C} e]]Q=$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs@anon-20191002_181700-436:localhost:8800@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-436C| e]]Q=$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70@anon-20191002_181700-435:localhost:8800@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800joinanon-20191002_181700-435C{ e]]Q=$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM@anon-20191002_181700-434:localhost:8800@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800joinanon-20191002_181700-434Cz e]]Q=$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s@anon-20191002_181700-433:localhost:8800@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800joinanon-20191002_181700-433Cy e]]Q=$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw@anon-20191002_181700-432:localhost:8800@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800joinanon-20191002_181700-432Cx e]]Q=$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo@anon-20191002_181700-431:localhost:8800@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800joinanon-20191002_181700-431Cw e]]Q=$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs@anon-20191002_181700-430:localhost:8800@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800joinanon-20191002_181700-430Cv e]]Q=$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs@anon-20191002_181700-429:localhost:8800@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800joinanon-20191002_181700-429Cu e]]Q=$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo@anon-20191002_181700-428:localhost:8800@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800joinanon-20191002_181700-428Ct e]]Q=$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4@anon-20191002_181700-427:localhost:8800@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800joinanon-20191002_181700-427Cs e]]Q=$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE@anon-20191002_181700-426:localhost:8800@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800joinanon-20191002_181700-426Cr e]]Q=$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q@anon-20191002_181700-425:localhost:8800@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800joinanon-20191002_181700-425Cq e]]Q=$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI@anon-20191002_181700-424:localhost:8800@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800joinanon-20191002_181700-424Cp e]]Q=$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k@anon-20191002_181700-422:localhost:8800@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800joinanon-20191002_181700-422Co e]]Q=$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE@anon-20191002_181700-421:localhost:8800@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800joinanon-20191002_181700-421Cn e]]Q=$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM@anon-20191002_181700-420:localhost:8800@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800joinanon-20191002_181700-420 a} { y w u sqomkigeca~VeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~UeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~TeeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~SeeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~ReeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~QeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~PeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~OeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~NeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~MeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~LeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~KeeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~JeeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~IeeQ$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~HeeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800~GeeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~FeeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~EeeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800~DeeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~CeeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~BeeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~AeeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~@eeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~?eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~>eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~=eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~<eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~;eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~:eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~9eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~8eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V,eL$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCosha256c_,- ee&* *V+eL$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wsha256oUcN#+ S ZJ)J}Arsķ-Wx,TaV&eL$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQEsha256ǹ]_>+l!ѕg'X4!V%eL$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUssha256@dp5p0j֧,bݨ`1ԭ2KV$eL$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhYsha256xclz3q^V?(ԭЅH"V#eL$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rwsha256>!n-5ѭ Rxo;~V"eL$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6Asha256!Jԯ-\ZL8>5YϠV!eL$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGssha256>XD;$8/eRr*{ir9kV eL$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuosha256aSWqo.Fv`?!VeL$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dssha256zX7̝ɡr|4"}0YdCG?&ံўYfVeL$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0Msha256j)BR^Lm5`(YQc,?CVeL$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9ksha256sqVi C>.ޟ/VeL$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYsha256t:@qҷ'CN&VeL$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUsha256ZQn*}Rg*9V[4VeL$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4sha256QTɭc zok^VeL$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQsha256p =9̧XQ/}})̴VeL$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwsha256-2J ְ o%SېfƳ=|VeL$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyksha256PD lSAmv r쉥ӔҬS)VeL$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEsha256G}ksDPЅL"爳M$|VeL$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8sha256&G'#E$Q49IQ*S;@ (o7}_VeL$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Esha256Uo6;7U} {qVeL$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMsha256|_5Iu-= ֲ#VeL$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYosha2567Mi l7/fc>FՒEV eL$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIsha256[@_kC16{.BSK ^#J0myȕrV eL$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcosha256i;p %-_{> %V eL$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCAsha256nOkGA| U3'U V eL$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMsha2561Q1S t)JLoH;f/zK V eL$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8sha2564k퀔h,˪ {EM?VeL$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEsha256Hh+;9 vUxVeL$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1ksha256ܒl\F.# JH˓YVeL$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEsha256oZ.}]n9)3L@VeL$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Ossha2561D>{.B|bD*s~I(VeL$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyAsha256i(a#7HM j1<ͼ:{ VeL$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEsha256j〪6HjL"#KnG"VeL$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEsha2563vh4Z,/p d-\)p[ sYrUQVeL$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUsha256<`&)^q`H @]폅ov|Q f(5 @ E m z "P.9gfqv eQ']$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-431:localhost:8800joinmeQ? $-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800m.room.history_visibilityeeQ/ $fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800m.room.join_rulesgeQ3 $-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800m.room.power_levels eQ']$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-430:localhost:8800joinaeQ' $x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800m.room.create eQ']$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-429:localhost:8800join eQ']$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-428:localhost:8800join_eQ# $elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800m.room.namemeQ? $vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800m.room.history_visibilityeeQ/ $gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800m.room.join_rulesgeQ3 $yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels eQ']$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800joinaeQ' $qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800m.room.create eQ']$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-426:localhost:8800join eQ']$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-425:localhost:8800join_ eQ# $tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.namem eQ? $GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.history_visibilitye eQ/ $fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.join_rulesgeQ3 $tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.power_levels eQ']$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-424:localhost:8800joinaeQ' $-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create eQ']$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800join eQ']$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800join_eQ# $gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.namemeQ? $auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibilityeeQ/ $mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rules  w +VeQa9$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "stream_ordering": 2321}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE"], "prev_events": ["$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os"], "type": "m.room.member", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-421", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-421:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042538631, "hashes": {"sha256": "U/OG+1qlPs+VxLV6hHA6lhPVRmBS5Joih6z5ATvAmvo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3xLyCkMnF1mlqWwyGzNLiXxft+ZIpTreYK3tXifCekr0F4q0/3q1m4pA1CEplauEtfVGc3giYGilBHQxPkSvCg"}}, "unsigned": {"age_ts": 1570042538631}}neQai$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2320}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA"], "type": "m.room.name", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042537712, "hashes": {"sha256": "vO0wBmHDNWm5QMs+WHB0CAAFbxWRVlJIoJn3k4+2Rj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6sPsc/IsDmq7avGLuL01tIwh3vHZv2fvVMwEgStfKVzdvnehySjgEa0BiA96pC6AMykg24+P/3pP1KQ60jyJCw"}}, "unsigned": {"age_ts": 1570042537712}}HeQa$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2319}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE"], "type": "m.room.test", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042537171, "hashes": {"sha256": "eJT34f0LHO2fBMNLBvXN1zAon5w1dhN6B29YKpxAGc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m2tdAb+yNzLC/OMCL1LdLt9eNHWhQqerAo8ORtOJc49I8hQxlus1DwDLq/zdUQIv5REIBw0GV2dpt6y1L7LcAA"}}, "unsigned": {"age_ts": 1570042537171}}eQa$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2318}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE"], "type": "m.room.history_visibility", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042535987, "hashes": {"sha256": "YTA3JKXmiCur4TVoh/kaayjEbElP/ho56glryKnbQwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fitmrzCh9lvOpbTde7DTCqgV+VjID7wTvmbOvSOgRa2rYPGkToIJQHZFJbb1u3LKlp7K4Prra0li23Ek2JBsAw"}}, "unsigned": {"age_ts": 1570042535987}} RmVh) x c $ r W 4  K .  ] F  X  hSbG$P3bK r3v_ q2eB+ [# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-442:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-441:localhost:8800>']m.room.member@anon-20191002_181700-440:localhost:8800>']m.room.member@anon-20191002_181700-439:localhost:8800>']m.room.member@anon-20191002_181700-438:localhost:8800>']m.room.member@anon-20191002_181700-437:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-436:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-435:localhost:8800>']m.room.member@anon-20191002_181700-434:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-433:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-432:localhost:8800>']m.room.member@anon-20191002_181700-431:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-430:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-429:localhost:8800>']m.room.member@anon-20191002_181700-428:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-427:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-426:localhost:8800>']m.room.member@anon-20191002_181700-425:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-424:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-422:localhost:8800>']m.room.member@anon-20191002_181700-421:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-420:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-419:localhost:8800>']m.room.member@anon-20191002_181700-418:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-417:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-416:localhost:8800>']m.room.member@anon-20191002_181700-415:localhost:8800# m.room.name"? m.room.history_visibility/ ~m.room.join_rules3 }m.room.power_levels>']|m.room.member@anon-20191002_181700-414:localhost:8800' {m.room.create>']zm.room.member@anon-20191002_181700-413:localhost:8800>']ym.room.member@anon-20191002_181700-412:localhost:8800# xm.room.name"? wm.room.history_visibility/ vm.room.join_rules3 um.room.power_levels>']tm.room.member@anon-20191002_181700-411:localhost:8800' sm.room.create>']rm.room.member@anon-20191002_181700-409:localhost:8800>']qm.room.member@anon-20191002_181700-408:localhost:8800# pm.room.name  & eQu$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "443", "stream_ordering": 2325}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042541943, "hashes": {"sha256": "gapY4dkunJjnPzJYSBwwQ4wm8xmkOPducmwQqpPh/lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VVgaqfTHlCv8tz6NJL7Mq8GSW9oW+lfSUpk4L/jMY8eGXSNAdctukuI6S52Pz09JnaeEroCNCG3xkv9uNSpGAA"}}, "unsigned": {"age_ts": 1570042541943}} eQu$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "442", "stream_ordering": 2324}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042541418, "hashes": {"sha256": "8w/Savwxqw4A4WC/6KbaEdcKvj5k+D7IMJzmctsOAyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w2PYllxxcUYiQWfO7Q5XcVi6rKoz+U6eCnWOw8by+0MsiJ8uDFae7v9e2VA6dSgyD6H+vyEGs/w8h4zRPsKnDQ"}}, "unsigned": {"age_ts": 1570042541418}}eQu$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "441", "stream_ordering": 2323}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042540279, "hashes": {"sha256": "BLnSL1+5T05DhY/Mj+MVZ3TFkp0kW5RiTYe4U75/NzE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zF6zCB9R9Sg8LC3/V83vch2xFgaa31RnM7WUzGWAnD0HpGXU06Ju4CUT+90oXcByj5LSBebXzUaCizoUmDxUCg"}}, "unsigned": {"age_ts": 1570042540279}}VeQa9$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 438, "stream_ordering": 2322}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE"], "prev_events": ["$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "type": "m.room.member", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-422:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-422", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-422:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042539581, "hashes": {"sha256": "ctYNHjDZO+m+6Bh9GdaUrjduh9RM17TN5Kuz7BAU1Cw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dtU/59Mcp101gKqxpdH13JxiuXWwLjVRrPiijm9FJrTkgg4iuDkJ09fAjzYU/d0jjUY+7XrIzY2NjpPR8H2XBA"}}, "unsigned": {"age_ts": 1570042539581}} #I; sAyG P    v D  J Ma p> )/ S! |jY'mg5 [11e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94ID1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IC1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IB1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA91e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA81e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYm1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYl1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYk1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM]1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM\1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM[1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkM1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4 h1e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo1e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo1e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY #1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI 1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI 1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI 1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts 1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0 1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcp1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8ol1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs E1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs D1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYL1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8om1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo(1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo'1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo&1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA81e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ21e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ11e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ01e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8on1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYM1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw v1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw u1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM71e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ01e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ01e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ021e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw t  v keQac$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 442, "stream_ordering": 2329}{"auth_events": ["$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI"], "prev_events": ["$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI"], "type": "m.room.power_levels", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-424:localhost:8800", "content": {"users": {"@anon-20191002_181700-424:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042546539, "hashes": {"sha256": "FxCppFlM7FmakbonAKb33bUSjastSoAh0ajNPtcKJ2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "thM8CgfhECYFiwfRiAgFbfQUoZD0Sp28R5IPLXkhQVfIIb+d+kmkfWz5M4DLw7nDWCMmFtnKR7hkEPXgWxj2AA"}}, "unsigned": {"age_ts": 1570042546539}}v eQay$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 442, "stream_ordering": 2328}{"auth_events": ["$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco"], "prev_events": ["$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco"], "type": "m.room.member", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-424:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-424", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-424:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042545822, "hashes": {"sha256": "4UNf9X/Q1NdqkVuB+1E+MnFc97WCelaF3sN17JVPNwg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wys4QASWquEj661wDCk7bvLPJp7vgcxTqMmZUUHzG+3Hhry/2X533lUPPOWxl65PmRRfB07KIeIRnyxjZQfeCg"}}, "unsigned": {"age_ts": 1570042545822}}i eQa_$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 442, "stream_ordering": 2327}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-424:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-424:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042544812, "hashes": {"sha256": "7OLornzBwfbF4iuQ3KBWr+DjLKX1vLUQG++Yd/Unbh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M9p+9keanN6fOy/FZZzW376p5w5jRU3jlRzow9RjP4ltve8QdanMgfKtrr+CY8VGnP+PS2U6kudQO/F39bSOAQ"}}, "unsigned": {"age_ts": 1570042544812}} eQu$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "444", "stream_ordering": 2326}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042542485, "hashes": {"sha256": "aA4tUw3nCB/i9TnxWdRrEE9UihiHz+XwzOOJ794ef/Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QNQZdK0eE+jfdyexabpF/91PSDwvvptlxywO9eFmNwAqkzf4aheZoXMW6XZvbP3FOF1z46STDv/MQ1TyLsTuBg"}}, "unsigned": {"age_ts": 1570042542485}} LHg;Z-yLsFyLl? ^ 1  ~ Q $ q D  d 7 V )um@,,Q!eZjhYV,,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800+Q !eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!fDISaqNBhlOwherxSt:localhost:8800 { {,Q!fDISaqNBhlOwherxSt:localhost:8800 z z,Q!fDISaqNBhlOwherxSt:localhost:8800 y y+Q !fDISaqNBhlOwherxSt:localhost:8800 x x,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800+Q !edbUkYJIZBNOiTuLJs:localhost:8800,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # #,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " ",Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! !,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  +Q !eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g g,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f f,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e e,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d d,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c c,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b b,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800+Q !eySSVuCclRpBDgwKIU:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800+Q !erBPdgtUsiOfIKUkho:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800 ,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800+Q !egbhiBqOGhloZzopol:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800 ,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800+Q !egCvzKpbEwmuvDoBTb:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 LHg;Z-yLsFyLl? ^ 1  ~ Q $ q D  d 7 V )um@,,Q!eZjhYV,,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800+Q !eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!fDISaqNBhlOwherxSt:localhost:8800 { {,Q!fDISaqNBhlOwherxSt:localhost:8800 z z,Q!fDISaqNBhlOwherxSt:localhost:8800 y y+Q !fDISaqNBhlOwherxSt:localhost:8800 x x,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800+Q !edbUkYJIZBNOiTuLJs:localhost:8800,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # #,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " ",Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! !,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  +Q !eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g g,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f f,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e e,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d d,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c c,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b b,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800+Q !eySSVuCclRpBDgwKIU:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800+Q !erBPdgtUsiOfIKUkho:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800 ,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800+Q !egbhiBqOGhloZzopol:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800 ,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800+Q !egCvzKpbEwmuvDoBTb:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 Ng<T)}R' { P % y N # w L ! u J  s H qFoDmBk@i>e:e<+T*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hgjYwwwjWJNgwrzOto:localhost:8800``*Q!hgjYwwwjWJNgwrzOto:localhost:8800__*Q!hgjYwwwjWJNgwrzOto:localhost:8800^^*Q!hgjYwwwjWJNgwrzOto:localhost:8800]]*Q!hgjYwwwjWJNgwrzOto:localhost:8800\\*Q!hgjYwwwjWJNgwrzOto:localhost:8800[[*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iKezIvJyjkNqKayFju:localhost:8800 q q*Q!iKezIvJyjkNqKayFju:localhost:8800 p p*Q!iKezIvJyjkNqKayFju:localhost:8800 o o*Q!iKezIvJyjkNqKayFju:localhost:8800 n n*Q!iKezIvJyjkNqKayFju:localhost:8800 m m*Q!iKezIvJyjkNqKayFju:localhost:8800 l l*Q!iKezIvJyjkNqKayFju:localhost:8800 k k*Q!iKezIvJyjkNqKayFju:localhost:8800 j j*Q!iKezIvJyjkNqKayFju:localhost:8800 i i*Q!iKezIvJyjkNqKayFju:localhost:8800 h h*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800 ! 0 @ P ` p(8HXhxul ]@anon-20191002_181700-462:localhost:8800$2b$04$hhHMDv3/5hUrvSXlcOnJZOH8YHEB7QsWujagj.Cg6aqotvTycNsPi]@anon-20191002_181700-424:localhost:8800e#Q ]$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8m.room.test!eWRdwtyqHvuxZFvhNS:localhost:8800mm@anon-20191002_181700-424:localhost:8800,e?Q ]$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Em.room.history_visibility!eWRdwtyqHvuxZFvhNS:localhost:8800m&m@anon-20191002_181700-424:localhost:8800 ~z v r n j fb^ZVRNJFeeeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800deeQ$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800ceeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800beeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w!whuymJoLfUdkFdxoyE:localhost:8800aeeQ$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800`eeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800_eeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800^eeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800]eeQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800\eeQ$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800[eeQ$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800ZeeQ$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800YeeQ$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800XeeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800WeeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800VeeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M!yTQmLDAxZscWKLMSWh:localhost:8800UeeQ$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800TeeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800SeeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800ReeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800QeeQ$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800PeeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800OeeQ$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800NeeQ$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800MeeQ$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800LeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800KeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800JeeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8!eWRdwtyqHvuxZFvhNS:localhost:8800IeeQ$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800HeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800 8 &L8eQu$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "446", "stream_ordering": 2337}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042553652, "hashes": {"sha256": "9S5nUhuwHGEqbK3VtZE3woTRfH+LlGssxrUtLX7Q+WU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t+YkhrRjZI8b+P8ZekOSPPL0w+TMEPMHF/dRkJuHBXMYl/QABz/LViWWGhVJCF11cHzZWpQoX3keSIALJ5ObBg"}}, "unsigned": {"age_ts": 1570042553652}}eQu$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "445", "stream_ordering": 2336}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042552798, "hashes": {"sha256": "xWnl7sny+3a++C/ixyOSXkHPAFGst8ibKThgXSeozPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gM29vHJAAzLBCoQUPdsaEFGjDSmxHdQ8izvfQM2cDAW/MW9JCqdOw+hYtMvDSUAW2ncx0pk4KZlyuvx1Z+XUBg"}}, "unsigned": {"age_ts": 1570042552798}}VeQa9$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 443, "stream_ordering": 2335}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM"], "prev_events": ["$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "type": "m.room.member", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-426:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-426", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-426:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042552139, "hashes": {"sha256": "tbmArX7Yom9o+Z3NOdtT1eCV4yoreNcuI0VIP42b3ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uDzn2MLyLY2MDdnRByZ1YhRCmuMzZDDrT5QG71iOXpx3MU2VoemZcHmcxOs0cmG4bmpLJeWS3aOzW9e0GEJCDg"}}, "unsigned": {"age_ts": 1570042552139}}VeQa9$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "stream_ordering": 2334}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM"], "prev_events": ["$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E"], "type": "m.room.member", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-425", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-425:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042551246, "hashes": {"sha256": "ACTxU35rgr7hHVlWl4S/99mXVDsf+froyKVq2nxaReY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LLfcbhB3jNoa7z4IyFJ0xd+R1WUIncDdw1MjnkFj52HtT8a81/ffdexpWxLS2qCvYJc/8wQyW9qTSZ2BB/xyDA"}}, "unsigned": {"age_ts": 1570042551246}} a} { y w u sqomkigeca~ueeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800~teeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~seeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800~reeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800~qeeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~peeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800~oeeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800~neeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~meeQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~leeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800~keeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~jeeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~ieeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800~heeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~geeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~feeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~eeeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~deeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~ceeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~beeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~aeeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~`eeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~_eeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~^eeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~]eeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~\eeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~[eeQ$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~ZeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800~YeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~XeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~WeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800 P P"eQu$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "449", "stream_ordering": 2349}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042564031, "hashes": {"sha256": "e4/pFuxV7uwcjNxjpHfU7ytaC/t7heooIk04J+3Fidw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gT7q358nVu1B4QXPn5v9wi9ztJx9ZVZx4hvplsp0JNVPJ2OCPMj9XW75HBqJqw4kkhI9nStxaqKzk2irqVvdBA"}}, "unsigned": {"age_ts": 1570042564031}}V!eQa9$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 446, "stream_ordering": 2348}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY"], "prev_events": ["$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "type": "m.room.member", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-429:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-429", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-429:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042563284, "hashes": {"sha256": "SrHF55DfNTYb4FYSpOr5cV+FXF6zscri5fT0XpEJun4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+MAh2nsSMs24Gy6zKkaxeIy/r9pn6nZuzoQ9kUp8nhLGs/+T8snbLxvNKHfpaitXpeDsa+tJAIb7rolItMj5BQ"}}, "unsigned": {"age_ts": 1570042563284}}V eQa9$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "stream_ordering": 2347}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY"], "prev_events": ["$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds"], "type": "m.room.member", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-428", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-428:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042562309, "hashes": {"sha256": "saxCgQmoEACDt5MSGCVfTqDo6MfEWdl/u06tbMta3pE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8yRm71GowjQIlw67mCWcY61BR6dPDqtP7uLgfVVxuppOL6sU+zk3p1XHfhx6iK8Cq2m+942KIvxCLB2cUPM1Cw"}}, "unsigned": {"age_ts": 1570042562309}}neQai$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2346}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M"], "type": "m.room.name", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042561369, "hashes": {"sha256": "4sipSJ+A866dPrNo/cPhOFqG4xGoDQ+HW4dpWGki/18"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "++G+NIeUr99JGjyAd+pq4E56ITd2cVX+xU9MbPcWgUOOguTHi4lcxo/zJMRrZR9D2rhlUipzKOrlyo3r/ZLmBg"}}, "unsigned": {"age_ts": 1570042561369}}  d \  U ME> &6. l|teeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800 meeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800сeeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800 \eeQ$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800ρeeQ$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800ReeQ$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800ZeeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU!BkzROHxDAfKIzYpmPV:localhost:8800*eeQ$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800eeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800NeeQ$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800ǁeeQ$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800ȁeeQ$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800eeQ$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800eeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800ɁeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800 xeeQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800deeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800 LrAyGMp> w E   }S K ! Q  W &  _ -e3Z(`k9j8.1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4V1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A31e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcq0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0|1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 v1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew d1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE21e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIu1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ^0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0=1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc11e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUO1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEy1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw41e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8l1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sU1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA\0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw11e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM+1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygu0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF021e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM<1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E{1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg~1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU"1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsz1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQc1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg71e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY 1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os 1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkG1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU:1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA@0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw71e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYV1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc11e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk /1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQQ1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68C1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI (  vveQay$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2341}{"auth_events": ["$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ"], "prev_events": ["$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ"], "type": "m.room.member", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-427", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-427:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042557434, "hashes": {"sha256": "DjJGmElgezIS2YvkWU5kUCrNqMDuiSzTMWB5C5fQo2Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AfImXD7jbOjdQ3yERN1jip+L2t3lT9CeMY3K3IkXKfUIKqOoA4x+TTgcf02aGXup/qRjAkMwccRxrwlv2gyjBA"}}, "unsigned": {"age_ts": 1570042557434}}ieQa_$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2340}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-427:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042556719, "hashes": {"sha256": "Ja8nPkZH7hGD2CTsroDb7yFiRJLEitKWbAd+qyKnywM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mDd9ATuPUIv82opi/yiipWQufk/thVwSU5eEDivk+L7ggMFbOWMZWhbrpEBXsudFqaENAUzuG7K2R8uqFSWqCQ"}}, "unsigned": {"age_ts": 1570042556719}}eQu$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "448", "stream_ordering": 2339}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042554689, "hashes": {"sha256": "zFmioOma8B4YOhpBSrl+cHMNpzb68PZJJSgIqp+U5Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NOBMke7IKH2ni3EMbdTozYxmKV4Dn3n9FLrDJM4iuO97DJ55QyNb5FtvY1fLVsHhDwLc5hQKmOcE9Sp2KHMsAg"}}, "unsigned": {"age_ts": 1570042554689}}eQu$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "447", "stream_ordering": 2338}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042554103, "hashes": {"sha256": "8ExNNq+3WFUl4RMAT1hEvDZjfY2CyzVGEu49i5PP9xk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ycR1BUxIE5XsPE1j+XxLI79qZm+EMqifFBZWiEBtFhbJ4MUp5TzGBG8TbPL4sH1R/TTV1qMVLE5/8n36KlXmBg"}}, "unsigned": {"age_ts": 1570042554103}} LrAyGMp> w E   }S K ! Q  W &  _ -e3Z(`k9j8.1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4V1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A31e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcq0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0v1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 v1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew d1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE21e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIu1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ^0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0=1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc11e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUO1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEy1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw41e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8l1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sU1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA\0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw11e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM+1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygu0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF021e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM<1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E{1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg~1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU"1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsz1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQc1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg71e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY 1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os 1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkG1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU:1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA@0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw71e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYV1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc11e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk /1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQQ1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68C1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI (  4 h j6d]c@anon-20191002_181700-471:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDego127.0.0.1ǂd]c@anon-20191002_181700-467:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAo127.0.0.1łd]c@anon-20191002_181700-464:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAo127.0.0.1Âd]c@anon-20191002_181700-465:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1Wlgo127.0.0.1Ăd]c@anon-20191002_181700-469:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwo127.0.0.1Ƃd]c@anon-20191002_181700-463:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgo127.0.0.1‚d]c@anon-20191002_181700-462:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7Qo127.0.0.1d]c@anon-20191002_181700-461:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0Vzngo127.0.0.1d]c@anon-20191002_181700-460:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAo127.0.0.1d]c@anon-20191002_181700-458:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAo127.0.0.1d]c@anon-20191002_181700-456:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQo127.0.0.1 ~z v r n j fb^ZTPLHDYQ]e!ZaltdIYVZjCHsCWTZD:localhost:8800@anon-20191002_181700-250:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwjoinXQ]e!kwXxkGQFkaeenFTQJr:localhost:8800@anon-20191002_181700-249:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8joinWQ]e!kwXxkGQFkaeenFTQJr:localhost:8800@anon-20191002_181700-248:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkjoinVQ]e!EMhFCPhwmnWVnjtXXM:localhost:8800@anon-20191002_181700-247:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sjoinUQ]e!EMhFCPhwmnWVnjtXXM:localhost:8800@anon-20191002_181700-246:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4joinTQ]e!GGXyLHdVXqhQjPRvac:localhost:8800@anon-20191002_181700-245:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMjoinSQ]e!GGXyLHdVXqhQjPRvac:localhost:8800@anon-20191002_181700-244:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcjoinRQ]e!IfYYyzLHSOeyJBxBfn:localhost:8800@anon-20191002_181700-243:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwjoinQQ]e!IfYYyzLHSOeyJBxBfn:localhost:8800@anon-20191002_181700-242:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0joinPQ]e!ZYKvjplZRyIWvzkRyM:localhost:8800@anon-20191002_181700-240:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAjoinOQ]e!ROoilpDjLJfjKfSPIi:localhost:8800@anon-20191002_181700-239:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0leaveNQ]e!ROoilpDjLJfjKfSPIi:localhost:8800@anon-20191002_181700-238:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8joinMQ]e!wsvXTJXouVkEZcCFsD:localhost:8800@anon-20191002_181700-237:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMjoinLQ]e!DoiZErAdypBUMZKaeJ:localhost:8800@anon-20191002_181700-236:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEjoinKQ]e!qSUSLLWjDxcGibUZdT:localhost:8800@anon-20191002_181700-234:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4joinJQ]e!RmwbYvIIQyPlHlClty:localhost:8800@anon-20191002_181700-232:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIjoinIQ]e!SvKwEALYoNreUvqAlp:localhost:8800@anon-20191002_181700-231:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgjoinHQ]e!fOJLpnbtgKNxxVDquX:localhost:8800@anon-20191002_181700-228:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0joinGQ]e!vAUAIZrCnHTeMGeNuw:localhost:8800@anon-20191002_181700-226:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMjoinFQ]e!EfJcWhdjNARbuHYrqU:localhost:8800@anon-20191002_181700-224:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9ojoinEQ]e!vRRNxNyGboLHNhqQvr:localhost:8800@anon-20191002_181700-222:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhojoinDQ]e!NFWKQvZkIwvecnREOC:localhost:8800@anon-20191002_181700-220:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kjoinCQ]e!IPYMCBwcyNIzqdiIWv:localhost:8800@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0joinBQ]e!IPYMCBwcyNIzqdiIWv:localhost:8800@anon-20191002_181700-217:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WojoinAQ]e!HZqzpRgqekPOtxstVc:localhost:8800@anon-20191002_181700-216:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikjoin@Q]e!HZqzpRgqekPOtxstVc:localhost:8800@anon-20191002_181700-215:localhost:8800$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQjoin?Q]e!FklhVuCInffbDxunWv:localhost:8800@anon-20191002_181700-214:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekjoin>Q]e!FklhVuCInffbDxunWv:localhost:8800@anon-20191002_181700-213:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0join=Q]e!eJPTUgihvSwaOhIkrC:localhost:8800@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQjoin<Q]e!eJPTUgihvSwaOhIkrC:localhost:8800@anon-20191002_181700-211:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Ijoin  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHorO0g7Y3pjeU5hT1JYbDUKMDAyZnNpZ25hdHVyZSDe3Y0t8ijjLdfk7SzErUv9v-bCc_iVroIMJTor_bCpmgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0ego1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgo }wqke_YSMGA;5/)# {uoic]WQKE?93'-!   y s m g a [ U O I C < 5 . '    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $   |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tl`~}|{zyxwv~u}t|s{rzqypxownvmultksjriqhpgofnemdlckbjai`h_g^f]e\d[cZbYaX`W_V^U]T\S[RZQYPXOWNVMULTKSJRIQHPGOFNEMDLCKBJAI@H?G>F=E<D;C:B9A8@7?6>5=4<3;2:1908/7.6-5,4+3*2)1(0'/&.%-$,#+"*!) ('&%$#"!           ~}|{zyxwv~u}t|s{rzqypxownvmultksjriqhpgofnemdlckbjai`h_g^f]e\d[cZbYaX_W]V[UYTXSWRVQROUPPMOLNKMJLIKHJGIFHEGDFCEBDAC@B?A>@=?<>;=:<9;8:7968574635241302/1.0-/,.+-*,)*()''&&%%$$##""!!          0@ (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H~}|{zyxwvu~t}s|r{qzpyoxnwmvluktjsirhqgpfoendmclbkaj`i_g^f]e\d[cZbYaX`W_V^U]T\S[RZQYPXOWNVMULTKSJRIQHPGOFNEMDLCKBJAI@H?G>F=E<D;C:B9A8@7?6>5=4<3;2:1908/7.6-5,4+3*2)1(0'/&.%-$,#+"*!) ('&%$#"!          #"!            %X\ ` d  h  l  p t x$<^: \-1 gG!QQ$1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800G QQ$1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800EMQ$15700426765pydev:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800EMQ$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800GQQ$1570042662161lGrSW:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800GQQ$1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800GQQ$1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800GQQ$1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800GQQ$1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800GQQ$1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800QeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800QeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800QeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800QeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800QeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800QeQ$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA!UGVFuRGyPQmBbGsEDo:localhost:8800QeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800QeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800QeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800Q eQ$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM!HusOrLtWZTLbmQZxmm:localhost:8800Q eQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800Q eQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800Q eQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800Q eQ$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs!CGckPHdSYcIocFvRAq:localhost:8800QeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800TQeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800QeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800QeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA!XcaKxZsPvbZhAGKKdx:localhost:8800QeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800QeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800QeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw!zoTQAhGwmDDUECKtbL:localhost:8800QeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc!zoTQAhGwmDDUECKtbL:localhost:8800QeQ$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA!NeYaCeYNFATCqlrlGT:localhost:8800QeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800Q~eQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!zsXPhIPzeXXLvuazzQ:localhost:8800Q}eQ$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc!zsXPhIPzeXXLvuazzQ:localhost:8800QeQ$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs!yTQmLDAxZscWKLMSWh:localhost:8800 D DHeQa$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2345}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k"], "type": "m.room.test", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042560882, "hashes": {"sha256": "MMwkqtZW0aad/SqIlc2W3wndqpzFybZVhhLi+BdHdOY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JT1BQVyLM0cIyBPNM4CgzfNOSDvY1ygFruvC6uuw3NViC9Tnd4dzOEgO0Iu0/+uniTYt5PBbxgWXkFSn7qaABA"}}, "unsigned": {"age_ts": 1570042560882}}eQa$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2344}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY"], "type": "m.room.history_visibility", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042559348, "hashes": {"sha256": "e0uZ5Cx+Hkxa4WsZh5ESrjl9Lh4hPdATcuRb9YoBHNY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cRS+6SXecX6Zn5NhjJA7E7i14Aoh68NB8iBfOMYqjcR7gTBPpEMZe6nXMadikHrf+TPSpsBiFhUMZnCXLNf8AQ"}}, "unsigned": {"age_ts": 1570042559348}}teQau$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2343}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU"], "type": "m.room.join_rules", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042558680, "hashes": {"sha256": "41h2tz0i8llIIAY0f2YmMCC2j0uPZzvDmVyWYLo2Czg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "btPRHo8g2e9gakYNRdK2go5Os2mmnBwK0SWXfHbqPPhfH0Shx201a8qhM5qgoSEX7hhtfIO0KERt+JyUvdUbCA"}}, "unsigned": {"age_ts": 1570042558680}}keQac$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2342}{"auth_events": ["$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "type": "m.room.power_levels", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"users": {"@anon-20191002_181700-427:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042557973, "hashes": {"sha256": "yWvAv5iUfjB+mkHDuJDqdmhSCMBr3CFcAEFoCYA4SHg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0rDw+QS9kD26+iGqaV3E1VSzItuVLQBukHJmWRjHVj6jqV5ad16y5kpkFGRFp3F2fD1+Yxc6IMq6vOCTqPz+DQ"}}, "unsigned": {"age_ts": 1570042557973}} -RM H C > 9 4/*|%w rmhc TQe S!IZkczIYykpZDvjuUWn:localhost:8800$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0TQe R!IZkczIYykpZDvjuUWn:localhost:8800$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8T Qe Q!IZkczIYykpZDvjuUWn:localhost:8800$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQT Qe P!IZkczIYykpZDvjuUWn:localhost:8800$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAT Qe O!IZkczIYykpZDvjuUWn:localhost:8800$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMT Qe N!IZkczIYykpZDvjuUWn:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUT Qe M!IZkczIYykpZDvjuUWn:localhost:8800$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUTQe L!zuCqeooOnfWkYrQdxA:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIATQe K!zuCqeooOnfWkYrQdxA:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQTQe J!zuCqeooOnfWkYrQdxA:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_QsTQe I!zuCqeooOnfWkYrQdxA:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugTQe H!zuCqeooOnfWkYrQdxA:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMTQe G!zuCqeooOnfWkYrQdxA:localhost:8800$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUTQe F!zuCqeooOnfWkYrQdxA:localhost:8800$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgTQe E!zuCqeooOnfWkYrQdxA:localhost:8800$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPETQe D!zuCqeooOnfWkYrQdxA:localhost:8800$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcTQe C!zuCqeooOnfWkYrQdxA:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsT~Qe B!zuCqeooOnfWkYrQdxA:localhost:8800$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4T}Qe A!vttkrtSyHEJXVMlvLo:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70T|Qe @!vttkrtSyHEJXVMlvLo:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMT{Qe ?!vttkrtSyHEJXVMlvLo:localhost:8800$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gTzQe >!vttkrtSyHEJXVMlvLo:localhost:8800$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUITyQe =!vttkrtSyHEJXVMlvLo:localhost:8800$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkTxQe 9 4/*|%w r5NgJPQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042621112AUAFX:localhost:8800JOQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042620111taWCG:localhost:8800JNQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619110gZfPB:localhost:8800JMQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619109qhpUv:localhost:8800JLQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042618108WWxoQ:localhost:8800JKQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042617107cANtu:localhost:8800JJQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042616106fkZGL:localhost:8800JIQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042613103AHxGt:localhost:8800JHQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042612102sQZCG:localhost:8800JGQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611101IffRu:localhost:8800JFQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611100ueDzK:localhost:8800IEQO!YGUjVdVdpcQoGkRnWB:localhost:8800$157004261099UmKia:localhost:8800TDQe!IZkczIYykpZDvjuUWn:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPETCQe!IZkczIYykpZDvjuUWn:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYTBQe!IZkczIYykpZDvjuUWn:localhost:8800$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMTAQe!IZkczIYykpZDvjuUWn:localhost:8800$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0T@Qe!IZkczIYykpZDvjuUWn:localhost:8800$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQT?Qe!IZkczIYykpZDvjuUWn:localhost:8800$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAT>Qe!IZkczIYykpZDvjuUWn:localhost:8800$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMT=Qe!IZkczIYykpZDvjuUWn:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUT<Qe!IZkczIYykpZDvjuUWn:localhost:8800$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUT;Qe!zuCqeooOnfWkYrQdxA:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAT:Qe!zuCqeooOnfWkYrQdxA:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQT9Qe!zuCqeooOnfWkYrQdxA:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_QsT8Qe!zuCqeooOnfWkYrQdxA:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugT7Qe!zuCqeooOnfWkYrQdxA:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMT6Qe!zuCqeooOnfWkYrQdxA:localhost:8800$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgT5Qe!zuCqeooOnfWkYrQdxA:localhost:8800$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPET4Qe!zuCqeooOnfWkYrQdxA:localhost:8800$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcT3Qe!zuCqeooOnfWkYrQdxA:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsT2Qe!zuCqeooOnfWkYrQdxA:localhost:8800$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4T1Qe!vttkrtSyHEJXVMlvLo:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70T0Qe!vttkrtSyHEJXVMlvLo:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMT/Qe!vttkrtSyHEJXVMlvLo:localhost:8800$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gT.Qe!vttkrtSyHEJXVMlvLo:localhost:8800$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkT-Qe!vttkrtSyHEJXVMlvLo:localhost:8800$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4T,Qe!vttkrtSyHEJXVMlvLo:localhost:8800$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwT+Qe!vttkrtSyHEJXVMlvLo:localhost:8800$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sT*Qe!vttkrtSyHEJXVMlvLo:localhost:8800$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8T)Qe!whuymJoLfUdkFdxoyE:localhost:8800$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwT(Qe!whuymJoLfUdkFdxoyE:localhost:8800$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoT'Qe!whuymJoLfUdkFdxoyE:localhost:8800$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cT&Qe!whuymJoLfUdkFdxoyE:localhost:8800$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQT%Qe!whuymJoLfUdkFdxoyE:localhost:8800$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYT$Qe!whuymJoLfUdkFdxoyE:localhost:8800$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsT#Qe!whuymJoLfUdkFdxoyE:localhost:8800$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQET"Qe!yTQmLDAxZscWKLMSWh:localhost:8800$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs q | 4  ! K uWbmOZaPQ# e!IZkczIYykpZDvjuUWn:localhost:8800m.room.name$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0oOQ? e!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibility$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQgNQ/ e!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAiMQ3 e!IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM LQ']e!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUcKQ' e!IZkczIYykpZDvjuUWn:localhost:8800m.room.create$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU JQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-441:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA IQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-440:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ HQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-439:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs GQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-438:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug FQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-437:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMoEQ? e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.history_visibility$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVggDQ/ e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.join_rules$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEiCQ3 e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.power_levels$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc BQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-436:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvscAQ' e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.create$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 @Q']e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-435:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 ?Q']e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-434:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMa>Q# e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.name$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8go=Q? e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.history_visibility$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkg<Q/ e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.join_rules$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4i;Q3 e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.power_levels$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw :Q']e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-433:localhost:8800$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sc9Q' e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.create$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 8Q']e!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-432:localhost:8800$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw 7Q']e!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-431:localhost:8800$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoo6Q? e!whuymJoLfUdkFdxoyE:localhost:8800m.room.history_visibility$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cg5Q/ e!whuymJoLfUdkFdxoyE:localhost:8800m.room.join_rules$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQi4Q3 e!whuymJoLfUdkFdxoyE:localhost:8800m.room.power_levels$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY 3Q']e!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-430:localhost:8800$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsc2Q' e!whuymJoLfUdkFdxoyE:localhost:8800m.room.create$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE 1Q']e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-429:localhost:8800$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs SL Y ' '`/xFr~L -j8:!p>l  w EY4@  _ ~ L  S ! 1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 50e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kj1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMq1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0/1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwB1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIA1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 B1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 f11e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4F1e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78f1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo91e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo=1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIx1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4a1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMED1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y11e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ 1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ 1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko i1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM(1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0b1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs0e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8x1e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70V1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEZ1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBoz1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo-0e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw}1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0J1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoG1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkx1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AA1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A@1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw 3 z ~z~\QQ{ $1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "607", "stream_ordering": 3314}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043483335oDIDb:localhost:8800", {"sha256": "HqPmc/JNJ5AfLGB79CERb+tBCFoHK3lVjBRIphsOkUI"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 7 here", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "event_id": "$1570043484336qKOPD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043484368, "hashes": {"sha256": "nDnqRpHHf9lIUlczbh1g6GKO33otjn/TcHDkwwcTD/Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xIfVO2+HfgeAClwMovb1ikwLxlGcL3xQc5Ml9jdi89eNYHsoCf7MYFEgS+o/h5FinCQpp67lckqYyECDJ8bcCA"}}, "unsigned": {"age_ts": 1570043484368}}~[QQ{ $1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "606", "stream_ordering": 3313}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043483334ejWtI:localhost:8800", {"sha256": "yohbjVFlVIS5Oi5BD24SgA/daHACLimVYsCb4KIOB+Q"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 6 here"}, "depth": 11, "prev_state": [], "event_id": "$1570043483335oDIDb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043483900, "hashes": {"sha256": "lFUKRKYJ4MvGpUFtevFWS5Hlp2ZYgNSy0u7A6Op4vbk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kMJRYEJECvHTb/+tn2tHnfiTlMqXkJFWxpW3WZwkucYL9d3mok0cdWHL5zL2JkhTMzQZin0NvldpOTqD8NPHBQ"}}, "unsigned": {"age_ts": 1570043483900}}~ZQQ{ $1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "605", "stream_ordering": 3312}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043482333DxDEq:localhost:8800", {"sha256": "6l3r62EX7KNvVNddf6tWnTBh4khyDhk8+bOSZEEszds"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 5 here"}, "depth": 10, "prev_state": [], "event_id": "$1570043483334ejWtI:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043483321, "hashes": {"sha256": "eQDdrZL5tFujDs+mPlIfrrvdHXrwck57ejXKK6a+HnQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t5ibsydRW35i7+NR+MQSMSbSN+PmM9NnmOEg3LdaJgqHuilfmfMQMcscIO97pqy+EDJI6o7Jew0EjT+xmWaaAg"}}, "unsigned": {"age_ts": 1570043483321}} u vbui&eQa_$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2353}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-430:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042568338, "hashes": {"sha256": "ag7I7ZnwE2QLEAZtvOwbSsLwlag3KsMoiiSFjS4Z3Y0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "291MLX7X8oBWJa9XFX9mS3JUcOgz5wSSbF3ivmEGC1lZw9hoZWekB8xv8IQu88s3GreVP6l7hqS0P5G+xcE6Dg"}}, "unsigned": {"age_ts": 1570042568338}}%eQu$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "452", "stream_ordering": 2352}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"body": "Message 4", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042566328, "hashes": {"sha256": "v/hE2ABTfGg1AI2/T40DaABzYxoIWA+4Ee0/Cjdbh8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aov385ctASKviiktMnxHGjlJKxr7dtD3u9YSLNzzgUNvW14+baHaqUOBEYIxA1e1f9oYM8f/aqRYPvRV/0HqDA"}}, "unsigned": {"age_ts": 1570042566328}}$eQu$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "451", "stream_ordering": 2351}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042565821, "hashes": {"sha256": "9mERR5+P1Eh6Iz7ipiGLmcwaEm2KvH8op8qYAIIlqSU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oJw8v1LGxOsxNe0CRJdmjJjk21yyw9Bnrzd5S9T1vc54ae9Fk/JK4zc+Obre8B0udUOl1uAGrLErM/nFi38AAA"}}, "unsigned": {"age_ts": 1570042565821}}#eQu$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "450", "stream_ordering": 2350}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042565019, "hashes": {"sha256": "cMz1bSkBrsGIXbrwj73weZRFYmymVqeWL2sgEnaKbYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k2TTzeqZG4pvH5jn8z8KMlFE+t61r4hfHs6hz3rV5qsNO4lpAOqdLSmo05u17GtSNSKj/xPjQfOMZTE0I0BXBQ"}}, "unsigned": {"age_ts": 1570042565019}} 8l D `8.]c!E@anon-20191002_181700-438:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAoTJXWGIJRBF127.0.0.1Perl + Net::Async::HTTP/0.44m;-]c!E@anon-20191002_181700-437:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgoPMLBXPJIHM127.0.0.1Perl + Net::Async::HTTP/0.44m,]c!E@anon-20191002_181700-436:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQoPJOSZGJIHE127.0.0.1Perl + Net::Async::HTTP/0.44mԭ؃+]c!E@anon-20191002_181700-435:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgoSYLXZYMBKM127.0.0.1Perl + Net::Async::HTTP/0.44mԞ*]c!E@anon-20191002_181700-434:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQoFQTRGMUKGZ127.0.0.1Perl + Net::Async::HTTP/0.44mԙӃ)]c!E@anon-20191002_181700-433:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5AoUUQGLCEWQB127.0.0.1Perl + Net::Async::HTTP/0.44mԃ(]c!E@anon-20191002_181700-432:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2QgoZOPSRSBYRN127.0.0.1Perl + Net::Async::HTTP/0.44mvY']c!E@anon-20191002_181700-431:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1woJIBNPXSTDL127.0.0.1Perl + Net::Async::HTTP/0.44mr)&]c!E@anon-20191002_181700-430:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwoEJQMGEXFCC127.0.0.1Perl + Net::Async::HTTP/0.44m]%]c!E@anon-20191002_181700-429:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7QoOXLZZLMFDN127.0.0.1Perl + Net::Async::HTTP/0.44mH &&H + m  / [ T7y;g)T"f eQ%$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8!uqIEMXzdeNeXdJmuwh:localhost:8800content.bodyhellof eQ%$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800content.bodyhellof eQ%$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800content.bodyhello]OQ%$157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800content.bodyMessagehQQ%/$1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 10gQQ%-$1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 9gQQ%-$1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 8gQQ%-$1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 7gQQ%-$1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 6gQQ%-$1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 5gQQ%-$1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 4gQQ%-$1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 3gQQ%-$1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 2g~QQ%-$1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 1\}QQ%$1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800content.bodyhello\|QQ%$1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800content.bodyhello\{QQ%$1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800content.bodyhello\zQQ%$1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800content.bodyhello\yQQ%$1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800content.bodyhello\xMQ%$15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800content.bodyMessagegwQQ%-$1570042662161lGrSW:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 9gvQQ%-$1570042662160SrmtM:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 8guQQ%-$1570042661159xQwJK:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 7gtQQ%-$1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 6gsQQ%-$1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 5grQQ%-$1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 4gqQQ%-$1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 3gpQQ%-$1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 2goQQ%-$1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 1\nQQ%$1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800content.bodyhello\mQQ%$1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800content.bodyhello\lQQ%$1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800content.bodyhello\kQQ%$1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800content.bodyhello\jQQ%$1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800content.bodyhellolieQ%#$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800content.nameA room namelheQ%#$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800content.nameA room namejgeQ%$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 4jfeQ%$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 3  *eQa$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2357}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ"], "type": "m.room.history_visibility", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042571237, "hashes": {"sha256": "0d8JQivvdCybGhTYfUJn7/YHX51wVp0IIKYTOuvDAT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+39vPh4rMWS5hnYHOBKKZh7RYgKqiXoGlX/mIjhGRravQvCQrfc+0zRtLnF7mKCe7H61TTk9SlkUhmw9OSFgBw"}}, "unsigned": {"age_ts": 1570042571237}}t)eQau$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2356}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY"], "type": "m.room.join_rules", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042570466, "hashes": {"sha256": "quZswWDpwA4AEbIe3AdCNHBWFaahlCdCQp0NumeLOj4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o9ibXtH1Bx2JWVLmFDlTrWTlikJyNkZW7+t5osBLbrow6Dfj+j/N9hd97M2yCcR0K99VO26ZY+UwCAOWTUa1AA"}}, "unsigned": {"age_ts": 1570042570466}}k(eQac$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2355}{"auth_events": ["$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "type": "m.room.power_levels", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"users": {"@anon-20191002_181700-430:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042569663, "hashes": {"sha256": "b/p4O2DqJSpgQnhA7SeOeiiGi9SDlv502mnj4EiTXec"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y4W+uyXIZ+rLIqWVhMdRmlOvNudvzcOBDBsEW7OeBbw0cxyYE+XAxFTMia+OLVy/bnehNekwISPLijBsOX2MDA"}}, "unsigned": {"age_ts": 1570042569663}}v'eQay$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2354}{"auth_events": ["$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE"], "prev_events": ["$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE"], "type": "m.room.member", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-430", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-430:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042569092, "hashes": {"sha256": "r5K8e2XVCzh0dth2/rHtpNAxBTkvdBKueXofmGOPfso"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TIDNswl+3a8hnqJvSq50Oxgj8/ZHuQ971jIRXLZdSdu0PcoewIsyk+qJztxNAg6EH9jhe1RBMOEYJL8bHxn+Cw"}}, "unsigned": {"age_ts": 1570042569092}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@                                                    ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                 C B A @ ? > > > < < ; : 9 8 7 6 4 4 3 2 1 0 / . . . . . . . . . . . . - , + * ) ( ( & % % $ # " !   ~}|{zzzzzzyxwwvutsrrrrrrqpoonmlkjjjjihggfedcba``_^]\[[[[[[ZYXXWVUTSSSRQPONNMLKJIIHGFEDDD *u bu egilmo  \ psVW [  [  ] ] ] ]TTeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800SeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:88007TeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800TeQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800SeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800SeQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:88002TeQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800TeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800TeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800TeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800TeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800SeQ$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ!CQKLQUpSYakhxVDltC:localhost:8800JTeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800TeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800TeQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800SeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs!wvnfKBSrUlfNmYoeil:localhost:8800SeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800\ USeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800TeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800TeQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800SeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY!duCKuavMBSfRbTFPsc:localhost:8800%TeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800TeQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800SeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800SeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ!OaCEdDAiatpwYcagUb:localhost:8800TeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800SeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800 RTeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800TeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E!ZKPJvrCZHMHPEksYDc:localhost:8800@TeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800SeQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800:TeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800 UTeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800wTeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800uUTeQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800SeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800(SeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800HTTeQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800TeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800\TeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:8800TeQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800TeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800 jV \  r $ |*@PVj Je'Q ] $F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qsm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800 mRmʻ@anon-20191002_181700-439:localhost:8800 Ie'Q ]$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800mLm@anon-20191002_181700-438:localhost:8800 He'Q ]$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800mmp@anon-20191002_181700-437:localhost:8800Ge#Q ]$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUm.room.test!zuCqeooOnfWkYrQdxA:localhost:8800m5m9@anon-20191002_181700-436:localhost:8800,Fe?Q ]$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgm.room.history_visibility!zuCqeooOnfWkYrQdxA:localhost:8800mԻmԽ@anon-20191002_181700-436:localhost:8800$Ee/Q ]$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEm.room.join_rules!zuCqeooOnfWkYrQdxA:localhost:8800mԹGmԺ<@anon-20191002_181700-436:localhost:8800&De3Q ]$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcm.room.power_levels!zuCqeooOnfWkYrQdxA:localhost:8800mԴmԶU@anon-20191002_181700-436:localhost:8800 Ce'Q ]$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800mԱmԲL@anon-20191002_181700-436:localhost:8800B e'Q  ]$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4m.room.create!zuCqeooOnfWkYrQdxA:localhost:8800mԮmԮ@anon-20191002_181700-436:localhost:8800 Ae'Q ] $C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70m.room.member!vttkrtSyHEJXVMlvLo:localhost:8800 mԞmԟM@anon-20191002_181700-435:localhost:8800 @e'Q ]$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMm.room.member!vttkrtSyHEJXVMlvLo:localhost:8800mԛ$mԛ@anon-20191002_181700-434:localhost:8800?e#Q ]$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gm.room.name!vttkrtSyHEJXVMlvLo:localhost:8800mԘmԘ@anon-20191002_181700-433:localhost:8800>e#Q ]$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIm.room.test!vttkrtSyHEJXVMlvLo:localhost:8800mԖYmԖ]@anon-20191002_181700-433:localhost:8800,=e?Q ]$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkm.room.history_visibility!vttkrtSyHEJXVMlvLo:localhost:8800mԑmԓ@anon-20191002_181700-433:localhost:8800$<e/Q ]$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4m.room.join_rules!vttkrtSyHEJXVMlvLo:localhost:8800mԎdmԏ@anon-20191002_181700-433:localhost:8800&;e3Q ]$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwm.room.power_levels!vttkrtSyHEJXVMlvLo:localhost:8800mԋjmԌ@anon-20191002_181700-433:localhost:8800 :e'Q ]$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sm.room.member!vttkrtSyHEJXVMlvLo:localhost:8800mԈmԉ@anon-20191002_181700-433:localhost:88009 e'Q  ]$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8m.room.create!vttkrtSyHEJXVMlvLo:localhost:8800mԅ+mԅ@anon-20191002_181700-433:localhost:8800 8e'Q ]$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwm.room.member!whuymJoLfUdkFdxoyE:localhost:8800mv\mv@anon-20191002_181700-432:localhost:8800 7e'Q ]$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCom.room.member!whuymJoLfUdkFdxoyE:localhost:8800mr<mr@anon-20191002_181700-431:localhost:88006e#Q ]$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wm.room.test!whuymJoLfUdkFdxoyE:localhost:8800mpRmpW@anon-20191002_181700-430:localhost:8800,5e?Q ]$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cm.room.history_visibility!whuymJoLfUdkFdxoyE:localhost:8800mimm@anon-20191002_181700-430:localhost:8800$4e/Q ]$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQm.room.join_rules!whuymJoLfUdkFdxoyE:localhost:8800mfmh!@anon-20191002_181700-430:localhost:8800&3e3Q ]$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYm.room.power_levels!whuymJoLfUdkFdxoyE:localhost:8800mcmd@anon-20191002_181700-430:localhost:8800  i.eQa_$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2361}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-433:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042578219, "hashes": {"sha256": "7yBSITL8Rm8BhwDNiv/v3JYjNi/dq1bJLCtsXxOjVJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/eH34GmWWBeW/UQmN/8QlGjyKpSQ9kvVaLA7FxLc8T+SMu4G+HOy0aj5+URixoBZbgCcrN1R9jRvD+z3Oen2BQ"}}, "unsigned": {"age_ts": 1570042578219}}V-eQa9$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 449, "stream_ordering": 2360}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ"], "prev_events": ["$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo"], "type": "m.room.member", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-432:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-432", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-432:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042574428, "hashes": {"sha256": "BauxA/l8wdVHegGt3N0h4AbOWN1exj/wOAKn5RHz/+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZBMRZrs78d4fUaP+767CP2Vif9Dnrh2m5Ppn8gL7jiQjRspQhd+ZGRxCNOrlkSDI4AB/4EG5S0mEaWjt7uXBCQ"}}, "unsigned": {"age_ts": 1570042574428}}V,eQa9$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 448, "stream_ordering": 2359}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ"], "prev_events": ["$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w"], "type": "m.room.member", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-431:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-431", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-431:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042573372, "hashes": {"sha256": "9jxQb+M/0KDu163CeMiTQeo844QwdG2z8VKFicOPOSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "98Zl8qve/PRraDH4dgTiQPi9D/w1vNN9y4SfTqu8aSIPBsJAmwgpRO9uiF1u67DURZMAjzkb4u6Mj8icxjzIAg"}}, "unsigned": {"age_ts": 1570042573372}}H+eQa$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2358}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c"], "type": "m.room.test", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042572882, "hashes": {"sha256": "Ix2rF9bBWWZxIpf2sO9cig9YOyGfGYhgTzHKgY3/Oco"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RvIT3kUlJvZquZqqxRIqj5Y9gBdnZTkc5p1rrDbeSmIHvJ01iPqmA8cBvVjTvMM8ihJGRU8szKhYNkcZGaWQCA"}}, "unsigned": {"age_ts": 1570042572882}} akC{`8pH X 0  h @  x P ( ` 8  p H X0h@#S+c;sK[3 iP1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU'Q$1570043713441WJPkP:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY=3$19:localhost:42455 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk33$15:localhost:42455 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 t'Q$1570043680434abJWo:localhost:8800 s'Q$1570043670433bjAzo:localhost:8800 l'Q$1570043668432TfiHj:localhost:8800 k'Q$1570043664431IMLSL:localhost:8800 j'Q$1570043660430kLPpN:localhost:8800 i'Q$1570043656428rZaqi:localhost:8800 e'Q$1570043655427tEtWD:localhost:8800 d'Q$1570043654426seixP:localhost:8800 c'Q$1570043653425AhyPB:localhost:8800 b'Q$1570043652424mkkFn:localhost:8800 a'Q$1570043648422SglHQ:localhost:8800 ^'Q$1570043647421dmTZW:localhost:8800 ]'Q$1570043646420mPrhj:localhost:8800 \'Q$1570043646419zIOAX:localhost:8800 ['Q$1570043645418ABZkc:localhost:8800 Z'Q$1570043593416CouYv:localhost:8800 ''Q$1570043592415heiAH:localhost:8800 &'Q$1570043591414NuXxd:localhost:8800 %'Q$1570043590413Khvee:localhost:8800 $'Q$1570043589412JaDTY:localhost:8800 #'Q$1570043588411PDBWG:localhost:8800 "'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043575399SiSKs:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 a} { y w u sqomkigeca~eeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~ eeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~~eeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~}eeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~|eeQ$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~{eeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800~zeeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~yeeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800~xeeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800~weeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~veeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800 KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD-]@anon-20191002_181700-504:localhost:8829R-]@anon-20191002_181700-453:localhost:8829-]@anon-20191002_181700-453:localhost:8829-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-451:localhost:8829-]@anon-20191002_181700-450:localhost:8800 -]@anon-20191002_181700-449:localhost:8800 -]@anon-20191002_181700-449:localhost:8800 -]@anon-20191002_181700-448:localhost:8800 -]@anon-20191002_181700-447:localhost:8800 -]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-504:localhost:8829Q-]@anon-20191002_181700-503:localhost:8800P-]@anon-20191002_181700-502:localhost:8829O-]@anon-20191002_181700-502:localhost:8829N-]@anon-20191002_181700-501:localhost:8800M-]@anon-20191002_181700-500:localhost:8829L-]@anon-20191002_181700-499:localhost:8800K-]@anon-20191002_181700-498:localhost:8829J-]@anon-20191002_181700-498:localhost:8829I-]@anon-20191002_181700-497:localhost:8800H-]@anon-20191002_181700-496:localhost:8829G-]@anon-20191002_181700-495:localhost:8800F-]@anon-20191002_181700-494:localhost:8800E-]@anon-20191002_181700-494:localhost:8800D-]@anon-20191002_181700-493:localhost:8800C-]@anon-20191002_181700-492:localhost:8800B-]@anon-20191002_181700-491:localhost:8800A-]@anon-20191002_181700-490:localhost:8800@-]@anon-20191002_181700-489:localhost:8829?-]@anon-20191002_181700-489:localhost:8829>-]@anon-20191002_181700-488:localhost:8800=-]@anon-20191002_181700-487:localhost:8829<-]@anon-20191002_181700-487:localhost:8829;-]@anon-20191002_181700-486:localhost:8800:-]@anon-20191002_181700-485:localhost:88299-]@anon-20191002_181700-484:localhost:88008-]@anon-20191002_181700-483:localhost:88297-]@anon-20191002_181700-483:localhost:88296-]@anon-20191002_181700-482:localhost:88005-]@anon-20191002_181700-481:localhost:88294-]@anon-20191002_181700-480:localhost:88003-]@anon-20191002_181700-479:localhost:88002-]@anon-20191002_181700-479:localhost:88001-]@anon-20191002_181700-478:localhost:88000-]@anon-20191002_181700-477:localhost:8800/-]@anon-20191002_181700-476:localhost:8800.-]@anon-20191002_181700-475:localhost:8800--]@anon-20191002_181700-474:localhost:8829,-]@anon-20191002_181700-474:localhost:8829+-]@anon-20191002_181700-473:localhost:8800*-]@anon-20191002_181700-472:localhost:8829)-]@anon-20191002_181700-472:localhost:8829(-]@anon-20191002_181700-471:localhost:8800'-]@anon-20191002_181700-470:localhost:8829&-]@anon-20191002_181700-469:localhost:8800%-]@anon-20191002_181700-468:localhost:8829$-]@anon-20191002_181700-468:localhost:8829#-]@anon-20191002_181700-467:localhost:8800"-]@anon-20191002_181700-466:localhost:8829!-]@anon-20191002_181700-465:localhost:8800 -]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-459:localhost:8829-]@anon-20191002_181700-459:localhost:8829-]@anon-20191002_181700-458:localhost:8800-]@anon-20191002_181700-457:localhost:8829-]@anon-20191002_181700-457:localhost:8829-]@anon-20191002_181700-456:localhost:8800-]@anon-20191002_181700-455:localhost:8829-]@anon-20191002_181700-454:localhost:8800  BhV6eQa9$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 450, "stream_ordering": 2369}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4"], "prev_events": ["$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM"], "type": "m.room.member", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-435:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-435", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-435:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042584762, "hashes": {"sha256": "sxFWipxJSy3zLWjS5oRsZtYuQk9PRNSxg13sg9QbR4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WNzvtMZ6CGGH7axmylbOioL6k+vQwU4S0EZIpIJmDiaVYCtG0r7ILmF30hD/pk0JgvoyIJ3n1E2tzpc0bjvdCQ"}}, "unsigned": {"age_ts": 1570042584762}}V5eQa9$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 452, "stream_ordering": 2368}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4"], "prev_events": ["$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g"], "type": "m.room.member", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-434:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-434", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-434:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042583844, "hashes": {"sha256": "2HYJtL7FRB6u7sfzfOZZee17r4NRhIte+JXNoXh8zS4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2jifZ9pxtlFqk0wvYwMtAomZTr/bNQxT/908skS34yQCgxcmit+sIRDaCjhP+InbgAChEDkqyVMLtumrzY44Cw"}}, "unsigned": {"age_ts": 1570042583844}}n4eQai$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2367}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI"], "type": "m.room.name", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042583062, "hashes": {"sha256": "Fq7OJqlHvYNlnu82Y2oOxBLtGleP0Q6V+kVuVzLvyr0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZgYFcETBA8duAQn/8Z3F/bWxG98Pi3B4k4nu4WxHIWyrZxt2v4+x/iAXpVcSO4lCZRr4NTW1kOTCfqBmVQRkAg"}}, "unsigned": {"age_ts": 1570042583062}}H3eQa$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2366}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk"], "type": "m.room.test", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042582617, "hashes": {"sha256": "lxFN1cSGWJAdmjB0p/hDG6hj5RAZVhMHqV2wRoK9vW0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FeMMtzGwq6HnbwlslOWoDRz71oE2EHd2O/AogKSeA5ZQUKSDpLUvGN4M7elcvrcO/6fIrGF0MxP+Oye6LUulCg"}}, "unsigned": {"age_ts": 1570042582617}} .NC 8 - { " p  e ZOD9M`s$7LZQL$1570042622113mtzjt:localhost:8800sha256PU.q@sZl5[weL$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugsha256g  1TM,cqFV=eL$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMsha256Xo^]XMb 1dʵ3J#V<eL$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUsha256l{'xt[\#Lb&"ٓ+V;eL$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgsha256]!c@anon-20191002_181700-437:localhost:8800PMLBXPJIHMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgog=]!c@anon-20191002_181700-436:localhost:8800PJOSZGJIHEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQog<]!c@anon-20191002_181700-438:localhost:8800TJXWGIJRBFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAog;]!c@anon-20191002_181700-434:localhost:8800FQTRGMUKGZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQog:]!c@anon-20191002_181700-433:localhost:8800UUQGLCEWQBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5Aog9]!c@anon-20191002_181700-435:localhost:8800SYLXZYMBKMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgo  2eQa$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2365}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4"], "type": "m.room.history_visibility", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042581440, "hashes": {"sha256": "4f7qf3u+mi2lO3JyS4Bh/wwQramH+wgyGymBXAwgvtI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z7fB6ah1sUnnoZGwkAMFxyyOl+uJAycGe4SEHCDa9SmJEpuTQ4nERr35ZqaeguJIHSkMmravxs1yG4G4nDzJBg"}}, "unsigned": {"age_ts": 1570042581440}}t1eQau$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2364}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw"], "type": "m.room.join_rules", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042580580, "hashes": {"sha256": "hjww2s9QA0PeQwrVd5PTBTIsUaHaFkW7Q8atm12JtuE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7BPkbxJIF6kS+Ts0axuehMMrtVuJxWdnyAA+cVQnetyA+zS0lG+rceEtcGC9E2aqQOj93hbzCApoPV8F6Hx8Ag"}}, "unsigned": {"age_ts": 1570042580580}}k0eQac$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2363}{"auth_events": ["$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "type": "m.room.power_levels", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"users": {"@anon-20191002_181700-433:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042579818, "hashes": {"sha256": "9gav38poZvvGsG+KwMobvFAjUYrs8ur0QY/E5VbMaDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jAQBD3991FuqX/Eod5tS3p6srZ04WJNn3T4Wy1sNZir4kl27qwQR/12ZD9v5UAb4kG22G3W6xD6mknV3SwwSCQ"}}, "unsigned": {"age_ts": 1570042579818}}v/eQay$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2362}{"auth_events": ["$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8"], "prev_events": ["$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8"], "type": "m.room.member", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-433", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-433:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042579125, "hashes": {"sha256": "W6e87g3+TYNftR5f+d2HV0DyCEEAoBno5pwyT+yMJ5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W7z5UtTDqnmGwy65XICxztVUSbMSw3rUli9L/Elajjcxs33EPru+CkPBUqRy+a5/M9IZW0SXF7UtIskfSd6oDg"}}, "unsigned": {"age_ts": 1570042579125}} M~z v r n j fb^ZVRNs)MkQQQ$1570042617107cANtu:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042615105OKfnm:localhost:8800$1570042614104FELge:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042614104FELge:localhost:8800$1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042613103AHxGt:localhost:8800$1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042612102sQZCG:localhost:8800$1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042611101IffRu:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800jQOQ$1570042611100ueDzK:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800~eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800}eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800|eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800{eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8!IZkczIYykpZDvjuUWn:localhost:8800zeeQ$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800yeeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800xeeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800weeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800veeQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800ueeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800teeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800seeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800reeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800qeeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU!zuCqeooOnfWkYrQdxA:localhost:8800peeQ$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800oeeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800neeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800meeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800leeQ$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800keeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800jeeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800ieeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI!vttkrtSyHEJXVMlvLo:localhost:8800heeQ$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800geeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800feeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800 ~FQ |  E #  p {9~  HXr 6eQ']$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:8800joinm!eQ? $eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800m.room.history_visibilitye eQ/ $b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800m.room.join_rulesgeQ3 $mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800m.room.power_levels eQ']$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-433:localhost:8800joinaeQ' $iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800m.room.create eQ']$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-432:localhost:8800join_4eQ# $qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800m.room.namem3eQ? $lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibilitye2eQ/ $e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rulesg1eQ3 $E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels 0eQ']$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:8800joina/eQ' $bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800m.room.create .eQ']$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-441:localhost:8800join -eQ']$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-440:localhost:8800join ,eQ']$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-439:localhost:8800join +eQ']$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-438:localhost:8800join *eQ']$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-437:localhost:8800joinm)eQ? $PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800m.room.history_visibilitye(eQ/ $tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800m.room.join_rulesg'eQ3 $YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800m.room.power_levels &eQ']$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-436:localhost:8800joina%eQ' $A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800m.room.create $eQ']$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-435:localhost:8800join #eQ']$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-434:localhost:8800join_"eQ# $u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800m.room.name %3< Z x  C a,Jh3 %Qo % %5nX]@anon-20191002_181700-447:localhost:8800@anon-20191002_181700-447:localhost:8800 anon-20191002_181700-447nW]@anon-20191002_181700-446:localhost:8800@anon-20191002_181700-446:localhost:8800 anon-20191002_181700-446nU]@anon-20191002_181700-444:localhost:8800@anon-20191002_181700-444:localhost:8800 anon-20191002_181700-444nV]@anon-20191002_181700-445:localhost:8800@anon-20191002_181700-445:localhost:8800 anon-20191002_181700-445nS]@anon-20191002_181700-442:localhost:8800@anon-20191002_181700-442:localhost:8800 anon-20191002_181700-442nR]@anon-20191002_181700-441:localhost:8800@anon-20191002_181700-441:localhost:8800 anon-20191002_181700-441nQ]@anon-20191002_181700-440:localhost:8800@anon-20191002_181700-440:localhost:8800 anon-20191002_181700-440nP]@anon-20191002_181700-439:localhost:8800@anon-20191002_181700-439:localhost:8800 anon-20191002_181700-439nO]@anon-20191002_181700-438:localhost:8800@anon-20191002_181700-438:localhost:8800 anon-20191002_181700-438nN]@anon-20191002_181700-437:localhost:8800@anon-20191002_181700-437:localhost:8800 anon-20191002_181700-437nM]@anon-20191002_181700-436:localhost:8800@anon-20191002_181700-436:localhost:8800 anon-20191002_181700-436nJ]@anon-20191002_181700-433:localhost:8800@anon-20191002_181700-433:localhost:8800 anon-20191002_181700-433nI]@anon-20191002_181700-432:localhost:8800@anon-20191002_181700-432:localhost:8800 anon-20191002_181700-432nH]@anon-20191002_181700-431:localhost:8800@anon-20191002_181700-431:localhost:8800 anon-20191002_181700-431nG]@anon-20191002_181700-430:localhost:8800@anon-20191002_181700-430:localhost:8800 anon-20191002_181700-430nF]@anon-20191002_181700-429:localhost:8800@anon-20191002_181700-429:localhost:8800 anon-20191002_181700-429nE]@anon-20191002_181700-428:localhost:8800@anon-20191002_181700-428:localhost:8800 anon-20191002_181700-428nD]@anon-20191002_181700-427:localhost:8800@anon-20191002_181700-427:localhost:8800 anon-20191002_181700-427nC]@anon-20191002_181700-426:localhost:8800@anon-20191002_181700-426:localhost:8800 anon-20191002_181700-426nB]@anon-20191002_181700-425:localhost:8800@anon-20191002_181700-425:localhost:8800 anon-20191002_181700-425nA]@anon-20191002_181700-424:localhost:8800@anon-20191002_181700-424:localhost:8800 anon-20191002_181700-424n@]@anon-20191002_181700-422:localhost:8800@anon-20191002_181700-422:localhost:8800 anon-20191002_181700-422n?]@anon-20191002_181700-421:localhost:8800@anon-20191002_181700-421:localhost:8800 anon-20191002_181700-421n>]@anon-20191002_181700-420:localhost:8800@anon-20191002_181700-420:localhost:8800 anon-20191002_181700-420n=]@anon-20191002_181700-419:localhost:8800@anon-20191002_181700-419:localhost:8800 anon-20191002_181700-419nL]@anon-20191002_181700-435:localhost:8800@anon-20191002_181700-435:localhost:8800 anon-20191002_181700-435nK]@anon-20191002_181700-434:localhost:8800@anon-20191002_181700-434:localhost:8800 anon-20191002_181700-434 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@JJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            }}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKK~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!   >br998 X   F ;  W :  ]& V  s  tUq8bVrUq)8]!@anon-20191002_181700-562:localhost:8800RUCUWRMARXM8]!@anon-20191002_181700-551:localhost:8800PDLFVATDIVB8]!@anon-20191002_181700-526:localhost:8800CNSENJMXXV*8]!@anon-20191002_181700-525:localhost:8800DQXQXDJYET)8]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOL,8]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN+6[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBX6[!@anon-20191002_181700-54:localhost:8800MQMQOGGONN\6[!@anon-20191002_181700-53:localhost:8800MVQZRCIGFUZ6[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNY6[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXU6[!@anon-20191002_181700-55:localhost:8800GJICSOZSSM]6[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTG[8]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEU8]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOH8]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKFQ8]!@anon-20191002_181700-565:localhost:8800MSICJQZBGXP8]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZO8]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOMNq78]!@anon-20191002_181700-561:localhost:8800YQDTZKECLGL8]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEEK8]!@anon-20191002_181700-559:localhost:8829ESMCXDKMPQJ8]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSI8]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDAH8]!@anon-20191002_181700-556:localhost:8800TMQBHREBEOG8]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZF8]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXSE8]!@anon-20191002_181700-553:localhost:8829UQYOPZHDDUD8]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBUC8]!@anon-20191002_181700-510:localhost:8800TMGCAARJXM 8]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNLR8]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOV>8]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSK=8]!@anon-20191002_181700-542:localhost:8829IKECMPFQXL<8]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ;8]!@anon-20191002_181700-540:localhost:8829DTIXBTNGTL:8]!@anon-20191002_181700-539:localhost:8800OLXWQXBCRO98]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ88]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ78]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCC?8]!@anon-20191002_181700-536:localhost:8800ABPPMMQYEY58]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ48]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO@8]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZ28]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRP18]!@anon-20191002_181700-534:localhost:8800FBPWXONJWM08]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS/8]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYK.8]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVRA8]!@anon-20191002_181700-524:localhost:8800IVEUVINDHF(8]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLH'8]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOV&8]!@anon-20191002_181700-520:localhost:8800LGMWFFKPIS%6[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPW6[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDV8]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWN$8]!@anon-20191002_181700-516:localhost:8800DBXNPICYFO#8]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQT8]!@anon-20191002_181700-568:localhost:8800IRGUUINXHFS8]!@anon-20191002_181700-514:localhost:8800LBNXTFJTIT"8]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHY!  g 4h5 i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2Qgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7Cllgo   *t:eQau$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2373}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc"], "type": "m.room.join_rules", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042591559, "hashes": {"sha256": "L6E8nlDmmRHe6a02U57dWyRIPP/FRh3wZ1lZID/4B44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GCODQmLjtkW5pQjITh+VJnkD0OTpXpepdQQMyl2V9D/lB3QNswlAEECo4zLpO5/v+9nsD0W6fMFqYyFzov7nDg"}}, "unsigned": {"age_ts": 1570042591559}}k9eQac$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2372}{"auth_events": ["$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "type": "m.room.power_levels", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"users": {"@anon-20191002_181700-436:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042590335, "hashes": {"sha256": "u5/OeXczXzUgs4OwoVQwGrNbumkBD2MUQ38KGgyBnXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n46a1ceaX88afGSnJvOxeD/7o+PrrapFaNfvWdHefbuYbtHbulXCJ993cExZ/K0t4vw0MoCEjATyNU1oDMO3Cg"}}, "unsigned": {"age_ts": 1570042590335}}v8eQay$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2371}{"auth_events": ["$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4"], "prev_events": ["$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-436", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-436:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042589644, "hashes": {"sha256": "TIOsrTDwTbpwUfunTrpTjVXBANva3hQwKWV61Y2MNVc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z/uCGEWqN8vSxuhRJRsIX4yTEAtJcIIutCz9mboC1XyZnDDz/k8t0dHosWQIs3q+LrVdqOsQN07MXMIlVZAWDw"}}, "unsigned": {"age_ts": 1570042589644}}i7eQa_$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2370}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-436:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042588832, "hashes": {"sha256": "LVdUbStNtXB026xOi4tFU8VNb0c8osjT0HB7GaHCObo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q0EDqg1wM3VxdQvDtgs/NFw42c2LD1hLCTXyNgBnHUwGCkUS5/nJApJtX9Pkw+40A4lHKPtYcTosgp1UF5TIAw"}}, "unsigned": {"age_ts": 1570042588832}} @UQq8  T   p 7 S  pm 7 l S o6Rn54O3P8e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIsha256 8e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQsha256 8e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIsha256 8e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGEsha256 8e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAsha2568e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0sha256 Q8e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4sha256 H8e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUsha2568e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAsha256 8e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkksha256 8e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpMsha256 ~8e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIsha256t8e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Ysha2568e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIosha2568e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUsha256 8e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsosha256-98e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQsha256 8e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0sha256x8e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8sha256`8e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4sha2568e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8sha2568e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEsha256 X8e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4sha2568e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Oksha256 8e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcsha256S8e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzosha256/8e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgwsha25608e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigsha2568e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8sha256 8e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUsha2568e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYsha256 8e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0sha256,8e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQsha2568e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6Isha2568e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBcsha2568e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcsha2568e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQsha2568e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4sha2568e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7osha256|8e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIsha2568e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEosha256 8e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4sha2568e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAsha2567e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhssha256{8e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIsha25648e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07osha2568e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agsha2568e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8csha2568e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6ksha2568e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcsha256 98e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90sha2568e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEsha25608e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMsha2568e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjksha2568e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgsha256:8e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAsha256#8e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8sha2568e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUsha2568e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwsha256&8e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0sha256 8e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4sha256f8e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067ksha2568e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMsha2568e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Asha2569 t \| 4 l<D L, % T deeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800 сeeQ$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800ceeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800=eeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800 |eeQ$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:88000eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800 \eeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800ŁeeQ$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:88008eeQ$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800 2eeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk!aZwMKYDXJRlSKjQNWM:localhost:8800~eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800}eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800|eeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800eeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800eeQ$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:8800eeQ$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800 āeeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800UeeQ$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800geeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800 eeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M!yTQmLDAxZscWKLMSWh:localhost:8800VeeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800 ́eeQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800 ˁeeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800 ʁeeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800 eeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800 !" r R [  s)czJXu^#Q/ Q k!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.join_rules$1570042628119fxxBA:localhost:8800`"Q3 Q j!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.power_levels$1570042627118OLFSV:localhost:8800!Q']Q i!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-448:localhost:8800$1570042626117sfUAQ:localhost:8800Z Q' Q h!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.create$1570042626116pKAbp:localhost:8800Q']Q f!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800$1570042623114pBHTz:localhost:8800iQ))Q d!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800$1570042621112AUAFX:localhost:8800fQ? Q c!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibility$1570042620111taWCG:localhost:8800^Q/ Q b!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rules$1570042619110gZfPB:localhost:8800cQ9 Q a!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias$1570042619109qhpUv:localhost:8800`Q3 Q `!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levels$1570042618108WWxoQ:localhost:8800Q']Q _!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800$1570042617107cANtu:localhost:8800ZQ' Q ^!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.create$1570042616106fkZGL:localhost:8800fQ? Q [!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.history_visibility$1570042613103AHxGt:localhost:8800^Q/ Q Z!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.join_rules$1570042612102sQZCG:localhost:8800`Q3 Q Y!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.power_levels$1570042611101IffRu:localhost:8800Q']Q X!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.member@anon-20191002_181700-445:localhost:8800$1570042611100ueDzK:localhost:8800YQ' O W!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.create$157004261099UmKia:localhost:88008Q']ee V!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM Q']e U!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY Q']e T!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMbQ# e S!IZkczIYykpZDvjuUWn:localhost:8800m.room.name$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0pQ? e Q!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibility$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQh Q/ e P!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAj Q3 e O!IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM Q']e N!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUd Q' e M!IZkczIYykpZDvjuUWn:localhost:8800m.room.create$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU Q']e L!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-441:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA Q']e K!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-440:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ Q']e J!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-439:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs Q']e I!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-438:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug Q']e H!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-437:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMpQ? e F!zuCqeooOnfWkYrQdxA:localhost:8800m.room.history_visibility$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVghQ/ e E!zuCqeooOnfWkYrQdxA:localhost:8800m.room.join_rules$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE w w +QwV>eQa9$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 453, "stream_ordering": 2377}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-438:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-438", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-438:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042594636, "hashes": {"sha256": "hd11V+tr4cQgArJCe4NFFwLNjQxPsIjnQ6lJ/uro+sw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3hxmRikNiEcB1eEalitcjL98SWe+x3Z1ORdo83n2AWDGx6zyxwKgvZqN7U8LYBkk4jCaYtSObsh2a1z0qhxKDQ"}}, "unsigned": {"age_ts": 1570042594636}}V=eQa9$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 455, "stream_ordering": 2376}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-437:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-437", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-437:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042593794, "hashes": {"sha256": "0+udjeZbSAoyFAB8TSQdFrnD+Sp94Md4kqjY+PI8PZ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ffhm+uYyXoYclfjDfu4Sruse5Isd6b8gntfD9qxD4rqTRc83fK7qnCsBWX//Plm95M7xqsYCZtVKesaONddACQ"}}, "unsigned": {"age_ts": 1570042593794}}H<eQa$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2375}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg"], "type": "m.room.test", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042593333, "hashes": {"sha256": "8M6il+k+tm09aBPY0AjqrPyV+H/Y9eJuGxLEQTQxGwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OMKb23lmcxfPQDqb6VPHPV1ZXdrQJ81ybidhKYq265NHQvnYuOtOeAGGz4NLPUxMQq9hXfIaG2BjwrRH9V0/Cg"}}, "unsigned": {"age_ts": 1570042593333}};eQa$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2374}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "type": "m.room.history_visibility", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042592232, "hashes": {"sha256": "MXQRFX6QItbzG7UoF6Wms5T8fghHiLLE2eUeARhPVKY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TzQC6fgjR8Il8+rS8Kd+LbWaf5XkVp37h6lSpzvNcc5bhAjRWrV6tRxVq6svrRCF6Pa9Hy9ghxjmi/4ApYUXDg"}}, "unsigned": {"age_ts": 1570042592232}} JTN0 | \Z( 6 V $zBHt"n <j J 8hp *b >   v D P 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow j1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY B1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Et1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Es1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI 1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY C1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cn1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAy1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAx1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAw1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M[1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MZ1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug+1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8>1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8=1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8<1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3co1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Er1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cp1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU-1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU,1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU+1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkP1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE 1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE 1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE 1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI.1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI-1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx81e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug-1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug,1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MY a} { y w u sqomkigeca~3eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~2eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~1eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~0eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~/eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~.eeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~-eeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~,eeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~+eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~*eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~)eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~(eeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~'eeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~&eeQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~%eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~$eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~#eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~"eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~!eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~ eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800 Yd0`, \ ( W -  [ 1  _ 5 c 9 g=kCqGwM#{Q'U+Y/_5 'Q$1570042672173XsxsH:localhost:8800'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800'Q$1570042670170TtDpX:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042668168uCbYK:localhost:8800'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'~Q$1570042665164nYKmj:localhost:8800'}Q$1570042664163IAHXd:localhost:8800'|Q$1570042663162sQrEh:localhost:8800'{Q$1570042662161lGrSW:localhost:8800'zQ$1570042662160SrmtM:localhost:8800'yQ$1570042661159xQwJK:localhost:8800'xQ$1570042661158igwHF:localhost:8800'wQ$1570042660157svDcU:localhost:8800'vQ$1570042660156wxhvl:localhost:8800'uQ$1570042659155mEUeP:localhost:8800'tQ$1570042659154Fztdf:localhost:8800'sQ$1570042658153tmCYJ:localhost:8800'rQ$1570042658152btGpA:localhost:8800'qQ$1570042657151cITOZ:localhost:8800'pQ$1570042656150UsLRz:localhost:8800'oQ$1570042656149JNVWR:localhost:8800'nQ$1570042655148eXOyA:localhost:8800'mQ$1570042654147iSsjl:localhost:8800'lQ$1570042653146dGCce:localhost:8800'kQ$1570042651145wBynt:localhost:8800%jM$15700426501OLytM:localhost:8829'iQ$1570042649143JxPAB:localhost:8800'hQ$1570042648142spuws:localhost:8800'gQ$1570042648141xSHQB:localhost:8800'fQ$1570042647140rNeEf:localhost:8800'eQ$1570042646139VXLYO:localhost:8800'dQ$1570042646138YEunv:localhost:8800'cQ$1570042645137fBnPZ:localhost:8800'bQ$1570042644136OugnY:localhost:8800'aQ$1570042642135oMfQy:localhost:8800%`M$15700426410cEjWu:localhost:8829'_Q$1570042640133wGmrF:localhost:8800'^Q$1570042639132zhjjB:localhost:8800']Q$1570042638131kazZm:localhost:8800'\Q$1570042637130zlkqP:localhost:8800'[Q$1570042636129shBTe:localhost:8800'ZQ$1570042635128KJCvL:localhost:8800'YQ$1570042634127eDBry:localhost:8800'XQ$1570042634126YmPkp:localhost:8800'WQ$1570042632125lwdOR:localhost:8800'VQ$1570042632124bMwzE:localhost:8800'UQ$1570042631123SLyGA:localhost:8800'TQ$1570042630122bUTeO:localhost:8800'SQ$1570042629121nZoNG:localhost:8800'RQ$1570042629120wtVFY:localhost:8800'QQ$1570042628119fxxBA:localhost:8800'PQ$1570042627118OLFSV:localhost:8800'OQ$1570042626117sfUAQ:localhost:8800'NQ$1570042626116pKAbp:localhost:8800'MQ$1570042624115nZtIB:localhost:8800'LQ$1570042623114pBHTz:localhost:8800'KQ$1570042622113mtzjt:localhost:8800'JQ$1570042621112AUAFX:localhost:8800'IQ$1570042620111taWCG:localhost:8800'HQ$1570042619110gZfPB:localhost:8800'GQ$1570042619109qhpUv:localhost:8800'FQ$1570042618108WWxoQ:localhost:8800'EQ$1570042617107cANtu:localhost:8800'DQ$1570042616106fkZGL:localhost:8800'CQ$1570042615105OKfnm:localhost:8800'BQ$1570042614104FELge:localhost:8800'AQ$1570042613103AHxGt:localhost:8800'@Q$1570042612102sQZCG:localhost:8800'?Q$1570042611101IffRu:localhost:8800'>Q$1570042611100ueDzK:localhost:8800&=O$157004261099UmKia:localhost:88001<e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1;e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1:e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM19e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl018e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO817e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ16e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA15e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM14e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU13e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU12e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA11e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ10e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1/e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug  !  MQQa% $1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2392}{"auth_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}]], "prev_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}]], "type": "m.room.member", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-445", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-445:localhost:8800", "event_id": "$1570042611100ueDzK:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042611115, "hashes": {"sha256": "jUPXoblzXRTnsJYqM7Tus5vU86xYMv9X41AStcmEAgw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/haBxUEbWsS+fsbFxDBDBfA+NPEg1GHsGBTuxyVI4q4NEG2EXLAaS/4QN5hWMtSGOtcqNJDv+n5ImHsq5ixHDw"}}, "unsigned": {"age_ts": 1570042611115}}LOQaA $157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2391}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-445:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004261099UmKia:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042610150, "hashes": {"sha256": "zRVh71KyUquOhGkMbWOtsn5OxNQ51QgcGHEX5bnnMJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FwHE+R1AFxhE5m/kmTrxeugWFaYel7G6Ee3IkKWlHKdWy2dRkzFZHjGeVcdVHo6/AAEbmY9Uj3a/29FeN30sCQ"}}, "unsigned": {"age_ts": 1570042610150}}[KeQaC$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 460, "stream_ordering": 2390}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM"], "prev_events": ["$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-443:localhost:8800", "content": {"membership": "leave"}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-443:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042608686, "hashes": {"sha256": "VJv9G5Hieo6yYRLDjeLC5gNUoifUBJeC2J9fXRSGA54"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TdO92G1EBibdnKIwiw6C0kXm99wxcvFqgHktJYnBtJyDTjeNtyWtQgB0RMRGzKFR0ZOJntnhDCtui1/f3NlSAQ"}}, "unsigned": {"age_ts": 1570042608686, "replaces_state": "$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM"}} C|M}Jl7g4 d / c . ^ + ] * Z '[*Z'W"R|IyD40[@anon-20191002_181700-53:localhost:8800af4]@anon-20191002_181700-499:localhost:8800m2]@anon-20191002_181700-499:localhost:8800a4]@anon-20191002_181700-497:localhost:8800m2]@anon-20191002_181700-497:localhost:8800a4]@anon-20191002_181700-495:localhost:8800m2]@anon-20191002_181700-495:localhost:8800a4]@anon-20191002_181700-494:localhost:8800m2]@anon-20191002_181700-494:localhost:8800a4]@anon-20191002_181700-493:localhost:8800m4]@anon-20191002_181700-539:localhost:8800m2]@anon-20191002_181700-539:localhost:8800a4]@anon-20191002_181700-538:localhost:8800m2]@anon-20191002_181700-538:localhost:8800a4]@anon-20191002_181700-537:localhost:8800m2]@anon-20191002_181700-537:localhost:8800a4]@anon-20191002_181700-536:localhost:8800m2]@anon-20191002_181700-536:localhost:8800a4]@anon-20191002_181700-535:localhost:8800m2]@anon-20191002_181700-535:localhost:8800a4]@anon-20191002_181700-534:localhost:8800m2]@anon-20191002_181700-534:localhost:8800a4]@anon-20191002_181700-533:localhost:8800m2]@anon-20191002_181700-533:localhost:8800a4]@anon-20191002_181700-532:localhost:8800m2]@anon-20191002_181700-532:localhost:8800a4]@anon-20191002_181700-531:localhost:8800m2]@anon-20191002_181700-531:localhost:8800a0[@anon-20191002_181700-52:localhost:8800ae2]@anon-20191002_181700-529:localhost:8800a2]@anon-20191002_181700-527:localhost:8800a2]@anon-20191002_181700-526:localhost:8800a2]@anon-20191002_181700-525:localhost:8800a2]@anon-20191002_181700-524:localhost:8800a2]@anon-20191002_181700-523:localhost:8800a4]@anon-20191002_181700-521:localhost:8800m2]@anon-20191002_181700-521:localhost:8800a4]@anon-20191002_181700-520:localhost:8800m2]@anon-20191002_181700-520:localhost:8800a0[@anon-20191002_181700-51:localhost:8800ad4]@anon-20191002_181700-518:localhost:8800m2]@anon-20191002_181700-518:localhost:8800a4]@anon-20191002_181700-516:localhost:8800m2]@anon-20191002_181700-516:localhost:8800a4]@anon-20191002_181700-514:localhost:8800m2]@anon-20191002_181700-514:localhost:8800a4]@anon-20191002_181700-512:localhost:8800m2]@anon-20191002_181700-512:localhost:8800a4]@anon-20191002_181700-510:localhost:8800m2]@anon-20191002_181700-510:localhost:8800a0[@anon-20191002_181700-50:localhost:8800ac4]@anon-20191002_181700-509:localhost:8800m2]@anon-20191002_181700-509:localhost:8800a4]@anon-20191002_181700-508:localhost:8800m2]@anon-20191002_181700-508:localhost:8800a4]@anon-20191002_181700-507:localhost:8800m2]@anon-20191002_181700-507:localhost:8800a4]@anon-20191002_181700-506:localhost:8800m2]@anon-20191002_181700-506:localhost:8800a4]@anon-20191002_181700-505:localhost:8800m2]@anon-20191002_181700-505:localhost:8800a4]@anon-20191002_181700-503:localhost:8800m2]@anon-20191002_181700-503:localhost:8800a4]@anon-20191002_181700-501:localhost:8800m2]@anon-20191002_181700-501:localhost:8800a/Y@anon-20191002_181700-4:localhost:8800a!0[@anon-20191002_181700-49:localhost:8800ab 7SO@@ E  E  G  G I I K K MOSW?]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCCmے=[!@anon-20191002_181700-48:localhost:8800XFFXACSKIDm6%=[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWm6$?]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZm!?]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDSm?]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNUmײ?]!@anon-20191002_181700-482:localhost:8800JRYARQINGZmא?]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLSmm?]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOVmY?]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSKm(?]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJm=[!@anon-20191002_181700-53:localhost:8800MVQZRCIGFUmF*=[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNmG+?]!@anon-20191002_181700-539:localhost:8800OLXWQXBCROm#?]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZm?]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJm̌?]!@anon-20191002_181700-536:localhost:8800ABPPMMQYEYm*?]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQmگ?]!@anon-20191002_181700-534:localhost:8800FBPWXONJWMmڤ?]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRPmڕ(?]!@anon-20191002_181700-532:localhost:8800FXXARIFXSSmڋY?]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYKm{=[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBmBj)?]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOLmv?]!@anon-20191002_181700-527:localhost:8800BACKHRSCZNmr2?]!@anon-20191002_181700-526:localhost:8800CNSENJMXXVmo?]!@anon-20191002_181700-525:localhost:8800DQXQXDJYETml?]!@anon-20191002_181700-524:localhost:8800IVEUVINDHFmh?]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLHmf}?]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOVm@?]!@anon-20191002_181700-520:localhost:8800LGMWFFKPISm?=[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDm?(?]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWNm?]!@anon-20191002_181700-516:localhost:8800DBXNPICYFOm?]!@anon-20191002_181700-514:localhost:8800LBNXTFJTITm՞?]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHYmٴ?]!@anon-20191002_181700-510:localhost:8800TMGCAARJXMmَ=[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXm='?]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOVmق|?]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEUmj?]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOHm`?]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTLmG?]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQAm/?]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQMm i?]!@anon-20191002_181700-501:localhost:8800YBYGOFEONKm<Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVLms-=[!@anon-20191002_181700-49:localhost:8800XXZIHXDAZYm:&?]!@anon-20191002_181700-499:localhost:8800VXSECXNERAm¤?]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSCm؞?]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZm|W?]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQmo?]!@anon-20191002_181700-493:localhost:8800GRPWUCANVUmY??]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQTmOs?]!@anon-20191002_181700-491:localhost:8800SADWUTCSYMm3_?]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBUm  &KpiBeQa_$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2381}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-442:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042600364, "hashes": {"sha256": "i4ezfbAQn5Gyv9zTm74OQg1dxmqcwGR3L6+tF1ZsSJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aKHAEcgqMEkDM09DZCpiTa4ielUEoMLJ/0US7udDezZ7I6x5r5QtvXLgbboGK2iJOxIZQ5vl3nAP/CdLxSAbBg"}}, "unsigned": {"age_ts": 1570042600364}}WAeQa;$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 458, "stream_ordering": 2380}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-441:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-441", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-441:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042597912, "hashes": {"sha256": "ZY6xuEIiZ+D9HBjA9c2NkK6k2GDFQbqhLl+DGRdn6UU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fosLyPSxGMysLdGdrj8sryPIRTdx4Q0/uEjEZ7CpDBy2au1sjO6WZDsZbvbCjglPsTDBk7m4qAojuE/lsJjHDw"}}, "unsigned": {"age_ts": 1570042597912}}W@eQa;$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 457, "stream_ordering": 2379}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-440:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-440", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-440:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042596828, "hashes": {"sha256": "6wRfTfphftr9lzQVJajtFCbwqQBwB8toiMK0ID42CCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CDlP7/E0U/TSM4PqTuMvpDH0zlnlFTLO5x/VdYRiBEmuCqxK0Yx7WkRVnux7v81qF9IoqyJJ8+GorLSTCqCrAA"}}, "unsigned": {"age_ts": 1570042596828}}V?eQa9$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 456, "stream_ordering": 2378}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-439:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-439", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-439:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042595922, "hashes": {"sha256": "TI7k0A+hW8d361hS4AjZUkty5KYaFjOMPZg4zt5MfvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EunssoUuQgAusCw8Hb37wGGUvGTJq9tkKZEN0GLSb7l1N1hRGzC7Gt0Y5DDrlvm8rmkA3unm6rA4K7x4SX7wBQ"}}, "unsigned": {"age_ts": 1570042595922}} ?\ r p , @o+`&?"cQ?Q ]$1570042620111taWCG:localhost:8800m.room.history_visibility!ePtMOPPOgOcBIMNZpn:localhost:8800m*Om+@anon-20191002_181700-446:localhost:8800bQ/Q ]$1570042619110gZfPB:localhost:8800m.room.join_rules!ePtMOPPOgOcBIMNZpn:localhost:8800m'm(@anon-20191002_181700-446:localhost:8800aQ9Q ]$1570042619109qhpUv:localhost:8800m.room.canonical_alias!ePtMOPPOgOcBIMNZpn:localhost:8800m$m% @anon-20191002_181700-446:localhost:8800`Q3Q ]$1570042618108WWxoQ:localhost:8800m.room.power_levels!ePtMOPPOgOcBIMNZpn:localhost:8800m!m"e@anon-20191002_181700-446:localhost:8800_Q'Q ]$1570042617107cANtu:localhost:8800m.room.member!ePtMOPPOgOcBIMNZpn:localhost:8800m m~@anon-20191002_181700-446:localhost:8800^ Q'Q  ]$1570042616106fkZGL:localhost:8800m.room.create!ePtMOPPOgOcBIMNZpn:localhost:8800mmH@anon-20191002_181700-446:localhost:8800]Q)Q ]$1570042615105OKfnm:localhost:8800m.room.message!YGUjVdVdpcQoGkRnWB:localhost:8800m)m-@anon-20191002_181700-445:localhost:8800\Q#Q ]$1570042614104FELge:localhost:8800m.room.test!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800"[Q?Q ]$1570042613103AHxGt:localhost:8800m.room.history_visibility!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800ZQ/Q ]$1570042612102sQZCG:localhost:8800m.room.join_rules!YGUjVdVdpcQoGkRnWB:localhost:8800m m I@anon-20191002_181700-445:localhost:8800YQ3Q ]$1570042611101IffRu:localhost:8800m.room.power_levels!YGUjVdVdpcQoGkRnWB:localhost:8800m m @anon-20191002_181700-445:localhost:8800XQ'Q ]$1570042611100ueDzK:localhost:8800m.room.member!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800W O'Q  ]$157004261099UmKia:localhost:8800m.room.create!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800 Ve'Q ] $EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPEm.room.member!IZkczIYykpZDvjuUWn:localhost:8800 m.m@anon-20191002_181700-443:localhost:8800 Ue'Q ] $mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYm.room.member!IZkczIYykpZDvjuUWn:localhost:8800 mwmF@anon-20191002_181700-444:localhost:8800 Te'Q ]$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMm.room.member!IZkczIYykpZDvjuUWn:localhost:8800m<m@anon-20191002_181700-443:localhost:8800Se#Q ]$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0m.room.name!IZkczIYykpZDvjuUWn:localhost:8800m&m@anon-20191002_181700-442:localhost:8800Re#Q ]$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8m.room.test!IZkczIYykpZDvjuUWn:localhost:8800m;m?@anon-20191002_181700-442:localhost:8800,Qe?Q ]$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQm.room.history_visibility!IZkczIYykpZDvjuUWn:localhost:8800mm@anon-20191002_181700-442:localhost:8800$Pe/Q ]$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAm.room.join_rules!IZkczIYykpZDvjuUWn:localhost:8800m#m@anon-20191002_181700-442:localhost:8800&Oe3Q ]$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMm.room.power_levels!IZkczIYykpZDvjuUWn:localhost:8800mm@anon-20191002_181700-442:localhost:8800 Ne'Q ]$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUm.room.member!IZkczIYykpZDvjuUWn:localhost:8800m,mޚ@anon-20191002_181700-442:localhost:8800M e'Q  ]$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUm.room.create!IZkczIYykpZDvjuUWn:localhost:8800m۬m@anon-20191002_181700-442:localhost:8800 Le'Q ] $viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800 mm@anon-20191002_181700-441:localhost:8800 Ke'Q ] $AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800 mmB@anon-20191002_181700-440:localhost:8800 y9r 4 w @LXy  M]]Q$15700426692GLpqH:localhost:8829@anon-20191002_181700-457:localhost:8829@anon-20191002_181700-457:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800leave; Q]]Q=$1570042667167mhSmJ:localhost:8800@anon-20191002_181700-457:localhost:8829@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800inviteanon-20191002_181700-4579 Q]]Q=$1570042664163IAHXd:localhost:8800@anon-20191002_181700-456:localhost:8800@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800joinanon-20191002_181700-456; Q]]Q=$1570042657151cITOZ:localhost:8800@anon-20191002_181700-455:localhost:8829@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800inviteanon-20191002_181700-4559 Q]]Q=$1570042654147iSsjl:localhost:8800@anon-20191002_181700-454:localhost:8800@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800joinanon-20191002_181700-4547 M]]Q=$15700426501OLytM:localhost:8829@anon-20191002_181700-453:localhost:8829@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800joinanon-20191002_181700-453; Q]]Q=$1570042649143JxPAB:localhost:8800@anon-20191002_181700-453:localhost:8829@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800inviteanon-20191002_181700-4539 Q]]Q=$1570042645137fBnPZ:localhost:8800@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800joinanon-20191002_181700-4527 M]]Q=$15700426410cEjWu:localhost:8829@anon-20191002_181700-451:localhost:8829@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800joinanon-20191002_181700-4519 Q]]Q=$1570042634127eDBry:localhost:8800@anon-20191002_181700-450:localhost:8800@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800joinanon-20191002_181700-4509 Q]]Q=$1570042632124bMwzE:localhost:8800@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800joinanon-20191002_181700-449; Q]]Q=$1570042631123SLyGA:localhost:8800@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800inviteanon-20191002_181700-4499 Q]]Q=$1570042626117sfUAQ:localhost:8800@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800joinanon-20191002_181700-4489 Q]]Q=$1570042623114pBHTz:localhost:8800@anon-20191002_181700-447:localhost:8800@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800joinanon-20191002_181700-4479 Q]]Q=$1570042617107cANtu:localhost:8800@anon-20191002_181700-446:localhost:8800@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800joinanon-20191002_181700-4469 Q]]Q=$1570042611100ueDzK:localhost:8800@anon-20191002_181700-445:localhost:8800@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800joinanon-20191002_181700-445, e]]Q$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE@anon-20191002_181700-443:localhost:8800@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800leaveC e]]Q=$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY@anon-20191002_181700-444:localhost:8800@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800joinanon-20191002_181700-444C e]]Q=$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM@anon-20191002_181700-443:localhost:8800@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800joinanon-20191002_181700-443C e]]Q=$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU@anon-20191002_181700-442:localhost:8800@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800joinanon-20191002_181700-442C e]]Q=$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA@anon-20191002_181700-441:localhost:8800@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-441 g * T~=ggN]!c@anon-20191002_181700-458:localhost:8800BKBKPFYUSGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAogM]!c@anon-20191002_181700-456:localhost:8800CRSASZJZPSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQogL]!c@anon-20191002_181700-454:localhost:8800BXAWMRWQLAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwogK]!c@anon-20191002_181700-452:localhost:8800NISMZSIYDMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwogJ]!c@anon-20191002_181700-450:localhost:8800JKUEUBZDECMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwogI]!c@anon-20191002_181700-448:localhost:8800LJFADOXYLPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAogH]!c@anon-20191002_181700-449:localhost:8800MYBVEJZYHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAogG]!c@anon-20191002_181700-446:localhost:8800JWCYKNRWXJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0wogF]!c@anon-20191002_181700-447:localhost:8800VKYHTJKXLWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywogE]!c@anon-20191002_181700-445:localhost:8800IBQSIDYLYFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAogD]!c@anon-20191002_181700-444:localhost:8800OXPWWQTOCJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-Mgo 8l D `88]c!E@anon-20191002_181700-448:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAoLJFADOXYLP127.0.0.1Perl + Net::Async::HTTP/0.44m?R7]c!E@anon-20191002_181700-447:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywoVKYHTJKXLW127.0.0.1Perl + Net::Async::HTTP/0.44m4^6]c!E@anon-20191002_181700-446:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0woJWCYKNRWXJ127.0.0.1Perl + Net::Async::HTTP/0.44m5]c!E@anon-20191002_181700-445:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAoIBQSIDYLYF127.0.0.1Perl + Net::Async::HTTP/0.44m4]c!E@anon-20191002_181700-444:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-MgoOXPWWQTOCJ127.0.0.1Perl + Net::Async::HTTP/0.44md3]c!E@anon-20191002_181700-443:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5Da1ZYVGEsbVJOZmI1dCYKMDAyZnNpZ25hdHVyZSBjz-vUfZk1Zkypt5OEijykhRSxh43fSCBn96gcrHzhqAoEZTQKOQREE127.0.0.1Perl + Net::Async::HTTP/0.44m2]c!E@anon-20191002_181700-442:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY5Ni5nNmJVdVc3TVQwd0gKMDAyZnNpZ25hdHVyZSBnyuRDIco-3F101-WmUcWzSotfzDJSJ1tRM1jivmRsOAoICXJFYTXBA127.0.0.1Perl + Net::Async::HTTP/0.44mړ1]c!E@anon-20191002_181700-441:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtabDZuOFRSSyZ4U2U1NzUKMDAyZnNpZ25hdHVyZSA2B1qWMNWGc58YXM1YhnKM2QCsGLDKkznatQDfh-YpqQoMUSKUFQFQV127.0.0.1Perl + Net::Async::HTTP/0.44m0]c!E@anon-20191002_181700-440:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFacUN2dzJMWTcjMnh6S04KMDAyZnNpZ25hdHVyZSBIE31dBp2khHIslpt9L2ttXRkowx20GElKVJtaEFSdkgoOHPAOKURKK127.0.0.1Perl + Net::Async::HTTP/0.44m˃/]c!E@anon-20191002_181700-439:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg2MU1hXm5BPV9mY3pHSDIKMDAyZnNpZ25hdHVyZSDYwznq40c_q4a6OD39IVJeXYATWzSsye1YD37lAobSewoCVIXABNKXU127.0.0.1Perl + Net::Async::HTTP/0.44mB  FeQa$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2385}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA"], "type": "m.room.history_visibility", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042603006, "hashes": {"sha256": "ss9wIYhlAVW6oG/tMRxF1kvs5lTkU1GOSC+WZMAmeHs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7B2fLVYjATquYewufyLV8WD99rIZqPCBU5NWnJZaNHkvQhH9rMoOuUmsmla3TNrniaix37IKiJYPDcPwN1SvBQ"}}, "unsigned": {"age_ts": 1570042603006}}tEeQau$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2384}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM"], "type": "m.room.join_rules", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042602275, "hashes": {"sha256": "Ll8QqmKNOsCfprfh9biuIKml9Yi43jx7H+ah6CIi0eg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lPWP/5Z8qRXhSmCiq4Ab9pxCHODF+V347JK7yjdTffv/DFkoqkDf3fdueqCKZzO2MhRV5HPe1ld5+cvXZd4/CA"}}, "unsigned": {"age_ts": 1570042602275}}kDeQac$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2383}{"auth_events": ["$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "type": "m.room.power_levels", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"users": {"@anon-20191002_181700-442:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042601627, "hashes": {"sha256": "Bi+NWaUN8bo7limUEq7soFsq9QDQ1qSY3Kdfm1/5me8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Thnj07SI9PVHfWePqYvFodUx7yOzUvlBAb2Xskt1nVSHN4Z5+eSAL8FW9qIBQmDzrOdV1OTcVJUU9StchDyaCQ"}}, "unsigned": {"age_ts": 1570042601627}}vCeQay$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2382}{"auth_events": ["$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU"], "prev_events": ["$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-442", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-442:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042601004, "hashes": {"sha256": "baTAdAQZ4A3vcdRhInQxwgcCPWmtFycJ9JHKdf4xgKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whc4OHtUx6R47FFUq1PrrMs5Ng6Xe1QRZwKEFEm0OFBjKQydRwstfNwugTSH65ReeKqZ+NsxAjIkRdjjQlJLBw"}}, "unsigned": {"age_ts": 1570042601004}} KXp>2 v D  } K   R X & ^ ,dj8&p> ^vD|KQ,j81e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY 1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic 1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk 1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y 1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU i1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo 1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcs1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg $1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYR1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo<1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc:0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY*1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4/1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsZ1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQh1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4EA1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kq1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg{1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc 51e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroC1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c 0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioS1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM781e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAX1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIn1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU 1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwO1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4L $(9  D D #Tx8rn2q "W4QQ' $1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.create}3MQ']$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829f2QQ))$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800c1QQ? $1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibility[0QQ/ $1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rules`/QQ9 $1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_alias].QQ3 $1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levels-QQ']$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800W,QQ' $1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.create+QQ']$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800*QQ']$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800])QQ3 $1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.guest_accessc(QQ? $1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.history_visibility['QQ/ $1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.join_rules]&QQ3 $1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.power_levels%QQ']$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-448:localhost:8800W$QQ' $1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.create#QQ']$1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800f"QQ))$1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800c!QQ? $1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibility[ QQ/ $1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rules`QQ9 $1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias]QQ3 $1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levelsQQ']$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800WQQ' $1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.createcQQ? $1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.history_visibility[QQ/ $1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.join_rules]QQ3 $1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.power_levelsQQ']$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.member@anon-20191002_181700-445:localhost:8800VOQ' $157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.create eQ']$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800 eQ']$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:8800 eQ']$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800_eQ# $qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800m.room.namemeQ? $lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibilityeeQ/ $e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules  BhVJeQa9$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 461, "stream_ordering": 2389}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA"], "prev_events": ["$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-444:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-444", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-444:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042607479, "hashes": {"sha256": "oXRz3lfOI5rMX/XwfxM+K0D3XlMe6uLqDBFL/TA3jIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/VVD8ezRzel1CYadHk5K1BiKfSecq7g6Z6YgMz1UlMamU9cPkCeMDs+7vkE/rnA2HUnoqx8Y2iPfG9d1KmSdBw"}}, "unsigned": {"age_ts": 1570042607479}}VIeQa9$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 460, "stream_ordering": 2388}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA"], "prev_events": ["$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-443:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-443", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-443:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042605884, "hashes": {"sha256": "/xIwZ8+L7OHazE1fr4C/fJD+jSaCyBgbOHajSTduhek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bHxHQziZpaTiI6DFtaJAVxRPBdxsHr8i4/OcBniagR+ARN9h2IU/Den38lxeBByvs9CZk6VAOkzxGUQhbmMsDA"}}, "unsigned": {"age_ts": 1570042605884}}nHeQai$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2387}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8"], "type": "m.room.name", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042604582, "hashes": {"sha256": "4ImFZRE2E77HJE5TCaEMxgtoF5kyqaMz0G7sDl6xtrI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6u+t7+sOLs4BmzrzfQh6/fEsXiIhcqXDSb8hgAwJI4WZSG2d+Qe+VSP6laESKbGARSKjQ/Y3/RGagMfOqYBRCQ"}}, "unsigned": {"age_ts": 1570042604582}}HGeQa$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2386}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ"], "type": "m.room.test", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042604091, "hashes": {"sha256": "1H31Wd387WLqR8TtYJ/pZUDz3wuNr9e4mZA0s8fDJTA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yVgaKvH9KvAq2CJb2oE8JfDAFb3iZ5r88B4zNdPj+/L4XfsPkKOlF5eL4SSiHanTlbZ4kVCEjTZrvMM02He4Cg"}}, "unsigned": {"age_ts": 1570042604091}} J    v8 D p  n \*uCb $ { PJ |0XQj  $<h6 \ * V  J> 1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc 1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4v1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm461e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A&1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k401e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk%1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk61e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I-1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk.1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjot0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAce0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT471e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQEu1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksO1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0E1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgm1e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIS1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8`1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvoG1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo 1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s 1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAp1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg&1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To 21e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 "1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY21e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4(1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw 1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8J1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8H1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 Y1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk 61e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k >1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 41e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM 21e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 O1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 21e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA ~ 3Rb { . G `  y , E^w*C\u*C\u*JBQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042653146dGCce:localhost:8800JAQQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042651145wBynt:localhost:8800H@QM !GSxvxNevpCiwmFCHys:localhost:8800$15700426501OLytM:localhost:8829J?QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042649143JxPAB:localhost:8800J>QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042648142spuws:localhost:8800J=QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042648141xSHQB:localhost:8800J<QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042647140rNeEf:localhost:8800J;QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042646139VXLYO:localhost:8800J:QQ ~!GSxvxNevpCiwmFCHys:localhost:8800$1570042646138YEunv:localhost:8800J9QQ }!GSxvxNevpCiwmFCHys:localhost:8800$1570042645137fBnPZ:localhost:8800J8QQ |!GSxvxNevpCiwmFCHys:localhost:8800$1570042644136OugnY:localhost:8800J7QQ {!yfizglmCXdcqCgDrTr:localhost:8800$1570042642135oMfQy:localhost:8800H6QM z!yfizglmCXdcqCgDrTr:localhost:8800$15700426410cEjWu:localhost:8829J5QQ y!yfizglmCXdcqCgDrTr:localhost:8800$1570042640133wGmrF:localhost:8800J4QQ x!yfizglmCXdcqCgDrTr:localhost:8800$1570042639132zhjjB:localhost:8800J3QQ w!yfizglmCXdcqCgDrTr:localhost:8800$1570042638131kazZm:localhost:8800J2QQ v!yfizglmCXdcqCgDrTr:localhost:8800$1570042637130zlkqP:localhost:8800J1QQ u!yfizglmCXdcqCgDrTr:localhost:8800$1570042636129shBTe:localhost:8800J0QQ t!yfizglmCXdcqCgDrTr:localhost:8800$1570042635128KJCvL:localhost:8800J/QQ s!yfizglmCXdcqCgDrTr:localhost:8800$1570042634127eDBry:localhost:8800J.QQ r!yfizglmCXdcqCgDrTr:localhost:8800$1570042634126YmPkp:localhost:8800J-QQ q!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632125lwdOR:localhost:8800J,QQ p!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632124bMwzE:localhost:8800J+QQ o!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042631123SLyGA:localhost:8800J*QQ n!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042630122bUTeO:localhost:8800J)QQ m!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629121nZoNG:localhost:8800J(QQ l!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629120wtVFY:localhost:8800J'QQ k!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042628119fxxBA:localhost:8800J&QQ j!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042627118OLFSV:localhost:8800J%QQ i!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626117sfUAQ:localhost:8800J$QQ h!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626116pKAbp:localhost:8800J#QQ g!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042624115nZtIB:localhost:8800J"QQ f!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042623114pBHTz:localhost:8800J!QQ e!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042622113mtzjt:localhost:8800J QQ d!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042621112AUAFX:localhost:8800JQQ c!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042620111taWCG:localhost:8800JQQ b!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619110gZfPB:localhost:8800JQQ a!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619109qhpUv:localhost:8800JQQ `!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042618108WWxoQ:localhost:8800JQQ _!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042617107cANtu:localhost:8800JQQ ^!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042616106fkZGL:localhost:8800JQQ ]!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042615105OKfnm:localhost:8800JQQ \!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042614104FELge:localhost:8800JQQ [!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042613103AHxGt:localhost:8800JQQ Z!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042612102sQZCG:localhost:8800JQQ Y!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611101IffRu:localhost:8800JQQ X!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611100ueDzK:localhost:8800IQO W!YGUjVdVdpcQoGkRnWB:localhost:8800$157004261099UmKia:localhost:8800TQe V!IZkczIYykpZDvjuUWn:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPETQe U!IZkczIYykpZDvjuUWn:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYTQe T!IZkczIYykpZDvjuUWn:localhost:8800$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM #} { y 4 [ ;a@fEkjVQQQ$1570042626117sfUAQ:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jUQQQ$1570042623114pBHTz:localhost:8800$1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jTQQQ$1570042623114pBHTz:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jSQQQ$1570042623114pBHTz:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jRQQQ$1570042621112AUAFX:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jQQQQ$1570042621112AUAFX:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jPQQQ$1570042621112AUAFX:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jOQQQ$1570042620111taWCG:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jNQQQ$1570042620111taWCG:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jMQQQ$1570042620111taWCG:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jLQQQ$1570042619110gZfPB:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jKQQQ$1570042619110gZfPB:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jJQQQ$1570042619110gZfPB:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jIQQQ$1570042619109qhpUv:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jHQQQ$1570042619109qhpUv:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jGQQQ$1570042619109qhpUv:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jFQQQ$1570042618108WWxoQ:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jEQQQ$1570042618108WWxoQ:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jDQQQ$1570042617107cANtu:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jCQQQ$1570042613103AHxGt:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800iBQOQ$1570042613103AHxGt:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800jAQQQ$1570042613103AHxGt:localhost:8800$1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800j@QQQ$1570042612102sQZCG:localhost:8800$1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800j?QQQ$1570042612102sQZCG:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800i>QOQ$1570042612102sQZCG:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800j=QQQ$1570042611101IffRu:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800i<QOQ$1570042611101IffRu:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800i;QOQ$1570042611100ueDzK:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800~:eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800~9eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~8eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~7eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800~6eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~5eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~4eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800  hwPQQa $1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2395}{"auth_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}], ["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042612102sQZCG:localhost:8800", {"sha256": "gLgwTvcW8TKy296prK9JXfJRK0CutFaiBpCgK5gKt00"}]], "type": "m.room.history_visibility", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042613103AHxGt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042613405, "hashes": {"sha256": "MkvRXkd+CMZ76tQ7mh2b13xtL5uqE6RAqD3quZtXPgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OlANDhfDynVPtvKqHKgYkelhjoDx9IDNbGzLVGI3jH9FNs0bu8BZY6eCjcwJzqOP23TIW2hIcvEl3PvlbKpzDA"}}, "unsigned": {"age_ts": 1570042613405}}fOQQao $1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2394}{"auth_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}], ["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}]], "prev_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}]], "type": "m.room.join_rules", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042612102sQZCG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042612695, "hashes": {"sha256": "FW6IgXtTj5hCcaQsgRJjAEq5+iMxjWunswAS/eufQks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aYx8O+OvLSyWE8NRIGvjcRryf3OlY34bbCgdv4JB+aDzm2G44hrcY19hun+TUy9rbzNQvS0qhg3dkF3VMWH5AQ"}}, "unsigned": {"age_ts": 1570042612695}}*NQQaw $1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2393}{"auth_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "type": "m.room.power_levels", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"users": {"@anon-20191002_181700-445:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042611101IffRu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042611993, "hashes": {"sha256": "RKquTgdsYYEhoO3BMAAxOiCzyg/bbMrrPiXGHqpOV00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l9XpwOph0kb2x4E1HPhN5B2ViQpxu5DPlmlnKe08ctPeyfslA+KPs7eBVW8wX+N02o/H/jpegOUcAye/TUv/CA"}}, "unsigned": {"age_ts": 1570042611993}} 0 K70TQQa) $1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2399}{"auth_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}]], "prev_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}]], "type": "m.room.member", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-446", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-446:localhost:8800", "event_id": "$1570042617107cANtu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042617610, "hashes": {"sha256": "/8dLoISN7ucSPg7LWfSl9fainL8lF6qnnA18Y0wb0K0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZdXVZ8QXVi6m+jTxK3lFilRXtIopJcXzMLQ4aHICg4u1KiCNINVAlu8RvLTTJ7zX/8FeOTa5cnSMF7FVt/LSAA"}}, "unsigned": {"age_ts": 1570042617610}}SQQaC $1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2398}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-446:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042616106fkZGL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042616739, "hashes": {"sha256": "7J1YK/D99l2tfI+ZS+fE8nMKKo9IG5mDQyNFWXjtZJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qT40JzD9Oc+TVIwBxgzugybzgqqRIWTYc4ikJC+tyLkSlC6rSi7En9utCPadIoEGDL8Cv1jNnelZYyRG44UPAQ"}}, "unsigned": {"age_ts": 1570042616739}}sRQQe $1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "txn_id": "453", "stream_ordering": 2397}{"auth_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}], ["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042614104FELge:localhost:8800", {"sha256": "vSNfuCoEhTFZMqTlhBm4OvRch/OHIXk/T6Y9iJmjclw"}]], "type": "m.room.message", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "event_id": "$1570042615105OKfnm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042615081, "hashes": {"sha256": "l68K7L/aiksW8XJZBRBCGJjaYDVOLRPIY9a6eG30Ly0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DKCM1aL0rVcpY/76tqyNWzdctR6yGC00CfNv/huZ4seAxE7j+kbvxYVCaidLsYH1M5HXikcTQlXqfY2D5JMtAA"}}, "unsigned": {"age_ts": 1570042615081}}:QQQa $1570042614104FELge:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2396}{"auth_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}], ["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042613103AHxGt:localhost:8800", {"sha256": "cqrDEmdo2EzJdlLK6T2n4bW2ZVjggDQESokqBLGh2x0"}]], "type": "m.room.test", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "event_id": "$1570042614104FELge:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042614476, "hashes": {"sha256": "nIPXufjeN46xwgVQsh/ZevUtsUG+Jn/0n6GL7gmUe3I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UMagrp5SOiW472aZy7fUnXDRAxgi/wbI/PpXUdffyWk9Vyi4lKH4uWXUCmPutyikwacb+Ws38y6e648sEWBbAA"}}, "unsigned": {"age_ts": 1570042614476}} 1^ k x ' 6 C P ] jy(5BO\ kx'P]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800#P]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800"P]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800 P]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800!P]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800N[Q@anon-20191002_181700-30:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800N[Q@anon-20191002_181700-29:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800 P]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800 P]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800 P]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 P]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800 P]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800P]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800P]Q@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800P]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800P]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800P]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800N[Q@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800P]Q@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800P]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800P]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800P]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800  PgWQQaq $1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2402}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042619109qhpUv:localhost:8800", {"sha256": "CrLSM1PTwSnkAtWNsGV9w7DwqTpTGJXLdSsMYWqNh5Y"}]], "type": "m.room.join_rules", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042619110gZfPB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042619802, "hashes": {"sha256": "D7txnp3q1cjArJPPnplU61zuERI40zq8r0OVSvPOnT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WxdKhznDiPEHtPshP2Y9XY82rsPMF7Ba/5Of1AZzOMp6qp3r11lBcO9iPwszcbRtgRbOBLtxu+oPUKCGti1yBg"}}, "unsigned": {"age_ts": 1570042619802}}}VQQa $1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2401}{"auth_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}], ["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}]], "prev_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}]], "type": "m.room.canonical_alias", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"alias": "#__ANON__-15:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042619109qhpUv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042619026, "hashes": {"sha256": "aAZdSRLN4ikJR1/xZLxPAjea+lmtS6G7WeC4PvpYj9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aULKxv7NuuB0KT2xd6d73OIJ9IMbNEEgDnGDggwarz+pw0Dg6HAibPqn5Bs63mevqSkithivqfn+6wkSSQx3CQ"}}, "unsigned": {"age_ts": 1570042619026}}+UQQay $1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2400}{"auth_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "type": "m.room.power_levels", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"users": {"@anon-20191002_181700-446:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042618108WWxoQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042618361, "hashes": {"sha256": "Kh/hGQL4nFhDsMn6VVGoNuwyiPdB9TrK7ApSNkajCl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TrpYDIr9P6GF86NzjiWYq+iJeu743QEyuLPGC9nbbNRKD1bIJrKPUdYHlinZJZGjAszRZM77D7G56NzwTm8GCQ"}}, "unsigned": {"age_ts": 1570042618361}} $$H l " F j DhDj Djk)QQQ$1570042654147iSsjl:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800i(QMQ$1570042651145wBynt:localhost:8800$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800i'MQQ$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k&QQQ$1570042649143JxPAB:localhost:8800$1570042648142spuws:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k%QQQ$1570042648142spuws:localhost:8800$1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k$QQQ$1570042648141xSHQB:localhost:8800$1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k#QQQ$1570042647140rNeEf:localhost:8800$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k"QQQ$1570042646139VXLYO:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k!QQQ$1570042646138YEunv:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k QQQ$1570042645137fBnPZ:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800iQMQ$1570042642135oMfQy:localhost:8800$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800iMQQ$15700426410cEjWu:localhost:8829$1570042640133wGmrF:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042640133wGmrF:localhost:8800$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042639132zhjjB:localhost:8800$1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042638131kazZm:localhost:8800$1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042637130zlkqP:localhost:8800$1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042636129shBTe:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042635128KJCvL:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042634127eDBry:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042632125lwdOR:localhost:8800$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042631123SLyGA:localhost:8800$1570042630122bUTeO:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042630122bUTeO:localhost:8800$1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042629121nZoNG:localhost:8800$1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042629120wtVFY:localhost:8800$1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042628119fxxBA:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042627118OLFSV:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042626117sfUAQ:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800k QQQ$1570042624115nZtIB:localhost:8800$1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042623114pBHTz:localhost:8800$1570042622113mtzjt:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042622113mtzjt:localhost:8800$1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042621112AUAFX:localhost:8800$1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042620111taWCG:localhost:8800$1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042619110gZfPB:localhost:8800$1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042619109qhpUv:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042618108WWxoQ:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800  ;ZQQa $1570042622113mtzjt:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2405}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042621112AUAFX:localhost:8800", {"sha256": "0LA5bgBCsVAF6e7EJEJZds8wkWOkAG1ZiCQMHzlBS7I"}]], "type": "m.room.test", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042622113mtzjt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042622521, "hashes": {"sha256": "4cEi2DtHcPNNS22hA4h0/qr6DxXr4DGo5gIAMqzFfzA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CLQ0R2JYhT0sKOEpRx1Bd17+s3Reni4ZI6Pdfop94JPUkD73cp3miQrPGvvcN+NJoJpzccFor2UHQhe9LoIlDw"}}, "unsigned": {"age_ts": 1570042622521}}YQQa1 $1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2404}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042620111taWCG:localhost:8800", {"sha256": "ZHWcf0h7AKS6qwBV78iQxHqclpKAxiRwHLvZ85RA+zQ"}]], "type": "m.room.aliases", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"aliases": ["#__ANON__-15:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042621112AUAFX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042621511, "hashes": {"sha256": "KR6RHyMuVyEQo3HX2ckRvEBotPEfEBiARg4RvIynAeI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p9KMxqTJDpeR4t0hLRC1svmpfBDslI8cAC87GdV2Ajt2jGuAkmAs9CAVRDZ+giAYyBXQskP6B6CP2RHtwJY4AA"}}, "unsigned": {"age_ts": 1570042621511}}xXQQa $1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2403}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042619110gZfPB:localhost:8800", {"sha256": "TEyTBVJR4SPRsGbnEXU5/iELCA00wqRgJnPUHVmpMq0"}]], "type": "m.room.history_visibility", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042620111taWCG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042620495, "hashes": {"sha256": "D3x50kz4EzgUU9enLiIBJIJAldL1xEJVhGk5N8BxLtM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6ZIpjIa0M2n3ZBJCH+B7IR3uZSjvsaXTO8xa3OFm6tIkd2g4DuQq/YkkDW+EjFvFfuZ0ZfhSkzGWM+IHXU2oDA"}}, "unsigned": {"age_ts": 1570042620495}} T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0& V U U T T S S R R Q Q P P O N L  M L  L J  K I  J I  I G H G G F F E E D D C C B A @ @ ? ? > > =~ = <} ; :| : 9{ 9 8z 8 7y 7 6x 5 4w 4 3v 3 2u 2 1t 1 0s / -r . -q - ,p , +o + *n * )m ) (l ' %k & %j % $i $ #h # "g " !f ! e  d  c  b  a  `  _  ^  ]  \  [  Z  Y  X  W  V  U T S R Q  P  O  N  M  L  K  JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[Z~Y~}X}|W{yVzyUyxTxwSwvRvuQutPsqOrqNqpMpoLonKnmJmlIkjHjiGihFhgEgfDecCdcBcbAba@a`?`_>_^=^]<\Z;[Z:ZY9YX8XW7WV6VU5UT4SR3RQ2QP1PO0ON/NM.ML-KJ,JI+IH*HG)GF(FE'ED&CB%BA$A@#@?"><!=< <;;::998876454433221100/.--,,++**)(&'& &% %$ $# #" "!! ~}|{zyx w  v  u  t  s rqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCB e3 f ( J{Ih'\| Q'Q  ]$1570042644136OugnY:localhost:8800m.room.create!GSxvxNevpCiwmFCHys:localhost:8800mՇmՈc@anon-20191002_181700-452:localhost:8800{Q)Q ] $1570042642135oMfQy:localhost:8800m.room.message!yfizglmCXdcqCgDrTr:localhost:8800 mՁmՂ@anon-20191002_181700-450:localhost:8800zM'Q ] $15700426410cEjWu:localhost:8829m.room.member!yfizglmCXdcqCgDrTr:localhost:8800 m{m|@anon-20191002_181700-451:localhost:8829yQ#Q ]$1570042640133wGmrF:localhost:8800m.room.test!yfizglmCXdcqCgDrTr:localhost:8800mxmx@anon-20191002_181700-450:localhost:8800xQ)Q ]$1570042639132zhjjB:localhost:8800m.room.aliases!yfizglmCXdcqCgDrTr:localhost:8800mvmvi@anon-20191002_181700-450:localhost:8800"wQ?Q ]$1570042638131kazZm:localhost:8800m.room.history_visibility!yfizglmCXdcqCgDrTr:localhost:8800mpmr+@anon-20191002_181700-450:localhost:8800vQ/Q ]$1570042637130zlkqP:localhost:8800m.room.join_rules!yfizglmCXdcqCgDrTr:localhost:8800mkmlm@anon-20191002_181700-450:localhost:8800uQ9Q ]$1570042636129shBTe:localhost:8800m.room.canonical_alias!yfizglmCXdcqCgDrTr:localhost:8800mhmiH@anon-20191002_181700-450:localhost:8800tQ3Q ]$1570042635128KJCvL:localhost:8800m.room.power_levels!yfizglmCXdcqCgDrTr:localhost:8800memfc@anon-20191002_181700-450:localhost:8800sQ'Q ]$1570042634127eDBry:localhost:8800m.room.member!yfizglmCXdcqCgDrTr:localhost:8800mamb6@anon-20191002_181700-450:localhost:8800r Q'Q  ]$1570042634126YmPkp:localhost:8800m.room.create!yfizglmCXdcqCgDrTr:localhost:8800m_/m_r@anon-20191002_181700-450:localhost:8800qQ)Q ] $1570042632125lwdOR:localhost:8800m.room.message!XnUZiYJDWVNGfsBnGz:localhost:8800 m[m[@anon-20191002_181700-448:localhost:8800pQ'Q ] $1570042632124bMwzE:localhost:8800m.room.member!XnUZiYJDWVNGfsBnGz:localhost:8800 mWbmW@anon-20191002_181700-449:localhost:8800oQ'Q ]$1570042631123SLyGA:localhost:8800m.room.member!XnUZiYJDWVNGfsBnGz:localhost:8800mTmT@anon-20191002_181700-448:localhost:8800nQ#Q ]$1570042630122bUTeO:localhost:8800m.room.test!XnUZiYJDWVNGfsBnGz:localhost:8800mR2mR6@anon-20191002_181700-448:localhost:8800mQ3Q ]$1570042629121nZoNG:localhost:8800m.room.guest_access!XnUZiYJDWVNGfsBnGz:localhost:8800mNmOd@anon-20191002_181700-448:localhost:8800"lQ?Q ]$1570042629120wtVFY:localhost:8800m.room.history_visibility!XnUZiYJDWVNGfsBnGz:localhost:8800mKmL'@anon-20191002_181700-448:localhost:8800kQ/Q ]$1570042628119fxxBA:localhost:8800m.room.join_rules!XnUZiYJDWVNGfsBnGz:localhost:8800mHmI=@anon-20191002_181700-448:localhost:8800jQ3Q ]$1570042627118OLFSV:localhost:8800m.room.power_levels!XnUZiYJDWVNGfsBnGz:localhost:8800mFmF@anon-20191002_181700-448:localhost:8800iQ'Q ]$1570042626117sfUAQ:localhost:8800m.room.member!XnUZiYJDWVNGfsBnGz:localhost:8800mC mC{@anon-20191002_181700-448:localhost:8800h Q'Q  ]$1570042626116pKAbp:localhost:8800m.room.create!XnUZiYJDWVNGfsBnGz:localhost:8800m?m@0@anon-20191002_181700-448:localhost:8800gQ)Q ] $1570042624115nZtIB:localhost:8800m.room.message!ePtMOPPOgOcBIMNZpn:localhost:8800 m9m9@anon-20191002_181700-446:localhost:8800fQ'Q ] $1570042623114pBHTz:localhost:8800m.room.member!ePtMOPPOgOcBIMNZpn:localhost:8800 m4m5@anon-20191002_181700-447:localhost:8800eQ#Q ]$1570042622113mtzjt:localhost:8800m.room.test!ePtMOPPOgOcBIMNZpn:localhost:8800m29m2=@anon-20191002_181700-446:localhost:8800dQ)Q ]$1570042621112AUAFX:localhost:8800m.room.aliases!ePtMOPPOgOcBIMNZpn:localhost:8800m.Gm.@anon-20191002_181700-446:localhost:8800 3f2 K d  } 0 K d }0Kd}0Id}0KJQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042679179ZJCqE:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042678178HSUoI:localhost:8800HQM!MqstbCLZIQFiYNHrqR:localhost:8800$15700426753WBESe:localhost:8829JQQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042675177dzCbt:localhost:8800JQQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042674175gurnU:localhost:8800J~QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042673174OxGuP:localhost:8800J}QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042672173XsxsH:localhost:8800J|QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042672172vPvbe:localhost:8800J{QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042671171AQZaz:localhost:8800JzQQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042670170TtDpX:localhost:8800HyQM!WuiaqqIOvBjgETqdus:localhost:8800$15700426692GLpqH:localhost:8829JxQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042669169ZEFsJ:localhost:8800JwQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042667167mhSmJ:localhost:8800JvQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042666166IBpPy:localhost:8800JuQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042666165HDkhp:localhost:8800JtQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042665164nYKmj:localhost:8800JsQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042664163IAHXd:localhost:8800JrQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042663162sQrEh:localhost:8800JqQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042657151cITOZ:localhost:8800JpQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042656150UsLRz:localhost:8800JoQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042656149JNVWR:localhost:8800JnQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042655148eXOyA:localhost:8800JmQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042654147iSsjl:localhost:8800JlQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042653146dGCce:localhost:8800HkQM!GSxvxNevpCiwmFCHys:localhost:8800$15700426501OLytM:localhost:8829JjQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042650144fzLvy:localhost:8800JiQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042649143JxPAB:localhost:8800JhQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042648141xSHQB:localhost:8800JgQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042647140rNeEf:localhost:8800JfQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042646139VXLYO:localhost:8800JeQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042646138YEunv:localhost:8800JdQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042645137fBnPZ:localhost:8800JcQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042644136OugnY:localhost:8800HbQM!yfizglmCXdcqCgDrTr:localhost:8800$15700426410cEjWu:localhost:8829JaQQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042641134vymmW:localhost:8800J`QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042639132zhjjB:localhost:8800J_QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042638131kazZm:localhost:8800J^QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042637130zlkqP:localhost:8800J]QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042636129shBTe:localhost:8800J\QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042635128KJCvL:localhost:8800J[QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042634127eDBry:localhost:8800JZQQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042634126YmPkp:localhost:8800JYQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632124bMwzE:localhost:8800JXQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042631123SLyGA:localhost:8800JWQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629121nZoNG:localhost:8800JVQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629120wtVFY:localhost:8800JUQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042628119fxxBA:localhost:8800JTQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042627118OLFSV:localhost:8800JSQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626117sfUAQ:localhost:8800JRQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626116pKAbp:localhost:8800JQQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042623114pBHTz:localhost:8800  3]QQaC $1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2408}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-448:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042626116pKAbp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042626008, "hashes": {"sha256": "tygjBi1BceEXRyFq00EJtgWJZjnubIBWTzkenUUNb4k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lU6bS8ba3+niCzV6ypU39Fn74OMA/Ridvv9k59syQe2VvPHyH7FPGgO7MGXWSheNtVmzScAnVexzDbnHW+cECA"}}, "unsigned": {"age_ts": 1570042626008}}u\QQi $1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "txn_id": "454", "stream_ordering": 2407}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042623114pBHTz:localhost:8800", {"sha256": "R0PSC1LHEEy+MbUTFpVNwxHfyYtjHye6ducCbvXzmtk"}]], "type": "m.room.message", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042624115nZtIB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042624403, "hashes": {"sha256": "hVylUWVvxwF6nTlSDvy+AFIXh6zWNxGwjIbDT4iFcl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aux88/uaJ9af/rnrBCMPuOIjE9Frwu0g9FRc60wzPh9WLLqNW8OizjT7moZGWNLRiNCzlpITN2TnDo7UJsfXCA"}}, "unsigned": {"age_ts": 1570042624403}}I[QQa5 $1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 463, "stream_ordering": 2406}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042619110gZfPB:localhost:8800", {"sha256": "TEyTBVJR4SPRsGbnEXU5/iELCA00wqRgJnPUHVmpMq0"}]], "prev_events": [["$1570042622113mtzjt:localhost:8800", {"sha256": "AwaqUJNVLhGqjRutcUBzGFpsEzVbAJ13PEjxzjJsG70"}]], "type": "m.room.member", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-447:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-447", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-447:localhost:8800", "event_id": "$1570042623114pBHTz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042623213, "hashes": {"sha256": "oBeOheaUf7hBi/A84v6CGEZcgKCpWPcnB7/icoE3NpE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TUJ6cA4XBI5P/dLpuyHsh2FQkFGhVii5gGZLLDXN45CcFhleGmGu5u8/QX9kSGtcod7Vj/jP3GFWo5HSO0XwAg"}}, "unsigned": {"age_ts": 1570042623213}} 2bu& 9 L _  r # 8K^s$7J]p!4L QL$1570042664163IAHXd:localhost:8800sha2563ewY:LWο;]w\v OKL QL$1570042663162sQrEh:localhost:8800sha256n~l1.%e'v̚ڛ: :$jGr>L QL$1570042662161lGrSW:localhost:8800sha256@AQ{UD >ح[z _L QL$1570042662160SrmtM:localhost:8800sha256W]cBto*m /LQL$1570042661159xQwJK:localhost:8800sha256Lَ微mPWZMCLQL$1570042661158igwHF:localhost:8800sha256Hp\ iDvi/;_B\e\Q&үLQL$1570042660157svDcU:localhost:8800sha256'kMei{J8"؇QkLQL$1570042660156wxhvl:localhost:8800sha256t TbνJEkϨLQL$1570042659155mEUeP:localhost:8800sha256K+Xj0%MDLs ji"\kLQL$1570042659154Fztdf:localhost:8800sha256$TSł7@!b~䴦}'LQL$1570042658153tmCYJ:localhost:8800sha256ӌS.)E)~ C/b$LQL$1570042658152btGpA:localhost:8800sha256/<k';d r=bw_LQL$1570042657151cITOZ:localhost:8800sha256 @&@&]+.BjH}> mLQL$1570042656150UsLRz:localhost:8800sha256CxF3 fY[qV{*RuXMtφL~QL$1570042656149JNVWR:localhost:8800sha2567c;(jW!:{u3"F]5L}QL$1570042655148eXOyA:localhost:8800sha256(ZIb4Fԥ$ѶpL|QL$1570042654147iSsjl:localhost:8800sha256k녜A =xZ@oI &Xc坢ܠL{QL$1570042653146dGCce:localhost:8800sha256O>k=֬VVgQlYGVLzQL$1570042651145wBynt:localhost:8800sha256ڣ~gt w.dlL74xx!118JyML$15700426501OLytM:localhost:8829sha256̤bC@$Ůmxm>lLxQL$1570042649143JxPAB:localhost:8800sha256ߗ[TG៨s^p "|!4)LwQL$1570042648142spuws:localhost:8800sha256ĦָVÀ h9%ϫU^~LvQL$1570042648141xSHQB:localhost:8800sha256;PZ+:Q0C-B#Uf|?_K0JQLLuQL$1570042647140rNeEf:localhost:8800sha256V+ gNjϗ66h]6P#XhV0LtQL$1570042646139VXLYO:localhost:8800sha256(x$Oyڴuja>:LsQL$1570042646138YEunv:localhost:8800sha256c!J#{1caKLrQL$1570042645137fBnPZ:localhost:8800sha256†o~Pȹ\=]: \Ꟊ# LqQL$1570042644136OugnY:localhost:8800sha256twy'Ϲc^4cʐb]LpQL$1570042642135oMfQy:localhost:8800sha256h>ZJ3x,ǁ(P_9o(AV3O3w&bLjQL$1570042636129shBTe:localhost:8800sha256ߋ$ ]aJ4hVLiQL$1570042635128KJCvL:localhost:8800sha2560sP+f;GH˺F4n\LhQL$1570042634127eDBry:localhost:8800sha2565څZE ]Ah9kA}$LgQL$1570042634126YmPkp:localhost:8800sha256 ǿΥg]^QaW2uLfQL$1570042632125lwdOR:localhost:8800sha2567sZ({d'/=B.Hm)iLeQL$1570042632124bMwzE:localhost:8800sha256H._ ] @anon-20191002_181700-493:localhost:8800m&\  9 ]@anon-20191002_181700-493:localhost:8800a&\9 ]@anon-20191002_181700-494:localhost:8800a&\= ]  @anon-20191002_181700-492:localhost:8800m&\V> ]  @anon-20191002_181700-491:localhost:8800m&\ 9 ]@anon-20191002_181700-492:localhost:8800a&\9 ]@anon-20191002_181700-491:localhost:8800a&\> ]  @anon-20191002_181700-490:localhost:8800m&\9 ]@anon-20191002_181700-490:localhost:8800a&\> ] @anon-20191002_181700-488:localhost:8800m&\9 ]@anon-20191002_181700-488:localhost:8800a&\> ] @anon-20191002_181700-486:localhost:8800m&\9 ]@anon-20191002_181700-486:localhost:8800a&\> ] @anon-20191002_181700-484:localhost:8800m&\8i9 ]@anon-20191002_181700-484:localhost:8800a&\> ] @anon-20191002_181700-482:localhost:8800m&\ 9 ]@anon-20191002_181700-482:localhost:8800a&\> ]  @anon-20191002_181700-480:localhost:8800m&\ 9 ]@anon-20191002_181700-480:localhost:8800a&\=~ ]  @anon-20191002_181700-479:localhost:8800m&\>} ] @anon-20191002_181700-478:localhost:8800m&\  9| ]@anon-20191002_181700-479:localhost:8800a&\9{ ]@anon-20191002_181700-478:localhost:8800a&\=z ]  @anon-20191002_181700-477:localhost:8800m&\V>y ]  @anon-20191002_181700-476:localhost:8800m&\ 9x ]@anon-20191002_181700-477:localhost:8800a&\9w ]@anon-20191002_181700-476:localhost:8800a&\>v ]  @anon-20191002_181700-475:localhost:8800m&\9u ]@anon-20191002_181700-475:localhost:8800a&\>t ] @anon-20191002_181700-473:localhost:8800m&\`9s ]@anon-20191002_181700-473:localhost:8800a&\>r ] @anon-20191002_181700-471:localhost:8800m&\`9q ]@anon-20191002_181700-471:localhost:8800a&\>p ] @anon-20191002_181700-469:localhost:8800m&\E9o ]@anon-20191002_181700-469:localhost:8800a&\>n ] @anon-20191002_181700-467:localhost:8800m&\ %E9m ]@anon-20191002_181700-467:localhost:8800a&\>l ]  @anon-20191002_181700-465:localhost:8800m&\ "9k ]@anon-20191002_181700-465:localhost:8800a&\=j ]  @anon-20191002_181700-464:localhost:8800m&\>i ] @anon-20191002_181700-463:localhost:8800m&\ $9h ]@anon-20191002_181700-464:localhost:8800a&\9g ]@anon-20191002_181700-463:localhost:8800a&\=f ]  @anon-20191002_181700-462:localhost:8800m&\T>e ]  @anon-20191002_181700-461:localhost:8800m&\ "9d ]@anon-20191002_181700-462:localhost:8800a&\9c ]@anon-20191002_181700-461:localhost:8800a&\>b ]  @anon-20191002_181700-460:localhost:8800m&\9a ]@anon-20191002_181700-460:localhost:8800a&\>` ] @anon-20191002_181700-458:localhost:8800m&\`9_ ]@anon-20191002_181700-458:localhost:8800a&\>^ ] @anon-20191002_181700-456:localhost:8800m&\`9] ]@anon-20191002_181700-456:localhost:8800a&\>\ ] @anon-20191002_181700-454:localhost:8800m&\A9[ ]@anon-20191002_181700-454:localhost:8800a&\>Z ] @anon-20191002_181700-452:localhost:8800m&\ %E9Y ]@anon-20191002_181700-452:localhost:8800a&\>X ]  @anon-20191002_181700-450:localhost:8800m&\ "9W ]@anon-20191002_181700-450:localhost:8800a&\=V ]  @anon-20191002_181700-449:localhost:8800m&\>U ] @anon-20191002_181700-448:localhost:8800m&\ $9T ]@anon-20191002_181700-448:localhost:8800a&\9S ]@anon-20191002_181700-449:localhost:8800a&\ ih5i g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgo߂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAoނ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQo݂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6Rgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3Qwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwo % ) 8 t  3r a ;T- j%_ HW[QQ' $1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.createZMQ']$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829join]YQQ3 $1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_accesscXQQ? $1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility[WQQ/ $1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules]VQQ3 $1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levelsUQQ']$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800joinWTQQ' $1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.createfRQQ))$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800cQQQ? $1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibility[PQQ/ $1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rules`OQQ9 $1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_alias]NQQ3 $1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levelsMQQ']$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800joinWLQQ' $1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.createKQQ']$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800joinDQQ']$1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800joinfCQQ))$1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800cBQQ? $1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibility[AQQ/ $1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rules`@QQ9 $1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias]?QQ3 $1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levels>QQ']$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800joinW=QQ' $1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.createc<QQ? $1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.history_visibility[;QQ/ $1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.join_rules]:QQ3 $1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.power_levels SMQ']$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829join9QQ']$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.member@anon-20191002_181700-445:localhost:8800joinV8OQ' $157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.create7eQ']$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800leave]JQQ3 $1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.guest_accesscIQQ? $1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.history_visibility[HQQ/ $1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.join_rules]GQQ3 $1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.power_levelsFQQ']$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-448:localhost:8800joinWEQQ' $1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.create _ _g`QQaq $1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2411}{"auth_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}], ["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}]], "prev_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}]], "type": "m.room.join_rules", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042628119fxxBA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042628319, "hashes": {"sha256": "xm823Day+frAbWscQjKOlK5cpF8WOUg35KI7uPZVkKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "npTeoT8R8nztf9mLTpJPI+eE3mNX+hBTSTq2eWpE6+7mU3m5byzBWMwcbrUYMdszP0KFE2XMdcp/ZOC7pnwjDA"}}, "unsigned": {"age_ts": 1570042628319}}+_QQay $1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2410}{"auth_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "type": "m.room.power_levels", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"users": {"@anon-20191002_181700-448:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042627118OLFSV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042627728, "hashes": {"sha256": "oR4X/LUaHmYpJkxeQK/5QEgbhdX+k55QuUdv74I5nWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZiDuLgQFcIUCwxjvNsFT6rCAN+41z+LgF9NB1YX7qFoPLeeLzoqJLTLBgA6yGBdvzMhK6u6yJKxRZF+vXUDPBg"}}, "unsigned": {"age_ts": 1570042627728}}^QQa) $1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2409}{"auth_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}]], "prev_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}]], "type": "m.room.member", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-448", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-448:localhost:8800", "event_id": "$1570042626117sfUAQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042626825, "hashes": {"sha256": "GC8beKbCzl+nvJ5484u1ZaqNLlUe2TM2YgDJhMZhkWs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cE9e1WcVJots0zKbQYP1EIvMr3alEfKCprrkkZDhVFNPNugusEuf023Pm6jBLzyDMloG0EfNP30CqHgnEY2bBw"}}, "unsigned": {"age_ts": 1570042626825}} $&L r  + Q w 0V|5[:`hzMQQ$15700426410cEjWu:localhost:8829$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800hyMQQ$15700426410cEjWu:localhost:8829$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jxQQQ$1570042639132zhjjB:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jwQQQ$1570042639132zhjjB:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jvQQQ$1570042639132zhjjB:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800juQQQ$1570042638131kazZm:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jtQQQ$1570042638131kazZm:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jsQQQ$1570042638131kazZm:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jrQQQ$1570042637130zlkqP:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jqQQQ$1570042637130zlkqP:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jpQQQ$1570042637130zlkqP:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800joQQQ$1570042636129shBTe:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jnQQQ$1570042636129shBTe:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jmQQQ$1570042636129shBTe:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jlQQQ$1570042635128KJCvL:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jkQQQ$1570042635128KJCvL:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jjQQQ$1570042634127eDBry:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jiQQQ$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jhQQQ$1570042632124bMwzE:localhost:8800$1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jgQQQ$1570042632124bMwzE:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jfQQQ$1570042632124bMwzE:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jeQQQ$1570042631123SLyGA:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jdQQQ$1570042631123SLyGA:localhost:8800$1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jcQQQ$1570042631123SLyGA:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jbQQQ$1570042631123SLyGA:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jaQQQ$1570042629121nZoNG:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j`QQQ$1570042629121nZoNG:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j_QQQ$1570042629121nZoNG:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j^QQQ$1570042629120wtVFY:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j]QQQ$1570042629120wtVFY:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j\QQQ$1570042629120wtVFY:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j[QQQ$1570042628119fxxBA:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jZQQQ$1570042628119fxxBA:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jYQQQ$1570042628119fxxBA:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jXQQQ$1570042627118OLFSV:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jWQQQ$1570042627118OLFSV:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800  ;cQQa $1570042630122bUTeO:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2414}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042629121nZoNG:localhost:8800", {"sha256": "0P01lRRL1febgRAlcxdq83gsPHrGO/YxJ0ZtBHqXP6Q"}]], "type": "m.room.test", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042630122bUTeO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042630706, "hashes": {"sha256": "IaQxGQsEjMoeQeIFNX0kVrdcy3qatF7GYkAFmcG1EaE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m6tIkhCeDCqrkQGRnuQGTo+UKAB4uM/wpJNXNOvqzOWZzJq1Qfvobfwn/sRuvNsrWtcfzWikKQdOiZvZuW0/Aw"}}, "unsigned": {"age_ts": 1570042630706}}nbQQa $1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2413}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042629120wtVFY:localhost:8800", {"sha256": "Kcmu7kgGlyu/m6GsqyxLEGOinuhQdvXXp+Nn5WUsE10"}]], "type": "m.room.guest_access", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042629121nZoNG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042629880, "hashes": {"sha256": "f05vV01HP14Xk7OJO8a1AQaXcK9L7O/DBR3ugoa6wEU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G7NQ0Dsr0PTXm/fCsO2iiBWLJItejSzmwBb1NfPDLm6uW+5GW6dUrVKkf8v/IAE1947I70nj5NkZdZa++6iwBw"}}, "unsigned": {"age_ts": 1570042629880}}xaQQa $1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2412}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042628119fxxBA:localhost:8800", {"sha256": "xbGJaUEVKOB7f6fZZHJhbkpO4mbyArgx5Y8TUeEf0W8"}]], "type": "m.room.history_visibility", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042629120wtVFY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042629062, "hashes": {"sha256": "GCRvciKhKDlgTUxhTac+G8LJhbboRQJ1Fd9eApQvhHo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qXd49IgTWYf2wR3wT0rycpx2DLfk3gtJg6YihynikbLSvbjUNL1eBh8LJJmxykk0Hvvrm+pklp6maBN/0nmDDw"}}, "unsigned": {"age_ts": 1570042629062}} ,"D f  = _ 6`5Wy ,NpnQQQ$1570042681182ZiRRU:locnQQQ$1570042690191yQfnl:localhost:8800$1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042689190UkvMv:localhost:8800$1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042688189axPjv:localhost:8800$1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042687188ddQmS:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042687187gbArC:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042686186Qxqmn:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042683184TpChh:localhost:8800$1570042682183iUUXF:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042682183iUUXF:localhost:8800$1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042681182ZiRRU:localhost:8800$1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042680181TFyrx:localhost:8800$1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042680180uuIxG:localhost:8800$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042679179ZJCqE:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800jMMQ$15700426765pydev:localhost:8829$15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800jMMQ$15700426764DoRhm:localhost:8829$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800lMQQ$15700426753WBESe:localhost:8829$1570042675176WKRiz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042675176WKRiz:localhost:8800$1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042674175gurnU:localhost:8800$1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042673174OxGuP:localhost:8800$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042672173XsxsH:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042672172vPvbe:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042671171AQZaz:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800lMQQ$15700426692GLpqH:localhost:8829$1570042668168uCbYK:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042668168uCbYK:localhost:8800$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042667167mhSmJ:localhost:8800$1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042666166IBpPy:localhost:8800$1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042666165HDkhp:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042665164nYKmj:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042664163IAHXd:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042662161lGrSW:localhost:8800$1570042662160SrmtM:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042662160SrmtM:localhost:8800$1570042661159xQwJK:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042661159xQwJK:localhost:8800$1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042661158igwHF:localhost:8800$1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800 "4 # Z $ C Z-Zk%[/ZEQ' Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.create$1570042670170TtDpX:localhost:8800"DQ']MQ !WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$15700426692GLpqH:localhost:8829$1570042667167mhSmJ:localhost:8800CQ']Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$1570042667167mhSmJ:localhost:8800fBQ? Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility$1570042666166IBpPy:localhost:8800^AQ/ Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules$1570042666165HDkhp:localhost:8800`@Q3 Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levels$1570042665164nYKmj:localhost:8800?Q']Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800$1570042664163IAHXd:localhost:8800Z>Q' Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.create$1570042663162sQrEh:localhost:8800=Q']Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829$1570042657151cITOZ:localhost:8800f<Q? Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility$1570042656150UsLRz:localhost:8800^;Q/ Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules$1570042656149JNVWR:localhost:8800`:Q3 Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels$1570042655148eXOyA:localhost:88009Q']Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800$1570042654147iSsjl:localhost:8800Z8Q' Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.create$1570042653146dGCce:localhost:8800"7Q']MQ !GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:88006Q']Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$1570042649143JxPAB:localhost:8800`5Q3 Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_access$1570042648141xSHQB:localhost:8800f4Q? Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility$1570042647140rNeEf:localhost:8800^3Q/ Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules$1570042646139VXLYO:localhost:8800`2Q3 Q ~!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levels$1570042646138YEunv:localhost:88001Q']Q }!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800$1570042645137fBnPZ:localhost:8800Z0Q' Q |!GSxvxNevpCiwmFCHys:localhost:8800m.room.create$1570042644136OugnY:localhost:8800/Q']M z!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829$15700426410cEjWu:localhost:8829i.Q))Q x!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800$1570042639132zhjjB:localhost:8800f-Q? Q w!yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibility$1570042638131kazZm:localhost:8800^,Q/ Q v!yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rules$1570042637130zlkqP:localhost:8800c+Q9 Q u!yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_alias$1570042636129shBTe:localhost:8800`*Q3 Q t!yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levels$1570042635128KJCvL:localhost:8800)Q']Q s!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800$1570042634127eDBry:localhost:8800Z(Q' Q r!yfizglmCXdcqCgDrTr:localhost:8800m.room.create$1570042634126YmPkp:localhost:8800$'Q']QQ p!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800&Q']Q o!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800$1570042631123SLyGA:localhost:8800`%Q3 Q m!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.guest_access$1570042629121nZoNG:localhost:8800f$Q? Q l!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.history_visibility$1570042629120wtVFY:localhost:8800   4 h m6d]c@anon-20191002_181700-486:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0wo127.0.0.1тd]c@anon-20191002_181700-482:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgo127.0.0.1ςd]c@anon-20191002_181700-484:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAo127.0.0.1cd]c@anon-20191002_181700-488:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAo127.0.0.1҂d]c@anon-20191002_181700-480:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAo127.0.0.1΂d]c@anon-20191002_181700-479:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQo127.0.0.1͂d]c@anon-20191002_181700-478:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_wo127.0.0.1̂d]c@anon-20191002_181700-477:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAo127.0.0.1˂d]c@anon-20191002_181700-476:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQo127.0.0.1ʂd]c@anon-20191002_181700-475:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAo127.0.0.1  AdeQQak $1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 465, "stream_ordering": 2416}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042628119fxxBA:localhost:8800", {"sha256": "xbGJaUEVKOB7f6fZZHJhbkpO4mbyArgx5Y8TUeEf0W8"}], ["$1570042631123SLyGA:localhost:8800", {"sha256": "hbvg+EtJJKmTP/hqK1clAg3qmaAqwWblnpLsn1iiGTM"}]], "prev_events": [["$1570042631123SLyGA:localhost:8800", {"sha256": "hbvg+EtJJKmTP/hqK1clAg3qmaAqwWblnpLsn1iiGTM"}]], "type": "m.room.member", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-449:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-449", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-449:localhost:8800", "event_id": "$1570042632124bMwzE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042632034, "hashes": {"sha256": "wj/klvurRri3+3z9abFSLIhtxyTjEoHxxjci5KD4hCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k+rryWrwptfHKC2i2QuzwuJxNlu9uj0Vi0GvWYQT5+lqSDYzmlDvZEhfiSy13CZ9PWgKA7LF7OdEQi4bfNi+Bg"}}, "unsigned": {"age_ts": 1570042632034, "replaces_state": "$1570042631123SLyGA:localhost:8800"}};dQQa $1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2415}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042628119fxxBA:localhost:8800", {"sha256": "xbGJaUEVKOB7f6fZZHJhbkpO4mbyArgx5Y8TUeEf0W8"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042630122bUTeO:localhost:8800", {"sha256": "75a2E6+G0d0Mr5sZj70VcoFHyT22cnIfpPpufegLVz8"}]], "type": "m.room.member", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-449", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-449:localhost:8800", "event_id": "$1570042631123SLyGA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042631176, "hashes": {"sha256": "NyoSxb5jRAcjPL49ygQCy+UCR5ee75hoBeL7rKJ+GJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAdJTLRR4+9fORtoSmHy6RtI8jP1PdL7WV/gNvmnCp1fs+jGZgcRUeE20iwTbOF92QdfDr75FgcBUlTTIBgNCQ"}}, "unsigned": {"age_ts": 1570042631176, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-448:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-448:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-448", "avatar_url": null}, "sender": "@anon-20191002_181700-448:localhost:8800"}]}} Dl U #  [ ) a /k l g 6  ( n < tBz`.f4ZHNT" 1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0=1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64b1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o s1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY u1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM}1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk~1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMZ1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A 1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30=1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6AZ1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk 1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQu1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk91e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwQ1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY "1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsC1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4l1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wJ1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI#1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewM1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs(1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAR1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcj1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wb1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE61e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4k1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4g1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM#1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIG1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc<1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIEOd1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 321e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI l slhQQa) $1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2419}{"auth_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}]], "prev_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}]], "type": "m.room.member", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-450", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-450:localhost:8800", "event_id": "$1570042634127eDBry:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042634706, "hashes": {"sha256": "yNSJoeKErruLempv4appNryCnJncbtKssBzYg0KxVCw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h/jFITND1C/G3LONr8RDUmzF5b60IPinzmW0Z618UFnu/YW/UGIexOhJar61Z2wFohjWmAscOMGJ6aQszI1hDg"}}, "unsigned": {"age_ts": 1570042634706}}gQQaC $1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2418}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-450:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042634126YmPkp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042634031, "hashes": {"sha256": "+Nk1Z+APyDqE/tOWaOX+Suc9pF3p2qSteBd5hM2NnXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oqezvaphdO9gwO6EeRSOwlMdxIXf8NopoRQ79oiuSxh8yaZ9KEJOnJnWp6nDlFiZqZTApHekMsEEdkCQ/tbtCg"}}, "unsigned": {"age_ts": 1570042634031}}ufQQi $1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "txn_id": "455", "stream_ordering": 2417}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042632124bMwzE:localhost:8800", {"sha256": "nUguXzxLXdKDnGOYA9KntUi/M7PC5agAgkMqvn5gABU"}]], "type": "m.room.message", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042632125lwdOR:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042632961, "hashes": {"sha256": "7B2Pi/Wl4GP4ihZJcHdcY7XNf3iVJJUZeYfTPjcJYKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ds3NtMoyOB1OTdXqfam7JZg9pVq+JqYiNyEmyE5371TTE1+BmfId59HHOzx7OG+Rd7M3u1grNlPWORgJ0FUkCw"}}, "unsigned": {"age_ts": 1570042632961}} KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD~-]@anon-20191002_181700-541:localhost:8800-]@anon-20191002_181700-460:localhost:8800c-]@anon-20191002_181700-459:localhost:8829b-]@anon-20191002_181700-458:localhost:8800a-]@anon-20191002_181700-456:localhost:8800`-]@anon-20191002_181700-454:localhost:8800_-]@anon-20191002_181700-453:localhost:8829^-]@anon-20191002_181700-452:localhost:8800]-]@anon-20191002_181700-451:localhost:8829\-]@anon-20191002_181700-450:localhost:8800[-]@anon-20191002_181700-449:localhost:8800Z-]@anon-20191002_181700-540:localhost:8829-]@anon-20191002_181700-539:localhost:8800-]@anon-20191002_181700-538:localhost:8800-]@anon-20191002_181700-537:localhost:8800-]@anon-20191002_181700-536:localhost:8800-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-534:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-532:localhost:8800-]@anon-20191002_181700-531:localhost:8800-]@anon-20191002_181700-522:localhost:8829-]@anon-20191002_181700-521:localhost:8800-]@anon-20191002_181700-520:localhost:8800-]@anon-20191002_181700-519:localhost:8829-]@anon-20191002_181700-518:localhost:8800-]@anon-20191002_181700-516:localhost:8800-]@anon-20191002_181700-514:localhost:8800-]@anon-20191002_181700-513:localhost:8829-]@anon-20191002_181700-512:localhost:8800-]@anon-20191002_181700-511:localhost:8829-]@anon-20191002_181700-510:localhost:8800-]@anon-20191002_181700-509:localhost:8800-]@anon-20191002_181700-508:localhost:8800-]@anon-20191002_181700-507:localhost:8800-]@anon-20191002_181700-506:localhost:8800-]@anon-20191002_181700-505:localhost:8800-]@anon-20191002_181700-504:localhost:8829-]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-498:localhost:8829-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-496:localhost:8829-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800~-]@anon-20191002_181700-490:localhost:8800}-]@anon-20191002_181700-489:localhost:8829|-]@anon-20191002_181700-488:localhost:8800{-]@anon-20191002_181700-486:localhost:8800z-]@anon-20191002_181700-484:localhost:8800y-]@anon-20191002_181700-483:localhost:8829x-]@anon-20191002_181700-482:localhost:8800w-]@anon-20191002_181700-481:localhost:8829v-]@anon-20191002_181700-480:localhost:8800u-]@anon-20191002_181700-479:localhost:8800t-]@anon-20191002_181700-478:localhost:8800s-]@anon-20191002_181700-477:localhost:8800r-]@anon-20191002_181700-476:localhost:8800q-]@anon-20191002_181700-475:localhost:8800p-]@anon-20191002_181700-474:localhost:8829o-]@anon-20191002_181700-473:localhost:8800n-]@anon-20191002_181700-471:localhost:8800m-]@anon-20191002_181700-469:localhost:8800l-]@anon-20191002_181700-468:localhost:8829k-]@anon-20191002_181700-467:localhost:8800j-]@anon-20191002_181700-466:localhost:8829i-]@anon-20191002_181700-465:localhost:8800h-]@anon-20191002_181700-464:localhost:8800g-]@anon-20191002_181700-463:localhost:8800f-]@anon-20191002_181700-462:localhost:8800e-]@anon-20191002_181700-461:localhost:8800d %n 0r0 r  Mb!]|[  ; }  nQQ']$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800joincwQQ? $1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility[vQQ/ $1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules`uQQ9 $1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias]tQQ3 $1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levelssQQ']$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800joinWrQQ' $1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.createcqQQ? $1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility[pQQ/ $1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules]oQQ3 $1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levelsnQQ']$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800joinWmQQ' $1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.createlMQ']$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829joinckQQ? $1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility[jQQ/ $1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules]iQQ3 $1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levelshQQ']$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800joinWgQQ' $1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.createfMQ']$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829leave[^QQ/ $1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules]]QQ3 $1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels\QQ']$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800join]QQ3 $1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_accessc~QQ? $1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility[}QQ/ $1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules]|QQ3 $1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels{QQ']$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800joinWzQQ' $1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.createyQQ']$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800joinfxQQ))$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800ceQQ? $1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility[dQQ/ $1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules]cQQ3 $1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levelsbQQ']$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800joinWaQQ' $1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.create`QQ']$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829invitec_QQ? $1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility 8l D `8B]c!E@anon-20191002_181700-463:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgoZKSEJYQPIO127.0.0.1Perl + Net::Async::HTTP/0.44mHA]c!E@anon-20191002_181700-462:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7QoSKOLIDFQEN127.0.0.1Perl + Net::Async::HTTP/0.44m?@]c!E@anon-20191002_181700-461:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0VzngoGRYRTUWCZU127.0.0.1Perl + Net::Async::HTTP/0.44m%?]c!E@anon-20191002_181700-460:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAoGJEFYISBJP127.0.0.1Perl + Net::Async::HTTP/0.44m >]c!E@anon-20191002_181700-458:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAoBKBKPFYUSG127.0.0.1Perl + Net::Async::HTTP/0.44mv=]c!E@anon-20191002_181700-456:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQoCRSASZJZPS127.0.0.1Perl + Net::Async::HTTP/0.44mȃ<]c!E@anon-20191002_181700-454:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwoBXAWMRWQLA127.0.0.1Perl + Net::Async::HTTP/0.44mը;]c!E@anon-20191002_181700-452:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwoNISMZSIYDM127.0.0.1Perl + Net::Async::HTTP/0.44mՇP:]c!E@anon-20191002_181700-450:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwoJKUEUBZDEC127.0.0.1Perl + Net::Async::HTTP/0.44m^9]c!E@anon-20191002_181700-449:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAoMYBVEJZYHY127.0.0.1Perl + Net::Async::HTTP/0.44mS Bkr=d/[( T  M  y D  r =  i 4 d/_*V!O{Fk6d/4]@an4]@anon-20191002_181700-566:localhost:8800mԚ 2[@anon-20191002_181700-49:localhost:8800m:&4]@anon-20191002_181700-499:localhost:8800m¤4]@anon-20191002_181700-497:localhost:8800m؞4]@anon-20191002_181700-495:localhost:8800m|W4]@anon-20191002_181700-494:localhost:8800mo4]@anon-20191002_181700-493:localhost:8800mY?4]@anon-20191002_181700-492:localhost:8800mOs4]@anon-20191002_181700-491:localhost:8800m3_4]@anon-20191002_181700-565:localhost:8800m 4]@anon-20191002_181700-564:localhost:8800mܭn 4]@anon-20191002_181700-563:localhost:8800mܘS4]@anon-20191002_181700-562:localhost:8800m܃4]@anon-20191002_181700-561:localhost:8800mr4]@anon-20191002_181700-560:localhost:8800md2[@anon-20191002_181700-55:localhost:8800mN.4]@anon-20191002_181700-558:localhost:8800m94]@anon-20191002_181700-557:localhost:8800m+4]@anon-20191002_181700-556:localhost:8800m4]@anon-20191002_181700-555:localhost:8800m 4]@anon-20191002_181700-554:localhost:8800m4]@anon-20191002_181700-552:localhost:8800mB4]@anon-20191002_181700-551:localhost:8800mL4]@anon-20191002_181700-550:localhost:8800m۲2[@anon-20191002_181700-54:localhost:8800mK-2[@anon-20191002_181700-54:localhost:8800mK,4]@anon-20191002_181700-549:localhost:8800mۦ4]@anon-20191002_181700-548:localhost:8800mے4]@anon-20191002_181700-545:localhost:8800mY4]@anon-20191002_181700-543:localhost:8800m(4]@anon-20191002_181700-541:localhost:8800m2[@anon-20191002_181700-53:localhost:8800mG+2[@anon-20191002_181700-53:localhost:8800mF*4]@anon-20191002_181700-539:localhost:8800m#4]@anon-20191002_181700-538:localhost:8800m4]@anon-20191002_181700-537:localhost:8800m̌4]@anon-20191002_181700-536:localhost:8800m*4]@anon-20191002_181700-535:localhost:8800mگ4]@anon-20191002_181700-534:localhost:8800mڤ4]@anon-20191002_181700-533:localhost:8800mڕ(4]@anon-20191002_181700-532:localhost:8800mڋY4]@anon-20191002_181700-531:localhost:8800m{2[@anon-20191002_181700-52:localhost:8800mBj)4]@anon-20191002_181700-529:localhost:8800mv4]@anon-20191002_181700-527:localhost:8800mr24]@anon-20191002_181700-526:localhost:8800mo4]@anon-20191002_181700-525:localhost:8800ml4]@anon-20191002_181700-524:localhost:8800mh4]@anon-20191002_181700-523:localhost:8800mf}4]@anon-20191002_181700-521:localhost:8800m@4]@anon-20191002_181700-520:localhost:8800m?2[@anon-20191002_181700-51:localhost:8800m?(4]@anon-20191002_181700-518:localhost:8800m4]@anon-20191002_181700-516:localhost:8800m4]@anon-20191002_181700-514:localhost:8800m՞4]@anon-20191002_181700-512:localhost:8800mٴ4]@anon-20191002_181700-510:localhost:8800mَ2[@anon-20191002_181700-50:localhost:8800m='4]@anon-20191002_181700-509:localhost:8800mق|4]@anon-20191002_181700-508:localhost:8800mj4]@anon-20191002_181700-507:localhost:8800m`4]@anon-20191002_181700-506:localhost:8800mG4]@anon-20191002_181700-505:localhost:8800m/4]@anon-20191002_181700-503:localhost:8800m i4]@anon-20191002_181700-501:localhost:8800m1Y@anon-20191002_181700-4:localhost:8800ms-  PgkQQaq $1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2422}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042636129shBTe:localhost:8800", {"sha256": "mwHjARzfi/QAJAsLXZN/qOJh00rs//Q09bmIaKZWmR8"}]], "type": "m.room.join_rules", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042637130zlkqP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042637238, "hashes": {"sha256": "dowxIr8VwLgrikmwtWnR2e16Rn9M/EUouiXAUnN6aKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7ikU7zYPeN9lWDD7c3icHx73kgFf/jehwXLSdsqP9cEbEHVTrI8ZXFIOTEj1nunpEYn4dru/47v8ie6RDO+dBQ"}}, "unsigned": {"age_ts": 1570042637238}}}jQQa $1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2421}{"auth_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}], ["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}]], "prev_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}]], "type": "m.room.canonical_alias", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"alias": "#__ANON__-16:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042636129shBTe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042636489, "hashes": {"sha256": "7jlbtzWH8O7QOPaHYwrlVpyezSAmNoL/Vyfk+7ZgpPo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M/4m5kTl/KE6umvK2YxmH0JdTgbuoCCems+Utjw5ys5JNmy2m2UY3YvjD2/zbHrWMdiKmVwoquHeN+OBysXwDQ"}}, "unsigned": {"age_ts": 1570042636489}}+iQQay $1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2420}{"auth_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "type": "m.room.power_levels", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"users": {"@anon-20191002_181700-450:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042635128KJCvL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042635697, "hashes": {"sha256": "/0269p3A1ve1Hk8RCYZW6gydvrcN0okSnlu8f5itqf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u+D5mDdIagET3JZUB1g/+b8DXNVj9mzwtzo94O840fCC2Jzkd8f2F+oSP99zOPFGfWBLNT5pXxppat5o8JanAg"}}, "unsigned": {"age_ts": 1570042635697}} NT)}R' } T +  X -  V +  T ) } R '{P%X/X-V+T)}R'*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w w*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v v*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u u*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t t*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 s s(Q!xwoIOPTGmJIlTXakxC:localhost:8800__(Q!xwoIOPTGmJIlTXakxC:localhost:8800^^(Q!xwoIOPTGmJIlTXakxC:localhost:8800]](Q!xwoIOPTGmJIlTXakxC:localhost:8800\\(Q!xwoIOPTGmJIlTXakxC:localhost:8800[[(Q!xwoIOPTGmJIlTXakxC:localhost:8800ZZ*Q!xvblqEscwOtCqJntfF:localhost:8800OO*Q!xvblqEscwOtCqJntfF:localhost:8800NN*Q!xvblqEscwOtCqJntfF:localhost:8800MM*Q!xvblqEscwOtCqJntfF:localhost:8800LL*Q!xvblqEscwOtCqJntfF:localhost:8800KK*Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xXYMxashIZAUOTuGAJ:localhost:8800EE*Q!xXYMxashIZAUOTuGAJ:localhost:8800DD*Q!xXYMxashIZAUOTuGAJ:localhost:8800CC*Q!xXYMxashIZAUOTuGAJ:localhost:8800BB*Q!xXYMxashIZAUOTuGAJ:localhost:8800AA*Q!xXYMxashIZAUOTuGAJ:localhost:8800@@*Q!xXYMxashIZAUOTuGAJ:localhost:8800??(Q!wvnfKBSrUlfNmYoeil:localhost:8800||(Q!wvnfKBSrUlfNmYoeil:localhost:8800{{(Q!wvnfKBSrUlfNmYoeil:localhost:8800zz(Q!wvnfKBSrUlfNmYoeil:localhost:8800yy(Q!wvnfKBSrUlfNmYoeil:localhost:8800xx*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800 4' c I  I  s < _ "p]"@KP<2[iiiiii^Q']!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800 %BQ? !yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibility $:Q/ !yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rules #<Q3 !yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels "^Q']!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800 !6Q' !yNfCaBMPezurwkJRAX:localhost:8800m.room.create 6Q' !yTQmLDAxZscWKLMSWh:localhost:8800m.room.create<Q3 !yLccBXjjEasExpsXlt:localhost:8800m.room.power_levels^Q']!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829^Q']!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800:Q/ !yLccBXjjEasExpsXlt:localhost:8800m.room.join_rulesBQ? !yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility6Q' !yLccBXjjEasExpsXlt:localhost:8800m.room.create<Q3 !yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels^Q']!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800^Q']!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800:Q/ !yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rulesBQ? !yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibility6Q' !yAzXcNLHMuqFOcOexj:localhost:8800m.room.create?Q9 !yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_aliasEQ))!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800<Q3 !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels j^Q']!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800 i:Q/ !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rules kBQ? !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibility l6Q' !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.create h;Q3 !xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levelsU\Q'[!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800T9Q/ !xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rulesVAQ? !xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibilityW5Q' !xwoIOPTGmJIlTXakxC:localhost:8800m.room.createS<Q3 !xvblqEscwOtCqJntfF:localhost:8800m.room.power_levelsQ^Q']!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800P:Q/ !xvblqEscwOtCqJntfF:localhost:8800m.room.join_rulesRBQ? !xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibilityS6Q' !xvblqEscwOtCqJntfF:localhost:8800m.room.createO<Q3 !xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels]Q'[!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800:Q/ !xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rulesBQ? !xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility6Q' !xhbvqJDfxMSsZPqvld:localhost:8800m.room.create?Q9 !xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliasEQ))!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800<Q3 !xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels^Q']!xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800:Q/ !xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rulesBQ? !xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibility6Q' !xcdNyJNFEdaBGFycsB:localhost:8800m.room.createQ;Q3 !wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levelsn\Q'[!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800m9Q/ !wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rulesoAQ? !wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibilityp  ;nQQa $1570042640133wGmrF:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2425}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042639132zhjjB:localhost:8800", {"sha256": "iHXGOr+271jzvSq4uMa+famUageuDcbdVYp3Ho520ZI"}]], "type": "m.room.test", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042640133wGmrF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042640538, "hashes": {"sha256": "w7xwb8BHDxBhnzs8zAUaDOPZ/atWdjF12u5pwrjbhIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y2aZtw2en6Ll33fL+w4khQ7WjoR9x64PK5FazcksOvv0q/HYGvl80eioosBWXlT3yJLf3h0YC1OLUQRilmY/Dg"}}, "unsigned": {"age_ts": 1570042640538}}mQQa1 $1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2424}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042638131kazZm:localhost:8800", {"sha256": "xRPrZd3DfHbVZmnyaJtykUXasu7cynM5RL59JYE3Hs0"}]], "type": "m.room.aliases", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"aliases": ["#__ANON__-16:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042639132zhjjB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042639874, "hashes": {"sha256": "JrTtUQ8pg5IOp7wdUkU4iqL0EAfZd/D564otWQnfYfI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QgwExHE9xnJULzclfkmNFCD1E53uHoPXg0A/Ycg83yy4CnzL99VcSu/xszvMKTKW+iGAtHHao3iL+7w3X4wICw"}}, "unsigned": {"age_ts": 1570042639874}}xlQQa $1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2423}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042637130zlkqP:localhost:8800", {"sha256": "TvqKDQ7QPl85pAYPbyhBtVaggjP0T8Yzd8wmYqCC1AU"}]], "type": "m.room.history_visibility", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042638131kazZm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042638472, "hashes": {"sha256": "ImzWElJzNwWwGgtA4TMxKkl5RDoEQJ8f2BlJSKG9auI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1MmNYqIw31STpHyzBjl6z5y7752k+l1wG8i0k1eeU8rK748MinKR+9tTBFcbkHpbc1tu401wTzWJbqvQLhEICw"}}, "unsigned": {"age_ts": 1570042638472}} Sk,{^># E ( O 8 ~ X  g L ) O 8_H o0~c@l-|_?$F)P9Y>']m.room.member@anon-20191002_181700-464:localhost:8800$3 m.room.guest_access#"? m.room.history_visibility"/ m.room.join_rules!3 m.room.power_levels >']m.room.member@anon-20191002_181700-463:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-462:localhost:8800%)) m.room.aliaseslocalhost:8800"?  m.room.history_visibility/  m.room.join_rules9  m.room.canonical_alias3  m.room.power_levels>']m.room.member@anon-20191002_181700-461:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-460:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-459:localhost:8829>']m.room.member@anon-20191002_181700-459:localhost:8829>']m.room.member@anon-20191002_181700-459:localhost:8829"? m.room.history_visibility / m.room.join_rules 3 m.room.power_levels >']m.room.member@anon-20191002_181700-458:localhost:8800 ' m.room.create >']m.room.member@anon-20191002_181700-457:localhost:8829>']m.room.member@anon-20191002_181700-457:localhost:8829>']m.room.member@anon-20191002_181700-457:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-456:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-455:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-454:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-453:localhost:8829>']m.room.member@anon-20191002_181700-453:localhost:8829>']m.room.member@anon-20191002_181700-453:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-452:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-451:localhost:8829>']m.room.member@anon-20191002_181700-451:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-450:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-449:localhost:8800>']m.room.member@anon-20191002_181700-449:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-448:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-447:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-446:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-445:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-443:localhost:8800>']m.room.member@anon-20191002_181700-444:localhost:8800  $qQQaC $1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2428}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-452:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042644136OugnY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042644441, "hashes": {"sha256": "SPKGv/FayfRGneK1zo4a25uqC++gi5lnAX0Hd2+5WaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CbIfV3TOKjEUeIWFofLIzUZ694RmHvb2p9/dq/Z2qk3Z0AC5//n/Fgl9H1heCYFjsHgK2yq+MRQdGPE4rBgzAQ"}}, "unsigned": {"age_ts": 1570042644441}}spQQe $1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "txn_id": "456", "stream_ordering": 2427}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$15700426410cEjWu:localhost:8829", {"sha256": "zFxQpTDmGdcgWNSOebQUJkhpVmqLzaULB5VuPTD/E/o"}]], "type": "m.room.message", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042642135oMfQy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042642942, "hashes": {"sha256": "CFjfgu1aTmfZrimFZR/+xr2mxiumf10v3R3g0U5eTIM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cVzyFWcksCgWX4zaBNbKE6zI0rM7JoiaYfazq7EJsMitCSpQBjZ1cIsGFxsZzolY6/NcAPtNiQ8kWOeCS5IvAg"}}, "unsigned": {"age_ts": 1570042642942}}aoMQ1 $15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2426}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042637130zlkqP:localhost:8800", {"sha256": "TvqKDQ7QPl85pAYPbyhBtVaggjP0T8Yzd8wmYqCC1AU"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-451", "membership": "join"}, "depth": 9, "event_id": "$15700426410cEjWu:localhost:8829", "hashes": {"sha256": "JA7IjYnK5tmsoc64zv8STNlpn37Rxq5Bfl+yIzWQbMM"}, "origin": "localhost:8829", "origin_server_ts": 1570042641360, "prev_events": [["$1570042640133wGmrF:localhost:8800", {"sha256": "5clB+LGKXwGxFQljfkz1/eK2nsJwB5f0h/vgZgXQs/M"}]], "prev_state": [], "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-451:localhost:8829", "state_key": "@anon-20191002_181700-451:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ks/r7BMKytsrHZl/w17nkgOlfJXUYHLTy7ds4NhQhI6qWyxS28OgNZrDeWmD+zSCjQv0wRjl0I5qVzmyrSA3AQ"}, "localhost:8829": {"ed25519:a_UxIG": "GA+El08p1KoeBeRZaOxk3V1/4ZMVapUF4+PJ+GWkZL6vt3LeMrvHX9MrBAy2Shu2zGtNTqPXTMl/DAxRSwlDBg"}}, "unsigned": {"age": 140}} V^8pH `8vP( ` 8  p H X 0  h @  ~ V . f>zT,d<tL$X0h@(2'Q$1570043195269hcCzg:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712217nuYrc:localhost:8800'Q$1570042712217nuYrc:localhost:8800'Q$1570042711216KdEEo:localhost:8800~%M$15700427086bDrAU:localhost:8829}%M$15700427086bDrAU:localhost:8829|'Q$1570043194268zlNeZ:localhost:8800'Q$1570043194268zlNeZ:localhost:8800'Q$1570043194268zlNeZ:localhost:8800'Q$1570043193267ZyDyW:localhost:8800'Q$1570043193267ZyDyW:localhost:8800'Q$1570043192266CXqej:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152260dkyqc:localhost:8800'Q$1570043152260dkyqc:localhost:8800'Q$1570043151259knbjg:localhost:8800%M$15700427439Hwxyi:localhost:8829%M$15700427439Hwxyi:localhost:8829%M$15700427439Hwxyi:localhost:8829'Q$1570042742255yQzPA:localhost:8800'Q$1570042742255yQzPA:localhost:8800'Q$1570042742255yQzPA:localhost:8800'Q$1570042742255yQzPA:localhost:8800'Q$1570042741254DKIYz:localhost:8800'Q$1570042741254DKIYz:localhost:8800'Q$1570042741254DKIYz:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042739252bWghU:localhost:8800'Q$1570042739252bWghU:localhost:8800'Q$1570042738251iukAg:localhost:8800%M$15700427368TlZQs:localhost:8829%M$15700427368TlZQs:localhost:8829%M$15700427368TlZQs:localhost:8829'Q$1570042734247SfTxR:localhost:8800'Q$1570042734247SfTxR:localhost:8800'Q$1570042734247SfTxR:localhost:8800'Q$1570042734247SfTxR:localhost:8800'Q$1570042733246cYViL:localhost:8800'Q$1570042733246cYViL:localhost:8800'Q$1570042733246cYViL:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042732244zDmQh:localhost:8800'Q$1570042732244zDmQh:localhost:8800'Q$1570042731243YuOkC:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800%M$15700427177BOUHn:localhost:8829%M$15700427177BOUHn:localhost:8829%M$15700427177BOUHn:localhost:8829%M$15700427177BOUHn:localhost:8829'Q$1570042716222nflqt:localhost:8800'Q$1570042716222nflqt:localhost:8800'Q$1570042716222nflqt:localhost:8800'Q$1570042716222nflqt:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042714220vWWFN:localhost:8800 $(N t  - S y 2Z?eDj#jQQQ$1570042665164nYKmj:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800jQQQ$1570042664163IAHXd:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656150UsLRz:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656150UsLRz:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656150UsLRz:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656149JNVWR:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656149JNVWR:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656149JNVWR:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042655148eXOyA:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042655148eXOyA:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042654147iSsjl:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800hMQQ$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800hMQQ$15700426501OLytM:localhost:8829$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800h MQQ$15700426501OLytM:localhost:8829$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800h MQQ$15700426501OLytM:localhost:8829$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j QQQ$1570042649143JxPAB:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j QQQ$1570042649143JxPAB:localhost:8800$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j QQQ$1570042649143JxPAB:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042649143JxPAB:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042648141xSHQB:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042648141xSHQB:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042648141xSHQB:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042647140rNeEf:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042647140rNeEf:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042647140rNeEf:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042646139VXLYO:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042646139VXLYO:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042646139VXLYO:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j~QQQ$1570042646138YEunv:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j}QQQ$1570042646138YEunv:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j|QQQ$1570042645137fBnPZ:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800h{MQQ$15700426410cEjWu:localhost:8829$1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800 sJ DY* n ?  T % i : ~ O d 5 yJ_0tEZ+o@U&j; sP!.s4sI.Q$1570043583407USfCf:localhost:8800sha256 ;.Q$1570043583406mAAxW:localhost:8800sha256 :.Q$1570043582405uFoRY:localhost:8800sha256 9.Q$1570043581404AarAd:localhost:8800sha256 8.Q$1570043580403vYYeb:localhost:8800sha256 7.Q$1570043579402KDYtE:localhost:8800sha256 6.Q$1570043578401arzBQ:localhost:8800sha256 5.Q$1570043578400zncwP:localhost:8800sha256 4.Q$1570043575399SiSKs:localhost:8800sha256 3.Q$1570043572397AAGBm:localhost:8800sha256 1.Q$1570043572396lZXIU:localhost:8800sha256 0.Q$1570043571395bDLFD:localhost:8800sha256 /.Q$1570043570394QELCg:localhost:8800sha256 ..Q$1570043569393UscIm:localhost:8800sha256 -.Q$1570043568392ItLhq:localhost:8800sha256 ,.Q$1570043567391GonfI:localhost:8800sha256 +.Q$1570043566390qTwyJ:localhost:8800sha256 *.Q$1570043565389RsxAr:localhost:8800sha256 ).Q$1570043564388ZmOEV:localhost:8800sha256 (.Q$1570043559386ZLBoz:localhost:8800sha256 $.Q$1570043558385Xpkrp:localhost:8800sha256 #.Q$1570043558384QrKsp:localhost:8800sha256 ".Q$1570043557383IxQaJ:localhost:8800sha256 !.Q$1570043556382AgYyj:localhost:8800sha256 .Q$1570043550380LNzMz:localhost:8800sha256 .Q$1570043549379wtMED:localhost:8800sha256 .Q$1570043548378IxCfM:localhost:8800sha256 .Q$1570043547377kWWAW:localhost:8800sha256 .Q$1570043546376YfkfL:localhost:8800sha256 .Q$1570043545375TmtMk:localhost:8800sha256 .Q$1570043542373yGTqH:localhost:8800sha256 .Q$1570043541372ZeTYJ:localhost:8800sha256 .Q$1570043540371avDlf:localhost:8800sha256 .Q$1570043539370xCBJr:localhost:8800sha256 .Q$1570043538369ozxqx:localhost:8800sha256 .Q$1570043536368agmuM:localhost:8800sha256 .Q$1570043536367lvGLr:localhost:8800sha256 .Q$1570043535366hhblx:localhost:8800sha256 .Q$1570043534365WVAkx:localhost:8800sha256 .Q$1570043533364iwqCT:localhost:8800sha256 .Q$1570043530362jRUtV:localhost:8800sha256 .Q$1570043529361Oytod:localhost:8800sha256 .Q$1570043528360cetnZ:localhost:8800sha256 .Q$1570043527359ScxWW:localhost:8800sha256 .Q$1570043527358wChxc:localhost:8800sha256 .Q$1570043525357VEfrE:localhost:8800sha256 .Q$1570043524356NlySy:localhost:8800sha256 .Q$1570043523355SbJjm:localhost:8800sha256 .Q$1570043522354IAAap:localhost:8800sha256 .Q$1570043521353geZrN:localhost:8800sha256 .Q$1570043518351Popej:localhost:8800sha256 .Q$1570043517350ncbDd:localhost:8800sha256 .Q$1570043517349uVTMj:localhost:8800sha256 .Q$1570043516348vThZG:localhost:8800sha256 .Q$1570043515347LGRKl:localhost:8800sha256 .Q$1570043506346EEQDj:localhost:8800sha256 .Q$1570043504345DCjlJ:localhost:8800sha256 .Q$1570043503344dJwGF:localhost:8800sha256 .Q$1570043503343snlnn:localhost:8800sha256 .Q$1570043502342mVJmO:localhost:8800sha256 .Q$1570043501341JmcnI:localhost:8800sha256 .Q$1570043486339YbYQQ:localhost:8800sha256 .Q$1570043485338vbLwS:localhost:8800sha256 .Q$1570043484337ylFDA:localhost:8800sha256 .Q$1570043484336qKOPD:localhost:8800sha256 .Q$1570043483335oDIDb:localhost:8800sha256 .Q$1570043483334ejWtI:localhost:8800sha256 .Q$1570043482333DxDEq:localhost:8800sha256 .Q$1570043481332XroCo:localhost:8800sha256 .Q$1570043481331UNaWT:localhost:8800sha256 .Q$1570043480330seKnV:localhost:8800sha256 .Q$1570043479329kvsXb:localhost:8800sha256 .Q$1570043478328DMkRS:localhost:8800sha256 ^.Q$1570043584408XdGfO:localhost:8800sha256 < '`p `p 0 @ P `  p 0@P0@PPMx]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800Mw]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800Mv]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800Mu]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800Mt]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800Mr]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800Mq]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mp]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800PM]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800M]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800M]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800M]Q@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800M]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800M]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800M]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800M]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800M]Q@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800M]Q@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800M ]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800M ]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800M ]Q@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:8800M ]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800M ]Q@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800M]Q@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800M]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800M]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800M]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800M]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800M]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800M]Q@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800M]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800M]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800M]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800M~]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800M}]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800M|]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800M{]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800Mz]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800My]Q@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800 W?+Ed2j8q? wp>% w E  ~ L ]+ R }  X &  8 ^ ,}KjQ221e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 %1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw [0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRog1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk &1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA A1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg&1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uv1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A[1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAo1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEz1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U i1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk{1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgE1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQS1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U61e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 P1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwJ1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 \1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0@1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU-0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wQ1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 61e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0O0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM]j21e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 21e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo p1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 ^ Ij8WjP8p> vDp|J%>  v D   | J  Q   W % ^ ,2dj8p1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU O1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk D1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI 1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 11e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM~1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew'1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUC1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A P1e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds '1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw01e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ~1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcb1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAc0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8[1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI 1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb011e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg 0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIU1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAH1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YY1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg\1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEs1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM+1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0\1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo-1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY/1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 #1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY W?+Ed2j8q? wp>% w E  ~ L ]+ R }  X &  8 ^ ,}KjQ221e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 %1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw [0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRog1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk &1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegoz1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA A1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg&1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uv1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A[1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAo1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEz1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U i1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk{1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgE1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQS1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U61e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 P1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwJ1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 \1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0@1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU-0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wQ1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 61e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0O0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM]j21e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 21e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo p1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 ^ )[7\n%D c  | - L  q ( AZ6{,Ej!F- ].@anon-20191002_181700-480:localhost:8800offlinem׍3m׍3Fp ]@anon-20191002_181700-415:localhost:8800offlinemә3mӔ{Fo ]@anon-20191002_181700-418:localhost:8800offlinem̔mӿFn ]@anon-20191002_181700-408:localhost:8800offlinem<m4Fm ]@anon-20191002_181700-421:localhost:8800offlinemmFi ]@anon-20191002_181700-416:localhost:8800offlinemӒmӒFg ]@anon-20191002_181700-413:localhost:8800offlinemcmcFe ]@anon-20191002_181700-398:localhost:8800offlinemҪWmҡ`Fd ]@anon-20191002_181700-393:localhost:8800offlinemImGFc ]@anon-20191002_181700-404:localhost:8800offlinemmm Fb ]@anon-20191002_181700-395:localhost:8800offlinem{"mwF+ ],@anon-20191002_181700-468:localhost:8829offlinem֦mׇF* ]+@anon-20191002_181700-478:localhost:8800offlinemjmjF( ])@anon-20191002_181700-476:localhost:8800offlinemImIF% ]&@anon-20191002_181700-474:localhost:8829offlinemmF# ]$@anon-20191002_181700-466:localhost:8829offlinemւmL" ] #@anon-20191002_181700-464:localhost:8800offlinemd mmdfL! ] #@anon-20191002_181700-458:localhost:8800offlinem mm L ]  @anon-20191002_181700-462:localhost:8800offlinemCmÌmCF ]@anon-20191002_181700-467:localhost:8800offlinem֨m֨L ] @anon-20191002_181700-460:localhost:8800offlinem Am֜|mbF ]@anon-20191002_181700-465:localhost:8800offlinemֆ1mֆ1F ]@anon-20191002_181700-463:localhost:8800offlineme$me$F ]@anon-20191002_181700-451:localhost:8829offlinem1mN-F ]@anon-20191002_181700-461:localhost:8800offlinemDpmDpF ]@anon-20191002_181700-453:localhost:8829offlinemա7m&L ] @anon-20191002_181700-449:localhost:8800offlinemZmUmZF ]@anon-20191002_181700-459:localhost:8829offlinemm oL ]  @anon-20191002_181700-447:localhost:8800offlinem9 m<m9F ] @anon-20191002_181700-454:localhost:8800offlinemmL ]  @anon-20191002_181700-445:localhost:8800offlinemmŤm L ] @anon-20191002_181700-442:localhost:8800offlinemmղmF ]@anon-20191002_181700-452:localhost:8800offlinemդ3mդ3L ] @anon-20191002_181700-433:localhost:8800offlinemԠmՋ mԣF ]@anon-20191002_181700-450:localhost:8800offlinemՃmՃF ]@anon-20191002_181700-448:localhost:8800offlinem[m[F~ ]@anon-20191002_181700-446:localhost:8800offlinem:%m:%L{ ] @anon-20191002_181700-430:localhost:8800offlinemxmTm|Fy ]@anon-20191002_181700-425:localhost:8800offlinem*m#Fw ]@anon-20191002_181700-428:localhost:8800offlinemW~mOFq ]@anon-20191002_181700-412:localhost:8800offlinemmmf <]! ^ ,e3k9& v D  ]   | J S   Q X M q  W %  j !+r8@yG d21e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUU1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMF1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakC1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE21e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk B0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo\1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4o1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA y 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 &1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwe1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y>1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho31e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0#1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs_0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgd1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ew1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv01e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Ei1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAZ1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4<1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0`1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8j1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0x0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYo1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY 1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4a1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk11e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig >21e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU 8d1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 k21e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 21e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ ZI YH XG WF VE UD TC QB PA O@ N? M> J= H< G; F: E9 D8 C7 B6 @5 ?4 >3 =2 <1 ;0 ./ -. ,- +, *+ )* ') &( $' #& "% !$ # " !                                                                                                                     ~ } | z x w v u t s r p o m l k j i h f d c b a ` _ ^ [ Z Y X W V U T S Q P O N M L K J I H F E D C B A @~ | { z y x w v u t s r q p o n m l k j i h g f ~e }d |c zb ya w` v_ u^ t] s\ r[ pZ nY mX lW kV jU iT hS fR eQ cP bO aN `M _L ^K \J ?} =| <{ ;z :y 9x 8w 7v 5u 4t 3s 2r 1q ,p +o *n (m 'l &k %j $i h g f e d c b a ` _ ^ ] \ [ Z Y X W VUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  _ _gtQQaq $1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2431}{"auth_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}], ["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}]], "prev_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}]], "type": "m.room.join_rules", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042646139VXLYO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042646806, "hashes": {"sha256": "GCJUGA8+4IjdnTKfsC1k0Ab6F8zhdJRPrlXqostfY/Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/loBuO87A6/UGLJVPKJd5U6YaorIKGfnV4H31L7iNvidNymkyl4uZq/GnWTYmc0ZNInFYd0ndghC5LRGWeKxAw"}}, "unsigned": {"age_ts": 1570042646806}}+sQQay $1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2430}{"auth_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "type": "m.room.power_levels", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"users": {"@anon-20191002_181700-452:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042646138YEunv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042646130, "hashes": {"sha256": "PnOON2nX8fdv44Jmt26j9buIgDGFg0FUcZoz4YZ1eXk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X9dZBaglER9mgTl+RyUFe+m66NppiMmdPRRzOUO7+YC2ml+7/FkXAjPtOZRuezsC7NIioLJSWLifgf8iPdopDg"}}, "unsigned": {"age_ts": 1570042646130}}rQQa) $1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2429}{"auth_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}]], "prev_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}]], "type": "m.room.member", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-452", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-452:localhost:8800", "event_id": "$1570042645137fBnPZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042645334, "hashes": {"sha256": "+V3sVEhs2skZpCM0/0TFTmvgNfqJ+ZKyat6DDDI7ED4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pap2djLt5yD7vUurmpYDFBSmdxLWbwRkGjvAL4TIEO79/846wdicLLddewCJFaZiHgh1gATzrghzX2aK/6gbAQ"}}, "unsigned": {"age_ts": 1570042645334}} f( J  } K g5d.]Q)Q ]$1570042662161lGrSW:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mRm\@anon-20191002_181700-454:localhost:8800Q)Q ]$1570042662160SrmtM:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mhmq@anon-20191002_181700-454:localhost:8800Q)Q ]$1570042661159xQwJK:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mrm}@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042661158igwHF:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mɪmɶ@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042660157svDcU:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mm@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042660156wxhvl:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 m<mC@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042659155mEUeP:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mm@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042659154Fztdf:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mm @anon-20191002_181700-454:localhost:8800 Q)Q ]$1570042658153tmCYJ:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mտmտ@anon-20191002_181700-454:localhost:8800 Q#Q ]$1570042658152btGpA:localhost:8800m.room.test!bQDOrbAknnQZfUbhgS:localhost:8800mվmվ@anon-20191002_181700-454:localhost:8800 Q'Q ]$1570042657151cITOZ:localhost:8800m.room.member!bQDOrbAknnQZfUbhgS:localhost:8800mջHmջ@anon-20191002_181700-454:localhost:8800" Q?Q ]$1570042656150UsLRz:localhost:8800m.room.history_visibility!bQDOrbAknnQZfUbhgS:localhost:8800mշmո@anon-20191002_181700-454:localhost:8800 Q/Q ]$1570042656149JNVWR:localhost:8800m.room.join_rules!bQDOrbAknnQZfUbhgS:localhost:8800mյmյz@anon-20191002_181700-454:localhost:8800Q3Q ]$1570042655148eXOyA:localhost:8800m.room.power_levels!bQDOrbAknnQZfUbhgS:localhost:8800mձimձ@anon-20191002_181700-454:localhost:8800Q'Q ]$1570042654147iSsjl:localhost:8800m.room.member!bQDOrbAknnQZfUbhgS:localhost:8800mխmծ_@anon-20191002_181700-454:localhost:8800 Q'Q  ]$1570042653146dGCce:localhost:8800m.room.create!bQDOrbAknnQZfUbhgS:localhost:8800mժmժ^@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042651145wBynt:localhost:8800m.room.message!GSxvxNevpCiwmFCHys:localhost:8800 mգ,mգ@anon-20191002_181700-452:localhost:8800M'Q ] $15700426501OLytM:localhost:8829m.room.member!GSxvxNevpCiwmFCHys:localhost:8800 m՞Am՟K@anon-20191002_181700-453:localhost:8829Q'Q ]$1570042649143JxPAB:localhost:8800m.room.member!GSxvxNevpCiwmFCHys:localhost:8800m՛Om՛@anon-20191002_181700-452:localhost:8800Q#Q ]$1570042648142spuws:localhost:8800m.room.test!GSxvxNevpCiwmFCHys:localhost:8800mՙmՙ@anon-20191002_181700-452:localhost:8800Q3Q ]$1570042648141xSHQB:localhost:8800m.room.guest_access!GSxvxNevpCiwmFCHys:localhost:8800mՖRmՖ@anon-20191002_181700-452:localhost:8800"Q?Q ]$1570042647140rNeEf:localhost:8800m.room.history_visibility!GSxvxNevpCiwmFCHys:localhost:8800mՓ~mՓ@anon-20191002_181700-452:localhost:8800Q/Q ]$1570042646139VXLYO:localhost:8800m.room.join_rules!GSxvxNevpCiwmFCHys:localhost:8800mՑmՑ@anon-20191002_181700-452:localhost:8800~Q3Q ]$1570042646138YEunv:localhost:8800m.room.power_levels!GSxvxNevpCiwmFCHys:localhost:8800mՎrmՎ@anon-20191002_181700-452:localhost:8800}Q'Q ]$1570042645137fBnPZ:localhost:8800m.room.member!GSxvxNevpCiwmFCHys:localhost:8800mՋVmՌ.@anon-20191002_181700-452:localhost:8800 %u~Z x  ^ v  :vt8tr6r6u[YQQ/ $1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules`XQQ9 $1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias]WQQ3 $1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levelsVQQ']$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800WUQQ' $1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.createcTQQ? $1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility[SQQ/ $1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules]RQQ3 $1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levelsQQQ']$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800WPQQ' $1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.create}OMQ']$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829NQQ']$1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829cMQQ? $1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility[LQQ/ $1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules]KQQ3 $1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levelsJQQ']$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800WIQQ' $1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.create}HMQ']$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829GQQ']$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829cFQQ? $1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility[EQQ/ $1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules]DQQ3 $1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levelsCQQ']$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800WBQQ' $1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.createAQQ']$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829c@QQ? $1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility[?QQ/ $1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules]>QQ3 $1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels=QQ']$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800W<QQ' $1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.create};MQ']$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829:QQ']$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829]9QQ3 $1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_accessc8QQ? $1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility[7QQ/ $1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules]6QQ3 $1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levels5QQ']$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800 #>t j  E X w MCe~1*IYQ' Q!JPTwFTSDaBXwUTgitj:localhost:8800m.room.create$1570042685185RhcXe:localhost:8800eQ? Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility$1570042681182ZiRRU:localhost:8800]Q/ Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules$1570042680181TFyrx:localhost:8800_Q3 Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levels$1570042680180uuIxG:localhost:8800Q']Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800$1570042679179ZJCqE:localhost:8800YQ' Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.create$1570042678178HSUoI:localhost:8800Q']M!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$15700426753WBESe:localhost:8829Q']Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$1570042675177dzCbt:localhost:8800Q']Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$1570042674175gurnU:localhost:8800e Q? Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility$1570042673174OxGuP:localhost:8800] Q/ Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules$1570042672173XsxsH:localhost:8800_ Q3 Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levels$1570042672172vPvbe:localhost:8800 Q']Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800$1570042671171AQZaz:localhost:8800Y Q' Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.create$1570042670170TtDpX:localhost:8800Q']M!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$15700426692GLpqH:localhost:8829Q']Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$1570042669169ZEFsJ:localhost:8800Q']Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$1570042667167mhSmJ:localhost:8800eQ? Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility$1570042666166IBpPy:localhost:8800]Q/ Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules$1570042666165HDkhp:localhost:8800_Q3 Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levels$1570042665164nYKmj:localhost:8800Q']Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800$1570042664163IAHXd:localhost:8800YQ' Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.create$1570042663162sQrEh:localhost:8800Q']Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829$1570042657151cITOZ:localhost:8800eQ? Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility$1570042656150UsLRz:localhost:8800]~Q/ Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules$1570042656149JNVWR:localhost:8800_}Q3 Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels$1570042655148eXOyA:localhost:8800|Q']Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800$1570042654147iSsjl:localhost:8800Y{Q' Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.create$1570042653146dGCce:localhost:8800zQ']M!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$15700426501OLytM:localhost:8829yQ']Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$1570042650144fzLvy:localhost:8800xQ']Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$1570042649143JxPAB:localhost:8800_wQ3 Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_access$1570042648141xSHQB:localhost:8800evQ? Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility$1570042647140rNeEf:localhost:8800]uQ/ Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules$1570042646139VXLYO:localhost:8800_tQ3 Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levels$1570042646138YEunv:localhost:8800  ;wQQa $1570042648142spuws:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2434}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042648141xSHQB:localhost:8800", {"sha256": "O+JQsNFaKzpRhDCXQy1CIw5VrGZ8P1+Vtd1LMKJKUUw"}]], "type": "m.room.test", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042648142spuws:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042648988, "hashes": {"sha256": "/nd7n4lkSHD6giwIagnwCu8c6750SjGMdAtHGaN1N7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g81K6HvMwT+sbqtc5/q9ylLI8OYGAVnpGaN9ZBs/upkheCyfD2xnELH2YczJjjKzwFOHEtE3Sy0bxZc8i7AwCQ"}}, "unsigned": {"age_ts": 1570042648988}}nvQQa $1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2433}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042647140rNeEf:localhost:8800", {"sha256": "Vssrww3bZ8eLms+X1TY2hGhdNtNQiAUHwyNYt4FoVjA"}]], "type": "m.room.guest_access", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042648141xSHQB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042648146, "hashes": {"sha256": "sQmHQD0Z51xltRS8c6Y4VGUl1BdckkW9mEFaaCZhKgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r2rxQgx0xcGqFXc5wRMC15D4S0Nz9b7hNOMSydm1r4i3rl/LqiIpalLxyhAqrabf7/ISYqoe1H5g5ZzQtqMQCA"}}, "unsigned": {"age_ts": 1570042648146}}xuQQa $1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2432}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042646139VXLYO:localhost:8800", {"sha256": "o+Uof60IeIHr/xWaARgkktRPvtN5otq0q3WvagdhPjo"}]], "type": "m.room.history_visibility", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042647140rNeEf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042647422, "hashes": {"sha256": "hkp1XPmlCrGP0HCwJ6txwbt7mZIjaxyaJzvsPQ5o2yY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jYjp19VN6SNz0D7j87l3osTtrZVDMaKVm4iyhHWjQ5bchVI/L+UJzRqIEXP8pYBtor7wb9Ko8b7aKzUZU3NDBw"}}, "unsigned": {"age_ts": 1570042647422}} |yMQ1M $15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2436}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042646139VXLYO:localhost:8800", {"sha256": "o+Uof60IeIHr/xWaARgkktRPvtN5otq0q3WvagdhPjo"}], ["$1570042649143JxPAB:localhost:8800", {"sha256": "HJWx35caW1RHi+GfqOYPc+Hkn15wICJ8sbQhNMwPlyk"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-453", "membership": "join"}, "depth": 9, "event_id": "$15700426501OLytM:localhost:8829", "hashes": {"sha256": "UIgWkwutyS/O46WWrIU3u054oSrBT+918XOhogivsdc"}, "origin": "localhost:8829", "origin_server_ts": 1570042650177, "prev_events": [["$1570042649143JxPAB:localhost:8800", {"sha256": "HJWx35caW1RHi+GfqOYPc+Hkn15wICJ8sbQhNMwPlyk"}]], "prev_state": [], "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-453:localhost:8829", "state_key": "@anon-20191002_181700-453:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cEaFDld4dd2BuuIFokEmdZgKrsgk08FZkk0o1kAUfydluy62jjYz1QAYKt9wmlkvoaAYhMkaURT7aauTlOfFBQ"}, "localhost:8829": {"ed25519:a_UxIG": "uVZbwI8DrGZoTKoylTvB6IcOgL0Nf2e5Bi4GSO/zAO5UQo2POspoLsJt/aECmLoTtYdu/xXD310HpRyUSgz2DA"}}, "unsigned": {"age": 161, "replaces_state": "$1570042649143JxPAB:localhost:8800"}};xQQa $1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2435}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042646139VXLYO:localhost:8800", {"sha256": "o+Uof60IeIHr/xWaARgkktRPvtN5otq0q3WvagdhPjo"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042648142spuws:localhost:8800", {"sha256": "xKYI1rhWlfL1w4AXDKtoEjmqFyWFz6voD1XvXp8GyX4"}]], "type": "m.room.member", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-453", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-453:localhost:8829", "event_id": "$1570042649143JxPAB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042649423, "hashes": {"sha256": "Pqu+8QU3iPxgNOniY+en2shjzfMdwK6LPT2ny2ieVwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YyFr7AeUsAL+4qIvdVh2bg4QWKBWbxaMm6WnvdFb/8KvKX2KcOmcCms/+VRtDAIO3Az+zk65L5VJt+tphpUSAg"}, "localhost:8829": {"ed25519:a_UxIG": "yr2qcneJXqJE3NY6nhp2j9DxFxoOqZEni1EBF6nebA3ns4q7fFKkrdaq3xo7iBO+F5day5HcC+8EqDXhiQ/6CQ"}}, "unsigned": {"age_ts": 1570042649423, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-452:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-452:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-452", "avatar_url": null}, "sender": "@anon-20191002_181700-452:localhost:8800"}]}} n un|QQa) $1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2439}{"auth_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}]], "prev_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}]], "type": "m.room.member", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-454", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-454:localhost:8800", "event_id": "$1570042654147iSsjl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042654194, "hashes": {"sha256": "D19T1Cc+o6ydN5v06n4bjs0lZj3iFdDsvm8sEnb4GWY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y1luRNbcKsCB/65smCDk3VVdCO4hAWoqEi9O6eb0ao+aFAi8KHLqNS7Os0Sbk43dUD9ejbtd5kElKEOgOqUkBg"}}, "unsigned": {"age_ts": 1570042654194}}{QQaC $1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2438}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-454:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042653146dGCce:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042653200, "hashes": {"sha256": "SYITibJ6qDJcr4IDqOErJynQhkGmySegFXGv+StHItE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w38ZwL1JVjPaLecVfPKrOPHJyIqSdJL2XJ0LSe3plnjHm1Ro3iYG45onuZrWwcOdsbfL0FLvmfDV2/ob/ZDbDg"}}, "unsigned": {"age_ts": 1570042653200}}szQQe $1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "txn_id": "457", "stream_ordering": 2437}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$15700426501OLytM:localhost:8829", {"sha256": "1PPMpKEXA8Fip7qAlEMIQPsSJMWubal4APmY6G0BPmw"}]], "type": "m.room.message", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042651145wBynt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042651436, "hashes": {"sha256": "/uKggIUFXUteRKIbQa3NQaVGFp6yUfv7y1NSx8n58lE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N1hqE7kto5nCpLqUkxWvS4rLhEUJb/Zeqhpl5qh6XaYgfFULXMMdaXPxWeo9rVVTQwT9/D7cewag3Dg6kDvKDw"}}, "unsigned": {"age_ts": 1570042651436}} PH+h7 v |o=+  JuV  $Cj8  \ *p>  J]P |b0 V $ Vd1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwke1e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScp1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks61e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac|1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o t1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4,1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicF1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0s1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGER1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok'1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU/1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0"1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to0e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE{1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 91e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM "1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38*1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g ?1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0%1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 e1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM T1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk91e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 +1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888  D1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w }1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 a1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns >1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c 1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQG1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE=1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m m m$ m־ mֺM mַ_ mִI mְ m֭* m֧ m֢ m֟ m֝ m֙~ m֖~ m֓ m֑ m֍ m֊ mք mր8 m} m{r mw% ms mp mnJ mkv mh mdp m_ m\ mZ mX8 mU{ mR mN mL mI; mC m? m= m; m6 m3 m1Q m.J m+ m&[ m mr m m m mR m m m m m m> m| m mX m m m m) m m߾ m m mX m mR mh mr mɪ m m< m m mտ mվ mջH mշ mյ mձi mխ mժ mգ, m՞A m՛O mՙ mՖR mՓ~ mՑ  mՎr ~ ~mՋV } }mՇ | |mՁ { {m{ z zmx y ymv x xmp w wmk v vmh u ume t tma s sm_/ r rm[ q qmWb p pmT o omR2 n nmN m mmK l lmH k kmF j jmC i im? h hm: m mm m m m m 5 mD m m$ mM m m m m_ mm m mn m mi mC mز m@ mҖ m m$ m< m[ mɂ mǿ m9 g gm4 f fm29 e em.G d dm*O c cm' b bm$ a am! ` `m _ _m ^ ^m) ] ]m \ \m [ [m Z Zm  Y Ym X Xm W Wm. V Vmw U Um< T Tm& S Sm; R Rm Q Qm# P Pm O Om, N Nm۬ M Mm L Lm K KmR J JmL I Im H Hm5 G GmԻ F FmԹG E EmԴ D DmԱ C CmԮ B BmԞ A Amԛ$ @ @mԘ ? ?mԖY > >mԑ = =mԎd < <mԋj ; ;mԈ : :mԅ+ 9 9mv\ 8 8mr< 7 7mpR 6 6mi 5 5mf 4 4mc 3 3ma 2 2m^ 1 1mV 0 0mT / /mQ . .mM - -mJ , , 3f2 K d  } 0 I b }0If4Mf2KJuQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042693195hNKnU:localhost:8800JtQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042692194rxboZ:localhost:8800JsQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042691193uVdPZ:localhost:8800JrQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042691192yNWVM:localhost:8800JqQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042690191yQfnl:localhost:8800JpQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042689190UkvMv:localhost:8800JoQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042688189axPjv:localhost:8800JnQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687188ddQmS:localhost:8800JmQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687187gbArC:localhost:8800JlQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042686186Qxqmn:localhost:8800JkQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042685185RhcXe:localhost:8800JjQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042683184TpChh:localhost:8800JiQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042682183iUUXF:localhost:8800JhQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042681182ZiRRU:localhost:8800JgQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680181TFyrx:localhost:8800JfQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680180uuIxG:localhost:8800JeQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042679179ZJCqE:localhost:8800JdQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042678178HSUoI:localhost:8800HcQM !MqstbCLZIQFiYNHrqR:localhost:8800$15700426765pydev:localhost:8829HbQM !MqstbCLZIQFiYNHrqR:localhost:8800$15700426764DoRhm:localhost:8829HaQM !MqstbCLZIQFiYNHrqR:localhost:8800$15700426753WBESe:localhost:8829J`QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042675176WKRiz:localhost:8800J_QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042674175gurnU:localhost:8800J^QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042673174OxGuP:localhost:8800J]QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042672173XsxsH:localhost:8800J\QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042672172vPvbe:localhost:8800J[QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042671171AQZaz:localhost:8800JZQQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042670170TtDpX:localhost:8800HYQM !WuiaqqIOvBjgETqdus:localhost:8800$15700426692GLpqH:localhost:8829JXQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042668168uCbYK:localhost:8800JWQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042667167mhSmJ:localhost:8800JVQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042666166IBpPy:localhost:8800JUQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042666165HDkhp:localhost:8800JTQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042665164nYKmj:localhost:8800JSQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042664163IAHXd:localhost:8800JRQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042663162sQrEh:localhost:8800JQQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042662161lGrSW:localhost:8800JPQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042662160SrmtM:localhost:8800JOQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042661159xQwJK:localhost:8800JNQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042661158igwHF:localhost:8800JMQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042660157svDcU:localhost:8800JLQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042660156wxhvl:localhost:8800JKQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042659155mEUeP:localhost:8800JJQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042659154Fztdf:localhost:8800JIQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042658153tmCYJ:localhost:8800JHQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042658152btGpA:localhost:8800JGQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042657151cITOZ:localhost:8800JFQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042656150UsLRz:localhost:8800JEQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042656149JNVWR:localhost:8800JDQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042655148eXOyA:localhost:8800JCQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042654147iSsjl:localhost:8800 , k x ' K 4 A N [ u$1Xhe>^r!P]Q@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800]P]Q@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800ZP]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800YP]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800TP]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800SP]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800KP]Q@anon-20191002_181700-487:localhost:8829!WYyiQAVvitxsLZKVCG:localhost:8800P]Q@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:88002P]Q@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800[P]Q@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800VP]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800UP]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800RP]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800QP]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800PP]Q@anon-20191002_181700-502:localhost:8829!coGyOAgYnlBZAqznax:localhost:8800OP]Q@anon-20191002_181700-502:localhost:8829!coGyOAgYnlBZAqznax:localhost:8800NP]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800MP]Q@anon-20191002_181700-500:localhost:8829!ubmTdQFAhrhZkGULDx:localhost:8800LP]Q@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800WP]Q@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800JP]Q@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800IP]Q@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800HP]Q@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800GP]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800FP]Q@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800EP]Q@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800DP]Q@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800CP]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800BP]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800AP]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800@P]Q@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800?P]Q@anon-20191002_181700-487:localhost:8829!WYyiQAVvitxsLZKVCG:localhost:8800;P]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800:P]Q@anon-20191002_181700-485:localhost:8829!KIHYKMzkRDrJwiywwz:localhost:88009P]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:88008P]Q@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:88007P]Q@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:88006P]Q@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:88005P]Q@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:88004P]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:88003P]Q@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800\P]Q@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800X ;QQa $1570042658152btGpA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2444}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042657151cITOZ:localhost:8800", {"sha256": "HgvHQCa3QCacXSu9LrG34BxC82p/SH2K/L+nPgAJ4W0"}]], "type": "m.room.test", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042658152btGpA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042658322, "hashes": {"sha256": "wF74+vg8sguwCPlBHWqXctn9Je0ht8OPFb2FqYEYe88"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "shCRfLLfXx4SbPxC+rXQLdZOWy1zVww8KM5CqpsMrJ5RD1CuQwrkcbfLaN4zVnCuiF79QxWi+KrZuAWdAL2tDA"}}, "unsigned": {"age_ts": 1570042658322}};QQa $1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2443}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042656149JNVWR:localhost:8800", {"sha256": "FDe9nODAgrwdY487KMJqBFchOul7dTOoBiJGXRgENaI"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042656150UsLRz:localhost:8800", {"sha256": "Q/SceEYznQzS8WZZz1txVnsqDhNSHXVYTXTPhq+i0+M"}]], "type": "m.room.member", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-455", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-455:localhost:8829", "event_id": "$1570042657151cITOZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042657608, "hashes": {"sha256": "ikuP6xgiAuO60FVlp8AoD1+QxjIel8hLSGWP8izfnbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4D9e4Ee0dn4M7faOzcu9tYI2Q5Oh7sNrM+95VQA90IolzSaJm5LGQgjix8r41Eye28Q/l69FsZhRnZnrtKDQAA"}, "localhost:8829": {"ed25519:a_UxIG": "ps+TnKu0K/6x7viGjeKn7CeJVVcKViD6L2OojlIQT6ArF732/oHt//+h66t1TxgJJjHvmb2bJYKwa+ns8aWYAw"}}, "unsigned": {"age_ts": 1570042657608, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-454:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-454:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-454", "avatar_url": null}, "sender": "@anon-20191002_181700-454:localhost:8800"}]}}  fxQQa $1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2442}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042656149JNVWR:localhost:8800", {"sha256": "FDe9nODAgrwdY487KMJqBFchOul7dTOoBiJGXRgENaI"}]], "type": "m.room.history_visibility", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042656150UsLRz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042656681, "hashes": {"sha256": "o54hPqMo/Wh3aWHSoyXL2dGkaBuvPbeVpw0HVgQoM5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aiWEGPIEsTi6nh89dYMVOZHnXD5L0ceKbZDsM1uSYjVRSIdjEyJs+wyKXiP95d4eZ+0Tr3ZExKRpflkUb1wvDg"}}, "unsigned": {"age_ts": 1570042656681}}g~QQaq $1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2441}{"auth_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}], ["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}]], "prev_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}]], "type": "m.room.join_rules", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042656149JNVWR:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042656031, "hashes": {"sha256": "62oT2K40ztcHAxsv3UxlWE7ymljiRHM9VpT4Bwj4UzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R8CIzdgd5nisgCPcH17RJiUE+gW3Gh3P/XY6/Gd8G03RLYGROK2kbvqDLiSOcWg7zLvV1AXfHtdnc2CA0k8vCQ"}}, "unsigned": {"age_ts": 1570042656031}}+}QQay $1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2440}{"auth_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "type": "m.room.power_levels", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"users": {"@anon-20191002_181700-454:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042655148eXOyA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042655081, "hashes": {"sha256": "EqsJ9bT5zUOxhK9TvZTRcNBvLS0ac9glPETD7tYjoXc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "167ytVPvoSgIbcHx/fcSce709RJd0qm+MgDrSQAOrQxm3GM+jXdy20ZUOsuf5lAgEFLW6HzsfUjbBwS0Fl67BA"}}, "unsigned": {"age_ts": 1570042655081}} $$H l " F j Dh Dh(LpkMQQQ$1570042683184TpChh:localhost:8800$1570042682183iUUXF:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kLQQQ$1570042682183iUUXF:localhost:8800$1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kKQQQ$1570042681182ZiRRU:localhost:8800$1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kJQQQ$1570042680181TFyrx:localhost:8800$1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kIQQQ$1570042680180uuIxG:localhost:8800$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kHQQQ$1570042679179ZJCqE:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800gGMMQ$15700426765pydev:localhost:8829$15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800gFMMQ$15700426764DoRhm:localhost:8829$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800iEMQQ$15700426753WBESe:localhost:8829$1570042675176WKRiz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kDQQQ$1570042675176WKRiz:localhost:8800$1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kCQQQ$1570042674175gurnU:localhost:8800$1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kBQQQ$1570042673174OxGuP:localhost:8800$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kAQQQ$1570042672173XsxsH:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800k@QQQ$1570042672172vPvbe:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800k?QQQ$1570042671171AQZaz:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800i>MQQ$15700426692GLpqH:localhost:8829$1570042668168uCbYK:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k=QQQ$1570042668168uCbYK:localhost:8800$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k<QQQ$1570042667167mhSmJ:localhost:8800$1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k;QQQ$1570042666166IBpPy:localhost:8800$1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k:QQQ$1570042666165HDkhp:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k9QQQ$1570042665164nYKmj:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k8QQQ$1570042664163IAHXd:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k7QQQ$1570042662161lGrSW:localhost:8800$1570042662160SrmtM:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k6QQQ$1570042662160SrmtM:localhost:8800$1570042661159xQwJK:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k5QQQ$1570042661159xQwJK:localhost:8800$1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k4QQQ$1570042661158igwHF:localhost:8800$1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k3QQQ$1570042660157svDcU:localhost:8800$1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k2QQQ$1570042660156wxhvl:localhost:8800$1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k1QQQ$1570042659155mEUeP:localhost:8800$1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k0QQQ$1570042659154Fztdf:localhost:8800$1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k/QQQ$1570042658153tmCYJ:localhost:8800$1570042658152btGpA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k.QQQ$1570042658152btGpA:localhost:8800$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k-QQQ$1570042657151cITOZ:localhost:8800$1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k,QQQ$1570042656150UsLRz:localhost:8800$1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k+QQQ$1570042656149JNVWR:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k*QQQ$1570042655148eXOyA:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800 R@,pX &9q? 3j8xF^ ~ R >e X & ^k -L  3,9r@1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_oy1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMq1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y821e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwT1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w51e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA31e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U~1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwJ1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o11e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw61e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8S1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUg11e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMu1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs,1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg>1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4w1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo h1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwP1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx81e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU 21e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcg0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAj1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw[1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYn1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg71e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM#$1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY 1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA 1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg 1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c 1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI 1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwY1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE 1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Ey v }vQQ $1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "460", "stream_ordering": 2447}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042659154Fztdf:localhost:8800", {"sha256": "mRYkhlT8U8WC/DdAoCHTYpvIfpOn59jD5LSmfSeF4IY"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042659155mEUeP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042659780, "hashes": {"sha256": "kg2LxWs/qQvAJwuTsxxtrCA1Z0cGUr6okKaRfFGCQtY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WKwj+vq0gDuTBYg/W5FlyztKFtgW2whBj6JGH5aDK7Tj3skO48xM1tNpxpYy14sNRkcVTqgNAVGPRtBy4tISDw"}}, "unsigned": {"age_ts": 1570042659780}}QQ} $1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "459", "stream_ordering": 2446}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042658153tmCYJ:localhost:8800", {"sha256": "04xTCBgunykZAEXKKZnv6p5+C9dDL+2VxmIkA/cBf+c"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "event_id": "$1570042659154Fztdf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042659331, "hashes": {"sha256": "i5c51KUld6GDSXWBc6qh/nlMJJk5ja0DbpxYVlZvHw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nb8hKslg4Me4bW8NvyKZn7y6Ap0I8tALekT7EDXKEt04plQbuBS7DDQbLwoMzcXIG9u8BBaztAeyuK4ScpStCg"}}, "unsigned": {"age_ts": 1570042659331}}QQ} $1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "458", "stream_ordering": 2445}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042658152btGpA:localhost:8800", {"sha256": "Lzzp/IoEldr5ArjZa4MnO/jRHmSinQuX9BByPepid18"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 8, "prev_state": [], "event_id": "$1570042658153tmCYJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042658769, "hashes": {"sha256": "QJqjyCmTp5rkp2ERl/AlS5CPlX082YdFFP2q9a4mdeI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yjlkQdOqHkDZPXj7D8u9VfF8SLwQC7JV5Huh/M1oaWh5poadTGJJcCsAaHm/VrK95SsObirHth1ZfBtHN5xvDw"}}, "unsigned": {"age_ts": 1570042658769}} t |tQQ $1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "463", "stream_ordering": 2450}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042660157svDcU:localhost:8800", {"sha256": "GBKjJ2vjTeDo02VpEIrd/657Sg/+OA/WItiH5FFrjOI"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "event_id": "$1570042661158igwHF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042661290, "hashes": {"sha256": "W/2eat8PhOEz5l21lAY9lLvd7AmbzY9pFQRSAS20+W0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T+rNaEfNQQmBCjwUvZPKzipQ315MXDvCOu3Cn/GaAPzq/ghQid8S1B1N1vm3gnCyNTa95ps6E3Jff6u9iyy3Dw"}}, "unsigned": {"age_ts": 1570042661290}}QQ $1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "462", "stream_ordering": 2449}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042660156wxhvl:localhost:8800", {"sha256": "hYMUEXSnmwC+0AqP1Q5UD7diuuurzr1K/UUBa5ziz6g"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "event_id": "$1570042660157svDcU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042660882, "hashes": {"sha256": "dH0PnrDnJ5gbs13G98ApEvl2BUrzooDO2lJmU4Fb7OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F5AsTJGt9YUX9QYOTFv+YMLTxuLFXtOdePed+/Lxpl2Mr9RrSKNZeXAYp2Itc3AOuPijON7LtKFpUU98rY69Bg"}}, "unsigned": {"age_ts": 1570042660882}}QQ $1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "461", "stream_ordering": 2448}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042659155mEUeP:localhost:8800", {"sha256": "S+IaK1hqujAl64Hkn02vBERMcw1qjmm1Ipb1iMbvXGs"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "event_id": "$1570042660156wxhvl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042660412, "hashes": {"sha256": "F3h8I6p9fv3hB31uV/TZhUKuo4zvXETBmYSC5FWzuRI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ImxRt/7CjByLRJFz1EUlcKc1+5PRnn/KkOBSvPKCkbpXNm4u+uwArJ6QSvxfPQa7oQIK4C6J29GQyB9E9SKUBA"}}, "unsigned": {"age_ts": 1570042660412}}  [d  9 [ }  0Rt'Ik8[_2mOQQ$157004338812XhwjX:localhost:8829$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 NnQQQ$1570043385309imdbl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 JnQQQ$1570043387311DGzYi:localhost:8800$1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 LnQQQ$1570043386310bGMNl:localhost:8800$1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 K"nQQQ$1570043384308gPogh:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 InQQQ$1570043383307bhuDV:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 HnQQQ$1570043380304caenp:localhost:8800$1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 GnQQQ$1570043379303bCgUn:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 FnQQQ$1570043378302mKBGD:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 EnQQQ$1570043377301OraEa:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 DnQQQ$1570043375299fbyXJ:localhost:8800$1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 CnQQQ$1570043374298UIMFg:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 BnQQQ$1570043373297SOjrf:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 AnQQQ$1570043372296yAiBq:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 @nQQQ$1570043369294rquKy:localhost:8800$1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 ?nQQQ$1570043369293ssSMv:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 >nQQQ$1570043368292FAoRb:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 =nQQQ$1570043367291AEdax:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 m@anon-20191002_181700-458:localhost:8800""Q?Q ]$1570042673174OxGuP:localhost:8800m.room.history_visibility!MqstbCLZIQFiYNHrqR:localhost:8800m|m@anon-20191002_181700-458:localhost:8800!Q/Q ]$1570042672173XsxsH:localhost:8800m.room.join_rules!MqstbCLZIQFiYNHrqR:localhost:8800mm/@anon-20191002_181700-458:localhost:8800 Q3Q ]$1570042672172vPvbe:localhost:8800m.room.power_levels!MqstbCLZIQFiYNHrqR:localhost:8800mXm@anon-20191002_181700-458:localhost:8800Q'Q ]$1570042671171AQZaz:localhost:8800m.room.member!MqstbCLZIQFiYNHrqR:localhost:8800mm=@anon-20191002_181700-458:localhost:8800 Q'Q  ]$1570042670170TtDpX:localhost:8800m.room.create!MqstbCLZIQFiYNHrqR:localhost:8800mm#@anon-20191002_181700-458:localhost:8800M'Q ]$15700426692GLpqH:localhost:8829m.room.member!WuiaqqIOvBjgETqdus:localhost:8800mml@anon-20191002_181700-457:localhost:8829Q#Q ]$1570042668168uCbYK:localhost:8800m.room.test!WuiaqqIOvBjgETqdus:localhost:8800m)m-@anon-20191002_181700-456:localhost:8800Q'Q ]$1570042667167mhSmJ:localhost:8800m.room.member!WuiaqqIOvBjgETqdus:localhost:8800mm`@anon-20191002_181700-456:localhost:8800"Q?Q ]$1570042666166IBpPy:localhost:8800m.room.history_visibility!WuiaqqIOvBjgETqdus:localhost:8800m߾m@anon-20191002_181700-456:localhost:8800Q/Q ]$1570042666165HDkhp:localhost:8800m.room.join_rules!WuiaqqIOvBjgETqdus:localhost:8800mm@anon-20191002_181700-456:localhost:8800Q3Q ]$1570042665164nYKmj:localhost:8800m.room.power_levels!WuiaqqIOvBjgETqdus:localhost:8800mm@anon-20191002_181700-456:localhost:8800Q'Q ]$1570042664163IAHXd:localhost:8800m.room.member!WuiaqqIOvBjgETqdus:localhost:8800mXm@anon-20191002_181700-456:localhost:8800 Q'Q  ]$1570042663162sQrEh:localhost:8800m.room.create!WuiaqqIOvBjgETqdus:localhost:8800mmv@anon-20191002_181700-456:localhost:8800 1)Vd-P } : A  ~ G  k V H q:i S|{e*BQ? !cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibility :Q/ !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rules6BQ? !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibility76Q' !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create3<Q3 !cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels ^Q']!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800 RQ'E!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455 <Q3 !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels^Q']!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800:Q/ !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rulesBQ? !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibility6Q' !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.create<Q3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels 4^Q']!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800 3RQ'E!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455 7:Q/ !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules 5BQ? !dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility 66Q' !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create 2<Q3 !cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels ^Q']!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800 :Q/ !cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rules 6Q' !cvXpMzcxNNhsNttxvt:localhost:8800m.room.create <Q3 !csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levelse^Q']!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800c:Q/ !csWEXfVEVxdviNvgAd:localhost:8800m.room.join_rulesgBQ? !csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibilityi6Q' !csWEXfVEVxdviNvgAd:localhost:8800m.room.create`<Q3 !cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels]Q'[!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800]Q'[!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829:Q/ !cosGKKhHvKaVukBCic:localhost:8800m.room.join_rulesBQ? !cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibility6Q' !cosGKKhHvKaVukBCic:localhost:8800m.room.create?Q9 !cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_aliasEQ))!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800<Q3 !coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels^Q']!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829^Q']!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800:Q/ !coGyOAgYnlBZAqznax:localhost:8800m.room.join_rulesBQ? !coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibility6Q' !coGyOAgYnlBZAqznax:localhost:8800m.room.create<Q3 !cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels^Q']!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800^Q']!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800:Q/ !cidyuyekVzJHHvyomb:localhost:8800m.room.join_rulesBQ? !cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibility6Q' !cidyuyekVzJHHvyomb:localhost:8800m.room.create<Q3 !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels5^Q']!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:88004 Bc@ l7a,X# Q  } H  t ? k 6  b -[(TM|Guc.\'4]@anon-20191002_181700-510:localhost:8800m44]@anon-20191002_181700-439:localhost:8800m44]@anon-20191002_181700-438:localhost:8800m44]@anon-20191002_181700-437:localhost:8800m44]@anon-20191002_181700-436:localhost:8800m44]@anon-20191002_181700-435:localhost:8800m44]@anon-20191002_181700-434:localhost:8800m44]@anon-20191002_181700-433:localhost:8800m44]@anon-20191002_181700-432:localhost:8800m44]@anon-20191002_181700-431:localhost:8800m42[@anon-20191002_181700-50:localhost:8800m4!4]@anon-20191002_181700-509:localhost:8800m44]@anon-20191002_181700-508:localhost:8800m44]@anon-20191002_181700-507:localhost:8800m44]@anon-20191002_181700-506:localhost:8800m44]@anon-20191002_181700-505:localhost:8800m44]@anon-20191002_181700-503:localhost:8800m44]@anon-20191002_181700-501:localhost:8800m41Y@anon-20191002_181700-4:localhost:8800m4 2[@anon-20191002_181700-49:localhost:8800m44]@anon-20191002_181700-499:localhost:8800m44]@anon-20191002_181700-497:localhost:8800m44]@anon-20191002_181700-495:localhost:8800m44]@anon-20191002_181700-494:localhost:8800m44]@anon-20191002_181700-493:localhost:8800m44]@anon-20191002_181700-492:localhost:8800m44]@anon-20191002_181700-491:localhost:8800m44]@anon-20191002_181700-490:localhost:8800m42[@anon-20191002_181700-48:localhost:8800m42[@anon-20191002_181700-48:localhost:8800m44]@anon-20191002_181700-488:localhost:8800m44]@anon-20191002_181700-486:localhost:8800m44]@anon-20191002_181700-484:localhost:8800m44]@anon-20191002_181700-482:localhost:8800m44]@anon-20191002_181700-480:localhost:8800m44]@anon-20191002_181700-479:localhost:8800m44]@anon-20191002_181700-478:localhost:8800m44]@anon-20191002_181700-477:localhost:8800m44]@anon-20191002_181700-476:localhost:8800m44]@anon-20191002_181700-475:localhost:8800m44]@anon-20191002_181700-473:localhost:8800m44]@anon-20191002_181700-471:localhost:8800m44]@anon-20191002_181700-469:localhost:8800m44]@anon-20191002_181700-467:localhost:8800m44]@anon-20191002_181700-465:localhost:8800m44]@anon-20191002_181700-464:localhost:8800m44]@anon-20191002_181700-463:localhost:8800m44]@anon-20191002_181700-462:localhost:8800m44]@anon-20191002_181700-461:localhost:8800m44]@anon-20191002_181700-460:localhost:8800m44]@anon-20191002_181700-458:localhost:8800m44]@anon-20191002_181700-456:localhost:8800m44]@anon-20191002_181700-454:localhost:8800m44]@anon-20191002_181700-452:localhost:8800m44]@anon-20191002_181700-450:localhost:8800m42[@anon-20191002_181700-44:localhost:8800m44]@anon-20191002_181700-449:localhost:8800m44]@anon-20191002_181700-448:localhost:8800m44]@anon-20191002_181700-447:localhost:8800m44]@anon-20191002_181700-446:localhost:8800m44]@anon-20191002_181700-445:localhost:8800m44]@anon-20191002_181700-444:localhost:8800m44]@anon-20191002_181700-443:localhost:8800m44]@anon-20191002_181700-442:localhost:8800m44]@anon-20191002_181700-441:localhost:8800m44]@anon-20191002_181700-440:localhost:8800m4 >CG K O  S  W  [ _ c$g(k,o0s4w8{<<8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSCm4<7]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZm4<6]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQm4<5]!@anon-20191002_181700-493:localhost:8800GRPWUCANVUm4<4]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQTm4<3]!@anon-20191002_181700-491:localhost:8800SADWUTCSYMm4<2]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBUm4<1]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZm4<0]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDSm4QQQ$1570042680180uuIxG:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800j=QQQ$1570042679179ZJCqE:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800h<MQQ$15700426753WBESe:localhost:8829$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800h;MQQ$15700426753WBESe:localhost:8829$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800h:MQQ$15700426753WBESe:localhost:8829$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j9QQQ$1570042674175gurnU:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j8QQQ$1570042674175gurnU:localhost:8800$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j7QQQ$1570042674175gurnU:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j6QQQ$1570042674175gurnU:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j5QQQ$1570042673174OxGuP:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j4QQQ$1570042673174OxGuP:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j3QQQ$1570042673174OxGuP:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j2QQQ$1570042672173XsxsH:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j1QQQ$1570042672173XsxsH:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j0QQQ$1570042672173XsxsH:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j/QQQ$1570042672172vPvbe:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j.QQQ$1570042672172vPvbe:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j-QQQ$1570042671171AQZaz:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800h,MQQ$15700426692GLpqH:localhost:8829$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800h+MQQ$15700426692GLpqH:localhost:8829$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800h*MQQ$15700426692GLpqH:localhost:8829$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j)QQQ$1570042667167mhSmJ:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j(QQQ$1570042667167mhSmJ:localhost:8800$1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j'QQQ$1570042667167mhSmJ:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j&QQQ$1570042667167mhSmJ:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j%QQQ$1570042666166IBpPy:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j$QQQ$1570042666166IBpPy:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j#QQQ$1570042666166IBpPy:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j"QQQ$1570042666165HDkhp:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j!QQQ$1570042666165HDkhp:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j QQQ$1570042666165HDkhp:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800jQQQ$1570042665164nYKmj:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800 2bu( ; N e  z + >Qdw(;Nat%8L>QL$1570042706211NniIl:localhost:8800sha256 Q9XKu ɚ)uFK˵ROL=QL$1570042705210LweYn:localhost:8800sha256C*v\{~հ(>4L;QL$1570042704208yLiWU:localhost:8800sha256Ä:X,0{ܐXĢ0sHnsL:QL$1570042703207yqsGA:localhost:8800sha256d9rI>?3Kí+sآS2kL9QL$1570042702206BIYsS:localhost:8800sha256+ݜGHFbr?K?AAL8QL$1570042701205bxgOX:localhost:8800sha256og2cME>j8ĵ#;8A[UL7QL$1570042700204CxVfq:localhost:8800sha256y$"Jךּ]2#9sL6QL$1570042699203fHFjU:localhost:8800sha256.W`)QfcXȖUllpQ\/L5QL$1570042698202juBqr:localhost:8800sha256Vg)B)vJdSEdk\$L4QL$1570042698201kDowV:localhost:8800sha256M16 / ){笈nrե)!L3QL$1570042697200mrENr:localhost:8800sha256CouO H*.ч~}БL2QL$1570042697199ROUNP:localhost:8800sha256" 6'_'ݱfŵ$em#}`L1QL$1570042696198qbnxj:localhost:8800sha256K[ ݨ?9/g&tL0QL$1570042695197vezoL:localhost:8800sha256K#g(707.H)]CL/QL$1570042694196OHsWc:localhost:8800sha256x:ܰO7S {Tݎ0Z2XL.QL$1570042693195hNKnU:localhost:8800sha256k$.WfW5T 1L-QL$1570042692194rxboZ:localhost:8800sha256CX j=%f_?],BPNQL,QL$1570042691193uVdPZ:localhost:8800sha256} 1NkaH3Fg$nL+QL$1570042691192yNWVM:localhost:8800sha256gHp| `s `[s>g[ΫL*QL$1570042690191yQfnl:localhost:8800sha256ץ[Mn<)YpY,KMrCL)QL$1570042689190UkvMv:localhost:8800sha256OyhC ,aju(yH,)f,2EL(QL$1570042688189axPjv:localhost:8800sha256X6I/pɳyf3RQ͏:b8L'QL$1570042687188ddQmS:localhost:8800sha256q0mQˤ8/UcU|_`2YL&QL$1570042687187gbArC:localhost:8800sha256? MQI}+e񅿍L%QL$1570042686186Qxqmn:localhost:8800sha256aeGmRl,9/PZD P4_L$QL$1570042685185RhcXe:localhost:8800sha256݁{I>U(CR}6sx?UL#QL$1570042683184TpChh:localhost:8800sha256x\)6BNԪACzL"QL$1570042682183iUUXF:localhost:8800sha256f ]Y猋^G gzs/6L!QL$1570042681182ZiRRU:localhost:8800sha256] &) "G~XTW AsL QL$1570042680181TFyrx:localhost:8800sha256b t v6ᗄC8#/eWLQL$1570042680180uuIxG:localhost:8800sha256st2P!GV~}نOfDLHLQL$1570042679179ZJCqE:localhost:8800sha256 _egN'EzPDX#9- eLQL$1570042678178HSUoI:localhost:8800sha256fܞ%NI| 6۴Ԃǒ7^JML$15700426765pydev:localhost:8829sha256vnjNWYTM^(1I CM!k \JML$15700426764DoRhm:localhost:8829sha256bexS5ĝeWIN0  AJML$15700426753WBESe:localhost:8829sha256I_P68pC"kAZ?AmFj3 YLQL$1570042675176WKRiz:localhost:8800sha256Qp."$Z1J5/y=DLQL$1570042674175gurnU:localhost:8800sha256_tֻ尩r’zqmLQL$1570042673174OxGuP:localhost:8800sha256R4e;ب?4wHuhYE*es,JML$15700426692GLpqH:localhost:8829sha256'Q$1570043428320JDiOD:localhost:8800='Q$1570043428320JDiOD:localhost:8800<'Q$1570043426319TNjnu:localhost:8800;'Q$1570043391316OJaBO:localhost:8800'Q$1570043391316OJaBO:localhost:8800'Q$1570043388312YDkJu:localhost:8800'Q$1570043388312YDkJu:localhost:8800'Q$1570043388312YDkJu:localhost:8800&O$157004338812XhwjX:localhost:8829&O$157004338812XhwjX:localhost:8829&O$157004338812XhwjX:localhost:8829'Q$1570043387311DGzYi:localhost:8800'Q$1570043387311DGzYi:localhost:8800'Q$1570043387311DGzYi:localhost:8800'Q$1570043386310bGMNl:localhost:8800'Q$1570043386310bGMNl:localhost:8800'Q$1570043386310bGMNl:localhost:8800'Q$1570043385309imdbl:localhost:8800'Q$1570043385309imdbl:localhost:8800'Q$1570043385309imdbl:localhost:8800'Q$1570043384308gPogh:localhost:8800'Q$1570043384308gPogh:localhost:8800'Q$1570043383307bhuDV:localhost:8800'Q$1570043380304caenp:localhost:8800'Q$1570043380304caenp:localhost:8800'Q$1570043380304caenp:localhost:8800'Q$1570043379303bCgUn:localhost:8800'Q$1570043379303bCgUn:localhost:8800'Q$1570043379303bCgUn:localhost:8800'Q$1570043378302mKBGD:localhost:8800'Q$1570043378302mKBGD:localhost:8800'Q$1570043377301OraEa:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043374298UIMFg:localhost:8800'Q$1570043374298UIMFg:localhost:8800'Q$1570043374298UIMFg:localhost:8800'Q$1570043373297SOjrf:localhost:8800'Q$1570043373297SOjrf:localhost:8800'Q$1570043372296yAiBq:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043369293ssSMv:localhost:8800'Q$1570043369293ssSMv:localhost:8800'Q$1570043369293ssSMv:localhost:8800'Q$1570043368292FAoRb:localhost:8800'Q$1570043368292FAoRb:localhost:8800'Q$1570043367291AEdax:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043364288SCpzq:localhost:8800'Q$1570043364288SCpzq:localhost:8800'Q$1570043364288SCpzq:localhost:8800'Q$1570043363287eSyun:localhost:8800'Q$1570043363287eSyun:localhost:8800'Q$1570043362286KwXMK:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043353283ubEdk:localhost:8800'Q$1570043353283ubEdk:localhost:8800'Q$1570043353283ubEdk:localhost:8800'Q$1570043352282iTcSU:localhost:8800'Q$1570043352282iTcSU:localhost:8800'Q$1570043351281XHPOP:localhost:8800'Q$1570043347278WlNld:localhost:8800'Q$1570043347278WlNld:localhost:8800'Q$1570043347278WlNld:localhost:8800'Q$1570043346277FsKPl:localhost:8800'Q$1570043346277FsKPl:localhost:8800'Q$1570043346277FsKPl:localhost:8800'Q$1570043346276qTXUF:localhost:8800'Q$1570043346276qTXUF:localhost:8800'Q$1570043345275UDVPY:localhost:8800'Q$1570043341273LsXNn:localhost:8800'Q$1570043341273LsXNn:localhost:8800'Q$1570043195270GcoLc:localhost:8800'Q$1570043195270GcoLc:localhost:8800'Q$1570043195270GcoLc:localhost:8800'Q$1570043195269hcCzg:localhost:8800 C O  Y$e.qQ;+ Q]]Q=$1570042742255yQzPA:localhost:8800@anon-20191002_181700-474:localhost:8829@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800inviteanon-20191002_181700-4749* Q]]Q=$1570042738251iukAg:localhost:8800@anon-20191002_181700-473:localhost:8800@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800joinanon-20191002_181700-473 ) M]]Q$15700427368TlZQs:localhost:8829@anon-20191002_181700-472:localhost:8829@anon-20191002_181700-472:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800leave;( Q]]Q=$1570042734247SfTxR:localhost:8800@anon-20191002_181700-472:localhost:8829@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800inviteanon-20191002_181700-4729' Q]]Q=$1570042731243YuOkC:localhost:8800@anon-20191002_181700-471:localhost:8800@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800joinanon-20191002_181700-471;& Q]]Q=$1570042723230DFoyn:localhost:8800@anon-20191002_181700-470:localhost:8829@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800inviteanon-20191002_181700-4709% Q]]Q=$1570042720226wSTBF:localhost:8800@anon-20191002_181700-469:localhost:8800@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800joinanon-20191002_181700-4697$ M]]Q=$15700427177BOUHn:localhost:8829@anon-20191002_181700-468:localhost:8829@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800joinanon-20191002_181700-468;# Q]]Q=$1570042716222nflqt:localhost:8800@anon-20191002_181700-468:localhost:8829@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800inviteanon-20191002_181700-4689" Q]]Q=$1570042711216KdEEo:localhost:8800@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800joinanon-20191002_181700-4677! M]]Q=$15700427086bDrAU:localhost:8829@anon-20191002_181700-466:localhost:8829@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800joinanon-20191002_181700-4669 Q]]Q=$1570042702206BIYsS:localhost:8800@anon-20191002_181700-465:localhost:8800@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800joinanon-20191002_181700-4659 Q]]Q=$1570042699203fHFjU:localhost:8800@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800joinanon-20191002_181700-464; Q]]Q=$1570042698202juBqr:localhost:8800@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800inviteanon-20191002_181700-4649 Q]]Q=$1570042694196OHsWc:localhost:8800@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800joinanon-20191002_181700-4639 Q]]Q=$1570042691193uVdPZ:localhost:8800@anon-20191002_181700-462:localhost:8800@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800joinanon-20191002_181700-4629 Q]]Q=$1570042686186Qxqmn:localhost:8800@anon-20191002_181700-461:localhost:8800@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800joinanon-20191002_181700-4619 Q]]Q=$1570042679179ZJCqE:localhost:8800@anon-20191002_181700-460:localhost:8800@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800joinanon-20191002_181700-4607 M]]Q=$15700426753WBESe:localhost:8829@anon-20191002_181700-459:localhost:8829@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800joinanon-20191002_181700-459; Q]]Q=$1570042674175gurnU:localhost:8800@anon-20191002_181700-459:localhost:8829@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800inviteanon-20191002_181700-4599 Q]]Q=$1570042671171AQZaz:localhost:8800@anon-20191002_181700-458:localhost:8800@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800joinanon-20191002_181700-458 #zM ! > z  . e /Lc6%\&hQ']M !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829$15700427086bDrAU:localhost:8829igQ))Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800$1570042706211NniIl:localhost:8800ffQ? Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility$1570042705210LweYn:localhost:8800^eQ/ Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules$1570042704209JQwmT:localhost:8800cdQ9 Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias$1570042704208yLiWU:localhost:8800`cQ3 Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levels$1570042703207yqsGA:localhost:8800bQ']Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800$1570042702206BIYsS:localhost:8800ZaQ' Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create$1570042701205bxgOX:localhost:8800$`Q']QQ !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800_Q']Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042698202juBqr:localhost:8800`^Q3 Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_access$1570042697200mrENr:localhost:8800f]Q? Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility$1570042697199ROUNP:localhost:8800^\Q/ Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules$1570042696198qbnxj:localhost:8800`[Q3 Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels$1570042695197vezoL:localhost:8800ZQ']Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800$1570042694196OHsWc:localhost:8800ZYQ' Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.create$1570042693195hNKnU:localhost:8800XQ']Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800$1570042691193uVdPZ:localhost:8800iWQ))Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800$1570042690191yQfnl:localhost:8800fVQ? Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility$1570042689190UkvMv:localhost:8800^UQ/ Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules$1570042688189axPjv:localhost:8800cTQ9 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias$1570042687188ddQmS:localhost:8800`SQ3 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levels$1570042687187gbArC:localhost:8800RQ']Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800$1570042686186Qxqmn:localhost:8800ZQQ' Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.create$1570042685185RhcXe:localhost:8800fPQ? Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility$1570042681182ZiRRU:localhost:8800^OQ/ Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules$1570042680181TFyrx:localhost:8800`NQ3 Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levels$1570042680180uuIxG:localhost:8800MQ']Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800$1570042679179ZJCqE:localhost:8800ZLQ' Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.create$1570042678178HSUoI:localhost:8800"KQ']MQ !MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$15700426753WBESe:localhost:8829$1570042674175gurnU:localhost:8800JQ']Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$1570042674175gurnU:localhost:8800fIQ? Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility$1570042673174OxGuP:localhost:8800^HQ/ Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules$1570042672173XsxsH:localhost:8800`GQ3 Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levels$1570042672172vPvbe:localhost:8800FQ']Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800$1570042671171AQZaz:localhost:8800  fxQQa $1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2466}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042672173XsxsH:localhost:8800", {"sha256": "0RvhEoHYWVqoS1Z6LuvvxCvtUXtuQOyzNr0MzUBg1js"}]], "type": "m.room.history_visibility", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042673174OxGuP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042673532, "hashes": {"sha256": "hA7OpHOkBi5Gfq1s+kyDNvWJ8FO4nD0AG+ZQpc3F9zQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QqaRnjS+YDfLEx81a8efi5VdK2zpTcdb+YAWDqivQ/Ptq3J7XMmso+1ivvs/wFSvL8y+ZXDid6sxqeADqrA7Dw"}}, "unsigned": {"age_ts": 1570042673532}}gQQaq $1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2465}{"auth_events": [["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}], ["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}]], "prev_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}]], "type": "m.room.join_rules", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042672173XsxsH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042672840, "hashes": {"sha256": "DN098NX4E/MaDzEO6mTtEzBOfb3Fgy2v+lvsju+HtgI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wALBEXxrq63PPekEOGqY07ZO7fVaxWUdTp1J7qpddDmZmrSafMilsJ9YTnyddBTjx0GEIy+VXNYK1RjMEkM3Aw"}}, "unsigned": {"age_ts": 1570042672840}}+QQay $1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2464}{"auth_events": [["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "type": "m.room.power_levels", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"users": {"@anon-20191002_181700-458:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042672172vPvbe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042672216, "hashes": {"sha256": "LcHgU0PcML+t64pRLUigEBkEG2LChzGMO9aXsB2OoWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XYfaECDonYuSZgivUl1jzFfF5sVkv7XuqSgpU0CUtVeX/flvBvStvJHtufEwYlOEkHrE+r6pjEfOckC2HFdQDg"}}, "unsigned": {"age_ts": 1570042672216}} \Z2 b8 f <  j @  n D  r H  v L $|R(X.\2`6 d:h@nDl81ce$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkB1be$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEA1ae$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI@1`e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ?&_O$157004274411xArrT:localhost:8829>&^O$157004274310jCQYA:localhost:8829>%]M$15700427439Hwxyi:localhost:8829>'\Q$1570042742256IYRor:localhost:8800<'[Q$1570042742255yQzPA:localhost:8800<'ZQ$1570042741254DKIYz:localhost:8800;'YQ$1570042740253GkWgu:localhost:8800:'XQ$1570042739252bWghU:localhost:88009'WQ$1570042738251iukAg:localhost:88008'VQ$1570042737250jmxWx:localhost:88007%UM$15700427368TlZQs:localhost:88296'TQ$1570042735248drnws:localhost:88004'SQ$1570042734247SfTxR:localhost:88004'RQ$1570042733246cYViL:localhost:88003'QQ$1570042733245smHTZ:localhost:88002'PQ$1570042732244zDmQh:localhost:88001'OQ$1570042731243YuOkC:localhost:88000'NQ$1570042730242eYFxu:localhost:8800/'MQ$1570042729241UUSiz:localhost:8800.'LQ$1570042729240aBRvS:localhost:8800.'KQ$1570042728239BMOBm:localhost:8800.'JQ$1570042728238dtqIB:localhost:8800.'IQ$1570042727237iUlYB:localhost:8800.'HQ$1570042727236AOaiE:localhost:8800.'GQ$1570042726235bahBo:localhost:8800.'FQ$1570042726234miteq:localhost:8800.'EQ$1570042725233SjCnf:localhost:8800.'DQ$1570042725232UzIHq:localhost:8800.'CQ$1570042724231dYSEq:localhost:8800.'BQ$1570042723230DFoyn:localhost:8800.'AQ$1570042722229ehxUl:localhost:8800-'@Q$1570042722228QkARL:localhost:8800,'?Q$1570042721227mhNwo:localhost:8800+'>Q$1570042720226wSTBF:localhost:8800*'=Q$1570042719225dSNgP:localhost:8800)'<Q$1570042718224MBWNJ:localhost:8800(%;M$15700427177BOUHn:localhost:8829(':Q$1570042716222nflqt:localhost:8800&'9Q$1570042715221Amlxc:localhost:8800%'8Q$1570042714220vWWFN:localhost:8800%'7Q$1570042713219HcQXL:localhost:8800$'6Q$1570042712218KQzXb:localhost:8800#'5Q$1570042712217nuYrc:localhost:8800"'4Q$1570042711216KdEEo:localhost:8800!'3Q$1570042710215aaRza:localhost:8800 '2Q$1570042709214PwhVu:localhost:8800%1M$15700427086bDrAU:localhost:8829'0Q$1570042707212LkSAM:localhost:8800'/Q$1570042706211NniIl:localhost:8800'.Q$1570042705210LweYn:localhost:8800'-Q$1570042704209JQwmT:localhost:8800',Q$1570042704208yLiWU:localhost:8800'+Q$1570042703207yqsGA:localhost:8800'*Q$1570042702206BIYsS:localhost:8800')Q$1570042701205bxgOX:localhost:8800'(Q$1570042700204CxVfq:localhost:8800''Q$1570042699203fHFjU:localhost:8800'&Q$1570042698202juBqr:localhost:8800'%Q$1570042698201kDowV:localhost:8800'$Q$1570042697200mrENr:localhost:8800'#Q$1570042697199ROUNP:localhost:8800'"Q$1570042696198qbnxj:localhost:8800'!Q$1570042695197vezoL:localhost:8800' Q$1570042694196OHsWc:localhost:8800'Q$1570042693195hNKnU:localhost:8800'Q$1570042692194rxboZ:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800'Q$1570042685185RhcXe:localhost:8800'Q$1570042683184TpChh:localhost:8800'Q$1570042682183iUUXF:localhost:8800'Q$1570042681182ZiRRU:localhost:8800'Q$1570042680181TFyrx:localhost:8800'Q$1570042680180uuIxG:localhost:8800'Q$1570042679179ZJCqE:localhost:8800'Q$1570042678178HSUoI:localhost:8800% M$15700426765pydev:localhost:8829% M$15700426764DoRhm:localhost:8829% M$15700426753WBESe:localhost:8829' Q$1570042675176WKRiz:localhost:8800' Q$1570042674175gurnU:localhost:8800'Q$1570042673174OxGuP:localhost:8800 ;QQa $1570042675176WKRiz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2468}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042674175gurnU:localhost:8800", {"sha256": "X3TWu+rz5bCpcoik1tbCkpvw384Hgqj8B3pxbb+64e8"}]], "type": "m.room.test", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042675176WKRiz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042675175, "hashes": {"sha256": "dWC+ComATxhtmjgZ2rXoul+5HQYeKC1501Tf0JtFXsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "36g2EVOXbBZw1FtpW4a1j1ztxFyfM6rz6Agj/5iJfvK3Q0w9uyw07hkLB37P3a+w1Ik0c7IUN9/QL8dBl9dtDg"}}, "unsigned": {"age_ts": 1570042675175}};QQa $1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2467}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042672173XsxsH:localhost:8800", {"sha256": "0RvhEoHYWVqoS1Z6LuvvxCvtUXtuQOyzNr0MzUBg1js"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042673174OxGuP:localhost:8800", {"sha256": "xMtSNN/uZTvYqMQ/NHdIvBKm+IvF2XXXaAGIWaL8PEY"}]], "type": "m.room.member", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-459", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-459:localhost:8829", "event_id": "$1570042674175gurnU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042674494, "hashes": {"sha256": "JF1kBe49MnfKz1MGPcrxZnaEEZnpz2Zb9KgZ5tS3Tn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qTSdMS0agMMPuoe5gsrx/H5NBAUg745nZoS4tZLBPhdMg8K/N3VFfu8jbfUrffcddnXD80T4gDu2nvncrRXBDA"}, "localhost:8829": {"ed25519:a_UxIG": "GXPf1BHH2bEcO9ynNvqRRpLx7SZITEFallXycJB805fOrEynPs5DcOpOB5IyQ87hkyltjzHqWNM+htFyqfS2Ag"}}, "unsigned": {"age_ts": 1570042674494, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-458:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-458:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-458", "avatar_url": null}, "sender": "@anon-20191002_181700-458:localhost:8800"}]}}  c(iMQcw $15700426765pydev:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800{"outlier": false, "stream_ordering": 2471}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$15700426753WBESe:localhost:8829", {"sha256": "SV/7UDbHOHBDIuKJa0Fa5j9BbedGjgJqtAEzpY8NWYI"}]], "content": {}, "depth": 10, "event_id": "$15700426765pydev:localhost:8829", "hashes": {"sha256": "M0zwH2LIUvyYtncjHBWsTmsYgDkNaUfF+TL0bUakSW4"}, "origin": "localhost:8829", "origin_server_ts": 1570042676490, "prev_events": [["$15700426764DoRhm:localhost:8829", {"sha256": "hBeRYrgVZfx4qlMHihc1HsSdl+9lV0lOMBwMAo/nIEE"}]], "prev_state": [], "redacts": "$15700426764DoRhm:localhost:8829", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-459:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "zGPBrjkL/w995oc8Y/NWKPcvz9jk6iF9htLrwGRy0hPVgezUPnuC+308c374sssRrLogNU0yiKmOP8emBbF5DA"}}, "unsigned": {"age_ts": 1570042676490}}&7MQc $15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800{"outlier": false, "stream_ordering": 2470}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$15700426753WBESe:localhost:8829", {"sha256": "SV/7UDbHOHBDIuKJa0Fa5j9BbedGjgJqtAEzpY8NWYI"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}]], "content": {}, "depth": 9, "event_id": "$15700426764DoRhm:localhost:8829", "hashes": {"sha256": "z1+FyUCiAdKi1Ly8uUdfxsNyaXzWt/7Whf8kH3gqLzo"}, "origin": "localhost:8829", "origin_server_ts": 1570042676420, "prev_events": [["$15700426753WBESe:localhost:8829", {"sha256": "SV/7UDbHOHBDIuKJa0Fa5j9BbedGjgJqtAEzpY8NWYI"}]], "prev_state": [], "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-459:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "BtgOUE5AIK9O9jv/cTcwK9UOJo6GFDhmtLuhFPEYThURsGKXUQfQezNOGaewLJQm2sNCoGTJpkNnKRyVq6s8AA"}}, "unsigned": {"age_ts": 1570042676420}}MQ1 $15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2469}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042672173XsxsH:localhost:8800", {"sha256": "0RvhEoHYWVqoS1Z6LuvvxCvtUXtuQOyzNr0MzUBg1js"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-459", "membership": "join"}, "depth": 8, "event_id": "$15700426753WBESe:localhost:8829", "hashes": {"sha256": "AmZKeMrlltNxxNnW0hmndSqoO4bd2FQ7+RiPTy99XaQ"}, "origin": "localhost:8829", "origin_server_ts": 1570042675854, "prev_events": [["$1570042675176WKRiz:localhost:8800", {"sha256": "UZTFGXCrmC4iJMC4WvmtMUqY7wMGNS958hH/Gj0f5UQ"}]], "prev_state": [], "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-459:localhost:8829", "state_key": "@anon-20191002_181700-459:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tM4AMm0YktV8PXyF1EMuJ8xBVhTOFRPoXEzOST8AlFxXDOCEcbcKigFaRzTNtkOVFMgdjxvEhOPujEnlTS5cAA"}, "localhost:8829": {"ed25519:a_UxIG": "vl+6wHHXdrAlhU96w9/IUxNYK0+hch0mmnK7O4jQYc7Oog1Jrg+vidMdEhHtTTS98nj/LncshF9t1Cvx3zAMDw"}}, "unsigned": {"age": 104, "replaces_state": "$1570042674175gurnU:localhost:8800"}} RU {}R'  'y JFq{T)oP% y N # HswL P %   T } T + D#!uN V + TiVGOnt:loca*Q!QcaNrIiUsWpTiVGOnt:localhost:8800::*Q!QcaNrIiUsWpTiVGOnt:localhost:880088*Q!QcaNrIiUsWpTiVGOnt:localhost:880066*Q!QcaNrIiUsWpTiVGOnt:localhost:880055*Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 x x*Q!PgNDjhhIBAXKryuGKy:localhost:8800 y y*Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!QMrkSPlQDGborAyWtQ:localhost:8800OO*Q!QMrkSPlQDGborAyWtQ:localhost:8800NN*Q!QcaNrIiUsWpTiVGOnt:localhost:8800<<*Q!QMrkSPlQDGborAyWtQ:localhost:8800PP*Q!QMrkSPlQDGborAyWtQ:localhost:8800QQ*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!QnmLrBAxeItdHsaxWf:localhost:8800 j j*Q!QWLJZmJqjWZjVOjdYF:localhost:8800##*Q!QnmLrBAxeItdHsaxWf:localhost:8800 i i*Q!QnmLrBAxeItdHsaxWf:localhost:8800 h h*Q!QnmLrBAxeItdHsaxWf:localhost:8800 g g*Q!QMrkSPlQDGborAyWtQ:localhost:8800TT*Q!QMrkSPlQDGborAyWtQ:localhost:8800SS*Q!QMrkSPlQDGborAyWtQ:localhost:8800RR*Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QnmLrBAxeItdHsaxWf:localhost:8800 k k*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 w w*Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 } }*Q!PgNDjhhIBAXKryuGKy:localhost:8800 | |*Q!PgNDjhhIBAXKryuGKy:localhost:8800 { {*Q!PgNDjhhIBAXKryuGKy:localhost:8800 z z*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!QWLJZmJqjWZjVOjdYF:localhost:8800%%*Q!QWLJZmJqjWZjVOjdYF:localhost:8800$$*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800  *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ ~*Q!QxqzQoEBIZhmzHIGrl:localhost:8800 } }*Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800(Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QWLJZmJqjWZjVOjdYF:localhost:8800""*Q!QWLJZmJqjWZjVOjdYF:localhost:8800!!*Q!QWLJZmJqjWZjVOjdYF:localhost:8800  *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800  *Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ ~*Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 g * T~=ggY]!c@anon-20191002_181700-475:localhost:8800JJMOBOLFAHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAogX]!c@anon-20191002_181700-473:localhost:8800TSHZTIBDHNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwogW]!c@anon-20191002_181700-471:localhost:8800VTNKSDWUTBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDegogV]!c@anon-20191002_181700-469:localhost:8800VLYSIOTSXRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwogU]!c@anon-20191002_181700-467:localhost:8800TOUFSHQMBKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAogT]!c@anon-20191002_181700-465:localhost:8800JPLWYOLOJMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1WlgogS]!c@anon-20191002_181700-464:localhost:8800VUWRFRZGNEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAogR]!c@anon-20191002_181700-463:localhost:8800ZKSEJYQPIOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgogQ]!c@anon-20191002_181700-462:localhost:8800SKOLIDFQENMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7QogP]!c@anon-20191002_181700-461:localhost:8800GRYRTUWCZUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0VzngogO]!c@anon-20191002_181700-460:localhost:8800GJEFYISBJPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAo  +QQay $1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2474}{"auth_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "type": "m.room.power_levels", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"users": {"@anon-20191002_181700-460:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042680180uuIxG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042680091, "hashes": {"sha256": "wnnF0PMpIIYKKzbQESOtmGxPoa6rLLGdyMrtYH4OME8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zu4Kly1uxbTmCx902snj7nphA5XC4TdxuRP/zIwJA8gA+4OkevEy/o3sQ1veZIRC1NMl3VrEXmZU7kY10L5SAw"}}, "unsigned": {"age_ts": 1570042680091}}QQa) $1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2473}{"auth_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}]], "prev_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}]], "type": "m.room.member", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-460", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-460:localhost:8800", "event_id": "$1570042679179ZJCqE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042679378, "hashes": {"sha256": "UV/mxNcpTzsnEktkgeCZ4tiwPj9KAijZBkG7p6Lm+x8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ma50neCp8h/N/AIJb7cCVDGhtB4XHYJvghEMlTaNYhRYDFakf21G+8XuhQyXsDu8ngahQ5niQPUjv/QfCI4XDQ"}}, "unsigned": {"age_ts": 1570042679378}}QQaC $1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2472}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-460:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042678178HSUoI:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042678521, "hashes": {"sha256": "Z6OYdbDDB3t4+dp68l68zZBC5IeSV4QqkycW6gpyyFI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AbbihhnUV/MJDkZgmNXqB1M3lxB6ymXQWiKbBoTTrImmvc1YVTmTr0HgXDq9i7mpmfTMCQe42r9O6FZz8wa0DQ"}}, "unsigned": {"age_ts": 1570042678521}} 3f2 K d  } 0 I b {.Ib{.Ib{.GH6QM6!WhLedNwPGGGTtqeqam:localhost:8800$15700427368TlZQs:localhost:8829J5QQ5!WhLedNwPGGGTtqeqam:localhost:8800$1570042736249MHPfI:localhost:8800J4QQ4!WhLedNwPGGGTtqeqam:localhost:8800$1570042734247SfTxR:localhost:8800J3QQ3!WhLedNwPGGGTtqeqam:localhost:8800$1570042733246cYViL:localhost:8800J2QQ2!WhLedNwPGGGTtqeqam:localhost:8800$1570042733245smHTZ:localhost:8800J1QQ1!WhLedNwPGGGTtqeqam:localhost:8800$1570042732244zDmQh:localhost:8800J0QQ0!WhLedNwPGGGTtqeqam:localhost:8800$1570042731243YuOkC:localhost:8800J/QQ/!WhLedNwPGGGTtqeqam:localhost:8800$1570042730242eYFxu:localhost:8800J.QQ.!yLccBXjjEasExpsXlt:localhost:8800$1570042723230DFoyn:localhost:8800J-QQ-!yLccBXjjEasExpsXlt:localhost:8800$1570042722229ehxUl:localhost:8800J,QQ,!yLccBXjjEasExpsXlt:localhost:8800$1570042722228QkARL:localhost:8800J+QQ+!yLccBXjjEasExpsXlt:localhost:8800$1570042721227mhNwo:localhost:8800J*QQ*!yLccBXjjEasExpsXlt:localhost:8800$1570042720226wSTBF:localhost:8800J)QQ)!yLccBXjjEasExpsXlt:localhost:8800$1570042719225dSNgP:localhost:8800H(QM(!PcvmCDeVUSyJbXpTig:localhost:8800$15700427177BOUHn:localhost:8829J'QQ'!PcvmCDeVUSyJbXpTig:localhost:8800$1570042716223rQrNF:localhost:8800J&QQ&!PcvmCDeVUSyJbXpTig:localhost:8800$1570042716222nflqt:localhost:8800J%QQ%!PcvmCDeVUSyJbXpTig:localhost:8800$1570042714220vWWFN:localhost:8800J$QQ$!PcvmCDeVUSyJbXpTig:localhost:8800$1570042713219HcQXL:localhost:8800J#QQ#!PcvmCDeVUSyJbXpTig:localhost:8800$1570042712218KQzXb:localhost:8800J"QQ"!PcvmCDeVUSyJbXpTig:localhost:8800$1570042712217nuYrc:localhost:8800J!QQ!!PcvmCDeVUSyJbXpTig:localhost:8800$1570042711216KdEEo:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042710215aaRza:localhost:8800HQM!HbYxdEuVIeLKHwqJEh:localhost:8800$15700427086bDrAU:localhost:8829JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042708213iMMWv:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042706211NniIl:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042705210LweYn:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704209JQwmT:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704208yLiWU:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042703207yqsGA:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042702206BIYsS:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042701205bxgOX:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042699203fHFjU:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042698202juBqr:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697200mrENr:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697199ROUNP:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042696198qbnxj:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042695197vezoL:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042694196OHsWc:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042693195hNKnU:localhost:8800JQQ!JPTwFTSDaBXwUTgitj:localhost:8800$1570042691193uVdPZ:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042690191yQfnl:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042689190UkvMv:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042688189axPjv:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687188ddQmS:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687187gbArC:localhost:8800JQQ!JPTwFTSDaBXwUTgitj:localhost:8800$1570042686186Qxqmn:localhost:8800JQQ!JPTwFTSDaBXwUTgitj:localhost:8800$1570042685185RhcXe:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042681182ZiRRU:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680181TFyrx:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680180uuIxG:localhost:8800  ;"QQa $1570042682183iUUXF:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2477}{"auth_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}], ["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042681182ZiRRU:localhost:8800", {"sha256": "XcYLzSYQKZS4wCAiDxhHzH5YVLNXCsbyQZhzFA72lYo"}]], "type": "m.room.test", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "event_id": "$1570042682183iUUXF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042682738, "hashes": {"sha256": "FMgxoBn76YoYOE6wehASKTpzhulCYWHbNWZU1jmRfcg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wJzR1wKQYyrYoMhQtq4MYP97uVJtWk244VArziaGlFaaQdes0y58+Maaha6aU8V+vzS9U2/fBzrCAMxEi46GCg"}}, "unsigned": {"age_ts": 1570042682738}}x!QQa $1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2476}{"auth_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}], ["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042680181TFyrx:localhost:8800", {"sha256": "Ygt0DXbvyMClndY2nh/hl4RDOL7YI7ovAejlkOW5ZVc"}]], "type": "m.room.history_visibility", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042681182ZiRRU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042681632, "hashes": {"sha256": "CDfBJOX+dsWNFFLL2FYueub98rlH3ii9SqS/JJyi+Eo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QUMPRRkwPniTmX6FDZljI2qfQRPA5sbz/irSXqQrJak4cdfMc4EZeFXiaw7H+IIDkY+sUwv7//Y/DHXA+pkYDQ"}}, "unsigned": {"age_ts": 1570042681632}}g QQaq $1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2475}{"auth_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}], ["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}]], "prev_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}]], "type": "m.room.join_rules", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042680181TFyrx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042680991, "hashes": {"sha256": "ohbn4tt2ifjlx6kxgrSKq+8ekg4qw8IJUGisx2GGCqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a6iUEojplt5VJpejY8zcRAmoPyryG7cKWKVEonsTQfFAjHvM7FqPtMGtXNjU2r6dVEYszD2+Xqnzx3opWrKFCw"}}, "unsigned": {"age_ts": 1570042680991}} U p H [ 3 g m F   W / @wO'_7oH!X0\5pHh ?b:'Q!jlGSdNttccYxj'Q!jlGSdNttccYxjfLkwW:localhost:8800y'Q!jGQNGXehugtTvjUGKI:localhost:8800v'Q!hNCwypIzdDZDVmCEfd:localhost:8800p'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800N'Q!jomrpmwwQQtghscizn:localhost:8800M'Q!jomrpmwwQQtghscizn:localhost:8800L'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800$&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 &Q!jYzridjeihmwPBuwLb:localhost:8800 &Q!jYzridjeihmwPBuwLb:localhost:8800 &Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800C&Q!itKDOCtoMkFUETDtle:localhost:8800r&Q!itKDOCtoMkFUETDtle:localhost:8800q'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800 'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88008&Q!fJXiUpbbOlLbHWmPgs:localhost:88007'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:8800:&Q!eySSVuCclRpBDgwKIU:localhost:88009'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88004&Q!edbUkYJIZBNOiTuLJs:localhost:8800>&Q!edbUkYJIZBNOiTuLJs:localhost:8800='Q!eWRdwtyqHvuxZFvhNS:localhost:8800b'Q!eWRdwtyqHvuxZFvhNS:localhost:8800a'Q!eWRdwtyqHvuxZFvhNS:localhost:8800`'Q!ePtMOPPOgOcBIMNZpn:localhost:8800w'Q!ePtMOPPOgOcBIMNZpn:localhost:8800v'Q!eLsrBEnrHolwCNgkFW:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800B'Q!laUExtszUaoCpZoyEq:localhost:8800&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800S'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800u&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800 $&L r  + Q w 0V|5[:`jfQQQ$1570042698202juBqr:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jeQQQ$1570042698202juBqr:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jdQQQ$1570042698202juBqr:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jcQQQ$1570042697200mrENr:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jbQQQ$1570042697200mrENr:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jaQQQ$1570042697200mrENr:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j`QQQ$1570042697199ROUNP:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j_QQQ$1570042697199ROUNP:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j^QQQ$1570042697199ROUNP:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j]QQQ$1570042696198qbnxj:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j\QQQ$1570042696198qbnxj:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j[QQQ$1570042696198qbnxj:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jZQQQ$1570042695197vezoL:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jYQQQ$1570042695197vezoL:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jXQQQ$1570042694196OHsWc:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jWQQQ$1570042691193uVdPZ:localhost:8800$1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jVQQQ$1570042691193uVdPZ:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jUQQQ$1570042691193uVdPZ:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jTQQQ$1570042690191yQfnl:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jSQQQ$1570042690191yQfnl:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jRQQQ$1570042690191yQfnl:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jQQQQ$1570042689190UkvMv:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jPQQQ$1570042689190UkvMv:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jOQQQ$1570042689190UkvMv:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jNQQQ$1570042688189axPjv:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jMQQQ$1570042688189axPjv:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jLQQQ$1570042688189axPjv:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jKQQQ$1570042687188ddQmS:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jJQQQ$1570042687188ddQmS:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jIQQQ$1570042687188ddQmS:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jHQQQ$1570042687187gbArC:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jGQQQ$1570042687187gbArC:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jFQQQ$1570042686186Qxqmn:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jEQQQ$1570042681182ZiRRU:localhost:8800$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800jDQQQ$1570042681182ZiRRU:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800jCQQQ$1570042681182ZiRRU:localhost:8800$1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800 TpH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8h@}dK2('Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 y'Q$1570043593416CouYv:localhost:8800 E'Q$1570043592415heiAH:localhost:8800 D'Q$1570043591414NuXxd:localhost:8800 C'Q$1570043590413Khvee:localhost:8800 B'Q$1570043589412JaDTY:localhost:8800 A'Q$1570043588411PDBWG:localhost:8800 @'Q$1570043585409JoQZw:localhost:8800 >'Q$1570043584408XdGfO:localhost:8800 ='Q$1570043583407USfCf:localhost:8800 <'Q$1570043583406mAAxW:localhost:8800 ;'Q$1570043582405uFoRY:localhost:8800 :'Q$1570043581404AarAd:localhost:8800 9'Q$1570043580403vYYeb:localhost:8800 8'Q$1570043579402KDYtE:localhost:8800 7'Q$1570043578401arzBQ:localhost:8800 6'Q$1570043578400zncwP:localhost:8800 5'Q$1570043575399SiSKs:localhost:8800 4'Q$1570043572397AAGBm:localhost:8800 2'Q$1570043572396lZXIU:localhost:8800 1'Q$1570043571395bDLFD:localhost:8800 0'Q$1570043570394QELCg:localhost:8800 /'Q$1570043569393UscIm:localhost:8800 .'Q$1570043568392ItLhq:localhost:8800 -'Q$1570043567391GonfI:localhost:8800 ,'Q$1570043566390qTwyJ:localhost:8800 +'Q$1570043565389RsxAr:localhost:8800 *'Q$1570043564388ZmOEV:localhost:8800 )'Q$1570043559386ZLBoz:localhost:8800 $'Q$1570043558385Xpkrp:localhost:8800 #'Q$1570043558384QrKsp:localhost:8800 "'Q$1570043557383IxQaJ:localhost:8800 !'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 Td< X 0  h @  x P ( ` 8  d<|T,`8DltpH LtL$\4$ M %]5  u'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043647421dmTZW:localhost:8800 'Q$1570043591414NuXxd:localhost:8800 \'Q$1570043571395bDLFD:localhost:8800 I'Q$1570043557383IxQaJ:localhost:8800 :'Q$1570043556382AgYyj:localhost:8800 9'Q$1570043567391GonfI:localhost:8800 E'Q$1570043566390qTwyJ:localhost:8800 D'Q$1570043565389RsxAr:localhost:8800 C'Q$1570043564388ZmOEV:localhost:8800 B'Q$1570043559386ZLBoz:localhost:8800 ='Q$1570043558385Xpkrp:localhost:8800 <'Q$1570043558384QrKsp:localhost:8800 ;'Q$1570043578401arzBQ:localhost:8800 O'Q$1570043578400zncwP:localhost:8800 N'Q$1570043575399SiSKs:localhost:8800 M'Q$1570043572397AAGBm:localhost:8800 K'Q$1570043572396lZXIU:localhost:8800 J'Q$1570043583407USfCf:localhost:8800 U'Q$1570043583406mAAxW:localhost:8800 T'Q$1570043582405uFoRY:localhost:8800 S'Q$1570043589412JaDTY:localhost:8800 Z'Q$1570043588411PDBWG:localhost:8800 Y'Q$1570043593416CouYv:localhost:8800 ^'Q$1570043592415heiAH:localhost:8800 ]'Q$1570043646420mPrhj:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 'Q$1570043648422SglHQ:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800  u'Q$1570043711438bqOHL:localhost:8800 K'Q$1570043550380LNzMz:localhost:8800 2'Q$1570043549379wtMED:localhost:8800 1'Q$1570043548378IxCfM:localhost:8800 0'Q$1570043547377kWWAW:localhost:8800 /'Q$1570043546376YfkfL:localhost:8800 .'Q$1570043545375TmtMk:localhost:8800 -'Q$1570043542373yGTqH:localhost:8800 +'Q$1570043541372ZeTYJ:localhost:8800 *'Q$1570043540371avDlf:localhost:8800 )'Q$1570043539370xCBJr:localhost:8800 ('Q$1570043538369ozxqx:localhost:8800 ''Q$1570043536368agmuM:localhost:8800 &'Q$1570043536367lvGLr:localhost:8800 %'Q$1570043535366hhblx:localhost:8800 $'Q$1570043534365WVAkx:localhost:8800 #'Q$1570043533364iwqCT:localhost:8800 "'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043646419zIOAX:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 'Q$1570043590413Khvee:localhost:8800 ['Q$1570043585409JoQZw:localhost:8800 W'Q$1570043584408XdGfO:localhost:8800 V'Q$1570043581404AarAd:localhost:8800 R'Q$1570043580403vYYeb:localhost:8800 Q'Q$1570043579402KDYtE:localhost:8800 P'Q$1570043570394QELCg:localhost:8800 H'Q$1570043569393UscIm:localhost:8800 G'Q$1570043568392ItLhq:localhost:8800 F JU$j8p? w E  } K  Q  W % ] +c1i7o= uC{IO\*1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ +1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo j1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc71e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A 1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY J1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkG1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ 11e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ,1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A \1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI*1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o o1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI 1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY r1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 (1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIJ1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo#1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YD1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE 1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA #1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ*1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkM1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw>1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksV1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 "0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc|1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI (1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 01e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 k1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w 1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA @1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEi1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA@ TpH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8h@}dK2('Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 w'Q$1570043593416CouYv:localhost:8800 D'Q$1570043592415heiAH:localhost:8800 C'Q$1570043591414NuXxd:localhost:8800 B'Q$1570043590413Khvee:localhost:8800 A'Q$1570043589412JaDTY:localhost:8800 @'Q$1570043588411PDBWG:localhost:8800 ?'Q$1570043585409JoQZw:localhost:8800 ='Q$1570043584408XdGfO:localhost:8800 <'Q$1570043583407USfCf:localhost:8800 ;'Q$1570043583406mAAxW:localhost:8800 :'Q$1570043582405uFoRY:localhost:8800 9'Q$1570043581404AarAd:localhost:8800 8'Q$1570043580403vYYeb:localhost:8800 7'Q$1570043579402KDYtE:localhost:8800 6'Q$1570043578401arzBQ:localhost:8800 5'Q$1570043578400zncwP:localhost:8800 4'Q$1570043575399SiSKs:localhost:8800 3'Q$1570043572397AAGBm:localhost:8800 1'Q$1570043572396lZXIU:localhost:8800 0'Q$1570043571395bDLFD:localhost:8800 /'Q$1570043570394QELCg:localhost:8800 .'Q$1570043569393UscIm:localhost:8800 -'Q$1570043568392ItLhq:localhost:8800 ,'Q$1570043567391GonfI:localhost:8800 +'Q$1570043566390qTwyJ:localhost:8800 *'Q$1570043565389RsxAr:localhost:8800 )'Q$1570043564388ZmOEV:localhost:8800 ('Q$1570043559386ZLBoz:localhost:8800 $'Q$1570043558385Xpkrp:localhost:8800 #'Q$1570043558384QrKsp:localhost:8800 "'Q$1570043557383IxQaJ:localhost:8800 !'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 m tm%QQa) $1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2480}{"auth_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}]], "prev_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}]], "type": "m.room.member", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-461", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-461:localhost:8800", "event_id": "$1570042686186Qxqmn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042686212, "hashes": {"sha256": "bSlh2KrWfsKaVThSTHfdPkPeX8eC7ZJjRX4BtHMGpcg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l/EMHSeOQ79otANmjxB6XJSZdc2mSbkOkkc8/QWJf0VS8Hdw3YVMRrivirxnGnBST4OR9Eiwevld/+gAd+9DAw"}}, "unsigned": {"age_ts": 1570042686212}}$QQaC $1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2479}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-461:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042685185RhcXe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042685019, "hashes": {"sha256": "LoRdRmOcosWPMRPh+kHoGfnfjFmdpZoJFsWisrqpvRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6arW8Siv7p71GKUts5bHBkk9tw8qzfR+ZahO0kCrPS+SrsJl0Rw6klCjxYPvsPyKO3noMUFE9F4vKYXLm/eWCg"}}, "unsigned": {"age_ts": 1570042685019}}t#QQg $1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "txn_id": "468", "stream_ordering": 2478}{"auth_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}], ["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042682183iUUXF:localhost:8800", {"sha256": "hffTDuxmCvBd/Pn4mhFZkeeMi4fwg15HIKBneqNzLzY"}]], "type": "m.room.message", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "event_id": "$1570042683184TpChh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042683269, "hashes": {"sha256": "LepzwMwFfYCGUQA05Gcdo9Mr7ShiLyUK9pG9hcyOX2c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EwY/vSpFN5782shZD5+ryZM7M1fqVMN4XgVVSV8yp27cADZbdI8U6BoHc8PdsYckEzf9hQjrZRexYau8nrVYDw"}}, "unsigned": {"age_ts": 1570042683269}} J V $ ^ - 2yGr@ { I  P  f 4q@j9N U$ \+c k9 qw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc0e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA21e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g\1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w0e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk71e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF00e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v80e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg0e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4Q1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwN1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE0e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU:1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U0e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k(0e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYH?11e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU?1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs0e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH80e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo 1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4~1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgw1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90u1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAa1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc[0e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A-0e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI0e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBsO1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM0e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0'1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E@1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk0e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQJ1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs0e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o\20e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg0e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY%1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcw1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40R0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc 1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgP h. G  z G o)]*MGQ/Q ]$1570042704209JQwmT:localhost:8800m.room.join_rules!HbYxdEuVIeLKHwqJEh:localhost:8800msmt@anon-20191002_181700-465:localhost:8800FQ9Q ]$1570042704208yLiWU:localhost:8800m.room.canonical_alias!HbYxdEuVIeLKHwqJEh:localhost:8800mpmqK@anon-20191002_181700-465:localhost:8800EQ3Q ]$1570042703207yqsGA:localhost:8800m.room.power_levels!HbYxdEuVIeLKHwqJEh:localhost:8800mnJmn@anon-20191002_181700-465:localhost:8800DQ'Q ]$1570042702206BIYsS:localhost:8800m.room.member!HbYxdEuVIeLKHwqJEh:localhost:8800mkvmk@anon-20191002_181700-465:localhost:8800C Q'Q  ]$1570042701205bxgOX:localhost:8800m.room.create!HbYxdEuVIeLKHwqJEh:localhost:8800mhmh@anon-20191002_181700-465:localhost:8800BQ)Q ] $1570042700204CxVfq:localhost:8800m.room.message!FbJSiQoZtZkaFwzzQq:localhost:8800 mdpmdt@anon-20191002_181700-463:localhost:8800AQ'Q ] $1570042699203fHFjU:localhost:8800m.room.member!FbJSiQoZtZkaFwzzQq:localhost:8800 m_m`)@anon-20191002_181700-464:localhost:8800@Q'Q ]$1570042698202juBqr:localhost:8800m.room.member!FbJSiQoZtZkaFwzzQq:localhost:8800m\m\@anon-20191002_181700-463:localhost:8800?Q#Q ]$1570042698201kDowV:localhost:8800m.room.test!FbJSiQoZtZkaFwzzQq:localhost:8800mZmZ@anon-20191002_181700-463:localhost:8800>Q3Q ]$1570042697200mrENr:localhost:8800m.room.guest_access!FbJSiQoZtZkaFwzzQq:localhost:8800mX8mX@anon-20191002_181700-463:localhost:8800"=Q?Q ]$1570042697199ROUNP:localhost:8800m.room.history_visibility!FbJSiQoZtZkaFwzzQq:localhost:8800mU{mU@anon-20191002_181700-463:localhost:8800<Q/Q ]$1570042696198qbnxj:localhost:8800m.room.join_rules!FbJSiQoZtZkaFwzzQq:localhost:8800mRmS@anon-20191002_181700-463:localhost:8800;Q3Q ]$1570042695197vezoL:localhost:8800m.room.power_levels!FbJSiQoZtZkaFwzzQq:localhost:8800mNmP@anon-20191002_181700-463:localhost:8800:Q'Q ]$1570042694196OHsWc:localhost:8800m.room.member!FbJSiQoZtZkaFwzzQq:localhost:8800mL mLh@anon-20191002_181700-463:localhost:88009 Q'Q  ]$1570042693195hNKnU:localhost:8800m.room.create!FbJSiQoZtZkaFwzzQq:localhost:8800mI;mI@anon-20191002_181700-463:localhost:88008Q)Q ] $1570042692194rxboZ:localhost:8800m.room.message!JPTwFTSDaBXwUTgitj:localhost:8800 mCmC@anon-20191002_181700-461:localhost:88007Q'Q ] $1570042691193uVdPZ:localhost:8800m.room.member!JPTwFTSDaBXwUTgitj:localhost:8800 m?m@B@anon-20191002_181700-462:localhost:88006Q#Q ]$1570042691192yNWVM:localhost:8800m.room.test!JPTwFTSDaBXwUTgitj:localhost:8800m=m=@anon-20191002_181700-461:localhost:88005Q)Q ]$1570042690191yQfnl:localhost:8800m.room.aliases!JPTwFTSDaBXwUTgitj:localhost:8800m;m;m@anon-20191002_181700-461:localhost:8800"4Q?Q ]$1570042689190UkvMv:localhost:8800m.room.history_visibility!JPTwFTSDaBXwUTgitj:localhost:8800m6m8p@anon-20191002_181700-461:localhost:88003Q/Q ]$1570042688189axPjv:localhost:8800m.room.join_rules!JPTwFTSDaBXwUTgitj:localhost:8800m3m4Z@anon-20191002_181700-461:localhost:88002Q9Q ]$1570042687188ddQmS:localhost:8800m.room.canonical_alias!JPTwFTSDaBXwUTgitj:localhost:8800m1Qm1@anon-20191002_181700-461:localhost:88001Q3Q ]$1570042687187gbArC:localhost:8800m.room.power_levels!JPTwFTSDaBXwUTgitj:localhost:8800m.Jm.@anon-20191002_181700-461:localhost:88000Q'Q ]$1570042686186Qxqmn:localhost:8800m.room.member!JPTwFTSDaBXwUTgitj:localhost:8800m+m+@anon-20191002_181700-461:localhost:8800/ Q'Q  ]$1570042685185RhcXe:localhost:8800m.room.create!JPTwFTSDaBXwUTgitj:localhost:8800m&[m&@anon-20191002_181700-461:localhost:8800 <eR ? h , ]  ~ B  7XAQa%q5E U]!9Q Q !hGsPmWXboxZZtOlsxY:localhost:8800publicshared9P Q !dvZnfJonDkxlrrDXUk:localhost:8800publicshared9O Q !vZGjXEXQoCaoUXnkCa:localhost:8800publicsharedAN Q !GBPGYLDkXcAsHgkfuS:localhost:8800publicsharedcan_join9M Q !fdEymmlcUvjgshvVyl:localhost:8800publicshared9L Q !xcdNyJNFEdaBGFycsB:localhost:8800publicshared9K Q !SUDzkfFBgpuCANOxRS:localhost:8800publicshared9J Q !rWmvvGBgmFMdVvcfPk:localhost:8800publicshared9I Q !gXfXRDTXeVvOHQdaaQ:localhost:8800publicshared9H Q !hegUPDZCEEmBhsNJJR:localhost:8800publicshared9G Q !aSKNKSGXPGoIbSrbEN:localhost:8800publicshared9F Q !peJMRJtXBvIiCttNmm:localhost:8800publicshared9E Q !tPkCGJBKmqUXJoRrnY:localhost:8800publicshared9D Q !QnmLrBAxeItdHsaxWf:localhost:8800publicshared9C Q !hFwigdYZkwYNSwelRH:localhost:8800publicshared9B Q !paDmNxsOZIKyApbxXs:localhost:8800publicshared9A Q !OtBUhGeUSiDMWRKIOT:localhost:8800publicshared9@ Q !zHBgbzUZHshNGZvIBS:localhost:8800publicshared9? Q !cidyuyekVzJHHvyomb:localhost:8800publicshared9> Q !pduebXnTyxQWVxEICp:localhost:8800publicshared9= Q !ZvLVbnHjeymRiFIkYr:localhost:8800publicshared9< Q !VUibrTIkcRbfrogbQV:localhost:8800publicshared9; Q !WpThtNEVhrUbUdCdMJ:localhost:8800publicshared9: Q !vRmMcoJDeCupADwqac:localhost:8800publicshared99 Q !fGkUEndqGrieltwbCh:localhost:8800publicshared98 Q !atnRTMliktaVUhMVID:localhost:8800publicshared97 Q !PHkVrXAyfGkFtzSagu:localhost:8800publicshared96 Q !EhFUhsgQbBWmrnGmaz:localhost:8800publicshared`5 Q[ !wBkUBAjOznOyxrLchl:localhost:8800#test-20191002_181700-43:localhost:8800publicshared94 Q !sHRHoXzYrrPSlWBkoh:localhost:8800publicshared93 Q !AoAvmnwMkhYBQsbCsL:localhost:8800publicshared92 Q !IlGJpjzrvvAFuwTAgo:localhost:8800publicsharedA1 Q !CSqENqzAezaZnGktbE:localhost:8800invitesharedcan_joinT0 QC !vBvlJEXUSQKUYmsKcO:localhost:8800#__ANON__-24:localhost:8800publicsharedA/ Q !RDEAXrqXQizuhCUFPq:localhost:8800invitesharedcan_joinT. QC !mogJVPxghalmKbblUq:localhost:8800#__ANON__-23:localhost:8800publicshared9- Q !EhUxBjnSkVXpTrQlrn:localhost:8800publicshared9, Q !laUExtszUaoCpZoyEq:localhost:8800publicshared9+ Q !coGyOAgYnlBZAqznax:localhost:8800publicshared9* Q !ubmTdQFAhrhZkGULDx:localhost:8800publicsharedA) Q !rpVYLTJGcFNdGzFzXj:localhost:8800invitesharedcan_joinT( QC !iKezIvJyjkNqKayFju:localhost:8800#__ANON__-22:localhost:8800publicsharedA' Q !DelfBAGvCrTXgNxmNV:localhost:8800invitesharedcan_joinT& QC !kOmCTyiizHqfCJdhlR:localhost:8800#__ANON__-21:localhost:8800publicshared9% Q !pJUItjYTOUJQFIxyiX:localhost:8800publicshared9$ Q !mvgUHEsfGqDkPQUvfG:localhost:8800publicshared9# Q !WYyiQAVvitxsLZKVCG:localhost:8800publicshared9" Q !KIHYKMzkRDrJwiywwz:localhost:8800publicsharedA! Q !RSLvuCuAqKQQrKCxNq:localhost:8800invitesharedcan_joinT QC !DqxFmsXPclgGqpSwdy:localhost:8800#__ANON__-20:localhost:8800publicsharedA Q !uqIEMXzdeNeXdJmuwh:localhost:8800invitesharedcan_joinT QC !yAzXcNLHMuqFOcOexj:localhost:8800#__ANON__-19:localhost:8800publicshared9 Q !tLkhTnTgDjjAvscRkW:localhost:8800publicshared9 Q !kAxKaIQhXTtGFWSUgr:localhost:8800publicshared9 Q !WhLedNwPGGGTtqeqam:localhost:8800publicshared9 Q !yLccBXjjEasExpsXlt:localhost:8800publicsharedA Q !PcvmCDeVUSyJbXpTig:localhost:8800invitesharedcan_joinT QC !HbYxdEuVIeLKHwqJEh:localhost:8800#__ANON__-18:localhost:8800publicsharedA Q !FbJSiQoZtZkaFwzzQq:localhost:8800invitesharedcan_joinT QC !JPTwFTSDaBXwUTgitj:localhost:8800#__ANON__-17:localhost:8800publicshared $g{T  Y )B}%G`6,Ng_:Q3 Q+!yLccBXjjEasExpsXlt:localhost:8800m.room.power_levels$1570042721227mhNwo:localhost:88009Q']Q*!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800$1570042720226wSTBF:localhost:8800Y8Q' Q)!yLccBXjjEasExpsXlt:localhost:8800m.room.create$1570042719225dSNgP:localhost:88007Q']M(!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$15700427177BOUHn:localhost:88296Q']Q'!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$1570042716223rQrNF:localhost:88005Q']Q&!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$1570042716222nflqt:localhost:8800_4Q3 Q%!PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_access$1570042714220vWWFN:localhost:8800e3Q? Q$!PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility$1570042713219HcQXL:localhost:8800]2Q/ Q#!PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules$1570042712218KQzXb:localhost:8800_1Q3 Q"!PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels$1570042712217nuYrc:localhost:88000Q']Q!!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800$1570042711216KdEEo:localhost:8800Y/Q' Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.create$1570042710215aaRza:localhost:8800.Q']M!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829$15700427086bDrAU:localhost:8829-Q']Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829$1570042708213iMMWv:localhost:8800h,Q))Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800$1570042706211NniIl:localhost:8800e+Q? Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility$1570042705210LweYn:localhost:8800]*Q/ Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules$1570042704209JQwmT:localhost:8800b)Q9 Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias$1570042704208yLiWU:localhost:8800_(Q3 Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levels$1570042703207yqsGA:localhost:8800'Q']Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800$1570042702206BIYsS:localhost:8800Y&Q' Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create$1570042701205bxgOX:localhost:8800%Q']Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800$Q']Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042698202juBqr:localhost:8800_#Q3 Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_access$1570042697200mrENr:localhost:8800e"Q? Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility$1570042697199ROUNP:localhost:8800]!Q/ Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules$1570042696198qbnxj:localhost:8800_ Q3 Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels$1570042695197vezoL:localhost:8800Q']Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800$1570042694196OHsWc:localhost:8800YQ' Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.create$1570042693195hNKnU:localhost:8800Q']Q!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800$1570042691193uVdPZ:localhost:8800hQ))Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800$1570042690191yQfnl:localhost:8800eQ? Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility$1570042689190UkvMv:localhost:8800]Q/ Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules$1570042688189axPjv:localhost:8800bQ9 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias$1570042687188ddQmS:localhost:8800_Q3 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levels$1570042687187gbArC:localhost:8800Q']Q!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800$1570042686186Qxqmn:localhost:8800 $$H l " F j DhBj DhiqQMQ$1570042718224MBWNJ:localhost:8800$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800ipMQQ$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800koQQQ$1570042716222nflqt:localhost:8800$1570042715221Amlxc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800knQQQ$1570042715221Amlxc:localhost:8800$1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kmQQQ$1570042714220vWWFN:localhost:8800$1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800klQQQ$1570042713219HcQXL:localhost:8800$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kkQQQ$1570042712218KQzXb:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kjQQQ$1570042712217nuYrc:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kiQQQ$1570042711216KdEEo:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800ihQMQ$1570042709214PwhVu:localhost:8800$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800igMQQ$15700427086bDrAU:localhost:8829$1570042707212LkSAM:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kfQQQ$1570042707212LkSAM:localhost:8800$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800keQQQ$1570042706211NniIl:localhost:8800$1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kdQQQ$1570042705210LweYn:localhost:8800$1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kcQQQ$1570042704209JQwmT:localhost:8800$1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kbQQQ$1570042704208yLiWU:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kaQQQ$1570042703207yqsGA:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800k`QQQ$1570042702206BIYsS:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800k_QQQ$1570042700204CxVfq:localhost:8800$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k^QQQ$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k]QQQ$1570042698202juBqr:localhost:8800$1570042698201kDowV:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k\QQQ$1570042698201kDowV:localhost:8800$1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k[QQQ$1570042697200mrENr:localhost:8800$1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kZQQQ$1570042697199ROUNP:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kYQQQ$1570042696198qbnxj:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kXQQQ$1570042695197vezoL:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kWQQQ$1570042694196OHsWc:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kVQQQ$1570042692194rxboZ:localhost:8800$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kUQQQ$1570042691193uVdPZ:localhost:8800$1570042691192yNWVM:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kTQQQ$1570042691192yNWVM:localhost:8800$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kSQQQ$1570042690191yQfnl:localhost:8800$1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kRQQQ$1570042689190UkvMv:localhost:8800$1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kQQQQ$1570042688189axPjv:localhost:8800$1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kPQQQ$1570042687188ddQmS:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kOQQQ$1570042687187gbArC:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kNQQQ$1570042686186Qxqmn:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800  ;+QQa $1570042691192yNWVM:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2486}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042690191yQfnl:localhost:8800", {"sha256": "/8/XpcjuW97oTY+ZbjwpH1lwWYDVLEtN9JJyAqH8Q8w"}]], "type": "m.room.test", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042691192yNWVM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042691006, "hashes": {"sha256": "2B/8TZf4y8Ocp2eJMdPsPZoR1LKg9EpH/RynVkSQqcc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i8yT3PWPeJIxWBPAEucq+7fsucCOEIEi9PZc9SOLfSBDbwz2f4IyHzUbmvjepFgTWKQqA+jUQ9t5wMDITC3gBg"}}, "unsigned": {"age_ts": 1570042691006}}*QQa1 $1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2485}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042689190UkvMv:localhost:8800", {"sha256": "T6uBq3m8aEMMLGFqHhXQ8HUoee7pHkgsKetmLDK1/kU"}]], "type": "m.room.aliases", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"aliases": ["#__ANON__-17:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042690191yQfnl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042690308, "hashes": {"sha256": "kRMZehCpRj4t6DPz3MuRjzAOTRZLlj2X1tP2x5pue1s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "53dpdWoj/ybu4+RUnL0u/t3nPcgjrexnlFfKXGjcaU2x288/XlEt55FP8fVfWafUxtCAPKXEXNRGhz5kWmA6CQ"}}, "unsigned": {"age_ts": 1570042690308}}x)QQa $1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2484}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042688189axPjv:localhost:8800", {"sha256": "WNs2uANJgC+YcMmz0HnpZjO+9lJR9r3Nj7b0OspiOI4"}]], "type": "m.room.history_visibility", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042689190UkvMv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042689200, "hashes": {"sha256": "uaDXsuEqvq9DmLWv1VRkhRTbkbfv8gjAs8X+sQeXQ8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AyI6q1nHz7YSzrOZxo0EC8xelI+6ZB9QUIILkcqO8Uh2YoJA6aYBsN7MYhF2DUz1vk8g41WRBXjQDxXdiOEkDA"}}, "unsigned": {"age_ts": 1570042689200}} L \ |J* P |V$ j8 $p> J  P  = V D v \ *Cb0 ho7uvd1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg r1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs 1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y -1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzov1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y$1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo41e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA^1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUc1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wm1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wl1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wk1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA%1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g 1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo@1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I&11e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ (1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw -1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg [1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYj0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo?1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI>1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94 1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk !1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo v1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 71e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAZ1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog P1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs L1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc X1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts h1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwX1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02se1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM~1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE,1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIc1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8s  Pg(QQaq $1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2483}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042687188ddQmS:localhost:8800", {"sha256": "ca/CMG1Ry6Sxnb6V3DiHli/6llVjVfSBfF+9BWAyl1k"}]], "type": "m.room.join_rules", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042688189axPjv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042688482, "hashes": {"sha256": "uyhMU8MElH6wk5T8d9Vq14D2+rRcnoy7JeStykCgB20"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JDuWT18QJ4dmfn4hJO/WyumwAyUzlYJx+Hg45sm4gJwSpyn+/0EzMjFpk/nFnosQk+u76+NEnIhe8h46ph78Aw"}}, "unsigned": {"age_ts": 1570042688482}}}'QQa $1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2482}{"auth_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}], ["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}]], "prev_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}]], "type": "m.room.canonical_alias", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"alias": "#__ANON__-17:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042687188ddQmS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042687825, "hashes": {"sha256": "Eg+ttlsW5BaeYaocuJAhBCBvPqqN1xcKc33+JrGFuC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "68M+/dln59B15WYZHuUcywpFfYVVQS8IJzXK5soVzm5NPzx1QCpE5fQAp9sw5RzNPStwY4yHw7U4a2ovdbP7AQ"}}, "unsigned": {"age_ts": 1570042687825}}+&QQay $1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2481}{"auth_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "type": "m.room.power_levels", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"users": {"@anon-20191002_181700-461:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042687187gbArC:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042687050, "hashes": {"sha256": "f5xP2j5JY9vQB+hted3skPAGqoW2yk8O2VDIsBNEkzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sx2UlvaeOvFsnY9NCP5dHQfAoDzWPXeaTAOLN6Kq9QYe/SRg19qXp9m3W3VucP3Hy2kwX+gkivKItuJ5d3FEBQ"}}, "unsigned": {"age_ts": 1570042687050}} %1U s  O K o  N#eCa?[~QQ/ $1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rules]}QQ3 $1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levels|QQ']$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800W{QQ' $1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.createzQQ']$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829cyQQ? $1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility[xQQ/ $1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules]wQQ3 $1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.power_levelsvQQ']$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800WuQQ' $1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.create}tMQ']$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829sQQ']$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829]rQQ3 $1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_accesscqQQ? $1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility[pQQ/ $1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules]oQQ3 $1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levelsnQQ']$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800WmQQ' $1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.create}lMQ']$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829fkQQ))$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800cjQQ? $1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility[iQQ/ $1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules`hQQ9 $1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias]gQQ3 $1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levelsfQQ']$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800WeQQ' $1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.createdQQ']$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800cQQ']$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800]bQQ3 $1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_accesscaQQ? $1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility[`QQ/ $1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules]_QQ3 $1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels^QQ']$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800W]QQ' $1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.create\QQ']$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800f[QQ))$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800cZQQ? $1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility |t l d \ T   LD<4,$R|NeeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800 {eeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800 CeeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800 $eeQ$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800 MeeQ$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800 qeeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800?eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800?eeQ$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800ɁeeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ!AMLmLqizBFklpqKibP:localhost:88000eeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800 ́eeQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800ׁeeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800 .eeQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800 ځeeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800+eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800 eeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800eeQ$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800 8l D `8L]c!E@anon-20191002_181700-478:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_woVNBLCYVGBZ127.0.0.1Perl + Net::Async::HTTP/0.44mONK]c!E@anon-20191002_181700-477:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAoUXWKBDSXBA127.0.0.1Perl + Net::Async::HTTP/0.44mElJ]c!E@anon-20191002_181700-476:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQoRXRCJNSJQB127.0.0.1Perl + Net::Async::HTTP/0.44m-I]c!E@anon-20191002_181700-475:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAoJJMOBOLFAH127.0.0.1Perl + Net::Async::HTTP/0.44m1H]c!E@anon-20191002_181700-473:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwoTSHZTIBDHN127.0.0.1Perl + Net::Async::HTTP/0.44mG]c!E@anon-20191002_181700-471:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDegoVTNKSDWUTB127.0.0.1Perl + Net::Async::HTTP/0.44meF]c!E@anon-20191002_181700-469:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwoVLYSIOTSXR127.0.0.1Perl + Net::Async::HTTP/0.44m֬ЃE]c!E@anon-20191002_181700-467:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAoTOUFSHQMBK127.0.0.1Perl + Net::Async::HTTP/0.44m։D]c!E@anon-20191002_181700-465:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1WlgoJPLWYOLOJM127.0.0.1Perl + Net::Async::HTTP/0.44mhC]c!E@anon-20191002_181700-464:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAoVUWRFRZGNE127.0.0.1Perl + Net::Async::HTTP/0.44m\  3.QQaC $1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2489}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-463:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042693195hNKnU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042693947, "hashes": {"sha256": "o+xD/Yd1/DtQ2u4ead+SBsHQcUIFMTVIQX37b3oB3Ns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tuZOjjmsDUVB0DVEYnK3i7xaO3wkJY7q6qaIGRx0jGEbUw5XupQB/I9dkAM5mjrbj+jg/9Dw3mzyqSL0olKADg"}}, "unsigned": {"age_ts": 1570042693947}}u-QQi $1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "txn_id": "469", "stream_ordering": 2488}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042691193uVdPZ:localhost:8800", {"sha256": "hA59Cu4xGqnXTmuPrWGtn5aRnEgz9IPURmckbrOL5e4"}]], "type": "m.room.message", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042692194rxboZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042692588, "hashes": {"sha256": "CIHxBvsY3VTphpn1q5UddmRHx2l/4cJJwBdAs0XQFFg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "goTKm4kMpF/dTiZpAekpjbCzzKPrlq+icsIU1qirmMdb3eLEtRelMxb7wJO/BR7y4B1uuWokbo+yJ5Qy43b8Cg"}}, "unsigned": {"age_ts": 1570042692588}}I,QQa5 $1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 474, "stream_ordering": 2487}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042688189axPjv:localhost:8800", {"sha256": "WNs2uANJgC+YcMmz0HnpZjO+9lJR9r3Nj7b0OspiOI4"}]], "prev_events": [["$1570042691192yNWVM:localhost:8800", {"sha256": "4mdI83B8CbFgunMVIB/U22BbE3M+ge+SsWe9lx5bzqs"}]], "type": "m.room.member", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-462:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-462", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-462:localhost:8800", "event_id": "$1570042691193uVdPZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042691511, "hashes": {"sha256": "t1/SFiKRY48I4uJhX4ulWTcTVhOl6S0nGpviq97/Y8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1/zXfS/DczzstypR7NOwqTe3xM/1sgrla52LaA48pzoa1rsL7JzxVD9DksDwxTZo0JXpoHkOWrcNNGrOmq13CA"}}, "unsigned": {"age_ts": 1570042691511}} ! 0 @ P ` p(8HXhxu ]@anon-20191002_181700-510:localhost:8800$2b$04$c7se..RGlAgzqOnbrmGz.O0er0q1NCIu0ZvfPlSOngl4fBdX3oA06]u ]@anon-20191002_181700-509:localhost:8800$2b$04$LkjAo5l88FDmgZPMfgtuHOyEJnywXoiC1MjHTyhcznxnVV1qFQQla]u ]@anon-20191002_181700-508:localhost:8800$2b$04$0ckUMZ2pxzj8A/polsK8fuTpzTIAmzU/dA8t9.nUQU/.qXw65uBKK]u ]@anon-20191002_181700-507:localhost:8800$2b$04$sth1lXEa.3bPGgDFbD3qse1xTD7XhDtmzkwrELrvo1JQubaC0nN3a] u ]@anon-20191002_181700-506:localhost:8800$2b$04$ROqg/WsP37t.gjOpZ7KpV.zrtyWV7UUaWbl2o22dYI2AxbbdVS9aO] u ]@anon-20191002_181700-505:localhost:8800$2b$04$1Twr3lulvO7xLVuCcVbH4OGX.pqi1BdJNzoyFlaPgCIy81wZEQ5U6]u ]@anon-20191002_181700-503:localhost:8800$2b$04$QZS3BlYyTjMbfLjHkjznaeQZVAbGK9X7MwnIXwFhdMBnq3/oeNmQi]u ]@anon-20191002_181700-501:localhost:8800$2b$04$wrK29y5wRmssHTZZYmzTD.KVEPG7nF4wof2oNGevJr1EfbSibSq4m]u ]@anon-20191002_181700-499:localhost:8800$2b$04$ilDqHqlLpHStGmv5B96q/Oj1D8XEweWj4PGFMiCVL7IzApV3gtpdK]u ]@anon-20191002_181700-497:localhost:8800$2b$04$OSolYznNGBrqI6CjIJsXMOdpTvAssr0yOoXqjGJRxhLx85j3XiH3e]u ]@anon-20191002_181700-495:localhost:8800$2b$04$CrJRJn0yAIp2dJTR/98Yo.04yLkzgiCbtPXaWrAZXJ/Fn0lWkbgG.]u ]@anon-20191002_181700-493:localhost:8800$2b$04$vi9T8J9aL0Y89NbhOqfwrens8A0znAeKQ/ZUDcJif5/AFAjEb0NI2]u ]@anon-20191002_181700-494:localhost:8800$2b$04$q9u9sJHdW6/v7MMU0KQHiePU1UCvDrk6ySCrm7BL4wW/4dfpesHsq]u ]@anon-20191002_181700-492:localhost:8800$2b$04$34KEF6/b1PvUgHwHNypeheBeHLOLPfRH6K/vCY9bY.2jQdF.fPXKC]u ]@anon-20191002_181700-491:localhost:8800$2b$04$A2.YvgA6nujEH.VKoGxACuBHrPYFHm9qErqwExOoYrw7sPa48lIwO]u~ ]@anon-20191002_181700-490:localhost:8800$2b$04$jYMTTO7EO.kVkNXIF7/6Zu095Kzl9WJU7dI/iF4vQBTQR8w15CEB6]u} ]@anon-20191002_181700-488:localhost:8800$2b$04$0cQ6COkKlxmr1DCaB8MqoeoGSIeTDTCJtHnsZO8QPtOtmgNfYWb7C]u| ]@anon-20191002_181700-486:localhost:8800$2b$04$cZ7OdnnaHTmZmeP3zWfZZOkosCYdrLtMpi0Jn7kNmdVXgtPxe9hXO]u{ ]@anon-20191002_181700-484:localhost:8800$2b$04$K8GjeT/cK/nEQHkcarAfV.BPgL1DWfuNnwRbkM2vQC8l1JIbFlZxG]uz ]@anon-20191002_181700-482:localhost:8800$2b$04$5e3isNrKgcBKNr12tJ8mdOTkxP3HBHCOh/mT2xuB9MagMmLsdBXVi]uy ]@anon-20191002_181700-480:localhost:8800$2b$04$1Og1rlHkJhWUhgPOewrxROe4NkXOifPr7m1M4/enKmETHtQ5lHXOS]ux ]@anon-20191002_181700-479:localhost:8800$2b$04$iwaQWAm5YxgvKgnMBNPYhO07DeQ/PZ0i2Xa5G.NJVCgcHvt.OQHyi]uw ]@anon-20191002_181700-478:localhost:8800$2b$04$ULjLx0r6tGoDxzg3n1NyJ.PwgodQC4QcT7RJP3busoIRNMPm1eeoe]uv ]@anon-20191002_181700-477:localhost:8800$2b$04$xm70QY/qIZFlEE7cbBK2ieR7qd.rL9Gt6/OnRyZy6ywnoo9Aqiu5y]uu ]@anon-20191002_181700-476:localhost:8800$2b$04$zPwwVgOfmtvRbP2aLhYR5Ony9ops.2We7u9iH1wFkuAOm/5IZ05zq]ut ]@anon-20191002_181700-475:localhost:8800$2b$04$g1GNShsUZpzf/rDkKzPRQe5sT3Q4R6xj2je6T1IqCj5Ve1gv.3eSC]zus ]@anon-20191002_181700-473:localhost:8800$2b$04$aTye./.39wQtlZisTg7OFe5AhN4XRb5wR7Ac9Zqn5IfMqBsfeoodO]qur ]@anon-20191002_181700-471:localhost:8800$2b$04$T6MIWmBySebjuXS86bUtUuDuIxUlZYEOTcmAxRcg6m4EgwzsBYkwG]iuq ]@anon-20191002_181700-469:localhost:8800$2b$04$.22nIk23nSC6JHftAxTNl.68Ft2Lev.rWVDbEZTbHDu0g4iqZS8qe]^up ]@anon-20191002_181700-467:localhost:8800$2b$04$PgUEA3TpG6wejQ0mUPTMP.ZXplT72/CR8.Xtk99rp0cLBAAe3haEK]Vuo ]@anon-20191002_181700-465:localhost:8800$2b$04$g3dj7sJLgmDaiIcg6WHJZulNfXMyP3XqKvdFxTC4ixpgqb2GJ7ZTC]Mun ]@anon-20191002_181700-464:localhost:8800$2b$04$WHKXScdHHPVEtFt9eMfD0uPqDwNYlJbdxvIAep4EhDvu/5ACTWgH6]Eum ]@anon-20191002_181700-463:localhost:8800$2b$04$kKHua0KEz5ccUGMDuz6XPuHdGlfXeNEKLl5yEuLUDip3xFzmzxXyO]E 3f2 K d  } 0 K d }0Kd}0Ib{.GJ(QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042733246cYViL:localhost:8800J'QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042733245smHTZ:localhost:8800J&QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042732244zDmQh:localhost:8800J%QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042731243YuOkC:localhost:8800J$QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042730242eYFxu:localhost:8800J#QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042729241UUSiz:localhost:8800J"QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042729240aBRvS:localhost:8800J!QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042728239BMOBm:localhost:8800J QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042728238dtqIB:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042727237iUlYB:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042727236AOaiE:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042726235bahBo:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042726234miteq:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042725233SjCnf:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042725232UzIHq:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042724231dYSEq:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042723230DFoyn:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042722229ehxUl:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042722228QkARL:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042721227mhNwo:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042720226wSTBF:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042719225dSNgP:localhost:8800JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042718224MBWNJ:localhost:8800HQM !PcvmCDeVUSyJbXpTig:localhost:8800$15700427177BOUHn:localhost:8829JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042716222nflqt:localhost:8800JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042715221Amlxc:localhost:8800JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042714220vWWFN:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042713219HcQXL:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042712218KQzXb:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042712217nuYrc:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042711216KdEEo:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042710215aaRza:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042709214PwhVu:localhost:8800HQM !HbYxdEuVIeLKHwqJEh:localhost:8800$15700427086bDrAU:localhost:8829JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042707212LkSAM:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042706211NniIl:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042705210LweYn:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704209JQwmT:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704208yLiWU:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042703207yqsGA:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042702206BIYsS:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042701205bxgOX:localhost:8800J~QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042700204CxVfq:localhost:8800J}QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042699203fHFjU:localhost:8800J|QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042698202juBqr:localhost:8800J{QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042698201kDowV:localhost:8800JzQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697200mrENr:localhost:8800JyQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697199ROUNP:localhost:8800JxQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042696198qbnxj:localhost:8800JwQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042695197vezoL:localhost:8800JvQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042694196OHsWc:localhost:8800 _ _g1QQaq $1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2492}{"auth_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}], ["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}]], "prev_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}]], "type": "m.room.join_rules", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042696198qbnxj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042696342, "hashes": {"sha256": "URtYCQrE0PP27sR3nXSz8hWtPruTW0WeOiOCmJc2t68"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+XapIiAQ+jmqImUxn6qZvks4+egaxl9pWFN8V4EuU+PlbVHgp6WlolLMc5FrPQ4Iy58yvoBE4pa3ttHqkh9AA"}}, "unsigned": {"age_ts": 1570042696342}}+0QQay $1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2491}{"auth_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "type": "m.room.power_levels", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"users": {"@anon-20191002_181700-463:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042695197vezoL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042695391, "hashes": {"sha256": "ZncuxEgMuKtcIK6vwFpf0DgMnBi+pUVEY2cB45LRWak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+NbzxSnGCtscEP38z9e92LyECq7YFVyShDsLG1PCQluTO/uUHoN6SDi6PvB+hpYOoqARSPtHcwdB3fM5S3iHBQ"}}, "unsigned": {"age_ts": 1570042695391}}/QQa) $1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2490}{"auth_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}]], "prev_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}]], "type": "m.room.member", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-463", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-463:localhost:8800", "event_id": "$1570042694196OHsWc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042694667, "hashes": {"sha256": "enN5wl0BORV9wB54MhUM0ovgq7xFl9Ib5YnYkYFF9Go"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x0TKeK6daObU82XelG4bu1t/DvBzurHp0pR2bxTJCRlvnkhShF8cKMJ3ji3QJh0SgUUvxZfnFAx0ib0JArA8Bg"}}, "unsigned": {"age_ts": 1570042694667}}  Z x  % C a<,Jh3Qons]@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-478:localhost:8800 anon-20191002_181700-478nr]@anon-20191002_181700-477:localhost:8800@anon-20191002_181700-477:localhost:8800 anon-20191002_181700-477nq]@anon-20191002_181700-476:localhost:8800@anon-20191002_181700-476:localhost:8800 anon-20191002_181700-476np]@anon-20191002_181700-475:localhost:8800@anon-20191002_181700-475:localhost:8800 anon-20191002_181700-475no]@anon-20191002_181700-474:localhost:8829@anon-20191002_181700-474:localhost:8829 anon-20191002_181700-474nn]@anon-20191002_181700-473:localhost:8800@anon-20191002_181700-473:localhost:8800 anon-20191002_181700-473nm]@anon-20191002_181700-471:localhost:8800@anon-20191002_181700-471:localhost:8800 anon-20191002_181700-471nl]@anon-20191002_181700-469:localhost:8800@anon-20191002_181700-469:localhost:8800 anon-20191002_181700-469ng]@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-464:localhost:8800 anon-20191002_181700-464nf]@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-463:localhost:8800 anon-20191002_181700-463ne]@anon-20191002_181700-462:localhost:8800@anon-20191002_181700-462:localhost:8800 anon-20191002_181700-462nd]@anon-20191002_181700-461:localhost:8800@anon-20191002_181700-461:localhost:8800 anon-20191002_181700-461nc]@anon-20191002_181700-460:localhost:8800@anon-20191002_181700-460:localhost:8800 anon-20191002_181700-460nb]@anon-20191002_181700-459:localhost:8829@anon-20191002_181700-459:localhost:8829 anon-20191002_181700-459na]@anon-20191002_181700-458:localhost:8800@anon-20191002_181700-458:localhost:8800 anon-20191002_181700-458n`]@anon-20191002_181700-456:localhost:8800@anon-20191002_181700-456:localhost:8800 anon-20191002_181700-456n_]@anon-20191002_181700-454:localhost:8800@anon-20191002_181700-454:localhost:8800 anon-20191002_181700-454n^]@anon-20191002_181700-453:localhost:8829@anon-20191002_181700-453:localhost:8829 anon-20191002_181700-453n]]@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-452:localhost:8800 anon-20191002_181700-452n\]@anon-20191002_181700-451:localhost:8829@anon-20191002_181700-451:localhost:8829 anon-20191002_181700-451n[]@anon-20191002_181700-450:localhost:8800@anon-20191002_181700-450:localhost:8800 anon-20191002_181700-450nZ]@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-449:localhost:8800 anon-20191002_181700-449nY]@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-448:localhost:8800 anon-20191002_181700-448nk]@anon-20191002_181700-468:localhost:8829@anon-20191002_181700-468:localhost:8829 anon-20191002_181700-468nj]@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-467:localhost:8800 anon-20191002_181700-467ni]@anon-20191002_181700-466:localhost:8829@anon-20191002_181700-466:localhost:8829 anon-20191002_181700-466nh]@anon-20191002_181700-465:localhost:8800@anon-20191002_181700-465:localhost:8800 anon-20191002_181700-465 X`8pH X 0  h @  x P ( ` 8`8  W > ^,d2j8p> vD|JP1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk D'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 3$21:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU 3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B41e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ+1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ /1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uow1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0'1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA T1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM H1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwr1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ /1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCob1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY%1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E:1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 (1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY3$19:localhost:42455 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4i3$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk3$15:localhost:42455 s'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 ~'Q$1570043728447IkYro:localhost:8800 }'Q$1570043727446CGYaE:localhost:8800 |'Q$1570043715443SSqOY:localhost:8800 p'Q$1570043713441WJPkP:localhost:8800 n'Q$1570043712440rfNzQ:localhost:8800 m'Q$1570043712439XdJFc:localhost:8800 l'Q$1570043711438bqOHL:localhost:8800 k'Q$1570043683436iTOlZ:localhost:8800 ['Q$1570043680434abJWo:localhost:8800 W'Q$1570043670433bjAzo:localhost:8800 O'Q$1570043668432TfiHj:localhost:8800 N'Q$1570043664431IMLSL:localhost:8800 K'Q$1570043660430kLPpN:localhost:8800 H'Q$1570043656428rZaqi:localhost:8800 A'Q$1570043655427tEtWD:localhost:8800 @'Q$1570043654426seixP:localhost:8800 ?'Q$1570043653425AhyPB:localhost:8800 >'Q$1570043648422SglHQ:localhost:8800 :'Q$1570043647421dmTZW:localhost:8800 9'Q$1570043646420mPrhj:localhost:8800 8'Q$1570043646419zIOAX:localhost:8800 7'Q$1570043593416CouYv:localhost:8800 'Q$1570043592415heiAH:localhost:8800   ;4QQa $1570042698201kDowV:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2495}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042697200mrENr:localhost:8800", {"sha256": "7oHIGdxDb+51k5BP1eTDIIlI7SoWLuHRh37gfdCR6vA"}]], "type": "m.room.test", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042698201kDowV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042698473, "hashes": {"sha256": "/KmU5ubNVQ/pIIPSbVGWrycfZIyQ1fWI3bARW1wMYOY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J9D93zRjWi8KJ64eSoGfypwzGi6Gqxbj36hLKQDkHfpGV6BvJFa2X7eVpEtFc704nzmWQ63eBvcnn9NaxkISDA"}}, "unsigned": {"age_ts": 1570042698473}}n3QQa $1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2494}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042697199ROUNP:localhost:8800", {"sha256": "IiA2Jxf3XyfdsWarxbUkZfcbvm0Ii+T9I+qRfZ2G9mA"}]], "type": "m.room.guest_access", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042697200mrENr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042697784, "hashes": {"sha256": "unfmrje024cU6a+CLkiErssG6i3C2i7CEW2c/8f3JlE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CdgnIb+VXNIrXu070OJSmlF1cMICd7q99HF/mp6s0QfR+gCRonYjKYuZphSSU7FetyDl16IcpSrCacmMhoRwDg"}}, "unsigned": {"age_ts": 1570042697784}}x2QQa $1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2493}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042696198qbnxj:localhost:8800", {"sha256": "pvTyS/tbvwsE/Kem/X/dqD/R/wb3OQ7qBC+SZ4Mm9XQ"}]], "type": "m.room.history_visibility", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042697199ROUNP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042697083, "hashes": {"sha256": "iAGpt6kN1ch2PG0K5CSmIO19emQITG6KvPAl1D4RGiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njrNn2pzOgUd/wK9mlsdUENy51W42kRvqolcX4fC4ZbSPN3W3fyf3cZScL5Ucy8u4Qb1Kt+UztqUzlrb9cqxAw"}}, "unsigned": {"age_ts": 1570042697083}}  Ad6QQak $1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 476, "stream_ordering": 2497}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042696198qbnxj:localhost:8800", {"sha256": "pvTyS/tbvwsE/Kem/X/dqD/R/wb3OQ7qBC+SZ4Mm9XQ"}], ["$1570042698202juBqr:localhost:8800", {"sha256": "VotnKf38uuNCutnjGoop13ZKZNNTRZipwGRrilwk+q8"}]], "prev_events": [["$1570042698202juBqr:localhost:8800", {"sha256": "VotnKf38uuNCutnjGoop13ZKZNNTRZipwGRrilwk+q8"}]], "type": "m.room.member", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-464:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-464", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-464:localhost:8800", "event_id": "$1570042699203fHFjU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042699693, "hashes": {"sha256": "5MuxV2T0vC+HEimCSjLwYf+r2u3xV4a/lK3HQpZVkb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/asRlP25CBRTqjKuGuaa0Y1+C4tCPaUfPAT/rN4FnnO0yQeI5m92t2KLEKojOEgZF87kjrLjY/B+cGpbY+odAg"}}, "unsigned": {"age_ts": 1570042699693, "replaces_state": "$1570042698202juBqr:localhost:8800"}};5QQa $1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2496}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042696198qbnxj:localhost:8800", {"sha256": "pvTyS/tbvwsE/Kem/X/dqD/R/wb3OQ7qBC+SZ4Mm9XQ"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042698201kDowV:localhost:8800", {"sha256": "TTE2DAf9nS8K/MHIKXv456yIbvj5udbdcgMd1aV/KSE"}]], "type": "m.room.member", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-464", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-464:localhost:8800", "event_id": "$1570042698202juBqr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042698897, "hashes": {"sha256": "rYm+DpS+WW7PTT1KEtRnH9OIiVX0wJRIqOIXJ6uwl1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tdVAGK5DWH8kKQzhcvx7+U9OiDt16NbNUHeuq/YC2+DVRmGn5KY+eHqwjRwnovb94ZhajHniGjtaVh2zP4UEBQ"}}, "unsigned": {"age_ts": 1570042698897, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-463:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-463:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-463", "avatar_url": null}, "sender": "@anon-20191002_181700-463:localhost:8800"}]}} $&L r  + Q w 0V|;a@fj QQQ$1570042716222nflqt:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042714220vWWFN:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042714220vWWFN:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042714220vWWFN:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042713219HcQXL:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042713219HcQXL:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042713219HcQXL:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712218KQzXb:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712218KQzXb:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712218KQzXb:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712217nuYrc:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712217nuYrc:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j~QQQ$1570042711216KdEEo:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800h}MQQ$15700427086bDrAU:localhost:8829$1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800h|MQQ$15700427086bDrAU:localhost:8829$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800h{MQQ$15700427086bDrAU:localhost:8829$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jzQQQ$1570042706211NniIl:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jyQQQ$1570042706211NniIl:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jxQQQ$1570042706211NniIl:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jwQQQ$1570042705210LweYn:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jvQQQ$1570042705210LweYn:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800juQQQ$1570042705210LweYn:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jtQQQ$1570042704209JQwmT:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jsQQQ$1570042704209JQwmT:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jrQQQ$1570042704209JQwmT:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jqQQQ$1570042704208yLiWU:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jpQQQ$1570042704208yLiWU:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800joQQQ$1570042704208yLiWU:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jnQQQ$1570042703207yqsGA:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jmQQQ$1570042703207yqsGA:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jlQQQ$1570042702206BIYsS:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jkQQQ$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jjQQQ$1570042699203fHFjU:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jiQQQ$1570042699203fHFjU:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jhQQQ$1570042699203fHFjU:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jgQQQ$1570042698202juBqr:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800 l sl9QQa) $1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2500}{"auth_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}]], "prev_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}]], "type": "m.room.member", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-465", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-465:localhost:8800", "event_id": "$1570042702206BIYsS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042702710, "hashes": {"sha256": "sy+72yCGMURkryjNV6umKz652X3rieBMqCLntFhlr+A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Q7PHNRvQ3nxEZ35fiAN4Y5XAXHtnV275sIo8qj4G4fD1NlUOWc6xNdHUZ1tYvhLCESAoZzq7jx+HT6ADCkTBw"}}, "unsigned": {"age_ts": 1570042702710}}8QQaC $1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2499}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-465:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042701205bxgOX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042701993, "hashes": {"sha256": "d7PLzxx2wkzMFR0JE53yApylh3z+lcH4I5v4Hbl8WP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HTgh8dswIBaADdIBiOvJGA9Ab5dda/BHrANenPeaY1uvxX4SclFuDjnlq8C553iWepuMefxgEPJeLu3MVNXvDw"}}, "unsigned": {"age_ts": 1570042701993}}u7QQi $1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "txn_id": "470", "stream_ordering": 2498}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042699203fHFjU:localhost:8800", {"sha256": "D9suE49XYClRZuniY5tY2/T0v8iWVX9sbLZwjlGbXC8"}]], "type": "m.room.message", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042700204CxVfq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042700912, "hashes": {"sha256": "4C8XB4j0S9Lpc4ElDlyZYZQElr6Ce/TauXWTlNaqfyw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqCvLqU8gFqTPReremHvrMZFJ4XgMBNLww0kq1ngIX6dPCzkEMksJ2wAxMdHP6MSQFKt4855HgZT45ItC8s0BA"}}, "unsigned": {"age_ts": 1570042700912}} \ / P i E f!2Q-Mf(V[QQ/ $1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rules]QQ3 $1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levelsQQ']$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800joinWQQ' $1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.createMQ']$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829leavecQQ? $1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibility[QQ/ $1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rules]QQ3 $1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levelsQQ']$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800joinWQQ' $1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.createQQ']$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829invitecQQ? $1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility[QQ/ $1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules]QQ3 $1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.power_levelsQQ']$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800joinWQQ' $1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.createMQ']$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829join]QQ3 $1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_accessc QQ? $1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility[ QQ/ $1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules] QQ3 $1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels QQ']$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800joinW QQ' $1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.createMQ']$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829joinfQQ))$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800cQQ? $1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility[QQ/ $1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules`QQ9 $1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias]QQ3 $1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levelsQQ']$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800joinWQQ' $1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create 7Px0Xp(P x 0 X  8 `  @h Hp(8`E]=@anon-20191002_181700-516:localhost:8800anon-20191002_181700-516E]=@anon-20191002_181700-514:localhost:8800anon-20191002_181700-514E]=@anon-20191002_181700-513:localhost:8829anon-20191002_181700-513E]=@anon-20191002_181700-512:localhost:8800anon-20191002_181700-512E]=@anon-20191002_181700-511:localhost:8829anon-20191002_181700-511E]=@anon-20191002_181700-510:localhost:8800anon-20191002_181700-510E]=@anon-20191002_181700-509:localhost:8800anon-20191002_181700-509E ]=@anon-20191002_181700-508:localhost:8800anon-20191002_181700-508E ]=@anon-20191002_181700-507:localhost:8800anon-20191002_181700-507E ]=@anon-20191002_181700-506:localhost:8800anon-20191002_181700-506Eg]=@anon-20191002_181700-464:localhost:8800anon-20191002_181700-464Ef]=@anon-20191002_181700-463:localhost:8800anon-20191002_181700-463Ee]=@anon-20191002_181700-462:localhost:8800anon-20191002_181700-462Ed]=@anon-20191002_181700-461:localhost:8800anon-20191002_181700-461Ec]=@anon-20191002_181700-460:localhost:8800anon-20191002_181700-460Eb]=@anon-20191002_181700-459:localhost:8829anon-20191002_181700-459Ea]=@anon-20191002_181700-458:localhost:8800anon-20191002_181700-458E`]=@anon-20191002_181700-456:localhost:8800anon-20191002_181700-456E_]=@anon-20191002_181700-454:localhost:8800anon-20191002_181700-454E^]=@anon-20191002_181700-453:localhost:8829anon-20191002_181700-453E ]=@anon-20191002_181700-505:localhost:8800anon-20191002_181700-505E ]=@anon-20191002_181700-504:localhost:8829anon-20191002_181700-504E]=@anon-20191002_181700-503:localhost:8800anon-20191002_181700-503E]=@anon-20191002_181700-501:localhost:8800anon-20191002_181700-501E]=@anon-20191002_181700-499:localhost:8800anon-20191002_181700-499E]=@anon-20191002_181700-498:localhost:8829anon-20191002_181700-498E]=@anon-20191002_181700-497:localhost:8800anon-20191002_181700-497E]=@anon-20191002_181700-496:localhost:8829anon-20191002_181700-496E]=@anon-20191002_181700-495:localhost:8800anon-20191002_181700-495E]=@anon-20191002_181700-494:localhost:8800anon-20191002_181700-494E]=@anon-20191002_181700-493:localhost:8800anon-20191002_181700-493E]=@anon-20191002_181700-492:localhost:8800anon-20191002_181700-492E~]=@anon-20191002_181700-491:localhost:8800anon-20191002_181700-491E}]=@anon-20191002_181700-490:localhost:8800anon-20191002_181700-490E|]=@anon-20191002_181700-489:localhost:8829anon-20191002_181700-489E{]=@anon-20191002_181700-488:localhost:8800anon-20191002_181700-488Ez]=@anon-20191002_181700-486:localhost:8800anon-20191002_181700-486Ey]=@anon-20191002_181700-484:localhost:8800anon-20191002_181700-484Ex]=@anon-20191002_181700-483:localhost:8829anon-20191002_181700-483Ew]=@anon-20191002_181700-482:localhost:8800anon-20191002_181700-482Ev]=@anon-20191002_181700-481:localhost:8829anon-20191002_181700-481Eu]=@anon-20191002_181700-480:localhost:8800anon-20191002_181700-480Et]=@anon-20191002_181700-479:localhost:8800anon-20191002_181700-479Es]=@anon-20191002_181700-478:localhost:8800anon-20191002_181700-478Er]=@anon-20191002_181700-477:localhost:8800anon-20191002_181700-477Eq]=@anon-20191002_181700-476:localhost:8800anon-20191002_181700-476Ep]=@anon-20191002_181700-475:localhost:8800anon-20191002_181700-475Eo]=@anon-20191002_181700-474:localhost:8829anon-20191002_181700-474En]=@anon-20191002_181700-473:localhost:8800anon-20191002_181700-473Em]=@anon-20191002_181700-471:localhost:8800anon-20191002_181700-471El]=@anon-20191002_181700-469:localhost:8800anon-20191002_181700-469Ek]=@anon-20191002_181700-468:localhost:8829anon-20191002_181700-468Ej]=@anon-20191002_181700-467:localhost:8800anon-20191002_181700-467Ei]=@anon-20191002_181700-466:localhost:8829anon-20191002_181700-466Eh]=@anon-20191002_181700-465:localhost:8800anon-20191002_181700-465  Pg<QQaq $1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2503}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042704208yLiWU:localhost:8800", {"sha256": "APCV+MOEnDpYLDB7390R3JBY98SiMAjAD3NIbqXlc6g"}]], "type": "m.room.join_rules", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042704209JQwmT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042704876, "hashes": {"sha256": "NzfiJjztghklfVh6G8Cssao0ir8gV/O7SvMRVDZEPn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r6y/jCu9tiBZRI4NPkWVvAZb8wYrDEo6qV6PrJZXe+KsPCzLUcUMudVuHB+5IoHv9mN6CTtDAyr1XEYwvgkmBA"}}, "unsigned": {"age_ts": 1570042704876}}};QQa $1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2502}{"auth_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}], ["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}]], "prev_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}]], "type": "m.room.canonical_alias", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"alias": "#__ANON__-18:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042704208yLiWU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042704093, "hashes": {"sha256": "uULJcBhPJVyBrYsxp2l6uLQxlLIsq4szpOiR1SeLtYs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W2af3KzXII9hgr714r5nFMsXPjQQnkjx+gDuMB+X74LDFsa34GLlWk2WpgupgWQCbjePgAHMlIGG6YpoZBCGBg"}}, "unsigned": {"age_ts": 1570042704093}}+:QQay $1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2501}{"auth_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "type": "m.room.power_levels", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"users": {"@anon-20191002_181700-465:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042703207yqsGA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042703434, "hashes": {"sha256": "zLb5UhMyiK3MS1vJXD1hhbyrMzs9fysH334JuMsV+5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DHHNCyUjfffIaxn/Z4MjS5wq1ROHR2p9xMkwA4BaWCRGIJcy9gvfBcVdC+soAQkokkKwV3WRPy9z95LNx6QeCg"}}, "unsigned": {"age_ts": 1570042703434}}   4 h 6m^Y]@anon-20191002_181700-4:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcK127.0.0.1a[a@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMExLdTVtY3hMMGo5d2dJNAowMDJmc2lnbmF0dXJlIOkvze_r9F0C3qDEEZB8FlDTKiRmp-FVbkGhwMBlMlMVCg127.0.0.1%a[a@anon-20191002_181700-49:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUYwRTlTOipQZThDdU9aMQowMDJmc2lnbmF0dXJlIMxDOMfQi7QpMEic-RaPEMXsMRJB1o80-j34WrEMdLcICg127.0.0.1&d]c@anon-20191002_181700-499:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAo127.0.0.1ڂd]c@anon-20191002_181700-497:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogo127.0.0.1قd]c@anon-20191002_181700-495:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQo127.0.0.1؂d]c@anon-20191002_181700-494:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3Qwo127.0.0.1ׂd]c@anon-20191002_181700-493:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowo127.0.0.1ւd]c@anon-20191002_181700-492:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwo127.0.0.1Ղd]c@anon-20191002_181700-491:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6Rgo127.0.0.1Ԃd]c@anon-20191002_181700-490:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwo127.0.0.1  ;?QQa $1570042707212LkSAM:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2506}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042706211NniIl:localhost:8800", {"sha256": "vA1R8zmy01hLqf2HdQvJmocpFnVGo0vry7VSsopPpso"}]], "type": "m.room.test", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042707212LkSAM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042707450, "hashes": {"sha256": "xfvcrzLQb8PFaQCf0VtNYw0m+gIiDfb5YlTdgUE2S7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7EXzi47WRqV4CON66aOHmpE8KFULW+pV+V7kdnV6gj+/GheQGLHoBcpIzuhzqAmsdqnzvPnMv8sEHHOja/asCQ"}}, "unsigned": {"age_ts": 1570042707450}}>QQa1 $1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2505}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042705210LweYn:localhost:8800", {"sha256": "Qyp2XB17fs7qsTxk+jDu6YpttrQwr/vmehLitOuPkFk"}]], "type": "m.room.aliases", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"aliases": ["#__ANON__-18:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042706211NniIl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042706802, "hashes": {"sha256": "3HzfRz2ZKpxCUNoPLnzulnHIwGi7o4CSM/fHXv6Zt5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TeALd6XzsPWtY+GmMefFeuLDIGY4qoT34hbC6QFp7vydBS8P5BBO5ryWne7DsPlpxmXDanksCcS74GT/wkH/Cw"}}, "unsigned": {"age_ts": 1570042706802}}x=QQa $1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2504}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042704209JQwmT:localhost:8800", {"sha256": "Fbu8V5YrDB3Tv8fP5y+GayOSOdZqcj7VsAKvKD6UCDQ"}]], "type": "m.room.history_visibility", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042705210LweYn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042705701, "hashes": {"sha256": "dftmRpl6VCBmuf7tUcr4DtohHSpA7BtSJcXmfxNr6JE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tfEjWLclW+Mw+inGWQuvtoZVDthlNedERT0vJ5gOU0WjKJUecsyEKjssKWv6HupaDo11V06IvUdlOrOPVXlNCA"}}, "unsigned": {"age_ts": 1570042705701}} lNl?@_ _ 2 qDu~wJ  R % q D  c 6 U (Q$2Gf9 X+ ,Q!SnROoiDBa,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 +Q !SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SpXEytywhTbAftyVBr:localhost:880066,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 +Q !SUDzkfFBgpuCANOxRS:localhost:8800  ,Q!SpXEytywhTbAftyVBr:localhost:880099,Q!SpXEytywhTbAftyVBr:localhost:880088,Q!SpXEytywhTbAftyVBr:localhost:880077,Q!SrMQpDMFREKRMELwbL:localhost:8800/,Q!SrMQpDMFREKRMELwbL:localhost:8800.,Q!SrMQpDMFREKRMELwbL:localhost:8800-,Q!SrMQpDMFREKRMELwbL:localhost:8800,,Q!SrMQpDMFREKRMELwbL:localhost:8800+,Q!SrMQpDMFREKRMELwbL:localhost:8800*,Q!SrMQpDMFREKRMELwbL:localhost:8800),Q!SrMQpDMFREKRMELwbL:localhost:8800(,Q!SrMQpDMFREKRMELwbL:localhost:8800',Q!SrMQpDMFREKRMELwbL:localhost:8800&,Q!SrMQpDMFREKRMELwbL:localhost:8800%,Q!SrMQpDMFREKRMELwbL:localhost:8800$,Q!SrMQpDMFREKRMELwbL:localhost:8800#,Q!SrMQpDMFREKRMELwbL:localhost:8800",Q!SrMQpDMFREKRMELwbL:localhost:8800!,Q!SrMQpDMFREKRMELwbL:localhost:8800 +Q !SpXEytywhTbAftyVBr:localhost:880055,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800+Q !SrMQpDMFREKRMELwbL:localhost:8800,Q!SfYtaUhCFosNfHfUVm:localhost:8800nn,Q!SfYtaUhCFosNfHfUVm:localhost:8800mm,Q!SfYtaUhCFosNfHfUVm:localhost:8800kk,Q!SfYtaUhCFosNfHfUVm:localhost:8800ii,Q!SfYtaUhCFosNfHfUVm:localhost:8800gg,Q!SfYtaUhCFosNfHfUVm:localhost:8800ee+Q !SfYtaUhCFosNfHfUVm:localhost:8800cc,Q!SBEprlZiuliFNSfNmz:localhost:8800tt,Q!SBEprlZiuliFNSfNmz:localhost:8800ss,Q!SBEprlZiuliFNSfNmz:localhost:8800rr,Q!SBEprlZiuliFNSfNmz:localhost:8800qq,Q!SBEprlZiuliFNSfNmz:localhost:8800pp ZV+ V}R }R'{PT)}R' +  TX- {T) ' R ) Z /  X - %{P%yN# )*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!OBWkjfrDCNgYFfblia:localhost:8800??*Q!OBWkjfrDCNgYFfblia:localhost:8800>>*Q!NcJYmIbgjsaKJOzBcs:localhost:8800ww*Q!NboFFVLpJHTeuUKCjM:localhost:8800<<*Q!NboFFVLpJHTeuUKCjM:localhost:8800;;*Q!NboFFVLpJHTeuUKCjM:localhost:8800::*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800@@*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800AA*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NboFFVLpJHTeuUKCjM:localhost:8800>>*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!OMkiVTuuOEeiFAXtUY:localhost:8800SS*Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` `*Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ _*Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ ^*Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] ]*Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ \*Q!OCEHAjcOXWNyWIESIS:localhost:8800 [ [*Q!OBWkjfrDCNgYFfblia:localhost:8800BB*Q!NboFFVLpJHTeuUKCjM:localhost:8800==*Q!NboFFVLpJHTeuUKCjM:localhost:880099*Q!NboFFVLpJHTeuUKCjM:localhost:880088*Q!NboFFVLpJHTeuUKCjM:localhost:880077*Q!NcJYmIbgjsaKJOzBcs:localhost:8800xx*Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV*Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU*Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT*Q!NeYaCeYNFATCqlrlGT:localhost:8800oo*Q!NeYaCeYNFATCqlrlGT:localhost:8800nn*Q!NeYaCeYNFATCqlrlGT:localhost:8800mm*Q!NeYaCeYNFATCqlrlGT:localhost:8800ll*Q!NeYaCeYNFATCqlrlGT:localhost:8800kk*Q!NeYaCeYNFATCqlrlGT:localhost:8800jj*Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800==*Q!OBWkjfrDCNgYFfblia:localhost:8800<<*Q!OBWkjfrDCNgYFfblia:localhost:8800;;*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ww(Q!NhWgOTYzEPRwAxRQvS:localhost:8800vv(Q!NhWgOTYzEPRwAxRQvS:localhost:8800uu(Q!NhWgOTYzEPRwAxRQvS:localhost:8800tt(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ss(Q!NhWgOTYzEPRwAxRQvS:localhost:8800rr*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800~~*Q!NcJYmIbgjsaKJOzBcs:localhost:8800}}*Q!NcJYmIbgjsaKJOzBcs:localhost:8800||*Q!NcJYmIbgjsaKJOzBcs:localhost:8800{{*Q!NcJYmIbgjsaKJOzBcs:localhost:8800zz*Q!NcJYmIbgjsaKJOzBcs:localhost:8800yy*Q!NfaPEGKjnUDUTavzol:localhost:8800 lNl?@_ _ 2 qDu~wJ  R % q D  c 6 U (Q$2Gf9 X+ ,Q!SnROoiDBa,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 +Q !SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SpXEytywhTbAftyVBr:localhost:880066,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 +Q !SUDzkfFBgpuCANOxRS:localhost:8800  ,Q!SpXEytywhTbAftyVBr:localhost:880099,Q!SpXEytywhTbAftyVBr:localhost:880088,Q!SpXEytywhTbAftyVBr:localhost:880077,Q!SrMQpDMFREKRMELwbL:localhost:8800/,Q!SrMQpDMFREKRMELwbL:localhost:8800.,Q!SrMQpDMFREKRMELwbL:localhost:8800-,Q!SrMQpDMFREKRMELwbL:localhost:8800,,Q!SrMQpDMFREKRMELwbL:localhost:8800+,Q!SrMQpDMFREKRMELwbL:localhost:8800*,Q!SrMQpDMFREKRMELwbL:localhost:8800),Q!SrMQpDMFREKRMELwbL:localhost:8800(,Q!SrMQpDMFREKRMELwbL:localhost:8800',Q!SrMQpDMFREKRMELwbL:localhost:8800&,Q!SrMQpDMFREKRMELwbL:localhost:8800%,Q!SrMQpDMFREKRMELwbL:localhost:8800$,Q!SrMQpDMFREKRMELwbL:localhost:8800#,Q!SrMQpDMFREKRMELwbL:localhost:8800",Q!SrMQpDMFREKRMELwbL:localhost:8800!,Q!SrMQpDMFREKRMELwbL:localhost:8800 +Q !SpXEytywhTbAftyVBr:localhost:880055,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800+Q !SrMQpDMFREKRMELwbL:localhost:8800,Q!SfYtaUhCFosNfHfUVm:localhost:8800nn,Q!SfYtaUhCFosNfHfUVm:localhost:8800mm,Q!SfYtaUhCFosNfHfUVm:localhost:8800kk,Q!SfYtaUhCFosNfHfUVm:localhost:8800ii,Q!SfYtaUhCFosNfHfUVm:localhost:8800gg,Q!SfYtaUhCFosNfHfUVm:localhost:8800ee+Q !SfYtaUhCFosNfHfUVm:localhost:8800cc,Q!SBEprlZiuliFNSfNmz:localhost:8800tt,Q!SBEprlZiuliFNSfNmz:localhost:8800ss,Q!SBEprlZiuliFNSfNmz:localhost:8800rr,Q!SBEprlZiuliFNSfNmz:localhost:8800qq,Q!SBEprlZiuliFNSfNmz:localhost:8800pp Z' \ " > tAi)[`Q)Q ] $1570042726234miteq:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 mǿm@anon-20191002_181700-469:localhost:8800_Q)Q ] $1570042725233SjCnf:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 mm@anon-20191002_181700-469:localhost:8800^Q)Q ]$1570042725232UzIHq:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800mm@anon-20191002_181700-469:localhost:8800]Q#Q ]$1570042724231dYSEq:localhost:8800m.room.test!yLccBXjjEasExpsXlt:localhost:8800m$m'@anon-20191002_181700-469:localhost:8800\Q'Q ]$1570042723230DFoyn:localhost:8800m.room.member!yLccBXjjEasExpsXlt:localhost:8800m־mֿ@anon-20191002_181700-469:localhost:8800"[Q?Q ]$1570042722229ehxUl:localhost:8800m.room.history_visibility!yLccBXjjEasExpsXlt:localhost:8800mֺMmּ.@anon-20191002_181700-469:localhost:8800ZQ/Q ]$1570042722228QkARL:localhost:8800m.room.join_rules!yLccBXjjEasExpsXlt:localhost:8800mַ_mָ#@anon-20191002_181700-469:localhost:8800YQ3Q ]$1570042721227mhNwo:localhost:8800m.room.power_levels!yLccBXjjEasExpsXlt:localhost:8800mִImִ@anon-20191002_181700-469:localhost:8800XQ'Q ]$1570042720226wSTBF:localhost:8800m.room.member!yLccBXjjEasExpsXlt:localhost:8800mְmֱS@anon-20191002_181700-469:localhost:8800W Q'Q  ]$1570042719225dSNgP:localhost:8800m.room.create!yLccBXjjEasExpsXlt:localhost:8800m֭*m֭@anon-20191002_181700-469:localhost:8800VQ)Q ] $1570042718224MBWNJ:localhost:8800m.room.message!PcvmCDeVUSyJbXpTig:localhost:8800 m֧m֨@anon-20191002_181700-467:localhost:8800UM'Q ] $15700427177BOUHn:localhost:8829m.room.member!PcvmCDeVUSyJbXpTig:localhost:8800 m֢m֣@anon-20191002_181700-468:localhost:8829TQ'Q ]$1570042716222nflqt:localhost:8800m.room.member!PcvmCDeVUSyJbXpTig:localhost:8800m֟m֠@anon-20191002_181700-467:localhost:8800SQ#Q ]$1570042715221Amlxc:localhost:8800m.room.test!PcvmCDeVUSyJbXpTig:localhost:8800m֝m֝@anon-20191002_181700-467:localhost:8800RQ3Q ]$1570042714220vWWFN:localhost:8800m.room.guest_access!PcvmCDeVUSyJbXpTig:localhost:8800m֙~m֙@anon-20191002_181700-467:localhost:8800"QQ?Q ]$1570042713219HcQXL:localhost:8800m.room.history_visibility!PcvmCDeVUSyJbXpTig:localhost:8800m֖~m֖@anon-20191002_181700-467:localhost:8800PQ/Q ]$1570042712218KQzXb:localhost:8800m.room.join_rules!PcvmCDeVUSyJbXpTig:localhost:8800m֓m֔@anon-20191002_181700-467:localhost:8800OQ3Q ]$1570042712217nuYrc:localhost:8800m.room.power_levels!PcvmCDeVUSyJbXpTig:localhost:8800m֑m֑l@anon-20191002_181700-467:localhost:8800NQ'Q ]$1570042711216KdEEo:localhost:8800m.room.member!PcvmCDeVUSyJbXpTig:localhost:8800m֍m֎6@anon-20191002_181700-467:localhost:8800M Q'Q  ]$1570042710215aaRza:localhost:8800m.room.create!PcvmCDeVUSyJbXpTig:localhost:8800m֊m֋@anon-20191002_181700-467:localhost:8800LQ)Q ] $1570042709214PwhVu:localhost:8800m.room.message!HbYxdEuVIeLKHwqJEh:localhost:8800 mքmօ@anon-20191002_181700-465:localhost:8800KM'Q ] $15700427086bDrAU:localhost:8829m.room.member!HbYxdEuVIeLKHwqJEh:localhost:8800 mր8mցE@anon-20191002_181700-466:localhost:8829JQ#Q ]$1570042707212LkSAM:localhost:8800m.room.test!HbYxdEuVIeLKHwqJEh:localhost:8800m}m~@anon-20191002_181700-465:localhost:8800IQ)Q ]$1570042706211NniIl:localhost:8800m.room.aliases!HbYxdEuVIeLKHwqJEh:localhost:8800m{rm{@anon-20191002_181700-465:localhost:8800"HQ?Q ]$1570042705210LweYn:localhost:8800m.room.history_visibility!HbYxdEuVIeLKHwqJEh:localhost:8800mw%mx@anon-20191002_181700-465:localhost:8800 2dw( ; P  c  v ' :M`s$7L_r#:VpeL$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIsha256(mLq%&>.OVurVoeL$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQsha256D]1OXXs$E04/SHdKnOL$157004274411xArrT:localhost:8829sha256X/-or,aˤUےzm[W zKmOL$157004274310jCQYA:localhost:8829sha256`D=nJɾ=۰EJlML$15700427439Hwxyi:localhost:8829sha256+6}V ;]vvFeIE,҂-'LkQL$1570042742256IYRor:localhost:8800sha256XVXDc9wea)LjQL$1570042742255yQzPA:localhost:8800sha256} eLxڃmϕbd\ QLiQL$1570042741254DKIYz:localhost:8800sha2560 x{ ?^r 0$\LhQL$1570042740253GkWgu:localhost:8800sha256,ڰxX}ήcUULgQL$1570042739252bWghU:localhost:8800sha256$y"0|dST"\ YLfQL$1570042738251iukAg:localhost:8800sha256{ XIZԟ<(C"H'.6ʃ3»tLeQL$1570042737250jmxWx:localhost:8800sha256u 6AAIh y2l3&JdML$15700427368TlZQs:localhost:8829sha256Q')R;.m]J@ML$15700427086bDrAU:localhost:8829sha256m:v4W(JHjƧ&L?QL$1570042707212LkSAM:localhost:8800sha256$:;p w&:+)^$ ~P*k"  $BQQaC $1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2509}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-467:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042710215aaRza:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042710735, "hashes": {"sha256": "TJ/EeA/TPI8z0QsuCsCz+J4iD/hUJda6yXDjciSJHns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MG6iiRNdQmvYYAgsVMjr9mLe7yE4kx12YwbFGeHqHXITBKhTkYCtluJBheqMYTldgtVJXK1MnfJ5L63yIKMZCg"}}, "unsigned": {"age_ts": 1570042710735}}sAQQe $1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "txn_id": "471", "stream_ordering": 2508}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$15700427086bDrAU:localhost:8829", {"sha256": "FLoIbRL+BzqDdjTk8rUYVyjeE0pIzGqAnManiSaZFdk"}]], "type": "m.room.message", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042709214PwhVu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042709188, "hashes": {"sha256": "yHH1bMdxRbG3TKgfzFmUXU9wPGqDKysOZj1oBSl9KEY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wjMdd9toNi8ghBNvMK8PX1MXucqCC7/uvjp3RuekID8tlipvqpRRLLBNVsSAhPLqQa2VJTlyhdJdi64XvR57Dg"}}, "unsigned": {"age_ts": 1570042709188}}a@MQ1 $15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2507}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042704209JQwmT:localhost:8800", {"sha256": "Fbu8V5YrDB3Tv8fP5y+GayOSOdZqcj7VsAKvKD6UCDQ"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-466", "membership": "join"}, "depth": 9, "event_id": "$15700427086bDrAU:localhost:8829", "hashes": {"sha256": "zyZmoDAR/5e4jL4QXXFElQ8syB0b9ytwC/kawXolkFM"}, "origin": "localhost:8829", "origin_server_ts": 1570042708024, "prev_events": [["$1570042707212LkSAM:localhost:8800", {"sha256": "1McknzrrO3ANHneRJjrvKyleJPjMDH6UUAgQFvUqayI"}]], "prev_state": [], "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-466:localhost:8829", "state_key": "@anon-20191002_181700-466:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/uodVZNrzhnNoxxXRwrLuru2cE3NLlXKkYgrIHpCUz3hSeuIi/qkdHwr3eRqGnhrNfcxPo0ToJlzyURzSglcCg"}, "localhost:8829": {"ed25519:a_UxIG": "xO1RZNAzs7R0pN7dUJK77GALBV/ZUhrA0EkOfZ9mDV2ABm3+B9I2K54yWfCurPa16FMSnUkgkeC7NosywascAQ"}}, "unsigned": {"age": 153}} EUq8 T  p 8 T  p 7 S o6Ro6Rn5Rn5R8e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgsha2568e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490sha2568e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUsha256r8e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wsha2568e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYsha256#8e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGosha2567e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYksha256:8e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jtssha2568e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAsha256 e8e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqYsha256+8e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0sha256h8e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0sha256 U8e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMsha2568e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwsha256 8e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8sha256V7e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68sha256x8e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4sha256 8e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0sha256 8e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKssha256Q8e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgsha25648e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8sha2568e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprksha256p8e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYsha2568e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhssha256<8e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAsha2568e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9woksha2567e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwsha256c8e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFksha2568e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQsha2568e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Sosha2568e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwsha2568e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Esha2568e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70sha256 8e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wsha2568e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQsha2568e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60sha2568e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKosha2568e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30ssha256*8e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUsha256 "8e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4sha256 8e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUsha256 8e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcsha256 S8e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQsha2568e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tssha2568e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0sha2568e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8sha2568e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gsha256 8e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwsha256J8e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08sha2568e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIsha256 8e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8sha256 $8e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8sha2567e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAsha256`8e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYsha256 8e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4sha2568e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAksha256p8e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0sha256K8e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUsha256m8e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8sha2568e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXAsha256 8e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMsha2568e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4sha2568e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMsha256O8e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYsha2568e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4sha256 f8e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Ggsha256 -8e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAsha25608e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqssha2568e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaaksha256 "Y  a  ~  Q n$52IS\d Q' e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.create$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zop Q? e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEohQ/ e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rules$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkjQ3 e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE Q']e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIdQ' e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.create$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ"Q']MQ !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$15700427439Hwxyi:localhost:8829$1570042742255yQzPA:localhost:8800Q']Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$1570042742255yQzPA:localhost:8800fQ? Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibility$1570042741254DKIYz:localhost:8800^Q/ Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rules$1570042740253GkWgu:localhost:8800`Q3 Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levels$1570042739252bWghU:localhost:8800Q']Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800$1570042738251iukAg:localhost:8800Z~Q' Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.create$1570042737250jmxWx:localhost:8800"}Q']MQ !WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829$15700427368TlZQs:localhost:8829$1570042734247SfTxR:localhost:8800|Q']Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829$1570042734247SfTxR:localhost:8800f{Q? Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibility$1570042733246cYViL:localhost:8800^zQ/ Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rules$1570042733245smHTZ:localhost:8800`yQ3 Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levels$1570042732244zDmQh:localhost:8800xQ']Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800$1570042731243YuOkC:localhost:8800ZwQ' Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.create$1570042730242eYFxu:localhost:8800vQ']Q !yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829$1570042723230DFoyn:localhost:8800fuQ? Q !yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility$1570042722229ehxUl:localhost:8800^tQ/ Q !yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules$1570042722228QkARL:localhost:8800`sQ3 Q !yLccBXjjEasExpsXlt:localhost:8800m.room.power_levels$1570042721227mhNwo:localhost:8800rQ']Q !yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800$1570042720226wSTBF:localhost:8800ZqQ' Q !yLccBXjjEasExpsXlt:localhost:8800m.room.create$1570042719225dSNgP:localhost:8800"pQ']MQ !PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800oQ']Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$1570042716222nflqt:localhost:8800`nQ3 Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_access$1570042714220vWWFN:localhost:8800fmQ? Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility$1570042713219HcQXL:localhost:8800^lQ/ Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules$1570042712218KQzXb:localhost:8800`kQ3 Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels$1570042712217nuYrc:localhost:8800jQ']Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800$1570042711216KdEEo:localhost:8800ZiQ' Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.create$1570042710215aaRza:localhost:8800 _ _gEQQaq $1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2512}{"auth_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}], ["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}]], "prev_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}]], "type": "m.room.join_rules", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042712218KQzXb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042712976, "hashes": {"sha256": "M4RX4Cgyl/JJAZKJWxU9wbsjstm2OtfJLCyKzEmrC30"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6taRK2pHF/4v1o3LhZxNgq7gwPOKZDlYsaarytLTND9EqF4ZIHi14SDebUsK1XHBLLdGTBblbZgzsGPY+kJUDw"}}, "unsigned": {"age_ts": 1570042712976}}+DQQay $1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2511}{"auth_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "type": "m.room.power_levels", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"users": {"@anon-20191002_181700-467:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042712217nuYrc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042712327, "hashes": {"sha256": "/wCCEl/I45hbyNTUOQJPjOJmwF4wMbSmwSlwl25Hv9U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+JoDX0lTCiwfH0cuik6iVCVEQ3Yr5A5G9qsrXAmv1rzyJa2MUWimHAbVMWVea1OYVA5PS5XFKBSRwS/DMnkJAA"}}, "unsigned": {"age_ts": 1570042712327}}CQQa) $1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2510}{"auth_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}]], "prev_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}]], "type": "m.room.member", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-467", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-467:localhost:8800", "event_id": "$1570042711216KdEEo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042711502, "hashes": {"sha256": "xNnA+FzfJ+0d1l7w6AEg1WwBJSkmaamxlSYHZNUvuHo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O0AAVa3U3qhUcVKrSSTqjC2DZ4NDp8PVsVRQeNF1hMnVRU1nQMKcJRTySc3kEz3iVjSYzYTNdF1NUuiGHNwbBg"}}, "unsigned": {"age_ts": 1570042711502}} "<m;< *b0h6n P y/ V $ \ NZ(j9sA G t[h6B)n<  a  M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg 1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg 1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:424551e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYV1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYU1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYTa1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAP1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAO1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAQ1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8v1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMo1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMn1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMm1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg`1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg_1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg^1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU01e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU/1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU.1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU(1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU'1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU&1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n01e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 d1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8w1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw621e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk[1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkZ1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikC1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikB1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikA1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g 0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g 0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g 1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A 1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M  ;HQQa $1570042715221Amlxc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2515}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042714220vWWFN:localhost:8800", {"sha256": "eKp+sxuDc19s+zVjApC3DXhyQZIFIibhy+qmwkwK/PA"}]], "type": "m.room.test", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042715221Amlxc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042715637, "hashes": {"sha256": "yfUstNGhjvfdXOb5emyvg6bX/4jl9kl7Y4DqiXo/e6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EqqP80vDFVfn31i9xhAk3puFPx/6K+TNfFpbzo4SqGGNeWVJEvfCYNrYaaEpmjsAQhCbQHvD+sDRp8xR89zeDw"}}, "unsigned": {"age_ts": 1570042715637}}nGQQa $1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2514}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042713219HcQXL:localhost:8800", {"sha256": "PwUzFYwu7zQf7ZbG7qyf24X7QZ3+HBdX3biKS4l95GU"}]], "type": "m.room.guest_access", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042714220vWWFN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042714494, "hashes": {"sha256": "M61vrJ59NVgme7K263jCmGZ6hcUdqPGKxfq16xuSpuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HYfDHGPzoNPyT4twR6KsScizUcG+kQB8CcmWgVM08db5IIK925F2jlHh7YNwrSgzKzQdrpQwOWTjhdrWYTNTDA"}}, "unsigned": {"age_ts": 1570042714494}}xFQQa $1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2513}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042712218KQzXb:localhost:8800", {"sha256": "DuTmsCvTb/FCBjn9+mYjgqOvqRep4heZQ2p+JshqIY4"}]], "type": "m.room.history_visibility", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042713219HcQXL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042713726, "hashes": {"sha256": "TwpkHUbNW4YN9sTksR5+x4vqvTHnOV9deIFaMrZKL2k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tj29SNhoU0oanmEcc5kJkDgTkjr0u5r4Qhlyc+dPwKm5XTK6MwP6WjH/kLV8p+3rHib3F6IdPljP97uOorPBAQ"}}, "unsigned": {"age_ts": 1570042713726}} |JMQ1M $15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2517}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042712218KQzXb:localhost:8800", {"sha256": "DuTmsCvTb/FCBjn9+mYjgqOvqRep4heZQ2p+JshqIY4"}], ["$1570042716222nflqt:localhost:8800", {"sha256": "c8QYwMgqybDl5/+WUQPU7y/P4tSrzuhtVzv0TDUldlU"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-468", "membership": "join"}, "depth": 9, "event_id": "$15700427177BOUHn:localhost:8829", "hashes": {"sha256": "g9rrPoqJ8T2GluJkP0yaICk0R4/1DCQEp3p/509Z1dE"}, "origin": "localhost:8829", "origin_server_ts": 1570042716898, "prev_events": [["$1570042716222nflqt:localhost:8800", {"sha256": "c8QYwMgqybDl5/+WUQPU7y/P4tSrzuhtVzv0TDUldlU"}]], "prev_state": [], "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-468:localhost:8829", "state_key": "@anon-20191002_181700-468:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCnMyV7O/WXF2oXQuhYgS+aC8nyey7RUqMO6UEbOVMqUWVS2gYwIzEOlID1kyd3RGJsDUBzcmZHonNBfMohECg"}, "localhost:8829": {"ed25519:a_UxIG": "xKvc6gspRmkvzmJg/bpiAtxjKvNq1G2E114vSwbKZzrYAA/QwbwQSW7hiS5jzHN3+0GuAFKshkC519SXk5QkDQ"}}, "unsigned": {"age": 103, "replaces_state": "$1570042716222nflqt:localhost:8800"}};IQQa $1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2516}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042712218KQzXb:localhost:8800", {"sha256": "DuTmsCvTb/FCBjn9+mYjgqOvqRep4heZQ2p+JshqIY4"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042715221Amlxc:localhost:8800", {"sha256": "zFtglByrfEK2ieH//lK1J+1qsmDPyGdVUrPKZf2h7Bc"}]], "type": "m.room.member", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-468", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-468:localhost:8829", "event_id": "$1570042716222nflqt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042716147, "hashes": {"sha256": "zpyTy7UtoMhRw4N4pb807oN7QTTidxdlx3F7BtHX/Jo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gbY8jVdwOTQbCiW1DZwMcSOrHJiWsvXnFMGEEcTABjf0YHUJJgMayQVCIEWzbyhU//XyRy055bf4wxtVWDyWAg"}, "localhost:8829": {"ed25519:a_UxIG": "kOK6gK/Hh8aTpWXnnkoJjThEs5NSwLBmP0ywWAR07kC/QIES2ecmRbLLY/CUHepbbVyZ9fmRr2YRqn9ZMI3mDA"}}, "unsigned": {"age_ts": 1570042716147, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-467:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-467:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-467", "avatar_url": null}, "sender": "@anon-20191002_181700-467:localhost:8800"}]}} $&N x 3 Y   8^=cBh%h.MQQ$15700427368TlZQs:localhost:8829$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800h-MQQ$15700427368TlZQs:localhost:8829$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800h,MQQ$15700427368TlZQs:localhost:8829$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j+QQQ$1570042734247SfTxR:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j*QQQ$1570042734247SfTxR:localhost:8800$1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j)QQQ$1570042734247SfTxR:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j(QQQ$1570042734247SfTxR:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j'QQQ$1570042733246cYViL:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j&QQQ$1570042733246cYViL:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j%QQQ$1570042733246cYViL:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j$QQQ$1570042733245smHTZ:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j#QQQ$1570042733245smHTZ:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j"QQQ$1570042733245smHTZ:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j!QQQ$1570042732244zDmQh:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j QQQ$1570042732244zDmQh:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800jQQQ$1570042731243YuOkC:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722229ehxUl:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722229ehxUl:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722229ehxUl:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722228QkARL:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722228QkARL:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722228QkARL:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042721227mhNwo:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042721227mhNwo:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042720226wSTBF:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042716222nflqt:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042716222nflqt:localhost:8800$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042716222nflqt:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800 n unMQQa) $1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2520}{"auth_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}]], "prev_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}]], "type": "m.room.member", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-469", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-469:localhost:8800", "event_id": "$1570042720226wSTBF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042720474, "hashes": {"sha256": "RBHKIpa8N/lWXbudcYdk3mfrrAzCD4ehaqoLoVfHZgY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Um9F/nmTMI5MwxquBchbpVH0XSht4OZjkjHfSb7iZERcD/Yrt63cbU5PJYKRRA4EBb7P7mlDXbPWlZf/vIZ7AQ"}}, "unsigned": {"age_ts": 1570042720474}}LQQaC $1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2519}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-469:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042719225dSNgP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042719530, "hashes": {"sha256": "YQo9X6bXvcsoNjXeQtb4v8ZN4Iqt3rst7wPJUpZweHs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sZVkU6jzfxOGyipmaqS9zUtU5qux0E0IEc8QBwgxnB3NZzFEMMvBbsjCLA7F3FSvC07LYUobsQMUBLHW2t4SDg"}}, "unsigned": {"age_ts": 1570042719530}}sKQQe $1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "txn_id": "472", "stream_ordering": 2518}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$15700427177BOUHn:localhost:8829", {"sha256": "y8gzYHQhR5/P0IVeURgitS25wS3tqgk7OylE+hsb6I0"}]], "type": "m.room.message", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042718224MBWNJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042718116, "hashes": {"sha256": "5CrFRE1h8JQJf8QYYvr43/YptpDf76pnwb6jrBAw0/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sju/J52NRx+Fsks5HjVS184AuPcEy5ET9QNl8idcBvHpKe2WiT8iDiuxB4k5RGE0RydxvJyEVdB0SC1EPldGCA"}}, "unsigned": {"age_ts": 1570042718116}} i  4 gih51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggago1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTQmFTQF9xWmYxSks7SjsKMDAyZnNpZ25hdHVyZSA4-gzkLZKYXLB46g30xrx2tIZN_FnuhyntWJJRBiVylQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlMeTIuVWdTdTpEKzFmLloKMDAyZnNpZ25hdHVyZSBbuaigjRLKzptcrlgAHJJ5r_SxDpA6cZWDs2LWx5spbwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ-UHZ1OGYrSF5vamxtST0KMDAyZnNpZ25hdHVyZSByyqu_00ypE6JP2NuI0vdtntNW8bwA8GIuJndn3cBSyAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAo Ne`8qJ" [e 3 l D  } V .  h @  z R * b:rJ"Z2 jC{T-'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800^&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800:'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800`&Q!itKDOCtoMkFUETDtle:localhost:8800a'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800 'Q!iTQSCiLqRMDtgXtUdC:localhost:8800:'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800('Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:88008'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800('Q!gXfXRDTXeVvOHQdaaQ:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800('Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88004'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:88005'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88002&Q!edbUkYJIZBNOiTuLJs:localhost:88007'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!eLsrBEnrHolwCNgkFW:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:88009'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800w'Q!dvZnfJonDkxlrrDXUk:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:8800%'Q!drnXStKXkNQkouqUAg:localhost:8800*'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800E'Q!dBfASZrfiFeSKTjYJm:localhost:88008'Q!dBfASZrfiFeSKTjYJm:localhost:88007'Q!csWEXfVEVxdviNvgAd:localhost:8800o'Q!csWEXfVEVxdviNvgAd:localhost:8800n'Q!csWEXfVEVxdviNvgAd:localhost:8800m&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800&Q!cSUQGmpIsSCBAVTOHo:localhost:8800/'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cOFSwLSkxZECJMvjjZ:localhost:8800x&Q!cHtqiAyCHEAoBIbCmL:localhost:8800M'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800n #$H l " F j Dh Dh IEeeQ$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800iOOQ$157004274411xArrT:localhost:8829$157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800hOMQ$157004274310jCQYA:localhost:8829$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800iMQQ$15700427439Hwxyi:localhost:8829$1570042742256IYRor:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800kQQQ$1570042742256IYRor:localhost:8800$1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042742255yQzPA:localhost:8800$1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042741254DKIYz:localhost:8800$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042740253GkWgu:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042739252bWghU:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042738251iukAg:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800iMQQ$15700427368TlZQs:localhost:8829$1570042735248drnws:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042735248drnws:localhost:8800$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042734247SfTxR:localhost:8800$1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042733246cYViL:localhost:8800$1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042733245smHTZ:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042732244zDmQh:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042731243YuOkC:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042729241UUSiz:localhost:8800$1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kQQQ$1570042729240aBRvS:localhost:8800$1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kQQQ$1570042728239BMOBm:localhost:8800$1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k~QQQ$1570042728238dtqIB:localhost:8800$1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k}QQQ$1570042727237iUlYB:localhost:8800$1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k|QQQ$1570042727236AOaiE:localhost:8800$1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k{QQQ$1570042726235bahBo:localhost:8800$1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kzQQQ$1570042726234miteq:localhost:8800$1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kyQQQ$1570042725233SjCnf:localhost:8800$1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kxQQQ$1570042725232UzIHq:localhost:8800$1570042724231dYSEq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kwQQQ$1570042724231dYSEq:localhost:8800$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kvQQQ$1570042723230DFoyn:localhost:8800$1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kuQQQ$1570042722229ehxUl:localhost:8800$1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800ktQQQ$1570042722228QkARL:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800ksQQQ$1570042721227mhNwo:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800krQQQ$1570042720226wSTBF:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800  fxPQQa $1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2523}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042722228QkARL:localhost:8800", {"sha256": "hzMNgAcG2hkOREt2ppBtwiXxqO5awf+eMIQ3W7GP9zs"}]], "type": "m.room.history_visibility", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042722229ehxUl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042722893, "hashes": {"sha256": "v2Afq7Ys1geMic2wH4Vw9pXbcVG1DODs974cvemlasA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tVEsJuMSLinCo3uI4RJehPCdTBLn8Y1TeBksm6c7u5CgSZwHg+o9jczvsDxbuN13i1zeZMpT1omHl/kfzCmABQ"}}, "unsigned": {"age_ts": 1570042722893}}gOQQaq $1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2522}{"auth_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}], ["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}]], "prev_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}]], "type": "m.room.join_rules", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042722228QkARL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042722143, "hashes": {"sha256": "P1eJB4CQh/0pFlSmzejSo34N/kJFVIkuG6WaAGrxvio"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RmBzRMxk++NqUOrD1WWSvzT0MwgN3zIOKHOCs4TZNdHDu/LRmfwgF1s6PqDU+33uggsPxILCZQKqK1llsH9MBA"}}, "unsigned": {"age_ts": 1570042722143}}+NQQay $1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2521}{"auth_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "type": "m.room.power_levels", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"users": {"@anon-20191002_181700-469:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042721227mhNwo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042721353, "hashes": {"sha256": "YD553ul2wVzO70+juh5ZpRnzN5znbT7KjCwjMpTGb3Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kh/ylp6DJ+R8SVnSnqLgpNKx2emATwSJzczSzxUP0VF2YnIUFdDgoQYvAhNX1ZyRSMdXJ8N4VGdSgVes0TxvBg"}}, "unsigned": {"age_ts": 1570042721353}} "8W p  #  ; y $HSx'2 \Q']eM!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Yc[Q' eL!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 ZQ']eK!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888rYQ))eJ!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4oXQ? eI!yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibility$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEgWQ/ eH!yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rules$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uolVQ9 eG!yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_alias$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIiUQ3 eF!yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg TQ']eE!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMcSQ' eD!yAzXcNLHMuqFOcOexj:localhost:8800m.room.create$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZooRQ? eC!tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEogQQ/ eB!tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rules$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkiPQ3 eA!tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE OQ']e@!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIcNQ' e?!tLkhTnTgDjjAvscRkW:localhost:8800m.room.create$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQMQ']M>!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$15700427439Hwxyi:localhost:8829LQ']Q=!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$1570042743257eDQlw:localhost:8800KQ']QQ' Q/!WhLedNwPGGGTtqeqam:localhost:8800m.room.create$1570042730242eYFxu:localhost:8800=Q']Q.!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829$1570042723230DFoyn:localhost:8800e<Q? Q-!yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility$1570042722229ehxUl:localhost:8800];Q/ Q,!yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules$1570042722228QkARL:localhost:8800 uV@ i T~v4unf ^ a V \??Q$59_msg_d:localhost:42455$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800 eeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800 فeeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800 ӁeeQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800ReeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800peeQ$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800peeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800-eeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800KeeQ$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800 *eeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800 _3QQ$56:localhost:42455$1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 _3QQ$55:localhost:42455$1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800 _3QQ$54:localhost:42455$1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 P33Q$53:localhost:42455$52:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 eeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800 6eeQ$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800 P33Q$53:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 _3QQ$53:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 eeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800P33Q$52:localhost:42455$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 P33Q$52:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 _3QQ$52:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 _3QQ$50:localhost:42455$1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 ;RQQa $1570042724231dYSEq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2525}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042723230DFoyn:localhost:8800", {"sha256": "yasMUNJCLgoU0UV+ms0Mg8yr21TIKHSWDbsdlUA9Da0"}]], "type": "m.room.test", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042724231dYSEq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042724644, "hashes": {"sha256": "UP7C6RQ6Tuh3tCXh+aFrVzesWbghyC6Otw8wtaqnbvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zUI9vU5dNstv21e/XEgmv5wTk7qipv9Nj72c9wMxzezUBYbgOK781iEg/h4tF2ZORSRTiH2n5sflH1V3yOdvAQ"}}, "unsigned": {"age_ts": 1570042724644}};QQQa $1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2524}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042722228QkARL:localhost:8800", {"sha256": "hzMNgAcG2hkOREt2ppBtwiXxqO5awf+eMIQ3W7GP9zs"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042722229ehxUl:localhost:8800", {"sha256": "5lV3w3l90NrPAG+aNtswiLH/8dkQEQXp8ajQUOBQEHs"}]], "type": "m.room.member", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-470", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-470:localhost:8829", "event_id": "$1570042723230DFoyn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042723982, "hashes": {"sha256": "FpfnxzNRMqJbPVroDpSN+x5TSKkz76FXFI00FhfRBxY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whwZCS3NY5a/AlOHyGOS/mKkIpHwCtcGfxQUOJMtOk3MLldYjWrU/pQNrnN6Ju320Zo8jo217E0oKYqqQUn9BA"}, "localhost:8829": {"ed25519:a_UxIG": "QJlCCex5SxxK4BDhDg2osKwWjYuNpCUenr3Atpp4jstlVJixFlrcspNy9plIwuXxCJDOjPpoI8qM4XeO3U/tCQ"}}, "unsigned": {"age_ts": 1570042723982, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-469:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-469:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-469", "avatar_url": null}, "sender": "@anon-20191002_181700-469:localhost:8800"}]}} v }vUQQ $1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "475", "stream_ordering": 2528}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042725233SjCnf:localhost:8800", {"sha256": "4PaOot8BsMON7SQ82iPtjBbUa92Uzi7uP5xAQvo8T0g"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042726234miteq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042726335, "hashes": {"sha256": "PtOq4ihQbVuN2a0Swdwu2i3S4NAgg6fl8llxnUKKlSs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xIRYJacvAVMf7hjlb4ql4H0IA1a9A66Mvzd5hm7ytQOQxYK/b/ZM8nLs6avUojzZJb/OR8apenHOVbwhYkBdBQ"}}, "unsigned": {"age_ts": 1570042726335}}TQQ} $1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "474", "stream_ordering": 2527}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042725232UzIHq:localhost:8800", {"sha256": "bRsq/AEUBKZLao9wqPFCaej4Q5Uqkowpr2t1Tg8RFvg"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "event_id": "$1570042725233SjCnf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042725857, "hashes": {"sha256": "Rf0Ukm13eE4/6os9hUo8lLspCku2Up3AMd+DqalscEI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9zhci4tpXBiYY/UwwH+5l4vEFWhGaQ6GSTvTq8U12GbllbT1QrD9FOELs5nlGZ1SORxRhJXWhvX+rAcdlNRKDg"}}, "unsigned": {"age_ts": 1570042725857}}SQQ} $1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "473", "stream_ordering": 2526}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042724231dYSEq:localhost:8800", {"sha256": "i4W8uQV5xaIsZHlEo3U93luZXnmu7LqgA97Mdp5yflQ"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "event_id": "$1570042725232UzIHq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042725088, "hashes": {"sha256": "X50EJgQ/IosTZnn2EHYzUDfZJyYYPW7W++ZTWCUMYsM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L9bkgHkwFLJN2Vy9Bg89mDZNmqs9wOn9MPwC3wwUG1nRGwpY44Y/Uxkpc7jNANEyWcPBUo6KJ74xUT80RBrnAg"}}, "unsigned": {"age_ts": 1570042725088}} t |t[QQ $1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "481", "stream_ordering": 2534}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042728239BMOBm:localhost:8800", {"sha256": "zvVejCcSwkV8X5WKkLOFtlOSHH28iCBMGIYohVpeKFU"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 16, "prev_state": [], "event_id": "$1570042729240aBRvS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042729110, "hashes": {"sha256": "MywiMr48z3vPiMiezgKIpWw8KB3Ydg7QTOQc062pJgM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wKbJAOxp7Mbtkw0nYCpIbzhK87ct0p2FfWNd9o2TJu2W3zHbJnaf+1qFIdk4JZtCsLZU+zxAZFUEywcK34VcDw"}}, "unsigned": {"age_ts": 1570042729110}}ZQQ $1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "480", "stream_ordering": 2533}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042728238dtqIB:localhost:8800", {"sha256": "gs5h9nJNRqJRp/IDU2CSgNEso0n1M2QhOjv0sdED2nw"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 8"}, "depth": 15, "prev_state": [], "event_id": "$1570042728239BMOBm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042728670, "hashes": {"sha256": "YEtgtti0a3w7cMm6eG0Pliyo0x8ngbZnXgk9IpjKNsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3VR93gHCTOJkwCTD+mQaRdNeXxw/mJDjHgqebVhseEmV+ibOgLRFA3rkrBSQQzZU5ALyyu1vrzlBF2hOgKOJDA"}}, "unsigned": {"age_ts": 1570042728670}}YQQ $1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "479", "stream_ordering": 2532}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042727237iUlYB:localhost:8800", {"sha256": "qsmYukt89Xcx5maTx0Wmk0gAFlUnhd/fULjBuz//OLQ"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "event_id": "$1570042728238dtqIB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042728228, "hashes": {"sha256": "kGTJCNNJ0drm1biHpOBF5SDE4QEtQscsBYf+YztWYyU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oR6noKs0Zgs60dHvuPU5vWnmh1hqReJOKZ0sM1VcYN/2VxGmdbqHfUetJV462oXmetktJBdMp00uLMilbUGAAA"}}, "unsigned": {"age_ts": 1570042728228}} t |tXQQ $1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "478", "stream_ordering": 2531}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042727236AOaiE:localhost:8800", {"sha256": "ELXefzzWH8HVkrGCSRh8efJDlrJGf7bghx/hX4l82Q0"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 13, "prev_state": [], "event_id": "$1570042727237iUlYB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042727740, "hashes": {"sha256": "/e2O4NzaSeNgBEJ41PbKXJnBUZSI5puoPYKrtvHix1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "09Rw6YCmb3XVN7zfQHcYSwNQWofsWBYCTGH2LdKN1fd6pD8ulqEebIQmV82Q0s4QZeLcXrgX+3OkRCp+QJl+DQ"}}, "unsigned": {"age_ts": 1570042727740}}WQQ $1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "477", "stream_ordering": 2530}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042726235bahBo:localhost:8800", {"sha256": "3QMiTzGJ2BbfgsAhiqfu9WrQhN0HP8nQavGX00cRi/w"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "event_id": "$1570042727236AOaiE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042727259, "hashes": {"sha256": "fimgT6yyMhSoAX/ODuwmOgCF5NqIf8P12rmsjwbau0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z/mhIXk/STUHzVJBOlQAFQWLld63ldhGqksJWYRh5Z8+zldzX1HwgXGUezYOjdTY9AAbDyG0JyPoIw9VM0ONDQ"}}, "unsigned": {"age_ts": 1570042727259}}VQQ $1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "476", "stream_ordering": 2529}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042726234miteq:localhost:8800", {"sha256": "tIO8chnpA5hpZJFyFgeqrsNyrQtjNpRGA3M821xaGHE"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 11, "prev_state": [], "event_id": "$1570042726235bahBo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042726786, "hashes": {"sha256": "MvY4shaOlh4Sxj5EETW8E4Givz8pEVuR/sOUqW+7r0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GHlvY7AJLlvXpmpU7CxhzozElFHSMzI4Y1fSDVgnOC1wjZSr57ytcG0SIT58wSUb8xrhSV1Y4nxrC9mXv3d3BA"}}, "unsigned": {"age_ts": 1570042726786}} e/ ^ + S{Ks3iyO-Q ] $157004274411xArrT:localhost:8829m.room.redaction!kAxKaIQhXTtGFWSUgr:localhost:8800 m m@anon-20191002_181700-474:localhost:8829xO)Q ] $157004274310jCQYA:localhost:8829m.room.message!kAxKaIQhXTtGFWSUgr:localhost:8800 m m@anon-20191002_181700-474:localhost:8829wM'Q ]$15700427439Hwxyi:localhost:8829m.room.member!kAxKaIQhXTtGFWSUgr:localhost:8800m 5m @anon-20191002_181700-474:localhost:8829vQ#Q ]$1570042742256IYRor:localhost:8800m.room.test!kAxKaIQhXTtGFWSUgr:localhost:8800mDmH@anon-20191002_181700-473:localhost:8800uQ'Q ]$1570042742255yQzPA:localhost:8800m.room.member!kAxKaIQhXTtGFWSUgr:localhost:8800mm-@anon-20191002_181700-473:localhost:8800"tQ?Q ]$1570042741254DKIYz:localhost:8800m.room.history_visibility!kAxKaIQhXTtGFWSUgr:localhost:8800m$m0@anon-20191002_181700-473:localhost:8800sQ/Q ]$1570042740253GkWgu:localhost:8800m.room.join_rules!kAxKaIQhXTtGFWSUgr:localhost:8800mMm@anon-20191002_181700-473:localhost:8800rQ3Q ]$1570042739252bWghU:localhost:8800m.room.power_levels!kAxKaIQhXTtGFWSUgr:localhost:8800mm,@anon-20191002_181700-473:localhost:8800qQ'Q ]$1570042738251iukAg:localhost:8800m.room.member!kAxKaIQhXTtGFWSUgr:localhost:8800mm@anon-20191002_181700-473:localhost:8800p Q'Q  ]$1570042737250jmxWx:localhost:8800m.room.create!kAxKaIQhXTtGFWSUgr:localhost:8800mmw@anon-20191002_181700-473:localhost:8800oM'Q ]$15700427368TlZQs:localhost:8829m.room.member!WhLedNwPGGGTtqeqam:localhost:8800m_mT@anon-20191002_181700-472:localhost:8829nQ#Q ]$1570042735248drnws:localhost:8800m.room.test!WhLedNwPGGGTtqeqam:localhost:8800mmms@anon-20191002_181700-471:localhost:8800mQ'Q ]$1570042734247SfTxR:localhost:8800m.room.member!WhLedNwPGGGTtqeqam:localhost:8800mm[@anon-20191002_181700-471:localhost:8800"lQ?Q ]$1570042733246cYViL:localhost:8800m.room.history_visibility!WhLedNwPGGGTtqeqam:localhost:8800mnm6@anon-20191002_181700-471:localhost:8800kQ/Q ]$1570042733245smHTZ:localhost:8800m.room.join_rules!WhLedNwPGGGTtqeqam:localhost:8800m m}@anon-20191002_181700-471:localhost:8800jQ3Q ]$1570042732244zDmQh:localhost:8800m.room.power_levels!WhLedNwPGGGTtqeqam:localhost:8800mim@anon-20191002_181700-471:localhost:8800iQ'Q ]$1570042731243YuOkC:localhost:8800m.room.member!WhLedNwPGGGTtqeqam:localhost:8800mCmܱ@anon-20191002_181700-471:localhost:8800h Q'Q  ]$1570042730242eYFxu:localhost:8800m.room.create!WhLedNwPGGGTtqeqam:localhost:8800mزm>@anon-20191002_181700-471:localhost:8800gQ)Q ]$1570042729241UUSiz:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800m@m@anon-20191002_181700-469:localhost:8800fQ)Q ]$1570042729240aBRvS:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800mҖmҟ@anon-20191002_181700-469:localhost:8800eQ)Q ]$1570042728239BMOBm:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800mm@anon-20191002_181700-469:localhost:8800dQ)Q ]$1570042728238dtqIB:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800m$m,@anon-20191002_181700-469:localhost:8800cQ)Q ] $1570042727237iUlYB:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 m<m@@anon-20191002_181700-469:localhost:8800bQ)Q ] $1570042727236AOaiE:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 m[mc@anon-20191002_181700-469:localhost:8800aQ)Q ] $1570042726235bahBo:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 mɂmɊ@anon-20191002_181700-469:localhost:8800 ` {g`^QQa) $1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2537}{"auth_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}]], "prev_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}]], "type": "m.room.member", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-471", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-471:localhost:8800", "event_id": "$1570042731243YuOkC:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042731587, "hashes": {"sha256": "EETWucIGLcP5Si4porKk83i6mbVguKw8EZn2EPBhkVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iNPzKsElIfxXR7yNpGCzp++IfvLIOwXJqE4BYqVase3rrf9zi3lYm7dTggumPW3Y4f9T617r7i/30O20Fk8dCw"}}, "unsigned": {"age_ts": 1570042731587}}]QQaC $1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2536}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-471:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042730242eYFxu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042730674, "hashes": {"sha256": "1hagvOA7dmHlBL7FRTnygMDd2Zgg7yDIqz6Ca1CWgr4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CUrRZQSHn1lGRN4je2hjx0f1+N6hKDMh9aP+UlRsjsWK25whVoJO+E/gjBEhrffPXuENKJE6/JAVP6Ht4Qn9BA"}}, "unsigned": {"age_ts": 1570042730674}}\QQ $1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "482", "stream_ordering": 2535}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042729240aBRvS:localhost:8800", {"sha256": "/yOZ1ib0+sJUTpV4BbkVPCuO4ef6MpTVFndmDe9Yvp4"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "event_id": "$1570042729241UUSiz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042729536, "hashes": {"sha256": "yfbBTHA8PQKmhnV3fz57KSr+ixhbjzU0xGinMwhCbm0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ixUkWdHeEtBCqK6Cy3cvqgjmvNvwtu2oXKXaWP6fhNGEJlfcRP5/IvPmyxqpt5BLoJRokBblQ4AesNz8YUtaDg"}}, "unsigned": {"age_ts": 1570042729536}} =uY Us: X  t ;  Y u <  X t;Wu<Xt;u<X!8]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHT68]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZ8]!@anon-20191002_181700-534:localhost:8800FBPWXONJWM8]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRP8]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS8]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYK6[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBS8]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOL8]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXT58]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPR48]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ38]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAU28]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVE18]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYC08]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHR/8]!@anon-20191002_181700-584:localhost:8800FZKRURXWXE.8]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDME-8]!@anon-20191002_181700-582:localhost:8800WSKNBNWTAR,8]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZ+8]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOP*6[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOW8]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBR)8]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSN(8]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJB'8]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAU&8]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOX%8]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQN$8]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQ#8]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPP"8]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTM!8]!@anon-20191002_181700-570:localhost:8800ECXFORDQSP 8]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQ8]!@anon-20191002_181700-568:localhost:8800IRGUUINXHF8]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNL8]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKF8]!@anon-20191002_181700-565:localhost:8800MSICJQZBGX8]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZ8]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOM8]!@anon-20191002_181700-562:localhost:8800RUCUWRMARX8]!@anon-20191002_181700-561:localhost:8800YQDTZKECLG8]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEE6[!@anon-20191002_181700-55:localhost:8800GJICSOZSSMV8]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLS8]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDA8]!@anon-20191002_181700-556:localhost:8800TMQBHREBEO8]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ8]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXS8]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBU8]!@anon-20191002_181700-551:localhost:8800PDLFVATDIV8]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVR6[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGU8]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO 8]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCC 8]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOV 8]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSK 8]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ 6[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNT8]!@anon-20191002_181700-539:localhost:8800OLXWQXBCRO8]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ8]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ8]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ Cf R v XD , & fMT` "=j/ o   _ Z(?9 2 j9q w1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY d21e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew0e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgy1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4y1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza01e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64G1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwo1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMe1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE70e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8s0e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM40e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8{1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO40e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg11e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao]1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY01e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4 1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIg0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7881e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc}1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok 21e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQn 0e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw~1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Ec1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4T1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQN1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kB1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U^1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg 1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs_1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIP21e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00J1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc.1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAn1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU81e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo|1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUV0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E  fxaQQa $1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2540}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042733245smHTZ:localhost:8800", {"sha256": "hAa3eSsjXHSEZOOBLw6WFXYcONkPuzLE1lDw+0Fqp0M"}]], "type": "m.room.history_visibility", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042733246cYViL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042733678, "hashes": {"sha256": "EWzG5QktwWlv6faESXveWD5stGJOiXUUIDwdUtuNqWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e55IEC4z8HgQ8HjEkRXdXoLLc7HhWDl870pMPQXJeIdZggNTMydgoEu2miPa9msJXh1lDtXHXRZ/8FWMSCW5Cg"}}, "unsigned": {"age_ts": 1570042733678}}g`QQaq $1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2539}{"auth_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}], ["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}]], "prev_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}]], "type": "m.room.join_rules", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042733245smHTZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042733069, "hashes": {"sha256": "VmhwNwA4i5+U5a2WrcLt6Q2J+s28cxQOoQkheCWntnw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tw4pd6ExBNmdOtFreqFEIUREkkkH8vXakgHncinrWd+5gQMyUyObLYwH42Gq4OutC6sWtwbqdh2KgKdt79x1Cg"}}, "unsigned": {"age_ts": 1570042733069}}+_QQay $1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2538}{"auth_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "type": "m.room.power_levels", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"users": {"@anon-20191002_181700-471:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042732244zDmQh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042732393, "hashes": {"sha256": "ohEK/JNWxVYIKRhkxmrbGDasBvcuavISR1kClmElmnA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f6iIIp/RwWKFXrcw+s3ybTpO9yI/8vXgEvX0IA1z5EqfLcaeKRP1iji4hUXjLsqYn2+eD1J8E6jmRRwpvSEIAw"}}, "unsigned": {"age_ts": 1570042732393}} "> \  2 ; cr3P_h& g eQ3 $LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels eQ']$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800aeQ' $pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800m.room.create eQ']$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800 eQ']$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800geQ3 $XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_accessmeQ? $mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibilityeeQ/ $QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rulesgeQ3 $ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels eQ']$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800aeQ' $WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create eQ']$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800peQ))$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800meQ? $7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibilityeeQ/ $cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rulesjeQ9 $A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_aliasgeQ3 $v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels eQ']$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800aeQ' $KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.createm eQ? $YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibilitye eQ/ $Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rulesg eQ3 $0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels eQ']$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800a eQ' $7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800m.room.create}MQ']$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829QQ']$1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829cQQ? $1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibility[QQ/ $1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rules]QQ3 $1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levelsQQ']$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800WQQ' $1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.create}MQ']$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829QQ']$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829cQQ? $1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibility /f4 M i  o  j  e ` [VQLGB=TWQe !DqxFmsXPclgGqpSwdy:localhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwTVQe !DqxFmsXPclgGqpSwdy:localhost:8800$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8TUQe !DqxFmsXPclgGqpSwdy:localhost:8800$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyITTQe !DqxFmsXPclgGqpSwdy:localhost:8800$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YTSQe !DqxFmsXPclgGqpSwdy:localhost:8800$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50TRQe !DqxFmsXPclgGqpSwdy:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4TQQe !DqxFmsXPclgGqpSwdy:localhost:8800$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sTPQe !uqIEMXzdeNeXdJmuwh:localhost:8800$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8TOQe !uqIEMXzdeNeXdJmuwh:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wTNQe !uqIEMXzdeNeXdJmuwh:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcTMQe !uqIEMXzdeNeXdJmuwh:localhost:8800$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgTLQe !uqIEMXzdeNeXdJmuwh:localhost:8800$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8TKQe !uqIEMXzdeNeXdJmuwh:localhost:8800$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkTJQe !uqIEMXzdeNeXdJmuwh:localhost:8800$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYTIQe !uqIEMXzdeNeXdJmuwh:localhost:8800$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0THQe !uqIEMXzdeNeXdJmuwh:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YTGQe !uqIEMXzdeNeXdJmuwh:localhost:8800$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0TFQe !yAzXcNLHMuqFOcOexj:localhost:8800$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0VoTEQe !yAzXcNLHMuqFOcOexj:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888TDQe !yAzXcNLHMuqFOcOexj:localhost:8800$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8TCQe !yAzXcNLHMuqFOcOexj:localhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4TBQe !yAzXcNLHMuqFOcOexj:localhost:8800$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXETAQe !yAzXcNLHMuqFOcOexj:localhost:8800$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uoT@Qe !yAzXcNLHMuqFOcOexj:localhost:8800$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIT?Qe !yAzXcNLHMuqFOcOexj:localhost:8800$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgT>Qe !yAzXcNLHMuqFOcOexj:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMT=Qe !yAzXcNLHMuqFOcOexj:localhost:8800$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZoT<Qe !tLkhTnTgDjjAvscRkW:localhost:8800$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7FkT;Qe !tLkhTnTgDjjAvscRkW:localhost:8800$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUT:Qe !tLkhTnTgDjjAvscRkW:localhost:8800$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEoT9Qe !tLkhTnTgDjjAvscRkW:localhost:8800$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkT8Qe !tLkhTnTgDjjAvscRkW:localhost:8800$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBET7Qe !tLkhTnTgDjjAvscRkW:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIT6Qe !tLkhTnTgDjjAvscRkW:localhost:8800$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQI5QO !kAxKaIQhXTtGFWSUgr:localhost:8800$157004274411xArrT:localhost:8829I4QO !kAxKaIQhXTtGFWSUgr:localhost:8800$157004274310jCQYA:localhost:8829H3QM !kAxKaIQhXTtGFWSUgr:localhost:8800$15700427439Hwxyi:localhost:8829J2QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042742256IYRor:localhost:8800J1QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042742255yQzPA:localhost:8800J0QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042741254DKIYz:localhost:8800J/QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042740253GkWgu:localhost:8800J.QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042739252bWghU:localhost:8800J-QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042738251iukAg:localhost:8800J,QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042737250jmxWx:localhost:8800H+QM !WhLedNwPGGGTtqeqam:localhost:8800$15700427368TlZQs:localhost:8829J*QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042735248drnws:localhost:8800J)QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042734247SfTxR:localhost:8800 ;cQQa $1570042735248drnws:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2542}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042734247SfTxR:localhost:8800", {"sha256": "RLL+rHSdxGCpKbZookijGOBi6+mlUpmhVoieMTxOjI4"}]], "type": "m.room.test", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042735248drnws:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042735725, "hashes": {"sha256": "IOcrVxPLw4LZf5/jJnTTa1aft2FH+mawK5+gIujlrdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NdVt6gU/OeuzU2A8baQ121/CW2jgK3ggLPMs+7u8KyM+T2Rl+vcn3z7Eb/AKFIR/WrY/rwFF9j1RciRivxPWCQ"}}, "unsigned": {"age_ts": 1570042735725}};bQQa $1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2541}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042733245smHTZ:localhost:8800", {"sha256": "hAa3eSsjXHSEZOOBLw6WFXYcONkPuzLE1lDw+0Fqp0M"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042733246cYViL:localhost:8800", {"sha256": "5+SkIkU2WvCmvdRboW6wUatuPBHntkCuIo7MLHrswRA"}]], "type": "m.room.member", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-472", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-472:localhost:8829", "event_id": "$1570042734247SfTxR:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042734799, "hashes": {"sha256": "xGjpZfM2y80O2G+DR2Oxsykoc1Q8BMcSPxsKQ2UweZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/AA+wwd1u7Y5zA7LHH43ODS8ptG7PfowUWOG2yfgQLbCtB1ixWwMWLNLxKdd6FbYVInYGyP7dAm5VGwDztOnAA"}, "localhost:8829": {"ed25519:a_UxIG": "X3U14gKNH0O46FuipjadQfqxLefGRFgsvSkwbG6LM4j1i/lgD4zHLfMfwN3BfZZbRjRW9OK6bXVoXYXu0AimDw"}}, "unsigned": {"age_ts": 1570042734799, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-471:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-471:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-471", "avatar_url": null}, "sender": "@anon-20191002_181700-471:localhost:8800"}]}} Rk,L  ~ ? k j O , z _ <h) P`I i*y\kK0  , z _ <   pM] $ 3 hm.room.power_levelsw>']!m.room.member@anon-20191002_181700-467:localhost:88000%))Zm.room.aliaseslocalhost:8800i"? Ym.room.history_visibilityh/ Xm.room.join_rulesg9 Wm.room.canonical_aliasf3 Vm.room.power_levelse>']Um.room.member@anon-20191002_181700-480:localhost:8800d' Tm.room.createc>']Sm.room.member@anon-20191002_181700-479:localhost:8800b>']Rm.room.member@anon-20191002_181700-479:localhost:8800a3 Qm.room.guest_access`"? Pm.room.history_visibility_/ Om.room.join_rules^3 Nm.room.power_levels]>']Mm.room.member@anon-20191002_181700-478:localhost:8800\' Lm.room.create[>']Km.room.member@anon-20191002_181700-477:localhost:8800Z%))Jm.room.aliaseslocalhost:8800Y"? Im.room.history_visibilityX/ Hm.room.join_rulesW9 Gm.room.canonical_aliasV3 Fm.room.power_levelsU>']Em.room.member@anon-20191002_181700-476:localhost:8800T' Dm.room.createS"? Cm.room.history_visibilityR/ Bm.room.join_rulesQ3 Am.room.power_levelsP>']@m.room.member@anon-20191002_181700-475:localhost:8800O' ?m.room.createN>']>m.room.member@anon-20191002_181700-474:localhost:8829M>']=m.room.member@anon-20191002_181700-474:localhost:8829L>']']8m.room.member@anon-20191002_181700-473:localhost:8800G' 7m.room.createF>']6m.room.member@anon-20191002_181700-472:localhost:8829E>']5m.room.member@anon-20191002_181700-472:localhost:8829D>']4m.room.member@anon-20191002_181700-472:localhost:8829C"? 3m.room.history_visibilityB/ 2m.room.join_rulesA3 1m.room.power_levels@>']0m.room.member@anon-20191002_181700-471:localhost:8800?' /m.room.create>>'].m.room.member@anon-20191002_181700-470:localhost:8829="? -m.room.history_visibility</ ,m.room.join_rules;3 +m.room.power_levels:N' fm.room.createu>']dm.room.member@anon-20191002_181700-483:localhost:8829s>']cm.room.member@anon-20191002_181700-483:localhost:8829r3 bm.room.guest_accessq"? am.room.history_visibilityp/ `m.room.join_ruleso3 _m.room.power_levelsn>']^m.room.member@anon-20191002_181700-482:localhost:8800m' ]m.room.createl>']\m.room.member@anon-20191002_181700-481:localhost:8829k>'][m.room.member@anon-20191002_181700-481:localhost:8829j>']*m.room.member@anon-20191002_181700-469:localhost:88009' )m.room.create8>'](m.room.member@anon-20191002_181700-468:localhost:88297>']'m.room.member@anon-20191002_181700-468:localhost:88296>']&m.room.member@anon-20191002_181700-468:localhost:882953 %m.room.guest_access4"? $m.room.history_visibility3/ #m.room.join_rules23 "m.room.power_levels1'  m.room.create/>']m.room.member@anon-20191002_181700-466:localhost:8829.>']m.room.member@anon-20191002_181700-466:localhost:8829-%))m.room.aliaseslocalhost:8800,"? m.room.history_visibility+/ m.room.join_rules*9 m.room.canonical_alias)3 m.room.power_levels(>']m.room.member@anon-20191002_181700-465:localhost:8800'' m.room.create&>']gm.room.member@anon-20191002_181700-484:localhost:8800v>']em.room.member@anon-20191002_181700-483:localhost:8829t  fQQa) $1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2545}{"auth_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}]], "prev_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}]], "type": "m.room.member", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-473", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-473:localhost:8800", "event_id": "$1570042738251iukAg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042738578, "hashes": {"sha256": "Kfecxv2BtZtbKJc8TzJO49SvbJzz4UlavrnbDLxWbEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jDysgWVYzQadrJt0lg+WM4RPOvNRiZuWp7+HUnFcZ14ujlDmWD1unW+/qxR04BHBR0UMi/YT2XQkYKLU/CzjBQ"}}, "unsigned": {"age_ts": 1570042738578}}eQQaC $1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2544}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-473:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042737250jmxWx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042737649, "hashes": {"sha256": "PbIOjgRW+rE1RqvC45MZ6WI6dwem4b5ucptPM7CGjfw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l+Ow7PqPsSc8u+ytyZsijFMuCnqFjsJkqo89KXJbxQYG21Emp6FnyORhekDkc+lH6YOct5SXRZUZxzjj8o33CQ"}}, "unsigned": {"age_ts": 1570042737649}}3dMQc $15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800{"outlier": false, "stream_ordering": 2543}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042734247SfTxR:localhost:8800", {"sha256": "RLL+rHSdxGCpKbZookijGOBi6+mlUpmhVoieMTxOjI4"}]], "content": {"membership": "leave"}, "depth": 8, "event_id": "$15700427368TlZQs:localhost:8829", "hashes": {"sha256": "aQaSuN6YoHjOERfmp65bjkfNY2sS42uVoR+FV4ETW68"}, "origin": "localhost:8829", "origin_server_ts": 1570042736223, "prev_events": [["$1570042735248drnws:localhost:8800", {"sha256": "1Vi5Y7wFSxI15yZzsYRUMCjLLRJexvQrI2j1MeBJfoo"}]], "prev_state": [], "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-472:localhost:8829", "state_key": "@anon-20191002_181700-472:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PerAFoJDsiginJ6/cPIMo12St1GycIiQmuNnLhlakfjjUm2c/TwRzUy7FKMhWAVS2ly9oeVy1K/Vftrb3D1tDg"}, "localhost:8829": {"ed25519:a_UxIG": "OiproYV02fHewYsSAWhrNiXmzj3vDIR746WJYnEg1tyR97VTXlpfCdwpzAe+rFXx/GXveWCbSGwEc/NLgs4QAw"}}, "unsigned": {"age": 104, "replaces_state": "$1570042734247SfTxR:localhost:8800"}} .f2 C > 9 4 /*|%w rmhc ^TdQed!RSLvuCuAqKQQrKCxNq:localhost:8800$2I6G275l7JkWUBuJkQy5PN+nqKGQgNFjEkJcYKCrbzcTcQec!RSLvuCuAqKQQrKCxNq:localhost:8800$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMTbQeb!RSLvuCuAqKQQrKCxNq:localhost:8800$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjETaQea!RSLvuCuAqKQQrKCxNq:localhost:8800$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8T`Qe`!RSLvuCuAqKQQrKCxNq:localhost:8800$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUT_Qe_!RSLvuCuAqKQQrKCxNq:localhost:8800$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4T^Qe^!RSLvuCuAqKQQrKCxNq:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8UT]Qe]!RSLvuCuAqKQQrKCxNq:localhost:8800$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgT\Qe\!DqxFmsXPclgGqpSwdy:localhost:8800$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+GkT[Qe[!DqxFmsXPclgGqpSwdy:localhost:8800$296DUxyQixT0lQ0odnSMp2FPVx9B3gcT8ETQCdLZ0i8TZQeZ!DqxFmsXPclgGqpSwdy:localhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwTYQeY!DqxFmsXPclgGqpSwdy:localhost:8800$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8TXQeX!DqxFmsXPclgGqpSwdy:localhost:8800$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyITWQeW!DqxFmsXPclgGqpSwdy:localhost:8800$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YTVQeV!DqxFmsXPclgGqpSwdy:localhost:8800$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50TUQeU!DqxFmsXPclgGqpSwdy:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4TTQeT!DqxFmsXPclgGqpSwdy:localhost:8800$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sTSQeS!uqIEMXzdeNeXdJmuwh:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wTRQeR!uqIEMXzdeNeXdJmuwh:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcTQQeQ!uqIEMXzdeNeXdJmuwh:localhost:8800$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8TPQeP!uqIEMXzdeNeXdJmuwh:localhost:8800$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkTOQeO!uqIEMXzdeNeXdJmuwh:localhost:8800$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYTNQeN!uqIEMXzdeNeXdJmuwh:localhost:8800$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0TMQeM!uqIEMXzdeNeXdJmuwh:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YTLQeL!uqIEMXzdeNeXdJmuwh:localhost:8800$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0TKQeK!yAzXcNLHMuqFOcOexj:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888TJQeJ!yAzXcNLHMuqFOcOexj:localhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4TIQeI!yAzXcNLHMuqFOcOexj:localhost:8800$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXETHQeH!yAzXcNLHMuqFOcOexj:localhost:8800$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uoTGQeG!yAzXcNLHMuqFOcOexj:localhost:8800$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtITFQeF!yAzXcNLHMuqFOcOexj:localhost:8800$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgTEQeE!yAzXcNLHMuqFOcOexj:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMTDQeD!yAzXcNLHMuqFOcOexj:localhost:8800$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZoTCQeC!tLkhTnTgDjjAvscRkW:localhost:8800$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEoTBQeB!tLkhTnTgDjjAvscRkW:localhost:8800$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkTAQeA!tLkhTnTgDjjAvscRkW:localhost:8800$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBET@Qe@!tLkhTnTgDjjAvscRkW:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIT?Qe?!tLkhTnTgDjjAvscRkW:localhost:8800$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQH>QM>!kAxKaIQhXTtGFWSUgr:localhost:8800$15700427439Hwxyi:localhost:8829J=QQ=!kAxKaIQhXTtGFWSUgr:localhost:8800$1570042743257eDQlw:localhost:8800J<QQMQQ$15700427439Hwxyi:localhost:8829$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800h=MQQ$15700427439Hwxyi:localhost:8829$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800h<MQQ$15700427439Hwxyi:localhost:8829$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j;QQQ$1570042742255yQzPA:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j:QQQ$1570042742255yQzPA:localhost:8800$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j9QQQ$1570042742255yQzPA:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j8QQQ$1570042742255yQzPA:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j7QQQ$1570042741254DKIYz:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j6QQQ$1570042741254DKIYz:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j5QQQ$1570042741254DKIYz:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j4QQQ$1570042740253GkWgu:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j3QQQ$1570042740253GkWgu:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j2QQQ$1570042740253GkWgu:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j1QQQ$1570042739252bWghU:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j0QQQ$1570042739252bWghU:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j/QQQ$1570042738251iukAg:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800  fxiQQa $1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2548}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042740253GkWgu:localhost:8800", {"sha256": "2CzasJF4E6vMwh3/WH2f9IaJzq6mEhGgY/9VVbmHzhE"}]], "type": "m.room.history_visibility", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042741254DKIYz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042741028, "hashes": {"sha256": "z0mvCSUyO2wq9Aw27EAqmHxR8+RjleNacb4woL46yGs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZT31HJtdRgW5XEqCiMeSHeC7pM28Xx2+MrMPXYu1ITOZglZi0MgX3ySqshSOsbZ5tKAGJDpysEW0vm/m+nEECg"}}, "unsigned": {"age_ts": 1570042741028}}ghQQaq $1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2547}{"auth_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}], ["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}]], "prev_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}]], "type": "m.room.join_rules", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042740253GkWgu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042740045, "hashes": {"sha256": "Ut3FUs3Eva/QJcm8HpRWt3CKF3yT0LZBBd2mdwlbzyY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rGgjragBpvsi3xnLOwoGT/L1z+XjumEs1CNFSEras8i9K6j5t+IcLAXSu1zz9cs7kX1juJ96UBAwFZo5nDpdAQ"}}, "unsigned": {"age_ts": 1570042740045}}+gQQay $1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2546}{"auth_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "type": "m.room.power_levels", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"users": {"@anon-20191002_181700-473:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042739252bWghU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042739402, "hashes": {"sha256": "ODcXwVjNAzujq6xdPVYDzwbtaMNHaWXfWn8YKmLeb2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4bBVqdBo3MEA2EVXCmfYrOS/4chERCWBPgRrX8ixolJn3tF841JvLTHI36P3YUX9bXtrCLZGwjnQF0ugICmDDQ"}}, "unsigned": {"age_ts": 1570042739402}} +eXe^ k x ' 4 A N [ hu$1>Kr!P]Q@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800P]Q@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800P]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800P]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800P]Q@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:8800P]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800P]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800P]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800P]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800P]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800P]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800P]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800P]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800P]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800P]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800P]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800P]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800P]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800P]Q@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800P]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800P]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800P]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800P]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800P]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800P]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800P]Q@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800P]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800P]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800 ;kQQa $1570042742256IYRor:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2550}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042742255yQzPA:localhost:8800", {"sha256": "9Mx92/YJZQO5AEx42oP5bRTtwfLEz5ViZLvyXAmXqlE"}]], "type": "m.room.test", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042742256IYRor:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042742852, "hashes": {"sha256": "dclKTDAzcFkOq9Fa+wrOT+SoO5VdhKSrHnH855zpnWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TxZPYN9NYJKGtBcKrgCbuviH3klKlW/tXXPY9R8IHtaDR8ZEw/GnKUUPcF5QwQDge1cpx9xQubVBqZG+N0OFAw"}}, "unsigned": {"age_ts": 1570042742852}};jQQa $1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2549}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042740253GkWgu:localhost:8800", {"sha256": "2CzasJF4E6vMwh3/WH2f9IaJzq6mEhGgY/9VVbmHzhE"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042741254DKIYz:localhost:8800", {"sha256": "MAl488XWDnuHFQ2rHJuRP17Rcg0w6w/b1SRcqK8Pp+0"}]], "type": "m.room.member", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-474", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-474:localhost:8829", "event_id": "$1570042742255yQzPA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042742199, "hashes": {"sha256": "/ZaHSg1DwXpxD3MkUQeOTJh01FHokH4xCqQW0dh/46M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e27JsmUL0aWomrYe6neiihc5CAwW4YD1ERa//dlo3MQg3ptkpAaYiXpHoXL0QRN+0XO3E8ykssqA5x4tBMt6Dw"}, "localhost:8829": {"ed25519:a_UxIG": "PMsiiwNHolu+8VW//9b/iUg5D6U/6T2ZyGU+Jen5xeuHk7k+XO82pXIV7dM6yj7dk2u935GmOv9Tt33Y3WcfBA"}}, "unsigned": {"age_ts": 1570042742199, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-473:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-473:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-473", "avatar_url": null}, "sender": "@anon-20191002_181700-473:localhost:8800"}]}}  d'mnOQc} $157004274411xArrT:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800{"outlier": false, "stream_ordering": 2553}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$15700427439Hwxyi:localhost:8829", {"sha256": "4ys2gn1WIDuEXa0Gdsp2RgJlg0n0RYYs0oItf4bpJwA"}]], "content": {}, "depth": 10, "event_id": "$157004274411xArrT:localhost:8829", "hashes": {"sha256": "GB1WAyn/LT8T0dS5cKe3MVXmMoPmM08HPItMY8zVy14"}, "origin": "localhost:8829", "origin_server_ts": 1570042744015, "prev_events": [["$157004274310jCQYA:localhost:8829", {"sha256": "YETsPfBusJQcALt/vNoTB0qnp/f4yb7w7bHEPduwRZs"}]], "prev_state": [], "redacts": "$157004274310jCQYA:localhost:8829", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-474:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "6gu+Pz3SPuUvS683+1OlAGi2pDdHefGp5/QmbuS4TVGY/OlG9lbftZ5eYPludkJIxbVluHwV0L1e7V80ssKnBw"}}, "unsigned": {"age_ts": 1570042744015}}&9mOQc $157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800{"outlier": false, "stream_ordering": 2552}{"auth_events": [["$15700427439Hwxyi:localhost:8829", {"sha256": "4ys2gn1WIDuEXa0Gdsp2RgJlg0n0RYYs0oItf4bpJwA"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}]], "content": {}, "depth": 9, "event_id": "$157004274310jCQYA:localhost:8829", "hashes": {"sha256": "eqDEcIpNa6W7DJQ1mpOeHSvnkA6a01EW4T+OZPQu/v8"}, "origin": "localhost:8829", "origin_server_ts": 1570042743998, "prev_events": [["$15700427439Hwxyi:localhost:8829", {"sha256": "4ys2gn1WIDuEXa0Gdsp2RgJlg0n0RYYs0oItf4bpJwA"}]], "prev_state": [], "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-474:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "HJy7M2600BfP3f6McA0RYljceZtd9lLzhZ2nBCO2lVhwHsVBXvYm1etelhA3alEeXLEOuo1cg+oMZ6qfv/GCAA"}}, "unsigned": {"age_ts": 1570042743998}}lMQ1 $15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2551}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042740253GkWgu:localhost:8800", {"sha256": "2CzasJF4E6vMwh3/WH2f9IaJzq6mEhGgY/9VVbmHzhE"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-474", "membership": "join"}, "depth": 8, "event_id": "$15700427439Hwxyi:localhost:8829", "hashes": {"sha256": "V6cKI4UELyaqhZfqRY4V0fd9196feVst8N3Jj7NPrlw"}, "origin": "localhost:8829", "origin_server_ts": 1570042743349, "prev_events": [["$1570042742256IYRor:localhost:8800", {"sha256": "n1jpGYyy31azWJnxGbd/40Tm7WPpOfavd9BlmGHoKbw"}]], "prev_state": [], "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-474:localhost:8829", "state_key": "@anon-20191002_181700-474:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sljJRvDoHMBQY/+y8IILzGB9WtVVBf9tCdL3XLpq9X5/2X8Y5TW6DVj8/P+CQotYDvaagiq0O6rgcz+UfB+ACg"}, "localhost:8829": {"ed25519:a_UxIG": "TwkiRY4cscp0k7ZAVTMB+kalv6uzo2E4tvT+W9tUZrsxgN6z5x015hkWW39ZqVp5FB1ejumKRHllsO87t2RnAw"}}, "unsigned": {"age": 95, "replaces_state": "$1570042742255yQzPA:localhost:8800"}} E~ ) ` D{$]TC? e]]Q=$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8@anon-20191002_181700-489:localhost:8829@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800joinanon-20191002_181700-489E> e]]Q=$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg@anon-20191002_181700-489:localhost:8829@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800inviteanon-20191002_181700-489C= e]]Q=$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM@anon-20191002_181700-488:localhost:8800@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800joinanon-20191002_181700-488,< e]]Q$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ@anon-20191002_181700-487:localhost:8829@anon-20191002_181700-487:localhost:8829!WYyiQAVvitxsLZKVCG:localhost:8800leaveE; e]]Q=$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc@anon-20191002_181700-487:localhost:8829@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800inviteanon-20191002_181700-487C: e]]Q=$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90@anon-20191002_181700-486:localhost:8800@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800joinanon-20191002_181700-486E9 e]]Q=$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU@anon-20191002_181700-485:localhost:8829@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800inviteanon-20191002_181700-485C8 e]]Q=$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM@anon-20191002_181700-484:localhost:8800@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800joinanon-20191002_181700-484C7 e]]Q=$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds@anon-20191002_181700-483:localhost:8829@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:8800joinanon-20191002_181700-483E6 e]]Q=$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM@anon-20191002_181700-483:localhost:8829@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:8800inviteanon-20191002_181700-483C5 e]]Q=$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:8800joinanon-20191002_181700-482C4 e]]Q=$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk@anon-20191002_181700-481:localhost:8829@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:8800joinanon-20191002_181700-481C3 e]]Q=$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4@anon-20191002_181700-480:localhost:8800@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800joinanon-20191002_181700-480C2 e]]Q=$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800joinanon-20191002_181700-479E1 e]]Q=$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800inviteanon-20191002_181700-479C0 e]]Q=$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800joinanon-20191002_181700-478C/ e]]Q=$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888@anon-20191002_181700-477:localhost:8800@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800joinanon-20191002_181700-477C. e]]Q=$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM@anon-20191002_181700-476:localhost:8800@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800joinanon-20191002_181700-476C- e]]Q=$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI@anon-20191002_181700-475:localhost:8800@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800joinanon-20191002_181700-4757, M]]Q=$15700427439Hwxyi:localhost:8829@anon-20191002_181700-474:localhost:8829@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800joinanon-20191002_181700-474 8l D `8V]c!E@anon-20191002_181700-493:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowoGRPWUCANVU127.0.0.1Perl + Net::Async::HTTP/0.44mY?U]c!E@anon-20191002_181700-492:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwoBHHCHVPHQT127.0.0.1Perl + Net::Async::HTTP/0.44mOsT]c!E@anon-20191002_181700-491:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6RgoSADWUTCSYM127.0.0.1Perl + Net::Async::HTTP/0.44m3_S]c!E@anon-20191002_181700-490:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwoYZYHXUDJBU127.0.0.1Perl + Net::Async::HTTP/0.44mփR]c!E@anon-20191002_181700-488:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAoSPGGZQRKHZ127.0.0.1Perl + Net::Async::HTTP/0.44m!Q]c!E@anon-20191002_181700-486:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0woOFHZWZEQDS127.0.0.1Perl + Net::Async::HTTP/0.44mۃP]c!E@anon-20191002_181700-484:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAoFWOSSLYDNU127.0.0.1Perl + Net::Async::HTTP/0.44mײO]c!E@anon-20191002_181700-482:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgoJRYARQINGZ127.0.0.1Perl + Net::Async::HTTP/0.44mאN]c!E@anon-20191002_181700-480:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAoXJOMFBTCLS127.0.0.1Perl + Net::Async::HTTP/0.44mm܃M]c!E@anon-20191002_181700-479:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQoNIEZZMOKPH127.0.0.1Perl + Net::Async::HTTP/0.44mb nL"c  8 Z | /Qs&Hjn!onQQQ$1570043523355SbJjm:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043428320JDiOD:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 nnQQQ$1570043426319TNjnu:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 m^QQ1$1570043392317hujur:localhost:8800$1570043391316OJaBO:localhost:8800!5:localhost:42455 ROQ31$1570043391316OJaBO:localhost:8800$12:localhost:42455!5:localhost:42455 QnQQQ$1570043522354IAAap:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043518351Popej:localhost:8800$1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043517350ncbDd:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043517349uVTMj:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043516348vThZG:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043506346EEQDj:localhost:8800$1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043504345DCjlJ:localhost:8800$1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043503344dJwGF:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043503343snlnn:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043502342mVJmO:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043486339YbYQQ:localhost:8800$1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043485338vbLwS:localhost:8800$1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043484337ylFDA:localhost:8800$1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043484336qKOPD:localhost:8800$1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043483335oDIDb:localhost:8800$1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043483334ejWtI:localhost:8800$1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043482333DxDEq:localhost:8800$1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043481332XroCo:localhost:8800$1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043481331UNaWT:localhost:8800$1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043480330seKnV:localhost:8800$1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043479329kvsXb:localhost:8800$1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043478328DMkRS:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043477327AgpMM:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043477326hyTqo:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 OQ31$1570043468324DLhaB:localhost:8800$28:localhost:42455!6:localhost:42455 nQQQ$1570043429322ZfcNc:localhost:8800$1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 pnQQQ$1570043428321klTqJ:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 o   *treQau$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2557}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE"], "type": "m.room.join_rules", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042748474, "hashes": {"sha256": "+RaAbjopD7dC/jpcoGsCHqPnEOhhwTPu888xlSJUs4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AFVyLA6w/dDf6gFWOshl/0wzqbo11uWYRVQVYxOClx2QBCy/LXtMbk5lEP1Jx02E4pVtX9r5l1etPwYrzWwIAw"}}, "unsigned": {"age_ts": 1570042748474}}kqeQac$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2556}{"auth_events": ["$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "type": "m.room.power_levels", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"users": {"@anon-20191002_181700-475:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042747794, "hashes": {"sha256": "H4Yxd15EV/u8pDjC0UOTqbq1mUWqY2K6q2OACjP+SAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zQdYfHLzAE58BPa2o5truySYalWTUL8M94rWc5PILA/pIcnRxuWQM6IxIjcHuy6M8TY8VUEXjKz2scIjYUZuCw"}}, "unsigned": {"age_ts": 1570042747794}}vpeQay$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2555}{"auth_events": ["$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ"], "prev_events": ["$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ"], "type": "m.room.member", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-475", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-475:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042747245, "hashes": {"sha256": "PsKSjUdhJZZzbvHQFBmPjZeEPwT7M8fTnvEeZstvcxE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eZafcEvMXE0V3ZUEnxqoe5XlpEnai5sHgHlGtuPlNeQ/Yb98oCtgXdVdvU/IsFoyWb0i4AyXwxg7ASMkUgigCw"}}, "unsigned": {"age_ts": 1570042747245}}ioeQa_$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2554}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-475:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042746509, "hashes": {"sha256": "XZjAMLp2aHKGqEPlO0vyCkXAS+tvdfSkCz0kQBnekzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fPaF6Hg+wJX0+XsTBxnFUed6wvPTzMGDoR/xi4OO7ie5Lp+HklRvaTC5nVddWdBUwaidqLBatADKZ7K4lQ0YBQ"}}, "unsigned": {"age_ts": 1570042746509}} X^ h  q + ,|5JTXe#Q ]$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgm.room.test!uqIEMXzdeNeXdJmuwh:localhost:8800ma$ma(@anon-20191002_181700-478:localhost:8800&e3Q ]$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8m.room.guest_access!uqIEMXzdeNeXdJmuwh:localhost:8800m]:m^ @anon-20191002_181700-478:localhost:8800,e?Q ]$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkm.room.history_visibility!uqIEMXzdeNeXdJmuwh:localhost:8800mZm[U@anon-20191002_181700-478:localhost:8800$e/Q ]$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYm.room.join_rules!uqIEMXzdeNeXdJmuwh:localhost:8800mWmX@anon-20191002_181700-478:localhost:8800& e3Q ]$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0m.room.power_levels!uqIEMXzdeNeXdJmuwh:localhost:8800mUmV @anon-20191002_181700-478:localhost:8800 e'Q ]$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Ym.room.member!uqIEMXzdeNeXdJmuwh:localhost:8800mRmSJ@anon-20191002_181700-478:localhost:8800  e'Q  ]$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0m.room.create!uqIEMXzdeNeXdJmuwh:localhost:8800mOmP^@anon-20191002_181700-478:localhost:8800! e)Q ] $fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vom.room.message!yAzXcNLHMuqFOcOexj:localhost:8800 mI4mI8@anon-20191002_181700-476:localhost:8800 e'Q ] $LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888m.room.member!yAzXcNLHMuqFOcOexj:localhost:8800 mEmE@anon-20191002_181700-477:localhost:8800e#Q ]$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8m.room.test!yAzXcNLHMuqFOcOexj:localhost:8800mCmC@anon-20191002_181700-476:localhost:8800!e)Q ]$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4m.room.aliases!yAzXcNLHMuqFOcOexj:localhost:8800m?m@@anon-20191002_181700-476:localhost:8800,e?Q ]$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEm.room.history_visibility!yAzXcNLHMuqFOcOexj:localhost:8800m;m=@anon-20191002_181700-476:localhost:8800$e/Q ]$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uom.room.join_rules!yAzXcNLHMuqFOcOexj:localhost:8800m8m9@anon-20191002_181700-476:localhost:8800)e9Q ]$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIm.room.canonical_alias!yAzXcNLHMuqFOcOexj:localhost:8800m6 m7@anon-20191002_181700-476:localhost:8800&e3Q ]$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgm.room.power_levels!yAzXcNLHMuqFOcOexj:localhost:8800m3Fm4b@anon-20191002_181700-476:localhost:8800 e'Q ]$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMm.room.member!yAzXcNLHMuqFOcOexj:localhost:8800m1:m1@anon-20191002_181700-476:localhost:8800 e'Q  ]$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zom.room.create!yAzXcNLHMuqFOcOexj:localhost:8800m.m/@anon-20191002_181700-476:localhost:8800!e)Q ]$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fkm.room.message!tLkhTnTgDjjAvscRkW:localhost:8800m(m(@anon-20191002_181700-475:localhost:8800e#Q ]$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUm.room.test!tLkhTnTgDjjAvscRkW:localhost:8800m& m&$@anon-20191002_181700-475:localhost:8800,~e?Q ]$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEom.room.history_visibility!tLkhTnTgDjjAvscRkW:localhost:8800m!Um"@anon-20191002_181700-475:localhost:8800$}e/Q ]$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkm.room.join_rules!tLkhTnTgDjjAvscRkW:localhost:8800m:m@anon-20191002_181700-475:localhost:8800&|e3Q ]$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEm.room.power_levels!tLkhTnTgDjjAvscRkW:localhost:8800mm@anon-20191002_181700-475:localhost:8800 {e'Q ]$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIm.room.member!tLkhTnTgDjjAvscRkW:localhost:8800mmm@anon-20191002_181700-475:localhost:8800z e'Q  ]$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQm.room.create!tLkhTnTgDjjAvscRkW:localhost:8800mm@anon-20191002_181700-475:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VeL$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edssha256!R:Ǘl v 4yVeL$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMsha2563*Or1v:L#Bk |YVeL$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Esha2564}C(K&%FRKL{uVeL$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEsha256nYzkSU!3>1VeL$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8sha256! Йg6;?7P~G 3SӲ["|/VeL$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUsha256]#0?n:@L9jhز S8:VeL$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4sha256n$+aGrOiFPVeL$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Usha256q #'ב!`GK1U:DX}+VeL$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgsha256Ƶe 3"̺F |iV/KVeL$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jEsha256` b- fW1VeL$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gksha256G$<4usc9[ l7] iVeL$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84sha256?SZ{((WcVeL$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwsha256^h LQ~<P%mgV eL$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/ssha2563h'zQNF@371_<2V eL$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8sha2561jPhtI+|<*VeL$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wsha256I p@ 5=}YqZ0X\qVeL$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xcsha256TPBW^#-e< bOxJIwVeL$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgsha256#EO*TN\.OY_HAVeL$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8sha256^# Z!WQ ^B[5!h6 VeL$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynksha256Kg7 2{ev &9o^nwyVeL$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYsha256@/ߩե;6c3ݦ0FVeL$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0sha2564?v?1RO[-R MVeL$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Ysha256?mzCTYqK&釖qU\VeL$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0sha256Z.RO4̞ Hx.LnR|-VeL$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vosha256~*pi`4Pv{QNYܕZV~eL$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888sha256,J/o4"iVՅaJ5rk V}eL$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8sha256 O"(Ќyi]~.;\OV|eL$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4sha256V~o gX}zwgoKd,>V{eL$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEsha256 |YP.{.4,Z#)D4ςaMqVzeL$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uosha256r4GF5ھW&j| \jTVyeL$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIsha256Ʊ/=[$H4ðh{v˛ FVxeL$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgsha256p}UXz>|&˖AIDž8VweL$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMsha256|D%Lڼ?Z= ֟î^SVveL$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zosha256*Ąo^31)55Z&IݚVueL$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fksha256ae%?pwRM*Y2E17b]YVteL$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUsha256y;"!_]=?393rxp-VseL$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEosha256ax}e*H(%^[B)SʐZmʄJVreL$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhksha256&\W>VXp(ʌաQWVqeL$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEsha256a0ceɜ5}&Ҕ8 *r L+ P *j n b \ | < 0] $tB{ Jh  VP v6>8 W% p  D J+1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro 21e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc_1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wk1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsM1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawQ1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE40e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgS1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4`1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8'1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E %1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8C1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j41e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg u1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90l1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoh1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgz1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogq1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgo1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84v1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY(1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck#1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 O1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y W21e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg 1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o :1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw -1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs '1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg #1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 n1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg d1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w *F Wb%h6]o=  D uC{IQ9kp+> W0 % } K  Q  OMqm2tCwEdqpw6Qm1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y F1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E C1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ 81e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng/1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8d1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM)1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEw0e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0w0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAk1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8[1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg@1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI81e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX41e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIn1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4,1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwe1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE*1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMY1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE^1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg R1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M v1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 y1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak l1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ S1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU(1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4N0e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4B1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE#1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 21e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIh1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMZd1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcU0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms5 L+ P *j n b \ | < 0] $tB{ Jh  VP v6>8 W% p  D J+1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro 21e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc_1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wk1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsM1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawQ1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE40e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgS1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4`1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8'1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E %1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8=1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j41e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg u1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90f1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXob1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgt1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogk1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgo1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84v1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY(1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck#1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 O1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y U21e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg 1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o :1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw -1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs '1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg #1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 l1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg b1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w  w +iveQa_$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2561}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-476:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042752683, "hashes": {"sha256": "iJjJ7Ft5f1siWE+tJQls5mqnkQJsmAmXh+jEo9n7tLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0SI+dPXOA2sOiPI+DF89Zg2sqksZj969xWvCMz76RuTS0/ufB1ZVT1RcYHScqWpO4wFp7n7se3XGTLDmG6aMCw"}}, "unsigned": {"age_ts": 1570042752683}}ueQk$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "txn_id": "484", "stream_ordering": 2560}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU"], "type": "m.room.message", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042751206, "hashes": {"sha256": "6RoKoKaoDugDKzJvf3WN5XWeSXs+lzkyyJBgZz1LdV8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N50BI9nDN5ie51kyzNd/p7D4LnsgeJiIJzlCkfCYp2Gov6axlBMBpnOAw/LOxSWRj25G2kcUq4oGDj2tunJ3CA"}}, "unsigned": {"age_ts": 1570042751206}}HteQa$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2559}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo"], "type": "m.room.test", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042750496, "hashes": {"sha256": "CfvUxvFJ7fD3mK1AgpEWNnPtG9AyfVVVKewnXM6sKXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pgWRYumR6Una74MMKwGBOoHXrVFAtdfVVzdopz96wLUl5iyHnG9udh4QwEVvnV0rAA9jqY0dY34Hx5QJ3J5MDQ"}}, "unsigned": {"age_ts": 1570042750496}}seQa$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2558}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk"], "type": "m.room.history_visibility", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042749269, "hashes": {"sha256": "AyjOw+5sU29zPJiu0istR2e6hchTn5Jbwrl491Er8NU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z3lfwUcog9jHXuf4Et/e/I1mSjiGQIKcqf/n15KQTD8Hp/Nr8dIdhYmOiJzvIhA8BgrDcS8FjpoNUaW+PAQbDA"}}, "unsigned": {"age_ts": 1570042749269}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1.e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgy1-e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQx1,e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsw1+e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8v1*e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMu1)e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNot1(e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQs1'e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgq1&e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcq1%e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4p1$e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMo1#e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vskn1"e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90m1!e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wl1 e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zkk1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpMk1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXok1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8k1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWMk1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsYk1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8k1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIk1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88k1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMk1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90k1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKAk1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUk1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4j1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwi1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwh1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMg1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxof1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAe1 e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edse1 e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMc1 e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Eb1 e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEb1 e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8a1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU`1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4_1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U^1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg]1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE\1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk\1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84Z1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwZ1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8Y1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIX1~e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YW1}e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50V1|e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4U1{e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sT1ze$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8S1ye$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wS1xe$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcR1we$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgQ1ve$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8Q1ue$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkP1te$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYO1se$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0N1re$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YM1qe$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0L1pe$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0VoK1oe$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888K1ne$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8J1me$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4J1le$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEI1ke$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uoH1je$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIG1ie$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgF1he$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlME1ge$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZoD1fe$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7FkC1ee$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUC1de$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEoC ~z v r n j fb^ZVRNJF2eeQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:88001eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84!DqxFmsXPclgGqpSwdy:localhost:88000eeQ$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800/eeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800.eeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800-eeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800,eeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800+eeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800*eeQ$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800)eeQ$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800(eeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800'eeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg!uqIEMXzdeNeXdJmuwh:localhost:8800&eeQ$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800%eeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800$eeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800#eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800"eeQ$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800!eeQ$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800 eeQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800 `'2`,1 \ y ! GRWmx}e%eQ/ $Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rulesg$eQ3 $0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels #eQ']$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800joina"eQ' $7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800m.room.create!MQ']$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829joinc QQ? $1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibilitym;eQ? $Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibilitye:eQ/ $sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rulesj9eQ9 $RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_aliasg8eQ3 $LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels 7eQ']$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800joina6eQ' $pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800m.room.create 5eQ']$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800joing4eQ3 $XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_accessm3eQ? $mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibilitye2eQ/ $QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rulesg1eQ3 $ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels 0eQ']$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800joina/eQ' $WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create .eQ']$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800joinp-eQ))$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800m,eQ? $7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibilitye+eQ/ $cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rulesj*eQ9 $A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_aliasg)eQ3 $v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels (eQ']$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800joina'eQ' $KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.createm&eQ? $YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility kV> ^ 1  ~ Q $ p C  c 6 V )uIh;[.{N!mA`3S&rFyL,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800+Q !vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800RR+Q !vyCFfUTJKYJSDadFhT:localhost:8800QQ,Q!vttkrtSyHEJXVMlvLo:localhost:8800 A A,Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ @,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? ?,Q!vttkrtSyHEJXVMlvLo:localhost:8800 > >,Q!vttkrtSyHEJXVMlvLo:localhost:8800 = =,Q!vttkrtSyHEJXVMlvLo:localhost:8800 < <,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; ;,Q!vttkrtSyHEJXVMlvLo:localhost:8800 : :+Q !vttkrtSyHEJXVMlvLo:localhost:8800 9 9,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800+Q !vpuivIQDEhyuhOLWpg:localhost:8800,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v v,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u u,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t t,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s s,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r r,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q q+Q !vnFXnkCSfTbsSNKrtg:localhost:8800 p p,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 +Q !vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800+Q !vVmSdclwPIqYDbnmPn:localhost:8800,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  +Q !vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRRNxNyGboLHNhqQvr:localhost:8800ZZ,Q!vRRNxNyGboLHNhqQvr:localhost:8800YY,Q!vRRNxNyGboLHNhqQvr:localhost:8800XX,Q!vRRNxNyGboLHNhqQvr:localhost:8800WW,Q!vRRNxNyGboLHNhqQvr:localhost:8800VV,Q!vRRNxNyGboLHNhqQvr:localhost:8800UU+Q !vRRNxNyGboLHNhqQvr:localhost:8800TT,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ~~,Q!vOfeZvbtpuHfoqShFl:localhost:8800}},Q!vOfeZvbtpuHfoqShFl:localhost:8800||,Q!vOfeZvbtpuHfoqShFl:localhost:8800{{,Q!vOfeZvbtpuHfoqShFl:localhost:8800zz,Q!vOfeZvbtpuHfoqShFl:localhost:8800yy,Q!vOfeZvbtpuHfoqShFl:localhost:8800xx,Q!vOfeZvbtpuHfoqShFl:localhost:8800ww+Q !vOfeZvbtpuHfoqShFl:localhost:8800vv,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800+Q !vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 -,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800ZZ,Q!vyCFfUTJKYJSDadFhT:localhost:8800XX,Q!vyCFfUTJKYJSDadFhT:localhost:8800VV,Q!vyCFfUTJKYJSDadFhT:localhost:8800TT,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 kV> ^ 1  ~ Q $ p C  c 6 V )uIh;[.{N!mA`3S&rFyL,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800+Q !vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800RR+Q !vyCFfUTJKYJSDadFhT:localhost:8800QQ,Q!vttkrtSyHEJXVMlvLo:localhost:8800 A A,Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ @,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? ?,Q!vttkrtSyHEJXVMlvLo:localhost:8800 > >,Q!vttkrtSyHEJXVMlvLo:localhost:8800 = =,Q!vttkrtSyHEJXVMlvLo:localhost:8800 < <,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; ;,Q!vttkrtSyHEJXVMlvLo:localhost:8800 : :+Q !vttkrtSyHEJXVMlvLo:localhost:8800 9 9,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800+Q !vpuivIQDEhyuhOLWpg:localhost:8800,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v v,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u u,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t t,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s s,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r r,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q q+Q !vnFXnkCSfTbsSNKrtg:localhost:8800 p p,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 +Q !vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800+Q !vVmSdclwPIqYDbnmPn:localhost:8800,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  +Q !vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRRNxNyGboLHNhqQvr:localhost:8800ZZ,Q!vRRNxNyGboLHNhqQvr:localhost:8800YY,Q!vRRNxNyGboLHNhqQvr:localhost:8800XX,Q!vRRNxNyGboLHNhqQvr:localhost:8800WW,Q!vRRNxNyGboLHNhqQvr:localhost:8800VV,Q!vRRNxNyGboLHNhqQvr:localhost:8800UU+Q !vRRNxNyGboLHNhqQvr:localhost:8800TT,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ~~,Q!vOfeZvbtpuHfoqShFl:localhost:8800}},Q!vOfeZvbtpuHfoqShFl:localhost:8800||,Q!vOfeZvbtpuHfoqShFl:localhost:8800{{,Q!vOfeZvbtpuHfoqShFl:localhost:8800zz,Q!vOfeZvbtpuHfoqShFl:localhost:8800yy,Q!vOfeZvbtpuHfoqShFl:localhost:8800xx,Q!vOfeZvbtpuHfoqShFl:localhost:8800ww+Q !vOfeZvbtpuHfoqShFl:localhost:8800vv,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800+Q !vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 -,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800ZZ,Q!vyCFfUTJKYJSDadFhT:localhost:8800XX,Q!vyCFfUTJKYJSDadFhT:localhost:8800VV,Q!vyCFfUTJKYJSDadFhT:localhost:8800TT,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 [   T ) } R '{PmB _ 4%yN#wL!uJsHqFoDT)W. _ 4 _ 6*Q!yNfCaBMPezurwkJRAX:localhost:8800oa*Q!yNfCaBMPezurwkJRAX:localhost:8800n`*Q!yNfCaBMPezurwkJRAX:localhost:8800m_*Q!yWhIsLsgNVGcnELrDS:localhost:8800A3*Q!yWhIsLsgNVGcnELrDS:localhost:8800@2*Q!yWhIsLsgNVGcnELrDS:localhost:8800?1*Q!yWhIsLsgNVGcnELrDS:localhost:8800B4*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zHBgbzUZHshNGZvIBS:localhost:8800 A ~*Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ }*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? |*Q!zHBgbzUZHshNGZvIBS:localhost:8800 > {*Q!zHBgbzUZHshNGZvIBS:localhost:8800 = z*Q!zHBgbzUZHshNGZvIBS:localhost:8800 < y*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; x*Q!zHBgbzUZHshNGZvIBS:localhost:8800 : w*Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 v*Q!zHBgbzUZHshNGZvIBS:localhost:8800 8 u*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!yfizglmCXdcqCgDrTr:localhost:8800 { *Q!yfizglmCXdcqCgDrTr:localhost:8800 z *Q!yfizglmCXdcqCgDrTr:localhost:8800 y *Q!yfizglmCXdcqCgDrTr:localhost:8800 x *Q!yfizglmCXdcqCgDrTr:localhost:8800 w *Q!yfizglmCXdcqCgDrTr:localhost:8800 v *Q!yfizglmCXdcqCgDrTr:localhost:8800 u *Q!yfizglmCXdcqCgDrTr:localhost:8800 t *Q!yfizglmCXdcqCgDrTr:localhost:8800 s *Q!yfizglmCXdcqCgDrTr:localhost:8800 r *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 l*Q!yTQmLDAxZscWKLMSWh:localhost:8800 / k*Q!yTQmLDAxZscWKLMSWh:localhost:8800 . j*Q!yTQmLDAxZscWKLMSWh:localhost:8800 - i*Q!yTQmLDAxZscWKLMSWh:localhost:8800 , h*Q!yTQmLDAxZscWKLMSWh:localhost:8800 + g*Q!yTQmLDAxZscWKLMSWh:localhost:8800 * f*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) e*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( d*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' c*Q!yTQmLDAxZscWKLMSWh:localhost:8800 & b*Q!yTQmLDAxZscWKLMSWh:localhost:8800 % a*Q!yTQmLDAxZscWKLMSWh:localhost:8800 $ `*Q!yLccBXjjEasExpsXlt:localhost:8800 # *Q!yNfCaBMPezurwkJRAX:localhost:8800l^*Q!yNfCaBMPezurwkJRAX:localhost:8800k]*Q!yNfCaBMPezurwkJRAX:localhost:8800j\*Q!yWhIsLsgNVGcnELrDS:localhost:8800TF*Q!yWhIsLsgNVGcnELrDS:localhost:8800M?*Q!yWhIsLsgNVGcnELrDS:localhost:8800F8*Q!yWhIsLsgNVGcnELrDS:localhost:8800E7*Q!yWhIsLsgNVGcnELrDS:localhost:8800D6*Q!yWhIsLsgNVGcnELrDS:localhost:8800C5(Q!zhCsYcaweVFJLLNwBz:localhost:8800+*(Q!zhCsYcaweVFJLLNwBz:localhost:8800*)*Q!zScKnCZCFPIIodAiQj:localhost:8800 M a*Q!zScKnCZCFPIIodAiQj:localhost:8800 J ^*Q!zScKnCZCFPIIodAiQj:localhost:8800 H \*Q!zScKnCZCFPIIodAiQj:localhost:8800 F Z*Q!zScKnCZCFPIIodAiQj:localhost:8800 D X*Q!zScKnCZCFPIIodAiQj:localhost:8800 B V(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800'Q !zNCItZNbpkZKuufRhC:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800 g * T~=ggd]!c@anon-20191002_181700-491:localhost:8800SADWUTCSYMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6Rgogc]!c@anon-20191002_181700-490:localhost:8800YZYHXUDJBUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwogb]!c@anon-20191002_181700-488:localhost:8800SPGGZQRKHZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAoga]!c@anon-20191002_181700-486:localhost:8800OFHZWZEQDSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0wog`]!c@anon-20191002_181700-484:localhost:8800FWOSSLYDNUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAog_]!c@anon-20191002_181700-482:localhost:8800JRYARQINGZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgog^]!c@anon-20191002_181700-480:localhost:8800XJOMFBTCLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAog]]!c@anon-20191002_181700-479:localhost:8800NIEZZMOKPHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQog\]!c@anon-20191002_181700-478:localhost:8800VNBLCYVGBZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_wog[]!c@anon-20191002_181700-477:localhost:8800UXWKBDSXBAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAogZ]!c@anon-20191002_181700-476:localhost:8800RXRCJNSJQBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQo  tzeQau$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2565}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI"], "type": "m.room.join_rules", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042755269, "hashes": {"sha256": "U7KLxK0dPPxczeoVeEtrPB7XlT0+XEcV7B/yVkPFpgg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kEvaN0pyMy7g9TBwWyjHCXFdaDPfiw7hS2TqDZi5mQMvL8NLH8jM76Gyc7+Ppk8Pzhrx9uwFaurftaMs11RzBA"}}, "unsigned": {"age_ts": 1570042755269}} yeQa!$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2564}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg"], "type": "m.room.canonical_alias", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"alias": "#__ANON__-19:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042754569, "hashes": {"sha256": "lnVa9Wm60k3X9sBcet4sb3ZYngM7ClNoWLL9HNypUqs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whtSUrE9WBwEBh+884eXMO2RcEiyaPe4CVxpLCvgTcS71o0i9lTXmwQkcAWqPZOV+mrjtmiZsu5osAKq6UBHDg"}}, "unsigned": {"age_ts": 1570042754569}}kxeQac$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2563}{"auth_events": ["$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "type": "m.room.power_levels", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"users": {"@anon-20191002_181700-476:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042753862, "hashes": {"sha256": "xj7f6QnCQFWZlbxHS31h8QRTviE+GuzH8rNSGNslrNw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x+Q64Lfi2yEoOF/DD9id8YtNBOcplbJI0vuiCJr6Kvuc8TsTh/HqjS8oFDDYCU+yvIO1prZKGxq0bhpVbTgxCQ"}}, "unsigned": {"age_ts": 1570042753862}}vweQay$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2562}{"auth_events": ["$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo"], "prev_events": ["$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo"], "type": "m.room.member", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-476", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-476:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042753338, "hashes": {"sha256": "99h9mqRAdmGpj0xXLA4QEqMmYJKPxwGx9qPM+WKv63U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rYNXwmyI/szUf/MhuFa5tNPhZ0yi8tIto/bZUuA2X7Mt5xN8nZupJ4syLRNtRs+otzNraEghSRDsiGqsJs85Aw"}}, "unsigned": {"age_ts": 1570042753338}} p( ? H K m pMPu-Md*Q' e )!KIHYKMzkRDrJwiywwz:localhost:8800m.room.create$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo8)Q']ee '!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM (Q']e &!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMj'Q3 e $!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_access$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEp&Q? e #!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibility$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8h%Q/ e "!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rules$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUj$Q3 e !!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 #Q']e !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Ud"Q' e !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg !Q']e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gks Q))e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwpQ? e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibility$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8hQ/ e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rules$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyImQ9 e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_alias$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YjQ3 e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 Q']e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4dQ' e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.create$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s8Q']ee !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc Q']e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcjQ3 e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_access$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8pQ? e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibility$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkhQ/ e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rules$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYjQ3 e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 Q']e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YdQ' e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 Q']e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888sQ))e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4pQ? e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibility$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEhQ/ e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rules$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uom Q9 e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_alias$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIj Q3 e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg Q']e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM IZNh6 | J  V $ P b08 n p>T"<   \ *BzHt  D  j(n< Z21e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA_1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE'1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U61e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U51e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0m1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0l1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0k1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ u1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ t1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU 1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMj1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMi1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624z1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQG1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0 1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0 1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U71e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA11e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA01e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624{1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ v21e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI41e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI31e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI21e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgd1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ v1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc|1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc{21e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMh1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA^1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc}1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4 a} { y w u sqomkigeca~neeQ$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~meeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800~leeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800~keeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~jeeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~ieeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~heeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800~geeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~feeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~eeeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~deeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~ceeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~beeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~aeeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~`eeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~_eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~^eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~]eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~\eeQ$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~[eeQ$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~ZeeQ$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~YeeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800~XeeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800~WeeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800~VeeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800~UeeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800~TeeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800~SeeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800~ReeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800~QeeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800~PeeQ$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800 D P X>P & p8 \   _ -  V  D|J v  vD p?j8e3 | J  WV_li39c1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 :$d1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM%21e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4T20e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4l1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs T1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE(1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 ;1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYd1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcK1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUx1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY*1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA`2 1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo{1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k( 21e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY<1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIA1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr001e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI K1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A 1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAW1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYT1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc^1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo j1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U01e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4s1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w51e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg 1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 21e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIj21e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY421e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok  wV~eQa9$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 484, "stream_ordering": 2569}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo"], "prev_events": ["$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8"], "type": "m.room.member", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-477:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-477", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-477:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042758527, "hashes": {"sha256": "ayW7FNxkLg+jB6dQaYw9FbJdJl5hH2FLyfpMXumXeeA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TCgxpMGA6aLvHB5OmR/Cn8r8b+Afv1RRB6zKCO5+7BjXzO8JvbzmS83L8uKLMh1bmiSPlpjnEd979jcq8AYZBw"}}, "unsigned": {"age_ts": 1570042758527}}H}eQa$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2568}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4"], "type": "m.room.test", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042758026, "hashes": {"sha256": "t7GXGmWcOq1vbzusoa+dsVzDuUfurQrI6P5/+MiUy+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X5cedbWh/jjukI6jCD5lwLJd/dSX/A7v3qCAGeEqtLYpfk1gi9AZ01Mw3CEYSDUCVI0NOE3BBqdGnXz5Jgt7Cw"}}, "unsigned": {"age_ts": 1570042758026}}|eQa5$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2567}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE"], "type": "m.room.aliases", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"aliases": ["#__ANON__-19:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042757093, "hashes": {"sha256": "m09/0vevOTjXhmvoUwxBZAYfKKZdfa8LhNd1YrYk/Ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9p8xj3+q3BI0aV3uYwKP0O8G+hzN9gbHdY47Wd/Ney5RJ/8E4pPzD8Sju3eMQDdmElFTZEspoUXsYT/Ej02ZBA"}}, "unsigned": {"age_ts": 1570042757093}}{eQa$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2566}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo"], "type": "m.room.history_visibility", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042756061, "hashes": {"sha256": "RTE0xlKn6ciIx2HZWclCFk7hYHuZRRBWIz5QOjYc0I4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JQMj6Y+3nDXsRFoDAoVKkzGFoQtGHNKyZicKL/Y9OQASjXL/VY6/irWhm7f9YgpIDUR5QpSvFVZU9oqgOh5CAA"}}, "unsigned": {"age_ts": 1570042756061}}  z keQac$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2573}{"auth_events": ["$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "type": "m.room.power_levels", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"users": {"@anon-20191002_181700-478:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042762500, "hashes": {"sha256": "2kn9NdMDfL195zdpLnZk8F214CG5SxB5xvyqK0BNN38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+a5LWtuhVVrfe9qa+t//IZj6n482eeDTJmwqCOFtk+BTjwOwQIgLoDRtD1mTEn7lz3xyprkZRbJ1qMRhB71mBg"}}, "unsigned": {"age_ts": 1570042762500}}veQay$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2572}{"auth_events": ["$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0"], "prev_events": ["$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0"], "type": "m.room.member", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-478", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-478:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042761957, "hashes": {"sha256": "qlTFhiPyOauzvAc8dIt4Fd+yPlNM0OESNpDyJIKCHqk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QZCphgpOv8ZciqXFMfSo18x85FjmNh/r99h/NVGDq1QChfDz7Mo3pNQQjnO9zx2mam8nWmRTWzsZuMHs1Sv9Cg"}}, "unsigned": {"age_ts": 1570042761957}}ieQa_$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2571}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-478:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042761169, "hashes": {"sha256": "DUnbNVNhxgW7VjpMYcITomI74k/w4R84ZAnW27Bn5jI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CUqZ5MRAMVkLcCr78GXVgmf6uawV4fsbXhE5dZAhNVEp/JOrQ+PTd3aVSq0pS1sGrRTzeu7JNMWOtwdS0L8ZCg"}}, "unsigned": {"age_ts": 1570042761169}}eQm$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "txn_id": "485", "stream_ordering": 2570}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888"], "type": "m.room.message", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042759476, "hashes": {"sha256": "fSIfs0bsszmVjOaP4hVzkJ01tl+BVoD4NLPywuMOrEw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "psJ+Hsa10AG7feRPikrfvgxLQmr4XKuvhYFqkP11vZMhTKrltztHKU3gXi3aDmHdFcn94Sq018jTt1iszvT9Ag"}}, "unsigned": {"age_ts": 1570042759476}} Pm< xG R ! ] , h 7  s B  ~ M X'c2n= yHS"^,g6rA.G] @anon-20191002_181700-583:localhost:8800 .F] @anon-20191002_181700-582:localhost:8800 .E]@anon-20191002_181700-581:localhost:8800 .D] @anon-20191002_181700-580:localhost:8800 .C] @anon-20191002_181700-579:localhost:8800 .B] @anon-20191002_181700-578:localhost:8800 .A] @anon-20191002_181700-577:localhost:8800 .@] @anon-20191002_181700-576:localhost:8800 .?]@anon-20191002_181700-575:localhost:8800 />]@anon-20191002_181700-574:localhost:8800 .=] @anon-20191002_181700-573:localhost:8800 .<] @anon-20191002_181700-572:localhost:8800 .;] @anon-20191002_181700-571:localhost:8800 /:]@anon-20191002_181700-570:localhost:8800 .9] @anon-20191002_181700-569:localhost:8800 .8] @anon-20191002_181700-568:localhost:8800 .7] @anon-20191002_181700-567:localhost:8800 .6] @anon-20191002_181700-566:localhost:8800 .5] @anon-20191002_181700-565:localhost:8800 .4] @anon-20191002_181700-564:localhost:8800 z.3] @anon-20191002_181700-563:localhost:8800 u.2] @anon-20191002_181700-562:localhost:8800 p.1] @anon-20191002_181700-561:localhost:8800 k.0]@anon-20191002_181700-560:localhost:8800 f./] @anon-20191002_181700-558:localhost:8800 f..] @anon-20191002_181700-557:localhost:8800 P.-]@anon-20191002_181700-556:localhost:8800 Q.,]@anon-20191002_181700-555:localhost:8800 I.+] @anon-20191002_181700-554:localhost:8800 G.*] @anon-20191002_181700-552:localhost:8800 @.)] @anon-20191002_181700-551:localhost:8800 7.(] @anon-20191002_181700-550:localhost:8800 6.'] @anon-20191002_181700-549:localhost:8800 1.&] @anon-20191002_181700-548:localhost:8800 0.%] @anon-20191002_181700-545:localhost:8800 +.$] @anon-20191002_181700-543:localhost:8800 $.#] @anon-20191002_181700-541:localhost:8800 ."] @anon-20191002_181700-539:localhost:8800 .!] @anon-20191002_181700-537:localhost:8800 . ] @anon-20191002_181700-538:localhost:8800 .] @anon-20191002_181700-535:localhost:8800 .] @anon-20191002_181700-536:localhost:8800 .] @anon-20191002_181700-533:localhost:8800 .] @anon-20191002_181700-534:localhost:8800 .] @anon-20191002_181700-531:localhost:8800 .] @anon-20191002_181700-532:localhost:8800 .]@anon-20191002_181700-529:localhost:8800 .]@anon-20191002_181700-527:localhost:8800 .]@anon-20191002_181700-526:localhost:8800 .]@anon-20191002_181700-525:localhost:8800 .]@anon-20191002_181700-524:localhost:8800 .]@anon-20191002_181700-523:localhost:8800 .] @anon-20191002_181700-521:localhost:8800 .] @anon-20191002_181700-520:localhost:8800 .] @anon-20191002_181700-518:localhost:8800 .] @anon-20191002_181700-516:localhost:8800 .] @anon-20191002_181700-514:localhost:8800 .] @anon-20191002_181700-512:localhost:8800 . ] @anon-20191002_181700-510:localhost:8800 . ] @anon-20191002_181700-509:localhost:8800 . ] @anon-20191002_181700-508:localhost:8800 . ] @anon-20191002_181700-507:localhost:8800 . ] @anon-20191002_181700-506:localhost:8800 .] @anon-20191002_181700-505:localhost:8800 .] @anon-20191002_181700-503:localhost:8800 .] @anon-20191002_181700-501:localhost:8800 .] @anon-20191002_181700-499:localhost:8800 .] @anon-20191002_181700-497:localhost:8800 {.] @anon-20191002_181700-495:localhost:8800 q.] @anon-20191002_181700-493:localhost:8800 g.] @anon-20191002_181700-494:localhost:8800 f.] @anon-20191002_181700-492:localhost:8800 \.] @anon-20191002_181700-491:localhost:8800 ].~] @anon-20191002_181700-490:localhost:8800 S.}] @anon-20191002_181700-488:localhost:8800 I.|] @anon-20191002_181700-486:localhost:8800 A.{] @anon-20191002_181700-484:localhost:8800 :.z] @anon-20191002_181700-482:localhost:8800 (.y] @anon-20191002_181700-480:localhost:8800 .x] @anon-20191002_181700-479:localhost:8800  !l*L . 9 ^ ~$F(38\gli}Q3 en!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk |Q']em!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90c{Q' el!WYyiQAVvitxsLZKVCG:localhost:8800m.room.create$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w zQ']ek!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUoyQ? ej!KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibility$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4gxQ/ ei!KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rules$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwiwQ3 eh!KIHYKMzkRDrJwiywwz:localhost:8800m.room.power_levels$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw vQ']eg!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-484:localhost:8800$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMcuQ' ef!KIHYKMzkRDrJwiywwz:localhost:8800m.room.create$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo tQ']ee!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds sQ']ed!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$2I6G275l7JkWUBuJkQy5PN+nqKGQgNFjEkJcYKCrbzc rQ']ec!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMiqQ3 eb!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_access$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEopQ? ea!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibility$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8goQ/ e`!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rules$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUinQ3 e_!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 mQ']e^!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8UclQ' e]!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg kQ']e\!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk jQ']e[!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829$296DUxyQixT0lQ0odnSMp2FPVx9B3gcT8ETQCdLZ0i8riQ))eZ!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwohQ? eY!DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibility$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8ggQ/ eX!DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rules$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIlfQ9 eW!DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_alias$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YieQ3 eV!DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 dQ']eU!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4ccQ' eT!DqxFmsXPclgGqpSwdy:localhost:8800m.room.create$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s bQ']eS!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w aQ']eR!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xci`Q3 eQ!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_access$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8o_Q? eP!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibility$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkg^Q/ eO!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rules$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYi]Q3 eN!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 4 4HeQa$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2577}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8"], "type": "m.room.test", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042765604, "hashes": {"sha256": "TrBuVfGk/Fr20VaSnvAV+v0vNz0kv/tL6R0dneVhWnk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dw2btlggDLyeSghQ7R3m82lCfkjrHC5QllKc8uYHBOOFhJ4GcWRUnC81exoPzkojIoQkzvlGGdDGcYgH++m0BA"}}, "unsigned": {"age_ts": 1570042765604}}{eQa$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2576}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk"], "type": "m.room.guest_access", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042764602, "hashes": {"sha256": "s5WaU8l2ikYUhFQOqF4HhIgsjbemrQuISJ4Od9dossM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8PvBx2n/qH0PKjYE2/AlsgO6I5FLwSBkrttYWHI+yhzUJJrjep70cm7KcM/wC6foTmyGKBLRRUYVV3i/fW/iBA"}}, "unsigned": {"age_ts": 1570042764602}}eQa$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2575}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY"], "type": "m.room.history_visibility", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042763917, "hashes": {"sha256": "I5kRabYgegi5jouvRjja4ZlNb1N7+abGTDcIx/eFXQk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1xKKuXLwnZATLMjerUwXEoPHG7BF6wqIbbZzg77iu7F3qOIBLfOElXxVbkKpdAFxNdnsSMUg3yqehvDDZ7OtAw"}}, "unsigned": {"age_ts": 1570042763917}}teQau$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2574}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0"], "type": "m.room.join_rules", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042763242, "hashes": {"sha256": "Bc/U+3Hd/t5c5OvgXmNvh1LuXpKIBL/pfWbQ+lPhgS8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uDdzXVpaWgeAzO6CdzumEx9W5PrQNgoes706HRaIwBkk7swHQWoGZFTBYTajwMrdmXHKb7+WP7hfQWLwwZbvCw"}}, "unsigned": {"age_ts": 1570042763242}}  g eQm$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "txn_id": "486", "stream_ordering": 2580}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w"], "type": "m.room.message", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042767911, "hashes": {"sha256": "YSS0L9TFwPPzfP7/atbXFVRcTFv/NubTtevA1CQA0U8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2ywMYxzWfUssSSQaf0Ggc2hz/xhylStlC/pvVxR/xwDUT+a1R8yOnzp1B4h3btiox+7irW91iWPO5fcfSQ0qBA"}}, "unsigned": {"age_ts": 1570042767911}}HeQa$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 486, "stream_ordering": 2579}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY", "$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc"], "prev_events": ["$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc"], "type": "m.room.member", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-479:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-479", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-479:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042766838, "hashes": {"sha256": "FdWyzppwFCQuOCbM3pdaQbS+ReiZDI2s3m6fSE8emyk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAZoiCOWoKdGx9g9hUjbks9ZMxjbHkE2gvP0Rp2FQv+XXmMo3fcSaQoFJHzM1xc5VlFrz73Of6tlgEDSJ0CVBQ"}}, "unsigned": {"age_ts": 1570042766838, "replaces_state": "$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc"}}eQa7$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2578}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg"], "type": "m.room.member", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-479", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-479:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042766187, "hashes": {"sha256": "dAHBcv5qqDOVXCldfV5rg639+4jA50bHRxbALtrnnXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z8+unsELLH8S5LbC2V3LUsa1etBpNPCCDg6WVLyBfHimiqgSWS6e37G7x7sm+n5nCstmIRd/1HpXEeWNpzFyCQ"}}, "unsigned": {"age_ts": 1570042766187, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-478:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-478:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-478", "avatar_url": null}, "sender": "@anon-20191002_181700-478:localhost:8800"}]}} k\ q # v  y3HFV k) e'Q  ]$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxom.room.create!KIHYKMzkRDrJwiywwz:localhost:8800m׳Em׳@anon-20191002_181700-484:localhost:8800!(e)Q ] $k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAm.room.message!RSLvuCuAqKQQrKCxNq:localhost:8800 m׬m׭@anon-20191002_181700-482:localhost:8800 'e'Q ] $IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edsm.room.member!RSLvuCuAqKQQrKCxNq:localhost:8800 mש1mת#@anon-20191002_181700-483:localhost:8829 &e'Q ]$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMm.room.member!RSLvuCuAqKQQrKCxNq:localhost:8800mץmצi@anon-20191002_181700-482:localhost:8800%e#Q ]$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Em.room.test!RSLvuCuAqKQQrKCxNq:localhost:8800mף mף%@anon-20191002_181700-482:localhost:8800&$e3Q ]$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEm.room.guest_access!RSLvuCuAqKQQrKCxNq:localhost:8800mןmנ@anon-20191002_181700-482:localhost:8800,#e?Q ]$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8m.room.history_visibility!RSLvuCuAqKQQrKCxNq:localhost:8800mלmם@anon-20191002_181700-482:localhost:8800$"e/Q ]$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUm.room.join_rules!RSLvuCuAqKQQrKCxNq:localhost:8800mיmי@anon-20191002_181700-482:localhost:8800&!e3Q ]$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4m.room.power_levels!RSLvuCuAqKQQrKCxNq:localhost:8800mז:mחs@anon-20191002_181700-482:localhost:8800 e'Q ]$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Um.room.member!RSLvuCuAqKQQrKCxNq:localhost:8800mדmהU@anon-20191002_181700-482:localhost:8800 e'Q  ]$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgm.room.create!RSLvuCuAqKQQrKCxNq:localhost:8800mבmב@anon-20191002_181700-482:localhost:8800!e)Q ] $CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jEm.room.message!DqxFmsXPclgGqpSwdy:localhost:8800 m׊m׌o@anon-20191002_181700-480:localhost:8800 e'Q ] $xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gkm.room.member!DqxFmsXPclgGqpSwdy:localhost:8800 mׅim׆e@anon-20191002_181700-481:localhost:8829e#Q ]$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84m.room.test!DqxFmsXPclgGqpSwdy:localhost:8800m׃Im׃M@anon-20191002_181700-480:localhost:8800!e)Q ]$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwm.room.aliases!DqxFmsXPclgGqpSwdy:localhost:8800m׀{mׁH@anon-20191002_181700-480:localhost:8800,e?Q ]$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8m.room.history_visibility!DqxFmsXPclgGqpSwdy:localhost:8800m|m~x@anon-20191002_181700-480:localhost:8800$e/Q ]$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIm.room.join_rules!DqxFmsXPclgGqpSwdy:localhost:8800mymz@anon-20191002_181700-480:localhost:8800)e9Q ]$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Ym.room.canonical_alias!DqxFmsXPclgGqpSwdy:localhost:8800mwmw@anon-20191002_181700-480:localhost:8800&e3Q ]$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50m.room.power_levels!DqxFmsXPclgGqpSwdy:localhost:8800msmud@anon-20191002_181700-480:localhost:8800 e'Q ]$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4m.room.member!DqxFmsXPclgGqpSwdy:localhost:8800mqmq@anon-20191002_181700-480:localhost:8800 e'Q  ]$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sm.room.create!DqxFmsXPclgGqpSwdy:localhost:8800mnmn@anon-20191002_181700-480:localhost:8800!e)Q ] $Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8m.room.message!uqIEMXzdeNeXdJmuwh:localhost:8800 mj'mj+@anon-20191002_181700-478:localhost:8800 e'Q ] $0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wm.room.member!uqIEMXzdeNeXdJmuwh:localhost:8800 memfZ@anon-20191002_181700-479:localhost:8800 e'Q ]$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xcm.room.member!uqIEMXzdeNeXdJmuwh:localhost:8800mckmc@anon-20191002_181700-478:localhost:8800 2bd=zS, i B   X 1 n G ] 6  s L %b&O$157004182060gAdxi:localhost:8800 &O$157004182060gAdxi:localhost:8800 &O$157004181959Afmmv:localhost:8800 &O$157004181959Afmmv:localhost:8800 &O$157004181959Afmmv:localhost:8800 &O$157004181958ixShg:localhost:8800 &O$157004181958ixShg:localhost:8800 &O$157004181958ixShg:localhost:8800 &O$157004181857fcmAB:localhost:8800 &O$157004181857fcmAB:localhost:8800 &O$157004181756ejZNp:localhost:8800 &O$157004180853KmrHT:localhost:8800 &O$157004180853KmrHT:localhost:8800 &O$157004180853KmrHT:localhost:8800 &O$157004180752YHMqi:localhost:8800 &O$157004180752YHMqi:localhost:8800 &O$157004180752YHMqi:localhost:8800 &O$157004180751hMlwg:localhost:8800 &O$157004180751hMlwg:localhost:8800 &O$157004180751hMlwg:localhost:8800 &O$157004180650ruqIl:localhost:8800 &O$157004180650ruqIl:localhost:8800 &O$157004180650ruqIl:localhost:8800 &O$157004180549mJBJB:localhost:8800 &O$157004180549mJBJB:localhost:8800 &O$157004180448zlZXD:localhost:8800 &O$157004180346TRucp:localhost:8800 &O$157004180346TRucp:localhost:8800 &O$157004180346TRucp:localhost:8800 &O$157004180045QtsUE:localhost:8800 &O$157004180045QtsUE:localhost:8800 &O$157004180045QtsUE:localhost:8800 &O$157004179944JKWNJ:localhost:8800 &O$157004179944JKWNJ:localhost:8800 &O$157004179944JKWNJ:localhost:8800 &O$157004179843yDrjz:localhost:8800 &O$157004179843yDrjz:localhost:8800 &O$157004179843yDrjz:localhost:8800 &O$157004179742OaMxS:localhost:8800 &O$157004179742OaMxS:localhost:8800 &O$157004179742OaMxS:localhost:8800 &O$157004179541PbBIm:localhost:8800 &O$157004179541PbBIm:localhost:8800 &O$157004179541PbBIm:localhost:8800 &O$157004179340NSiie:localhost:8800 &O$157004179340NSiie:localhost:8800 &O$157004179340NSiie:localhost:8800 &O$157004179239LLqht:localhost:8800 &O$157004179239LLqht:localhost:8800 &O$157004179239LLqht:localhost:8800 Ht=  sm< xG MX'  ~ Bn H2 S"yc^it8- R ! ] , 7 s  ]  -1-1b0]v@anon-20191002_181700-514:localhost:8800r0]y@anon-20191002_181700-518:localhost:8800x0]n@anon-20191002_181700-513:localhost:8829m0]}@anon-20191002_181700-521:localhost:8800{0]}@anon-20191002_181700-520:localhost:8800|0]k@anon-20191002_181700-519:localhost:8829j0]g@anon-20191002_181700-507:localhost:8800f0]d@anon-20191002_181700-503:localhost:8800c0]d@anon-20191002_181700-505:localhost:8800b0]~@anon-20191002_181700-522:localhost:8829}0]e@anon-20191002_181700-512:localhost:8800d0]\@anon-20191002_181700-499:localhost:8800Z0]h@anon-20191002_181700-509:localhost:8800g0]X@anon-20191002_181700-496:localhost:8829W0]W@anon-20191002_181700-506:localhost:8800V0]U@anon-20191002_181700-494:localhost:8800T0]i@anon-20191002_181700-511:localhost:8829h0]S@anon-20191002_181700-504:localhost:8829R0]^@anon-20191002_181700-508:localhost:8800]0]Q@anon-20191002_181700-492:localhost:8800P0]I@anon-20191002_181700-484:localhost:8800F0]_@anon-20191002_181700-498:localhost:8829^0]K@anon-20191002_181700-495:localhost:8800J0]@anon-20191002_181700-442:localhost:88000]C@anon-20191002_181700-493:localhost:8800B0] @anon-20191002_181700-445:localhost:88000]A@anon-20191002_181700-491:localhost:8800@0]?@anon-20191002_181700-481:localhost:8829>0]6@anon-20191002_181700-475:localhost:880050]N@anon-20191002_181700-488:localhost:8800M0]M@anon-20191002_181700-497:localhost:8800L0]a@anon-20191002_181700-510:localhost:8800`0]7@anon-20191002_181700-482:localhost:880060]/@anon-20191002_181700-473:localhost:8800.0].@anon-20191002_181700-480:localhost:8800-0],@anon-20191002_181700-468:localhost:8829+0]+@anon-20191002_181700-478:localhost:8800*0]8@anon-20191002_181700-477:localhost:880070])@anon-20191002_181700-476:localhost:8800(0]:@anon-20191002_181700-479:localhost:880090]6@anon-20191002_181700-469:localhost:880010]&@anon-20191002_181700-474:localhost:8829%0]<@anon-20191002_181700-489:localhost:8829;0]$@anon-20191002_181700-466:localhost:8829#0] @anon-20191002_181700-447:localhost:8800 0] @anon-20191002_181700-454:localhost:8800 0]=@anon-20191002_181700-483:localhost:8829<0]@anon-20191002_181700-449:localhost:88000]@anon-20191002_181700-459:localhost:88290]P@anon-20191002_181700-490:localhost:8800O0]@anon-20191002_181700-550:localhost:88000]@anon-20191002_181700-548:localhost:88000]@anon-20191002_181700-543:localhost:88000]@anon-20191002_181700-541:localhost:88000]@anon-20191002_181700-539:localhost:88000]@anon-20191002_181700-537:localhost:88000]@anon-20191002_181700-544:localhost:88290]@anon-20191002_181700-542:localhost:88290]@anon-20191002_181700-540:localhost:88290]@anon-20191002_181700-535:localhost:88000]@anon-20191002_181700-533:localhost:88000]@anon-20191002_181700-531:localhost:88000]#@anon-20191002_181700-464:localhost:8800"0]#@anon-20191002_181700-458:localhost:8800!0] @anon-20191002_181700-462:localhost:88000]@anon-20191002_181700-467:localhost:88000]@anon-20191002_181700-460:localhost:88000]@anon-20191002_181700-465:localhost:88000]@anon-20191002_181700-463:localhost:88000]@anon-20191002_181700-451:localhost:88290]@anon-20191002_181700-461:localhost:88000]@anon-20191002_181700-453:localhost:8829   * eQa!$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2584}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50"], "type": "m.room.canonical_alias", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"alias": "#__ANON__-20:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042771201, "hashes": {"sha256": "QYxKe0rDjv3ODZ0xvsF7+sJRpK/2Yx+Gjb0lMurQfEQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0K6Fzm21oB/uwdNnKv45AeA5L3Czhm9Y6bvM3xrKs//W6HkPmAUct281GS5mgsCapXMoqq3F3sA4BHOOBT/0AA"}}, "unsigned": {"age_ts": 1570042771201}}k eQac$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2583}{"auth_events": ["$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "type": "m.room.power_levels", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"users": {"@anon-20191002_181700-480:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042770362, "hashes": {"sha256": "Q8S1xKtxWLK7bhRbRaqCeQpPellJSIqbVVpaG1E+BXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QEv5wvoISZvEeyFVAnCcdNUlQHC1xWQWKlESkxPginoLkKcVcHYNmk0ENnUsndXaYuf8jlobyEpVXiJNgK34Cg"}}, "unsigned": {"age_ts": 1570042770362}}v eQay$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2582}{"auth_events": ["$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s"], "prev_events": ["$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s"], "type": "m.room.member", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-480", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-480:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042769796, "hashes": {"sha256": "PDgxjynqJVoFfJQa0+ZSyckyJK8jcBBEk7PLy7/m1pU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DnO+KHAkAStZd14fJc5yZ8XVsB9lgmhFN6TJrTPRLpacE2fozaFA4/ZkGqS2QcsYTqwupO6EXbLK45Zkqs3QDA"}}, "unsigned": {"age_ts": 1570042769796}}i eQa_$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2581}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-480:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042769048, "hashes": {"sha256": "C0VzMRf0wfkZ+HEOrBMj6MTOawLfUMCPoY+0VmRlTGY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c65piV9eFShpVF7oxLFYDpn+ItwHnc9WHiff4fAJSHWSEQ3v0+hVSoJeQwo+O7eeL63wVgxtHevhYa1hpYfEAA"}}, "unsigned": {"age_ts": 1570042769048}} ``8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!KxhGcTbEWmtgGNpdox:localhost:8800k'Q!KxhGcTbEWmtgGNpdox:localhost:8800j'Q!KxhGcTbEWmtgGNpdox:localhost:8800i'Q!KxhGcTbEWmtgGNpdox:localhost:8800h'Q!KxhGcTbEWmtgGNpdox:localhost:8800g'Q!KxhGcTbEWmtgGNpdox:localhost:8800f'Q!KxhGcTbEWmtgGNpdox:localhost:8800e'Q!KxhGcTbEWmtgGNpdox:localhost:8800d'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KeqmSjifajNKxtgqhj:localhost:8800"'Q!KeqmSjifajNKxtgqhj:localhost:8800!'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800 'Q!KeBlWUQiLYUoILKkTB:localhost:8800 'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 O'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 N'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 M'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 L'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 K'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 J'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800 /'Q!KIHYKMzkRDrJwiywwz:localhost:8800 .'Q!KIHYKMzkRDrJwiywwz:localhost:8800 -'Q!KIHYKMzkRDrJwiywwz:localhost:8800 ,'Q!KIHYKMzkRDrJwiywwz:localhost:8800 +'Q!KIHYKMzkRDrJwiywwz:localhost:8800 *'Q!KIHYKMzkRDrJwiywwz:localhost:8800 )'Q!KIHYKMzkRDrJwiywwz:localhost:8800 ('Q!KIHYKMzkRDrJwiywwz:localhost:8800 ''Q!KIHYKMzkRDrJwiywwz:localhost:8800 &'Q!KIHYKMzkRDrJwiywwz:localhost:8800 %'Q!KIHYKMzkRDrJwiywwz:localhost:8800 $'Q!KIHYKMzkRDrJwiywwz:localhost:8800 #'Q!KIHYKMzkRDrJwiywwz:localhost:8800 "'Q!KIHYKMzkRDrJwiywwz:localhost:8800 !'Q!KIHYKMzkRDrJwiywwz:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800 'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800 a} { y w u sqomkigeca~ eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800~~eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~}eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~|eeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~{eeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~zeeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~yeeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~xeeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~weeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~veeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~ueeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~teeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~seeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~reeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~qeeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~peeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~oeeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800 !+H W `   ADS47 AeQ']$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829 @eQ']$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829m?eQ? $e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibilitye>eQ/ $Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rulesg=eQ3 $6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels <eQ']$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800a;eQ' $l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create :eQ']$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829 9eQ']$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829m8eQ? $9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibilitye7eQ/ $zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rulesg6eQ3 $sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels 5eQ']$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800a4eQ' $9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800m.room.create 3eQ']$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829m2eQ? $mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibilitye1eQ/ $UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rulesg0eQ3 $+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800m.room.power_levels /eQ']$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-484:localhost:8800a.eQ' $WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800m.room.create -eQ']$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829 ,eQ']$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829g+eQ3 $blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_accessm*eQ? $ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibilitye)eQ/ $XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rulesg(eQ3 $xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels 'eQ']$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800a&eQ' $xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create %eQ']$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829p$eQ))$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800m#eQ? $Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibilitye"eQ/ $sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rulesj!eQ9 $RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_alias  gHeQa$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2588}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw"], "type": "m.room.test", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042774345, "hashes": {"sha256": "ZhoJMK/HedMedzcJ0yAI5f5Ff2SkyHKUO/PLcAlcvRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j4lpfOURLAcxoIOUq7v+v2DeVS3ywWmgPZ93pH7O2m1Mx8pbYJTzOY3dfGwR33/vax481FFj3v00tm3vyYnOCw"}}, "unsigned": {"age_ts": 1570042774345}}eQa5$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2587}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8"], "type": "m.room.aliases", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"aliases": ["#__ANON__-20:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042773627, "hashes": {"sha256": "j8jrfI7N4Fdgn46CyHPCSYaSspfZCvfpGGQH5vzJWTM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A7Ginu4tXVzDD472hiaBSVxQ+Av/WL/w9/USzK4YUvfv+ANN4y2XJP7hycAmQ6FG0McqVOofNnr4ZWzL+ieVDg"}}, "unsigned": {"age_ts": 1570042773627}}eQa$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2586}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI"], "type": "m.room.history_visibility", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042772610, "hashes": {"sha256": "SNAj+kH6sjSo0qRlsomj0rT46aNHHWKfVRvSU/TcQSc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AOdzrAIijRza2+dHPEQ4XNzL65jGGD2jk2rZrjVQRktFedAuGi0uM0Z1joMZHRqoPodfSaJVWDKsdw+JLGvzAA"}}, "unsigned": {"age_ts": 1570042772610}}teQau$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2585}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y"], "type": "m.room.join_rules", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042771935, "hashes": {"sha256": "Pd+z/EXu5PYoP+UZqAK06jo8d+0msz2b02w9uKpdl+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V19/+r8Uv08wcNObAVYdU93kda4nA412bPjyGjztxbKcagWW/FYZHcrKUB3isF14+LP2WY6GcDeVYeSUQf/uCA"}}, "unsigned": {"age_ts": 1570042771935}} FL' w L { { P % P' V +  T )oD ! }%yN#wL!uJsR y N # T)}RT)}RZx*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800 -*Q!HmkcAMkMjWRhTDJMsy:localhost:8800dd*Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc*Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb*Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa*Q!HmkcAMkMjWRhTDJMsy:localhost:8800``*Q!HmkcAMkMjWRhTDJMsy:localhost:8800__*Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^*Q!HmkcAMkMjWRhTDJMsy:localhost:8800]]*Q!HmkcAMkMjWRhTDJMsy:localhost:8800\\*Q!HhYREfUiJTpjWmOuPF:localhost:8800JJ*Q!HhYREfUiJTpjWmOuPF:localhost:8800II*Q!HhYREfUiJTpjWmOuPF:localhost:8800HH*Q!HhYREfUiJTpjWmOuPF:localhost:8800GG*Q!HhYREfUiJTpjWmOuPF:localhost:8800FF*Q!HhYREfUiJTpjWmOuPF:localhost:8800EE*Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HZqzpRgqekPOtxstVc:localhost:8800CC*Q!HZqzpRgqekPOtxstVc:localhost:8800BB*Q!HZqzpRgqekPOtxstVc:localhost:8800AA*Q!HZqzpRgqekPOtxstVc:localhost:8800@@*Q!HZqzpRgqekPOtxstVc:localhost:8800??*Q!HZqzpRgqekPOtxstVc:localhost:8800>>*Q!HZqzpRgqekPOtxstVc:localhost:8800==*Q!HZqzpRgqekPOtxstVc:localhost:8800<<*Q!HZqzpRgqekPOtxstVc:localhost:8800;;*Q!HZqzpRgqekPOtxstVc:localhost:8800::*Q!HZqzpRgqekPOtxstVc:localhost:880099R*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800-*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 t|4 l d <, \ $ T L DeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800 8eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800ЁeeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800,eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800-eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800 ~eeQ$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800 oeeQ$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800WeeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800сeeQ$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!WjlTCJVOFJkanCtkFE:localhost:8800zeeQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800ՁeeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800>eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800ہeeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800eeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800eeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800eeQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800JeeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800 ԁeeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800 O -RM H C > 9 4/*|%w rmhc TQe H!mvgUHEsfGqDkPQUvfG:localhost:8800$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgTQe G!mvgUHEsfGqDkPQUvfG:localhost:8800$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQTQe F!mvgUHEsfGqDkPQUvfG:localhost:8800$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsTQe E!mvgUHEsfGqDkPQUvfG:localhost:8800$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8TQe D!mvgUHEsfGqDkPQUvfG:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMTQe C!mvgUHEsfGqDkPQUvfG:localhost:8800$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNoT~Qe B!WYyiQAVvitxsLZKVCG:localhost:8800$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQT}Qe A!WYyiQAVvitxsLZKVCG:localhost:8800$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2YhgT|Qe @!WYyiQAVvitxsLZKVCG:localhost:8800$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcT{Qe ?!WYyiQAVvitxsLZKVCG:localhost:8800$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4TzQe >!WYyiQAVvitxsLZKVCG:localhost:8800$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMTyQe =!WYyiQAVvitxsLZKVCG:localhost:8800$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7VskTxQe V ^ N| m% FeeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800 +eeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800veeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800ށeeQ$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800AeeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800 7eeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800ueeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800 -eeQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800 eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800] eeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800 TeeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800 ȁeeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800 AeeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800teeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800HeeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800 .F ^ v   0 \!D\t9g,f)eQ%$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI!EhUxBjnSkVXpTrQlrn:localhost:8800content.bodyhelloh(eQ%$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0!laUExtszUaoCpZoyEq:localhost:8800content.bodyMessageq'eQ%-$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 9q&eQ%-$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 8q%eQ%-$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 7q$eQ%-$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 6q#eQ%-$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 5q"eQ%-$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 4q!eQ%-$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 3q eQ%-$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 2qeQ%-$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 1feQ%$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800content.bodyhellofeQ%$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800content.bodyhellofeQ%$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800content.bodyhellofeQ%$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800content.bodyhellofeQ%$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800content.bodyhelloheQ%$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800content.bodyMessagereQ%/$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 11reQ%/$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 10qeQ%-$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 9qeQ%-$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 8qeQ%-$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 7qeQ%-$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 6qeQ%-$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 5qeQ%-$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 4qeQ%-$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 3qeQ%-$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 2qeQ%-$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 1f eQ%$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800content.bodyhellof eQ%$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE!DqxFmsXPclgGqpSwdy:localhost:8800content.bodyhello ~z v r n j fb^ZVRNJFPeeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800OeeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800NeeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800MeeQ$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800LeeQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800KeeQ$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800JeeQ$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800IeeQ$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800HeeQ$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800GeeQ$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800FeeQ$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800EeeQ$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800DeeQ$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800CeeQ$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800BeeQ$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA!KIHYKMzkRDrJwiywwz:localhost:8800AeeQ$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800@eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800?eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800>eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800=eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800<eeQ$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800;eeQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800:eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:88009eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E!RSLvuCuAqKQQrKCxNq:localhost:88008eeQ$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:88007eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:88006eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:88005eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:88004eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:88003eeQ$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800 -RM H C > 9 4/*|%w rmhc T Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4T Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UT Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egTQe !CSqENqzAezaZnGktbE:localhost:8800$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4TQe !CSqENqzAezaZnGktbE:localhost:8800$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4TQe !CSqENqzAezaZnGktbE:localhost:8800$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcETQe !CSqENqzAezaZnGktbE:localhost:8800$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUTQe !CSqENqzAezaZnGktbE:localhost:8800$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQTQe !CSqENqzAezaZnGktbE:localhost:8800$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQTQe !CSqENqzAezaZnGktbE:localhost:8800$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxITQe !CSqENqzAezaZnGktbE:localhost:8800$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4TQe !CSqENqzAezaZnGktbE:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQTQe !CSqENqzAezaZnGktbE:localhost:8800$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYT~Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgT}Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawT|Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMT{Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkTzQe !vBvlJEXUSQKUYmsKcO:localhost:8800$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhoTyQe !vBvlJEXUSQKUYmsKcO:localhost:8800$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGITxQe !vBvlJEXUSQKUYmsKcO:localhost:8800$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1KkTwQe !vBvlJEXUSQKUYmsKcO:localhost:8800$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgTvQe !vBvlJEXUSQKUYmsKcO:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZATuQe !vBvlJEXUSQKUYmsKcO:localhost:8800$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpITtQe !RDEAXrqXQizuhCUFPq:localhost:8800$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIwTsQe !RDEAXrqXQizuhCUFPq:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMTrQe !RDEAXrqXQizuhCUFPq:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMTqQe !RDEAXrqXQizuhCUFPq:localhost:8800$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0TpQe !RDEAXrqXQizuhCUFPq:localhost:8800$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkToQe !RDEAXrqXQizuhCUFPq:localhost:8800$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJITnQe !RDEAXrqXQizuhCUFPq:localhost:8800$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YTmQe !RDEAXrqXQizuhCUFPq:localhost:8800$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwETlQe !RDEAXrqXQizuhCUFPq:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUTkQe !RDEAXrqXQizuhCUFPq:localhost:8800$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60TjQe !mogJVPxghalmKbblUq:localhost:8800$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0TiQe !mogJVPxghalmKbblUq:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQThQe !mogJVPxghalmKbblUq:localhost:8800$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUTgQe !mogJVPxghalmKbblUq:localhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4TfQe !mogJVPxghalmKbblUq:localhost:8800$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYTeQe !mogJVPxghalmKbblUq:localhost:8800$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPoTdQe !mogJVPxghalmKbblUq:localhost:8800$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYTcQe !mogJVPxghalmKbblUq:localhost:8800$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8TbQe !mogJVPxghalmKbblUq:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4TaQe !mogJVPxghalmKbblUq:localhost:8800$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYT`Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOIT_Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk  {eQa$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2596}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8"], "type": "m.room.guest_access", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042781679, "hashes": {"sha256": "WhvrPsb+8BeFtdnOonLbgZ/4dqE/72TP6m152f+vFo0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C3dTUG16mn/0jH6aoJn6SCyIZPdVFrEPIBkriRLy0oxdjLPl1FuoHgbQhhcnQmgdZMXWPQVIFrfFRE42qVg/Cg"}}, "unsigned": {"age_ts": 1570042781679}}eQa$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2595}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU"], "type": "m.room.history_visibility", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042780902, "hashes": {"sha256": "Jx4yHCqIgWluKBllY3obuetsbdgABpj1IWAL43cl2yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R+/LuJ46q4ffAhZ8UUcVEVsw5g4U9S0K9y7MJwF5hslBk+mXS1rDSQdYs/U8I9RhmRsRjVDxJGIwMg1rTn0eAA"}}, "unsigned": {"age_ts": 1570042780902}}teQau$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2594}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4"], "type": "m.room.join_rules", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042779921, "hashes": {"sha256": "rgWUEMc2GSRBqql9Ie8ZX81wwNnJNDBvqpw9jIqBJv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ijZsiWikCEM9d7tFcZTQIB3ItJmWQ1EZXD9Tw/pOCY9XDexLC3D9DWJKiLcAFHuhWuM8t+y5lpFfuTeRyxHmAA"}}, "unsigned": {"age_ts": 1570042779921}}keQac$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2593}{"auth_events": ["$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "type": "m.room.power_levels", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"users": {"@anon-20191002_181700-482:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042779194, "hashes": {"sha256": "aFz0Omf1MCzCgJdj5ORJB0USt1u48pb1PllAin/DBDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VyK6wI2xoBpmjWO5EfaltwBk3wQB9O6ixuqyq+6EfXnV6xCE1gX8u7lYD4pA03z8P32jYxsnF7+glZ2nd0oOBw"}}, "unsigned": {"age_ts": 1570042779194}} ?j8h6tBp> 0 v D  | J  P  n<H V $   \ *zb1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4|1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4{1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4z1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4y1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms#1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms"1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM&1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM%1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI)1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI(1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI'1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI 1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI 1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI 1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA 1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA 1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA 1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg 1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg 1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg 1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoi1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoh1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuog1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro 1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A |1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A {1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A z1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE 1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE  ceQ1$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2599}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU", "$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-483", "membership": "join"}, "depth": 9, "hashes": {"sha256": "h+y9CX/HWVa1FaNM0/JkS+USwYXHA9Ou6rKmgxGTgCU"}, "origin": "localhost:8829", "origin_server_ts": 1570042784049, "prev_events": ["$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM"], "prev_state": [], "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-483:localhost:8829", "state_key": "@anon-20191002_181700-483:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ogamB8dbiMtI9GKqlYRDVP0OxmozdFCMAxg2B2hADwfzR1Dun3PUZ3azUKtO8yaJaXZ88Ai+qwYQCexAttoBBg"}, "localhost:8829": {"ed25519:a_UxIG": "s83gwTPHOl01nw/3S76vDLlZA5P5LAGVUefe9wJ/7l6jxp9KBrfpMN2mNEwcovl9E4SDUeQUfl+dEE+MbO4UDA"}}, "unsigned": {"age": 91, "replaces_state": "$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM"}}eQa7$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2598}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E"], "type": "m.room.member", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-483", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-483:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042783174, "hashes": {"sha256": "fVY4UYeKO1oNtbkCdxQmy5p3i8wxXTVu1kCDWMfbQh4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LwPcYPFYgTAwQrHl9M3WBz2Pt3I/qsK6YGyPhjYXyScM5Zyg4/yvO58DzufOAaPg7VP8EBJ/ky9aA4cgnQ7oBg"}, "localhost:8829": {"ed25519:a_UxIG": "Y2UBxenTLCVKI9B5IQN3o2omaovF8bNPzYm5zvssCO4+CpJSZ30XQiWIzGKdQwYf3xpCF8dp2m4tom9x5bVZAw"}}, "unsigned": {"age_ts": 1570042783174, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-482:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-482:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-482", "avatar_url": null}, "sender": "@anon-20191002_181700-482:localhost:8800"}]}}HeQa$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2597}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE"], "type": "m.room.test", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042782496, "hashes": {"sha256": "5lqz4l5p9e6WbDIJ4lzynso/t1viQQrzG1AWsiaIlcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "trYruXXJh7VJXMeLHjpNDXPC5ZD/PFaZ3OGiejfuuxLnPcXnVjLR3y2xB3xqoyR0QXDKRERCMaJbZNVlcOWxDg"}}, "unsigned": {"age_ts": 1570042782496}} a} { y w u sqomkigeca~,eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800~+eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~*eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~)eeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800~(eeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~'eeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~&eeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800~%eeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~$eeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~#eeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800~"eeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~!eeQ$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~ eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800 `I%m?vHb4 | N h : T & n @  Z ,tF2zLg9 SSSY+tF-]@anon-20191002_181700-540:localhost:8829g-]@anon-20191002_181700-539:localhost:8800c-]@anon-20191002_181700-538:localhost:8800a-]@anon-20191002_181700-537:localhost:8800]-]@anon-20191002_181700-536:localhost:8800[-]@anon-20191002_181700-535:localhost:8800W-]@anon-20191002_181700-534:localhost:8800U-]@anon-20191002_181700-533:localhost:8800Q-]@anon-20191002_181700-532:localhost:8800O-]@anon-20191002_181700-531:localhost:8800K-]@anon-20191002_181700-626:localhost:8800 }-]@anon-20191002_181700-625:localhost:8800 x-]@anon-20191002_181700-624:localhost:8800 s-]@anon-20191002_181700-623:localhost:8800 n-]@anon-20191002_181700-622:localhost:8800 i-]@anon-20191002_181700-620:localhost:8800 d,[@anon-20191002_181700-61:localhost:8800-]@anon-20191002_181700-619:localhost:8800 ^-]@anon-20191002_181700-617:localhost:8800 \-]@anon-20191002_181700-616:localhost:8800 T-]@anon-20191002_181700-614:localhost:8800 L-]@anon-20191002_181700-613:localhost:8800 R-]@anon-20191002_181700-612:localhost:8800 D-]@anon-20191002_181700-611:localhost:8800 J-]@anon-20191002_181700-610:localhost:8800 B-]@anon-20191002_181700-609:localhost:8800 A-]@anon-20191002_181700-608:localhost:8800 :.-]@anon-20191002_181700-606:localhost:8800 3-]@anon-20191002_181700-605:localhost:8800 ;.-]@anon-20191002_181700-603:localhost:8800 %-]@anon-20191002_181700-601:localhost:8800 -]@anon-20191002_181700-584:localhost:8800 -]@anon-20191002_181700-583:localhost:8800 -]@anon-20191002_181700-582:localhost:8800 -]@anon-20191002_181700-580:localhost:8800 -]@anon-20191002_181700-579:localhost:8800 -]@anon-20191002_181700-578:localhost:8800 -]@anon-20191002_181700-577:localhost:8800-]@anon-20191002_181700-576:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-571:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800-]@anon-20191002_181700-568:localhost:8800-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-566:localhost:8800-]@anon-20191002_181700-565:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-563:localhost:8800-]@anon-20191002_181700-562:localhost:8800-]@anon-20191002_181700-561:localhost:8800-]@anon-20191002_181700-559:localhost:8829-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-557:localhost:8800-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-551:localhost:8800-]@anon-20191002_181700-550:localhost:8800-]@anon-20191002_181700-549:localhost:8800-]@anon-20191002_181700-548:localhost:8800{-]@anon-20191002_181700-546:localhost:8829y-]@anon-20191002_181700-545:localhost:8800u-]@anon-20191002_181700-544:localhost:8829s-]@anon-20191002_181700-543:localhost:8800o-]@anon-20191002_181700-542:localhost:8829m-]@anon-20191002_181700-541:localhost:8800i -RM H C > 9 4/*|%w rmhc TQe!iKezIvJyjkNqKayFju:localhost:8800$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8QTQe!DelfBAGvCrTXgNxmNV:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlATQe!DelfBAGvCrTXgNxmNV:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUTQe!DelfBAGvCrTXgNxmNV:localhost:8800$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTET Qe!DelfBAGvCrTXgNxmNV:localhost:8800$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwT Qe!DelfBAGvCrTXgNxmNV:localhost:8800$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMT Qe!DelfBAGvCrTXgNxmNV:localhost:8800$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0T Qe!DelfBAGvCrTXgNxmNV:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoT Qe!DelfBAGvCrTXgNxmNV:localhost:8800$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04YTQe!kOmCTyiizHqfCJdhlR:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kTQe!kOmCTyiizHqfCJdhlR:localhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYTQe!kOmCTyiizHqfCJdhlR:localhost:8800$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4TQe!kOmCTyiizHqfCJdhlR:localhost:8800$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kTQe!kOmCTyiizHqfCJdhlR:localhost:8800$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UTQe!kOmCTyiizHqfCJdhlR:localhost:8800$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQTQe!kOmCTyiizHqfCJdhlR:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fITQe!kOmCTyiizHqfCJdhlR:localhost:8800$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvoTQe!pJUItjYTOUJQFIxyiX:localhost:8800$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMTQe!pJUItjYTOUJQFIxyiX:localhost:8800$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AT~Qe~!pJUItjYTOUJQFIxyiX:localhost:8800$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwT}Qe}!pJUItjYTOUJQFIxyiX:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroT|Qe|!pJUItjYTOUJQFIxyiX:localhost:8800$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQT{Qe{!mvgUHEsfGqDkPQUvfG:localhost:8800$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8TzQez!mvgUHEsfGqDkPQUvfG:localhost:8800$V/OpdhmQ8RJOaczAkjB6oz1wDvSoapELLWXLdCBk/qcTyQey!mvgUHEsfGqDkPQUvfG:localhost:8800$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgTxQex!mvgUHEsfGqDkPQUvfG:localhost:8800$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQTwQew!mvgUHEsfGqDkPQUvfG:localhost:8800$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsTvQev!mvgUHEsfGqDkPQUvfG:localhost:8800$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8TuQeu!mvgUHEsfGqDkPQUvfG:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMTtQet!mvgUHEsfGqDkPQUvfG:localhost:8800$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNoTsQes!WYyiQAVvitxsLZKVCG:localhost:8800$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQTrQer!WYyiQAVvitxsLZKVCG:localhost:8800$Jpd7C8FYkmsWoqaJN6fijqCTBTVTUYqp6YvdiQ0i4qUTqQeq!WYyiQAVvitxsLZKVCG:localhost:8800$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcTpQep!WYyiQAVvitxsLZKVCG:localhost:8800$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4ToQeo!WYyiQAVvitxsLZKVCG:localhost:8800$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMTnQen!WYyiQAVvitxsLZKVCG:localhost:8800$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7VskTmQem!WYyiQAVvitxsLZKVCG:localhost:8800$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90TlQel!WYyiQAVvitxsLZKVCG:localhost:8800$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wTkQek!KIHYKMzkRDrJwiywwz:localhost:8800$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUTjQej!KIHYKMzkRDrJwiywwz:localhost:8800$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4TiQei!KIHYKMzkRDrJwiywwz:localhost:8800$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwThQeh!KIHYKMzkRDrJwiywwz:localhost:8800$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwTgQeg!KIHYKMzkRDrJwiywwz:localhost:8800$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMTfQef!KIHYKMzkRDrJwiywwz:localhost:8800$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0SxoTeQee!RSLvuCuAqKQQrKCxNq:localhost:8800$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds  z k eQac$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2603}{"auth_events": ["$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "type": "m.room.power_levels", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"users": {"@anon-20191002_181700-484:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042788205, "hashes": {"sha256": "VH38jehsXpz9DMiF39OBIXyJbSRUmzChJt+D+DadeS8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ldoxy1ofnV2uwpF+mVziA4V4mFsShs7BD1b1Z/RRc8DZtz3CahRnn9XeE2njalFHghXyu6y5EdTc3FEM2zmKAA"}}, "unsigned": {"age_ts": 1570042788205}}veQay$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2602}{"auth_events": ["$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo"], "prev_events": ["$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo"], "type": "m.room.member", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-484", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-484:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042787499, "hashes": {"sha256": "uY96SjLqH+M8j4UZH2lPw+CILRXtJC0d+ElDYkbhkRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hok386DTdk7JfWLQ/eaU3Y0q3E0pHROyVwO6UvgKCHWtWIZsAleJnGQmJqHIN3zhybCMBOaAAyL0QUVSmPZ6DQ"}}, "unsigned": {"age_ts": 1570042787499}}ieQa_$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2601}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-484:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042786629, "hashes": {"sha256": "K9b1QSbEdToMU9lL5u/z8HbuhQ5PSVtO6v9/phP9BiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5olDrKoZAKRnIp+5p5X+0OH2z7hK/egREF7F/940WaRXMjhhGIObhHznjGEAC6COq7DyTwADkL9RNXzeF+6kCQ"}}, "unsigned": {"age_ts": 1570042786629}}eQm$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "txn_id": "488", "stream_ordering": 2600}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds"], "type": "m.room.message", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042784995, "hashes": {"sha256": "5Oi+Xt87bUWyLZvGy1RCTtCizFSBQDIHxXq1NZiUi9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "91bUcsC+VzPPTz0wDvUSjUv2i1+cJkCPaeY18Q+5OhWFtEH4o++KmQHx4fu1+la4Nn/e2qLvjvAYZ1Nd15k7Cg"}}, "unsigned": {"age_ts": 1570042784995}} ,NC 8 - { " p  e ZOD9.|#qf VHeL$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQsha2565L=b1{TIۄx4DDVGeL$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiMsha256zENDG ĴXkNxEV31>#VFeL$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMsha2564E ga7]+FlU3VEeL$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Asha256">uЛYZ2krmGtsVDeL$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghwsha256B:rYOn{ \Y hpHrVCeL$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrosha256eHVAVrx <L ÔƺVBeL$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQsha256meo}( )U͊1VAeL$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wowsha256PUc׹|yDluŒV@eL$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRssha256ԯhwB3Uױ(5Hn)]>%V?eL$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8sha256&*q_޿KWI)v^PNWoV>eL$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNosha256i"*:x v}fR"tPV=eL$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgsha256@6i̠ TJ@ 7l^rԤXV<eL$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQsha256{TyڜUv U!6ӨJXA V;eL$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHssha256:ch#Ɂ;Udj8LE:)h{V:eL$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8sha256޾ꌬbK& &Wǣ^8%V9eL$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMsha256,DA* 1avo07h#V8eL$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNosha2560žb?)tV оY@V7eL$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQsha256{CS'u sy8k@(U& arCV6eL$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgsha256qǠ5q3㳶Ğ0 vbV5eL$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcsha256 FjԺFS?"M=b*Sy,7V4eL$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4sha256=ǂe,_ ka q2hiڳ끼* OsvV)eL$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8sha256UYF!9\nI̶Itc镯V(eL$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIsha2566V얠*l`ŐZ98MBҶrV'eL$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88sha256)FW3떈tǞy,Z V&eL$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMsha256d ӧn7|{]:5)^ɟ@{PV#eL$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUsha256s5q7WgWG *pV"eL$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4sha256Cg,a^I*"ZM?,9eWxV!eL$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwsha256P'FY 0.bP} a$J,V eL$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwsha256qyRu%T+þusMExlVeL$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMsha256tfO鬜(-k3VeL$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxosha256Z5&9pEd-{:zͪ$M/KVeL$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAsha256~z36ϗ'иb΁^In  {leQa$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2679}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A"], "type": "m.room.guest_access", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042851065, "hashes": {"sha256": "MbWMTBCnoJVW0gzHEgEkNbeLskehPRa33zTVVyGLyVg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AUn1dyMaGFwNOmVv2obTrsph7x1+w/NnVOv9NUiZFmp5A/caprplQhulx419g5HgFwOYyoRzHi88rDxJnPbLDA"}}, "unsigned": {"age_ts": 1570042851065}}keQa$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2678}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ"], "type": "m.room.history_visibility", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042850207, "hashes": {"sha256": "sKHQHH5pCzvYsLa1Icl3/K4N2x6OIZo31u+IjOiYtMI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sxnSciAO7a7cVHpfLNxtdHpTGGN20rnMtusFs8iymTHI6DJ/f62ShYuhEIhdZSCifUgxAL6iqqFOq/AXEJvnAA"}}, "unsigned": {"age_ts": 1570042850207}}tjeQau$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2677}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4"], "type": "m.room.join_rules", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042849391, "hashes": {"sha256": "8uAxIftmcfyXNK3KyjP70yN5qVOo6KJkMlpaHjWliB4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/CPp2zy2p1hZP/UPTO1oCKQjj0fdki1seE0cfMYnhp1TdqHzNz7j7blyKGQBFnEQD191n4GsY1tC3+QqLtQoDQ"}}, "unsigned": {"age_ts": 1570042849391}}kieQac$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2676}{"auth_events": ["$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "type": "m.room.power_levels", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"users": {"@anon-20191002_181700-497:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042848618, "hashes": {"sha256": "7qZTlKy7SAqv145Lja8a0cMind5rYe4Z779DmyPBJZ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "afgE0gt0XeXNnSOOErWKTMcHK1stmEVYyTtwfYnu3JpGGqPgH/N8ZivcC60OFGrBUGk9O4UBxlB0aZ07etJPDA"}}, "unsigned": {"age_ts": 1570042848618}} o\ Z  o % 6G[ eoAe#Q ]$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgm.room.test!WYyiQAVvitxsLZKVCG:localhost:8800mHmL@anon-20191002_181700-486:localhost:8800 @e'Q ]$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcm.room.member!WYyiQAVvitxsLZKVCG:localhost:8800mkm@anon-20191002_181700-486:localhost:8800,?e?Q ]$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4m.room.history_visibility!WYyiQAVvitxsLZKVCG:localhost:8800m$m@anon-20191002_181700-486:localhost:8800$>e/Q ]$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMm.room.join_rules!WYyiQAVvitxsLZKVCG:localhost:8800m#m=@anon-20191002_181700-486:localhost:8800&=e3Q ]$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vskm.room.power_levels!WYyiQAVvitxsLZKVCG:localhost:8800mm=@anon-20191002_181700-486:localhost:8800 <e'Q ]$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90m.room.member!WYyiQAVvitxsLZKVCG:localhost:8800m~m@anon-20191002_181700-486:localhost:8800; e'Q  ]$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wm.room.create!WYyiQAVvitxsLZKVCG:localhost:8800m.m߻@anon-20191002_181700-486:localhost:8800!:e)Q ]$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zkm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800m]m.@anon-20191002_181700-484:localhost:8800!9e)Q ]$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpMm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mAmK@anon-20191002_181700-484:localhost:8800!8e)Q ]$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXom.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mDmO@anon-20191002_181700-484:localhost:8800!7e)Q ]$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800m{mՉ@anon-20191002_181700-484:localhost:8800!6e)Q ]$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWMm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mm@anon-20191002_181700-484:localhost:8800!5e)Q ] $viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsYm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 mѬm=@anon-20191002_181700-484:localhost:8800!4e)Q ] $5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 m"m(@anon-20191002_181700-484:localhost:8800!3e)Q ] $hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 mQm[@anon-20191002_181700-484:localhost:8800!2e)Q ] $KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 m̰m̼@anon-20191002_181700-484:localhost:8800!1e)Q ] $mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 mm@anon-20191002_181700-484:localhost:8800!0e)Q ]$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mȤmȫ@anon-20191002_181700-484:localhost:8800/e#Q ]$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKAm.room.test!KIHYKMzkRDrJwiywwz:localhost:8800mm@anon-20191002_181700-484:localhost:8800 .e'Q ]$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUm.room.member!KIHYKMzkRDrJwiywwz:localhost:8800m mē@anon-20191002_181700-484:localhost:8800,-e?Q ]$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4m.room.history_visibility!KIHYKMzkRDrJwiywwz:localhost:8800m׾m@anon-20191002_181700-484:localhost:8800$,e/Q ]$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwm.room.join_rules!KIHYKMzkRDrJwiywwz:localhost:8800m׼m׼@anon-20191002_181700-484:localhost:8800&+e3Q ]$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwm.room.power_levels!KIHYKMzkRDrJwiywwz:localhost:8800m׹mm׺@anon-20191002_181700-484:localhost:8800 *e'Q ]$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMm.room.member!KIHYKMzkRDrJwiywwz:localhost:8800m׶m׷@anon-20191002_181700-484:localhost:8800 p% . 1 S  85y7@c JQ']e \!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175ksIQ))e Z!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYpHQ? e Y!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibility$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4hGQ/ e X!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rules$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kmFQ9 e W!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_alias$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UjEQ3 e V!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ DQ']e U!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIdCQ' e T!kOmCTyiizHqfCJdhlR:localhost:8800m.room.create$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvopBQ? e Q!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibility$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMhAQ/ e P!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rules$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Aj@Q3 e O!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw ?Q']e N!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrod>Q' e M!pJUItjYTOUJQFIxyiX:localhost:8800m.room.create$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ8=Q']ee J!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg <Q']e H!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgp;Q? e G!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibility$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQh:Q/ e F!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rules$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsj9Q3 e E!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 8Q']e D!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMd7Q' e C!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo86Q']ee B!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc 5Q']e @!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcp4Q? e ?!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibility$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4h3Q/ e >!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rules$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMj2Q3 e =!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk 1Q']e eQ' $xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create =eQ']$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829joinp<eQ))$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800mOeQ? $9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibilityeNeQ/ $zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rulesgMeQ3 $sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels LeQ']$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800joinaKeQ' $9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800m.room.createJeQ']$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829invitemIeQ? $mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibilityeHeQ/ $UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rules  7 k 9mcd]c@anon-20191002_181700-529:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgo127.0.0.1d]c@anon-20191002_181700-527:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgo127.0.0.1d]c@anon-20191002_181700-526:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAo127.0.0.1d]c@anon-20191002_181700-525:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQo127.0.0.1d]c@anon-20191002_181700-524:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQo127.0.0.1d]c@anon-20191002_181700-523:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3Evblysawo127.0.0.1d]c@anon-20191002_181700-521:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywo127.0.0.1d]c@anon-20191002_181700-520:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwo127.0.0.1a[a@anon-20191002_181700-51:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCg127.0.0.1(d]c@anon-20191002_181700-518:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQo127.0.0.1  $ 'eQ$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "491", "stream_ordering": 2610}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 3"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042793136, "hashes": {"sha256": "NZia8mxrY0lf7umuTDm9tdgvMyjHRfOnx0EkmXdtDho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KE2sYCjULBqoJHVC/SsVZtjxKDYjnpxc57KGUj1MlS773md88ROpeCoNfOciOEh2f7QpFCwsi327nfODr3jBw"}}, "unsigned": {"age_ts": 1570042793136}} &eQ$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "490", "stream_ordering": 2609}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 2", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042792676, "hashes": {"sha256": "dSowEwd54qe4aI+Z6FgcqSIqwkcEw66HOWRHve1SWPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MR7LGXFOth0yM0p1OIk8sUr9fJWiA191cq8lW/kmBDW4I/MHIMe/EBnMu2oXnhc5RQgYdAMZZ+2BN9kLbcqlCQ"}}, "unsigned": {"age_ts": 1570042792676}} %eQ$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "489", "stream_ordering": 2608}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042792100, "hashes": {"sha256": "o0+ajGaJYvbR4+xaCUdL1FjOlIWia0647jYQkLauwp4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yKWLOVAsMEjvNMknYNqbJIMAWniEJApGTbXFbkaQeN8ek0rFR02MiPEOZk9Urq9GjajIZGm/JHbG88cbxMqqDA"}}, "unsigned": {"age_ts": 1570042792100}}H$eQa$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2607}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU"], "type": "m.room.test", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042791629, "hashes": {"sha256": "Fc4nuA0RL8zd02iXML92DFn3NbMm+KO9h/xQtzShS2U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eCi42ZIVavFRKew+vsGl043hYrZBiOg1dJrECxL0Pd5rjwv9Genj/Fs0x+eRDTeYBDEvE9ciMcHv/aBtalszCw"}}, "unsigned": {"age_ts": 1570042791629}}  oM +eQ$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "495", "stream_ordering": 2614}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042794969, "hashes": {"sha256": "Uv7SgWlfg2uAK0Yjl3RjZVHo/qd2Vyx2IAd/w+720SU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2RQZHwHDeTxF00VscAgSdkvosRyzzqqsP420TGrADFJOqevbqNBfJQN0X9Ii4S4TJ5GhPTF8G8EhEyHcqZzbDg"}}, "unsigned": {"age_ts": 1570042794969}} *eQ$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "494", "stream_ordering": 2613}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042794412, "hashes": {"sha256": "Ki30Uf3h5kuZlGKJyPL1Y5PF/KmesJPRSSkbt/t3u4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j+vz52gMtWC55+VYfycF1RBUtndy+9EkRoIavyQrPJsOUUOM1MhN/s6cO7iTPA/bEW9NN3Ab+gFzU1cAnm/6Dw"}}, "unsigned": {"age_ts": 1570042794412}} )eQ$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "493", "stream_ordering": 2612}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 5", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042794018, "hashes": {"sha256": "b0amSlvSKfTDlyIY6tBvPufWPWr4pmDFvqBr1FWX3nY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nacb0YiRPYtfGjwyuVSWACkmbwIdLnSd7G4LkeBJ6xgPu2VP/0n1JULH1U6SOUndTo1wd6KBqa0n0X9aQT60AQ"}}, "unsigned": {"age_ts": 1570042794018}} (eQ$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "492", "stream_ordering": 2611}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042793553, "hashes": {"sha256": "tM5Y5U/zQswupr84QnmUkdgXOpDPH+X2Ul3yuH+MVtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MmaGv51vK9H8H4HnVvPqnpXfpHoWNS8JDcOEQkmfcOUhIBaI9rK1PPj+RBotU7d3FMpW+ADKfg90ZHlhDAMCCg"}}, "unsigned": {"age_ts": 1570042793553}} D % q  < \  dt|4 - D%eeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800eeQ$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800eeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800;eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800;eeQ$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800MeeQ$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800#eeQ$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800?eeQ$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800ЁeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800 eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800܁eeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800eeQ$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800B IeeQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800 teeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800 ?eeQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800 WA3Q$lolredact:localhost:42455$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800 =fAQQ$lolredact:localhost:42455$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 <eeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800 ,eeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800.eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800 ?eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800VeeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800IeeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800[ Ce: y N # w L ! u J  i>c8 T)}R' { Pk@g< % qFoDmBe:*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!TSFcaXDBqrCREHRHxv:localhost:8800  '*Q!TSFcaXDBqrCREHRHxv:localhost:8800  &*Q!TSFcaXDBqrCREHRHxv:localhost:8800  %*Q!TSFcaXDBqrCREHRHxv:localhost:8800  $*Q!TSFcaXDBqrCREHRHxv:localhost:8800  #*Q!TSFcaXDBqrCREHRHxv:localhost:8800  "*Q!SvKwEALYoNreUvqAlp:localhost:8800pu*Q!SvKwEALYoNreUvqAlp:localhost:8800ot*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!TWETXUgfFZafDdbqLS:localhost:8800//*Q!TWETXUgfFZafDdbqLS:localhost:8800..*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SvKwEALYoNreUvqAlp:localhost:8800v{*Q!SvKwEALYoNreUvqAlp:localhost:8800uz*Q!SvKwEALYoNreUvqAlp:localhost:8800ty*Q!SvKwEALYoNreUvqAlp:localhost:8800sx*Q!SvKwEALYoNreUvqAlp:localhost:8800rw*Q!SvKwEALYoNreUvqAlp:localhost:8800qv  oL/eQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "499", "stream_ordering": 2618}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 11"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042796893, "hashes": {"sha256": "jybehqY2+O55+Cos+MlvhuRrTout8M7zsve0XMXGcRg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LnF0LlifLEtugKtYwMD5o/4c3YxSDUFzbGRFJqDIc5CR7YW9Ht0G2UEMIb3zhmfbKA4VfX103V2LUjvysQ5dBw"}}, "unsigned": {"age_ts": 1570042796893}}.eQ$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "498", "stream_ordering": 2617}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 10"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042796353, "hashes": {"sha256": "GgZPF4CvxnZ4FSUHi2d0DMRL/r5wStmxLUahFo9y55g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rOzPxaH1GUk1vB/9mpy5EZ3nZX7RGNnQ4sQP+reADCZTHWPghncEWE3F+lOmp48s9qFF5xkfDZ48emx9WRcsBQ"}}, "unsigned": {"age_ts": 1570042796353}} -eQ$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "497", "stream_ordering": 2616}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042795844, "hashes": {"sha256": "l39wa0n3Hh5GEzpxFEnNVyD3cwusU6GWEpUgr2YTTEo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M8UNnaUP0oY/KUX398Q8u+jlUUdyfnHe9xFYEFy0SF8uoTFGO7g2blFwq8zj5xSjHYe5tjvKnO8pwcsp87Z7BA"}}, "unsigned": {"age_ts": 1570042795844}} ,eQ$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "496", "stream_ordering": 2615}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042795387, "hashes": {"sha256": "HHOTTAJN/08vNMWwM3FeFgydGachMwha1I4V3NeR4NI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oklQMQSt6Oa6tEpOKa3oqO/AoUOlcUoIYwmN7T4wJ2ApA6/Pj3zu1a5Y8ySsa+vThECdjPNmIwWyPhUrkKElAQ"}}, "unsigned": {"age_ts": 1570042795387}}   *t3eQau$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2622}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk"], "type": "m.room.join_rules", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042800163, "hashes": {"sha256": "jvtlarT5lKK6NQ8U3/42oR1U92KW7TwE+WMdEq9sueE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q7B+D+E4jZf+J3IXUqvBqSwBCsnbrFK46drxPDZ6OQweLKUDXd4KA2VqGeE+CjyskI4pp2BsqCAd7xSe5dT2AA"}}, "unsigned": {"age_ts": 1570042800163}}k2eQac$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2621}{"auth_events": ["$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "type": "m.room.power_levels", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"users": {"@anon-20191002_181700-486:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042799316, "hashes": {"sha256": "/bmpaeFKqbCJdyH0zDb1v97H33oE4GJGfIQg/x0OyAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Is32sJEXZfsl0xZGYmeYJi3jCifLmV7fTWFYt2EQK0PKTWdeOAzfrGBX/xBPkBp/OUZVHBW84PBCTBXzq2BDA"}}, "unsigned": {"age_ts": 1570042799316}}v1eQay$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2620}{"auth_events": ["$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w"], "prev_events": ["$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w"], "type": "m.room.member", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-486", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-486:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042798718, "hashes": {"sha256": "IageTuTXk9m+yuXODs3EqbkIbAOMe3gqlFT8ez3j47U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bal1iz8TmIGMAGsbP6zIDsFhS+AzebItamp6MqoVzuy9p76h3yiGhPgNeLiB0neFgrBJfZPW9Zn+0rXMIADJBw"}}, "unsigned": {"age_ts": 1570042798718}}i0eQa_$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2619}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-486:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042797870, "hashes": {"sha256": "4OjulEudpZJHiDvHvh9zOcbYp3f6jQRN84SxVye3sU8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0BlZsNgAeai7BTV0n6N+uVzUC6dy3nW/yj5Kx1Fk2HTUCMz0KtB7z8JHa+1WMKm+W7ferrrsVhmNvqiJt7FzAg"}}, "unsigned": {"age_ts": 1570042797870}} Ci> s u J # w L !   Hm qFoDk@ { P % y NB }R'T) 8ce:g<i>+++VX*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800~~*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bOSxzttDtclnrWnLov:localhost:8800gg*Q!bOSxzttDtclnrWnLov:localhost:8800ff*Q!bOSxzttDtclnrWnLov:localhost:8800ee*Q!bOSxzttDtclnrWnLov:localhost:8800dd*Q!bOSxzttDtclnrWnLov:localhost:8800cc*Q!bOSxzttDtclnrWnLov:localhost:8800bb*Q!bOSxzttDtclnrWnLov:localhost:8800aa*Q!bOSxzttDtclnrWnLov:localhost:8800``*Q!bOSxzttDtclnrWnLov:localhost:8800__*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800 !h$ w   :  ',P[/:?ch Q']e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUiQ3 e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_access$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEoQ? e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibility$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwgQ/ e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rules$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMiQ3 e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 Q']e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaocQ' e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y Q']e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175krQ))e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYoQ? e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibility$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4gQ/ e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rules$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7klQ9 e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_alias$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UiQ3 e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ Q']e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIcQ' e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.create$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvooQ? e!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibility$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMgQ/ e!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rules$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Ai Q3 e~!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw Q']e}!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroc Q' e|!pJUItjYTOUJQFIxyiX:localhost:8800m.room.create$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ Q']e{!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 Q']ez!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$V/OpdhmQ8RJOaczAkjB6oz1wDvSoapELLWXLdCBk/qc Q']ey!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgoQ? ex!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibility$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQgQ/ ew!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rules$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsiQ3 ev!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 Q']eu!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMcQ' et!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo Q']es!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ Q']er!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$Jpd7C8FYkmsWoqaJN6fijqCTBTVTUYqp6YvdiQ0i4qU Q']eq!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcoQ? ep!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibility$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4g~Q/ eo!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rules$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM X qFoDm  s H  % ) ! u J y N #Bk@i w LTeg<c8 :>}R' { P +*Q!bNSXSTadOMhIrYpMzH:localhost:8800{*Q!bNSXSTadOMhIrYpMzH:localhost:8800z*Q!bNSXSTadOMhIrYpMzH:localhost:8800y*Q!aZwMKYDXJRlSKjQNWM:localhost:88006Y*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ' >*Q!bNSXSTadOMhIrYpMzH:localhost:8800~*Q!bNSXSTadOMhIrYpMzH:localhost:8800}*Q!bNSXSTadOMhIrYpMzH:localhost:8800|*Q!bNSXSTadOMhIrYpMzH:localhost:8800v*Q!bNSXSTadOMhIrYpMzH:localhost:8800u*Q!bNSXSTadOMhIrYpMzH:localhost:8800t*Q!aknLNLxfChlLvFYhkJ:localhost:8800$*Q!aknLNLxfChlLvFYhkJ:localhost:8800#*Q!bNSXSTadOMhIrYpMzH:localhost:8800x*Q!bNSXSTadOMhIrYpMzH:localhost:8800w*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aiOswwhoZqjhcjzbzc:localhost:8800bT*Q!aiOswwhoZqjhcjzbzc:localhost:8800aS*Q!aiOswwhoZqjhcjzbzc:localhost:8800`R*Q!aiOswwhoZqjhcjzbzc:localhost:8800_Q*Q!aiOswwhoZqjhcjzbzc:localhost:8800^P*Q!aiOswwhoZqjhcjzbzc:localhost:8800]O*Q!aiOswwhoZqjhcjzbzc:localhost:8800\N*Q!aiOswwhoZqjhcjzbzc:localhost:8800[M*Q!anErKtXIsVKEEsrzWM:localhost:8800SE*Q!anErKtXIsVKEEsrzWM:localhost:8800RD*Q!anErKtXIsVKEEsrzWM:localhost:8800QC*Q!anErKtXIsVKEEsrzWM:localhost:8800PB*Q!anErKtXIsVKEEsrzWM:localhost:8800OA*Q!anErKtXIsVKEEsrzWM:localhost:8800N@*Q!bLWyXaXdvUhdSAooUz:localhost:8800 , C*Q!bLWyXaXdvUhdSAooUz:localhost:8800 + B*Q!bLWyXaXdvUhdSAooUz:localhost:8800 * A*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) @*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( ?*Q!atnRTMliktaVUhMVID:localhost:8800 G*Q!atnRTMliktaVUhMVID:localhost:8800  D*Q!atnRTMliktaVUhMVID:localhost:8800  C*Q!atnRTMliktaVUhMVID:localhost:8800  B+*Q!aiOswwhoZqjhcjzbzc:localhost:8800pb*Q!aiOswwhoZqjhcjzbzc:localhost:8800i[*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800(*Q!aknLNLxfChlLvFYhkJ:localhost:8800'*Q!aknLNLxfChlLvFYhkJ:localhost:8800&*Q!aknLNLxfChlLvFYhkJ:localhost:8800%*Q!bNSXSTadOMhIrYpMzH:localhost:8800s*Q!atnRTMliktaVUhMVID:localhost:8800 F*Q!atnRTMliktaVUhMVID:localhost:8800  E*Q!aknLNLxfChlLvFYhkJ:localhost:8800)  w^H6eQa$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2625}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc"], "type": "m.room.test", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042803016, "hashes": {"sha256": "9mP7lzB0YfChHMU+H8eseFsk+xRFfZIjst3C9XGdkjc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "juxRO4rnbGzeVj8dV0ZD/ngCMirq+a4PJ3YfH3uCJvZYWl9TTlQrc9l8QFGRDMcWcGLtQNrvQ4PFDAJRKRoiDw"}}, "unsigned": {"age_ts": 1570042803016}}5eQa7$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2624}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4"], "type": "m.room.member", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-487", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-487:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042802283, "hashes": {"sha256": "HVPnd+TX0sqeeL3wDOnNs38KDoDYsJZod6QbgHESmgw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BpTwH9rU70ftePHtJibiNz15iS4cI7s1BqNb7ofiTMK4xKYykNDVB9e22E0ftLmk90zF3Mml1U72pYwc4RxzDQ"}, "localhost:8829": {"ed25519:a_UxIG": "riettCT2dj5wBQEa/H/IRr2nl5O4Z4Kq0hSN5zJsP+gABOMn2eqw4b+apDbANlE3GBdEUEUmtC18BpfqY0LrBw"}}, "unsigned": {"age_ts": 1570042802283, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-486:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-486:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-486", "avatar_url": null}, "sender": "@anon-20191002_181700-486:localhost:8800"}]}}4eQa$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2623}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM"], "type": "m.room.history_visibility", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042801188, "hashes": {"sha256": "LQdu+DhZRWfYzhJItyyzcHUmkmyhngkTzzZNArQpoug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1w2bOJIhRRK6NMKBy9n2pKipdWt8cGzwlwCygrCMPRpdFVKC8GRdRbIVtcMAzu36qlCIs2U4wIVOH2CbYX0zCA"}}, "unsigned": {"age_ts": 1570042801188}} a} { y w u sqomkigeca~KeeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~JeeQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~IeeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800~HeeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~GeeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800~FeeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800~EeeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~DeeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800~CeeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800~BeeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~AeeQ$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~@eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800~?eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~>eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~=eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~<eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800~;eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~:eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~9eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~8eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~7eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~6eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~5eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~4eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~3eeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~2eeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~1eeQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~0eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800~/eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~.eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~-eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800 ~z v r n j fb^ZVRNJFneeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800meeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800leeQ$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800keeQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800jeeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10!kOmCTyiizHqfCJdhlR:localhost:8800ieeQ$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800heeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800geeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800feeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800eeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800deeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800ceeQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800beeQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM!pJUItjYTOUJQFIxyiX:localhost:8800aeeQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800`eeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800_eeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800^eeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800]eeQ$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800\eeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800[eeQ$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800ZeeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo!mvgUHEsfGqDkPQUvfG:localhost:8800YeeQ$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg!mvgUHEsfGqDkPQUvfG:localhost:8800XeeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ!mvgUHEsfGqDkPQUvfG:localhost:8800WeeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800VeeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800UeeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800TeeQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800SeeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg!WYyiQAVvitxsLZKVCG:localhost:8800ReeQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800QeeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@                                                                                              ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B ~ A } @ | ? { > z = y < x ; w : v 9 u 8 t 7 s 6 r 5 q 4 p 3 o 2 n 1 m 0 l / k . j - i , h + g * f ) e ( d ' c & b % a $ ` # _ " ^ ! ] \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K I H G F  E  D  C  B  A  @  ?  > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !            J I H G F E  D  C  B  A  @  ?  >  = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                             Gk:eQac$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2629}{"auth_events": ["$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM"], "prev_events": ["$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM"], "type": "m.room.power_levels", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {"users": {"@anon-20191002_181700-488:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042806321, "hashes": {"sha256": "hcR3CRcssPNwEirU9gTKT+2+9eWby824DgMoyVFIZ00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xf2OYqzsj8XVmSzQSqBq2EBu2SNZ7EPscvAaOZRSy/KbjlEz1NOsY3dtQ/+TmYhFcF3uw4AP8U/4jI7bsIO6Cw"}}, "unsigned": {"age_ts": 1570042806321}}v9eQay$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2628}{"auth_events": ["$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo"], "prev_events": ["$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo"], "type": "m.room.member", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-488", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-488:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042805720, "hashes": {"sha256": "OuXVbubneG+7Rf+E2WAZCUcPWN4FGbmxfqtguHR90Zk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dEaFhCt67WSFQ4Iz62pXO3F0Z16333M16XXc2Rf8Z7/wpr8yrXHh6T1V1NOx0lqhyDqjAchvbp9qSEXsEKm0Bg"}}, "unsigned": {"age_ts": 1570042805720}}i8eQa_$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2627}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-488:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042804862, "hashes": {"sha256": "uv6QSZDqtG7IKrZjIknxdhnZw0cbn/+o3ktopDyDBzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iIIRvPggRj2aVgWggSrwvsv+XIx+IjwCiqpxAyeAT7j/c9Vd1+wdn9JhVsEHua/N21YiACNOwkkAg78Z2Go3DQ"}}, "unsigned": {"age_ts": 1570042804862}}N7eQc'$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800{"outlier": false, "stream_ordering": 2626}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "Uavv/CfhCFMpOv1EimdC2+MSUGZQhZHzE9re7VxptyA"}, "origin": "localhost:8829", "origin_server_ts": 1570042803604, "prev_events": ["$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg"], "prev_state": [], "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-487:localhost:8829", "state_key": "@anon-20191002_181700-487:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1nfhs6KjIMkXh5E6fv4X5nsGTb2/6FNtFwdBRr+EwYIm/GBH0/5ygJvHoy6D1JvBLgyNY4bsjViBFauy8jRUCA"}, "localhost:8829": {"ed25519:a_UxIG": "vR7uKZwnWxxsjHxzVyz4k2X+h2h2h2pNplDO/1tLIC/DabmcPNVgxSxthFdiSJF1JKLvPdyNm+mZeQM2YshIAA"}}, "unsigned": {"age": 111, "replaces_state": "$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc"}} Z\ l  p * <FO _ Z,Ye?Q ]$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4m.room.history_visibility!kOmCTyiizHqfCJdhlR:localhost:8800mDmF@anon-20191002_181700-491:localhost:8800$Xe/Q ]$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7km.room.join_rules!kOmCTyiizHqfCJdhlR:localhost:8800mAomBw@anon-20191002_181700-491:localhost:8800)We9Q ]$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5Um.room.canonical_alias!kOmCTyiizHqfCJdhlR:localhost:8800m>om?@anon-20191002_181700-491:localhost:8800&Ve3Q ]$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQm.room.power_levels!kOmCTyiizHqfCJdhlR:localhost:8800m;0m 9 4/*|%w rmhc T1Qe u!rpVYLTJGcFNdGzFzXj:localhost:8800$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQT0Qe t!rpVYLTJGcFNdGzFzXj:localhost:8800$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4T/Qe s!rpVYLTJGcFNdGzFzXj:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8T.Qe r!rpVYLTJGcFNdGzFzXj:localhost:8800$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1AT-Qe q!iKezIvJyjkNqKayFju:localhost:8800$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4T,Qe p!iKezIvJyjkNqKayFju:localhost:8800$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64T+Qe o!iKezIvJyjkNqKayFju:localhost:8800$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0YT*Qe n!iKezIvJyjkNqKayFju:localhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgT)Qe m!iKezIvJyjkNqKayFju:localhost:8800$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4T(Qe l!iKezIvJyjkNqKayFju:localhost:8800$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6QT'Qe k!iKezIvJyjkNqKayFju:localhost:8800$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8T&Qe j!iKezIvJyjkNqKayFju:localhost:8800$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0AT%Qe i!iKezIvJyjkNqKayFju:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAT$Qe h!iKezIvJyjkNqKayFju:localhost:8800$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8QT#Qe g!DelfBAGvCrTXgNxmNV:localhost:8800$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4T"Qe f!DelfBAGvCrTXgNxmNV:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAT!Qe e!DelfBAGvCrTXgNxmNV:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUT Qe d!DelfBAGvCrTXgNxmNV:localhost:8800$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWoTQe c!DelfBAGvCrTXgNxmNV:localhost:8800$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTETQe b!DelfBAGvCrTXgNxmNV:localhost:8800$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwTQe a!DelfBAGvCrTXgNxmNV:localhost:8800$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMTQe `!DelfBAGvCrTXgNxmNV:localhost:8800$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0TQe _!DelfBAGvCrTXgNxmNV:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoTQe ^!DelfBAGvCrTXgNxmNV:localhost:8800$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04YTQe ]!kOmCTyiizHqfCJdhlR:localhost:8800$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkITQe \!kOmCTyiizHqfCJdhlR:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kTQe [!kOmCTyiizHqfCJdhlR:localhost:8800$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10TQe Z!kOmCTyiizHqfCJdhlR:localhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYTQe Y!kOmCTyiizHqfCJdhlR:localhost:8800$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4TQe X!kOmCTyiizHqfCJdhlR:localhost:8800$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kTQe W!kOmCTyiizHqfCJdhlR:localhost:8800$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UTQe V!kOmCTyiizHqfCJdhlR:localhost:8800$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQTQe U!kOmCTyiizHqfCJdhlR:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fITQe T!kOmCTyiizHqfCJdhlR:localhost:8800$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvoTQe S!pJUItjYTOUJQFIxyiX:localhost:8800$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQTQe R!pJUItjYTOUJQFIxyiX:localhost:8800$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiMT Qe Q!pJUItjYTOUJQFIxyiX:localhost:8800$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMT Qe P!pJUItjYTOUJQFIxyiX:localhost:8800$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AT Qe O!pJUItjYTOUJQFIxyiX:localhost:8800$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwT Qe N!pJUItjYTOUJQFIxyiX:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroT Qe M!pJUItjYTOUJQFIxyiX:localhost:8800$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQTQe L!mvgUHEsfGqDkPQUvfG:localhost:8800$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wowTQe K!mvgUHEsfGqDkPQUvfG:localhost:8800$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRsTQe J!mvgUHEsfGqDkPQUvfG:localhost:8800$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8TQe I!mvgUHEsfGqDkPQUvfG:localhost:8800$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo  &AeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow!mvgUHEsfGqDkPQUvfG:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 2636}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8"], "content": {}, "depth": 10, "hashes": {"sha256": "2obAP9fARp+yhmplJdF4tq7WS9zY7SsdjvchT/XyCzE"}, "origin": "localhost:8829", "origin_server_ts": 1570042810900, "prev_events": ["$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs"], "prev_state": [], "redacts": "$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-489:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "hf/PMY+bK4He0Okr+olz9O5EawNdZU6OvWK+71OQImAYBkyQze9R5m6lghMWgMknGGXX5VvrhsZ6s9dk+rP6DQ"}}, "unsigned": {"age_ts": 1570042810900}}&L@eQc#$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800{"outlier": false, "stream_ordering": 2635}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8"], "content": {}, "depth": 9, "hashes": {"sha256": "NKCe+ERY4IMnVJR1vZf/hONxchQN9PdnyhTZkACTdhA"}, "origin": "localhost:8829", "origin_server_ts": 1570042810881, "prev_events": ["$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8"], "prev_state": [], "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-489:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "H+KGbu9X6CqLhUg2yokpX/RAXDWqqjD1/PodUfA8O6KcS8/8FogIYLn8U56WL5QnJoGRNrJP65L/VSNaEXT6DA"}}, "unsigned": {"age_ts": 1570042810881}}3?eQ1!$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2634}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-489", "membership": "join"}, "depth": 8, "hashes": {"sha256": "VQZGBpGqOzsULc80vrwJ2DLet3pD0PKt1UuiaYvc2aM"}, "origin": "localhost:8829", "origin_server_ts": 1570042810250, "prev_events": ["$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo"], "prev_state": [], "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-489:localhost:8829", "state_key": "@anon-20191002_181700-489:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r7Qky41U3tiqWDR+BBFhauJZaDr4gFNNl0WqfQyqFBsGBgqR/NkCVlp423LZN8jGp0UCXVRbEUh+NmjqHUkDBw"}, "localhost:8829": {"ed25519:a_UxIG": "JObi4Hc53TbaHlXHyTzpSfKaeTe1SV04p9uly1qbC3YAFa+z6wK+YyBWckllxk8vBmYxt/PFKafkS6VHNGZJAA"}}, "unsigned": {"age": 90, "replaces_state": "$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg"}}H>eQa$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2633}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM"], "prev_events": ["$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg"], "type": "m.room.test", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042809714, "hashes": {"sha256": "Bz39mrpII/ujBVu2Yi10+IFZIctuRdTXKzAc36Ib2D4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b7EjYHHdQ4rJiZS6E3ARKfhSaClZhBPjm36629H7/LZhNQ374KNXXErOaBEJZirOl5lJp4v+dvzK/Pm0fiueDQ"}}, "unsigned": {"age_ts": 1570042809714}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1ye$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1xe$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE1we$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1ve$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1ue$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1te$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun41se$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM1re$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE1qe$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc1pe$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc1oe$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM1ne$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY1me$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg1le$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx81ke$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R981je$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI1ie$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg1he$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo1ge$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1fe$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1ee$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1de$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu81ce$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ1be$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI1ae$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE1`e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1_e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41^e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k1]e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1\e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1[e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1Ze$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41Ye$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f81Xe$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A1We$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv41Ve$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641Ue$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y1Te$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg1Se$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk41Re$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q1Qe$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb81Pe$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A1Oe$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA1Ne$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q1Me$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC41Le$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA1Ke$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU1Je$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo1Ie$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE1He$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw1Ge$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM1Fe$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i01Ee$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao1De$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y1Ce$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI1Be$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k1Ae$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF101@e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY1?e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU41>e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k1=e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U1<e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ1;e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI1:e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo19e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ18e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM17e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM16e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A15e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw~14e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro}13e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ|12e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow{11e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs{10e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8{1/e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNoy , k x ' K 4 A N [ u$1Xhe>^r!P]Q@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800xP]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800iP]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800jP]Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800kP]Q@anon-20191002_181700-515:localhost:8829!IlGJpjzrvvAFuwTAgo:localhost:8800_P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800~P]Q@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800}P]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800|P]Q@anon-20191002_181700-546:localhost:8829!ZvLVbnHjeymRiFIkYr:localhost:8800{P]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800zP]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800yP]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800wP]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800vP]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800uP]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800tP]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800sP]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800rP]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800qP]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800pP]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800oP]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800nP]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800mP]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800lP]Q@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800gP]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800hP]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800fP]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800eP]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800dP]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800cP]Q@anon-20191002_181700-517:localhost:8829!AoAvmnwMkhYBQsbCsL:localhost:8800bP]Q@anon-20191002_181700-517:localhost:8829!AoAvmnwMkhYBQsbCsL:localhost:8800aP]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800`P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800  w +iIeQa_$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2644}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-491:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042819696, "hashes": {"sha256": "Rt4IUGolRoPlBO20WjP/UalYZt3ca6d+v+9BfojWzhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+30zZzquupCdswSfVRXPfg3xOpqj9Y4sXLuvNl1Ncyzv6P/5Ss7CwH6Jsxh6US9PC0Suk+QEnfRX/GNML3SfCw"}}, "unsigned": {"age_ts": 1570042819696}}HeQk$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "txn_id": "501", "stream_ordering": 2643}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM"], "type": "m.room.message", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042817968, "hashes": {"sha256": "QIGmc9G8ZwvbEfZb83Eu16jj1DpG4oKoysRXgTu6hHk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LH05YqNhoRj26xd82YILxoORnG3VassBKEAGmA/h4/+6Ogtz7rmL4xAXYomsbhmERlHGc6iRHgRd986chEVcDQ"}}, "unsigned": {"age_ts": 1570042817968}}HGeQa$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2642}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM"], "type": "m.room.test", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042817370, "hashes": {"sha256": "uT5vTKswl7zFe9rBb6lRhtqM5ML4HW16E1ct3b7BRp8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yWNitSIASyfaqZLEGMHllhVhEZFov4H7JmxYUQfxttCgcDgaG797DAFCvRITW5pjTDePU/KkIp6l1AUI9GKnDA"}}, "unsigned": {"age_ts": 1570042817370}}FeQa$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2641}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A"], "type": "m.room.history_visibility", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042816295, "hashes": {"sha256": "p1WWBki+eBksIrDj9jfnMHyL1saSAM5T5wNmLpNbp9U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PWsPreVnycIMdXoB8QfjnwEQhmzaZGrFzsXr1yAS8CwKcnoycpKj8W8Uz/fZ4rOuAs48xuHV4DynTUHiI/ueBA"}}, "unsigned": {"age_ts": 1570042816295}} K3{MvHd6 R $ l >  Z , t F  b 4 |N j<V*uGak=W)+[@anon-20191002_181700-60:localhost:8800Q-]@anon-20191002_181700-541:localhost:8800#+[@anon-20191002_181700-53:localhost:8800J-]@anon-20191002_181700-539:localhost:8800"-]@anon-20191002_181700-538:localhost:8800 -]@anon-20191002_181700-537:localhost:8800!-]@anon-20191002_181700-536:localhost:8800-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-534:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-609:localhost:8800^-]@anon-20191002_181700-608:localhost:8800]-]@anon-20191002_181700-606:localhost:8800[-]@anon-20191002_181700-605:localhost:8800Z-]@anon-20191002_181700-604:localhost:8800\-]@anon-20191002_181700-603:localhost:8800X-]@anon-20191002_181700-602:localhost:8800Y-]@anon-20191002_181700-601:localhost:8800V-]@anon-20191002_181700-600:localhost:8800W*Y@anon-20191002_181700-5:localhost:8800+[@anon-20191002_181700-59:localhost:8800P-]@anon-20191002_181700-598:localhost:8800T-]@anon-20191002_181700-597:localhost:8800S-]@anon-20191002_181700-596:localhost:8800R-]@anon-20191002_181700-595:localhost:8800Q-]@anon-20191002_181700-593:localhost:8800P-]@anon-20191002_181700-591:localhost:8800O-]@anon-20191002_181700-590:localhost:8800N+[@anon-20191002_181700-58:localhost:8800O-]@anon-20191002_181700-589:localhost:8800M-]@anon-20191002_181700-588:localhost:8800L-]@anon-20191002_181700-587:localhost:8800K-]@anon-20191002_181700-586:localhost:8800J-]@anon-20191002_181700-585:localhost:8800I-]@anon-20191002_181700-584:localhost:8800H-]@anon-20191002_181700-583:localhost:8800G-]@anon-20191002_181700-582:localhost:8800F-]@anon-20191002_181700-581:localhost:8800E-]@anon-20191002_181700-580:localhost:8800D+[@anon-20191002_181700-57:localhost:8800N-]@anon-20191002_181700-579:localhost:8800C-]@anon-20191002_181700-578:localhost:8800B-]@anon-20191002_181700-577:localhost:8800A-]@anon-20191002_181700-576:localhost:8800@-]@anon-20191002_181700-575:localhost:8800?-]@anon-20191002_181700-574:localhost:8800>-]@anon-20191002_181700-573:localhost:8800=-]@anon-20191002_181700-572:localhost:8800<-]@anon-20191002_181700-571:localhost:8800;-]@anon-20191002_181700-570:localhost:8800:+[@anon-20191002_181700-56:localhost:8800M-]@anon-20191002_181700-569:localhost:88009-]@anon-20191002_181700-568:localhost:88008-]@anon-20191002_181700-567:localhost:88007-]@anon-20191002_181700-566:localhost:88006-]@anon-20191002_181700-565:localhost:88005-]@anon-20191002_181700-564:localhost:88004-]@anon-20191002_181700-563:localhost:88003-]@anon-20191002_181700-562:localhost:88002-]@anon-20191002_181700-561:localhost:88001-]@anon-20191002_181700-560:localhost:88000+[@anon-20191002_181700-55:localhost:8800L-]@anon-20191002_181700-558:localhost:8800/-]@anon-20191002_181700-557:localhost:8800.-]@anon-20191002_181700-556:localhost:8800--]@anon-20191002_181700-555:localhost:8800,-]@anon-20191002_181700-554:localhost:8800+-]@anon-20191002_181700-552:localhost:8800*-]@anon-20191002_181700-551:localhost:8800)-]@anon-20191002_181700-550:localhost:8800(+[@anon-20191002_181700-54:localhost:8800K-]@anon-20191002_181700-549:localhost:8800'-]@anon-20191002_181700-548:localhost:8800&-]@anon-20191002_181700-545:localhost:8800%-]@anon-20191002_181700-543:localhost:8800$ K3{MvHd6 R $ l >  Z , t F  b 4 |N j<V*uGak=W)+[@anon-20191002_181700-60:localhost:8800Q-]@anon-20191002_181700-541:localhost:8800#+[@anon-20191002_181700-53:localhost:8800J-]@anon-20191002_181700-539:localhost:8800"-]@anon-20191002_181700-538:localhost:8800 -]@anon-20191002_181700-537:localhost:8800!-]@anon-20191002_181700-536:localhost:8800-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-534:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-609:localhost:8800^-]@anon-20191002_181700-608:localhost:8800]-]@anon-20191002_181700-606:localhost:8800[-]@anon-20191002_181700-605:localhost:8800Z-]@anon-20191002_181700-604:localhost:8800\-]@anon-20191002_181700-603:localhost:8800X-]@anon-20191002_181700-602:localhost:8800Y-]@anon-20191002_181700-601:localhost:8800V-]@anon-20191002_181700-600:localhost:8800W*Y@anon-20191002_181700-5:localhost:8800+[@anon-20191002_181700-59:localhost:8800P-]@anon-20191002_181700-598:localhost:8800T-]@anon-20191002_181700-597:localhost:8800S-]@anon-20191002_181700-596:localhost:8800R-]@anon-20191002_181700-595:localhost:8800Q-]@anon-20191002_181700-593:localhost:8800P-]@anon-20191002_181700-591:localhost:8800O-]@anon-20191002_181700-590:localhost:8800N+[@anon-20191002_181700-58:localhost:8800O-]@anon-20191002_181700-589:localhost:8800M-]@anon-20191002_181700-588:localhost:8800L-]@anon-20191002_181700-587:localhost:8800K-]@anon-20191002_181700-586:localhost:8800J-]@anon-20191002_181700-585:localhost:8800I-]@anon-20191002_181700-584:localhost:8800H-]@anon-20191002_181700-583:localhost:8800G-]@anon-20191002_181700-582:localhost:8800F-]@anon-20191002_181700-581:localhost:8800E-]@anon-20191002_181700-580:localhost:8800D+[@anon-20191002_181700-57:localhost:8800N-]@anon-20191002_181700-579:localhost:8800C-]@anon-20191002_181700-578:localhost:8800B-]@anon-20191002_181700-577:localhost:8800A-]@anon-20191002_181700-576:localhost:8800@-]@anon-20191002_181700-575:localhost:8800?-]@anon-20191002_181700-574:localhost:8800>-]@anon-20191002_181700-573:localhost:8800=-]@anon-20191002_181700-572:localhost:8800<-]@anon-20191002_181700-571:localhost:8800;-]@anon-20191002_181700-570:localhost:8800:+[@anon-20191002_181700-56:localhost:8800M-]@anon-20191002_181700-569:localhost:88009-]@anon-20191002_181700-568:localhost:88008-]@anon-20191002_181700-567:localhost:88007-]@anon-20191002_181700-566:localhost:88006-]@anon-20191002_181700-565:localhost:88005-]@anon-20191002_181700-564:localhost:88004-]@anon-20191002_181700-563:localhost:88003-]@anon-20191002_181700-562:localhost:88002-]@anon-20191002_181700-561:localhost:88001-]@anon-20191002_181700-560:localhost:88000+[@anon-20191002_181700-55:localhost:8800L-]@anon-20191002_181700-558:localhost:8800/-]@anon-20191002_181700-557:localhost:8800.-]@anon-20191002_181700-556:localhost:8800--]@anon-20191002_181700-555:localhost:8800,-]@anon-20191002_181700-554:localhost:8800+-]@anon-20191002_181700-552:localhost:8800*-]@anon-20191002_181700-551:localhost:8800)-]@anon-20191002_181700-550:localhost:8800(+[@anon-20191002_181700-54:localhost:8800K-]@anon-20191002_181700-549:localhost:8800'-]@anon-20191002_181700-548:localhost:8800&-]@anon-20191002_181700-545:localhost:8800%-]@anon-20191002_181700-543:localhost:8800$   *tEeQau$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2640}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw"], "type": "m.room.join_rules", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042815663, "hashes": {"sha256": "ArxH6t9djxufFDl0C8TyyhUlqh2BqVlmAwzmnJfRYAQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mOQoKdAcjP6QfJWVa+JmsjrGxmhWDBK6hPFLe4Mbcfll7kJLMBwRsbT5kXoFqObKbKEvFktRI6fYhVmQPV1yBQ"}}, "unsigned": {"age_ts": 1570042815663}}kDeQac$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2639}{"auth_events": ["$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "type": "m.room.power_levels", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"users": {"@anon-20191002_181700-490:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042814641, "hashes": {"sha256": "pqJ+LDYbLpNYWoBdWhx6F6Ep/hFc+dvvXUMpihcPWGQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCJgwtAtItkWHv2EGWFZUi2qammEj/CdHsiyQ2YVbaZay8UiYtQlMumOQbEQ7QEUH102pjKPLSxxJEVtWKyoAA"}}, "unsigned": {"age_ts": 1570042814641}}vCeQay$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2638}{"auth_events": ["$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ"], "prev_events": ["$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ"], "type": "m.room.member", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-490", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-490:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042813896, "hashes": {"sha256": "S9XBIrtR0PdYBggzmViaH6Rx1EenoxUs1XgRWiyyrkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yqp5DjCQwMrdN+AdcJuhN9qym31S1cRsS383F0V+7BUiGrgHAsqObslqRabyJy858MN75r+J5+JDCUDCuvTeDw"}}, "unsigned": {"age_ts": 1570042813896}}iBeQa_$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2637}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-490:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042813228, "hashes": {"sha256": "76Vc/lb1sJrDoOUfiFQldw+hybCq3gBFODq3OEVHfEU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uPeKlE5ioT8/Fl3aOxGFIcs5O89DlICF5YJwWtU2OvfwW9iZr6ufr0lO0OcyK7nSe+dM0ZJ6xqAnRW1TDqGmAA"}}, "unsigned": {"age_ts": 1570042813228}} "= i r  - - <jvFcr{mceQ? $ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibilityebeQ/ $EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rulesgaeQ3 $GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels `eQ']$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800a_eQ' $fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create ^eQ']$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829p]eQ))$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800m\eQ? $rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibilitye[eQ/ $pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rulesjZeQ9 $Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_aliasgYeQ3 $7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels XeQ']$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800aWeQ' $gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800m.room.create VeQ']$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800 UeQ']$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800gTeQ3 $Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_accessmSeQ? $tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibilityeReQ/ $8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rulesgQeQ3 $IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels PeQ']$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800aOeQ' $FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create NeQ']$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800pMeQ))$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800mLeQ? $0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibilityeKeQ/ $2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rulesjJeQ9 $bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_aliasgIeQ3 $lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels HeQ']$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800aGeQ' $xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800m.room.createmFeQ? $GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibilityeEeQ/ $Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rulesgDeQ3 $QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels CeQ']$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800aBeQ' $0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800m.room.create 9r  T 6oOHCS e]]Q=$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4@anon-20191002_181700-505:localhost:8800@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800joinanon-20191002_181700-505CR e]]Q=$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8@anon-20191002_181700-504:localhost:8829@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800joinanon-20191002_181700-504EQ e]]Q=$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y@anon-20191002_181700-504:localhost:8829@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800inviteanon-20191002_181700-504CP e]]Q=$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4@anon-20191002_181700-503:localhost:8800@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800joinanon-20191002_181700-503,O e]]Q$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk@anon-20191002_181700-502:localhost:8829@anon-20191002_181700-502:localhost:8829!coGyOAgYnlBZAqznax:localhost:8800leaveEN e]]Q=$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ@anon-20191002_181700-502:localhost:8829@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800inviteanon-20191002_181700-502CM e]]Q=$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM@anon-20191002_181700-501:localhost:8800@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800joinanon-20191002_181700-501EL e]]Q=$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs@anon-20191002_181700-500:localhost:8829@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800inviteanon-20191002_181700-500CK e]]Q=$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ@anon-20191002_181700-499:localhost:8800@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800joinanon-20191002_181700-499CJ e]]Q=$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U@anon-20191002_181700-498:localhost:8829@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800joinanon-20191002_181700-498EI e]]Q=$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4@anon-20191002_181700-498:localhost:8829@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800inviteanon-20191002_181700-498CH e]]Q=$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800joinanon-20191002_181700-497CG e]]Q=$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64@anon-20191002_181700-496:localhost:8829@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800joinanon-20191002_181700-496CF e]]Q=$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA@anon-20191002_181700-495:localhost:8800@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800joinanon-20191002_181700-495CE e]]Q=$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800joinanon-20191002_181700-494ED e]]Q=$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800inviteanon-20191002_181700-494CC e]]Q=$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800joinanon-20191002_181700-493CB e]]Q=$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k@anon-20191002_181700-492:localhost:8800@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800joinanon-20191002_181700-492CA e]]Q=$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI@anon-20191002_181700-491:localhost:8800@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800joinanon-20191002_181700-491C@ e]]Q=$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro@anon-20191002_181700-490:localhost:8800@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800joinanon-20191002_181700-490 ;[)Og5m; tB O  #  UU # v j  [ ) a/pC J8{I D  | 1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ01e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico 51e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M 1e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEG1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY M1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio ]1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQL1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo\1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIc1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts{1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c`1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIe1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs-1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9ob1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c]1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMm1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQZ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcD _1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 >21e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o -21e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k21e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 d1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA 1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU  CqBr? g4d/ _ , ^ + [ ( X # S ROJ|Gwq> n;50[@anon-20191002_181700-57:localhost:8800aj4]@anon-20191002_181700-549:localhost:8800m2]@anon-20191002_181700-549:localhost:8800a4]@anon-20191002_181700-548:localhost:8800m2]@anon-20191002_181700-548:localhost:8800a4]@anon-20191002_181700-545:localhost:8800m2]@anon-20191002_181700-545:localhost:8800a4]@anon-20191002_181700-543:localhost:8800m2]@anon-20191002_181700-543:localhost:8800a4]@anon-20191002_181700-541:localhost:8800m4]@anon-20191002_181700-579:localhost:8800m 2]@anon-20191002_181700-579:localhost:8800a 4]@anon-20191002_181700-578:localhost:8800m 2]@anon-20191002_181700-578:localhost:8800a 4]@anon-20191002_181700-577:localhost:8800m2]@anon-20191002_181700-577:localhost:8800a4]@anon-20191002_181700-576:localhost:8800m2]@anon-20191002_181700-576:localhost:8800a2]@anon-20191002_181700-575:localhost:8800a4]@anon-20191002_181700-574:localhost:8800m2]@anon-20191002_181700-574:localhost:8800a4]@anon-20191002_181700-573:localhost:8800m2]@anon-20191002_181700-573:localhost:8800a4]@anon-20191002_181700-572:localhost:8800m2]@anon-20191002_181700-572:localhost:8800a4]@anon-20191002_181700-571:localhost:8800m2]@anon-20191002_181700-571:localhost:8800a4]@anon-20191002_181700-570:localhost:8800m2]@anon-20191002_181700-570:localhost:8800a0[@anon-20191002_181700-56:localhost:8800ai4]@anon-20191002_181700-569:localhost:8800m2]@anon-20191002_181700-569:localhost:8800a4]@anon-20191002_181700-568:localhost:8800m2]@anon-20191002_181700-568:localhost:8800a4]@anon-20191002_181700-567:localhost:8800m2]@anon-20191002_181700-567:localhost:8800a4]@anon-20191002_181700-566:localhost:8800m2]@anon-20191002_181700-566:localhost:8800a4]@anon-20191002_181700-565:localhost:8800m2]@anon-20191002_181700-565:localhost:8800a4]@anon-20191002_181700-564:localhost:8800m2]@anon-20191002_181700-564:localhost:8800a4]@anon-20191002_181700-563:localhost:8800m2]@anon-20191002_181700-563:localhost:8800a4]@anon-20191002_181700-562:localhost:8800m2]@anon-20191002_181700-562:localhost:8800a4]@anon-20191002_181700-561:localhost:8800m2]@anon-20191002_181700-561:localhost:8800a2]@anon-20191002_181700-560:localhost:8800a0[@anon-20191002_181700-55:localhost:8800ah4]@anon-20191002_181700-558:localhost:8800m2]@anon-20191002_181700-558:localhost:8800a4]@anon-20191002_181700-557:localhost:8800m2]@anon-20191002_181700-557:localhost:8800a4]@anon-20191002_181700-556:localhost:8800m2]@anon-20191002_181700-556:localhost:8800a4]@anon-20191002_181700-555:localhost:8800m2]@anon-20191002_181700-555:localhost:8800a4]@anon-20191002_181700-554:localhost:8800m2]@anon-20191002_181700-554:localhost:8800a4]@anon-20191002_181700-552:localhost:8800m2]@anon-20191002_181700-552:localhost:8800a4]@anon-20191002_181700-551:localhost:8800m2]@anon-20191002_181700-551:localhost:8800a4]@anon-20191002_181700-550:localhost:8800m2]@anon-20191002_181700-550:localhost:8800a0[@anon-20191002_181700-54:localhost:8800ag 4,e*y>ROc( w <  P  d ) f+?zSg,{@ x =  Q 8:]!L@anon-20191002_181700-540:localhost:8829DTIXBTNGTL89]!J@anon-20191002_181700-539:localhost:8800OLXWQXBCRO87]!H@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ88]!I@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ84]!E@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ85]!F@anon-20191002_181700-536:localhost:8800ABPPMMQYEY82]!C@anon-20191002_181700-534:localhost:8800RHYMUWAILZ81]!B@anon-20191002_181700-533:localhost:8800TYQEWPDZRP80]!A@anon-20191002_181700-534:localhost:8800FBPWXONJWM8.]!?@anon-20191002_181700-531:localhost:8800HVNAEYFAYK8/]!@@anon-20191002_181700-532:localhost:8800FXXARIFXSS8,]!=@anon-20191002_181700-529:localhost:8800WXKOXWYNOL8+]!<@anon-20191002_181700-527:localhost:8800BACKHRSCZN8*]!9@anon-20191002_181700-526:localhost:8800CNSENJMXXV8)]!8@anon-20191002_181700-525:localhost:8800DQXQXDJYET8(]!7@anon-20191002_181700-524:localhost:8800IVEUVINDHF8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8 ]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ8 ]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS8 ]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH8 ]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ8 ]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8']!4@anon-20191002_181700-523:localhost:8800CMSDWRWLLH8&]!3@anon-20191002_181700-521:localhost:8800PMRXQYAAOV8%]!2@anon-20191002_181700-520:localhost:8800LGMWFFKPIS8$]!1@anon-20191002_181700-518:localhost:8800LJEXZWJDWN8#]!0@anon-20191002_181700-516:localhost:8800DBXNPICYFO8"]!/@anon-20191002_181700-514:localhost:8800LBNXTFJTIT8!]!.@anon-20191002_181700-512:localhost:8800XMPLTRSJHY8 ]!-@anon-20191002_181700-510:localhost:8800TMGCAARJXM8]!,@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!+@anon-20191002_181700-508:localhost:8800IUNUZDZDEU8]!*@anon-20191002_181700-507:localhost:8800XTAWUKOTOH8]!)@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!(@anon-20191002_181700-505:localhost:8800QKCBIAVDQA8]!'@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!&@anon-20191002_181700-501:localhost:8800YBYGOFEONK8]!%@anon-20191002_181700-499:localhost:8800VXSECXNERA8]!$@anon-20191002_181700-497:localhost:8800OIZUJKPCSC8]!#@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ8]!"@anon-20191002_181700-493:localhost:8800GRPWUCANVU8]!!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]! @anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM g i  4ih5 g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-Fxgfwo 31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6go g * T~=ggo]!c@anon-20191002_181700-507:localhost:8800XTAWUKOTOHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQogn]!c@anon-20191002_181700-506:localhost:8800WTFXNSFUTLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQogm]!c@anon-20191002_181700-505:localhost:8800QKCBIAVDQAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQogl]!c@anon-20191002_181700-503:localhost:8800JNGLRXMCQMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwogk]!c@anon-20191002_181700-501:localhost:8800YBYGOFEONKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0Hwogj]!c@anon-20191002_181700-499:localhost:8800VXSECXNERAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAogi]!c@anon-20191002_181700-497:localhost:8800OIZUJKPCSCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogogh]!c@anon-20191002_181700-495:localhost:8800QBXBDGRDFZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQogg]!c@anon-20191002_181700-493:localhost:8800GRPWUCANVUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowogf]!c@anon-20191002_181700-494:localhost:8800HEAHMVMVEQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3Qwoge]!c@anon-20191002_181700-492:localhost:8800BHHCHVPHQTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwo ,NC 8 - { " p  e ZOD9.|#qf VteL$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYsha256w>L!lO,3J$I=,u)Z\VseL$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8sha256E`?N8dkRr01VreL$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQsha256Yl{Ѩ?nhQ?=1VqeL$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIsha256&0Jg:rTWGW ɬEFطv"VpeL$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICEsha256Hstx:h?!aGRu՚ !VoeL$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Usha256mޔ#L.TuVneL$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4sha256SiO! QIp~VmeL$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-ksha256($,zV [*t E4OVleL$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwsha256D])ShqcđGiFpN"q$T VkeL$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Asha256Wj$?M_">$_`v;r{`VjeL$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQsha256!0=57̓h r߈|dVieL$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4sha2568Swi g+R$vgi \HDVheL$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8sha256@(sr"mOtw?VgeL$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1Asha256|fo#6lWо=椬]>rVG;PVfeL$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4sha2569ȟZKY~"NqZЄ rVeeL$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64sha256 |Ճ8r0E3 柮VdeL$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Ysha256&H˽YT,>UDFVceL$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgsha256*%vKeXߑ`ClD)VbeL$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4sha256mGZ6I=ݍctV&NVaeL$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qsha2563`G+TA Wb sN8#V`eL$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8sha256:‡)CuWb]B3[/)V_eL$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Asha256= ;[Or8^#ې7k@V^eL$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAsha256>hdi`+ٞM>;.@V]eL$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Qsha256}p ƤJM.av ΞV\eL$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4sha256 :Z!JNKSHuBJw^'.V[eL$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAsha256k#TjTݲ\:d3FPVZeL$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUsha256]b fe2oкТ&(!H#umVYeL$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWosha256j |kt2)*[;m.YjVXeL$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEsha256gX$b}ٹ4K)V#r2uFFB1VWeL$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwsha2562gٽn9J4-}IHiKeBVVeL$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMsha256ĦV:4k? D! VUeL$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0sha256 pRցN *j*/OתD(y-VTeL$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaosha256ߺ!,"@ZMųO!:utiVSeL$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Ysha256h5[54 $~P  .~ӆVReL$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkIsha256 oᕵ0x)&D{8w9}BVQeL$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175ksha256um8 3xŀvrLzu3VPeL$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10sha256i~P#v(˺d<;zs*IEr]VOeL$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYsha256*=I./^nUAUylVNeL$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4sha256ҶöGc7 p9m;pC_,3%NVMeL$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7ksha2561'`;t33gYD>x_VLeL$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5Usha256l CO'}j8?n IVKeL$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQsha256F@ $]kUݽwy@. n>VJeL$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIsha256L1QIĈA{RۆGJpcx.VIeL$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvosha256ħ˾,24Oj34ctZ  tMeQau$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2648}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U"], "type": "m.room.join_rules", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042823023, "hashes": {"sha256": "cQ2xGCUs8uZbcqbO6Vbb5bUxaxW+HzcK20Cu/L99lb0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3BCaE/kEaX12z47QKc+bvWcoX/X2LZWLX6UTnMWcUflDTU3U2T2INp0vcoPQ3lT8YlWQngDXd6caTWNHZZ8pBQ"}}, "unsigned": {"age_ts": 1570042823023}} LeQa!$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2647}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ"], "type": "m.room.canonical_alias", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"alias": "#__ANON__-21:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042822255, "hashes": {"sha256": "pF51J+L+hThllmgze6f9lWjhULJhxVaN0B0fFD5zPj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q0COVbm5F2BpJfCPvjDCihGWV4rXxsjN/Esjyr5wJ9OqUZxPQgw+cNAMMAaqeJJf85+/3TkLrkyc2J9qBFXkCg"}}, "unsigned": {"age_ts": 1570042822255}}kKeQac$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2646}{"auth_events": ["$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "type": "m.room.power_levels", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"users": {"@anon-20191002_181700-491:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042821424, "hashes": {"sha256": "JQ9KWbPs7moKFtKNlbKrZCwM1JCGTr93/8x7WR/nzAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MurE/6i1Jtv7N8Ygs2AF6rPMLDGPIqnjsDCprZ6QF0nbtz3P8aX2UJqPj9BQhLIzVcQUGPeay1AVfdGU4Ev7Aw"}}, "unsigned": {"age_ts": 1570042821424}}vJeQay$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2645}{"auth_events": ["$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo"], "prev_events": ["$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo"], "type": "m.room.member", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-491", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-491:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042820719, "hashes": {"sha256": "1+RFz9MaDjA1Oi+onwgA0GJY1XzlMjVvs/1Ht7uzpRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vFbai4Ijs/ueVL48PisTey5XkofFkzOcueHp8zFyhxEyRlPe7pKwWuAnu0//UyQMQOpN9OAeqquhvs8CLTdJAg"}}, "unsigned": {"age_ts": 1570042820719}} ~<o0 M X ]  &+VsALQya\eQ' $xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800m.room.createm[eQ? $GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibilityeZeQ/ $Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rulesgYeQ3 $QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels XeQ']$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800joinaWeQ' $0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800m.room.createpqeQ))$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800mpeQ? $rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibilityeoeQ/ $pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rulesjneQ9 $Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_aliasgmeQ3 $7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels leQ']$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800joinakeQ' $gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800m.room.create jeQ']$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800joingieQ3 $Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_accessmheQ? $tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibilityegeQ/ $8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rulesgfeQ3 $IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels eeQ']$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800joinadeQ' $FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create ceQ']$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800joinpbeQ))$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800maeQ? $0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibilitye`eQ/ $2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rulesj_eQ9 $bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_aliasg^eQ3 $lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels ]eQ']$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800join a} { y w u sqomkigeca~jeeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800~ieeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~heeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~geeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~feeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~eeeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~deeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~ceeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~beeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~aeeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~`eeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~_eeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~^eeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~]eeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~\eeQ$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~[eeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800~ZeeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~YeeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~XeeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~WeeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~VeeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~UeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~TeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~SeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~ReeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~QeeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~PeeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~OeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~NeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~MeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~LeeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800 +=j9r@xF~LR w E  }p K   R  X & ^ ,>dK2%Qj8+21e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA {2'1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIx1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUa1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gS1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ,0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko31e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMw1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0U1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg821e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI]1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag\1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M`1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMt1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Y1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY^1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k ^1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu431e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsH0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsz1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 41e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 21e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg +1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI% yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mu mr mn mj mdx m` m^ m[s mW9 mT mQ mN mL mI mBd m? m: m8D m4 m2 m/W m%q m%^ m" m m) mT m m ma m m m m" mK m mU m m@ m m m m m mD mۢ m٧ mw mհ m mP m  m< ~ ~m } }m( | |mؽ[ { {mعp z zmض y ymسT x xmخ w wmث v vmبo u umإj t tmآ s sm؟P r rmؘ5 q qmؔ p pmؒ o om؏n n nm؋ m mm؉ l lm؅ k km؂ j jm؀R i im}' h hmw g gms[ f fmo e emmz d dmi c cmfH b bmb a am_ ` `m\ _ _mY ^ ^mS ] ]mO \ \mM [ [mH Z ZmD Y YmAo X Xm>o W Wm;0 V Vm8o U Um4p T Tm- S Sm+Z R Rm'' Q Qm$ P Pm O Om N Nm, M Mm L Lm K Km J Jm r I Im H HmP G Gm F Fm1 E Em D Dm~ C Cm B BmH A Amk @ @m$ ? ?m# > >m = =m~ < <m. ; ;m m. m m m m m mƞ m\ mo mٽ* mٹ mٷ mٵ m٭ m٩ m٧- m٤M m٠ mٜ mٙ mٕ mٓ mُ mي mن mك mـ5 m|* myT m] : :mA 9 9mD 8 8m{ 7 7m 6 6mѬ 5 5m" 4 4mQ 3 3m̰ 2 2m 1 1mȤ 0 0m / /m . .m׾ - -m׼ , ,m׹m + +m׶ * *m׳E ) )m׬ ( (mש1 ' 'mץ & &mף % %mן $ $mל # #mי " "mז: ! !mד mב  m׊  mׅi  m׃I  m׀{  m|  my  mw  ms  mq  mn  mj'  me  mck  ma$  m]:  mZ  mW  mU mR mO mI4 mE mC  m?  m;  m8  m6  m3F  m1:  m.  m( m& U! MF>7/'Cx t 3  ] m e eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800jeeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800keeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800"eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800 eeQ$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800eeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800peeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800eeQ$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800eeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800veeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800neeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800ŁeeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800wA333$69:localhost:42455$68:localhost:42455!10:localhost:42455 I@331$67:localhost:42455$66:localhost:42455!9:localhost:42455 G@331$66:localhost:42455$65:localhost:42455!9:localhost:42455 FfIIQ$64_redaction2:localhost:42455$63_redaction1:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800 E[I3Q$63_redaction1:localhost:42455$62:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800 DjIQQ$63_redaction1:localhost:42455$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 C_3QQ$62:localhost:42455$1570043656428rZaqi:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 B_3QQ$61:localhost:42455$1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 ;\??Q$60_msg_e:localhost:42455$59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800  wVQeQa9$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 494, "stream_ordering": 2652}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k"], "prev_events": ["$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10"], "type": "m.room.member", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-492:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-492", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-492:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042826629, "hashes": {"sha256": "a0J+sT0nHnBvH2aCKtIoPCCQ/dJesHv1zx8yvRUOasU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wXbgEXQ1ARbup4o5qqNdUzSHN5NfxPKkYNCNx8FRJpLkOiDFr/CKK2cdhXEKdeFza0YLRDDk6pGi7cZpjDE3BA"}}, "unsigned": {"age_ts": 1570042826629}}HPeQa$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2651}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY"], "type": "m.room.test", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042826147, "hashes": {"sha256": "ajysce5u/Oe+vY3XHdLi8hIVHdHEpxgu7xEAS1XbKKs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ghfnrjQgDJM6fr/YrzXFuakynfTrq3iNw89lrb6Sjez2Ml70bfHfXfIi8H0k0PSMB8A3HrwwSZm8CFbvyYDDQ"}}, "unsigned": {"age_ts": 1570042826147}}OeQa5$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2650}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4"], "type": "m.room.aliases", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"aliases": ["#__ANON__-21:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042824898, "hashes": {"sha256": "oH/OIokznNIYuUeSIjcCoQMmLaR2le9MungNw4+2gTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+HzeAG3+YzaWcvRdyvgeYCHcYqq8DQ11i+Wo6jNCupFlEhPhxAbs1YnCJjQdlg28/x3yKTrEp5C9R6E6mQNbAg"}}, "unsigned": {"age_ts": 1570042824898}}NeQa$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2649}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k"], "type": "m.room.history_visibility", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042823874, "hashes": {"sha256": "+PRbBzC57IU+ZUXKp2RYEhV+11ggTzbadXdVsP04X3g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "awaeips03kCvwSGysG7bEOQFZ5JS2QUAwc48v+81z6a3T/6GYeQNN/fqWW8QdfjEoBgJazA/Y8wHVHOr7kvmDg"}}, "unsigned": {"age_ts": 1570042823874}} )}sDY* p A  V ' m >  S $ h 9 }.Q$1570042663162sQrEh:localhost:8800sha256 .Q$1570042662161lGrSW:localhost:8800sha256 .Q$1570042662160SrmtM:localhost:8800sha256 .Q$1570042661159xQwJK:localhost:8800sha256 .Q$1570042661158igwHF:localhost:8800sha256 .Q$1570042660157svDcU:localhost:8800sha256 .Q$1570042660156wxhvl:localhost:8800sha256 .Q$1570042659155mEUeP:localhost:8800sha256 .Q$1570042659154Fztdf:localhost:8800sha256 .Q$1570042658153tmCYJ:localhost:8800sha256 .Q$1570042658152btGpA:localhost:8800sha256 .Q$1570042657151cITOZ:localhost:8800sha256 .Q$1570042656150UsLRz:localhost:8800sha256 .Q$1570042656149JNVWR:localhost:8800sha256 ~.Q$1570042655148eXOyA:localhost:8800sha256 }.Q$1570042654147iSsjl:localhost:8800sha256 |.Q$1570042653146dGCce:localhost:8800sha256 {.Q$1570042651145wBynt:localhost:8800sha256 z,M$15700426501OLytM:localhost:8829sha256 y.Q$1570042649143JxPAB:localhost:8800sha256 x.Q$1570042648142spuws:localhost:8800sha256 w.Q$1570042648141xSHQB:localhost:8800sha256 v.Q$1570042647140rNeEf:localhost:8800sha256 u.Q$1570042646139VXLYO:localhost:8800sha256 t.Q$1570042646138YEunv:localhost:8800sha256 s.Q$1570042645137fBnPZ:localhost:8800sha256 r.Q$1570042644136OugnY:localhost:8800sha256 q.Q$1570042642135oMfQy:localhost:8800sha256 p,M$15700426410cEjWu:localhost:8829sha256 o.Q$1570042640133wGmrF:localhost:8800sha256 n.Q$1570042639132zhjjB:localhost:8800sha256 m.Q$1570042638131kazZm:localhost:8800sha256 l.Q$1570042637130zlkqP:localhost:8800sha256 k.Q$1570042636129shBTe:localhost:8800sha256 j.Q$1570042635128KJCvL:localhost:8800sha256 i.Q$1570042634127eDBry:localhost:8800sha256 h.Q$1570042634126YmPkp:localhost:8800sha256 g.Q$1570042632125lwdOR:localhost:8800sha256 f.Q$1570042632124bMwzE:localhost:8800sha256 e.Q$1570042631123SLyGA:localhost:8800sha256 d.Q$1570042630122bUTeO:localhost:8800sha256 c zV ;Z0 fL 8 PlM m W *wJnC ` 3 sh? y S & 0] E   | #  A,Q!yNfCaBMPezurwkJRAX:localhost:8800mm,Q!yNfCaBMPezurwkJRAX:localhost:8800ll,Q!yNfCaBMPezurwkJRAX:localhost:8800kk+Q !xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 +Q !yAfsSyqpJWFnkXQFJL:localhost:8800 s s*Q!wvnfKBSrUlfNmYoeil:localhost:8800{{*Q!wvnfKBSrUlfNmYoeil:localhost:8800zz*Q!wvnfKBSrUlfNmYoeil:localhost:8800yy)Q !wvnfKBSrUlfNmYoeil:localhost:8800xx,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!xwoIOPTGmJIlTXakxC:localhost:8800__*Q!xwoIOPTGmJIlTXakxC:localhost:8800^^*Q!xwoIOPTGmJIlTXakxC:localhost:8800]]*Q!xwoIOPTGmJIlTXakxC:localhost:8800\\*Q!xwoIOPTGmJIlTXakxC:localhost:8800[[)Q !xwoIOPTGmJIlTXakxC:localhost:8800ZZ,Q!xvblqEscwOtCqJntfF:localhost:8800OO,Q!xvblqEscwOtCqJntfF:localhost:8800NN,Q!xvblqEscwOtCqJntfF:localhost:8800MM,Q!xvblqEscwOtCqJntfF:localhost:8800LL+Q !xvblqEscwOtCqJntfF:localhost:8800KK,Q!xhbvqJDfxMSsZPqvld:localhost:8800   ,Q!xhbvqJDfxMSsZPqvld:localhost:8800  ,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xXYMxashIZAUOTuGAJ:localhost:8800EE,Q!xXYMxashIZAUOTuGAJ:localhost:8800DD,Q!xXYMxashIZAUOTuGAJ:localhost:8800CC,Q!xXYMxashIZAUOTuGAJ:localhost:8800BB*Q!wvnfKBSrUlfNmYoeil:localhost:8800||,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  +Q !yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t t,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yNfCaBMPezurwkJRAX:localhost:8800jj,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yNfCaBMPezurwkJRAX:localhost:8800nn,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w w,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v v,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u u-,Q!yNfCaBMPezurwkJRAX:localhost:8800oo,Q!yTQmLDAxZscWKLMSWh:localhost:8800 % %+Q !yTQmLDAxZscWKLMSWh:localhost:8800 $ $,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800+Q !xhbvqJDfxMSsZPqvld:localhost:8800+Q !xXYMxashIZAUOTuGAJ:localhost:8800??,Q!xXYMxashIZAUOTuGAJ:localhost:8800AA,Q!xXYMxashIZAUOTuGAJ:localhost:8800@@,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800   zV ;Z0 fL 8 PlM m W *wJnC ` 3 sh? y S & 0] E   | #  A,Q!yNfCaBMPezurwkJRAX:localhost:8800mm,Q!yNfCaBMPezurwkJRAX:localhost:8800ll,Q!yNfCaBMPezurwkJRAX:localhost:8800kk+Q !xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 +Q !yAfsSyqpJWFnkXQFJL:localhost:8800 s s*Q!wvnfKBSrUlfNmYoeil:localhost:8800{{*Q!wvnfKBSrUlfNmYoeil:localhost:8800zz*Q!wvnfKBSrUlfNmYoeil:localhost:8800yy)Q !wvnfKBSrUlfNmYoeil:localhost:8800xx,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!xwoIOPTGmJIlTXakxC:localhost:8800__*Q!xwoIOPTGmJIlTXakxC:localhost:8800^^*Q!xwoIOPTGmJIlTXakxC:localhost:8800]]*Q!xwoIOPTGmJIlTXakxC:localhost:8800\\*Q!xwoIOPTGmJIlTXakxC:localhost:8800[[)Q !xwoIOPTGmJIlTXakxC:localhost:8800ZZ,Q!xvblqEscwOtCqJntfF:localhost:8800OO,Q!xvblqEscwOtCqJntfF:localhost:8800NN,Q!xvblqEscwOtCqJntfF:localhost:8800MM,Q!xvblqEscwOtCqJntfF:localhost:8800LL+Q !xvblqEscwOtCqJntfF:localhost:8800KK,Q!xhbvqJDfxMSsZPqvld:localhost:8800   ,Q!xhbvqJDfxMSsZPqvld:localhost:8800  ,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xXYMxashIZAUOTuGAJ:localhost:8800EE,Q!xXYMxashIZAUOTuGAJ:localhost:8800DD,Q!xXYMxashIZAUOTuGAJ:localhost:8800CC,Q!xXYMxashIZAUOTuGAJ:localhost:8800BB*Q!wvnfKBSrUlfNmYoeil:localhost:8800||,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  +Q !yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t t,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yNfCaBMPezurwkJRAX:localhost:8800jj,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yNfCaBMPezurwkJRAX:localhost:8800nn,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w w,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v v,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u u-,Q!yNfCaBMPezurwkJRAX:localhost:8800oo,Q!yTQmLDAxZscWKLMSWh:localhost:8800 % %+Q !yTQmLDAxZscWKLMSWh:localhost:8800 $ $,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800+Q !xhbvqJDfxMSsZPqvld:localhost:8800+Q !xXYMxashIZAUOTuGAJ:localhost:8800??,Q!xXYMxashIZAUOTuGAJ:localhost:8800AA,Q!xXYMxashIZAUOTuGAJ:localhost:8800@@,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800   j[ p * ( ~8MRUj!qe)Q ] $HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4m.room.message!iKezIvJyjkNqKayFju:localhost:8800 mؘ5mؙ@anon-20191002_181700-495:localhost:8800 pe'Q ] $rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64m.room.member!iKezIvJyjkNqKayFju:localhost:8800 mؔmؕ@anon-20191002_181700-496:localhost:8829oe#Q ]$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Ym.room.test!iKezIvJyjkNqKayFju:localhost:8800mؒmؒ@anon-20191002_181700-495:localhost:8800!ne)Q ]$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgm.room.aliases!iKezIvJyjkNqKayFju:localhost:8800m؏nmؐ6@anon-20191002_181700-495:localhost:8800,me?Q ]$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4m.room.history_visibility!iKezIvJyjkNqKayFju:localhost:8800m؋m؍@anon-20191002_181700-495:localhost:8800$le/Q ]$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qm.room.join_rules!iKezIvJyjkNqKayFju:localhost:8800m؉m؉@anon-20191002_181700-495:localhost:8800)ke9Q ]$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8m.room.canonical_alias!iKezIvJyjkNqKayFju:localhost:8800m؅m؆@anon-20191002_181700-495:localhost:8800&je3Q ]$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Am.room.power_levels!iKezIvJyjkNqKayFju:localhost:8800m؂m؃@anon-20191002_181700-495:localhost:8800 ie'Q ]$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAm.room.member!iKezIvJyjkNqKayFju:localhost:8800m؀Rm؀@anon-20191002_181700-495:localhost:8800h e'Q  ]$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Qm.room.create!iKezIvJyjkNqKayFju:localhost:8800m}'m}@anon-20191002_181700-495:localhost:8800!ge)Q ] $CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4m.room.message!DelfBAGvCrTXgNxmNV:localhost:8800 mwmw@anon-20191002_181700-493:localhost:8800 fe'Q ] $awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAm.room.member!DelfBAGvCrTXgNxmNV:localhost:8800 ms[ms@anon-20191002_181700-494:localhost:8800 ee'Q ]$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUm.room.member!DelfBAGvCrTXgNxmNV:localhost:8800mompJ@anon-20191002_181700-493:localhost:8800de#Q ]$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWom.room.test!DelfBAGvCrTXgNxmNV:localhost:8800mmzmm~@anon-20191002_181700-493:localhost:8800&ce3Q ]$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEm.room.guest_access!DelfBAGvCrTXgNxmNV:localhost:8800mimj@anon-20191002_181700-493:localhost:8800,be?Q ]$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwm.room.history_visibility!DelfBAGvCrTXgNxmNV:localhost:8800mfHmg@anon-20191002_181700-493:localhost:8800$ae/Q ]$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMm.room.join_rules!DelfBAGvCrTXgNxmNV:localhost:8800mbmc@anon-20191002_181700-493:localhost:8800&`e3Q ]$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0m.room.power_levels!DelfBAGvCrTXgNxmNV:localhost:8800m_mad@anon-20191002_181700-493:localhost:8800 _e'Q ]$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaom.room.member!DelfBAGvCrTXgNxmNV:localhost:8800m\m]@anon-20191002_181700-493:localhost:8800^ e'Q  ]$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Ym.room.create!DelfBAGvCrTXgNxmNV:localhost:8800mYmZ\@anon-20191002_181700-493:localhost:8800!]e)Q ] $HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkIm.room.message!kOmCTyiizHqfCJdhlR:localhost:8800 mSmS@anon-20191002_181700-491:localhost:8800 \e'Q ] $oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175km.room.member!kOmCTyiizHqfCJdhlR:localhost:8800 mOmP@anon-20191002_181700-492:localhost:8800[e#Q ]$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10m.room.test!kOmCTyiizHqfCJdhlR:localhost:8800mMmM@anon-20191002_181700-491:localhost:8800!Ze)Q ]$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYm.room.aliases!kOmCTyiizHqfCJdhlR:localhost:8800mHmJ@anon-20191002_181700-491:localhost:8800 QmH+o0  @  l O 4  ~ c @  h M * x 9 YiL x9I,p1AmP5dA a >']m.room.member@anon-20191002_181700-505:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-504:localhost:8829>']m.room.member@anon-20191002_181700-504:localhost:8829>']m.room.member@anon-20191002_181700-504:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-503:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-502:localhost:8829>']m.room.member@anon-20191002_181700-502:localhost:8829>']m.room.member@anon-20191002_181700-502:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-501:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-500:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-499:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-498:localhost:8829>']m.room.member@anon-20191002_181700-498:localhost:8829>']m.room.member@anon-20191002_181700-498:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-497:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-496:localhost:8829>']m.room.member@anon-20191002_181700-496:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-495:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-494:localhost:8800>']m.room.member@anon-20191002_181700-494:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-493:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-492:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-491:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 ~m.room.power_levels>']}m.room.member@anon-20191002_181700-490:localhost:8800' |m.room.create>']{m.room.member@anon-20191002_181700-489:localhost:8829>']zm.room.member@anon-20191002_181700-489:localhost:8829>']ym.room.member@anon-20191002_181700-489:localhost:8829"? xm.room.history_visibility/ wm.room.join_rules3 vm.room.power_levels>']um.room.member@anon-20191002_181700-488:localhost:8800' tm.room.create>']sm.room.member@anon-20191002_181700-487:localhost:8829>']rm.room.member@anon-20191002_181700-487:localhost:8829>']qm.room.member@anon-20191002_181700-487:localhost:8829"? pm.room.history_visibility/ om.room.join_rules~3 nm.room.power_levels}>']mm.room.member@anon-20191002_181700-486:localhost:8800|' lm.room.create{>']km.room.member@anon-20191002_181700-485:localhost:8829z"? jm.room.history_visibilityy  z kUeQac$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2656}{"auth_events": ["$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "type": "m.room.power_levels", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"users": {"@anon-20191002_181700-493:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042830822, "hashes": {"sha256": "nhpif89QO9FuVxwEVQoDih3wzqqLiNtoxNnoixUdxMw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1QTEDLIIPul7rPC0FTtnuISn5w3QkEwYBj1u+9g7n+Ct97Vip8fjvi0xrX6s1ONJ4Fh53bzlnrYQeFKSXJywCg"}}, "unsigned": {"age_ts": 1570042830822}}vTeQay$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2655}{"auth_events": ["$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y"], "prev_events": ["$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y"], "type": "m.room.member", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-493", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-493:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042830068, "hashes": {"sha256": "C+KmEAFGMbx/i5Zd7q1EWzqQelS+wVki5ruI2fXzblc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nHB5N5YTHBI7QbTgujD93WSz6wTNUCRUJ2ImaqQZ2eP9KEMOcuwhJbrgqO81lN8Sz95HZ3wMPDgt8WLe8P1nCw"}}, "unsigned": {"age_ts": 1570042830068}}iSeQa_$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2654}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-493:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042829274, "hashes": {"sha256": "t/JS++DMQ14XIvgzxht556FsPsgHI/n7YAvVKKPxkmw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M3XTuQGzxG7iK2BGDnYUhWVsV6mf63JRbGgpKswVqP64aYU8fX0wDLSvBpk5aIujscxw97+sgcGJxPnCvbHvAA"}}, "unsigned": {"age_ts": 1570042829274}}ReQm$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "txn_id": "502", "stream_ordering": 2653}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k"], "type": "m.room.message", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042827686, "hashes": {"sha256": "SidDgqYxkoSVQwkCECerfQclH6m9x5gS2dVjMwh+3GQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oj6BigY6xQaTcaP7P2b1A8K1qepTsNqVOfXayvr0b4X+NZqRRhnCPQf67jdW1D2iw05+ffeckjOPDJk6UH/LCQ"}}, "unsigned": {"age_ts": 1570042827686}} b`8pH X 0  h @  x P ( ` 8  p H X0f>v]5 mEd<\4 lD|T,%Q !KcXNWNfbLcYsBKZHIp:localhost:8800%Q !dBfASZrfiFeSKTjYJm:localhost:8800%Q !taANXnGBZntAreRurn:localhost:8800%Q !tcYctHPiaKzsKgrXlU:localhost:8800%Q !drnXStKXkNQkouqUAg:localhost:8800%Q !zScKnCZCFPIIodAiQj:localhost:8800%Q !LazKtcHZriKzCvvGwV:localhost:8800%Q !lEJUJZxqZPKZetemiR:localhost:8800%Q !bLWyXaXdvUhdSAooUz:localhost:8800%Q !YmRuIWixFpaqEeDQLZ:localhost:8800%~Q !bjdLCdBwkKaihRIRFG:localhost:8800%}Q !qzrZzAieCgGSbpKOQR:localhost:8800%|Q !qzurjQHmiriwjaUMhO:localhost:8800%{Q !TSFcaXDBqrCREHRHxv:localhost:8800%zQ !AOEdqVKPFddrqbKPOL:localhost:8800%yQ !wBBQYEPjQGnoAzDpEu:localhost:8800%xQ !oZGRyBAkNDrEeiAqWL:localhost:8800w1 !6:localhost:42455%vQ !cRbfhxZdPstEsPGPAu:localhost:8800%uQ !sAWFpvSUPExZLVcPEd:localhost:8800%tQ !YpcmaMNMzjvtgYtrli:localhost:8800%sQ !PzoqoNRxeEEqiLyVSV:localhost:8800%rQ !uPxXJHJyFQwvpQLZNs:localhost:8800%qQ !UluPYLGXtInKDTjRzp:localhost:8800%pQ !QkkdnzvdrjHaFGkzMt:localhost:8800%oQ !DuqHkpTfWCUblSrxQj:localhost:8800%nQ !NanhNmCnVVpmZRJrTF:localhost:8800m1!5:localhost:42455%lQ !sqkBzbHHJOTNWwynqV:localhost:8800%kQ !qInWQPtNQfBFoVzUtP:localhost:8800%jQ !FZOLkaLbBpaibrbHZx:localhost:8800%iQ !QxqzQoEBIZhmzHIGrl:localhost:8800%hQ !fDISaqNBhlOwherxSt:localhost:8800%gQ !yAfsSyqpJWFnkXQFJL:localhost:8800%fQ !AYFqrmxwClFQlcTTYq:localhost:8800%eQ !pHoEnhQYhwlbJXqKQE:localhost:8800d1!0:localhost:42455%cQ !OCEHAjcOXWNyWIESIS:localhost:8800%bQ !qjijQBfMwsCPTVgKPm:localhost:8800%aQ !kjjUsMowsioSQRIJeg:localhost:8800%`Q !UTAORDrNxIbSlGByAp:localhost:8800%_Q !MXhwoqNXvexeDDSOZT:localhost:8800%^Q !zqQJfFCRlSEDPKlQPy:localhost:8800&]Q!JnAKXOrlyisFUpgJPw:localhost:8800&\Q!XRAZJeoZBhGeHKKjaG:localhost:8800%[Q !GwLdUoDplyVUogXDzu:localhost:8800%ZQ !nfxDdcgDfooxyiAzaB:localhost:8800%YQ !XGAmnfaVvjDtQJuufa:localhost:8800%XQ !OXpGdKbowFUTChPdmF:localhost:8800%WQ !XUbDuPDiMTXJZDyAPc:localhost:8800%VQ !VhUAklonNaWKRnLkcr:localhost:8800%UQ !ybXveQoxPVhjpKHAkG:localhost:8800%TQ !ijOiudvuzOLNmgNKfG:localhost:8800%SQ !hrhDJbmXvXBizKoiiK:localhost:8800%RQ !iLHJbsFszubrnybDNz:localhost:8800%QQ !hGsPmWXboxZZtOlsxY:localhost:8800%PQ !dvZnfJonDkxlrrDXUk:localhost:8800%OQ !vZGjXEXQoCaoUXnkCa:localhost:8800%NQ !GBPGYLDkXcAsHgkfuS:localhost:8800%MQ !fdEymmlcUvjgshvVyl:localhost:8800%LQ !xcdNyJNFEdaBGFycsB:localhost:8800%KQ !SUDzkfFBgpuCANOxRS:localhost:8800%JQ !rWmvvGBgmFMdVvcfPk:localhost:8800%IQ !gXfXRDTXeVvOHQdaaQ:localhost:8800%HQ !hegUPDZCEEmBhsNJJR:localhost:8800%GQ !aSKNKSGXPGoIbSrbEN:localhost:8800%FQ !peJMRJtXBvIiCttNmm:localhost:8800%EQ !tPkCGJBKmqUXJoRrnY:localhost:8800%DQ !QnmLrBAxeItdHsaxWf:localhost:8800%CQ !hFwigdYZkwYNSwelRH:localhost:8800%BQ !paDmNxsOZIKyApbxXs:localhost:8800%AQ !OtBUhGeUSiDMWRKIOT:localhost:8800%@Q !zHBgbzUZHshNGZvIBS:localhost:8800%?Q !cidyuyekVzJHHvyomb:localhost:8800%>Q !pduebXnTyxQWVxEICp:localhost:8800%=Q !ZvLVbnHjeymRiFIkYr:localhost:8800%<Q !VUibrTIkcRbfrogbQV:localhost:8800%;Q !WpThtNEVhrUbUdCdMJ:localhost:8800%:Q !vRmMcoJDeCupADwqac:localhost:8800%9Q !fGkUEndqGrieltwbCh:localhost:8800%8Q !atnRTMliktaVUhMVID:localhost:8800%7Q !PHkVrXAyfGkFtzSagu:localhost:8800%6Q !EhFUhsgQbBWmrnGmaz:localhost:8800%5Q !wBkUBAjOznOyxrLchl:localhost:8800%4Q !sHRHoXzYrrPSlWBkoh:localhost:8800%3Q !AoAvmnwMkhYBQsbCsL:localhost:8800%2Q !IlGJpjzrvvAFuwTAgo:localhost:8800%1Q !CSqENqzAezaZnGktbE:localhost:8800%0Q !vBvlJEXUSQKUYmsKcO:localhost:8800%/Q !RDEAXrqXQizuhCUFPq:localhost:8800%.Q !mogJVPxghalmKbblUq:localhost:8800%-Q !EhUxBjnSkVXpTrQlrn:localhost:8800%,Q !laUExtszUaoCpZoyEq:localhost:8800%+Q !coGyOAgYnlBZAqznax:localhost:8800%*Q !ubmTdQFAhrhZkGULDx:localhost:8800%)Q !rpVYLTJGcFNdGzFzXj:localhost:8800%(Q !iKezIvJyjkNqKayFju:localhost:8800%'Q !DelfBAGvCrTXgNxmNV:localhost:8800  1 Q   1 SMV~ R[ jQ']e !coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMdiQ' e !coGyOAgYnlBZAqznax:localhost:8800m.room.create$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE hQ']e !ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVspgQ? e !ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibility$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlghfQ/ e !ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rules$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYjeQ3 e ~!ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 dQ']e }!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQdcQ' e |!ubmTdQFAhrhZkGULDx:localhost:8800m.room.create$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI8bQ']ee z!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 aQ']e y!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4j`Q3 e w!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwp_Q? e v!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibility$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Ah^Q/ e u!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rules$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQj]Q3 e t!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 \Q']e s!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8d[Q' e r!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A ZQ']e p!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64sYQ))e n!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgpXQ? e m!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibility$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4hWQ/ e l!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rules$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6QmVQ9 e k!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_alias$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8jUQ3 e j!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A TQ']e i!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAdSQ' e h!iKezIvJyjkNqKayFju:localhost:8800m.room.create$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q8RQ']ee f!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU QQ']e e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUjPQ3 e c!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_access$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEpOQ? e b!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibility$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwhNQ/ e a!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rules$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMjMQ3 e `!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 LQ']e _!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaodKQ' e ^!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y NaG97tM%/'O    _ 8   s K #  ^ 6   q I "? _  [W 4 wgo'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800{'Q!sAWFpvSUPExZLVcPEd:localhost:8800w'Q!uPxXJHJyFQwvpQLZNs:localhost:8800t'Q!sqkBzbHHJOTNWwynqV:localhost:8800n'Q!yAfsSyqpJWFnkXQFJL:localhost:8800i'Q!zqQJfFCRlSEDPKlQPy:localhost:8800`'Q!ybXveQoxPVhjpKHAkG:localhost:8800W'Q!vZGjXEXQoCaoUXnkCa:localhost:8800Q'Q!xcdNyJNFEdaBGFycsB:localhost:8800N'Q!rWmvvGBgmFMdVvcfPk:localhost:8800L'Q!tPkCGJBKmqUXJoRrnY:localhost:8800G'Q!zHBgbzUZHshNGZvIBS:localhost:8800B'Q!vRmMcoJDeCupADwqac:localhost:8800<'Q!wBkUBAjOznOyxrLchl:localhost:88007'Q!sHRHoXzYrrPSlWBkoh:localhost:88006'Q!vBvlJEXUSQKUYmsKcO:localhost:88002'Q!ubmTdQFAhrhZkGULDx:localhost:8800,'Q!rpVYLTJGcFNdGzFzXj:localhost:8800+'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800y&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800 &Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800^'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800c'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800k&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800!'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800s'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800`'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800~&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800 Kf>~V6 } U - e=`F.8nrK$ a :  s K # \ 4 l E ^ b:>vN&f6'Q!paDmNxsOZIKyApbxXs:localho'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:88002'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800r'Q!hYPSaMPGsLnvYSmwhg:localhost:8800e'Q!hWHyATwKfuznrqTiyu:localhost:8800C'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800?'Q!jlGSdNttccYxjfLkwW:localhost:8800n'Q!jGQNGXehugtTvjUGKI:localhost:8800k'Q!hNCwypIzdDZDVmCEfd:localhost:8800e'Q!iTQSCiLqRMDtgXtUdC:localhost:8800u'Q!iTQSCiLqRMDtgXtUdC:localhost:8800t'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800G'Q!iKezIvJyjkNqKayFju:localhost:8800F'Q!hrhDJbmXvXBizKoiiK:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800|'Q!krhefVncoErkCtnvsy:localhost:8800N'Q!krhefVncoErkCtnvsy:localhost:8800M'Q!krhefVncoErkCtnvsy:localhost:8800L'Q!kpTPWDZdBbbXKLonZK:localhost:8800#'Q!kpTPWDZdBbbXKLonZK:localhost:8800"'Q!kpTPWDZdBbbXKLonZK:localhost:8800!&Q!kkgEEVUJynguTqAoWD:localhost:8800 'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800B'Q!kOmCTyiizHqfCJdhlR:localhost:8800A'Q!kAxKaIQhXTtGFWSUgr:localhost:8800,'Q!kAxKaIQhXTtGFWSUgr:localhost:8800+'Q!kAxKaIQhXTtGFWSUgr:localhost:8800*'Q!jveVPZSXJOJyNDebPO:localhost:8800?&Q!jfshVGNDxkvqPxFxWB:localhost:8800+&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800d'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800b'Q!jomrpmwwQQtghscizn:localhost:88000'Q!jomrpmwwQQtghscizn:localhost:8800/( J _ Y S M G A ; 5 / ) #    4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:  4.("  w _ G /  q Z C , l(~\:yW5iG% { Y 7  k I '  e e                                                                                                                                ~  }  {  y  x  w  v  t  s  r  q  o  m  l  k  j  h  f  e  d  c  a  `  _  ^  \  Z  Y  X  V  T  S  R  P  N  M  L  J  G  F  E  C  @  ?  >  <  8  7  6  4  2  I  B  /  -  +  *  )  '  $  #  "              &          !E@__ANON__-22:localhost:42455 !E@__ANON__-21:localhost:42455 !E@__ANON__-20:localhost:42455 !E@__ANON__-19:localhost:42455 !E@__ANON__-18:localhost:42455 !E@__ANON__-17:localhost:42455 !E@__ANON__-16:localhost:42455 !E@__ANON__-15:localhost:42455 e"!E@__ANON__-13:localhost:42455 !E@__ANON__-12:localhost:42455 !E@__ANON__-11:localhost:42455 !E@__ANON__-10:localhost:42455 C@__ANON__-0:localhost:42455 [/@8:localhost:8800o/@7:localhost:8800h/@6:localhost:8800]/@5:localhost:8800U/@3:localhost:8800F1@34:localhost:8800l1@33:localhost:8800e1@32:localhost:8800]1@31:localhost:8800U1@30:localhost:8800N/@2:localhost:8800?1@28:localhost:8800@1@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:88001@13:localhost:880098827,6%543 210                                        \!E@__ANON__-58:localhost:42455 !E@__ANON__-57:localhost:42455 !E@__ANON__-56:localhost:42455 !E@__ANON__-55:localhost:42455 !E@__ANON__-54:localhost:42455 !E@__ANON__-53:localhost:42455 !E@__ANON__-52:localhost:42455 !E@__ANON__-51:localhost:42455 !E@__ANON__-50:localhost:42455 !E@__ANON__-49:localhost:42455 !E@__ANON__-48:localhost:42455 !E@__ANON__-47:localhost:42455 !E@__ANON__-46:localhost:42455 ~!E@__ANON__-45:localhost:42455 z!E@__ANON__-43:localhost:42455 v!E@__ANON__-41:localhost:42455 m!E@__ANON__-40:localhost:42455 c!E@__ANON__-40:localhost:42455 ^!E@__ANON__-39:localhost:42455 O!E@__ANON__-38:localhost:42455 I!E@__ANON__-37:localhost:42455 C!E@__ANON__-36:localhost:42455 =!E@__ANON__-35:localhost:42455 7!E@__ANON__-34:localhost:42455 1!E@__ANON__-33:localhost:42455 &!E@__ANON__-32:localhost:42455 !E@__ANON__-31:localhost:42455 !E@__ANON__-30:localhost:42455  C@__ANON__-2:localhost:42455 b!E@__ANON__-28:localhost:42455 !E@__ANON__-26:localhost:42455 !E@__ANON__-23:localhost:42455 4 4HYeQa$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2660}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE"], "type": "m.room.test", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042834298, "hashes": {"sha256": "Hg03RjCfj4yZaeL/+HxS140wGzJ6WInzUnhMGehslp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RFFk3dNuxVwBjtgxDaklmvuyLjD046qhFuTCy3gAOAbtSQRgO2PF6vLKe0BdNIEqIsFGiPcmF+zrqi//mhOwDQ"}}, "unsigned": {"age_ts": 1570042834298}}{XeQa$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2659}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw"], "type": "m.room.guest_access", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042833382, "hashes": {"sha256": "FQaG6p3GalwLH7gnHsBHWRugcVBlL1QMqHgX+iajxLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UPUjv4p65e8RZCKRob/mTgKZs1Ytgpq1G6ygJrBkEDH8tEKsFCPAjHjWx5ITz+xptOCYSQGoaVNtSAPE02QvDQ"}}, "unsigned": {"age_ts": 1570042833382}}WeQa$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2658}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM"], "type": "m.room.history_visibility", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042832456, "hashes": {"sha256": "L/QNB1/0ctplQqKPIxUrlC/2qcmMG/Dd+044PTRrp3g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/RtHu4QRxP9462Gt2dw7zodATdzoUiQnAot0L7bwlY1/R8juA6brt1Vl5blvAC5aa/aWnboCDC1lvZS6QK7YCw"}}, "unsigned": {"age_ts": 1570042832456}}tVeQau$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2657}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0"], "type": "m.room.join_rules", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042831597, "hashes": {"sha256": "CNK7ePC0dR9apb/hUV8+RvKEJZRFCgl8S3bTMr8A99k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q1bw25wyEyhM8RXOTdYIyIlmaOceM0Kr2jlnYz7XaNZdnhh2h1GOLyDVIS4VlKI7ylRTDDIKat9J/3YFESBfBg"}}, "unsigned": {"age_ts": 1570042831597}} -"5XP6"i-~C T  j T  } C C l>Ly6^Q']!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800 nAQ? !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibility5Q' !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create<Q3 !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels j^Q']!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800 i:Q/ !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rules kBQ? !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibility l<Q3 !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_access m6Q' !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create h<Q3 !KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels%4Q# !KxhGcTbEWmtgGNpdox:localhost:8800m.room.name(^Q']!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800*^Q']!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800$:Q/ !KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rules&BQ? !KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibility'6Q' !KxhGcTbEWmtgGNpdox:localhost:8800m.room.create#<Q3 !MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels^Q']!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800:Q/ !MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rulesBQ? !MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility6Q' !MWCLSWWGdWcSivNVLI:localhost:8800m.room.create?Q9 !MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_aliasEQ))!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:88009Q- !MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstone<Q3 !MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels^Q']!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800:Q/ !MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rulesBQ? !MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibility6Q' !MBWnwKRwFznvRpAzxr:localhost:8800m.room.create<Q3 !LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levelsu^Q']!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800t:Q/ !LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rulesvBQ? !LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibilityw6Q' !LvARVIpJZeRQxbKefX:localhost:8800m.room.creates4Q!!LazKtcHZriKzCvvGwV:localhost:8800test_stateY <Q3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels ^Q']!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800 RQ'E!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455 :Q/ !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules BQ? !LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility 6Q' !LazKtcHZriKzCvvGwV:localhost:8800m.room.create 4Q% !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topic ;Q3 !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levels9Q/ !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rules\Q'[!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800 PO s H%yN#oD y N # wL!uJ w L ! u JsHqFT)}R' { P % !HXfrGcvJCbRItyQLVE:RI*Q!HXfrGcvJCbRItyQLVE:localhost:8800 #*Q!HXfrGcvJCbRItyQLVE:localhost:8800 "*Q!HXfrGcvJCbRItyQLVE:localhost:8800 !*Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HhYREfUiJTpjWmOuPF:localhost:8800GM*Q!HhYREfUiJTpjWmOuPF:localhost:8800FL*Q!HhYREfUiJTpjWmOuPF:localhost:8800EK*Q!HcMGemcRrLnLprOJJR:localhost:8800 *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800 *Q!HcMGemcRrLnLprOJJR:localhost:8800 *Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HZqzpRgqekPOtxstVc:localhost:8800CH*Q!HZqzpRgqekPOtxstVc:localhost:8800BG*Q!HZqzpRgqekPOtxstVc:localhost:8800AF*Q!HZqzpRgqekPOtxstVc:localhost:8800@E*Q!HZqzpRgqekPOtxstVc:localhost:8800?D*Q!HZqzpRgqekPOtxstVc:localhost:8800>C*Q!HZqzpRgqekPOtxstVc:localhost:8800=B*Q!HZqzpRgqekPOtxstVc:localhost:8800<A*Q!HZqzpRgqekPOtxstVc:localhost:8800;@*Q!HZqzpRgqekPOtxstVc:localhost:8800:?*Q!HZqzpRgqekPOtxstVc:localhost:88009>*Q!HWTlaNxUKnDsrtlOxU:localhost:8800"*Q!HWTlaNxUKnDsrtlOxU:localhost:8800!*Q!HWTlaNxUKnDsrtlOxU:localhost:8800 *Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 )*Q!HXfrGcvJCbRItyQLVE:localhost:8800 (*Q!HXfrGcvJCbRItyQLVE:localhost:8800 '*Q!HXfrGcvJCbRItyQLVE:localhost:8800 &*Q!HXfrGcvJCbRItyQLVE:localhost:8800 %*Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HmkcAMkMjWRhTDJMsy:localhost:8800dd*Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc*Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb*Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa*Q!HmkcAMkMjWRhTDJMsy:localhost:8800``*Q!HmkcAMkMjWRhTDJMsy:localhost:8800__*Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^*Q!HmkcAMkMjWRhTDJMsy:localhost:8800]]*Q!HmkcAMkMjWRhTDJMsy:localhost:8800\\*Q!HhYREfUiJTpjWmOuPF:localhost:8800JP*Q!HhYREfUiJTpjWmOuPF:localhost:8800IO*Q!HhYREfUiJTpjWmOuPF:localhost:8800HN*Q!HXfrGcvJCbRItyQLVE:localhost:8800 $ L~Q$ a 4 uHh;rE # o B  U (Z-y  P }l? M l?_2, ^ 1  ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800+Q !HXfrGcvJCbRItyQLVE:localhost:8800+Q !HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HAFNBarGuVZuWCgwWM:localhost:8800++,Q!HAFNBarGuVZuWCgwWM:localhost:8800**,Q!HAFNBarGuVZuWCgwWM:localhost:8800)),Q!HhYREfUiJTpjWmOuPF:localhost:8800JJ,Q!HhYREfUiJTpjWmOuPF:localhost:8800II,Q!HhYREfUiJTpjWmOuPF:localhost:8800HH,Q!HhYREfUiJTpjWmOuPF:localhost:8800GG,Q!HhYREfUiJTpjWmOuPF:localhost:8800FF+Q !HhYREfUiJTpjWmOuPF:localhost:8800EE,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800+Q !HcMGemcRrLnLprOJJR:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800 CC,Q!HZqzpRgqekPOtxstVc:localhost:8800 BB,Q!HZqzpRgqekPOtxstVc:localhost:8800 AA,Q!HZqzpRgqekPOtxstVc:localhost:8800@@,Q!HZqzpRgqekPOtxstVc:localhost:8800??,Q!HZqzpRgqekPOtxstVc:localhost:8800>>,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800+Q !HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800+Q !HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800==,Q!HZqzpRgqekPOtxstVc:localhost:8800<<,Q!HZqzpRgqekPOtxstVc:localhost:8800;;,Q!HZqzpRgqekPOtxstVc:localhost:8800::+Q !HZqzpRgqekPOtxstVc:localhost:880099,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800+Q !HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HAFNBarGuVZuWCgwWM:localhost:8800--,Q!HAFNBarGuVZuWCgwWM:localhost:8800,,,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800  ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 L~Q$ a 4 uHh;rE # o B  U (Z-y  P }l? M l?_2, ^ 1  ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800+Q !HXfrGcvJCbRItyQLVE:localhost:8800+Q !HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HAFNBarGuVZuWCgwWM:localhost:8800++,Q!HAFNBarGuVZuWCgwWM:localhost:8800**,Q!HAFNBarGuVZuWCgwWM:localhost:8800)),Q!HhYREfUiJTpjWmOuPF:localhost:8800JJ,Q!HhYREfUiJTpjWmOuPF:localhost:8800II,Q!HhYREfUiJTpjWmOuPF:localhost:8800HH,Q!HhYREfUiJTpjWmOuPF:localhost:8800GG,Q!HhYREfUiJTpjWmOuPF:localhost:8800FF+Q !HhYREfUiJTpjWmOuPF:localhost:8800EE,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800+Q !HcMGemcRrLnLprOJJR:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800 CC,Q!HZqzpRgqekPOtxstVc:localhost:8800 BB,Q!HZqzpRgqekPOtxstVc:localhost:8800 AA,Q!HZqzpRgqekPOtxstVc:localhost:8800@@,Q!HZqzpRgqekPOtxstVc:localhost:8800??,Q!HZqzpRgqekPOtxstVc:localhost:8800>>,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800+Q !HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800+Q !HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800==,Q!HZqzpRgqekPOtxstVc:localhost:8800<<,Q!HZqzpRgqekPOtxstVc:localhost:8800;;,Q!HZqzpRgqekPOtxstVc:localhost:8800::+Q !HZqzpRgqekPOtxstVc:localhost:880099,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800+Q !HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HAFNBarGuVZuWCgwWM:localhost:8800--,Q!HAFNBarGuVZuWCgwWM:localhost:8800,,,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800  ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 N  v {> I   P  D [ V $ p ] +c1i=7 #j8)U uC{JPo 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 t1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg E1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ c1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0+1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA u1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokn1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE 1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0J1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukg1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko21e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE 1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgQ1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM[1e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI-1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Toc1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Aq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI[1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoI1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcz1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwh1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc"1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cL1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY+1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoon1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcl0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I11e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEx1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic^1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkV1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 C1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMv1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU L1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM`1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo ~z v r n j fb^ZVRNJF eeQ$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800eeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800eeQ$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800eeQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800}eeQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800|eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y!iKezIvJyjkNqKayFju:localhost:8800{eeQ$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800zeeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800yeeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800xeeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800weeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800veeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800ueeQ$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800teeQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800seeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800reeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo!DelfBAGvCrTXgNxmNV:localhost:8800qeeQ$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800peeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800oeeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800 XM&p?e  wF E  } K   ^k R R  Y ' +38 _ -~Lx9jq? 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g >1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY X1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 21e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8h1e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA.1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUQ1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 ?1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo 0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIt1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I81e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc\1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns21e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y X1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkr1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQp1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90Y1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkK1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTED1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM7851e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg,1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ{1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksv1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io+1e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8u1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAh1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8 1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM 1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ{0e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0|1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk:1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug+1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk a1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11In1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs p  g\eQm$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "txn_id": "503", "stream_ordering": 2663}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA"], "type": "m.room.message", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042836891, "hashes": {"sha256": "fiqBIggm8fVC2oEsrUf6Lh1Qc4ByUtVylEMWzJvWBFk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XMputtJuB7MIQk47omtXOcaPWUNNpOykPIF4ekfi0t6gZNQFtTo7eWGjRQilTbuQ4XM45EGBOlux+lR79WxoBg"}}, "unsigned": {"age_ts": 1570042836891}}H[eQa$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 495, "stream_ordering": 2662}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM", "$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU"], "prev_events": ["$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU"], "type": "m.room.member", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-494:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-494", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-494:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042835803, "hashes": {"sha256": "+T7+FGjulGuXfpnoQV+AT3WqAvXDTkBxj9H1XyhSk7A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wtudZAMoDY4AGVYJ91X6nA61dNa+Ubc9SJvXZOaezLoeec6zQMZ+Dp6h5V9heCnba32cMDg8huMXd0NfDBgeDQ"}}, "unsigned": {"age_ts": 1570042835803, "replaces_state": "$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU"}}ZeQa7$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2661}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo"], "type": "m.room.member", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-494", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-494:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042834890, "hashes": {"sha256": "8S6tg2elya19ChCwloXsK7tmVHuRpxemyzR8rhEVda4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h2BmxCLLHxtwNYbAIDd123/dRwPTZmgCCQKqLtpGXw29uABV2kBQ+svTobssTNe32mikItk/d8IimILwG08NDQ"}}, "unsigned": {"age_ts": 1570042834890, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-493:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-493:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-493", "avatar_url": null}, "sender": "@anon-20191002_181700-493:localhost:8800"}]}} a} { y w u sqomkigeca~ eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800~eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~~eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~}eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~|eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~{eeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~zeeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~yeeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~xeeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~weeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~veeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~ueeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~teeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~seeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~reeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~qeeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~peeQ$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~oeeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800~neeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800~meeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~leeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~keeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800 KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-513:localhost:8829]-]@anon-20191002_181700-513:localhost:8829\-]@anon-20191002_181700-512:localhost:8800[-]@anon-20191002_181700-511:localhost:8829Z-]@anon-20191002_181700-510:localhost:8800Y-]@anon-20191002_181700-509:localhost:8800X-]@anon-20191002_181700-509:localhost:8800W-]@anon-20191002_181700-508:localhost:8800V-]@anon-20191002_181700-507:localhost:8800U-]@anon-20191002_181700-506:localhost:8800T-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800-]@anon-20191002_181700-568:localhost:8800-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-566:localhost:8800-]@anon-20191002_181700-565:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-563:localhost:8800-]@anon-20191002_181700-562:localhost:8800-]@anon-20191002_181700-561:localhost:8800-]@anon-20191002_181700-559:localhost:8829-]@anon-20191002_181700-559:localhost:8829-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-557:localhost:8800-]@anon-20191002_181700-557:localhost:8800-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-551:localhost:8800-]@anon-20191002_181700-550:localhost:8800~-]@anon-20191002_181700-549:localhost:8800}-]@anon-20191002_181700-548:localhost:8800|-]@anon-20191002_181700-546:localhost:8829{-]@anon-20191002_181700-545:localhost:8800z-]@anon-20191002_181700-544:localhost:8829y-]@anon-20191002_181700-544:localhost:8829x-]@anon-20191002_181700-543:localhost:8800w-]@anon-20191002_181700-542:localhost:8829v-]@anon-20191002_181700-542:localhost:8829u-]@anon-20191002_181700-541:localhost:8800t-]@anon-20191002_181700-540:localhost:8829s-]@anon-20191002_181700-540:localhost:8829r-]@anon-20191002_181700-539:localhost:8800q-]@anon-20191002_181700-538:localhost:8800p-]@anon-20191002_181700-537:localhost:8800o-]@anon-20191002_181700-536:localhost:8800n-]@anon-20191002_181700-535:localhost:8800m-]@anon-20191002_181700-534:localhost:8800l-]@anon-20191002_181700-533:localhost:8800k-]@anon-20191002_181700-532:localhost:8800j-]@anon-20191002_181700-531:localhost:8800i-]@anon-20191002_181700-522:localhost:8829g-]@anon-20191002_181700-521:localhost:8800h-]@anon-20191002_181700-520:localhost:8800f-]@anon-20191002_181700-519:localhost:8829e-]@anon-20191002_181700-519:localhost:8829d-]@anon-20191002_181700-518:localhost:8800c-]@anon-20191002_181700-517:localhost:8829b-]@anon-20191002_181700-517:localhost:8829a-]@anon-20191002_181700-516:localhost:8800`-]@anon-20191002_181700-515:localhost:8829_-]@anon-20191002_181700-514:localhost:8800^ 8l D `8`]c!E@anon-20191002_181700-508:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwoIUNUZDZDEU127.0.0.1Perl + Net::Async::HTTP/0.44mj_]c!E@anon-20191002_181700-507:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQoXTAWUKOTOH127.0.0.1Perl + Net::Async::HTTP/0.44m`^]c!E@anon-20191002_181700-506:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQoWTFXNSFUTL127.0.0.1Perl + Net::Async::HTTP/0.44mG]]c!E@anon-20191002_181700-505:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQoQKCBIAVDQA127.0.0.1Perl + Net::Async::HTTP/0.44m/\]c!E@anon-20191002_181700-503:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwoJNGLRXMCQM127.0.0.1Perl + Net::Async::HTTP/0.44m i[]c!E@anon-20191002_181700-501:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0HwoYBYGOFEONK127.0.0.1Perl + Net::Async::HTTP/0.44mZ]c!E@anon-20191002_181700-499:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAoVXSECXNERA127.0.0.1Perl + Net::Async::HTTP/0.44m¤Y]c!E@anon-20191002_181700-497:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogoOIZUJKPCSC127.0.0.1Perl + Net::Async::HTTP/0.44m؞X]c!E@anon-20191002_181700-495:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQoQBXBDGRDFZ127.0.0.1Perl + Net::Async::HTTP/0.44m|WW]c!E@anon-20191002_181700-494:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3QwoHEAHMVMVEQ127.0.0.1Perl + Net::Async::HTTP/0.44mo q | 7 P 2 = gkv{ED >Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$_YTe_nYpqtEeGvE2k3a5um8DYtNBXODrJC74z2jVMBM =Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQo<Q? e!coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibility$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUg;Q/ e!coGyOAgYnlBZAqznax:localhost:8800m.room.join_rules$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAi:Q3 e!coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 9Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMc8Q' e!coGyOAgYnlBZAqznax:localhost:8800m.room.create$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 7Q']e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVso6Q? e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibility$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgg5Q/ e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rules$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYi4Q3 e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 3Q']e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQc2Q' e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.create$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI 1Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U 0Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$CnR4Or0xg5WozpzqzRstNjpnilH9bZn8fXlMYNHHGCM /Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4i.Q3 e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwo-Q? e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibility$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Ag,Q/ e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rules$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQi+Q3 e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 *Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8c)Q' e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A (Q']e!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 'Q']e!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829$zTZ3E7InHOAX6z4ESRE9FGvNHYN0PariqMKTEqSWoU8r&Q))e!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgo%Q? e!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibility$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4g$Q/ e!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rules$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Ql#Q9 e!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_alias$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8i"Q3 e!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A !Q']e!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAc Q' e!iKezIvJyjkNqKayFju:localhost:8800m.room.create$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q Q']e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA G$c1i7oJ= PuCj8p?  w E   } K  Q$  W % ]| +V\*1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 B1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM $1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs 1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk {1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk ]1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A #1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg 1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 51e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 31e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQd1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos=1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc|1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcz1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcy1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA"1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMe1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUS1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk n1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs[1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ+1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty000e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwO1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresf1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg ?CI O  Z  a c ' i -o3v:JU\c#j*q0>P ] @anon-20191002_181700-543:localhost:8800m&\9O ]@anon-20191002_181700-543:localhost:8800a&\>N ] @anon-20191002_181700-541:localhost:8800m&\9M ]@anon-20191002_181700-541:localhost:8800a&\>L ] @anon-20191002_181700-539:localhost:8800m&\9K ]@anon-20191002_181700-539:localhost:8800a&\=J ]  @anon-20191002_181700-538:localhost:8800m&\V>I ]  @anon-20191002_181700-537:localhost:8800m&\C9H ]@anon-20191002_181700-537:localhost:8800a&\9G ]@anon-20191002_181700-538:localhost:8800a&\=F ]  @anon-20191002_181700-536:localhost:8800m&\V>E ]  @anon-20191002_181700-535:localhost:8800m&\C9D ]@anon-20191002_181700-535:localhost:8800a&\9C ]@anon-20191002_181700-536:localhost:8800a&\=B ]  @anon-20191002_181700-534:localhost:8800m&\V>A ]  @anon-20191002_181700-533:localhost:8800m&\C9@ ]@anon-20191002_181700-533:localhost:8800a&\9? ]@anon-20191002_181700-534:localhost:8800a&\=> ]  @anon-20191002_181700-532:localhost:8800m&\V>= ]  @anon-20191002_181700-531:localhost:8800m&\C9< ]@anon-20191002_181700-531:localhost:8800a&\9; ]@anon-20191002_181700-532:localhost:8800a&\9: ]@anon-20191002_181700-529:localhost:8800a&\99 ]@anon-20191002_181700-527:localhost:8800a&\98 ]@anon-20191002_181700-526:localhost:8800a&\97 ]@anon-20191002_181700-525:localhost:8800a&\96 ]@anon-20191002_181700-524:localhost:8800a&\95 ]@anon-20191002_181700-523:localhost:8800a&\=4 ]  @anon-20191002_181700-521:localhost:8800m&\V>3 ]  @anon-20191002_181700-520:localhost:8800m&\y92 ]@anon-20191002_181700-521:localhost:8800a&\91 ]@anon-20191002_181700-520:localhost:8800a&\>0 ] @anon-20191002_181700-518:localhost:8800m&\9/ ]@anon-20191002_181700-518:localhost:8800a&\>. ] @anon-20191002_181700-516:localhost:8800m&\9- ]@anon-20191002_181700-516:localhost:8800a&\>, ] @anon-20191002_181700-514:localhost:8800m&\5m9+ ]@anon-20191002_181700-514:localhost:8800a&\>* ] @anon-20191002_181700-512:localhost:8800m&\ 9) ]@anon-20191002_181700-512:localhost:8800a&\>( ]  @anon-20191002_181700-510:localhost:8800m&\ 9' ]@anon-20191002_181700-510:localhost:8800a&\=& ]  @anon-20191002_181700-509:localhost:8800m&\>% ] @anon-20191002_181700-508:localhost:8800m&\  9$ ]@anon-20191002_181700-509:localhost:8800a&\9# ]@anon-20191002_181700-508:localhost:8800a&\=" ]  @anon-20191002_181700-507:localhost:8800m&\V>! ]  @anon-20191002_181700-506:localhost:8800m&\ 9 ]@anon-20191002_181700-507:localhost:8800a&\9 ]@anon-20191002_181700-506:localhost:8800a&\> ]  @anon-20191002_181700-505:localhost:8800m&\9 ]@anon-20191002_181700-505:localhost:8800a&\> ] @anon-20191002_181700-503:localhost:8800m&\9 ]@anon-20191002_181700-503:localhost:8800a&\> ] @anon-20191002_181700-501:localhost:8800m&\9 ]@anon-20191002_181700-501:localhost:8800a&\> ] @anon-20191002_181700-499:localhost:8800m&\2q9 ]@anon-20191002_181700-499:localhost:8800a&\> ] @anon-20191002_181700-497:localhost:8800m&\ 9 ]@anon-20191002_181700-497:localhost:8800a&\> ]  @anon-20191002_181700-495:localhost:8800m&\ 9 ]@anon-20191002_181700-495:localhost:8800a&\= ]  @anon-20191002_181700-494:localhost:8800m&\ \T,rJ" [ 3 D  m F|l  ~ W /  i A   { S + a:e>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800R'Q!hFwigdYZkwYNSwelRH:localhost:8800D'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88005'Q!sAWFpvSUPExZLVcPEd:localhost:8800v'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800*'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800K'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800}'Q!qzrZzAieCgGSbpKOQR:localhost:8800~&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qmcQunYvuokVcPwFHx:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800c'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800l&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800G'Q!pduebXnTyxQWVxEICp:localhost:8800?'Q!paDmNxsOZIKyApbxXs:localhost:8800C'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800&'Q!pHoEnhQYhwlbJXqKQE:localhost:8800f&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800y&Q!oXKJArsPmtgaYANBrg:localhost:88002'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800%&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800/&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800-&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800b'Q!kOmCTyiizHqfCJdhlR:localhost:8800''Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800U&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800S'Q!iKezIvJyjkNqKayFju:localhost:8800)'Q!hrhDJbmXvXBizKoiiK:localhost:8800T'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800I'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800['Q!nftGLlLhVgzOwOFufp:localhost:8800 .kkVZa h  o  v # } * 18?FMT] ATbgPQ]!YQATbgbLImCDamiDHC:localhost:8800@anon-20191002_181700-400:localhost:88004p PQ]!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-411:localhost:88004PQ]!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-407:localhost:88004GP.Q]!EhUxBjnSkVXpTrQlrn:localhost:8800@anon-20191002_181700-505:localhost:88005P-Q]!laUExtszUaoCpZoyEq:localhost:8800@anon-20191002_181700-503:localhost:88004P,Q]!coGyOAgYnlBZAqznax:localhost:8800@anon-20191002_181700-501:localhost:88004P+Q]!ubmTdQFAhrhZkGULDx:localhost:8800@anon-20191002_181700-499:localhost:88004P*Q]!rpVYLTJGcFNdGzFzXj:localhost:8800@anon-20191002_181700-497:localhost:88004PQ]!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-403:localhost:88004XP)Q]!iKezIvJyjkNqKayFju:localhost:8800@anon-20191002_181700-495:localhost:88004P(Q]!DelfBAGvCrTXgNxmNV:localhost:8800@anon-20191002_181700-493:localhost:88004P'Q]!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-491:localhost:88004P&Q]!pJUItjYTOUJQFIxyiX:localhost:8800@anon-20191002_181700-490:localhost:88004P%Q]!mvgUHEsfGqDkPQUvfG:localhost:8800@anon-20191002_181700-488:localhost:88003P$Q]!WYyiQAVvitxsLZKVCG:localhost:8800@anon-20191002_181700-486:localhost:88003P#Q]!KIHYKMzkRDrJwiywwz:localhost:8800@anon-20191002_181700-484:localhost:88003P"Q]!RSLvuCuAqKQQrKCxNq:localhost:8800@anon-20191002_181700-482:localhost:88003P!Q]!DqxFmsXPclgGqpSwdy:localhost:8800@anon-20191002_181700-480:localhost:88003P Q]!uqIEMXzdeNeXdJmuwh:localhost:8800@anon-20191002_181700-478:localhost:88003PQ]!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-476:localhost:88003PQ]!tLkhTnTgDjjAvscRkW:localhost:8800@anon-20191002_181700-475:localhost:88003PQ]!kAxKaIQhXTtGFWSUgr:localhost:8800@anon-20191002_181700-473:localhost:88002PQ]!WhLedNwPGGGTtqeqam:localhost:8800@anon-20191002_181700-471:localhost:88002PQ]!yLccBXjjEasExpsXlt:localhost:8800@anon-20191002_181700-469:localhost:88002PQ]!PcvmCDeVUSyJbXpTig:localhost:8800@anon-20191002_181700-467:localhost:88002PQ]!HbYxdEuVIeLKHwqJEh:localhost:8800@anon-20191002_181700-465:localhost:88002PQ]!FbJSiQoZtZkaFwzzQq:localhost:8800@anon-20191002_181700-463:localhost:88002PQ]!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-461:localhost:88002PQ]!RYNJAGdRhIlwRZFbrO:localhost:8800@anon-20191002_181700-460:localhost:88002PQ]!MqstbCLZIQFiYNHrqR:localhost:8800@anon-20191002_181700-458:localhost:88001PQ]!WuiaqqIOvBjgETqdus:localhost:8800@anon-20191002_181700-456:localhost:88001PQ]!bQDOrbAknnQZfUbhgS:localhost:8800@anon-20191002_181700-454:localhost:88001PQ]!GSxvxNevpCiwmFCHys:localhost:8800@anon-20191002_181700-452:localhost:88001PQ]!yfizglmCXdcqCgDrTr:localhost:8800@anon-20191002_181700-450:localhost:88001PQ]!XnUZiYJDWVNGfsBnGz:localhost:8800@anon-20191002_181700-448:localhost:88001PQ]!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-446:localhost:88001PQ]!YGUjVdVdpcQoGkRnWB:localhost:8800@anon-20191002_181700-445:localhost:88001P Q]!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-442:localhost:88004P Q]!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-436:localhost:88004P Q]!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-433:localhost:88004P Q]!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-430:localhost:88004P Q]!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-427:localhost:88004PQ]!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-424:localhost:88004PQ]!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-420:localhost:88004PQ]!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-417:localhost:88004PQ]!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-414:localhost:88004 3*H f x 3aQQQ?#astest-__ANON__-31:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800@as-user-1:localhost:8800uP[Q]#test-20191002_181700-47:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800@anon-20191002_181700-628:localhost:8800iOCQ]#__ANON__-26:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800@anon-20191002_181700-616:localhost:8800uN[Q]#test-20191002_181700-46:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-614:localhost:8800uM[Q]#test-20191002_181700-45:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-612:localhost:8800uL[Q]#test-20191002_181700-44:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-608:localhost:8800iKCQ]#__ANON__-25:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-604:localhost:8800uJ[Q]#test-20191002_181700-43:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-520:localhost:8800iICQ]#__ANON__-24:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800@anon-20191002_181700-510:localhost:8800iHCQ]#__ANON__-23:localhost:8800!mogJVPxghalmKbblUq:localhost:8800@anon-20191002_181700-506:localhost:8800iGCQ]#__ANON__-22:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800@anon-20191002_181700-495:localhost:8800   * `eQa!$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2667}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A"], "type": "m.room.canonical_alias", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"alias": "#__ANON__-22:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042840531, "hashes": {"sha256": "vvQB4ao2V4ml+7Lc1podCjm6ZLOHJn9zoQc64JqPDpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jfd8JaKPCwjjnNgrZgVFcZWjWGsZvcWVoFOgKnG1JsYq6ByGVJTn6zhdLSbhZTs3yU86peDOUjazl634+KanBg"}}, "unsigned": {"age_ts": 1570042840531}}k_eQac$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2666}{"auth_events": ["$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "type": "m.room.power_levels", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"users": {"@anon-20191002_181700-495:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042839748, "hashes": {"sha256": "sqAOrBdxOsuhXhkyoTjMgG3md0jHr7gDvH1pqHGSkRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N8ie1EANcxS6WgwWtNi04UhC8SSh7ft8v5zJYlK0XTUDxSPh81z/vnTNd60LlAvO8S9bfFsiZgF3jakmJUUkBQ"}}, "unsigned": {"age_ts": 1570042839748}}v^eQay$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2665}{"auth_events": ["$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q"], "prev_events": ["$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q"], "type": "m.room.member", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-495", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-495:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042839122, "hashes": {"sha256": "lEw03bI1251yQgnfxCodIGJVhlm8Oml7XWuuT7gmQl0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L3djeImepXqdKyIVvSOCdhJjSPUv5XvvZNnBy39CmXzrkH57n8N4NvsLBLhEJjw4wRe100jHKxDAJQ9pscKUBg"}}, "unsigned": {"age_ts": 1570042839122}}i]eQa_$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2664}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-495:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042838311, "hashes": {"sha256": "xor1wIq9QAd4FgZMm25kRX2ZMpkCsxNWwOfaFm22KZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1g6EIJKunSNYvRxhGonCks7bySl/aX40cF3e+3vp/UfDbfX9x/ys3A6BFXybJ55cjKbP0uhq03p78t1ES4OVBQ"}}, "unsigned": {"age_ts": 1570042838311}} -RM H C > 9 4/*|%w rmhc T>Qe!mogJVPxghalmKbblUq:localhost:8800$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYT=Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIT<Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMT;Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4T:Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4T9Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQT8Qe!laUExtszUaoCpZoyEq:localhost:8800$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8T7Qe!laUExtszUaoCpZoyEq:localhost:8800$SgLGdr23vUTR_MVNRKilawNMw4EQA3_jqoAaPydR1P8T6Qe!laUExtszUaoCpZoyEq:localhost:8800$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YT5Qe!laUExtszUaoCpZoyEq:localhost:8800$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAET4Qe!laUExtszUaoCpZoyEq:localhost:8800$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QT3Qe!laUExtszUaoCpZoyEq:localhost:8800$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkT2Qe!laUExtszUaoCpZoyEq:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4T1Qe!laUExtszUaoCpZoyEq:localhost:8800$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0QT0Qe!coGyOAgYnlBZAqznax:localhost:8800$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkT/Qe!coGyOAgYnlBZAqznax:localhost:8800$_YTe_nYpqtEeGvE2k3a5um8DYtNBXODrJC74z2jVMBMT.Qe!coGyOAgYnlBZAqznax:localhost:8800$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQT-Qe!coGyOAgYnlBZAqznax:localhost:8800$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUT,Qe!coGyOAgYnlBZAqznax:localhost:8800$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAT+Qe!coGyOAgYnlBZAqznax:localhost:8800$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4T*Qe!coGyOAgYnlBZAqznax:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMT)Qe!coGyOAgYnlBZAqznax:localhost:8800$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzET(Qe!ubmTdQFAhrhZkGULDx:localhost:8800$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsT'Qe!ubmTdQFAhrhZkGULDx:localhost:8800$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgT&Qe!ubmTdQFAhrhZkGULDx:localhost:8800$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYT%Qe!ubmTdQFAhrhZkGULDx:localhost:8800$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8T$Qe!ubmTdQFAhrhZkGULDx:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQT#Qe!ubmTdQFAhrhZkGULDx:localhost:8800$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIT"Qe!rpVYLTJGcFNdGzFzXj:localhost:8800$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3UT!Qe!rpVYLTJGcFNdGzFzXj:localhost:8800$CnR4Or0xg5WozpzqzRstNjpnilH9bZn8fXlMYNHHGCMT Qe!rpVYLTJGcFNdGzFzXj:localhost:8800$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4TQe!rpVYLTJGcFNdGzFzXj:localhost:8800$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwTQe!rpVYLTJGcFNdGzFzXj:localhost:8800$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2ATQe!rpVYLTJGcFNdGzFzXj:localhost:8800$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQTQe!rpVYLTJGcFNdGzFzXj:localhost:8800$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4TQe!rpVYLTJGcFNdGzFzXj:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8TQe!rpVYLTJGcFNdGzFzXj:localhost:8800$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1ATQe!iKezIvJyjkNqKayFju:localhost:8800$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64TQe!iKezIvJyjkNqKayFju:localhost:8800$zTZ3E7InHOAX6z4ESRE9FGvNHYN0PariqMKTEqSWoU8TQe!iKezIvJyjkNqKayFju:localhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgTQe!iKezIvJyjkNqKayFju:localhost:8800$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4TQe!iKezIvJyjkNqKayFju:localhost:8800$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6QTQe!iKezIvJyjkNqKayFju:localhost:8800$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8TQe!iKezIvJyjkNqKayFju:localhost:8800$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0ATQe!iKezIvJyjkNqKayFju:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA  gHdeQa$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2671}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg"], "type": "m.room.test", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042843851, "hashes": {"sha256": "a/aIHbx1ZvQnnCNvyYBtdVHLgl+UBjPrVsZF/+Wau/0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h5mDm03S4u5ZEglrJ9Z2WGF0iKGdrGY4COh2N4lursQw9usC0tIXUX+QyMD7k1u3vgEazIPhsWC1HuaJ/DJkBQ"}}, "unsigned": {"age_ts": 1570042843851}}ceQa5$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2670}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4"], "type": "m.room.aliases", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"aliases": ["#__ANON__-22:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042842990, "hashes": {"sha256": "1RzjKhVDGF5G4SuBsov1CgTNIQpBgt0Yt3ezO/FJalU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jRQK2o0upvN6dKhtkCmEzsPIzRzaZHNCAzsRShDLq8VKKE/wDw3EVmwLSzHg8+HLU0/tuanbO/BnhPbJT0s9Bw"}}, "unsigned": {"age_ts": 1570042842990}}beQa$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2669}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q"], "type": "m.room.history_visibility", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042842001, "hashes": {"sha256": "XN+fhYuP/Oa72BvYA4g09fT1UdfptoITDg8980hmAgo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DH8fsqY37nzjxOnbLAAodebldVrUtRlQAwCKtp1if8/rRsUUxZ4Y+r8ySz4mz0EvUVgYEcgC9dFiDBQNFM0+BQ"}}, "unsigned": {"age_ts": 1570042842001}}taeQau$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2668}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8"], "type": "m.room.join_rules", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042841359, "hashes": {"sha256": "kdsgU9YT6RH0Sel2n7L70m7XID8tL6vptEUXq1gHa1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzrJp2yQzJkbjrJsrItXMw6swNMx9V4477djMASKke3wuEpCsCWQuK1Z+PIoj70/zVwSX5hGh9dfHrrYy+QVDg"}}, "unsigned": {"age_ts": 1570042841359}}  vheQay$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2675}{"auth_events": ["$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A"], "prev_events": ["$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A"], "type": "m.room.member", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-497", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-497:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042847988, "hashes": {"sha256": "qdd+LMo2IRjuQCrpRbVGnCg5JyNwozELDKm2arT+DDs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GHb9k+sZqJvXt4Aq/Ss9hLIo4HSqLW2WeoRFy6Pvac7Wln4t0XG2PFsFlTK90p2x/l9Q57f2H/WDuFCq4rj3AA"}}, "unsigned": {"age_ts": 1570042847988}}igeQa_$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2674}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-497:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042847056, "hashes": {"sha256": "vVPCVxLKUKDGyMyYWN3qIQFy98YszYtfKY6BeEZeOa8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "USOvnMObVstIhucmeWmchIMOIBi4ncNzLeZmMUZOY+kg43EZKLnHI22zvtNTr9VIi3xG2nCyL/q5QYrlvh9GDA"}}, "unsigned": {"age_ts": 1570042847056}}feQm$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "txn_id": "504", "stream_ordering": 2673}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64"], "type": "m.room.message", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042845237, "hashes": {"sha256": "xrFnBwcjk31joxmAH/NnZt+vwmbwb8zxNgvdgZVommY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gzFDL1x7D8m0naa6VA7mCEBrpz9BPgcZilPTOFr499kF6WiNqd7FHAtygg3iXp/cNa20mINTwTdJeVH44cYAAg"}}, "unsigned": {"age_ts": 1570042845237}}reeQ1$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2672}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-496", "membership": "join"}, "depth": 9, "hashes": {"sha256": "bpir/epNtJaqWe0QJvAqfJB7JeVOg8HxxC4MlWFnZPo"}, "origin": "localhost:8829", "origin_server_ts": 1570042844365, "prev_events": ["$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y"], "prev_state": [], "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-496:localhost:8829", "state_key": "@anon-20191002_181700-496:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cuJpg1wHBDcNNQD9DFtDlDzeQIbTWKg24hy1HF+wT/IXuidB9fZzD3dcXlj7QQh3A42vNGwn1oDVc4vu7t4JCA"}, "localhost:8829": {"ed25519:a_UxIG": "7mDP1yOY/7EbWurxuWAsNVEbUpVKWh+i+7CY2VZqCQBZbEUg6Wf7hldUPz/E4kvG/iSaVbqI/eUTiLJ6EzXrCg"}}, "unsigned": {"age": 114}} < Z x  % C a,Jh3Qon]@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-509:localhost:8800 anon-20191002_181700-509n ]@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-508:localhost:8800 anon-20191002_181700-508n ]@anon-20191002_181700-507:localhost:8800@anon-20191002_181700-507:localhost:8800 anon-20191002_181700-507n ]@anon-20191002_181700-506:localhost:8800@anon-20191002_181700-506:localhost:8800 anon-20191002_181700-506n ]@anon-20191002_181700-505:localhost:8800@anon-20191002_181700-505:localhost:8800 anon-20191002_181700-505n ]@anon-20191002_181700-504:localhost:8829@anon-20191002_181700-504:localhost:8829 anon-20191002_181700-504n]@anon-20191002_181700-503:localhost:8800@anon-20191002_181700-503:localhost:8800 anon-20191002_181700-503n]@anon-20191002_181700-501:localhost:8800@anon-20191002_181700-501:localhost:8800 anon-20191002_181700-501n]@anon-20191002_181700-499:localhost:8800@anon-20191002_181700-499:localhost:8800 anon-20191002_181700-499n]@anon-20191002_181700-495:localhost:8800@anon-20191002_181700-495:localhost:8800 anon-20191002_181700-495n]@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-494:localhost:8800 anon-20191002_181700-494n]@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-493:localhost:8800 anon-20191002_181700-493n]@anon-20191002_181700-492:localhost:8800@anon-20191002_181700-492:localhost:8800 anon-20191002_181700-492n~]@anon-20191002_181700-491:localhost:8800@anon-20191002_181700-491:localhost:8800 anon-20191002_181700-491n}]@anon-20191002_181700-490:localhost:8800@anon-20191002_181700-490:localhost:8800 anon-20191002_181700-490n|]@anon-20191002_181700-489:localhost:8829@anon-20191002_181700-489:localhost:8829 anon-20191002_181700-489n{]@anon-20191002_181700-488:localhost:8800@anon-20191002_181700-488:localhost:8800 anon-20191002_181700-488nz]@anon-20191002_181700-486:localhost:8800@anon-20191002_181700-486:localhost:8800 anon-20191002_181700-486ny]@anon-20191002_181700-484:localhost:8800@anon-20191002_181700-484:localhost:8800 anon-20191002_181700-484nx]@anon-20191002_181700-483:localhost:8829@anon-20191002_181700-483:localhost:8829 anon-20191002_181700-483nw]@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-482:localhost:8800 anon-20191002_181700-482nv]@anon-20191002_181700-481:localhost:8829@anon-20191002_181700-481:localhost:8829 anon-20191002_181700-481nu]@anon-20191002_181700-480:localhost:8800@anon-20191002_181700-480:localhost:8800 anon-20191002_181700-480nt]@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-479:localhost:8800 anon-20191002_181700-479n]@anon-20191002_181700-498:localhost:8829@anon-20191002_181700-498:localhost:8829 anon-20191002_181700-498n]@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-497:localhost:8800 anon-20191002_181700-497n]@anon-20191002_181700-496:localhost:8829@anon-20191002_181700-496:localhost:8829 anon-20191002_181700-496 w@u!c r D  ^ 0 5 } O ' V; * A[ioUIG-vb!w  h z N " r F u\-]@anon-20191002_181700-571:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-480:localhost:8800--]@anon-20191002_181700-550:localhost:8800-]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-481:localhost:8829>-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-548:localhost:8800-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-540:localhost:8829-]@anon-20191002_181700-542:localhost:8829-]@anon-20191002_181700-539:localhost:8800-]@anon-20191002_181700-544:localhost:8829-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-541:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-520:localhost:8800|-]@anon-20191002_181700-522:localhost:8829}-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-537:localhost:8800-]@anon-20191002_181700-514:localhost:8800r-]@anon-20191002_181700-531:localhost:8800-]@anon-20191002_181700-513:localhost:8829m-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-519:localhost:8829j-]@anon-20191002_181700-507:localhost:8800f-]@anon-20191002_181700-483:localhost:8829<-]@anon-20191002_181700-482:localhost:88006-]@anon-20191002_181700-518:localhost:8800x-]@anon-20191002_181700-512:localhost:8800d-]@anon-20191002_181700-484:localhost:8800F-]@anon-20191002_181700-509:localhost:8800g-]@anon-20191002_181700-488:localhost:8800M-]@anon-20191002_181700-506:localhost:8800V-]@anon-20191002_181700-489:localhost:8829;-]@anon-20191002_181700-511:localhost:8829h+[@anon-20191002_181700-48:localhost:8800 -]@anon-20191002_181700-508:localhost:8800]-]@anon-20191002_181700-490:localhost:8800O-]@anon-20191002_181700-559:localhost:8829 -]@anon-20191002_181700-505:localhost:8800b-]@anon-20191002_181700-504:localhost:8829R-]@anon-20191002_181700-503:localhost:8800c-]@anon-20191002_181700-499:localhost:8800Z-]@anon-20191002_181700-498:localhost:8829^-]@anon-20191002_181700-497:localhost:8800L-]@anon-20191002_181700-496:localhost:8829W-]@anon-20191002_181700-495:localhost:8800J-]@anon-20191002_181700-494:localhost:8800T-]@anon-20191002_181700-493:localhost:8800B-]@anon-20191002_181700-492:localhost:8800P-]@anon-20191002_181700-491:localhost:8800@+[@anon-20191002_181700-53:localhost:8800!+[@anon-20191002_181700-52:localhost:8800" .-]@anon-20191002_181700-543:localhost:8800 :.-]@anon-20191002_181700-521:localhost:8800{ -]@anon-20191002_181700-510:localhost:8800`HB-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800.-]@anon-20191002_181700-568:localhost:8800\ \T,qI" Z 2 D  l D  |l ~ V .  g @   { S + e`9>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800Q'Q!hFwigdYZkwYNSwelRH:localhost:8800C'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88004'Q!sAWFpvSUPExZLVcPEd:localhost:8800u'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800)'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800J'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800|'Q!qzrZzAieCgGSbpKOQR:localhost:8800}&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800b'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800k&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800F'Q!pduebXnTyxQWVxEICp:localhost:8800>'Q!paDmNxsOZIKyApbxXs:localhost:8800B'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800%'Q!pHoEnhQYhwlbJXqKQE:localhost:8800e&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800x&Q!oXKJArsPmtgaYANBrg:localhost:88002&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800.&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800,&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800a'Q!kOmCTyiizHqfCJdhlR:localhost:8800&'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800T&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800R'Q!iKezIvJyjkNqKayFju:localhost:8800('Q!hrhDJbmXvXBizKoiiK:localhost:8800S'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800H'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800Z'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800$ \T,qI" Z 2 D  l D  |l ~ V .  g @   { S + e`9>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800Q'Q!hFwigdYZkwYNSwelRH:localhost:8800C'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88004'Q!sAWFpvSUPExZLVcPEd:localhost:8800u'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800)'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800J'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800|'Q!qzrZzAieCgGSbpKOQR:localhost:8800}&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800b'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800k&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800F'Q!pduebXnTyxQWVxEICp:localhost:8800>'Q!paDmNxsOZIKyApbxXs:localhost:8800B'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800%'Q!pHoEnhQYhwlbJXqKQE:localhost:8800e&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800x&Q!oXKJArsPmtgaYANBrg:localhost:88002&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800.&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800,&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800a'Q!kOmCTyiizHqfCJdhlR:localhost:8800&'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800T&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800R'Q!iKezIvJyjkNqKayFju:localhost:8800('Q!hrhDJbmXvXBizKoiiK:localhost:8800S'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800H'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800Z'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800$ n^ h  l $ 97L]n! e)Q ]$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpMm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mm@anon-20191002_181700-499:localhost:8800!e)Q ] $4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bYm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mm@anon-20191002_181700-499:localhost:8800!e)Q ] $WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpgm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mm@anon-20191002_181700-499:localhost:8800!e)Q ] $Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8m.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mDmR@anon-20191002_181700-499:localhost:8800!e)Q ] $9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98m.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mۢm۩@anon-20191002_181700-499:localhost:8800!e)Q ] $JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jIm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 m٧mٶ@anon-20191002_181700-499:localhost:8800!e)Q ]$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokgm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mwm{@anon-20191002_181700-499:localhost:8800e#Q ]$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjom.room.test!ubmTdQFAhrhZkGULDx:localhost:8800mհmճ@anon-20191002_181700-499:localhost:8800 e'Q ]$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsm.room.member!ubmTdQFAhrhZkGULDx:localhost:8800mmҍ@anon-20191002_181700-499:localhost:8800,e?Q ]$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgm.room.history_visibility!ubmTdQFAhrhZkGULDx:localhost:8800mPm@anon-20191002_181700-499:localhost:8800$e/Q ]$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYm.room.join_rules!ubmTdQFAhrhZkGULDx:localhost:8800mm˥@anon-20191002_181700-499:localhost:8800&~e3Q ]$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8m.room.power_levels!ubmTdQFAhrhZkGULDx:localhost:8800m<mR@anon-20191002_181700-499:localhost:8800 }e'Q ]$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQm.room.member!ubmTdQFAhrhZkGULDx:localhost:8800mmQ@anon-20191002_181700-499:localhost:8800| e'Q  ]$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIm.room.create!ubmTdQFAhrhZkGULDx:localhost:8800m(mï@anon-20191002_181700-499:localhost:8800!{e)Q ] $p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICEm.room.message!rpVYLTJGcFNdGzFzXj:localhost:8800 mؽ[mؾ}@anon-20191002_181700-497:localhost:8800 ze'Q ] $f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Um.room.member!rpVYLTJGcFNdGzFzXj:localhost:8800 mعpmغB@anon-20191002_181700-498:localhost:8829 ye'Q ]$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4m.room.member!rpVYLTJGcFNdGzFzXj:localhost:8800mضmض@anon-20191002_181700-497:localhost:8800xe#Q ]$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-km.room.test!rpVYLTJGcFNdGzFzXj:localhost:8800mسTmسX@anon-20191002_181700-497:localhost:8800&we3Q ]$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwm.room.guest_access!rpVYLTJGcFNdGzFzXj:localhost:8800mخmد@anon-20191002_181700-497:localhost:8800,ve?Q ]$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Am.room.history_visibility!rpVYLTJGcFNdGzFzXj:localhost:8800mثmج@anon-20191002_181700-497:localhost:8800$ue/Q ]$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQm.room.join_rules!rpVYLTJGcFNdGzFzXj:localhost:8800mبomة@anon-20191002_181700-497:localhost:8800&te3Q ]$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4m.room.power_levels!rpVYLTJGcFNdGzFzXj:localhost:8800mإjmئ@anon-20191002_181700-497:localhost:8800 se'Q ]$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8m.room.member!rpVYLTJGcFNdGzFzXj:localhost:8800mآmأd@anon-20191002_181700-497:localhost:8800r e'Q  ]$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1Am.room.create!rpVYLTJGcFNdGzFzXj:localhost:8800m؟Pm؟@anon-20191002_181700-497:localhost:8800 \T,qI" Z 2 D  l D  |l ~ V .  g @   { S + e`9>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800Q'Q!hFwigdYZkwYNSwelRH:localhost:8800C'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88004'Q!sAWFpvSUPExZLVcPEd:localhost:8800u'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800)'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800J'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800|'Q!qzrZzAieCgGSbpKOQR:localhost:8800}&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800b'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800k&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800F'Q!pduebXnTyxQWVxEICp:localhost:8800>'Q!paDmNxsOZIKyApbxXs:localhost:8800B'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800%'Q!pHoEnhQYhwlbJXqKQE:localhost:8800e&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800x&Q!oXKJArsPmtgaYANBrg:localhost:88002&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800.&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800,&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800a'Q!kOmCTyiizHqfCJdhlR:localhost:8800&'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800T&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800R'Q!iKezIvJyjkNqKayFju:localhost:8800('Q!hrhDJbmXvXBizKoiiK:localhost:8800S'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800H'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800Z'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800$ 7:x=}=K x 5 < kT:} % k 0 _ )t^#AL/8;uBQ? !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibility :Q/ !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules <Q3 !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels ^Q']!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800 6Q' !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.create ^Q']!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800 ERQ'E!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455 I:Q/ !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules GBQ? !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibility H6Q' !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create D<Q3 !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels^Q']!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829H^Q']!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800I^Q']!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800B:Q/ !wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rulesEBQ? !wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibilityF6Q' !wBkUBAjOznOyxrLchl:localhost:8800m.room.createA?Q9 !wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_aliasDEQ))!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800G<Q3 !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels ^Q']!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800 :Q/ !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rules BQ? !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibility 6Q' !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.create <Q3 !wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levels^Q']!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800:Q/ !wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rulesBQ? !wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility6Q' !wAyboOFgsOPwkmgMAI:localhost:8800m.room.create5Q% !vyCFfUTJKYJSDadFhT:localhost:8800m.room.topicb<Q3 !vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levelsX4Q# !vyCFfUTJKYJSDadFhT:localhost:8800m.room.name`^Q']!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800V:Q/ !vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rules\BQ? !vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibility^6Q' !vyCFfUTJKYJSDadFhT:localhost:8800m.room.createU?Q9 !vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_aliasZEQ))!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800d<Q3 !vttkrtSyHEJXVMlvLo:localhost:8800m.room.power_levels4Q# !vttkrtSyHEJXVMlvLo:localhost:8800m.room.name"^Q']!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-435:localhost:8800$^Q']!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-434:localhost:8800#^Q']!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-433:localhost:8800:Q/ !vttkrtSyHEJXVMlvLo:localhost:8800m.room.join_rules BQ? !vttkrtSyHEJXVMlvLo:localhost:8800m.room.history_visibility!6Q' !vttkrtSyHEJXVMlvLo:localhost:8800m.room.create<Q3 !vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels^Q']!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800:Q/ !vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rulesBQ? !vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility<Q3 !vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access6Q' !vpuivIQDEhyuhOLWpg:localhost:8800m.room.create?Q9 !vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias EQ))!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels F -RM H C > 9 4/*|%w rmhc T^Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIT]Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMT\Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4T[Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4TZQe !EhUxBjnSkVXpTrQlrn:localhost:8800$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQTYQe !laUExtszUaoCpZoyEq:localhost:8800$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptsTXQe !laUExtszUaoCpZoyEq:localhost:8800$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0TWQe !laUExtszUaoCpZoyEq:localhost:8800$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8TVQe !laUExtszUaoCpZoyEq:localhost:8800$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQMTUQe !laUExtszUaoCpZoyEq:localhost:8800$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YTTQe !laUExtszUaoCpZoyEq:localhost:8800$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAETSQe !laUExtszUaoCpZoyEq:localhost:8800$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QTRQe !laUExtszUaoCpZoyEq:localhost:8800$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkTQQe !laUExtszUaoCpZoyEq:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4TPQe !laUExtszUaoCpZoyEq:localhost:8800$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0QTOQe !coGyOAgYnlBZAqznax:localhost:8800$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkTNQe !coGyOAgYnlBZAqznax:localhost:8800$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjETMQe !coGyOAgYnlBZAqznax:localhost:8800$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQTLQe !coGyOAgYnlBZAqznax:localhost:8800$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUTKQe !coGyOAgYnlBZAqznax:localhost:8800$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkATJQe !coGyOAgYnlBZAqznax:localhost:8800$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4TIQe !coGyOAgYnlBZAqznax:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMTHQe !coGyOAgYnlBZAqznax:localhost:8800$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzETGQe !ubmTdQFAhrhZkGULDx:localhost:8800$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTcTFQe !ubmTdQFAhrhZkGULDx:localhost:8800$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blcTEQe !ubmTdQFAhrhZkGULDx:localhost:8800$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpMTDQe !ubmTdQFAhrhZkGULDx:localhost:8800$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bYTCQe !ubmTdQFAhrhZkGULDx:localhost:8800$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpgTBQe !ubmTdQFAhrhZkGULDx:localhost:8800$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8TAQe !ubmTdQFAhrhZkGULDx:localhost:8800$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98T@Qe !ubmTdQFAhrhZkGULDx:localhost:8800$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jIT?Qe !ubmTdQFAhrhZkGULDx:localhost:8800$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokgT>Qe !ubmTdQFAhrhZkGULDx:localhost:8800$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjoT=Qe !ubmTdQFAhrhZkGULDx:localhost:8800$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsT<Qe !ubmTdQFAhrhZkGULDx:localhost:8800$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgT;Qe !ubmTdQFAhrhZkGULDx:localhost:8800$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYT:Qe ~!ubmTdQFAhrhZkGULDx:localhost:8800$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8T9Qe }!ubmTdQFAhrhZkGULDx:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQT8Qe |!ubmTdQFAhrhZkGULDx:localhost:8800$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIT7Qe {!rpVYLTJGcFNdGzFzXj:localhost:8800$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICET6Qe z!rpVYLTJGcFNdGzFzXj:localhost:8800$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3UT5Qe y!rpVYLTJGcFNdGzFzXj:localhost:8800$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4T4Qe x!rpVYLTJGcFNdGzFzXj:localhost:8800$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-kT3Qe w!rpVYLTJGcFNdGzFzXj:localhost:8800$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwT2Qe v!rpVYLTJGcFNdGzFzXj:localhost:8800$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A a} { y w u sqomkigeca~(eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~'eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~&eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800~%eeQ$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~$eeQ$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~#eeQ$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~"eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~!eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800~ eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800 "O | ! I X a o ~<"1_'OmeQ? $KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800m.room.history_visibilityeeQ/ $1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800m.room.join_rulesjeQ9 $wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800m.room.canonical_aliasgeQ3 $VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800m.room.power_levels eQ']$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800aeQ' $d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800m.room.createmeQ? $VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibilitye~eQ/ $QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rulesg}eQ3 $X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels |eQ']$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800a{eQ' $btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create zeQ']$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829 yeQ']$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829mxeQ? $1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE!laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibilityeweQ/ $qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800m.room.join_rulesgveQ3 $49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels ueQ']$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800ateQ' $u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800m.room.create seQ']$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829 reQ']$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829mqeQ? $895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU!coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibilityepeQ/ $x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800m.room.join_rulesgoeQ3 $GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels neQ']$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800ameQ' $S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800m.room.create leQ']$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829mkeQ? $_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibilityejeQ/ $iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rulesgieQ3 $RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels heQ']$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800ageQ' $JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800m.room.create feQ']$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829 eeQ']$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829gdeQ3 $okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access Los ^3\1T)  #}R' {H b 7 `5qF } T +  ^ 5 DuJs ^ y NoX*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800"*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 (Q!sPWVGnipjiiWQpywNO:localhost:880076(Q!sPWVGnipjiiWQpywNO:localhost:880065*Q!sJnuQYOyruhUpXDsLY:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 "*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 r *Q!sfXbvAcOUJhzGwWEpZ:localhost:8800#(*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800"'*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!&*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 %*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800$*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800# N*Q!rwUuVBrftGHDBOlEZm:localhost:8800Lo*Q!rwUuVBrftGHDBOlEZm:localhost:8800Kn*Q!rwUuVBrftGHDBOlEZm:localhost:8800Jm*Q!rwUuVBrftGHDBOlEZm:localhost:8800Il*Q!rwUuVBrftGHDBOlEZm:localhost:8800Hk*Q!rwUuVBrftGHDBOlEZm:localhost:8800Gj*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 +*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 **Q!sHRHoXzYrrPSlWBkoh:localhost:8800 )*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 (*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 '*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 &*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 %*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 $*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 #*Q!sAWFpvSUPExZLVcPEd:localhost:8800 (Q!scyFsXcUIJiLIMwWMY:localhost:8800qp(Q!scyFsXcUIJiLIMwWMY:localhost:8800po(Q!scyFsXcUIJiLIMwWMY:localhost:8800on(Q!scyFsXcUIJiLIMwWMY:localhost:8800nm(Q!scyFsXcUIJiLIMwWMY:localhost:8800ml(Q!scyFsXcUIJiLIMwWMY:localhost:8800lk(Q!sPWVGnipjiiWQpywNO:localhost:8800>=(Q!sPWVGnipjiiWQpywNO:localhost:8800=<(Q!sPWVGnipjiiWQpywNO:localhost:8800<;(Q!sPWVGnipjiiWQpywNO:localhost:8800;:(Q!sPWVGnipjiiWQpywNO:localhost:8800:9(Q!sPWVGnipjiiWQpywNO:localhost:880098(Q!sPWVGnipjiiWQpywNO:localhost:880087*Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 -*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!rwUuVBrftGHDBOlEZm:localhost:8800Nq*Q!rwUuVBrftGHDBOlEZm:localhost:8800Mp*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  doeQ1$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2682}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ", "$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-498", "membership": "join"}, "depth": 9, "hashes": {"sha256": "VMP/3g5yVMLlq/pDPC8jjr521hRTFpD5cz9H5aYjOaw"}, "origin": "localhost:8829", "origin_server_ts": 1570042853744, "prev_events": ["$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4"], "prev_state": [], "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-498:localhost:8829", "state_key": "@anon-20191002_181700-498:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/eMmUkplGfKE/Oi/c19Esy8n9ImlYmYZ6sUxG3uY+Em58UeU4B7qEWxXCcl1NuHHyeLPjmIbfBQ65kZFdE14Dg"}, "localhost:8829": {"ed25519:a_UxIG": "fM0myX00wmwg7YiRgntTObPJbq8pFre3R4mdcfJFTg2ItAVgTU4hdTb0rjhJfNPWWXo/Mlq02bo278XsnofeBw"}}, "unsigned": {"age": 103, "replaces_state": "$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4"}}neQa7$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2681}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k"], "type": "m.room.member", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-498", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-498:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042852871, "hashes": {"sha256": "J6GSU9AeHJxYK9RvmdDz4PyWT7g+lCGyOOa+WKo2H/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U1QlwSQ7/Qkr6qrmb3nBfCGJs6a7/9jzvO4hZCuh5x3wD4mpJoni3InU56ZTbl4SilXMi+FAYkPyDYCi0nyhAA"}, "localhost:8829": {"ed25519:a_UxIG": "GTMziRtQIACA9f1+K/exDxzwwmK368RZtCYkGvsSX1VwIbwX8I8CGLVus4rzu6v1UiamyCsArmfR/43iY9AFBA"}}, "unsigned": {"age_ts": 1570042852871, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-497:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-497:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-497", "avatar_url": null}, "sender": "@anon-20191002_181700-497:localhost:8800"}]}}HmeQa$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2680}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw"], "type": "m.room.test", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042852180, "hashes": {"sha256": "J/wYtb3/z1JLEX2JvUJq89nZ16RN8fziS71KZ9nqWmU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C/mNKkYbDp+hnkhtP7g9cPNoKhXStnz08ZLoy7pYbV7sEx6fkxV3pBnMqJ94xlwkgyYhzM/uRU4p3A3iifpjDg"}}, "unsigned": {"age_ts": 1570042852180}} [ ;C S3 +#s | k  K c;eeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg!uqIEMXzdeNeXdJmuwh:localhost:8800 'eeQ$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800ہeeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800 _eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800eeeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:88001eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:88291eeQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800eeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:88003eeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800΁eeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800VeeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800 `eeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800 9eeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800 1eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800 eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800reeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:88000eeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800ЁeeQ$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800WeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800PeeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800 g UD  L| dt \ l<4  ,$ U LeeQ$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800!eeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800veeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800eeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800_eeQ$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800/eeQ$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800$eeQ$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800(eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8!rQeYcODvQiLsOIbQrJ:localhost:8800feeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:88007eeQ$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800ƁeeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800eeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:88004eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800neeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800 heeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800 IeeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800 ˁeeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800 ƁeeQ$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800ȁeeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI!YQATbgbLImCDamiDHC:localhost:8800  z kseQac$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2686}{"auth_events": ["$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "type": "m.room.power_levels", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"users": {"@anon-20191002_181700-499:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042857532, "hashes": {"sha256": "u+NHGisoOCg33bOMr3UuZMV3JzefCOzNgXQ1Us0zydg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "39iOILCD22dPgdzVyXzndXJA8c3AJH4BtcI0Q7yfjSQvBoeJjy1SqqyKqx+VaO2pojLqokq0jY1u9zG/BsvRBw"}}, "unsigned": {"age_ts": 1570042857532}}vreQay$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2685}{"auth_events": ["$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI"], "prev_events": ["$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI"], "type": "m.room.member", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-499", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-499:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042856936, "hashes": {"sha256": "S/izUAnTA+X3OacwHXli+VIKf5FpoEpiao80aPWcRCk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9keZaTZXLtYcDlh6gYnBC7yl3GBi04JSXmLfvWnXWM2eJ0uYDvdq+YVEBRsoxL6Ug/ozE0kVuQDNr7PXFPODAg"}}, "unsigned": {"age_ts": 1570042856936}}iqeQa_$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2684}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-499:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042856232, "hashes": {"sha256": "hrWrWABOfdGAF3hRPJFG8qVfTYLKHecGDR8JWk25Q5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zv7xdIFllhraECJbl4HTUe12mq7/8Q+7WkFY7SDPdA/wgRQ9Tld5Mqckms02RA8StTG4oTVbqF6Tqev7/1vXBg"}}, "unsigned": {"age_ts": 1570042856232}}peQm$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "txn_id": "505", "stream_ordering": 2683}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U"], "type": "m.room.message", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042854747, "hashes": {"sha256": "aIamuYtdRBQWIaDT8xB52sphpm9VSzuDePQXAjLs7go"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R+6SarsGvVg+bIJ18muidgteskB5ccLaV9muOyPb0xaD3CHXQqGa9uw/EsoeFdj5ICshRFqiJdvOAc1YYxdhDQ"}}, "unsigned": {"age_ts": 1570042854747}}  oM ~eQ$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "512", "stream_ordering": 2697}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042864606, "hashes": {"sha256": "FADrTNUUqEV6IeObgOE4biBby+yKHARhVZ8pAIeIU+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IC2zMJ7fm8YOOdA/c3XJfLLQYF2N2B6p7FcrPDDUHw+Rw1J/IH2xkUnCkXTL4O6eXKG1NRr7a8MLq8fZ0iZcAg"}}, "unsigned": {"age_ts": 1570042864606}} }eQ$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "511", "stream_ordering": 2696}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042864107, "hashes": {"sha256": "k6L+9zyirl38EAkEPKA/gzglF/uPggfwa/tWwPL7Ldk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ntSR9K/3gS6zVUUuVNT6dtNU5wQEoqD91kQ8tPIkeZgS0ALkzK4mSGTFrK0wEvitJz8QL7m/YmnEp2mmbCEgAg"}}, "unsigned": {"age_ts": 1570042864107}} |eQ$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "510", "stream_ordering": 2695}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042863566, "hashes": {"sha256": "rGYnpX9A/CbT92+ONF8hYGuCiVV3nCnESVTyYMkdC8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r3JLOe8LpYt0UsqNJXplpDUwOWbIBAVsTeGParhm4HRSG23nO82IHw8BnUWqg5QRwFeUpwcaRIckmX6npI3NCQ"}}, "unsigned": {"age_ts": 1570042863566}} {eQ$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "509", "stream_ordering": 2694}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042862916, "hashes": {"sha256": "zkGOq2v7bCyaXMI/5QzgDhMLk98MJ0DWJRwZ9Rjvafo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bMfSuqKnF1yswEKcK/auYHRYZp7obOPM0QOTiVjarWz2cDa7Hh3NKfQ0bJRcU9QlKlrkwl0kzaFh3RrZHe1yCg"}}, "unsigned": {"age_ts": 1570042862916}}  veQa7$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2689}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg"], "type": "m.room.member", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-500", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-500:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042860036, "hashes": {"sha256": "K2I5bbI0+1X/YRXiGIw6bj1IAaGjFiMFQ3nrLINkb30"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sQXbyTC7p2D8NK/CeXfBni8C2ErM39BEDNfK+IlBxEzNMO08Sak9B3Qti9Hro1V1l2NU7uSiINTL0f0Hth7gDg"}, "localhost:8829": {"ed25519:a_UxIG": "tO4M9YVC5riPcMC0be/61Riz5dGgzpIAWLojV+7zYbDfX0JYimn3Y/uzvZqkMmHH0LVLkl1batbClM4nVZ9VAA"}}, "unsigned": {"age_ts": 1570042860036, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-499:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-499:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-499", "avatar_url": null}, "sender": "@anon-20191002_181700-499:localhost:8800"}]}}ueQa$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2688}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY"], "type": "m.room.history_visibility", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042858832, "hashes": {"sha256": "cw4GUnrBmhsiwyR6hCuW2ysmUwmAVeB3OgXQUVvwbuw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jizWX1INCyOW4o+w6BxlIp63nn96kYzKE6mlTeTNVZA/5LRhhRIEvx9ujoo7PxYovrG99D8tdVizk8dXj6I+AA"}}, "unsigned": {"age_ts": 1570042858832}}tteQau$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2687}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8"], "type": "m.room.join_rules", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042858192, "hashes": {"sha256": "K6+spvAf/i76tYWej0/YIfFsK+0z3lmO6KrUhqy8cVk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m6L59ZfNYRuRms+V7katZk8gd+4tThXr7HegvDBi1cFRNhhXqme/VH85UI/jV8Z/j6YDK8UDQSPt0FCXeU4EBw"}}, "unsigned": {"age_ts": 1570042858192}} vE | J  P  V $ \ *b0\i7 Do=  vD*|JPV $j8p> v1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUN1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIG1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tof1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Ar1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA.1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 31e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI^1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoc1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc}1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc%1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg k1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cO1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYE1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooo1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcm0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI &1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I41e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME{1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_UA1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ }1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8d1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA L1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY 51e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k (1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU;1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic 21e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gi1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMc1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY Q<OU#[) V $ [ )  b0h6 o }= uC {I Qj8p > w V $1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ 1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFME1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE 1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ91e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q`1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM M1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo .1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIA1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kv1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM{1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM_1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU)1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUo1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI.1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R41e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ91e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4;1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIi1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 i1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM Q1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q x1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y d1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 d1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 21e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q i 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIE ,NC 8 - { " p  e ZOD9.|#qf V eL$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4sha256lAVTh>> 25\"K 9+y>VeL$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYsha256*eTk{(y0m'Z(VeL$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPosha256f+ bos^m>PDV;ٞz̜-pVeL$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYsha256_+zq^yo)! VeL$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8sha256T%Vw׼ouhDy]kv^VeL$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4sha256_dM?K}~ďl"Z>qrVeL$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYsha256wt7tanܨ>@26 ~P2vȀVeL$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtksha256õAOrJi/ ֢+:VeL$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIsha256T0SŽ'H[~0GVeL$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMsha256AH*C{='#; ٨~2 G6cVeL$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4sha256_ 5Zd{חDknB{=17fvNVeL$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4sha256>п WR6`F ,\VeL$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQsha256nѹ)ZR䫡V599nwHVeL$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptssha256,yRM5` wsXG )VeL$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0sha256?-}bnɄ-\uU"VeL$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8sha256p14|]jը mPI &}3/VeL$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQMsha256Qw%Rvj?;*9WqńVeL$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Ysha256+ .}jeaZyCD?vV eL$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEsha256_v<Rdn$!e/Q ]$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMm.room.join_rules!EhUxBjnSkVXpTrQlrn:localhost:8800m8Dm9@anon-20191002_181700-505:localhost:8800& e3Q ]$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4m.room.power_levels!EhUxBjnSkVXpTrQlrn:localhost:8800m4m6@anon-20191002_181700-505:localhost:8800 e'Q ]$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4m.room.member!EhUxBjnSkVXpTrQlrn:localhost:8800m2m2@anon-20191002_181700-505:localhost:8800 e'Q  ]$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQm.room.create!EhUxBjnSkVXpTrQlrn:localhost:8800m/Wm/@anon-20191002_181700-505:localhost:8800#e-Q ] $GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptsm.room.redaction!laUExtszUaoCpZoyEq:localhost:8800 m%qm)@anon-20191002_181700-504:localhost:8829!e)Q ] $FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0m.room.message!laUExtszUaoCpZoyEq:localhost:8800 m%^m'7@anon-20191002_181700-504:localhost:8829 e'Q ]$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8m.room.member!laUExtszUaoCpZoyEq:localhost:8800m"m#@anon-20191002_181700-504:localhost:8829e#Q ]$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQMm.room.test!laUExtszUaoCpZoyEq:localhost:8800mm@anon-20191002_181700-503:localhost:8800 e'Q ]$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Ym.room.member!laUExtszUaoCpZoyEq:localhost:8800m)m@anon-20191002_181700-503:localhost:8800,e?Q ]$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEm.room.history_visibility!laUExtszUaoCpZoyEq:localhost:8800mTm@anon-20191002_181700-503:localhost:8800$e/Q ]$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Qm.room.join_rules!laUExtszUaoCpZoyEq:localhost:8800mmQ@anon-20191002_181700-503:localhost:8800&e3Q ]$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkm.room.power_levels!laUExtszUaoCpZoyEq:localhost:8800mm@anon-20191002_181700-503:localhost:8800 e'Q ]$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4m.room.member!laUExtszUaoCpZoyEq:localhost:8800mam@anon-20191002_181700-503:localhost:8800 e'Q  ]$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Qm.room.create!laUExtszUaoCpZoyEq:localhost:8800m m (@anon-20191002_181700-503:localhost:8800 e'Q ]$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkm.room.member!coGyOAgYnlBZAqznax:localhost:8800mm4@anon-20191002_181700-502:localhost:8829e#Q ]$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjEm.room.test!coGyOAgYnlBZAqznax:localhost:8800mm@anon-20191002_181700-501:localhost:8800 e'Q ]$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQm.room.member!coGyOAgYnlBZAqznax:localhost:8800m"m@anon-20191002_181700-501:localhost:8800,e?Q ]$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUm.room.history_visibility!coGyOAgYnlBZAqznax:localhost:8800mKmH@anon-20191002_181700-501:localhost:8800$e/Q ]$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAm.room.join_rules!coGyOAgYnlBZAqznax:localhost:8800mm@anon-20191002_181700-501:localhost:8800&e3Q ]$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4m.room.power_levels!coGyOAgYnlBZAqznax:localhost:8800mUm@anon-20191002_181700-501:localhost:8800 e'Q ]$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMm.room.member!coGyOAgYnlBZAqznax:localhost:8800mm@anon-20191002_181700-501:localhost:8800  e'Q  ]$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzEm.room.create!coGyOAgYnlBZAqznax:localhost:8800m@m@anon-20191002_181700-501:localhost:8800! e)Q ]$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTcm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mm@anon-20191002_181700-499:localhost:8800! e)Q ]$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blcm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mm@anon-20191002_181700-499:localhost:8800 X) { P % c8 Bi>g<}R' y N # e: w ! u J  so LTmqFk@D*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ *Q!hegUPDZCEEmBhsNJJR:localhost:8800 } *Q!hegUPDZCEEmBhsNJJR:localhost:8800 | *Q!hnQOBexFYpvJntEChZ:localhost:8800B*Q!hnQOBexFYpvJntEChZ:localhost:8800A*Q!hnQOBexFYpvJntEChZ:localhost:8800@*Q!hWHyATwKfuznrqTiyu:localhost:8800\b*Q!hWHyATwKfuznrqTiyu:localhost:8800[a*Q!hWHyATwKfuznrqTiyu:localhost:8800Z`*Q!hWHyATwKfuznrqTiyu:localhost:8800Y_*Q!hWHyATwKfuznrqTiyu:localhost:8800X^*Q!hWHyATwKfuznrqTiyu:localhost:8800W]*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800C*Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!iKezIvJyjkNqKayFju:localhost:8800 k *Q!iKezIvJyjkNqKayFju:localhost:8800 j *Q!iKezIvJyjkNqKayFju:localhost:8800 i *Q!iKezIvJyjkNqKayFju:localhost:8800 h *Q!hnQOBexFYpvJntEChZ:localhost:8800D*Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!iKezIvJyjkNqKayFju:localhost:8800 q *Q!iKezIvJyjkNqKayFju:localhost:8800 p *Q!iKezIvJyjkNqKayFju:localhost:8800 o *Q!iKezIvJyjkNqKayFju:localhost:8800 n *Q!iKezIvJyjkNqKayFju:localhost:8800 m *Q!iKezIvJyjkNqKayFju:localhost:8800 l *Q!hegUPDZCEEmBhsNJJR:localhost:8800  *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 V*Q!hnQOBexFYpvJntEChZ:localhost:8800?*Q!hnQOBexFYpvJntEChZ:localhost:8800>*Q!hgjYwwwjWJNgwrzOto:localhost:8800`d*Q!hgjYwwwjWJNgwrzOto:localhost:8800_c*Q!hgjYwwwjWJNgwrzOto:localhost:8800^b*Q!hgjYwwwjWJNgwrzOto:localhost:8800]a*Q!hgjYwwwjWJNgwrzOto:localhost:8800\`*Q!hgjYwwwjWJNgwrzOto:localhost:8800[_*Q!hgjYwwwjWJNgwrzOto:localhost:8800Z^*Q!hgjYwwwjWJNgwrzOto:localhost:8800Y]*Q!hgjYwwwjWJNgwrzOto:localhost:8800X\*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hgjYwwwjWJNgwrzOto:localhost:8800W[*Q!hgjYwwwjWJNgwrzOto:localhost:8800VZ*Q!hZuwenlFDapIPBOyfi:localhost:8800z*Q!hZuwenlFDapIPBOyfi:localhost:8800y*Q!hZuwenlFDapIPBOyfi:localhost:8800x~*Q!hZuwenlFDapIPBOyfi:localhost:8800w}*Q!hZuwenlFDapIPBOyfi:localhost:8800v|*Q!hZuwenlFDapIPBOyfi:localhost:8800u{*Q!hegUPDZCEEmBhsNJJR:localhost:8800 { *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hYPSaMPGsLnvYSmwhg:localhost:880006*Q!hYPSaMPGsLnvYSmwhg:localhost:8800/5*Q!hYPSaMPGsLnvYSmwhg:localhost:8800(.*Q!hYPSaMPGsLnvYSmwhg:localhost:8800'-*Q!hYPSaMPGsLnvYSmwhg:localhost:8800&,*Q!hYPSaMPGsLnvYSmwhg:localhost:8800%+*Q!hYPSaMPGsLnvYSmwhg:localhost:8800$**Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800  eQa$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2704}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA"], "type": "m.room.history_visibility", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042870859, "hashes": {"sha256": "CZIJY8SjZW7Rvy3rlfwwJ88AYG7QfYTcnCOn72C+jPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mRVnTlGZ0kRZnjMsl+avhWTtqe/rLWVXwJ3js4xmMxUW8wzCpSobloHQdxBHPZbb0wmV6AcY+icUw3g4gmqsBw"}}, "unsigned": {"age_ts": 1570042870859}}teQau$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2703}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4"], "type": "m.room.join_rules", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042870002, "hashes": {"sha256": "mpiFcM7cLN41PhXL/K+qwRQmMNj3saOIK14Gd8TtTt8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KQ89rrN7Sy1BHr5u6yy2QKHrNtXxMTzmd6taRjJ+jtdmIj9qouHXjgxFqGqOSOg1Ol4a/YgbEMERxH6RCdSnDw"}}, "unsigned": {"age_ts": 1570042870002}}keQac$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2702}{"auth_events": ["$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "type": "m.room.power_levels", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"users": {"@anon-20191002_181700-501:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042869077, "hashes": {"sha256": "SMpgsD5yHGDP1TN2atsU7WljGXUagBUbtORS8glli2U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PxyB0qL8pNSe7+/Opwg+UG50zXfgqs3qpXWr0SIB5tCc0mD1bwrRIrU2bkcHLGOzNNhByMJiDc7paLhXRXz7CQ"}}, "unsigned": {"age_ts": 1570042869077}}  L# w E  } K  ) Q U W %  ] +c1i7[o= uC{IOj8p1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYm1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns`1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ;1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y41e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q w1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s :1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAR1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc v1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQW1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkx1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w-1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs 1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs_1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI #1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IN1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU n1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 ~1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8B1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gy1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k"1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYn1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o051e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg&1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA pc1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog j1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ez1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg (% i  r  ' tw 25Zqz}2 Q']e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMj Q3 e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_access$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkpQ? e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibility$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIhQ/ e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rules$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YjQ3 e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE Q']e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUdQ' e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.create$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 Q']e !mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQsQ))e !mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4pQ? e !mogJVPxghalmKbblUq:localhost:8800m.room.history_visibility$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYhQ/ e !mogJVPxghalmKbblUq:localhost:8800m.room.join_rules$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPomQ9 e !mogJVPxghalmKbblUq:localhost:8800m.room.canonical_alias$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYj~Q3 e !mogJVPxghalmKbblUq:localhost:8800m.room.power_levels$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 }Q']e !mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4d|Q' e !mogJVPxghalmKbblUq:localhost:8800m.room.create$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYp{Q? e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIhzQ/ e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rules$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMjyQ3 e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 xQ']e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4dwQ' e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ8vQ']ee !laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y uQ']e !laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YptQ? e !laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibility$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEhsQ/ e !laUExtszUaoCpZoyEq:localhost:8800m.room.join_rules$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QjrQ3 e !laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk qQ']e !laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4dpQ' e !laUExtszUaoCpZoyEq:localhost:8800m.room.create$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q8oQ']ee !coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ nQ']e !coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQpmQ? e !coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibility$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUhlQ/ e !coGyOAgYnlBZAqznax:localhost:8800m.room.join_rules$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAjkQ3 e !coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 a} { y w u sqomkigeca~GeeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~FeeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800~EeeQ$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800~DeeQ$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~CeeQ$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~BeeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800~AeeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~@eeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~?eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~>eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800~=eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~<eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~;eeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~:eeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~9eeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~8eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~7eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~6eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~5eeQ$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~4eeQ$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~3eeQ$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~2eeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800~1eeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~0eeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800~/eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~.eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800~-eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~,eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800~+eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~*eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~)eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800 J JMeQc%$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800{"outlier": false, "stream_ordering": 2707}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "aLRqAfcoC0iR63Mx98hijFT+m6/65ptxFMU8jY1lY0E"}, "origin": "localhost:8829", "origin_server_ts": 1570042873559, "prev_events": ["$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE"], "prev_state": [], "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-502:localhost:8829", "state_key": "@anon-20191002_181700-502:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AJxNLhk/XigA7jUatMF8hdXpOphheJYtdwHLm/rSiJZqtWGl9F7l19IM3u8fG4vtJzQZ4yLHbpWkekjsJhYKCg"}, "localhost:8829": {"ed25519:a_UxIG": "HBrMhm9WAeCFr/dWp5HBYwQkdow5nPS9TCkVbsdyCquzGEXjDjawkcqcE+uyOInjRRJc3vlx7DLXNQ1XoOfdBw"}}, "unsigned": {"age": 96, "replaces_state": "$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ"}}HeQa$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2706}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ"], "type": "m.room.test", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042873102, "hashes": {"sha256": "nphwcEBl/Cav5J6RxQUM/T1a5lsjopyZOJz9FDRvlSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EN5xv+IabZ4NtKcl+ZTyvdAWmMT8YdEf9edjL7BSlNZkts910S6qc0rpCCPdeZ463vbhKUkviAtfZFvCXTkCBg"}}, "unsigned": {"age_ts": 1570042873102}}eQa7$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2705}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU"], "type": "m.room.member", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-502", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-502:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042872354, "hashes": {"sha256": "bOtlK1VvOKIrv1YOMuep5vFxhZ+6qiGZ3DA2ash6Y1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FjjatHI7lul1S4sODExrs9WWn61LMk5fwu9Iq1hy9K2feDUk4H9Y/Vp2fZ/2f3ZOPD9zd8tGpsr88Uy0EUl+BQ"}, "localhost:8829": {"ed25519:a_UxIG": "CswnaQ0NDyY/bY+YETFnYAFdy+WALTzSfiapw+QanboOf9yP7M0cVsdoSHz9ZiO9OhMBUa3E8FQqWY/ngiG2Aw"}}, "unsigned": {"age_ts": 1570042872354, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-501:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-501:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-501", "avatar_url": null}, "sender": "@anon-20191002_181700-501:localhost:8800"}]}} !rq | 4  ! & JUz)49]bmri_Q3 e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg ^Q']e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAc]Q' e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI \Q']e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM [Q']e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMiZQ3 e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_access$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkoYQ? e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibility$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIgXQ/ e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rules$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YiWQ3 e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE VQ']e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUcUQ' e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.create$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 TQ']e!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQrSQ))e!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4oRQ? e!mogJVPxghalmKbblUq:localhost:8800m.room.history_visibility$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYgQQ/ e!mogJVPxghalmKbblUq:localhost:8800m.room.join_rules$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPolPQ9 e!mogJVPxghalmKbblUq:localhost:8800m.room.canonical_alias$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYiOQ3 e!mogJVPxghalmKbblUq:localhost:8800m.room.power_levels$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 NQ']e!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4cMQ' e!mogJVPxghalmKbblUq:localhost:8800m.room.create$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYoLQ? e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIgKQ/ e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rules$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMiJQ3 e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 IQ']e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4cHQ' e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ GQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 FQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$SgLGdr23vUTR_MVNRKilawNMw4EQA3_jqoAaPydR1P8 EQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YoDQ? e!laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibility$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEgCQ/ e!laUExtszUaoCpZoyEq:localhost:8800m.room.join_rules$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QiBQ3 e!laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk AQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4c@Q' e!laUExtszUaoCpZoyEq:localhost:8800m.room.create$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q ?Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk DYp> c1D V} K |S! P  '  % > 8  8  ]pj  + v] + v DYp> j21e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k"1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 "1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwo1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8 1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI >1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgk1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM 1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjor0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcn0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4=1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM^1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0K1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0j11e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko31e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE !1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk }1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 i1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw 1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukj1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C2001e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sO1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4i0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk<1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE 11e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg  J21e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 !1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o 21e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx01e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo T1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ Sd1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE A1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw (1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU t1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 s1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g U1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 2   *t eQau$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2711}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk"], "type": "m.room.join_rules", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042877319, "hashes": {"sha256": "0O42x2oDl6mhX9RR2bjRqPzreXx/Ls+YZgHiTKAEOcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RoxAvnpznmD33Ka8Lj3PAfIb/K55bDg3LNeZhsxR1N7Gv7YITl9xc5ZwHCGBS1/zEVvhSFmCQkFKFZm47ovnBg"}}, "unsigned": {"age_ts": 1570042877319}}k eQac$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2710}{"auth_events": ["$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "type": "m.room.power_levels", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"users": {"@anon-20191002_181700-503:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042876638, "hashes": {"sha256": "+4uLFpVswArwyv0KHNs8rRsHII/51BKytTqe+cw30v8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mvo/Qwrw25qcyPap61rw/LVXmXPb7aVMcQ/N0LMhkcD5McQ1flWa77SQcmfWP9NJD+qAs2C2VX3YhpMDbgM5Bw"}}, "unsigned": {"age_ts": 1570042876638}}v eQay$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2709}{"auth_events": ["$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q"], "prev_events": ["$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q"], "type": "m.room.member", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-503", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-503:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042876001, "hashes": {"sha256": "Z70g3T1DMbldptYuduF8BslMBszz+Ma6/TO28W/U0VI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vNAFJbujBJxrM0MlilGNp29iT6d+U7SFk677VdgHPHz7IGxfo/EsIL1prbYDOyxrbgWHY74dkbFnFRbtsE22AQ"}}, "unsigned": {"age_ts": 1570042876001}}i eQa_$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2708}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-503:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042875084, "hashes": {"sha256": "wFu/Rork/8gqJIEtQqf1zho38Fi5/BNZyhPXWMTLiPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ypESNoTs//Ty1Cw9zQWjV4+9o0zncK6rrLUuG+laYkh94WwEHcwgijMRUZdR7Houhty3NElaLlBnpXtWB2mtBQ"}}, "unsigned": {"age_ts": 1570042875084}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1De$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM781Ce$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm81Be$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk1Ae$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o1@e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK81?e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ1>e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s1=e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE1<e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC81;e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi81:e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI19e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg18e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms17e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y416e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk15e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf414e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U13e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg12e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM411e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y410e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1/e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU1.e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ1-e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ1,e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1+e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41*e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ1)e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY1(e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg1'e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1&e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM1%e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1$e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1#e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1"e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1!e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1 e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN01e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ601e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF01e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1 e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81 e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct41 e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY1 e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI1 e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo41e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr01e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1~e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1}e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1|e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk1{e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId41ze$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q  4 h 6ma[a@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3Cg127.0.0.1+d]c@anon-20191002_181700-531:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88Ao127.0.0.1a[a@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGNyI2RHZVdfPXgxMmRPSAowMDJmc2lnbmF0dXJlICdrO5YfR0rOG-1uCgLG91mgocOY6hRHDoyFxBBlT9VDCg127.0.0.1*d]c@anon-20191002_181700-539:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQo127.0.0.1d]c@anon-20191002_181700-538:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAo127.0.0.1d]c@anon-20191002_181700-537:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAo127.0.0.1d]c@anon-20191002_181700-536:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG44ZXZhVmlpTmw4RXZVcDkKMDAyZnNpZ25hdHVyZSCJxE2NCLxCR97piOWjvXRyqFAiHMKXYXO9_HBtg3UnTQo127.0.0.1d]c@anon-20191002_181700-535:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQo127.0.0.1d]c@anon-20191002_181700-534:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgo127.0.0.1d]c@anon-20191002_181700-533:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAo127.0.0.1d]c@anon-20191002_181700-532:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwo127.0.0.1  }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    t h \ P D 8 ,   x l ` T H < 0 $  |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pd m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m} m| m{ mz my mx mw mv mu mt ms mr mq mp mo mn mm ml mk mj mi mh mg mf me md mc mb ma m` m_ m^ m] m\ m[ mZ mY mX mW mV mU mT mS mR mQ mP mO mN mM mL mK mJ mI mH mG mF mE mD mC mB mA m@ m? m> m= m< m; m: m9 m8 m7 m6 m5 m4 m3 m2 m1 m0 m/ m. m- m, m+ m* m) m( m' m& m% m$ m# m" m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m  m P (|pdXL@4(th\   th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4PD8,  x l ` T H < 0 $  m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m} m| m{ mz my mx mw mv mu mt ms mr mq mp mo mn mm ml mk mj mi mh mg mf me md mc mb ma m` m_ m^ m] m\ m[ mZ mY mX mW mV mU mT mS mR mQ mP mO mN mM mL mK mJ mI mH mG mF mE mD mC mB mA m@ m? m> m= m< m; m: m9 m8 m7 m6 m5 m4 m3 m2 m1 m0 m/ m th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th m m m m m m m m m m m m m m m m m m. m- m, m+ m* m) m( m' m& m% m$ m# m" m! m m m m m m m m m m m m m m m m m m m m m JB\*|J |P V$b i \7 V  p $>>0  P p     v *D J V$*21e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos<1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsZ1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A "1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A !1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ b1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 41e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 ~1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcM1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ*0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwN1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v80e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk m1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk x1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg 1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow \1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUR1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM #1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 A1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo 21e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc ~1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcp1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g21e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMd  w^HeQa$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2714}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y"], "type": "m.room.test", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042879995, "hashes": {"sha256": "Nndcepndn03bVMydNDFINttvq67F52p1RQg48L2jZWc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V7I/p/aucZS1ejZ2eFsVP7R1SEN/Y/jLx+gXCc378/ko1UJSw6GwOUYrg4DYcafGKz6bAwqLxUNg/NhxyiVtBw"}}, "unsigned": {"age_ts": 1570042879995}}eQa7$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2713}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE"], "type": "m.room.member", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-504", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-504:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042879273, "hashes": {"sha256": "Xg4CYdap8kR/hyC/uwyELCHbon/HPXTL/YLJoKDS0P0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vTAa94lb3WJr84nfSzr9pCOx0wI90dvWwshTp1hlU18aPGKeE/3DYumWuCvdRmXQm0spgo7PxljgXR0pX34Aw"}, "localhost:8829": {"ed25519:a_UxIG": "IDBNZMIQIoqNxls8pW1/HS++0irGsnDewmX4XfvfASAa/PyGWWy3OfNh7okzuBH1H4F6x9aOjJu4XuXCowqgDQ"}}, "unsigned": {"age_ts": 1570042879273, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-503:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-503:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-503", "avatar_url": null}, "sender": "@anon-20191002_181700-503:localhost:8800"}]}} eQa$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2712}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q"], "type": "m.room.history_visibility", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042878036, "hashes": {"sha256": "77B4pB8lAHV7HMI9MC8GbFsdfpCpki389ACMdYHjmCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FDchsPvw45bkeyk45gB6SHyEObWdm/9mNTsREpqF4mdbeSV3Ux0I2WdqBL+U99IAJjGyE3MR131cyM0BMq/7CQ"}}, "unsigned": {"age_ts": 1570042878036}} @xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ | { z y x w } v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X  W ~ V } U | T { S z R y Q x P w O v N u M t L s K ;  :  9  8  7  6  5  4  3  2  1  0  /  -  ,  +  *  )  (  '  %  $  #  "  !                                                                                                                                                           ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L r J q I p H o G n F m E l D k C j B i A h @ g ? f > d = c < b ; a : ` 9 _ 8 ^ 7 ] 6 \ 5 [ 4 Z 3 Y 2 X 1 W 0 V / U . T - S , R + Q * P ) O ( N ' L & J % I $ G # F " E ! D  C  B  A  @  ?  >  =  <  K J I H G F E D C B A @ ? > = < ; : 9 8 7 6~ 5} 4| 3{ 2{ 1{ 0y /y .x -w ,v +u *t )s (q 'q &p %o $n #m "l !k k k k k k k k k k k k k j i h g f e e c b b a ` _ ^ ] \ \ Z Z Y X W V U T S S R Q Q P O N M L K K J J I H G F E D C ; H(;ieQa_$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2718}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-505:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042883927, "hashes": {"sha256": "HwNEHo3ETDD+GFQFNVwmqUf6MxiDgRL6Z2kHfsh/b+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Bfc8czsooM5PEhzGQev51bVrmakP77gLzPrxgnOHaGRfvDbDAgU+JyzscpKKMyC405X3sbI6JhEK5uJKQ6eCw"}}, "unsigned": {"age_ts": 1570042883927}}&eQ$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts!laUExtszUaoCpZoyEq:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 2717}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8"], "content": {}, "depth": 10, "hashes": {"sha256": "WdCF4CF04BM2XxmRhexf/v6NBvnz//rS6r/uCj248Ww"}, "origin": "localhost:8829", "origin_server_ts": 1570042881393, "prev_events": ["$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0"], "prev_state": [], "redacts": "$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-504:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "25oqrVR/lxWZtooinHKNbSrpu4lVbEQN32sjZIC8c+tG/cd/ULPmjdXsQnsdgixlbLLdU25P57OoPqEUteSVAQ"}}, "unsigned": {"age_ts": 1570042881393}}&LeQc#$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0!laUExtszUaoCpZoyEq:localhost:8800{"outlier": false, "stream_ordering": 2716}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8"], "content": {}, "depth": 9, "hashes": {"sha256": "XWAleDRNVmz/FYizWijeaMmgCDVNxRdp56An+dTOh6M"}, "origin": "localhost:8829", "origin_server_ts": 1570042881374, "prev_events": ["$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8"], "prev_state": [], "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-504:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "wKnugZlyJ1GiILHcANW5kpPrDqoobl41CLEVy7LFhSdoE6849RhK7k/9GkTh3Yv5vyXSfOwLCPz0sCKtW7hQBQ"}}, "unsigned": {"age_ts": 1570042881374}}4eQ1#$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8!laUExtszUaoCpZoyEq:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2715}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-504", "membership": "join"}, "depth": 8, "hashes": {"sha256": "SyyKs/AmbOwRf9CnufwaKXkQkXBS9ou4IqP7TDDcLw0"}, "origin": "localhost:8829", "origin_server_ts": 1570042880698, "prev_events": ["$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM"], "prev_state": [], "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-504:localhost:8829", "state_key": "@anon-20191002_181700-504:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fbp+i7ZkCTndSiyP0wOfP8904y9c3qEPWk/3WGIBZ0DtoSBluSEV9qlKG1/40HKKcjt0JIe+haNIBwJRLhRxCA"}, "localhost:8829": {"ed25519:a_UxIG": "pdUZvbHT1Mj43jXNNmfXi0RD5YkuaCNtQUr+kcGtMHFgAMYFQgqBMPhtsMQBpqPynTog9VJmRsJSuPYiTKsdCw"}}, "unsigned": {"age": 125, "replaces_state": "$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y"}} IqFoDmBi>k@T)}R' { P % y N # w L ! u J  s H mBsHqFoD*Q!wIhMbfQzYbJobPdwyi:localhost:8800~*Q!wIhMbfQzYbJobPdwyi:localhost:8800*Q!wCsDjKBtuUbrmZgjsB:localhost:8800>0*Q!wCsDjKBtuUbrmZgjsB:localhost:8800=/*Q!wCsDjKBtuUbrmZgjsB:localhost:8800<.*Q!wCsDjKBtuUbrmZgjsB:localhost:8800;-*Q!wCsDjKBtuUbrmZgjsB:localhost:8800:,*Q!wIhMbfQzYbJobPdwyi:localhost:8800}*Q!wIhMbfQzYbJobPdwyi:localhost:8800|~*Q!wIhMbfQzYbJobPdwyi:localhost:8800{}*Q!wIhMbfQzYbJobPdwyi:localhost:8800z|*Q!wBkUBAjOznOyxrLchl:localhost:8800 5*Q!wBkUBAjOznOyxrLchl:localhost:8800 4*Q!wBkUBAjOznOyxrLchl:localhost:8800 3*Q!wBkUBAjOznOyxrLchl:localhost:8800 2*Q!wBkUBAjOznOyxrLchl:localhost:8800 1*Q!wBkUBAjOznOyxrLchl:localhost:8800 0*Q!wBkUBAjOznOyxrLchl:localhost:8800 /*Q!wBkUBAjOznOyxrLchl:localhost:8800 .*Q!wBkUBAjOznOyxrLchl:localhost:8800 -*Q!wBkUBAjOznOyxrLchl:localhost:8800 ,*Q!wBBQYEPjQGnoAzDpEu:localhost:8800  !*Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wAyboOFgsOPwkmgMAI:localhost:8800?C*Q!wAyboOFgsOPwkmgMAI:localhost:8800>B*Q!wAyboOFgsOPwkmgMAI:localhost:8800=A*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!whuymJoLfUdkFdxoyE:localhost:8800 8 t*Q!whuymJoLfUdkFdxoyE:localhost:8800 7 s*Q!whuymJoLfUdkFdxoyE:localhost:8800 6 r*Q!whuymJoLfUdkFdxoyE:localhost:8800 5 q*Q!whuymJoLfUdkFdxoyE:localhost:8800 4 p*Q!whuymJoLfUdkFdxoyE:localhost:8800 3 o*Q!whuymJoLfUdkFdxoyE:localhost:8800 2 n*Q!whuymJoLfUdkFdxoyE:localhost:8800 1 m*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wLitJYvgvNJzanSIvO:localhost:8800bh*Q!wLitJYvgvNJzanSIvO:localhost:8800ag*Q!wLitJYvgvNJzanSIvO:localhost:8800]c*Q!wLitJYvgvNJzanSIvO:localhost:8800^d*Q!wLitJYvgvNJzanSIvO:localhost:8800`f*Q!wLitJYvgvNJzanSIvO:localhost:8800_e WcqFoe:DmBk@i>g<T)}R' { P % y s H c N # w L ! u J  V *Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v v*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u u*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t t*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s s*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 r r*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!rwUuVBrftGHDBOlEZm:localhost:8800NN*Q!rwUuVBrftGHDBOlEZm:localhost:8800MM*Q!rwUuVBrftGHDBOlEZm:localhost:8800LL*Q!rwUuVBrftGHDBOlEZm:localhost:8800KK*Q!rwUuVBrftGHDBOlEZm:localhost:8800JJ*Q!rwUuVBrftGHDBOlEZm:localhost:8800II*Q!rwUuVBrftGHDBOlEZm:localhost:8800HH*Q!rwUuVBrftGHDBOlEZm:localhost:8800GG*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { {*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z z*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y y*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x x*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w w j(&?^:!: S x / N g  =VonYx)<IjjL ] @anon-20191002_181700-533:localhost:8800offlinemګJm0\mګNFF ]I@anon-20191002_181700-484:localhost:8800offlinemmsFB ]C@anon-20191002_181700-493:localhost:8800offlinemxEmxEF@ ]A@anon-20191002_181700-491:localhost:8800offlinemTfmTfF> ]?@anon-20191002_181700-481:localhost:8829offlinem׈mIF< ]=@anon-20191002_181700-483:localhost:8829offlinem׫tm"F; ]<@anon-20191002_181700-489:localhost:8829offlinem'mL9 ] :@anon-20191002_181700-479:localhost:8800offlinemimmj!L7 ] 8@anon-20191002_181700-477:localhost:8800offlinemHmtmI-F6 ]7@anon-20191002_181700-482:localhost:8800offlinemׯ3mׯ3L5 ] 6@anon-20191002_181700-475:localhost:8800offlinem)m׭m(F1 ]6@anon-20191002_181700-469:localhost:8800offlinemհmĞL ] @anon-20191002_181700-531:localhost:8800offlinemڑm LmڑF} ]~@anon-20191002_181700-522:localhost:8829offlinem=mOL| ] }@anon-20191002_181700-520:localhost:8800offlinemdRm<meL{ ] }@anon-20191002_181700-521:localhost:8800offlinem@m<meLx ] y@anon-20191002_181700-518:localhost:8800offlinem9mڻ,m;Fr ]v@anon-20191002_181700-514:localhost:8800offlinem0mFm ]n@anon-20191002_181700-513:localhost:8829offlinemmEFj ]k@anon-20191002_181700-519:localhost:8829offlinem8Jm:Fh ]i@anon-20191002_181700-511:localhost:8829offlinem٫m2TLg ] h@anon-20191002_181700-509:localhost:8800offlinemيpmmيLf ] g@anon-20191002_181700-507:localhost:8800offlinemd mmdnFd ]e@anon-20191002_181700-512:localhost:8800offlinemѓmѓLc ] d@anon-20191002_181700-503:localhost:8800offlinem*amm-2Lb ] d@anon-20191002_181700-505:localhost:8800offlinemCJmmBGF` ]a@anon-20191002_181700-510:localhost:8800offlinemٯmٯF^ ]_@anon-20191002_181700-498:localhost:8829offlinemؼ.mٕF] ]^@anon-20191002_181700-508:localhost:8800offlinemًmًFZ ]\@anon-20191002_181700-499:localhost:8800offlinemm1FW ]X@anon-20191002_181700-496:localhost:8829offlinemؗ'moFV ]W@anon-20191002_181700-506:localhost:8800offlineme<me ? v E  w }9Q K  Rq *   X &  _ -e3]W%}1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 M1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 #1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcP1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs @1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE :1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcx1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74v1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0I1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM81e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE 11e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo "1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk 21e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM .1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw W1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk ~1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI R1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIn1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A51e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo \1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUt1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcA1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc]1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4w1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU>1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w01e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsj1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY}1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cH1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA[1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk31e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7830e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4>1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg  eQa$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2722}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM"], "type": "m.room.history_visibility", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042886871, "hashes": {"sha256": "Ac2QBnt5zA/JYBNHecF0DHRAhjzY2HLlM1O0UxSE3GU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7BX3IW8e0yGWve8sctRP/dQFyy6l3/ABeQEl9zpznsPhxOc5cBZg7hqby6sOhVw2WdDrJWzTzXpUqE+AqF6kAQ"}}, "unsigned": {"age_ts": 1570042886871}}teQau$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2721}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4"], "type": "m.room.join_rules", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042886212, "hashes": {"sha256": "k8VZ+JhKaIAUNKRRr62P3oRRVN1YaR7lHpPzhHqSqCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8GZVEOE8+uw8sdFynHrbeyiDUNDZM7iw46/tePcl0x0iV6iezdHeBVHz7HduHMvyBfEVsfXhxqTyrSBPZf9WCg"}}, "unsigned": {"age_ts": 1570042886212}}keQac$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2720}{"auth_events": ["$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "type": "m.room.power_levels", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"users": {"@anon-20191002_181700-505:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042885355, "hashes": {"sha256": "d+DAbnHMfi5X6M1wOha5IhFmhXsmR+Wleq6YgEbj2YQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kWPcpA+Ryp37mByqa/ZzVH5uO/JAkjONue1H7a4KfqpKbKiPfICMLm7DGJpdR+ddqFVTSkXMil/7fZZqQLAXCA"}}, "unsigned": {"age_ts": 1570042885355}}veQay$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2719}{"auth_events": ["$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ"], "prev_events": ["$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ"], "type": "m.room.member", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-505", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-505:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042884739, "hashes": {"sha256": "V5YnqxgW3546JUE7g2wH7bNLjskKr542HRtFNefft2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8TuwZs97vzP2tXQhtRAutlboJ4Zn81Z5hm9V4dUfjDLKJDEqLq3IIoggtqvZ7nU0HStDV0gDRN8J2tiy755ABQ"}}, "unsigned": {"age_ts": 1570042884739}} LMj8E kp> ? v E  w }9Q K  Rq *   X &  _ -e3]W%}1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 K1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 #1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcP1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs @1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE :1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcx1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74v1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0I1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM81e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE 11e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo "1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk 21e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM .1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw W1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk ~1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI R1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIh1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A/1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo \1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUt1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcA1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc]1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4w1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU>1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w01e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsj1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY}1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cH1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA[1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk31e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7830e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4>1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg a} { y w u sqomkigeca~feeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~eeeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~deeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~ceeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~beeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~aeeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~`eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~_eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~^eeQ$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~]eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800~\eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~[eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~ZeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~YeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~XeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~WeeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~VeeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~UeeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~TeeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~SeeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~ReeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~QeeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~PeeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~OeeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~NeeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~MeeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~LeeQ$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~KeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800~JeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~IeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800~HeeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800 _B181700201910023256789301236789401234567895012345 678 9601 2357897013456789801234567899012345789400134578911234567892012456789301234567894012345678950123468960123456789713456789801234689901  /BveQay$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2726}{"auth_events": ["$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY"], "prev_events": ["$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY"], "type": "m.room.member", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-506", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-506:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042891292, "hashes": {"sha256": "W07ywRZxPYtMvcJ2MoOiS9O8PS36BiCY7hY/npNfiIQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d1dCq+USht9NJ03z5p2DUCyfCJpytlpZZNwjxyu2B9LQ3vFfK4/dH+ua7syxjQPKj7GRFae0qHasQzVjiD5UAA"}}, "unsigned": {"age_ts": 1570042891292}}ieQa_$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2725}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-506:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042890518, "hashes": {"sha256": "QqPCS9+IkPH/AfulnJTr0mnQQS4Qru6Evex5SU2xegU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g+voDxfmeHuPkNhuZ+4SNbEp/l8fW6LEHY0NnVfVbr4jDx99aahWfpTmNHpj+jsfdIFsCx8kdGRBAa151JzDBw"}}, "unsigned": {"age_ts": 1570042890518}}eQk$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "txn_id": "516", "stream_ordering": 2724}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk"], "type": "m.room.message", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042888804, "hashes": {"sha256": "cS5CBfwtfve6dsJZ51zZVC7mDAoGLc3Iz+kjIoBIxtE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BGK21GjsGIsYzxf4/LwpfmGvP1Ii0QHHpFj4IHdp6N1xGo+R8319vXh9n52BwZ1YsUz3H6uNGwIXbsbFdSMMDg"}}, "unsigned": {"age_ts": 1570042888804}}HeQa$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2723}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI"], "type": "m.room.test", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042888186, "hashes": {"sha256": "tNLSXksLYmA5+bhjK5IYcEqjiBzV/l0Yix16vefpM2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "viT72vCX+g6puamjPIuRB+wF0ch1ACtsrL/+dcmcJCiP/3wXpfin6phA7TFf0aZLAFQI1AhNv87uR+kIQqMrCA"}}, "unsigned": {"age_ts": 1570042888186}} ~z v r n j fb^ZVRNJFHeeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800GeeQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800FeeQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800EeeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM!vBvlJEXUSQKUYmsKcO:localhost:8800DeeQ$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800CeeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800BeeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800AeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800@eeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800?eeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800>eeQ$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800=eeQ$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800<eeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800;eeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0!RDEAXrqXQizuhCUFPq:localhost:8800:eeQ$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:88009eeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:88008eeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:88007eeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:88006eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:88005eeQ$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:88004eeQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:88003eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU!mogJVPxghalmKbblUq:localhost:88002eeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:88001eeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:88000eeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800/eeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800.eeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800-eeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800,eeQ$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800+eeQ$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk!EhUxBjnSkVXpTrQlrn:localhost:8800 %b< K O S W  [ _ cgkosw#{'QFeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0!vRmMcoJDeCupADwqac:localhost:8800QEeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0!fGkUEndqGrieltwbCh:localhost:8800QDeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ!atnRTMliktaVUhMVID:localhost:8800QCeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800QBeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800QAeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800Q@eQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800Q?eQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw!sHRHoXzYrrPSlWBkoh:localhost:8800Q>eQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800Q=eQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8!IlGJpjzrvvAFuwTAgo:localhost:8800Q<eQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800Q;eQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800Q:eQ$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw!RDEAXrqXQizuhCUFPq:localhost:8800Q8eQ$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI!EhUxBjnSkVXpTrQlrn:localhost:8800Q7eQ$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts!laUExtszUaoCpZoyEq:localhost:8800Q6eQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800Q5eQ$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc!ubmTdQFAhrhZkGULDx:localhost:8800Q4eQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800Q3eQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800Q2eQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800Q1eQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800Q0eQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800Q/eQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow!mvgUHEsfGqDkPQUvfG:localhost:8800Q.eQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800Q-eQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800Q,eQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800Q+eQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE!DqxFmsXPclgGqpSwdy:localhost:8800Q*eQ$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8!uqIEMXzdeNeXdJmuwh:localhost:8800Q)eQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800Q(eQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800F'OQ$157004274411xArrT:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800E&MQ$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800G%QQ$1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800G$QQ$1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800G#QQ$1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800G"QQ$1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800Q9eQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800 -RM H C > 9 4/*|%w rmhc TkQe!AoAvmnwMkhYBQsbCsL:localhost:8800$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xoTjQe!AoAvmnwMkhYBQsbCsL:localhost:8800$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUTiQe!AoAvmnwMkhYBQsbCsL:localhost:8800$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0ThQe!AoAvmnwMkhYBQsbCsL:localhost:8800$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GETgQe!AoAvmnwMkhYBQsbCsL:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6OkTfQe!AoAvmnwMkhYBQsbCsL:localhost:8800$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78TeQe!IlGJpjzrvvAFuwTAgo:localhost:8800$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsTdQe!IlGJpjzrvvAFuwTAgo:localhost:8800$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4TcQe!IlGJpjzrvvAFuwTAgo:localhost:8800$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkTbQe!IlGJpjzrvvAFuwTAgo:localhost:8800$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4TaQe!IlGJpjzrvvAFuwTAgo:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UT`Qe!IlGJpjzrvvAFuwTAgo:localhost:8800$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egT_Qe!CSqENqzAezaZnGktbE:localhost:8800$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4T^Qe!CSqENqzAezaZnGktbE:localhost:8800$WcM05q61ueoe6-KGOkZUeCT9AlN5J7qHlb_FIdV-YckT]Qe!CSqENqzAezaZnGktbE:localhost:8800$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcET\Qe!CSqENqzAezaZnGktbE:localhost:8800$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQT[Qe!CSqENqzAezaZnGktbE:localhost:8800$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQTZQe!CSqENqzAezaZnGktbE:localhost:8800$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxITYQe!CSqENqzAezaZnGktbE:localhost:8800$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4TXQe!CSqENqzAezaZnGktbE:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQTWQe!CSqENqzAezaZnGktbE:localhost:8800$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYTVQe!vBvlJEXUSQKUYmsKcO:localhost:8800$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawTUQe!vBvlJEXUSQKUYmsKcO:localhost:8800$t0b1uVlPml5Vvn7BgxZ_fxtiVr35CBTcPI_xA5OVbUUTTQe!vBvlJEXUSQKUYmsKcO:localhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkTSQe!vBvlJEXUSQKUYmsKcO:localhost:8800$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhoTRQe!vBvlJEXUSQKUYmsKcO:localhost:8800$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGITQQe!vBvlJEXUSQKUYmsKcO:localhost:8800$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1KkTPQe!vBvlJEXUSQKUYmsKcO:localhost:8800$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgTOQe!vBvlJEXUSQKUYmsKcO:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZATNQe!vBvlJEXUSQKUYmsKcO:localhost:8800$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpITMQe!RDEAXrqXQizuhCUFPq:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMTLQe!RDEAXrqXQizuhCUFPq:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMTKQe!RDEAXrqXQizuhCUFPq:localhost:8800$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkTJQe!RDEAXrqXQizuhCUFPq:localhost:8800$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJITIQe!RDEAXrqXQizuhCUFPq:localhost:8800$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YTHQe!RDEAXrqXQizuhCUFPq:localhost:8800$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwETGQe!RDEAXrqXQizuhCUFPq:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUTFQe!RDEAXrqXQizuhCUFPq:localhost:8800$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60TEQe!mogJVPxghalmKbblUq:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQTDQe!mogJVPxghalmKbblUq:localhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4TCQe!mogJVPxghalmKbblUq:localhost:8800$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYTBQe!mogJVPxghalmKbblUq:localhost:8800$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPoTAQe!mogJVPxghalmKbblUq:localhost:8800$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYT@Qe!mogJVPxghalmKbblUq:localhost:8800$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8T?Qe!mogJVPxghalmKbblUq:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 9r  T 6ofHCg e]]Q=$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA@anon-20191002_181700-522:localhost:8829@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800joinanon-20191002_181700-522Cf e]]Q=$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA@anon-20191002_181700-520:localhost:8800@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800joinanon-20191002_181700-520Ce e]]Q=$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg@anon-20191002_181700-519:localhost:8829@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800joinanon-20191002_181700-519Ed e]]Q=$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY@anon-20191002_181700-519:localhost:8829@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800inviteanon-20191002_181700-519Cc e]]Q=$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E@anon-20191002_181700-518:localhost:8800@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800joinanon-20191002_181700-518,b e]]Q$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI@anon-20191002_181700-517:localhost:8829@anon-20191002_181700-517:localhost:8829!AoAvmnwMkhYBQsbCsL:localhost:8800leaveEa e]]Q=$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo@anon-20191002_181700-517:localhost:8829@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800inviteanon-20191002_181700-517C` e]]Q=$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok@anon-20191002_181700-516:localhost:8800@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800joinanon-20191002_181700-516E_ e]]Q=$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms@anon-20191002_181700-515:localhost:8829@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800inviteanon-20191002_181700-515C^ e]]Q=$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U@anon-20191002_181700-514:localhost:8800@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800joinanon-20191002_181700-514C] e]]Q=$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4@anon-20191002_181700-513:localhost:8829@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800joinanon-20191002_181700-513E\ e]]Q=$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE@anon-20191002_181700-513:localhost:8829@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800inviteanon-20191002_181700-513C[ e]]Q=$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800joinanon-20191002_181700-512CZ e]]Q=$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw@anon-20191002_181700-511:localhost:8829@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800joinanon-20191002_181700-511CY e]]Q=$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA@anon-20191002_181700-510:localhost:8800@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800joinanon-20191002_181700-510CX e]]Q=$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800joinanon-20191002_181700-509EW e]]Q=$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800inviteanon-20191002_181700-509CV e]]Q=$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800joinanon-20191002_181700-508CU e]]Q=$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ@anon-20191002_181700-507:localhost:8800@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800joinanon-20191002_181700-507CT e]]Q=$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4@anon-20191002_181700-506:localhost:8800@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800joinanon-20191002_181700-506 oC  o lPn5Q 5 Sq 6 U8 3R  R n  T    pO6 7 8e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQosha256 8e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQsha2568e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUsha256 8e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdissha2568e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEsha2568e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQsha256 H8e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4Usha2568e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQsha2568e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIksha256h8e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iAsha2568e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAsha256e8e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSssha2568e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lksha2568e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXossha2568e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4sha256 8e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQosha256R8e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wowsha256 A7e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEsha256!8e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcsha256&8e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yressha2568e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8sha2568e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgsha256o8e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsksha256 y8e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUsha2568e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4sha2568e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIsha2568e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAsha2568e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcsha2568e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0sha256"8e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Msha2568e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gsha2567e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwsha256[8e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMsha2568e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQsha2568e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpksha25688e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20sha256/8e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0sha256s8e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4sha256 8e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0sha2568e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMsha2568e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUsha256K8e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyosha256!8e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOssha2568e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5ksha256 8e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUsha256 8e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQksha256 8e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcsha256 8e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuksha256 8e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5Asha256 c8e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygsha256 L8e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgsha256 8e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLssha2568e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUsha2568e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMsha2568e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIsha256E8e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcsha256x8e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrssha256E8e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwsha256*8e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7issha2568e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIYsha2568e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Scsha25658e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00sha2568e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQsha256n8e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQsha256 8e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIsha256 8e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIsha256 98e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95REsha256  eQa$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2730}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo"], "type": "m.room.history_visibility", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042894137, "hashes": {"sha256": "ouNlWRRAl4JYj9VY39kkMy2WLTpH9Y6wlIR0fSAWU48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ss6ohW7+8VDPkzrKv/loaGNx8vfkVedRUfFw3KG8iAzsMWvCvaskJbfFoSpKe4TGC4xEQCAeuetWoQJL6r0qBw"}}, "unsigned": {"age_ts": 1570042894137}}teQau$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2729}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY"], "type": "m.room.join_rules", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042893452, "hashes": {"sha256": "ZWWuuWahhk0q4UGOhNSKRVUBpOZaQa+yMDG+pE+hmE8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "58z4N7KZpQ6ODJZfs4zq3G8fRqZsqh8bOLGFSfwcHi1Ysg49FJkTwWTN0zvKSNjbtle2UNoqsvUY41so/lenCQ"}}, "unsigned": {"age_ts": 1570042893452}} eQa!$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2728}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8"], "type": "m.room.canonical_alias", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"alias": "#__ANON__-23:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042892694, "hashes": {"sha256": "NnRMW3EqNA60Z5eWs1dSHkcBhEHP5Jzi4IDk9aCz+c0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6qthtAx/q1Z0S0l1KxMC/T7VLMGJV83T6QM0Wc/ClvckZF5beNcePuiSjELnWP4rHzJEFrlk67tCFWAAbel+AA"}}, "unsigned": {"age_ts": 1570042892694}}keQac$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2727}{"auth_events": ["$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "type": "m.room.power_levels", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"users": {"@anon-20191002_181700-506:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042891947, "hashes": {"sha256": "YBvppeOuh4DeDpAMC3Zq6BzH52n8ALkue1/2fYJ84xU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WSOf7vUGg1knEkRQTx/dHRpjPIRvq3/qi//UCtWSNZVbm2J2+oneoYgCU4x00e/gjzxZuR/PDJnEqgrGJbYNCg"}}, "unsigned": {"age_ts": 1570042891947}}   ++H S X 0;dQ ! }  'eQ']$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829joinp&eQ))$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800m%eQ? $VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibilitye$eQ/ $DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rulesj#eQ9 $So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_aliasg"eQ3 $0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels !eQ']$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800joina eQ' $IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create eQ']$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800joingeQ3 $VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800m.room.power_levels eQ']$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800joinaeQ' $d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800m.room.createmeQ? $VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility#eeQ/ $QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rulesgeQ3 $X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels eQ']$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800joingeQ3 $xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_accessmeQ? $Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibilityeeQ/ $q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rulesgeQ3 $T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels eQ']$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800joinaeQ' $kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800m.room.create eQ']$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800joinpeQ))$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800meQ? $KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800m.room.history_visibilityeeQ/ $1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800m.room.join_rulesjeQ9 $wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800m.room.canonical_alias  h B#eQm$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "txn_id": "517", "stream_ordering": 2734}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ"], "type": "m.room.message", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042897528, "hashes": {"sha256": "KpoWN6HR3QBc5ajxSL4yFHEWizn1wCO/KMmz7MKObu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mq0ZISJhmT3cNMrQnOgl7XyRd+CoSvLxPn0ArOJb3SZCbL0F+KAFwUaWE38mgiFp9rH10v5vTqY4Ce6glhAjAg"}}, "unsigned": {"age_ts": 1570042897528}}V"eQa9$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800{"token_id": 504, "stream_ordering": 2733}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo"], "prev_events": ["$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU"], "type": "m.room.member", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-507:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-507", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-507:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042896566, "hashes": {"sha256": "0U38VZzQPVfPA4g6e6aosZbN/wDTPjZ7texT0TyQppo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AR+QgNEj48n0y431c7GOD1GUYnrhKtv/r4Gbt4AZqxDbgr+cCrqgGB2owFDcsQGNSYVDKwL/V7KDi02DByoyAg"}}, "unsigned": {"age_ts": 1570042896566}}H!eQa$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2732}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4"], "type": "m.room.test", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042896085, "hashes": {"sha256": "YGG4MriU37eLoaK0e16I9O1wNATlBv979rVnkJjrdDM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KxaUL2dJKpXraFuHvUHlxiIzeDEWGHNU80k/pmSnmWbBhPRjIu7gs1j5AXo6KVJXN5nhyBagvKiyWaFM47uvCQ"}}, "unsigned": {"age_ts": 1570042896085}} eQa5$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2731}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY"], "type": "m.room.aliases", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"aliases": ["#__ANON__-23:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042895219, "hashes": {"sha256": "OSFcewK5lgJMkj2zLIVuSJ/kAz4FJcTEWzpAzEBPVAg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5odvZ9ADW+LoU3MPtKcuLdnwbGvlPns+1Mz2UJI/8ITxpRAAF3qYPNboavgXMPYEGwoej+FlH16nU9oBItNaBQ"}}, "unsigned": {"age_ts": 1570042895219}} ! = c I X 6ENv /2a&eQ' $v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create %eQ']$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829m$eQ? $IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibilitye#eQ/ $nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rulesg"eQ3 $7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels !eQ']$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800a eQ' $Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create eQ']$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829 eQ']$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829geQ3 $XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800m.room.guest_accessmeQ? $k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibilityeeQ/ $-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800m.room.join_rulesgeQ3 $LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels eQ']$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800aeQ' $CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800m.room.create eQ']$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829peQ))$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800meQ? $VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibilityeeQ/ $DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rulesjeQ9 $So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_aliasgeQ3 $0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels eQ']$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800aeQ' $IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create eQ']$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800 eQ']$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800g eQ3 $xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_accessm eQ? $Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibilitye eQ/ $q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rulesg eQ3 $T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels eQ']$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800aeQ' $kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800m.room.create eQ']$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800peQ))$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VLeL$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iEsha256az|-j,y{M5†$8!VKeL$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8sha2567KӕB;9=~z۵vf(v[0/VJeL$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8sha256PBpy=˞9嬕XSJx/VIeL$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cIsha256"T݄Y3%()X#sVHeL$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgsha256jXf n 01 JxVGeL$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmssha256~ gҌX d8?{}ZQQkVFeL$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4sha256!XON|c";lXX.9Iy+.VEeL$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMksha256~I6ڲ7A;դWVDeL$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4sha2560S_JEۜ$n^iVCeL$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4Usha2560)v<. v.~ljVBeL$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egsha256R+ s|SpPf틞J5&VAeL$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4sha256p<`7o2oX!ÈGV@eL$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4sha256oSȖpb&O|cBfo% 4ݎV?eL$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEsha2560(,.S"RJxVrCV'@V>eL$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUsha256m[mͶ`XКlߚ5hDٮV=eL$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQsha256\3+.,= fsQh =&,V<eL$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQsha256vúZ cJ0H+w|IJ.dV;eL$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIsha256]N'7Z= V:eL$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4sha256-~h59+ pWd҅3.V9eL$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQsha256iHGzϐ؎ڬ&[p]%]2õnV8eL$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYsha256 2C~sZqRN2 ނV7eL$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgsha256^f!`'Rt⳥xt_o?JGV6eL$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawsha256vj-t#TWXZAE>wޅV5eL$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMsha256z;JQAÓ^LM.FV4eL$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APksha256ing+;ÊtN>V3eL$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebhosha256U$J{%@N6o E&bЮnV2eL$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIsha256ǘvrSj8?l%ZGvXapNIT)v-#Г #V*eL$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0sha256yWmV1zIҪB(JJ2p9 V)eL$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbksha256\ D3zU\t`Qb4baBH[ XIV(eL$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIsha256*<}X7s}X\>wV'eL$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Ysha256(zV'lEZaMwV&eL$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwEsha256O8ŜKѼ;1BtN<{uhZ+V%eL$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUsha256{μm}.m[4J:n,FĕV$eL$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60sha256+.a zD;1! 6@^'V#eL$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0sha256%ާP۲U ݸj_Q6j}_ E-k#]V"eL$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQsha256L bU3kqE'( 9]5V!eL$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUsha256@iIU*+y=9~7 g * T~=ggz]!c@anon-20191002_181700-524:localhost:8800IVEUVINDHFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQogy]!c@anon-20191002_181700-523:localhost:8800CMSDWRWLLHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3Evblysawogx]!c@anon-20191002_181700-521:localhost:8800PMRXQYAAOVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywogw]!c@anon-20191002_181700-520:localhost:8800LGMWFFKPISMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwogv]!c@anon-20191002_181700-518:localhost:8800LJEXZWJDWNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQogu]!c@anon-20191002_181700-516:localhost:8800DBXNPICYFOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920wogt]!c@anon-20191002_181700-514:localhost:8800LBNXTFJTITMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9gogs]!c@anon-20191002_181700-512:localhost:8800XMPLTRSJHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAogr]!c@anon-20191002_181700-510:localhost:8800TMGCAARJXMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-Aogq]!c@anon-20191002_181700-509:localhost:8800RHTCHJDJOVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwogp]!c@anon-20191002_181700-508:localhost:8800IUNUZDZDEUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwo   *t'eQau$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2738}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE"], "type": "m.room.join_rules", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042901960, "hashes": {"sha256": "ANGO1/oLQA7cqC5UBxKkml8PGLt/O4JyQe3Llhnu3RU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jp4BsqO3wO2qDbYKxGSJAds7grNEzRhcpAoImiy6/4ItPX/Qhu0wvGBpe3IZAenQ68Yy/4BVKziSmDWb9ofADQ"}}, "unsigned": {"age_ts": 1570042901960}}k&eQac$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2737}{"auth_events": ["$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "type": "m.room.power_levels", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"users": {"@anon-20191002_181700-508:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042901146, "hashes": {"sha256": "LKQk/Q1bDTw357WtsM8WpaiIAlP7v43M1CzWidn/wvQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ezib779VoQUIphVUFxHStJUNxA+7DMCErlLBta2tIier3tc/cbJONDRBsm/BHI9uahoZnnsS9OLVYMEJNzKPAQ"}}, "unsigned": {"age_ts": 1570042901146}}v%eQay$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2736}{"auth_events": ["$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60"], "prev_events": ["$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60"], "type": "m.room.member", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-508", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-508:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042900108, "hashes": {"sha256": "HwTfSP4xyo6kzKWG02to4GLb5rVPWX4IVdgSgXKdIuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KmmkICcBdyLVgOs1CwMpv9JWlJAlWSc8FxAHbzPQKLbUUINv47kR8rgKmc0zwdHQW8XbJC9BMSfFswAlw08FBw"}}, "unsigned": {"age_ts": 1570042900108}}i$eQa_$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2735}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-508:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042899109, "hashes": {"sha256": "IUXScqKxdwgoziM2t8kGV3iJ5gzKu3DuQ+CSRt7Z+4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b5Fbf6SMEz79Ho1VwnCUvI80ysDRsvRJXUidBAz6f+DzRmbYVp0bl6RPKwKD40djwXoWFpamoQC9BcbCnJdkCg"}}, "unsigned": {"age_ts": 1570042899109}} M D  Qj>8 W %   ] + c1  i7p p> vE }KQW% }]+ K v Q1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo 81e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A r1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwz1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEu1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMI1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw .1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU N0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U z1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qs1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40>1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoe0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcC1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds *1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8>1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg61e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU(1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYo1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsU1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk =1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE_1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I%1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ G1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 11e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoq1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 '1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M>1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY /1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550l1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM  w+eQa7$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2742}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0"], "type": "m.room.member", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-509", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-509:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042905358, "hashes": {"sha256": "gk7U4ThxfXTZWNrOgjtODNlBvFUvv7az7Gm0udpepss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jHEW1q+zHVnChvaGpddpSzs+wSt/rBOXyrDzAAvsy7M6FRv9uzIgguteRfAVP8n63e9fdrVgF4FzNsY4zkhyCQ"}}, "unsigned": {"age_ts": 1570042905358, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-508:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-508:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-508", "avatar_url": null}, "sender": "@anon-20191002_181700-508:localhost:8800"}]}}H*eQa$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2741}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk"], "type": "m.room.test", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042904629, "hashes": {"sha256": "uQLiX0hPkDV23wGcWCIzmtBKo8vlZxVAsPgTxAsXGmA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yQAKe/UURSv4acjPMjNEQUh2/OgjYQ5y0hSlpIOmbGYBqAUUwArl4uK3Y08lo/LxeIruB4lCQvU48yJPQ/CQBg"}}, "unsigned": {"age_ts": 1570042904629}}{)eQa$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2740}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI"], "type": "m.room.guest_access", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042903594, "hashes": {"sha256": "9AHDSwUkxviaOa/evfP8q7KCunPP6Q7Fn8dRQV+9q40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EGnL1OSW7mva0oze1KRmxgBdjzKgqrDIrWK59PGuisOHQb0QXexAF3d+2ZOznyedFVbx9csL5DnRgR7w7byaAA"}}, "unsigned": {"age_ts": 1570042903594}}(eQa$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2739}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y"], "type": "m.room.history_visibility", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042902868, "hashes": {"sha256": "0MPZBRUQoM92fYCu1E0Nk6GC5vud5EU7YqprcPP4MQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AML9Xzn1bwqbitf99gag5Jy183DYIsKHzO02016M9cCuvuujaj86t8d96aAamkzhA4P6Gjys2iu70dww2t6VBQ"}}, "unsigned": {"age_ts": 1570042902868}} H \ *b0 h6n< t V $BzH P  j8 Z(T"N v D  | J  z-z-1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu81e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs421e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAE1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8C1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8B 21e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y $1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y #1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y "1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s x1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s w1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kR1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kQ1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kP1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kO1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY 1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI 1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI 1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI 1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI>21e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk 1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Id1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Ic1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Ibd1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAJ1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAI1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUD1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUC1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu82 n<NkO2Qm34PlqU8   T   p 7   S 5NOn 68e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbksha256 d8e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgsha256 8e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0sha2568e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIsha2568e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0sha256b8e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAksha2568e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Ysha256 d8e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHssha256Q8e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-ksha2568e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjEsha256 8e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8sha256 8e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngsha2568e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8sha2568e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwsha2568e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAsha2568e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYsha256 !8e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcsha256 8e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMsha256b8e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzksha256 8e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIsha256f8e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQsha256(8e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgsha256 8e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogsha2568e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8sha2568e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEsha256D8e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcsha2568e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_nosha2568e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIsha256w8e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBksha2568e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gsha256f8e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMsha256{8e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1osha256y8e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gsha256]8e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYsha25628e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brosha256 Rr8e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUsha2568e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90sha256f 698e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8sha256@8e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYsha256)8e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynssha2568e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Cksha256#8e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIsha2568e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYsha256(8e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcsha256_8e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIsha2568e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60sha2568e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQsha256X8e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qsha2568e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8sha256q8e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8ssha2568e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcsha2568e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwsha2568e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7ksha2568e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUsha25618e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJossha2568e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwsha2568e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYsha256 Z98e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18sha256 8e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIsha256 98e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEosha256 a} { y w u sqomkigeca~eeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~~eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~}eeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~|eeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~{eeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~zeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~yeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~xeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~weeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~veeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~ueeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~teeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~seeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~reeQ$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~qeeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800~peeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800~oeeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~neeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~meeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~leeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800~keeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~jeeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~ieeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~heeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~geeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800 Ej8p> v D  | J  P  X & ^ ,d2j8p> vD|JP1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsI1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkr1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug81e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ca1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I 1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E W1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow=1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cS1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EH1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8s/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAJ1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 "1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukd1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g^1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI61e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k<1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU 31e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU -1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQZ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM.1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U = SDo67 q R  8 n5  Q Um 4 TPUpr9 T  p 8 8e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMsha256P8e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEsha256r8e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAksha2568e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMsha256*8e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0sha256Q8e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcsha2568e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYsha2568e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjssha2568e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYsha2568e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIsha2568e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewsha256&8e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYsha2568e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mosha2568e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQsha2568e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUsha256B8e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMosha2568e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAsha2568e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQsha2568e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4sha2568e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejgsha2568e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwsha2568e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwsha256/8e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gsha2568e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQsha256s8e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQsha2568e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byosha256,8e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYsha256.8e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYsha2568e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmosha256M8e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIsha25698e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkosha256 8e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-osha256y8e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0Isha256 8e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIsha256 8e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAsha256 8e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAsha256 8e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19Esha256 8e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAsha2568e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8sha2568e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdssha2568e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXksha2568e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAsha256b7e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8sha256Z8e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jIsha256 y8e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4sha2568e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8osha2568e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Micsha256 8e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgsha2568e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYsha2568e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUsha2568e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0sha25608e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cIsha256 8e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4sha256 8e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpIsha256 8e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMssha256 8e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgksha256 98e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIsha256 8e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Asha256 E8e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edssha256 8e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUsha256 D8e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0sha2568e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgsha2567e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIsha256T8e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAsha256G8e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Isha2568e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Ysha256N8e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgsha256[8e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8sha256  8l D `8j]c!E@anon-20191002_181700-524:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQoIVEUVINDHF127.0.0.1Perl + Net::Async::HTTP/0.44mhi]c!E@anon-20191002_181700-523:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3EvblysawoCMSDWRWLLH127.0.0.1Perl + Net::Async::HTTP/0.44mf}h]c!E@anon-20191002_181700-521:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywoPMRXQYAAOV127.0.0.1Perl + Net::Async::HTTP/0.44m@كg]c!E@anon-20191002_181700-520:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwoLGMWFFKPIS127.0.0.1Perl + Net::Async::HTTP/0.44m?f]c!E@anon-20191002_181700-518:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQoLJEXZWJDWN127.0.0.1Perl + Net::Async::HTTP/0.44me]c!E@anon-20191002_181700-516:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920woDBXNPICYFO127.0.0.1Perl + Net::Async::HTTP/0.44md]c!E@anon-20191002_181700-514:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9goLBNXTFJTIT127.0.0.1Perl + Net::Async::HTTP/0.44m՞c]c!E@anon-20191002_181700-512:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAoXMPLTRSJHY127.0.0.1Perl + Net::Async::HTTP/0.44mٴb]c!E@anon-20191002_181700-510:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-AoTMGCAARJXM127.0.0.1Perl + Net::Async::HTTP/0.44mَa]c!E@anon-20191002_181700-509:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwoRHTCHJDJOV127.0.0.1Perl + Net::Async::HTTP/0.44mق|  .Av/eQay$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2746}{"auth_events": ["$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI"], "prev_events": ["$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI"], "type": "m.room.member", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-510", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-510:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042909450, "hashes": {"sha256": "ccMF6NCwZhX4NvkgNOOb3IP2ojA413PdAMGhdkqgbRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "POYV/vt6htekkLGa8/XpApvnMjsbCTDydChnzo9XZZDDJ0ZfkKaWAIoOmETAtBZnnThtNbUMJcAKuYQfoB0gDw"}}, "unsigned": {"age_ts": 1570042909450}}i.eQa_$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2745}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-510:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042908619, "hashes": {"sha256": "3R3YccaKXDSNleqmojKpzO68R9ZpA+ffn6OjucL1ns0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xs7pz7gzmD15CtWFkuOmROopvODMZ6CTNYJoA+/f8m9b/plDx+vW+nl8+PJe5mo7ETUNj+YZT6VESdFMAYo7Bw"}}, "unsigned": {"age_ts": 1570042908619}}-eQm$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "txn_id": "518", "stream_ordering": 2744}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM"], "type": "m.room.message", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042907349, "hashes": {"sha256": "yAqo3oUTuPMlrkvoD2z8F7Tvd1aoA3+h96xHtYUHv34"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MoupyozutZxuv26G7ie/Mj/pVjcAqgZI1OGr6nzmHOAxTl5wveCAbizsTV21pOLyh+cLl+O2NpzT/IB0gKRPCA"}}, "unsigned": {"age_ts": 1570042907349}}H,eQa$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 506, "stream_ordering": 2743}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y", "$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM"], "prev_events": ["$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM"], "type": "m.room.member", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-509:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-509", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-509:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042906276, "hashes": {"sha256": "R+HiNQ+gf8lfP3aAvv8kVMhXvRf6Quv6W99UQVz0OvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hgncTI0cZMWiajH3NQdElz5EaGU5q/c8cIp+IiNBmtpRZ2ZaF1ojBwQd1L1MfR9lCrxEiWz20MtO8UdFEXWnDg"}}, "unsigned": {"age_ts": 1570042906276, "replaces_state": "$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM"}} DM p   % ( JM*-OX[}1d)Q' e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y8(Q']ee !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 'Q']e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xop&Q? e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibility$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUh%Q/ e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rules$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0j$Q3 e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE #Q']e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Okd"Q' e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 !Q']e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsp Q? e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibility$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4hQ/ e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkjQ3 e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 Q']e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UdQ' e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg8Q']ee !CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE Q']e !CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEjQ3 e !CSqENqzAezaZnGktbE:localhost:8800m.room.guest_access$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQpQ? e !CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibility$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQhQ/ e !CSqENqzAezaZnGktbE:localhost:8800m.room.join_rules$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIjQ3 e !CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 Q']e !CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQdQ' e !CSqENqzAezaZnGktbE:localhost:8800m.room.create$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY Q']e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawsQ))e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkpQ? e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibility$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhohQ/ e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rules$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGImQ9 e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_alias$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1KkjQ3 e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg Q']e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAd Q' e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI8 Q']ee !RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM T\ ]  f  {-+AVT,Qe?Q ]$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4m.room.history_visibility!IlGJpjzrvvAFuwTAgo:localhost:8800mXm.@anon-20191002_181700-514:localhost:8800$Pe/Q ]$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkm.room.join_rules!IlGJpjzrvvAFuwTAgo:localhost:8800mm߄@anon-20191002_181700-514:localhost:8800&Oe3Q ]$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4m.room.power_levels!IlGJpjzrvvAFuwTAgo:localhost:8800m.mD@anon-20191002_181700-514:localhost:8800 Ne'Q ]$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4Um.room.member!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800M e'Q  ]$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egm.room.create!IlGJpjzrvvAFuwTAgo:localhost:8800mmj@anon-20191002_181700-514:localhost:8800!Le)Q ] $ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4m.room.message!CSqENqzAezaZnGktbE:localhost:8800 mmm@anon-20191002_181700-512:localhost:8800 Ke'Q ] $b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4m.room.member!CSqENqzAezaZnGktbE:localhost:8800 mm@anon-20191002_181700-513:localhost:8829 Je'Q ]$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEm.room.member!CSqENqzAezaZnGktbE:localhost:8800mmɦ@anon-20191002_181700-512:localhost:8800Ie#Q ]$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUm.room.test!CSqENqzAezaZnGktbE:localhost:8800mƞmƢ@anon-20191002_181700-512:localhost:8800&He3Q ]$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQm.room.guest_access!CSqENqzAezaZnGktbE:localhost:8800m\m,@anon-20191002_181700-512:localhost:8800,Ge?Q ]$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQm.room.history_visibility!CSqENqzAezaZnGktbE:localhost:8800momT@anon-20191002_181700-512:localhost:8800$Fe/Q ]$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIm.room.join_rules!CSqENqzAezaZnGktbE:localhost:8800mٽ*mپc@anon-20191002_181700-512:localhost:8800&Ee3Q ]$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4m.room.power_levels!CSqENqzAezaZnGktbE:localhost:8800mٹmٻ$@anon-20191002_181700-512:localhost:8800 De'Q ]$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQm.room.member!CSqENqzAezaZnGktbE:localhost:8800mٷmٸF@anon-20191002_181700-512:localhost:8800C e'Q  ]$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYm.room.create!CSqENqzAezaZnGktbE:localhost:8800mٵmٵx@anon-20191002_181700-512:localhost:8800!Be)Q ] $Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgm.room.message!vBvlJEXUSQKUYmsKcO:localhost:8800 m٭ mٮh@anon-20191002_181700-510:localhost:8800 Ae'Q ] $hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawm.room.member!vBvlJEXUSQKUYmsKcO:localhost:8800 m٩ m٪ @anon-20191002_181700-511:localhost:8829@e#Q ]$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMm.room.test!vBvlJEXUSQKUYmsKcO:localhost:8800m٧-m٧1@anon-20191002_181700-510:localhost:8800!?e)Q ]$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkm.room.aliases!vBvlJEXUSQKUYmsKcO:localhost:8800m٤Mm٥@anon-20191002_181700-510:localhost:8800,>e?Q ]$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebhom.room.history_visibility!vBvlJEXUSQKUYmsKcO:localhost:8800m٠m٢@anon-20191002_181700-510:localhost:8800$=e/Q ]$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIm.room.join_rules!vBvlJEXUSQKUYmsKcO:localhost:8800mٜmٞ@anon-20191002_181700-510:localhost:8800)<e9Q ]$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kkm.room.canonical_alias!vBvlJEXUSQKUYmsKcO:localhost:8800mٙmٚ@anon-20191002_181700-510:localhost:8800&;e3Q ]$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgm.room.power_levels!vBvlJEXUSQKUYmsKcO:localhost:8800mٕm٘*@anon-20191002_181700-510:localhost:8800 :e'Q ]$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAm.room.member!vBvlJEXUSQKUYmsKcO:localhost:8800mٓ mٓ@anon-20191002_181700-510:localhost:8800  3eQa$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2750}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI"], "type": "m.room.history_visibility", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042912787, "hashes": {"sha256": "JIMcJz2qfDTE1E9cv7n592qQYCsnKE2AyXKv4wvgIYM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WwkDZaKshcZCIuU9EgagTpRU4RrE5TCIhSkRFjp97ZKg3qVRwP2itZQuUUXCKmz2UuDhWQc6ePpjgIu+vguSDw"}}, "unsigned": {"age_ts": 1570042912787}}t2eQau$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2749}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk"], "type": "m.room.join_rules", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042911887, "hashes": {"sha256": "9A/eMIewtcU9U+LDmnq0abOPOVv7wxDfA2syK6hAcYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p15Ko5Wck5V2MIfUOtA0EGx+LkFu31jgPssOea90Z6dz/3cKEGEeRI7LHo1J1/aeLT/kR34K1A4uADLv/qmZDA"}}, "unsigned": {"age_ts": 1570042911887}} 1eQa!$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2748}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg"], "type": "m.room.canonical_alias", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"alias": "#__ANON__-24:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042911186, "hashes": {"sha256": "uSMcCNaT/FdLq79pt4NTu+/DF48vxSgwqWUujICUPEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g71oFC9jdc1nqZ9TIJdeQR2uiJYqeWHvq3bFgCFlIKNTDo6F0ds9XWEFwn+Av2M127KXiSVSQJ2TH8sh1EGnCQ"}}, "unsigned": {"age_ts": 1570042911186}}k0eQac$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2747}{"auth_events": ["$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "type": "m.room.power_levels", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"users": {"@anon-20191002_181700-510:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042910179, "hashes": {"sha256": "OfXTp3Vd4A+MAEf8MpnnRu5DQ6py6mkYdZHM8seiE2w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B07qPV21sgxEGi4RwAo2l8SsolgR4ajtBKlWaAmGOVvRLmeKdXO8UmHzvaFZT/CSsMgNrZEoNMYvkKm9oD+LBQ"}}, "unsigned": {"age_ts": 1570042910179}} !K'@ " - W y [fk 54!KgQ/ e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rules$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgiQ3 e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw ~Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Ec}Q' e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y |Q']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI {Q']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$0EAuz7NH4mjkAICKvxZCYtE8mAncHER7jU3FSLtXW48 zQ']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xooyQ? e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibility$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUgxQ/ e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rules$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0iwQ3 e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE vQ']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6OkcuQ' e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 tQ']e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsosQ? e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibility$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4grQ/ e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkiqQ3 e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 pQ']e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UcoQ' e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg nQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 mQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$WcM05q61ueoe6-KGOkZUeCT9AlN5J7qHlb_FIdV-Yck lQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEikQ3 e!CSqENqzAezaZnGktbE:localhost:8800m.room.guest_access$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQojQ? e!CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibility$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQgiQ/ e!CSqENqzAezaZnGktbE:localhost:8800m.room.join_rules$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIihQ3 e!CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 gQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQcfQ' e!CSqENqzAezaZnGktbE:localhost:8800m.room.create$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY eQ']e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw dQ']e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829$t0b1uVlPml5Vvn7BgxZ_fxtiVr35CBTcPI_xA5OVbUUrcQ))e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkobQ? e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibility$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhogaQ/ e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rules$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIl`Q9 e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_alias$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk WG&^> f >  h @  xN Q *   ~V^6n~V.pH .6f v N &`8v^'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 \'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 ^'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 ]'Q!xXYMxashIZAUOTuGAJ:localhost:88007'Q!xXYMxashIZAUOTuGAJ:localhost:88006'Q!xXYMxashIZAUOTuGAJ:localhost:88005'Q!xXYMxashIZAUOTuGAJ:localhost:88004&Q!wvnfKBSrUlfNmYoeil:localhost:8800{'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 }'Q!xcdNyJNFEdaBGFycsB:localhost:8800 |'Q!xcdNyJNFEdaBGFycsB:localhost:8800 {'Q!xXYMxashIZAUOTuGAJ:localhost:8800:'Q!xXYMxashIZAUOTuGAJ:localhost:88009'Q!xXYMxashIZAUOTuGAJ:localhost:88008'Q!xvblqEscwOtCqJntfF:localhost:8800J'Q!yWhIsLsgNVGcnELrDS:localhost:8800('Q!yNfCaBMPezurwkJRAX:localhost:8800G'Q!yNfCaBMPezurwkJRAX:localhost:8800F'Q!yNfCaBMPezurwkJRAX:localhost:8800E'Q!xcdNyJNFEdaBGFycsB:localhost:8800 ~'Q!yNfCaBMPezurwkJRAX:localhost:8800B'Q!yNfCaBMPezurwkJRAX:localhost:8800C'Q!yNfCaBMPezurwkJRAX:localhost:8800DF('Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800N'Q!xvblqEscwOtCqJntfF:localhost:8800M'Q!xvblqEscwOtCqJntfF:localhost:8800L'Q!xvblqEscwOtCqJntfF:localhost:8800K x'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800  0('Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 &Q!xwoIOPTGmJIlTXakxC:localhost:8800^&Q!xwoIOPTGmJIlTXakxC:localhost:8800]&Q!xwoIOPTGmJIlTXakxC:localhost:8800\&Q!xwoIOPTGmJIlTXakxC:localhost:8800[&Q!xwoIOPTGmJIlTXakxC:localhost:8800Z&Q!xwoIOPTGmJIlTXakxC:localhost:8800Y'Q!xhbvqJDfxMSsZPqvld:localhost:8800 'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 ['Q!yAfsSyqpJWFnkXQFJL:localhost:8800 Z'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 %'Q!yTQmLDAxZscWKLMSWh:localhost:8800 $'Q!yTQmLDAxZscWKLMSWh:localhost:8800 #'Q!yTQmLDAxZscWKLMSWh:localhost:8800 "'Q!yTQmLDAxZscWKLMSWh:localhost:8800 ! E) zHNT"n< v D j8b0p> [tBh6 P  V $ \ | *)b0#221e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I01e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q 11e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q 1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM81e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM:1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM91e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90T1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90S1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90R1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1ga1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g`1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc%1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA1e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos 61e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos 51e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos 41e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI|1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI{1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4 i1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4 h1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4 g1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQd H<  # tB{I O  [ )jU O#  n U u C  { [ )b0h68vEEttojlNa01e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs %1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veke1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsq1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQZ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIe1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0=1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE#1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk 1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUd1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM 1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsZ1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUF1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk<1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUE1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg%1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA Z1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw m1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAK1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s%1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw D1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo~1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk|1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc x1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 01e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So I21e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg x1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw =21e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y\1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0O1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM\1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k81e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg =1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 21e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI@1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw H<  # tB{I O  [ )jU O#  n U u C  { [ )b0h68vEEttojlNa01e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs %1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veke1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsq1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQZ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIe1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0=1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE#1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk 1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUd1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM 1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsZ1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUF1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk<1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUE1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg%1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA Z1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw k1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAK1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s%1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw D1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo~1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk|1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc v1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 01e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So I21e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg x1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw =21e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y\1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0O1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM\1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k81e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg =1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 21e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI@1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw  h  7eQm$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "txn_id": "519", "stream_ordering": 2754}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw"], "type": "m.room.message", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042916107, "hashes": {"sha256": "5ywMREm7nz4WIZTpdXWShYvk8kL8QynwaViw/zfYC8w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/Xh1176uaIqqJ4ddj2OsT0AWx0/JQtOA65AxmMHkbwpJYSWIX1C5+NDfwVtptd/XndIpZHWbb467IwwraUJjDA"}}, "unsigned": {"age_ts": 1570042916107}}r6eQ1$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2753}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-511", "membership": "join"}, "depth": 9, "hashes": {"sha256": "IsRAr9U20IMGysXm/YPLCUxV1Uc8zMvYa40Uhcnd1O8"}, "origin": "localhost:8829", "origin_server_ts": 1570042915082, "prev_events": ["$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM"], "prev_state": [], "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-511:localhost:8829", "state_key": "@anon-20191002_181700-511:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vGHPv5RutWcQjhOHhe6OYZDHazHwm8Ntn61UnmaHq2Anevh3W+Hf9209Qcm0vFaAWyzfvYv/v1FZCgudUzbCA"}, "localhost:8829": {"ed25519:a_UxIG": "62Bik+/HRwFuxeMWaAMp4sJpqnHAMuhFv9kB5iEUJvSOFAN0uw0ZGhBWkKPS4hmHvz5MHUTFOpSopYBENma/Ag"}}, "unsigned": {"age": 127}}H5eQa$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2752}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk"], "type": "m.room.test", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042914605, "hashes": {"sha256": "l0W/scTYOjagdhtHspkqoTLHfTbo2ib4h0SASDc9Xg8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aASZshej9E3jL4Y99buaziPo2A12W0P/OaTyb35o9CDrG1CZgf6zsQOqyiyXRJg3ZwqRVkE/2wiNdp75spxpAQ"}}, "unsigned": {"age_ts": 1570042914605}}4eQa5$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2751}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho"], "type": "m.room.aliases", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"aliases": ["#__ANON__-24:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042913869, "hashes": {"sha256": "Imy4DR7k7lYNhwdaep+rgDfSAn7rndwE2m3qATvFQWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0vbC8XF4lOt1TwAwAyFl8Jt0VJTwfI7IrKXmVaZfBDML8PIAcari7PUD217PUVrsiDqfIabf6ZFOPArYK25zAg"}}, "unsigned": {"age_ts": 1570042913869}} :^,XR Mq? wEe v D~  | J    &   P  W &j X?^,R  wF,21e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gi1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M)1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM x1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA u1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIm1e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnusk1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwU1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA@1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8 911e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM41e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwX1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy901e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs /1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc\1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg z1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 31e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo d21e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU ^0e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qy0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioU1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoD1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4,1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw#1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY '1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 81e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 H1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc -21e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y 1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 2 ! 0 @ P ` p(8HXhxu. ]@anon-20191002_181700-557:localhost:8800$2b$04$U6SY7ARQ1surVV6Pp4q1Y.YpWUV7j01.iUY6g2uvLFbGD8Bure8QK]u- ]@anon-20191002_181700-556:localhost:8800$2b$04$kkVucth9R1oBKzgsWeW1G.g/2C2lkAswgaqaXc/W9beW3Y7dfoPfK]u, ]@anon-20191002_181700-555:localhost:8800$2b$04$u9eubA/fK61kKMmCs58JrekS1KBHYzsod6WtHY2lDKhRlBWN0/4Va]u+ ]@anon-20191002_181700-554:localhost:8800$2b$04$KOoO.gn/fOu5On3HvfKIAuWhePYTkZicplqGbqFgYE3monlwGZpp2]u* ]@anon-20191002_181700-552:localhost:8800$2b$04$KeWiCk3vjS6NEmtsfBTlne/ZNesHBMaPnyOqOiSFCgqIEAmJaOqPy]u) ]@anon-20191002_181700-551:localhost:8800$2b$04$yOW3dhMuLOv3.UQ4/CBOe.t84ZI.vGpw3Qivyre.5X6dZN.a69N5G]u( ]@anon-20191002_181700-550:localhost:8800$2b$04$f/AeA8ihM59Xq0UH4javJeOTUXyQZTij75r.NTKOFD9b3FSpQYGkK]u' ]@anon-20191002_181700-549:localhost:8800$2b$04$SOlzTjletvvOK4rpZsawB.rl11x10Pucwej7kmGteca8gZiRMsHxa]u& ]@anon-20191002_181700-548:localhost:8800$2b$04$FCvia/VPyTRWmjUU7IgY.u/AwQlIiMcKbeyom5Z6jmTrC.OgInPkK]u% ]@anon-20191002_181700-545:localhost:8800$2b$04$vztNnSXii8k5gJt/q4gkm.TH4O.BmiaQNA2KOHrSgh1mAKYDjqV2K]u$ ]@anon-20191002_181700-543:localhost:8800$2b$04$WX4essptb178woUVEm2lteQvlfBOStz1PrSc6bdSMA1IdP4dBK7EG]u# ]@anon-20191002_181700-541:localhost:8800$2b$04$RECSqLKcYjZ7SalYyuEoGeO9tDg1pChqxqzOoMF69ENpaerAgjeim]|u" ]@anon-20191002_181700-539:localhost:8800$2b$04$iFhYDv1PvcN0Xtjv8S18Ne9Y9k5K0wIuo7vZwW5hL2KSd2sSXsWbC]tu! ]@anon-20191002_181700-537:localhost:8800$2b$04$2.2xwWjIQ79f.RgNo.BNpuT8liTqLTlE.rG29BBd5/m2eIX.I1MBC]lu ]@anon-20191002_181700-538:localhost:8800$2b$04$6k2Vm6MJ9lYY8e4UolvmEeVaLCHtAov5/Uy0NpjTknXLlhfm0hMlK]lu ]@anon-20191002_181700-535:localhost:8800$2b$04$m3mTVmwERp1DVN4MCz6ZvOC52YBvOfs3FvvEfMClL4RCj5tiyoBuG]eu ]@anon-20191002_181700-536:localhost:8800$2b$04$xTeE3.Xj7VRtBaqXfnzKYOeGgNVIXdG7LEHtBr/J5kJ/Uk2sG/kiW]eu ]@anon-20191002_181700-533:localhost:8800$2b$04$gHQ65YWDPgO8GTsATUsD9eoav3Q7XkaccEnGyUuQMiLGnTGMEqkoW]^u ]@anon-20191002_181700-534:localhost:8800$2b$04$GHYQIxaejTbjnfxEq0K3huZmSfDyVbNiDNMGQjGsA4yxLSQ5pSLL2]^u ]@anon-20191002_181700-531:localhost:8800$2b$04$syfmb8b6GxER42d2OIpq8u2Htlug9bI61AOcV3ZiPvr.CH8lpP8Iu]Xu ]@anon-20191002_181700-532:localhost:8800$2b$04$8WywnSDVxtKEvmBeA3sEyuJyWv01E4Xp3LldE7pTasDkoJjGQLquW]Wu ]@anon-20191002_181700-529:localhost:8800$2b$04$kZXArYU2FA/fy6dQpaHfqOLPi2LYx.78uig9W50fhV/DYdF/83OAi]Wu ]@anon-20191002_181700-527:localhost:8800$2b$04$HoPmW/rrBmnLup89KKcCHeRqg8iDmfbjYcgqG0IPR7jqmTf4Djcm.]Vu ]@anon-20191002_181700-526:localhost:8800$2b$04$7JNy/Ic9TWUaGaIfAQkcUuFw11M/NTbPo9YRqAOldquk7GGub56Iy]Uu ]@anon-20191002_181700-525:localhost:8800$2b$04$WAXO41hcHPjgdcU18JwHrucIbJLNXwVQ5G0rWUtw5dcca2I78cJ/u]Tu ]@anon-20191002_181700-524:localhost:8800$2b$04$pb5zBaUbQA.4PO7cDR7mRedYRfdYzYWljyfwWzOq72IkTQ/pooPE.]Su ]@anon-20191002_181700-523:localhost:8800$2b$04$QqrOfenQtBgP3OJN18WiFeNz2xotr.pFhdsmJL6oUwBJbcARKwJZ2]Su ]@anon-20191002_181700-521:localhost:8800$2b$04$c6vjqCv6zH5eo3qxlHWME.kEQhl19qY3bfg6dBwxE7AnH/fkQ1/OC]Hu ]@anon-20191002_181700-520:localhost:8800$2b$04$R39FeyHCeuSQq/ghUMSMr.LxrTv5MpZalra91oZbdjXRVBTCdSU2W]Hu ]@anon-20191002_181700-518:localhost:8800$2b$04$J8s2AT04YPkVvGTISN7e5efnhkTMTRAna.2wsZ2.sAN3TlcKen/e.]@u ]@anon-20191002_181700-516:localhost:8800$2b$04$P/Rb2qhEzd05dBLf9H9mtem8EstCdEGXFfxhUApeN85ULBXdkkGqq]8u ]@anon-20191002_181700-514:localhost:8800$2b$04$ypnVJxfkDLIQKqtFGxYbj.d2v1qM6pJNRuhGCXCdK/VuWV3BejlA2].u ]@anon-20191002_181700-512:localhost:8800$2b$04$Hk96AtvNlID52z93ItE1YujBo8eWU2sNAIxlSk1gAH1u6IXqmmDJu]%   *t;eQau$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2758}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4"], "type": "m.room.join_rules", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042920234, "hashes": {"sha256": "fcwIp2zdtwxhoIk2nTHwo3Vkha6Vx7OA8+b6hy9acjY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9ALyMWsTWoznF+VaaL7IsBRxN20+Blu8Yhsv6jn5KQyDsLrcNwDgIw/8K15bvfKPEktMN1hWAc+GTZimQeG6Bg"}}, "unsigned": {"age_ts": 1570042920234}}k:eQac$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2757}{"auth_events": ["$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "type": "m.room.power_levels", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"users": {"@anon-20191002_181700-512:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042919412, "hashes": {"sha256": "sPuMc+HvnEqLS3OYGU3ic0BawkUy4vde7c/4P6bIgas"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ukte9/OHPzJtK7BB1ukVxFQbSubLKh0tMtMnL+y/pUpipRe0c1dyPi+hWcnzU7QstNsqdt7pm/zrgFQWp0jfBg"}}, "unsigned": {"age_ts": 1570042919412}}v9eQay$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2756}{"auth_events": ["$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY"], "prev_events": ["$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY"], "type": "m.room.member", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-512", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-512:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042918850, "hashes": {"sha256": "c1HzK3EUkTLZR5w9uqKwhoWR0VuhW4tzW0Cw2VrDyG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iEZbhvyVetevDAG3gzOqzmb1V1tXQ0LYPvlr1SStNPP3t5qpYwc/QfRzcZoLBrwGvymZbpoTCdBYgwNKi9NZAA"}}, "unsigned": {"age_ts": 1570042918850}}i8eQa_$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2755}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-512:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042918171, "hashes": {"sha256": "qR91MKNZyHXufDUdBpdp2DNSH/aWyMXZ5DXVyzsoo9w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rq6Vn2lpMsGOyZUa6+0cNDaDZkmh8CB1+fx5bB1cdEp1Q0997q3YbMHyFER9R0e3tyOFPGmYNeS0/ANRIOa0AA"}}, "unsigned": {"age_ts": 1570042918171}} a} { y w u sqomkigeca~$eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~#eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800~"eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~!eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800~ eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~eeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800 ~z v r n j fb^ZVRNJFfeeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8!AoAvmnwMkhYBQsbCsL:localhost:8800eeeQ$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800deeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800ceeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800beeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800aeeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800`eeQ$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800_eeQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk!IlGJpjzrvvAFuwTAgo:localhost:8800^eeQ$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800]eeQ$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800\eeQ$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800[eeQ$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800ZeeQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800YeeQ$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800XeeQ$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8!IlGJpjzrvvAFuwTAgo:localhost:8800WeeQ$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800VeeQ$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg!IlGJpjzrvvAFuwTAgo:localhost:8800UeeQ$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800TeeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800SeeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800ReeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800QeeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800PeeQ$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800OeeQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800NeeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800MeeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU!CSqENqzAezaZnGktbE:localhost:8800LeeQ$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800KeeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800JeeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800IeeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800  wH>eQa$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2761}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ"], "type": "m.room.test", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042922654, "hashes": {"sha256": "erkq6RnTOzM56AczmjqhnNnZj6e/wfWUlZKLq2Zluak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lUYpa5AZoVwJv6ClzPPUy7gPbDmJSOi26wEciuteP8RaYoANpZ/wAkkYrcBPSYXG2cAi8vfq8V+2h4s3v778Dw"}}, "unsigned": {"age_ts": 1570042922654}}{=eQa$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2760}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ"], "type": "m.room.guest_access", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042921820, "hashes": {"sha256": "65RV57kDGB+rzD6sHSKKMLHpRw1mO1394wujt5fB2Mg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KVGU2jpzeJ50zanJ2JJhFYBUSQzgDnzxJoFHBxQj+PliiTSLd4vBcrAIjpUtsHIdRVkR5LWxzPgOsD+5xSplDg"}}, "unsigned": {"age_ts": 1570042921820}}<eQa$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2759}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI"], "type": "m.room.history_visibility", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042921071, "hashes": {"sha256": "neNm5yeCzH9Zl15Rz06d1qJp9uey1ZD4WDvrPtcR0/g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Uac1gd/tjULtgAyv6O7dMy8M9zYj6NXb6uwn4Ix6/va7ckc5vHeHIVD39HUFgr5wNixz56VANn/SPA1pmD5Bw"}}, "unsigned": {"age_ts": 1570042921071}} RalI2xR   b # q Q r O ) U 8 _  o0@lO4T=]  a " a F#qV3 >'] m.room.member@anon-20191002_181700-535:localhost:8800 >']m.room.member@anon-20191002_181700-508:localhost:8800>']m.room.member@anon-20191002_181700-522:localhost:8829 >']m.room.member@anon-20191002_181700-522:localhost:8829 %))m.room.aliaseslocalhost:8800 "? m.room.history_visibility / m.room.join_rules 9 m.room.canonical_alias 3 m.room.power_levels >']m.room.member@anon-20191002_181700-520:localhost:8800 ' m.room.create >']m.room.member@anon-20191002_181700-519:localhost:8829 >']m.room.member@anon-20191002_181700-519:localhost:8829 >']m.room.member@anon-20191002_181700-519:localhost:8829 "? m.room.history_visibility / m.room.join_rules 3 m.room.power_levels>']m.room.member@anon-20191002_181700-518:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-517:localhost:8829>']m.room.member@anon-20191002_181700-517:localhost:8829>']m.room.member@anon-20191002_181700-517:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-516:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-515:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-514:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-513:localhost:8829>']m.room.member@anon-20191002_181700-513:localhost:8829>']m.room.member@anon-20191002_181700-513:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-512:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-511:localhost:8829>']m.room.member@anon-20191002_181700-511:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-533:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-532:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-531:localhost:8800 '  m.room.create >']m.room.member@anon-20191002_181700-521:localhost:8800 9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-510:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-509:localhost:8800>']m.room.member@anon-20191002_181700-509:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels"' m.room.create>']m.room.member@anon-20191002_181700-507:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-506:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules'  m.room.create >'] m.room.member@anon-20191002_181700-534:localhost:8800 "?  m.room.history_visibility  z zAeQm$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "txn_id": "520", "stream_ordering": 2764}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4"], "type": "m.room.message", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042924996, "hashes": {"sha256": "ujGu+bHRv1dsq3jKIFYJEXNxFitvmpwJfdZxuisFcbg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wJIdqxerMwYibqM4c1BoKMyMb4a+0mOm/qpGVAyG9l69aBABOLkGViExuJRRrSXtclh7GeJPMaowrEPAtgbTBQ"}}, "unsigned": {"age_ts": 1570042924996}}c@eQ1$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2763}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI", "$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-513", "membership": "join"}, "depth": 9, "hashes": {"sha256": "e94wdMBmPty2KVS1LCIeULDc0R6YvoPvRF4ZuzGui5E"}, "origin": "localhost:8829", "origin_server_ts": 1570042924032, "prev_events": ["$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE"], "prev_state": [], "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-513:localhost:8829", "state_key": "@anon-20191002_181700-513:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1P7iRan13ioDjePvqltGkWxmoPchEiGNMIKvSWJZsYc8NKOxWrR5QJHoIdBo2EJQC1i4jQQjZLI2AD403lhAQ"}, "localhost:8829": {"ed25519:a_UxIG": "VkY0iqYMPukaQK72AeeVwRR+SCqiQps0ebHZ1e2Kttn+LuNUvsg6ykD/pieJ40ui8NHEP/Feh1PWIgj5sg2vDw"}}, "unsigned": {"age": 99, "replaces_state": "$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE"}}?eQa7$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2762}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU"], "type": "m.room.member", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-513", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-513:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042923209, "hashes": {"sha256": "OmgLfn/SxSQ/Uooqk6t35CMmxAZhRd5IoZ+pd7GgofM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4oJICAEnXtHE707c4sJKBJzFw7VRnc7PS5BziHVLH6nwm9dJc5E7s4c/Be6LXUOUhy5G9rPgi2NbFB73eW7oDg"}, "localhost:8829": {"ed25519:a_UxIG": "7SlYz4+x667fJWG9406xw2Skfx7pEufpPYL+hEL8PLKsemYb0y75TZ5tlNixSyGDKQB+wy3IBmc5wcG2Rx6kBw"}}, "unsigned": {"age_ts": 1570042923209, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-512:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-512:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-512", "avatar_url": null}, "sender": "@anon-20191002_181700-512:localhost:8800"}]}}  LD<5t | l d \ T -%eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800 _eeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800 0 eeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800(eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800ځeeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800߁eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk!raCWVWQGnXbmkexpCN:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800ʁeeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800eeQ$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800OeeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800?eeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800   *tEeQau$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2768}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4"], "type": "m.room.join_rules", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042928845, "hashes": {"sha256": "2Q60bmxi9HOkKyhnxreE4txaJTmEFO8N4nPIahV9Js8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEOETvBSavyYrQao/32P/dkquBeEFuqigtdNDvCAxCja1n2xP8ZxqA74VtoLeEig4jKsJyI6kTPtYFjXdYYdAg"}}, "unsigned": {"age_ts": 1570042928845}}kDeQac$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2767}{"auth_events": ["$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "type": "m.room.power_levels", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"users": {"@anon-20191002_181700-514:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042928174, "hashes": {"sha256": "OUsIqeZJLWbERSzEN6bgVXfenPsJwm/hJlOzLuNCVTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "esD4tr0Xtdy1H4J9E1kPbYJfW6Bmy90t35IFrooo0PYcPip4FAc1q1LXo7oYEI4ikMlAzkJknrwWGtcFye5iAg"}}, "unsigned": {"age_ts": 1570042928174}}vCeQay$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2766}{"auth_events": ["$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg"], "prev_events": ["$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg"], "type": "m.room.member", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-514", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-514:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042927353, "hashes": {"sha256": "RWHyI/5lsVoxbhlBhstzYJxGDet/6lUhPDNlPvnCQbA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IN7khgD2mdMxXeqi/vI4JKA55pVCcjsmoRmAUS2SjxFY1qiRR6DdipkR0ilBFYy69aHl6WKWV0p8uF170JXgAg"}}, "unsigned": {"age_ts": 1570042927353}}iBeQa_$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2765}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-514:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042926596, "hashes": {"sha256": "P3ZleBaNuEwfn54TnDPb+MIFMXK2vnE6ZQ1p9QRjQcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iPatMZwTiph5XvxalT8G4rGRfGn58X0WriRiLpvWbDL8afi8GJXYqcRVvj6b9TIFW5aJ/2he06f3EMx/DQ4FAg"}}, "unsigned": {"age_ts": 1570042926596}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h H G F E D C B A @ ? > = < ; : 9 8 7 ~6 }5 {4 z3 y2 x1 v0 u/ t. s- q, p+ o* n) l( k' j& i% f$ d# d" c! b  a ` _ ] \ [ Z Y X W U T S R Q P O L L  J  I  I  G  G F E D C B @ ? > = < : 9 8 7 6 4 3 2 1 0 - - , + * ) ( % % $ # " !                            ~} { z y x w v u t s r q p o n m l j i h g f k e d c b a ` _ ^ ] \ [ Z Y X W V U T R Q P O N S M L K J I|{zyxwvutsrqponmlkjihgfedcba`_^]\[~Z}Y|XyWyVxUwTvSuRtQqPqOpNoMnLmKlJjIiHhGgFfEcDcCbBaA`@_?^>]=Z<Z;Y:X9W8V7U6T5R4Q3P2O1N0M/L.J-I,H+G*F)E(D'B&A%@$?#<"<!; :98744321 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h H G F E D C B A @ ? > = < ; : 9 8 7 6 ~5 |4 {3 z2 y1 w0 v/ u. t- r, q+ p* o) m( l' k& j% g$ f# e" d! c  b a ` ^ ] \ [ Z Y X V U T S R Q P N M  L  K  J  I  H G F E D C A @ ? > = ; : 9 8 7 5 4 3 2 1 / . - , + * ) ' & % $ # " !                           ~} { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I|{zyxwvutsrqponmlkjihgfedcba`_^]\[Z~Y}X{WzVyUxTwSvRuQsPrOqNpMoLnKmJkIjHiGhFgEeDdCcBbAa@`?_>^=\<[;Z:Y9X8W7V6U5S4R3Q2P1O0N/M.K-J,I+H*G)F(E'C&B%A$@#>"=!< ;:9865432 ;)#OI= uDi  v 8 |o[7 D J U{  p P j $ 1 = C ] +1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ H1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoR1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A e1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkh1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc&0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAe1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgo1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow A1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUQ1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw[1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0"1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc51e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk y>W1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIE1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcx1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsE1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw*1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo'1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQn1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 21e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg N1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisd ;)#OI= uDi  v 8 |o[7 D J U{  p P j $ 1 = C ] +1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ H1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoR1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A c1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkh1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc&0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAe1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgo1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow A1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUK1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw[1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0"1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc51e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk y>W1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIE1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcx1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsE1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw*1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQn1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 21e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg L1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisd -RM H C > 9 4/*|%w rmhc T8Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkT7Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkT6Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQT5Qe !wBkUBAjOznOyxrLchl:localhost:8800$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAT4Qe !wBkUBAjOznOyxrLchl:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgT3Qe !wBkUBAjOznOyxrLchl:localhost:8800$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAT2Qe !wBkUBAjOznOyxrLchl:localhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwT1Qe !wBkUBAjOznOyxrLchl:localhost:8800$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAT0Qe !wBkUBAjOznOyxrLchl:localhost:8800$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MT/Qe !wBkUBAjOznOyxrLchl:localhost:8800$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTET.Qe !wBkUBAjOznOyxrLchl:localhost:8800$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIT-Qe !wBkUBAjOznOyxrLchl:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAT,Qe !wBkUBAjOznOyxrLchl:localhost:8800$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUT+Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4DwT*Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmkT)Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgT(Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8T'Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYT&Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMT%Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgT$Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwT#Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_ET"Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2YT!Qe !AoAvmnwMkhYBQsbCsL:localhost:8800$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIT Qe !AoAvmnwMkhYBQsbCsL:localhost:8800$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8TQe !AoAvmnwMkhYBQsbCsL:localhost:8800$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xoTQe !AoAvmnwMkhYBQsbCsL:localhost:8800$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUTQe !AoAvmnwMkhYBQsbCsL:localhost:8800$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0TQe !AoAvmnwMkhYBQsbCsL:localhost:8800$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GETQe !AoAvmnwMkhYBQsbCsL:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6OkTQe !AoAvmnwMkhYBQsbCsL:localhost:8800$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nkTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0oTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_sTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iETQe !IlGJpjzrvvAFuwTAgo:localhost:8800$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cITQe !IlGJpjzrvvAFuwTAgo:localhost:8800$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsT Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4T Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk  i ' ,7(1 6 ^;Fts~?\DaAeQ' $UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800m.room.create @eQ']$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829joinm?eQ? $rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibilitye>eQ/ $F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rulesg=eQ3 $IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels <eQ']$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800joina;eQ' $8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create:eQ']$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829leaveg1eQ3 $7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels 0eQ']$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800joina/eQ' $Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create .eQ']$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829joing-eQ3 $XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800m.room.guest_accessm,eQ? $k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibilitye+eQ/ $-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800m.room.join_rulesg*eQ3 $LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels )eQ']$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800joina(eQ' $CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800m.room.createm9eQ? $cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibilitye8eQ/ $5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rulesg7eQ3 $jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels 6eQ']$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800joina5eQ' $v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create4eQ']$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829invitem3eQ? $IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibilitye2eQ/ $nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules  w^HHeQa$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2771}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms"], "type": "m.room.test", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042931738, "hashes": {"sha256": "qIek94WItfVW7Wm8QkQKtcPoIgLULzdn0tw0BzTYza8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uif60toeyKadd13EvnVMpbw5FZTuJwhnRfeaAK7MnruIYCtuQO1vsOh+gRUYX0fVzoT1Qnfm3W8Kv51om1jFBw"}}, "unsigned": {"age_ts": 1570042931738}}GeQa7$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2770}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4"], "type": "m.room.member", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-515", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-515:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042931008, "hashes": {"sha256": "UpXL4F3V6u6ZAhao6TEkBymD5eGlJ95fP7dYpow8Usk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b6jvNBTA+da/Cx0GpFSs/gcXSHQOm+GrliMjTC6cah4cndb/Z1aEoVZygH8KNV4K3fkGHZopyYJQ4DNUvOlADg"}, "localhost:8829": {"ed25519:a_UxIG": "RO4CMLjgcF4Q05h7VVRbk6mHsA+7uo4dKAX4mtIBLOXFuq6Fj36et/a7eirsI9r7gqsfdPYJ+znc/LsMfmqICw"}}, "unsigned": {"age_ts": 1570042931008, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-514:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-514:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-514", "avatar_url": null}, "sender": "@anon-20191002_181700-514:localhost:8800"}]}}FeQa$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2769}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk"], "type": "m.room.history_visibility", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042929496, "hashes": {"sha256": "PoR0xaPvfRZEtTZC750dKS7l+gsGui0+2ZqBGBMUCT0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "daQVk6tDmkFa7nNKhRahviZToXyb9L+bcWIFfkIMDfEgWR/W4+kMojA9rm+7ViNdrIExmTIANjouPpi4uKPFBA"}}, "unsigned": {"age_ts": 1570042929496}} ~\ p & 7 HX\t&~$ie/Q ]$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgm.room.join_rules!sHRHoXzYrrPSlWBkoh:localhost:8800m$am%-@anon-20191002_181700-518:localhost:8800&he3Q ]$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwm.room.power_levels!sHRHoXzYrrPSlWBkoh:localhost:8800m!m"@anon-20191002_181700-518:localhost:8800 ge'Q ]$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Em.room.member!sHRHoXzYrrPSlWBkoh:localhost:8800mm@anon-20191002_181700-518:localhost:8800f e'Q  ]$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Ym.room.create!sHRHoXzYrrPSlWBkoh:localhost:8800mm.@anon-20191002_181700-518:localhost:8800 ee'Q ]$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIm.room.member!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-517:localhost:8829de#Q ]$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8m.room.test!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-516:localhost:8800 ce'Q ]$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xom.room.member!AoAvmnwMkhYBQsbCsL:localhost:8800mmF@anon-20191002_181700-516:localhost:8800,be?Q ]$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUm.room.history_visibility!AoAvmnwMkhYBQsbCsL:localhost:8800m m@anon-20191002_181700-516:localhost:8800$ae/Q ]$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0m.room.join_rules!AoAvmnwMkhYBQsbCsL:localhost:8800m em 0@anon-20191002_181700-516:localhost:8800&`e3Q ]$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GEm.room.power_levels!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-516:localhost:8800 _e'Q ]$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Okm.room.member!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-516:localhost:8800^ e'Q  ]$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78m.room.create!AoAvmnwMkhYBQsbCsL:localhost:8800mpm@anon-20191002_181700-516:localhost:8800!]e)Q ]$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800!\e)Q ]$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nkm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800![e)Q ]$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0om.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@@anon-20191002_181700-514:localhost:8800!Ze)Q ]$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800!Ye)Q ] $wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 m3m=@anon-20191002_181700-514:localhost:8800!Xe)Q ] $4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_sm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mpmu@anon-20191002_181700-514:localhost:8800!We)Q ] $3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iEm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mm@anon-20191002_181700-514:localhost:8800!Ve)Q ] $N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mm&@anon-20191002_181700-514:localhost:8800!Ue)Q ] $lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mm@anon-20191002_181700-514:localhost:8800!Te)Q ]$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cIm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800Se#Q ]$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgm.room.test!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800 Re'Q ]$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsm.room.member!IlGJpjzrvvAFuwTAgo:localhost:8800m@m@anon-20191002_181700-514:localhost:8800  pO LeQ$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "524", "stream_ordering": 2775}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042933704, "hashes": {"sha256": "SDv+cUssG5SH7PpNLGci2a4gPsYfIJB85Jih0kT6XmI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lgbbnflK0sTkGUhehX0Z2Oi08VRP/eg/VIWkAZ+aQj8T2ykGdD3LxQQAmRJjydnCpxCko6NUcHnWDn6CnvlaAA"}}, "unsigned": {"age_ts": 1570042933704}} KeQ$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "523", "stream_ordering": 2774}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 3"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042933278, "hashes": {"sha256": "kqhdp1K+kjQAfkZTuP3jgkuckknAH3kz4WTKdg/tKN8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aw+9B3fhBOKjgbq4Q7/oXPMJFjVBzqs1rOK/ZL6J8W450kTsGWXnymfxfWTUlIMQA7rUvzxqLx5WvNbK2x2ACA"}}, "unsigned": {"age_ts": 1570042933278}} JeQ$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "522", "stream_ordering": 2773}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042932671, "hashes": {"sha256": "Qt0TQFm6HA0LZvVSYhPDlHdgzEdM71qQjQ/C1zlX0b8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kr+UHBvDh5cxQ+Sz/T3Rsp0Ic3AzT3a5GP6YAyerXSCEcb8PWtKqQeWmpljm2N05XDT2jmn4gyIF1HMzgAAgBA"}}, "unsigned": {"age_ts": 1570042932671}} IeQ$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "521", "stream_ordering": 2772}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042932169, "hashes": {"sha256": "M2qxSnc7OjJnFeXcDf1mLn55+hm4UH+GKUPIsl2aC1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XMDZ2RNlYYzo60fEMLHieTvfgZqiRUDEr8nYNyMZ3GJ3p5ktrAfN+S7OZHTe/1TST5aLACggl1gZS479gxUwAg"}}, "unsigned": {"age_ts": 1570042932169}} d \ T L <D4|,$t l eeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800 aeeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:88006eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!WWZVpyLeZfyfpWidLx:localhost:8800"eeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800{eeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800āeeQ$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800eeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800 >eeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800/eeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800 eeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800 heeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800MeeQ$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc!XgobMgBjNcDRJnRXLD:localhost:8800\eeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800ReeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800'eeQ$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800 *eeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800 J Z S ! Y '  "  ` .T.f4` |(j8lM:r@yGp> v D  T1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw u1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g /1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk W0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw[1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI $1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc01e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A F1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU <1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 11e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0 1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI 1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres 1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgm1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow 20e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAV1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkf1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ 91e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20/1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk w1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0I1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 Y1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sL1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwl1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk;1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo :1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoX0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw]1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk i1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc51e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQn1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs 1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o <<0 H `  B h $<T(?Uq.eQ%-$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 1f-eQ%$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800content.bodyhellof,eQ%$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800content.bodyhellof+eQ%$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw!RDEAXrqXQizuhCUFPq:localhost:8800content.bodyhellof*eQ%$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800content.bodyhelloqFeQ%-$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 1qEeQ%-$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 0qDeQ%-$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 7qCeQ%-$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 6qBeQ%-$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 5qAeQ%-$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 4q@eQ%-$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 3q?eQ%-$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 2q>eQ%-$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 1m=eQ%%$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800content.bodyhello, worldg<eQ%$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o!xcdNyJNFEdaBGFycsB:localhost:8800content.bodysyncedg;eQ%$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800content.bodysyncedg:eQ%$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800content.bodysyncedg9eQ%$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800content.bodysyncedh8eQ%$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800content.bodyMessager7eQ%/$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 10q6eQ%-$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 9q5eQ%-$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 8q4eQ%-$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 7q3eQ%-$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 6q2eQ%-$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 5q1eQ%-$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 4q0eQ%-$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 3q/eQ%-$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 2  oM PeQ$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "528", "stream_ordering": 2779}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042935541, "hashes": {"sha256": "AQhgQgGpRKlil21hauS+PyH0uLPr7bThAtMLVaxgRkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cya1JkPH/3KU2a+8MIBOWI2S5xjGYHAF5OnundoFY4TusgRz2fbkXx3qG5uXTJtX0qAsk+4WoWOqjliW22PjBw"}}, "unsigned": {"age_ts": 1570042935541}} OeQ$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "527", "stream_ordering": 2778}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042935054, "hashes": {"sha256": "BypSa/F6z9My8GcmkFfCg1v4YO1GooVgsqq8/ZfXLs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/knvsavv6L6RZ/f2GdfqFBRzcphJTZVI/czDiaTMemdAz/N4/PCk77sKN32xrm09+4+zoqCi86oHHprfCFFFDA"}}, "unsigned": {"age_ts": 1570042935054}} NeQ$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "526", "stream_ordering": 2777}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042934579, "hashes": {"sha256": "2FK2EjztB4dYgZNU7+Z/XuaLeJWhWYmrJqS/hgHUe8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2EX+myV8KTymUP+byaMuEQTSXmm3MzTX/ByObw7fc7VMvH5viga6EK9AhYbMr+ax1y3aEmy9ax2ek22w7vYlAQ"}}, "unsigned": {"age_ts": 1570042934579}} MeQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "525", "stream_ordering": 2776}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042934128, "hashes": {"sha256": "L0YgGRuye06JetD50UOjeAVllG6kfhLSjosd6ZDJZjw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wl/ixOqD1S3CCsWp1pg0ttkZVKD+C3gYO92Iszw2+aHLYP8ao5Bbhkv5BqJdGpZaTmg7Hv2697kSXO9/2q3vAQ"}}, "unsigned": {"age_ts": 1570042934128}} ,NC 8 - { " p  e ZOD9.|#qf VxeL$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYsha256ZKad?HSlN|* VweL$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8sha256Jæ 7%tˆ0qVveL$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0sha256 劰DN,fҬ\Xq45* VueL$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwsha256.+Ľ&A CދTX_AWTG&2F#L#N1VaeL$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8sha256őx)#}-!We IaF\%V`eL$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYsha256fE𗿣G~L}{si?;.f²V_eL$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMsha256 N(mSSl;#fLhx%{#V^eL$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgsha256k_^ôb|-:< zG HV]eL$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwsha256 Cc\K_eMԠuni$L2dV\eL$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Esha256's|ܝ [=#h\aLëV[eL$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Ysha256ZUnqrCƦ oݽ7eeQ$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800~=eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800~<eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~;eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800~:eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800~9eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~8eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800~7eeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800~6eeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~5eeQ$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~4eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800~3eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~2eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~1eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~0eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800~/eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~.eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~-eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~,eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~+eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~*eeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~)eeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~(eeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~'eeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~&eeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~%eeQ$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800 !s 1  & T W fo**9BjymGeQ? $u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibilityeFeQ/ $So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rulesgEeQ3 $ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels DeQ']$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800aCeQ' $T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800m.room.create BeQ']$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800mAeQ? $exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibilitye@eQ/ $GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rulesg?eQ3 $5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels >eQ']$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800a=eQ' $Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create <eQ']$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800 ;eQ']$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829p:eQ))$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800m9eQ? $HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibilitye8eQ/ $_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rulesj7eQ9 $vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_aliasg6eQ3 $9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels 5eQ']$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800a4eQ' $UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800m.room.create 3eQ']$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829 2eQ']$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829m1eQ? $rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibilitye0eQ/ $F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rulesg/eQ3 $IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels .eQ']$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800a-eQ' $8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create ,eQ']$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829 +eQ']$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829m*eQ? $cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibilitye)eQ/ $5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rulesg(eQ3 $jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels 'eQ']$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800  WeQa$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2786}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0"], "type": "m.room.history_visibility", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042940659, "hashes": {"sha256": "Vz12lFUY6FVtP5mJKIO3BH79GPMOOpWCeEgwyorV8/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+2C2fjnVV3IpPvIycvh1DI0i4yZcE7M6yRw1fZuaSSshFZB28WsGjKqbAL7ID3LUvQU34SWqIFSFd+R6ddw5CA"}}, "unsigned": {"age_ts": 1570042940659}}tVeQau$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2785}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE"], "type": "m.room.join_rules", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042939749, "hashes": {"sha256": "4c3sOtDYc4MMSVu6784OyM9oQFFrO+1uTHTPS1VRrfc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cSEg0BBhEvO5SFYYdBPNdT9M7G1RfhYFfvaaDfDUM1ki2AapYS0iH4WJQvXA6lb77GHmO2AAIYzYEMVVrDc7Dg"}}, "unsigned": {"age_ts": 1570042939749}}kUeQac$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2784}{"auth_events": ["$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "type": "m.room.power_levels", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"users": {"@anon-20191002_181700-516:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042939030, "hashes": {"sha256": "+mQtTC0M9OQ4O6bRtEBnu0UO21ACaQHVwUc1bZIaB14"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BFvBbiFU/D7D25WbB5kt38ISWsZ/IInbRHXhAUHWvNc9vKBml+PoaZlUp8vYoX9qCNz7eX59wIPnQej6FRPZCg"}}, "unsigned": {"age_ts": 1570042939030}} 7QQ@B B  D  D  D  F FFHHMQQ?]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAPm Y-?]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZm ?]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXSm?]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBUmB?]!@anon-20191002_181700-551:localhost:8800PDLFVATDIVmL?]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVRm۲=[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGmK-=[!@anon-20191002_181700-54:localhost:8800MQMQOGGONNmK,<Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZSmua=[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQmZ2?]!@anon-20191002_181700-598:localhost:8800TGNIJBJLORm)*?]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKSm)?]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSGm'?]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHWm2(?]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQm&?]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHTmȔ%?]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXTm$?]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPRm,#=[!@anon-20191002_181700-58:localhost:8800XSIUOLPWQXmV1?]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQm޽c"?]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAUm޹!?]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVEm޷ ?]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYCm޵?]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHRm޲?]!@anon-20191002_181700-584:localhost:8800FZKRURXWXEmޘ?]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEmހb?]!@anon-20191002_181700-582:localhost:8800WSKNBNWTARml?]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZmi[?]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOPmU=[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOmUB0?]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBRm??]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSNm+u?]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJBm?]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAUmC?]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOXmr?]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQNm?]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQmݓg?]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPPmo?]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTMm[?]!@anon-20191002_181700-570:localhost:8800ECXFORDQSPm/5=[!@anon-20191002_181700-56:localhost:8800UWHMGOHJLQmQo/?]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQmy?]!@anon-20191002_181700-568:localhost:8800IRGUUINXHFm ?]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNLm ?]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKFmԚ ?]!@anon-20191002_181700-565:localhost:8800MSICJQZBGXm ?]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZmܭn ?]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOMmܘS?]!@anon-20191002_181700-562:localhost:8800RUCUWRMARXm܃?]!@anon-20191002_181700-561:localhost:8800YQDTZKECLGmr?]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEEmd=[!@anon-20191002_181700-55:localhost:8800GJICSOZSSMmN.?]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSm9?]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDAm+?]!@anon-20191002_181700-556:localhost:8800TMQBHREBEOm I INZeQc'$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800{"outlier": false, "stream_ordering": 2789}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "5mQBrbC34++b6V+cHpyH8Oo9StiInZL2jFj4pdo73qs"}, "origin": "localhost:8829", "origin_server_ts": 1570042943127, "prev_events": ["$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8"], "prev_state": [], "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-517:localhost:8829", "state_key": "@anon-20191002_181700-517:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L/8Vbq6BwADrYGvCpgI+vRnNKYetT0N3Cmi5KwwFZdonKiYV8cwalOBemwa0PuRnpC/66nDgQVTu/SvmpyVqAQ"}, "localhost:8829": {"ed25519:a_UxIG": "TJuYvtaDzhUythQPrluKfiIfGEfv8f7aMxw2ai2kSIV1dUsX202PxPXJGbZGZKCTJHgwTmqPfmhw4TbBH/4LDQ"}}, "unsigned": {"age": 180, "replaces_state": "$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo"}}HYeQa$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2788}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo"], "type": "m.room.test", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042942632, "hashes": {"sha256": "i/Fkk8JnOB7Rpum1lO1nusOkNLzKniImDIDq4ty52Yg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t1JGAV0j0/Oxp4/S7haIbjQM9nQPb34EoL3TfyT6R3rPhymgrNYgaJF7zCuMjD4IsWtIyi2xk1RkH6s9A7fYBg"}}, "unsigned": {"age_ts": 1570042942632}}XeQa7$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2787}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU"], "type": "m.room.member", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-517", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-517:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042941901, "hashes": {"sha256": "Y5Yefm+8aGqRFCT9sJTQyaU3NG+KmUdnPTuj3eTEwqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EXih5fMSlEeZ+5FRx4Eh700M0y3RRhzh6snejzQoK65QF6flkgF4Ef7GfMkj54/POlFb6dWKIcxHYSprRX9zDQ"}, "localhost:8829": {"ed25519:a_UxIG": "vWvrnT/ir4/yTmZkEeCdlJ22PoshpruOvUYRbLdcrkfBUAvoepcugJbUwl144ShGSwW1VlbQqXActyizHrZRAg"}}, "unsigned": {"age_ts": 1570042941901, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-516:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-516:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-516", "avatar_url": null}, "sender": "@anon-20191002_181700-516:localhost:8800"}]}} B@pzH> vT D  | J ZhN 6 P  V $ \ *b0"(1e$ljsIx7HQE1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8U1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc w1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc v1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE<1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE;1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE:1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM41e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc x1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4`1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwb1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc 1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc 1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUX1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUW1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUV1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUU1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA 1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA 1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA 1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAw1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAv1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAu1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_471e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_461e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_451e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_441e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4b1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4a1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI -RM H C > 9 4/*|%w rmhc TQe !vRmMcoJDeCupADwqac:localhost:8800$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMTQe !fGkUEndqGrieltwbCh:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0TQe !fGkUEndqGrieltwbCh:localhost:8800$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcTQe !fGkUEndqGrieltwbCh:localhost:8800$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFATQe !fGkUEndqGrieltwbCh:localhost:8800$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcioTQe !fGkUEndqGrieltwbCh:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkTQe !fGkUEndqGrieltwbCh:localhost:8800$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcTQe !atnRTMliktaVUhMVID:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQTQe !atnRTMliktaVUhMVID:localhost:8800$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkTQe !atnRTMliktaVUhMVID:localhost:8800$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwTQe !atnRTMliktaVUhMVID:localhost:8800$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4T Qe !atnRTMliktaVUhMVID:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwT Qe !atnRTMliktaVUhMVID:localhost:8800$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQT Qe !PHkVrXAyfGkFtzSagu:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AT Qe !PHkVrXAyfGkFtzSagu:localhost:8800$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYT Qe !PHkVrXAyfGkFtzSagu:localhost:8800$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8TQe !PHkVrXAyfGkFtzSagu:localhost:8800$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0TQe !PHkVrXAyfGkFtzSagu:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwTQe !PHkVrXAyfGkFtzSagu:localhost:8800$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4TQe !EhFUhsgQbBWmrnGmaz:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0TQe !EhFUhsgQbBWmrnGmaz:localhost:8800$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQTQe!wBkUBAjOznOyxrLchl:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgT~Qe!wBkUBAjOznOyxrLchl:localhost:8800$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAT}Qe!wBkUBAjOznOyxrLchl:localhost:8800$0C1SRZ8JvGiVFmRA6bFujPNnEk5MQr0F0QIlkbvN9N4T|Qe!wBkUBAjOznOyxrLchl:localhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwT{Qe!wBkUBAjOznOyxrLchl:localhost:8800$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XATzQe!wBkUBAjOznOyxrLchl:localhost:8800$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MTyQe!wBkUBAjOznOyxrLchl:localhost:8800$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTETxQe!wBkUBAjOznOyxrLchl:localhost:8800$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgITwQe!wBkUBAjOznOyxrLchl:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfATvQe!wBkUBAjOznOyxrLchl:localhost:8800$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUTuQe!sHRHoXzYrrPSlWBkoh:localhost:8800$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgTtQe!sHRHoXzYrrPSlWBkoh:localhost:8800$bJdU8kuNoDUDs-9w_r_odFPOLVPKMvv2h4etQgGb_hUTsQe!sHRHoXzYrrPSlWBkoh:localhost:8800$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYTrQe!sHRHoXzYrrPSlWBkoh:localhost:8800$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMTqQe!sHRHoXzYrrPSlWBkoh:localhost:8800$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgTpQe!sHRHoXzYrrPSlWBkoh:localhost:8800$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwToQe!sHRHoXzYrrPSlWBkoh:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_ETnQe!sHRHoXzYrrPSlWBkoh:localhost:8800$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2YTmQe!AoAvmnwMkhYBQsbCsL:localhost:8800$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqITlQe!AoAvmnwMkhYBQsbCsL:localhost:8800$0EAuz7NH4mjkAICKvxZCYtE8mAncHER7jU3FSLtXW48   *t^eQau$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2793}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw"], "type": "m.room.join_rules", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042946657, "hashes": {"sha256": "K3f3KM2KA9/4/YUx9zDN6mtaX5+4WBtf5LeRodWRxsQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X74Z66aTjrroOjxVYnilMZFEAIGoGEVBoDDF/SyiN7+8hHumUhTyI9E0LCC5aPpCnUXdj3Ct5CqAdfyUbhHkBg"}}, "unsigned": {"age_ts": 1570042946657}}k]eQac$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2792}{"auth_events": ["$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "type": "m.room.power_levels", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"users": {"@anon-20191002_181700-518:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042945934, "hashes": {"sha256": "UE10KfFKWV6sEW+8GN22y/C+TlrA4bSMJfH/c5YyHXk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mFWp4nHra0axSMJn5bTizHj3iWX1KeTonpPWuRAkMj/ZCg5MX8KmfzAXCTkGoQbuc46fR/Ir6nKFDbtXhCsdAg"}}, "unsigned": {"age_ts": 1570042945934}}v\eQay$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2791}{"auth_events": ["$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y"], "prev_events": ["$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y"], "type": "m.room.member", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-518", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-518:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042945159, "hashes": {"sha256": "mFvOUJQ552br6mfojxtGJgeYG64mqzVRwGljn7EJ07A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GHAKlzcMIjJnUQBarX9NewCObbEyBbidlS1+t1+dtbVyvnGps9afm/GpsDBKAQ7FafbQ7u9EEwsqcdPZQLWKDw"}}, "unsigned": {"age_ts": 1570042945159}}i[eQa_$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2790}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-518:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042944463, "hashes": {"sha256": "XkidZU4b/IetmzGD8fFsHlXSSBA1DX7TYpa1fZ5TCAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KEDXbn1aa11sNbSS4T6NlFFeSGs6KSqTHD4mH/6/cyRLhYu9JQ/ueACWMjo1/tRjuhuUaLwMIy1ESjY6CXAHDg"}}, "unsigned": {"age_ts": 1570042944463}} ~z v r n j fb^ZVRNJFeeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800eeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800eeQ$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800eeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800eeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800eeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~eeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800}eeQ$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800|eeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800{eeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800zeeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800yeeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800xeeQ$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800weeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800veeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800ueeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800teeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800seeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800reeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800qeeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800peeQ$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800oeeQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800neeQ$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800meeQ$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8!sHRHoXzYrrPSlWBkoh:localhost:8800leeQ$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800keeQ$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800jeeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800ieeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800heeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800geeQ$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800 p% r u  ' !*-OX[}pIQ? e !atnRTMliktaVUhMVID:localhost:8800m.room.history_visibility$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkhHQ/ e !atnRTMliktaVUhMVID:localhost:8800m.room.join_rules$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwjGQ3 e !atnRTMliktaVUhMVID:localhost:8800m.room.power_levels$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 FQ']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwdEQ' e !atnRTMliktaVUhMVID:localhost:8800m.room.create$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ DQ']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8ApCQ? e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibility$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYhBQ/ e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rules$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8jAQ3 e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 @Q']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwd?Q' e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.create$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 >Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUp=Q? e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibility$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kh<Q/ e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rules$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0j;Q3 e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk :Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkkd9Q' e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 8Q']e !wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 7Q']e !wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAs6Q))e !wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwp5Q? e !wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibility$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAh4Q/ e !wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rules$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91Mm3Q9 e !wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_alias$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEj2Q3 e !wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 1Q']e !wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAd0Q' e !wBkUBAjOznOyxrLchl:localhost:8800m.room.create$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU8/Q']ee !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY .Q']e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYp-Q? e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibility$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMh,Q/ e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rules$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgj+Q3 e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw *Q']e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E p {  5 1 HGR| {> Q']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-536:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQoQ? e !atnRTMliktaVUhMVID:localhost:8800m.room.history_visibility$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkgQ/ e !atnRTMliktaVUhMVID:localhost:8800m.room.join_rules$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwiQ3 e !atnRTMliktaVUhMVID:localhost:8800m.room.power_levels$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 Q']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwcQ' e !atnRTMliktaVUhMVID:localhost:8800m.room.create$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ Q']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AoQ? e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibility$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYgQ/ e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rules$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8iQ3 e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 Q']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwcQ' e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.create$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUoQ? e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibility$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kgQ/ e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rules$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0iQ3 e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkcQ' e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829$0C1SRZ8JvGiVFmRA6bFujPNnEk5MQr0F0QIlkbvN9N4r Q))e!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwo Q? e!wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibility$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAg Q/ e!wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rules$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MlQ9 e!wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_alias$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEiQ3 e!wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAcQ' e!wBkUBAjOznOyxrLchl:localhost:8800m.room.create$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$bJdU8kuNoDUDs-9w_r_odFPOLVPKMvv2h4etQgGb_hU Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYoQ? e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibility$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM  w^HaeQa$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2796}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY"], "type": "m.room.test", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042949457, "hashes": {"sha256": "QQAmbiQ5CJlSUacuiga2H4Wyp2Db4Vi53CI13s42d/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4ARozCkrWXeUPfPFdR4zRI37oxuG8kszAXjhSCYQ6IXk9fKx/jQHeYIn3ueFXYdk8sNw9qovDkm1JZrwjqdkBw"}}, "unsigned": {"age_ts": 1570042949457}}`eQa7$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2795}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM"], "type": "m.room.member", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-519", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-519:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042948792, "hashes": {"sha256": "MsVI7PUgduC5qdfaFKlfN3lKmhS241ME7L4otbxDvfU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M3rLnAKAPPQXsXGw/ayXYvQB8DSEbOcVVYZ/UPto1+aQCGfTKVu2WlpRRvl3yPDkJ751AcsipI2e94lgwX8+AA"}, "localhost:8829": {"ed25519:a_UxIG": "60mUSa+bYVKzITjfX8pQAwf8uo6Qceke/0n7FtKVx7jrNe0glh2Oo+69XqXRovLloMwQTZYMOETLQ/a13DosCQ"}}, "unsigned": {"age_ts": 1570042948792, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-518:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-518:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-518", "avatar_url": null}, "sender": "@anon-20191002_181700-518:localhost:8800"}]}}_eQa$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2794}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg"], "type": "m.room.history_visibility", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042947431, "hashes": {"sha256": "v9GyRaGAZbOY61WAIhszW+BlAEAqrUlJ98yv0VJPpbc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F1PazqoDDrFAQnn7j5vpa/adg9kkWH+6gQvArZukGFJq50iuDv9g/rUYGkRur0RaFIOugjCQ4sgbnnwq+qIbDA"}}, "unsigned": {"age_ts": 1570042947431}} \P f  x * }%8HL\&e3Q ]$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0m.room.power_levels!PHkVrXAyfGkFtzSagu:localhost:8800mښmڛ@anon-20191002_181700-533:localhost:8800 e'Q ]$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwm.room.member!PHkVrXAyfGkFtzSagu:localhost:8800mژmژ@anon-20191002_181700-533:localhost:8800 e'Q  ]$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4m.room.create!PHkVrXAyfGkFtzSagu:localhost:8800mڕ~mڕ@anon-20191002_181700-533:localhost:8800 ~e'Q ]$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUm.room.member!EhFUhsgQbBWmrnGmaz:localhost:8800mڌmڍ%@anon-20191002_181700-532:localhost:8800,}e?Q ]$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_km.room.history_visibility!EhFUhsgQbBWmrnGmaz:localhost:8800mڈCmڊ@anon-20191002_181700-531:localhost:8800$|e/Q ]$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0m.room.join_rules!EhFUhsgQbBWmrnGmaz:localhost:8800mڅmچ|@anon-20191002_181700-531:localhost:8800&{e3Q ]$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkm.room.power_levels!EhFUhsgQbBWmrnGmaz:localhost:8800mڂhmڃ@anon-20191002_181700-531:localhost:8800 ze'Q ]$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkkm.room.member!EhFUhsgQbBWmrnGmaz:localhost:8800mm@anon-20191002_181700-531:localhost:8800y e'Q  ]$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQm.room.create!EhFUhsgQbBWmrnGmaz:localhost:8800m|Cm|@anon-20191002_181700-531:localhost:8800 xe'Q ]$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgm.room.member!wBkUBAjOznOyxrLchl:localhost:8800m\dm`@anon-20191002_181700-521:localhost:8800 we'Q ]$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAm.room.member!wBkUBAjOznOyxrLchl:localhost:8800mZtm[@anon-20191002_181700-522:localhost:8829!ve)Q ]$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwm.room.aliases!wBkUBAjOznOyxrLchl:localhost:8800mW2mX@anon-20191002_181700-520:localhost:8800,ue?Q ]$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAm.room.history_visibility!wBkUBAjOznOyxrLchl:localhost:8800mSmT@anon-20191002_181700-520:localhost:8800$te/Q ]$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91Mm.room.join_rules!wBkUBAjOznOyxrLchl:localhost:8800mPmQk@anon-20191002_181700-520:localhost:8800)se9Q ]$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEm.room.canonical_alias!wBkUBAjOznOyxrLchl:localhost:8800mLsmM@anon-20191002_181700-520:localhost:8800&re3Q ]$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIm.room.power_levels!wBkUBAjOznOyxrLchl:localhost:8800mI!mJ{@anon-20191002_181700-520:localhost:8800 qe'Q ]$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAm.room.member!wBkUBAjOznOyxrLchl:localhost:8800mEpmG6@anon-20191002_181700-520:localhost:8800p e'Q  ]$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUm.room.create!wBkUBAjOznOyxrLchl:localhost:8800mBLmB@anon-20191002_181700-520:localhost:8800#oe-Q ] $JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dwm.room.redaction!sHRHoXzYrrPSlWBkoh:localhost:8800 m4m8@anon-20191002_181700-519:localhost:8829!ne)Q ] $BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmkm.room.message!sHRHoXzYrrPSlWBkoh:localhost:8800 m4m6u@anon-20191002_181700-519:localhost:8829 me'Q ]$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgm.room.member!sHRHoXzYrrPSlWBkoh:localhost:8800m1bm3@anon-20191002_181700-519:localhost:8829le#Q ]$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8m.room.test!sHRHoXzYrrPSlWBkoh:localhost:8800m/Qm/T@anon-20191002_181700-518:localhost:8800 ke'Q ]$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYm.room.member!sHRHoXzYrrPSlWBkoh:localhost:8800m,m-)@anon-20191002_181700-518:localhost:8800,je?Q ]$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMm.room.history_visibility!sHRHoXzYrrPSlWBkoh:localhost:8800m'gm)h@anon-20191002_181700-518:localhost:8800 C Q   X]>d & j ^ ,% u Cp> v+DQ pjW}K82221e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g ^1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE@1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE=1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM91e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE31e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg"1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUv1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wl1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUq1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye80e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcq1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY?1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY*1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ&1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sy1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U f1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM 1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU^1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0l1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg`1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIn1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgi1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsB1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usn1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ#1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs *1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw *1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM #1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 21e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E '1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 ,1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s u1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA t VoD { P % Z/X- V R '# uJ + uJ  T ) } #wL!sHqFsJ!wNhIsLsgNVGc*Q!yWhIsLsgNVGcnELrDS:localhost:8800CC*Q!yWhIsLsgNVGcnELrDS:localhost:8800BB*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!yWhIsLsgNVGcnELrDS:localhost:8800DD*Q!yfizglmCXdcqCgDrTr:localhost:8800 { {*Q!yfizglmCXdcqCgDrTr:localhost:8800 z z*Q!yfizglmCXdcqCgDrTr:localhost:8800 y y*Q!yfizglmCXdcqCgDrTr:localhost:8800 x x*Q!yfizglmCXdcqCgDrTr:localhost:8800 w w*Q!yfizglmCXdcqCgDrTr:localhost:8800 v v*Q!yfizglmCXdcqCgDrTr:localhost:8800 u u*Q!yfizglmCXdcqCgDrTr:localhost:8800 t t(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!yWhIsLsgNVGcnELrDS:localhost:8800?? N*Q!yWhIsLsgNVGcnELrDS:localhost:8800FF*Q!yWhIsLsgNVGcnELrDS:localhost:8800EE(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!zHBgbzUZHshNGZvIBS:localhost:8800 A A*Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ @*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? ?*Q!zHBgbzUZHshNGZvIBS:localhost:8800 > >*Q!zHBgbzUZHshNGZvIBS:localhost:8800 = =*Q!zHBgbzUZHshNGZvIBS:localhost:8800 < <*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; ;*Q!zHBgbzUZHshNGZvIBS:localhost:8800 : :*Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 9*Q!zHBgbzUZHshNGZvIBS:localhost:8800 8 8V*Q!yNfCaBMPezurwkJRAX:localhost:8800oo*Q!yNfCaBMPezurwkJRAX:localhost:8800nn*Q!yNfCaBMPezurwkJRAX:localhost:8800mm*Q!yNfCaBMPezurwkJRAX:localhost:8800ll*Q!yNfCaBMPezurwkJRAX:localhost:8800kk*Q!yNfCaBMPezurwkJRAX:localhost:8800jj*Q!yWhIsLsgNVGcnELrDS:localhost:8800TT*Q!yWhIsLsgNVGcnELrDS:localhost:8800MM*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yWhIsLsgNVGcnELrDS:localhost:8800AA*Q!yWhIsLsgNVGcnELrDS:localhost:8800@@*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800  *Q!zFdNewlKnUiMBxnYrN:localhost:8800  *Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!yfizglmCXdcqCgDrTr:localhost:8800 s s*Q!yfizglmCXdcqCgDrTr:localhost:8800 r r*Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 0*Q!yTQmLDAxZscWKLMSWh:localhost:8800 / /*Q!yTQmLDAxZscWKLMSWh:localhost:8800 . .*Q!yTQmLDAxZscWKLMSWh:localhost:8800 - -*Q!yTQmLDAxZscWKLMSWh:localhost:8800 , ,*Q!yTQmLDAxZscWKLMSWh:localhost:8800 + +*Q!yTQmLDAxZscWKLMSWh:localhost:8800 * **Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) )*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( (*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' '*Q!yTQmLDAxZscWKLMSWh:localhost:8800 & &*Q!yTQmLDAxZscWKLMSWh:localhost:8800 % %*Q!yTQmLDAxZscWKLMSWh:localhost:8800 $ ${ ; H(;ieeQa_$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2800}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-520:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042954316, "hashes": {"sha256": "PZN/99Vk+DNPsErSYaYOCDZWFxcDborvuc9ibbtOg8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PFTnL5V7YIYQh8Ke13laPlWZlr3jexcDw/zyGna/JQF6R3plj/j9eMgaEhXDKf6wwGpV9v9TbohmOk2ds3qkCQ"}}, "unsigned": {"age_ts": 1570042954316}}&deQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw!sHRHoXzYrrPSlWBkoh:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 2799}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg"], "content": {}, "depth": 10, "hashes": {"sha256": "nQN3+lD5hjtH7n5ZI2Xc22LSKS49CGBH/m9T4YxKsvM"}, "origin": "localhost:8829", "origin_server_ts": 1570042950827, "prev_events": ["$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk"], "prev_state": [], "redacts": "$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-519:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "XuDEHIGU5V2CEIWCWb/lZpFkQ8exVs2UF+5Zj/HBxJe/6Gyr4BzXcv+H73SWWvsKZYyTN+/CHOs3mrvCkK2nBA"}}, "unsigned": {"age_ts": 1570042950827}}&LceQc#$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800{"outlier": false, "stream_ordering": 2798}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg"], "content": {}, "depth": 9, "hashes": {"sha256": "w4/U5PBmojLjFfp9AmhbTdgHJLh7Nv0joNp42RnxNAs"}, "origin": "localhost:8829", "origin_server_ts": 1570042950810, "prev_events": ["$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg"], "prev_state": [], "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-519:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "rkRNsApZoSOPgpTGfhZCcEsgg75s/nuJxR/xiY8t4VrGhGbbLexZG7H0gTKhocupOZgD1XaqmRgQppRQd7LGDg"}}, "unsigned": {"age_ts": 1570042950810}}4beQ1#$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2797}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-519", "membership": "join"}, "depth": 8, "hashes": {"sha256": "hFYvgnwKwOhUKrJvG6KdRnK9h+fu+IrkJj9jPfWcU1M"}, "origin": "localhost:8829", "origin_server_ts": 1570042949986, "prev_events": ["$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8"], "prev_state": [], "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-519:localhost:8829", "state_key": "@anon-20191002_181700-519:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P35SvTNyWyBDhBVrlTih8H8uZGIw2vAh5vDvgNoFdQK2Vxkorg6tUXUarN/T4IMEvG6LQHzXafGH06w55+LjBw"}, "localhost:8829": {"ed25519:a_UxIG": "g4QmPMGBO0qWaLHZRggg0YNl4JIqYo/K8zB4KJoVkL2u8QUBn2AZ1VBK3BN1UPKaAzmPhAx8BR7ZZWomqTu3Cw"}}, "unsigned": {"age": 109, "replaces_state": "$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY"}} a} { y w u sqomkigeca~beeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800~aeeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~`eeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800~_eeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800~^eeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~]eeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800~\eeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800~[eeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~ZeeQ$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~YeeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800~XeeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~WeeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~VeeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800~UeeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~TeeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~SeeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~ReeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~QeeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~PeeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~OeeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~NeeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~MeeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~LeeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~KeeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~JeeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~IeeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~HeeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~GeeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~FeeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~EeeQ$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~DeeQ$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800 Dj8p> v D  | J  P  W % ] +c1i7o= wE}KQ1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 61e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw /1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1ky1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw=1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk61e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI-1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0x1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcl1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXop0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gN1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko/1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM,1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw~1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g @1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo#1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIT1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0Z1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 0e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUF1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM421e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE`1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcC1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAS1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIV1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Yb1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ 1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI g1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8i1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg;1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc  IvI}W* ^ % z A  Y  q 7 O g-f3Um3W{Mf8 R$,IC)#__ANON__-24:localhost:8800localhost:8800,HC)#__ANON__-23:localhost:8800localhost:8800,GC)#__ANON__-22:localhost:8800localhost:8800,FC)#__ANON__-21:localhost:8800localhost:8800,EC)#__ANON__-20:localhost:8800localhost:8800,DC)#__ANON__-19:localhost:8800localhost:8800,CC)#__ANON__-18:localhost:8800localhost:8800,BC)#__ANON__-17:localhost:8800localhost:8800,AC)#__ANON__-16:localhost:8800localhost:8800,@C)#__ANON__-15:localhost:8800localhost:8800;?a)#publicroomalias_with_topic:localhost:8800localhost:8800@>k)#publicroomalias_with_name_topic:localhost:8800localhost:88008=[)#publicroomalias_no_name:localhost:8800localhost:8800,<C)#__ANON__-14:localhost:8800localhost:8800,;C)#__ANON__-13:localhost:8800localhost:88008:[)#test-20191002_181700-42:localhost:8800localhost:880089[)#test-20191002_181700-41:localhost:8800localhost:880088[)#test-20191002_181700-40:localhost:8800localhost:8800,7C)#__ANON__-12:localhost:8800localhost:880086[)#test-20191002_181700-39:localhost:8800localhost:880085[)#test-20191002_181700-38:localhost:8800localhost:880084[)#test-20191002_181700-37:localhost:8800localhost:880083[)#test-20191002_181700-36:localhost:8800localhost:880082[)#test-20191002_181700-35:localhost:8800localhost:880081[)#test-20191002_181700-34:localhost:8800localhost:880080[)#test-20191002_181700-33:localhost:8800localhost:88008/[)#test-20191002_181700-32:localhost:8800localhost:88008.[)#test-20191002_181700-31:localhost:8800localhost:88008-[)#test-20191002_181700-30:localhost:8800localhost:88008,[)#test-20191002_181700-29:localhost:8800localhost:8800.+G)#worldreadable:localhost:8800localhost:88001*M)#nonworldreadable:localhost:8800localhost:8800-)E)#listingtest0:localhost:8800localhost:8800-(E)#listingtest2:localhost:8800localhost:8800-'E)#listingtest1:localhost:8800localhost:88008&[)#test-20191002_181700-28:localhost:8800localhost:88008%[)#test-20191002_181700-27:localhost:8800localhost:88008$[)#test-20191002_181700-26:localhost:8800localhost:88008#[)#test-20191002_181700-25:localhost:8800localhost:88008"[)#test-20191002_181700-24:localhost:8800localhost:88008![)#test-20191002_181700-23:localhost:8800localhost:88008 [)#test-20191002_181700-22:localhost:8800localhost:88008[)#test-20191002_181700-21:localhost:8800localhost:88008[)#test-20191002_181700-20:localhost:8800localhost:88008[)#test-20191002_181700-19:localhost:8800localhost:88008[)#test-20191002_181700-18:localhost:8800localhost:88008[)#test-20191002_181700-17:localhost:8800localhost:88008[)#test-20191002_181700-16:localhost:8800localhost:88008[)#test-20191002_181700-15:localhost:8800localhost:88008[)#test-20191002_181700-14:localhost:8800localhost:88008[)#test-20191002_181700-13:localhost:8800localhost:88008[)#test-20191002_181700-12:localhost:8800localhost:88008[)#test-20191002_181700-11:localhost:8800localhost:88008[)#test-20191002_181700-10:localhost:8800localhost:88007Y)#test-20191002_181700-9:localhost:8800localhost:88007Y)#test-20191002_181700-8:localhost:8800localhost:88007Y)#test-20191002_181700-7:localhost:8800localhost:88007Y)#test-20191002_181700-6:localhost:8800localhost:88007Y)#test-20191002_181700-5:localhost:8800localhost:88007Y)#test-20191002_181700-4:localhost:8800localhost:8800+ A)#__ANON__-9:localhost:8800localhost:88007 Y)#test-20191002_181700-3:localhost:8800localhost:8800+ A)#__ANON__-8:localhost:8800localhost:8800+ A)#__ANON__-5:localhost:8800localhost:8800$ 3)#☕:localhost:8800localhost:88007Y)#test-20191002_181700-2:localhost:8800localhost:88007Y)#test-20191002_181700-1:localhost:8800localhost:8800+A)#__ANON__-4:localhost:8800localhost:8800+A)#__ANON__-3:localhost:8800localhost:8800+A)#__ANON__-2:localhost:8800localhost:8800+A)#__ANON__-1:localhost:8800localhost:8800+A)#__ANON__-0:localhost:8800localhost:8800.G)#30room-create:localhost:8800localhost:8800 P^$P3QQ)#astest-__ANON__-31:localhost:8800localhost:88008P[)#test-20191002_181700-47:localhost:8800localhost:8800)OC##__ANON__-26:localhost:8800example.org8N[)#test-20191002_181700-46:localhost:8800localhost:88008M[)#test-20191002_181700-45:localhost:8800localhost:88008L[)#test-20191002_181700-44:localhost:8800localhost:8800,KC)#__ANON__-25:localhost:8800localhost:88008J[)#test-20191002_181700-43:localhost:8800localhost:8800 4 h< p d]c@anon-20191002_181700-555:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgo127.0.0.1d]c@anon-20191002_181700-552:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07Ao127.0.0.1d]c@anon-20191002_181700-551:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_Qo127.0.0.1d]c@anon-20191002_181700-549:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-Fxgfwo127.0.0.1a[a@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaUQ6XkF1QW4wajMyUC1JLgowMDJmc2lnbmF0dXJlIE-_kuf73Jp-vYVvHnm5pGZPUIVOn9-qpj3OQ8fgERaZCg127.0.0.1,a[a@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCg127.0.0.1-d]c@anon-20191002_181700-550:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwo127.0.0.1d]c@anon-20191002_181700-548:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6go127.0.0.1d]c@anon-20191002_181700-545:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQo127.0.0.1d]c@anon-20191002_181700-543:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgo127.0.0.1d]c@anon-20191002_181700-554:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgo127.0.0.1  }tieQau$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2804}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE"], "type": "m.room.join_rules", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042957973, "hashes": {"sha256": "XW4CsnGCu5OyHka/EvzJCwuvTjX8FDxz3mzze2A2RWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xsXTdIQELQ2nrRBCeuR4wVnETh64bXf6/91QMdFLKZenu4znbfmiqMOG0X7tO9TqG8tPy5/B9q7lLHgMim5RBw"}}, "unsigned": {"age_ts": 1570042957973}}heQa9$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2803}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI"], "type": "m.room.canonical_alias", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"alias": "#test-20191002_181700-43:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042956915, "hashes": {"sha256": "ldYu/JS9Mr6QunMoSIu99otJBKtz5XctaDoaIYin+qU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Il7ybsNv/oz0ivFZZdOsU8o1jfBuzXiAcBdukRixTW+YLplcSze+6dWBKLCmoBvLLKWMxaGIca362X8/TycuBw"}}, "unsigned": {"age_ts": 1570042956915}}kgeQac$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2802}{"auth_events": ["$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "type": "m.room.power_levels", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"users": {"@anon-20191002_181700-520:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042956065, "hashes": {"sha256": "+Ps17FpY76uTrQrme2CiTq3ltxPK+yG5wn0OcZKIn64"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FXS2WEPn1pjKxIssxicY4Qfnw++yUF+/eQQ5vcl56F9WvDtPF216qH1kHHE4Fj0RNB/w0woXmdmrsVwsya2LAg"}}, "unsigned": {"age_ts": 1570042956065}}vfeQay$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2801}{"auth_events": ["$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU"], "prev_events": ["$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU"], "type": "m.room.member", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-520", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-520:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042955120, "hashes": {"sha256": "SSghDA7s88uvH9Q/LqG/FTmz6If3TY/nwZmnfCBlXhI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gpxYD67zo5P8W81tiZLMY+1XGUIkBZSkzdMuNqQM7DKisZK1dL0wUx1KZhs9oMW4LkdRetfPwg5y9xy5ukcTDQ"}}, "unsigned": {"age_ts": 1570042955120}}  w]VmeQa9$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 513, "stream_ordering": 2808}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M"], "prev_events": ["$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw"], "type": "m.room.member", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-521:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-521", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-521:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042960996, "hashes": {"sha256": "MqL78Dyx/ZnSsiaAjTHrC+plcdas2m8kbHHSdyoyVuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t9E/eMncsQgW1IHddZ/kEHr2K6+R1aSEcMwgnSRdruFlw/TQe/SGwBe781RL44Vz1TFW4VmzV1FgVFN2hDgWDg"}}, "unsigned": {"age_ts": 1570042960996}}rleQ1$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2807}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-522", "membership": "join"}, "depth": 8, "hashes": {"sha256": "cpfsy/8w+Mb7WXGeqaWfqLiAncDgzFOzbCBgv+3QS4s"}, "origin": "localhost:8829", "origin_server_ts": 1570042960500, "prev_events": ["$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw"], "prev_state": [], "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-522:localhost:8829", "state_key": "@anon-20191002_181700-522:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Dw7MVm5IkQXDPl+BeECG9cUTkWi8DG4BHD52zhW6OP9uTzExrydLzQPGG1LDLoOtE9cFEVyhiI7f2jJMtIoCw"}, "localhost:8829": {"ed25519:a_UxIG": "U6VQH8S4WNcjOPVDtWG+/KpNK09I3KnK2AGalpigs0jSlRLOfCxmtcGabwt+Uyj3nRa1y/jVB1/deJHfdZhkDg"}}, "unsigned": {"age": 170}} keQaM$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2806}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA"], "type": "m.room.aliases", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"aliases": ["#test-20191002_181700-43:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042959666, "hashes": {"sha256": "+DidC0CKJe5X8Kgo1J3fhGND3JMyDI5H+eV3+UeomSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cCI13ShJVsjMYfmJhjpfqUNyqw1CqZKBjsLBnF8cxRTSA/SToixHueo91/49LAmyaG9BBuOah3Vl9jPrusLVCQ"}}, "unsigned": {"age_ts": 1570042959666}}jeQa$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2805}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M"], "type": "m.room.history_visibility", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042958731, "hashes": {"sha256": "FfX55ijdM1bX9vnXhDy6MjfdRK6Sic6KhHcIUk/TOgg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sdq2EBkAf4s9szOSpjPFCuR7UmjiIsBC1+/K9hYi4JsNalbgbpFvAaQI48cHpILNBvZV0KI3lspi+M4jJuZ7DA"}}, "unsigned": {"age_ts": 1570042958731}} M> D  Y | J    Q  W_ % ] +j82 j8 r'S@xF- vM!cpp1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM ~1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic h1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw g1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 421e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh81e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f81e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s`1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEww1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU _1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSki1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4l1e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4'0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk61e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcd0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT471e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMk1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks@1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s;1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0E1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g N1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIy1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4%1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcK1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc<1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cS1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo-1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc =1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 81e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo 1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY 1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc+1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8q1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE A1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o(1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4<1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E{1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg }Lwj]%K v D  | J  Q P  E0 V8 $  p+W \ *bi7> p? }1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog #1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I81e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ 1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUc1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsl1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkId1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg +1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc 1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ V1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIH1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF440e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ#1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp41e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYy1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo91e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI81e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc81e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8 1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwR1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAX1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo%1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s}1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIs1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzoq1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzEm1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ 1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAY1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo N1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw 1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQX1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 l9r  V :qS5lE{ e]]Q=$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM@anon-20191002_181700-546:localhost:8829@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800inviteanon-20191002_181700-546Cz e]]Q=$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590@anon-20191002_181700-545:localhost:8800@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800joinanon-20191002_181700-545Cy e]]Q=$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4@anon-20191002_181700-544:localhost:8829@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800joinanon-20191002_181700-544Ex e]]Q=$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4@anon-20191002_181700-544:localhost:8829@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800inviteanon-20191002_181700-544Cw e]]Q=$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI@anon-20191002_181700-543:localhost:8800@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800joinanon-20191002_181700-543Cv e]]Q=$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA@anon-20191002_181700-542:localhost:8829@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800joinanon-20191002_181700-542Eu e]]Q=$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U@anon-20191002_181700-542:localhost:8829@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800inviteanon-20191002_181700-542Ct e]]Q=$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg@anon-20191002_181700-541:localhost:8800@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800joinanon-20191002_181700-541Cs e]]Q=$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0@anon-20191002_181700-540:localhost:8829@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800joinanon-20191002_181700-540Er e]]Q=$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck@anon-20191002_181700-540:localhost:8829@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800inviteanon-20191002_181700-540Cq e]]Q=$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8@anon-20191002_181700-539:localhost:8800@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800joinanon-20191002_181700-539Cp e]]Q=$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0@anon-20191002_181700-538:localhost:8800@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800joinanon-20191002_181700-538Co e]]Q=$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk@anon-20191002_181700-537:localhost:8800@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800joinanon-20191002_181700-537Cn e]]Q=$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ@anon-20191002_181700-536:localhost:8800@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800joinanon-20191002_181700-536Cm e]]Q=$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw@anon-20191002_181700-535:localhost:8800@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800joinanon-20191002_181700-535Cl e]]Q=$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A@anon-20191002_181700-534:localhost:8800@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800joinanon-20191002_181700-534Ck e]]Q=$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw@anon-20191002_181700-533:localhost:8800@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800joinanon-20191002_181700-533Cj e]]Q=$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU@anon-20191002_181700-532:localhost:8800@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800joinanon-20191002_181700-532Ci e]]Q=$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk@anon-20191002_181700-531:localhost:8800@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800joinanon-20191002_181700-531Ch e]]Q=$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg@anon-20191002_181700-521:localhost:8800@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800joinanon-20191002_181700-521 d@hdo z 8 C H p {Z# HeQ']$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829joinpGeQ))$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800mFeQ? $HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibilityeEeQ/ $_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rulesjDeQ9 $vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_aliasgCeQ3 $9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels BeQ']$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800joinmZeQ? $qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800m.room.history_visibilityeYeQ/ $FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800m.room.join_rulesgXeQ3 $OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800m.room.power_levels WeQ']$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800joinaVeQ' $0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800m.room.create UeQ']$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800joinmTeQ? $u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibilityeSeQ/ $So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rulesgReQ3 $ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels QeQ']$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800joinaPeQ' $T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800m.room.create OeQ']$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800joinmNeQ? $exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibilityeMeQ/ $GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rulesgLeQ3 $5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels KeQ']$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800joinaJeQ' $Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create IeQ']$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800join $ 6 H D @ <84EWi{ ;Q]e!sfXbvAcOUJhzGwWEpZ:localhost:8800@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kinvite:Q]e!sfXbvAcOUJhzGwWEpZ:localhost:8800@anon-20191002_181700-209:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kjoini9Q1e!YufaOfAlruTdjyUCwO:localhost:8800@34:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Mjoin8Q]e!YufaOfAlruTdjyUCwO:localhost:8800@anon-20191002_181700-208:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUjoini7Q1e!ifQxHmNAcSSGHVMjfi:localhost:8800@33:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIjoin6Q]e!ifQxHmNAcSSGHVMjfi:localhost:8800@anon-20191002_181700-207:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgjoini5Q1e!EABRjdYuYumMhLSwIa:localhost:8800@32:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsjoin4Q]e!EABRjdYuYumMhLSwIa:localhost:8800@anon-20191002_181700-206:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMjoini3Q1e!FIOuvzpMhoERunVYYA:localhost:8800@31:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEjoin2Q]e!FIOuvzpMhoERunVYYA:localhost:8800@anon-20191002_181700-205:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYjoini1Q1e!zNBpypJDRMlBdOcLlW:localhost:8800@30:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYjoin0Q]e!zNBpypJDRMlBdOcLlW:localhost:8800@anon-20191002_181700-204:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8join/Q]e!TcaopYfMoJFEcjYRzJ:localhost:8800@anon-20191002_181700-203:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Ejoinj.Q1e!BckZfhQgrcyiMhEAAJ:localhost:8800@28:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkleave-Q]e!BckZfhQgrcyiMhEAAJ:localhost:8800@anon-20191002_181700-202:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYjoin,Q]e!KXMUzALpMMMKqoQXUS:localhost:8800@anon-20191002_181700-201:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAjoin+Q]e!NfaPEGKjnUDUTavzol:localhost:8800@anon-20191002_181700-200:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4join*Q]e!JGhlAUflyNxErGGZZu:localhost:8800@anon-20191002_181700-199:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsjoin)Q]e!tkajvIKHoOMWGsReBs:localhost:8800@anon-20191002_181700-198:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0join(Q]e!fcdNYFWFyxmdpKAknc:localhost:8800@anon-20191002_181700-197:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIjoin'Q]e!MWCLSWWGdWcSivNVLI:localhost:8800@anon-20191002_181700-195:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cjoin&Q]e!erBPdgtUsiOfIKUkho:localhost:8800@anon-20191002_181700-194:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEjoin%Q]e!dWgOTucBVQBKZjfndN:localhost:8800@anon-20191002_181700-193:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQjoin$Q]e!hSzBsirdPWHtVjagXn:localhost:8800@anon-20191002_181700-192:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMjoin#Q]e!mfzIRinBAGGrZvQAuI:localhost:8800@anon-20191002_181700-191:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwjoini"Q1e!FPcQcheNebvdFvmOnr:localhost:8800@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kukjoin!Q]e!FPcQcheNebvdFvmOnr:localhost:8800@anon-20191002_181700-190:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcjoini Q1e!vOfeZvbtpuHfoqShFl:localhost:8800@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUjoinQ]e!vOfeZvbtpuHfoqShFl:localhost:8800@anon-20191002_181700-189:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNojoiniQ1e!EieRtaCFZJJCIOkRPp:localhost:8800@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsjoinQ]e!EieRtaCFZJJCIOkRPp:localhost:8800@anon-20191002_181700-188:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEjoiniQ1e!NQgavrmiCPUVaVjssy:localhost:8800@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukjoin g i 4 ih5 g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5Jkowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgo!1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQo g * T~=gg]!c@anon-20191002_181700-535:localhost:8800RWVMFNQDZQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQog]!c@anon-20191002_181700-538:localhost:8800PJMZGLQCBZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAog]!c @anon-20191002_181700-534:localhost:8800RHYMUWAILZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDExTDdPNGoubjk7Tko2WkMKMDAyZnNpZ25hdHVyZSAXsnk-cD970UVzv1G8lP_F8ew18BlEvFdq7W40ykYUGQog]!c @anon-20191002_181700-533:localhost:8800TYQEWPDZRPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAog]!c @anon-20191002_181700-534:localhost:8800FBPWXONJWMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgog]!c @anon-20191002_181700-531:localhost:8800HVNAEYFAYKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88Aog]!c@anon-20191002_181700-532:localhost:8800FXXARIFXSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwog~]!c@anon-20191002_181700-529:localhost:8800WXKOXWYNOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgog}]!c@anon-20191002_181700-527:localhost:8800BACKHRSCZNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgog|]!c@anon-20191002_181700-526:localhost:8800CNSENJMXXVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAog{]!c@anon-20191002_181700-525:localhost:8800DQXQXDJYETMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQo 8l D `8t]c!E@anon-20191002_181700-536:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG44ZXZhVmlpTmw4RXZVcDkKMDAyZnNpZ25hdHVyZSCJxE2NCLxCR97piOWjvXRyqFAiHMKXYXO9_HBtg3UnTQoABPPMMQYEY127.0.0.1Perl + Net::Async::HTTP/0.44m*s]c!E@anon-20191002_181700-535:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQoRWVMFNQDZQ127.0.0.1Perl + Net::Async::HTTP/0.44mگ҃r]c!E@anon-20191002_181700-534:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgoFBPWXONJWM127.0.0.1Perl + Net::Async::HTTP/0.44mڤq]c!E@anon-20191002_181700-533:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAoTYQEWPDZRP127.0.0.1Perl + Net::Async::HTTP/0.44mڕ(p]c!E@anon-20191002_181700-532:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwoFXXARIFXSS127.0.0.1Perl + Net::Async::HTTP/0.44mڋYo]c!E@anon-20191002_181700-531:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88AoHVNAEYFAYK127.0.0.1Perl + Net::Async::HTTP/0.44m{n]c!E@anon-20191002_181700-529:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgoWXKOXWYNOL127.0.0.1Perl + Net::Async::HTTP/0.44mvm]c!E@anon-20191002_181700-527:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgoBACKHRSCZN127.0.0.1Perl + Net::Async::HTTP/0.44mr2l]c!E@anon-20191002_181700-526:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAoCNSENJMXXV127.0.0.1Perl + Net::Async::HTTP/0.44mok]c!E@anon-20191002_181700-525:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQoDQXQXDJYET127.0.0.1Perl + Net::Async::HTTP/0.44ml Bhq<a,Z% Q  L  z G  s > l 7 c.Z'SJxCh3_*4]@anon-24]@anon-20191002_181700-583:localhost:8800m44]@anon-20191002_181700-524:localhost:8800m44]@anon-20191002_181700-523:localhost:8800m44]@anon-20191002_181700-521:localhost:8800m44]@anon-20191002_181700-520:localhost:8800m42[@anon-20191002_181700-51:localhost:8800m4"4]@anon-20191002_181700-518:localhost:8800m44]@anon-20191002_181700-516:localhost:8800m44]@anon-20191002_181700-514:localhost:8800m44]@anon-20191002_181700-582:localhost:8800m44]@anon-20191002_181700-581:localhost:8800m44]@anon-20191002_181700-580:localhost:8800m42[@anon-20191002_181700-57:localhost:8800m4*4]@anon-20191002_181700-579:localhost:8800m44]@anon-20191002_181700-578:localhost:8800m44]@anon-20191002_181700-577:localhost:8800m44]@anon-20191002_181700-576:localhost:8800m44]@anon-20191002_181700-575:localhost:8800m44]@anon-20191002_181700-574:localhost:8800m44]@anon-20191002_181700-573:localhost:8800m44]@anon-20191002_181700-572:localhost:8800m44]@anon-20191002_181700-571:localhost:8800m44]@anon-20191002_181700-570:localhost:8800m42[@anon-20191002_181700-56:localhost:8800m4)4]@anon-20191002_181700-569:localhost:8800m44]@anon-20191002_181700-568:localhost:8800m44]@anon-20191002_181700-567:localhost:8800m44]@anon-20191002_181700-566:localhost:8800m44]@anon-20191002_181700-565:localhost:8800m44]@anon-20191002_181700-564:localhost:8800m44]@anon-20191002_181700-563:localhost:8800m44]@anon-20191002_181700-562:localhost:8800m44]@anon-20191002_181700-561:localhost:8800m44]@anon-20191002_181700-560:localhost:8800m42[@anon-20191002_181700-55:localhost:8800m4(4]@anon-20191002_181700-558:localhost:8800m44]@anon-20191002_181700-557:localhost:8800m44]@anon-20191002_181700-556:localhost:8800m44]@anon-20191002_181700-555:localhost:8800m44]@anon-20191002_181700-554:localhost:8800m44]@anon-20191002_181700-552:localhost:8800m44]@anon-20191002_181700-551:localhost:8800m44]@anon-20191002_181700-550:localhost:8800m42[@anon-20191002_181700-54:localhost:8800m4'2[@anon-20191002_181700-54:localhost:8800m4&4]@anon-20191002_181700-549:localhost:8800m44]@anon-20191002_181700-548:localhost:8800m44]@anon-20191002_181700-545:localhost:8800m44]@anon-20191002_181700-543:localhost:8800m44]@anon-20191002_181700-541:localhost:8800m42[@anon-20191002_181700-53:localhost:8800m4%2[@anon-20191002_181700-53:localhost:8800m4$4]@anon-20191002_181700-539:localhost:8800m44]@anon-20191002_181700-538:localhost:8800m44]@anon-20191002_181700-537:localhost:8800m44]@anon-20191002_181700-536:localhost:8800m44]@anon-20191002_181700-535:localhost:8800m44]@anon-20191002_181700-534:localhost:8800m44]@anon-20191002_181700-533:localhost:8800m44]@anon-20191002_181700-532:localhost:8800m44]@anon-20191002_181700-531:localhost:8800m42[@anon-20191002_181700-52:localhost:8800m4#4]@anon-20191002_181700-529:localhost:8800m44]@anon-20191002_181700-527:localhost:8800m44]@anon-20191002_181700-526:localhost:8800m44]@anon-20191002_181700-525:localhost:8800m4 ?CG K O  f ' j + n /r3v7z;~?CGK O]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOHm4<=]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTLm4<<]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQAm4<;]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQMm4<:]!@anon-20191002_181700-501:localhost:8800YBYGOFEONKm4<9]!@anon-20191002_181700-499:localhost:8800VXSECXNERAm4 p{_A#qS5lN0|`B$ p R 4  d F ( v X :  m O 1   a C % qU7eG+ wY;kM/aC' sU7 5 ! 2=anon-20191002_181700-556-=anon-20191002_181700-555,=anon-20191002_181700-554+=anon-20191002_181700-552*=anon-20191002_181700-551)=anon-20191002_181700-550(;anon-20191002_181700-55L=anon-20191002_181700-549'=anon-20191002_181700-548&=anon-20191002_181700-545%=anon-20191002_181700-543$=anon-20191002_181700-541#;anon-20191002_181700-54K=anon-20191002_181700-539"=anon-20191002_181700-538 =anon-20191002_181700-649=anon-20191002_181700-648=anon-20191002_181700-647=anon-20191002_181700-646=anon-20191002_181700-645=anon-20191002_181700-644=anon-20191002_181700-643=anon-20191002_181700-642~=anon-20191002_181700-641}=anon-20191002_181700-640|;anon-20191002_181700-64V=anon-20191002_181700-639{=anon-20191002_181700-638z=anon-20191002_181700-637y=anon-20191002_181700-636x=anon-20191002_181700-635w=anon-20191002_181700-634v=anon-20191002_181700-633u=anon-20191002_181700-632t=anon-20191002_181700-631s=anon-20191002_181700-630r;anon-20191002_181700-63T=anon-20191002_181700-628q=anon-20191002_181700-627p=anon-20191002_181700-626o=anon-20191002_181700-625n=anon-20191002_181700-624m=anon-20191002_181700-623l=anon-20191002_181700-622k=anon-20191002_181700-621j=anon-20191002_181700-620i;anon-20191002_181700-62S=anon-20191002_181700-619h=anon-20191002_181700-618g=anon-20191002_181700-617f=anon-20191002_181700-616e=anon-20191002_181700-615d=anon-20191002_181700-614c=anon-20191002_181700-613b=anon-20191002_181700-612a=anon-20191002_181700-611`=anon-20191002_181700-610_;anon-20191002_181700-61R=anon-20191002_181700-609^=anon-20191002_181700-608]=anon-20191002_181700-606[=anon-20191002_181700-605Z=anon-20191002_181700-604\=anon-20191002_181700-603X=anon-20191002_181700-602Y=anon-20191002_181700-601V=anon-20191002_181700-600W;anon-20191002_181700-60Q9anon-20191002_181700-6=anon-20191002_181700-598T=anon-20191002_181700-597S=anon-20191002_181700-596R=anon-20191002_181700-595Q=anon-20191002_181700-593P=anon-20191002_181700-591O=anon-20191002_181700-590N;anon-20191002_181700-59P=anon-20191002_181700-589M=anon-20191002_181700-588L=anon-20191002_181700-587K=anon-20191002_181700-586J=anon-20191002_181700-585I=anon-20191002_181700-584H=anon-20191002_181700-583G=anon-20191002_181700-582F=anon-20191002_181700-581E=anon-20191002_181700-580D;anon-20191002_181700-58O=anon-20191002_181700-579C=anon-20191002_181700-578B=anon-20191002_181700-577A=anon-20191002_181700-576@=anon-20191002_181700-575?=anon-20191002_181700-574>=anon-20191002_181700-573==anon-20191002_181700-572<=anon-20191002_181700-571;=anon-20191002_181700-570:;anon-20191002_181700-57N=anon-20191002_181700-5699=anon-20191002_181700-5688=anon-20191002_181700-5677=anon-20191002_181700-5666=anon-20191002_181700-5655=anon-20191002_181700-5644=anon-20191002_181700-5633=anon-20191002_181700-5622=anon-20191002_181700-5611=anon-20191002_181700-5600;anon-20191002_181700-56M=anon-20191002_181700-558/=anon-20191002_181700-557. H[$H l 5 Y " } F  j 3 W {D h1UyB f/yB f/S4b==anon-20191002_181700-613anon-20191002_181700-6134a==anon-20191002_181700-612anon-20191002_181700-6124`==anon-20191002_181700-611anon-20191002_181700-6114_==anon-20191002_181700-610anon-20191002_181700-6104^==anon-20191002_181700-609anon-20191002_181700-6094]==anon-20191002_181700-608anon-20191002_181700-6084\==anon-20191002_181700-604anon-20191002_181700-6044[==anon-20191002_181700-606anon-20191002_181700-6064Z==anon-20191002_181700-605anon-20191002_181700-6054Y==anon-20191002_181700-602anon-20191002_181700-6024X==anon-20191002_181700-603anon-20191002_181700-6034W==anon-20191002_181700-600anon-20191002_181700-6004V==anon-20191002_181700-601anon-20191002_181700-601Uadminadmin4T==anon-20191002_181700-598anon-20191002_181700-5984S==anon-20191002_181700-597anon-20191002_181700-5974R==anon-20191002_181700-596anon-20191002_181700-5964Q==anon-20191002_181700-595anon-20191002_181700-5954P==anon-20191002_181700-593anon-20191002_181700-5934O==anon-20191002_181700-591anon-20191002_181700-5914N==anon-20191002_181700-590anon-20191002_181700-5904M==anon-20191002_181700-589anon-20191002_181700-5894L==anon-20191002_181700-588anon-20191002_181700-5884K==anon-20191002_181700-587anon-20191002_181700-5874J==anon-20191002_181700-586anon-20191002_181700-5864I==anon-20191002_181700-585anon-20191002_181700-5854H==anon-20191002_181700-584anon-20191002_181700-5844G==anon-20191002_181700-583anon-20191002_181700-5834F==anon-20191002_181700-582anon-20191002_181700-5824E==anon-20191002_181700-581anon-20191002_181700-5814D==anon-20191002_181700-580anon-20191002_181700-5804C==anon-20191002_181700-579anon-20191002_181700-5794B==anon-20191002_181700-578anon-20191002_181700-5784A==anon-20191002_181700-577anon-20191002_181700-5774@==anon-20191002_181700-576anon-20191002_181700-5764?==anon-20191002_181700-575anon-20191002_181700-5754>==anon-20191002_181700-574anon-20191002_181700-5744===anon-20191002_181700-573anon-20191002_181700-5734<==anon-20191002_181700-572anon-20191002_181700-5724;==anon-20191002_181700-571anon-20191002_181700-5714:==anon-20191002_181700-570anon-20191002_181700-57049==anon-20191002_181700-569anon-20191002_181700-56948==anon-20191002_181700-568anon-20191002_181700-56847==anon-20191002_181700-567anon-20191002_181700-56746==anon-20191002_181700-566anon-20191002_181700-56645==anon-20191002_181700-565anon-20191002_181700-56544==anon-20191002_181700-564anon-20191002_181700-56443==anon-20191002_181700-563anon-20191002_181700-56342==anon-20191002_181700-562anon-20191002_181700-56241==anon-20191002_181700-561anon-20191002_181700-56140==anon-20191002_181700-560anon-20191002_181700-5604/==anon-20191002_181700-558anon-20191002_181700-5584.==anon-20191002_181700-557anon-20191002_181700-5574-==anon-20191002_181700-556anon-20191002_181700-5564,==anon-20191002_181700-555anon-20191002_181700-5554+==anon-20191002_181700-554anon-20191002_181700-5544*==anon-20191002_181700-552anon-20191002_181700-5524)==anon-20191002_181700-551anon-20191002_181700-5514(==anon-20191002_181700-550anon-20191002_181700-5504'==anon-20191002_181700-549anon-20191002_181700-5494&==anon-20191002_181700-548anon-20191002_181700-5484%==anon-20191002_181700-545anon-20191002_181700-5454$==anon-20191002_181700-543anon-20191002_181700-5434#==anon-20191002_181700-541anon-20191002_181700-5414"==anon-20191002_181700-539anon-20191002_181700-5394!==anon-20191002_181700-537anon-20191002_181700-5374 ==anon-20191002_181700-538anon-20191002_181700-5384==anon-20191002_181700-535anon-20191002_181700-5354==anon-20191002_181700-536anon-20191002_181700-5364==anon-20191002_181700-533anon-20191002_181700-5334==anon-20191002_181700-534anon-20191002_181700-5344==anon-20191002_181700-531anon-20191002_181700-531 =x\#Us: V  t ;  W  x ?  [ "w@\#x?]$y@x?]$8]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPW8]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAU[8]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOXZ8]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQNY8]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQX8]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPPW8]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTMV8]!@anon-20191002_181700-570:localhost:8800ECXFORDQSPU8]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWO8]!@anon-20191002_181700-625:localhost:8800LXKNSEODEI8]!@anon-20191002_181700-624:localhost:8800AATHUMCUIL8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUD8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLU8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDH8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQ6[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUc8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVV8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABY8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUET8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHS8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEM8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZ8]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHI~8]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRP}8]!@anon-20191002_181700-611:localhost:8800UERIFUMBMU|8]!@anon-20191002_181700-610:localhost:8800ZXXERHSURN{6[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGb8]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEz8]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUy8]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVw8]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDv8]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEx8]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZWt8]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJu8]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLMr8]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAPs5Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZS6[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQa8]!@anon-20191002_181700-598:localhost:8800TGNIJBJLORp8]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKSo8]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSGm8]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHWn8]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQl8]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHTk8]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXTj8]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPRi6[!@anon-20191002_181700-58:localhost:8800XSIUOLPWQX`8]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQh8]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAUg8]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVEf8]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYCe8]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHRd8]!@anon-20191002_181700-584:localhost:8800FZKRURXWXEc8]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEb8]!@anon-20191002_181700-582:localhost:8800WSKNBNWTARa8]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZ`8]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOP_6[!@anon-20191002_181700-57:localhost:8800NFIQURSFUO_8]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBR^8]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSN]8]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJB\   *tqeQau$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2812}{"auth_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk", "$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "prev_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk"], "type": "m.room.join_rules", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042971550, "hashes": {"sha256": "s3lK4lWjthncgH5DlpTDEVxP4L/NEr+7Q9yc2Yy9CyI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jfj8liP9pVdMfIO3lYnWjbXAFYLOtFsjM/A5qx5dSehlZmQ8cDDTB/GSdZBa0n1HjGCWchsCgHTdfH4ucuUSAA"}}, "unsigned": {"age_ts": 1570042971550}}kpeQac$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2811}{"auth_events": ["$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "prev_events": ["$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "type": "m.room.power_levels", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"users": {"@anon-20191002_181700-531:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042970728, "hashes": {"sha256": "kT8iMAi4VpQayIeaWEf2TqQisIibD00UB4IkDxUVHk4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9k95IqCstxu285eQsbvKWTQW1fWCGvBRN4LTy6pe2PfFdegXsuEaDYfIOf+6vbNA0qIxEpDjA9EwspP3kl2LDA"}}, "unsigned": {"age_ts": 1570042970728}}voeQay$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2810}{"auth_events": ["$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ"], "prev_events": ["$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ"], "type": "m.room.member", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-531", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-531:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042969989, "hashes": {"sha256": "2zpkjZ2ho+Vlf0gWEcZ1hBCqPJtJSByIxr4454md27U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f4f6q+QeHLDmksBM6bsa3TgM91tshA0jYnkpWEFJJMv7dIP6YMOGV28wKqVp08nbbWaLP534c/FXVvrVwtqFDg"}}, "unsigned": {"age_ts": 1570042969989}}ineQa_$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2809}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-531:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042969155, "hashes": {"sha256": "4OpNIND1yiq1t8ctOHMH1bNgCgoFkqVlZEWyTO1ybHE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MAQCMJZJwG2uGrG8Py/Te+RD+euOfk+OYZWjPgXczKLtUikCIe8pGJmFuo6REK2koGefgnblXgkpBhrKnu3ABQ"}}, "unsigned": {"age_ts": 1570042969155}} Y>~=|< { ; } > B  F  J NRV[f^a1q2=u Q !PzoqoNRxeEEqiLyVSV:localhost:8800m&\P=t Q !uPxXJHJyFQwvpQLZNs:localhost:8800m&\Ja Q!MXhwoqNXvexeDDSOZT:localhost:8800m&\ -f 1 !0:localhost:42455m&\ >b Q!UTAORDrNxIbSlGByAp:localhost:8800m&\ -<` Q  !zqQJfFCRlSEDPKlQPy:localhost:8800m&\ "<_ Q  !JnAKXOrlyisFUpgJPw:localhost:8800m&\/<^ Q  !XRAZJeoZBhGeHKKjaG:localhost:8800m&\/<] Q  !GwLdUoDplyVUogXDzu:localhost:8800m&\#<\ Q  !nfxDdcgDfooxyiAzaB:localhost:8800m&\3<[ Q  !XGAmnfaVvjDtQJuufa:localhost:8800m&\CA Q!cidyuyekVzJHHvyomb:localhost:8800m&\>@ Q!pduebXnTyxQWVxEICp:localhost:8800m&\ Q !VUibrTIkcRbfrogbQV:localhost:8800m&\== Q !WpThtNEVhrUbUdCdMJ:localhost:8800m&\=< Q !vRmMcoJDeCupADwqac:localhost:8800m&\>; Q!fGkUEndqGrieltwbCh:localhost:8800m&\>: Q!atnRTMliktaVUhMVID:localhost:8800m&\>9 Q!PHkVrXAyfGkFtzSagu:localhost:8800m&\>8 Q!EhFUhsgQbBWmrnGmaz:localhost:8800m&\  4 k 9mfd]c@anon-20191002_181700-564:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8Qo127.0.0.1 d]c@anon-20191002_181700-566:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgo127.0.0.1 d]c@anon-20191002_181700-565:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAo127.0.0.1 d]c@anon-20191002_181700-563:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAo127.0.0.1d]c@anon-20191002_181700-562:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAo127.0.0.1d]c@anon-20191002_181700-561:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQo127.0.0.1d]c@anon-20191002_181700-560:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5Jkowo127.0.0.1a[a@anon-20191002_181700-55:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCg127.0.0.1.d]c@anon-20191002_181700-558:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4Ao127.0.0.1d]c@anon-20191002_181700-557:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwo127.0.0.1 -RM H C > 9 4/*|%w rmhc TeQe (!ZvLVbnHjeymRiFIkYr:localhost:8800$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMTdQe '!ZvLVbnHjeymRiFIkYr:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590TcQe &!ZvLVbnHjeymRiFIkYr:localhost:8800$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOITbQe %!VUibrTIkcRbfrogbQV:localhost:8800$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4TaQe $!VUibrTIkcRbfrogbQV:localhost:8800$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4T`Qe #!VUibrTIkcRbfrogbQV:localhost:8800$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIT_Qe "!VUibrTIkcRbfrogbQV:localhost:8800$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8T^Qe !!VUibrTIkcRbfrogbQV:localhost:8800$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdcT]Qe !VUibrTIkcRbfrogbQV:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIT\Qe !VUibrTIkcRbfrogbQV:localhost:8800$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11IT[Qe !WpThtNEVhrUbUdCdMJ:localhost:8800$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVATZQe !WpThtNEVhrUbUdCdMJ:localhost:8800$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2UTYQe !WpThtNEVhrUbUdCdMJ:localhost:8800$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4MTXQe !WpThtNEVhrUbUdCdMJ:localhost:8800$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2MTWQe !WpThtNEVhrUbUdCdMJ:localhost:8800$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6YTVQe !WpThtNEVhrUbUdCdMJ:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgTUQe !WpThtNEVhrUbUdCdMJ:localhost:8800$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQTTQe !vRmMcoJDeCupADwqac:localhost:8800$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0TSQe !vRmMcoJDeCupADwqac:localhost:8800$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1UdckTRQe !vRmMcoJDeCupADwqac:localhost:8800$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8TQQe !vRmMcoJDeCupADwqac:localhost:8800$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZATPQe !vRmMcoJDeCupADwqac:localhost:8800$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocTOQe !vRmMcoJDeCupADwqac:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8TNQe !vRmMcoJDeCupADwqac:localhost:8800$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMTMQe !fGkUEndqGrieltwbCh:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0TLQe !fGkUEndqGrieltwbCh:localhost:8800$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcTKQe !fGkUEndqGrieltwbCh:localhost:8800$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFATJQe !fGkUEndqGrieltwbCh:localhost:8800$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcioTIQe !fGkUEndqGrieltwbCh:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkTHQe !fGkUEndqGrieltwbCh:localhost:8800$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcTGQe !atnRTMliktaVUhMVID:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQTFQe !atnRTMliktaVUhMVID:localhost:8800$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkTEQe !atnRTMliktaVUhMVID:localhost:8800$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwTDQe !atnRTMliktaVUhMVID:localhost:8800$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4TCQe !atnRTMliktaVUhMVID:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwTBQe !atnRTMliktaVUhMVID:localhost:8800$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQTAQe !PHkVrXAyfGkFtzSagu:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AT@Qe !PHkVrXAyfGkFtzSagu:localhost:8800$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYT?Qe !PHkVrXAyfGkFtzSagu:localhost:8800$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8T>Qe !PHkVrXAyfGkFtzSagu:localhost:8800$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0T=Qe !PHkVrXAyfGkFtzSagu:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwT<Qe !PHkVrXAyfGkFtzSagu:localhost:8800$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4T;Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUT:Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kT9Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 | -5t   l e ] U M%=EEeeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800 ǁeeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800 aeeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800 +eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800 ؁eeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY!ZvLVbnHjeymRiFIkYr:localhost:8800 "eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800 TeeQ$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800 teeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800peeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800 ȁeeQ$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800=eeQ$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800ӁeeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800ÁeeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800ρeeQ$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800FeeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800seeQ$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800ɁeeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800 6 w6vueQay$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2816}{"auth_events": ["$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4"], "prev_events": ["$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4"], "type": "m.room.member", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-533", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-533:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042976406, "hashes": {"sha256": "+fYjMf75PqJ/zC8XhITxTsCqJdFCRVmFOjQuBkE9TAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jFYDszsw5BLSvvJjRk19wnYx6DwwHhGDpTUDIjXKiETPYPY2zdoI5yT8zLXJN9qBlkq2pK+MXQba2eJadzH6CA"}}, "unsigned": {"age_ts": 1570042976406}}iteQa_$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2815}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-533:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042975614, "hashes": {"sha256": "RjrES5/M8WVhH1xv6H/ahv2B3Qq5AvLO/aU7DdRswpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gal+Ul42hGCy1VYzXFEsNahW44108XnJh8hw/gGIL/ByXlBEE8WnWPViGaT0aBubOZsxAO8RibFr6KnSWOP/AA"}}, "unsigned": {"age_ts": 1570042975614}}VseQa9$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 520, "stream_ordering": 2814}{"auth_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk", "$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0"], "prev_events": ["$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k"], "type": "m.room.member", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-532:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-532", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-532:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042973359, "hashes": {"sha256": "ekvyx4P6b0Bn2I/oSzA2XQFlNctj5ElhG9XmXmxFwI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YdzSPzF8EfxtNaUhywPjVPb2cwh1JmWVMBsncxgypTWqQvnA4wzbd9TcqElhYREYCERGxyAYQsN22c2W9kTzAQ"}}, "unsigned": {"age_ts": 1570042973359}}reQa$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2813}{"auth_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk", "$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "prev_events": ["$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0"], "type": "m.room.history_visibility", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042972227, "hashes": {"sha256": "bFC6spq0WdlM/W64L4x+aN0NnVa+kqJwxZ2bngt1X6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "35a1NbOVh4eAGF9F92E0g7gyE52s8K3IKGenYOPoIrZfi5qyY/LrdFMdP5new6SgAEwVsneVE2slk2l1WwYsDw"}}, "unsigned": {"age_ts": 1570042972227}} a} { y w u sqomkigeca~eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800~eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800~eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~~eeQ$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~}eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800~|eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~{eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800~zeeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800~yeeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~xeeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800~weeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800~veeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~ueeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800~teeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800~seeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~reeQ$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~qeeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800~peeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~oeeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~neeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800~meeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~leeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~keeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800~jeeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~ieeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~heeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800~geeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~feeQ$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~eeeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800~deeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~ceeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Xe^ k x ' 4 A N [ hu$1>Kr!P]Q@anon-20191002_181700-611:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-607:localhost:8829!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-607:localhost:8829!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800P]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800P]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800P]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800P]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800P]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800P]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800P]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800P]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800P]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800P]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800P]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800P]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800P]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800P]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800P]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800P]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800P]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800P]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800P]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800P]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800P]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800P]Q@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800 `xP (8P h x(` X 0 `8pH X0 ` 8  @h @  x P (pH p H X0h@PP'Q!WFHIeSFQyuugGeBFxW:localhost:8800O'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WWZVpyLeZfyfpWidLx:localhost:8800\'Q!WWZVpyLeZfyfpWidLx:localhost:8800d'Q!WWZVpyLeZfyfpWidLx:localhost:8800c'Q!WYyiQAVvitxsLZKVCG:localhost:8800 0'Q!WWZVpyLeZfyfpWidLx:localhost:8800e'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WYyiQAVvitxsLZKVCG:localhost:8800 1'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WYyiQAVvitxsLZKVCG:localhost:8800 7'Q!WYyiQAVvitxsLZKVCG:localhost:8800 6'Q!WYyiQAVvitxsLZKVCG:localhost:8800 5'Q!WYyiQAVvitxsLZKVCG:localhost:8800 4'Q!WYyiQAVvitxsLZKVCG:localhost:8800 3'Q!WYyiQAVvitxsLZKVCG:localhost:8800 2'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800['Q!XIqmzIFbkHGQPIpywk:localhost:8800Z'Q!XIqmzIFbkHGQPIpywk:localhost:8800Y'Q!XIqmzIFbkHGQPIpywk:localhost:8800X'Q!XIqmzIFbkHGQPIpywk:localhost:8800W'Q!XIqmzIFbkHGQPIpywk:localhost:8800V'Q!XIqmzIFbkHGQPIpywk:localhost:8800U'Q!XIqmzIFbkHGQPIpywk:localhost:8800T'Q!XIqmzIFbkHGQPIpywk:localhost:8800S'Q!XIqmzIFbkHGQPIpywk:localhost:8800R'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WWZVpyLeZfyfpWidLx:localhost:8800]'Q!WWZVpyLeZfyfpWidLx:localhost:8800b'Q!WWZVpyLeZfyfpWidLx:localhost:8800a'Q!WWZVpyLeZfyfpWidLx:localhost:8800`'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!WWZVpyLeZfyfpWidLx:localhost:8800_'Q!WWZVpyLeZfyfpWidLx:localhost:8800^'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800  VyeQa9$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 522, "stream_ordering": 2820}{"auth_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0", "$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8"], "prev_events": ["$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY"], "type": "m.room.member", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-534:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-534", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-534:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042979686, "hashes": {"sha256": "mfjPU7OfXA3RRMkU7BSdxa4ZcTgRmFEtANw1FZ9gIW8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vzNT8/AQTM6aKu7O3a058hbYdgFQegXb6QWDtIIsvT8BehzZpoDrMiK4XrEOr34iMMs61CtEUzuQMHlqH9ROAQ"}}, "unsigned": {"age_ts": 1570042979686}}xeQa$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2819}{"auth_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0", "$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "prev_events": ["$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8"], "type": "m.room.history_visibility", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042978484, "hashes": {"sha256": "pbz6hnleCeTNJcuwndSm95NdPkCAdj51L+oB0xGL5bQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LjzLElGUAj8epUbzvlIhjJ5Fd10QDT7vL4IgaX12sB1/1uZAm1k0tj7au7XkzCKBc0Oqb4MS60/BP28K1X46AQ"}}, "unsigned": {"age_ts": 1570042978484}}tweQau$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2818}{"auth_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0", "$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "prev_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0"], "type": "m.room.join_rules", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042977685, "hashes": {"sha256": "YDk37sM43WIeZNBCrNO84fS1+O6phPSVq3fZePpeuqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EDr6VEWgWz68lbnmA5R9EIoQ1ItJJ1gFw/F7qZxe11jsKQugAPwUtIYJP4U+6eksYBT+hZiZlrJm2nL9BkWTAg"}}, "unsigned": {"age_ts": 1570042977685}}kveQac$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2817}{"auth_events": ["$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "prev_events": ["$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "type": "m.room.power_levels", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"users": {"@anon-20191002_181700-533:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042976953, "hashes": {"sha256": "R49sm8KJFh7awUP0qAqd1VmpONaZpnKxGUKjS/TdrII"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AU8Rwt/Z5YXiCbNGIbQfqg3e8QWDD7kOCJLfsbVx59WGxqcfGB/6N9evf2HPUvMKaIkUv48lIhSajE+XQ2cnCg"}}, "unsigned": {"age_ts": 1570042976953}} VX b  l  v(,<@V e'Q ]$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgm.room.member!WpThtNEVhrUbUdCdMJ:localhost:8800m um @anon-20191002_181700-541:localhost:8800 e'Q  ]$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQm.room.create!WpThtNEVhrUbUdCdMJ:localhost:8800mm @anon-20191002_181700-541:localhost:8800 e'Q ]$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0m.room.member!vRmMcoJDeCupADwqac:localhost:8800m m&@anon-20191002_181700-540:localhost:8829 e'Q ]$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udckm.room.member!vRmMcoJDeCupADwqac:localhost:8800mm4@anon-20191002_181700-539:localhost:8800,e?Q ]$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8m.room.history_visibility!vRmMcoJDeCupADwqac:localhost:8800mPmy@anon-20191002_181700-539:localhost:8800$e/Q ]$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAm.room.join_rules!vRmMcoJDeCupADwqac:localhost:8800mm@anon-20191002_181700-539:localhost:8800&e3Q ]$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocm.room.power_levels!vRmMcoJDeCupADwqac:localhost:8800mm@anon-20191002_181700-539:localhost:8800 e'Q ]$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8m.room.member!vRmMcoJDeCupADwqac:localhost:8800mmR@anon-20191002_181700-539:localhost:8800 e'Q  ]$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMm.room.create!vRmMcoJDeCupADwqac:localhost:8800mtm@anon-20191002_181700-539:localhost:8800 e'Q ]$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0m.room.member!fGkUEndqGrieltwbCh:localhost:8800m>m@anon-20191002_181700-538:localhost:8800,e?Q ]$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcm.room.history_visibility!fGkUEndqGrieltwbCh:localhost:8800mmݏ@anon-20191002_181700-537:localhost:8800$e/Q ]$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAm.room.join_rules!fGkUEndqGrieltwbCh:localhost:8800m m@anon-20191002_181700-537:localhost:8800& e3Q ]$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKciom.room.power_levels!fGkUEndqGrieltwbCh:localhost:8800mm@anon-20191002_181700-537:localhost:8800 e'Q ]$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkm.room.member!fGkUEndqGrieltwbCh:localhost:8800mШm@anon-20191002_181700-537:localhost:8800  e'Q  ]$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcm.room.create!fGkUEndqGrieltwbCh:localhost:8800mma@anon-20191002_181700-537:localhost:8800 e'Q ]$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQm.room.member!atnRTMliktaVUhMVID:localhost:8800mmM@anon-20191002_181700-536:localhost:8800, e?Q ]$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkm.room.history_visibility!atnRTMliktaVUhMVID:localhost:8800mڽmڿ@anon-20191002_181700-535:localhost:8800$e/Q ]$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwm.room.join_rules!atnRTMliktaVUhMVID:localhost:8800mڹmں@anon-20191002_181700-535:localhost:8800&e3Q ]$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4m.room.power_levels!atnRTMliktaVUhMVID:localhost:8800mڶmڷ@anon-20191002_181700-535:localhost:8800 e'Q ]$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwm.room.member!atnRTMliktaVUhMVID:localhost:8800mڳmڳ@anon-20191002_181700-535:localhost:8800 e'Q  ]$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQm.room.create!atnRTMliktaVUhMVID:localhost:8800mڰ9mڰ@anon-20191002_181700-535:localhost:8800 e'Q ]$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Am.room.member!PHkVrXAyfGkFtzSagu:localhost:8800mڥfmڦ@anon-20191002_181700-534:localhost:8800,e?Q ]$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYm.room.history_visibility!PHkVrXAyfGkFtzSagu:localhost:8800mڠmڢ@anon-20191002_181700-533:localhost:8800$e/Q ]$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8m.room.join_rules!PHkVrXAyfGkFtzSagu:localhost:8800mڝmڞ@anon-20191002_181700-533:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V$eL$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8sha256EFNS+݌#[Ѭj"oN=V#eL$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slgsha256Q?!R"4d (2lN^XV"eL$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yosha256շtL|{4п:)~V!eL$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYsha256e1«Ԙc*#RBKm\sN?V eL$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMsha256-&N3""|!ί&뽝.97VeL$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYsha2560^PI 8H@,gL VeL$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAksha256J"+˘SBӚUǝuU VeL$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMsha256%@ 9Al!f botVeL$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590sha2562D:9`t۲X*ڪVeL$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIsha256þd-Rs[o@]ϟNVeL$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4sha256 ?qfG-Tvw%u VeL$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4sha256qavGMK?yef'hWVeL$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIsha256FOfBmޱt/ 1,`c oPRBVeL$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8sha256ƪiɆE d{bRSpz-G F"{Uf}pW r*VeL$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkksha256aKSgzN.ЖnxUZbi IVeL$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcsha256u6S[ۧV€,n30|fGVeL$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQsha256]Y c?bRo)V~eL$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNksha256Fy~g7E<|<ڣMpV}eL$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwsha256 y]֤k}(:Ϲ}]X0]Q@anon-20191002_181700-543:localhost:8800=0]P@anon-20191002_181700-542:localhost:8829<0]M@anon-20191002_181700-541:localhost:8800;0]L@anon-20191002_181700-540:localhost:8829:0]J@anon-20191002_181700-539:localhost:880090]H@anon-20191002_181700-537:localhost:880070]I@anon-20191002_181700-538:localhost:880080]E@anon-20191002_181700-535:localhost:880040]F@anon-20191002_181700-536:localhost:880050]C@anon-20191002_181700-534:localhost:880020]B@anon-20191002_181700-533:localhost:880010]A@anon-20191002_181700-534:localhost:880000]@@anon-20191002_181700-532:localhost:8800/0]?@anon-20191002_181700-531:localhost:8800.0]=@anon-20191002_181700-529:localhost:8800,0]<@anon-20191002_181700-527:localhost:8800+0]9@anon-20191002_181700-526:localhost:8800*0]8@anon-20191002_181700-525:localhost:8800)0]7@anon-20191002_181700-524:localhost:8800(0]u@anon-20191002_181700-577:localhost:8800\0]t@anon-20191002_181700-576:localhost:8800[0]s@anon-20191002_181700-575:localhost:8800Z0]r@anon-20191002_181700-574:localhost:8800Y0]q@anon-20191002_181700-573:localhost:8800X0]p@anon-20191002_181700-572:localhost:8800W0]o@anon-20191002_181700-571:localhost:8800V0]n@anon-20191002_181700-570:localhost:8800U0]m@anon-20191002_181700-569:localhost:8800T0]l@anon-20191002_181700-568:localhost:8800S0]4@anon-20191002_181700-523:localhost:8800'0]3@anon-20191002_181700-521:localhost:8800&0]2@anon-20191002_181700-520:localhost:8800%0]1@anon-20191002_181700-518:localhost:8800$0]0@anon-20191002_181700-516:localhost:8800#0]/@anon-20191002_181700-514:localhost:8800"0].@anon-20191002_181700-512:localhost:8800!0]-@anon-20191002_181700-510:localhost:8800 0],@anon-20191002_181700-509:localhost:88000]+@anon-20191002_181700-508:localhost:88000]*@anon-20191002_181700-507:localhost:88000])@anon-20191002_181700-506:localhost:88000](@anon-20191002_181700-505:localhost:88000]'@anon-20191002_181700-503:localhost:88000]&@anon-20191002_181700-501:localhost:88000]%@anon-20191002_181700-499:localhost:88000]$@anon-20191002_181700-497:localhost:88000]#@anon-20191002_181700-495:localhost:88000]"@anon-20191002_181700-493:localhost:88000]!@anon-20191002_181700-494:localhost:8800 1^m z ) 6 E R  _ n{*7FS`o|+P]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800OP]Q@anon-20191002_181700-364:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800NP]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800MP]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800KP]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800LP]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800JN[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800HP]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800IP]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800GP]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800EP]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800FP]Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800DP]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800CP]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800BP]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800AP]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800@N[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800?P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800>P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800=P]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800 v D  | [|/ 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo Z1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsJ1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsX1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E(1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM/1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYi1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcb1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS80e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgl1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA?1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM 0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDob1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE}1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEk1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo51e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y891e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAt1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag11e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 d1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Ia1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXski1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 q21e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4y1e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70s1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUj1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q z1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoK1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYR1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wC1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM F1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc 1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwF1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 <1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU Z1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 i   *t}eQau$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2824}{"auth_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4", "$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "prev_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4"], "type": "m.room.join_rules", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042984942, "hashes": {"sha256": "U1miPA7vYv9D6Ow86lsYjtF/hGq0M+zPgPLNfXCxNgc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JHxIfUHnFvlhw+6DCZxaHZwHQk3TW0kpu/4LcY2peEnZcg54dAuDT+d2n3Bt1P5SMrEag4F5fus6wYvJ6q8QBA"}}, "unsigned": {"age_ts": 1570042984942}}k|eQac$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2823}{"auth_events": ["$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "prev_events": ["$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "type": "m.room.power_levels", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"users": {"@anon-20191002_181700-535:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042983952, "hashes": {"sha256": "lJIob+qxRmPUlQ5GeYSVOobhknTat3XrYTC7/Yya5Hg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3GA+khv78RAlpuBNVVUKOspJEJiHvUUa70l2/GpTmuB0UY6wZ6ReP8IUxaKQWtnzqVz7E9yasHpUNhRwMEoICg"}}, "unsigned": {"age_ts": 1570042983952}}v{eQay$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2822}{"auth_events": ["$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ"], "prev_events": ["$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ"], "type": "m.room.member", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-535", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-535:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042983309, "hashes": {"sha256": "C+Z99aJmzf+1akHOJb3hIAA9LAMP3mswxUj9ufO6b3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "14I4Yqkat4C0Xv0vI976aDv92lKDuMfY3JKVinTPoNdguNL9MaBFDkuu1OtiC2ab6JXK8BzSCW+mb8E2d6xxCQ"}}, "unsigned": {"age_ts": 1570042983309}}izeQa_$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2821}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-535:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042982457, "hashes": {"sha256": "hhcWlj/MGEyJorwr39g0e0pJYdPso72WAIQb/6M5tBA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2TfaOoD2NObK360uSerH1jff/pZe71KglHFzljABtjh0ULBNHJCO6NgQt9Zr3neJ8UO/0M3u4iiNJNkzCtMyCA"}}, "unsigned": {"age_ts": 1570042982457}} N = uCU${[I + ]Oj8|cJ 1  ) w E  } % K  W Q  i7o ] >1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g ~1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 E1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA 1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM R0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETso1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAo1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI51e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYF1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgA1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwi1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0i1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUc1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4G1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM3$79:localhost:42455 3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 3$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 3$70:localhost:42455 1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 r1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro>1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A j>d1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIV1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRop1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kK1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8Y1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU/0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQg1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMk1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUd1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k21e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo1e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUK K ) P  Va  g*6$8P JpJn< #  juC \ V> v D  | [|/ 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo Z1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsJ1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsX1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E(1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM/1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYi1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcb1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS80e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgl1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA?1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM 0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDob1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE}1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEk1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo51e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y891e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAt1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag11e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 d1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Ia1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXski1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 q21e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4y1e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70s1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUj1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q z1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoK1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYR1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wC1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM F1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc 1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwF1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 <1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU Z1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 i L ~ OZ    r dC 5 y J  T %  ` 1 i :  uWF+Y* \ -  n(B ?p  s  D..Q!aWJOsiuJONOvjKWEjO:localhost:8800th.Q!aVxOoyiLLnxmzgLJat:localhost:8800th.Q!ZWANpHlizyLrUiVvAm:localhost:8800th.Q!YGUjVdVdpcQoGkRnWB:localhost:8800th.Q!XnUZiYJDWVNGfsBnGz:localhost:8800th.Q!aSKNKSGXPGoIbSrbEN:localhost:8800mI.Q!aVxOoyiLLnxmzgLJat:localhost:8800m-Q!aWJOsiuJONOvjKWEjO:localhost:8800m-Q!aWvVRVaDflYyyGTOdD:localhost:8800mJ-Q!aWbcZNVBalJilCEsdr:localhost:8800m.Q!YQATbgbLImCDamiDHC:localhost:8800m.Q!YGUjVdVdpcQoGkRnWB:localhost:8800m.Q!ZYKvjplZRyIWvzkRyM:localhost:8800th.Q!XNfwczePlyYFWLCaui:localhost:8800m-Q!XMNRkfscQXRjgYrOSd:localhost:8800m_-Q!XIqmzIFbkHGQPIpywk:localhost:8800mE.Q!aaRwQZdNAliyvRHpjs:localhost:8800th.Q!XnUZiYJDWVNGfsBnGz:localhost:8800m.Q!XiwGxQKwjgutEClKUy:localhost:8829m-Q!XgobMgBjNcDRJnRXLD:localhost:8800m0.Q!XcaKxZsPvbZhAGKKdx:localhost:8800m.Q!XUbDuPDiMTXJZDyAPc:localhost:8800mY.Q!XRAZJeoZBhGeHKKjaG:localhost:8800m^.Q!aLxrqpqLkbzyIxGgpk:localhost:8800m.Q!aHyAJEOSdKqTiRjOvw:localhost:8800m-Q!aBCvSXjtZUEPlPGHvY:localhost:8800mQ.Q!ZvLVbnHjeymRiFIkYr:localhost:8800m?.Q!ZaltdIYVZjCHsCWTZD:localhost:8800m.Q!ZaOktTIVeRgBXxfubH:localhost:8800m.Q!ZYKvjplZRyIWvzkRyM:localhost:8800m.Q!ZWANpHlizyLrUiVvAm:localhost:8800m.Q!ZShBIxwbJmxjjZmoRQ:localhost:8800m.Q!ZOwibbprUCQrSJQCrx:localhost:8800m.Q!ZOpRjvUhkWYJBFJZeO:localhost:8800m.Q!ZNIjCvcWhgcwskanjT:localhost:8800m.Q!ZKPJvrCZHMHPEksYDc:localhost:8800m-Q!YufaOfAlruTdjyUCwO:localhost:8800m}.Q!YtVXQjSPgVtbxrzUOA:localhost:8800m.Q!YpcmaMNMzjvtgYtrli:localhost:8800mv.Q!YmRuIWixFpaqEeDQLZ:localhost:8800m.Q!YgaGPEraeLCqHQirin:localhost:8800m.Q!YaLuQzmJKSMTSFEqjO:localhost:8800m.Q!ZaOktTIVeRgBXxfubH:localhost:8800th.Q!aiOswwhoZqjhcjzbzc:localhost:8800th.Q!aiOswwhoZqjhcjzbzc:localhost:8800m.Q!XiwGxQKwjgutEClKUy:localhost:8829th.Q!XgobMgBjNcDRJnRXLD:localhost:8800th.Q!XcaKxZsPvbZhAGKKdx:localhost:8800th.Q!XUbDuPDiMTXJZDyAPc:localhost:8800th.Q!XRAZJeoZBhGeHKKjaG:localhost:8800th.Q!XNfwczePlyYFWLCaui:localhost:8800th.Q!XMNRkfscQXRjgYrOSd:localhost:8800th.Q!XIqmzIFbkHGQPIpywk:localhost:8800th/.Q!ZShBIxwbJmxjjZmoRQ:localhost:8800th.Q!ZOwibbprUCQrSJQCrx:localhost:8800th.Q!ZOpRjvUhkWYJBFJZeO:localhost:8800th.Q!ZNIjCvcWhgcwskanjT:localhost:8800th.Q!ZKPJvrCZHMHPEksYDc:localhost:8800th.Q!YufaOfAlruTdjyUCwO:localhost:8800th.Q!YtVXQjSPgVtbxrzUOA:localhost:8800th.Q!YpcmaMNMzjvtgYtrli:localhost:8800th.Q!YmRuIWixFpaqEeDQLZ:localhost:8800th.Q!YgaGPEraeLCqHQirin:localhost:8800th.Q!YaLuQzmJKSMTSFEqjO:localhost:8800th.Q!YQATbgbLImCDamiDHC:localhost:8800th.Q!aWvVRVaDflYyyGTOdD:localhost:8800th.Q!aWbcZNVBalJilCEsdr:localhost:8800th.Q!aSKNKSGXPGoIbSrbEN:localhost:8800th.Q!aLxrqpqLkbzyIxGgpk:localhost:8800th.Q!aHyAJEOSdKqTiRjOvw:localhost:8800th.Q!aBCvSXjtZUEPlPGHvY:localhost:8800th.Q!ZvLVbnHjeymRiFIkYr:localhost:8800th.Q!ZaltdIYVZjCHsCWTZD:localhost:8800thD.Q!aZwMKYDXJRlSKjQNWM:localhost:8800th^.Q!aaRwQZdNAliyvRHpjs:localhost:8800m.Q!aZwMKYDXJRlSKjQNWM:localhost:8800m Xth\PD8, dXL@4( | p d X L @ 4 (   th\PD8, xl`TH<0$ |p|pdX|pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  xl`TH<0$ L@4(th\P m m m m m m m m m m m m{ my mw m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m mu ms mq mo mm mk mj mg mf mc mb m_ m] m[ mV mT mR mO mN mK mI mG mE mC mA m? m= m; m9 m7 m5 m3 m1 m0 m- m, m) m( m% m$ m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m} mz my mv mt mr mp mn ml mj mi mf me mb m` m^ m\ mZ mX mV mU mR mQ mN mL mK mJ mF mE mD mC mB mA m: m9 m8 m4 m3 m2 m. m- m, m( m' m& m" m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m DC b 0 J  h 6o= vD|J $ QW%]+ \ * V P  |j1e$JAnmGsaa8-ESeK1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg P1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM 1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYu1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Qk1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgR1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8?0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4P1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ 1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ?1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw'1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA00e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8U1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg]1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb01e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIO1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAko1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYy1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs=1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA 1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg+1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I V1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIg1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcU1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M E1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI 1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o 1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A %1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU 1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk &1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE01e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 6 w6veQay$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2828}{"auth_events": ["$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc"], "prev_events": ["$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc"], "type": "m.room.member", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-537", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-537:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042990760, "hashes": {"sha256": "FvYEx7WEuEJDqKC6m/h9eTmX353luOMbr5W0yI+lbpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hM4gt5Pr+7iidM1M2E0Ojwz6Hi7X8onyzSTuJqnnXE5VgCNjPk2S0cNbJrZNYyzD3txArjiocQd4cUpY9+yTAQ"}}, "unsigned": {"age_ts": 1570042990760}}ieQa_$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2827}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-537:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042989791, "hashes": {"sha256": "g1AcWGHMEoZ761jkow635z1KNcl0+ZEhJVXvyiA5gyg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7KyKbX49O5oBSzCvao6M4pj/5BMJifgZmyP5nR24f+8G5PwmVllVwAzd+mEbEqlvj88epRAGaF5wIdzrkwfgDQ"}}, "unsigned": {"age_ts": 1570042989791}}VeQa9$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ!atnRTMliktaVUhMVID:localhost:8800{"token_id": 525, "stream_ordering": 2826}{"auth_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4", "$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw"], "prev_events": ["$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk"], "type": "m.room.member", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-536:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-536", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-536:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042987243, "hashes": {"sha256": "ostmhtmA9U4dcllhv/DVWForX+kKMB1+nJ6FOTPwP8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0+MPxXZk9m8h3adnmMMkK5nhuD8EzCaVgcWgJ+iXaYq59V59mZ3Dcq5RW/FIf+Ci8A+vUpkHK7F0wPPAFv9RDg"}}, "unsigned": {"age_ts": 1570042987243}}~eQa$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2825}{"auth_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4", "$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "prev_events": ["$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw"], "type": "m.room.history_visibility", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042985966, "hashes": {"sha256": "YvwOM66uK1fdgOO9cXkCDH202lN8UXWl8gUNusk9trM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "obZjb73d4Ac/1TM6NOiJME8WWQwwhMlK34sD7EPRqsBIdy3xFIeusWRKAakVCeVojT8aM/ENhH09UgX7O0SQDg"}}, "unsigned": {"age_ts": 1570042985966}}  d \ T  LD l<|4 ,t$ eeQ$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800 ueeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800 OeeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800ÁeeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800ǁeeQ$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800eeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800WeeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800ӁeeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800YeeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800؁eeQ$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800݁eeQ$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800deeQ$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800}eeQ$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800+eeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800 qeeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800 ,eeQ$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800 ΁eeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800  * KaQ x h  X H 9Aq  FeeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800  aeeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800eeQ$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800 C beeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800 @ seeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800 ReeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800PeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800 [eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:88008}eeQ$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800 a JeeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800 eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800 " eeQ$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800 LeeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800 eeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800Z eeQ$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800 eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800 +eeQ$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800@́eeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800 i eeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800 Q ~z v r n j fb^ZVRNJF"eeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY!ZvLVbnHjeymRiFIkYr:localhost:8800!eeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800eeQ$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4!VUibrTIkcRbfrogbQV:localhost:8800eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI!VUibrTIkcRbfrogbQV:localhost:8800eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800eeQ$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck!vRmMcoJDeCupADwqac:localhost:8800eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8!vRmMcoJDeCupADwqac:localhost:8800eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800 eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800 eeQ$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800 eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc!fGkUEndqGrieltwbCh:localhost:8800 eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800 eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800eeQ$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800eeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800 D%<4-t | l d \ T L ?eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800 WeeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800 [eeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800 5eeQ$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800feeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800[eeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800QeeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800{eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800yeeQ$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800 [eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800ÁeeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800DeeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800neeQ$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:88007eeQ$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800 ЁeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800ҁeeQ$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800,eeQ$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800 M p y . 7 : \ A>@jhQ3 e (!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.power_levels$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM gQ']e '!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590dfQ' e &!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.create$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI8eQ']ee %!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 dQ']e $!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4pcQ? e #!VUibrTIkcRbfrogbQV:localhost:8800m.room.history_visibility$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIhbQ/ e "!VUibrTIkcRbfrogbQV:localhost:8800m.room.join_rules$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8jaQ3 e !!VUibrTIkcRbfrogbQV:localhost:8800m.room.power_levels$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc `Q']e !VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-543:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEId_Q' e !VUibrTIkcRbfrogbQV:localhost:8800m.room.create$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I8^Q']ee !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U ]Q']e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Up\Q? e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.history_visibility$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Mh[Q/ e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.join_rules$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2MjZQ3 e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.power_levels$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y YQ']e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-541:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgdXQ' e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.create$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ8WQ']ee !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck VQ']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1UdckpUQ? e !vRmMcoJDeCupADwqac:localhost:8800m.room.history_visibility$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8hTQ/ e !vRmMcoJDeCupADwqac:localhost:8800m.room.join_rules$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAjSQ3 e !vRmMcoJDeCupADwqac:localhost:8800m.room.power_levels$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc RQ']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-539:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8dQQ' e !vRmMcoJDeCupADwqac:localhost:8800m.room.create$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM PQ']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-538:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0pOQ? e !fGkUEndqGrieltwbCh:localhost:8800m.room.history_visibility$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmchNQ/ e !fGkUEndqGrieltwbCh:localhost:8800m.room.join_rules$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAjMQ3 e !fGkUEndqGrieltwbCh:localhost:8800m.room.power_levels$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio LQ']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-537:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkdKQ' e !fGkUEndqGrieltwbCh:localhost:8800m.room.create$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc JQ']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-536:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 7h Hp(p(P x 0 X  Px0X8` 8 `   @EB]=@anon-20191002_181700-577:localhost:8800anon-20191002_181700-577EA]=@anon-20191002_181700-576:localhost:8800anon-20191002_181700-576E@]=@anon-20191002_181700-574:localhost:8800anon-20191002_181700-574E?]=@anon-20191002_181700-573:localhost:8800anon-20191002_181700-573E>]=@anon-20191002_181700-572:localhost:8800anon-20191002_181700-572E=]=@anon-20191002_181700-571:localhost:8800anon-20191002_181700-571E<]=@anon-20191002_181700-570:localhost:8800anon-20191002_181700-570E;]=@anon-20191002_181700-569:localhost:8800anon-20191002_181700-569E:]=@anon-20191002_181700-568:localhost:8800anon-20191002_181700-568E9]=@anon-20191002_181700-567:localhost:8800anon-20191002_181700-567E8]=@anon-20191002_181700-566:localhost:8800anon-20191002_181700-566E7]=@anon-20191002_181700-565:localhost:8800anon-20191002_181700-565E6]=@anon-20191002_181700-564:localhost:8800anon-20191002_181700-564E5]=@anon-20191002_181700-563:localhost:8800anon-20191002_181700-563E4]=@anon-20191002_181700-562:localhost:8800anon-20191002_181700-562E3]=@anon-20191002_181700-561:localhost:8800anon-20191002_181700-561E1]=@anon-20191002_181700-557:localhost:8800anon-20191002_181700-557E2]=@anon-20191002_181700-558:localhost:8800anon-20191002_181700-558E/]=@anon-20191002_181700-554:localhost:8800anon-20191002_181700-554E.]=@anon-20191002_181700-553:localhost:8829anon-20191002_181700-553E]=@anon-20191002_181700-535:localhost:8800anon-20191002_181700-535E]=@anon-20191002_181700-534:localhost:8800anon-20191002_181700-534E]=@anon-20191002_181700-533:localhost:8800anon-20191002_181700-533E]=@anon-20191002_181700-532:localhost:8800anon-20191002_181700-532E]=@anon-20191002_181700-531:localhost:8800anon-20191002_181700-531E]=@anon-20191002_181700-521:localhost:8800anon-20191002_181700-521E]=@anon-20191002_181700-522:localhost:8829anon-20191002_181700-522E]=@anon-20191002_181700-520:localhost:8800anon-20191002_181700-520E]=@anon-20191002_181700-519:localhost:8829anon-20191002_181700-519E]=@anon-20191002_181700-518:localhost:8800anon-20191002_181700-518EM]=@anon-20191002_181700-606:localhost:8800anon-20191002_181700-606EN]=@anon-20191002_181700-608:localhost:8800anon-20191002_181700-608EJ]=@anon-20191002_181700-603:localhost:8800anon-20191002_181700-603EI]=@anon-20191002_181700-601:localhost:8800anon-20191002_181700-601EH]=@anon-20191002_181700-584:localhost:8800anon-20191002_181700-584EG]=@anon-20191002_181700-583:localhost:8800anon-20191002_181700-583EF]=@anon-20191002_181700-582:localhost:8800anon-20191002_181700-582EE]=@anon-20191002_181700-580:localhost:8800anon-20191002_181700-580ED]=@anon-20191002_181700-579:localhost:8800anon-20191002_181700-579EC]=@anon-20191002_181700-578:localhost:8800anon-20191002_181700-578E-]=@anon-20191002_181700-552:localhost:8800anon-20191002_181700-552E,]=@anon-20191002_181700-551:localhost:8800anon-20191002_181700-551E+]=@anon-20191002_181700-550:localhost:8800anon-20191002_181700-550E*]=@anon-20191002_181700-549:localhost:8800anon-20191002_181700-549E)]=@anon-20191002_181700-548:localhost:8800anon-20191002_181700-548E(]=@anon-20191002_181700-545:localhost:8800anon-20191002_181700-545E']=@anon-20191002_181700-544:localhost:8829anon-20191002_181700-544E&]=@anon-20191002_181700-543:localhost:8800anon-20191002_181700-543E%]=@anon-20191002_181700-542:localhost:8829anon-20191002_181700-542E$]=@anon-20191002_181700-541:localhost:8800anon-20191002_181700-541E#]=@anon-20191002_181700-540:localhost:8829anon-20191002_181700-540E"]=@anon-20191002_181700-539:localhost:8800anon-20191002_181700-539E!]=@anon-20191002_181700-538:localhost:8800anon-20191002_181700-538E ]=@anon-20191002_181700-537:localhost:8800anon-20191002_181700-537E]=@anon-20191002_181700-536:localhost:8800anon-20191002_181700-536 < Z x  % C a,Jh 3Qon(]@anon-20191002_181700-545:localhost:8800@anon-20191002_181700-545:localhost:8800 anon-20191002_181700-545n']@anon-20191002_181700-544:localhost:8829@anon-20191002_181700-544:localhost:8829 anon-20191002_181700-544n&]@anon-20191002_181700-543:localhost:8800@anon-20191002_181700-543:localhost:8800 anon-20191002_181700-543n%]@anon-20191002_181700-542:localhost:8829@anon-20191002_181700-542:localhost:8829 anon-20191002_181700-542n$]@anon-20191002_181700-541:localhost:8800@anon-20191002_181700-541:localhost:8800 anon-20191002_181700-541n#]@anon-20191002_181700-540:localhost:8829@anon-20191002_181700-540:localhost:8829 anon-20191002_181700-540n"]@anon-20191002_181700-539:localhost:8800@anon-20191002_181700-539:localhost:8800 anon-20191002_181700-539n!]@anon-20191002_181700-538:localhost:8800@anon-20191002_181700-538:localhost:8800 anon-20191002_181700-538n ]@anon-20191002_181700-537:localhost:8800@anon-20191002_181700-537:localhost:8800 anon-20191002_181700-537n]@anon-20191002_181700-535:localhost:8800@anon-20191002_181700-535:localhost:8800 anon-20191002_181700-535n]@anon-20191002_181700-534:localhost:8800@anon-20191002_181700-534:localhost:8800 anon-20191002_181700-534n]@anon-20191002_181700-533:localhost:8800@anon-20191002_181700-533:localhost:8800 anon-20191002_181700-533n]@anon-20191002_181700-532:localhost:8800@anon-20191002_181700-532:localhost:8800 anon-20191002_181700-532n]@anon-20191002_181700-531:localhost:8800@anon-20191002_181700-531:localhost:8800 anon-20191002_181700-531n]@anon-20191002_181700-521:localhost:8800@anon-20191002_181700-521:localhost:8800 anon-20191002_181700-521n]@anon-20191002_181700-522:localhost:8829@anon-20191002_181700-522:localhost:8829 anon-20191002_181700-522n]@anon-20191002_181700-520:localhost:8800@anon-20191002_181700-520:localhost:8800 anon-20191002_181700-520n)]@anon-20191002_181700-548:localhost:8800@anon-20191002_181700-548:localhost:8800 anon-20191002_181700-548n]@anon-20191002_181700-519:localhost:8829@anon-20191002_181700-519:localhost:8829 anon-20191002_181700-519n]@anon-20191002_181700-518:localhost:8800@anon-20191002_181700-518:localhost:8800 anon-20191002_181700-518n]@anon-20191002_181700-516:localhost:8800@anon-20191002_181700-516:localhost:8800 anon-20191002_181700-516n]@anon-20191002_181700-514:localhost:8800@anon-20191002_181700-514:localhost:8800 anon-20191002_181700-514n]@anon-20191002_181700-513:localhost:8829@anon-20191002_181700-513:localhost:8829 anon-20191002_181700-513n]@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-512:localhost:8800 anon-20191002_181700-512n]@anon-20191002_181700-511:localhost:8829@anon-20191002_181700-511:localhost:8829 anon-20191002_181700-511n]@anon-20191002_181700-510:localhost:8800@anon-20191002_181700-510:localhost:8800 anon-20191002_181700-510n]@anon-20191002_181700-536:localhost:8800@anon-20191002_181700-536:localhost:8800 anon-20191002_181700-536 1 `  p 0@P`p 0 @ P`p0@PMI]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800MH]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800MG]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800MF]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800ME]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800MD]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800MC]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800MB]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800MA]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800M@]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800M?]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800M]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800M>]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800M<]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800M=]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800M:]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800M9]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800M)]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800M(]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800M']Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800M&]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800M%]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800M$]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800M#]Q@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800M"]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800M!]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800M ]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800M]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800M]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800M]Q@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800M]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800M]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800M]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800M]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800M8]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800M7]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800M6]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800M5]Q@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800M4]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800M3]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800M2]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800M1]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800M0]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800M/]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800M.]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800M-]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800M,]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800M+]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800M*]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800 g * T~=gg]!c@anon-20191002_181700-554:localhost:8800FFUSIPBHXSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgog]!c@anon-20191002_181700-552:localhost:8800JYCWUAAHBUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07Aog]!c@anon-20191002_181700-551:localhost:8800PDLFVATDIVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_Qog]!c@anon-20191002_181700-550:localhost:8800TBXCVBUGVRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwog ]!c@anon-20191002_181700-549:localhost:8800BYOSFCFMSOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-Fxgfwog ]!c@anon-20191002_181700-548:localhost:8800XQXKFJTYCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6gog ]!c@anon-20191002_181700-545:localhost:8800TWGXUTPQOVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQog ]!c@anon-20191002_181700-543:localhost:8800FZCMWYDVSKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgog ]!c@anon-20191002_181700-541:localhost:8800XVDHHDVGDJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAog]!c@anon-20191002_181700-539:localhost:8800OLXWQXBCROMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQog]!c@anon-20191002_181700-537:localhost:8800JAPSJNDXUJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAo  5 4 ? i h JU ~`k#v @Q']e 1!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590c?Q' e 0!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.create$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI >Q']e /!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 =Q']e .!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$NeM00z04EbIcpL-VWDua7sxR_H8BChLP9vOaxyWvHbg <Q']e -!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4o;Q? e ,!VUibrTIkcRbfrogbQV:localhost:8800m.room.history_visibility$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIg:Q/ e +!VUibrTIkcRbfrogbQV:localhost:8800m.room.join_rules$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8i9Q3 e *!VUibrTIkcRbfrogbQV:localhost:8800m.room.power_levels$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 8Q']e )!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-543:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIc7Q' e (!VUibrTIkcRbfrogbQV:localhost:8800m.room.create$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 6Q']e '!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 5Q']e &!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$j6_4zNRzXo1VCRSLeFWmlLyrhAovf6R8tYZJvN527-A 4Q']e %!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Uo3Q? e $!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.history_visibility$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Mg2Q/ e #!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.join_rules$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2Mi1Q3 e "!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.power_levels$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 0Q']e !!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-541:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgc/Q' e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.create$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ .Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 -Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$lUtb8B5Tp0WMHnjkx0duE2sKBGeWGlX_uEChAGwyUvk ,Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udcko+Q? e !vRmMcoJDeCupADwqac:localhost:8800m.room.history_visibility$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8g*Q/ e !vRmMcoJDeCupADwqac:localhost:8800m.room.join_rules$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAi)Q3 e !vRmMcoJDeCupADwqac:localhost:8800m.room.power_levels$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc (Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-539:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8c'Q' e !vRmMcoJDeCupADwqac:localhost:8800m.room.create$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM &Q']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-538:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0o%Q? e !fGkUEndqGrieltwbCh:localhost:8800m.room.history_visibility$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcg$Q/ e !fGkUEndqGrieltwbCh:localhost:8800m.room.join_rules$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAi#Q3 e !fGkUEndqGrieltwbCh:localhost:8800m.room.power_levels$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio "Q']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-537:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkc!Q' e !fGkUEndqGrieltwbCh:localhost:8800m.room.create$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 8l D `8~]c!E@anon-20191002_181700-551:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_QoPDLFVATDIV127.0.0.1Perl + Net::Async::HTTP/0.44mL}]c!E@anon-20191002_181700-550:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwoTBXCVBUGVR127.0.0.1Perl + Net::Async::HTTP/0.44m۲ă|]c!E@anon-20191002_181700-549:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-FxgfwoBYOSFCFMSO127.0.0.1Perl + Net::Async::HTTP/0.44mۦ{]c!E@anon-20191002_181700-548:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6goXQXKFJTYCC127.0.0.1Perl + Net::Async::HTTP/0.44mےƒz]c!E@anon-20191002_181700-545:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQoTWGXUTPQOV127.0.0.1Perl + Net::Async::HTTP/0.44mYy]c!E@anon-20191002_181700-543:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgoFZCMWYDVSK127.0.0.1Perl + Net::Async::HTTP/0.44m(x]c!E@anon-20191002_181700-541:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAoXVDHHDVGDJ127.0.0.1Perl + Net::Async::HTTP/0.44mw]c!E@anon-20191002_181700-539:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQoOLXWQXBCRO127.0.0.1Perl + Net::Async::HTTP/0.44m#v]c!E@anon-20191002_181700-538:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAoPJMZGLQCBZ127.0.0.1Perl + Net::Async::HTTP/0.44mu]c!E@anon-20191002_181700-537:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAoJAPSJNDXUJ127.0.0.1Perl + Net::Async::HTTP/0.44m̌ qA8 Q  U  q 8 U  q 8 T p75So6Rn5Rn8e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Esha256 8e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcsha2568e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUsha256 [8e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kwsha256 8e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYsha256 8e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogsha256 8e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0sha256 8e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dksha256 8e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUsha2568e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEsha2568e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Asha2568e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4sha256 8e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMsha25658e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcsha25618e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMosha256q7e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMsha256@8e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gsha2568e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgsha256 8e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wgsha2568e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQsha256 )8e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0sha256B8e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6Esha2568e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgsha256;8e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vosha256 8e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80sha256I8e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIsha2568e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUsha256p8e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8Usha256&8e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8sha2568e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Oksha2568e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwsha2568e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgssha2568e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10sha2568e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMsha256 8e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYsha2568e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIsha2568e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4sha2568e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8sha2568e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXosha256 -8e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1Asha256 g8e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwsha256y8e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qsha2568e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8sha2568e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEsha256t8e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgsha2568e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMsha256H8e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYsha2568e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rwsha256 #8e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUsha256 C7e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQsha2568e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkUsha2568e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Usha256 o8e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOssha2568e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYsha2568e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qsha256r8e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-osha2568e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40sha25638e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_ksha256 8e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMsha256 8e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYosha256d7e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcsha256B8e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dssha256 U8e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgsha25698e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694sha2568e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEsha256  VeQa9$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 527, "stream_ordering": 2832}{"auth_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio", "$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA"], "prev_events": ["$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc"], "type": "m.room.member", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-538:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-538", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-538:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042994750, "hashes": {"sha256": "OQxWy0HkoaJ8yutv8UkN7J4wIDDHxiEN7EzgwhRnnSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tR4Z+ChuEVZLCJxaBJ1YQIvdGCc5ALhIcujQT0XlfTxJb4KtT33WqglQd21pgR7QYoMu3bRxJfgf+zPCC/Z9DA"}}, "unsigned": {"age_ts": 1570042994750}}eQa$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2831}{"auth_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio", "$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "prev_events": ["$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA"], "type": "m.room.history_visibility", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042993408, "hashes": {"sha256": "3/4u48Haiz1ARTEhmaF6y09mkif1f/f/NY/grR3+YcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9dVgnEgh9wE71y0A11GeLEDo8LQ7GyVbNdqqySEOrxHnBASVoTk5OSX8+9rnMkmN852UVbJN6bE6FHtzFEcpAw"}}, "unsigned": {"age_ts": 1570042993408}}teQau$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2830}{"auth_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio", "$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "prev_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio"], "type": "m.room.join_rules", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042992651, "hashes": {"sha256": "qJ9TKRqhB682xF1vFhnZ5UHyz+eXJr+tXW95kb9pHmw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lLjIX9yUd2w8ljKeT6/H29C9o5pTkIDzfJBojHQ0ivDF1Mks3WvJMKx+lxYrpCQjD6KCFCoYokj5u2bcgRG2Ag"}}, "unsigned": {"age_ts": 1570042992651}}keQac$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2829}{"auth_events": ["$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "prev_events": ["$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "type": "m.room.power_levels", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"users": {"@anon-20191002_181700-537:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042991566, "hashes": {"sha256": "LHr2KoJkJRxmyRnCxuypcCjUY0BKnG3SzgN+y593YG0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cx5ggRynJqs7Nui6KyV71g2zOgwOJxgSedxfx7Sum8s3sTpBHY3/CrtkiaW9Ia+Pbf5eqV3CvxX4Gfqhz2tdBw"}}, "unsigned": {"age_ts": 1570042991566}} mS@_2Ji<[.zM  _ 2   R % r E  e 8 R% X +wqEyLdDZDVmCE,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hnQOBexFYpvJntEChZ:localhost:8800,Q!hgjYwwwjWJNgwrzOto:localhost:8800 __,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ^^,Q!hgjYwwwjWJNgwrzOto:localhost:8800]],Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hegUPDZCEEmBhsNJJR:localhost:8800  ,Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ ~,Q!hegUPDZCEEmBhsNJJR:localhost:8800 } },Q!hegUPDZCEEmBhsNJJR:localhost:8800 | |+Q !hegUPDZCEEmBhsNJJR:localhost:8800 { {,Q!hFwigdYZkwYNSwelRH:localhost:8800 f f,Q!hFwigdYZkwYNSwelRH:localhost:8800 Z Z,Q!hFwigdYZkwYNSwelRH:localhost:8800 Y Y,Q!hFwigdYZkwYNSwelRH:localhost:8800 X X,Q!hFwigdYZkwYNSwelRH:localhost:8800 W W,Q!hFwigdYZkwYNSwelRH:localhost:8800 V V,Q!hFwigdYZkwYNSwelRH:localhost:8800 U U,Q!hFwigdYZkwYNSwelRH:localhost:8800 T T?,,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ``,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hgjYwwwjWJNgwrzOto:localhost:8800\\,Q!hgjYwwwjWJNgwrzOto:localhost:8800[[,Q!hgjYwwwjWJNgwrzOto:localhost:8800ZZ,Q!hgjYwwwjWJNgwrzOto:localhost:8800YY,Q!hgjYwwwjWJNgwrzOto:localhost:8800XX,Q!hgjYwwwjWJNgwrzOto:localhost:8800WW+Q !hgjYwwwjWJNgwrzOto:localhost:8800VV,Q!hZuwenlFDapIPBOyfi:localhost:8800zz,Q!hZuwenlFDapIPBOyfi:localhost:8800yy,Q!hZuwenlFDapIPBOyfi:localhost:8800xx,Q!hZuwenlFDapIPBOyfi:localhost:8800ww,Q!hZuwenlFDapIPBOyfi:localhost:8800vv+Q !hZuwenlFDapIPBOyfi:localhost:8800uu,Q!hYPSaMPGsLnvYSmwhg:localhost:880000,Q!hYPSaMPGsLnvYSmwhg:localhost:8800//,Q!hYPSaMPGsLnvYSmwhg:localhost:8800((,Q!hYPSaMPGsLnvYSmwhg:localhost:8800'',Q!hYPSaMPGsLnvYSmwhg:localhost:8800&&,Q!hYPSaMPGsLnvYSmwhg:localhost:8800%%+Q !hYPSaMPGsLnvYSmwhg:localhost:8800$$,Q!hWHyATwKfuznrqTiyu:localhost:8800\\,Q!hWHyATwKfuznrqTiyu:localhost:8800[[,Q!hWHyATwKfuznrqTiyu:localhost:8800ZZ,Q!hWHyATwKfuznrqTiyu:localhost:8800YY,Q!hWHyATwKfuznrqTiyu:localhost:8800XX+Q !hWHyATwKfuznrqTiyu:localhost:8800WW,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800+Q !hSzBsirdPWHtVjagXn:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800+Q !hNCwypIzdDZDVmCEfd:localhost:8800 mS@_2Ji<[.zM  _ 2   R % r E  e 8 R% X +wqEyLdDZDVmCE,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hnQOBexFYpvJntEChZ:localhost:8800,Q!hgjYwwwjWJNgwrzOto:localhost:8800 __,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ^^,Q!hgjYwwwjWJNgwrzOto:localhost:8800]],Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hegUPDZCEEmBhsNJJR:localhost:8800  ,Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ ~,Q!hegUPDZCEEmBhsNJJR:localhost:8800 } },Q!hegUPDZCEEmBhsNJJR:localhost:8800 | |+Q !hegUPDZCEEmBhsNJJR:localhost:8800 { {,Q!hFwigdYZkwYNSwelRH:localhost:8800 f f,Q!hFwigdYZkwYNSwelRH:localhost:8800 Z Z,Q!hFwigdYZkwYNSwelRH:localhost:8800 Y Y,Q!hFwigdYZkwYNSwelRH:localhost:8800 X X,Q!hFwigdYZkwYNSwelRH:localhost:8800 W W,Q!hFwigdYZkwYNSwelRH:localhost:8800 V V,Q!hFwigdYZkwYNSwelRH:localhost:8800 U U,Q!hFwigdYZkwYNSwelRH:localhost:8800 T T?,,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ``,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hgjYwwwjWJNgwrzOto:localhost:8800\\,Q!hgjYwwwjWJNgwrzOto:localhost:8800[[,Q!hgjYwwwjWJNgwrzOto:localhost:8800ZZ,Q!hgjYwwwjWJNgwrzOto:localhost:8800YY,Q!hgjYwwwjWJNgwrzOto:localhost:8800XX,Q!hgjYwwwjWJNgwrzOto:localhost:8800WW+Q !hgjYwwwjWJNgwrzOto:localhost:8800VV,Q!hZuwenlFDapIPBOyfi:localhost:8800zz,Q!hZuwenlFDapIPBOyfi:localhost:8800yy,Q!hZuwenlFDapIPBOyfi:localhost:8800xx,Q!hZuwenlFDapIPBOyfi:localhost:8800ww,Q!hZuwenlFDapIPBOyfi:localhost:8800vv+Q !hZuwenlFDapIPBOyfi:localhost:8800uu,Q!hYPSaMPGsLnvYSmwhg:localhost:880000,Q!hYPSaMPGsLnvYSmwhg:localhost:8800//,Q!hYPSaMPGsLnvYSmwhg:localhost:8800((,Q!hYPSaMPGsLnvYSmwhg:localhost:8800'',Q!hYPSaMPGsLnvYSmwhg:localhost:8800&&,Q!hYPSaMPGsLnvYSmwhg:localhost:8800%%+Q !hYPSaMPGsLnvYSmwhg:localhost:8800$$,Q!hWHyATwKfuznrqTiyu:localhost:8800\\,Q!hWHyATwKfuznrqTiyu:localhost:8800[[,Q!hWHyATwKfuznrqTiyu:localhost:8800ZZ,Q!hWHyATwKfuznrqTiyu:localhost:8800YY,Q!hWHyATwKfuznrqTiyu:localhost:8800XX+Q !hWHyATwKfuznrqTiyu:localhost:8800WW,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800+Q !hSzBsirdPWHtVjagXn:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800+Q !hNCwypIzdDZDVmCEfd:localhost:8800 W:+]k9? }wEj8%q? w E  } K + 3 S ! Y ' _}KWQ]2]21e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 21e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdcp1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE M&1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw j1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM c1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU q21e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwe21e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgI1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIG1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ)1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgR1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g<1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUO1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIO1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4,1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY.1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA^1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U21e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE21e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sM1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU/1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wU1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8m1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4.0e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcw1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY@1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4  a} { y w u sqomkigeca~ eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800~eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800~eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800~eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800~eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800~eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800~eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800 rpxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xpxph`xpXPhH@h                                                                 ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U T T S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! !                                                                                                               <[$H ?  1 # ~ G  U yB Nr;h1UKo8.5<')"1570040430164localhost:8829ma{"pdus":{}}5;')"1570040430163localhost:8829m`\{"pdus":{}}5:')"1570040430162localhost:8829mF{"pdus":{}}9')h1570040430161localhost:8829m;{"pdus":{"$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk":{},"$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw":{}}}58')"1570040430160localhost:8829m5{"pdus":{}}57')"1570040430159localhost:8829m2{"pdus":{}}56')"1570040430158localhost:8829mѕ{"pdus":{}}55')"1570040430157localhost:8829m{"pdus":{}}54')"1570040430156localhost:8829mٰ{"pdus":{}}53')"1570040430155localhost:8829m٭ {"pdus":{}}52')"1570040430154localhost:8829mٗs{"pdus":{}}51')"1570040430153localhost:8829mo{"pdus":{}}0')h1570040430152localhost:8829m,{"pdus":{"$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0":{},"$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts":{}}}5/')"1570040430151localhost:8829m&v{"pdus":{}}5.')"1570040430150localhost:8829mؿ:{"pdus":{}}5-')"1570040430149localhost:8829mؼS{"pdus":{}}5,')"1570040430148localhost:8829m؛{"pdus":{}}5+')"1570040430147localhost:8829mؘ4{"pdus":{}}5*')"1570040430146localhost:8829mJf{"pdus":{}}5)')"1570040430145localhost:8829m#{"pdus":{}}(')h1570040430144localhost:8829mK{"pdus":{"$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs":{},"$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow":{}}}5'')"1570040430143localhost:8829m{"pdus":{}}5&')"1570040430142localhost:8829mׯ5{"pdus":{}}5%')"1570040430141localhost:8829m׫{"pdus":{}}5$')"1570040430140localhost:8829m׍2{"pdus":{}}5#')"1570040430139localhost:8829m׈{"pdus":{}}"')<1570040430138localhost:8829m#{"pdus":{"$157004274310jCQYA:localhost:8829":{},"$157004274411xArrT:localhost:8829":{}}}5!')"1570040430137localhost:8829m {"pdus":{}}5 ')"1570040430136localhost:8829m{"pdus":{}}5')"1570040430135localhost:8829m֨{"pdus":{}}5')"1570040430134localhost:8829m֥{"pdus":{}}5')"1570040430133localhost:8829mֆ4{"pdus":{}}5')"1570040430132localhost:8829mփ{"pdus":{}}5')"1570040430131localhost:8829mO<{"pdus":{}}5')"1570040430130localhost:8829m({"pdus":{}}')81570040430129localhost:8829m {"pdus":{"$15700426764DoRhm:localhost:8829":{},"$15700426765pydev:localhost:8829":{}}}5')"1570040430128localhost:8829m{"pdus":{}}5')"1570040430127localhost:8829mդ/{"pdus":{}}5')"1570040430126localhost:8829mա{"pdus":{}}5')"1570040430125localhost:8829mՃ{"pdus":{}}5')"1570040430124localhost:8829mՁC{"pdus":{}}g')1570040430123localhost:8829m{"pdus":{"$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw":{}}}5')"1570040430122localhost:8829m7f{"pdus":{}}5')"1570040430121localhost:8829m{"pdus":{}}5')"1570040430120localhost:8829m{"pdus":{}}g')1570040430119localhost:8829ms{"pdus":{"$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY":{}}}5')"1570040430118localhost:8829m{"pdus":{}}5 ')"1570040430117localhost:8829mX{"pdus":{}}5 ')"1570040430116localhost:8829m{"pdus":{}}g ')1570040430115localhost:8829m{"pdus":{"$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg":{}}}g ')1570040430114localhost:8829m W{"pdus":{"$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs":{}}}5 ')"1570040430113localhost:8829m Q{"pdus":{}}5')"1570040430112localhost:8829m{"pdus":{}}5')"1570040430111localhost:8829m{"pdus":{}}5')"1570040430110localhost:8829mš{"pdus":{}}5')"1570040430109localhost:8829m{"pdus":{}}5')"1570040430108localhost:8829m[{"pdus":{}}5')"1570040430107localhost:8829m{"pdus":{}}5')"1570040430106localhost:8829m{"pdus":{}}5')"1570040430105localhost:8829mE{"pdus":{}} 3[$H :  ^ ' O ?/UC'\ EUNo'+R1570043734714localhost:42455m,x{"pdus":{"$89:localhost:42455":{}}}Nn'+R1570043734039localhost:42455m*{"pdus":{"$88:localhost:42455":{}}}hm'+1570043724409localhost:42455m&{"pdus":{"$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ":{}}}-l'+1570043724406localhost:42455m{}Uk'+`1570043718021localhost:42455m{"pdus":{"$86_sent_F:localhost:42455":{}}}Uj'+`1570043716261localhost:42455m{"pdus":{"$85_sent_E:localhost:42455":{}}}6i'+"1570043709303localhost:42455m{"pdus":{}}6h'+"1570043708853localhost:42455m{"pdus":{}}Ng'+R1570043685815localhost:42455mq{"pdus":{"$81:localhost:42455":{}}}6f'+"1570043667066localhost:42455m#{"pdus":{}}6e'+"1570043665475localhost:42455m {"pdus":{}}Yd'+h1570043658776localhost:42455m {"pdus":{"$64_redaction2:localhost:42455":{}}}Yc'+h1570043657562localhost:42455m{"pdus":{"$63_redaction1:localhost:42455":{}}}Ub'+`1570043650664localhost:42455m{"pdus":{"$lolredact:localhost:42455":{}}}ha'+1570043643608localhost:42455mX{"pdus":{"$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc":{}}}h`'+1570043642975localhost:42455mN{"pdus":{"$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA":{}}}h_'+1570043641630localhost:42455mv{"pdus":{"$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E":{}}}h^'+1570043628616localhost:42455m {"pdus":{"$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY":{}}}h]'+1570043627779localhost:42455m䋘{"pdus":{"$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE":{}}}h\'+1570043626471localhost:42455m䅂{"pdus":{"$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk":{}}}h['+1570043625647localhost:42455m{"pdus":{"$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A":{}}}6Z'+"1570043618483localhost:42455me{"pdus":{}}6Y'+"1570043617971localhost:42455mc]{"pdus":{}}hX'+1570043609963localhost:42455mG{"pdus":{"$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU":{}}}TW'+^1570043594716localhost:42455mu{"pdus":{"$60_msg_e:localhost:42455":{}}}NV'+R1570043561185localhost:42455m{"pdus":{"$53:localhost:42455":{}}}NU'+R1570043553629localhost:42455mn{"pdus":{"$49:localhost:42455":{}}}NT'+R1570043552017localhost:42455mfE{"pdus":{"$44:localhost:42455":{}}}3S'+1570043544090localhost:42455mE {"pdus":{"$42:localhost:42455":{"error":"ERROR 403: Your server isn't divulging details about prev_events referenced in this event."}}}NR'+R1570043431598localhost:42455m`{"pdus":{"$15:localhost:42455":{}}}hQ'+1570043407452localhost:42455m0{"pdus":{"$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU":{}}}hP'+1570043400274localhost:42455m'{"pdus":{"$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg":{}}}5O')"1570040430183localhost:8829m{"pdus":{}}5N')"1570040430182localhost:8829mgS{"pdus":{}}5M')"1570040430181localhost:8829m{"pdus":{}}5L')"1570040430180localhost:8829mʜ{"pdus":{}}5K')"1570040430179localhost:8829mT{"pdus":{}}5J')"1570040430178localhost:8829mS{"pdus":{}}5I')"1570040430177localhost:8829m%{"pdus":{}}gH')1570040430176localhost:8829mb{"pdus":{"$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E":{}}}5G')"1570040430175localhost:8829m{"pdus":{}}5F')"1570040430174localhost:8829mX{"pdus":{}}5E')"1570040430173localhost:8829mQN{"pdus":{}}5D')"1570040430172localhost:8829m%{"pdus":{}}5C')"1570040430171localhost:8829m${"pdus":{}}5B')"1570040430170localhost:8829m#z{"pdus":{}}5A')"1570040430169localhost:8829m!0{"pdus":{}}5@')"1570040430168localhost:8829m{"pdus":{}}5?')"1570040430167localhost:8829m{"pdus":{}}5>')"1570040430166localhost:8829m{"pdus":{}}5=')"1570040430165localhost:8829m{"pdus":{}} h5 g 4 i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3Evblysawo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9go   *t eQau$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2836}{"auth_events": ["$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc", "$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM", "$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8"], "prev_events": ["$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc"], "type": "m.room.join_rules", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042999279, "hashes": {"sha256": "pa2WUHdBWfjEV+fJn/6BqekAzFW2glDmDD9zzSMmugU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L5UY/17lhpLnw/pgPv8zT4svBDB4jDb14DqMJjHhVQIIwxX2d6UeVPm6M5ZAXXpnHEpkOQvbt/2g9OjeiF/XDA"}}, "unsigned": {"age_ts": 1570042999279}}keQac$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2835}{"auth_events": ["$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM", "$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8"], "prev_events": ["$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8"], "type": "m.room.power_levels", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"users": {"@anon-20191002_181700-539:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042998492, "hashes": {"sha256": "GvOxDTLjY8rZKB7QzhPgRiSAkfE/QGDqr6cAHjOElBw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fg2LUl+NsRphzEMcCmu7LDjDwYNcZqbm5TFcUxqjy2mV0uEHVJcKjoghYNABVy6Vxvw2GZ/pc4nlZLoI7FtiDg"}}, "unsigned": {"age_ts": 1570042998492}}veQay$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2834}{"auth_events": ["$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM"], "prev_events": ["$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM"], "type": "m.room.member", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-539", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-539:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042997965, "hashes": {"sha256": "dnAXf6bQ6GzP+cS9QR/I+ScDQKi+6QThn2eGqlsRRuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aVPI6QWiyR8pfyR6Oxt5Eb6BocP6aMW+eym3eb8NWsZ2zbonYTYnqdr5r6zxfCxy6NdK1etkOHe2TyRroxpRDQ"}}, "unsigned": {"age_ts": 1570042997965}}ieQa_$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2833}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-539:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042997108, "hashes": {"sha256": "LXeYCW4XiIXMkAjYGTPNJfXOrVR6Bf5E2Mh/8Y4UdAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TBi+YRzEk4Ywt1oukDiOSA3lnKK+9wYyp5o0AVv7dCYj8oNOgi1nr938XnwB4KlhJP8nCg2z5R//I1EnEXXKDQ"}}, "unsigned": {"age_ts": 1570042997108}} -RM H C > 9 4/*|%w rmhc TEQe E!zHBgbzUZHshNGZvIBS:localhost:8800$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQTDQe D!zHBgbzUZHshNGZvIBS:localhost:8800$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLoTCQe C!zHBgbzUZHshNGZvIBS:localhost:8800$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcTBQe B!zHBgbzUZHshNGZvIBS:localhost:8800$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1IkecuoTAQe A!cidyuyekVzJHHvyomb:localhost:8800$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1AT@Qe @!cidyuyekVzJHHvyomb:localhost:8800$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTgT?Qe ?!cidyuyekVzJHHvyomb:localhost:8800$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUT>Qe >!cidyuyekVzJHHvyomb:localhost:8800$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_IT=Qe =!cidyuyekVzJHHvyomb:localhost:8800$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswT<Qe  B J3  Pj8e    |1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAJ1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEs1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEr1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9op1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEt1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0r1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0q1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ1e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE 1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQF1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQE1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQD1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI41e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI41e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAI1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU{1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk~1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU|0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEC0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEB0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEA1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkV1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkU1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkT1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAK1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU]1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU\1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M :1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M 91e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M 81e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK01e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0~1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0}1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU"1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kp1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5ko1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kn1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk(1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk'1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk&1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU}1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g 5 64l4n S O3Q PqRn57 o 7 Sm  6   R48e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNosha256 88e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYsha256 8e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLksha2568e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYsha256i8e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4sha2568e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Ysha256 8e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wsha256M8e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMsha2568e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUsha256W8e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8sha2568e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwsha2568e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Asha25648e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMsha2568e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8csha2568e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMsha2568e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQsha256 K8e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAsha256 W8e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyAsha256 8e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMsha256 8e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQsha2568e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgsha2568e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gsha2568e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0sha256 18e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8sha256M8e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUsha256l8e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEsha256W8e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0sha256(8e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4sha2568e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDosha2568e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwsha2568e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLksha2568e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inosha256 8e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4sha256;8e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8sha256 R88e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3Isha256(8e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgsha25618e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8sha256 8e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0sha256 8e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAsha2568e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgsha2568e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcsha2568e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fksha256 8e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUsha2567e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30sha256E8e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREsha256C8e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4sha2568e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQsha256 F 98e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqsssha256S8e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUsha256 8e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegsha256LU98e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggsha2568e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60sha256   *teQau$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2843}{"auth_events": ["$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y", "$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ", "$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg"], "prev_events": ["$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y"], "type": "m.room.join_rules", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043007544, "hashes": {"sha256": "M8S2cIc9mqjw0rZ57fhcFw809uZIWpQXDIIs3l7AMSs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZEKV5Ni5NHKJsrXZ78yAUfmgmKV3iQVm6agPumSOcgVs77CCNH35aJR/GPX87jnOC6wV3URtjC3srshbnDHEDA"}}, "unsigned": {"age_ts": 1570043007544}}keQac$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2842}{"auth_events": ["$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ", "$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg"], "prev_events": ["$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg"], "type": "m.room.power_levels", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"users": {"@anon-20191002_181700-541:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043006672, "hashes": {"sha256": "x7v0RTtN1IzrXrbaYA1uhFCjwzTIoAi7MaVgZOzHqZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VHHRYwPf92AeJd/eu815Q6DZTxJLmyCaPT0J5r7BDOzbYc3tvauNwTKIkOZl5AIgadyJc5dLpZ//LNNpVNHWBQ"}}, "unsigned": {"age_ts": 1570043006672}}veQay$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2841}{"auth_events": ["$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ"], "prev_events": ["$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ"], "type": "m.room.member", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-541", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-541:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043006069, "hashes": {"sha256": "Wn2Nj1eW8yMfvRBKTI8g41eVNiHvT/GOahKH/X8Hhq8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cQC67fyVe0qhAXD1H7rZgfvTHsFMAVVORZL6Lk+fB13THpsuQjw8auX3Ly4XRYxk1F9/JBxXlNRAEK5F8txdBw"}}, "unsigned": {"age_ts": 1570043006069}}i eQa_$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2840}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-541:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043005094, "hashes": {"sha256": "NXzzJL8/SA9FT+yVEuOu+KaZ8zlyAhMXt1xJeH0FHGk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jmVSO5qTKcDNjKKRW9XlDKB9NmvBVSAXRSGsmCXEgjMhh7cLYTSBIhuPXlD/Hujt3f1DXR/R5ipNO6HVVmsxAw"}}, "unsigned": {"age_ts": 1570043005094}} Rk8q? { J  U $ ` / k : v E }Le4oMT"j8dD$o> wE/ Q !dBfASZrfiFeSKTjYJm:localhost:8800%. Q  !tcYctHPiaKzsKgrXlU:localhost:8800%/ Q !taANXnGBZntAreRurn:localhost:8800%/ Q !drnXStKXkNQkouqUAg:localhost:8800%. Q  !zScKnCZCFPIIodAiQj:localhost:8800%/ Q !LazKtcHZriKzCvvGwV:localhost:8800%/ Q !lEJUJZxqZPKZetemiR:localhost:8800 %/ Q !bLWyXaXdvUhdSAooUz:localhost:8800%. Q  !YmRuIWixFpaqEeDQLZ:localhost:8800%/ Q !bjdLCdBwkKaihRIRFG:localhost:8800%. Q  !qzrZzAieCgGSbpKOQR:localhost:8800%/ Q !qzurjQHmiriwjaUMhO:localhost:8800% 1!0:localhost:41985  1!0:localhost:44405  1!0:localhost:37265  1!8:localhost:42455 ~ 1!7:localhost:42455 .} Q  !TSFcaXDBqrCREHRHxv:localhost:8800%/| Q !AOEdqVKPFddrqbKPOL:localhost:8800%.{ Q  !wBBQYEPjQGnoAzDpEu:localhost:8800%/z Q !oZGRyBAkNDrEeiAqWL:localhost:8800%y 1 !6:localhost:42455%/x Q !cRbfhxZdPstEsPGPAu:localhost:8800%/w Q !sAWFpvSUPExZLVcPEd:localhost:8800%/v Q !YpcmaMNMzjvtgYtrli:localhost:8800%/u Q !PzoqoNRxeEEqiLyVSV:localhost:8800%/t Q !uPxXJHJyFQwvpQLZNs:localhost:8800%.s Q  !UluPYLGXtInKDTjRzp:localhost:8800 /r Q !QkkdnzvdrjHaFGkzMt:localhost:8800%/q Q !DuqHkpTfWCUblSrxQj:localhost:8800%/p Q !NanhNmCnVVpmZRJrTF:localhost:8800%o 1 !5:localhost:42455%/n Q !sqkBzbHHJOTNWwynqV:localhost:8800%.m Q  !qInWQPtNQfBFoVzUtP:localhost:8800%.l Q  !FZOLkaLbBpaibrbHZx:localhost:8800%.k Q  !QxqzQoEBIZhmzHIGrl:localhost:8800%.j Q  !fDISaqNBhlOwherxSt:localhost:8800%.i Q  !yAfsSyqpJWFnkXQFJL:localhost:8800%.h Q  !AYFqrmxwClFQlcTTYq:localhost:8800%/g Q !pHoEnhQYhwlbJXqKQE:localhost:8800%f 1 !0:localhost:42455%.e Q  !OCEHAjcOXWNyWIESIS:localhost:8800%.d Q  !qjijQBfMwsCPTVgKPm:localhost:8800%.c Q  !kjjUsMowsioSQRIJeg:localhost:8800%0b Q!UTAORDrNxIbSlGByAp:localhost:8800 %0a Q!MXhwoqNXvexeDDSOZT:localhost:8800%.` Q  !zqQJfFCRlSEDPKlQPy:localhost:8800 8._ Q  !JnAKXOrlyisFUpgJPw:localhost:8800%.^ Q  !XRAZJeoZBhGeHKKjaG:localhost:8800%.] Q  !GwLdUoDplyVUogXDzu:localhost:8800%.\ Q  !nfxDdcgDfooxyiAzaB:localhost:8800%.[ Q  !XGAmnfaVvjDtQJuufa:localhost:8800%.Z Q  !OXpGdKbowFUTChPdmF:localhost:8800%.Y Q  !XUbDuPDiMTXJZDyAPc:localhost:8800%.X Q  !VhUAklonNaWKRnLkcr:localhost:8800%.W Q  !ybXveQoxPVhjpKHAkG:localhost:8800%.V Q  !ijOiudvuzOLNmgNKfG:localhost:8800%.U Q  !hrhDJbmXvXBizKoiiK:localhost:8800%.T Q  !iLHJbsFszubrnybDNz:localhost:8800%.S Q  !hGsPmWXboxZZtOlsxY:localhost:8800%.R Q  !dvZnfJonDkxlrrDXUk:localhost:8800%.Q Q  !vZGjXEXQoCaoUXnkCa:localhost:8800%.P Q  !GBPGYLDkXcAsHgkfuS:localhost:8800%.O Q  !fdEymmlcUvjgshvVyl:localhost:8800%.N Q  !xcdNyJNFEdaBGFycsB:localhost:8800%.M Q  !SUDzkfFBgpuCANOxRS:localhost:8800%.L Q  !rWmvvGBgmFMdVvcfPk:localhost:8800%.K Q  !gXfXRDTXeVvOHQdaaQ:localhost:8800%.J Q  !hegUPDZCEEmBhsNJJR:localhost:8800%.I Q  !aSKNKSGXPGoIbSrbEN:localhost:8800%.H Q  !peJMRJtXBvIiCttNmm:localhost:8800%.G Q  !tPkCGJBKmqUXJoRrnY:localhost:8800%.F Q  !QnmLrBAxeItdHsaxWf:localhost:8800%/E Q !hFwigdYZkwYNSwelRH:localhost:8800%.D Q   !paDmNxsOZIKyApbxXs:localhost:8800%.C Q   !OtBUhGeUSiDMWRKIOT:localhost:8800%/B Q !zHBgbzUZHshNGZvIBS:localhost:8800%0A Q!cidyuyekVzJHHvyomb:localhost:8800%0@ Q!pduebXnTyxQWVxEICp:localhost:8800%.? Q  !ZvLVbnHjeymRiFIkYr:localhost:8800%/> Q !VUibrTIkcRbfrogbQV:localhost:8800%/= Q !WpThtNEVhrUbUdCdMJ:localhost:8800% NV Z  p  n&6:JN 1e'Q ]$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUcm.room.member!pduebXnTyxQWVxEICp:localhost:8800mۨm۩U@anon-20191002_181700-549:localhost:8800,0e?Q ]$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-Em.room.history_visibility!pduebXnTyxQWVxEICp:localhost:8800mۢmۤP@anon-20191002_181700-548:localhost:8800$/e/Q ]$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8m.room.join_rules!pduebXnTyxQWVxEICp:localhost:8800m۠0m۠@anon-20191002_181700-548:localhost:8800&.e3Q ]$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slgm.room.power_levels!pduebXnTyxQWVxEICp:localhost:8800mۜm۞)@anon-20191002_181700-548:localhost:8800 -e'Q ]$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yom.room.member!pduebXnTyxQWVxEICp:localhost:8800mۘmۙ@anon-20191002_181700-548:localhost:8800, e'Q  ]$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYm.room.create!pduebXnTyxQWVxEICp:localhost:8800m۔ m۔@anon-20191002_181700-548:localhost:8800 +e'Q ]$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMm.room.member!ZvLVbnHjeymRiFIkYr:localhost:8800mۊ*mۋ@anon-20191002_181700-545:localhost:8800,*e?Q ]$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYm.room.history_visibility!ZvLVbnHjeymRiFIkYr:localhost:8800mtmw@anon-20191002_181700-545:localhost:8800$)e/Q ]$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAkm.room.join_rules!ZvLVbnHjeymRiFIkYr:localhost:8800momq@anon-20191002_181700-545:localhost:8800&(e3Q ]$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMm.room.power_levels!ZvLVbnHjeymRiFIkYr:localhost:8800miOml@anon-20191002_181700-545:localhost:8800 'e'Q ]$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590m.room.member!ZvLVbnHjeymRiFIkYr:localhost:8800mcmd@anon-20191002_181700-545:localhost:8800& e'Q  ]$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIm.room.create!ZvLVbnHjeymRiFIkYr:localhost:8800mZm[@anon-20191002_181700-545:localhost:8800 %e'Q ]$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4m.room.member!VUibrTIkcRbfrogbQV:localhost:8800m?mB@anon-20191002_181700-544:localhost:8829 $e'Q ]$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4m.room.member!VUibrTIkcRbfrogbQV:localhost:8800m;meeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~=eeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800~<eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800~;eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~:eeQ$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~9eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800~8eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~7eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~6eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~5eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800~4eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~3eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~2eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~1eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~0eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~/eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~.eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~-eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~,eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~+eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~*eeQ$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~)eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800~(eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~'eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~&eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~%eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800~$eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~#eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~"eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~!eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800 |=t5- l d % \  U MeeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800 ieeQ$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800xeeQ$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800aEeeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800܁eeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800DeeQ$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800ށeeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800 eeQ$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800zeeQ$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800-eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800}eeQ$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800JeeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800GeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800xeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800ˁeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800ʁeeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800@eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800AeeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800F ].6n&^6F ~ X 0  h @ v N &vN^ pH V .  f >  nF~V.~V.f>`8!aLx.( ('Q!bNSXSTadOMhIrYpMzH:localhost:8800q'Q!bNSXSTadOMhIrYpMzH:localhost:8800p'Q!bNSXSTadOMhIrYpMzH:localhost:8800o'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800s'Q!bNSXSTadOMhIrYpMzH:localhost:8800r'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800('Q!anErKtXIsVKEEsrzWM:localhost:8800''Q!anErKtXIsVKEEsrzWM:localhost:8800&'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800v'Q!bNSXSTadOMhIrYpMzH:localhost:8800u'Q!bNSXSTadOMhIrYpMzH:localhost:8800t'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800n'Q!bNSXSTadOMhIrYpMzH:localhost:8800m'Q!bNSXSTadOMhIrYpMzH:localhost:8800l'Q!bNSXSTadOMhIrYpMzH:localhost:8800k'Q!bNSXSTadOMhIrYpMzH:localhost:8800j'Q!bNSXSTadOMhIrYpMzH:localhost:8800i'Q!bNSXSTadOMhIrYpMzH:localhost:8800h'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800+'Q!aZwMKYDXJRlSKjQNWM:localhost:8800*'Q!aZwMKYDXJRlSKjQNWM:localhost:8800)'Q!aZwMKYDXJRlSKjQNWM:localhost:8800('Q!aZwMKYDXJRlSKjQNWM:localhost:8800''Q!aZwMKYDXJRlSKjQNWM:localhost:8800&'Q!anErKtXIsVKEEsrzWM:localhost:8800)'Q!bNSXSTadOMhIrYpMzH:localhost:8800z'Q!bNSXSTadOMhIrYpMzH:localhost:8800y'Q!bNSXSTadOMhIrYpMzH:localhost:8800x'Q!bNSXSTadOMhIrYpMzH:localhost:8800w'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800J'Q!aiOswwhoZqjhcjzbzc:localhost:8800H'Q!aiOswwhoZqjhcjzbzc:localhost:8800A'Q!aiOswwhoZqjhcjzbzc:localhost:8800:'Q!aiOswwhoZqjhcjzbzc:localhost:88009'Q!aiOswwhoZqjhcjzbzc:localhost:88008'Q!aiOswwhoZqjhcjzbzc:localhost:88007'Q!aiOswwhoZqjhcjzbzc:localhost:88006'Q!aiOswwhoZqjhcjzbzc:localhost:88005'Q!aiOswwhoZqjhcjzbzc:localhost:88004'Q!aiOswwhoZqjhcjzbzc:localhost:88003'Q!anErKtXIsVKEEsrzWM:localhost:8800+'Q!anErKtXIsVKEEsrzWM:localhost:8800*'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800~'Q!bNSXSTadOMhIrYpMzH:localhost:8800}'Q!bNSXSTadOMhIrYpMzH:localhost:8800|'Q!bNSXSTadOMhIrYpMzH:localhost:8800{   *teQau$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2850}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc"], "type": "m.room.join_rules", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043015968, "hashes": {"sha256": "I1YmElPHcUF5qipYav5qcSPMC6U6fccoYhQxE22KIew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xNC0XNXdnncc558xddhw6t0ANOzsaQWBjKNgoNNnJ6OOOkQ3sgeYavaXwofv3e/CPq3vCHDKQVXaQi+d7szaAA"}}, "unsigned": {"age_ts": 1570043015968}}keQac$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2849}{"auth_events": ["$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "type": "m.room.power_levels", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"users": {"@anon-20191002_181700-543:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043014896, "hashes": {"sha256": "hQJwHCIpCH+UMU0LhOJU0I67lIbJwddL1cLNPwjAvJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZlFt8xVl39NQWDJfAIMOIPtNozS+zITwFWwKaAeQPDRg3e4Etobfjw7d/K/d3iH4nDpQYytiUqFZS6X9wIdQAA"}}, "unsigned": {"age_ts": 1570043014896}}veQay$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2848}{"auth_events": ["$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I"], "prev_events": ["$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I"], "type": "m.room.member", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-543", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-543:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043013998, "hashes": {"sha256": "uJmI+FYne6XfPaLDYQ261OFjX+f9k2bFpLs/HFzFdzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VsxJLe+PE+9upZTL4V00jOaD7EvvuAE/Jv2H5VR9N7DFqSYYo4DDYIh6+whBsxWSqPtxsDI+EiIHVnr+CfR1Aw"}}, "unsigned": {"age_ts": 1570043013998}}ieQa_$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2847}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-543:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043013227, "hashes": {"sha256": "o8m66FnfFD7+BUqf7Qes8WObJmZzVIGWh4bli43jLrY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TEelAzvpWwwAY89WyqFKFBlYQgC1Hzt8jqeDNve38ANl5MDxRTDfkgCyu+t5n7yEt9Zl1xW3LdnYD3N2J7WhDg"}}, "unsigned": {"age_ts": 1570043013227}} DU(Z%g4j7 k : o < n 9  i 6  h 5 g2d/c0b-]U"R!4]@anon-20191002_181700-625:localhost:8800mL2]@anon-20191002_181700-625:localhost:8800aK4]@anon-20191002_181700-584:localhost:8800m2]@anon-20191002_181700-584:localhost:8800a4]@anon-20191002_181700-583:localhost:8800m2]@anon-20191002_181700-583:localhost:8800a4]@anon-20191002_181700-582:localhost:8800m2]@anon-20191002_181700-582:localhost:8800a2]@anon-20191002_181700-581:localhost:8800a4]@anon-20191002_181700-580:localhost:8800m4]@anon-20191002_181700-624:localhost:8800mJ2]@anon-20191002_181700-624:localhost:8800aI4]@anon-20191002_181700-623:localhost:8800mH2]@anon-20191002_181700-623:localhost:8800aG4]@anon-20191002_181700-622:localhost:8800mF2]@anon-20191002_181700-622:localhost:8800aE2]@anon-20191002_181700-621:localhost:8800aC4]@anon-20191002_181700-620:localhost:8800mD2]@anon-20191002_181700-620:localhost:8800aB2[@anon-20191002_181700-61:localhost:8800mo0[@anon-20191002_181700-61:localhost:8800an4]@anon-20191002_181700-619:localhost:8800mA2]@anon-20191002_181700-619:localhost:8800a@2]@anon-20191002_181700-618:localhost:8800a?4]@anon-20191002_181700-617:localhost:8800m>2]@anon-20191002_181700-617:localhost:8800a=4]@anon-20191002_181700-616:localhost:8800m<2]@anon-20191002_181700-616:localhost:8800a;2]@anon-20191002_181700-615:localhost:8800a:4]@anon-20191002_181700-614:localhost:8800m92]@anon-20191002_181700-614:localhost:8800a82]@anon-20191002_181700-613:localhost:8800a74]@anon-20191002_181700-612:localhost:8800m62]@anon-20191002_181700-612:localhost:8800a52]@anon-20191002_181700-611:localhost:8800a44]@anon-20191002_181700-610:localhost:8800m32]@anon-20191002_181700-610:localhost:8800a00[@anon-20191002_181700-60:localhost:8800am4]@anon-20191002_181700-609:localhost:8800m22]@anon-20191002_181700-609:localhost:8800a/4]@anon-20191002_181700-608:localhost:8800m12]@anon-20191002_181700-608:localhost:8800a.4]@anon-20191002_181700-606:localhost:8800m-2]@anon-20191002_181700-606:localhost:8800a*4]@anon-20191002_181700-605:localhost:8800m,2]@anon-20191002_181700-605:localhost:8800a)2]@anon-20191002_181700-604:localhost:8800a+4]@anon-20191002_181700-603:localhost:8800m(2]@anon-20191002_181700-603:localhost:8800a&2]@anon-20191002_181700-602:localhost:8800a'4]@anon-20191002_181700-601:localhost:8800m%2]@anon-20191002_181700-601:localhost:8800a#2]@anon-20191002_181700-600:localhost:8800a$/Y@anon-20191002_181700-5:localhost:8800a"0[@anon-20191002_181700-59:localhost:8800al2]@anon-20191002_181700-598:localhost:8800a!2]@anon-20191002_181700-597:localhost:8800a 2]@anon-20191002_181700-596:localhost:8800a2]@anon-20191002_181700-595:localhost:8800a2]@anon-20191002_181700-593:localhost:8800a2]@anon-20191002_181700-591:localhost:8800a2]@anon-20191002_181700-590:localhost:8800a0[@anon-20191002_181700-58:localhost:8800ak2]@anon-20191002_181700-589:localhost:8800a2]@anon-20191002_181700-588:localhost:8800a2]@anon-20191002_181700-587:localhost:8800a2]@anon-20191002_181700-586:localhost:8800a2]@anon-20191002_181700-585:localhost:8800a  4 k 9mfd]c@anon-20191002_181700-576:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAo127.0.0.1d]c@anon-20191002_181700-575:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7Ao127.0.0.1d]c@anon-20191002_181700-574:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6Ao127.0.0.1d]c@anon-20191002_181700-573:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgo127.0.0.1d]c@anon-20191002_181700-572:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3Ao127.0.0.1d]c@anon-20191002_181700-571:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgo127.0.0.1d]c@anon-20191002_181700-570:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQo127.0.0.1a[a@anon-20191002_181700-56:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO0FsZFQwLSxGbjAzXixUXgowMDJmc2lnbmF0dXJlIFiy7c5jxVNqQKAd6fTEIOinfNma03Ww4HTuuirYbJ7_Cg127.0.0.1/d]c@anon-20191002_181700-569:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQo127.0.0.1d]c@anon-20191002_181700-568:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3Ao127.0.0.1  w^4eQ1#$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2853}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-544", "membership": "join"}, "depth": 7, "hashes": {"sha256": "f4Ndgmq5pQJpHvDkl0oR1av55mB0rBCVuCheuNpC+dA"}, "origin": "localhost:8829", "origin_server_ts": 1570043019169, "prev_events": ["$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4"], "prev_state": [], "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-544:localhost:8829", "state_key": "@anon-20191002_181700-544:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n9Y+Vq+W2hIpSfpORnWLLKQmKYq4KzMXTAlJfuY9h9yVXCM5H8pYujXJljsaCFf0iGXxK1sum0hOnSBxG+1MCQ"}, "localhost:8829": {"ed25519:a_UxIG": "kYAhYeqRzBvmusV5o7RTJUT1ayHx3P21OnSGrkhHTk+5rxaRPSwsi4QHMXt1MaY+WVQ8bp3tRZlL3wGId0SZCA"}}, "unsigned": {"age": 264, "replaces_state": "$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4"}}eQa7$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2852}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI"], "type": "m.room.member", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-544", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-544:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043018183, "hashes": {"sha256": "JAjMXsowTnTqY3tn0DHqwK19xHRs/7WJv6FXVYCNFSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8UA2m7aQweuFlPAJGEeQdVmlopBqkXpAbZ+2nGhte4DU6qoApRh4s1+nae38ER9OKf/HB5Ncdr56y5m1QcGFBA"}, "localhost:8829": {"ed25519:a_UxIG": "IHVamJS9qL5wWpl5fqoVJkWSwomC/g0h/xG5vhAXUQsjfix+xzLko8N5o7sg3BrHhp+3ZW0YgdmwvCL4i1MTCA"}}, "unsigned": {"age_ts": 1570043018183, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-543:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-543:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-543", "avatar_url": null}, "sender": "@anon-20191002_181700-543:localhost:8800"}]}}eQa$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2851}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8"], "type": "m.room.history_visibility", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043016696, "hashes": {"sha256": "Y53rcVat+fWfcjhN49Pufs3UWuWNdD1XSp5NPgtV5mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e0BZfr6no6dEzoHmV95QexyrWYFmiWIbjWOeLyQBb82pntU3BjLeAYrkOCDL3SqiIduOQeYNui806PudaCcpAA"}}, "unsigned": {"age_ts": 1570043016696}}  N> !D' T G  z W d M t5hExUe&u6y:} @  g ( v [ 8>= fC 1  y>'] \m.room.member@anon-20191002_181700-557:localhost:8800 k>'] Nm.room.member@anon-20191002_181700-553:localhost:8829 ]>'] Mm.room.member@anon-20191002_181700-553:localhost:8829 \>'] Lm.room.member@anon-20191002_181700-553:localhost:8829 [>'] Km.room.member@anon-20191002_181700-553:localhost:8829 Z>'] Jm.room.member@anon-20191002_181700-553:localhost:8829 Y>'] Im.room.member@anon-20191002_181700-553:localhost:8829 X>'] Hm.room.member@anon-20191002_181700-553:localhost:8829 W>'] Gm.room.member@anon-20191002_181700-553:localhost:8829 V"?  Fm.room.history_visibility U/  Em.room.join_rules T3  Dm.room.power_levels S>'] Cm.room.member@anon-20191002_181700-552:localhost:8800 R'  Bm.room.create Q>'] Am.room.member@anon-20191002_181700-551:localhost:8800 P"?  @m.room.history_visibility O/  ?m.room.join_rules N3  >m.room.power_levels M>'] =m.room.member@anon-20191002_181700-550:localhost:8800 L'  '] ;m.room.member@anon-20191002_181700-549:localhost:8800 J"?  :m.room.history_visibility I/  9m.room.join_rules H3  8m.room.power_levels G>'] 7m.room.member@anon-20191002_181700-548:localhost:8800 F'  6m.room.create E>'] 5m.room.member@anon-20191002_181700-546:localhost:8829 D"?  4m.room.history_visibility C/  3m.room.join_rules B3  2m.room.power_levels A>'] 1m.room.member@anon-20191002_181700-545:localhost:8800 @'  0m.room.create ?>'] /m.room.member@anon-20191002_181700-544:localhost:8829 >>'] .m.room.member@anon-20191002_181700-544:localhost:8829 =>'] -m.room.member@anon-20191002_181700-544:localhost:8829 <"?  ,m.room.history_visibility ;/  +m.room.join_rules :3  *m.room.power_levels 9>'] )m.room.member@anon-20191002_181700-543:localhost:8800 8'  (m.room.create 7>'] 'm.room.member@anon-20191002_181700-542:localhost:8829 6>'] &m.room.member@anon-20191002_181700-542:localhost:8829 5>'] %m.room.member@anon-20191002_181700-542:localhost:8829 4'  m.room.create !"?  [m.room.history_visibility j/  Zm.room.join_rules i3  Ym.room.power_levels h>'] Xm.room.member@anon-20191002_181700-556:localhost:8800 g'  Wm.room.create f>'] Vm.room.member@anon-20191002_181700-555:localhost:8800 e>'] Um.room.member@anon-20191002_181700-555:localhost:8800 d>'] Tm.room.member@anon-20191002_181700-555:localhost:8800 c"?  Sm.room.history_visibility b/  Rm.room.join_rules a3  Qm.room.power_levels `>'] Pm.room.member@anon-20191002_181700-554:localhost:8800 _'  Om.room.create ^"?  $m.room.history_visibility 3/  #m.room.join_rules 23  "m.room.power_levels 1>'] !m.room.member@anon-20191002_181700-541:localhost:8800 0'  m.room.create />'] m.room.member@anon-20191002_181700-540:localhost:8829 .>'] m.room.member@anon-20191002_181700-540:localhost:8829 ->'] m.room.member@anon-20191002_181700-540:localhost:8829 ,"?  m.room.history_visibility +/  m.room.join_rules *3  m.room.power_levels )4>'] m.room.member@anon-20191002_181700-539:localhost:8800 ('  m.room.create '>'] m.room.member@anon-20191002_181700-538:localhost:8800 &"?  m.room.history_visibility %/  m.room.join_rules $3  m.room.power_levels #>'] m.room.member@anon-20191002_181700-537:localhost:8800 ">'] m.room.member@anon-20191002_181700-536:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules  +g|@ ,u:g#l1  B P W C  QV~\%Hal66Q' !dvZnfJonDkxlrrDXUk:localhost:86Q' !dnZVySJLGNtUKsSgXW:localhost:8800m.room.create<Q3 !djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels^Q']!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800:Q/ !djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rulesBQ? !djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibility6Q' !djwLhpJUYOKsgQtrky:localhost:8800m.room.create<Q3 !dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels ^Q']!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800:Q/ !dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rules BQ? !dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility 6Q' !dWgOTucBVQBKZjfndN:localhost:8800m.room.create;Q3 !dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels~\Q'[!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800}9Q/ !dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rulesBQ? !dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility<Q3 !eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels R^Q']!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829 U^Q']!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800 Q:Q/ !eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rules SBQ? !eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibility T6Q' !eGEEtFXUXuZDImkeql:localhost:8800m.room.create P<Q3 !dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels^Q']!dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800:Q/ !dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rulesBQ? !dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibility6Q' !dvZnfJonDkxlrrDXUk:localhost:8800m.room.create<Q3 !duCKuavMBSfRbTFPsc:localhost:8800m.room.power_levels]Q'[!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800]Q'[!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-86:localhost:8800:Q/ !duCKuavMBSfRbTFPsc:localhost:8800m.room.join_rulesBQ? !duCKuavMBSfRbTFPsc:localhost:8800m.room.history_visibility<Q3 !duCKuavMBSfRbTFPsc:localhost:8800m.room.guest_access6Q' !duCKuavMBSfRbTFPsc:localhost:8800m.room.create<Q3 !drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels !^Q']!drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800 RQ'E!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455 &:Q/ !drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules #BQ? !drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibility %6Q' !drnXStKXkNQkouqUAg:localhost:8800m.room.create <Q3 !dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels^Q']!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800:Q/ !dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rulesBQ? !dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibility !|s @ O X 03BpsY?N|e eQ/ $dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rulesgeQ3 $J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels eQ']$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800aeQ' $PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.create eQ']$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829meQ? $kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibilityeeQ/ $1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rulesg~eQ3 $ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels }eQ']$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800a|eQ' $Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.create {eQ']$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800mzeQ? $FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibilityeyeQ/ $EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800m.room.join_rulesgxeQ3 $cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels weQ']$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800aveQ' $vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800m.room.create ueQ']$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-549:localhost:8800mteQ? $aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800m.room.history_visibilityeseQ/ $H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800m.room.join_rulesgreQ3 $_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800m.room.power_levels qeQ']$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-548:localhost:8800apeQ' $ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800m.room.create oeQ']$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-546:localhost:8829mneQ? $ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.history_visibilityemeQ/ $So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.join_rulesgleQ3 $4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.power_levels keQ']$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800ajeQ' $w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.create ieQ']$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829 JZ,tFvHb4 | N h : T & n @  \ . vHd6~R$l>b4|P"~--]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-551:localhost:8800-]@anon-20191002_181700-550:localhost:8800-]@anon-20191002_181700-549:localhost:8800-]@anon-20191002_181700-548:localhost:8800-]@anon-20191002_181700-545:localhost:8800-]@anon-20191002_181700-544:localhost:8829-]@anon-20191002_181700-543:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800+[@anon-20191002_181700-64:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800-]@anon-20191002_181700-641:localhost:8800-]@anon-20191002_181700-640:localhost:8800+[@anon-20191002_181700-63:localhost:8800-]@anon-20191002_181700-639:localhost:8800-]@anon-20191002_181700-638:localhost:8800-]@anon-20191002_181700-637:localhost:8800-]@anon-20191002_181700-635:localhost:8800-]@anon-20191002_181700-634:localhost:8800-]@anon-20191002_181700-633:localhost:8800-]@anon-20191002_181700-632:localhost:8800+[@anon-20191002_181700-62:localhost:8800-]@anon-20191002_181700-629:localhost:8829-]@anon-20191002_181700-628:localhost:8800-]@anon-20191002_181700-626:localhost:8800-]@anon-20191002_181700-625:localhost:8800-]@anon-20191002_181700-624:localhost:8800-]@anon-20191002_181700-623:localhost:8800-]@anon-20191002_181700-622:localhost:8800-]@anon-20191002_181700-620:localhost:8800+[@anon-20191002_181700-61:localhost:8800-]@anon-20191002_181700-619:localhost:8800-]@anon-20191002_181700-617:localhost:8800-]@anon-20191002_181700-616:localhost:8800-]@anon-20191002_181700-614:localhost:8800-]@anon-20191002_181700-612:localhost:8800-]@anon-20191002_181700-610:localhost:8800-]@anon-20191002_181700-609:localhost:8800-]@anon-20191002_181700-608:localhost:8800-]@anon-20191002_181700-606:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-603:localhost:8800-]@anon-20191002_181700-601:localhost:8800-]@anon-20191002_181700-584:localhost:8800-]@anon-20191002_181700-583:localhost:8800-]@anon-20191002_181700-582:localhost:8800-]@anon-20191002_181700-580:localhost:8800-]@anon-20191002_181700-579:localhost:8800-]@anon-20191002_181700-578:localhost:8800-]@anon-20191002_181700-577:localhost:8800-]@anon-20191002_181700-576:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-571:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800-]@anon-20191002_181700-568:localhost:8800-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-566:localhost:8800-]@anon-20191002_181700-565:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-563:localhost:8800-]@anon-20191002_181700-562:localhost:8800-]@anon-20191002_181700-561:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-557:localhost:8800 ,& hu^ k x ' 4 A N [ hu$1>[&3N[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800@]1@anon-20191002_181700-617:localhost:8800!0:localhost:42455P]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800P]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800P]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800P]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800P]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800P]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800P]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800P]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800P]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800P]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800P]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800P]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800P]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800P]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800P]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800P]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800P]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800P]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800P]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800P]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800P]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800P]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800P]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800P]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800 ?G N U  Z  ` g + m 1s7y=CGM QW]!9 ]@anon-20191002_181700-581:localhost:8800a&\> ]  @anon-20191002_181700-580:localhost:8800m&\C9 ]@anon-20191002_181700-580:localhost:8800a&\> ]  @anon-20191002_181700-579:localhost:8800m&\C9 ]@anon-20191002_181700-579:localhost:8800a&\> ]  @anon-20191002_181700-578:localhost:8800m&\C9 ]@anon-20191002_181700-578:localhost:8800a&\> ]  @anon-20191002_181700-577:localhost:8800m&\C9 ]@anon-20191002_181700-577:localhost:8800a&\> ]  @anon-20191002_181700-576:localhost:8800m&\C9 ]@anon-20191002_181700-576:localhost:8800a&\9 ]@anon-20191002_181700-575:localhost:8800a&\@ ]@anon-20191002_181700-574:localhost:8800m&\59 ]@anon-20191002_181700-574:localhost:8800a&\> ]  @anon-20191002_181700-573:localhost:8800m&\D9 ]@anon-20191002_181700-573:localhost:8800a&\> ]  @anon-20191002_181700-572:localhost:8800m&\ $9~ ]@anon-20191002_181700-572:localhost:8800a&\>} ]  @anon-20191002_181700-571:localhost:8800m&\99| ]@anon-20191002_181700-571:localhost:8800a&\@{ ]@anon-20191002_181700-570:localhost:8800m&\ .*9z ]@anon-20191002_181700-570:localhost:8800a&\>y ]  @anon-20191002_181700-569:localhost:8800m&\#9x ]@anon-20191002_181700-569:localhost:8800a&\>w ]  @anon-20191002_181700-568:localhost:8800m&\39v ]@anon-20191002_181700-568:localhost:8800a&\>u ]  @anon-20191002_181700-567:localhost:8800m&\39t ]@anon-20191002_181700-567:localhost:8800a&\>s ]  @anon-20191002_181700-566:localhost:8800m&\C9r ]@anon-20191002_181700-566:localhost:8800a&\>q ]  @anon-20191002_181700-565:localhost:8800m&\C9p ]@anon-20191002_181700-565:localhost:8800a&\>o ]  @anon-20191002_181700-564:localhost:8800m&\C9n ]@anon-20191002_181700-564:localhost:8800a&\>m ]  @anon-20191002_181700-563:localhost:8800m&\C9l ]@anon-20191002_181700-563:localhost:8800a&\>k ]  @anon-20191002_181700-562:localhost:8800m&\C9j ]@anon-20191002_181700-562:localhost:8800a&\>i ]  @anon-20191002_181700-561:localhost:8800m&\C9h ]@anon-20191002_181700-561:localhost:8800a&\9g ]@anon-20191002_181700-560:localhost:8800a&\>f ] @anon-20191002_181700-558:localhost:8800m&\K9e ]@anon-20191002_181700-558:localhost:8800a&\=d ]  @anon-20191002_181700-557:localhost:8800m&\>c ] @anon-20191002_181700-556:localhost:8800m&\9b ]@anon-20191002_181700-557:localhost:8800a&\9a ]@anon-20191002_181700-556:localhost:8800a&\>` ]@anon-20191002_181700-555:localhost:8800m&\>_ ] @anon-20191002_181700-554:localhost:8800m&\X9^ ]@anon-20191002_181700-555:localhost:8800a&\9] ]@anon-20191002_181700-554:localhost:8800a&\?\ ]  @anon-20191002_181700-552:localhost:8800m&\9[ ]@anon-20191002_181700-552:localhost:8800a&\=Z ]  @anon-20191002_181700-551:localhost:8800m&\V>Y ]  @anon-20191002_181700-550:localhost:8800m&\C9X ]@anon-20191002_181700-551:localhost:8800a&\9W ]@anon-20191002_181700-550:localhost:8800a&\=V ]  @anon-20191002_181700-549:localhost:8800m&\V>U ]  @anon-20191002_181700-548:localhost:8800m&\C9T ]@anon-20191002_181700-549:localhost:8800a&\9S ]@anon-20191002_181700-548:localhost:8800a&\>R ] @anon-20191002_181700-545:localhost:8800m&\9Q ]@anon-20191002_181700-545:localhost:8800a&\   *teQau$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2857}{"auth_events": ["$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM", "$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI", "$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590"], "prev_events": ["$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM"], "type": "m.room.join_rules", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043031482, "hashes": {"sha256": "NDlYkjQ1Si24VOitGyCO3OrSPquxmQHv+wasaXjk24U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mTWhI83RuPLI5hcid0dnOYyUxN97DQLE0p6R8+y6W3v7m9RYVS5NFh1LiJDupMHT4jVFWquPS47CN7QZahBXAw"}}, "unsigned": {"age_ts": 1570043031482}}keQac$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2856}{"auth_events": ["$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI", "$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590"], "prev_events": ["$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590"], "type": "m.room.power_levels", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"users": {"@anon-20191002_181700-545:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043029839, "hashes": {"sha256": "0Ne91u17epzT4D4AFVNkeahw1YWIvCFtgckGaS9Sszo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SgJdtKVAuBLrkjTulrhOK2QYb6SuZV+S5au79LpSEA2Fnp6h0tqVb+QcNnRqR+wIjtOQ4psRVuQxqx6G2IMODA"}}, "unsigned": {"age_ts": 1570043029839}}veQay$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2855}{"auth_events": ["$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI"], "prev_events": ["$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI"], "type": "m.room.member", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-545", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-545:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043028240, "hashes": {"sha256": "LFm5kIb2rjfLlcOEjRTWeOx7IJsA9Zikb9Xr0QV5TDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzhmoVHCyKG3QfhXqiPEjAay8cRcH79SO9PwhJai7ZCLMIDjegQ4rTYgp9dM2HLFINkwRvoGgL8QpSPxviQABw"}}, "unsigned": {"age_ts": 1570043028240}}ieQa_$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2854}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-545:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043026103, "hashes": {"sha256": "0pF7qtPcg5Ldrj7D1KXleUDX/9T95svgkL9X21VfEKo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1CgfauIPi1GMDeRSad+85y3w4h9lYUUuofOrs6052fQYKff342wH2PdCfpfFwCX3wfLjKsgLveUMMAZ6CWwMAw"}}, "unsigned": {"age_ts": 1570043026103}} {*) 4 ^ ] h +0T6kv{i`Q3 e Q!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk _Q']e P!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuoc^Q' e O!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.create$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM ]Q']e N!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw \Q']e M!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$njqjJEw7SsQtXLYP-9nDQHdUjuEvQSs0zoxPpDAmzmI [Q']e L!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 ZQ']e K!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$H8hysc4WuEJUITusZTWwChJB35FHkBNVZCb6gLUHxaI YQ']e J!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E XQ']e I!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI WQ']e H!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$mBx0HjMxVGkx2tmY3X6XfkJHIrGzDeZdrEmWAmzbG3g VQ']e G!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8oUQ? e F!zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibility$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0gTQ/ e E!zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rules$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQiSQ3 e D!zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo RQ']e C!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMccQQ' e B!zHBgbzUZHshNGZvIBS:localhost:8800m.room.create$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo PQ']e A!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1AoOQ? e @!cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibility$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTggNQ/ e ?!cidyuyekVzJHHvyomb:localhost:8800m.room.join_rules$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUiMQ3 e >!cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I LQ']e =!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswcKQ' e 9 4/*|%w rmhc TQe U!hFwigdYZkwYNSwelRH:localhost:8800$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sTQe T!hFwigdYZkwYNSwelRH:localhost:8800$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuETQe S!hFwigdYZkwYNSwelRH:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4TQe R!hFwigdYZkwYNSwelRH:localhost:8800$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYTQe Q!paDmNxsOZIKyApbxXs:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9ET Qe P!paDmNxsOZIKyApbxXs:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4T Qe O!paDmNxsOZIKyApbxXs:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUT Qe N!paDmNxsOZIKyApbxXs:localhost:8800$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014T Qe M!paDmNxsOZIKyApbxXs:localhost:8800$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gT Qe L!paDmNxsOZIKyApbxXs:localhost:8800$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYTQe K!paDmNxsOZIKyApbxXs:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMTQe J!paDmNxsOZIKyApbxXs:localhost:8800$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4TQe I!OtBUhGeUSiDMWRKIOT:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcTQe H!OtBUhGeUSiDMWRKIOT:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsTQe G!OtBUhGeUSiDMWRKIOT:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xATQe F!OtBUhGeUSiDMWRKIOT:localhost:8800$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwTQe E!OtBUhGeUSiDMWRKIOT:localhost:8800$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQTQe D!OtBUhGeUSiDMWRKIOT:localhost:8800$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgkTQe C!OtBUhGeUSiDMWRKIOT:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuoTQe B!OtBUhGeUSiDMWRKIOT:localhost:8800$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMT~Qe A!zHBgbzUZHshNGZvIBS:localhost:8800$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwT}Qe @!zHBgbzUZHshNGZvIBS:localhost:8800$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0T|Qe ?!zHBgbzUZHshNGZvIBS:localhost:8800$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38ET{Qe >!zHBgbzUZHshNGZvIBS:localhost:8800$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmITzQe =!zHBgbzUZHshNGZvIBS:localhost:8800$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8TyQe !zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 }Q']e =!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8p|Q? e e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 f1=e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 d1<e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk c1;e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s b1:e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE a19e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 `18e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY _17e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E ^16e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 ]15e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU \14e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 [13e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g Z12e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY Y11e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM X10e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 W1/e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc V1.e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls U1-e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA T1,e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw S1+e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ R1*e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk Q1)e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo P1(e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM O1'e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw N1&e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 L1%e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E J1$e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI I1#e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 G1"e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 F1!e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ E1 e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo D1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc C1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo B1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A A1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg @1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU ?1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I >1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw =1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE <1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc ;1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E :1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 91e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg 81e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo 71e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY 61e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 51e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 4 a} { y w u sqomkigeca~^eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800~]eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~\eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800~[eeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800~ZeeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~YeeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800~XeeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800~WeeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~VeeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800~UeeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800~TeeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~SeeQ$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~ReeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800~QeeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~PeeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800~OeeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800~NeeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~MeeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800~LeeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800~KeeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~JeeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800~IeeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800~HeeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~GeeQ$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~FeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800~EeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800~DeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~CeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800~BeeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800~AeeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~@eeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m}L m m x m m m m m mW m m m mm m m\ mڊ m m m]  mʞ ~ ~mǗ } }mT | |mš { {mܺU z zmܷ+ y ymܴJ x xmܱ_ w wmܮH v vmܧ u umܣH t tmܟ s smܜ r rmܘ q qmܑ p pm܎A o om܉ n nm܇3 m mm܄' l lm} k kmz j jmx i imu h hmsc g gm\d f fmY Z ZmUW Y YmO X XmL W WmG V VmE U Um? T Tm< S Sm9 R Rm4T Q Qm, P Pm* O Om%^ N Nm#1 M Mm L Lmi K Km: J Jm I Im X H Hm ( G Gm F FmP E Em` D Dm C CmE B BmY A AmZ @ @m ? ?m޷ > >m = =mn < <m ; ;m : :m 9 9m 8 8m\ 7 7m۾ 6 6mۻ 5 5m۷ 4 4m۵ 3 3m۳ 2 2mۨ 1 1mۢ 0 0m۠0 / /mۜ . .mۘ - -m۔ , ,mۊ* + +mt * *mo ) )miO ( (mc ' 'mZ & &m? % %m; $ $m5 # #m3 " "m. ! !m+n m(k  m  m'  m  m8  m  m u  m  m  m  mP  m  m  m  mt  m>  m  m  my mw ms/ mpV ml mg md ma/ m_4 m\j mT mO mL mJ- mG mD mB% mA m;j m9 m6a m2 m/ m+R m(& m" m  m& m m< m mШ m m mڽ mڹ  mڶ  mڳ  mڰ9  mڥf  mڠ  mڝ  mښ  mژ mڕ~ mڌ mڈC mڅ mڂh m m|C m\d mZt mW2 mS mP mLs mI! mEp mBL m4 m4 m1b m/Q m, m'g m$a m! m m m m m m m e m m mp m m m m m3 mp m m m m m m@  %eQa$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2864}{"auth_events": ["$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg", "$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY", "$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "prev_events": ["$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8"], "type": "m.room.history_visibility", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043044539, "hashes": {"sha256": "YdhInTdzPA0aMf3oC9Eu+mMfg6nz8fQhiWp0DJF2UIw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/mnLhHu8lswbt+l29jOYhB8Eo8dm1G30oxS3ANsps4qKUQEZ1Z3J5DF21SgsJc5NmyDBFpriUkp8uNfV0WJmDw"}}, "unsigned": {"age_ts": 1570043044539}}t$eQau$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2863}{"auth_events": ["$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg", "$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY", "$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "prev_events": ["$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg"], "type": "m.room.join_rules", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043043888, "hashes": {"sha256": "O7QnHh7bKl668obloOvbumhHZGR6fxKonsWBgwZgz7s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a6Lwx99c5QrG2lbRR0A3zm7Lx4cpY0pJOR/l0Q+Z1ALDVNI/FmRlSFaECVQU52ozDo6ZvJKxC0aaTEgQLaZyDA"}}, "unsigned": {"age_ts": 1570043043888}}k#eQac$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2862}{"auth_events": ["$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY", "$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "prev_events": ["$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "type": "m.room.power_levels", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"users": {"@anon-20191002_181700-548:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043043031, "hashes": {"sha256": "jUUEnDw5TCCsrOUbkdC2l/TJUjYgoJQMfo00HESphD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TrlQcVL/OM5w1Z+TJ5bqc02UNhrXdsNPtdMVw66teGWUnFymMoslFxCYbNxiBxUsKWY/RbRg6ZVZC3Qf0FVHDQ"}}, "unsigned": {"age_ts": 1570043043031}}v"eQay$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2861}{"auth_events": ["$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY"], "prev_events": ["$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY"], "type": "m.room.member", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-548", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-548:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043042015, "hashes": {"sha256": "DYkps5kUmEsPGR/xC1R/kupPYQN1q8kmh2MXI24EQM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hwVBgRdOPPZ9+/hkw7RYSO2hghxWl166EY3WjB7NcDjK9t+8xFUputTD8ek1V0sn/WQswnrgfeOwT5z22ObjAA"}}, "unsigned": {"age_ts": 1570043042015}} ~z v r n j fb^ZVRNJF@eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800?eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800>eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800=eeQ$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800<eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800;eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800:eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:88009eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:88008eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:88007eeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:88006eeQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:88005eeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:88004eeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:88003eeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:88002eeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:88001eeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:88000eeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800/eeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800.eeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800-eeQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800,eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800+eeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800*eeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800)eeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800(eeQ$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800'eeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800&eeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800%eeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800$eeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800#eeQ$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800 9r  T MF?xE e]]Q=$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0@anon-20191002_181700-559:localhost:8829@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800inviteanon-20191002_181700-559C e]]Q=$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800joinanon-20191002_181700-558, e]]Q$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E@anon-20191002_181700-556:localhost:8800@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800leaveC e]]Q=$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4@anon-20191002_181700-557:localhost:8800@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800joinanon-20191002_181700-557E e]]Q=$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU@anon-20191002_181700-557:localhost:8800@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800inviteanon-20191002_181700-557C e]]Q=$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM@anon-20191002_181700-556:localhost:8800@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800joinanon-20191002_181700-556, e]]Q$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc@anon-20191002_181700-555:localhost:8800@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800leaveC e]]Q=$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls@anon-20191002_181700-555:localhost:8800@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800joinanon-20191002_181700-555E e]]Q=$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA@anon-20191002_181700-555:localhost:8800@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800inviteanon-20191002_181700-555C e]]Q=$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo@anon-20191002_181700-554:localhost:8800@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800joinanon-20191002_181700-554C e]]Q=$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800joinanon-20191002_181700-553E e]]Q=$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800inviteanon-20191002_181700-553, e]]Q$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800leaveC e]]Q=$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800joinanon-20191002_181700-553E e]]Q=$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800inviteanon-20191002_181700-553C e]]Q=$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc@anon-20191002_181700-552:localhost:8800@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800joinanon-20191002_181700-552C e]]Q=$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A@anon-20191002_181700-551:localhost:8800@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800joinanon-20191002_181700-551C~ e]]Q=$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw@anon-20191002_181700-550:localhost:8800@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800joinanon-20191002_181700-550C} e]]Q=$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc@anon-20191002_181700-549:localhost:8800@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800joinanon-20191002_181700-549C| e]]Q=$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo@anon-20191002_181700-548:localhost:8800@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800joinanon-20191002_181700-548 !.- 8 f e  p  .9>fpu  z meQ? $qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibilityeeQ/ $Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rulesgeQ3 $2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels eQ']$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829joineQ']$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800leave eQ']$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800joinmeQ? $mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibilityeeQ/ $MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rulesgeQ3 $KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels-aeQ' $uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800m.room.createaeQ' $Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800m.room.createeQ']$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800leavemeQ? $UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibilityeeQ/ $dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rulesgeQ3 $J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels eQ']$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800joina eQ' $PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.create eQ']$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829joinm eQ? $kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibilitye eQ/ $1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rulesgeQ3 $ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels eQ']$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800joinaeQ' $Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.create eQ']$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800joinmeQ? $FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibilityeeQ/ $EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800m.room.join_rulesgeQ3 $cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels eQ']$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800joinaeQ' $vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800m.room.create eQ']$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-549:localhost:8800joinm~eQ? $aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800m.room.history_visibilitye}eQ/ $H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800m.room.join_rulesg|eQ3 $_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800m.room.power_levels .ledg Ya i WXk  Z  [  ^ `l ck TeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800TeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800~TeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800TeQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800TeQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800]TeQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800SeQ$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA!GixhPUMvtKSWoKRgvw:localhost:8800 SeQ$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0!sPWVGnipjiiWQpywNO:localhost:8800 TeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800bTeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800SeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800tSeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800TeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800TeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800SeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800QTeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829NTeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800TeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800jTeQ$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc!THHfVSOSWiBQTHRAnJ:localhost:8800[TeQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800TeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800TeQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800TeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800SeQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc!HcMGemcRrLnLprOJJR:localhost:8800=TeQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800TeQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800?TeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg!aZwMKYDXJRlSKjQNWM:localhost:8800PTeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800xSeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800LTeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800SeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800.TeQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800TTeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800TeQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE!hZuwenlFDapIPBOyfi:localhost:88008TeQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800TeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800TeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800TeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800TeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800TeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800TeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800wTeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800TeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800TeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800TeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800RSeQ$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800 t l e ]| U ME=5-% eeQ$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800 peeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800 =eeQ$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800 eeQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800eeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800eeQ$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800eeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800eeQ$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800*eeQ$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800eeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800meeQ$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800GeeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:88009eeQ$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800'eeQ$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800eeQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800eeQ$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800 JeeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800"eeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800ZeeQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800veeQ$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800eeQ$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800ŁeeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800'eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VPeL$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQsha256n:lb, ue؊tVOeL$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8sha256kBOܐ;dZ1IX v1eL$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcsha2563|'XQɮ@VJ:swV=eL$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lssha256]"w@fmnzb\$ɨНPxT[V<eL$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAsha256&,~&!|BJ;nKzV;eL$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwsha256QsudW|_M <*MV:eL$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQsha256t}@4q NrgX~TV9eL$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgksha256'<9Rf B33!anxn V8eL$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuosha256^ؘA9 6Sb?\b`.@ V7eL$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMsha256<*"$+-Z9-AϘCV6eL$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwsha256)(Ea4j*fL9qض V5eL$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0sha2569Rx awDeyimZRT.",-V4eL$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38Esha256 A)ޤ^Il821MoV3eL$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmIsha256UH3aȈw$ѹy bV2eL$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8sha256Tl;JSh3 sʀ&V1eL$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0sha2567 'RVGsWp,#HP=V0eL$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQsha256.ߴ}iQ~<7<,Xn,AޛU4V/eL$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLosha256'߀(;߯-72|+ V.eL$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcsha256ϊLG5;7&k  Kl? ^ 1 ^ 1  } P # r G  pe8  F yLxY,Q!yfizglmCXdcqCgDrTr:localhost:8800 z z,Q!yfizglmCXdcqCgDrTr:localhost:8800 { {,Q!zFdNewlKnUiMBxnYrN:localhost:8800+Q !zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,,Q!yWhIsLsgNVGcnELrDS:localhost:8800EE,Q!yWhIsLsgNVGcnELrDS:localhost:8800DD,Q!yWhIsLsgNVGcnELrDS:localhost:8800CC,Q!yWhIsLsgNVGcnELrDS:localhost:8800BB,Q!yWhIsLsgNVGcnELrDS:localhost:8800AA,Q!yWhIsLsgNVGcnELrDS:localhost:8800@@+Q !yWhIsLsgNVGcnELrDS:localhost:8800??,Q!zScKnCZCFPIIodAiQj:localhost:8800 M M,Q!zScKnCZCFPIIodAiQj:localhost:8800 J J,Q!zScKnCZCFPIIodAiQj:localhost:8800 H H,Q!zScKnCZCFPIIodAiQj:localhost:8800 F F,Q!zScKnCZCFPIIodAiQj:localhost:8800 D D+Q !zScKnCZCFPIIodAiQj:localhost:8800 B B,Q!yfizglmCXdcqCgDrTr:localhost:8800 y y,Q!yfizglmCXdcqCgDrTr:localhost:8800 x x,Q!yfizglmCXdcqCgDrTr:localhost:8800 w w,Q!yfizglmCXdcqCgDrTr:localhost:8800 v v,Q!yfizglmCXdcqCgDrTr:localhost:8800 u u,Q!yfizglmCXdcqCgDrTr:localhost:8800 t t,Q!yfizglmCXdcqCgDrTr:localhost:8800 s s+Q !yfizglmCXdcqCgDrTr:localhost:8800 r r,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 +Q !ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 0,Q!yTQmLDAxZscWKLMSWh:localhost:8800 / /,Q!yTQmLDAxZscWKLMSWh:localhost:8800 . .,Q!yTQmLDAxZscWKLMSWh:localhost:8800 - -,Q!yTQmLDAxZscWKLMSWh:localhost:8800 , ,,Q!yTQmLDAxZscWKLMSWh:localhost:8800 + +,Q!yTQmLDAxZscWKLMSWh:localhost:8800 * *,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) )*Q!zhCsYcaweVFJLLNwBz:localhost:8800..*Q!zhCsYcaweVFJLLNwBz:localhost:8800--*Q!zhCsYcaweVFJLLNwBz:localhost:8800,,*Q!zhCsYcaweVFJLLNwBz:localhost:8800++)Q !zhCsYcaweVFJLLNwBz:localhost:8800***Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800)Q !zNCItZNbpkZKuufRhC:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800+Q !zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zHBgbzUZHshNGZvIBS:localhost:8800 A A,Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ @,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? ?,Q!zHBgbzUZHshNGZvIBS:localhost:8800 > >,Q!zHBgbzUZHshNGZvIBS:localhost:8800 = =,Q!zHBgbzUZHshNGZvIBS:localhost:8800 < <,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; ;,Q!zHBgbzUZHshNGZvIBS:localhost:8800 : :,Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 9+Q !zHBgbzUZHshNGZvIBS:localhost:8800 8 8-,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( (,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' ',Q!yWhIsLsgNVGcnELrDS:localhost:8800 TT,Q!yWhIsLsgNVGcnELrDS:localhost:8800 MM,Q!yWhIsLsgNVGcnELrDS:localhost:8800FF xSLm@_2X+yR&rE>k  Kl? ^ 1 ^ 1  } P # r G  pe8  F yLxY,Q!yfizglmCXdcqCgDrTr:localhost:8800 z z,Q!yfizglmCXdcqCgDrTr:localhost:8800 { {,Q!zFdNewlKnUiMBxnYrN:localhost:8800+Q !zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,,Q!yWhIsLsgNVGcnELrDS:localhost:8800EE,Q!yWhIsLsgNVGcnELrDS:localhost:8800DD,Q!yWhIsLsgNVGcnELrDS:localhost:8800CC,Q!yWhIsLsgNVGcnELrDS:localhost:8800BB,Q!yWhIsLsgNVGcnELrDS:localhost:8800AA,Q!yWhIsLsgNVGcnELrDS:localhost:8800@@+Q !yWhIsLsgNVGcnELrDS:localhost:8800??,Q!zScKnCZCFPIIodAiQj:localhost:8800 M M,Q!zScKnCZCFPIIodAiQj:localhost:8800 J J,Q!zScKnCZCFPIIodAiQj:localhost:8800 H H,Q!zScKnCZCFPIIodAiQj:localhost:8800 F F,Q!zScKnCZCFPIIodAiQj:localhost:8800 D D+Q !zScKnCZCFPIIodAiQj:localhost:8800 B B,Q!yfizglmCXdcqCgDrTr:localhost:8800 y y,Q!yfizglmCXdcqCgDrTr:localhost:8800 x x,Q!yfizglmCXdcqCgDrTr:localhost:8800 w w,Q!yfizglmCXdcqCgDrTr:localhost:8800 v v,Q!yfizglmCXdcqCgDrTr:localhost:8800 u u,Q!yfizglmCXdcqCgDrTr:localhost:8800 t t,Q!yfizglmCXdcqCgDrTr:localhost:8800 s s+Q !yfizglmCXdcqCgDrTr:localhost:8800 r r,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 +Q !ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 0,Q!yTQmLDAxZscWKLMSWh:localhost:8800 / /,Q!yTQmLDAxZscWKLMSWh:localhost:8800 . .,Q!yTQmLDAxZscWKLMSWh:localhost:8800 - -,Q!yTQmLDAxZscWKLMSWh:localhost:8800 , ,,Q!yTQmLDAxZscWKLMSWh:localhost:8800 + +,Q!yTQmLDAxZscWKLMSWh:localhost:8800 * *,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) )*Q!zhCsYcaweVFJLLNwBz:localhost:8800..*Q!zhCsYcaweVFJLLNwBz:localhost:8800--*Q!zhCsYcaweVFJLLNwBz:localhost:8800,,*Q!zhCsYcaweVFJLLNwBz:localhost:8800++)Q !zhCsYcaweVFJLLNwBz:localhost:8800***Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800)Q !zNCItZNbpkZKuufRhC:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800+Q !zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zHBgbzUZHshNGZvIBS:localhost:8800 A A,Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ @,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? ?,Q!zHBgbzUZHshNGZvIBS:localhost:8800 > >,Q!zHBgbzUZHshNGZvIBS:localhost:8800 = =,Q!zHBgbzUZHshNGZvIBS:localhost:8800 < <,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; ;,Q!zHBgbzUZHshNGZvIBS:localhost:8800 : :,Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 9+Q !zHBgbzUZHshNGZvIBS:localhost:8800 8 8-,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( (,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' ',Q!yWhIsLsgNVGcnELrDS:localhost:8800 TT,Q!yWhIsLsgNVGcnELrDS:localhost:8800 MM,Q!yWhIsLsgNVGcnELrDS:localhost:8800FF {tmf_XQJC<5.'  xqjc\UNG@92+$ | u n g ` Y R K D = 6 / ( !    } u m e ] U M E = 5 - %    } u m e ] U M E = 5 - %    } u m e ] U M E = 5 - %    } u m e ] U M E = 5 - %   }ume]UME=5-% }ume]UME=5-% }ume]UME=5-% }ume]UME=5-% }ume]UME=5-% }ume]UX] \ [ Z Y X W V U T S R Q P O N M L K J I H G F ED B A C ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                  ~ }| {z yx w vu t s r q p o nm lk j i hg f e dc b a `_ ^] \ [ Z Y X V W T S R Q P O N M L K J I H G E F C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                       Pxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (     x h p ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPw v u t s r q p o n m l k j i h g fed cb a`_^]\[ZYXWVUTS RQPONMLK JIHGFEDC BA @?>=< ; : 98 76 54 32 10 /. -, + * )(' &%$ # " !                        ~ } |{ z yx w vu t srq po nm lk ji hg fe dc b a` _ ^ ] \ [ Z Y XW V UT S R Q P M O N J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 1 2 / . - , + ) ( ' & % $ # " !                                         ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                       ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ *   *tBeQau$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2893}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY"], "type": "m.room.join_rules", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043077425, "hashes": {"sha256": "BM9tp+M1Mcr/n840g/eX1ymVK2iOLF7U2zom7hPmEbg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "blnRLia/u1rCSdnGn2mOXnM6FBrToTnjJhZlrgzEibbALgvGG5n4pyEqA7cfP5QZA3pDMKMuoJM4h8nePrwADA"}}, "unsigned": {"age_ts": 1570043077425}}kAeQac$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2892}{"auth_events": ["$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "type": "m.room.power_levels", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"users": {"@anon-20191002_181700-556:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043076592, "hashes": {"sha256": "hXb2UVoGqZHyzWTFY0qgXrn1Ko/b8VONmhG6cny2AEQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YOFiefAJo/V7AlE3d7uRCLAL1C7UOZ0Wk8T3cZ23i8YSX1AIHpVi9FXDWPi0aYUJ+SO2/c+zUhWyOXEjDySpAg"}}, "unsigned": {"age_ts": 1570043076592}}v@eQay$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2891}{"auth_events": ["$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4"], "prev_events": ["$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-556", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-556:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043075945, "hashes": {"sha256": "xQIPRl6YauniIdk6xMs4CAxfKzWVMu5xQ/tJiEJrPUI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pww18GRlzh80YDBUDWxRs9o+1seJAmBsGKfJIZjOsEtkNzEL+cvDDhs9B1T9Uk2mrOufcG4WB4zmcxxOT9U9CQ"}}, "unsigned": {"age_ts": 1570043075945}}i?eQa_$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2890}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-556:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043075130, "hashes": {"sha256": "dQLAqWNlqcaR28Hog7nyqQwiIj3uHdL5vXtVqexYolY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JHteD+wEDUnbymK81A5kvYqb0QiKxzqzlHka1OnxCxmHled3ZgYy005Xz5VSa1Tm72KCYnoxHtub5OpEUxrpBA"}}, "unsigned": {"age_ts": 1570043075130}} i g 4 h5i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDExTDdPNGoubjk7Tko2WkMKMDAyZnNpZ25hdHVyZSAXsnk-cD970UVzv1G8lP_F8ew18BlEvFdq7W40ykYUGQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQo d^ h  r $ |(<RPd Ie'Q ]$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcm.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800mm*@anon-20191002_181700-555:localhost:8800 He'Q ]$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsm.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800m Xm @anon-20191002_181700-555:localhost:8800 Ge'Q ]$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAm.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800m (m @anon-20191002_181700-554:localhost:8800,Fe?Q ]$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwm.room.history_visibility!OtBUhGeUSiDMWRKIOT:localhost:8800mm@anon-20191002_181700-554:localhost:8800$Ee/Q ]$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQm.room.join_rules!OtBUhGeUSiDMWRKIOT:localhost:8800mPm@anon-20191002_181700-554:localhost:8800&De3Q ]$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgkm.room.power_levels!OtBUhGeUSiDMWRKIOT:localhost:8800m`m{@anon-20191002_181700-554:localhost:8800 Ce'Q ]$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuom.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800mm@anon-20191002_181700-554:localhost:8800B e'Q  ]$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMm.room.create!OtBUhGeUSiDMWRKIOT:localhost:8800mEm@anon-20191002_181700-554:localhost:8800 Ae'Q ] $KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwm.room.member!zHBgbzUZHshNGZvIBS:localhost:8800 mYm&@anon-20191002_181700-553:localhost:8829 @e'Q ] $OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0m.room.member!zHBgbzUZHshNGZvIBS:localhost:8800 mZm@anon-20191002_181700-552:localhost:8800 ?e'Q ]$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38Em.room.member!zHBgbzUZHshNGZvIBS:localhost:8800mm @anon-20191002_181700-553:localhost:8829 >e'Q ]$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmIm.room.member!zHBgbzUZHshNGZvIBS:localhost:8800m޷m{@anon-20191002_181700-553:localhost:8829 =e'Q ]$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8m.room.member!zHBgbzUZHshNGZvIBS:localhost:8800mm܀@anon-20191002_181700-552:localhost:8800,<e?Q ]$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0m.room.history_visibility!zHBgbzUZHshNGZvIBS:localhost:8800mnm3@anon-20191002_181700-552:localhost:8800$;e/Q ]$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQm.room.join_rules!zHBgbzUZHshNGZvIBS:localhost:8800mm@anon-20191002_181700-552:localhost:8800&:e3Q ]$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLom.room.power_levels!zHBgbzUZHshNGZvIBS:localhost:8800mmO@anon-20191002_181700-552:localhost:8800 9e'Q ]$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcm.room.member!zHBgbzUZHshNGZvIBS:localhost:8800mmS@anon-20191002_181700-552:localhost:88008 e'Q  ]$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuom.room.create!zHBgbzUZHshNGZvIBS:localhost:8800mmK@anon-20191002_181700-552:localhost:8800 7e'Q ]$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1Am.room.member!cidyuyekVzJHHvyomb:localhost:8800m\m@anon-20191002_181700-551:localhost:8800,6e?Q ]$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTgm.room.history_visibility!cidyuyekVzJHHvyomb:localhost:8800m۾ml@anon-20191002_181700-550:localhost:8800$5e/Q ]$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUm.room.join_rules!cidyuyekVzJHHvyomb:localhost:8800mۻmۼ@anon-20191002_181700-550:localhost:8800&4e3Q ]$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_Im.room.power_levels!cidyuyekVzJHHvyomb:localhost:8800m۷mۺ#@anon-20191002_181700-550:localhost:8800 3e'Q ]$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswm.room.member!cidyuyekVzJHHvyomb:localhost:8800m۵m۶T@anon-20191002_181700-550:localhost:88002 e'Q  ]$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNEm.room.create!cidyuyekVzJHHvyomb:localhost:8800m۳m۳j@anon-20191002_181700-550:localhost:8800 Bgc.Z% Q   J  v A o :  f 1b-Y$R~IwB n9g2^)4]@anon-20191002_184]@anon-20191002_181700-631:localhost:8800mMG4]@anon-20191002_181700-630:localhost:8800mF2[@anon-20191002_181700-62:localhost:8800ms54]@anon-20191002_181700-628:localhost:8800mE4]@anon-20191002_181700-627:localhost:8800mɓD4]@anon-20191002_181700-626:localhost:8800mC4]@anon-20191002_181700-625:localhost:8800mࠢB4]@anon-20191002_181700-624:localhost:8800mA4]@anon-20191002_181700-623:localhost:8800mx@4]@anon-20191002_181700-622:localhost:8800mb?4]@anon-20191002_181700-620:localhost:8800mO>2[@anon-20191002_181700-61:localhost:8800m^44]@anon-20191002_181700-619:localhost:8800m5=4]@anon-20191002_181700-618:localhost:8800m4<4]@anon-20191002_181700-617:localhost:8800m*;4]@anon-20191002_181700-616:localhost:8800m:4]@anon-20191002_181700-615:localhost:8800m94]@anon-20191002_181700-614:localhost:8800mG74]@anon-20191002_181700-613:localhost:8800m84]@anon-20191002_181700-612:localhost:8800m54]@anon-20191002_181700-611:localhost:8800m64]@anon-20191002_181700-610:localhost:8800mߨ42[@anon-20191002_181700-60:localhost:8800m\34]@anon-20191002_181700-609:localhost:8800mߨ!34]@anon-20191002_181700-608:localhost:8800m߀24]@anon-20191002_181700-605:localhost:8800mFp04]@anon-20191002_181700-604:localhost:8800mf14]@anon-20191002_181700-603:localhost:8800m.4]@anon-20191002_181700-602:localhost:8800m?/4]@anon-20191002_181700-601:localhost:8800m,4]@anon-20191002_181700-600:localhost:8800m Y-1Y@anon-20191002_181700-5:localhost:8800mua2[@anon-20191002_181700-59:localhost:8800mZ24]@anon-20191002_181700-598:localhost:8800m)*4]@anon-20191002_181700-597:localhost:8800m)4]@anon-20191002_181700-596:localhost:8800m2(4]@anon-20191002_181700-596:localhost:8800m'4]@anon-20191002_181700-595:localhost:8800m&4]@anon-20191002_181700-593:localhost:8800mȔ%4]@anon-20191002_181700-591:localhost:8800m$4]@anon-20191002_181700-590:localhost:8800m,#2[@anon-20191002_181700-58:localhost:8800mV14]@anon-20191002_181700-589:localhost:8800m޽c"4]@anon-20191002_181700-588:localhost:8800m޹!4]@anon-20191002_181700-587:localhost:8800m޷ 4]@anon-20191002_181700-586:localhost:8800m޵4]@anon-20191002_181700-585:localhost:8800m޲4]@anon-20191002_181700-584:localhost:8800mޘ4]@anon-20191002_181700-583:localhost:8800mހb4]@anon-20191002_181700-582:localhost:8800ml4]@anon-20191002_181700-581:localhost:8800mi[4]@anon-20191002_181700-580:localhost:8800mU2[@anon-20191002_181700-57:localhost:8800mUB04]@anon-20191002_181700-579:localhost:8800m?4]@anon-20191002_181700-578:localhost:8800m+u4]@anon-20191002_181700-577:localhost:8800m4]@anon-20191002_181700-576:localhost:8800mC4]@anon-20191002_181700-575:localhost:8800mr4]@anon-20191002_181700-574:localhost:8800m4]@anon-20191002_181700-573:localhost:8800mݓg4]@anon-20191002_181700-572:localhost:8800mo4]@anon-20191002_181700-571:localhost:8800m[4]@anon-20191002_181700-570:localhost:8800m/52[@anon-20191002_181700-56:localhost:8800mQo/4]@anon-20191002_181700-569:localhost:8800my4]@anon-20191002_181700-568:localhost:8800m 8 %8i-eQa_$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2872}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-552:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043055354, "hashes": {"sha256": "krKuo/VZIHFS5sjH5pPdDxDYAXpNSz5fraEh5BV16O4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "907SQe4sMZJswpQizAGThHuAFFxSaOE6F1Ocjjb/8oTyP4LstX8oKf9+lNz3wBNk0oJSp0RH1i/DxwH6CQ2wDA"}}, "unsigned": {"age_ts": 1570043055354}}V,eQa9$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800{"token_id": 536, "stream_ordering": 2871}{"auth_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I", "$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE", "$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU"], "prev_events": ["$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg"], "type": "m.room.member", "room_id": "!cidyuyekVzJHHvyomb:localhost:8800", "sender": "@anon-20191002_181700-551:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-551", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-551:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043052892, "hashes": {"sha256": "Lef7m5ZLih8YtiULiRdeXTDouFMuufs8+D3CzW4Wiq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fgAy5gsJ9jj4r3a6X50q/2yiGP1vHtCC5Mn5Ccn9EZupCBfJJy86XS/BSwagU0RMXZdAJtnEzYJpDfNPeJEeAw"}}, "unsigned": {"age_ts": 1570043052892}}+eQa$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800{"token_id": 535, "stream_ordering": 2870}{"auth_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I", "$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE", "$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw"], "prev_events": ["$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU"], "type": "m.room.history_visibility", "room_id": "!cidyuyekVzJHHvyomb:localhost:8800", "sender": "@anon-20191002_181700-550:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043051666, "hashes": {"sha256": "wSTPrYDEeX8ZA6UjH/GseEI1i1svANJLeY0JnC6xSNc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uNTNaSmSOkmoAmwJPK0hXMOWn+JELN+qwi3AiN1sNbHZcJ0H8n/D6Dd/WhI1utnWTXRxOg8JpOpyHeLNHlyTDg"}}, "unsigned": {"age_ts": 1570043051666}}t*eQau$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800{"token_id": 535, "stream_ordering": 2869}{"auth_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I", "$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE", "$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw"], "prev_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I"], "type": "m.room.join_rules", "room_id": "!cidyuyekVzJHHvyomb:localhost:8800", "sender": "@anon-20191002_181700-550:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043050932, "hashes": {"sha256": "BKSVCqo1fWNghZEM9DJxrJBAtiPQqcXxUrEOn9mLhwQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wvawDZcCf3PwdI53gSiL7t3ov6XwN7VYtwluV0AU3vpxCzzXnGGx00V/YFRPaoCPjV2U+orAfPAPCiBnusDyAg"}}, "unsigned": {"age_ts": 1570043050932}} 8l D `8]c!E@anon-20191002_181700-563:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAoRLVZAZQHOM127.0.0.1Perl + Net::Async::HTTP/0.44mܘS]c!E@anon-20191002_181700-562:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAoRUCUWRMARX127.0.0.1Perl + Net::Async::HTTP/0.44m܃]c!E@anon-20191002_181700-561:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQoYQDTZKECLG127.0.0.1Perl + Net::Async::HTTP/0.44mr݃]c!E@anon-20191002_181700-560:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5JkowoMSCBPCIKEE127.0.0.1Perl + Net::Async::HTTP/0.44md]c!E@anon-20191002_181700-558:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4AoZVKDTDNPLS127.0.0.1Perl + Net::Async::HTTP/0.44m9]c!E@anon-20191002_181700-557:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwoKTBNHNNWDA127.0.0.1Perl + Net::Async::HTTP/0.44m+]c!E@anon-20191002_181700-556:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQoTMQBHREBEO127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-555:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgoMAWHFJMVIZ127.0.0.1Perl + Net::Async::HTTP/0.44m ܃]c!E@anon-20191002_181700-554:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgoFFUSIPBHXS127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-552:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07AoJYCWUAAHBU127.0.0.1Perl + Net::Async::HTTP/0.44mB  1eQa$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2876}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ"], "type": "m.room.history_visibility", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043058030, "hashes": {"sha256": "xqxFzaS412w3xdElTED86lvyvYu0OMGq31FDWDkdbMg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bPr157sRtdyDCU/UBKvGo/ogfZbeFzdbToIigZ5zw0711pKprkOAzQX3ArwK67B2asJFn2MT6BQfOPjO7Q/hCw"}}, "unsigned": {"age_ts": 1570043058030}}t0eQau$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2875}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo"], "type": "m.room.join_rules", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043057413, "hashes": {"sha256": "SQMRprALOKgxLf3ZNTtqP4XaNfre4jzlEhTxPB5ovBM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zjHyDRQQTd0TLFScuOW0tpd6aKpDSDktv0vHDAz/4zJ/hktqAiskf8JGGp/xIb0pkHHL0/PvmAc/k6IctRN+DA"}}, "unsigned": {"age_ts": 1570043057413}}k/eQac$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2874}{"auth_events": ["$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "type": "m.room.power_levels", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"users": {"@anon-20191002_181700-552:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043056667, "hashes": {"sha256": "MCapNATOKQBxePllE3KC6akWCFtTNzd9phLNpqUIuP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DuVnTwtZdkrnVBCViSkK/Ix1bqzEq2dkjf477u4dhPIUHPNWqGnWAuRgThbQaB6tQsMc12aLZS1iO+w5hwEiBA"}}, "unsigned": {"age_ts": 1570043056667}}v.eQay$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2873}{"auth_events": ["$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo"], "prev_events": ["$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo"], "type": "m.room.member", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-552", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-552:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043056101, "hashes": {"sha256": "nD3Ishv0a5PmFeGI1PzvXrh17wDVKd66WHqvpDR0Ia0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ezeix35IIVPyM6CSVePTFBqMf3e1/pPU7Feyn1Pww4eMokdPoCB6/Rw7A8H4DxA/zAtFjw0QvQihtqYaD/zyBg"}}, "unsigned": {"age_ts": 1570043056101}} a} { y w u sqomkigeca~}eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~|eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~{eeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800~zeeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~yeeQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~xeeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~weeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~veeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~ueeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~teeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~seeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~reeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~qeeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800~peeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~oeeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~neeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~meeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~leeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~keeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~jeeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~ieeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~heeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~geeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~feeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~eeeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~deeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~ceeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~beeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~aeeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~`eeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~_eeQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800 D:V%j8p | P   | JP  Z V $(  \ + cJ1j 8 DpV$1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgi1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUh1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwS1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkED1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lge1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYf1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE#1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!1e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 41e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw ,1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM (1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkH1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk<1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUC1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY{1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAj1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo01e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20N1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM)1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo51e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcq1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg%1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcr D21e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg ,1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM  1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ m -RM H C > 9 4/*|%w rmhc TrQe r!tPkCGJBKmqUXJoRrnY:localhost:8800$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROATqQe q!tPkCGJBKmqUXJoRrnY:localhost:8800$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgTpQe p!tPkCGJBKmqUXJoRrnY:localhost:8800$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUToQe o!tPkCGJBKmqUXJoRrnY:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeATnQe n!tPkCGJBKmqUXJoRrnY:localhost:8800$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6ATmQe m!QnmLrBAxeItdHsaxWf:localhost:8800$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgTlQe l!QnmLrBAxeItdHsaxWf:localhost:8800$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogTkQe k!QnmLrBAxeItdHsaxWf:localhost:8800$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8TjQe j!QnmLrBAxeItdHsaxWf:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvITiQe i!QnmLrBAxeItdHsaxWf:localhost:8800$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0ThQe h!hFwigdYZkwYNSwelRH:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQTgQe g!hFwigdYZkwYNSwelRH:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugTfQe f!hFwigdYZkwYNSwelRH:localhost:8800$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0TeQe e!hFwigdYZkwYNSwelRH:localhost:8800$qKl_Mu5pdz_hEg8qa-D95jaZGKnqvUAYTY-mnchHjtETdQe d!hFwigdYZkwYNSwelRH:localhost:8800$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0TcQe c!hFwigdYZkwYNSwelRH:localhost:8800$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkTbQe b!hFwigdYZkwYNSwelRH:localhost:8800$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sTaQe a!hFwigdYZkwYNSwelRH:localhost:8800$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuET`Qe `!hFwigdYZkwYNSwelRH:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4T_Qe _!hFwigdYZkwYNSwelRH:localhost:8800$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYT^Qe ^!paDmNxsOZIKyApbxXs:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9ET]Qe ]!paDmNxsOZIKyApbxXs:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4T\Qe \!paDmNxsOZIKyApbxXs:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUT[Qe [!paDmNxsOZIKyApbxXs:localhost:8800$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014TZQe Z!paDmNxsOZIKyApbxXs:localhost:8800$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gTYQe Y!paDmNxsOZIKyApbxXs:localhost:8800$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYTXQe X!paDmNxsOZIKyApbxXs:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMTWQe W!paDmNxsOZIKyApbxXs:localhost:8800$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4TVQe V!OtBUhGeUSiDMWRKIOT:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcTUQe U!OtBUhGeUSiDMWRKIOT:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsTTQe T!OtBUhGeUSiDMWRKIOT:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xATSQe S!OtBUhGeUSiDMWRKIOT:localhost:8800$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwTRQe R!OtBUhGeUSiDMWRKIOT:localhost:8800$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQTQQe Q!OtBUhGeUSiDMWRKIOT:localhost:8800$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgkTPQe P!OtBUhGeUSiDMWRKIOT:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuoTOQe O!OtBUhGeUSiDMWRKIOT:localhost:8800$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMTNQe N!zHBgbzUZHshNGZvIBS:localhost:8800$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwTMQe M!zHBgbzUZHshNGZvIBS:localhost:8800$njqjJEw7SsQtXLYP-9nDQHdUjuEvQSs0zoxPpDAmzmITLQe L!zHBgbzUZHshNGZvIBS:localhost:8800$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0TKQe K!zHBgbzUZHshNGZvIBS:localhost:8800$H8hysc4WuEJUITusZTWwChJB35FHkBNVZCb6gLUHxaITJQe J!zHBgbzUZHshNGZvIBS:localhost:8800$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38ETIQe I!zHBgbzUZHshNGZvIBS:localhost:8800$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmITHQe H!zHBgbzUZHshNGZvIBS:localhost:8800$mBx0HjMxVGkx2tmY3X6XfkJHIrGzDeZdrEmWAmzbG3gTGQe G!zHBgbzUZHshNGZvIBS:localhost:8800$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8TFQe F!zHBgbzUZHshNGZvIBS:localhost:8800$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0  0}4eQc$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:8800{"outlier": false, "stream_ordering": 2879}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "hCBbUXo/9jepg2yyYCVPWHdFFHUSVlZyDWSx2TViKyQ"}, "origin": "localhost:8829", "origin_server_ts": 1570043061502, "prev_events": ["$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI"], "prev_state": [], "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-553:localhost:8829", "state_key": "@anon-20191002_181700-553:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "fXsi0RHuho/2FXgDJKwFlENzl8mUlmzOYdWJWGBz1Do2aVSXZ62Q4KWgbfBqZY9Jq88yVvnaXXrQdIgXfmasCg"}}, "unsigned": {"age_ts": 1570043061502, "prev_content": {"avatar_url": null, "displayname": "anon-20191002_181700-553", "membership": "join"}, "prev_sender": "@anon-20191002_181700-553:localhost:8829", "replaces_state": "$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI"}}33eQ1!$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2878}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-553", "membership": "join"}, "depth": 7, "hashes": {"sha256": "5BVx5Rp9leUG4I34xY90InwVO9S+RLVL9gxTMsK1+K4"}, "origin": "localhost:8829", "origin_server_ts": 1570043059895, "prev_events": ["$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8"], "prev_state": [], "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-553:localhost:8829", "state_key": "@anon-20191002_181700-553:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y4gxvnincch3t9awQow5Ijk2iiu3vAMPOj9zGmDas5urtCAiGe8Obz8gV/P4WircX65qyi6AVO2xq2NaewDfBg"}, "localhost:8829": {"ed25519:a_UxIG": "P7nOLYjeFbv4edgU6jmQcZSinmzFonT2PG2thjoHutMqFDMEIIcolxAmKxcW2gjASw30Qsp8p5csJ/3Rw7diDg"}}, "unsigned": {"age": 93, "replaces_state": "$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8"}}2eQa7$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2877}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0"], "type": "m.room.member", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-553", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-553:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043059203, "hashes": {"sha256": "UtpwDP7iMyhG9Er6hOdeiVFjzEYIEhxFgYpBzykVrcQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8pM6+tPS2BI4Zf4Y70avUj8/3F6JDhddauXqkK/SzTP6zxbGxVccGhP/97SMtNOeoaiyTGOZqYbDFUi33rVPDA"}, "localhost:8829": {"ed25519:a_UxIG": "2VbiDNdQF4wpx8Y+ep8efqBtPUlVP77UpUqzFXxZsHdHkTmr1e4Wyxf0+0BTW7HFOIJk+jvKFdK6DnJAaQh5AA"}}, "unsigned": {"age_ts": 1570043059203, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-552:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-552", "avatar_url": null}, "sender": "@anon-20191002_181700-552:localhost:8800"}]}} JE %Wp P+ P > V ] $ \ * b81J vj8p> vD } D_MYhMV5gWbVQCD7dIG1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE-1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2ME1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E 71e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF80e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms?1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIB1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc 1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4N1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE=1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEK1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngX1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648b1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI $1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwz1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYC0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA~1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM.1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qf1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4:1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY*1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4p1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a401e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8g 1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c\21e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdos1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx9051e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg '1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEjd1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ +21e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 2  i7eQa_$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2882}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-554:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043065669, "hashes": {"sha256": "eW4dhWfVM90uLX4yxnct0aiTInco8eF8+oV9idsn5+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TTZfwgMVx+2/wJYltOxz+t75bbvdOJBtdmiPNu7tPoMWKwMqJoN52GBdWkHUuu2BmkgCgihj7WN1+s6vDpd+AQ"}}, "unsigned": {"age_ts": 1570043065669}}46eQ1#$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2881}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-553", "membership": "join"}, "depth": 10, "hashes": {"sha256": "PYqrhC/8+9DpGikW5S4hyakoCV/l9AfvmzCEv5pp7aU"}, "origin": "localhost:8829", "origin_server_ts": 1570043063385, "prev_events": ["$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0"], "prev_state": [], "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-553:localhost:8829", "state_key": "@anon-20191002_181700-553:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LKol6K7t5WFgCkzWHIy9jUN9SH/s/EwaR7gsYjf1jyw/JA1eq9gbthqTt3p/d3zwacPdyICidPlxj+xksU2tCg"}, "localhost:8829": {"ed25519:a_UxIG": "xq9O/jvzNSslVtgA+3PtQ7dLBPzoVU5v3YUCBGTT2wewkv15lgy709r8//eu4itDh7rj5YfxTbYNWAMvmi69Bw"}}, "unsigned": {"age": 94, "replaces_state": "$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0"}}W5eQa;$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2880}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E"], "type": "m.room.member", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-553", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-553:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043062362, "hashes": {"sha256": "vSPTmfDzAne+Tamcx+9rmu8mpEHG0PWHt1HiSKbxW+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5RavILUq062PrHK1YU4j049mKnklPMVlf50r8opIoMhwcPdXGYgHj2tvSsVJT2Q+POAW1UlHwuesGoGl+zVjAw"}, "localhost:8829": {"ed25519:a_UxIG": "dd2JoQcxawSKXXz7IdjcK4cdwuQ7msG97WvVtfM9CGCv6FmDSpo17FOYPQ2x4om3YY8yKOvBCz8hK+0IqfPTBA"}}, "unsigned": {"age_ts": 1570043062362, "replaces_state": "$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E", "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-552:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-552", "avatar_url": null}, "sender": "@anon-20191002_181700-552:localhost:8800"}]}} g * T~=gg]!c%@anon-20191002_181700-566:localhost:8800QBBGHXSEKFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgog]!c$@anon-20191002_181700-565:localhost:8800MSICJQZBGXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAog]!c#@anon-20191002_181700-564:localhost:8800JAGAKQJOKZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8Qog]!c"@anon-20191002_181700-563:localhost:8800RLVZAZQHOMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAog]!c!@anon-20191002_181700-562:localhost:8800RUCUWRMARXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAog]!c @anon-20191002_181700-561:localhost:8800YQDTZKECLGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQog]!c@anon-20191002_181700-560:localhost:8800MSCBPCIKEEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5Jkowog]!c@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4Aog]!c@anon-20191002_181700-557:localhost:8800KTBNHNNWDAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwog]!c@anon-20191002_181700-556:localhost:8800TMQBHREBEOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQog]!c@anon-20191002_181700-555:localhost:8800MAWHFJMVIZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgo  ;eQa$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2886}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ"], "type": "m.room.history_visibility", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043069365, "hashes": {"sha256": "NQPDLTtypKgQR7dggHA/BUlmySvOp5r/WjV7o0wT02w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zyTlk51RRGDxHYCmv5O1jubIAnAFmEMi8Cg/uayt3kavjOMwO5k7cL0JhkOnlakaOQxBxv0XIN2dngQ/0HWhAw"}}, "unsigned": {"age_ts": 1570043069365}}t:eQau$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2885}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk"], "type": "m.room.join_rules", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043068240, "hashes": {"sha256": "+3gyO07fAXckWWeAeRq/UTFupfjn2lyg6/iYoHPeF0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cr8Gmcd+eavtkDCjSgBjyb6T9N2bUKeJ2cYzh8fOvl9luvONfxh+oXTbK5cCBOoJVkcmu+w0b3LdWbEdihU9AA"}}, "unsigned": {"age_ts": 1570043068240}}k9eQac$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2884}{"auth_events": ["$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "type": "m.room.power_levels", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"users": {"@anon-20191002_181700-554:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043066976, "hashes": {"sha256": "hy48FJD/uZpHS4P0dnsp3B+RnTZKWbHYWnnBcbJFVBk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sod5bi3ivm9r/K6W7ARreQjKiGoj+Xqfv2MLFaAT1bCcw+aNyF3HNuuwwmNy+BeHdPTOYQ7ga5zhSe+P9rycDw"}}, "unsigned": {"age_ts": 1570043066976}}v8eQay$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2883}{"auth_events": ["$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM"], "prev_events": ["$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-554", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-554:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043066397, "hashes": {"sha256": "yOBF0aegQwjxtm3H1jn78dWoKy02Y/XZuLYfFmLE7HY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5zMf+dU7jnzBS5yZuNx47R5KAHfsPBFm6EWb8gbSSOZl+RBCpoNbYOrabY6kTk2y6YxCdzu1knfXMv5Oq/VpDw"}}, "unsigned": {"age_ts": 1570043066397}} d5|]{; '-V .iEL}c@ Z D K  J| h d6Q' !TkluVzxeeCbMtbFWWS:localhost:8800m.room.create 6Q' !TWETXUgfFZafDdbqLS:localhost:8800m.room.create<Q3 !SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels^Q']!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800^Q']!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800:Q/ !SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rulesBQ? !SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibility^Q']!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800 BQ? !TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibility :Q/ !TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rules <Q3 !TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels ^Q']!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800 6Q' !TcCLuIBUrtFqghDgay:localhost:8800m.room.create BQ? !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibility :Q/ !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rules <Q3 !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels ^Q']!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800 6Q' !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create <<Q3 !TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels ^Q']!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800 6Q' !SyIWYOmcGiASNkPCTB:localhost:8800m.room.create?Q9 !SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_aliasEQ))!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800<Q3 !SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels^Q']!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800:Q/ !SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rulesRQ'E!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455 BQ? !TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility :Q/ !TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules <Q3 !TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels ^Q']!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800 6Q' !TSFcaXDBqrCREHRHxv:localhost:8800m.room.create EQ))!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800 BQ? !TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibility :Q/ !TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rules <Q3 !TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels^Q']!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800^Q']!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800:Q/ !TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rulesBQ? !TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibility6Q' !TeraguiGoZoeOGFzlI:localhost:8800m.room.create<Q3 !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levelsC^Q']!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800B:Q/ !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rulesDBQ? !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibilityE<Q3 !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_accessF6Q' !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.createA<Q3 !TWETXUgfFZafDdbqLS:localhost:8800m.room.power_levels]Q'[!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-91:localhost:8800]Q'[!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800:Q/ !TWETXUgfFZafDdbqLS:localhost:8800m.room.join_rulesBQ? !TWETXUgfFZafDdbqLS:localhost:8800m.room.history_visibility<Q3 !TWETXUgfFZafDdbqLS:localhost:8800m.room.guest_access }$ w   :  ',P2BfHS}gQ/ e l!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rules$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogiQ3 e k!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 ~Q']e j!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIc}Q' e i!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 |Q']e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 {Q']e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQozQ? e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkgyQ/ e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rules$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sixQ3 e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuEcwQ' e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.create$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY vQ']e g!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug uQ']e f!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 tQ']e e!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$qKl_Mu5pdz_hEg8qa-D95jaZGKnqvUAYTY-mnchHjtE sQ']e d!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0orQ? e c!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkgqQ/ e b!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rules$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sipQ3 e a!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE oQ']e `!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4cnQ' e _!hFwigdYZkwYNSwelRH:localhost:8800m.room.create$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY mQ']e ^!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E lQ']e ]!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 kQ']e \!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUojQ? e [!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibility$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014giQ/ e Z!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rules$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gihQ3 e Y!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY gQ']e X!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMcfQ' e W!paDmNxsOZIKyApbxXs:localhost:8800m.room.create$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 eQ']e V!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc dQ']e U!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls cQ']e T!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAobQ? e S!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibility$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwgaQ/ e R!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rules$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ a} { y w u sqomkigeca~eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~ eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~ eeQ$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~ eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800~ eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~ eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~~eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800 !Qv & )  LO5*X%Qa*eQ' $CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800m.room.createm)eQ? $QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibilitye(eQ/ $8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rulesg'eQ3 $RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels &eQ']$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800a%eQ' $JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.createm$eQ? $wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibilitye#eQ/ $SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rulesg"eQ3 $xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels !eQ']$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800a eQ' $Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create eQ']$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800 eQ']$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800 eQ']$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800 eQ']$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829 eQ']$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829meQ? $qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibilityeeQ/ $Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rulesgeQ3 $2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels eQ']$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800aeQ' $uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800m.room.create eQ']$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800 eQ']$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800 eQ']$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800meQ? $mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibilityeeQ/ $MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rulesgeQ3 $KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels eQ']$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800aeQ' $Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800m.room.create eQ']$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800 eQ']$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800 eQ']$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800m eQ? $UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibility m gKmZ>eQaA$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 539, "stream_ordering": 2889}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls"], "prev_events": ["$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-555:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-555:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043073213, "hashes": {"sha256": "W+Se6SAXsCQa7CUXRHfksUeZxkeGs8jQatTrvgnWaHo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zqP4eQILEI1F/CRvUdeJ59Ndh6UeAy+dEDTi1fLdUuZdOkjeHlnBIWy9EJTRIH0uup4z0PeZQjrIVk3BXaukDw"}}, "unsigned": {"age_ts": 1570043073213, "replaces_state": "$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls"}}=eQa=$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 539, "stream_ordering": 2888}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ"], "prev_events": ["$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-555:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-555", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-555:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043071576, "hashes": {"sha256": "66b3nCidd/2/E81vE7Db9lGsRgapg6vXecOqMpvwJSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qDfru0HIkf07NKwdwo9RdlxeviP2F+ljxsf2FhG9LZPDBH2aH74wCGD8tgePmJMqdUIxD9BuVYVWMzkwjcvWDw"}}, "unsigned": {"age_ts": 1570043071576, "replaces_state": "$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA"}}<eQa7$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2887}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-555", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-555:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043070760, "hashes": {"sha256": "MhPZpNkAHiVpxHphwju+S8tcC7Fq2gT0ZTSlBzrEc6Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jbTgA78YI4ybp+J47DUQ/JfuKdFeC9lhDwidyBnJnNNtOmdjkJTUyCp8Xl8d/a+/Z5+favkABcXZ1HX1cbkbAw"}}, "unsigned": {"age_ts": 1570043070760, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-554:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-554:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-554", "avatar_url": null}, "sender": "@anon-20191002_181700-554:localhost:8800"}]}} MD! $ F > Gol8Ai'Md%Q' e q!peJMRJtXBvIiCttNmm:localhost:8800m.room.create$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwp$Q? e p!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibility$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAh#Q/ e o!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rules$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgj"Q3 e n!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU !Q']e m!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAd Q' e l!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.create$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6ApQ? e k!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibility$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNghQ/ e j!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rules$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogjQ3 e i!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 Q']e h!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIdQ' e g!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ08Q']ee f!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug8Q']ee Y!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR48Q']ee X!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 Q']e W!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0pQ? e V!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkhQ/ e U!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rules$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sjQ3 e T!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE Q']e S!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4dQ' e R!hFwigdYZkwYNSwelRH:localhost:8800m.room.create$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY8Q']ee Q!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM8Q']ee P!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU Q']e O!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUpQ? e N!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibility$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014h Q/ e M!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rules$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gj Q3 e L!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY Q']e K!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMd Q' e J!paDmNxsOZIKyApbxXs:localhost:8800m.room.create$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo48 Q']ee I!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls8Q']ee H!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA f^ h  p * 4<P `fl e'Q  ]$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6Am.room.create!tPkCGJBKmqUXJoRrnY:localhost:8800m܄'m܄@anon-20191002_181700-562:localhost:8800,ke?Q ]$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgm.room.history_visibility!QnmLrBAxeItdHsaxWf:localhost:8800m}m@anon-20191002_181700-561:localhost:8800$je/Q ]$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogm.room.join_rules!QnmLrBAxeItdHsaxWf:localhost:8800mzm{Y@anon-20191002_181700-561:localhost:8800&ie3Q ]$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8m.room.power_levels!QnmLrBAxeItdHsaxWf:localhost:8800mxmy@anon-20191002_181700-561:localhost:8800 he'Q ]$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIm.room.member!QnmLrBAxeItdHsaxWf:localhost:8800mumv]@anon-20191002_181700-561:localhost:8800g e'Q  ]$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0m.room.create!QnmLrBAxeItdHsaxWf:localhost:8800mscms@anon-20191002_181700-561:localhost:8800 fe'Q ] $rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQm.room.member!hFwigdYZkwYNSwelRH:localhost:8800 m\dm]@anon-20191002_181700-558:localhost:8800 Ze'Q ] $a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8m.room.member!hFwigdYZkwYNSwelRH:localhost:8800 mYmZN@anon-20191002_181700-559:localhost:8829 Ye'Q ]$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugm.room.member!hFwigdYZkwYNSwelRH:localhost:8800mUWmU@anon-20191002_181700-558:localhost:8800 Xe'Q ]$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0m.room.member!hFwigdYZkwYNSwelRH:localhost:8800mOmPP@anon-20191002_181700-559:localhost:8829 We'Q ]$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0m.room.member!hFwigdYZkwYNSwelRH:localhost:8800mLmM@anon-20191002_181700-558:localhost:8800,Ve?Q ]$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Ykm.room.history_visibility!hFwigdYZkwYNSwelRH:localhost:8800mGmI@anon-20191002_181700-558:localhost:8800$Ue/Q ]$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sm.room.join_rules!hFwigdYZkwYNSwelRH:localhost:8800mEmE@anon-20191002_181700-558:localhost:8800&Te3Q ]$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuEm.room.power_levels!hFwigdYZkwYNSwelRH:localhost:8800m?m@[@anon-20191002_181700-558:localhost:8800 Se'Q ]$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4m.room.member!hFwigdYZkwYNSwelRH:localhost:8800m<m=1@anon-20191002_181700-558:localhost:8800R e'Q  ]$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYm.room.create!hFwigdYZkwYNSwelRH:localhost:8800m9m:T@anon-20191002_181700-558:localhost:8800 Qe'Q ]$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9Em.room.member!paDmNxsOZIKyApbxXs:localhost:8800m4Tm4@anon-20191002_181700-556:localhost:8800 Pe'Q ]$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4m.room.member!paDmNxsOZIKyApbxXs:localhost:8800m,m-8@anon-20191002_181700-557:localhost:8800 Oe'Q ]$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUm.room.member!paDmNxsOZIKyApbxXs:localhost:8800m*m*@anon-20191002_181700-556:localhost:8800,Ne?Q ]$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014m.room.history_visibility!paDmNxsOZIKyApbxXs:localhost:8800m%^m'G@anon-20191002_181700-556:localhost:8800$Me/Q ]$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gm.room.join_rules!paDmNxsOZIKyApbxXs:localhost:8800m#1m#@anon-20191002_181700-556:localhost:8800&Le3Q ]$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYm.room.power_levels!paDmNxsOZIKyApbxXs:localhost:8800mm!l@anon-20191002_181700-556:localhost:8800 Ke'Q ]$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMm.room.member!paDmNxsOZIKyApbxXs:localhost:8800mim@anon-20191002_181700-556:localhost:8800J e'Q  ]$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4m.room.create!paDmNxsOZIKyApbxXs:localhost:8800m:m@anon-20191002_181700-556:localhost:8800 T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                              }  ~ } } | | z { z z y y x x w w v u t t r s r~ r q} q p| p o{ o nz m ky l kx k jw j iv i hu h gt f es e cr d cq c bp b ao a `n ` _m ^ ]l ] [k \ [j [ Zi Z Yh Y Xg X Wf U Se T Sd S Rc R Qb Q Pa P O` O N_ N M^ L K] K J\ J I[ I HZ H GY F EX E DW D CV C BU A @T @ ?S ? >R > =Q < ;P ; :O : 9N 9 8M 7 6L 6 5K 5 4J 4 3I 2 1H 1 0G 0 /F / .E - +D , +C + *B * )A ) (@ ( '? % $> $ #= # "< " !; ! :  9  8  7  6  5  4  3  2  1  0  /  .  -  ,  +  * ) ( ' & %  $  #  "  !                                            ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6  ~5 ~ }4 | {3 { z2 z y1 y x0 w v/ v u. u t- t s, r q+ q p* p o) o n( m l' l k& k j% j i$ g f# f d" e d! d c  c b b a a ` ` _ ^ ] ] \ \ [ [ Z Z Y Y X X W 5 y I b ]{;'ET}Fi OK j + z ^Q']!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800 ^Q']!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829^Q']!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800:Q/ !zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rulesBQ? !zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibility6Q' !zHBgbzUZHshNGZvIBS:localhost:8800m.room.create<Q3 !zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels^Q']!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800:Q/ !zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rulesBQ? !zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility6Q' !zFdNewlKnUiMBxnYrN:localhost:8800m.room.create?Q9 !zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_alias6Q' !zFdNewlKnUiMBxnYrN:localhost:8800m.room.avatarEQ))!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800<Q3 !yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levelsN^Q']!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829S^Q']!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800M:Q/ !yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rulesPBQ? !yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibilityQ6Q' !yfizglmCXdcqCgDrTr:localhost:8800m.room.createL?Q9 !yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_aliasOEQ))!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800R<Q3 !ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels^Q']!ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800:Q/ !ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rulesBQ? !ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibility6Q' !ybXveQoxPVhjpKHAkG:localhost:8800m.room.create6Q' !yWhIsLsgNVGcnELrDS:localhost:8800m.room.create <Q3 !yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels4Q# !yTQmLDAxZscWKLMSWh:localhost:8800m.room.name^Q']!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-429:localhost:8800^Q']!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-428:localhost:8800^Q']!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800:Q/ !yTQmLDAxZscWKLMSWh:localhost:8800m.room.join_rules :Q/ !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules ^Q']!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800 <Q3 !yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_access BQ? !yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibility ;\Q'[!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:88009Q/ !zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rulesAQ? !zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibility4Q' !zNCItZNbpkZKuufRhC:localhost:8800m.room.create>Q9 !zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_aliasDQ))!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800<Q3 !zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levelsI^Q']!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800HHQ'1!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800N:Q/ !zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rulesJBQ? !zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilityM<Q3 !zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_accessL6Q' !zNBpypJDRMlBdOcLlW:localhost:8800m.room.createG<Q3 !zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels<Q3 !yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels  wEeQa=$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 541, "stream_ordering": 2896}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g"], "prev_events": ["$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-557:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-557", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-557:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043079901, "hashes": {"sha256": "0X3zikUrMFsMOI9rZF/JPNnbnSJxYBrIC4gZRYm/xiM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hsow0exZDJFFy7nk8XqFBTQdTf2Ttrta8vtDY3bNN4gMWsD0y0Htf9hSrhPaHKs2OBTBOYy39nPEK/Iaaos0AQ"}}, "unsigned": {"age_ts": 1570043079901, "replaces_state": "$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU"}}DeQa7$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2895}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-557", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-557:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043079192, "hashes": {"sha256": "iNbvLoRXMMrgsWSmKUZUeBQSPzjhv16lYDE7JlrAemw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KW7gAxALpnC92Hs4e5jMgqj922QrKAOt3GkqEbMUuYeJr1ixfCMHp1trIN2XgSuMd7stfYKGVR4EmKosoJdfBQ"}}, "unsigned": {"age_ts": 1570043079192, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-556:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-556", "avatar_url": null}, "sender": "@anon-20191002_181700-556:localhost:8800"}]}}CeQa$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2894}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g"], "type": "m.room.history_visibility", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043077982, "hashes": {"sha256": "mzGy5CJVgv7Myp4mIvOhvZYuchVeBNC46h+5b2zhsWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VDSgDP3wmaWKI7DhohQnagfd/pHRf1aebyQDrjRve/UtMwRpcr45Jtcb23xsxREl9YMgoc45H3pyGVplsk1GBg"}}, "unsigned": {"age_ts": 1570043077982}} ~z v r n j fb^ZVRNJF^eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800]eeQ$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800\eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800[eeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800ZeeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800YeeQ$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800XeeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800WeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800VeeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800UeeQ$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800TeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800SeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800ReeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800QeeQ$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800PeeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800OeeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800NeeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800MeeQ$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800LeeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800KeeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800JeeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800IeeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800HeeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800GeeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800FeeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800EeeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800DeeQ$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800CeeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800BeeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800AeeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800  d T- %  l L D| \t= 5 eeQ$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800 LeeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800FeeQ$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800\eeQ$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800 $eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800ceeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800eeQ$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800сeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800eeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc!odAvowLhHJcmkKlxFk:localhost:8800eeQ$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800 eeQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800 eeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800 KeeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800 4eeQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829`eeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800deeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800 5eeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800 Lp> v D  } K  R j X & 8 ^ ,e3k9q? xFMS!Y'_-1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs k1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo 1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo 1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMw1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQI1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQH1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY 0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0Y1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo Y1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc@1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olws1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs v1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk L1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ)1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC681e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikC1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QX1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQh1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw{1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAs1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg x1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8(1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM`1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI E1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw)1e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgJ1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM u1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0*1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gc1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE ^1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74M1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74L1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74K1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs21e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew \1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s U1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc ,2 -RM H C > 9 4/*|%w rmhc T?Qe !SUDzkfFBgpuCANOxRS:localhost:8800$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQT>Qe !SUDzkfFBgpuCANOxRS:localhost:8800$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1MT=Qe !SUDzkfFBgpuCANOxRS:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0T<Qe !SUDzkfFBgpuCANOxRS:localhost:8800$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAT;Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9QT:Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkT9Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUT8Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8T7Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieoT6Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsT5Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAT4Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0T3Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdoT2Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0T1Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAT0Qe !hegUPDZCEEmBhsNJJR:localhost:8800$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34UT/Qe ~!hegUPDZCEEmBhsNJJR:localhost:8800$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gT.Qe }!hegUPDZCEEmBhsNJJR:localhost:8800$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-BkT-Qe |!hegUPDZCEEmBhsNJJR:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgcT,Qe {!hegUPDZCEEmBhsNJJR:localhost:8800$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAT+Qe z!aSKNKSGXPGoIbSrbEN:localhost:8800$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewT*Qe y!aSKNKSGXPGoIbSrbEN:localhost:8800$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcT)Qe x!aSKNKSGXPGoIbSrbEN:localhost:8800$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcT(Qe w!aSKNKSGXPGoIbSrbEN:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gT'Qe v!aSKNKSGXPGoIbSrbEN:localhost:8800$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwT&Qe u!peJMRJtXBvIiCttNmm:localhost:8800$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAT%Qe t!peJMRJtXBvIiCttNmm:localhost:8800$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8T$Qe s!peJMRJtXBvIiCttNmm:localhost:8800$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYT#Qe r!peJMRJtXBvIiCttNmm:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IT"Qe q!peJMRJtXBvIiCttNmm:localhost:8800$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8UwT!Qe p!tPkCGJBKmqUXJoRrnY:localhost:8800$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAT Qe o!tPkCGJBKmqUXJoRrnY:localhost:8800$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgTQe n!tPkCGJBKmqUXJoRrnY:localhost:8800$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUTQe m!tPkCGJBKmqUXJoRrnY:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeATQe l!tPkCGJBKmqUXJoRrnY:localhost:8800$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6ATQe k!QnmLrBAxeItdHsaxWf:localhost:8800$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgTQe j!QnmLrBAxeItdHsaxWf:localhost:8800$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogTQe i!QnmLrBAxeItdHsaxWf:localhost:8800$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8TQe h!QnmLrBAxeItdHsaxWf:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvITQe g!QnmLrBAxeItdHsaxWf:localhost:8800$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0TQe f!hFwigdYZkwYNSwelRH:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQTQe Y!hFwigdYZkwYNSwelRH:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugTQe X!hFwigdYZkwYNSwelRH:localhost:8800$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0TQe W!hFwigdYZkwYNSwelRH:localhost:8800$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0TQe V!hFwigdYZkwYNSwelRH:localhost:8800$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h 2  1  0  /  .  -  ,  +  *  )  (                                                    ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4  3 ~ 2 } 1 | 0 { / z . y - x , w + v * u ) t ( s ' r & q % p $ o # n " m ! l  k  j  i  h  g  f  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B  A  @  ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ q  p  o  n  m  l  k  j  i  h  g  g  g  g  `  _  ^  ]  \  [  Y  X  W  V  U  T  S  R  P  O  N  M  L  K  J  I  B  A  @  ?  >  =  ;  :  9  8  7  6  5  4  3  # " !                                                                                                   ~  LeQa7$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2903}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-559", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-559:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043088039, "hashes": {"sha256": "3O0uA6OO2Jgs7FCmwmMhaIzYp5rsb/jmHLFG3h8neeo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bd3i8pl/cMM9xWzOM04aiq/Dg55qrwi857rqzsignuorywMAeoIUu0IVzk7NioabimKvWl0M9pfjdfKAdzkwDg"}, "localhost:8829": {"ed25519:a_UxIG": "+0X0ffSn9LemyIZlUVul95pl8veO62MIJTAOuFG95sUQRHIh6OQCMiupZy0PJauYPejEb5Jgk+Fk1T1eKT9pDg"}}, "unsigned": {"age_ts": 1570043088039, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-558:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-558", "avatar_url": null}, "sender": "@anon-20191002_181700-558:localhost:8800"}]}}KeQa$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2902}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"], "type": "m.room.history_visibility", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043086734, "hashes": {"sha256": "aRyvdxe4b5+g+yfRg3JGup3Y7ONZu4aC384lOLe2p58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YRI0iZNQW4ykpRGwrPH5UZDqShugUkdvRqkMUUxhf6qx7Bhq8a5L6H7oSaufTMJmrcMe9rwAvqrvU8Y66UX1AA"}}, "unsigned": {"age_ts": 1570043086734}}tJeQau$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2901}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE"], "type": "m.room.join_rules", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043086097, "hashes": {"sha256": "8JVpkgAZ4ASaGYqVlyrgl1RKMtlTJBUDu6Bc33ReNJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+bkH4/KPSNZX35/z2U1jljF3piy6J5Nz0eX9nhOE2ANI+/3pocUseh1nln+M5oCYmnGgsr+DZxGtiQTeYq0OAQ"}}, "unsigned": {"age_ts": 1570043086097}} L " 5LkIeQac$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2900}{"auth_events": ["$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "type": "m.room.power_levels", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"users": {"@anon-20191002_181700-558:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043084549, "hashes": {"sha256": "MaRRZt0fw4+Y8rv2kJQe8pvwBt2IKVEpfZ+gfj7anCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NrOCNfwoDAuWcqURIxfII2DDQHtaxb+x/t5JZ5martBGjEXDVSiEOvmMWb1E6HVw2IBv6odvrHEBqdfu77W5CA"}}, "unsigned": {"age_ts": 1570043084549}}vHeQay$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2899}{"auth_events": ["$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY"], "prev_events": ["$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-558", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-558:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043083995, "hashes": {"sha256": "W9hg1Sslxpa4VKOl55JQVYigg/deO3O3XcAnobD6Lcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OndH1By9plMyzxvEIzW0+cWpDdBuL0h8MSpNP+Dtt+jlMD6t7esllDr9XAFoMXZE1jYG5ddrA9+y8mgW4PWBAQ"}}, "unsigned": {"age_ts": 1570043083995}}iGeQa_$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2898}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-558:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043083263, "hashes": {"sha256": "/xslzKStT5nsSZQUbf8qheX/6rIvli8imxBB1sF15L8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W9vM58H802rtLT5uO12A41Prygqy0+cwPkzIX7kMy9ELAxKe1CKyCiBs+3pGAMfaKqBHMFYJ3ng8seHNMmNZAA"}}, "unsigned": {"age_ts": 1570043083263}}ZFeQaA$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2897}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-556:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043081812, "hashes": {"sha256": "LynIeTaUG1C9iSAUpIBuwz1QpFNvxNgzOqurPuocu+k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1UX6YyKNthwH1lozcMiZFlKvThSWFJYgHBgUloLqt5JNP6DxF3R3iAHnfM22Pk40FUdjWLwl1uy2I17lMa1cCw"}}, "unsigned": {"age_ts": 1570043081812, "replaces_state": "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"}} a} { y w u sqomkigeca~;eeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800~:eeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~9eeQ$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~8eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~7eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~6eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~5eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800~4eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~3eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~2eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~1eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~0eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~/eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~.eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~-eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~,eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~+eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~*eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~)eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~(eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~'eeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~&eeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~%eeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~$eeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~#eeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~"eeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~!eeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~ eeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~eeQ$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800 ! 0 @ P ` p(8HXhxuO ]@anon-20191002_181700-591:localhost:8800$2b$04$zkKjtFzFgQO0F0bXLEPI3.fp3Issmi/HXUez2/zjuL8bOeAA0Wuqy]puN ]@anon-20191002_181700-590:localhost:8800$2b$04$GLOi8UWH4I6mBTFxY/gqLeTy8ySCoXsRBiWagfLgvGtKs9jFJBSku]puM ]@anon-20191002_181700-589:localhost:8800$2b$04$tyag8sBXmr0j.KpZSol7/ephu/nmHjzM0p1ysO9KOe5Dcl8GpYKRG]ouL ]@anon-20191002_181700-588:localhost:8800$2b$04$BIFi2rjwBxS6I/CsSeU6IOAM22bs1md9smZbgyqJsJEjdtrigOYJ2]nuK ]@anon-20191002_181700-587:localhost:8800$2b$04$Fhfpq4AUKQJZ/VDj7J46LOSEFmLgsKcX4rolYQOFiFbvylA8vblSC]nuJ ]@anon-20191002_181700-586:localhost:8800$2b$04$V0plhMzWPqDkXfmBhI1NCeYBwd0B6HyPJ8O3q2Dj0amup3emwT/TG]muI ]@anon-20191002_181700-585:localhost:8800$2b$04$utbSICM.FUusE/ZQX7Ip3.k4D/jpaR2DXorD1stpxS4CjRh0f1Vwm]luH ]@anon-20191002_181700-584:localhost:8800$2b$04$Tc/I7miTlBX6VHRtnW0xAetuKarg666I7X8rA.90iaKYZmYAtpFSK]fuG ]@anon-20191002_181700-583:localhost:8800$2b$04$jjZ0/m7X0hbCEcbrL30jHuFiAFaiJMjFgeFlo4dnfKlyiHs8pIufW]_uF ]@anon-20191002_181700-582:localhost:8800$2b$04$39hQwpBgH.mWAQd46U0lYuohHUzVjRAiUGRpNSZF95jmkwVSCDeNO]ZuE ]@anon-20191002_181700-581:localhost:8800$2b$04$P7CEv56lP6MvEki0vtd7e.9RMpOszrg8aZso6n7/9QS8eHa0kd2H.]ZuD ]@anon-20191002_181700-580:localhost:8800$2b$04$KKOZuyWj.vWg.5Cem1zT.uugpqcApfk7ReQRK4KvrSQcuXFDFoTzm]TuC ]@anon-20191002_181700-579:localhost:8800$2b$04$STvlpE6cXypX.G9ystBA1usxI1R8meI8TSAUl3JyN8KJmOCOT4hdO]OuB ]@anon-20191002_181700-578:localhost:8800$2b$04$.0AYQSY17C5Fxpp3H.z1L.nNXLacXUo5RdSDEDZMtf1UKOfsSwHE6]JuA ]@anon-20191002_181700-577:localhost:8800$2b$04$X4we.ncuy3mypLWRMWw/z.nYvey4QZHehVCBF2LLHvHrbqcObSlqC]Du@ ]@anon-20191002_181700-576:localhost:8800$2b$04$lGSemvEQ1Ch9GWjonBU8o.mZfeH4ufqtF9lOOleLvQiDY2EsLqAIm]?u? ]@anon-20191002_181700-575:localhost:8800$2b$04$FD2TW.MsCKrtbgXkxfu5leyiHB6mIqXMnLFgZbsqJnaF2YBdKr4Qm]>u> ]@anon-20191002_181700-574:localhost:8800$2b$04$dksI6wJkb9f8vtEHdlH9oezQRA5x5WgUtd4NBOqV6zn/4JgxRiMGG]2u= ]@anon-20191002_181700-573:localhost:8800$2b$04$1ftBgm3K.cl4OKBh.qT14u2cZb0F6UM9zAWS6P2Bazq4F3ZrZnB.i]#u< ]@anon-20191002_181700-572:localhost:8800$2b$04$Yafu43uVaOcLEQYsFCezGeb3HuklhI086wVkgih4fQvb2HPvnY4/i]u; ]@anon-20191002_181700-571:localhost:8800$2b$04$D7VubD2Ikp/Tw0FGkCqLSeApWxZqB2uL1jl5SnlUwHjEAwRnuBJN.]u: ]@anon-20191002_181700-570:localhost:8800$2b$04$nrrmLHkJz32MSRK7uxWH2u.hqwRRITmgOw4lE1zLSq/6KRF.iBM82] u9 ]@anon-20191002_181700-569:localhost:8800$2b$04$i/wl6urPmJl8AceWiO1fgu2o0OpisxhtQw5eBxaQOvLapdhmwhg6y]u8 ]@anon-20191002_181700-568:localhost:8800$2b$04$dx.fHpnbSFvaNJeKqywFsez2NeEv9tNqQlet/WAhpVOCBwWa5cquy]u7 ]@anon-20191002_181700-567:localhost:8800$2b$04$A7vrScEs/.jLkx9jC/f62.w07NryZz3bCYqkIE1.z7ne7o9dMSgia]u6 ]@anon-20191002_181700-566:localhost:8800$2b$04$YvqFtZYmOjsCaKKvLtM9ROABelRVAnrAWPysBxBKfHBETsexWPRb.]u5 ]@anon-20191002_181700-565:localhost:8800$2b$04$1jbCiVd2ZiJDpGFcoeU1kO7O.o2SVzwzdBavdt0OEdoi7H0un5Kre]u4 ]@anon-20191002_181700-564:localhost:8800$2b$04$jvEV/z511Vq0lgsQtZSwn.vFgUFEJ0Oa39A62vkbbOKsoFQ5JqQ4e]u3 ]@anon-20191002_181700-563:localhost:8800$2b$04$NN2uT0bB5kLccccH34v4Nej1G7XQKoFhPCHbc6fiohJoB.3bQq4km]u2 ]@anon-20191002_181700-562:localhost:8800$2b$04$cst51e.r7JbVq4zMF.8lJeZjlkwlgyyfPA80O0h4I301IxwDpuw/K]u1 ]@anon-20191002_181700-561:localhost:8800$2b$04$8sA3cixcRng5iPU.Zk5w3OCcAa3.Mn2e2gXKroJcCc/dRJIko0DeC]u0 ]@anon-20191002_181700-560:localhost:8800$2b$04$f/LRebSDvbSu8WRHhGR1s.jV5mazFck.dcKz2VZCa7wJXl70bhiVC]u/ ]@anon-20191002_181700-558:localhost:8800$2b$04$/7tM12SJFUGRBErmfq3ZYOY2nVEj.ud.YHlEyRMFM7JXLSBnSfqYS] HPxX0P(  @ Ph p H  ( h X0h@xpH `8 X 0P@pHX0 ` 8   x x'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 <'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 ;'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 :'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 9'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 8'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 ?'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 >'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 ='Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800 x'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mfzIRinBAGGrZvQAuI:localhost:8800 'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800H('Q!mvgUHEsfGqDkPQUvfG:localhost:8800 A'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 @'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800  0En<p>  v D  tB | J  h6 P   V $ HT"N \ zZ( *1e$adV1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo\1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo]1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAo1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAn1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAm1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAl1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU_1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo^1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEE1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxED1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEC1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE?1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE>1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE=1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs 1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQC1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQB1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQA1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w =1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w <1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w ;d1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4=1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4<1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4;1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY 81e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY 71e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY 61e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs~1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs}1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg^ 6U*K V2gu@uBP s  >U _ % O  ; Y d<U^Q']!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800 BQ? !lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibility  :Q/ !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules RQ'E!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455 6Q' !lgejtcwlywOoIXwEgy:localhost:8800m.room.create <Q3 !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels :Q/ !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules 4Q!!lEJUJZxqZPKZetemiR:localhost:8800test_stateY 4Q!!lEJUJZxqZPKZetemiR:localhost:8800test_stateT 4Q!!lEJUJZxqZPKZetemiR:localhost:8800test_stateB <Q3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels BQ? !lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility 6Q' !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.createH6Q' !lEJUJZxqZPKZetemiR:localhost:8800m.room.create ^Q']!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800 RQ'E!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455 <Q3 !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levels|^Q']!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800y:Q/ !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rulesBQ? !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibility6Q' !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.createv?Q9 !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_aliasEQ))!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800;Q3 !kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsv\Q'[!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800r9Q/ !kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rulest:Q/ !mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rulesBQ? !mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibility6Q' !mMsxpaIlcykPuOnDyl:localhost:8800m.room.create}?Q9 !mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_aliasEQ))!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800<Q3 !mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels~^Q']!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800^Q']!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800}:Q/ !mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rulesBQ? !mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibility6Q' !mBQpGaIiadEuKBXfOw:localhost:8800m.room.create|<Q3 !mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state;Q3 !loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels#\Q'[!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800"9Q/ !loalEsWaTYwrVUNJLr:localhost:8800m.room.join_rules$AQ? !loalEsWaTYwrVUNJLr:localhost:8800m.room.history_visibility%5Q' !loalEsWaTYwrVUNJLr:localhost:8800m.room.create!<Q3 !laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels^Q']!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829 ^Q']!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800:Q/ !laUExtszUaoCpZoyEq:localhost:8800m.room.join_rules BQ? !laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibility 6Q' !laUExtszUaoCpZoyEq:localhost:8800m.room.create<Q3 !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levelsBQ? !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibility:Q/ !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rules^Q']!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800^Q']!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800 #^o z 8 C q  :fk/4\g%0^eAeQ/ $V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rulesg@eQ3 $FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels ?eQ']$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800joina>eQ' $UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.createm=eQ? $8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibilitye<eQ/ $nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rulesg;eQ3 $XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels :eQ']$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800joina9eQ' $KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.createm8eQ? $BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibilitye7eQ/ $7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rulesg6eQ3 $xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels 5eQ']$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800joina4eQ' $IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800m.room.createm3eQ? $gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibilitye2eQ/ $sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rulesg1eQ3 $FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels 0eQ']$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800joina/eQ' $9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.createm.eQ? $8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibilitye-eQ/ $BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rulesg,eQ3 $Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels +eQ']$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800joina*eQ' $CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800m.room.createm)eQ? $QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibilitye(eQ/ $8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rulesg'eQ3 $RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels &eQ']$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800joina%eQ' $JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.createm$eQ? $wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibilitye#eQ/ $SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rulesg"eQ3 $xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels !eQ']$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800joina eQ' $Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create eQ']$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800join  IkiOeQ!$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800{"outlier": true, "out_of_band_membership": true, "stream_ordering": 2906}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s", "$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-558", "membership": "invite"}, "depth": 9, "hashes": {"sha256": "jN0yoe3cszJupV2gO0EYHiYHD4sZHpHqhIgXMQImf9A"}, "origin": "localhost:8829", "origin_server_ts": 1570043091336, "prev_events": ["$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug"], "prev_state": [], "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-559:localhost:8829", "state_key": "@anon-20191002_181700-558:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "rXmWEug2euylFTuuTrlMOX9InSlkyBk/oCW8l05Pr5tCWDon8jm4u4fzeWWFpFJ7Sl5S3DCEynkMsK3A4AeCDQ"}, "localhost:8800": {"ed25519:a_OdAo": "hbN5dgw4UNOjcwA09VQolbl9XPqTHk0vGzDvD+31O/i4lsq/yGDzUrxFYj0IRv1veGMF27LTr9itNLe1FZs9DA"}}, "unsigned": {"age": 9, "invite_room_state": [{"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-558:localhost:8800", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-559", "membership": "join"}, "sender": "@anon-20191002_181700-559:localhost:8829", "state_key": "@anon-20191002_181700-559:localhost:8829", "type": "m.room.member"}], "replaces_state": "$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug"}}ZNeQaA$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2905}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-558:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043090263, "hashes": {"sha256": "02OWVQI84rq7thU9tdmpiA4v4aA4N7Gh00sk45Zk6Kk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KoJ+UvnKFfPuClRTf+drUR20LoWzAQ0u4KxpFXrnmzpEe1i8vewmYhxTc/ur1JaRNiGs+Kz34lLnBuFr5SA3BQ"}}, "unsigned": {"age_ts": 1570043090263, "replaces_state": "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"}}3MeQ1!$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2904}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-559", "membership": "join"}, "depth": 7, "hashes": {"sha256": "Q+sgYWdxjmDkNTU0JOsgLdKTQZoy8pvmPcsp7+I1/so"}, "origin": "localhost:8829", "origin_server_ts": 1570043088774, "prev_events": ["$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0"], "prev_state": [], "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-559:localhost:8829", "state_key": "@anon-20191002_181700-559:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H/KwR+ZrrUP7MjKwBItFw3bxjaduszrESfg5fdBo4wwF+bG7AUxdfKZBYjeXQ2J8BjintvcIqsWLctVVHUArDg"}, "localhost:8829": {"ed25519:a_UxIG": "BydZS6Wc9sQSZzBf8Eu38U8J4pEfL069H7DxKyUrtJckR6M8P7cvkINEQlxQ69A4zIKlZ/i1JcVzCfurKoqAAA"}}, "unsigned": {"age": 92, "replaces_state": "$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0"}} J\.vHvHb4 | N h <  V ( r D  ^ 0 zLf8 T&n@d6~P"-]@anon-20191002_181700-582:localhost:8800-]@anon-20191002_181700-580:localhost:8800-]@anon-20191002_181700-579:localhost:8800-]@anon-20191002_181700-578:localhost:8800-]@anon-20191002_181700-577:localhost:8800-]@anon-20191002_181700-576:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-661:localhost:8800-]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800#-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800-]@anon-20191002_181700-654:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-650:localhost:8800+[@anon-20191002_181700-64:localhost:8800$-]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800-]@anon-20191002_181700-641:localhost:8800-]@anon-20191002_181700-640:localhost:8800+[@anon-20191002_181700-63:localhost:8800"-]@anon-20191002_181700-639:localhost:8800-]@anon-20191002_181700-638:localhost:8800-]@anon-20191002_181700-637:localhost:8800-]@anon-20191002_181700-636:localhost:8800-]@anon-20191002_181700-636:localhost:8800-]@anon-20191002_181700-635:localhost:8800-]@anon-20191002_181700-634:localhost:8800-]@anon-20191002_181700-633:localhost:8800-]@anon-20191002_181700-632:localhost:8800+[@anon-20191002_181700-62:localhost:8800!-]@anon-20191002_181700-629:localhost:8829-]@anon-20191002_181700-628:localhost:8800-]@anon-20191002_181700-626:localhost:8800-]@anon-20191002_181700-625:localhost:8800-]@anon-20191002_181700-624:localhost:8800-]@anon-20191002_181700-623:localhost:8800-]@anon-20191002_181700-622:localhost:8800-]@anon-20191002_181700-620:localhost:8800+[@anon-20191002_181700-61:localhost:8800 -]@anon-20191002_181700-619:localhost:8800-]@anon-20191002_181700-617:localhost:8800-]@anon-20191002_181700-616:localhost:8800-]@anon-20191002_181700-614:localhost:8800-]@anon-20191002_181700-613:localhost:8800-]@anon-20191002_181700-612:localhost:8800-]@anon-20191002_181700-611:localhost:8800-]@anon-20191002_181700-610:localhost:8800-]@anon-20191002_181700-609:localhost:8800-]@anon-20191002_181700-608:localhost:8800-]@anon-20191002_181700-607:localhost:8829-]@anon-20191002_181700-607:localhost:8829-]@anon-20191002_181700-606:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-603:localhost:8800-]@anon-20191002_181700-601:localhost:8800-]@anon-20191002_181700-584:localhost:8800-]@anon-20191002_181700-583:localhost:8800 9 2 k O3v!Z9# Q]]Q=$1570043192266CXqej:localhost:8800@anon-20191002_181700-574:localhost:8800@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800joinanon-20191002_181700-574C" e]]Q=$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y@anon-20191002_181700-574:localhost:8800@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800joinanon-20191002_181700-574C! e]]Q=$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI@anon-20191002_181700-573:localhost:8800@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800joinanon-20191002_181700-573C e]]Q=$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA@anon-20191002_181700-572:localhost:8800@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800joinanon-20191002_181700-572C e]]Q=$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4@anon-20191002_181700-571:localhost:8800@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800joinanon-20191002_181700-5719 Q]]Q=$1570043151259knbjg:localhost:8800@anon-20191002_181700-570:localhost:8800@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800joinanon-20191002_181700-570C e]]Q=$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo@anon-20191002_181700-570:localhost:8800@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800joinanon-20191002_181700-570C e]]Q=$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM@anon-20191002_181700-569:localhost:8800@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800joinanon-20191002_181700-569C e]]Q=$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0@anon-20191002_181700-568:localhost:8800@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800joinanon-20191002_181700-568C e]]Q=$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo@anon-20191002_181700-567:localhost:8800@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800joinanon-20191002_181700-567C e]]Q=$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0@anon-20191002_181700-566:localhost:8800@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800joinanon-20191002_181700-566C e]]Q=$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc@anon-20191002_181700-565:localhost:8800@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800joinanon-20191002_181700-565C e]]Q=$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g@anon-20191002_181700-564:localhost:8800@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800joinanon-20191002_181700-564C e]]Q=$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I@anon-20191002_181700-563:localhost:8800@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800joinanon-20191002_181700-563C e]]Q=$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA@anon-20191002_181700-562:localhost:8800@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800joinanon-20191002_181700-562C e]]Q=$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI@anon-20191002_181700-561:localhost:8800@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800joinanon-20191002_181700-561C e]]Q=$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800joinanon-20191002_181700-558E e]]Q=$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800inviteanon-20191002_181700-558, e]]Q$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800leaveC e]]Q=$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0@anon-20191002_181700-559:localhost:8829@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800joinanon-20191002_181700-559 ?>Rf+z?Oc( w <  P  d ) x =  Q e*yf+z?S8y]!@anon-20191002_181700-608:localhost:8800RSNCULZYRU8x]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZE8w]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTV8v]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDD8u]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJ8t]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZW8s]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAP8r]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLM%q7!@admin:localhost:8800GMJMIKRCOD8p]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR8o]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS8I]!b@anon-20191002_181700-558:localhost:8800ZVKDTDNPLS8H]!a@anon-20191002_181700-557:localhost:8800KTBNHNNWDA8G]!^@anon-20191002_181700-556:localhost:8800TMQBHREBEO8F]!]@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ8E]!Z@anon-20191002_181700-554:localhost:8800FFUSIPBHXS8D]!Y@anon-20191002_181700-553:localhost:8829UQYOPZHDDU8C]!X@anon-20191002_181700-552:localhost:8800JYCWUAAHBU8B]!W@anon-20191002_181700-551:localhost:8800PDLFVATDIV8A]!V@anon-20191002_181700-550:localhost:8800TBXCVBUGVR8@]!U@anon-20191002_181700-549:localhost:8800BYOSFCFMSO8?]!S@anon-20191002_181700-548:localhost:8800XQXKFJTYCC8>]!R@anon-20191002_181700-545:localhost:8800TWGXUTPQOV8=]!Q@anon-20191002_181700-543:localhost:8800FZCMWYDVSK8<]!P@anon-20191002_181700-542:localhost:8829IKECMPFQXL8;]!M@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ8n]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHW8m]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSG8l]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ8k]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHT8j]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXT8i]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPR8h]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ8g]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAU8f]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVE8e]!~@anon-20191002_181700-586:localhost:8800DOTBNZJMYC8d]!}@anon-20191002_181700-585:localhost:8800XLLZJGYIHR8c]!|@anon-20191002_181700-584:localhost:8800FZKRURXWXE8b]!{@anon-20191002_181700-583:localhost:8800ZQYHHUGDME8a]!z@anon-20191002_181700-582:localhost:8800WSKNBNWTAR8`]!y@anon-20191002_181700-581:localhost:8800RYCHJSFPQZ8_]!x@anon-20191002_181700-580:localhost:8800CRNUPLGBOP8^]!w@anon-20191002_181700-579:localhost:8800LLEXLPJZBR8]]!v@anon-20191002_181700-578:localhost:8800JVKVSBXCSN8\]!u@anon-20191002_181700-577:localhost:8800MKYGCGNVJB8[]!t@anon-20191002_181700-576:localhost:8800OMBHTKYAAU8Z]!s@anon-20191002_181700-575:localhost:8800NDSWGGEQOX8Y]!r@anon-20191002_181700-574:localhost:8800HLLZYJLEQN8X]!q@anon-20191002_181700-573:localhost:8800BMOWCJUXWQ8W]!p@anon-20191002_181700-572:localhost:8800VQNUOKTLPP8V]!o@anon-20191002_181700-571:localhost:8800LDVXZXQHTM8U]!n@anon-20191002_181700-570:localhost:8800ECXFORDQSP8T]!m@anon-20191002_181700-569:localhost:8800QUJKINDXXQ8S]!l@anon-20191002_181700-568:localhost:8800IRGUUINXHF8R]!k@anon-20191002_181700-567:localhost:8800XHVOSXRUNL8Q]!j@anon-20191002_181700-566:localhost:8800QBBGHXSEKF8P]!i@anon-20191002_181700-565:localhost:8800MSICJQZBGX8O]!h@anon-20191002_181700-564:localhost:8800JAGAKQJOKZ8N]!g@anon-20191002_181700-563:localhost:8800RLVZAZQHOM8M]!f@anon-20191002_181700-562:localhost:8800RUCUWRMARX8L]!e@anon-20191002_181700-561:localhost:8800YQDTZKECLG8K]!d@anon-20191002_181700-560:localhost:8800MSCBPCIKEE8J]!c@anon-20191002_181700-559:localhost:8829ESMCXDKMPQ E Z ( Y a /gm; sAy SG qM S!9-_' 5@ x F   M M M M$JSak2h1shg1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb01e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU21e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgK1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEw1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk51e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYb1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYQ1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI*1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIo1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAeww1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw}1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y431e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI%1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgF 21e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk51e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt01e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i01e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM01e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw=0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68md1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA 1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds l1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o Z1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 91e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 31e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4(1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sh1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkG20e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8T1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko k1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 21e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgr0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIO ~Kp>  v Q  W % L ] +\ *jc1i7o= 8vD  |JP DV $1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8g1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ=1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8=1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM &1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY@1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw71e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNov1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc]1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oj1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt80e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUK1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 "1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcG1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE 1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUG1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcP1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8 1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4;1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-421e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 11e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc A$lolredact:localhost:42455 1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo C1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 M1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 C1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A ,1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0<1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A ~Kp>  v Q  W % L ] +\ *jc1i7o= 8vD  |JP DV $1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8a1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ=1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8=1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM &1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY@1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw71e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNov1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc]1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oj1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt80e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUK1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 "1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcG1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE 1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUG1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcP1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8 1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4;1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-421e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 11e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc A$lolredact:localhost:42455 }1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo C1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 M1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 C1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A ,1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK061e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A  t kSeQac$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2921}{"auth_events": ["$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0", "$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "prev_events": ["$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "type": "m.room.power_levels", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"users": {"@anon-20191002_181700-561:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043099166, "hashes": {"sha256": "qPJqjsizuJKG9Tv4m1CbMmOltZP8lfjPdbc6MMolk/k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fIPlfwPjFAIaidUv0ja2xluv43TNyFKMrpE1HTEBnqz5b7aDNPODRimA+2cxNxivWR6x8DRWXHD3iNwC9Ki7Ag"}}, "unsigned": {"age_ts": 1570043099166}}vReQay$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2920}{"auth_events": ["$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0"], "prev_events": ["$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0"], "type": "m.room.member", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-561", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-561:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043098622, "hashes": {"sha256": "YczK8s+21li7kgqXcxnGwRdc5dUZfUWEewExpVCWJ/E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8MuCOEVHKScD2b6MhmZVz+B1FF7/hRZ4PDOgBByCdnBpA1/4MQuARQGyRURErZljCIUWbNQ2EmXB+6OyO3JvAA"}}, "unsigned": {"age_ts": 1570043098622}}iQeQa_$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2919}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-561:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043097955, "hashes": {"sha256": "ommiWqQtLp+Bq4JjLSyq5BD8ReWmJVIOfbtnGV2in38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bihgwxGE+kE/8ywU0P6D+4CTG57z34Oyz3j5ii7XtecIV6qe4FvhdhC5cvn8yBSX3jAWeVSg3X7sJJXD+3QlDw"}}, "unsigned": {"age_ts": 1570043097955}}PeQ??$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800{"stream_ordering": 2918}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"], "prev_events": ["$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-558", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-558:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043092068, "hashes": {"sha256": "MuPXrtnmFfoqk+LA2k6dw6dMAfeedUHeXit0VDTmO78"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "gP8+UJQ+9fOJBf55Ti+VG0T16C/Pk59KderLJtA/6R4ehoDyYN45vUy5Qc3U9/bCzy59HipCWGjOVxnOl2nXCQ"}, "localhost:8800": {"ed25519:a_OdAo": "SkAGRmz8NkDpIgMPuFq4B8MKJZMFpgEGBq7eJuTz5viuHYn+3HwMZD8eLarjisOGkAI4h5CnPUKsCJmHEQZxAw"}}, "unsigned": {"replaces_state": "$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8", "age_ts": 1570043092071}} =zY"zUq: V  r 9 W  s :  X t;Y u<Xv=A]$8]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLM=8]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAP>5Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZS6[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQX8]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR;8]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS:8]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSG88]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHW98]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHSn8]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm8]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUOl6[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQI^8]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWAk8]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGGj8]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOSi8]!@anon-20191002_181700-646:localhost:8800HFMIURTAJAh8]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVGg8]!@anon-20191002_181700-644:localhost:8800INFGSFBNKUf8]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQe8]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQd8]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVIc8]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQNb6[!@anon-20191002_181700-63:localhost:8800VLTVDGDALO\8]!@anon-20191002_181700-639:localhost:8800VIDPYYIORGa8]!@anon-20191002_181700-638:localhost:8800AMILRIOBVF`8]!@anon-20191002_181700-637:localhost:8800SOCIZPGICG_8]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOL^8]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJG]8]!@anon-20191002_181700-633:localhost:8800TRECTOOCOT\8]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWE[8]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZZ8]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPEY6[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYX[8]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTXX8]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPWW8]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWOV8]!@anon-20191002_181700-625:localhost:8800LXKNSEODEIU8]!@anon-20191002_181700-624:localhost:8800AATHUMCUILT8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUDS8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLUR8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDHQ8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQP6[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUZ8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVVO8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABYN8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUETM8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHSL8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEMK8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZJ8]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHII8]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRPH8]!@anon-20191002_181700-611:localhost:8800UERIFUMBMUG8]!@anon-20191002_181700-610:localhost:8800ZXXERHSURNF6[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGY8]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEE8]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUD8]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVB8]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDA8]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEC8]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZW?8]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJ@ i 4 h5 gi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVCS3BRQDJqeU1BRE9oPTUKMDAyZnNpZ25hdHVyZSC2VSzsdjWxC0I8UyNUBZp8kSpBgQTjCYiVQLs2_Z2zGQo/1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-go,1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAo*1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQo'1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7Qo+1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewo)1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwo(1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAo&1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7Ao%1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6Ao$1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZPJkF4RnUtYVF-MDFTb1oKMDAyZnNpZ25hdHVyZSDOsredtu5HxxLeGWlpO64Nf5DkwOHlWzJV5qsXYtmkpgo.1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgo#1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAo- ,NC 8 - { " p  e ZOD9.|#qf V|eL$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMsha256W?* v]E 2UtnV{eL$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIsha2560 $̶ q>F`LjVzeL$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Qsha256Yx}aШpct4&j[bX _VyeL$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsksha256SENMMk^EuldFVxeL$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQsha256`sjڎg-ާ9 >ͮ.VweL$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Msha256(p7b%Ui&̛_LzzSVveL$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0sha256QT.3RlF'BAVueL$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAsha256MSgZOTQ!kB#>YѶu*TyVteL$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Qsha256!Js|cj̖7VseL$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIksha256Ha1!0HۢTRj|VreL$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUsha256WhNwcc0(2kPVqeL$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8sha256s6sV .75H ȲlЗVpeL$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieosha256[< kX5 cG0K1)VoeL$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVssha256RK(b\;C6GFK nS![VneL$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAsha256 %hMU6Uj?0VmeL$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0sha256 a^9NADRjWkmsԜ VleL$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdosha256^5nj=]wP}L*_WnEVkeL$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0sha256ϝ8Iqff[9VjeL$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAsha256)V:jV4d`7Kʉ5@VieL$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Usha256r0zsEizO*J~߅VheL$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gsha256U!2iQ]C٩T[#]S4ȴ;VgeL$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bksha256XP9&[)!s]-Nx)VfeL$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcsha2566$!=śԾ!Y8VeeL$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAsha256 {"9/A7 P*/!ƻ"ekeVdeL$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewsha2564CٍOzC W 4YgVceL$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcsha256y. 0#_g BG"7VbeL$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcsha2561ZB@]}iHXVDa|z7VaeL$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gsha256ŲW* 6B f>ɺ왨B V`eL$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwsha256Y4kޮU*BB(V_eL$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAsha256uj{#4ʠgx?] V^eL$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8sha256rr%?:jQv_A* 7V]eL$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYsha256 zI`DR_\ɪO.dV\eL$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4Isha256{qbcw =/:i8qCUV[eL$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwsha256}VQXN?(Tcd9m0D1LVZeL$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAsha256C"e/btHe{};I\DVYeL$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgsha256;@Hvcp$;(x GƾVXeL$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUsha256E.'&-s\ vS2M/tIVWeL$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAsha256(ǠSr.1mîlAd~̡VVeL$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6Asha256&= ťdeCݵ 07VUeL$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgsha256k\ g5gqu0ЫF_~ 9VTeL$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogsha256Iv9yfn'q_J BM|;M~lVSeL$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8sha256DƷ g}gX><NFy~ƆVReL$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIsha256{̏!軳~rQ#VQeL$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0sha256b^t5/5JR2D~F^zdU  vWeQay$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2925}{"auth_events": ["$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A"], "prev_events": ["$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A"], "type": "m.room.member", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-562", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-562:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043103027, "hashes": {"sha256": "TW6yp6BVv+if24STdrT5y77mx0T7myU3D5CCDIclJfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gcVwxdsMelaPr+Otm0dXyXz/uqnppPsR3jinwf4pXJ/qlW4gJ8OIQ39oA+4ZZxmPklJpf+Y2/Jegkn76nFnKAQ"}}, "unsigned": {"age_ts": 1570043103027}}iVeQa_$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2924}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-562:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043102247, "hashes": {"sha256": "M2+N3Ac2PuuJEeezwtDYnOnp9k7RYptkcf1Mt7I2k+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A4po5nS4drR1deW/hssc92WXbESseHCZtVnOL9DVmJyL0MfTh2qRtAIa25jCHYyzWKKZ/Y/5lw/gJ5X3Ozi6DA"}}, "unsigned": {"age_ts": 1570043102247}}UeQa$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2923}{"auth_events": ["$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8", "$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0", "$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "prev_events": ["$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog"], "type": "m.room.history_visibility", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043100592, "hashes": {"sha256": "q+DhDqRG1QMvm6JmNpCF/wm1TeckBXJ6aNsqvg+rK0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7vzRbxwgwBSeyT/V1ZldN0m0Z8MSagDqboEE2nEZt7LJEUB7d3gdMZPiFbksQHzB+oFYOekKIIJ8PTCmnRY5DA"}}, "unsigned": {"age_ts": 1570043100592}}tTeQau$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2922}{"auth_events": ["$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8", "$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0", "$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "prev_events": ["$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8"], "type": "m.room.join_rules", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043099807, "hashes": {"sha256": "szIZesPMoppPgbik6SBlYjyUXKlR4OzkNaePZPD/H94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8v7kdCtMEmEV5km6BGJSeBY2HaHY/ilVJJDzu544z1fPi4fkewUn9P2YKMZIzK1xRAAwB1NJbxVgDUDZP8Z8Aw"}}, "unsigned": {"age_ts": 1570043099807}} a} { y w u sqomkigeca~ZeeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800~YeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800~XeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800~WeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800~VeeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800~UeeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800~TeeQ$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800~SeeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800~ReeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~QeeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800~PeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800~OeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~NeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800~MeeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800~LeeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~KeeQ$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~JeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800~IeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~HeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800~GeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800~FeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~EeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800~DeeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800~CeeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~BeeQ$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~AeeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800~@eeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~?eeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800~>eeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800~=eeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~<eeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800 #U(- Q \   Iqv 49]h +Ug#Q/ e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rules$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQi"Q3 e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M !Q']e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0c Q' e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.create$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAoQ? e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkgQ/ e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rules$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUiQ3 e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 Q']e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieocQ' e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.create$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsoQ? e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibility$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAgQ/ e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rules$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0iQ3 e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo Q']e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0cQ' e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.create$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAoQ? e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibility$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34UgQ/ e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rules$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-giQ3 e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk Q']e ~!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgccQ' e }!hegUPDZCEEmBhsNJJR:localhost:8800m.room.create$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAoQ? e |!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibility$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewgQ/ e {!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rules$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzciQ3 e z!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc Q']e y!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gc Q' e x!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.create$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwo Q? e w!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibility$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAg Q/ e v!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rules$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8i Q3 e u!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY Q']e t!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IcQ' e s!peJMRJtXBvIiCttNmm:localhost:8800m.room.create$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8UwoQ? e r!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibility$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAgQ/ e q!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rules$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgiQ3 e p!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU Q']e o!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAcQ' e n!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.create$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6AoQ? e m!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibility$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg :\ Z  j  p"z(2<:,e?Q ]$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAm.room.history_visibility!gXfXRDTXeVvOHQdaaQ:localhost:8800mm'@anon-20191002_181700-566:localhost:8800$e/Q ]$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0m.room.join_rules!gXfXRDTXeVvOHQdaaQ:localhost:8800m\m@anon-20191002_181700-566:localhost:8800&e3Q ]$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdom.room.power_levels!gXfXRDTXeVvOHQdaaQ:localhost:8800mڊmے@anon-20191002_181700-566:localhost:8800 e'Q ]$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0m.room.member!gXfXRDTXeVvOHQdaaQ:localhost:8800mm[@anon-20191002_181700-566:localhost:8800 e'Q  ]$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAm.room.create!gXfXRDTXeVvOHQdaaQ:localhost:8800mmD@anon-20191002_181700-566:localhost:8800,e?Q ]$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Um.room.history_visibility!hegUPDZCEEmBhsNJJR:localhost:8800m]mQ@anon-20191002_181700-565:localhost:8800$~e/Q ]$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gm.room.join_rules!hegUPDZCEEmBhsNJJR:localhost:8800mʞm6@anon-20191002_181700-565:localhost:8800&}e3Q ]$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bkm.room.power_levels!hegUPDZCEEmBhsNJJR:localhost:8800mǗm@anon-20191002_181700-565:localhost:8800 |e'Q ]$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcm.room.member!hegUPDZCEEmBhsNJJR:localhost:8800mTmŭ@anon-20191002_181700-565:localhost:8800{ e'Q  ]$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAm.room.create!hegUPDZCEEmBhsNJJR:localhost:8800mšm@anon-20191002_181700-565:localhost:8800,ze?Q ]$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewm.room.history_visibility!aSKNKSGXPGoIbSrbEN:localhost:8800mܺUmܼ@anon-20191002_181700-564:localhost:8800$ye/Q ]$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcm.room.join_rules!aSKNKSGXPGoIbSrbEN:localhost:8800mܷ+mܸ@anon-20191002_181700-564:localhost:8800&xe3Q ]$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcm.room.power_levels!aSKNKSGXPGoIbSrbEN:localhost:8800mܴJmܵ@anon-20191002_181700-564:localhost:8800 we'Q ]$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gm.room.member!aSKNKSGXPGoIbSrbEN:localhost:8800mܱ_mܱ@anon-20191002_181700-564:localhost:8800v e'Q  ]$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwm.room.create!aSKNKSGXPGoIbSrbEN:localhost:8800mܮHmܮ@anon-20191002_181700-564:localhost:8800,ue?Q ]$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAm.room.history_visibility!peJMRJtXBvIiCttNmm:localhost:8800mܧmܨ@anon-20191002_181700-563:localhost:8800$te/Q ]$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8m.room.join_rules!peJMRJtXBvIiCttNmm:localhost:8800mܣHmܤ@anon-20191002_181700-563:localhost:8800&se3Q ]$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYm.room.power_levels!peJMRJtXBvIiCttNmm:localhost:8800mܟmܠ@anon-20191002_181700-563:localhost:8800 re'Q ]$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4Im.room.member!peJMRJtXBvIiCttNmm:localhost:8800mܜmܝ.@anon-20191002_181700-563:localhost:8800q e'Q  ]$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwm.room.create!peJMRJtXBvIiCttNmm:localhost:8800mܘmܙ@anon-20191002_181700-563:localhost:8800,pe?Q ]$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAm.room.history_visibility!tPkCGJBKmqUXJoRrnY:localhost:8800mܑmܓy@anon-20191002_181700-562:localhost:8800$oe/Q ]$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgm.room.join_rules!tPkCGJBKmqUXJoRrnY:localhost:8800m܎Am܎@anon-20191002_181700-562:localhost:8800&ne3Q ]$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUm.room.power_levels!tPkCGJBKmqUXJoRrnY:localhost:8800m܉m܌@anon-20191002_181700-562:localhost:8800 me'Q ]$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAm.room.member!tPkCGJBKmqUXJoRrnY:localhost:8800m܇3m܇@anon-20191002_181700-562:localhost:8800 >Y!b:rK# a ] 6q  Y n F 9 ~ V .  f @I   y Q ) 'Q!yNfCaBMPezurwkJRAX:localhost:8800D'Q!yNfCaBMPezurwkJRAX:localhost:8800C'Q!yWhIsLsgNVGcnELrDS:localhost:88007'Q!yWhIsLsgNVGcnELrDS:localhost:88006'Q!yWhIsLsgNVGcnELrDS:localhost:88005'Q!wCsDjKBtuUbrmZgjsB:localhost:88004'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800&'Q!yLccBXjjEasExpsXlt:localhost:8800%'Q!yAzXcNLHMuqFOcOexj:localhost:8800/'Q!yAzXcNLHMuqFOcOexj:localhost:8800.&Q!xwoIOPTGmJIlTXakxC:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800l&Q!xhbvqJDfxMSsZPqvld:localhost:8800/'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800 &Q!wnriPzXkIMmdTNoJKU:localhost:8800,'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800D&Q!wIhMbfQzYbJobPdwyi:localhost:8800W&Q!wIhMbfQzYbJobPdwyi:localhost:8800V'Q!wBkUBAjOznOyxrLchl:localhost:8800h'Q!wBkUBAjOznOyxrLchl:localhost:8800g  i[eQa_$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2929}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-563:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043107492, "hashes": {"sha256": "X3xZUxS8a0YXlbqGY8hf/QfD54WzWEeGuqi2M0O8Afg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tB4N8gv7UpHXUygUl2fAeIrL9gDbMgPMdg3ZTgRWOVrJkp0/WmDi40EdEffekGRe1ZzmJ5cRNr1+3YSvGzjYDg"}}, "unsigned": {"age_ts": 1570043107492}}ZeQa$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2928}{"auth_events": ["$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU", "$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A", "$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "prev_events": ["$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg"], "type": "m.room.history_visibility", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043105686, "hashes": {"sha256": "Q4rnn0HM9N3/zJgjTdUvulihc+gu9upeMLLC+2MOcEk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Fue9S5oH2X3uza7PvHdp10PxIIk3E6gSzOrVdTu7tPs9eS6iSxkjqr3gc7e/HPy7RLCxIEcljx1Q5uh6rP2BQ"}}, "unsigned": {"age_ts": 1570043105686}}tYeQau$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2927}{"auth_events": ["$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU", "$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A", "$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "prev_events": ["$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU"], "type": "m.room.join_rules", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043104833, "hashes": {"sha256": "VS5dfF/2ezGDoIvrlR2zxq8Fg06yES/6feL7DM9WN3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GjOloTZ/iyZYtI/dQwHVTpWXS/Q88W+wcLXEu/4ukmxo7DnJBSlCN/JQ2vGtBuTan0ayF1RPkPEpB1G2XgQUDg"}}, "unsigned": {"age_ts": 1570043104833}}kXeQac$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2926}{"auth_events": ["$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A", "$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "prev_events": ["$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "type": "m.room.power_levels", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"users": {"@anon-20191002_181700-562:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043103708, "hashes": {"sha256": "RHUewqYPVjMYadfkGK/QVdd6RJzXhVcE995qzPgV+A4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3AXH47SUVGNDnZqGeKUFuuJJ8uRdebvKU+Ebl1UU9GJ2vcKa4pHyrefMKFsiMdz0Tya/911yDvvJb7t/wbyKBw"}}, "unsigned": {"age_ts": 1570043103708}} .RM H C > 9 4/*|%w rmhw*J QQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043153262hRyOa:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152261Skczg:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152260dkyqc:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043151259knbjg:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043150258cdaXl:localhost:8800TQe !fdEymmlcUvjgshvVyl:localhost:8800$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6YTQe !fdEymmlcUvjgshvVyl:localhost:8800$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgTQe !fdEymmlcUvjgshvVyl:localhost:8800$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgTQe !fdEymmlcUvjgshvVyl:localhost:8800$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4TQe !fdEymmlcUvjgshvVyl:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgoTQe !fdEymmlcUvjgshvVyl:localhost:8800$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYTQe !xcdNyJNFEdaBGFycsB:localhost:8800$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0oTQe !xcdNyJNFEdaBGFycsB:localhost:8800$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkTQe !xcdNyJNFEdaBGFycsB:localhost:8800$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0TQe !xcdNyJNFEdaBGFycsB:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMTQe !xcdNyJNFEdaBGFycsB:localhost:8800$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheITQe !SUDzkfFBgpuCANOxRS:localhost:8800$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRskTQe !SUDzkfFBgpuCANOxRS:localhost:8800$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQTQe !SUDzkfFBgpuCANOxRS:localhost:8800$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1MT Qe !SUDzkfFBgpuCANOxRS:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0T Qe !SUDzkfFBgpuCANOxRS:localhost:8800$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAT Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkT Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUT Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8TQe !rWmvvGBgmFMdVvcfPk:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieoTQe !rWmvvGBgmFMdVvcfPk:localhost:8800$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsTQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzATQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0TQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdoTQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0TQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUATQe !hegUPDZCEEmBhsNJJR:localhost:8800$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34UTQe !hegUPDZCEEmBhsNJJR:localhost:8800$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gTQe !hegUPDZCEEmBhsNJJR:localhost:8800$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-BkT~Qe ~!hegUPDZCEEmBhsNJJR:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgcT}Qe }!hegUPDZCEEmBhsNJJR:localhost:8800$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAT|Qe |!aSKNKSGXPGoIbSrbEN:localhost:8800$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewT{Qe {!aSKNKSGXPGoIbSrbEN:localhost:8800$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcTzQe z!aSKNKSGXPGoIbSrbEN:localhost:8800$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcTyQe y!aSKNKSGXPGoIbSrbEN:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gTxQe x!aSKNKSGXPGoIbSrbEN:localhost:8800$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwTwQe w!peJMRJtXBvIiCttNmm:localhost:8800$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeATvQe v!peJMRJtXBvIiCttNmm:localhost:8800$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8TuQe u!peJMRJtXBvIiCttNmm:localhost:8800$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYTtQe t!peJMRJtXBvIiCttNmm:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4ITsQe s!peJMRJtXBvIiCttNmm:localhost:8800$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw  _eQa$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2933}{"auth_events": ["$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY", "$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw", "$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "prev_events": ["$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8"], "type": "m.room.history_visibility", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043111186, "hashes": {"sha256": "xn5kLUtz8yAfKnHr/V6Ium+nZpqDLKiPTztNNYnL3O0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RhGZLQfRp6+t/wqaThOvdg2fvPjMizpXP0ILhOztxX8q18R08U2W5itlT3Z+Q8VMNmXmVG/JnYI6az42rRFrBg"}}, "unsigned": {"age_ts": 1570043111186}}t^eQau$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2932}{"auth_events": ["$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY", "$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw", "$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "prev_events": ["$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY"], "type": "m.room.join_rules", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043110216, "hashes": {"sha256": "DRQDl/zSCwIJAnqC+aacZKzX6kUbTdBKsQfFUq936VI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1lY8Ku2WMWoPwSSsTimlTZQMEWtRtI76PUK/S23kYLEF5/ppMYRpJL81PXV1YaRpnvnfVRJCmRLydhXzKV4MCA"}}, "unsigned": {"age_ts": 1570043110216}}k]eQac$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2931}{"auth_events": ["$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw", "$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "prev_events": ["$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "type": "m.room.power_levels", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"users": {"@anon-20191002_181700-563:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043109274, "hashes": {"sha256": "sZM3c6gh97nYviicTxeXmbO3eYj0HbvSN7KIpfcLgZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "85FntMGwtlAQTcxnjGmChXHSe8I+igJuqOKqsEwUs7xGPnMxYFF5A+6UXRXWiD1IVn5WE1ybYka3R0cN11GpAw"}}, "unsigned": {"age_ts": 1570043109274}}v\eQay$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2930}{"auth_events": ["$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw"], "prev_events": ["$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw"], "type": "m.room.member", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-563", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-563:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043108569, "hashes": {"sha256": "VTffb6MFJpZtbGfL2VICOgFvvKC3TyGJY3F7uFirjwI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "woK1H/FNBYX30PnZocHqjcpgpIqZ3gADY1CvQcRRpj6kb73mRUWEHVHTzx0BUZX5yRHrPR4hWCq6HCnvUJXHCg"}}, "unsigned": {"age_ts": 1570043108569}} #s 1 @ n ; gp4=et 2AoaMeQ' $ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800m.room.createmLeQ? $AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibilityeKeQ/ $sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rulesgJeQ3 $6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels IeQ']$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800aHeQ' $3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800m.room.createmGeQ? $yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibilityeFeQ/ $oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rulesgEeQ3 $KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels DeQ']$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800aCeQ' $TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800m.room.createmBeQ? $H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibilityeAeQ/ $V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rulesg@eQ3 $FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels ?eQ']$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800a>eQ' $UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.createm=eQ? $8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibilitye<eQ/ $nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rulesg;eQ3 $XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels :eQ']$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800a9eQ' $KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.createm8eQ? $BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibilitye7eQ/ $7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rulesg6eQ3 $xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels 5eQ']$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800a4eQ' $IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800m.room.createm3eQ? $gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibilitye2eQ/ $sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rulesg1eQ3 $FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels 0eQ']$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800a/eQ' $9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.createm.eQ? $8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibilitye-eQ/ $BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rulesg,eQ3 $Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels +eQ']$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800 "p% . V |   :=_h&Ntw pGQ? e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibility$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0ohFQ/ e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rules$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkjEQ3 e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 DQ']e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMdCQ' e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.create$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIpBQ? e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibility$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRskhAQ/ e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rules$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQj@Q3 e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M ?Q']e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0d>Q' e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.create$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAp=Q? e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkh<Q/ e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rules$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUj;Q3 e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 :Q']e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieod9Q' e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.create$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsp8Q? e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibility$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAh7Q/ e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rules$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0j6Q3 e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo 5Q']e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0d4Q' e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.create$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAp3Q? e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibility$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Uh2Q/ e ~!hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rules$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gj1Q3 e }!hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk 0Q']e |!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcd/Q' e {!hegUPDZCEEmBhsNJJR:localhost:8800m.room.create$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAp.Q? e z!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibility$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewh-Q/ e y!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rules$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcj,Q3 e x!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc +Q']e w!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gd*Q' e v!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.create$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwp)Q? e u!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibility$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAh(Q/ e t!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rules$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8j'Q3 e s!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY &Q']e r!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I g * T~=gg']!c0@anon-20191002_181700-577:localhost:8800MKYGCGNVJBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQog&]!c/@anon-20191002_181700-576:localhost:8800OMBHTKYAAUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAog%]!c.@anon-20191002_181700-575:localhost:8800NDSWGGEQOXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7Aog$]!c-@anon-20191002_181700-574:localhost:8800HLLZYJLEQNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6Aog#]!c,@anon-20191002_181700-573:localhost:8800BMOWCJUXWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgog"]!c+@anon-20191002_181700-572:localhost:8800VQNUOKTLPPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3Aog!]!c*@anon-20191002_181700-571:localhost:8800LDVXZXQHTMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgog ]!c)@anon-20191002_181700-570:localhost:8800ECXFORDQSPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQog]!c(@anon-20191002_181700-569:localhost:8800QUJKINDXXQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQog]!c'@anon-20191002_181700-568:localhost:8800IRGUUINXHFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3Aog]!c&@anon-20191002_181700-567:localhost:8800XHVOSXRUNLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQo  ioeQa_$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2949}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-567:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043127661, "hashes": {"sha256": "42agw7aDncGKCmAJT3EfjaYkbpmlfJ+JSOB3wYBbPyo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jo5OoLMYUNcByv525P7gf2W3o9S2nBKY8GH63YWiS7xHVOAiFhDkB0BZxg8R889+5lRBq1EcPULab2lmpVD8AA"}}, "unsigned": {"age_ts": 1570043127661}}neQa$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2948}{"auth_events": ["$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo", "$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA", "$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "prev_events": ["$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0"], "type": "m.room.history_visibility", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043125893, "hashes": {"sha256": "BQpCbaagPxVkyrbrwazFOrdsxwBupcAsYjxVKf17sTE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYW3kKqnrf5bXciGneqCGf/ZHzbnz1Z5qunTTKaDealrPZnQ+EqbCREOR/r3tF+2MVENKLCAh0+HOntqqglACg"}}, "unsigned": {"age_ts": 1570043125893}}tmeQau$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2947}{"auth_events": ["$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo", "$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA", "$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "prev_events": ["$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo"], "type": "m.room.join_rules", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043125084, "hashes": {"sha256": "PlLtEI9u9a+s32hg2lHhJp90KW90V3s/IaAY3gohQoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nxfS8FYVXrixMdih6j0mwC/ZxcO2+olSBBtJTrpznSPgGQoBdLo2Vo8w0Dn5mfQVkDezJ0uolFUKjeCTGu3wDA"}}, "unsigned": {"age_ts": 1570043125084}}kleQac$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2946}{"auth_events": ["$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA", "$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "prev_events": ["$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "type": "m.room.power_levels", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"users": {"@anon-20191002_181700-566:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043124362, "hashes": {"sha256": "/1QkFNpAzaGoj2hmtZLoNbVGdecWzTO7Dm3ipZESPCg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C6Y5x16RFE6Sv3t3p+MQGiEaxK3IKK/6H3JHOLGwGMcFpDCaVIvzAUo3rnCZzB4DckXYB1lM7Q4QxVqZAtEJDA"}}, "unsigned": {"age_ts": 1570043124362}} ]kN3S A $ s \  l O 4  ` I Y < !pM6F)x]:  mR5gP`C(wT:#lO23  m.room.power_levels >'] m.room.member@anon-20191002_181700-574:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-573:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-572:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-571:localhost:8800 '  m.room.create 3  m.room.power_levels 3  m.room.power_levels /  m.room.join_rules "?  m.room.history_visibility 3  m.room.guest_access 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-570:localhost:8800 '  m.room.create -  m.room.tombstone "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-570:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-569:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-568:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-567:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-566:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] ~m.room.member@anon-20191002_181700-565:localhost:8800 '  }m.room.create "?  |m.room.history_visibility /  {m.room.join_rules 3  zm.room.power_levels >'] ym.room.member@anon-20191002_181700-564:localhost:8800 '  xm.room.create "?  wm.room.history_visibility /  vm.room.join_rules 3  um.room.power_levels >'] tm.room.member@anon-20191002_181700-563:localhost:8800 '  sm.room.create "?  rm.room.history_visibility /  qm.room.join_rules 3  pm.room.power_levels >'] om.room.member@anon-20191002_181700-562:localhost:8800 '  nm.room.create "?  mm.room.history_visibility /  lm.room.join_rules 3  km.room.power_levels >'] jm.room.member@anon-20191002_181700-561:localhost:8800 ~'  im.room.create }3  hm.room.power_levels x>'] hm.room.member@anon-20191002_181700-559:localhost:8829 |>'] hm.room.member@anon-20191002_181700-558:localhost:8800 {/  hm.room.join_rules y"?  hm.room.history_visibility z'  hm.room.create w>'] gm.room.member@anon-20191002_181700-558:localhost:8800 v>'] fm.room.member@anon-20191002_181700-559:localhost:8829 u>'] em.room.member@anon-20191002_181700-559:localhost:8829 t>'] dm.room.member@anon-20191002_181700-559:localhost:8829 s"?  cm.room.history_visibility r/  bm.room.join_rules q3  am.room.power_levels p>'] `m.room.member@anon-20191002_181700-558:localhost:8800 o'  _m.room.create n>'] ^m.room.member@anon-20191002_181700-556:localhost:8800 m   *tceQau$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2937}{"auth_events": ["$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc", "$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw", "$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "prev_events": ["$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc"], "type": "m.room.join_rules", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043115307, "hashes": {"sha256": "0bwSSWW/bW5KFS6Mjvq2UPx4Q+MpjOOZWM50EBisjPI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r8rd01rL9Zs9VA3wrawiNlME7d+DJOgp3LMhXw2deT/OltXhALZn9z1NIK+PtiQ6m2sBycGmMwYDsn30R/4pDw"}}, "unsigned": {"age_ts": 1570043115307}}kbeQac$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2936}{"auth_events": ["$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw", "$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "prev_events": ["$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "type": "m.room.power_levels", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"users": {"@anon-20191002_181700-564:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043114570, "hashes": {"sha256": "/GamCKy8xOIQ5bh3YZS3L/X8K6HNUxebeCLcaSSC3N8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lQweMYIZJ9ZsJaIwXjOuFccRwqYCLoFaq2XbEGM8rKhSWCrVLdn64q6gfQ3WEIcgXAyg2esDdleBO5174w0yCA"}}, "unsigned": {"age_ts": 1570043114570}}vaeQay$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2935}{"auth_events": ["$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw"], "prev_events": ["$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw"], "type": "m.room.member", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-564", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-564:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043113823, "hashes": {"sha256": "sy5H8I1SFrWQuEOrvg8zIQGt/DI45BHK/fU1yj5B5+I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "psE341b5itxIDBPBrrUNdFwu6w21rHYISebzynFafI9T2QBe0Y2SDN+9YXLkreaeuyGPyTWhXUrw5HixJLAYAQ"}}, "unsigned": {"age_ts": 1570043113823}}i`eQa_$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2934}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-564:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043113032, "hashes": {"sha256": "a1uAR0jztbmIkb3DvHMS/EH3x5D7cUM+44sTunvfdEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vDQzkT5tNV+4eh3eYiZh1WjVwMDb26ID3ciYyb7RKR2/pclKH7qpY9ZUrQfXzVmWbN0r5YGR7x8OTjD0mu4BBg"}}, "unsigned": {"age_ts": 1570043113032}} ,S d2pjM*j m8  p>  vD}KQ W %]+ ;8 q ? Y l S = g 5  $81e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUP1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU]1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc Q1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 31e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw61e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wG1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L81e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA 1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg S1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8<1e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM n1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA X1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQb1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8=1e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ01e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo)1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl2841e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY&1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A !1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM w1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw c1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 P1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk S1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEQ9$98_m2:localhost:42455 9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI (1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA 1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 23$94:localhost:42455 ;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA 1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx43$89:localhost:42455 3$89:localhost:42455 3$88:localhost:42455 3$87:localhost:42455 "G$83_outlier_C:localhost:42455 s"G$83_outlier_C:localhost:42455 r"G$83_outlier_C:localhost:42455 q3$82:localhost:42455 o3$80:localhost:42455 Zd1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 w1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA d1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 8l D `8]c!E@anon-20191002_181700-573:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgoBMOWCJUXWQ127.0.0.1Perl + Net::Async::HTTP/0.44mݓg]c!E@anon-20191002_181700-572:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3AoVQNUOKTLPP127.0.0.1Perl + Net::Async::HTTP/0.44mo]c!E@anon-20191002_181700-571:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgoLDVXZXQHTM127.0.0.1Perl + Net::Async::HTTP/0.44m[҃]c!E@anon-20191002_181700-570:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQoECXFORDQSP127.0.0.1Perl + Net::Async::HTTP/0.44m/5]c!E@anon-20191002_181700-569:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQoQUJKINDXXQ127.0.0.1Perl + Net::Async::HTTP/0.44my ]c!E@anon-20191002_181700-568:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3AoIRGUUINXHF127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-567:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQoXHVOSXRUNL127.0.0.1Perl + Net::Async::HTTP/0.44m濃 ]c!E@anon-20191002_181700-566:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgoQBBGHXSEKF127.0.0.1Perl + Net::Async::HTTP/0.44mԚ ]c!E@anon-20191002_181700-565:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAoMSICJQZBGX127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-564:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8QoJAGAKQJOKZ127.0.0.1Perl + Net::Async::HTTP/0.44mܭn  w kgeQac$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2941}{"auth_events": ["$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA", "$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "prev_events": ["$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "type": "m.room.power_levels", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"users": {"@anon-20191002_181700-565:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043119511, "hashes": {"sha256": "ZpewjeJUxCSZj2xzKmqXyMRl9ZcGWsxPoUk1TYLV8h4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GuyZRvFFGVo7tk3JJLl6BbKtNijuI1z4bkRvH2NWDUgECCHSS94Y68Vfig1DPYfTPuXO+WFSm674thyoFaZDg"}}, "unsigned": {"age_ts": 1570043119511}}vfeQay$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2940}{"auth_events": ["$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA"], "prev_events": ["$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA"], "type": "m.room.member", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-565", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-565:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043118932, "hashes": {"sha256": "aeKwgaPHJGgWlX+pVduwlVrdZFw0W8GoINpRWIQwSDs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FWsMLzbxumNp4oZyZC2OC/O4PzlHF9lbqPs4oPldsfY6zQGpmyV4y2qwvnXvs4JYmpOTh+YWA6tskXrSqUxIAA"}}, "unsigned": {"age_ts": 1570043118932}}ieeQa_$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2939}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-565:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043118234, "hashes": {"sha256": "RVpC0YaEmKWCfcOiP3pyk9K1dIGSQUFz35Nj1qc6aGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8wnysGgFdhD0vcmeoWJCKwF4kTCL12I89WQC7YKcKdCgm4eE8V3a8NYq5RqKMGm+5mR7xl4rmzcDg+MjBeXOBw"}}, "unsigned": {"age_ts": 1570043118234}}deQa$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2938}{"auth_events": ["$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc", "$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw", "$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "prev_events": ["$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc"], "type": "m.room.history_visibility", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043116117, "hashes": {"sha256": "lmgaEwvwG9RT7UN7qQtShdzLvEAwu6VLLEc0tXAYCnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SmHopyEWOEeO/S3KixM/cRUcoj46VGitRHRoRc1dcqUCBujS/EU5rGM2/QyZg/RsqeRQowQSIFjwndOGe5tdAA"}}, "unsigned": {"age_ts": 1570043116117}} a} { y w u sqomkigeca~yeeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~xeeQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~weeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800~veeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~ueeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800~teeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800~seeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~reeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800~qeeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800~peeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~oeeQ$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~neeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800~meeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~leeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800~keeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800~jeeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~ieeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800~heeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800~geeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~feeQ$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~eeeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800~deeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~ceeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800~beeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800~aeeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~`eeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800~_eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800~^eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~]eeQ$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~\eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800~[eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800 L X &  ^' , e3m ; s A R LyG M  xS! Y _ -j8 ~ r@ F 1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY W1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAM1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQa1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA B1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc%1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA71e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAL1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM:1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0MV1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU A1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4/1e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIY1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoP1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY0e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg}1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIM1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c0e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0{1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48O1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4r1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE '1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU d1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo [1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc 1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_701e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ 1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjka1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYZ1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMx1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico #  7 k 9md]c@anon-20191002_181700-587:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZkbF55WkZFfm14dyNfa2YKMDAyZnNpZ25hdHVyZSBLYH3CJ0T1Q3BRGeLp6D6Nr0P_DWeASmh9STN8_fvomwo127.0.0.1 d]c@anon-20191002_181700-578:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwo127.0.0.1d]c@anon-20191002_181700-586:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRCVnBqMEBRaGZtWjdTZEYKMDAyZnNpZ25hdHVyZSApW_9ygROP-xkvgLFU8SCjdYJi_4WNmFICdZ7S6MH60Qo127.0.0.1d]c@anon-20191002_181700-585:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVCS3BRQDJqeU1BRE9oPTUKMDAyZnNpZ25hdHVyZSC2VSzsdjWxC0I8UyNUBZp8kSpBgQTjCYiVQLs2_Z2zGQo127.0.0.1d]c@anon-20191002_181700-584:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZPJkF4RnUtYVF-MDFTb1oKMDAyZnNpZ25hdHVyZSDOsredtu5HxxLeGWlpO64Nf5DkwOHlWzJV5qsXYtmkpgo127.0.0.1d]c@anon-20191002_181700-583:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAo127.0.0.1d]c@anon-20191002_181700-582:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-go127.0.0.1d]c@anon-20191002_181700-581:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7Qo127.0.0.1d]c@anon-20191002_181700-580:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAo127.0.0.1a[a@anon-20191002_181700-57:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCg127.0.0.10d]c@anon-20191002_181700-579:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewo127.0.0.1 xL / [xO-d]c@anon-20191002_181700-700:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY5V2M2YnM6Nm5NJmg4SzoKMDAyZnNpZ25hdHVyZSD2H-fLXFMXpaFQcFyMxL9JFAeONbItYVwmt1eGsB3krwo127.0.0.1ɂd]c@anon-20191002_181700-688:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQo127.0.0.1@a[a@anon-20191002_181700-59:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCg127.0.0.12kd]c@anon-20191002_181700-678:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN1TlAwWG82Wjk9TmJMRDcKMDAyZnNpZ25hdHVyZSDHdjUIYdq9G8F0xDwxNNiGp10yY1jHP_5lfgbrygQQEAo127.0.0.1vd]c@anon-20191002_181700-667:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgo127.0.0.1k͂d]c@anon-20191002_181700-656:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAo127.0.0.1`bd]c@anon-20191002_181700-645:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQo127.0.0.1Ud]c@anon-20191002_181700-634:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAo127.0.0.1JSd]c@anon-20191002_181700-622:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygo127.0.0.1?+d]c@anon-20191002_181700-611:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBNYXI7KmtYMio1cF5wU2oKMDAyZnNpZ25hdHVyZSC6faRL5gRMDSrt3JVQXVAJk41B5lf4mWNReFXR91OndAo127.0.0.16d  vkeQay$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2945}{"auth_events": ["$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA"], "prev_events": ["$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA"], "type": "m.room.member", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-566", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-566:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043123704, "hashes": {"sha256": "6wYLO/JVfTQEiCe9HJqVK4CYaMyQhK0xcNiodzc/9n0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rKMMyF1Mxtd2Pevqo6EeTDveEojZXPZFDaLjzFXc7xGlQ6stIx2EfPlI2NQ4VASmUWOgsuA1uzAKHtoVP4uTCA"}}, "unsigned": {"age_ts": 1570043123704}}ijeQa_$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2944}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-566:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043122934, "hashes": {"sha256": "yrvna9fE/Xu3JIv566+tpsoSIiPBt6YocOFCh7RoqOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W7Jolg4NKOG7gVWHdk8IOFFWDGKs5INt5Ubjc56PE3UfLEqFH6rOS1Xn4e5kHfnQJ8nMym0dudVeckly+qqEDw"}}, "unsigned": {"age_ts": 1570043122934}}ieQa$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2943}{"auth_events": ["$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk", "$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA", "$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "prev_events": ["$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g"], "type": "m.room.history_visibility", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043121245, "hashes": {"sha256": "6zvpa+dBQuyixhr4Y1OVyNOyGHZ2VCS5QZXj1Nz3ZD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9JY2JjBFk4XuSmN3wpI0qbQiEcBRRKCPhdccWYooxbT67uJZDmXUuNwJl1W+FLwYzhAcxuhbNcFvWS4vbNc4DA"}}, "unsigned": {"age_ts": 1570043121245}}theQau$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2942}{"auth_events": ["$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk", "$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA", "$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "prev_events": ["$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk"], "type": "m.room.join_rules", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043120286, "hashes": {"sha256": "LxsYUMiMxWprSluTc/c4EFt7CHSlKcllOJJJGBTRm54"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yBgn9nAPtH2O+qHLgNK1RErgV58PAwSfwjMZabnS0957nn81kIVv/7r6O7LMyIcqhjeHSCOFm4zf1f2vQl8dBg"}}, "unsigned": {"age_ts": 1570043120286}} ~z v r n j fb^ZVRN^k}QQQ$1570043154263raEaa:localhost:8800$1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800k|QQQ$1570043153262hRyOa:localhost:8800$1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800k{QQQ$1570043152261Skczg:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800kzQQQ$1570043152260dkyqc:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800kyQQQ$1570043151259knbjg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800xeeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800weeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800veeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800ueeQ$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800teeQ$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800seeQ$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800reeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800qeeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800peeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800oeeQ$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800neeQ$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800meeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800leeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800keeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800jeeQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800ieeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800heeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800geeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800feeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800eeeQ$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800deeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800ceeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800beeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800aeeQ$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800`eeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800_eeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800 Ld0`, \ ( X $ T P & ~ T PL|HxDt@ p<l8h41&e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1%e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 1$e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1#e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1"e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1!e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1 e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1 e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1 e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1 e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1 e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1 e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1~e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1}e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y '|Q$1570043154263raEaa:localhost:8800 '{Q$1570043153262hRyOa:localhost:8800 'zQ$1570043152261Skczg:localhost:8800 'yQ$1570043152260dkyqc:localhost:8800 'xQ$1570043151259knbjg:localhost:8800 'wQ$1570043150258cdaXl:localhost:8800 1ve$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1ue$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1te$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1se$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 1re$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1qe$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1pe$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1oe$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1ne$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk 1me$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 1le$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM 1ke$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI 1je$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q 1ie$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk 1he$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ 1ge$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M 1fe$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 1ee$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA 1de$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q 1ce$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk 1be$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU 1ae$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 1`e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo 1_e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs 1^e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA 1]e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 1\e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo 1[e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 -K.`m z ) H U  b  q =J 8er!KZ ]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZ(P]Q@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800P]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800@]1@anon-20191002_181700-617:localhost:8800!0:localhost:42455P]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800P]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800P]Q@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800P]Q@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800P]Q@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800P]Q@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800P]Q@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800P]Q@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800@]1@anon-20191002_181700-651:localhost:8800!0:localhost:41985@]1@anon-20191002_181700-650:localhost:8800!0:localhost:44405N[Q@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800$@]1@anon-20191002_181700-649:localhost:8800!0:localhost:37265@]1@anon-20191002_181700-648:localhost:8800!8:localhost:42455@]1@anon-20191002_181700-647:localhost:8800!7:localhost:42455P]Q@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800P]Q@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800P]Q@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800P]Q@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800@]1@anon-20191002_181700-642:localhost:8800!6:localhost:42455P]Q@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800P]Q@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800N[Q@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800"P]Q@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800P]Q@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800P]Q@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800P]Q@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800P]Q@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800P]Q@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800P]Q@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800P]Q@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800@]1@anon-20191002_181700-632:localhost:8800!5:localhost:42455N[Q@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800!P]Q@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800P]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800P]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800P]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800P]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800P]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800P]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800P]Q@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800N[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800 P]Q@anon-20191002_181700-613:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800 L^ h  q # {&69NL,e?Q ]$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgm.room.history_visibility!fdEymmlcUvjgshvVyl:localhost:8800m;jm<@anon-20191002_181700-570:localhost:8800$e/Q ]$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgm.room.join_rules!fdEymmlcUvjgshvVyl:localhost:8800m9m9@anon-20191002_181700-570:localhost:8800&e3Q ]$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4m.room.power_levels!fdEymmlcUvjgshvVyl:localhost:8800m6am7m@anon-20191002_181700-570:localhost:8800 e'Q ]$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgom.room.member!fdEymmlcUvjgshvVyl:localhost:8800m2m4M@anon-20191002_181700-570:localhost:8800 e'Q  ]$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYm.room.create!fdEymmlcUvjgshvVyl:localhost:8800m/m0@anon-20191002_181700-570:localhost:8800!e)Q ]$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0om.room.message!xcdNyJNFEdaBGFycsB:localhost:8800m+Rm+V@anon-20191002_181700-569:localhost:8800!e)Q ]$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGEm.room.message!xcdNyJNFEdaBGFycsB:localhost:8800m(&m(*@anon-20191002_181700-569:localhost:8800,e?Q ]$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0om.room.history_visibility!xcdNyJNFEdaBGFycsB:localhost:8800m"m$@anon-20191002_181700-569:localhost:8800$e/Q ]$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkm.room.join_rules!xcdNyJNFEdaBGFycsB:localhost:8800m m @anon-20191002_181700-569:localhost:8800&e3Q ]$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0m.room.power_levels!xcdNyJNFEdaBGFycsB:localhost:8800m&m2@anon-20191002_181700-569:localhost:8800 e'Q ]$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMm.room.member!xcdNyJNFEdaBGFycsB:localhost:8800mmw@anon-20191002_181700-569:localhost:8800 e'Q  ]$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIm.room.create!xcdNyJNFEdaBGFycsB:localhost:8800m<m&@anon-20191002_181700-569:localhost:8800!e)Q ]$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Qm.room.message!SUDzkfFBgpuCANOxRS:localhost:8800mm@anon-20191002_181700-568:localhost:8800,e?Q ]$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRskm.room.history_visibility!SUDzkfFBgpuCANOxRS:localhost:8800m xm@anon-20191002_181700-568:localhost:8800$e/Q ]$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQm.room.join_rules!SUDzkfFBgpuCANOxRS:localhost:8800m m v@anon-20191002_181700-568:localhost:8800& e3Q ]$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Mm.room.power_levels!SUDzkfFBgpuCANOxRS:localhost:8800mm@anon-20191002_181700-568:localhost:8800 e'Q ]$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0m.room.member!SUDzkfFBgpuCANOxRS:localhost:8800mmy@anon-20191002_181700-568:localhost:8800  e'Q  ]$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAm.room.create!SUDzkfFBgpuCANOxRS:localhost:8800mm1@anon-20191002_181700-568:localhost:8800! e)Q ]$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Qm.room.message!rWmvvGBgmFMdVvcfPk:localhost:8800mm@anon-20191002_181700-567:localhost:8800, e?Q ]$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkm.room.history_visibility!rWmvvGBgmFMdVvcfPk:localhost:8800mWm@anon-20191002_181700-567:localhost:8800$e/Q ]$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUm.room.join_rules!rWmvvGBgmFMdVvcfPk:localhost:8800mmu@anon-20191002_181700-567:localhost:8800&e3Q ]$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8m.room.power_levels!rWmvvGBgmFMdVvcfPk:localhost:8800mm@anon-20191002_181700-567:localhost:8800 e'Q ]$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieom.room.member!rWmvvGBgmFMdVvcfPk:localhost:8800mml@anon-20191002_181700-567:localhost:8800 e'Q  ]$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsm.room.create!rWmvvGBgmFMdVvcfPk:localhost:8800mmm@anon-20191002_181700-567:localhost:8800  seQa$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2953}{"auth_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8", "$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU"], "type": "m.room.history_visibility", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043130711, "hashes": {"sha256": "9ud4tP91hGjgNj0uTlNsfhQ4huPPn8ggJ3pTpRH8BYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dtBabbuTgkxnmGG/H+sc8KhDr1eGOutWbb9iLHrL5IEsRA3CeHtP+KooBRPy7OfXu5d3qfq2gDQO6eR9RaBGBg"}}, "unsigned": {"age_ts": 1570043130711}}treQau$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2952}{"auth_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8", "$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8"], "type": "m.room.join_rules", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043130017, "hashes": {"sha256": "GJhngHefISG/IDhtwrUQtf0Ltujp0fgysoxiJXDMBec"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CJJxhmvJF3sv8b2GfnizWGKOBQQDwBoz1VEKPijlHdHp4/zwsuCSivt4Y1t4r6rm5hsoovD1Fxj+zp2kr7q0Dg"}}, "unsigned": {"age_ts": 1570043130017}}kqeQac$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2951}{"auth_events": ["$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "type": "m.room.power_levels", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"users": {"@anon-20191002_181700-567:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043129311, "hashes": {"sha256": "WxlSEn6jDEgZzbgiCpeUs7rT0jjXNht8BluPvbn/SUs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L1YC4C/JgLHg9gbJSHgl8+0z2ixjA6F28Guz+OL1K27/5T2N5Ayjtq06NvjeckI0ZX48sRqeOGYTkkfmp0iTBg"}}, "unsigned": {"age_ts": 1570043129311}}vpeQay$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2950}{"auth_events": ["$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs"], "prev_events": ["$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs"], "type": "m.room.member", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-567", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-567:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043128596, "hashes": {"sha256": "sfNCjoKG0gH5RiaTAMPZqvjfNsOkS09teCFp1zyuaJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0zQ/7V7N5AvuhBlr034s08C0vlZwA8jibcOMxWjbB/ZhlVt1WD9jm0vUOv0ecwDK3arR1joiNNGEB1QGvhVGDQ"}}, "unsigned": {"age_ts": 1570043128596}} FIY,twId6 ~ P " k =  W ) r D  ^ 0 yKf8 R$m?`2{M-]@anon-20191002_181700-639:localhost:8800 -]@anon-20191002_181700-638:localhost:8800 -]@anon-20191002_181700-637:localhost:8800 .-]@anon-20191002_181700-635:localhost:8800 -]@anon-20191002_181700-634:localhost:8800 -]@anon-20191002_181700-633:localhost:8800 -]@anon-20191002_181700-632:localhost:8800 ,[@anon-20191002_181700-62:localhost:8800-]@anon-20191002_181700-629:localhost:8829 -]@anon-20191002_181700-715:localhost:8800 -]@anon-20191002_181700-714:localhost:8800 -]@anon-20191002_181700-713:localhost:8800 -]@anon-20191002_181700-712:localhost:8800 -]@anon-20191002_181700-711:localhost:8800 -]@anon-20191002_181700-710:localhost:8800 ,[@anon-20191002_181700-70:localhost:8800-]@anon-20191002_181700-708:localhost:8800 -]@anon-20191002_181700-706:localhost:8800 -]@anon-20191002_181700-704:localhost:8800 -]@anon-20191002_181700-702:localhost:8800 -]@anon-20191002_181700-701:localhost:8800 -]@anon-20191002_181700-700:localhost:8800 -]@anon-20191002_181700-698:localhost:8800 -]@anon-20191002_181700-691:localhost:8800 -]@anon-20191002_181700-690:localhost:8800 ,[@anon-20191002_181700-68:localhost:8800-]@anon-20191002_181700-685:localhost:8800 -]@anon-20191002_181700-684:localhost:8800 -]@anon-20191002_181700-683:localhost:8800 -]@anon-20191002_181700-682:localhost:8800 -]@anon-20191002_181700-681:localhost:8800 -]@anon-20191002_181700-680:localhost:8800 ,[@anon-20191002_181700-67:localhost:8800-]@anon-20191002_181700-679:localhost:8800 -]@anon-20191002_181700-678:localhost:8800 -]@anon-20191002_181700-677:localhost:8800 -]@anon-20191002_181700-676:localhost:8800 -]@anon-20191002_181700-675:localhost:8800 -]@anon-20191002_181700-674:localhost:8800 -]@anon-20191002_181700-673:localhost:8800 -]@anon-20191002_181700-672:localhost:8800 -]@anon-20191002_181700-671:localhost:8800 {-]@anon-20191002_181700-670:localhost:8800 p,[@anon-20191002_181700-66:localhost:8829-]@anon-20191002_181700-669:localhost:8800 g-]@anon-20191002_181700-668:localhost:8800 d-]@anon-20191002_181700-668:localhost:8800 _-]@anon-20191002_181700-667:localhost:8800 K-]@anon-20191002_181700-666:localhost:8800 E-]@anon-20191002_181700-665:localhost:8800 ?-]@anon-20191002_181700-664:localhost:8800 9-]@anon-20191002_181700-663:localhost:8800 3-]@anon-20191002_181700-662:localhost:8800 *-]@anon-20191002_181700-661:localhost:8800 )-]@anon-20191002_181700-660:localhost:8800 ,[@anon-20191002_181700-65:localhost:8800-]@anon-20191002_181700-659:localhost:8800 -]@anon-20191002_181700-658:localhost:8800 -]@anon-20191002_181700-657:localhost:8800 -]@anon-20191002_181700-656:localhost:8800 -]@anon-20191002_181700-655:localhost:8800 -]@anon-20191002_181700-654:localhost:8800 -]@anon-20191002_181700-653:localhost:8800 -]@anon-20191002_181700-652:localhost:8800 ,[@anon-20191002_181700-64:localhost:8800-]@anon-20191002_181700-646:localhost:8800 -]@anon-20191002_181700-645:localhost:8800 -]@anon-20191002_181700-644:localhost:8800 -]@anon-20191002_181700-643:localhost:8800 -]@anon-20191002_181700-642:localhost:8800 -]@anon-20191002_181700-641:localhost:8800 -]@anon-20191002_181700-640:localhost:8800 ,[@anon-20191002_181700-63:localhost:8800 $R,1 Y d " - [ J *X!MRgfeQ3 $cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels eeQ']$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800joinadeQ' $zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800m.room.createmceQ? $zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibilityebeQ/ $VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rulesgaeQ3 $NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels `eQ']$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800joina_eQ' $-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800m.room.createm^eQ? $MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibilitye]eQ/ $6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rulesg\eQ3 $PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels [eQ']$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800joinaZeQ' $UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.createdXeQ- $zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone[WQQ/ $1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rulescVQQ? $1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility]UQQ3 $1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access]TQQ3 $1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levelsSQQ']$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800joinWRQQ' $1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.createmQeQ? $hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibilityePeQ/ $K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rulesgYeQ3 $l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels NeQ']$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800joinaMeQ' $ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800m.room.createmLeQ? $AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibilityeKeQ/ $sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rulesgJeQ3 $6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels IeQ']$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800joinaHeQ' $3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800m.room.createmGeQ? $yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibilityeFeQ/ $oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rulesgEeQ3 $KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels DeQ']$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800joinaCeQ' $TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800m.room.createmBeQ? $H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility  z kweQac$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2957}{"auth_events": ["$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "type": "m.room.power_levels", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"users": {"@anon-20191002_181700-568:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043135714, "hashes": {"sha256": "RBgYIkpFygXlQvONXMDNE1fWPT+vT2okPC4uQ27oHO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fnE6ChVlZgtGgyGBb5GAGS0WME6lYA69aPyEiO149J+nNBv4cZi4lP4XnO4hmYtlIbb61YjwYxlHUmX08ae8AQ"}}, "unsigned": {"age_ts": 1570043135714}}vveQay$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2956}{"auth_events": ["$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA"], "prev_events": ["$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA"], "type": "m.room.member", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-568", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-568:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043135001, "hashes": {"sha256": "MlNVPu1A9LB9HzeaMyeb/X7Vj1wiNqMTUp3DaKJREj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5kBfcgo1dfbQSTSbi5lEyznNgBU3MSmzcMP+h3MCFhmKCoqi2t0Tu5iSxAp7ArbUoweL9ouPbuA2dbKZgGVhCg"}}, "unsigned": {"age_ts": 1570043135001}}iueQa_$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2955}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-568:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043133883, "hashes": {"sha256": "7phqXB9UXPsAg9D50HXpzQnQ87smN++CjgqDu30jlNE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p6qiPaGjGjd438Kf4/H4Xo1lY68KTEgrtPtLzybT352XBo6dnK4AehGf5WamTiyCxogguEBX+aoB9NwpPmLQBA"}}, "unsigned": {"age_ts": 1570043133883}}teQm$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "txn_id": "532", "stream_ordering": 2954}{"auth_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8", "$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk"], "type": "m.room.message", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043132365, "hashes": {"sha256": "1REPmtI/DVIq3MHa0paH3axSSyMfei3O1WD+pjkZ9Bs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w31DcSuk+cE0+NgnCvIXngIZ0fRkhr5xtd0qzzlla84wRLWAMa9M1z+5jFMANUxRL4+0X8AFkzenk/XPL1D7DQ"}}, "unsigned": {"age_ts": 1570043132365}} $S(- Q \  O h >p {3>h+ScGQ' e !iLHJbsFszubrnybDNz:localhost:8800m.room.create$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8oFQ? e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibility$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIgEQ/ e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rules$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIiDQ3 e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY CQ']e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIcBQ' e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.create$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwoAQ? e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibility$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIg@Q/ e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rules$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wi?Q3 e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c >Q']e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAc=Q' e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.create$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwo<Q? e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibility$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkg;Q/ e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rules$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOaci:Q3 e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 9Q']e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4c8Q' e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.create$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y_7Q3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels$1570043156264uvwRa:localhost:8800i6Q3 e !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU]5Q/ Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rules$1570043154263raEaa:localhost:8800e4Q? Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility$1570043153262hRyOa:localhost:8800_3Q3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access$1570043152261Skczg:localhost:8800_2Q3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels$1570043152260dkyqc:localhost:88001Q']Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$1570043151259knbjg:localhost:8800Y0Q' Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.create$1570043150258cdaXl:localhost:8800f/Q- e !fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Yo.Q? e !fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibility$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgg-Q/ e !fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rules$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgi,Q3 e !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 +Q']e !fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgoc*Q' e !fdEymmlcUvjgshvVyl:localhost:8800m.room.create$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYo)Q? e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibility$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0og(Q/ e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rules$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krki'Q3 e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 &Q']e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMc%Q' e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.create$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIo$Q? e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibility$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk l} { y w u sqomkig FljQQQ$1570043153262hRyOa:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152261Skczg:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152261Skczg:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152261Skczg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152260dkyqc:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152260dkyqc:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043151259knbjg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800~eeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800~eeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~~eeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800~}eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800~|eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~{eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800~zeeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800  yi{eQa_$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2961}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-569:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043139900, "hashes": {"sha256": "TGUqlKyzTSTDhuxUw0aZUcYaCjGYB0pKrPJ322ZdbAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CF4rypwbPoqNp0B7yvNYaOZ/jjxACcIVVSu2Dl7ln7xsLkcbP+ScahjrGde745ErqcXPWWV1bWzUFTnR4al4Ag"}}, "unsigned": {"age_ts": 1570043139900}}zeQm$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "txn_id": "533", "stream_ordering": 2960}{"auth_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M", "$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk"], "type": "m.room.message", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043138784, "hashes": {"sha256": "tp9CC38mVKOl+a4sEz/iN8ROa7IFTRkgj2As9tMCMgI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AKXpZk27qauY86BB+22XOuZhoPdgD4mpXlksmRcSvMIHTmck2WrVEGAz3njvIB2W6xCgXJdHbVOMUPypa4wMBQ"}}, "unsigned": {"age_ts": 1570043138784}}yeQa$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2959}{"auth_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M", "$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ"], "type": "m.room.history_visibility", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043137400, "hashes": {"sha256": "FW/Qiru52gPgh9K/hPKmMb3xqfj0gCT1nPhd2EmzjWA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+rUDYiLLQTlI6GDZBIkzghGJUqHwmzjWAeWATwYziqMaPffQxmoOGWisxMCBJmkWPax81ezpHsg29GTVAZ1pCA"}}, "unsigned": {"age_ts": 1570043137400}}txeQau$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2958}{"auth_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M", "$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M"], "type": "m.room.join_rules", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043136428, "hashes": {"sha256": "/sxUP9e+23XuEw0KA5INcLowCcrgWxbWB4js7u0B51E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l/ToKa8Els0eGdinqijgOYXHu38MMd6Pgwx/gY9pi4hikUOnXaK1utT73sq44i/hQ6S4b8sxt8sFSvN4rYEFAA"}}, "unsigned": {"age_ts": 1570043136428}} .RM H C > W p kfa \WRMHTmQe !hGsPmWXboxZZtOlsxY:localhost:8800$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQkTlQe !hGsPmWXboxZZtOlsxY:localhost:8800$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIITkQe !hGsPmWXboxZZtOlsxY:localhost:8800$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SITjQe !hGsPmWXboxZZtOlsxY:localhost:8800$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYTiQe !hGsPmWXboxZZtOlsxY:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIThQe !hGsPmWXboxZZtOlsxY:localhost:8800$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwTgQe !dvZnfJonDkxlrrDXUk:localhost:8800$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9ATfQe !dvZnfJonDkxlrrDXUk:localhost:8800$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkkTeQe !dvZnfJonDkxlrrDXUk:localhost:8800$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RETdQe !dvZnfJonDkxlrrDXUk:localhost:8800$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3IfmgTcQe !dvZnfJonDkxlrrDXUk:localhost:8800$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdMTbQe !dvZnfJonDkxlrrDXUk:localhost:8800$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4TaQe !dvZnfJonDkxlrrDXUk:localhost:8800$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKcT`Qe !dvZnfJonDkxlrrDXUk:localhost:8800$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIT_Qe !dvZnfJonDkxlrrDXUk:localhost:8800$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wT^Qe !dvZnfJonDkxlrrDXUk:localhost:8800$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0cT]Qe !dvZnfJonDkxlrrDXUk:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAT\Qe !dvZnfJonDkxlrrDXUk:localhost:8800$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwT[Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nsTZQe !vZGjXEXQoCaoUXnkCa:localhost:8800$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkTYQe !vZGjXEXQoCaoUXnkCa:localhost:8800$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacTXQe !vZGjXEXQoCaoUXnkCa:localhost:8800$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMTWQe !vZGjXEXQoCaoUXnkCa:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4TVQe !vZGjXEXQoCaoUXnkCa:localhost:8800$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6YTUQe !fdEymmlcUvjgshvVyl:localhost:8800$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUTTQe !fdEymmlcUvjgshvVyl:localhost:8800$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6YJSQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043154263raEaa:localhost:8800JRQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043153262hRyOa:localhost:8800JQQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152261Skczg:localhost:8800JPQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152260dkyqc:localhost:8800JOQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043151259knbjg:localhost:8800JNQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043150258cdaXl:localhost:8800TMQe !fdEymmlcUvjgshvVyl:localhost:8800$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgTLQe !fdEymmlcUvjgshvVyl:localhost:8800$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgTKQe !fdEymmlcUvjgshvVyl:localhost:8800$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4TJQe !fdEymmlcUvjgshvVyl:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgoTIQe !fdEymmlcUvjgshvVyl:localhost:8800$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYTHQe !xcdNyJNFEdaBGFycsB:localhost:8800$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0oTGQe !xcdNyJNFEdaBGFycsB:localhost:8800$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGETFQe !xcdNyJNFEdaBGFycsB:localhost:8800$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0oTEQe !xcdNyJNFEdaBGFycsB:localhost:8800$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkTDQe !xcdNyJNFEdaBGFycsB:localhost:8800$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0TCQe !xcdNyJNFEdaBGFycsB:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMTBQe !xcdNyJNFEdaBGFycsB:localhost:8800$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheITAQe !SUDzkfFBgpuCANOxRS:localhost:8800$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4QT@Qe !SUDzkfFBgpuCANOxRS:localhost:8800$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk  eQa$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2965}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk"], "type": "m.room.history_visibility", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043142845, "hashes": {"sha256": "99M11FrcLKbJtA6bz8uLezUnMcJgB2Z7ZOLBIaO7Imo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MZzWYriXTi5odA3bsc/yWmYiFD9/9s0aHRgP+XzlI9byOGAOPgsuvaHcIbLAv0uETJQXzSrcmZTDw99gooR/BA"}}, "unsigned": {"age_ts": 1570043142845}}t~eQau$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2964}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0"], "type": "m.room.join_rules", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043142168, "hashes": {"sha256": "8F7duqy4G9/A7e/GtZwFOJGhcb9iw6J3Ws8KimyZsqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HVmXQSaGLE+jkvjKcWgwtqDhVSKwQDkljewyerj/mOx7WQHnHyoruDSXXfvCZ5EgbvUqAgSDMUBTLTrxLHKGDw"}}, "unsigned": {"age_ts": 1570043142168}}k}eQac$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2963}{"auth_events": ["$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "type": "m.room.power_levels", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"users": {"@anon-20191002_181700-569:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043141414, "hashes": {"sha256": "+ZjCERE5FwaMSHiBtIbUaphbWaweXyIM+fy3TJWO5tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vxhZvypi+WuWpSs9geZ06GVywMaVrvXf6bypfdnDAL9nZb7UraMmW6GxQyBYXChjpeBNmYiWr/zCzzs4MdGOBQ"}}, "unsigned": {"age_ts": 1570043141414}}v|eQay$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2962}{"auth_events": ["$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI"], "prev_events": ["$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI"], "type": "m.room.member", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-569", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-569:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043140883, "hashes": {"sha256": "3hhGDAKlFJh4wfogwZFWUhK7tBcqpZZj2YcFzIhq4CM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z2/UL2mvR7ZYwC36VezcxhHb9CHcNgbISsxKTPLKdZIA5SWayvTkA5aWSTDufOp4Ho8VtOjMKw+//C06664fBA"}}, "unsigned": {"age_ts": 1570043140883}} < Z x  Y w  $B`~ +Ig2P nE]@anon-20191002_181700-580:localhost:8800@anon-20191002_181700-580:localhost:8800 anon-20191002_181700-580nD]@anon-20191002_181700-579:localhost:8800@anon-20191002_181700-579:localhost:8800 anon-20191002_181700-579nC]@anon-20191002_181700-578:localhost:8800@anon-20191002_181700-578:localhost:8800 anon-20191002_181700-578nB]@anon-20191002_181700-577:localhost:8800@anon-20191002_181700-577:localhost:8800 anon-20191002_181700-577nA]@anon-20191002_181700-576:localhost:8800@anon-20191002_181700-576:localhost:8800 anon-20191002_181700-576n@]@anon-20191002_181700-574:localhost:8800@anon-20191002_181700-574:localhost:8800 anon-20191002_181700-574n?]@anon-20191002_181700-573:localhost:8800@anon-20191002_181700-573:localhost:8800 anon-20191002_181700-573n>]@anon-20191002_181700-572:localhost:8800@anon-20191002_181700-572:localhost:8800 anon-20191002_181700-572n=]@anon-20191002_181700-571:localhost:8800@anon-20191002_181700-571:localhost:8800 anon-20191002_181700-571n<]@anon-20191002_181700-570:localhost:8800@anon-20191002_181700-570:localhost:8800 anon-20191002_181700-570n:]@anon-20191002_181700-568:localhost:8800@anon-20191002_181700-568:localhost:8800 anon-20191002_181700-568n9]@anon-20191002_181700-567:localhost:8800@anon-20191002_181700-567:localhost:8800 anon-20191002_181700-567n8]@anon-20191002_181700-566:localhost:8800@anon-20191002_181700-566:localhost:8800 anon-20191002_181700-566n7]@anon-20191002_181700-565:localhost:8800@anon-20191002_181700-565:localhost:8800 anon-20191002_181700-565n6]@anon-20191002_181700-564:localhost:8800@anon-20191002_181700-564:localhost:8800 anon-20191002_181700-564n5]@anon-20191002_181700-563:localhost:8800@anon-20191002_181700-563:localhost:8800 anon-20191002_181700-563n4]@anon-20191002_181700-562:localhost:8800@anon-20191002_181700-562:localhost:8800 anon-20191002_181700-562n3]@anon-20191002_181700-561:localhost:8800@anon-20191002_181700-561:localhost:8800 anon-20191002_181700-561=n2]@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800 anon-20191002_181700-558n1]@anon-20191002_181700-557:localhost:8800@anon-20191002_181700-557:localhost:8800 anon-20191002_181700-557n/]@anon-20191002_181700-554:localhost:8800@anon-20191002_181700-554:localhost:8800 anon-20191002_181700-554n.]@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829 anon-20191002_181700-553n-]@anon-20191002_181700-552:localhost:8800@anon-20191002_181700-552:localhost:8800 anon-20191002_181700-552n,]@anon-20191002_181700-551:localhost:8800@anon-20191002_181700-551:localhost:8800 anon-20191002_181700-551n+]@anon-20191002_181700-550:localhost:8800@anon-20191002_181700-550:localhost:8800 anon-20191002_181700-550n*]@anon-20191002_181700-549:localhost:8800@anon-20191002_181700-549:localhost:8800 anon-20191002_181700-549n;]@anon-20191002_181700-569:localhost:8800@anon-20191002_181700-569:localhost:8800 anon-20191002_181700-569 -NC 8 7 J S H=2'uj_TIV)eL$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTssha256cvM|HOJip3/M;V(eL$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMsha256yAW /TAz˅mw1V'eL$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKEsha256"ءsG8T+U;";ȡV&eL$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQksha256FPِss4yExi't} V%eL$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIsha256`I :E' ҋHKFkG 8 VeL$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwsha256oQ؂_Zep.un|VeL$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nssha256 tm#!}bfk;@({VeL$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavksha2562zKYd9) 7Iq lQ9jVeL$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacsha256Y3zVeхp\K )_9VeL$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMsha256=(rf+5(b^qc1VeL$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4sha256 '{ ځS?۾2~VeL$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Ysha256PoH`Dc<7+N$0_)$ǦVeL$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUsha256["'0oE"8ieϙV eL$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Ysha256̲AB5h4K2鱎LQL$1570043150258cdaXl:localhost:8800sha2563XqFmco|Q+3c_>VeL$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgsha256$Gk1ivf 4B՚SNHVeL$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgsha256+`ROaRdBD%mI3 VeL$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4sha256%E"HZOHD|Pj*QsxnVeL$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgosha256Juީrå 2ƚd}cY VeL$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYsha2564X$Wh'j*j ]VeL$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0osha256,qnF!:$1%%ș eĭ JVeL$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGEsha256g.1TRc?v72(Q)aVeL$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0osha256t"$#J3Vra9EV 8gΪJV~eL$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krksha256Q >12*+5SmyV}eL$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0sha256!u R5s:V|𻜏SU}  ] l U d  ME = 5-|%t  eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800 ]eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM!pJUItjYTOUJQFIxyiX:localhost:8800 beeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800 4eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800܁eeQ$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800eeQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800 ~eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800eeQ$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800CeeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800΁eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800eeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800=eeQ$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk!sPWVGnipjiiWQpywNO:localhost:88002eeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800 ~eeQ$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800 'eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800 !eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800  !O} { y w u sq<bASQO~YeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~XeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800~WeeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~VeeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~UeeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800jTQQQ$1570043195270GcoLc:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jSQQQ$1570043195270GcoLc:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jRQQQ$1570043195270GcoLc:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jQQQQ$1570043195269hcCzg:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jPQQQ$1570043195269hcCzg:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jOQQQ$1570043195269hcCzg:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jNQQQ$1570043194268zlNeZ:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jMQQQ$1570043194268zlNeZ:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jLQQQ$1570043194268zlNeZ:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jKQQQ$1570043193267ZyDyW:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jJQQQ$1570043193267ZyDyW:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jIQQQ$1570043192266CXqej:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800~HeeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~GeeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~FeeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800~EeeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~DeeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~CeeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800~BeeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~AeeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~@eeQ$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~?eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800~>eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~=eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800~<eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800~;eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~:eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800~9eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800 #}X\ ` d  M Q _ cqu!y%})-Ks)    TQleQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800QkeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800QjeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800QieQ$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE!nfxDdcgDfooxyiAzaB:localhost:8800QheQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800QgeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800QfeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800QeeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800QdeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800QceQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800GbQQ$1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800QaeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800Q]eQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800Q\eQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800Q[eQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800GZQQ$1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800QXeQ$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o!xcdNyJNFEdaBGFycsB:localhost:8800QWeQ$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800QVeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800QUeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800QTeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800QSeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800QReQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800QQeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800QPeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800QOeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800QNeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800QMeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800QLeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800QKeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800QJeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800QIeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM!ZvLVbnHjeymRiFIkYr:localhost:8800QHeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800QGeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA!WpThtNEVhrUbUdCdMJ:localhost:8800Q^eQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800  zveQay$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2969}{"auth_events": ["$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY"], "prev_events": ["$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY"], "type": "m.room.member", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-570", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-570:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043146891, "hashes": {"sha256": "+V6XSxjrSMy4A+onCOs7UCX91u76Huy5h1nRkHLGklk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zRgyBXaWuuCRobLbLVlLbU9N/ooFfAUAD/CNholziGM5lsbA6oeThpo7IFC603rJzB+xgN7jzbYMTpGVAxJDCA"}}, "unsigned": {"age_ts": 1570043146891}}ieQa_$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2968}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-570:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043146128, "hashes": {"sha256": "XxLkoGrAGwst/pmBF4DMA0WiPDVq64fV0exQu5xC5VE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "32H4Q6B7ajQ3rVjYtgTCFedkeZudLsHeCILfabgSSWc72Fsdb7bRspWwhxs3dqx25n61v3wHnOievzEJu3GnCg"}}, "unsigned": {"age_ts": 1570043146128}}eQm$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "txn_id": "535", "stream_ordering": 2967}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE"], "type": "m.room.message", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043145042, "hashes": {"sha256": "45xi/4IlenE/FwiDr0mjxCLfmoZgsjAzz1iIMDvIEmA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S49c1FON8MyzSNaiE0RmGDEgKk6ct+Awthxm1IhgUUbkVUTgAmbo3u4FlgrCvDao0LrgUC+JbW8YdOfJN+mfCA"}}, "unsigned": {"age_ts": 1570043145042}}eQm$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "txn_id": "534", "stream_ordering": 2966}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o"], "type": "m.room.message", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043144230, "hashes": {"sha256": "tc1uApaOsrTIbaqOnojjSNNmkp2KwEVNCQE2CzRFdRI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWIZXeqFkbTbPJUFtA0nRMHuh24tK8ULnISZeNfphfiB7KhbSccw3532D7NOajY4ygu15D8odxdBXy0k9IFQBQ"}}, "unsigned": {"age_ts": 1570043144230}} TZ}) ! u J  s H qFoDmBR' k@ N # i> w Lg< { P % yg>qHb:(Q!jYzridjeihmwPBuwLb:localhost:8800TS(Q!jYzridjeihmwPBuwLb:localhost:8800SR(Q!jYzridjeihmwPBuwLb:localhost:8800RQ(Q!jYzridjeihmwPBuwLb:localhost:8800QP(Q!jYzridjeihmwPBuwLb:localhost:8800PO(Q!jYzridjeihmwPBuwLb:localhost:8800ON(Q!jYzridjeihmwPBuwLb:localhost:8800NM(Q!jYzridjeihmwPBuwLb:localhost:8800ML(Q!jYzridjeihmwPBuwLb:localhost:8800LK(Q!jYzridjeihmwPBuwLb:localhost:8800KJ(Q!jYzridjeihmwPBuwLb:localhost:8800JI*Q!jIfvTrwedrWLubsnlM:localhost:8800!'*Q!jIfvTrwedrWLubsnlM:localhost:8800 &*Q!jIfvTrwedrWLubsnlM:localhost:8800%*Q!jIfvTrwedrWLubsnlM:localhost:8800$*Q!jIfvTrwedrWLubsnlM:localhost:8800#*Q!jIfvTrwedrWLubsnlM:localhost:8800"*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!itfjLXhEaORJLkbfVS:localhost:88004&*Q!itfjLXhEaORJLkbfVS:localhost:88003%*Q!itfjLXhEaORJLkbfVS:localhost:88002$*Q!itfjLXhEaORJLkbfVS:localhost:88001#*Q!itfjLXhEaORJLkbfVS:localhost:88000"*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 i ~*Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800+*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800 #\ 1 a x  K G Px6\_?\jQ']Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$1570043192266CXqej:localhost:8800ZiQ' Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.create$1570043191265cqITi:localhost:8800phQ? e !iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibility$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayughgQ/ e !iLHJbsFszubrnybDNz:localhost:8800m.room.join_rules$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UjfQ3 e !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 eQ']e !iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YddQ' e !iLHJbsFszubrnybDNz:localhost:8800m.room.create$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8pcQ? e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibility$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIhbQ/ e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rules$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIjaQ3 e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY `Q']e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiId_Q' e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.create$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwp^Q? e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibility$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIh]Q/ e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rules$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wj\Q3 e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c [Q']e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAdZQ' e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.create$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwpYQ? e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibility$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkhXQ/ e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rules$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacjWQ3 e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM VQ']e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4dUQ' e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.create$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6YTQ3 ee !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4gSQ- e !fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y^RQ/ Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rules$1570043154263raEaa:localhost:8800fQQ? Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility$1570043153262hRyOa:localhost:8800`PQ3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access$1570043152261Skczg:localhost:8800`OQ3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels$1570043152260dkyqc:localhost:8800NQ']Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$1570043151259knbjg:localhost:8800ZMQ' Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.create$1570043150258cdaXl:localhost:8800pLQ? e !fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibility$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkghKQ/ e !fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rules$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgjJQ3 e !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 IQ']e !fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgodHQ' e !fdEymmlcUvjgshvVyl:localhost:8800m.room.create$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY $s 1 U / j  =ir 6?gv 4X]qQQ3 $1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access]pQQ3 $1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levelsoQQ']$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800WnQQ' $1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.createmmeQ? $83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibilityeleQ/ $22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800m.room.join_rulesgkeQ3 $Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels jeQ']$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800aieQ' $-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800m.room.createmheQ? $YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibilityegeQ/ $leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rulesgfeQ3 $cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels eeQ']$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800adeQ' $zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800m.room.createmceQ? $zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibilityebeQ/ $VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rulesgaeQ3 $NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels `eQ']$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800a_eQ' $-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800m.room.createm^eQ? $MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibilitye]eQ/ $6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rulesg\eQ3 $PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels [eQ']$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800aZeQ' $UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.creategYeQ3 $l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levelsdXeQ- $zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone[WQQ/ $1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rulescVQQ? $1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility]UQQ3 $1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access]TQQ3 $1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levelsSQQ']$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800WRQQ' $1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.createmQeQ? $hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibilityePeQ/ $K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rulesgOeQ3 $wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels NeQ']$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800  QQa? $1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2973}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "event_id": "$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y"}, "creator": "@anon-20191002_181700-570:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043150258cdaXl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043150885, "hashes": {"sha256": "Fm66Uor7wev35M+T9aHGSZ6mx2Tz7n269a56FgI2dh0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S9zgrZdcP8E136YsABDOmL18jr8SWIxANjaIGXpa0AeZmI4Czcu97EJHrAnUBxD6yFiXyQKX6KO6rUFVM5P0AQ"}}, "unsigned": {"age_ts": 1570043150885}}eQa$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2972}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg"], "type": "m.room.history_visibility", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043149162, "hashes": {"sha256": "G+65Ouh5k3+Oa2h4g7Y9GWNOFrRfL1T3jG5e+geGNIY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IRP7gok4zetBr2A7h3ng4Q3Yuq1W8R7m4y1L0EZkJqp0w58LOOMTSXZMfO7icY8+vWkVSqnBjpRoiLGRVVHEAA"}}, "unsigned": {"age_ts": 1570043149162}}teQau$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2971}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4"], "type": "m.room.join_rules", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043148563, "hashes": {"sha256": "3N4vFUa4zbAGw3ShlbzRCFyNycSPSKyGAGWJNLyqDcU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6fHM4pSGhX3w/hc2Msu97de7eQIYPOFlBJuUu0EuTLDFFYwHpR4PfbDaqIPYNROIK4Ou8ceEW9ZUjFC00m+5Dw"}}, "unsigned": {"age_ts": 1570043148563}}keQac$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2970}{"auth_events": ["$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "type": "m.room.power_levels", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"users": {"@anon-20191002_181700-570:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043147873, "hashes": {"sha256": "UeaNC7LgIMBxIclY5zWdFumd3+sXHg4jnjDyCtkDetw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CIgBsfWMaZVhe2sJ+i0fcjfJp5dAAIO3Ca7QWJlHpqZN73iDyB/YshatYNnz6GsPYf7LwWWCYgc6eMJ8iXv7Ag"}}, "unsigned": {"age_ts": 1570043147873}} h. J W a jtz0!4e)Q ] $yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95REm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 m݊m݊@anon-20191002_181700-572:localhost:8800!3e)Q ] $WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmgm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 m݈em݈n@anon-20191002_181700-572:localhost:8800!2e)Q ]$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdMm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800m݆m݆@anon-20191002_181700-572:localhost:8800!1e)Q ]$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4m.room.message!dvZnfJonDkxlrrDXUk:localhost:8800m݄m݄@anon-20191002_181700-572:localhost:8800!0e)Q ]$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKcm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800m݂$m݂.@anon-20191002_181700-572:localhost:8800,/e?Q ]$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIm.room.history_visibility!dvZnfJonDkxlrrDXUk:localhost:8800m}Lm@anon-20191002_181700-572:localhost:8800$.e/Q ]$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wm.room.join_rules!dvZnfJonDkxlrrDXUk:localhost:8800mym{L@anon-20191002_181700-572:localhost:8800&-e3Q ]$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0cm.room.power_levels!dvZnfJonDkxlrrDXUk:localhost:8800mw mx@anon-20191002_181700-572:localhost:8800 ,e'Q ]$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAm.room.member!dvZnfJonDkxlrrDXUk:localhost:8800ms/mt,@anon-20191002_181700-572:localhost:8800+ e'Q  ]$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwm.room.create!dvZnfJonDkxlrrDXUk:localhost:8800mpVmp@anon-20191002_181700-572:localhost:8800!*e)Q ]$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nsm.room.message!vZGjXEXQoCaoUXnkCa:localhost:8800mlml @anon-20191002_181700-571:localhost:8800,)e?Q ]$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkm.room.history_visibility!vZGjXEXQoCaoUXnkCa:localhost:8800mgmi@anon-20191002_181700-571:localhost:8800$(e/Q ]$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacm.room.join_rules!vZGjXEXQoCaoUXnkCa:localhost:8800mdme@anon-20191002_181700-571:localhost:8800&'e3Q ]$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMm.room.power_levels!vZGjXEXQoCaoUXnkCa:localhost:8800ma/mbn@anon-20191002_181700-571:localhost:8800 &e'Q ]$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4m.room.member!vZGjXEXQoCaoUXnkCa:localhost:8800m_4m_@anon-20191002_181700-571:localhost:8800% e'Q  ]$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Ym.room.create!vZGjXEXQoCaoUXnkCa:localhost:8800m\jm\@anon-20191002_181700-571:localhost:8800&$e3Q ]$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUm.room.power_levels!fdEymmlcUvjgshvVyl:localhost:8800mTmW;@anon-20191002_181700-570:localhost:8800##e-Q ]$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Ym.room.tombstone!fdEymmlcUvjgshvVyl:localhost:8800mAmR@anon-20191002_181700-570:localhost:8800"Q/Q ]$1570043154263raEaa:localhost:8800m.room.join_rules!GBPGYLDkXcAsHgkfuS:localhost:8800mOmPX@anon-20191002_181700-570:localhost:8800"!Q?Q ]$1570043153262hRyOa:localhost:8800m.room.history_visibility!GBPGYLDkXcAsHgkfuS:localhost:8800mLmM>@anon-20191002_181700-570:localhost:8800 Q3Q ]$1570043152261Skczg:localhost:8800m.room.guest_access!GBPGYLDkXcAsHgkfuS:localhost:8800mJ-mJ@anon-20191002_181700-570:localhost:8800Q3Q ]$1570043152260dkyqc:localhost:8800m.room.power_levels!GBPGYLDkXcAsHgkfuS:localhost:8800mGmHP@anon-20191002_181700-570:localhost:8800Q'Q ]$1570043151259knbjg:localhost:8800m.room.member!GBPGYLDkXcAsHgkfuS:localhost:8800mDmE=@anon-20191002_181700-570:localhost:8800 Q'Q  ]$1570043150258cdaXl:localhost:8800m.room.create!GBPGYLDkXcAsHgkfuS:localhost:8800mB%mB@anon-20191002_181700-570:localhost:8800 X Xn QQa $1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2976}{"auth_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}], ["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}]], "prev_events": [["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}]], "type": "m.room.guest_access", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043152261Skczg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043152941, "hashes": {"sha256": "PfTXLy4tzTx9aaoi9zA6gjUQNgEsARElxIIP174q3M0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jYfcTWu5XXQbC2UNm+p57uUk+1fx/4UQcqtBBHa6NP37TQU4eH+G/m2JmEKpmR+AvwNC0NTIO8avTmEi8q9dCw"}}, "unsigned": {"age_ts": 1570043152941}}+ QQay $1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2975}{"auth_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "prev_events": [["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "type": "m.room.power_levels", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"users": {"@anon-20191002_181700-570:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043152260dkyqc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043152367, "hashes": {"sha256": "D99PctxrFaHXo+fWs9/Pjs2h1iK5ci72qAuGRlGM4DE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vmq2DqVXrQkEfTyk2KTxSS3oiUjJ83yBzgZd6ZUtvrMeijkDIFZANJ7vX3elr94nsBTmzIk7bDqVNmQKg7UcBw"}}, "unsigned": {"age_ts": 1570043152367}}QQa) $1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2974}{"auth_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}]], "prev_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}]], "type": "m.room.member", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-570", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-570:localhost:8800", "event_id": "$1570043151259knbjg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043151585, "hashes": {"sha256": "IUETK5nfPOzeoIPfmoExY0LB8nDqmkSSIsy4fD4NBaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PON7K17RQu2PGVxcSFHdFec7KlAV9q6iwGzXgj+SjtzokAYMCnYMrYB43cUmIOc2uVYllJLrXfYTjQweDiC1Bg"}}, "unsigned": {"age_ts": 1570043151585}} , ]  f  ;Eg#"<pDN 2 ^,onQQQ$1570043572397AAGBm:localhost:8800$1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043566390qTwyJ:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043550380LNzMz:localhost:8800$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043540371avDlf:localhost:8800$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043548378IxCfM:localhost:8800$1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043547377kWWAW:localhost:8800$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043546376YfkfL:localhost:8800$1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043542373yGTqH:localhost:8800$1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043541372ZeTYJ:localhost:8800$1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043558385Xpkrp:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043558384QrKsp:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043557383IxQaJ:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043568392ItLhq:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043567391GonfI:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043572396lZXIU:localhost:8800$1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043571395bDLFD:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043575399SiSKs:localhost:8800$1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043579402KDYtE:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043529361Oytod:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 nQQQ$1570043528360cetnZ:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 nQQQ$1570043527359ScxWW:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 nQQQ$1570043525357VEfrE:localhost:8800$1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043539370xCBJr:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043536368agmuM:localhost:8800$1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043536367lvGLr:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043535366hhblx:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043534365WVAkx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043530362jRUtV:localhost:8800$1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 onQQQ$1570043570394QELCg:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043569393UscIm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043559386ZLBoz:localhost:8800$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043549379wtMED:localhost:8800$1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 X X= eQa$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2979}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg"], "type": "m.room.tombstone", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!GBPGYLDkXcAsHgkfuS:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043150793, "hashes": {"sha256": "KXLBIqBu0WV3+l78BNZHqAUijMA4ioWmV6CrMnml7lA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nwXYj80gOpP0fzo4xDS8RL5jrPXQ4minG2l4E5ZDP0w4Vv+lXwfjuu4cAdHaO25D7rZ6dKyevQbX9RfCbma7Dw"}}, "unsigned": {"age_ts": 1570043150793}}g QQaq $1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2978}{"auth_events": [["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}], ["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "prev_events": [["$1570043153262hRyOa:localhost:8800", {"sha256": "NchE7JtRs4i04IV7SUZZWaJEE5ENlVCcDPs0uOx9qh0"}]], "type": "m.room.join_rules", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043154263raEaa:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043154400, "hashes": {"sha256": "NVoNeDiVyRGF8Q4/12vm1XeuNVlM2OvsXhIEtKe1hCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N6xmesIlgy2ECY1C9ofE95rAxLpKqzf3UV446bmY7Z9Nxv/WnetsL30/tz48VQ/VYDodCoCT2d9glcWruBD5Bg"}}, "unsigned": {"age_ts": 1570043154400}}x QQa $1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2977}{"auth_events": [["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}], ["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "prev_events": [["$1570043152261Skczg:localhost:8800", {"sha256": "NlAj2seeD0vk0mtfm4a0hl0CxQDqzUnqoiVFFi8Kkm4"}]], "type": "m.room.history_visibility", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043153262hRyOa:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043153633, "hashes": {"sha256": "nYUG7E44f5K5+tUHYGp3iA/GChrAc7TJh6MLTl4FmrY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4ZHer2e32iqKv6+t9cSjufkQ9OokCrlhaWENN2ByE/5408XPXhg5xSTlqFpC0wNyXJ13BqEfJRpD3YhxO6ehCw"}}, "unsigned": {"age_ts": 1570043153633}} &L ^ \ Z X VTRPNLJHF~8eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~7eeQ$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~6eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800~5eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~4eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800~3eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800~2eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~1eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800~0eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800~/eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~.eeQ$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~-eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800~,eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~+eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800~*eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800~)eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~(eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800~'eeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800~&eeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~%eeQ$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~$eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~#eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~"eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800~!eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800jQQQ$1570043154263raEaa:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043154263raEaa:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043154263raEaa:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043153262hRyOa:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043153262hRyOa:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 .\a \  W R M HCRkz#upkfTNQe !VhUAklonNaWKRnLkcr:localhost:8800$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0TMQe !VhUAklonNaWKRnLkcr:localhost:8800$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcTLQe !VhUAklonNaWKRnLkcr:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61ETKQe !VhUAklonNaWKRnLkcr:localhost:8800$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50MTJQe !ybXveQoxPVhjpKHAkG:localhost:8800$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54TIQe !ybXveQoxPVhjpKHAkG:localhost:8800$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTATHQe !ybXveQoxPVhjpKHAkG:localhost:8800$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsITGQe !ybXveQoxPVhjpKHAkG:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkTFQe !ybXveQoxPVhjpKHAkG:localhost:8800$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyETEQe !ijOiudvuzOLNmgNKfG:localhost:8800$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4TDQe !ijOiudvuzOLNmgNKfG:localhost:8800$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsTCQe !ijOiudvuzOLNmgNKfG:localhost:8800$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdETBQe !ijOiudvuzOLNmgNKfG:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SoTAQe !ijOiudvuzOLNmgNKfG:localhost:8800$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQJ@QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043197271EnBnz:localhost:8800T?Qe !iLHJbsFszubrnybDNz:localhost:8800$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7oJ>QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195270GcoLc:localhost:8800J=QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195269hcCzg:localhost:8800J<QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043194268zlNeZ:localhost:8800J;QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043193267ZyDyW:localhost:8800J:QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043192266CXqej:localhost:8800J9QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043191265cqITi:localhost:8800T8Qe !iLHJbsFszubrnybDNz:localhost:8800$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIT7Qe !iLHJbsFszubrnybDNz:localhost:8800$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugT6Qe !iLHJbsFszubrnybDNz:localhost:8800$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UT5Qe !iLHJbsFszubrnybDNz:localhost:8800$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8T4Qe !iLHJbsFszubrnybDNz:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YT3Qe !iLHJbsFszubrnybDNz:localhost:8800$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8T2Qe !hGsPmWXboxZZtOlsxY:localhost:8800$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIT1Qe !hGsPmWXboxZZtOlsxY:localhost:8800$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIT0Qe !hGsPmWXboxZZtOlsxY:localhost:8800$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYT/Qe !hGsPmWXboxZZtOlsxY:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIT.Qe !hGsPmWXboxZZtOlsxY:localhost:8800$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwT-Qe !dvZnfJonDkxlrrDXUk:localhost:8800$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIT,Qe !dvZnfJonDkxlrrDXUk:localhost:8800$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wT+Qe !dvZnfJonDkxlrrDXUk:localhost:8800$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0cT*Qe !dvZnfJonDkxlrrDXUk:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAT)Qe !dvZnfJonDkxlrrDXUk:localhost:8800$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwT(Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkT'Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacT&Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMT%Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4T$Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6YJ#QQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043156264uvwRa:localhost:8800T"Qe !fdEymmlcUvjgshvVyl:localhost:8800$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUJ!QQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043154263raEaa:localhost:8800 ~I RDd | J + j  R  W X & D L8  ^ ,] v2j8p> %v d>1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 g1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEM1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ01e$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc 1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU}1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc [1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg ,1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI *1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg >01e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4R1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 51e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD701e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg71e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM:1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQm1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4t1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI 1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwM1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8y1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE51e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwu1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs;0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ"1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQu1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIz0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEt1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw Z1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c I1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI C1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc /1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY o1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y l1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs W1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qst1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsY ~z v r n j fb^ZVRNJFeeQ$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800 G 0GkeQac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2983}{"auth_events": ["$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "type": "m.room.power_levels", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"users": {"@anon-20191002_181700-571:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043158831, "hashes": {"sha256": "pT40/LcWz6AxerrzceZYTTwJlnmBUBXL7V3Cwl9GVLY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6Kt+Dj7guvrMc+SHsQhsrlaZtmkGnGDiSv5uISGmX+ZxW1Vge4BOiG7UYnEeThH69kYvkCQRTw2rWvLf4gr3DA"}}, "unsigned": {"age_ts": 1570043158831}}veQay$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2982}{"auth_events": ["$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y"], "prev_events": ["$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y"], "type": "m.room.member", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-571", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-571:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043158324, "hashes": {"sha256": "09YmcYfE3zMd76s0Ah7YlZihBy7i/98Axm4wG4VOWfs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EcUMzuMPwiU1cvWkdRWSIsODXffFgTQM7DWobfdM+V4qzLGu1X2HA3mV8K25lFPmKtS8zoQfYUd/+dmwWG9/Dg"}}, "unsigned": {"age_ts": 1570043158324}}ieQa_$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2981}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-571:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043157610, "hashes": {"sha256": "bJ9p24BMhPp1sUy6uCcs7UBT7fIMpnVJAY1k3WSbl7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FCVuecuRiTNSzR39v2PFfzE06NggHVnJUHYsebBROPq9e3+MXbEkT0PKaLn6yLelZsetBGk2nPgIPNf+qXTNDQ"}}, "unsigned": {"age_ts": 1570043157610}}_eQaK$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2980}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y"], "type": "m.room.power_levels", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"users": {"@anon-20191002_181700-570:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043155670, "hashes": {"sha256": "CoaqnzuiuMS9VuyaDsNNUkOWmfNRiu+AgrOqCouThTc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ktEkgvNZYhUofZnzUVSKSoqLzIPXUEUFlhAO8GpKZnENcAmnFBZ1Z6tJfjlEWQAZ5rajnavkXb5tYTgnvKg2Ag"}}, "unsigned": {"age_ts": 1570043155670, "replaces_state": "$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4"}}  sieQa_$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2987}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-572:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043162710, "hashes": {"sha256": "5DIi5anQ4E9L+yC9+YZis65DVBJ/AzsOlAswputpl4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZdgY+KyXHKXcVwRXxt6O3GoqJ6RJ3tjPAxpphzerPFy4+Ed9y9QReFGi5Aw5m7lsJeJXzeyhT9je4Ui5czl8Cg"}}, "unsigned": {"age_ts": 1570043162710}}eQy$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "txn_id": "536", "stream_ordering": 2986}{"auth_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM", "$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk"], "type": "m.room.message", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"msgtype": "m.text", "body": "hello, world"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043161601, "hashes": {"sha256": "FUdOOQXY11gqMBm7iIl/ZHB+WbpQQfRK1bkvGASmbPs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BhyCKDmEInCsK6ngit7UuM4uhevvI7I+g7yMIEc23jJJrD7Obxwt/KZWAj9dFODe0CEf44cA352yFWOshjG5BA"}}, "unsigned": {"age_ts": 1570043161601}}eQa$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2985}{"auth_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM", "$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac"], "type": "m.room.history_visibility", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043160575, "hashes": {"sha256": "pX8k6N9ajV0+mGHqYu0L2Wz7DN/XstN4RjRDCPn88z0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "21IyjJlQy8+PFQJQaJWg479Er0l/r5dGhDJi67+hrI1NCAxuzSgL2HxxYv41Bh8sVIbJC04zHXjsCzous4SBCw"}}, "unsigned": {"age_ts": 1570043160575}}teQau$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2984}{"auth_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM", "$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM"], "type": "m.room.join_rules", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043159753, "hashes": {"sha256": "FzOYGlqHwnUMF5AqmD9aPmnjNNh9eh5xp1M4dOlPCUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dIlHYif0GlRb76fHWKRdfRVWeKJWgFwnYtdBcHf7bKbqEIMKpTJvDInTpaUOSPA5yQm9iwlfbdSgEkIP6IJQAg"}}, "unsigned": {"age_ts": 1570043159753}} ` oM`i!eQa_$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 2999}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-573:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043171770, "hashes": {"sha256": "ymC/t+zEQrWKVOZaoavT+RQ5EaIC/LtYHPj/05yO+W0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7QRX1l19bVgI+bXb5l2Z06NXAiB2NxZzxJuph4V3Kw+82jlny1mn29yS8z+Q3xCyn9ZGyHp9m/eyy+7ZoEWWCA"}}, "unsigned": {"age_ts": 1570043171770}} eQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "543", "stream_ordering": 2998}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043170536, "hashes": {"sha256": "rqYYVPVDFH/m0KgMk9ctDJspJFEe3AQ23cF6SNJXS2M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EN4spyuJkA54roRVjlj4BqUzh9ptZoCgoDnFK0Dx2rRVGuocDCQL6jHARHfNJfwNpyB2K5I5xYs4RqC8xkoJDw"}}, "unsigned": {"age_ts": 1570043170536}} eQ$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "542", "stream_ordering": 2997}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043169962, "hashes": {"sha256": "fRWjnDOtviOe4CfY77zWzbFSceIXhc2ziMe2Fm0Cp6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RC7Zin0a5XnINAMptHXuMVj9gJ6SjWyUuUegJVkUD78HJ/JXDF3bgP4X1bHBLhLyiisyCo18vS8T6ZkujMpbCA"}}, "unsigned": {"age_ts": 1570043169962}} eQ$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "541", "stream_ordering": 2996}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043169421, "hashes": {"sha256": "JnbrxDezDC8JfPuRTtHqaqwZPnyI+YVARLQ9t1Ef0VU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PF1kPfvSdPAVCKMu4KAFeEjhCevdrNTEM6vblezZTdC85U8h6zW31OwOoJ7zYvcQZy8vJqAoY7y+mN2fPswIAA"}}, "unsigned": {"age_ts": 1570043169421}}  eQa$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2991}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w"], "type": "m.room.history_visibility", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043166028, "hashes": {"sha256": "IgYgAvfeP3olbXTdc+65wsZJaEjzkECwUKJfd1oYsGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P9JYXgF+GgwB1Bz0VrYUTjut9cqfRoYVdo5vCNOWk2NwP0A3L8PEMUFXRAIbX4FUSD0Ce3MUmSucViJCRUETBA"}}, "unsigned": {"age_ts": 1570043166028}}teQau$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2990}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c"], "type": "m.room.join_rules", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043165128, "hashes": {"sha256": "01VpUT3siYU3ulz8rqytjsJ2N+HVnvsMHwHUGjYls6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D0IyuiV1PV5WpowCJ3lIi7ewYd1O2PMy9f1eJENFz0KsEbLCSVVn30nZkDaFtt7UX11/7qYT57bzchZufH+sDA"}}, "unsigned": {"age_ts": 1570043165128}}keQac$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2989}{"auth_events": ["$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "type": "m.room.power_levels", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"users": {"@anon-20191002_181700-572:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043164428, "hashes": {"sha256": "+e2N97P3K8mPXC7mrQoSZKz5gAIkxi6gb5nVGuHsbdM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9TkWEAs3PynGIrDoo0vj5Rx7VEZ0Kk1aMDKa1Bam3KbsWa09iPwtbPkD9LTtP7jAjDfO9gDaflMtBasUZVUWBA"}}, "unsigned": {"age_ts": 1570043164428}}veQay$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2988}{"auth_events": ["$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw"], "prev_events": ["$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw"], "type": "m.room.member", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-572", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-572:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043163439, "hashes": {"sha256": "3rPZdasY2nWLzWQ1lmYqM+Z8cNe0zYaBD14V/vuQ5AM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9qJb6w+1CstX43I0ojuFEL0sD8uBPBk4t+4dzTvvW1Om6gqWZmcX7idAOnsLKN7pcAYQgPa7LZ/WITxxvYUnCA"}}, "unsigned": {"age_ts": 1570043163439}}  pP eQ$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "540", "stream_ordering": 2995}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043168869, "hashes": {"sha256": "z7wZAEPLuXyelcHlpTZpz91nXYEI1+t+fEePID+RdJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XfmqHL+ClH9TcrFIkFy/nTf75q9NS1M+P2BwikPkSqBKOWw+/P2ARXKqPacJke/7ybIjoEW3sx08KReOnrB1AQ"}}, "unsigned": {"age_ts": 1570043168869}} eQ$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "539", "stream_ordering": 2994}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043168402, "hashes": {"sha256": "Iux4rDp322wLa7Q1/0bAB3erZT7HVxxgRiSF/jDm7sE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oJ0nDAUrXva8YtQq5xubTl4E/a9gBiGjnmcxW4KJrSckgcqXUcbCCEKMlBK/XXF9UG7r9utFTNDsb7THPgv6Dw"}}, "unsigned": {"age_ts": 1570043168402}} eQ$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "538", "stream_ordering": 2993}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043167912, "hashes": {"sha256": "qMUbM32Fkc3c8xsnET+mdr3UaXCorclFUf7FkteRfLY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qjU6ssruKf6CgTc+cbWoHchsXJgOTKIThccb9MmMg2PnssNsztOdB1Xm/X77JFDusN+9iJNSci6lS+StG97VDQ"}}, "unsigned": {"age_ts": 1570043167912}} eQ$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "537", "stream_ordering": 2992}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043167268, "hashes": {"sha256": "y/YG39pIxnw0GYj/dke2RZztFaWsYztJac4vav32YRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wlIf0pfSJgEzUDHAedmuk2vkGvK+khn7eEvsYL8iclEjpO7rax8qGXp8+s0uOQRktImWbCDVQmVR6trKLi48DQ"}}, "unsigned": {"age_ts": 1570043167268}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h J | I { H z G y F x E w D v D u C t B s A r @ q ? p > o = n < m ; l : k 9 j 8 i 7 h 6 g 5 f 4 e 3 d 2 c 1 b 0 a / ` . _ - ^ , ] + \ * [ ) Z ( Y ' X & W % V $ U # T " S ! R Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B  A  @  ? > = < ; :  9  8  7  6  5  4  3  2 1 0 / . - , + * ) ( ' & % $ # " !                                                                                                                       ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  `  _  ^  ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L ~ K }   ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B  A ~ @ } ? | > { = z < y ; x : w 9 v 8 u 7 t 6 s 5 r 4 q 3 p 2 o 1 n 0 m / l . k - j , i + h * g ) f ( e ' d & c % b $ a # ` " _ ! ^ ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K y[ p  n $ 5FW hy!Le)Q ]$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0m.room.message!hGsPmWXboxZZtOlsxY:localhost:8800m|mDŽ@anon-20191002_181700-573:localhost:8800!Ke)Q ]$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2wm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mŚmŦ@anon-20191002_181700-573:localhost:8800!Je)Q ]$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mm@anon-20191002_181700-573:localhost:8800!Ie)Q ]$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUgm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mm@anon-20191002_181700-573:localhost:8800!He)Q ]$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-wwm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݿmݿ@anon-20191002_181700-573:localhost:8800!Ge)Q ]$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-Em.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݽmݽ@anon-20191002_181700-573:localhost:8800!Fe)Q ]$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4m.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݻmݻ@anon-20191002_181700-573:localhost:8800!Ee)Q ]$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݹmݹ@anon-20191002_181700-573:localhost:8800!De)Q ]$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݷmݷ@anon-20191002_181700-573:localhost:8800!Ce)Q ] $fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dkm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݵmݵ@anon-20191002_181700-573:localhost:8800!Be)Q ] $mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYcm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݳVmݳ_@anon-20191002_181700-573:localhost:8800!Ae)Q ] $TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfcm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݰ`mݰn@anon-20191002_181700-573:localhost:8800!@e)Q ] $SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݮ!mݮ+@anon-20191002_181700-573:localhost:8800!?e)Q ] $oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݬFmݬR@anon-20191002_181700-573:localhost:8800!>e)Q ]$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݨmݨ@anon-20191002_181700-573:localhost:8800!=e)Q ]$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKEm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݦmݦ@anon-20191002_181700-573:localhost:8800!<e)Q ]$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQkm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݤmݤ@anon-20191002_181700-573:localhost:8800,;e?Q ]$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIm.room.history_visibility!hGsPmWXboxZZtOlsxY:localhost:8800mݞmݡ@anon-20191002_181700-573:localhost:8800$:e/Q ]$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIm.room.join_rules!hGsPmWXboxZZtOlsxY:localhost:8800mݛmݜ?@anon-20191002_181700-573:localhost:8800&9e3Q ]$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYm.room.power_levels!hGsPmWXboxZZtOlsxY:localhost:8800mݘ2mݙz@anon-20191002_181700-573:localhost:8800 8e'Q ]$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIm.room.member!hGsPmWXboxZZtOlsxY:localhost:8800mݖ&mݖ@anon-20191002_181700-573:localhost:88007 e'Q  ]$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwm.room.create!hGsPmWXboxZZtOlsxY:localhost:8800mݓmݔ@anon-20191002_181700-573:localhost:8800!6e)Q ] $rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9Am.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 mݎmݎ@anon-20191002_181700-572:localhost:8800!5e)Q ] $B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkkm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 m݌m݌@anon-20191002_181700-572:localhost:8800  d l M>t | \ T F6.& eeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800 meeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800IeeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800leeQ$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4!sPWVGnipjiiWQpywNO:localhost:88001eeQ$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800ՁeeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800NeeQ$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800فeeQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc!bNSXSTadOMhIrYpMzH:localhost:8800ÁeeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:88006eeQ$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI!rQeYcODvQiLsOIbQrJ:localhost:8800ieeQ$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk!StEnDjTJToXKXsOHNf:localhost:8829eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800feeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800FeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800UeeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800ЁeeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800^eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800eeQ$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800ׁeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800 SeeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800S ) )lrQQa{ $1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800{"token_id": 626, "stream_ordering": 3336}{"auth_events": [["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}], ["$1570043501341JmcnI:localhost:8800", {"sha256": "g8XysJGS8cECE32D2VOqramsGqekymakLP4J7vVBCpg"}], ["$1570043503344dJwGF:localhost:8800", {"sha256": "mSjw5apPIKdGYIS1NkX460bGkWossA7vQec/bQRvFkY"}], ["$1570043502342mVJmO:localhost:8800", {"sha256": "FyxjzLcOIZK7qt2jVt8FOTlbQFa7joYMisPZE1vWrNo"}]], "prev_events": [["$1570043504345DCjlJ:localhost:8800", {"sha256": "ZYkySBg4HH6I1Pr/7E6hexxNcRYq5JbP/bWhAFcgygw"}]], "type": "m.room.member", "room_id": "!TSFcaXDBqrCREHRHxv:localhost:8800", "sender": "@anon-20191002_181700-646:localhost:8800", "content": {"membership": "invite"}, "depth": 6, "prev_state": [], "state_key": "@__ANON__-23:localhost:42455", "event_id": "$1570043506346EEQDj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043506160, "hashes": {"sha256": "j4rhF8PE/2x6aeI8FqsK0SWE9zuq35qOJwabYppJduc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VsO+2sXJmb6rk4Jqad7yCm+XXXbGLjiCa7qxZ0qSJEmQ78lZBUTEARME7319esNpADnSsMiDX3Rrgc72f4dOAA"}, "localhost:42455": {"ed25519:1": "G//pPGBjrs6786hKjCf0uv+q8wbbmg8HELtdHOStZYrR/mPbc1iyEbzA6QHBUdUGL/c/6RX+hnA2ULKczFGxDQ"}}, "unsigned": {"age_ts": 1570043506160, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-646:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-646:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-646", "avatar_url": null}, "sender": "@anon-20191002_181700-646:localhost:8800"}]}}xqQQa $1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800{"token_id": 626, "stream_ordering": 3335}{"auth_events": [["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}], ["$1570043501341JmcnI:localhost:8800", {"sha256": "g8XysJGS8cECE32D2VOqramsGqekymakLP4J7vVBCpg"}], ["$1570043502342mVJmO:localhost:8800", {"sha256": "FyxjzLcOIZK7qt2jVt8FOTlbQFa7joYMisPZE1vWrNo"}]], "prev_events": [["$1570043503344dJwGF:localhost:8800", {"sha256": "mSjw5apPIKdGYIS1NkX460bGkWossA7vQec/bQRvFkY"}]], "type": "m.room.history_visibility", "room_id": "!TSFcaXDBqrCREHRHxv:localhost:8800", "sender": "@anon-20191002_181700-646:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043504345DCjlJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043504507, "hashes": {"sha256": "1LSb1P0rjZtbYm23/YYA91MZT9aZNZynXCvaQ1LMmhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cf8rOKF5rIpZnvvTVGEjDmNpfKMsL8Uy6JdnGN3ZXnBWP4/WKH8an/2mZl6Q94MH+xdP1hGl5D3RoEOKybhFCQ"}}, "unsigned": {"age_ts": 1570043504507}}gpQQaq $1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800{"token_id": 626, "stream_ordering": 3334}{"auth_events": [["$1570043501341JmcnI:localhost:8800", {"sha256": "g8XysJGS8cECE32D2VOqramsGqekymakLP4J7vVBCpg"}], ["$1570043502342mVJmO:localhost:8800", {"sha256": "FyxjzLcOIZK7qt2jVt8FOTlbQFa7joYMisPZE1vWrNo"}], ["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}]], "prev_events": [["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}]], "type": "m.room.join_rules", "room_id": "!TSFcaXDBqrCREHRHxv:localhost:8800", "sender": "@anon-20191002_181700-646:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043503344dJwGF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043503739, "hashes": {"sha256": "OFA1Zrsj6qpvdAjlNo5FVaT2rtb7SbMnPuzenNMox48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+8SuAyuljypvH0XHXEpQQOy8P6h8aoj7zNdbBFr/x8uBSaW0xpd3k6iF2tuIkDDABWSjPKsz2dKveZsP1pgMCg"}}, "unsigned": {"age_ts": 1570043503739}} uS &`3rG m @  3 `mT'sF   AHh;Z- f 9 s F zM yL,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z Z,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y Y,Q!qjijQBfMwsCPTVgKPm:localhost:8800 X X,Q!qjijQBfMwsCPTVgKPm:localhost:8800 W W,Q!qjijQBfMwsCPTVgKPm:localhost:8800 V V,Q!qjijQBfMwsCPTVgKPm:localhost:8800 U U,Q!qjijQBfMwsCPTVgKPm:localhost:8800 T T,Q!qjijQBfMwsCPTVgKPm:localhost:8800 S S+Q !qjijQBfMwsCPTVgKPm:localhost:8800 R R,Q!peJMRJtXBvIiCttNmm:localhost:8800 t t,Q!peJMRJtXBvIiCttNmm:localhost:8800 s s,Q!peJMRJtXBvIiCttNmm:localhost:8800 r r+Q !peJMRJtXBvIiCttNmm:localhost:8800 q q,Q!pduebXnTyxQWVxEICp:localhost:8800 1 1,Q!pduebXnTyxQWVxEICp:localhost:8800 0 0,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800+Q !quaZwrGnzbNWhwAOYB:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!rQeYcODvQiLsOIbQrJ:localhost:8800%%+Q !rQeYcODvQiLsOIbQrJ:localhost:8800$$,Q!rJhSRzmWBQHlIhuDXT:localhost:8800DD,Q!rJhSRzmWBQHlIhuDXT:localhost:8800CC,Q!rJhSRzmWBQHlIhuDXT:localhost:8800BB,Q!rJhSRzmWBQHlIhuDXT:localhost:8800AA,Q!rJhSRzmWBQHlIhuDXT:localhost:8800@@+Q !rJhSRzmWBQHlIhuDXT:localhost:8800??,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800+Q !qxqNYKdtgvOQdhmgsj:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800 S,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800+Q !qtelAHlSkrqEFmlCqS:localhost:8800,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  +Q !qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  +Q !qzurjQHmiriwjaUMhO:localhost:8800  ,Q!pduebXnTyxQWVxEICp:localhost:8800 / /,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800~~+Q !qSUSLLWjDxcGibUZdT:localhost:8800}},Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 +Q !qInWQPtNQfBFoVzUtP:localhost:8800 *Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800)Q !plcvCHNbjCkNMMxnTk:localhost:8800,Q!peJMRJtXBvIiCttNmm:localhost:8800 u u-,Q!rQeYcODvQiLsOIbQrJ:localhost:8800..,Q!rQeYcODvQiLsOIbQrJ:localhost:8800++,Q!rQeYcODvQiLsOIbQrJ:localhost:8800)),Q!rQeYcODvQiLsOIbQrJ:localhost:8800'' uS &`3rG m @  3 `mT'sF   AHh;Z- f 9 s F zM yL,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z Z,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y Y,Q!qjijQBfMwsCPTVgKPm:localhost:8800 X X,Q!qjijQBfMwsCPTVgKPm:localhost:8800 W W,Q!qjijQBfMwsCPTVgKPm:localhost:8800 V V,Q!qjijQBfMwsCPTVgKPm:localhost:8800 U U,Q!qjijQBfMwsCPTVgKPm:localhost:8800 T T,Q!qjijQBfMwsCPTVgKPm:localhost:8800 S S+Q !qjijQBfMwsCPTVgKPm:localhost:8800 R R,Q!peJMRJtXBvIiCttNmm:localhost:8800 t t,Q!peJMRJtXBvIiCttNmm:localhost:8800 s s,Q!peJMRJtXBvIiCttNmm:localhost:8800 r r+Q !peJMRJtXBvIiCttNmm:localhost:8800 q q,Q!pduebXnTyxQWVxEICp:localhost:8800 1 1,Q!pduebXnTyxQWVxEICp:localhost:8800 0 0,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800+Q !quaZwrGnzbNWhwAOYB:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!rQeYcODvQiLsOIbQrJ:localhost:8800%%+Q !rQeYcODvQiLsOIbQrJ:localhost:8800$$,Q!rJhSRzmWBQHlIhuDXT:localhost:8800DD,Q!rJhSRzmWBQHlIhuDXT:localhost:8800CC,Q!rJhSRzmWBQHlIhuDXT:localhost:8800BB,Q!rJhSRzmWBQHlIhuDXT:localhost:8800AA,Q!rJhSRzmWBQHlIhuDXT:localhost:8800@@+Q !rJhSRzmWBQHlIhuDXT:localhost:8800??,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800+Q !qxqNYKdtgvOQdhmgsj:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800 S,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800+Q !qtelAHlSkrqEFmlCqS:localhost:8800,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  +Q !qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  +Q !qzurjQHmiriwjaUMhO:localhost:8800  ,Q!pduebXnTyxQWVxEICp:localhost:8800 / /,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800~~+Q !qSUSLLWjDxcGibUZdT:localhost:8800}},Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 +Q !qInWQPtNQfBFoVzUtP:localhost:8800 *Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800)Q !plcvCHNbjCkNMMxnTk:localhost:8800,Q!peJMRJtXBvIiCttNmm:localhost:8800 u u-,Q!rQeYcODvQiLsOIbQrJ:localhost:8800..,Q!rQeYcODvQiLsOIbQrJ:localhost:8800++,Q!rQeYcODvQiLsOIbQrJ:localhost:8800)),Q!rQeYcODvQiLsOIbQrJ:localhost:8800''  $ 6 I E A=95/+'#5Q]e!NQgavrmiCPUVaVjssy:localhost:8800@anon-20191002_181700-187:localhost:8800$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0joiniQ1e!hgjYwwwjWJNgwrzOto:localhost:8800@13:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcjoinQ]e!hgjYwwwjWJNgwrzOto:localhost:8800@anon-20191002_181700-186:localhost:8800$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0joinQ]e!dnZVySJLGNtUKsSgXW:localhost:8800@anon-20191002_181700-185:localhost:8800$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8joinQ]e!oznZaCpONuNDaLarkI:localhost:8800@anon-20191002_181700-184:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYjoinQ]e!eLsrBEnrHolwCNgkFW:localhost:8800@anon-20191002_181700-183:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AjoinQ]e!ILbUVZOfPPwaZRrKJd:localhost:8800@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwjoinQ]e!wAyboOFgsOPwkmgMAI:localhost:8800@anon-20191002_181700-181:localhost:8800$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQjoinQ]e!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-179:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4joinQ]e!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-178:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4joinQ]e!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-177:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUoleaveQ]e!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-176:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYjoinQ]e!tDsPLsKOLPePtEWRwn:localhost:8800@anon-20191002_181700-176:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMjoinQ]e!XMNRkfscQXRjgYrOSd:localhost:8800@anon-20191002_181700-175:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMjoin Q]e!XMNRkfscQXRjgYrOSd:localhost:8800@anon-20191002_181700-174:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Ujoin Q]e!wUuodvgsmAJqKJUBCQ:localhost:8800@anon-20191002_181700-173:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUjoin Q]e!KeBlWUQiLYUoILKkTB:localhost:8800@anon-20191002_181700-170:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMjoin Q]e!zFdNewlKnUiMBxnYrN:localhost:8800@anon-20191002_181700-170:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60join Q]e!UyLoIXmzVFwycmBUeh:localhost:8800@anon-20191002_181700-169:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgjoinQ]e!lAGTcYIuMBXsVRGCOe:localhost:8800@anon-20191002_181700-169:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIjoinQ]e!WVzjUePHrzCjfyTbmK:localhost:8800@anon-20191002_181700-169:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosjoinQ]e!nteAxExBGJfaGIpuCx:localhost:8800@anon-20191002_181700-168:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsjoinhQ/e!itKDOCtoMkFUETDtle:localhost:8800@8:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8joinQ]e!itKDOCtoMkFUETDtle:localhost:8800@anon-20191002_181700-167:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YjoiniQ/e!qxqNYKdtgvOQdhmgsj:localhost:8800@7:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4leaveQ]e!qxqNYKdtgvOQdhmgsj:localhost:8800@anon-20191002_181700-165:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUjoinhQ/e!MlzmtUYSZOiByAZdKx:localhost:8800@6:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgjoinQ]e!MlzmtUYSZOiByAZdKx:localhost:8800@anon-20191002_181700-164:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMjoiniQ/e!WjlTCJVOFJkanCtkFE:localhost:8800@5:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oleave~Q]e!WjlTCJVOFJkanCtkFE:localhost:8800@anon-20191002_181700-163:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0join}Q]e!aBCvSXjtZUEPlPGHvY:localhost:8800@anon-20191002_181700-162:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4join i 4 h5i g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEA0fmc3Y0QxWUdmKzQ6O2IKMDAyZnNpZ25hdHVyZSBG-uobgFAmq9NLJXvEdSpgFgmN1SswLvdwubfHzKrPbQo;1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF8jcExhLjZqWioqb3JJTGIKMDAyZnNpZ25hdHVyZSATTRbNO7ghd-MJRhbJOUDzReRA2eNpboVfGfaE7b5togo91cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpIME1rMDJaNTVnQV4mKmQKMDAyZnNpZ25hdHVyZSDs0_JHyuwrzhsZIXxSBOdggNNwVbh6b2PSU7kjM6VnBAo71cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFJQ2k6JnR1d2csZCtTYkoKMDAyZnNpZ25hdHVyZSA9wYUO1vJBMowK4IpWVG5FkeN2atNDe-McB9m6-qrfWQo41cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX153K2cxK1BOU2JSS3IKMDAyZnNpZ25hdHVyZSAe6JbkGlIFoVwqKgUpSQhIS91WBgnR3pTMnBpm3t9nswo81cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV1IzBqNDdWXm5ncklhR2MKMDAyZnNpZ25hdHVyZSDHpR8ZHjt5986DzBZP0MnU2IPu3q7JCmTn5Jzgxs2pmwo61cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWSmFLJl5ZK0heb2ZuOlkKMDAyZnNpZ25hdHVyZSAO7MSz5oG_iGGUxl0k6OcSlgjGpZGamFhhrRuRdokuIgo51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlYRj1wM05EOS5vXjFKVnoKMDAyZnNpZ25hdHVyZSBYYHFUdAxAnXimtmCEKeGe9KUUuXOT8Dkgh7rJMizMtgo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqSGd1d0BsaDFHO3BeaUwKMDAyZnNpZ25hdHVyZSA7uV5hX3vKBnLk0QaC8CYMcssMCkflw8aLsSo3BB2bIwo21cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZkbF55WkZFfm14dyNfa2YKMDAyZnNpZ25hdHVyZSBLYH3CJ0T1Q3BRGeLp6D6Nr0P_DWeASmh9STN8_fvomwo11cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0Hwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhTQTFmTnE7LUtBQHlCTEMKMDAyZnNpZ25hdHVyZSB55WriqUdXCaW2zuQkGHisLRCQSwSiwmIsJDDKATirEAo: $ l Hl  $571cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgo~N1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgop 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRCVnBqMEBRaGZtWjdTZEYKMDAyZnNpZ25hdHVyZSApW_9ygROP-xkvgLFU8SCjdYJi_4WNmFICdZ7S6MH60Qo0 01cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3Ao" 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgob1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQoi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQo c1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQonł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5xdSxZZnhsU3JxVnQteUwKMDAyZnNpZ25hdHVyZSCtq1UJU_Wyiyp9peYu9r8YQgQoH6XNu9vzifshqGZ0AAo.1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDh3REZETWFodU5jO1BjSlIKMDAyZnNpZ25hdHVyZSBkO3hDSxe8Mu7xTlw3rYlxibs1_JShkhhmytcoluPlngoH ,ij8p> w1 E  }i K  Q  W % ] +c1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c !1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM a1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM `1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM _1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng~1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648 1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c 1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c 1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1mst1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkY1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkX1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkW1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE _1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE ^1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE ]1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0  %eQa$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3003}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI"], "type": "m.room.history_visibility", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043174530, "hashes": {"sha256": "gbzx8yTvputVA3o71MxTgayUY7asglS4lifOJCMZlTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/mg8ftsG7ttx923wZZWvR88mmu3/KNGfpr5N4TjOFIlM6YCHxavyqwI5/rUjl3jqzf1EhprW4U0em1MhSMBtDA"}}, "unsigned": {"age_ts": 1570043174530}}t$eQau$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3002}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY"], "type": "m.room.join_rules", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043173770, "hashes": {"sha256": "8tlrzG9Ii25DpPlUKXZE0vGeg7jGoVx8/I2FDvR5wQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aspsd6EgykjF++Gz4ofa3HgenjA714kh88BQzhEIwpqMg4sLnED2gk/yZjAcfVD1ldhGbxNcnuO4w/QlepNqAQ"}}, "unsigned": {"age_ts": 1570043173770}}k#eQac$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3001}{"auth_events": ["$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "type": "m.room.power_levels", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"users": {"@anon-20191002_181700-573:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043172914, "hashes": {"sha256": "AWl/ZHfWm4sQDJ17jEhyioRHVj6Y7Cj+eBoWlD8pYZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fToBo7Ra9L5g58cTdnaDB+uuxv/JB4rhn4BL+niP63qCjK/ZzT8f8AoYp2i8yroHVRWU6gBDVoj7ZCiY5FhTCw"}}, "unsigned": {"age_ts": 1570043172914}}v"eQay$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3000}{"auth_events": ["$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw"], "prev_events": ["$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw"], "type": "m.room.member", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-573", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-573:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043172390, "hashes": {"sha256": "pXewfoCigd7DXZAuJnei8Bn88tbxxhGbc4LqNmyHrmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tsve6P8NhXNC0J1d3WnKR7bTaPRqfD/VAXylDoU3oH7MIQC3kqQw5WjMyXee6tGXqIQbURcDi60WVEky8XYRDQ"}}, "unsigned": {"age_ts": 1570043172390}} 8oRr9  U  q 8 6 U  q 8 S T Vp7n5QXX8e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Ysha2568e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIsha256B8e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMsha2568e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0sha2568e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAsha2568e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0sha2568e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAsha2568e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4sha256 8e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4sha256a8e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hksha256n8e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Qsha256 t8e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yksha256 K8e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8sha256 8e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wsha256 N8e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Ysha256 7e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMsha256o8e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Msha256v8e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUsha256m8e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIsha2568e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4sha256d8e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00sha256R8e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8sha256F8e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQsha25658e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gsha256f8e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fssha2568e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevosha256~8e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0sha256 H8e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUosha256/8e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0sha2568e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQsha256 8e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWksha2568e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAsha256l8e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYsha256'8e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJksha256h8e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIsha256}8e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQsha2568e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwsha256`8e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYsha2568e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIsha2567e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMsha256k8e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKssha2568e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcsha2568e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewsha256`8e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Qsha25668e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-ksha2568e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWssha2568e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0sha2568e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/ssha256 8e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEosha2568e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIsha256#8e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZksha2568e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMsha2568e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNYsha2568e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMsha2568e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjosha256 w8e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Qsha256 q (3 a  P % 0^'SX!ITeeQ/ $pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rulesgeQ3 $eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels eQ']$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800joinaeQ' $13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800m.room.createmeQ? $DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibilitye~eQ/ $wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rulesg}eQ3 $ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels |eQ']$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800joina{eQ' $P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800m.room.createmzeQ? $81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibilityeyeQ/ $L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rulesgxeQ3 $LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels weQ']$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800joinaveQ' $YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800m.room.createdteQ- $E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone[sQQ/ $1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rulescrQQ? $1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility]qQQ3 $1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access]pQQ3 $1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levelsoQQ']$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800joinWnQQ' $1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.createmmeQ? $83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibilityeleQ/ $22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800m.room.join_rulesgueQ3 $G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels jeQ']$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800joinaieQ' $-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800m.room.createmheQ? $YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibilityegeQ/ $leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rules 'B`p 0 @ P `  p ]z*:f&BjB^Mr]Q@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800AqEQ@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:8800Mp]Q@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800=o]1@anon-20191002_181700-632:localhost:8800!5:localhost:424551nE1@__ANON__-10:localhost:42455!5:localhost:42455Mm]Q@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800Ml]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800Mk]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800Mj]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800Mi]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800Mh]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800Mg]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800Mf]Q@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800@eCQ@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800Md]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800=c]1@anon-20191002_181700-617:localhost:8800!0:localhost:424550bC1@__ANON__-0:localhost:42455!0:localhost:42455Ma]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800M`]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800M_]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800M^]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800M]]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800M\]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800M[]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800MZ]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800MW]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800MV]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800MU]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800MT]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800MS]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800MR]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800MQ]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800MP]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800MO]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800MN]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800MM]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800ML]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800MK]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800MJ]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800  pP )eQ$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "547", "stream_ordering": 3007}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043178054, "hashes": {"sha256": "MmzlofDeMo0R/65YZdJzwsYgG5I3rsiRW/UeZmMsdDY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jfIe1x4f0Kq6tiPdTv0kk1oq8HOWe7M2VIzGOoC3k93S/p+uQFYSnUo4VAyNv/8Ypg7Jv6r8gsJ7eJjfJsRoDQ"}}, "unsigned": {"age_ts": 1570043178054}} (eQ$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "546", "stream_ordering": 3006}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 2", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043177186, "hashes": {"sha256": "wI+Wz2cNF5qoUvuFiB9v8o4jt/fYDjEthD/O6XAgmok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WS9FsmioNQmYz4ElrouL5lTT3CyOPoFfyEa3NSVtyqqz0iZyUwrHa4bRc8Hz5RKVlJn8WctccbO6+JV7jDk5Cg"}}, "unsigned": {"age_ts": 1570043177186}} 'eQ$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "545", "stream_ordering": 3005}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043176637, "hashes": {"sha256": "MGOkI2EQEcVDp6Gs00su56gU7lF2HQTL8RyQ3W13rrw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "haql78ZZIYFacYLN8uPcZTg/R8JYTJfwmciCA1R4J3rEYFaIfWu7Ok1Pm/5Xr0grWyfdDzzBAe2L8xa0talNBQ"}}, "unsigned": {"age_ts": 1570043176637}} &eQ$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "544", "stream_ordering": 3004}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 0", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043176076, "hashes": {"sha256": "Cd6QisHIhKd+ZEiSKZkAxwL60QzJHVAFyds53WDYtzA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1o6RtSN6PjYigEGIazKpHM9Sz7Rot2F6nDD8EFsNRJOk/HFxUn6zpBjO5WrcMUNsyOURFykBf8kVm8LhbDRjCQ"}}, "unsigned": {"age_ts": 1570043176076}} .k9q? w E  } K   S9 ! 3 Y ' k _ -e1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM 1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA R1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 ,1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UB1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs _1e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gs1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM91e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw ,1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQh1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw 0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkA1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly01e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPoo1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 _1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod481e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0e1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eg1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgy .RM H C > 9 4/Ha fa \WRTQe !VhUAklonNaWKRnLkcr:localhost:8800$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0TQe !VhUAklonNaWKRnLkcr:localhost:8800$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcTQe !VhUAklonNaWKRnLkcr:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61ETQe !VhUAklonNaWKRnLkcr:localhost:8800$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50MTQe !ybXveQoxPVhjpKHAkG:localhost:8800$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54TQe !ybXveQoxPVhjpKHAkG:localhost:8800$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTATQe !ybXveQoxPVhjpKHAkG:localhost:8800$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsITQe !ybXveQoxPVhjpKHAkG:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkTQe !ybXveQoxPVhjpKHAkG:localhost:8800$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyETQe !ijOiudvuzOLNmgNKfG:localhost:8800$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4TQe !ijOiudvuzOLNmgNKfG:localhost:8800$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsTQe !ijOiudvuzOLNmgNKfG:localhost:8800$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdETQe !ijOiudvuzOLNmgNKfG:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SoTQe !ijOiudvuzOLNmgNKfG:localhost:8800$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQJ QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043198272DGmin:localhost:8800T Qe !iLHJbsFszubrnybDNz:localhost:8800$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7oT Qe !iLHJbsFszubrnybDNz:localhost:8800$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIJ QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195270GcoLc:localhost:8800J QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195269hcCzg:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043194268zlNeZ:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043193267ZyDyW:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043192266CXqej:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043191265cqITi:localhost:8800TQe !iLHJbsFszubrnybDNz:localhost:8800$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0TQe !iLHJbsFszubrnybDNz:localhost:8800$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugTQe !iLHJbsFszubrnybDNz:localhost:8800$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UTQe !iLHJbsFszubrnybDNz:localhost:8800$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8TQe !iLHJbsFszubrnybDNz:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YTQe !iLHJbsFszubrnybDNz:localhost:8800$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8T~Qe !hGsPmWXboxZZtOlsxY:localhost:8800$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMT}Qe !hGsPmWXboxZZtOlsxY:localhost:8800$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0T|Qe !hGsPmWXboxZZtOlsxY:localhost:8800$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2wT{Qe !hGsPmWXboxZZtOlsxY:localhost:8800$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUsTzQe !hGsPmWXboxZZtOlsxY:localhost:8800$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUgTyQe !hGsPmWXboxZZtOlsxY:localhost:8800$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-wwTxQe !hGsPmWXboxZZtOlsxY:localhost:8800$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-ETwQe !hGsPmWXboxZZtOlsxY:localhost:8800$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4TvQe !hGsPmWXboxZZtOlsxY:localhost:8800$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUTuQe !hGsPmWXboxZZtOlsxY:localhost:8800$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAsTtQe !hGsPmWXboxZZtOlsxY:localhost:8800$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9DkTsQe !hGsPmWXboxZZtOlsxY:localhost:8800$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYcTrQe !hGsPmWXboxZZtOlsxY:localhost:8800$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfcTqQe !hGsPmWXboxZZtOlsxY:localhost:8800$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRsTpQe !hGsPmWXboxZZtOlsxY:localhost:8800$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTsToQe !hGsPmWXboxZZtOlsxY:localhost:8800$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMTnQe !hGsPmWXboxZZtOlsxY:localhost:8800$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE >Kn %  0 *vDbh| WJ   } \ K Q 6  W % ] Q+j8>  w  E 21e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwL1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMq1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U|1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc?1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsf0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ(1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4K1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c*1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y 1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwp01e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo<1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU 51e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70V1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYg1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8)1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI 1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ 1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 %1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kO1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUD1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs ,1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0M1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs F1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kZ1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs J1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y ^1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc x1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg 61e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Ib1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY 1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMe0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIJ21e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQC1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs71e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis 1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwx1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4  oM -eQ$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "551", "stream_ordering": 3011}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043180526, "hashes": {"sha256": "lTdq/m45ThMw1pTQV0yvmXYD5Y4Xa9kvPVYreAB6bE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "15CoDBlMSmrkt9vbl9H6GRHqb3Od+W8Tyg7RfG5J1SjhhffOvqXVbYHccfGFurSSLaVlgyKAmRmMf1fyICWVBQ"}}, "unsigned": {"age_ts": 1570043180526}} ,eQ$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "550", "stream_ordering": 3010}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043179862, "hashes": {"sha256": "ULmKTrHAWNrN1RkGqgPAt18TkeH8M2OkzZTMcgdEvLs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nPyYXLUhF7aLRuMDcrdFXjHzO+T1shVTHgOQjMYe1+7EXGAaEQObMJvpUNRru8ZDSY7d2PkGDSJEEPUexERjBA"}}, "unsigned": {"age_ts": 1570043179862}} +eQ$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "549", "stream_ordering": 3009}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043179104, "hashes": {"sha256": "l85yBX5yH1sNXXILf6DjjkVgsafZVprXYdotXwK5vLI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QJfmZRsf4ZwYIq6Jw9dow/RmpA3YcOftlAYpRqQ0ckU/dvHkjPmuCHsfXNwzZgftkmsyFVkPSB+EHu4936s8BQ"}}, "unsigned": {"age_ts": 1570043179104}} *eQ$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "548", "stream_ordering": 3008}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043178529, "hashes": {"sha256": "4PTPh2JCzlO8KT7WWD/ea583f2/ybxCwgZNL5pu4rzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k4rzESAMUxEv+gkhDand4j7JSbeQXj3PrNy1mPLGKbgxfaOvI9nViBuXY48S0NyBz34Bd59S6EPjlcryEvhsDA"}}, "unsigned": {"age_ts": 1570043178529}} B    J  V $ E ] +c1 PX%8 j8 |] j+q? p>w v D11e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc^1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM y1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoG1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3EQ 1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc %1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs 01e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI 1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A 1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI \1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy900e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0u1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkd1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M+1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYU0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcE1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8I1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc41e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4f1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIs1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kQ1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgz1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkE1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wx1e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw p1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs \1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEo1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gj1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4EK21e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI N1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4-1e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnusn1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM51e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwY1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo $1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc]1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM|1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI8 $NC 8 - { " p  e n21&ti^S!VMeL$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjksha256MڛKS1NG@+ ]hr9VLeL$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEsha256?}m5qޚ\S{ȹN !VKeL$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4sha256Q'Zo 0 O.D;}QVJeL$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Lssha256/t*-#0/WN#*VIeL$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdEsha256/) W^pƔh"taR%VHeL$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797Sosha256@PВ$!TZqri^䟆e0.*VGeL$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQsha256bvX~?=K_HhQ4 d:e5LFQL$1570043198272DGmin:localhost:8800sha25619-m0r[@li[ki>@VEeL$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7osha256ubaP;V4 "9:6úVDeL$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIsha256k~BoFl\0zݻGϘ։n>LCQL$1570043195270GcoLc:localhost:8800sha256^w浯-f`Og?ٗ.\I| } oLBQL$1570043195269hcCzg:localhost:8800sha256_1@}`$EkU,ti:LAQL$1570043194268zlNeZ:localhost:8800sha256W!iڲk7ݳ6R"c:.L@QL$1570043193267ZyDyW:localhost:8800sha2565\kZO'_;9lcͅ.waL?QL$1570043192266CXqej:localhost:8800sha2568h>i·0SEY*3:X`L>QL$1570043191265cqITi:localhost:8800sha256r8jw{&:ooyr} _pV=eL$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0sha256}ti|JGwQI`yV<eL$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugsha256zEd#!w5dnV;eL$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0Usha256e8Vz UkVd.~`KEV:eL$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8sha256"SSW][ 8#EC` V9eL$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Ysha256;|) fa @DM]8Q_FV8eL$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8sha256lX/,:] ጢwcJauV7eL$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMsha256 |2 ]=T \!u SV6eL$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0sha256mN9˵I#5?ֵ ^ɡz\V5eL$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2wsha256ŷEz083k L2=B&՝nvPV/eL$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUsha256s,62'!^peV.eL$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAssha256JW? Fgr*aSe4Z` V-eL$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dksha256}!$$˨eދ0Ff)[e$~}}5gĵV+eL$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfcsha256M%UeNupM#.J7ZtхV*eL$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRssha256IFlnT@ ]@anon-20191002_181700-553:localhost:8829offlinem%L ] @anon-20191002_181700-548:localhost:8800offlinemۮEm.DmۮJ H2V$J8d ^ ~ L  R Xp> PvD j8| , &jr@  x F  *dJ21e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQH1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs:1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 %1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU B1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU <1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 11e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY)1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g`1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI61e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k<1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQZ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U L1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIc1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIg1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM^1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAT1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS401e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE >1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekn1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4/1e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE 1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA [1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE 1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8s/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAL1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukd1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs  oL1eQ$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "555", "stream_ordering": 3015}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 11", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043182479, "hashes": {"sha256": "cz+ApxgNl3yoLds098tBSXvpnGbMcCbijyBotFY6bO4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7O8GGElHBQl6H6YLqHdiwacmlettwXmS3mSFmVKvLoCHU9fnnkYj1eT6HvrFFTvlfuqJ496b4pl5G4lyA9avDg"}}, "unsigned": {"age_ts": 1570043182479}}0eQ$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "554", "stream_ordering": 3014}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043182004, "hashes": {"sha256": "6HNqrlz+TIIrXs1ZapZEcVMVHBfBgjaf+2UW//jNKoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rZrHc8OwsjAROzGW4CuNrrYSFhStjAgfTMtJtuWkyVMT5qeOe31TmdnaHGeNt/D85RFPxYj4+hdbHnCIch/OAQ"}}, "unsigned": {"age_ts": 1570043182004}} /eQ$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "553", "stream_ordering": 3013}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 9", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043181520, "hashes": {"sha256": "6dHpVj6+IUTHG+y/SOn+DqNF0VO5mQ4t6w95xGgpJu0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kd6migwD8aA3iAe4USeVJGg3BSTfIQHCh3lHxr0TXWlnDwo5rkd2Xv6CIXV2y5uZaAuhwdw5hzJK33c9WP6xBQ"}}, "unsigned": {"age_ts": 1570043181520}} .eQ$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "552", "stream_ordering": 3012}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 8"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043180996, "hashes": {"sha256": "O9ALeLOx+4mCNTVuYbL6XdLBkRu+kBCLkz7W6FMRX5E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TPg5U8OqoydDqhzuHhFz7MhQpetM1Y7CbVF6zsfcNtO8aUgbq5F7Jn8ViPMiiCpq6JiHryNnzfejCJHDYDKBAQ"}}, "unsigned": {"age_ts": 1570043180996}} D~z v r n j fb<8HD@<5eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:88004eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:88003eeQ$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800k2QQQ$1570043198272DGmin:localhost:8800$1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:88001eeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:88000eeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800k/QQQ$1570043195270GcoLc:localhost:8800$1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k.QQQ$1570043195269hcCzg:localhost:8800$1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k-QQQ$1570043194268zlNeZ:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k,QQQ$1570043193267ZyDyW:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k+QQQ$1570043192266CXqej:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800*eeQ$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800)eeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800(eeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800'eeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800&eeQ$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800%eeQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800$eeQ$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800#eeQ$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800"eeQ$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800!eeQ$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800 H2V$J8d ^ ~ L  R Xp> PvD j8| , &jr@  x F  *dJ21e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQH1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs:1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 %1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU B1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU <1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 11e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY)1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g`1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI61e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k<1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQZ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U L1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIc1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIg1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMX1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAN1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4*1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE >1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekn1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4/1e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE 1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA [1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE 1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8s/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAL1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukd1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs [\11ZZ//X-^Z1\3 f= f ;  d 9  b 7 ` 5 X-3\ ^ 3 *Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!itfjLXhEaORJLkbfVS:localhost:880044*Q!itfjLXhEaORJLkbfVS:localhost:880033*Q!itfjLXhEaORJLkbfVS:localhost:880022*Q!itfjLXhEaORJLkbfVS:localhost:880011*Q!itfjLXhEaORJLkbfVS:localhost:880000*Q!jomrpmwwQQtghscizn:localhost:8800))*Q!jomrpmwwQQtghscizn:localhost:8800((*Q!jomrpmwwQQtghscizn:localhost:8800''*Q!jomrpmwwQQtghscizn:localhost:8800&&*Q!jomrpmwwQQtghscizn:localhost:8800%%*Q!jomrpmwwQQtghscizn:localhost:8800$$*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o o*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n n*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m m(Q!jYzridjeihmwPBuwLb:localhost:8800NN(Q!jYzridjeihmwPBuwLb:localhost:8800MM(Q!jYzridjeihmwPBuwLb:localhost:8800LL(Q!jYzridjeihmwPBuwLb:localhost:8800KK(Q!jYzridjeihmwPBuwLb:localhost:8800JJ*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l l*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k k*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j j*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 i i*Q!jIfvTrwedrWLubsnlM:localhost:8800!!*Q!jIfvTrwedrWLubsnlM:localhost:8800  *Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!jveVPZSXJOJyNDebPO:localhost:8800LL*Q!jveVPZSXJOJyNDebPO:localhost:8800KK*Q!jveVPZSXJOJyNDebPO:localhost:8800JJ*Q!jveVPZSXJOJyNDebPO:localhost:8800II*Q!jveVPZSXJOJyNDebPO:localhost:8800HH*Q!jveVPZSXJOJyNDebPO:localhost:8800GG*Q!jveVPZSXJOJyNDebPO:localhost:8800FF*Q!jveVPZSXJOJyNDebPO:localhost:8800EE*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800(Q!jYzridjeihmwPBuwLb:localhost:8800YY(Q!jYzridjeihmwPBuwLb:localhost:8800XX(Q!jYzridjeihmwPBuwLb:localhost:8800WW(Q!jYzridjeihmwPBuwLb:localhost:8800VV(Q!jYzridjeihmwPBuwLb:localhost:8800UU(Q!jYzridjeihmwPBuwLb:localhost:8800TT(Q!jYzridjeihmwPBuwLb:localhost:8800SS(Q!jYzridjeihmwPBuwLb:localhost:8800RR(Q!jYzridjeihmwPBuwLb:localhost:8800QQ(Q!jYzridjeihmwPBuwLb:localhost:8800PP(Q!jYzridjeihmwPBuwLb:localhost:8800OO  nJ5eQ$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "559", "stream_ordering": 3019}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 15"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043184538, "hashes": {"sha256": "VCk/wFcPTdYNNsFoKBsEPsgIIV3PsO19zeNzSmkutXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vbfx7gN4/3uYgVovcaF89XGYkdr7zcfpETkWNw5w+H24vbNv4O/WxT0QamjFmIrNYBAG2UDOabEovQLf8Wk+Cg"}}, "unsigned": {"age_ts": 1570043184538}}4eQ$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "558", "stream_ordering": 3018}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 14", "msgtype": "m.text"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043184070, "hashes": {"sha256": "Y//Yx/2UO4Fv2lmJdLwGHAHiF1FNZ3K7BaQMQ32lTxE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BCFD+RHWMnneLTPgTMromKPSvqsAdjqQUvGXUJUpJhIduwOZigEjjw49u2WqXyx4fGYouB4mFILztI+53p66AA"}}, "unsigned": {"age_ts": 1570043184070}}3eQ$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "557", "stream_ordering": 3017}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 13", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043183579, "hashes": {"sha256": "7RH3lY2lkF976qU3IUYocNRhnGQgI3LPRnLVksBrfyQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gF9VEd0YMhLXKbVmG3XM/vOe9C6J6bPYSON+9qCAlXvgoClroV5z2lUwHwmbuESjcjaQCh6iaG8uud2Si8GDBw"}}, "unsigned": {"age_ts": 1570043183579}}2eQ$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "556", "stream_ordering": 3016}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 12", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043183020, "hashes": {"sha256": "007i5lu5/H0iuBQcIN9Q3LZ7ETBAhbCjIYu5rtRTuXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "03SIoKMRwZlNfxmDlQy/VRcTqrjC1vsc1Tvv3McONC1/aMEGF6+vQcJ2HvZF+MX5FNXZ+Xu5PfE18Ty3HswgBQ"}}, "unsigned": {"age_ts": 1570043183020}} #o R jB, J }  :,^AAjof{eQ%$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800content.bodybody1fzeQ%$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:8800content.bodyHellokqeQ%!$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800content.bodyMessage 10LyQ1%$1570043392317hujur:localhost:8800!5:localhost:42455content.bodyHelloixeQ%$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessage3iweQ%$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessage2hveQ%$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessagehueQ%$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessagehteQ%$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessageAseQ%K$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:8800content.bodySharing illegal content on this server is not permitted and rooms in violation will be blocked.reQ%I$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800content.nameContent Violation NotificationlgeQ%#$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800content.nameA room namerQeQ%/$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 12rPeQ%/$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 11rOeQ%/$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 10kfeQ%!$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800content.bodyMessage 10qNeQ%-$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 9qMeQ%-$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 8qLeQ%-$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 7qKeQ%-$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 6qJeQ%-$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 5qIeQ%-$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 4qHeQ%-$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 3qGeQ%-$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 2l\eQ%#$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800content.nameA room nameg[eQ%$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800content.bodysyncedgZeQ%$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800content.bodysyncedgYeQ%$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE!nfxDdcgDfooxyiAzaB:localhost:8800content.bodysynced`XQQ%$1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800content.bodymessage 2jWeQ%$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800content.bodymessage 1rVeQ%/$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 17rUeQ%/$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 16rTeQ%/$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 15rSeQ%/$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 14rReQ%/$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 13 |t |; m    A l  *eeQ$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800 ЁeeQ$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800 P33Q$14:localhost:42455$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800 r_3QQ$13:localhost:42455$1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 q@331$12:localhost:42455$11:localhost:42455!5:localhost:42455 P@331$11:localhost:42455$10:localhost:42455!5:localhost:42455 OlOOQ$157004173511wRnRr:localhost:8800$157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800kOMQ$157004173510EIiCi:localhost:8800$15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800jMMQ$15700417349vUcYV:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800jMMQ$15700417338MBNFd:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800jMMQ$15700417327EEUMr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800iMMQ$15700403175seOtB:localhost:8800$15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800'iMMQ$15700403164ksjyG:localhost:8800$15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800&iMMQ$15700403163gHYKC:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800%iMMQ$15700403152dWVZA:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800$iMMQ$15700403151blJmZ:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800#eeQ$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800܁eeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800 ( u nuv9eQay$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3023}{"auth_events": ["$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8"], "prev_events": ["$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8"], "type": "m.room.member", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-574", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-574:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043187519, "hashes": {"sha256": "QB2OWpHRQglCUNmZsbOzxEBMrGDMD0Mmfqzgz0vdJwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1FEwpwyXeR4emYhXqFADRjAloErYaEcPVg0oXfdyqUlcd5rY9zwF7pSdQKdUvadiC4T4WgLJzoqrhBuOXCnFAA"}}, "unsigned": {"age_ts": 1570043187519}}i8eQa_$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3022}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-574:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043186738, "hashes": {"sha256": "BE6knqu7Da0HjP6fG3Yt3pCAqzUdLdaIGViYmuoCQwM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KmGTNhmRJJqzr28+bc12UyHDh9gAHOh8B+51qa8kaNHEhPw8K989Yj0GKy9I79jmXNKJILuR/t47fa8OVniHAw"}}, "unsigned": {"age_ts": 1570043186738}}7eQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "561", "stream_ordering": 3021}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 17", "msgtype": "m.text"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043185605, "hashes": {"sha256": "8Zisz6NrxbAXnGaFsuWMxQQYW3fgpaTisCR1KYw+lLk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2yHOs7g7z96n0g13XaPfPg/7Vy5Bly+VaMBmgxqh+3a/i5Lpx0iTCg2mfT7yV5R31WvoDKJ5Dmp372r6EXzZBA"}}, "unsigned": {"age_ts": 1570043185605}}6eQ$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "560", "stream_ordering": 3020}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 16"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043185020, "hashes": {"sha256": "LGIIDaDkEOyI26/vA3zibjBX1zlhmq/JhDxQaGXQmVY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HpIthSITbqTqu335+l9LzswxA/toubSPXrtBqU9Dk4zlou4sT5uX9sqSiP6GAYat4BRJTe5pQP/nVkUW2DZ0Cg"}}, "unsigned": {"age_ts": 1570043185020}} [ k  n < Vg*4>&de3Q ]$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIm.room.power_levels!ybXveQoxPVhjpKHAkG:localhost:8800mm@anon-20191002_181700-577:localhost:8800 ce'Q ]$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkm.room.member!ybXveQoxPVhjpKHAkG:localhost:8800m m|@anon-20191002_181700-577:localhost:8800b e'Q  ]$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEm.room.create!ybXveQoxPVhjpKHAkG:localhost:8800m mb@anon-20191002_181700-577:localhost:8800,ae?Q ]$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4m.room.history_visibility!ijOiudvuzOLNmgNKfG:localhost:8800mm)@anon-20191002_181700-576:localhost:8800$`e/Q ]$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Lsm.room.join_rules!ijOiudvuzOLNmgNKfG:localhost:8800m m @anon-20191002_181700-576:localhost:8800&_e3Q ]$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdEm.room.power_levels!ijOiudvuzOLNmgNKfG:localhost:8800mm@anon-20191002_181700-576:localhost:8800 ^e'Q ]$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797Som.room.member!ijOiudvuzOLNmgNKfG:localhost:8800m+m@anon-20191002_181700-576:localhost:8800] e'Q  ]$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQm.room.create!ijOiudvuzOLNmgNKfG:localhost:8800mm@anon-20191002_181700-576:localhost:8800\Q)Q ]$1570043198272DGmin:localhost:8800m.room.message!hrhDJbmXvXBizKoiiK:localhost:8800mkmo@anon-20191002_181700-574:localhost:8800&[e3Q ]$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7om.room.power_levels!iLHJbsFszubrnybDNz:localhost:8800mm@anon-20191002_181700-574:localhost:8800#Ze-Q ]$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIm.room.tombstone!iLHJbsFszubrnybDNz:localhost:8800mm@anon-20191002_181700-574:localhost:8800YQ/Q ]$1570043195270GcoLc:localhost:8800m.room.join_rules!hrhDJbmXvXBizKoiiK:localhost:8800mm@anon-20191002_181700-574:localhost:8800"XQ?Q ]$1570043195269hcCzg:localhost:8800m.room.history_visibility!hrhDJbmXvXBizKoiiK:localhost:8800m{m@anon-20191002_181700-574:localhost:8800WQ3Q ]$1570043194268zlNeZ:localhost:8800m.room.guest_access!hrhDJbmXvXBizKoiiK:localhost:8800mm@anon-20191002_181700-574:localhost:8800VQ3Q ]$1570043193267ZyDyW:localhost:8800m.room.power_levels!hrhDJbmXvXBizKoiiK:localhost:8800mcm@anon-20191002_181700-574:localhost:8800UQ'Q ]$1570043192266CXqej:localhost:8800m.room.member!hrhDJbmXvXBizKoiiK:localhost:8800mhm@anon-20191002_181700-574:localhost:8800T Q'Q  ]$1570043191265cqITi:localhost:8800m.room.create!hrhDJbmXvXBizKoiiK:localhost:8800m m{@anon-20191002_181700-574:localhost:8800!Se)Q ]$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0m.room.message!iLHJbsFszubrnybDNz:localhost:8800m8mB@anon-20191002_181700-574:localhost:8800,Re?Q ]$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugm.room.history_visibility!iLHJbsFszubrnybDNz:localhost:8800mm}@anon-20191002_181700-574:localhost:8800$Qe/Q ]$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0Um.room.join_rules!iLHJbsFszubrnybDNz:localhost:8800mzmH@anon-20191002_181700-574:localhost:8800&Pe3Q ]$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8m.room.power_levels!iLHJbsFszubrnybDNz:localhost:8800m0mu@anon-20191002_181700-574:localhost:8800 Oe'Q ]$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Ym.room.member!iLHJbsFszubrnybDNz:localhost:8800m?m@anon-20191002_181700-574:localhost:8800N e'Q  ]$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8m.room.create!iLHJbsFszubrnybDNz:localhost:8800m2mν@anon-20191002_181700-574:localhost:8800!Me)Q ]$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mm@anon-20191002_181700-573:localhost:8800 Md0j@ d 0  j 6  f 2 b . ^ *Z&V"RN~J zFvBr>1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1qe$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1 e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1 e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1 e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1 e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1 e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1ae$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1`e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1_e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1^e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1]e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1\e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1[e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1Ze$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1Ye$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1Xe$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1We$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1Ve$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1Ue$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1Te$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1Se$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1Re$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1Qe$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1Pe$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1Oe$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1Ne$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1Me$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1Le$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1Ke$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1Je$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1Ie$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1He$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1Ge$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1Fe$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1Ee$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1De$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1Ce$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1Be$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1Ae$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1@e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1?e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1>e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1=e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1<e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1;e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 1:e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 19e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 18e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 17e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ '6Q$1570043198272DGmin:localhost:8800 15e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 14e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI '3Q$1570043195270GcoLc:localhost:8800 '2Q$1570043195269hcCzg:localhost:8800 '1Q$1570043194268zlNeZ:localhost:8800 '0Q$1570043193267ZyDyW:localhost:8800 '/Q$1570043192266CXqej:localhost:8800 '.Q$1570043191265cqITi:localhost:8800 1-e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1,e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1+e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 1*e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1)e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1(e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1'e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM ?DT Y  a 8 ^ " n 2m1}9_#o3CSc's7# 1 !9:localhost:42455public9 Q !SnROoiDBapNNtMmKnT:localhost:8800publicshared9 Q !uGpSboYkgxVNOqNeUG:localhost:8800publicshared9 Q !DSFBpkqfnvBQbGoMUK:localhost:8800publicshared9 Q !ZKPJvrCZHMHPEksYDc:localhost:8800publicshared9 Q !PgNDjhhIBAXKryuGKy:localhost:8800publicshared9 Q !vnFXnkCSfTbsSNKrtg:localhost:8800publicshared9 Q !jRuDexjFzIDOKbwDJQ:localhost:8800publicshared9 Q !KcXNWNfbLcYsBKZHIp:localhost:8800publicshared9 Q !dBfASZrfiFeSKTjYJm:localhost:8800publicshared9 Q !taANXnGBZntAreRurn:localhost:8800publicshared9 Q !tcYctHPiaKzsKgrXlU:localhost:8800publicshared9 Q !drnXStKXkNQkouqUAg:localhost:8800publicshared9 Q !zScKnCZCFPIIodAiQj:localhost:8800publicshared9 Q !LazKtcHZriKzCvvGwV:localhost:8800publicshared9 Q !lEJUJZxqZPKZetemiR:localhost:8800publicshared9 Q !bLWyXaXdvUhdSAooUz:localhost:8800publicshared9 Q !YmRuIWixFpaqEeDQLZ:localhost:8800publicshared9~ Q !bjdLCdBwkKaihRIRFG:localhost:8800publicshared9} Q !qzrZzAieCgGSbpKOQR:localhost:8800publicshared9| Q !qzurjQHmiriwjaUMhO:localhost:8800publicshared9{ Q !TSFcaXDBqrCREHRHxv:localhost:8800publicshared9z Q !AOEdqVKPFddrqbKPOL:localhost:8800publicshared9y Q !wBBQYEPjQGnoAzDpEu:localhost:8800publicshared9x Q !oZGRyBAkNDrEeiAqWL:localhost:8800publicshared#w 1 !6:localhost:42455public9v Q !cRbfhxZdPstEsPGPAu:localhost:8800publicjoined9u Q !sAWFpvSUPExZLVcPEd:localhost:8800publicinvite9t Q !YpcmaMNMzjvtgYtrli:localhost:8800publicsharedAs Q) !PzoqoNRxeEEqiLyVSV:localhost:8800publicworld_readable9r Q !uPxXJHJyFQwvpQLZNs:localhost:8800publicshared9q Q !UluPYLGXtInKDTjRzp:localhost:8800publicshared9p Q !QkkdnzvdrjHaFGkzMt:localhost:8800publicshared9o Q !DuqHkpTfWCUblSrxQj:localhost:8800publicshared9n Q !NanhNmCnVVpmZRJrTF:localhost:8800publicshared#m 1 !5:localhost:42455public`l Q[ !sqkBzbHHJOTNWwynqV:localhost:8800#test-20191002_181700-47:localhost:8800publicshared9k Q !qInWQPtNQfBFoVzUtP:localhost:8800publicshared9j Q !FZOLkaLbBpaibrbHZx:localhost:8800publicshared9i Q !QxqzQoEBIZhmzHIGrl:localhost:8800publicshared9h Q !fDISaqNBhlOwherxSt:localhost:8800publicshared9g Q !yAfsSyqpJWFnkXQFJL:localhost:8800publicshared9f Q !AYFqrmxwClFQlcTTYq:localhost:8800publicshared9e Q !pHoEnhQYhwlbJXqKQE:localhost:8800publicshared#d 1 !0:localhost:42455public9c Q !OCEHAjcOXWNyWIESIS:localhost:8800publicshared`b Q[ !qjijQBfMwsCPTVgKPm:localhost:8800#test-20191002_181700-46:localhost:8800publicshared`a Q[ !kjjUsMowsioSQRIJeg:localhost:8800#test-20191002_181700-45:localhost:8800publicshared`` Q[ !UTAORDrNxIbSlGByAp:localhost:8800#test-20191002_181700-44:localhost:8800publicsharedW_ QI !MXhwoqNXvexeDDSOZT:localhost:8800Content Violation NotificationpublicsharedT^ QC !zqQJfFCRlSEDPKlQPy:localhost:8800#__ANON__-25:localhost:8800publicsharedD] Q# !JnAKXOrlyisFUpgJPw:localhost:8800A room namepublicsharedD\ Q# !XRAZJeoZBhGeHKKjaG:localhost:8800A room namepublicshared9[ Q !GwLdUoDplyVUogXDzu:localhost:8800publicshared9Z Q !nfxDdcgDfooxyiAzaB:localhost:8800publicshared9Y Q !XGAmnfaVvjDtQJuufa:localhost:8800publicshared9X Q !OXpGdKbowFUTChPdmF:localhost:8800publicshared9W Q !XUbDuPDiMTXJZDyAPc:localhost:8800publicshared9V Q !VhUAklonNaWKRnLkcr:localhost:8800publicshared9U Q !ybXveQoxPVhjpKHAkG:localhost:8800publicshared9T Q !ijOiudvuzOLNmgNKfG:localhost:8800publicsharedAS Q !hrhDJbmXvXBizKoiiK:localhost:8800publicsharedcan_join9R Q !iLHJbsFszubrnybDNz:localhost:8800publicshared #q) d }  S  $HS} @hm+ jQ']e !OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIciQ' e !OXpGdKbowFUTChPdmF:localhost:8800m.room.create$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwohQ? e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibility$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19EggQ/ e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rules$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkifQ3 e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk eQ']e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUcdQ' e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.create$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQocQ? e !VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibility$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQgbQ/ e !VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rules$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0iaQ3 e !VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc `Q']e !VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Ec_Q' e !VhUAklonNaWKRnLkcr:localhost:8800m.room.create$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Mo^Q? e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibility$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54g]Q/ e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rules$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAi\Q3 e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI [Q']e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkcZQ' e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.create$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEoYQ? e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibility$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4gXQ/ e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rules$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsiWQ3 e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE VQ']e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SocUQ' e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.create$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ_TQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels$1570043197271EnBnz:localhost:8800iSQ3 e !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o]RQ/ Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rules$1570043195270GcoLc:localhost:8800eQQ? Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility$1570043195269hcCzg:localhost:8800_PQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access$1570043194268zlNeZ:localhost:8800_OQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels$1570043193267ZyDyW:localhost:8800NQ']Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$1570043192266CXqej:localhost:8800YMQ' Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.create$1570043191265cqITi:localhost:8800fLQ- e !iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIoKQ? e !iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibility$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayuggJQ/ e !iLHJbsFszubrnybDNz:localhost:8800m.room.join_rules$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UiIQ3 e !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 HQ']e !iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y  =eQs$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "txn_id": "562", "stream_ordering": 3027}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug"], "type": "m.room.message", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"msgtype": "m.text", "body": "message 1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043191096, "hashes": {"sha256": "bVzzqBgAjkNj91V2InSGTIUhg3rXc9DatMdHWYCrB7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+zeYkj9b/oEzMTeRsGJHQorN6Qad/jobqYf5+T6gDdOeDalFlRZnwltJefLkCnvGJnMDiWeaSQXn3lpNLmOBCQ"}}, "unsigned": {"age_ts": 1570043191096}}<eQa$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3026}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U"], "type": "m.room.history_visibility", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043189757, "hashes": {"sha256": "3gKu/VllR1v2tYL9yluc9fDHnqhPRyMCf/cN+W9zTvc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P+Z6uL+pGKFmX9yUP96OMojMxFsiFg3q2c96PwkK+fMdfupo1XkvXGaxw1cEya0WEmx9dN17DSyOLAp7eivsDA"}}, "unsigned": {"age_ts": 1570043189757}}t;eQau$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3025}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8"], "type": "m.room.join_rules", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043189114, "hashes": {"sha256": "C7rhaxOWxAoHrk7lJ74nWthIOXk6PybK5dzOCLbac94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCHULm9CGXLzGx+aCuG1AUVZxqQ7+9o9GY1LAp6k+luDxffKbwDivL8q5IE1xB6EBVIbrQAJLn8ofTYDh9VXCA"}}, "unsigned": {"age_ts": 1570043189114}}k:eQac$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3024}{"auth_events": ["$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "type": "m.room.power_levels", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"users": {"@anon-20191002_181700-574:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043188272, "hashes": {"sha256": "XyWn4p7Z8owR4JnDSEWMgaYqFK+QNQobQlCXteD2yZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0ELOD0ApYZjXQqB4cWRR7+61PryqIz0W69ZQ4NAL6iUnkAfpZMMjK3QuVJ15hBL8ABcZpg8u3dML/S4vFZ8yDA"}}, "unsigned": {"age_ts": 1570043188272}} 8l D `8]c!E@anon-20191002_181700-583:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAoZQYHHUGDME127.0.0.1Perl + Net::Async::HTTP/0.44mހb]c!E@anon-20191002_181700-582:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-goWSKNBNWTAR127.0.0.1Perl + Net::Async::HTTP/0.44ml]c!E@anon-20191002_181700-581:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7QoRYCHJSFPQZ127.0.0.1Perl + Net::Async::HTTP/0.44mi[]c!E@anon-20191002_181700-580:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAoCRNUPLGBOP127.0.0.1Perl + Net::Async::HTTP/0.44mU]c!E@anon-20191002_181700-579:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewoLLEXLPJZBR127.0.0.1Perl + Net::Async::HTTP/0.44m?]c!E@anon-20191002_181700-578:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwoJVKVSBXCSN127.0.0.1Perl + Net::Async::HTTP/0.44m+u]c!E@anon-20191002_181700-577:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQoMKYGCGNVJB127.0.0.1Perl + Net::Async::HTTP/0.44mă]c!E@anon-20191002_181700-576:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAoOMBHTKYAAU127.0.0.1Perl + Net::Async::HTTP/0.44mC]c!E@anon-20191002_181700-575:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7AoNDSWGGEQOX127.0.0.1Perl + Net::Async::HTTP/0.44mr]c!E@anon-20191002_181700-574:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6AoHLLZYJLEQN127.0.0.1Perl + Net::Async::HTTP/0.44m 8 ng8+@QQay $1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3030}{"auth_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "type": "m.room.power_levels", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"users": {"@anon-20191002_181700-574:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043193267ZyDyW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043193443, "hashes": {"sha256": "WJj9XuU9KOiNv7ayMdfvpvwqFIRjmDZLGwqTj8GHG1Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7p19vXGeieTqkKrdhcYKGZEiXBkiZAwsyeUgcYW+EpQh2jLLtC39Ay/xX4szwPVCNPtBqe4Al6JBcfpbZALDw"}}, "unsigned": {"age_ts": 1570043193443}}?QQa) $1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3029}{"auth_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}]], "prev_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}]], "type": "m.room.member", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-574", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-574:localhost:8800", "event_id": "$1570043192266CXqej:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043192680, "hashes": {"sha256": "axQNML2KJ82FRHP+Y2NlsxZdFfsvqs+YgWLjb92HAsg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/54pXvEmOW0wTBCL/duLsoO7VvsD642id06esxMDYkuDD9oZcb29oQpdS5JY4kePKv3oZoS5wL0DAHRTSf8+Cw"}}, "unsigned": {"age_ts": 1570043192680}}>QQa? $1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3028}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "event_id": "$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI"}, "creator": "@anon-20191002_181700-574:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043191265cqITi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043191819, "hashes": {"sha256": "WJkesVc6ArXtdfmklqxgDPJIKVmDxTaOE28M0cG65L8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C9KW25w4Wk8FkS1F18JaPNAx+Ev2r8V0872hqfM+cNkmylEm6937ulFQc4AxUZUDOTYDUk2hGbSEV6YqKaI+CA"}}, "unsigned": {"age_ts": 1570043191819}} "880029M anon localhost -qT)}R' { P % y N # w L ! u J  s H q*Q!FklhVuCInffbDxunWv:localhost:880038*Q!FklhVuCInffbDxunWv:localhost:880027*Q!FklhVuCInffbDxunWv:localhost:880016*Q!FklhVuCInffbDxunWv:localhost:880005*Q!FklhVuCInffbDxunWv:localhost:8800/4*Q!FklhVuCInffbDxunWv:localhost:8800.3*Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800 #S:p l  u  * 3 [?Bdm"+Sh Q/ e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rules$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0j Q3 e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA Q']e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Yd Q' e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.create$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwp Q? e !OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibility$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYhQ/ e !OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rules$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wjQ3 e !OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 Q']e !OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIdQ' e !OXpGdKbowFUTChPdmF:localhost:8800m.room.create$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwpQ? e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibility$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19EhQ/ e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rules$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkjQ3 e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk Q']e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUdQ' e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.create$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQpQ? e !VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibility$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQh~Q/ e !VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rules$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0j}Q3 e !VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc |Q']e !VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Ed{Q' e !VhUAklonNaWKRnLkcr:localhost:8800m.room.create$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50MpzQ? e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibility$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54hyQ/ e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rules$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAjxQ3 e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI wQ']e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkdvQ' e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.create$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEpuQ? e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibility$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4htQ/ e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rules$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsjsQ3 e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE rQ']e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SodqQ' e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.create$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQpQ3 ee !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8goQ- e !iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI^nQ/ Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rules$1570043195270GcoLc:localhost:8800fmQ? Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility$1570043195269hcCzg:localhost:8800`lQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access$1570043194268zlNeZ:localhost:8800`kQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels$1570043193267ZyDyW:localhost:8800  gCQQaq $1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3033}{"auth_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}], ["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043195269hcCzg:localhost:8800", {"sha256": "X5mWEsQx30CHfWAVJEVrju5VLHSSadX8yfmctRG5xDo"}]], "type": "m.room.join_rules", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043195270GcoLc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043195787, "hashes": {"sha256": "Kj1i2rOH9tK7x3+Twv1n7rzNP1W9JhcHj329ac74DgA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YCHIl80N+ieyVaq6EtZaOds1UlUVM10HZXgV0y5SYBygm6neLLGxeRSHc/pJee85BHvi+unEKDqTeDTMgyxJBg"}}, "unsigned": {"age_ts": 1570043195787}}xBQQa $1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3032}{"auth_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}], ["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043194268zlNeZ:localhost:8800", {"sha256": "V5Ih+hiMaZIctBTGHO6Z2rJrN92zNotSuCJjOhf0oS4"}]], "type": "m.room.history_visibility", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043195269hcCzg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043195003, "hashes": {"sha256": "gjP2WD6aMhGlffZm088vN4CK6S9K6TeCIIxuE3vGBno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WJasFD5I3e5MpoWTSThsly3OFy3SBZtng6mtL+FTVMuoO1RYIs7SS6xMMiS7J4Umaix0q8In6gkcUrCSsJtkBg"}}, "unsigned": {"age_ts": 1570043195003}}nAQQa $1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3031}{"auth_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}], ["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}]], "prev_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}]], "type": "m.room.guest_access", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043194268zlNeZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043194302, "hashes": {"sha256": "PoyKQ953jZWJE4p85KSqUcBXuBHMriZcUIRFQiWPnuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GodnPPLB9FkpQ21rCKetsn/smRlqWYS2jKR9LPSA25/cVn95MzbVVxLQ2GO7Dog6N8fEPeRpQt7WTf5VbqzDBQ"}}, "unsigned": {"age_ts": 1570043194302}} A8l3 OQq4  T   /  1 S R o 6m Qm 7n4 5 P 8e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAsha256 ^8e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgsha256 Y8e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQsha256Y7e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUsha256]8e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMsha2568e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Ysha256H8e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMsha256A8e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAsha256 n8e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Isha256B 3$90:localhost:42455sha256 8e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38Esha256 48e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwsha2568e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cEsha2568e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMsha2568e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wsha2568e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwsha2568e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4sha2568e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8sha256l8e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAAsha2568e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQsha256O8e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEsha256H8e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4sha2568e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4sha2568e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0sha2568e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIsha2568e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUsha256r8e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucsha2568e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMssha2568e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIsha2568e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIsha2568e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwsha256 `8e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4sha25658e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcsha256 58e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQsha256 8e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Msha256s8e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0sha256 8e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIsha2568e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUsha2568e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ysha2568e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4sha256 48e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wsha256 08e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIosha256 "9$91_m1:localhost:42455sha256 8e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMsha2568e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3ksha256N8e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjksha256 8e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Qsha256W #;$92_sf1:localhost:42455sha256 8e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEsha256 p #;$96_sf1:localhost:42455sha256 "9$95_m1:localhost:42455sha256 3$94:localhost:42455sha256 #;$93_sf2:localhost:42455sha256 8e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYsha256B #;$97_sf2:localhost:42455sha256 8e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAsha256a8e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgsha256 "9$98_m2:localhost:42455sha256 8e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUsha256 8e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtksha256 8e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIsha2568e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMsha256]8e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8sha256+8e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48sha256 *8e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMsha256 #<k z  8 G u  Bnw;Dl{9aeQ' $ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800m.room.createmeQ? $eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibilityeeQ/ $1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rulesgeQ3 $JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels eQ']$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800aeQ' $grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800m.room.createmeQ? $vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibilitye eQ/ $cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rulesg eQ3 $PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels eQ']$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800a eQ' $BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800m.room.createm eQ? $IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibilityeeQ/ $h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rulesgeQ3 $T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels eQ']$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800aeQ' $yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.createmeQ? $eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibilityeeQ/ $pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rulesgeQ3 $eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels eQ']$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800aeQ' $13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800m.room.createmeQ? $DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibilitye~eQ/ $wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rulesg}eQ3 $ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels |eQ']$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800a{eQ' $P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800m.room.createmzeQ? $81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibilityeyeQ/ $L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rulesgxeQ3 $LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels weQ']$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800aveQ' $YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800m.room.creategueQ3 $G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800m.room.power_levelsdteQ- $E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone[sQQ/ $1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rulescrQQ? $1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility  ?\xFQQo $1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "txn_id": "563", "stream_ordering": 3036}{"auth_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}], ["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043195270GcoLc:localhost:8800", {"sha256": "F/u1XneR5rWvLa5mYLT3rk9nFj8A2ZcuXEl8IH0Kb5E"}]], "type": "m.room.message", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"msgtype": "m.text", "body": "message 2"}, "depth": 7, "prev_state": [], "event_id": "$1570043198272DGmin:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043198315, "hashes": {"sha256": "AojEZYXDUyemw1BkzMAL8sKj69hyqps4V4Y0Kd6jC9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xvpx3VtEkSSSZ10RI8cUW5d6Ei8cGMzmiuCI0LkGem0cplShhSiRCo/HphrI4sA/FH0iL+qN7A6h33WecIJ6Cw"}}, "unsigned": {"age_ts": 1570043198315}}_EeQaK$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3035}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI"], "type": "m.room.power_levels", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"users": {"@anon-20191002_181700-574:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043197087, "hashes": {"sha256": "RsMAsmkPAeEJi7cmFhWzJsyN7CtjN8bBazFIPAvNtWQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zn5hCyA5RkcsiS5s62Rlz7kOTKWugvr8kOlBpyLsIix6deUyvPdhf93pkBSBzdRQbpfQRijaa9k0WksWfzYKDQ"}}, "unsigned": {"age_ts": 1570043197087, "replaces_state": "$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8"}}=DeQa$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3034}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0"], "type": "m.room.tombstone", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!hrhDJbmXvXBizKoiiK:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043191713, "hashes": {"sha256": "4bdp9PSk0uyI4ZOYDDKO0aG3NzbkSkbX2nCSiEUy7u4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LpsaIr1HFeOuO4T2TmqiRhOcY3s7RzMOUwmv2oP4rFjsDgqWYjhKpCWFaEYn3bmGpfw0vNXtpQiQ8fEus4PEAw"}}, "unsigned": {"age_ts": 1570043191713}} a} { y w u sqomkigeca~xeeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800~weeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~veeQ$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~ueeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800~teeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~seeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800~reeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800~qeeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~peeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800~oeeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800~neeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~meeQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~leeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800~keeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~jeeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800~ieeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800~heeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~geeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800~feeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800~eeeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~deeQ$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~ceeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800~beeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~aeeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800~`eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800~_eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~^eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800~]eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800~\eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~[eeQ$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~ZeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800   *tJeQau$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3040}{"auth_events": ["$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE", "$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ", "$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "prev_events": ["$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE"], "type": "m.room.join_rules", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043202200, "hashes": {"sha256": "clwFmEBeaRBBOrNQeQna8flWnJO+FOn23COTTQ9/io0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y/pgPxQlm7lHsrq2Z49qC2tr9F6z4MyFa//4Q9uOevQP4IMyY25GuSuCV9dOxOgHH5+iwpvedoGqaUzABhoMAw"}}, "unsigned": {"age_ts": 1570043202200}}kIeQac$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3039}{"auth_events": ["$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ", "$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "prev_events": ["$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "type": "m.room.power_levels", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"users": {"@anon-20191002_181700-576:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043201434, "hashes": {"sha256": "piUOXH40NVRL2yqUzeN3CBIrd60eyJFBtbQAqrQgL54"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/nQRQqpqMuNtqNLdL9qt8sb9Acy3fHd3wH9b64WcUE1KB3M3tgncTo95utCAWExMPeX1IYqgslba6U+tnTCqDg"}}, "unsigned": {"age_ts": 1570043201434}}vHeQay$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3038}{"auth_events": ["$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ"], "prev_events": ["$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ"], "type": "m.room.member", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-576", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-576:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043200811, "hashes": {"sha256": "qpu6WMh/1wYY4dyXfBRfGSjef576kv1OdKRrqEk01fQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JzXWB91W6JnA2lsfK/18PdvbLhaWHLyJ4Wg/PK7ie8D3tf9vIZ3s7vl+81kBy9RwFSFRogHuojR2PoT/kQwZAQ"}}, "unsigned": {"age_ts": 1570043200811}}iGeQa_$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3037}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-576:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043199897, "hashes": {"sha256": "kAKIpvg7T4CgpkT1ywpFsOsproKUGdWfEYctM+rp81k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZHLaOWKMIEkHhtwEBaZ9PG8jDPh/y6LZA19HNU3HTVop3Dzf9eEkEyTHS2acDECK4p4FV1IMTCTAA8P/rfPDg"}}, "unsigned": {"age_ts": 1570043199897}} 9r  V :slPC7 e]]Q=$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y@anon-20191002_181700-612:localhost:8800@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800joinanon-20191002_181700-612C6 e]]Q=$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI@anon-20191002_181700-610:localhost:8800@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800joinanon-20191002_181700-610C5 e]]Q=$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE@anon-20191002_181700-609:localhost:8800@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800joinanon-20191002_181700-609C4 e]]Q=$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800joinanon-20191002_181700-605C3 e]]Q=$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0@anon-20191002_181700-608:localhost:8800@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800joinanon-20191002_181700-608,2 e]]Q $HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800leaveC1 e]]Q=$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc@anon-20191002_181700-606:localhost:8800@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800joinanon-20191002_181700-606C0 e]]Q=$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8@anon-20191002_181700-607:localhost:8829@anon-20191002_181700-607:localhost:8829!zqQJfFCRlSEDPKlQPy:localhost:8800joinanon-20191002_181700-607E/ e]]Q=$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0@anon-20191002_181700-607:localhost:8829@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800inviteanon-20191002_181700-607C. e]]Q =$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800joinanon-20191002_181700-605C- e]]Q=$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs@anon-20191002_181700-603:localhost:8800@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800joinanon-20191002_181700-603C, e]]Q=$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U@anon-20191002_181700-601:localhost:8800@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800joinanon-20191002_181700-601C+ e]]Q=$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ@anon-20191002_181700-584:localhost:8800@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800joinanon-20191002_181700-584C* e]]Q=$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og@anon-20191002_181700-583:localhost:8800@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800joinanon-20191002_181700-583C) e]]Q=$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y@anon-20191002_181700-582:localhost:8800@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800joinanon-20191002_181700-582C( e]]Q=$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI@anon-20191002_181700-580:localhost:8800@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800joinanon-20191002_181700-580C' e]]Q=$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU@anon-20191002_181700-579:localhost:8800@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800joinanon-20191002_181700-579C& e]]Q=$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E@anon-20191002_181700-578:localhost:8800@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800joinanon-20191002_181700-578C% e]]Q=$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk@anon-20191002_181700-577:localhost:8800@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800joinanon-20191002_181700-577C$ e]]Q=$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So@anon-20191002_181700-576:localhost:8800@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800joinanon-20191002_181700-576  w kNeQac$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3044}{"auth_events": ["$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE", "$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "prev_events": ["$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "type": "m.room.power_levels", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"users": {"@anon-20191002_181700-577:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043206803, "hashes": {"sha256": "rrxOrxtUwQwIm0bOETNlTyyEPeCWEngrdJ1JQRipqRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dl3MyAAiQDgKQExGA9r8yA9kbsTaUYZxVGvjpLwdH2OJJgEqgBAlseCF0ws6Y5fAGIVhrPMSeLTu5PdZ2bVuBQ"}}, "unsigned": {"age_ts": 1570043206803}}vMeQay$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3043}{"auth_events": ["$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE"], "prev_events": ["$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE"], "type": "m.room.member", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-577", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-577:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043206153, "hashes": {"sha256": "UK5aikUFF1pckEIPSRll+XEAZpL5g5r33eFx/Dqq3iU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pfow8UgdbwD+DeHDqtQD+qkl7+H975L5zZNO8N9LGNWL3ECnsYClmOs0ScneSWQWiSwjILZQK7Ji3enD3hlyBQ"}}, "unsigned": {"age_ts": 1570043206153}}iLeQa_$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3042}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-577:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043205131, "hashes": {"sha256": "nmfQ6Z16wUV9sRsm7u7yvmACHEeGMY+LtXcqk8XkCzk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wp/dB9nh1UZrXzjpNIhXOVJSmHn+qmIHeS1lL+rBNmk4UhncUHtpF9AzqKZipJzgM8EkCm5WyZzDkQx1s8AbCQ"}}, "unsigned": {"age_ts": 1570043205131}}KeQa$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3041}{"auth_events": ["$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE", "$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ", "$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "prev_events": ["$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls"], "type": "m.room.history_visibility", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043203074, "hashes": {"sha256": "ZjJxZ1tVb3/p+zBrVFoqjDYTsyep//lQbvNFrIhUx58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HrI6rzjV5nnX0rO6Ll8hK24y7TZ5xsG03kC46RxVwX1q1CTmAQl6ElBnUuPfL0Imyg9X3+Xcrok/3zNLjrsXBw"}}, "unsigned": {"age_ts": 1570043203074}} s 4 h 6 d]c@anon-20191002_181700-609:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5KR0pKaXlXVTJZTjpfeVIKMDAyZnNpZ25hdHVyZSDu25ZQUNrElC1w8D-7akohXJPWdBEgbR0gt_QpQE4f6Ao127.0.0.13d]c@anon-20191002_181700-610:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo3Mi5lYlV2a2tfX1dUZnIKMDAyZnNpZ25hdHVyZSCn9NKRbpbNtymqTeTuS2KkH7b7NnoLOyqZngASnYZkXgo127.0.0.14^Y]@anon-20191002_181700-5:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwK127.0.0.1a[a@anon-20191002_181700-60:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCg127.0.0.13d]c@anon-20191002_181700-608:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteSHZmWnc4b3BCanVDOGEKMDAyZnNpZ25hdHVyZSAJXE0br2225NWIy-FWwqW1eaYEjTysP1DwchdfqEdGbwo127.0.0.12d]c@anon-20191002_181700-605:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJ0OD1CbCZQVXRZUEYuRF4KMDAyZnNpZ25hdHVyZSAR-RXomZfd9jfoSoaVI6pRsyqBlKwUmG561zUi-FIt2Qo127.0.0.10d]c@anon-20191002_181700-604:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDd2Z3M4VUdpZFk9PVQqb0QKMDAyZnNpZ25hdHVyZSD39rZw4ejANsei46y5Hswz78deevadOTxBob0SNf_4oAo127.0.0.11d]c@anon-20191002_181700-603:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERTTWUxSF9aWGY3dSNmMG8KMDAyZnNpZ25hdHVyZSA6nMib2JiEAnfufACgSZiuu29stAm69nlXei1bDKQbHgo127.0.0.1.d]c@anon-20191002_181700-602:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQmbiswUTlOdm09bnE7R0YKMDAyZnNpZ25hdHVyZSAu3jjIIkaMnRtR2dDenDeOtlu8Y3BzyovqanzgrC0ccgo127.0.0.1/d]c@anon-20191002_181700-601:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJhLTlVUEkxMTZMaDcrfnAKMDAyZnNpZ25hdHVyZSCVL4wOss3stQBqS0T2dMMSFgrqGKCdKqLQErziY58pOwo127.0.0.1,d]c@anon-20191002_181700-600:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhczI4NHpvOjIyKkp-ZHcKMDAyZnNpZ25hdHVyZSAD9JeJIP3Tupr5ZZbRQoM8Hx-snGBPdo-286DrRelJDwo127.0.0.1-  vReQay$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3048}{"auth_events": ["$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M"], "prev_events": ["$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M"], "type": "m.room.member", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-578", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-578:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043211439, "hashes": {"sha256": "jZX1r+Xue+EjRHG6sQhKma8nvMBPlIbKl/uD4Sdp+tw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hJgqMZTvwq/8IWbG2BdIGOzMdOrZi7JZQOVnv4zTQCWt0k09nVJaBj8LYlalZzF07nay5qF8HnBiH+kJk+ojCQ"}}, "unsigned": {"age_ts": 1570043211439}}iQeQa_$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3047}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-578:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043210698, "hashes": {"sha256": "5uKxoAZOYdydUZkCKwdXPgQS37UwqbvFI+wjc2g+klg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K2Wa/pXvppVJp+AVfWdOQvlLZAHZ89mzj5fCTBoLCi8zOjY/C2SASN0S7vPoeBRn0ywQnHimAxBnZn49tF6HAQ"}}, "unsigned": {"age_ts": 1570043210698}}PeQa$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3046}{"auth_events": ["$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI", "$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE", "$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "prev_events": ["$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA"], "type": "m.room.history_visibility", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043208176, "hashes": {"sha256": "DyMMZUNjIbsC2GyP4xAGr7dvKqDMlwxxUG1MTwvasg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pRoXqoaSoFB6YqJjE/Pxwhpt0fS0NEvoyf7sEROE3shOce04qVQqkFCyVFhAYuYgUQDT+k4J7WOqK4Oi6TZHBQ"}}, "unsigned": {"age_ts": 1570043208176}}tOeQau$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3045}{"auth_events": ["$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI", "$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE", "$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "prev_events": ["$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI"], "type": "m.room.join_rules", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043207509, "hashes": {"sha256": "63lM8Ek92IK3Vl9L9wXm5mKQpP1treL82aJSenaKALw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HpFPZ9n/ZTpjb4wL+5dWYb+lHj/QYQ5u118zmySz2dvBeccpobhfGAZD42FRq6PqGzyWInej0lDolQdoFDLWDw"}}, "unsigned": {"age_ts": 1570043207509}} X b  `  pv(.8B&xe3Q ]$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAm.room.power_levels!XGAmnfaVvjDtQJuufa:localhost:8800mrzms@anon-20191002_181700-582:localhost:8800 we'Q ]$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Ym.room.member!XGAmnfaVvjDtQJuufa:localhost:8800momps@anon-20191002_181700-582:localhost:8800v e'Q  ]$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwm.room.create!XGAmnfaVvjDtQJuufa:localhost:8800mlml@anon-20191002_181700-582:localhost:8800,ue?Q ]$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYm.room.history_visibility!OXpGdKbowFUTChPdmF:localhost:8800mamb@anon-20191002_181700-580:localhost:8800$te/Q ]$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wm.room.join_rules!OXpGdKbowFUTChPdmF:localhost:8800m^lm_F@anon-20191002_181700-580:localhost:8800&se3Q ]$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8m.room.power_levels!OXpGdKbowFUTChPdmF:localhost:8800mZm\<@anon-20191002_181700-580:localhost:8800 re'Q ]$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIm.room.member!OXpGdKbowFUTChPdmF:localhost:8800mXmY!@anon-20191002_181700-580:localhost:8800q e'Q  ]$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Awm.room.create!OXpGdKbowFUTChPdmF:localhost:8800mUmU@anon-20191002_181700-580:localhost:8800,pe?Q ]$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19Em.room.history_visibility!XUbDuPDiMTXJZDyAPc:localhost:8800mLbmN@anon-20191002_181700-579:localhost:8800$oe/Q ]$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkm.room.join_rules!XUbDuPDiMTXJZDyAPc:localhost:8800mImmJ @anon-20191002_181700-579:localhost:8800&ne3Q ]$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJkm.room.power_levels!XUbDuPDiMTXJZDyAPc:localhost:8800mEmG4@anon-20191002_181700-579:localhost:8800 me'Q ]$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUm.room.member!XUbDuPDiMTXJZDyAPc:localhost:8800mBmC7@anon-20191002_181700-579:localhost:8800l e'Q  ]$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQm.room.create!XUbDuPDiMTXJZDyAPc:localhost:8800m?m@F@anon-20191002_181700-579:localhost:8800,ke?Q ]$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQm.room.history_visibility!VhUAklonNaWKRnLkcr:localhost:8800m7tm9@anon-20191002_181700-578:localhost:8800$je/Q ]$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0m.room.join_rules!VhUAklonNaWKRnLkcr:localhost:8800m4m5V@anon-20191002_181700-578:localhost:8800&ie3Q ]$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcm.room.power_levels!VhUAklonNaWKRnLkcr:localhost:8800m1m2@anon-20191002_181700-578:localhost:8800 he'Q ]$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Em.room.member!VhUAklonNaWKRnLkcr:localhost:8800m.m/@anon-20191002_181700-578:localhost:8800g e'Q  ]$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Mm.room.create!VhUAklonNaWKRnLkcr:localhost:8800m+m,.@anon-20191002_181700-578:localhost:8800,fe?Q ]$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54m.room.history_visibility!ybXveQoxPVhjpKHAkG:localhost:8800m!m$~@anon-20191002_181700-577:localhost:8800$ee/Q ]$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAm.room.join_rules!ybXveQoxPVhjpKHAkG:localhost:8800mUm @anon-20191002_181700-577:localhost:8800 g * T~=gg2]!c;@anon-20191002_181700-588:localhost:8800CHJPRGUPAUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqSGd1d0BsaDFHO3BeaUwKMDAyZnNpZ25hdHVyZSA7uV5hX3vKBnLk0QaC8CYMcssMCkflw8aLsSo3BB2bIwog1]!c:@anon-20191002_181700-587:localhost:8800VGJOOHQHVEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZkbF55WkZFfm14dyNfa2YKMDAyZnNpZ25hdHVyZSBLYH3CJ0T1Q3BRGeLp6D6Nr0P_DWeASmh9STN8_fvomwog0]!c9@anon-20191002_181700-586:localhost:8800DOTBNZJMYCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRCVnBqMEBRaGZtWjdTZEYKMDAyZnNpZ25hdHVyZSApW_9ygROP-xkvgLFU8SCjdYJi_4WNmFICdZ7S6MH60Qog/]!c8@anon-20191002_181700-585:localhost:8800XLLZJGYIHRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVCS3BRQDJqeU1BRE9oPTUKMDAyZnNpZ25hdHVyZSC2VSzsdjWxC0I8UyNUBZp8kSpBgQTjCYiVQLs2_Z2zGQog.]!c7@anon-20191002_181700-584:localhost:8800FZKRURXWXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZPJkF4RnUtYVF-MDFTb1oKMDAyZnNpZ25hdHVyZSDOsredtu5HxxLeGWlpO64Nf5DkwOHlWzJV5qsXYtmkpgog-]!c6@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAog,]!c5@anon-20191002_181700-582:localhost:8800WSKNBNWTARMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-gog+]!c4@anon-20191002_181700-581:localhost:8800RYCHJSFPQZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7Qog*]!c3@anon-20191002_181700-580:localhost:8800CRNUPLGBOPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAog)]!c2@anon-20191002_181700-579:localhost:8800LLEXLPJZBRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewog(]!c1@anon-20191002_181700-578:localhost:8800JVKVSBXCSNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwo NVRN~z v r n j fb^ZJF:eeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:88009eeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:88008eeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:88007eeQ$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:88006eeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800NeeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800MeeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800LeeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800KeeQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800JeeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800IeeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800HeeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800GeeQ$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800FeeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800EeeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800DeeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800CeeQ$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800BeeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800AeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800@eeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800?eeQ$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800>eeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800=eeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800<eeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800;eeQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800  N8&eQ?$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3132}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc"], "type": "m.room.message", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"body": "Sharing illegal content on this server is not permitted and rooms in violation will be blocked.", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043303112, "hashes": {"sha256": "RkeDGcbuGXP/aEbxbSSJm1GqHdYRtgumInH4qUGylaM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aZTn6IJUCFEUvNNLv6WzU7xvjJNwLg5yvN22JLxa8qKI08HZzYwohtmn6DpkWFZsiAVuFnem+EbFG1Ri33K6DQ"}}, "unsigned": {"age_ts": 1570043303112}}k%eQac$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3131}{"auth_events": ["$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "type": "m.room.power_levels", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"users": {"@anon-20191002_181700-608:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043302746, "hashes": {"sha256": "DNOBcuZ+9YGZkSjxbAj0MJbpzPMFiNUR0iXqompC6JE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "52xEbssUO4MHC7GO3PJs33afc+BxRXcCGYlDuZzP+nvsDF22KawAcGhfS726l+izoLNrpEhhtU4JlN3MFry8Ag"}}, "unsigned": {"age_ts": 1570043302746}}E$eQ?9$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3130}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw"], "prev_events": ["$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU"], "type": "m.room.member", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-605", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-605:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043301384, "hashes": {"sha256": "vVzYp0j9+ixw8QpFXePZWpKWUGQQZNkAwH5R+Q53YtY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dRpjGjjnugCL66y+DtvgUA2w3H0F4Sx/qxEWEPH7OknXqFiALVhnq+ShIn1CNgASGkOnayUCIyTzcZQhPWTwCg"}}, "unsigned": {"age_ts": 1570043301384}}v#eQay$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3129}{"auth_events": ["$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4"], "prev_events": ["$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4"], "type": "m.room.member", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-608", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-608:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043300253, "hashes": {"sha256": "7hLm0WraynPmPpnphUtERJQ25Ocua3T8i/H+pNtUymg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5sUe56jAHMbXX0gesBn18IBL+DjoMHcUVnFMcoviV1g20ckjaCzIK1cDxATR8DWTQqfdXZ9Sa9+q+bkQsHgVCQ"}}, "unsigned": {"age_ts": 1570043300253}}  iVeQa_$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3052}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-579:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043215850, "hashes": {"sha256": "dKRqbKE3nK+Qk2z7k88b0q4mYSqQazY6pRKTLd6kaLE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LEA6YefHrQiwqSDWjO8VIq2zDeniA2mAAUEXTpzpEreczpJi9+51TBYovMQ7mqhHoCPPHZnsDXfUMZ1fVsnwDg"}}, "unsigned": {"age_ts": 1570043215850}}UeQa$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3051}{"auth_events": ["$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc", "$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M", "$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "prev_events": ["$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0"], "type": "m.room.history_visibility", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043213684, "hashes": {"sha256": "f95zDytZSYGwThBo3jm5L+Pc930/YqtNaz3QPjCIzP0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wQLqTPG8K+fnzEFg5NftwWa8NDCL6EkTwSJr98Wz62/yJBQdvhalrO1MCPqHVeejxfwE70gQHNoLiRGQb7TCDw"}}, "unsigned": {"age_ts": 1570043213684}}tTeQau$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3050}{"auth_events": ["$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc", "$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M", "$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "prev_events": ["$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc"], "type": "m.room.join_rules", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043212958, "hashes": {"sha256": "sUQYFeUBIje2d8UlWodtD/c2e+sJBIbjiqKbgNH0Tic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o9iuUYHx6DG8l7dApYCvRI02w4WumKY/CYWKSfgZYxRkv/qe+1qduqtx2q2i705N9nqY0XJKyhJhKRuNcnzBBA"}}, "unsigned": {"age_ts": 1570043212958}}kSeQac$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3049}{"auth_events": ["$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M", "$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "prev_events": ["$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "type": "m.room.power_levels", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"users": {"@anon-20191002_181700-578:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043212160, "hashes": {"sha256": "xhY4a65ijq9Voi75iKzjZ0GgCfXwywIudDaD8HWhnz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LaJAuOr6UAPyt4/iJXIT8xdUP3LsqCzOhrP7UrKtEkUotqsKzQ9Kgmx38V8RoNxcTPazk1cJbBgcIb+moPbMDQ"}}, "unsigned": {"age_ts": 1570043212160}} -RM H C > 9 4/* |%wrmhc TQe !UTAORDrNxIbSlGByAp:localhost:8800$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4TQe !MXhwoqNXvexeDDSOZT:localhost:8800$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUTQe !MXhwoqNXvexeDDSOZT:localhost:8800$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCATQe !MXhwoqNXvexeDDSOZT:localhost:8800$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwTQe !MXhwoqNXvexeDDSOZT:localhost:8800$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgTQe !MXhwoqNXvexeDDSOZT:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcTQe !MXhwoqNXvexeDDSOZT:localhost:8800$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAT~Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8T}Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$VhhHkiKpSbwh9kSk0LkPDjPtzbV3etTy0KPHKt3WXrET|Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0T{Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YTzQe !zqQJfFCRlSEDPKlQPy:localhost:8800$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQTtQe !JnAKXOrlyisFUpgJPw:localhost:8800$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0TnQe !XRAZJeoZBhGeHKKjaG:localhost:8800$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygTyQe !zqQJfFCRlSEDPKlQPy:localhost:8800$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwTxQe !zqQJfFCRlSEDPKlQPy:localhost:8800$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQTwQe !zqQJfFCRlSEDPKlQPy:localhost:8800$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXATvQe !zqQJfFCRlSEDPKlQPy:localhost:8800$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98TuQe !zqQJfFCRlSEDPKlQPy:localhost:8800$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwThQe !GwLdUoDplyVUogXDzu:localhost:8800$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgTgQe !GwLdUoDplyVUogXDzu:localhost:8800$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVATfQe !GwLdUoDplyVUogXDzu:localhost:8800$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9KwTeQe !GwLdUoDplyVUogXDzu:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQTdQe !GwLdUoDplyVUogXDzu:localhost:8800$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NoTcQe !nfxDdcgDfooxyiAzaB:localhost:8800$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUTbQe !nfxDdcgDfooxyiAzaB:localhost:8800$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4TaQe !nfxDdcgDfooxyiAzaB:localhost:8800$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQT`Qe !nfxDdcgDfooxyiAzaB:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgT_Qe !nfxDdcgDfooxyiAzaB:localhost:8800$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMT^Qe !XGAmnfaVvjDtQJuufa:localhost:8800$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esT]Qe !XGAmnfaVvjDtQJuufa:localhost:8800$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0T\Qe !XGAmnfaVvjDtQJuufa:localhost:8800$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAT[Qe !XGAmnfaVvjDtQJuufa:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YTZQe !XGAmnfaVvjDtQJuufa:localhost:8800$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwTYQe !OXpGdKbowFUTChPdmF:localhost:8800$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYTXQe !OXpGdKbowFUTChPdmF:localhost:8800$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wTWQe !OXpGdKbowFUTChPdmF:localhost:8800$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8TVQe !OXpGdKbowFUTChPdmF:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRITUQe !OXpGdKbowFUTChPdmF:localhost:8800$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwTTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19ETSQe !XUbDuPDiMTXJZDyAPc:localhost:8800$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkTRQe !XUbDuPDiMTXJZDyAPc:localhost:8800$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJkTQQe !XUbDuPDiMTXJZDyAPc:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUTPQe !XUbDuPDiMTXJZDyAPc:localhost:8800$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQTOQe !VhUAklonNaWKRnLkcr:localhost:8800$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ -RM H C > 9 4/*|%w rmhc THQe !XRAZJeoZBhGeHKKjaG:localhost:8800$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicTGQe !XRAZJeoZBhGeHKKjaG:localhost:8800$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94TFQe !XRAZJeoZBhGeHKKjaG:localhost:8800$IPzTcEaIlBdAD1ZyQe0y_GQsq3w8e_dXZtiMbBn0mPoTEQe !XRAZJeoZBhGeHKKjaG:localhost:8800$-mwmClLyceptmmit3wrEDlMmZsdmkvu_qy8EnTqWydcTDQe !XRAZJeoZBhGeHKKjaG:localhost:8800$L8bpvBUdwfRAC2sTiKJZUjbdOnPy_jCKHcMLey0bZQMTCQe !XRAZJeoZBhGeHKKjaG:localhost:8800$h7yP9rv-uFZGryfUIW_7kQG8yoxjhFE6yyoliJCg5T8TBQe !XRAZJeoZBhGeHKKjaG:localhost:8800$ncS-aHLC2SvN6RgZejF_h7a1Zm4heyepF3fu6reGAY8TAQe !XRAZJeoZBhGeHKKjaG:localhost:8800$AcK-Fs6WS8xCofQi-h8oN4ErdTcYRGtLhavEA5KK0ggT@Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$etNszUuEkaAQahBjB31SwFx5yGpFNRBm8lAlk3Gqph0T?Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$3Yfw5giqfLH2ej3VV0OwXccMnXeAphiNaRi06YNb7NkT>Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygT=Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAT<Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6WkT;Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncT:Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8UT9Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1UT8Qe !GwLdUoDplyVUogXDzu:localhost:8800$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8T7Qe !GwLdUoDplyVUogXDzu:localhost:8800$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwT6Qe !GwLdUoDplyVUogXDzu:localhost:8800$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgT5Qe !GwLdUoDplyVUogXDzu:localhost:8800$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAT4Qe !GwLdUoDplyVUogXDzu:localhost:8800$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9KwT3Qe !GwLdUoDplyVUogXDzu:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQT2Qe !GwLdUoDplyVUogXDzu:localhost:8800$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NoT1Qe !nfxDdcgDfooxyiAzaB:localhost:8800$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBET0Qe !nfxDdcgDfooxyiAzaB:localhost:8800$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUT/Qe !nfxDdcgDfooxyiAzaB:localhost:8800$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4T.Qe !nfxDdcgDfooxyiAzaB:localhost:8800$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQT-Qe !nfxDdcgDfooxyiAzaB:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgT,Qe !nfxDdcgDfooxyiAzaB:localhost:8800$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMT+Qe !XGAmnfaVvjDtQJuufa:localhost:8800$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esT*Qe !XGAmnfaVvjDtQJuufa:localhost:8800$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0T)Qe !XGAmnfaVvjDtQJuufa:localhost:8800$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAT(Qe !XGAmnfaVvjDtQJuufa:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YT'Qe !XGAmnfaVvjDtQJuufa:localhost:8800$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwT&Qe !OXpGdKbowFUTChPdmF:localhost:8800$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYT%Qe !OXpGdKbowFUTChPdmF:localhost:8800$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wT$Qe !OXpGdKbowFUTChPdmF:localhost:8800$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8T#Qe !OXpGdKbowFUTChPdmF:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIT"Qe !OXpGdKbowFUTChPdmF:localhost:8800$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwT!Qe !XUbDuPDiMTXJZDyAPc:localhost:8800$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19ET Qe !XUbDuPDiMTXJZDyAPc:localhost:8800$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJkTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQTQe !VhUAklonNaWKRnLkcr:localhost:8800$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ  ZeQa$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3056}{"auth_events": ["$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk", "$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ", "$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "prev_events": ["$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk"], "type": "m.room.history_visibility", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043219042, "hashes": {"sha256": "VewepaM5zly2B9nlKSeF5Bgwky2ZmmTZ8fmPOG7ysK4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r27+Jqqg6Fwo9O95yCDRUq8XeC5nNXuiEdVfPtZM9fqwg2Q80yv1b9q9751czBmsY8ULIrY93diICjBZWY/RCg"}}, "unsigned": {"age_ts": 1570043219042}}tYeQau$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3055}{"auth_events": ["$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk", "$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ", "$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "prev_events": ["$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk"], "type": "m.room.join_rules", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043218285, "hashes": {"sha256": "nU9obG5fkURyTG49FU5wvoa/yYROtGxkwvlm6YpOo2w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L7HLxeXfh3OMJ5H3WBuqcjWXiMxCLYUmGAiB7s/dMRNQmk6CG8RkP/9Va8/hDir+r326pXOMn23+QzZix9zkAw"}}, "unsigned": {"age_ts": 1570043218285}}kXeQac$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3054}{"auth_events": ["$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ", "$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "prev_events": ["$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "type": "m.room.power_levels", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"users": {"@anon-20191002_181700-579:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043217368, "hashes": {"sha256": "ftRBic9VIjQ4hCzqOyiPZb8QzhJ8vQEpdQyAO/Q3Ohs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vVIPGunw4MefeoYy2jfnp8pnaJ9PNhnMMlvKdOXlbv0Jh5tt2qQoVxYjkweKH73og5TMA8vR9XagZVjVrXzuBw"}}, "unsigned": {"age_ts": 1570043217368}}vWeQay$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3053}{"auth_events": ["$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ"], "prev_events": ["$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ"], "type": "m.room.member", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-579", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-579:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043216594, "hashes": {"sha256": "GRsH7NoYGsf37byc8RXUSQn2jjiJbAJ97KnJmYNYDi4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pPgzpaWCHBIqQgXLb1L83DG5hGRSpJ6mTnrDk5RovKwj5y2ENLDRKyEyIsS0jw3E+gpzXbHu8uxOcTTdNAnACg"}}, "unsigned": {"age_ts": 1570043216594}} ".D9.NC 8 - { " p  e ZO.|#qfVVeL$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQsha256)-JH\ja!{Lh TńVUeL$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQsha256xs>8WO( wg ʍi$VTeL$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0sha256CG1jx'4z"ha{)͍VSeL$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcsha256y(Kd!0.J꬗m08ZnVReL$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Esha256Nv}"tL٦37DQVQeL$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Msha256rnVj7p~L]n+ >4ohCVPeL$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54sha256 *4&r TyFGVOeL$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAsha256w Mۈ^0zg;q0VNeL$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIsha256ɴ ZS"p,}˅<A!ʬ~6VoeL$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgsha256v{Q;BJ`f-VneL$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAsha256;KSYj5)i}\ؘ!@+PVmeL$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kwsha256z헑Pw!d~< xU, /VleL$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQsha2569zX(h`EBt$Ǽ+:$VkeL$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5Nosha256;]3n{QGK8 V rz2VjeL$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBEsha256+|yszU;.RWJ@VieL$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUsha256JbvcXS}7Pt{Yο˶%VheL$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4sha256{P`N+f47 BV N!caVgeL$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQsha256NwZ9^7ʰ1H/6HVfeL$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogsha256zQ(ƍuCB4d VeeL$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMsha256uסK?cT23ʻlz1AcVdeL$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367essha256xȻ}\=*dr" VceL$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0sha256+ †Pe$pHu3,BVbeL$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAsha256$%5;BWlLU2VXeL$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJksha256OpΚ\~"t,_ pcTVWeL$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUsha256! Sdyj2I1غ]|t5 a} { y w u sqomkigeca~eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~~eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800~}eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~|eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800~{eeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800~zeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~yeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800   *t^eQau$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3060}{"auth_events": ["$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8", "$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw", "$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "prev_events": ["$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8"], "type": "m.room.join_rules", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043223660, "hashes": {"sha256": "bturi9NMfnBw2sQxYwCJnGgqSDY9nGStGGTGzFaaYBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lmN1rNB11iS5kN5aXxShGZJ+xohJbtNfgbs0E54SSJsoq8HeTCJZ+qgbqtQaMWRGGUOGfRjbUY3U4ApuSEKVAw"}}, "unsigned": {"age_ts": 1570043223660}}k]eQac$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3059}{"auth_events": ["$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw", "$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "prev_events": ["$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "type": "m.room.power_levels", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"users": {"@anon-20191002_181700-580:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043222758, "hashes": {"sha256": "r8wrAIFxRsWYkG0wu6UB04mCtpO4tAVGuhhnOyXlTWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6o8OSCP0W5XWHB0gaN9sKl5FqXuPJl1OA66CpA268ddQm0S+P5VeMM259Rw2SfJ9WKXM9QVvFfu2M+zzBPTTBA"}}, "unsigned": {"age_ts": 1570043222758}}v\eQay$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3058}{"auth_events": ["$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw"], "prev_events": ["$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw"], "type": "m.room.member", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-580", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-580:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043222190, "hashes": {"sha256": "86L5pDh/Q+iE3tcnfKXlURBofSXclSvOGekuLrdyvkk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iW9DUMAYf5g3paVK1da9A3RmIeTnJJpYhFyKC8wWtTSfnkpwbB/GJv5UJI/74J9k1ECARNO58Ea7Rh19j5c7Bw"}}, "unsigned": {"age_ts": 1570043222190}}i[eQa_$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3057}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-580:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043221405, "hashes": {"sha256": "X5Z8G+VXD2vXVvdqrTyo/uRGW1hoHlID1FXMnEtU9NM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zR64RLkrJLF+cMDhjudIG81M0OdvmzD7FoFnDx2AGjif57biq8V72VkQ0XSWENBYK+1MpEIrsBwqbYp2UWIRCg"}}, "unsigned": {"age_ts": 1570043221405}} #*R W {   > Is`#Mw 1cQ' e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.create$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 Q']e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsiQ3 e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_EgQ/ e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rules$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNkoQ? e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibility$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Ua Q# e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.name$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0cQ' e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.create$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U Q']e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8UiQ3 e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncgQ/ e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rules$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6WkoQ? e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibility$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAaQ# e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.name$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyggQ/ e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.join_rules$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwlQ9 e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.canonical_alias$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQiQ3 e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.power_levels$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98cQ' e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.create$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwo|Q? e !GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibility$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgg{Q/ e !GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rules$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAizQ3 e !GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw yQ']e !GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQcxQ' e !GwLdUoDplyVUogXDzu:localhost:8800m.room.create$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NoowQ? e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibility$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUgvQ/ e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rules$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4iuQ3 e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ tQ']e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgcsQ' e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.create$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMorQ? e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibility$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esgqQ/ e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rules$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0ipQ3 e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA oQ']e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YcnQ' e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.create$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwomQ? e !OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibility$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYglQ/ e !OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rules$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wikQ3 e !OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 EP~.Z _ # ( P [I eQ']$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800joina eQ' $BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800m.room.createm eQ? $IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibilityeeQ/ $h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rulesgeQ3 $T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels eQ']$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800joinaeQ' $yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.createmeQ? $eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibilityaeQ' $xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.createmeQ? $4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibilityeeQ/ $O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rulesgeQ3 $es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels eQ']$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800joinaeQ' $gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800m.room.createmeQ? $SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibilityeeQ/ $e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rulesgeQ3 $4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels eQ']$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800joinaeQ' $ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800m.room.createmeQ? $eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibilityeeQ/ $1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rulesgeQ3 $JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels eQ']$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800joinaeQ' $grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800m.room.createmeQ? $vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibilitye eQ/ $cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rulesg eQ3 $PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels  w kbeQac$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3064}{"auth_events": ["$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw", "$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "prev_events": ["$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "type": "m.room.power_levels", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"users": {"@anon-20191002_181700-582:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043228794, "hashes": {"sha256": "/G85LJhHMtmfJh+jl2kd61PxZmUbH1vXGnTvrMZjT+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZCGYQk1TCl6jFXMOSVLTuFlZRU1VZHQyOkPVGAfKbuPCoQy0fqkzjHM1CG3rL2OPNdCEdX8hRVcegMJKzwCsBg"}}, "unsigned": {"age_ts": 1570043228794}}vaeQay$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3063}{"auth_events": ["$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw"], "prev_events": ["$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw"], "type": "m.room.member", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-582", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-582:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043228132, "hashes": {"sha256": "IiBuL1FxT7sfErcXhJoferhBbtvCqB6P5cZGOrldLjU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WZDjgqlNmvCJpxYHl9OoLDNvR2ZvM3QNw+wUa4OK+K2rng4+Jj5qHdqurF3Vy/tABRYeECVFlH6TzSrBYiKOBA"}}, "unsigned": {"age_ts": 1570043228132}}i`eQa_$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3062}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-582:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043227284, "hashes": {"sha256": "bt+6yR3lEYF0LTOpI5s05JGfvA8TjoJ/iVx+AhulcRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vYvxVjvvMMl7Ab01Um4f2hyJmoPdhy23k5CWaT0qp4Iz/3AxT7FFPzyfHf3ckWto2qATnNKKk0TA2l6WpJoSCg"}}, "unsigned": {"age_ts": 1570043227284}}_eQa$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3061}{"auth_events": ["$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8", "$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw", "$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "prev_events": ["$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w"], "type": "m.room.history_visibility", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043224343, "hashes": {"sha256": "yuqpfb/Tf9UUaWiEQRtKPgIhHPx4efQ9i0lzTXCoDf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5/xjoXeOJ6fZ2rsticNbmgY+dWyflYZvi+7+Ywjt1oh87UbDUCYjmT4QSNLU2I/40Mxh97plPh/9nkfwJwmKCQ"}}, "unsigned": {"age_ts": 1570043224343}} @GM ] ! m 1 T  _  j )p42vy=COU[a%9O ]@anon-20191002_181700-627:localhost:8800a&\>N ]  @anon-20191002_181700-626:localhost:8800m&\9M ]@anon-20191002_181700-626:localhost:8800a&\>L ]  @anon-20191002_181700-625:localhost:8800m&\9K ]@anon-20191002_181700-625:localhost:8800a&\>J ]  @anon-20191002_181700-624:localhost:8800m&\9I ]@anon-20191002_181700-624:localhost:8800a&\>H ]  @anon-20191002_181700-623:localhost:8800m&\9G ]@anon-20191002_181700-623:localhost:8800a&\>F ]  @anon-20191002_181700-622:localhost:8800m&\C9E ]@anon-20191002_181700-622:localhost:8800a&\>D ]  @anon-20191002_181700-620:localhost:8800m&\9C ]@anon-20191002_181700-621:localhost:8800a&\9B ]@anon-20191002_181700-620:localhost:8800a&\>A ]  @anon-20191002_181700-619:localhost:8800m&\9@ ]@anon-20191002_181700-619:localhost:8800a&\9? ]@anon-20191002_181700-618:localhost:8800a&\=> ]  @anon-20191002_181700-617:localhost:8800m&\9= ]@anon-20191002_181700-617:localhost:8800a&\>< ]  @anon-20191002_181700-616:localhost:8800m&\W9; ]@anon-20191002_181700-616:localhost:8800a&\9: ]@anon-20191002_181700-615:localhost:8800a&\>9 ] @anon-20191002_181700-614:localhost:8800m&\ 98 ]@anon-20191002_181700-614:localhost:8800a&\97 ]@anon-20191002_181700-613:localhost:8800a&\>6 ] @anon-20191002_181700-612:localhost:8800m&\ 95 ]@anon-20191002_181700-612:localhost:8800a&\>2 ] @anon-20191002_181700-609:localhost:8800m&\ ;94 ]@anon-20191002_181700-611:localhost:8800a&\>3 ] @anon-20191002_181700-610:localhost:8800m&\ k>1 ]  @anon-20191002_181700-608:localhost:8800m&\ I90 ]@anon-20191002_181700-610:localhost:8800a&\9/ ]@anon-20191002_181700-609:localhost:8800a&\9. ]@anon-20191002_181700-608:localhost:8800a&\>- ]  @anon-20191002_181700-606:localhost:8800m&\>, ] @anon-20191002_181700-605:localhost:8800m&\ "G9+ ]@anon-20191002_181700-604:localhost:8800a&\9* ]@anon-20191002_181700-606:localhost:8800a&\9) ]@anon-20191002_181700-605:localhost:8800a&\>( ]  @anon-20191002_181700-603:localhost:8800m&\/9' ]@anon-20191002_181700-602:localhost:8800a&\9& ]@anon-20191002_181700-603:localhost:8800a&\>% ]  @anon-20191002_181700-601:localhost:8800m&\/9$ ]@anon-20191002_181700-600:localhost:8800a&\9# ]@anon-20191002_181700-601:localhost:8800a&\&" 7@admin:localhost:8800a&\9! ]@anon-20191002_181700-598:localhost:8800a&\9 ]@anon-20191002_181700-597:localhost:8800a&\9 ]@anon-20191002_181700-596:localhost:8800a&\9 ]@anon-20191002_181700-595:localhost:8800a&\9 ]@anon-20191002_181700-593:localhost:8800a&\9 ]@anon-20191002_181700-591:localhost:8800a&\9 ]@anon-20191002_181700-590:localhost:8800a&\9 ]@anon-20191002_181700-589:localhost:8800a&\9 ]@anon-20191002_181700-588:localhost:8800a&\9 ]@anon-20191002_181700-587:localhost:8800a&\9 ]@anon-20191002_181700-586:localhost:8800a&\9 ]@anon-20191002_181700-585:localhost:8800a&\> ]  @anon-20191002_181700-584:localhost:8800m&\#9 ]@anon-20191002_181700-584:localhost:8800a&\> ]  @anon-20191002_181700-583:localhost:8800m&\39 ]@anon-20191002_181700-583:localhost:8800a&\> ]  @anon-20191002_181700-582:localhost:8800m&\C9 ]@anon-20191002_181700-582:localhost:8800a&\ 0pZa h  o  v # } * 18?FMT[bipP^Q]!JnAKXOrlyisFUpgJPw:localhost:8800@anon-20191002_181700-603:localhost:88004P]Q]!XRAZJeoZBhGeHKKjaG:localhost:8800@anon-20191002_181700-601:localhost:88004P\Q]!GwLdUoDplyVUogXDzu:localhost:8800@anon-20191002_181700-584:localhost:88004P[Q]!nfxDdcgDfooxyiAzaB:localhost:8800@anon-20191002_181700-583:localhost:88004PZQ]!XGAmnfaVvjDtQJuufa:localhost:8800@anon-20191002_181700-582:localhost:88004PYQ]!OXpGdKbowFUTChPdmF:localhost:8800@anon-20191002_181700-580:localhost:88004PXQ]!XUbDuPDiMTXJZDyAPc:localhost:8800@anon-20191002_181700-579:localhost:88004PWQ]!VhUAklonNaWKRnLkcr:localhost:8800@anon-20191002_181700-578:localhost:88004PVQ]!ybXveQoxPVhjpKHAkG:localhost:8800@anon-20191002_181700-577:localhost:88004PUQ]!ijOiudvuzOLNmgNKfG:localhost:8800@anon-20191002_181700-576:localhost:88004PTQ]!hrhDJbmXvXBizKoiiK:localhost:8800@anon-20191002_181700-574:localhost:88002PSQ]!iLHJbsFszubrnybDNz:localhost:8800@anon-20191002_181700-574:localhost:88004PRQ]!hGsPmWXboxZZtOlsxY:localhost:8800@anon-20191002_181700-573:localhost:88004PQQ]!dvZnfJonDkxlrrDXUk:localhost:8800@anon-20191002_181700-572:localhost:88004PPQ]!vZGjXEXQoCaoUXnkCa:localhost:8800@anon-20191002_181700-571:localhost:88004POQ]!GBPGYLDkXcAsHgkfuS:localhost:8800@anon-20191002_181700-570:localhost:88002PNQ]!fdEymmlcUvjgshvVyl:localhost:8800@anon-20191002_181700-570:localhost:88004PMQ]!xcdNyJNFEdaBGFycsB:localhost:8800@anon-20191002_181700-569:localhost:88004PLQ]!SUDzkfFBgpuCANOxRS:localhost:8800@anon-20191002_181700-568:localhost:88004PKQ]!rWmvvGBgmFMdVvcfPk:localhost:8800@anon-20191002_181700-567:localhost:88004PJQ]!gXfXRDTXeVvOHQdaaQ:localhost:8800@anon-20191002_181700-566:localhost:88004PIQ]!hegUPDZCEEmBhsNJJR:localhost:8800@anon-20191002_181700-565:localhost:88004PHQ]!aSKNKSGXPGoIbSrbEN:localhost:8800@anon-20191002_181700-564:localhost:88004PGQ]!peJMRJtXBvIiCttNmm:localhost:8800@anon-20191002_181700-563:localhost:88004PFQ]!tPkCGJBKmqUXJoRrnY:localhost:8800@anon-20191002_181700-562:localhost:88004PEQ]!QnmLrBAxeItdHsaxWf:localhost:8800@anon-20191002_181700-561:localhost:88004PDQ]!hFwigdYZkwYNSwelRH:localhost:8800@anon-20191002_181700-558:localhost:88004PCQ]!paDmNxsOZIKyApbxXs:localhost:8800@anon-20191002_181700-556:localhost:88004PBQ]!OtBUhGeUSiDMWRKIOT:localhost:8800@anon-20191002_181700-554:localhost:88004PAQ]!zHBgbzUZHshNGZvIBS:localhost:8800@anon-20191002_181700-552:localhost:88004P@Q]!cidyuyekVzJHHvyomb:localhost:8800@anon-20191002_181700-550:localhost:88004P?Q]!pduebXnTyxQWVxEICp:localhost:8800@anon-20191002_181700-548:localhost:88004P>Q]!ZvLVbnHjeymRiFIkYr:localhost:8800@anon-20191002_181700-545:localhost:88004P=Q]!VUibrTIkcRbfrogbQV:localhost:8800@anon-20191002_181700-543:localhost:88004P<Q]!WpThtNEVhrUbUdCdMJ:localhost:8800@anon-20191002_181700-541:localhost:88004P;Q]!vRmMcoJDeCupADwqac:localhost:8800@anon-20191002_181700-539:localhost:88004P:Q]!fGkUEndqGrieltwbCh:localhost:8800@anon-20191002_181700-537:localhost:88004P9Q]!atnRTMliktaVUhMVID:localhost:8800@anon-20191002_181700-535:localhost:88004P8Q]!PHkVrXAyfGkFtzSagu:localhost:8800@anon-20191002_181700-533:localhost:88004P7Q]!EhFUhsgQbBWmrnGmaz:localhost:8800@anon-20191002_181700-531:localhost:88004P6Q]!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-520:localhost:88004P5Q]!sHRHoXzYrrPSlWBkoh:localhost:8800@anon-20191002_181700-518:localhost:88005P4Q]!AoAvmnwMkhYBQsbCsL:localhost:8800@anon-20191002_181700-516:localhost:88005P3Q]!IlGJpjzrvvAFuwTAgo:localhost:8800@anon-20191002_181700-514:localhost:88005P2Q]!CSqENqzAezaZnGktbE:localhost:8800@anon-20191002_181700-512:localhost:88005P1Q]!vBvlJEXUSQKUYmsKcO:localhost:8800@anon-20191002_181700-510:localhost:88005P0Q]!RDEAXrqXQizuhCUFPq:localhost:8800@anon-20191002_181700-508:localhost:88005P/Q]!mogJVPxghalmKbblUq:localhost:8800@anon-20191002_181700-506:localhost:88005 Z\6dI&rO)o0 q Z  j M 2  ^ G  W :  n K  kH"r?rOE(k8!w`! &"?  cm.room.history_visibility >'] m.room.member@anon-20191002_181700-613:localhost:8800 =%)) m.room.aliaseslocalhost:8800 <"?  m.room.history_visibility ;/  m.room.join_rules :9  m.room.canonical_alias 93  m.room.power_levels 8>'] m.room.member@anon-20191002_181700-614:localhost:8800 7'  m.room.create 6>'] m.room.member@anon-20191002_181700-611:localhost:8800 5%)) m.room.aliaseslocalhost:8800 4"?  m.room.history_visibility 3/  m.room.join_rules 2/  bm.room.join_rules 3  am.room.power_levels >'] `m.room.member@anon-20191002_181700-634:localhost:8800 '  _m.room.create 3  ^m.room.power_levels >'] ^m.room.member@anon-20191002_181700-633:localhost:8800 2'E ^m.room.member@__ANON__-11:localhost:42455 /  ^m.room.join_rules '  ^m.room.create 2'E ]m.room.member@__ANON__-11:localhost:42455 2'E \m.room.member@__ANON__-11:localhost:42455 "?  [m.room.history_visibility /  Zm.room.join_rules ~3  Ym.room.power_levels }>'] Xm.room.member@anon-20191002_181700-633:localhost:8800 |'  Wm.room.create {>'] Vm.room.member@anon-20191002_181700-632:localhost:8800 z2'E Vm.room.member@__ANON__-10:localhost:42455 y/  Vm.room.join_rules w'  Vm.room.create x>'] Um.room.member@anon-20191002_181700-629:localhost:8829 v>'] Tm.room.member@anon-20191002_181700-629:localhost:8829 u%)) Sm.room.aliaseslocalhost:8800 t"?  Rm.room.history_visibility s/  Qm.room.join_rules r9  Pm.room.canonical_alias q3  Om.room.power_levels p>'] Nm.room.member@anon-20191002_181700-628:localhost:8800 o'  Mm.room.create n1'C Lm.room.member@__ANON__-6:localhost:42455 m"?  Km.room.history_visibility l/  Jm.room.join_rules k3  Im.room.power_levels j>'] Hm.room.member@anon-20191002_181700-626:localhost:8800 i'  Gm.room.create h"?  Fm.room.history_visibility g/  Em.room.join_rules f3  Dm.room.power_levels e>'] Cm.room.member@anon-20191002_181700-625:localhost:8800 d'  Bm.room.create c"?  Am.room.history_visibility b/  @m.room.join_rules a3  ?m.room.power_levels `>'] >m.room.member@anon-20191002_181700-624:localhost:8800 _'  =m.room.create ^"?  '] 9m.room.member@anon-20191002_181700-623:localhost:8800 Z'  8m.room.create Y"?  7m.room.history_visibility X/  6m.room.join_rules W3  5m.room.power_levels V>'] 4m.room.member@anon-20191002_181700-622:localhost:8800 U'  3m.room.create T"?  2m.room.history_visibility S/  1m.room.join_rules R3  0m.room.power_levels Q>'] /m.room.member@anon-20191002_181700-620:localhost:8800 P'  .m.room.create O1'C -m.room.member@__ANON__-2:localhost:42455 N1'C ,m.room.member@__ANON__-2:localhost:42455 M"?  +m.room.history_visibility L/  *m.room.join_rules K3  )m.room.power_levels J>'] (m.room.member@anon-20191002_181700-619:localhost:8800 I'  'm.room.create H>'] &m.room.member@anon-20191002_181700-617:localhost:8800 G1'C &m.room.member@__ANON__-0:localhost:42455 F/  &m.room.join_rules D'  &m.room.create E%)) %m.room.aliaseslocalhost:8800 C"?  $m.room.history_visibility B/  #m.room.join_rules A3  "m.room.power_levels @>'] !m.room.member@anon-20191002_181700-616:localhost:8800 ?'  m.room.create >  vfeQay$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3068}{"auth_events": ["$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM"], "prev_events": ["$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM"], "type": "m.room.member", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-583", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-583:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043233271, "hashes": {"sha256": "PEVAFlQL7qGkG5yVx/dPwE9WYQZK+tE1KRpAC7wA5qg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mh8bdIHgJCw+puHZVQcwTywshsbKuSY9RehecxEz1Dx/FfVxaavUMsEwYSWVtGhTY7c0xRjGqeWLOL5b820WBg"}}, "unsigned": {"age_ts": 1570043233271}}ieeQa_$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3067}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-583:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043232489, "hashes": {"sha256": "oxhuBsL0aueLgemUCZhvEbFQfKj1J0P38OIs4ljGh0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "knkMmegoSS06eN/QD8I3jG3tXWMXVs/5BT9HtV4owAge389H5z3nuUcQ8djfLDe6/PMrnuvwTv2jna/R7iPMDg"}}, "unsigned": {"age_ts": 1570043232489}}deQa$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3066}{"auth_events": ["$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA", "$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw", "$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "prev_events": ["$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0"], "type": "m.room.history_visibility", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043230262, "hashes": {"sha256": "FmglP4FtqPqUtiJd5SjhvnIQJlTIrrvZO6G5ezq9Q14"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SCw3mqgtJ3SnzQuzKMKhXX41RXKE4fx7Td7666c4960qOm3gt+D0V1RaCihuL9+v/Gi9NK3qHIbYr2frzqMIDA"}}, "unsigned": {"age_ts": 1570043230262}}tceQau$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3065}{"auth_events": ["$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA", "$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw", "$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "prev_events": ["$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA"], "type": "m.room.join_rules", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043229567, "hashes": {"sha256": "Q4flhpILE9WxO8z/U+MGNledrw0Sfw2FBHs06mEeJrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BZwbUlh703zncE+FdZgmi99fmsImdgfpDgjt0QZ390FwEyMHNseHQu69jLvyrkr69hzmohU19gGNrUh//V9nAg"}}, "unsigned": {"age_ts": 1570043229567}} ML l? ^ 2  ~ Q $ q D  d 7 V )vIi<[/{O"nAi>`3SS&,Q!ZvLVbnH+Q !aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800+Q !aWbcZNVBalJilCEsdr:localhost:8800*Q!aWJOsiuJONOvjKWEjO:localhost:8800kk*Q!aWJOsiuJONOvjKWEjO:localhost:8800jj*Q!aWJOsiuJONOvjKWEjO:localhost:8800ii*Q!aWJOsiuJONOvjKWEjO:localhost:8800hh*Q!aWJOsiuJONOvjKWEjO:localhost:8800gg)Q !aWJOsiuJONOvjKWEjO:localhost:8800ff,Q!aVxOoyiLLnxmzgLJat:localhost:8800>>,Q!aVxOoyiLLnxmzgLJat:localhost:8800==,Q!aVxOoyiLLnxmzgLJat:localhost:880066,Q!aVxOoyiLLnxmzgLJat:localhost:880055,Q!aVxOoyiLLnxmzgLJat:localhost:880044,Q!aVxOoyiLLnxmzgLJat:localhost:880033,Q!aVxOoyiLLnxmzgLJat:localhost:880022+Q !aVxOoyiLLnxmzgLJat:localhost:880011,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z z,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y y,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x x,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w w+Q !aSKNKSGXPGoIbSrbEN:localhost:8800 v v,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800+Q !aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800"",Q!aHyAJEOSdKqTiRjOvw:localhost:8800!!,Q!aHyAJEOSdKqTiRjOvw:localhost:8800  ,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800+Q !aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800+Q !aBCvSXjtZUEPlPGHvY:localhost:8800,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + +,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * *,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) ),Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( (,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' '+Q !ZvLVbnHjeymRiFIkYr:localhost:8800 & &,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800+Q !ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ML l? ^ 2  ~ Q $ q D  d 7 V )vIi<[/{O"nAi>`3SS&,Q!ZvLVbnH+Q !aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800+Q !aWbcZNVBalJilCEsdr:localhost:8800*Q!aWJOsiuJONOvjKWEjO:localhost:8800kk*Q!aWJOsiuJONOvjKWEjO:localhost:8800jj*Q!aWJOsiuJONOvjKWEjO:localhost:8800ii*Q!aWJOsiuJONOvjKWEjO:localhost:8800hh*Q!aWJOsiuJONOvjKWEjO:localhost:8800gg)Q !aWJOsiuJONOvjKWEjO:localhost:8800ff,Q!aVxOoyiLLnxmzgLJat:localhost:8800>>,Q!aVxOoyiLLnxmzgLJat:localhost:8800==,Q!aVxOoyiLLnxmzgLJat:localhost:880066,Q!aVxOoyiLLnxmzgLJat:localhost:880055,Q!aVxOoyiLLnxmzgLJat:localhost:880044,Q!aVxOoyiLLnxmzgLJat:localhost:880033,Q!aVxOoyiLLnxmzgLJat:localhost:880022+Q !aVxOoyiLLnxmzgLJat:localhost:880011,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z z,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y y,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x x,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w w+Q !aSKNKSGXPGoIbSrbEN:localhost:8800 v v,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800+Q !aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800"",Q!aHyAJEOSdKqTiRjOvw:localhost:8800!!,Q!aHyAJEOSdKqTiRjOvw:localhost:8800  ,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800+Q !aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800+Q !aBCvSXjtZUEPlPGHvY:localhost:8800,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + +,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * *,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) ),Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( (,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' '+Q !ZvLVbnHjeymRiFIkYr:localhost:8800 & &,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800+Q !ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 "P&) K T |  :bk TW| GP /Q']e 2!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcd.Q' e 1!MXhwoqNXvexeDDSOZT:localhost:8800m.room.create$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA8-Q']ee 0!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 ,Q']e /!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0s+Q))e .!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.aliaseslocalhost:8800$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Yp*Q? e -!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.history_visibility$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQh)Q/ e ,!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.join_rules$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwm(Q9 e +!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.canonical_alias$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQj'Q3 e *!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.power_levels$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA &Q']e )!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98d%Q' e (!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.create$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwb$Q# e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.name$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0p#Q? e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibility$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Uh"Q/ e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rules$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNkj!Q3 e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E Q']e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsdQ' e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.create$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8bQ# e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.name$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygpQ? e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibility$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAhQ/ e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rules$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6WkjQ3 e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc Q']e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8UdQ' e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.create$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1UpQ? e !GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibility$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAghQ/ e !GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rules$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAjQ3 e !GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw Q']e !GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQdQ' e !GwLdUoDplyVUogXDzu:localhost:8800m.room.create$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NopQ? e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibility$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUhQ/ e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rules$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4jQ3 e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ Q']e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgdQ' e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.create$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMpQ? e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibility$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es #ts 1 @ n ; i x6py 44CLtm7eQ? $GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibilitye6eQ/ $QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rulesg5eQ3 $wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels 4eQ']$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800a3eQ' $E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.create 2eQ']$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829 1eQ']$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829p0eQ))$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.aliaseslocalhost:8800m/eQ? $TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.history_visibilitye.eQ/ $T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.join_rulesj-eQ9 $Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.canonical_aliasg,eQ3 $HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.power_levels +eQ']$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800a*eQ' $xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.create_)eQ# $8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800m.room.namem(eQ? $jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibilitye'eQ/ $r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rulesg&eQ3 $LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels %eQ']$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800a$eQ' $DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800m.room.create_#eQ# $-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.namem"eQ? $MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibilitye!eQ/ $LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rulesg eQ3 $cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels eQ']$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800aeQ' $xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.createmeQ? $4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibilityeeQ/ $O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rulesgeQ3 $es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels eQ']$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800aeQ' $gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800m.room.createmeQ? $SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibilityeeQ/ $e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rulesgeQ3 $4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels eQ']$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800   jeQm$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "txn_id": "564", "stream_ordering": 3072}{"auth_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ", "$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU"], "type": "m.room.message", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"body": "synced", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043237438, "hashes": {"sha256": "r8W2C2TjNCSPA5PGEZlzh5V2OiS/xZ2fomw1qvdDDm8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MlbuGwUfuD7jbWApq9zJUmA1mRQBd+BBARK2T5J3DrH2OAlYQgLQK+Bj8P4UU5E5b+9cO5G5roQZDa+0U6aYAA"}}, "unsigned": {"age_ts": 1570043237438}}ieQa$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3071}{"auth_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ", "$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4"], "type": "m.room.history_visibility", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043235242, "hashes": {"sha256": "scO+OIhrbwcJBY9vXJ8tBMfgB1Vl0P3w0Jq2N9wwqm0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i+OSgOY4rISS4BhFTsXqIaVIWzcRZ2gua4cGC/t5Pi5zqQIuCjl78jWrdwgDf+pNZazcQ/f/A6movZ1slc3cCg"}}, "unsigned": {"age_ts": 1570043235242}}theQau$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3070}{"auth_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ", "$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ"], "type": "m.room.join_rules", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043234651, "hashes": {"sha256": "0Y9doD+fDrAvdqi8NsXK3ppLnrSpUNZgjpnKNPzv5Ww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZ1wj7Z+1lhk5N3Kmi0znMRx9stybuoAN6PKItriSmFWZd6leJ7IyyxQTAJCBBhJkW48C+V5tQIm8tCYI/XPBQ"}}, "unsigned": {"age_ts": 1570043234651}}kgeQac$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3069}{"auth_events": ["$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "type": "m.room.power_levels", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"users": {"@anon-20191002_181700-583:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043233867, "hashes": {"sha256": "UD2Ys18NBVTJZY3ZGR6wgozSSOBIkGxsf6gko0+yR2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WPVMSNS1tIFarlzhypUj51THACS4DmT+YinKmjCoIqK2URkzV+cJWm6tuZGwEtIOYXaa14D/Y+HHUdY3VQpJAA"}}, "unsigned": {"age_ts": 1570043233867}} 'V Y  i  l%/HN1 |e'Q ]$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogm.room.member!nfxDdcgDfooxyiAzaB:localhost:8800mރmބR@anon-20191002_181700-583:localhost:8800{ e'Q  ]$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMm.room.create!nfxDdcgDfooxyiAzaB:localhost:8800mހmށ=@anon-20191002_181700-583:localhost:8800,ze?Q ]$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esm.room.history_visibility!XGAmnfaVvjDtQJuufa:localhost:8800mx6m{+@anon-20191002_181700-582:localhost:8800$ye/Q ]$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0m.room.join_rules!XGAmnfaVvjDtQJuufa:localhost:8800mumvZ@anon-20191002_181700-582:localhost:8800, e?Q ]$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAm.room.history_visibility!XRAZJeoZBhGeHKKjaG:localhost:8800mrm @anon-20191002_181700-601:localhost:8800$ e/Q ]$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wkm.room.join_rules!XRAZJeoZBhGeHKKjaG:localhost:8800mcm@anon-20191002_181700-601:localhost:8800& e3Q ]$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncm.room.power_levels!XRAZJeoZBhGeHKKjaG:localhost:8800mm @anon-20191002_181700-601:localhost:8800 e'Q ]$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Um.room.member!XRAZJeoZBhGeHKKjaG:localhost:8800m m@anon-20191002_181700-601:localhost:8800 e'Q ]$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1Um.room.create!XRAZJeoZBhGeHKKjaG:localhost:8800m;m@anon-20191002_181700-601:localhost:8800!e)Q ]$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8m.room.message!GwLdUoDplyVUogXDzu:localhost:8800mޮmޮ@anon-20191002_181700-584:localhost:8800!e)Q ]$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwm.room.message!GwLdUoDplyVUogXDzu:localhost:8800mޫ1mޫ5@anon-20191002_181700-584:localhost:8800,e?Q ]$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgm.room.history_visibility!GwLdUoDplyVUogXDzu:localhost:8800mޥdmާ@anon-20191002_181700-584:localhost:8800$e/Q ]$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAm.room.join_rules!GwLdUoDplyVUogXDzu:localhost:8800mޢmޣ@anon-20191002_181700-584:localhost:8800&e3Q ]$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kwm.room.power_levels!GwLdUoDplyVUogXDzu:localhost:8800mޟ%mޡ@anon-20191002_181700-584:localhost:8800 e'Q ]$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQm.room.member!GwLdUoDplyVUogXDzu:localhost:8800mޜmޝ @anon-20191002_181700-584:localhost:8800 e'Q  ]$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5Nom.room.create!GwLdUoDplyVUogXDzu:localhost:8800mޙmޙp@anon-20191002_181700-584:localhost:8800!e)Q ]$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBEm.room.message!nfxDdcgDfooxyiAzaB:localhost:8800mޔ>mޔC@anon-20191002_181700-583:localhost:8800,e?Q ]$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUm.room.history_visibility!nfxDdcgDfooxyiAzaB:localhost:8800mދmގ@anon-20191002_181700-583:localhost:8800$~e/Q ]$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4m.room.join_rules!nfxDdcgDfooxyiAzaB:localhost:8800mމ[mފ@anon-20191002_181700-583:localhost:8800&}e3Q ]$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQm.room.power_levels!nfxDdcgDfooxyiAzaB:localhost:8800mކKmއ@anon-20191002_181700-583:localhost:8800 a} { y w u sqomkigeca~6eeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~5eeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800~4eeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800~3eeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~2eeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800~1eeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800~0eeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~/eeQ$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~.eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~-eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~,eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800~+eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~*eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~)eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800~(eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~'eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~&eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800~%eeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~$eeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~#eeQ$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~"eeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800~!eeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~ eeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800 47So6RnUQr9  V   r 9 Up  o6Rn58e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMsha256 8e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEsha2568e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgsha256o8e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNssha256T8e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAsha2568e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6ssha2568e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1Isha2568e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Ysha256 U8e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogsha256k8e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slgsha256 #8e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgsha256 u8e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwsha256 -8e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYssha2568e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Asha2568e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlIsha2568e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0ssha2568e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91Msha256 8e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4sha2568e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXosha256b8e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8sha256'8e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgsha256 b8e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgsha256t8e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8sha256=8e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4sha2568e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0sha256 l8e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3ssha256 98e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2osha256 :8e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8sha256 O8e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawsha256Q8e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMsha2568e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEsha2568e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEsha256!8e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7ussha256$8e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRksha2568e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQsha2568e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARwsha2568e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBssha2568e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84sha256v8e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMssha256 '8e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Qsha2568e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUsha2568e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0sha2567e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iIsha2568e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPksha2568e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0sha256 8e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEsha25647e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQsha2568e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUsha2568e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgsha2568e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgsha256S8e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4sha256`8e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCosha256 Pm< xG e 4  p ?  { J  U $ ` /k: vEP[*f5q@|KV%.] @anon-20191002_181700-667:localhost:8800 .] @anon-20191002_181700-666:localhost:8800 v.] @anon-20191002_181700-665:localhost:8800 m.] @anon-20191002_181700-664:localhost:8800 g.] @anon-20191002_181700-663:localhost:8800 ^.] @anon-20191002_181700-662:localhost:8800 W.] @anon-20191002_181700-661:localhost:8800 Y.] @anon-20191002_181700-660:localhost:8800 K.] @anon-20191002_181700-659:localhost:8800 M.] @anon-20191002_181700-658:localhost:8800 A. ] @anon-20191002_181700-657:localhost:8800 8. ] @anon-20191002_181700-656:localhost:8800 +. ] @anon-20191002_181700-655:localhost:8800 &. ] @anon-20191002_181700-654:localhost:8800 . ] @anon-20191002_181700-653:localhost:8800 .] @anon-20191002_181700-652:localhost:8800 .]@anon-20191002_181700-651:localhost:8800 .]@anon-20191002_181700-650:localhost:8800 .]@anon-20191002_181700-649:localhost:8800 .]@anon-20191002_181700-648:localhost:8800 .]@anon-20191002_181700-647:localhost:8800 .] @anon-20191002_181700-646:localhost:8800 .] @anon-20191002_181700-645:localhost:8800 .] @anon-20191002_181700-644:localhost:8800 .] @anon-20191002_181700-643:localhost:8800 .~] @anon-20191002_181700-642:localhost:8800 .}] @anon-20191002_181700-641:localhost:8800 .|] @anon-20191002_181700-640:localhost:8800 .{] @anon-20191002_181700-639:localhost:8800 .z] @anon-20191002_181700-638:localhost:8800 .y] @anon-20191002_181700-637:localhost:8800 .x]@anon-20191002_181700-636:localhost:8800 .w] @anon-20191002_181700-635:localhost:8800 .v] @anon-20191002_181700-634:localhost:8800 .u] @anon-20191002_181700-633:localhost:8800 .t] @anon-20191002_181700-632:localhost:8800 .s]@anon-20191002_181700-631:localhost:8800 .r]@anon-20191002_181700-630:localhost:8800 .q] @anon-20191002_181700-628:localhost:8800 .p]@anon-20191002_181700-627:localhost:8800 .o] @anon-20191002_181700-626:localhost:8800 .n] @anon-20191002_181700-625:localhost:8800 .m] @anon-20191002_181700-624:localhost:8800 .l] @anon-20191002_181700-623:localhost:8800 |.k] @anon-20191002_181700-622:localhost:8800 w.j]@anon-20191002_181700-621:localhost:8800 m.i] @anon-20191002_181700-620:localhost:8800 r.h] @anon-20191002_181700-619:localhost:8800 l.g]@anon-20191002_181700-618:localhost:8800 g.f] @anon-20191002_181700-617:localhost:8800 g.e] @anon-20191002_181700-616:localhost:8800 `.d]@anon-20191002_181700-615:localhost:8800 Y.c] @anon-20191002_181700-614:localhost:8800 Z.b]@anon-20191002_181700-613:localhost:8800 P.a] @anon-20191002_181700-612:localhost:8800 Q.`]@anon-20191002_181700-611:localhost:8800 B._] @anon-20191002_181700-610:localhost:8800 H.^] @anon-20191002_181700-609:localhost:8800 G.]] @anon-20191002_181700-608:localhost:8800 F.\]@anon-20191002_181700-604:localhost:8800 .[] @anon-20191002_181700-606:localhost:8800 <.Z] @anon-20191002_181700-605:localhost:8800 :.Y]@anon-20191002_181700-602:localhost:8800 .X] @anon-20191002_181700-603:localhost:8800 '.W]@anon-20191002_181700-600:localhost:8800 .V] @anon-20191002_181700-601:localhost:8800 U7@admin:localhost:8800 .T]@anon-20191002_181700-598:localhost:8800 .S]@anon-20191002_181700-597:localhost:8800 .R]@anon-20191002_181700-596:localhost:8800 .Q]@anon-20191002_181700-595:localhost:8800 .P]@anon-20191002_181700-593:localhost:8800 .O]@anon-20191002_181700-591:localhost:8800 .N]@anon-20191002_181700-590:localhost:8800 .M]@anon-20191002_181700-589:localhost:8800 .L]@anon-20191002_181700-588:localhost:8800 .K]@anon-20191002_181700-587:localhost:8800 .J]@anon-20191002_181700-586:localhost:8800 .I]@anon-20191002_181700-585:localhost:8800 .H] @anon-20191002_181700-584:localhost:8800  DHzIe0`- ] ( \ ) Y $ T ! Q T!QN~I}J{HxC2]@anon-20191002_181700-661:localhost:8800a4]@anon-20191002_181700-660:localhost:8800m2]@anon-20191002_181700-631:localhost:8800aS2]@anon-20191002_181700-630:localhost:8800aR2[@anon-20191002_181700-62:localhost:8800mq0[@anon-20191002_181700-62:localhost:8800ap4]@anon-20191002_181700-628:localhost:8800mQ2]@anon-20191002_181700-628:localhost:8800aP2]@anon-20191002_181700-627:localhost:8800aO4]@anon-20191002_181700-626:localhost:8800mN2]@anon-20191002_181700-660:localhost:8800a2[@anon-20191002_181700-65:localhost:8800mv0[@anon-20191002_181700-65:localhost:8800at4]@anon-20191002_181700-659:localhost:8800m2]@anon-20191002_181700-659:localhost:8800a4]@anon-20191002_181700-658:localhost:8800m2]@anon-20191002_181700-658:localhost:8800a4]@anon-20191002_181700-657:localhost:8800m2]@anon-20191002_181700-657:localhost:8800a4]@anon-20191002_181700-656:localhost:8800m2]@anon-20191002_181700-656:localhost:8800a4]@anon-20191002_181700-655:localhost:8800m~2]@anon-20191002_181700-655:localhost:8800a}4]@anon-20191002_181700-654:localhost:8800m|2]@anon-20191002_181700-654:localhost:8800a{4]@anon-20191002_181700-653:localhost:8800mz2]@anon-20191002_181700-653:localhost:8800ay4]@anon-20191002_181700-652:localhost:8800mx2]@anon-20191002_181700-652:localhost:8800aw2]@anon-20191002_181700-651:localhost:8800av2]@anon-20191002_181700-650:localhost:8800au2[@anon-20191002_181700-64:localhost:8800mw0[@anon-20191002_181700-64:localhost:8800au2]@anon-20191002_181700-649:localhost:8800at2]@anon-20191002_181700-648:localhost:8800as2]@anon-20191002_181700-647:localhost:8800ar4]@anon-20191002_181700-646:localhost:8800mq2]@anon-20191002_181700-646:localhost:8800ap4]@anon-20191002_181700-645:localhost:8800mo2]@anon-20191002_181700-645:localhost:8800am4]@anon-20191002_181700-644:localhost:8800mn2]@anon-20191002_181700-644:localhost:8800al4]@anon-20191002_181700-643:localhost:8800mk2]@anon-20191002_181700-643:localhost:8800aj4]@anon-20191002_181700-642:localhost:8800mi2]@anon-20191002_181700-642:localhost:8800ah4]@anon-20191002_181700-641:localhost:8800mg2]@anon-20191002_181700-641:localhost:8800af4]@anon-20191002_181700-640:localhost:8800me2]@anon-20191002_181700-640:localhost:8800ad2[@anon-20191002_181700-63:localhost:8800ms0[@anon-20191002_181700-63:localhost:8800ar4]@anon-20191002_181700-639:localhost:8800mc2]@anon-20191002_181700-639:localhost:8800ab4]@anon-20191002_181700-638:localhost:8800ma2]@anon-20191002_181700-638:localhost:8800a`4]@anon-20191002_181700-637:localhost:8800m_2]@anon-20191002_181700-637:localhost:8800a^4]@anon-20191002_181700-636:localhost:8800m]2]@anon-20191002_181700-636:localhost:8800a\4]@anon-20191002_181700-635:localhost:8800m[2]@anon-20191002_181700-635:localhost:8800aZ4]@anon-20191002_181700-634:localhost:8800mY2]@anon-20191002_181700-634:localhost:8800aX4]@anon-20191002_181700-633:localhost:8800mW2]@anon-20191002_181700-633:localhost:8800aV4]@anon-20191002_181700-632:localhost:8800mU2]@anon-20191002_181700-632:localhost:8800aT   *tneQau$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3076}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw"], "type": "m.room.join_rules", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043241158, "hashes": {"sha256": "wNPVzazT635LfNvf3tcTwp1qbKj9HcWSgzZ4eshHbI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bvgLoQx6BX788G+4Yd0ZYVfYNgVb/cOdbFm/I4K0n3pyPbb8E3rDqUVgVVECucEnHJ3kz5OEf5i2u9GqnEmwDw"}}, "unsigned": {"age_ts": 1570043241158}}kmeQac$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3075}{"auth_events": ["$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "type": "m.room.power_levels", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"users": {"@anon-20191002_181700-584:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043240229, "hashes": {"sha256": "QHoQv1NT5aUPf2kSj4Lz5H18YI14GvXGWntrCb4UUbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bgKdUhGqE7TR9h86KlQ3R/+ETrpg8+9izXGaU6GafawtGhO9rLsEU31N71ychkx6c42nw5TicvLfM6J6FsKsCw"}}, "unsigned": {"age_ts": 1570043240229}}vleQay$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3074}{"auth_events": ["$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No"], "prev_events": ["$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No"], "type": "m.room.member", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-584", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-584:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043239616, "hashes": {"sha256": "xizzAk+mpC+kbpNt5feBylaVjV42AG9ql0NDR3gwHbo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aeftlQBNSWVkUDBynu4obtyXoyQdx3tdsSe2penYKRo/62S0AT+aYsFzKoqeqxifuquc9Gsef388WxVXqNrCBw"}}, "unsigned": {"age_ts": 1570043239616}}ikeQa_$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3073}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-584:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043238656, "hashes": {"sha256": "Ij2Gd715yD0I8fbwvjKPmYVJsD9sauTOBr7NCcD5H7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y4ufO754+u6rOdMKr+jGMtvFW6x11JbGWbkLJ9Yvq2/XRkx2cUBiJLFltZtPh0OK0dGfhGpQnMzPwbhsrAB2Bg"}}, "unsigned": {"age_ts": 1570043238656}} 7JH@@ B  B  B  D  D FFFHHJ J T?]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIRm_=[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGm\3?]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEmߨ!3?]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUm߀2?]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDmFp0?]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEmf1?]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZWm.?]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJm?/?]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXAm^?]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGUmf]?]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHSmА\?]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm[?]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUOm\Z=[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQIm8?]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWAmY?]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGGmRX?]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOSmNW?]!@anon-20191002_181700-646:localhost:8800HFMIURTAJAm♪V?]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVGmlU?]!@anon-20191002_181700-644:localhost:8800INFGSFBNKUmlqT?]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQm9WS?]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQmR?]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVIm}Q?]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQNmP=[!@anon-20191002_181700-63:localhost:8800VLTVDGDALOmK6?]!@anon-20191002_181700-639:localhost:8800VIDPYYIORGmᷱO?]!@anon-20191002_181700-638:localhost:8800AMILRIOBVFmVN?]!@anon-20191002_181700-637:localhost:8800SOCIZPGICGmqM?]!@anon-20191002_181700-636:localhost:8800EGOZKYJYMNmMHL?]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOLm3K?]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJGmJ?]!@anon-20191002_181700-633:localhost:8800TRECTOOCOTmI?]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWEmH?]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZmMG?]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPEmF=[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYXms5?]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTXmE?]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPWmɓD?]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWOmC?]!@anon-20191002_181700-625:localhost:8800LXKNSEODEImࠢB?]!@anon-20191002_181700-624:localhost:8800AATHUMCUILmA?]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUDmx@?]!@anon-20191002_181700-622:localhost:8800IAPOATKCLUmb??]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQmO>=[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUm^4?]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVVm5=?]!@anon-20191002_181700-618:localhost:8800KPRKVKAABYm4  8 v D  V |P J  J >v P$ *jc D   W %p 1| \ +1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI+1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ w1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc11e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMw1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMof1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIM1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI}1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagv1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k \1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwg1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh061e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu441e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsK +1e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc j1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 l1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYj1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0&1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU]1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY<1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI`1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Ma1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Z1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY_1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ 1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg c1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQI1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y J1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k x ~ wk~ireQa_$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3080}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-601:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043256635, "hashes": {"sha256": "6eLfkOf9rp1SCdcjUDLlpJJV7sgmoBXBEBtMe+Rrgm4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "08gRa7sMhQnkZdzHiyUpz+K1KXHFe9d+t8ckHOShtWeTNYa9zgHf8Q2q9PhkDz6QtfawoVx5X02d6o4oNvdZBQ"}}, "unsigned": {"age_ts": 1570043256635}}qeQm$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "txn_id": "566", "stream_ordering": 3079}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw"], "type": "m.room.message", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"body": "synced", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043244236, "hashes": {"sha256": "P7ot4yg8MlR7PjG8Y8Hw0sHBCILLq13dja9EQmtGNf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NysEzmtpQSCQ664EPGPvM07YZ2QUGJZ9YOITakeoZMf+3FfT5iciZryhoi9cPwfbdhmwulj0qW8BanjEQSgOAw"}}, "unsigned": {"age_ts": 1570043244236}}peQm$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "txn_id": "565", "stream_ordering": 3078}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg"], "type": "m.room.message", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"body": "synced", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043243313, "hashes": {"sha256": "mWiJvWYsC5D/+sB8dGvkl/rDJ3KndVGeIOpVRhq0YW0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NBpFYHlE7/SPrMXfVqhjQsYilfu2mbO6R8SeJxzV8KM/rgHO+2wl8WsRjJmoWQaLO7MkqLvzatiCmpo9O7WWAQ"}}, "unsigned": {"age_ts": 1570043243313}}oeQa$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3077}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA"], "type": "m.room.history_visibility", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043241828, "hashes": {"sha256": "Do+kC8U4LlVh4GeBAzoBTMv5MuEe+8UZeD8qlahGhpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MB3+hxFdOGuQg6jd3mq4e0c8AqX5t+FsfWiQleXTizLhiyHUWZyZXdqgkL8MEmRCS3BhimHgk+f3sVpqweJyCw"}}, "unsigned": {"age_ts": 1570043241828}} i 4 g i5 h1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgok1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3goh1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQoj1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85Qom1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawol1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgoo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwoe1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwoi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4Aon1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQoc1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgod1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQog1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAof KvHb6 ~ P " l >  X * t F  ` 2 |N h: V(pB\.vHd6~P"l19-]@anon--]@anon-20191002_181700-680:localhost:8800+[@anon-20191002_181700-67:localhost:8800W-]@anon-20191002_181700-679:localhost:8800-]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-677:localhost:8800-]@anon-20191002_181700-676:localhost:8800-]@anon-20191002_181700-675:localhost:8800-]@anon-20191002_181700-674:localhost:8800-]@anon-20191002_181700-673:localhost:8800-]@anon-20191002_181700-672:localhost:8800-]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800-]@anon-20191002_181700-669:localhost:8800-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800-]@anon-20191002_181700-662:localhost:8800-]@anon-20191002_181700-661:localhost:8800-]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800U-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800-]@anon-20191002_181700-654:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-650:localhost:8800+[@anon-20191002_181700-64:localhost:8800V-]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800~-]@anon-20191002_181700-641:localhost:8800}-]@anon-20191002_181700-640:localhost:8800|+[@anon-20191002_181700-63:localhost:8800T-]@anon-20191002_181700-639:localhost:8800{-]@anon-20191002_181700-638:localhost:8800z-]@anon-20191002_181700-637:localhost:8800y-]@anon-20191002_181700-636:localhost:8800x-]@anon-20191002_181700-635:localhost:8800w-]@anon-20191002_181700-634:localhost:8800v-]@anon-20191002_181700-633:localhost:8800u-]@anon-20191002_181700-632:localhost:8800t-]@anon-20191002_181700-631:localhost:8800s-]@anon-20191002_181700-630:localhost:8800r+[@anon-20191002_181700-62:localhost:8800S-]@anon-20191002_181700-628:localhost:8800q-]@anon-20191002_181700-627:localhost:8800p-]@anon-20191002_181700-626:localhost:8800o-]@anon-20191002_181700-625:localhost:8800n-]@anon-20191002_181700-624:localhost:8800m-]@anon-20191002_181700-623:localhost:8800l-]@anon-20191002_181700-622:localhost:8800k-]@anon-20191002_181700-621:localhost:8800j-]@anon-20191002_181700-620:localhost:8800i+[@anon-20191002_181700-61:localhost:8800R-]@anon-20191002_181700-619:localhost:8800h-]@anon-20191002_181700-618:localhost:8800g-]@anon-20191002_181700-617:localhost:8800f-]@anon-20191002_181700-616:localhost:8800e-]@anon-20191002_181700-615:localhost:8800d-]@anon-20191002_181700-614:localhost:8800c-]@anon-20191002_181700-613:localhost:8800b-]@anon-20191002_181700-612:localhost:8800a-]@anon-20191002_181700-611:localhost:8800` KvHb6 ~ P " l >  X * t F  ` 2 |N h: V(pB\.vHd6~P"l19-]@anon--]@anon-20191002_181700-680:localhost:8800+[@anon-20191002_181700-67:localhost:8800W-]@anon-20191002_181700-679:localhost:8800-]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-677:localhost:8800-]@anon-20191002_181700-676:localhost:8800-]@anon-20191002_181700-675:localhost:8800-]@anon-20191002_181700-674:localhost:8800-]@anon-20191002_181700-673:localhost:8800-]@anon-20191002_181700-672:localhost:8800-]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800-]@anon-20191002_181700-669:localhost:8800-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800-]@anon-20191002_181700-662:localhost:8800-]@anon-20191002_181700-661:localhost:8800-]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800U-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800-]@anon-20191002_181700-654:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-650:localhost:8800+[@anon-20191002_181700-64:localhost:8800V-]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800~-]@anon-20191002_181700-641:localhost:8800}-]@anon-20191002_181700-640:localhost:8800|+[@anon-20191002_181700-63:localhost:8800T-]@anon-20191002_181700-639:localhost:8800{-]@anon-20191002_181700-638:localhost:8800z-]@anon-20191002_181700-637:localhost:8800y-]@anon-20191002_181700-636:localhost:8800x-]@anon-20191002_181700-635:localhost:8800w-]@anon-20191002_181700-634:localhost:8800v-]@anon-20191002_181700-633:localhost:8800u-]@anon-20191002_181700-632:localhost:8800t-]@anon-20191002_181700-631:localhost:8800s-]@anon-20191002_181700-630:localhost:8800r+[@anon-20191002_181700-62:localhost:8800S-]@anon-20191002_181700-628:localhost:8800q-]@anon-20191002_181700-627:localhost:8800p-]@anon-20191002_181700-626:localhost:8800o-]@anon-20191002_181700-625:localhost:8800n-]@anon-20191002_181700-624:localhost:8800m-]@anon-20191002_181700-623:localhost:8800l-]@anon-20191002_181700-622:localhost:8800k-]@anon-20191002_181700-621:localhost:8800j-]@anon-20191002_181700-620:localhost:8800i+[@anon-20191002_181700-61:localhost:8800R-]@anon-20191002_181700-619:localhost:8800h-]@anon-20191002_181700-618:localhost:8800g-]@anon-20191002_181700-617:localhost:8800f-]@anon-20191002_181700-616:localhost:8800e-]@anon-20191002_181700-615:localhost:8800d-]@anon-20191002_181700-614:localhost:8800c-]@anon-20191002_181700-613:localhost:8800b-]@anon-20191002_181700-612:localhost:8800a-]@anon-20191002_181700-611:localhost:8800`  * T~=g=]!cF@anon-20191002_181700-601:localhost:8800BRBWCFMZLMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJhLTlVUEkxMTZMaDcrfnAKMDAyZnNpZ25hdHVyZSCVL4wOss3stQBqS0T2dMMSFgrqGKCdKqLQErziY58pOwo;<7!1E@admin:localhost:8800GMJMIKRCODMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyOGNpZCB1c2VyX2lkID0gQGFkbWluOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZis6ZT1Wc1c5ZDdQeHk2WAowMDJmc2lnbmF0dXJlIHqtTk4Xh7-OYbB6u-Bib0xNU0qc9P4IS6T4-ZrZOs8JCgg;]!cD@anon-20191002_181700-598:localhost:8800TGNIJBJLORMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEA0fmc3Y0QxWUdmKzQ6O2IKMDAyZnNpZ25hdHVyZSBG-uobgFAmq9NLJXvEdSpgFgmN1SswLvdwubfHzKrPbQog:]!cC@anon-20191002_181700-597:localhost:8800TEPJNKLEKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhTQTFmTnE7LUtBQHlCTEMKMDAyZnNpZ25hdHVyZSB55WriqUdXCaW2zuQkGHisLRCQSwSiwmIsJDDKATirEAog9]!cB@anon-20191002_181700-596:localhost:8800WNSHUZKVHWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF8jcExhLjZqWioqb3JJTGIKMDAyZnNpZ25hdHVyZSATTRbNO7ghd-MJRhbJOUDzReRA2eNpboVfGfaE7b5togog8]!cA@anon-20191002_181700-596:localhost:8800XLWTYGZVSGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX153K2cxK1BOU2JSS3IKMDAyZnNpZ25hdHVyZSAe6JbkGlIFoVwqKgUpSQhIS91WBgnR3pTMnBpm3t9nswog7]!c@@anon-20191002_181700-595:localhost:8800HPPFUJBMSQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpIME1rMDJaNTVnQV4mKmQKMDAyZnNpZ25hdHVyZSDs0_JHyuwrzhsZIXxSBOdggNNwVbh6b2PSU7kjM6VnBAog6]!c?@anon-20191002_181700-593:localhost:8800MHLBNUKOHTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV1IzBqNDdWXm5ncklhR2MKMDAyZnNpZ25hdHVyZSDHpR8ZHjt5986DzBZP0MnU2IPu3q7JCmTn5Jzgxs2pmwog5]!c>@anon-20191002_181700-591:localhost:8800EHJUGKTSXTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWSmFLJl5ZK0heb2ZuOlkKMDAyZnNpZ25hdHVyZSAO7MSz5oG_iGGUxl0k6OcSlgjGpZGamFhhrRuRdokuIgog4]!c=@anon-20191002_181700-590:localhost:8800WKVIGIMVPRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFJQ2k6JnR1d2csZCtTYkoKMDAyZnNpZ25hdHVyZSA9wYUO1vJBMowK4IpWVG5FkeN2atNDe-McB9m6-qrfWQog3]!c<@anon-20191002_181700-589:localhost:8800WSMMMNHHRQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlYRj1wM05EOS5vXjFKVnoKMDAyZnNpZ25hdHVyZSBYYHFUdAxAnXimtmCEKeGe9KUUuXOT8Dkgh7rJMizMtgo ! C S c s +;K[k{up ]@anon-20191002_181700-627:localhost:8800$2b$04$TpMNQpgqHE571L9TKBYowu8lPqTh07KbMRz6mt6qEwn59UnC18Hiy]uo ]@anon-20191002_181700-626:localhost:8800$2b$04$v26Z4qSgxmlTEo2k1K5cXOWob4OC76vAFhbibcxc9sskbTFE4uaz2]un ]@anon-20191002_181700-625:localhost:8800$2b$04$2jyEtdBsKLlMB5Fmyw8euOHgyBBjngUtizHXb8czH3W3bwVqWInvu]um ]@anon-20191002_181700-624:localhost:8800$2b$04$tQEzGyN8/nO/ec/OEngmO.ivfpfUrhfMMyAs0y284JDK3qXwPRSHa]ul ]@anon-20191002_181700-623:localhost:8800$2b$04$WOEPRy.Vzfg9aYvQyFhEvO5paGidc8p6CueJ6Bstod8nx5Y.F4zvm]uk ]@anon-20191002_181700-622:localhost:8800$2b$04$QAjvMuVgaQV2jXFm9yqx9OVVB0znaLc2w1m2dm1xUQIRS9eeq01Mm]uj ]@anon-20191002_181700-621:localhost:8800$2b$04$PgsHA/ZJLZEnO2rNLy.p5e.FR0lYlsBP/cc89LjaPtuYOoQYebqCW]ui ]@anon-20191002_181700-620:localhost:8800$2b$04$.a0HaMpK11arPc56ketCZ.EFnL9jnCn16XhINKpCa7piSe8i4XoYm]uh ]@anon-20191002_181700-619:localhost:8800$2b$04$7djKJv/cnYnBS8Iq39Bc2unYVXi1WtJW0w.UTnfbNqTY/udcwemwS]ug ]@anon-20191002_181700-618:localhost:8800$2b$04$bXnfCmgdFB0FzpmVQoT4MO23xHiWsya7XlpU59DuMbwe1jw0mN9QS]uf ]@anon-20191002_181700-617:localhost:8800$2b$04$saBVWzLm7MTcatZM3mm8muPFmrkLvS7LIpjZyEzGCVSEpY6GgXgre]ue ]@anon-20191002_181700-616:localhost:8800$2b$04$tlftjsa.rnfrjcWlNE/db.VaBbzQGv.z/i7Hsjelh0wrs2pbiNKGm]ud ]@anon-20191002_181700-615:localhost:8800$2b$04$bc.7ZUNo0PABPIizXyjH8u29OGbs2UmjQ0dNafhZKOEAtK/50A44.]uc ]@anon-20191002_181700-614:localhost:8800$2b$04$thRyz9cKz5s19QDniIk8l.Sykg5cwrRAMgRg/qh7GW.gqKGY4O76e]ub ]@anon-20191002_181700-613:localhost:8800$2b$04$sDQOoCEJ.7JFL6x1flop1.Xvtq.DOejY7TkuS/Gz0Pbv9sryw3Vky]ua ]@anon-20191002_181700-612:localhost:8800$2b$04$r6S4CgB/bHkl60xkI2IePe6UQqR9G1pQjZ8rRqdOwnz/mqFgWkVuG]u` ]@anon-20191002_181700-611:localhost:8800$2b$04$N//TQETE283GCPGuWKU9zeBKKxNjBPkfX5TftXpA1tND1OBUDpipW]u_ ]@anon-20191002_181700-610:localhost:8800$2b$04$uRi3W3VtrIRkrbnY6iW2O.t.312Z4TWj1AlHIQw2xMVzDRvQpnuIm]u^ ]@anon-20191002_181700-609:localhost:8800$2b$04$0GlXOMGWk/cBjpw8lJzEfe16KMxBX6FtkY1EnbSehPaJSdVksHZ6.]u] ]@anon-20191002_181700-608:localhost:8800$2b$04$NYQvqTbgXafKv/Aj.Sbx8eN89Whyqb9oPlUi8VcGIQPU5wK.U6sBi]u\ ] @anon-20191002_181700-604:localhost:8800$2b$04$qX0ZqcpyhDZJz3q8CNCl/.QJusfuEU2jeP/KrNWCsWz2qBSjcxSia]u[ ]@anon-20191002_181700-606:localhost:8800$2b$04$YL3o.00g5LUAS9IsKKMnhO92n3dQDv3ZwZK4K9ll3ZsO5O4M3UaRy]uZ ]@anon-20191002_181700-605:localhost:8800$2b$04$fAYXddt8J3TYg76vL88Oje0lUuCviOT8NaY1.ZP2dTdDaJMMrurES]uY ] @anon-20191002_181700-602:localhost:8800$2b$04$Y/4OyO7.qw5h1ngTSu3hAeq1TQJT.QppiyT6u9HJy4rQrlY3Yjwgq]uX ]@anon-20191002_181700-603:localhost:8800$2b$04$bKBVl2FLuYvqXxgW6lwRduIHQJmNDEzGdoSYjY1KunwLRIi0uLa8O]uW ] @anon-20191002_181700-600:localhost:8800$2b$04$rwJ.vvL2D9VSdq.UuGXKqO/Ys3eeiHMimJYjlBoMt4/7K9XQ6p4yy]wuV ]@anon-20191002_181700-601:localhost:8800$2b$04$0YWB7sdnThtkK.YezSIr3uYNwDqIWA6z5HXhWPtcNGIZTxeCBcIZu]wbU 7@admin:localhost:8800$2b$04$yCiYpoOoxsViaqflhWb5ueykG4DQHuYiXXybK0p3VMJy38Bn0NMFi]vuT ]@anon-20191002_181700-598:localhost:8800$2b$04$ZW9zPzpCNmRKgvzyNeMMFedFCi4nxMqXaeCPwvlnYTw3Inr0eEDC.]vuS ]@anon-20191002_181700-597:localhost:8800$2b$04$VrG9yZfxcyb9k6kv.WBLZ.kgWO7yRyk5FQ4DNodXC6Dfo3MfE602.]uuR ]@anon-20191002_181700-596:localhost:8800$2b$04$b2jh5sbxevFZI3RB5NY4fe.2pV/P8KAs3dU/F.OdExKbJzu7nzL1a]tuQ ]@anon-20191002_181700-595:localhost:8800$2b$04$nnDaSoMDctDf4Z7NsIJyHO8VHiQuRM8UJfK/p5ZFmPS8fGdpkVY4i]suP ]@anon-20191002_181700-593:localhost:8800$2b$04$mcO74g0QZMLXhRuruv0XrORln8.jzy1WQONa4YfEhTuKKGUp4oq5y]r  4 h 6mfd]c@anon-20191002_181700-620:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAo127.0.0.1>a[a@anon-20191002_181700-61:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCg127.0.0.14d]c@anon-20191002_181700-619:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQo127.0.0.1=d]c@anon-20191002_181700-618:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwo127.0.0.1]!cG@anon-20191002_181700-600:localhost:8800RBYKXFWHAPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhczI4NHpvOjIyKkp-ZHcKMDAyZnNpZ25hdHVyZSAD9JeJIP3Tupr5ZZbRQoM8Hx-snGBPdo-286DrRelJDwo  veQa$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3084}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk"], "type": "m.room.history_visibility", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043259762, "hashes": {"sha256": "ELrGAykYY/gdnovp5yVSWiPlQgCOJnqzVfgJjvFk+CQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6FDogRwI93Lg+vWwDrUBzvIodns08AZXZkJICfOE1BuS5Eu5qWDsNrcZZXOs/V2BngzQe3Bs1CNKH+FMyvzEDw"}}, "unsigned": {"age_ts": 1570043259762}}tueQau$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3083}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc"], "type": "m.room.join_rules", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043258979, "hashes": {"sha256": "eU74TQ+TQRSUz3jA0T9ghCkEX6tt0SrvZYJsBZoMHHI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eqDYsKhklijkunB0HolYQ/1Ltxv4QKYXTgDhPaJFq0p/qSqEmRq64IO5i2jJbShDrAnLDDLMyop9zD1sN2+/AA"}}, "unsigned": {"age_ts": 1570043258979}}kteQac$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3082}{"auth_events": ["$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "type": "m.room.power_levels", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"users": {"@anon-20191002_181700-601:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043258096, "hashes": {"sha256": "KIxaCu7mrbMmEZhvnbmItab+buGaQ3loeaF8OVvOssQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "emTr/E9AZnnAgxKB3vB/nDJwA7ZFLrumBVBSU4BYSZ2bAdNnSKqDGeI0GYKAltYG7Gy/stGxegBfbkZl5077CQ"}}, "unsigned": {"age_ts": 1570043258096}}vseQay$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3081}{"auth_events": ["$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U"], "prev_events": ["$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U"], "type": "m.room.member", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-601", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-601:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043257376, "hashes": {"sha256": "Kdq0csqjX5B0XLNRqrtXqp8YRq5uR6EKuNg5hG5ro2M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Elhfdf7pHewVW/tnco35Hnr/HrYZnVT+q8Jpl2PidnqqtZcna3T9Pz/j9C+KrWoYIDDrmps4kk1hcFKHSGBLCQ"}}, "unsigned": {"age_ts": 1570043257376}} yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  &qbSD5rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;, mV mx x xmp w wml v vmi% u umf t tmc> s sm[ r rmYB q qmV p pmSG o omO n nmG} m mmB l lm@ k km=X j jm8 i im6 h hm* g gm* c cm* b bm* a am&Q ` `m! _ _mm ^ ^mp ] ]m \ \m [ [m Z Zm Y Ym X Xm W WmF V Vm@ U Um[ T Tm S Sm R Rm Q Qm P Pmܩ O Om N Nm< M MmC L Lm K Kmʥ J Jmǩ I Im H Hm߾Y G Gm߻ F Fm߶ E Em߱ D Dm߱ C Cm߭ B Bmߩ A Amߦ @ @mߢ9 ? ?mߟu > >mߚa = =mߔ < <mߓZ ; ;mߎ : :m߉ 9 9m߅# 8 8m߃ 7 7m߀- 6 6my 5 5mt 4 4mnT 3 3mk 2 2mh 1 1m= ' 'mW - -mTl , ,mQ + +mM * *mJ ) )mGR ( (m  mc 0 0m_ / /m[T . .m$  mT  m  m  m!  m  m. mr mc m m m;  mޮ  mޫ1  mޥd  mޢ  mޟ%  mޜ  mޙ  mޔ> mދ mމ[ mކK mރ mހ mx6 mu mrz mo ml ma m^l mZ mX mU mLb mIm mE mB m? m m m m m mD mD m m% m m m m m m9 m0 mே mଳ m m? m] m m m?  m ~ ~m5 } }m | |m { {m z zm| y ym7t m4 m1 m. m+ m! mU m m m m m m m+ m mk m m m{ m mc mh m m m8 m mz m0 m? m2 m m| mŚ m m mݿ mݽ mݻ mݹ mݷ mݵ mݳV mݰ` mݮ! mݬF mݨ mݦ mݤ mݞ mݛ mݘ2 mݖ& mݓ mݎ m݌ m݊ m݈e m݆ m݄ m @`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    8 0 x p h ` X P H @ (   xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xpxph`XPH@80( h`XPH@80( xph`xpXPhH@ ) 4 ( 3 & 1 % 0 ,  +  *  )  (  !    "                                                           ~  }  |  z  y  x  w  v  u  t  t  r  q  p  o  n ~ m } k | j { i z h y g x f w e v c u b t a s ` r _ q ^ p ] o [ n Z m Y l X k W j V i V h U g S f R e Q d P c O b N a M ` K _ J ^ I ] H \ G [ F Z E Y D X C W B V A U @ T ? S > R = Q < P ; O : N 9 M 8 L 7 K 6 J 5 I 4 H 3 G 2 F 1 E 0 D / C . B - A + @ * ? ) > ( = ' < & ; % : $ 9 # 8 " 7 ! 6 5  4  3  2  1  0  /  .  -  ,  +  *  )  (  '  &  %  $  #  "  !                                                                                                                                                                                                       ' 2 # / " . ! -  '  &  %  $  #                                                 TK#a9 # t M %  _ 8[ {S [3 3 r J # k ^ 7Ks kC; Cs+cK(K('Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800'Q!vZGjXEXQoCaoUXnkCa:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800y'Q!yfizglmCXdcqCgDrTr:localhost:8800x'Q!zuCqeooOnfWkYrQdxA:localhost:8800q'Q!zuCqeooOnfWkYrQdxA:localhost:8800p'Q!zuCqeooOnfWkYrQdxA:localhost:8800o'Q!zuCqeooOnfWkYrQdxA:localhost:8800n'Q!zuCqeooOnfWkYrQdxA:localhost:8800m'Q!zuCqeooOnfWkYrQdxA:localhost:8800l'Q!vttkrtSyHEJXVMlvLo:localhost:8800k'Q!vttkrtSyHEJXVMlvLo:localhost:8800j'Q!vttkrtSyHEJXVMlvLo:localhost:8800i'Q!whuymJoLfUdkFdxoyE:localhost:8800h'Q!whuymJoLfUdkFdxoyE:localhost:8800g'Q!whuymJoLfUdkFdxoyE:localhost:8800f'Q!yTQmLDAxZscWKLMSWh:localhost:8800e'Q!yTQmLDAxZscWKLMSWh:localhost:8800d'Q!yTQmLDAxZscWKLMSWh:localhost:8800c'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800^'Q!yNfCaBMPezurwkJRAX:localhost:8800]'Q!wCsDjKBtuUbrmZgjsB:localhost:8800P'Q!vnFXnkCSfTbsSNKrtg:localhost:8800!'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:8800A'Q!zsXPhIPzeXXLvuazzQ:localhost:8800>'Q!tcYctHPiaKzsKgrXlU:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800&Q!zFdNewlKnUiMBxnYrN:localhost:8800y&Q!xwoIOPTGmJIlTXakxC:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800(&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800%&Q!wUuodvgsmAJqKJUBCQ:localhost:8800z'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:88001&Q!wIhMbfQzYbJobPdwyi:localhost:88000'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800@&Q!vVmSdclwPIqYDbnmPn:localhost:8800?'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800 'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800t'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800r'Q!uPxXJHJyFQwvpQLZNs:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800)'Q!uGpSboYkgxVNOqNeUG:localhost:8800('Q!tkajvIKHoOMWGsReBs:localhost:8800 G v D  | J  P  V $ \ *bh608n< tBzHZ(NTj1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4g1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4f1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4e 1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio 1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio 1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio 1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s G1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s F1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwC1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwB1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc Y1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y 1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y 1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y 1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0 1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0 1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0 1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k ^1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k ]1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k \1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwV1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwU1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwT1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE(1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE'1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE&1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI R1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI Q1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI P1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI 1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI 1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI 1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI l1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI k1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwH1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwG1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI01e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI/1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI.1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw J?  U  { #   > [ )$*p\ Dc>  j1 CiP7 IV p1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIC1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 _1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA -1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk 1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgW1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgV1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8v1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw ,1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo u1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM) 21e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg Z1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw}1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E<0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgg1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE51e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0m1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF400e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYh1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo>1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI=1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwW1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAY u^1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 81e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI c1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 21e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgX  nz fb^Z~ j v VRNJ r F~eeQ$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800}eeQ$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800seeQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800zeeQ$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800yeeQ$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800xeeQ$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800weeQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800veeQ$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800ueeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800teeQ$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800XeeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800WeeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800VeeQ$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800UeeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800TeeQ$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800SeeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800ReeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800QeeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800deeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800feeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800eeeQ$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800OeeQ$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800|eeQ$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800{eeQ$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800ieeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800heeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800geeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800PeeQ$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800ZeeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800YeeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800  veQay$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "stream_ordering": 3097}{"auth_events": ["$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8"], "prev_events": ["$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8"], "type": "m.room.member", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-603", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-603:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043270945, "hashes": {"sha256": "TyvyFuEG3Ji6iX5nejMvyYUH17d/yllu32FgZ5W4q9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ydyJ25V37WFCzImmSAQsUlmJaCD8wjfXaPkFZZXodof+lWRicRrNeJ5JIeZP71uEV5xmxzQEEU4GOtF3e+zYBg"}}, "unsigned": {"age_ts": 1570043270945}}ieQa_$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "stream_ordering": 3096}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-603:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043269612, "hashes": {"sha256": "lc9RfdS1owBZ/SJiETLUZo+U5Vz3CQGqQH+4oFaeq9Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/KRK0/92doNZt85uui1HHrhaOI3J4ePPEkT9KMGcYZmcERn0dBSRwKFy3xBl1BxAgMteXRDftU7U9UbkqfyUDA"}}, "unsigned": {"age_ts": 1570043269612}}eQw$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "txn_id": "576", "stream_ordering": 3095}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94"], "type": "m.room.message", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 10"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043267559, "hashes": {"sha256": "PXsZRAstrtF7xE4GVIpD4ktYOzXJlTPMb8Ro5GV3Lvo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rZjxXdNpsDxeJuKa61HK3uJy18+wMcF0VdFai20lgqHZZx+oB956RDJ4CpgSjm1+loyIqdeuwmT/vmtaWb8yCQ"}}, "unsigned": {"age_ts": 1570043267559}}nweQai$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3085}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA"], "type": "m.room.name", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"name": "A room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043261230, "hashes": {"sha256": "4JCkfB08GiDzuMPWVnrW2PTWosQtQ2kBzkP3lStTK4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XP9G3eBn4TJ98RPI6BDKDG2MF7Y3LhGW8hb+ba9hotrEKuicmCbegB3uBOnVE71ulKnC1Uge0Ik/0yJofb0kAw"}}, "unsigned": {"age_ts": 1570043261230}} Ct#k: * ha6OsAU < z / H   b \[ ) P  0  B V $1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAID1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCom1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE k1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA .1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 a1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA 41e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIE1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0 +1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM 1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc n21e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90W1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIF1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEi1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUykP1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM*1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw :1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz421e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI d1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw ?1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw51e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA 0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk81e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8q1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcT1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw~1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E=0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgh1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE61e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0n1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF410e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0s1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA j @  w _ -e3k9Yqj8pW>% w ^ ,! e 3   k 9  _ q ?-SSS? wE}L21e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM 1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s b1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 a1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc d1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj41e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY 1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 +1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso 1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU 1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk 1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras L1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLks1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI 1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI1$3:localhost:42455 b3$39:localhost:42455 1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMv1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is U1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ901e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU_1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Ak1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8W1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk3$48:localhost:42455 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUP3$45:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcW1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw|1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM_1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg]1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg @TMyDa,X% Q  } H  v A m 8  f 1](u@ l7\M'Mz4]@anon-20191002_181700-591:localhost:8800m44]@anon-20191002_181700-590:localhost:8800m44]@anon-20191002_181700-647:localhost:8800m464]@anon-20191002_181700-646:localhost:8800m454]@anon-20191002_181700-645:localhost:8800m444]@anon-20191002_181700-644:localhost:8800m434]@anon-20191002_181700-643:localhost:8800m424]@anon-20191002_181700-642:localhost:8800m414]@anon-20191002_181700-641:localhost:8800m401Y@anon-20191002_181700-5:localhost:8800m4-2[@anon-20191002_181700-59:localhost:8800m4,4]@anon-20191002_181700-598:localhost:8800m4 4]@anon-20191002_181700-597:localhost:8800m4 4]@anon-20191002_181700-596:localhost:8800m44]@anon-20191002_181700-596:localhost:8800m44]@anon-20191002_181700-595:localhost:8800m44]@anon-20191002_181700-593:localhost:8800m42[@anon-20191002_181700-58:localhost:8800m4+4]@anon-20191002_181700-589:localhost:8800m44]@anon-20191002_181700-588:localhost:8800m44]@anon-20191002_181700-587:localhost:8800m44]@anon-20191002_181700-586:localhost:8800m44]@anon-20191002_181700-585:localhost:8800m44]@anon-20191002_181700-640:localhost:8800m4/2[@anon-20191002_181700-63:localhost:8800m414]@anon-20191002_181700-639:localhost:8800m4.4]@anon-20191002_181700-638:localhost:8800m4-4]@anon-20191002_181700-637:localhost:8800m4,4]@anon-20191002_181700-636:localhost:8800m4+4]@anon-20191002_181700-635:localhost:8800m4*4]@anon-20191002_181700-634:localhost:8800m4)4]@anon-20191002_181700-633:localhost:8800m4(4]@anon-20191002_181700-632:localhost:8800m4'4]@anon-20191002_181700-631:localhost:8800m4&4]@anon-20191002_181700-630:localhost:8800m4%2[@anon-20191002_181700-62:localhost:8800m404]@anon-20191002_181700-628:localhost:8800m4$4]@anon-20191002_181700-627:localhost:8800m4#4]@anon-20191002_181700-626:localhost:8800m4"4]@anon-20191002_181700-625:localhost:8800m4!4]@anon-20191002_181700-624:localhost:8800m4 4]@anon-20191002_181700-623:localhost:8800m44]@anon-20191002_181700-622:localhost:8800m44]@anon-20191002_181700-620:localhost:8800m42[@anon-20191002_181700-61:localhost:8800m4/4]@anon-20191002_181700-619:localhost:8800m44]@anon-20191002_181700-618:localhost:8800m44]@anon-20191002_181700-617:localhost:8800m44]@anon-20191002_181700-616:localhost:8800m44]@anon-20191002_181700-615:localhost:8800m44]@anon-20191002_181700-614:localhost:8800m44]@anon-20191002_181700-613:localhost:8800m44]@anon-20191002_181700-612:localhost:8800m44]@anon-20191002_181700-611:localhost:8800m44]@anon-20191002_181700-610:localhost:8800m42[@anon-20191002_181700-60:localhost:8800m4.4]@anon-20191002_181700-609:localhost:8800m44]@anon-20191002_181700-608:localhost:8800m44]@anon-20191002_181700-605:localhost:8800m44]@anon-20191002_181700-604:localhost:8800m44]@anon-20191002_181700-603:localhost:8800m44]@anon-20191002_181700-602:localhost:8800m4 4]@anon-20191002_181700-601:localhost:8800m4 4]@anon-20191002_181700-600:localhost:8800m4  4 h 9md]c@anon-20191002_181700-644:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAo127.0.0.1Td]c@anon-20191002_181700-643:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwo127.0.0.1Sd]c@anon-20191002_181700-642:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgo127.0.0.1Rd]c@anon-20191002_181700-641:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQo127.0.0.1Qd]c@anon-20191002_181700-640:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgo127.0.0.1Pa[a@anon-20191002_181700-63:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCg127.0.0.16d]c@anon-20191002_181700-639:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAo127.0.0.1Od]c@anon-20191002_181700-638:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAo127.0.0.1Nd]c@anon-20191002_181700-637:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgo127.0.0.1Md]c@anon-20191002_181700-636:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SYnVqRiwwZVFsO1IzSHYKMDAyZnNpZ25hdHVyZSAGsSAyhrkFU-OZCtccNJK_X4gCUh51n0KT15bBg2OOGAo127.0.0.1Ld]c@anon-20191002_181700-635:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwo127.0.0.1K >CG K O  S  W  [ _ c$g(k,o0s4w8{<<5]!@anon-20191002_181700-646:localhost:8800HFMIURTAJAm4<4]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVGm4<3]!@anon-20191002_181700-644:localhost:8800INFGSFBNKUm4<2]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQm4<1]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQm4<0]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVIm4 9 4/*|%w rmhc TuQe D!UTAORDrNxIbSlGByAp:localhost:8800$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mkTtQe C!UTAORDrNxIbSlGByAp:localhost:8800$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9GgTsQe B!UTAORDrNxIbSlGByAp:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwITrQe A!UTAORDrNxIbSlGByAp:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYETqQe @!UTAORDrNxIbSlGByAp:localhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48TpQe ?!UTAORDrNxIbSlGByAp:localhost:8800$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8oToQe >!UTAORDrNxIbSlGByAp:localhost:8800$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gTnQe =!UTAORDrNxIbSlGByAp:localhost:8800$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4TmQe eeQ$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800~=eeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800~<eeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800~;eeQ$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800~:eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800~9eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~8eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800~7eeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800 {T (xh0  x PpH  ( X 0 P( H ` 8X0P@XpH h@`8 p XQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 %'Q!SBEprlZiuliFNSfNmz:localhost:8800m'Q!SBEprlZiuliFNSfNmz:localhost:8800l'Q!ROoilpDjLJfjKfSPIi:localhost:8800 ''Q!SBEprlZiuliFNSfNmz:localhost:8800o'Q!SBEprlZiuliFNSfNmz:localhost:8800n'Q!RmdhCjvouVLmyIHjaM:localhost:8800B'Q!RmdhCjvouVLmyIHjaM:localhost:8800A'Q!RmdhCjvouVLmyIHjaM:localhost:8800@'Q!RmdhCjvouVLmyIHjaM:localhost:8800?'Q!RmdhCjvouVLmyIHjaM:localhost:8800>'Q!RmdhCjvouVLmyIHjaM:localhost:8800='Q!RPfffkmSEbWggEjnoI:localhost:8800,'Q!RPfffkmSEbWggEjnoI:localhost:8800*'Q!RPfffkmSEbWggEjnoI:localhost:8800''Q!RPfffkmSEbWggEjnoI:localhost:8800$'Q!RPfffkmSEbWggEjnoI:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!SBEprlZiuliFNSfNmz:localhost:8800r'Q!SBEprlZiuliFNSfNmz:localhost:8800q'Q!SBEprlZiuliFNSfNmz:localhost:8800p'Q!RmdhCjvouVLmyIHjaM:localhost:8800D'Q!RmdhCjvouVLmyIHjaM:localhost:8800C'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800E'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800F'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RmwbYvIIQyPlHlClty:localhost:8800x'Q!RmwbYvIIQyPlHlClty:localhost:8800w'Q!RmwbYvIIQyPlHlClty:localhost:8800v'Q!RmdhCjvouVLmyIHjaM:localhost:8800H'Q!RmdhCjvouVLmyIHjaM:localhost:8800G'Q!SBEprlZiuliFNSfNmz:localhost:8800s'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 v'Q!SUDzkfFBgpuCANOxRS:localhost:8800 u'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 w'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800 'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 f'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 e 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 y'Q!SUDzkfFBgpuCANOxRS:localhost:8800 x'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ('Q!RmwbYvIIQyPlHlClty:localhost:8800{'Q!RmwbYvIIQyPlHlClty:localhost:8800z'Q!RmwbYvIIQyPlHlClty:localhost:8800y'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 h'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 g'Q!RSLvuCuAqKQQrKCxNq:localhost:8800  PI  V | J  $ ^ -e v D  3k9q? wE}KQW%]+j8p> 3c4Af2gzb61e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8q1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6we1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wd1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEp1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEV1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEo1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUL1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUK1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUJ1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA1e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA1e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw u1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw t1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk|1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk{1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskz1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agC1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agB1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agA1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k80e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4 1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYU1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYT1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYS1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw%1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E^1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E]1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E\1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8p2s1` tHz  IfTX=J~ tH 0 >q"Js=e/W"KD1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs 1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ 1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA  'Q$1570043429322ZfcNc:localhost:8800A 'Q$1570043195269hcCzg:localhost:88008 (1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 "1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUk1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgG1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAa'Q$1570043712439XdJFc:localhost:8800 'Q$1570043558384QrKsp:localhost:8800&O$157004173511wRnRr:localhost:8800 (1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI 1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I.1$3:localhost:37265V1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE}3$87:localhost:4245531e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0][1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx01e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo :%M$15700427086bDrAU:localhost:8829{0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE: 1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4 <1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts 1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk [1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAHu1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YY 1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs  3$67:localhost:424551e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 +1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQu 1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA82j1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgM1e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicU1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w*'Q$1570042666166IBpPy:localhost:8800$'Q$1570042620111taWCG:localhost:8800 C&O$157004182060gAdxi:localhost:8800 !&O$157004179138NbBYh:localhost:8800 6, S5^(PO x B   j 4  \ & ] O   x B 'k01e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMHw1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sG1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk 1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI g1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIB1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE 1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk+1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kb1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg ]1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE 1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9oo 5 f1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI ) 1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoJ 51e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0u1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E_51e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g 1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4 b 91e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE&n1e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi01e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8 1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE] 1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0 w1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 X1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY A 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4"1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I -1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM]1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y $1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo 1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34 m1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE v veQay$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3113}{"auth_events": ["$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw"], "prev_events": ["$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw"], "type": "m.room.member", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-605", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-605:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043284105, "hashes": {"sha256": "wB7W5moT5x4TZeYMB9t+ZrTIC/Xr/RQG02gfzU0Pr7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D2QXP4+u7YnTyR3LDb2aMCy7Umel/48FXDPMW/jgmFgLss4TKz1t9DOcRrxOd/5whg7q5+Oc++HqQXPVcF3pDA"}}, "unsigned": {"age_ts": 1570043284105}}ieQa_$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3112}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-605:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043283282, "hashes": {"sha256": "0RQUkERrWRpxT6ATBm9QirzH6cKdpqBYkxrakH5iYoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1JapPe4Dc/KdCWuCMzvcxFb4rz6C/KqfPa15YvVRYPC64x2dDmrjausS67RIRvz8jfJP1l+eHGV9lN/KfdzvCg"}}, "unsigned": {"age_ts": 1570043283282}}eQw$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "txn_id": "586", "stream_ordering": 3111}{"auth_events": ["$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E", "$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8", "$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs"], "prev_events": ["$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc"], "type": "m.room.message", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 10"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043280770, "hashes": {"sha256": "IdJ+anYFJyc1CLndadVeF+NehpH7f6wTvXKgKnyVg8c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mf2cbUi6Qzo9GHXpXTtUxknRLJyVHtWcJBPSnHkS0vPseM+5AYe7QXQU+2T3LYLTd7u69eu2Qn0GY34FK+YuCA"}}, "unsigned": {"age_ts": 1570043280770}}neQai$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "stream_ordering": 3101}{"auth_events": ["$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E", "$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8", "$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs"], "prev_events": ["$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U"], "type": "m.room.name", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"name": "A room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043274402, "hashes": {"sha256": "E2yRiI68MK1z5TKDbO0e6sPblBnaGBPzPMkN2Gv1YAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8OyHiywbhnoC7Frr5uIPYKjdvHXNBHuVdEqKrijK/nrkapIMrhLXhuzL7cXfN+DMBee72xOOny3mVhif/C31BQ"}}, "unsigned": {"age_ts": 1570043274402}} [  7= ' p  _ [EU[6e#Q ]$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUm.room.name!MXhwoqNXvexeDDSOZT:localhost:8800m߀-m߁@anon-20191002_181700-606:localhost:8800,5e?Q ]$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAm.room.history_visibility!MXhwoqNXvexeDDSOZT:localhost:8800mym|r@anon-20191002_181700-606:localhost:8800$4e/Q ]$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwm.room.join_rules!MXhwoqNXvexeDDSOZT:localhost:8800mtmu@anon-20191002_181700-606:localhost:8800&3e3Q ]$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgm.room.power_levels!MXhwoqNXvexeDDSOZT:localhost:8800mnTmps@anon-20191002_181700-606:localhost:8800 2e'Q ]$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcm.room.member!MXhwoqNXvexeDDSOZT:localhost:8800mkml@anon-20191002_181700-606:localhost:88001 e'Q  ]$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAm.room.create!MXhwoqNXvexeDDSOZT:localhost:8800mhmi-@anon-20191002_181700-606:localhost:8800 0e'Q ] $txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8m.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800 mcmc@anon-20191002_181700-607:localhost:8829 /e'Q ]$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0m.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800m_m`^@anon-20191002_181700-605:localhost:8800,-e?Q ]$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQm.room.history_visibility!zqQJfFCRlSEDPKlQPy:localhost:8800mWmX@anon-20191002_181700-605:localhost:8800e#Q ]$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0m.room.name!JnAKXOrlyisFUpgJPw:localhost:8800m$m%@anon-20191002_181700-603:localhost:8800,e?Q ]$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Um.room.history_visibility!JnAKXOrlyisFUpgJPw:localhost:8800mTm!@anon-20191002_181700-603:localhost:8800$e/Q ]$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNkm.room.join_rules!JnAKXOrlyisFUpgJPw:localhost:8800mm@anon-20191002_181700-603:localhost:8800&e3Q ]$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_Em.room.power_levels!JnAKXOrlyisFUpgJPw:localhost:8800mm@anon-20191002_181700-603:localhost:8800 e'Q ]$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsm.room.member!JnAKXOrlyisFUpgJPw:localhost:8800m!m@anon-20191002_181700-603:localhost:8800 e'Q ]$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8m.room.create!JnAKXOrlyisFUpgJPw:localhost:8800mmL@anon-20191002_181700-603:localhost:8800!'e)Q ]$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8m.room.message!JnAKXOrlyisFUpgJPw:localhost:8800m=m=@anon-20191002_181700-603:localhost:8800 )e'Q ]$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98m.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800mJmK2@anon-20191002_181700-605:localhost:8800( e'Q  ]$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwm.room.create!zqQJfFCRlSEDPKlQPy:localhost:8800mGRmG@anon-20191002_181700-605:localhost:8800 e#Q ]$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygm.room.name!XRAZJeoZBhGeHKKjaG:localhost:8800m.m@anon-20191002_181700-601:localhost:8800$,e/Q ]$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwm.room.join_rules!zqQJfFCRlSEDPKlQPy:localhost:8800mTlmU-@anon-20191002_181700-605:localhost:8800)+e9Q ]$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQm.room.canonical_alias!zqQJfFCRlSEDPKlQPy:localhost:8800mQmR[@anon-20191002_181700-605:localhost:8800&*e3Q ]$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXAm.room.power_levels!zqQJfFCRlSEDPKlQPy:localhost:8800mMmN@anon-20191002_181700-605:localhost:8800!e)Q ]$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicm.room.message!XRAZJeoZBhGeHKKjaG:localhost:8800m m @anon-20191002_181700-601:localhost:8800!.e)Q ]$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Ym.room.aliases!zqQJfFCRlSEDPKlQPy:localhost:8800m[Tm\@anon-20191002_181700-605:localhost:8800 {L b08 jp  v D >)6 | J # U O P   V $[   \I *n<B ht)1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA R1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 11e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIi1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0d1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg "1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM =1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 11e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA 1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M51e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA11e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg 1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8c1e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gK1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec01e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw)1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg 1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w 1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cw1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cu1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cr1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMg1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4o1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgR1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ*1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLku1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08P1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsG1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsF1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMi1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU01e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4`1e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk"1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0%1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv081e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4E1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ51e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ i1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 J1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo 31e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU 1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM21e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8 A R n5 R n 6 n5  QQm 74 S  o qP 5 U  r9 R  8e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88sha256 '8e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5ksha2568e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qsha2568e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhosha256T8e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEsha256{8e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMsha256!8e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcsha2568e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wsha2568e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Ygsha2568e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Isha2568e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyAsha256~8e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYsha256@8e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52osha2568e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhkssha2568e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqosha2568e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMsha256M8e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8sha256S8e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYsha2568e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8sha2568e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNosha2568e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Isha256M8e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgsha2568e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8sha2567e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdUsha2568e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4sha2568e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8ssha2568e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQsha256 88e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEsha256 8e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8sha256 8e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBEsha256 8e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-wwsha256 8e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgsha256 8e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Msha256 w8e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAsha256 j8e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIsha256 q8e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYsha256 O8e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIwsha256 8e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQsha2568e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOIsha256 8e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcsha256W8e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYsha256T8e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgsha256 8e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhksha256 8e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMsha256 I8e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwsha256 68e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dwsha256 8e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Qsha256 8e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMsha2568e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMsha2568e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKosha256r8e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMsha2568e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAsha2568e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIsha256 8e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMsha256 @8e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwsha256<8e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIsha2568e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6Asha256 V8e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYsha2568e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0sha2568e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuksha2568e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYsha256x7e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8sha256I8e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgsha2568e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtssha2568e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUsha256  eQa$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3117}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw"], "type": "m.room.history_visibility", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043287297, "hashes": {"sha256": "p00Veo6+2stUCmyyzbHH+4hJc52+SnnQ8NTpclqZqK8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o3T8Pngs3Cb6WUbHGM/oyunwuGkyaCyS+4IUnnMf7e1kXOBIbMrXA+WCmefH9E8acVo1eVrP6wNQfBuTTVqtCA"}}, "unsigned": {"age_ts": 1570043287297}}teQau$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3116}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ"], "type": "m.room.join_rules", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043286636, "hashes": {"sha256": "nPbnGNow0TfJQ61UpFGg9FAE40zW7LzgOLd4b8Lzoyg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qBRkIcqd03ID5mRkPNYN2g19IeSWwDIsW83U4rGJxtZi7H896ieet3nhoLxT7ZNUNmHCkgueT32FbaDcPNFBDg"}}, "unsigned": {"age_ts": 1570043286636}} eQa!$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3115}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA"], "type": "m.room.canonical_alias", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"alias": "#__ANON__-25:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043285894, "hashes": {"sha256": "YZECFElZk/rPd+NaPUJ2mBHJPidojVoQf8QrnSTCcf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y/OQMr5S6j81LAmtet2xCqabSjs/fVJ9Xh74SqvG9EKld0FJk1og9OjUerkvJItgUBSyiBW307dsRVb8bz33Ag"}}, "unsigned": {"age_ts": 1570043285894}}keQac$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3114}{"auth_events": ["$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "type": "m.room.power_levels", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"users": {"@anon-20191002_181700-605:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043284865, "hashes": {"sha256": "k2U+eBn+8dq6yoL8VFdxeLd2e5zR9bxr18VefTzAHiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "348LYcLr63d5NAldbTvAfBPs1HSBFnROLveliCrpREkA22rBOJXpzPfQhPVtcetmnhV8e/WA75VW3hPZ7oSuAg"}}, "unsigned": {"age_ts": 1570043284865}} , 8 - { " p  e CNZOD9.|#qf V-eL$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Ggsha25600* b_E$g"hV,eL$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIsha256//7 z)YwkV+eL$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEsha256ƠqY-CF C V*eL$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48sha256WVnx_kߺ,0=EN;9cV)eL$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8osha256Z kX]kA3E+(o>pV(eL$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gsha2561ohІe;>5(b>ji2cxV'eL$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4sha256SͩCP͏Ƹvڶ}V&eL$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4sha256^({;c  MZu(ΥOV%eL$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8sha256 E%3 fi_o+Jvhcw3K?V$eL$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcsha256X^XVa<𹝔 6 )rkWV#eL$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0sha256bWb5I0FͭV"eL$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUsha256,)t"f4iSc`V!eL$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4sha256Qx_+>f䅾2q6!J&V eL$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUsha256{46Iwm7,0;᫂ RwU*5VeL$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAsha256:rb}4EdK5>j VeL$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwsha256A*eC;bBp[ ;FVeL$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgsha256g`[|4铥3F5VeL$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcsha256L,<}`s$ѦHywb`VeL$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAsha256(0OIuUI0Qrv$.<ܐVeL$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8sha256(g@lXM!J>x k\ѮeOVeL$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0sha256H1(}j"੍VeL$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Ysha256PCdTs+ijwX _?VeL$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQsha256LE[t|XXy}ѽ X"VeL$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwsha256Ou.ҧ{[i4Bm}VeL$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0sha256dFCŰX/qZƾ=VeL$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Usha256߉V2hfXT _c|VeL$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNksha256T9<=e*s{%0tnA~pVeL$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_Esha256,AM'̯ɞ0@kVeL$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHssha256jNPK{J{uh"(Xa{VeL$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8sha256 r~&8(ܸ¬~ 8/2VeL$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicsha256\$'֒ħjDohS.jB'P obf'VweL$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygsha256x\$k,pýKӫ~x FH(VveL$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAsha2562{X}C0K}zAi͋ɔpK+ܿMVueL$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wksha256,O]0Dױ{ u6iVteL$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncsha256rf ba =tY!L3A t^wVseL$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Usha256B?wL3ҘZ[VreL$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1Usha256) $aPnc⳻Cn %X.UVqeL$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8sha256]68嵬NZ<,Pk^VeL$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8sha256x>p=0B]82*ŕVeL$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98sha256Vb|PQ_Gސ;Eqcߠ2}]VeL$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwsha256Ŷ/Umcf\~IT!LIsŎ VpeL$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwsha256Ck |C?|D*+T_x=emlVeL$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQsha256grYAEOvz2rtbfVeL$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXAsha256&q fwt20Rp R~Q$vIyLl? ^ 1  C1 ~ Q $ [.hl?q  q D  {N^ d 7 V,Q!Ulu,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 G G,Q!UTAORDrNxIbSlGByAp:localhost:8800 C C,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UTAORDrNxIbSlGByAp:localhost:8800 D D,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 pp,Q!TlJCaYlCkOOVzFDlLx:localhost:8800oo,Q!TlJCaYlCkOOVzFDlLx:localhost:8800nn,Q!TlJCaYlCkOOVzFDlLx:localhost:8800mm,Q!UTAORDrNxIbSlGByAp:localhost:8800 9 9+Q !UTAORDrNxIbSlGByAp:localhost:8800 7 7,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 H H,Q!UTAORDrNxIbSlGByAp:localhost:8800 B B,Q!UTAORDrNxIbSlGByAp:localhost:8800 A A,Q!UTAORDrNxIbSlGByAp:localhost:8800 @ @,Q!UTAORDrNxIbSlGByAp:localhost:8800 ? ?,Q!UTAORDrNxIbSlGByAp:localhost:8800 > >,Q!UTAORDrNxIbSlGByAp:localhost:8800 = =,Q!UTAORDrNxIbSlGByAp:localhost:8800 ; ;,Q!UTAORDrNxIbSlGByAp:localhost:8800 F F,Q!UTAORDrNxIbSlGByAp:localhost:8800 E E,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!URpLZLuBfVcfHVTBGS:localhost:8800+Q !URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800llY,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 rr,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 qq,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800+Q !UyLoIXmzVFwycmBUeh:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800+Q !UaitDdkGDcwvRLJSvp:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800~~,Q!UMFUOnYRvwKwSPkYHB:localhost:8800}},Q!UMFUOnYRvwKwSPkYHB:localhost:8800||+Q !UMFUOnYRvwKwSPkYHB:localhost:8800{{,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 +Q !UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800 R~Q$vIyLl? ^ 1  C1 ~ Q $ [.hl?q  q D  {N^ d 7 V,Q!Ulu,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 G G,Q!UTAORDrNxIbSlGByAp:localhost:8800 C C,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UTAORDrNxIbSlGByAp:localhost:8800 D D,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 pp,Q!TlJCaYlCkOOVzFDlLx:localhost:8800oo,Q!TlJCaYlCkOOVzFDlLx:localhost:8800nn,Q!TlJCaYlCkOOVzFDlLx:localhost:8800mm,Q!UTAORDrNxIbSlGByAp:localhost:8800 9 9+Q !UTAORDrNxIbSlGByAp:localhost:8800 7 7,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 H H,Q!UTAORDrNxIbSlGByAp:localhost:8800 B B,Q!UTAORDrNxIbSlGByAp:localhost:8800 A A,Q!UTAORDrNxIbSlGByAp:localhost:8800 @ @,Q!UTAORDrNxIbSlGByAp:localhost:8800 ? ?,Q!UTAORDrNxIbSlGByAp:localhost:8800 > >,Q!UTAORDrNxIbSlGByAp:localhost:8800 = =,Q!UTAORDrNxIbSlGByAp:localhost:8800 ; ;,Q!UTAORDrNxIbSlGByAp:localhost:8800 F F,Q!UTAORDrNxIbSlGByAp:localhost:8800 E E,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!URpLZLuBfVcfHVTBGS:localhost:8800+Q !URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800llY,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 rr,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 qq,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800+Q !UyLoIXmzVFwycmBUeh:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800+Q !UaitDdkGDcwvRLJSvp:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800~~,Q!UMFUOnYRvwKwSPkYHB:localhost:8800}},Q!UMFUOnYRvwKwSPkYHB:localhost:8800||+Q !UMFUOnYRvwKwSPkYHB:localhost:8800{{,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 +Q !UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800 2:zM l? ^ 1  } Q $ Hg: q D  c 7 V )u,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 8,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 0,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / /,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . .,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - -,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ,,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + +,Q!zuCqeooOnfWkYrQdxA:localhost:8800 L L,Q!zuCqeooOnfWkYrQdxA:localhost:8800 K K,Q!zuCqeooOnfWkYrQdxA:localhost:8800 J J,Q!zuCqeooOnfWkYrQdxA:localhost:8800 I I,Q!zuCqeooOnfWkYrQdxA:localhost:8800 H H,Q!zuCqeooOnfWkYrQdxA:localhost:8800 G G,Q!zuCqeooOnfWkYrQdxA:localhost:8800 F F,Q!zuCqeooOnfWkYrQdxA:localhost:8800 E E,Q!zuCqeooOnfWkYrQdxA:localhost:8800 D D,Q!zuCqeooOnfWkYrQdxA:localhost:8800 C C+Q !zuCqeooOnfWkYrQdxA:localhost:8800 B B,Q!zsXPhIPzeXXLvuazzQ:localhost:8800cc,Q!zsXPhIPzeXXLvuazzQ:localhost:8800bb,Q!zsXPhIPzeXXLvuazzQ:localhost:8800aa,Q!zsXPhIPzeXXLvuazzQ:localhost:8800``,Q!zsXPhIPzeXXLvuazzQ:localhost:8800__,Q!zsXPhIPzeXXLvuazzQ:localhost:8800^^,Q!zsXPhIPzeXXLvuazzQ:localhost:8800]],Q!zsXPhIPzeXXLvuazzQ:localhost:8800\\+Q !zsXPhIPzeXXLvuazzQ:localhost:8800[[,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * *,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) )+Q !zqQJfFCRlSEDPKlQPy:localhost:8800 ( (,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ~~,Q!zoTQAhGwmDDUECKtbL:localhost:8800 }},Q!zoTQAhGwmDDUECKtbL:localhost:8800 ||,Q!zoTQAhGwmDDUECKtbL:localhost:8800 {{,Q!zoTQAhGwmDDUECKtbL:localhost:8800zz,Q!zoTQAhGwmDDUECKtbL:localhost:8800yy,Q!zoTQAhGwmDDUECKtbL:localhost:8800xx,Q!zoTQAhGwmDDUECKtbL:localhost:8800ww,Q!zoTQAhGwmDDUECKtbL:localhost:8800vv,Q!zoTQAhGwmDDUECKtbL:localhost:8800uu,Q!zoTQAhGwmDDUECKtbL:localhost:8800tt,Q!zoTQAhGwmDDUECKtbL:localhost:8800ss,Q!zoTQAhGwmDDUECKtbL:localhost:8800rr,Q!zoTQAhGwmDDUECKtbL:localhost:8800qq+Q !zoTQAhGwmDDUECKtbL:localhost:8800pp 2:zM l? ^ 1  } Q $ Hg: q D  c 7 V )u,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 8,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 0,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / /,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . .,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - -,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ,,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + +,Q!zuCqeooOnfWkYrQdxA:localhost:8800 L L,Q!zuCqeooOnfWkYrQdxA:localhost:8800 K K,Q!zuCqeooOnfWkYrQdxA:localhost:8800 J J,Q!zuCqeooOnfWkYrQdxA:localhost:8800 I I,Q!zuCqeooOnfWkYrQdxA:localhost:8800 H H,Q!zuCqeooOnfWkYrQdxA:localhost:8800 G G,Q!zuCqeooOnfWkYrQdxA:localhost:8800 F F,Q!zuCqeooOnfWkYrQdxA:localhost:8800 E E,Q!zuCqeooOnfWkYrQdxA:localhost:8800 D D,Q!zuCqeooOnfWkYrQdxA:localhost:8800 C C+Q !zuCqeooOnfWkYrQdxA:localhost:8800 B B,Q!zsXPhIPzeXXLvuazzQ:localhost:8800cc,Q!zsXPhIPzeXXLvuazzQ:localhost:8800bb,Q!zsXPhIPzeXXLvuazzQ:localhost:8800aa,Q!zsXPhIPzeXXLvuazzQ:localhost:8800``,Q!zsXPhIPzeXXLvuazzQ:localhost:8800__,Q!zsXPhIPzeXXLvuazzQ:localhost:8800^^,Q!zsXPhIPzeXXLvuazzQ:localhost:8800]],Q!zsXPhIPzeXXLvuazzQ:localhost:8800\\+Q !zsXPhIPzeXXLvuazzQ:localhost:8800[[,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * *,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) )+Q !zqQJfFCRlSEDPKlQPy:localhost:8800 ( (,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ~~,Q!zoTQAhGwmDDUECKtbL:localhost:8800 }},Q!zoTQAhGwmDDUECKtbL:localhost:8800 ||,Q!zoTQAhGwmDDUECKtbL:localhost:8800 {{,Q!zoTQAhGwmDDUECKtbL:localhost:8800zz,Q!zoTQAhGwmDDUECKtbL:localhost:8800yy,Q!zoTQAhGwmDDUECKtbL:localhost:8800xx,Q!zoTQAhGwmDDUECKtbL:localhost:8800ww,Q!zoTQAhGwmDDUECKtbL:localhost:8800vv,Q!zoTQAhGwmDDUECKtbL:localhost:8800uu,Q!zoTQAhGwmDDUECKtbL:localhost:8800tt,Q!zoTQAhGwmDDUECKtbL:localhost:8800ss,Q!zoTQAhGwmDDUECKtbL:localhost:8800rr,Q!zoTQAhGwmDDUECKtbL:localhost:8800qq+Q !zoTQAhGwmDDUECKtbL:localhost:8800pp *Apb0> vD|Jjp  \ |P P8  Y ]+$ >  j8V|JPb \ '1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s 1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE V1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkz1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPky1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkx0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI51e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MK1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd821e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsm1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MM1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91ML1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgY1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I X1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I W1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I V1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogl1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogk1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogj1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw{1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwz1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwy1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp01e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp01e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI70e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI61e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU 1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU 1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU '21e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE W 1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4 1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd83 21e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE U1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE T0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ40e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ30e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ21e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg[1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgZ 21e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 d1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4 1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4 1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd851e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd841e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM21e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU 1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU 1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAd !] l  w / e GLsny 4MX]i8Q3 e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 7Q']e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5oc6Q' e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.create$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 5Q']e !kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2or4Q))e !kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEo3Q? e !kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibility$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIg2Q/ e !kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rules$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEl1Q9 e !kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_alias$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoci0Q3 e !kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE /Q']e !kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Yc.Q' e !kjjUsMowsioSQRIJeg:localhost:8800m.room.create$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA -Q']e !UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI ,Q']e !UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEr+Q))e !UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48o*Q? e !UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibility$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8og)Q/ e !UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rules$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gl(Q9 e !UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_alias$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4i'Q3 e !UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 &Q']e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc %Q']e !UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 $Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUc#Q' e !UTAORDrNxIbSlGByAp:localhost:8800m.room.create$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4a"Q# e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.name$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUo!Q? e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibility$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAg Q/ e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rules$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwiQ3 e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg Q']e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vccQ' e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.create$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$VhhHkiKpSbwh9kSk0LkPDjPtzbV3etTy0KPHKt3WXrE Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0rQ))e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.aliaseslocalhost:8800$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YoQ? e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.history_visibility$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ " J ! O&+S Zj+H AeQ']$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800joinp@eQ))$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800m?eQ? $D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibilitye>eQ/ $v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rulesj=eQ9 $64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_aliasg<eQ3 $C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels ;eQ']$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800joina8eQ' $UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800m.room.create_7eQ# $A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800m.room.namem6eQ? $GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibilitye5eQ/ $QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rulesg4eQ3 $wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels 3eQ']$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800joina2eQ' $E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.create  :eQ']$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800joind_)eQ# $8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800m.room.namem(eQ? $jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibilitye'eQ/ $r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rulesg&eQ3 $LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels %eQ']$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800joina$eQ' $DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800m.room.create_#eQ# $-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.namem"eQ? $MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibilitye!eQ/ $LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rulesg eQ3 $cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels eQ']$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800join  h4eQ1#$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 3120}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-607", "membership": "join"}, "depth": 9, "hashes": {"sha256": "PYSyZBZnyVv2afuiDsypXcVEEFA/N+/Z0mZTRHGsWg0"}, "origin": "localhost:8829", "origin_server_ts": 1570043290386, "prev_events": ["$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0"], "prev_state": [], "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-607:localhost:8829", "state_key": "@anon-20191002_181700-607:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zYXQh0na38MNmoCSb71wVtKa1dK39Jrwpo/X4QaOZ2RRlhF7jU/KNH1NGtGnRb1ImOsCejrM5BrkiJO6RSSWAg"}, "localhost:8829": {"ed25519:a_UxIG": "JN/vCAbrmxBACTRpAM8coYrxJ3wvpQOoiuuBTopcWqR6yLeaW/iISPbXbnGhVaBBXl71ihas8EXGX9UDEKbQCQ"}}, "unsigned": {"age": 104, "replaces_state": "$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0"}}5eQaw$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3119}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y"], "type": "m.room.member", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-607", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-607:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043289517, "hashes": {"sha256": "vjUoq1/uGurLibA6xcO/SMlmafwriIQuC7umlrX54do"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sTPBMIVtA+XT4v1zoyWY+BCgRM1mO8WtSwOjozupY7vWJ9vLUQd9R0YDyzaymFyyTO9Veu+k3gjate36dvLnCw"}, "localhost:8829": {"ed25519:a_UxIG": "a3WRrR4FEhnmdxphyQOMFY/KVn+5pUmhJqGnAyru7rNs/6KJzLvYvM8MHaGHQDC77T3+KreWI6T6d8gJWXnuDw"}}, "unsigned": {"age_ts": 1570043289517, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#__ANON__-25:localhost:8800"}, "sender": "@anon-20191002_181700-605:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-605:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-605", "avatar_url": null}, "sender": "@anon-20191002_181700-605:localhost:8800"}]}}eQa5$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3118}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ"], "type": "m.room.aliases", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"aliases": ["#__ANON__-25:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043288404, "hashes": {"sha256": "dPJ43YQYtLxB6w25Y2lAluMgJ4A8fbqdYV81/iSPGdU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ppQ89duyrWcsZhuzd5UrxEXgvbfq5ZmEGLyMUGflaLqwvoB3QdQp5bqCLSlmqpznC6ns/2l2O6/6QluyP72CCw"}}, "unsigned": {"age_ts": 1570043288404}}  $ [ceQ?u$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3124}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg"], "type": "m.room.join_rules", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043294728, "hashes": {"sha256": "E1JmmbGsL0RosFcf21YcTJiCamNFznwPGEW/5HWO+2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1yxCGv0PxwpJzQ3y887BfP9eJOoUMijOq5vvBhtyeG8RvWll6CYCgKFYtGb8BWkbGis30S38Nlxqzg/fnm/1Bw"}}, "unsigned": {"age_ts": 1570043294728}}\eQ?g$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3123}{"auth_events": ["$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "type": "m.room.power_levels", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"users": {"@anon-20191002_181700-606:localhost:8800": 100}, "users_default": -10, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043293268, "hashes": {"sha256": "I2sj/zemq6eWVvyJM2iuC6vH+GTKsnLHiava3agb2mA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hp7FKFcQiD/rbHAd5EB9vO8AhCNMHaxJ5ZRq3M+TWR6rSs9LJV0logOikGmGRzMucIZgsjIkX6WlpzxLl1RADw"}}, "unsigned": {"age_ts": 1570043293268}}eeQ?y$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3122}{"auth_events": ["$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA"], "prev_events": ["$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA"], "type": "m.room.member", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-606", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-606:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043292593, "hashes": {"sha256": "HfUw4jDfbRIetHAIenJFCyt+fd0tvELadj7F81o3DvE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rfa1/Cgt07sU6ZCXdYkjsKWsN7gUioVofUGfkGgFUSDuunDQllkolEmvM+IVDcZgKaAzqTxLifAatbqxXkTbCA"}}, "unsigned": {"age_ts": 1570043292593}}XeQ?_$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3121}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-606:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043291846, "hashes": {"sha256": "uPpdKVPCZECrM4PGBxGJHBTgdNHRiS1kmrmrhroQJkQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MprJ3tEVR1Q9pT+SwEdT0sfSn9k+nVtVnW3i6AZjWi5dc16tdKbxz783sW+v20x2B+6lyvP4BRp7x/+SK7RWDQ"}}, "unsigned": {"age_ts": 1570043291846}} Y 'YJ"eQ?C$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU!zqQJfFCRlSEDPKlQPy:localhost:8800{"stream_ordering": 3128}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8"], "type": "m.room.member", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "leave"}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-605:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043299107, "hashes": {"sha256": "XKpctsk33bw304iI0SDNkF5yxSImPswR4KCawkeXFbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t0HZRn6TONER/yXTTC9A5qAQE0bf6NCQyfBcqg5uUU7g66LYzIE2x6rDjkzY3q+9l4IkV/U73v3Fc+g4+gqQAA"}}, "unsigned": {"age_ts": 1570043299107, "replaces_state": "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"}}i!eQa_$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3127}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-608:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043298785, "hashes": {"sha256": "pPzh51lS/iR6xTDkENImwmzLNKqU6g8+rjauj17E+Vk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A5UrXIfpjqwHCIWhYS2WY7C2+p7Dir4tjD1upKMGoKEi7g1Ap+x2srRdiMQmChavVRjuLZq+Ye+SDZ/y1mCQCA"}}, "unsigned": {"age_ts": 1570043298785}}p eQ?$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3126}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA"], "type": "m.room.name", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"name": "Content Violation Notification"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043297837, "hashes": {"sha256": "daFyg4SwOg/X/EujvAgH5a0p4U1mRurmdEoux+jNOvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cXnWmmi4NcBkYjah4/IB9DUX64ZULtmDDV+oa6p+zB1ZfOt4fsJhZ7GnjrvM/dNPhlBh2wedmGjfzwM4khIhCQ"}}, "unsigned": {"age_ts": 1570043297837}}teQ?$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3125}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw"], "type": "m.room.history_visibility", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043296187, "hashes": {"sha256": "Mw+Zixep2g//2ImK6z9LHklTBIhSXX1Thip3RIjoQsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gN1MalJKiUY7uNbQZVbgme15FPgpHAGR+nqIpSi+6d5DOm0R3Ud3Th2H3z1ScYq4ZalnMeDasd/9s2qPN/4tCA"}}, "unsigned": {"age_ts": 1570043296187}} t T \ LD< 4 d ,$  l |teeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800OeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800PeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800QeeQ$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800́eeQ$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800=eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:88001eeQ$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800ceeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800MeeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800ɁeeQ$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800<eeQ$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800peeQ$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800΁eeQ$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800!eeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800eeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800 AeeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800 #eeQ$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800 ρeeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800 veeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800 eeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800N !U(P - 0 R LUX}  0RLU PQ']e \!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsdOQ' e [!OCEHAjcOXWNyWIESIS:localhost:8800m.room.create$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico NQ']e Y!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJposMQ))e X!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykpLQ? e W!qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibility$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAhKQ/ e V!qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rules$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFomJQ9 e U!qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_alias$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gjIQ3 e T!qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE HQ']e S!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5odGQ' e R!qjijQBfMwsCPTVgKPm:localhost:8800m.room.create$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 FQ']e P!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2osEQ))e O!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEpDQ? e N!kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibility$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIhCQ/ e M!kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rules$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEmBQ9 e L!kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_alias$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocjAQ3 e K!kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE @Q']e J!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Yd?Q' e I!kjjUsMowsioSQRIJeg:localhost:8800m.room.create$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA >Q']e B!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI =Q']e A!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEs<Q))e @!UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48p;Q? e ?!UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibility$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8oh:Q/ e >!UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rules$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gm9Q9 e =!UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_alias$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4j8Q3 e ;!UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 7Q']e :!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 6Q']e 9!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza085Q']ee 8!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98d4Q' e 7!UTAORDrNxIbSlGByAp:localhost:8800m.room.create$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4b3Q# e 6!MXhwoqNXvexeDDSOZT:localhost:8800m.room.name$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUp2Q? e 5!MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibility$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAh1Q/ e 4!MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rules$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwj0Q3 e 3!MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1^ k x ' 4 A N [ hu$1>KXer!P]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800P]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800P]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800P]Q@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800P]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800P]Q@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800P]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800P]Q@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800P]Q@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800P]Q@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800P]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800P]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800P]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800P]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800 a} { y w u sqomkigeca~teeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800~seeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~reeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~qeeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~peeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~oeeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~neeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~meeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~leeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~keeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~jeeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~ieeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~heeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~geeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~feeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~eeeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~deeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~ceeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800~beeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800~aeeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800~`eeQ$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~_eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800~^eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800~]eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800~\eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800~[eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800~ZeeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800~YeeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800~XeeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800~WeeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800~VeeQ$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800 8l D `8:]c!E@anon-20191002_181700-616:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtWczhVYXYqK2kxZEo5VUMKMDAyZnNpZ25hdHVyZSAyxMn--zXijwO_yDpNAKZp3Nowd1ex2CJt9oF3jnAAlQoYMFGFJXLHS127.0.0.1Perl + Net::Async::HTTP/0.44m9]c!E@anon-20191002_181700-615:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxQOkhhbnIqNG1BZnlZb0QKMDAyZnNpZ25hdHVyZSCd7FTUX1n-4f2mMjlkYjWuX6DbpozOJbgiroD47tErvwoLDFQWSUCEM127.0.0.1Perl + Net::Async::HTTP/0.44m8]c!E@anon-20191002_181700-613:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpreUxsRlNPfmpWV0R4emwKMDAyZnNpZ25hdHVyZSAFh5ccDMSVr8aWYsFwKsNl55tnlLMnNvdhEFpRcQnZOQoUDRWGJFVHI127.0.0.1Perl + Net::Async::HTTP/0.44mЃ7]c!E@anon-20191002_181700-614:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRIQ1Z3XztVd0RTK2R4K3QKMDAyZnNpZ25hdHVyZSBr6Tw_uDl-saWiJHMt1fEznSF3WHYr5dOTbcQ5XctL7woKKJOZKNSMZ127.0.0.1Perl + Net::Async::HTTP/0.44mG6]c!E@anon-20191002_181700-611:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBNYXI7KmtYMio1cF5wU2oKMDAyZnNpZ25hdHVyZSC6faRL5gRMDSrt3JVQXVAJk41B5lf4mWNReFXR91OndAoUERIFUMBMU127.0.0.1Perl + Net::Async::HTTP/0.44mڃ5]c!E@anon-20191002_181700-612:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDh3REZETWFodU5jO1BjSlIKMDAyZnNpZ25hdHVyZSBkO3hDSxe8Mu7xTlw3rYlxibs1_JShkhhmytcoluPlngoYGUHRNQFRP127.0.0.1Perl + Net::Async::HTTP/0.44m4]c!E@anon-20191002_181700-610:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo3Mi5lYlV2a2tfX1dUZnIKMDAyZnNpZ25hdHVyZSCn9NKRbpbNtymqTeTuS2KkH7b7NnoLOyqZngASnYZkXgoZXXERHSURN127.0.0.1Perl + Net::Async::HTTP/0.44mߨ3]c!E@anon-20191002_181700-609:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5KR0pKaXlXVTJZTjpfeVIKMDAyZnNpZ25hdHVyZSDu25ZQUNrElC1w8D-7akohXJPWdBEgbR0gt_QpQE4f6AoHHJPZAWEAE127.0.0.1Perl + Net::Async::HTTP/0.44mߨ!2]c!E@anon-20191002_181700-608:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteSHZmWnc4b3BCanVDOGEKMDAyZnNpZ25hdHVyZSAJXE0br2225NWIy-FWwqW1eaYEjTysP1DwchdfqEdGbwoRSNCULZYRU127.0.0.1Perl + Net::Async::HTTP/0.44m߀1]c!E@anon-20191002_181700-604:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDd2Z3M4VUdpZFk9PVQqb0QKMDAyZnNpZ25hdHVyZSD39rZw4ejANsei46y5Hswz78deevadOTxBob0SNf_4oAoOVWYBOSWZE127.0.0.1Perl + Net::Async::HTTP/0.44mf ~z v r n j fb^ZVRNJFeeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800eeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800eeQ$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800eeQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800eeQ$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks!UTAORDrNxIbSlGByAp:localhost:8800eeQ$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800eeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800eeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800eeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800eeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800eeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800eeQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800eeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800eeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800eeQ$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800eeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800 mGcm< xG R ! ] ? < x G R!],h7sB~MX'  { J  c2n= ] m0]@anon-20191002_181700-653:localhost:88000]@anon-20191002_181700-588:localhost:8800g0]@anon-20191002_181700-641:localhost:88000]@anon-20191002_181700-640:localhost:88000]@anon-20191002_181700-639:localhost:88000]@anon-20191002_181700-638:localhost:88000]@anon-20191002_181700-637:localhost:88000]@anon-20191002_181700-636:localhost:88000]@anon-20191002_181700-635:localhost:88000]@anon-20191002_181700-634:localhost:88000]@anon-20191002_181700-633:localhost:88000]@anon-20191002_181700-632:localhost:88000]@anon-20191002_181700-631:localhost:88000]@anon-20191002_181700-630:localhost:88000]@anon-20191002_181700-628:localhost:88000]@anon-20191002_181700-627:localhost:88000]@anon-20191002_181700-626:localhost:88000]@anon-20191002_181700-625:localhost:88000]@anon-20191002_181700-624:localhost:88000]@anon-20191002_181700-623:localhost:88000]@anon-20191002_181700-622:localhost:88000]@anon-20191002_181700-621:localhost:88000]@anon-20191002_181700-620:localhost:88000]@anon-20191002_181700-619:localhost:88000]@anon-20191002_181700-618:localhost:88000]@anon-20191002_181700-617:localhost:88000]@anon-20191002_181700-616:localhost:88000]@anon-20191002_181700-615:localhost:88000]@anon-20191002_181700-614:localhost:88000]@anon-20191002_181700-613:localhost:8800~0]@anon-20191002_181700-612:localhost:8800}0]@anon-20191002_181700-611:localhost:8800|0]@anon-20191002_181700-610:localhost:8800{0]@anon-20191002_181700-609:localhost:8800z0]@anon-20191002_181700-608:localhost:8800y0]@anon-20191002_181700-604:localhost:8800x0]@anon-20191002_181700-606:localhost:8800w0]@anon-20191002_181700-605:localhost:8800v0]@anon-20191002_181700-602:localhost:8800u0]@anon-20191002_181700-603:localhost:8800t0]@anon-20191002_181700-600:localhost:8800s0]@anon-20191002_181700-601:localhost:8800r0]@anon-20191002_181700-650:localhost:88000]@anon-20191002_181700-649:localhost:88000]@anon-20191002_181700-648:localhost:88000]@anon-20191002_181700-647:localhost:88000]@anon-20191002_181700-646:localhost:88000]@anon-20191002_181700-645:localhost:88000]@anon-20191002_181700-644:localhost:88000]@anon-20191002_181700-643:localhost:88000]@anon-20191002_181700-642:localhost:88007@admin:localhost:8800q0]@anon-20191002_181700-598:localhost:8800p0]@anon-20191002_181700-597:localhost:8800o0]@anon-20191002_181700-596:localhost:8800n0]@anon-20191002_181700-596:localhost:8800m0]@anon-20191002_181700-595:localhost:8800l0]@anon-20191002_181700-593:localhost:8800k0]@anon-20191002_181700-591:localhost:8800j0]@anon-20191002_181700-590:localhost:8800i0]@anon-20191002_181700-589:localhost:8800h0]@anon-20191002_181700-587:localhost:8800f0]~@anon-20191002_181700-586:localhost:8800e0]}@anon-20191002_181700-585:localhost:8800d0]|@anon-20191002_181700-584:localhost:8800c0]{@anon-20191002_181700-583:localhost:8800b0]z@anon-20191002_181700-582:localhost:8800a0]y@anon-20191002_181700-581:localhost:8800`0]x@anon-20191002_181700-580:localhost:8800_0]@anon-20191002_181700-652:localhost:88000]@anon-20191002_181700-651:localhost:8800 "q: ) T q W f'DS\&TqpYeQ))$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800mXeQ? $0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibilityeWeQ/ $odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rulesgVeQ3 $4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels UeQ']$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800aTeQ' $C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800m.room.create SeQ']$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800pReQ))$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800mQeQ? $BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibilityePeQ/ $WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rulesjOeQ9 $xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_aliasgNeQ3 $b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels MeQ']$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800aLeQ' $GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800m.room.create KeQ']$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800pJeQ))$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800mIeQ? $9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibilityeHeQ/ $W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rulesjGeQ9 $jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_aliasgFeQ3 $jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels EeQ']$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800aDeQ' $9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800m.room.create CeQ']$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800 BeQ']$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800pAeQ))$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800m@eQ? $D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibilitye?eQ/ $v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rulesj>eQ9 $64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_aliasg=eQ3 $C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels <eQ']$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800 ;eQ']$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800 :eQ']$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800a9eQ' $UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800m.room.create_8eQ# $A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800m.room.name /RM H C > 9 4/*|%w Ib>WT4Qe 4!yAfsSyqpJWFnkXQFJL:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUT3Qe 3!yAfsSyqpJWFnkXQFJL:localhost:8800$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmoJ2QQ 2!AYFqrmxwClFQlcTTYq:localhost:8800$1570043354284IVfTL:localhost:8800J1QQ 1!AYFqrmxwClFQlcTTYq:localhost:8800$1570043353283ubEdk:localhost:8800J0QQ 0!AYFqrmxwClFQlcTTYq:localhost:8800$1570043352282iTcSU:localhost:8800J/QQ /!AYFqrmxwClFQlcTTYq:localhost:8800$1570043351281XHPOP:localhost:8800J.QQ .!AYFqrmxwClFQlcTTYq:localhost:8800$1570043350280ydSwy:localhost:8800:-Q1 -!pHoEnhQYhwlbJXqKQE:localhost:8800$3:localhost:42455J,QQ ,!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043348279FTdBe:localhost:8800J+QQ +!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043347278WlNld:localhost:8800J*QQ *!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346277FsKPl:localhost:8800J)QQ )!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346276qTXUF:localhost:8800J(QQ (!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043345275UDVPY:localhost:8800J'QQ '!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043344274cabjv:localhost:8800:&1Q &!0:localhost:42455$1570043341273LsXNn:localhost:8800T%Qe %!OCEHAjcOXWNyWIESIS:localhost:8800$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYT$Qe $!OCEHAjcOXWNyWIESIS:localhost:8800$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQT#Qe #!OCEHAjcOXWNyWIESIS:localhost:8800$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIT"Qe "!OCEHAjcOXWNyWIESIS:localhost:8800$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3isT!Qe !!OCEHAjcOXWNyWIESIS:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsT Qe !OCEHAjcOXWNyWIESIS:localhost:8800$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicoTQe !qjijQBfMwsCPTVgKPm:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpoTQe !qjijQBfMwsCPTVgKPm:localhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykTQe !qjijQBfMwsCPTVgKPm:localhost:8800$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMATQe !qjijQBfMwsCPTVgKPm:localhost:8800$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFoTQe !qjijQBfMwsCPTVgKPm:localhost:8800$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gTQe !qjijQBfMwsCPTVgKPm:localhost:8800$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oETQe !qjijQBfMwsCPTVgKPm:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5oTQe !qjijQBfMwsCPTVgKPm:localhost:8800$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8TQe !kjjUsMowsioSQRIJeg:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2oTQe !kjjUsMowsioSQRIJeg:localhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYETQe !kjjUsMowsioSQRIJeg:localhost:8800$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RITQe !kjjUsMowsioSQRIJeg:localhost:8800$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UETQe !kjjUsMowsioSQRIJeg:localhost:8800$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocTQe !kjjUsMowsioSQRIJeg:localhost:8800$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwETQe !kjjUsMowsioSQRIJeg:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1YTQe !kjjUsMowsioSQRIJeg:localhost:8800$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFATQe !UTAORDrNxIbSlGByAp:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwITQe !UTAORDrNxIbSlGByAp:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYET Qe !UTAORDrNxIbSlGByAp:localhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48T Qe !UTAORDrNxIbSlGByAp:localhost:8800$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8oT Qe !UTAORDrNxIbSlGByAp:localhost:8800$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gT Qe !UTAORDrNxIbSlGByAp:localhost:8800$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4T Qe !UTAORDrNxIbSlGByAp:localhost:8800$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8TQe !MXhwoqNXvexeDDSOZT:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7VcTQe !UTAORDrNxIbSlGByAp:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0TQe !zqQJfFCRlSEDPKlQPy:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU W^ r # v  y1BL\W,Ne?Q ]$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIm.room.history_visibility!kjjUsMowsioSQRIJeg:localhost:8800mmk@anon-20191002_181700-612:localhost:8800$Me/Q ]$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEm.room.join_rules!kjjUsMowsioSQRIJeg:localhost:8800m<m]@anon-20191002_181700-612:localhost:8800)Le9Q ]$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocm.room.canonical_alias!kjjUsMowsioSQRIJeg:localhost:8800mCm@anon-20191002_181700-612:localhost:8800&Ke3Q ]$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEm.room.power_levels!kjjUsMowsioSQRIJeg:localhost:8800mmA@anon-20191002_181700-612:localhost:8800 Je'Q ]$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Ym.room.member!kjjUsMowsioSQRIJeg:localhost:8800mʥm@anon-20191002_181700-612:localhost:8800I e'Q  ]$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFAm.room.create!kjjUsMowsioSQRIJeg:localhost:8800mǩm@anon-20191002_181700-612:localhost:8800!He)Q ]$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8m.room.message!UTAORDrNxIbSlGByAp:localhost:8800mm@anon-20191002_181700-610:localhost:8800!Ge)Q ] $mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3Um.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߾Ym߾\@anon-20191002_181700-609:localhost:8800(Fe7Q ] $QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pksa.made.up.filler.type!UTAORDrNxIbSlGByAp:localhost:8800 m߻m߻@anon-20191002_181700-608:localhost:8800!Ee)Q ] $M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5Em.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߶m߶@anon-20191002_181700-610:localhost:8800!De)Q ] $2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mkm.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߱m߳@anon-20191002_181700-608:localhost:8800!Ce)Q ] $HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Ggm.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߱m߱@anon-20191002_181700-609:localhost:8800 Be'Q ] $LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIm.room.member!UTAORDrNxIbSlGByAp:localhost:8800 m߭m߮@anon-20191002_181700-610:localhost:8800 Ae'Q ]$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEm.room.member!UTAORDrNxIbSlGByAp:localhost:8800mߩmߪ&@anon-20191002_181700-609:localhost:8800!@e)Q ]$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48m.room.aliases!UTAORDrNxIbSlGByAp:localhost:8800mߦ mߦ@anon-20191002_181700-608:localhost:8800,?e?Q ]$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8om.room.history_visibility!UTAORDrNxIbSlGByAp:localhost:8800mߢ9mߣ@anon-20191002_181700-608:localhost:8800$>e/Q ]$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gm.room.join_rules!UTAORDrNxIbSlGByAp:localhost:8800mߟumߠ~@anon-20191002_181700-608:localhost:8800)=e9Q ]$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4m.room.canonical_alias!UTAORDrNxIbSlGByAp:localhost:8800mߚamߜS@anon-20191002_181700-608:localhost:8800!<e)Q ]$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4m.room.message!MXhwoqNXvexeDDSOZT:localhost:8800mߔmߗ@anon-20191002_181700-606:localhost:8800&;e3Q ]$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8m.room.power_levels!UTAORDrNxIbSlGByAp:localhost:8800mߓZmߕ@anon-20191002_181700-608:localhost:8800 :e'Q ]$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcm.room.member!MXhwoqNXvexeDDSOZT:localhost:8800mߎmߑ@anon-20191002_181700-605:localhost:8800 9e'Q ]$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0m.room.member!UTAORDrNxIbSlGByAp:localhost:8800m߉mߏ@anon-20191002_181700-608:localhost:8800 8e'Q ] $HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUm.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800 m߅#m߆@anon-20191002_181700-605:localhost:88007 e'Q  ]$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4m.room.create!UTAORDrNxIbSlGByAp:localhost:8800m߃m߅@anon-20191002_181700-608:localhost:8800 Rd0`, \ ( X $ T P  L |HX.lB\(lBpFtJ xN$'cQ$1570043385309imdbl:localhost:8800 P'bQ$1570043384308gPogh:localhost:8800 O'aQ$1570043383307bhuDV:localhost:8800 N'`Q$1570043382306WhWIU:localhost:8800 M'_Q$1570043380304caenp:localhost:8800 K'^Q$1570043379303bCgUn:localhost:8800 J']Q$1570043378302mKBGD:localhost:8800 I'\Q$1570043377301OraEa:localhost:8800 H'[Q$1570043377300CLPUi:localhost:8800 G'ZQ$1570043375299fbyXJ:localhost:8800 F'YQ$1570043374298UIMFg:localhost:8800 E'XQ$1570043373297SOjrf:localhost:8800 D'WQ$1570043372296yAiBq:localhost:8800 C'VQ$1570043371295coDXo:localhost:8800 B'UQ$1570043369294rquKy:localhost:8800 A'TQ$1570043369293ssSMv:localhost:8800 @'SQ$1570043368292FAoRb:localhost:8800 ?'RQ$1570043367291AEdax:localhost:8800 >'QQ$1570043366290YSCqz:localhost:8800 ='PQ$1570043364289XIEhE:localhost:8800 <'OQ$1570043364288SCpzq:localhost:8800 ;'NQ$1570043363287eSyun:localhost:8800 :'MQ$1570043362286KwXMK:localhost:8800 9'LQ$1570043361285xsPbY:localhost:8800 81Ke$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 71Je$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 61Ie$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 51He$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 41Ge$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo 3'FQ$1570043354284IVfTL:localhost:8800 2'EQ$1570043353283ubEdk:localhost:8800 1'DQ$1570043352282iTcSU:localhost:8800 0'CQ$1570043351281XHPOP:localhost:8800 /'BQ$1570043350280ydSwy:localhost:8800 .A1$3:localhost:42455 -'@Q$1570043347278WlNld:localhost:8800 +'?Q$1570043346277FsKPl:localhost:8800 *'>Q$1570043346276qTXUF:localhost:8800 )'=Q$1570043345275UDVPY:localhost:8800 ('<Q$1570043344274cabjv:localhost:8800 '';Q$1570043341273LsXNn:localhost:8800 &1:e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY %19e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ $18e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI #17e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is "16e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs !15e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico 14e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 13e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo 12e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 11e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 10e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1/e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1.e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 1-e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1,e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 1+e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ 1*e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1)e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1(e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1'e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1&e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1%e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1$e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 1#e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 1"e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 1!e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 1 e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU  L+ } w E  % ~KeW LQ 9j+    R>  8 3?q X & _E] -wkp+21e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUo1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis[1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo =1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg U1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg 1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM71e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAr1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroZ1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres<1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI c1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y X1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM I1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk G1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 :1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuos1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMr1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQq1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkE1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE31e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs K1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI(1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E@1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k 1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo}1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA>1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX40e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMT1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIN1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcF1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is~1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ#0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwV1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE 1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 01e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM 1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo j1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI }1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI e1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw d 5~p(P- z 2 Z  :  b  B jFnJNR.z2~Z^:>E]=@anon-20191002_181700-657:localhost:8800anon-20191002_181700-657!E@__ANON__-30:localhost:42455E]=@anon-20191002_181700-656:localhost:8800anon-20191002_181700-656E]=@anon-20191002_181700-655:localhost:8800anon-20191002_181700-655!E@__ANON__-28:localhost:42455E~]=@anon-20191002_181700-654:localhost:8800anon-20191002_181700-654E}]=@anon-20191002_181700-653:localhost:8800anon-20191002_181700-653!|E@__ANON__-26:localhost:42455E{]=@anon-20191002_181700-652:localhost:8800anon-20191002_181700-652Ez]=@anon-20191002_181700-646:localhost:8800anon-20191002_181700-646!yE@__ANON__-22:localhost:42455Ex]=@anon-20191002_181700-645:localhost:8800anon-20191002_181700-645Ew]=@anon-20191002_181700-644:localhost:8800anon-20191002_181700-644!vE@__ANON__-21:localhost:42455Eu]=@anon-20191002_181700-643:localhost:8800anon-20191002_181700-643Et]=@anon-20191002_181700-642:localhost:8800anon-20191002_181700-642!sE@__ANON__-20:localhost:42455!rE@__ANON__-19:localhost:42455Eq]=@anon-20191002_181700-641:localhost:8800anon-20191002_181700-641!pE@__ANON__-18:localhost:42455Eo]=@anon-20191002_181700-640:localhost:8800anon-20191002_181700-640!nE@__ANON__-17:localhost:42455Em]=@anon-20191002_181700-639:localhost:8800anon-20191002_181700-639!lE@__ANON__-16:localhost:42455Ek]=@anon-20191002_181700-638:localhost:8800anon-20191002_181700-638!jE@__ANON__-15:localhost:42455Ei]=@anon-20191002_181700-637:localhost:8800anon-20191002_181700-637!hE@__ANON__-13:localhost:42455Eg]=@anon-20191002_181700-635:localhost:8800anon-20191002_181700-635!fE@__ANON__-12:localhost:42455Ee]=@anon-20191002_181700-634:localhost:8800anon-20191002_181700-634!dE@__ANON__-11:localhost:42455Ec]=@anon-20191002_181700-633:localhost:8800anon-20191002_181700-633Eb]=@anon-20191002_181700-632:localhost:8800anon-20191002_181700-632!aE@__ANON__-10:localhost:42455E`]=@anon-20191002_181700-629:localhost:8829anon-20191002_181700-629E_]=@anon-20191002_181700-628:localhost:8800anon-20191002_181700-628E^]=@anon-20191002_181700-626:localhost:8800anon-20191002_181700-626E]]=@anon-20191002_181700-625:localhost:8800anon-20191002_181700-625E\]=@anon-20191002_181700-624:localhost:8800anon-20191002_181700-624E[]=@anon-20191002_181700-623:localhost:8800anon-20191002_181700-623EZ]=@anon-20191002_181700-622:localhost:8800anon-20191002_181700-622EY]=@anon-20191002_181700-620:localhost:8800anon-20191002_181700-620 XC@__ANON__-2:localhost:42455EW]=@anon-20191002_181700-619:localhost:8800anon-20191002_181700-619EV]=@anon-20191002_181700-617:localhost:8800anon-20191002_181700-617 UC@__ANON__-0:localhost:42455ET]=@anon-20191002_181700-616:localhost:8800anon-20191002_181700-616ES]=@anon-20191002_181700-614:localhost:8800anon-20191002_181700-614ER]=@anon-20191002_181700-612:localhost:8800anon-20191002_181700-612EQ]=@anon-20191002_181700-610:localhost:8800anon-20191002_181700-610EP]=@anon-20191002_181700-609:localhost:8800anon-20191002_181700-609EO]=@anon-20191002_181700-605:localhost:8800anon-20191002_181700-605  fe *eQaM$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3136}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o"], "type": "m.room.aliases", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"aliases": ["#test-20191002_181700-44:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043307531, "hashes": {"sha256": "tmXefANPhiCuHnA+xFCP/Qe4GyV72GuSFBW7ZxpBKow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xLEhwvo7jHb2kAbkjTcW6WH6qeEMYa3H/4BG3kxKTB6HIFxDvWF0wK5clsKPhRT8kl63ZJYf+VKKuFLfbLBvDg"}}, "unsigned": {"age_ts": 1570043307531}})eQa$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3135}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g"], "type": "m.room.history_visibility", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043306553, "hashes": {"sha256": "iRsX9bRtKVboh9+8SLnayEUdUphr8GEMt6AEJyXlKX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2LGAgXGiNB90ZtDAa2/Y8Q1xhk6a1M2pJcpNkrI9KG6Aey3QgF2DwnZJ9IWOtVmP8yV03c4WtUspf0ZcdUIiBg"}}, "unsigned": {"age_ts": 1570043306553}}t(eQau$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3134}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4"], "type": "m.room.join_rules", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043305845, "hashes": {"sha256": "ovZKGniWbWS4CkvtNrq+mUcIty0Di7CVQH5kD4Ro7zo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rlOQcLe+d+i/z9/0JyoCOhONl6Knu9C5moM8thHOCqzQqXvh7QW7cNREfrmBf+6j1QLlQdL9ag+ubTAGPA+XAw"}}, "unsigned": {"age_ts": 1570043305845}}'eQa9$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3133}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8"], "type": "m.room.canonical_alias", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"alias": "#test-20191002_181700-44:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043304545, "hashes": {"sha256": "dtl/V6wEjGayu+dm7lT9r+qmpsaFEIAvMPxkRBhTFCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NFhjsHjF6qLoQI2V+hLYYBRLzyy43tsJfTLogQQD9GbNcRp4DEyMFghxXDckIKd6ieuCdTmvNmbtfyz4HCUACw"}}, "unsigned": {"age_ts": 1570043304545}} = ' 9ZKj8`Qpk> x G Y  _ -+  M  3 S ! e1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk_1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4p0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4o0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4n1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk}d1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkE1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f81e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk^1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8;1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8:1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScF1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0<1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0;1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0:1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d81e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d81e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d81e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s ~1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s }1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw 1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk61e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk51e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk41e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm40e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBkm0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBkl0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBkk1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I31e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I21e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoP1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoO1e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc1e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc D tBzHZ( \ * nh6<  | J  P  V $ Vj80pbP D v D1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU^11e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8~1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8}1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8|1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Ed1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 1e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68 D01e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70V1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU_1e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoQ1e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoP1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60)1e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoR1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcr1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn41e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw71e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw61e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn01e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn01e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLct1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcs1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU]1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk 1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk 1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk 1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok(1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok'1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok&1e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw1e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw1e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQh1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQg1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQf1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So}1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So|1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So{,1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8?1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8>1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8=1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 J8 u { P % yoD )}R' c8mB N @k # w L ! J  s Hi>Te:V*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800 *Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VOhMAiLfKyTOZbmKGw:localhost:8800ms*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 @ q*Q!UTAORDrNxIbSlGByAp:localhost:8800 ? p*Q!UTAORDrNxIbSlGByAp:localhost:8800 > o *Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!VUibrTIkcRbfrogbQV:localhost:8800 % b*Q!VUibrTIkcRbfrogbQV:localhost:8800 $ a*Q!VUibrTIkcRbfrogbQV:localhost:8800 # `*Q!VUibrTIkcRbfrogbQV:localhost:8800 " _*Q!VUibrTIkcRbfrogbQV:localhost:8800 ! ^*Q!VUibrTIkcRbfrogbQV:localhost:8800 ]*Q!VUibrTIkcRbfrogbQV:localhost:8800  \*Q!UTAORDrNxIbSlGByAp:localhost:8800 B s*Q!UTAORDrNxIbSlGByAp:localhost:8800 A r*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VOhMAiLfKyTOZbmKGw:localhost:8800tz*Q!VOhMAiLfKyTOZbmKGw:localhost:8800sy*Q!VOhMAiLfKyTOZbmKGw:localhost:8800rx*Q!VOhMAiLfKyTOZbmKGw:localhost:8800qw*Q!VOhMAiLfKyTOZbmKGw:localhost:8800pv*Q!VOhMAiLfKyTOZbmKGw:localhost:8800ou*Q!VOhMAiLfKyTOZbmKGw:localhost:8800nt*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 H z*Q!UTAORDrNxIbSlGByAp:localhost:8800 G y*Q!UTAORDrNxIbSlGByAp:localhost:8800 F x*Q!UTAORDrNxIbSlGByAp:localhost:8800 E w*Q!UTAORDrNxIbSlGByAp:localhost:8800 D v*Q!UTAORDrNxIbSlGByAp:localhost:8800 D u*Q!UTAORDrNxIbSlGByAp:localhost:8800 C tV*Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800  FXR Xd2k:r@xFkL~:r@ x F  ~ L  R X & ^ ,%^,1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE-1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0j1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE;1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk 1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM p1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU b1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA 1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE %1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE?1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly01e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8l1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcN1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo|1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4e1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E51e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgo1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI31e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA C0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr81e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0t1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc'1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU A1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qc1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsJ1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs >1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw 1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw10e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw90e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk<1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y Z < &L<.eQq$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "txn_id": "587", "stream_ordering": 3140}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"msgtype": "m.text", "body": "Message"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043310543, "hashes": {"sha256": "7KgeDSriwslJnt4yxgP3YccChV6seBnIbJUH9o8ofmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f6Hn+jd/PgBqToFBBQboT6xPOtx4DpTotVomhnq3VIHB0kbIk3qb66BAWs6IuHRpYp1qJHlVEiyomZYfuCFFBQ"}}, "unsigned": {"age_ts": 1570043310543}}-eQq$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 590, "txn_id": "588", "stream_ordering": 3139}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE"], "prev_events": ["$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-609:localhost:8800", "content": {"msgtype": "m.text", "body": "Message"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043310541, "hashes": {"sha256": "F8vts+epm91Y9plfKVwmqPGaCQoVjA9Rpb30Qe97PZA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tRYrXLvlXw2o98AA/3aFKeRhJSsvjkNVkVIr1wutHrtpCGN0ia+WeCYnyvsFxpS/BcE77ZySB4Jooq20fjgDBQ"}}, "unsigned": {"age_ts": 1570043310541}}V,eQa9$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 591, "stream_ordering": 3138}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g"], "prev_events": ["$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE"], "type": "m.room.member", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-610:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-610", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-610:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043309473, "hashes": {"sha256": "ZVRBqAGnKIJ63v8V/u/KUFBaxL1gxlFYNdbzNMc9mpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqpj8fCKs4dk/OES9M+dGYXa/7/wFS3lLd6k8YOkCGXl38tu5NhzJI+XtUS5sAmSVs4cKqAl8EmDmQBzZicjAA"}}, "unsigned": {"age_ts": 1570043309473}}V+eQa9$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 590, "stream_ordering": 3137}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g"], "prev_events": ["$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48"], "type": "m.room.member", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-609:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-609", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-609:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043308481, "hashes": {"sha256": "3kmjZloYuaIXr1pI5UBJWHGqIy4jXqEd+Yb5AEUdFNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LmcLh+V5EIAx6pfB0t3XqXYroV4PaEcHUm0lj9mgXcG58uIGE60S8v8VQOI6BHm7LEhGrzruAj1i0Yx7vaKoAQ"}}, "unsigned": {"age_ts": 1570043308481}} a} { y w u sqomkigeca~eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~ eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~~eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~}eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~|eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~{eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~zeeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~yeeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~xeeQ$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~weeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800~veeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~ueeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800 Io z ; X a f !&Tq3*I%b{^QQ']$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800joinW]QQ' $1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.creates\Q1']$1570043341273LsXNn:localhost:8800!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800joinV[11'C$1:localhost:42455!0:localhost:42455m.room.member@__ANON__-0:localhost:42455join7Z11' $0:localhost:42455!0:localhost:42455m.room.create;Y11/ $2:localhost:42455!0:localhost:42455m.room.join_rulespXeQ))$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800mWeQ? $0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibilityeVeQ/ $odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rulesgUeQ3 $4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels TeQ']$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800joinaSeQ' $C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800m.room.createReQ']$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800invitepQeQ))$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800mPeQ? $BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibilityeOeQ/ $WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rulesjNeQ9 $xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_aliasgMeQ3 $b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels LeQ']$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800joinaKeQ' $GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800m.room.createJeQ']$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800invitepIeQ))$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800mHeQ? $9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibilityeGeQ/ $W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rulesjFeQ9 $jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_aliasgEeQ3 $jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels DeQ']$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800joinaCeQ' $9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800m.room.create BeQ']$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800join  4 h 9md]c@anon-20191002_181700-633:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgo127.0.0.1Id]c@anon-20191002_181700-623:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6Iwo127.0.0.1@d]c@anon-20191002_181700-632:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwo127.0.0.1Hd]c@anon-20191002_181700-631:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQo127.0.0.1Gd]c@anon-20191002_181700-630:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygo127.0.0.1Fa[a@anon-20191002_181700-62:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCg127.0.0.15d]c@anon-20191002_181700-628:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwo127.0.0.1Ed]c@anon-20191002_181700-627:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_go127.0.0.1Dd]c@anon-20191002_181700-626:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAo127.0.0.1Cd]c@anon-20191002_181700-625:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQo127.0.0.1Bd]c@anon-20191002_181700-624:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywo127.0.0.1A G \6# '  J   V8p n < P  > $u DD  UY jO}L |b0 * Gm1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 21e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE`1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yv 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGok 1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM h21e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgz1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4:0e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ&1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0b1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo$1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA d1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod491e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eh1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI U1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgN1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ k1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 y1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk )1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA v21e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawQ1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww}1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 21e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkv1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw ,1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ]1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ -1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 21e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT01e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk21e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw /RM H C > 9 4/*|%Ng*CRMJ$QQ x!fDISaqNBhlOwherxSt:localhost:8800$1570043361285xsPbY:localhost:8800T#Qe w!yAfsSyqpJWFnkXQFJL:localhost:8800$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQT"Qe v!yAfsSyqpJWFnkXQFJL:localhost:8800$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3BcT!Qe u!yAfsSyqpJWFnkXQFJL:localhost:8800$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8foT Qe t!yAfsSyqpJWFnkXQFJL:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUTQe s!yAfsSyqpJWFnkXQFJL:localhost:8800$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmoJQQ r!AYFqrmxwClFQlcTTYq:localhost:8800$1570043354284IVfTL:localhost:8800JQQ q!AYFqrmxwClFQlcTTYq:localhost:8800$1570043353283ubEdk:localhost:8800JQQ p!AYFqrmxwClFQlcTTYq:localhost:8800$1570043352282iTcSU:localhost:8800JQQ o!AYFqrmxwClFQlcTTYq:localhost:8800$1570043351281XHPOP:localhost:8800JQQ n!AYFqrmxwClFQlcTTYq:localhost:8800$1570043350280ydSwy:localhost:8800:Q1 m!pHoEnhQYhwlbJXqKQE:localhost:8800$3:localhost:42455JQQ l!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043347278WlNld:localhost:8800JQQ k!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346277FsKPl:localhost:8800JQQ j!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346276qTXUF:localhost:8800JQQ i!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043345275UDVPY:localhost:8800JQQ h!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043344274cabjv:localhost:8800:1Q g!0:localhost:42455$1570043341273LsXNn:localhost:8800TQe `!OCEHAjcOXWNyWIESIS:localhost:8800$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYTQe _!OCEHAjcOXWNyWIESIS:localhost:8800$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQTQe ^!OCEHAjcOXWNyWIESIS:localhost:8800$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VITQe ]!OCEHAjcOXWNyWIESIS:localhost:8800$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3isTQe \!OCEHAjcOXWNyWIESIS:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsT Qe [!OCEHAjcOXWNyWIESIS:localhost:8800$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicoT Qe Z!qjijQBfMwsCPTVgKPm:localhost:8800$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08T Qe Y!qjijQBfMwsCPTVgKPm:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpoT Qe X!qjijQBfMwsCPTVgKPm:localhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykT Qe W!qjijQBfMwsCPTVgKPm:localhost:8800$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMATQe V!qjijQBfMwsCPTVgKPm:localhost:8800$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFoTQe U!qjijQBfMwsCPTVgKPm:localhost:8800$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gTQe T!qjijQBfMwsCPTVgKPm:localhost:8800$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oETQe S!qjijQBfMwsCPTVgKPm:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5oTQe R!qjijQBfMwsCPTVgKPm:localhost:8800$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8TQe Q!kjjUsMowsioSQRIJeg:localhost:8800$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQTQe P!kjjUsMowsioSQRIJeg:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2oTQe O!kjjUsMowsioSQRIJeg:localhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYETQe N!kjjUsMowsioSQRIJeg:localhost:8800$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RITQe M!kjjUsMowsioSQRIJeg:localhost:8800$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UET~Qe L!kjjUsMowsioSQRIJeg:localhost:8800$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocT}Qe K!kjjUsMowsioSQRIJeg:localhost:8800$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwET|Qe J!kjjUsMowsioSQRIJeg:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1YT{Qe I!kjjUsMowsioSQRIJeg:localhost:8800$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFATzQe H!UTAORDrNxIbSlGByAp:localhost:8800$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8TyQe G!UTAORDrNxIbSlGByAp:localhost:8800$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3UTxQe F!UTAORDrNxIbSlGByAp:localhost:8800$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pksTwQe E!UTAORDrNxIbSlGByAp:localhost:8800$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5ETvQe D!UTAORDrNxIbSlGByAp:localhost:8800$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg /NC 8 - { " p  e ZODm.ATw(1V\eL$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fosha256,ۇ# {1?Ktǃ4]V[eL$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUsha256~fϋ}fԫF0slivew2VZeL$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmosha256 5nzzM6 nP7bjLYQL$1570043354284IVfTL:localhost:8800sha256֞߄Ԓ71~`Wҁue#_V:LXQL$1570043353283ubEdk:localhost:8800sha256t>'S` # ш׬/qZrqLWQL$1570043352282iTcSU:localhost:8800sha256+nl_l>'ff5b<[ɏ ]@o=VJeL$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYsha256'OJ}pXm8K5QfVIeL$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQsha256K(mlƩv/'[["94VHeL$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIsha256vTQN_׃yIk[RVGeL$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3issha256T'hڄ],Z.GgF&>+VFeL$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBssha256GBnWƗ^y{//40A<>&<VEeL$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicosha256 { ݆Y{3)ձƾ%(<ƉVDeL$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08sha256<@2z.)AG{#zjn`OVCeL$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJposha256q&+k< `K^{?n聳r &VBeL$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyksha256p{IDw&#Z9} C( [QI5x C)VAeL$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAsha256,}{`chjȐ+4-V@eL$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFosha256Yps6hHNP3Dk eL$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oEsha256o+T,rr϶I ٌLn FV=eL$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5osha256 nƞR =ryl &gV<eL$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8sha256kk^}; TD=qkF ֿV;eL$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQsha256m'Dc)Δ9jxr~\V:eL$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2osha256hX3TvkJHXRjlR׋jV9eL$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEsha256+K k0 vۚúibayV8eL$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIsha256 |zoG3W,+\زV7eL$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEsha256[FH7ѧHy.L T"VAV6eL$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocsha256x9rs !guƇV5eL$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEsha256:v ׊Pw"D>VrV4eL$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Ysha256,2=c652Eme nq'VV3eL$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFAsha256[G/~&FʂMחv`ǃ+ȜPV2eL$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8sha256&ѩuF4,jNJڈKV1eL$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3Usha256Qx y?Iak:#cEƟO8$TuV0eL$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pkssha256A H7*hך(ZFT8A"KV/eL$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5Esha2563J5j?Ш{9[B3"hWp!wOV.eL$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mksha256xcg0rjѣ#E#'ot=i  HK2eQs$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 591, "txn_id": "592", "stream_ordering": 3144}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "prev_events": ["$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-610:localhost:8800", "content": {"body": "Message3", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043314404, "hashes": {"sha256": "JkUDrOpGuxeH8HXo7KEW+6CYYXw5bd6CRyFm+b6qAXo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YMb+FP+e+AVioWKDJw4btO3Jt6pBggvWLrMP6y43AjgIT9jGszSr6HOjIPBeYjMuCFoqAEyNG/dHnoKXVpqUCA"}}, "unsigned": {"age_ts": 1570043314404}}1eQs$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 590, "txn_id": "591", "stream_ordering": 3143}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE"], "prev_events": ["$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-609:localhost:8800", "content": {"msgtype": "m.text", "body": "Message2"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043313753, "hashes": {"sha256": "3AZP/gG40sm9XtlpXm4SlaiRp0qNDOTo6b7vVrxj7lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QEjCdFbgw9bLxJs4Mx6stwJ1u8yFcGhRnxiNFfYdNM4G/kmWBqzdOrn+N01XZnZAts3X3hhRKisWP7CiDVf+Bw"}}, "unsigned": {"age_ts": 1570043313753}}p0eQI$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "txn_id": "590", "stream_ordering": 3142}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E"], "type": "a.made.up.filler.type", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"filler": 1}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043313044, "hashes": {"sha256": "+OZDViiXakxMHmYdWCcJykNGpyWfmU+3C+PT24EgrFA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z5g31ZqWn7okgaDt/6e2WQxZh8pxGCMUfKIIeUYnkyywR2CDVY8HooJJ+AC7dHAXQhlaovyfOCii/PdJujxbDw"}}, "unsigned": {"age_ts": 1570043313044}}4/eQQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 591, "txn_id": "589", "stream_ordering": 3141}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "prev_events": ["$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg", "$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-610:localhost:8800", "content": {"msgtype": "m.text", "body": "Message"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043311818, "hashes": {"sha256": "9uD0QELWAapHyORM+UpGU41AkMPM/TYl3glS8GhA7MA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IWDmPJTC4sPf5Q5W54Z8sEGUZsPGvs3suWLwn8jp/lfDloaZ6MNJNP4rkMDUoqaog8V3GE+RUYB72ozO1LV9DA"}}, "unsigned": {"age_ts": 1570043311818}} %k3/ + ' #  Cgy;Qu:^8kkMQQQ$1570043534365WVAkx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800\L3QQ$39:localhost:42455$1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kKQQQ$1570043530362jRUtV:localhost:8800$1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kJQQQ$1570043529361Oytod:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kIQQQ$1570043528360cetnZ:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kHQQQ$1570043527359ScxWW:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kGQQQ$1570043525357VEfrE:localhost:8800$1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800kFQQQ$1570043524356NlySy:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800kEQQQ$1570043523355SbJjm:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800kDQQQ$1570043522354IAAap:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800\C3QQ$38:localhost:42455$1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800kBQQQ$1570043518351Popej:localhost:8800$1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800kAQQQ$1570043517350ncbDd:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800k@QQQ$1570043517349uVTMj:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800k?QQQ$1570043516348vThZG:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800;>111$3:localhost:41985$2:localhost:41985!0:localhost:41985;=111$3:localhost:44405$2:localhost:44405!0:localhost:44405;<111$3:localhost:37265$2:localhost:37265!0:localhost:37265=;331$37:localhost:42455$36:localhost:42455!8:localhost:42455=:331$33:localhost:42455$32:localhost:42455!7:localhost:42455k9QQQ$1570043506346EEQDj:localhost:8800$1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k8QQQ$1570043504345DCjlJ:localhost:8800$1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k7QQQ$1570043503344dJwGF:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k6QQQ$1570043503343snlnn:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k5QQQ$1570043502342mVJmO:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:88004eeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:88003eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:88002eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:88001eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:88000eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800/eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800.eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800-eeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800,eeQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800+eeQ$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800\*3QQ$29:localhost:42455$1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k)QQQ$1570043486339YbYQQ:localhost:8800$1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 Ct  U #  p \ *T Zb>0h6n< zNH("B  u D  | J  2(21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI;1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 61e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 {1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY O1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY A1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 '1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc,1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAd1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM 91e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE-1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkO1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA j1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh41e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA'1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0e1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to<1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYR1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcF1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYx0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8I1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k 1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8o1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAC0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicR1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 821e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4Y1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cv   *6eQa9$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3148}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE"], "type": "m.room.canonical_alias", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"alias": "#test-20191002_181700-45:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043318339, "hashes": {"sha256": "LrUEoOdF+oiICZ8/bC5FSka1wRqjUoj8k3APsrsN6qY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tXkYrzimdDmk2cbUb8KW6EuENPfsLlncogr61/eAWInfADf79TH42/c1AhraAHmYxBqdxvuYPa275yRWXD4DAQ"}}, "unsigned": {"age_ts": 1570043318339}}k5eQac$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3147}{"auth_events": ["$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "type": "m.room.power_levels", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"users": {"@anon-20191002_181700-612:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043317490, "hashes": {"sha256": "JeiyqrGf19l2jHA1QcItfa2TP45vC866+vb6Lg2Kbfc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NJUxrNL+0Fb1QTb9gG6SKnKtBizqoGgp7aq5UJyQG4EQeKppqM+ZVVBkWOjnYVqyKX+UUXx6tQSUbiQtBDpiBA"}}, "unsigned": {"age_ts": 1570043317490}}v4eQay$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3146}{"auth_events": ["$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA"], "prev_events": ["$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA"], "type": "m.room.member", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-612", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-612:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043316901, "hashes": {"sha256": "sRS71u4TFqiAzc2zVQ9dGn6oPlV2HRN5CQE/VNvuwJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aGcD0Kl8ClD0f0uSdjALxZgjWiCpqFM10r3eGbcMA9CBlJctbafDtTfqeK2djKcag5z97vv8M2koA8YGrD6aBg"}}, "unsigned": {"age_ts": 1570043316901}}i3eQa_$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3145}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-612:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043316137, "hashes": {"sha256": "dMALLudS0e+UodXpJ6Nc9iRHrSIegsKifWQDgbwu4Ww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I8djSiyzjIJWIL4GtaIV/YvVHY3/BzVTkn69+qGowCewMYJBLy5F3K1lHCuVIrf2gjTLMMjDXbPJGpy7UnqxBw"}}, "unsigned": {"age_ts": 1570043316137}} Ct  U #  p \ *T Zb>0h6n< zNH("B  u D  | J  2(21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI;1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 61e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 {1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY O1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY A1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 '1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc,1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAd1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM 91e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE-1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkO1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA j1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA'1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0e1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to<1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYR1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcF1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYx0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8I1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k 1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8o1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAC0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicR1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 821e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4S1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cp [ [ 9eQaM$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3151}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI"], "type": "m.room.aliases", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"aliases": ["#test-20191002_181700-45:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043321513, "hashes": {"sha256": "1nih8ppu0LuVQJhEeEUq8zhssCaDhdF1bjSGKXB/F8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GSxKFKAW0Z8xSR2QUhGL4IQpbUo5IE7ooYOEhKpyux0k+Djr0tSDrQM2cvaxfxUTW3VHVewUW5TPOmvuRCxNAA"}}, "unsigned": {"age_ts": 1570043321513}}8eQa$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3150}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE"], "type": "m.room.history_visibility", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043320281, "hashes": {"sha256": "mVTkoFMEFLoqJ/drJQwUCHR7fF/v0PjMUH65F4Vzyao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jFEoMCqB0Yya/Xm4fHfxZUQp3WYQMSI8d6B6MlI8nkNupPVVdhRFiRmm4LQOKD+liZN+4FcSA0MjnxlOA4D6Bg"}}, "unsigned": {"age_ts": 1570043320281}}t7eQau$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3149}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc"], "type": "m.room.join_rules", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043319356, "hashes": {"sha256": "gOppRHRfp39JYDna+ApjDTnhonbEODYtJhAf6AxQCdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xxUXAxmctzYm8Qi3eACsAWmy5u/Lj36P9/N/7xahDa87JQUc81dKCO5G4TrzujINFap7Ig8D0VIfBo1WEcFFAA"}}, "unsigned": {"age_ts": 1570043319356}} [ i  n  q!14`f4jQ3Q ]$1570043346276qTXUF:localhost:8800m.room.power_levels!pHoEnhQYhwlbJXqKQE:localhost:8800m=Xm=@anon-20191002_181700-619:localhost:8800iQ'Q ]$1570043345275UDVPY:localhost:8800m.room.member!pHoEnhQYhwlbJXqKQE:localhost:8800m8m9B@anon-20191002_181700-619:localhost:8800h Q'Q  ]$1570043344274cabjv:localhost:8800m.room.create!pHoEnhQYhwlbJXqKQE:localhost:8800m6m6k@anon-20191002_181700-619:localhost:8800gQ'1 ]$1570043341273LsXNn:localhost:8800m.room.member!0:localhost:42455m*m,T@anon-20191002_181700-617:localhost:8800mc1/1 C$2:localhost:42455m.room.join_rules!0:localhost:42455m*m+7@__ANON__-0:localhost:42455gb 1'1 C$1:localhost:42455m.room.member!0:localhost:42455m*m+7@__ANON__-0:localhost:42455ga1'1 C$0:localhost:42455m.room.create!0:localhost:42455m*m+7@__ANON__-0:localhost:42455!`e)Q ]$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYm.room.aliases!OCEHAjcOXWNyWIESIS:localhost:8800m&Qm&@anon-20191002_181700-616:localhost:8800,_e?Q ]$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQm.room.history_visibility!OCEHAjcOXWNyWIESIS:localhost:8800m!m"@anon-20191002_181700-616:localhost:8800$^e/Q ]$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIm.room.join_rules!OCEHAjcOXWNyWIESIS:localhost:8800mmmN@anon-20191002_181700-616:localhost:8800&]e3Q ]$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3ism.room.power_levels!OCEHAjcOXWNyWIESIS:localhost:8800mpm@anon-20191002_181700-616:localhost:8800 \e'Q ]$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsm.room.member!OCEHAjcOXWNyWIESIS:localhost:8800mm@anon-20191002_181700-616:localhost:8800[ e'Q  ]$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicom.room.create!OCEHAjcOXWNyWIESIS:localhost:8800mm@anon-20191002_181700-616:localhost:8800(Ze7Q ] $PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08a.made.up.filler.type!qjijQBfMwsCPTVgKPm:localhost:8800 mm@anon-20191002_181700-614:localhost:8800 Ye'Q ]$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpom.room.member!qjijQBfMwsCPTVgKPm:localhost:8800mm:@anon-20191002_181700-614:localhost:8800!Xe)Q ]$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykm.room.aliases!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800,We?Q ]$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAm.room.history_visibility!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800$Ve/Q ]$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFom.room.join_rules!qjijQBfMwsCPTVgKPm:localhost:8800mFm)@anon-20191002_181700-614:localhost:8800)Ue9Q ]$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gm.room.canonical_alias!qjijQBfMwsCPTVgKPm:localhost:8800m@m/@anon-20191002_181700-614:localhost:8800&Te3Q ]$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oEm.room.power_levels!qjijQBfMwsCPTVgKPm:localhost:8800m[ma@anon-20191002_181700-614:localhost:8800 Se'Q ]$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5om.room.member!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800R e'Q  ]$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8m.room.create!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800(Qe7Q ] $BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQa.made.up.filler.type!kjjUsMowsioSQRIJeg:localhost:8800 mm@anon-20191002_181700-612:localhost:8800 Pe'Q ]$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2om.room.member!kjjUsMowsioSQRIJeg:localhost:8800mm@anon-20191002_181700-612:localhost:8800!Oe)Q ]$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEm.room.aliases!kjjUsMowsioSQRIJeg:localhost:8800mܩmo@anon-20191002_181700-612:localhost:8800 [ H[i<eQa_$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3154}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-614:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043325206, "hashes": {"sha256": "NsatYpg7z8e77/isBSHJbO0UjoLNKgNUmzMcr68r0DU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GCiGLvVPEkblxwdg2Yccnigf5KRo90IlNMiUk3wAy7eMgyhPYAmK+XXpFRScSIUjk2O7DepvhOBvxYUck9djAg"}}, "unsigned": {"age_ts": 1570043325206}}o;eQG$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "txn_id": "593", "stream_ordering": 3153}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o"], "type": "a.made.up.filler.type", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043323312, "hashes": {"sha256": "nt72h3gLzzBxKfXXlUIZkUzT8sIKnFe/m+GI+o1pirc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x9aZnxWXfcvKebUmIrBZ0oidxs/WulLcYgYF2JPiYccWNA+PmouWDUSUWt3st6nu/+lGTKMcLwm4zPaHlJqDCw"}}, "unsigned": {"age_ts": 1570043323312}}A:eQa$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3152}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE"], "type": "m.room.member", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-611", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-611:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043322496, "hashes": {"sha256": "mpI6q/0y8Z+T6K+H08lz3Y4dOf2/qvkr7QzsMOVJRvk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "04WQQ4nXgvlniP9W6GNpHU6VMUg8R87MLlQGxFLgUIxRWsKWHeL6llXhTSBhScDvl7IoGRCfWaA+0QWrVhvCCQ"}}, "unsigned": {"age_ts": 1570043322496, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-45:localhost:8800"}, "sender": "@anon-20191002_181700-612:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-612:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-612:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-612", "avatar_url": null}, "sender": "@anon-20191002_181700-612:localhost:8800"}]}} 7p v Q]4)bM eEEQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0@__ANON__-12:localhost:42455@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800joinCL e]]Q=$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg@anon-20191002_181700-634:localhost:8800@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800joinanon-20191002_181700-634K eEEQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E@__ANON__-11:localhost:42455@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:8800joinCJ e]]Q=$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk@anon-20191002_181700-633:localhost:8800@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800joinanon-20191002_181700-633)I Q]]1=$1570043391316OJaBO:localhost:8800@anon-20191002_181700-632:localhost:8800@anon-20191002_181700-632:localhost:8800!5:localhost:42455joinanon-20191002_181700-632jH 3EE1$11:localhost:42455@__ANON__-10:localhost:42455@__ANON__-10:localhost:42455!5:localhost:42455join8G O]]Q=$157004338812XhwjX:localhost:8829@anon-20191002_181700-629:localhost:8829@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800joinanon-20191002_181700-6299F Q]]Q=$1570043383307bhuDV:localhost:8800@anon-20191002_181700-628:localhost:8800@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800joinanon-20191002_181700-6289E Q]]Q=$1570043377301OraEa:localhost:8800@anon-20191002_181700-626:localhost:8800@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800joinanon-20191002_181700-6269D Q]]Q=$1570043372296yAiBq:localhost:8800@anon-20191002_181700-625:localhost:8800@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800joinanon-20191002_181700-6259C Q]]Q=$1570043367291AEdax:localhost:8800@anon-20191002_181700-624:localhost:8800@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800joinanon-20191002_181700-6249B Q]]Q=$1570043362286KwXMK:localhost:8800@anon-20191002_181700-623:localhost:8800@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800joinanon-20191002_181700-623CA e]]Q=$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU@anon-20191002_181700-622:localhost:8800@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800joinanon-20191002_181700-6229@ Q]]Q=$1570043351281XHPOP:localhost:8800@anon-20191002_181700-620:localhost:8800@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800joinanon-20191002_181700-620w? 1CCQ$3:localhost:42455@__ANON__-2:localhost:42455@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800join9> Q]]Q=$1570043345275UDVPY:localhost:8800@anon-20191002_181700-619:localhost:8800@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800joinanon-20191002_181700-619)= Q]]1=$1570043341273LsXNn:localhost:8800@anon-20191002_181700-617:localhost:8800@anon-20191002_181700-617:localhost:8800!0:localhost:42455joinanon-20191002_181700-617g< 1CC1$1:localhost:42455@__ANON__-0:localhost:42455@__ANON__-0:localhost:42455!0:localhost:42455joinC; e]]Q=$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs@anon-20191002_181700-616:localhost:8800@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800joinanon-20191002_181700-616E: e]]Q=$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo@anon-20191002_181700-613:localhost:8800@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800inviteanon-20191002_181700-613C9 e]]Q=$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o@anon-20191002_181700-614:localhost:8800@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800joinanon-20191002_181700-614E8 e]]Q=$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o@anon-20191002_181700-611:localhost:8800@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800inviteanon-20191002_181700-611 GPt= a * N  r ;  _ ( L p9]&Jn7[$Hl5Y"4)==anon-20191002_181700-685anon-20191002_181700-6854(==anon-20191002_181700-684anon-20191002_181700-6844'==anon-20191002_181700-683anon-20191002_181700-6834&==anon-20191002_181700-682anon-20191002_181700-6824%==anon-20191002_181700-681anon-20191002_181700-6814$==anon-20191002_181700-680anon-20191002_181700-6804#==anon-20191002_181700-679anon-20191002_181700-6794"==anon-20191002_181700-678anon-20191002_181700-6784!==anon-20191002_181700-677anon-20191002_181700-6774 ==anon-20191002_181700-676anon-20191002_181700-6764==anon-20191002_181700-675anon-20191002_181700-6754==anon-20191002_181700-674anon-20191002_181700-6744==anon-20191002_181700-673anon-20191002_181700-6734==anon-20191002_181700-672anon-20191002_181700-6724==anon-20191002_181700-671anon-20191002_181700-6714==anon-20191002_181700-670anon-20191002_181700-6704==anon-20191002_181700-669anon-20191002_181700-6694==anon-20191002_181700-668anon-20191002_181700-6684==anon-20191002_181700-667anon-20191002_181700-6674==anon-20191002_181700-666anon-20191002_181700-6664==anon-20191002_181700-665anon-20191002_181700-6654==anon-20191002_181700-664anon-20191002_181700-6644==anon-20191002_181700-663anon-20191002_181700-6634==anon-20191002_181700-662anon-20191002_181700-6624==anon-20191002_181700-661anon-20191002_181700-6614==anon-20191002_181700-660anon-20191002_181700-6604==anon-20191002_181700-659anon-20191002_181700-6594==anon-20191002_181700-658anon-20191002_181700-6584 ==anon-20191002_181700-657anon-20191002_181700-6574 ==anon-20191002_181700-656anon-20191002_181700-6564 ==anon-20191002_181700-655anon-20191002_181700-6554 ==anon-20191002_181700-654anon-20191002_181700-6544 ==anon-20191002_181700-653anon-20191002_181700-6534==anon-20191002_181700-652anon-20191002_181700-6524==anon-20191002_181700-651anon-20191002_181700-6514==anon-20191002_181700-650anon-20191002_181700-6504==anon-20191002_181700-649anon-20191002_181700-6494==anon-20191002_181700-648anon-20191002_181700-6484==anon-20191002_181700-647anon-20191002_181700-6474==anon-20191002_181700-646anon-20191002_181700-6464==anon-20191002_181700-645anon-20191002_181700-6454==anon-20191002_181700-644anon-20191002_181700-6444==anon-20191002_181700-643anon-20191002_181700-6434~==anon-20191002_181700-642anon-20191002_181700-6424}==anon-20191002_181700-641anon-20191002_181700-6414|==anon-20191002_181700-640anon-20191002_181700-6404{==anon-20191002_181700-639anon-20191002_181700-6394z==anon-20191002_181700-638anon-20191002_181700-6384y==anon-20191002_181700-637anon-20191002_181700-6374x==anon-20191002_181700-636anon-20191002_181700-6364w==anon-20191002_181700-635anon-20191002_181700-6354v==anon-20191002_181700-634anon-20191002_181700-6344u==anon-20191002_181700-633anon-20191002_181700-6334t==anon-20191002_181700-632anon-20191002_181700-6324s==anon-20191002_181700-631anon-20191002_181700-6314r==anon-20191002_181700-630anon-20191002_181700-6304q==anon-20191002_181700-628anon-20191002_181700-6284p==anon-20191002_181700-627anon-20191002_181700-6274o==anon-20191002_181700-626anon-20191002_181700-6264n==anon-20191002_181700-625anon-20191002_181700-6254m==anon-20191002_181700-624anon-20191002_181700-6244l==anon-20191002_181700-623anon-20191002_181700-6234k==anon-20191002_181700-622anon-20191002_181700-6224j==anon-20191002_181700-621anon-20191002_181700-6214i==anon-20191002_181700-620anon-20191002_181700-6204h==anon-20191002_181700-619anon-20191002_181700-6194g==anon-20191002_181700-618anon-20191002_181700-6184f==anon-20191002_181700-617anon-20191002_181700-6174e==anon-20191002_181700-616anon-20191002_181700-616?d=Sanon-20191002_181700-615Displayname Set For Federation Test4c==anon-20191002_181700-614anon-20191002_181700-614 g * T~=ggS]!c\@anon-20191002_181700-623:localhost:8800VLGPPLCUUDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6IwogR]!c[@anon-20191002_181700-622:localhost:8800IAPOATKCLUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygogQ]!cZ@anon-20191002_181700-621:localhost:8800MQWOVRGMDHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9IWFQza2lUTTFQV0FCSkcKMDAyZnNpZ25hdHVyZSDH8GKBiG2tmKZs-dzNXlz8Ww_sRhs7tCh0J4VtNcAN3wogP]!cY@anon-20191002_181700-620:localhost:8800CTOWFYNHGQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAogO]!cX@anon-20191002_181700-619:localhost:8800AZJJCPXJVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQogN]!cW@anon-20191002_181700-618:localhost:8800KPRKVKAABYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwogM]!cV@anon-20191002_181700-617:localhost:8800DZQIEDJUETMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJiQWdeRX5ENjNkbTZSYVkKMDAyZnNpZ25hdHVyZSA8zIpRzRmJlGIqkTBx6GA19slBMTUSU8V8B5mBBrAhIAogL]!cU@anon-20191002_181700-616:localhost:8800YMFGFJXLHSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtWczhVYXYqK2kxZEo5VUMKMDAyZnNpZ25hdHVyZSAyxMn--zXijwO_yDpNAKZp3Nowd1ex2CJt9oF3jnAAlQogK]!cT@anon-20191002_181700-615:localhost:8800LDFQWSUCEMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxQOkhhbnIqNG1BZnlZb0QKMDAyZnNpZ25hdHVyZSCd7FTUX1n-4f2mMjlkYjWuX6DbpozOJbgiroD47tErvwogJ]!cS@anon-20191002_181700-614:localhost:8800KKJOZKNSMZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRIQ1Z3XztVd0RTK2R4K3QKMDAyZnNpZ25hdHVyZSBr6Tw_uDl-saWiJHMt1fEznSF3WHYr5dOTbcQ5XctL7wogI]!cR@anon-20191002_181700-613:localhost:8800UDRWGJFVHIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpreUxsRlNPfmpWV0R4emwKMDAyZnNpZ25hdHVyZSAFh5ccDMSVr8aWYsFwKsNl55tnlLMnNvdhEFpRcQnZOQo  }t@eQau$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3158}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g"], "type": "m.room.join_rules", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043328582, "hashes": {"sha256": "LRev5PzIyA+fpPnxaYMbJunX3ff1hS/ZcsNeJK7a1sE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u/xQBhrQtto6ZzZANCoZxmv4qvL8+pTrjs4DVNA6t1VqLzT342NUkyNQmer3OjrAkTAdei7KGCh6CVNecgikBw"}}, "unsigned": {"age_ts": 1570043328582}}?eQa9$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3157}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE"], "type": "m.room.canonical_alias", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"alias": "#test-20191002_181700-46:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043327808, "hashes": {"sha256": "ukT+tn8sYhEghfoMoPeFCVggHF9AH0gbFKBCpJI+FCY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oiIXXE/iNd9xAVV8yQ3Bf3LL17tg3bS/exIZW0RtLeJIDKFseh8aIX+7PnpxJ8Ps3z4wf6gGuNYJ63ycwGozDQ"}}, "unsigned": {"age_ts": 1570043327808}}k>eQac$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3156}{"auth_events": ["$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "type": "m.room.power_levels", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"users": {"@anon-20191002_181700-614:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043327067, "hashes": {"sha256": "ZSXM2Z7yek37jzbXrVvHmwICnrKP9G2fznxL4cNGrdU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "12yigBad7CVPHvqvca67OSA9m2VNlZT+oU/Ob4F/NVKAA6cnQNYEEKUY24sDtuWqlU0vAd5PT7AW7cRcbEz8BA"}}, "unsigned": {"age_ts": 1570043327067}}v=eQay$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3155}{"auth_events": ["$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8"], "prev_events": ["$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8"], "type": "m.room.member", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-614", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-614:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043326384, "hashes": {"sha256": "oRYlJmaHZOW5OgixeeJKHCHTaXVtYzzh46zNitfErCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3qSfYXQ1Spqya3nxvPs5NOZ1596qe8kG/YtnzvWQisP7T3YgK4FhWAVcFvGRmerZO8BrVzCfOGzKu244sYOJCw"}}, "unsigned": {"age_ts": 1570043326384}} %|'@ K P t , \u6s,^c+D|e]Q? Q Q' e !OCEHAjcOXWNyWIESIS:localhost:8800m.room.create$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico =Q']e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpor<Q))e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyko;Q? e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibility$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAg:Q/ e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rules$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFol9Q9 e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_alias$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g #Z~z v r n j , 2V@PL\6Zk?QQQ$1570043369294rquKy:localhost:8800$1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k>QQQ$1570043369293ssSMv:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k=QQQ$1570043368292FAoRb:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k<QQQ$1570043367291AEdax:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k;QQQ$1570043364289XIEhE:localhost:8800$1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800k:QQQ$1570043364288SCpzq:localhost:8800$1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800k9QQQ$1570043363287eSyun:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800k8QQQ$1570043362286KwXMK:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:88007eeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:88006eeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:88005eeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:88004eeQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800k3QQQ$1570043354284IVfTL:localhost:8800$1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800k2QQQ$1570043353283ubEdk:localhost:8800$1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800k1QQQ$1570043352282iTcSU:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800k0QQQ$1570043351281XHPOP:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800[/1QQ$3:localhost:42455$1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k.QQQ$1570043347278WlNld:localhost:8800$1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k-QQQ$1570043346277FsKPl:localhost:8800$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k,QQQ$1570043346276qTXUF:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k+QQQ$1570043345275UDVPY:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800K*Q11$1570043341273LsXNn:localhost:8800$2:localhost:42455!0:localhost:42455;)111$2:localhost:42455$1:localhost:42455!0:localhost:42455;(111$1:localhost:42455$0:localhost:42455!0:localhost:42455'eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800&eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800%eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800$eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800#eeQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800"eeQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800!eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800 I ^ 6  n F  ~ V . f>6^f>`8pH \ 5  vN& r K $ ~V. ~ V . &^6'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800 'Q!zFdNewlKnUiMBxnYrN:localhost:8800 'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 4'Q!zScKnCZCFPIIodAiQj:localhost:8800 1'Q!zScKnCZCFPIIodAiQj:localhost:8800 /'Q!zScKnCZCFPIIodAiQj:localhost:8800 -'Q!zHBgbzUZHshNGZvIBS:localhost:8800 6'Q!zHBgbzUZHshNGZvIBS:localhost:8800 5'Q!zHBgbzUZHshNGZvIBS:localhost:8800 4'Q!zHBgbzUZHshNGZvIBS:localhost:8800 3'Q!zHBgbzUZHshNGZvIBS:localhost:8800 2'Q!zHBgbzUZHshNGZvIBS:localhost:8800 1'Q!zHBgbzUZHshNGZvIBS:localhost:8800 0'Q!zHBgbzUZHshNGZvIBS:localhost:8800 /'Q!zHBgbzUZHshNGZvIBS:localhost:8800 -'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800 p'Q!yfizglmCXdcqCgDrTr:localhost:8800 o'Q!yfizglmCXdcqCgDrTr:localhost:8800 n'Q!yfizglmCXdcqCgDrTr:localhost:8800 m'Q!yfizglmCXdcqCgDrTr:localhost:8800 l'Q!yfizglmCXdcqCgDrTr:localhost:8800 k'Q!yfizglmCXdcqCgDrTr:localhost:8800 j'Q!yfizglmCXdcqCgDrTr:localhost:8800 i'Q!yfizglmCXdcqCgDrTr:localhost:8800 h'Q!yfizglmCXdcqCgDrTr:localhost:8800 g'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800,'Q!yWhIsLsgNVGcnELrDS:localhost:8800%'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800e&Q!zhCsYcaweVFJLLNwBz:localhost:8800.&Q!zhCsYcaweVFJLLNwBz:localhost:8800-&Q!zhCsYcaweVFJLLNwBz:localhost:8800,&Q!zhCsYcaweVFJLLNwBz:localhost:8800+&Q!zhCsYcaweVFJLLNwBz:localhost:8800*&Q!zhCsYcaweVFJLLNwBz:localhost:8800)&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800 +'Q!zScKnCZCFPIIodAiQj:localhost:8800 )'Q!zHBgbzUZHshNGZvIBS:localhost:8800 .  wACeQa$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3161}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk"], "type": "m.room.member", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-613", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-613:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043331788, "hashes": {"sha256": "OiEVOWkJ2QU7xXxot3ANk0ZGzAk5K9TPklC0ZndfrKs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lOr2m++DTt7YJVNT/odM7SOetj2xCgnt75nQrHyzEH2velMy6P7WyDVvd7J7JEfXnrhVJKF5lsuUK8Ki39orCg"}}, "unsigned": {"age_ts": 1570043331788, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-46:localhost:8800"}, "sender": "@anon-20191002_181700-614:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-614:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-614:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-614", "avatar_url": null}, "sender": "@anon-20191002_181700-614:localhost:8800"}]}} BeQaM$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3160}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA"], "type": "m.room.aliases", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"aliases": ["#test-20191002_181700-46:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043330538, "hashes": {"sha256": "R7aZ8MzwlZVx6kJotlm1DGn/7al4uu0KD5YxmvpXUMI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e/TWaLCkwJvtETxrC7r2omc4Cq2g92u6gHQmMvBwowlbKU1nOnI8i+0j0FMpafi/ROvOktXmkgoiXH+j/h/dCg"}}, "unsigned": {"age_ts": 1570043330538}}AeQa$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3159}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo"], "type": "m.room.history_visibility", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043329299, "hashes": {"sha256": "ycAKLK+F1PUKpy4g8cm/wSiA+pplzZG3I8pbahT54uQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EsTm6yXo7Zw2OwDqGTV/kCPparklTFoX3Cg1vAQAb88mc4T9OQMWE75MsXi4wjYo7MfhypGz0Lw/c+tK7sM2Ag"}}, "unsigned": {"age_ts": 1570043329299}} "} { y w u sqomkp3,Rx j5QQQ$1570043347278WlNld:localhost:8800$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j4QQQ$1570043346277FsKPl:localhost:8800$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j3QQQ$1570043346277FsKPl:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j2QQQ$1570043346277FsKPl:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j1QQQ$1570043346276qTXUF:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j0QQQ$1570043346276qTXUF:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j/QQQ$1570043345275UDVPY:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800J.Q11$1570043341273LsXNn:localhost:8800$2:localhost:42455!0:localhost:42455J-Q11$1570043341273LsXNn:localhost:8800$0:localhost:42455!0:localhost:42455:,111$2:localhost:42455$1:localhost:42455!0:localhost:42455:+111$2:localhost:42455$0:localhost:42455!0:localhost:42455:*111$1:localhost:42455$0:localhost:42455!0:localhost:42455~)eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~(eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~'eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800~&eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~%eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~$eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800~#eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~"eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~!eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800~ eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~eeQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800  l  ,D   d<$ \ 4|eeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800 !eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800YeeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800 eeeQ$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800|eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800teeQ$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800aeeQ$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800 LeeQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:88008eeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800PeeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800<eeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800́eeQ$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800 TeeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800 teeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800ӁeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800}eeQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800BeeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800I|eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800 r { v t o j hfa_[YWUjh|Q/e!IMiczgkCTjejbnbeyP:localhost:8800@3:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgjoin{Q]e!IMiczgkCTjejbnbeyP:localhost:8800@anon-20191002_181700-161:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssjoinhzQ/e!HIZTeBCxvpMSpcqGVD:localhost:8800@2:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kjoinyQ]e!HIZTeBCxvpMSpcqGVD:localhost:8800@anon-20191002_181700-160:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4joinxQ]e!awHAhLuEkavTGACcUW:localhost:8800@anon-20191002_181700-158:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMjoinwQ]e!OqPpVlCwmKdAUlwrXI:localhost:8800@anon-20191002_181700-156:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEjoinvQ]e!quaZwrGnzbNWhwAOYB:localhost:8800@anon-20191002_181700-154:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4joinuQ]e!JusxqeECtidaPlWqhp:localhost:8800@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIjointQ]e!JusxqeECtidaPlWqhp:localhost:8800@anon-20191002_181700-152:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4joinsQ]e!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0joinrQ]e!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-149:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8leaveqQ]e!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokjoinpQ]e!GiSxJsKZhQVHBkrVPn:localhost:8800@anon-20191002_181700-146:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkjoinoQ]e!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMjoinnQ]e!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-143:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvojoinmQ]e!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-142:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4invitelQ]e!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-141:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQjoinkQ]e!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-140:localhost:8800$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8joinjQ]e!WWZVpyLeZfyfpWidLx:localhost:8800@anon-20191002_181700-138:localhost:8800$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcjoiniQ]e!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-137:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBsjoinhQ]e!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-136:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgjoingQ]e!lMRBkbYJDQHgdBZBFJ:localhost:8800@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQinvitefQ]e!lMRBkbYJDQHgdBZBFJ:localhost:8800@anon-20191002_181700-134:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYjoineQ]e!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADaginvitedQ]e!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAjoincQ]e!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-131:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREjoinbQ]e!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0inviteaQ]e!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-129:localhost:8800$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYjoin`Q]e!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-127:localhost:8800$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIleave_Q]e!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-128:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8join^Q]e!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-126:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgjoin D|t l d \ T LDeeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800geeQ$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800eeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800 $eeQ$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800فeeQ$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800eeQ$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800eeQ$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800YeeQ$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800^eeQ$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800!  &kGeQac$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3165}{"auth_events": ["$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "type": "m.room.power_levels", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"users": {"@anon-20191002_181700-616:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043337584, "hashes": {"sha256": "LpPtHrBb5HwXK32SZnNHwarfvIi0AH53A6Bbrez8TqE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hOxVhxAV8ESiFlcVQXM/oxdrMuu3SOejz4CCX72ufnNQuG7rtJRLg/Faek6QC5AVNIQ6bSVdnI+pLW+FwuV6AQ"}}, "unsigned": {"age_ts": 1570043337584}}vFeQay$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3164}{"auth_events": ["$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico"], "prev_events": ["$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico"], "type": "m.room.member", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-616", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-616:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043336835, "hashes": {"sha256": "1kccVzK7ySFx8ZCqnZBQvuQhKQlSEjhFGlpdjgzAR6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SexbYyGd5a3Xy91vxH1XaDvww5wbYRSDfJ9eADUmf4rLvtPFuFKFf0MootFEjCKU/LZJlhNyPkvUAqQq9Jw6Cg"}}, "unsigned": {"age_ts": 1570043336835}}iEeQa_$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3163}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-616:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043335939, "hashes": {"sha256": "AqFNWEmHL6zXK3l5oBbdzAr4a3JdOYoxXUtO/ZeUlyY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ekcJTKbmBkfSCTQobkcBWn41LO+5q6PtIdQgP0dXV71GFG2AvsEIp70fl3jzuIhmWE/3uc0Pr87rhvFB8FyCAA"}}, "unsigned": {"age_ts": 1570043335939}}oDeQG$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "txn_id": "594", "stream_ordering": 3162}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo"], "type": "a.made.up.filler.type", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043332632, "hashes": {"sha256": "LPItW8qP7WIR+LO7g3ZpvoeBba13Su8uVBO2Mqa26B0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MbLmO8IhDV2SEOSZ7OF/q1vLGR5/I+r5K38yHBeiQOBght0etBALRqZ0h9ml/l4mSSRSUi4EiP4UCq4nDZDgBg"}}, "unsigned": {"age_ts": 1570043332632}} ?+W%]Q}q V?  E2 P | J w $ D ^K , d>  vj9+j8}p]W Q221e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY)1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H901e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc`1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8(1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg }1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j461e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8k1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y p1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg .1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg 1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw 81e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsN1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawR1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE"1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us%1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE50e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgT1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4a1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgz1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs 2 21e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 Z1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM 1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s p21e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o P ii5 4  h g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAoq1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQow1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1Ywot1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwos1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAor1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgo{1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwoz1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgo}1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgov1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1gou1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4go|1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwoy1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2gox 'SU7q8 T  p 7 T  qS 8 T p8e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Ysha256w8e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyosha256 8e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOosha256 8e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okucsha256 [8e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYsha256 J8e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugsha256 >8e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAsha256 8e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrosha256 C8e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolksha2568e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwsha256y8e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkksha256 8e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQsha256-8e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeIsha2568e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qsha2568e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEsha256 7e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxssha256 8e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Kssha2568e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4ssha2568e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcsha2568e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29csha256?7e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUsha256 8e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iosha2568e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gwsha256 8e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78sha256 8e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcsha256 .8e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gsha2568e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hksha256m8e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgsha256 8e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAsha256 ^8e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gsha256 (8e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAsha2568e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYsha256|8e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAsha256f8e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgsha25668e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8sha256l8e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIsha256u8e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgsha256 c8e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYsha256 G8e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduosha256 25VD V F  i #r/d'x. iF!\j' . v 3u^Q']!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829mBQ? !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.history_visibilityl:Q/ !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.join_rulesk^Q']!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829fBQ? !WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibilitye:Q/ !WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rulesd<Q3 !WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levelsc^Q']!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800b6Q' !WuiaqqIOvBjgETqdus:localhost:8800m.room.createa^Q']!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-541:localhost:8800i6Q' !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.createhGQ'/!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800U:Q/ !WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rulesR$6Q' !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create oBQ? !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibility s6Q' !WhLedNwPGGGTtqeqam:localhost:8800m.room.create<Q3 !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels q^Q']!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800 p:Q/ !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rules rBQ? !XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibility :Q/ !XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rules <Q3 !XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels ^Q']!XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800 6Q' !XGAmnfaVvjDtQJuufa:localhost:8800m.room.create BQ? !WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibilityS<Q3 !WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accessV6Q' !WjlTCJVOFJkanCtkFE:localhost:8800m.room.createO<Q3 !WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levelsEQ'+!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.org^Q']!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800:Q/ !WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rulesBQ? !WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility<Q3 !WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access6Q' !WhqVaRReBxJXADAyYD:localhost:8800m.room.create<Q3 !WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levels^Q']!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829^Q']!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800:Q/ !WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rulesBQ? !WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibilityBQ? !XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibility6Q' !XMNRkfscQXRjgYrOSd:localhost:8800m.room.createCQ?!XIqmzIFbkHGQPIpywk:localhost:8800m.room.third_party_invite0<Q3 !XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels^Q']!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800^Q']!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800:Q/ !XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rulesBQ? !XIqmzIFbkHGQPIpywk:localhost:8800m.room.history_visibility6Q' !XIqmzIFbkHGQPIpywk:localhost:8800m.room.create?Q9 !XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_aliasEQ))!XIqmzIFbkHGQPIpywk:localhost:8800m.room.aliaseslocalhost:8800<Q3 !WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levelsQ^Q']!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800P<Q3 !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.power_levelsj &c(? i  M |  6lu*G7s 'c^vQ/ Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules$1570043374298UIMFg:localhost:8800`uQ3 Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levels$1570043373297SOjrf:localhost:8800tQ']Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800$1570043372296yAiBq:localhost:8800ZsQ' Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.create$1570043371295coDXo:localhost:8800frQ? Q !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility$1570043369294rquKy:localhost:8800^qQ/ Q !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules$1570043369293ssSMv:localhost:8800`pQ3 Q !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levels$1570043368292FAoRb:localhost:8800oQ']Q ~!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800$1570043367291AEdax:localhost:8800ZnQ' Q }!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.create$1570043366290YSCqz:localhost:8800fmQ? Q |!fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility$1570043364289XIEhE:localhost:8800^lQ/ Q {!fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules$1570043364288SCpzq:localhost:8800`kQ3 Q z!fDISaqNBhlOwherxSt:localhost:8800m.room.power_levels$1570043363287eSyun:localhost:8800jQ']Q y!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800$1570043362286KwXMK:localhost:8800ZiQ' Q x!fDISaqNBhlOwherxSt:localhost:8800m.room.create$1570043361285xsPbY:localhost:8800phQ? e w!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibility$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQhgQ/ e v!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rules$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3BcjfQ3 e u!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo eQ']e t!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUddQ' e s!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.create$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmofcQ? Q r!AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility$1570043354284IVfTL:localhost:8800^bQ/ Q q!AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules$1570043353283ubEdk:localhost:8800`aQ3 Q p!AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levels$1570043352282iTcSU:localhost:8800`Q']Q o!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800$1570043351281XHPOP:localhost:8800Z_Q' Q n!AYFqrmxwClFQlcTTYq:localhost:8800m.room.create$1570043350280ydSwy:localhost:8800e^Q'C1 m!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455$3:localhost:42455f]Q? Q l!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility$1570043347278WlNld:localhost:8800^\Q/ Q k!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules$1570043346277FsKPl:localhost:8800`[Q3 Q j!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levels$1570043346276qTXUF:localhost:8800ZQ']Q i!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800$1570043345275UDVPY:localhost:8800ZYQ' Q h!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.create$1570043344274cabjv:localhost:8800rX1']Q g!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800$1570043341273LsXNn:localhost:8800UW1'C1 g!0:localhost:42455m.room.member@__ANON__-0:localhost:42455$1:localhost:42455:V1' 1 g!0:localhost:42455m.room.create$0:localhost:42455>U1/ 1 g!0:localhost:42455m.room.join_rules$2:localhost:42455sTQ))e `!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYpSQ? e _!OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibility$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQhRQ/ e ^!OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rules$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIjQQ3 e ]!OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is  guK11aM $0:localhost:42455!0:localhost:42455{"outlier": true, "stream_ordering": 3169}{"origin_server_ts": 1570043341489, "prev_events": [], "event_id": "$0:localhost:42455", "auth_events": [], "content": {"creator": "@__ANON__-0:localhost:42455"}, "hashes": {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}, "sender": "@__ANON__-0:localhost:42455", "type": "m.room.create", "room_id": "!0:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 0, "signatures": {"localhost:42455": {"ed25519:1": "uc/e9P22kzK461WMaZWhsHTmcK3T1SMSaSl61/7RbltxlYcLbzOf3HI2sQznD7Ws7s8ADic1fFzNaI8UjA4mDA"}}, "unsigned": {}}JeQa5$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3168}{"auth_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is", "$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ"], "type": "m.room.aliases", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"aliases": ["#__ANON__-26:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043340369, "hashes": {"sha256": "WZ8eeL59JQQpD9AQcQe0/NOE2Qrxf/jM9AMktV25d40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9FfAyaGsAoEo1ekJUMCOVMrrwpfVUoa6rxXsUeq0fehLNyT09R4qLViSgW+8E4sQmIhhr0GzEvppuZYa+WSmAQ"}}, "unsigned": {"age_ts": 1570043340369}}IeQa$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3167}{"auth_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is", "$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI"], "type": "m.room.history_visibility", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043339016, "hashes": {"sha256": "suggR7Bpj5e/CqMdPs5bqQ7pCnG0i11QN9hT1T6vL6Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3+iVvVD+PWEkIJnhHRCjI7t1fCZINMIJNRTg6JIbsrp9yc00wyD8fHApkT8BMQiMxdr1T0TMZ9jAKE3xaLVUDQ"}}, "unsigned": {"age_ts": 1570043339016}}tHeQau$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3166}{"auth_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is", "$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is"], "type": "m.room.join_rules", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043338349, "hashes": {"sha256": "XgL8Wz130t41lipYqw+Vcg2I3VeBLvsipmO2EzB2Z4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ONXOhctGsVNbkarLxxTr6VIolHDzBn4aT8AWD5zmI3oo/2OjY+N8vZcF9qPgKLCPGwrfoxWoXwnwLPjNmgqNCA"}}, "unsigned": {"age_ts": 1570043338349}} b vbOQQaC $1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3176}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-619:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043344274cabjv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043344390, "hashes": {"sha256": "gWbH7dHYajUBH5zJyssVIObudla04tOzFD8C9fd9puc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UUM4HCA8uvcwmas9IdMFj7aDSVB+mNhUu8+cx1Xe4cKOXJIKwkAMq7n3DdVgyOSZFNtdSv158HMG5gZktED9Cg"}}, "unsigned": {"age_ts": 1570043344390}}NQ1?o $1570043341273LsXNn:localhost:8800!0:localhost:42455{"stream_ordering": 3175}{"sender": "@anon-20191002_181700-617:localhost:8800", "prev_events": [["$2:localhost:42455", {"sha256": "UwLW9tV08ikKzx5dxLZOaWshu1gXu+YrYS+HP0byVOE"}]], "origin_server_ts": 1570043341506, "depth": 3, "state_key": "@anon-20191002_181700-617:localhost:8800", "origin": "localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-617", "avatar_url": null}, "room_id": "!0:localhost:42455", "auth_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}], ["$2:localhost:42455", {"sha256": "UwLW9tV08ikKzx5dxLZOaWshu1gXu+YrYS+HP0byVOE"}]], "type": "m.room.member", "prev_state": [], "event_id": "$1570043341273LsXNn:localhost:8800", "hashes": {"sha256": "yohBvYG7xl6JffN+RB3ioeeoxwtAfRar+k17VcY5zAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rWdXiZh2qCCrO7/jTj6lQbvOCHg1Q5F6NDg16sBd/I05xa2EzvI9WVA6Qa9WgI/BT0qYAF4lN/81D5NNF4rDA"}}, "unsigned": {"age_ts": 1570043341508}}[M11a $2:localhost:42455!0:localhost:42455{"outlier": true, "stream_ordering": 3171}{"prev_events": [["$1:localhost:42455", {"sha256": "gX8A8HQhS50rYGKrb2oKsc7lP2y3fnxemXYaUphbLdA"}]], "origin_server_ts": 1570043341490, "content": {"join_rule": "public"}, "auth_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}], ["$1:localhost:42455", {"sha256": "gX8A8HQhS50rYGKrb2oKsc7lP2y3fnxemXYaUphbLdA"}]], "event_id": "$2:localhost:42455", "sender": "@__ANON__-0:localhost:42455", "hashes": {"sha256": "UwLW9tV08ikKzx5dxLZOaWshu1gXu+YrYS+HP0byVOE"}, "depth": 2, "state_key": "", "origin": "localhost:42455", "room_id": "!0:localhost:42455", "type": "m.room.join_rules", "signatures": {"localhost:42455": {"ed25519:1": "x+I+BBVCJz8MCyGi2ZHDNFlC9uOBZZn1ACy95tekaRx+oZuM/hrfN7GA+X3lIs3L+j7qxUQAX8eShB+FtnV1DA"}}, "unsigned": {}}L11a $1:localhost:42455!0:localhost:42455{"outlier": true, "stream_ordering": 3170}{"sender": "@__ANON__-0:localhost:42455", "hashes": {"sha256": "gX8A8HQhS50rYGKrb2oKsc7lP2y3fnxemXYaUphbLdA"}, "origin": "localhost:42455", "state_key": "@__ANON__-0:localhost:42455", "depth": 1, "type": "m.room.member", "room_id": "!0:localhost:42455", "prev_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}]], "origin_server_ts": 1570043341490, "content": {"membership": "join"}, "event_id": "$1:localhost:42455", "auth_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}]], "signatures": {"localhost:42455": {"ed25519:1": "wVqHMzPBWQ7K0u0Ztp9Ujd6PhaCXNO7BsqFLm17SlKTtWvute62AN3aMockiflnFEHl/Q0e9E9uPAYlZkeEDAg"}}, "unsigned": {}} 'q3g ' \  \ k )M)M)M)M[QQ/ $1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules]QQ3 $1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels~QQ']$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800W}QQ' $1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.createc|QQ? $1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility[{QQ/ $1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules]zQQ3 $1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levelsyQQ']$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800WxQQ' $1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.createcwQQ? $1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility[vQQ/ $1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules]uQQ3 $1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levelstQQ']$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800WsQQ' $1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.createcrQQ? $1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility[qQQ/ $1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules]pQQ3 $1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.power_levelsoQQ']$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800WnQQ' $1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.createmmeQ? $o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibilityeleQ/ $SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rulesgkeQ3 $t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels jeQ']$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800aieQ' $FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.createchQQ? $1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility[gQQ/ $1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules]fQQ3 $1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levelseQQ']$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800WdQQ' $1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.createbc1Q'C$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455cbQQ? $1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility[aQQ/ $1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules]`QQ3 $1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levels_QQ']$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800W^QQ' $1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.createo]Q1']$1570043341273LsXNn:localhost:8800!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800;\11/ $2:localhost:42455!0:localhost:42455m.room.join_rulesR[11'C$1:localhost:42455!0:localhost:42455m.room.member@__ANON__-0:localhost:424557Z11' $0:localhost:42455!0:localhost:42455m.room.create g5K7GUF o) o 4 v 9$s8  G bn1 + p uBQ? !ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibility :Q/ !ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rules <Q3 !ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels ^Q']!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800 6Q' !ELBgBaMSIMNkjFSumH:localhost:8800m.room.create BQ? !DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibility :Q/ !DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rules <Q3 !DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels ^Q']!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800 6Q' !DntdfAPfCfgdOoRMdl:localhost:8800m.room.create EQ))!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800<Q3 !DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels^Q']!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800^Q']!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800:Q/ !DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rulesBQ? !DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibility6Q' !DnUHoxreGexNmjSVpq:localhost:8800m.room.create<Q3 !DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.state<Q3 !DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels^Q']!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800 BQ? !DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibility :Q/ !DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules RQ'E!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455 6Q' !DuqHkpTfWCUblSrxQj:localhost:8800m.room.create <Q3 !DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels <Q3 !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels^Q']!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800^Q']!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800:Q/ !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rulesBQ? !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility<Q3 !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_access6Q' !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create<Q3 !EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levelsX^Q']!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800WHQ'1!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800]:Q/ !EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rulesYBQ? !EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility\<Q3 !EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_access[6Q' !EABRjdYuYumMhLSwIa:localhost:8800m.room.createV<Q3 !DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels^Q']!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829^Q']!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800:Q/ !DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rulesBQ? !DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibility6Q' !DqxFmsXPclgGqpSwdy:localhost:8800m.room.create?Q9 !DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_aliasEQ))!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800<Q3 !DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels^Q']!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800:Q/ !DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rulesBQ? !DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibility6Q' !DoiZErAdypBUMZKaeJ:localhost:8800m.room.create?Q9 !DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias .+U V ~ - r <!.mKXe; ^ H I 2 t 2rP]Q@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 P]Q@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 P]Q@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800P]Q@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800P]Q@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800P]Q@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800P]Q@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800@]1@anon-20191002_181700-642:localhost:8800!6:localhost:42455P]Q@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800P]Q@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800P]Q@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800P]Q@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800P]Q@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800P]Q@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800@]1@anon-20191002_181700-632:localhost:8800!5:localhost:42455P]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800P]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800P]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800P]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800P]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:8800P]Q@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800P]Q@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800P]Q@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800P]Q@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800P]Q@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800P]Q@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 (P]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800P]Q@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800$P]Q@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800&P]Q@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800"P]Q@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800 P]Q@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800P]Q@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800P]Q@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800N[Q@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800P]Q@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800P]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800N[Q@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800N[Q@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800N[Q@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800QP]Q@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800P]Q@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800P]Q@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 _ _gRQQaq $1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3179}{"auth_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}], ["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}]], "prev_events": [["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}]], "type": "m.room.join_rules", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043346277FsKPl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043346944, "hashes": {"sha256": "ezwIjHy4OfvyDD21M/8lOm3ct4g73HqUeoYV0yKuzns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "guGPQ5H3u/DS2efRq9fo6cPh1uoXtWL365O9HqNBCWUnGjI0gvJ/BW3mUBD2TuCCnysDOBR/2gOi1S4/LQtRAA"}}, "unsigned": {"age_ts": 1570043346944}}+QQQay $1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3178}{"auth_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}]], "prev_events": [["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}]], "type": "m.room.power_levels", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"users": {"@anon-20191002_181700-619:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043346276qTXUF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043346264, "hashes": {"sha256": "2is3joZh/DGWOlDVDA9aF0i2EelLw2cRNMgeganGiqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oSmlUbIpJVPMs6L3jWavIbBGKOcTndBHpcmtrsTtleXKaWMSEzwxHcotwUZIsAbB0DBt+wW4DvgR9VomaJTyCA"}}, "unsigned": {"age_ts": 1570043346264}}PQQa) $1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3177}{"auth_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}]], "prev_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}]], "type": "m.room.member", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-619", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-619:localhost:8800", "event_id": "$1570043345275UDVPY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043345104, "hashes": {"sha256": "ppQ5fvjkUDtaIKr4f0fpueRF/EvUyO2VaMxSXtJbtus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/HVOXe+u0QHoUHn+v+Wx7O9VN4sj1pPTti1hWP5ubTRaLC08rQa8Fw9O4+LdGycOrvTP2dIjWhp4VuqegYc1BA"}}, "unsigned": {"age_ts": 1570043345104}} 8l D `8D]c!E@anon-20191002_181700-627:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_goXBWVSSSTPW127.0.0.1Perl + Net::Async::HTTP/0.44mɓC]c!E@anon-20191002_181700-626:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAoGMFLXIUBWO127.0.0.1Perl + Net::Async::HTTP/0.44mσB]c!E@anon-20191002_181700-625:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQoLXKNSEODEI127.0.0.1Perl + Net::Async::HTTP/0.44mࠢA]c!E@anon-20191002_181700-624:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywoAATHUMCUIL127.0.0.1Perl + Net::Async::HTTP/0.44mك@]c!E@anon-20191002_181700-623:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6IwoVLGPPLCUUD127.0.0.1Perl + Net::Async::HTTP/0.44mx?]c!E@anon-20191002_181700-622:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygoIAPOATKCLU127.0.0.1Perl + Net::Async::HTTP/0.44mb߃>]c!E@anon-20191002_181700-620:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAoCTOWFYNHGQ127.0.0.1Perl + Net::Async::HTTP/0.44mO=]c!E@anon-20191002_181700-619:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQoAZJJCPXJVV127.0.0.1Perl + Net::Async::HTTP/0.44m5<]c!E@anon-20191002_181700-618:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwoKPRKVKAABY127.0.0.1Perl + Net::Async::HTTP/0.44m4;]c!E@anon-20191002_181700-617:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJiQWdeRX5ENjNkbTZSYVkKMDAyZnNpZ25hdHVyZSA8zIpRzRmJlGIqkTBx6GA19slBMTUSU8V8B5mBBrAhIAoDZQIEDJUET127.0.0.1Perl + Net::Async::HTTP/0.44m*  2VQQa) $1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3183}{"auth_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}]], "prev_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}]], "type": "m.room.member", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-620", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-620:localhost:8800", "event_id": "$1570043351281XHPOP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043351879, "hashes": {"sha256": "ny4eT64CTpRLO+A4eFQ6TE2dgU/Weg+CT1jiY/Wz1PI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1pHAxgfp+Z5a94pnFlGs1xAdm48MTuNnPNzM18zO9stYHZ9uKODeshJd974N0h9TnoaDlKgtTFGOBFoOEte8Aw"}}, "unsigned": {"age_ts": 1570043351879}}UQQaC $1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3182}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-620:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043350280ydSwy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043350917, "hashes": {"sha256": "5PSKoe903aryo+F74W9HY+4I0eshAYw9T32CWzpOKHM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kbYmYauGoV9Kqp5vif0y0lFR5s7I9ZDw6JQh0kwyrIoLi3pToqHCvDw0q7ZtMsDgETg1kdF4DBJEVq+mNfJwAQ"}}, "unsigned": {"age_ts": 1570043350917}}NT1Q3 $3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3181}{"room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-2:localhost:42455", "depth": 6, "origin": "localhost:42455", "hashes": {"sha256": "XFqQYiHSoG+JSe/BY2wPCxJ2ze8SZhifahsUUXJzyo8"}, "sender": "@__ANON__-2:localhost:42455", "auth_events": [["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}], ["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043346277FsKPl:localhost:8800", {"sha256": "REKBqRJ7UtPEABUNRAqeOT/Q5XRlb/9RaowRqF1fxto"}]], "event_id": "$3:localhost:42455", "content": {"membership": "join"}, "origin_server_ts": 1570043348861, "prev_events": [["$1570043347278WlNld:localhost:8800", {"sha256": "KeUy29W/Q49k8xbuj9SRTAWo2tDjX5MjlKgGuyiXi+U"}]], "signatures": {"localhost:42455": {"ed25519:1": "EfE/YEgJPYTtoQdPqmGGR+YYexpCMWSoy8frZFzCMMccU2DE2fSBkBfkrlDA/24bJeip9R7MEpGQQqMTL+ZQBA"}}, "unsigned": {}}xSQQa $1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3180}{"auth_events": [["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}], ["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}]], "prev_events": [["$1570043346277FsKPl:localhost:8800", {"sha256": "REKBqRJ7UtPEABUNRAqeOT/Q5XRlb/9RaowRqF1fxto"}]], "type": "m.room.history_visibility", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043347278WlNld:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043347668, "hashes": {"sha256": "0XmITxHRGHcCsG3zWZcJOv8bVRUz5M3vIYxiWsRdgn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YqSidKLDjHNpziQkRvnC6CxNVxSRnFbL+mdA8iBNhakVR6gu24A2L9bftCdG3Mr7AIgZaSpi0zNncvJjOoMcDw"}}, "unsigned": {"age_ts": 1570043347668}} *#l1s6"  ' lR/ d -Q}=t7X! Q  = N r<Q3 !wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levelsl^Q']!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-432:localhost:8800^Q']!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-431:localhost:8800BQ? !whuymJoLfUdkFdxoyE:localhost:8800m.room.history_visibility:Q/ !whuymJoLfUdkFdxoyE:localhost:8800m.room.join_rules<Q3 !whuymJoLfUdkFdxoyE:localhost:8800m.room.power_levels^Q']!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-430:localhost:88006Q' !whuymJoLfUdkFdxoyE:localhost:8800m.room.create  ^Q']!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800k:Q/ !wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rulesmBQ? !wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibilityn6Q' !wLitJYvgvNJzanSIvO:localhost:8800m.room.createj<Q3 !wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels:^Q']!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800=^Q']!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:88009:Q/ !wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rules;BQ? !wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibility<6Q' !wIhMbfQzYbJobPdwyi:localhost:8800m.room.create8<Q3 !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels ^Q']!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800 :Q/ !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rules BQ? !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibility 6Q' !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.create <Q3 !wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels^Q']!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800:Q/ !wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rulesBQ? !wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility]Q'[!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800:Q/ !wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rulesBQ? !wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibility6Q' !wnriPzXkIMmdTNoJKU:localhost:8800m.room.create?Q9 !wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_aliasEQ))!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800<Q3 !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels^Q']!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800:Q/ !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rulesBQ? !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibility N6Q' !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.create6Q' !wsvXTJXouVkEZcCFsD:localhost:8800m.room.create?Q9 !wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_aliasEQ))!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800<Q3 !wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels b@  n * :Jr4\Q'Q ]$1570043372296yAiBq:localhost:8800m.room.member!FZOLkaLbBpaibrbHZx:localhost:8800m?mॢ@anon-20191002_181700-625:localhost:8800 Q'Q  ]$1570043371295coDXo:localhost:8800m.room.create!FZOLkaLbBpaibrbHZx:localhost:8800m]m@anon-20191002_181700-625:localhost:8800"Q?Q ]$1570043369294rquKy:localhost:8800m.room.history_visibility!QxqzQoEBIZhmzHIGrl:localhost:8800mm@anon-20191002_181700-624:localhost:8800Q/Q ]$1570043369293ssSMv:localhost:8800m.room.join_rules!QxqzQoEBIZhmzHIGrl:localhost:8800mm@anon-20191002_181700-624:localhost:8800Q3Q ]$1570043368292FAoRb:localhost:8800m.room.power_levels!QxqzQoEBIZhmzHIGrl:localhost:8800m?m@anon-20191002_181700-624:localhost:8800~Q'Q ]$1570043367291AEdax:localhost:8800m.room.member!QxqzQoEBIZhmzHIGrl:localhost:8800mm)@anon-20191002_181700-624:localhost:8800} Q'Q  ]$1570043366290YSCqz:localhost:8800m.room.create!QxqzQoEBIZhmzHIGrl:localhost:8800m5m@anon-20191002_181700-624:localhost:8800"|Q?Q ]$1570043364289XIEhE:localhost:8800m.room.history_visibility!fDISaqNBhlOwherxSt:localhost:8800mmc@anon-20191002_181700-623:localhost:8800{Q/Q ]$1570043364288SCpzq:localhost:8800m.room.join_rules!fDISaqNBhlOwherxSt:localhost:8800mm4@anon-20191002_181700-623:localhost:8800zQ3Q ]$1570043363287eSyun:localhost:8800m.room.power_levels!fDISaqNBhlOwherxSt:localhost:8800mmq@anon-20191002_181700-623:localhost:8800yQ'Q ]$1570043362286KwXMK:localhost:8800m.room.member!fDISaqNBhlOwherxSt:localhost:8800m|m}9@anon-20191002_181700-623:localhost:8800x Q'Q  ]$1570043361285xsPbY:localhost:8800m.room.create!fDISaqNBhlOwherxSt:localhost:8800mxmx@anon-20191002_181700-623:localhost:8800,we?Q ]$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQm.room.history_visibility!yAfsSyqpJWFnkXQFJL:localhost:8800mp mr@anon-20191002_181700-622:localhost:8800$ve/Q ]$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bcm.room.join_rules!yAfsSyqpJWFnkXQFJL:localhost:8800mlmm@anon-20191002_181700-622:localhost:8800&ue3Q ]$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fom.room.power_levels!yAfsSyqpJWFnkXQFJL:localhost:8800mi%mj@anon-20191002_181700-622:localhost:8800 te'Q ]$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUm.room.member!yAfsSyqpJWFnkXQFJL:localhost:8800mfmg>@anon-20191002_181700-622:localhost:8800s e'Q  ]$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmom.room.create!yAfsSyqpJWFnkXQFJL:localhost:8800mc>mc@anon-20191002_181700-622:localhost:8800"rQ?Q ]$1570043354284IVfTL:localhost:8800m.room.history_visibility!AYFqrmxwClFQlcTTYq:localhost:8800m[m]@anon-20191002_181700-620:localhost:8800qQ/Q ]$1570043353283ubEdk:localhost:8800m.room.join_rules!AYFqrmxwClFQlcTTYq:localhost:8800mYBmY@anon-20191002_181700-620:localhost:8800pQ3Q ]$1570043352282iTcSU:localhost:8800m.room.power_levels!AYFqrmxwClFQlcTTYq:localhost:8800mVmW2@anon-20191002_181700-620:localhost:8800oQ'Q ]$1570043351281XHPOP:localhost:8800m.room.member!AYFqrmxwClFQlcTTYq:localhost:8800mSGmS@anon-20191002_181700-620:localhost:8800n Q'Q  ]$1570043350280ydSwy:localhost:8800m.room.create!AYFqrmxwClFQlcTTYq:localhost:8800mOmO@anon-20191002_181700-620:localhost:8800ym1'Q C$3:localhost:42455m.room.member!pHoEnhQYhwlbJXqKQE:localhost:8800mG}mG@__ANON__-2:localhost:42455"lQ?Q ]$1570043347278WlNld:localhost:8800m.room.history_visibility!pHoEnhQYhwlbJXqKQE:localhost:8800mBmDc@anon-20191002_181700-619:localhost:8800kQ/Q ]$1570043346277FsKPl:localhost:8800m.room.join_rules!pHoEnhQYhwlbJXqKQE:localhost:8800m@m@w@anon-20191002_181700-619:localhost:8800 #&l 5 [  : 8642Dj#IojXQQQ$1570043368292FAoRb:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jWQQQ$1570043368292FAoRb:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jVQQQ$1570043367291AEdax:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jUQQQ$1570043364289XIEhE:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jTQQQ$1570043364289XIEhE:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jSQQQ$1570043364289XIEhE:localhost:8800$1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jRQQQ$1570043364288SCpzq:localhost:8800$1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jQQQQ$1570043364288SCpzq:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jPQQQ$1570043364288SCpzq:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jOQQQ$1570043363287eSyun:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jNQQQ$1570043363287eSyun:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jMQQQ$1570043362286KwXMK:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800~LeeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800~KeeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800~JeeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800~IeeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800~HeeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800~GeeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800~FeeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800~EeeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800~DeeQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800jCQQQ$1570043354284IVfTL:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800jBQQQ$1570043354284IVfTL:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800jAQQQ$1570043354284IVfTL:localhost:8800$1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j@QQQ$1570043353283ubEdk:localhost:8800$1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j?QQQ$1570043353283ubEdk:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j>QQQ$1570043353283ubEdk:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j=QQQ$1570043352282iTcSU:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j<QQQ$1570043352282iTcSU:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j;QQQ$1570043351281XHPOP:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800Z:1QQ$3:localhost:42455$1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800Z91QQ$3:localhost:42455$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800Z81QQ$3:localhost:42455$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j7QQQ$1570043347278WlNld:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j6QQQ$1570043347278WlNld:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800 -_  c ]f ^V X| Z  Y  )~(i +}(  \ \ TeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800TeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800 TeQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800TeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800SeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800TTeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800TeQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800TeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800TeQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800TeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800TeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800zSeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800[TeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800tBAQ$lolredact:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800BSeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800SeQ$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw!loalEsWaTYwrVUNJLr:localhost:8800SeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:88003TeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800TeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800 SeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI!jfshVGNDxkvqPxFxWB:localhost:8800SeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:88005SeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800SSeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800aSeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800`TeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800 SeQ$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY!odAvowLhHJcmkKlxFk:localhost:8800TeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800TeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800TeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800TeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800TeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800SeQ$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY!scyFsXcUIJiLIMwWMY:localhost:8800TeQ$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk!csWEXfVEVxdviNvgAd:localhost:8800nTeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800TeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ!atnRTMliktaVUhMVID:localhost:8800TeQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8!IlGJpjzrvvAFuwTAgo:localhost:8800TeQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800TeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800TeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800*TeQ$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg!wAyboOFgsOPwkmgMAI:localhost:8800SeQ$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY!xwoIOPTGmJIlTXakxC:localhost:8800 TeQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800TeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800TeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800 TeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800 ZW/b:sK$\4 Ezb;sL$ ^ 7 * p H ! ZR 3  n F  m  W / Bj'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800O&Q!fcdNYFWFyxmdpKAknc:localhost:8800r'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800V&Q!ifQxHmNAcSSGHVMjfi:localhost:8800|'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800T'Q!iKezIvJyjkNqKayFju:localhost:8800*'Q!hrhDJbmXvXBizKoiiK:localhost:8800U'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800h'Q!hegUPDZCEEmBhsNJJR:localhost:8800J'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800n'Q!hGsPmWXboxZZtOlsxY:localhost:8800S'Q!hFwigdYZkwYNSwelRH:localhost:8800E'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800K'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!qzrZzAieCgGSbpKOQR:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800z'Q!qInWQPtNQfBFoVzUtP:localhost:8800m&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800d'Q!qSUSLLWjDxcGibUZdT:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800H'Q!pduebXnTyxQWVxEICp:localhost:8800@'Q!paDmNxsOZIKyApbxXs:localhost:8800D'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800''Q!pHoEnhQYhwlbJXqKQE:localhost:8800g&Q!oznZaCpONuNDaLarkI:localhost:8800f'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:88002'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nfxDdcgDfooxyiAzaB:localhost:8800\'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:88000&Q!mfzIRinBAGGrZvQAuI:localhost:8800m'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800.&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800c'Q!kOmCTyiizHqfCJdhlR:localhost:8800('Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U O  | J  P  K V2 %   ] +vdQ W%]p+%d2j8>Dj 8pWjj_gnu1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980u1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNoko1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo d1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkQ1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM?1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI81e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc71e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo21e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s 1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogd1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU 1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0t0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo`1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA 1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM (1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is ]1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 <1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U3$49:localhost:42455 83$46:localhost:42455 73$45:localhost:42455 63$48:localhost:42455 53$44:localhost:42455 43$43:localhost:42455 33$40:localhost:42455 ,1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Av1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY 1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0V1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUW1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FML1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o+1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcB1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwt1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM[1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEx1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgV1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso 1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk3$52:localhost:42455 @3$51:localhost:42455 ?3$50:localhost:42455 >1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760a1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsZ1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY UH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8ph@xP(@('Q$1570043479329kvsXb:localhost:8800'Q$1570043478328DMkRS:localhost:8800'Q$1570043478328DMkRS:localhost:8800'Q$1570043478328DMkRS:localhost:8800'Q$1570043477327AgpMM:localhost:8800'Q$1570043477327AgpMM:localhost:8800'Q$1570043477326hyTqo:localhost:8800'Q$1570043468324DLhaB:localhost:8800'Q$1570043468324DLhaB:localhost:8800'Q$1570043429322ZfcNc:localhost:8800C'Q$1570043429322ZfcNc:localhost:8800B'Q$1570043558384QrKsp:localhost:8800'Q$1570043557383IxQaJ:localhost:8800'Q$1570043550380LNzMz:localhost:8800'Q$1570043550380LNzMz:localhost:8800'Q$1570043550380LNzMz:localhost:8800'Q$1570043549379wtMED:localhost:8800'Q$1570043549379wtMED:localhost:8800'Q$1570043549379wtMED:localhost:8800'Q$1570043548378IxCfM:localhost:8800'Q$1570043548378IxCfM:localhost:8800'Q$1570043548378IxCfM:localhost:8800'Q$1570043547377kWWAW:localhost:8800'Q$1570043547377kWWAW:localhost:8800'Q$1570043546376YfkfL:localhost:8800'Q$1570043542373yGTqH:localhost:8800'Q$1570043542373yGTqH:localhost:8800'Q$1570043542373yGTqH:localhost:8800'Q$1570043541372ZeTYJ:localhost:8800'Q$1570043541372ZeTYJ:localhost:8800'Q$1570043541372ZeTYJ:localhost:8800'Q$1570043540371avDlf:localhost:8800'Q$1570043540371avDlf:localhost:8800'Q$1570043539370xCBJr:localhost:8800'Q$1570043536368agmuM:localhost:8800'Q$1570043536368agmuM:localhost:8800'Q$1570043536368agmuM:localhost:8800'Q$1570043536367lvGLr:localhost:8800'Q$1570043536367lvGLr:localhost:8800'Q$1570043536367lvGLr:localhost:8800'Q$1570043535366hhblx:localhost:8800'Q$1570043535366hhblx:localhost:8800'Q$1570043534365WVAkx:localhost:8800'Q$1570043530362jRUtV:localhost:8800'Q$1570043530362jRUtV:localhost:8800'Q$1570043530362jRUtV:localhost:8800'Q$1570043529361Oytod:localhost:8800'Q$1570043529361Oytod:localhost:8800'Q$1570043529361Oytod:localhost:8800'Q$1570043528360cetnZ:localhost:8800'Q$1570043528360cetnZ:localhost:8800'Q$1570043527359ScxWW:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043524356NlySy:localhost:8800'Q$1570043524356NlySy:localhost:8800'Q$1570043524356NlySy:localhost:8800'Q$1570043523355SbJjm:localhost:8800'Q$1570043523355SbJjm:localhost:8800'Q$1570043522354IAAap:localhost:8800'Q$1570043518351Popej:localhost:8800'Q$1570043518351Popej:localhost:8800'Q$1570043518351Popej:localhost:8800'Q$1570043517350ncbDd:localhost:8800'Q$1570043517350ncbDd:localhost:8800'Q$1570043517350ncbDd:localhost:8800'Q$1570043517349uVTMj:localhost:8800'Q$1570043517349uVTMj:localhost:8800'Q$1570043516348vThZG:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043504345DCjlJ:localhost:8800'Q$1570043504345DCjlJ:localhost:8800'Q$1570043504345DCjlJ:localhost:8800'Q$1570043503344dJwGF:localhost:8800'Q$1570043503344dJwGF:localhost:8800'Q$1570043503344dJwGF:localhost:8800'Q$1570043503343snlnn:localhost:8800'Q$1570043503343snlnn:localhost:8800'Q$1570043502342mVJmO:localhost:8800'Q$1570043479329kvsXb:localhost:8800'Q$1570043479329kvsXb:localhost:8800 ^$< Z x$ | ) { \z 'wt5d%uu ^ ^nO]@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800 anon-20191002_181700-605nc]@anon-20191002_181700-633:localhost:8800@anon-20191002_181700-633:localhost:8800 anon-20191002_181700-633nb]@anon-20191002_181700-632:localhost:8800@anon-20191002_181700-632:localhost:8800 anon-20191002_181700-632r@pM j vxG  x | r \ ? " Y  J 8 & ' D P !_-f 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA `1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw `1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA _1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM V1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Ms1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz41e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAa1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w 01e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU]1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQO1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEH1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMA1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQY1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU}1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0 d1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc3$94:localhost:42455 3$90:localhost:42455 d1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 *;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA n9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 9$95_m1:localhost:42455 1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUr1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYB1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IB1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx451e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YH1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 41e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg Y1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMc1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM811e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8l1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kN1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 41e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QW1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc 5  fxYQQa $1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3186}{"auth_events": [["$1570043352282iTcSU:localhost:8800", {"sha256": "K61uD2xfbP4+J90OZgaWtzxJX7y6ksAFG9+xKs0MFOk"}], ["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}], ["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}]], "prev_events": [["$1570043353283ubEdk:localhost:8800", {"sha256": "6ht0Pp0n54hTHmCapSAOlyOLDdGI16zsL3FaxXIFvHE"}]], "type": "m.room.history_visibility", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043354284IVfTL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043354035, "hashes": {"sha256": "V8S3J+NbliZp6aPpUc7UWI23nyPA+G6gjHo4k1aeds8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i9R3CxcWIbpWX4uNaZbPrspJg9TcX1dp5brBlEmZPdQz/6y48N+2KSI/JuwdRWOp9eDZZXC79t/1eH348oeNAg"}}, "unsigned": {"age_ts": 1570043354035}}gXQQaq $1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3185}{"auth_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}], ["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}], ["$1570043352282iTcSU:localhost:8800", {"sha256": "K61uD2xfbP4+J90OZgaWtzxJX7y6ksAFG9+xKs0MFOk"}]], "prev_events": [["$1570043352282iTcSU:localhost:8800", {"sha256": "K61uD2xfbP4+J90OZgaWtzxJX7y6ksAFG9+xKs0MFOk"}]], "type": "m.room.join_rules", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043353283ubEdk:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043353410, "hashes": {"sha256": "vLnaFNvfxi4DhP+vEaHl/NvPZ2hchQwqGSge7ZglVdY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fQd4DFBuTk6IHNETD9haYZEngcxtKBWoPPstLqp55+ZPSHW87NUFt69qrDpEbJsHnHEL2etkeWnDObgJHwPuCg"}}, "unsigned": {"age_ts": 1570043353410}}+WQQay $1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3184}{"auth_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}], ["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}]], "prev_events": [["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}]], "type": "m.room.power_levels", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"users": {"@anon-20191002_181700-620:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043352282iTcSU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043352770, "hashes": {"sha256": "7kRFyzwcRHXwYKz2T87EamEMMY1efblBVyy+jM4clY0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V55vCaqrbKkw48b8rOH4hU4S1q95N6i1cLF0QtwRj7fZ396NmbDTglJ5gI0FjnaIxQQWT1AXF5f+KGJ6LM+NBg"}}, "unsigned": {"age_ts": 1570043352770}} Mj8p> v D  | J  P  W % ] +qU#i7o= uC{IOV$\*1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz41e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Ms1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUr1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYB1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw `1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAa1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w 01e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IB1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kN1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 41e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QW1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 3$94:localhost:42455 ;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA ^1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx451e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA n1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YH1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 *0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU]1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc 51e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 41e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM]1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8l1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQO1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEH1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8+1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMA1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg Y1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQY1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU}1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM V1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA _1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0  pI>  vX E  } K   R ^ X & _ -f4l:rj@xF~L&R ,1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego 1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE c1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 T1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 31e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY #1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c|1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEc1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48K1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4m1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0_1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E~1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo ?1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw/1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw *1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4?1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr81e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0A1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0W1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wL1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjod1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk00e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_PcV1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 -1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7If1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U+1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A)1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU`1e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEH1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U 81e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo`1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2QI1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgs1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs@1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs .1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ G8i(<G u  $ f  a\G#B 1}QQ']$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800joinW|QQ' $1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.create]eQQ3 $1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levelsdQQ']$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800joinWcQQ' $1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.createfb1Q'C$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455joincaQQ? $1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility[`QQ/ $1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules]_QQ3 $1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levelsc{QQ? $1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility[zQQ/ $1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules]yQQ3 $1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levelsxQQ']$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800joinWwQQ' $1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.createcvQQ? $1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility[uQQ/ $1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules]tQQ3 $1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levelssQQ']$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800joinWrQQ' $1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.createcqQQ? $1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility[pQQ/ $1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules]oQQ3 $1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.power_levelsnQQ']$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800joinWmQQ' $1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.createmleQ? $o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibilityekeQ/ $SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rulesgjeQ3 $t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels ieQ']$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800joinaheQ' $FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.createcgQQ? $1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility[fQQ/ $1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules ZT="|= D' D- ` -  y F )  Q 4  m V  f 3 _,kH%ZQ:}fKN7 u/  m.room.join_rules '  m.room.create "?  km.room.history_visibility /  jm.room.join_rules 3  im.room.power_levels >'] hm.room.member@anon-20191002_181700-635:localhost:8800 '  gm.room.create 3  fm.room.power_levels >'] fm.room.member@anon-20191002_181700-634:localhost:8800 2'E fm.room.member@__ANON__-12:localhost:42455 /  fm.room.join_rules '  fm.room.create 2'E em.room.member@__ANON__-12:localhost:42455 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create /  m.room.join_rules 2'E m.room.member@__ANON__-20:localhost:42455 '  m.room.create >'] m.room.member@anon-20191002_181700-642:localhost:8800 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-19:localhost:42455 2'E m.room.member@__ANON__-19:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-641:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-18:localhost:42455 2'E m.room.member@__ANON__-18:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-640:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-17:localhost:42455 2'E m.room.member@__ANON__-17:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-639:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-16:localhost:42455 2'E m.room.member@__ANON__-16:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-638:localhost:8800 '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-15:localhost:42455 /  m.room.join_rules '  m.room.create 3  ~m.room.power_levels 2'E ~m.room.member@__ANON__-15:localhost:42455 /  ~m.room.join_rules '  ~m.room.create 3  }m.room.power_levels 2'E }m.room.member@__ANON__-15:localhost:42455 /  }m.room.join_rules '  }m.room.create 2'E |m.room.member@__ANON__-15:localhost:42455 2'E {m.room.member@__ANON__-15:localhost:42455 "?  zm.room.history_visibility /  ym.room.join_rules 3  xm.room.power_levels >'] wm.room.member@anon-20191002_181700-637:localhost:8800 '  vm.room.create >'] um.room.member@anon-20191002_181700-636:localhost:8800 2'E tm.room.member@__ANON__-14:localhost:42455 2'E sm.room.member@__ANON__-14:localhost:42455 "?  rm.room.history_visibility /  qm.room.join_rules 3  pm.room.power_levels >'] om.room.member@anon-20191002_181700-636:localhost:8800 '  nm.room.create 2'E mm.room.member@__ANON__-13:localhost:42455 2'E lm.room.member@__ANON__-13:localhost:42455   *t]eQau$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3190}{"auth_events": ["$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo", "$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo", "$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "prev_events": ["$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo"], "type": "m.room.join_rules", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043358394, "hashes": {"sha256": "uJyReUvXyMh5RUBbTqGtUJ80uPAuyyHi9HJC3iojO4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "li/GYvHHiqwUsRADnIy1LORP1Dp4xNKeG2nRW/7nSZWc383J2zlaMykSohi4NPiqx/yOzpMVx5ziyvWuY66TCg"}}, "unsigned": {"age_ts": 1570043358394}}k\eQac$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3189}{"auth_events": ["$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo", "$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "prev_events": ["$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "type": "m.room.power_levels", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"users": {"@anon-20191002_181700-622:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043357477, "hashes": {"sha256": "YUfJ+xFRD0AF8FlZugKI7bnm0h4TCrZRubjCdXjnTFc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LpGJ68nz0j9S2hLT+BGrGnSCgy+SSoHfdqcH7yI+kNsw04HdsKwS+asTORKs6LU9yrkgk2CJGoE6mAfoXsebCw"}}, "unsigned": {"age_ts": 1570043357477}}v[eQay$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3188}{"auth_events": ["$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo"], "prev_events": ["$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo"], "type": "m.room.member", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-622", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-622:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043356879, "hashes": {"sha256": "u8y4LYWYjcNT1ejY11uohqKl7zbh6yc05IRyiTM6aPw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qJflKUdvD9nsSQuuHpbHwJdwxLpaAonBlY588au6mQfIG8jkkiguvO6tLs4UC+x+e4DPNZpkQXu2vhe7sJUJCQ"}}, "unsigned": {"age_ts": 1570043356879}}iZeQa_$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3187}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-622:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043355966, "hashes": {"sha256": "fFrbxHzZbKiepWqk4oVPBRJWvcsNzG5HNz6wQk5WHgA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lTgb1hM4WZdJ7eMWLY4+4YQYCKD3QkWoq8rxaMm1MJ1p6sJE0I2kqnvXtg5ctyDKpfWUkKC8S3FEiPwhpI26Bw"}}, "unsigned": {"age_ts": 1570043355966}} 1Ra z - F _  x + D]v)Bb ]XSNTeQe e!DuqHkpTfWCUblSrxQj:localhost:8800$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0TdQe d!DuqHkpTfWCUblSrxQj:localhost:8800$dn1y4CrHc3KnuswK2MfWm-y1ZzhEbYUpEHOg1xa1TfcTcQe c!DuqHkpTfWCUblSrxQj:localhost:8800$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwTbQe b!DuqHkpTfWCUblSrxQj:localhost:8800$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMTaQe a!DuqHkpTfWCUblSrxQj:localhost:8800$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgT`Qe `!DuqHkpTfWCUblSrxQj:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgT_Qe _!DuqHkpTfWCUblSrxQj:localhost:8800$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIT^Qe ^!NanhNmCnVVpmZRJrTF:localhost:8800$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgT]Qe ]!NanhNmCnVVpmZRJrTF:localhost:8800$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-ET\Qe \!NanhNmCnVVpmZRJrTF:localhost:8800$f-vRiHWufvykmGcu-CUS7JZLbFsdc15lpUVUlSVWlm4T[Qe [!NanhNmCnVVpmZRJrTF:localhost:8800$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6QTZQe Z!NanhNmCnVVpmZRJrTF:localhost:8800$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQTYQe Y!NanhNmCnVVpmZRJrTF:localhost:8800$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuATXQe X!NanhNmCnVVpmZRJrTF:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3GtkTWQe W!NanhNmCnVVpmZRJrTF:localhost:8800$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo:V1Q V!5:localhost:42455$1570043391316OJaBO:localhost:8800IUQO U!sqkBzbHHJOTNWwynqV:localhost:8800$157004338812XhwjX:localhost:8829JTQQ T!sqkBzbHHJOTNWwynqV:localhost:8800$1570043388313VFpux:localhost:8800JSQQ S!sqkBzbHHJOTNWwynqV:localhost:8800$1570043388312YDkJu:localhost:8800JRQQ R!sqkBzbHHJOTNWwynqV:localhost:8800$1570043387311DGzYi:localhost:8800JQQQ Q!sqkBzbHHJOTNWwynqV:localhost:8800$1570043386310bGMNl:localhost:8800JPQQ P!sqkBzbHHJOTNWwynqV:localhost:8800$1570043385309imdbl:localhost:8800JOQQ O!sqkBzbHHJOTNWwynqV:localhost:8800$1570043384308gPogh:localhost:8800JNQQ N!sqkBzbHHJOTNWwynqV:localhost:8800$1570043383307bhuDV:localhost:8800JMQQ M!sqkBzbHHJOTNWwynqV:localhost:8800$1570043382306WhWIU:localhost:8800JLQQ L!qInWQPtNQfBFoVzUtP:localhost:8800$1570043381305ccgXv:localhost:8800JKQQ K!qInWQPtNQfBFoVzUtP:localhost:8800$1570043380304caenp:localhost:8800JJQQ J!qInWQPtNQfBFoVzUtP:localhost:8800$1570043379303bCgUn:localhost:8800JIQQ I!qInWQPtNQfBFoVzUtP:localhost:8800$1570043378302mKBGD:localhost:8800JHQQ H!qInWQPtNQfBFoVzUtP:localhost:8800$1570043377301OraEa:localhost:8800JGQQ G!qInWQPtNQfBFoVzUtP:localhost:8800$1570043377300CLPUi:localhost:8800JFQQ F!FZOLkaLbBpaibrbHZx:localhost:8800$1570043375299fbyXJ:localhost:8800JEQQ E!FZOLkaLbBpaibrbHZx:localhost:8800$1570043374298UIMFg:localhost:8800JDQQ D!FZOLkaLbBpaibrbHZx:localhost:8800$1570043373297SOjrf:localhost:8800JCQQ C!FZOLkaLbBpaibrbHZx:localhost:8800$1570043372296yAiBq:localhost:8800JBQQ B!FZOLkaLbBpaibrbHZx:localhost:8800$1570043371295coDXo:localhost:8800JAQQ A!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369294rquKy:localhost:8800J@QQ @!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369293ssSMv:localhost:8800J?QQ ?!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043368292FAoRb:localhost:8800J>QQ >!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043367291AEdax:localhost:8800J=QQ =!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043366290YSCqz:localhost:8800J<QQ O`<2J:~~VeL$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtksha256En+'?S⥜Kg?wwVeL$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHosha256_$F%%9zө䧒zLQL$1570043392317hujur:localhost:8800sha256-l0bo (+_-L~QL$1570043391316OJaBO:localhost:8800sha256s{u$;LzroMo%5/8N=}3L$12:localhost:42455sha2569Ĉ;ol`*RL(xt=|3L$11:localhost:42455sha256KyE=wچ't<9!Qƾ={3L$10:localhost:42455sha256gS(׽\kӶH4 [=9KzOL$157004338812XhwjX:localhost:8829sha256tAqf8'/.)MbZ[LyQL$1570043388312YDkJu:localhost:8800sha256ѭս7ņ|V8:©=РU> LxQL$1570043387311DGzYi:localhost:8800sha256ot" ͮ ɩ!ŌE%[LwQL$1570043386310bGMNl:localhost:8800sha256=}rj!nCp%IC4qLvQL$1570043385309imdbl:localhost:8800sha256תKM} ( ShE(Pn{o!LuQL$1570043384308gPogh:localhost:8800sha2563>uO*o`Q`%;LtQL$1570043383307bhuDV:localhost:8800sha256U:b/}w?ǬY  bLsQL$1570043382306WhWIU:localhost:8800sha256)EԦk\TLk.82Rt.eLrQL$1570043380304caenp:localhost:8800sha256:piYfm4H8VLqQL$1570043379303bCgUn:localhost:8800sha256&]Qϝ|}],N`)gF dLpQL$1570043378302mKBGD:localhost:8800sha2562hucIe)y[~g#%WǩLoQL$1570043377301OraEa:localhost:8800sha256m͐~|+ f~ÃwIxb'_LnQL$1570043377300CLPUi:localhost:8800sha256.ȢU!_CcJG;LjQL$1570043372296yAiBq:localhost:8800sha256H L7{ѷA IIT:-2͉LiQL$1570043371295coDXo:localhost:8800sha256 Nɤ\Dw4o7';RL?W&LhQL$1570043369294rquKy:localhost:8800sha256mȺ:eO=uH\DH.wLgQL$1570043369293ssSMv:localhost:8800sha256 3-%wCEeK/ryWӒLfQL$1570043368292FAoRb:localhost:8800sha256rJֱ1nm#Qٳ2LeQL$1570043367291AEdax:localhost:8800sha256\ԟqsi@(pXQWLz8eLdQL$1570043366290YSCqz:localhost:8800sha256حx&حXۤYb>rKͭLcQL$1570043364289XIEhE:localhost:8800sha256'wÙޟfJTm뱖xѫPax'LbQL$1570043364288SCpzq:localhost:8800sha256q2GpOh9t1ZJ87&!WUQBLaQL$1570043363287eSyun:localhost:8800sha2569y:B;QRRw-dM7⍶L`QL$1570043362286KwXMK:localhost:8800sha256{( o*N):HٞL_QL$1570043361285xsPbY:localhost:8800sha256i3~!ďm"e hL85V^eL$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQsha256C;%g-,v Ԡ;8V]eL$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bcsha256HLm\<mm:5R˲ > W p>   Qv D  E |J\P$ * i  j 8Vcp ? 1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0o1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzoG1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8A1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A 1e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk-1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4_1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQI1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw411e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU 41e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns -1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 21e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg - ^1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzks1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTET1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8# K21e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ v1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ(1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY wd1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw P1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA N1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo I21e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 E1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 91e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q{1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY821e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw] - w c\-+aQQay $1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3194}{"auth_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}], ["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}]], "prev_events": [["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}]], "type": "m.room.power_levels", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"users": {"@anon-20191002_181700-623:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043363287eSyun:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043363336, "hashes": {"sha256": "MlE+cVZ4guxpWt8fyll7zfi6aepvENIyUkAPtXTp4zE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AMIJ3uXQ7I6Ufv2LeoSnFO3fGUWP6dP9Lj8SD0yhx68KH13cIFdQgKGDAfIFFBfYYUG2QMwbERDytepkPDWmBw"}}, "unsigned": {"age_ts": 1570043363336}}`QQa) $1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3193}{"auth_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}]], "prev_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}]], "type": "m.room.member", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-623", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-623:localhost:8800", "event_id": "$1570043362286KwXMK:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043362505, "hashes": {"sha256": "TiU67uxbWQ1GMLguXRU8tL7kxGJJv1MpRgGLW9nrifE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dszFR4CfFjCwDJPZHxEMuxhPPnA761/bQRWuEqYEraDkqEEt8Qwl9d4tW1iInyGgygJp/EURaVRXOqisuR8GBg"}}, "unsigned": {"age_ts": 1570043362505}}_QQaC $1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3192}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-623:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043361285xsPbY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043361409, "hashes": {"sha256": "Xh6oG5ZCTDcoKorns5MPHpxhAml1JJX662WXwfzv3z0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ucXm+DL83S3KQxzjIqJQL7okPHEF/Wzff1TZUanSW5H2MMjyayLhoZe6SHoRTx2C4duKb7wtCfcrTbKa0vi9Ag"}}, "unsigned": {"age_ts": 1570043361409}}^eQa$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3191}{"auth_events": ["$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo", "$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo", "$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "prev_events": ["$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc"], "type": "m.room.history_visibility", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043359245, "hashes": {"sha256": "QscwV4S4SvDob0DEfAUhj24XoX/7H4M+0m3PzxVTkSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "huKdFmnpiy9/cB4YhI/WnppMHegJY2eR1gYH6bYk5yhv4nXhaDjXy8ekTK4YvmzTBzCKfaD7OfBSShNywuvnBA"}}, "unsigned": {"age_ts": 1570043359245}} (<n< tBj8T"p> v D  | J  P  V $  \N *Z(T"Z(1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNky1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkz1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc0041e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A"1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk41e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk31e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk261e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gN1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gM1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gL1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl01e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI `1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMM1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdML1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMK1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkx1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ|1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw@1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw?1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw>1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw=1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI71e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI61e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI51e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0 1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ k1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ j1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ i  l & d ] Ut ME=5.eeQ$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800EeeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800 xeeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800 eeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800_eeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!BkzROHxDAfKIzYpmPV:localhost:8800)eeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800oeeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800؁eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800.eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800eeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:88009eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800eeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800;eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800ieeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800eeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800 eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800   4 h m9d]c@anon-20191002_181700-655:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAo127.0.0.1_d]c@anon-20191002_181700-653:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgo127.0.0.1]d]c@anon-20191002_181700-651:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85Qo127.0.0.1[d]c@anon-20191002_181700-652:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4Ao127.0.0.1\d]c@anon-20191002_181700-654:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgo127.0.0.1^d]c@anon-20191002_181700-650:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawo127.0.0.1Za[a@anon-20191002_181700-64:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCg127.0.0.18d]c@anon-20191002_181700-649:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgo127.0.0.1Yd]c@anon-20191002_181700-648:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQo127.0.0.1Xd]c@anon-20191002_181700-647:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwo127.0.0.1Wd]c@anon-20191002_181700-646:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3go127.0.0.1V 1f2 K d  } 0 I b {.hc ^YTOJTUQe !QkkdnzvdrjHaFGkzMt:localhost:8800$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0TTQe !QkkdnzvdrjHaFGkzMt:localhost:8800$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMTSQe !QkkdnzvdrjHaFGkzMt:localhost:8800$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctATRQe !QkkdnzvdrjHaFGkzMt:localhost:8800$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7ATQQe !QkkdnzvdrjHaFGkzMt:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8TPQe !QkkdnzvdrjHaFGkzMt:localhost:8800$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsTOQe !DuqHkpTfWCUblSrxQj:localhost:8800$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iUTNQe !DuqHkpTfWCUblSrxQj:localhost:8800$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0TMQe !DuqHkpTfWCUblSrxQj:localhost:8800$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwTLQe !DuqHkpTfWCUblSrxQj:localhost:8800$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMTKQe !DuqHkpTfWCUblSrxQj:localhost:8800$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgTJQe !DuqHkpTfWCUblSrxQj:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgTIQe !DuqHkpTfWCUblSrxQj:localhost:8800$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVITHQe !NanhNmCnVVpmZRJrTF:localhost:8800$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgTGQe !NanhNmCnVVpmZRJrTF:localhost:8800$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-ETFQe !NanhNmCnVVpmZRJrTF:localhost:8800$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6QTEQe !NanhNmCnVVpmZRJrTF:localhost:8800$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQTDQe !NanhNmCnVVpmZRJrTF:localhost:8800$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuATCQe !NanhNmCnVVpmZRJrTF:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3GtkTBQe !NanhNmCnVVpmZRJrTF:localhost:8800$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo:A1Q !5:localhost:42455$1570043392317hujur:localhost:8800:@1Q !5:localhost:42455$1570043391316OJaBO:localhost:8800I?QO !sqkBzbHHJOTNWwynqV:localhost:8800$157004338812XhwjX:localhost:8829J>QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043388312YDkJu:localhost:8800J=QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043387311DGzYi:localhost:8800J<QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043386310bGMNl:localhost:8800J;QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043385309imdbl:localhost:8800J:QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043384308gPogh:localhost:8800J9QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043383307bhuDV:localhost:8800J8QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043382306WhWIU:localhost:8800J7QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043380304caenp:localhost:8800J6QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043379303bCgUn:localhost:8800J5QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043378302mKBGD:localhost:8800J4QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043377301OraEa:localhost:8800J3QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043377300CLPUi:localhost:8800J2QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043375299fbyXJ:localhost:8800J1QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043374298UIMFg:localhost:8800J0QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043373297SOjrf:localhost:8800J/QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043372296yAiBq:localhost:8800J.QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043371295coDXo:localhost:8800J-QQ !QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369294rquKy:localhost:8800J,QQ !QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369293ssSMv:localhost:8800J+QQ !QxqzQoEBIZhmzHIGrl:localhost:8800$1570043368292FAoRb:localhost:8800J*QQ ~!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043367291AEdax:localhost:8800J)QQ }!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043366290YSCqz:localhost:8800J(QQ |!fDISaqNBhlOwherxSt:localhost:8800$1570043364289XIEhE:localhost:8800J'QQ {!fDISaqNBhlOwherxSt:localhost:8800$1570043364288SCpzq:localhost:8800J&QQ z!fDISaqNBhlOwherxSt:localhost:8800$1570043363287eSyun:localhost:8800J%QQ y!fDISaqNBhlOwherxSt:localhost:8800$1570043362286KwXMK:localhost:8800  dQQaC $1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3197}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-624:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043366290YSCqz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043366709, "hashes": {"sha256": "/5P18qKwYzhNUV1Uu5ehOYZQYlu1tqH5gsb8NFKjzvU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fkIag1USN++XdJNYxcfsySTLguShv0U5+ZQdl/mOEdmzi578HBLi6yWf+pumWUK+TTY0hlYUHO6UwfsE4+t7DQ"}}, "unsigned": {"age_ts": 1570043366709}}xcQQa $1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3196}{"auth_events": [["$1570043363287eSyun:localhost:8800", {"sha256": "Oct5OoGCBEI7EFEBUt0HUnesxS29ZJu0TRaZ9DfijbY"}], ["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}], ["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}]], "prev_events": [["$1570043364288SCpzq:localhost:8800", {"sha256": "cTJHEnBP7BBoBznbdMMxWko4BTcm3AIaiCHfV1VRQu0"}]], "type": "m.room.history_visibility", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043364289XIEhE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043364889, "hashes": {"sha256": "5YolcDIqslWSrTEkfeFjMkO2sdIw17r24e/L3nhnwx0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4ebpWKeSlLh8ijK0lK0uCvOH3nY+mVPEVbSuewTSkIItLye9nETC31YzvF59DP8XJDNfDt7nxMegvKmlqZgAA"}}, "unsigned": {"age_ts": 1570043364889}}gbQQaq $1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3195}{"auth_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}], ["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}], ["$1570043363287eSyun:localhost:8800", {"sha256": "Oct5OoGCBEI7EFEBUt0HUnesxS29ZJu0TRaZ9DfijbY"}]], "prev_events": [["$1570043363287eSyun:localhost:8800", {"sha256": "Oct5OoGCBEI7EFEBUt0HUnesxS29ZJu0TRaZ9DfijbY"}]], "type": "m.room.join_rules", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043364288SCpzq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043364004, "hashes": {"sha256": "ObbQ0UNWBRORmGSt3OBMJyOfBiwo4ExBleVeL+ODbhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TTY6D+ZoUtspmnnj+U8Cz6ACzZptepLwQpXBcJ/Dn4nI6TXJQIzeXwBM7b2+uiEpypP3OpCgwKlponkVR2AJAg"}}, "unsigned": {"age_ts": 1570043364004}} J;g2a,X# Q  } H  v A m 8  d /[&RKwB p`+Z%|4]@anon-20191002_181700-674]@anon-20191002_181700-702:localhost:8800m-)4]@anon-20191002_181700-701:localhost:8800m 4]@anon-20191002_181700-700:localhost:8800m 1Y@anon-20191002_181700-6:localhost:8800mx14]@anon-20191002_181700-698:localhost:8800me4]@anon-20191002_181700-697:localhost:8800m R4]@anon-20191002_181700-696:localhost:8800m44]@anon-20191002_181700-695:localhost:8800m4]@anon-20191002_181700-693:localhost:8800m4]@anon-20191002_181700-692:localhost:8800m2[@anon-20191002_181700-63:localhost:8800mK64]@anon-20191002_181700-639:localhost:8800mᷱO4]@anon-20191002_181700-638:localhost:8800mVN4]@anon-20191002_181700-637:localhost:8800mqM4]@anon-20191002_181700-636:localhost:8800mMHL4]@anon-20191002_181700-635:localhost:8800m3K4]@anon-20191002_181700-634:localhost:8800mJ4]@anon-20191002_181700-633:localhost:8800mI4]@anon-20191002_181700-691:localhost:8800m濵4]@anon-20191002_181700-690:localhost:8800mk2[@anon-20191002_181700-68:localhost:8800mA:4]@anon-20191002_181700-689:localhost:8800m&4]@anon-20191002_181700-688:localhost:8800m 4]@anon-20191002_181700-687:localhost:8800m~4]@anon-20191002_181700-686:localhost:8800m|~4]@anon-20191002_181700-685:localhost:8800mU }4]@anon-20191002_181700-684:localhost:8800m/|4]@anon-20191002_181700-683:localhost:8800m {4]@anon-20191002_181700-682:localhost:8800m:z4]@anon-20191002_181700-681:localhost:8800mʪy4]@anon-20191002_181700-680:localhost:8800mx2[@anon-20191002_181700-67:localhost:8800mg94]@anon-20191002_181700-679:localhost:8800mw4]@anon-20191002_181700-678:localhost:8800m刨v4]@anon-20191002_181700-677:localhost:8800mau4]@anon-20191002_181700-676:localhost:8800mWt4]@anon-20191002_181700-675:localhost:8800m<s4]@anon-20191002_181700-674:localhost:8800m+[r4]@anon-20191002_181700-673:localhost:8800m(iq4]@anon-20191002_181700-672:localhost:8800m*p4]@anon-20191002_181700-671:localhost:8800m #o4]@anon-20191002_181700-670:localhost:8800mn4]@anon-20191002_181700-669:localhost:8800mem4]@anon-20191002_181700-668:localhost:8800mtl4]@anon-20191002_181700-667:localhost:8800mh,k4]@anon-20191002_181700-666:localhost:8800mKj4]@anon-20191002_181700-665:localhost:8800m-i4]@anon-20191002_181700-664:localhost:8800mh4]@anon-20191002_181700-663:localhost:8800mg4]@anon-20191002_181700-662:localhost:8800mf4]@anon-20191002_181700-661:localhost:8800mie4]@anon-20191002_181700-660:localhost:8800md2[@anon-20191002_181700-65:localhost:8800m&74]@anon-20191002_181700-659:localhost:8800mc4]@anon-20191002_181700-658:localhost:8800mr]b4]@anon-20191002_181700-657:localhost:8800mHa4]@anon-20191002_181700-656:localhost:8800m,7`4]@anon-20191002_181700-655:localhost:8800m_4]@anon-20191002_181700-654:localhost:8800m^4]@anon-20191002_181700-653:localhost:8800mf]4]@anon-20191002_181700-652:localhost:8800mА\4]@anon-20191002_181700-651:localhost:8800m[4]@anon-20191002_181700-650:localhost:8800m\Z2[@anon-20191002_181700-64:localhost:8800m84]@anon-20191002_181700-649:localhost:8800mY4]@anon-20191002_181700-648:localhost:8800mRX4]@anon-20191002_181700-647:localhost:8800mNW4]@anon-20191002_181700-646:localhost:8800m♪V4]@anon-20191002_181700-645:localhost:8800mlU4]@anon-20191002_181700-644:localhost:8800mlqT4]@anon-20191002_181700-643:localhost:8800m9WS4]@anon-20191002_181700-642:localhost:8800mR4]@anon-20191002_181700-641:localhost:8800m}Q4]@anon-20191002_181700-640:localhost:8800mP g * T~=gg^]!cg@anon-20191002_181700-635:localhost:8800SCDBHOHLOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwog]]!cf@anon-20191002_181700-634:localhost:8800GKOWEMDMJGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAog\]!ce@anon-20191002_181700-633:localhost:8800TRECTOOCOTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgog[]!cd@anon-20191002_181700-632:localhost:8800VIXCAXAJWEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwogZ]!cc@anon-20191002_181700-631:localhost:8800KQCHQRUBXZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQogY]!cb@anon-20191002_181700-630:localhost:8800VFOQXGNRPEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygogX]!ca@anon-20191002_181700-628:localhost:8800JKNWCQGMTXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwogW]!c`@anon-20191002_181700-627:localhost:8800XBWVSSSTPWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_gogV]!c_@anon-20191002_181700-626:localhost:8800GMFLXIUBWOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAogU]!c^@anon-20191002_181700-625:localhost:8800LXKNSEODEIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQogT]!c]@anon-20191002_181700-624:localhost:8800AATHUMCUILMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywo %]  R G h %`C9DnziQ3 e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAQ'Ee ]!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-EQ'Ee \!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$f-vRiHWufvykmGcu-CUS7JZLbFsdc15lpUVUlSVWlm4oQ? e [!NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibility$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qg~Q/ e Z!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQi}Q3 e Y!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA |Q']e X!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkc{Q' e W!NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHoqz1']Q V!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800$1570043391316OJaBO:localhost:8800Vy1'E3 V!5:localhost:42455m.room.member@__ANON__-10:localhost:42455$11:localhost:42455:x1' 3 V!5:localhost:42455m.room.create$10:localhost:42455>w1/ 3 V!5:localhost:42455m.room.join_rules$12:localhost:42455vQ']O U!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829$157004338812XhwjX:localhost:8829uQ']Q T!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829$1570043388313VFpux:localhost:8800htQ))Q S!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800$1570043388312YDkJu:localhost:8800esQ? Q R!sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility$1570043387311DGzYi:localhost:8800]rQ/ Q Q!sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules$1570043386310bGMNl:localhost:8800bqQ9 Q P!sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias$1570043385309imdbl:localhost:8800_pQ3 Q O!sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels$1570043384308gPogh:localhost:8800oQ']Q N!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800$1570043383307bhuDV:localhost:8800YnQ' Q M!sqkBzbHHJOTNWwynqV:localhost:8800m.room.create$1570043382306WhWIU:localhost:8800tmQ'CQ L!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@__ANON__-6:localhost:42455$1570043381305ccgXv:localhost:8800elQ? Q K!qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility$1570043380304caenp:localhost:8800]kQ/ Q J!qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules$1570043379303bCgUn:localhost:8800_jQ3 Q I!qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels$1570043378302mKBGD:localhost:8800iQ']Q H!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800$1570043377301OraEa:localhost:8800YhQ' Q G!qInWQPtNQfBFoVzUtP:localhost:8800m.room.create$1570043377300CLPUi:localhost:8800egQ? Q F!FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility$1570043375299fbyXJ:localhost:8800]fQ/ Q E!FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules$1570043374298UIMFg:localhost:8800_eQ3 Q D!FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levels$1570043373297SOjrf:localhost:8800dQ']Q C!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800$1570043372296yAiBq:localhost:8800YcQ' Q B!FZOLkaLbBpaibrbHZx:localhost:8800m.room.create$1570043371295coDXo:localhost:8800ebQ? Q A!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility$1570043369294rquKy:localhost:8800]aQ/ Q @!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules$1570043369293ssSMv:localhost:8800_`Q3 Q ?!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levels$1570043368292FAoRb:localhost:8800_Q']Q >!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800$1570043367291AEdax:localhost:8800Y^Q' Q =!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.create$1570043366290YSCqz:localhost:8800 _ _ggQQaq $1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3200}{"auth_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}], ["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}], ["$1570043368292FAoRb:localhost:8800", {"sha256": "0HIaStaxMW5t1SPEE1HZs9cy0MsBPHJKa/HbFrc+kB4"}]], "prev_events": [["$1570043368292FAoRb:localhost:8800", {"sha256": "0HIaStaxMW5t1SPEE1HZs9cy0MsBPHJKa/HbFrc+kB4"}]], "type": "m.room.join_rules", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043369293ssSMv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043369137, "hashes": {"sha256": "mVb/nOHEqxZs9oxKg/KBwcRjfv1aQZksFANbYPhFEJI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jol0FvTjwJyguLyGt1yt1dB/8J1RG1WVK/vxAox4MA372tjXwgstlE8fBt0/0Ln4RKpkMZ8D5jgWcSd542gLCA"}}, "unsigned": {"age_ts": 1570043369137}}+fQQay $1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3199}{"auth_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}], ["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}]], "prev_events": [["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}]], "type": "m.room.power_levels", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"users": {"@anon-20191002_181700-624:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043368292FAoRb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043368511, "hashes": {"sha256": "UkPbzSnuhpI9tU1lsiw2eltJlbEL2bQPjH+LMbjowCI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VMXdNQAW+FAxvWi/EahAZnnKK3yaqxhK8THuEPQ8uIcuP+35iamRQp8w1k+gQaB2/RAQecaQLzZh3/ZpowVWDw"}}, "unsigned": {"age_ts": 1570043368511}}eQQa) $1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3198}{"auth_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}]], "prev_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}]], "type": "m.room.member", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-624", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-624:localhost:8800", "event_id": "$1570043367291AEdax:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043367610, "hashes": {"sha256": "dxeJEXMDroNcE4QuFT2sROW4ZEam1na4Ys4as1GpqGk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kIZwa+iNx2Sdnog/5PQlICXdHtPpYqvnenfOJnxaKCGIT6D0kHtbbaOLPjQ2KCXD9WO9cryWrv+P8haTxOj3AA"}}, "unsigned": {"age_ts": 1570043367610}} <]  M   S " 8 [ )  a /g5m; sAj]yHNV$c1+c11e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA 1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM0e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0:1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc10e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncK0e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYt1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4v1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qa1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIb1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE0e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcX1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4I1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Al1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoG1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YJ1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwK1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQU1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ~1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIA1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAg1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo(1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsL1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4O1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYH1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"0e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAf0e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg51e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Uu1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg>1e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkZ1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IY1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkF1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ41e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 $&L r  + Q w 0V|5[:`j|QQQ$1570043387311DGzYi:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800j{QQQ$1570043387311DGzYi:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jzQQQ$1570043387311DGzYi:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jyQQQ$1570043386310bGMNl:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jxQQQ$1570043386310bGMNl:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jwQQQ$1570043386310bGMNl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jvQQQ$1570043385309imdbl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800juQQQ$1570043385309imdbl:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jtQQQ$1570043385309imdbl:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jsQQQ$1570043384308gPogh:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jrQQQ$1570043384308gPogh:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jqQQQ$1570043383307bhuDV:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jpQQQ$1570043380304caenp:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800joQQQ$1570043380304caenp:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jnQQQ$1570043380304caenp:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jmQQQ$1570043379303bCgUn:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jlQQQ$1570043379303bCgUn:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jkQQQ$1570043379303bCgUn:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jjQQQ$1570043378302mKBGD:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jiQQQ$1570043378302mKBGD:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jhQQQ$1570043377301OraEa:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jgQQQ$1570043375299fbyXJ:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jfQQQ$1570043375299fbyXJ:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jeQQQ$1570043375299fbyXJ:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jdQQQ$1570043374298UIMFg:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jcQQQ$1570043374298UIMFg:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jbQQQ$1570043374298UIMFg:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jaQQQ$1570043373297SOjrf:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800j`QQQ$1570043373297SOjrf:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800j_QQQ$1570043372296yAiBq:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800j^QQQ$1570043369294rquKy:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800j]QQQ$1570043369294rquKy:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800j\QQQ$1570043369294rquKy:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800j[QQQ$1570043369293ssSMv:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jZQQQ$1570043369293ssSMv:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jYQQQ$1570043369293ssSMv:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 i pijQQa) $1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3203}{"auth_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}]], "prev_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}]], "type": "m.room.member", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-625", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-625:localhost:8800", "event_id": "$1570043372296yAiBq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043372863, "hashes": {"sha256": "r269GSxS8GIOeVXq58UKdgZXdy3uAHvTh0/7una9u8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xnfbWi34PYI+/EnNCjEcJuHEf32Lsuw07R7kfrQJ9JAdXCsEwCtVNN+qzTfMJap5eoS2lDRounil1mCV2L9wAw"}}, "unsigned": {"age_ts": 1570043372863}}iQQaC $1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3202}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-625:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043371295coDXo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043371869, "hashes": {"sha256": "Qm302tqD+k8RaVtO4yZ7du4aBJWo38+R2I/v+MFmdeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9XL0uHjfYFHNnRlMJ47MUA2GU5P0qKAHzgEsuaa0Se9fIWrJb62yn8AIHTTbGpHZjd0f5Zeu+esxhfm6wzCoAA"}}, "unsigned": {"age_ts": 1570043371869}}xhQQa $1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3201}{"auth_events": [["$1570043368292FAoRb:localhost:8800", {"sha256": "0HIaStaxMW5t1SPEE1HZs9cy0MsBPHJKa/HbFrc+kB4"}], ["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}], ["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}]], "prev_events": [["$1570043369293ssSMv:localhost:8800", {"sha256": "ChwzLSWMd4yDEkPQRWWYS7P7BugvpQKYcut5EalX05I"}]], "type": "m.room.history_visibility", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043369294rquKy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043369948, "hashes": {"sha256": "/9TFKSDJezltoUlrYG0/WVzp3TdP9Ij8QOvE4mLWvvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eiBXe8wRGb1XAW1QYZ+UMnNrHyQc4/7K8kmIg6u63XTn8eTjIoj4iHJiBpXhK/ribtX3lC/sUixr9YgZ/d61BA"}}, "unsigned": {"age_ts": 1570043369948}} =w=Y Uq8 T  p 7 U  q 8 T r9Uu<Xvw>Z! 0 8]!@anon-2019108]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU8]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXEv6[!@anon-20191002_181700-65:localhost:8800JPWZALXKWP]8]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOFu8]!@anon-20191002_181700-658:localhost:8800NAYXIQANDEt8]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYFs8]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGIr8]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIRq8]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXAp6[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIa8]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV8]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW7Y%@anon-20191002_181700-6:localhost:8800login_device5Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOW8]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO8]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG6[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUD`8]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY8]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK8]!@anon-20191002_181700-685:localhost:8800ESVUDGRJIL8]!@anon-20191002_181700-684:localhost:8800QWWSYDBLAC8]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPR8]!@anon-20191002_181700-682:localhost:8800RHXEIACOYG8]!@anon-20191002_181700-681:localhost:8800CDCNSMATEC8]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGI6[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXM_8]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKF8]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUT8]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGV8]!@anon-20191002_181700-676:localhost:8800KCVXVHDURO8]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAM8]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT8]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE8]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNR8]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF8]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMK8]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWO8]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGW~8]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHN}8]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSB|8]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQ{8]!@anon-20191002_181700-664:localhost:8800KYCVQKAERIz8]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIHy8]!@anon-20191002_181700-662:localhost:8800BPDPANNUMTx8]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXVw "$H l " F j O b^ZVRNJFaeeQ$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800`eeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800_eeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800^eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800]eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800\eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800[eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800ZeeQ$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800YeeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800XeeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800WeeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800VeeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800UeeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800TeeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800SeeQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800[RQQ1$1570043392317hujur:localhost:8800$1570043391316OJaBO:localhost:8800!5:localhost:42455LQQ31$1570043391316OJaBO:localhost:8800$12:localhost:42455!5:localhost:42455=P331$12:localhost:42455$11:localhost:42455!5:localhost:42455=O331$11:localhost:42455$10:localhost:42455!5:localhost:42455jNOQQ$157004338812XhwjX:localhost:8829$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kMQQQ$1570043388312YDkJu:localhost:8800$1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kLQQQ$1570043387311DGzYi:localhost:8800$1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kKQQQ$1570043386310bGMNl:localhost:8800$1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kJQQQ$1570043385309imdbl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kIQQQ$1570043384308gPogh:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kHQQQ$1570043383307bhuDV:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kGQQQ$1570043380304caenp:localhost:8800$1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kFQQQ$1570043379303bCgUn:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kEQQQ$1570043378302mKBGD:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kDQQQ$1570043377301OraEa:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kCQQQ$1570043375299fbyXJ:localhost:8800$1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800kBQQQ$1570043374298UIMFg:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800kAQQQ$1570043373297SOjrf:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800k@QQQ$1570043372296yAiBq:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800  fxmQQa $1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3206}{"auth_events": [["$1570043373297SOjrf:localhost:8800", {"sha256": "G8Jo4pzQjWOst5YWiroCCTAaGRFlrD3Z4tMjyfhzkj4"}], ["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}], ["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}]], "prev_events": [["$1570043374298UIMFg:localhost:8800", {"sha256": "azTWHT3xvcLoUcHdJMP7y5+EvML6x+ddsw4xxX5apF4"}]], "type": "m.room.history_visibility", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043375299fbyXJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043375495, "hashes": {"sha256": "5AwRePb8eSEP6kmqrNRBrAOf+scS9r1+nsR+3bHcpa4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ez5wgK6mqaPoO2k5XaUphUO+3+6BnNVJVv4Ye/Gx1z/164q0poo8bo1dWPTtkHHIjnxn85xpwD2Du7kgHfukDA"}}, "unsigned": {"age_ts": 1570043375495}}glQQaq $1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3205}{"auth_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}], ["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}], ["$1570043373297SOjrf:localhost:8800", {"sha256": "G8Jo4pzQjWOst5YWiroCCTAaGRFlrD3Z4tMjyfhzkj4"}]], "prev_events": [["$1570043373297SOjrf:localhost:8800", {"sha256": "G8Jo4pzQjWOst5YWiroCCTAaGRFlrD3Z4tMjyfhzkj4"}]], "type": "m.room.join_rules", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043374298UIMFg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043374771, "hashes": {"sha256": "xV4c8LrRTOpTeqpG/54wT/U0lAC7TfaEQeu5wz5ooP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p/VnvwZsxRT1MWclSPqwzIOY+ONdCvCva4IL8sK+VwHI6GVjbC0YmJ2AHNaCuGbnLUUO+Eav7XEn8g0d/zu6Cg"}}, "unsigned": {"age_ts": 1570043374771}}+kQQay $1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3204}{"auth_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}], ["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}]], "prev_events": [["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}]], "type": "m.room.power_levels", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"users": {"@anon-20191002_181700-625:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043373297SOjrf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043373803, "hashes": {"sha256": "9l00X2WnfeFgp0zQ0yMvpvg8WgGE9hx6ZNGF3EzzyC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cG4F/HUCBmiQV+tiarCd/3CiLwWIow5m3Ke4vooUAclMMLSTEfsu+SaphWVOWiJhLEIK9AAIiJNxi11oDOLZAg"}}, "unsigned": {"age_ts": 1570043373803}} r` J  n 4MAEt"r, e?Q ]$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qm.room.history_visibility!NanhNmCnVVpmZRJrTF:localhost:8800m m l@anon-20191002_181700-633:localhost:8800$e/Q ]$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQm.room.join_rules!NanhNmCnVVpmZRJrTF:localhost:8800mm@anon-20191002_181700-633:localhost:8800&e3Q ]$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAm.room.power_levels!NanhNmCnVVpmZRJrTF:localhost:8800mmm@anon-20191002_181700-633:localhost:8800 e'Q ]$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkm.room.member!NanhNmCnVVpmZRJrTF:localhost:8800m;m@anon-20191002_181700-633:localhost:8800 e'Q  ]$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHom.room.create!NanhNmCnVVpmZRJrTF:localhost:8800mmc@anon-20191002_181700-633:localhost:8800Q)1 ]$1570043392317hujur:localhost:8800m.room.message!5:localhost:42455mVm@anon-20191002_181700-632:localhost:8800Q'1 ]$1570043391316OJaBO:localhost:8800m.room.member!5:localhost:42455mm@anon-20191002_181700-632:localhost:8800o3/1 E$12:localhost:42455m.room.join_rules!5:localhost:42455mm@__ANON__-10:localhost:42455i 3'1 E$11:localhost:42455m.room.member!5:localhost:42455mm@__ANON__-10:localhost:42455i3'1 E$10:localhost:42455m.room.create!5:localhost:42455mm@__ANON__-10:localhost:42455O'Q ]$157004338812XhwjX:localhost:8829m.room.member!sqkBzbHHJOTNWwynqV:localhost:8800mmA@anon-20191002_181700-629:localhost:8829Q)Q ]$1570043388312YDkJu:localhost:8800m.room.aliases!sqkBzbHHJOTNWwynqV:localhost:8800mm@anon-20191002_181700-628:localhost:8800"Q?Q ]$1570043387311DGzYi:localhost:8800m.room.history_visibility!sqkBzbHHJOTNWwynqV:localhost:8800mDmJ@anon-20191002_181700-628:localhost:8800Q/Q ]$1570043386310bGMNl:localhost:8800m.room.join_rules!sqkBzbHHJOTNWwynqV:localhost:8800mDmٷ@anon-20191002_181700-628:localhost:8800Q9Q ]$1570043385309imdbl:localhost:8800m.room.canonical_alias!sqkBzbHHJOTNWwynqV:localhost:8800m m@anon-20191002_181700-628:localhost:8800Q3Q ]$1570043384308gPogh:localhost:8800m.room.power_levels!sqkBzbHHJOTNWwynqV:localhost:8800m%mӺ@anon-20191002_181700-628:localhost:8800 Q'Q ]$1570043383307bhuDV:localhost:8800m.room.member!sqkBzbHHJOTNWwynqV:localhost:8800mmU@anon-20191002_181700-628:localhost:8800  Q'Q  ]$1570043382306WhWIU:localhost:8800m.room.create!sqkBzbHHJOTNWwynqV:localhost:8800mm4@anon-20191002_181700-628:localhost:8800" Q?Q ]$1570043380304caenp:localhost:8800m.room.history_visibility!qInWQPtNQfBFoVzUtP:localhost:8800mmď@anon-20191002_181700-626:localhost:8800 Q/Q ]$1570043379303bCgUn:localhost:8800m.room.join_rules!qInWQPtNQfBFoVzUtP:localhost:8800mmH@anon-20191002_181700-626:localhost:8800 Q3Q ]$1570043378302mKBGD:localhost:8800m.room.power_levels!qInWQPtNQfBFoVzUtP:localhost:8800mm<@anon-20191002_181700-626:localhost:8800Q'Q ]$1570043377301OraEa:localhost:8800m.room.member!qInWQPtNQfBFoVzUtP:localhost:8800m9m๛@anon-20191002_181700-626:localhost:8800 Q'Q  ]$1570043377300CLPUi:localhost:8800m.room.create!qInWQPtNQfBFoVzUtP:localhost:8800m0mඋ@anon-20191002_181700-626:localhost:8800"Q?Q ]$1570043375299fbyXJ:localhost:8800m.room.history_visibility!FZOLkaLbBpaibrbHZx:localhost:8800mேm'@anon-20191002_181700-625:localhost:8800Q/Q ]$1570043374298UIMFg:localhost:8800m.room.join_rules!FZOLkaLbBpaibrbHZx:localhost:8800mଳm%@anon-20191002_181700-625:localhost:8800Q3Q ]$1570043373297SOjrf:localhost:8800m.room.power_levels!FZOLkaLbBpaibrbHZx:localhost:8800mmF@anon-20191002_181700-625:localhost:8800 91 0 <4, (1 T L?tIA  9eeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800 ݁eeQ$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800 UDeeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800 e>111$3:localhost:41985$2:localhost:41985!0:localhost:41985 >111$3:localhost:44405$2:localhost:44405!0:localhost:44405 eeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800^1QQ$3:localhost:42455$1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800 /eeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800@eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo!ffijTnPMbTrDXHqOXf:localhost:8800ȁeeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:88005eeQ$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800peeQ$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800ځeeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800 eeQ$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800 فeeQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:88008eeQ$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800 >111$3:localhost:37265$2:localhost:37265!0:localhost:37265  eeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800 y_3QQ$39:localhost:42455$1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 |`eeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800&eeQ$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800 ":Q * A z  Fjm q-qru pQ? e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibility$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwhQ/ e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMjQ3 e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg Q']e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgdQ' e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIQ/ ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ8Q']ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk,Q'Eee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-EQ' ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHoQ3 ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAQ'Ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-Ep Q? e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibility$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qh Q/ e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQj Q3 e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA Q']e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkd Q' e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHor1']Q !5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800$1570043391316OJaBO:localhost:8800W1'E3 !5:localhost:42455m.room.member@__ANON__-10:localhost:42455$11:localhost:42455;1' 3 !5:localhost:42455m.room.create$10:localhost:42455?1/ 3 !5:localhost:42455m.room.join_rules$12:localhost:42455Q']O !sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829$157004338812XhwjX:localhost:8829iQ))Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800$1570043388312YDkJu:localhost:8800fQ? Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility$1570043387311DGzYi:localhost:8800^Q/ Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules$1570043386310bGMNl:localhost:8800cQ9 Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias$1570043385309imdbl:localhost:8800`Q3 Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels$1570043384308gPogh:localhost:8800~Q']Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800$1570043383307bhuDV:localhost:8800Z}Q' Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.create$1570043382306WhWIU:localhost:8800f|Q? Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility$1570043380304caenp:localhost:8800^{Q/ Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules$1570043379303bCgUn:localhost:8800`zQ3 Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels$1570043378302mKBGD:localhost:8800yQ']Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800$1570043377301OraEa:localhost:8800ZxQ' Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.create$1570043377300CLPUi:localhost:8800fwQ? Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility$1570043375299fbyXJ:localhost:8800  +pQQay $1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3209}{"auth_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}], ["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}]], "prev_events": [["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}]], "type": "m.room.power_levels", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"users": {"@anon-20191002_181700-626:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043378302mKBGD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043378912, "hashes": {"sha256": "hj+DjjDOKZJzAgSef7t9tSE8QmIj1SBnJEMNyJXG0gA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bhVV5l4zHEMAU3km1sNtNJy9MlEBA/IoFWXCXnmGHmOGyps2KjKeaULaaTjmj+B5JoSoobK4AgaXlMdzc2x2Bg"}}, "unsigned": {"age_ts": 1570043378912}}oQQa) $1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3208}{"auth_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}]], "prev_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}]], "type": "m.room.member", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-626", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-626:localhost:8800", "event_id": "$1570043377301OraEa:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043377977, "hashes": {"sha256": "ogMk0jwzO03dpd8DbKk0DiL2MbW80Nd8R7095TM9XwU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LEW+o9xP/3CjlQ+fVWEnxJLKa3Z9iS46xT1896T7wrU1TOj3gtmn0sdE7SfNReE5F3aDPsf15GMIA5V8j9CMDw"}}, "unsigned": {"age_ts": 1570043377977}}nQQaC $1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3207}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-626:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043377300CLPUi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043377200, "hashes": {"sha256": "DUeEen0zAS5bkBaQsmF98HUVhmbZA1QZ4ti5L0nbPyM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hRubHe42t6aMYgEcORZUuzUc/pF5wtsalSirWJ2DVf45cCqaqH0Tl7S7jeMYnRl7gD/hcl0uBMfrYPIYrbiODw"}}, "unsigned": {"age_ts": 1570043377200}} G o= u C % D| W Jp %W Q > | J  ]+c1j8 ] + P  zUC5waNW6wj52-1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo G1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q j1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoI1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc`1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-ok1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwD1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4j1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAt1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag11e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70q1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUh1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I_1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMd0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFII1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pww1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 t1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDob1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE}1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEi1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 ,1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA?1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ}1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs;0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgl1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I ~1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E&1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y871e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM v21e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOId1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k51e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo51e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 a1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskZ1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYg1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 Z2  sQQaC $1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3212}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-628:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043382306WhWIU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043382984, "hashes": {"sha256": "XlLKPJv1efcMN4F/b7rAwfi9Bzj0002qllXkt0/WwkQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aOKXah6B6zOrOUX4l0jG7AHSM4j5WIHLnd/M0G3xmYsjbxDM6E6esPMbLSY01vdCyOC2BpSB2IQOAEg4INWnAg"}}, "unsigned": {"age_ts": 1570043382984}}xrQQa $1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3211}{"auth_events": [["$1570043378302mKBGD:localhost:8800", {"sha256": "zjJodajyY++7ScVlKXmmW5aqfvwBZyOZJbCHVwjwx6k"}], ["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}], ["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}]], "prev_events": [["$1570043379303bCgUn:localhost:8800", {"sha256": "Jl1Rz50FBeF8fY+ntspdvJOIuCz5lE5gKWdG9NkKmmQ"}]], "type": "m.room.history_visibility", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043380304caenp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043380607, "hashes": {"sha256": "PCE2JvOldVzfET30jiKcUMnlQKiyUw7k4RTs67SV5WA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/JlPBXHX9q058BM4H4owNullAar1VfTyQWJps2+2a/Hm51bgRkfTIhD6CLGcrsvvbwu+hbyLYmX5ZXWutihABg"}}, "unsigned": {"age_ts": 1570043380607}}gqQQaq $1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3210}{"auth_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}], ["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}], ["$1570043378302mKBGD:localhost:8800", {"sha256": "zjJodajyY++7ScVlKXmmW5aqfvwBZyOZJbCHVwjwx6k"}]], "prev_events": [["$1570043378302mKBGD:localhost:8800", {"sha256": "zjJodajyY++7ScVlKXmmW5aqfvwBZyOZJbCHVwjwx6k"}]], "type": "m.room.join_rules", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043379303bCgUn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043379678, "hashes": {"sha256": "fSCDUVKUntPAq+42H298yd5mzsN6pw7JBm0AqbqUQXo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cce/rIe8dSZhZNpG+QaurD7FPYxloXWmrQgduLk+eaf28dJU3U1MNiZ88wuRBmva02y+alGh2kQriyDgVEY4Bw"}}, "unsigned": {"age_ts": 1570043379678}} RSzM nAsF&4am@ ` 3  S & s F  e 8 X +wJi<[.{N,Q!wCsDjKBtuUbrmZgjsB:localhost:8800==,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 +Q !wBkUBAjOznOyxrLchl:localhost:8800 -,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!vyCFfUTJKYJSDadFhT:localhost:8800^^-,Q!wCsDjKBtuUbrmZgjsB:localhost:8800>>!Z,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wCsDjKBtuUbrmZgjsB:localhost:8800<<,Q!wCsDjKBtuUbrmZgjsB:localhost:8800;;+Q !wCsDjKBtuUbrmZgjsB:localhost:8800::,Q!wBBQYEPjQGnoAzDpEu:localhost:8800  ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 +Q !wBBQYEPjQGnoAzDpEu:localhost:8800 -,Q!wsvXTJXouVkEZcCFsD:localhost:8800+Q !wsvXTJXouVkEZcCFsD:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800+Q !wnriPzXkIMmdTNoJKU:localhost:8800,Q!whuymJoLfUdkFdxoyE:localhost:8800 8 8,Q!whuymJoLfUdkFdxoyE:localhost:8800 7 7,Q!whuymJoLfUdkFdxoyE:localhost:8800 6 6,Q!whuymJoLfUdkFdxoyE:localhost:8800 5 5,Q!whuymJoLfUdkFdxoyE:localhost:8800 4 4,Q!whuymJoLfUdkFdxoyE:localhost:8800 3 3,Q!whuymJoLfUdkFdxoyE:localhost:8800 2 2+Q !whuymJoLfUdkFdxoyE:localhost:8800 1 1,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800+Q !wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wLitJYvgvNJzanSIvO:localhost:8800bb,Q!wLitJYvgvNJzanSIvO:localhost:8800aa,Q!wLitJYvgvNJzanSIvO:localhost:8800``,Q!wLitJYvgvNJzanSIvO:localhost:8800__,Q!wLitJYvgvNJzanSIvO:localhost:8800^^+Q !wLitJYvgvNJzanSIvO:localhost:8800]],Q!wIhMbfQzYbJobPdwyi:localhost:8800,Q!wIhMbfQzYbJobPdwyi:localhost:8800~~,Q!wIhMbfQzYbJobPdwyi:localhost:8800}},Q!wIhMbfQzYbJobPdwyi:localhost:8800||,Q!wIhMbfQzYbJobPdwyi:localhost:8800{{+Q !wIhMbfQzYbJobPdwyi:localhost:8800zz,Q!wAyboOFgsOPwkmgMAI:localhost:8800??,Q!wAyboOFgsOPwkmgMAI:localhost:8800>>,Q!wAyboOFgsOPwkmgMAI:localhost:8800==,Q!wAyboOFgsOPwkmgMAI:localhost:8800<<,Q!wAyboOFgsOPwkmgMAI:localhost:8800;;+Q !wAyboOFgsOPwkmgMAI:localhost:8800::,Q!vyCFfUTJKYJSDadFhT:localhost:8800 `` RSzM nAsF&4am@ ` 3  S & s F  e 8 X +wJi<[.{N,Q!wCsDjKBtuUbrmZgjsB:localhost:8800==,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 +Q !wBkUBAjOznOyxrLchl:localhost:8800 -,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!vyCFfUTJKYJSDadFhT:localhost:8800^^-,Q!wCsDjKBtuUbrmZgjsB:localhost:8800>>!Z,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wCsDjKBtuUbrmZgjsB:localhost:8800<<,Q!wCsDjKBtuUbrmZgjsB:localhost:8800;;+Q !wCsDjKBtuUbrmZgjsB:localhost:8800::,Q!wBBQYEPjQGnoAzDpEu:localhost:8800  ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 +Q !wBBQYEPjQGnoAzDpEu:localhost:8800 -,Q!wsvXTJXouVkEZcCFsD:localhost:8800+Q !wsvXTJXouVkEZcCFsD:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800+Q !wnriPzXkIMmdTNoJKU:localhost:8800,Q!whuymJoLfUdkFdxoyE:localhost:8800 8 8,Q!whuymJoLfUdkFdxoyE:localhost:8800 7 7,Q!whuymJoLfUdkFdxoyE:localhost:8800 6 6,Q!whuymJoLfUdkFdxoyE:localhost:8800 5 5,Q!whuymJoLfUdkFdxoyE:localhost:8800 4 4,Q!whuymJoLfUdkFdxoyE:localhost:8800 3 3,Q!whuymJoLfUdkFdxoyE:localhost:8800 2 2+Q !whuymJoLfUdkFdxoyE:localhost:8800 1 1,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800+Q !wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wLitJYvgvNJzanSIvO:localhost:8800bb,Q!wLitJYvgvNJzanSIvO:localhost:8800aa,Q!wLitJYvgvNJzanSIvO:localhost:8800``,Q!wLitJYvgvNJzanSIvO:localhost:8800__,Q!wLitJYvgvNJzanSIvO:localhost:8800^^+Q !wLitJYvgvNJzanSIvO:localhost:8800]],Q!wIhMbfQzYbJobPdwyi:localhost:8800,Q!wIhMbfQzYbJobPdwyi:localhost:8800~~,Q!wIhMbfQzYbJobPdwyi:localhost:8800}},Q!wIhMbfQzYbJobPdwyi:localhost:8800||,Q!wIhMbfQzYbJobPdwyi:localhost:8800{{+Q !wIhMbfQzYbJobPdwyi:localhost:8800zz,Q!wAyboOFgsOPwkmgMAI:localhost:8800??,Q!wAyboOFgsOPwkmgMAI:localhost:8800>>,Q!wAyboOFgsOPwkmgMAI:localhost:8800==,Q!wAyboOFgsOPwkmgMAI:localhost:8800<<,Q!wAyboOFgsOPwkmgMAI:localhost:8800;;+Q !wAyboOFgsOPwkmgMAI:localhost:8800::,Q!vyCFfUTJKYJSDadFhT:localhost:8800 `` $@^ 7 M  |  GWf$@Iq.m$eQ? $PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800m.room.history_visibilitye#eQ/ $BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800m.room.join_rulesg"eQ3 $o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800m.room.power_levels !eQ']$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800a eQ' $Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800m.room.create}eQ'E$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455meQ? $sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibilityeeQ/ $nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rulesgeQ3 $r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels eQ']$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800aeQ' $7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create}eQ'E$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455meQ? $xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibilityeeQ/ $egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rulesgeQ3 $t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels eQ']$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800aeQ' $H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800m.room.create}eQ'E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455meQ? $mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibilityeeQ/ $PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rulesgeQ3 $JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels eQ']$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800aeQ' $BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800m.room.createo Q1']$1570043391316OJaBO:localhost:8800!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800< 31/ $12:localhost:42455!5:localhost:42455m.room.join_rulesT 31'E$11:localhost:42455!5:localhost:42455m.room.member@__ANON__-10:localhost:424558 31' $10:localhost:42455!5:localhost:42455m.room.create~ OQ']$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829fQQ))$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800cQQ? $1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility[QQ/ $1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules`QQ9 $1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias]QQ3 $1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levelsQQ']$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800WQQ' $1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.createcQQ? $1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility "M 0 }   % 5EUeu -=Mu ]@anon-20191002_181700-662:localhost:8800$2b$04$oXURBEfBko3aRysF8PyhnOx1dvPKSwPLSSNEnQfLxhPDuBygHFHZK]u ]@anon-20191002_181700-661:localhost:8800$2b$04$93P6vBHax7M4lNVuL1Otc.dapDQ.R76wCUSOMfRYiiCP7LTATK8qC]u ]@anon-20191002_181700-660:localhost:8800$2b$04$A8/pvVjN6IIeOWVs6N3DEOlMcojaQGQ7DDnfvWDTFWxMPlyAQHR9.]u ]@anon-20191002_181700-659:localhost:8800$2b$04$b9KomiH8acsXbdB5TLEXXu4HAWX9CS3eW5s5y3OmwT8J0YoR72oq.]u ]@anon-20191002_181700-658:localhost:8800$2b$04$OPl/fdHWm2M8AoL4CSN1j.szhm.pS5O87z3pjLYfXrt3GKRaKJK3a]u ]@anon-20191002_181700-657:localhost:8800$2b$04$RUCr8C1pPT9UNo6g7c7zHuTd8Xj4pm0Rox/TGRLD461KFjry1zXzG]u ]@anon-20191002_181700-656:localhost:8800$2b$04$l5vJsV4jEqAM2dWsFxR1GOiisRUrzjuDzfnr1GOfTRojQeZ2WWJZu]u ]@anon-20191002_181700-655:localhost:8800$2b$04$9Uq0RCdTcwaH/bMSO0Z/COn2W9CzUk39/sIt7U5vqRTdYATjcPM8a]u ]@anon-20191002_181700-654:localhost:8800$2b$04$ZdL8VealXboG6fLNcmPTueCDyT5wor/b4jH1PuA4qKH..LVySn4kK]u ]@anon-20191002_181700-653:localhost:8800$2b$04$U61VJDeL20mgDNxutjI4kuL/nOQeUkgdiZRR.ZDWrY6WPIzT5nwsi]u ]@anon-20191002_181700-652:localhost:8800$2b$04$z/wtQmcPLejwMMDV7vxBX.Diho8W6AbAxNZr1/PCHQMr01UzpeUIe]zu ]@anon-20191002_181700-651:localhost:8800$2b$04$cWAUIECW2N8zSYGGQZQRQOvy9NA7w6vpaGUI2n68.8v1BG9.WVFS.]xu ]@anon-20191002_181700-650:localhost:8800$2b$04$uI0iAnTTlwiL4t45TAbxmuDJvqytRTXXPmz99/uzz1av0QPWA1szu]vu ]@anon-20191002_181700-649:localhost:8800$2b$04$Czs1k31p0U2Vzw7u/a0LKOcrJh96CjtFmxeYs0ID36Bawz6WGpJFe]uu ]@anon-20191002_181700-648:localhost:8800$2b$04$89DM05JrFotukLOxVHyoze4faL3dQmHs4WE8toNENjnFT/FazAQ1u]su ]@anon-20191002_181700-647:localhost:8800$2b$04$gySK6ZU6trx3obBITroLKe/nJcx85QAgfBvL7evd9X2r7CVdinX1e]ru ]@anon-20191002_181700-646:localhost:8800$2b$04$UsbQirgKbLx7LmCsYTNrJeHK6oUGbD5EWrgzSBwT6pBMbYU1cwE16]lu ]@anon-20191002_181700-645:localhost:8800$2b$04$Xd8BFfV72SN5hQ3aqrb2QuItMW4GHPsprqjdV05vZa8HVnyxT1nwS]`u ]@anon-20191002_181700-644:localhost:8800$2b$04$JjKRfY5gFqc96Md6zWbT0.xDPWKP/T0dE2E7bg7fnZQafVNWHQiWW]`u ]@anon-20191002_181700-643:localhost:8800$2b$04$Xk4Ls4srnmdwCSBwr7YkeOAEGs7GywjjktKjN3il0AC2FJEbCSzNu]Su~ ]@anon-20191002_181700-642:localhost:8800$2b$04$ZUoLXn2p6UdRQ5k0f0eLk.S6J2w4Si7y4ZZG2pUagGjO4t5v36/7m]Lu} ]@anon-20191002_181700-641:localhost:8800$2b$04$j.367Gpt9FWFi/KzrcsQVOO0Du1B8nh9aETEsU12uU0cFYMh9QeZG]Cu| ]@anon-20191002_181700-640:localhost:8800$2b$04$g88tnoC4dfeezWApxbjC7.jZWNur2qUZY4N7uIlFGRsKfQQTYANT2]:u{ ]@anon-20191002_181700-639:localhost:8800$2b$04$dTzbNcP.ESSf9VVhidGQ6OQIeDhbRxoM.soZBYeuk3IdFg8T8RXBe]2uz ]@anon-20191002_181700-638:localhost:8800$2b$04$Y52H9Ug4d9P78jvk/ZKdL.pCLpjHvL4vESBwZD0qbEhZENFVsaWOi])uy ]@anon-20191002_181700-637:localhost:8800$2b$04$sSAxTLM8MnSY/KqTkiBZ2eJUpKs.AQq6gzMXHIG6HgOOj8OGFg9NW] 8x ] @anon-20191002_181700-636:localhost:8800]uw ]@anon-20191002_181700-635:localhost:8800$2b$04$5fZCfWVNUGhG83MRwQBBPeGjPuT/2qWFz.U9W0L9w8QC8K6LnfOjq]uv ]@anon-20191002_181700-634:localhost:8800$2b$04$3XebvH7JYaTQAkrcQ8GiYeI/xuZQEgpnHyMZ7WXqgbWYhSYYHcU6m] uu ]@anon-20191002_181700-633:localhost:8800$2b$04$PlNt4QMIW5vqjPa/zvrxjO8c1yngchNeq12MnXIVHAu4RapesQQAW]ut ]@anon-20191002_181700-632:localhost:8800$2b$04$9QxArthuN8HUY5C.2GZ8T.Pgx7oO.ncE6En/H.nDxgz/VFvfNH8Q2]us ]@anon-20191002_181700-631:localhost:8800$2b$04$lWTlWWNXi7RJ1/vNanvDI.XJuXSm/AoZk6B.Fdrr1FIIfiTC15i1C]ur ]@anon-20191002_181700-630:localhost:8800$2b$04$CiPidbbC9zpzhYB4drscl.I13SrzT0g1xUsahf1Y8CgH7H74HEu/2]uq ]@anon-20191002_181700-628:localhost:8800$2b$04$a4dkrhK0Hk2yVfDTYnNFT.XAtKwkXrxNqzunmuKkhhnt4IQpRQBZG] ? G R V  \  b ! h ' o .u9x<L RX]b&e)> ]  @anon-20191002_181700-663:localhost:8800m&\> ]  @anon-20191002_181700-661:localhost:8800m&\9 ]@anon-20191002_181700-663:localhost:8800a&\> ]  @anon-20191002_181700-662:localhost:8800m&\9 ]@anon-20191002_181700-662:localhost:8800a&\> ]  @anon-20191002_181700-659:localhost:8800m&\9 ]@anon-20191002_181700-661:localhost:8800a&\> ]  @anon-20191002_181700-660:localhost:8800m&\9 ]@anon-20191002_181700-660:localhost:8800a&\9 ]@anon-20191002_181700-659:localhost:8800a&\? ] @anon-20191002_181700-658:localhost:8800m&\9 ]@anon-20191002_181700-658:localhost:8800a&\? ] @anon-20191002_181700-657:localhost:8800m&\J9 ]@anon-20191002_181700-657:localhost:8800a&\> ]  @anon-20191002_181700-656:localhost:8800m&\9 ]@anon-20191002_181700-656:localhost:8800a&\>~ ]  @anon-20191002_181700-655:localhost:8800m&\9} ]@anon-20191002_181700-655:localhost:8800a&\>| ]  @anon-20191002_181700-654:localhost:8800m&\9{ ]@anon-20191002_181700-654:localhost:8800a&\>z ]  @anon-20191002_181700-653:localhost:8800m&\9y ]@anon-20191002_181700-653:localhost:8800a&\>x ]  @anon-20191002_181700-652:localhost:8800m&\9w ]@anon-20191002_181700-652:localhost:8800a&\9v ]@anon-20191002_181700-651:localhost:8800a&\9u ]@anon-20191002_181700-650:localhost:8800a&\9t ]@anon-20191002_181700-649:localhost:8800a&\9s ]@anon-20191002_181700-648:localhost:8800a&\9r ]@anon-20191002_181700-647:localhost:8800a&\>q ] @anon-20191002_181700-646:localhost:8800m&\K>n ]  @anon-20191002_181700-644:localhost:8800m&\89p ]@anon-20191002_181700-646:localhost:8800a&\>o ]  @anon-20191002_181700-645:localhost:8800m&\C9m ]@anon-20191002_181700-645:localhost:8800a&\9l ]@anon-20191002_181700-644:localhost:8800a&\>k ]  @anon-20191002_181700-643:localhost:8800m&\:w9j ]@anon-20191002_181700-643:localhost:8800a&\=i ]  @anon-20191002_181700-642:localhost:8800m&\9h ]@anon-20191002_181700-642:localhost:8800a&\>g ]  @anon-20191002_181700-641:localhost:8800m&\u9f ]@anon-20191002_181700-641:localhost:8800a&\>e ]  @anon-20191002_181700-640:localhost:8800m&\u9d ]@anon-20191002_181700-640:localhost:8800a&\>c ]  @anon-20191002_181700-639:localhost:8800m&\.9b ]@anon-20191002_181700-639:localhost:8800a&\>a ]  @anon-20191002_181700-638:localhost:8800m&\}9` ]@anon-20191002_181700-638:localhost:8800a&\>_ ]  @anon-20191002_181700-637:localhost:8800m&\9^ ]@anon-20191002_181700-637:localhost:8800a&\>] ] @anon-20191002_181700-636:localhost:8800m&\9\ ]@anon-20191002_181700-636:localhost:8800a&\>[ ]  @anon-20191002_181700-635:localhost:8800m&\C9Z ]@anon-20191002_181700-635:localhost:8800a&\?Y ] @anon-20191002_181700-634:localhost:8800m&\C9X ]@anon-20191002_181700-634:localhost:8800a&\?W ] @anon-20191002_181700-633:localhost:8800m&\C9V ]@anon-20191002_181700-633:localhost:8800a&\>U ] @anon-20191002_181700-632:localhost:8800m&\9T ]@anon-20191002_181700-632:localhost:8800a&\9S ]@anon-20191002_181700-631:localhost:8800a&\9R ]@anon-20191002_181700-630:localhost:8800a&\>Q ]  @anon-20191002_181700-628:localhost:8800m&\9P ]@anon-20191002_181700-628:localhost:8800a&\ C j / ~ C  W k0OcD Xl1E Ym2F ( w <   V8?]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAM81]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQ80]!@anon-20191002_181700-664:localhost:8800KYCVQKAERI8/]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIH8.]!@anon-20191002_181700-662:localhost:8800BPDPANNUMT8-]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXV8,]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXE8+]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOF8*]!@anon-20191002_181700-658:localhost:8800NAYXIQANDE8)]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYF8(]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGI8']!@anon-20191002_181700-655:localhost:8800JMLNJUZSIR8&]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXA8%]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGU8$]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHS8#]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJ8"]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUO8!]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWA8 ]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGG8]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOS8]!@anon-20191002_181700-646:localhost:8800HFMIURTAJA8]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVG8]!@anon-20191002_181700-644:localhost:8800INFGSFBNKU8]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQ8]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQ8]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVI8]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQN8]!@anon-20191002_181700-639:localhost:8800VIDPYYIORG8]!@anon-20191002_181700-638:localhost:8800AMILRIOBVF8]!@anon-20191002_181700-637:localhost:8800SOCIZPGICG8]!@anon-20191002_181700-636:localhost:8800EGOZKYJYMN8 ]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPW8 ]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWO8 ]!@anon-20191002_181700-625:localhost:8800LXKNSEODEI8 ]!@anon-20191002_181700-624:localhost:8800AATHUMCUIL8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUD8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLU8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDH8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQ8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVV8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABY8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUET8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHS8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEM8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZ8~]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHI8}]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRP8|]!@anon-20191002_181700-611:localhost:8800UERIFUMBMU8{]!@anon-20191002_181700-610:localhost:8800ZXXERHSURN8z]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAE8=]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT8>]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE29E-@__ANON__-46:localhost:42455random_device_id88]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNR87]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF86]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMK85]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWO84]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGW83]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHN82]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSB8]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOL8]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJG8]!@anon-20191002_181700-633:localhost:8800TRECTOOCOT8]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWE8]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZ8]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPE8 ]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTX H~O d5sDY* n ?  T % i : ~ O d D r9Ok2N0L.Q$1570043748464QpNXV:localhost:8800sha256  .Q$1570043750466Tmiqu:localhost:8800sha256 8e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUsha256.Q$1570043754467mNKfq:localhost:8800sha256 .Q$1570043646420mPrhj:localhost:8800sha256 y.Q$1570043646419zIOAX:localhost:8800sha256 x.Q$1570043645418ABZkc:localhost:8800sha256 w.Q$1570043593416CouYv:localhost:8800sha256 D.Q$1570043592415heiAH:localhost:8800sha256 C.Q$1570043591414NuXxd:localhost:8800sha256 B.Q$1570043590413Khvee:localhost:8800sha256 A.Q$1570043589412JaDTY:localhost:8800sha256 @.Q$1570043588411PDBWG:localhost:8800sha256 ?8e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwsha256F8e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQsha256 08e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCosha256 ,8e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYsha2568e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4sha256 &8e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28sha2568e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQsha2568e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpssha256t8e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPosha256 8e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Esha2568e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwsha256 8e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Msha2568e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Qsha256B1$1:localhost:42455sha256 L8e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxYsha256?3$19:localhost:42455sha256 8e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4sha2563$18:localhost:42455sha256 8e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQsha2563$17:localhost:42455sha256 3$16:localhost:42455sha256 8e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbksha25633$15:localhost:42455sha256 .Q$1570043748463euAqZ:localhost:8800sha256 .Q$1570043747462YuUEF:localhost:8800sha256 .Q$1570043746461eQhrq:localhost:8800sha256 .Q$1570043745460sJOiY:localhost:8800sha256 .Q$1570043744459BIUYb:localhost:8800sha256 .Q$1570043741458PZvre:localhost:8800sha256 .Q$1570043739456qeuuS:localhost:8800sha256 .Q$1570043738455KNDHf:localhost:8800sha256 .Q$1570043737454adOjg:localhost:8800sha256 .Q$1570043736453VtbeL:localhost:8800sha256 .Q$1570043736452Igyim:localhost:8800sha256 .Q$1570043733451EJhWh:localhost:8800sha256 .Q$1570043730449XMaNb:localhost:8800sha256 .Q$1570043729448XmFHA:localhost:8800sha256 .Q$1570043728447IkYro:localhost:8800sha256 .Q$1570043727446CGYaE:localhost:8800sha256 .Q$1570043726445lSnmj:localhost:8800sha256 .Q$1570043715443SSqOY:localhost:8800sha256 .Q$1570043713441WJPkP:localhost:8800sha256 .Q$1570043712440rfNzQ:localhost:8800sha256 .Q$1570043712439XdJFc:localhost:8800sha256 .Q$1570043711438bqOHL:localhost:8800sha256 .Q$1570043710437aFoBB:localhost:8800sha256 .Q$1570043683436iTOlZ:localhost:8800sha256 .Q$1570043680434abJWo:localhost:8800sha256 .Q$1570043670433bjAzo:localhost:8800sha256 .Q$1570043668432TfiHj:localhost:8800sha256 .Q$1570043664431IMLSL:localhost:8800sha256 .Q$1570043660430kLPpN:localhost:8800sha256 .Q$1570043656428rZaqi:localhost:8800sha256 .Q$1570043655427tEtWD:localhost:8800sha256 .Q$1570043654426seixP:localhost:8800sha256 .Q$1570043653425AhyPB:localhost:8800sha256 .Q$1570043652424mkkFn:localhost:8800sha256 ~.Q$1570043648422SglHQ:localhost:8800sha256 {.Q$1570043647421dmTZW:localhost:8800sha256 z = = vQQa5 $1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3215}{"auth_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}], ["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}]], "prev_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}]], "type": "m.room.canonical_alias", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"alias": "#test-20191002_181700-47:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043385309imdbl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043385355, "hashes": {"sha256": "8VOLc8rQdgis4y7qBYZuPpNMBJvGQfPnk445Ym6LT+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n/R94TtSR9nl5cugz0Odev/JAftIoFgIfUpmIRF2CsC23PtGfdkXR1AIJFcSt6GiGwRVlRPZjKkRW16nZ4FCAw"}}, "unsigned": {"age_ts": 1570043385355}}+uQQay $1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3214}{"auth_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "type": "m.room.power_levels", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"users": {"@anon-20191002_181700-628:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043384308gPogh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043384613, "hashes": {"sha256": "gAHq3lJhXB742jwlHrp0ue6lPrPBICScnbtcfHga1zc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GAFn1Q2dFkysrvFHnCAjiqvystSeMtyjoh8Yo5rqM8gFutT4eolXayJvG+zZA9Ql1I6p1+KVPYq2L+/x0JsdBQ"}}, "unsigned": {"age_ts": 1570043384613}}tQQa) $1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3213}{"auth_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}]], "prev_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}]], "type": "m.room.member", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-628", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-628:localhost:8800", "event_id": "$1570043383307bhuDV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043383789, "hashes": {"sha256": "fW6wLCPmj3T2ppuD1Awz8+bWsoHhEEcFufZ1KH1EHUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eu9W8JH2Q61BpbSMwJGvuytPdqMPyhDrM07l5dpIBjtZQ4K2+odM0cAbb66noiwPQa+rKB5VukefVo9Ybp39Dw"}}, "unsigned": {"age_ts": 1570043383789}} "&M u 6 j      ~eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800KQ31$1570043391316OJaBO:localhost:8800$12:localhost:42455!5:localhost:42455KQ31$1570043391316OJaBO:localhost:8800$10:localhost:42455!5:localhost:42455<331$12:localhost:42455$11:localhost:42455!5:localhost:42455<331$12:localhost:42455$10:localhost:42455!5:localhost:42455<331$11:localhost:42455$10:localhost:42455!5:localhost:42455iOQQ$157004338812XhwjX:localhost:8829$1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800iOQQ$157004338812XhwjX:localhost:8829$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800iOQQ$157004338812XhwjX:localhost:8829$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jQQQ$1570043388312YDkJu:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800j~QQQ$1570043388312YDkJu:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800j}QQQ$1570043388312YDkJu:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 8l D `8N]c!E@anon-20191002_181700-638:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAoAMILRIOBVF127.0.0.1Perl + Net::Async::HTTP/0.44mVM]c!E@anon-20191002_181700-637:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgoSOCIZPGICG127.0.0.1Perl + Net::Async::HTTP/0.44mqۃL]c!E@anon-20191002_181700-636:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SYnVqRiwwZVFsO1IzSHYKMDAyZnNpZ25hdHVyZSAGsSAyhrkFU-OZCtccNJK_X4gCUh51n0KT15bBg2OOGAoEGOZKYJYMN127.0.0.1Perl + Net::Async::HTTP/0.44mMHK]c!E@anon-20191002_181700-635:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwoSCDBHOHLOL127.0.0.1Perl + Net::Async::HTTP/0.44m3J]c!E@anon-20191002_181700-634:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAoGKOWEMDMJG127.0.0.1Perl + Net::Async::HTTP/0.44mI]c!E@anon-20191002_181700-633:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgoTRECTOOCOT127.0.0.1Perl + Net::Async::HTTP/0.44mǃH]c!E@anon-20191002_181700-632:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwoVIXCAXAJWE127.0.0.1Perl + Net::Async::HTTP/0.44mG]c!E@anon-20191002_181700-631:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQoKQCHQRUBXZ127.0.0.1Perl + Net::Async::HTTP/0.44mMF]c!E@anon-20191002_181700-630:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygoVFOQXGNRPE127.0.0.1Perl + Net::Async::HTTP/0.44m꺃E]c!E@anon-20191002_181700-628:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwoJKNWCQGMTX127.0.0.1Perl + Net::Async::HTTP/0.44m  yQQaI $1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3218}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043387311DGzYi:localhost:8800", {"sha256": "psdvdJrX0iILj82u2iCiAaSQyaniIbrFjEWCJexb0c0"}]], "type": "m.room.aliases", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"aliases": ["#test-20191002_181700-47:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570043388312YDkJu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043388079, "hashes": {"sha256": "rRMszM54QoEYnRCHjNrbF9c9ZXQMUd6xeVyUmZgZh3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x2S+GLrcqHWm+YieSFl89HFPywym4g49efVb0JwMTAhw0PXRCKjZunUqk0Eu45N/sJQag+eThyx/ohSOygZEBA"}}, "unsigned": {"age_ts": 1570043388079}}xxQQa $1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3217}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043386310bGMNl:localhost:8800", {"sha256": "Pd/YfY1y6p5qEeUhsQBujuEaH0O6cNwBJavbSdZDNHE"}]], "type": "m.room.history_visibility", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043387311DGzYi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043387204, "hashes": {"sha256": "ZqmYxzvut2db1OENbq3EIQ3dRCFpCsvLVQr1Y+O4kz8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gxpJTahpmBo8knn5hSiRijFrcX3M/BiTtfV8QULnWWwMTMVsHHnqqwLOhPICUfSPqxjJ2TfsE7Efr0a6cBaqCQ"}}, "unsigned": {"age_ts": 1570043387204}}gwQQaq $1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3216}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043385309imdbl:localhost:8800", {"sha256": "2dQG16pL97lNfSD0KAsAnlPiaEWYKB3aUPNu9817byE"}]], "type": "m.room.join_rules", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043386310bGMNl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043386180, "hashes": {"sha256": "OOo0NjvwR8ej7+MITfGEul+1f71PQs2qSYPW/ldq87g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kptB/FOt6XC2knYqOzxMhgxubn5qEzhU7Z5/kswcHNouJtv/q3xtHKFIZrveNevwzffRMW1n0wdKYf6IZsSsBg"}}, "unsigned": {"age_ts": 1570043386180}} SY/i5 e 1 a - ] ) Y % U + hM2b.^*Z&V"RNkP563$24:localhost:42455 53$23:localhost:42455 43$22:localhost:42455 33$21:localhost:42455 23$20:localhost:42455 13$19:localhost:42455 03$18:localhost:42455 /3$17:localhost:42455 .3$16:localhost:42455 '-Q$1570043468324DLhaB:localhost:8800 1,e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1+e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1*e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1)e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1(e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1'e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1&e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 1%e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1$e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1#e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1"e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1!e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1 e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg  3$15:localhost:42455 ~ 3$14:localhost:42455 } 3$13:localhost:42455 |' Q$1570043429322ZfcNc:localhost:8800 z' Q$1570043428321klTqJ:localhost:8800 y'Q$1570043428320JDiOD:localhost:8800 x'Q$1570043426319TNjnu:localhost:8800 w'Q$1570043425318lLfNb:localhost:8800 v1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI u1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs t1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE t1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA r1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY q1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck p1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg o1~e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw n1}e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 m1|e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM k1{e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA j1ze$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A i1ye$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 h1xe$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs g1we$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU f1ve$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 e1ue$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw c1te$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM b1se$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg a1re$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg `1qe$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI _1pe$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg ^1oe$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E ]1ne$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q [1me$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ Z1le$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA Y1ke$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk X1je$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo W'iQ$1570043392317hujur:localhost:8800 V'hQ$1570043391316OJaBO:localhost:8800 V&gO$157004338812XhwjX:localhost:8829 U'fQ$1570043388312YDkJu:localhost:8800 S'eQ$1570043387311DGzYi:localhost:8800 R'dQ$1570043386310bGMNl:localhost:8800 Q V8pH X 0  h @  x P (  j ~ e L   l : r@xF~LR X&8^,dK28'Q$1570043745460sJOiY:localhost:8800 'Q$1570043741458PZvre:localhost:8800 `1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk E'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 3$21:localhost:42455 3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B41e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ,1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ 01e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uox1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMx1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM I1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxws1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ 01e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoc1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY'1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQm1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E;1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 )1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY3$19:localhost:42455 3$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 ~'Q$1570043727446CGYaE:localhost:8800 }'Q$1570043726445lSnmj:localhost:8800 |'Q$1570043715443SSqOY:localhost:8800 s'Q$1570043713441WJPkP:localhost:8800 o'Q$1570043712440rfNzQ:localhost:8800 n'Q$1570043712439XdJFc:localhost:8800 m'Q$1570043711438bqOHL:localhost:8800 q'Q$1570043711438bqOHL:localhost:8800 l'Q$1570043710437aFoBB:localhost:8800 r'Q$1570043710437aFoBB:localhost:8800 k'Q$1570043668432TfiHj:localhost:8800 O'Q$1570043656428rZaqi:localhost:8800 B'Q$1570043655427tEtWD:localhost:8800 A'Q$1570043654426seixP:localhost:8800 @'Q$1570043653425AhyPB:localhost:8800 ?'Q$1570043652424mkkFn:localhost:8800 C'Q$1570043652424mkkFn:localhost:8800 >'Q$1570043648422SglHQ:localhost:8800 ;'Q$1570043647421dmTZW:localhost:8800 :'Q$1570043646420mPrhj:localhost:8800 9'Q$1570043646419zIOAX:localhost:8800 <n1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU \  a}31a# $12:localhost:42455!5:localhost:42455{"outlier": true, "stream_ordering": 3222}{"origin_server_ts": 1570043391661, "prev_events": [["$11:localhost:42455", {"sha256": "PKsvTVXCsnU7Ryw0ncvj/FBj2+M7bAEWS53cBRY53T8"}]], "auth_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}], ["$11:localhost:42455", {"sha256": "PKsvTVXCsnU7Ryw0ncvj/FBj2+M7bAEWS53cBRY53T8"}]], "event_id": "$12:localhost:42455", "content": {"join_rule": "public"}, "hashes": {"sha256": "2QJWoqeK52ueOPdooeKJGovDSH2fxYl3+qxD6eaj9vI"}, "sender": "@__ANON__-10:localhost:42455", "room_id": "!5:localhost:42455", "type": "m.room.join_rules", "depth": 2, "state_key": "", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "b5nrACn6oM5eaUeSWaiGNn5V6a2VHKkla5ugvffGvNZKmT2JldNml/tyC1vIpLC4BRM0VQUDpTNrqfDtQceJDA"}}, "unsigned": {}}$|31a) $11:localhost:42455!5:localhost:42455{"outlier": true, "stream_ordering": 3221}{"hashes": {"sha256": "PKsvTVXCsnU7Ryw0ncvj/FBj2+M7bAEWS53cBRY53T8"}, "sender": "@__ANON__-10:localhost:42455", "type": "m.room.member", "room_id": "!5:localhost:42455", "origin": "localhost:42455", "depth": 1, "state_key": "@__ANON__-10:localhost:42455", "origin_server_ts": 1570043391660, "prev_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}]], "event_id": "$11:localhost:42455", "auth_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}]], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "uWFTGMHk5MsGPZ1/SmEgXkCVThb+p7gXr4AZCey7Ay3jHQ5t7Nm8T5i/bMk93AbCAvR6zA3ovCoa5r+6mKjvBQ"}}, "unsigned": {}}y{31aS $10:localhost:42455!5:localhost:42455{"outlier": true, "stream_ordering": 3220}{"content": {"creator": "@__ANON__-10:localhost:42455"}, "event_id": "$10:localhost:42455", "auth_events": [], "prev_events": [], "origin_server_ts": 1570043391659, "origin": "localhost:42455", "state_key": "", "depth": 0, "type": "m.room.create", "room_id": "!5:localhost:42455", "sender": "@__ANON__-10:localhost:42455", "hashes": {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}, "signatures": {"localhost:42455": {"ed25519:1": "NiN5hPiI5V8/u84X/3Ytm9jZhjev5lGCVihAlRVptw0hBw37P8DI+3C+Lu8qXKu7fm6dxHTjZ2FkitJWGdAaCQ"}}, "unsigned": {}}bzOQ1 $157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 3219}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043386310bGMNl:localhost:8800", {"sha256": "Pd/YfY1y6p5qEeUhsQBujuEaH0O6cNwBJavbSdZDNHE"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-629", "membership": "join"}, "depth": 8, "event_id": "$157004338812XhwjX:localhost:8829", "hashes": {"sha256": "Pa1dRlN5iONVxYkaMKFp1CfURCJBNJc0Zi4zP9uQ0Bw"}, "origin": "localhost:8829", "origin_server_ts": 1570043388806, "prev_events": [["$1570043388312YDkJu:localhost:8800", {"sha256": "0a3Vvfk3ppfFhnyDi/p/7laQjjjDHjrCqT3+0KBVPg0"}]], "prev_state": [], "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-629:localhost:8829", "state_key": "@anon-20191002_181700-629:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "It8SXIGBIYfCn9GEK9/J/S5oNQ9wKsJtDyKlCyM9cPgRcEquYQiRqllt/qSZiRFXMXTWBNaUAXAoSKHqt1pADg"}, "localhost:8829": {"ed25519:a_UxIG": "2wtKVLXHMbkI634yF/sVREIDPfa1IYdEBvby1MWvyKgGSf7J2AGJUP9qf3/bwg2wGbywvgZOGF5gWvx3BTjLAg"}}, "unsigned": {"age": 87}} i g 4 h5i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQoU1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywoT1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6IwoS1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygoR1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9IWFQza2lUTTFQV0FCSkcKMDAyZnNpZ25hdHVyZSDH8GKBiG2tmKZs-dzNXlz8Ww_sRhs7tCh0J4VtNcAN3woQ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAoP1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQoO1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwoN1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJiQWdeRX5ENjNkbTZSYVkKMDAyZnNpZ25hdHVyZSA8zIpRzRmJlGIqkTBx6GA19slBMTUSU8V8B5mBBrAhIAoM1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtWczhVYXYqK2kxZEo5VUMKMDAyZnNpZ25hdHVyZSAyxMn--zXijwO_yDpNAKZp3Nowd1ex2CJt9oF3jnAAlQoL1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxQOkhhbnIqNG1BZnlZb0QKMDAyZnNpZ25hdHVyZSCd7FTUX1n-4f2mMjlkYjWuX6DbpozOJbgiroD47tErvwoK1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRIQ1Z3XztVd0RTK2R4K3QKMDAyZnNpZ25hdHVyZSBr6Tw_uDl-saWiJHMt1fEznSF3WHYr5dOTbcQ5XctL7woJ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpreUxsRlNPfmpWV0R4emwKMDAyZnNpZ25hdHVyZSAFh5ccDMSVr8aWYsFwKsNl55tnlLMnNvdhEFpRcQnZOQoI  !veQay$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3229}{"auth_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo"], "prev_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo"], "type": "m.room.member", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-633", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-633:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043396155, "hashes": {"sha256": "EQtkHm81Kwk0OP5a3sBLna06wCN5tqkrp6QbMU4AOGY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f575HDHbj4QbDLhi2YOGDDB+mEg4CQyNbz8YYvtFh5GWiqI+sx7OhwGVL8LSgyN8p8lEamVhu44mcwZFsV82BQ"}}, "unsigned": {"age_ts": 1570043396155}}ieQa_$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3228}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-633:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043395202, "hashes": {"sha256": "ihFFXdyABuEVWel327apMafErZk/KzErEUNWDDwU0ig"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5gMMQpS1FD7R0Ww/a5RnRMUwqVSsH7qVfxibzWj/XY8RVK1B/hXVCkLysL4A4JRmSLsOYE/HzwkOdr2y0NACAA"}}, "unsigned": {"age_ts": 1570043395202}}bQ1c $1570043392317hujur:localhost:8800!5:localhost:42455{"token_id": 612, "txn_id": "595", "stream_ordering": 3227}{"auth_events": [["$10:localhost:42455", {"sha256": "+2dTKIjQzN7XvVzga9O2p6G2SDSXCvPpqFsf3D2W2Dk"}], ["$1570043391316OJaBO:localhost:8800", {"sha256": "E6pzA5p7dfvnJDsITIXXFnrJcm9Npm8lEPqANRkvOE4"}]], "prev_events": [["$1570043391316OJaBO:localhost:8800", {"sha256": "E6pzA5p7dfvnJDsITIXXFnrJcm9Npm8lEPqANRkvOE4"}]], "type": "m.room.message", "room_id": "!5:localhost:42455", "sender": "@anon-20191002_181700-632:localhost:8800", "content": {"body": "Hello", "msgtype": "m.text"}, "depth": 4, "prev_state": [], "event_id": "$1570043392317hujur:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043392598, "hashes": {"sha256": "Fk56XyNwosqI78lRzlxSRDsLwTdgAuO16mt6AysBN7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+/iAg+UMDjvGMzm1O3vYRlZR9t4dgE8BpTPqb4ptGoPthn25fYxQP0j1whNs1pHex4GEdBEUKRY6hn0BvVe4Aw"}}, "unsigned": {"age_ts": 1570043392598}}~Q1?u $1570043391316OJaBO:localhost:8800!5:localhost:42455{"stream_ordering": 3226}{"content": {"membership": "join", "displayname": "anon-20191002_181700-632", "avatar_url": null}, "state_key": "@anon-20191002_181700-632:localhost:8800", "depth": 3, "type": "m.room.member", "auth_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}], ["$12:localhost:42455", {"sha256": "2QJWoqeK52ueOPdooeKJGovDSH2fxYl3+qxD6eaj9vI"}]], "room_id": "!5:localhost:42455", "prev_events": [["$12:localhost:42455", {"sha256": "2QJWoqeK52ueOPdooeKJGovDSH2fxYl3+qxD6eaj9vI"}]], "sender": "@anon-20191002_181700-632:localhost:8800", "prev_state": [], "event_id": "$1570043391316OJaBO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043391677, "hashes": {"sha256": "jkc31eyl4DbswuEeVT7gVagjCqKUzLwyI4M7gKuq1lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vjl9Quz8fctosaS+h0UXAQTmyQkHfID1JBJiYepTwZmf8Bw3D5GrnKELYvo8iQvU64XFN3FVZjtETWTKFX2yBg"}}, "unsigned": {"age_ts": 1570043391677}} 05l^ k z ) d " M \ i v'4AN]y(5P]Q@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800;P]Q@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800:P]Q@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:88009P]Q@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:88008P]Q@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:88007P]Q@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800P]Q@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800P]Q@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800P]Q@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800N[Q@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800#P]Q@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:88006P]Q@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:88005N[Q@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800(P]Q@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:88004P]Q@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:88003P]Q@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:88002P]Q@anon-20191002_181700-702:localhost:8800!GsjDgpaxdwYfnefiWO:localhost:88001P]Q@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:88000P]Q@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800/P]Q@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800.P]Q@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800-P]Q@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800,N[Q@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800'P]Q@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800*P]Q@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800(P]Q@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800&P]Q@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800$P]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800"P]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800 N[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800%P]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800P]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800A]3@anon-20191002_181700-677:localhost:8800!13:localhost:42455A]3@anon-20191002_181700-676:localhost:8800!12:localhost:42455P]Q@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:8800A]3@anon-20191002_181700-674:localhost:8800!11:localhost:42455A]3@anon-20191002_181700-673:localhost:8800!11:localhost:42455A]3@anon-20191002_181700-672:localhost:8800!10:localhost:42455@]1@anon-20191002_181700-671:localhost:8800!9:localhost:42455P]Q@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 N[Q@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800&P]Q@anon-20191002_181700-669:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 P]Q@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800P]Q@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800 P]Q@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800P]Q@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800P]Q@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800P]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:8800 !rT=y K  ? e  | E/cc88me&eQ'E$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455joinm%eQ? $sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibilitye$eQ/ $nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rulesg#eQ3 $r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levelsQQ']$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800joinWQQ' $1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.createcQQ? $1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility[QQ/ $1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules]~QQ3 $1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels "eQ']$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800joina!eQ' $7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.createe eQ/ $egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules eQ']$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800joineQ'E$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455joinaeQ' $H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800m.room.creategeQ3 $t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levelsmeQ? $xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibilityeeQ/ $PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules eQ']$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800joineQ'E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455joinaeQ' $BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800m.room.creategeQ3 $JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levelsmeQ? $mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibilitys Q1']$1570043391316OJaBO:localhost:8800!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800joinX 31'E$11:localhost:42455!5:localhost:42455m.room.member@__ANON__-10:localhost:42455join8 31' $10:localhost:42455!5:localhost:42455m.room.create< 31/ $12:localhost:42455!5:localhost:42455m.room.join_rulesOQ']$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829joinfQQ))$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800cQQ? $1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility[QQ/ $1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules`QQ9 $1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias]QQ3 $1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels a g   ?_7W/ ? `8 G_ Y 2 w Oo g  7 k '/O' D oG } UpH .  Ww 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800i'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800g'Q!ubmTdQFAhrhZkGULDx:localhost:8800L'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800Z'Q!vBvlJEXUSQKUYmsKcO:localhost:8800Y'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800c'Q!qSUSLLWjDxcGibUZdT:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800w'Q!utJsNQubeIXvcTKGpx:localhost:8800v'Q!vyCFfUTJKYJSDadFhT:localhost:8800m'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800`'Q!uSBqTezaFcMnlowsEf:localhost:8800_'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800-&Q!rZWweGEChkxxtzyfDB:localhost:8800$&Q!rZWweGEChkxxtzyfDB:localhost:8800#'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800>'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800e'Q!sHRHoXzYrrPSlWBkoh:localhost:8800d'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!vZGjXEXQoCaoUXnkCa:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800}'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800}'Q!wAyboOFgsOPwkmgMAI:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800l&Q!vVmSdclwPIqYDbnmPn:localhost:8800k'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800!'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 &Q!uJtKGXTNdEnCPNOGDx:localhost:8800"'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sBcwyPoXKgnSGVTjNR:localhost:8800a'Q!sBcwyPoXKgnSGVTjNR:localhost:8800`'Q!qtelAHlSkrqEFmlCqS:localhost:8800K'Q!qtelAHlSkrqEFmlCqS:localhost:8800J'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800s'Q!vRmMcoJDeCupADwqac:localhost:8800r'Q!vRmMcoJDeCupADwqac:localhost:8800q'Q!sBcwyPoXKgnSGVTjNR:localhost:8800b'Q!ubmTdQFAhrhZkGULDx:localhost:8800K'Q!rpVYLTJGcFNdGzFzXj:localhost:8800J'Q!rpVYLTJGcFNdGzFzXj:localhost:8800I'Q!rpVYLTJGcFNdGzFzXj:localhost:8800H'Q!uqIEMXzdeNeXdJmuwh:localhost:88002'Q!uqIEMXzdeNeXdJmuwh:localhost:88001'Q!uqIEMXzdeNeXdJmuwh:localhost:88000  }eQ33$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3233}{"hashes": {"sha256": "F9mu/uIDnpVfPjHWFTCDTKpb7zwbHJacYNx8iR5NFH8"}, "sender": "@__ANON__-11:localhost:42455", "type": "m.room.member", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-11:localhost:42455", "depth": 6, "origin_server_ts": 1570043399786, "prev_events": ["$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q"], "auth_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ"], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "b2Et+Gz25nmt89o/6LBhxcDF/Htr4cyroLle7x+mpb5BuEVnfONjjp6SwsWY0ZgtTGvJcyDuaJbsXsmw030oCw"}}, "unsigned": {}}eQa$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3232}{"auth_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "prev_events": ["$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ"], "type": "m.room.history_visibility", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043398537, "hashes": {"sha256": "FzOfLWthsxfANaTGWfg1sxy8+jYz57tTs4PDentNg0A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EpOiorib2lmBhJABrPTTHif1ghjcLnPjHDXX4l7YHE3GEZpW77bDYcJRWBHf0uYpyQsrV47GFML+W0C5YqTwBA"}}, "unsigned": {"age_ts": 1570043398537}}teQau$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3231}{"auth_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "prev_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA"], "type": "m.room.join_rules", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043397794, "hashes": {"sha256": "8Td1e+Vfx5QnkWQC/uFsn7UsH4r2NaPZ+uAn7kmi18I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XyMKCR3OoWCTsBxI+cRMCjqDHLBTSkfPr/F8cHVQH875VcW1MAav3JW8CtTsEVn+MjJPhNpb+rRbHJZeJkK9DA"}}, "unsigned": {"age_ts": 1570043397794}}keQac$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3230}{"auth_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "prev_events": ["$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "type": "m.room.power_levels", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"users": {"@anon-20191002_181700-633:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043396881, "hashes": {"sha256": "OSEl5p+AO3m8JbHtCDh3OBaleO6C1hTbmSUp8pwyMg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eAR23aDqvKMSzCxf6H5nGjoZhMWqdVUJZbFTCQlD+3ifz0B+eyLAhV9Ik5jAeEQBE+NCkCxNRPnvmX0ERE3WDA"}}, "unsigned": {"age_ts": 1570043396881}} X8T)}R' { P % y N<e:>g # w L ! mBk@iFoD u J  s H qc8*Q!QWLJZmJqjWZjVOjdYF:localhost:8800%*Q!QWLJZmJqjWZjVOjdYF:localhost:8800$*Q!QWLJZmJqjWZjVOjdYF:localhost:8800#*Q!QWLJZmJqjWZjVOjdYF:localhost:8800"*Q!QWLJZmJqjWZjVOjdYF:localhost:8800!*Q!QWLJZmJqjWZjVOjdYF:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800  *Q!PgNDjhhIBAXKryuGKy:localhost:8800  *Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ *Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ *Q!PgNDjhhIBAXKryuGKy:localhost:8800 } *Q!PgNDjhhIBAXKryuGKy:localhost:8800 | *Q!PgNDjhhIBAXKryuGKy:localhost:8800 { *Q!PgNDjhhIBAXKryuGKy:localhost:8800 z *Q!PgNDjhhIBAXKryuGKy:localhost:8800 y *Q!PgNDjhhIBAXKryuGKy:localhost:8800 x *Q!PgNDjhhIBAXKryuGKy:localhost:8800 w *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!QMrkSPlQDGborAyWtQ:localhost:8800T*Q!QMrkSPlQDGborAyWtQ:localhost:8800S*Q!QMrkSPlQDGborAyWtQ:localhost:8800R*Q!QMrkSPlQDGborAyWtQ:localhost:8800Q~*Q!QMrkSPlQDGborAyWtQ:localhost:8800P}*Q!QMrkSPlQDGborAyWtQ:localhost:8800O|*Q!QMrkSPlQDGborAyWtQ:localhost:8800N{*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PHkVrXAyfGkFtzSagu:localhost:8800  A*Q!PHkVrXAyfGkFtzSagu:localhost:8800  @*Q!PHkVrXAyfGkFtzSagu:localhost:8800  ?*Q!PHkVrXAyfGkFtzSagu:localhost:8800  >*Q!PHkVrXAyfGkFtzSagu:localhost:8800 =*Q!PHkVrXAyfGkFtzSagu:localhost:8800 <*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800 JS! Ii7 v1 ] +Y 'N { = % puC  |  W Koc Q >    j1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc ]1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAR1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g 41e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus%1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc"1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI'1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkm1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY|1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg61e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8l1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIu1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90T1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAf1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw 1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQr1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA ^1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQk1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMy1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg c1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwy1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 L1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY G1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc .0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g (1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeId1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y}1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0b1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY J1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c?1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM d1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro C1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ-1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io JS! Ii7 v1 ] +Y 'N { = % puC  |  W Koc Q >    j1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc [1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAR1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g 41e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus%1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc"1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI'1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkm1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY|1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg61e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8l1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIu1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90T1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAf1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw 1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQr1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA ^1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQk1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMy1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg c1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwy1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 L1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY G1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc .0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g (1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeId1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Yw1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0\1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY J1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c?1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM d1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro C1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ-1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io h- 7 V fv0.M8 Q'Q  ]$1570043425318lLfNb:localhost:8800m.room.create!uPxXJHJyFQwvpQLZNs:localhost:8800mrmsB@anon-20191002_181700-637:localhost:8800 7e'Q ]$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIm.room.member!UluPYLGXtInKDTjRzp:localhost:8800mkml|@anon-20191002_181700-636:localhost:8800!6e)Q ]$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGsm.room.message!UluPYLGXtInKDTjRzp:localhost:8800md md@anon-20191002_181700-636:localhost:88005e'Q E$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEm.room.member!UluPYLGXtInKDTjRzp:localhost:8800m`Mm`@__ANON__-14:localhost:42455,4e?Q ]$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAm.room.history_visibility!UluPYLGXtInKDTjRzp:localhost:8800mYm[@anon-20191002_181700-636:localhost:8800$3e/Q ]$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYm.room.join_rules!UluPYLGXtInKDTjRzp:localhost:8800mWFmX2@anon-20191002_181700-636:localhost:8800&2e3Q ]$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ckm.room.power_levels!UluPYLGXtInKDTjRzp:localhost:8800mSmT@anon-20191002_181700-636:localhost:8800 1e'Q ]$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgm.room.member!UluPYLGXtInKDTjRzp:localhost:8800mQmQ@anon-20191002_181700-636:localhost:88000 e'Q  ]$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnwm.room.create!UluPYLGXtInKDTjRzp:localhost:8800mMmN6@anon-20191002_181700-636:localhost:8800/e'Q E$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0m.room.member!QkkdnzvdrjHaFGkzMt:localhost:8800mGmH$@__ANON__-13:localhost:42455,.e?Q ]$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMm.room.history_visibility!QkkdnzvdrjHaFGkzMt:localhost:8800mAmC@anon-20191002_181700-635:localhost:8800$-e/Q ]$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAm.room.join_rules!QkkdnzvdrjHaFGkzMt:localhost:8800m=m?b@anon-20191002_181700-635:localhost:8800&,e3Q ]$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7Am.room.power_levels!QkkdnzvdrjHaFGkzMt:localhost:8800m:m;@anon-20191002_181700-635:localhost:8800 +e'Q ]$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8m.room.member!QkkdnzvdrjHaFGkzMt:localhost:8800m7-m8)@anon-20191002_181700-635:localhost:8800* e'Q  ]$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsm.room.create!QkkdnzvdrjHaFGkzMt:localhost:8800m4.m4@anon-20191002_181700-635:localhost:8800)e)Q E$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iUm.room.message!DuqHkpTfWCUblSrxQj:localhost:8800m,\m/@__ANON__-12:localhost:42455(e'Q E$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0m.room.member!DuqHkpTfWCUblSrxQj:localhost:8800m*m+2@__ANON__-12:localhost:42455,'e?Q ]$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwm.room.history_visibility!DuqHkpTfWCUblSrxQj:localhost:8800m%m'O@anon-20191002_181700-634:localhost:8800$&e/Q ]$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMm.room.join_rules!DuqHkpTfWCUblSrxQj:localhost:8800m!m"@anon-20191002_181700-634:localhost:8800&%e3Q ]$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgm.room.power_levels!DuqHkpTfWCUblSrxQj:localhost:8800mm@anon-20191002_181700-634:localhost:8800 $e'Q ]$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgm.room.member!DuqHkpTfWCUblSrxQj:localhost:8800mmj@anon-20191002_181700-634:localhost:8800# e'Q  ]$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIm.room.create!DuqHkpTfWCUblSrxQj:localhost:8800mm;@anon-20191002_181700-634:localhost:8800"e)Q E$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgm.room.message!NanhNmCnVVpmZRJrTF:localhost:8800mRm@__ANON__-11:localhost:42455!e'Q E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-Em.room.member!NanhNmCnVVpmZRJrTF:localhost:8800mjm@__ANON__-11:localhost:42455 ! * T ` r +0TP[$#Q']Q w!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800$1570043426319TNjnu:localhost:8800Y"Q' Q v!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800 !Q']e u!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI Q'Ee t!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEQ'Ee s!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455$q7WeKSNrzeGQG1zaJk5DGOIyi7kAhiBD6uOyRHU8vHgoQ? e r!UluPYLGXtInKDTjRzp:localhost:8800m.room.history_visibility$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAgQ/ e q!UluPYLGXtInKDTjRzp:localhost:8800m.room.join_rules$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYiQ3 e p!UluPYLGXtInKDTjRzp:localhost:8800m.room.power_levels$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck Q']e o!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgcQ' e n!UluPYLGXtInKDTjRzp:localhost:8800m.room.create$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnwQ'Ee m!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0Q'Ee l!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455$m62bY8wHsN4HmhHXaoGhZbLr16cbWdFu8pBvx7U6Jd0oQ? e k!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibility$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMgQ/ e j!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rules$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAiQ3 e i!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A Q']e h!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8cQ' e g!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsgQ/ e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM Q']e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgQ'Ee f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0cQ' e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIiQ3 e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg Q'Ee e!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 Q'Ee d!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$dn1y4CrHc3KnuswK2MfWm-y1ZzhEbYUpEHOg1xa1Tfco Q? e c!DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibility$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwg Q/ e b!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMi Q3 e a!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg Q']e `!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgcQ' e _!DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIgQ/ e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ Q']e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3GtkQ'Ee ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-EcQ' e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo  y k eQac$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3237}{"auth_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "prev_events": ["$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "type": "m.room.power_levels", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"users": {"@anon-20191002_181700-634:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043403979, "hashes": {"sha256": "9Hu2FnrZv1RlApdJHLZYL41IZJXBw6wavTgSwZz/4lY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rs1Lylw8uy/bE+XuPkfv/epLCpuF8/nngoRzbg5qR9mWQWkiZNOeD4rbwPGQkH5lkoxJoek3LvqwVzlpJB6SDw"}}, "unsigned": {"age_ts": 1570043403979}}veQay$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3236}{"auth_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI"], "prev_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI"], "type": "m.room.member", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-634", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-634:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043403238, "hashes": {"sha256": "W/l5Ia8ADj5EK5A1TGGwHOQf3pG4TgvffsFiw29+y1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UYDOPf3JEA3D4NJuh/ApyN3akAijjdfk1al5a4T5earT5pSeEWn4ZX32iq+VmQ450FBNZQUVTFmef2oXwdjVCw"}}, "unsigned": {"age_ts": 1570043403238}}ieQa_$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3235}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-634:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043402411, "hashes": {"sha256": "0xZ3XVGpFC/R3PwBvBYsqxtDv6OZFlvqTyti5pRx9Ls"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "++v3OTtUlfwGoKKzblSfnjjaH6pCyThHIPKvNLQUN5A8N4KovM1Flcf1qDdexxIcitC4LQl6xSj39Dfmvwd1BQ"}}, "unsigned": {"age_ts": 1570043402411}}eQc$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:8800{"outlier": false, "stream_ordering": 3234}{"content": {"body": "Hello"}, "auth_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ", "$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E"], "prev_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E"], "origin_server_ts": 1570043400274, "depth": 7, "origin": "localhost:42455", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-11:localhost:42455", "hashes": {"sha256": "yqJSDlfzFG9nv2cqaRhWpoxHLR3rXwcz0Jj6Uqq6mr4"}, "signatures": {"localhost:42455": {"ed25519:1": "ZNcGzuISJmPy824uYR4gaXJDIY4l4qRmt5kI/EIUx6Sdr3Gc5ZUvVJDiyigGB34e6XQSaJ2otr5saYeAjmsSAg"}}, "unsigned": {}} CuzGe0`- ] ( X % U P  Q L|IL|I}JuEuB 4]@anon-20191002_181700-698:localhost:8800m4]@anon-20191002_181700-665:localhost:8800m2]@anon-20191002_181700-665:localhost:8800a4]@anon-20191002_181700-664:localhost:8800m2]@anon-20191002_181700-664:localhost:8800a4]@anon-20191002_181700-663:localhost:8800m2]@anon-20191002_181700-663:localhost:8800a4]@anon-20191002_181700-662:localhost:8800m2]@anon-20191002_181700-662:localhost:8800a2]@anon-20191002_181700-698:localhost:8800a2]@anon-20191002_181700-697:localhost:8800a2]@anon-20191002_181700-696:localhost:8800a2]@anon-20191002_181700-695:localhost:8800a2]@anon-20191002_181700-693:localhost:8800a2]@anon-20191002_181700-692:localhost:8800a4]@anon-20191002_181700-691:localhost:8800m2]@anon-20191002_181700-691:localhost:8800a4]@anon-20191002_181700-690:localhost:8800m2]@anon-20191002_181700-690:localhost:8800a2[@anon-20191002_181700-68:localhost:8800m{0[@anon-20191002_181700-68:localhost:8800az2]@anon-20191002_181700-689:localhost:8800a2]@anon-20191002_181700-688:localhost:8800a2]@anon-20191002_181700-687:localhost:8800a2]@anon-20191002_181700-686:localhost:8800a4]@anon-20191002_181700-685:localhost:8800m2]@anon-20191002_181700-685:localhost:8800a4]@anon-20191002_181700-684:localhost:8800m2]@anon-20191002_181700-684:localhost:8800a4]@anon-20191002_181700-683:localhost:8800m2]@anon-20191002_181700-683:localhost:8800a4]@anon-20191002_181700-682:localhost:8800m2]@anon-20191002_181700-682:localhost:8800a4]@anon-20191002_181700-681:localhost:8800m2]@anon-20191002_181700-681:localhost:8800a4]@anon-20191002_181700-680:localhost:8800m2]@anon-20191002_181700-680:localhost:8800a2[@anon-20191002_181700-67:localhost:8800my0[@anon-20191002_181700-67:localhost:8800ax4]@anon-20191002_181700-679:localhost:8800m2]@anon-20191002_181700-679:localhost:8800a4]@anon-20191002_181700-678:localhost:8800m2]@anon-20191002_181700-678:localhost:8800a4]@anon-20191002_181700-677:localhost:8800m2]@anon-20191002_181700-677:localhost:8800a4]@anon-20191002_181700-676:localhost:8800m2]@anon-20191002_181700-676:localhost:8800a4]@anon-20191002_181700-675:localhost:8800m2]@anon-20191002_181700-675:localhost:8800a4]@anon-20191002_181700-674:localhost:8800m2]@anon-20191002_181700-674:localhost:8800a4]@anon-20191002_181700-673:localhost:8800m2]@anon-20191002_181700-673:localhost:8800a4]@anon-20191002_181700-672:localhost:8800m2]@anon-20191002_181700-672:localhost:8800a4]@anon-20191002_181700-671:localhost:8800m2]@anon-20191002_181700-671:localhost:8800a4]@anon-20191002_181700-670:localhost:8800m2]@anon-20191002_181700-670:localhost:8800a4]@anon-20191002_181700-669:localhost:8800m2]@anon-20191002_181700-669:localhost:8800a4]@anon-20191002_181700-668:localhost:8800m2]@anon-20191002_181700-668:localhost:8800a4]@anon-20191002_181700-667:localhost:8800m2]@anon-20191002_181700-667:localhost:8800a4]@anon-20191002_181700-666:localhost:8800m2]@anon-20191002_181700-666:localhost:8800a M k D  } Vc /  h @  y Q ) uM%^6zqI!Z2 jBc<R*;;'Q!pTvdDtkgovsIdAdxCm:loca'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800p'Q!tcYctHPiaKzsKgrXlU:localhost:88006'Q!taANXnGBZntAreRurn:localhost:88005'Q!lgejtcwlywOoIXwEgy:localhost:8800W'Q!nhbUIcIbhuXkRqfeDa:localhost:8800G'Q!sJnuQYOyruhUpXDsLY:localhost:8800H'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!rwUuVBrftGHDBOlEZm:localhost:8800T'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800A'Q!raCWVWQGnXbmkexpCN:localhost:8800@&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800 ('Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!qzrZzAieCgGSbpKOQR:localhost:8800&Q!qxqNYKdtgvOQdhmgsj:localhost:8800`&Q!qxqNYKdtgvOQdhmgsj:localhost:8800_&Q!quaZwrGnzbNWhwAOYB:localhost:8800V'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800['Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800x&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 &Q!oXKJArsPmtgaYANBrg:localhost:88003'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800K&Q!nteAxExBGJfaGIpuCx:localhost:8800b'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800B'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&Q!msMfSdLIAvklSSAnci:localhost:8800;'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800M'Q!mTlCLZQCmfDuQsJxxp:localhost:8800L'Q!mTlCLZQCmfDuQsJxxp:localhost:8800K'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800z&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800N&Q!lAGTcYIuMBXsVRGCOe:localhost:8800u&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800?'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800D'Q!kjueCKHmYaYefEEpQY:localhost:8800C'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800  ~ eQs$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU!DuqHkpTfWCUblSrxQj:localhost:8800{"outlier": false, "redacted": true, "stream_ordering": 3241}{"auth_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM", "$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0"], "content": {}, "origin_server_ts": 1570043407452, "prev_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0"], "type": "m.room.message", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "origin": "localhost:42455", "depth": 7, "hashes": {"sha256": "cfgyWdXybmI3tterSlX+lMD3HJcRaA382L7hKOozvoU"}, "sender": "@__ANON__-12:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "D7GVeLkGTkD8rxA8o21pmSQMRYgVwYlvNnFP0IPM8tH4JstctwQb154Rku9iU0EvdJg06qDp9srU2l5p3MffCg"}}, "unsigned": {}}} eQ33$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3240}{"sender": "@__ANON__-12:localhost:42455", "hashes": {"sha256": "jwccbYjR3y0/b5iyt14Yg3Q3UdwRFiWacjQjOMJuAc0"}, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-12:localhost:42455", "type": "m.room.member", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "prev_events": ["$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw"], "origin_server_ts": 1570043407051, "content": {"membership": "join"}, "auth_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM"], "signatures": {"localhost:42455": {"ed25519:1": "OrOGmfhg5z0+wQc9m3KHg33B0FFMgYBCsmRDFSPSeURIqLjjWXCtS/HOlUe7tSs1ZM1dwamyJPtQSU1c7GDPCA"}}, "unsigned": {}} eQa$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3239}{"auth_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "prev_events": ["$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM"], "type": "m.room.history_visibility", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043405762, "hashes": {"sha256": "/41e7UuaM/JOhB2IpyPyuABGpbP0sGC7S0Z0XiDnJAI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MwsBSXbkis60RLUrDwy7cjzH+l6PumDYb6vwrX3Z9ebxyq2UF7y9oDY/grMJH/LI6sNFG/gfxbHzK4vrgSTxDQ"}}, "unsigned": {"age_ts": 1570043405762}}t eQau$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3238}{"auth_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "prev_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg"], "type": "m.room.join_rules", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043404697, "hashes": {"sha256": "J+ykbjpGnFWspClXNqAHYn4/C4tYx2J8ZNge8LHcvvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tu78whCKfi9nHsrPrlBrDQEyXHhF4AEc8pLiw9cyvdTwJrhp0jma00YVmtCNGO8h6duErS9vdqylYoNsTlBdBg"}}, "unsigned": {"age_ts": 1570043404697}} =V$\*2  V $ P  8d vp D> PvD j|J | J $ 2V ^ ,p> *\$1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg%1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w'1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w&1e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk21e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk11e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk01e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0f1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM*1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0 G1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgn1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgm1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgl1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8L1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8K1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino81e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w(1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8J1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQO *1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUB1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUA1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU@1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQN1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAB1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM g1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM f1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM e1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YI1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YH1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YG1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino:1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino9 1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg# 5j8p> v D b0 | J  hn< P  V $ \6 *1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc"1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyge1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygd1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygc1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQog1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQof1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQoe1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0f1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIJ1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRII1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIH1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsc1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk 1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk 1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis31e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis21e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis11e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM+1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM*1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM)1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ ,1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ +1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIQ1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIP1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIO1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIN1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA g1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA f1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA e1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isP1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isO1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isN1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM /1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM .1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM - } { y w u sqomkigew j=QQQ$1570043428320JDiOD:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j<QQQ$1570043428320JDiOD:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j;QQQ$1570043426319TNjnu:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800~:eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~9eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~8eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~7eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800~6eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~5eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~4eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~3eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~2eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~1eeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~0eeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~/eeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~.eeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~-eeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~,eeQ$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~+eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800~*eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~)eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800~(eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800~'eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~&eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800~%eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800~$eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~#eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800~"eeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800~!eeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~ eeQ$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800 |N J S {   B[!$F7Q? ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74p6Q? e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74h5Q/ e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rules$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsj4Q3 e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 3Q']e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sd2Q' e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.create$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgg1Q'E3 !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455f0Q? Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility$1570043429322ZfcNc:localhost:8800^/Q/ Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800`.Q3 Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800-Q']Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800$1570043426319TNjnu:localhost:8800Z,Q' Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:88008+Q']ee !UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg*Q'Ee !UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEp)Q? e !UluPYLGXtInKDTjRzp:localhost:8800m.room.history_visibility$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAh(Q/ e !UluPYLGXtInKDTjRzp:localhost:8800m.room.join_rules$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYj'Q3 e !UluPYLGXtInKDTjRzp:localhost:8800m.room.power_levels$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck &Q']e !UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgd%Q' e !UluPYLGXtInKDTjRzp:localhost:8800m.room.create$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw$Q'Ee !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0p#Q? e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibility$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMh"Q/ e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rules$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAj!Q3 e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A Q']e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8dQ' e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsQ/ ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM8Q']ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg,Q'Eee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0Q' ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIQ3 ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgQ'Ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 JDT  H P  " V $ h6 \ * 8bn< tBNp>Z(0zj1e1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog=1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog<1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk 1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg[1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9ZgZ1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog>1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo 1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo 1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo 1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s|1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E 1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E 1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E 1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAZ1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo 1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo 1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA\1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA[1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8"1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8 1e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sO1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sN1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sM1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA 1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA 1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUq1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUp1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAV1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAU1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCATd1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM /RM H C > C \ Fsnid _ZUTQe !sAWFpvSUPExZLVcPEd:localhost:8800$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YTQe !sAWFpvSUPExZLVcPEd:localhost:8800$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQoTQe !sAWFpvSUPExZLVcPEd:localhost:8800$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUTQe !sAWFpvSUPExZLVcPEd:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4TQe !sAWFpvSUPExZLVcPEd:localhost:8800$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cTQe !YpcmaMNMzjvtgYtrli:localhost:8800$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoITQe !YpcmaMNMzjvtgYtrli:localhost:8800$dJvP2Cld7bj1OfVg74NWAEQzJAteNjsRLyKHcBGFZagT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$tvWfYhl0bbZ5HfUUD_KgpB4bJC2wQHNAZllEnIRwAdgT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHoT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70TQe !YpcmaMNMzjvtgYtrli:localhost:8800$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4TQe !PzoqoNRxeEEqiLyVSV:localhost:8800$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8TQe !PzoqoNRxeEEqiLyVSV:localhost:8800$XJM5LZSZEd9C1-7-JBwo7jm9KRaHYgHNM3B_Rq0ub6oTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74TQe !PzoqoNRxeEEqiLyVSV:localhost:8800$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg;Q3 !uPxXJHJyFQwvpQLZNs:localhost:8800$15:localhost:42455;~Q3 ~!uPxXJHJyFQwvpQLZNs:localhost:8800$15:localhost:42455;}Q3 }!uPxXJHJyFQwvpQLZNs:localhost:8800$14:localhost:42455;|Q3 |!uPxXJHJyFQwvpQLZNs:localhost:8800$13:localhost:42455J{QQ {!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043430323sbmUE:localhost:8800JzQQ z!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043429322ZfcNc:localhost:8800JyQQ y!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428321klTqJ:localhost:8800JxQQ x!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428320JDiOD:localhost:8800JwQQ w!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043426319TNjnu:localhost:8800JvQQ v!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043425318lLfNb:localhost:8800TuQe u!UluPYLGXtInKDTjRzp:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYITtQe t!UluPYLGXtInKDTjRzp:localhost:8800$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxETsQe s!UluPYLGXtInKDTjRzp:localhost:8800$q7WeKSNrzeGQG1zaJk5DGOIyi7kAhiBD6uOyRHU8vHgTrQe r!UluPYLGXtInKDTjRzp:localhost:8800$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lATqQe q!UluPYLGXtInKDTjRzp:localhost:8800$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYTpQe p!UluPYLGXtInKDTjRzp:localhost:8800$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ckToQe o!UluPYLGXtInKDTjRzp:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgTnQe n!UluPYLGXtInKDTjRzp:localhost:8800$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnwTmQe m!QkkdnzvdrjHaFGkzMt:localhost:8800$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0TlQe l!QkkdnzvdrjHaFGkzMt:localhost:8800$m62bY8wHsN4HmhHXaoGhZbLr16cbWdFu8pBvx7U6Jd0TkQe k!QkkdnzvdrjHaFGkzMt:localhost:8800$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMTjQe j!QkkdnzvdrjHaFGkzMt:localhost:8800$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctATiQe i!QkkdnzvdrjHaFGkzMt:localhost:8800$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7AThQe h!QkkdnzvdrjHaFGkzMt:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8TgQe g!QkkdnzvdrjHaFGkzMt:localhost:8800$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsTfQe f!DuqHkpTfWCUblSrxQj:localhost:8800$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU   *teQau$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3245}{"auth_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A", "$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "prev_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A"], "type": "m.room.join_rules", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043411910, "hashes": {"sha256": "LlhXjAWB5bIC8j9+76s2pDFqQWpvoUzuVk+NTVTPiV4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GNTZKi812suQ1mAyZ+BwluEtDPcu/diaottkCNYunsiOw4BHVrc8vU4E82/sWuHABTaaf7jUHk6ltAM4J1XvBg"}}, "unsigned": {"age_ts": 1570043411910}}keQac$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3244}{"auth_events": ["$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "prev_events": ["$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "type": "m.room.power_levels", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"users": {"@anon-20191002_181700-635:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043411098, "hashes": {"sha256": "zRbOT4+n42F9cEke5SuI6kMLoZ2fa0BSQgKGOFzc1H8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5ZdH3fzDMQHsf5kw7XrKt0WP6pQwEY1bCJ5BN0mDNtIbSxGQ3jqFcXdDcU1jugNkcIHReRlgeSaWURnRwj0gAA"}}, "unsigned": {"age_ts": 1570043411098}}veQay$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3243}{"auth_events": ["$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs"], "prev_events": ["$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs"], "type": "m.room.member", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-635", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-635:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043410221, "hashes": {"sha256": "00OQf+2m1mZb557LmeMMc4c6ZHb2P6WoQn/pWWhYYc8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OAXdyADXxCPbwY2ZdStVUPjVTVZ91TuYAHmtDNDO34QwRttZz1+NoUtI5lxIIsu6/YsuZC41Pf3cxYD3tGLzDg"}}, "unsigned": {"age_ts": 1570043410221}}ieQa_$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3242}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-635:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043409454, "hashes": {"sha256": "gNqQuG7/SmWQegyJxk3/+scxKpI0Jk9mjuTVulEosEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AhdSjKasNumN1QYf+oRHeYhMp8qcAKiHrNXTa60Ys+MzrSeMe9O4nOPEYfL8JUtt+nu+rC0dt6Gm5YQ0G7uMCA"}}, "unsigned": {"age_ts": 1570043409454}} .NC 8 - { " 5 W ~%sh]RG<1V;eL$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0sha256 Fî6,]2Y 1V:eL$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gsha256yvzkS"b  ,tg\"yiIeWHV9eL$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4sha256Nx,-9ְyým;QWAV8eL$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Usha256@Od~ D!o+SN¸qBD/UV7eL$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Ysha256g̾-~.v׶Q`LvwV6eL$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQosha256Tx*ZAhX#UyQmk'xi V5eL$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUsha256#aS<'5V4eL$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4sha256\u `yuKQn+FQV3eL$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6csha256EϬ+[.Lz>}BgV2eL$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIsha256fthLgk$0=U@V,eL$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4sha256EZm >4uYS_*l,k„V+eL$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8sha256.P35}Ir ]3 7?V*eL$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMsha256[>`1`JF ^QڋCmw~kYcV)eL$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMsha256(i"9_DymuB_%ZV(eL$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74sha256VD_$Ġ 8Q+ n'^T+V'eL$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzssha256<_,|b>Uo =*`Q+;V&eL$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMsha256؀ 4:TUXuMq^DpV%eL$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3ssha256kv{Qn¶k(TE`'{V$eL$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgsha256d),Gf#4ο7 W J=#3L$15:localhost:42455sha256*_"JH`m%="3L$14:localhost:42455sha256X LXQC1tάUF t^=!3L$13:localhost:42455sha256vͭ'#sKQe]I׸ r)'4c L QL$1570043429322ZfcNc:localhost:8800sha2568_YtZW!/E>7= 6SLQL$1570043428321klTqJ:localhost:8800sha256qE.(dGTzLWZ7- mUA!)%LQL$1570043428320JDiOD:localhost:8800sha256JETMLbj#S]sLQL$1570043426319TNjnu:localhost:8800sha256eRUFhn&w}Wh*ELQL$1570043425318lLfNb:localhost:8800sha256:9\'!9->6m}k6MDWVeL$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIsha256!Pc7mP Y@ ^#sVeL$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGssha256'J1xy7js >0C>3ΨkVeL$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEsha256Py9C&GlXX l.+VeL$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAsha256<); J7^uCB瓬Ҥ(nR|VeL$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0sha25602{ŋ7' w5ױf_m]VeL$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMsha2566'';{t#lDwVeL$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAsha256]S5⥆\QiR%ouSbxrVeL$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7Asha25636\p7'/%e1qH+;sVeL$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8sha256)nʠL>坤6+lVeL$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYssha2560`s̎y(- )jF$ E7úA  4 k 9md]c@anon-20191002_181700-665:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgo127.0.0.1id]c@anon-20191002_181700-663:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwo127.0.0.1gd]c@anon-20191002_181700-664:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwo127.0.0.1hd]c@anon-20191002_181700-666:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4go127.0.0.1jd]c@anon-20191002_181700-662:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2go127.0.0.1fd]c@anon-20191002_181700-661:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQo127.0.0.1ed]c@anon-20191002_181700-660:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgo127.0.0.1da[a@anon-20191002_181700-65:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0Cg127.0.0.17d]c@anon-20191002_181700-659:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1go127.0.0.1cd]c@anon-20191002_181700-658:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1Ywo127.0.0.1bd]c@anon-20191002_181700-657:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwo127.0.0.1a 9 D Z 5@yu i9d Q]]Q=$1570043502342mVJmO:localhost:8800@anon-20191002_181700-646:localhost:8800@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800joinanon-20191002_181700-646c eEEQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620@__ANON__-22:localhost:42455@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800joinCb e]]Q=$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg@anon-20191002_181700-645:localhost:8800@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800joinanon-20191002_181700-645Ca e]]Q=$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88@anon-20191002_181700-644:localhost:8800@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800joinanon-20191002_181700-644z` 3EEQ$29:localhost:42455@__ANON__-21:localhost:42455@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800join9_ Q]]Q=$1570043477326hyTqo:localhost:8800@anon-20191002_181700-643:localhost:8800@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800joinanon-20191002_181700-643)^ Q]]1=$1570043468324DLhaB:localhost:8800@anon-20191002_181700-642:localhost:8800@anon-20191002_181700-642:localhost:8800!6:localhost:42455joinanon-20191002_181700-642j] 3EE1$17:localhost:42455@__ANON__-20:localhost:42455@__ANON__-20:localhost:42455!6:localhost:42455join\ eEEQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U@__ANON__-19:localhost:42455@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800joinC[ e]]Q=$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY@anon-20191002_181700-641:localhost:8800@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800joinanon-20191002_181700-641Z eEEQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g@__ANON__-18:localhost:42455@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800joinCY e]]Q=$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4@anon-20191002_181700-640:localhost:8800@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800joinanon-20191002_181700-640X eEEQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI@__ANON__-17:localhost:42455@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800joinCW e]]Q=$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70@anon-20191002_181700-639:localhost:8800@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800joinanon-20191002_181700-639V eEEQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8@__ANON__-16:localhost:42455@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800joinCU e]]Q=$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s@anon-20191002_181700-638:localhost:8800@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800joinanon-20191002_181700-638zT 3EEQ$13:localhost:42455@__ANON__-15:localhost:42455@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800join9S Q]]Q=$1570043426319TNjnu:localhost:8800@anon-20191002_181700-637:localhost:8800@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800joinanon-20191002_181700-637,R e]]Q$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI@anon-20191002_181700-636:localhost:8800@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800leaveQ eEEQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE@__ANON__-14:localhost:42455@__ANON__-14:localhost:42455!UluPYLGXtInKDTjRzp:localhost:8800joinCP e]]Q=$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg@anon-20191002_181700-636:localhost:8800@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800joinanon-20191002_181700-636O eEEQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0@__ANON__-13:localhost:42455@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800joinCN e]]Q=$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8@anon-20191002_181700-635:localhost:8800@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800joinanon-20191002_181700-635 ~z v r n j S1-)%!eeQ$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps!YpcmaMNMzjvtgYtrli:localhost:8800eeQ$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800~eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800}eeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800|eeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800{eeQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800zeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800yeeQ$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800xeeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800weeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800veeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800ueeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800teeQ$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800Ms33Q$15:localhost:42455$14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800Mr33Q$14:localhost:42455$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800\q3QQ$13:localhost:42455$1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800kpQQQ$1570043429322ZfcNc:localhost:8800$1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800koQQQ$1570043428321klTqJ:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800knQQQ$1570043428320JDiOD:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800kmQQQ$1570043426319TNjnu:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800leeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800keeQ$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800jeeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800ieeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800heeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800geeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800feeQ$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800eeeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800deeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800ceeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800beeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800 +vyLl? _ 2  ~ Q $ q D  d 7 V *v,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 +Q !XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 +Q !WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  +Q !WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800+Q !WjlTCJVOFJkanCtkFE:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800+Q !WhqVaRReBxJXADAyYD:localhost:8800,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800  w veQay$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3249}{"auth_events": ["$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw"], "prev_events": ["$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw"], "type": "m.room.member", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-636", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-636:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043416855, "hashes": {"sha256": "jxJPog0yX1IOgZaNx2FzrKeAjwOwhOBSKGKrEc7N1+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KdzkEehdy+rX+PpouBSLu92GPb+y9GpDJ85EeFmPj3UjZwwIAIfP4u1u6Mz6l8Leq+7zxu9FN0vbfx5P4a2+Cg"}}, "unsigned": {"age_ts": 1570043416855}}ieQa_$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3248}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-636:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043415971, "hashes": {"sha256": "TTcbNDAk/iw5Y2dUwEraWyHfBBooG18O+a1pdtrFYkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jWH23aknEterjkcLqih2ucWagmjgp0Rrx1UHSy+vEUiddKl4zVfANQnEceKqMDeVGKUgyLMoIBi5bLd7MrWcDg"}}, "unsigned": {"age_ts": 1570043415971}}}eQ33$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3247}{"sender": "@__ANON__-13:localhost:42455", "hashes": {"sha256": "/YzJTgh+h5b27ngQzCcGRT7/TAKhzu5fEMPVNUh/O3g"}, "state_key": "@__ANON__-13:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "type": "m.room.member", "prev_events": ["$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM"], "origin_server_ts": 1570043414458, "content": {"membership": "join"}, "auth_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A", "$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA"], "signatures": {"localhost:42455": {"ed25519:1": "3M2/dVVqNQ17F1hN3fWH4SK4umA4FcwAqgMaKLUo6rRw7WNARovf9kR0XGv/+fIxFMDYn8BA1uvVejA3iMBZDQ"}}, "unsigned": {}}eQa$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3246}{"auth_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A", "$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "prev_events": ["$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA"], "type": "m.room.history_visibility", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043412763, "hashes": {"sha256": "Od9FB2/4vc0PqSnpa7zm5HWq0FLjHxSCGNbnSfns8K4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hoAgV0RG7qTtXiks+m2Akzj2kA85VYxdSbacSmldIjFXRFILnC2FeWbsBzCjK0ZQrS7dfdcAnQR2OALkVzkMDA"}}, "unsigned": {"age_ts": 1570043412763}} *j8p> v D  | J0  P  V $ \ *b1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxId1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYP1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYO1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYN1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU1e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwd1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwc1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwb1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8.1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8-1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8,1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMm1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMl1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMk1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw P1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI 1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI 1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM%1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM#1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg sbt# 0 = J Y  f sP]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800P]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800P]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800P]Q@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800N[Q@anon-20191002_181700-17:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800P]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800P]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800P]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800M[Q @anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800 ^Mp> j  Q  8 X & ,e4 vl;  | sAyG D NZT"` J.(1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE E1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc F1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE71e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw'1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rch1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkd1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU,1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYN1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX81e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMu1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ20e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0`1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m80e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcG1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw\21e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4[1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QD1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcz0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw91e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sZ0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw-1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg41e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE B1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc ^1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg -1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0.1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g<1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY M1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew 1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s 1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA +vyLl? _ 2  ~ Q $ q D  d 7 V *v,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 +Q !XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 +Q !WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  +Q !WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800+Q !WjlTCJVOFJkanCtkFE:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800+Q !WhqVaRReBxJXADAyYD:localhost:8800,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 g * T~=ggi]!cs@anon-20191002_181700-647:localhost:8800JJTUBBNUOSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwogh]!cr@anon-20191002_181700-646:localhost:8800HFMIURTAJAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3gogg]!cq@anon-20191002_181700-645:localhost:8800TQRBSFDPVGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQogf]!cp@anon-20191002_181700-644:localhost:8800INFGSFBNKUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAoge]!co@anon-20191002_181700-643:localhost:8800NELMCBWNVQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwogd]!cn@anon-20191002_181700-642:localhost:8800FQRREBIQEQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgogc]!cm@anon-20191002_181700-641:localhost:8800PFGGCSSRVIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQogb]!cl@anon-20191002_181700-640:localhost:8800JIZUEMVYQNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgoga]!ck@anon-20191002_181700-639:localhost:8800VIDPYYIORGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAog`]!cj@anon-20191002_181700-638:localhost:8800AMILRIOBVFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAog_]!ci@anon-20191002_181700-637:localhost:8800SOCIZPGICGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgo /RM H a  K _  Z UPKFA<72TQe !cRbfhxZdPstEsPGPAu:localhost:8800$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-UTQe !cRbfhxZdPstEsPGPAu:localhost:8800$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LATQe !cRbfhxZdPstEsPGPAu:localhost:8800$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gTQe !cRbfhxZdPstEsPGPAu:localhost:8800$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18TQe !cRbfhxZdPstEsPGPAu:localhost:8800$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecTQe !cRbfhxZdPstEsPGPAu:localhost:8800$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcT~Qe !cRbfhxZdPstEsPGPAu:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYT}Qe !cRbfhxZdPstEsPGPAu:localhost:8800$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0T|Qe !sAWFpvSUPExZLVcPEd:localhost:8800$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gT{Qe !sAWFpvSUPExZLVcPEd:localhost:8800$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4TzQe !sAWFpvSUPExZLVcPEd:localhost:8800$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1UTyQe !sAWFpvSUPExZLVcPEd:localhost:8800$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YTxQe !sAWFpvSUPExZLVcPEd:localhost:8800$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQoTwQe !sAWFpvSUPExZLVcPEd:localhost:8800$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUTvQe !sAWFpvSUPExZLVcPEd:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4TuQe !sAWFpvSUPExZLVcPEd:localhost:8800$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cTtQe !YpcmaMNMzjvtgYtrli:localhost:8800$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoITsQe !YpcmaMNMzjvtgYtrli:localhost:8800$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3psTrQe !YpcmaMNMzjvtgYtrli:localhost:8800$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHoTqQe !YpcmaMNMzjvtgYtrli:localhost:8800$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQTpQe !YpcmaMNMzjvtgYtrli:localhost:8800$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUToQe !YpcmaMNMzjvtgYtrli:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70TnQe !YpcmaMNMzjvtgYtrli:localhost:8800$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4TmQe !PzoqoNRxeEEqiLyVSV:localhost:8800$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8TlQe !PzoqoNRxeEEqiLyVSV:localhost:8800$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMTkQe !PzoqoNRxeEEqiLyVSV:localhost:8800$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMTjQe !PzoqoNRxeEEqiLyVSV:localhost:8800$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74TiQe !PzoqoNRxeEEqiLyVSV:localhost:8800$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsThQe !PzoqoNRxeEEqiLyVSV:localhost:8800$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMTgQe !PzoqoNRxeEEqiLyVSV:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sTfQe !PzoqoNRxeEEqiLyVSV:localhost:8800$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg;eQ3 !uPxXJHJyFQwvpQLZNs:localhost:8800$15:localhost:42455;dQ3 !uPxXJHJyFQwvpQLZNs:localhost:8800$14:localhost:42455;cQ3 !uPxXJHJyFQwvpQLZNs:localhost:8800$13:localhost:42455JbQQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043429322ZfcNc:localhost:8800JaQQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428321klTqJ:localhost:8800J`QQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428320JDiOD:localhost:8800J_QQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043426319TNjnu:localhost:8800J^QQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043425318lLfNb:localhost:8800T]Qe !UluPYLGXtInKDTjRzp:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIT\Qe !UluPYLGXtInKDTjRzp:localhost:8800$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGsT[Qe !UluPYLGXtInKDTjRzp:localhost:8800$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxETZQe !UluPYLGXtInKDTjRzp:localhost:8800$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lATYQe !UluPYLGXtInKDTjRzp:localhost:8800$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYTXQe !UluPYLGXtInKDTjRzp:localhost:8800$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ckTWQe !UluPYLGXtInKDTjRzp:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgTVQe !UluPYLGXtInKDTjRzp:localhost:8800$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw  }eQ33$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3253}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY"], "content": {"membership": "join"}, "origin_server_ts": 1570043420749, "prev_events": ["$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA"], "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-14:localhost:42455", "depth": 6, "origin": "localhost:42455", "hashes": {"sha256": "2VSc5m+RCJIkycKRCxoMnzi9OqpZ40oXuT0v1FWa8sg"}, "sender": "@__ANON__-14:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "c4eRuXXD99W2diNiVg/9wLIygpi/mO+Zf9FPO4cnDIW93biOyMK522zwtngYVy5L2GDNfd68OUDebmaq2h5iBw"}}, "unsigned": {}}eQa$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3252}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY"], "type": "m.room.history_visibility", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043419105, "hashes": {"sha256": "egVgkladDbYGuh2/cEvI37PPUgsA6bUeHuJhvBslHE8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "biicQdVpfTwURH7qR1urSutyHkGdFfeyB/W/QWQpfKg0qzh3V22rNjOaXblu0aX/HkXY2Nef9AQ2f/nqyQeaBw"}}, "unsigned": {"age_ts": 1570043419105}}teQau$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3251}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck"], "type": "m.room.join_rules", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043418438, "hashes": {"sha256": "M+/x0Er2JvO41zrlKOocGjryxMWuBFGRchvG+ctQd4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xc6z7r9LjV37LKHMFPBvpbDozI3N7gQA3mjoFnqHfuraTh/rWFWtK2zTffNIp+fnO/rWXJPFvI7fHre0Qg1RDw"}}, "unsigned": {"age_ts": 1570043418438}}keQac$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3250}{"auth_events": ["$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "type": "m.room.power_levels", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"users": {"@anon-20191002_181700-636:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043417523, "hashes": {"sha256": "ftRHXRa/FyHaq7QzUukWzJEa/HUKXXq1Len3KapQRak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MzwmPqCJ7ipK0HRyJZen81Flk223R76ZRyJ/cHG838pE3Vgd2xIAwtVz3nMunE8NSLXaBm/C2jRRo5Lg9ygsAw"}}, "unsigned": {"age_ts": 1570043417523}} /k9q? 3 w E  } K   R Y '   _ -9ke1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA k1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 O1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c H1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 11e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI )1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwt1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs:1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsX0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU|1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs V1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQt1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIy1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEL0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEs1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym451e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4Q1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwm1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU *1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE~1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ 1e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag 1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYY #p Y ( 1 Y i x6R[/8`p}GeQ'E$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455mFeQ? $ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibilitymEeQ? $ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibilityeDeQ/ $pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rulesgCeQ3 $-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels BeQ']$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800aAeQ' $DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800m.room.create}@eQ'E$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455m?eQ? $QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibilitym>eQ? $rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibilitye=eQ/ $ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rulesg<eQ3 $8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels ;eQ']$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800a:eQ' $Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800m.room.create}9eQ'E$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455m8eQ? $aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibilitye7eQ/ $_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rulesg6eQ3 $06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels 5eQ']$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800a4eQ' $i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800m.room.create}3eQ'E$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455m2eQ? $u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibilitym1eQ? $8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibilitye0eQ/ $hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rulesg/eQ3 $h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels .eQ']$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800a-eQ' $ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.created,3Q'E$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455c+QQ? $1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility[*QQ/ $1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules])QQ3 $1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels(QQ']$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800W'QQ' $1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create &eQ']$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800}%eQ'E$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455  {QQa) $1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3257}{"auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}]], "prev_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}]], "type": "m.room.member", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-637", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-637:localhost:8800", "event_id": "$1570043426319TNjnu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043426333, "hashes": {"sha256": "OPBLfGyZ2pvRH6D8pIBJIjxXseKvzEXDIDYeD9H35ok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iT5XyOn9NK7C0c2x+jVP91WDX9aS6K21YlU69vAPCY5QirMUnsILA1XPOFnTa5YRja7Ow1el83zxu8rVPhBgBQ"}}, "unsigned": {"age_ts": 1570043426333}}QQaC $1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3256}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-637:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043425318lLfNb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043425503, "hashes": {"sha256": "BLH+VWGM6kAYojkNoxf1L697tJKClu1eStvxB182RXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uAo3LYsTQMpUsK1yiOO9F7jMbQ7cSTwMoAGas5HxBJJ69OIi7e9kn5dmxy2qVJa3LCGVBVqpoqKWddV3arVFCg"}}, "unsigned": {"age_ts": 1570043425503}}IeQ?A$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI!UluPYLGXtInKDTjRzp:localhost:8800{"stream_ordering": 3255}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs"], "type": "m.room.member", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-636:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043423634, "hashes": {"sha256": "r7i0pT+3YxhcMmMfF5ymKoH3AXmFELyap7b1t6C0NNM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zB0H9cA8jtPX3J3v/1opEGHs2YcZ+uvE6aSKE94h4AF9hbLRMx7jfqs1dCXJoZFLhX+XUo6eWNDVg5my/c8BAg"}}, "unsigned": {"age_ts": 1570043423634, "replaces_state": "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"}}eQk$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "txn_id": "596", "stream_ordering": 3254}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE"], "type": "m.room.message", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"body": "body1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043421709, "hashes": {"sha256": "gp2EJlPn4N0hBf6H5PwyJOsKw7CO0ocee8eKoH6i3ME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hUJS1FalQmon7ShFvas/+o0n70ls7zNL5W47BDIJ2oqPpwVrhrR9e1VPrJkXV5/7/9tu/BE5ubez5ukDhoRmBQ"}}, "unsigned": {"age_ts": 1570043421709}} MU1 J  P D   W %  ] +cp8i7[ j) o#= | u vC{I>O1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 d1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM\1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw 51e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs g1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YZ1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0M1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM|1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQV1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrku1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs\1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IM1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gv1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYk1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o021e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg%1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIy1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAI1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s#1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo|1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk|1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0;1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA J1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU H1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IW1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE r1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc Y1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw N1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q ?1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 21e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs \f(   d  ni/9L\&Re3Q ]$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUm.room.power_levels!sAWFpvSUPExZLVcPEd:localhost:8800mm@anon-20191002_181700-640:localhost:8800 Qe'Q ]$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4m.room.member!sAWFpvSUPExZLVcPEd:localhost:8800mm(@anon-20191002_181700-640:localhost:8800P e'Q  ]$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cm.room.create!sAWFpvSUPExZLVcPEd:localhost:8800mQmՠ@anon-20191002_181700-640:localhost:8800Oe'Q E$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIm.room.member!YpcmaMNMzjvtgYtrli:localhost:8800mmQ@__ANON__-17:localhost:42455!Ne)Q ]$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3psm.room.message!YpcmaMNMzjvtgYtrli:localhost:8800mm@anon-20191002_181700-639:localhost:8800,Me?Q ]$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHom.room.history_visibility!YpcmaMNMzjvtgYtrli:localhost:8800mmLJ@anon-20191002_181700-639:localhost:8800$Le/Q ]$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQm.room.join_rules!YpcmaMNMzjvtgYtrli:localhost:8800mm@anon-20191002_181700-639:localhost:8800&Ke3Q ]$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUm.room.power_levels!YpcmaMNMzjvtgYtrli:localhost:8800mm@anon-20191002_181700-639:localhost:8800 Je'Q ]$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70m.room.member!YpcmaMNMzjvtgYtrli:localhost:8800m.m@anon-20191002_181700-639:localhost:8800I e'Q  ]$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4m.room.create!YpcmaMNMzjvtgYtrli:localhost:8800mmv@anon-20191002_181700-639:localhost:8800He'Q E$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8m.room.member!PzoqoNRxeEEqiLyVSV:localhost:8800mm@__ANON__-16:localhost:42455!Ge)Q ]$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMm.room.message!PzoqoNRxeEEqiLyVSV:localhost:8800mᬏmᮚ@anon-20191002_181700-638:localhost:8800,Fe?Q ]$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMm.room.history_visibility!PzoqoNRxeEEqiLyVSV:localhost:8800mm@anon-20191002_181700-638:localhost:8800,Ee?Q ]$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74m.room.history_visibility!PzoqoNRxeEEqiLyVSV:localhost:8800mKm@anon-20191002_181700-638:localhost:8800$De/Q ]$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsm.room.join_rules!PzoqoNRxeEEqiLyVSV:localhost:8800m,mm@anon-20191002_181700-638:localhost:8800&Ce3Q ]$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMm.room.power_levels!PzoqoNRxeEEqiLyVSV:localhost:8800mm៑@anon-20191002_181700-638:localhost:8800 Be'Q ]$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sm.room.member!PzoqoNRxeEEqiLyVSV:localhost:8800m!m7@anon-20191002_181700-638:localhost:8800A e'Q  ]$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgm.room.create!PzoqoNRxeEEqiLyVSV:localhost:8800mᕼm0@anon-20191002_181700-638:localhost:8800|?3)Q E$15:localhost:42455m.room.message!uPxXJHJyFQwvpQLZNs:localhost:8800mክm-@__ANON__-15:localhost:42455|>3)Q E$14:localhost:42455m.room.message!uPxXJHJyFQwvpQLZNs:localhost:8800mክm~@__ANON__-15:localhost:42455{=3'Q E$13:localhost:42455m.room.member!uPxXJHJyFQwvpQLZNs:localhost:8800mmz@__ANON__-15:localhost:42455"<Q?Q ]$1570043429322ZfcNc:localhost:8800m.room.history_visibility!uPxXJHJyFQwvpQLZNs:localhost:8800mm@anon-20191002_181700-637:localhost:8800;Q/Q ]$1570043428321klTqJ:localhost:8800m.room.join_rules!uPxXJHJyFQwvpQLZNs:localhost:8800mmတ@anon-20191002_181700-637:localhost:8800:Q3Q ]$1570043428320JDiOD:localhost:8800m.room.power_levels!uPxXJHJyFQwvpQLZNs:localhost:8800m|m}@anon-20191002_181700-637:localhost:88009Q'Q ]$1570043426319TNjnu:localhost:8800m.room.member!uPxXJHJyFQwvpQLZNs:localhost:8800mvmv@anon-20191002_181700-637:localhost:8800 $>^ 7 n G ) `k#/GLp|iGQ3 e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU FQ']e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4cEQ' e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.create$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cDQ'Ee !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoICQ'Ee !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455$dJvP2Cld7bj1OfVg74NWAEQzJAteNjsRLyKHcBGFZagoBQ? e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility$tvWfYhl0bbZ5HfUUD_KgpB4bJC2wQHNAZllEnIRwAdgoAQ? e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHog@Q/ e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rules$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQi?Q3 e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU >Q']e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70c=Q' e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.create$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4<Q'Ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8;Q'Ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455$XJM5LZSZEd9C1-7-JBwo7jm9KRaHYgHNM3B_Rq0ub6oo:Q? e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMo9Q? e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74g8Q/ e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rules$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsi7Q3 e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 6Q']e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sc5Q' e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.create$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg]4Q/ Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800f3Q'E3 !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455Y2Q' Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800_1Q3 Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800]0Q/ Q ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800f/Q'E3 ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455Y.Q' Q ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800_-Q3 Q ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800],Q/ Q }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800f+Q'E3 }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455Y*Q' Q }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800_)Q3 Q }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800f(Q'E3 |!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455u'Q'EQ {!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$1570043430323sbmUE:localhost:8800e&Q? Q z!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility$1570043429322ZfcNc:localhost:8800]%Q/ Q y!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800_$Q3 Q x!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800  fx QQa $1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3260}{"auth_events": [["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}], ["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}]], "prev_events": [["$1570043428321klTqJ:localhost:8800", {"sha256": "cUXoLihkR91UqZN6TAXlV1o3LbYTIAJtVUEhAx3eKSU"}]], "type": "m.room.history_visibility", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043429322ZfcNc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043429599, "hashes": {"sha256": "S3EUXjKv3CxZtyGtlfF9KdUxcepsC+Wo95/G3pOQWAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "78P8Vu4ihabtUfAwhC7cvOeukUJfjnFraSYi6sPsJ0UXFfZmT7H+B29WJLyj+oeevQARmeONpwjMHoz2nqNSDA"}}, "unsigned": {"age_ts": 1570043429599}}gQQaq $1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3259}{"auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}], ["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}]], "prev_events": [["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}]], "type": "m.room.join_rules", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043428321klTqJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043428892, "hashes": {"sha256": "AOm5fmQDmULXxmrZhybUN1OesSGk79GoSU7a19+N6d8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3wcG/2fR0LLOTAjdjzKiNRmdrE50uL3/N0JN9g3WzXY2urqwgh9C9DShx7LjC4R8Dj3NPM/up22Mncy8ncwhCg"}}, "unsigned": {"age_ts": 1570043428892}}+QQay $1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3258}{"auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}]], "prev_events": [["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}]], "type": "m.room.power_levels", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"users": {"@anon-20191002_181700-637:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043428320JDiOD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043428091, "hashes": {"sha256": "FueNwh/uH6wE3yuS5GE8NrafNGKKwef3Vp09jgCvgT8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T2HYBlbHlOEhFaTeltomFw5UiFF4UoUvtEfFUNce7NS/y15BWMgR1FBsNXesqcLxamGFlHCdria2kX6/42fYCg"}}, "unsigned": {"age_ts": 1570043428091}} cV Bq |  ).Vmr   G RVVVVVXL31'E$17:localhost:42455!6:localhost:42455m.room.member@__ANON__-20:localhost:42455joinaFeQ' $DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800m.room.createEeQ'E$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455joinmDeQ? $QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibilityeCeQ/ $ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rulesgBeQ3 $8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels AeQ']$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800joina@eQ' $Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800m.room.create?eQ'E$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455joinm>eQ? $aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibilitye=eQ/ $_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rulesg<eQ3 $06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels ;eQ']$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800joina:eQ' $i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800m.room.create9eQ'E$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455joinm8eQ? $u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility/QQ']$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800joinW.QQ' $1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.createKeQ'E$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455joinmJeQ? $ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibilityeIeQ/ $pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rulesgHeQ3 $-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels GeQ']$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800joine7eQ/ $hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rulesg6eQ3 $h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels 5eQ']$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800joina4eQ' $ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.createh33Q'E$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455joinc2QQ? $1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility[1QQ/ $1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules]0QQ3 $1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels &L r  X V T RPNLJHFDB~]eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~\eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800~[eeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800~ZeeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~YeeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800~XeeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800~WeeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~VeeQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~UeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800~TeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~SeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~ReeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~QeeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~PeeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~OeeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~NeeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~MeeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~LeeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~KeeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~JeeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~IeeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~HeeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~GeeQ$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800[F3QQ$13:localhost:42455$1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800[E3QQ$13:localhost:42455$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800[D3QQ$13:localhost:42455$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800jCQQQ$1570043429322ZfcNc:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800jBQQQ$1570043429322ZfcNc:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800jAQQQ$1570043429322ZfcNc:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j@QQQ$1570043428321klTqJ:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j?QQQ$1570043428321klTqJ:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j>QQQ$1570043428321klTqJ:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 3 e 3i$eQa_$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3265}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-638:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043434428, "hashes": {"sha256": "Oj+Y17FeE6rTw3sA+7d7MPQMPeyTSXEC+sN2zsYsMF0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d0ZCIRg7c/lp97SLTmEe8k/KBqcUW5Ct17NIwPsrumaQGZVgfWfm1SHQg4+lH2dv06K/LTmw+oT+adLOg5OWDQ"}}, "unsigned": {"age_ts": 1570043434428}}A#3QcA $15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800{"outlier": false, "stream_ordering": 3263}{"depth": 8, "origin": "localhost:42455", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-15:localhost:42455", "hashes": {"sha256": "Vn1qYDazZiG4exWaMPoVOX75GX5wV6l56VR5eCl3Dzw"}, "content": {"body": "Message 2"}, "auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "BLH+VWGM6kAYojkNoxf1L697tJKClu1eStvxB182RXM"}], ["$1570043428321klTqJ:localhost:8800", {"sha256": "AOm5fmQDmULXxmrZhybUN1OesSGk79GoSU7a19+N6d8"}], ["$1570043428320JDiOD:localhost:8800", {"sha256": "FueNwh/uH6wE3yuS5GE8NrafNGKKwef3Vp09jgCvgT8"}], ["$13:localhost:42455", {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}]], "event_id": "$15:localhost:42455", "prev_events": [["$14:localhost:42455", {"sha256": "xsY54hkCRWACTXFXNPvBG5KDaaUCTI+85gCJwzXvqFs"}]], "origin_server_ts": 1570043431597, "signatures": {"localhost:42455": {"ed25519:1": "bK8zKYhUiYCLlU2aUd1Iaas5pX899O3Tk09b9wCRlImeFGnaYH1oBisSqtsBwwiqtt9hm9eSyCCaUofsPz72CA"}}, "unsigned": {}}A"3QcA $14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800{"outlier": false, "stream_ordering": 3262}{"hashes": {"sha256": "xsY54hkCRWACTXFXNPvBG5KDaaUCTI+85gCJwzXvqFs"}, "sender": "@__ANON__-15:localhost:42455", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "type": "m.room.message", "depth": 7, "origin": "localhost:42455", "origin_server_ts": 1570043431597, "prev_events": [["$13:localhost:42455", {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}]], "auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "BLH+VWGM6kAYojkNoxf1L697tJKClu1eStvxB182RXM"}], ["$1570043428321klTqJ:localhost:8800", {"sha256": "AOm5fmQDmULXxmrZhybUN1OesSGk79GoSU7a19+N6d8"}], ["$1570043428320JDiOD:localhost:8800", {"sha256": "FueNwh/uH6wE3yuS5GE8NrafNGKKwef3Vp09jgCvgT8"}], ["$13:localhost:42455", {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}]], "event_id": "$14:localhost:42455", "content": {"body": "Message 1"}, "signatures": {"localhost:42455": {"ed25519:1": "VVAcMPOcuidT+ZgRe4MRYrVWPk4u4o9oz9BdwEdtFDxfMRg0RIKrv5bnIYJ3oUUIau+2O7EazUGOfHNiEv+zCw"}}, "unsigned": {}}R!3Q3 $13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3261}{"sender": "@__ANON__-15:localhost:42455", "hashes": {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}, "depth": 6, "state_key": "@__ANON__-15:localhost:42455", "origin": "localhost:42455", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "type": "m.room.member", "prev_events": [["$1570043429322ZfcNc:localhost:8800", {"sha256": "6zj16l9ZgnRaVyEvRbeMPoOSAjc9DKIDNgAR1+jxU7c"}]], "origin_server_ts": 1570043431128, "content": {"membership": "join"}, "auth_events": [["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}], ["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043428321klTqJ:localhost:8800", {"sha256": "cUXoLihkR91UqZN6TAXlV1o3LbYTIAJtVUEhAx3eKSU"}]], "event_id": "$13:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "nZdEbouvDI0KY74dD/9Je69Iwzu2K/O8/XzTu6NGQbkDKIu5reOPxP0YQoU/BBkzn5K3xps4t5HcqaV3OgKGAQ"}}, "unsigned": {}} *X) { 2 W  | 3  IyAis!W3Y'i%eQ%$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc!DSFBpkqfnvBQbGoMUK:localhost:8800content.bodysentinelc$eQ%$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E!ZKPJvrCZHMHPEksYDc:localhost:8800content.bodyhic#eQ%$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY!PgNDjhhIBAXKryuGKy:localhost:8800content.bodyhic"eQ%$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800content.bodyhif!eQ%$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800content.bodyHellon eQ%'$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc!vnFXnkCSfTbsSNKrtg:localhost:8800content.bodyTest message1feQ%$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU!jRuDexjFzIDOKbwDJQ:localhost:8800content.bodyHello\?Q%)$60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800content.bodynothing to seeY?Q%#$59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800content.bodytotes legitbQQ%#$1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800content.bodyHello worldbQQ%#$1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800content.bodyHello worldO3Q%$53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800content.bodyevent_cO3Q%$52:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800content.bodyevent_xO3Q%$49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800content.bodyevent_cO3Q%$46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800content.bodyevent_xleQ%#$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4!wBBQYEPjQGnoAzDpEu:localhost:8800content.bodyHello worldfQQ%+$1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 10 hereeQQ%)$1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 9 hereeQQ%)$1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 8 hereeQQ%)$1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 7 hereeQQ%)$1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 6 hereeQQ%)$1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 5 hereeQQ%)$1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 4 hereeQQ%)$1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 3 heree QQ%)$1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 2 heree QQ%)$1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 1 hereG 31%+$28:localhost:42455!6:localhost:42455content.bodyMessage 10 hereF 31%)$27:localhost:42455!6:localhost:42455content.bodyMessage 9 hereF 31%)$26:localhost:42455!6:localhost:42455content.bodyMessage 8 hereF31%)$25:localhost:42455!6:localhost:42455content.bodyMessage 7 hereF31%)$24:localhost:42455!6:localhost:42455content.bodyMessage 6 hereF31%)$23:localhost:42455!6:localhost:42455content.bodyMessage 5 hereF31%)$22:localhost:42455!6:localhost:42455content.bodyMessage 4 hereF31%)$21:localhost:42455!6:localhost:42455content.bodyMessage 3 hereF31%)$20:localhost:42455!6:localhost:42455content.bodyMessage 2 hereF31%)$19:localhost:42455!6:localhost:42455content.bodyMessage 1 herebeQ%$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800content.body1beQ%$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800content.body1beQ%$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps!YpcmaMNMzjvtgYtrli:localhost:8800content.body1b~eQ%$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800content.body1Q}3Q%$15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800content.bodyMessage 2Q|3Q%$14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800content.bodyMessage 1 \y^+aJ/M6i6 m P 5  n W  s 4  s \  l O 4 U8lIpU2h5t_J3cF/ >'] m.room.member@anon-20191002_181700-657:localhost:8800 C'  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-31:localhost:42455 D/  m.room.join_rules @"?  m.room.history_visibility A'  m.room.create ?3  m.room.power_levels ;2'E m.room.member@__ANON__-31:localhost:42455 =/  m.room.join_rules >'  m.room.create <! test_stateB :2'E m.room.member@__ANON__-31:localhost:42455 92'E m.room.member@__ANON__-31:localhost:42455 83  m.room.power_levels 7"?  m.room.history_visibility 6/  m.room.join_rules 53  m.room.power_levels 4>'] m.room.member@anon-20191002_181700-657:localhost:8800 3'  m.room.create 22'E m.room.member@__ANON__-30:localhost:42455 12'E m.room.member@__ANON__-30:localhost:42455 0"?  m.room.history_visibility //  m.room.join_rules .3  m.room.power_levels ->'] m.room.member@anon-20191002_181700-656:localhost:8800 ,'  m.room.create +"?  m.room.history_visibility */  m.room.join_rules )3  m.room.power_levels (>'] m.room.member@anon-20191002_181700-655:localhost:8800 ''  m.room.create &2'E m.room.member@__ANON__-28:localhost:42455 %2'E m.room.member@__ANON__-28:localhost:42455 $"?  m.room.history_visibility #/  m.room.join_rules "3  m.room.power_levels !>'] m.room.member@anon-20191002_181700-654:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-653:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-26:localhost:42455 2'E m.room.member@__ANON__-26:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-652:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-23:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-646:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-22:localhost:42455 2'E m.room.member@__ANON__-22:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules /  m.room.join_rules 3  m.room.power_levels 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-645:localhost:8800 >'] m.room.member@anon-20191002_181700-644:localhost:8800 '  m.room.create '  m.room.create 2'E m.room.member@__ANON__-21:localhost:42455 2'E m.room.member@__ANON__-21:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-643:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules @ Qp  +> vWDp  ||j v DJ]> Q c%i71  V $ 1e$nRSFEV1TH9w1lu1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQU1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagx1e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI )1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ F1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U#1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc,1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAQ1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYb1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU*1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs41e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoB1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k51e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu41e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU11e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kN1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIl1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0 +1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ 1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQr1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg51e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI 1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 <1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ 1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg 1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck "1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk 821e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc L1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI F21e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y j1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk  (eQa$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3269}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs"], "type": "m.room.history_visibility", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043438155, "hashes": {"sha256": "Gdzq3WvRVTcfLwkah7h00R7gdNAzW1GdyBUGWTnU9k0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5R7YrFZMkTbZ3KH6E/uu+VFMl51KZUhCchw5DpnOOi0Tt0CW1v+2Tz4r8euqVaEMp0OKVtAfs9xllzuGzLIRBQ"}}, "unsigned": {"age_ts": 1570043438155}}t'eQau$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3268}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM"], "type": "m.room.join_rules", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043437356, "hashes": {"sha256": "/f1fQq65DMxiwZCGviGccDnUwAZHf1WSeM836I1aL2k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XSMl6FfuSQ758DK/ujauZq5t6FSTKlQGahxyE6ouERz1K4H0qprmDjFobLme0Rtp02XGcO2yXl9t3ABr7oC2Cw"}}, "unsigned": {"age_ts": 1570043437356}}k&eQac$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3267}{"auth_events": ["$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "type": "m.room.power_levels", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"users": {"@anon-20191002_181700-638:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043436530, "hashes": {"sha256": "PF3EFsPWp9W5OcNnbFinvSWI1nv4Lv8aFREkzWnP9LM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2MDX7FrTe9quk00lvgrYJIZbpZHCpYzLaVURUBxUFEFXsQ6LfD8HXOvGwq9Crv/o/T6woAc7qXtD+3wM7ZzsCg"}}, "unsigned": {"age_ts": 1570043436530}}v%eQay$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3266}{"auth_events": ["$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg"], "prev_events": ["$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg"], "type": "m.room.member", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-638", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-638:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043435297, "hashes": {"sha256": "BUTIFJyHUEl1C3GsOj5pM5sUZrbmAmFwJ/pU3DMCyCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "He23bt12oZt5KGTDHRm+bcbNwZ7dj9sjutQ17FgXZS+cDQ0q20/CokU1Oju9XFPykvT+Odyd3EoXg1QWiaRNCQ"}}, "unsigned": {"age_ts": 1570043435297}} > -+>i,eQa_$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3273}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-639:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043443222, "hashes": {"sha256": "cJB4gAj/zHZpLrVHOtjalU+bwWVYiNY+DIoeMhJzPH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oXQAnx/k2Zbdau5yHXhS2rTNYVmT+AUNEU2IrCFhCujLjL8zj6olvCtB26drwRn6BCALMN5l3c2zgUCmnV8sCA"}}, "unsigned": {"age_ts": 1570043443222}}}+eQ33$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3272}{"content": {"membership": "join"}, "auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs"], "prev_events": ["$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM"], "origin_server_ts": 1570043441642, "state_key": "@__ANON__-16:localhost:42455", "depth": 8, "origin": "localhost:42455", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "type": "m.room.member", "sender": "@__ANON__-16:localhost:42455", "hashes": {"sha256": "ZxlPPr7ErtY1UGV06JVQo40YfDarUDlobSjQoo9sjgE"}, "signatures": {"localhost:42455": {"ed25519:1": "YPLvSdIVXn+iZKf4xH4A2N0C9mjuX5s1CVPY30vE6fkLJCOjhcfS2Hwlb19A0lyR1HjUiuaylcyREMmbdCGGAg"}}, "unsigned": {}}}*eQc$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "txn_id": "597", "stream_ordering": 3271}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM"], "type": "m.room.message", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043440271, "hashes": {"sha256": "Xom1GK6ZZSMHZAMDgsdqXU3maZOFHh5pGZgTkX73Gxc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "okii3yYWKH8KbHgZTgOUPKGfSHed516TBVWs/AiiCYbafsYHQwmaIUVm0O02LZLHJiZcGDErBCaK+uD5lcPKCQ"}}, "unsigned": {"age_ts": 1570043440271}}O)eQa+$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3270}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74"], "type": "m.room.history_visibility", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043439362, "hashes": {"sha256": "d4eQTvFoVKwxc8k6xUjcDpDm3QhEIe7Qlu7ZnbRUBXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BoojBMs0WDGpH55B7Oko7yktWBlQbotXmXZiNBNMO++y0RcqxGF3+Gt6rnmmm4U5ko24HSlXz4ZzoIUuZE2oAA"}}, "unsigned": {"age_ts": 1570043439362, "replaces_state": "$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74"}} rpxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xp ` X P H @ 8 0 (    x p h ` X P H @ 8 m m l l k k j j i i h h g g f f e e d d c c b b a a                                                                                                                                                                                              ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! ! T T S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! !                                                                ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U T T "| : O R t PYnN>U!S YQ']e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88dXQ' e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.create$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2AdWQ' e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.create$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqogVQ'E3 !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455$29:localhost:42455fUQ? Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility$1570043479329kvsXb:localhost:8800^TQ/ Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules$1570043478328DMkRS:localhost:8800`SQ3 Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levels$1570043477327AgpMM:localhost:8800RQ']Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800$1570043477326hyTqo:localhost:8800ZQQ' Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.create$1570043476325vnEPO:localhost:8800rP1']Q !6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800$1570043468324DLhaB:localhost:8800;O1' 3 !6:localhost:42455m.room.create$16:localhost:42455?N1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455WM1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455LQ'Ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-UKQ? ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18pJQ? e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18hIQ/ e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rules$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecjHQ3 e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc GQ']e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYdFQ' e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.create$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0EQ'Ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gDQ? ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YpCQ? e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YhBQ/ e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rules$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQojAQ3 e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU @Q']e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4d?Q' e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.create$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c>Q'Ee !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIp=Q? e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHoh<Q/ e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rules$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQj;Q3 e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU :Q']e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70d9Q' e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.create$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI48Q'Ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8  0eQa$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3277}{"auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ"], "type": "m.room.history_visibility", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043446556, "hashes": {"sha256": "d+ePsJlKA3rISTQCubCKR8/d4544IWhWy2GhjVR+R3k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aT7d1q6zxJ8vEBWr1RM82WgQ+CtHxPkaPeaPF1+syClN0WK0kNMl5zsfsn21ZhHyIGht+7NsKkXpdYC1BuwABA"}}, "unsigned": {"age_ts": 1570043446556}}t/eQau$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3276}{"auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU"], "type": "m.room.join_rules", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043445706, "hashes": {"sha256": "YPPNypk8NYrTvyBqrahPqpbWGs8cyb6JX/Vsn9dEkmU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fmIfs+Nb0yMC/7SXHos08yqpLoKbG7QJq9tV2BsA39sWdqrW3VBHZ9IgrCxwZzmMk6BhN0cgFIi+mOV6n3ceDw"}}, "unsigned": {"age_ts": 1570043445706}}k.eQac$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3275}{"auth_events": ["$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "type": "m.room.power_levels", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"users": {"@anon-20191002_181700-639:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043444683, "hashes": {"sha256": "JwbztfMbrJX6bujbT1vL/grt/MgN4o6R9C83zGWvQRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uG30u2Q0MbZZPDXhZ3Ite2AhJz3iLaY1DH3yfZhGQdN3L8LaYWxrVS0bsRhtTgtlPGWpiKKv6OgMOUBZ+rvcAw"}}, "unsigned": {"age_ts": 1570043444683}}v-eQay$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3274}{"auth_events": ["$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4"], "prev_events": ["$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4"], "type": "m.room.member", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-639", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-639:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043444014, "hashes": {"sha256": "c2Vxr7jQ+/zGw2I6SC9V9CnrYVU98dZGOBLGvY5g/0w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RLFGL0sVcNrmyAVFQH5wx+A5EqjLBWk4nZVf4S7ms8AWgh8spvq5/4ptmNqMuKIAh40+rJ/ROZYAOHuQCy2bAw"}}, "unsigned": {"age_ts": 1570043444014}} @@Q ^ 1 r 3 s 4 u 5 u 5u5b1AADFD@>5 Q!NcJYmIbgjsaKJOzBcs:localhost:8800m&\ (>4 Q!biBIcqnGelHvLnpkOu:localhost:8800m&\>3 Q!yNfCaBMPezurwkJRAX:localhost:8800m&\>2 Q!BKZJsoFNhiLTDYNclB:localhost:8800m&\>1 Q!aiOswwhoZqjhcjzbzc:localhost:8800m&\ !>0 Q!IYxUkyFHOgvhLpdkOA:localhost:8800m&\>/ Q!anErKtXIsVKEEsrzWM:localhost:8800m&\>. Q!TcCLuIBUrtFqghDgay:localhost:8800m&\>- Q!yWhIsLsgNVGcnELrDS:localhost:8800m&\ !<, Q  !wCsDjKBtuUbrmZgjsB:localhost:8800m&\?<+ Q  !SpXEytywhTbAftyVBr:localhost:8800m&\C<* Q  !itfjLXhEaORJLkbfVS:localhost:8800m&\?<) Q  !GsjDgpaxdwYfnefiWO:localhost:8800m&\:>( Q!jomrpmwwQQtghscizn:localhost:8800m&\<' Q  !ABHbfUdkHCJksMsaUt:localhost:8800m&\n<& Q  !DntdfAPfCfgdOoRMdl:localhost:8800m&\[<% Q  !THHfVSOSWiBQTHRAnJ:localhost:8800m&\m=$ Q !KetCYFxrTxawNOGnOf:localhost:8800m&\ .p=# Q !JiUawCFQnodcpssOfK:localhost:8800m&\ +=" Q !NgkQVVUNzoyCVPtckM:localhost:8800m&\ #f=! Q !lgejtcwlywOoIXwEgy:localhost:8800m&\L= Q !PUIxAaiCnbqaVbawGu:localhost:8800m&\ +n= Q !OJilSqnQvLgoXSqRaW:localhost:8800m&\= Q !SrwdtDytJDUBVZOueF:localhost:8800m&\< Q  !PVyTvKbqnjSXfGWAMy:localhost:8800m&\8. 3 !13:localhost:42455m&\a. 3 !12:localhost:42455m&\ = Q !nhbUIcIbhuXkRqfeDa:localhost:8800m&\/ 3!11:localhost:42455m&\x. 3 !10:localhost:42455m&\ - 1 !9:localhost:42455m&\ = Q !SnROoiDBapNNtMmKnT:localhost:8800m&\= Q !uGpSboYkgxVNOqNeUG:localhost:8800m&\= Q !DSFBpkqfnvBQbGoMUK:localhost:8800m&\= Q !ZKPJvrCZHMHPEksYDc:localhost:8800m&\= Q !PgNDjhhIBAXKryuGKy:localhost:8800m&\ $ = Q !vnFXnkCSfTbsSNKrtg:localhost:8800m&\ = Q !jRuDexjFzIDOKbwDJQ:localhost:8800m&\= Q !KcXNWNfbLcYsBKZHIp:localhost:8800m&\= Q !dBfASZrfiFeSKTjYJm:localhost:8800m&\ " = Q !taANXnGBZntAreRurn:localhost:8800m&\< Q  !tcYctHPiaKzsKgrXlU:localhost:8800m&\= Q !drnXStKXkNQkouqUAg:localhost:8800m&\< Q  !zScKnCZCFPIIodAiQj:localhost:8800m&\= Q !LazKtcHZriKzCvvGwV:localhost:8800m&\ #= Q !lEJUJZxqZPKZetemiR:localhost:8800m&\  0z= Q !bLWyXaXdvUhdSAooUz:localhost:8800m&\< Q  !YmRuIWixFpaqEeDQLZ:localhost:8800m&\= Q !bjdLCdBwkKaihRIRFG:localhost:8800m&\< Q  !qzrZzAieCgGSbpKOQR:localhost:8800m&\= Q !qzurjQHmiriwjaUMhO:localhost:8800m&\* 1 !0:localhost:41985m&\* 1 !0:localhost:44405m&\* 1 !0:localhost:37265m&\* 1 !8:localhost:42455m&\*~ 1 !7:localhost:42455m&\<} Q  !TSFcaXDBqrCREHRHxv:localhost:8800m&\K=| Q !AOEdqVKPFddrqbKPOL:localhost:8800m&\<{ Q  !wBBQYEPjQGnoAzDpEu:localhost:8800m&\8=z Q !oZGRyBAkNDrEeiAqWL:localhost:8800m&\>:-y 1 !6:localhost:42455m&\ =x Q !cRbfhxZdPstEsPGPAu:localhost:8800m&\H=w Q !sAWFpvSUPExZLVcPEd:localhost:8800m&\H=v Q !YpcmaMNMzjvtgYtrli:localhost:8800m&\ 8l D `8X]c!E@anon-20191002_181700-648:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQoFUMVLCFOGG127.0.0.1Perl + Net::Async::HTTP/0.44mRW]c!E@anon-20191002_181700-647:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwoJJTUBBNUOS127.0.0.1Perl + Net::Async::HTTP/0.44mNV]c!E@anon-20191002_181700-646:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3goHFMIURTAJA127.0.0.1Perl + Net::Async::HTTP/0.44m♪U]c!E@anon-20191002_181700-645:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQoTQRBSFDPVG127.0.0.1Perl + Net::Async::HTTP/0.44mlT]c!E@anon-20191002_181700-644:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAoINFGSFBNKU127.0.0.1Perl + Net::Async::HTTP/0.44mlqS]c!E@anon-20191002_181700-643:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwoNELMCBWNVQ127.0.0.1Perl + Net::Async::HTTP/0.44m9WR]c!E@anon-20191002_181700-642:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgoFQRREBIQEQ127.0.0.1Perl + Net::Async::HTTP/0.44mQ]c!E@anon-20191002_181700-641:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQoPFGGCSSRVI127.0.0.1Perl + Net::Async::HTTP/0.44m}P]c!E@anon-20191002_181700-640:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgoJIZUEMVYQN127.0.0.1Perl + Net::Async::HTTP/0.44mO]c!E@anon-20191002_181700-639:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAoVIDPYYIORG127.0.0.1Perl + Net::Async::HTTP/0.44mᷱ 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( hXPH@80(  x p h ` X P H @ 8 0 (    x p h ` X ( P H @ 8 0    h x p ` X P H @ 8 @  >  =  <  ;  9  9  8  7  6  5  2  2  1  0  /  .  ,  *  *  )  (  '  &  #  #  "  !                                     ~  }  |  {  z  y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                       }  }  |  z  z  y  x  w  v  t  r  r q p o n k k j i h g e c c b a ` _ ] [ [ Z Y X W S S R Q P O N M K J I H G E D C B @ ? > = ; : 9 8 6 5 4 3 1 0 / . + + * ) ( ' $ # " !                                                              ~ } 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 A  ?  >  =  <  ;  :  9  8  7  6  4  3  2  1  0  /  -  ,  +  *  )  (  '  %  $  #  "  !                                     ~  }  |  {  z  y  x  w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                         ~  }  |  {  z  y  x  w  u  t  s r q p o m l k j i h f e d c b a ` ^ ] \ [ Z Y X U T S R Q P O N L K J I H F E D C A @ ? > < ; : 9 7 6 5 4 2 1 0 / - , + * ) ( % $ # " !                                                             ~ } a} { y w u sqomkigeca~|eeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~{eeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~zeeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800~yeeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~xeeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~weeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800~veeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~ueeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~teeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800~seeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~reeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~qeeQ$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~peeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800~oeeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~neeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~meeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~leeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~keeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~jeeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~ieeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~heeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~geeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~feeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~eeeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~deeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~ceeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~beeQ$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~aeeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800~`eeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~_eeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800~^eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800  v4eQay$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3281}{"auth_events": ["$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c"], "prev_events": ["$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c"], "type": "m.room.member", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-640", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-640:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043451856, "hashes": {"sha256": "uDB1zInKDAlpdAcek+Q6McQ7VuRAmkJRQurMyWPQW4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6zdkjr3Jj+USQrjdQgVMZ+N5X/qHSo4DfSSV5uWVYpZ7yI1sGIYVA5SHB11v0LTllnrnIK7m5Bm4mzbutdi2CQ"}}, "unsigned": {"age_ts": 1570043451856}}i3eQa_$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3280}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-640:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043450705, "hashes": {"sha256": "TDp8wcItsQzgdjf4f6+1z4kSFLWyk4L1kkCPYv9lg8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kJInPjjvnBaXl2gF609EEO0S5EIk4E/Sf8ACA8yhju87iWF5c9rS+iVlez2UmJIc6qcaR6hBXzueixVZF6EpAg"}}, "unsigned": {"age_ts": 1570043450705}}}2eQ33$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3279}{"prev_events": ["$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps"], "origin_server_ts": 1570043448815, "content": {"membership": "join"}, "auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ"], "sender": "@__ANON__-17:localhost:42455", "hashes": {"sha256": "A+9z3BXA2efLMVJOOjU0MFZk/ZXMrxC4l3q0cY8542k"}, "depth": 7, "state_key": "@__ANON__-17:localhost:42455", "origin": "localhost:42455", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "nkA/EaY6HEXvVilYE6rO9dihfYvIpQK7Zic1JuqMIEJA0Xbr32/RsrHC1ufnBUUG8h5ZZMTlTBLFq64SUDfJAw"}}, "unsigned": {}}}1eQc$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "txn_id": "598", "stream_ordering": 3278}{"auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo"], "type": "m.room.message", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043448006, "hashes": {"sha256": "prOCB3TNyDOE5Dq5hK3tqs0ja9oayY4h+q5eCRSZy80"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vyo1TxrLlAZW3SloBYepgJ/YgJp2Oxobby2/8fhHPZzQcKK5GOClv1xuMeuJwbZMF32XFXDBhJRaPY8+hD//BQ"}}, "unsigned": {"age_ts": 1570043448006}} A,Vl:r {V J  P  W % ` /  h 6> pp1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4jA$lolredact:localhost:42455B1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm80e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc31e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho0e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A0e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI0e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe450e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgS0e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8a0e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4`1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf81e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM0e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8]1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wb1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo80e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc=1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMx0e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0L0e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ.1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk11e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC681e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE81e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc?0e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgt0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0 )(Pl(Dl<X t 0 L h  @ \ x((DlD4AEQ@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800AEQ@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800M~]Q@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800A}EQ@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800M|]Q@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800A{EQ@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800Mz]Q@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800AyEQ@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800Mx]Q@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800AwEQ@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800Mv]Q@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800AuEQ@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800Mt]Q@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800AsEQ@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800M]Q@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800AEQ@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800M]Q@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800M]Q@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800AEQ@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800M]Q@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800M]Q@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800AEQ@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800M]Q@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800AEQ@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M]Q@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800AEQ@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800M]Q@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800M ]Q@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800A EQ@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800M ]Q@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800M ]Q@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800A EQ@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800M]Q@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800M]Q@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800AEQ@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800M]Q@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800M]Q@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800AEQ@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800M]Q@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800=]1@anon-20191002_181700-642:localhost:8800!6:localhost:424551E1@__ANON__-20:localhost:42455!6:localhost:42455 2NC Q  B  B  B  d w(;Na!od YNLmQL$1570043501341JmcnI:localhost:8800sha256򰑒}Sf, A VleL$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4sha256Zi4S(L\MDoW`VkeL$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620sha256s'h0nU ƁOAبLfmVjeL$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gsha256(*-SF Nd~SrVieL$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEsha256;G$aqS OoF-b L+P:VheL$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8sha256%7rj۵A#50cVgeL$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Esha256m{M7$n>~v)~"lU?VfeL$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQsha256CߘٱQ'{ ~"Q RTVeeL$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0Isha256$Z 0aLQ' apyGRBVdeL$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgsha256ʿ$ a 6m7UU M8VceL$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88sha256{""WPuS9LϒKrEX|VbeL$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2Asha256qX*q8nYف<:DN5߀c#`VaeL$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqosha256/ʗsoE 4^#$0gW,:=`3L$29:localhost:42455sha256qe1BCu y 0u?zPL_QL$1570043486339YbYQQ:localhost:8800sha256^|+HLTQL$1570043478328DMkRS:localhost:8800sha256cɷ+KBOT"GILSQL$1570043477327AgpMM:localhost:8800sha2562<j𣮦ݰ~=BVE0 5LRQL$1570043477326hyTqo:localhost:8800sha256Z~_!Dfъj9q ZTLQQL$1570043476325vnEPO:localhost:8800sha256 $cr gJa~L!έ=P3L$28:localhost:42455sha2566 M~!\;H`]IhQF^X켾=O3L$27:localhost:42455sha256 !f 3$h 3ִ=N3L$26:localhost:42455sha256<6+=0=v}޴&#Zz[.=M3L$25:localhost:42455sha256wX]юaΔ]i@2ZHk=L3L$24:localhost:42455sha256>lr?3*j6Z"-JM7 =K3L$23:localhost:42455sha256C>S\Th 0\B,-2=J3L$22:localhost:42455sha2568$8,iZT{Lk>^-PE=I3L$21:localhost:42455sha25636ɢB4k)r^%x`2y=G3L$19:localhost:42455sha256Y:kc@t7SnL<ʑzxQLFQL$1570043468324DLhaB:localhost:8800sha256ml *8HD5^w7To6vz=E3L$18:localhost:42455sha256lXIƚ„>o6mh']͒ u=D3L$17:localhost:42455sha256R'A$e55FXW$ޓ*Ԙ=C3L$16:localhost:42455sha256 Hɢb(K-CŬ[d {b>VBeL$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-Usha256}kځdBIQoV*/VAeL$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LAsha256xWj_~7Sk׉>԰V@eL$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gsha2569:!s FAAmqǮ $s {|hV?eL$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18sha256fܽK B4F&NcMޯ_V>eL$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecsha2565Ol=9T]2G%,QMMV=eL$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcsha256vmB$l`$kxOE|y%)2V<eL$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYsha256U>iPLhĖQF$ %rvm?#  G8eQa$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3285}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y"], "type": "m.room.history_visibility", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"history_visibility": "invite"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043456414, "hashes": {"sha256": "NB442nzZ/kaK6xZa7E2ECth6eApvZmbGS5txJd5byi8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XtmnSx6842ytRNzYNbUacYBu5pFxH5NW3hkLdRwijlb2aLb5IAuYJF728QDsyWRro0n4FNXTbpHNGsaCulJzBA"}}, "unsigned": {"age_ts": 1570043456414, "replaces_state": "$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y"}}7eQa$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3284}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo"], "type": "m.room.history_visibility", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043454998, "hashes": {"sha256": "1rRqGzA7Bfn/hf90XQJfVj8F07eFXuGDUTdM0gaa4uU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zp6+PrZGy0qYSk1c8zVaaDJP4a1mAAPp34SxpEoiVWdayNstMYLi5qbIm+DmNy5kyd4pTNyCrqSxn7ogn7pxAw"}}, "unsigned": {"age_ts": 1570043454998}}t6eQau$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3283}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU"], "type": "m.room.join_rules", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043453562, "hashes": {"sha256": "xyCa/t82ebd9MrQ8wGiRRE9nudTSQ6wUOvwyyoLh8aI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nOF085dxg8/R0rkVVGkoI3SjzljB1mR4zr6ETI7zYxorJWVv6/bO/SKAOpjb+u3WITBpI/rllVpyXfSjwPyOCw"}}, "unsigned": {"age_ts": 1570043453562}}k5eQac$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3282}{"auth_events": ["$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "type": "m.room.power_levels", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"users": {"@anon-20191002_181700-640:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043452610, "hashes": {"sha256": "M4fl2Y+TMjqtAIqbEzqAgCmWCFKoEfD8/FXdUkDVKDI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bt9+PiME9zCvBOgi6RyFLlH+EIVnMTyeinhSGE2+OkHCVf0VgjFNVcQwu/dnayBAr0luhwXqd/ZnkLKjIdRlBw"}}, "unsigned": {"age_ts": 1570043452610}} '~z v r n j f &WWW;_9]k(QQQ$1570043485338vbLwS:localhost:8800$1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k'QQQ$1570043484337ylFDA:localhost:8800$1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k&QQQ$1570043484336qKOPD:localhost:8800$1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k%QQQ$1570043483335oDIDb:localhost:8800$1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k$QQQ$1570043483334ejWtI:localhost:8800$1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k#QQQ$1570043482333DxDEq:localhost:8800$1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k"QQQ$1570043481332XroCo:localhost:8800$1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k!QQQ$1570043481331UNaWT:localhost:8800$1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k QQQ$1570043480330seKnV:localhost:8800$1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043479329kvsXb:localhost:8800$1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043478328DMkRS:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043477327AgpMM:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043477326hyTqo:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800=331$28:localhost:42455$27:localhost:42455!6:localhost:42455=331$27:localhost:42455$26:localhost:42455!6:localhost:42455=331$26:localhost:42455$25:localhost:42455!6:localhost:42455=331$25:localhost:42455$24:localhost:42455!6:localhost:42455=331$24:localhost:42455$23:localhost:42455!6:localhost:42455=331$23:localhost:42455$22:localhost:42455!6:localhost:42455=331$22:localhost:42455$21:localhost:42455!6:localhost:42455=331$21:localhost:42455$20:localhost:42455!6:localhost:42455=331$20:localhost:42455$19:localhost:42455!6:localhost:42455=331$19:localhost:42455$18:localhost:42455!6:localhost:42455LQ31$1570043468324DLhaB:localhost:8800$28:localhost:42455!6:localhost:42455=331$18:localhost:42455$17:localhost:42455!6:localhost:42455=331$17:localhost:42455$16:localhost:42455!6:localhost:42455eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800eeQ$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800eeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800 .$0 H M q } a $sCl+T}@i9b!Vu1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:t1' 3 !6:localhost:42455m.room.create$16:localhost:42455>s1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vr1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:q1' 3 !6:localhost:42455m.room.create$16:localhost:42455>p1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vo1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:n1' 3 !6:localhost:42455m.room.create$16:localhost:42455>m1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vl1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:k1' 3 !6:localhost:42455m.room.create$16:localhost:42455>j1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vi1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:h1' 3 !6:localhost:42455m.room.create$16:localhost:42455>g1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vf1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:e1' 3 !6:localhost:42455m.room.create$16:localhost:42455>d1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vc1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:b1' 3 !6:localhost:42455m.room.create$16:localhost:42455>a1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455V`1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:_1' 3 !6:localhost:42455m.room.create$16:localhost:42455>^1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455V]1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:\1' 3 !6:localhost:42455m.room.create$16:localhost:42455>[1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455VZ1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:Y1' 3 !6:localhost:42455m.room.create$16:localhost:42455qX1']Q !6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800$1570043468324DLhaB:localhost:8800:W1' 3 !6:localhost:42455m.room.create$16:localhost:42455>V1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455VU1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455TQ'Ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-USQ'Ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455$YoQ2ZzWjgeFI0dmpfkyF4jlSW67oM-yIsqQN18YRzScoRQ? e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842goQQ? e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18gPQ/ e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rules$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTeciOQ3 e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc NQ']e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYcMQ' e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.create$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0LQ'Ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gKQ'Ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455$G88iWOWyBTNt8tzS3RFpUCIyhx4RzVdnLBSUKKU2pFMoJQ? e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1UoIQ? e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YgHQ/ e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rules$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo X S  u # s<BfnQ)Q ]$1570043481332XroCo:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800mO^mOb@anon-20191002_181700-643:localhost:8800mQ)Q ]$1570043481331UNaWT:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800mMmM#@anon-20191002_181700-643:localhost:8800lQ)Q ]$1570043480330seKnV:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800mJmJ@anon-20191002_181700-643:localhost:8800"kQ?Q ]$1570043479329kvsXb:localhost:8800m.room.history_visibility!oZGRyBAkNDrEeiAqWL:localhost:8800mDmFl@anon-20191002_181700-643:localhost:8800jQ/Q ]$1570043478328DMkRS:localhost:8800m.room.join_rules!oZGRyBAkNDrEeiAqWL:localhost:8800mB mBj@anon-20191002_181700-643:localhost:8800iQ3Q ]$1570043477327AgpMM:localhost:8800m.room.power_levels!oZGRyBAkNDrEeiAqWL:localhost:8800m?pm?@anon-20191002_181700-643:localhost:8800hQ'Q ]$1570043477326hyTqo:localhost:8800m.room.member!oZGRyBAkNDrEeiAqWL:localhost:8800m<|m<@anon-20191002_181700-643:localhost:8800g Q'Q  ]$1570043476325vnEPO:localhost:8800m.room.create!oZGRyBAkNDrEeiAqWL:localhost:8800m9m9@anon-20191002_181700-643:localhost:8800fQ'1 ] $1570043468324DLhaB:localhost:8800m.room.member!6:localhost:42455 m"m@anon-20191002_181700-642:localhost:8800ob3/1 E$18:localhost:42455m.room.join_rules!6:localhost:42455mm@__ANON__-20:localhost:42455ia 3'1  E$17:localhost:42455m.room.member!6:localhost:42455m m@__ANON__-20:localhost:42455i`3'1 E$16:localhost:42455m.room.create!6:localhost:42455m m@__ANON__-20:localhost:42455_e'Q E$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-Um.room.member!cRbfhxZdPstEsPGPAu:localhost:8800mmx@__ANON__-19:localhost:42455!^e)Q ]$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LAm.room.message!cRbfhxZdPstEsPGPAu:localhost:8800mCm@anon-20191002_181700-641:localhost:8800,]e?Q ]$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gm.room.history_visibility!cRbfhxZdPstEsPGPAu:localhost:8800m m@anon-20191002_181700-641:localhost:8800,\e?Q ]$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18m.room.history_visibility!cRbfhxZdPstEsPGPAu:localhost:8800mm @anon-20191002_181700-641:localhost:8800$[e/Q ]$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecm.room.join_rules!cRbfhxZdPstEsPGPAu:localhost:8800m&m[@anon-20191002_181700-641:localhost:8800&Ze3Q ]$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcm.room.power_levels!cRbfhxZdPstEsPGPAu:localhost:8800mgm@anon-20191002_181700-641:localhost:8800 Ye'Q ]$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYm.room.member!cRbfhxZdPstEsPGPAu:localhost:8800mm`@anon-20191002_181700-641:localhost:8800X e'Q  ]$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0m.room.create!cRbfhxZdPstEsPGPAu:localhost:8800mm@anon-20191002_181700-641:localhost:8800We'Q E$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gm.room.member!sAWFpvSUPExZLVcPEd:localhost:8800mm@__ANON__-18:localhost:42455!Ve)Q ]$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4m.room.message!sAWFpvSUPExZLVcPEd:localhost:8800mRm@anon-20191002_181700-640:localhost:8800,Ue?Q ]$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Um.room.history_visibility!sAWFpvSUPExZLVcPEd:localhost:8800mm@anon-20191002_181700-640:localhost:8800,Te?Q ]$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Ym.room.history_visibility!sAWFpvSUPExZLVcPEd:localhost:8800mm@anon-20191002_181700-640:localhost:8800$Se/Q ]$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQom.room.join_rules!sAWFpvSUPExZLVcPEd:localhost:8800mzm@anon-20191002_181700-640:localhost:8800 6RM H C  | N h : c |/MHC>C\u(JJQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517350ncbDd:localhost:8800JIQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517349uVTMj:localhost:8800JHQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043516348vThZG:localhost:8800JGQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043515347LGRKl:localhost:8800JFQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043506346EEQDj:localhost:8800JEQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043504345DCjlJ:localhost:8800JDQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503344dJwGF:localhost:8800JCQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503343snlnn:localhost:8800JBQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043502342mVJmO:localhost:8800JAQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043501341JmcnI:localhost:8800T@Qe !AOEdqVKPFddrqbKPOL:localhost:8800$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620T?Qe !AOEdqVKPFddrqbKPOL:localhost:8800$0brtZF9nLBiYjM_kc5S7_Se8gmf_EbCFcJAVj4dI0FYT>Qe !AOEdqVKPFddrqbKPOL:localhost:8800$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gT=Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoET<Qe !AOEdqVKPFddrqbKPOL:localhost:8800$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8T;Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9ET:Qe !AOEdqVKPFddrqbKPOL:localhost:8800$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQT9Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0IT8Qe !AOEdqVKPFddrqbKPOL:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgT7Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88T6Qe !AOEdqVKPFddrqbKPOL:localhost:8800$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2AT5Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo;4Q3 !oZGRyBAkNDrEeiAqWL:localhost:8800$29:localhost:42455J3QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043486340vukns:localhost:8800J2QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043479329kvsXb:localhost:8800J1QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043478328DMkRS:localhost:8800J0QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477327AgpMM:localhost:8800J/QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477326hyTqo:localhost:8800J.QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043476325vnEPO:localhost:8800+-13 !6:localhost:42455$28:localhost:42455+,13 !6:localhost:42455$27:localhost:42455++13 !6:localhost:42455$26:localhost:42455+*13 !6:localhost:42455$25:localhost:42455+)13 !6:localhost:42455$24:localhost:42455+(13 !6:localhost:42455$23:localhost:42455+'13 !6:localhost:42455$22:localhost:42455+&13 !6:localhost:42455$21:localhost:42455+%13 !6:localhost:42455$20:localhost:42455+$13 !6:localhost:42455$19:localhost:42455+#13 !6:localhost:42455$18:localhost:42455+"13 !6:localhost:42455$17:localhost:42455+!13 !6:localhost:42455$16:localhost:42455: 1Q !6:localhost:42455$1570043468324DLhaB:localhost:8800TQe !cRbfhxZdPstEsPGPAu:localhost:8800$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-UTQe !cRbfhxZdPstEsPGPAu:localhost:8800$YoQ2ZzWjgeFI0dmpfkyF4jlSW67oM-yIsqQN18YRzScTQe !cRbfhxZdPstEsPGPAu:localhost:8800$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gTQe !cRbfhxZdPstEsPGPAu:localhost:8800$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18TQe !cRbfhxZdPstEsPGPAu:localhost:8800$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecTQe !cRbfhxZdPstEsPGPAu:localhost:8800$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcTQe !cRbfhxZdPstEsPGPAu:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYTQe !cRbfhxZdPstEsPGPAu:localhost:8800$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0TQe !sAWFpvSUPExZLVcPEd:localhost:8800$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gTQe !sAWFpvSUPExZLVcPEd:localhost:8800$G88iWOWyBTNt8tzS3RFpUCIyhx4RzVdnLBSUKKU2pFMTQe !sAWFpvSUPExZLVcPEd:localhost:8800$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U  v<eQay$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3289}{"auth_events": ["$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0"], "prev_events": ["$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0"], "type": "m.room.member", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-641", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-641:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043461112, "hashes": {"sha256": "R0TeL6X3gsGVGXP+iWcHUb4gAbGClvpy+DDuLgZloTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7xERLDp/CQvq8IyUeRgeZx6+czD9ihBaQmR/TvFnEMc1X54jD1hYH2/L0DIKHETYjWSsm3hqX6iFZFoUuC9LBg"}}, "unsigned": {"age_ts": 1570043461112}}i;eQa_$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3288}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-641:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043459806, "hashes": {"sha256": "PRrlPGci35/ultDWTh3cDRb+gUHxuEb/yRHkHi4BQGY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w/f1cP/zS5ADX5yXG9KKQ//XvDXPjmtume06WDHViIkC3JCdJKgKBXqnrlpzNRwAY6XtqyQ2fdBkyIVmmMZAAg"}}, "unsigned": {"age_ts": 1570043459806}}}:eQ33$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3287}{"sender": "@__ANON__-18:localhost:42455", "hashes": {"sha256": "u1GaATIvyfdjvG2HbOb/qwi8qcQ5aVYFh5PJ2XAnWTs"}, "origin": "localhost:42455", "state_key": "@__ANON__-18:localhost:42455", "depth": 8, "type": "m.room.member", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "prev_events": ["$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4"], "origin_server_ts": 1570043458205, "content": {"membership": "join"}, "auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo"], "signatures": {"localhost:42455": {"ed25519:1": "0ACg/2i+23e14wLVZ3wQa0aM8z5ZnriTHKm8L6TEIS1FktiSKY3AQZMjj7P19nMghui4DPapJxMCrU7daD/hCQ"}}, "unsigned": {}}}9eQc$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "txn_id": "599", "stream_ordering": 3286}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U"], "type": "m.room.message", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043457362, "hashes": {"sha256": "yyBC0ch6GFaQgEHmC8FSa2Mxl1fENRfxJrJzWpXNNzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QjiVXM1ItrcfSViG6r7arVgPdWoidX2cgTHAZnh1GzhDv1w32eBtLUho4RU3gXI4rhsHSTI/V7vPHIxu7uTBBQ"}}, "unsigned": {"age_ts": 1570043457362}} %Uq8 6 T  p 7 T  p 7 S o8e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40sha2568e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0sha256}8e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4sha256r8e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIsha256{8e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6Esha2568e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIsha2568e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIsha256 8e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMsha256 |8e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxAsha256)8e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5ksha256W8e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbosha2568e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Ysha256 8e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwsha256 8e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0sha2568e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4sha256R8e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAsha2568e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcsha2568e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7Isha256M8e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4sha25687e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMsha256Y8e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUsha2568e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgsha256Y8e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFAsha256~8e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jwsha256_8e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQsha256m8e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMsha256 38e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuosha256 8e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAsha2568e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmssha256 8e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrosha256E8e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIsha2568e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7Asha2568e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEsha2568e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0sha256 k8e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6ssha256 8e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8sha256 8e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIsha256 4DT)}FoDR' { P % y N # w L ! u J  s H q*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # #*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " "*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! !*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800   RU/aIOag5n< tBzj8q? w E , O  ) U # [ ) [ a /#1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU 1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk 1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI 1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso (1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk z1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI S1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A H1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 21e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U l1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0 1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B41e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1$2:localhost:42455 3$29:localhost:42455 Q1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY 1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgT1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMK1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA81e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kK1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE 1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEz1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cJ1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg !1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMn1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I +1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kd1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI/1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYn1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI H1$3:localhost:44405 f1$3:localhost:42455 1$3:localhost:41985 g1$3:localhost:37265 e3$39:localhost:42455 x1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo3$38:localhost:42455 m1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoP3$37:localhost:42455 d1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug 3$33:localhost:42455 c1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj41e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYX1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUl1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsge 7h`8pHX0h X 0  h @  x P ( ` 8  p H 'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800   G@eQa$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3293}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18"], "type": "m.room.history_visibility", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043465126, "hashes": {"sha256": "ZJOjpulCPq7csAlIDtv8rQOGpDRi4SG5Yv2svCJV1rg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+SVz/BU4Dl+RUIs+EzVI8nwFT2JkUCJdli2PUaGdlh2becpwU+B0q2K7TkKdOAgQl6lgwf9J6TZWyAvQtiMIBw"}}, "unsigned": {"age_ts": 1570043465126, "replaces_state": "$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18"}}?eQa$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3292}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec"], "type": "m.room.history_visibility", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043463833, "hashes": {"sha256": "UOXZTrh/stCZNgqK6LpnbC4k+DrVm79L6YweoLNKStA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CY+XJyfAouhEjch/HUy9o2j02NCPPp/AUkcqJDkbz7vS4uZW/5afQCA2VPc0TiierXoWOGjaQOLSQwH5J0zzBA"}}, "unsigned": {"age_ts": 1570043463833}}t>eQau$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3291}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc"], "type": "m.room.join_rules", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043462950, "hashes": {"sha256": "Y/rn9NJGInOGlX7VGSj3pd2R/0SgZ8KuMDdYpQnQX6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITAUPazUsNUMrYHSsxZdcNwmrJD1sG9pblQm0UiShoMTXt0ZPwDVuaEjw7p8p71phCohm9sxRqpKc/CrkJfgBg"}}, "unsigned": {"age_ts": 1570043462950}}k=eQac$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3290}{"auth_events": ["$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "type": "m.room.power_levels", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"users": {"@anon-20191002_181700-641:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043461991, "hashes": {"sha256": "r1YKcr7diJW0jX9WISwmK0+XKSKFNirKYOOEbK4LloY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+KAO/2qhFov7lnT+8Nuz64yBcFHkHSWPmZll3nUnC50kQrKaDMKZU7BnJZNKAfboJ8IHsnVhgGDUK+MeCkuAg"}}, "unsigned": {"age_ts": 1570043461991}}  \ T LtD<4,$| deeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800feeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800!eeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800|eeQ$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800 ́eeQ$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:88002eeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800xeeQ$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800!eeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800keeQ$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800peeQ$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800eeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800 eeeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800 ΁eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800 f L  z 6 H p2v<%Q/Q ]$1570043536367lvGLr:localhost:8800m.room.join_rules!YmRuIWixFpaqEeDQLZ:localhost:8800m#m#m@anon-20191002_181700-655:localhost:8800$Q3Q ]$1570043535366hhblx:localhost:8800m.room.power_levels!YmRuIWixFpaqEeDQLZ:localhost:8800mm @anon-20191002_181700-655:localhost:8800#Q'Q ]$1570043534365WVAkx:localhost:8800m.room.member!YmRuIWixFpaqEeDQLZ:localhost:8800mm@anon-20191002_181700-655:localhost:8800" Q'Q  ]$1570043533364iwqCT:localhost:8800m.room.create!YmRuIWixFpaqEeDQLZ:localhost:8800mml@anon-20191002_181700-655:localhost:8800{!3'Q E$39:localhost:42455m.room.member!bjdLCdBwkKaihRIRFG:localhost:8800m_m@__ANON__-28:localhost:42455" Q?Q ]$1570043530362jRUtV:localhost:8800m.room.history_visibility!bjdLCdBwkKaihRIRFG:localhost:8800m Dm&@anon-20191002_181700-654:localhost:8800Q/Q ]$1570043529361Oytod:localhost:8800m.room.join_rules!bjdLCdBwkKaihRIRFG:localhost:8800m Nm @anon-20191002_181700-654:localhost:8800Q3Q ]$1570043528360cetnZ:localhost:8800m.room.power_levels!bjdLCdBwkKaihRIRFG:localhost:8800mm<@anon-20191002_181700-654:localhost:8800Q'Q ]$1570043527359ScxWW:localhost:8800m.room.member!bjdLCdBwkKaihRIRFG:localhost:8800m!m@anon-20191002_181700-654:localhost:8800 Q'Q  ]$1570043527358wChxc:localhost:8800m.room.create!bjdLCdBwkKaihRIRFG:localhost:8800mm@anon-20191002_181700-654:localhost:8800"Q?Q ]$1570043525357VEfrE:localhost:8800m.room.history_visibility!qzrZzAieCgGSbpKOQR:localhost:8800mm@anon-20191002_181700-653:localhost:8800Q/Q ]$1570043524356NlySy:localhost:8800m.room.join_rules!qzrZzAieCgGSbpKOQR:localhost:8800m:m@anon-20191002_181700-653:localhost:8800Q3Q ]$1570043523355SbJjm:localhost:8800m.room.power_levels!qzrZzAieCgGSbpKOQR:localhost:8800mm@anon-20191002_181700-653:localhost:8800Q'Q ]$1570043522354IAAap:localhost:8800m.room.member!qzrZzAieCgGSbpKOQR:localhost:8800m>m@anon-20191002_181700-653:localhost:8800 Q'Q  ]$1570043521353geZrN:localhost:8800m.room.create!qzrZzAieCgGSbpKOQR:localhost:8800mmn@anon-20191002_181700-653:localhost:8800{3'Q E$38:localhost:42455m.room.member!qzurjQHmiriwjaUMhO:localhost:8800mmh@__ANON__-26:localhost:42455"Q?Q ]$1570043518351Popej:localhost:8800m.room.history_visibility!qzurjQHmiriwjaUMhO:localhost:8800m/m@anon-20191002_181700-652:localhost:8800Q/Q ]$1570043517350ncbDd:localhost:8800m.room.join_rules!qzurjQHmiriwjaUMhO:localhost:8800mmܓ@anon-20191002_181700-652:localhost:8800Q3Q ]$1570043517349uVTMj:localhost:8800m.room.power_levels!qzurjQHmiriwjaUMhO:localhost:8800mmL@anon-20191002_181700-652:localhost:8800Q'Q ]$1570043516348vThZG:localhost:8800m.room.member!qzurjQHmiriwjaUMhO:localhost:8800m^m@anon-20191002_181700-652:localhost:8800 Q'Q  ]$1570043515347LGRKl:localhost:8800m.room.create!qzurjQHmiriwjaUMhO:localhost:8800mmN@anon-20191002_181700-652:localhost:8800g1'1 ?$3:localhost:41985m.room.member!0:localhost:41985mdm @__ANON__:localhost:41985g 1'1 ?$3:localhost:44405m.room.member!0:localhost:44405mm²@__ANON__:localhost:44405g 1'1 ?$3:localhost:37265m.room.member!0:localhost:37265mEm@__ANON__:localhost:37265k 3'1 E$37:localhost:42455m.room.member!8:localhost:42455mⶢmⶬ@__ANON__-25:localhost:42455k 3'1 E$33:localhost:42455m.room.member!7:localhost:42455mⲭmⲹ@__ANON__-24:localhost:42455Q'Q ]$1570043506346EEQDj:localhost:8800m.room.member!TSFcaXDBqrCREHRHxv:localhost:8800mm⮌@anon-20191002_181700-646:localhost:8800 Z Z#D31_) $17:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -3}{"origin_server_ts": 1570043468813, "prev_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}]], "event_id": "$17:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}]], "content": {"membership": "join"}, "hashes": {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}, "sender": "@__ANON__-20:localhost:42455", "type": "m.room.member", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "depth": 1, "state_key": "@__ANON__-20:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "uD/5Ju6dsgM9TYRMDvCigoNIC2bvSOnpd6U1dEu0hYp4GCSqRzR3551K9U2oy4/Qq51yk91/1tykz/WAbKwdBw"}}, "unsigned": {}}xC31_S $16:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -2}{"origin_server_ts": 1570043468812, "prev_events": [], "auth_events": [], "event_id": "$16:localhost:42455", "content": {"creator": "@__ANON__-20:localhost:42455"}, "hashes": {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.create", "depth": 0, "state_key": "", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "L5rXqt1sHiRx9fwvu3KSxc3VxvhdcwFdIE8F8HJMWMJDfWHHhDThYReEhwdfWxUWvPCBs3TctO57Drv914q2BQ"}}, "unsigned": {}}}BeQ33$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3295}{"origin_server_ts": 1570043466987, "prev_events": ["$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA"], "auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec"], "content": {"membership": "join"}, "hashes": {"sha256": "MWY5YLG1x9Lbt/bAd3wwvspKZ8j4o6vjz7/RQ+p0Ca0"}, "sender": "@__ANON__-19:localhost:42455", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "type": "m.room.member", "depth": 8, "state_key": "@__ANON__-19:localhost:42455", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "UU1Fn7ITprORng0+nNNQScIcTcPy9FqRq3UopZzAx5/U/AgiApx1viUIc4Nh9iNeZhErlGxSqGymG0hNFrnhBw"}}, "unsigned": {}}}AeQc$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "txn_id": "600", "stream_ordering": 3294}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g"], "type": "m.room.message", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043466051, "hashes": {"sha256": "9d76ZSnz51RDvRpMAJMDIuE5YYC4zqDyWMiFpNteOWE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9BdPIyHdDo+JzRZAKHoZX7UW7tSQ3gCQKIJ/FUDzZeKtcArw0ePG4Xr/zwW/K9zAdeuUoQH8OLRyiUfCPxs4DA"}}, "unsigned": {"age_ts": 1570043466051}} #}> r $ J p  ) O531/-+)'~eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800[3QQ$29:localhost:42455$1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800[3QQ$29:localhost:42455$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800[3QQ$29:localhost:42455$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043479329kvsXb:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043479329kvsXb:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043479329kvsXb:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043478328DMkRS:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043478328DMkRS:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043478328DMkRS:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043477327AgpMM:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043477327AgpMM:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043477326hyTqo:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800KQ31$1570043468324DLhaB:localhost:8800$18:localhost:42455!6:localhost:42455KQ31$1570043468324DLhaB:localhost:8800$16:localhost:42455!6:localhost:42455<331$18:localhost:42455$17:localhost:42455!6:localhost:42455<331$18:localhost:42455$16:localhost:42455!6:localhost:42455<331$17:localhost:42455$16:localhost:42455!6:localhost:42455~eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800~~eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~}eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800 Je3  P  E  | w]  Dp+?9 X%W & J> v8   K ^ -k}Qjq1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs 1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms41e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU /1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r01e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgh1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk1e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIf1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 ^1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM d1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos>1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI41e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU H1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY 21e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k0e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMS1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI&1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsl1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc71e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isg1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwU0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE 1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lki1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 21e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg <1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo  21e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU21e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs\1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE  8H31_S $20:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -6}{"event_id": "$20:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "content": {"msgtype": "m.text", "body": "Message 2 here"}, "origin_server_ts": 1570043468816, "prev_events": [["$19:localhost:42455", {"sha256": "HpT1UqyVURnRV9drqmf2ziVS5IuQKq/MklvKAi1ajDk"}]], "type": "m.room.message", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "depth": 4, "hashes": {"sha256": "EBk66xkEqED7H+JMZTlYn79x6jVa2Z0DqfRBtGS16Cc"}, "sender": "@__ANON__-20:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "MCcdLwqwtzz00hJQ7nXGIz5L2nryJ2uEE2B3Bgw2Rq7+DnUbjNGzIt7uGgLTxXC3qTcesQFee3SF51RdnW3CBg"}}, "unsigned": {}}8G31_S $19:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -5}{"prev_events": [["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}]], "origin_server_ts": 1570043468815, "content": {"body": "Message 1 here", "msgtype": "m.text"}, "event_id": "$19:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "HpT1UqyVURnRV9drqmf2ziVS5IuQKq/MklvKAi1ajDk"}, "origin": "localhost:42455", "depth": 3, "type": "m.room.message", "room_id": "!6:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "Bb7Tb/IgvOyMMGKvV3/uKs9ZJTTsRL2KLGoVVJBQBMIRjWLDVILz4lrxgIn353kxMe8MxB7tHz3BaDT2TpPDCA"}}, "unsigned": {}} FQ1?w $1570043468324DLhaB:localhost:8800!6:localhost:42455{"stream_ordering": 3302}{"type": "m.room.member", "room_id": "!6:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}]], "content": {"membership": "join", "displayname": "anon-20191002_181700-642", "avatar_url": null}, "depth": 13, "state_key": "@anon-20191002_181700-642:localhost:8800", "sender": "@anon-20191002_181700-642:localhost:8800", "prev_events": [["$28:localhost:42455", {"sha256": "kAlUsZ8VUGVttt8onI3HTOZBNBUUMobdzoDSz9iHF70"}]], "prev_state": [], "event_id": "$1570043468324DLhaB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043468834, "hashes": {"sha256": "8ToPX7arzQgelXNOQfz3o2YcoRC3BBUSR/fJstk/YC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y9fuP0HDUaYR4xZGJCIO+8ty6FoBiGlUgJn/EqabFblOAIl3e4ZVbBI8uwQN/T4c674Ls/aUpooTBNiV7yQjBw"}}, "unsigned": {"age_ts": 1570043468834}}`E31_# $18:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -4}{"event_id": "$18:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "content": {"join_rule": "public"}, "origin_server_ts": 1570043468814, "prev_events": [["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "type": "m.room.join_rules", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 2, "hashes": {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}, "sender": "@__ANON__-20:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "0f+kFvFU7/MV6jwCprvYg6HZBF1dXpHt+YmpsmmyGS3DvTFo7KyGjoWl3+zVS4irVTimHKi/IxvJA+P+I6ywAg"}}, "unsigned": {}} &n/c # V  t 8`p4p4p2tdm3Q'E$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455clQQ? $1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility[kQQ/ $1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules]jQQ3 $1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levelsiQQ']$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800WhQQ' $1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.create_g11']$3:localhost:41985!0:localhost:41985m.room.member@anon-20191002_181700-651:localhost:8800_f11']$3:localhost:44405!0:localhost:44405m.room.member@anon-20191002_181700-650:localhost:8800_e11']$3:localhost:37265!0:localhost:37265m.room.member@anon-20191002_181700-649:localhost:8800`d31']$37:localhost:42455!8:localhost:42455m.room.member@anon-20191002_181700-648:localhost:8800`c31']$33:localhost:42455!7:localhost:42455m.room.member@anon-20191002_181700-647:localhost:8800sbQQ'E$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455caQQ? $1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility[`QQ/ $1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules]_QQ3 $1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels^QQ']$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800W]QQ' $1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.create}\eQ'E$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455m[eQ? $Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibilitymZeQ? $O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibilityeYeQ/ $xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_ruleseXeQ/ $f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rulesgWeQ3 $pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levelsgVeQ3 $JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels UeQ']$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800 TeQ']$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800aSeQ' $EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800m.room.createaReQ' $L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.createdQ3Q'E$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455cPQQ? $1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility[OQQ/ $1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules]NQQ3 $1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levelsMQQ']$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800WLQQ' $1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.createoKQ1']$1570043468324DLhaB:localhost:8800!6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:88007?Q$60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800853Q$55:localhost:42455!taANXnGBZntAreRurn:localhost:8800G6QQ$1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:88008*3Q$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800G+QQ$1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:88008 3Q$53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:880083Q$49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:880083Q$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800GQQ$1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:880083Q$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800GQQ$1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:880083Q$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800GQQ$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800QeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800QeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4!wBBQYEPjQGnoAzDpEu:localhost:88008 3Q$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800Q eQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800Q eQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800Q eQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800QeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:880083Q$15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800 TQeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800QeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU!DuqHkpTfWCUblSrxQj:localhost:8800QeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:88007Q1$1570043392317hujur:localhost:8800!5:localhost:42455FOQ$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800GQQ$1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800883Q$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800GQQ$1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800G~QQ$1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800G}QQ$1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800Q|eQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800G{QQ$1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:88007z1Q$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:88007yQ1$1570043341273LsXNn:localhost:8800!0:localhost:42455QxeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800QweQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08!qjijQBfMwsCPTVgKPm:localhost:8800QveQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ!kjjUsMowsioSQRIJeg:localhost:8800QueQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800QteQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:88007 Q1$1570043468324DLhaB:localhost:8800!6:localhost:42455 2v)B [  t ' @  T OJETm 9az-FJ6QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043529361Oytod:localhost:8800J5QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043528360cetnZ:localhost:8800J4QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527359ScxWW:localhost:8800J3QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527358wChxc:localhost:8800J2QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043525357VEfrE:localhost:8800J1QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043524356NlySy:localhost:8800J0QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043523355SbJjm:localhost:8800J/QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043522354IAAap:localhost:8800J.QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043521353geZrN:localhost:8800;-Q3 !qzurjQHmiriwjaUMhO:localhost:8800$38:localhost:42455J,QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043518351Popej:localhost:8800J+QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517350ncbDd:localhost:8800J*QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517349uVTMj:localhost:8800J)QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043516348vThZG:localhost:8800J(QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043515347LGRKl:localhost:8800J'QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043506346EEQDj:localhost:8800J&QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043504345DCjlJ:localhost:8800J%QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503344dJwGF:localhost:8800J$QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503343snlnn:localhost:8800J#QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043502342mVJmO:localhost:8800J"QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043501341JmcnI:localhost:8800T!Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4T Qe !AOEdqVKPFddrqbKPOL:localhost:8800$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620TQe !AOEdqVKPFddrqbKPOL:localhost:8800$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gTQe !wBBQYEPjQGnoAzDpEu:localhost:8800$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoETQe !AOEdqVKPFddrqbKPOL:localhost:8800$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8TQe !wBBQYEPjQGnoAzDpEu:localhost:8800$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9ETQe !AOEdqVKPFddrqbKPOL:localhost:8800$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQTQe !wBBQYEPjQGnoAzDpEu:localhost:8800$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0ITQe !AOEdqVKPFddrqbKPOL:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgTQe !wBBQYEPjQGnoAzDpEu:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88TQe !AOEdqVKPFddrqbKPOL:localhost:8800$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2ATQe !wBBQYEPjQGnoAzDpEu:localhost:8800$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo;Q3 !oZGRyBAkNDrEeiAqWL:localhost:8800$29:localhost:42455JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043486339YbYQQ:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043485338vbLwS:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043484337ylFDA:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043484336qKOPD:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043483335oDIDb:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043483334ejWtI:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043482333DxDEq:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043481332XroCo:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043481331UNaWT:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043480330seKnV:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043479329kvsXb:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043478328DMkRS:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477327AgpMM:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477326hyTqo:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043476325vnEPO:localhost:8800:1Q !6:localhost:42455$1570043468324DLhaB:localhost:8800 &]/ q < G L z 2Sl,K'b{]WrQQ' $1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.createcqQQ? $1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility[pQQ/ $1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules]oQQ3 $1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levelsnQQ']$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800joinWmQQ' $1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.createhl3Q'E$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455joinckQQ? $1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility[jQQ/ $1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules]iQQ3 $1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levelshQQ']$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800joinWgQQ' $1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.createyfQQ'E$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455inviteceQQ? $1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility[dQQ/ $1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules]cQQ3 $1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levelsbQQ']$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800joinWaQQ' $1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.create`eQ'E$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455joinm_eQ? $Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibilitym^eQ? $O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibilitye]eQ/ $xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rulese\eQ/ $f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rulesg[eQ3 $pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levelsgZeQ3 $JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels YeQ']$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800join XeQ']$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800joinaWeQ' $EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800m.room.createaVeQ' $L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.createhU3Q'E$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455joincTQQ? $1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility[SQQ/ $1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules]RQQ3 $1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levelsQQQ']$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800joinWPQQ' $1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.createsOQ1']$1570043468324DLhaB:localhost:8800!6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800join8N31' $16:localhost:42455!6:localhost:42455m.room.createe%Q [ $ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0m.room.topic!sPWVGnipjiiWQpywNO:localhost:8800 m/wm/@anon-20191002_181700-20:localhost:8800 R`3Ii<nA\/|O"yLl? _ 2  ~ Q $ S& q D  c 6 V )v,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800+Q !ELBgBaMSIMNkjFSumH:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ZZ,Q!DnUHoxreGexNmjSVpq:localhost:8800 YY,Q!DnUHoxreGexNmjSVpq:localhost:8800 XX,Q!DnUHoxreGexNmjSVpq:localhost:8800 WW,Q!DnUHoxreGexNmjSVpq:localhost:8800VV,Q!DnUHoxreGexNmjSVpq:localhost:8800UU,Q!DnUHoxreGexNmjSVpq:localhost:8800TT,Q!DnUHoxreGexNmjSVpq:localhost:8800SS,Q!DnUHoxreGexNmjSVpq:localhost:8800RR,Q!DnUHoxreGexNmjSVpq:localhost:8800QQ,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  +Q !DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800+Q !DoiZErAdypBUMZKaeJ:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800+Q !DntdfAPfCfgdOoRMdl:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ^^,Q!DnUHoxreGexNmjSVpq:localhost:8800 ]],Q!DnUHoxreGexNmjSVpq:localhost:8800 \\,Q!DnUHoxreGexNmjSVpq:localhost:8800 [[,Q!EfJcWhdjNARbuHYrqU:localhost:8800\\+Q !EfJcWhdjNARbuHYrqU:localhost:8800[[,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800+Q !EWkoFeckhXlNyjuIEB:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800+Q !EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800+Q !EABRjdYuYumMhLSwIa:localhost:8800,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 +Q !DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800   R`3Ii<nA\/|O"yLl? _ 2  ~ Q $ S& q D  c 6 V )v,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800+Q !ELBgBaMSIMNkjFSumH:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ZZ,Q!DnUHoxreGexNmjSVpq:localhost:8800 YY,Q!DnUHoxreGexNmjSVpq:localhost:8800 XX,Q!DnUHoxreGexNmjSVpq:localhost:8800 WW,Q!DnUHoxreGexNmjSVpq:localhost:8800VV,Q!DnUHoxreGexNmjSVpq:localhost:8800UU,Q!DnUHoxreGexNmjSVpq:localhost:8800TT,Q!DnUHoxreGexNmjSVpq:localhost:8800SS,Q!DnUHoxreGexNmjSVpq:localhost:8800RR,Q!DnUHoxreGexNmjSVpq:localhost:8800QQ,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  +Q !DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800+Q !DoiZErAdypBUMZKaeJ:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800+Q !DntdfAPfCfgdOoRMdl:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ^^,Q!DnUHoxreGexNmjSVpq:localhost:8800 ]],Q!DnUHoxreGexNmjSVpq:localhost:8800 \\,Q!DnUHoxreGexNmjSVpq:localhost:8800 [[,Q!EfJcWhdjNARbuHYrqU:localhost:8800\\+Q !EfJcWhdjNARbuHYrqU:localhost:8800[[,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800+Q !EWkoFeckhXlNyjuIEB:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800+Q !EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800+Q !EABRjdYuYumMhLSwIa:localhost:8800,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 +Q !DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800    D9L31aS $24:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -10}{"hashes": {"sha256": "N2m1bGuofB9evylVvWsgnLvYidg2IcC/KxyyFbYyGwc"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "depth": 8, "origin": "localhost:42455", "origin_server_ts": 1570043468817, "prev_events": [["$23:localhost:42455", {"sha256": "wEv79S9J3kX/9IXix9i6S/r/VN5qbxgppsZ/DWFg05c"}]], "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$24:localhost:42455", "content": {"body": "Message 6 here", "msgtype": "m.text"}, "signatures": {"localhost:42455": {"ed25519:1": "ktkQaNG5y/Yphw5c4o4XLV5xZELbIkfPrdWW/gqMvFpYtUaS3xkfCN1U/ANKZFTMtNTKUREZWB/kjqOzBLvECg"}}, "unsigned": {}}8K31_S $23:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -9}{"hashes": {"sha256": "wEv79S9J3kX/9IXix9i6S/r/VN5qbxgppsZ/DWFg05c"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "depth": 7, "origin": "localhost:42455", "origin_server_ts": 1570043468817, "prev_events": [["$22:localhost:42455", {"sha256": "1I1iZfQ8nQuWm48tFpoeoKfq44JtAbmRmP767R2tfyE"}]], "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$23:localhost:42455", "content": {"msgtype": "m.text", "body": "Message 5 here"}, "signatures": {"localhost:42455": {"ed25519:1": "3cR1yEkWTiKT9ZPCwDh1wfT2VCjccXc09yHtZmdUuxTt7/clACxPbr1LZELd7XBRR+A64rzR0Xqp8xcX3+apCg"}}, "unsigned": {}}8J31_S $22:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -8}{"type": "m.room.message", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "depth": 6, "hashes": {"sha256": "1I1iZfQ8nQuWm48tFpoeoKfq44JtAbmRmP767R2tfyE"}, "sender": "@__ANON__-20:localhost:42455", "event_id": "$22:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "content": {"body": "Message 4 here", "msgtype": "m.text"}, "origin_server_ts": 1570043468817, "prev_events": [["$21:localhost:42455", {"sha256": "4UKObP6e1kkvywFqDBcaTCr8towzmo0aWeGKCg8uUL4"}]], "signatures": {"localhost:42455": {"ed25519:1": "VZ6wSWLnM3nGsUirjUqC6+DD45ZQ9IrB/pbw336A+CwV5Ur2FajuBGPp9ga6U75jVpXiJNO21h9o11DlLU4uBw"}}, "unsigned": {}}8I31_S $21:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -7}{"origin_server_ts": 1570043468816, "prev_events": [["$20:localhost:42455", {"sha256": "EBk66xkEqED7H+JMZTlYn79x6jVa2Z0DqfRBtGS16Cc"}]], "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$21:localhost:42455", "content": {"msgtype": "m.text", "body": "Message 3 here"}, "hashes": {"sha256": "4UKObP6e1kkvywFqDBcaTCr8towzmo0aWeGKCg8uUL4"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "depth": 5, "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "31bdl8++oXYLe9pPFnB+Waz5+NpD/661nUQVpx31prYaCpTRDQ4uaHPvmGvFbcdLh6OxYzIr9pkVnr+x7GNpAQ"}}, "unsigned": {}} Si>g<FoDmBk@T)}R' { P %e: y N # w L ! u J  s H q*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DnUHoxreGexNmjSVpq:localhost:8800^^*Q!DnUHoxreGexNmjSVpq:localhost:8800]]*Q!DnUHoxreGexNmjSVpq:localhost:8800\\*Q!DnUHoxreGexNmjSVpq:localhost:8800[[*Q!DnUHoxreGexNmjSVpq:localhost:8800ZZ*Q!DnUHoxreGexNmjSVpq:localhost:8800YY*Q!DnUHoxreGexNmjSVpq:localhost:8800XX*Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EfJcWhdjNARbuHYrqU:localhost:8800aa*Q!EfJcWhdjNARbuHYrqU:localhost:8800``*Q!EfJcWhdjNARbuHYrqU:localhost:8800__*Q!EfJcWhdjNARbuHYrqU:localhost:8800^^*Q!EfJcWhdjNARbuHYrqU:localhost:8800]]*Q!EfJcWhdjNARbuHYrqU:localhost:8800\\*Q!EfJcWhdjNARbuHYrqU:localhost:8800[[*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 Gj8 | J ' Q  W % Y _ -e3k9rAyG wM? ES!  q E & 21e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY '1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 z1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY h1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk 1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0c1e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Em1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U1e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 i1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 21e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 t1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gH1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4C1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0E1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV01e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wE1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjoX1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70k1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk00e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90 1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc[1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 W1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Ij1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zegl1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U11e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU`1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ/e $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA 1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEN1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRoX1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgu1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsi1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6AY1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ q11e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego 1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo e11e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQt1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk81e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U ` 5X0`8pH X 0  h @  x P ( ` 8  p H 'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800s'Q!EieRtaCFZJJCIOkRPp:localhost:8800r'Q!EieRtaCFZJJCIOkRPp:localhost:8800q'Q!EieRtaCFZJJCIOkRPp:localhost:8800p'Q!EieRtaCFZJJCIOkRPp:localhost:8800o'Q!EieRtaCFZJJCIOkRPp:localhost:8800n'Q!EieRtaCFZJJCIOkRPp:localhost:8800m'Q!EieRtaCFZJJCIOkRPp:localhost:8800l'Q!EieRtaCFZJJCIOkRPp:localhost:8800k'Q!EieRtaCFZJJCIOkRPp:localhost:8800j'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EfJcWhdjNARbuHYrqU:localhost:8800`'Q!EfJcWhdjNARbuHYrqU:localhost:8800_'Q!EfJcWhdjNARbuHYrqU:localhost:8800^'Q!EfJcWhdjNARbuHYrqU:localhost:8800]'Q!EfJcWhdjNARbuHYrqU:localhost:8800\'Q!EfJcWhdjNARbuHYrqU:localhost:8800['Q!EfJcWhdjNARbuHYrqU:localhost:8800Z'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800  C;P31aW $28:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -14}{"prev_events": [["$27:localhost:42455", {"sha256": "HDkGTQCwdD9uMRsX6UKNnpFZrWY3aUYZUVUh2ARNRac"}]], "origin_server_ts": 1570043468819, "content": {"msgtype": "m.text", "body": "Message 10 here"}, "event_id": "$28:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "kAlUsZ8VUGVttt8onI3HTOZBNBUUMobdzoDSz9iHF70"}, "origin": "localhost:42455", "depth": 12, "type": "m.room.message", "room_id": "!6:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "bMfZg4nWqTUu/13HsDX2tWxHqBhrakPaXQNCqLR8EBaynEh2G5tlO9B1jCPAYs74DDbgFVfcZZuInqMJoysTBw"}}, "unsigned": {}}:O31aU $27:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -13}{"origin": "localhost:42455", "depth": 11, "type": "m.room.message", "room_id": "!6:localhost:42455", "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "HDkGTQCwdD9uMRsX6UKNnpFZrWY3aUYZUVUh2ARNRac"}, "content": {"body": "Message 9 here", "msgtype": "m.text"}, "event_id": "$27:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "prev_events": [["$26:localhost:42455", {"sha256": "wjT9h/aAYzSU/QFT7EAvYLfCHiQH8n2q2BL7mq8oQOw"}]], "origin_server_ts": 1570043468818, "signatures": {"localhost:42455": {"ed25519:1": "x9usSDfAJ4Ar28ZRZxr3Fuw3ZlgckMGgH430RkGvwlmRsBSPg71RuuBnhokpcED9+rxvRj05HlusnkbQeA9UDA"}}, "unsigned": {}}:N31aU $26:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -12}{"origin": "localhost:42455", "depth": 10, "type": "m.room.message", "room_id": "!6:localhost:42455", "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "wjT9h/aAYzSU/QFT7EAvYLfCHiQH8n2q2BL7mq8oQOw"}, "content": {"msgtype": "m.text", "body": "Message 8 here"}, "event_id": "$26:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "prev_events": [["$25:localhost:42455", {"sha256": "MWJNPitl2VvLzTOtFUkD1yzBUjpcxp+e0W17S5t2s+U"}]], "origin_server_ts": 1570043468818, "signatures": {"localhost:42455": {"ed25519:1": "UoiLlcuQAnQVfLLMZ4OmLlGhSUm7pncZE7Uxvui5OjIyOtXMjlIthTBwN2vUx9Ofs/hTL0JrCnyIiSjsOArxDg"}}, "unsigned": {}}9M31aS $25:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -11}{"depth": 9, "origin": "localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "MWJNPitl2VvLzTOtFUkD1yzBUjpcxp+e0W17S5t2s+U"}, "content": {"msgtype": "m.text", "body": "Message 7 here"}, "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$25:localhost:42455", "prev_events": [["$24:localhost:42455", {"sha256": "N2m1bGuofB9evylVvWsgnLvYidg2IcC/KxyyFbYyGwc"}]], "origin_server_ts": 1570043468818, "signatures": {"localhost:42455": {"ed25519:1": "+XWvCKsWRv/6CsZ9braZ5PGtySUz2FyIx0vB8o8hxSExF5JoNsXjThFOtbI3jwasgRD+pi9+gYiSsN5sY6vEAw"}}, "unsigned": {}} _j@nD r H   g 3 c / i ?  m C V,Z0mCqG,Z0pFwM#{Q'3$54:localhost:42455 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 ' Q$1570043566390qTwyJ:localhost:8800 ' Q$1570043565389RsxAr:localhost:8800 ' Q$1570043564388ZmOEV:localhost:8800  3$53:localhost:42455  3$52:localhost:42455 3$50:localhost:42455 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 3$49:localhost:42455 3$46:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 '~Q$1570043550380LNzMz:localhost:8800 '}Q$1570043549379wtMED:localhost:8800 '|Q$1570043548378IxCfM:localhost:8800 '{Q$1570043547377kWWAW:localhost:8800 'zQ$1570043546376YfkfL:localhost:8800 'yQ$1570043545375TmtMk:localhost:8800 x3$40:localhost:42455 'wQ$1570043542373yGTqH:localhost:8800 'vQ$1570043541372ZeTYJ:localhost:8800 'uQ$1570043540371avDlf:localhost:8800 'tQ$1570043539370xCBJr:localhost:8800 'sQ$1570043538369ozxqx:localhost:8800 'rQ$1570043536368agmuM:localhost:8800 'qQ$1570043536367lvGLr:localhost:8800 'pQ$1570043535366hhblx:localhost:8800 'oQ$1570043534365WVAkx:localhost:8800 'nQ$1570043533364iwqCT:localhost:8800 m3$39:localhost:42455 'lQ$1570043530362jRUtV:localhost:8800 'kQ$1570043529361Oytod:localhost:8800 'jQ$1570043528360cetnZ:localhost:8800 'iQ$1570043527359ScxWW:localhost:8800 'hQ$1570043527358wChxc:localhost:8800 'gQ$1570043525357VEfrE:localhost:8800 'fQ$1570043524356NlySy:localhost:8800 'eQ$1570043523355SbJjm:localhost:8800 'dQ$1570043522354IAAap:localhost:8800 'cQ$1570043521353geZrN:localhost:8800 b3$38:localhost:42455 'aQ$1570043518351Popej:localhost:8800 '`Q$1570043517350ncbDd:localhost:8800 '_Q$1570043517349uVTMj:localhost:8800 '^Q$1570043516348vThZG:localhost:8800 ']Q$1570043515347LGRKl:localhost:8800 '\Q$1570043506346EEQDj:localhost:8800 '[Q$1570043504345DCjlJ:localhost:8800 'ZQ$1570043503344dJwGF:localhost:8800 'YQ$1570043503343snlnn:localhost:8800 'XQ$1570043502342mVJmO:localhost:8800 'WQ$1570043501341JmcnI:localhost:8800 1Ve$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1Ue$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1Te$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1Se$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1Re$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1Qe$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1Pe$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1Oe$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1Ne$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1Me$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1Le$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1Ke$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo J3$29:localhost:42455 'IQ$1570043486339YbYQQ:localhost:8800 'HQ$1570043485338vbLwS:localhost:8800 'GQ$1570043484337ylFDA:localhost:8800 'FQ$1570043484336qKOPD:localhost:8800 'EQ$1570043483335oDIDb:localhost:8800 'DQ$1570043483334ejWtI:localhost:8800 'CQ$1570043482333DxDEq:localhost:8800 'BQ$1570043481332XroCo:localhost:8800 'AQ$1570043481331UNaWT:localhost:8800 '@Q$1570043480330seKnV:localhost:8800 '?Q$1570043479329kvsXb:localhost:8800 '>Q$1570043478328DMkRS:localhost:8800 '=Q$1570043477327AgpMM:localhost:8800 '<Q$1570043477326hyTqo:localhost:8800 ';Q$1570043476325vnEPO:localhost:8800 :3$28:localhost:42455 93$27:localhost:42455 83$26:localhost:42455 73$25:localhost:42455 %) E e 0  :f~";sXxYQ' Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.create$1570043521353geZrN:localhost:8800fQ'E3 !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455$38:localhost:42455uQ'EQ !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455$1570043519352auZGi:localhost:8800eQ? Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility$1570043518351Popej:localhost:8800]Q/ Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules$1570043517350ncbDd:localhost:8800_Q3 Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levels$1570043517349uVTMj:localhost:8800Q']Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800$1570043516348vThZG:localhost:8800YQ' Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.create$1570043515347LGRKl:localhost:8800uQ'EQ !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455$1570043506346EEQDj:localhost:8800eQ? Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility$1570043504345DCjlJ:localhost:8800]Q/ Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules$1570043503344dJwGF:localhost:8800_Q3 Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels$1570043503343snlnn:localhost:8800Q']Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800$1570043502342mVJmO:localhost:8800Y Q' Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.create$1570043501341JmcnI:localhost:8800 Q'Ee !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 Q'Ee !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455$0brtZF9nLBiYjM_kc5S7_Se8gmf_EbCFcJAVj4dI0FYo Q? e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibility$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8go Q? e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibility$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEgQ/ e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rules$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8gQ/ e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rules$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9EiQ3 e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levels$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQiQ3 e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I Q']e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg Q']e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88cQ' e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.create$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2AcQ' e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.create$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqofQ'E3 !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455$29:localhost:42455uQ'EQ !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455$1570043486340vukns:localhost:8800e~Q? Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility$1570043479329kvsXb:localhost:8800]}Q/ Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules$1570043478328DMkRS:localhost:8800_|Q3 Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levels$1570043477327AgpMM:localhost:8800{Q']Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800$1570043477326hyTqo:localhost:8800YzQ' Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.create$1570043476325vnEPO:localhost:8800>y1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vx1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:w1' 3 !6:localhost:42455m.room.create$16:localhost:42455>v1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455  i g 4h5 i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45Hwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAoa1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAo`1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAo]1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgo\1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwo[1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQoZ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgo_1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwo^1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygoY1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwoX1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_goW3  +SQQay $1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3305}{"auth_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "type": "m.room.power_levels", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"users": {"@anon-20191002_181700-643:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043477327AgpMM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043477872, "hashes": {"sha256": "6oa9fL2M0qZuBxaOP6OqO1RIhbMHus038bgURUhZT40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uUwKjZY5ci7PW+EgA/ACo3THatlXxsmLYTVQGsGJL9n/rnT70ZO+iqCoen1JF62K7rFSHaXqjZnqkYVbHq3yBw"}}, "unsigned": {"age_ts": 1570043477872}}RQQa) $1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3304}{"auth_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}]], "prev_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}]], "type": "m.room.member", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-643", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-643:localhost:8800", "event_id": "$1570043477326hyTqo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043477116, "hashes": {"sha256": "IYNep77YbrMHSbHMxfdtg+1dF6vC4ptqBxfnmL7OSXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AHH/kZn0qC0DH4mC6RkJRbedugdelZ5ok6SYpJ2e86h9sgPPrYTqW+Nqfj64/Q+eXtBtKhhgQXBs2yEREkR8DA"}}, "unsigned": {"age_ts": 1570043477116}}QQQaC $1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3303}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-643:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043476325vnEPO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043476390, "hashes": {"sha256": "z7Cmw9GYaJv5GFQ/NcNWOPrR+ncYb7gN9XVuE6Nn2WU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XUhpEooZSpzMD39ZB1jHg3ehAyokZDTugaQW10fi31PtQkzYdPD5jghCJF+gRt+BmASnZjpO//uO9OcoSndMDg"}}, "unsigned": {"age_ts": 1570043476390}} P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P|pdXL@4( mw mb% m^_ mE mB m m  m뚑 m mo m m{  mw mb% m^_ mE mB m m m m2 mܜ m m mo mͧ m m7 m~ m꽺 m긄 mA m곲 mꮤ mꬉ mꨥ m  m  mz mx mt m\ mF( mCY mAr m@} m+ m  mS m5 m֜ m  m mv mF mC m mx mh mf mM mG m( mu m- m? m< mӥ m m觏 m m m膗 mmG mk mL mJg m+6 m'T m  m  m m  m& m m m m m獟 mx mv m` m^ mH_ mF= m/* m-) m  m  m R me m4 m m m m濵 mk m& m  m~ m|~ mU } m/| m { m:z mʪy mx mw m刨v mau mWt m<s m+[r m(iq m*p m #o mn mem mtl mh,k mKj m-i mh mg mf mie md mc mr]b mHa m,7` m_ m^ mf] mА\ m[ m\Z mY mRX mNW m♪V mlU mlqT m9WS mR m}Q mP mᷱO mVN mqM mMHL m3K mJ mI mH mMG mF mE mɓD mC mࠢB mA mx@ mb? mO> m5= m4< m*; m: m9 m8 mG7 m6 m5 mߨ4 mߨ!3 m߀2 mf1 mFp0 m?/ m. m Y- m, mc+ m)* m) m2( m' m& mȔ% m$ m,# m޽c" m޹! m޷ m޵ m޲ mޘ mހb ml mi[ mU m? m+u m mC mr m mݓg mo m[ m/5 my m m  mKa m m m m m m mf m mx m mߑ m^ m m m mɕ m m m m@ m  m볳 m밯 m뮆 m몤 m mJ m m.  }VQQy $1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "601", "stream_ordering": 3308}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043479329kvsXb:localhost:8800", {"sha256": "A+u532PlFc6TWXd7KUhjZ2p1YRG1S5TyJp4+5F58K0g"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1 here"}, "depth": 6, "prev_state": [], "event_id": "$1570043480330seKnV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043480705, "hashes": {"sha256": "SUIwpNBzUa7OQtlvZfWqhGN5cfZiAZatjTM0FC6XilM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mYxHDuh5rVONsnFOBCT/MW7EcsB1wR2I26b4DRFqGpCLgupwn0rjRfMCTqDN127gXLf6vXqSacYK078lH5lAAA"}}, "unsigned": {"age_ts": 1570043480705}}xUQQa $1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3307}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043478328DMkRS:localhost:8800", {"sha256": "iY5jybfdK/SnBUuY/ELVT1QcGSKKEkf59IfkSQaoEAQ"}]], "type": "m.room.history_visibility", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043479329kvsXb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043479272, "hashes": {"sha256": "5fOyne0LzCOw5bwNK8GuH2GeaLTpzJKy4/y/p8IsZFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZIKHK4CJ8b8uvgHEBZ8lduCOahA9cyU0m/QyOdZrJFncA2+olaZB7sP3frWb4ZmN5ERkm1iVNq9NBOBQ/oa4Bg"}}, "unsigned": {"age_ts": 1570043479272}}gTQQaq $1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3306}{"auth_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}], ["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}]], "prev_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}]], "type": "m.room.join_rules", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043478328DMkRS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043478538, "hashes": {"sha256": "QcQBUCn5wZedGNsdIDJjfxQpzGMEmlESfZqJ4AbPR4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o/Vq3aDc17HJOiuGjzbXx73H0BXCBDgd6e//WOj2n+dfIqF+vWzFideItoo7yGueGq8oEZW/BYTuV5VAj/bEBg"}}, "unsigned": {"age_ts": 1570043478538}} =GvHd6 ~ R $ n @  Z ,  E H t1Ky _  7Q # l @ eksss-]@anon-20191002_181700-811:localhost:8800+.-]@anon-20191002_181700-832:localhost:8800--]@astest-0-20191002_181700:localhost:8800,-]@anon-20191002_181700-810:localhost:8800).-]@anon-20191002_181700-691:localhost:8800-]@anon-20191002_181700-684:localhost:8800-]@anon-20191002_181700-698:localhost:8800-]@anon-20191002_181700-737:localhost:8829!-]@anon-20191002_181700-681:localhost:8800-]@anon-20191002_181700-690:localhost:8800-]@anon-20191002_181700-683:localhost:8800-]@anon-20191002_181700-812:localhost:8800*-]@anon-20191002_181700-685:localhost:8800 -]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-658:localhost:8800 -]@anon-20191002_181700-659:localhost:8800 -]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-665:localhost:8800 -]@anon-20191002_181700-657:localhost:8800 -]@anon-20191002_181700-661:localhost:8800 -]@anon-20191002_181700-642:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-644:localhost:8800=@spyglass:localhost:8800+[@anon-20191002_181700-96:localhost:8800?+[@anon-20191002_181700-90:localhost:8800=+[@anon-20191002_181700-75:localhost:88009+[@anon-20191002_181700-74:localhost:88008+[@anon-20191002_181700-72:localhost:88297+[@anon-20191002_181700-71:localhost:88005+[@anon-20191002_181700-70:localhost:88006+[@anon-20191002_181700-67:localhost:88003+[@anon-20191002_181700-66:localhost:88290+[@anon-20191002_181700-65:localhost:8800.+[@anon-20191002_181700-64:localhost:8800,-]@anon-20191002_181700-650:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-641:localhost:8800-]@anon-20191002_181700-640:localhost:8800-]@anon-20191002_181700-639:localhost:8800-]@anon-20191002_181700-638:localhost:8800-]@anon-20191002_181700-637:localhost:8800-]@anon-20191002_181700-636:localhost:8800-]@anon-20191002_181700-634:localhost:8800-]@anon-20191002_181700-633:localhost:8800-]@anon-20191002_181700-632:localhost:8800-]@anon-20191002_181700-629:localhost:8829+[@anon-20191002_181700-61:localhost:88004-]@anon-20191002_181700-613:localhost:8800-]@anon-20191002_181700-611:localhost:8800-]@anon-20191002_181700-610:localhost:8800+[@anon-20191002_181700-60:localhost:88002-]@anon-20191002_181700-609:localhost:8800-]@anon-20191002_181700-608:localhost:8800-]@anon-20191002_181700-607:localhost:8829-]@anon-20191002_181700-606:localhost:8800-]@anon-20191002_181700-603:localhost:8800-]@anon-20191002_181700-601:localhost:8800+[@anon-20191002_181700-59:localhost:8800#-]@anon-20191002_181700-598:localhost:8800-]@anon-20191002_181700-597:localhost:8800-]@anon-20191002_181700-593:localhost:8800-]@anon-20191002_181700-590:localhost:8800-]@anon-20191002_181700-584:localhost:8800-]@anon-20191002_181700-583:localhost:8800-]@anon-20191002_181700-582:localhost:8800 } }}YQQy $1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "604", "stream_ordering": 3311}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043481332XroCo:localhost:8800", {"sha256": "0BArZ38IQHRuWe5iH+czJVNmJm9VEbEnv517vmWZBnk"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4 here"}, "depth": 9, "prev_state": [], "event_id": "$1570043482333DxDEq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043482427, "hashes": {"sha256": "zefLLMNr7iOK7/vmfhyEN1VnOzM3Nm2/8GcWgEMiL2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jR9A4SKwPeoIv6XkSxuIOeICR1tAVWdIQZJtPnRvWd+8JOQWeTgHccJmOjhfFR8fmOBZYA4bIBhlGjPi+a5KCA"}}, "unsigned": {"age_ts": 1570043482427}}}XQQy $1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "603", "stream_ordering": 3310}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043481331UNaWT:localhost:8800", {"sha256": "QKIRmgX7IpIlD9gxzxuwCszRsBUGCN8rzowd1WOHROo"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3 here"}, "depth": 8, "prev_state": [], "event_id": "$1570043481332XroCo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043481950, "hashes": {"sha256": "STtufi7U+Ae32rXch2PjxC12zTDMcY5V3lRdG8Euz9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e384EDvCPWr/Zgn7XlTwr+jHfScn51g6A3F9ueOwxdMm+F8pRFoKJ+wbCNPde/EfiXVDPTXV45RGV2w13Nu8Ag"}}, "unsigned": {"age_ts": 1570043481950}}}WQQy $1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "602", "stream_ordering": 3309}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043480330seKnV:localhost:8800", {"sha256": "Tu5i8vno226ZbRRxZBMHL/7UcX3D9rjyTEePXXTcQjA"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2 here"}, "depth": 7, "prev_state": [], "event_id": "$1570043481331UNaWT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043481370, "hashes": {"sha256": "Hpq3ABMAZ19jXtWvv/dtxx/K/ZJ/2GCpaKdDLgV+BJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U9T/WEHl907Af8DbrUd5K/Xlx+WM5ss/LNyEV5YvNfvv/26FBi6tX8v1B8/jDmAOZWD9EMxZKaoFsXvOQxn7Dw"}}, "unsigned": {"age_ts": 1570043481370}} Re:c P % y N # w L !8 } u J  sR' {<g H qFoDi>mBk@c*Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vOfeZvbtpuHfoqShFl:localhost:8800xx*Q!vOfeZvbtpuHfoqShFl:localhost:8800ww*Q!vOfeZvbtpuHfoqShFl:localhost:8800vv*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 p p*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r r*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s s*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t t+*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v v*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u u*Q!vOfeZvbtpuHfoqShFl:localhost:8800yy*Q!vyCFfUTJKYJSDadFhT:localhost:8800^^*Q!vyCFfUTJKYJSDadFhT:localhost:8800\\*Q!vyCFfUTJKYJSDadFhT:localhost:8800ZZ*Q!vyCFfUTJKYJSDadFhT:localhost:8800XX*Q!vyCFfUTJKYJSDadFhT:localhost:8800VV*Q!vyCFfUTJKYJSDadFhT:localhost:8800TT*Q!vyCFfUTJKYJSDadFhT:localhost:8800RR*Q!vyCFfUTJKYJSDadFhT:localhost:8800QQ*Q!vttkrtSyHEJXVMlvLo:localhost:8800 A A*Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ @*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? ?*Q!vttkrtSyHEJXVMlvLo:localhost:8800 > >*Q!vttkrtSyHEJXVMlvLo:localhost:8800 = =*Q!vttkrtSyHEJXVMlvLo:localhost:8800 < <*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; ;*Q!vttkrtSyHEJXVMlvLo:localhost:8800 : :*Q!vttkrtSyHEJXVMlvLo:localhost:8800 9 9*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vRRNxNyGboLHNhqQvr:localhost:8800ZZ*Q!vRRNxNyGboLHNhqQvr:localhost:8800YY*Q!vRRNxNyGboLHNhqQvr:localhost:8800XX*Q!vRRNxNyGboLHNhqQvr:localhost:8800WW*Q!vRRNxNyGboLHNhqQvr:localhost:8800VV*Q!vRRNxNyGboLHNhqQvr:localhost:8800UU*Q!vRRNxNyGboLHNhqQvr:localhost:8800TT*Q!vOfeZvbtpuHfoqShFl:localhost:8800*Q!vOfeZvbtpuHfoqShFl:localhost:8800*Q!vOfeZvbtpuHfoqShFl:localhost:8800~~*Q!vOfeZvbtpuHfoqShFl:localhost:8800}}*Q!vOfeZvbtpuHfoqShFl:localhost:8800||*Q!vOfeZvbtpuHfoqShFl:localhost:8800{{*Q!vOfeZvbtpuHfoqShFl:localhost:8800zz*Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q q+*Q!vRmMcoJDeCupADwqac:localhost:8800   ?yj[L=.zk\M/  { l ] N ? 0 !   ~ o ` Q B 3 $   u f W H 9 *  vgXI:+ whYJ;,xiZK<-yj[L=.zk\M>/  | m ^ O @ 1 "   } n _ P A 2 #   >{l]N?z|m^O@k\M1">>mXE t tmU s smR r rmO q qmLT p pmCk o omA n nm㾄 M Mm㹆 L Lm K Km㰚 J JmA I Im H HmP G Gm F Fm[ E Emn D Dm\ C Cm? B Bm A Am @ @m ? ?mJ > >m~ = =m|( < <myI ; ;mv8 : :ms% 9 9mg] 8 8mg[ 7 7mg[ 6 6mg\ 5 5ma 4 4m_Z 3 3m[ 2 2mW_ 1 1mT 0 0mP / /mK . .mH - -m@: , ,m;2 + +m7U * *m3n ) )m0F ( (m- ' 'm% & &m# % %m $ $m # #m " "m_ ! !m D m N  m  m!  m  m  m:  m  m>  m  m  m/  m  m  m^  m  md  m mE mⶢ mⲭ m  m{  m{  m  m  m  m┟  m@  m↼ mr m m) mz[ mxw mt, mr mm ml mc7 m`` m^ m[ mX mV mT mQ; mO^ mM mJ mD mB m?p m<| m9 m" m m m m m m m m m mm m m m mC m m m& mg m m m8E l lm5 k km2 j jm. i im' h hm!| g gm f fm e emO d dmb c cm b bm a am ` `mz _ _m< ^ ^m ] ]m \ \m [ [m0 Z Zm Y Ym X Xm W Wm| V Vmo U Um. T Tmj S Sm% R RmΘ Q Qm̰ P Pm O Om N Nm mR m m mz m m mQ m m m m m m. m m mᬏ m mK m, m m! mᕼ mክ mክ m m m m| m;B m mmv mr mk md m`M mY mWF mS mQ mM mG mA m= m: m7- m4. m,\ m* m% m! m m m mR mj m m m m; be/ ^ E  ]eexFb"Q?Q ]$1570043504345DCjlJ:localhost:8800m.room.history_visibility!TSFcaXDBqrCREHRHxv:localhost:8800m{ms@anon-20191002_181700-646:localhost:8800Q/Q ]$1570043503344dJwGF:localhost:8800m.room.join_rules!TSFcaXDBqrCREHRHxv:localhost:8800m{m@anon-20191002_181700-646:localhost:8800Q3Q ]$1570043503343snlnn:localhost:8800m.room.power_levels!TSFcaXDBqrCREHRHxv:localhost:8800mm1@anon-20191002_181700-646:localhost:8800Q'Q ]$1570043502342mVJmO:localhost:8800m.room.member!TSFcaXDBqrCREHRHxv:localhost:8800mmx@anon-20191002_181700-646:localhost:8800 Q'Q  ]$1570043501341JmcnI:localhost:8800m.room.create!TSFcaXDBqrCREHRHxv:localhost:8800m m⚳@anon-20191002_181700-646:localhost:8800!e)Q ]$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4m.room.message!wBBQYEPjQGnoAzDpEu:localhost:8800m┟m@anon-20191002_181700-644:localhost:8800e'Q E$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620m.room.member!AOEdqVKPFddrqbKPOL:localhost:8800m@m@__ANON__-22:localhost:42455,e?Q ]$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gm.room.history_visibility!AOEdqVKPFddrqbKPOL:localhost:8800m↼m@anon-20191002_181700-645:localhost:8800,e?Q ]$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEm.room.history_visibility!wBBQYEPjQGnoAzDpEu:localhost:8800mrmE@anon-20191002_181700-644:localhost:8800$~e/Q ]$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8m.room.join_rules!AOEdqVKPFddrqbKPOL:localhost:8800mmI@anon-20191002_181700-645:localhost:8800$}e/Q ]$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Em.room.join_rules!wBBQYEPjQGnoAzDpEu:localhost:8800m)m@anon-20191002_181700-644:localhost:8800&|e3Q ]$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQm.room.power_levels!AOEdqVKPFddrqbKPOL:localhost:8800mz[m}@anon-20191002_181700-645:localhost:8800&{e3Q ]$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0Im.room.power_levels!wBBQYEPjQGnoAzDpEu:localhost:8800mxwmz@anon-20191002_181700-644:localhost:8800 ze'Q ]$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgm.room.member!AOEdqVKPFddrqbKPOL:localhost:8800mt,mv@anon-20191002_181700-645:localhost:8800 ye'Q ]$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88m.room.member!wBBQYEPjQGnoAzDpEu:localhost:8800mrmu'@anon-20191002_181700-644:localhost:8800x e'Q  ]$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2Am.room.create!AOEdqVKPFddrqbKPOL:localhost:8800mmmok@anon-20191002_181700-645:localhost:8800w e'Q  ]$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqom.room.create!wBBQYEPjQGnoAzDpEu:localhost:8800mlmm@anon-20191002_181700-644:localhost:8800{v3'Q E$29:localhost:42455m.room.member!oZGRyBAkNDrEeiAqWL:localhost:8800mc7mc@__ANON__-21:localhost:42455uQ)Q ]$1570043486339YbYQQ:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800m``m`h@anon-20191002_181700-643:localhost:8800tQ)Q ]$1570043485338vbLwS:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800m^m^@anon-20191002_181700-643:localhost:8800sQ)Q ] $1570043484337ylFDA:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 m[m[ @anon-20191002_181700-643:localhost:8800rQ)Q ] $1570043484336qKOPD:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mXmX@anon-20191002_181700-643:localhost:8800qQ)Q ] $1570043483335oDIDb:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mVmW@anon-20191002_181700-643:localhost:8800pQ)Q ] $1570043483334ejWtI:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mTmT@anon-20191002_181700-643:localhost:8800oQ)Q ] $1570043482333DxDEq:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mQ;mQF@anon-20191002_181700-643:localhost:8800 oo 0 b9jbvvo1i   0%  182 3 4)5)70042615105okfnm 24115nztib 32125lwdor 42135omfqy 51145wbynt 8153tmcyj 9154fztdf 5meuep 60156wxhvl 7svdcu 1158igwhf 9xqwjk 2160srmtm 1lgrsw764dorhm 83184tpchh 92194rxboz 700204cxvfq 9214pwhvu 18224mbwnj 25232uzihq 3sjcnf 6234miteq 5bahbo 7236aoaie 7iulyb 8238dtqib 9bmobm 9240abrvs 1uusiz 4310jcqya 3198272dgmin 392317hujur6 7 89cm476cekcaed5s85btkzpplz083yvbpttxvmi%m0cdunsc9xeg1ygmg3iizzrxki1qpop6jojvwnfeiqi8khs7ywororgdapvrxlr26qy2zbfu0rjody6v5unwmpxux3y5cfgje7soolhpkfkmqksjoxd*z6tdt9yt3hbjkds8lm3uaqqhv3kemgdpunxmmr4bgs9ci2_  0123456789 bbarvmydvvca jyj2pgwyliwklkemkw0mtcdyl3i7fkmw3rcgleja4m2vz*ne3j5jh0ycbo6o6dbjjywnsr03tyojb04b1ohkhisw vgwauhudgaqm0apm2ynfixynqg xjqy2cwehiyzpoqgs3U  0123456789azedzbpcue2zmu5ayvwfnkpyv4$gf6orqsr9h8lfzq7cy6exvk2u01woykok37h"i19mtjing7jhc3iofx14b4ahyar3rdvir0ls q4aywlrbbsbut*yfw5giqflh2ej3vv0owxccmnxeaphinari06ynb7nk4K    012455 30dlyjijnh41qdjssewudj456cvytda90789)9w4hf3486zyzkk0xz2qw7l06boqjqezwmaqxfkxdectg2s'enbv2icmkn6ssyx6kckxft8xlpzj0chiee8iy1ol4xg61#ndcalk6zicszuhmxsia1fdjtto2jfhgjl48oq20xi1eyvqnwfqcwunwzusxqs3ybregvsuk4bv5wjlu(uyaqft9ws6en7vhjkqnhqcib1hwak2hpdcenlp2j5<  0547g5czyrrlpl29xdxw73ns9orbcn9yxqiopylptlofryejvmiku1frgf14lsbry9oyznccw*s0ysgmd1rdecuzv4snxevelu9uq7mb8uzzgs8h6pxwz5q#vvzzeagiylrqjlc1m5j5sy2bdxjonsaywpy6- kklp6xu1cqgmnhslygdnweylnosuslnpt0xl*mtrexehtxcaqmy7rpolsa3fx6annkdyezrum58g5uao3628rw ufbmnnlxo*znoghokibbe4edck5znfrghdkdyikkf2256hp1vseo7( #47unaiwa7uwpycibdrilusrvrio90pbh1nkai1qr yinm7zxshgmufzcisgma5nqkqg8yoxjhfe6yyolijcg5t8oqsic tk7yef9qcivwlsxo8eug46f9xf9anfy8&V --P $8800 29a8tw64njepuezu*cuqktvpalxkjhcj88nnlpa1jeffuhsdttal2xmmfmoep3umhxc!ffairv4y9hqwvyqfqbvblhuuztmfdf1lq hoo7b9p6umiruqbffs8lmeq8k9k8ubdq4miamwwafdy49vngsocymvgznanumstw9e0f5pnkkste2bdkkpt2dubtwpj6pfiuc9+v  85oxj5fdf"q5uon9lofsc2lyfnpskd56obonzdxq5ktu sw1opxz71irmuaqhqcscd3qk3htvmysfx*yikxcandqbkg33dyc4dqfzmomixeyr0wlfadoeaicyaGs 3tlql)vmxuy0nkl34g0a7zemlda7gogrgpijf1j35p1vkjua1kqrh7wxocq7cfmdjxlrsxhtgzhmxld4dqzsckny39ugir329li9jiyfeqx9hmqvctu9f94sfw69iezgj1lbwwhlc2svn6rgzejfknlnlxfchllvfyhkj peffccmrwl mgtv4fyaf6xn0lmlqizbfklpqkibp$nd "o8u397tksjfq6kr5z2to3auj4yzbuyvayu pdb4m7shc3uxq qhegiamxcstf7mnhyserjfd2fpgzc9s7u15vcvyrww2vbwqoggiadb9ib5mupucho2lrjwscufqachocyuw3bixni3l7ltefore gnp8saojospv hhukgjzma5tjha2y*k3fqkssbnrm2oqwt6rac22aa5eqkhdyuccmrf4ytdmwyiehzwsmjfuskvvlockedody1yzlwnkrpncpdjbdgptqiemswfziqtcgjoqdorbaknnqzfubhgs.r05avgtv2ppof9vgen0ni58jviucichl4e*vu74eqijv3il2upcpwualulv5pbnfjr0m8yk8iqvmk*xbojue3fcqkvfhzedbl8xi818uj13iqx4sebl2hsegyznoocu1x+c3fwpi3yjswf9pwxc6466qc99cpxbhkikjrcvv5qp1q8mdr ,,Q &camq4uieoloykch4sk6ksmxlugckphdsyciocfvraq ncwhaykxgydrht4veleba0algxdmoq2oqkqobgqggftzbe0jnlayasqw6jjddhdlay4sd iqxzws4v8 kezm2tuqzylnilmaqontent $q60upswrhwydnvdv7g9va1cyshmwhwkdjucy%rjor5aeexcobtqvzczlg3oyq4aibyenboncu2sqenqzaezazngktbewyozywu0xgggarztpdiuirsjzzysd*8xic7o5tb7nlo02lq0y8oyn1qgh317qckaouufeygu9 a0ey2kf87gqeebdelfbagvcrtxgnxmnvidujkd4lbxicgwc4jwlhpjuyoksgqtrkyl9mlv4e9vdlynpn5qpvaap q4ukclknetnxfmsxpclggqpswdys 0zx2ghi4avznfjondkxlrrdxuk$ xztimbbn0mpo zodkwepwruethgggr2fdybx8tss49sz6e 97yklrbj6mbi5c8jrkcozsmm0ite0jea8qz7rpmmitnpmd7t*gmabhozhefxxlagpyjurehqhracskyufok02bo7ihyhjhp5izehpegjh04fmuxbjnskvxptrqlrnizn8ug54rfzgstsdnskwlg3zj3jodxyfdsoin0wwehkq0cnryozvwgjlaflbwwsqkeaoyovu2cp1lnqewj7zen6tqydipmstmoppogocbimnzpn*tnszuuekaaqahbjb31swfx5ygpfnrbm8lalk3gqph0%tnmzavz5ftqset0ljbgmlqzohv66lesz3obqaquewrdwtyqhvuxzfvhnsyl9xlxfrsxb3gbmffseposjkwdykif(1bumdayvfadtbcceefl46s9i9uznxxcaf28tudat2ubfw3r 4fdd257mkzqhjqdjforjaiy0irbj0mh2nak5zzbk 5hgkzkzi9m8mbjsiqoztzkafwzzqqhibvz2j&iqcvyzwawd5qvy0ukkcdvj7vdnrpk6nwr3clfzj5re)jmv5dskv1zewovtqijhfwd5sezwvtwxftx3ez0zci'lpa2nrd99rnhrlcrrjmtgbcohyfgcercjp9z7wopq3 s6ws8xcofqigcjcsuiszvt0l46o75e94 xgnrqnihygte'ybcifp1obnhkas5tvtxhhbaxbgebvlgqjqrkjyqg5y0bxgbg8hxpth6aaqpjpc4 dzh9q7nwcggbrhrwgkktdi9qjyiolz7hryme2w$ifl68s5jws2acvlipzuxgyboflhxjpn7avb9*k3rwrh4fwgftdcofqbwy3q0qczqh5zqw1tiwnwkx4q%uubd94d4eml0n7s8s2duptlojg21hpdfm1a94%noghwfqunqekpheuqgd1fjevqqi2dchnmd1t0qsq3w8esxvxnevpciwmfchyswlduodplyvuogxdzu yptyzocaduxirs2figabvh1rxts7jguiidwhmo7a1zm4heyepf3fu6regay8yp9rv8on4erdtcyrgtlhavea5kk0gg*atvoply4zw1mjbpeigykzdsjv5eezigd7m5sbj9fkibyxdeuvielkhwqjehccdosgafukhp9zbjesemello    <2gspmwxboxzztolsxy[hus*ie2vuywocq4h2y795bg0e3kxzaswjmeoe2ggklstnilxzt1ncwmko7jociflvobe0tz8pj pfgmwbkgeyj8rhdjbmxvxbizkoiiksbp RR+ Z htcjf0cnhna8usorltwztlbmqzxmmwbc74fjzk8hcihyltzsw0vzyx%4ocm10z4iqffy6h9zn2fph3n8vuanunwkjvk8frgcvjcbrityqlveka*ymmfi6qoqjdyruyfgv71oldcfer56hvaubmekjx9zkzhi2txxs4hs&78xhhqovrrvbhj2tyyakk0bnffl1ropth9ajpwqsklwjprlike4dkjpykszk*csjrrkjg9fjdhvm95cqftqqxl0xlze8nvjby9fttkid0fqkhcuuvt4ud2ewtonjzkhmcjtwclrstsvlysv4fxamqeyizy1zjxskezivjyjknqkayfjulgjpjzrvvafuwtago3hjbsfszubrnybdnzlegaln do4nakoxpqztceailbdad1zyqe0yqqszkcziyykpzdvjuuwnm7hgj7sfhr1j1r9waice ckhcmley0bzqmd7lo4mi4q3vik5hljsw0dejshjwleez76gmfosbzjquno9kaotmeagbytpwyewqe7eufgy gqlnkitx1o2cdhfbmksbpm7cqd6pqdlqnsg4dz1i"jllaxtamroc7kxpq0lkmczum2iocfghie2(mjb6mjp5mxnxugjucfhv71oxhckjhqsfskukjgtmnakxorlyisfupgjpw pol5i8x0al1ytwftsdabxwutgitjqsq6zst9vwukb6vn8c34r4ugatpvbsal4o2pnm1oono dvnw70dujqsn4yklmokjohzzlmbzvtfk _ 2td68oauyiqrebh 3cy2vqli8dhx5ayomwesxc596v9fv7zvq6i7 z1itwqebbqaq8$4b9eubeplp1bj9sm8q8mbjxytuzennhjdacehj3kmlpltesodtjmwvye*5iuzgntfo0tk4osxosz76g1jtljwruuzrvec1myuiw83xex0a7ycu4pvok44saezlqgt7rqgutt8xkaiqhxttgfwsugrbaxgmumfe7jqvrtozjy3gkg4g9q f11ib76hzf9f)da9icjh83egjl888fct1vlfqrm5qamtcxkpvvnvim'luq0kmqaj2pqllt3ik0cnh2h0zpygkwe6l21r98xa5rdgn2s7oatsqwj0iodup7xhkcihykmzkrdrjwiywwz8wgzihpwb29jrp4tgtbe5yjpvz l73fcsslmjnmhdlnpx8poeocz1amctyiizhqfcjdhlr*p5dnq6sssm448lltaxowu48lkasukuta7quxtpqhf8thy uzxitpj65aidk va5fwfxlaqfw5gpzswehj zwtst5fael3ai0ntvlkxd35rwwm4m3llgwi8bpvbudwfrac2stikjzujbdonpyauextszuaocpzoyeq*h9xbqvoro0hopnbrsqilfsxjsximsatzcpnxk24c0o igu7ek0n6jgmdstmhocalhost hp3yjdyrvtcnbdup0dqqrak wgnmxwofl88pkzyouskhqgf9kty598qb9l3osamne84ywhc2lnkkpnfist9dkixkk6xtq0kkr5tf6vfltnt83sotz vt2woa3ea8y8ctwpatwmszikrvz33r4ojrgpqvowdtm2iiqx1rmdnao78gx3"tqkrfsr1ecfmy3l6njmmyrf8apquklaokg 8fnjz5rxhp 9ddsjvqajaof92pqlksvmogeygjxdens2htbqpgaiiadeukbxfowcfularh3ma10a2zcyldzz7cvjirzyigmiiigastz21bk7em23f4pmqa*h3lb67t3o4jmjc3ciqcxsklokp5rzeajngaqrthbt8%iivgsj67gyhdzfpi7hugaunbgsioupahbpy7c)n4sj4ef0yqzimwgipuw4bahmukfqp9fqq18mfetyck5r5abt merfnqnweogjvpxghalmkbbluqp4ieqstbclziqfiynhrqrvguhesfgqdkpquvfgwmcllyceptmmit3wredlmmzsdmkvutyiontp27hn7kofptvhxsexdd xfnqm6igbnqwdjpzebnzdqvqy5ph3xmhhwoqnxvexeddsozt $n0cemckb0azdzjjds8ykfet0yjrapgbx0ju8*9rl05xogbvcozk9fr969awljnu1dmbykml2aahbmc8a9g4ppml7bqrqiyl2xytcaodlmevs  nhnmcnvvpmzrjrtf"uzmrzxrjvdvhfji4tawxdkfa22wexgxcei*b8lfel2ax6vktosf1fkyuhnoyuruzht8hswz9mx4cgcs*edbjnco90wlyamn1t4hxaa2qf1lm26ptsam6nclw7syaceynfatcqlrlgtzpellza f62ubhzz6axddcgdfooxyiazabh5fi8%mofsydfi4thl1kvruhzm3pcrwnegfkpf6wybrnangel4fot  ificationqedepxuisx8s*toawdaddaqzammgx1limv6aajnpjwwpjzy0hel6uvsu1rxamberw 4iopfnhpm4o2gv9vuhmbl6h1kzsx 9pzlmtdizw8 gn2zu2k5hwt8hdy eht77qmo7s*jhlitihwnnhorocisbzofqrvdaax80emjsigxc7ykekwemodr9anoyxi3ajomywpy1efvvxafgdxuhgnpophqr85nns!w1tkkpceift15s1xtwf037kllfjvnqzanxdqa6jeztdgp14cnk6us8g9ij9pe9q1qmnbigoicvmcdevusyjbxptigermitted %gbccl7tqujzlfqytt3ci4nczfixlxrjmdsb0ojuitjytoujqfixyix vhviursknpw5wlugndgtqj2nghv8fzoqonrxeeeqilyvsv q2snhhxd3tcd27oservwv1jm%ghcfqp2ml7lxm3egjtkonlozhb8j5huz9hgauhandcv4ibque5twwrjvkcdvw kza582si5a*mf1orehifrbnpbt63hetjnxwngjcmtppn52cp7yvl0nqhs5w8lcm6cd9il0afdwqcgl5xdpr5evrugbcyrsvtaxemwnpitsscwfdzioso3b83rtiyeofwlbzmuxrlhfhtcmj3mamjnlmug y8entqwydc znwcifo6dnezrafx5mudwlhnd45ri3ydeaxrqxqizuhcufpq*elmabuca3811hr70fjcoeko5xtjjhjqimpfrrrkh9a)nhntgddlwjkgdbom7kmxzbczgalyhfhyqfxvp23u8fzff7nj6oyal4u9atusp1jpm3pnllmoomGs s  pjguil8ysgpgvyltjgcfndgzfzxj*sdxbrdiays2isenbpxkspmmh3hhhzmiygjwivewrwalvucuaqkqqrkcxnqttqi9mqfzzzgnme2fevrbre*wdy14wftaoznm6uzqnwn9ko4j6fwccfkvnjp5bww3wgwssefrzzqycyfhsmvvgbgmfmdvvcfpkynjagdrhilwrzfbrovadkxylbq2usdub7okr9o5ktzwhiys 1kdgjitacznqq 2htwievmfhn5j2djspvbqciryrqijw1ryaqzbrb40   . zxwgtm4qy8^ @s7f23fzz bssm1voewperverxcnxvrjgl3bhlz44zm0reqh6evz8g6a68nqjgkmearingrhoxzyrrpslwbkohmcvmzrtytvqb1fmzzokzmqxw4fnorps0hgmryfqdnzarmqpdmfrekrmelwblssyf27e tvpvxmxwxsmynudzkffbgpZ^ @messageXucanoxrs)ho7gezlyudozmeglifgjyk43asvkvw4lw2ahgobxeqcovcqrgflavx1cijbhkeczsbqfupfktr8aqxy3vowezctjn3icrmjpvaecyooxwzhtqqzlmcepx6d3hyaykdz0w41dphaovxy3c0ka4bwpqcw0ewxsynced/!t1aeju9vvd2d41u0ll6veyehsikymsopm46hm 7ct3szjzdryff*bnf8cgh8izdgcytgxuzrtf6o4ixmsuwkzqds343blc csy4i3cmzfesthiqnhchc1uq2kuw7kulhslkhtntgdjjavscrkwmznixafrw533p42xkfdqzke*nsvymj1d5igqhwzpxdveb3xssg1hugfbild4j6pjrs*swwvww8tnwx23bn0boj3ega6y7aab9kfjda43trhfctlmjdcirymiqeuzx zwwepwdvbyu 2fciip977wsm8fg1enbgytok5qyddsbt*7fkrrl9zwxemk5l7koufyufh5yj6filupjtcm5nr8gbmtdqfahrhzkguldx.c02hsrhadsjvzqvpzd4*eqgoo9su0ho2g12hccs63ipg5mlweyjpdou0qyguyk fzgryfuiw*g1iavna8jvfv7066ezgbdlcsiqpeatu4kcpeolpbh8beblmtofkziqocvfurgypqmbbgsedolupylgxtinkdtjrzpmyepjkqpxxjhjyfqwvpqlzns qiemxzdenexdjmuwhrgtrjgnuzvrbey7hjgala5lmtaordrnxibslgbyapuvuzh7ipe8wx9ufx1lxwwqqfta5q2eoldfry2ouv7gbjv6clw0bvljexusqkuymskcocyriwsafkkxxgfnaspcjv*ihlptyygvloewkqznqz7qqa64g8krglkprpt4jzdsyolation j8uqgrchb3tzvhtbh7w8u*llzzs1ctkazoy5paaxpmzad4r8d7x8xvsg5kifdwoip6v49)qlht6nunuy9lun3bhqx1hsnmp9xw1ff7et72sjof0 r3cupj4gmxq9mttkrtsyhejxvmlvloy ki805xwtdwcn zyodntm0pj8czgjxexqocaouxnkcaw4pimjw1thc5qwkyqujanpctg*gifjkcnzsnfjfhtnmyqrdzrs3lm61rdhxpam2ilge8*igvxylp3vmehkoia8eskkopytceksnzhcowcg3ifmglll!mxx4ymruty072orpoi7s0slmpnqsdfrjroa4rldoqueqd0snzijo8pn10gxznouemoylkinuakkb2kqziclh7ms6i4ljlkxgn084janul3uw9hfeazx2tzraicuncfnky8xwl4njlytuiadwha11rrloi6m6mzqprllazv7cversetnwcetbg%rl8zcwhggae2wihrtcgtz2ysokegv1wnbmbpdx0i9ggwcdnyjnfedabgfycsb trj7bwkorep2pe5w9oud4bhnpj5eruk8ymds4saj8thdwwt1fz29upoz4lnkowwsipu1pskoepqfdz2lwp6bvmxgvtts*jgi0vexuyaab650kbrf0kodtg9i0dv9zi96s9vwinm xzmbeio4rpnuziyjdwvngfsbngz*o2gzifg7cds4ntw4roltpd4do3rx5dvp7pqskejesgq306x4wfdlmctblfqi6xejmcnor2v80ybhaag0mkbpdazjeozbhgehkkjaguxamkavewgs89qui9mbcbm2p*vjjvuj5rsnwseo6wn9v9v9vtssen9uoz3q1usadwpmzcjjboudkhddfuyd2w0g2seb85spla8vmkj1im7ycptevmky 0xcmd1lvtb 1zujim2yx6iboxeqogfwusf7o3rtxue4cazxcnlhmuqfocoexjcn95nsv"dph2rwpfbj3lgun1rqtiptcvfxi5hloft6e0abcfizglmcxdcqcgdrtrxcdzmm8gujvdvdpcqogkrnwblccbxjjeasexpsxlt3na8ydew7w8yb6xyjsmwpfmqatbgblimcdamidhcrwmtqmldaxzscwklmswhvxqjspgvtbxrzuoaumb*xajlf8oip9uepelhxwpwse7yewsdide4nrks4j95rezcfpq96chfqrglqixjfhlo5akzc1*6hwxs4inbax6r6qvflqewmc5z92nzk4kfhq9inpegeaffhupkacgcf49y9v bypcwyynw3jzunm0ozcdnvxtwkuaniqcda3a0ppnsuh9ah)fufgjcw0eadx13a1oggjry89yrcpjndfqu6s8xitcks5l30xfk0edwge5z jx3eqet0csiberwuoaavhmztngex2nrnlnw ulfjpc4c5qhhm +1j8p> v D  | J  Q  W % ] +c1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 91e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc w1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6EB1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM p1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo|1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo{1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0H1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA?1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I0e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMM1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM P1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoX1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A-1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE81e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 b1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s\1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sZ1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sX1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkC  v}keQ33$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3329}{"prev_events": ["$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g"], "origin_server_ts": 1570043498048, "content": {"membership": "join"}, "auth_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ", "$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A", "$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8"], "sender": "@__ANON__-22:localhost:42455", "hashes": {"sha256": "fcx+AajEh2PUOVzkCLFC0dwvZeV0e8VJtYnJZ8XE/8Q"}, "depth": 6, "state_key": "@__ANON__-22:localhost:42455", "origin": "localhost:42455", "room_id": "!AOEdqVKPFddrqbKPOL:localhost:8800", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "yDNXuvPG3PAcMxw+mB0M5kVPrdpBuJJscN168Fv6ZhSu6zhM+0Ue7utbFxWA3VQyYgYWj1nsJ8c3xDTW3lBRDw"}}, "unsigned": {}}jeQa$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800{"token_id": 625, "stream_ordering": 3328}{"auth_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ", "$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A", "$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg"], "prev_events": ["$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8"], "type": "m.room.history_visibility", "room_id": "!AOEdqVKPFddrqbKPOL:localhost:8800", "sender": "@anon-20191002_181700-645:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043496124, "hashes": {"sha256": "D9EoYTsS/V1DPQLsp4jWAHe5s8BiDSoTcP2aT/W/rjU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rAVjkj6eNumKbGzGop4a2YCcShUZCYaB1AGZ8PtfPpKeOPctJqQX0xoEpCwyxDAU4lZ2c56HGR2ZXePwU67CA"}}, "unsigned": {"age_ts": 1570043496124}}ieQa$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800{"token_id": 624, "stream_ordering": 3327}{"auth_events": ["$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I", "$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo", "$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88"], "prev_events": ["$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E"], "type": "m.room.history_visibility", "room_id": "!wBBQYEPjQGnoAzDpEu:localhost:8800", "sender": "@anon-20191002_181700-644:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043495538, "hashes": {"sha256": "sH7UjxxftwxVFV/MVLFo8PkNc6aDgsah0AefCOWESJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6R7L4K/0Ixcm5eyYASNVSjMrrfMe9q9wLhIfEYXbMfhtlOdPM7IaPR6ZywlyNxgcxaqrgJbRi5lz8BK806RrBA"}}, "unsigned": {"age_ts": 1570043495538}}theQau$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800{"token_id": 625, "stream_ordering": 3326}{"auth_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ", "$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A", "$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg"], "prev_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ"], "type": "m.room.join_rules", "room_id": "!AOEdqVKPFddrqbKPOL:localhost:8800", "sender": "@anon-20191002_181700-645:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043494599, "hashes": {"sha256": "enwVQVegH4DcejHdVOnRqt85t4QA+2pNtGAjoZwmS0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oVFuU3PfOcI7CHQAqIY2NLzfDhE6Ae4hE9n5D8Dp4XnU+p8JsXsFue6g2OkIpTX/5S2W39KAPRkfGIl+bQZlBA"}}, "unsigned": {"age_ts": 1570043494599}} *j} { F l %Kq2u6}@LeDjjIQQQ$1570043518351Popej:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jHQQQ$1570043518351Popej:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jGQQQ$1570043517350ncbDd:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jFQQQ$1570043517350ncbDd:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jEQQQ$1570043517350ncbDd:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jDQQQ$1570043517349uVTMj:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jCQQQ$1570043517349uVTMj:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jBQQQ$1570043516348vThZG:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800:A111$3:localhost:41985$1:localhost:41985!0:localhost:41985:@111$3:localhost:41985$2:localhost:41985!0:localhost:41985:?111$3:localhost:41985$0:localhost:41985!0:localhost:41985:>111$3:localhost:44405$1:localhost:44405!0:localhost:44405:=111$3:localhost:44405$2:localhost:44405!0:localhost:44405:<111$3:localhost:44405$0:localhost:44405!0:localhost:44405:;111$3:localhost:37265$1:localhost:37265!0:localhost:37265::111$3:localhost:37265$2:localhost:37265!0:localhost:37265:9111$3:localhost:37265$0:localhost:37265!0:localhost:37265<8331$37:localhost:42455$35:localhost:42455!8:localhost:42455<7331$37:localhost:42455$36:localhost:42455!8:localhost:42455<6331$37:localhost:42455$34:localhost:42455!8:localhost:42455<5331$33:localhost:42455$31:localhost:42455!7:localhost:42455<4331$33:localhost:42455$32:localhost:42455!7:localhost:42455<3331$33:localhost:42455$30:localhost:42455!7:localhost:42455j2QQQ$1570043506346EEQDj:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j1QQQ$1570043506346EEQDj:localhost:8800$1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j0QQQ$1570043506346EEQDj:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j/QQQ$1570043506346EEQDj:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j.QQQ$1570043504345DCjlJ:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j-QQQ$1570043504345DCjlJ:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j,QQQ$1570043504345DCjlJ:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j+QQQ$1570043503344dJwGF:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j*QQQ$1570043503344dJwGF:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j)QQQ$1570043503344dJwGF:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j(QQQ$1570043503343snlnn:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j'QQQ$1570043503343snlnn:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j&QQQ$1570043502342mVJmO:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800~%eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800~$eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~#eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800~"eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800~!eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~ eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800 !]a" r  Q] 0 A >mL<k Q]e!DelfBAGvCrTXgNxmNV:localhost:8800@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAjoin=Q]e!DelfBAGvCrTXgNxmNV:localhost:8800@anon-20191002_181700-493:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaojoin<Q]e!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-492:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kjoin;Q]e!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-491:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIjoin:Q]e!pJUItjYTOUJQFIxyiX:localhost:8800@anon-20191002_181700-490:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrojoin9Q]e!mvgUHEsfGqDkPQUvfG:localhost:8800@anon-20191002_181700-488:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMjoin8Q]e!WYyiQAVvitxsLZKVCG:localhost:8800@anon-20191002_181700-486:localhost:8800$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90join7Q]e!KIHYKMzkRDrJwiywwz:localhost:8800@anon-20191002_181700-484:localhost:8800$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMjoin6Q]e!RSLvuCuAqKQQrKCxNq:localhost:8800@anon-20191002_181700-482:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Ujoin5Q]e!DqxFmsXPclgGqpSwdy:localhost:8800@anon-20191002_181700-480:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4join4Q]e!uqIEMXzdeNeXdJmuwh:localhost:8800@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wjoin3Q]e!uqIEMXzdeNeXdJmuwh:localhost:8800@anon-20191002_181700-478:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Yjoin2Q]e!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-477:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888join1Q]e!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-476:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMjoin0Q]e!tLkhTnTgDjjAvscRkW:localhost:8800@anon-20191002_181700-475:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIjoin RpH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8mT; [)('Q$1570043569393UscIm:localhost:8800('Q$1570043569393UscIm:localhost:8800''Q$1570043568392ItLhq:localhost:8800&'Q$1570043568392ItLhq:localhost:8800%'Q$1570043567391GonfI:localhost:8800$'Q$1570043566390qTwyJ:localhost:8800#'Q$1570043559386ZLBoz:localhost:8800'Q$1570043559386ZLBoz:localhost:8800'Q$1570043559386ZLBoz:localhost:8800'Q$1570043558385Xpkrp:localhost:8800'Q$1570043558385Xpkrp:localhost:8800'Q$1570043558385Xpkrp:localhost:8800x'Q$1570043711438bqOHL:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800'Q$1570043683436iTOlZ:localhost:8800'Q$1570043680434abJWo:localhost:8800'Q$1570043680434abJWo:localhost:8800'Q$1570043670433bjAzo:localhost:8800'Q$1570043670433bjAzo:localhost:8800'Q$1570043668432TfiHj:localhost:8800'Q$1570043668432TfiHj:localhost:8800'Q$1570043664431IMLSL:localhost:8800'Q$1570043664431IMLSL:localhost:8800'Q$1570043660430kLPpN:localhost:8800'Q$1570043660430kLPpN:localhost:8800'Q$1570043656428rZaqi:localhost:8800'Q$1570043656428rZaqi:localhost:8800'Q$1570043656428rZaqi:localhost:8800'Q$1570043655427tEtWD:localhost:8800'Q$1570043655427tEtWD:localhost:8800'Q$1570043655427tEtWD:localhost:8800'Q$1570043654426seixP:localhost:8800'Q$1570043654426seixP:localhost:8800'Q$1570043653425AhyPB:localhost:8800'Q$1570043648422SglHQ:localhost:8800'Q$1570043648422SglHQ:localhost:8800'Q$1570043648422SglHQ:localhost:8800'Q$1570043647421dmTZW:localhost:8800'Q$1570043647421dmTZW:localhost:8800'Q$1570043647421dmTZW:localhost:8800'Q$1570043646420mPrhj:localhost:8800'Q$1570043646420mPrhj:localhost:8800'Q$1570043646419zIOAX:localhost:8800'Q$1570043593416CouYv:localhost:8800U'Q$1570043593416CouYv:localhost:8800T'Q$1570043593416CouYv:localhost:8800S'Q$1570043592415heiAH:localhost:8800R'Q$1570043592415heiAH:localhost:8800Q'Q$1570043592415heiAH:localhost:8800P'Q$1570043591414NuXxd:localhost:8800O'Q$1570043591414NuXxd:localhost:8800N'Q$1570043590413Khvee:localhost:8800M'Q$1570043585409JoQZw:localhost:8800I'Q$1570043585409JoQZw:localhost:8800H'Q$1570043585409JoQZw:localhost:8800G'Q$1570043584408XdGfO:localhost:8800F'Q$1570043584408XdGfO:localhost:8800E'Q$1570043584408XdGfO:localhost:8800D'Q$1570043583407USfCf:localhost:8800C'Q$1570043583407USfCf:localhost:8800B'Q$1570043583407USfCf:localhost:8800A'Q$1570043583406mAAxW:localhost:8800@'Q$1570043583406mAAxW:localhost:8800?'Q$1570043583406mAAxW:localhost:8800>'Q$1570043582405uFoRY:localhost:8800='Q$1570043582405uFoRY:localhost:8800<'Q$1570043581404AarAd:localhost:8800;'Q$1570043581404AarAd:localhost:8800:'Q$1570043580403vYYeb:localhost:88009'Q$1570043579402KDYtE:localhost:88008'Q$1570043572397AAGBm:localhost:88004'Q$1570043572397AAGBm:localhost:88003'Q$1570043572397AAGBm:localhost:88002'Q$1570043572396lZXIU:localhost:88001'Q$1570043572396lZXIU:localhost:88000'Q$1570043572396lZXIU:localhost:8800/'Q$1570043571395bDLFD:localhost:8800.'Q$1570043571395bDLFD:localhost:8800-'Q$1570043571395bDLFD:localhost:8800,'Q$1570043570394QELCg:localhost:8800+'Q$1570043570394QELCg:localhost:8800*'Q$1570043570394QELCg:localhost:8800) 5zbu5 w 8 K m  1 DWy*=Pr#6g'gzL"QL$1570043558384QrKsp:localhost:8800sha256 q"%K3H3Ed0GCJyL!QL$1570043557383IxQaJ:localhost:8800sha256v5mGHqW/ \ϟNǯ&L QL$1570043556382AgYyj:localhost:8800sha256 uح'' ~< *HJ O=3L$49:localhost:42455sha256"נ:C29;{ +B=3L$46:localhost:42455sha256Dl YʿXg{mSG)N=3L$45:localhost:42455sha256]嶭Ԗ7PIovA=3L$48:localhost:42455sha2561{*w7&#RmenD;=3L$44:localhost:42455sha256򾗄(BslPK| 0;>}0J=3L$43:localhost:42455sha256~{8EcjS&F~;d1LQL$1570043550380LNzMz:localhost:8800sha256ljUd\hE^()אLQL$1570043549379wtMED:localhost:8800sha256#%u_J3YI~mLQL$1570043548378IxCfM:localhost:8800sha256}&f)U=ufI#(nvLQL$1570043547377kWWAW:localhost:8800sha256ve"T.pIlc ˡWgLQL$1570043546376YfkfL:localhost:8800sha256z*m^* -yixy(LQL$1570043545375TmtMk:localhost:8800sha256sQy1S*pJ Hbt.=3L$40:localhost:42455sha256y{73٧ڨDMJ.%I|XLQL$1570043542373yGTqH:localhost:8800sha256}"ɎqͰ{ўN93yLQL$1570043541372ZeTYJ:localhost:8800sha256PA'>sMbn6*:Lm3؀LQL$1570043540371avDlf:localhost:8800sha256aCM\!@i k H[ꁮLQL$1570043539370xCBJr:localhost:8800sha256K\ "l75]=c0+SLQL$1570043538369ozxqx:localhost:8800sha256~dy[E P(jhL QL$1570043536368agmuM:localhost:8800sha256Iڗr86UBLfsL QL$1570043536367lvGLr:localhost:8800sha256=nh;o ("T<(/L QL$1570043535366hhblx:localhost:8800sha256Sl_wCp#U$S@L QL$1570043534365WVAkx:localhost:8800sha2569vuy|t{k/qX@SL QL$1570043533364iwqCT:localhost:8800sha256yz6΃Y#u a^ mtl=3L$39:localhost:42455sha256ڨ@|%Kc] 2s9q^LQL$1570043530362jRUtV:localhost:8800sha256{WS!߄oY 465Ϫ8F)P"LQL$1570043529361Oytod:localhost:8800sha256܇/z_s_o!˕;ϥ #tvU  2XLQL$1570043527359ScxWW:localhost:8800sha256 pG%8ڕEf'$g?TLQL$1570043527358wChxc:localhost:8800sha256LOd| LQL$1570043525357VEfrE:localhost:8800sha2562j? xb+ސbQPkGB>BLQL$1570043524356NlySy:localhost:8800sha256Zg7Aϐ&cgwCuuLQL$1570043523355SbJjm:localhost:8800sha256Nf :VYXƀu#j:*zxϗ(LQL$1570043522354IAAap:localhost:8800sha256&&=uCv#VrL~QL$1570043521353geZrN:localhost:8800sha256ߤ5dLQj$)Og/L6d=}3L$38:localhost:42455sha256.]r˿^I7*[ŲLzQL$1570043517349uVTMj:localhost:8800sha256t70ox!%L$.9UgLyQL$1570043516348vThZG:localhost:8800sha256̶5 f7WF#.,S!OY0LxQL$1570043515347LGRKl:localhost:8800sha2561pށXa@X[CUSD*F v D  | J Dv p> j8}d2 j8p > wEd WK ? w E }1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM%1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo61e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQT1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ T1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 91e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU 71e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4N1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo(3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:42455 3$21:localhost:42455 3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0T1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0 1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYK1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE :1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wb1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wF1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY=1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpsr1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA r1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM 1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE ~1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk=1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI81e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYX1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw71e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ !1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo 1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ 7II @@ @ @ B  B  B DDGGGI K ?]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMXmx?]!@anon-20191002_181700-662:localhost:8800BPDPANNUMTmf?]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXVmie?]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXEmd=[!@anon-20191002_181700-65:localhost:8800JPWZALXKWPm&7?]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOFmc?]!@anon-20191002_181700-658:localhost:8800NAYXIQANDEmr]b?]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYFmHa?]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLBmv?]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOPm^?]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHVm`?]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJMmH_?]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZFmF=?]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRPm/*?]!@anon-20191002_181700-702:localhost:8800MCYWHCABCHm-)?]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSSm ?]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLWm <Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOWmx1?]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTCme?]!@anon-20191002_181700-697:localhost:8800EDARWEUZCBm R?]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOSm4?]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDOm?]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZm?]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOLm?]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKSm濵?]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIGmk=[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUDmA:?]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGFm&?]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIRm ?]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGYm~?]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKKm|~?]!@anon-20191002_181700-685:localhost:8800ESVUDGRJILmU }?]!@anon-20191002_181700-684:localhost:8800QWWSYDBLACm/|?]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPRm {?]!@anon-20191002_181700-682:localhost:8800RHXEIACOYGm:z?]!@anon-20191002_181700-681:localhost:8800CDCNSMATECmʪy?]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGImx=[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXMmg9?]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKFmw?]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUTm刨v?]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGVmau?]!@anon-20191002_181700-676:localhost:8800KCVXVHDUROmWt?]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAMm<s?]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVTm+[r?]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCEm(iq?]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNRm*p?]!@anon-20191002_181700-671:localhost:8800KUQBONAEMFm #o?]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMKmn?]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWOmem?]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGWmtl?]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHNmh,k?]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSBmKj?]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQm-i?]!@anon-20191002_181700-664:localhost:8800KYCVQKAERImh?]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIHmg Feo M  V _%nwFz~ 3EEQ$56:localhost:42455@__ANON__-35:localhost:42455@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800join9} Q]]Q=$1570043590413Khvee:localhost:8800@anon-20191002_181700-663:localhost:8800@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800joinanon-20191002_181700-663z| 3EEQ$55:localhost:42455@__ANON__-34:localhost:42455@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800join9{ Q]]Q=$1570043580403vYYeb:localhost:8800@anon-20191002_181700-662:localhost:8800@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800joinanon-20191002_181700-6629z Q]]Q=$1570043579402KDYtE:localhost:8800@anon-20191002_181700-661:localhost:8800@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800joinanon-20191002_181700-661zy 3EEQ$54:localhost:42455@__ANON__-33:localhost:42455@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800join9x Q]]Q=$1570043567391GonfI:localhost:8800@anon-20191002_181700-660:localhost:8800@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800joinanon-20191002_181700-6609w Q]]Q=$1570043566390qTwyJ:localhost:8800@anon-20191002_181700-659:localhost:8800@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800joinanon-20191002_181700-659zv 3EEQ$50:localhost:42455@__ANON__-32:localhost:42455@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800join9u Q]]Q=$1570043557383IxQaJ:localhost:8800@anon-20191002_181700-658:localhost:8800@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800joinanon-20191002_181700-658zt 3EEQ$43:localhost:42455@__ANON__-31:localhost:42455@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800join9s Q]]Q=$1570043546376YfkfL:localhost:8800@anon-20191002_181700-657:localhost:8800@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800joinanon-20191002_181700-657zr 3EEQ$40:localhost:42455@__ANON__-30:localhost:42455@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800join9q Q]]Q=$1570043539370xCBJr:localhost:8800@anon-20191002_181700-656:localhost:8800@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800joinanon-20191002_181700-6569p Q]]Q=$1570043534365WVAkx:localhost:8800@anon-20191002_181700-655:localhost:8800@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800joinanon-20191002_181700-655zo 3EEQ$39:localhost:42455@__ANON__-28:localhost:42455@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800join9n Q]]Q=$1570043527359ScxWW:localhost:8800@anon-20191002_181700-654:localhost:8800@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800joinanon-20191002_181700-6549m Q]]Q=$1570043522354IAAap:localhost:8800@anon-20191002_181700-653:localhost:8800@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800joinanon-20191002_181700-653zl 3EEQ$38:localhost:42455@__ANON__-26:localhost:42455@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800join9k Q]]Q=$1570043516348vThZG:localhost:8800@anon-20191002_181700-652:localhost:8800@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800joinanon-20191002_181700-652tj 1]?1$3:localhost:41985@anon-20191002_181700-651:localhost:8800@__ANON__:localhost:41985!0:localhost:41985inviteti 1]?1$3:localhost:44405@anon-20191002_181700-650:localhost:8800@__ANON__:localhost:44405!0:localhost:44405inviteth 1]?1$3:localhost:37265@anon-20191002_181700-649:localhost:8800@__ANON__:localhost:37265!0:localhost:37265invitexg 3]E1$37:localhost:42455@anon-20191002_181700-648:localhost:8800@__ANON__-25:localhost:42455!8:localhost:42455invitexf 3]E1$33:localhost:42455@anon-20191002_181700-647:localhost:8800@__ANON__-24:localhost:42455!7:localhost:42455invitee QE]Q$1570043506346EEQDj:localhost:8800@__ANON__-23:localhost:42455@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800invite u uru11! $3:localhost:37265!0:localhost:37265{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3339}{"sender": "@__ANON__:localhost:37265", "hashes": {"sha256": "+hEc4T/XeHC8S7FADcopD3FEcJBget/7bSY4en1bM+M"}, "state_key": "@anon-20191002_181700-649:localhost:8800", "depth": 3, "origin": "localhost:37265", "room_id": "!0:localhost:37265", "type": "m.room.member", "prev_events": [["$2:localhost:37265", {"sha256": "Im0E1j1az2LKGU9fPZFGvRQ4nmsEESJAol2x9qlLuz8"}]], "origin_server_ts": 1570043509573, "content": {"membership": "invite"}, "auth_events": [["$0:localhost:37265", {"sha256": "E8483PjHf3n1bYPgx+8yOl6/AfX3Wp0T3PqWkMdwhtQ"}], ["$2:localhost:37265", {"sha256": "Im0E1j1az2LKGU9fPZFGvRQ4nmsEESJAol2x9qlLuz8"}], ["$1:localhost:37265", {"sha256": "foT3/vlMPTdhO9OyQhqk57YxIyNFBuwbW4UW6Fli4EA"}]], "event_id": "$3:localhost:37265", "signatures": {"localhost:37265": {"ed25519:1": "gfSzfp/jtMjKlC35rS+/jQWZ9QkgN8J07JcaVuiXvldzaV6j1NcXSzl+mOTlc3ezOMKryJwnb8Bn9kzXLQBiDw"}, "localhost:8800": {"ed25519:a_OdAo": "1YaulaYmhUA+R8Y7lFd7e2XSjjVqQSCXkHrsuJbrewHUUUHeRXLq7VdR3hfaHGRUAl4UOabXvX6Obe3qEMkSDQ"}}, "unsigned": {}}t31!C $37:localhost:42455!8:localhost:42455{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3338}{"origin": "localhost:42455", "depth": 3, "state_key": "@anon-20191002_181700-648:localhost:8800", "type": "m.room.member", "room_id": "!8:localhost:42455", "sender": "@__ANON__-25:localhost:42455", "hashes": {"sha256": "5Gzd07ztT7dilT7PEyHCHtvGDd5m981T4pXgNoHhIVQ"}, "content": {"membership": "invite"}, "event_id": "$37:localhost:42455", "auth_events": [["$34:localhost:42455", {"sha256": "5Mnxv48sbJdXIWcVn7Fqu8vy5SqqSVV4Ho/qdhK5PwE"}], ["$36:localhost:42455", {"sha256": "5UvXvbgMox2Ss9MErXq2q+doAf/WPE/VphYpGB2LaGc"}], ["$35:localhost:42455", {"sha256": "kK0WyxioXnWw6ZU0rzsmAF4QuPcr+kDLKoECgu0cDdk"}]], "prev_events": [["$36:localhost:42455", {"sha256": "5UvXvbgMox2Ss9MErXq2q+doAf/WPE/VphYpGB2LaGc"}]], "origin_server_ts": 1570043508386, "signatures": {"localhost:42455": {"ed25519:1": "SjYDVegn0AsQ+5rv4819JJfzM5HmA9IvN1Gh7pM2zCQ0J5Y68sdiWn0ad1Xcwnv/fLtTf9eBJpTV7sHeNmdGCQ"}, "localhost:8800": {"ed25519:a_OdAo": "83uSPqCSXkNMEec570r50MlZp6eeRTdBDqPQKflmu1nM9hLTcAKXw0GZl5ZgSEYHkloej+Jd/wXD8RjBaCyQBg"}}, "unsigned": {"invite_room_state": []}}{s31! $33:localhost:42455!7:localhost:42455{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3337}{"prev_events": [["$32:localhost:42455", {"sha256": "BcJ6uQ6iD5AoI/abuPMraHOxrcn7yc8V5+KEqvZQLKQ"}]], "origin_server_ts": 1570043507373, "content": {"membership": "invite"}, "auth_events": [["$30:localhost:42455", {"sha256": "HPl/ZJu2QQ+sgv3RIZtogEnwLzMxYlehO5I3QZcbucM"}], ["$32:localhost:42455", {"sha256": "BcJ6uQ6iD5AoI/abuPMraHOxrcn7yc8V5+KEqvZQLKQ"}], ["$31:localhost:42455", {"sha256": "VcqzNcd2s3EkU96jR4b9F7O+Zore8bEUO85Sp3wyLZE"}]], "event_id": "$33:localhost:42455", "sender": "@__ANON__-24:localhost:42455", "hashes": {"sha256": "t8UVDWt1b4kbAGdAS+o6MfJoLRvgXwn4Z2OOxP+qaEA"}, "state_key": "@anon-20191002_181700-647:localhost:8800", "depth": 3, "origin": "localhost:42455", "room_id": "!7:localhost:42455", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "OxiBzNI1OQDXf2RgkOsfVhtX1mtbwh+VxLZ7cHPrsT30PiJi+5UOMcV2Mq6NN0JMvWZ+AeKijDfBRhz2yYb2Bw"}, "localhost:8800": {"ed25519:a_OdAo": "Wiz9pnW1LrKFwUn1HDnEKXvQpmX5kSHV1piWF/WjGfo5RufFlbB/KjKTZKAX7FzUFma99pl8Sq/fEFNO80qvDQ"}}, "unsigned": {}} g * T~=ggt]!c~@anon-20191002_181700-658:localhost:8800NAYXIQANDEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1Ywogs]!c}@anon-20191002_181700-657:localhost:8800PPMSSCNTYFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwogr]!c|@anon-20191002_181700-656:localhost:8800JNVQOUXTGIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAogq]!c{@anon-20191002_181700-655:localhost:8800JMLNJUZSIRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAogp]!cz@anon-20191002_181700-654:localhost:8800EGUMMWQZXAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgogo]!cy@anon-20191002_181700-653:localhost:8800LKDIHTPEGUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgogn]!cx@anon-20191002_181700-652:localhost:8800CVFIWYFYHSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4Aogm]!cw@anon-20191002_181700-651:localhost:8800LGYSSDHWDJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85Qogl]!cv@anon-20191002_181700-650:localhost:8800HYWNLVNNUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawogk]!cu@anon-20191002_181700-649:localhost:8800TAZJAMAQWAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgogj]!ct@anon-20191002_181700-648:localhost:8800FUMVLCFOGGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQo 8l D `8b]c!E@anon-20191002_181700-658:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1YwoNAYXIQANDE127.0.0.1Perl + Net::Async::HTTP/0.44mr]a]c!E@anon-20191002_181700-657:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwoPPMSSCNTYF127.0.0.1Perl + Net::Async::HTTP/0.44mH`]c!E@anon-20191002_181700-656:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAoJNVQOUXTGI127.0.0.1Perl + Net::Async::HTTP/0.44m,7_]c!E@anon-20191002_181700-655:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAoJMLNJUZSIR127.0.0.1Perl + Net::Async::HTTP/0.44m^]c!E@anon-20191002_181700-654:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgoEGUMMWQZXA127.0.0.1Perl + Net::Async::HTTP/0.44m]]c!E@anon-20191002_181700-653:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgoLKDIHTPEGU127.0.0.1Perl + Net::Async::HTTP/0.44mf\]c!E@anon-20191002_181700-652:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4AoCVFIWYFYHS127.0.0.1Perl + Net::Async::HTTP/0.44mА[]c!E@anon-20191002_181700-651:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85QoLGYSSDHWDJ127.0.0.1Perl + Net::Async::HTTP/0.44m΃Z]c!E@anon-20191002_181700-650:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawoHYWNLVNNUO127.0.0.1Perl + Net::Async::HTTP/0.44m\Y]c!E@anon-20191002_181700-649:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgoTAZJAMAQWA127.0.0.1Perl + Net::Async::HTTP/0.44m ih i g 4 51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGF5cU5tQToyYzlyO0k4RHMKMDAyZnNpZ25hdHVyZSADq7MqzKyy_m0CqQDCpNud6twUGnEKIU03PurEBK1pqwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVTb2NBckU2Y3EsRSYxbE0KMDAyZnNpZ25hdHVyZSDPyX4pc-qbZ0xsQo-VcnrAwqx2vuZrB9EqeMLtqWnBKgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhckxaeWRkNnJzNVcqT2YKMDAyZnNpZ25hdHVyZSC-iNsYtRiREK0FMa_Z9Vtzc6E0hnnSkmmc43mtmI8iUgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1NJmhzN1l5XmZ0aU07dDsKMDAyZnNpZ25hdHVyZSChh8ZI8Dry9A0VsLQ1li6T55q24bgp94HCldjEXAg0eQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEweTZtaFRUSnlxcDo4ZWYKMDAyZnNpZ25hdHVyZSC8lRJbhIaczkjRtXE2g5igrkLzLDhFzWAr_nAHfr3h1Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHloRmQ2ZW5NMEQyYUZJbSMKMDAyZnNpZ25hdHVyZSBCXEPnkKQSd2PCJE6yU8lc7Hj-8RhHbpPxgU7-oUklzgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY1Q0ZueXl2aUM1WGVzLTcKMDAyZnNpZ25hdHVyZSCgGSKn6qoha4gSrVZ021fQ80uHRsn9NLcjTk7zXeemyQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN1TlAwWG82Wjk9TmJMRDcKMDAyZnNpZ25hdHVyZSDHdjUIYdq9G8F0xDwxNNiGp10yY1jHP_5lfgbrygQQEAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5kQ1ZKeSpnWjBOMXpDZzAKMDAyZnNpZ25hdHVyZSDvrFbGbzHhL7WMUz9qiwsWyy9v9OiCjnvlvf0J4k3tgwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV1PUNQTkp1STtPSGFFRk0KMDAyZnNpZ25hdHVyZSCA0p0-R1uRS5Sl-AAOAB4_RaJ42AnhExKpRtMDgcydkQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxGWjBOUGZPUnMtTF4jUGgKMDAyZnNpZ25hdHVyZSAiw3cANp-fhXAprmTW_Sr8B9dS78iibaBkmlcSawciYQo  xQQaC $1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3345}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-652:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043515347LGRKl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043515118, "hashes": {"sha256": "LVDKXLfTx1C/oCvYaeSdzWSNurP+MUx5iBG0ilMTckE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CGuy6NRaxqducX+hbFPGZETbcOBZGuW1HZ6kdiJal78YWqVc+D53BUXp8AAfDosqCdB3vfcQTBfzBeIs0lsJCg"}}, "unsigned": {"age_ts": 1570043515118}}rw11! $3:localhost:41985!0:localhost:41985{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3343}{"sender": "@__ANON__:localhost:41985", "hashes": {"sha256": "ReGXLZuDo7i47oJETuvc4znQ664McMQ8QYLx4Qfb4hk"}, "state_key": "@anon-20191002_181700-651:localhost:8800", "depth": 3, "origin": "localhost:41985", "room_id": "!0:localhost:41985", "type": "m.room.member", "prev_events": [["$2:localhost:41985", {"sha256": "Fze/XJCMknJQHdhaQeu81G+LcUDCuWfaXyoOYsfsJZc"}]], "origin_server_ts": 1570043512676, "content": {"membership": "invite"}, "auth_events": [["$0:localhost:41985", {"sha256": "lEAFPnVILg8JX0SfMWCCJ8NafTag7ii9hiPoPjhxSos"}], ["$2:localhost:41985", {"sha256": "Fze/XJCMknJQHdhaQeu81G+LcUDCuWfaXyoOYsfsJZc"}], ["$1:localhost:41985", {"sha256": "zq/37DelCxOiyYEiLPJuA3DHK6gul7j3yxlpKhBP8j8"}]], "event_id": "$3:localhost:41985", "signatures": {"localhost:41985": {"ed25519:1": "tSCM1EDrhdt0gSWOM50BgQ6EGGVuIOuoLkvZLaysKh3kVobDqMR0UoOdv49uAHK8k3JaUC0kB0YoCYWcMQUiAQ"}, "localhost:8800": {"ed25519:a_OdAo": "EF94vREx/mmplrBJl0b5h+QBXgiRIagauq2bJIwJPWWLSOdK9RV/N27r0Xu0/R8DLyJ6YDaF3Zw2HooEDkyGBQ"}}, "unsigned": {}}rv11! $3:localhost:44405!0:localhost:44405{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3341}{"content": {"membership": "invite"}, "event_id": "$3:localhost:44405", "auth_events": [["$0:localhost:44405", {"sha256": "V+tcmAW6BuuUZDmaZ6xmk6uEjT5cZbP9YwKWAgYVUmg"}], ["$2:localhost:44405", {"sha256": "3xXBmmcJVqOFnOVxrztoi6kf2nE3YQXQ64t3Au9SdD8"}], ["$1:localhost:44405", {"sha256": "NrnTVw3yJRdgRxdr2PBWqK1yxQGGrCZmZ4I+xZDRGz4"}]], "prev_events": [["$2:localhost:44405", {"sha256": "3xXBmmcJVqOFnOVxrztoi6kf2nE3YQXQ64t3Au9SdD8"}]], "origin_server_ts": 1570043511222, "origin": "localhost:44405", "state_key": "@anon-20191002_181700-650:localhost:8800", "depth": 3, "type": "m.room.member", "room_id": "!0:localhost:44405", "sender": "@__ANON__:localhost:44405", "hashes": {"sha256": "ZZO504ZuJ/FqVMAkbuqG0+nOMaPvR/QaE3GNXre5bHA"}, "signatures": {"localhost:44405": {"ed25519:1": "i6/uXVpfi+a20KyLVdNl4kWmKMk4lxc5p9+CRa665JtNxn26GWfVngiMby+Kmj5+MYWZ6+oxs39GLanA22BhBQ"}, "localhost:8800": {"ed25519:a_OdAo": "lYYPoZNwgnjqJ1eqSvtSAwtP+LBssbc2crwQb8ezb4c7skVuWHt9Bi//J3j60cleMAa7nlVmP6x1rPoHSvxpCg"}}, "unsigned": {}}  4 h 6jfd]c@anon-20191002_181700-675:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY1Q0ZueXl2aUM1WGVzLTcKMDAyZnNpZ25hdHVyZSCgGSKn6qoha4gSrVZ021fQ80uHRsn9NLcjTk7zXeemyQo127.0.0.1sd]c@anon-20191002_181700-677:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5kQ1ZKeSpnWjBOMXpDZzAKMDAyZnNpZ25hdHVyZSDvrFbGbzHhL7WMUz9qiwsWyy9v9OiCjnvlvf0J4k3tgwo127.0.0.1ud]c@anon-20191002_181700-676:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGF5cU5tQToyYzlyO0k4RHMKMDAyZnNpZ25hdHVyZSADq7MqzKyy_m0CqQDCpNud6twUGnEKIU03PurEBK1pqwo127.0.0.1td]c@anon-20191002_181700-674:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1NJmhzN1l5XmZ0aU07dDsKMDAyZnNpZ25hdHVyZSChh8ZI8Dry9A0VsLQ1li6T55q24bgp94HCldjEXAg0eQo127.0.0.1rd]c@anon-20191002_181700-673:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVTb2NBckU2Y3EsRSYxbE0KMDAyZnNpZ25hdHVyZSDPyX4pc-qbZ0xsQo-VcnrAwqx2vuZrB9EqeMLtqWnBKgo127.0.0.1qd]c@anon-20191002_181700-672:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEweTZtaFRUSnlxcDo4ZWYKMDAyZnNpZ25hdHVyZSC8lRJbhIaczkjRtXE2g5igrkLzLDhFzWAr_nAHfr3h1Qo127.0.0.1pd]c@anon-20191002_181700-671:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHloRmQ2ZW5NMEQyYUZJbSMKMDAyZnNpZ25hdHVyZSBCXEPnkKQSd2PCJE6yU8lc7Hj-8RhHbpPxgU7-oUklzgo127.0.0.1od]c@anon-20191002_181700-670:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhckxaeWRkNnJzNVcqT2YKMDAyZnNpZ25hdHVyZSC-iNsYtRiREK0FMa_Z9Vtzc6E0hnnSkmmc43mtmI8iUgo127.0.0.1nd]c@anon-20191002_181700-669:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5wo127.0.0.1md]c@anon-20191002_181700-668:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgo127.0.0.1l XA~V.f> v N &  d <  t L $ \ 4  w ^ ,+u o=1i]+cKQCW%3$19:localhost:42455 1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY?1$1:localhost:42455 L1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QB1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpst1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ s'Q$1570043647421dmTZW:localhost:8800 |'Q$1570043646420mPrhj:localhost:8800 {1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ 01e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo ,1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 &1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYZ1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwF1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQT1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kG1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo61e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM41e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM +1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk?1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIG1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk33$15:localhost:42455 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 'Q$1570043648422SglHQ:localhost:8800 }1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE _ _g{QQaq $1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3348}{"auth_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}], ["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}]], "prev_events": [["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}]], "type": "m.room.join_rules", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043517350ncbDd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043517966, "hashes": {"sha256": "vRahLTDodIRfvoitboeKU0fC7lIK9gBvXFHguXnt1hI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cWWSBhde5YqlFJurmHN59hFNQ0GcinFeyXkZgsZaV/tu4O3ua2YtSiPjbDitneW7F8BAFM73g1HhjHvkTzYkBg"}}, "unsigned": {"age_ts": 1570043517966}}+zQQay $1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3347}{"auth_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}]], "prev_events": [["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}]], "type": "m.room.power_levels", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"users": {"@anon-20191002_181700-652:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043517349uVTMj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043517149, "hashes": {"sha256": "LO2RkaAhO46QH6uGKvmoQ5dE7JfIZwsmyvYNrMFtdss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Y5/OEnLn5Zrx1WNfowcn5zAWxpbcPMN8DXMuK45jWH2a6b3jDH+yP7s/Zg0nqJCjWY4SQb1JAYfCWIpmUq/Cw"}}, "unsigned": {"age_ts": 1570043517149}}yQQa) $1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3346}{"auth_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}]], "prev_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}]], "type": "m.room.member", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-652", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-652:localhost:8800", "event_id": "$1570043516348vThZG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043516254, "hashes": {"sha256": "gQWKvyimPBztzKBc0iw7F2SMZuBw8vLwo4birUPckr4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sdzcbnJcejAMkEO5nnOE8I8KUtXbP+mrviKHUJkNl1ZWXYyC1xeng3ClDM9xo6Pv5v6HVNkJ0Acy74hvy1SACQ"}}, "unsigned": {"age_ts": 1570043516254}} XA~V.f> v N &  d <  t L $ \ 4  w ^ ,+u o=1i]+cKQCW%3$19:localhost:42455 1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY?1$1:localhost:42455 L1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QB1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpst1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ q'Q$1570043647421dmTZW:localhost:8800 z'Q$1570043646420mPrhj:localhost:8800 y1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ 01e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo ,1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 &1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYZ1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwF1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQT1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kG1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo61e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM41e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM +1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk?1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIG1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk33$15:localhost:42455 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 ~'Q$1570043648422SglHQ:localhost:8800 {1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE 6f(A Z s & N  g  3Lt'@w92Ks5lJQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043567391GonfI:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043566390qTwyJ:localhost:8800J~QQ !drnXStKXkNQkouqUAg:localhost:8800$1570043565389RsxAr:localhost:8800J}QQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043564388ZmOEV:localhost:8800;|Q3 !LazKtcHZriKzCvvGwV:localhost:8800$53:localhost:42455;{Q3 !LazKtcHZriKzCvvGwV:localhost:8800$52:localhost:42455;zQ3 !LazKtcHZriKzCvvGwV:localhost:8800$52:localhost:42455;yQ3 !LazKtcHZriKzCvvGwV:localhost:8800$50:localhost:42455JxQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043560387Dqcih:localhost:8800JwQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043559386ZLBoz:localhost:8800JvQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043558385Xpkrp:localhost:8800JuQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043558384QrKsp:localhost:8800JtQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043557383IxQaJ:localhost:8800JsQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043556382AgYyj:localhost:8800;rQ3 !lEJUJZxqZPKZetemiR:localhost:8800$49:localhost:42455;qQ3 !lEJUJZxqZPKZetemiR:localhost:8800$46:localhost:42455;pQ3 !lEJUJZxqZPKZetemiR:localhost:8800$46:localhost:42455;oQ3 !lEJUJZxqZPKZetemiR:localhost:8800$44:localhost:42455;nQ3 !lEJUJZxqZPKZetemiR:localhost:8800$44:localhost:42455;mQ3 !lEJUJZxqZPKZetemiR:localhost:8800$43:localhost:42455JlQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043551381AkShG:localhost:8800JkQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043550380LNzMz:localhost:8800JjQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043549379wtMED:localhost:8800JiQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043548378IxCfM:localhost:8800JhQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043547377kWWAW:localhost:8800JgQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043546376YfkfL:localhost:8800JfQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043545375TmtMk:localhost:8800;eQ3 !bLWyXaXdvUhdSAooUz:localhost:8800$40:localhost:42455JdQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043543374kGctZ:localhost:8800JcQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043542373yGTqH:localhost:8800JbQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043541372ZeTYJ:localhost:8800JaQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043540371avDlf:localhost:8800J`QQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043539370xCBJr:localhost:8800J_QQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043538369ozxqx:localhost:8800J^QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536368agmuM:localhost:8800J]QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536367lvGLr:localhost:8800J\QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043535366hhblx:localhost:8800J[QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043534365WVAkx:localhost:8800JZQQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043533364iwqCT:localhost:8800;YQ3 !bjdLCdBwkKaihRIRFG:localhost:8800$39:localhost:42455JXQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043531363QpQmq:localhost:8800JWQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043530362jRUtV:localhost:8800JVQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043529361Oytod:localhost:8800JUQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043528360cetnZ:localhost:8800JTQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527359ScxWW:localhost:8800JSQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527358wChxc:localhost:8800JRQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043525357VEfrE:localhost:8800JQQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043524356NlySy:localhost:8800JPQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043523355SbJjm:localhost:8800JOQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043522354IAAap:localhost:8800JNQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043521353geZrN:localhost:8800;MQ3 !qzurjQHmiriwjaUMhO:localhost:8800$38:localhost:42455JLQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043519352auZGi:localhost:8800JKQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043518351Popej:localhost:8800 G u J  s HmB i<k@ !: e L wT)c8 goD }R' { P % oD oD *Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ |*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? {*Q!vttkrtSyHEJXVMlvLo:localhost:8800 > z*Q!vttkrtSyHEJXVMlvLo:localhost:8800 = y*Q!vttkrtSyHEJXVMlvLo:localhost:8800 < x*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; w*Q!vttkrtSyHEJXVMlvLo:localhost:8800 : v*Q!vttkrtSyHEJXVMlvLo:localhost:8800 9 u*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s +*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vttkrtSyHEJXVMlvLo:localhost:8800 A }*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vRmMcoJDeCupADwqac:localhost:8800  T*Q!vRmMcoJDeCupADwqac:localhost:8800  S*Q!vRmMcoJDeCupADwqac:localhost:8800  R*Q!vRmMcoJDeCupADwqac:localhost:8800  Q*Q!vRmMcoJDeCupADwqac:localhost:8800  P*Q!vRmMcoJDeCupADwqac:localhost:8800  O*Q!vRmMcoJDeCupADwqac:localhost:8800  N*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v *Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vRRNxNyGboLHNhqQvr:localhost:8800Z_*Q!vRRNxNyGboLHNhqQvr:localhost:8800Y^*Q!vRRNxNyGboLHNhqQvr:localhost:8800X]*Q!vRRNxNyGboLHNhqQvr:localhost:8800W\*Q!vRRNxNyGboLHNhqQvr:localhost:8800V[*Q!vRRNxNyGboLHNhqQvr:localhost:8800UZ*Q!vRRNxNyGboLHNhqQvr:localhost:8800TY*Q!vOfeZvbtpuHfoqShFl:localhost:8800 V*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 p *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u *Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!wAyboOFgsOPwkmgMAI:localhost:8800;?*Q!wAyboOFgsOPwkmgMAI:localhost:8800:>*Q!vyCFfUTJKYJSDadFhT:localhost:8800`f*Q!vyCFfUTJKYJSDadFhT:localhost:8800^d*Q!vyCFfUTJKYJSDadFhT:localhost:8800\b*Q!vyCFfUTJKYJSDadFhT:localhost:8800Z`*Q!vyCFfUTJKYJSDadFhT:localhost:8800X^*Q!vyCFfUTJKYJSDadFhT:localhost:8800V\*Q!vyCFfUTJKYJSDadFhT:localhost:8800TZ*Q!vyCFfUTJKYJSDadFhT:localhost:8800RX*Q!vyCFfUTJKYJSDadFhT:localhost:8800QW*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800 *Q!vpuivIQDEhyuhOLWpg:localhost:8800 *Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800  .QQa) $1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3352}{"auth_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}]], "prev_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}]], "type": "m.room.member", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-653", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-653:localhost:8800", "event_id": "$1570043522354IAAap:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043522622, "hashes": {"sha256": "gnj0c2CdVA3jFA3B8S45y2+ZR4sK5SWB5ld5+54ZN5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pq/+31TkvuIMNcUUY1xlE3TyFM5hvA3CbaGMrRydIayi5qIjQ78VoTMKEs9Ki+Lohz4yuq91Fqx1SP03eqNzDQ"}}, "unsigned": {"age_ts": 1570043522622}}~QQaC $1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3351}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-653:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043521353geZrN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043521753, "hashes": {"sha256": "Lx05C70G01fDhaPZIAPyv1m+h2pgy9/tdXHVLgq1nVg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "scLeyBEwAK+zvZgN+k8GykWWRQ6JFwjSYuZ2VILEZLSoc5X2eW0WIwMGH287blaRrHGD02mYJMv8tjYQSOmJDA"}}, "unsigned": {"age_ts": 1570043521753}}R}3Q3 $38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3350}{"sender": "@__ANON__-26:localhost:42455", "hashes": {"sha256": "D/+7jaNOdz2Y9nTTRkfUHGPu194ypu4DTIVICZyog9o"}, "state_key": "@__ANON__-26:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "type": "m.room.member", "prev_events": [["$1570043518351Popej:localhost:8800", {"sha256": "xyT+rfGteu5l2h+Y4R1XeJmJsOsWTXYdchb4ci6z5Sg"}]], "origin_server_ts": 1570043519997, "content": {"membership": "join"}, "auth_events": [["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}], ["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043517350ncbDd:localhost:8800", {"sha256": "tlS9JFFba/7y+kIq8mLF3ca/QsKvPirXW4nvxbITH4U"}]], "event_id": "$38:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "dpqcDl7rhmZFsTq3MR4t3nx4M/BRfeTN/G3Ri+ZYLeM0jKujM/2QzUTtt44QCgqPvBfqLzz73efi7SJ3+zz4AA"}}, "unsigned": {}}x|QQa $1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3349}{"auth_events": [["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}], ["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}]], "prev_events": [["$1570043517350ncbDd:localhost:8800", {"sha256": "tlS9JFFba/7y+kIq8mLF3ca/QsKvPirXW4nvxbITH4U"}]], "type": "m.room.history_visibility", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043518351Popej:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043518767, "hashes": {"sha256": "Iskc/DfVkRPho3W5b2QxLEAzztlwY+Dn19ooi6WV4UY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ALjhjqfHG+q5H6rXJUm/GCxgxsfi4KvTtObQ4c7xeNZCK7LK+vMo4oHvnbSb/OrtDe19GfUhCGGfZGBymdejAg"}}, "unsigned": {"age_ts": 1570043518767}} %5y 2 X ~  7 ]<qHn'MsjnQQQ$1570043540371avDlf:localhost:8800$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800jmQQQ$1570043540371avDlf:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800jlQQQ$1570043539370xCBJr:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800jkQQQ$1570043536368agmuM:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jjQQQ$1570043536368agmuM:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jiQQQ$1570043536368agmuM:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jhQQQ$1570043536367lvGLr:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jgQQQ$1570043536367lvGLr:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jfQQQ$1570043536367lvGLr:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jeQQQ$1570043535366hhblx:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jdQQQ$1570043535366hhblx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jcQQQ$1570043534365WVAkx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800[b3QQ$39:localhost:42455$1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800[a3QQ$39:localhost:42455$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800[`3QQ$39:localhost:42455$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j_QQQ$1570043530362jRUtV:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j^QQQ$1570043530362jRUtV:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j]QQQ$1570043530362jRUtV:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j\QQQ$1570043529361Oytod:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j[QQQ$1570043529361Oytod:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jZQQQ$1570043529361Oytod:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jYQQQ$1570043528360cetnZ:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jXQQQ$1570043528360cetnZ:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jWQQQ$1570043527359ScxWW:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jVQQQ$1570043525357VEfrE:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jUQQQ$1570043525357VEfrE:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jTQQQ$1570043525357VEfrE:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jSQQQ$1570043524356NlySy:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jRQQQ$1570043524356NlySy:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jQQQQ$1570043524356NlySy:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jPQQQ$1570043523355SbJjm:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jOQQQ$1570043523355SbJjm:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jNQQQ$1570043522354IAAap:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800[M3QQ$38:localhost:42455$1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800[L3QQ$38:localhost:42455$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800[K3QQ$38:localhost:42455$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jJQQQ$1570043518351Popej:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800  5a+E M  U -% 5 d  ]eeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800 XeeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800&eeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800b=3P33Q$88:localhost:42455$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800 eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800eeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800 SeeQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800ہeeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800<eeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800܁eeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800 neeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:88004eeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800 w ]$_3QQ$89:localhost:42455$1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800 eeQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800 ؁eeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800=eeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800JeeQ$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800)eeQ$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800P33Q$89:localhost:42455$88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800 n^ k x ) 8 E R  a nP]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800P]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800P]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800P]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800P]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800N[Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800 P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800P]Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800P]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800P]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800P]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800P]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800P]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800P]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800P]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800 (u$f $ f ? ] ?]2V2k"6T)uWQQ' $1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.createWQQ' $1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.created3Q'E$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455cQQ? $1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility[QQ/ $1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules]QQ3 $1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levelsQQ']$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800WQQ' $1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.createF 3Q!$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateYF 3Q!$48:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateTF 3Q!$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateBd 3Q'E$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455] QQ3 $1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levelscQQ? $1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility[QQ/ $1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules]QQ3 $1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levelsQQ']$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800WQQ' $1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.created3Q'E$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455cQQ? $1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility[QQ/ $1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules]QQ3 $1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levelsQQ']$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800W~QQ' $1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.createc}QQ? $1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility[|QQ/ $1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules]{QQ3 $1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levelszQQ']$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800WyQQ' $1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.createdx3Q'E$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455cwQQ? $1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility[vQQ/ $1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules]uQQ3 $1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levelstQQ']$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800WsQQ' $1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.createcrQQ? $1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility[qQQ/ $1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules]pQQ3 $1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levelsoQQ']$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800WnQQ' $1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.create &{Q p  F e " ZyOn+c sN]@Q/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800Y?Q' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800]>Q/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800f=Q'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455Y<Q' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800_;Q3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800H:Q!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateB$44:localhost:42455f9Q'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455u8Q'EQ !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$1570043551381AkShG:localhost:8800_7Q3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800e6Q? Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility$1570043549379wtMED:localhost:8800]5Q/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800_4Q3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043547377kWWAW:localhost:88003Q']Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800$1570043546376YfkfL:localhost:8800Y2Q' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800f1Q'E3 !bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455$40:localhost:42455u0Q'EQ !bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455$1570043543374kGctZ:localhost:8800e/Q? Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility$1570043542373yGTqH:localhost:8800].Q/ Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules$1570043541372ZeTYJ:localhost:8800_-Q3 Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levels$1570043540371avDlf:localhost:8800,Q']Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800$1570043539370xCBJr:localhost:8800Y+Q' Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.create$1570043538369ozxqx:localhost:8800e*Q? Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility$1570043536368agmuM:localhost:8800])Q/ Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules$1570043536367lvGLr:localhost:8800_(Q3 Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levels$1570043535366hhblx:localhost:8800'Q']Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800$1570043534365WVAkx:localhost:8800Y&Q' Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.create$1570043533364iwqCT:localhost:8800f%Q'E3 !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455$39:localhost:42455u$Q'EQ !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455$1570043531363QpQmq:localhost:8800e#Q? Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility$1570043530362jRUtV:localhost:8800]"Q/ Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules$1570043529361Oytod:localhost:8800_!Q3 Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levels$1570043528360cetnZ:localhost:8800 Q']Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800$1570043527359ScxWW:localhost:8800YQ' Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.create$1570043527358wChxc:localhost:8800eQ? Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility$1570043525357VEfrE:localhost:8800]Q/ Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules$1570043524356NlySy:localhost:8800_Q3 Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levels$1570043523355SbJjm:localhost:8800Q']Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800$1570043522354IAAap:localhost:8800 @"^0l> X * txJd6~zPR$l>NX"*r"D b 6 Z .  ~ R & v J 5 \-]@anon-20191002_181700-725:localhost:8800F-]@anon-20191002_181700-710:localhost:88005-]@anon-20191002_181700-708:localhost:88004-]@anon-20191002_181700-706:localhost:88003-]@anon-20191002_181700-704:localhost:88002-]@anon-20191002_181700-702:localhost:88001-]@anon-20191002_181700-701:localhost:88000-]@anon-20191002_181700-700:localhost:8800/-]@anon-20191002_181700-698:localhost:8800.-]@anon-20191002_181700-691:localhost:8800--]@anon-20191002_181700-690:localhost:8800,-]@anon-20191002_181700-685:localhost:8800*-]@anon-20191002_181700-684:localhost:8800(-]@anon-20191002_181700-683:localhost:8800&-]@anon-20191002_181700-682:localhost:8800$-]@anon-20191002_181700-681:localhost:8800"-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800-]@anon-20191002_181700-731:localhost:8800M-]@anon-20191002_181700-730:localhost:8800L-]@anon-20191002_181700-729:localhost:8800K-]@anon-20191002_181700-728:localhost:8800J-]@anon-20191002_181700-727:localhost:8800I-]@anon-20191002_181700-727:localhost:8800H-]@anon-20191002_181700-726:localhost:8800G-]@anon-20191002_181700-723:localhost:8800D-]@anon-20191002_181700-722:localhost:8800C-]@anon-20191002_181700-721:localhost:8800B-]@anon-20191002_181700-720:localhost:8800A-]@anon-20191002_181700-719:localhost:8800@-]@anon-20191002_181700-719:localhost:8800?-]@anon-20191002_181700-718:localhost:8800>-]@anon-20191002_181700-717:localhost:8800=-]@anon-20191002_181700-716:localhost:8800<-]@anon-20191002_181700-715:localhost:8800;-]@anon-20191002_181700-714:localhost:8800:-]@anon-20191002_181700-713:localhost:88009-]@anon-20191002_181700-712:localhost:88008-]@anon-20191002_181700-711:localhost:88007-]@anon-20191002_181700-711:localhost:88006j-]@anon-20191002_181700-680:localhost:8800 +[@anon-20191002_181700-67:localhost:8800%-]@anon-20191002_181700-679:localhost:8800-]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-677:localhost:8800-]@anon-20191002_181700-676:localhost:8800-]@anon-20191002_181700-675:localhost:8800-]@anon-20191002_181700-674:localhost:8800-]@anon-20191002_181700-673:localhost:8800-]@anon-20191002_181700-672:localhost:8800-]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800 +[@anon-20191002_181700-66:localhost:8829&-]@anon-20191002_181700-669:localhost:8800 -]@anon-20191002_181700-668:localhost:8800 +[@anon-20191002_181700-72:localhost:8829)+[@anon-20191002_181700-71:localhost:8800*+[@anon-20191002_181700-70:localhost:8800(+[@anon-20191002_181700-68:localhost:8800'-]@anon-20191002_181700-724:localhost:8800E  fxQQa $1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3355}{"auth_events": [["$1570043523355SbJjm:localhost:8800", {"sha256": "TsdmCTpWWblYxoAR/6F1uI0jajoqenjo+I3Pl5wo5YM"}], ["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}], ["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}]], "prev_events": [["$1570043524356NlySy:localhost:8800", {"sha256": "G5XZFloIipqTZzdB+8+QwCZjodYcAbdntcP2d0N1rHU"}]], "type": "m.room.history_visibility", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043525357VEfrE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043525569, "hashes": {"sha256": "vGdoLB9RYQnU1Ji9wiQGe3ttp5BKOQboDlEKdDwvTQo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mFlAVAWVMNDmfEMdQe1jAgbrItbs6Gj0WqdLblZWrowfVyEGpI+CqB4BicMqQ8Fwf1Zda7q/j4aTI7+r2wIrCQ"}}, "unsigned": {"age_ts": 1570043525569}}gQQaq $1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3354}{"auth_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}], ["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}], ["$1570043523355SbJjm:localhost:8800", {"sha256": "TsdmCTpWWblYxoAR/6F1uI0jajoqenjo+I3Pl5wo5YM"}]], "prev_events": [["$1570043523355SbJjm:localhost:8800", {"sha256": "TsdmCTpWWblYxoAR/6F1uI0jajoqenjo+I3Pl5wo5YM"}]], "type": "m.room.join_rules", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043524356NlySy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043524666, "hashes": {"sha256": "WnOe8nHCUkmXrvhynh1ajqdG39BtBYi53OH5h6a863I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VLpNB+5tDVFZts9oBTDzydT85J+F/yir6eA68ZwJYQKnx9EY3Va0bF7/M0ia5LTHtUcOpIWOGooEAC9P2vk7CQ"}}, "unsigned": {"age_ts": 1570043524666}}+QQay $1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3353}{"auth_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}], ["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}]], "prev_events": [["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}]], "type": "m.room.power_levels", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"users": {"@anon-20191002_181700-653:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043523355SbJjm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043523608, "hashes": {"sha256": "NE+elWwVjIFcMRJgqpDSiJn4yId78SYEhg0RsmfGWJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zKqjlHcPweyu0+cB/nbunMvuaM6yMAuUAl7fkXJ0UGMROZcC3dMsjlFwzJBSN3Gz53iCbXB4OZfr8eSxRfAaCg"}}, "unsigned": {"age_ts": 1570043523608}}  +QQay $1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3358}{"auth_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}]], "prev_events": [["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}]], "type": "m.room.power_levels", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"users": {"@anon-20191002_181700-654:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043528360cetnZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043528899, "hashes": {"sha256": "0Cg6dZ8/lihEoZ5LHQaXO2VWQfFDtXqT1BrGU/UYKhg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D+vPtFlBva20FW0fLTHwGR06bO9iu//MKVeExe0FqhM7oAQE2HFetkqof4G4BXw8bVcb1c23LY4lDW0d5EPwAQ"}}, "unsigned": {"age_ts": 1570043528899}}QQa) $1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3357}{"auth_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}]], "prev_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}]], "type": "m.room.member", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-654", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-654:localhost:8800", "event_id": "$1570043527359ScxWW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043527969, "hashes": {"sha256": "fz05IeGguQcSrJOttFI1Dc8ru5NBHz4GAOg4HXl8iU4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DdHdWEP2lqGHvs9W8ud/cJ3dVIUI/F+El/4cVxsOtV3Sk5vPGNey/3V/8Arp/4BMyw7h9a8tAzS4jYbTrDdCDg"}}, "unsigned": {"age_ts": 1570043527969}}QQaC $1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3356}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-654:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043527358wChxc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043527169, "hashes": {"sha256": "ITtzB79WR5CJsFZZBaEKC6158Udlflp2WhNad5ulLyM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SRuf2zlSkZ9gWNNScN8R9qO/SGli9H4S81lq1LVUc7q1oWySERs2aa7zAiS26X9RC3UumtDD9WiWNdXaFWg/Aw"}}, "unsigned": {"age_ts": 1570043527169}}  \bD f  ; ]  2@|+\"unenQQQ$1570043712439XdJFc:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 l_QQ3$1570043670433bjAzo:localhost:8800$1570043668432TfiHj:localhost:8800!11:localhost:42455 OPQ33$1570043683436iTOlZ:localhost:8800$80:localhost:42455!13:localhost:42455 [PQ33$1570043680434abJWo:localhost:8800$76:localhost:42455!12:localhost:42455 WQnQQQ$1570043712440rfNzQ:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 m$_Q3Q$1570043715443SSqOY:localhost:8800$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800 pYnQQQ$1570043728447IkYro:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 }+nQQQ$1570043583407USfCf:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800 nQQQ$1570043583406mAAxW:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043582405uFoRY:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800 nQQQ$1570043581404AarAd:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 PQ33$1570043668432TfiHj:localhost:8800$73:localhost:42455!11:localhost:42455 NPQ33$1570043664431IMLSL:localhost:8800$70:localhost:42455!10:localhost:42455 KOQ31$1570043660430kLPpN:localhost:8800$67:localhost:42455!9:localhost:42455 HnQQQ$1570043656428rZaqi:localhost:8800$1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 AnQQQ$1570043655427tEtWD:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 @nQQQ$1570043654426seixP:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 ?nQQQ$1570043653425AhyPB:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 >nQQQ$1570043648422SglHQ:localhost:8800$1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 :nQQQ$1570043647421dmTZW:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 9nQQQ$1570043646420mPrhj:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 8nQQQ$1570043646419zIOAX:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 7nQQQ$1570043593416CouYv:localhost:8800$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043592415heiAH:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043591414NuXxd:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043590413Khvee:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043588411PDBWG:localhost:8800$1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043585409JoQZw:localhost:8800$1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800 nQQQ$1570043584408XdGfO:localhost:8800$1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043727446CGYaE:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 |nQQQ$1570043713441WJPkP:localhost:8800$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 nnQQQ$1570043711438bqOHL:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 k 'oyU K  F ups*:8` -o["QQ/ $1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules]!QQ3 $1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels] QQ3 $1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.power_levelsQQ']$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800joinQQ']$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.member@anon-20191002_181700-659:localhost:8800joinWQQ' $1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.createh3Q'E$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455joinF3Q!$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800test_stateYz ]QQ3 $1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levelscQQ? $1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility[QQ/ $1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rulesWQQ' $1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.createQQ']$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800joinh3Q'E$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455joinF 3Q!$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateYF 3Q!$48:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateTF 3Q!$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateB ] QQ3 $1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levelscQQ? $1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility[QQ/ $1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rulesWQQ' $1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.createQQ']$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800joinWQQ' $1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.createh3Q'E$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455joincQQ? $1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility[QQ/ $1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules]QQ3 $1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levels~QQ']$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800joinW}QQ' $1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.createc|QQ? $1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility[{QQ/ $1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules]zQQ3 $1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levelsyQQ']$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800joinWxQQ' $1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.createhw3Q'E$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455joincvQQ? $1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility[uQQ/ $1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules]tQQ3 $1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levelssQQ']$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800join  R3Q3 $39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3361}{"origin": "localhost:42455", "state_key": "@__ANON__-28:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@__ANON__-28:localhost:42455", "hashes": {"sha256": "g6tWD0TN6hSvPWWdns69y/5D4DsWBtzYwkFtsTtFf/8"}, "content": {"membership": "join"}, "event_id": "$39:localhost:42455", "auth_events": [["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}], ["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043529361Oytod:localhost:8800", {"sha256": "AZfe7tyH/pz9+Z8vq3pfc1/kG28hy5U7lI/PpaQMIzw"}]], "prev_events": [["$1570043530362jRUtV:localhost:8800", {"sha256": "jwGbe1dTIdgf34RvWfYLNDY1k4WEz6oGHTiMRilQGCI"}]], "origin_server_ts": 1570043531615, "signatures": {"localhost:42455": {"ed25519:1": "zutTlGIIm24Uobtd25pc0KKwicK0RPK+LvKKKnR0Fm6fYgd2jDYc/8VK0lLH9jTuxJFmVX57Ra9jFixDMHvQDw"}}, "unsigned": {}}xQQa $1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3360}{"auth_events": [["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}], ["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}]], "prev_events": [["$1570043529361Oytod:localhost:8800", {"sha256": "AZfe7tyH/pz9+Z8vq3pfc1/kG28hy5U7lI/PpaQMIzw"}]], "type": "m.room.history_visibility", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043530362jRUtV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043530308, "hashes": {"sha256": "cxDhbbJIWCibWJrOPbDi8umZEoKJ95HIpVpTSEsjlQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c/lC249d2NIQJ84b3AJ/IkmOkgkP7nFdpf2I0XAqwDzjWHZ8Pjp6pCPv4C+ykoE4A4sVOcYmSWgW1VcVqKl+Cw"}}, "unsigned": {"age_ts": 1570043530308}}gQQaq $1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3359}{"auth_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}], ["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}]], "prev_events": [["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}]], "type": "m.room.join_rules", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043529361Oytod:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043529550, "hashes": {"sha256": "HcpBi3LU22UVXSfORLxjsRN7xkCw8OQ6764PLL8RNFU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oiyd3R/0Xy6Nv7cnwmllUZO9qChubfO3lMtpx8e/rbxXaSBUGYFJDhOeOnCaEp6d2BPUgeIo4JuiswqDoPneCQ"}}, "unsigned": {"age_ts": 1570043529550}}  EI  r @  x F ~MU#[ )zI0hO=uC{Ij8p> v D D D22 l21e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kO1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf411e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro3n20e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ^ :21e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE3$79:localhost:42455 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMt3$70:localhost:42455 |1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I41e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q%1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETss1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA81e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk 1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n01e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYN0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A~1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3My1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY,1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU 1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 F1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY>1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA (1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMb1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk 1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEQ1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMss1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4K1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU 1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM31e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g 5u(A Z s 5 N  g ) o ";r4Mf2Z s&?JkQQ W!taANXnGBZntAreRurn:localhost:8800$1570043585409JoQZw:localhost:8800JjQQ V!tcYctHPiaKzsKgrXlU:localhost:8800$1570043584408XdGfO:localhost:8800JiQQ U!taANXnGBZntAreRurn:localhost:8800$1570043583407USfCf:localhost:8800JhQQ T!tcYctHPiaKzsKgrXlU:localhost:8800$1570043583406mAAxW:localhost:8800JgQQ S!taANXnGBZntAreRurn:localhost:8800$1570043582405uFoRY:localhost:8800JfQQ R!tcYctHPiaKzsKgrXlU:localhost:8800$1570043581404AarAd:localhost:8800JeQQ Q!taANXnGBZntAreRurn:localhost:8800$1570043580403vYYeb:localhost:8800JdQQ P!tcYctHPiaKzsKgrXlU:localhost:8800$1570043579402KDYtE:localhost:8800JcQQ O!taANXnGBZntAreRurn:localhost:8800$1570043578401arzBQ:localhost:8800JbQQ N!tcYctHPiaKzsKgrXlU:localhost:8800$1570043578400zncwP:localhost:8800JaQQ M!zScKnCZCFPIIodAiQj:localhost:8800$1570043575399SiSKs:localhost:8800;`Q3 L!drnXStKXkNQkouqUAg:localhost:8800$54:localhost:42455J_QQ K!drnXStKXkNQkouqUAg:localhost:8800$1570043572397AAGBm:localhost:8800J^QQ J!zScKnCZCFPIIodAiQj:localhost:8800$1570043572396lZXIU:localhost:8800J]QQ I!drnXStKXkNQkouqUAg:localhost:8800$1570043571395bDLFD:localhost:8800J\QQ H!zScKnCZCFPIIodAiQj:localhost:8800$1570043570394QELCg:localhost:8800J[QQ G!drnXStKXkNQkouqUAg:localhost:8800$1570043569393UscIm:localhost:8800JZQQ F!zScKnCZCFPIIodAiQj:localhost:8800$1570043568392ItLhq:localhost:8800JYQQ E!drnXStKXkNQkouqUAg:localhost:8800$1570043567391GonfI:localhost:8800JXQQ D!zScKnCZCFPIIodAiQj:localhost:8800$1570043566390qTwyJ:localhost:8800JWQQ C!drnXStKXkNQkouqUAg:localhost:8800$1570043565389RsxAr:localhost:8800JVQQ B!zScKnCZCFPIIodAiQj:localhost:8800$1570043564388ZmOEV:localhost:8800;UQ3 A!LazKtcHZriKzCvvGwV:localhost:8800$53:localhost:42455;TQ3 @!LazKtcHZriKzCvvGwV:localhost:8800$52:localhost:42455;SQ3 >!LazKtcHZriKzCvvGwV:localhost:8800$50:localhost:42455JRQQ =!LazKtcHZriKzCvvGwV:localhost:8800$1570043559386ZLBoz:localhost:8800JQQQ QQ '!bLWyXaXdvUhdSAooUz:localhost:8800$1570043538369ozxqx:localhost:8800J=QQ &!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536368agmuM:localhost:8800J<QQ %!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536367lvGLr:localhost:8800J;QQ $!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043535366hhblx:localhost:8800J:QQ #!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043534365WVAkx:localhost:8800J9QQ "!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043533364iwqCT:localhost:8800;8Q3 !!bjdLCdBwkKaihRIRFG:localhost:8800$39:localhost:42455J7QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043530362jRUtV:localhost:8800 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8                                                                                 ~  ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i ~ h } g | f { e z d y c x b w b v a u a t _ s ^ r ] q \ p [ o Z n Y m X l W k V j U i T h S g R f Q e P d O c N b M a L ` K _ J ^ I ] H \ G [ F Z E Y D X C W B V A U @ T > S = R < Q ; P : O 9 N 8 M 7 L 4 K 3 J 2 I 1 H 0 G / F . E - D , C + B * A ) @ ( ? ' > & = % < $ ; # : " 9 ! 8 7  6  5  4  3  2  1  0  /  .  -  ,  +  *  )  (  '  &  %  $  #  "  !                                                                                                                 `U{]?!mO1}_A% k M /  2oQ3aC%  qS5 cE' sUjL .z \>  S 8  t X <  y ] A 1   x d P < (  1<=anon-20191002_181700-721=anon-20191002_181700-720=anon-20191002_181700-718=anon-20191002_181700-719=anon-20191002_181700-717=anon-20191002_181700-716=anon-20191002_181700-715=anon-20191002_181700-714=anon-20191002_181700-713=anon-20191002_181700-712=anon-20191002_181700-711=anon-20191002_181700-710=anon-20191002_181700-709=anon-20191002_181700-708=anon-20191002_181700-707=anon-20191002_181700-706=anon-20191002_181700-705=anon-20191002_181700-704=anon-20191002_181700-703=anon-20191002_181700-702=anon-20191002_181700-701=anon-20191002_181700-700=anon-20191002_181700-697=anon-20191002_181700-698=anon-20191002_181700-696=anon-20191002_181700-695=anon-20191002_181700-693=anon-20191002_181700-692=anon-20191002_181700-691=anon-20191002_181700-690=anon-20191002_181700-689=anon-20191002_181700-688=anon-20191002_181700-687=anon-20191002_181700-686=anon-20191002_181700-685=anon-20191002_181700-684=anon-20191002_181700-683=anon-20191002_181700-682=anon-20191002_181700-681=anon-20191002_181700-680=anon-20191002_181700-670;anon-20191002_181700-67W=anon-20191002_181700-669=anon-20191002_181700-668=anon-20191002_181700-667=anon-20191002_181700-666=anon-20191002_181700-665=anon-20191002_181700-664=anon-20191002_181700-663=anon-20191002_181700-662=anon-20191002_181700-661=anon-20191002_181700-660=anon-20191002_181700-659=anon-20191002_181700-658=anon-20191002_181700-657=anon-20191002_181700-656=anon-20191002_181700-655=anon-20191002_181700-654=anon-20191002_181700-653=anon-20191002_181700-652=anon-20191002_181700-651=anon-20191002_181700-650=anon-20191002_181700-723=anon-20191002_181700-722 N=anon-20191002_181700-679=anon-20191002_181700-678=anon-20191002_181700-677=anon-20191002_181700-676=anon-20191002_181700-675=anon-20191002_181700-674=anon-20191002_181700-673=anon-20191002_181700-672=anon-20191002_181700-671;anon-20191002_181700-74\;anon-20191002_181700-73[;anon-20191002_181700-71Z;anon-20191002_181700-70Y9anon-20191002_181700-7;anon-20191002_181700-68X=anon-20191002_181700-745=anon-20191002_181700-744=anon-20191002_181700-743=anon-20191002_181700-742=anon-20191002_181700-736=anon-20191002_181700-735=anon-20191002_181700-734=anon-20191002_181700-733=anon-20191002_181700-732=anon-20191002_181700-731=anon-20191002_181700-730=anon-20191002_181700-729=anon-20191002_181700-728=anon-20191002_181700-726=anon-20191002_181700-727=anon-20191002_181700-725=anon-20191002_181700-724 BJsHqFqHX-V+  T ) } R ' { P % y N # w L !u(Q!aWJOsiuJONOvjKWEjO:localhost:8800ih(Q!aWJOsiuJONOvjKWEjO:localhost:8800hg(Q!aWJOsiuJONOvjKWEjO:localhost:8800gf(Q!aWJOsiuJONOvjKWEjO:localhost:8800fe*Q!aVxOoyiLLnxmzgLJat:localhost:8800>D*Q!aVxOoyiLLnxmzgLJat:localhost:8800=C*Q!aVxOoyiLLnxmzgLJat:localhost:88006<*Q!aVxOoyiLLnxmzgLJat:localhost:88005;*Q!aVxOoyiLLnxmzgLJat:localhost:88004:*Q!aVxOoyiLLnxmzgLJat:localhost:880039*Q!aVxOoyiLLnxmzgLJat:localhost:880028*Q!aVxOoyiLLnxmzgLJat:localhost:880017*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 v *Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aZwMKYDXJRlSKjQNWM:localhost:88006W*Q!aZwMKYDXJRlSKjQNWM:localhost:88005V*Q!aZwMKYDXJRlSKjQNWM:localhost:88005U*Q!aZwMKYDXJRlSKjQNWM:localhost:88005T*Q!aZwMKYDXJRlSKjQNWM:localhost:88004S*Q!aZwMKYDXJRlSKjQNWM:localhost:88004R*Q!aZwMKYDXJRlSKjQNWM:localhost:88004Q*Q!aZwMKYDXJRlSKjQNWM:localhost:88003P*Q!aZwMKYDXJRlSKjQNWM:localhost:88003O*Q!aZwMKYDXJRlSKjQNWM:localhost:88003N*Q!aZwMKYDXJRlSKjQNWM:localhost:88002M*Q!aZwMKYDXJRlSKjQNWM:localhost:88002L*Q!aZwMKYDXJRlSKjQNWM:localhost:88001K*Q!aZwMKYDXJRlSKjQNWM:localhost:88001J*Q!aZwMKYDXJRlSKjQNWM:localhost:88001I*Q!aZwMKYDXJRlSKjQNWM:localhost:88000H*Q!aZwMKYDXJRlSKjQNWM:localhost:88000G*Q!aZwMKYDXJRlSKjQNWM:localhost:88000F*Q!aZwMKYDXJRlSKjQNWM:localhost:8800.E*Q!aZwMKYDXJRlSKjQNWM:localhost:8800-D*Q!aZwMKYDXJRlSKjQNWM:localhost:8800,C*Q!aZwMKYDXJRlSKjQNWM:localhost:8800+B*Q!aZwMKYDXJRlSKjQNWM:localhost:8800*A*Q!aZwMKYDXJRlSKjQNWM:localhost:8800)@*Q!aZwMKYDXJRlSKjQNWM:localhost:8800(?*Q!aZwMKYDXJRlSKjQNWM:localhost:8800'>*Q!aZwMKYDXJRlSKjQNWM:localhost:8800&=*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800(Q!aWJOsiuJONOvjKWEjO:localhost:8800kj(Q!aWJOsiuJONOvjKWEjO:localhost:8800ji  + QQay $1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3364}{"auth_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}], ["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}]], "prev_events": [["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}]], "type": "m.room.power_levels", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"users": {"@anon-20191002_181700-655:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043535366hhblx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043535342, "hashes": {"sha256": "ZyFisN42L5ZQjcwb4GBxf/w9dTJ9MMvh5TVMh2cW7wQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/yFtQyfSo9jf9huk9iFohfddcfQFVDIVJsEbWNK4jrF1wt32ZiKjnHCdE0hBj9UNnodXJn2eo9GmcfO+j0cqDA"}}, "unsigned": {"age_ts": 1570043535342}} QQa) $1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3363}{"auth_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}]], "prev_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}]], "type": "m.room.member", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-655", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-655:localhost:8800", "event_id": "$1570043534365WVAkx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043534358, "hashes": {"sha256": "YNFGUscUGOTGHj8XARjbRLBM9wV9g12GCQJUE9WDWBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+HX9AHSsuj6h0BpsDthaeP9+KYFN3BvnAHvkDB5VAoxa4NZvJ9uiz7U1ktnPfvTqY5SQ8x0ySlRKWAKGFmAoCg"}}, "unsigned": {"age_ts": 1570043534358}} QQaC $1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3362}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-655:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043533364iwqCT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043533334, "hashes": {"sha256": "GKIPXRVp0ZpoPYL2RcwKbaNlcPT6RHjbNn975teP1bU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TzENs4njHtG8uDFy/mbEmFpztqrHlVVzhFVSyguQMSwjGV6nJiYz3/eVBNfBZL8/4leqQ5IhsgoIjofAdRq1AA"}}, "unsigned": {"age_ts": 1570043533334}} (t$H l 1 U y  k {+Atuv,PtkuQQQ$1570043572396lZXIU:localhost:8800$1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800ktQQQ$1570043571395bDLFD:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800ksQQQ$1570043570394QELCg:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800krQQQ$1570043569393UscIm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800kqQQQ$1570043568392ItLhq:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800kpQQQ$1570043567391GonfI:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800koQQQ$1570043566390qTwyJ:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800Mn33Q$53:localhost:42455$52:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800Mm33Q$53:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800\l3QQ$53:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800Mk33Q$52:localhost:42455$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800Mj33Q$52:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800\i3QQ$52:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800\h3QQ$50:localhost:42455$1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800kgQQQ$1570043559386ZLBoz:localhost:8800$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800kfQQQ$1570043558385Xpkrp:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800keQQQ$1570043558384QrKsp:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800kdQQQ$1570043557383IxQaJ:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800Mc33Q$49:localhost:42455$46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800Mb33Q$49:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800Ma33Q$46:localhost:42455$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M`33Q$46:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M_33Q$45:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M^33Q$48:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M]33Q$44:localhost:42455$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800\\3QQ$44:localhost:42455$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800\[3QQ$43:localhost:42455$1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kZQQQ$1570043550380LNzMz:localhost:8800$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kYQQQ$1570043549379wtMED:localhost:8800$1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kXQQQ$1570043548378IxCfM:localhost:8800$1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kWQQQ$1570043547377kWWAW:localhost:8800$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kVQQQ$1570043546376YfkfL:localhost:8800$1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800\U3QQ$40:localhost:42455$1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kTQQQ$1570043542373yGTqH:localhost:8800$1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kSQQQ$1570043541372ZeTYJ:localhost:8800$1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kRQQQ$1570043540371avDlf:localhost:8800$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kQQQQ$1570043539370xCBJr:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kPQQQ$1570043536368agmuM:localhost:8800$1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800kOQQQ$1570043536367lvGLr:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800kNQQQ$1570043535366hhblx:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800  QQaC $1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800{"token_id": 636, "stream_ordering": 3367}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bLWyXaXdvUhdSAooUz:localhost:8800", "sender": "@anon-20191002_181700-656:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-656:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043538369ozxqx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043538696, "hashes": {"sha256": "qlaEiQcyvREDcFpgq3+uGhQqYi+zKVtgShEfY7T5G5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TzmKipVYBtCYrwR4PMfzgOTqr3Qvk/Kuv5WT0WbFHykJUplZ7K6s/ui+TKqCh2gInhuL4+vyNNLg9a/7BJn9Cg"}}, "unsigned": {"age_ts": 1570043538696}}x QQa $1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3366}{"auth_events": [["$1570043535366hhblx:localhost:8800", {"sha256": "kFPObOFfrHe7hZa02uaoGK7oQ9RwI1XnGSRTQIkdDoM"}], ["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}], ["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}]], "prev_events": [["$1570043536367lvGLr:localhost:8800", {"sha256": "hZSQPfe3bvdoO/nJbw0CzSijrrwixVSXnRu1/DwoL8o"}]], "type": "m.room.history_visibility", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043536368agmuM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043536872, "hashes": {"sha256": "/QVOXFfO3JGBC9JausKr48CdDwVAYsYy08SyXQhM+Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KaTZBjzu0b+z2QMt3LgIKAj2Svn+F4MpKiByO3fw7fxrPT7ZypYr31pGrn6AvcOvb0KsmO/vCg4EubI0MzXWAA"}}, "unsigned": {"age_ts": 1570043536872}}g QQaq $1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3365}{"auth_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}], ["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}], ["$1570043535366hhblx:localhost:8800", {"sha256": "kFPObOFfrHe7hZa02uaoGK7oQ9RwI1XnGSRTQIkdDoM"}]], "prev_events": [["$1570043535366hhblx:localhost:8800", {"sha256": "kFPObOFfrHe7hZa02uaoGK7oQ9RwI1XnGSRTQIkdDoM"}]], "type": "m.room.join_rules", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043536367lvGLr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043536150, "hashes": {"sha256": "wUV1KvkCgAfx5dneLJIrN0905arTnDHT9u/sGIyVziU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1PQ9b8nYeFNY4lJZsan3fsVAbt/5yHJYDoD3hVmChwKspJFrd/FZyFoItazu7OZIo7A6z6E8vNcqJVvfujhDg"}}, "unsigned": {"age_ts": 1570043536150}} 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8                                                                      |  {  z  y  x  w  u  t  s  r  q  p  n  m  l  k  j  i  h  g  f  e  d  c  _  ^  ]  \  [  Z  X  W  V  U  T  S  R  Q  P  O  N  L  K  J  I  H  G  F  E  D  C  B  A  A  A  A  @  >  =  <  ;  :  9  8  8  8  8  7  7  4  3  2  1  0  /  .  -  ,  +  *  )  (  ' ~ & } % | $ { # z " y ! x w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  e  d  c  b  a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                   ~  }  |  {  z  y  x  w  v  u  t  s E>^6nF~V.f>`8pH Y 2 n F  ~ V .  f >  v N &'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800$'Q!aZwMKYDXJRlSKjQNWM:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800"'Q!aZwMKYDXJRlSKjQNWM:localhost:8800!'Q!aZwMKYDXJRlSKjQNWM:localhost:8800 'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800j&Q!aWJOsiuJONOvjKWEjO:localhost:8800i&Q!aWJOsiuJONOvjKWEjO:localhost:8800h&Q!aWJOsiuJONOvjKWEjO:localhost:8800g&Q!aWJOsiuJONOvjKWEjO:localhost:8800f&Q!aWJOsiuJONOvjKWEjO:localhost:8800e'Q!aVxOoyiLLnxmzgLJat:localhost:8800='Q!aVxOoyiLLnxmzgLJat:localhost:8800<'Q!aVxOoyiLLnxmzgLJat:localhost:88005'Q!aVxOoyiLLnxmzgLJat:localhost:88004'Q!aVxOoyiLLnxmzgLJat:localhost:88003'Q!aVxOoyiLLnxmzgLJat:localhost:88002'Q!aVxOoyiLLnxmzgLJat:localhost:88001'Q!aVxOoyiLLnxmzgLJat:localhost:88000'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 d'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 c'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 b'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 a'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 `'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800 Z( D . V!#Q |@3)Q E$52:localhost:42455m.room.message!LazKtcHZriKzCvvGwV:localhost:8800mm@@__ANON__-32:localhost:42455x?3!Q E$51:localhost:42455test_state!LazKtcHZriKzCvvGwV:localhost:8800mm㇧@__ANON__-32:localhost:42455{>3'Q E$50:localhost:42455m.room.member!LazKtcHZriKzCvvGwV:localhost:8800mJmー@__ANON__-32:localhost:42455"=Q?Q ]$1570043559386ZLBoz:localhost:8800m.room.history_visibility!LazKtcHZriKzCvvGwV:localhost:8800m~m&@anon-20191002_181700-658:localhost:8800<Q/Q ]$1570043558385Xpkrp:localhost:8800m.room.join_rules!LazKtcHZriKzCvvGwV:localhost:8800m|(m|@anon-20191002_181700-658:localhost:8800;Q3Q ]$1570043558384QrKsp:localhost:8800m.room.power_levels!LazKtcHZriKzCvvGwV:localhost:8800myImy@anon-20191002_181700-658:localhost:8800:Q'Q ]$1570043557383IxQaJ:localhost:8800m.room.member!LazKtcHZriKzCvvGwV:localhost:8800mv8mv@anon-20191002_181700-658:localhost:88009 Q'Q  ]$1570043556382AgYyj:localhost:8800m.room.create!LazKtcHZriKzCvvGwV:localhost:8800ms%ms@anon-20191002_181700-658:localhost:8800|83)Q E $49:localhost:42455m.room.message!lEJUJZxqZPKZetemiR:localhost:8800 mg]mm7@__ANON__-31:localhost:42455|73)Q E $46:localhost:42455m.room.message!lEJUJZxqZPKZetemiR:localhost:8800 mg[mj@__ANON__-31:localhost:42455x63!Q E $45:localhost:42455test_state!lEJUJZxqZPKZetemiR:localhost:8800 mg[mh5@__ANON__-31:localhost:42455x53!Q E $48:localhost:42455test_state!lEJUJZxqZPKZetemiR:localhost:8800 mg\mh5@__ANON__-31:localhost:42455x43!Q E$44:localhost:42455test_state!lEJUJZxqZPKZetemiR:localhost:8800mamd@__ANON__-31:localhost:42455{33'Q E$43:localhost:42455m.room.member!lEJUJZxqZPKZetemiR:localhost:8800m_Zm`@__ANON__-31:localhost:424552Q3Q ]$1570043550380LNzMz:localhost:8800m.room.power_levels!lEJUJZxqZPKZetemiR:localhost:8800m[m\_@anon-20191002_181700-657:localhost:8800"1Q?Q ]$1570043549379wtMED:localhost:8800m.room.history_visibility!lEJUJZxqZPKZetemiR:localhost:8800mW_mY@anon-20191002_181700-657:localhost:88000Q/Q ]$1570043548378IxCfM:localhost:8800m.room.join_rules!lEJUJZxqZPKZetemiR:localhost:8800mT mTc@anon-20191002_181700-657:localhost:8800/Q3Q ]$1570043547377kWWAW:localhost:8800m.room.power_levels!lEJUJZxqZPKZetemiR:localhost:8800mPmQ{@anon-20191002_181700-657:localhost:8800.Q'Q ]$1570043546376YfkfL:localhost:8800m.room.member!lEJUJZxqZPKZetemiR:localhost:8800mKmM@anon-20191002_181700-657:localhost:8800- Q'Q  ]$1570043545375TmtMk:localhost:8800m.room.create!lEJUJZxqZPKZetemiR:localhost:8800mHmI@anon-20191002_181700-657:localhost:8800{,3'Q E$40:localhost:42455m.room.member!bLWyXaXdvUhdSAooUz:localhost:8800m@:m@@__ANON__-30:localhost:42455"+Q?Q ]$1570043542373yGTqH:localhost:8800m.room.history_visibility!bLWyXaXdvUhdSAooUz:localhost:8800m;2m<@anon-20191002_181700-656:localhost:8800*Q/Q ]$1570043541372ZeTYJ:localhost:8800m.room.join_rules!bLWyXaXdvUhdSAooUz:localhost:8800m7Um7@anon-20191002_181700-656:localhost:8800)Q3Q ]$1570043540371avDlf:localhost:8800m.room.power_levels!bLWyXaXdvUhdSAooUz:localhost:8800m3nm5K@anon-20191002_181700-656:localhost:8800(Q'Q ]$1570043539370xCBJr:localhost:8800m.room.member!bLWyXaXdvUhdSAooUz:localhost:8800m0Fm0@anon-20191002_181700-656:localhost:8800' Q'Q  ]$1570043538369ozxqx:localhost:8800m.room.create!bLWyXaXdvUhdSAooUz:localhost:8800m-m-k@anon-20191002_181700-656:localhost:8800"&Q?Q ]$1570043536368agmuM:localhost:8800m.room.history_visibility!YmRuIWixFpaqEeDQLZ:localhost:8800m%m''@anon-20191002_181700-655:localhost:8800 + R   k  A ` 6cv'  FU !UA=ppL+ ] ,@anon-20191002_181700-811:localhost:8800offlinem뺗m3m뺛L* ] ,@anon-20191002_181700-812:localhost:8800offlinemm3m}L) ] ,@anon-20191002_181700-810:localhost:8800offlinem9m3m<K- ] .@anon-20191002_181700-832:localhost:8800onlinemmm:F, ]-@astest-0-20191002_181700:localhost:8800offlinem8]m8]6NF ] @anon-20191002_181700-691:localhost:8800offlinemmژL ] @anon-20191002_181700-684:localhost:8800offlinemQPm*m07F ]@anon-20191002_181700-698:localhost:8800offlinemm @! ]"@anon-20191002_181700-737:localhost:8829offlinemBmL ] @anon-20191002_181700-681:localhost:8800offlinemʫmSmpF ]@anon-20191002_181700-690:localhost:8800offlinemNmNL ] @anon-20191002_181700-683:localhost:8800offlinem m掄m 3 ML ] !@anon-20191002_181700-685:localhost:8800offlinemyamQmUF ]@anon-20191002_181700-678:localhost:8800offlinembmbF ]@anon-20191002_181700-667:localhost:8800offlinemmF ]@anon-20191002_181700-666:localhost:8800offlinembmbL ]  @anon-20191002_181700-657:localhost:8800offlinemHmtmp1Lw ] @anon-20191002_181700-642:localhost:8800offlinemGmlm&Fv ]@anon-20191002_181700-643:localhost:8800offlinemanmK!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455fQ? Q =!LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility$1570043559386ZLBoz:localhost:8800^Q/ Q  v D  U | J  P  W % # ] +c1?ji7o= uC{IOqjz1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo e1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cp1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY !1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30<1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMY1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A 1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64a1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o r1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM|1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk}1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsB1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wI1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE^1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE]1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE\1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewL1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs'1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAQ1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk"1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wa1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE51e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4i1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4f1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM"1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIF1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc;1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmID1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU x1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA 2  fxQQa $1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3377}{"auth_events": [["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}], ["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "prev_events": [["$1570043548378IxCfM:localhost:8800", {"sha256": "2n0mZuXpgfrfKfH101X4mKjEPbqSdWas2EnPI6EobnY"}]], "type": "m.room.history_visibility", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043549379wtMED:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043549535, "hashes": {"sha256": "aWpQ2TtAiguutYHfn+IlO/T5GfGitDIZ8zYpeMn7q1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RE1a+SYa5T1IW2UqtFZm5d5qJAfIraWuD0zGl2SOEIqyMFiAhQ7OGGD7z0t6p2Whj9Vb70snJuTm6MX5hj2QAA"}}, "unsigned": {"age_ts": 1570043549535}}gQQaq $1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3376}{"auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}], ["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}]], "prev_events": [["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}]], "type": "m.room.join_rules", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043548378IxCfM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043548684, "hashes": {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vCtk1TDRCCueG4VWMIMyUikFH7roMVf6LwbCggwrhDPwC2aOAqfQm6460KcaOabNtZusoL3MDnN1CQ699i7zCw"}}, "unsigned": {"age_ts": 1570043548684}}+QQay $1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3375}{"auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "prev_events": [["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "type": "m.room.power_levels", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"users": {"@anon-20191002_181700-657:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043547377kWWAW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043547884, "hashes": {"sha256": "1XgxfBp72sGP/6Xi5C5SEC3ArLaiAoc6OaRbXawlMLQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wU+hRSMHaqX4/gDWfvN8s1r4k+wuRs9BkLa9AT7MxylqQU+vTE3izOoq3gln4d5PNldNaohF9y6Wh9VEnGo2Bw"}}, "unsigned": {"age_ts": 1570043547884}} 63i~; d  d ) k . y > l /h R{DgE1^Q<Q3 !utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels:Q/ !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rulesBQ? !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibility6Q' !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.create<Q3 !vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels^Q']!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800^Q']!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800:Q/ !vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rulesBQ? !vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibility6Q' !vVmSdclwPIqYDbnmPn:localhost:8800m.room.create~?Q9 !vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_aliasEQ))!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800<Q3 !vRmMcoJDeCupADwqac:localhost:8800m.room.power_levelsd^Q']!vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829g^Q']!vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-539:localhost:8800c:Q/ !vRmMcoJDeCupADwqac:localhost:8800m.room.join_ruleseBQ? !vRmMcoJDeCupADwqac:localhost:8800m.room.history_visibilityf6Q' !vRmMcoJDeCupADwqac:localhost:8800m.room.createb<Q3 !vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels^Q']!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800:Q/ !vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rulesBQ? !vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility6Q' !vRRNxNyGboLHNhqQvr:localhost:8800m.room.create<Q3 !vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels^Q']!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800HQ'1!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800:Q/ !vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rulesBQ? !vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility<Q3 !vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_access6Q' !vOfeZvbtpuHfoqShFl:localhost:8800m.room.create<Q3 !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels]Q'[!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800:Q/ !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rulesBQ? !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility6Q' !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create:Q/ !vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type<Q3 !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels"^Q']!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829'^Q']!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800!:Q/ !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rules$BQ? !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibility%6Q' !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create ?Q9 !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_alias#EQ))!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800&<Q3 !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels^Q']!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800:Q/ !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rulesBQ? !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibility6Q' !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.create;Q3 !uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels;AQ? !uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibility=5Q' !uxKymrHZeXRYCZwekU:localhost:8800m.room.create99Q/ !uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rules<\Q'[!uxKymrHZeXRYCZwekU:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800:  03Qc $44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "stream_ordering": 3380}{"content": {"body": "event_b"}, "event_id": "$44:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "prev_events": [["$1570043549379wtMED:localhost:8800", {"sha256": "aWpQ2TtAiguutYHfn+IlO/T5GfGitDIZ8zYpeMn7q1E"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "origin_server_ts": 1570043552017, "origin": "localhost:42455", "depth": 8, "state_key": "B", "type": "test_state", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}, "signatures": {"localhost:42455": {"ed25519:1": "LWbuVRT3UaapxvF3XgeeLi1P7BMmorPTfr5MBRJ/GHmgCXZELOQCLe2ErBQFz8DYWCgRtwm+i2maB+OOUOglAA"}}, "unsigned": {}}R3Q3 $43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3379}{"event_id": "$43:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "2n0mZuXpgfrfKfH101X4mKjEPbqSdWas2EnPI6EobnY"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "bGpVgBuUZLqKXPG99etotpdFXpeEKKW1m5j3g38p15A"}]], "content": {"membership": "join"}, "origin_server_ts": 1570043551578, "prev_events": [["$1570043550380LNzMz:localhost:8800", {"sha256": "bGpVgBuUZLqKXPG99etotpdFXpeEKKW1m5j3g38p15A"}]], "type": "m.room.member", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-31:localhost:42455", "depth": 7, "hashes": {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}, "sender": "@__ANON__-31:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "nez5JsXpw/klgSVtM2Pacmcfl4AVK/6c6k0YGxUITtgWV4olE+T++7Aj6Xocicl6aiUQ4g3+QebK1BUyXYWdCQ"}}, "unsigned": {}}kQQay $1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3378}{"auth_events": [["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}], ["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "prev_events": [["$1570043549379wtMED:localhost:8800", {"sha256": "I8Il4nXnf7nj9l/1FkqLM1ntxH/NSf+pf+8Cfrlt9fg"}]], "type": "m.room.power_levels", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"users": {"@anon-20191002_181700-657:localhost:8800": 100, "@__ANON__-31:localhost:42455": 100}, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100}, "redact": 50, "ban": 50, "invite": 0, "users_default": 0}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043550380LNzMz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043550719, "hashes": {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8O8BWbptghxvNmhETWbppdZxUHX/PplTB+W1nfSuvIpS9Okx292PCXPZRh4nvH9eterObRj2btD8hh6SbfCZCw"}}, "unsigned": {"age_ts": 1570043550719, "replaces_state": "$1570043547377kWWAW:localhost:8800"}} T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&= < ;  ~: } |9 | {8 { y7 z w6 y x5 w v4 v u3 u t2 t s1 s r0 q p/ p o. o n- n m, m l+ l k* k j) i h( h g' g f& f e% d c$ c b# b a" a `! ` _  _ ^ ^ ] \ [ [ Z Z Y Y X X W W V V T U S S R R Q Q P O N N M M L L K K J I H  H F  G F  F E  E D  D C C B B A @ ? ? > > = = < < ; : 3 9 8 8 7~ 7 6} 6 5| 5 4{ 3 ,z 2 1y 1 0x 0 /w / .v . -u , +t + $s * )r ) (q ( 'p ' &o & %n $ #m # "l " !k ! j i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [  Z Y X W V  U  T  S  R  Q  P  O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                         ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a `  ~_ } {^ | {] { y\ z x[ y wZ x vY w uX v tW u sV t rU q pT p oS n mR l jQ k jP j iO i hN h gM g fL e dK a `J ` _I _ ]H ^ ]G ] \F \ [E [ ZD Z YC X WB W UA V U@ U T? T S> S R= R Q< P O; O M: N F9 M K8 L K7 K J6 J I5 I H4 H G3 F D2 E D1 D C0 C B/ B A. A @- ? >, > =+ = <* < ;) ; 9( : 9' 9 8& 8 7% 7 6$ 6 5# 4 2" 3 2! 2 1  1 0 0 / / . - , , * + * * ) ) ( ( ' ' & % # $ # # " " ! !                                        ~  }  |  {  z  y  x  w  v u t s r q p o n m l k j  _3Qce $46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "stream_ordering": 3383}{"depth": 9, "origin": "localhost:42455", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "YaFkewNiy7Ei3Zu2hwjns2vlk6xdrDKmed9foCMsdks"}, "content": {"body": "event_x"}, "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "event_id": "$46:localhost:42455", "prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}], ["$45:localhost:42455", {"sha256": "2xL4z1deikp5ByriZHdFdSy+KbhyuY59fzUYBkx43oQ"}]], "origin_server_ts": 1570043553627, "signatures": {"localhost:42455": {"ed25519:1": "5g1Tg62/Wt1HUqDr+3V7xUxhLgaAsxcFrqk9RrtmNHUAvag8gezNQwC0CXELrbR0OKel1Agkie60U1Gel5I3DQ"}}, "unsigned": {}}L3QaY $45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": true, "stream_ordering": 3382}{"sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "2xL4z1deikp5ByriZHdFdSy+KbhyuY59fzUYBkx43oQ"}, "origin": "localhost:42455", "depth": 9, "state_key": "Y", "type": "test_state", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}]], "origin_server_ts": 1570043553627, "content": {"body": "event_y"}, "event_id": "$45:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "signatures": {"localhost:42455": {"ed25519:1": "eoy/K33mOxVmfOlLRudD1Hcz2GoLk0kr5CcnGlGL8qEAKnJ4Gq8sUOkl1qRUhXOmBQ3SFf8Qc0eF1oncEHHKCA"}}, "unsigned": {}}M3Qa[ $48:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": true, "stream_ordering": 3381}{"hashes": {"sha256": "xdYpTXzCWL3doMx7xlKjIx+5NLl9x4Rc2eK39WFbL30"}, "sender": "@__ANON__-31:localhost:42455", "type": "test_state", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "origin": "localhost:42455", "depth": 9, "state_key": "T", "origin_server_ts": 1570043553628, "prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}]], "event_id": "$48:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "content": {"topic": "how now"}, "signatures": {"localhost:42455": {"ed25519:1": "oA5MRdkgD5j8ps6szExlIoYavKhaAGM8zBEr5tGQdVvxkrezmBGp6Myz3zTyWAR7eYcOpssJnkpKAJmiY/V1CA"}}, "unsigned": {}} fA, P  F~L v ] D +  | J  j8R ^,X&4l:r@>x Z ( ` .f d1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAl1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y[1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YZ1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI 1e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgi1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA 1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I r1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I q1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I p1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM 1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUd1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUc1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4 1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAn1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAm1e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY 1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc 1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc 1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc 1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsp1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMj1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMi1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMh1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE 3$94:localhost:42455R3$94:localhost:42455Q3$94:localhost:42455P3$90:localhost:42455C3$90:localhost:42455B3$90:localhost:42455A1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp011e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp001e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgj21e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4'1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4)1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4(1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0/1e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI (cM_ g  @ ~ " Y x NmObL'iDchQ']Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.member@anon-20191002_181700-659:localhost:8800$1570043566390qTwyJ:localhost:8800YgQ' Q !drnXStKXkNQkouqUAg:localhost:8800m.room.create$1570043565389RsxAr:localhost:8800YfQ' Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.create$1570043564388ZmOEV:localhost:8800]eQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800fdQ'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455YcQ' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800_bQ3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800]aQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800f`Q'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455Y_Q' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800_^Q3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800H]Q!3 !LazKtcHZriKzCvvGwV:localhost:8800test_stateY$51:localhost:42455f\Q'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455[Q']Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800$1570043557383IxQaJ:localhost:8800eZQ? Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility$1570043559386ZLBoz:localhost:8800]YQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800_XQ3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800YWQ' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800fVQ'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455uUQ'EQ !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$1570043560387Dqcih:localhost:8800eTQ? Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility$1570043559386ZLBoz:localhost:8800]SQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800_RQ3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800QQ']Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800$1570043557383IxQaJ:localhost:8800YPQ' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800]OQ/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800fNQ'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455YMQ' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800_LQ3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800]KQ/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800fJQ'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455YIQ' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800_HQ3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800_GQ3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800HFQ!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateY$45:localhost:42455HEQ!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateT$48:localhost:42455fDQ'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455CQ']Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800$1570043546376YfkfL:localhost:8800HBQ!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateB$44:localhost:42455eAQ? Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility$1570043549379wtMED:localhost:8800 6`8X0pH X 0  h @  x P ( ` 8  p H 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800('Q!nxLxsxzliamzflrEBs:localhost:8800%'Q!nxLxsxzliamzflrEBs:localhost:8800"'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800C'Q!nvclDopiBLEOKBIheH:localhost:8800B'Q!nvclDopiBLEOKBIheH:localhost:8800A'Q!nvclDopiBLEOKBIheH:localhost:8800@'Q!nvclDopiBLEOKBIheH:localhost:8800?'Q!ntuwVdUxfzNIhIKYaz:localhost:88009'Q!ntuwVdUxfzNIhIKYaz:localhost:88008'Q!ntuwVdUxfzNIhIKYaz:localhost:88007'Q!ntuwVdUxfzNIhIKYaz:localhost:88006'Q!ntuwVdUxfzNIhIKYaz:localhost:88005'Q!ntuwVdUxfzNIhIKYaz:localhost:88004'Q!ntuwVdUxfzNIhIKYaz:localhost:88003'Q!ntuwVdUxfzNIhIKYaz:localhost:88002'Q!ntuwVdUxfzNIhIKYaz:localhost:88001'Q!ntuwVdUxfzNIhIKYaz:localhost:88000'Q!ntuwVdUxfzNIhIKYaz:localhost:8800/'Q!ntuwVdUxfzNIhIKYaz:localhost:8800.'Q!ntuwVdUxfzNIhIKYaz:localhost:8800-'Q!ntuwVdUxfzNIhIKYaz:localhost:8800,'Q!ntuwVdUxfzNIhIKYaz:localhost:8800+'Q!ntuwVdUxfzNIhIKYaz:localhost:8800*'Q!ntuwVdUxfzNIhIKYaz:localhost:8800)'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800 N iUN!QQa) $1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3386}{"auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}]], "prev_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}]], "type": "m.room.member", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-658", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-658:localhost:8800", "event_id": "$1570043557383IxQaJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043557432, "hashes": {"sha256": "v4Y5TrNLqu+YmDWzIzOPFrV11eyzi6lp7uCGhbRL45c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "89YGTtc07Al6NHz4ucevRANPhPZBdkY37HyA4h8Di5rGuo9zVvFyE9KHaByc8fMeDF+g7IqJMk5b7zUHBk/tAQ"}}, "unsigned": {"age_ts": 1570043557432}} QQaC $1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3385}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-658:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043556382AgYyj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043556645, "hashes": {"sha256": "U3T6UTooy9vJeVczq2pPPG14DrxwAKItKenpSaibXm4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yjwR4j4M6V8c3s07/F0w6x2JlTAs7Y3rdz7LUONP7Bkv25YLYy36vCsp2wregA9N5Ee/TYdQW4BR7bMXChxbDw"}}, "unsigned": {"age_ts": 1570043556645}}3Qce $49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "stream_ordering": 3384}{"prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}], ["$46:localhost:42455", {"sha256": "YaFkewNiy7Ei3Zu2hwjns2vlk6xdrDKmed9foCMsdks"}]], "origin_server_ts": 1570043553629, "content": {"body": "event_c"}, "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "event_id": "$49:localhost:42455", "sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "fNKJ8hTqq9QPYmMmkLjpKYQLPtuzzY1MOO5RrtOtu1A"}, "depth": 9, "origin": "localhost:42455", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "type": "m.room.message", "signatures": {"localhost:42455": {"ed25519:1": "+dkYPw00Sb8pHVRITKdgrt7bx8z123ES1oL3PxZaEBwX5M1tS/qI3r9EWU1hnQ9mOd+/4QR5dpzS+sRWA+OVAw"}}, "unsigned": {}}  fx$QQa $1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3389}{"auth_events": [["$1570043558384QrKsp:localhost:8800", {"sha256": "C9ZxoKUijCUCyUsz0ORIFjPoReDRyGTMBDBHQ/VKeQ8"}], ["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}], ["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}]], "prev_events": [["$1570043558385Xpkrp:localhost:8800", {"sha256": "9gL7CXxOuW9ckTga5kCxIRSOYRZkiNmM/4tYtYkjbjo"}]], "type": "m.room.history_visibility", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043559386ZLBoz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043559618, "hashes": {"sha256": "FDJLXXEjdalG7E3l7LUDJOKYQZ8Z2cfa2nL7b+V2W4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KRu68DxJlc6kxnopnu4Zvkq3bCkgeLN1DFN9PXwFZNejOoNHMUZ4ar8Jfs8funkiLRrAnmb2+SwO2WKrkTlKDg"}}, "unsigned": {"age_ts": 1570043559618}}g#QQaq $1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3388}{"auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}], ["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}], ["$1570043558384QrKsp:localhost:8800", {"sha256": "C9ZxoKUijCUCyUsz0ORIFjPoReDRyGTMBDBHQ/VKeQ8"}]], "prev_events": [["$1570043558384QrKsp:localhost:8800", {"sha256": "C9ZxoKUijCUCyUsz0ORIFjPoReDRyGTMBDBHQ/VKeQ8"}]], "type": "m.room.join_rules", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043558385Xpkrp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043558952, "hashes": {"sha256": "DqoUE2zvx+Tty5OTkAsQpHAgod0oy0sjhpbl8WmyxKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9DLvQCFmHJcC6k9tXln+kDYMcuH/es+HtHGlxL56RBV55oGAXnD/CGxYDTN3sB/KKt9aLzrNW7Lg1rwnJAr8BQ"}}, "unsigned": {"age_ts": 1570043558952}}+"QQay $1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3387}{"auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}], ["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}]], "prev_events": [["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}]], "type": "m.room.power_levels", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"users": {"@anon-20191002_181700-658:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043558384QrKsp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043558217, "hashes": {"sha256": "3G3wlvAqGuomppnuBkfFjlVGaNShsAqSZBImF9NvAXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KCCpofu4t+B5nPdYSNEoWBN1nZxHX7vOnmue9mUkReQJKB9r6x29YDLH/mRycLgt7CkJ6w7uHdIGKR/+xTD5Bw"}}, "unsigned": {"age_ts": 1570043558217}} &w&L r  X >  ;a@fE+Qwj;QQQ$1570043581404AarAd:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j:QQQ$1570043581404AarAd:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j9QQQ$1570043580403vYYeb:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800j8QQQ$1570043579402KDYtE:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800[73QQ$54:localhost:42455$1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800[63QQ$54:localhost:42455$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800[53QQ$54:localhost:42455$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j4QQQ$1570043572397AAGBm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j3QQQ$1570043572397AAGBm:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j2QQQ$1570043572397AAGBm:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j1QQQ$1570043572396lZXIU:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j0QQQ$1570043572396lZXIU:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j/QQQ$1570043572396lZXIU:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j.QQQ$1570043571395bDLFD:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j-QQQ$1570043571395bDLFD:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j,QQQ$1570043571395bDLFD:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j+QQQ$1570043570394QELCg:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j*QQQ$1570043570394QELCg:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j)QQQ$1570043570394QELCg:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j(QQQ$1570043569393UscIm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j'QQQ$1570043569393UscIm:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j&QQQ$1570043568392ItLhq:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j%QQQ$1570043568392ItLhq:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j$QQQ$1570043567391GonfI:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j#QQQ$1570043566390qTwyJ:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800L"33Q$51:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800[!3QQ$51:localhost:42455$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[ 3QQ$51:localhost:42455$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$51:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$50:localhost:42455$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$50:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$50:localhost:42455$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043559386ZLBoz:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043559386ZLBoz:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043559386ZLBoz:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043558385Xpkrp:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043558385Xpkrp:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043558385Xpkrp:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 2|b"S f  y * L _  r #6X kGOD9.|VTeL$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUsha256I; 3iEKW/ 6e,NE UVSeL$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcsha256.XXϞ@/b#\6*+ԥͥZVReL$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEsha256OBۘ:T_ZjxOaVQeL$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8sha256ui&OO%kˋ8R䮴VPeL$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQsha256K^J-IM0g vso΂ZKtVOeL$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucsha256vXVLeL$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygsha256kx cSOq,.Ut#{Pao(VKeL$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0sha2560% ـʛ!Y3jMVJeL$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAsha256M.gQ&Q}ط g/]>SpVIeL$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4sha256POӎ`AJk_lQVHeL$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgsha256tJ.[C5mix c@xCG?L$60_msg_e:localhost:42455sha256n, jfKӹ(:dcFJxBCF?L$59_msg_d:localhost:42455sha2563cs3H2&j'{A<=E3L$56:localhost:42455sha256 C0 hߏS焥ڀ{`LDQL$1570043593416CouYv:localhost:8800sha2561k LR75BLCQL$1570043592415heiAH:localhost:8800sha256>HNK11jJ-׏O}zZ:LBQL$1570043591414NuXxd:localhost:8800sha256UvnJ}i͌03<:LAQL$1570043590413Khvee:localhost:8800sha256g\Kp+=% 5~fzU5 L@QL$1570043589412JaDTY:localhost:8800sha256y84 x3eO+.v c)zvL?QL$1570043588411PDBWG:localhost:8800sha256G苫.攴A%JlPD*yGLK맡=>3L$55:localhost:42455sha256$-"2Sj鎫M- XL=QL$1570043585409JoQZw:localhost:8800sha256_Jtgt3VTElЁU2#L<QL$1570043584408XdGfO:localhost:8800sha256 ?<4bVňŪR<[tDL;QL$1570043583407USfCf:localhost:8800sha256QkOv)}IH$'L:QL$1570043583406mAAxW:localhost:8800sha256?[W"`W]fK{xq N&4L9QL$1570043582405uFoRY:localhost:8800sha256mRNaX720;I0 L8QL$1570043581404AarAd:localhost:8800sha256簂yS0[+L7QL$1570043580403vYYeb:localhost:8800sha256OwT7y u)RAlnL6QL$1570043579402KDYtE:localhost:8800sha256g8ґnbQnj@c=rLItL5QL$1570043578401arzBQ:localhost:8800sha256'CWA$V+܉LCHj*[(L4QL$1570043578400zncwP:localhost:8800sha256!fHӂD5@9?3ڟHL3QL$1570043575399SiSKs:localhost:8800sha256\*o1a6}G%cz/=23L$54:localhost:42455sha256)) 8rz>Y5DM9{p8 ?)W~[L1QL$1570043572397AAGBm:localhost:8800sha256z9,%yQ%C0)qKY X@L0QL$1570043572396lZXIU:localhost:8800sha2568:}L!ˊAֺ, L/QL$1570043571395bDLFD:localhost:8800sha256vP261j'rw"+VDxvL.QL$1570043570394QELCg:localhost:8800sha2565GdC j^ItB6]L-QL$1570043569393UscIm:localhost:8800sha256z-@D˖JN"bKOʱEtw<МL,QL$1570043568392ItLhq:localhost:8800sha256DvobeKS4_͐~l+L+QL$1570043567391GonfI:localhost:8800sha2560Tvk1L1Tl lhAAzL*QL$1570043566390qTwyJ:localhost:8800sha256Kӈg&}ҡ ,-:7LP͝ᰥL)QL$1570043565389RsxAr:localhost:8800sha256BBÂ:jO9y騝N+/L(QL$1570043564388ZmOEV:localhost:8800sha256 ʸ[6 )\ FӜP{xh>ځ ='3L$53:localhost:42455sha2562Σp%Ju]1 JC>W|08=&3L$52:localhost:42455sha256c7"[e2 D* R=%3L$50:localhost:42455sha256@!4(gySĠ$?Q9 !UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_alias =6Q' !TleKOyAElrpgyyrAQA:localhost:8800m.room.create^Q']!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800 :6Q' !UTAORDrNxIbSlGByAp:localhost:8800m.room.create 8  +QQa) $1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3396}{"auth_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}]], "prev_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}]], "type": "m.room.member", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-659", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-659:localhost:8800", "event_id": "$1570043566390qTwyJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043566958, "hashes": {"sha256": "a4dh5Z7x/yhp+KUqKUxG59DnUyKhvM1dkHbTt8ommCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v3Atdsa1YaqHIClqhQvsm/0lTeomx2roLbhY4ZOWO+p7Cq0H9nEsTiwOj4A72wjKRgY9d0HWizI4e+Lj/34tDg"}}, "unsigned": {"age_ts": 1570043566958}}*QQaC $1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3395}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-660:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043565389RsxAr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043565148, "hashes": {"sha256": "gTewl/8v9kvl4eTl+TBcKLa8UZFoiJ4vtbKJlDCQm4Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VzUz4a6I8qvM7nxq/ERciVoWhL155BQWIlsQPi9FGCzQEYxBrhmDRqocV4D4rF4Xd568ec1mXzUgiZWM5jd2Aw"}}, "unsigned": {"age_ts": 1570043565148}})QQaC $1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3394}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-659:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043564388ZmOEV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043564863, "hashes": {"sha256": "B8rZUdE4lZO8nrMaYJgMBIl2CmXq7E1jOvWdMqtDKdI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HWLONvypwScF6IZj41jB44bQUObwsvGNPXvyRrQ8dlsZrtWyWcoawZR7Kkc96F8Az+xJg7how6pAnUwKI3A1BA"}}, "unsigned": {"age_ts": 1570043564863}}v(3Qc+ $53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800{"outlier": false, "stream_ordering": 3393}{"origin": "localhost:42455", "depth": 7, "type": "m.room.message", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@__ANON__-32:localhost:42455", "hashes": {"sha256": "DJeunpeq6qv9yDeQzE/isbG+HobR/7+DvAEwv+0M6oU"}, "content": {"body": "event_c"}, "event_id": "$53:localhost:42455", "auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "U3T6UTooy9vJeVczq2pPPG14DrxwAKItKenpSaibXm4"}], ["$1570043558385Xpkrp:localhost:8800", {"sha256": "DqoUE2zvx+Tty5OTkAsQpHAgod0oy0sjhpbl8WmyxKU"}], ["$1570043558384QrKsp:localhost:8800", {"sha256": "3G3wlvAqGuomppnuBkfFjlVGaNShsAqSZBImF9NvAXg"}], ["$50:localhost:42455", {"sha256": "l9/c/mcPB7VFnDGsefAkwudrfgEa2IsMOSHuG1XHURI"}]], "prev_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "U3T6UTooy9vJeVczq2pPPG14DrxwAKItKenpSaibXm4"}], ["$50:localhost:42455", {"sha256": "l9/c/mcPB7VFnDGsefAkwudrfgEa2IsMOSHuG1XHURI"}], ["$52:localhost:42455", {"sha256": "XrNViJfbas+bnwq7GnkRWu+iZl66u/TPn0rJidaHPQ4"}]], "origin_server_ts": 1570043561184, "signatures": {"localhost:42455": {"ed25519:1": "GcA6bx4ZOoJgEVYx52hex/dHVeqWLovsQ7ok3Iav6+/khOHb+ldu9eJrJe/D715GE+HeWWhGFmCaFMXUChlBCg"}}, "unsigned": {}} _Q  } ? U< r8\_Z Q'Q  ]$1570043589412JaDTY:localhost:8800m.room.create!dBfASZrfiFeSKTjYJm:localhost:8800m0m@anon-20191002_181700-663:localhost:8800YQ)Q ]$1570043588411PDBWG:localhost:8800m.room.message!tcYctHPiaKzsKgrXlU:localhost:8800mm@anon-20191002_181700-661:localhost:8800{X3'Q E$55:localhost:42455m.room.member!taANXnGBZntAreRurn:localhost:8800mm@__ANON__-34:localhost:42455"WQ?Q ]$1570043585409JoQZw:localhost:8800m.room.history_visibility!taANXnGBZntAreRurn:localhost:8800mm@anon-20191002_181700-662:localhost:8800"VQ?Q ]$1570043584408XdGfO:localhost:8800m.room.history_visibility!tcYctHPiaKzsKgrXlU:localhost:8800m|m@anon-20191002_181700-661:localhost:8800UQ/Q ]$1570043583407USfCf:localhost:8800m.room.join_rules!taANXnGBZntAreRurn:localhost:8800mom@anon-20191002_181700-662:localhost:8800TQ/Q ]$1570043583406mAAxW:localhost:8800m.room.join_rules!tcYctHPiaKzsKgrXlU:localhost:8800m.m@anon-20191002_181700-661:localhost:8800SQ3Q ]$1570043582405uFoRY:localhost:8800m.room.power_levels!taANXnGBZntAreRurn:localhost:8800mjmb@anon-20191002_181700-662:localhost:8800RQ3Q ]$1570043581404AarAd:localhost:8800m.room.power_levels!tcYctHPiaKzsKgrXlU:localhost:8800m%m?@anon-20191002_181700-661:localhost:8800QQ'Q ]$1570043580403vYYeb:localhost:8800m.room.member!taANXnGBZntAreRurn:localhost:8800mΘmц@anon-20191002_181700-662:localhost:8800PQ'Q ]$1570043579402KDYtE:localhost:8800m.room.member!tcYctHPiaKzsKgrXlU:localhost:8800m̰m@anon-20191002_181700-661:localhost:8800O Q'Q  ]$1570043578401arzBQ:localhost:8800m.room.create!taANXnGBZntAreRurn:localhost:8800mm @anon-20191002_181700-662:localhost:8800N Q'Q  ]$1570043578400zncwP:localhost:8800m.room.create!tcYctHPiaKzsKgrXlU:localhost:8800mm@anon-20191002_181700-661:localhost:8800MQ)Q ]$1570043575399SiSKs:localhost:8800m.room.message!zScKnCZCFPIIodAiQj:localhost:8800m㾄m㾇@anon-20191002_181700-659:localhost:8800{L3'Q E$54:localhost:42455m.room.member!drnXStKXkNQkouqUAg:localhost:8800m㹆m@__ANON__-33:localhost:42455"KQ?Q ]$1570043572397AAGBm:localhost:8800m.room.history_visibility!drnXStKXkNQkouqUAg:localhost:8800mmM@anon-20191002_181700-660:localhost:8800"JQ?Q ]$1570043572396lZXIU:localhost:8800m.room.history_visibility!zScKnCZCFPIIodAiQj:localhost:8800m㰚mB@anon-20191002_181700-659:localhost:8800IQ/Q ]$1570043571395bDLFD:localhost:8800m.room.join_rules!drnXStKXkNQkouqUAg:localhost:8800mAm㭓@anon-20191002_181700-660:localhost:8800HQ/Q ]$1570043570394QELCg:localhost:8800m.room.join_rules!zScKnCZCFPIIodAiQj:localhost:8800mmD@anon-20191002_181700-659:localhost:8800GQ3Q ]$1570043569393UscIm:localhost:8800m.room.power_levels!drnXStKXkNQkouqUAg:localhost:8800mPmc@anon-20191002_181700-660:localhost:8800FQ3Q ]$1570043568392ItLhq:localhost:8800m.room.power_levels!zScKnCZCFPIIodAiQj:localhost:8800mmy@anon-20191002_181700-659:localhost:8800EQ'Q ]$1570043567391GonfI:localhost:8800m.room.member!drnXStKXkNQkouqUAg:localhost:8800m[m@anon-20191002_181700-660:localhost:8800DQ'Q ]$1570043566390qTwyJ:localhost:8800m.room.member!zScKnCZCFPIIodAiQj:localhost:8800mnm㞅@anon-20191002_181700-659:localhost:8800C Q'Q  ]$1570043565389RsxAr:localhost:8800m.room.create!drnXStKXkNQkouqUAg:localhost:8800m\m㗽@anon-20191002_181700-660:localhost:8800B Q'Q  ]$1570043564388ZmOEV:localhost:8800m.room.create!zScKnCZCFPIIodAiQj:localhost:8800m?m㔶@anon-20191002_181700-659:localhost:8800|A3)Q E$53:localhost:42455m.room.message!LazKtcHZriKzCvvGwV:localhost:8800mm㋺@__ANON__-32:localhost:42455 g * T~=gg]!c@anon-20191002_181700-669:localhost:8800UUBRIPFVWOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5wog~]!c@anon-20191002_181700-668:localhost:8800DCHVQLDWGWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgog}]!c@anon-20191002_181700-667:localhost:8800DHNKEQDWHNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgog|]!c@anon-20191002_181700-666:localhost:8800LFHXFSCDSBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4gog{]!c@anon-20191002_181700-665:localhost:8800DPWOXNTOWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgogz]!c@anon-20191002_181700-664:localhost:8800KYCVQKAERIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwogy]!c@anon-20191002_181700-663:localhost:8800IQBGXQXUIHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwogx]!c@anon-20191002_181700-662:localhost:8800BPDPANNUMTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2gogw]!c@anon-20191002_181700-661:localhost:8800UIDVSRDCXVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQogv]!c@anon-20191002_181700-660:localhost:8800MWFTHHYRXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgogu]!c@anon-20191002_181700-659:localhost:8800KLSOKHZPOFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1go 8l D `8l]c!E@anon-20191002_181700-668:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgoDCHVQLDWGW127.0.0.1Perl + Net::Async::HTTP/0.44mtk]c!E@anon-20191002_181700-667:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgoDHNKEQDWHN127.0.0.1Perl + Net::Async::HTTP/0.44mh,j]c!E@anon-20191002_181700-666:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4goLFHXFSCDSB127.0.0.1Perl + Net::Async::HTTP/0.44mKi]c!E@anon-20191002_181700-665:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgoDPWOXNTOWQ127.0.0.1Perl + Net::Async::HTTP/0.44m-h]c!E@anon-20191002_181700-664:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwoKYCVQKAERI127.0.0.1Perl + Net::Async::HTTP/0.44mg]c!E@anon-20191002_181700-663:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwoIQBGXQXUIH127.0.0.1Perl + Net::Async::HTTP/0.44mf]c!E@anon-20191002_181700-662:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2goBPDPANNUMT127.0.0.1Perl + Net::Async::HTTP/0.44me]c!E@anon-20191002_181700-661:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQoUIDVSRDCXV127.0.0.1Perl + Net::Async::HTTP/0.44mid]c!E@anon-20191002_181700-660:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgoMWFTHHYRXE127.0.0.1Perl + Net::Async::HTTP/0.44mc]c!E@anon-20191002_181700-659:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1goKLSOKHZPOF127.0.0.1Perl + Net::Async::HTTP/0.44m 7,Z%* X # O{Fr=i4s> j5a,_a b / c 0 e 2 f 3 54]@anon-20191002_181700-696:localhost:8800m4f4]@anon-20191002_181700-680:localhost:8800m4W4]@anon-20191002_181700-679:localhost:8800m4V4]@anon-20191002_181700-678:localhost:8800m4U4]@anon-20191002_181700-677:localhost:8800m4T4]@anon-20191002_181700-676:localhost:8800m4S4]@anon-20191002_181700-675:localhost:8800m4R4]@anon-20191002_181700-674:localhost:8800m4Q4]@anon-20191002_181700-673:localhost:8800m4P4]@anon-20191002_181700-672:localhost:8800m4O4]@anon-20191002_181700-671:localhost:8800m4N4]@anon-20191002_181700-670:localhost:8800m4M4]@anon-20191002_181700-669:localhost:8800m4L4]@anon-20191002_181700-668:localhost:8800m4K4]@anon-20191002_181700-667:localhost:8800m4J4]@anon-20191002_181700-666:localhost:8800m4I4]@anon-20191002_181700-665:localhost:8800m4H4]@anon-20191002_181700-656:localhost:8800m4?4]@anon-20191002_181700-655:localhost:8800m4>4]@anon-20191002_181700-654:localhost:8800m4=4]@anon-20191002_181700-653:localhost:8800m4<4]@anon-20191002_181700-652:localhost:8800m4;4]@anon-20191002_181700-651:localhost:8800m4:4]@anon-20191002_181700-650:localhost:8800m492[@anon-20191002_181700-64:localhost:8800m424]@anon-20191002_181700-649:localhost:8800m484]@anon-20191002_181700-700:localhost:8800m4i4]@anon-20191002_181700-698:localhost:8800m4h4]@anon-20191002_181700-697:localhost:8800m4g4]@anon-20191002_181700-689:localhost:8800m4`4]@anon-20191002_181700-688:localhost:8800m4_4]@anon-20191002_181700-687:localhost:8800m4^4]@anon-20191002_181700-686:localhost:8800m4]4]@anon-20191002_181700-685:localhost:8800m4\4]@anon-20191002_181700-684:localhost:8800m4[4]@anon-20191002_181700-683:localhost:8800m4Z4]@anon-20191002_181700-682:localhost:8800m4Y4]@anon-20191002_181700-681:localhost:8800m4X4]@anon-20191002_181700-664:localhost:8800m4G4]@anon-20191002_181700-663:localhost:8800m4F4]@anon-20191002_181700-662:localhost:8800m4E4]@anon-20191002_181700-661:localhost:8800m4D4]@anon-20191002_181700-660:localhost:8800m4C2[@anon-20191002_181700-65:localhost:8800m434]@anon-20191002_181700-659:localhost:8800m4B4]@anon-20191002_181700-658:localhost:8800m4A4]@anon-20191002_181700-657:localhost:8800m4@1Y@anon-20191002_181700-6:localhost:8800m462[@anon-20191002_181700-68:localhost:8800m452[@anon-20191002_181700-67:localhost:8800m444]@anon-20191002_181700-695:localhost:8800m4e4]@anon-20191002_181700-693:localhost:8800m4d4]@anon-20191002_181700-692:localhost:8800m4c4]@anon-20191002_181700-691:localhost:8800m4b4]@anon-20191002_181700-690:localhost:8800m4a >CG K O  S  W  [ _ c$g(k,o0s4w8{<]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIRm4<=]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXAm4<<]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGUm4<;]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHSm4<:]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm4<9]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUOm4<8]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWAm4<7]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGGm4<6]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOSm4 QLj39qq? x F   ~ L 9  k S ! Y '   _ -? ew^,d2j8Fxp> 1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk 1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU 1e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa00e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwS0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No"1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA o1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o)1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wL1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEr1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAk1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIX3$56:localhost:42455 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAF1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok 1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 |1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs u1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk l1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM Z1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc R1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo M1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s 3$55:localhost:42455 3$54:localhost:42455 3$50:localhost:42455 3$45:localhost:42455 3$48:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcD1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15AumwP1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs:1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUZ1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0v0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoY1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA11e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU41e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is 1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ9051e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Al1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA 1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkv1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0 1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUQ1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI 7 &{W ' F " ` 0On DcF!]fQ'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455Y Q' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800_ Q3 Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:8800_ Q3 Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:8800] Q/ Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800f Q'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455YQ' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800UQ3 = !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$57_pl_x:localhost:42455fQ'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455YQ' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800fQ'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455uQ'EQ !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$1570043594417GcQTD:localhost:8800eQ? Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility$1570043593416CouYv:localhost:8800]Q/ Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800_Q3 Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:8800Q']Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800$1570043590413Khvee:localhost:8800Y~Q' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800f}Q'E3 !taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455$55:localhost:42455u|Q'EQ !taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455$1570043586410XgGlD:localhost:8800e{Q? Q !taANXnGBZntAreRurn:localhost:8800m.room.history_visibility$1570043585409JoQZw:localhost:8800ezQ? Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility$1570043584408XdGfO:localhost:8800]yQ/ Q !taANXnGBZntAreRurn:localhost:8800m.room.join_rules$1570043583407USfCf:localhost:8800]xQ/ Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules$1570043583406mAAxW:localhost:8800_wQ3 Q !taANXnGBZntAreRurn:localhost:8800m.room.power_levels$1570043582405uFoRY:localhost:8800_vQ3 Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels$1570043581404AarAd:localhost:8800uQ']Q !taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800$1570043580403vYYeb:localhost:8800tQ']Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800$1570043579402KDYtE:localhost:8800YsQ' Q !taANXnGBZntAreRurn:localhost:8800m.room.create$1570043578401arzBQ:localhost:8800YrQ' Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.create$1570043578400zncwP:localhost:8800fqQ'E3 !drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455$54:localhost:42455upQ'EQ !drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455$1570043574398LLbdN:localhost:8800eoQ? Q !drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibility$1570043572397AAGBm:localhost:8800enQ? Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility$1570043572396lZXIU:localhost:8800]mQ/ Q !drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules$1570043571395bDLFD:localhost:8800]lQ/ Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules$1570043570394QELCg:localhost:8800_kQ3 Q !drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels$1570043569393UscIm:localhost:8800_jQ3 Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.power_levels$1570043568392ItLhq:localhost:8800iQ']Q !drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800$1570043567391GonfI:localhost:8800 %~<  M  5 w M L$Lhq m:eQ? $i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibilitye9eQ/ $nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rulesg8eQ3 $Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels 7eQ']$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800a6eQ' $pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create}5eQ'E$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455m4eQ? $ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibilitye3eQ/ $tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rulesg2eQ3 $jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels 1eQ']$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800a0eQ' $nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.created/3Q'E$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455c.QQ? $1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility[-QQ/ $1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules],QQ3 $1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels+QQ']$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800W*QQ' $1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.created)3Q'E$55:localhost:42455!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455c(QQ? $1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.history_visibilityc'QQ? $1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility[&QQ/ $1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.join_rules[%QQ/ $1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules]$QQ3 $1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.power_levels]#QQ3 $1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels"QQ']$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800!QQ']$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800W QQ' $1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.createWQQ' $1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.created3Q'E$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455cQQ? $1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibilitycQQ? $1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility[QQ/ $1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules[QQ/ $1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules]QQ3 $1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels]QQ3 $1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.power_levelsQQ']$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800QQ']$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.member@anon-20191002_181700-659:localhost:8800  +.QQay $1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3399}{"auth_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}]], "prev_events": [["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}]], "type": "m.room.power_levels", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"users": {"@anon-20191002_181700-660:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043569393UscIm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043569232, "hashes": {"sha256": "ZD4uM7sB23xbQm2e1BaCg6Epdkz1NQysPDo2GBqh2v8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g5Wc0st4MC2aJ5WLTJ8XXPnDb/q7CapOvTmS73NUV2sLemB8CIEKOBNmTpR9B7hQF9JP5e3SkdT0wMrBnalEDQ"}}, "unsigned": {"age_ts": 1570043569232}}+-QQay $1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3398}{"auth_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "prev_events": [["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "type": "m.room.power_levels", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"users": {"@anon-20191002_181700-659:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043568392ItLhq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043568922, "hashes": {"sha256": "K+Loazz+y0hUB5dvZCZwWl4fZUIsE11Y1uW7CxA7ABE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLrnqiezme56Zv8MiahcA1tDSP05jbGu8DFj4WUUtMsdtolh2ACiFTwwJjTp//Y1M20EsM6+PaVHCUTUys59Cw"}}, "unsigned": {"age_ts": 1570043568922}},QQa) $1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3397}{"auth_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}]], "prev_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}]], "type": "m.room.member", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-660", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-660:localhost:8800", "event_id": "$1570043567391GonfI:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043567451, "hashes": {"sha256": "XWNZDU14W7xnEyVAvXNo7HFLMgSghk6HsQczXIDINlk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zDjLbzn6LWXAopnsI/8PeJFgs40Cnjq23echuT4OouTYK3UaAWoK7hcdIVIuliPb6Zih9jp04dNVBmMX1UndAg"}}, "unsigned": {"age_ts": 1570043567451}} 2vf2 Z s & ? X  3LB=83.){$vT2Qe 2!vnFXnkCSfTbsSNKrtg:localhost:8800$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUT1Qe 1!vnFXnkCSfTbsSNKrtg:localhost:8800$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oT0Qe 0!vnFXnkCSfTbsSNKrtg:localhost:8800$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8T/Qe /!vnFXnkCSfTbsSNKrtg:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQT.Qe .!vnFXnkCSfTbsSNKrtg:localhost:8800$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6YT-Qe -!jRuDexjFzIDOKbwDJQ:localhost:8800$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUT,Qe ,!jRuDexjFzIDOKbwDJQ:localhost:8800$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcT+Qe +!jRuDexjFzIDOKbwDJQ:localhost:8800$ODMJ-iUdhqDMHrNa-V288j4Ay7-4kL_az64iDroXTLwT*Qe *!jRuDexjFzIDOKbwDJQ:localhost:8800$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWET)Qe )!jRuDexjFzIDOKbwDJQ:localhost:8800$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8T(Qe (!jRuDexjFzIDOKbwDJQ:localhost:8800$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQT'Qe '!jRuDexjFzIDOKbwDJQ:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucT&Qe &!jRuDexjFzIDOKbwDJQ:localhost:8800$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wT%Qe %!KcXNWNfbLcYsBKZHIp:localhost:8800$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0T$Qe $!KcXNWNfbLcYsBKZHIp:localhost:8800$_Rc7L0rJ0B4bInG4fEV4-qUkc7VYf0NWkeM6fgYzDBIT#Qe #!KcXNWNfbLcYsBKZHIp:localhost:8800$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1BhbygT"Qe "!KcXNWNfbLcYsBKZHIp:localhost:8800$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0T!Qe !!KcXNWNfbLcYsBKZHIp:localhost:8800$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAT Qe !KcXNWNfbLcYsBKZHIp:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4TQe !KcXNWNfbLcYsBKZHIp:localhost:8800$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgAQ? !dBfASZrfiFeSKTjYJm:localhost:8800$60_msg_e:localhost:42455AQ? !dBfASZrfiFeSKTjYJm:localhost:8800$59_msg_d:localhost:42455AQ? !dBfASZrfiFeSKTjYJm:localhost:8800$59_msg_d:localhost:42455;Q3 !dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043594417GcQTD:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043593416CouYv:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043592415heiAH:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043591414NuXxd:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043590413Khvee:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043589412JaDTY:localhost:8800;Q3 !taANXnGBZntAreRurn:localhost:8800$55:localhost:42455JQQ !taANXnGBZntAreRurn:localhost:8800$1570043586410XgGlD:localhost:8800JQQ !taANXnGBZntAreRurn:localhost:8800$1570043585409JoQZw:localhost:8800JQQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043584408XdGfO:localhost:8800JQQ !taANXnGBZntAreRurn:localhost:8800$1570043583407USfCf:localhost:8800JQQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043583406mAAxW:localhost:8800JQQ !taANXnGBZntAreRurn:localhost:8800$1570043582405uFoRY:localhost:8800J QQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043581404AarAd:localhost:8800J QQ !taANXnGBZntAreRurn:localhost:8800$1570043580403vYYeb:localhost:8800J QQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043579402KDYtE:localhost:8800J QQ !taANXnGBZntAreRurn:localhost:8800$1570043578401arzBQ:localhost:8800J QQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043578400zncwP:localhost:8800;Q3 !drnXStKXkNQkouqUAg:localhost:8800$54:localhost:42455JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043574398LLbdN:localhost:8800JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043572397AAGBm:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043572396lZXIU:localhost:8800JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043571395bDLFD:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043570394QELCg:localhost:8800JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043569393UscIm:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043568392ItLhq:localhost:8800 ^\?( gJ r O 4  y X %  o X jG$Q\)hExa.t] V # } b ? t-Q4y:>'] -m.room.member@anon-20191002_181700-665:localhost:8800 /  "m.room.join_rules 3  !m.room.power_levels >'] m.room.member@anon-20191002_181700-664:localhost:8800 '  m.room.create /  m.room.join_rules 2'E m.room.member@__ANON__-35:localhost:42455 '  m.room.create 3  m.room.power_levels 3  m.room.power_levels /  m.room.join_rules 2'E m.room.member@__ANON__-35:localhost:42455 '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-35:localhost:42455 '  m.room.create 2'E m.room.member@__ANON__-35:localhost:42455 2'E m.room.member@__ANON__-35:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-663:localhost:8800 '  m.room.create ~2'E m.room.member@__ANON__-34:localhost:42455 }2'E m.room.member@__ANON__-34:localhost:42455 |"?  m.room.history_visibility {"?  m.room.history_visibility z/  m.room.join_rules y/  m.room.join_rules x3  m.room.power_levels w3  m.room.power_levels v>'] m.room.member@anon-20191002_181700-662:localhost:8800 u>'] m.room.member@anon-20191002_181700-661:localhost:8800 t'  m.room.create s'  m.room.create r2'E m.room.member@__ANON__-33:localhost:42455 q2'E m.room.member@__ANON__-33:localhost:42455 p"?  m.room.history_visibility o"?  m.room.history_visibility n/  m.room.join_rules m/  m.room.join_rules l3  m.room.power_levels k3  m.room.power_levels j>'] m.room.member@anon-20191002_181700-660:localhost:8800 i>'] m.room.member@anon-20191002_181700-659:localhost:8800 h'  m.room.create g'  m.room.create f3  m.room.power_levels b2'E m.room.member@__ANON__-32:localhost:42455 d/  m.room.join_rules e'  m.room.create c3  m.room.power_levels ^2'E m.room.member@__ANON__-32:localhost:42455 `/  m.room.join_rules a2'E -m.room.member@__ANON__-37:localhost:42455 /  -m.room.join_rules '  -m.room.create 2'E ,m.room.member@__ANON__-37:localhost:42455 2'E +m.room.member@__ANON__-37:localhost:42455 "?  *m.room.history_visibility /  )m.room.join_rules 3  (m.room.power_levels >'] 'm.room.member@anon-20191002_181700-665:localhost:8800 '  &m.room.create 2'E %m.room.member@__ANON__-36:localhost:42455 2'E $m.room.member@__ANON__-36:localhost:42455 "?  #m.room.history_visibility '  m.room.create _! test_stateY ]3  m.room.power_levels X>'] m.room.member@anon-20191002_181700-658:localhost:8800 [2'E m.room.member@__ANON__-32:localhost:42455 \/  m.room.join_rules Y"?  m.room.history_visibility Z'  m.room.create W2'E m.room.member@__ANON__-32:localhost:42455 V2'E m.room.member@__ANON__-32:localhost:42455 U"?  m.room.history_visibility T/  m.room.join_rules S3  -m.room.power_levels 3  m.room.power_levels R>'] m.room.member@anon-20191002_181700-658:localhost:8800 Q'  m.room.create P3  m.room.power_levels L2'E m.room.member@__ANON__-31:localhost:42455 N/  m.room.join_rules O'  m.room.create M3  m.room.power_levels H2'E m.room.member@__ANON__-31:localhost:42455 J/  m.room.join_rules K'  m.room.create I! test_stateY F! test_stateT E! test_stateB B *vHb4 | N n B  d 6  ~ P " l > -]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800-]@anon-20191002_181700-180:localhost:8829+[@anon-20191002_181700-17:localhost:8800-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-170:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800,+[@anon-20191002_181700-16:localhost:8800'+[@anon-20191002_181700-16:localhost:8800"+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800 +[@anon-20191002_181700-16:localhost:8800-]@anon-20191002_181700-169:localhost:8800z-]@anon-20191002_181700-169:localhost:8800y-]@anon-20191002_181700-169:localhost:8800x-]@anon-20191002_181700-168:localhost:8800q-]@anon-20191002_181700-167:localhost:8800k-]@anon-20191002_181700-166:localhost:8829e-]@anon-20191002_181700-165:localhost:8800_-]@anon-20191002_181700-164:localhost:8800X-]@anon-20191002_181700-163:localhost:8800P-]@anon-20191002_181700-162:localhost:8800H-]@anon-20191002_181700-161:localhost:8800A-]@anon-20191002_181700-160:localhost:8800:-]@anon-20191002_181700-158:localhost:88004-]@anon-20191002_181700-156:localhost:8800.-]@anon-20191002_181700-154:localhost:8800(-]@anon-20191002_181700-153:localhost:8800&-]@anon-20191002_181700-152:localhost:8800!  *x1QQa $1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3402}{"auth_events": [["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}], ["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "prev_events": [["$1570043570394QELCg:localhost:8800", {"sha256": "4rbv0DUci41HZEMMar28lrReSYGgdK/ssdFCNouwXYI"}]], "type": "m.room.history_visibility", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043572396lZXIU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043572378, "hashes": {"sha256": "gSiO18VXWLut7eaOFNhlZB8Qd8AosUF5TGyYNKdJ2Eg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ojmYMAP51Py9ZJIlVz8ilEaHxxeIj7rWbAFx8CHRWZa84m+gvIsja5IFzGfyKJJK0Jxrqaq67BJ6rogjmvwdBQ"}}, "unsigned": {"age_ts": 1570043572378}}g0QQaq $1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3401}{"auth_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}], ["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}]], "prev_events": [["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}]], "type": "m.room.join_rules", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043571395bDLFD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043571009, "hashes": {"sha256": "lYKAbPqkb9ue3fnVoG0bl574JPn21TnV28fS9ifSuhs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fhTy2KxVQLi01jgNDVLGlh8e0AxwcY4nj0dZ0DUrJ+kF+Be7qV1xEZJOtT7PSE0a9ArdXUJKbbjd8c+hNh5eCQ"}}, "unsigned": {"age_ts": 1570043571009}}g/QQaq $1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3400}{"auth_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}], ["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}]], "prev_events": [["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}]], "type": "m.room.join_rules", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043570394QELCg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043570684, "hashes": {"sha256": "x42E8ilZ2d37lIjrmwNghMJmrDG+TinRVlFk6F954VQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QIRgyx/IeWHurANt+4TetYYzZqhuAcLJwxiMGEZa1ECbt4WC9CNKQLJd6hKtPFDGJf/85yBEvDSh0G/HwlnrAQ"}}, "unsigned": {"age_ts": 1570043570684}} TU@rL$  e =  u M % ] 5 mxP(R Y  q ? _ -(Z"NzH0h1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M>1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M?1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwr1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E }1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E ~1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo3$17:localhost:42455'Q$1570043713441WJPkP:localhost:8800'Q$1570043713441WJPkP:localhost:8800'Q$1570043712440rfNzQ:localhost:88001e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCow1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCov1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY 1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28t3$18:localhost:42455'Q$1570043715443SSqOY:localhost:8800'Q$1570043715443SSqOY:localhost:8800'Q$1570043713441WJPkP:localhost:8800b'Q$1570043750466Tmiqu:localhost:8800S'Q$1570043748464QpNXV:localhost:8800O'Q$1570043748464QpNXV:localhost:8800N'Q$1570043748464QpNXV:localhost:8800M'Q$1570043748463euAqZ:localhost:8800L'Q$1570043748463euAqZ:localhost:8800K'Q$1570043748463euAqZ:localhost:8800J'Q$1570043747462YuUEF:localhost:8800I'Q$1570043747462YuUEF:localhost:8800H'Q$1570043712440rfNzQ:localhost:8800'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCox 'Q$1570043746461eQhrq:localhost:8800G'Q$1570043741458PZvre:localhost:8800F'Q$1570043741458PZvre:localhost:8800E'Q$1570043741458PZvre:localhost:8800D'Q$1570043739456qeuuS:localhost:8800@'Q$1570043739456qeuuS:localhost:8800?'Q$1570043739456qeuuS:localhost:8800>'Q$1570043738455KNDHf:localhost:8800='Q$1570043738455KNDHf:localhost:8800<'Q$1570043738455KNDHf:localhost:8800;'Q$1570043737454adOjg:localhost:8800:'Q$1570043737454adOjg:localhost:88009'Q$1570043736453VtbeL:localhost:88008'Q$1570043733451EJhWh:localhost:88007'Q$1570043733451EJhWh:localhost:88006'Q$1570043733451EJhWh:localhost:88005'Q$1570043730449XMaNb:localhost:88001'Q$1570043730449XMaNb:localhost:88000'Q$1570043730449XMaNb:localhost:8800/'Q$1570043729448XmFHA:localhost:8800.'Q$1570043729448XmFHA:localhost:8800-'Q$1570043729448XmFHA:localhost:8800,'Q$1570043728447IkYro:localhost:8800+'Q$1570043728447IkYro:localhost:8800*1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M=1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:424551e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 3$18:localhost:424551e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk#1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!'Q$1570043727446CGYaE:localhost:8800)'Q$1570043715443SSqOY:localhost:8800'Q$1570043750466Tmiqu:localhost:8800U'Q$1570043750466Tmiqu:localhost:8800T ${>l H < v  K x 2h/8Air { FQ']e q!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQdEQ' e p!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6YDQ'Ee n!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcpCQ? e m!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibility$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEhBQ/ e l!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8jAQ3 e k!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ @Q']e j!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucd?Q' e i!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w>Q'Ee h!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0p=Q? e g!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibility$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygh<Q/ e f!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rules$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0j;Q3 e e!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA :Q']e d!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4d9Q' e c!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.create$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgg8Q'E3 _!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455f7Q? Q ^!dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility$1570043593416CouYv:localhost:8800^6Q/ Q ]!dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800`5Q3 Q \!dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:88004Q']Q [!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800$1570043590413Khvee:localhost:8800Z3Q' Q Z!dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800g2Q'E3 X!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455$55:localhost:42455f1Q? Q W!taANXnGBZntAreRurn:localhost:8800m.room.history_visibility$1570043585409JoQZw:localhost:8800f0Q? Q V!tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility$1570043584408XdGfO:localhost:8800^/Q/ Q U!taANXnGBZntAreRurn:localhost:8800m.room.join_rules$1570043583407USfCf:localhost:8800^.Q/ Q T!tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules$1570043583406mAAxW:localhost:8800`-Q3 Q S!taANXnGBZntAreRurn:localhost:8800m.room.power_levels$1570043582405uFoRY:localhost:8800`,Q3 Q R!tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels$1570043581404AarAd:localhost:8800+Q']Q Q!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800$1570043580403vYYeb:localhost:8800*Q']Q P!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800$1570043579402KDYtE:localhost:8800Z)Q' Q O!taANXnGBZntAreRurn:localhost:8800m.room.create$1570043578401arzBQ:localhost:8800Z(Q' Q N!tcYctHPiaKzsKgrXlU:localhost:8800m.room.create$1570043578400zncwP:localhost:8800g'Q'E3 L!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455$54:localhost:42455f&Q? Q K!drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibility$1570043572397AAGBm:localhost:8800f%Q? Q J!zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility$1570043572396lZXIU:localhost:8800^$Q/ Q I!drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules$1570043571395bDLFD:localhost:8800^#Q/ Q H!zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules$1570043570394QELCg:localhost:8800 $<k 0 I - a W"'OfkgFeQ3 $6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels EeQ']$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800joinaDeQ' $_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.createCeQ'E$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455joinmBeQ? $i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibilityeAeQ/ $nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rulesg@eQ3 $Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels ?eQ']$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800joina>eQ' $pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create=eQ'E$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455joinm<eQ? $ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibilitye;eQ/ $tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rulesg:eQ3 $jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels 9eQ']$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800joina8eQ' $nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.createh73Q'E$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455joinc6QQ? $1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility[5QQ/ $1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules]4QQ3 $1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels3QQ']$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800joinW2QQ' $1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.createh13Q'E$55:localhost:42455!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455joinc0QQ? $1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.history_visibilityc/QQ? $1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility[.QQ/ $1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.join_rules[-QQ/ $1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules],QQ3 $1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.power_levels]+QQ3 $1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels*QQ']$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800join)QQ']$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800joinW(QQ' $1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.createW'QQ' $1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.createh&3Q'E$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455joinc%QQ? $1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibilityc$QQ? $1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility[#QQ/ $1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules  .z4QQs $1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "txn_id": "612", "stream_ordering": 3405}{"auth_events": [["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}], ["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "prev_events": [["$1570043572396lZXIU:localhost:8800", {"sha256": "ku0WzjgfOoDefUyzIbAIy4pB1rrS3cIY+yzvzwALy/k"}]], "type": "m.room.message", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"body": "Hello world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "event_id": "$1570043575399SiSKs:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043575940, "hashes": {"sha256": "ItFwm89NJn84ND5DabEL8TNgKC0cPyndfIteCWBVTBk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gJXRgKluoQfjylcXXcdDV5ICMSCje28qi2tL0wG5yVqjJo3r/5MuHEu78NNSvNPvKRFYA7QvEPoRrNJVBlk5Cg"}}, "unsigned": {"age_ts": 1570043575940}}R33Q3 $54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3404}{"sender": "@__ANON__-33:localhost:42455", "hashes": {"sha256": "892Uv8d7JT0oYf4rT+l8i9aHfqXkHqH/bRLjQSRshDU"}, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-33:localhost:42455", "type": "m.room.member", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "prev_events": [["$1570043572397AAGBm:localhost:8800", {"sha256": "2RR6FIg5LPycJXlRhCXCQ8fFMClxS7VZC5aGWL9Aze0"}]], "origin_server_ts": 1570043574662, "content": {"membership": "join"}, "event_id": "$54:localhost:42455", "auth_events": [["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}], ["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043571395bDLFD:localhost:8800", {"sha256": "dttQMjYx62rSJ5pyd54VHSIdK/LVwFZEn9THeNj6v3Y"}]], "signatures": {"localhost:42455": {"ed25519:1": "dEXQU2AGNlI09BwAk31zrkk8H9DKxAzcVQ/MLRPvRO4QkbrPRqV8KQoksKq6ShWlSNv0qn/RHF6/YUVzdGPPBA"}}, "unsigned": {}}x2QQa $1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3403}{"auth_events": [["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}], ["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}]], "prev_events": [["$1570043571395bDLFD:localhost:8800", {"sha256": "dttQMjYx62rSJ5pyd54VHSIdK/LVwFZEn9THeNj6v3Y"}]], "type": "m.room.history_visibility", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043572397AAGBm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043572735, "hashes": {"sha256": "Exr9P2HJjTC1nExppK+Zk3q2+1Lrm2NIo2NQB3Hbbg0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2BMr+8o+zIqy+BUtaoI4dFuHUraizuECZLaEbsq1y1iMC4mb8UqdNS1H2JaB1NjQBoOtFIsJCO2AGiP049sVCQ"}}, "unsigned": {"age_ts": 1570043572735}} KgN5}eMS!Z(a/#j8p> v E  } K 2  Q  W % U ] +1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU f1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k ^1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk Y1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1$2:localhost:37265 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA81e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k g1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1Av1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s+1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE F1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds'1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:44405 1$2:localhost:42455 *1$2:localhost:41985 1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I V1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kA1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYq1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI o1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao m3$36:localhost:42455 1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug K1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA 1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 +3$32:localhost:42455 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYI1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0z1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUk1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgT1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY(1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAop1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgK1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk  "3W { 1 U  >q73/+'#eeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800Y ??Q$60_msg_e:localhost:42455$59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800Y??Q$59_msg_d:localhost:42455$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800\3QQ$56:localhost:42455$1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043593416CouYv:localhost:8800$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043592415heiAH:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043591414NuXxd:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043590413Khvee:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043588411PDBWG:localhost:8800$1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800\3QQ$55:localhost:42455$1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800kQQQ$1570043585409JoQZw:localhost:8800$1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800kQQQ$1570043584408XdGfO:localhost:8800$1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800k~QQQ$1570043583407USfCf:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800k}QQQ$1570043583406mAAxW:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800k|QQQ$1570043582405uFoRY:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800k{QQQ$1570043581404AarAd:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800kzQQQ$1570043580403vYYeb:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800kyQQQ$1570043579402KDYtE:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800kxQQQ$1570043575399SiSKs:localhost:8800$1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800\w3QQ$54:localhost:42455$1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800kvQQQ$1570043572397AAGBm:localhost:8800$1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800  , H?Qcq $59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": false, "stream_ordering": 3425}{"sender": "@__ANON__-35:localhost:42455", "hashes": {"sha256": "bBv/KrVPpYW1gXOVIxvTuaJtFtu+0g931WpGzf710pw"}, "origin": "localhost:42455", "depth": 11, "type": "m.room.message", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "prev_events": [["$58_msg_c:localhost:42455", {}]], "origin_server_ts": 1570043594715, "content": {"body": "totes legit"}, "event_id": "$59_msg_d:localhost:42455", "auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}], ["$56:localhost:42455", {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}]], "signatures": {"localhost:42455": {"ed25519:1": "8Ky4HtpRYhYd56LlFHopZnqLBclFXgLFXXM7v7cUp64TbvtEDWjjmjC0nL6ZrKOyhdDrytEkOR3HFxVCQ1/OBw"}}, "unsigned": {}}zG=Qa+ $57_pl_x:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": true, "stream_ordering": 3424}{"hashes": {"sha256": "uyqeup5WpCRCS1dVF7lwork5yyVK6pbFmfmcsgENg3M"}, "sender": "@__ANON__-35:localhost:42455", "type": "m.room.power_levels", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "origin": "localhost:42455", "state_key": "", "depth": 0, "origin_server_ts": 1570043594714, "prev_events": [["$this:event.does.not.exist", {}]], "event_id": "$57_pl_x:localhost:42455", "auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}], ["$56:localhost:42455", {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}]], "content": {"users": {"@__ANON__-35:localhost:42455": 100, "@anon-20191002_181700-663:localhost:8800": 0}}, "signatures": {"localhost:42455": {"ed25519:1": "emQNzK3Ndle+fzH0VUq1v9hyLqRK9iKwXXgOE5oo2J8LfSF/CD8XhMoMPIvptbXnx2ZjnZt2xJ4LNsKPI1TFAQ"}}, "unsigned": {}}RF3Q3 $56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3423}{"event_id": "$56:localhost:42455", "auth_events": [["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}], ["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "zT5IGP+iTkvApDEZMWpKLerXj8BPf62bfZK/93q4Wjo"}]], "content": {"membership": "join"}, "origin_server_ts": 1570043594362, "prev_events": [["$1570043593416CouYv:localhost:8800", {"sha256": "v7sU3cEck74xa5zGB7HFILv/TKVS4Kw3kRjUNfhCpIE"}]], "type": "m.room.member", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-35:localhost:42455", "depth": 6, "hashes": {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}, "sender": "@__ANON__-35:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "Yqji3O2byuyOyP3lW2NUda8s+2jN/iwG/8IxDeWjpIxNS6WTYGXnmB8Lm93FufWpOMCqN9iUnko+TE8wbLkRBw"}}, "unsigned": {}} TX.\2 o E  V " R  N  ~ J zFvBr> n:j6f2`E#{Q6'iQ$1570043660430kLPpN:localhost:8800 b#hI$64_redaction2:localhost:42455 a#gI$63_redaction1:localhost:42455 `f3$62:localhost:42455 _'eQ$1570043656428rZaqi:localhost:8800 ]'dQ$1570043655427tEtWD:localhost:8800 \'cQ$1570043654426seixP:localhost:8800 ['bQ$1570043653425AhyPB:localhost:8800 Z'aQ$1570043652424mkkFn:localhost:8800 Y`A$lolredact:localhost:42455 X_3$61:localhost:42455 W'^Q$1570043648422SglHQ:localhost:8800 U']Q$1570043647421dmTZW:localhost:8800 T'\Q$1570043646420mPrhj:localhost:8800 S'[Q$1570043646419zIOAX:localhost:8800 R'ZQ$1570043645418ABZkc:localhost:8800 Q1Ye$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc P1Xe$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA O1We$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E N1Ve$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs M1Ue$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw K1Te$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ J1Se$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 I1Re$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA H1Qe$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s G1Pe$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc F1Oe$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 D1Ne$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw C1Me$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI B1Le$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU A1Ke$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ @1Je$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY ?1Ie$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE >1He$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U ;1Ge$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk =1Fe$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A <1Ee$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg ;1De$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg ;1Ce$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 91Be$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 81Ae$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA 71@e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 61?e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q 51>e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc 41=e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 41<e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 21;e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 11:e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 019e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ /18e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y .17e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU -16e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc ,15e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE *14e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 )13e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ (12e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc '11e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w &10e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 %1/e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg #1.e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 "1-e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA !1,e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1+e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg *?$60_msg_e:localhost:42455 )?$59_msg_d:localhost:42455 (3$56:localhost:42455 ''Q$1570043593416CouYv:localhost:8800 '&Q$1570043592415heiAH:localhost:8800 '%Q$1570043591414NuXxd:localhost:8800 '$Q$1570043590413Khvee:localhost:8800 '#Q$1570043589412JaDTY:localhost:8800 '"Q$1570043588411PDBWG:localhost:8800 !3$55:localhost:42455 ' Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043575399SiSKs:localhost:8800  v;=["Uu< X  t =  Y u <  Z !v=Y u<Z!vw>\#8]!@anon-20191002_181700-768]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG6[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUDi8]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY98]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK6[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCl8]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8]!@anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8]!@anon-20191002_181700-724:localhost:8800LOLQJOGTTU8]!@anon-20191002_181700-723:localhost:8800JIVAFIIFHN8]!@anon-20191002_181700-722:localhost:8800IZTIXMADAY8]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAG8]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN6[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIk8]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA8]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU6[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIj8]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV8]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW7Y%@anon-20191002_181700-6:localhost:8800login_device5Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOW8]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO  8QQa) $1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3409}{"auth_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}]], "prev_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}]], "type": "m.room.member", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-662", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-662:localhost:8800", "event_id": "$1570043580403vYYeb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043580056, "hashes": {"sha256": "3lpzWLq1+shcM86AGINnRzHTTb22FTR6psvUbUyqnis"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qDX5/+jS06f5l/oTjXT1fcThq4X75s4paICvd8SQIUijOeQaTvLfZee/7IzA3utScBsM6C/dqiOFkltz9KZJBg"}}, "unsigned": {"age_ts": 1570043580056}}7QQa) $1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3408}{"auth_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}]], "prev_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}]], "type": "m.room.member", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-661", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-661:localhost:8800", "event_id": "$1570043579402KDYtE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043579568, "hashes": {"sha256": "SR8CKZLRPq2heIy0hRp7skLRpgWKQ8QNCGIseUNGCLg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UrWtDgOSDxncuAc0AkX6sy7eZ+QpVF6lxEj/w/hyh6kWm/Si8ZvcNtXYbfU+ugYqsTJkl7s03Ivweu+ZQ8HrAg"}}, "unsigned": {"age_ts": 1570043579568}}6QQaC $1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3407}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-662:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043578401arzBQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043578332, "hashes": {"sha256": "EgJxnzTNW8ArHLalezIKJcNTux1bC1sA5IpXcrW5Upk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OGLIBkC/08K5zLIsG0m9c9pD3iqf2lIKpAfy3An+dgqaM0ebR8iWZuxFCJ0xQIN2JuyApAntzKM2yA0rV/HZCg"}}, "unsigned": {"age_ts": 1570043578332}}5QQaC $1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3406}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-661:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043578400zncwP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043578100, "hashes": {"sha256": "/18BIBGvG9/ak3RX5LHlF+DEZ0OYrW6XG2dOiAE75B4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+6Fe/EAK0c7qiZJFAXUO2j6fcxaovx0BJHn6+77YCP9oYNTrUuS+/vuY4wezOtj/0vat4ob5EIPg7gkbQGYNDw"}}, "unsigned": {"age_ts": 1570043578100}} @ \ . x J  d 6 R$xJ jd6 >~P"j< V(pB vH^ b0 6 Z .  ~ R &0\-]@anon-20191002_181700-720:localhost:8800M-]@anon-20191002_181700-719:localhost:8800L-]@anon-20191002_181700-718:localhost:8800K-]@anon-20191002_181700-717:localhost:8800J-]@anon-20191002_181700-716:localhost:8800I-]@anon-20191002_181700-715:localhost:8800H-]@anon-20191002_181700-714:localhost:8800G-]@anon-20191002_181700-713:localhost:8800F-]@anon-20191002_181700-712:localhost:8800E-]@anon-20191002_181700-711:localhost:8800D-]@anon-20191002_181700-710:localhost:8800C-]@anon-20191002_181700-708:localhost:8800B-]@anon-20191002_181700-706:localhost:8800A-]@anon-20191002_181700-704:localhost:8800@-]@anon-20191002_181700-702:localhost:8800?-]@anon-20191002_181700-701:localhost:8800>-]@anon-20191002_181700-700:localhost:8800=-]@anon-20191002_181700-698:localhost:8800<-]@anon-20191002_181700-691:localhost:8800;-]@anon-20191002_181700-690:localhost:8800:-]@anon-20191002_181700-685:localhost:88008-]@anon-20191002_181700-684:localhost:88006-]@anon-20191002_181700-683:localhost:88004-]@anon-20191002_181700-682:localhost:88002-]@anon-20191002_181700-681:localhost:88000-]@anon-20191002_181700-680:localhost:8800.-]@anon-20191002_181700-679:localhost:8800,-]@anon-20191002_181700-678:localhost:8800+-]@anon-20191002_181700-677:localhost:8800*-]@anon-20191002_181700-676:localhost:8800'-]@anon-20191002_181700-675:localhost:8800$-]@anon-20191002_181700-674:localhost:8800# P-]@anon-20191002_181700-673:localhost:8800"-]@anon-20191002_181700-672:localhost:8800 -]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800+[@anon-20191002_181700-66:localhost:8829-]@anon-20191002_181700-669:localhost:8800-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800 -]@anon-20191002_181700-662:localhost:8800 -]@anon-20191002_181700-661:localhost:8800 -]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800+[@anon-20191002_181700-71:localhost:8800+[@anon-20191002_181700-70:localhost:8800+[@anon-20191002_181700-68:localhost:8800+[@anon-20191002_181700-67:localhost:8800(-]@anon-20191002_181700-727:localhost:8800T-]@anon-20191002_181700-726:localhost:8800S-]@anon-20191002_181700-725:localhost:8800R-]@anon-20191002_181700-724:localhost:8800Q-]@anon-20191002_181700-723:localhost:8800P-]@anon-20191002_181700-722:localhost:8800O-]@anon-20191002_181700-721:localhost:8800N 7 7g;QQaq $1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3412}{"auth_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}], ["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}]], "prev_events": [["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}]], "type": "m.room.join_rules", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043583406mAAxW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043583278, "hashes": {"sha256": "+SR/FnBlnB3CVWT3jwB1sffar3Tq8DqUVSoSUXwMLKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WRlMuL+KJ5S0Fkh6MY80w1GcZ2PyLJjhjdkiGEnl8WBBqHQEPmLvzHxnq39+WyaWm9C4Zd1H9KrS4j9GiUP6Cw"}}, "unsigned": {"age_ts": 1570043583278}}+:QQay $1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3411}{"auth_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}]], "prev_events": [["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}]], "type": "m.room.power_levels", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"users": {"@anon-20191002_181700-662:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043582405uFoRY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043582058, "hashes": {"sha256": "K9F0cxD/myD+FxzhEuL9wKQ/iQDI+xOsPjGSITYqVYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "teTlbN7GN9LT0QtA75TcqNAZJ1rmPG4Bhu01W1B68YsiuRqVwPqJHAaDWUKH3o0GefL04jmjl6GQTw4q9Xb2CA"}}, "unsigned": {"age_ts": 1570043582058}}+9QQay $1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3410}{"auth_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "prev_events": [["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "type": "m.room.power_levels", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"users": {"@anon-20191002_181700-661:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043581404AarAd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043581477, "hashes": {"sha256": "QOPIqPOTNfLZ0gpNoNcum5vOGpRg14xmKLj6ccUs6wc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4H+3+xFKq6eUJcNbJUrvnLlIjZI50iG09e2MSfn/zb+IM17hOQ9ZJ2ZUhC5Mj5Slpsdp+Z8POE5YV8kkWzxAg"}}, "unsigned": {"age_ts": 1570043581477}} %&L r  + Q w N<b_;~`eeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800~_eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800~^eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800~]eeQ$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800Q\=3Q$57_pl_x:localhost:42455$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800`[=QQ$57_pl_x:localhost:42455$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800`Z=QQ$57_pl_x:localhost:42455$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800`Y=QQ$57_pl_x:localhost:42455$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[X3QQ$56:localhost:42455$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[W3QQ$56:localhost:42455$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[V3QQ$56:localhost:42455$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jUQQQ$1570043593416CouYv:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jTQQQ$1570043593416CouYv:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jSQQQ$1570043593416CouYv:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jRQQQ$1570043592415heiAH:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jQQQQ$1570043592415heiAH:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jPQQQ$1570043592415heiAH:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jOQQQ$1570043591414NuXxd:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jNQQQ$1570043591414NuXxd:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jMQQQ$1570043590413Khvee:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[L3QQ$55:localhost:42455$1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800[K3QQ$55:localhost:42455$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800[J3QQ$55:localhost:42455$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800jIQQQ$1570043585409JoQZw:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800jHQQQ$1570043585409JoQZw:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800jGQQQ$1570043585409JoQZw:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800jFQQQ$1570043584408XdGfO:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800jEQQQ$1570043584408XdGfO:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800jDQQQ$1570043584408XdGfO:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800jCQQQ$1570043583407USfCf:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800jBQQQ$1570043583407USfCf:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800jAQQQ$1570043583407USfCf:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800j@QQQ$1570043583406mAAxW:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j?QQQ$1570043583406mAAxW:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j>QQQ$1570043583406mAAxW:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j=QQQ$1570043582405uFoRY:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800j<QQQ$1570043582405uFoRY:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800 !  9 j)K|<3 n - j $,4|nQQQ$1570043747462YuUEF:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800eeQ$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800 eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800:eeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800 eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800P33Q$15:localhost:42455$14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800 seeQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800%eeQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800 |bQ9Q$1570043754467mNKfq:localhost:8800$98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 _Q3Q$1570043750466Tmiqu:localhost:8800$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 nQQQ$1570043748464QpNXV:localhost:8800$1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 nQQQ$1570043748463euAqZ:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 nQQQ$1570043730449XMaNb:localhost:8800$1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 nQQQ$1570043746461eQhrq:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 bQ9Q$1570043744459BIUYb:localhost:8800$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043744459BIUYb:localhost:8800$1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 _Q3Q$1570043741458PZvre:localhost:8800$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043739456qeuuS:localhost:8800$1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043738455KNDHf:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043737454adOjg:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043736453VtbeL:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 _Q3Q$1570043733451EJhWh:localhost:8800$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800 eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800>111$1:localhost:42455$0:localhost:42455!0:localhost:42455 (eeQ$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800@331$19:localhost:42455$18:localhost:42455!6:localhost:42455 eeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800i@331$18:localhost:42455$17:localhost:42455!6:localhost:42455 eeQ$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800@331$17:localhost:42455$16:localhost:42455!6:localhost:42455 eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800  x>QQa $1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3415}{"auth_events": [["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}], ["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}]], "prev_events": [["$1570043583407USfCf:localhost:8800", {"sha256": "UcETa66T+cVPdoboxdzAFBgpvLh9nUm+SCQEuo0njBQ"}]], "type": "m.room.history_visibility", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043585409JoQZw:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043585294, "hashes": {"sha256": "Smu+qz1L6boy1dCzb9ZLRTt7UrTuqxxh6Qma+6DzgKI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "muSOGW1DTAzH7Gd2qmJ8Ak8biJ18Nv+wes07EHAgvnWGFiTq+sutxFjBCQbRumrN0Xcgn22jmQSqpnpTbW59AQ"}}, "unsigned": {"age_ts": 1570043585294}}x=QQa $1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3414}{"auth_events": [["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}], ["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "prev_events": [["$1570043583406mAAxW:localhost:8800", {"sha256": "rLg/W1cRIhdgV122gIoIZgIPS4TZEHt4cQsgTga1JjQ"}]], "type": "m.room.history_visibility", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043584408XdGfO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043584892, "hashes": {"sha256": "H05Ij2w10pvTm23jMLfBvxALlGnp/me+9uBHyE9JdKs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "usxLiJtqUsVTQfWGTJWzijqndXWgiidE8fjocLDp0yxnfKkUXvlcRHrql0kL4mv0WOywPAWGbJ/0ovvDMuF7Bg"}}, "unsigned": {"age_ts": 1570043584892}}g<QQaq $1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3413}{"auth_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}], ["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}]], "prev_events": [["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}]], "type": "m.room.join_rules", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043583407USfCf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043583599, "hashes": {"sha256": "05skaJbC0YOXPIk+UypwqU3DeD3bkcwSuTkocZD/MDI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NpofgpcrprOFueYDCLW7R3Tju+OJ23ycYlzvaevF5k89cBiHpjfgi1+EDozGFmY570s3kHN17JR0xCEV15LCCw"}}, "unsigned": {"age_ts": 1570043583599}} 0vu(A x 4 [  V Q LGB=83.){$vTQe !PgNDjhhIBAXKryuGKy:localhost:8800$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYTQe !PgNDjhhIBAXKryuGKy:localhost:8800$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8UTQe !PgNDjhhIBAXKryuGKy:localhost:8800$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8UTQe !PgNDjhhIBAXKryuGKy:localhost:8800$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdETQe !PgNDjhhIBAXKryuGKy:localhost:8800$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8UTQe !PgNDjhhIBAXKryuGKy:localhost:8800$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgTQe !PgNDjhhIBAXKryuGKy:localhost:8800$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8XbkTQe ~!PgNDjhhIBAXKryuGKy:localhost:8800$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgTQe ~!PgNDjhhIBAXKryuGKy:localhost:8800$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5ATQe }!PgNDjhhIBAXKryuGKy:localhost:8800$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgTQe |!PgNDjhhIBAXKryuGKy:localhost:8800$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgTQe {!PgNDjhhIBAXKryuGKy:localhost:8800$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQTQe z!PgNDjhhIBAXKryuGKy:localhost:8800$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYTQe y!PgNDjhhIBAXKryuGKy:localhost:8800$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAT Qe x!PgNDjhhIBAXKryuGKy:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAT Qe w!PgNDjhhIBAXKryuGKy:localhost:8800$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9QT Qe v!vnFXnkCSfTbsSNKrtg:localhost:8800$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okucT Qe u!vnFXnkCSfTbsSNKrtg:localhost:8800$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYT Qe t!vnFXnkCSfTbsSNKrtg:localhost:8800$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUTQe s!vnFXnkCSfTbsSNKrtg:localhost:8800$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oTQe r!vnFXnkCSfTbsSNKrtg:localhost:8800$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8TQe q!vnFXnkCSfTbsSNKrtg:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQTQe p!vnFXnkCSfTbsSNKrtg:localhost:8800$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6YTQe o!jRuDexjFzIDOKbwDJQ:localhost:8800$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUTQe n!jRuDexjFzIDOKbwDJQ:localhost:8800$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcTQe m!jRuDexjFzIDOKbwDJQ:localhost:8800$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWETQe l!jRuDexjFzIDOKbwDJQ:localhost:8800$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8TQe k!jRuDexjFzIDOKbwDJQ:localhost:8800$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQTQe j!jRuDexjFzIDOKbwDJQ:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucT~Qe i!jRuDexjFzIDOKbwDJQ:localhost:8800$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wT}Qe h!KcXNWNfbLcYsBKZHIp:localhost:8800$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0T|Qe g!KcXNWNfbLcYsBKZHIp:localhost:8800$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1BhbygT{Qe f!KcXNWNfbLcYsBKZHIp:localhost:8800$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0TzQe e!KcXNWNfbLcYsBKZHIp:localhost:8800$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNATyQe d!KcXNWNfbLcYsBKZHIp:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4TxQe c!KcXNWNfbLcYsBKZHIp:localhost:8800$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg;wQ3 b!dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455AvQ? b!dBfASZrfiFeSKTjYJm:localhost:8800$60_msg_e:localhost:42455AuQ? a!dBfASZrfiFeSKTjYJm:localhost:8800$59_msg_d:localhost:42455;tQ3 a!dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455;sQ3 _!dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455JrQQ ^!dBfASZrfiFeSKTjYJm:localhost:8800$1570043593416CouYv:localhost:8800JqQQ ]!dBfASZrfiFeSKTjYJm:localhost:8800$1570043592415heiAH:localhost:8800JpQQ \!dBfASZrfiFeSKTjYJm:localhost:8800$1570043591414NuXxd:localhost:8800JoQQ [!dBfASZrfiFeSKTjYJm:localhost:8800$1570043590413Khvee:localhost:8800JnQQ Z!dBfASZrfiFeSKTjYJm:localhost:8800$1570043589412JaDTY:localhost:8800JmQQ Y!tcYctHPiaKzsKgrXlU:localhost:8800$1570043588411PDBWG:localhost:8800;lQ3 X!taANXnGBZntAreRurn:localhost:8800$55:localhost:42455  ,BQQa) $1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3419}{"auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}]], "prev_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}]], "type": "m.room.member", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-663", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-663:localhost:8800", "event_id": "$1570043590413Khvee:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043590585, "hashes": {"sha256": "MKuL6Mf6QmdPSAroALMEZv6r1XD/m6/E7m/vwo/tV4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QccJsKzOrbG9eqGBb+pTmJypiDNya6xEh0Ik/IxITQlv09KaAAji6us9zuuccDHkXozJfGad/nvcAlvyGc0GDA"}}, "unsigned": {"age_ts": 1570043590585}}AQQaC $1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3418}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-663:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043589412JaDTY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043589424, "hashes": {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fdLtiW2fDOIebAiFrgSSHcvnswKhvvy7e3dTlI8FwbjNaEJSM5cgACuU098CMQPoMkaP+PrXgIachLH8Ze7BAA"}}, "unsigned": {"age_ts": 1570043589424}}z@QQs $1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "txn_id": "613", "stream_ordering": 3417}{"auth_events": [["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}], ["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "prev_events": [["$1570043584408XdGfO:localhost:8800", {"sha256": "Cj88tjSsoYIIYghWBpXy9cWI3MWqUsjt8JygPLFbdEQ"}]], "type": "m.room.message", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"body": "Hello world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "event_id": "$1570043588411PDBWG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043588091, "hashes": {"sha256": "7WAfF70eiPbnw1JYO8puEStvftDqlqxd4zSGpt+ADqQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wh4oWerXR5N576wd4nf+Agx9zi5QNKzQ3RUf9WSsOI+c381vocIi3h1Qc73qx2Gi3vi2CvucuoclmdLADNxEAQ"}}, "unsigned": {"age_ts": 1570043588091}}R?3Q3 $55:localhost:42455!taANXnGBZntAreRurn:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3416}{"sender": "@__ANON__-34:localhost:42455", "hashes": {"sha256": "Fu45llOYgRjWhX0+oNdV3HqYVlcSl+dQO5fd2ga1nKs"}, "origin": "localhost:42455", "state_key": "@__ANON__-34:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "prev_events": [["$1570043585409JoQZw:localhost:8800", {"sha256": "w9BfSnRndJGZohgz0OdWVJpF9IFs0IHY2BNVMiOx6tQ"}]], "origin_server_ts": 1570043587006, "content": {"membership": "join"}, "event_id": "$55:localhost:42455", "auth_events": [["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}], ["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043583407USfCf:localhost:8800", {"sha256": "UcETa66T+cVPdoboxdzAFBgpvLh9nUm+SCQEuo0njBQ"}]], "signatures": {"localhost:42455": {"ed25519:1": "GhX8Gkdry187UCDa8o4fuTlLe5tK2NWsn0is8W3nY1nj9kNwOf+f+NoEp9O3Dg+OwHQLanqjCfgaj55JQs1mCw"}}, "unsigned": {}} ! 0 @ P ` p(8HXhxu3 ]@anon-20191002_181700-696:localhost:8800$2b$04$6XBbqqzzq6PaYqpikwMYhev.oRCZNoM5hSJSwGtCeKj1paJc3ODJe]u2 ]@anon-20191002_181700-695:localhost:8800$2b$04$Rq.zv/VhuDh4hABfdQ7HIu9iFcRmXkuaMTibkpKGamyS4/QMMEIgW]u1 ]@anon-20191002_181700-693:localhost:8800$2b$04$vR346sI78EPBO.1NFsS8yuX3kYJPeVF4Q0IjZrEWeKFO45BKZq0GG]u0 ]@anon-20191002_181700-692:localhost:8800$2b$04$OcF1wirPOtWdtoDG/W/duupuGDNPIfRoTg1JQSZuNDFq2S7Lox/Hq]u/ ]@anon-20191002_181700-691:localhost:8800$2b$04$siddBw9ettAjYKN2Du5CxO.cTg//4bZZr18uXQHGG7HxAfPER/pAS]{u. ]@anon-20191002_181700-690:localhost:8800$2b$04$fHJk5s/ee1ncZhw5/tlpE.l.42AxADCtB6vE4zlaoQ2Bo9uqG98Ze]ou- ]@anon-20191002_181700-689:localhost:8800$2b$04$8j1DXyhXjHn1wLUAO93v9eW3ooOquJLYRMqEgpEhoXqkWd4H9lx8m]nu, ]@anon-20191002_181700-688:localhost:8800$2b$04$dwN1GsQTW9aGFcqjk0rj1.ODNbh0hhkxm6qS7Y/x1qDfciWPm0Dpm]mu+ ]@anon-20191002_181700-687:localhost:8800$2b$04$IhF/xRQ/LPfeS5wiMM.zDOeRRpLALHUF7o1CgzwTiGrUM4JKaiHlW]lu* ]@anon-20191002_181700-686:localhost:8800$2b$04$8yo8a2RMlzlHNa/v55mUYuSdU2.6g/mVgaq.zglZAUbi2bUV/mxTK]ku) ]@anon-20191002_181700-685:localhost:8800$2b$04$nnvc8rzkqtPKSCGArG2dlObstCHyX7zsU4w82FDS/CZb2WsFe7Xgy]`u( ]@anon-20191002_181700-684:localhost:8800$2b$04$GwETD9ezYBSgRuHixITl4.wJVNB/TZcJ5ATGOyq/HHYzVd4Snj4rS]Wu' ]@anon-20191002_181700-683:localhost:8800$2b$04$J.0CdfAOhJXEmFBR1cdfyOhXRd2CwqA/Fj3mn.BBPkQiGxBbVoAwW]Mu& ]@anon-20191002_181700-682:localhost:8800$2b$04$euN0w.wOkkNkLvMCX26iM./uZw5qa4tuyfDkGh1520bUMwDXxlw7u]Fu% ]@anon-20191002_181700-681:localhost:8800$2b$04$IY6M8m5/pitSWBbU3Bkky.70EMhTN9XKgeiuUE/atz0T90ajY/G6S]=u$ ]@anon-20191002_181700-680:localhost:8800$2b$04$tfReZN8.NTw9KrJ7s71n5Okdyk5Zof8bY/0sESM3anlL6qTMza0Dq]7u# ]@anon-20191002_181700-679:localhost:8800$2b$04$07TP0dUnmKkMZ44ze1fLW.InONo23fD9sH02ZFb82Gpa6LYhVCsQG],u" ]@anon-20191002_181700-678:localhost:8800$2b$04$6Lumnh0qRUPaA2/AiZssguecEaF2r3MeH290mefbZiifmKlOfJY56],u! ]@anon-20191002_181700-677:localhost:8800$2b$04$30809gImoPRRpFOUw/r84OhyRhVNbhWx9GllQNqWVz.FvIIj2YEda]"u ]@anon-20191002_181700-676:localhost:8800$2b$04$DZ4/9o3WW8pvHQQL74r6IuwxjkQv05yyzMrA7iHWDQR4U8uvtV3Sm] u ]@anon-20191002_181700-675:localhost:8800$2b$04$RJqmSeqgz8V5LV1s/tqWxuRrMm9S4Derhk8LvTtQ2epwoBve59ib6]u ]@anon-20191002_181700-674:localhost:8800$2b$04$6nT3JBMNnqSGOKjhV4.3seho6JrXRgLT3eynD6IAWSg2dCCUGEPH.]u ]@anon-20191002_181700-673:localhost:8800$2b$04$YhJ8JX2blq3e5IGula2i7ONGlb62iKeyJylUA1mgTU6cSdU0e.z5e]u ]@anon-20191002_181700-672:localhost:8800$2b$04$hgZsqYdlNzZU1YWLusiUqOTAfRk7/opZ.Ui2rr0v2pFg43S9kkfV6]u ]@anon-20191002_181700-671:localhost:8800$2b$04$6Rs8iV.RZ.9gN.efGyerq.cnyL4wsItaVVhAMwCggXTXJC2dcua3y] u ]@anon-20191002_181700-670:localhost:8800$2b$04$PH3kSX7T4P9Ycc2frWWIYO3jPtO4hcMcVoHaCd4qKWSK77ghQ5Nr2]u ]@anon-20191002_181700-669:localhost:8800$2b$04$pkEZf6gXrs9fZ7i6Jbiy3.o0A4ZUzMn39icMusgqSoMCyfECKv0My]u ]@anon-20191002_181700-668:localhost:8800$2b$04$D46DKiF.fXm3oHCNFfWu4OA4v5QTW3ZH9dfvxNQQu0s4P3en0FRii]u ]@anon-20191002_181700-667:localhost:8800$2b$04$8HKogDol7kl5h5bW9/OEd.SHKlPQWsK4JDHIIFe7jrlYTVW1GimSu]u ]@anon-20191002_181700-666:localhost:8800$2b$04$aCwbz.mrJFp5qrZYXpVuMOMOKGoMCkxfk3ATXQq6CfgWi1xFQL7V.]u ]@anon-20191002_181700-665:localhost:8800$2b$04$wKoPYyjLSrrPfld1PHGF5e71y5rjhvLL4SldCehxD1tVB9h44SddC]u ]@anon-20191002_181700-664:localhost:8800$2b$04$.snh/5icdzzy0ofnmVfDx.pO83RwzPKWN9qOb2Yo3X/x0MkGyFZES]u ]@anon-20191002_181700-663:localhost:8800$2b$04$5UWO34FGmaitBFbX3GW5jewDpD98ZXrVje5gj8Ye7QQtcY5WyBASi] f(  | p * (JHu'$se/Q ]$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7om.room.join_rules!vnFXnkCSfTbsSNKrtg:localhost:8800mUmV@anon-20191002_181700-666:localhost:8800&re3Q ]$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8m.room.power_levels!vnFXnkCSfTbsSNKrtg:localhost:8800mRmS@anon-20191002_181700-666:localhost:8800 qe'Q ]$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQm.room.member!vnFXnkCSfTbsSNKrtg:localhost:8800mOmPX@anon-20191002_181700-666:localhost:8800p e'Q  ]$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Ym.room.create!vnFXnkCSfTbsSNKrtg:localhost:8800mLTmL@anon-20191002_181700-666:localhost:8800oe)Q E$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUm.room.message!jRuDexjFzIDOKbwDJQ:localhost:8800mCkmF:@__ANON__-37:localhost:42455ne'Q E$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcm.room.member!jRuDexjFzIDOKbwDJQ:localhost:8800mAmB?@__ANON__-37:localhost:42455,me?Q ]$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEm.room.history_visibility!jRuDexjFzIDOKbwDJQ:localhost:8800m;Bm=@anon-20191002_181700-665:localhost:8800$le/Q ]$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8m.room.join_rules!jRuDexjFzIDOKbwDJQ:localhost:8800m8Em9@anon-20191002_181700-665:localhost:8800&ke3Q ]$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQm.room.power_levels!jRuDexjFzIDOKbwDJQ:localhost:8800m5m6M@anon-20191002_181700-665:localhost:8800 je'Q ]$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucm.room.member!jRuDexjFzIDOKbwDJQ:localhost:8800m2m3@anon-20191002_181700-665:localhost:8800i e'Q  ]$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wm.room.create!jRuDexjFzIDOKbwDJQ:localhost:8800m.m.o@anon-20191002_181700-665:localhost:8800he'Q E$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0m.room.member!KcXNWNfbLcYsBKZHIp:localhost:8800m'm'@__ANON__-36:localhost:42455,ge?Q ]$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygm.room.history_visibility!KcXNWNfbLcYsBKZHIp:localhost:8800m!|m#l@anon-20191002_181700-664:localhost:8800$fe/Q ]$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0m.room.join_rules!KcXNWNfbLcYsBKZHIp:localhost:8800mmh@anon-20191002_181700-664:localhost:8800&ee3Q ]$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAm.room.power_levels!KcXNWNfbLcYsBKZHIp:localhost:8800mm@anon-20191002_181700-664:localhost:8800 de'Q ]$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4m.room.member!KcXNWNfbLcYsBKZHIp:localhost:8800mOm@anon-20191002_181700-664:localhost:8800c e'Q  ]$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgm.room.create!KcXNWNfbLcYsBKZHIp:localhost:8800mbm@anon-20191002_181700-664:localhost:8800b?)Q E $60_msg_e:localhost:42455m.room.message!dBfASZrfiFeSKTjYJm:localhost:8800 mm@__ANON__-35:localhost:42455a?)Q E $59_msg_d:localhost:42455m.room.message!dBfASZrfiFeSKTjYJm:localhost:8800 mm @__ANON__-35:localhost:42455`=3Q E$57_pl_x:localhost:42455m.room.power_levels!dBfASZrfiFeSKTjYJm:localhost:8800mm v@__ANON__-35:localhost:42455{_3'Q E$56:localhost:42455m.room.member!dBfASZrfiFeSKTjYJm:localhost:8800mzm@__ANON__-35:localhost:42455"^Q?Q ]$1570043593416CouYv:localhost:8800m.room.history_visibility!dBfASZrfiFeSKTjYJm:localhost:8800m<mY@anon-20191002_181700-663:localhost:8800]Q/Q ]$1570043592415heiAH:localhost:8800m.room.join_rules!dBfASZrfiFeSKTjYJm:localhost:8800mm/@anon-20191002_181700-663:localhost:8800\Q3Q ]$1570043591414NuXxd:localhost:8800m.room.power_levels!dBfASZrfiFeSKTjYJm:localhost:8800mmq@anon-20191002_181700-663:localhost:8800[Q'Q ]$1570043590413Khvee:localhost:8800m.room.member!dBfASZrfiFeSKTjYJm:localhost:8800mmX@anon-20191002_181700-663:localhost:8800  fxEQQa $1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3422}{"auth_events": [["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}], ["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}]], "prev_events": [["$1570043592415heiAH:localhost:8800", {"sha256": "zT5IGP+iTkvApDEZMWpKLerXj8BPf62bfZK/93q4Wjo"}]], "type": "m.room.history_visibility", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043593416CouYv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043593276, "hashes": {"sha256": "VN6Yf3LS/ExgYXTaL2vQEidF5LwE9QmtdjNf35A47lc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mIweU8Pv3Nh2HV6QIumX1ArhXwRvLzquQK648tGMa5iEuAkPJ8+IHlwc9juWewQ7jcaamY8dvxH1ZdpZzIFuDg"}}, "unsigned": {"age_ts": 1570043593276}}gDQQaq $1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3421}{"auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}]], "prev_events": [["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}]], "type": "m.room.join_rules", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043592415heiAH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043592396, "hashes": {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k4td453tTQ68gmFF+Yfu63BUaxw8v/xjlbGMBUG5Bg1vbgWosERdG6m8gh0oxyn9NSIGqSb/LiRCtnzjHNWCCw"}}, "unsigned": {"age_ts": 1570043592396}}+CQQay $1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3420}{"auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}]], "prev_events": [["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}]], "type": "m.room.power_levels", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"users": {"@anon-20191002_181700-663:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043591414NuXxd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043591695, "hashes": {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3b+HQPZHWa21Krp4NK/aKbJyP0oc2ui5qHe4W91Nfr2Dr8LsBm7LaM83Vg1sIothsH2t+6CP4VRq5BxD5ttJDw"}}, "unsigned": {"age_ts": 1570043591695}} "O:? c _ j " L;kp*/SO0Q'Ee ;!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg/Q'Ee :!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$fm4GaTaFZ3q0SieJ7jxN6_-ThXQh4dRhelGHOUfseSko.Q? e 9!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibility$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQg-Q/ e 8!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYi,Q3 e 7!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA +Q']e 6!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAc*Q' e 5!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q)Q'Ee 4!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY(Q'Ee 3!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455$j4AyAdLhDF4t55TkA_rLQjNLNGJGeYaaAnP1mP1z55wo'Q? e 2!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibility$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUg&Q/ e 1!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oi%Q3 e 0!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 $Q']e /!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQc#Q' e .!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Yg"Q/ e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 !Q']e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc Q'Ee -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLccQ' e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wiQ3 e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQQ'Ee ,!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcQ'Ee +!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$ODMJ-iUdhqDMHrNa-V288j4Ay7-4kL_az64iDroXTLwoQ? e *!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibility$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEgQ/ e )!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8iQ3 e (!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ Q']e '!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guccQ' e &!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wQ'Ee %!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0Q'Ee $!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455$_Rc7L0rJ0B4bInG4fEV4-qUkc7VYf0NWkeM6fgYzDBIoQ? e #!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibility$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1BhbyggQ/ e "!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rules$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0iQ3 e !!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA Q']e !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4cQ' e !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.create$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg]Q/ Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800 5T)FoD}R' { P % y N # w L ! u J  s H q*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  U*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  T*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  S*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ^ *Q!eLsrBEnrHolwCNgkFW:localhost:8800IM*Q!eLsrBEnrHolwCNgkFW:localhost:8800HL*Q!eLsrBEnrHolwCNgkFW:localhost:8800GK*Q!eLsrBEnrHolwCNgkFW:localhost:8800FJ*Q!eLsrBEnrHolwCNgkFW:localhost:8800EI*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eJPTUgihvSwaOhIkrC:localhost:8800-2*Q!eJPTUgihvSwaOhIkrC:localhost:8800,1*Q!eJPTUgihvSwaOhIkrC:localhost:8800+0*Q!eJPTUgihvSwaOhIkrC:localhost:8800*/*Q!eJPTUgihvSwaOhIkrC:localhost:8800).*Q!eJPTUgihvSwaOhIkrC:localhost:8800(-*Q!eJPTUgihvSwaOhIkrC:localhost:8800',*Q!eJPTUgihvSwaOhIkrC:localhost:8800&+*Q!eJPTUgihvSwaOhIkrC:localhost:8800%**Q!eJPTUgihvSwaOhIkrC:localhost:8800$)*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800  skLeQac$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3429}{"auth_events": ["$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "prev_events": ["$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "type": "m.room.power_levels", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"users": {"@anon-20191002_181700-664:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043599354, "hashes": {"sha256": "kLSLgAOq8qk3YHMXiEyKBix6mmeYfML3ylAbf/ulnBE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "68CmNXPA41cXOTovCwjvnOBqK6TypKxrsH6WZLLWjiYUdy9kCClKpJfGLwdyflF5lVrfvNfvnH4ZY1ze0vgHAg"}}, "unsigned": {"age_ts": 1570043599354}}vKeQay$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3428}{"auth_events": ["$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg"], "prev_events": ["$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg"], "type": "m.room.member", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-664", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-664:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043598671, "hashes": {"sha256": "ZLXv9oGnpNXNySB5mTDcHBROnTIk0/5aa3svolwqrMA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iGEDY+QSeVM5N+oaJr21hiyLt2R1B/CWH2DxiJ/RoiyaiXEb8gJiizmtx7O/gQpBIOnlgzeTtU+TJRiC/cK0Aw"}}, "unsigned": {"age_ts": 1570043598671}}iJeQa_$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3427}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-664:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043597666, "hashes": {"sha256": "otJcffuOtdIEcTYRB6fl4Bo26TW5sq3A1i5UxXYuwyU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uoKcPjhHdg1jZ3l3Kdpy9GnAzHLktLEEbdbVDGSlhMEI1e67X4kzvD8qQNSJL0/btn1WY0UmmUjMD1SHW9j4Dg"}}, "unsigned": {"age_ts": 1570043597666}}"I?Qcw $60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": false, "stream_ordering": 3426}{"type": "m.room.message", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "origin": "localhost:42455", "depth": 11, "hashes": {"sha256": "Y9LExr0rZULJCFRY+rN8lA9n+x+Fv9WnUhBI3lA0WcQ"}, "sender": "@__ANON__-35:localhost:42455", "event_id": "$60_msg_e:localhost:42455", "auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}], ["$56:localhost:42455", {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}]], "content": {"body": "nothing to see"}, "origin_server_ts": 1570043594715, "prev_events": [["$59_msg_d:localhost:42455", {}]], "signatures": {"localhost:42455": {"ed25519:1": "63jNfsolCbNSKPHWZMsD61HAovTmEcuR+7Yvo3RFt7Rdi2MlEYZhRrN06d8Y7Wrrp57OcnR5/7l5HLSwaUnYAQ"}}, "unsigned": {}} ?GM Q  U  ] ! e $ l ,s7v5{9?OUe)p4=M ]  @anon-20191002_181700-701:localhost:8800m&\R>L ]  @anon-20191002_181700-700:localhost:8800m&\?9K ]@anon-20191002_181700-701:localhost:8800a&\9J ]@anon-20191002_181700-700:localhost:8800a&\>I ]  @anon-20191002_181700-698:localhost:8800m&\n9H ]@anon-20191002_181700-697:localhost:8800a&\9G ]@anon-20191002_181700-698:localhost:8800a&\9F ]@anon-20191002_181700-696:localhost:8800a&\9E ]@anon-20191002_181700-695:localhost:8800a&\9D ]@anon-20191002_181700-693:localhost:8800a&\9C ]@anon-20191002_181700-692:localhost:8800a&\>B ]  @anon-20191002_181700-691:localhost:8800m&\[9A ]@anon-20191002_181700-691:localhost:8800a&\>@ ]  @anon-20191002_181700-690:localhost:8800m&\m9? ]@anon-20191002_181700-690:localhost:8800a&\9> ]@anon-20191002_181700-689:localhost:8800a&\9= ]@anon-20191002_181700-688:localhost:8800a&\9< ]@anon-20191002_181700-687:localhost:8800a&\9; ]@anon-20191002_181700-686:localhost:8800a&\>: ]  @anon-20191002_181700-685:localhost:8800m&\99 ]@anon-20191002_181700-685:localhost:8800a&\>8 ]  @anon-20191002_181700-684:localhost:8800m&\f97 ]@anon-20191002_181700-684:localhost:8800a&\?6 ] @anon-20191002_181700-683:localhost:8800m&\,95 ]@anon-20191002_181700-683:localhost:8800a&\?4 ] @anon-20191002_181700-682:localhost:8800m&\C93 ]@anon-20191002_181700-682:localhost:8800a&\>2 ]  @anon-20191002_181700-681:localhost:8800m&\;91 ]@anon-20191002_181700-681:localhost:8800a&\>0 ]  @anon-20191002_181700-680:localhost:8800m&\C>- ]  @anon-20191002_181700-678:localhost:8800m&\89/ ]@anon-20191002_181700-680:localhost:8800a&\>. ]  @anon-20191002_181700-679:localhost:8800m&\C9, ]@anon-20191002_181700-679:localhost:8800a&\9+ ]@anon-20191002_181700-678:localhost:8800a&\=* ]  @anon-20191002_181700-677:localhost:8800m&\9) ]@anon-20191002_181700-677:localhost:8800a&\=( ]  @anon-20191002_181700-676:localhost:8800m&\9' ]@anon-20191002_181700-676:localhost:8800a&\>& ]  @anon-20191002_181700-675:localhost:8800m&\C9% ]@anon-20191002_181700-675:localhost:8800a&\=$ ]  @anon-20191002_181700-674:localhost:8800m&\=# ]  @anon-20191002_181700-673:localhost:8800m&\9" ]@anon-20191002_181700-674:localhost:8800a&\9! ]@anon-20191002_181700-673:localhost:8800a&\= ]  @anon-20191002_181700-672:localhost:8800m&\9 ]@anon-20191002_181700-672:localhost:8800a&\= ]  @anon-20191002_181700-671:localhost:8800m&\9 ]@anon-20191002_181700-671:localhost:8800a&\? ] @anon-20191002_181700-670:localhost:8800m&\9 ]@anon-20191002_181700-670:localhost:8800a&\? ] @anon-20191002_181700-669:localhost:8800m&\9 ]@anon-20191002_181700-669:localhost:8800a&\@ ]@anon-20191002_181700-668:localhost:8800m&\ 9 ]@anon-20191002_181700-668:localhost:8800a&\> ]  @anon-20191002_181700-667:localhost:8800m&\j9 ]@anon-20191002_181700-667:localhost:8800a&\> ]  @anon-20191002_181700-666:localhost:8800m&\:9 ]@anon-20191002_181700-666:localhost:8800a&\> ]  @anon-20191002_181700-665:localhost:8800m&\C9 ]@anon-20191002_181700-665:localhost:8800a&\> ]  @anon-20191002_181700-664:localhost:8800m&\C9 ]@anon-20191002_181700-664:localhost:8800a&\ 5 ih i g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFiN2dpPW55Omh4dGtpT0MKMDAyZnNpZ25hdHVyZSAG_4rwETz8mescypyvlXeArGSgGB-f7oN8uYsSEuwbRAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENpMXN5VmlBO3h5NG9FQVcKMDAyZnNpZ25hdHVyZSCYuwn9jELEvJuUHDFlpMhBHDbPvBhF57TAUIgnygORqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDsyRFAxYTB3d0JfaCo5NEoKMDAyZnNpZ25hdHVyZSCiZWeiN5k8q08QkTiOIMXaDEtS78p3BtHDiD4U6mLWdAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNFOkdjeUY7MjAmQUdEVysKMDAyZnNpZ25hdHVyZSCrhY5xAnfaaIsWrJfYKh4tW-EB9Tfc_TZ3e6e0bi60IAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNjNHd1UUpjOW9UNUF4UXoKMDAyZnNpZ25hdHVyZSCPIUVN9lWQ8BoblKnX6rhKPpx4Xu7DL-voKOjr7T_ijgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExOWnhedGV-Lno9XnE4VX4KMDAyZnNpZ25hdHVyZSA5Kn1fYh9S-SPR2I_R6omhBs-F-gPAuYLrGasgatD_KQo /C j8pN+ ] h 6  p ? y H  | I }JMR!],h7s@ 0Q Q!QWLJZmJqjWZjVOjdYF:localhost:8800%0P Q!ZWANpHlizyLrUiVvAm:localhost:8800%.O Q  !TkluVzxeeCbMtbFWWS:localhost:8800%.N Q  !ELBgBaMSIMNkjFSumH:localhost:8800%.M Q  !CKNftKKCaOCVUyYWNY:localhost:8800%.L Q  !cvXpMzcxNNhsNttxvt:localhost:8800%.K Q  !jlGSdNttccYxjfLkwW:localhost:8800%.J Q  !ZNIjCvcWhgcwskanjT:localhost:8800%.I Q  !NJdkYMskQwIpIWlWkn:localhost:8800%.H Q  !jGQNGXehugtTvjUGKI:localhost:8800%.G Q  !VNdqhtoDkyMoQdMTtM:localhost:8800%.F Q  !ulbQzxdPXzuvNoqqgU:localhost:8800%.E Q  !pTvdDtkgovsIdAdxCm:localhost:8800%.D Q  !vxEMWYTUdzvLyVZNzJ:localhost:8800%.C Q  !CAGaRyRvrohDRBsrWH:localhost:8800%.B Q  !hNCwypIzdDZDVmCEfd:localhost:8800%.A Q  !eZjhYVNpwdogVDKHCk:localhost:8800%0@ Q!sBcwyPoXKgnSGVTjNR:localhost:8800%.? Q  !WgXzOXLTeqaGfiDFhL:localhost:8800%0> Q!LFBhoxJpmBqFrwEzGP:localhost:8800%0= Q!URpLZLuBfVcfHVTBGS:localhost:8800%.< Q  !YaLuQzmJKSMTSFEqjO:localhost:8800%0; Q!cOFSwLSkxZECJMvjjZ:localhost:8800%.: Q   !eGEEtFXUXuZDImkeql:localhost:8800%09 Q!ZOpRjvUhkWYJBFJZeO:localhost:8800%08 Q!BPNyKqmwcpGxIbGFZG:localhost:8800%07 Q!ZOwibbprUCQrSJQCrx:localhost:8800%06 Q!qtelAHlSkrqEFmlCqS:localhost:8800%05 Q!NcJYmIbgjsaKJOzBcs:localhost:8800%04 Q!biBIcqnGelHvLnpkOu:localhost:8800%03 Q!yNfCaBMPezurwkJRAX:localhost:8800%02 Q!BKZJsoFNhiLTDYNclB:localhost:8800%01 Q!aiOswwhoZqjhcjzbzc:localhost:8800%00 Q!IYxUkyFHOgvhLpdkOA:localhost:8800%0/ Q!anErKtXIsVKEEsrzWM:localhost:8800%0. Q!TcCLuIBUrtFqghDgay:localhost:8800%0- Q!yWhIsLsgNVGcnELrDS:localhost:8800%., Q  !wCsDjKBtuUbrmZgjsB:localhost:8800%.+ Q  !SpXEytywhTbAftyVBr:localhost:8800%.* Q  !itfjLXhEaORJLkbfVS:localhost:8800%.) Q  !GsjDgpaxdwYfnefiWO:localhost:8800%0( Q!jomrpmwwQQtghscizn:localhost:8800%.' Q  !ABHbfUdkHCJksMsaUt:localhost:8800%.& Q  !DntdfAPfCfgdOoRMdl:localhost:8800%.% Q  !THHfVSOSWiBQTHRAnJ:localhost:8800%/$ Q !KetCYFxrTxawNOGnOf:localhost:8800%/# Q !JiUawCFQnodcpssOfK:localhost:8800%/" Q !NgkQVVUNzoyCVPtckM:localhost:8800%/! Q !lgejtcwlywOoIXwEgy:localhost:8800%/ Q !PUIxAaiCnbqaVbawGu:localhost:8800%/ Q !OJilSqnQvLgoXSqRaW:localhost:8800%. Q  !PVyTvKbqnjSXfGWAMy:localhost:8800%./ Q !SrwdtDytJDUBVZOueF:localhost:8800%  3 !13:localhost:42455%  3 !12:localhost:42455%/ Q !nhbUIcIbhuXkRqfeDa:localhost:8800%! 3!11:localhost:42455%  3 !10:localhost:42455% 1 !9:localhost:42455%/ Q !SnROoiDBapNNtMmKnT:localhost:8800%/ Q !uGpSboYkgxVNOqNeUG:localhost:8800%/ Q !DSFBpkqfnvBQbGoMUK:localhost:8800%/ Q !ZKPJvrCZHMHPEksYDc:localhost:8800%/ Q !PgNDjhhIBAXKryuGKy:localhost:8800%/ Q !vnFXnkCSfTbsSNKrtg:localhost:8800%/ Q !jRuDexjFzIDOKbwDJQ:localhost:8800%/ Q !KcXNWNfbLcYsBKZHIp:localhost:8800% 9 D }  *cX>"XC e]]Q=$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI@anon-20191002_181700-675:localhost:8800@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:8800joinanon-20191002_181700-675* Q]]3=$1570043670433bjAzo:localhost:8800@anon-20191002_181700-674:localhost:8800@anon-20191002_181700-674:localhost:8800!11:localhost:42455joinanon-20191002_181700-674* Q]]3=$1570043668432TfiHj:localhost:8800@anon-20191002_181700-673:localhost:8800@anon-20191002_181700-673:localhost:8800!11:localhost:42455joinanon-20191002_181700-673k 3EE3$72:localhost:42455@__ANON__-47:localhost:42455@__ANON__-47:localhost:42455!11:localhost:42455join* Q]]3=$1570043664431IMLSL:localhost:8800@anon-20191002_181700-672:localhost:8800@anon-20191002_181700-672:localhost:8800!10:localhost:42455joinanon-20191002_181700-672k 3EE3$69:localhost:42455@__ANON__-46:localhost:42455@__ANON__-46:localhost:42455!10:localhost:42455join) Q]]1=$1570043660430kLPpN:localhost:8800@anon-20191002_181700-671:localhost:8800@anon-20191002_181700-671:localhost:8800!9:localhost:42455joinanon-20191002_181700-671j 3EE1$66:localhost:42455@__ANON__-45:localhost:42455@__ANON__-45:localhost:42455!9:localhost:42455joinz 3EEQ$62:localhost:42455@__ANON__-43:localhost:42455@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800join9 Q]]Q=$1570043653425AhyPB:localhost:8800@anon-20191002_181700-670:localhost:8800@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800joinanon-20191002_181700-670z 3EEQ$61:localhost:42455@__ANON__-41:localhost:42455@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800join9 Q]]Q=$1570043646419zIOAX:localhost:8800@anon-20191002_181700-669:localhost:8800@anon-20191002_181700-669:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800joinanon-20191002_181700-669 eEEQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs@__ANON__-40:localhost:42455@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800joinC e]]Q=$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA@anon-20191002_181700-668:localhost:8800@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800joinanon-20191002_181700-668 eEEQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc@__ANON__-40:localhost:42455@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800joinC e]]Q=$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU@anon-20191002_181700-668:localhost:8800@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800joinanon-20191002_181700-668 eEEQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg@__ANON__-39:localhost:42455@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800joinC e]]Q=$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA@anon-20191002_181700-667:localhost:8800@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800joinanon-20191002_181700-667 eEEQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY@__ANON__-38:localhost:42455@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800joinC e]]Q=$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ@anon-20191002_181700-666:localhost:8800@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800joinanon-20191002_181700-666 eEEQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc@__ANON__-37:localhost:42455@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800joinC e]]Q=$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc@anon-20191002_181700-665:localhost:8800@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800joinanon-20191002_181700-665 eEEQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0@__ANON__-36:localhost:42455@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800joinC e]]Q=$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4@anon-20191002_181700-664:localhost:8800@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:8800joinanon-20191002_181700-664  teQa$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3469}{"auth_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "prev_events": ["$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ"], "type": "m.room.history_visibility", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043639589, "hashes": {"sha256": "ZocEfmTtDXJ5i8tMLAoZFe8mH0sa1Px+8UQKRsBkJ1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8mrnqmxvtm2iEPg5AJubefOsK0+MBSqpMYaGfX5S9dRSED2VDUjvpXxkRVstI8Jqs0zeUl/ESs1IKUwnaNukDg"}}, "unsigned": {"age_ts": 1570043639589}}tseQau$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3468}{"auth_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "prev_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4"], "type": "m.room.join_rules", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043638477, "hashes": {"sha256": "yt8xkSW32NJAXNmL2G2/oHow1g3TCzr1rLuCHvUmwwE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2e+wfaTHDLycDJkw8aKAiVmpZJEPnm9zIQpnyziX+XDMXzXz3yo6S2FLIES7S6/Vu6S6qhGrxwxJr/bR/3srDw"}}, "unsigned": {"age_ts": 1570043638477}}kreQac$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3467}{"auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "prev_events": ["$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "type": "m.room.power_levels", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"users": {"@anon-20191002_181700-668:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043637576, "hashes": {"sha256": "AE5MNWerSVmvRTDVLPU0mOx+l1Rm9H4/LugZc1CYGSQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tYpthLiEQEHuZDk0Dqqe2CTFa92qtpB3nwh8k6ZWp9HKSWf6hVxz3VW1iHGklcrWW2uvA4Zh7QC6PWbeYHOPAQ"}}, "unsigned": {"age_ts": 1570043637576}}vqeQay$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3466}{"auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s"], "prev_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s"], "type": "m.room.member", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-668", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-668:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043636870, "hashes": {"sha256": "Wi6INjByrha76Pswv58MljBXEY3Y0hBioBu4HTbxFLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iE32Y+sMJ3xiA+1s+ViFPSrIsKhUrzSfZMMiHynAICkmD4GXImsAyZTLt+jgor4dpUVno4HgDDBGHHhir2afCg"}}, "unsigned": {"age_ts": 1570043636870}}  7 k 9mfd]c@anon-20191002_181700-687:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAo127.0.0.1d]c@anon-20191002_181700-686:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwo127.0.0.1~d]c@anon-20191002_181700-685:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAo127.0.0.1}d]c@anon-20191002_181700-684:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogo127.0.0.1|d]c@anon-20191002_181700-683:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQo127.0.0.1{d]c@anon-20191002_181700-682:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQo127.0.0.1zd]c@anon-20191002_181700-681:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQo127.0.0.1yd]c@anon-20191002_181700-680:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV1PUNQTkp1STtPSGFFRk0KMDAyZnNpZ25hdHVyZSCA0p0-R1uRS5Sl-AAOAB4_RaJ42AnhExKpRtMDgcydkQo127.0.0.1xa[a@anon-20191002_181700-67:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8Cg127.0.0.19d]c@anon-20191002_181700-679:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxGWjBOUGZPUnMtTF4jUGgKMDAyZnNpZ25hdHVyZSAiw3cANp-fhXAprmTW_Sr8B9dS78iibaBkmlcSawciYQo127.0.0.1w  ~iPeQa_$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3433}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-665:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043604483, "hashes": {"sha256": "5edIZ5jKGYS2qdYlbfCpMSo6V/p5AbOqdvN4MGKRRYs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cpa2c4AmvYkLO66G//AJ/KNczWkk6WprJk80WBdDa+3b/cwLS9NCJuYavDvF9fxoCrwKR2DynRpthugU6fi2AQ"}}, "unsigned": {"age_ts": 1570043604483}}}OeQ33$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3432}{"auth_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA", "$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0"], "content": {"membership": "join"}, "origin_server_ts": 1570043602717, "prev_events": ["$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg"], "type": "m.room.member", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-36:localhost:42455", "depth": 6, "hashes": {"sha256": "pIeZSI5c0+sgU8C1lTcHOegYGBtt0QwCJUXqQ5+pQCQ"}, "sender": "@__ANON__-36:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "/c2tJNqj/70pm6jVgKTN14nnKLLRSno4Te3od6hNueZHCGI5FGR3Hgume2NvM7I2TnMOfT5JsZj9gVavsGc/DA"}}, "unsigned": {}}NeQa$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3431}{"auth_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA", "$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "prev_events": ["$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0"], "type": "m.room.history_visibility", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043601276, "hashes": {"sha256": "NejWE+liz/1k+r5gqpmRGskDmwfIi8rrSNiEAZdC/8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OFPoglIcIrS4I6DpJQTKKd1WcTxBY2zH/XIWGMVwo/vCBHCTHQ5A/gAgL0+Ukc80s/9kxdUqKGINzw268tM1DA"}}, "unsigned": {"age_ts": 1570043601276}}tMeQau$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3430}{"auth_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA", "$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "prev_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA"], "type": "m.room.join_rules", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043600350, "hashes": {"sha256": "wQAeGwloDtffdoM+iBYWBVsUeVOJUXDJ1WGbIwXD8EE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yYDFBNMD6iz82+EKf+pevKeILA5kN5F6jDZywbLI07WNicgJLeovOZxPzYTefAgx3xt8211vkIvsMlAHaKTeBw"}}, "unsigned": {"age_ts": 1570043600350}} a} { y w u sqomkigeca~eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~~eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800~}eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800~|eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~{eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800~zeeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800~yeeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~xeeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800~weeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800~veeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~ueeQ$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~teeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800~seeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~reeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800~qeeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800~peeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~oeeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800~neeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800~meeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~leeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800~keeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800~jeeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~ieeQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~heeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800~geeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800~feeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800~eeeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800~deeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800~ceeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800~beeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800~aeeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800 B; kyN# u !wR')@L!uJsH ' { P %qF# { P % y N # # { P % y N # w LXp*Q!OXpGdKbowFUTChPdmF:localhost:8800 #*Q!OXpGdKbowFUTChPdmF:localhost:8800 &*Q!OXpGdKbowFUTChPdmF:localhost:8800 %*Q!OXpGdKbowFUTChPdmF:localhost:8800 $*Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW*Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV*Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU*Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT*Q!OMkiVTuuOEeiFAXtUY:localhost:8800SS R*Q!PCgUmZOwWmtDsuFqXg:localhost:8800*0*Q!PCgUmZOwWmtDsuFqXg:localhost:8800'-*Q!PCgUmZOwWmtDsuFqXg:localhost:8800$**Q!PCgUmZOwWmtDsuFqXg:localhost:8800!'*Q!PCgUmZOwWmtDsuFqXg:localhost:8800#*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800,*Q!OWGKxAmTrHLciIdrJi:localhost:8800+*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OMkiVTuuOEeiFAXtUY:localhost:8800[[*Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ*Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY*Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX*Q!OXpGdKbowFUTChPdmF:localhost:8800 "*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 I *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 H *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 G *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 F *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 E *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 D *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 C *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 B  L#*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800* %*Q!OJilSqnQvLgoXSqRaW:localhost:8800 }*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800/*Q!OWGKxAmTrHLciIdrJi:localhost:8800.+*Q!OWGKxAmTrHLciIdrJi:localhost:8800-TV*Q!OWGKxAmTrHLciIdrJi:localhost:88000 B`8sY? w O ' _ 7  o G   W /  g ? wO'_7oG%JQ !QWLJZmJqjWZjVOjdYF:localhost:8800%IQ !ZWANpHlizyLrUiVvAm:localhost:8800%HQ !TkluVzxeeCbMtbFWWS:localhost:8800%GQ !ELBgBaMSIMNkjFSumH:localhost:8800%FQ !CKNftKKCaOCVUyYWNY:localhost:8800%EQ !cvXpMzcxNNhsNttxvt:localhost:8800%DQ !jlGSdNttccYxjfLkwW:localhost:8800%CQ !ZNIjCvcWhgcwskanjT:localhost:8800%BQ !NJdkYMskQwIpIWlWkn:localhost:8800%AQ !jGQNGXehugtTvjUGKI:localhost:8800%@Q !VNdqhtoDkyMoQdMTtM:localhost:8800%?Q !ulbQzxdPXzuvNoqqgU:localhost:8800%>Q !pTvdDtkgovsIdAdxCm:localhost:8800%=Q !vxEMWYTUdzvLyVZNzJ:localhost:8800%<Q !CAGaRyRvrohDRBsrWH:localhost:8800%;Q !hNCwypIzdDZDVmCEfd:localhost:8800%:Q !eZjhYVNpwdogVDKHCk:localhost:8800%9Q !sBcwyPoXKgnSGVTjNR:localhost:8800%8Q !WgXzOXLTeqaGfiDFhL:localhost:8800%7Q !LFBhoxJpmBqFrwEzGP:localhost:8800%6Q !URpLZLuBfVcfHVTBGS:localhost:8800%5Q !YaLuQzmJKSMTSFEqjO:localhost:8800%4Q !cOFSwLSkxZECJMvjjZ:localhost:8800%3Q !eGEEtFXUXuZDImkeql:localhost:8800%2Q !ZOpRjvUhkWYJBFJZeO:localhost:8800%1Q !BPNyKqmwcpGxIbGFZG:localhost:8800%0Q !ZOwibbprUCQrSJQCrx:localhost:8800%/Q !qtelAHlSkrqEFmlCqS:localhost:8800%.Q !NcJYmIbgjsaKJOzBcs:localhost:8800%-Q !biBIcqnGelHvLnpkOu:localhost:8800%,Q !yNfCaBMPezurwkJRAX:localhost:8800%+Q !BKZJsoFNhiLTDYNclB:localhost:8800%*Q !aiOswwhoZqjhcjzbzc:localhost:8800%)Q !IYxUkyFHOgvhLpdkOA:localhost:8800%(Q !anErKtXIsVKEEsrzWM:localhost:8800%'Q !TcCLuIBUrtFqghDgay:localhost:8800%&Q !yWhIsLsgNVGcnELrDS:localhost:8800%%Q !wCsDjKBtuUbrmZgjsB:localhost:8800%$Q !SpXEytywhTbAftyVBr:localhost:8800%#Q !itfjLXhEaORJLkbfVS:localhost:8800%"Q !GsjDgpaxdwYfnefiWO:localhost:8800%!Q !jomrpmwwQQtghscizn:localhost:8800% Q !ABHbfUdkHCJksMsaUt:localhost:8800%Q !DntdfAPfCfgdOoRMdl:localhost:8800%Q !THHfVSOSWiBQTHRAnJ:localhost:8800%Q !KetCYFxrTxawNOGnOf:localhost:8800%Q !JiUawCFQnodcpssOfK:localhost:8800%Q !NgkQVVUNzoyCVPtckM:localhost:8800%Q !lgejtcwlywOoIXwEgy:localhost:8800%Q !PUIxAaiCnbqaVbawGu:localhost:8800%Q !OJilSqnQvLgoXSqRaW:localhost:8800%Q !SrwdtDytJDUBVZOueF:localhost:8800%Q !PVyTvKbqnjSXfGWAMy:localhost:88003!13:localhost:424553!12:localhost:42455%Q !nhbUIcIbhuXkRqfeDa:localhost:88003!11:localhost:424553!10:localhost:424551!9:localhost:42455%Q !SnROoiDBapNNtMmKnT:localhost:8800%Q !uGpSboYkgxVNOqNeUG:localhost:8800% Q !DSFBpkqfnvBQbGoMUK:localhost:8800% Q !ZKPJvrCZHMHPEksYDc:localhost:8800% Q !PgNDjhhIBAXKryuGKy:localhost:8800% Q !vnFXnkCSfTbsSNKrtg:localhost:8800% Q !jRuDexjFzIDOKbwDJQ:localhost:8800  TeQa$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3437}{"auth_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "prev_events": ["$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8"], "type": "m.room.history_visibility", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043607874, "hashes": {"sha256": "b1STjIRvcrp9UVHm5oDdbRoocSvlyQpJXbz3vZryVZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gDRmenhBECSsWkoqIPRjMGSHfMwLcj419YENUgvTYJh0jmsdSurVMcVRmagkthwi7oCN48wJ5qexDiNrdGtPDA"}}, "unsigned": {"age_ts": 1570043607874}}tSeQau$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3436}{"auth_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "prev_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ"], "type": "m.room.join_rules", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043607109, "hashes": {"sha256": "n72oYhExM63/z5GLa2EQRfjoSLPEVh0WfaSYFrRB8Fk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RV30A1pQ5KKH5B4mNZSgkc71dSwd/NacCKdDf5tStcUQnVJdImhQMOEt6PkhdcHb/XbDhqSuZAKAvjNhvufbCw"}}, "unsigned": {"age_ts": 1570043607109}}kReQac$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3435}{"auth_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "prev_events": ["$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "type": "m.room.power_levels", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"users": {"@anon-20191002_181700-665:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043606295, "hashes": {"sha256": "IY6IBCgq/9tSuQL3o91J7HnpqASFZ1ISNAkmANLinO8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k9D6PRTTu7IgYIJyiYl4MflC00MxW8JzLQ7EgS6J1B+eH6CBpgcT83ZzFrNjIqVN22OAmAGQWuTXn+v2LBJFDg"}}, "unsigned": {"age_ts": 1570043606295}}vQeQay$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3434}{"auth_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w"], "prev_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w"], "type": "m.room.member", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-665", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-665:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043605650, "hashes": {"sha256": "XOPMnHitn/p48u+qyKFxH3+Nh4v+gDFgR4GW5ImNdl0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OrvNQQtx5aY1t5QEheknPDeYXFxUq+iGuZWXfyPE2D59TaMy5NduWqNmyKOoHxddHYqVUqwhqov7SeyFl0a9Bw"}}, "unsigned": {"age_ts": 1570043605650}} ,ij8p> v E  } K   Q  W % i ] +c11e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI 1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8S1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw11e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0K1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAv1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gs1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Qw1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo31e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl01e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk 1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0F1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQm1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI)1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIR0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMc1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w 1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk 8L(t,xT L(tP x T | 4 \  < d D lHh$X,!E@__ANON__-36:localhost:42455E]=@anon-20191002_181700-664:localhost:8800anon-20191002_181700-664!E@__ANON__-35:localhost:42455E ]=@anon-20191002_181700-663:localhost:8800anon-20191002_181700-663! E@__ANON__-34:localhost:42455E ]=@anon-20191002_181700-662:localhost:8800anon-20191002_181700-662E ]=@anon-20191002_181700-661:localhost:8800anon-20191002_181700-661! E@__ANON__-33:localhost:42455E]=@anon-20191002_181700-660:localhost:8800anon-20191002_181700-660E]=@anon-20191002_181700-659:localhost:8800anon-20191002_181700-659!E@__ANON__-32:localhost:42455E]=@anon-20191002_181700-658:localhost:8800anon-20191002_181700-658!E@__ANON__-31:localhost:42455E;]=@anon-20191002_181700-691:localhost:8800anon-20191002_181700-691E:]=@anon-20191002_181700-690:localhost:8800anon-20191002_181700-690!9E@__ANON__-58:localhost:42455E8]=@anon-20191002_181700-685:localhost:8800anon-20191002_181700-685!7E@__ANON__-57:localhost:42455E6]=@anon-20191002_181700-684:localhost:8800anon-20191002_181700-684!5E@__ANON__-56:localhost:42455E4]=@anon-20191002_181700-683:localhost:8800anon-20191002_181700-683!3E@__ANON__-55:localhost:42455E2]=@anon-20191002_181700-682:localhost:8800anon-20191002_181700-682!1E@__ANON__-54:localhost:42455E0]=@anon-20191002_181700-681:localhost:8800anon-20191002_181700-681!/E@__ANON__-53:localhost:42455E.]=@anon-20191002_181700-680:localhost:8800anon-20191002_181700-680!-E@__ANON__-52:localhost:42455E,]=@anon-20191002_181700-679:localhost:8800anon-20191002_181700-679E+]=@anon-20191002_181700-678:localhost:8800anon-20191002_181700-678E*]=@anon-20191002_181700-677:localhost:8800anon-20191002_181700-677!)E@__ANON__-51:localhost:42455!(E@__ANON__-50:localhost:42455E']=@anon-20191002_181700-676:localhost:8800anon-20191002_181700-676!&E@__ANON__-49:localhost:42455!%E@__ANON__-48:localhost:42455E$]=@anon-20191002_181700-675:localhost:8800anon-20191002_181700-675E#]=@anon-20191002_181700-674:localhost:8800anon-20191002_181700-674E"]=@anon-20191002_181700-673:localhost:8800anon-20191002_181700-673!!E@__ANON__-47:localhost:42455E ]=@anon-20191002_181700-672:localhost:8800anon-20191002_181700-672!E@__ANON__-46:localhost:42455E]=@anon-20191002_181700-671:localhost:8800anon-20191002_181700-671!E@__ANON__-45:localhost:42455!E@__ANON__-43:localhost:42455E]=@anon-20191002_181700-670:localhost:8800anon-20191002_181700-670!E@__ANON__-41:localhost:42455E]=@anon-20191002_181700-669:localhost:8800anon-20191002_181700-669!E@__ANON__-40:localhost:42455E]=@anon-20191002_181700-668:localhost:8800anon-20191002_181700-668!E@__ANON__-39:localhost:42455E]=@anon-20191002_181700-667:localhost:8800anon-20191002_181700-667!E@__ANON__-38:localhost:42455E]=@anon-20191002_181700-666:localhost:8800anon-20191002_181700-666!E@__ANON__-37:localhost:42455E]=@anon-20191002_181700-665:localhost:8800anon-20191002_181700-665   (;vXeQay$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3441}{"auth_events": ["$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y"], "prev_events": ["$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y"], "type": "m.room.member", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-666", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-666:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043613181, "hashes": {"sha256": "HaW7rOsW/Xo2Ksabu7GFy5Ay5JcP0W4PW8+ufXhArkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H6jT5NX6tmWRJe0nOuCbpY8dl2wL0MoELRnVDKLaua9a+7q9Jlg2ZWQsimnxTQXOFICS8JhyZmr6BznI0MoFDQ"}}, "unsigned": {"age_ts": 1570043613181}}iWeQa_$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3440}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-666:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043612244, "hashes": {"sha256": "4fJhlOD8oH9XmyvSVoXI9aUPhX6c3r91M/ixtibEm3g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wp0O+CJvZbEJjApmjqgjVV43t+4xazaRaIAPpApYRkRjq+5jZ4JeTfITBZPrltUtU/q6q3BLSZHvt/+CoOx8CA"}}, "unsigned": {"age_ts": 1570043612244}}SVeQc1$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU!jRuDexjFzIDOKbwDJQ:localhost:8800{"outlier": false, "stream_ordering": 3439}{"hashes": {"sha256": "+ij73gBQeJGbVpSdLW2ouParKb9v6d1m68V59XJOu5g"}, "sender": "@__ANON__-37:localhost:42455", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "type": "m.room.message", "depth": 7, "origin": "localhost:42455", "origin_server_ts": 1570043609963, "prev_events": ["$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc"], "auth_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8", "$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc"], "content": {"body": "Hello"}, "signatures": {"localhost:42455": {"ed25519:1": "njNe0WadIVPD63lTWOnAr9MPSu/Uj2tXnGD/gXFQ2dIj22KM+uwp6TITiLQAyQUehG3c1PBrnpOcVIiBAL4yAg"}}, "unsigned": {}}}UeQ33$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3438}{"room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "type": "m.room.member", "depth": 6, "state_key": "@__ANON__-37:localhost:42455", "origin": "localhost:42455", "hashes": {"sha256": "dTq1ukESeEAnYrVMM5vkR4WlNEKy1inZ32JqKhvcqC0"}, "sender": "@__ANON__-37:localhost:42455", "auth_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8"], "content": {"membership": "join"}, "origin_server_ts": 1570043609490, "prev_events": ["$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE"], "signatures": {"localhost:42455": {"ed25519:1": "fokN8h1p+uEOYxm6NDvBNf3kj166ZRzcHci7A1wa8a8+3lu1o0RFAFQ2OHlrN3OJZa6TbHP0E9i4h0mseunZCQ"}}, "unsigned": {}} 76 1 k9oP= uC\* } K i   V$|J7c W w E7c W w E1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg 1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw U1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw T1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw S1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4 .1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4 -1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4 ,1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8 (1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8 '1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM 0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4K1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s31e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s21e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQY1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA1e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM81e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgc21e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I 1e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx021e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU 1e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0 1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgN1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU E1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw)1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QW1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QV1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QU1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU D v D  } K * Q  W % ^ ,d$j8p> vD|JPV\21e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk &1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM _1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM 1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw ^1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU 0 21e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE a1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk61e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz01e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc&1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc 61e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k(1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI 1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw31e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs\1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg 1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY #1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsF1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg X1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssg1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUV1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMF1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYO1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA?1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo(1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20 1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU #% M i r  )Wgv 4ZxMq[]QQ/ $1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules]\QQ3 $1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels[QQ']$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800WZQQ' $1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.createdY3Q'E$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455cXQQ? $1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility[WQQ/ $1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules]VQQ3 $1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levelsUQQ']$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800WTQQ' $1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create}SeQ'E$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455mReQ? $XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibilityeQeQ/ $1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rulesgPeQ3 $4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels OeQ']$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800aNeQ' $4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create}MeQ'E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455mLeQ? $aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibilityeKeQ/ $QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rulesgJeQ3 $EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels IeQ']$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800aHeQ' $SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create}GeQ'E$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455mFeQ? $qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibilityeEeQ/ $jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rulesgDeQ3 $8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels CeQ']$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800aBeQ' $RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create}AeQ'E$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455m@eQ? $xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibilitye?eQ/ $s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rulesg>eQ3 $6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels =eQ']$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800a<eQ' $_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create};eQ'E$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455  oa{33aU $71:localhost:42455!11:localhost:42455{"outlier": true, "stream_ordering": 3503}{"room_id": "!11:localhost:42455", "type": "m.room.create", "state_key": "", "depth": 0, "origin": "localhost:42455", "hashes": {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}, "sender": "@__ANON__-47:localhost:42455", "auth_events": [], "event_id": "$71:localhost:42455", "content": {"creator": "@__ANON__-47:localhost:42455"}, "origin_server_ts": 1570043668574, "prev_events": [], "signatures": {"localhost:42455": {"ed25519:1": "mIZAQjjP7Q7g6vM88eotNcr4k/3BU6EWM0M9+7P9Odx0WqxFpuxV9n5QnHnhhHb4jYOK+S1yrYuZ16xAlphIBA"}}, "unsigned": {}} Q3?w $1570043664431IMLSL:localhost:8800!10:localhost:42455{"stream_ordering": 3502}{"depth": 3, "state_key": "@anon-20191002_181700-672:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-672", "avatar_url": null}, "room_id": "!10:localhost:42455", "auth_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}], ["$70:localhost:42455", {"sha256": "u2koyjPmjhJpY2qSwFfUNJXyjc6t+VVBTYapn9rKb+c"}]], "type": "m.room.member", "sender": "@anon-20191002_181700-672:localhost:8800", "prev_events": [["$70:localhost:42455", {"sha256": "u2koyjPmjhJpY2qSwFfUNJXyjc6t+VVBTYapn9rKb+c"}]], "prev_state": [], "event_id": "$1570043664431IMLSL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043664436, "hashes": {"sha256": "Cu+L9Gim8yCgUKDf8MQzIXxzcKqnnAWQVwEe3wTGb90"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LXl7W8djYiJfeD7Zt1yrjIXaxtTvtRZi/4BkdTO3vM+W/vw3WziW5qKpSErdj3k8xR7lQLSeEfEIQviKqJfaDA"}}, "unsigned": {"age_ts": 1570043664436}}c33a% $70:localhost:42455!10:localhost:42455{"outlier": true, "stream_ordering": 3498}{"origin_server_ts": 1570043664422, "prev_events": [["$69:localhost:42455", {"sha256": "MDl3YwbILqa0bhh/SjBwqn04sZnEnRI+VrOnt0WJVNQ"}]], "event_id": "$70:localhost:42455", "auth_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}], ["$69:localhost:42455", {"sha256": "MDl3YwbILqa0bhh/SjBwqn04sZnEnRI+VrOnt0WJVNQ"}]], "content": {"join_rule": "public"}, "hashes": {"sha256": "u2koyjPmjhJpY2qSwFfUNJXyjc6t+VVBTYapn9rKb+c"}, "sender": "@__ANON__-46:localhost:42455", "type": "m.room.join_rules", "room_id": "!10:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 2, "signatures": {"localhost:42455": {"ed25519:1": "EI0JGRJkwjGpQdfDyiWbzhN6Sfr8lSO6jjzfL0cztSsPgQDCjOUMugjmU3CXsrkHGbJ8E4QXJi8B+2OzA1jxDA"}}, "unsigned": {}}& 33a+ $69:localhost:42455!10:localhost:42455{"outlier": true, "stream_ordering": 3497}{"hashes": {"sha256": "MDl3YwbILqa0bhh/SjBwqn04sZnEnRI+VrOnt0WJVNQ"}, "sender": "@__ANON__-46:localhost:42455", "room_id": "!10:localhost:42455", "type": "m.room.member", "depth": 1, "state_key": "@__ANON__-46:localhost:42455", "origin": "localhost:42455", "origin_server_ts": 1570043664421, "prev_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}]], "auth_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}]], "event_id": "$69:localhost:42455", "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "WGcoDMjtxgGJSPU/hAkUrEH/3WTsu0XtERbOdQFuJagiRkn417bG5fWi3tGpmcIxlQpGeFSz+diPlmPAskJaDQ"}}, "unsigned": {}} .NC 8 - { " p  e ZOD9.Ac~/LQL$1570043656428rZaqi:localhost:8800sha256ygV$W+(k?]Q1/?}E; ^LQL$1570043655427tEtWD:localhost:8800sha2565rxS.*%a4sYҙܬ#LQL$1570043654426seixP:localhost:8800sha256əed]L ⳨ ZME9~RLQL$1570043653425AhyPB:localhost:8800sha256}L/yT=|3L$61:localhost:42455sha256]K}Ɲ/ ?Nv<y/!)Ӿ-/L{QL$1570043648422SglHQ:localhost:8800sha256]"lF&sFxj]>כnLzQL$1570043647421dmTZW:localhost:8800sha256ºV"Zjr^XoM̚NOz[ LyQL$1570043646420mPrhj:localhost:8800sha256?E%iI*W9ȷfv PLxQL$1570043646419zIOAX:localhost:8800sha256o{!'uR!2ƵͦV>vXLwQL$1570043645418ABZkc:localhost:8800sha256)T̕' M0+ؙr$VveL$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcsha256Bw+E=WD tE8lqL g@gVueL$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAsha2562XQUJ+]\a#RMb7Ee-PVteL$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Esha256p(E$k=WнѡqVseL$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMssha256lfWN)l>8mNA,̅VreL$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwsha256^$7]x ;5Tfl?dL)ZDVqeL$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQsha256Rv*W(9~osi֏DVoeL$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAsha256SdΝ6>]vu:<ԗ0VneL$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-ssha256 ^?:!yפ\;T?*oVmeL$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcsha256>=mK>͋v/4\ꉜVleL$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0sha256hڸ ) M$*f]={-KswVkeL$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawsha256CVDm45(kſܲVjeL$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgIsha256b$hK.w†[V=xn^Y*VieL$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUsha256VB~zq[ٚ TUyGqfEVheL$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQsha256Jb"~BH&qSZ6׮GO4VgeL$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYsha256H悉u9]\ffTQEPkXVVfeL$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdEsha256 ~83I ä9\e5VXeL$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7osha256S |l2=eOߣgVWeL$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8sha256 r&u'1I!4*$٥"udM`VVeL$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQsha256ֳNqE'Nbdg J)TVUeL$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Ysha256X|xT\N~kCmM'˦  }\eQ33$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3445}{"content": {"membership": "join"}, "auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o"], "prev_events": ["$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU"], "origin_server_ts": 1570043616814, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-38:localhost:42455", "type": "m.room.member", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@__ANON__-38:localhost:42455", "hashes": {"sha256": "PA2++Ljis7LZ8Di+bfevW0Cr9BJLbTaGoOF1oCLGT/0"}, "signatures": {"localhost:42455": {"ed25519:1": "3DVvIJTglhH1zKRlSQ4XTmYtMcbcOZjB27+bCl1ETabFL2yrca7hNLazQlRnxoZMKYh23CDW+UpQ0ZYl8L7zCg"}}, "unsigned": {}}[eQa$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3444}{"auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o"], "type": "m.room.history_visibility", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043615301, "hashes": {"sha256": "br5SDj35etSgwpZTlEGEvWtzW/TqBFoDojDQr4BIbeQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8BKjnR6IQzk7ykDuq7j+LtHH6J2piL8IlRC3REsaWpuczpBuu47ALdV/TKS/bSfiN1fFsLlVtwGhEu1YLO/QAw"}}, "unsigned": {"age_ts": 1570043615301}}tZeQau$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3443}{"auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8"], "type": "m.room.join_rules", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043614643, "hashes": {"sha256": "NMm2DnUIEBkTTewmRX21rIicBvxHWJ0wD1u+fTuqTgk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "InurTxd7NiddfzjeS9oSPyfb4PrghMWCiBkghKwm8bKm1vLH84UNYeBhJYu/Qrx9VbrB5G5Dn1W/2ezCDEntAA"}}, "unsigned": {"age_ts": 1570043614643}}kYeQac$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3442}{"auth_events": ["$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "type": "m.room.power_levels", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"users": {"@anon-20191002_181700-666:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043613919, "hashes": {"sha256": "cM1lRcmEwUpWu0WFdF4aJ6aNjiXJY/g8sPNo5qWg3p0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SKSAxGjJJJQu8u3F/K3JuaplI361BoNp7/8Fy+ZJsAP37YLTDJZA36kq4Fy92PwdRUstTrHa6OdZOdReFNBWCg"}}, "unsigned": {"age_ts": 1570043613919}} (1 : b k  t  )>AcEE,dQ'Eee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMscQ' ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sbQ3 ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4aQ/ ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw8`Q']ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU,_Q'Eee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc^Q' ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ]Q3 ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI\Q'Ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsp[Q? e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibility$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwhZQ/ e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQjYQ3 e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 XQ']e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAdWQ' e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sVQ'Ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcpUQ? e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibility$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0hTQ/ e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawjSQ3 e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI RQ']e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUdQQ' e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQPQ'Ee |!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgpOQ? e {!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibility$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQhNQ/ e z!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYjMQ3 e y!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA LQ']e x!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAdKQ' e w!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9QJQ'Ee u!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYpIQ? e t!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibility$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUhHQ/ e s!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7ojGQ3 e r!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 \E $ vnh <  [ t D >Bp 6z J | )H *  VO  0Ub #1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4H1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgW1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0S1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIy1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA'1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kW1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4P1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX460e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMY1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA|1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw]1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIE1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcx1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsC1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw(1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40q1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMY1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y }1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM l1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0|1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 [1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo  21e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ~1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI}1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA{1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ^ P21e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM $ 21e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoC1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I>1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro6 21e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA 21e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg /1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI811e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis h(? D l  F m]d&l9R# .jhHpQQ']$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800join[nQQ/ $1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_ruleshm3Q'E$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455joincjQQ? $1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibilityWlQQ' $1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create]kQQ3 $1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levelsgQQ']$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800joinoZe`eQ/ $QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules gaeQ3 $4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levelsmZeQ? $XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibilityeeeQ/ $1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules deQ']$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800joinceQ'E$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455joinabeQ' $4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.createg\eQ3 $EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levelsmTeQ? $aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibilityM _eQ']$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800join^eQ'E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455joina]eQ' $SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.createOeQ'E$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455joinmNeQ? $qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibilityeMeQ/ $jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rulesgLeQ3 $8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels KeQ']$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800joinaJeQ' $RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800m.room.createIeQ'E$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455joinmHeQ? $xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibilityeGeQ/ $s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules P q # { 3 Z97Y& e3Q ]$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4m.room.power_levels!DSFBpkqfnvBQbGoMUK:localhost:8800mHm䰵@anon-20191002_181700-668:localhost:8800 e'Q ]$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAm.room.member!DSFBpkqfnvBQbGoMUK:localhost:8800m䬆m@anon-20191002_181700-668:localhost:8800  e'Q  ]$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sm.room.create!DSFBpkqfnvBQbGoMUK:localhost:8800m䨆m"@anon-20191002_181700-668:localhost:8800e'Q E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcm.room.member!ZKPJvrCZHMHPEksYDc:localhost:8800m.m䤠@__ANON__-40:localhost:42455,e?Q ]$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0m.room.history_visibility!ZKPJvrCZHMHPEksYDc:localhost:8800m<m@anon-20191002_181700-668:localhost:8800$e/Q ]$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawm.room.join_rules!ZKPJvrCZHMHPEksYDc:localhost:8800mGm@anon-20191002_181700-668:localhost:8800&e3Q ]$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgIm.room.power_levels!ZKPJvrCZHMHPEksYDc:localhost:8800m:mX@anon-20191002_181700-668:localhost:8800 e'Q ]$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUm.room.member!ZKPJvrCZHMHPEksYDc:localhost:8800m䖲m+@anon-20191002_181700-668:localhost:8800 e'Q  ]$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQm.room.create!ZKPJvrCZHMHPEksYDc:localhost:8800mm䒅@anon-20191002_181700-668:localhost:8800e)Q E $B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYm.room.message!PgNDjhhIBAXKryuGKy:localhost:8800 mGm@__ANON__-39:localhost:42455e-Q E $CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdEm.room.redaction!PgNDjhhIBAXKryuGKy:localhost:8800 mm䊱@__ANON__-39:localhost:42455#e-Q ] $7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8Um.room.redaction!PgNDjhhIBAXKryuGKy:localhost:8800 mym~@anon-20191002_181700-667:localhost:8800e)Q E$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbkm.room.message!PgNDjhhIBAXKryuGKy:localhost:8800mm䄣@__ANON__-39:localhost:42455~e-Q E$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5Am.room.redaction!PgNDjhhIBAXKryuGKy:localhost:8800m䀮m@__ANON__-39:localhost:42455!}e)Q ]$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgm.room.message!PgNDjhhIBAXKryuGKy:localhost:8800m}m~@anon-20191002_181700-667:localhost:8800|e'Q E$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgm.room.member!PgNDjhhIBAXKryuGKy:localhost:8800mzm{4@__ANON__-39:localhost:42455,{e?Q ]$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQm.room.history_visibility!PgNDjhhIBAXKryuGKy:localhost:8800mu@mw^@anon-20191002_181700-667:localhost:8800$ze/Q ]$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYm.room.join_rules!PgNDjhhIBAXKryuGKy:localhost:8800mrZms%@anon-20191002_181700-667:localhost:8800&ye3Q ]$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAm.room.power_levels!PgNDjhhIBAXKryuGKy:localhost:8800moSmpf@anon-20191002_181700-667:localhost:8800 xe'Q ]$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAm.room.member!PgNDjhhIBAXKryuGKy:localhost:8800mlml@anon-20191002_181700-667:localhost:8800w e'Q  ]$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qm.room.create!PgNDjhhIBAXKryuGKy:localhost:8800mhmi-@anon-20191002_181700-667:localhost:8800!ve)Q ]$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okucm.room.message!vnFXnkCSfTbsSNKrtg:localhost:8800ma*ma@anon-20191002_181700-666:localhost:8800ue'Q E$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYm.room.member!vnFXnkCSfTbsSNKrtg:localhost:8800m^.m^@__ANON__-38:localhost:42455,te?Q ]$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUm.room.history_visibility!vnFXnkCSfTbsSNKrtg:localhost:8800mXEmZ@anon-20191002_181700-666:localhost:8800 ~z v r n j fb^ZVRNJF5eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:88004eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:88003eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:88002eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:88001eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:88000eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800/eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800.eeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800-eeQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800,eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800+eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800*eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800)eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800(eeQ$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800'eeQ$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE!PgNDjhhIBAXKryuGKy:localhost:8800&eeQ$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800%eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800$eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800#eeQ$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A!PgNDjhhIBAXKryuGKy:localhost:8800"eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800!eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800 0RM H C > 9 4/*|%4M}0Iq(:b1Q b!9:localhost:42455$1570043660430kLPpN:localhost:8800FaQI a!SnROoiDBapNNtMmKnT:localhost:8800$64_redaction2:localhost:42455F`QI `!SnROoiDBapNNtMmKnT:localhost:8800$63_redaction1:localhost:42455;_Q3 _!SnROoiDBapNNtMmKnT:localhost:8800$62:localhost:42455J^QQ ^!SnROoiDBapNNtMmKnT:localhost:8800$1570043656429hLPPT:localhost:8800J]QQ ]!SnROoiDBapNNtMmKnT:localhost:8800$1570043656428rZaqi:localhost:8800J\QQ \!SnROoiDBapNNtMmKnT:localhost:8800$1570043655427tEtWD:localhost:8800J[QQ [!SnROoiDBapNNtMmKnT:localhost:8800$1570043654426seixP:localhost:8800JZQQ Z!SnROoiDBapNNtMmKnT:localhost:8800$1570043653425AhyPB:localhost:8800JYQQ Y!SnROoiDBapNNtMmKnT:localhost:8800$1570043652424mkkFn:localhost:8800BXQA X!uGpSboYkgxVNOqNeUG:localhost:8800$lolredact:localhost:42455;WQ3 W!uGpSboYkgxVNOqNeUG:localhost:8800$61:localhost:42455JVQQ V!uGpSboYkgxVNOqNeUG:localhost:8800$1570043649423kEGEg:localhost:8800JUQQ U!uGpSboYkgxVNOqNeUG:localhost:8800$1570043648422SglHQ:localhost:8800JTQQ T!uGpSboYkgxVNOqNeUG:localhost:8800$1570043647421dmTZW:localhost:8800JSQQ S!uGpSboYkgxVNOqNeUG:localhost:8800$1570043646420mPrhj:localhost:8800JRQQ R!uGpSboYkgxVNOqNeUG:localhost:8800$1570043646419zIOAX:localhost:8800JQQQ Q!uGpSboYkgxVNOqNeUG:localhost:8800$1570043645418ABZkc:localhost:8800TPQe P!DSFBpkqfnvBQbGoMUK:localhost:8800$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcTOQe O!DSFBpkqfnvBQbGoMUK:localhost:8800$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVATNQe N!ZKPJvrCZHMHPEksYDc:localhost:8800$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3ETMQe M!DSFBpkqfnvBQbGoMUK:localhost:8800$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsTLQe L!DSFBpkqfnvBQbGoMUK:localhost:8800$chlKAjAZ1f_xaVxHnTSqQzyLfXsn2Y6Xju6nAWvw3t8TKQe K!DSFBpkqfnvBQbGoMUK:localhost:8800$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwTJQe J!DSFBpkqfnvBQbGoMUK:localhost:8800$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQTIQe I!DSFBpkqfnvBQbGoMUK:localhost:8800$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4THQe H!DSFBpkqfnvBQbGoMUK:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzATGQe G!DSFBpkqfnvBQbGoMUK:localhost:8800$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sTFQe F!ZKPJvrCZHMHPEksYDc:localhost:8800$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcTEQe E!ZKPJvrCZHMHPEksYDc:localhost:8800$0vo8cyfZw4Fp-lThwbYE0zSUTKkZrbu73OPguC5PCQ4TDQe D!ZKPJvrCZHMHPEksYDc:localhost:8800$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0TCQe C!ZKPJvrCZHMHPEksYDc:localhost:8800$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawTBQe B!ZKPJvrCZHMHPEksYDc:localhost:8800$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgITAQe A!ZKPJvrCZHMHPEksYDc:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUT@Qe @!ZKPJvrCZHMHPEksYDc:localhost:8800$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQT?Qe ?!PgNDjhhIBAXKryuGKy:localhost:8800$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYT>Qe >!PgNDjhhIBAXKryuGKy:localhost:8800$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdET=Qe =!PgNDjhhIBAXKryuGKy:localhost:8800$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8XbkT<Qe V+\3\1 Z /  X -  Z/X- V +  T ) } R '{*Q!zScKnCZCFPIIodAiQj:localhost:8800 M M*Q!zScKnCZCFPIIodAiQj:localhost:8800 J J*Q!zScKnCZCFPIIodAiQj:localhost:8800 H H*Q!zScKnCZCFPIIodAiQj:localhost:8800 F F*Q!zScKnCZCFPIIodAiQj:localhost:8800 D D*Q!zScKnCZCFPIIodAiQj:localhost:8800 B B*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 8*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 0*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / /*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . .*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - -*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ,*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + +*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * **Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) )*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ( ((Q!zhCsYcaweVFJLLNwBz:localhost:8800***Q!zuCqeooOnfWkYrQdxA:localhost:8800 L L*Q!zuCqeooOnfWkYrQdxA:localhost:8800 K K*Q!zuCqeooOnfWkYrQdxA:localhost:8800 J J*Q!zuCqeooOnfWkYrQdxA:localhost:8800 I I*Q!zuCqeooOnfWkYrQdxA:localhost:8800 H H*Q!zuCqeooOnfWkYrQdxA:localhost:8800 G G*Q!zuCqeooOnfWkYrQdxA:localhost:8800 F F*Q!zuCqeooOnfWkYrQdxA:localhost:8800 E E*Q!zuCqeooOnfWkYrQdxA:localhost:8800 D D*Q!zuCqeooOnfWkYrQdxA:localhost:8800 C C*Q!zuCqeooOnfWkYrQdxA:localhost:8800 B B*Q!zsXPhIPzeXXLvuazzQ:localhost:8800cc*Q!zsXPhIPzeXXLvuazzQ:localhost:8800bb*Q!zsXPhIPzeXXLvuazzQ:localhost:8800aa*Q!zsXPhIPzeXXLvuazzQ:localhost:8800``*Q!zsXPhIPzeXXLvuazzQ:localhost:8800__*Q!zsXPhIPzeXXLvuazzQ:localhost:8800^^*Q!zsXPhIPzeXXLvuazzQ:localhost:8800]]*Q!zsXPhIPzeXXLvuazzQ:localhost:8800\\*Q!zsXPhIPzeXXLvuazzQ:localhost:8800[[*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800~~*Q!zoTQAhGwmDDUECKtbL:localhost:8800}}*Q!zoTQAhGwmDDUECKtbL:localhost:8800||*Q!zoTQAhGwmDDUECKtbL:localhost:8800{{*Q!zoTQAhGwmDDUECKtbL:localhost:8800zz*Q!zoTQAhGwmDDUECKtbL:localhost:8800yy*Q!zoTQAhGwmDDUECKtbL:localhost:8800xx*Q!zoTQAhGwmDDUECKtbL:localhost:8800ww*Q!zoTQAhGwmDDUECKtbL:localhost:8800vv*Q!zoTQAhGwmDDUECKtbL:localhost:8800uu*Q!zoTQAhGwmDDUECKtbL:localhost:8800tt*Q!zoTQAhGwmDDUECKtbL:localhost:8800ss*Q!zoTQAhGwmDDUECKtbL:localhost:8800rr*Q!zoTQAhGwmDDUECKtbL:localhost:8800qq*Q!zoTQAhGwmDDUECKtbL:localhost:8800pp(Q!zhCsYcaweVFJLLNwBz:localhost:8800//(Q!zhCsYcaweVFJLLNwBz:localhost:8800..(Q!zhCsYcaweVFJLLNwBz:localhost:8800--(Q!zhCsYcaweVFJLLNwBz:localhost:8800,,(Q!zhCsYcaweVFJLLNwBz:localhost:8800++ a} { y w u sqomkigeca~eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~ eeQ$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~ eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800~ eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~ eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800~ eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800 D T " e D >m 8Sy_ vA; s \ +Y  Mj'   3 f! 5  |Gp- 21e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo:1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo/1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk%1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g|1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw_1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScL1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEZ1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttES1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkF1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMD1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg;1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4S1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0T1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw[1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFon1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40a1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8 1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk41e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro@1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI0e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsg0e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIA1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ0e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lkf0e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gu0e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0 1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI0e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q 0e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksi1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw0e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8n 1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r01e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T01e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMd1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkki1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms_21e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAY21e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQK1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8H1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAF D\1Z/ X -  V +  T ) } R 'N#zW, { P %ywL!uJ*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 i*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 a*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / `*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . _*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - ^*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ]*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + \*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * [*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) Z*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ( Y$*Q!zuCqeooOnfWkYrQdxA:localhost:8800 L *Q!zuCqeooOnfWkYrQdxA:localhost:8800 K *Q!zuCqeooOnfWkYrQdxA:localhost:8800 J *Q!zuCqeooOnfWkYrQdxA:localhost:8800 I *Q!zuCqeooOnfWkYrQdxA:localhost:8800 H *Q!zuCqeooOnfWkYrQdxA:localhost:8800 G *Q!zuCqeooOnfWkYrQdxA:localhost:8800 F *Q!zuCqeooOnfWkYrQdxA:localhost:8800 E *Q!zuCqeooOnfWkYrQdxA:localhost:8800 D *Q!zuCqeooOnfWkYrQdxA:localhost:8800 C *Q!zuCqeooOnfWkYrQdxA:localhost:8800 B ~*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zsXPhIPzeXXLvuazzQ:localhost:8800c*Q!zsXPhIPzeXXLvuazzQ:localhost:8800c*Q!zsXPhIPzeXXLvuazzQ:localhost:8800b*Q!zsXPhIPzeXXLvuazzQ:localhost:8800a*Q!zsXPhIPzeXXLvuazzQ:localhost:8800`*Q!zsXPhIPzeXXLvuazzQ:localhost:8800_*Q!zsXPhIPzeXXLvuazzQ:localhost:8800^*Q!zsXPhIPzeXXLvuazzQ:localhost:8800]*Q!zsXPhIPzeXXLvuazzQ:localhost:8800\*Q!zsXPhIPzeXXLvuazzQ:localhost:8800[*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800~*Q!zoTQAhGwmDDUECKtbL:localhost:8800~*Q!zoTQAhGwmDDUECKtbL:localhost:8800}*Q!zoTQAhGwmDDUECKtbL:localhost:8800}*Q!zoTQAhGwmDDUECKtbL:localhost:8800|*Q!zoTQAhGwmDDUECKtbL:localhost:8800|*Q!zoTQAhGwmDDUECKtbL:localhost:8800{*Q!zoTQAhGwmDDUECKtbL:localhost:8800{*Q!zoTQAhGwmDDUECKtbL:localhost:8800z*Q!zoTQAhGwmDDUECKtbL:localhost:8800z*Q!zoTQAhGwmDDUECKtbL:localhost:8800y*Q!zoTQAhGwmDDUECKtbL:localhost:8800y*Q!zoTQAhGwmDDUECKtbL:localhost:8800x*Q!zoTQAhGwmDDUECKtbL:localhost:8800x*Q!zoTQAhGwmDDUECKtbL:localhost:8800w*Q!zoTQAhGwmDDUECKtbL:localhost:8800w*Q!zoTQAhGwmDDUECKtbL:localhost:8800v*Q!zoTQAhGwmDDUECKtbL:localhost:8800v*Q!zoTQAhGwmDDUECKtbL:localhost:8800u*Q!zoTQAhGwmDDUECKtbL:localhost:8800t*Q!zoTQAhGwmDDUECKtbL:localhost:8800s*Q!zoTQAhGwmDDUECKtbL:localhost:8800r*Q!zoTQAhGwmDDUECKtbL:localhost:8800q*Q!zoTQAhGwmDDUECKtbL:localhost:8800p(Q!zhCsYcaweVFJLLNwBz:localhost:8800/.(Q!zhCsYcaweVFJLLNwBz:localhost:8800.-(Q!zhCsYcaweVFJLLNwBz:localhost:8800-,)  s  k`eQac$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3449}{"auth_events": ["$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "type": "m.room.power_levels", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"users": {"@anon-20191002_181700-667:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043621203, "hashes": {"sha256": "yOqg+xvG9PzU5OMx22e65KR2ngWnEFK8YwDCRSfI99Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UMwFOQpS2xZpnoNJ01Ibb8tdj90sDlo6ejR2sjF6WOo1MxPA7tXhR5lH0Zcx1dfEJL8DDj3qzb8W5Yl2NdnWAQ"}}, "unsigned": {"age_ts": 1570043621203}}v_eQay$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3448}{"auth_events": ["$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q"], "prev_events": ["$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q"], "type": "m.room.member", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-667", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-667:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043620372, "hashes": {"sha256": "owx3ZD7dMI84Dg9hqAiQrLIqLDhBGBeUS6+wDO8Xqow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v05NEs3YpE5h7P7fFp5wq7p74K0gH6jl62jhDayFjGGrjVicr6ErnWbQK48HvnA74csoUarSnsgv/+MBwFJ0Cw"}}, "unsigned": {"age_ts": 1570043620372}}i^eQa_$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3447}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-667:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043619527, "hashes": {"sha256": "yvYFYIzRb4Nnn902qBh4m1Eix9lRMtHdAlxN+zKT8YI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2BTWBR1+T4jroXme9eeY88Lw+cN2PeyqVit7AzegtqBNDfBNR3pdsN7bPOwh8GuBclkjQSC0dONPtWm+g0K0Cw"}}, "unsigned": {"age_ts": 1570043619527}} ]eQ{$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "txn_id": "614", "stream_ordering": 3446}{"auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY"], "type": "m.room.message", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"body": "Test message1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043617578, "hashes": {"sha256": "jwarWrgUfnMfjPMx44BCR+25vu/Nd7xVXXDFPkrovLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fYWVQfQssoboiVdjpT2kTiwfuWfkt/mctN/FOIu7+NrCQWsOWypVCA/0giJoDDGb9AM6jYFLWKZkpSnF8sExCw"}}, "unsigned": {"age_ts": 1570043617578}} J]/wIvHe7  Q # m ?  Y + u G  a 3 {Mi; U'qCe7 Q# B -]@anon-20191002_181700-690:localhost:8800+[@anon-20191002_181700-68:localhost:8800X-]@anon-20191002_181700-689:localhost:8800-]@anon-20191002_181700-688:localhost:8800-]@anon-20191002_181700-687:localhost:8800-]@anon-20191002_181700-686:localhost:8800-]@anon-20191002_181700-685:localhost:8800-]@anon-20191002_181700-684:localhost:8800-]@anon-20191002_181700-683:localhost:8800-]@anon-20191002_181700-682:localhost:8800-]@anon-20191002_181700-756:localhost:8800-]@anon-20191002_181700-755:localhost:8800-]@anon-20191002_181700-754:localhost:8800-]@anon-20191002_181700-753:localhost:8800-]@anon-20191002_181700-752:localhost:8800-]@anon-20191002_181700-751:localhost:8800-]@anon-20191002_181700-750:localhost:8800+[@anon-20191002_181700-74:localhost:8800\-]@anon-20191002_181700-749:localhost:8800-]@anon-20191002_181700-748:localhost:8800-]@anon-20191002_181700-747:localhost:8800-]@anon-20191002_181700-746:localhost:8800-]@anon-20191002_181700-745:localhost:8800-]@anon-20191002_181700-744:localhost:8800-]@anon-20191002_181700-743:localhost:8800-]@anon-20191002_181700-742:localhost:8800+[@anon-20191002_181700-73:localhost:8800[-]@anon-20191002_181700-736:localhost:8800-]@anon-20191002_181700-735:localhost:8800-]@anon-20191002_181700-734:localhost:8800-]@anon-20191002_181700-733:localhost:8800-]@anon-20191002_181700-732:localhost:8800-]@anon-20191002_181700-731:localhost:8800-]@anon-20191002_181700-730:localhost:8800-]@anon-20191002_181700-729:localhost:8800-]@anon-20191002_181700-728:localhost:8800-]@anon-20191002_181700-727:localhost:8800-]@anon-20191002_181700-726:localhost:8800-]@anon-20191002_181700-725:localhost:8800-]@anon-20191002_181700-724:localhost:8800-]@anon-20191002_181700-723:localhost:8800-]@anon-20191002_181700-722:localhost:8800-]@anon-20191002_181700-721:localhost:8800-]@anon-20191002_181700-720:localhost:8800+[@anon-20191002_181700-71:localhost:8800Z-]@anon-20191002_181700-719:localhost:8800-]@anon-20191002_181700-718:localhost:8800-]@anon-20191002_181700-717:localhost:8800-]@anon-20191002_181700-716:localhost:8800-]@anon-20191002_181700-715:localhost:8800-]@anon-20191002_181700-714:localhost:8800-]@anon-20191002_181700-713:localhost:8800-]@anon-20191002_181700-712:localhost:8800-]@anon-20191002_181700-711:localhost:8800-]@anon-20191002_181700-710:localhost:8800+[@anon-20191002_181700-70:localhost:8800Y-]@anon-20191002_181700-709:localhost:8800-]@anon-20191002_181700-708:localhost:8800-]@anon-20191002_181700-707:localhost:8800-]@anon-20191002_181700-706:localhost:8800-]@anon-20191002_181700-705:localhost:8800-]@anon-20191002_181700-704:localhost:8800-]@anon-20191002_181700-703:localhost:8800-]@anon-20191002_181700-702:localhost:8800-]@anon-20191002_181700-701:localhost:8800-]@anon-20191002_181700-700:localhost:8800*Y@anon-20191002_181700-6:localhost:8800-]@anon-20191002_181700-698:localhost:8800-]@anon-20191002_181700-697:localhost:8800-]@anon-20191002_181700-696:localhost:8800-]@anon-20191002_181700-695:localhost:8800-]@anon-20191002_181700-693:localhost:8800-]@anon-20191002_181700-692:localhost:8800-]@anon-20191002_181700-691:localhost:8800 J]/wIvHe7  Q # m ?  Y + u G  a 3 {Mi; U'qCe7 Q# B -]@anon-20191002_181700-690:localhost:8800+[@anon-20191002_181700-68:localhost:8800X-]@anon-20191002_181700-689:localhost:8800-]@anon-20191002_181700-688:localhost:8800-]@anon-20191002_181700-687:localhost:8800-]@anon-20191002_181700-686:localhost:8800-]@anon-20191002_181700-685:localhost:8800-]@anon-20191002_181700-684:localhost:8800-]@anon-20191002_181700-683:localhost:8800-]@anon-20191002_181700-682:localhost:8800-]@anon-20191002_181700-756:localhost:8800-]@anon-20191002_181700-755:localhost:8800-]@anon-20191002_181700-754:localhost:8800-]@anon-20191002_181700-753:localhost:8800-]@anon-20191002_181700-752:localhost:8800-]@anon-20191002_181700-751:localhost:8800-]@anon-20191002_181700-750:localhost:8800+[@anon-20191002_181700-74:localhost:8800\-]@anon-20191002_181700-749:localhost:8800-]@anon-20191002_181700-748:localhost:8800-]@anon-20191002_181700-747:localhost:8800-]@anon-20191002_181700-746:localhost:8800-]@anon-20191002_181700-745:localhost:8800-]@anon-20191002_181700-744:localhost:8800-]@anon-20191002_181700-743:localhost:8800-]@anon-20191002_181700-742:localhost:8800+[@anon-20191002_181700-73:localhost:8800[-]@anon-20191002_181700-736:localhost:8800-]@anon-20191002_181700-735:localhost:8800-]@anon-20191002_181700-734:localhost:8800-]@anon-20191002_181700-733:localhost:8800-]@anon-20191002_181700-732:localhost:8800-]@anon-20191002_181700-731:localhost:8800-]@anon-20191002_181700-730:localhost:8800-]@anon-20191002_181700-729:localhost:8800-]@anon-20191002_181700-728:localhost:8800-]@anon-20191002_181700-727:localhost:8800-]@anon-20191002_181700-726:localhost:8800-]@anon-20191002_181700-725:localhost:8800-]@anon-20191002_181700-724:localhost:8800-]@anon-20191002_181700-723:localhost:8800-]@anon-20191002_181700-722:localhost:8800-]@anon-20191002_181700-721:localhost:8800-]@anon-20191002_181700-720:localhost:8800+[@anon-20191002_181700-71:localhost:8800Z-]@anon-20191002_181700-719:localhost:8800-]@anon-20191002_181700-718:localhost:8800-]@anon-20191002_181700-717:localhost:8800-]@anon-20191002_181700-716:localhost:8800-]@anon-20191002_181700-715:localhost:8800-]@anon-20191002_181700-714:localhost:8800-]@anon-20191002_181700-713:localhost:8800-]@anon-20191002_181700-712:localhost:8800-]@anon-20191002_181700-711:localhost:8800-]@anon-20191002_181700-710:localhost:8800+[@anon-20191002_181700-70:localhost:8800Y-]@anon-20191002_181700-709:localhost:8800-]@anon-20191002_181700-708:localhost:8800-]@anon-20191002_181700-707:localhost:8800-]@anon-20191002_181700-706:localhost:8800-]@anon-20191002_181700-705:localhost:8800-]@anon-20191002_181700-704:localhost:8800-]@anon-20191002_181700-703:localhost:8800-]@anon-20191002_181700-702:localhost:8800-]@anon-20191002_181700-701:localhost:8800-]@anon-20191002_181700-700:localhost:8800*Y@anon-20191002_181700-6:localhost:8800-]@anon-20191002_181700-698:localhost:8800-]@anon-20191002_181700-697:localhost:8800-]@anon-20191002_181700-696:localhost:8800-]@anon-20191002_181700-695:localhost:8800-]@anon-20191002_181700-693:localhost:8800-]@anon-20191002_181700-692:localhost:8800-]@anon-20191002_181700-691:localhost:8800 oC%tM%/G  5 _ 8   s K #]  ^ 6   q I "?   [W 4  gopSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:local'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800&'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800zMP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800s'Q!sqkBzbHHJOTNWwynqV:localhost:8800m'Q!yAfsSyqpJWFnkXQFJL:localhost:8800h'Q!zqQJfFCRlSEDPKlQPy:localhost:8800_'Q!ybXveQoxPVhjpKHAkG:localhost:8800V'Q!vZGjXEXQoCaoUXnkCa:localhost:8800P'Q!xcdNyJNFEdaBGFycsB:localhost:8800M('Q!tPkCGJBKmqUXJoRrnY:localhost:8800F'Q!zHBgbzUZHshNGZvIBS:localhost:8800A'Q!vRmMcoJDeCupADwqac:localhost:8800;'Q!wBkUBAjOznOyxrLchl:localhost:88006G('Q!vBvlJEXUSQKUYmsKcO:localhost:88001'Q!ubmTdQFAhrhZkGULDx:localhost:8800+('Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800  $zupkfa\WRMHC>94/*%  {vqlgbX]SNID?:50+&!  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |pvjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXVWTSRQPONMLKJIHGEFCBA@?>=<;:9876543210/.-,+*)('&%$#"!        ~]deQ#$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "txn_id": "615", "stream_ordering": 3453}{"auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg"], "type": "m.room.message", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043624903, "hashes": {"sha256": "lIZtYPd3NcZTILXWazlYUNBgYJNusvOzzROhjQEBF2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3jsvnVsIi8+4QAC5JCohfU5DxGXwGU+1fUajYe48ECkRVkzRDCgylgZM81USsaeHtcJPwfWo8ETfhDx/bKPQDQ"}}, "unsigned": {"age_ts": 1570043624903}}}ceQ33$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3452}{"sender": "@__ANON__-39:localhost:42455", "hashes": {"sha256": "5PB/GpM46brpJvmvierG/ViGlhSAhTQUaDyNZaEsjqk"}, "state_key": "@__ANON__-39:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "type": "m.room.member", "prev_events": ["$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ"], "origin_server_ts": 1570043624140, "content": {"membership": "join"}, "auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY"], "signatures": {"localhost:42455": {"ed25519:1": "KiAsYZ6A5+XD96WIjex2fV3hyEyeR9D/bPwVKP6YKCgVwOIZqb64/7XHqyBWfKV0itTYs9EivfD6Nwvr8lqkCg"}}, "unsigned": {}}beQa$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3451}{"auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY"], "type": "m.room.history_visibility", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043622720, "hashes": {"sha256": "sllJwHAHG528Gl/WXFlmRx8Oh+jiER248ZO/egmFfj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GOxx/W6TLtuOQgXmPDzADPubGbGBKpYgN7RgL2YDYFjau4y8grfx/xjGzZ5V8igv2Cjf9GJ7jsOxN1pPXS5IDA"}}, "unsigned": {"age_ts": 1570043622720}}taeQau$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3450}{"auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA"], "type": "m.room.join_rules", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043621978, "hashes": {"sha256": "PpqV358cHW22WOfP0WPzCEOgUKhS8NgvV8e102OOEAQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yV5uXzZDusDljY5mYBM1anbEpynkpG+eseI8A5xot/xn5MraJm1cyujB4G/MzOFSiH1xWvavffQXeyVe48SABw"}}, "unsigned": {"age_ts": 1570043621978}} DW s}R' < P % > H y N #  { qFge:T J  c8 mBk@ )i w L ! u*Q!UTAORDrNxIbSlGByAp:localhost:8800 ? ?*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!VCSCNemqikJZiRtxrs:localhost:8829*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 @ @*Q!UMFUOnYRvwKwSPkYHB:localhost:8800||*Q!UMFUOnYRvwKwSPkYHB:localhost:8800{{*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!VOhMAiLfKyTOZbmKGw:localhost:8800nn*Q!VOhMAiLfKyTOZbmKGw:localhost:8800mm*Q!UTAORDrNxIbSlGByAp:localhost:8800 9 9*Q!UTAORDrNxIbSlGByAp:localhost:8800 7 7*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800 V*Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UTAORDrNxIbSlGByAp:localhost:8800 H H*Q!UTAORDrNxIbSlGByAp:localhost:8800 G G*Q!UTAORDrNxIbSlGByAp:localhost:8800 F F*Q!UTAORDrNxIbSlGByAp:localhost:8800 E E*Q!UTAORDrNxIbSlGByAp:localhost:8800 D D*Q!UTAORDrNxIbSlGByAp:localhost:8800 C C*Q!UTAORDrNxIbSlGByAp:localhost:8800 B B*Q!UTAORDrNxIbSlGByAp:localhost:8800 A A*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!VUibrTIkcRbfrogbQV:localhost:8800  *Q!VOhMAiLfKyTOZbmKGw:localhost:8800tt*Q!VOhMAiLfKyTOZbmKGw:localhost:8800ss*Q!VOhMAiLfKyTOZbmKGw:localhost:8800rr*Q!VOhMAiLfKyTOZbmKGw:localhost:8800qq*Q!VOhMAiLfKyTOZbmKGw:localhost:8800pp*Q!VOhMAiLfKyTOZbmKGw:localhost:8800oo*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800~~*Q!UMFUOnYRvwKwSPkYHB:localhost:8800}}*Q!UTAORDrNxIbSlGByAp:localhost:8800 > >*Q!UTAORDrNxIbSlGByAp:localhost:8800 = =*Q!UTAORDrNxIbSlGByAp:localhost:8800 ; ;*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 + `|vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& wvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  !. G _ f  G6fk %*NQQ'Ee L!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$chlKAjAZ1f_xaVxHnTSqQzyLfXsn2Y6Xju6nAWvw3t8oPQ? e K!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibility$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwgOQ/ e J!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQiNQ3 e I!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 MQ']e H!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAcLQ' e G!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sKQ'Ee F!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcJQ'Ee E!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$0vo8cyfZw4Fp-lThwbYE0zSUTKkZrbu73OPguC5PCQ4oIQ? e D!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibility$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0gHQ/ e C!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawiGQ3 e B!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI FQ']e A!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUcEQ' e @!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQgDQ/ e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY CQ']e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXABQ'Ee ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgcAQ' e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qi@Q3 e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAg?Q/ e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY >Q']e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA=Q'Ee >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgc<Q' e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qi;Q3 e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAg:Q/ e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 9Q']e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA8Q'Ee =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgc7Q' e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qi6Q3 e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAg5Q/ e ] @anon-20191002_181700-708:localhost:8800>.=]@anon-20191002_181700-707:localhost:88003.<] @anon-20191002_181700-706:localhost:88009.;]@anon-20191002_181700-705:localhost:8800/.:] @anon-20191002_181700-704:localhost:88004.9]@anon-20191002_181700-703:localhost:8800).8] @anon-20191002_181700-702:localhost:8800/.7] @anon-20191002_181700-701:localhost:8800).6] @anon-20191002_181700-700:localhost:8800(.5]@anon-20191002_181700-697:localhost:8800.4] @anon-20191002_181700-698:localhost:8800#.3]@anon-20191002_181700-696:localhost:8800.2]@anon-20191002_181700-695:localhost:8800.1]@anon-20191002_181700-693:localhost:8800.0]@anon-20191002_181700-692:localhost:8800./] @anon-20191002_181700-691:localhost:8800..] @anon-20191002_181700-690:localhost:8800.-]@anon-20191002_181700-689:localhost:8800.,]@anon-20191002_181700-688:localhost:8800.+]@anon-20191002_181700-687:localhost:8800.*]@anon-20191002_181700-686:localhost:8800.)] @anon-20191002_181700-685:localhost:8800.(] @anon-20191002_181700-684:localhost:8800.'] @anon-20191002_181700-683:localhost:8800 .&] @anon-20191002_181700-682:localhost:8800 .%] @anon-20191002_181700-681:localhost:8800 .$] @anon-20191002_181700-680:localhost:8800 .#] @anon-20191002_181700-679:localhost:8800 ."] @anon-20191002_181700-678:localhost:8800 .!] @anon-20191002_181700-677:localhost:8800 . ] @anon-20191002_181700-676:localhost:8800 .] @anon-20191002_181700-675:localhost:8800 .] @anon-20191002_181700-674:localhost:8800 .] @anon-20191002_181700-673:localhost:8800 .] @anon-20191002_181700-672:localhost:8800 .] @anon-20191002_181700-671:localhost:8800 .] @anon-20191002_181700-670:localhost:8800 .] @anon-20191002_181700-669:localhost:8800 /]@anon-20191002_181700-668:localhost:8800 a1ohoZa  h  o  v # i } * 18?FMT?]PdQ]!OCEHAjcOXWNyWIESIS:localhost:8800@anon-20191002_181700-616:localhost:88004PcQ]!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-614:localhost:88004PbQ]!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-612:localhost:88004PaQ]!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-608:localhost:88004P`Q]!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-606:localhost:88004P_Q]!zqQJfFCRlSEDPKlQPy:localhost:8800@anon-20191002_181700-605:localhost:88004x1 !6:localhost:424551n1 !5:localhost:424551PfQ]!pHoEnhQYhwlbJXqKQE:localhost:8800@anon-20191002_181700-619:localhost:88001MPQ]!uGpSboYkgxVNOqNeUG:localhost:8800@anon-20191002_181700-669:localhost:88001PQ]!DSFBpkqfnvBQbGoMUK:localhost:8800@anon-20191002_181700-668:localhost:88004e1 !0:localhost:424551P Q]!ZKPJvrCZHMHPEksYDc:localhost:8800@anon-20191002_181700-668:localhost:88004P Q]!PgNDjhhIBAXKryuGKy:localhost:8800@anon-20191002_181700-667:localhost:88005P Q]!vnFXnkCSfTbsSNKrtg:localhost:8800@anon-20191002_181700-666:localhost:88004P Q]!jRuDexjFzIDOKbwDJQ:localhost:8800@anon-20191002_181700-665:localhost:88004P Q ]!KcXNWNfbLcYsBKZHIp:localhost:8800@anon-20191002_181700-664:localhost:88004PQ]!dBfASZrfiFeSKTjYJm:localhost:8800@anon-20191002_181700-663:localhost:88001PQ]!taANXnGBZntAreRurn:localhost:8800@anon-20191002_181700-662:localhost:88001PQ]!tcYctHPiaKzsKgrXlU:localhost:8800@anon-20191002_181700-661:localhost:88001PQ]!drnXStKXkNQkouqUAg:localhost:8800@anon-20191002_181700-660:localhost:88001PQ]!zScKnCZCFPIIodAiQj:localhost:8800@anon-20191002_181700-659:localhost:88001PQ]!LazKtcHZriKzCvvGwV:localhost:8800@anon-20191002_181700-658:localhost:88001PQ]!lEJUJZxqZPKZetemiR:localhost:8800@anon-20191002_181700-657:localhost:88001PQ]!bLWyXaXdvUhdSAooUz:localhost:8800@anon-20191002_181700-656:localhost:88001PQ]!YmRuIWixFpaqEeDQLZ:localhost:8800@anon-20191002_181700-655:localhost:88001PQ]!bjdLCdBwkKaihRIRFG:localhost:8800@anon-20191002_181700-654:localhost:88001P~Q]!qzrZzAieCgGSbpKOQR:localhost:8800@anon-20191002_181700-653:localhost:88001P}Q]!qzurjQHmiriwjaUMhO:localhost:8800@anon-20191002_181700-652:localhost:88001P|Q]!TSFcaXDBqrCREHRHxv:localhost:8800@anon-20191002_181700-646:localhost:88001P{Q]!AOEdqVKPFddrqbKPOL:localhost:8800@anon-20191002_181700-645:localhost:88004PzQ]!wBBQYEPjQGnoAzDpEu:localhost:8800@anon-20191002_181700-644:localhost:88004PyQ]!oZGRyBAkNDrEeiAqWL:localhost:8800@anon-20191002_181700-643:localhost:88001PwQ]!cRbfhxZdPstEsPGPAu:localhost:8800@anon-20191002_181700-641:localhost:88004PvQ]!sAWFpvSUPExZLVcPEd:localhost:8800@anon-20191002_181700-640:localhost:88004PuQ]!YpcmaMNMzjvtgYtrli:localhost:8800@anon-20191002_181700-639:localhost:88004PtQ]!PzoqoNRxeEEqiLyVSV:localhost:8800@anon-20191002_181700-638:localhost:88004PsQ]!uPxXJHJyFQwvpQLZNs:localhost:8800@anon-20191002_181700-637:localhost:88001PrQ]!UluPYLGXtInKDTjRzp:localhost:8800@anon-20191002_181700-636:localhost:88004PqQ]!QkkdnzvdrjHaFGkzMt:localhost:8800@anon-20191002_181700-635:localhost:88004PpQ]!DuqHkpTfWCUblSrxQj:localhost:8800@anon-20191002_181700-634:localhost:88004PoQ]!NanhNmCnVVpmZRJrTF:localhost:8800@anon-20191002_181700-633:localhost:88004PmQ]!sqkBzbHHJOTNWwynqV:localhost:8800@anon-20191002_181700-628:localhost:88002PlQ]!qInWQPtNQfBFoVzUtP:localhost:8800@anon-20191002_181700-626:localhost:88002PkQ]!FZOLkaLbBpaibrbHZx:localhost:8800@anon-20191002_181700-625:localhost:88002PjQ]!QxqzQoEBIZhmzHIGrl:localhost:8800@anon-20191002_181700-624:localhost:88002PiQ]!fDISaqNBhlOwherxSt:localhost:8800@anon-20191002_181700-623:localhost:88001PhQ]!yAfsSyqpJWFnkXQFJL:localhost:8800@anon-20191002_181700-622:localhost:88004PgQ]!AYFqrmxwClFQlcTTYq:localhost:8800@anon-20191002_181700-620:localhost:88001 ZN1v7h) hK4 s X % s V ;  \ ? $  i 6 u 6  uXAtA*iL1vC&[xaF/  bm.room.join_rules 2'E :m.room.member@__ANON__-39:localhost:42455 "?  9m.room.history_visibility /  8m.room.join_rules 3  7m.room.power_levels >'] 6m.room.member@anon-20191002_181700-667:localhost:8800 '  5m.room.create 2'E 4m.room.member@__ANON__-38:localhost:42455 2'E 3m.room.member@__ANON__-38:localhost:42455 "?  2m.room.history_visibility /  1m.room.join_rules 3  0m.room.power_levels >'] /m.room.member@anon-20191002_181700-666:localhost:8800 '  bm.room.create 3  am.room.power_levels 2'E am.room.member@__ANON__-43:localhost:42455 /  am.room.join_rules '  am.room.create 3  `m.room.power_levels 2'E `m.room.member@__ANON__-43:localhost:42455 /  `m.room.join_rules '  `m.room.create 2'E _m.room.member@__ANON__-43:localhost:42455 2'E ^m.room.member@__ANON__-43:localhost:42455 "?  ]m.room.history_visibility /  \m.room.join_rules 3  [m.room.power_levels >'] Zm.room.member@anon-20191002_181700-670:localhost:8800 '  Ym.room.create 3  Xm.room.power_levels 2'E Xm.room.member@__ANON__-41:localhost:42455 /  Xm.room.join_rules '  Xm.room.create 2'E Wm.room.member@__ANON__-41:localhost:42455 2'E Vm.room.member@__ANON__-41:localhost:42455 "?  Um.room.history_visibility /  Tm.room.join_rules 3  Sm.room.power_levels >'] Rm.room.member@anon-20191002_181700-669:localhost:8800 '  Qm.room.create 3  Pm.room.power_levels >'] Pm.room.member@anon-20191002_181700-668:localhost:8800 2'E Pm.room.member@__ANON__-40:localhost:42455 /  Pm.room.join_rules '  Pm.room.create 3  Om.room.power_levels >'] Om.room.member@anon-20191002_181700-668:localhost:8800 2'E Om.room.member@__ANON__-40:localhost:42455 /  Om.room.join_rules '  Om.room.create 3  Nm.room.power_levels >'] Nm.room.member@anon-20191002_181700-668:localhost:8800 2'E Nm.room.member@__ANON__-40:localhost:42455 /  Nm.room.join_rules '  Nm.room.create 2'E Mm.room.member@__ANON__-40:localhost:42455 2'E Lm.room.member@__ANON__-40:localhost:42455 "?  Km.room.history_visibility /  Jm.room.join_rules 3  Im.room.power_levels >'] Hm.room.member@anon-20191002_181700-668:localhost:8800 '  Gm.room.create 2'E Fm.room.member@__ANON__-40:localhost:42455 2'E Em.room.member@__ANON__-40:localhost:42455 "?  Dm.room.history_visibility /  Cm.room.join_rules 3  Bm.room.power_levels >'] Am.room.member@anon-20191002_181700-668:localhost:8800 '  @m.room.create 3  ?m.room.power_levels >'] ?m.room.member@anon-20191002_181700-667:localhost:8800 2'E ?m.room.member@__ANON__-39:localhost:42455 /  ?m.room.join_rules '  ?m.room.create 3  >m.room.power_levels >'] >m.room.member@anon-20191002_181700-667:localhost:8800 2'E >m.room.member@__ANON__-39:localhost:42455 /  >m.room.join_rules '  >m.room.create 3  =m.room.power_levels >'] =m.room.member@anon-20191002_181700-667:localhost:8800 2'E =m.room.member@__ANON__-39:localhost:42455 /  =m.room.join_rules '  =m.room.create 3  '] M f (Ib$UD?Sgb TLQe !PVyTvKbqnjSXfGWAMy:localhost:8800$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcTKQe !SrwdtDytJDUBVZOueF:localhost:8800$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4TJQe !PVyTvKbqnjSXfGWAMy:localhost:8800$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRETIQe !SrwdtDytJDUBVZOueF:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYTHQe !PVyTvKbqnjSXfGWAMy:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gTGQe !SrwdtDytJDUBVZOueF:localhost:8800$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSukTFQe !PVyTvKbqnjSXfGWAMy:localhost:8800$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI;E3Q !13:localhost:42455$1570043683436iTOlZ:localhost:8800;D3Q !12:localhost:42455$1570043680434abJWo:localhost:8800TCQe !nhbUIcIbhuXkRqfeDa:localhost:8800$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxATBQe !nhbUIcIbhuXkRqfeDa:localhost:8800$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0TAQe !nhbUIcIbhuXkRqfeDa:localhost:8800$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYT@Qe !nhbUIcIbhuXkRqfeDa:localhost:8800$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIT?Qe !nhbUIcIbhuXkRqfeDa:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIT>Qe !nhbUIcIbhuXkRqfeDa:localhost:8800$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs;=3Q !11:localhost:42455$1570043670433bjAzo:localhost:8800;<3Q !11:localhost:42455$1570043668432TfiHj:localhost:8800;;3Q !10:localhost:42455$1570043664431IMLSL:localhost:8800::1Q !9:localhost:42455$1570043660430kLPpN:localhost:8800F9QI !SnROoiDBapNNtMmKnT:localhost:8800$64_redaction2:localhost:42455F8QI !SnROoiDBapNNtMmKnT:localhost:8800$63_redaction1:localhost:42455;7Q3 !SnROoiDBapNNtMmKnT:localhost:8800$62:localhost:42455J6QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043656428rZaqi:localhost:8800J5QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043655427tEtWD:localhost:8800J4QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043654426seixP:localhost:8800J3QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043653425AhyPB:localhost:8800J2QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043652424mkkFn:localhost:8800B1QA !uGpSboYkgxVNOqNeUG:localhost:8800$lolredact:localhost:42455;0Q3 !uGpSboYkgxVNOqNeUG:localhost:8800$61:localhost:42455J/QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043648422SglHQ:localhost:8800J.QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043647421dmTZW:localhost:8800J-QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043646420mPrhj:localhost:8800J,QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043646419zIOAX:localhost:8800J+QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043645418ABZkc:localhost:8800T*Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcT)Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAT(Qe !ZKPJvrCZHMHPEksYDc:localhost:8800$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3ET'Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsT&Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwT%Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQT$Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4T#Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAT"Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sT!Qe !ZKPJvrCZHMHPEksYDc:localhost:8800$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcT Qe !ZKPJvrCZHMHPEksYDc:localhost:8800$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0TQe !ZKPJvrCZHMHPEksYDc:localhost:8800$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawTQe !ZKPJvrCZHMHPEksYDc:localhost:8800$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgITQe !ZKPJvrCZHMHPEksYDc:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUTQe !ZKPJvrCZHMHPEksYDc:localhost:8800$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ oBMtM%WG % G _ 8   s K #  ^ 6   q I "g   [ 4 5opSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localho'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800]&'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800('Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800yuP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800r'Q!sqkBzbHHJOTNWwynqV:localhost:8800l/'Q!yAfsSyqpJWFnkXQFJL:localhost:8800g'Q!zqQJfFCRlSEDPKlQPy:localhost:8800^'Q!ybXveQoxPVhjpKHAkG:localhost:8800U'Q!vZGjXEXQoCaoUXnkCa:localhost:8800O'Q!xcdNyJNFEdaBGFycsB:localhost:8800L('Q!tPkCGJBKmqUXJoRrnY:localhost:8800E'Q!zHBgbzUZHshNGZvIBS:localhost:8800@'Q!vRmMcoJDeCupADwqac:localhost:8800:'Q!wBkUBAjOznOyxrLchl:localhost:88005('Q!vBvlJEXUSQKUYmsKcO:localhost:88000'Q!ubmTdQFAhrhZkGULDx:localhost:8800*'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800 oBMtM%WG % G _ 8   s K #  ^ 6   q I "g   [ 4 5opSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localho'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800]&'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800('Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800yuP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800r'Q!sqkBzbHHJOTNWwynqV:localhost:8800l/'Q!yAfsSyqpJWFnkXQFJL:localhost:8800g'Q!zqQJfFCRlSEDPKlQPy:localhost:8800^'Q!ybXveQoxPVhjpKHAkG:localhost:8800U'Q!vZGjXEXQoCaoUXnkCa:localhost:8800O'Q!xcdNyJNFEdaBGFycsB:localhost:8800L('Q!tPkCGJBKmqUXJoRrnY:localhost:8800E'Q!zHBgbzUZHshNGZvIBS:localhost:8800@'Q!vRmMcoJDeCupADwqac:localhost:8800:'Q!wBkUBAjOznOyxrLchl:localhost:88005('Q!vBvlJEXUSQKUYmsKcO:localhost:88000'Q!ubmTdQFAhrhZkGULDx:localhost:8800*'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800 oBMtM%WG % G _ 8   s K #  ^ 6   q I "g   [ 4 5opSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localho'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800]&'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800('Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800yuP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800r'Q!sqkBzbHHJOTNWwynqV:localhost:8800l/'Q!yAfsSyqpJWFnkXQFJL:localhost:8800g'Q!zqQJfFCRlSEDPKlQPy:localhost:8800^'Q!ybXveQoxPVhjpKHAkG:localhost:8800U'Q!vZGjXEXQoCaoUXnkCa:localhost:8800O'Q!xcdNyJNFEdaBGFycsB:localhost:8800L('Q!tPkCGJBKmqUXJoRrnY:localhost:8800E'Q!zHBgbzUZHshNGZvIBS:localhost:8800@'Q!vRmMcoJDeCupADwqac:localhost:8800:'Q!wBkUBAjOznOyxrLchl:localhost:88005('Q!vBvlJEXUSQKUYmsKcO:localhost:88000'Q!ubmTdQFAhrhZkGULDx:localhost:8800*'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800 +j80p> v D   | J  P  V $  \ *b1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 81e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc v1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM o1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboz1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y ~1e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD41e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA>1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM O1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoW1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAJ1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A,1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE-1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 a1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sP1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sO1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sN1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIQ1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk=1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis11e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM DwIc5 ~ P " jrDR$l>cX*6 <  V  ( `3R% w c O ; '  s _ K 7 #  o [ G 3   k W C /   w _ G ' n--]@anon-20191002_181700-755:localhost:8800 -]@anon-20191002_181700-742:localhost:8800 W-]@anon-20191002_181700-737:localhost:8829 U-]@anon-20191002_181700-736:localhost:8800 Q-]@anon-20191002_181700-787:localhost:8800 -]@anon-20191002_181700-768:localhost:8800 -]@anon-20191002_181700-767:localhost:8800 -]@anon-20191002_181700-763:localhost:8800 -]@anon-20191002_181700-762:localhost:8800 -]@anon-20191002_181700-758:localhost:8800 -]@anon-20191002_181700-757:localhost:8800 -]@anon-20191002_181700-754:localhost:8800 |-]@anon-20191002_181700-755:localhost:8800 z-]@anon-20191002_181700-754:localhost:8800 u-]@anon-20191002_181700-752:localhost:8800 p-]@anon-20191002_181700-751:localhost:8800 n-]@anon-20191002_181700-750:localhost:8800 i-]@anon-20191002_181700-747:localhost:8800 g-]@anon-20191002_181700-746:localhost:8800 b-]@anon-20191002_181700-744:localhost:8800 ]-]@anon-20191002_181700-743:localhost:8800 [,[@anon-20191002_181700-81:localhost:8800,[@anon-20191002_181700-79:localhost:8800,[@anon-20191002_181700-77:localhost:8800,[@anon-20191002_181700-75:localhost:8800,[@anon-20191002_181700-74:localhost:8800,-]@anon-20191002_181700-717:localhost:8800 ,[@anon-20191002_181700-94:localhost:8829,[@anon-20191002_181700-93:localhost:8800,[@anon-20191002_181700-92:localhost:8829,[@anon-20191002_181700-91:localhost:8800,[@anon-20191002_181700-90:localhost:8800,[@anon-20191002_181700-89:localhost:8800,[@anon-20191002_181700-87:localhost:8800,[@anon-20191002_181700-86:localhost:8800,[@anon-20191002_181700-85:localhost:8800,[@anon-20191002_181700-84:localhost:8800,[@anon-20191002_181700-83:localhost:8800,[@anon-20191002_181700-82:localhost:8800-]@anon-20191002_181700-832:localhost:8800 -]@anon-20191002_181700-832:localhost:8800 -]@anon-20191002_181700-831:localhost:8800 -]@anon-20191002_181700-797:localhost:8800 -]@anon-20191002_181700-795:localhost:8800 -]@anon-20191002_181700-793:localhost:8800 -]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-789:localhost:8800 -]@anon-20191002_181700-735:localhost:8800 O-]@anon-20191002_181700-734:localhost:8800 K-]@anon-20191002_181700-733:localhost:8800 H-]@anon-20191002_181700-732:localhost:8800 D-]@anon-20191002_181700-731:localhost:8800 A-]@anon-20191002_181700-730:localhost:8800 =,[@anon-20191002_181700-72:localhost:8829-]@anon-20191002_181700-729:localhost:8800 9-]@anon-20191002_181700-728:localhost:8800 5-]@anon-20191002_181700-727:localhost:8800 3-]@anon-20191002_181700-726:localhost:8800 .-]@anon-20191002_181700-725:localhost:8800 ,-]@anon-20191002_181700-724:localhost:8800 (-]@anon-20191002_181700-723:localhost:8800 %-]@anon-20191002_181700-722:localhost:8800 !-]@anon-20191002_181700-721:localhost:8800 -]@anon-20191002_181700-720:localhost:8800 ,[@anon-20191002_181700-71:localhost:8800-]@anon-20191002_181700-719:localhost:8800 -]@anon-20191002_181700-718:localhost:8800   ~ipeQa_$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3465}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-668:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043635846, "hashes": {"sha256": "JmYK5YGa2UymFasOTGOb3QTaUB+UApSOIkci7C+/PS4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TssE31c38CS6lMVGI5C6I+eubJVC1UnpGH7GjN14tm6L1L+ad4Y/Cs8+tGJX6zoia9zl4ynWoQhNryrllUHmDg"}}, "unsigned": {"age_ts": 1570043635846}}}oeQ33$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3464}{"hashes": {"sha256": "szPl9l5LwzW+DR6cX8yNMZ+RWUbYqH5iQnVSoktPqek"}, "sender": "@__ANON__-40:localhost:42455", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-40:localhost:42455", "depth": 6, "origin": "localhost:42455", "origin_server_ts": 1570043634734, "prev_events": ["$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0"], "auth_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw"], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "mzYB4bOOO5xxn7OBydvf9HwMRiEGZny+aI9RV1DUndvXAYcOUdDXdFHo1czfSEiHIpmtMKlLV6HTqPXr8nvPDw"}}, "unsigned": {}}neQa$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800{"token_id": 648, "stream_ordering": 3463}{"auth_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU"], "prev_events": ["$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw"], "type": "m.room.history_visibility", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043633468, "hashes": {"sha256": "sA6g6jDEd0jSdu22GayEu8NRKqs8YnF5tdzqhz3NYJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "42w2L7OImpjts3DIrIVL2Q7V3dXekpT3N6myWwEAdKFbqbCIjdm9qItweG4gHOZasejnDad3kwOvEoNdcO04Dg"}}, "unsigned": {"age_ts": 1570043633468}}tmeQau$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800{"token_id": 648, "stream_ordering": 3462}{"auth_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU"], "prev_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI"], "type": "m.room.join_rules", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043632711, "hashes": {"sha256": "uwZ+MlUSajUEe5a6FfK3jcxW+8MlTJbruiGeKICFMZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CXx9tJRddUaaQqlltoXXk3jFg3ththgIUgk7MjjmwdRBJfLS9w7WVHV00cfeFesrhH10fRiGv1PTVcOAxWb9Bg"}}, "unsigned": {"age_ts": 1570043632711}}  | l U   M E=5-% deeQ$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800 eeQ$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800 ! eeQ$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800eeQ$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800WeeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800@eeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800eeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800yeeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800;eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800>eeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800́eeQ$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800FeeQ$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800teeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800 IeeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800 eeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800 `eeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800 d $DO f  2 - , I,0n,] -AdQ' e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.create$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJss3']Q !11:localhost:42455m.room.member@anon-20191002_181700-674:localhost:8800$1570043670433bjAzo:localhost:8800s3']Q !11:localhost:42455m.room.member@anon-20191002_181700-673:localhost:8800$1570043668432TfiHj:localhost:8800X3'E3 !11:localhost:42455m.room.member@__ANON__-47:localhost:42455$72:localhost:42455@3/ 3 !11:localhost:42455m.room.join_rules$73:localhost:42455<3' 3 !11:localhost:42455m.room.create$71:localhost:42455s3']Q !10:localhost:42455m.room.member@anon-20191002_181700-672:localhost:8800$1570043664431IMLSL:localhost:8800X3'E3 !10:localhost:42455m.room.member@__ANON__-46:localhost:42455$69:localhost:42455<3' 3 !10:localhost:42455m.room.create$68:localhost:42455@3/ 3 !10:localhost:42455m.room.join_rules$70:localhost:42455r~1']Q !9:localhost:42455m.room.member@anon-20191002_181700-671:localhost:8800$1570043660430kLPpN:localhost:8800W}1'E3 !9:localhost:42455m.room.member@__ANON__-45:localhost:42455$66:localhost:42455?|1/ 3 !9:localhost:42455m.room.join_rules$67:localhost:42455;{1' 3 !9:localhost:42455m.room.create$65:localhost:42455zQ/ QQ !SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800$1570043655427tEtWD:localhost:8800zyQ'E33 !SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455$62:localhost:42455|xQ' QQ !SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800$1570043652424mkkFn:localhost:8800wQ3 QQ !SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800$1570043654426seixP:localhost:8800gvQ'E3 !SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455fuQ? Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.history_visibility$1570043656428rZaqi:localhost:8800^tQ/ Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800`sQ3 Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800rQ']Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800$1570043653425AhyPB:localhost:8800ZqQ' Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800pQ/ QQ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800$1570043647421dmTZW:localhost:8800zoQ'E33 !uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455$61:localhost:42455|nQ' QQ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800$1570043645418ABZkc:localhost:8800mQ3 QQ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800$1570043646420mPrhj:localhost:8800glQ'E3 !uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455fkQ? Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility$1570043648422SglHQ:localhost:8800^jQ/ Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800`iQ3 Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800hQ']Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800$1570043646419zIOAX:localhost:8800ZgQ' Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800fQ/ ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ8eQ']ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA iV010123456781700920191002126830123442455 92345678950134567891012346892012312345678940123458950123456789612345678970123467898023460135 678910246792023456893234567894012345652345678960123 WX w C  q -&Tx .7Wp*3/3 E$70:localhost:42455m.room.join_rules!10:localhost:42455m&m@__ANON__-46:localhost:42455j) 3'3 E$69:localhost:42455m.room.member!10:localhost:42455m%m@__ANON__-46:localhost:42455j(3'3 E$68:localhost:42455m.room.create!10:localhost:42455m%m@__ANON__-46:localhost:42455'Q'1 ]$1570043660430kLPpN:localhost:8800m.room.member!9:localhost:42455m /m C@anon-20191002_181700-671:localhost:8800o#3/1 E$67:localhost:42455m.room.join_rules!9:localhost:42455m m @__ANON__-45:localhost:42455i" 3'1 E$66:localhost:42455m.room.member!9:localhost:42455m m @__ANON__-45:localhost:42455i!3'1 E$65:localhost:42455m.room.create!9:localhost:42455m m @__ANON__-45:localhost:42455 I-Q E$64_redaction2:localhost:42455m.room.redaction!SnROoiDBapNNtMmKnT:localhost:8800mm<@__ANON__-43:localhost:42455 I-Q E$63_redaction1:localhost:42455m.room.redaction!SnROoiDBapNNtMmKnT:localhost:8800mXmF@__ANON__-43:localhost:42455{3'Q E$62:localhost:42455m.room.member!SnROoiDBapNNtMmKnT:localhost:8800mm@__ANON__-43:localhost:42455"Q?Q ]$1570043656428rZaqi:localhost:8800m.room.history_visibility!SnROoiDBapNNtMmKnT:localhost:8800mm@anon-20191002_181700-670:localhost:8800Q/Q ]$1570043655427tEtWD:localhost:8800m.room.join_rules!SnROoiDBapNNtMmKnT:localhost:8800mm@anon-20191002_181700-670:localhost:8800Q3Q ]$1570043654426seixP:localhost:8800m.room.power_levels!SnROoiDBapNNtMmKnT:localhost:8800mPm@anon-20191002_181700-670:localhost:8800Q'Q ]$1570043653425AhyPB:localhost:8800m.room.member!SnROoiDBapNNtMmKnT:localhost:8800m,m@anon-20191002_181700-670:localhost:8800 Q'Q  ]$1570043652424mkkFn:localhost:8800m.room.create!SnROoiDBapNNtMmKnT:localhost:8800mhm@anon-20191002_181700-670:localhost:8800A-Q E$lolredact:localhost:42455m.room.redaction!uGpSboYkgxVNOqNeUG:localhost:8800mgmD@__ANON__-41:localhost:42455{3'Q E$61:localhost:42455m.room.member!uGpSboYkgxVNOqNeUG:localhost:8800mm@__ANON__-41:localhost:42455"Q?Q ]$1570043648422SglHQ:localhost:8800m.room.history_visibility!uGpSboYkgxVNOqNeUG:localhost:8800m(m۽@anon-20191002_181700-669:localhost:8800Q/Q ]$1570043647421dmTZW:localhost:8800m.room.join_rules!uGpSboYkgxVNOqNeUG:localhost:8800m֨m/@anon-20191002_181700-669:localhost:8800Q3Q ]$1570043646420mPrhj:localhost:8800m.room.power_levels!uGpSboYkgxVNOqNeUG:localhost:8800mmf@anon-20191002_181700-669:localhost:8800Q'Q ]$1570043646419zIOAX:localhost:8800m.room.member!uGpSboYkgxVNOqNeUG:localhost:8800mmm@anon-20191002_181700-669:localhost:8800 Q'Q  ]$1570043645418ABZkc:localhost:8800m.room.create!uGpSboYkgxVNOqNeUG:localhost:8800mm!@anon-20191002_181700-669:localhost:8800e)Q E$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcm.room.message!DSFBpkqfnvBQbGoMUK:localhost:8800mmȂ@__ANON__-40:localhost:42455e-Q E$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAm.room.redaction!DSFBpkqfnvBQbGoMUK:localhost:8800m_m @__ANON__-40:localhost:42455e)Q E$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Em.room.message!ZKPJvrCZHMHPEksYDc:localhost:8800mm3@__ANON__-40:localhost:42455e'Q E$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsm.room.member!DSFBpkqfnvBQbGoMUK:localhost:8800mmW@__ANON__-40:localhost:42455, e?Q ]$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwm.room.history_visibility!DSFBpkqfnvBQbGoMUK:localhost:8800m%m@anon-20191002_181700-668:localhost:8800$ e/Q ]$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQm.room.join_rules!DSFBpkqfnvBQbGoMUK:localhost:8800mm䳸@anon-20191002_181700-668:localhost:8800 (e} { F l %i 1W}6z_CeLFQ33$1570043664431IMLSL:localhost:8800$70:localhost:42455!10:localhost:42455LEQ33$1570043664431IMLSL:localhost:8800$68:localhost:42455!10:localhost:42455=D333$70:localhost:42455$69:localhost:42455!10:localhost:42455=C333$70:localhost:42455$68:localhost:42455!10:localhost:42455=B333$69:localhost:42455$68:localhost:42455!10:localhost:42455KAQ31$1570043660430kLPpN:localhost:8800$67:localhost:42455!9:localhost:42455K@Q31$1570043660430kLPpN:localhost:8800$65:localhost:42455!9:localhost:42455331$67:localhost:42455$65:localhost:42455!9:localhost:42455<=331$66:localhost:42455$65:localhost:42455!9:localhost:42455[<3QQ$62:localhost:42455$1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800[;3QQ$62:localhost:42455$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800[:3QQ$62:localhost:42455$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j9QQQ$1570043656428rZaqi:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j8QQQ$1570043656428rZaqi:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j7QQQ$1570043656428rZaqi:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j6QQQ$1570043655427tEtWD:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j5QQQ$1570043655427tEtWD:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j4QQQ$1570043655427tEtWD:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j3QQQ$1570043654426seixP:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j2QQQ$1570043654426seixP:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j1QQQ$1570043653425AhyPB:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800[03QQ$61:localhost:42455$1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800[/3QQ$61:localhost:42455$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800[.3QQ$61:localhost:42455$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j-QQQ$1570043648422SglHQ:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j,QQQ$1570043648422SglHQ:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j+QQQ$1570043648422SglHQ:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j*QQQ$1570043647421dmTZW:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j)QQQ$1570043647421dmTZW:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j(QQQ$1570043647421dmTZW:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j'QQQ$1570043646420mPrhj:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j&QQQ$1570043646420mPrhj:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j%QQQ$1570043646419zIOAX:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800~$eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800~#eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~"eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800~!eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800~ eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800 $z~* 1 _ N x  ;TI$C8zYuQ' Q `!SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800_tQ3 Q `!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800fsQ'E3 _!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455urQ'EQ ^!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$1570043656429hLPPT:localhost:8800eqQ? Q ]!SnROoiDBapNNtMmKnT:localhost:8800m.room.history_visibility$1570043656428rZaqi:localhost:8800]pQ/ Q \!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800_oQ3 Q [!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800nQ']Q Z!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800$1570043653425AhyPB:localhost:8800YmQ' Q Y!SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800]lQ/ Q X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800fkQ'E3 X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455YjQ' Q X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800_iQ3 Q X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800fhQ'E3 W!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455ugQ'EQ V!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$1570043649423kEGEg:localhost:8800efQ? Q U!uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility$1570043648422SglHQ:localhost:8800]eQ/ Q T!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800_dQ3 Q S!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800cQ']Q R!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800$1570043646419zIOAX:localhost:8800YbQ' Q Q!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800gaQ/ e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ `Q']e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA_Q'Ee P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsc^Q' e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-si]Q3 e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4g\Q/ e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ [Q']e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAZQ'Ee O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMscYQ' e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-siXQ3 e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4gWQ/ e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw VQ']e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUUQ'Ee N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIccTQ' e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQiSQ3 e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgIRQ'Ee M!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs  *VxeQc7$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc!DSFBpkqfnvBQbGoMUK:localhost:8800{"outlier": false, "stream_ordering": 3473}{"origin_server_ts": 1570043643608, "prev_events": ["$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA"], "auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ", "$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs"], "content": {"body": "sentinel"}, "hashes": {"sha256": "WGOLn30MSVk6gZDVdBlm52yGE/76abyjWSfqFtV4DjI"}, "sender": "@__ANON__-40:localhost:42455", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "type": "m.room.message", "depth": 8, "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "QcoRuHEXA0GUI2wjwV64/7SKBWadBUaeVqH3xAeEHWYLhvuu9mJsxyMVQV8NRQT7fU7vjevPp7rbcjECn0h3Cw"}}, "unsigned": {}}MweQm$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA!DSFBpkqfnvBQbGoMUK:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 3472}{"type": "m.room.redaction", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "origin": "localhost:42455", "depth": 7, "hashes": {"sha256": "+2IVEG927kMn7PVy7MC7uzvd+28esKTjyOOolWlRtyg"}, "redacts": "$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E", "sender": "@__ANON__-40:localhost:42455", "auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ", "$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs"], "content": {}, "origin_server_ts": 1570043642975, "prev_events": ["$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA", "$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs"], "signatures": {"localhost:42455": {"ed25519:1": "ELr03yWfaYOJ0bqeZN+iO/kG9dtIhNfYOjYBTIQhFOILnvtFNNdPTEPC12uaE7VzaNLgldyZYpUveW/pepULAA"}}, "unsigned": {}}veQc $cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E!ZKPJvrCZHMHPEksYDc:localhost:8800{"outlier": false, "stream_ordering": 3471}{"depth": 7, "origin": "localhost:42455", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-40:localhost:42455", "hashes": {"sha256": "vRAGdnZL9qBP80+HV3GQEpXklEz0ebW9W9XUSAxNEUU"}, "content": {"body": "hi"}, "auth_events": ["$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw", "$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc"], "prev_events": ["$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU", "$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc"], "origin_server_ts": 1570043641629, "signatures": {"localhost:42455": {"ed25519:1": "ItnAMSUTrW/N8GhwHYgdR/8pWGoF2hMwqglf/1vpUTmxxEbsSqjw5Jt/JLFL4Cl0JrPetCQRvqp4YdLEQYH8Ag"}}, "unsigned": {}}}ueQ33$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3470}{"prev_events": ["$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw"], "origin_server_ts": 1570043641041, "content": {"membership": "join"}, "auth_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ"], "sender": "@__ANON__-40:localhost:42455", "hashes": {"sha256": "fRa8CiDYSo9t+mA9KNoyS7dsIwvFJxFDQdRCq9AVnWM"}, "origin": "localhost:42455", "state_key": "@__ANON__-40:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "signatures": {"localhost:42455": {"ed25519:1": "UwfgURiOXKyvZjCrtQbD+hCnmKgUPQ1XA1D2QeYlCa/I3I+Epdqo6/m4VHT87MQzp01oOP4MTSDG5Jo+xpQXAg"}}, "unsigned": {}} )~4 g  < ` ) h (XE :w'#^eeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800]eeQ$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800\eeQ$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800M[Q33$1570043683436iTOlZ:localhost:8800$80:localhost:42455!13:localhost:42455>Z333$80:localhost:42455$79:localhost:42455!13:localhost:42455>Y333$79:localhost:42455$78:localhost:42455!13:localhost:42455>X333$78:localhost:42455$77:localhost:42455!13:localhost:42455MWQ33$1570043680434abJWo:localhost:8800$76:localhost:42455!12:localhost:42455>V333$76:localhost:42455$75:localhost:42455!12:localhost:42455>U333$75:localhost:42455$74:localhost:42455!12:localhost:42455TeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0!nhbUIcIbhuXkRqfeDa:localhost:8800SeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800ReeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800QeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800PeeQ$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800\OQQ3$1570043670433bjAzo:localhost:8800$1570043668432TfiHj:localhost:8800!11:localhost:42455MNQ33$1570043668432TfiHj:localhost:8800$73:localhost:42455!11:localhost:42455>M333$73:localhost:42455$72:localhost:42455!11:localhost:42455>L333$72:localhost:42455$71:localhost:42455!11:localhost:42455MKQ33$1570043664431IMLSL:localhost:8800$70:localhost:42455!10:localhost:42455>J333$70:localhost:42455$69:localhost:42455!10:localhost:42455>I333$69:localhost:42455$68:localhost:42455!10:localhost:42455LHQ31$1570043660430kLPpN:localhost:8800$67:localhost:42455!9:localhost:42455=G331$67:localhost:42455$66:localhost:42455!9:localhost:42455=F331$66:localhost:42455$65:localhost:42455!9:localhost:42455cEIIQ$64_redaction2:localhost:42455$63_redaction1:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800XDI3Q$63_redaction1:localhost:42455$62:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800gCIQQ$63_redaction1:localhost:42455$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800\B3QQ$62:localhost:42455$1570043656428rZaqi:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800kAQQQ$1570043656428rZaqi:localhost:8800$1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800k@QQQ$1570043655427tEtWD:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800k?QQQ$1570043654426seixP:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800k>QQQ$1570043653425AhyPB:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800T=A3Q$lolredact:localhost:42455$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800c<AQQ$lolredact:localhost:42455$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800\;3QQ$61:localhost:42455$1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k:QQQ$1570043648422SglHQ:localhost:8800$1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k9QQQ$1570043647421dmTZW:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k8QQQ$1570043646420mPrhj:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k7QQQ$1570043646419zIOAX:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:88006eeQ$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA!DSFBpkqfnvBQbGoMUK:localhost:8800  +{QQay $1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3476}{"auth_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}]], "prev_events": [["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}]], "type": "m.room.power_levels", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"users": {"@anon-20191002_181700-669:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043646420mPrhj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043646972, "hashes": {"sha256": "zaNaUfAGU+DfTQiQRgKnM3qvcPri/UwpzdjS9naBWpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gw8552qy3pa1SzpWAmffvJ7v+qNiYe6/diyQUfQKiB32ybu4Kmz6adOO4bE6FaGMkJvgeqnEyIb1Ttn3mc4QCg"}}, "unsigned": {"age_ts": 1570043646972}}zQQa) $1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3475}{"auth_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}]], "prev_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}]], "type": "m.room.member", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-669", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-669:localhost:8800", "event_id": "$1570043646419zIOAX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043646210, "hashes": {"sha256": "lLdfq/4WOj1X+gdQ+K8zOgJUvahOI+8EkTdozHKchjM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "prt01oPkWqCilfHbJTnCGOcqXkzQPr3fH2JqMIIJ5+bCJMpSVBGJY72uDl6NQE1RtXuzvRoawARc8k0r0xSXCQ"}}, "unsigned": {"age_ts": 1570043646210}}yQQaC $1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3474}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-669:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043645418ABZkc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043645376, "hashes": {"sha256": "rlKyPDXjIXfHk1cmss1eoVSzp0xwt0zZCgyd36rVb4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "baGwkBCVL+4expwbRUUPD03+y69w1GRGJPSOK5FTpgswGB0dxLVANpBKDOc1HleZtJdaMpcVwZsMVrM16PuVAQ"}}, "unsigned": {"age_ts": 1570043645376}} WQ> v D + X &  ^ , j  d 2  l : sOAyGM8S!zH\C{I21e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAT1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW81e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cx1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygy1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4U1e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:42455 1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM3$68:localhost:42455 3$67:localhost:42455 3$66:localhost:42455 3$65:localhost:42455 #I$64_redaction2:localhost:42455 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 =1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 3$62:localhost:42455 1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYS3$61:localhost:42455 ?$60_msg_e:localhost:42455 b1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyke1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 40e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_461e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw #1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwY0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE 1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w_1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEM1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ)1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4h1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms81e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI?$59_msg_d:localhost:42455 a=$57_pl_x:localhost:42455 `3$56:localhost:42455 _1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA91e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE3$55:localhost:42455 X1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcw3$54:localhost:42455 L1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!3$53:localhost:42455 A1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m01e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ  R~3Q3 $61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3479}{"hashes": {"sha256": "9rM+B7cTKY16Zft+iH/1x/l7b4PM5G1/padeCKC1M3U"}, "sender": "@__ANON__-41:localhost:42455", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-41:localhost:42455", "depth": 6, "origin": "localhost:42455", "origin_server_ts": 1570043650075, "prev_events": [["$1570043648422SglHQ:localhost:8800", {"sha256": "5PaaXckigmyMRia95xwac+5GoXgcal0+FPHb79eb7G4"}]], "auth_events": [["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}], ["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043647421dmTZW:localhost:8800", {"sha256": "wrpWIlr98RjFanJegrxYb+D6Tcya3cZOT7Wb7RR6WyA"}]], "event_id": "$61:localhost:42455", "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "AHYtR8B73NcIsXoVXfuchd71Xw4ra6uMef17XAyNbMpa4lEExA/E77aQn8FzUbas88XlWCcbnyI53Q9ZHdgBBQ"}}, "unsigned": {}}x}QQa $1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3478}{"auth_events": [["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}], ["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}]], "prev_events": [["$1570043647421dmTZW:localhost:8800", {"sha256": "wrpWIlr98RjFanJegrxYb+D6Tcya3cZOT7Wb7RR6WyA"}]], "type": "m.room.history_visibility", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043648422SglHQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043648552, "hashes": {"sha256": "XoCHt50GI2e6Eawwo5MkYGnYJZYbAQ4/Are4ihR6iwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vVBNH4Z2X1vvilFJ/wrdAFqsuZEWs22J/HmQUCKLhgB7koypdCPsClgybW+rBD/X+nSRSaBgxAayFyBXBrG8Bg"}}, "unsigned": {"age_ts": 1570043648552}}g|QQaq $1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3477}{"auth_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}], ["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}]], "prev_events": [["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}]], "type": "m.room.join_rules", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043647421dmTZW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043647656, "hashes": {"sha256": "43NGXaBz3T+DwebiHfArjzWzEx4lxiTrz8UK0X78IP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MAF7hm6sSp5peM2LZ+jQ2P6BRiDrWfwuJkohqW4HfuBgpeSCzYZTgXeE3/pAUUbzHtNKDRcHoNTKQnmUInPeCA"}}, "unsigned": {"age_ts": 1570043647656}} 8l D `8v]c!E@anon-20191002_181700-678:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN1TlAwWG82Wjk9TmJMRDcKMDAyZnNpZ25hdHVyZSDHdjUIYdq9G8F0xDwxNNiGp10yY1jHP_5lfgbrygQQEAoFCKGQLJFUT127.0.0.1Perl + Net::Async::HTTP/0.44m刨u]c!E@anon-20191002_181700-677:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5kQ1ZKeSpnWjBOMXpDZzAKMDAyZnNpZ25hdHVyZSDvrFbGbzHhL7WMUz9qiwsWyy9v9OiCjnvlvf0J4k3tgwoSLBVCRXVGV127.0.0.1Perl + Net::Async::HTTP/0.44mat]c!E@anon-20191002_181700-676:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGF5cU5tQToyYzlyO0k4RHMKMDAyZnNpZ25hdHVyZSADq7MqzKyy_m0CqQDCpNud6twUGnEKIU03PurEBK1pqwoKCVXVHDURO127.0.0.1Perl + Net::Async::HTTP/0.44mWރs]c!E@anon-20191002_181700-675:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY1Q0ZueXl2aUM1WGVzLTcKMDAyZnNpZ25hdHVyZSCgGSKn6qoha4gSrVZ021fQ80uHRsn9NLcjTk7zXeemyQoROEGYOHAAM127.0.0.1Perl + Net::Async::HTTP/0.44m<r]c!E@anon-20191002_181700-674:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1NJmhzN1l5XmZ0aU07dDsKMDAyZnNpZ25hdHVyZSChh8ZI8Dry9A0VsLQ1li6T55q24bgp94HCldjEXAg0eQoGKOEAKYNVT127.0.0.1Perl + Net::Async::HTTP/0.44m+[q]c!E@anon-20191002_181700-673:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVTb2NBckU2Y3EsRSYxbE0KMDAyZnNpZ25hdHVyZSDPyX4pc-qbZ0xsQo-VcnrAwqx2vuZrB9EqeMLtqWnBKgoVPLLNWDDCE127.0.0.1Perl + Net::Async::HTTP/0.44m(ip]c!E@anon-20191002_181700-672:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEweTZtaFRUSnlxcDo4ZWYKMDAyZnNpZ25hdHVyZSC8lRJbhIaczkjRtXE2g5igrkLzLDhFzWAr_nAHfr3h1QoNZHSLWNGNR127.0.0.1Perl + Net::Async::HTTP/0.44m*o]c!E@anon-20191002_181700-671:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHloRmQ2ZW5NMEQyYUZJbSMKMDAyZnNpZ25hdHVyZSBCXEPnkKQSd2PCJE6yU8lc7Hj-8RhHbpPxgU7-oUklzgoKUQBONAEMF127.0.0.1Perl + Net::Async::HTTP/0.44m #n]c!E@anon-20191002_181700-670:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhckxaeWRkNnJzNVcqT2YKMDAyZnNpZ25hdHVyZSC-iNsYtRiREK0FMa_Z9Vtzc6E0hnnSkmmc43mtmI8iUgoMCSVGGDMMK127.0.0.1Perl + Net::Async::HTTP/0.44mm]c!E@anon-20191002_181700-669:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5woUUBRIPFVWO127.0.0.1Perl + Net::Async::HTTP/0.44me Q"P/   ^P 0 A p`!?a"@o Q<&EE@__ANON__-49:localhost:42455@__ANON__-49:localhost:42455<EE@__ANON__-35:localhost:42455@__ANON__-35:localhost:42455<%EE@__ANON__-48:localhost:42455@__ANON__-48:localhost:42455n$]@anon-20191002_181700-675:localhost:8800@anon-20191002_181700-675:localhost:8800 anon-20191002_181700-675n#]@anon-20191002_181700-674:localhost:8800@anon-20191002_181700-674:localhost:8800 anon-20191002_181700-674n"]@anon-20191002_181700-673:localhost:8800@anon-20191002_181700-673:localhost:8800 anon-20191002_181700-673v`lqv@GTZV/eL$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYsha256~E{q^*)(95E <v8D~V.eL$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWEsha256c L6[ ‡Z)EaV-eL$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNosha256u|b-IQ\;i|`1TV,eL$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOosha256>/f.UʰZ,xABbPV+eL$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScsha256~G0MId~62y jvK'V*eL$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Isha256g&,3u ޗ0$P;JV)eL$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEsha256@g//Km9MkLtV(eL$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcsha256Q[1{oYqO3rV'eL$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4sha256LRE2!9жE?8V&eL$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmREsha256DI*ۆRh?1=$EJ`V%eL$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYsha2567(Iʴ@@'nlW@vV$eL$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gsha256oxaPmi^gPhx d|9'=3L$75:localhost:42455sha256 _XP6`3wr(tyѵ =3L$74:localhost:42455sha256dןr0E~ ߥ{T`KVeL$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAsha256}G5ތË_1I1UqVeL$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0sha256 b#wnGTY!WEB,=R}VeL$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYsha256`h jW'kb9^|Y#Yn>VeL$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIsha256{GVgp^tx' 8Gg2`TEVeL$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIsha2562BI6tVʢ;HLlgG#2VeL$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJssha256T~%梡Ħ"^)vQvaP"=̛LQL$1570043670433bjAzo:localhost:8800sha256PiV>X\$Θ?)KMLQL$1570043668432TfiHj:localhost:8800sha256>-BqxLzd?o 2tUa[3DF5"(U,|#ًHIL$63_redaction1:localhost:42455sha256Wa6>bw>g{Z7=3L$62:localhost:42455sha256u߅eEc,vCdjx+-; *7y s 2 e #  < R]7o};DBcQ' e s!SrwdtDytJDUBVZOueF:localhost:8800m.room.create$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSukcQ' e r!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI?3/ 3 q!13:localhost:42455m.room.join_rules$79:localhost:42455W3'E3 q!13:localhost:42455m.room.member@__ANON__-51:localhost:42455$80:localhost:42455;3' 3 q!13:localhost:42455m.room.create$77:localhost:42455A33 3 p!13:localhost:42455m.room.power_levels$81:localhost:42455r3']Q o!13:localhost:42455m.room.member@anon-20191002_181700-677:localhost:8800$1570043683436iTOlZ:localhost:8800?3/ 3 o!13:localhost:42455m.room.join_rules$79:localhost:42455;3' 3 o!13:localhost:42455m.room.create$77:localhost:42455W3'E3 o!13:localhost:42455m.room.member@__ANON__-51:localhost:42455$80:localhost:42455W3'E3 o!13:localhost:42455m.room.member@__ANON__-50:localhost:42455$78:localhost:42455P33 Q n!12:localhost:42455m.room.power_levels$1570043681435TWaFw:localhost:8800r3']Q m!12:localhost:42455m.room.member@anon-20191002_181700-676:localhost:8800$1570043680434abJWo:localhost:8800W3'E3 m!12:localhost:42455m.room.member@__ANON__-49:localhost:42455$75:localhost:42455;3' 3 m!12:localhost:42455m.room.create$74:localhost:42455?3/ 3 m!12:localhost:42455m.room.join_rules$76:localhost:42455Q'Ee l!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAQ'Ee k!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455$lMtzuHp1gQo346tnaBIF9nMcd9qLO1eO8b5L-p0g8A8o Q? e j!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.history_visibility$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0g Q/ e i!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.join_rules$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYi Q3 e h!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.power_levels$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI Q']e g!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@anon-20191002_181700-675:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIc Q' e f!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.create$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJsr3']Q e!11:localhost:42455m.room.member@anon-20191002_181700-674:localhost:8800$1570043670433bjAzo:localhost:8800r3']Q d!11:localhost:42455m.room.member@anon-20191002_181700-673:localhost:8800$1570043668432TfiHj:localhost:8800W3'E3 d!11:localhost:42455m.room.member@__ANON__-47:localhost:42455$72:localhost:42455?3/ 3 d!11:localhost:42455m.room.join_rules$73:localhost:42455;3' 3 d!11:localhost:42455m.room.create$71:localhost:42455r3']Q c!10:localhost:42455m.room.member@anon-20191002_181700-672:localhost:8800$1570043664431IMLSL:localhost:8800W3'E3 c!10:localhost:42455m.room.member@__ANON__-46:localhost:42455$69:localhost:42455;3' 3 c!10:localhost:42455m.room.create$68:localhost:42455?3/ 3 c!10:localhost:42455m.room.join_rules$70:localhost:42455q1']Q b!9:localhost:42455m.room.member@anon-20191002_181700-671:localhost:8800$1570043660430kLPpN:localhost:8800V~1'E3 b!9:localhost:42455m.room.member@__ANON__-45:localhost:42455$66:localhost:42455>}1/ 3 b!9:localhost:42455m.room.join_rules$67:localhost:42455:|1' 3 b!9:localhost:42455m.room.create$65:localhost:42455]{Q/ Q a!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800fzQ'E3 a!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455YyQ' Q a!SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800_xQ3 Q a!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800]wQ/ Q `!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800fvQ'E3 `!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455 F\IOq?  w E  } K  Q  W %  ] +c1i\7o= {uC$V+11e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ ;1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAp1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 311e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 81e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 O1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 z1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w +1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA _1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEk1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY i1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc91e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A "1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkI1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ @1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ.1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A k1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI,1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 71e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIJ1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo%1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YD1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ,1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk\1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw@1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksX0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc|1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 2 @ 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 24 13 02 /1 .0 -/ ,. +- *, )+ (* ') &( %' $& #% "$ !# " !                                                                                                                                                                      ~  z  }  {  z ~ y } x | w { v z u y t x s w r v p u o t m s l r j q i p h o g n f m e l d k c j b i a h ` g _ f ] e \ d [ c Z b Y a X ` W _ U ^ T ] S \ R [ Q Z P Y O X N W M V K U J T I S H R G Q F P D O C N B M A L @ K ? J > I = G < F ; H ; E ; D 9 C 8 B 7 A 6 @ 5 ? 4 > 4 = 2 < 1 ; 0 : / 9 . 8 - 7 , 6                                                                               ~ }~ |} {| y{ zz xy wx vw uv tu st rs qr pq op no mn lm kl jk ij hi gh fg ef de cd bc ab `a _` ^_ ]^ \] [\ Z[ YZ XY WX VW UV TU ST RS QR PQ OP NO MN LM KL JK IJ HI FH EG DF CE BD AC @B ?A >@ =? <> ;= :< 9; 8: 79 68 57 46 35 C V#S Pe2btQN~I1 yD? . + ^ & [  d a / a , 4 g2]@anon-20191002_181700-730:localhost:8800a4]@anon-20191002_181700-723:localhost:8800m4]@anon-20191002_181700-713:localhost:8800m4]@anon-20191002_181700-722:localhost:8800m2]@anon-20191002_181700-723:localhost:8800a2]@anon-20191002_181700-722:localhost:8800a4]@anon-20191002_181700-721:localhost:8800m4]@anon-20191002_181700-720:localhost:8800m2]@anon-20191002_181700-721:localhost:8800a2]@anon-20191002_181700-720:localhost:8800a4]@anon-20191002_181700-719:localhost:8800m4]@anon-20191002_181700-718:localhost:8800m2]@anon-20191002_181700-718:localhost:8800a2]@anon-20191002_181700-719:localhost:8800a4]@anon-20191002_181700-717:localhost:8800m4]@anon-20191002_181700-716:localhost:8800m2]@anon-20191002_181700-717:localhost:8800a2]@anon-20191002_181700-716:localhost:8800a4]@anon-20191002_181700-715:localhost:8800m4]@anon-20191002_181700-714:localhost:8800m2]@anon-20191002_181700-715:localhost:8800a2]@anon-20191002_181700-714:localhost:8800a0[@anon-20191002_181700-70:localhost:8800a|2]@anon-20191002_181700-709:localhost:8800a4]@anon-20191002_181700-708:localhost:8800m2]@anon-20191002_181700-708:localhost:8800a2]@anon-20191002_181700-707:localhost:8800a4]@anon-20191002_181700-706:localhost:8800m2]@anon-20191002_181700-706:localhost:8800a2]@anon-20191002_181700-705:localhost:8800a a2]@anon-20191002_181700-704:localhost:8800a2]@anon-20191002_181700-703:localhost:8800a4]@anon-20191002_181700-702:localhost:8800m2]@anon-20191002_181700-702:localhost:8800a4]@anon-20191002_181700-701:localhost:8800m2]@anon-20191002_181700-701:localhost:8800a4]@anon-20191002_181700-700:localhost:8800m2]@anon-20191002_181700-700:localhost:8800a2]@anon-20191002_181700-731:localhost:8800a4]@anon-20191002_181700-729:localhost:8800m4]@anon-20191002_181700-728:localhost:8800m2]@anon-20191002_181700-729:localhost:8800a2]@anon-20191002_181700-728:localhost:8800a4]@anon-20191002_181700-727:localhost:8800m4]@anon-20191002_181700-726:localhost:8800m2]@anon-20191002_181700-726:localhost:8800a2]@anon-20191002_181700-727:localhost:8800a4]@anon-20191002_181700-725:localhost:8800m4]@anon-20191002_181700-724:localhost:8800m2]@anon-20191002_181700-725:localhost:8800a2]@anon-20191002_181700-724:localhost:8800a2]@anon-20191002_181700-732:localhost:8800a4]@anon-20191002_181700-704:localhost:8800m 32]@anon-20191002_181700-733:localhost:8800a4]@anon-20191002_181700-732:localhost:8800m4]@anon-20191002_181700-731:localhost:8800m4]@anon-20191002_181700-730:localhost:8800m02[@anon-20191002_181700-71:localhost:8800m0[@anon-20191002_181700-71:localhost:8800a}2]@anon-20191002_181700-713:localhost:8800a4]@anon-20191002_181700-712:localhost:8800m2]@anon-20191002_181700-712:localhost:8800a4]@anon-20191002_181700-711:localhost:8800m2]@anon-20191002_181700-711:localhost:8800a4]@anon-20191002_181700-710:localhost:8800m2]@anon-20191002_181700-710:localhost:8800a2[@anon-20191002_181700-70:localhost:8800m~ k [k{ 33aU $68:localhost:42455!10:localhost:42455{"outlier": true, "stream_ordering": 3496}{"prev_events": [], "origin_server_ts": 1570043664421, "content": {"creator": "@__ANON__-46:localhost:42455"}, "auth_events": [], "event_id": "$68:localhost:42455", "sender": "@__ANON__-46:localhost:42455", "hashes": {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}, "depth": 0, "state_key": "", "origin": "localhost:42455", "room_id": "!10:localhost:42455", "type": "m.room.create", "signatures": {"localhost:42455": {"ed25519:1": "mBM3zKbx0ZfrKumx2LG0SbpszZ8FMJdZ7dK1eEc1T6H14x6rfrTnRWlmXk90XKacaYzSqGn6kxBUiWDeYmYwAA"}}, "unsigned": {}} Q1?u $1570043660430kLPpN:localhost:8800!9:localhost:42455{"stream_ordering": 3495}{"sender": "@anon-20191002_181700-671:localhost:8800", "prev_events": [["$67:localhost:42455", {"sha256": "E8ulBCuCWKHD+ZEhyiqoTKIKBT802MYOSTo1snE1hCQ"}]], "room_id": "!9:localhost:42455", "auth_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}], ["$67:localhost:42455", {"sha256": "E8ulBCuCWKHD+ZEhyiqoTKIKBT802MYOSTo1snE1hCQ"}]], "type": "m.room.member", "depth": 3, "state_key": "@anon-20191002_181700-671:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-671", "avatar_url": null}, "prev_state": [], "event_id": "$1570043660430kLPpN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043660591, "hashes": {"sha256": "UK8buBaA25VkVPM12jeGLaVODvW8pJ/OhVyU4V3vTuE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xDdqWqgR1/2mKRhvh/mqqLyDeUg05J/zZk7CMr/FBWz38laJgUgGD1JS53ISr/TaX2h/FhK7vPY8D9FCq8UIBA"}}, "unsigned": {"age_ts": 1570043660591}}a 31a# $67:localhost:42455!9:localhost:42455{"outlier": true, "stream_ordering": 3491}{"hashes": {"sha256": "E8ulBCuCWKHD+ZEhyiqoTKIKBT802MYOSTo1snE1hCQ"}, "sender": "@__ANON__-45:localhost:42455", "type": "m.room.join_rules", "room_id": "!9:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 2, "origin_server_ts": 1570043660574, "prev_events": [["$66:localhost:42455", {"sha256": "T0aECiv1MrLgcW8q77jt9GLkTL+OVPuQ3A5n1cVTXeM"}]], "event_id": "$67:localhost:42455", "auth_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}], ["$66:localhost:42455", {"sha256": "T0aECiv1MrLgcW8q77jt9GLkTL+OVPuQ3A5n1cVTXeM"}]], "content": {"join_rule": "public"}, "signatures": {"localhost:42455": {"ed25519:1": "L0U3E6ew3Aj+7yeUJA/K5UdOFDKWeidPFuHJtjO9zhc3z96zaoKbVrd6g/x4gJtjXMd8Qjc45TwEgCKjDyFJDQ"}}, "unsigned": {}}$ 31a) $66:localhost:42455!9:localhost:42455{"outlier": true, "stream_ordering": 3490}{"origin_server_ts": 1570043660573, "prev_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}]], "auth_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}]], "event_id": "$66:localhost:42455", "content": {"membership": "join"}, "hashes": {"sha256": "T0aECiv1MrLgcW8q77jt9GLkTL+OVPuQ3A5n1cVTXeM"}, "sender": "@__ANON__-45:localhost:42455", "room_id": "!9:localhost:42455", "type": "m.room.member", "state_key": "@__ANON__-45:localhost:42455", "depth": 1, "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "gJWCwUkTPTQ1Hpjl7Aby9+EGXWBq0iTAYPomlz+tLtjwk9+lTb+62DJ+H/ZbE4CtMO6xDLw6/zob2GoNm9YDDg"}}, "unsigned": {}}y31aS $65:localhost:42455!9:localhost:42455{"outlier": true, "stream_ordering": 3489}{"hashes": {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}, "sender": "@__ANON__-45:localhost:42455", "type": "m.room.create", "room_id": "!9:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 0, "origin_server_ts": 1570043660573, "prev_events": [], "event_id": "$65:localhost:42455", "auth_events": [], "content": {"creator": "@__ANON__-45:localhost:42455"}, "signatures": {"localhost:42455": {"ed25519:1": "n3/kpGzrsaDknA1+C8OyjLN1R6XMYmIr72VLxy90kOsreqtfCztnTpqOFTytBRwTMn8jrAWztArrmKUY8csQCg"}}, "unsigned": {}} F\IOq?  w E  } K  Q  W %  ] +c1i\7o= {uC$V+11e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI 1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ ;1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAj1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 311e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 81e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 M1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 z1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w +1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA ]1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEk1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY g1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc91e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A "1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkI1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ @1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ.1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A k1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI,1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 71e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIJ1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo%1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YD1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ,1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk\1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw@1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksX0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc|1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 2 -o [  ]  _ a  b ZV dghWoinlmeQTeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800|TeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800TeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800TeQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800TeQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800TeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow!mvgUHEsfGqDkPQUvfG:localhost:8800TeQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800TeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800TeQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800SeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800USeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800/TeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo!DnUHoxreGexNmjSVpq:localhost:8800UTeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA!XcaKxZsPvbZhAGKKdx:localhost:8800TeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800XTeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800TeQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!zsXPhIPzeXXLvuazzQ:localhost:8800~TeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800 TeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw!zoTQAhGwmDDUECKtbL:localhost:8800TeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng!kjueCKHmYaYefEEpQY:localhost:8800CReQ $wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0!zNCItZNbpkZKuufRhC:localhost:8800TeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800TeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800HSeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800WTeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800TeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:88006TeQ$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI!csWEXfVEVxdviNvgAd:localhost:8800mTeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800TeQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800TeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:88005SeQ$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc!LaLcEGFLpjdlYlYKGC:localhost:8800SeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800>TeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800YTeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800{SeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs!aWJOsiuJONOvjKWEjO:localhost:8800TeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc!zoTQAhGwmDDUECKtbL:localhost:8800TeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800TeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800TeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800{TeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo!SrwdtDytJDUBVZOueF:localhost:8800STeQ$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc!vnFXnkCSfTbsSNKrtg:localhost:8800;STeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800TeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800TeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800TeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800TeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800U )j8p? y G  O   U # [h ) a /61e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegoW1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcR1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE80e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk'1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU91e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY31e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoL1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4'1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig?1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8q1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS00e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk00e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc[1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h881e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwk/e $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA0e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEV1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z81e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc=1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkk1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cx [!;r7J; c u   > y =jv6[9C[ZXz31'E$66:localhost:42455!9:localhost:42455m.room.member@__ANON__-45:localhost:42455join 3'3 E$75:localhost:42455m.room.member!12:localhost:42455mWmX_@__ANON__-49:localhost:42455j=3'3 E$74:localhost:42455m.room.create!12:localhost:42455mWmX_@__ANON__-49:localhost:42455<e'Q E$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAm.room.member!nhbUIcIbhuXkRqfeDa:localhost:8800mPmQy@__ANON__-48:localhost:42455,;e?Q ]$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0m.room.history_visibility!nhbUIcIbhuXkRqfeDa:localhost:8800mJzmL@anon-20191002_181700-675:localhost:8800$:e/Q ]$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYm.room.join_rules!nhbUIcIbhuXkRqfeDa:localhost:8800mGBmHB@anon-20191002_181700-675:localhost:8800&9e3Q ]$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIm.room.power_levels!nhbUIcIbhuXkRqfeDa:localhost:8800mD;mEY@anon-20191002_181700-675:localhost:8800 8e'Q ]$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIm.room.member!nhbUIcIbhuXkRqfeDa:localhost:8800m@mAt@anon-20191002_181700-675:localhost:88007 e'Q  ]$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJsm.room.create!nhbUIcIbhuXkRqfeDa:localhost:8800m=am=@anon-20191002_181700-675:localhost:88006Q'3 ]$1570043670433bjAzo:localhost:8800m.room.member!11:localhost:42455m0Am2@anon-20191002_181700-674:localhost:88005Q'3 ]$1570043668432TfiHj:localhost:8800m.room.member!11:localhost:42455m(wm*@anon-20191002_181700-673:localhost:8800p13/3 E$73:localhost:42455m.room.join_rules!11:localhost:42455m(`m(@__ANON__-47:localhost:42455j0 3'3 E$72:localhost:42455m.room.member!11:localhost:42455m(_m(@__ANON__-47:localhost:42455j/3'3 E$71:localhost:42455m.room.create!11:localhost:42455m(^m(@__ANON__-47:localhost:42455.Q'3 ]$1570043664431IMLSL:localhost:8800m.room.member!10:localhost:42455m4m>@anon-20191002_181700-672:localhost:8800 XN~J s ? o ;  k 7  g 3 a F |HxDrW-yO% Z0mC%k7g31Ae$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1@e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1?e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1>e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 1=e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1<e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1;e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1:e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 19e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU '8Q$1570043754467mNKfq:localhost:8800 79$98_m2:localhost:42455 6;$97_sf2:localhost:42455 5;$96_sf1:localhost:42455 49$95_m1:localhost:42455 '3Q$1570043750466Tmiqu:localhost:8800 23$94:localhost:42455 '1Q$1570043748464QpNXV:localhost:8800 '0Q$1570043748463euAqZ:localhost:8800 '/Q$1570043747462YuUEF:localhost:8800 '.Q$1570043746461eQhrq:localhost:8800 '-Q$1570043745460sJOiY:localhost:8800 ',Q$1570043744459BIUYb:localhost:8800 +;$93_sf2:localhost:42455 *;$92_sf1:localhost:42455 )9$91_m1:localhost:42455 '(Q$1570043741458PZvre:localhost:8800 '3$90:localhost:42455 '&Q$1570043739456qeuuS:localhost:8800 '%Q$1570043738455KNDHf:localhost:8800 '$Q$1570043737454adOjg:localhost:8800 '#Q$1570043736453VtbeL:localhost:8800 '"Q$1570043736452Igyim:localhost:8800 !3$89:localhost:42455  3$88:localhost:42455 'Q$1570043733451EJhWh:localhost:8800 3$87:localhost:42455 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko A$86_sent_F:localhost:42455 A$85_sent_E:localhost:42455 %M$84_backfilled_D:localhost:42455 'Q$1570043715443SSqOY:localhost:8800  3$82:localhost:42455 ' Q$1570043713441WJPkP:localhost:8800 ' Q$1570043712440rfNzQ:localhost:8800 ' Q$1570043712439XdJFc:localhost:8800 ' Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE ~1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo z1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo }1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc {1~e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I z1}e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE y1|e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc x1{e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 w1ze$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE v1ye$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY u1xe$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g t1we$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk s1ve$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI ru3$81:localhost:42455 p'tQ$1570043683436iTOlZ:localhost:8800 o'sQ$1570043680434abJWo:localhost:8800 m1re$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA l1qe$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 j1pe$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY i1oe$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI h1ne$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI g1me$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs f'lQ$1570043670433bjAzo:localhost:8800 e'kQ$1570043668432TfiHj:localhost:8800 d'jQ$1570043664431IMLSL:localhost:8800 c F:vO(z> N  ^ " f * n 2 n 2n*v FF Vf*v:9J Q !QWLJZmJqjWZjVOjdYF:localhost:8800publicshared9I Q !ZWANpHlizyLrUiVvAm:localhost:8800publicshared9H Q !TkluVzxeeCbMtbFWWS:localhost:8800publicshared9G Q !ELBgBaMSIMNkjFSumH:localhost:8800publicshared9F Q !CKNftKKCaOCVUyYWNY:localhost:8800publicshared9E Q !cvXpMzcxNNhsNttxvt:localhost:8800publicshared9D Q !jlGSdNttccYxjfLkwW:localhost:8800publicshared9C Q !ZNIjCvcWhgcwskanjT:localhost:8800publicshared9B Q !NJdkYMskQwIpIWlWkn:localhost:8800publicshared9A Q !jGQNGXehugtTvjUGKI:localhost:8800publicshared9@ Q !VNdqhtoDkyMoQdMTtM:localhost:8800publicshared9? Q !ulbQzxdPXzuvNoqqgU:localhost:8800publicshared9> Q !pTvdDtkgovsIdAdxCm:localhost:8800publicshared9= Q !vxEMWYTUdzvLyVZNzJ:localhost:8800publicshared9< Q !CAGaRyRvrohDRBsrWH:localhost:8800publicshared9; Q !hNCwypIzdDZDVmCEfd:localhost:8800publicsharedA: Q !eZjhYVNpwdogVDKHCk:localhost:8800invitesharedcan_joinA9 Q !sBcwyPoXKgnSGVTjNR:localhost:8800invitesharedcan_join98 Q !WgXzOXLTeqaGfiDFhL:localhost:8800publicsharedA7 Q !LFBhoxJpmBqFrwEzGP:localhost:8800invitesharedcan_joinA6 Q !URpLZLuBfVcfHVTBGS:localhost:8800invitesharedcan_join95 Q !YaLuQzmJKSMTSFEqjO:localhost:8800publicsharedf094 Q !cOFSwLSkxZECJMvjjZ:localhost:8800publicshared93 Q !eGEEtFXUXuZDImkeql:localhost:8800publicshared92 Q !ZOpRjvUhkWYJBFJZeO:localhost:8800publicshared91 Q !BPNyKqmwcpGxIbGFZG:localhost:8800publicsharedA. Q !NcJYmIbgjsaKJOzBcs:localhost:8800invitesharedcan_join9/ Q !qtelAHlSkrqEFmlCqS:localhost:8800publicshared 90 Q !ZOwibbprUCQrSJQCrx:localhost:8800publicshared9- Q !biBIcqnGelHvLnpkOu:localhost:8800publicsharedA* Q !aiOswwhoZqjhcjzbzc:localhost:8800invitesharedcan_join9+ Q !BKZJsoFNhiLTDYNclB:localhost:8800publicshared9, Q !yNfCaBMPezurwkJRAX:localhost:8800publicshared9) Q !IYxUkyFHOgvhLpdkOA:localhost:8800publicshared9( Q !anErKtXIsVKEEsrzWM:localhost:8800publicshared9' Q !TcCLuIBUrtFqghDgay:localhost:8800publicsharedA& Q !yWhIsLsgNVGcnELrDS:localhost:8800invitesharedcan_join9% Q !wCsDjKBtuUbrmZgjsB:localhost:8800publicshared9$ Q !SpXEytywhTbAftyVBr:localhost:8800publicshared9# Q !itfjLXhEaORJLkbfVS:localhost:8800publicsharedA" Q !GsjDgpaxdwYfnefiWO:localhost:8800invitesharedcan_join9! Q !jomrpmwwQQtghscizn:localhost:8800publicshared9 Q !ABHbfUdkHCJksMsaUt:localhost:8800publicshared9 Q !DntdfAPfCfgdOoRMdl:localhost:8800publicshared9 Q !THHfVSOSWiBQTHRAnJ:localhost:8800publicshared9 Q !KetCYFxrTxawNOGnOf:localhost:8800publicshared9 Q !JiUawCFQnodcpssOfK:localhost:8800publicshared9 Q !NgkQVVUNzoyCVPtckM:localhost:8800publicshared9 Q !lgejtcwlywOoIXwEgy:localhost:8800publicshared9 Q !PUIxAaiCnbqaVbawGu:localhost:8800publicshared9 Q !OJilSqnQvLgoXSqRaW:localhost:8800publicshared9 Q !SrwdtDytJDUBVZOueF:localhost:8800publicshared9 Q !PVyTvKbqnjSXfGWAMy:localhost:8800publicshared6$ 3 !13:localhost:42455public$ 3 !12:localhost:42455public9 Q !nhbUIcIbhuXkRqfeDa:localhost:8800publicshared$ 3 !11:localhost:42455public$ 3 !10:localhost:42455public >%. Y  B m KX er! .^  :k M `  s $>P]Q@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800RP]Q@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800QP]Q@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:8800PP]Q@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:8800OP]Q@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:8800NP]Q@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:8800MP]Q@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800LP]Q@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800KP]Q@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800JP]Q@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800IP]Q@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800GP]Q@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800EP]Q@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800CP]Q@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800AP]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800?P]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800= 'N[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800P]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800;P]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800:A]3@anon-20191002_181700-677:localhost:8800!13:localhost:424559A]3@anon-20191002_181700-676:localhost:8800!12:localhost:424556P]Q@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:88003A]3@anon-20191002_181700-674:localhost:8800!11:localhost:424552A]3@anon-20191002_181700-673:localhost:8800!11:localhost:424551A]3@anon-20191002_181700-672:localhost:8800!10:localhost:42455/@]1@anon-20191002_181700-671:localhost:8800!9:localhost:42455-P]Q@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800*N[Q@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800N[Q@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800#N[Q@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800!N[Q@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800 P]Q@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800ZP]Q@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800YP]Q@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800XP]Q@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800WP]Q@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800VP]Q@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800U 1^ k x ' 4 A N [ hu$1>KXer!P]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800P]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800P]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800P]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800P]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800P]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800P]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800P]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800P]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800P]Q@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800P]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800P]Q@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800P]Q@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800P]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800P]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800P]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800P]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800P]Q@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800P]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800P]Q@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800P]Q@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800P]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800P]Q@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800P]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800P]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800P]Q@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:8800P]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800P]Q@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800P]Q@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800P]Q@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800 3 oa3*Q3a $1570043670433bjAzo:localhost:8800!11:localhost:42455{"token_id": 654, "stream_ordering": 3510}{"auth_events": [["$71:localhost:42455", {"sha256": "BSUpwN8CSQMshjRW+OyAEMhQ5g68DvZnVbrv+pk27bs"}], ["$73:localhost:42455", {"sha256": "9agIwLliA9BEg899YfZSc/3PpM/aVg7aaLKpMW66q9Q"}]], "prev_events": [["$1570043668432TfiHj:localhost:8800", {"sha256": "Pi1CcXgSTKWFemT7/j+5wG+O2gkydAQAxDzF+OLRxkk"}]], "type": "m.room.member", "room_id": "!11:localhost:42455", "sender": "@anon-20191002_181700-674:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-674", "avatar_url": null}, "depth": 4, "prev_state": [], "state_key": "@anon-20191002_181700-674:localhost:8800", "event_id": "$1570043670433bjAzo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043670593, "hashes": {"sha256": "cWM4+MBU89NrR5MuL7UFWMUCr23dk88JKYzPFVjV2kQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IxxfY6OCEp1fh/eDsig/Vf85jEfXxiUg61NWmwz0vZK1sQ4iPhWbKCUX7IKWWIoWTlCKVjQ5Tjq4Id7QHojxBg"}}, "unsigned": {"age_ts": 1570043670593}} Q3?w $1570043668432TfiHj:localhost:8800!11:localhost:42455{"stream_ordering": 3509}{"sender": "@anon-20191002_181700-673:localhost:8800", "prev_events": [["$73:localhost:42455", {"sha256": "cYj5RAAeJMwFqt7LnFfe1AdUJtS6+TPt2c5k6NgHrFA"}]], "type": "m.room.member", "room_id": "!11:localhost:42455", "auth_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}], ["$73:localhost:42455", {"sha256": "cYj5RAAeJMwFqt7LnFfe1AdUJtS6+TPt2c5k6NgHrFA"}]], "content": {"membership": "join", "displayname": "anon-20191002_181700-673", "avatar_url": null}, "depth": 3, "state_key": "@anon-20191002_181700-673:localhost:8800", "prev_state": [], "event_id": "$1570043668432TfiHj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043668599, "hashes": {"sha256": "r3c1UWWIGJcHSJ3N7O9kmkkoc6/DQRRKsVrA/L0vxf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ptLia4OOUdGi2mSQZEDjzCQRApURW/rL5ZcGSCWdQgagk0nDvEnt9BZVI8cLgnSnbbYohz6POAqVkTr82Kq+CQ"}}, "unsigned": {"age_ts": 1570043668599}}c33a% $73:localhost:42455!11:localhost:42455{"outlier": true, "stream_ordering": 3505}{"origin": "localhost:42455", "state_key": "", "depth": 2, "type": "m.room.join_rules", "room_id": "!11:localhost:42455", "sender": "@__ANON__-47:localhost:42455", "hashes": {"sha256": "cYj5RAAeJMwFqt7LnFfe1AdUJtS6+TPt2c5k6NgHrFA"}, "content": {"join_rule": "public"}, "event_id": "$73:localhost:42455", "auth_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}], ["$72:localhost:42455", {"sha256": "AZwjTAjQmKOYsd8Zk/DvrXqALRVR8HMUh+3PU3ybX10"}]], "prev_events": [["$72:localhost:42455", {"sha256": "AZwjTAjQmKOYsd8Zk/DvrXqALRVR8HMUh+3PU3ybX10"}]], "origin_server_ts": 1570043668576, "signatures": {"localhost:42455": {"ed25519:1": "UZepJSSivegeALy+Akey+O8aTQZpgxjoTQ5BcJVPhsTh8PWaFMe9WPv+qToeS3Pdj+4Ci8roNZw1h3gB+sqWDA"}}, "unsigned": {}}&33a+ $72:localhost:42455!11:localhost:42455{"outlier": true, "stream_ordering": 3504}{"hashes": {"sha256": "AZwjTAjQmKOYsd8Zk/DvrXqALRVR8HMUh+3PU3ybX10"}, "sender": "@__ANON__-47:localhost:42455", "type": "m.room.member", "room_id": "!11:localhost:42455", "origin": "localhost:42455", "state_key": "@__ANON__-47:localhost:42455", "depth": 1, "origin_server_ts": 1570043668575, "prev_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}]], "event_id": "$72:localhost:42455", "auth_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}]], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "HjqGShFVDrU0xa/WnOaZkq8KOgMO0U4ushazNEP0WVGRYChWED9iLlKuAUUol63p79ly5ulG/l6djkGzykGzBA"}}, "unsigned": {}} )u@S   } {yx8ZZ |<{ywu~oeeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800~neeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800~meeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~leeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800~keeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800~jeeQ$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~ieeQ$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800=h333$81:localhost:42455$80:localhost:42455!13:localhost:42455=g333$81:localhost:42455$79:localhost:42455!13:localhost:42455=f333$81:localhost:42455$77:localhost:42455!13:localhost:42455LeQ33$1570043683436iTOlZ:localhost:8800$79:localhost:42455!13:localhost:42455LdQ33$1570043683436iTOlZ:localhost:8800$77:localhost:42455!13:localhost:42455=c333$80:localhost:42455$79:localhost:42455!13:localhost:42455=b333$80:localhost:42455$77:localhost:42455!13:localhost:42455=a333$79:localhost:42455$78:localhost:42455!13:localhost:42455=`333$79:localhost:42455$77:localhost:42455!13:localhost:42455=_333$78:localhost:42455$77:localhost:42455!13:localhost:42455L^Q33$1570043680434abJWo:localhost:8800$76:localhost:42455!12:localhost:42455L]Q33$1570043680434abJWo:localhost:8800$74:localhost:42455!12:localhost:42455=\333$76:localhost:42455$75:localhost:42455!12:localhost:42455=[333$76:localhost:42455$74:localhost:42455!12:localhost:42455=Z333$75:localhost:42455$74:localhost:42455!12:localhost:42455~YeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800~XeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~WeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800~VeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800~UeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~TeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800~SeeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800~ReeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~QeeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800~PeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800~OeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~NeeQ$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800LMQ33$1570043670433bjAzo:localhost:8800$73:localhost:42455!11:localhost:42455LLQ33$1570043670433bjAzo:localhost:8800$71:localhost:42455!11:localhost:42455LKQ33$1570043668432TfiHj:localhost:8800$73:localhost:42455!11:localhost:42455LJQ33$1570043668432TfiHj:localhost:8800$71:localhost:42455!11:localhost:42455=I333$73:localhost:42455$72:localhost:42455!11:localhost:42455=H333$73:localhost:42455$71:localhost:42455!11:localhost:42455=G333$72:localhost:42455$71:localhost:42455!11:localhost:42455 J \ 5 m E  ~ V .  h @  z S + c+;sK#S^6nG X0jBc<c<'Q!qtelAHlSkrqEFmlCqS:localhost:8800a{'Q!pTvdDtkgovsIdAdxCm:localhost:8800s'Q!qtelAHlSkrqEFmlCqS:localhost:8800b (&Q!tDsPLsKOLPePtEWRwn:localhost:8800}'Q!svYOOXWZHtQQzlMcEP:localhost:8800K'Q!svYOOXWZHtQQzlMcEP:localhost:8800J'Q!svYOOXWZHtQQzlMcEP:localhost:8800I'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800#'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800Y'Q!rWGwSSefrZzQYCYFHs:localhost:8800X'Q!rWGwSSefrZzQYCYFHs:localhost:8800W'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!qzrZzAieCgGSbpKOQR:localhost:8800 &Q!qxqNYKdtgvOQdhmgsj:localhost:8800p&Q!qxqNYKdtgvOQdhmgsj:localhost:8800o&Q!quaZwrGnzbNWhwAOYB:localhost:8800d'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:88000'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:88008'Q!ozgnwUlebxvzLVwyHW:localhost:88007&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:88006&Q!oXKJArsPmtgaYANBrg:localhost:88005'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800O&Q!nteAxExBGJfaGIpuCx:localhost:8800s'Q!nhbUIcIbhuXkRqfeDa:localhost:88004'Q!nhbUIcIbhuXkRqfeDa:localhost:88003'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&Q!msMfSdLIAvklSSAnci:localhost:8800D'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800:'Q!mBQpGaIiadEuKBXfOw:localhost:88009&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800B'Q!lgejtcwlywOoIXwEgy:localhost:8800AT   *teQau$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3514}{"auth_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI", "$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "prev_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI"], "type": "m.room.join_rules", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043676482, "hashes": {"sha256": "M0puudRTDmPZIUX/iqOLflK2mJ1fuoqk/Jljwz98F+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8RPAxD+GqHFjfBAfwH01LqAHAnmaRD347JZjP//6QTBfhz3kfiMWZkN8ushHay8lhjv6WR6uq2I8KRTsRiDZAQ"}}, "unsigned": {"age_ts": 1570043676482}}keQac$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3513}{"auth_events": ["$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "prev_events": ["$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "type": "m.room.power_levels", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"users": {"@anon-20191002_181700-675:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043675707, "hashes": {"sha256": "y00Ux0tKxS2Ts8lfpsD4raYwvSbqyGBR++dXUBk4dXQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9ZGYu411FNDY8p1/hLMfccLLjkY1vMHI3tyMLXmI9hIzXNSECQF5M0gG+m+/PHh1NNHotBysuXOWe1RuJCaSAg"}}, "unsigned": {"age_ts": 1570043675707}}veQay$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3512}{"auth_events": ["$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs"], "prev_events": ["$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs"], "type": "m.room.member", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-675", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-675:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043674869, "hashes": {"sha256": "gjO+iqgZupWH3BHlwJ2wUZwQcySsiwIrRJMaJ3L8P+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rw0yOt68w+FpL/xZtbXunPgoJZKnh9w8rTkj5jbrSfSMN68lve7aiwjBRB2FdsIBRzPIVCjt+26NwjfZxl89Bw"}}, "unsigned": {"age_ts": 1570043674869}}ieQa_$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3511}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-675:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043673953, "hashes": {"sha256": "ZJHWaJl6EG2Ko+38Oea8N9IyVlsTvi209p3C4V6tNvM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/N4Lpb/eg2oVUas2Jw+rsujYpP1crrOS9khrP/LEbET2HjlobB2lqGnAldw1QkGokG/Evmk7lG0Im5lj84DxAA"}}, "unsigned": {"age_ts": 1570043673953}} 1:[UJu7  } K OC{o= j8p#>i)  v D W %1 I ] +[c1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A ~1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIki1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyoO1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg g1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAp1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc61e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQo1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE"1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgp1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow L1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUy1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo]1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU &1e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres&1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs01e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw\1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0#1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIF1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcy1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsF1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc11e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw+1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is > P *  HZ  V $Nj EBp \T("bz08h w6tn < | J 1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkw1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gx1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 s1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs v1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IM1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYm1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYE1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns81e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAQ1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQV1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs^1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo 21e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s / 21e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o041e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q ^1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc ]1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU Xd > P *  HZ  V $Nj EBp \T("bz08h w6tn < | J 1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkw1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gx1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 s1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs v1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IM1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYm1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY?1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns21e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAQ1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQV1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs^1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo 21e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s / 21e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o041e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q \1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc ]1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU Xd %Xp% ^  N Y  9 BEm14Vu+Xg-Q'E3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$82:localhost:42455f,Q? Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility$1570043713441WJPkP:localhost:8800^+Q/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800`*Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043712439XdJFc:localhost:8800)Q']Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800Z(Q' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800'Q'Ee !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0p&Q? e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibility$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkoh%Q/ e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEj$Q3 e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o #Q']e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYd"Q' e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.create$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!Q'Ee !SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOop Q? e !SrwdtDytJDUBVZOueF:localhost:8800m.room.history_visibility$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScpQ? e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibility$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4IhQ/ e !SrwdtDytJDUBVZOueF:localhost:8800m.room.join_rules$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEhQ/ e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rules$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcjQ3 e !SrwdtDytJDUBVZOueF:localhost:8800m.room.power_levels$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4jQ3 e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE Q']e !SrwdtDytJDUBVZOueF:localhost:8800m.room.member@anon-20191002_181700-679:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY Q']e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gdQ' e !SrwdtDytJDUBVZOueF:localhost:8800m.room.create$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSukdQ' e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqIs3']Q !13:localhost:42455m.room.member@anon-20191002_181700-677:localhost:8800$1570043683436iTOlZ:localhost:8800@3/ 3 !13:localhost:42455m.room.join_rules$79:localhost:42455<3' 3 !13:localhost:42455m.room.create$77:localhost:42455X3'E3 !13:localhost:42455m.room.member@__ANON__-51:localhost:42455$80:localhost:42455X3'E3 !13:localhost:42455m.room.member@__ANON__-50:localhost:42455$78:localhost:42455s3']Q !12:localhost:42455m.room.member@anon-20191002_181700-676:localhost:8800$1570043680434abJWo:localhost:8800X3'E3 !12:localhost:42455m.room.member@__ANON__-49:localhost:42455$75:localhost:42455<3' 3 !12:localhost:42455m.room.create$74:localhost:42455@3/ 3 !12:localhost:42455m.room.join_rules$76:localhost:42455 Q'Ee !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAp Q? e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.history_visibility$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0h Q/ e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.join_rules$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYj Q3 e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.power_levels$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI Q']e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@anon-20191002_181700-675:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1d=zS, i B   X 1 n G ] 6  s L %&O$157004179138NbBYh:localhost:8800 &O$157004179138NbBYh:localhost:8800 &O$157004179037FGMFG:localhost:8800 &O$157004179037FGMFG:localhost:8800 &O$157004179037FGMFG:localhost:8800 &O$157004178936zuJSX:localhost:8800 &O$157004178936zuJSX:localhost:8800 &O$157004178835mLAyG:localhost:8800 &O$157004177433OonrH:localhost:8800 Z&O$157004177433OonrH:localhost:8800 Y&O$157004177433OonrH:localhost:8800 X&O$157004177232wsJyW:localhost:8800 Q&O$157004177232wsJyW:localhost:8800 P&O$157004177232wsJyW:localhost:8800 O&O$157004177131trwoi:localhost:8800 N&O$157004177131trwoi:localhost:8800 M&O$157004177131trwoi:localhost:8800 L&O$157004177030bmvvg:localhost:8800 K&O$157004177030bmvvg:localhost:8800 J&O$157004177030bmvvg:localhost:8800 I&O$157004176929ezeJB:localhost:8800 H&O$157004176929ezeJB:localhost:8800 G&O$157004176828ZZJWh:localhost:8800 F&O$157004175925JuKDZ:localhost:8800 3&O$157004175925JuKDZ:localhost:8800 2&O$157004175925JuKDZ:localhost:8800 1&O$157004175824dFhko:localhost:8800 0&O$157004175824dFhko:localhost:8800 /&O$157004175824dFhko:localhost:8800 .&O$157004175723CBKAp:localhost:8800 -&O$157004175723CBKAp:localhost:8800 ,&O$157004175723CBKAp:localhost:8800 +&O$157004175622yCTNM:localhost:8800 *&O$157004175622yCTNM:localhost:8800 )&O$157004175621DDceh:localhost:8800 (&O$157004174718wxlLH:localhost:8800 &O$157004174718wxlLH:localhost:8800 &O$157004174718wxlLH:localhost:8800 &O$157004174617osGDW:localhost:8800 &O$157004174617osGDW:localhost:8800 &O$157004174617osGDW:localhost:8800 &O$157004174616PvcHe:localhost:8800 &O$157004174616PvcHe:localhost:8800 &O$157004174616PvcHe:localhost:8800 &O$157004174515XsrNb:localhost:8800 &O$157004174515XsrNb:localhost:8800 &O$157004174414klNmS:localhost:8800 &O$157004173511wRnRr:localhost:8800 &O$157004173511wRnRr:localhost:8800 M wwM&33a+ $75:localhost:42455!12:localhost:42455{"outlier": true, "stream_ordering": 3518}{"origin_server_ts": 1570043680727, "prev_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}]], "event_id": "$75:localhost:42455", "auth_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}]], "content": {"membership": "join"}, "hashes": {"sha256": "dGcbLoQhMGCivYz655i/eGCkEuBIiENnw7V+FHUTqaQ"}, "sender": "@__ANON__-49:localhost:42455", "type": "m.room.member", "room_id": "!12:localhost:42455", "origin": "localhost:42455", "depth": 1, "state_key": "@__ANON__-49:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "y4+oxoS8t+3uCo/ug9Ow375Bi9T9IGbgeZvHbCzK5OfLUB0OcLm+J/G21Cdk/G3vtALFrUQS05HG3/d3hxFaAA"}}, "unsigned": {}}{33aU $74:localhost:42455!12:localhost:42455{"outlier": true, "stream_ordering": 3517}{"origin_server_ts": 1570043680726, "prev_events": [], "auth_events": [], "event_id": "$74:localhost:42455", "content": {"creator": "@__ANON__-49:localhost:42455"}, "hashes": {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}, "sender": "@__ANON__-49:localhost:42455", "room_id": "!12:localhost:42455", "type": "m.room.create", "depth": 0, "state_key": "", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "zUmBc5kwUGqviq/mD0dgxOW+dJJdUDZAMWbeja3M2AYp0YnYMfFcspoF8yrmt/J54AE7NQ6usyccQKVNMw1rCg"}}, "unsigned": {}}}eQ33$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA!nhbUIcIbhuXkRqfeDa:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3516}{"content": {"membership": "join"}, "auth_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI", "$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY"], "prev_events": ["$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0"], "origin_server_ts": 1570043678929, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-48:localhost:42455", "type": "m.room.member", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@__ANON__-48:localhost:42455", "hashes": {"sha256": "WqX/pXNuakIf9UNDl+M69Fna7PkrZ11Ne39Jgbofzfk"}, "signatures": {"localhost:42455": {"ed25519:1": "VnpFu9ZqDptRgOjZd5ws4ZgjMA4bArFAAAPz8kPvqtMtH+dV7tBC9CgmF3V4fHigj3QE+FLAvYNokGxECH+pDw"}}, "unsigned": {}}eQa$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3515}{"auth_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI", "$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "prev_events": ["$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY"], "type": "m.room.history_visibility", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043677306, "hashes": {"sha256": "BIXDS2UM/J8LLJx86C1PFFvNEQTy51EJ1dEWisIbgo0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ltkMaudfeU3Cn4tTT1mASlHLskA0iD/jHExbnfltfSCqT+EcgoW2jG3LHWjvxZlMcR64Ir3KTlOFmEJEenzqCA"}}, "unsigned": {"age_ts": 1570043677306}} n^ k x ' 4 A N [ nN[Q@anon-20191002_181700-16:localhost:8800!QZhNrNpwObZGJZpdAG:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800 P]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800P]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800P]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800P]Q@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800P]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800P]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800P]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800P]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800P]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800P]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800P]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800P]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800P]Q@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800P]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800P]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800P]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800P]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800 iM q 5 @?n4w3lC. e]]Q=$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc@anon-20191002_181700-698:localhost:8800@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800joinanon-20191002_181700-698C- e]]Q=$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU@anon-20191002_181700-691:localhost:8800@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800joinanon-20191002_181700-691C, e]]Q=$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE@anon-20191002_181700-690:localhost:8800@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800joinanon-20191002_181700-690z+ 3EEQ$94:localhost:42455@__ANON__-58:localhost:42455@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800join9* Q]]Q=$1570043746461eQhrq:localhost:8800@anon-20191002_181700-685:localhost:8800@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800joinanon-20191002_181700-685z) 3EEQ$90:localhost:42455@__ANON__-57:localhost:42455@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800join9( Q]]Q=$1570043736453VtbeL:localhost:8800@anon-20191002_181700-684:localhost:8800@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800joinanon-20191002_181700-684z' 3EEQ$87:localhost:42455@__ANON__-56:localhost:42455@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800join9& Q]]Q=$1570043727446CGYaE:localhost:8800@anon-20191002_181700-683:localhost:8800@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800joinanon-20191002_181700-683% eEEQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk@__ANON__-55:localhost:42455@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800joinC$ e]]Q=$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE@anon-20191002_181700-682:localhost:8800@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800joinanon-20191002_181700-682z# 3EEQ$82:localhost:42455@__ANON__-54:localhost:42455@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800join9" Q]]Q=$1570043711438bqOHL:localhost:8800@anon-20191002_181700-681:localhost:8800@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800joinanon-20191002_181700-681! eEEQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0@__ANON__-53:localhost:42455@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800joinC e]]Q=$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY@anon-20191002_181700-680:localhost:8800@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800joinanon-20191002_181700-680 eEEQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo@__ANON__-52:localhost:42455@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:8800joinC e]]Q=$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY@anon-20191002_181700-679:localhost:8800@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800joinanon-20191002_181700-679C e]]Q=$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g@anon-20191002_181700-678:localhost:8800@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800joinanon-20191002_181700-678* Q]]3=$1570043683436iTOlZ:localhost:8800@anon-20191002_181700-677:localhost:8800@anon-20191002_181700-677:localhost:8800!13:localhost:42455joinanon-20191002_181700-677k 3EE3$80:localhost:42455@__ANON__-51:localhost:42455@__ANON__-51:localhost:42455!13:localhost:42455joink 3EE3$78:localhost:42455@__ANON__-50:localhost:42455@__ANON__-50:localhost:42455!13:localhost:42455join* Q]]3=$1570043680434abJWo:localhost:8800@anon-20191002_181700-676:localhost:8800@anon-20191002_181700-676:localhost:8800!12:localhost:42455joinanon-20191002_181700-676k 3EE3$75:localhost:42455@__ANON__-49:localhost:42455@__ANON__-49:localhost:42455!12:localhost:42455join eEEQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA@__ANON__-48:localhost:42455@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:8800join 5Vj/ ~ C  W  k 0  D X l1E Ym2F Zn3G :8t]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8s]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8r]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8q]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8p]! @anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8o]! @anon-20191002_181700-724:localhost:8800LOLQJOGTTU8n]! @anon-20191002_181700-723:localhost:8800JIVAFIIFHN8m]! @anon-20191002_181700-722:localhost:8800IZTIXMADAY8l]! @anon-20191002_181700-721:localhost:8800BHJHLJEYAG8k]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN8j]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8i]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8h]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8g]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8f]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8e]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8d]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8c]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8b]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA8a]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU8`]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8_]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8^]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV8\]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8[]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8Z]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8Y]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8X]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8W]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW8V]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8U]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8T]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8S]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO8R]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8Q]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8P]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8O]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG8N]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8M]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8L]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY8K]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK8J]!@anon-20191002_181700-685:localhost:8800ESVUDGRJIL8I]!@anon-20191002_181700-684:localhost:8800QWWSYDBLAC8H]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPR8G]!@anon-20191002_181700-682:localhost:8800RHXEIACOYG8F]!@anon-20191002_181700-681:localhost:8800CDCNSMATEC8E]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGI8D]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKF8C]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUT8B]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGV8A]!@anon-20191002_181700-676:localhost:8800KCVXVHDURO1@E+@__ANON__-48:localhost:42455CURIOSITY_ROVER   & 33a+ $78:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3525}{"prev_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}]], "origin_server_ts": 1570043683293, "content": {"membership": "join"}, "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}]], "event_id": "$78:localhost:42455", "sender": "@__ANON__-50:localhost:42455", "hashes": {"sha256": "vSQ+ss3kE6yMk0EzWzZqRVZ6Gc/ZJd1oIWA0R872eKg"}, "depth": 1, "state_key": "@__ANON__-50:localhost:42455", "origin": "localhost:42455", "room_id": "!13:localhost:42455", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "GjUyoSYiu5PsLY23ATdFQls+sAexYbGE7ZIG2k2V/yaa1qkJ4VWyuf9oQJiGnR/sLRm8gc1kLLyCtxpr1M24Bw"}}, "unsigned": {}}{33aU $77:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3524}{"hashes": {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}, "sender": "@__ANON__-50:localhost:42455", "type": "m.room.create", "room_id": "!13:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 0, "origin_server_ts": 1570043683292, "prev_events": [], "event_id": "$77:localhost:42455", "auth_events": [], "content": {"creator": "@__ANON__-50:localhost:42455"}, "signatures": {"localhost:42455": {"ed25519:1": "1dVsY7KT3JkuFCkcoKpwyk30MrZEfejwh/zOORb32LYx2PNysQaH3EpumEPHurLmuLf+BHyFtsV1rg9dDodgDw"}}, "unsigned": {}} Q3?w $1570043680434abJWo:localhost:8800!12:localhost:42455{"stream_ordering": 3523}{"sender": "@anon-20191002_181700-676:localhost:8800", "prev_events": [["$76:localhost:42455", {"sha256": "1umzn5yszBBRJVZlCYvLlRNGlqcK5+Nar0FMwgOL15c"}]], "room_id": "!12:localhost:42455", "auth_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}], ["$76:localhost:42455", {"sha256": "1umzn5yszBBRJVZlCYvLlRNGlqcK5+Nar0FMwgOL15c"}]], "type": "m.room.member", "depth": 3, "state_key": "@anon-20191002_181700-676:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-676", "avatar_url": null}, "prev_state": [], "event_id": "$1570043680434abJWo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043680748, "hashes": {"sha256": "wwp8FswipK1NES7LZ6K14/n4RtV3SAxMfzYHkxH8xH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "80SgP+94uHEqTRuXNhEQh0P81vXiZwFOULCH0sp9G6t5/bH4HiQfAIHT/9AuF+NdNQzALzp6GtpFQu/ME5vaDQ"}}, "unsigned": {"age_ts": 1570043680748}}c33a% $76:localhost:42455!12:localhost:42455{"outlier": true, "stream_ordering": 3519}{"sender": "@__ANON__-49:localhost:42455", "hashes": {"sha256": "1umzn5yszBBRJVZlCYvLlRNGlqcK5+Nar0FMwgOL15c"}, "origin": "localhost:42455", "depth": 2, "state_key": "", "type": "m.room.join_rules", "room_id": "!12:localhost:42455", "prev_events": [["$75:localhost:42455", {"sha256": "dGcbLoQhMGCivYz655i/eGCkEuBIiENnw7V+FHUTqaQ"}]], "origin_server_ts": 1570043680728, "content": {"join_rule": "public"}, "event_id": "$76:localhost:42455", "auth_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}], ["$75:localhost:42455", {"sha256": "dGcbLoQhMGCivYz655i/eGCkEuBIiENnw7V+FHUTqaQ"}]], "signatures": {"localhost:42455": {"ed25519:1": "SXud5w1cRN7Nv+mj+IuwyStCzIGGo8GcnUPWuzYGxVAFRX3zCD4fj9dLv8gV8Zxb6LDL/kPFfgpiuVSPXYt3DQ"}}, "unsigned": {}} *T_d-fD 0  <  e . ] M pBQ? !CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibility,<Q3 !CSqENqzAezaZnGktbE:localhost:8800m.room.guest_access-6Q' !CSqENqzAezaZnGktbE:localhost:8800m.room.create(<Q3 !CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels^Q']!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800^Q']!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800:Q/ !CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rulesBQ? !CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibility6Q' !CQKLQUpSYakhxVDltC:localhost:8800m.room.create?Q9 !CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_aliasEQ))!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:88009Q- !CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstone<Q3 !CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels^Q']!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800^Q']!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800:Q/ !DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rulesBQ? !DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibility<Q3 !DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_access6Q' !DelfBAGvCrTXgNxmNV:localhost:8800m.room.create<Q3 !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels a^Q']!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800 dRQ'E!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455 c:Q/ !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules eBQ? !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibility Z6Q' !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create b<Q3 !CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels^Q']!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800:Q/ !CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rulesBQ? !CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibility6Q' !CkNvQnbApPIcuKygDk:localhost:8800m.room.create<Q3 !CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.state<Q3 !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels^Q']!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800:Q/ !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rulesBQ? !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibility6Q' !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create?Q9 !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_aliasEQ))!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800<Q3 !CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels*^Q']!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829.^Q']!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800):Q/ !CSqENqzAezaZnGktbE:localhost:8800m.room.join_rules+ *2j8q? w E  ~ L   R X & ^ ,d1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI 1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBID1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM*1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQke1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs,1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4%1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 71e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yov1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA C1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQz1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcq1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI H1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 =1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA K1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIC0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVAm1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQh1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4?1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU '  'b$33c! $81:localhost:42455!13:localhost:42455{"outlier": false, "stream_ordering": 3532}{"type": "m.room.power_levels", "room_id": "!13:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 5, "hashes": {"sha256": "YsD4qAiugqlOwpJcsluLWsWhT6KMtCWNN4ND3meDWMI"}, "sender": "@__ANON__-51:localhost:42455", "event_id": "$81:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}], ["$80:localhost:42455", {"sha256": "2uo3/oB+8f1lcfOX7b/MhDCgccA+j28Br9pDbGd/pDE"}]], "content": {"users": {"@__ANON__-51:localhost:42455": 100}}, "origin_server_ts": 1570043685815, "prev_events": [["$1570043683436iTOlZ:localhost:8800", {"sha256": "pe1nkxpeUpnoBonKsjSBNLnUK4SbNzkcyBCQkHMbgBY"}]], "signatures": {"localhost:42455": {"ed25519:1": "CQN85fhrK9XgUiheJLpNuRCHMqhOvbNscPtKrqIcXYIoWpXdC63j1BNBt5Dxg+Hsa5RErdbAzNW/fttQLLiNCA"}}, "unsigned": {}} #Q3?w $1570043683436iTOlZ:localhost:8800!13:localhost:42455{"stream_ordering": 3531}{"content": {"membership": "join", "displayname": "anon-20191002_181700-677", "avatar_url": null}, "depth": 4, "state_key": "@anon-20191002_181700-677:localhost:8800", "type": "m.room.member", "room_id": "!13:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}]], "sender": "@anon-20191002_181700-677:localhost:8800", "prev_events": [["$80:localhost:42455", {"sha256": "2uo3/oB+8f1lcfOX7b/MhDCgccA+j28Br9pDbGd/pDE"}]], "prev_state": [], "event_id": "$1570043683436iTOlZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043683327, "hashes": {"sha256": "pe1nkxpeUpnoBonKsjSBNLnUK4SbNzkcyBCQkHMbgBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q4WBr6RbOPXDZfvh2Nn+koGxPasKk5R+qUImqu1mTR18kCrfanRL3a5qCY2P9hgVuAfYau2Wb9RiYLEW8EptDA"}}, "unsigned": {"age_ts": 1570043683327}}z"33aS $80:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3528}{"hashes": {"sha256": "2uo3/oB+8f1lcfOX7b/MhDCgccA+j28Br9pDbGd/pDE"}, "sender": "@__ANON__-51:localhost:42455", "type": "m.room.member", "room_id": "!13:localhost:42455", "origin": "localhost:42455", "depth": 3, "state_key": "@__ANON__-51:localhost:42455", "origin_server_ts": 1570043683294, "prev_events": [["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}]], "event_id": "$80:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}]], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "4jovuCiPssLnxnNOvQSrGK4k6H09gpQbgA77g+07oMbus4ukoG1Mys0vBB6M60//kCnIPfGESj0PNTq/tDHXAQ"}}, "unsigned": {}}c!33a% $79:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3526}{"sender": "@__ANON__-50:localhost:42455", "hashes": {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}, "origin": "localhost:42455", "depth": 2, "state_key": "", "type": "m.room.join_rules", "room_id": "!13:localhost:42455", "prev_events": [["$78:localhost:42455", {"sha256": "vSQ+ss3kE6yMk0EzWzZqRVZ6Gc/ZJd1oIWA0R872eKg"}]], "origin_server_ts": 1570043683294, "content": {"join_rule": "public"}, "event_id": "$79:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$78:localhost:42455", {"sha256": "vSQ+ss3kE6yMk0EzWzZqRVZ6Gc/ZJd1oIWA0R872eKg"}]], "signatures": {"localhost:42455": {"ed25519:1": "k9AojItcjxvNJnn6mI46L1LXo2XSelub1rnf7JMa1uxZm1iwKgFJX869Rdc7YW3jiAou2wNvSOsRlZXQbzxRCQ"}}, "unsigned": {}} *zvHd6 ~ P " l >  X * t F  ` 2 z-]@anon-20191002_181700-268:localhost:8800.-]@anon-20191002_181700-267:localhost:88000-]@anon-20191002_181700-267:localhost:8800--]@anon-20191002_181700-266:localhost:8800,-]@anon-20191002_181700-266:localhost:8800+-]@anon-20191002_181700-266:localhost:8800*-]@anon-20191002_181700-265:localhost:8800)-]@anon-20191002_181700-264:localhost:8800(-]@anon-20191002_181700-263:localhost:8800'-]@anon-20191002_181700-262:localhost:8800&-]@anon-20191002_181700-262:localhost:8800%-]@anon-20191002_181700-261:localhost:8800$-]@anon-20191002_181700-260:localhost:8800#-]@anon-20191002_181700-260:localhost:8800"+[@anon-20191002_181700-25:localhost:8800-]@anon-20191002_181700-259:localhost:8800!-]@anon-20191002_181700-258:localhost:8800 -]@anon-20191002_181700-258:localhost:8800-]@anon-20191002_181700-257:localhost:8800-]@anon-20191002_181700-254:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800+[@anon-20191002_181700-24:localhost:8800-]@anon-20191002_181700-249:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800 -]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800 -]@anon-20191002_181700-237:localhost:8800 -]@anon-20191002_181700-236:localhost:8800 -]@anon-20191002_181700-234:localhost:8800 -]@anon-20191002_181700-232:localhost:8800 .k x ) z)S`m 6 C P ] Djw3&^QP]Q@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800[P]Q@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800EP]Q@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800DP]Q@anon-20191002_181700-722:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800CP]Q@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800NP]Q@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800MP]Q@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800LP]Q@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800KP]Q@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800JP]Q@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800IP]Q@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800HP]Q@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800GP]Q@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800FN[Q@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800,N[Q@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800+N[Q@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800)P]Q@anon-20191002_181700-755:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800dP]Q@anon-20191002_181700-754:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800cP]Q@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800bP]Q@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800aP]Q@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800`P]Q@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800_P]Q@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800^P]Q@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800]P]Q@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800\P]Q@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800ZP]Q@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800YP]Q@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800XP]Q@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800WP]Q@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800VP]Q@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800UP]Q@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800TP]Q@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800SP]Q@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800RP]Q@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800QP]Q@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800PP]Q@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800OP]Q@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800BP]Q@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800AN[Q@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800*P]Q@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800@P]Q@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800?P]Q@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800>P]Q@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800=P]Q@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800fP]Q@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800e *AFn F b F  r = E|;u%Mi%AFV f  v & ME]Q@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800ADEQ@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800MC]Q@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800ABEQ@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800MA]Q@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800A@EQ@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800M?]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800A>EQ@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800M=]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800A<EQ@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:8800M;]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800M:]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800>9]3@anon-20191002_181700-677:localhost:8800!13:localhost:4245528E3@__ANON__-51:localhost:42455!13:localhost:42455>6]3@anon-20191002_181700-676:localhost:8800!12:localhost:4245525E3@__ANON__-49:localhost:42455!12:localhost:42455A4EQ@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:8800M3]Q@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:8800>2]3@anon-20191002_181700-674:localhost:8800!11:localhost:42455>1]3@anon-20191002_181700-673:localhost:8800!11:localhost:4245520E3@__ANON__-47:localhost:42455!11:localhost:42455>/]3@anon-20191002_181700-672:localhost:8800!10:localhost:424552.E3@__ANON__-46:localhost:42455!10:localhost:42455=-]1@anon-20191002_181700-671:localhost:8800!9:localhost:42455A+EQ@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800M*]Q@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800A)EQ@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800M(]Q@anon-20191002_181700-669:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800A'EQ@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800DM&]Q@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800A%EQ@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800M$]Q@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800A#EQ@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800M"]Q@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800A!EQ@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800M ]Q@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800AEQ@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800M]Q@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800AEQ@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800M]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:880027E3@__ANON__-50:localhost:42455!13:localhost:424551,E1@__ANON__-45:localhost:42455!9:localhost:42455  7 k 9m^Y]@anon-20191002_181700-6:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAK127.0.0.1d]c@anon-20191002_181700-689:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENpMXN5VmlBO3h5NG9FQVcKMDAyZnNpZ25hdHVyZSCYuwn9jELEvJuUHDFlpMhBHDbPvBhF57TAUIgnygORqAo127.0.0.1d]c@anon-20191002_181700-698:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDR2cXg6THcucnlNU0pTRCoKMDAyZnNpZ25hdHVyZSCRObAd4hl2kIR1cnziKag-gT2xiL5cBuSpDxQXp2Y56wo127.0.0.1d]c@anon-20191002_181700-697:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo9SiYzOmF-Vjswa1I7elQKMDAyZnNpZ25hdHVyZSDkBe_9qyNrIiBUuJNiAjQWbHTgjeGWn6B1g-XDytVnDAo127.0.0.1d]c@anon-20191002_181700-696:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5xdSxZZnhsU3JxVnQteUwKMDAyZnNpZ25hdHVyZSCtq1UJU_Wyiyp9peYu9r8YQgQoH6XNu9vzifshqGZ0AAo127.0.0.1d]c@anon-20191002_181700-695:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNjNHd1UUpjOW9UNUF4UXoKMDAyZnNpZ25hdHVyZSCPIUVN9lWQ8BoblKnX6rhKPpx4Xu7DL-voKOjr7T_ijgo127.0.0.1d]c@anon-20191002_181700-693:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExOWnhedGV-Lno9XnE4VX4KMDAyZnNpZ25hdHVyZSA5Kn1fYh9S-SPR2I_R6omhBs-F-gPAuYLrGasgatD_KQo127.0.0.1d]c@anon-20191002_181700-692:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDsyRFAxYTB3d0JfaCo5NEoKMDAyZnNpZ25hdHVyZSCiZWeiN5k8q08QkTiOIMXaDEtS78p3BtHDiD4U6mLWdAo127.0.0.1d]c@anon-20191002_181700-691:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNFOkdjeUY7MjAmQUdEVysKMDAyZnNpZ25hdHVyZSCrhY5xAnfaaIsWrJfYKh4tW-EB9Tfc_TZ3e6e0bi60IAo127.0.0.1d]c@anon-20191002_181700-690:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFiN2dpPW55Omh4dGtpT0MKMDAyZnNpZ25hdHVyZSAG_4rwETz8mescypyvlXeArGSgGB-f7oN8uYsSEuwbRAo127.0.0.1a[a@anon-20191002_181700-68:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCg127.0.0.1: i  45 gih1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJ0OD1CbCZQVXRZUEYuRF4KMDAyZnNpZ25hdHVyZSAR-RXomZfd9jfoSoaVI6pRsyqBlKwUmG561zUi-FIt2QoA1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw6Uy5xLSo5NzptfjdpK24KMDAyZnNpZ25hdHVyZSAr8JmBjDzsrn18tqTPNxvpFT3uHTg3cdfg39iqBzZiuQoB1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5KR0pKaXlXVTJZTjpfeVIKMDAyZnNpZ25hdHVyZSDu25ZQUNrElC1w8D-7akohXJPWdBEgbR0gt_QpQE4f6AoE1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteSHZmWnc4b3BCanVDOGEKMDAyZnNpZ25hdHVyZSAJXE0br2225NWIy-FWwqW1eaYEjTysP1DwchdfqEdGbwoD1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJhLTlVUEkxMTZMaDcrfnAKMDAyZnNpZ25hdHVyZSCVL4wOss3stQBqS0T2dMMSFgrqGKCdKqLQErziY58pOwo=1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBNYXI7KmtYMio1cF5wU2oKMDAyZnNpZ25hdHVyZSC6faRL5gRMDSrt3JVQXVAJk41B5lf4mWNReFXR91OndAoG1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo3Mi5lYlV2a2tfX1dUZnIKMDAyZnNpZ25hdHVyZSCn9NKRbpbNtymqTeTuS2KkH7b7NnoLOyqZngASnYZkXgoF1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo9SiYzOmF-Vjswa1I7elQKMDAyZnNpZ25hdHVyZSDkBe_9qyNrIiBUuJNiAjQWbHTgjeGWn6B1g-XDytVnDAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDR2cXg6THcucnlNU0pTRCoKMDAyZnNpZ25hdHVyZSCRObAd4hl2kIR1cnziKag-gT2xiL5cBuSpDxQXp2Y56wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhczI4NHpvOjIyKkp-ZHcKMDAyZnNpZ25hdHVyZSAD9JeJIP3Tupr5ZZbRQoM8Hx-snGBPdo-286DrRelJDwo>1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDd2Z3M4VUdpZFk9PVQqb0QKMDAyZnNpZ25hdHVyZSD39rZw4ejANsei46y5Hswz78deevadOTxBob0SNf_4oAoC1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERTTWUxSF9aWGY3dSNmMG8KMDAyZnNpZ25hdHVyZSA6nMib2JiEAnfufACgSZiuu29stAm69nlXei1bDKQbHgo?1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQmbiswUTlOdm09bnE7R0YKMDAyZnNpZ25hdHVyZSAu3jjIIkaMnRtR2dDenDeOtlu8Y3BzyovqanzgrC0ccgo@ Z9"~c0rOE( Q 4   b #  m :  y V # } b ? g4t]B%P3x]*xzW$oR; 0 & 3  m.room.power_levels X>'] em.room.member@anon-20191002_181700-674:localhost:8800 >'] dm.room.member@anon-20191002_181700-673:localhost:8800 2'E dm.room.member@__ANON__-47:localhost:42455 /  dm.room.join_rules '  dm.room.create >'] cm.room.member@anon-20191002_181700-672:localhost:8800 2'E cm.room.member@__ANON__-46:localhost:42455 /  cm.room.join_rules '  cm.room.create >'] bm.room.member@anon-20191002_181700-671:localhost:8800 >'] m.room.member@anon-20191002_181700-683:localhost:8800 W'  m.room.create V3  m.room.power_levels Q>'] m.room.member@anon-20191002_181700-682:localhost:8800 T2'E m.room.member@__ANON__-55:localhost:42455 S/  m.room.join_rules U'  m.room.create R2'E m.room.member@__ANON__-55:localhost:42455 P2'E m.room.member@__ANON__-55:localhost:42455 O"?  m.room.history_visibility N/  m.room.join_rules M3  m.room.power_levels L>'] m.room.member@anon-20191002_181700-682:localhost:8800 K'  m.room.create J3  m.room.power_levels G/  m.room.join_rules I'  m.room.create H/'? m.room.member@fakeuser:localhost:42455 F3  m.room.power_levels C/  m.room.join_rules E'  m.room.create D3  m.room.power_levels @/  m.room.join_rules B'  m.room.create A! test_stateC ?3  m.room.power_levels <>'] m.room.member@anon-20191002_181700-681:localhost:8800 >2'E m.room.member@__ANON__-54:localhost:42455 9/  m.room.join_rules :"?  m.room.history_visibility ='  m.room.create ;3  m.room.power_levels 82'E m.room.member@__ANON__-54:localhost:42455 72'E m.room.member@__ANON__-54:localhost:42455 6"?  m.room.history_visibility 5/  m.room.join_rules 43  m.room.power_levels 3>'] m.room.member@anon-20191002_181700-681:localhost:8800 2'  m.room.create 12'E m.room.member@__ANON__-53:localhost:42455 02'E m.room.member@__ANON__-53:localhost:42455 /"?  m.room.history_visibility ./  m.room.join_rules -3  m.room.power_levels ,>'] m.room.member@anon-20191002_181700-680:localhost:8800 +'  ~m.room.create *2'E }m.room.member@__ANON__-52:localhost:42455 )2'E |m.room.member@__ANON__-52:localhost:42455 ("?  {m.room.history_visibility '"?  zm.room.history_visibility &/  ym.room.join_rules %/  xm.room.join_rules $3  wm.room.power_levels #3  vm.room.power_levels ">'] um.room.member@anon-20191002_181700-679:localhost:8800 !>'] tm.room.member@anon-20191002_181700-678:localhost:8800 '  sm.room.create '  rm.room.create 2'E qm.room.member@__ANON__-51:localhost:42455 /  qm.room.join_rules '  qm.room.create 3  pm.room.power_levels >'] om.room.member@anon-20191002_181700-677:localhost:8800 2'E om.room.member@__ANON__-51:localhost:42455 2'E om.room.member@__ANON__-50:localhost:42455 /  om.room.join_rules '  om.room.create 3  nm.room.power_levels >'] mm.room.member@anon-20191002_181700-676:localhost:8800 2'E mm.room.member@__ANON__-49:localhost:42455 /  mm.room.join_rules '  mm.room.create 2'E lm.room.member@__ANON__-48:localhost:42455 2'E km.room.member@__ANON__-48:localhost:42455 "?  jm.room.history_visibility /  im.room.join_rules 3  hm.room.power_levels >'] gm.room.member@anon-20191002_181700-675:localhost:8800 '  fm.room.create 2  &2v(eQay$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3536}{"auth_events": ["$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk"], "prev_events": ["$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk"], "type": "m.room.member", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-679", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-679:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043694925, "hashes": {"sha256": "Q8tvvLIpvaO5qk4MSQ+ZUSSlkfJgZN6ghgqiPvtYuLU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9UEhrc7pMrhy82wFs3o9GA4Cy1jDPuvlf95+ZmZ79zqitQcSbyp10aqpzPHRFQrUFWEaoswcHXMC1NlPAPlGDA"}}, "unsigned": {"age_ts": 1570043694925}}v'eQay$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3535}{"auth_events": ["$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI"], "prev_events": ["$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI"], "type": "m.room.member", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-678", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-678:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043694637, "hashes": {"sha256": "I1o2eBO0k8lcPojEdzt0YHQNbh6C06vU6Mxr0oYQByA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KNWPFdHZJcrQwqxgGHmv5ZMGZA8pGNJlAgxI6KNafFh3gOatksEhhAukFriA5RNkWptSbQlZL0NV0MIjLaQSDA"}}, "unsigned": {"age_ts": 1570043694637}}i&eQa_$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3534}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-679:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043693516, "hashes": {"sha256": "ZYbzlXiaA/lu+Abm+zM4RFnoIxv61BzdMTpU0UpubUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4+GykYlL0rZrSQs9mnQ7z7Jrymtf10uDwRR3RLckc2jz+oEOz4al3gAdThTd1bSFaORY1JF6mN+dHJEwc7KsCQ"}}, "unsigned": {"age_ts": 1570043693516}}i%eQa_$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3533}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-678:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043693315, "hashes": {"sha256": "LoVqXY25JLJZ5pZsvMuG89dwKc+Uwc/X5NNd0cbnXaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0tAptkQE9Wk/lyJx9OBnUHVxJhowToH11C1dD+nHO8ydHywk2/iqHtKj4Ap+6Px6A6d+dgqSBS4NUEUKiZu1DQ"}}, "unsigned": {"age_ts": 1570043693315}} $vqv 6 R N Y  ,j!V8K8v_CQ3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800]BQ/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800YAQ' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800_@Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800R?Q!G !PUIxAaiCnbqaVbawGu:localhost:8800test_stateC$83_outlier_C:localhost:42455>Q']Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800e=Q? Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility$1570043713441WJPkP:localhost:8800_<Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800Y;Q' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800]:Q/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800f9Q'E3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$82:localhost:42455_8Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800f7Q'E3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$82:localhost:42455u6Q'EQ !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$1570043714442rgQEQ:localhost:8800e5Q? Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility$1570043713441WJPkP:localhost:8800]4Q/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800_3Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043712439XdJFc:localhost:88002Q']Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800Y1Q' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:88000Q'Ee !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0/Q'Ee !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455$Yj1rt_LOcsGS_lkdiK-A3WM8fjhMfKY8M_DXEYI4_ywo.Q? e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibility$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkog-Q/ e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEi,Q3 e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o +Q']e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYc*Q' e ~!OJilSqnQvLgoXSqRaW:localhost:8800m.room.create$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE)Q'Ee }!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo(Q'Ee |!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455$Y0pilSon-GVpe-MoIpC3_DaY-RTrW8XorV81tkFs5Eko'Q? e {!SrwdtDytJDUBVZOueF:localhost:8800m.room.history_visibility$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSco&Q? e z!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibility$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Ig%Q/ e y!SrwdtDytJDUBVZOueF:localhost:8800m.room.join_rules$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEg$Q/ e x!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rules$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpci#Q3 e w!SrwdtDytJDUBVZOueF:localhost:8800m.room.power_levels$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4i"Q3 e v!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE !Q']e u!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@anon-20191002_181700-679:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY Q']e t!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 8l D `8]c!E@anon-20191002_181700-688:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQoXKOMYWOUIR127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-687:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAoIBFTGGSJGY127.0.0.1Perl + Net::Async::HTTP/0.44m~~]c!E@anon-20191002_181700-686:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwoFCAOSGHQKK127.0.0.1Perl + Net::Async::HTTP/0.44m|Ã}]c!E@anon-20191002_181700-685:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAoESVUDGRJIL127.0.0.1Perl + Net::Async::HTTP/0.44mU |]c!E@anon-20191002_181700-684:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogoQWWSYDBLAC127.0.0.1Perl + Net::Async::HTTP/0.44m/{]c!E@anon-20191002_181700-683:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQoWOMGUTEQPR127.0.0.1Perl + Net::Async::HTTP/0.44m z]c!E@anon-20191002_181700-682:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQoRHXEIACOYG127.0.0.1Perl + Net::Async::HTTP/0.44m:y]c!E@anon-20191002_181700-681:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQoCDCNSMATEC127.0.0.1Perl + Net::Async::HTTP/0.44mʪx]c!E@anon-20191002_181700-680:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV1PUNQTkp1STtPSGFFRk0KMDAyZnNpZ25hdHVyZSCA0p0-R1uRS5Sl-AAOAB4_RaJ42AnhExKpRtMDgcydkQoEVTHCGRZGI127.0.0.1Perl + Net::Async::HTTP/0.44mw]c!E@anon-20191002_181700-679:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxGWjBOUGZPUnMtTF4jUGgKMDAyZnNpZ25hdHVyZSAiw3cANp-fhXAprmTW_Sr8B9dS78iibaBkmlcSawciYQoSNZWGQRAKF127.0.0.1Perl + Net::Async::HTTP/0.44m 2 "2t,eQau$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3540}{"auth_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4", "$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "prev_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4"], "type": "m.room.join_rules", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043698179, "hashes": {"sha256": "C3bHo6bw1ENHEm6Y2NBDso1YKvSrBZPQ2JTKiuGweBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0KGpBhhZVOi0WRys1XR5ATIrjB/cYPgsaipdeCJbxtKwFkC75JZS0A9GU0Oywd6s6fOwp4dA+kjw5Ei6PK0/Aw"}}, "unsigned": {"age_ts": 1570043698179}}t+eQau$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3539}{"auth_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE", "$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE"], "type": "m.room.join_rules", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043697691, "hashes": {"sha256": "FCBmP6n+BZZC2D4pfjZci/vCfmJ+fVr2tvZWqPBOwGE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UbdsjDeMJUyvYhu/JZFwmNGr0qyEJWykSL6fJY6iyvUEfXu4hld3YmEqkqtqC4nKWY6pZlijGwMru6ZON4UOAA"}}, "unsigned": {"age_ts": 1570043697691}}k*eQac$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3538}{"auth_events": ["$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "prev_events": ["$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "type": "m.room.power_levels", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"users": {"@anon-20191002_181700-679:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043696580, "hashes": {"sha256": "VzUBXDI4gVoba+EAbUyBJI+MkZ2dPp040GRMVBNdqu8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JPukmvEb4kqHsMyfkq//UBvNZl6UnPphdrTNAFOkbXD9j1gmk8cN7KCXsj/45O4Y4UeCOkfHpJL7CXp5ECECCQ"}}, "unsigned": {"age_ts": 1570043696580}}k)eQac$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3537}{"auth_events": ["$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "type": "m.room.power_levels", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"users": {"@anon-20191002_181700-678:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043696149, "hashes": {"sha256": "bLApCeNmEshy8zvrHpiQo46qS4ruahhbk39Pg0lhm7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KlVbmUslaw6uYv/v3Fe6Ps+dH+Unyar2EoBxPXWoKPwgaFpbbpYUeYngOrVsqoPE0AkRE9GRevMemJVIe6fuBg"}}, "unsigned": {"age_ts": 1570043696149}} !o~z v r n j z 0r 73/+'KokQQQ$1570043730449XMaNb:localhost:8800$1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800k~QQQ$1570043729448XmFHA:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800k}QQQ$1570043728447IkYro:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800k|QQQ$1570043727446CGYaE:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800zeeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800yeeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800xeeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800weeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800veeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800ueeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800teeQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800fsGQQ$83_outlier_C:localhost:42455$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800frGQQ$83_outlier_C:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800fqGQQ$83_outlier_C:localhost:42455$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800\pQ3Q$1570043715443SSqOY:localhost:8800$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800\o3QQ$82:localhost:42455$1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800knQQQ$1570043713441WJPkP:localhost:8800$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800kmQQQ$1570043712440rfNzQ:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800klQQQ$1570043712439XdJFc:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800kkQQQ$1570043711438bqOHL:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jeeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800ieeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800heeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800geeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800feeQ$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800eeeQ$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800deeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800ceeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800beeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc!PVyTvKbqnjSXfGWAMy:localhost:8800aeeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800`eeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800_eeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800 SNl?_2   R~vI c ) V 6 h< p C  [.{N!m@sF& _ 23 c,Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ @,Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? ?,Q!WYyiQAVvitxsLZKVCG:localhost:8800 > >,Q!WYyiQAVvitxsLZKVCG:localhost:8800 = =,Q!WYyiQAVvitxsLZKVCG:localhost:8800 < <+Q !VOhMAiLfKyTOZbmKGw:localhost:8800mm,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WYyiQAVvitxsLZKVCG:localhost:8800 B B,Q!WYyiQAVvitxsLZKVCG:localhost:8800 A A +,Q!VOhMAiLfKyTOZbmKGw:localhost:8800oo,Q!VOhMAiLfKyTOZbmKGw:localhost:8800nn,Q!VCSCNemqikJZiRtxrs:localhost:8829,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ff,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ee,Q!WWZVpyLeZfyfpWidLx:localhost:8800dd,Q!WWZVpyLeZfyfpWidLx:localhost:8800cc,Q!WWZVpyLeZfyfpWidLx:localhost:8800bb,Q!WWZVpyLeZfyfpWidLx:localhost:8800aa,Q!WWZVpyLeZfyfpWidLx:localhost:8800``,Q!WWZVpyLeZfyfpWidLx:localhost:8800__,Q!WWZVpyLeZfyfpWidLx:localhost:8800^^+Q !WWZVpyLeZfyfpWidLx:localhost:8800]],Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !VUibrTIkcRbfrogbQV:localhost:8800  ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800qq,Q!VOhMAiLfKyTOZbmKGw:localhost:8800pp+Q !WFHIeSFQyuugGeBFxW:localhost:8800UU,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VUibrTIkcRbfrogbQV:localhost:8800 ! !,Q!VUibrTIkcRbfrogbQV:localhost:8800 ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800tt,Q!VOhMAiLfKyTOZbmKGw:localhost:8800ss,Q!VOhMAiLfKyTOZbmKGw:localhost:8800rr,Q!VUibrTIkcRbfrogbQV:localhost:8800 % %+Q !VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 +Q !VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 # #,Q!VUibrTIkcRbfrogbQV:localhost:8800 " ",Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !WVzjUePHrzCjfyTbmK:localhost:8800,Q!WFHIeSFQyuugGeBFxW:localhost:8800ZZ,Q!WFHIeSFQyuugGeBFxW:localhost:8800YY,Q!WFHIeSFQyuugGeBFxW:localhost:8800XX,Q!WFHIeSFQyuugGeBFxW:localhost:8800WW,Q!WFHIeSFQyuugGeBFxW:localhost:8800VV[,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800+Q !VNdqhtoDkyMoQdMTtM:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800+Q !WgXzOXLTeqaGfiDFhL:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 $ $+Q !WYyiQAVvitxsLZKVCG:localhost:8800 ; ; SNl?_2   R~vI c ) V 6 h< p C  [.{N!m@sF& _ 23 c,Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ @,Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? ?,Q!WYyiQAVvitxsLZKVCG:localhost:8800 > >,Q!WYyiQAVvitxsLZKVCG:localhost:8800 = =,Q!WYyiQAVvitxsLZKVCG:localhost:8800 < <+Q !VOhMAiLfKyTOZbmKGw:localhost:8800mm,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WYyiQAVvitxsLZKVCG:localhost:8800 B B,Q!WYyiQAVvitxsLZKVCG:localhost:8800 A A +,Q!VOhMAiLfKyTOZbmKGw:localhost:8800oo,Q!VOhMAiLfKyTOZbmKGw:localhost:8800nn,Q!VCSCNemqikJZiRtxrs:localhost:8829,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ff,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ee,Q!WWZVpyLeZfyfpWidLx:localhost:8800dd,Q!WWZVpyLeZfyfpWidLx:localhost:8800cc,Q!WWZVpyLeZfyfpWidLx:localhost:8800bb,Q!WWZVpyLeZfyfpWidLx:localhost:8800aa,Q!WWZVpyLeZfyfpWidLx:localhost:8800``,Q!WWZVpyLeZfyfpWidLx:localhost:8800__,Q!WWZVpyLeZfyfpWidLx:localhost:8800^^+Q !WWZVpyLeZfyfpWidLx:localhost:8800]],Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !VUibrTIkcRbfrogbQV:localhost:8800  ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800qq,Q!VOhMAiLfKyTOZbmKGw:localhost:8800pp+Q !WFHIeSFQyuugGeBFxW:localhost:8800UU,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VUibrTIkcRbfrogbQV:localhost:8800 ! !,Q!VUibrTIkcRbfrogbQV:localhost:8800 ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800tt,Q!VOhMAiLfKyTOZbmKGw:localhost:8800ss,Q!VOhMAiLfKyTOZbmKGw:localhost:8800rr,Q!VUibrTIkcRbfrogbQV:localhost:8800 % %+Q !VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 +Q !VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 # #,Q!VUibrTIkcRbfrogbQV:localhost:8800 " ",Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !WVzjUePHrzCjfyTbmK:localhost:8800,Q!WFHIeSFQyuugGeBFxW:localhost:8800ZZ,Q!WFHIeSFQyuugGeBFxW:localhost:8800YY,Q!WFHIeSFQyuugGeBFxW:localhost:8800XX,Q!WFHIeSFQyuugGeBFxW:localhost:8800WW,Q!WFHIeSFQyuugGeBFxW:localhost:8800VV[,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800+Q !VNdqhtoDkyMoQdMTtM:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800+Q !WgXzOXLTeqaGfiDFhL:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 $ $+Q !WYyiQAVvitxsLZKVCG:localhost:8800 ; ; X P  q # {3ayxY ke'Q ]$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEm.room.member!lgejtcwlywOoIXwEgy:localhost:8800m m@anon-20191002_181700-682:localhost:8800j e'Q  ]$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkom.room.create!lgejtcwlywOoIXwEgy:localhost:8800mm@anon-20191002_181700-682:localhost:8800ziAQ A $86_sent_F:localhost:42455message!PUIxAaiCnbqaVbawGu:localhost:8800 mm@fake_user:localhost:42455zhAQ A $85_sent_E:localhost:42455message!PUIxAaiCnbqaVbawGu:localhost:8800 mm^@fake_user:localhost:42455gMQ A $84_backfilled_D:localhost:42455message!PUIxAaiCnbqaVbawGu:localhost:8800 mm@fake_user:localhost:42455fG!Q E$83_outlier_C:localhost:42455test_state!PUIxAaiCnbqaVbawGu:localhost:8800mm@__ANON__-54:localhost:42455eQ3Q ]$1570043715443SSqOY:localhost:8800m.room.power_levels!PUIxAaiCnbqaVbawGu:localhost:8800mum+@anon-20191002_181700-681:localhost:8800{d3'Q E$82:localhost:42455m.room.member!PUIxAaiCnbqaVbawGu:localhost:8800m>m@__ANON__-54:localhost:42455"cQ?Q ]$1570043713441WJPkP:localhost:8800m.room.history_visibility!PUIxAaiCnbqaVbawGu:localhost:8800m'mٖ@anon-20191002_181700-681:localhost:8800bQ/Q ]$1570043712440rfNzQ:localhost:8800m.room.join_rules!PUIxAaiCnbqaVbawGu:localhost:8800mBmմ@anon-20191002_181700-681:localhost:8800aQ3Q ]$1570043712439XdJFc:localhost:8800m.room.power_levels!PUIxAaiCnbqaVbawGu:localhost:8800mLm@anon-20191002_181700-681:localhost:8800`Q'Q ]$1570043711438bqOHL:localhost:8800m.room.member!PUIxAaiCnbqaVbawGu:localhost:8800mmp@anon-20191002_181700-681:localhost:8800_ Q'Q  ]$1570043710437aFoBB:localhost:8800m.room.create!PUIxAaiCnbqaVbawGu:localhost:8800m%m|@anon-20191002_181700-681:localhost:8800^e'Q E$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0m.room.member!OJilSqnQvLgoXSqRaW:localhost:8800m'mġ@__ANON__-53:localhost:42455,]e?Q ]$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkom.room.history_visibility!OJilSqnQvLgoXSqRaW:localhost:8800mm@anon-20191002_181700-680:localhost:8800$\e/Q ]$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEm.room.join_rules!OJilSqnQvLgoXSqRaW:localhost:8800mYmW@anon-20191002_181700-680:localhost:8800&[e3Q ]$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1om.room.power_levels!OJilSqnQvLgoXSqRaW:localhost:8800m幆m庌@anon-20191002_181700-680:localhost:8800 Ze'Q ]$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYm.room.member!OJilSqnQvLgoXSqRaW:localhost:8800mem嶾@anon-20191002_181700-680:localhost:8800Y e'Q  ]$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWEm.room.create!OJilSqnQvLgoXSqRaW:localhost:8800mQm峴@anon-20191002_181700-680:localhost:8800!Xe)Q ]$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNom.room.message!PVyTvKbqnjSXfGWAMy:localhost:8800m2m宁@anon-20191002_181700-678:localhost:8800We'Q E$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOom.room.member!SrwdtDytJDUBVZOueF:localhost:8800m婃m@__ANON__-52:localhost:42455,Ve?Q ]$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScm.room.history_visibility!SrwdtDytJDUBVZOueF:localhost:8800m3m@anon-20191002_181700-679:localhost:8800,Ue?Q ]$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Im.room.history_visibility!PVyTvKbqnjSXfGWAMy:localhost:8800mmy@anon-20191002_181700-678:localhost:8800$Te/Q ]$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEm.room.join_rules!SrwdtDytJDUBVZOueF:localhost:8800mm@anon-20191002_181700-679:localhost:8800$Se/Q ]$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcm.room.join_rules!PVyTvKbqnjSXfGWAMy:localhost:8800mm圔@anon-20191002_181700-678:localhost:8800 X} { y w u sqomkigy 2XjQQQ$1570043712440rfNzQ:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043712440rfNzQ:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043712440rfNzQ:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043712439XdJFc:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043712439XdJFc:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043711438bqOHL:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800~ eeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~~eeQ$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~}eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800~|eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~{eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800~zeeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800~yeeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~xeeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800~weeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800~veeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800~ueeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800~teeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800~seeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~reeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800~qeeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800~peeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800 2RM H C \  7 2-<U?X ?X q$J~QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043750466Tmiqu:localhost:8800;}Q3 !KetCYFxrTxawNOGnOf:localhost:8800$94:localhost:42455J|QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043748464QpNXV:localhost:8800J{QQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043748463euAqZ:localhost:8800JzQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043747462YuUEF:localhost:8800JyQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043746461eQhrq:localhost:8800JxQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043745460sJOiY:localhost:8800JwQQ!JiUawCFQnodcpssOfK:localhost:8800$1570043744459BIUYb:localhost:8800JvQQ!JiUawCFQnodcpssOfK:localhost:8800$1570043741458PZvre:localhost:8800>uQ9!JiUawCFQnodcpssOfK:localhost:8800$91_m1:localhost:42455JtQQ!JiUawCFQnodcpssOfK:localhost:8800$1570043741458PZvre:localhost:8800;sQ3 !JiUawCFQnodcpssOfK:localhost:8800$90:localhost:42455JrQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043739456qeuuS:localhost:8800JqQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043738455KNDHf:localhost:8800JpQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043737454adOjg:localhost:8800JoQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736453VtbeL:localhost:8800JnQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736452Igyim:localhost:8800;mQ3 !NgkQVVUNzoyCVPtckM:localhost:8800$89:localhost:42455JlQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043733451EJhWh:localhost:8800;kQ3 !NgkQVVUNzoyCVPtckM:localhost:8800$87:localhost:42455JjQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043730449XMaNb:localhost:8800JiQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043729448XmFHA:localhost:8800JhQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043728447IkYro:localhost:8800JgQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043727446CGYaE:localhost:8800JfQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043726445lSnmj:localhost:8800TeQe !lgejtcwlywOoIXwEgy:localhost:8800$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQTdQe !lgejtcwlywOoIXwEgy:localhost:8800$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkTcQe !lgejtcwlywOoIXwEgy:localhost:8800$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8ETbQe !lgejtcwlywOoIXwEgy:localhost:8800$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcTaQe !lgejtcwlywOoIXwEgy:localhost:8800$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYT`Qe !lgejtcwlywOoIXwEgy:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkET_Qe !lgejtcwlywOoIXwEgy:localhost:8800$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkoJ^QQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043715443SSqOY:localhost:8800;]Q3 !PUIxAaiCnbqaVbawGu:localhost:8800$82:localhost:42455J\QQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043713441WJPkP:localhost:8800J[QQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043712440rfNzQ:localhost:8800JZQQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043712439XdJFc:localhost:8800JYQQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043711438bqOHL:localhost:8800JXQQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043710437aFoBB:localhost:8800TWQe !OJilSqnQvLgoXSqRaW:localhost:8800$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0TVQe !OJilSqnQvLgoXSqRaW:localhost:8800$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66XkoTUQe !OJilSqnQvLgoXSqRaW:localhost:8800$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEETTQe !OJilSqnQvLgoXSqRaW:localhost:8800$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1oTSQe !OJilSqnQvLgoXSqRaW:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYTRQe !OJilSqnQvLgoXSqRaW:localhost:8800$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWETQQe !PVyTvKbqnjSXfGWAMy:localhost:8800$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNoTPQe !SrwdtDytJDUBVZOueF:localhost:8800$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOoTOQe !SrwdtDytJDUBVZOueF:localhost:8800$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScTNQe !PVyTvKbqnjSXfGWAMy:localhost:8800$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4ITMQe !SrwdtDytJDUBVZOueF:localhost:8800$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE Iyj[L=.zk\M>/  { l ] N ? 0 !   ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  | m ^ O @ 1 "   } n _ P A 2 #   vgXI  } n _ P A 2 #   m]]m\\m h[[mZZmYYmXXm$WWmA //m;..m8--m5v,,m3++m/**m&.))m!6((m''m5&&m%%m$$m##mV""m!!m.  mmm$mٸmmm^mHmPmmmEm m}mmxVmtmrmo  ml  mj@  mf>  ma  m^m\TmY(mV mPmMmK.mHnmErmB m< m9 m70 m3u m0 m* m( m$ m mm m m? ma m mu m m m0 m m m m m m m mu m> m' mB mL m m% m' m mY m幆 me mQ m2 m婃 m3 m m m m m mM m- m m mk ma ma ma ma ma mW mW mW mW mP mJz mGB mD; m@ m=a m0A m(w m(` m(_ m(^ mNNmXMMmSLLmKKmJJm縏IIm>HHm粸GGm穣FFmEEm#DDmCCm(BBm疣AAm瓕@@m???m_>>m炝==m<<m}>;;my::mo99ml88mh77me(66maf55mX44mT/33mO22mL11mI00m4 m& m% m% m / m  m  m  m mX m m m mP m, mh mg m m( m֨ m m m m m_ m m m% m mH m䬆 m䨆 m. m< mG m: m䖲 m mG m my m  m䀮 ~ ~m} } }mz | |mu@ { {mrZ z zmoS y yml x xmh w wma* v vmPVVmUUm^TTmSSm݈RRm?QQmQPPmOO  wm0eQw$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "txn_id": "616", "stream_ordering": 3544}{"auth_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE", "$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I"], "type": "m.room.message", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"body": "Hello world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043702834, "hashes": {"sha256": "VNfRzeC9J8S4rxRlBUUMbFT9aHdDTe/7j2ZoIY5IfEI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1N6ZxRky5+vPLbiZbZLtLPQY5a0gzY3SMNYaiIDtrBJ7n9Clmy5lPOwzmCaKN6SgfLkhbdSCGXMFZpyH8JIVAw"}}, "unsigned": {"age_ts": 1570043702834}}}/eQ33$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo!SrwdtDytJDUBVZOueF:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3543}{"hashes": {"sha256": "n5VLZfrhAuRYNHe228GBU9E5o9KalCOmUQ25yJxhnaE"}, "sender": "@__ANON__-52:localhost:42455", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "type": "m.room.member", "depth": 6, "state_key": "@__ANON__-52:localhost:42455", "origin": "localhost:42455", "origin_server_ts": 1570043701635, "prev_events": ["$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc"], "auth_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4", "$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE"], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "7dof3tcuOyMKMgUtKeQIAGhdp/9RqnD/6Y77Hzlb1Y7T5fce27o7dAlw0u0Mb0Lh05aPlgdUFiTkyEwMKVGWCA"}}, "unsigned": {}}.eQa$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3542}{"auth_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4", "$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "prev_events": ["$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE"], "type": "m.room.history_visibility", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043699763, "hashes": {"sha256": "YuGZqfK6Gox2qauh0aPwyV/UAn/hDA6igb9adQ1V0/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xA0Bn9RjVFrmA3E+6xXdqFJv1gNbnMqie/e7AHNHqMlpBoL6ulzStNI4MREY3sroyHujmH7+J+5fw9SC6W6mDQ"}}, "unsigned": {"age_ts": 1570043699763}}-eQa$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3541}{"auth_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE", "$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc"], "type": "m.room.history_visibility", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043699199, "hashes": {"sha256": "JW57cc6pmtKHxgLrGHUeuQ3lzA/c+1wIcRUrRgV3WfM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dBsqtjnlssKeshZgVV9CtEwtyCnEJB8L/YQVmZMBfpy1l2bPf+/mE9L6ABOQFL+kMEPRoadui+NEOu4NoQ4pAg"}}, "unsigned": {"age_ts": 1570043699199}} $' + W  y2eQ%=$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800content.bodyMessage from AS directlyi1eQ%$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg!ABHbfUdkHCJksMsaUt:localhost:8800content.bodytest.pngi0eQ%$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s!DntdfAPfCfgdOoRMdl:localhost:8800content.bodytest.txte/eQ%$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs!DntdfAPfCfgdOoRMdl:localhost:8800content.bodytesti.eQ%$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc!THHfVSOSWiBQTHRAnJ:localhost:8800content.bodytest.txtY-QQ%$1570043754467mNKfq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800content.bodym3M,9Q%$98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800content.bodyM2M+9Q%$95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800content.bodyM1Y*QQ%$1570043744459BIUYb:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800content.bodym3M)9Q%$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800content.bodyM1N(3Q%$88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800content.bodyDeniedj'eQ%$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ!lgejtcwlywOoIXwEgy:localhost:8800content.bodyMessage 1l&eQ%#$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo!PVyTvKbqnjSXfGWAMy:localhost:8800content.bodyHello world Fm< xG R ! ]  e 4 p?{JU$`/k: vE , h 7  s B[xG*0]@anon-20191002_181700-713:localhost:88000]@anon-20191002_181700-712:localhost:88000]@anon-20191002_181700-711:localhost:88000]@anon-20191002_181700-710:localhost:88000]@anon-20191002_181700-709:localhost:88000]@anon-20191002_181700-708:localhost:88000]@anon-20191002_181700-707:localhost:88000]@anon-20191002_181700-706:localhost:88000]@anon-20191002_181700-705:localhost:88000]@anon-20191002_181700-704:localhost:88000]@anon-20191002_181700-703:localhost:88000]@anon-20191002_181700-702:localhost:88000]@anon-20191002_181700-701:localhost:88000]@anon-20191002_181700-700:localhost:88000]@anon-20191002_181700-697:localhost:88000]@anon-20191002_181700-698:localhost:88000]@anon-20191002_181700-696:localhost:88000]@anon-20191002_181700-695:localhost:88000]@anon-20191002_181700-693:localhost:88000]@anon-20191002_181700-692:localhost:88000]@anon-20191002_181700-691:localhost:88000]@anon-20191002_181700-690:localhost:88000]@anon-20191002_181700-689:localhost:88000]@anon-20191002_181700-688:localhost:88000]@anon-20191002_181700-687:localhost:88000]@anon-20191002_181700-686:localhost:88000]@anon-20191002_181700-685:localhost:88000]@anon-20191002_181700-684:localhost:88000]@anon-20191002_181700-683:localhost:88000]@anon-20191002_181700-682:localhost:88000]@anon-20191002_181700-681:localhost:88000]@anon-20191002_181700-680:localhost:88000]@anon-20191002_181700-679:localhost:88000]@anon-20191002_181700-678:localhost:88000]@anon-20191002_181700-677:localhost:88000]@anon-20191002_181700-676:localhost:8800$E@__ANON__-48:localhost:424550]@anon-20191002_181700-675:localhost:88000]@anon-20191002_181700-673:localhost:88000]@anon-20191002_181700-674:localhost:8800$E@__ANON__-46:localhost:424550] @anon-20191002_181700-724:localhost:88000] @anon-20191002_181700-723:localhost:88000] @anon-20191002_181700-722:localhost:88000] @anon-20191002_181700-721:localhost:88000]@anon-20191002_181700-720:localhost:88000]@anon-20191002_181700-718:localhost:88000]@anon-20191002_181700-719:localhost:88000]@anon-20191002_181700-717:localhost:88000]@anon-20191002_181700-716:localhost:88000]@anon-20191002_181700-715:localhost:88000]@anon-20191002_181700-714:localhost:88000]@anon-20191002_181700-672:localhost:88000]@anon-20191002_181700-671:localhost:88000]@anon-20191002_181700-670:localhost:88000]@anon-20191002_181700-669:localhost:88000]@anon-20191002_181700-668:localhost:88000]@anon-20191002_181700-667:localhost:88000]@anon-20191002_181700-666:localhost:88000]@anon-20191002_181700-665:localhost:88000]@anon-20191002_181700-664:localhost:880010]@anon-20191002_181700-663:localhost:88000]@anon-20191002_181700-662:localhost:88000]@anon-20191002_181700-661:localhost:88000]@anon-20191002_181700-660:localhost:88000]@anon-20191002_181700-659:localhost:88000]@anon-20191002_181700-658:localhost:88000]@anon-20191002_181700-657:localhost:88000]@anon-20191002_181700-656:localhost:88000]@anon-20191002_181700-655:localhost:8800   *t4eQau$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3548}{"auth_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o", "$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "prev_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o"], "type": "m.room.join_rules", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043706457, "hashes": {"sha256": "P2E+VYly/7UThDWEEJE8n+Y35J7GfZlXUZO5nXjHRsE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jt8k5d9Cr+pHme65fwi/M3J2rPySA/SOtFlvL2qBfqRI2VBEztzuRagQM169wwwkuMT/ecG6PZHNKEyM2IUaAw"}}, "unsigned": {"age_ts": 1570043706457}}k3eQac$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3547}{"auth_events": ["$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "prev_events": ["$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "type": "m.room.power_levels", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"users": {"@anon-20191002_181700-680:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043705734, "hashes": {"sha256": "c54e81t17I3qsAPXv/FIML/c7lT/S0zuDCQWtqwF3+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZAyP5acf3AXheAdfR/sG7srJCaUYuH0VBT2OesMHR+hbPqTL72YC4lUGLgZM2ZrXa70anJjqfZUqLF3rYu5nCA"}}, "unsigned": {"age_ts": 1570043705734}}v2eQay$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3546}{"auth_events": ["$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE"], "prev_events": ["$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE"], "type": "m.room.member", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-680", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-680:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043704933, "hashes": {"sha256": "PdKXTMgCgNnAgPbkiuynudXbzlxb9RPc4Zi2TIeMXeA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QsZRGkNOl2ivix7qe1YkxP2yCiI/RQjzvtrBg3SZhGOgS/vnTCe1Pr1b0Q7ISk5cwifNvE4ae/EHK6vHoAm8DA"}}, "unsigned": {"age_ts": 1570043704933}}i1eQa_$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3545}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-680:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043704145, "hashes": {"sha256": "EVmdCzcMyNSpaiuskL2PtrAOyPmQUo6HpA6JS11SIkc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PX0t022V2VoUGT3eu3sNlHvGGEkHyXd+pFNuStbK9yphznNXKsz4LM8QbNsiqzKzlBnaXLYQA79Y9KX1nT1bAA"}}, "unsigned": {"age_ts": 1570043704145}} &X= M q  M 3 Bp&D_}RX[,QQ/ $1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules]+QQ3 $1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels*QQ']$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800W)QQ' $1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.create](QQ3 $1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levelsd'3Q'E$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455c&QQ? $1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility[%QQ/ $1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules]$QQ3 $1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels#QQ']$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800W"QQ' $1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.create]!QQ3 $1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levelsd 3Q'E$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455cQQ? $1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility[QQ/ $1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules]QQ3 $1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levelsQQ']$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800WQQ' $1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.create}eQ'E$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455meQ? $PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibilityeeQ/ $yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rulesgeQ3 $l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels eQ']$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800aeQ' $IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800m.room.createPGQ!$83_outlier_C:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800test_stateC]QQ3 $1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levelsd3Q'E$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455cQQ? $1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility[QQ/ $1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules]QQ3 $1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levelsQQ']$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800W QQ' $1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.create} eQ'E$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455m eQ? $WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibilitye eQ/ $KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rulesg eQ3 $cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels eQ']$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800aeQ' $7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.create ItE\- r C  Y + o @  U & j ; Q"f7|Mb3wI_0tE[,.Q.Q!jDKAOtmeAGbYTpwyEW:localhost:8800th.Q!jDKAOtmeAGbYTpwyEW:localhost:8800m.Q!itfjLXhEaORJLkbfVS:localhost:8800th.Q!itfjLXhEaORJLkbfVS:localhost:8800m.Q!itKDOCtoMkFUETDtle:localhost:8800th-Q!itKDOCtoMkFUETDtle:localhost:8800mU.Q!ijOiudvuzOLNmgNKfG:localhost:8800th.Q!ijOiudvuzOLNmgNKfG:localhost:8800mV.Q!ifQxHmNAcSSGHVMjfi:localhost:8800th-Q!ifQxHmNAcSSGHVMjfi:localhost:8800m|.Q!icheSPMgpemswIdQkw:localhost:8800th.Q!icheSPMgpemswIdQkw:localhost:8800m.Q!iTQSCiLqRMDtgXtUdC:localhost:8800th.Q!iTQSCiLqRMDtgXtUdC:localhost:8800m.Q!iLHJbsFszubrnybDNz:localhost:8800th.Q!iLHJbsFszubrnybDNz:localhost:8800mT.Q!iKezIvJyjkNqKayFju:localhost:8800th.Q!iKezIvJyjkNqKayFju:localhost:8800m*.Q!hrhDJbmXvXBizKoiiK:localhost:8800th.Q!hrhDJbmXvXBizKoiiK:localhost:8800mU.Q!hnQOBexFYpvJntEChZ:localhost:8800m.Q!hgjYwwwjWJNgwrzOto:localhost:8800th-Q!hgjYwwwjWJNgwrzOto:localhost:8800mh.Q!hegUPDZCEEmBhsNJJR:localhost:8800th.Q!hegUPDZCEEmBhsNJJR:localhost:8800mJ.Q!hZuwenlFDapIPBOyfi:localhost:8800th.Q!hZuwenlFDapIPBOyfi:localhost:8800m.Q!hYPSaMPGsLnvYSmwhg:localhost:8800th.Q!hYPSaMPGsLnvYSmwhg:localhost:8800m.Q!hWHyATwKfuznrqTiyu:localhost:8800th.Q!hWHyATwKfuznrqTiyu:localhost:8800m.Q!hSzBsirdPWHtVjagXn:localhost:8800th-Q!hSzBsirdPWHtVjagXn:localhost:8800mn.Q!hNCwypIzdDZDVmCEfd:localhost:8800th.Q!hNCwypIzdDZDVmCEfd:localhost:8800m.Q!hGsPmWXboxZZtOlsxY:localhost:8800th.Q!hGsPmWXboxZZtOlsxY:localhost:8800mS.Q!hFwigdYZkwYNSwelRH:localhost:8800th.Q!hFwigdYZkwYNSwelRH:localhost:8800mE.Q!hDAzBWYEyRVBRlrCHh:localhost:8800m.Q!gXfXRDTXeVvOHQdaaQ:localhost:8800th.Q!gXfXRDTXeVvOHQdaaQ:localhost:8800mK.Q!fuHSJcznvGQnoYoLPW:localhost:8800th.Q!fuHSJcznvGQnoYoLPW:localhost:8800m.Q!fsbkkRBZlUcBVVfMME:localhost:8800th.Q!fsbkkRBZlUcBVVfMME:localhost:8800m.Q!fkvdYkesQOFCAQkzky:localhost:8800m.Q!ffijTnPMbTrDXHqOXf:localhost:8800th.Q!ffijTnPMbTrDXHqOXf:localhost:8800m.Q!fdEymmlcUvjgshvVyl:localhost:8800th.Q!fdEymmlcUvjgshvVyl:localhost:8800mO.Q!fcdNYFWFyxmdpKAknc:localhost:8800th-Q!fcdNYFWFyxmdpKAknc:localhost:8800mr.Q!fOJLpnbtgKNxxVDquX:localhost:8800th.Q!fOJLpnbtgKNxxVDquX:localhost:8800m.Q!fJXiUpbbOlLbHWmPgs:localhost:8800th-Q!fJXiUpbbOlLbHWmPgs:localhost:8800m3.Q!fGkUEndqGrieltwbCh:localhost:8800th.Q!fGkUEndqGrieltwbCh:localhost:8800m;.Q!fDISaqNBhlOwherxSt:localhost:8800th.Q!fDISaqNBhlOwherxSt:localhost:8800mj.Q!eySSVuCclRpBDgwKIU:localhost:8800th-Q!eySSVuCclRpBDgwKIU:localhost:8800m4.Q!erBPdgtUsiOfIKUkho:localhost:8800th-Q!erBPdgtUsiOfIKUkho:localhost:8800mp.Q!egbhiBqOGhloZzopol:localhost:8800th.Q!egbhiBqOGhloZzopol:localhost:8800m.Q!egCvzKpbEwmuvDoBTb:localhost:8800th-Q!egCvzKpbEwmuvDoBTb:localhost:8800m1.Q!edbUkYJIZBNOiTuLJs:localhost:8800th-Q!edbUkYJIZBNOiTuLJs:localhost:8800m6.Q!eZjhYVNpwdogVDKHCk:localhost:8800th.Q!eZjhYVNpwdogVDKHCk:localhost:8800m hH(H X@xP( 0  h @  x P ( ` 8  p H h@xP(`8pH X0h X0hhP'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 ('Q!SpXEytywhTbAftyVBr:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800 h'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800p'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800m'Q!SfYtaUhCFosNfHfUVm:localhost:8800l'Q!SfYtaUhCFosNfHfUVm:localhost:8800j'Q!SfYtaUhCFosNfHfUVm:localhost:8800h'Q!SfYtaUhCFosNfHfUVm:localhost:8800f'Q!SfYtaUhCFosNfHfUVm:localhost:8800d'Q!SfYtaUhCFosNfHfUVm:localhost:8800b'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800 |u m= e ] U MEeeQ$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800 yeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800 FeeQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800 ÁeeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800#eeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800YeeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800deeQ$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800)eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800/eeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800heeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800΁eeQ$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800ZeeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800eeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800UeeQ$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:88005eeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800 ~ > C q )@E(I  3 bw # N } U~m0eQ? $PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibilityaeQ' $tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create3eQ'E$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455joina2eQ' $IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800m.room.createg1eQ3 $l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levelsg!eQ3 $cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels eQ']$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800joinaeQ' $7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.createeQ'E$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455joinmeQ? $j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800m.room.history_visibilitymeQ? $GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibilityeeQ/ $QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800m.room.join_ruleseeQ/ $lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rulesgeQ3 $TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800m.room.power_levelsgeQ3 $h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels eQ']$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@anon-20191002_181700-679:localhost:8800join eQ']$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800joinaeQ' $yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800m.room.createh*3Q'E$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455joinc)QQ? $1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility[(QQ/ $1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules]+QQ3 $1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels&QQ']$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800joinW%QQ' $1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$eQ'E$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455joinm#eQ? $WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibilitye"eQ/ $KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules  w8QQa) $1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800{"token_id": 661, "stream_ordering": 3552}{"auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}]], "prev_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}]], "type": "m.room.member", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@anon-20191002_181700-681:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-681", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-681:localhost:8800", "event_id": "$1570043711438bqOHL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043711240, "hashes": {"sha256": "EsH8pflY5zWDxiBHdVj2tJy6TMLR/p6r0CraF0Vm9NY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gjsxlEWQUhIUeyYfRmvCYod+ZAhRV9PmKxazKCvkzS2N+FnLq+wgFUkK6F3WuimkXlwEhb1MUTXUJahgq/P3Bg"}}, "unsigned": {"age_ts": 1570043711240}}7QQaC $1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800{"token_id": 661, "stream_ordering": 3551}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@anon-20191002_181700-681:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-681:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043710437aFoBB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043710501, "hashes": {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Mxv8KyrXXa5IkiAfOYiDz1WqH63DxQ7zMf8dRmKSM5KKLFSTVBOh0Fr5mYm++LH08dqTU0bTCs1FXAxEcWFCA"}}, "unsigned": {"age_ts": 1570043710501}}}6eQ33$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!OJilSqnQvLgoXSqRaW:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3550}{"content": {"membership": "join"}, "auth_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o", "$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE"], "prev_events": ["$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko"], "origin_server_ts": 1570043708455, "state_key": "@__ANON__-53:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "type": "m.room.member", "sender": "@__ANON__-53:localhost:42455", "hashes": {"sha256": "Mblyt+yGTcj7foih2Tsu4gtMkJ5QkiiCce8JUhGheBo"}, "signatures": {"localhost:42455": {"ed25519:1": "YTbU5e/NKHCySH2liY6B/2pAOtO5tlCSU5QD/24a6gM7u0GWOZcleMtzivYYjcEYXGensIKvPGtX8HHtsOR3DA"}}, "unsigned": {}}5eQa$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3549}{"auth_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o", "$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "prev_events": ["$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE"], "type": "m.room.history_visibility", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043707165, "hashes": {"sha256": "Jw1VN4padfF+rbpAnr9Nmeq1gcFm6ETAQssKzjqBUME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qcGop3cjhuth03FTHzhM//5ePP2PcMf1P7ra3EVkeFi3Y3LKMEuLnG6aH6kBlqR13E+MDaccltAc44p4SN7XDw"}}, "unsigned": {"age_ts": 1570043707165}} 8p7  S  k  oP 6 21M  R m N n 5 Q3 jl8e$RZcunCcmii8e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUsha256 X8e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQksha256 88e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wsha256"8e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4sha2568e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Ysha2568e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWAsha2568e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wsha2568e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQsha2568e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMsha25698e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zssha2568e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYsha256?8e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Nssha25628e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQsha256 8e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzEsha256 8e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVssha256 v8e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8sha256 sO98e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Ysha256 8e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYsha256m8e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bcsha256 ]8e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRssha256 r8e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6csha256 8e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIsha256 8e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocsha256 498e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qsha256 \U98e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUosha2568e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyEsha2568e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAsha256Q8e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIsha2568e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIsha2568e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgsha2568e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8sha2568e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzosha2568e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Ysha2568e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8sha2568e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQsha256V8e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7ssha2568e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAsha2568e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUsha2568e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrksha256w8e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBssha256^8e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gsha2568e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTosha2568e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Isha256M8e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQsha2568e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4sha2568e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8sha256A8e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wsha2568e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Ysha2568e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1ssha2568e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gsha256x8e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ksha256!8e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oosha2568e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02ssha256 /8e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMsha2568e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMsha256r8e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8sha256 g * T~=gg]!c@anon-20191002_181700-691:localhost:8800KJUDUWTJKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNFOkdjeUY7MjAmQUdEVysKMDAyZnNpZ25hdHVyZSCrhY5xAnfaaIsWrJfYKh4tW-EB9Tfc_TZ3e6e0bi60IAog]!c@anon-20191002_181700-690:localhost:8800KFUCCJJOIGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFiN2dpPW55Omh4dGtpT0MKMDAyZnNpZ25hdHVyZSAG_4rwETz8mescypyvlXeArGSgGB-f7oN8uYsSEuwbRAog]!c@anon-20191002_181700-689:localhost:8800CXTYRGNUGFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENpMXN5VmlBO3h5NG9FQVcKMDAyZnNpZ25hdHVyZSCYuwn9jELEvJuUHDFlpMhBHDbPvBhF57TAUIgnygORqAog]!c@anon-20191002_181700-688:localhost:8800XKOMYWOUIRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQog]!c@anon-20191002_181700-687:localhost:8800IBFTGGSJGYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAog]!c@anon-20191002_181700-686:localhost:8800FCAOSGHQKKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwog]!c@anon-20191002_181700-685:localhost:8800ESVUDGRJILMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAog]!c@anon-20191002_181700-684:localhost:8800QWWSYDBLACMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogog ]!c@anon-20191002_181700-683:localhost:8800WOMGUTEQPRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQog ]!c@anon-20191002_181700-682:localhost:8800RHXEIACOYGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQog ]!c@anon-20191002_181700-681:localhost:8800CDCNSMATECMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQo /jQ8q?  w E  ~ M   S ! Y ' _ -4f1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk X1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI K1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0y1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUj1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY'1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAoo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgJ1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k f1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1Au1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s*1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE E1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds&1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cq1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 )3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3zb5 9 . | - @ b "DWA_r#Q 7,zVgeL$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUsha256qw >l&WTv>چ!m{luB@EVfeL$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUsha256^ 9I!d{@M ]VeeL$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQsha256o,X,}1mU\$}AVdeL$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEsha256[1ˢG'kc|a{q }i( VceL$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUsha256 >-4!%(>=1$n~@LbQL$1570043754467mNKfq:localhost:8800sha256<; 5]ot'UV^n91DVh @a9L$98_m2:localhost:42455sha256++ۘ$'o*ݺ|Oi_H`*A/tA`;L$97_sf2:localhost:42455sha256*V,7?cbk0FjA_;L$96_sf1:localhost:42455sha256XHl(}>7}}',q@^9L$95_m1:localhost:42455sha256^ï8ȿ o+Rnۄ+L]QL$1570043750466Tmiqu:localhost:8800sha256tťSVG|3gK 1 S.ߟs=\3L$94:localhost:42455sha256s'I$kxe _y"~q/oL[QL$1570043748464QpNXV:localhost:8800sha256}d^S~pZ!r/LZQL$1570043748463euAqZ:localhost:8800sha256vOԂ @`?|·))s%LYQL$1570043747462YuUEF:localhost:8800sha256/3q_9FIfkVL_LXQL$1570043746461eQhrq:localhost:8800sha256{r*F`tqM3KoLWQL$1570043745460sJOiY:localhost:8800sha256ON~@ }}xԈv`G_f.LVQL$1570043744459BIUYb:localhost:8800sha2568VY˪rGpR#4'>߽.NAU;L$93_sf2:localhost:42455sha256`ȑa-Z*bޫP>p,=K3L$89:localhost:42455sha2560 9 { ;X1yi@l=J3L$88:localhost:42455sha256~V{NY6,-DCq@π2 LIQL$1570043733451EJhWh:localhost:8800sha256TNG^0VNoP} `@w=H3L$87:localhost:42455sha256gNBah+Yu91LGQL$1570043730449XMaNb:localhost:8800sha256E)0Pk!&fd:f%2_=LFQL$1570043729448XmFHA:localhost:8800sha256GRX(H0V<1fIlM uLEQL$1570043728447IkYro:localhost:8800sha256yo׃"M^\4p"*jmLDQL$1570043727446CGYaE:localhost:8800sha256.#5"uGTB3m]^׵لVdLCQL$1570043726445lSnmj:localhost:8800sha256S諭࢜8ɇ)t9zkVBeL$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQsha256<@r{_<{ݕT vo; @VAeL$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQksha2560j:]?Be9:nΥY V@eL$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8Esha256=g|zC=` Р}V?eL$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcsha256-1<ՌTѨ?w ى<CV>eL$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYsha256o' f-7*/ѶV=eL$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEsha256K ɷ3H[aqPP?AV<eL$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkosha256"WK{qRNI𘗕_NJG;GL$83_outlier_C:localhost:42455sha256N>i@d v/zj]6 xL:QL$1570043715443SSqOY:localhost:8800sha2563HHI4 E!92w`1ȍL=93L$82:localhost:42455sha256~@@Dڀ!7ajKf}FL8QL$1570043713441WJPkP:localhost:8800sha256*3.?Df\-1$'ܘ00^EI<\=oL7QL$1570043712440rfNzQ:localhost:8800sha256vK3 |ACPԢ #5 L6QL$1570043712439XdJFc:localhost:8800sha256$X]K/F"U;:0!zS^5UL5QL$1570043711438bqOHL:localhost:8800sha256ѵAW@ `''CQ衝%  v ^ , d 2 j 9  q ? K w E }1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E91e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk .1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k M1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooC1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ X1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0 1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYZ1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE I1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wd1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wU1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 M3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:42455 3$21:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU V3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0V1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4P1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo #&[ 2 X F DB@><Nt-S[23QQ$87:localhost:42455$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j1QQQ$1570043730449XMaNb:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j0QQQ$1570043730449XMaNb:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j/QQQ$1570043730449XMaNb:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j.QQQ$1570043729448XmFHA:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j-QQQ$1570043729448XmFHA:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j,QQQ$1570043729448XmFHA:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j+QQQ$1570043728447IkYro:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j*QQQ$1570043728447IkYro:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j)QQQ$1570043727446CGYaE:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800~(eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800~'eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~&eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800~%eeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800~$eeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~#eeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800~"eeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800~!eeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~ eeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800~eeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800~eeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~eeQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800VG3Q$83_outlier_C:localhost:42455$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800eGQQ$83_outlier_C:localhost:42455$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800eGQQ$83_outlier_C:localhost:42455$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800eGQQ$83_outlier_C:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043715443SSqOY:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043715443SSqOY:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043715443SSqOY:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800[3QQ$82:localhost:42455$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800[3QQ$82:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800[3QQ$82:localhost:42455$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043713441WJPkP:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043713441WJPkP:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043713441WJPkP:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 /j8W>%  v ^ , d 2 j 9  q ? K w E }1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0~1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E91e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk .1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k M1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooC1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ V1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0 1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYZ1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE I1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wd1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wU1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 M3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:42455 3$21:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU T3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0V1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4P1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo  5>GQa $83_outlier_C:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": true, "stream_ordering": 3558}{"room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "type": "test_state", "depth": 8, "state_key": "C", "origin": "localhost:42455", "hashes": {"sha256": "UdALAiKSaUPauYnqrBq+ouiou9D4JfZ0Iam3jNIvOhk"}, "sender": "@__ANON__-54:localhost:42455", "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}], ["$82:localhost:42455", {"sha256": "7414QCt4wW4b5/hAiXoCt7b141ZwgQSyn++LIBmL6YM"}]], "event_id": "$83_outlier_C:localhost:42455", "content": {"body": "event_c"}, "origin_server_ts": 1570043716256, "prev_events": [["$1570043711438bqOHL:localhost:8800", {"sha256": "EsH8pflY5zWDxiBHdVj2tJy6TMLR/p6r0CraF0Vm9NY"}], ["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "signatures": {"localhost:42455": {"ed25519:1": "sQ2K0mdik8QAO+3Muoh5IJTlNeHBHpyMwZpuOreDM3Bm/CJE6j9mCo5X2D8yBVuQQw2AvQXDCLmFK/unAXJQBA"}}, "unsigned": {}}\=QQa[ $1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800{"token_id": 661, "stream_ordering": 3557}{"auth_events": [["$1570043712439XdJFc:localhost:8800", {"sha256": "/iRYXYVLL+wURiLBGVXy6Tv08jrRMIohelPxXhc1pVU"}], ["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}], ["$1570043711438bqOHL:localhost:8800", {"sha256": "+dG1QVdACYfrkgiY6mCQJ94nQ4ZRxh7ooZ08yWPUO5M"}]], "prev_events": [["$82:localhost:42455", {"sha256": "2H7h90Cn90AHRNqAIZI3pwUdEWHbwRRqS4Nm2hZ9FEY"}]], "type": "m.room.power_levels", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@anon-20191002_181700-681:localhost:8800", "content": {"events": {"m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.name": 50, "m.room.avatar": 50, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-681:localhost:8800": 100, "@__ANON__-54:localhost:42455": 100}, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043715443SSqOY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043715701, "hashes": {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+EwvQO1HH5vKYEShVpG14wl9poiy/ow8Tfu0lWHYxP4M27J+bNCv8+YQsifIGSL2qy7SX2RsZopG4z4/3jwfCg"}}, "unsigned": {"age_ts": 1570043715701, "replaces_state": "$1570043712439XdJFc:localhost:8800"}}R<3Q3 $82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3556}{"origin": "localhost:42455", "state_key": "@__ANON__-54:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@__ANON__-54:localhost:42455", "hashes": {"sha256": "7414QCt4wW4b5/hAiXoCt7b141ZwgQSyn++LIBmL6YM"}, "content": {"membership": "join"}, "event_id": "$82:localhost:42455", "auth_events": [["$1570043712439XdJFc:localhost:8800", {"sha256": "/iRYXYVLL+wURiLBGVXy6Tv08jrRMIohelPxXhc1pVU"}], ["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "dkuh5bQzDc/1yHwPuOFB1EMWkPMaUL3G1KK3CyMENQw"}]], "prev_events": [["$1570043713441WJPkP:localhost:8800", {"sha256": "KjMuP0RmXAfG5ActMSTjJwPcmDAwXgRFSe88XD1vBfk"}]], "origin_server_ts": 1570043714622, "signatures": {"localhost:42455": {"ed25519:1": "mVUV9vQ1k2CpguSX+UynfGYNfEcocmamdh5MEQIQBvQPvhCvZShJfQXZwk4aGFHhUbibJs8czMiPBCWBm9NYDw"}}, "unsigned": {}} *~xJd6 R $ l @  Z , t H  b 4 ~+[@anon-20191002_181700-35:localhost:8800-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800 -]@anon-20191002_181700-356:localhost:8800 -]@anon-20191002_181700-355:localhost:8800 -]@anon-20191002_181700-354:localhost:8800 -]@anon-20191002_181700-352:localhost:8800 -]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:8800 -]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-346:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-344:localhost:8829-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800-]@anon-20191002_181700-341:localhost:8800-]@anon-20191002_181700-340:localhost:8829+[@anon-20191002_181700-33:localhost:8800 -]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-338:localhost:8800-]@anon-20191002_181700-337:localhost:8800-]@anon-20191002_181700-336:localhost:8800-]@anon-20191002_181700-333:localhost:8800-]@anon-20191002_181700-332:localhost:8800-]@anon-20191002_181700-331:localhost:8800-]@anon-20191002_181700-330:localhost:8800+[@anon-20191002_181700-32:localhost:8800 -]@anon-20191002_181700-329:localhost:8800-]@anon-20191002_181700-328:localhost:8800-]@anon-20191002_181700-327:localhost:8800-]@anon-20191002_181700-326:localhost:8800-]@anon-20191002_181700-325:localhost:8800-]@anon-20191002_181700-324:localhost:8800-]@anon-20191002_181700-323:localhost:8800-]@anon-20191002_181700-322:localhost:8800-]@anon-20191002_181700-321:localhost:8800-]@anon-20191002_181700-320:localhost:8800+[@anon-20191002_181700-31:localhost:8800  JQQa) $1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3570}{"auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}]], "prev_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}]], "type": "m.room.member", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-683", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-683:localhost:8800", "event_id": "$1570043727446CGYaE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043727713, "hashes": {"sha256": "Y8SycC/DYYr+mX+sHmb63shMbQ5wBiSmtwXU2nJwVSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lnjndJfZnwh7Hml5wW82iR7aU0FinyaWXMUlsxPSj+mzsAhbfDxmO7Xx2fi/r5NOQMRdDluRyZeXuLT48rhuBQ"}}, "unsigned": {"age_ts": 1570043727713}}IQQaC $1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3569}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-683:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043726445lSnmj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043726750, "hashes": {"sha256": "RUQFM6a8tPgzGDFnW3Rq0l6c4DNOYbp8xazNWDVgvD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQaKQLSpvVOINN0Cuyhmg/e2Uia83WMyG1UUxiNXmhdXt01xwrJvquOEj4LokPXMB3RkUpccH9i0fFhU73aaDw"}}, "unsigned": {"age_ts": 1570043726750}}7HeQcy$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ!lgejtcwlywOoIXwEgy:localhost:8800{"outlier": false, "stream_ordering": 3568}{"hashes": {"sha256": "ZNNF4YHg2fpmGDkxg0+mqCySYdT4qvBh6Dh4YdWebtQ"}, "sender": "@__ANON__-55:localhost:42455", "type": "m.room.message", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "origin": "localhost:42455", "depth": 7, "origin_server_ts": 1570043724405, "prev_events": ["$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk"], "auth_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc", "$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk"], "content": {"body": "Message 1"}, "signatures": {"localhost:42455": {"ed25519:1": "FTkIH/YJUtp+dodiLiLb9dT0Wg6Bofhh9s/HXIkwEkBDlirotT3l/zcTtMIPR78C5SWVJAoTQLNjCmdWdCIfAg"}}, "unsigned": {}}}GeQ33$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3567}{"auth_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc"], "content": {"membership": "join"}, "origin_server_ts": 1570043724020, "prev_events": ["$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E"], "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-55:localhost:42455", "depth": 6, "origin": "localhost:42455", "hashes": {"sha256": "r1MLszXmnyMad76+cHtR14aUtAsOyeyfNFK3mshVqxM"}, "sender": "@__ANON__-55:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "2TNRhsVlOilBYs2MF7/dXXmAMXracenN4GEYtGiKZpgVkA8c/+E4yMv+/qsuCm4u/j3AhwU8t6am8g/WHLwPCA"}}, "unsigned": {}} KCX& C ^ , d 2 j 8  p > v D }jKQ8{^A%]+c1i7o= u$9$91e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz41e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Md1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUp1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY31e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw P1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA_1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w !1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I@1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kL1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 %1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QU1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk k1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 3$94:localhost:42455 ;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA A1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4&1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA ^1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YH1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU]1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc &1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E %1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8]1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQM1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEF1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM81e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM?1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg I1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQW1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU{1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM G1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA O1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMU1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQs1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI_1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM3 z 8   %<r}|6l|MQ']Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800$1570043746461eQhrq:localhost:8800ZLQ' Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800KQ3 QQ!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043741458PZvre:localhost:8800$1570043737454adOjg:localhost:8800gJQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455fIQ? Q !JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility$1570043739456qeuuS:localhost:8800^HQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800`GQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800FQ']Q !JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800$1570043736453VtbeL:localhost:8800ZEQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800DQ/ QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800$1570043729448XmFHA:localhost:8800zCQ'E33 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455$87:localhost:42455|BQ' QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800$1570043726445lSnmj:localhost:8800AQ3 QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800$1570043733451EJhWh:localhost:8800@Q3 QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043733451EJhWh:localhost:8800$1570043728447IkYro:localhost:8800g?Q'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455f>Q? Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility$1570043730449XMaNb:localhost:8800^=Q/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800`<Q3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800;Q']Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800$1570043727446CGYaE:localhost:8800Z:Q' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:88009Q/ ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc88Q']ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE,7Q'Eee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk6Q' ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko5Q3 ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY4Q'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkp3Q? e !lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibility$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8Eh2Q/ e !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcj1Q3 e !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 0Q']e !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEd/Q' e !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko.Q3 QQ !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800$1570043712439XdJFc:localhost:8800   iBeQa_$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3562}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-682:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043719057, "hashes": {"sha256": "m4Cmj/xex2yTkUn8FNsN7fDnb63JCe22MzGDID/3l/0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JNDqe6uEKCHFMxcDuVF3yKxxmFA941SP7o7VaKFo+vAsS0wDfrRXjIdJISnqR9s12AejwnrV2yc910ID9guJAw"}}, "unsigned": {"age_ts": 1570043719057}}xAAQc! $86_sent_F:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "stream_ordering": 3561}{"hashes": {"sha256": "tQtJQKYgucBclR6ph1PkZ0q1gtlu2B9LOn0W1DnrURQ"}, "sender": "@fake_user:localhost:42455", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "type": "message", "depth": 11, "origin": "localhost:42455", "origin_server_ts": 1570043718020, "prev_events": [["$85_sent_E:localhost:42455", {"sha256": "lbh7+MYAqKxHH5+v+a1X/iLd6EKNIb8bqNZlk0tJfhI"}]], "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "event_id": "$86_sent_F:localhost:42455", "content": {"body": "event_f"}, "signatures": {"localhost:42455": {"ed25519:1": "TdnF91nFgDAvf8ii5fS2x1ITGsNO4yvYBVDBi/4Q1Wb4gaIe4N43eFZZQkanYPtYf7Q/vZP96aTxU20XCsfRAw"}}, "unsigned": {}}~@AQc- $85_sent_E:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "stream_ordering": 3560}{"prev_events": [["$84_backfilled_D:localhost:42455", {"sha256": "sxhW3P7y6GJUy+OCfABWaZddfN+b3K5DF/NOoIWzxqo"}]], "origin_server_ts": 1570043716260, "content": {"body": "event_e"}, "event_id": "$85_sent_E:localhost:42455", "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "sender": "@fake_user:localhost:42455", "hashes": {"sha256": "lbh7+MYAqKxHH5+v+a1X/iLd6EKNIb8bqNZlk0tJfhI"}, "origin": "localhost:42455", "depth": 10, "type": "message", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "signatures": {"localhost:42455": {"ed25519:1": "QsVnlvSKPRXZKtuXgde2zOCBqsDg40wk2LwpWAdv1lZpRsa0H8zdB0Ffd+DHnreF4k69u1GJiLeXX8Rm6kUqCw"}}, "unsigned": {}}?MQc1 $84_backfilled_D:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "stream_ordering": 3559}{"content": {"body": "event_d"}, "event_id": "$84_backfilled_D:localhost:42455", "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "prev_events": [["$83_outlier_C:localhost:42455", {"sha256": "UdALAiKSaUPauYnqrBq+ouiou9D4JfZ0Iam3jNIvOhk"}]], "origin_server_ts": 1570043716259, "origin": "localhost:42455", "depth": 9, "type": "message", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@fake_user:localhost:42455", "hashes": {"sha256": "sxhW3P7y6GJUy+OCfABWaZddfN+b3K5DF/NOoIWzxqo"}, "signatures": {"localhost:42455": {"ed25519:1": "8J7WAU4TMYZO994QLGWodU55WKniD0DVsb0L4/YlVpy0uz33QSyEbcTFyKeDkzMwPI+QQi6N9An7o4kYtZmqBA"}}, "unsigned": {}} %Dm K P t p  #B7sN'k_hQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800gQ']Q !JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800$1570043736453VtbeL:localhost:8800YfQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800]eQ/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800fdQ'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455YcQ' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800_bQ3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800]aQ/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800f`Q'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455Y_Q' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800_^Q3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800_]Q3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043733451EJhWh:localhost:8800f\Q'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455u[Q'EQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$1570043731450RDvsb:localhost:8800eZQ? Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility$1570043730449XMaNb:localhost:8800]YQ/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800_XQ3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800WQ']Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800$1570043727446CGYaE:localhost:8800YVQ' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800gUQ/ e !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc TQ']e !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkESQ'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkcRQ' e !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkoiQQ3 e !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYPQ'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkOQ'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$V9LvQBTk5HXWoNLtFuHQz1KP4euh6nZgYTOU1i2m1tAoNQ? e !lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibility$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8EgMQ/ e !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKciLQ3 e !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY KQ']e !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEcJQ' e !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko]IQ/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800YHQ' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800_GQ3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800rFQ'?Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@fakeuser:localhost:42455$1570043717444lLmER:localhost:8800]EQ/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800YDQ' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800  FeQa$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3566}{"auth_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "prev_events": ["$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc"], "type": "m.room.history_visibility", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043722482, "hashes": {"sha256": "Kv5v0lTcDXmyscUPOkUKeSH+cluaXTg3mkYDcYPRG+Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fUWITbf1N03SjTGNTBcOwKvR5QIII9Bb/9KUWWrEC8XnQka3S9dH1izYw732pMbub/GqdjiMHLTk0A4UOr++Dg"}}, "unsigned": {"age_ts": 1570043722482}}tEeQau$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3565}{"auth_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "prev_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY"], "type": "m.room.join_rules", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043721776, "hashes": {"sha256": "btEEO9D3wDIpWqaVscnYCkvjQtAsJJPRt/S+0Fc+kRM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dHcuNE8YqCTHt6pxnyFUwkN8d59rKdYEC7pg3WWgsQmtOneEQgpbXBwvIH+ikajT7QVV7RCTX9hfbNS9y7m1Dw"}}, "unsigned": {"age_ts": 1570043721776}}kDeQac$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3564}{"auth_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "prev_events": ["$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "type": "m.room.power_levels", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"users": {"@anon-20191002_181700-682:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043720953, "hashes": {"sha256": "ixtpsFjYneN5dcuPG8zhoiuXRpj0DsSGoYNkPjY8mY4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nn5Qf75ciGp4MVTVgNwPmudBF3/Uq3v0AfKIVdJT2WXTGoDF/93Dk2vaZLGefF0BDOI7Rz5GuYeDfUJqavA2Ag"}}, "unsigned": {"age_ts": 1570043720953}}vCeQay$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3563}{"auth_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko"], "prev_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko"], "type": "m.room.member", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-682", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-682:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043719949, "hashes": {"sha256": "1oMpKeSNT1E8qVC1Itq3Z6kOApjBnH0JxItmlu+Wrq0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P+QA7n9oAto44eX4uENhBW8xEY5F68hDbpAqoAnY7D+NwqBXMboLu9FqggFgFCRCXDyI63CK78kFM620BBmUDg"}}, "unsigned": {"age_ts": 1570043719949}} V f 5 ] 9]y[]F Q'Q  ]$1570043745460sJOiY:localhost:8800m.room.create!KetCYFxrTxawNOGnOf:localhost:8800mV mVz@anon-20191002_181700-685:localhost:8800Q)Q ]$1570043744459BIUYb:localhost:8800m.room.message!JiUawCFQnodcpssOfK:localhost:8800mPmP@anon-20191002_181700-684:localhost:8800y;Q E $93_sf2:localhost:42455test.sf!JiUawCFQnodcpssOfK:localhost:8800 mMmNY@__ANON__-57:localhost:42455y;Q E$92_sf1:localhost:42455test.sf!JiUawCFQnodcpssOfK:localhost:8800mK.mK@__ANON__-57:localhost:424559)Q E$91_m1:localhost:42455m.room.message!JiUawCFQnodcpssOfK:localhost:8800mHnmH@__ANON__-57:localhost:42455Q3Q ]$1570043741458PZvre:localhost:8800m.room.power_levels!JiUawCFQnodcpssOfK:localhost:8800mErmE@anon-20191002_181700-684:localhost:8800{3'Q E$90:localhost:42455m.room.member!JiUawCFQnodcpssOfK:localhost:8800mBmBy@__ANON__-57:localhost:42455"~Q?Q ]$1570043739456qeuuS:localhost:8800m.room.history_visibility!JiUawCFQnodcpssOfK:localhost:8800m<m>@anon-20191002_181700-684:localhost:8800}Q/Q ]$1570043738455KNDHf:localhost:8800m.room.join_rules!JiUawCFQnodcpssOfK:localhost:8800m9m:u@anon-20191002_181700-684:localhost:8800|Q3Q ]$1570043737454adOjg:localhost:8800m.room.power_levels!JiUawCFQnodcpssOfK:localhost:8800m70m7@anon-20191002_181700-684:localhost:8800{Q'Q ]$1570043736453VtbeL:localhost:8800m.room.member!JiUawCFQnodcpssOfK:localhost:8800m3um3@anon-20191002_181700-684:localhost:8800z Q'Q  ]$1570043736452Igyim:localhost:8800m.room.create!JiUawCFQnodcpssOfK:localhost:8800m0m0@anon-20191002_181700-684:localhost:8800y3?Q E$89:localhost:42455m.room.other_message_type!NgkQVVUNzoyCVPtckM:localhost:8800m*m+1@__ANON__-56:localhost:42455|x3)Q E$88:localhost:42455m.room.message!NgkQVVUNzoyCVPtckM:localhost:8800m(m(@__ANON__-56:localhost:42455wQ3Q ]$1570043733451EJhWh:localhost:8800m.room.power_levels!NgkQVVUNzoyCVPtckM:localhost:8800m$m%@anon-20191002_181700-683:localhost:8800{v3'Q E$87:localhost:42455m.room.member!NgkQVVUNzoyCVPtckM:localhost:8800m m! @__ANON__-56:localhost:42455"uQ?Q ]$1570043730449XMaNb:localhost:8800m.room.history_visibility!NgkQVVUNzoyCVPtckM:localhost:8800mmm@anon-20191002_181700-683:localhost:8800tQ/Q ]$1570043729448XmFHA:localhost:8800m.room.join_rules!NgkQVVUNzoyCVPtckM:localhost:8800mmo@anon-20191002_181700-683:localhost:8800sQ3Q ]$1570043728447IkYro:localhost:8800m.room.power_levels!NgkQVVUNzoyCVPtckM:localhost:8800m?m@anon-20191002_181700-683:localhost:8800rQ'Q ]$1570043727446CGYaE:localhost:8800m.room.member!NgkQVVUNzoyCVPtckM:localhost:8800mam@anon-20191002_181700-683:localhost:8800q Q'Q  ]$1570043726445lSnmj:localhost:8800m.room.create!NgkQVVUNzoyCVPtckM:localhost:8800m m J@anon-20191002_181700-683:localhost:8800pe)Q E$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQm.room.message!lgejtcwlywOoIXwEgy:localhost:8800mum@__ANON__-55:localhost:42455oe'Q E$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkm.room.member!lgejtcwlywOoIXwEgy:localhost:8800mmh@__ANON__-55:localhost:42455,ne?Q ]$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8Em.room.history_visibility!lgejtcwlywOoIXwEgy:localhost:8800mm@anon-20191002_181700-682:localhost:8800$me/Q ]$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcm.room.join_rules!lgejtcwlywOoIXwEgy:localhost:8800m0mB@anon-20191002_181700-682:localhost:8800&le3Q ]$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYm.room.power_levels!lgejtcwlywOoIXwEgy:localhost:8800mm@anon-20191002_181700-682:localhost:8800 3RM f   A x + D l Z s&N~<MHC>TGQe !ABHbfUdkHCJksMsaUt:localhost:8800$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgTFQe !ABHbfUdkHCJksMsaUt:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucTEQe !ABHbfUdkHCJksMsaUt:localhost:8800$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8TDQe !DntdfAPfCfgdOoRMdl:localhost:8800$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4TCQe !DntdfAPfCfgdOoRMdl:localhost:8800$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582ZlgTBQe !DntdfAPfCfgdOoRMdl:localhost:8800$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gTAQe !DntdfAPfCfgdOoRMdl:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUT@Qe !DntdfAPfCfgdOoRMdl:localhost:8800$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAT?Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUT>Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUT=Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQT<Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrET;Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU>:Q9 !KetCYFxrTxawNOGnOf:localhost:8800$98_m2:localhost:42455?9Q; !KetCYFxrTxawNOGnOf:localhost:8800$97_sf2:localhost:42455?8Q; !KetCYFxrTxawNOGnOf:localhost:8800$96_sf1:localhost:42455>7Q9 !KetCYFxrTxawNOGnOf:localhost:8800$95_m1:localhost:42455J6QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043750466Tmiqu:localhost:8800;5Q3 !KetCYFxrTxawNOGnOf:localhost:8800$94:localhost:42455J4QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043749465PrxQH:localhost:8800J3QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043748464QpNXV:localhost:8800J2QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043748463euAqZ:localhost:8800J1QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043747462YuUEF:localhost:8800J0QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043746461eQhrq:localhost:8800J/QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043745460sJOiY:localhost:8800?.Q; !JiUawCFQnodcpssOfK:localhost:8800$93_sf2:localhost:42455?-Q; !JiUawCFQnodcpssOfK:localhost:8800$92_sf1:localhost:42455>,Q9 !JiUawCFQnodcpssOfK:localhost:8800$91_m1:localhost:42455J+QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043741458PZvre:localhost:8800;*Q3 !JiUawCFQnodcpssOfK:localhost:8800$90:localhost:42455J)QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043740457GtEWQ:localhost:8800J(QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043739456qeuuS:localhost:8800J'QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043738455KNDHf:localhost:8800J&QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043737454adOjg:localhost:8800J%QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736453VtbeL:localhost:8800J$QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736452Igyim:localhost:8800;#Q3 !NgkQVVUNzoyCVPtckM:localhost:8800$89:localhost:42455;"Q3 !NgkQVVUNzoyCVPtckM:localhost:8800$88:localhost:42455J!QQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043733451EJhWh:localhost:8800; Q3 !NgkQVVUNzoyCVPtckM:localhost:8800$87:localhost:42455JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043731450RDvsb:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043730449XMaNb:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043729448XmFHA:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043728447IkYro:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043727446CGYaE:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043726445lSnmj:localhost:8800TQe !lgejtcwlywOoIXwEgy:localhost:8800$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQTQe !lgejtcwlywOoIXwEgy:localhost:8800$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkTQe !lgejtcwlywOoIXwEgy:localhost:8800$V9LvQBTk5HXWoNLtFuHQz1KP4euh6nZgYTOU1i2m1tATQe !lgejtcwlywOoIXwEgy:localhost:8800$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8ETQe !lgejtcwlywOoIXwEgy:localhost:8800$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc -qT)}R' { P % y N # w L ! u J  s H q*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800:*Q!mTlCLZQCmfDuQsJxxp:localhost:88009*Q!mTlCLZQCmfDuQsJxxp:localhost:88008*Q!mTlCLZQCmfDuQsJxxp:localhost:88007*Q!mTlCLZQCmfDuQsJxxp:localhost:88006*Q!mTlCLZQCmfDuQsJxxp:localhost:88005*Q!mTlCLZQCmfDuQsJxxp:localhost:88004*Q!mTlCLZQCmfDuQsJxxp:localhost:88003*Q!mTlCLZQCmfDuQsJxxp:localhost:88002*Q!mTlCLZQCmfDuQsJxxp:localhost:88001*Q!mTlCLZQCmfDuQsJxxp:localhost:88000 -qT)}R' { P % y N # w L ! u J  s H q*Q!nxLxsxzliamzflrEBs:localhost:8800##*Q!nxLxsxzliamzflrEBs:localhost:8800  *Q!nxLxsxzliamzflrEBs:localhost:8800*Q!nvclDopiBLEOKBIheH:localhost:8800DD*Q!nvclDopiBLEOKBIheH:localhost:8800CC*Q!nvclDopiBLEOKBIheH:localhost:8800BB*Q!nvclDopiBLEOKBIheH:localhost:8800AA*Q!nvclDopiBLEOKBIheH:localhost:8800@@*Q!ntuwVdUxfzNIhIKYaz:localhost:8800::*Q!ntuwVdUxfzNIhIKYaz:localhost:880099*Q!ntuwVdUxfzNIhIKYaz:localhost:880088*Q!ntuwVdUxfzNIhIKYaz:localhost:880077*Q!ntuwVdUxfzNIhIKYaz:localhost:880066*Q!ntuwVdUxfzNIhIKYaz:localhost:880055*Q!ntuwVdUxfzNIhIKYaz:localhost:880044*Q!ntuwVdUxfzNIhIKYaz:localhost:880033*Q!ntuwVdUxfzNIhIKYaz:localhost:880022*Q!ntuwVdUxfzNIhIKYaz:localhost:880011*Q!ntuwVdUxfzNIhIKYaz:localhost:880000*Q!ntuwVdUxfzNIhIKYaz:localhost:8800//*Q!ntuwVdUxfzNIhIKYaz:localhost:8800..*Q!ntuwVdUxfzNIhIKYaz:localhost:8800--*Q!ntuwVdUxfzNIhIKYaz:localhost:8800,,*Q!ntuwVdUxfzNIhIKYaz:localhost:8800++*Q!ntuwVdUxfzNIhIKYaz:localhost:8800***Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800  Z UI0 1998800&a00byspnmflfl7onjam7vckavubuqfd7egviycsbodycontentdirectlyfrom localhostmessagexpe9zwanphlizylruivvam5HZ0 1678800abhbfudkhcjksmsautbody cdam1q2qxypgontentg0q2yiiz0smwe7yporyr6kzytg67gj localhostpngtest4G Z0 16788009vilrwvdvdk9r94n5hfmbodycontentdntdfapfcfgdoormdlg1d05yoghl71cshdoemk8s localhosttestxt#F80 1508800bodycontentdntdfapfcfgdoormdl+idkstxwyupzseeo3u2i12cjvlmlyvdz8yamj2kb4bms localhosttest 6 *>6E x0 1526 0ck8vway01570043744459biuyb 54467mnkfq9fqveua0aee8qcsg3e!20k7ddnprallvy8j6fdkbipfnmxile5f742455 que4zlimc1jxlh7u9vco2nafgaxvno 6szgxauuq8800S9158ea+b0jmgonndfa5jpjdzbdczmzuuuuvuobhax9yvutdzvyodyQcbwoxczf6irrpwcx57e91feontentQxy6edeniedsfbpkqfnvbqbgomukhelloijiuawcfqnodcpssofk rudexjfzidokbwdjqketcyfxrtxawnognofsrnlgejtcwlywooixwegyocalhostWprggyho7tivpk2pw6gpefmro5ty8xbk ucnatb847im1 23 essage1ngkqvvunzoycvptckmr0fjqvoxbpydglkjzbew6jrdgcpgndjhhibaxkryugkyox6qhle4xuqx388e92vzvytvkbqnjsxfgwamy+qhjtdytfjj3m5fdeicmkdeu4nwxxkph4tr3utaxnqgcsentinel*t3vvyndcluenyymlehfd4x93v3vdq1o7t2lv7xakdgest hhfvsoswibqthranjxt ufdbypfazvnfxnkcsftbssnkrtg*wsphztdlayo00k2jdg3trizkfvpiv7zdgcuta8okucworldvqqsc7luzkpjvrczhmhpeksydciD B0 124310570043482333dxdeq 3334ejwti 5odidb 4336qkopd 7ylfda 5338vblws 6339ybyqq 575399sisks 88411pdbwg424556952396078800Z9bodyQc ontentQdbfaszrfifesktjyjm event!h0kewul7nctuttnpjw2nrsb1cumosaym4ellore$lq6atrtelazktchzrikzcvvgwv egitjujzxqzpkzetemir ocalhost`message$sgnothingozgrybakndreeiaqwl$seetcycthpiakzskgrxluoteswbbqyepjqgnoazdpeuorldx zscknczcfpiiodaiqjxC `0 11301 0570043480330seknv 1331unawt 2xroco9 qlrbfgx6wgfmq2  0123456783  42455=56678800" 9bodyQcontentQrbfhxzdpstespgpauhereB localhost^messageB+oi9lfh2hz3ukduiqafyryp6vdvqoxdulqraqitbs3pszgrybakndreeiaqwlsawfpvsupexzlvcped unucefcga+xk54ssz0kc055qcbb9aweco9bqaonjvnsfaluvedqr4ypcmamnmzjvtgytrlizgzn1nr14nqez7c1la,B @14 2343988cahtmess7zx+! B7 256459yconheloo6ukj Q8jr D  | Jp> I0  h PO6  VxZ $ \ *b (`.l:f{I4uC1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo v1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIr1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIq1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIp1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx01e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o 1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ 1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE=$57_pl_x:localhost:42455\=$57_pl_x:localhost:42455[=$57_pl_x:localhost:42455Z=$57_pl_x:localhost:42455Y3$56:localhost:42455X3$56:localhost:42455W3$56:localhost:42455V3$55:localhost:42455L3$55:localhost:42455K3$55:localhost:42455J3$54:localhost:4245573$54:localhost:4245563$54:localhost:4245553$51:localhost:42455"3$51:localhost:42455!3$51:localhost:42455 3$51:localhost:424553$50:localhost:424553$50:localhost:424553$50:localhost:424551e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c [1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c Z1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA 1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA 1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA 1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms*1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms)1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI*1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI)1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI(1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA 1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg"1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE 21e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 21e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok21e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs  fxMQQa $1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3573}{"auth_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}], ["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "prev_events": [["$1570043729448XmFHA:localhost:8800", {"sha256": "vc/JzdEVR1JYKEgwVh886wgx/shm9BlJbE0MdenX98w"}]], "type": "m.room.history_visibility", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043730449XMaNb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043730285, "hashes": {"sha256": "2/o4ZsgdIrkISLgNSZg/MSwRAH9o0xKGgxaA6k94nn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kL0HCN3rOG/bkGhH6l5YTmKFLdvhIOXCpdi0tOBaYkYScCCFnQIqfsq5CN0LWmv2urIWzCjyNLLFtyvXXSAQAg"}}, "unsigned": {"age_ts": 1570043730285}}gLQQaq $1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3572}{"auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}], ["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}]], "prev_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}]], "type": "m.room.join_rules", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043729448XmFHA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043729411, "hashes": {"sha256": "KlqR6Br67AXzIcRZRq+9YljKU1JFTQWfKCaguZBVPP0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+hH2uXbfcozmY8vu2SOZuvDmk6nPy2K0vpmjZfk4jBJEumAur9wXaGT1pihc7GFdiL4Ib+OWEp9k0AKNqy1EDA"}}, "unsigned": {"age_ts": 1570043729411}}+KQQay $1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3571}{"auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "prev_events": [["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "type": "m.room.power_levels", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"users": {"@anon-20191002_181700-683:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043728447IkYro:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043728703, "hashes": {"sha256": "wOCt3qpsWV3Agt/x08/HiEBI4VYgbXWL3q7rjaltmNg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L5dpefLnxR/ezA5GKrQhZ2kg76C54EbU/Zfa9KvTdOPkCT8iXINtI8ekJH1erTzSGMjUH4JUaDyBsWtmrJA8Cg"}}, "unsigned": {"age_ts": 1570043728703}} <4,|t l d \ T LDeeQ$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800 DeeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800 ɁeeQ$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800reeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800 /eeQ$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800eeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800+eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800 /eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800weeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800'eeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0!nhbUIcIbhuXkRqfeDa:localhost:8800 TeeQ$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800 HeeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800 eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800  P3Q M $88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3576}{"event_id": "$88:localhost:42455", "auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "RUQFM6a8tPgzGDFnW3Rq0l6c4DNOYbp8xazNWDVgvD4"}], ["$1570043729448XmFHA:localhost:8800", {"sha256": "KlqR6Br67AXzIcRZRq+9YljKU1JFTQWfKCaguZBVPP0"}], ["$1570043728447IkYro:localhost:8800", {"sha256": "wOCt3qpsWV3Agt/x08/HiEBI4VYgbXWL3q7rjaltmNg"}], ["$87:localhost:42455", {"sha256": "ac0OIsZp2OuUInyZ9i7TwoP09tcC/R25YqZFOcVLLBo"}]], "content": {"body": "Denied"}, "origin_server_ts": 1570043734037, "prev_events": [["$87:localhost:42455", {}]], "type": "m.room.message", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "origin": "localhost:42455", "depth": 7, "hashes": {"sha256": "+as0oeJIiF+V9ux0b/7enibSLiQ3Vy778c42gPgfwnc"}, "sender": "@__ANON__-56:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "qPx6jtwP5xoz5son6C33x6ox9suJyyE4e3Egh0Y+JUNJnEWH9QschCO7Ff0zDrWdiQ/e6mOY2phKxXFPQHO3Aw"}}, "unsigned": {}}MOQQa= $1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3575}{"auth_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}], ["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "prev_events": [["$87:localhost:42455", {"sha256": "p7JnTrjMQu2OAIDMYbicmmgr/MAVWXWbyuqyOe2v3jE"}]], "type": "m.room.power_levels", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"users": {"@anon-20191002_181700-683:localhost:8800": 100}, "events": {"m.room.message": 50, "m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100}, "kick": 50, "events_default": 0, "state_default": 50, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043733451EJhWh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043733241, "hashes": {"sha256": "V7hHl4Ci1nWctn8sXsR9uL4RtFADdcy2fiFHeKx8WRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ECbZZni4ZqAAtd96umddhFdFyzgerT9ZB8wcDTK13xQlyU7ATohdl5+RLXJ2jEk4m1u5QEG1cH3/hEKfSE8yBg"}}, "unsigned": {"age_ts": 1570043733241, "replaces_state": "$1570043728447IkYro:localhost:8800"}}RN3Q3 $87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3574}{"sender": "@__ANON__-56:localhost:42455", "hashes": {"sha256": "ac0OIsZp2OuUInyZ9i7TwoP09tcC/R25YqZFOcVLLBo"}, "depth": 6, "state_key": "@__ANON__-56:localhost:42455", "origin": "localhost:42455", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "type": "m.room.member", "prev_events": [["$1570043730449XMaNb:localhost:8800", {"sha256": "7eKZ/BxFKTBQFu1rIdMmZv9k8hK/qzpmk+HeJTIEXz0"}]], "origin_server_ts": 1570043732122, "content": {"membership": "join"}, "auth_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}], ["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043729448XmFHA:localhost:8800", {"sha256": "vc/JzdEVR1JYKEgwVh886wgx/shm9BlJbE0MdenX98w"}]], "event_id": "$87:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "s7VRtHooJkPUJ0BXxEodGOXso9Ng1F+v4/ULWkzIbbsIT8e9Vj5gFTbrf4jURIJr9jTbsKdXHFRupjTH8w9cAA"}}, "unsigned": {}} %Dj # I o  ( l 4Z9_6k~WeeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800~VeeQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800jUQQQ$1570043750466Tmiqu:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jTQQQ$1570043750466Tmiqu:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jSQQQ$1570043750466Tmiqu:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800[R3QQ$94:localhost:42455$1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800[Q3QQ$94:localhost:42455$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800[P3QQ$94:localhost:42455$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jOQQQ$1570043748464QpNXV:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jNQQQ$1570043748464QpNXV:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jMQQQ$1570043748464QpNXV:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jLQQQ$1570043748463euAqZ:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jKQQQ$1570043748463euAqZ:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jJQQQ$1570043748463euAqZ:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jIQQQ$1570043747462YuUEF:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jHQQQ$1570043747462YuUEF:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jGQQQ$1570043746461eQhrq:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jFQQQ$1570043741458PZvre:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800jEQQQ$1570043741458PZvre:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800jDQQQ$1570043741458PZvre:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800[C3QQ$90:localhost:42455$1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800[B3QQ$90:localhost:42455$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800[A3QQ$90:localhost:42455$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j@QQQ$1570043739456qeuuS:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j?QQQ$1570043739456qeuuS:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j>QQQ$1570043739456qeuuS:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j=QQQ$1570043738455KNDHf:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j<QQQ$1570043738455KNDHf:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j;QQQ$1570043738455KNDHf:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j:QQQ$1570043737454adOjg:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j9QQQ$1570043737454adOjg:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j8QQQ$1570043736453VtbeL:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j7QQQ$1570043733451EJhWh:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j6QQQ$1570043733451EJhWh:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j5QQQ$1570043733451EJhWh:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800[43QQ$87:localhost:42455$1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800[33QQ$87:localhost:42455$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 &UBC g , z # ^ D3"iea]YU%eeQ$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800$eeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800#eeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800"eeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800!eeQ$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800_Q9Q$1570043754467mNKfq:localhost:8800$98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800T9;Q$98_m2:localhost:42455$97_sf2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800_9QQ$98_m2:localhost:42455$1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800U;;Q$97_sf2:localhost:42455$96_sf1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800T;9Q$96_sf1:localhost:42455$95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800P93Q$95_m1:localhost:42455$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800\Q3Q$1570043750466Tmiqu:localhost:8800$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800\3QQ$94:localhost:42455$1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043748464QpNXV:localhost:8800$1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043748463euAqZ:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043747462YuUEF:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043746461eQhrq:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800_Q9Q$1570043744459BIUYb:localhost:8800$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043744459BIUYb:localhost:8800$1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800T ;9Q$93_sf2:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800T ;9Q$92_sf1:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800P 93Q$91_m1:localhost:42455$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800\ Q3Q$1570043741458PZvre:localhost:8800$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800\ 3QQ$90:localhost:42455$1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043739456qeuuS:localhost:8800$1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043738455KNDHf:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043737454adOjg:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043736453VtbeL:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800\3QQ$89:localhost:42455$1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800M33Q$89:localhost:42455$88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800M33Q$88:localhost:42455$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800\Q3Q$1570043733451EJhWh:localhost:8800$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800\3QQ$87:localhost:42455$1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 $Vr9 V  r 9 7 U  q 8 T p8e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUsha2568e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8ssha256 8e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQksha2568e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIssha256m8e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4sha256 78e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wsha2568e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIsha256J8e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUsha256 8e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcsssha2568e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yosha256%8e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48sha2568e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Ysha256D8e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEsha2568e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewsha2568e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gsha2568e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYsha2568e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCssha2568e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFAsha256 38e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAsha2568e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQsha256,8e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUksha256\8e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuksha2568e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwsha256@8e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mkssha256X8e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8sha256 27e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcsha256|8e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIsha256 88e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0sha256 M8e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98sha256 z8e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wsha256 +8e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAsha256 ]8e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEsha256k8e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8sha2568e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEsha2568e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIsha256 7e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUsha256  SQQa) $1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3579}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}]], "prev_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}]], "type": "m.room.member", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-684", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-684:localhost:8800", "event_id": "$1570043736453VtbeL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043736949, "hashes": {"sha256": "LkKurelcIwT80bhN2tOjadi2hE60iwxhMoglcuqp0h4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e9Jn5BdFPaC8zNMEmITPCDBCfw4TS2uPG6hwv4EF+3aC4I1AEKzfe2iOPZASXki136bTHEoSnLivCHSnJY4BAw"}}, "unsigned": {"age_ts": 1570043736949}}RQQaC $1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3578}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-684:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043736452Igyim:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043736224, "hashes": {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j+xHtkqOqQNe5qzDOQd7LnknZ8Xml9PTDonyfhf3wiw35Sj3ki/0KnF7HAtLr6PU+j4cnzLkwk2tFPyZGO3+Dg"}}, "unsigned": {"age_ts": 1570043736224}}?Q3Qc= $89:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800{"outlier": false, "stream_ordering": 3577}{"depth": 8, "origin": "localhost:42455", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "type": "m.room.other_message_type", "sender": "@__ANON__-56:localhost:42455", "hashes": {"sha256": "jXfYkEp8JGLe95rGPIALMCbqkDAJn+BVE8KUU5FaZfs"}, "content": {"body": "Allowed"}, "auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "RUQFM6a8tPgzGDFnW3Rq0l6c4DNOYbp8xazNWDVgvD4"}], ["$1570043729448XmFHA:localhost:8800", {"sha256": "KlqR6Br67AXzIcRZRq+9YljKU1JFTQWfKCaguZBVPP0"}], ["$1570043728447IkYro:localhost:8800", {"sha256": "wOCt3qpsWV3Agt/x08/HiEBI4VYgbXWL3q7rjaltmNg"}], ["$87:localhost:42455", {"sha256": "ac0OIsZp2OuUInyZ9i7TwoP09tcC/R25YqZFOcVLLBo"}]], "event_id": "$89:localhost:42455", "prev_events": [["$88:localhost:42455", {}], ["$1570043733451EJhWh:localhost:8800", {}]], "origin_server_ts": 1570043734710, "signatures": {"localhost:42455": {"ed25519:1": "IQdnCRkp+lZRRqH0KsDVzX4+JpCRhxJGsO5W4gD4NUr473a8XBtVnq+YkF8fvyWxFeNLf5NBozsplnjNM6V7Cg"}}, "unsigned": {}}  +_QQay $1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3591}{"auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "type": "m.room.power_levels", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"users": {"@anon-20191002_181700-685:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043747462YuUEF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043747412, "hashes": {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fkCo4J+s44EZOWQoxUYMotOU+LpDrO0Tc3SZP9gLY6SY+39bOrKshWg684rtfEmHsUFe9PxCW+wpvP8ziLMrBQ"}}, "unsigned": {"age_ts": 1570043747412}}^QQa) $1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3590}{"auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}]], "prev_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}]], "type": "m.room.member", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-685", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-685:localhost:8800", "event_id": "$1570043746461eQhrq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043746600, "hashes": {"sha256": "YIeEzbo0XV/5xjXjtFjl47P4NnwP0exJk4DkpnKE7lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V8gTtn/amJu6PNXtzFYSB+1If9Xa7/2NKzACnrrWE9zjM1YsCUgd1eGlyYA95ga5UNkD6o+KpAuXpkoENZ6RAQ"}}, "unsigned": {"age_ts": 1570043746600}}]QQaC $1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3589}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-685:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043745460sJOiY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043745802, "hashes": {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RKX2PKKrE7OEKmL/QNz1iukdi3o20lRHVbNrmhMMF7k3P8qB855Mf6hdGTc8xNjvjab5eG8L11gLhaZosObkCw"}}, "unsigned": {"age_ts": 1570043745802}}  fxVQQa $1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3582}{"auth_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}], ["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "prev_events": [["$1570043738455KNDHf:localhost:8800", {"sha256": "ETMr/x+xU69NX13RwYe1mo62S7P9Bu4bj3WH4aiEVLI"}]], "type": "m.room.history_visibility", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043739456qeuuS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043739378, "hashes": {"sha256": "3ku2KFWtunNJh15tSUkuYYkm+SfATrPIbgEA693ZsY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R8xudxK+53MeutqSD3C0lU9gjGMP/6OgtERuOnSh966ZEf4Ou0xcUr/WcVDrz6Oc7J40sXvLl9VCROiEhZMkBA"}}, "unsigned": {"age_ts": 1570043739378}}gUQQaq $1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3581}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}]], "prev_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}]], "type": "m.room.join_rules", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043738455KNDHf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043738603, "hashes": {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HOZZyXCHYuCiuBlNmg0axPwdofUdIhTSOn5+Rej+/+MTkuHLtC7qjevxL8yv7jRvx2anxyxqD2O7gS0kcrJsCA"}}, "unsigned": {"age_ts": 1570043738603}}+TQQay $1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3580}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "prev_events": [["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "type": "m.room.power_levels", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"users": {"@anon-20191002_181700-684:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043737454adOjg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043737904, "hashes": {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a5EGs/oU8WnJzW2UjxQVBbp7K029IJ3YiBdtAyEz52erPBTNSvz+WtFrZz2Oh6vBavzoVcDqeFg2y72H0ZvjDw"}}, "unsigned": {"age_ts": 1570043737904}} '8W 7 n G ) ` UtT)dF}YQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800] Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800f Q'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455Y Q' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_ Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800] Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455YQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800]Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455YQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043750466Tmiqu:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455uQ'EQ !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$1570043749465PrxQH:localhost:8800e~Q? Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility$1570043748464QpNXV:localhost:8800]}Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800_|Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800{Q']Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800$1570043746461eQhrq:localhost:8800YzQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800]yQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800fxQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455YwQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800_vQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800]uQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800ftQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455YsQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800_rQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800]qQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800fpQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455YoQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800_nQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800_mQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043741458PZvre:localhost:8800flQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455ukQ'EQ !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$1570043740457GtEWQ:localhost:8800ejQ? Q !JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility$1570043739456qeuuS:localhost:8800]iQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800 JoD s J e:i>k 8cT) w L ! g<@mB H qF u':>e':>e*Q!RSLvuCuAqKQQrKCxNq:localhost:8800  *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! !*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # #*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " "*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RmdhCjvouVLmyIHjaM:localhost:8800EE*Q!RmdhCjvouVLmyIHjaM:localhost:8800DD*Q!RmdhCjvouVLmyIHjaM:localhost:8800CC*Q!RmdhCjvouVLmyIHjaM:localhost:8800BB*Q!RmdhCjvouVLmyIHjaM:localhost:8800AA*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!RmdhCjvouVLmyIHjaM:localhost:8800FF*Q!RPfffkmSEbWggEjnoI:localhost:8800%%*Q!RPfffkmSEbWggEjnoI:localhost:8800""*Q!RPfffkmSEbWggEjnoI:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!RmwbYvIIQyPlHlClty:localhost:8800yy*Q!RmwbYvIIQyPlHlClty:localhost:8800xx*Q!RmwbYvIIQyPlHlClty:localhost:8800ww*Q!RmdhCjvouVLmyIHjaM:localhost:8800II*Q!RmdhCjvouVLmyIHjaM:localhost:8800HH*Q!RmdhCjvouVLmyIHjaM:localhost:8800GG*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!RPfffkmSEbWggEjnoI:localhost:8800--*Q!RPfffkmSEbWggEjnoI:localhost:8800++*Q!RPfffkmSEbWggEjnoI:localhost:8800((*Q!SBEprlZiuliFNSfNmz:localhost:8800qq*Q!SBEprlZiuliFNSfNmz:localhost:8800pp*Q!SBEprlZiuliFNSfNmz:localhost:8800oo*Q!SBEprlZiuliFNSfNmz:localhost:8800nn*Q!SBEprlZiuliFNSfNmz:localhost:8800mm*Q!RmwbYvIIQyPlHlClty:localhost:8800||*Q!RmwbYvIIQyPlHlClty:localhost:8800{{*Q!RmwbYvIIQyPlHlClty:localhost:8800zz*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!SBEprlZiuliFNSfNmz:localhost:8800rr*Q!SBEprlZiuliFNSfNmz:localhost:8800ss*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!QyLUggxrTnULUAOseq:localhost:8800*Q!SBEprlZiuliFNSfNmz:localhost:8800tt*Q!RmdhCjvouVLmyIHjaM:localhost:8800>>*Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( (*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' '*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & &*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % %*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ $*Q!RmdhCjvouVLmyIHjaM:localhost:8800@@*Q!RmdhCjvouVLmyIHjaM:localhost:8800??   Y9QcK $91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "stream_ordering": 3585}{"prev_events": [["$90:localhost:42455", {}]], "origin_server_ts": 1570043742318, "content": {"body": "M1"}, "auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}], ["$90:localhost:42455", {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}]], "event_id": "$91_m1:localhost:42455", "sender": "@__ANON__-57:localhost:42455", "hashes": {"sha256": "bhPfYc+pZfX6W5nz1hmYEuSN9/+YPkubyWBhKta6k1U"}, "depth": 7, "origin": "localhost:42455", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "type": "m.room.message", "signatures": {"localhost:42455": {"ed25519:1": "BpPTzYT63XNI6l3VTuOGxS8DXDbbCaNVul2UH0+l6YXgXItzjaGiOEUyJ/FrQkaEKGvLhLXcUlchGLcWHyNeAw"}}, "unsigned": {}}FXQQa/ $1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3584}{"auth_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}], ["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "prev_events": [["$90:localhost:42455", {"sha256": "ANWhTVU7EbbDQ81k00KtFa9E6+cUGci0VJtAN6W3sW4"}]], "type": "m.room.power_levels", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 0, "users_default": 0, "users": {"@anon-20191002_181700-684:localhost:8800": 100}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.name": 50, "m.room.avatar": 50, "test.sf": 50, "m.room.canonical_alias": 50}}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043741458PZvre:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043741554, "hashes": {"sha256": "XTXRf+PRMtKaSmEow70+q7jGXUGCMNpzTNuXovKL/wQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAnWVSxysQ90MpyRF+di40Ncyyl/ksBFAXHahD8QCJ1SRRwwJ6t2SrLZlMeC3hKFOfjyPONV0dL8xDNFIISTDw"}}, "unsigned": {"age_ts": 1570043741554, "replaces_state": "$1570043737454adOjg:localhost:8800"}}RW3Q3 $90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3583}{"origin_server_ts": 1570043740689, "prev_events": [["$1570043739456qeuuS:localhost:8800", {"sha256": "VaKP9Fe6V5sm6DfGaindDqx0aOEgqUjvltyAfRna8H0"}]], "event_id": "$90:localhost:42455", "auth_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}], ["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "ETMr/x+xU69NX13RwYe1mo62S7P9Bu4bj3WH4aiEVLI"}]], "content": {"membership": "join"}, "hashes": {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}, "sender": "@__ANON__-57:localhost:42455", "type": "m.room.member", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-57:localhost:42455", "depth": 6, "signatures": {"localhost:42455": {"ed25519:1": "gWoT6CnHsLjPB3gjP97mwy+EZkdMQ74niW5r0xXO9FqbwwAX8OP1gH78XlA6YuBDUQXzaI5njwxAK7bYGjExDA"}}, "unsigned": {}} Y^ gx')1570040430185localhost:8829mH2{"pdus":{"$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg":{}}}5w')"1570040430184localhost:8829mCr{"pdus":{}}Qv'+X1570043753688localhost:42455mv{"pdus":{"$98_m2:localhost:42455":{}}}Ru'+Z1570043753098localhost:42455mtK{"pdus":{"$97_sf2:localhost:42455":{}}}Rt'+Z1570043752357localhost:42455mq{"pdus":{"$96_sf1:localhost:42455":{}}}Qs'+X1570043751669localhost:42455mnD{"pdus":{"$95_m1:localhost:42455":{}}}Rr'+Z1570043743706localhost:42455mO{"pdus":{"$93_sf2:localhost:42455":{}}}Rq'+Z1570043743024localhost:42455mM:{"pdus":{"$92_sf1:localhost:42455":{}}}Qp'+X1570043742319localhost:42455mI{"pdus":{"$91_m1:localhost:42455":{}}}  H\QQ $1570043744459BIUYb:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "txn_id": "617", "stream_ordering": 3588}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}], ["$1570043741458PZvre:localhost:8800", {"sha256": "0lwFCe1HVsaJ+XLnj7Z+H6p/mzmKyvdmEPpVjiaBoZU"}]], "prev_events": [["$1570043741458PZvre:localhost:8800", {"sha256": "0lwFCe1HVsaJ+XLnj7Z+H6p/mzmKyvdmEPpVjiaBoZU"}], ["$91_m1:localhost:42455", {"sha256": "T9lZsMZs8/nvonDwDFSmK9kCFH9iAd58E5gT7SfeLME"}]], "type": "m.room.message", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"msgtype": "m.text", "body": "m3"}, "depth": 8, "prev_state": [], "event_id": "$1570043744459BIUYb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043744408, "hashes": {"sha256": "09iZwlIkNqPxL5peYlyNaChLiWDxy1pM+SbqS0tnvF0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YR9oI2CxM+EQsw8b1jFkKGBCzs0hiae/DMb2Y1Sap+T66qAo9QerHca8h447+IqTx6CYdWtVsKIco2J18Qy1Cg"}}, "unsigned": {"age_ts": 1570043744408}}[;Q G $93_sf2:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3587}{"sender": "@__ANON__-57:localhost:42455", "hashes": {"sha256": "OUND8lGt9oi+5+qZ1M4E80uaHlirCiw5vCZGF/QRGwc"}, "origin": "localhost:42455", "depth": 9, "type": "test.sf", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "prev_events": [["$91_m1:localhost:42455", {}]], "origin_server_ts": 1570043743703, "content": {"body": "SF2"}, "event_id": "$93_sf2:localhost:42455", "auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}], ["$90:localhost:42455", {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}]], "signatures": {"localhost:42455": {"ed25519:1": "P5TOVDRGIl/yzX9fvGNXZA2AqvBn2tm2o/HxbJ9rHQINZFUjhJ/sKO9Nt4jYUr7kMySeVrEwd4d+sfrb3mPDBQ"}}, "unsigned": {}}Z;Q G $92_sf1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3586}{"sender": "@__ANON__-57:localhost:42455", "hashes": {"sha256": "HOGFSTineRZODPSP0hiGaWLJXfN6b0KdDJJPLwKsMHk"}, "origin": "localhost:42455", "depth": 8, "type": "test.sf", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "prev_events": [["$91_m1:localhost:42455", {}]], "origin_server_ts": 1570043743022, "content": {"body": "SF1"}, "event_id": "$92_sf1:localhost:42455", "auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}], ["$90:localhost:42455", {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}]], "signatures": {"localhost:42455": {"ed25519:1": "96GvTE6J5nA9m/ZoO2Gz49H4c9pJDSH6XjQGaoO6KgG/W01fuvDbxED8720riI3PGFZuCYW9HPavMdyu01V1Dw"}}, "unsigned": {}} f(  d f h +5>HN e'Q  ]$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8m.room.create!ABHbfUdkHCJksMsaUt:localhost:8800mm+@anon-20191002_181700-698:localhost:8800!e)Q ] $9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8sm.room.message!DntdfAPfCfgdOoRMdl:localhost:8800m$m(@anon-20191002_181700-691:localhost:8800!e)Q ]$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMsm.room.message!DntdfAPfCfgdOoRMdl:localhost:8800mٸmټ@anon-20191002_181700-691:localhost:8800,e?Q ]$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4m.room.history_visibility!DntdfAPfCfgdOoRMdl:localhost:8800mmր@anon-20191002_181700-691:localhost:8800$e/Q ]$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgm.room.join_rules!DntdfAPfCfgdOoRMdl:localhost:8800mm@anon-20191002_181700-691:localhost:8800&e3Q ]$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gm.room.power_levels!DntdfAPfCfgdOoRMdl:localhost:8800m^m@anon-20191002_181700-691:localhost:8800 e'Q ]$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUm.room.member!DntdfAPfCfgdOoRMdl:localhost:8800mHm@anon-20191002_181700-691:localhost:8800 e'Q  ]$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAm.room.create!DntdfAPfCfgdOoRMdl:localhost:8800mPm*@anon-20191002_181700-691:localhost:8800!e)Q ] $cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgcm.room.message!THHfVSOSWiBQTHRAnJ:localhost:8800mmK@anon-20191002_181700-690:localhost:8800,e?Q ]$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUm.room.history_visibility!THHfVSOSWiBQTHRAnJ:localhost:8800mm欃@anon-20191002_181700-690:localhost:8800$e/Q ]$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUm.room.join_rules!THHfVSOSWiBQTHRAnJ:localhost:8800mEm桸@anon-20191002_181700-690:localhost:8800&e3Q ]$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQm.room.power_levels!THHfVSOSWiBQTHRAnJ:localhost:8800m m朥@anon-20191002_181700-690:localhost:8800 e'Q ]$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEm.room.member!THHfVSOSWiBQTHRAnJ:localhost:8800m}m@anon-20191002_181700-690:localhost:8800 e'Q  ]$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUm.room.create!THHfVSOSWiBQTHRAnJ:localhost:8800mm^@anon-20191002_181700-690:localhost:8800Q)Q ] $1570043754467mNKfq:localhost:8800m.room.message!KetCYFxrTxawNOGnOf:localhost:8800 mxVmxZ@anon-20191002_181700-685:localhost:88009)Q E $98_m2:localhost:42455m.room.message!KetCYFxrTxawNOGnOf:localhost:8800 mtmul@__ANON__-58:localhost:42455y;Q E $97_sf2:localhost:42455test.sf!KetCYFxrTxawNOGnOf:localhost:8800 mrmr@__ANON__-58:localhost:42455y ;Q E$96_sf1:localhost:42455test.sf!KetCYFxrTxawNOGnOf:localhost:8800momp@__ANON__-58:localhost:42455 9)Q E$95_m1:localhost:42455m.room.message!KetCYFxrTxawNOGnOf:localhost:8800mlmma@__ANON__-58:localhost:42455 Q3Q ]$1570043750466Tmiqu:localhost:8800m.room.power_levels!KetCYFxrTxawNOGnOf:localhost:8800mj@mj@anon-20191002_181700-685:localhost:8800{ 3'Q E$94:localhost:42455m.room.member!KetCYFxrTxawNOGnOf:localhost:8800mf>mf@__ANON__-58:localhost:42455" Q?Q ]$1570043748464QpNXV:localhost:8800m.room.history_visibility!KetCYFxrTxawNOGnOf:localhost:8800mamc}@anon-20191002_181700-685:localhost:8800Q/Q ]$1570043748463euAqZ:localhost:8800m.room.join_rules!KetCYFxrTxawNOGnOf:localhost:8800m^m_u@anon-20191002_181700-685:localhost:8800Q3Q ]$1570043747462YuUEF:localhost:8800m.room.power_levels!KetCYFxrTxawNOGnOf:localhost:8800m\Tm\@anon-20191002_181700-685:localhost:8800Q'Q ]$1570043746461eQhrq:localhost:8800m.room.member!KetCYFxrTxawNOGnOf:localhost:8800mY(mY@anon-20191002_181700-685:localhost:8800  Y j  ? <qyU SX!IT7aWeQ' $5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800m.room.createmVeQ? $QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibilityeUeQ/ $KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rulesgTeQ3 $d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels SeQ']$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800joinaReQ' $Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800m.room.createmQeQ? $wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibilityePeQ/ $XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rulesgOeQ3 $lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels NeQ']$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800joinaMeQ' $y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create]LQQ3 $1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levelsWFQQ' $1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.create]EQQ3 $1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levelshD3Q'E$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455joincCQQ? $1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility[BQQ/ $1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules@QQ']$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800joinW?QQ' $1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.create[>QQ/ $1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rulesh=3Q'E$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455joinW<QQ' $1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.createc:QQ? $1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility7QQ']$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800joine5eQ/ $yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules 4eQ']$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800joinhK3Q'E$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455joincJQQ? $1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility[IQQ/ $1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules];QQ3 $1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levelsGQQ']$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800join #3o x  < E m | :IwzGymOeQ? $RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y!itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibilityeNeQ/ $Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rulesgMeQ3 $4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels LeQ']$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800aKeQ' $yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800m.room.creategJeQ3 $OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs!GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_accessmIeQ? $Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibilityeHeQ/ $2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rulesgGeQ3 $Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels FeQ']$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800aEeQ' $AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.create DeQ']$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800mCeQ? $OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800m.room.history_visibilityeBeQ/ $YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800m.room.join_rulesgAeQ3 $lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800m.room.power_levels @eQ']$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800a?eQ' $DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800m.room.createm>eQ? $xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibilitye=eQ/ $-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rulesg<eQ3 $9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels ;eQ']$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800a:eQ' $5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800m.room.createm9eQ? $QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibilitye8eQ/ $KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rulesg7eQ3 $d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels 6eQ']$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800a5eQ' $Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800m.room.createm4eQ? $wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibilitye3eQ/ $XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rulesg2eQ3 $lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels 1eQ']$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800a0eQ' $y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create]/QQ3 $1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levelsd.3Q'E$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455c-QQ? $1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility "<i ] f  $ Lru 03U^adoQ' e0!itfjLXhEaORJLkbfVS:localhost:8800m.room.create$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsjnQ3 e/!GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_access$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_PisjspmQ? e.!GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibility$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIohlQ/ e-!GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rules$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0AjkQ3 e,!GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 jQ']e+!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIdiQ' e*!GsjDgpaxdwYfnefiWO:localhost:8800m.room.create$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI hQ']e)!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8pgQ? e(!jomrpmwwQQtghscizn:localhost:8800m.room.history_visibility$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIhfQ/ e'!jomrpmwwQQtghscizn:localhost:8800m.room.join_rules$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUjeQ3 e&!jomrpmwwQQtghscizn:localhost:8800m.room.power_levels$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A dQ']e%!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyodcQ' e$!jomrpmwwQQtghscizn:localhost:8800m.room.create$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYpbQ? e"!ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibility$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5khaQ/ e!!ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rules$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMj`Q3 e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg _Q']e!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucd^Q' e!ABHbfUdkHCJksMsaUt:localhost:8800m.room.create$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8p]Q? e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibility$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4h\Q/ e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rules$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgj[Q3 e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g ZQ']e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUdYQ' e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.create$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAApXQ? e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibility$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUhWQ/ e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rules$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUjVQ3 e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ UQ']e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEdTQ' e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUSQ3 QQ!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800$1570043750466Tmiqu:localhost:8800RQ3 QQ !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043750466Tmiqu:localhost:8800$1570043747462YuUEF:localhost:8800gQQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455fPQ? Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility$1570043748464QpNXV:localhost:8800^OQ/ Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800`NQ3 Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800  Rb3Q3 $94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3594}{"content": {"membership": "join"}, "event_id": "$94:localhost:42455", "auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "3RDEdo2+T7yfvffUggpAt4C2YD/ofM6Hu9gpKXMlwJg"}]], "prev_events": [["$1570043748464QpNXV:localhost:8800", {"sha256": "uwF9ZPPoXohTwJsX2csFEn5wpJ1a6Ij7vueZIdtyLwA"}]], "origin_server_ts": 1570043749950, "origin": "localhost:42455", "state_key": "@__ANON__-58:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}, "signatures": {"localhost:42455": {"ed25519:1": "djDLznTPG6H1vvwPX+eXqQwfw9Xrs8L1SDs8FsSQ8IZuPdslYgkBpUoEQHsosIbUooL7VvdxqoVb31IPWmqcCw"}}, "unsigned": {}}xaQQa $1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3593}{"auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$1570043748463euAqZ:localhost:8800", {"sha256": "3RDEdo2+T7yfvffUggpAt4C2YD/ofM6Hu9gpKXMlwJg"}]], "type": "m.room.history_visibility", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043748464QpNXV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043748770, "hashes": {"sha256": "k127XuJXLNlyyYX9eazb0RQ1+zAP+uzlwpNIChHntDA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G0aifGui6R0kHyQuczTzwanM915zlfeulGznBdcQatzrbZpbV4A6a5if9+rV7RyXK/uWr8cuRlLbm9jh+YaGDg"}}, "unsigned": {"age_ts": 1570043748770}}g`QQaq $1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3592}{"auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}]], "prev_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}]], "type": "m.room.join_rules", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043748463euAqZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043748095, "hashes": {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SsU9fr2LBHdZr9zC07/E9tg/kv9hwf2pUUOoT8FcVk7jX8YnhXNeDVDW41wurT3/97fRrEWgNRb58Y39Ic+iAA"}}, "unsigned": {"age_ts": 1570043748095}} _^+vYB'rOgJ3 c F / b /  y ^ +  u Z ' | Y B R5iFyV9"q2|e& o03  m.room.power_levels b2'E m.room.member@__ANON__-56:localhost:42455 d/  m.room.join_rules e'  m.room.create c3  m.room.power_levels ^2'E m.room.member@__ANON__-56:localhost:42455 `/  m.room.join_rules a'  m.room.create _3  m.room.power_levels ]2'E m.room.member@__ANON__-56:localhost:42455 \2'E m.room.member@__ANON__-56:localhost:42455 ["?  m.room.history_visibility Z>'] m.room.member@anon-20191002_181700-708:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-706:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-704:localhost:8800 '  m.room.create 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-702:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-701:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-700:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-698:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-691:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-690:localhost:8800 '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 2'E m.room.member@__ANON__-58:localhost:42455 "?  m.room.history_visibility ~/  m.room.join_rules }3  m.room.power_levels |>'] m.room.member@anon-20191002_181700-685:localhost:8800 {'  m.room.create z3  m.room.power_levels v2'E m.room.member@__ANON__-57:localhost:42455 x/  m.room.join_rules y'  m.room.create w3  m.room.power_levels r2'E m.room.member@__ANON__-57:localhost:42455 t/  m.room.join_rules u'  m.room.create s3  m.room.power_levels n2'E m.room.member@__ANON__-57:localhost:42455 p/  m.room.join_rules q'  m.room.create o3  m.room.power_levels m2'E m.room.member@__ANON__-57:localhost:42455 l2'E m.room.member@__ANON__-57:localhost:42455 k"?  m.room.history_visibility j/  m.room.join_rules i3  m.room.power_levels h>'] m.room.member@anon-20191002_181700-684:localhost:8800 g'  m.room.create f  6)e;Q G $96_sf1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3597}{"content": {"body": "SF1"}, "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "event_id": "$96_sf1:localhost:42455", "prev_events": [["$95_m1:localhost:42455", {}]], "origin_server_ts": 1570043752354, "depth": 8, "origin": "localhost:42455", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "type": "test.sf", "sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "nxQxuckgukaBXZFX1A82UteyYxePRFC1Qh3cHlpomvQ"}, "signatures": {"localhost:42455": {"ed25519:1": "6k2NfRm9dlelAflEAYF2JpIZX/JWbBYbgZ8JprNuz5JvajbGuIaJcn3phOCqy/z6gNUfZp/mhFMyLBgMw1QNCQ"}}, "unsigned": {}} d9QcK $95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "stream_ordering": 3596}{"sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "tfQDH8jNVXiLeK/QSfKjpKzkysi91cEPtuOS6/YF3Rc"}, "origin": "localhost:42455", "depth": 7, "type": "m.room.message", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "prev_events": [["$94:localhost:42455", {}]], "origin_server_ts": 1570043751668, "content": {"body": "M1"}, "event_id": "$95_m1:localhost:42455", "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "signatures": {"localhost:42455": {"ed25519:1": "yDYCYd+niLaf0TM6vGg0zqx/KWQKsKP8MBvfgj5XPpFaH0eEJ/kTTBBrGmODOxBB2BSUVTU3cwSPg4/L15UNBw"}}, "unsigned": {}}FcQQa/ $1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3595}{"auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$94:localhost:42455", {"sha256": "cyd/SeUk1hSsa3hljO2LIF95In4UcS+/z2/LwtPsmBs"}]], "type": "m.room.power_levels", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "test.sf": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100}, "users": {"@anon-20191002_181700-685:localhost:8800": 100}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043750466Tmiqu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043750976, "hashes": {"sha256": "5SRPKzKCg3M9LqvP041nlmjzWHDG4UhiBm99Pn/5jBQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WcyKpOi+lBj5pki/Td6HPduBozDesmziKsWCNAyJpHQLPeG3BsEd5Y2Km7y4JGXKJq3nkvODBv+OSW9ELcveBQ"}}, "unsigned": {"age_ts": 1570043750976, "replaces_state": "$1570043747462YuUEF:localhost:8800"}} <|t l< d \ T LDeeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800 xeeQ$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800eeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800eeQ$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800\eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU!mTlCLZQCmfDuQsJxxp:localhost:8800^eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800]eeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800LeeQ$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800eeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800'eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800QeeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800 .r16 1 , ~ ' y " t oje` [VQLT,Qe:!wCsDjKBtuUbrmZgjsB:localhost:8800$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djssT+Qe9!SpXEytywhTbAftyVBr:localhost:8800$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAT*Qe8!SpXEytywhTbAftyVBr:localhost:8800$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIT)Qe7!SpXEytywhTbAftyVBr:localhost:8800$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2VcT(Qe6!SpXEytywhTbAftyVBr:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4T'Qe5!SpXEytywhTbAftyVBr:localhost:8800$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwT&Qe4!itfjLXhEaORJLkbfVS:localhost:8800$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82YT%Qe3!itfjLXhEaORJLkbfVS:localhost:8800$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAT$Qe2!itfjLXhEaORJLkbfVS:localhost:8800$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3ZtljyoT#Qe1!itfjLXhEaORJLkbfVS:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcT"Qe0!itfjLXhEaORJLkbfVS:localhost:8800$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsT!Qe/!GsjDgpaxdwYfnefiWO:localhost:8800$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_PisjsT Qe.!GsjDgpaxdwYfnefiWO:localhost:8800$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIoTQe-!GsjDgpaxdwYfnefiWO:localhost:8800$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0ATQe,!GsjDgpaxdwYfnefiWO:localhost:8800$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4TQe+!GsjDgpaxdwYfnefiWO:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBITQe*!GsjDgpaxdwYfnefiWO:localhost:8800$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZITQe)!jomrpmwwQQtghscizn:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8TQe(!jomrpmwwQQtghscizn:localhost:8800$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vITQe'!jomrpmwwQQtghscizn:localhost:8800$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUTQe&!jomrpmwwQQtghscizn:localhost:8800$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3ATQe%!jomrpmwwQQtghscizn:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoTQe$!jomrpmwwQQtghscizn:localhost:8800$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYTQe#!ABHbfUdkHCJksMsaUt:localhost:8800$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPgTQe"!ABHbfUdkHCJksMsaUt:localhost:8800$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kTQe!!ABHbfUdkHCJksMsaUt:localhost:8800$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMTQe !ABHbfUdkHCJksMsaUt:localhost:8800$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgTQe!ABHbfUdkHCJksMsaUt:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucTQe!ABHbfUdkHCJksMsaUt:localhost:8800$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8TQe!DntdfAPfCfgdOoRMdl:localhost:8800$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8sTQe!DntdfAPfCfgdOoRMdl:localhost:8800$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMsT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4T Qe!DntdfAPfCfgdOoRMdl:localhost:8800$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582ZlgT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAATQe!THHfVSOSWiBQTHRAnJ:localhost:8800$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgcTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrETQe!THHfVSOSWiBQTHRAnJ:localhost:8800$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUJQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043754467mNKfq:localhost:8800>Q9!KetCYFxrTxawNOGnOf:localhost:8800$98_m2:localhost:42455>Q9 !KetCYFxrTxawNOGnOf:localhost:8800$95_m1:localhost:42455JQQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043750466Tmiqu:localhost:8800 ;f}\;uT3 m L + e D #  ~ ] <  v U 4  n M , fE$^=wV5lJ(~\:nL*^<pN, \ ')1570040430163localhost:8829; ')1570040430162localhost:8829: ')1570040430161localhost:88299 ')1570040430160localhost:88298 ')1570040430159localhost:88297 ')1570040430158localhost:88296 ')1570040430157localhost:88295 ')1570040430156localhost:88294 ')1570040430155localhost:88293 ')1570040430154localhost:88292 ')1570040430153localhost:88291 ')1570040430152localhost:88290 ')1570040430151localhost:8829/ ')1570040430150localhost:8829. ')1570040430149localhost:8829- ')1570040430148localhost:8829, ')1570040430147localhost:8829+ ')1570040430146localhost:8829* ')1570040430145localhost:8829) ')1570040430144localhost:8829( ')1570040430143localhost:8829' ')1570040430142localhost:8829& ')1570040430141localhost:8829% ')1570040430140localhost:8829$ ')1570040430139localhost:8829# ')1570040430138localhost:8829" ')1570040430137localhost:8829! ')1570040430136localhost:8829 ')1570040430135localhost:8829 ')1570040430134localhost:8829 ')1570040430133localhost:8829 ')1570040430132localhost:8829 ')1570040430131localhost:8829 ')1570040430130localhost:8829 ')1570040430129localhost:8829 ')1570040430128localhost:8829 ')1570040430127localhost:8829 ')1570040430126localhost:8829 ')1570040430125localhost:8829 ')1570040430124localhost:8829 ')1570040430123localhost:8829 ')1570040430122localhost:8829 ')1570040430121localhost:8829 ')1570040430120localhost:8829 ')1570040430119localhost:8829 ')1570040430118localhost:8829 ')1570040430117localhost:8829 ')1570040430116localhost:8829 ')1570040430115localhost:8829 ')1570040430114localhost:8829 ')1570040430113localhost:8829 ')1570040430112localhost:8829 ')1570040430111localhost:8829 ')1570040430110localhost:8829 ')1570040430109localhost:8829 ')1570040430108localhost:8829 ')1570040430107localhost:8829 ')1570040430106localhost:8829') 1570040430105localhost:8829 <|[:tS2 > k I '  } [ 9  m K )   ] ;  o M + _ ')1570040430185localhost:8829x ')1570040430184localhost:8829w!'+1570043753688localhost:42455v!'+1570043753098localhost:42455u!'+1570043752357localhost:42455t!'+1570043751669localhost:42455s!'+1570043743706localhost:42455r!'+1570043743024localhost:42455q!'+1570043742319localhost:42455p!'+1570043734714localhost:42455o!'+1570043734039localhost:42455n!'+1570043724409localhost:42455m!'+1570043724406localhost:42455l!'+1570043718021localhost:42455k!'+1570043716261localhost:42455j!'+1570043709303localhost:42455i!'+1570043708853localhost:42455h!'+1570043685815localhost:42455g!'+1570043667066localhost:42455f!'+1570043665475localhost:42455e!'+1570043658776localhost:42455d!'+1570043657562localhost:42455c!'+1570043650664localhost:42455b!'+1570043643608localhost:42455a!'+1570043642975localhost:42455`!'+1570043641630localhost:42455_!'+1570043628616localhost:42455^!'+1570043627779localhost:42455]!'+1570043626471localhost:42455\!'+1570043625647localhost:42455[!'+1570043618483localhost:42455Z!'+1570043617971localhost:42455Y!'+1570043609963localhost:42455X!'+1570043594716localhost:42455W!'+1570043561185localhost:42455V!'+1570043553629localhost:42455U!'+1570043552017localhost:42455T!'+1570043544090localhost:42455S!'+1570043431598localhost:42455R!'+1570043407452localhost:42455Q!'+1570043400274localhost:42455P ')1570040430183localhost:8829O ')1570040430182localhost:8829N ')1570040430181localhost:8829M ')1570040430180localhost:8829L ')1570040430179localhost:8829K ')1570040430178localhost:8829J ')1570040430177localhost:8829I ')1570040430176localhost:8829H ')1570040430175localhost:8829G ')1570040430174localhost:8829F ')1570040430173localhost:8829E ')1570040430172localhost:8829D ')1570040430171localhost:8829C ')1570040430170localhost:8829B ')1570040430169localhost:8829A ')1570040430168localhost:8829@ ')1570040430167localhost:8829? ')1570040430166localhost:8829> ')1570040430165localhost:8829= H 5HiieQa_$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3601}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-690:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043759560, "hashes": {"sha256": "OeBcTN+0+LVIGsxIjU2Qee2njq47neAZBqBSN2Zy0oE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m8C7GIaM9m8OFeSnCWxXt7QD4UlQPJRncxKNmeGyEDJoIDLOhcErwU9nYR4K0PW+Jg3MRRHtFENzN3d1Fr3tBQ"}}, "unsigned": {"age_ts": 1570043759560}}fhQQK $1570043754467mNKfq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "txn_id": "618", "stream_ordering": 3600}{"auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$98_m2:localhost:42455", {"sha256": "lNffKyvbmCQnb80qhe6Mm926oHxPyGnRX0hgKkHvL3Q"}]], "type": "m.room.message", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"body": "m3", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "event_id": "$1570043754467mNKfq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043754582, "hashes": {"sha256": "xjBQpX1gjtgXLe8tPU7t/DGnGT3/hBf9a+t32WAs0mk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qGDkwZ1Eyc7YS70vMkUxL2QTevQN3G9fYOd+L0Kr/KA63yEa/ursEE6DoBBsgwohIqLFx3o6Z6CwRwb7OGNCDQ"}}, "unsigned": {"age_ts": 1570043754582}}:g9Qc- $98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "stream_ordering": 3599}{"origin_server_ts": 1570043753686, "prev_events": [["$1570043750466Tmiqu:localhost:8800", {}], ["$97_sf2:localhost:42455", {}]], "event_id": "$98_m2:localhost:42455", "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "content": {"body": "M2"}, "hashes": {"sha256": "DOs3WPZcviMAMC/9/+bJRESw/svx5flwhB1PwzLuB8s"}, "sender": "@__ANON__-58:localhost:42455", "type": "m.room.message", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "origin": "localhost:42455", "depth": 10, "signatures": {"localhost:42455": {"ed25519:1": "vUjCjuwk5WL1ggk4QmM5pG8BEOdm1NgW3u+aa03NEUD6IBwDErsL5TXNJCjeP8VPFqNMXLsKqsvdWvGimrmBCQ"}}, "unsigned": {}}f;Q I $97_sf2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3598}{"origin": "localhost:42455", "depth": 9, "type": "test.sf", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "CfqUxZ+44PrnJjK7jxY9z6lpkqM+UeM0jWQ2F04xjlU"}, "content": {"body": "SF2"}, "event_id": "$97_sf2:localhost:42455", "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "prev_events": [["$96_sf1:localhost:42455", {}]], "origin_server_ts": 1570043753097, "signatures": {"localhost:42455": {"ed25519:1": "RLLG9SLvY5O2D13pwjqvoY/KCm8vSYVdYqP/70DVblLoNIReDNfBd/rlA25RvwZ2Rq7xnErh94pkr6m0pWEhCg"}}, "unsigned": {}} #h7B l  / W \CNSw @hc2Q' e !SpXEytywhTbAftyVBr:localhost:8800m.room.create$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwo1Q? e !itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibility$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Yg0Q/ e !itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rules$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAi/Q3 e !itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo .Q']e !itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcc-Q' e !itfjLXhEaORJLkbfVS:localhost:8800m.room.create$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsi,Q3 e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_access$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjso+Q? e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibility$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIog*Q/ e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rules$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Ai)Q3 e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 (Q']e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIc'Q' e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.create$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI &Q']e !jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8o%Q? e !jomrpmwwQQtghscizn:localhost:8800m.room.history_visibility$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIg$Q/ e !jomrpmwwQQtghscizn:localhost:8800m.room.join_rules$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUi#Q3 e !jomrpmwwQQtghscizn:localhost:8800m.room.power_levels$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A "Q']e !jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoc!Q' e !jomrpmwwQQtghscizn:localhost:8800m.room.create$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYo Q? e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibility$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kgQ/ e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rules$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMiQ3 e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg Q']e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uccQ' e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.create$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8oQ? e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibility$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4gQ/ e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rules$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582ZlgiQ3 e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g Q']e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUcQ' e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.create$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAoQ? e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibility$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUgQ/ e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rules$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUiQ3 e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ Q']e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEcQ' e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU]Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455 ->i { B " Q   m 4   P n5QinU5Qm4PxM@W@/98e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8sha256 8e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8csha256J8e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAsha256&8e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEsha256*I$63_redaction1:localhost:42455sha256 3$62:localhost:42455sha256 8e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYsha256H3$61:localhost:42455sha256 |%?$60_msg_e:localhost:42455sha256 G8e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMsha2568e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgsha2568e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4sha2568e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPksha256 8e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yosha2568e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Msha2568e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fwsha2568e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwsha2568e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbassha2568e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUsha2568e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0sha256 8e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pksha2568e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzssha2568e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyksha256Z8e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qsha2568e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knlssha2568e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8sha256 )7e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4sha25658e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUsha2568e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwsha256 8e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAsha2568e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0sha2568e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0sha256~8e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8sha2567e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwsha256X7e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEsha2568e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wsha256^8e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0sha256 8e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Nosha2568e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4osha2568e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqosha2568e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEsha256L8e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQsha256(8e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wsha256~8e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEsha2568e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2csha2568e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4sha256g8e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAsha2568e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Mssha25678e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIsha256%?$59_msg_d:localhost:42455sha256 F3$56:localhost:42455sha256 E8e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAsha256.8e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEsha2563$55:localhost:42455sha256 >8e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcsha256v3$54:localhost:42455sha256 2}8e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAsha2568e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUsha2568e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8sha2568e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0sha2568e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQsha256{8e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUsha256u J[$H l 9  m :  j 3 g 4  ` -a.Z'[(\)Q}Fn7[$4s==anon-20191002_181700-767anon-20191002_181700-7674r==anon-20191002_181700-766anon-20191002_181700-7664q==anon-20191002_181700-764anon-20191002_181700-7644p==anon-20191002_181700-763anon-20191002_181700-7634o==anon-20191002_181700-762anon-20191002_181700-7624n==anon-20191002_181700-761anon-20191002_181700-7614m==anon-20191002_181700-759anon-20191002_181700-7594l==anon-20191002_181700-760anon-20191002_181700-7604k==anon-20191002_181700-758anon-20191002_181700-7584j==anon-20191002_181700-757anon-20191002_181700-7574i==anon-20191002_181700-756anon-20191002_181700-7560h=5anon-20191002_181700-754FKOCVHIRTCIPSWJBHVGO4g==anon-20191002_181700-755anon-20191002_181700-7550f=5anon-20191002_181700-753QFPBNYJGLAPUUNVFDUHI0e=5anon-20191002_181700-752JYNGOISMLXVDWPDRVNCS4d==anon-20191002_181700-751anon-20191002_181700-7510c=5anon-20191002_181700-750BABSIRRXCUHNIFZHYFMB4b==anon-20191002_181700-749anon-20191002_181700-7490a=5anon-20191002_181700-748DNDDDSUFVLFEZFKOPXIQ4`==anon-20191002_181700-747anon-20191002_181700-7470_=5anon-20191002_181700-746QLDSIOXVCTASBPKYRNHI0^=5anon-20191002_181700-745ZTSVNXSUKXZYBFRNRFBJ0]=5anon-20191002_181700-744LIBVRACXDTFHBVRAEYIU0\=5anon-20191002_181700-743AZZDHJBDYOHRRTKDIRLP0[=5anon-20191002_181700-742WNMMSFHZOBUAIGUKXEDS0Z=5anon-20191002_181700-736VBKUVYHGDOTERLMJKIKN0Y=5anon-20191002_181700-735SIQEQJQUXKKSPCJKORZN0X=5anon-20191002_181700-734UXASHYODWFCQEAPTTQYS0W=5anon-20191002_181700-733RJATOAIYTIXPIBSXDZQD0V=5anon-20191002_181700-732EAGTVMRMBZANCBKYPGOB0U=5anon-20191002_181700-731ILOHRMOXOHIFUHDIJRAN0T=5anon-20191002_181700-730GSHKMOXHVOBRIYTDHTIE0S=5anon-20191002_181700-729JSLIPXUGQHACXICKVTRL0R=5anon-20191002_181700-728ARXGZCNJYIXAFEYVOMMS4Q==anon-20191002_181700-726anon-20191002_181700-726 0P=5anon-20191002_181700-727JKFBUCGCEHWWKASRVNAH0O=5anon-20191002_181700-725EFTSGHSHTSNXHOLBSBGX0N=5anon-20191002_181700-724FZLMWKXFLBFUARZOWWMC0M=5anon-20191002_181700-723GNPLVPMSZMJSVRMAEUVS0L=5anon-20191002_181700-722YXANMQQXNLDNMDAEAWBA0K=5anon-20191002_181700-721XOISPAUOSHVJCWENJUUS0J=5anon-20191002_181700-720XSMKELSYZZRIOKLQFSRH4I==anon-20191002_181700-718anon-20191002_181700-7180H=5anon-20191002_181700-719MILEDCIUNXUMWFEESQLV0G=5anon-20191002_181700-717HMVWDTIFKRGHQBGEGHRH0F=5anon-20191002_181700-716MJNQECZFMFOOTUTQHDEM0E=5anon-20191002_181700-715ILZFEUMGMNVXCRVUDWRW0D=5anon-20191002_181700-714ZONDVATSKCZDRCJEXKOT0C=5anon-20191002_181700-713KIPGYKTLFAKDJTVTRSGZ0B=5anon-20191002_181700-712SIQSTRPUPDLQEGIEGXYW0A=5anon-20191002_181700-711SPPIULUTUNSEUMJVVWAV4@==anon-20191002_181700-710anon-20191002_181700-7100?=5anon-20191002_181700-709AOIJORVKKVZNRNBFLQPH0>=5anon-20191002_181700-708QNSOXAXNRXGCIEWGQWKJ0==5anon-20191002_181700-707MSSKLANYGDDSESNBHGIX4<==anon-20191002_181700-706anon-20191002_181700-7060;=5anon-20191002_181700-705ONLGIFPYCWHPJBULBHUA0:=5anon-20191002_181700-704QBXFQKRQDWUAJPNVZOZD09=5anon-20191002_181700-703ZUIIYDVLWHSTSPIXWHFN08=5anon-20191002_181700-702YXIIECCUXAJQBCOFPUZN07=5anon-20191002_181700-701BLFZQHKYWUXKFZZINKLJ06=5anon-20191002_181700-700DOJGFUOIVLOGJFEZFHHT45==anon-20191002_181700-697anon-20191002_181700-69744==anon-20191002_181700-698anon-20191002_181700-69843==anon-20191002_181700-696anon-20191002_181700-69642==anon-20191002_181700-695anon-20191002_181700-69541==anon-20191002_181700-693anon-20191002_181700-69340==anon-20191002_181700-692anon-20191002_181700-6924/==anon-20191002_181700-691anon-20191002_181700-6914.==anon-20191002_181700-690anon-20191002_181700-6904-==anon-20191002_181700-689anon-20191002_181700-6894,==anon-20191002_181700-688anon-20191002_181700-6884+==anon-20191002_181700-687anon-20191002_181700-6874*==anon-20191002_181700-686anon-20191002_181700-686 <;WWs: V  r 9 W  s :  X t;Y u<Xtu<X8]!@anon-20191002_181700-8]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ8]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!@anon-20191002_181700-760:localhost:8800AAUYDDOUHU6[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMe8]!@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8]!@anon-20191002_181700-758:localhost:8800GUAXNWFTDG8]!@anon-20191002_181700-757:localhost:8800QRQFPUSZXE8]!@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ8]!@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG8]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN6[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXd8]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBW8]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA8]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNY8]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK6[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCc8]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8]!@anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8]!@anon-20191002_181700-724:localhost:8800LOLQJOGTTU8]!@anon-20191002_181700-723:localhost:8800JIVAFIIFHN8]!@anon-20191002_181700-722:localhost:8800IZTIXMADAY8]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAG8]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN6[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIb  4 h 6md]c@anon-20191002_181700-720:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAo127.0.0.1d]c@anon-20191002_181700-711:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQo127.0.0.1a[a@anon-20191002_181700-71:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCg127.0.0.1 j5ak6 a,X ,b- N  z E  s > Y j 5$ _ - 4]@anon-20191002_181700-779:localhost:8800m~4]@anon-20191002_181700-777:localhost:8800m꽺4]@anon-20191002_181700-750:localhost:8800mF4]@anon-20191002_181700-729:localhost:8800m觏4]@anon-20191002_181700-728:localhost:8800m4]@anon-20191002_181700-726:localhost:8800m4]@anon-20191002_181700-727:localhost:8800m膗4]@anon-20191002_181700-725:localhost:8800mmG4]@anon-20191002_181700-724:localhost:8800mk4]@anon-20191002_181700-723:localhost:8800mL4]@anon-20191002_181700-722:localhost:8800mJg4]@anon-20191002_181700-721:localhost:8800m+64]@anon-20191002_181700-720:localhost:8800m'T4]@anon-20191002_181700-718:localhost:8800m 4]@anon-20191002_181700-719:localhost:8800m 4]@anon-20191002_181700-717:localhost:8800m4]@anon-20191002_181700-716:localhost:8800m 4]@anon-20191002_181700-715:localhost:8800m&4]@anon-20191002_181700-714:localhost:8800m4]@anon-20191002_181700-713:localhost:8800m4]@anon-20191002_181700-712:localhost:8800m4]@anon-20191002_181700-751:localhost:8800mv4]@anon-20191002_181700-711:localhost:8800m獟4]@anon-20191002_181700-704:localhost:8800mF= 24]@anon-20191002_181700-775:localhost:8800m긄4]@anon-20191002_181700-774:localhost:8800mA4]@anon-20191002_181700-769:localhost:8800m 4]@anon-20191002_181700-768:localhost:8800m 4]@anon-20191002_181700-767:localhost:8800mz4]@anon-20191002_181700-766:localhost:8800mx4]@anon-20191002_181700-753:localhost:8800m 4]@anon-20191002_181700-752:localhost:8800m4]@anon-20191002_181700-730:localhost:8800m4]@anon-20191002_181700-705:localhost:8800mH_4]@anon-20191002_181700-735:localhost:8800mu4]@anon-20191002_181700-734:localhost:8800m-4]@anon-20191002_181700-733:localhost:8800m?4]@anon-20191002_181700-732:localhost:8800m<4]@anon-20191002_181700-731:localhost:8800mӥ+4]@anon-20191002_181700-773:localhost:8800m곲4]@anon-20191002_181700-772:localhost:8800mꮤ4]@anon-20191002_181700-771:localhost:8800mꬉ4]@anon-20191002_181700-770:localhost:8800mꨥ4]@anon-20191002_181700-764:localhost:8800mt4]@anon-20191002_181700-763:localhost:8800m\4]@anon-20191002_181700-762:localhost:8800mF(4]@anon-20191002_181700-761:localhost:8800mCY4]@anon-20191002_181700-760:localhost:8800mAr2[@anon-20191002_181700-75:localhost:8800mHm?4]@anon-20191002_181700-759:localhost:8800m@}4]@anon-20191002_181700-758:localhost:8800m+4]@anon-20191002_181700-757:localhost:8800m 4]@anon-20191002_181700-756:localhost:8800mS4]@anon-20191002_181700-755:localhost:8800m54]@anon-20191002_181700-754:localhost:8800m֜4]@anon-20191002_181700-710:localhost:8800m2[@anon-20191002_181700-70:localhost:8800m.;4]@anon-20191002_181700-709:localhost:8800mx4]@anon-20191002_181700-708:localhost:8800mv4]@anon-20191002_181700-707:localhost:8800m^4]@anon-20191002_181700-706:localhost:8800m`2[@anon-20191002_181700-74:localhost:8800m>2[@anon-20191002_181700-73:localhost:8800m=2[@anon-20191002_181700-71:localhost:8800m<4]@anon-20191002_181700-748:localhost:8800mC4]@anon-20191002_181700-747:localhost:8800m4]@anon-20191002_181700-746:localhost:8800mx4]@anon-20191002_181700-745:localhost:8800mh4]@anon-20191002_181700-744:localhost:8800mf4]@anon-20191002_181700-743:localhost:8800mM4]@anon-20191002_181700-742:localhost:8800mG4]@anon-20191002_181700-736:localhost:8800m(  meQa$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3605}{"auth_events": ["$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ", "$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU", "$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "prev_events": ["$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU"], "type": "m.room.history_visibility", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043766549, "hashes": {"sha256": "HBvnBp7FQvqhPknIXRch9wYqRZkvpokTewrQse527Sg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KmC3ReYJsBoD5WduOcIguI/s/R5t6PP/rXt2Rby9MzrAJKuWP4e7EjOy0kMdE8j9Yr7DIvqyBsL33NwwB2fhAA"}}, "unsigned": {"age_ts": 1570043766549}}tleQau$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3604}{"auth_events": ["$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ", "$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU", "$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "prev_events": ["$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ"], "type": "m.room.join_rules", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043764805, "hashes": {"sha256": "uQ95hASEMtmNuv5MeCFLNCIa6gbkCBeTRbZcXivx/p0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B5cKQREAEKlPpkAA93XPvVTxXyn9QBtJPHkfv+CSh6eqEglrvKHx8vRP1gcbi5tUlihAC6rS1w6df0uNNE+TCg"}}, "unsigned": {"age_ts": 1570043764805}}kkeQac$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3603}{"auth_events": ["$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU", "$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "prev_events": ["$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "type": "m.room.power_levels", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"users": {"@anon-20191002_181700-690:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043762464, "hashes": {"sha256": "D6FHzUSpYGxuKoYixgB1SMtk0fvMhZJutA/1Vl3Of44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Xsl+02tBzto2r9TT+xxRnbMTh7VFpC3+OQ0mzf9jvEDC2jP1YHd0i5OhO+8WcFV8bPucMxIEceDMWZbXicCAA"}}, "unsigned": {"age_ts": 1570043762464}}vjeQay$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3602}{"auth_events": ["$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU"], "prev_events": ["$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU"], "type": "m.room.member", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-690", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-690:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043761021, "hashes": {"sha256": "2Ewp2L+8SrlMtaOqcguUVF9hJ3FGcgB6jbeqitH5yVA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ao9clxXfZIfW7g88CdNcNn4RFiw1zCLrAVdS/dC1V3oaOpgnF936DMlumw/axRSaPnItvYjgrNzre4Z0iJ5kDw"}}, "unsigned": {"age_ts": 1570043761021}} a} { y w u sqomkigeca~veeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800~ueeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~teeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800~seeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800~reeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~qeeQ$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~peeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800~oeeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~neeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800~meeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800~leeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~keeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800~jeeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800~ieeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~heeQ$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~geeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800~feeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~eeeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800~deeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800~ceeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~beeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800~aeeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800~`eeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~_eeQ$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~^eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800~]eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800~\eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800~[eeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800~ZeeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800~YeeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800~XeeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800 Y5- \ *b2j8-p> v D  M_ | J   P  ' S Vo= i7o= xFd1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 C1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak m1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 421e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 8!21e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I *21e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY $1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o h1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8//e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU 1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4g1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk"1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs}1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 21e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs"1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMC1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c81e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMO1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cC1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E 1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8y1e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIf1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4U1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI21e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI<1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho j @ SjkqeQac$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800{"token_id": 671, "stream_ordering": 3609}{"auth_events": ["$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA", "$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU"], "prev_events": ["$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU"], "type": "m.room.power_levels", "room_id": "!DntdfAPfCfgdOoRMdl:localhost:8800", "sender": "@anon-20191002_181700-691:localhost:8800", "content": {"users": {"@anon-20191002_181700-691:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043776350, "hashes": {"sha256": "NoP36i/YydfqCGm+blLUINymt7upY7KxHpavITN3YuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Z+gLY8ThWjN3LNVCM01ekPVhBFdRxZXgG7dWnrk2LGU1yV4IZLLQcGTz+Hy/cF94RgadUCWgQAAzSb/2ORLDw"}}, "unsigned": {"age_ts": 1570043776350}}vpeQay$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800{"token_id": 671, "stream_ordering": 3608}{"auth_events": ["$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA"], "prev_events": ["$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA"], "type": "m.room.member", "room_id": "!DntdfAPfCfgdOoRMdl:localhost:8800", "sender": "@anon-20191002_181700-691:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-691", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-691:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043775048, "hashes": {"sha256": "nZD7hlBULFbnQ5BKYxlGG1FaV1ycpV8I8JrEvrWNjoc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCzJ0oPbGXYyw57GP4QbP06hPrkl9Y3X0y+VD69vgsN271sHZQQFPZId5jscYWjGENtubAr6jPE6PpPMg22cAQ"}}, "unsigned": {"age_ts": 1570043775048}}ioeQa_$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800{"token_id": 671, "stream_ordering": 3607}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DntdfAPfCfgdOoRMdl:localhost:8800", "sender": "@anon-20191002_181700-691:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-691:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043773008, "hashes": {"sha256": "A5sDJz3meOlsVPqQlBsuVqg5AwEXVwQ/wFuPKtPpj78"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9kAdTdLFE9xiqsJRBhrXLQ2gmjeBaK4D/Utl5mgYd90QWFpC6V+C2d3lwm573AGMIt2WKlESstoGraZegP6nDQ"}}, "unsigned": {"age_ts": 1570043773008}}p#(8hVeL$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfosha256Rj̋_KPLUEkR FR%V eL$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQsha256EΨ&HL|[ǶGWVeL$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4sha256k'%VeL$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwsha256e@-:P*Qb'IչVeL$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Ysha256EG~>pӗT܌fVeL$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAsha256gPΝ_$tuW38-ϕVeL$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyosha256t%1\/ }6$8U0ݛe*VeL$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcsha256$T6_VeL$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjssha2568[Ref@twFnٞUl;VeL$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIosha256gcrld㸳S4^UPMVeL$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Asha256qJ(& Ρ}D~CftE}p@V~eL$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4sha256*Nv;_ &(6V}eL$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIsha256WseI"1uX1m>V|eL$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZIsha256O;*mʼnf*`}iԯ$eV{eL$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8sha256dTsYMb'>Qk/VzeL$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIsha256:"f▆n~;UCBVyeL$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUsha256ay8|~U]1i)e|L "ݴVxeL$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Asha256i埂4ZVi]@anon-20191002_181700-701:localhost:8800@anon-20191002_181700-701:localhost:8800 BLFZQHKYWUXKFZZINKLJj=]@anon-20191002_181700-700:localhost:8800@anon-20191002_181700-700:localhost:8800 DOJGFUOIVLOGJFEZFHHTn<]@anon-20191002_181700-698:localhost:8800@anon-20191002_181700-698:localhost:8800 anon-20191002_181700-698n:]@anon-20191002_181700-690:localhost:8800@anon-20191002_181700-690:localhost:8800 anon-20191002_181700-690<9EE@__ANON__-58:localhost:42455@__ANON__-58:localhost:42455n8]@anon-20191002_181700-685:localhost:8800@anon-20191002_181700-685:localhost:8800 anon-20191002_181700-685<7EE@__ANON__-57:localhost:42455@__ANON__-57:localhost:42455n6]@anon-20191002_181700-684:localhost:8800@anon-20191002_181700-684:localhost:8800 anon-20191002_181700-684<5EE@__ANON__-56:localhost:42455@__ANON__-56:localhost:42455n4]@anon-20191002_181700-683:localhost:8800@anon-20191002_181700-683:localhost:8800 anon-20191002_181700-683<3EE@__ANON__-55:localhost:42455@__ANON__-55:localhost:42455n2]@anon-20191002_181700-682:localhost:8800@anon-20191002_181700-682:localhost:8800 anon-20191002_181700-682<1EE@__ANON__-54:localhost:42455@__ANON__-54:localhost:42455PeeQ$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800=eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800<eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800;eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800:eeQ$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:88009eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:88008eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:88007eeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:88006eeQ$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:88005eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:88004eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:88003eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:88002eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:88001eeQ$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:88000eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800/eeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800.eeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800-eeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800,eeQ$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800+eeQ$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800*eeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800)eeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800(eeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800'eeQ$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800&eeQ$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs!DntdfAPfCfgdOoRMdl:localhost:8800 ii 4h5 g  1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-Aoł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8QoÂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgoǂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAoʂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAoɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFN5WHdDLH5FMnhebkxfZloKMDAyZnNpZ25hdHVyZSBjyJPT-W3d_8jtq25bg0CXxeElEbBCLXZPtSSmUUe7OQoȂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQô1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQo˂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQo͂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwoƂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6Pzrwo g * T~=gg ]!c@anon-20191002_181700-704:localhost:8800EQKVVEUTZFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAog]!c@anon-20191002_181700-703:localhost:8800ZKXMBTYIRPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQog]!c@anon-20191002_181700-702:localhost:8800MCYWHCABCHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwog]!c@anon-20191002_181700-701:localhost:8800KSBXFIPYSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAog]!c@anon-20191002_181700-700:localhost:8800GGDKZCAJLWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY5V2M2YnM6Nm5NJmg4SzoKMDAyZnNpZ25hdHVyZSD2H-fLXFMXpaFQcFyMxL9JFAeONbItYVwmt1eGsB3krwog]!c@anon-20191002_181700-697:localhost:8800EDARWEUZCBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo9SiYzOmF-Vjswa1I7elQKMDAyZnNpZ25hdHVyZSDkBe_9qyNrIiBUuJNiAjQWbHTgjeGWn6B1g-XDytVnDAog]!c@anon-20191002_181700-698:localhost:8800NUMXWJYFTCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDR2cXg6THcucnlNU0pTRCoKMDAyZnNpZ25hdHVyZSCRObAd4hl2kIR1cnziKag-gT2xiL5cBuSpDxQXp2Y56wog]!c@anon-20191002_181700-696:localhost:8800HBZTQHKFOSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5xdSxZZnhsU3JxVnQteUwKMDAyZnNpZ25hdHVyZSCtq1UJU_Wyiyp9peYu9r8YQgQoH6XNu9vzifshqGZ0AAog]!c@anon-20191002_181700-695:localhost:8800VDCAEKRWDOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNjNHd1UUpjOW9UNUF4UXoKMDAyZnNpZ25hdHVyZSCPIUVN9lWQ8BoblKnX6rhKPpx4Xu7DL-voKOjr7T_ijgog]!c@anon-20191002_181700-693:localhost:8800LEFIZYPDBZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExOWnhedGV-Lno9XnE4VX4KMDAyZnNpZ25hdHVyZSA5Kn1fYh9S-SPR2I_R6omhBs-F-gPAuYLrGasgatD_KQog]!c@anon-20191002_181700-692:localhost:8800EWIJGPCFOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDsyRFAxYTB3d0JfaCo5NEoKMDAyZnNpZ25hdHVyZSCiZWeiN5k8q08QkTiOIMXaDEtS78p3BtHDiD4U6mLWdAo ! 0 @ P ` p(8HXhxuT ]@anon-20191002_181700-730:localhost:8800$2b$04$LPm/JM/V9kP5.62EtWROv.Kt1QI8nR3KbZHa5540jLufWRFrZyzNS]uS ]@anon-20191002_181700-729:localhost:8800$2b$04$3cxmvNtlof7pj/KswaAyU.zmPtJKrUQTQatfwb9cZR/uDWiYzd9HW]uR ]@anon-20191002_181700-728:localhost:8800$2b$04$DqTIbmkbsFP3rO7DXZ3.3OI.zRNr6/VeE1dQMqFkdeUUrtLnKVDzy]uQ ]@anon-20191002_181700-726:localhost:8800$2b$04$jtKGnGfQS0A.MArKkpXV5OBw2hP1py8ikNE5SPwSEYiL8f7ccUysi]uP ]@anon-20191002_181700-727:localhost:8800$2b$04$amWJDKQgFDJQvHJb/gbosOJQdgZpdQ7QnhV3od/iU5ifGBj8oSq.K]uO ]@anon-20191002_181700-725:localhost:8800$2b$04$5fmVHVdZF6eSWEdVX4ci.O4At12.WOeFI2GW6PBF7139/VTL5bgrS]uN ]@anon-20191002_181700-724:localhost:8800$2b$04$9S44kDlt74U4kCzowW7bZetKPW7KYleEzws8Yt7kphDlAEt5pHWw2]uM ]@anon-20191002_181700-723:localhost:8800$2b$04$esjuya8Wb./o8mdYWvw3c.smss0a7yICI8AkJLfs0OMBLF8mLFtMi]uL ]@anon-20191002_181700-722:localhost:8800$2b$04$UT7C3QqzUFqPycm72N7SJOc3oZYJig1p0Z6zrKwRm..mw5knPtwZC]uK ]@anon-20191002_181700-721:localhost:8800$2b$04$2jthXBxSF.S/E1CwpSvKierZurL1ESCt2Z8ve8JoasZQ3Pq2KU0WS]uJ ]@anon-20191002_181700-720:localhost:8800$2b$04$3TIzUsPBS5vuOKDCpjpvpOEg9OZ.wSsDqKZnG/TMqlGF.Cv.uVuxi]uI ]@anon-20191002_181700-718:localhost:8800$2b$04$lYreEbsVzzCFZ06F1rlBIOgBMeEcEPmMbNL5G9E1ifowpCk1jbeBu]uH ]@anon-20191002_181700-719:localhost:8800$2b$04$Y.0dvJSyR0BLJWfnMPdY2.Yd/1LLEvEHMAK0hT1Ehx5F1STozmnP2]uG ]@anon-20191002_181700-717:localhost:8800$2b$04$XHp8mOKGvQkQsyaGu3o9AOPBvPdCntaBwpFJgLh503WQ1G.9WEYX.]uF ]@anon-20191002_181700-716:localhost:8800$2b$04$/1IwY85Gpjn6lTCit49yAeBMvd19q4Kh8/OMu/5I36ZV7ThoE4JKK]uE ]@anon-20191002_181700-715:localhost:8800$2b$04$xOcBNKvvTmngcSKkjU4l1Oteuzg6ujL5T634ECn3OsjBd430lDpfm]uD ]@anon-20191002_181700-714:localhost:8800$2b$04$xYrmWmB5Ts7f.29OXnM51.bbzkTmaJIFxISequdJGKjXC1/ss0mR.]uC ]@anon-20191002_181700-713:localhost:8800$2b$04$c.vDZG2VpbLKdxKq5R4ME./MaqKIbJ7ErlCnD1UnHAIo77bWhKrLO]uB ]@anon-20191002_181700-712:localhost:8800$2b$04$aCCj9hFp.CSaW8eYFlwP6eA0YiQkSDEGIxrfOgZtQ4uQGAaWDCVA2]uA ]@anon-20191002_181700-711:localhost:8800$2b$04$YWJVBxKCwwuys16j/27cTerRWLmJXFrUEVjIg0SzGPl/lZ7vgE5ge]u@ ]@anon-20191002_181700-710:localhost:8800$2b$04$WIoYAmkLli12PAncgH3Oe.8HqYraqiu8cKRfdylAmZZiDN3H0rAGC]u? ]@anon-20191002_181700-709:localhost:8800$2b$04$.mdkT.YhUzKcFiA0Vj5yqu3szQz32CsyCToc39fQKhFIoTaN3vS.W]u> ]@anon-20191002_181700-708:localhost:8800$2b$04$Aoz4I4UQVDP73ig8F95m0uChWlREPmR6gl3EdIuOL6WRnIb8MX9e.]u= ]@anon-20191002_181700-707:localhost:8800$2b$04$fM0P7HaWiSOm/ffo5r1fWexL7.ViFNoModtH7D6gtp/tDnz6phgkS]u< ]@anon-20191002_181700-706:localhost:8800$2b$04$X8MBe2hjjvd1tBxMYJvth.rmjozaUalOgP9pfMVc8JhcgrHaK7vc2]u; ]@anon-20191002_181700-705:localhost:8800$2b$04$ao8o9KYvjVHIeI4FMbly5u8K6KSUzOUDm8sCnhhZ8aBGdmCtD64mW]u: ]@anon-20191002_181700-704:localhost:8800$2b$04$d4F5Cs9kCHJ6VQuIkuQ1P.L2B7Jw7u3bMmG9DsiPX2IeHaF0PzviC]u9 ]@anon-20191002_181700-703:localhost:8800$2b$04$gZEFXmQntHvI77CW4rgN0OwTbh1Qx1y0Kglh8IkeS/U3PpGt4Ithy]u8 ]@anon-20191002_181700-702:localhost:8800$2b$04$HqZDP9ZJyhppzA2RFXg6deUTsno2mJ/XcHz5TxdR6N3HIMw4QbmY6]u7 ]@anon-20191002_181700-701:localhost:8800$2b$04$WiyYDjTyp3sEJ8Kuqis9TOYeubXtufEpp3W8/oBkcBWtkDiUoJW62]u6 ]@anon-20191002_181700-700:localhost:8800$2b$04$XIqDPfh.CBeLzYRBLG/xHeV3yorQtId5WLGh25I8wMmhMwr1U8rmm]u5 ] @anon-20191002_181700-697:localhost:8800$2b$04$NHWNF2nGB/WpgUQVlkGGzO6DJ9j7ol973KJ7vSrh3fOtvx6ta945m]u4 ]@anon-20191002_181700-698:localhost:8800$2b$04$wcA1C673PTiv4NZXTdVEwOCXoAHl0otzemqu8KsRxxTMPx2zkoELO] )f~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf ]4 ]3 ]2 ]1 ]0 ]/ ]. ]- ], ]+ ]* ]) ]( ]' ]& ]% ]$ ]# ]" ]! ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]~ ]} ]} ]{ ]{ ]v ]p ]p ]o ]i ]c ]b ]a ]a ]\ ]S ]Q ]D ]D ]B ]A ]9 ]9 ]8 ]8 ], ], ]* ]* ]# ]! ] ] ] ]  ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]{ ]o ]n ]m ]l ]k ]` ]W ]M ]F ]= ]7 ], ], ]" ]  ] ] ] ] ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]z ]x ]v ]u ]s ]r ]l ]` ]` ]S ]L~ ]C} ]:| ]2{ ])z ] y ]x ]w ] v ]u ]t ]s ]r ]q ]p ]o ]n ]m ]l ]k ]j ]i ]h ]g ]f ]e ]d ]c ]b ]a ]` ]_ ]^ ]] ]\ ][ ]Z ]Y ]X ]wW ]wV ]vU ]vT ]uS ]tR ]sQ ]rP ]pO ]pN ]oM ]nL ]nK ]mJ ]lI ]fH ]_G ]ZF ]ZE ]TD ]OC ]JB ]DA ]?@ ]>? ]2> ]#= ]< ]; ] : ]9 ]8 ]7 ]6 ]5 ]4 ]3 ]2 ]1 ]0 ]/ ]. ]- ], ]+ ]* ]) ]( ]' ]& ]% ]$ ]|# ]t" ]l! ]l ]e ]e ]^ ]^ ]X ]W ]W ]V ]U ]T ]S ]S ]H ]H ]@ ]8 ]. ]% ] ]   *tyeQau$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3617}{"auth_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg", "$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg"], "type": "m.room.join_rules", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043788712, "hashes": {"sha256": "F/TMyHXeZURuydiaYOdQ0mMUpUjYVppKhnr4djcaBiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5qBDf4B3kiGQNCnmmYiyMKOUztqHu59fjt8HiAvD77gKuFveJJEo1JiF0E3D/Bzwrt+NAjJQ5nbEOZWRumASBw"}}, "unsigned": {"age_ts": 1570043788712}}kxeQac$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3616}{"auth_events": ["$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "type": "m.room.power_levels", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"users": {"@anon-20191002_181700-698:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043787822, "hashes": {"sha256": "/sdPktflE+RLUPkby+5WXAl2GpgdR5LxvEgkYEC7v0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9shjJYvDl9vubm6jI4QfEkZlu+JjYyWN5rOBuF5A2gLC2yWti/goGV0KP6Kzv6YCQSedaf0k7X8f6b3L5H4gAQ"}}, "unsigned": {"age_ts": 1570043787822}}vweQay$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3615}{"auth_events": ["$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8"], "prev_events": ["$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8"], "type": "m.room.member", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-698", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-698:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043787190, "hashes": {"sha256": "sNcqdlNIrAOLCnWyMHzYxNMOHvFiTRXLGRlzk4Jdw9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aRXmpcNvvwraKqskwMRZcg1pBfCvt4bEO2B3LaAK2LgtJCS31dTWFWBWd6b8IchtQo1xF7MQCUD02FJih8oTAA"}}, "unsigned": {"age_ts": 1570043787190}}iveQa_$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3614}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-698:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043786438, "hashes": {"sha256": "juENphPIwr79zLlaKuDWSSmnwf7amAS86dMUrPAYads"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "54AYag9rIIOQnfswVSPU45KguIzn4GpyiwRcZyWP1j6pl0AeAV0P3GVKxDacosBg3mu2JYpcRbH/l/LwImJOCg"}}, "unsigned": {"age_ts": 1570043786438}} I\ Z  o  m'15?I 6e'Q ]$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4m.room.member!SpXEytywhTbAftyVBr:localhost:8800me(mf @anon-20191002_181700-706:localhost:88005 e'Q  ]$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwm.room.create!SpXEytywhTbAftyVBr:localhost:8800mafma@anon-20191002_181700-706:localhost:8800,4e?Q ]$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Ym.room.history_visibility!itfjLXhEaORJLkbfVS:localhost:8800mXm[a@anon-20191002_181700-704:localhost:8800$3e/Q ]$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAm.room.join_rules!itfjLXhEaORJLkbfVS:localhost:8800mT/mU'@anon-20191002_181700-704:localhost:8800&2e3Q ]$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyom.room.power_levels!itfjLXhEaORJLkbfVS:localhost:8800mOmQO@anon-20191002_181700-704:localhost:8800 1e'Q ]$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcm.room.member!itfjLXhEaORJLkbfVS:localhost:8800mLmMG@anon-20191002_181700-704:localhost:88000 e'Q  ]$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsm.room.create!itfjLXhEaORJLkbfVS:localhost:8800mImJ5@anon-20191002_181700-704:localhost:8800&/e3Q ]$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjsm.room.guest_access!GsjDgpaxdwYfnefiWO:localhost:8800mA mA@anon-20191002_181700-702:localhost:8800,.e?Q ]$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIom.room.history_visibility!GsjDgpaxdwYfnefiWO:localhost:8800m;m<@anon-20191002_181700-702:localhost:8800$-e/Q ]$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Am.room.join_rules!GsjDgpaxdwYfnefiWO:localhost:8800m8m9@anon-20191002_181700-702:localhost:8800&,e3Q ]$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4m.room.power_levels!GsjDgpaxdwYfnefiWO:localhost:8800m5vm6@anon-20191002_181700-702:localhost:8800 +e'Q ]$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIm.room.member!GsjDgpaxdwYfnefiWO:localhost:8800m3m3~@anon-20191002_181700-702:localhost:8800* e'Q  ]$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZIm.room.create!GsjDgpaxdwYfnefiWO:localhost:8800m/m0Z@anon-20191002_181700-702:localhost:8800 )e'Q ]$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8m.room.member!jomrpmwwQQtghscizn:localhost:8800m&.m&@anon-20191002_181700-701:localhost:8800,(e?Q ]$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIm.room.history_visibility!jomrpmwwQQtghscizn:localhost:8800m!6m#S@anon-20191002_181700-700:localhost:8800$'e/Q ]$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUm.room.join_rules!jomrpmwwQQtghscizn:localhost:8800mm @anon-20191002_181700-700:localhost:8800&&e3Q ]$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Am.room.power_levels!jomrpmwwQQtghscizn:localhost:8800m5m@anon-20191002_181700-700:localhost:8800 %e'Q ]$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyom.room.member!jomrpmwwQQtghscizn:localhost:8800mm@anon-20191002_181700-700:localhost:8800$ e'Q  ]$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYm.room.create!jomrpmwwQQtghscizn:localhost:8800mm @anon-20191002_181700-700:localhost:8800!#e)Q ] $G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPgm.room.message!ABHbfUdkHCJksMsaUt:localhost:8800mm@anon-20191002_181700-698:localhost:8800,"e?Q ]$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5km.room.history_visibility!ABHbfUdkHCJksMsaUt:localhost:8800mVm[@anon-20191002_181700-698:localhost:8800$!e/Q ]$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMm.room.join_rules!ABHbfUdkHCJksMsaUt:localhost:8800mm@anon-20191002_181700-698:localhost:8800& e3Q ]$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgm.room.power_levels!ABHbfUdkHCJksMsaUt:localhost:8800m.mZ@anon-20191002_181700-698:localhost:8800 e'Q ]$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucm.room.member!ABHbfUdkHCJksMsaUt:localhost:8800mm9@anon-20191002_181700-698:localhost:8800 -RM H C > 9 4/*|%w rmhc TtQe !anErKtXIsVKEEsrzWM:localhost:8800$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUTsQe !yWhIsLsgNVGcnELrDS:localhost:8800$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQTrQe !TcCLuIBUrtFqghDgay:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jETqQe !TcCLuIBUrtFqghDgay:localhost:8800$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUTpQe !TcCLuIBUrtFqghDgay:localhost:8800$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQToQe !TcCLuIBUrtFqghDgay:localhost:8800$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUTnQe !TcCLuIBUrtFqghDgay:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdETmQe !TcCLuIBUrtFqghDgay:localhost:8800$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUTlQe !yWhIsLsgNVGcnELrDS:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4TkQe !yWhIsLsgNVGcnELrDS:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYTjQe !yWhIsLsgNVGcnELrDS:localhost:8800$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgTiQe !yWhIsLsgNVGcnELrDS:localhost:8800$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0ThQe !yWhIsLsgNVGcnELrDS:localhost:8800$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMTgQe !yWhIsLsgNVGcnELrDS:localhost:8800$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OATfQe !yWhIsLsgNVGcnELrDS:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0TeQe !yWhIsLsgNVGcnELrDS:localhost:8800$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMTdQe !wCsDjKBtuUbrmZgjsB:localhost:8800$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2roTcQe !wCsDjKBtuUbrmZgjsB:localhost:8800$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44GgTbQe !wCsDjKBtuUbrmZgjsB:localhost:8800$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfoTaQe !wCsDjKBtuUbrmZgjsB:localhost:8800$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQT`Qe !wCsDjKBtuUbrmZgjsB:localhost:8800$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djssT_Qe !SpXEytywhTbAftyVBr:localhost:8800$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAT^Qe !SpXEytywhTbAftyVBr:localhost:8800$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIT]Qe !SpXEytywhTbAftyVBr:localhost:8800$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2VcT\Qe !SpXEytywhTbAftyVBr:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4T[Qe !SpXEytywhTbAftyVBr:localhost:8800$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwTZQe !itfjLXhEaORJLkbfVS:localhost:8800$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82YTYQe !itfjLXhEaORJLkbfVS:localhost:8800$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gATXQe !itfjLXhEaORJLkbfVS:localhost:8800$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3ZtljyoTWQe !itfjLXhEaORJLkbfVS:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcTVQe !itfjLXhEaORJLkbfVS:localhost:8800$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsTUQe !GsjDgpaxdwYfnefiWO:localhost:8800$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_PisjsTTQe !GsjDgpaxdwYfnefiWO:localhost:8800$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIoTSQe !GsjDgpaxdwYfnefiWO:localhost:8800$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0ATRQe !GsjDgpaxdwYfnefiWO:localhost:8800$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4TQQe !GsjDgpaxdwYfnefiWO:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBITPQe !GsjDgpaxdwYfnefiWO:localhost:8800$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZITOQe !jomrpmwwQQtghscizn:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8TNQe !jomrpmwwQQtghscizn:localhost:8800$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vITMQe !jomrpmwwQQtghscizn:localhost:8800$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUTLQe !jomrpmwwQQtghscizn:localhost:8800$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3ATKQe !jomrpmwwQQtghscizn:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoTJQe !jomrpmwwQQtghscizn:localhost:8800$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYTIQe !ABHbfUdkHCJksMsaUt:localhost:8800$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kTHQe !ABHbfUdkHCJksMsaUt:localhost:8800$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 0`8rJ" \ 4 l D  | T ,  d <  v N &'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 ~'Q$1570042664163IAHXd:localhost:8800 }'Q$1570042663162sQrEh:localhost:8800 |'Q$1570042662161lGrSW:localhost:8800 {'Q$1570042662160SrmtM:localhost:8800 z'Q$1570042661159xQwJK:localhost:8800 y'Q$1570042661158igwHF:localhost:8800 x'Q$1570042660157svDcU:localhost:8800 w'Q$1570042660156wxhvl:localhost:8800 v'Q$1570042659155mEUeP:localhost:8800 u'Q$1570042659154Fztdf:localhost:8800 t'Q$1570042658153tmCYJ:localhost:8800 s'Q$1570042658152btGpA:localhost:8800 r'Q$1570042657151cITOZ:localhost:8800 q'Q$1570042656150UsLRz:localhost:8800 p'Q$1570042656149JNVWR:localhost:8800 o'Q$1570042655148eXOyA:localhost:8800 n'Q$1570042654147iSsjl:localhost:8800 m'Q$1570042653146dGCce:localhost:8800 l'Q$1570042651145wBynt:localhost:8800 k%M$15700426501OLytM:localhost:8829 j'Q$1570042649143JxPAB:localhost:8800 i'Q$1570042648142spuws:localhost:8800 h'Q$1570042648141xSHQB:localhost:8800 g'Q$1570042647140rNeEf:localhost:8800 f'Q$1570042646139VXLYO:localhost:8800 e'Q$1570042646138YEunv:localhost:8800 d'Q$1570042645137fBnPZ:localhost:8800 c'Q$1570042644136OugnY:localhost:8800 b'Q$1570042642135oMfQy:localhost:8800 a%M$15700426410cEjWu:localhost:8829 `'Q$1570042640133wGmrF:localhost:8800 _'Q$1570042639132zhjjB:localhost:8800 ^'Q$1570042638131kazZm:localhost:8800 ]'Q$1570042637130zlkqP:localhost:8800 \'Q$1570042636129shBTe:localhost:8800 [ S wSr}eQaq$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3621}{"auth_events": ["$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY"], "prev_events": ["$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY"], "type": "m.room.member", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"membership": "join", "displayname": "DOJGFUOIVLOGJFEZFHHT", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-700:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043794902, "hashes": {"sha256": "ifDH0DFYoSrxlrH48n4hbZ85mhC3V4ZyTH+SGPH5CYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzwSEY0nPUnOya2POo/cYPGFVgLtIAPtud8ZVNFec9uVSgghh1SWkhnitkY8IWNT7q8YEKC9wxZYPwerqJz1DA"}}, "unsigned": {"age_ts": 1570043794902}}i|eQa_$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3620}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-700:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043793069, "hashes": {"sha256": "cZMigTA/Xjo27U1PIxEzYgLlbiYyXioo/godtA34oE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q4XNaVBmVgDAHvLXcDezHjcHZZPySLvemtoxpKXMmPGITObSt+t6MCZPOqfVrcJlCCDwoApLDUqdsnMf52Y3Ag"}}, "unsigned": {"age_ts": 1570043793069}}={eQc$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "txn_id": "622", "stream_ordering": 3619}{"auth_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg", "$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k"], "type": "m.room.message", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"url": "mxc://localhost:8800/lysZMZCYXnmEbKQByqnCYPHf", "msgtype": "m.image", "body": "test.png"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043791104, "hashes": {"sha256": "hF+Pl6QTUdv0YaWFSq1t8/RPg5q58pCRQSTlUML2UTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5OV2/U/EoVo4wBeNI9m2xtYVOe+YICRBJIyL/SPrk6FGlsPZTD6KytpY/UWAmMKE6EmZjWGWJQfxrx627571Bw"}}, "unsigned": {"age_ts": 1570043791104}}zeQa$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3618}{"auth_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg", "$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM"], "type": "m.room.history_visibility", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043789398, "hashes": {"sha256": "D4P1oBvc7mXGDvF0J/p6IAmNzEwUCoRzMGTb7psFvUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9QQZXaoHAQUMq3ebbM2R9UXvYK5Kvm4zpLfpBBi+Lw2eUViL5b/eKvKJ2EA//J/295aSXWRtW/RGwuQDoXthCg"}}, "unsigned": {"age_ts": 1570043789398}} -qT)}R' { P % y N # w L ! u J  s H q*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DqxFmsXPclgGqpSwdy:localhost:8800  Z*Q!DqxFmsXPclgGqpSwdy:localhost:8800  Y*Q!DqxFmsXPclgGqpSwdy:localhost:8800  X*Q!DqxFmsXPclgGqpSwdy:localhost:8800  W*Q!DqxFmsXPclgGqpSwdy:localhost:8800  V*Q!DqxFmsXPclgGqpSwdy:localhost:8800  U*Q!DqxFmsXPclgGqpSwdy:localhost:8800  T*Q!DqxFmsXPclgGqpSwdy:localhost:8800  S*Q!DqxFmsXPclgGqpSwdy:localhost:8800  R*Q!DqxFmsXPclgGqpSwdy:localhost:8800  Q*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DnUHoxreGexNmjSVpq:localhost:8800^*Q!DnUHoxreGexNmjSVpq:localhost:8800^*Q!DnUHoxreGexNmjSVpq:localhost:8800]*Q!DnUHoxreGexNmjSVpq:localhost:8800] y*ok9i? G  o N  V $ 7 \ *  b 021e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg}1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkn1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6If1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y`1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs_1e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc0e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMK1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgM1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgT1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz01e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcA0e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc<1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y'1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX00e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQN1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0A1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo1e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc71e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQWq21e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG080e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY"0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw21e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sF0e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU91e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg@1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs  4 h 6jd]c@anon-20191002_181700-732:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAo127.0.0.1d]c@anon-20191002_181700-731:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQo127.0.0.1d]c@anon-20191002_181700-730:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAo127.0.0.1d]c@anon-20191002_181700-729:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQo127.0.0.1d]c@anon-20191002_181700-728:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAo127.0.0.1d]c@anon-20191002_181700-727:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwo127.0.0.1d]c@anon-20191002_181700-726:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowo127.0.0.1d]c@anon-20191002_181700-725:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAo127.0.0.1d]c@anon-20191002_181700-724:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAo127.0.0.1d]c@anon-20191002_181700-723:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwo127.0.0.1d]c@anon-20191002_181700-722:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAo127.0.0.1 x , [Lxa[a@anon-20191002_181700-90:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCg127.0.0.1Md]c@anon-20191002_181700-830:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgo127.0.0.1a[a@anon-20191002_181700-81:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCg127.0.0.1Cd]c@anon-20191002_181700-808:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQo127.0.0.1d]c@anon-20191002_181700-798:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1Ao127.0.0.1^d]c@anon-20191002_181700-787:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwo127.0.0.1d]c@anon-20191002_181700-773:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2Ao127.0.0.1ۂd]c@anon-20191002_181700-760:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2Ao127.0.0.1a[a@anon-20191002_181700-74:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCg127.0.0.1>d]c@anon-20191002_181700-733:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQo127.0.0.1zd]c@anon-20191002_181700-721:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAo127.0.0.1 8l D `8]c!E@anon-20191002_181700-711:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQoTQWWPGRZNA127.0.0.1Perl + Net::Async::HTTP/0.44m獟]c!E@anon-20191002_181700-709:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1woIIKOSHQIMX127.0.0.1Perl + Net::Async::HTTP/0.44mx]c!E@anon-20191002_181700-708:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwoSZXKLUUSLB127.0.0.1Perl + Net::Async::HTTP/0.44mv]c!E@anon-20191002_181700-706:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQoWRSEYXOBHV127.0.0.1Perl + Net::Async::HTTP/0.44m`ԃ]c!E@anon-20191002_181700-707:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0FwoVRUFRMLDOP127.0.0.1Perl + Net::Async::HTTP/0.44m^]c!E@anon-20191002_181700-705:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAoAZEUEPQBJM127.0.0.1Perl + Net::Async::HTTP/0.44mH_]c!E@anon-20191002_181700-704:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAoEQKVVEUTZF127.0.0.1Perl + Net::Async::HTTP/0.44mF= ]c!E@anon-20191002_181700-703:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQoZKXMBTYIRP127.0.0.1Perl + Net::Async::HTTP/0.44m/* ]c!E@anon-20191002_181700-702:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwoMCYWHCABCH127.0.0.1Perl + Net::Async::HTTP/0.44m-) ]c!E@anon-20191002_181700-701:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAoKSBXFIPYSS127.0.0.1Perl + Net::Async::HTTP/0.44m =z - j XL:w?B e]]Q5$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4@anon-20191002_181700-721:localhost:8800@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800joinXOISPAUOSHVJCWENJUUS?A e]]Q5$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0@anon-20191002_181700-720:localhost:8800@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800joinXSMKELSYZZRIOKLQFSRH?@ e]]Q5$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800joinMILEDCIUNXUMWFEESQLVA? e]]Q5$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800inviteMILEDCIUNXUMWFEESQLVC> e]]Q=$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800joinanon-20191002_181700-718?= e]]Q5$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs@anon-20191002_181700-717:localhost:8800@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800joinHMVWDTIFKRGHQBGEGHRH?< e]]Q5$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I@anon-20191002_181700-716:localhost:8800@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800joinMJNQECZFMFOOTUTQHDEM?; e]]Q5$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I@anon-20191002_181700-715:localhost:8800@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800joinILZFEUMGMNVXCRVUDWRW?: e]]Q5$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo@anon-20191002_181700-714:localhost:8800@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800joinZONDVATSKCZDRCJEXKOT?9 e]]Q5$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE@anon-20191002_181700-713:localhost:8800@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800joinKIPGYKTLFAKDJTVTRSGZ?8 e]]Q5$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE@anon-20191002_181700-712:localhost:8800@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800joinSIQSTRPUPDLQEGIEGXYW?7 e]]Q5$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800joinSPPIULUTUNSEUMJVVWAVA6 e]]Q5$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800inviteSPPIULUTUNSEUMJVVWAVC5 e]]Q=$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800joinanon-20191002_181700-710?4 e]]Q5$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ@anon-20191002_181700-708:localhost:8800@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:8800joinQNSOXAXNRXGCIEWGQWKJC3 e]]Q=$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4@anon-20191002_181700-706:localhost:8800@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:8800joinanon-20191002_181700-706?2 e]]Q5$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc@anon-20191002_181700-704:localhost:8800@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:8800joinQBXFQKRQDWUAJPNVZOZD?1 e]]Q5$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI@anon-20191002_181700-702:localhost:8800@anon-20191002_181700-702:localhost:8800!GsjDgpaxdwYfnefiWO:localhost:8800joinYXIIECCUXAJQBCOFPUZN?0 e]]Q5$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8@anon-20191002_181700-701:localhost:8800@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:8800joinBLFZQHKYWUXKFZZINKLJ?/ e]]Q5$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo@anon-20191002_181700-700:localhost:8800@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800joinDOJGFUOIVLOGJFEZFHHT a5ao- 8 = e  4`e)a\eQ' $DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800m.room.createm[eQ? $xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibilityeZeQ/ $-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rulesgYeQ3 $9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels XeQ']$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800join seQ']$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800joinareQ' $O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.createmqeQ? $WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800m.room.history_visibilityepeQ/ $3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800m.room.join_rulesgoeQ3 $4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800m.room.power_levels neQ']$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800m.room.member@anon-20191002_181700-706:localhost:8800joinameQ' $ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800m.room.createmleQ? $RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y!itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibilityekeQ/ $Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rulesgjeQ3 $4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels ieQ']$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800joinaheQ' $yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800m.room.createggeQ3 $OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs!GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_accessmfeQ? $Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibilityeeeQ/ $2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rulesgdeQ3 $Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels ceQ']$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800joinabeQ' $AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.create aeQ']$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800joinm`eQ? $OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800m.room.history_visibilitye_eQ/ $YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800m.room.join_rulesg^eQ3 $lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800m.room.power_levels ]eQ']$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800join  ReQa1$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800{"token_id": 679, "stream_ordering": 3625}{"auth_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A", "$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU"], "prev_events": ["$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI"], "type": "m.room.member", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-701:localhost:8800", "content": {"membership": "join", "displayname": "BLFZQHKYWUXKFZZINKLJ", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-701:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043799086, "hashes": {"sha256": "ej3n5TA153uUTX7QquwkyMjQpV5L7o5b0C8uQXXJNyc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f7fxCEW8tWypl8Y1AJfWRSRX43VX8VPdffC+RjHp7NFdLOGdGEf09rKtswZ0UnQZJc4GhF3MvXkhjLa3Si/mAw"}}, "unsigned": {"age_ts": 1570043799086}}eQa$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3624}{"auth_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A", "$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "prev_events": ["$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU"], "type": "m.room.history_visibility", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043797814, "hashes": {"sha256": "Et6ZsQ0nve08nvRjZ4q/5pEeZng0ZAhRth4q+uG58vA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mXVMUP37x/MpYel9mZPPifBIFuUcaYK7OliNzcuuTg/8kyaL53ZsA7KbV0LoJYoUe1dlFMObrTAFSylyDOpnBQ"}}, "unsigned": {"age_ts": 1570043797814}}teQau$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3623}{"auth_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A", "$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "prev_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A"], "type": "m.room.join_rules", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043796922, "hashes": {"sha256": "xO1+6bIpwEM2wxMbNyPUXDn9cC0QMHADZocucZG8oYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hJJhYrHcpm6XfYO2rVYvTwMAvCjOjtDnLhlxiecSfUBJJUR2ikMMNX2Ppauf76k+dEDgxQlV/jzxWjy2l+yRBw"}}, "unsigned": {"age_ts": 1570043796922}}k~eQac$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3622}{"auth_events": ["$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "prev_events": ["$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "type": "m.room.power_levels", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"users": {"@anon-20191002_181700-700:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043796021, "hashes": {"sha256": "x8Po0lMKPqzWCk6hPYwrkGgeq3bGrTifUNorGsXY9OM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xi85LO8DRkyci5EL9isZrk5A8XZFQidWtittVWbd9tCaETwulQJxXJCB3kgFU1iF6Cigc66gggwmATNBRkIcAA"}}, "unsigned": {"age_ts": 1570043796021}} a} { y w u sqomkigeca~eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800~eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800~eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800~eeQ$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800~eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~~eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~}eeQ$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~|eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800~{eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~zeeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800~yeeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800~xeeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~weeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800 ?G R ]  c # j * q 1 x 8?F MT[b&i-p4> ]  @anon-20191002_181700-734:localhost:8800m&\?9 ]@anon-20191002_181700-735:localhost:8800a&\9 ]@anon-20191002_181700-734:localhost:8800a&\= ]  @anon-20191002_181700-733:localhost:8800m&\R> ]  @anon-20191002_181700-732:localhost:8800m&\?9 ]@anon-20191002_181700-733:localhost:8800a&\9 ]@anon-20191002_181700-732:localhost:8800a&\= ]  @anon-20191002_181700-731:localhost:8800m&\R> ]  @anon-20191002_181700-730:localhost:8800m&\?9 ]@anon-20191002_181700-731:localhost:8800a&\9 ]@anon-20191002_181700-730:localhost:8800a&\= ]  @anon-20191002_181700-729:localhost:8800m&\R> ]  @anon-20191002_181700-728:localhost:8800m&\?9 ]@anon-20191002_181700-729:localhost:8800a&\9~ ]@anon-20191002_181700-728:localhost:8800a&\=} ]  @anon-20191002_181700-727:localhost:8800m&\>| ] @anon-20191002_181700-726:localhost:8800m&\ $T9{ ]@anon-20191002_181700-726:localhost:8800a&\9z ]@anon-20191002_181700-727:localhost:8800a&\=y ]  @anon-20191002_181700-725:localhost:8800m&\R>x ]  @anon-20191002_181700-724:localhost:8800m&\?9w ]@anon-20191002_181700-725:localhost:8800a&\9v ]@anon-20191002_181700-724:localhost:8800a&\=u ]  @anon-20191002_181700-723:localhost:8800m&\R>t ]  @anon-20191002_181700-722:localhost:8800m&\?9s ]@anon-20191002_181700-723:localhost:8800a&\9r ]@anon-20191002_181700-722:localhost:8800a&\=q ]  @anon-20191002_181700-721:localhost:8800m&\R>p ]  @anon-20191002_181700-720:localhost:8800m&\?9o ]@anon-20191002_181700-721:localhost:8800a&\9n ]@anon-20191002_181700-720:localhost:8800a&\=m ]  @anon-20191002_181700-719:localhost:8800m&\>l ] @anon-20191002_181700-718:localhost:8800m&\ 9k ]@anon-20191002_181700-718:localhost:8800a&\9j ]@anon-20191002_181700-719:localhost:8800a&\=i ]  @anon-20191002_181700-717:localhost:8800m&\R>h ]  @anon-20191002_181700-716:localhost:8800m&\?9g ]@anon-20191002_181700-717:localhost:8800a&\9f ]@anon-20191002_181700-716:localhost:8800a&\=e ]  @anon-20191002_181700-715:localhost:8800m&\R>d ]  @anon-20191002_181700-714:localhost:8800m&\?9c ]@anon-20191002_181700-715:localhost:8800a&\9b ]@anon-20191002_181700-714:localhost:8800a&\=a ]  @anon-20191002_181700-713:localhost:8800m&\R>` ]  @anon-20191002_181700-712:localhost:8800m&\?9_ ]@anon-20191002_181700-713:localhost:8800a&\9^ ]@anon-20191002_181700-712:localhost:8800a&\=] ]  @anon-20191002_181700-711:localhost:8800m&\>\ ] @anon-20191002_181700-710:localhost:8800m&\ 9[ ]@anon-20191002_181700-711:localhost:8800a&\9Z ]@anon-20191002_181700-710:localhost:8800a&\>Y ]  @anon-20191002_181700-708:localhost:8800m&\?9X ]@anon-20191002_181700-709:localhost:8800a&\9W ]@anon-20191002_181700-708:localhost:8800a&\>V ]  @anon-20191002_181700-706:localhost:8800m&\C9U ]@anon-20191002_181700-707:localhost:8800a&\9T ]@anon-20191002_181700-706:localhost:8800a&\>S ]  @anon-20191002_181700-704:localhost:8800m&\?9R ]@anon-20191002_181700-705:localhost:8800a&\9Q ]@anon-20191002_181700-704:localhost:8800a&\>P ]  @anon-20191002_181700-702:localhost:8800m&\:9O ]@anon-20191002_181700-703:localhost:8800a&\9N ]@anon-20191002_181700-702:localhost:8800a&\   .teQau$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3629}{"auth_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4", "$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4"], "type": "m.room.join_rules", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043803807, "hashes": {"sha256": "pSRIC7rr/37wEJxFTuM41XH2ZZjZbi7XunzlUfQ4bVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+yLg5dKolC8VYEhBR42fZyUqHK8Su7X6jfvlbjvqTAg/ntVolBG7gg3AAyilPBW70TaWWn/q9+yx3UEHsAjyCA"}}, "unsigned": {"age_ts": 1570043803807}}keQac$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3628}{"auth_events": ["$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "type": "m.room.power_levels", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"users": {"@anon-20191002_181700-702:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043802998, "hashes": {"sha256": "bF5f3wuKDJrlhdKoVSiinr4tChqlQaBSIK2OPGFpm1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QWqTVtaoj5Dy5LNGVXMG/Po0Jk18d1b7lD/Aq8Z8V2jvtbYkF0ir39O1ornU/h3t71oCHdP1He1ukV/+IOSmAg"}}, "unsigned": {"age_ts": 1570043802998}}reQaq$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3627}{"auth_events": ["$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI"], "prev_events": ["$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI"], "type": "m.room.member", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"membership": "join", "displayname": "YXIIECCUXAJQBCOFPUZN", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-702:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043802374, "hashes": {"sha256": "dqTYzKI6uh1eLDUpZUyVTfhNvfArRKp5cTObX4PzMZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gd3wbb70JcTTyVPOgWWYOh5oLBcXlmdDs2ROWOgdE60BDryqMOlUxFRblqZ9TIHpV6GvrybuwbTBZN1yMBHFDQ"}}, "unsigned": {"age_ts": 1570043802374}}ieQa_$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3626}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-702:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043801579, "hashes": {"sha256": "MutFjj26Q05cqA5GMd48kCPmJQwFmH7LbKMb3Xr7vzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KEa1VaJFN4bc3lvnsGXAAgibxUKZAMrOER121XeNO+mOkxYPlaJ62h8fLOWubW1Q1VBdBo3Gl0cKL2yOXARnBA"}}, "unsigned": {"age_ts": 1570043801579}}  w r eQaq$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800{"token_id": 682, "stream_ordering": 3633}{"auth_events": ["$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs"], "prev_events": ["$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs"], "type": "m.room.member", "room_id": "!itfjLXhEaORJLkbfVS:localhost:8800", "sender": "@anon-20191002_181700-704:localhost:8800", "content": {"membership": "join", "displayname": "QBXFQKRQDWUAJPNVZOZD", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-704:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043808988, "hashes": {"sha256": "x60bI/vTvkfWTUrXta2pKGcBRgMDUfpalSIxH85lXlk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wEdy225UzfCIhToY/SvUBX1tXZuUKbhfxAP4WKM8o4yWOjjGe0XiRwBc7im3n1aw5OhgU/CYnlo5RMQ5x+w3BQ"}}, "unsigned": {"age_ts": 1570043808988}}ieQa_$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800{"token_id": 682, "stream_ordering": 3632}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!itfjLXhEaORJLkbfVS:localhost:8800", "sender": "@anon-20191002_181700-704:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-704:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043808212, "hashes": {"sha256": "+xMQ4c9BE9kbuo3WvfJky0fnJRtK91X1gvmCzkTny24"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ND7ENETTKX7LNPGmwk0yE8Jos1nJHeTB8yMED4Y4Dg45FDbi4ghKl2q4UDXT6F4kgMFD3lTTy3qOIMu7VZa7Bg"}}, "unsigned": {"age_ts": 1570043808212}}{eQa$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3631}{"auth_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4", "$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo"], "type": "m.room.guest_access", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043805963, "hashes": {"sha256": "+ECJyaGoVukzhCiMxhr37Pecx4cgUVSRrsmOyAOLOWk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5arhqb5rf4rxrWP0ooVNzQcc8wfDwY084yjdM2WUl0/j/3MJfumF8ull9971sTHt2R+qdyFAYCJJPaCS340NDA"}}, "unsigned": {"age_ts": 1570043805963}}eQa$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3630}{"auth_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4", "$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A"], "type": "m.room.history_visibility", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043804564, "hashes": {"sha256": "bCkGaxxBkBB95TjwxUZttXU4WlAJOeLR55VpJtVlaTI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TyHnoulbbWZkH1jncNy/1yY3hmZdT1D4VkDYlGzmm6u30TkHRHceDX1+lB+RZpcmkfGoO9qVU9mLd2Ek6itHBw"}}, "unsigned": {"age_ts": 1570043804564}} g * T~=gg+]!c@anon-20191002_181700-715:localhost:8800MLSIEUMQJDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYxOC5GZ0VyblZXbDNKaWwKMDAyZnNpZ25hdHVyZSC1jgN30N9Boz3icKaySX9JmHMm0pJfsNYa46s2uOsF7wog*]!c@anon-20191002_181700-714:localhost:8800YDBOITJCYDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDM3TWhtLV55VFlzdX52TlAKMDAyZnNpZ25hdHVyZSB-D0qq-F4VHMzUehUyHc8b4NXxmxoEJE1VMAKiqcw8pgog)]!c@anon-20191002_181700-713:localhost:8800HRGSFQOGPUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDROT2wuZFROc2VnR3M6c1gKMDAyZnNpZ25hdHVyZSDGynSuY1KhGWTzubZHTUhlUCJ8qFvK_oxm1XAOIo4j4gog(]!c@anon-20191002_181700-712:localhost:8800CFERAQYYHKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDN0dKX0A3RExxQXVTfmwKMDAyZnNpZ25hdHVyZSAES0eD9WiAuHrdgFXofP7Pui2WRI1MP61s9oGFvx-YqAog']!c@anon-20191002_181700-711:localhost:8800TQWWPGRZNAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQog&]!c@anon-20191002_181700-710:localhost:8800UKBZXSLNLUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5Aog%]!c@anon-20191002_181700-709:localhost:8800IIKOSHQIMXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1wog$]!c@anon-20191002_181700-708:localhost:8800SZXKLUUSLBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwog#]!c@anon-20191002_181700-707:localhost:8800VRUFRMLDOPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0Fwog"]!c@anon-20191002_181700-706:localhost:8800WRSEYXOBHVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQog!]!c@anon-20191002_181700-705:localhost:8800AZEUEPQBJMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAo !mp% . V |   :=_b?Bd<EmhQ/ eQ!anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rules$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkjQ3 eP!anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo Q']eO!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyod Q' eN!anErKtXIsVKEEsrzWM:localhost:8800m.room.create$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU Q/ eeM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM Q']eL!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEp Q? eK!TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibility$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUh Q/ eJ!TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rules$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQjQ3 eI!TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU Q']eH!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEdQ' eG!TcCLuIBUrtFqghDgay:localhost:8800m.room.create$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU8Q']eeF!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY Q']eE!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYjQ3 eD!yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_access$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgpQ? eC!yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibility$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0hQ/ eB!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMjQ3 eA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA Q']e@!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0d~Q' e?!yWhIsLsgNVGcnELrDS:localhost:8800m.room.create$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMp}Q? e>!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibility$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2roh|Q/ e=!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rules$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggj{Q3 e?]!@anon-20191002_181700-716:localhost:8800ATBUACMSGRm ?]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJDm&?]!@anon-20191002_181700-714:localhost:8800YDBOITJCYDm?]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPUm?]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNHmx?]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJmt?]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRGm\?]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQVmF(?]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEGmCY?]!@anon-20191002_181700-722:localhost:8800IZTIXMADAYmJg?]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAGm+6?]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXNm'T=[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIm=[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCm=?]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOBm ?]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQm?]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDMmv?]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCNmF pPW ]  ! j / \  Bp5Q' !kxTDuIasPNpXtiRsif:localhost:8800m.room.createq<Q3 !kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels^Q']!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800^Q']!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800:Q/ !kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rulesBQ? !kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility<Q3 !kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_access6Q' !kwXxkGQFkaeenFTQJr:localhost:8800m.room.create<Q3 !kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels^Q']!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800:Q/ !kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rulesBQ? !kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibility6Q' !kwJgbtogEzCqYbUXfh:localhost:8800m.room.create<Q3 !krhefVncoErkCtnvsy:localhost:8800m.room.power_levels^Q']!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800^Q']!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800:Q/ !krhefVncoErkCtnvsy:localhost:8800m.room.join_rulesBQ? !krhefVncoErkCtnvsy:localhost:8800m.room.history_visibility6Q' !krhefVncoErkCtnvsy:localhost:8800m.room.create?Q9 !krhefVncoErkCtnvsy:localhost:8800m.room.canonical_aliasEQ))!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800<Q3 !kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels^Q']!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800^Q']!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800:Q/ !kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rulesBQ? !kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibility6Q' !kpTPWDZdBbbXKLonZK:localhost:8800m.room.create5Q% !kkgEEVUJynguTqAoWD:localhost:8800m.room.topic "= i r 6 ? gp #W`/ qeQ']$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800apeQ' $UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.createeoeQ/ $5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules neQ']$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800mmeQ? $PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibilityeleQ/ $4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rulesgkeQ3 $12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels jeQ']$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800aieQ' $wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800m.room.createeheQ/ $WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules geQ']$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800mfeQ? $7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibilityeeeQ/ $jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rulesgdeQ3 $QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels ceQ']$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800abeQ' $Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800m.room.create aeQ']$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800 `eQ']$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800g_eQ3 $jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_accessm^eQ? $pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibilitye]eQ/ $PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rulesg\eQ3 $dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels [eQ']$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800aZeQ' $4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.createmYeQ? $6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibilityeXeQ/ $klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rulesgWeQ3 $EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels VeQ']$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800aUeQ' $O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.createmTeQ? $WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800m.room.history_visibilityeSeQ/ $3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800m.room.join_rulesgReQ3 $4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800m.room.power_levels QeQ']$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800m.room.member@anon-20191002_181700-706:localhost:8800aPeQ' $ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800m.room.create "Xq) 4 ^ ! C%0ZY$#SXiTQ3 e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY SQ']e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IcRQ' e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.create$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMgQQ/ e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA PQ']e !anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IoOQ? e !anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibility$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0gNQ/ e !anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rules$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkiMQ3 e !anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo LQ']e !anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyocKQ' e !anErKtXIsVKEEsrzWM:localhost:8800m.room.create$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUgJQ/ e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ IQ']e !TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEoHQ? e !TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibility$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUgGQ/ e !TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rules$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQiFQ3 e !TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU EQ']e !TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEcDQ' e !TcCLuIBUrtFqghDgay:localhost:8800m.room.create$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU CQ']e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 BQ']e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYiAQ3 e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_access$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgo@Q? e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibility$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0g?Q/ e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMi>Q3 e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA =Q']e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0c<Q' e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.create$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMo;Q? e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibility$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rog:Q/ e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rules$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggi9Q3 e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 8Q']e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQc7Q' e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.create$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djsso6Q? e !SpXEytywhTbAftyVBr:localhost:8800m.room.history_visibility$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAg5Q/ e !SpXEytywhTbAftyVBr:localhost:8800m.room.join_rules$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIi4Q3 e !SpXEytywhTbAftyVBr:localhost:8800m.room.power_levels$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 3Q']e !SpXEytywhTbAftyVBr:localhost:8800m.room.member@anon-20191002_181700-706:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4  eQa$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3641}{"auth_events": ["$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc", "$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw", "$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "prev_events": ["$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI"], "type": "m.room.history_visibility", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043817865, "hashes": {"sha256": "lbJUzOv8d77d/LzhX5M+5UamAHKnvIfX7jCS7wqOAJQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l8nBLEbovvNdQRdcX3V52wn4fYKHW6/DyzhdTyDUPQF0b0K0OBX/4us2hb++jnSDVKmo8yqh8ojWf1N4Cau5Dw"}}, "unsigned": {"age_ts": 1570043817865}}teQau$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3640}{"auth_events": ["$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc", "$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw", "$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "prev_events": ["$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc"], "type": "m.room.join_rules", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043817105, "hashes": {"sha256": "ehlZuTFHrazmyOus6u5zY18A438+YAys8oAfc9JinWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pcN/LmDlh4gXpi6ITGDpRelSE4sF1bjvPb2EZp7KIKfJC9UAX3225WvPHg+73YV1IZCs9tv891tW036UljGpBw"}}, "unsigned": {"age_ts": 1570043817105}}keQac$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3639}{"auth_events": ["$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw", "$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "prev_events": ["$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "type": "m.room.power_levels", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"users": {"@anon-20191002_181700-706:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043816134, "hashes": {"sha256": "aVu6ooTheZDYPVKVDKIt6nldJ8t3Nr4Qrh0juTE5Xe4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6crJCYO+GnWGCEQlFf+YfkztB0N0mXadPDmjPX1EVQ/2eZ91rCH7NJjfibFTBOGGEZwYhbYXRYcoYubgnm5qCQ"}}, "unsigned": {"age_ts": 1570043816134}}veQay$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3638}{"auth_events": ["$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw"], "prev_events": ["$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw"], "type": "m.room.member", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-706", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-706:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043815208, "hashes": {"sha256": "sw3zdPTumotqX3IkDhwQvb9AUKF+X5MX1WaZzrkEYCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SHGQewkPfbZdvgzEnLv4tclW4C72LTkeqjHtxUjTztoJM/pLFaYOEsfpmEcHwNEXkMl3wuDO6Lt0359zcP4wDw"}}, "unsigned": {"age_ts": 1570043815208}} FV \  f  pn |64FN e'Q  ]$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUm.room.create!anErKtXIsVKEEsrzWM:localhost:8800mm3@anon-20191002_181700-714:localhost:8800$Me/Q ] $WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQm.room.join_rules!yWhIsLsgNVGcnELrDS:localhost:8800 mXm@anon-20191002_181700-710:localhost:8800 Le'Q ]$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEm.room.member!TcCLuIBUrtFqghDgay:localhost:8800mSmý@anon-20191002_181700-713:localhost:8800,Ke?Q ]$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUm.room.history_visibility!TcCLuIBUrtFqghDgay:localhost:8800mm@anon-20191002_181700-712:localhost:8800$Je/Q ]$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQm.room.join_rules!TcCLuIBUrtFqghDgay:localhost:8800mm@anon-20191002_181700-712:localhost:8800&Ie3Q ]$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUm.room.power_levels!TcCLuIBUrtFqghDgay:localhost:8800m縏m@anon-20191002_181700-712:localhost:8800 He'Q ]$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEm.room.member!TcCLuIBUrtFqghDgay:localhost:8800m>m綦@anon-20191002_181700-712:localhost:8800G e'Q  ]$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUm.room.create!TcCLuIBUrtFqghDgay:localhost:8800m粸m?@anon-20191002_181700-712:localhost:8800 Fe'Q ]$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4m.room.member!yWhIsLsgNVGcnELrDS:localhost:8800m穣mc@anon-20191002_181700-711:localhost:8800 Ee'Q ]$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYm.room.member!yWhIsLsgNVGcnELrDS:localhost:8800mmp@anon-20191002_181700-710:localhost:8800&De3Q ]$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgm.room.guest_access!yWhIsLsgNVGcnELrDS:localhost:8800m#m%@anon-20191002_181700-710:localhost:8800,Ce?Q ]$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0m.room.history_visibility!yWhIsLsgNVGcnELrDS:localhost:8800mm瞮@anon-20191002_181700-710:localhost:8800$Be/Q ]$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMm.room.join_rules!yWhIsLsgNVGcnELrDS:localhost:8800m(mI@anon-20191002_181700-710:localhost:8800&Ae3Q ]$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAm.room.power_levels!yWhIsLsgNVGcnELrDS:localhost:8800m疣m@anon-20191002_181700-710:localhost:8800 @e'Q ]$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0m.room.member!yWhIsLsgNVGcnELrDS:localhost:8800m瓕m]@anon-20191002_181700-710:localhost:8800? e'Q  ]$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMm.room.create!yWhIsLsgNVGcnELrDS:localhost:8800m?m琷@anon-20191002_181700-710:localhost:8800,>e?Q ]$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rom.room.history_visibility!wCsDjKBtuUbrmZgjsB:localhost:8800m_m@anon-20191002_181700-708:localhost:8800$=e/Q ]$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggm.room.join_rules!wCsDjKBtuUbrmZgjsB:localhost:8800m炝mp@anon-20191002_181700-708:localhost:8800&<e3Q ]$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfom.room.power_levels!wCsDjKBtuUbrmZgjsB:localhost:8800mm@anon-20191002_181700-708:localhost:8800 ;e'Q ]$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQm.room.member!wCsDjKBtuUbrmZgjsB:localhost:8800m}>m}@anon-20191002_181700-708:localhost:8800: e'Q  ]$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djssm.room.create!wCsDjKBtuUbrmZgjsB:localhost:8800mymz@anon-20191002_181700-708:localhost:8800,9e?Q ]$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAm.room.history_visibility!SpXEytywhTbAftyVBr:localhost:8800momq@anon-20191002_181700-706:localhost:8800$8e/Q ]$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIm.room.join_rules!SpXEytywhTbAftyVBr:localhost:8800mlmmw@anon-20191002_181700-706:localhost:8800&7e3Q ]$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vcm.room.power_levels!SpXEytywhTbAftyVBr:localhost:8800mhmjF@anon-20191002_181700-706:localhost:8800 a} { y w u sqomkigeca~4eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~3eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~2eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800~1eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~0eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~/eeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~.eeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~-eeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~,eeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~+eeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~*eeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~)eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~(eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~'eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~&eeQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~%eeQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~$eeQ$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~#eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800~"eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~!eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800~ eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800~eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800~eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800~eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800~eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800 5FT)}R' { P % y N # w L !oD u J  s H q*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WFHIeSFQyuugGeBFxW:localhost:8800V*Q!WFHIeSFQyuugGeBFxW:localhost:8800U*Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhLedNwPGGGTtqeqam:localhost:8800 +*Q!WhLedNwPGGGTtqeqam:localhost:8800 **Q!WhLedNwPGGGTtqeqam:localhost:8800 )*Q!WhLedNwPGGGTtqeqam:localhost:8800 (*Q!WhLedNwPGGGTtqeqam:localhost:8800 '*Q!WhLedNwPGGGTtqeqam:localhost:8800 &*Q!WhLedNwPGGGTtqeqam:localhost:8800 %*Q!WhLedNwPGGGTtqeqam:localhost:8800 $*Q!WYyiQAVvitxsLZKVCG:localhost:8800 B ~*Q!WYyiQAVvitxsLZKVCG:localhost:8800 A }*Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ |*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? {*Q!WYyiQAVvitxsLZKVCG:localhost:8800 > z*Q!WYyiQAVvitxsLZKVCG:localhost:8800 = y*Q!WYyiQAVvitxsLZKVCG:localhost:8800 < x*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ; w*Q!WWZVpyLeZfyfpWidLx:localhost:8800fh*Q!WWZVpyLeZfyfpWidLx:localhost:8800eg*Q!WWZVpyLeZfyfpWidLx:localhost:8800df*Q!WWZVpyLeZfyfpWidLx:localhost:8800ce*Q!WWZVpyLeZfyfpWidLx:localhost:8800bd*Q!WWZVpyLeZfyfpWidLx:localhost:8800ac*Q!WWZVpyLeZfyfpWidLx:localhost:8800`b*Q!WWZVpyLeZfyfpWidLx:localhost:8800_a*Q!WWZVpyLeZfyfpWidLx:localhost:8800^`*Q!WWZVpyLeZfyfpWidLx:localhost:8800]_*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WFHIeSFQyuugGeBFxW:localhost:8800Z*Q!WFHIeSFQyuugGeBFxW:localhost:8800Y*Q!WFHIeSFQyuugGeBFxW:localhost:8800X*Q!WFHIeSFQyuugGeBFxW:localhost:8800W   .teQau$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3645}{"auth_events": ["$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo", "$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss", "$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ"], "prev_events": ["$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo"], "type": "m.room.join_rules", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043822749, "hashes": {"sha256": "CExRRLXyESo/wI7VNZ992aiHC5GE1489KvIORjnlze0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rxmox38jqSTLHLLArlZMPejmLSYRhupHQYiVSZAro7JQsYVSal8jEcAo7UeFQqilF/Cl/6swokLRC9ts0RAUBA"}}, "unsigned": {"age_ts": 1570043822749}}keQac$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3644}{"auth_events": ["$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss", "$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ"], "prev_events": ["$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ"], "type": "m.room.power_levels", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"users": {"@anon-20191002_181700-708:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043822010, "hashes": {"sha256": "PK89G3i2PH5yfIgOAZqncS1WjDPnhzSKvg87dLoZVQ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ui2EwBxXFa5SO30aVkVLvSF2j6BYU6VPp91+hBW/vglsaQc+2nwvO+rz9i8BWEwSPaSetw+P2i5OoVWJ1zWhDQ"}}, "unsigned": {"age_ts": 1570043822010}}reQaq$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3643}{"auth_events": ["$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss"], "prev_events": ["$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss"], "type": "m.room.member", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"membership": "join", "displayname": "QNSOXAXNRXGCIEWGQWKJ", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-708:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043821374, "hashes": {"sha256": "441VHVHkd39cjYl97baSqY+ghrpu8bXGwCxoPd9nkUc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8skAEKxaSLE7adZfiBESe19wmbSgVefeU6bMjoK3O+0S6m2iBJ17xRvy00FKx8qiBiJCq4P3XEiugrsNnfnqCw"}}, "unsigned": {"age_ts": 1570043821374}}ieQa_$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3642}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-708:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043820456, "hashes": {"sha256": "3fNa1H6G0x5AWSzJJ12IsekNOfxdrltfeOJP6nne90Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9tjCAkk4/+ZO9HJBvAE5rqNmyIEhS27GcVKjS4QqLD4jBZu4B2mcUzZ9MMow0DFRpFY7JqeiWSEUH7GtsUXYBw"}}, "unsigned": {"age_ts": 1570043820456}} -RM H C > 9 4/*|%w rmhc TYQeg!BKZJsoFNhiLTDYNclB:localhost:8800$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYTXQef!BKZJsoFNhiLTDYNclB:localhost:8800$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoTWQee!BKZJsoFNhiLTDYNclB:localhost:8800$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUTVQed!BKZJsoFNhiLTDYNclB:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0TUQec!BKZJsoFNhiLTDYNclB:localhost:8800$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkTTQeb!aiOswwhoZqjhcjzbzc:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgTSQea!aiOswwhoZqjhcjzbzc:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760TRQe`!aiOswwhoZqjhcjzbzc:localhost:8800$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4NsTQQe_!aiOswwhoZqjhcjzbzc:localhost:8800$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkTPQe^!aiOswwhoZqjhcjzbzc:localhost:8800$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HATOQe]!aiOswwhoZqjhcjzbzc:localhost:8800$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_ATNQe\!aiOswwhoZqjhcjzbzc:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wTMQe[!aiOswwhoZqjhcjzbzc:localhost:8800$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsoTLQeZ!IYxUkyFHOgvhLpdkOA:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsTKQeY!IYxUkyFHOgvhLpdkOA:localhost:8800$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8TJQeX!IYxUkyFHOgvhLpdkOA:localhost:8800$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4TIQeW!IYxUkyFHOgvhLpdkOA:localhost:8800$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYTHQeV!IYxUkyFHOgvhLpdkOA:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3ITGQeU!IYxUkyFHOgvhLpdkOA:localhost:8800$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMTFQeT!yWhIsLsgNVGcnELrDS:localhost:8800$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYATEQeS!anErKtXIsVKEEsrzWM:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6ITDQeR!anErKtXIsVKEEsrzWM:localhost:8800$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0TCQeQ!anErKtXIsVKEEsrzWM:localhost:8800$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkTBQeP!anErKtXIsVKEEsrzWM:localhost:8800$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSoTAQeO!anErKtXIsVKEEsrzWM:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyoT@QeN!anErKtXIsVKEEsrzWM:localhost:8800$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUT?QeM!yWhIsLsgNVGcnELrDS:localhost:8800$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQT>QeL!TcCLuIBUrtFqghDgay:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jET=QeK!TcCLuIBUrtFqghDgay:localhost:8800$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUT<QeJ!TcCLuIBUrtFqghDgay:localhost:8800$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQT;QeI!TcCLuIBUrtFqghDgay:localhost:8800$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUT:QeH!TcCLuIBUrtFqghDgay:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdET9QeG!TcCLuIBUrtFqghDgay:localhost:8800$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUT8QeF!yWhIsLsgNVGcnELrDS:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4T7QeE!yWhIsLsgNVGcnELrDS:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYT6QeD!yWhIsLsgNVGcnELrDS:localhost:8800$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgT5QeC!yWhIsLsgNVGcnELrDS:localhost:8800$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0T4QeB!yWhIsLsgNVGcnELrDS:localhost:8800$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMT3QeA!yWhIsLsgNVGcnELrDS:localhost:8800$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAT2Qe@!yWhIsLsgNVGcnELrDS:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0T1Qe?!yWhIsLsgNVGcnELrDS:localhost:8800$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMT0Qe>!wCsDjKBtuUbrmZgjsB:localhost:8800$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2roT/Qe=!wCsDjKBtuUbrmZgjsB:localhost:8800$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44GgT.Qe 9 4/*|%w rmhc T!Qe !!NcJYmIbgjsaKJOzBcs:localhost:8800$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wT Qe !NcJYmIbgjsaKJOzBcs:localhost:8800$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegTQe !NcJYmIbgjsaKJOzBcs:localhost:8800$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUTQe !NcJYmIbgjsaKJOzBcs:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cTQe !NcJYmIbgjsaKJOzBcs:localhost:8800$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgTQe !biBIcqnGelHvLnpkOu:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkTQe !biBIcqnGelHvLnpkOu:localhost:8800$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980TQe !biBIcqnGelHvLnpkOu:localhost:8800$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8TQe !biBIcqnGelHvLnpkOu:localhost:8800$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QTQe !biBIcqnGelHvLnpkOu:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNATQe !biBIcqnGelHvLnpkOu:localhost:8800$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcTQe !aiOswwhoZqjhcjzbzc:localhost:8800$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0TQe !yNfCaBMPezurwkJRAX:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokTQe !yNfCaBMPezurwkJRAX:localhost:8800$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8TQe !yNfCaBMPezurwkJRAX:localhost:8800$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYTQe !yNfCaBMPezurwkJRAX:localhost:8800$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kTQe !yNfCaBMPezurwkJRAX:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8TQe !yNfCaBMPezurwkJRAX:localhost:8800$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsTQe !aiOswwhoZqjhcjzbzc:localhost:8800$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gTQe !BKZJsoFNhiLTDYNclB:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4T Qe !BKZJsoFNhiLTDYNclB:localhost:8800$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYT Qe !BKZJsoFNhiLTDYNclB:localhost:8800$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoT Qe !BKZJsoFNhiLTDYNclB:localhost:8800$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUT Qe !BKZJsoFNhiLTDYNclB:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0T Qe !BKZJsoFNhiLTDYNclB:localhost:8800$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkTQe !aiOswwhoZqjhcjzbzc:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgTQe !aiOswwhoZqjhcjzbzc:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760TQe !aiOswwhoZqjhcjzbzc:localhost:8800$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4NsTQe !aiOswwhoZqjhcjzbzc:localhost:8800$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkTQe !aiOswwhoZqjhcjzbzc:localhost:8800$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HATQe !aiOswwhoZqjhcjzbzc:localhost:8800$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_ATQe !aiOswwhoZqjhcjzbzc:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wTQe !aiOswwhoZqjhcjzbzc:localhost:8800$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsoTQe !IYxUkyFHOgvhLpdkOA:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsTQe !IYxUkyFHOgvhLpdkOA:localhost:8800$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8T~Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4T}Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYT|Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IT{Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMTzQe !yWhIsLsgNVGcnELrDS:localhost:8800$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYATyQe !anErKtXIsVKEEsrzWM:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6ITxQe !anErKtXIsVKEEsrzWM:localhost:8800$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0TwQe !anErKtXIsVKEEsrzWM:localhost:8800$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkTvQe !anErKtXIsVKEEsrzWM:localhost:8800$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSoTuQe !anErKtXIsVKEEsrzWM:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo  {eQa$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3652}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0"], "type": "m.room.guest_access", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043830563, "hashes": {"sha256": "58oM4Dg8EFXgvsWpFgDYNXrEff3VBPoJ6Qjqgb8c0sI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8frp9V+eK047qZE2o3ICXGwPwv8sas3HOXmTWazk761XlJVNcWOw/5RgMgfmDsnTXdJeA8EZeruwRKBtVeebDw"}}, "unsigned": {"age_ts": 1570043830563}}eQa$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3651}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM"], "type": "m.room.history_visibility", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043829706, "hashes": {"sha256": "VsFowMOhbeX6zfuwJp8CtjAPg6CNO8OOFLWwoCLAbH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RyX9k8+81KSiagQQ13k6vzm8mdI+aV6q+ICggm9Tvqh3WRtW8urYqNfquq7us6d3z1YAXMKqENpiVkv2ZgN5CQ"}}, "unsigned": {"age_ts": 1570043829706}}teQau$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3650}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA"], "type": "m.room.join_rules", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043828776, "hashes": {"sha256": "PvoPl2kSDIPCHWbUEohVdKV994bAxnJwFb33ho2Il5Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JFJlxory0qkqT7/7RbiUJkPHKJOV9OiwBYDjPdWsOPxfNskBp/hHldD6V1k4wVHOWYsDQwB0O2gkU0YvvvnuBg"}}, "unsigned": {"age_ts": 1570043828776}} ~z v r n j fb^ZVRNJFaeeQ$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800`eeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800_eeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800^eeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800]eeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800\eeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800[eeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800ZeeQ$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800YeeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800XeeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800WeeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800VeeQ$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800UeeQ$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800TeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800SeeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800ReeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800QeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800PeeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800OeeQ$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800NeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800MeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800LeeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800KeeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800JeeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800IeeQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800HeeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800GeeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800FeeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800EeeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800DeeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V?eL$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYsha256Ko`eRK8Ҥ*NퟪV>eL$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48ksha256N/Vo w)NM3@ V=eL$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8sha256hM8HqC+rΧBp$mV<eL$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhssha256#zɃnux)yMm RMV;eL$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gsha256Sq'YF^(m8u:?suN,zsxV:eL$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4sha256~GvjII]hyK_Jc*cƃ8JP 8l D `8]c!E@anon-20191002_181700-720:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAoCJYSUKRSXN127.0.0.1Perl + Net::Async::HTTP/0.44m'T]c!E@anon-20191002_181700-718:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFDaFB1bS5vcUt-cXFTc1AKMDAyZnNpZ25hdHVyZSBuUwjAdastvQZGSYHyizirOyLuiIQKBqJADs7r5j1EgwoLCLSEHKRUG127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-719:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdAVy5KOWssdCxtcVdyd3cKMDAyZnNpZ25hdHVyZSAgraxxc6q5U_7VMbu5yfxGyGqUF06nK-jKqT7xjrhzOgoERYCEGRJPT127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-717:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZaYmY7VzoyaS5hT3UsRUsKMDAyZnNpZ25hdHVyZSCFQhHrZ-LTwiiiDge5GCVdrykrXQfkhmWf_Bbg0OR1AgoJZHRILWPLI127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-716:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4wOkx5ZmMuQitWbVU4LFoKMDAyZnNpZ25hdHVyZSCU0_9O6ALCEUu0OKMtSUgn0PKtFCpELylK1hj4uM_J9woATBUACMSGR127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-715:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYxOC5GZ0VyblZXbDNKaWwKMDAyZnNpZ25hdHVyZSC1jgN30N9Boz3icKaySX9JmHMm0pJfsNYa46s2uOsF7woMLSIEUMQJD127.0.0.1Perl + Net::Async::HTTP/0.44m&]c!E@anon-20191002_181700-714:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDM3TWhtLV55VFlzdX52TlAKMDAyZnNpZ25hdHVyZSB-D0qq-F4VHMzUehUyHc8b4NXxmxoEJE1VMAKiqcw8pgoYDBOITJCYD127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-713:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDROT2wuZFROc2VnR3M6c1gKMDAyZnNpZ25hdHVyZSDGynSuY1KhGWTzubZHTUhlUCJ8qFvK_oxm1XAOIo4j4goHRGSFQOGPU127.0.0.1Perl + Net::Async::HTTP/0.44m҃]c!E@anon-20191002_181700-712:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDN0dKX0A3RExxQXVTfmwKMDAyZnNpZ25hdHVyZSAES0eD9WiAuHrdgFXofP7Pui2WRI1MP61s9oGFvx-YqAoCFERAQYYHK127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-710:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5AoUKBZXSLNLU127.0.0.1Perl + Net::Async::HTTP/0.44m 6 k#6ieQa_$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3655}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-712:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043835064, "hashes": {"sha256": "YPdmnc5PRWI/iulJsh7LgbtiVImiiDHu+Vmx6t7vsrI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aFwPNoiWgztjV/MoOTOJrx8cAiil64+IzeRPr4ZzBebX/Hqj/AwsdC3fejgdhXAsXuSmcs+wsY+vBfUHEdo5CA"}}, "unsigned": {"age_ts": 1570043835064}}DeQa$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 689, "stream_ordering": 3654}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM", "$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY"], "prev_events": ["$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY"], "type": "m.room.member", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-711:localhost:8800", "content": {"membership": "join", "displayname": "SPPIULUTUNSEUMJVVWAV", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-711:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043832739, "hashes": {"sha256": "00yF7ZSXcmqUCJ2+AyWKa9ExGbwl0i9P+40w4w/0NJM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wLgxrWrPQhYmd5b/XngBHPlw4cWzdSDKzJ8vAmSanHv7W+kZeXwAnuQtBU41kOJftyiRk2J5n59RPW6PaayNAg"}}, "unsigned": {"age_ts": 1570043832739, "replaces_state": "$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY"}}eQa/$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3653}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg"], "type": "m.room.member", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"membership": "invite", "displayname": "SPPIULUTUNSEUMJVVWAV", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-711:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043831808, "hashes": {"sha256": "NDO9ztygFgiBHcRwIHjr8CrAST8peVYH+TJfDFtyM1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O1cqZ9qy2pmbedKGqwL4NcgXVLDg0MvH1Xmr1LSvjJcrwnzLXvhYAdBxO4DOe6y6O06kuaovxK7pOKsrokgyCA"}}, "unsigned": {"age_ts": 1570043831808, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-710:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-710:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-710", "avatar_url": null}, "sender": "@anon-20191002_181700-710:localhost:8800"}]}}  K)R { K(E]]eQ@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800TD]]eQe@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8TC]]eQe@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-751:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgTB]]eQe@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-747:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywTA]]eQe~@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-727:localhost:8800$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMT@]]eQeb@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-719:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgT?]]eQeF@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-711:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 a} { y w u sqomkigeca~SeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~ReeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800~QeeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~PeeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800~OeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800~NeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~MeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800~LeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800~KeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~JeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800~IeeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800~HeeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~GeeQ$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~FeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~EeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~DeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~CeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800~BeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~AeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800~@eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800~?eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~>eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800~=eeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800~<eeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~;eeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800~:eeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800~9eeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~8eeQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~7eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800~6eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800~5eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800 ]@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@xp                                                                            ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U T T S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! !                                                                                                                                                                                              ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o                   #eQa$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3659}{"auth_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU", "$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "prev_events": ["$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ"], "type": "m.room.history_visibility", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043838156, "hashes": {"sha256": "Gy+UwQKHJwM+VyarVt5wxnWtMrB6N2KroLjZcnf1UWE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k+Zl95hEgF40sCS9CxSOTi88Lvo0leJ6MWorBT19auUK8jh5Q2VU583DWGvu6dupPLqONXVTvPvBcHhNFGfACQ"}}, "unsigned": {"age_ts": 1570043838156}}t"eQau$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3658}{"auth_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU", "$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "prev_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU"], "type": "m.room.join_rules", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043837384, "hashes": {"sha256": "ClMOnZWRfK2EqanOl9Ve581Gk23X6GUAxn0MnG7ODmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QO4V+TfB4ofpurbCDad/tW4spbpiSBzoutg1QAWEU8Tu3y9jKChLy1vBqD6m1PNDTrPLBRj/g40AEEiZx/QEBQ"}}, "unsigned": {"age_ts": 1570043837384}}k!eQac$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3657}{"auth_events": ["$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "prev_events": ["$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "type": "m.room.power_levels", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"users": {"@anon-20191002_181700-712:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043836559, "hashes": {"sha256": "4X135wyauv7srXdAT6OtsGM5zCPYFs35FGQrLJCkvM0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2rTufiFTVOmnxXYdc6fwjf6lyHVMzz85+IeXbax9vzvkYuL2IspOuJYQLe+QIpeIUz4tngQpT9naXjrYnodXCw"}}, "unsigned": {"age_ts": 1570043836559}}r eQaq$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3656}{"auth_events": ["$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU"], "prev_events": ["$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU"], "type": "m.room.member", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"membership": "join", "displayname": "SIQSTRPUPDLQEGIEGXYW", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-712:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043835966, "hashes": {"sha256": "LViBCYAOJCLPfzsCiLhTW+Vjxub4z7xcuWeRr7bL1iQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1O5N8CKBUl+ib27h/sFQ2N6E9UcWxqaBHOElDaXElGQTkY4YB3y9DzccDpFMumVQoiiaoiTRFInX4e2Jy1P6Cg"}}, "unsigned": {"age_ts": 1570043835966}}  j  Nt yo- 8 = e INvD C aweQ' $4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.createmveQ? $6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibilitymeQ? $8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibilityeeQ/ $bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rulesgeQ3 $_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels eQ']$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800joina eQ' $UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.createe eQ/ $5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rulesa~eQ' $Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800m.room.create }eQ']$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800joing|eQ3 $jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_accessm{eQ? $pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibilitygyeQ3 $dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels xeQ']$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800join#eueQ/ $klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rulesgteQ3 $EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels eQ']$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800joinm eQ? $PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibilityeeQ/ $4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rulesgeQ3 $12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels eQ']$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800joinaeQ' $wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800m.room.create eQ']$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800joinmeQ? $7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibilityeeQ/ $jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rulesgeQ3 $QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels eQ']$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800join  *p r'eQaq$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3663}{"auth_events": ["$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU"], "prev_events": ["$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU"], "type": "m.room.member", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"membership": "join", "displayname": "ZONDVATSKCZDRCJEXKOT", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-714:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043843828, "hashes": {"sha256": "qpAvPjU7IoElTyHPvMcLuW+Ww9WeFaCSRb0JL5fWP2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Et3/vC9xSxMMu8COR8wLJhOegjMYEeInUTuZSqURiHjga0HVOObvW3ZiFgpL0nqaC6ydBnTyjDJvHwkUEVzVDA"}}, "unsigned": {"age_ts": 1570043843828}}i&eQa_$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3662}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-714:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043843032, "hashes": {"sha256": "65fzqKdTbNNMzcE0W6qATAlIU4MyVF5gIwKtE/1J3iY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IDfeps3RGsI/mqfaJ9PLLhhM2xw8vP1tNxsZhAzIjy8/rcW58spwuSKpWUqTk7i1rTHt3EZgdMp+8/ULKD16AA"}}, "unsigned": {"age_ts": 1570043843032}}6%eQay$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3661}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4"], "type": "m.room.join_rules", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"join_rule": "public"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043840344, "hashes": {"sha256": "cE+BhB911Y2XdhMHwMMqfDEDztEVmHHK9bhKjxrv55E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nHnfTvdzOB7zOkdQAGNg4pqfnItoukOofc+mz2jZ5yfySj9+EP/1tkwn4OpEPatX39VRtWvUG2gSRTnCVYMqDA"}}, "unsigned": {"age_ts": 1570043840344, "replaces_state": "$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM"}}R$eQa1$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 691, "stream_ordering": 3660}{"auth_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU", "$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ"], "prev_events": ["$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU"], "type": "m.room.member", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-713:localhost:8800", "content": {"membership": "join", "displayname": "KIPGYKTLFAKDJTVTRSGZ", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-713:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043839315, "hashes": {"sha256": "L2qpyLYv1YHrDwRhMVooeYTGJMDZNU5zUDUmH1MrcVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twmtncZWwPM+XVqoqM35HJcHhmQq/e7GsuK1/mzx9mDBnt8K8HyT/VihEBWKt6xEFEY9o72F6pdirAdvdpPXCg"}}, "unsigned": {"age_ts": 1570043839315}} T $#$TL  0 702181700?20191002?71014567892018800=anon?hmvwdtifkrghqbgeghrhilzfeumgmnvxcrvudwrw localhost=miledciunxumwfeesqlvjnqeczfmfootutqhdemsppiulutunseumjvvwavxoispauoshvjcwenjuussmkelsyzzrioklqfsrhzondvatskczdrcjexkot{  f0 749181700F20191002F69870012468101238800CanonFblfzqhkywuxkfzzinkljdojgfuoivlogjfezfhhtkipgyktlfakdjtvtrsgz localhostCqbxfqkrqdwuajpnvzozdnsoxaxnrxgciewgqwkjsiqstrpupdlqegiegxywppiulutunseumjvvwavyxiieccuxajqbcofpuzn}  j0 4951817002201910022424555567868234590188800+anonJ localhostCm J0 479181700+20191002+424555012346778980128800%anonI localhostC\ (0 462181700$20191002$42455%678950167234568800anonH localhostC> n0 433181700$20191002$4012455356668970128800anonB localhost=k H0 478181700+20191002+35678942455663456788800%anonI localhostC8 61288c6 65628B 4 5032a! 2 5540a BOc0`- ` , \ ) Y & V # U "TQPQRPM2]@anon-20191002_181700-742:localhost:8800a1[@anon-20191002_181700-73:localhost:8800a4]@anon-20191002_181700-736:localhost:8800m2]@anon-20191002_181700-736:localhost:8800a4]@anon-20191002_181700-735:localhost:8800m 2]@anon-20191002_181700-735:localhost:8800a 4]@anon-20191002_181700-734:localhost:8800m 2]@anon-20191002_181700-734:localhost:8800a 2]@anon-20191002_181700-782:localhost:8800aD2]@anon-20191002_181700-781:localhost:8800aC3[@anon-20191002_181700-77:localhost:8800m1[@anon-20191002_181700-77:localhost:8800a2]@anon-20191002_181700-779:localhost:8800aB2]@anon-20191002_181700-777:localhost:8800aA2]@anon-20191002_181700-775:localhost:8800a@2]@anon-20191002_181700-774:localhost:8800a>2]@anon-20191002_181700-773:localhost:8800a?2]@anon-20191002_181700-772:localhost:8800a<2]@anon-20191002_181700-771:localhost:8800a=2]@anon-20191002_181700-770:localhost:8800a:2]@anon-20191002_181700-769:localhost:8800a;4]@anon-20191002_181700-768:localhost:8800m92]@anon-20191002_181700-768:localhost:8800a84]@anon-20191002_181700-767:localhost:8800m72]@anon-20191002_181700-767:localhost:8800a62]@anon-20191002_181700-766:localhost:8800a52]@anon-20191002_181700-764:localhost:8800a44]@anon-20191002_181700-763:localhost:8800m32]@anon-20191002_181700-763:localhost:8800a24]@anon-20191002_181700-762:localhost:8800m12]@anon-20191002_181700-762:localhost:8800a02]@anon-20191002_181700-761:localhost:8800a/2]@anon-20191002_181700-760:localhost:8800a-3[@anon-20191002_181700-75:localhost:8800m1[@anon-20191002_181700-75:localhost:8800a2]@anon-20191002_181700-759:localhost:8800a.4]@anon-20191002_181700-758:localhost:8800m,2]@anon-20191002_181700-758:localhost:8800a+4]@anon-20191002_181700-757:localhost:8800m*2]@anon-20191002_181700-757:localhost:8800a)2]@anon-20191002_181700-756:localhost:8800a(4]@anon-20191002_181700-755:localhost:8800m'2]@anon-20191002_181700-755:localhost:8800a$4]@anon-20191002_181700-754:localhost:8800m&2]@anon-20191002_181700-754:localhost:8800a%2]@anon-20191002_181700-753:localhost:8800a"4]@anon-20191002_181700-752:localhost:8800m#2]@anon-20191002_181700-752:localhost:8800a!4]@anon-20191002_181700-751:localhost:8800m 2]@anon-20191002_181700-751:localhost:8800a4]@anon-20191002_181700-750:localhost:8800m2]@anon-20191002_181700-750:localhost:8800a3[@anon-20191002_181700-74:localhost:8800m1[@anon-20191002_181700-74:localhost:8800a2]@anon-20191002_181700-749:localhost:8800a2]@anon-20191002_181700-748:localhost:8800a4]@anon-20191002_181700-747:localhost:8800m2]@anon-20191002_181700-747:localhost:8800a4]@anon-20191002_181700-746:localhost:8800m2]@anon-20191002_181700-746:localhost:8800a2]@anon-20191002_181700-745:localhost:8800a4]@anon-20191002_181700-744:localhost:8800m2]@anon-20191002_181700-744:localhost:8800a4]@anon-20191002_181700-743:localhost:8800m2]@anon-20191002_181700-743:localhost:8800a4]@anon-20191002_181700-742:localhost:8800m S :  ~ Q $ f9l? aX4, \ / |O"oBf9 zM  p C  g U(uHsF,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800+Q !kkgEEVUJynguTqAoWD:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800+Q !kwJgbtogEzCqYbUXfh:localhost:8800  ,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800+Q !kjueCKHmYaYefEEpQY:localhost:8800,Q!kOmCTyiizHqfCJdhlR:localhost:8800 [ [ ,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800+Q !lAGTcYIuMBXsVRGCOe:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800+Q !krhefVncoErkCtnvsy:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800+Q !kpTPWDZdBbbXKLonZK:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800 1*,Q!kOmCTyiizHqfCJdhlR:localhost:8800 \ \*Q!kxTDuIasPNpXtiRsif:localhost:8800~~)Q !kxTDuIasPNpXtiRsif:localhost:8800}},Q!kwXxkGQFkaeenFTQJr:localhost:8800 ,Q!kwXxkGQFkaeenFTQJr:localhost:8800 ,Q!kwXxkGQFkaeenFTQJr:localhost:8800 ,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kjjUsMowsioSQRIJeg:localhost:8800 Q Q,Q!kjjUsMowsioSQRIJeg:localhost:8800 P P,Q!kjjUsMowsioSQRIJeg:localhost:8800 O O,Q!kjjUsMowsioSQRIJeg:localhost:8800 N N,Q!kjjUsMowsioSQRIJeg:localhost:8800 M M,Q!kjjUsMowsioSQRIJeg:localhost:8800 L L,Q!kjjUsMowsioSQRIJeg:localhost:8800 K K,Q!kjjUsMowsioSQRIJeg:localhost:8800 J J+Q !kjjUsMowsioSQRIJeg:localhost:8800 I IZ,Q!kOmCTyiizHqfCJdhlR:localhost:8800 ] ],Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800+Q !kwXxkGQFkaeenFTQJr:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800 ,Q!krhefVncoErkCtnvsy:localhost:8800 P\ Z  l  v"20FP$fe/Q ]$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMom.room.join_rules!BKZJsoFNhiLTDYNclB:localhost:8800m6m7@anon-20191002_181700-720:localhost:8800&ee3Q ]$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUm.room.power_levels!BKZJsoFNhiLTDYNclB:localhost:8800m2m3@anon-20191002_181700-720:localhost:8800 de'Q ]$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0m.room.member!BKZJsoFNhiLTDYNclB:localhost:8800m/m/@anon-20191002_181700-720:localhost:8800c e'Q  ]$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkm.room.create!BKZJsoFNhiLTDYNclB:localhost:8800m+m,J@anon-20191002_181700-720:localhost:8800 be'Q ]$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgm.room.member!aiOswwhoZqjhcjzbzc:localhost:8800m!Gm!@anon-20191002_181700-719:localhost:8800 ae'Q ]$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760m.room.member!aiOswwhoZqjhcjzbzc:localhost:8800m1m@anon-20191002_181700-718:localhost:8800&`e3Q ]$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Nsm.room.guest_access!aiOswwhoZqjhcjzbzc:localhost:8800m@m@anon-20191002_181700-718:localhost:8800,_e?Q ]$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkm.room.history_visibility!aiOswwhoZqjhcjzbzc:localhost:8800mmr@anon-20191002_181700-718:localhost:8800$^e/Q ]$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAm.room.join_rules!aiOswwhoZqjhcjzbzc:localhost:8800m[m@anon-20191002_181700-718:localhost:8800&]e3Q ]$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_Am.room.power_levels!aiOswwhoZqjhcjzbzc:localhost:8800mm@anon-20191002_181700-718:localhost:8800 \e'Q ]$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wm.room.member!aiOswwhoZqjhcjzbzc:localhost:8800mm@anon-20191002_181700-718:localhost:8800[ e'Q  ]$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsom.room.create!aiOswwhoZqjhcjzbzc:localhost:8800m hm @anon-20191002_181700-718:localhost:8800 Ze'Q ]$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsm.room.member!IYxUkyFHOgvhLpdkOA:localhost:8800mm@anon-20191002_181700-717:localhost:8800,Ye?Q ]$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8m.room.history_visibility!IYxUkyFHOgvhLpdkOA:localhost:8800mmg@anon-20191002_181700-716:localhost:8800$Xe/Q ]$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4m.room.join_rules!IYxUkyFHOgvhLpdkOA:localhost:8800mm@anon-20191002_181700-716:localhost:8800&We3Q ]$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYm.room.power_levels!IYxUkyFHOgvhLpdkOA:localhost:8800m$m~@anon-20191002_181700-716:localhost:8800 Ve'Q ]$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3Im.room.member!IYxUkyFHOgvhLpdkOA:localhost:8800mPm@anon-20191002_181700-716:localhost:8800U e'Q  ]$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMm.room.create!IYxUkyFHOgvhLpdkOA:localhost:8800mm(@anon-20191002_181700-716:localhost:8800$Te/Q ] $5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAm.room.join_rules!yWhIsLsgNVGcnELrDS:localhost:8800 m^m@anon-20191002_181700-710:localhost:8800 Se'Q ]$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6Im.room.member!anErKtXIsVKEEsrzWM:localhost:8800mm@anon-20191002_181700-715:localhost:8800,Re?Q ]$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0m.room.history_visibility!anErKtXIsVKEEsrzWM:localhost:8800m݈m@anon-20191002_181700-714:localhost:8800$Qe/Q ]$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkm.room.join_rules!anErKtXIsVKEEsrzWM:localhost:8800m?mz@anon-20191002_181700-714:localhost:8800&Pe3Q ]$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSom.room.power_levels!anErKtXIsVKEEsrzWM:localhost:8800mQmy@anon-20191002_181700-714:localhost:8800 Oe'Q ]$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyom.room.member!anErKtXIsVKEEsrzWM:localhost:8800mml@anon-20191002_181700-714:localhost:8800  R+eQa1$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 693, "stream_ordering": 3667}{"auth_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo", "$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk"], "prev_events": ["$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0"], "type": "m.room.member", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-715:localhost:8800", "content": {"membership": "join", "displayname": "ILZFEUMGMNVXCRVUDWRW", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-715:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043847332, "hashes": {"sha256": "cJP5AtZlrcb/8A3D6Nnt9GDkpZRbCySM891Y5w6jRxU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rDpsJLmGHptfzuKszWUUrQ8NkWweWZP3NJl3ghIWQO+kq25l9PIBrow5ECH8PRv96tUReThdsIs+I1NL9sY7CA"}}, "unsigned": {"age_ts": 1570043847332}}*eQa$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3666}{"auth_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo", "$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "prev_events": ["$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk"], "type": "m.room.history_visibility", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043846024, "hashes": {"sha256": "57dfby7qMDN7r9ahrDo55NaKzWdSwHm8zdS7Mu7T1Zw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cmrD6CXBM9O92j+9XM0nyKubXxluNvFylSqHgjIWwG6ZGt3N0vDDBdO6QlqvA89BsYIpCbN8hcq+vzZRJ5l/Aw"}}, "unsigned": {"age_ts": 1570043846024}}t)eQau$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3665}{"auth_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo", "$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "prev_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo"], "type": "m.room.join_rules", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043845183, "hashes": {"sha256": "jFRPBjfo90Wzn+K9fxoAjkcQFTRUE5WTBPVNvsWIrhA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dw5p7UnHvfDaXLcv1+6NXLDb4ZwUmEVHtWwTHYjL0UltHFEyqOGkb6Ds72Jvo0dPqN++oW95LGzi+MPNgWh7Ag"}}, "unsigned": {"age_ts": 1570043845183}}k(eQac$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3664}{"auth_events": ["$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "prev_events": ["$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "type": "m.room.power_levels", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"users": {"@anon-20191002_181700-714:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043844433, "hashes": {"sha256": "Dxpk1/3bQsnm06+3ZhK333vybnVWJB1UVydG9Kg0Wlk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YjKf1zYp8XNvNhsCrKM2A72o7y/bmZVki5pa4MMdax8NnAl66N25ynggInYxb7GP85XacSBW2DQkHkjiPy5OAw"}}, "unsigned": {"age_ts": 1570043844433}}  4 k 9md]c@anon-20191002_181700-748:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgo127.0.0.1d]c@anon-20191002_181700-747:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwo127.0.0.1d]c@anon-20191002_181700-746:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-Ao127.0.0.1d]c@anon-20191002_181700-745:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6Pzrwo127.0.0.1d]c@anon-20191002_181700-744:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8Qo127.0.0.1d]c@anon-20191002_181700-743:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQo127.0.0.1d]c@anon-20191002_181700-742:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45Hwo127.0.0.1a[a@anon-20191002_181700-73:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8Cg127.0.0.1=d]c@anon-20191002_181700-736:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgo127.0.0.1d]c@anon-20191002_181700-735:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAo127.0.0.1d]c@anon-20191002_181700-734:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAo127.0.0.1 Me n  # , / QT14V&/WTMd0Q' eq!biBIcqnGelHvLnpkOu:localhost:8800m.room.create$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc/Q? eep!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g .Q']eo!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokp-Q? en!yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibility$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8h,Q/ em!yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rules$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYj+Q3 el!yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k *Q']ek!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8d)Q' ej!yNfCaBMPezurwkJRAX:localhost:8800m.room.create$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs(Q? eei!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk 'Q']eh!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4p&Q? eg!BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibility$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYh%Q/ ef!BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rules$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoj$Q3 ee!BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU #Q']ed!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0d"Q' ec!BKZJsoFNhiLTDYNclB:localhost:8800m.room.create$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk8!Q']eeb!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 Q']ea!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760jQ3 e`!aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_access$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4NspQ? e_!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkhQ/ e^!aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rules$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAjQ3 e]!aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A Q']e\!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wdQ' e[!aiOswwhoZqjhcjzbzc:localhost:8800m.room.create$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso Q']eZ!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNspQ? eY!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibility$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8hQ/ eX!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rules$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4jQ3 eW!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY Q']eV!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IdQ' eU!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.create$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMQ/ eeT!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ Q']eS!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IpQ? eR!anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibility$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 s E Xsk/eQac$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3671}{"auth_events": ["$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "prev_events": ["$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "type": "m.room.power_levels", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"users": {"@anon-20191002_181700-716:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043852836, "hashes": {"sha256": "x1ovo8suqXRL7ZcevzBoNZ1KXV72WVqOFtcSq308CqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JYMjnGq6h8bgfiiFEElhdf8pTooq8W66qcTXzEzVJVvk6Ex3kBXweO7IC5PMH3WQEQVfvV9r+VtaYAfS9CjjCw"}}, "unsigned": {"age_ts": 1570043852836}}r.eQaq$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3670}{"auth_events": ["$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM"], "prev_events": ["$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM"], "type": "m.room.member", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"membership": "join", "displayname": "MJNQECZFMFOOTUTQHDEM", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-716:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043852112, "hashes": {"sha256": "GhhBUz5ErSheUK9cAbaGbDhyXmoiK05p8Ri83bwkhyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oaql4wGzZmRCCboqlUmtl0UiHjHtrI9QQ7XiApgS8enXULceZBztaAOJKeTN8wtXaqYmDE8mBeF6fs9B177WAQ"}}, "unsigned": {"age_ts": 1570043852112}}i-eQa_$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3669}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-716:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043851224, "hashes": {"sha256": "OIoijFptXM5IpojmRV7D2rM8eRM/aaO4/kbpNwnC86U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "25F+C/0EIoTkCMp0ZDkBiS+mOVFu4VE0pwwTlTQt6vX8xnnBa9bh45eMyqJ+bJ9uSFJbGEjiwbise2c//NprDg"}}, "unsigned": {"age_ts": 1570043851224}}7,eQa{$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3668}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ"], "type": "m.room.join_rules", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"join_rule": "invite"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043848542, "hashes": {"sha256": "CqJtirukVoe1BU1KrSBmawWguZBE6jwZkoZIZWFqSY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LGxNcoGvUsQOFnw2p3F8trEQGJZxmeXkQAE+QEWSCoffGLWh6GsWm6QcxfHlNI2NS+LZoCXEPzzHf4XU0JPlCw"}}, "unsigned": {"age_ts": 1570043848542, "replaces_state": "$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ"}} a} { y w u sqomkigeca~reeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~qeeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~peeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800~oeeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~neeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~meeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~leeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~keeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~jeeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~ieeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~heeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~geeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~feeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~eeeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~deeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~ceeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~beeQ$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~aeeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800~`eeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~_eeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800~^eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800~]eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~\eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800~[eeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800~ZeeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~YeeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800~XeeQ$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800~WeeQ$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~VeeQ$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~UeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~TeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800 ?y K! 000000000 ?q  0 378018170022019100227913578312800+anon+stest localhost+T  0 710181700?20191002?72673012345678800729anon?eagtvmrmbzancbkypgobgshkmoxhvobriytdhtieilohrmoxohifuhdijranjkfbucgcehwwkasrvnah localhost=rjatoaiytixpibsxdzqdsiqeqjquxkkspcjkorznuxashyodwfcqeapttqysvbkuvyhgdoterlmjkiknL  0 702181700?20191002?71892234567898800=anon?rxgzcnjyixafeyvommseftsghshtsnxholbsbgxfzlmwkxflbfuarzowwmcgnplvpmszmjsvrmaeuvsjkfbucgcehwwkasrvnahslipxugqhacxickvtrl localhost=miledciunxumwfeesqlvyxanmqqxnldnmdaeawbap P 0 738181700G20191002G73742346750124578800C29anonGzzdhjbdyohrrtkdirlpbabsirrxcuhnifzhyfmbfkocvhirtcipswjbhvgojyngoismlxvdwpdrvncslibvracxdtfhbvraeyiuocalhostCqldsioxvctasbpkyrnhiwnmmsfhzobuaigukxedsrmN0 97181700201910028800astest localhost[ & 0 461181700@20191002@7578623788799188007anon@ localhost7 g i ih5 4 g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2Ao҂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAoڂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQo؂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQoׂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgoւ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1QoՂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQoԂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwoӂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQoт1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQo܂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAo g * T~=gg6]!c@anon-20191002_181700-727:localhost:8800NCKNSWYLRRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwog5]!c@anon-20191002_181700-725:localhost:8800PPTZJMVRMQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAog4]!c@anon-20191002_181700-724:localhost:8800LOLQJOGTTUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAog3]!c@anon-20191002_181700-723:localhost:8800JIVAFIIFHNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwog2]!c@anon-20191002_181700-722:localhost:8800IZTIXMADAYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAog1]!c@anon-20191002_181700-721:localhost:8800BHJHLJEYAGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAog0]!c@anon-20191002_181700-720:localhost:8800CJYSUKRSXNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAog/]!c@anon-20191002_181700-718:localhost:8800LCLSEHKRUGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFDaFB1bS5vcUt-cXFTc1AKMDAyZnNpZ25hdHVyZSBuUwjAdastvQZGSYHyizirOyLuiIQKBqJADs7r5j1Egwog.]!c@anon-20191002_181700-719:localhost:8800ERYCEGRJPTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdAVy5KOWssdCxtcVdyd3cKMDAyZnNpZ25hdHVyZSAgraxxc6q5U_7VMbu5yfxGyGqUF06nK-jKqT7xjrhzOgog-]!c@anon-20191002_181700-717:localhost:8800JZHRILWPLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZaYmY7VzoyaS5hT3UsRUsKMDAyZnNpZ25hdHVyZSCFQhHrZ-LTwiiiDge5GCVdrykrXQfkhmWf_Bbg0OR1Agog,]!c@anon-20191002_181700-716:localhost:8800ATBUACMSGRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4wOkx5ZmMuQitWbVU4LFoKMDAyZnNpZ25hdHVyZSCU0_9O6ALCEUu0OKMtSUgn0PKtFCpELylK1hj4uM_J9wo q ~|vq>Q]e!KxhGcTbEWmtgGNpdox:localhost:8800@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ainvite=Q]e!KxhGcTbEWmtgGNpdox:localhost:8800@anon-20191002_181700-102:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsjoin<Q]e!HmkcAMkMjWRhTDJMsy:localhost:8800@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIleave;Q]e!HmkcAMkMjWRhTDJMsy:localhost:8800@anon-20191002_181700-101:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAleave:Q[e!OMkiVTuuOEeiFAXtUY:localhost:8800@anon-20191002_181700-99:localhost:8800$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncleave9Q[e!BrssELMbasSzTFpIXm:localhost:8800@anon-20191002_181700-96:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQleave8Q[e!BrssELMbasSzTFpIXm:localhost:8800@anon-20191002_181700-97:localhost:8800$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUleave~7Q[e!RmdhCjvouVLmyIHjaM:localhost:8800@anon-20191002_181700-95:localhost:8800$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcjoin~6Q[e!EyEaTZElOkdURKbEXo:localhost:8800@anon-20191002_181700-93:localhost:8800$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPojoin5Q[e!TWETXUgfFZafDdbqLS:localhost:8800@anon-20191002_181700-90:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0leave~4Q[e!TWETXUgfFZafDdbqLS:localhost:8800@anon-20191002_181700-91:localhost:8800$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8join~3Q[e!HAFNBarGuVZuWCgwWM:localhost:8800@anon-20191002_181700-89:localhost:8800$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQjoin~2Q[e!duCKuavMBSfRbTFPsc:localhost:8800@anon-20191002_181700-87:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOYjoin~1Q[e!duCKuavMBSfRbTFPsc:localhost:8800@anon-20191002_181700-86:localhost:8800$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMjoin~0Q[e!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-85:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yojoin~/Q[e!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-84:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMjoin~.Q[e!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-83:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgjoin~-Q[e!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-82:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgjoin~,Q[e!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8ojoin~+Q[e!OSHhtkGUjpUCkXwIhj:localhost:8800@anon-20191002_181700-79:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4join~*Q[e!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAjoin~)Q[e!wnriPzXkIMmdTNoJKU:localhost:8800@anon-20191002_181700-75:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Ajoin~(Q[e!jfshVGNDxkvqPxFxWB:localhost:8800@anon-20191002_181700-74:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMjoin~'Q[e!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-71:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgjoin~&Q[e!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-70:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4join~%Q[e!GGTWnzJfvPQBgQqDIE:localhost:8800@anon-20191002_181700-68:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkjoin~$Q[e!cosGKKhHvKaVukBCic:localhost:8800@anon-20191002_181700-67:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMjoin~#Q[e!rZWweGEChkxxtzyfDB:localhost:8800@anon-20191002_181700-64:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgjoin~"Q[e!rZWweGEChkxxtzyfDB:localhost:8800@anon-20191002_181700-65:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIjoin~!Q[e!uJtKGXTNdEnCPNOGDx:localhost:8800@anon-20191002_181700-63:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAjoin~ Q[e!vJQYmOxOBLwFKzYkNj:localhost:8800@anon-20191002_181700-62:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEjoin "i.1 @ n  z  GJY)WZi eQ']$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800aeQ' $iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create eQ']$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800meQ? $4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibilityeeQ/ $px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rulesgeQ3 $O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels eQ']$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800a eQ' $-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800m.room.createm eQ? $DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility eQ']$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800m eQ? $_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibilityeeQ/ $S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rulesgeQ3 $DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels eQ']$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800aeQ' $I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800m.room.createmeQ? $vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility eQ']$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800meQ? $F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibilityeeQ/ $nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rulesgeQ3 $gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels eQ']$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800a~eQ' $7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800m.room.create }eQ']$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800 |eQ']$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800g{eQ3 $RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_accessmzeQ? $3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibilityeyeQ/ $HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rulesgxeQ3 $tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels weQ']$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800aveQ' $Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800m.room.create ueQ']$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800mteQ? $8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibilityeseQ/ $bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rulesgreQ3 $_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels :F`2zLvHb4 | N h : T & n @  Z ,t-]@anon-20191002_181700-112:localhost:8800-]@anon-20191002_181700-112:localhost:8800v-]@anon-20191002_181700-112:localhost:8800l-]@anon-20191002_181700-112:localhost:8800c-]@anon-20191002_181700-112:localhost:8800Y-]@anon-20191002_181700-112:localhost:8800O-]@anon-20191002_181700-111:localhost:8829M-]@anon-20191002_181700-110:localhost:8800E-]@anon-20191002_181700-109:localhost:8800G-]@anon-20191002_181700-109:localhost:8800?-]@anon-20191002_181700-108:localhost:8800=-]@anon-20191002_181700-107:localhost:88009-]@anon-20191002_181700-106:localhost:88004-]@anon-20191002_181700-105:localhost:88292-]@anon-20191002_181700-104:localhost:8800,-]@anon-20191002_181700-103:localhost:8800*-]@anon-20191002_181700-150:localhost:8800-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-148:localhost:8829-]@anon-20191002_181700-147:localhost:8829-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800 -]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-140:localhost:8800-]@anon-20191002_181700-139:localhost:8829-]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-131:localhost:8800-]@anon-20191002_181700-130:localhost:8800-]@anon-20191002_181700-129:localhost:8800-]@anon-20191002_181700-128:localhost:8800-]@anon-20191002_181700-127:localhost:8800-]@anon-20191002_181700-126:localhost:8800-]@anon-20191002_181700-125:localhost:8800-]@anon-20191002_181700-124:localhost:8800-]@anon-20191002_181700-123:localhost:8800-]@anon-20191002_181700-120:localhost:8800-]@anon-20191002_181700-119:localhost:8800-]@anon-20191002_181700-118:localhost:8800-]@anon-20191002_181700-117:localhost:8800-]@anon-20191002_181700-116:localhost:8800-]@anon-20191002_181700-115:localhost:8800-]@anon-20191002_181700-114:localhost:8800-]@anon-20191002_181700-113:localhost:8800-]@anon-20191002_181700-113:localhost:8800-]@anon-20191002_181700-113:localhost:8800|-]@anon-20191002_181700-113:localhost:8800r-]@anon-20191002_181700-113:localhost:8800i-]@anon-20191002_181700-113:localhost:8800_-]@anon-20191002_181700-113:localhost:8800U-]@anon-20191002_181700-112:localhost:8800 !$/ 4 X ] h m */SR] uQ']e !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cctQ' e !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg sQ']e !biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkorQ? e !biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibility$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980gqQ/ e !biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rules$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8ipQ3 e !biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q oQ']e !biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAcnQ' e !biBIcqnGelHvLnpkOu:localhost:8800m.room.create$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcomQ? e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 lQ']e !yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokokQ? e !yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibility$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8gjQ/ e !yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rules$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYiiQ3 e !yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k hQ']e !yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8cgQ' e !yNfCaBMPezurwkJRAX:localhost:8800m.room.create$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsofQ? e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g eQ']e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4odQ? e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibility$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYgcQ/ e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rules$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoibQ3 e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU aQ']e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0c`Q' e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.create$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk _Q']e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg ^Q']e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760i]Q3 e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_access$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Nso\Q? e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkg[Q/ e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rules$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAiZQ3 e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A YQ']e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wcXQ' e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.create$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso WQ']e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsoVQ? e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibility$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8gUQ/ e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rules$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 < )<i3eQa_$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3675}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-718:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043858024, "hashes": {"sha256": "UMydgzeSBQuWHR40pU5F/nBMAvqfu5IaCVyuqapyAcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DFHMHteUwkPeJR0bCA58doO7iptOILma0HcMLgxb8M2RQmmSm9Jum5/r1rCWt+hNPdZ27dwtFMA3ydsZsLubCA"}}, "unsigned": {"age_ts": 1570043858024}}R2eQa1$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 695, "stream_ordering": 3674}{"auth_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY", "$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4"], "prev_events": ["$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8"], "type": "m.room.member", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-717:localhost:8800", "content": {"membership": "join", "displayname": "HMVWDTIFKRGHQBGEGHRH", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-717:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043855748, "hashes": {"sha256": "GfHc9IHbXR8XKOq4t0BJiZaRziR2NKBMIzbCMUBpYwU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IRq3q4J37wwmtWPRT2GcP4NFzYIUcqJn5gYAbIaZyArHA3tGTBFRVAu4dVnZ8bIOHZTuLO2Eb9fFqe8wuTSxBg"}}, "unsigned": {"age_ts": 1570043855748}}1eQa$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3673}{"auth_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY", "$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "prev_events": ["$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4"], "type": "m.room.history_visibility", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043854549, "hashes": {"sha256": "9uCM/hkYA49ufZPFfKo66QQU+f8Quh2oWdvS4ZKkA+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8AY2ZflOqUrhOzWyge6ivZTJbCYO0Pfuu6LGH7aerQd/AVRVfOR6XVPvgyu6G+yTS36GUtB90igxtJ+nMCtrDw"}}, "unsigned": {"age_ts": 1570043854549}}t0eQau$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3672}{"auth_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY", "$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "prev_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY"], "type": "m.room.join_rules", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043853742, "hashes": {"sha256": "CxEcRA1ntorz1yrAy9ZkCQwgzKgegl2ZbrITj2DGyGw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uK3pUmdBOx8lRNl+cOaEbyc4P8lE53KIGZfpY9A+MkgltnwHNnRaDVyAWxK5RT5/M7lP2LPuYsahKfLret+DCw"}}, "unsigned": {"age_ts": 1570043853742}} (0j8p> v D  | J  P  0 V $ \ *b1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A -1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY 1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkJ1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ K1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ/1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY *1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A v1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI-1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI*1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsn1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 B1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIK1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 61e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo&  7eQa$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3679}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA"], "type": "m.room.history_visibility", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043860899, "hashes": {"sha256": "Q3Fk9kJXg+p2ZOT4q59BS+rMlW6ZId3aRkk0IRllxIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zrrTovjLlzBDAuaQ3EU9TMIPBV/nVXIloBJ7ojKrin2ne2WPdnhIIH2+ecPQi04iAhpVtSHkFUhJr9yPFQXHDQ"}}, "unsigned": {"age_ts": 1570043860899}}t6eQau$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3678}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A"], "type": "m.room.join_rules", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043860059, "hashes": {"sha256": "OMdcsnQg1CGs6FuxQ57WmDgZG0pbNjbbtnbDzfTbYNc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kv7DMHKl5XwScx5cKnlQm9f3k88TM2GLXObeYc55vD8C8JpCK/8XVBHPtgU5//N4QVofhghHYUgqg4ZI7xvQDw"}}, "unsigned": {"age_ts": 1570043860059}}k5eQac$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3677}{"auth_events": ["$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "type": "m.room.power_levels", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"users": {"@anon-20191002_181700-718:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043859343, "hashes": {"sha256": "dWRFaQMOKnw7gxZaeC6lcIn5rtm8sGVUYo5/MJYzEQM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "snp35OFhlDoMNG+Mq7aEJ3vAbIAl830GVcuDpaElJiBSFZI7I5eLjlkMyW4AdtUx3EUuTcssTmixxXqUeKeNDg"}}, "unsigned": {"age_ts": 1570043859343}}v4eQay$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3676}{"auth_events": ["$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso"], "prev_events": ["$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso"], "type": "m.room.member", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-718", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-718:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043858703, "hashes": {"sha256": "9tKafBTpA+RBILInf4u5+UZU2J8dhP5mt/lLNcC0HX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mxV3zt//tggvaJQ3wb4AHxgp0XdAa2gETpEAQCumLZwu0u06aOwQ2KsKV7rscawyrezf57N0bNxNlNT4RyqWCA"}}, "unsigned": {"age_ts": 1570043858703}} Vn/x-Z?lO4rO_B n Q 6  [ > # H +  X ; b K rW4w8l}]@%wj>'] m.room.member@anon-20191002_181700-712:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-711:localhost:8800 "?  8m.room.history_visibility /  7m.room.join_rules 3  6m.room.power_levels >'] 5m.room.member@anon-20191002_181700-732:localhost:8800 '  4m.room.create /  3m.room.join_rules >'] 2m.room.member@anon-20191002_181700-731:localhost:8800 "?  1m.room.history_visibility 3  /m.room.power_levels /  m.room.join_rules >'] m.room.member@anon-20191002_181700-715:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-714:localhost:8800 '  m.room.create /  m.room.join_rules >'] m.room.member@anon-20191002_181700-713:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-711:localhost:8800 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-710:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules /  0m.room.join_rules >'] .m.room.member@anon-20191002_181700-730:localhost:8800 '  -m.room.create "?  ,m.room.history_visibility /  +m.room.join_rules >'] *m.room.member@anon-20191002_181700-729:localhost:8800 "?  )m.room.history_visibility /  (m.room.join_rules 3  'm.room.power_levels >'] &m.room.member@anon-20191002_181700-728:localhost:8800 '  %m.room.create >'] $m.room.member@anon-20191002_181700-727:localhost:8800 >'] #m.room.member@anon-20191002_181700-727:localhost:8800 3  "m.room.guest_access "?  !m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-726:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-725:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-724:localhost:8800 '  m.room.create "?  m.room.history_visibility >'] m.room.member@anon-20191002_181700-723:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-722:localhost:8800 '  m.room.create "?  m.room.history_visibility >'] m.room.member@anon-20191002_181700-721:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-720:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-719:localhost:8800 >'] m.room.member@anon-20191002_181700-719:localhost:8800 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-718:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-717:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-716:localhost:8800 '  m.room.create  D:eQa$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 696, "stream_ordering": 3682}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA", "$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760"], "prev_events": ["$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760"], "type": "m.room.member", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-719:localhost:8800", "content": {"membership": "join", "displayname": "MILEDCIUNXUMWFEESQLV", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-719:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043863367, "hashes": {"sha256": "cyYjmSsYE1Td7txqtvDFk3yfZ9BWlGgO4qKYsQKF8iI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "buklPhPCx9se1MXD1Jh18R8iF/WUqdDC82mLHSymyExReqGU+ubT3I/uFukuh5qWN1if+djXCzZkVZxc/GL2AA"}}, "unsigned": {"age_ts": 1570043863367, "replaces_state": "$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760"}}9eQa/$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3681}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns"], "type": "m.room.member", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"membership": "invite", "displayname": "MILEDCIUNXUMWFEESQLV", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-719:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043862577, "hashes": {"sha256": "bQNqh9EwygvSDWM8vTcyMNpp6xW+BPRRqnvMtgbnq8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C+d5io20iCD1NVpkSFx6n8O+4fn6fpcov0hElRS92Lg5d4iKY+qpHSpYy27agisMDOhuM4Hx4pzyiJMzdhFvAA"}}, "unsigned": {"age_ts": 1570043862577, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-718:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-718:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-718", "avatar_url": null}, "sender": "@anon-20191002_181700-718:localhost:8800"}]}}{8eQa$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3680}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk"], "type": "m.room.guest_access", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043861568, "hashes": {"sha256": "Z9dStzmVR58ozEwXvsitr7m52i5bYFbrycD2+deW7uo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EpyY1mVxlyXZGtPzrHKhBp+GiEnjApVbYAY8pERMEAjo1OQ9qYrnN722E861m7xJHc5QFPeTw7kcJOJuRb2yAQ"}}, "unsigned": {"age_ts": 1570043861568}} F|t n f ^ VF NeeQ$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800 `eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800 FeeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800weeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800PeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800CeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800LeeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800 ^eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:88294eeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800 0|pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8, xl`TH<0 m4} m4| m4{ m4z m4y m4x m4w m4v m4u m4t m4s m4r m4q m4p m4o m4n m4m m4l m4k m4j m4i m4h m4g m4f m4e m4d m4c m4b m4a m4` m4_ m4^ m4] m4\ m4[ m4Z m4Y m4X m4W m4V m4U m4T m4S m4R m4Q m4P m4O m4N m4M m4L m4K m4J m4I m4H m4G m4F m4E m4D m4C m4B m4A m4@ m4? m4> m4= m4< m4; m4: m49 m48 m47 m46 m45 m44 m43 m42 m41 m40 m4/ m4. m4- m4, m4+ m4* m4) m4( m4' m4& m4% m4$ m4# m4" m4! m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 a} { y w u sqomkigeca~eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800~eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800~~eeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800~}eeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~|eeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800~{eeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800~zeeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~yeeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800~xeeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800~weeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~veeQ$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~ueeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800~teeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800~seeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800 /a,X% 7c.  U " W $ X % Y ' [ (l4]@anon-20191002_181700-720:localhost:8800m4}4]@anon-20191002_181700-719:localhost:8800m4|4]@anon-20191002_181700-718:localhost:8800m4{4]@anon-20191002_181700-717:localhost:8800m4z4]@anon-20191002_181700-716:localhost:8800m4y4]@anon-20191002_181700-715:localhost:8800m4x4]@anon-20191002_181700-714:localhost:8800m4w4]@anon-20191002_181700-713:localhost:8800m4v4]@anon-20191002_181700-712:localhost:8800m4u#=@spyglass:localhost:8800m4O1Y@anon-20191002_181700-9:localhost:8800m4N2[@anon-20191002_181700-99:localhost:8800m42[@anon-20191002_181700-97:localhost:8800m4~2[@anon-20191002_181700-96:localhost:8800m4}2[@anon-20191002_181700-95:localhost:8800m4M2[@anon-20191002_181700-93:localhost:8800m4L2[@anon-20191002_181700-91:localhost:8800m4K2[@anon-20191002_181700-90:localhost:8800m4J1Y@anon-20191002_181700-8:localhost:8800m4I2[@anon-20191002_181700-89:localhost:8800m4H2[@anon-20191002_181700-88:localhost:8800m4G2[@anon-20191002_181700-87:localhost:8800m4F2[@anon-20191002_181700-86:localhost:8800m4E2[@anon-20191002_181700-85:localhost:8800m4D2[@anon-20191002_181700-84:localhost:8800m4C2[@anon-20191002_181700-83:localhost:8800m4B2[@anon-20191002_181700-82:localhost:8800m4A2[@anon-20191002_181700-81:localhost:8800m4@2[@anon-20191002_181700-80:localhost:8800m4?1Y@anon-20191002_181700-7:localhost:8800m4>2[@anon-20191002_181700-79:localhost:8800m4=2[@anon-20191002_181700-77:localhost:8800m4<2[@anon-20191002_181700-75:localhost:8800m4;2[@anon-20191002_181700-74:localhost:8800m4:2[@anon-20191002_181700-73:localhost:8800m492[@anon-20191002_181700-71:localhost:8800m484]@anon-20191002_181700-711:localhost:8800m4t4]@anon-20191002_181700-710:localhost:8800m4s2[@anon-20191002_181700-70:localhost:8800m474]@anon-20191002_181700-709:localhost:8800m4r4]@anon-20191002_181700-708:localhost:8800m4q4]@anon-20191002_181700-707:localhost:8800m4p4]@anon-20191002_181700-706:localhost:8800m4o4]@anon-20191002_181700-705:localhost:8800m4n4]@anon-20191002_181700-704:localhost:8800m4m4]@anon-20191002_181700-703:localhost:8800m4l4]@anon-20191002_181700-702:localhost:8800m4k CG <}]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXNm4<|]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPTm4<{]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUGm4eQau$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3686}{"auth_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU", "$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "prev_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU"], "type": "m.room.join_rules", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043868692, "hashes": {"sha256": "Dq64nP5Lbfl10nVJZE7S9y2rLZZFZc1EpQB/exXSiiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SffomGiQXQh4LcF7PHuejVhnkjZgdbCTQiKync9ubre3XOnN53eJpDkbOBOGQtAMOVcb9IDXRgxZBpsIPppiAg"}}, "unsigned": {"age_ts": 1570043868692}}k=eQac$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3685}{"auth_events": ["$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "prev_events": ["$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "type": "m.room.power_levels", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"users": {"@anon-20191002_181700-720:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043867679, "hashes": {"sha256": "HYXAx8EelVyOnNq8KJW4fhJFigf2UbzXr5QjqLI5w70"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9yyBPPrhQ0gezryKbM0JYQBnVNYlpfggkBef8cpGsZc4/xyheJ1F424T4Rvwi5VnTbkJh4Rfn5ushPJsMGN+Ag"}}, "unsigned": {"age_ts": 1570043867679}}r<eQaq$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3684}{"auth_events": ["$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk"], "prev_events": ["$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk"], "type": "m.room.member", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"membership": "join", "displayname": "XSMKELSYZZRIOKLQFSRH", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-720:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043866895, "hashes": {"sha256": "0BptawWeJ7dcezbOA99GECXqRLa74ZjAhge79KkNdg8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dgAOz36t3f0zsTofVDJoyMdUWSWRTWwlAIZhSBYMUdFFJFJLto/QVlkkJZJ6ZQZG1LvkW3wDLMDLWanL3c6MAg"}}, "unsigned": {"age_ts": 1570043866895}}i;eQa_$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3683}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-720:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043866099, "hashes": {"sha256": "ZS+EslLqzLcoFNOzvhbdiVVujmKarqi3tsdZjipTeJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZuLJDg3dTUQuY+iKfalYWL8td0gu2YD2xtUCVcpDzJai3uTUa5RDWiwRPjLcMcVht0fE6G0wv9bwa/FjybRUCg"}}, "unsigned": {"age_ts": 1570043866099}} 0`8pH X 0  h @  x P ( ` 8  p H 'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DnUHoxreGexNmjSVpq:localhost:8800S'Q!DnUHoxreGexNmjSVpq:localhost:8800R'Q!DnUHoxreGexNmjSVpq:localhost:8800Q'Q!DnUHoxreGexNmjSVpq:localhost:8800P'Q!DnUHoxreGexNmjSVpq:localhost:8800O'Q!DnUHoxreGexNmjSVpq:localhost:8800N Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1We$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I V1Ve$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk U1Ue$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 T1Te$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 S1Se$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 R1Re$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo Q1Qe$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ P1Pe$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego O1Oe$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o N1Ne$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 M1Me$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y L1Le$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 K1Ke$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU J1Je$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg I1Ie$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 H1He$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 F1Ge$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY E1Fe$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c D1Ee$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ C1De$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc B1Ce$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU A1Be$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 @1Ae$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog ?1@e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA >1?e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras =1>e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI <1=e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE ;1<e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 :1;e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E 91:e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 819e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ 718e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 617e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 516e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 415e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 314e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA 213e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM 112e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 011e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 /10e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc .1/e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo -1.e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM ,1-e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU +1,e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 *1+e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 )1*e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY (1)e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 '1(e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 &1'e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs %1&e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM $1%e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI #1$e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA "1#e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w !1"e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg 1!e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1 e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc 1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1 e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU ~z v r n j fb^ZVRNJFeeQ$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800~eeQ$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800}eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800|eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800{eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800zeeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800yeeQ$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800xeeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800weeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800veeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800ueeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800teeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800seeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800reeQ$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800qeeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800peeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800oeeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800neeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800meeQ$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800leeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800keeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800jeeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800ieeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800heeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800geeQ$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800feeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800eeeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800deeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800ceeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800beeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800  O p u .- e j  INvDOOOa4eQ' $IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800m.room.create 3eQ']$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800joing2eQ3 $bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_accessg/eQ3 $yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels .eQ']$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800joina-eQ' $iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create ,eQ']$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800joinm+eQ? $4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibilitye*eQ/ $px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rulesg)eQ3 $O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels (eQ']$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800joina'eQ' $-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800m.room.createm&eQ? $DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility eQ']$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800joinaeQ' $7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800m.room.create eQ']$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800joingeQ3 $RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_accesseeQ/ $HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rulesgeQ3 $tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels eQ']$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800join eQ']$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800join %eQ']$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800joinm$eQ? $_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibilitye#eQ/ $S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rulesg"eQ3 $DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels !eQ']$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800joina eQ' $I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800m.room.createaeQ' $Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800m.room.create eQ']$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800joinmeQ? $F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibilityeeQ/ $nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rulesgeQ3 $gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels  wiBeQa_$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3690}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-722:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043874660, "hashes": {"sha256": "mO3PtNAkRO4ClQbj9aGRy5+tYSZQqoyMKFn5SnL7egE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z6rHmG5lfjCiryGaQtHn3gKhdF7/js3A1JvuIXp8YI/hEHeebixkCzU8mQSAUhihXOki5sASF8RK7agOmdV0Cw"}}, "unsigned": {"age_ts": 1570043874660}}OAeQa+$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3689}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg"], "type": "m.room.history_visibility", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043871869, "hashes": {"sha256": "Nm4wyaU8LdBmET6xNKq+Cf7hzMVrJZWYI6Ea4BpOPhc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8pS0mt8dCn/yamZwARhvO5Chfs3KcskV2Ye/5TRSdoCEombtPfsQCAvKXms7b7+wvV/pajfYJNm+4rvkAVJoCA"}}, "unsigned": {"age_ts": 1570043871869, "replaces_state": "$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk"}}R@eQa1$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 699, "stream_ordering": 3688}{"auth_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU", "$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo"], "prev_events": ["$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY"], "type": "m.room.member", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-721:localhost:8800", "content": {"membership": "join", "displayname": "XOISPAUOSHVJCWENJUUS", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-721:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043870822, "hashes": {"sha256": "ivUjPlivrOPEkOBvo2r1VjqekE55VUWvWOiXs3I48sc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gMLF4Wy9E/GiDNPTKIDMYKXhg0PCRqn2jLC5BnuUbBe1PiKN9J5k6POFZZW4IGHTmzxJhpkXymaoTrXP6Zh8Dg"}}, "unsigned": {"age_ts": 1570043870822}}?eQa$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3687}{"auth_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU", "$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "prev_events": ["$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo"], "type": "m.room.history_visibility", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043869509, "hashes": {"sha256": "LZkl/WbbAyi71dErzjM+XceIJYivO/EgHrujvUtTMNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UjQ/LsFj8aNefyWzxPMEGtGHPuMXXOoR7WRQzgk/1DjyChgGCILgklCb/Wz35mtCTvrQtEWQaH6Rcq3MbFgpDw"}}, "unsigned": {"age_ts": 1570043869509}} :P Z d  `pt.,: ~e'Q ]$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMm.room.member!NcJYmIbgjsaKJOzBcs:localhost:8800m8m蟵@anon-20191002_181700-727:localhost:8800 }e'Q ]$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIm.room.member!NcJYmIbgjsaKJOzBcs:localhost:8800mum@anon-20191002_181700-726:localhost:8800&|e3Q ]$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAm.room.guest_access!NcJYmIbgjsaKJOzBcs:localhost:8800mm@anon-20191002_181700-726:localhost:8800,{e?Q ]$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wm.room.history_visibility!NcJYmIbgjsaKJOzBcs:localhost:8800mm@anon-20191002_181700-726:localhost:8800$ze/Q ]$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegm.room.join_rules!NcJYmIbgjsaKJOzBcs:localhost:8800mm@anon-20191002_181700-726:localhost:8800&ye3Q ]$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUm.room.power_levels!NcJYmIbgjsaKJOzBcs:localhost:8800m荪m@anon-20191002_181700-726:localhost:8800 xe'Q ]$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cm.room.member!NcJYmIbgjsaKJOzBcs:localhost:8800msms@anon-20191002_181700-726:localhost:8800w e'Q  ]$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgm.room.create!NcJYmIbgjsaKJOzBcs:localhost:8800mEm臡@anon-20191002_181700-726:localhost:8800 ve'Q ]$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkm.room.member!biBIcqnGelHvLnpkOu:localhost:8800m~m @anon-20191002_181700-725:localhost:8800,ue?Q ]$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980m.room.history_visibility!biBIcqnGelHvLnpkOu:localhost:8800mz m|@anon-20191002_181700-724:localhost:8800$te/Q ]$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8m.room.join_rules!biBIcqnGelHvLnpkOu:localhost:8800mvmxH@anon-20191002_181700-724:localhost:8800&se3Q ]$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qm.room.power_levels!biBIcqnGelHvLnpkOu:localhost:8800msmt@anon-20191002_181700-724:localhost:8800 re'Q ]$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAm.room.member!biBIcqnGelHvLnpkOu:localhost:8800mpmq[@anon-20191002_181700-724:localhost:8800q e'Q  ]$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcm.room.create!biBIcqnGelHvLnpkOu:localhost:8800mmmnE@anon-20191002_181700-724:localhost:8800,pe?Q ] $DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0m.room.history_visibility!aiOswwhoZqjhcjzbzc:localhost:8800 mcmc@anon-20191002_181700-718:localhost:8800 oe'Q ]$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokm.room.member!yNfCaBMPezurwkJRAX:localhost:8800m_'m_@anon-20191002_181700-723:localhost:8800,ne?Q ]$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8m.room.history_visibility!yNfCaBMPezurwkJRAX:localhost:8800mZm\+@anon-20191002_181700-722:localhost:8800$me/Q ]$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYm.room.join_rules!yNfCaBMPezurwkJRAX:localhost:8800mWmX@anon-20191002_181700-722:localhost:8800&le3Q ]$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48km.room.power_levels!yNfCaBMPezurwkJRAX:localhost:8800mTmV @anon-20191002_181700-722:localhost:8800 ke'Q ]$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8m.room.member!yNfCaBMPezurwkJRAX:localhost:8800mQOmQ@anon-20191002_181700-722:localhost:8800j e'Q  ]$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsm.room.create!yNfCaBMPezurwkJRAX:localhost:8800mMdmM@anon-20191002_181700-722:localhost:8800,ie?Q ] $vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gm.room.history_visibility!aiOswwhoZqjhcjzbzc:localhost:8800 mB}mB@anon-20191002_181700-718:localhost:8800 he'Q ]$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4m.room.member!BKZJsoFNhiLTDYNclB:localhost:8800m>fm>@anon-20191002_181700-721:localhost:8800,ge?Q ]$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYm.room.history_visibility!BKZJsoFNhiLTDYNclB:localhost:8800m9Em; @anon-20191002_181700-720:localhost:8800  4 h m9d]c@anon-20191002_181700-759:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwo127.0.0.1d]c@anon-20191002_181700-757:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAo127.0.0.1d]c@anon-20191002_181700-755:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQo127.0.0.1d]c@anon-20191002_181700-756:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwo127.0.0.1d]c@anon-20191002_181700-758:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQo127.0.0.1a[a@anon-20191002_181700-75:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCg127.0.0.1?d]c@anon-20191002_181700-754:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAo127.0.0.1d]c@anon-20191002_181700-753:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQo127.0.0.1d]c@anon-20191002_181700-752:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQo127.0.0.1d]c@anon-20191002_181700-751:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAo127.0.0.1d]c@anon-20191002_181700-750:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAo127.0.0.1 8l D `8(]c!E@anon-20191002_181700-730:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAoBGYKRDCYIR127.0.0.1Perl + Net::Async::HTTP/0.44m']c!E@anon-20191002_181700-729:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQoDNPGOQMGAF127.0.0.1Perl + Net::Async::HTTP/0.44m觏&]c!E@anon-20191002_181700-728:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAoKLYTBBZKRQ127.0.0.1Perl + Net::Async::HTTP/0.44mʃ%]c!E@anon-20191002_181700-726:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowoDOLLBVDDIP127.0.0.1Perl + Net::Async::HTTP/0.44m$]c!E@anon-20191002_181700-727:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwoNCKNSWYLRR127.0.0.1Perl + Net::Async::HTTP/0.44m膗#]c!E@anon-20191002_181700-725:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAoPPTZJMVRMQ127.0.0.1Perl + Net::Async::HTTP/0.44mmG"]c!E@anon-20191002_181700-724:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAoLOLQJOGTTU127.0.0.1Perl + Net::Async::HTTP/0.44mk!]c!E@anon-20191002_181700-723:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwoJIVAFIIFHN127.0.0.1Perl + Net::Async::HTTP/0.44mLʃ ]c!E@anon-20191002_181700-722:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAoIZTIXMADAY127.0.0.1Perl + Net::Async::HTTP/0.44mJg]c!E@anon-20191002_181700-721:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAoBHJHLJEYAG127.0.0.1Perl + Net::Async::HTTP/0.44m+6 -RM H C > 9 4/*|%w rmhc TQe!NcJYmIbgjsaKJOzBcs:localhost:8800$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90TQe!BPNyKqmwcpGxIbGFZG:localhost:8800$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1ETQe!BPNyKqmwcpGxIbGFZG:localhost:8800$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4TQe!BPNyKqmwcpGxIbGFZG:localhost:8800$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQTQe!BPNyKqmwcpGxIbGFZG:localhost:8800$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoTQe!BPNyKqmwcpGxIbGFZG:localhost:8800$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8TQe!BPNyKqmwcpGxIbGFZG:localhost:8800$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8TQe!NcJYmIbgjsaKJOzBcs:localhost:8800$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90T~Qe!ZOwibbprUCQrSJQCrx:localhost:8800$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAT}Qe!ZOwibbprUCQrSJQCrx:localhost:8800$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMT|Qe!ZOwibbprUCQrSJQCrx:localhost:8800$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0T{Qe!ZOwibbprUCQrSJQCrx:localhost:8800$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0TzQe!ZOwibbprUCQrSJQCrx:localhost:8800$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScTyQe!ZOwibbprUCQrSJQCrx:localhost:8800$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCoTxQe!NcJYmIbgjsaKJOzBcs:localhost:8800$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMTwQe!NcJYmIbgjsaKJOzBcs:localhost:8800$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUTvQe!qtelAHlSkrqEFmlCqS:localhost:8800$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8TuQe!qtelAHlSkrqEFmlCqS:localhost:8800$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0TtQe!qtelAHlSkrqEFmlCqS:localhost:8800$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYTsQe!qtelAHlSkrqEFmlCqS:localhost:8800$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4TrQe!qtelAHlSkrqEFmlCqS:localhost:8800$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00TqQe!qtelAHlSkrqEFmlCqS:localhost:8800$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsTpQe~!NcJYmIbgjsaKJOzBcs:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMToQe}!NcJYmIbgjsaKJOzBcs:localhost:8800$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PITnQe|!NcJYmIbgjsaKJOzBcs:localhost:8800$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSATmQe{!NcJYmIbgjsaKJOzBcs:localhost:8800$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wTlQez!NcJYmIbgjsaKJOzBcs:localhost:8800$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegTkQey!NcJYmIbgjsaKJOzBcs:localhost:8800$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUTjQex!NcJYmIbgjsaKJOzBcs:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cTiQew!NcJYmIbgjsaKJOzBcs:localhost:8800$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgThQev!biBIcqnGelHvLnpkOu:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkTgQeu!biBIcqnGelHvLnpkOu:localhost:8800$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980TfQet!biBIcqnGelHvLnpkOu:localhost:8800$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8TeQes!biBIcqnGelHvLnpkOu:localhost:8800$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QTdQer!biBIcqnGelHvLnpkOu:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNATcQeq!biBIcqnGelHvLnpkOu:localhost:8800$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcTbQep!aiOswwhoZqjhcjzbzc:localhost:8800$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0TaQeo!yNfCaBMPezurwkJRAX:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokT`Qen!yNfCaBMPezurwkJRAX:localhost:8800$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8T_Qem!yNfCaBMPezurwkJRAX:localhost:8800$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYT^Qel!yNfCaBMPezurwkJRAX:localhost:8800$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kT]Qek!yNfCaBMPezurwkJRAX:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8T\Qej!yNfCaBMPezurwkJRAX:localhost:8800$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsT[Qei!aiOswwhoZqjhcjzbzc:localhost:8800$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gTZQeh!BKZJsoFNhiLTDYNclB:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 ,NC 8 - { " p  e ZOD9.|#qf VkeL$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogsha256Ί` UouEܫى!'`VjeL$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAsha256Svبµ\uSGpὃiÐpVieL$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurassha256ܜid5 *Xю9 1< ,VheL$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIsha256T}'a 06Q_sVgeL$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEsha256vX8BGzA"cVfeL$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90sha256vn ]FSN!żd_R~VeeL$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Esha256?qM~CQm-mr,_BQVdeL$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4sha256{v ض.7G/c5XSlU ~ھVceL$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQsha256R ||y21uroϚ1oiVbeL$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXosha256Ti[dwq SVszVaeL$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8sha256;DZ Uՠ~TXrאJWS_V`eL$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8sha256aK eNGFG\݆SV_eL$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90sha256rMb ]dL?H1gZ;[CV^eL$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAsha256;2N ls]iEV]eL$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMsha256ևTk-7fq?f5bV\eL$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0sha256e` BO G&]H6J3c-V[eL$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0sha256J2Gu.(:۝ Mm=VZeL$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScsha256]ŷ"2pzEe>7Ty) 'VYeL$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCosha256Os2RT+!jBaDI~(:*VXeL$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMsha256lj gƚ2%/D! ;VWeL$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUsha256xe Pz GB>aJ+=:VVeL$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8sha256 A kH);Vu =uʘ VUeL$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0sha256*~)u[@,A2vA G/)VTeL$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYsha256).;f C8gycŒzʹgVSeL$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4sha256*l.yyvVm`ST֨&'VReL$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00sha256!"xkSRE}wߺpsMVQeL$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKssha256 FXMfzv=;EP3*xVPeL$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMsha256"&6Ea! Luq%+VOeL$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIsha256\KDafO2W VNeL$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAsha256npWj`e ڷ\OT VMeL$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wsha256D/YO!*rl LXMB+VLeL$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegsha256|z n .AA‰pqVKeL$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUsha256˾O/+_#cyD1pVJeL$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8csha256b'-9 ,K,.Mx#VIeL$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgsha256.c#y0dk`WﱖkMZ.e(VHeL$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urksha256O);.*2i"1;.5VGeL$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980sha256ᥛonΖ磏'9wçcVFeL$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8sha256u$U~XƋ}ʷVEeL$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qsha256;~Xh@݈ tN}ūámVDeL$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAsha2566bOJ)~t&"?sm cčaVCeL$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcsha256A |2~˵'XSI BVf'VBeL$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0sha256 #ģÔKBz> MzRu;&u`VAeL$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNoksha256s{r- ,3PI12f6V@eL$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8sha256Xh,W R%#EAX]1)^/ 0`8pH X 0  h B  | T ,  d <  t L $'Q$1570042698202juBqr:localhost:8800'Q$1570042698201kDowV:localhost:8800'Q$1570042697200mrENr:localhost:8800'Q$1570042697199ROUNP:localhost:8800'Q$1570042696198qbnxj:localhost:8800'Q$1570042695197vezoL:localhost:8800'Q$1570042694196OHsWc:localhost:8800'Q$1570042693195hNKnU:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042691192yNWVM:localhost:8800'Q$1570042690191yQfnl:localhost:8800'Q$1570042689190UkvMv:localhost:8800'Q$1570042688189axPjv:localhost:8800'Q$1570042687188ddQmS:localhost:8800'Q$1570042687187gbArC:localhost:8800'Q$1570042686186Qxqmn:localhost:8800'Q$1570042685185RhcXe:localhost:8800'Q$1570042682183iUUXF:localhost:8800'Q$1570042681182ZiRRU:localhost:8800'Q$1570042680181TFyrx:localhost:8800'Q$1570042680180uuIxG:localhost:8800'Q$1570042679179ZJCqE:localhost:8800'Q$1570042678178HSUoI:localhost:8800%M$15700426764DoRhm:localhost:8829%M$15700426753WBESe:localhost:8829'Q$1570042675176WKRiz:localhost:8800'Q$1570042674175gurnU:localhost:8800'Q$1570042673174OxGuP:localhost:8800'Q$1570042672173XsxsH:localhost:8800'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800'Q$1570042670170TtDpX:localhost:8800'Q$1570042668168uCbYK:localhost:8800'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042663162sQrEh:localhost:8800'Q$1570042662160SrmtM:localhost:8800'Q$1570042661159xQwJK:localhost:8800'Q$1570042661158igwHF:localhost:8800'Q$1570042660157svDcU:localhost:8800'Q$1570042660156wxhvl:localhost:8800'Q$1570042659155mEUeP:localhost:8800'Q$1570042659154Fztdf:localhost:8800'Q$1570042658153tmCYJ:localhost:8800'Q$1570042658152btGpA:localhost:8800  FeQa$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3694}{"auth_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k", "$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "prev_events": ["$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY"], "type": "m.room.history_visibility", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043878019, "hashes": {"sha256": "rbNgtKJHH1j7HgO6RRSzYE8rDgLYqrLVMPaOCHdlmyI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h6lDoOck2r9CHpB5Ws2R3JpyLNnhUv+elKo7zBTr/46pd3qezOoP7vUcETTwJlVRmgO6uBcEm7rlK2bvnPu8Dg"}}, "unsigned": {"age_ts": 1570043878019}}tEeQau$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3693}{"auth_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k", "$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "prev_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k"], "type": "m.room.join_rules", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043877288, "hashes": {"sha256": "NrHdNQzgFcwfWROL7e5G7S29mH3vOUdv71EqBgjBTWE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TatY3o07ASmGobV/1jHmjY193WRwRaR32RvG5EoqgYA5Rpi2TjQhARIaGhQU9GPyQjvQT5yTRCyaN0zbjqlwCQ"}}, "unsigned": {"age_ts": 1570043877288}}kDeQac$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3692}{"auth_events": ["$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "prev_events": ["$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "type": "m.room.power_levels", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"users": {"@anon-20191002_181700-722:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043876519, "hashes": {"sha256": "z/qyC6jJV2onrALD+3MpIQM31146X0fNShjDgPCFuk4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "deORxOgZE2nJki/fbu9CVioKVYtt9+mb3fcWtidGw6cuJftcqGXZ5E2xl6kbRB1PNWIoVHwOqrQxflvGA/DjAA"}}, "unsigned": {"age_ts": 1570043876519}}rCeQaq$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3691}{"auth_events": ["$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs"], "prev_events": ["$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs"], "type": "m.room.member", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"membership": "join", "displayname": "YXANMQQXNLDNMDAEAWBA", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-722:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043875663, "hashes": {"sha256": "nYtbJ5AqapNcraQ76Mev60xNGT31qCdtR3TvxGKM/Sk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lViEHle5SH7MSl/P18wOZJUYdT3ZfK65xLCuapQxlSqvY6eGH5LeWOwzrfDzZEJXmzWd3wXao315FLEyMoTsAA"}}, "unsigned": {"age_ts": 1570043875663}} =z - h \P:?V e]]Q5$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0@anon-20191002_181700-742:localhost:8800@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800joinWNMMSFHZOBUAIGUKXEDS,U e]]Q$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg@anon-20191002_181700-737:localhost:8829@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800leaveCT e]]Q=$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0@anon-20191002_181700-737:localhost:8829@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800joinanon-20191002_181700-737ES e]]Q=$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4@anon-20191002_181700-737:localhost:8829@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800inviteanon-20191002_181700-737?R e]]Q5$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc@anon-20191002_181700-736:localhost:8800@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800joinVBKUVYHGDOTERLMJKIKN?Q e]]Q5$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8@anon-20191002_181700-735:localhost:8800@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800joinSIQEQJQUXKKSPCJKORZN?P e]]Q5$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI@anon-20191002_181700-734:localhost:8800@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800joinUXASHYODWFCQEAPTTQYS?O e]]Q5$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E@anon-20191002_181700-733:localhost:8800@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800joinRJATOAIYTIXPIBSXDZQD?N e]]Q5$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8@anon-20191002_181700-732:localhost:8800@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800joinEAGTVMRMBZANCBKYPGOB?M e]]Q5$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA@anon-20191002_181700-731:localhost:8800@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800joinILOHRMOXOHIFUHDIJRAN?L e]]Q5$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc@anon-20191002_181700-730:localhost:8800@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800joinGSHKMOXHVOBRIYTDHTIE?K e]]Q5$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8@anon-20191002_181700-729:localhost:8800@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800joinJSLIPXUGQHACXICKVTRL?J e]]Q5$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00@anon-20191002_181700-728:localhost:8800@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800joinARXGZCNJYIXAFEYVOMMS?I e]]Q5$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800joinJKFBUCGCEHWWKASRVNAHAH e]]Q5$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800inviteJKFBUCGCEHWWKASRVNAHCG e]]Q=$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800joinanon-20191002_181700-726?F e]]Q5$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk@anon-20191002_181700-725:localhost:8800@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800joinEFTSGHSHTSNXHOLBSBGX?E e]]Q5$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA@anon-20191002_181700-724:localhost:8800@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800joinFZLMWKXFLBFUARZOWWMC?D e]]Q5$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok@anon-20191002_181700-723:localhost:8800@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800joinGNPLVPMSZMJSVRMAEUVS?C e]]Q5$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8@anon-20191002_181700-722:localhost:8800@anon-20191002_181700-722:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800joinYXANMQQXNLDNMDAEAWBA 0`8pH X 0  h @  x P ( ` 8  p H 'Q!zuCqeooOnfWkYrQdxA:localhost:8800 A'Q!zuCqeooOnfWkYrQdxA:localhost:8800 @'Q!zuCqeooOnfWkYrQdxA:localhost:8800 ?'Q!zuCqeooOnfWkYrQdxA:localhost:8800 >'Q!zuCqeooOnfWkYrQdxA:localhost:8800 ='Q!zuCqeooOnfWkYrQdxA:localhost:8800 <'Q!zuCqeooOnfWkYrQdxA:localhost:8800 ;'Q!zuCqeooOnfWkYrQdxA:localhost:8800 :'Q!zuCqeooOnfWkYrQdxA:localhost:8800 9'Q!zuCqeooOnfWkYrQdxA:localhost:8800 8'Q!zuCqeooOnfWkYrQdxA:localhost:8800 7'Q!zsXPhIPzeXXLvuazzQ:localhost:8800X'Q!zsXPhIPzeXXLvuazzQ:localhost:8800W'Q!zsXPhIPzeXXLvuazzQ:localhost:8800V'Q!zsXPhIPzeXXLvuazzQ:localhost:8800U'Q!zsXPhIPzeXXLvuazzQ:localhost:8800T'Q!zsXPhIPzeXXLvuazzQ:localhost:8800S'Q!zsXPhIPzeXXLvuazzQ:localhost:8800R'Q!zsXPhIPzeXXLvuazzQ:localhost:8800Q'Q!zsXPhIPzeXXLvuazzQ:localhost:8800P'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 "'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:8800x'Q!zoTQAhGwmDDUECKtbL:localhost:8800w'Q!zoTQAhGwmDDUECKtbL:localhost:8800v'Q!zoTQAhGwmDDUECKtbL:localhost:8800u'Q!zoTQAhGwmDDUECKtbL:localhost:8800t'Q!zoTQAhGwmDDUECKtbL:localhost:8800s'Q!zoTQAhGwmDDUECKtbL:localhost:8800r'Q!zoTQAhGwmDDUECKtbL:localhost:8800q'Q!zoTQAhGwmDDUECKtbL:localhost:8800p'Q!zoTQAhGwmDDUECKtbL:localhost:8800o'Q!zoTQAhGwmDDUECKtbL:localhost:8800n'Q!zoTQAhGwmDDUECKtbL:localhost:8800m'Q!zoTQAhGwmDDUECKtbL:localhost:8800l'Q!zoTQAhGwmDDUECKtbL:localhost:8800k'Q!zoTQAhGwmDDUECKtbL:localhost:8800j'Q!zoTQAhGwmDDUECKtbL:localhost:8800i'Q!zoTQAhGwmDDUECKtbL:localhost:8800h'Q!zoTQAhGwmDDUECKtbL:localhost:8800g  *^qrJeQaq$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3698}{"auth_events": ["$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc"], "prev_events": ["$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc"], "type": "m.room.member", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"membership": "join", "displayname": "FZLMWKXFLBFUARZOWWMC", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-724:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043883757, "hashes": {"sha256": "/C5hL/hYrlcplYnn3KqMXj+DJiJVOSX3//vIrWdidFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPgkPeXMjEgCk4Mf8aQuLr8ZVykUj9XMSjlvk4+DErm1sdAme++Lln8K2ZW9oJhrxjQ75pAC7S+Dbg1ySbZoBQ"}}, "unsigned": {"age_ts": 1570043883757}}iIeQa_$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3697}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-724:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043882993, "hashes": {"sha256": "I6toZjkqK8qjJaZ1cs6bDx9e1+ezPj6DOSrzAcNGoXQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qBHIhXxhGbMXjEQnJk1XZKKhYqDej4U7MECZIDgK5yawF4eoGFGsEPiAMkVZQv+5DeCmKMDdpXv65ZGdBnZNAw"}}, "unsigned": {"age_ts": 1570043882993}}HHeQa$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3696}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g"], "type": "m.room.history_visibility", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043880212, "hashes": {"sha256": "woOSstt8oOpMusbRjtWE88sPsuiSYnRATNtVB/SHVvA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aCjdok1qwJx2b+9msp8gIIpEdzZHNrdSM/syrxqltmOB+wOUgVYuEI140GcaDYMB3kIXSyQOQawFow5asVY3AA"}}, "unsigned": {"age_ts": 1570043880212, "replaces_state": "$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g"}}RGeQa1$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 701, "stream_ordering": 3695}{"auth_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k", "$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY"], "prev_events": ["$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8"], "type": "m.room.member", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-723:localhost:8800", "content": {"membership": "join", "displayname": "GNPLVPMSZMJSVRMAEUVS", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-723:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043879207, "hashes": {"sha256": "Zb+eHPoU3FfM8QAzMzPW43rvgoPfxCurw0ax1Wr9fBs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F8YIO4ssRXD5B3TcPEM5Bi8aZTsrunBtAiPeWG6erHdX8TbCib1WcM2ucvKED8YxMIlYt2O2O8ZO6JycHKWVDg"}}, "unsigned": {"age_ts": 1570043879207}} F {FoD} s H J u # w L !   q>g<iT)e:c8 k *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g g*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f f*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e e*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d d*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c c*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b b*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a a*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` `*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ _*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ^ ^+*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eJPTUgihvSwaOhIkrC:localhost:8800--*Q!eJPTUgihvSwaOhIkrC:localhost:8800,,*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!duCKuavMBSfRbTFPsc:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!duCKuavMBSfRbTFPsc:localhost:8800''*Q!duCKuavMBSfRbTFPsc:localhost:8800&&*Q!duCKuavMBSfRbTFPsc:localhost:8800%%*Q!duCKuavMBSfRbTFPsc:localhost:8800$$*Q!duCKuavMBSfRbTFPsc:localhost:8800##*Q!duCKuavMBSfRbTFPsc:localhost:8800""*Q!duCKuavMBSfRbTFPsc:localhost:8800!!*Q!eJPTUgihvSwaOhIkrC:localhost:8800++*Q!eJPTUgihvSwaOhIkrC:localhost:8800***Q!eJPTUgihvSwaOhIkrC:localhost:8800((*Q!eJPTUgihvSwaOhIkrC:localhost:8800''*Q!eJPTUgihvSwaOhIkrC:localhost:8800&&*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!eJPTUgihvSwaOhIkrC:localhost:8800))*Q!eJPTUgihvSwaOhIkrC:localhost:8800$$*Q!eJPTUgihvSwaOhIkrC:localhost:8800%%*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 NV*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800'-*Q!drnXStKXkNQkouqUAg:localhost:8800 L L*Q!drnXStKXkNQkouqUAg:localhost:8800 K K*Q!drnXStKXkNQkouqUAg:localhost:8800 I I*Q!drnXStKXkNQkouqUAg:localhost:8800 G GV*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!eLsrBEnrHolwCNgkFW:localhost:8800II*Q!eLsrBEnrHolwCNgkFW:localhost:8800HH*Q!eLsrBEnrHolwCNgkFW:localhost:8800GG*Q!eLsrBEnrHolwCNgkFW:localhost:8800FF*Q!eLsrBEnrHolwCNgkFW:localhost:8800EE a} { y w u sqomkigeca~0eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~/eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~.eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800~-eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~,eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~+eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~*eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~)eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~(eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~'eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~&eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~%eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~$eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~#eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~"eeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~!eeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~ eeQ$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~eeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800 Wp% . 1 S V 36X0),N&/WhPQ/ e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rules$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQjOQ3 e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo NQ']e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8dMQ' e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.create$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8LQ/ ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU KQ']e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrApJQ? e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibility$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMhIQ/ e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rules$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0jHQ3 e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 GQ']e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScdFQ' e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.create$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCoEQ? ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wDQ/ ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg CQ']e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8pBQ? e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibility$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0hAQ/ e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rules$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYj@Q3 e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 ?Q']e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00d>Q' e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.create$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs8=Q']ee~!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI <Q']e}!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIj;Q3 e|!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_access$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAp:Q? e{!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wh9Q/ ez!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegj8Q3 ey!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 7Q']ex!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cd6Q' ew!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 5Q']ev!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkp4Q? eu!biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibility$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980h3Q/ et!biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rules$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8j2Q3 es!biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1Q']er!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA  RNeQa1$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 703, "stream_ordering": 3702}{"auth_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q", "$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8"], "prev_events": ["$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980"], "type": "m.room.member", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-725:localhost:8800", "content": {"membership": "join", "displayname": "EFTSGHSHTSNXHOLBSBGX", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-725:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043887302, "hashes": {"sha256": "CfE13BoSSWbyRkedkRFCzGdRAYDlDE8PbYV04Lf4Rwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cjv9WUY+gKqIP7AhpxmS8QinaD7tgS0L1X2Hc7oJrCyuIzLMdHnBjOniEP7JBi6cNpWufCXf6++/4z9+rREgAA"}}, "unsigned": {"age_ts": 1570043887302}}MeQa$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3701}{"auth_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q", "$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "prev_events": ["$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8"], "type": "m.room.history_visibility", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043886112, "hashes": {"sha256": "PY3GS93o+M5JQthXZIbkp+vKFgCXGE8YpbmwV41R24s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T+I/27zRQdjtJyHhKsmrfyNUJ2O29ah2mebbONF6NAT2ncAxOP51zX6C3pyMmjRe4rq6+wuryx42zNll6IydDQ"}}, "unsigned": {"age_ts": 1570043886112}}tLeQau$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3700}{"auth_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q", "$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "prev_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q"], "type": "m.room.join_rules", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043885210, "hashes": {"sha256": "Wecc1HKqwy7wJmb2dcm8bYW0HtyRNdtLzV8q3J0p10I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PbS64SqDYIhi04aYejqvKlX9I6ItAzmI6KRYCgYjK+XIWC1+trer+cRfVU2Y863FYFM5Rf7q7flVaLPoyyhKBw"}}, "unsigned": {"age_ts": 1570043885210}}kKeQac$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3699}{"auth_events": ["$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "prev_events": ["$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "type": "m.room.power_levels", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"users": {"@anon-20191002_181700-724:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043884448, "hashes": {"sha256": "kB/PtZpojP8AcvqmLUdAq9Xs69uYQHCKKsyey19uRWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D6mcl4+nBnSPENTuPD0jxsE3+Gk4YuKKsh/tkho+GfGwJ7cx99eq7ABpbCwC787FwPnRxx+rrohdtPZwmTV+BA"}}, "unsigned": {"age_ts": 1570043884448}} `|pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8, xl` m m m m~ mz mZ mW mT mQ mN mK m9 m7 m3 m1 m, m* m' m& m# m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m| mz mx mq mo mn mk mi mg me mc ma m_ m] m[ mY mW mU mQ mN mL mJ mH mF mD mA m> m< m9 m6 m3 m2 m1 m- m, m( m% m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z:CUq8 V  rzA] _Up7$B{&^% 9   U q T z98]!@anon-20191002_181700-791:localhost:8800WJMTFALHBS*8]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAI$8]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!@anon-20191002_181700-795:localhost:8800JVASIBBRVU.8]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWI,8]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJ+8]!@anon-20191002_181700-788:localhost:8800JZUHRDQQEL%8]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ-8]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFX(8]!@anon-20191002_181700-790:localhost:8800VALGYGSZPA'8]!@anon-20191002_181700-787:localhost:8800ESOZVRSFST&8]!@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHU)8]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTK8]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ6[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXm58]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA5Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWX6[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDp6[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNo8]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLI#8]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZH"8]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIW!8]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQC 8]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCC68]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXF58]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUO48]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJR38]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ28]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJC18]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ08]!@anon-20191002_181700-798:localhost:8800INQDOVATBT/8]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!@anon-20191002_181700-760:localhost:8800AAUYDDOUHU 6[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMn8]!@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8]!@anon-20191002_181700-758:localhost:8800GUAXNWFTDG 8]!@anon-20191002_181700-757:localhost:8800QRQFPUSZXE 8]!@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ 8]!@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG 8]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN8]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBW g * T~=ggA]!c@anon-20191002_181700-742:localhost:8800OLLAKSSDJKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45Hwog@]!c@anon-20191002_181700-736:localhost:8800FLOTQJDCJVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgog?]!c@anon-20191002_181700-735:localhost:8800ZQXZAKNBDXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAog>]!c@anon-20191002_181700-734:localhost:8800KYIXUZPIHIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAog=]!c@anon-20191002_181700-733:localhost:8800YGJVVHZCJQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQog<]!c@anon-20191002_181700-732:localhost:8800XWWSSGHQCKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAog;]!c@anon-20191002_181700-731:localhost:8800QAJRBGVMCYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQog:]!c@anon-20191002_181700-730:localhost:8800BGYKRDCYIRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAog9]!c@anon-20191002_181700-729:localhost:8800DNPGOQMGAFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQog8]!c@anon-20191002_181700-728:localhost:8800KLYTBBZKRQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAog7]!c@anon-20191002_181700-726:localhost:8800DOLLBVDDIPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowo   *tReQau$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3706}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU"], "type": "m.room.join_rules", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043892195, "hashes": {"sha256": "nYS7cfNLCEH5JKwyGd2ASVTpafQcwNgVykhQ3RkkYDg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gZLxBUBF5jPJsl67ap1dIg1dDTHuCIHgRfzaclOge5rLo0y7WaUdRZaIvq0EnkZmNag1dcW6+ZrXKxMGYCKEAQ"}}, "unsigned": {"age_ts": 1570043892195}}kQeQac$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3705}{"auth_events": ["$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "type": "m.room.power_levels", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"users": {"@anon-20191002_181700-726:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043891114, "hashes": {"sha256": "nt4OwYV3BuU0nOqUqzG8Cig1nn0KT0oRU2vgfQzhvJU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vs8w6icOmgEL72UqW2fVqzdRsfneQLPVcUpmD4gSIw0mDWC13Bh4+gPLAVRfv1wr9DxwyxhOG27bfIVHDgqXBw"}}, "unsigned": {"age_ts": 1570043891114}}vPeQay$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3704}{"auth_events": ["$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg"], "prev_events": ["$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg"], "type": "m.room.member", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-726", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-726:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043890291, "hashes": {"sha256": "ykCYbBHlE0JU/no2LpYU+jZsk+bRBm6KuBDjeXZRIAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7cX5OSqtu9OPYdfpjXN7CAFpGTetZWJVocwVLsG5QIpxBDrOjc10p7mtckY/FEY38HPeX++6ylbe3F0Peg8sDg"}}, "unsigned": {"age_ts": 1570043890291}}iOeQa_$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3703}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-726:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043889477, "hashes": {"sha256": "M0TQKAuL5eLxBhnUuwJQkpn5BgAZgSvDsuzk4+LiDzQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqAC9XiLldk+ZIjNOMeKXQur5czq5jlNd8QFpNY1bKWrTVsZiX9cZM3KmyHoRpkidSb+oYXNRoueI0aGvhm7Bw"}}, "unsigned": {"age_ts": 1570043889477}} 9 @ p , \  L |8l(t0d T \Hx0X8`Et]=@anon-20191002_181700-831:localhost:8800anon-20191002_181700-831Es]=@anon-20191002_181700-797:localhost:8800anon-20191002_181700-797Er]=@anon-20191002_181700-795:localhost:8800anon-20191002_181700-795Eq]=@anon-20191002_181700-793:localhost:8800anon-20191002_181700-793Ep]=@anon-20191002_181700-791:localhost:8800anon-20191002_181700-791Eo]=@anon-20191002_181700-789:localhost:8800anon-20191002_181700-789En]=@anon-20191002_181700-787:localhost:8800anon-20191002_181700-787Em]=@anon-20191002_181700-768:localhost:8800anon-20191002_181700-768El]=@anon-20191002_181700-767:localhost:8800anon-20191002_181700-767Ek]=@anon-20191002_181700-763:localhost:8800anon-20191002_181700-763Ej]=@anon-20191002_181700-762:localhost:8800anon-20191002_181700-762Ei]=@anon-20191002_181700-758:localhost:8800anon-20191002_181700-758Eh]=@anon-20191002_181700-757:localhost:8800anon-20191002_181700-757Eg]=@anon-20191002_181700-755:localhost:8800anon-20191002_181700-755Af]5@anon-20191002_181700-754:localhost:8800FKOCVHIRTCIPSWJBHVGOAe]5@anon-20191002_181700-752:localhost:8800JYNGOISMLXVDWPDRVNCSEd]=@anon-20191002_181700-751:localhost:8800anon-20191002_181700-751Ac]5@anon-20191002_181700-750:localhost:8800BABSIRRXCUHNIFZHYFMBEb]=@anon-20191002_181700-747:localhost:8800anon-20191002_181700-747Aa]5@anon-20191002_181700-746:localhost:8800QLDSIOXVCTASBPKYRNHIA`]5@anon-20191002_181700-744:localhost:8800LIBVRACXDTFHBVRAEYIUA_]5@anon-20191002_181700-743:localhost:8800AZZDHJBDYOHRRTKDIRLPA^]5@anon-20191002_181700-742:localhost:8800WNMMSFHZOBUAIGUKXEDSAR]5@anon-20191002_181700-725:localhost:8800EFTSGHSHTSNXHOLBSBGXAQ]5@anon-20191002_181700-724:localhost:8800FZLMWKXFLBFUARZOWWMCAP]5@anon-20191002_181700-723:localhost:8800GNPLVPMSZMJSVRMAEUVSAO]5@anon-20191002_181700-722:localhost:8800YXANMQQXNLDNMDAEAWBAAN]5@anon-20191002_181700-721:localhost:8800XOISPAUOSHVJCWENJUUSAM]5@anon-20191002_181700-720:localhost:8800XSMKELSYZZRIOKLQFSRHAL]5@anon-20191002_181700-719:localhost:8800MILEDCIUNXUMWFEESQLVEK]=@anon-20191002_181700-718:localhost:8800anon-20191002_181700-718AJ]5@anon-20191002_181700-717:localhost:8800HMVWDTIFKRGHQBGEGHRHAI]5@anon-20191002_181700-716:localhost:8800MJNQECZFMFOOTUTQHDEMAH]5@anon-20191002_181700-715:localhost:8800ILZFEUMGMNVXCRVUDWRWAG]5@anon-20191002_181700-714:localhost:8800ZONDVATSKCZDRCJEXKOTAF]5@anon-20191002_181700-713:localhost:8800KIPGYKTLFAKDJTVTRSGZAE]5@anon-20191002_181700-712:localhost:8800SIQSTRPUPDLQEGIEGXYWAD]5@anon-20191002_181700-711:localhost:8800SPPIULUTUNSEUMJVVWAVEC]=@anon-20191002_181700-710:localhost:8800anon-20191002_181700-710AB]5@anon-20191002_181700-708:localhost:8800QNSOXAXNRXGCIEWGQWKJEA]=@anon-20191002_181700-706:localhost:8800anon-20191002_181700-706A@]5@anon-20191002_181700-704:localhost:8800QBXFQKRQDWUAJPNVZOZDA?]5@anon-20191002_181700-702:localhost:8800YXIIECCUXAJQBCOFPUZNA>]5@anon-20191002_181700-701:localhost:8800BLFZQHKYWUXKFZZINKLJA=]5@anon-20191002_181700-700:localhost:8800DOJGFUOIVLOGJFEZFHHTE<]=@anon-20191002_181700-698:localhost:8800anon-20191002_181700-698A]]5@anon-20191002_181700-736:localhost:8800VBKUVYHGDOTERLMJKIKNA\]5@anon-20191002_181700-735:localhost:8800SIQEQJQUXKKSPCJKORZNA[]5@anon-20191002_181700-734:localhost:8800UXASHYODWFCQEAPTTQYSAZ]5@anon-20191002_181700-733:localhost:8800RJATOAIYTIXPIBSXDZQDAY]5@anon-20191002_181700-732:localhost:8800EAGTVMRMBZANCBKYPGOBAX]5@anon-20191002_181700-731:localhost:8800ILOHRMOXOHIFUHDIJRANAW]5@anon-20191002_181700-730:localhost:8800GSHKMOXHVOBRIYTDHTIEAV]5@anon-20191002_181700-729:localhost:8800JSLIPXUGQHACXICKVTRLAU]5@anon-20191002_181700-728:localhost:8800ARXGZCNJYIXAFEYVOMMSAT]5@anon-20191002_181700-727:localhost:8800JKFBUCGCEHWWKASRVNAHES]=@anon-20191002_181700-726:localhost:8800anon-20191002_181700-726 !*L . 9 c b %IP[GoQ? e ?!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibility$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFoggQ/ e >!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rules$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAiQ3 e =!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras Q']e GozGJY 5eQ']$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800m4eQ? $_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibilitye3eQ/ $Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rulesg2eQ3 $3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels 1eQ']$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800a0eQ' $dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.createm/eQ? $_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility .eQ']$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800m-eQ? $qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibilitye,eQ/ $nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rulesg+eQ3 $_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels *eQ']$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800a)eQ' $YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.createe(eQ/ $chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules 'eQ']$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800m&eQ? $8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibilitye%eQ/ $uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rulesg$eQ3 $SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels #eQ']$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800a"eQ' $T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800m.room.createm!eQ? $bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibilitye eQ/ $kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules eQ']$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800meQ? $x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibilityeeQ/ $KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rulesgeQ3 $Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels eQ']$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800aeQ' $IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800m.room.create eQ']$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800 eQ']$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800geQ3 $bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_accessmeQ? $kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibilityeeQ/ $ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rulesgeQ3 $yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels c wcUeQa/$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3709}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA"], "type": "m.room.member", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"membership": "invite", "displayname": "JKFBUCGCEHWWKASRVNAH", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-727:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043894901, "hashes": {"sha256": "ebgQshrwyo7SwUZTvUFpbei9kKKF6IyjNQOeq8z4oro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r4rFqRPSPrNrQhQ9BP8i2FXM2+Mbh1k0I9MFVXf+p7C/vFYXY/Dm3msypz1ZWFGIx2MnO3Bgym5egYhfIjH1Dg"}}, "unsigned": {"age_ts": 1570043894901, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-726:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-726:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-726", "avatar_url": null}, "sender": "@anon-20191002_181700-726:localhost:8800"}]}}{TeQa$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3708}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w"], "type": "m.room.guest_access", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043894001, "hashes": {"sha256": "DTOc3y86pb0xVlkdBOQjF5Nt3Z7gHfsLrzKYFbpjyKc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "naJyL6utSgJGxeO0gbHBPkq2EVo1EGAA7W4QvhNR29OEBvEqOCdvvwOah97vpwSoyW6KeaYslJ1L2Ze1fzbcDw"}}, "unsigned": {"age_ts": 1570043894001}}SeQa$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3707}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg"], "type": "m.room.history_visibility", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043893197, "hashes": {"sha256": "bueYEPqNvpiQSmc6G42aP08cRUM9k4KmHGvVBMyuKLQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eoo84sb8wm1ybV+IlbWZYnFzbjNaBef5yTMa4SrsTFTmxKsckajIcYGZgp6LyIW+tnELkDJJfXvySBg1NvlUCQ"}}, "unsigned": {"age_ts": 1570043893197}} ? \ *Tb0j8  h6n<p V $  "t P v DZ( | JBzHN 1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagV1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagU1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk91e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk81e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwf1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg ,1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM 1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM d1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk:1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E^1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQZ1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQY1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQX 21e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0{1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0z1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0y1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI 1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI 1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI 1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI 1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYS1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs p1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs o1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs n1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo 1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo 1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI 1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI 1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI 1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0k1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0j1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0i 1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 21e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8m1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8l 21e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck.1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck- 1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwe1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwg1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8n1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagW *j8p> v D   | J   P 1 V $ \ +cc1e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI 1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk 1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E H1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ F1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA)1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y D0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYa1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIQ21e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ l1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA01e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 A1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIm1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMz1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwk1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcY1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw=1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg 81e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc ?1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUS -RM H C > 9 4/*|%w rmhc TNQe N!cOFSwLSkxZECJMvjjZ:localhost:8800$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oTMQe M!cOFSwLSkxZECJMvjjZ:localhost:8800$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0TLQe L!cOFSwLSkxZECJMvjjZ:localhost:8800$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0YTKQe K!cOFSwLSkxZECJMvjjZ:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0TJQe J!cOFSwLSkxZECJMvjjZ:localhost:8800$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUTIQe I!eGEEtFXUXuZDImkeql:localhost:8800$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgTHQe H!eGEEtFXUXuZDImkeql:localhost:8800$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0TGQe G!eGEEtFXUXuZDImkeql:localhost:8800$NF6QJGaiXg5wluKm4znGCpLM0q6uwlc3KaRF5d5R8QUTFQe F!eGEEtFXUXuZDImkeql:localhost:8800$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4TEQe E!eGEEtFXUXuZDImkeql:localhost:8800$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYTDQe D!eGEEtFXUXuZDImkeql:localhost:8800$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cTCQe C!eGEEtFXUXuZDImkeql:localhost:8800$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQTBQe B!eGEEtFXUXuZDImkeql:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcTAQe A!eGEEtFXUXuZDImkeql:localhost:8800$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUT@Qe @!ZOpRjvUhkWYJBFJZeO:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8T?Qe ?!ZOpRjvUhkWYJBFJZeO:localhost:8800$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogT>Qe >!ZOpRjvUhkWYJBFJZeO:localhost:8800$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAT=Qe =!ZOpRjvUhkWYJBFJZeO:localhost:8800$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasT<Qe eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~=eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800~<eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800~;eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~:eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800~9eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800~8eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~7eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800~6eeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800~5eeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~4eeQ$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~3eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800~2eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800~1eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800 2lp, < L \ l  | ,<`L\ l|,<L\ lM}]Q@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800M|]Q@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800M{]Q@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800Mz]Q@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800My]Q@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800Mx]Q@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800Mw]Q@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800Mv]Q@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800Mu]Q@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800Mt]Q@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800Ms]Q@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800Mr]Q@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800Mq]Q@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800Mp]Q@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800Mo]Q@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800Mn]Q@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800Mm]Q@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800Ml]Q@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800Mk]Q@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800Mh]Q@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800Mg]Q@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800Mf]Q@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800Me]Q@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800Mi]Q@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800M`]Q@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800M_]Q@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800M^]Q@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800M]]Q@anon-20191002_181700-722:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800MZ]Q@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800MY]Q@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800MX]Q@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800MW]Q@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800MV]Q@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800MU]Q@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800MR]Q@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800MQ]Q@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800MP]Q@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:8800MO]Q@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:8800MN]Q@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:8800MM]Q@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:8800ML]Q@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800MK]Q@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800MJ]Q@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800MI]Q@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800AHEQ@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800MG]Q@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 Mj]Q@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800AFEQ@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800Mb]Q@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800Ma]Q@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800 i 4h5 i g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAo߂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAo݂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwo F^ h  l  v$t(8<F e'Q ]$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIm.room.member!ZOpRjvUhkWYJBFJZeO:localhost:8800mm0@anon-20191002_181700-734:localhost:8800 e'Q  ]$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEm.room.create!ZOpRjvUhkWYJBFJZeO:localhost:8800m$m@anon-20191002_181700-734:localhost:8800,e?Q ] $_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90m.room.history_visibility!NcJYmIbgjsaKJOzBcs:localhost:8800 mBm@anon-20191002_181700-726:localhost:8800 e'Q ]$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Em.room.member!BPNyKqmwcpGxIbGFZG:localhost:8800mm@anon-20191002_181700-733:localhost:8800,e?Q ]$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4m.room.history_visibility!BPNyKqmwcpGxIbGFZG:localhost:8800mm@anon-20191002_181700-732:localhost:8800$e/Q ]$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQm.room.join_rules!BPNyKqmwcpGxIbGFZG:localhost:8800m&m@anon-20191002_181700-732:localhost:8800&e3Q ]$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXom.room.power_levels!BPNyKqmwcpGxIbGFZG:localhost:8800mJmU@anon-20191002_181700-732:localhost:8800 e'Q ]$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8m.room.member!BPNyKqmwcpGxIbGFZG:localhost:8800mRm@anon-20191002_181700-732:localhost:8800 e'Q  ]$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8m.room.create!BPNyKqmwcpGxIbGFZG:localhost:8800mmO@anon-20191002_181700-732:localhost:8800$ e/Q ] $chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90m.room.join_rules!NcJYmIbgjsaKJOzBcs:localhost:8800 mm@anon-20191002_181700-726:localhost:8800 e'Q ]$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAm.room.member!ZOwibbprUCQrSJQCrx:localhost:8800m m@anon-20191002_181700-731:localhost:8800, e?Q ]$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMm.room.history_visibility!ZOwibbprUCQrSJQCrx:localhost:8800mm@anon-20191002_181700-730:localhost:8800$ e/Q ]$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0m.room.join_rules!ZOwibbprUCQrSJQCrx:localhost:8800m݁mw@anon-20191002_181700-730:localhost:8800& e3Q ]$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0m.room.power_levels!ZOwibbprUCQrSJQCrx:localhost:8800mڤmۭ@anon-20191002_181700-730:localhost:8800 e'Q ]$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScm.room.member!ZOwibbprUCQrSJQCrx:localhost:8800mm@anon-20191002_181700-730:localhost:8800 e'Q  ]$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCom.room.create!ZOwibbprUCQrSJQCrx:localhost:8800m[mԯ@anon-20191002_181700-730:localhost:8800,e?Q ] $bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMm.room.history_visibility!NcJYmIbgjsaKJOzBcs:localhost:8800 mċmV@anon-20191002_181700-726:localhost:8800$e/Q ] $kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUm.room.join_rules!NcJYmIbgjsaKJOzBcs:localhost:8800 msm@anon-20191002_181700-726:localhost:8800 e'Q ]$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8m.room.member!qtelAHlSkrqEFmlCqS:localhost:8800mpm @anon-20191002_181700-729:localhost:8800,e?Q ]$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0m.room.history_visibility!qtelAHlSkrqEFmlCqS:localhost:8800m m蹂@anon-20191002_181700-728:localhost:8800$e/Q ]$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYm.room.join_rules!qtelAHlSkrqEFmlCqS:localhost:8800m{m贉@anon-20191002_181700-728:localhost:8800&e3Q ]$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4m.room.power_levels!qtelAHlSkrqEFmlCqS:localhost:8800mm@anon-20191002_181700-728:localhost:8800 e'Q ]$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00m.room.member!qtelAHlSkrqEFmlCqS:localhost:8800mm謦@anon-20191002_181700-728:localhost:8800 e'Q  ]$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsm.room.create!qtelAHlSkrqEFmlCqS:localhost:8800m5m訏@anon-20191002_181700-728:localhost:8800 A~=|= | ; ~ ? C  G  I ~P"_!l.z<H Vc'p29v Q  !DoiZErAdypBUMZKaeJ:localhost:8800th&\9u Q  !DntdfAPfCfgdOoRMdl:localhost:8800th&\;t Q!DnUHoxreGexNmjSVpq:localhost:8800th&\;s Q!DelfBAGvCrTXgNxmNV:localhost:8800th&\:r Q !DSFBpkqfnvBQbGoMUK:localhost:8800th&\9q Q  !CkNvQnbApPIcuKygDk:localhost:8800th&\9p Q  !CgVBWWcRJoHEcwoLcq:localhost:8800th&\:o Q !CSqENqzAezaZnGktbE:localhost:8800th&\;n Q!CQKLQUpSYakhxVDltC:localhost:8800th&\9m Q  !CNFopUEQTFbzjmLvii:localhost:8800th&\9l Q  !CKNftKKCaOCVUyYWNY:localhost:8800th&\9k Q  !CGckPHdSYcIocFvRAq:localhost:8800th&\9j Q  !CAGaRyRvrohDRBsrWH:localhost:8800th&\;i Q!BpTqIemsWFZIqTcgJO:localhost:8800th&\9h Q  !BoyzlWNkRPncpDjBDg:localhost:8800th&\;g Q !BkzROHxDAfKIzYpmPV:localhost:8800th&\ 9f Q  !BfEFIDBthhkweqfhir:localhost:8800th&\ 9e Q   !BckZfhQgrcyiMhEAAJ:localhost:8800th&\;d Q!BPNyKqmwcpGxIbGFZG:localhost:8800th&\;c Q!BKZJsoFNhiLTDYNclB:localhost:8800th&\9b Q   !BGbJEmJRVJGlZFQbZe:localhost:8800th&\9a Q  !BDASLhdcKfNwxCTCSg:localhost:8800th&\9` Q   !AoAvmnwMkhYBQsbCsL:localhost:8800th&\;_ Q!AjjrNwXmPTCruHxaJq:localhost:8800th&\ 9^ Q  !AYFqrmxwClFQlcTTYq:localhost:8800th&\9] Q  !AWfbViAZparIjmDaVT:localhost:8800th&\:\ Q !AOEdqVKPFddrqbKPOL:localhost:8800th&\;[ Q!AMLmLqizBFklpqKibP:localhost:8800th&\9Z Q  !ABHbfUdkHCJksMsaUt:localhost:8800th&\*Y 1 !9:localhost:42455th&\*X 1 !6:localhost:42455th&\*W 1 !5:localhost:42455th&\+V 3 !13:localhost:42455th&\+U 3 !12:localhost:42455th&\,T 3!11:localhost:42455th&\+S 3 !10:localhost:42455th&\*R 1 !0:localhost:42455th&\>Q Q!QWLJZmJqjWZjVOjdYF:localhost:8800m&\>P Q!ZWANpHlizyLrUiVvAm:localhost:8800m&\@ Q!sBcwyPoXKgnSGVTjNR:localhost:8800m&\> Q!LFBhoxJpmBqFrwEzGP:localhost:8800m&\>= Q!URpLZLuBfVcfHVTBGS:localhost:8800m&\<< Q  !YaLuQzmJKSMTSFEqjO:localhost:8800m&\?>; Q!cOFSwLSkxZECJMvjjZ:localhost:8800m&\<: Q   !eGEEtFXUXuZDImkeql:localhost:8800m&\4>9 Q!ZOpRjvUhkWYJBFJZeO:localhost:8800m&\>8 Q!BPNyKqmwcpGxIbGFZG:localhost:8800m&\>7 Q!ZOwibbprUCQrSJQCrx:localhost:8800m&\>6 Q!qtelAHlSkrqEFmlCqS:localhost:8800m&\ E | J  * P  V> $ 0 \ *pbh6$n< \uC|JPVj821e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE c1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw +1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q !1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q 1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU 1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s71e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o01e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIh1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx40e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiol1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9so1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw _1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk71e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc'1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k)1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw41e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg 1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY $1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsH1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg Y1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY l1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk '1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I "1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns 1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4@1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU S1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 !o- ` e 4 54 ?mlw 5? WeQ']$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800joinaVeQ' $5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.createUeQ']$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829leavemTeQ? $-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibilityeSeQ/ $L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rulesgReQ3 $WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels QeQ']$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800joinaPeQ' $HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800m.room.create OeQ']$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800joinmNeQ? $_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibilityeMeQ/ $Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rulesgLeQ3 $3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels KeQ']$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800joinaJeQ' $dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.create HeQ']$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800joinmGeQ? $qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibilityeFeQ/ $nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rulesgEeQ3 $_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels DeQ']$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800joinaCeQ' $YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.create AeQ']$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800joinm@eQ? $8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibilitye?eQ/ $uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rulesg>eQ3 $SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels =eQ']$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800joina<eQ' $T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800m.room.createmIeQ? $_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibilityeBeQ/ $chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules 9eQ']$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800joinm8eQ? $x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibilitye7eQ/ $KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rulesg6eQ3 $Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels 5eQ']$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800join xH`8pH X0 X 0  h@h@x h @  x P ( ` 8  P(( p H ('Q!vxEMWYTUdzvLyVZNzJ:localhos('Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800P'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 PX'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800('Q!vnFXnkCSfTbsSNKrtg:localhost:8800 ]'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 \'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 ['Q!vnFXnkCSfTbsSNKrtg:localhost:8800 Z'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 Y'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 X'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 W'Q!vyCFfUTJKYJSDadFhT:localhost:8800]'Q!vyCFfUTJKYJSDadFhT:localhost:8800['Q!vyCFfUTJKYJSDadFhT:localhost:8800Y'Q!vyCFfUTJKYJSDadFhT:localhost:8800W'Q!vyCFfUTJKYJSDadFhT:localhost:8800U'Q!vyCFfUTJKYJSDadFhT:localhost:8800S'Q!vyCFfUTJKYJSDadFhT:localhost:8800Q'Q!vyCFfUTJKYJSDadFhT:localhost:8800P'Q!vttkrtSyHEJXVMlvLo:localhost:8800 6'Q!vttkrtSyHEJXVMlvLo:localhost:8800 5'Q!vttkrtSyHEJXVMlvLo:localhost:8800 4'Q!vttkrtSyHEJXVMlvLo:localhost:8800 3'Q!vttkrtSyHEJXVMlvLo:localhost:8800 2'Q!vttkrtSyHEJXVMlvLo:localhost:8800 1'Q!vttkrtSyHEJXVMlvLo:localhost:8800 0'Q!vttkrtSyHEJXVMlvLo:localhost:8800 /'Q!vttkrtSyHEJXVMlvLo:localhost:8800 .'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800Y'Q!vRRNxNyGboLHNhqQvr:localhost:8800X'Q!vRRNxNyGboLHNhqQvr:localhost:8800W'Q!vRRNxNyGboLHNhqQvr:localhost:8800V'Q!vRRNxNyGboLHNhqQvr:localhost:8800U'Q!vRRNxNyGboLHNhqQvr:localhost:8800T'Q!vRRNxNyGboLHNhqQvr:localhost:8800S'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800~'Q!vOfeZvbtpuHfoqShFl:localhost:8800}'Q!vOfeZvbtpuHfoqShFl:localhost:8800|'Q!vOfeZvbtpuHfoqShFl:localhost:8800{ o )o6]eQay$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3717}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM"], "type": "m.room.join_rules", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"join_rule": "public"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043904371, "hashes": {"sha256": "k7Il9Z+4uGk00u4riaav4ZblhTw/Ms1Q6M4VpmJSQC0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zDD+DkGzewXcJ8V4hRQXArIPLJFXMWgnPFo7/wsk55OJkg6qliTdTzuwWeH5KnaEmNM0WHIVkLDJeased7taAw"}}, "unsigned": {"age_ts": 1570043904371, "replaces_state": "$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg"}}R\eQa1$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800{"token_id": 707, "stream_ordering": 3716}{"auth_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4", "$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs", "$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY"], "prev_events": ["$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0"], "type": "m.room.member", "room_id": "!qtelAHlSkrqEFmlCqS:localhost:8800", "sender": "@anon-20191002_181700-729:localhost:8800", "content": {"membership": "join", "displayname": "JSLIPXUGQHACXICKVTRL", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-729:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043903088, "hashes": {"sha256": "//8GHLWgx2Ra4K/1wjCjk9qNsx+f9kOkacPbUSu0D9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "34UZ2beQjl/0u/1CbRHcU7TbZPA9RHYde81zf4KaGWVvJyiyXQgW5SnFk951S2nQTsJXkMbxGkM3j+RxX1NjCw"}}, "unsigned": {"age_ts": 1570043903088}}[eQa$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800{"token_id": 706, "stream_ordering": 3715}{"auth_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4", "$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs", "$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00"], "prev_events": ["$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY"], "type": "m.room.history_visibility", "room_id": "!qtelAHlSkrqEFmlCqS:localhost:8800", "sender": "@anon-20191002_181700-728:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043901706, "hashes": {"sha256": "RVSs5K26VyiGMRaPwfzQY8d3VIGEY7iLMPBNp2ANCCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fClbLGbIYW53nY9dZzwIrghZjCu5bbW+hqspFvvnhQV6Uo1ZfRzLiN6Mzvq4G4guhum3RvClOhCh+H0oIyAOAg"}}, "unsigned": {"age_ts": 1570043901706}}tZeQau$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800{"token_id": 706, "stream_ordering": 3714}{"auth_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4", "$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs", "$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00"], "prev_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4"], "type": "m.room.join_rules", "room_id": "!qtelAHlSkrqEFmlCqS:localhost:8800", "sender": "@anon-20191002_181700-728:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043900795, "hashes": {"sha256": "NvkgQlNu2XlVInXR0SpG/WQ8Z6PKboMul7s4Le2zz4w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i0fNhwoPYMNTpOgwgeVPCmXXsSVh5H7eiZJmGAppkIHXYI+0T6Tmnql1zcttcqKQjTM8c7MpCiaBufKetAQRBw"}}, "unsigned": {"age_ts": 1570043900795}} eL r ?e  = _ &>dD bV t <jM]@anon-20191002_181700-720:localhost:8800@anon-20191002_181700-720:localhost:8800 XSMKELSYZZRIOKLQFSRHjL]@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-719:localhost:8800 MILEDCIUNXUMWFEESQLVnK]@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-718:localhost:8800 anon-20191002_181700-718j`]@anon-20191002_181700-744:localhost:8800@anon-20191002_181700-744:localhost:8800 LIBVRACXDTFHBVRAEYIUj_]@anon-20191002_181700-743:localhost:8800@anon-20191002_181700-743:localhost:8800 AZZDHJBDYOHRRTKDIRLPj^]@anon-20191002_181700-742:localhost:8800@anon-20191002_181700-742:localhost:8800 WNMMSFHZOBUAIGUKXEDSj]]@anon-20191002_181700-736:localhost:8800@anon-20191002_181700-736:localhost:8800 VBKUVYHGDOTERLMJKIKNj\]@anon-20191002_181700-735:localhost:8800@anon-20191002_181700-735:localhost:8800 SIQEQJQUXKKSPCJKORZNj[]@anon-20191002_181700-734:localhost:8800@anon-20191002_181700-734:localhost:8800 UXASHYODWFCQEAPTTQYSjZ]@anon-20191002_181700-733:localhost:8800@anon-20191002_181700-733:localhost:8800 RJATOAIYTIXPIBSXDZQDjY]@anon-20191002_181700-732:localhost:8800@anon-20191002_181700-732:localhost:8800 EAGTVMRMBZANCBKYPGOBjV]@anon-20191002_181700-729:localhost:8800@anon-20191002_181700-729:localhost:8800 JSLIPXUGQHACXICKVTRLjU]@anon-20191002_181700-728:localhost:8800@anon-20191002_181700-728:localhost:8800 ARXGZCNJYIXAFEYVOMMSjT]@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-727:localhost:8800 JKFBUCGCEHWWKASRVNAHnS]@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-726:localhost:8800 anon-20191002_181700-726jR]@anon-20191002_181700-725:localhost:8800@anon-20191002_181700-725:localhost:8800 EFTSGHSHTSNXHOLBSBGXjQ]@anon-20191002_181700-724:localhost:8800@anon-20191002_181700-724:localhost:8800 FZLMWKXFLBFUARZOWWMCjP]@anon-20191002_181700-723:localhost:8800@anon-20191002_181700-723:localhost:8800 GNPLVPMSZMJSVRMAEUVSjO]@anon-20191002_181700-722:localhost:8800@anon-20191002_181700-722:localhost:8800 YXANMQQXNLDNMDAEAWBAjN]@anon-20191002_181700-721:localhost:8800@anon-20191002_181700-721:localhost:8800 XOISPAUOSHVJCWENJUUSjJ]@anon-20191002_181700-717:localhost:8800@anon-20191002_181700-717:localhost:8800 HMVWDTIFKRGHQBGEGHRHjI]@anon-20191002_181700-716:localhost:8800@anon-20191002_181700-716:localhost:8800 MJNQECZFMFOOTUTQHDEMjH]@anon-20191002_181700-715:localhost:8800@anon-20191002_181700-715:localhost:8800 ILZFEUMGMNVXCRVUDWRWjG]@anon-20191002_181700-714:localhost:8800@anon-20191002_181700-714:localhost:8800 ZONDVATSKCZDRCJEXKOTjF]@anon-20191002_181700-713:localhost:8800@anon-20191002_181700-713:localhost:8800 KIPGYKTLFAKDJTVTRSGZjX]@anon-20191002_181700-731:localhost:8800@anon-20191002_181700-731:localhost:8800 ILOHRMOXOHIFUHDIJRANjW]@anon-20191002_181700-730:localhost:8800@anon-20191002_181700-730:localhost:8800 GSHKMOXHVOBRIYTDHTIE Z , ?ZkaeQac$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3721}{"auth_events": ["$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "prev_events": ["$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "type": "m.room.power_levels", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"users": {"@anon-20191002_181700-730:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043910820, "hashes": {"sha256": "N8QnHAuKJUcL3WZ5Uq3VQON4snbkcVnsXrK9L6YZ0mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jZ0MT5bSxCmpnm6jwZykSoDnlH8niLAITG6YjXOsyzjf3iOxoSPhOwQ1IAdX6N+9O+p4WtnEE9vrVey3Nf70Bw"}}, "unsigned": {"age_ts": 1570043910820}}r`eQaq$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3720}{"auth_events": ["$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo"], "prev_events": ["$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo"], "type": "m.room.member", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"membership": "join", "displayname": "GSHKMOXHVOBRIYTDHTIE", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-730:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043910015, "hashes": {"sha256": "X2n3cDfgU2uVtVF51kbMu7bbFEdZH7Uef/4MRZVX3mQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dJfa8CKPM/4vaX3lR9EiIy/3kmx2WosU+d0PFLayORRdXkX26ByiGcFT8JabNbjAUB6AIdTu61fZm1hHu0FXCQ"}}, "unsigned": {"age_ts": 1570043910015}}i_eQa_$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3719}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-730:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043909211, "hashes": {"sha256": "CAzVbeCvwtxr+AoQhu9uuCFTW0zKzHbjAzAoTQnGUsA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yX4K4ewq+wvRKPq9gX4ihmPHFU6sldBt48/BOlOhZ0XYop5A7jgVa0zIlb2+s0bUQ0bi//aZ4X3QuA3BSPWvCg"}}, "unsigned": {"age_ts": 1570043909211}}P^eQa-$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3718}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU"], "type": "m.room.history_visibility", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043905163, "hashes": {"sha256": "TBrK/5YSEzjenmaI9OTa7ABYOAyTe5SczxVb+q/k+0g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbSOvAjCy322OH/FZJvpmHTI544jyAamjhLovB4ZKDVyxRoGQsXMIPrMJ5/GR+URVCjXIW2/f5cfVVpVKO44AA"}}, "unsigned": {"age_ts": 1570043905163, "replaces_state": "$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w"}} ! 0 @ P ` p(8HXhxuu ]@anon-20191002_181700-770:localhost:8800$2b$04$iyqLDp57XN.PoF2tH4nn0.7qJQ0oQengTg/6Li.IarFBJ/Q5d3Wgq]{ut ] @anon-20191002_181700-768:localhost:8800$2b$04$LQ77zGwoEnyXcBk/8SVAAOO2PHlHrznS.4e2xO.d/QeK1Z7lLw2ie]vus ] @anon-20191002_181700-767:localhost:8800$2b$04$.unm6liFWCNdKDpovUbNe.7y7/3ItZWMoSqhkKQsbei2c1Sp8rvVy]pur ] @anon-20191002_181700-766:localhost:8800$2b$04$k.0v7Wh3QFTXsX8vQH45Ce3ore6BGfSQ6AwIYLelPxElmluYzI0Ve]puq ] @anon-20191002_181700-764:localhost:8800$2b$04$vT66eO4fWT0GmCvsE2AxtuRUsnQn.4WSBG5VusVNrJJQe6Y82C9AO]oup ] @anon-20191002_181700-763:localhost:8800$2b$04$rO/aCNksyWuBD2mLK1BOCu.PVoNBQiThARcGJ27o6Kg/dbAxLqiAe]iuo ] @anon-20191002_181700-762:localhost:8800$2b$04$ZWuqJ5y0TlCvr7GRadHv.urUOfShfj1MCe1sO3.dr2hePdA3KXuOu]cun ] @anon-20191002_181700-761:localhost:8800$2b$04$RpKsTGGSgxTI3clX5rQImut4iFYogWD8/CM9lKPh3QjXd7tlTUR3K]bum ] @anon-20191002_181700-759:localhost:8800$2b$04$57avwY3/qey9gb6V7df4nuAJAo8hWeIsdYyn74UmfIGwLHcdqkn.m]aul ]@anon-20191002_181700-760:localhost:8800$2b$04$XQMZqqMYWBcOZmoBaHzQkeIagB29JKB8OhJH6ikITb85CcR6z5DmW]auk ] @anon-20191002_181700-758:localhost:8800$2b$04$GU4MhzHzigx9OLToAmP7I.jKnC.QSt3qp6ZD5HMh2TldJ2YNxKTCS]\uj ] @anon-20191002_181700-757:localhost:8800$2b$04$yUtYHtse0jpQpoaPOFHUjOQGgKhVhSSEs8jnXbfkS4jigqAh.L.0C]Sui ] @anon-20191002_181700-756:localhost:8800$2b$04$sTyOiJZxeFdi.Ums2u3s3.GWeZ9Iw0SwYygyJ70BPV.FulaRRyxXW]Quh ]@anon-20191002_181700-754:localhost:8800$2b$04$hLm0hZO8f2KSJzUMJIw5cOPTkgVwc5u0kwlv8GwoTGCCPB5L.JxVi]Dug ]@anon-20191002_181700-755:localhost:8800$2b$04$E6yYsR9iek2f.ovLtM8d6OZD6/hDzizWE4QklJacUfN/7h02l4yJ.]Duf ]@anon-20191002_181700-753:localhost:8800$2b$04$IRzhURbp4SFR5b6.TVITj.O.EFZru5eiCuVXrT42OL.Y19qSqWZh2]Bue ]@anon-20191002_181700-752:localhost:8800$2b$04$OoIIz2eqkBzhTGOKVUkztOjqghIyGYizFTvgpDPBif1YSFFqDpUcy]Aud ]@anon-20191002_181700-751:localhost:8800$2b$04$Svyu5B.4g01cBJgILLnwl.7EPySL218hKJU3wUFu5GS3pdaM6ONRO]9uc ]@anon-20191002_181700-750:localhost:8800$2b$04$8iP751kduLZw5kg24y9IEOO5GebR81WiLCgWPoWTbNQ154svT6F5G]9ub ]@anon-20191002_181700-749:localhost:8800$2b$04$BxePNB.gOJ/s7d5.RnGvPeNPiu6GYnJKx1vM5EomVDEOtnAKmFxE.]8ua ]@anon-20191002_181700-748:localhost:8800$2b$04$iHFBl3KfR2iz9odHSH184eIYWGvQ264UypjTIf064wbmoM9blPUIC]8u` ]@anon-20191002_181700-747:localhost:8800$2b$04$SpDV4mYUlJIcvNKLPqAcSO1NUM281JrI9flfv5MddxovwlUWAkPey],u_ ]@anon-20191002_181700-746:localhost:8800$2b$04$EA2Rz.IpNCmd3cbb3SwOX.PT3ypL/gS9RXQyEG.ltZOXNV3A3cqqm],u^ ]@anon-20191002_181700-745:localhost:8800$2b$04$JVpmok/ckjUwteGQRg.ZEeB.F05lldZjMdKq/wOklX6D4o4dLyFT6]*u] ]@anon-20191002_181700-744:localhost:8800$2b$04$w7OcCpU.pejWLoZTxryswOsshvut1o7ceS/zDIDAUhsNY.rMs3YDu]*u\ ]@anon-20191002_181700-743:localhost:8800$2b$04$UpysgO8s8dhkugVzCB/6fejoBNXdICnXnkq1UWIgJYr3xeBxm6QEm]#u[ ]@anon-20191002_181700-742:localhost:8800$2b$04$TTMFSVJogHr2RhpcSq14H.UVyKu/tAAqWWwdZejR6E6rrnJwYuOKG]!uZ ]@anon-20191002_181700-736:localhost:8800$2b$04$lFPmJDuyCwZ2Su2d8TRLLOaVnVMUf6psn3/mmGVq6MH6Ug.HmRnN6]uY ]@anon-20191002_181700-735:localhost:8800$2b$04$DmTYrTv80lql5T.tYyjD7OK0kX4PKnUdzP/9uG6KCN0q4XhG6g3Tu]uX ]@anon-20191002_181700-734:localhost:8800$2b$04$QaaXtDqgB0VsU1SWoKfAOuzzW2tohnTNyB63TGwIEQZnZeIQb41Ie]uW ]@anon-20191002_181700-733:localhost:8800$2b$04$kOkTTmV4rkNt6TwQMFigMuRXQBVgQKeqxuLhiiSyRBmaS74gF0N5G] uV ]@anon-20191002_181700-732:localhost:8800$2b$04$Z2e3VU4DQ6vj1lHULlGhSOrnr0GazjWXSrIh7TsE9pqSnvHa2aRhq] uU ]@anon-20191002_181700-731:localhost:8800$2b$04$YRNrlK1bQk.m9WQSazN/DueZXCsdtDsx9KvfnB8Wd5qujk8tWOqJG] ~z v r n j fb^ZVRNJFeeQ$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800eeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800eeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800eeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800eeQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800eeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800eeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800eeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800eeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800 8l D `82]c!E@anon-20191002_181700-745:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6PzrwoGZRCRCKGZN127.0.0.1Perl + Net::Async::HTTP/0.44mh1]c!E@anon-20191002_181700-744:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8QoMCGVEWCDCM127.0.0.1Perl + Net::Async::HTTP/0.44mf0]c!E@anon-20191002_181700-743:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQoYETXYLXSKF127.0.0.1Perl + Net::Async::HTTP/0.44mM/]c!E@anon-20191002_181700-742:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45HwoOLLAKSSDJK127.0.0.1Perl + Net::Async::HTTP/0.44mG.]c!E@anon-20191002_181700-736:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgoFLOTQJDCJV127.0.0.1Perl + Net::Async::HTTP/0.44m(-]c!E@anon-20191002_181700-735:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAoZQXZAKNBDX127.0.0.1Perl + Net::Async::HTTP/0.44mu,]c!E@anon-20191002_181700-734:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAoKYIXUZPIHI127.0.0.1Perl + Net::Async::HTTP/0.44m-+]c!E@anon-20191002_181700-733:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQoYGJVVHZCJQ127.0.0.1Perl + Net::Async::HTTP/0.44m?*]c!E@anon-20191002_181700-732:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAoXWWSSGHQCK127.0.0.1Perl + Net::Async::HTTP/0.44m<)]c!E@anon-20191002_181700-731:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQoQAJRBGVMCY127.0.0.1Perl + Net::Async::HTTP/0.44mӥ n )n7eeQa{$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3725}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM"], "type": "m.room.join_rules", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"join_rule": "invite"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043914766, "hashes": {"sha256": "VVHwSU21TqgoIBtvh+aUr5zuA08En0t64LN0kRjyowQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RLwVsaQLYYughaE18LksnTGVHLFOyJRWnknlv51bHtmltTeQUCoZHnpctAZaDEgr7+brV7yS3LIZ6Dkz+jWNAg"}}, "unsigned": {"age_ts": 1570043914766, "replaces_state": "$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU"}}RdeQa1$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 709, "stream_ordering": 3724}{"auth_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0", "$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0"], "prev_events": ["$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM"], "type": "m.room.member", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-731:localhost:8800", "content": {"membership": "join", "displayname": "ILOHRMOXOHIFUHDIJRAN", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-731:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043913740, "hashes": {"sha256": "lSgCj/mQEz/yZRObrEHe+qSMBrDer0n+e2a8IBtrx0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mij0X7tDNvBwFvldvkdCWIo5gurIjtVaXxJn7vwAVti8BqGnT8gSnyA4fDJxVPXVM0o10itDsq4r2fL0R84lBg"}}, "unsigned": {"age_ts": 1570043913740}}ceQa$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3723}{"auth_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0", "$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "prev_events": ["$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0"], "type": "m.room.history_visibility", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043912353, "hashes": {"sha256": "1B2to39mXCtLeSziXLr3pgORtJpB3lNKRFKnCVu4mJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R1hcQFZPOv1rgEYvwhUF53TW4ZmVK9bD8kdH3jlVHnNrszQkLLW538GN5UOFZSpdGWwjc/UMeDIix79ydaMPDw"}}, "unsigned": {"age_ts": 1570043912353}}tbeQau$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3722}{"auth_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0", "$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "prev_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0"], "type": "m.room.join_rules", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043911553, "hashes": {"sha256": "eNzb7F73U5uitZSd4uRinhKEHO0QAEDDyjZ1n6xNbjk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8wRizdr7QtqCy7F317AwTKbLHorKJTaAlpwERJko78GEZS2Xfd3G3cRgwDS0GVwIFhRTgAT3PYwFEM7HshrZDA"}}, "unsigned": {"age_ts": 1570043911553}} 'fj8q@ z H  N  T " Z ( ` .f1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA 1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQe1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQd1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQc1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk51e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk41e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk31e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukC1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukB1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukA1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0h1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0g1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0f1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8=1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8<1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIG1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIF0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU+0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU*0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU)0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU(1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk /Ij8pW> v ] D  | c 1 i 7  o = u C {1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAL1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAK1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAJ1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQt1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV031e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV021e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV011e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV001e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0/1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE3$79:localhost:424553$79:localhost:424551e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM3$78:localhost:424553$76:localhost:424553$76:localhost:424551e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:424553$73:localhost:424553$73:localhost:424553$72:localhost:424551e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM3$70:localhost:424553$70:localhost:424551e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k%1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E u1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E t1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E s1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA83 a} { y w u sqomkigeca~neeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~meeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800~leeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800~keeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~jeeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800~ieeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800~heeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~geeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800~feeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800~eeeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~deeQ$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~ceeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~beeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~aeeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~`eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800~_eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~^eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800~]eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800~\eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~[eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800~ZeeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800~YeeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~XeeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800~WeeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800~VeeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~UeeQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~TeeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~SeeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~ReeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~QeeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800~PeeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800 Jxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    p x h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80(                                                                 ~  |  {  y  w  x  v  u  t  s  r  p  o  n  m  l  k  j  h  g  f  e  c  b  a  `  _  ^  ]  [  Z  Y  X  W  V  T  S  R  Q  P  N  M  L  K  J  H  F  F  E  D  C  B  A  ?  >  =  <  ;  3  8  7  6 ~ 5 } 4 | 1 z 0 y / x . w - v , { + u ) s ( r ' q & p % o $ t # n " m ! l k  j  i  h  g  f  e  d  c  a  `  _  ^  ]  b [ Z Y X W  \  V  U  T  S  R  Q  P O N M L K I H G F E J C B A @ ? D > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                  ~  {  {  y  x  w  v  u  t  s  r  p  o  m  j  j  i  h  g  f  d  `  _  ]  ]  \  [  Z  Y  W  U  U  T  S  R  Q  O  M  K  K  J  I  H  G  F  D  D  C  B Jxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80(                                                                  }  |  {  z  y  w  v  u  t  s  q  p  o  n  m  l  k  i  h  g  f  d  c  b  a  `  _  ^  \  [  Z  Y  X  W  V  U  S  R  Q  O  N  M  L  K  I  H  G  F  E  D  C  B  @  ?  >  =  <  :  9  8  7 ~ 6 } 5 | 3 { 2 z 1 y 0 x / w . v , u + t * s ) r ( q ' p & o $ n # m " l ! k j  i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [ Z Y X W  V  U  T  S  R  Q  P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                   }  |  {  z  y  x  w  v  u  t  q  p  n  l  k  j  i  h  g  e  a  `  _  ^  ]  \  [  Z  X  W  V  U  T  S  R  P  O  N  M  L  K  J  I  H  F  E  D  C   .tieQau$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3729}{"auth_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo", "$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "prev_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo"], "type": "m.room.join_rules", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043919398, "hashes": {"sha256": "vRGiRNp2ghLaSZLlizjSWn1dmEA8HgZuQGSw4pMZfAo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8g+nLwcZeSVZ1umDuc0PGefxp1BRBVhd3U0fXmMbcVyjLn9Yfl4/XUbzJmwurvqtLABL85LQNPLW09ED0b35CA"}}, "unsigned": {"age_ts": 1570043919398}}kheQac$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3728}{"auth_events": ["$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "prev_events": ["$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "type": "m.room.power_levels", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"users": {"@anon-20191002_181700-732:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043918666, "hashes": {"sha256": "dqNwaIS0Z0KRXJWrmbXUAOVteI3YwyQgvGxpRUy2+IE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1FlPlBuV+isGeEeSuWvRdSHe72ECbkXVkaSzf+jlCNekjeI0w24liwk5PMSByEIu5m7nqiMsWNaiLJ1UmAdZCg"}}, "unsigned": {"age_ts": 1570043918666}}rgeQaq$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3727}{"auth_events": ["$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8"], "prev_events": ["$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8"], "type": "m.room.member", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"membership": "join", "displayname": "EAGTVMRMBZANCBKYPGOB", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-732:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043917650, "hashes": {"sha256": "0v+2eYy/ybgGCOvD1Hg0Zze9RAVz3qDmbPPLmJn+f84"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ixogrA9pWjshzKS8tgpV0zWwNU8oktpqeBd9peqj14HICXozMfKEZRBUT2xCf/VLjo7f7lM9THtZpZMZU0rLBQ"}}, "unsigned": {"age_ts": 1570043917650}}ifeQa_$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3726}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-732:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043916793, "hashes": {"sha256": "YMTgSheuwYdMSabj0/kqpmY8JhzfYc8Qy8lIU0qD890"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jnAlwNaHBkKu3cSl5tflt6Z2g9DthEzuO0XtuIoxS67zuWeXkzfa6esZEcb3bkx2yqUxLESNFhJn8P0KNp0DBw"}}, "unsigned": {"age_ts": 1570043916793}} Q<W%?]+}j8q? w w E ,  } Kc   X & 1j8}}1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI31e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4_1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkl1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ31e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gW1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs,1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ C1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y  1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A z1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIuq21e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00(21e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYp1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ @ ^e1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A Qd1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 V1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 S1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vki1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 21e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs )21e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0g1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ 1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg%1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI/1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4{1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4u1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw61e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw(1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng41e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ71e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG82 5F  h  `mE}U-g?wO' P (  x @ _7W/oG8p X 0   X 0  'Q!ZOwibbprUCQrSJQCrx:localhost:8800L'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!ZvLVbnHjeymRiFIkYr:localhost:8800{'Q!ZvLVbnHjeymRiFIkYr:localhost:8800z'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800n'Q!atnRTMliktaVUhMVID:localhost:8800m'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800P'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800W'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800g'Q!aLxrqpqLkbzyIxGgpk:localhost:8800Z'Q!aLxrqpqLkbzyIxGgpk:localhost:8800Y'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800V'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800 +'Q!ZWANpHlizyLrUiVvAm:localhost:8800t'Q!ZWANpHlizyLrUiVvAm:localhost:8800s'Q!ZNIjCvcWhgcwskanjT:localhost:8800m'Q!ZOwibbprUCQrSJQCrx:localhost:8800M'Q!aiOswwhoZqjhcjzbzc:localhost:8800@'Q!aiOswwhoZqjhcjzbzc:localhost:8800?'Q!aiOswwhoZqjhcjzbzc:localhost:8800>'Q!anErKtXIsVKEEsrzWM:localhost:8800;'Q!anErKtXIsVKEEsrzWM:localhost:8800:'Q!ZKPJvrCZHMHPEksYDc:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800P'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800Q'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800n'Q!YpcmaMNMzjvtgYtrli:localhost:8800`('Q!biBIcqnGelHvLnpkOu:localhost:8800E('Q!biBIcqnGelHvLnpkOu:localhost:8800F'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800  4 h j6d]c@anon-20191002_181700-772:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAo127.0.0.1˂d]c@anon-20191002_181700-770:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQo127.0.0.1ɂd]c@anon-20191002_181700-768:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAo127.0.0.1ǂd]c@anon-20191002_181700-769:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQo127.0.0.1Ȃd]c@anon-20191002_181700-771:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwo127.0.0.1ʂd]c@anon-20191002_181700-767:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQo127.0.0.1Ƃd]c@anon-20191002_181700-766:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQo127.0.0.1łd]c@anon-20191002_181700-764:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQo127.0.0.1Ăd]c@anon-20191002_181700-763:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgo127.0.0.1Âd]c@anon-20191002_181700-762:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1Qo127.0.0.1‚d]c@anon-20191002_181700-761:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQo127.0.0.1  wimeQa_$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3733}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-734:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043924772, "hashes": {"sha256": "pgGdmSnsWATLl7+MfBovKcGEkVUrS1AqHPsHepktA8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DVKifwlP8caXBckLWL3FeSz4QE2bEgK5AZMUM1VK3NQ9HBGlHmh+6NyajHj97jWZqYAEI+wnVpp2bUGqNPXpAw"}}, "unsigned": {"age_ts": 1570043924772}}HleQa$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3732}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90"], "type": "m.room.history_visibility", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043922242, "hashes": {"sha256": "LLESGbX+3jEIm6YFUb7H9c1RKpvPJw2V8afQXKKLNR0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZOI2EFd+ojS8kkoOREnHN01ZCe9jYBuEb/4avUrAYZXeDKN7SkdrUAtddGwzeUdyfSc+tjRlq3hBZJsr7BlDDQ"}}, "unsigned": {"age_ts": 1570043922242, "replaces_state": "$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM"}}RkeQa1$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 711, "stream_ordering": 3731}{"auth_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo", "$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ"], "prev_events": ["$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4"], "type": "m.room.member", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-733:localhost:8800", "content": {"membership": "join", "displayname": "RJATOAIYTIXPIBSXDZQD", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-733:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043921289, "hashes": {"sha256": "wXv8ei+CvgcdQN74O0G6Fk3DzDEebUycCG+rRO5K3rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QXQvG80rsBx+KgXuYZRPJ1W4oIvo1xSZrXTVec+QS/ULIMsG1ijsfnxfcJ476iQG+w0unMpSApDGROUYuMnXBA"}}, "unsigned": {"age_ts": 1570043921289}}jeQa$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3730}{"auth_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo", "$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "prev_events": ["$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ"], "type": "m.room.history_visibility", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043920046, "hashes": {"sha256": "u5IM0OlI0WrlTJ8Yg/OIqHLSG5/1ohUr25DROjnjvhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FZFvxFeeq/HkY/PhcUGT3BwM1VNTKSm+WjWy9wi3/YmbJFbZOxEf81iGxudo8+M3DturaLoX22ISiZ5Df1UtAQ"}}, "unsigned": {"age_ts": 1570043920046}} ^] f  $ ' IAJrox 96^hpQ/ e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rules$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMjoQ3 e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM nQ']e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IpmQ? e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibility$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkdlQ' e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.create$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0hkQ/ e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rules$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0jjQ3 e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 iQ']e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUodhQ' e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ gQ']e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegopfQ? e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibility$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oheQ/ e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rules$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0jdQ3 e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y cQ']e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0dbQ' e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU8aQ']ee!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK08`Q']ee!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 _Q']e!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4p^Q? e!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibility$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYh]Q/ e!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rules$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cj\Q3 e!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ [Q']e!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcdZQ' e!eGEEtFXUXuZDImkeql:localhost:8800m.room.create$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU YQ']e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8pXQ? e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibility$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFoghWQ/ e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rules$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAjVQ3 e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras UQ']e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIdTQ' e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.create$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvESQ? ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM RQ']e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1EpQQ? e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibility$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 2@MZ 3>uQdbu& 9 L _  r # 6$P]Q@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800vP]Q@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800pP]Q@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800oP]Q@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800nP]Q@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800mP]Q@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800lP]Q@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800kP]Q@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800jP]Q@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800iP]Q@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800hP]Q@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800rP]Q@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800qN[Q@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800-P]Q@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800uP]Q@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800tP]Q@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800sN[Q@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:88006N[Q@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:88005N[Q@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:88004N[Q@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:88003N[Q@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:88002N[Q@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:88001N[Q@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:88000N[Q@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800/N[Q@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800.8/Q@random_dude:test!oXKJArsPmtgaYANBrg:localhost:8800b7+Q@bob:matrix.org!aLxrqpqLkbzyIxGgpk:localhost:8800Z7+Q@bob:matrix.org!WhqVaRReBxJXADAyYD:localhost:8800\N[Q@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800KN[Q@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800IN[Q@anon-20191002_181700-98:localhost:8829!OMkiVTuuOEeiFAXtUY:localhost:8800LN[Q@anon-20191002_181700-98:localhost:8829!OMkiVTuuOEeiFAXtUY:localhost:8800JN[Q@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800GN[Q@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800EN[Q@anon-20191002_181700-96:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800HN[Q@anon-20191002_181700-96:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800FN[Q@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800>N[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800DN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800CN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800BN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800AN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800@N[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800?N[Q@anon-20191002_181700-93:localhost:8800!EyEaTZElOkdURKbEXo:localhost:8800;N[Q@anon-20191002_181700-92:localhost:8829!EyEaTZElOkdURKbEXo:localhost:8800=N[Q@anon-20191002_181700-92:localhost:8829!EyEaTZElOkdURKbEXo:localhost:8800 v DP   | J  P\  * W %V i ] ] +1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w#1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM 1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssD1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8>1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo )1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgo21e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ <1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ 71e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg 1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS080e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA41e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0,1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 21e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU ~1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA G1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 >1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 "1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsp1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU-1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA -1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30E1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREC1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUj1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEU1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0&1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim491e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A%1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYg1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg/1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA 1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg" -RM H C > 9 4/*|%w rmhc T3Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgT2Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUT1Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsT0Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcT/Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgT.Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8T-Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwT,Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsT+Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_YT*Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwT)Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIT(Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicT'Qe!URpLZLuBfVcfHVTBGS:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywT&Qe!URpLZLuBfVcfHVTBGS:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkT%Qe!URpLZLuBfVcfHVTBGS:localhost:8800$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEoT$Qe!URpLZLuBfVcfHVTBGS:localhost:8800$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01ET#Qe!URpLZLuBfVcfHVTBGS:localhost:8800$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMT"Qe!URpLZLuBfVcfHVTBGS:localhost:8800$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMT!Qe!URpLZLuBfVcfHVTBGS:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IT Qe!YaLuQzmJKSMTSFEqjO:localhost:8800$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkTQe!URpLZLuBfVcfHVTBGS:localhost:8800$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0TQe!YaLuQzmJKSMTSFEqjO:localhost:8800$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0TQe!YaLuQzmJKSMTSFEqjO:localhost:8800$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0TQe!YaLuQzmJKSMTSFEqjO:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoTQe!YaLuQzmJKSMTSFEqjO:localhost:8800$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegoTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0TQe!cOFSwLSkxZECJMvjjZ:localhost:8800$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0YTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0TQe!cOFSwLSkxZECJMvjjZ:localhost:8800$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUTQe!eGEEtFXUXuZDImkeql:localhost:8800$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgTQe!eGEEtFXUXuZDImkeql:localhost:8800$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0TQe!eGEEtFXUXuZDImkeql:localhost:8800$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4TQe!eGEEtFXUXuZDImkeql:localhost:8800$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYTQe!eGEEtFXUXuZDImkeql:localhost:8800$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cTQe!eGEEtFXUXuZDImkeql:localhost:8800$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQTQe!eGEEtFXUXuZDImkeql:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcT Qe!eGEEtFXUXuZDImkeql:localhost:8800$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUT Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8T Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogT Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAT Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasTQe!ZOpRjvUhkWYJBFJZeO:localhost:8800$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxITQe!ZOpRjvUhkWYJBFJZeO:localhost:8800$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE  qeQa$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3737}{"auth_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras", "$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "prev_events": ["$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA"], "type": "m.room.history_visibility", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043927890, "hashes": {"sha256": "E928jahmZ2AhpT+p3eGLYY44IXVeO2Ercf0tRtL2kxA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JU0czTx+F3H6ydM+klFcOZ/1EeM5KC+QD/mFE4qy6cQMjUwDvPgJqEJ7hGvQGlSbD48MtYAACo7zM4y/tHs5DQ"}}, "unsigned": {"age_ts": 1570043927890}}tpeQau$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3736}{"auth_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras", "$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "prev_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras"], "type": "m.room.join_rules", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043927146, "hashes": {"sha256": "AQBJUiN+SWR5aXRLQpqZTEOq9pz6zWcGmzS92dPf7sQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mnBBO6V+FCQwYNizgQrXk6Z1cSpoyPDyZNR0rtnj88cbVMGvQ/p75RgoQzYJMgCNX2lMIPQEKz4oZOd6+JqzCQ"}}, "unsigned": {"age_ts": 1570043927146}}koeQac$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3735}{"auth_events": ["$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "prev_events": ["$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "type": "m.room.power_levels", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"users": {"@anon-20191002_181700-734:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043926407, "hashes": {"sha256": "0k7Z9afxDRSyfUongmncB+Y9MW/I8YlK64KEF0uDeLc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SC1cK4Xl2PHMVnqaI+p/9AtGJ7wa2ZlV10fsnPvzBKw5WooyqobvjxWHE5n+Mv36MrkyqeCmisqo08gatUoyBw"}}, "unsigned": {"age_ts": 1570043926407}}rneQaq$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3734}{"auth_events": ["$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE"], "prev_events": ["$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE"], "type": "m.room.member", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"membership": "join", "displayname": "UXASHYODWFCQEAPTTQYS", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-734:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043925708, "hashes": {"sha256": "Zbz714Mna6LM91F3DLd2MArazURqRQS03Rhof4uKkNs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "idsyE9kIQtX++z3XXXYooY+I/1pK3TjpmXvhsKKR6nAgoJucuj2lMd8dIl7MkYb7fp8temtC6w0sEwueL6CaBQ"}}, "unsigned": {"age_ts": 1570043925708}} PV Z  j  n&6:JP,.e?Q ]$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkm.room.history_visibility!YaLuQzmJKSMTSFEqjO:localhost:8800m}m逕@anon-20191002_181700-744:localhost:8800- e'Q  ]$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0m.room.create!URpLZLuBfVcfHVTBGS:localhost:8800m|ym|@anon-20191002_181700-746:localhost:8800$,e/Q ]$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0m.room.join_rules!YaLuQzmJKSMTSFEqjO:localhost:8800my0mz@anon-20191002_181700-744:localhost:8800&+e3Q ]$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0m.room.power_levels!YaLuQzmJKSMTSFEqjO:localhost:8800msmv@anon-20191002_181700-744:localhost:8800 *e'Q ]$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUom.room.member!YaLuQzmJKSMTSFEqjO:localhost:8800mm mn@anon-20191002_181700-744:localhost:8800) e'Q  ]$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQm.room.create!YaLuQzmJKSMTSFEqjO:localhost:8800milmi@anon-20191002_181700-744:localhost:8800 (e'Q ]$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegom.room.member!cOFSwLSkxZECJMvjjZ:localhost:8800m`tm`@anon-20191002_181700-743:localhost:8800,'e?Q ]$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-om.room.history_visibility!cOFSwLSkxZECJMvjjZ:localhost:8800m[Km]@anon-20191002_181700-742:localhost:8800$&e/Q ]$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0m.room.join_rules!cOFSwLSkxZECJMvjjZ:localhost:8800mXmY@anon-20191002_181700-742:localhost:8800&%e3Q ]$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Ym.room.power_levels!cOFSwLSkxZECJMvjjZ:localhost:8800mTmV@anon-20191002_181700-742:localhost:8800 $e'Q ]$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0m.room.member!cOFSwLSkxZECJMvjjZ:localhost:8800mQkmQ@anon-20191002_181700-742:localhost:8800# e'Q  ]$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUm.room.create!cOFSwLSkxZECJMvjjZ:localhost:8800mNimN@anon-20191002_181700-742:localhost:8800 "e'Q ]$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgm.room.member!eGEEtFXUXuZDImkeql:localhost:8800mBYmFZ@anon-20191002_181700-737:localhost:8829 !e'Q ]$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0m.room.member!eGEEtFXUXuZDImkeql:localhost:8800m?^m@/@anon-20191002_181700-737:localhost:8829 e'Q ]$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4m.room.member!eGEEtFXUXuZDImkeql:localhost:8800m<m=1@anon-20191002_181700-736:localhost:8800,e?Q ]$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYm.room.history_visibility!eGEEtFXUXuZDImkeql:localhost:8800m5wm7@anon-20191002_181700-736:localhost:8800$e/Q ]$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cm.room.join_rules!eGEEtFXUXuZDImkeql:localhost:8800m2|m3`@anon-20191002_181700-736:localhost:8800&e3Q ]$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQm.room.power_levels!eGEEtFXUXuZDImkeql:localhost:8800m/\m0@anon-20191002_181700-736:localhost:8800 e'Q ]$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcm.room.member!eGEEtFXUXuZDImkeql:localhost:8800m,m-=@anon-20191002_181700-736:localhost:8800 e'Q  ]$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUm.room.create!eGEEtFXUXuZDImkeql:localhost:8800m)5m)@anon-20191002_181700-736:localhost:8800 e'Q ]$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8m.room.member!ZOpRjvUhkWYJBFJZeO:localhost:8800m"m#'@anon-20191002_181700-735:localhost:8800,e?Q ]$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogm.room.history_visibility!ZOpRjvUhkWYJBFJZeO:localhost:8800mRmU@anon-20191002_181700-734:localhost:8800$e/Q ]$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAm.room.join_rules!ZOpRjvUhkWYJBFJZeO:localhost:8800mjmi@anon-20191002_181700-734:localhost:8800&e3Q ]$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasm.room.power_levels!ZOpRjvUhkWYJBFJZeO:localhost:8800mm@anon-20191002_181700-734:localhost:8800 8xF (,j9 q? L w F   "^   N  ` .f5R X Z 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY &21e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU:1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ~21e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQX1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs#1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwd1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcs1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgR1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu801e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 W1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw21e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI Z21e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0R1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEt1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB01e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Ar1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU i 21e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 Tc1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwX0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW081e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYj1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs80e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak80e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4]1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsb1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMM1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM;1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q02 !]q | 4   -,7a$F(3]g7Q/ e `!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rules$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Yi6Q3 e _!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw 5Q']e ^!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIc4Q' e ]!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic 3Q']e \!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw 2Q']e [!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLki1Q3 e Z!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_access$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEoo0Q? e Y!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibility$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Eg/Q/ e X!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rules$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMi.Q3 e W!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM -Q']e V!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Io,Q? e U!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibility$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkc+Q' e T!URpLZLuBfVcfHVTBGS:localhost:8800m.room.create$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0g*Q/ e S!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rules$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0i)Q3 e R!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 (Q']e Q!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoc'Q' e P!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ &Q']e O!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegoo%Q? e N!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibility$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-og$Q/ e M!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rules$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0i#Q3 e L!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y "Q']e K!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0c!Q' e J!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU Q']e I!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg Q']e H!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 Q']e G!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$NF6QJGaiXg5wluKm4znGCpLM0q6uwlc3KaRF5d5R8QU Q']e F!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4oQ? e E!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibility$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYgQ/ e D!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rules$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3ciQ3 e C!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ Q']e B!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmccQ' e A!eGEEtFXUXuZDImkeql:localhost:8800m.room.create$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU Q']e @!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 X * =XkueQac$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3741}{"auth_events": ["$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "type": "m.room.power_levels", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"users": {"@anon-20191002_181700-736:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043932508, "hashes": {"sha256": "r6eUEEVnEMFRXMxaCrJrPgNGcN8gaCpdfpQL8PvVk4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GNqEuIH9yQ3hsev7RGLGrWC3w4f7qC323ChuNmy43nbzH+bHwZWZ7dgeyjkhcIMikCn613k63hhZbjP7m6meAQ"}}, "unsigned": {"age_ts": 1570043932508}}rteQaq$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3740}{"auth_events": ["$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU"], "prev_events": ["$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU"], "type": "m.room.member", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"membership": "join", "displayname": "VBKUVYHGDOTERLMJKIKN", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-736:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043931870, "hashes": {"sha256": "OV56EXrVqTh9ulAec2up+DatrQqFCaoDC53aBKVvus4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WoRVxX6Kv3QVTeJgH9yFj/Qp2IhoxFjCA3U0OX5nGwzl0gX5iy+o/+LIZQ7F3sIkXKaY9wYmjYyOSRR/u7LoDg"}}, "unsigned": {"age_ts": 1570043931870}}iseQa_$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3739}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-736:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043930933, "hashes": {"sha256": "CgqAqtZa0Gpdw30QJ3wGhPNOwiO8Rh94/YDL5Hp1PyE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z7Z5H00sp2P25/wdnWlQwY8NqDWNtkC7d6WzUln8xva4tq6rKWJeC558J6YMnxGMTDWjNJQ7Du6V/BnYrn6gCA"}}, "unsigned": {"age_ts": 1570043930933}}RreQa1$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 713, "stream_ordering": 3738}{"auth_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras", "$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA"], "prev_events": ["$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog"], "type": "m.room.member", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-735:localhost:8800", "content": {"membership": "join", "displayname": "SIQEQJQUXKKSPCJKORZN", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-735:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043929245, "hashes": {"sha256": "shuhankv0hZo4qIi7pSk0zQYDtpP0yXNnA51GUXwyRg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "10vm4rC68uK7feYWOW12oJInYaAtDXbmOLZWfBQgkQIj4bw+W+to9GUenf8CQwx9hveGyCrufJTKCy8JDwSkDQ"}}, "unsigned": {"age_ts": 1570043929245}} a} { y w u sqomkigeca~ eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800~eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800~~eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~}eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~|eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~{eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800~zeeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~yeeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~xeeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~weeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~veeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~ueeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~teeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~seeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~reeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~qeeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~peeQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~oeeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VeL$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNssha256a7cJA !f2bVeL$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawsha256Yd!&*w0|m+wD퉬VeL$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIosha256Uw!h$:~:-rOІz(VeL$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4sha256z3,9X Y YQhJwVeL$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgsha256<~0O8Hc b:fz6VeL$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUsha256>&{u@e;aQ(`VeL$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxssha2565Zf<;vc9#)^kVeL$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcsha256URL!t4z@^xF,VeL$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lgsha256?N66XFăkq) ".t gRVeL$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8sha256$ ƚx[l4G3|?V eL$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwsha256I x>{UvDv=|'R/*CV eL$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdssha256'F HּD:z &#myV eL$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ysha256*aȾl"6Y/\#MOV eL$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwsha256j jTr"cdƝle-uNwPV eL$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIsha256:=BŦሟnѪ )L)VeL$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicsha256[a.m|Mm$u.Q hRo:'VeL$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywsha256 : `AqB1|53m3,VeL$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLksha256AvDaF`8ӵy~ &Enc̹VeL$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEosha256Ԧ0GΊ4>jhQ'RPJVeL$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Esha256xVu5f{ W9-rȼ/JύQVeL$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMsha256r "dH5L]-ba4xVeL$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMsha256jVݙ{IRqr YVeL$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Isha256D#V{Zlj8}䈓)袭nbVeL$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkksha256GW<7k3K6U`>IVeL$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0sha256k `4on➳~"DK#;mV~eL$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0sha256VM#]* WEκnDh0~fV}eL$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0sha256} (LBҝ4 *q=<=V|eL$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUosha256;Wk1E>: 2A6]~Ժ YJV{eL$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQsha256F F1۞ǙP'JMMGQVzeL$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegosha256ݖ0"kϝDB-u eƛ`z VyeL$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-osha256%C =AQfH~}qBćVxeL$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0sha256cAXdq2)@]F9蚈UmF;VweL$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Ysha256-̗c >0*h?#1X{FVveL$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0sha256Pkso>&H`Fb ?e]-VueL$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUsha256G.0N|OP}W|xD`AjeVteL$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgsha256)[ѰYTƑPe `8zG4VseL$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0sha256 8K{IeV”TcoHXRn VreL$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4sha256 7kN5tX0C3BfnVqeL$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYsha256aVOM9f)s+#6W/Cy&VpeL$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3csha256/ zrSVd+i"~HR wVoeL$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQsha256Z`љ%A&΃Nㅿvf !UVneL$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcsha256 vX_N[cN)\ʚmgVmeL$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUsha256Am39Ɨ'po\MXw%w*@)%VleL$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8sha256/gu%vjʘj=9rYEU%_ ZfP p 3  D q . W  k ZAQ? !aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibility{5Q' !aWbcZNVBalJilCEsdr:localhost:8800m.room.createw;Q3 !aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels_\Q'[!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800^9Q/ !aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rules`AQ? !aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibilitya5Q' !aWJOsiuJONOvjKWEjO:localhost:8800m.room.create]9Q- !aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstoneA<Q3 !aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelsB^Q']!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:88006:Q/ !aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rules8BQ? !aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibility96Q' !aVxOoyiLLnxmzgLJat:localhost:8800m.room.create5<Q3 !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels^Q']!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800:Q/ !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rulesBQ? !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibility6Q' !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.create9Q- !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstone<Q3 !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsEQ'+!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org^Q']!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800:Q/ !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rulesBQ? !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibility6Q' !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.create<Q3 !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels\^Q']!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800[^Q']!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800_:Q/ !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rules] @CJ V  \ g ' 3 r o 9 z1}AG R]!m1}AQ9L ]@anon-20191002_181700-790:localhost:8800a&\>K ]  @anon-20191002_181700-787:localhost:8800m&\C9J ]@anon-20191002_181700-787:localhost:8800a&\9I ]@anon-20191002_181700-788:localhost:8800a&\9H ]@anon-20191002_181700-786:localhost:8800a&\9G ]@anon-20191002_181700-785:localhost:8800a&\9F ]@anon-20191002_181700-784:localhost:8800a&\9E ]@anon-20191002_181700-783:localhost:8800a&\9D ]@anon-20191002_181700-782:localhost:8800a&\9C ]@anon-20191002_181700-781:localhost:8800a&\9B ]@anon-20191002_181700-779:localhost:8800a&\9A ]@anon-20191002_181700-777:localhost:8800a&\9@ ]@anon-20191002_181700-775:localhost:8800a&\9? ]@anon-20191002_181700-773:localhost:8800a&\9> ]@anon-20191002_181700-774:localhost:8800a&\9= ]@anon-20191002_181700-771:localhost:8800a&\9< ]@anon-20191002_181700-772:localhost:8800a&\9; ]@anon-20191002_181700-769:localhost:8800a&\9: ]@anon-20191002_181700-770:localhost:8800a&\>9 ]  @anon-20191002_181700-768:localhost:8800m&\C98 ]@anon-20191002_181700-768:localhost:8800a&\>7 ]  @anon-20191002_181700-767:localhost:8800m&\C96 ]@anon-20191002_181700-767:localhost:8800a&\95 ]@anon-20191002_181700-766:localhost:8800a&\94 ]@anon-20191002_181700-764:localhost:8800a&\>3 ]  @anon-20191002_181700-763:localhost:8800m&\C92 ]@anon-20191002_181700-763:localhost:8800a&\>1 ]  @anon-20191002_181700-762:localhost:8800m&\C90 ]@anon-20191002_181700-762:localhost:8800a&\9/ ]@anon-20191002_181700-761:localhost:8800a&\9. ]@anon-20191002_181700-759:localhost:8800a&\9- ]@anon-20191002_181700-760:localhost:8800a&\>, ]  @anon-20191002_181700-758:localhost:8800m&\CA& ]@anon-20191002_181700-754:localhost:8800m&\. u9+ ]@anon-20191002_181700-758:localhost:8800a&\>* ]  @anon-20191002_181700-757:localhost:8800m&\C9( ]@anon-20191002_181700-756:localhost:8800a&\9) ]@anon-20191002_181700-757:localhost:8800a&\># ]  @anon-20191002_181700-752:localhost:8800m&\?9% ]@anon-20191002_181700-754:localhost:8800a&\9$ ]@anon-20191002_181700-755:localhost:8800a&\=' ]  @anon-20191002_181700-755:localhost:8800m&\9" ]@anon-20191002_181700-753:localhost:8800a&\9! ]@anon-20191002_181700-752:localhost:8800a&\= ]  @anon-20191002_181700-751:localhost:8800m&\> ] @anon-20191002_181700-750:localhost:8800m&\K9 ]@anon-20191002_181700-751:localhost:8800a&\9 ]@anon-20191002_181700-750:localhost:8800a&\9 ]@anon-20191002_181700-749:localhost:8800a&\9 ]@anon-20191002_181700-748:localhost:8800a&\> ] @anon-20191002_181700-746:localhost:8800m&\K> ]  @anon-20191002_181700-744:localhost:8800m&\?9 ]@anon-20191002_181700-747:localhost:8800a&\9 ]@anon-20191002_181700-746:localhost:8800a&\= ]  @anon-20191002_181700-747:localhost:8800m&\9 ]@anon-20191002_181700-745:localhost:8800a&\9 ]@anon-20191002_181700-744:localhost:8800a&\= ]  @anon-20191002_181700-743:localhost:8800m&\R> ]  @anon-20191002_181700-742:localhost:8800m&\?9 ]@anon-20191002_181700-743:localhost:8800a&\9 ]@anon-20191002_181700-742:localhost:8800a&\> ] @anon-20191002_181700-736:localhost:8800m&\9 ]@anon-20191002_181700-736:localhost:8800a&\= ]  @anon-20191002_181700-735:localhost:8800m&\R "R= @ & 5 c f u ?Bp |!IR WeQ']$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800gVeQ3 $SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_accessmUeQ? $J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibilityeTeQ/ $KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rulesgSeQ3 $asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels ReQ']$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800aQeQ' $wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create PeQ']$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800 OeQ']$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800gNeQ3 $_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_accessmMeQ? $s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibilityeLeQ/ $ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rulesgKeQ3 $ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels JeQ']$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800mIeQ? $w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibilityaHeQ' $5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800m.room.createeGeQ/ $2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rulesgFeQ3 $zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels EeQ']$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800aDeQ' $5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create CeQ']$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800mBeQ? $JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibilityeAeQ/ $Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rulesg@eQ3 $vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels ?eQ']$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800a>eQ' $5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create =eQ']$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829 <eQ']$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829 ;eQ']$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829m:eQ? $-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibilitye9eQ/ $L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rulesg8eQ3 $WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels 7eQ']$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800a6eQ' $HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800m.room.create ~~Q]e!QWLJZmJqjWZjVOjdYF:localhost:8800@astest-1-20191002_181700:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4ojoin  xeQa/$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3744}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY"], "type": "m.room.member", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-737", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-737:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043935944, "hashes": {"sha256": "njOSPRzbb76WNmxv8pq1aVleSd/v/NcaSIsByo0UCwE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WMKz12EoQA3Mzs39nPZKL4J4FjwMAeCX7N5JtzQ4R272Nhop7VpEmZGcB6DiJJ4/thZUtHy5h07XRBwkcYHDDg"}, "localhost:8829": {"ed25519:a_UxIG": "3xRCZj/AG2ZB3lIZ9fUGisMavgKncixXBoac2Z7U9ieB3RgB5OyQZOWI2cSZqY4Sv5I8GJMmfb+Egw385nnOCg"}}, "unsigned": {"age_ts": 1570043935944, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-736:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-736:localhost:8800", "content": {"membership": "join", "displayname": "VBKUVYHGDOTERLMJKIKN", "avatar_url": null}, "sender": "@anon-20191002_181700-736:localhost:8800"}]}}weQa$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3743}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c"], "type": "m.room.history_visibility", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043934071, "hashes": {"sha256": "eegRyypHwWRS7O4TYBG71hWTqLkZ70uyPOM5UlyvR4k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "knb/1HBU82iioLMUwzAvqDcEweB4F9BybITTou+ZFnsLyb0R1tr0nG3n40BrmoCbpz44q97n8ToKBz5i8p/bAw"}}, "unsigned": {"age_ts": 1570043934071}}tveQau$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3742}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ"], "type": "m.room.join_rules", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043933308, "hashes": {"sha256": "ggdvX6neD5yfwr7y2P1V8QtAxaWfIyCd5GryUJQV2iE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WwA840fr84ccbMmdY3IECcvnQXZhfvkPFDFcdxk1zY/eR3Ae8Ocw7Z+gib1inq08S85hUpbmKVD4YONgdx9TBw"}}, "unsigned": {"age_ts": 1570043933308}}  Ij}r|eQaq$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3748}{"auth_events": ["$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU"], "prev_events": ["$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU"], "type": "m.room.member", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"membership": "join", "displayname": "WNMMSFHZOBUAIGUKXEDS", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-742:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043941227, "hashes": {"sha256": "xsGizZhFMCJGwo27Y5RIdN3CQWaO255jC/vsEJbtiqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QN2CBjI/VgmMuxwSMpiI4kE8OKFZJWcvgeNuak7mxUTAiSKoYC8yXX5L+DobGiUEpWcMYY/kYQ074lDsBFZGBg"}}, "unsigned": {"age_ts": 1570043941227}}i{eQa_$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3747}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-742:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043940457, "hashes": {"sha256": "bLOvyuavsLGaeegXyQY+jD7qJIM5dREskIlYh4SeJHg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vkuiae4eGOLwjWLuFwgvKtYZ0KDCNvzj3D5Vu4ura5FZRtkSv8e8w1t5bDcnBWRFMOL/ep0E/w6umFh6FprDDA"}}, "unsigned": {"age_ts": 1570043940457}}[zeQcA$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800{"outlier": false, "stream_ordering": 3746}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "Y+0hleYnnHJm0dZSaoMfxvd3SNJK7TFCKk7MrNlOKFE"}, "origin": "localhost:8829", "origin_server_ts": 1570043937369, "prev_events": ["$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0"], "prev_state": [], "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-737:localhost:8829", "state_key": "@anon-20191002_181700-737:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "zOklSmYhebaDitznnGn7BOztNozVXlAg0WgZa5wdRkWqeHGfin5TntQc4OFoNt3q2Idp/bSjA6+NkHXctkQtCA"}}, "unsigned": {"age_ts": 1570043937369, "replaces_state": "$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0"}}3yeQ1!$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 3745}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-737", "membership": "join"}, "depth": 7, "hashes": {"sha256": "aCiGagMFalOmDqFeCF807dZG3olbUWVArwopRrqyMsU"}, "origin": "localhost:8829", "origin_server_ts": 1570043936606, "prev_events": ["$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4"], "prev_state": [], "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-737:localhost:8829", "state_key": "@anon-20191002_181700-737:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VXJUI5CFT46NNuS8eD6ofyb0DEGsWXmLe3SlShbf99K2ZWR67cirWIKcnmGpmxyRTfUzydqfbTwpj+6GFrwtCw"}, "localhost:8829": {"ed25519:a_UxIG": "mEeNOTVWansQ5gzHo0q9ieB1mrjQgSrcFmFefiwKkS74pE9cTFyoJ43dXGmr8O8SFaoFT33tADhbjuKlJ2B4Cw"}}, "unsigned": {"age": 95, "replaces_state": "$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4"}} S<  v D Y>' J zI P g p j /! O5n< [ a U # 1e )1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEL20e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4O61e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIE1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c_1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms@1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE01e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYD0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAH1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsQ1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg01e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw21e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648e1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c 1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8) 1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIY1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA P1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ B1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAA1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngY 21e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI > |d1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M 21e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E Q1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ E1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM/1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qi1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI21e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQT8d1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y21e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM d &j8p> v D  | J  P  V $ \ *1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgj1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgi1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgh1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro %1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro $1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E1e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs1e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs1e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw 1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw 1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw 1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-01e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-01e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-01e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE61e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE51e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE41e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP81e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE"1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE 1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us E1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk <  | v D ; * b>Um G \#ysA V J $  \ *g P p83Xiw21e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkg1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY[1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg~1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc p1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc81e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEU1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Mo(1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw |1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 2 21e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM \1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsV1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg521e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAx0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUt1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE/21e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U 1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUc 2 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY'1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q 1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o01e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V401e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg|1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ W 21e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU d1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 21e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo 1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg}1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIe0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rwZ1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUvj21e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY21e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc2 1a`8qI! Z 2 j B  } V /  i A  ya Q ) 'Q!pTvdDtkgovsIdAdxCm:localhost:8800h'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800@'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:8800b&Q!oXKJArsPmtgaYANBrg:localhost:8800a&Q!oXKJArsPmtgaYANBrg:localhost:8800`'Q!nxLxsxzliamzflrEBs:localhost:88001'Q!nvclDopiBLEOKBIheH:localhost:8800i&Q!ntuwVdUxfzNIhIKYaz:localhost:8800|&Q!ntuwVdUxfzNIhIKYaz:localhost:8800{&Q!ntuwVdUxfzNIhIKYaz:localhost:8800z'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800~'Q!mvgUHEsfGqDkPQUvfG:localhost:8800?'Q!mvgUHEsfGqDkPQUvfG:localhost:8800>'Q!mvgUHEsfGqDkPQUvfG:localhost:8800=&Q!msMfSdLIAvklSSAnci:localhost:8800p'Q!mogJVPxghalmKbblUq:localhost:8800U'Q!mogJVPxghalmKbblUq:localhost:8800T'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800R'Q!mMsxpaIlcykPuOnDyl:localhost:8800K'Q!mMsxpaIlcykPuOnDyl:localhost:8800J'Q!mBQpGaIiadEuKBXfOw:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800%'Q!lgejtcwlywOoIXwEgy:localhost:8800$'Q!laUExtszUaoCpZoyEq:localhost:8800R'Q!laUExtszUaoCpZoyEq:localhost:8800Q'Q!laUExtszUaoCpZoyEq:localhost:8800P g * T~=ggL]!c@anon-20191002_181700-753:localhost:8800PLSIYKWQOBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQogK]!c@anon-20191002_181700-752:localhost:8800RYCPPVBPAQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQogJ]!c@anon-20191002_181700-751:localhost:8800FXMMNKQIDMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAogI]!c@anon-20191002_181700-750:localhost:8800VQNSLBGSCNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAogH]!c@anon-20191002_181700-749:localhost:8800UPJEGCTJBWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFN5WHdDLH5FMnhebkxfZloKMDAyZnNpZ25hdHVyZSBjyJPT-W3d_8jtq25bg0CXxeElEbBCLXZPtSSmUUe7OQogG]!c@anon-20191002_181700-748:localhost:8800FCZXWADFJAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgogF]!c@anon-20191002_181700-747:localhost:8800IJKBXNQJNYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwogE]!c@anon-20191002_181700-746:localhost:8800SROUQRJUGNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-AogD]!c@anon-20191002_181700-745:localhost:8800GZRCRCKGZNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6PzrwogC]!c@anon-20191002_181700-744:localhost:8800MCGVEWCDCMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8QogB]!c@anon-20191002_181700-743:localhost:8800YETXYLXSKFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQo Mxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( % c$ b# a" `! _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                                                   ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? ~> }= |< {; z: y9 x8 w7 v6 u5 t4 s3 r2 q1 p0 o/ n. m- l, k+ j* i) h( g' f& e% d$ c" b! a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !           MvHJdd6"~P8j< V( pB \ 0  T ( x L p D  h < x-]@astest-1-20191002_181700:localhost:8800v-]@anon-20191002_181700-832:localhost:8800u-]@astest-0-20191002_181700:localhost:8800t-]@anon-20191002_181700-832:localhost:8800s-]@anon-20191002_181700-831:localhost:8800r-]@anon-20191002_181700-797:localhost:8800q-]@anon-20191002_181700-795:localhost:8800p-]@anon-20191002_181700-793:localhost:8800o-]@anon-20191002_181700-791:localhost:8800n-]@anon-20191002_181700-791:localhost:8800m-]@anon-20191002_181700-789:localhost:8800l-]@anon-20191002_181700-787:localhost:8800k-]@anon-20191002_181700-768:localhost:8800j-]@anon-20191002_181700-767:localhost:8800i-]@anon-20191002_181700-763:localhost:8800h-]@anon-20191002_181700-762:localhost:8800g-]@anon-20191002_181700-758:localhost:8800f-]@anon-20191002_181700-757:localhost:8800e-]@anon-20191002_181700-755:localhost:8800d-]@anon-20191002_181700-754:localhost:8800c-]@anon-20191002_181700-755:localhost:8800b-]@anon-20191002_181700-755:localhost:8800a-]@anon-20191002_181700-754:localhost:8800`-]@anon-20191002_181700-752:localhost:8800_-]@anon-20191002_181700-751:localhost:8800^-]@anon-20191002_181700-751:localhost:8800]-]@anon-20191002_181700-750:localhost:8800\-]@anon-20191002_181700-747:localhost:8800[-]@anon-20191002_181700-747:localhost:8800Z-]@anon-20191002_181700-746:localhost:8800Y-]@anon-20191002_181700-744:localhost:8800X-]@anon-20191002_181700-743:localhost:8800W/@random_dude:testb+@bob:matrix.org\+@bob:matrix.orgZ+[@anon-20191002_181700-99:localhost:8800K+[@anon-20191002_181700-99:localhost:8800I+[@anon-20191002_181700-98:localhost:8829L+[@anon-20191002_181700-98:localhost:8829J+[@anon-20191002_181700-97:localhost:8800G+[@anon-20191002_181700-97:localhost:8800E+[@anon-20191002_181700-96:localhost:8800H+[@anon-20191002_181700-96:localhost:8800F+[@anon-20191002_181700-95:localhost:8800>+[@anon-20191002_181700-94:localhost:8829D+[@anon-20191002_181700-94:localhost:8829C+[@anon-20191002_181700-94:localhost:8829B+[@anon-20191002_181700-94:localhost:8829A+[@anon-20191002_181700-94:localhost:8829@+[@anon-20191002_181700-94:localhost:8829?+[@anon-20191002_181700-93:localhost:8800;+[@anon-20191002_181700-92:localhost:8829=+[@anon-20191002_181700-92:localhost:8829<+[@anon-20191002_181700-91:localhost:88008+[@anon-20191002_181700-90:localhost:8800:+[@anon-20191002_181700-90:localhost:88009+[@anon-20191002_181700-89:localhost:88007+[@anon-20191002_181700-87:localhost:88006+[@anon-20191002_181700-87:localhost:88005+[@anon-20191002_181700-86:localhost:88004+[@anon-20191002_181700-85:localhost:88003+[@anon-20191002_181700-84:localhost:88002+[@anon-20191002_181700-83:localhost:88001+[@anon-20191002_181700-82:localhost:88000+[@anon-20191002_181700-81:localhost:8800/+[@anon-20191002_181700-79:localhost:8800.+[@anon-20191002_181700-77:localhost:8800-+[@anon-20191002_181700-75:localhost:8800,+[@anon-20191002_181700-74:localhost:8800+-]@anon-20191002_181700-742:localhost:8800V-]@anon-20191002_181700-737:localhost:8829U-]@anon-20191002_181700-737:localhost:8829T-]@anon-20191002_181700-737:localhost:8829S-]@anon-20191002_181700-736:localhost:8800R-]@anon-20191002_181700-735:localhost:8800Q-]@anon-20191002_181700-734:localhost:8800P-]@anon-20191002_181700-733:localhost:8800O  ReQa1$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 716, "stream_ordering": 3752}{"auth_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y", "$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0"], "prev_events": ["$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o"], "type": "m.room.member", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-743:localhost:8800", "content": {"membership": "join", "displayname": "AZZDHJBDYOHRRTKDIRLP", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-743:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043945076, "hashes": {"sha256": "Tt24p1MiEf+G5JBxdkiYZU1COiXTvcLGrQaL05hOjMQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jYwbiNzYNBiFUj5fnjrPH++2BmZ4AvJLJURxSf7V4z4nuG2XXKmX8gyls+sFBIpDI7eB76yHre5c+djzzYIxBA"}}, "unsigned": {"age_ts": 1570043945076}}eQa$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3751}{"auth_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y", "$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "prev_events": ["$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0"], "type": "m.room.history_visibility", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043943755, "hashes": {"sha256": "CSxrvJTANJrtkqHPOfrD2bYWG9UgydoPo4giB9xVywc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BilJX5Cgu9UGopCTiQcIMcoPhqzh+SVhBp+MZv9ilWg5JLmhpJQgdLFBYU21vg7lfsTg76LIf1ChoyQp1WsMCA"}}, "unsigned": {"age_ts": 1570043943755}}t~eQau$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3750}{"auth_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y", "$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "prev_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y"], "type": "m.room.join_rules", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043943108, "hashes": {"sha256": "50cfDMbmYwep4/OoUkSXzfpq3Hv9HY3PZYjhZH02EVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r+rIR2ugGWgXDjjX4vf1mTC+sDr2qmpf/4fzSX1XOHhYMhV99vBmwtu6M3IsR7qZp39jm/Mj4Duhd6q/4zi3Ag"}}, "unsigned": {"age_ts": 1570043943108}}k}eQac$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3749}{"auth_events": ["$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "prev_events": ["$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "type": "m.room.power_levels", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"users": {"@anon-20191002_181700-742:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043942039, "hashes": {"sha256": "/pm2ELXdjFb+3+ETH9AImYLlWQtT6WIPTOeea6rrvzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t9V2SUS71C3I2KGG9SEg30qdV9r8xQBqF8vgmPBM77tPxQmerGzFUFcUdo/xF4fsIEoPDWPGbXkw9Np8aV19BA"}}, "unsigned": {"age_ts": 1570043942039}} ".- 8 f   / U`e#.3[f$gyeQ3 $Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_accessmxeQ? $5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibilityeweQ/ $_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rulesgveQ3 $_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels ueQ']$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800joinateQ' $jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.createmseQ? $ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibilityereQ/ $PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rulesgqeQ3 $PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels peQ']$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800joinaoeQ' $EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create neQ']$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800joingmeQ3 $SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_accessmleQ? $J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibilityekeQ/ $KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rulesgjeQ3 $asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels ieQ']$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800joinaheQ' $wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create geQ']$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800joingfeQ3 $_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_accessmeeQ? $s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibilityedeQ/ $ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rulesgceQ3 $ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels beQ']$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800joinmaeQ? $w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibilitya`eQ' $5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800m.room.createe_eQ/ $2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rulesg^eQ3 $zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels ]eQ']$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800joina\eQ' $5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create [eQ']$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800joinmZeQ? $JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibilityeYeQ/ $Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rulesgXeQ3 $vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels -RM H C > 9 4/*|%w rmhc T{Qe {!hNCwypIzdDZDVmCEfd:localhost:8800$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0TzQe z!eZjhYVNpwdogVDKHCk:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQTyQe y!hNCwypIzdDZDVmCEfd:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08TxQe x!hNCwypIzdDZDVmCEfd:localhost:8800$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_ATwQe w!eZjhYVNpwdogVDKHCk:localhost:8800$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnsTvQe v!eZjhYVNpwdogVDKHCk:localhost:8800$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgTuQe u!eZjhYVNpwdogVDKHCk:localhost:8800$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMTtQe t!eZjhYVNpwdogVDKHCk:localhost:8800$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSITsQe s!eZjhYVNpwdogVDKHCk:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0TrQe r!eZjhYVNpwdogVDKHCk:localhost:8800$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdoTqQe q!sBcwyPoXKgnSGVTjNR:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8TpQe p!sBcwyPoXKgnSGVTjNR:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40ToQe o!sBcwyPoXKgnSGVTjNR:localhost:8800$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigTnQe n!sBcwyPoXKgnSGVTjNR:localhost:8800$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8TmQe m!sBcwyPoXKgnSGVTjNR:localhost:8800$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsTlQe l!sBcwyPoXKgnSGVTjNR:localhost:8800$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsTkQe k!sBcwyPoXKgnSGVTjNR:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawTjQe j!sBcwyPoXKgnSGVTjNR:localhost:8800$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIoTiQe i!WgXzOXLTeqaGfiDFhL:localhost:8800$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4ThQe h!WgXzOXLTeqaGfiDFhL:localhost:8800$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgTgQe g!WgXzOXLTeqaGfiDFhL:localhost:8800$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUTfQe f!WgXzOXLTeqaGfiDFhL:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsTeQe e!WgXzOXLTeqaGfiDFhL:localhost:8800$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcTdQe d!LFBhoxJpmBqFrwEzGP:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgTcQe c!LFBhoxJpmBqFrwEzGP:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8TbQe b!LFBhoxJpmBqFrwEzGP:localhost:8800$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwTaQe a!LFBhoxJpmBqFrwEzGP:localhost:8800$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsT`Qe `!LFBhoxJpmBqFrwEzGP:localhost:8800$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_YT_Qe _!LFBhoxJpmBqFrwEzGP:localhost:8800$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwT^Qe ^!LFBhoxJpmBqFrwEzGP:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIT]Qe ]!LFBhoxJpmBqFrwEzGP:localhost:8800$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicT\Qe \!URpLZLuBfVcfHVTBGS:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywT[Qe [!URpLZLuBfVcfHVTBGS:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkTZQe Z!URpLZLuBfVcfHVTBGS:localhost:8800$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEoTYQe Y!URpLZLuBfVcfHVTBGS:localhost:8800$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01ETXQe X!URpLZLuBfVcfHVTBGS:localhost:8800$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMTWQe W!URpLZLuBfVcfHVTBGS:localhost:8800$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMTVQe V!URpLZLuBfVcfHVTBGS:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2ITUQe U!YaLuQzmJKSMTSFEqjO:localhost:8800$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkTTQe T!URpLZLuBfVcfHVTBGS:localhost:8800$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0TSQe S!YaLuQzmJKSMTSFEqjO:localhost:8800$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0TRQe R!YaLuQzmJKSMTSFEqjO:localhost:8800$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0TQQe Q!YaLuQzmJKSMTSFEqjO:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoTPQe P!YaLuQzmJKSMTSFEqjO:localhost:8800$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQTOQe O!cOFSwLSkxZECJMvjjZ:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego N ? 0 !   | m ^ O @ 1 "   } n _ P A 2 #   ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9* vgXI:+ whYJ;,m<  m7qm2 m-Im*mm<  m7qm2 m-Im*m%\m"Gmm1m m mVm~m)mmmmPm|mpa  mm  mj1  mf  mc  mV<mSmPmLmHm=Km9Rm5m3)m/m*/m'cm#m mmm mm m9mmmmmmFmmmꕃm|m_m m/m m|mmmjmgbmb9m^1mTmQmN8mJsmGm7m5?m2~m0m-m$m!m]mmemmmm m1mm+m5mWm-mmmm mڇmAmxm0memžmm鸩m~mOmm驣mmmJmm鐖m鍢mm釃mtm}m|ymy0msmm milm`tm[KmXmTmQkmNimBYm?^m<m5wm2|m/\m,m)5m"mRmjmmm$mBmmm&mJmRmmm mm݁mڤmm[mċmsmpm m{mmm5m8~~mu}}m||m{{mzzm荪yymsxxmEwwm~vvmz uumvttmsssmprrmmqqmcppm_'oomZnnmWmmmTllmQOkkmMdjjmB}iim>fhhm9Eggm6ffm2eem/ddm+ccm!Gbbm1aam@``m__gmL%%mH$$mE1##mBQ""m?!! L=  R X & ^ ,,d2j8q? XwE}K^R j&^,X21e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI q1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8r1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigp1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUC1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 61e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwH1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA`1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAka1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0<1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 W1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U=1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY01e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI C1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8A1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk c1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4E1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsV1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU K1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYP1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wA1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM 71e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk81e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM41e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg  a} { y w u sqomkigeca~,eeQ$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~+eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800~*eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800~)eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~(eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~'eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~&eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800~%eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~$eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~#eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~"eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~!eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~ eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800 =z ' d N2kOCj e]]Q=$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw@anon-20191002_181700-768:localhost:8800@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800joinanon-20191002_181700-768Ci e]]Q=$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA@anon-20191002_181700-767:localhost:8800@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800joinanon-20191002_181700-767Ch e]]Q=$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE@anon-20191002_181700-763:localhost:8800@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800joinanon-20191002_181700-763Cg e]]Q=$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c@anon-20191002_181700-762:localhost:8800@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800joinanon-20191002_181700-762Cf e]]Q=$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk@anon-20191002_181700-758:localhost:8800@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800joinanon-20191002_181700-758Ce e]]Q=$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08@anon-20191002_181700-757:localhost:8800@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800joinanon-20191002_181700-757Ed e]]Q=$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800inviteanon-20191002_181700-755?c e]]Q5$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-754:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800joinFKOCVHIRTCIPSWJBHVGOCb e]]Q=$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800joinanon-20191002_181700-755Ea e]]Q=$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800inviteanon-20191002_181700-755?` e]]Q5$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800joinFKOCVHIRTCIPSWJBHVGO?_ e]]Q5$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs@anon-20191002_181700-752:localhost:8800@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800joinJYNGOISMLXVDWPDRVNCSC^ e]]Q=$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800joinanon-20191002_181700-751E] e]]Q=$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800inviteanon-20191002_181700-751?\ e]]Q5$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800joinBABSIRRXCUHNIFZHYFMBC[ e]]Q=$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800joinanon-20191002_181700-747EZ e]]Q=$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800inviteanon-20191002_181700-747?Y e]]Q5$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800joinQLDSIOXVCTASBPKYRNHI?X e]]Q5$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo@anon-20191002_181700-744:localhost:8800@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800joinLIBVRACXDTFHBVRAEYIU?W e]]Q5$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego@anon-20191002_181700-743:localhost:8800@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800joinAZZDHJBDYOHRRTKDIRLP ,(^ k z ) 6 C+ 8 E VR_  ily |(P]Q@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800P]Q@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800P]Q@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800P]Q@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800~P]Q@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800}P]Q@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800|P]Q@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800{P]Q@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800zP]Q@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800yP]Q@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800xP]Q@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800wP]Q@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800vP]Q@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800uP]Q@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800tP]Q@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800sP]Q@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800rP]Q@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800qP]Q@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800pP]Q@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800oP]Q@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800nN[Q@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800,N[Q@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800+N[Q@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800*N[Q@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800)N[Q@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800(N[Q@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800'N[Q@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800&N[Q@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800%N[Q@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800$P]Q@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800mP]Q@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800lP]Q@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800kP]Q@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800jP]Q@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800iP]Q@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800hP]Q@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800gP]Q@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800fP]Q@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800eN[Q@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800"P]Q@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800bP]Q@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800aP]Q@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800`P]Q@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800_P]Q@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800^   .teQau$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3756}{"auth_events": ["$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0", "$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ", "$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "prev_events": ["$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0"], "type": "m.room.join_rules", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043951408, "hashes": {"sha256": "cMuKZnDLf9vex6lxpW7m3PYe9BRobZfODJfXk5/Xo0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fuvTKodbW4GqtoXYqIxA5j3daXKX0mzg4pFS0YIlJIafbluByhQw9/grFl4EVuGHaK9UxN/CBdb7OIxvh7KwBA"}}, "unsigned": {"age_ts": 1570043951408}}keQac$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3755}{"auth_events": ["$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ", "$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "prev_events": ["$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "type": "m.room.power_levels", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"users": {"@anon-20191002_181700-744:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043949965, "hashes": {"sha256": "wqTXEnibsdxtbgmwKpVHg4XX0QXX1BlJbT2OoPocFfU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xVpC6LCDs91dy3x3oFJ4H8yEOj4WTOVtKxS0egXixneLkz3FrFhIaE68QfNpObBUia+FFhAwJBq316KXmn91Dg"}}, "unsigned": {"age_ts": 1570043949965}}reQaq$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3754}{"auth_events": ["$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ"], "prev_events": ["$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ"], "type": "m.room.member", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"membership": "join", "displayname": "LIBVRACXDTFHBVRAEYIU", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-744:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043948301, "hashes": {"sha256": "g29odtUB3l05oHTmYhhfaU72dcUdHtX8QQSGKPMtCoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7fPooXcBhWpr5bVslB651mgliCCvahmfxshdkOULcOZTfApRKnGexNp+c3mvxdenqvNqqBJgUyb6hllJx1yZAg"}}, "unsigned": {"age_ts": 1570043948301}}ieQa_$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3753}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-744:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043947372, "hashes": {"sha256": "e9xIxOmFAaQwdp13CcRQwIOppY52DNRCq25bp+8ioho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oF8LUQTOB9rwg5a6q9m3zUYNUSOkLp0NVmpt1lbqxgZtCNuk8QyZq1iN0qwu0QZhaOQikn+hTxGr3P6IIrgADA"}}, "unsigned": {"age_ts": 1570043947372}} ~z v r n j fb^ZVRNJF;eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800:eeQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:88009eeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:88008eeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:88007eeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:88006eeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:88005eeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:88004eeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:88003eeQ$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:88002eeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:88001eeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:88000eeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800/eeQ$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800.eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800-eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800,eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800+eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800*eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800)eeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800(eeQ$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800'eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800&eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800%eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800$eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800#eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800"eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800!eeQ$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800 eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800 X9o V   ] , P +&c81i7  Jp $^> vD|||   v D   1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw 1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI i1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM 1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAP3$80:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk Q1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4,1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAf1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IX1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ41e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUW1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUG1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw- 21e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE]1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMF1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y;1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQi1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA L1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ot1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AM1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 @1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 ) 21e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw_1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU |21e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA&1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM @jd1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 23$94:localhost:42455 3$90:localhost:42455 3$87:localhost:42455 3$82:localhost:42455   keQac$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3760}{"auth_events": ["$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "type": "m.room.power_levels", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"users": {"@anon-20191002_181700-746:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043955075, "hashes": {"sha256": "4Pjl/GZtHidLI/KNI2ZgoREJWRZTDKh3BCGx2uZ12A0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Iiqwjegd4bpp0ABfQ9ZIzsi/vkzSqhIYzTfWItRJcFBPWQTnAZJKfzweGfrEVeudvWCtCj8vREDL4fPu8PjRCA"}}, "unsigned": {"age_ts": 1570043955075}}reQaq$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3759}{"auth_events": ["$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0"], "prev_events": ["$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0"], "type": "m.room.member", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"membership": "join", "displayname": "QLDSIOXVCTASBPKYRNHI", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-746:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043954036, "hashes": {"sha256": "0EKaV/zovNRbq5eUo+WnMXRdq1d+vWqYnBUJZOAm4Sc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6fAOL3iQmVdMEpXnSH3j4izbipM47QFW1Z1dmTswgygdMlmU7Hnsfg2yP/WI/MvYusDUFPDeoVpdpKj+3Fx0Ag"}}, "unsigned": {"age_ts": 1570043954036}}eQa$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3758}{"auth_events": ["$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0", "$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ", "$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "prev_events": ["$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0"], "type": "m.room.history_visibility", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043952398, "hashes": {"sha256": "k/IjyMPBmCJNoU2H3foDyuV26SnZOuck5cPaW3G3lmM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w1rU1Th2SeV4kRre30ry6aFJSruf6oYj2SKBvQy3cX33nvSrWF9PguoUYj6WXiWILFT/AeO/kCudYtKPYWMJBA"}}, "unsigned": {"age_ts": 1570043952398}}ieQa_$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3757}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-746:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043952249, "hashes": {"sha256": "VvwSrIGLmDJXm+8JO94GDtMViUVVG271Ej+XZsVAbdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ubX2qYbrEJajp/HOYg8gt5fvENbmK/MBKZlu9TLRczrqfmQ5LeEJDe50WwKtEeKZKFHvIi65d0CO63rZj7vRAw"}}, "unsigned": {"age_ts": 1570043952249}} N\ Z h " x v.>DN$Fe/Q ]$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsm.room.join_rules!sBcwyPoXKgnSGVTjNR:localhost:8800mm@anon-20191002_181700-754:localhost:8800&Ee3Q ]$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsm.room.power_levels!sBcwyPoXKgnSGVTjNR:localhost:8800mm@anon-20191002_181700-754:localhost:8800 De'Q ]$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawm.room.member!sBcwyPoXKgnSGVTjNR:localhost:8800m m^@anon-20191002_181700-754:localhost:8800C e'Q  ]$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIom.room.create!sBcwyPoXKgnSGVTjNR:localhost:8800mڇmܡ@anon-20191002_181700-754:localhost:8800,Be?Q ]$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4m.room.history_visibility!WgXzOXLTeqaGfiDFhL:localhost:8800mAm~@anon-20191002_181700-752:localhost:8800$Ae/Q ]$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgm.room.join_rules!WgXzOXLTeqaGfiDFhL:localhost:8800mxmG@anon-20191002_181700-752:localhost:8800&@e3Q ]$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUm.room.power_levels!WgXzOXLTeqaGfiDFhL:localhost:8800m0mЊ@anon-20191002_181700-752:localhost:8800 ?e'Q ]$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsm.room.member!WgXzOXLTeqaGfiDFhL:localhost:8800mem@anon-20191002_181700-752:localhost:8800> e'Q  ]$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcm.room.create!WgXzOXLTeqaGfiDFhL:localhost:8800mžm@anon-20191002_181700-752:localhost:8800 =e'Q ]$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lgm.room.member!LFBhoxJpmBqFrwEzGP:localhost:8800mm@@anon-20191002_181700-751:localhost:8800 <e'Q ]$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8m.room.member!LFBhoxJpmBqFrwEzGP:localhost:8800m鸩m@anon-20191002_181700-750:localhost:8800&;e3Q ]$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwm.room.guest_access!LFBhoxJpmBqFrwEzGP:localhost:8800m~m`@anon-20191002_181700-750:localhost:8800,:e?Q ]$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsm.room.history_visibility!LFBhoxJpmBqFrwEzGP:localhost:8800mOmx@anon-20191002_181700-750:localhost:8800$9e/Q ]$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ym.room.join_rules!LFBhoxJpmBqFrwEzGP:localhost:8800mm@anon-20191002_181700-750:localhost:8800&8e3Q ]$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwm.room.power_levels!LFBhoxJpmBqFrwEzGP:localhost:8800m驣m骴@anon-20191002_181700-750:localhost:8800 7e'Q ]$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIm.room.member!LFBhoxJpmBqFrwEzGP:localhost:8800mm8@anon-20191002_181700-750:localhost:88006 e'Q  ]$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicm.room.create!LFBhoxJpmBqFrwEzGP:localhost:8800mm[@anon-20191002_181700-750:localhost:8800 5e'Q ]$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywm.room.member!URpLZLuBfVcfHVTBGS:localhost:8800mJm@anon-20191002_181700-747:localhost:8800 4e'Q ]$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkm.room.member!URpLZLuBfVcfHVTBGS:localhost:8800mmg@anon-20191002_181700-746:localhost:8800&3e3Q ]$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEom.room.guest_access!URpLZLuBfVcfHVTBGS:localhost:8800m鐖m\@anon-20191002_181700-746:localhost:8800,2e?Q ]$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Em.room.history_visibility!URpLZLuBfVcfHVTBGS:localhost:8800m鍢mj@anon-20191002_181700-746:localhost:8800$1e/Q ]$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMm.room.join_rules!URpLZLuBfVcfHVTBGS:localhost:8800mm鋈@anon-20191002_181700-746:localhost:8800&0e3Q ]$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMm.room.power_levels!URpLZLuBfVcfHVTBGS:localhost:8800m釃m@anon-20191002_181700-746:localhost:8800 /e'Q ]$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Im.room.member!URpLZLuBfVcfHVTBGS:localhost:8800mtm@anon-20191002_181700-746:localhost:8800 8l D `8<]c!E@anon-20191002_181700-756:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwoVNKYAMEGUQ127.0.0.1Perl + Net::Async::HTTP/0.44mS;]c!E@anon-20191002_181700-755:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQoAJENIKARXJ127.0.0.1Perl + Net::Async::HTTP/0.44m5:]c!E@anon-20191002_181700-754:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAoZUIRTQEUGG127.0.0.1Perl + Net::Async::HTTP/0.44m֜9]c!E@anon-20191002_181700-753:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQoPLSIYKWQOB127.0.0.1Perl + Net::Async::HTTP/0.44m 8]c!E@anon-20191002_181700-752:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQoRYCPPVBPAQ127.0.0.1Perl + Net::Async::HTTP/0.44mփ7]c!E@anon-20191002_181700-751:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAoFXMMNKQIDM127.0.0.1Perl + Net::Async::HTTP/0.44mv6]c!E@anon-20191002_181700-750:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAoVQNSLBGSCN127.0.0.1Perl + Net::Async::HTTP/0.44mF5]c!E@anon-20191002_181700-748:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgoFCZXWADFJA127.0.0.1Perl + Net::Async::HTTP/0.44mC4]c!E@anon-20191002_181700-747:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwoIJKBXNQJNY127.0.0.1Perl + Net::Async::HTTP/0.44m3]c!E@anon-20191002_181700-746:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-AoSROUQRJUGN127.0.0.1Perl + Net::Async::HTTP/0.44mx Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1"e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU 1!e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM 1 e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw 1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew 1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU 1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo 1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw 1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI 1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg 1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ 1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM 1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA 1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 1 e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 1 e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1 e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1 e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE 1 e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs 1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI 1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c 1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU 1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y 1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk 1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY ~1~e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk }1}e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI |1|e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 {1{e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 y1ze$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ z1ye$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A x1xe$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns w1we$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg v1ve$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM u1ue$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI t1te$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 s1se$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo r1re$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 q1qe$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 p1pe$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig o1oe$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 n1ne$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs m1me$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs l1le$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw k1ke$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo j1je$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 i1ie$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg h1he$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU g1ge$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs f1fe$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc e1ee$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg d1de$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 c1ce$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw b1be$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds a1ae$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y `1`e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw _1_e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI ^1^e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic ]1]e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw \1\e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk [1[e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo Z1Ze$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E Y1Ye$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM X1Xe$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM W  { eQa$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3763}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E"], "type": "m.room.guest_access", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043957398, "hashes": {"sha256": "6ZlYLp5hr/VExM1MzeFByak/dCF2Q4NxIwyf4kmxc/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LT4KgVm7HZhJtttm+DFifMbOyp/FebysbPSiIUq03IgnTRMM2B6IeHqII6sgjklpiRCmtpBt8S3txQGXopezDQ"}}, "unsigned": {"age_ts": 1570043957398}} eQa$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3762}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM"], "type": "m.room.history_visibility", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043956642, "hashes": {"sha256": "CHmuhbW279xqOoYZs8bGXhKdhzUAoi+SeLlKpJK5+D0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r21Rva8Dc/CE7A3YO4dbFBuu4R7UR54fvVzARhXwjGtqXnyELhOjVc8l4I2L+DHAjUyfOunFPyL9pJy6k8cQAA"}}, "unsigned": {"age_ts": 1570043956642}}t eQau$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3761}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM"], "type": "m.room.join_rules", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043955924, "hashes": {"sha256": "HeCvSbZnFnLxpTqVFKkDHMs3i/3DBsoRBOw2MaqlwUU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TVjoeSPW0BYTyuKOzt4Ol/9LPCdA/iZVRcrifzIeABYiTKteURNU3FP1yzWnVtx49iykUixMMTuXV0ZYnzi2AQ"}}, "unsigned": {"age_ts": 1570043955924}}   m p  % ru 03UX58ZdQ' e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.create$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_AjQ3 e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_access$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnspQ? e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibility$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgh Q/ e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rules$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMj Q3 e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI Q']e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0d Q' e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo8 Q']ee!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 Q']e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40jQ3 e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_access$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigpQ? e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibility$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8hQ/ e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rules$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsjQ3 e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs Q']e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawdQ' e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.create$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIopQ? e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibility$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4hQ/ e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rules$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgjQ3 e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU ~Q']e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsd}Q' e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc8|Q']ee!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 {Q']e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8jzQ3 e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_access$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwpyQ? e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibility$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdshxQ/ e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rules$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_YjwQ3 e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw vQ']e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIduQ' e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic8tQ']ee!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk sQ']e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkjrQ3 e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_access$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEopqQ? e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibility$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E 2 k2ieQa_$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3766}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-750:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043962363, "hashes": {"sha256": "/6VGnD2vGfOhaJxDSVFrnk4FvQ81inIphEGXeVzPfTg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b24VORGG+I3AiBrFNlEC4h3n4C6qqPsQRtilc10DAMa/qHiVEvtTfB38Ol1NcBrLbnwMBJ0fKOxCtR/IITRKAg"}}, "unsigned": {"age_ts": 1570043962363}}H eQa$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 720, "stream_ordering": 3765}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM", "$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk"], "prev_events": ["$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk"], "type": "m.room.member", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-747:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-747", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-747:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043959114, "hashes": {"sha256": "iLKGtnxjq2IEMDABMyrFBt5OLEkoeRQQWsAXdCOccLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vNZF/kclBcqkhFH8WMwX9z1F3fRxwLwb97ecmWJDw0gQP5Au0qq6oTWI/7dL4CpRJ4yB/2aeu82LQk1Ius8AA"}}, "unsigned": {"age_ts": 1570043959114, "replaces_state": "$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk"}} eQa/$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3764}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo"], "type": "m.room.member", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-747", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-747:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043958262, "hashes": {"sha256": "D1shIP3d+46d5Ie1OBaGj0MjXUKvprlIBYQsLBei9hA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "10P4j+p6IfujmZuNBDGDZwATaOiFskBCdP1PiELIthhOSULxrlfhuUlJAUwH9TXQ1V2j3EkYE5abvxEbQBYkCQ"}}, "unsigned": {"age_ts": 1570043958262, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-746:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-746:localhost:8800", "content": {"membership": "join", "displayname": "QLDSIOXVCTASBPKYRNHI", "avatar_url": null}, "sender": "@anon-20191002_181700-746:localhost:8800"}]}} HjO,z_<  @ ) P x 9   k P - {<F/~?"I2{d%t5fC, { <   v S < L /  /  m.room.join_rules X3  m.room.power_levels W>'] m.room.member@anon-20191002_181700-758:localhost:8800 V'  ~m.room.create U"?  }m.room.history_visibility T/  |m.room.join_rules S3  {m.room.power_levels R>'] zm.room.member@anon-20191002_181700-755:localhost:8800 Q>'] ym.room.member@anon-20191002_181700-757:localhost:8800 P'  xm.room.create O3  wm.room.guest_access N"?  vm.room.history_visibility M/  um.room.join_rules L3  tm.room.power_levels K>'] sm.room.member@anon-20191002_181700-754:localhost:8800 J'  rm.room.create I>'] qm.room.member@anon-20191002_181700-755:localhost:8800 H>'] pm.room.member@anon-20191002_181700-755:localhost:8800 G3  om.room.guest_access F"?  nm.room.history_visibility E/  mm.room.join_rules D3  lm.room.power_levels C>'] km.room.member@anon-20191002_181700-754:localhost:8800 B'  jm.room.create A"?  im.room.history_visibility @/  hm.room.join_rules ?3  gm.room.power_levels >>'] fm.room.member@anon-20191002_181700-752:localhost:8800 ='  em.room.create <>'] dm.room.member@anon-20191002_181700-751:localhost:8800 ;>'] cm.room.member@anon-20191002_181700-751:localhost:8800 :3  bm.room.guest_access 9"?  am.room.history_visibility 8/  `m.room.join_rules 73  _m.room.power_levels 6>'] ^m.room.member@anon-20191002_181700-750:localhost:8800 5'  ]m.room.create 4>'] \m.room.member@anon-20191002_181700-747:localhost:8800 3>'] [m.room.member@anon-20191002_181700-747:localhost:8800 23  Zm.room.guest_access 1"?  Ym.room.history_visibility 0/  Xm.room.join_rules /3  Wm.room.power_levels .>'] Vm.room.member@anon-20191002_181700-746:localhost:8800 -"?  Um.room.history_visibility ,'  Tm.room.create +/  Sm.room.join_rules *3  Rm.room.power_levels )>'] Qm.room.member@anon-20191002_181700-744:localhost:8800 ('  Pm.room.create '>'] Om.room.member@anon-20191002_181700-743:localhost:8800 &"?  Nm.room.history_visibility %/  Mm.room.join_rules $3  Lm.room.power_levels #>'] Km.room.member@anon-20191002_181700-742:localhost:8800 "'  Jm.room.create !>'] Im.room.member@anon-20191002_181700-737:localhost:8829 >'] Hm.room.member@anon-20191002_181700-737:localhost:8829 >'] Gm.room.member@anon-20191002_181700-737:localhost:8829 >'] Fm.room.member@anon-20191002_181700-737:localhost:8829 "?  Em.room.history_visibility /  Dm.room.join_rules 3  Cm.room.power_levels >'] Bm.room.member@anon-20191002_181700-736:localhost:8800 '  Am.room.create >'] @m.room.member@anon-20191002_181700-735:localhost:8800 "?  ?m.room.history_visibility /  >m.room.join_rules 3  =m.room.power_levels >']  v D  | J  Q  W %1 ] +c1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI{1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM |1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA)1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kW1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4R1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IM1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX480e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMY1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgY1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA~1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw_1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQm1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM 31e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo 1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4x1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroE1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 k1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s 1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc (1j8p> v D  | J  Q  W %1 ] +c1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI{1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0}1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM |1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA)1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kW1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4R1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IM1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX480e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMY1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgY1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA~1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw_1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQm1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM 31e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo 1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4r1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroE1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 k1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s 1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 3?>Rf+z?Oc( w <  P  d ) x =  Q e*ySg,{@8]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA8]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNY8]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8~]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8}]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8|]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK8{]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8z]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8y]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8x]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8w]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8v]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8u]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8']!D@anon-20191002_181700-790:localhost:8800VALGYGSZPA8&]!C@anon-20191002_181700-787:localhost:8800ESOZVRSFST8%]!B@anon-20191002_181700-788:localhost:8800JZUHRDQQEL8$]!A@anon-20191002_181700-786:localhost:8800WJWBUMRLAI8#]!@@anon-20191002_181700-785:localhost:8800TVEQJOAJLI8"]!?@anon-20191002_181700-784:localhost:8800SHHMGHRUZH8!]!>@anon-20191002_181700-783:localhost:8800CBPSCDUMIW8 ]!=@anon-20191002_181700-782:localhost:8800CMQAXLTOQC8]!<@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!;@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!:@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!9@anon-20191002_181700-775:localhost:8800KWWOCKYJTK8]!8@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ8]!7@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!6@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!5@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!4@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!3@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!2@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!1@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!0@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!/@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!.@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!-@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!,@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!+@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8 ]!*@anon-20191002_181700-760:localhost:8800AAUYDDOUHU8 ]!)@anon-20191002_181700-758:localhost:8800GUAXNWFTDG8 ]!(@anon-20191002_181700-757:localhost:8800QRQFPUSZXE8 ]!'@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ8 ]!&@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG8]!%@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!$@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!#@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!"@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN8]! @anon-20191002_181700-749:localhost:8800UPJEGCTJBW  iih5 g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0Fwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDROT2wuZFROc2VnR3M6c1gKMDAyZnNpZ25hdHVyZSDGynSuY1KhGWTzubZHTUhlUCJ8qFvK_oxm1XAOIo4j4go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDN0dKX0A3RExxQXVTfmwKMDAyZnNpZ25hdHVyZSAES0eD9WiAuHrdgFXofP7Pui2WRI1MP61s9oGFvx-YqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5Ao @!k=W)qCvHb4 | N j ?  Y + s G  a 3 }OtHbBeAiE!+[@anon-20191002_181700-77:localhost:8800^-]@anon-20191002_181700-779:localhost:8800-]@anon-20191002_181700-777:localhost:8800-]@anon-20191002_181700-775:localhost:8800-]@anon-20191002_181700-774:localhost:8800-]@anon-20191002_181700-773:localhost:8800-]@anon-20191002_181700-772:localhost:8800-]@anon-20191002_181700-771:localhost:8800-]@anon-20191002_181700-770:localhost:8800-]@anon-20191002_181700-769:localhost:8800-]@anon-20191002_181700-768:localhost:8800-]@anon-20191002_181700-767:localhost:8800-]@anon-20191002_181700-766:localhost:8800-]@anon-20191002_181700-764:localhost:8800-]@anon-20191002_181700-763:localhost:8800-]@anon-20191002_181700-762:localhost:8800-]@anon-20191002_181700-761:localhost:8800-]@anon-20191002_181700-760:localhost:8800+[@anon-20191002_181700-75:localhost:8800]-]@anon-20191002_181700-759:localhost:8800-]@anon-20191002_181700-758:localhost:8800-]@anon-20191002_181700-820:localhost:8800#+[@anon-20191002_181700-81:localhost:8800a-]@anon-20191002_181700-819:localhost:8800$-]@anon-20191002_181700-818:localhost:8800"-]@anon-20191002_181700-816:localhost:8800 -]@anon-20191002_181700-815:localhost:8800!-]@anon-20191002_181700-814:localhost:8800-]@anon-20191002_181700-813:localhost:8800-]@anon-20191002_181700-812:localhost:8800-]@anon-20191002_181700-811:localhost:8800-]@anon-20191002_181700-810:localhost:8800+[@anon-20191002_181700-80:localhost:8800`-]@anon-20191002_181700-809:localhost:8800-]@anon-20191002_181700-808:localhost:8800-]@anon-20191002_181700-807:localhost:8800-]@anon-20191002_181700-806:localhost:8800-]@anon-20191002_181700-805:localhost:8800-]@anon-20191002_181700-804:localhost:8800-]@anon-20191002_181700-803:localhost:8800-]@anon-20191002_181700-802:localhost:8800-]@anon-20191002_181700-801:localhost:8800-]@anon-20191002_181700-800:localhost:8800*Y@anon-20191002_181700-7:localhost:8800+[@anon-20191002_181700-79:localhost:8800_-]@anon-20191002_181700-799:localhost:8800-]@anon-20191002_181700-798:localhost:8800-]@anon-20191002_181700-797:localhost:8800-]@anon-20191002_181700-796:localhost:8800 -]@anon-20191002_181700-795:localhost:8800 -]@anon-20191002_181700-794:localhost:8800 -]@anon-20191002_181700-793:localhost:8800 -]@anon-20191002_181700-792:localhost:8800-]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-790:localhost:8800-]@anon-20191002_181700-789:localhost:8800-]@anon-20191002_181700-788:localhost:8800-]@anon-20191002_181700-787:localhost:8800-]@anon-20191002_181700-786:localhost:8800-]@anon-20191002_181700-785:localhost:8800-]@anon-20191002_181700-784:localhost:8800-]@anon-20191002_181700-783:localhost:8800-]@anon-20191002_181700-782:localhost:8800-]@anon-20191002_181700-781:localhost:8800 @!k=W)qCvHb4 | N j ?  Y + s G  a 3 }OtHbBeAiE!+[@anon-20191002_181700-77:localhost:8800^-]@anon-20191002_181700-779:localhost:8800-]@anon-20191002_181700-777:localhost:8800-]@anon-20191002_181700-775:localhost:8800-]@anon-20191002_181700-774:localhost:8800-]@anon-20191002_181700-773:localhost:8800-]@anon-20191002_181700-772:localhost:8800-]@anon-20191002_181700-771:localhost:8800-]@anon-20191002_181700-770:localhost:8800-]@anon-20191002_181700-769:localhost:8800-]@anon-20191002_181700-768:localhost:8800-]@anon-20191002_181700-767:localhost:8800-]@anon-20191002_181700-766:localhost:8800-]@anon-20191002_181700-764:localhost:8800-]@anon-20191002_181700-763:localhost:8800-]@anon-20191002_181700-762:localhost:8800-]@anon-20191002_181700-761:localhost:8800-]@anon-20191002_181700-760:localhost:8800+[@anon-20191002_181700-75:localhost:8800]-]@anon-20191002_181700-759:localhost:8800-]@anon-20191002_181700-758:localhost:8800-]@anon-20191002_181700-820:localhost:8800#+[@anon-20191002_181700-81:localhost:8800a-]@anon-20191002_181700-819:localhost:8800$-]@anon-20191002_181700-818:localhost:8800"-]@anon-20191002_181700-816:localhost:8800 -]@anon-20191002_181700-815:localhost:8800!-]@anon-20191002_181700-814:localhost:8800-]@anon-20191002_181700-813:localhost:8800-]@anon-20191002_181700-812:localhost:8800-]@anon-20191002_181700-811:localhost:8800-]@anon-20191002_181700-810:localhost:8800+[@anon-20191002_181700-80:localhost:8800`-]@anon-20191002_181700-809:localhost:8800-]@anon-20191002_181700-808:localhost:8800-]@anon-20191002_181700-807:localhost:8800-]@anon-20191002_181700-806:localhost:8800-]@anon-20191002_181700-805:localhost:8800-]@anon-20191002_181700-804:localhost:8800-]@anon-20191002_181700-803:localhost:8800-]@anon-20191002_181700-802:localhost:8800-]@anon-20191002_181700-801:localhost:8800-]@anon-20191002_181700-800:localhost:8800*Y@anon-20191002_181700-7:localhost:8800+[@anon-20191002_181700-79:localhost:8800_-]@anon-20191002_181700-799:localhost:8800-]@anon-20191002_181700-798:localhost:8800-]@anon-20191002_181700-797:localhost:8800-]@anon-20191002_181700-796:localhost:8800 -]@anon-20191002_181700-795:localhost:8800 -]@anon-20191002_181700-794:localhost:8800 -]@anon-20191002_181700-793:localhost:8800 -]@anon-20191002_181700-792:localhost:8800-]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-790:localhost:8800-]@anon-20191002_181700-789:localhost:8800-]@anon-20191002_181700-788:localhost:8800-]@anon-20191002_181700-787:localhost:8800-]@anon-20191002_181700-786:localhost:8800-]@anon-20191002_181700-785:localhost:8800-]@anon-20191002_181700-784:localhost:8800-]@anon-20191002_181700-783:localhost:8800-]@anon-20191002_181700-782:localhost:8800-]@anon-20191002_181700-781:localhost:8800  eQa$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3770}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y"], "type": "m.room.history_visibility", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043965519, "hashes": {"sha256": "RSCLuplbJw/eVJRhXYs9w/KwPzH2AUGejhTqU23Qnj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D2wOhrAA2GHftocl78wLZjrprUJXnFv2meANVFURx3e44cAWXvYU5zYkVZ+ppKrhucPNPR0IkWyZ6zeBZJyfBQ"}}, "unsigned": {"age_ts": 1570043965519}}teQau$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3769}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw"], "type": "m.room.join_rules", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043964609, "hashes": {"sha256": "18787sw1bOoVzzWS+oytFSO+ydZU45dWUcNsW/kDMfw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nI1+9y7rLCzJoLz086LqaSANfSzFhyfSa8YQFtTzK+VgmeeKBRoXas+j60VdVAZWQFDzYjSN5ne4WJ/28iSwCw"}}, "unsigned": {"age_ts": 1570043964609}}keQac$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3768}{"auth_events": ["$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "type": "m.room.power_levels", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"users": {"@anon-20191002_181700-750:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043963811, "hashes": {"sha256": "1+/04PCp+mH+H/rQqf3AmPkYi1oYKpzHeyVoT+zCeDI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AFfolYSWui9sJxIPmxT11nQw6ck+rfMtbB2dzx/wjTqnzsOKa5ADCLzkDiKLn1zsSzd0nDn1Um9YroWELr50Ag"}}, "unsigned": {"age_ts": 1570043963811}}reQaq$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3767}{"auth_events": ["$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic"], "prev_events": ["$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic"], "type": "m.room.member", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"membership": "join", "displayname": "BABSIRRXCUHNIFZHYFMB", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-750:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043963092, "hashes": {"sha256": "fvxXP5+PUnI44YyEcXjx085QNEsNeJbBHeip3KxODII"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GEYbdMOjtf1hoD4iZ3vRqx9fRUS26sOdcAOLHSLXln/YCYzw5S/G1ftgiT6tRbFUQjOs2UqwGsltKOlp7kdIAw"}}, "unsigned": {"age_ts": 1570043963092}} B;m< xG R ! ]  ~ M X'c2n= yHS"^- R ! ] , h 7  ` B0]H@anon-20191002_181700-794:localhost:8800+0]G@anon-20191002_181700-791:localhost:8800*0]F@anon-20191002_181700-792:localhost:8800)0]E@anon-20191002_181700-789:localhost:8800(0]D@anon-20191002_181700-790:localhost:8800'0]C@anon-20191002_181700-787:localhost:8800&0]B@anon-20191002_181700-788:localhost:8800%0]A@anon-20191002_181700-786:localhost:8800$0]@@anon-20191002_181700-785:localhost:8800#0]?@anon-20191002_181700-784:localhost:8800"0]>@anon-20191002_181700-783:localhost:8800!0]=@anon-20191002_181700-782:localhost:8800 0]<@anon-20191002_181700-781:localhost:88000];@anon-20191002_181700-779:localhost:88000]:@anon-20191002_181700-777:localhost:88000]9@anon-20191002_181700-775:localhost:88000]8@anon-20191002_181700-773:localhost:88000]7@anon-20191002_181700-774:localhost:88000]6@anon-20191002_181700-771:localhost:88000]5@anon-20191002_181700-772:localhost:88000]4@anon-20191002_181700-769:localhost:88000]3@anon-20191002_181700-770:localhost:88000]2@anon-20191002_181700-768:localhost:88000]1@anon-20191002_181700-767:localhost:88000]0@anon-20191002_181700-766:localhost:88000]/@anon-20191002_181700-764:localhost:88000].@anon-20191002_181700-763:localhost:88000]-@anon-20191002_181700-762:localhost:88000],@anon-20191002_181700-761:localhost:88000]+@anon-20191002_181700-759:localhost:88000]*@anon-20191002_181700-760:localhost:8800 0])@anon-20191002_181700-758:localhost:8800 0](@anon-20191002_181700-757:localhost:8800 0]'@anon-20191002_181700-756:localhost:8800 0]&@anon-20191002_181700-754:localhost:8800 0]%@anon-20191002_181700-755:localhost:88000]$@anon-20191002_181700-753:localhost:88000]#@anon-20191002_181700-752:localhost:88000]"@anon-20191002_181700-751:localhost:88000]!@anon-20191002_181700-750:localhost:88000] @anon-20191002_181700-749:localhost:88000]@anon-20191002_181700-748:localhost:88000]@anon-20191002_181700-747:localhost:88000]@anon-20191002_181700-746:localhost:88000]@anon-20191002_181700-745:localhost:88000]@anon-20191002_181700-744:localhost:88000]@anon-20191002_181700-743:localhost:88000]@anon-20191002_181700-742:localhost:88000]@anon-20191002_181700-736:localhost:88000]@anon-20191002_181700-735:localhost:88000]@anon-20191002_181700-734:localhost:88000]@anon-20191002_181700-733:localhost:88000]@anon-20191002_181700-732:localhost:88000]@anon-20191002_181700-731:localhost:88000]@anon-20191002_181700-730:localhost:88000]@anon-20191002_181700-729:localhost:88000]@anon-20191002_181700-728:localhost:88000]@anon-20191002_181700-726:localhost:88000]@anon-20191002_181700-727:localhost:8800 a} { y w u sqomkigeca~KeeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~JeeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~IeeQ$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~HeeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800~GeeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~FeeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800~EeeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800~DeeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~CeeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800~BeeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800~AeeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~@eeQ$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~?eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800~>eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800~=eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~<eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~;eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~:eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800~9eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~8eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~7eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~6eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~5eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~4eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~3eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~2eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~1eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~0eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~/eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~.eeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~-eeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800 4W%9 q? J  P   D  V $ \ +]+kj8wEe3q? p  |q? p  | v>21e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs@1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs?1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs>1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA)1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk&1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUcd1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB01e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB021e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA+1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ5901e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA|1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA{1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAz1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA*1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUd |21e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2YI0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2YH0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2YG1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg#1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg"1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK81e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMw1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMv1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMu1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw 1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04~1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04}1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04| vd1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId41e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM "N"  9 a f  5Wbg%*NoYQ? e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibility$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAgXQ/ e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rules$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YiWQ3 e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 VQ']e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkcUQ' e ~!CAGaRyRvrohDRBsrWH:localhost:8800m.room.create$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYoTQ? e }!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibility$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkgSQ/ e |!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rules$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIiRQ3 e {!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 QQ']e z!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ PQ']e y!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08cOQ' e x!hNCwypIzdDZDVmCEfd:localhost:8800m.room.create$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_AiNQ3 e w!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_access$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnsoMQ? e v!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibility$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRggLQ/ e u!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rules$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMiKQ3 e t!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI JQ']e s!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0cIQ' e r!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo HQ']e q!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 GQ']e p!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40iFQ3 e o!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_access$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigoEQ? e n!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibility$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8gDQ/ e m!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rules$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsiCQ3 e l!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs BQ']e k!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawcAQ' e j!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.create$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIoo@Q? e i!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibility$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4g?Q/ e h!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rules$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgi>Q3 e g!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU =Q']e f!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsc<Q' e e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc ;Q']e d!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg :Q']e c!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8i9Q3 e b!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_access$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwo8Q? e a!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibility$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds  HeQa$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 724, "stream_ordering": 3773}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y", "$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8"], "prev_events": ["$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8"], "type": "m.room.member", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-751:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-751", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-751:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043968465, "hashes": {"sha256": "Khc2lQYyR7Xvw86hEyrG7MUB5yph+L+tvY1vhhJ0oDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YFvDeAUKeb0/4mls1CgwxdHskvt01LJzP3nGSHMWn2v3V4vBf4lT/wy16wjlu6x90VjE2l9HUfAh1nWbV7GLDQ"}}, "unsigned": {"age_ts": 1570043968465, "replaces_state": "$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8"}}eQa/$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3772}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw"], "type": "m.room.member", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-751", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-751:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043967657, "hashes": {"sha256": "L5bEp4Xc5UwdG5znt5OjRXbmgBWgVJASV99WWqzrQH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4TWCE8b0YDA2sZU87qYpQ4qieHnSWICPOQE69gCnu/71eBzLw+4OhQ55rjdFmjcfjkkGgo6BLOcaOh4Sku6fCg"}}, "unsigned": {"age_ts": 1570043967657, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-750:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-750:localhost:8800", "content": {"membership": "join", "displayname": "BABSIRRXCUHNIFZHYFMB", "avatar_url": null}, "sender": "@anon-20191002_181700-750:localhost:8800"}]}}{eQa$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3771}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds"], "type": "m.room.guest_access", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043966590, "hashes": {"sha256": "JgKvNbcCX7SPLdvgHkM89cz1tYX0nMbHUfHKFzuGoD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZBczJZKspv2zw7+diwm9xaa4FDPvurz+FAj5UwE8keeDSQDXVOA71GZmxLBUP1Pa70zIT1gMbR6U92uecvopDg"}}, "unsigned": {"age_ts": 1570043966590}} !#R `  | E  h R  {0Y D gBQ? !NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibility :Q/ !NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rules <Q3 !NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels ^Q']!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800 6Q' !NJdkYMskQwIpIWlWkn:localhost:8800m.room.create ^Q']!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800:Q/ !NNiyzThHMivrxhojfp:localhost:8800m.room.join_rulesBQ? !NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibility6Q' !NNiyzThHMivrxhojfp:localhost:8800m.room.create<Q3 !NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels^Q']!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800:Q/ !NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rulesBQ? !NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility6Q' !NFWKQvZkIwvecnREOC:localhost:8800m.room.create<Q3 !MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levelsi^Q']!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829l^Q']!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800h:Q/ !MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rulesjBQ? !MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibilityk6Q' !MqstbCLZIQFiYNHrqR:localhost:8800m.room.createg<Q3 !MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levelsY^Q']!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800XGQ'/!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800]:Q/ !MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rulesZBQ? !MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibility[<Q3 !MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_access\6Q' !MlzmtUYSZOiByAZdKx:localhost:8800m.room.createW<Q3 !MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels 44Q# !MXhwoqNXvexeDDSOZT:localhost:8800m.room.name 7^Q']!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800 3^Q']!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800 ;:Q/ !MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rules 5BQ? !MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibility 6 t l d ] U|  M %E=5-eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800,eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E!RSLvuCuAqKQQrKCxNq:localhost:8800 9eeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800 ?eeQ$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800 eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800 eeeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:88009eeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800*eeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800%eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800eeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800 }eeQ$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800|eeQ$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800eeeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800ǁeeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800$eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800GeeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800 >xh X H 8 (  EeeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800y >eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800Q eeQ$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800_ eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800 eeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800X eeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800K1eeQ$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800D eeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800 teeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800 1eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800eBeeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800{eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800 CeeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800, 4`xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`%$#"!           ~}|{zyxwvutsrq~p}o|n{mzlykxjwivhugtfserdqcpboan`m_l^k]j\i[hZgYfXeWdVcUbTaS`R_Q^P]O\N[MZLYKXJWIVHUGTFSERDQCPBOAN@M?L>K=J<I;H:G9F8E7D6C5B4A3@2?1>0=/<.;-:,9+8*7)6(5'4&3%2$1#0"/!. -,+*)('&%$#"!                                   "s @ O }  %.Vn,;igyeQ3 $jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels xeQ']$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800aweQ' $dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.createmveQ? $KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibilityeueQ/ $dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rulesgteQ3 $fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels seQ']$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800areQ' $wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800m.room.createmqeQ? $4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibilityepeQ/ $FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rulesgoeQ3 $ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels neQ']$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800 meQ']$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800aleQ' $YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800m.room.creategkeQ3 $Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_accessmjeQ? $fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibilityeieQ/ $wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rulesgheQ3 $qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels geQ']$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800afeQ' $dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create eeQ']$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800 deQ']$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800gceQ3 $Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_accessmbeQ? $5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibilityeaeQ/ $_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rulesg`eQ3 $_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels _eQ']$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800a^eQ' $jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.createm]eQ? $ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibilitye\eQ/ $PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rulesg[eQ3 $PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels ZeQ']$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800aYeQ' $EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create XeQ']$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800 E}u m e ] U MEeeQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800 ƁeeQ$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800 ]eeQ$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800reeQ$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800 ]eeQ$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800 eeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800eeQ$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800 eeQ$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800y   .teQau$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3777}{"auth_events": ["$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU", "$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc", "$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "prev_events": ["$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU"], "type": "m.room.join_rules", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043975032, "hashes": {"sha256": "yHtGT4Gw1KUm8LOmR8EbW+V0/7Lggrx+NXOnGKRR5S8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MZPidSg8GDDMq4prerNp2I9SmEv2yCWg8dqeW7PpmcyCeHxGFrmkq7lE1c+Yx/Q3Zdd+pkp9//qc1NnkeR7PCA"}}, "unsigned": {"age_ts": 1570043975032}}keQac$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3776}{"auth_events": ["$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc", "$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "prev_events": ["$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "type": "m.room.power_levels", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"users": {"@anon-20191002_181700-752:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043973168, "hashes": {"sha256": "7z3pSDRB34AwAqLex2vzCdxjaQ6WzGXeocWnltIORfU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JI6AMPsJWZ2O6l8Cs/kpr+sf0GwxVMzZNOSV1LZ+NukxHKuPbCYHkZPtYh61VtdvLMpzk04WFHKKKjbckGUjCg"}}, "unsigned": {"age_ts": 1570043973168}}reQaq$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3775}{"auth_events": ["$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc"], "prev_events": ["$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc"], "type": "m.room.member", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"membership": "join", "displayname": "JYNGOISMLXVDWPDRVNCS", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-752:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043971941, "hashes": {"sha256": "cXlLWdHBZKphbi85vgJM8z2ye7MIOEuAsnighhxt5h8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ygwdBRDKzMR83D97BefaVfY5vXRysGOkdxdMPZzyDWw+Oobf49Lja3PRh2zxosF/aYEsYq8HDLKQvriehf2nBQ"}}, "unsigned": {"age_ts": 1570043971941}}ieQa_$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3774}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-752:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043971006, "hashes": {"sha256": "fSwoxnwbZP5+uqWUpBkrlqbn2gzn7wAGK11AvRIaLFQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t4orVM2xhxa/DIvBAHic/DJxAeKTYqEP5xI0K9XQLBO5er4QjBD3Y3Q64n68W9mIz4DTXGlkcOfW3jviNBZuAw"}}, "unsigned": {"age_ts": 1570043971006}} 4N;m wF Q \ + g 6  r A  | K V%a0l; wFQ \+g-e/4]@anon-20191002_181700-832:localhost:8800$.5] @astest-1-20191002_181700:localhost:8800%1.3] @astest-0-20191002_181700:localhost:88002?@as-user-1:localhost:880071o@astest-01create-1-20191002_181700:localhost:880080q@_astest-01create-0-20191002_181700:localhost:88007/o@astest-01create-0-20191002_181700:localhost:8800..] @anon-20191002_181700-831:localhost:8800.-]@anon-20191002_181700-830:localhost:8800.,]@anon-20191002_181700-829:localhost:8800.+]@anon-20191002_181700-828:localhost:8800.*]@anon-20191002_181700-827:localhost:8800.)]@anon-20191002_181700-826:localhost:8800.(]@anon-20191002_181700-825:localhost:8800.']@anon-20191002_181700-823:localhost:8800.&]@anon-20191002_181700-821:localhost:8800.%]@anon-20191002_181700-822:localhost:8800.$]@anon-20191002_181700-819:localhost:8800.#]@anon-20191002_181700-820:localhost:8800."]@anon-20191002_181700-818:localhost:8800.!]@anon-20191002_181700-815:localhost:8800. ]@anon-20191002_181700-816:localhost:8800.]@anon-20191002_181700-813:localhost:8800.]@anon-20191002_181700-814:localhost:8800.]@anon-20191002_181700-812:localhost:8800.]@anon-20191002_181700-811:localhost:8800.]@anon-20191002_181700-809:localhost:8800.]@anon-20191002_181700-810:localhost:8800.]@anon-20191002_181700-807:localhost:8800.]@anon-20191002_181700-808:localhost:8800.]@anon-20191002_181700-805:localhost:8800.]@anon-20191002_181700-806:localhost:8800.]@anon-20191002_181700-803:localhost:8800.]@anon-20191002_181700-804:localhost:8800.]@anon-20191002_181700-801:localhost:8800.]@anon-20191002_181700-802:localhost:8800.]@anon-20191002_181700-799:localhost:8800.]@anon-20191002_181700-800:localhost:8800.] @anon-20191002_181700-797:localhost:8800.]@anon-20191002_181700-798:localhost:8800 . ] @anon-20191002_181700-795:localhost:8800 . ]@anon-20191002_181700-796:localhost:8800. ] @anon-20191002_181700-793:localhost:8800. ]@anon-20191002_181700-794:localhost:8800/ ]@anon-20191002_181700-791:localhost:8800.]@anon-20191002_181700-792:localhost:8800.] @anon-20191002_181700-789:localhost:8800.]@anon-20191002_181700-790:localhost:8800.] @anon-20191002_181700-787:localhost:8800.]@anon-20191002_181700-788:localhost:8800.]@anon-20191002_181700-786:localhost:8800.]@anon-20191002_181700-785:localhost:8800.]@anon-20191002_181700-784:localhost:8800.]@anon-20191002_181700-783:localhost:8800.]@anon-20191002_181700-782:localhost:8800.~]@anon-20191002_181700-781:localhost:8800.}]@anon-20191002_181700-779:localhost:8800.|]@anon-20191002_181700-777:localhost:8800.{]@anon-20191002_181700-775:localhost:8800.z]@anon-20191002_181700-773:localhost:8800.y]@anon-20191002_181700-774:localhost:8800.x]@anon-20191002_181700-771:localhost:8800.w]@anon-20191002_181700-772:localhost:8800.v]@anon-20191002_181700-769:localhost:8800.u]@anon-20191002_181700-770:localhost:8800.t] @anon-20191002_181700-768:localhost:8800.s] @anon-20191002_181700-767:localhost:8800.r]@anon-20191002_181700-766:localhost:8800.q]@anon-20191002_181700-764:localhost:8800.p] @anon-20191002_181700-763:localhost:8800.o] @anon-20191002_181700-762:localhost:8800.n]@anon-20191002_181700-761:localhost:8800.m]@anon-20191002_181700-759:localhost:8800.l]@anon-20191002_181700-760:localhost:8800/h]@anon-20191002_181700-754:localhost:8800.j] @anon-20191002_181700-757:localhost:8800.i]@anon-20191002_181700-756:localhost:8800.k] @anon-20191002_181700-758:localhost:8800 g * T~=ggW]!c@anon-20191002_181700-764:localhost:8800CSKXMMYZWJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQogV]!c@anon-20191002_181700-763:localhost:8800JLJXCXZRRGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgogU]!c@anon-20191002_181700-762:localhost:8800SUIBWCIGQVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1QogT]!c@anon-20191002_181700-761:localhost:8800VFSPRJLZEGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQogS]!c@anon-20191002_181700-759:localhost:8800KXAFXIMWWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwogR]!c@anon-20191002_181700-760:localhost:8800AAUYDDOUHUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2AogQ]!c@anon-20191002_181700-758:localhost:8800GUAXNWFTDGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQogP]!c@anon-20191002_181700-757:localhost:8800QRQFPUSZXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAogO]!c@anon-20191002_181700-756:localhost:8800VNKYAMEGUQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwogN]!c@anon-20191002_181700-754:localhost:8800ZUIRTQEUGGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAogM]!c@anon-20191002_181700-755:localhost:8800AJENIKARXJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQo -RM H C > 9 4/*|%w rmhc T`Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50T_Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9sT^Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwT]Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIT\Qe!ulbQzxdPXzuvNoqqgU:localhost:8800$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgT[Qe!ulbQzxdPXzuvNoqqgU:localhost:8800$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQTZQe!ulbQzxdPXzuvNoqqgU:localhost:8800$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMTYQe!ulbQzxdPXzuvNoqqgU:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BATXQe!ulbQzxdPXzuvNoqqgU:localhost:8800$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4TWQe!pTvdDtkgovsIdAdxCm:localhost:8800$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4TVQe!pTvdDtkgovsIdAdxCm:localhost:8800$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDATUQe!pTvdDtkgovsIdAdxCm:localhost:8800$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMTTQe!pTvdDtkgovsIdAdxCm:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWETSQe!pTvdDtkgovsIdAdxCm:localhost:8800$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zsTRQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsITQQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcTPQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598TOQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cTNQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUTMQe!CAGaRyRvrohDRBsrWH:localhost:8800$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoATLQe!CAGaRyRvrohDRBsrWH:localhost:8800$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YTKQe!CAGaRyRvrohDRBsrWH:localhost:8800$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694TJQe!CAGaRyRvrohDRBsrWH:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkTIQe!CAGaRyRvrohDRBsrWH:localhost:8800$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYTHQe!hNCwypIzdDZDVmCEfd:localhost:8800$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkTGQe!hNCwypIzdDZDVmCEfd:localhost:8800$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQITFQe!hNCwypIzdDZDVmCEfd:localhost:8800$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0TEQe!hNCwypIzdDZDVmCEfd:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08TDQe!eZjhYVNpwdogVDKHCk:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQTCQe!hNCwypIzdDZDVmCEfd:localhost:8800$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_ATBQe!eZjhYVNpwdogVDKHCk:localhost:8800$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnsTAQe!eZjhYVNpwdogVDKHCk:localhost:8800$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgT@Qe!eZjhYVNpwdogVDKHCk:localhost:8800$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMT?Qe!eZjhYVNpwdogVDKHCk:localhost:8800$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIT>Qe!eZjhYVNpwdogVDKHCk:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0T=Qe!eZjhYVNpwdogVDKHCk:localhost:8800$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdoT<Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8T;Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40T:Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigT9Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8T8Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsT7Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsT6Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawT5Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIoT4Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4  w keQac$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3781}{"auth_events": ["$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "type": "m.room.power_levels", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"users": {"@anon-20191002_181700-754:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043978658, "hashes": {"sha256": "1VHEWDLHDOfoWDasvG1iQiXPkfg4YDltL36jBzl95aM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nWnLvaD5tfpuFOae6JhY8o50K5/WChikduHc5o2m4T6Lty55hOItEuS84rYRkfimr0mEDReEKg0udwwEtJTHAg"}}, "unsigned": {"age_ts": 1570043978658}}reQaq$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3780}{"auth_events": ["$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo"], "prev_events": ["$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo"], "type": "m.room.member", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-754:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043977741, "hashes": {"sha256": "qc+pYVfX6130nby15LQ0ASsZzhysdggUaR23OUMVfzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0x85J1HXlcn6FWGQyhMIL1XGE4kZCeSBp8gxvHasuur0EVy3A91GuosldQTJJDRDVRtTJjhmnlEBZp+lhkS1BQ"}}, "unsigned": {"age_ts": 1570043977741}}ieQa_$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3779}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-754:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043976327, "hashes": {"sha256": "g4a4qQHvJayQ7sm54zH4nETmBkGHNzrCpYyRUH5xSdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VmJaIu4UskCGKgFPYXrZFgQKblqhaq609FXQQdc/b2+E8Pv8c/CCgaDMb1J9UPa9PITYDc0wd5ZNrE9A580mBQ"}}, "unsigned": {"age_ts": 1570043976327}}eQa$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3778}{"auth_events": ["$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU", "$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc", "$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "prev_events": ["$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg"], "type": "m.room.history_visibility", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043976001, "hashes": {"sha256": "yKYbrV7UWleKISwFrmdNqhQOLnuqPCB6iso/kfM+/Lw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tAUi3L1PRPBcIbEZtjHy9dVZSZAJgM5vDDZlryBUxghCz4zEGEWgKCpu6CE5VV6ieJu0zP70Q8dNPVHsoM67Aw"}}, "unsigned": {"age_ts": 1570043976001}} ^Kg2d1 a . a,/b.^+ `b - ad0 . b / [' c .[)]) l C 2]@anon-20191002_181700-798:localhost:8800aX2]@anon-20191002_181700-812:localhost:8800ah2]@anon-20191002_181700-811:localhost:8800ag2]@anon-20191002_181700-814:localhost:8800ai2]@anon-20191002_181700-810:localhost:8800ae2]@anon-20191002_181700-807:localhost:8800ad2]@anon-20191002_181700-808:localhost:8800ac2]@anon-20191002_181700-805:localhost:8800ab2]@anon-20191002_181700-797:localhost:8800aY2]@anon-20191002_181700-809:localhost:8800af^2]@anon-20191002_181700-803:localhost:8800a`2]@anon-20191002_181700-804:localhost:8800a_2]@anon-20191002_181700-801:localhost:8800a^2]@anon-20191002_181700-802:localhost:8800a]2]@anon-20191002_181700-799:localhost:8800a\2]@anon-20191002_181700-800:localhost:8800a[4]@anon-20191002_181700-797:localhost:8800mZ3[@anon-20191002_181700-81:localhost:8800m1[@anon-20191002_181700-81:localhost:8800a1[@anon-20191002_181700-80:localhost:8800a/Y@anon-20191002_181700-7:localhost:8800a$3[@anon-20191002_181700-79:localhost:8800m1[@anon-20191002_181700-79:localhost:8800a2]@anon-20191002_181700-806:localhost:8800aa2]@anon-20191002_181700-784:localhost:8800aF1[@anon-20191002_181700-89:localhost:8800a1[@anon-20191002_181700-88:localhost:8800a3[@anon-20191002_181700-87:localhost:8800m1[@anon-20191002_181700-87:localhost:8800a3[@anon-20191002_181700-86:localhost:8800m1[@anon-20191002_181700-86:localhost:8800a3[@anon-20191002_181700-85:localhost:8800m1[@anon-20191002_181700-85:localhost:8800a3[@anon-20191002_181700-84:localhost:8800m1[@anon-20191002_181700-84:localhost:8800a3[@anon-20191002_181700-83:localhost:8800m1[@anon-20191002_181700-83:localhost:8800a3[@anon-20191002_181700-82:localhost:8800m1[@anon-20191002_181700-82:localhost:8800a94]@anon-20191002_181700-832:localhost:8800m2]@anon-20191002_181700-832:localhost:8800a4]@anon-20191002_181700-831:localhost:8800mz2]@anon-20191002_181700-831:localhost:8800ay2]@anon-20191002_181700-830:localhost:8800ax2]@anon-20191002_181700-829:localhost:8800aw2]@anon-20191002_181700-828:localhost:8800av2]@anon-20191002_181700-827:localhost:8800au2]@anon-20191002_181700-826:localhost:8800at2]@anon-20191002_181700-825:localhost:8800as2]@anon-20191002_181700-823:localhost:8800ar2]@anon-20191002_181700-821:localhost:8800aq2]@anon-20191002_181700-822:localhost:8800ap2]@anon-20191002_181700-819:localhost:8800ao2]@anon-20191002_181700-820:localhost:8800an2]@anon-20191002_181700-818:localhost:8800am2]@anon-20191002_181700-815:localhost:8800al2]@anon-20191002_181700-816:localhost:8800ak2]@anon-20191002_181700-813:localhost:8800aj2]@anon-20191002_181700-796:localhost:8800aU4]@anon-20191002_181700-795:localhost:8800mW2]@anon-20191002_181700-795:localhost:8800aV2]@anon-20191002_181700-794:localhost:8800aR4]@anon-20191002_181700-793:localhost:8800mT2]@anon-20191002_181700-793:localhost:8800aS2]@anon-20191002_181700-792:localhost:8800aO4]@anon-20191002_181700-791:localhost:8800mQ2]@anon-20191002_181700-791:localhost:8800aP2]@anon-20191002_181700-790:localhost:8800aL4]@anon-20191002_181700-789:localhost:8800mN2]@anon-20191002_181700-789:localhost:8800aM2]@anon-20191002_181700-788:localhost:8800aI4]@anon-20191002_181700-787:localhost:8800mK2]@anon-20191002_181700-787:localhost:8800aJ2]@anon-20191002_181700-786:localhost:8800aH2]@anon-20191002_181700-785:localhost:8800aG  { eQa$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3784}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8"], "type": "m.room.guest_access", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043982125, "hashes": {"sha256": "qsd2FaH6J6EpwQyl4qUCO6nHm2ZSB7cf7vEnLzyomd4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VlbP1BqvW2VCQqgwpaX0j2StjwE1Zghgckk8ZAa+c/GpXVARiL6AJPUFSGIQMKo1jME/sC9FCuRE7cjQKD28CA"}}, "unsigned": {"age_ts": 1570043982125}}eQa$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3783}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs"], "type": "m.room.history_visibility", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043981276, "hashes": {"sha256": "0ZRKYr20rGOQmciI4D8SOJomOc0/eD4tVa2Bm++NQnY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OZCKOZsLCbFtJ9iZ44sn2C2AvWWwfmb4NJo80qAe1cXe3B94orn1oPgGk21g63ioD6N+U99t6nit1rXLpEUKBA"}}, "unsigned": {"age_ts": 1570043981276}}teQau$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3782}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs"], "type": "m.room.join_rules", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043979400, "hashes": {"sha256": "QElTfDXN3bh41uYfQ3v9tU7uxTxgTyLF4EgHVDguN2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hHKuKeURLSNTJdgezwEXx/NdNe+YaVK7ZtP90sA4v+OClI2bGemz1yEIucNfeILGPd9lr1MCCtbUYiNDrcMQAA"}}, "unsigned": {"age_ts": 1570043979400}} a} { y w u sqomkigeca~jeeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~ieeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~heeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~geeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~feeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~eeeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~deeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~ceeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~beeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~aeeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~`eeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~_eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~^eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~]eeQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~\eeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800~[eeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800~ZeeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~YeeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~XeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~WeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800~VeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~UeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~TeeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~SeeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~ReeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~QeeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~PeeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~OeeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~NeeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~MeeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~LeeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VCeL$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOksha256۪- C+Zٓi(!uد"VBeL$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcsha256K?UeAW+V5Bz~Xi%.BYVAeL$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGosha256!f"{(ݚғ EN.gljV@eL$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50sha256K>CbLBoZe&UG3ͿʦV?eL$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9ssha256,|íSaX0y12C^U<3V>eL$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwsha256_z)NȈ\F0x8%MV=eL$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIsha256( [H,V®s)6V<eL$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgsha256ILωt{. HYd=ɘV;eL$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQsha256Tg~;}X,O|i!6l7CV:eL$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMsha256Y{8E#{nљsQy\cV9eL$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAsha2566(xv ( _`+ĜV8eL$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4sha256!%ε(*רcĠfGjV7eL$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4sha256it|еA8L NTNV6eL$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAsha256dc$(yel$yVnm3"Ų0V5eL$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMsha256jN',XeM~ WV4eL$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEsha256Ix ݼ[ ފbcd~I*KfaV3eL$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zssha256G,PҮsKnY8ћ ~U W;V2eL$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIsha256s~%~G =k. ,S>:V1eL$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcsha2568~`]?@*y3=ZTV0eL$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598sha256][\=5ēuwyFO #"b/1V/eL$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1csha256̋GX­mF%joܪ{/WV.eL$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUsha256w [m/6`gmED d6\V-eL$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAsha256(s2ԡ֊9[f};i Ǡ@FvV,eL$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Ysha256upvZɚ=jI:hTksFV+eL$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694sha256d+S˓RJ]yD vMj\W0l&V%eL$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08sha2568Av9rS}|)l'NOV$eL$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQsha256=y;r4 6fM0tV#eL$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Asha256bo$)%L̹ ȿ/^+V"eL$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snssha256.f */uaq0 xTtyԼJ{V!eL$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgsha256} !"6AC4vѣ!V eL$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMsha256u_K4Qp8\0o{<ƃVeL$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIsha256#3h~3bVm^*GBz)"VeL$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0sha256' ] 4wb5hƋ}LFVeL$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdosha256tIگ(]/i_&}`7k3VeL$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8sha2566+&R4ÍuVeL$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40sha256}@ÇѿЩd0w=,9 VeL$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigsha256քE)n-Zkbk7 ܰ.(VeL$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8sha256O11zz=ޘS WoqG wٿVeL$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYssha256WɎ;ӛlߚnX2lzli HP ^  n  l&0:8H&^e3Q ]$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598m.room.power_levels!vxEMWYTUdzvLyVZNzJ:localhost:8800mN8mOA@anon-20191002_181700-762:localhost:8800 ]e'Q ]$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cm.room.member!vxEMWYTUdzvLyVZNzJ:localhost:8800mJsmJ@anon-20191002_181700-762:localhost:8800\ e'Q  ]$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUm.room.create!vxEMWYTUdzvLyVZNzJ:localhost:8800mGmG@anon-20191002_181700-762:localhost:8800,[e?Q ]$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAm.room.history_visibility!CAGaRyRvrohDRBsrWH:localhost:8800m7m9@anon-20191002_181700-758:localhost:8800$Ze/Q ]$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Ym.room.join_rules!CAGaRyRvrohDRBsrWH:localhost:8800m5?m5@anon-20191002_181700-758:localhost:8800&Ye3Q ]$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694m.room.power_levels!CAGaRyRvrohDRBsrWH:localhost:8800m2~m3@anon-20191002_181700-758:localhost:8800 Xe'Q ]$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkm.room.member!CAGaRyRvrohDRBsrWH:localhost:8800m0m0@anon-20191002_181700-758:localhost:8800W e'Q  ]$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYm.room.create!CAGaRyRvrohDRBsrWH:localhost:8800m-m-p@anon-20191002_181700-758:localhost:8800,Ve?Q ]$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkm.room.history_visibility!hNCwypIzdDZDVmCEfd:localhost:8800m$m&/@anon-20191002_181700-757:localhost:8800$Ue/Q ]$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIm.room.join_rules!hNCwypIzdDZDVmCEfd:localhost:8800m!m"@anon-20191002_181700-757:localhost:8800&Te3Q ]$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0m.room.power_levels!hNCwypIzdDZDVmCEfd:localhost:8800m]m@anon-20191002_181700-757:localhost:8800 Se'Q ]$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08m.room.member!hNCwypIzdDZDVmCEfd:localhost:8800mmi@anon-20191002_181700-757:localhost:8800 Re'Q ]$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQm.room.member!eZjhYVNpwdogVDKHCk:localhost:8800memz@anon-20191002_181700-754:localhost:8800Q e'Q  ]$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Am.room.create!hNCwypIzdDZDVmCEfd:localhost:8800mm@anon-20191002_181700-757:localhost:8800&Pe3Q ]$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snsm.room.guest_access!eZjhYVNpwdogVDKHCk:localhost:8800mm1@anon-20191002_181700-754:localhost:8800,Oe?Q ]$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgm.room.history_visibility!eZjhYVNpwdogVDKHCk:localhost:8800mm8@anon-20191002_181700-754:localhost:8800$Ne/Q ]$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMm.room.join_rules!eZjhYVNpwdogVDKHCk:localhost:8800m m @anon-20191002_181700-754:localhost:8800&Me3Q ]$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIm.room.power_levels!eZjhYVNpwdogVDKHCk:localhost:8800m1m @anon-20191002_181700-754:localhost:8800 Le'Q ]$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0m.room.member!eZjhYVNpwdogVDKHCk:localhost:8800mm@anon-20191002_181700-754:localhost:8800K e'Q  ]$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdom.room.create!eZjhYVNpwdogVDKHCk:localhost:8800m+mF@anon-20191002_181700-754:localhost:8800 Je'Q ]$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8m.room.member!sBcwyPoXKgnSGVTjNR:localhost:8800m5m@anon-20191002_181700-755:localhost:8800 Ie'Q ]$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40m.room.member!sBcwyPoXKgnSGVTjNR:localhost:8800mWm@anon-20191002_181700-754:localhost:8800&He3Q ]$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigm.room.guest_access!sBcwyPoXKgnSGVTjNR:localhost:8800m-m@anon-20191002_181700-754:localhost:8800,Ge?Q ]$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8m.room.history_visibility!sBcwyPoXKgnSGVTjNR:localhost:8800mm@anon-20191002_181700-754:localhost:8800 2 k2i#eQa_$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3787}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-754:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043984939, "hashes": {"sha256": "tzU3SDuZIpjBvcoxT1tYe3xkIZGxjDqk79FRtZxGzYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0mtCziHOyTnl/QaFVseYC1IihJLNRw0z0PS2YCSag9+bm/0NEdsH4tE7N0fWSgtop8PqnbWIJrxQlaurcsHbCQ"}}, "unsigned": {"age_ts": 1570043984939}}H"eQa$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 727, "stream_ordering": 3786}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs", "$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40"], "prev_events": ["$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40"], "type": "m.room.member", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-755:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-755", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-755:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043983925, "hashes": {"sha256": "fCk1o5O5Iz+1UCNe/OQI+uMiEhJ6orjuztEDPC8aVUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rttuxhK/qEueQsKinxcKv5SWiU/HjS1wQQfr9itCBats1vPUzcJQaTGdSyUmTP0pOERGkNGg8UdlLNJ3t8cNBg"}}, "unsigned": {"age_ts": 1570043983925, "replaces_state": "$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40"}}!eQa/$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3785}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig"], "type": "m.room.member", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-755", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-755:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043983191, "hashes": {"sha256": "7CUasjwVqPJYjhArJPwEjxEmX4wBnMl/4Kkf298d3NI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0EXx5ebEiYNEivmFA9/zu1Dj+0ol8CX99yIQrK7G4SUcMQjkCGXHQL64NA9I/gMLUG90qqhAJCPm6HwJwXVJDg"}}, "unsigned": {"age_ts": 1570043983191, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-754:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "sender": "@anon-20191002_181700-754:localhost:8800"}]}} "o z 8 j F t  =in27_j(aeQ' $KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.createmeQ? $Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibilityeeQ/ $oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rulesgeQ3 $pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels eQ']$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800joinaeQ' $8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.createmeQ? $Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibilityeeQ/ $ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rulesgeQ3 $ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels eQ']$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800joinaeQ' $RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800m.room.createmeQ? $2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibilityeeQ/ $Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rulesgeQ3 $jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels eQ']$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800joina eQ' $dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.createm eQ? $KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibilitye eQ/ $dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rulesg eQ3 $fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels eQ']$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800joinaeQ' $wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800m.room.createmeQ? $4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibilityeeQ/ $FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rulesgeQ3 $ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels eQ']$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800joineQ']$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800inviteaeQ' $YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800m.room.creategeQ3 $Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_accessmeQ? $fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibilitye~eQ/ $wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rulesg}eQ3 $qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels |eQ']$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800joina{eQ' $dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create zeQ']$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800join 8&p> v D  | K  & Q X W % ] +c1i7o= wE^,^,1e1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g01e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4L1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc61e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y+0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcO1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYN1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoD1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00 1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUS1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Yj1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAm1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g B1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E /1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y)1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI ,1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkv1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4E1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQof1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQr1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc?1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI,1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA w 8&p> v D  | K  & Q X W % ] +c1i7o= wE^,^,1e1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g01e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4L1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc61e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y+0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcO1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYN1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoD1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00 1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUS1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Yj1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAm1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g B1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E /1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y)1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI ,1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkv1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4E1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQof1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQr1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc?1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI,1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA u i 4h5  gi 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY5V2M2YnM6Nm5NJmg4SzoKMDAyZnNpZ25hdHVyZSD2H-fLXFMXpaFQcFyMxL9JFAeONbItYVwmt1eGsB3krwo  'eQa$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3791}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM"], "type": "m.room.history_visibility", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043989926, "hashes": {"sha256": "fDGsjNsZaSJ7qAIUAWfaplpHO5DKlHmsgSE2LpjQT5w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ws9iORi9+/W32N49fOiUOTCNWbEf1o7KiPHnwrJyXogUIktGD9gtw1b1bm1IhZ6OTuKjjyhhuYNcMD0+OOl6Dg"}}, "unsigned": {"age_ts": 1570043989926}}t&eQau$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3790}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI"], "type": "m.room.join_rules", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043988926, "hashes": {"sha256": "T/BPvaDYXoPWn0JwkUpkRCB2fO6J0AXiaISg9KA7OTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5hWIjSvpBqfcnGEHML+M68eCTUEHB4Hy8Y+WoMpbRDe89mMFqyjOsqHKzdUW3Vkjio6nO6o7IQO1gZfMNN84BQ"}}, "unsigned": {"age_ts": 1570043988926}}k%eQac$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3789}{"auth_events": ["$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "type": "m.room.power_levels", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"users": {"@anon-20191002_181700-754:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043987761, "hashes": {"sha256": "seYThqkxg9QNawDDcUKfrr/mfSQ8E3F2jlzU0ves9Ts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BLvOaZibf8zyEqkosKIvLkVzjGN+Otv+PC4fK4UfmH6E+ekaCBa0k6GCkIbQOhOXHL6wdGRm9FE9zniWLDQjDA"}}, "unsigned": {"age_ts": 1570043987761}}r$eQaq$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3788}{"auth_events": ["$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo"], "prev_events": ["$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo"], "type": "m.room.member", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-754:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043986921, "hashes": {"sha256": "2TAtSrMxj//iYHoLKCrs1bT68RuHMB4zMNktrSPkjaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NW8Pa8OOiMedH8i3mPpENPqZeN7OIwA3A6YVnmTQqYSbqAGA35Nn0BIfF2hc1MljblYX2jlONN7ujoa1Gda9CA"}}, "unsigned": {"age_ts": 1570043986921}} ~z v r n j fb^ZVRNJFYeeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800XeeQ$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800WeeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800VeeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800UeeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800TeeQ$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800SeeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800ReeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800QeeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800PeeQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800OeeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800NeeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800MeeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800LeeQ$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800KeeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800JeeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800IeeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800HeeQ$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800GeeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800FeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800EeeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800DeeQ$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800CeeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800BeeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800AeeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800@eeQ$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800?eeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800>eeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800=eeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800<eeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800  4 h 9md]c@anon-20191002_181700-785:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAo127.0.0.1Ղd]c@anon-20191002_181700-783:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgo127.0.0.1ӂd]c@anon-20191002_181700-784:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAo127.0.0.1Ԃd]c@anon-20191002_181700-786:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAo127.0.0.1ւd]c@anon-20191002_181700-782:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1go127.0.0.1҂d]c@anon-20191002_181700-781:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50Qo127.0.0.1тa[a@anon-20191002_181700-77:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCg127.0.0.1@d]c@anon-20191002_181700-779:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAo127.0.0.1Ђd]c@anon-20191002_181700-777:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgo127.0.0.1ςd]c@anon-20191002_181700-775:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwo127.0.0.1΂d]c@anon-20191002_181700-774:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAo127.0.0.1 8l D `8F]c!E@anon-20191002_181700-767:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQoHLSHGDMIOB127.0.0.1Perl + Net::Async::HTTP/0.44mzE]c!E@anon-20191002_181700-766:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQoHMOWFAWFNH127.0.0.1Perl + Net::Async::HTTP/0.44mxD]c!E@anon-20191002_181700-764:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQoCSKXMMYZWJ127.0.0.1Perl + Net::Async::HTTP/0.44mtC]c!E@anon-20191002_181700-763:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgoJLJXCXZRRG127.0.0.1Perl + Net::Async::HTTP/0.44m\B]c!E@anon-20191002_181700-762:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1QoSUIBWCIGQV127.0.0.1Perl + Net::Async::HTTP/0.44mF(A]c!E@anon-20191002_181700-761:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQoVFSPRJLZEG127.0.0.1Perl + Net::Async::HTTP/0.44mCY@]c!E@anon-20191002_181700-760:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2AoAAUYDDOUHU127.0.0.1Perl + Net::Async::HTTP/0.44mAr?]c!E@anon-20191002_181700-759:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwoKXAFXIMWWP127.0.0.1Perl + Net::Async::HTTP/0.44m@}>]c!E@anon-20191002_181700-758:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQoGUAXNWFTDG127.0.0.1Perl + Net::Async::HTTP/0.44m+=]c!E@anon-20191002_181700-757:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAoQRQFPUSZXE127.0.0.1Perl + Net::Async::HTTP/0.44m  v+eQay$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3795}{"auth_events": ["$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A"], "prev_events": ["$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A"], "type": "m.room.member", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-757", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-757:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043992493, "hashes": {"sha256": "fxyHAbnqBtNwp9UTt47oBTzVr9dKELAdrTpvoUyJMLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w1EsgQfVRj5BnsQQnuKi+5sXg5jiXhpi5YnETVGgh0eYpKphHn4feFa/5NZA+UPtgx9spHwG9WzjIimjkYD1DQ"}}, "unsigned": {"age_ts": 1570043992493}}*eQa/$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3794}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns"], "type": "m.room.member", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-755", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-755:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043992677, "hashes": {"sha256": "NoIYwRx8iuIbTykvr5vketQtdeW4obpzrnbF/1NWB8A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hJJKn8KEGN64z3J6xIn1GBHm1uOclJVyeuI7l8wHDnf6BTkSvZ5nHgcInWndIC8UBRm5cEvLcHAN5hqZqN0GAA"}}, "unsigned": {"age_ts": 1570043992677, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-754:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "sender": "@anon-20191002_181700-754:localhost:8800"}]}}i)eQa_$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3793}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-757:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043991304, "hashes": {"sha256": "HhVf55D215c2XfGQvnHW1TzMS+g8MxuAlchenpwMEGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KFwCwRBImjM2chAQNTY0QvSfw2usLQKbNU8+K8IiMg69egrXU5R4FRO5+AwIXpqFeFwuBA23KwebOQHOsdnrBQ"}}, "unsigned": {"age_ts": 1570043991304}}{(eQa$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3792}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg"], "type": "m.room.guest_access", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043991301, "hashes": {"sha256": "opEgHRrFe+DQYeLp9t1U2mhSv/z0eQ3LDDLdT+NXQJ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5VcE5/FT39wguT4DXq+HW5rOHv58Qfza+E6wXmsvXLcBXlzzMR5bpuT7YfgkKg5Eyr/NaKA7kUD6h27ayJ8DAQ"}}, "unsigned": {"age_ts": 1570043991301}} a} { y w u sqomkigeca~ eeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~~eeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800~}eeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~|eeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800~{eeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800~zeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~yeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800~xeeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800~weeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~veeQ$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~ueeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800~teeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~seeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800~reeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800~qeeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~peeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800~oeeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800~neeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~meeQ$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~leeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~keeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800 "|ps . 1 S \ Bhk&)KT|h2Q/ e!jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rules$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoj1Q3 e!jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 0Q']e!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkd/Q' e!jGQNGXehugtTvjUGKI:localhost:8800m.room.create$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcp.Q? e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibility$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGoh-Q/ e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rules$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50j,Q3 e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s +Q']e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwd*Q' e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.create$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIp)Q? e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibility$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgh(Q/ e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rules$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQj'Q3 e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM &Q']e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAd%Q' e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.create$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4p$Q? e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibility$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4h#Q/ e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rules$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAj"Q3 e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM !Q']e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEd Q' e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.create$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zspQ? e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibility$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIhQ/ e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcjQ3 e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 Q']e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cdQ' e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.create$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUpQ? e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibility$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAhQ/ e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rules$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YjQ3 e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 Q']e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkdQ' e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.create$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYpQ? e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibility$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkhQ/ e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rules$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIjQ3 e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 Q']e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 Q']e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ I \ 4 l D  `8 2Z | T ,  b:rJ"b:r f ?  z R * Z2 jJ"'QJ"'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800  'Q!mMsxpaIlcykPuOnDyl:localhost:8800}'Q!mMsxpaIlcykPuOnDyl:localhost:8800|'Q!mMsxpaIlcykPuOnDyl:localhost:8800{'Q!mMsxpaIlcykPuOnDyl:localhost:8800z'Q!mMsxpaIlcykPuOnDyl:localhost:8800y'Q!mMsxpaIlcykPuOnDyl:localhost:8800x'Q!mMsxpaIlcykPuOnDyl:localhost:8800w'Q!mMsxpaIlcykPuOnDyl:localhost:8800v'Q!mMsxpaIlcykPuOnDyl:localhost:8800u'Q!mMsxpaIlcykPuOnDyl:localhost:8800t'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800B'Q!mBQpGaIiadEuKBXfOw:localhost:8800A'Q!mBQpGaIiadEuKBXfOw:localhost:8800@'Q!mBQpGaIiadEuKBXfOw:localhost:8800?'Q!mBQpGaIiadEuKBXfOw:localhost:8800>'Q!mBQpGaIiadEuKBXfOw:localhost:8800='Q!mBQpGaIiadEuKBXfOw:localhost:8800<'Q!mBQpGaIiadEuKBXfOw:localhost:8800;&Q!loalEsWaTYwrVUNJLr:localhost:8800(&Q!loalEsWaTYwrVUNJLr:localhost:8800'&Q!loalEsWaTYwrVUNJLr:localhost:8800&&Q!loalEsWaTYwrVUNJLr:localhost:8800%&Q!loalEsWaTYwrVUNJLr:localhost:8800$&Q!loalEsWaTYwrVUNJLr:localhost:8800#'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800Q'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800P'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800O'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800N'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800M'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800L'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800~&Q!kxTDuIasPNpXtiRsif:localhost:8800}?'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800   i/eQa_$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3799}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-758:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043997468, "hashes": {"sha256": "qnqlYXdCbwc0rmb2BYqcksLwbm9qDqaVMno0ASNeLqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DuXWuThgFJOFV5GbzWCfCdmMLeF9+oGmq9wHxRozwHprjC6nZhy1eP6rYgx/G6x9dvL3T4pnaW6Is+7L6BDNBQ"}}, "unsigned": {"age_ts": 1570043997468}}.eQa$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3798}{"auth_events": ["$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0", "$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A", "$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "prev_events": ["$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI"], "type": "m.room.history_visibility", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043995309, "hashes": {"sha256": "a+tjUeeZfnQ8Xw11Xa/yVIVhmk3FGUWJGNhVIUhSU4Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aPII61m0srORIbqhs5pS3h+qVGXM2jbvdRChn6KHb3kqr3wTWgSEr2nj9X9YEhVe4+zOqlfs20BlVQTObePhBw"}}, "unsigned": {"age_ts": 1570043995309}}t-eQau$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3797}{"auth_events": ["$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0", "$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A", "$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "prev_events": ["$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0"], "type": "m.room.join_rules", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043994542, "hashes": {"sha256": "KrCRmwUM/hIaHRsTh0RgCG9e8onx4/KA4XTf4iM9Ae0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pRBWN8Auq+SxCaZMvop/470bUVCgUTHX6KuY0l54++rQGEZBentn8BMERfk+EANfxNqD+3nuAZYUSEcToHnICQ"}}, "unsigned": {"age_ts": 1570043994542}}k,eQac$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3796}{"auth_events": ["$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A", "$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "prev_events": ["$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "type": "m.room.power_levels", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"users": {"@anon-20191002_181700-757:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043993693, "hashes": {"sha256": "ipHlsrLHrcexAnBi4tCo2eeoRACnserkvrIr79C9KAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "thG6nSyY7H9eXoRf7z9PcYjQ/TsctBZtoKHHQP7qLMRmZ/mzLB+JvmO4WUMLHeNOUrE3K8buNcbDs777XH8gAg"}}, "unsigned": {"age_ts": 1570043993693}} -RM H C > 9 4/*|%w rmhc T(Qe !jlGSdNttccYxjfLkwW:localhost:8800$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUT'Qe !jlGSdNttccYxjfLkwW:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFoT&Qe !jlGSdNttccYxjfLkwW:localhost:8800$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgT%Qe !ZNIjCvcWhgcwskanjT:localhost:8800$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywT$Qe !ZNIjCvcWhgcwskanjT:localhost:8800$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkT#Qe !ZNIjCvcWhgcwskanjT:localhost:8800$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94T"Qe !ZNIjCvcWhgcwskanjT:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAT!Qe !ZNIjCvcWhgcwskanjT:localhost:8800$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUT Qe !NJdkYMskQwIpIWlWkn:localhost:8800$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMTQe !NJdkYMskQwIpIWlWkn:localhost:8800$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awTQe !NJdkYMskQwIpIWlWkn:localhost:8800$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5kTQe !NJdkYMskQwIpIWlWkn:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewTQe !NJdkYMskQwIpIWlWkn:localhost:8800$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUTQe !jGQNGXehugtTvjUGKI:localhost:8800$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gTQe !jGQNGXehugtTvjUGKI:localhost:8800$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoTQe !jGQNGXehugtTvjUGKI:localhost:8800$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwTQe !jGQNGXehugtTvjUGKI:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkTQe !jGQNGXehugtTvjUGKI:localhost:8800$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGoTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50TQe !VNdqhtoDkyMoQdMTtM:localhost:8800$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9sTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqITQe !ulbQzxdPXzuvNoqqgU:localhost:8800$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgTQe !ulbQzxdPXzuvNoqqgU:localhost:8800$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQTQe !ulbQzxdPXzuvNoqqgU:localhost:8800$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMTQe !ulbQzxdPXzuvNoqqgU:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAT Qe !ulbQzxdPXzuvNoqqgU:localhost:8800$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4T Qe !pTvdDtkgovsIdAdxCm:localhost:8800$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4T Qe !pTvdDtkgovsIdAdxCm:localhost:8800$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAT Qe !pTvdDtkgovsIdAdxCm:localhost:8800$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMT Qe !pTvdDtkgovsIdAdxCm:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWETQe !pTvdDtkgovsIdAdxCm:localhost:8800$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zsTQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsITQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcTQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598TQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cTQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUTQe !CAGaRyRvrohDRBsrWH:localhost:8800$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoATQe !CAGaRyRvrohDRBsrWH:localhost:8800$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YTQe !CAGaRyRvrohDRBsrWH:localhost:8800$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694TQe !CAGaRyRvrohDRBsrWH:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkT~Qe ~!CAGaRyRvrohDRBsrWH:localhost:8800$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYT}Qe }!hNCwypIzdDZDVmCEfd:localhost:8800$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkT|Qe |!hNCwypIzdDZDVmCEfd:localhost:8800$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI 6Uq8 T  pRn5pJ7fP-S6o 7 h 8  y J  _ 0 8]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZC8]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUO8]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJR8]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ8]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJC8]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ8]!@anon-20191002_181700-798:localhost:8800INQDOVATBT8]!@anon-20191002_181700-795:localhost:8800JVASIBBRVU8]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ8]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCR8]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJ8]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFD 8]!@anon-20191002_181700-822:localhost:8800CCEPFILJPU 8]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOS8]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJ 8]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIG 8]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCL 8]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOL8]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPV8]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKB8]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVV8]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCC8]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXF6[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNf6[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEi6[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFh5Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWX6[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDg8]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOH8]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHS8]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBV8]!@anon-20191002_181700-810:localhost:8800RESWFULJEC8]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJX8]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDM8]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRWB8]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAX8]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSN8]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCK8]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWI8]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHU8]!@anon-20191002_181700-791:localhost:8800WJMTFALHBS8]!@anon-20191002_181700-790:localhost:8800VALGYGSZPA8]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFX8]!@anon-20191002_181700-788:localhost:8800JZUHRDQQEL8]!@anon-20191002_181700-787:localhost:8800ESOZVRSFST8]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAI8]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLI8]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZH8]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIW8]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQC8]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTK  3eQa$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3803}{"auth_events": ["$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694", "$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY", "$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "prev_events": ["$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y"], "type": "m.room.history_visibility", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044000169, "hashes": {"sha256": "NNFD7YT2n9l5eeDdEWbFlrOpg/jLV848RbOzfKRbAC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tX10OPbsZA2Yjr4SVL88nJWiomsNZfJAELoRgBEXzQz5aMFXTs42mIC8vxhg795YVsOlVbEyIdumrXkNjoglBg"}}, "unsigned": {"age_ts": 1570044000169}}t2eQau$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3802}{"auth_events": ["$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694", "$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY", "$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "prev_events": ["$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694"], "type": "m.room.join_rules", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043999551, "hashes": {"sha256": "7RPN7V0CHnS7rSqi/4xlveTPYq2BHngJrurqhONHR/c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U6ytPzaSKYEu2dMcEO6azIDZ8QPr0dLpcdHGVJjpU1Ff/SB5E7LCYt0wtHQFxEw6ZQKabyd2wTn1ROiL8n4JBw"}}, "unsigned": {"age_ts": 1570043999551}}k1eQac$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3801}{"auth_events": ["$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY", "$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "prev_events": ["$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "type": "m.room.power_levels", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"users": {"@anon-20191002_181700-758:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043998846, "hashes": {"sha256": "vxeYst51JSCIRIILcXJaUXR4yvTNGjsbHUKtMT/z9eo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Men1sWpUNipFdSeX5H3+4czrJ0c+jZH1QyEHGj/jkdTGmXrMnu/z+6lGUUpueMTjx/SeMjAnfw2Twk9von5HCg"}}, "unsigned": {"age_ts": 1570043998846}}v0eQay$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3800}{"auth_events": ["$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY"], "prev_events": ["$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY"], "type": "m.room.member", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-758", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-758:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043998238, "hashes": {"sha256": "JYfohPVuvDbV/3PMlHqvA3tfvRpLTDu6GUH8gI51SK4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6B17zOaXSTSf3fyuWiioODeOXiufZxZKBI+PkcFsYNgAeVw50z6WejlRt5bVNrfGxV3ViCTN/3UAtaYAuAuRBQ"}}, "unsigned": {"age_ts": 1570043998238}} < ~tj`VLB8.$zpf\RH>4*   y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > #U 5 ] b % IT~ Ain,1Uo|Q? e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibility$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywg{Q/ e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rules$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkizQ3 e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 yQ']e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAcxQ' e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.create$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUowQ? e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibility$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMgvQ/ e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rules$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awiuQ3 e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k tQ']e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewcsQ' e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.create$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUorQ? e !jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibility$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8ggqQ/ e !jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rules$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoipQ3 e !jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw oQ']e !jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkcnQ' e !jGQNGXehugtTvjUGKI:localhost:8800m.room.create$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcomQ? e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibility$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGoglQ/ e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rules$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50ikQ3 e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s jQ']e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwciQ' e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.create$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIohQ? e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibility$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgggQ/ e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rules$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQifQ3 e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM eQ']e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAcdQ' e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.create$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4ocQ? e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibility$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4gbQ/ e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rules$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAiaQ3 e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM `Q']e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEc_Q' e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.create$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zso^Q? e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibility$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIg]Q/ e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLci\Q3 e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 [Q']e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1ccZQ' e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.create$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU   *t7eQau$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3807}{"auth_events": ["$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598", "$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU", "$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "prev_events": ["$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598"], "type": "m.room.join_rules", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044006846, "hashes": {"sha256": "VvWNWoYvo+onfj9xAx3Duy+Ty3ZDLqXQ/gCkBG/3bFE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3nFf9ibSC5PVsM9YTmXKxayXGES3uTYli5GSlhMCgGaF7051VgXpFNLzW3N4usmCC7q1sSxeRs/twWUBlU2eAQ"}}, "unsigned": {"age_ts": 1570044006846}}k6eQac$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3806}{"auth_events": ["$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU", "$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "prev_events": ["$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "type": "m.room.power_levels", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"users": {"@anon-20191002_181700-762:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044005944, "hashes": {"sha256": "oqEGuWLi+cu25WcuIVxFP2a+DzT/RE9l7PWEFvyYcNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4uD886iJSFJ7y3NK8Tp+o3R5GYm82Sto78E2RKSpF4uPhQhuGPHiyLQKCkuu17Gp0KODEr8Zm/tbexvM7C0Dg"}}, "unsigned": {"age_ts": 1570044005944}}v5eQay$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3805}{"auth_events": ["$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU"], "prev_events": ["$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU"], "type": "m.room.member", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-762", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-762:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044004979, "hashes": {"sha256": "1lO+onEzJezSQCrzyJ/4yiUqoyW+ihzXVdeV1fQl8oQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tdnB7caZNm3Uo+6n9DG48Ubtca/YP5C15sXLFHj2PEW3xFcM5gyJrlhO7/Y95sbWr5f6OUgld6pUU6vE6mAhBg"}}, "unsigned": {"age_ts": 1570044004979}}i4eQa_$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3804}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-762:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044004233, "hashes": {"sha256": "aq7TSXGjUc4QhDzFgv5ArbDLxJnkq7klkkbpu8V3plg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rPMhtR5dgKxTe8xRv/Fmdl/ussSAbyWY9Ii4UhTfH8bHFL2UpdON+UZOKYII077qObIOiZ6wExaDtn3HqoZ8Dg"}}, "unsigned": {"age_ts": 1570044004233}} 7  1 Q\  W % * ] +co= uC${IPVj8Vj81e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY `1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 G1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 8V21e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo R1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 21e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 721e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts81e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicM1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0u1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM<1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA `1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls y1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tod1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA 91e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY  J21e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYM1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0]1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukW1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMB1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8D1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5kX1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y 1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c  w k;eQac$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3811}{"auth_events": ["$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs", "$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "prev_events": ["$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "type": "m.room.power_levels", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"users": {"@anon-20191002_181700-763:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044012386, "hashes": {"sha256": "HmcRg0AAUYk6wgtV9lJ5esdQnK1Z/UQtkC5Z7MK3eHY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AvshhSuiwSubvwCbtcHun1Teiw6BZA9YKFk+J5M67N0aWgQUaAv4Jun5fREMsnJSLWvcmXz9w4ur6HShe3ilAQ"}}, "unsigned": {"age_ts": 1570044012386}}v:eQay$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3810}{"auth_events": ["$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs"], "prev_events": ["$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs"], "type": "m.room.member", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-763", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-763:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044011065, "hashes": {"sha256": "ecnaKHHj/c+qMlks6z/YPto3OzFGxMrJntneJQ0gUMs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cC66mAg7JmtH+KuiktCbOPWFmo2etqYLzUvQn3JOMY2mKXKMYq5eLRNRoJdMqVUyJJ4pmiWw5OTu2qYFVXzzDw"}}, "unsigned": {"age_ts": 1570044011065}}i9eQa_$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3809}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-763:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044010033, "hashes": {"sha256": "J3YvhdLqoPUqkPi1r/EOyAlmZMVs+dyLXOykUwIavWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K7YUTsJxnfh5Fuwvq3f4qE7lnMSQfjDpFQ+0Jv+LFdRT8IPD09+CFaQGqltQXUT9Cx0FuUw8gmAXGG/7XHE8AA"}}, "unsigned": {"age_ts": 1570044010033}}8eQa$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3808}{"auth_events": ["$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598", "$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU", "$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "prev_events": ["$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc"], "type": "m.room.history_visibility", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044007660, "hashes": {"sha256": "bV9YFWx85AfgFrguJmdKAJkqEfBkJYjCJkTYODVN/gM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sYyAFArtvXj3fK4UTh9QnHNP0l0uPeLzblURg4sNyHCn4OFFyPlrITjGYEwLrlM7MxvXUuqksIXPWafW0GUnCA"}}, "unsigned": {"age_ts": 1570044007660}} #GUq8 T  p 7 S  o 6  d +G8e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwsha2568e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0sha2568e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0sha2568e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8sha256 8e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAsha2568e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1Asha256 ,8e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZosha2568e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQsha256&A$lolredact:localhost:42455sha256 }8e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8sha256a8e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwgsha2568e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeAsha2568e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUsha2568e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4sha256;8e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzIsha2568e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIsha256 8e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiosha2568e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMsha2568e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8sha2568e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4sha2568e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgsha2568e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8sha2568e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcsha256 8e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4sha25628e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Egsha2568e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQsha256 8e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14sha2568e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYsha2568e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJposha256 C8e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8sha256 8e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0sha256 M8e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0sha25668e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebaksha2568e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xosha256 8e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Esha256 4tBzH T " Z#8 J ( N ) D a / vg5>  {CpI   {CpI  1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 [21e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUrd1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY U21e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M11e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM 1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 ^1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qm1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA[1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwd1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg&1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Ez1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U G1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI 1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8 1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMw0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMg1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU"1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4O1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUq1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI%1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4A1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIk1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ4 Nd1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 ! 21e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q[ |d1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec D 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0 21e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ@1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 21e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ W1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 21e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEp21e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIfj1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQY1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ d1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E BX b  `  pv(.8B ve'Q ]$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewm.room.member!NJdkYMskQwIpIWlWkn:localhost:8800m mo@anon-20191002_181700-789:localhost:8800u e'Q  ]$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUm.room.create!NJdkYMskQwIpIWlWkn:localhost:8800m9m@anon-20191002_181700-789:localhost:8800,te?Q ]$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gm.room.history_visibility!jGQNGXehugtTvjUGKI:localhost:8800mm@anon-20191002_181700-787:localhost:8800$se/Q ]$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVom.room.join_rules!jGQNGXehugtTvjUGKI:localhost:8800mm@anon-20191002_181700-787:localhost:8800&re3Q ]$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwm.room.power_levels!jGQNGXehugtTvjUGKI:localhost:8800mm5@anon-20191002_181700-787:localhost:8800 qe'Q ]$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkm.room.member!jGQNGXehugtTvjUGKI:localhost:8800mmK@anon-20191002_181700-787:localhost:8800p e'Q  ]$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcm.room.create!jGQNGXehugtTvjUGKI:localhost:8800mm?@anon-20191002_181700-787:localhost:8800,oe?Q ]$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGom.room.history_visibility!VNdqhtoDkyMoQdMTtM:localhost:8800mFm@anon-20191002_181700-768:localhost:8800$ne/Q ]$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50m.room.join_rules!VNdqhtoDkyMoQdMTtM:localhost:8800mm꜔@anon-20191002_181700-768:localhost:8800&me3Q ]$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9sm.room.power_levels!VNdqhtoDkyMoQdMTtM:localhost:8800mm>@anon-20191002_181700-768:localhost:8800 le'Q ]$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwm.room.member!VNdqhtoDkyMoQdMTtM:localhost:8800mꕃm@anon-20191002_181700-768:localhost:8800k e'Q  ]$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIm.room.create!VNdqhtoDkyMoQdMTtM:localhost:8800m|m@anon-20191002_181700-768:localhost:8800,je?Q ]$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgm.room.history_visibility!ulbQzxdPXzuvNoqqgU:localhost:8800m_m@anon-20191002_181700-767:localhost:8800$ie/Q ]$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQm.room.join_rules!ulbQzxdPXzuvNoqqgU:localhost:8800m mz@anon-20191002_181700-767:localhost:8800&he3Q ]$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMm.room.power_levels!ulbQzxdPXzuvNoqqgU:localhost:8800m/mk@anon-20191002_181700-767:localhost:8800 ge'Q ]$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAm.room.member!ulbQzxdPXzuvNoqqgU:localhost:8800m m@anon-20191002_181700-767:localhost:8800f e'Q  ]$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4m.room.create!ulbQzxdPXzuvNoqqgU:localhost:8800m|m|m@anon-20191002_181700-767:localhost:8800,ee?Q ]$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4m.room.history_visibility!pTvdDtkgovsIdAdxCm:localhost:8800mmmoT@anon-20191002_181700-763:localhost:8800$de/Q ]$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAm.room.join_rules!pTvdDtkgovsIdAdxCm:localhost:8800mjmkO@anon-20191002_181700-763:localhost:8800&ce3Q ]$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMm.room.power_levels!pTvdDtkgovsIdAdxCm:localhost:8800mgbmh@anon-20191002_181700-763:localhost:8800 be'Q ]$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEm.room.member!pTvdDtkgovsIdAdxCm:localhost:8800mb9mb@anon-20191002_181700-763:localhost:8800a e'Q  ]$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zsm.room.create!pTvdDtkgovsIdAdxCm:localhost:8800m^1m^@anon-20191002_181700-763:localhost:8800,`e?Q ]$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIm.room.history_visibility!vxEMWYTUdzvLyVZNzJ:localhost:8800mTmW,@anon-20191002_181700-762:localhost:8800$_e/Q ]$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcm.room.join_rules!vxEMWYTUdzvLyVZNzJ:localhost:8800mQmRq@anon-20191002_181700-762:localhost:8800 #(7 e  2 ^ g+4\k)8fgeQ3 $3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels eQ']$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800aeQ' $O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800m.room.createmeQ? $85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibilityeeQ/ $nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rulesgeQ3 $LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels eQ']$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800aeQ' $5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800m.room.createmeQ? $PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibilityeeQ/ $VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rulesgeQ3 $34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels eQ']$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800aeQ' $18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800m.room.createmeQ? $mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibilityeeQ/ $D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rulesg eQ3 $Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels eQ']$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800a eQ' $S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800m.room.createm eQ? $t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibilitye eQ/ $-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rulesgeQ3 $hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels eQ']$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800aeQ' $KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.createmeQ? $Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibilityeeQ/ $oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rulesgeQ3 $pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels eQ']$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800aeQ' $8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.createmeQ? $Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibilityeeQ/ $ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rulesg~eQ3 $ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels }eQ']$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800a|eQ' $RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800m.room.createm{eQ? $2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibilityezeQ/ $Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules a} { y w u sqomkigeca~(eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800~'eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~&eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800~%eeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800~$eeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~#eeQ$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~"eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800~!eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~ eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800 'cj8p> v D  | J  P  V $ ] +c1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk 1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEkn1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM~0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw"1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8B1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw 1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMP1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAE1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0N1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI ;1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAt1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H41e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ|1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo81e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0{1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo 1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk G1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0J1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk51e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYs1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYr1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYq -qT)}R' { P % y N # w L ! u J  s H q*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWGwSSefrZzQYCYFHs:localhost:8800 6*Q!rWGwSSefrZzQYCYFHs:localhost:8800 5*Q!rWGwSSefrZzQYCYFHs:localhost:8800 4*Q!rWGwSSefrZzQYCYFHs:localhost:8800 3*Q!rWGwSSefrZzQYCYFHs:localhost:8800 2*Q!rWGwSSefrZzQYCYFHs:localhost:8800 1*Q!rWGwSSefrZzQYCYFHs:localhost:8800 0*Q!rWGwSSefrZzQYCYFHs:localhost:8800 /  v?eQay$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3815}{"auth_events": ["$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4"], "prev_events": ["$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4"], "type": "m.room.member", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-767", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-767:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044018445, "hashes": {"sha256": "Sg0bHQ0Mq9QVLZdfvYnQc6LpT13k5ENDM8EoJHkO66o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dpn5weWzV4Ct9uXmBLUjaqNPxGFO0lCAakvt4yjt1iAujFsxaaV3gy9pSZ9fPeKnBi/3x8VlQHM7xsbC5U3CCQ"}}, "unsigned": {"age_ts": 1570044018445}}i>eQa_$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3814}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-767:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044017684, "hashes": {"sha256": "3nqk4yghAYd/YUwDrrq9WIQeFszokag7Nia2mhlYHG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RJ0y8YgEFdTHOPk/tIoT8YJzmOgv/GF9kkX+ahSJWqOtj7qxD/OnPAGdjZVGQR2wR5TA5z4hf3FwRwMFW0f5AA"}}, "unsigned": {"age_ts": 1570044017684}}=eQa$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3813}{"auth_events": ["$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM", "$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs", "$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "prev_events": ["$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA"], "type": "m.room.history_visibility", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044013964, "hashes": {"sha256": "+fjYLuynIzWvdw+a3ELPjsy1T9mvPvOCEuKubEq0ngI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cm160JJfZolnvD1AVIyUy9vL8MVoWvgxBG6KJX0H2t1TNO+L0K4dZ72RLdZLmnr/npcQpK5BTcEAIQ1Mo11ZAA"}}, "unsigned": {"age_ts": 1570044013964}}t<eQau$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3812}{"auth_events": ["$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM", "$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs", "$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "prev_events": ["$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM"], "type": "m.room.join_rules", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044013187, "hashes": {"sha256": "HmHLRPds+IQUx3/rqRwHY+XxwNcd+9sZWwXovRPEjUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t14jJ4Jf8nZTGHOUHQAzExYvFzLfoQA3zX1S0nRqnQ38TeWcxAhKahIhxUYjj+AulzPtUzAc2uU6IwZiIjVbCg"}}, "unsigned": {"age_ts": 1570044013187}} g * T~=ggb]!c@anon-20191002_181700-777:localhost:8800DNPSVJVGARMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgoga]!c@anon-20191002_181700-775:localhost:8800KWWOCKYJTKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwog`]!c@anon-20191002_181700-773:localhost:8800KNQPPEVHSZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2Aog_]!c@anon-20191002_181700-774:localhost:8800EHLWRALUNWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAog^]!c@anon-20191002_181700-771:localhost:8800WFJTBQEQEAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwog]]!c@anon-20191002_181700-772:localhost:8800AMIQGAPEEXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAog\]!c@anon-20191002_181700-769:localhost:8800YMNXMSKEVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQog[]!c@anon-20191002_181700-770:localhost:8800CKDIOBKNJMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQogZ]!c@anon-20191002_181700-768:localhost:8800NKUFFDEKKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAogY]!c@anon-20191002_181700-767:localhost:8800HLSHGDMIOBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQogX]!c@anon-20191002_181700-766:localhost:8800HMOWFAWFNHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQo D|t l d \ T LDeeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800eeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:8800 4eeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800veeQ$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800TeeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800eeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800݁eeQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800eeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829deeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800{eeQ$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800 @ )k93r@ x F  ~ L  R X & ^ ,e1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE 01e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo,1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM \1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsJ1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 m1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIa1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg 1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU_1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk>1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA $1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkC1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-YH1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEJ1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE {1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE?  iCeQa_$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3819}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-768:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044023420, "hashes": {"sha256": "2POoaUeSliLog47BZDM/b37WMX/zTIE58R/IMsLNtPI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uZclyumpsOzfS6CHDrn5YrMNVuAeg4GbeEnJ1F/1tG236ie3M6Z/iNT+H2fMdA4alfIfqJkCH4OWW+1CLXUUDQ"}}, "unsigned": {"age_ts": 1570044023420}}BeQa$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3818}{"auth_events": ["$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM", "$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4", "$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "prev_events": ["$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ"], "type": "m.room.history_visibility", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044021087, "hashes": {"sha256": "hccAgf8modQ239OPCOh3Brzc53SIKzta/vAP3FTv/JM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "epeQRlfTPtbKpzTjGmE7hRIer35dASAGrEFMN49ULYoF8gXw85gAqnb6ikTSTL/XiyTn8susmXWtsHPlbFhVBw"}}, "unsigned": {"age_ts": 1570044021087}}tAeQau$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3817}{"auth_events": ["$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM", "$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4", "$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "prev_events": ["$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM"], "type": "m.room.join_rules", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044020237, "hashes": {"sha256": "Mdo4DtYWv6C8QxoRFUBboIrEDOtHdiyuG4C6uagZTM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8WmV2uCTlrBpXysyyLLqBZQ6QsxbhDhjxScQedYxgZLSC669HrmS85uC+crq1HS4E++/x/9ux5nlwUKD9KLDAQ"}}, "unsigned": {"age_ts": 1570044020237}}k@eQac$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3816}{"auth_events": ["$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4", "$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "prev_events": ["$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "type": "m.room.power_levels", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"users": {"@anon-20191002_181700-767:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044019247, "hashes": {"sha256": "QAs43HUa+fNbXqimIwWDZ2Y+HXTq8UO51sVVjVJ5e+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CpS9OvsZmqY1LsRMgFeTaiN/yKwOMB93d8kRD7NDF66rcTAuHOqJZBNVIwIk+lnftUT8Kw9bLMIb0sCQTzpeDw"}}, "unsigned": {"age_ts": 1570044019247}} QI}Ht? k6b -Y$a O,X#  O c.Z % P  R  S 4]@anon-20191002_181700-822:localhost:8800m4]@anon-20191002_181700-806:localhost:8800m몤4]@anon-20191002_181700-805:localhost:8800m4]@anon-20191002_181700-804:localhost:8800mJ4]@anon-20191002_181700-803:localhost:8800m4]@anon-20191002_181700-802:localhost:8800m.4]@anon-20191002_181700-801:localhost:8800m뚑4]@anon-20191002_181700-800:localhost:8800m4]@anon-20191002_181700-799:localhost:8800mo4]@anon-20191002_181700-798:localhost:8800m4]@anon-20191002_181700-797:localhost:8800m{ 4]@anon-20191002_181700-796:localhost:8800mw4]@anon-20191002_181700-795:localhost:8800mb%4]@anon-20191002_181700-794:localhost:8800m^_4]@anon-20191002_181700-793:localhost:8800mE4]@anon-20191002_181700-792:localhost:8800mB4]@anon-20191002_181700-791:localhost:8800m4]@anon-20191002_181700-790:localhost:8800m4]@anon-20191002_181700-789:localhost:8800m4]@anon-20191002_181700-788:localhost:8800m24]@anon-20191002_181700-787:localhost:8800mܜ4]@anon-20191002_181700-786:localhost:8800m4]@anon-20191002_181700-785:localhost:8800m4]@anon-20191002_181700-784:localhost:8800mo4]@anon-20191002_181700-783:localhost:8800mͧ4]@anon-20191002_181700-782:localhost:8800m4]@anon-20191002_181700-781:localhost:8800m7 54]@astest-1-20191002_181700:localhost:8800mKa4]@anon-20191002_181700-832:localhost:8800m4]@anon-20191002_181700-831:localhost:8800m4]@anon-20191002_181700-830:localhost:8800m4]@anon-20191002_181700-829:localhost:8800m4]@anon-20191002_181700-828:localhost:8800m4]@anon-20191002_181700-827:localhost:8800m4]@anon-20191002_181700-826:localhost:8800mf4]@anon-20191002_181700-825:localhost:8800m4]@anon-20191002_181700-823:localhost:8800mx"= @spyglass:localhost:8800mp1Y@anon-20191002_181700-9:localhost:8800mk2[@anon-20191002_181700-99:localhost:8800m*R2[@anon-20191002_181700-97:localhost:8800m+P2[@anon-20191002_181700-96:localhost:8800mQQ2[@anon-20191002_181700-95:localhost:8800mO2[@anon-20191002_181700-93:localhost:8800mAN2[@anon-20191002_181700-91:localhost:8800muIL2[@anon-20191002_181700-90:localhost:8800mM1Y@anon-20191002_181700-8:localhost:8800m}(2[@anon-20191002_181700-89:localhost:8800ma+J2[@anon-20191002_181700-88:localhost:8800mqK2[@anon-20191002_181700-87:localhost:8800mYI2[@anon-20191002_181700-86:localhost:8800m?H2[@anon-20191002_181700-85:localhost:8800m,G2[@anon-20191002_181700-84:localhost:8800mqF2[@anon-20191002_181700-83:localhost:8800m ;E2[@anon-20191002_181700-82:localhost:8800mD2[@anon-20191002_181700-81:localhost:8800m:C2[@anon-20191002_181700-80:localhost:8800mB1Y@anon-20191002_181700-7:localhost:8800my2[@anon-20191002_181700-79:localhost:8800mA34]@anon-20191002_181700-821:localhost:8800mߑ4]@anon-20191002_181700-820:localhost:8800m^4]@anon-20191002_181700-819:localhost:8800m4]@anon-20191002_181700-818:localhost:8800m4]@anon-20191002_181700-816:localhost:8800m4]@anon-20191002_181700-815:localhost:8800mɕ4]@anon-20191002_181700-814:localhost:8800m4]@anon-20191002_181700-813:localhost:8800m4]@anon-20191002_181700-812:localhost:8800m4]@anon-20191002_181700-811:localhost:8800m@4]@anon-20191002_181700-810:localhost:8800m 4]@anon-20191002_181700-809:localhost:8800m볳4]@anon-20191002_181700-808:localhost:8800m밯4]@anon-20191002_181700-807:localhost:8800m뮆 .??? I I???? ??@ @ Q  Y  b $ j -?]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUOm뚑?]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJCm?]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQmo?]!@anon-20191002_181700-798:localhost:8800INQDOVATBTm?]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJm{ ?]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQmw?]!@anon-20191002_181700-795:localhost:8800JVASIBBRVUmb%?]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJm^_?]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWImE?]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHUmB?]!@anon-20191002_181700-791:localhost:8800WJMTFALHBSm?]!@anon-20191002_181700-790:localhost:8800VALGYGSZPAm?]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFXm?]!@anon-20191002_181700-788:localhost:8800JZUHRDQQELm2?]!@anon-20191002_181700-787:localhost:8800ESOZVRSFSTmܜ?]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAIm?]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLIm?]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXWm~?]!@anon-20191002_181700-777:localhost:8800DNPSVJVGARm꽺?]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTKm긄?]!@anon-20191002_181700-774:localhost:8800EHLWRALUNWmA?]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZm곲?]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEXmꮤ?]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEAmꬉ?]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJMmꨥ?]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVLm ?]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKSm ?]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRWm?]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXFmJ?]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCCm?]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJRm.J?]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZHmo?]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIWmͧ?]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQCm?]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVGm7=[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNm&@=[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFmB<Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWXmy=[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDmA?]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOHm?]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHSm@?]!@anon-20191002_181700-810:localhost:8800RESWFULJECm ?]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBVm볳?]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDMm밯?]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJXm뮆?]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVVm몤 A[$H l 5 Y " } F  j 3 W {D h1UyB f/S v?44==astest-1-20191002_181700astest-1-20191002_18170043==anon-20191002_181700-832anon-20191002_181700-83242==astest-0-20191002_181700astest-0-20191002_181700F1OOastest-01create-1-20191002_181700astest-01create-1-20191002_181700H0QQ_astest-01create-0-20191002_181700_astest-01create-0-20191002_181700F/OOastest-01create-0-20191002_181700astest-01create-0-20191002_1817004.==anon-20191002_181700-831anon-20191002_181700-8314-==anon-20191002_181700-830anon-20191002_181700-8304,==anon-20191002_181700-829anon-20191002_181700-8294+==anon-20191002_181700-828anon-20191002_181700-8284*==anon-20191002_181700-827anon-20191002_181700-8274)==anon-20191002_181700-826anon-20191002_181700-8264(==anon-20191002_181700-825anon-20191002_181700-8254'==anon-20191002_181700-823anon-20191002_181700-8234&==anon-20191002_181700-821anon-20191002_181700-8214%==anon-20191002_181700-822anon-20191002_181700-8224$==anon-20191002_181700-819anon-20191002_181700-8194#==anon-20191002_181700-820anon-20191002_181700-8204"==anon-20191002_181700-818anon-20191002_181700-8184!==anon-20191002_181700-815anon-20191002_181700-8154 ==anon-20191002_181700-816anon-20191002_181700-8164==anon-20191002_181700-813anon-20191002_181700-8134==anon-20191002_181700-814anon-20191002_181700-8144==anon-20191002_181700-812anon-20191002_181700-8124==anon-20191002_181700-811anon-20191002_181700-8114==anon-20191002_181700-809anon-20191002_181700-8094==anon-20191002_181700-810anon-20191002_181700-8104==anon-20191002_181700-807anon-20191002_181700-8074==anon-20191002_181700-808anon-20191002_181700-8084==anon-20191002_181700-805anon-20191002_181700-8054==anon-20191002_181700-806anon-20191002_181700-8064==anon-20191002_181700-803anon-20191002_181700-8034==anon-20191002_181700-804anon-20191002_181700-8044==anon-20191002_181700-801anon-20191002_181700-8014==anon-20191002_181700-802anon-20191002_181700-8024==anon-20191002_181700-799anon-20191002_181700-7994==anon-20191002_181700-800anon-20191002_181700-8004==anon-20191002_181700-797anon-20191002_181700-7974==anon-20191002_181700-798anon-20191002_181700-7984 ==anon-20191002_181700-795anon-20191002_181700-7954 ==anon-20191002_181700-796anon-20191002_181700-7964 ==anon-20191002_181700-793anon-20191002_181700-7934 ==anon-20191002_181700-794anon-20191002_181700-7944 ==anon-20191002_181700-791anon-20191002_181700-7914==anon-20191002_181700-792anon-20191002_181700-7924==anon-20191002_181700-789anon-20191002_181700-7894==anon-20191002_181700-790anon-20191002_181700-7904==anon-20191002_181700-787anon-20191002_181700-7874==anon-20191002_181700-788anon-20191002_181700-7884==anon-20191002_181700-786anon-20191002_181700-7864==anon-20191002_181700-785anon-20191002_181700-7854==anon-20191002_181700-784anon-20191002_181700-7844==anon-20191002_181700-783anon-20191002_181700-7834==anon-20191002_181700-782anon-20191002_181700-7824~==anon-20191002_181700-781anon-20191002_181700-7814}==anon-20191002_181700-779anon-20191002_181700-7794|==anon-20191002_181700-777anon-20191002_181700-7774{==anon-20191002_181700-775anon-20191002_181700-7754z==anon-20191002_181700-773anon-20191002_181700-7734y==anon-20191002_181700-774anon-20191002_181700-7744x==anon-20191002_181700-771anon-20191002_181700-7714w==anon-20191002_181700-772anon-20191002_181700-7724v==anon-20191002_181700-769anon-20191002_181700-7694u==anon-20191002_181700-770anon-20191002_181700-7704t==anon-20191002_181700-768anon-20191002_181700-768 2 2Za h  PAQ]!VNdqhtoDkyMoQdMTtM:localhost:8800@anon-20191002_181700-768:localhost:88004=PKQ]!QWLJZmJqjWZjVOjdYF:localhost:8800@anon-20191002_181700-832:localhost:88004PJQ]!ZWANpHlizyLrUiVvAm:localhost:8800@anon-20191002_181700-832:localhost:88004PIQ]!TkluVzxeeCbMtbFWWS:localhost:8800@anon-20191002_181700-831:localhost:88004PHQ]!ELBgBaMSIMNkjFSumH:localhost:8800@anon-20191002_181700-797:localhost:88004PGQ]!CKNftKKCaOCVUyYWNY:localhost:8800@anon-20191002_181700-795:localhost:88004PFQ]!cvXpMzcxNNhsNttxvt:localhost:8800@anon-20191002_181700-793:localhost:88004PEQ]!jlGSdNttccYxjfLkwW:localhost:8800@anon-20191002_181700-791:localhost:88004PDQ]!ZNIjCvcWhgcwskanjT:localhost:8800@anon-20191002_181700-791:localhost:88004PCQ]!NJdkYMskQwIpIWlWkn:localhost:8800@anon-20191002_181700-789:localhost:88004PBQ]!jGQNGXehugtTvjUGKI:localhost:8800@anon-20191002_181700-787:localhost:88004 9 U  ]w 6    o G ' Y 1 7 l D -m  | Ve / ggg'Q!vnFXnkCSfTbsSNKrtg:localho'Q!vnFXnkCSfTbsSNKrtg:localhost:8800;P'Q!zScKnCZCFPIIodAiQj:localhost:8800+'Q!wCsDjKBtuUbrmZgjsB:localhost:8800b}('Q!wBBQYEPjQGnoAzDpEu:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800l'Q!yWhIsLsgNVGcnELrDS:localhost:8800g'Q!uPxXJHJyFQwvpQLZNs:localhost:8800('Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800E('Q!ulbQzxdPXzuvNoqqgU:localhost:8800('Q!ybXveQoxPVhjpKHAkG:localhost:8800_z'Q!vZGjXEXQoCaoUXnkCa:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800OP'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800('Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800?('Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800 ('Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800~'Q!zsXPhIPzeXXLvuazzQ:localhost:8800}'Q!zoTQAhGwmDDUECKtbL:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800"#(&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:88000'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800*'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88008'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800;'Q!uSBqTezaFcMnlowsEf:localhost:8800 &Q!uJtKGXTNdEnCPNOGDx:localhost:8800  GeQa$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3823}{"auth_events": ["$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s", "$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI", "$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "prev_events": ["$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50"], "type": "m.room.history_visibility", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044026438, "hashes": {"sha256": "SXI3i4Z0KNJFVLTbjSANiVVOFlvKvrHwPqwPakS9sF8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9pdqrqqXLvKJhKafasCpgBnMAFELcWJC9YSoaXaI34beNdBMJVnWkYYBbr8MsDwZTalHygrKE+wNgzYWJ3uRCA"}}, "unsigned": {"age_ts": 1570044026438}}tFeQau$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3822}{"auth_events": ["$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s", "$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI", "$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "prev_events": ["$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s"], "type": "m.room.join_rules", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044025820, "hashes": {"sha256": "fIvI4uqjuRiBBOtKOWKvOUS6q0EPYnxxvqAQuZeMA7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LGTTwTjiTgAWneExMlk8ODtT76Vfyl/4kmkm2zdAtHBDM2Q4zDj7t4GPWbixP72GzMGIuJkKOFquqegujrtnDQ"}}, "unsigned": {"age_ts": 1570044025820}}kEeQac$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3821}{"auth_events": ["$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI", "$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "prev_events": ["$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "type": "m.room.power_levels", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"users": {"@anon-20191002_181700-768:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044024816, "hashes": {"sha256": "9jk6TZ8COcP3cn430HOc+6eBe3vOrwadBldHWOCMg48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iwwmoSn/Z4xg6nN+STCyF3nnkD3VG6WSvCgTR5dvD4h60X36c+URub/h0GqXtsJ5mYt9RF+dGFd3vqYnjH28Aw"}}, "unsigned": {"age_ts": 1570044024816}}vDeQay$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3820}{"auth_events": ["$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI"], "prev_events": ["$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI"], "type": "m.room.member", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-768", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-768:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044024195, "hashes": {"sha256": "IyTmxyFEYX8Mhm/d7aL8ntylmwetizYJ28EqDULrLq0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sQHYCqQXrwJ9K+m1J0ldFgTZSyfIPiU69SRUeHZ0mskOtUMUsGx/TAeEMjPdl2vALP09hQfbckDHfq3/rSuGCQ"}}, "unsigned": {"age_ts": 1570044024195}} 0`8pH X 0  j B  ~ X 0  h @  x P ( 'Q$1570042696198qbnxj:localhost:8800'Q$1570042695197vezoL:localhost:8800'Q$1570042694196OHsWc:localhost:8800'Q$1570042692194rxboZ:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042691192yNWVM:localhost:8800'Q$1570042690191yQfnl:localhost:8800'Q$1570042689190UkvMv:localhost:8800'Q$1570042688189axPjv:localhost:8800'Q$1570042687188ddQmS:localhost:8800'Q$1570042687187gbArC:localhost:8800'Q$1570042686186Qxqmn:localhost:8800'Q$1570042683184TpChh:localhost:8800'Q$1570042682183iUUXF:localhost:8800'Q$1570042681182ZiRRU:localhost:8800'Q$1570042680181TFyrx:localhost:8800'Q$1570042680180uuIxG:localhost:8800'Q$1570042679179ZJCqE:localhost:8800%M$15700426765pydev:localhost:8829%M$15700426764DoRhm:localhost:8829%M$15700426753WBESe:localhost:8829'Q$1570042675176WKRiz:localhost:8800'Q$1570042674175gurnU:localhost:8800'Q$1570042673174OxGuP:localhost:8800'Q$1570042672173XsxsH:localhost:8800'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042668168uCbYK:localhost:8800'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042662161lGrSW:localhost:8800'Q$1570042662160SrmtM:localhost:8800'Q$1570042661159xQwJK:localhost:8800'Q$1570042661158igwHF:localhost:8800'Q$1570042660157svDcU:localhost:8800'Q$1570042660156wxhvl:localhost:8800'Q$1570042659155mEUeP:localhost:8800'Q$1570042659154Fztdf:localhost:8800'Q$1570042658153tmCYJ:localhost:8800'Q$1570042658152btGpA:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800 #o- 8 f  / [`$)Q\%Sa>eQ' $noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800m.room.createm=eQ? $3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibilitye<eQ/ $FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rulesg;eQ3 $HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels :eQ']$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800joina9eQ' $QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.createm8eQ? $EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibilitye7eQ/ $6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rulesg6eQ3 $pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels 5eQ']$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800joina4eQ' $SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800m.room.createm3eQ? $x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibilitye2eQ/ $P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rulesg1eQ3 $3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels 0eQ']$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800joina/eQ' $O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800m.room.createm.eQ? $85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibilitye-eQ/ $nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rulesg,eQ3 $LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels +eQ']$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800joina*eQ' $5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800m.room.createm)eQ? $PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibilitye(eQ/ $VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rulesg'eQ3 $34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels &eQ']$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800joina%eQ' $18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800m.room.createm$eQ? $mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibilitye#eQ/ $D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rulesg"eQ3 $Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels !eQ']$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800joina eQ' $S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800m.room.createmeQ? $t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibilityeeQ/ $-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rulesgeQ3 $hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels eQ']$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800join " 5 ] b % IT~ AZe( Q']e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YcQ' e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU Q']e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91woQ? e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibility$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwgQ/ e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rules$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIiQ3 e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 Q']e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8cQ' e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.create$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUrQ))e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUoQ? e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibility$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMgQ/ e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rules$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQiQ3 e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE Q']e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwcQ' e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.create$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsoQ? e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibility$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsgQ/ e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rules$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAiQ3 e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg Q']e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcc Q' e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.create$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIo Q? e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibility$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsog Q/ e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rules$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYi Q3 e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 Q']e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkcQ' e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.create$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYoQ? e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibility$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAgQ/ e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rules$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAiQ3 e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 Q']e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQcQ' e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.create$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TsoQ? e !jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibility$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpogQ/ e !jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4iQ3 e !jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU ~Q']e !jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFoc}Q' e !jlGSdNttccYxjfLkwW:localhost:8800m.room.create$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg 8l D `8P]c!E@anon-20191002_181700-779:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAoOWQMDGTEXW127.0.0.1Perl + Net::Async::HTTP/0.44m~O]c!E@anon-20191002_181700-777:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgoDNPSVJVGAR127.0.0.1Perl + Net::Async::HTTP/0.44m꽺N]c!E@anon-20191002_181700-775:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwoKWWOCKYJTK127.0.0.1Perl + Net::Async::HTTP/0.44m긄M]c!E@anon-20191002_181700-774:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAoEHLWRALUNW127.0.0.1Perl + Net::Async::HTTP/0.44mAL]c!E@anon-20191002_181700-773:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2AoKNQPPEVHSZ127.0.0.1Perl + Net::Async::HTTP/0.44m곲K]c!E@anon-20191002_181700-772:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAoAMIQGAPEEX127.0.0.1Perl + Net::Async::HTTP/0.44mꮤJ]c!E@anon-20191002_181700-771:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwoWFJTBQEQEA127.0.0.1Perl + Net::Async::HTTP/0.44mꬉI]c!E@anon-20191002_181700-770:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQoCKDIOBKNJM127.0.0.1Perl + Net::Async::HTTP/0.44mꨥH]c!E@anon-20191002_181700-769:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQoYMNXMSKEVL127.0.0.1Perl + Net::Async::HTTP/0.44m G]c!E@anon-20191002_181700-768:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAoNKUFFDEKKS127.0.0.1Perl + Net::Async::HTTP/0.44m -RM H C > 9 4/*|%w rmhc T Qe!ZWANpHlizyLrUiVvAm:localhost:8800$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4T Qe!ZWANpHlizyLrUiVvAm:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8T Qe!ZWANpHlizyLrUiVvAm:localhost:8800$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUT Qe!TkluVzxeeCbMtbFWWS:localhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUT Qe!TkluVzxeeCbMtbFWWS:localhost:8800$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMTQe!TkluVzxeeCbMtbFWWS:localhost:8800$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQTQe!TkluVzxeeCbMtbFWWS:localhost:8800$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pETQe!TkluVzxeeCbMtbFWWS:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwTQe!TkluVzxeeCbMtbFWWS:localhost:8800$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsTQe!ELBgBaMSIMNkjFSumH:localhost:8800$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsTQe!ELBgBaMSIMNkjFSumH:localhost:8800$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgATQe!ELBgBaMSIMNkjFSumH:localhost:8800$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9ZgTQe!ELBgBaMSIMNkjFSumH:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcTQe!ELBgBaMSIMNkjFSumH:localhost:8800$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQITQe !CKNftKKCaOCVUyYWNY:localhost:8800$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoT~Qe !CKNftKKCaOCVUyYWNY:localhost:8800$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYT}Qe !CKNftKKCaOCVUyYWNY:localhost:8800$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4T|Qe !CKNftKKCaOCVUyYWNY:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkT{Qe !CKNftKKCaOCVUyYWNY:localhost:8800$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYTzQe!cvXpMzcxNNhsNttxvt:localhost:8800$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkATyQe!cvXpMzcxNNhsNttxvt:localhost:8800$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwATxQe!cvXpMzcxNNhsNttxvt:localhost:8800$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0TwQe!cvXpMzcxNNhsNttxvt:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQTvQe!cvXpMzcxNNhsNttxvt:localhost:8800$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TsTuQe!jlGSdNttccYxjfLkwW:localhost:8800$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoTtQe!jlGSdNttccYxjfLkwW:localhost:8800$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4TsQe!jlGSdNttccYxjfLkwW:localhost:8800$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUTrQe!jlGSdNttccYxjfLkwW:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFoTqQe!jlGSdNttccYxjfLkwW:localhost:8800$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgTpQe!ZNIjCvcWhgcwskanjT:localhost:8800$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywToQe!ZNIjCvcWhgcwskanjT:localhost:8800$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkTnQe!ZNIjCvcWhgcwskanjT:localhost:8800$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94TmQe!ZNIjCvcWhgcwskanjT:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llATlQe!ZNIjCvcWhgcwskanjT:localhost:8800$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUTkQe!NJdkYMskQwIpIWlWkn:localhost:8800$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMTjQe!NJdkYMskQwIpIWlWkn:localhost:8800$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awTiQe!NJdkYMskQwIpIWlWkn:localhost:8800$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5kThQe!NJdkYMskQwIpIWlWkn:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewTgQe!NJdkYMskQwIpIWlWkn:localhost:8800$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUTfQe!jGQNGXehugtTvjUGKI:localhost:8800$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gTeQe!jGQNGXehugtTvjUGKI:localhost:8800$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoTdQe!jGQNGXehugtTvjUGKI:localhost:8800$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwTcQe!jGQNGXehugtTvjUGKI:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkTbQe!jGQNGXehugtTvjUGKI:localhost:8800$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcTaQe!VNdqhtoDkyMoQdMTtM:localhost:8800$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo (1j8p> v D  | J1  P  V $ \ +c1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo d1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg P1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooC0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg.1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Iz1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns[1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk 1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAu1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY G1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kT1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc ]1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugr1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro ]1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc 1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk ! 0 @ P ` p(8HXhxu ]@anon-20191002_181700-806:localhost:8800$2b$04$yyT8Aq8iIQTYOFOh5O.BTe7PFh3rIQcbYZPZA74TukiHY58K68MxK]u ] @anon-20191002_181700-803:localhost:8800$2b$04$54hv2X5PUVQ9FB8AlZa0ueli.Ex1k9TVHlUs8lJ7ow4vLGt7VGNGS]u ]@anon-20191002_181700-804:localhost:8800$2b$04$rVNK5IFlIisPfgOFhWYyd.zmbnhZUy7IFvayzyS5ggD95ZVlSYiY.]u ] @anon-20191002_181700-801:localhost:8800$2b$04$C41R1bw77aNfFboZLDA8WO474lIJHXrt.opj.R8A8z1u2eR4SVYJe]u ]@anon-20191002_181700-802:localhost:8800$2b$04$nev7CtCotCdfBAcxWCfa9.CEFyyJcBwFllKKB26RNqgZMGlUOva/q]u ] @anon-20191002_181700-799:localhost:8800$2b$04$5JOD4xyllCfS.xqCErfC.Ox1rYYgt5UGRXlt0ilpPZjwjBVK99s3W]u ]@anon-20191002_181700-800:localhost:8800$2b$04$vR2hWWx2CCf1fS3MjAhTiO7k7u5SVVYnaky1Imiv1KFdd0bNmC28.]u ] @anon-20191002_181700-797:localhost:8800$2b$04$IG3uD1UlImJjw4rElU1jMuKJUKQLu0SwNT02rw3nyr8Iq5HZLxiJy]u ]@anon-20191002_181700-798:localhost:8800$2b$04$SabdOVsS8/Gp9DUI77c9GuTaOSgkwn7vicCZcn5AcpDGKgWOqW79y]u ] @anon-20191002_181700-795:localhost:8800$2b$04$bjlbxoBQSRSX2CM8rjKKT.PirVr6/ZINOEgkTBOwjm1S.6hAr2y3K]u ]@anon-20191002_181700-796:localhost:8800$2b$04$f9RuEFKQ3PbcsLtAnipbveef2R63T53HxMuKYcPHKFJZ4eRINuYJ.]u ] @anon-20191002_181700-793:localhost:8800$2b$04$FXWTCa4uRBzE4vjox4eEb.gwpGY8g.xTI6nJvx8wX3GLSoxSkiGhG]u ]@anon-20191002_181700-794:localhost:8800$2b$04$.aZrjIo5Bc154volJiNwZ.a4wWhorc1ZvPSazudfEV07M7z/MabmG]u ] @anon-20191002_181700-791:localhost:8800$2b$04$Y0yQzV0YdOw2dZTDK4/Z5u1hePxvXHXMyj2e9pkycfglFn29ZWfBW]u ]@anon-20191002_181700-792:localhost:8800$2b$04$h6Dnv59ianmIdJ7ip/EdpOOApFKQEYxktjG/Yxpi7vsSzpmlaoL/O]u ] @anon-20191002_181700-789:localhost:8800$2b$04$OiWHsAJ1jToXLx.fuS1Go.K3zuQzgTJBY0Kzanhz7zdJgon6943We]u ]@anon-20191002_181700-790:localhost:8800$2b$04$7Nl.S8E4kSzX0I.fKeDB1elHcX788VkjNxp.JjnFJZY/rlyRCvNVS]u ] @anon-20191002_181700-787:localhost:8800$2b$04$3bJtUUAadE.2h5xHckNNl.AcrLFzLtt0XYNVtzHZ.INEo9u4XeG4C]u ]@anon-20191002_181700-788:localhost:8800$2b$04$9zH34ETJchLd2xKhszh72uwllw89cSDBTny7NKo0fUI/VprljuXZu]u ] @anon-20191002_181700-786:localhost:8800$2b$04$ngRXrtEPTJsJfFXzpgPb4eLw5BWYZ/xrclOVYh9uiulz5Wp/RFpma]u ] @anon-20191002_181700-785:localhost:8800$2b$04$z1cqQ0ptoY/G3JFCbe86P.YrzLIqlxlTjh8k9tMrZ2IARrg2AotSy]u ] @anon-20191002_181700-784:localhost:8800$2b$04$tBgzWg6tqMxCJ8BpevGQVOchKzZPF8yc2i6jB6KacdAqPDVqR/.Fa]u ] @anon-20191002_181700-783:localhost:8800$2b$04$ncMQdSrhn9RNXqob7wqMn.9oS18ysnOB9XEKQi210M9qRJRpVmqGO]u ] @anon-20191002_181700-782:localhost:8800$2b$04$AWQQW88w3AeAHE0PR09WG.Y7osxcWYcCbXt5qbM84HUonMx9HaTSW]u~ ] @anon-20191002_181700-781:localhost:8800$2b$04$oZquyldwgcCJGIEm2pIk4OPmXuBAZ3u1havpKhOSkvEU1PYBxiIEq]u} ] @anon-20191002_181700-779:localhost:8800$2b$04$OaSbnsW94PJlWUCx9CP0NOTFO08l0pY9J6wrpTYEGf.jjZqInhpLq]u| ] @anon-20191002_181700-777:localhost:8800$2b$04$/Q.oulNIVsaCg/z0TPUwye/m4V/bpNOj9bd9yi4X5Vf/eC6HpLyYm]u{ ] @anon-20191002_181700-775:localhost:8800$2b$04$3.8TtA0gns6o6P6SJx6Ige0OcDrmv8zP2w1i48jRPqdaQ7HfLdAOS]uz ] @anon-20191002_181700-773:localhost:8800$2b$04$VJiJJLcOC25C4YO/LfB5aOw.upMkXdC7o7w4gnENe6hWZALfrjEbS]uy ]@anon-20191002_181700-774:localhost:8800$2b$04$tCr1WYYdQ9uV5Yb7ampYju3ANeQ8oiWgI2vAkoUqK5Wx7Sab6yH8S]~ux ] @anon-20191002_181700-771:localhost:8800$2b$04$NPzXG8xpugnYygBmtcVS3.IxmtjnsN/dgyR54Fv10lO3Xjp/sLmtS]}uw ]@anon-20191002_181700-772:localhost:8800$2b$04$P7QcTgPhkXybqKgr29qlFO3DFqpCRXwVbZo5DnbQNfY1DPfLqBZyW]}uv ] @anon-20191002_181700-769:localhost:8800$2b$04$h.LYBFZ7cHeYT1c3tEc8t.L5vlvfOF98BAiAKNySkySj2x4KlVHbS]{  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYxOC5GZ0VyblZXbDNKaWwKMDAyZnNpZ25hdHVyZSC1jgN30N9Boz3icKaySX9JmHMm0pJfsNYa46s2uOsF7wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4wOkx5ZmMuQitWbVU4LFoKMDAyZnNpZ25hdHVyZSCU0_9O6ALCEUu0OKMtSUgn0PKtFCpELylK1hj4uM_J9wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdAVy5KOWssdCxtcVdyd3cKMDAyZnNpZ25hdHVyZSAgraxxc6q5U_7VMbu5yfxGyGqUF06nK-jKqT7xjrhzOgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFDaFB1bS5vcUt-cXFTc1AKMDAyZnNpZ25hdHVyZSBuUwjAdastvQZGSYHyizirOyLuiIQKBqJADs7r5j1Egwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZaYmY7VzoyaS5hT3UsRUsKMDAyZnNpZ25hdHVyZSCFQhHrZ-LTwiiiDge5GCVdrykrXQfkhmWf_Bbg0OR1Ago  [ $ H1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8Qo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8Vvkswo[1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwo>1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDM3TWhtLV55VFlzdX52TlAKMDAyZnNpZ25hdHVyZSB-D0qq-F4VHMzUehUyHc8b4NXxmxoEJE1VMAKiqcw8pgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwoĂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwoK1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQo  4 h 6jfd]c@anon-20191002_181700-795:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQo127.0.0.1߂d]c@anon-20191002_181700-797:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgo127.0.0.1d]c@anon-20191002_181700-796:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAo127.0.0.1d]c@anon-20191002_181700-794:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgo127.0.0.1ނd]c@anon-20191002_181700-793:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908Ao127.0.0.1݂d]c@anon-20191002_181700-792:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4Qo127.0.0.1܂d]c@anon-20191002_181700-791:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-Qo127.0.0.1ۂd]c@anon-20191002_181700-790:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwo127.0.0.1ڂd]c@anon-20191002_181700-789:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQo127.0.0.1قd]c@anon-20191002_181700-788:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligo127.0.0.1 }DlN0|^@" n P 4  b DnP2~ (B`$R p4b& DrT 6dF(  b e I -  j N 2 D  u a M 9 % =astest-1-20191002_1817004=anon-20191002_181700-8323=astest-0-20191002_1817002&Oastest-01create-1-20191002_1817001&Oastest-01create-0-20191002_181700/=anon-20191002_181700-831.=anon-20191002_181700-830-=anon-20191002_181700-829,=anon-20191002_181700-828+=anon-20191002_181700-827*=anon-20191002_181700-826)=anon-20191002_181700-825(=anon-20191002_181700-823'=anon-20191002_181700-821&=anon-20191002_181700-822%=anon-20191002_181700-819$=anon-20191002_181700-820#=anon-20191002_181700-818"=anon-20191002_181700-815!=anon-20191002_181700-816 =anon-20191002_181700-813=anon-20191002_181700-814=anon-20191002_181700-812=anon-20191002_181700-811=anon-20191002_181700-809=anon-20191002_181700-810=anon-20191002_181700-807=anon-20191002_181700-808=anon-20191002_181700-805=anon-20191002_181700-806=anon-20191002_181700-803=anon-20191002_181700-804=anon-20191002_181700-801=anon-20191002_181700-802=anon-20191002_181700-799=anon-20191002_181700-800=anon-20191002_181700-797=anon-20191002_181700-798=anon-20191002_181700-795 =anon-20191002_181700-796 =anon-20191002_181700-793 =anon-20191002_181700-794 =anon-20191002_181700-791 =anon-20191002_181700-792=anon-20191002_181700-789=anon-20191002_181700-790=anon-20191002_181700-787=anon-20191002_181700-788=anon-20191002_181700-786=anon-20191002_181700-785=anon-20191002_181700-784=anon-20191002_181700-783=anon-20191002_181700-782=anon-20191002_181700-781!user-upper spyglass!mycooluser+chrtestuser-93- +chrtestuser-92-+chrtestuser-91- +chrtestuser-64- +chrtestuser-63-+chrtestuser-58-+chrtestuser-39-+chrtestuser-34-+chrtestuser-33--chrtestuser-233--chrtestuser-163--chrtestuser-125--chrtestuser-124- -chrtestuser-123- +chrtestuser-10-#cas_user=21D;anon-20191002_181700-99p;anon-20191002_181700-97n;anon-20191002_181700-96o;anon-20191002_181700-95m;anon-20191002_181700-93l;anon-20191002_181700-91j;anon-20191002_181700-90k9anon-20191002_181700-9;anon-20191002_181700-89h;anon-20191002_181700-88i;anon-20191002_181700-87f;anon-20191002_181700-86g;anon-20191002_181700-85d;anon-20191002_181700-84e;anon-20191002_181700-83c;anon-20191002_181700-82b;anon-20191002_181700-81a;anon-20191002_181700-80`9anon-20191002_181700-8;anon-20191002_181700-79_=anon-20191002_181700-779=anon-20191002_181700-777=anon-20191002_181700-775=anon-20191002_181700-774=anon-20191002_181700-773=anon-20191002_181700-772=anon-20191002_181700-771=anon-20191002_181700-770;anon-20191002_181700-77^=anon-20191002_181700-769=anon-20191002_181700-768=anon-20191002_181700-767=anon-20191002_181700-766=anon-20191002_181700-764=anon-20191002_181700-763=anon-20191002_181700-762=anon-20191002_181700-761=anon-20191002_181700-760=anon-20191002_181700-759=anon-20191002_181700-758=anon-20191002_181700-757=anon-20191002_181700-756=anon-20191002_181700-755=anon-20191002_181700-754=anon-20191002_181700-753=anon-20191002_181700-752=anon-20191002_181700-751=anon-20191002_181700-750;anon-20191002_181700-75]=anon-20191002_181700-749=anon-20191002_181700-748=anon-20191002_181700-747 g * T~=ggm]!c@anon-20191002_181700-789:localhost:8800GKBQSBKKFXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQogl]!c@anon-20191002_181700-790:localhost:8800VALGYGSZPAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwogk]!c@anon-20191002_181700-787:localhost:8800ESOZVRSFSTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwogj]!c@anon-20191002_181700-788:localhost:8800JZUHRDQQELMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligogi]!c@anon-20191002_181700-786:localhost:8800WJWBUMRLAIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAogh]!c@anon-20191002_181700-785:localhost:8800TVEQJOAJLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAogg]!c@anon-20191002_181700-784:localhost:8800SHHMGHRUZHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAogf]!c@anon-20191002_181700-783:localhost:8800CBPSCDUMIWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgoge]!c@anon-20191002_181700-782:localhost:8800CMQAXLTOQCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1gogd]!c@anon-20191002_181700-781:localhost:8800FVUJNXJFVGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50Qogc]!c@anon-20191002_181700-779:localhost:8800OWQMDGTEXWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAo u_ I 3   zo|cX?' c]!W+__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800membership{"membership": "join", "content": {}} c]!Y+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800membership{"membership": "leave", "content": {}} c]!W+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800membership{"membership": "join", "content": {}}pc]!#+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-773:localhost:8800"}} c]!W+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800membership{"membership": "join", "content": {}} c]!Y+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800membership{"membership": "leave", "content": {}} c]!W+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800membership{"membership": "join", "content": {}}pc]!#+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-771:localhost:8800"}} c]!W+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800membership{"membership": "join", "content": {}}p c]!#+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-769:localhost:8800"}} c]!W +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800membership{"membership": "join", "content": {}} c]!W +__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800membership{"membership": "join", "content": {}} a]!W +__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800membership{"membership": "join", "content": {}} a]!W +__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800membership{"membership": "join", "content": {}}a]!W +__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800membership{"membership": "join", "content": {}} t\ D ,  peM5:" 4c]!W5+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800membership{"membership": "join", "content": {}} 3c]!W4+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800membership{"membership": "join", "content": {}}p2c]!#3+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-813:localhost:8800"}} 1c]!W2+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800membership{"membership": "join", "content": {}} 0c]!W1+__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800membership{"membership": "join", "content": {}} /c]!W0+__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800membership{"membership": "join", "content": {}}x.c]!3/+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": "Test Group", "avatar_url": null}, "inviter": "@anon-20191002_181700-809:localhost:8800"}} -c]!W.+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800membership{"membership": "join", "content": {}} ,c]!W-+__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800membership{"membership": "join", "content": {}} +c]!W,+__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800membership{"membership": "join", "content": {}} *c]!W++__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800membership{"membership": "join", "content": {}} )c]!W*+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800membership{"membership": "join", "content": {}}p(c]!#)+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-801:localhost:8800"}} 'c]!W(+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800membership{"membership": "join", "content": {}} &c]!W'+__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800membership{"membership": "join", "content": {}} %c]!W&+__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800membership{"membership": "join", "content": {}} $c]!W%+__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800membership{"membership": "join", "content": {}} #c]!W$+__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800membership{"membership": "join", "content": {}} "c]!W#+__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800membership{"membership": "join", "content": {}} !c]!W"+__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800membership{"membership": "join", "content": {}} c]!W!+__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800membership{"membership": "join", "content": {}} c]!W +__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800membership{"membership": "join", "content": {}} 8l D `8Z]c!E@anon-20191002_181700-790:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwoVALGYGSZPA127.0.0.1Perl + Net::Async::HTTP/0.44mY]c!E@anon-20191002_181700-789:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQoGKBQSBKKFX127.0.0.1Perl + Net::Async::HTTP/0.44mX]c!E@anon-20191002_181700-788:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligoJZUHRDQQEL127.0.0.1Perl + Net::Async::HTTP/0.44m2W]c!E@anon-20191002_181700-787:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwoESOZVRSFST127.0.0.1Perl + Net::Async::HTTP/0.44mܜV]c!E@anon-20191002_181700-786:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAoWJWBUMRLAI127.0.0.1Perl + Net::Async::HTTP/0.44mU]c!E@anon-20191002_181700-785:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAoTVEQJOAJLI127.0.0.1Perl + Net::Async::HTTP/0.44mT]c!E@anon-20191002_181700-784:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAoSHHMGHRUZH127.0.0.1Perl + Net::Async::HTTP/0.44moS]c!E@anon-20191002_181700-783:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgoCBPSCDUMIW127.0.0.1Perl + Net::Async::HTTP/0.44mͧR]c!E@anon-20191002_181700-782:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1goCMQAXLTOQC127.0.0.1Perl + Net::Async::HTTP/0.44mQ]c!E@anon-20191002_181700-781:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50QoFVUJNXJFVG127.0.0.1Perl + Net::Async::HTTP/0.44m7   = q ?sd]c@anon-20191002_181700-807:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-Qo127.0.0.1d]c@anon-20191002_181700-799:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQo127.0.0.1d]c@anon-20191002_181700-806:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAo127.0.0.1d]c@anon-20191002_181700-805:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQo127.0.0.1d]c@anon-20191002_181700-804:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8Vvkswo127.0.0.1d]c@anon-20191002_181700-803:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAo127.0.0.1d]c@anon-20191002_181700-802:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAo127.0.0.1d]c@anon-20191002_181700-801:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAo127.0.0.1d]c@anon-20191002_181700-800:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRago127.0.0.1^Y]@anon-20191002_181700-7:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgK127.0.0.1a[a@anon-20191002_181700-79:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCg127.0.0.1A i gh5i 4  1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRago1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAo 9r  V :sCv e]]Q=$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o@astest-1-20191002_181700:localhost:8800@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800joinastest-1-20191002_181700Cu e]]Q=$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y@anon-20191002_181700-832:localhost:8800@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800joinanon-20191002_181700-832Ct e]]Q=$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w@astest-0-20191002_181700:localhost:8800@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800joinastest-0-20191002_181700Cs e]]Q=$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8@anon-20191002_181700-832:localhost:8800@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800joinanon-20191002_181700-832Cr e]]Q=$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw@anon-20191002_181700-831:localhost:8800@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800joinanon-20191002_181700-831Cq e]]Q=$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc@anon-20191002_181700-797:localhost:8800@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800joinanon-20191002_181700-797Cp e]]Q=$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak@anon-20191002_181700-795:localhost:8800@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800joinanon-20191002_181700-795Co e]]Q=$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ@anon-20191002_181700-793:localhost:8800@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800joinanon-20191002_181700-793Cn e]]Q=$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo@anon-20191002_181700-791:localhost:8800@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800joinanon-20191002_181700-791Cm e]]Q=$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA@anon-20191002_181700-791:localhost:8800@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800joinanon-20191002_181700-791Cl e]]Q=$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew@anon-20191002_181700-789:localhost:8800@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800joinanon-20191002_181700-789Ck e]]Q=$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk@anon-20191002_181700-787:localhost:8800@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800joinanon-20191002_181700-787   *tKeQau$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3827}{"auth_events": ["$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw", "$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc", "$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "prev_events": ["$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw"], "type": "m.room.join_rules", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044046087, "hashes": {"sha256": "WwsJdDIosc+0Wlb3HRCnw6ix1nGNckZ6B+j15C+uOcY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H7aL/Yu+ICJInt8P9otTBUcZxE92alyLn1FX9LMOf9xw48lqFUEeQTiN1iGlMavhky+ilD/30FZ7e7ADWKRWDQ"}}, "unsigned": {"age_ts": 1570044046087}}kJeQac$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3826}{"auth_events": ["$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc", "$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "prev_events": ["$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "type": "m.room.power_levels", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"users": {"@anon-20191002_181700-787:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044045221, "hashes": {"sha256": "hsR7mfiDCqsetPbHSiZvx86Bfp24ZB2pbbnF88kdYIY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9yoGcYV1AJQMuTYYk/7y4QKNiY+iPqvEw7xCpuVNXZ9OpGojXHk/yVgJL5mYcWXwn1h9OZCOTbQ+lZ0ThbNDAg"}}, "unsigned": {"age_ts": 1570044045221}}vIeQay$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3825}{"auth_events": ["$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc"], "prev_events": ["$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc"], "type": "m.room.member", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-787", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-787:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044044520, "hashes": {"sha256": "vIGO7/fkrLEI50uEo2o/4Bci0I1HBboFPWbpAyeZtqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jIGq4FjA8GfXDkBlszus1mD4OVwLh0KtFUx1aaOeO9mKoghIvpfg1wEDGJMPO3uK2k/XdneOcLl0qxkFSnyoDQ"}}, "unsigned": {"age_ts": 1570044044520}}iHeQa_$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3824}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-787:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044042730, "hashes": {"sha256": "6MvQXVXw8jCyFEP5YVMh1yYclXyzzYSknJhDfmcFaGk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iq/iq1YYjkB4vewI5ZpQS/p4l9vKmGDV5AF0n9mf2JjW3Sc4ZoIBe6DneONm4WrbRTVh6Xjdv1xVc8igwcaxBA"}}, "unsigned": {"age_ts": 1570044042730}} 4xJd6 ~ R $ l >  Z , < z NV( " r F j-]@astest-1-20191002_181700:localhost:8800w-]@astest-0-20191002_181700:localhost:8800v-]@anon-20191002_181700-832:localhost:8800u-]@anon-20191002_181700-831:localhost:8800t-]@anon-20191002_181700-797:localhost:8800s-]@anon-20191002_181700-795:localhost:8800r-]@anon-20191002_181700-793:localhost:8800q-]@anon-20191002_181700-791:localhost:8800p-]@anon-20191002_181700-789:localhost:8800o+[@anon-20191002_181700-99:localhost:8800.+[@anon-20191002_181700-97:localhost:8800-+[@anon-20191002_181700-95:localhost:8800,+[@anon-20191002_181700-93:localhost:8800++[@anon-20191002_181700-91:localhost:8800*+[@anon-20191002_181700-89:localhost:8800)+[@anon-20191002_181700-87:localhost:8800(+[@anon-20191002_181700-86:localhost:8800'+[@anon-20191002_181700-85:localhost:8800&+[@anon-20191002_181700-84:localhost:8800%+[@anon-20191002_181700-83:localhost:8800$+[@anon-20191002_181700-82:localhost:8800#+[@anon-20191002_181700-81:localhost:8800"+[@anon-20191002_181700-79:localhost:8800!-]@anon-20191002_181700-787:localhost:8800n+[@anon-20191002_181700-77:localhost:8800 -]@anon-20191002_181700-768:localhost:8800m-]@anon-20191002_181700-767:localhost:8800l-]@anon-20191002_181700-763:localhost:8800k-]@anon-20191002_181700-762:localhost:8800j+[@anon-20191002_181700-75:localhost:8800-]@anon-20191002_181700-758:localhost:8800i-]@anon-20191002_181700-757:localhost:8800h-]@anon-20191002_181700-755:localhost:8800g-]@anon-20191002_181700-754:localhost:8800f-]@anon-20191002_181700-752:localhost:8800e-]@anon-20191002_181700-751:localhost:8800d-]@anon-20191002_181700-750:localhost:8800c+[@anon-20191002_181700-74:localhost:8800-]@anon-20191002_181700-747:localhost:8800b-]@anon-20191002_181700-746:localhost:8800a-]@anon-20191002_181700-744:localhost:8800`-]@anon-20191002_181700-743:localhost:8800_-]@anon-20191002_181700-742:localhost:8800^-]@anon-20191002_181700-736:localhost:8800]-]@anon-20191002_181700-735:localhost:8800\-]@anon-20191002_181700-734:localhost:8800[-]@anon-20191002_181700-733:localhost:8800Z-]@anon-20191002_181700-732:localhost:8800Y-]@anon-20191002_181700-731:localhost:8800X-]@anon-20191002_181700-730:localhost:8800W+[@anon-20191002_181700-72:localhost:8829-]@anon-20191002_181700-729:localhost:8800V ,NC 8 - { " p  e ZOD9.|#qf VoeL$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwsha256{[~Q#/JVneL$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIsha256d75HL(tЙxU8VmeL$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4sha256[d eRYZT4&VleL$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8sha256vrKɢON!,XbF6*BgVkeL$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUsha256esCbˠJ4@?ʍ ^!{ɢjVjeL$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUsha256-)3/@{˼:fL"e\gI˻VieL$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMsha256b\T|8֡>!rYQ3nVheL$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQsha256mEܥ׏^="dAxY 7B~VgeL$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEsha256?cd^ @vMG۸hgVfeL$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwsha256C[cpVe6| G>dWbOy,VeeL$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXssha256vi}-#Km.:6P(,{VdeL$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynssha256fp϶eөiz<ܽt^f.8V{VceL$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAsha256"U ' 4wM?PH4wP.VbeL$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zgsha256K&\ZΈOPtj'GVaeL$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcsha256~Cɻ1)e?@բq |tV`eL$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIsha256#M6-L կUXAV_eL$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsosha256ޒ8 +%FG\2jTgLJV^eL$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYsha256=5(8 >ܹ5lʮH‘V]eL$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4sha256jfZIXma,ހ1iV\eL$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Aksha256q]pOyR.O?`eA΅81p V[eL$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYsha256@[vlDaMWA2NȪX<>b֦VZeL$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAsha256xK.f j̥' Z@VYeL$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAsha256*@,1ǻ1bR=zOonJ]OVXeL$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0sha256(KQ̝\DY5KG3 ۤVWeL$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQsha256p1IaVVeL$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Tssha256J8:?y'/ %#f;VUeL$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWposha256ǤƷa'[ !ex\=-ZZVTeL$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4sha256?u]ne~;t "J~w@"fCfVSeL$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUsha256jD gX k//.դoXVReL$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFosha256q>V7 8DZeZVQeL$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgsha256;v>x"DiU-%'cdamX]:hVPeL$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywsha256d$3j {K= 7~ׇ+u*,VOeL$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHksha256N JʵH_}@zYZyVNeL$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94sha256,Q? Ńf $>|;VMeL$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAsha256Cҳ72At67PVLeL$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUsha256˚2ENY~03uI~VKeL$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMsha256>xZS:%WMbDn2m,VJeL$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awsha256UĦeE 1z-lO(MѬVIeL$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5ksha256߀/ PNX.,ǰ%5CVHeL$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewsha256m뜯[&hAs+fTGZuVGeL$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUsha256ǥsC+SBNj}:As32uVFeL$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gsha256sk9>Cƙ ]+"TWVEeL$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVosha256 |٤&90k2e,lZG3!ZVDeL$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwsha256ű,/LY+Pu4 cl ~z v r n j fb^ZVRNJFweeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800veeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800ueeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800teeQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800seeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800reeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800qeeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800peeQ$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800oeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800neeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800meeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800leeQ$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800keeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800jeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800ieeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800heeQ$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800geeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800feeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800eeeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800deeQ$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800ceeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800beeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800aeeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800`eeQ$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800_eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800^eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800]eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800\eeQ$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800[eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800ZeeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800 #7Uq8 T7  q 8 T  p 7 S p8e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYsha2567e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAsha256t8e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmosha256 Z8e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-gsha256$8e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwsha256F8e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsksha256i8e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agsha25618e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYsha256i8e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4sha256y8e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwsha2568e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8sha256 q8e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70sha256s8e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEsha256 8e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgsha2568e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUsha256j8e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgsha2568e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIsha2568e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Isha256a8e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMsha256d8e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-osha256z8e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9ksha256D7e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQsha256 8e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAsha2568e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQsha2568e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4sha2568e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIsha256I8e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0sha256 8e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dissha2568e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwsha256w8e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8sha2568e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUsha2568e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4sha2568e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwsha256 8e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEsha2568e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMsha256  w kOeQac$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3831}{"auth_events": ["$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU", "$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "prev_events": ["$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "type": "m.room.power_levels", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"users": {"@anon-20191002_181700-789:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044053454, "hashes": {"sha256": "IkEef/hFEYPz64bVgzC3FdKUs+z9XSkvaIAOvz215oQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g69xAWbCit8A28wFpdc54YjSevUzjh2HbHd3393l4fVmSou0mU5d6dGSy5/pFgAbpNH3JJVFoxK7ydxaYdD7Ag"}}, "unsigned": {"age_ts": 1570044053454}}vNeQay$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3830}{"auth_events": ["$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU"], "prev_events": ["$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU"], "type": "m.room.member", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-789", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-789:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044052233, "hashes": {"sha256": "2vdbB52EcunUqMGZq4PgozGrWvSIdHcK0fI/7eQLMxg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v20qZGIIuXKudwIB9TuVFB/GEaEW2Gyu0hWWIX06qLGl5bp5VhCfpN6ot44RptIvIhAcR1z/HR3GdejmaQiJDQ"}}, "unsigned": {"age_ts": 1570044052233}}iMeQa_$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3829}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-789:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044051001, "hashes": {"sha256": "OWHLjMGFRY+ZjSHSnkaWzxGlkyvbWn4IsKEopTKwwwA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VpElDPFFlR8hRI+NUzBe0ZwIPuyXdbsIs+6jNe0FIuNTG5cG2d2NtGYQb5ObEcAR+29SuRBEZo8RhWKMp8KVDA"}}, "unsigned": {"age_ts": 1570044051001}}LeQa$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3828}{"auth_events": ["$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw", "$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc", "$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "prev_events": ["$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo"], "type": "m.room.history_visibility", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044046796, "hashes": {"sha256": "Toh2TXDTfUHjVplhd4J0RCUkg0e6Y52KW8oCR6ZWrXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uobf8YdpRvD3nxB8VARGeaN03NYFn79FEID1EutFa/njkxlOn1eVlyhQqw5hBn5pwr2A++g2GVhl+XOK7L95Aw"}}, "unsigned": {"age_ts": 1570044046796}} a} { y w u sqomkigeca~GeeQ$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800~FeeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800~EeeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~DeeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800~CeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800~BeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~AeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800~@eeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800~?eeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~>eeQ$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~=eeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800~<eeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~;eeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800~:eeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800~9eeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~8eeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800~7eeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800~6eeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~5eeQ$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~4eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800~3eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~2eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800~1eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800~0eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~/eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800~.eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800~-eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~,eeQ$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~+eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800~*eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~)eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800 "&) K T |  :`c!CLt jTQ3 e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE SQ']e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwdRQ' e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.create$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXspQQ? e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibility$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynshPQ/ e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rules$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAjOQ3 e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg NQ']e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcdMQ' e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.create$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIpLQ? e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibility$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsohKQ/ e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rules$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYjJQ3 e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 IQ']e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkdHQ' e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.create$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYpGQ? e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibility$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAhFQ/ e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rules$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAjEQ3 e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 DQ']e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQdCQ' e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.create$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TspBQ? e!jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibility$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpohAQ/ e!jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4j@Q3 e!jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU ?Q']e!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFod>Q' e!jlGSdNttccYxjfLkwW:localhost:8800m.room.create$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgp=Q? e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibility$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywh<Q/ e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rules$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkj;Q3 e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 :Q']e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAd9Q' e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.create$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUp8Q? e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibility$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMh7Q/ e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rules$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awj6Q3 e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 5Q']e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewd4Q' e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.create$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUp3Q? e!jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibility$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 8G P V  a % q 5 E U e)u9I YH_@ ]@anon-20191002_181700-832:localhost:8800m&\ 9 ]@astest-1-20191002_181700:localhost:8800a&\> ] @astest-0-20191002_181700:localhost:8800m&\X= ]  @astest-1-20191002_181700:localhost:8800m&\V9 ]@anon-20191002_181700-832:localhost:8800a&\9 ]@astest-0-20191002_181700:localhost:8800a&\.~ ? @as-user-1:localhost:8800m&\B} o@astest-01create-1-20191002_181700:localhost:8800a&\C| q@_astest-01create-0-20191002_181700:localhost:8800a&\B{ o@astest-01create-0-20191002_181700:localhost:8800a&\>z ]  @anon-20191002_181700-831:localhost:8800m&\C9y ]@anon-20191002_181700-831:localhost:8800a&\9x ]@anon-20191002_181700-830:localhost:8800a&\9w ]@anon-20191002_181700-829:localhost:8800a&\9v ]@anon-20191002_181700-828:localhost:8800a&\9u ]@anon-20191002_181700-827:localhost:8800a&\9t ]@anon-20191002_181700-826:localhost:8800a&\9s ]@anon-20191002_181700-825:localhost:8800a&\9r ]@anon-20191002_181700-823:localhost:8800a&\9q ]@anon-20191002_181700-821:localhost:8800a&\9p ]@anon-20191002_181700-822:localhost:8800a&\9o ]@anon-20191002_181700-819:localhost:8800a&\9n ]@anon-20191002_181700-820:localhost:8800a&\9m ]@anon-20191002_181700-818:localhost:8800a&\9l ]@anon-20191002_181700-815:localhost:8800a&\9k ]@anon-20191002_181700-816:localhost:8800a&\9j ]@anon-20191002_181700-813:localhost:8800a&\9i ]@anon-20191002_181700-814:localhost:8800a&\9h ]@anon-20191002_181700-812:localhost:8800a&\9g ]@anon-20191002_181700-811:localhost:8800a&\9f ]@anon-20191002_181700-809:localhost:8800a&\9e ]@anon-20191002_181700-810:localhost:8800a&\9d ]@anon-20191002_181700-807:localhost:8800a&\9c ]@anon-20191002_181700-808:localhost:8800a&\9b ]@anon-20191002_181700-805:localhost:8800a&\9a ]@anon-20191002_181700-806:localhost:8800a&\9` ]@anon-20191002_181700-803:localhost:8800a&\9_ ]@anon-20191002_181700-804:localhost:8800a&\9^ ]@anon-20191002_181700-801:localhost:8800a&\9] ]@anon-20191002_181700-802:localhost:8800a&\9\ ]@anon-20191002_181700-799:localhost:8800a&\9[ ]@anon-20191002_181700-800:localhost:8800a&\>Z ]  @anon-20191002_181700-797:localhost:8800m&\C9Y ]@anon-20191002_181700-797:localhost:8800a&\9X ]@anon-20191002_181700-798:localhost:8800a&\>W ]  @anon-20191002_181700-795:localhost:8800m&\C9V ]@anon-20191002_181700-795:localhost:8800a&\9U ]@anon-20191002_181700-796:localhost:8800a&\>T ]  @anon-20191002_181700-793:localhost:8800m&\C9S ]@anon-20191002_181700-793:localhost:8800a&\9R ]@anon-20191002_181700-794:localhost:8800a&\@Q ]@anon-20191002_181700-791:localhost:8800m&\ 9P ]@anon-20191002_181700-791:localhost:8800a&\9O ]@anon-20191002_181700-792:localhost:8800a&\>N ]  @anon-20191002_181700-789:localhost:8800m&\C9M ]@anon-20191002_181700-789:localhost:8800a&\ ]ww}jWC/{gS?+ w c O ; '  s _ K 7 #  o [ G 3   k W C /    w _ G ' -]@astest-1-20191002_181700:localhost:8800 -]@astest-0-20191002_181700:localhost:8800 )localhost:8800 Athis_state_does_not_changeAthis_state_does_not_changeAthis_state_does_not_change1this_state_changes1this_state_changes1this_state_changes)localhost:8800 )localhost:8800 X)localhost:8800 Q)localhost:8800 I)localhost:8800 @)localhost:8800G)localhost:8800&)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800x)localhost:8800R)localhost:8800C)localhost:8800p)localhost:8800d)localhost:8800a)localhost:8800 )localhost:8800 )localhost:8800)localhost:8800)localhost:8800{)localhost:8800 )localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:88008)localhost:88001)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800d)localhost:8800M)localhost:8800)localhost:8800 )localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800{)localhost:8800q)localhost:8800h)localhost:8800^)localhost:8800T)localhost:8800L)localhost:8800D)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800J)localhost:8800C)localhost:88006)localhost:8800Y Y T B /@random_dude:testW+@bob:matrix.org+@bob:matrix.org g * T~=ggx]!c@anon-20191002_181700-802:localhost:8800NFTDLWJQJRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAogw]!c@anon-20191002_181700-799:localhost:8800LEWHBWNYPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQogv]!c@anon-20191002_181700-800:localhost:8800PFQNMAUDJCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRagogu]!c@anon-20191002_181700-797:localhost:8800BZMLAVLJHJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgogt]!c@anon-20191002_181700-798:localhost:8800INQDOVATBTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1Aogs]!c@anon-20191002_181700-795:localhost:8800JVASIBBRVUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQogr]!c@anon-20191002_181700-796:localhost:8800TWRMWQHVDQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAogq]!c@anon-20191002_181700-793:localhost:8800AKRKGRHMWIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908Aogp]!c@anon-20191002_181700-794:localhost:8800HERKLRVCIJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgogo]!c@anon-20191002_181700-791:localhost:8800WJMTFALHBSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-Qogn]!c@anon-20191002_181700-792:localhost:8800YSFSTXJXHUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4Qo <V \  f  pn(~&6< e'Q  ]$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIm.room.create!ELBgBaMSIMNkjFSumH:localhost:8800m|m}Q@anon-20191002_181700-797:localhost:8800, e?Q ]$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsom.room.history_visibility!CKNftKKCaOCVUyYWNY:localhost:8800mpamsF@anon-20191002_181700-795:localhost:8800$ e/Q ]$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYm.room.join_rules!CKNftKKCaOCVUyYWNY:localhost:8800mmmm@anon-20191002_181700-795:localhost:8800& e3Q ]$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4m.room.power_levels!CKNftKKCaOCVUyYWNY:localhost:8800mj1mkO@anon-20191002_181700-795:localhost:8800 e'Q ]$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Akm.room.member!CKNftKKCaOCVUyYWNY:localhost:8800mfmg@anon-20191002_181700-795:localhost:8800  e'Q  ]$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYm.room.create!CKNftKKCaOCVUyYWNY:localhost:8800mcmc@anon-20191002_181700-795:localhost:8800,e?Q ]$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAm.room.history_visibility!cvXpMzcxNNhsNttxvt:localhost:8800mV<mXt@anon-20191002_181700-793:localhost:8800$e/Q ]$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAm.room.join_rules!cvXpMzcxNNhsNttxvt:localhost:8800mSmTY@anon-20191002_181700-793:localhost:8800&e3Q ]$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0m.room.power_levels!cvXpMzcxNNhsNttxvt:localhost:8800mPmQ@anon-20191002_181700-793:localhost:8800 e'Q ]$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQm.room.member!cvXpMzcxNNhsNttxvt:localhost:8800mLmM@anon-20191002_181700-793:localhost:8800 e'Q  ]$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Tsm.room.create!cvXpMzcxNNhsNttxvt:localhost:8800mHmI@anon-20191002_181700-793:localhost:8800,e?Q ]$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpom.room.history_visibility!jlGSdNttccYxjfLkwW:localhost:8800m=Km?1@anon-20191002_181700-791:localhost:8800$e/Q ]$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4m.room.join_rules!jlGSdNttccYxjfLkwW:localhost:8800m9Rm;+@anon-20191002_181700-791:localhost:8800&e3Q ]$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUm.room.power_levels!jlGSdNttccYxjfLkwW:localhost:8800m5m6@anon-20191002_181700-791:localhost:8800 e'Q ]$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFom.room.member!jlGSdNttccYxjfLkwW:localhost:8800m3)m3@anon-20191002_181700-791:localhost:8800 e'Q  ]$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgm.room.create!jlGSdNttccYxjfLkwW:localhost:8800m/m0J@anon-20191002_181700-791:localhost:8800,~e?Q ]$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywm.room.history_visibility!ZNIjCvcWhgcwskanjT:localhost:8800m*/m,@anon-20191002_181700-791:localhost:8800$}e/Q ]$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkm.room.join_rules!ZNIjCvcWhgcwskanjT:localhost:8800m'cm(=@anon-20191002_181700-791:localhost:8800&|e3Q ]$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94m.room.power_levels!ZNIjCvcWhgcwskanjT:localhost:8800m#m$@anon-20191002_181700-791:localhost:8800 {e'Q ]$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAm.room.member!ZNIjCvcWhgcwskanjT:localhost:8800m m!Z@anon-20191002_181700-791:localhost:8800z e'Q  ]$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUm.room.create!ZNIjCvcWhgcwskanjT:localhost:8800mmv@anon-20191002_181700-791:localhost:8800,ye?Q ]$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMm.room.history_visibility!NJdkYMskQwIpIWlWkn:localhost:8800mm@anon-20191002_181700-789:localhost:8800$xe/Q ]$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awm.room.join_rules!NJdkYMskQwIpIWlWkn:localhost:8800m m?@anon-20191002_181700-789:localhost:8800&we3Q ]$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5km.room.power_levels!NJdkYMskQwIpIWlWkn:localhost:8800mm @anon-20191002_181700-789:localhost:8800  vSeQay$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3835}{"auth_events": ["$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU"], "prev_events": ["$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU"], "type": "m.room.member", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-791", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-791:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044059888, "hashes": {"sha256": "jPJ5bD6uCbB00PoCjepoXgrY7alF6vOlhjZ/CAP5f8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ieRDNgiVHpxw5UNAORRWSWFu8lidNNO3lUhwTPh1VHqs2gLiqXzftEwzvuBhhEC8EO36BmDe3+ns95MYVVeeDg"}}, "unsigned": {"age_ts": 1570044059888}}iReQa_$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3834}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-791:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044059060, "hashes": {"sha256": "x8mgEHXT1hUlFr75dX6hEPjrI9h2b0oNZuTSncJqbVA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y/ctGoqTVD7bNFVgb+kp0U+mSZo5yK0A5b79cHtTR3G/BOD/2pnUuiokoqfuz2YfMeFGiWXhupNAdha1gvNMCA"}}, "unsigned": {"age_ts": 1570044059060}}QeQa$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3833}{"auth_events": ["$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k", "$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU", "$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "prev_events": ["$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw"], "type": "m.room.history_visibility", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044055957, "hashes": {"sha256": "Cnco14bKHkHN8megDNTes0AsN9peezZa34MWiP9QUQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qbWQs0YMEMEGKw0Ea3BMd0GTRd3uEVh2AedjDiUG/5d3IowKMqdeIwi6/Up/UsoYGN69vgnidLgscEPUSXGaAQ"}}, "unsigned": {"age_ts": 1570044055957}}tPeQau$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3832}{"auth_events": ["$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k", "$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU", "$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "prev_events": ["$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k"], "type": "m.room.join_rules", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044054748, "hashes": {"sha256": "0/wcWaPd910/JKdfj6389yFJsYhkhCPprAW3Ij9b7Ac"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mPLjVnItZZ1g0uYv2MyTyorO9IDuL3wY09JDkGWWxgisQ3f2UYryclrvTqMO+C/+kdFNM6gCc47SQvIoXN05BQ"}}, "unsigned": {"age_ts": 1570044054748}} (X\ ` d  h  l  p t x$|(QeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800QeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800QeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800QeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800QeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800Q eQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800Q eQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800Q eQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800Q eQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800QeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800QeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800QeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800QeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800QeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800QeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800QeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800QeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800Q~eQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800Q}eQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800Q|eQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800Q{eQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800QxeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800QweQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800QveQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800QueQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800QteQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800QreQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800QpeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800QneQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800Q eQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800 -}T)}R' } T +  Z /  X -  V +  T )}*Q!aZwMKYDXJRlSKjQNWM:localhost:8800..*Q!aZwMKYDXJRlSKjQNWM:localhost:8800--*Q!aZwMKYDXJRlSKjQNWM:localhost:8800,,*Q!aZwMKYDXJRlSKjQNWM:localhost:8800++*Q!aZwMKYDXJRlSKjQNWM:localhost:8800***Q!aZwMKYDXJRlSKjQNWM:localhost:8800))*Q!aZwMKYDXJRlSKjQNWM:localhost:8800((*Q!aZwMKYDXJRlSKjQNWM:localhost:8800''*Q!aZwMKYDXJRlSKjQNWM:localhost:8800&&*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800(Q!aWJOsiuJONOvjKWEjO:localhost:8800kk(Q!aWJOsiuJONOvjKWEjO:localhost:8800jj(Q!aWJOsiuJONOvjKWEjO:localhost:8800ii(Q!aWJOsiuJONOvjKWEjO:localhost:8800hh(Q!aWJOsiuJONOvjKWEjO:localhost:8800gg(Q!aWJOsiuJONOvjKWEjO:localhost:8800ff*Q!aVxOoyiLLnxmzgLJat:localhost:8800>>*Q!aVxOoyiLLnxmzgLJat:localhost:8800==*Q!aVxOoyiLLnxmzgLJat:localhost:880066*Q!aVxOoyiLLnxmzgLJat:localhost:880055*Q!aVxOoyiLLnxmzgLJat:localhost:880044*Q!aVxOoyiLLnxmzgLJat:localhost:880033*Q!aVxOoyiLLnxmzgLJat:localhost:880022*Q!aVxOoyiLLnxmzgLJat:localhost:880011*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z z*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y y*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x x*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w w*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 v v*Q!aLxrqpqLkbzyIxGgpk:localhost:8800 +Dd0`, \ ( X $ T P  L |HxD1Me$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o 1Le$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1Ke$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1Je$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1Ie$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1He$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU 1Ge$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc 1Fe$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w 1Ee$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw 1De$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI 1Ce$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 1Be$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 1Ae$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU 1@e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU 1?e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM 1>e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ 1=e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE 1<e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw 1;e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs 1:e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns 19e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA 18e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg 17e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc 16e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI 15e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso 14e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY 13e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 12e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak 11e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY 10e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA 1/e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA 1.e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 1-e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ 1,e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts 1+e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo 1*e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 1)e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU 1(e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo 1'e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg 1&e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw 1%e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk 1$e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 1#e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA 8l D `8d]c!E@anon-20191002_181700-800:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRagoPFQNMAUDJC127.0.0.1Perl + Net::Async::HTTP/0.44mc]c!E@anon-20191002_181700-799:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQoLEWHBWNYPQ127.0.0.1Perl + Net::Async::HTTP/0.44mob]c!E@anon-20191002_181700-798:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1AoINQDOVATBT127.0.0.1Perl + Net::Async::HTTP/0.44ma]c!E@anon-20191002_181700-797:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgoBZMLAVLJHJ127.0.0.1Perl + Net::Async::HTTP/0.44m{ `]c!E@anon-20191002_181700-796:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAoTWRMWQHVDQ127.0.0.1Perl + Net::Async::HTTP/0.44mw_]c!E@anon-20191002_181700-795:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQoJVASIBBRVU127.0.0.1Perl + Net::Async::HTTP/0.44mb%^]c!E@anon-20191002_181700-794:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgoHERKLRVCIJ127.0.0.1Perl + Net::Async::HTTP/0.44m^_]]c!E@anon-20191002_181700-793:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908AoAKRKGRHMWI127.0.0.1Perl + Net::Async::HTTP/0.44mE\]c!E@anon-20191002_181700-792:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4QoYSFSTXJXHU127.0.0.1Perl + Net::Async::HTTP/0.44mB[]c!E@anon-20191002_181700-791:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-QoWJMTFALHBS127.0.0.1Perl + Net::Async::HTTP/0.44m  iWeQa_$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3839}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-791:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044063628, "hashes": {"sha256": "Kcfi3Bi6CCxUYD+f6W0RSWoK6Gd093dH+MMLm2mV1jM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xmw7Da20xxbD5q04tllCBsH2on0FNmhjcEzinJUpAQGLD6UqwTb+APBxii2S/WmtEqZigQRhxpV6lRAI7EOoDA"}}, "unsigned": {"age_ts": 1570044063628}}VeQa$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3838}{"auth_events": ["$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94", "$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU", "$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "prev_events": ["$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk"], "type": "m.room.history_visibility", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044062255, "hashes": {"sha256": "13yIq3v5GGBR/elUz4aenB4BccPl5pjTrk/s8sgjm3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9Qe7/6kPkZU9SZP2pxvtlPIGotBxRVtw3PkzpGWxDdnMzo4IcrbDEvmwBfWgx9iNy79gnovmAKr1gk/sLEqrAg"}}, "unsigned": {"age_ts": 1570044062255}}tUeQau$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3837}{"auth_events": ["$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94", "$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU", "$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "prev_events": ["$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94"], "type": "m.room.join_rules", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044061539, "hashes": {"sha256": "GwAzFZGvg2tPhlNKc+HLRYUv0gUXKWbZubi3yCiEEK0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "247qEOjikmr6c+0cuZpR7zcfrHY8ifWl7KqQKMgAO+gy4KcWc+oUV5JnWdX1DtLDvqf3m3TAW7T2bq7Wo0QFDg"}}, "unsigned": {"age_ts": 1570044061539}}kTeQac$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3836}{"auth_events": ["$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU", "$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "prev_events": ["$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "type": "m.room.power_levels", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"users": {"@anon-20191002_181700-791:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044060643, "hashes": {"sha256": "xwp2pbscpSuVPl/1zeqopdVe4mwZ4pioKexmGPi+aDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D9Y4wEtXjADIEihaNW1DmzIw6gJNLCcz6PyEiLDaluMYR4ZnLUun3nVPXfc0UmbGfBSipF2fWBdwJB90CFsxDA"}}, "unsigned": {"age_ts": 1570044060643}}  [eQa$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3843}{"auth_events": ["$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU", "$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg", "$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "prev_events": ["$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4"], "type": "m.room.history_visibility", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044067147, "hashes": {"sha256": "WAnjQpttH5gOuwnzgtjXvRnycbicWcMx5gvZpYFZwDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6iApY5hfn42eRTxsaIY1EYTKNGHvZty3aF9+Pw44L3gSUVc/MZU6hZs2anrxV7YNeUdR9UaBI1PcRP8j4zy+CQ"}}, "unsigned": {"age_ts": 1570044067147}}tZeQau$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3842}{"auth_events": ["$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU", "$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg", "$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "prev_events": ["$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU"], "type": "m.room.join_rules", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044066130, "hashes": {"sha256": "4UxBFR7nbkPnnKVE1igukXkmutDR1y3u8mLxog4+vO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ILBOej4iYlDMYIlEt8XMMGHb7qjYe5vZq/9spUAMOMewtIOhdgzP5EVdeYPj4wEkHWM9p2JKfA6F/kUdIG4QDA"}}, "unsigned": {"age_ts": 1570044066130}}kYeQac$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3841}{"auth_events": ["$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg", "$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "prev_events": ["$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "type": "m.room.power_levels", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"users": {"@anon-20191002_181700-791:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044065222, "hashes": {"sha256": "5aiwThfMaUKsYtahd/INSeO+cfNZ+ukTSVDKY0xtT50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "anjjRHzsEhD6MjP+Q37S3qBiR8wl/+iNdjCFNK3X5SMQzx0mUvqGGx+oD0UQo6dCYxl8BmOCq4KREOVNijoKBA"}}, "unsigned": {"age_ts": 1570044065222}}vXeQay$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3840}{"auth_events": ["$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg"], "prev_events": ["$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg"], "type": "m.room.member", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-791", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-791:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044064553, "hashes": {"sha256": "UlrPpL5q4hi99jVbV7wVinnBK0KmWeq0Au39Fn6dIw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SvuDoDWCwEovdyHJyRPwzyX1np0Xj4ozTTRhgqerbqKr81bZWY0geWXm0Ujjy7+w+lNgcGF+xsFNb+IJCfE4AQ"}}, "unsigned": {"age_ts": 1570044064553}} #RM H C > 9 4/*|%w rTKQe !QWLJZmJqjWZjVOjdYF:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4oTJQe !QWLJZmJqjWZjVOjdYF:localhost:8800$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsTIQe !QWLJZmJqjWZjVOjdYF:localhost:8800$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8THQe !QWLJZmJqjWZjVOjdYF:localhost:8800$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624TGQe !QWLJZmJqjWZjVOjdYF:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YTFQe !QWLJZmJqjWZjVOjdYF:localhost:8800$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUTEQe !ZWANpHlizyLrUiVvAm:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wTDQe !ZWANpHlizyLrUiVvAm:localhost:8800$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwTCQe !ZWANpHlizyLrUiVvAm:localhost:8800$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLITBQe !ZWANpHlizyLrUiVvAm:localhost:8800$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4TAQe !ZWANpHlizyLrUiVvAm:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8T@Qe !ZWANpHlizyLrUiVvAm:localhost:8800$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUT?Qe !TkluVzxeeCbMtbFWWS:localhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUT>Qe !TkluVzxeeCbMtbFWWS:localhost:8800$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMT=Qe !TkluVzxeeCbMtbFWWS:localhost:8800$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQT<Qe !TkluVzxeeCbMtbFWWS:localhost:8800$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pET;Qe !TkluVzxeeCbMtbFWWS:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwT:Qe !TkluVzxeeCbMtbFWWS:localhost:8800$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsT9Qe !ELBgBaMSIMNkjFSumH:localhost:8800$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsT8Qe !ELBgBaMSIMNkjFSumH:localhost:8800$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAT7Qe !ELBgBaMSIMNkjFSumH:localhost:8800$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9ZgT6Qe !ELBgBaMSIMNkjFSumH:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcT5Qe !ELBgBaMSIMNkjFSumH:localhost:8800$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIT4Qe !CKNftKKCaOCVUyYWNY:localhost:8800$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoT3Qe !CKNftKKCaOCVUyYWNY:localhost:8800$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYT2Qe !CKNftKKCaOCVUyYWNY:localhost:8800$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4T1Qe !CKNftKKCaOCVUyYWNY:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkT0Qe !CKNftKKCaOCVUyYWNY:localhost:8800$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYT/Qe !cvXpMzcxNNhsNttxvt:localhost:8800$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAT.Qe !cvXpMzcxNNhsNttxvt:localhost:8800$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAT-Qe !cvXpMzcxNNhsNttxvt:localhost:8800$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0T,Qe !cvXpMzcxNNhsNttxvt:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQT+Qe !cvXpMzcxNNhsNttxvt:localhost:8800$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TsT*Qe !jlGSdNttccYxjfLkwW:localhost:8800$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoT)Qe !jlGSdNttccYxjfLkwW:localhost:8800$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 E|u m e ] U MEeeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800 aeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800FeeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ!mvgUHEsfGqDkPQUvfG:localhost:8800 XeeQ$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800eeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800geeQ$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800 ԁeeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800VeeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800 #i(7 e  2 ^ g+4\&)8fi ?eQ']$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800m>eQ? $XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibilitye=eQ/ $Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rulesg<eQ3 $jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels ;eQ']$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800a:eQ' $NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create 9eQ']$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800m8eQ? $e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibilitye7eQ/ $4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rulesg6eQ3 $n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels 5eQ']$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800a4eQ' $ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800m.room.createp3eQ))$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800m2eQ? $8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibilitye1eQ/ $-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rulesg0eQ3 $P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels /eQ']$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800a.eQ' $CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800m.room.createm-eQ? $Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibilitye,eQ/ $IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rulesg+eQ3 $S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels *eQ']$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800a)eQ' $noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800m.room.createm(eQ? $3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibilitye'eQ/ $FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rulesg&eQ3 $HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels %eQ']$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800a$eQ' $QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.createm#eQ? $EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibilitye"eQ/ $6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rulesg!eQ3 $pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels eQ']$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800aeQ' $SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800m.room.createmeQ? $x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibilityeeQ/ $P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules   *t_eQau$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3847}{"auth_events": ["$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0", "$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts", "$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "prev_events": ["$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0"], "type": "m.room.join_rules", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044072847, "hashes": {"sha256": "imNuUpHJohwpZPeIpk//JBhUyfYFigFk71+9ops0R40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r4CYiZhul2h0RMmim5u/u6Y/c7H9DsVycomrwkI39Qq7yzWZaK1F81uxt46bVB1m2FlOohBjvTXdSU/oLWH3Bw"}}, "unsigned": {"age_ts": 1570044072847}}k^eQac$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3846}{"auth_events": ["$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts", "$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "prev_events": ["$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "type": "m.room.power_levels", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"users": {"@anon-20191002_181700-793:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044072084, "hashes": {"sha256": "J7BvaKH12YvNsD9vzabrNk+6Ci+hl9ZM3KLwoLRImVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FqsybKlBdhPfevNzMtCFDwgYu0vbkw7l2pnrAYF+QWHeUXOc9/uxLGjyPFQUramEygExGAFPS6jZcRZcbeuRAw"}}, "unsigned": {"age_ts": 1570044072084}}v]eQay$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3845}{"auth_events": ["$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts"], "prev_events": ["$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts"], "type": "m.room.member", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-793", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-793:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044071145, "hashes": {"sha256": "NnIVtqlDVGFaD3tZ0gDMqDbstZPdLjKaQnvN6Ieoduo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yRQUZ5ugwQktzZ+Pmw78Ct4tUXgc53J5738cz6oOtIHvAIQiMFt8PbNRPKmcwk4+pBE3/2ODdwjRykBAN2TMCw"}}, "unsigned": {"age_ts": 1570044071145}}i\eQa_$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3844}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-793:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044070059, "hashes": {"sha256": "J+WwIrfRxY7rg0j1zntPsHOrXSMsJkit5jffox3pF+o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tv5k5dDDrz92lkefPH0yqolUGCEZ0qwwx7jsUyq5VLG6vgc8E2YNBjj2vT/9PoSyKl2H0arTfv2NJNNpfRI5Dg"}}, "unsigned": {"age_ts": 1570044070059}}  w kceQac$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3851}{"auth_events": ["$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY", "$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "prev_events": ["$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "type": "m.room.power_levels", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"users": {"@anon-20191002_181700-795:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044078641, "hashes": {"sha256": "UofzRlygY3uItkn1iMM8Y3dNlwDOseLid1O+A7mZva8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x2k1l+AiBlSgmueTDUO87BJ+ONvorQFm5YftcKCGAQmFhyzcLdyXGffqJIOQcJmMM1e6gOaL8Q01oOuuoRyYBw"}}, "unsigned": {"age_ts": 1570044078641}}vbeQay$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3850}{"auth_events": ["$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY"], "prev_events": ["$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY"], "type": "m.room.member", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-795", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-795:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044077745, "hashes": {"sha256": "nNc7PSyxTzhhsdu/ah6wtBo7KpCdUMNa4f/Y9dZjF00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "65QGq60i1nQV+VJ1vJveMD4bqjj8wKzY1/CTMQ9WtZSMTxLpbOp0N26oTHX9PWIlt8+Vhe2lJzVoQUE71nYjDw"}}, "unsigned": {"age_ts": 1570044077745}}iaeQa_$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3849}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-795:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044076953, "hashes": {"sha256": "6iQvXQswcHZZiCfLgOCzGUlhmmeQ7wz6XA8GN+OmPT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SsGCxAp/zS2ugzaJEWqUed62/PB36RC2XXPq7IFJ3fD2Kb1UIcQQb1KOIDsIQw6Xp7LB55uYA4oS6GD4VAHzAA"}}, "unsigned": {"age_ts": 1570044076953}}`eQa$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3848}{"auth_events": ["$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0", "$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts", "$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "prev_events": ["$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA"], "type": "m.room.history_visibility", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044073532, "hashes": {"sha256": "/LuLY6Zob3oF3vznleu2NLv0dqcpwSLoKkoUE3PnWno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "78thmMgQCn+v5bpHLQzco//91ViJjpB7SVIh3ow2w875kY/yz1P1/jdd4ENM/00HFPx0TVXXV+VmduefajrPAg"}}, "unsigned": {"age_ts": 1570044073532}} a} { y w u sqomkigeca~feeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~eeeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800~deeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800~ceeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~beeQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~aeeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800~`eeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~_eeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800~^eeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800~]eeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~\eeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800~[eeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800~ZeeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~YeeQ$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~XeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800~WeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~VeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800~UeeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800~TeeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~SeeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800~ReeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800~QeeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~PeeQ$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~OeeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800~NeeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800~MeeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800~LeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800~KeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800~JeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800~IeeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800~HeeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800 EJ J  Q  _ } =  )<Q3 !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levels?^Q']!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800D^Q']!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800>:Q/ !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rulesABQ? !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibilityB6Q' !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.create=?Q9 !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias@EQ))!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800C<Q3 !eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels^Q']!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800:Q/ !eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rulesBQ? !eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibility6Q' !eLsrBEnrHolwCNgkFW:localhost:8800m.room.create<Q3 !eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels^Q']!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800^Q']!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800:Q/ !eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rulesBQ? !eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibility6Q' !eKrOqiOabJcMgIJjwC:localhost:8800m.room.create?Q9 !eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_aliasEQ))!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800<Q3 !eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levelsv^Q']!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800z^Q']!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800u:Q/ !eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_ruleswBQ? !eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibilityx<Q3 !eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_accessy  & 6 F f b \b^tz(8u*Q]Q!zScKnCZCFPIIodAiQj:localhost:8800@anon-20191002_181700-659:localhost:8800$1570043566390qTwyJ:localhost:8800joinu)Q]Q!LazKtcHZriKzCvvGwV:localhost:8800@anon-20191002_181700-658:localhost:8800$1570043557383IxQaJ:localhost:8800joinu(Q]Q!lEJUJZxqZPKZetemiR:localhost:8800@anon-20191002_181700-657:localhost:8800$1570043546376YfkfL:localhost:8800joinu'Q]Q!bLWyXaXdvUhdSAooUz:localhost:8800@anon-20191002_181700-656:localhost:8800$1570043539370xCBJr:localhost:8800joinu&Q]Q!YmRuIWixFpaqEeDQLZ:localhost:8800@anon-20191002_181700-655:localhost:8800$1570043534365WVAkx:localhost:8800joinu%Q]Q!bjdLCdBwkKaihRIRFG:localhost:8800@anon-20191002_181700-654:localhost:8800$1570043527359ScxWW:localhost:8800joinu$Q]Q!qzrZzAieCgGSbpKOQR:localhost:8800@anon-20191002_181700-653:localhost:8800$1570043522354IAAap:localhost:8800joinu#Q]Q!qzurjQHmiriwjaUMhO:localhost:8800@anon-20191002_181700-652:localhost:8800$1570043516348vThZG:localhost:8800joinu"Q]Q!TSFcaXDBqrCREHRHxv:localhost:8800@anon-20191002_181700-646:localhost:8800$1570043502342mVJmO:localhost:8800join!Q]e!AOEdqVKPFddrqbKPOL:localhost:8800@anon-20191002_181700-645:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgjoin Q]e!wBBQYEPjQGnoAzDpEu:localhost:8800@anon-20191002_181700-644:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88joinuQ]Q!oZGRyBAkNDrEeiAqWL:localhost:8800@anon-20191002_181700-643:localhost:8800$1570043477326hyTqo:localhost:8800joine1]Q!6:localhost:42455@anon-20191002_181700-642:localhost:8800$1570043468324DLhaB:localhost:8800joinQ]e!cRbfhxZdPstEsPGPAu:localhost:8800@anon-20191002_181700-641:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYjoinQ]e!sAWFpvSUPExZLVcPEd:localhost:8800@anon-20191002_181700-640:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4joinQ]e!YpcmaMNMzjvtgYtrli:localhost:8800@anon-20191002_181700-639:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70joinQ]e!PzoqoNRxeEEqiLyVSV:localhost:8800@anon-20191002_181700-638:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sjoinuQ]Q!uPxXJHJyFQwvpQLZNs:localhost:8800@anon-20191002_181700-637:localhost:8800$1570043426319TNjnu:localhost:8800joinQ]e!UluPYLGXtInKDTjRzp:localhost:8800@anon-20191002_181700-636:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIleaveQ]e!QkkdnzvdrjHaFGkzMt:localhost:8800@anon-20191002_181700-635:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8joinQ]e!DuqHkpTfWCUblSrxQj:localhost:8800@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgjoinQ]e!NanhNmCnVVpmZRJrTF:localhost:8800@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkjoine1]Q!5:localhost:42455@anon-20191002_181700-632:localhost:8800$1570043391316OJaBO:localhost:8800joinuQ]Q!sqkBzbHHJOTNWwynqV:localhost:8800@anon-20191002_181700-628:localhost:8800$1570043383307bhuDV:localhost:8800joinuQ]Q!qInWQPtNQfBFoVzUtP:localhost:8800@anon-20191002_181700-626:localhost:8800$1570043377301OraEa:localhost:8800joinuQ]Q!FZOLkaLbBpaibrbHZx:localhost:8800@anon-20191002_181700-625:localhost:8800$1570043372296yAiBq:localhost:8800joinuQ]Q!QxqzQoEBIZhmzHIGrl:localhost:8800@anon-20191002_181700-624:localhost:8800$1570043367291AEdax:localhost:8800joinuQ]Q!fDISaqNBhlOwherxSt:localhost:8800@anon-20191002_181700-623:localhost:8800$1570043362286KwXMK:localhost:8800joinQ]e!yAfsSyqpJWFnkXQFJL:localhost:8800@anon-20191002_181700-622:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUjoinu Q]Q!AYFqrmxwClFQlcTTYq:localhost:8800@anon-20191002_181700-620:localhost:8800$1570043351281XHPOP:localhost:8800joinu Q]Q!pHoEnhQYhwlbJXqKQE:localhost:8800@anon-20191002_181700-619:localhost:8800$1570043345275UDVPY:localhost:8800joine 1]Q!0:localhost:42455@anon-20191002_181700-617:localhost:8800$1570043341273LsXNn:localhost:8800join "D f  5 S q <Znw]@astest-1-20191002_181700:localhost:8800@astest-1-20191002_181700:localhost:8800 astest-1-20191002_181700nv]@astest-0-20191002_181700:localhost:8800@astest-0-20191002_181700:localhost:8800 astest-0-20191002_181700nu]@anon-20191002_181700-832:localhost:8800@anon-20191002_181700-832:localhost:8800 anon-20191002_181700-832nt]@anon-20191002_181700-831:localhost:8800@anon-20191002_181700-831:localhost:8800 anon-20191002_181700-831ns]@anon-20191002_181700-797:localhost:8800@anon-20191002_181700-797:localhost:8800 anon-20191002_181700-797nq]@anon-20191002_181700-793:localhost:8800@anon-20191002_181700-793:localhost:8800 anon-20191002_181700-793np]@anon-20191002_181700-791:localhost:8800@anon-20191002_181700-791:localhost:8800 anon-20191002_181700-791no]@anon-20191002_181700-789:localhost:8800@anon-20191002_181700-789:localhost:8800 anon-20191002_181700-789nn]@anon-20191002_181700-787:localhost:8800@anon-20191002_181700-787:localhost:8800 anon-20191002_181700-787nm]@anon-20191002_181700-768:localhost:8800@anon-20191002_181700-768:localhost:8800 anon-20191002_181700-768nl]@anon-20191002_181700-767:localhost:8800@anon-20191002_181700-767:localhost:8800 anon-20191002_181700-767nk]@anon-20191002_181700-763:localhost:8800@anon-20191002_181700-763:localhost:8800 anon-20191002_181700-763nj]@anon-20191002_181700-762:localhost:8800@anon-20191002_181700-762:localhost:8800 anon-20191002_181700-762ni]@anon-20191002_181700-758:localhost:8800@anon-20191002_181700-758:localhost:8800 anon-20191002_181700-758nh]@anon-20191002_181700-757:localhost:8800@anon-20191002_181700-757:localhost:8800 anon-20191002_181700-757ng]@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-755:localhost:8800 anon-20191002_181700-755jf]@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-754:localhost:8800 FKOCVHIRTCIPSWJBHVGOje]@anon-20191002_181700-752:localhost:8800@anon-20191002_181700-752:localhost:8800 JYNGOISMLXVDWPDRVNCSnd]@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-751:localhost:8800 anon-20191002_181700-751jc]@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-750:localhost:8800 BABSIRRXCUHNIFZHYFMBnb]@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-747:localhost:8800 anon-20191002_181700-747ja]@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-746:localhost:8800 QLDSIOXVCTASBPKYRNHInr]@anon-20191002_181700-795:localhost:8800@anon-20191002_181700-795:localhost:8800 anon-20191002_181700-795  vgeQay$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3855}{"auth_events": ["$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI"], "prev_events": ["$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI"], "type": "m.room.member", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-797", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-797:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044084304, "hashes": {"sha256": "M4qUIXW367PES3bFuQRg50qYx6YS/BA5h15Yyrh39lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F6St9pNFaEBWjLCQX+97LZYqmQpkxaWZPOPH1hyhDXdVbvq9DZj+auQYMIl2SNElpgbkeAJQQqv0PMIYyTmhBQ"}}, "unsigned": {"age_ts": 1570044084304}}ifeQa_$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3854}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-797:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044083438, "hashes": {"sha256": "0jxqEB3v0/TSGUCItNRUzc2rNcfEUXfP99ZvbuiiZGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kIf8/uObVREskIf4azWEnDTmORoYzLNf69jnW7JTDXQaXoVQdLeL0iE8aLUKwmQpq/PCmv5zs1/XwqQOuJzCDg"}}, "unsigned": {"age_ts": 1570044083438}}eeQa$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3853}{"auth_events": ["$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4", "$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY", "$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "prev_events": ["$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY"], "type": "m.room.history_visibility", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044080225, "hashes": {"sha256": "2xWZFwDiePlhpal5H6688sDXV2Uiz2uz0TVGtujiaaU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O8su4RlOSmrxc1xJZIGX2+SYCVbiDo9u8NSNuT09SS+m+GpIYQ22DKFuj9FdFmA/ZXUBuwNN+d9K27jgHU1JAQ"}}, "unsigned": {"age_ts": 1570044080225}}tdeQau$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3852}{"auth_events": ["$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4", "$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY", "$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "prev_events": ["$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4"], "type": "m.room.join_rules", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044079367, "hashes": {"sha256": "+scoVrf8FAXCGb7OSpga6AVu+4EJ7x15d92j5bnO7Lc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Lgn25CMP5gjc4ZbM+giNXsV+3BjVj+QUOSe4iOD7mxErcRcOEXk9O23fIqkGLSS07IuRywyb4rB6jav4LUbADg"}}, "unsigned": {"age_ts": 1570044079367}} EHf-Ii0Lh/[$I s <  ^ (  B f 6  w H  ] .8]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHOT8]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKUS8]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQERAo!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNTP8]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWAO8]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKSN8]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAXM8]!@anon-20191002_181700-828:localhost:8800VKQEDRMGFLL8]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSNK8]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCKJ8]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCRI8]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJH8]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFDG8]!@anon-20191002_181700-822:localhost:8800CCEPFILJPUF8]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGE8]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCLD8]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOLC8]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPVB6[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOs6[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEr8]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKBA8]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZC?8]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOS@8]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOH>8]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHS=8]!@anon-20191002_181700-810:localhost:8800RESWFULJEC;6[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFq8]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBV<8]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDM98]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJX:8]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVV7)A!@user-upper:localhost:8800XOXAYMRLKG'=!@spyglass:localhost:8800BUNJZHLDRS+A%@mycooluser:localhost:8800my_device_id.K!@chrtestuser-93-:localhost:8800HXQEHKTZDR .K!@chrtestuser-92-:localhost:8800CTWNGYMNFD.K!@chrtestuser-91-:localhost:8800XTTHVJFCAE .K!@chrtestuser-64-:localhost:8800WQBPBXVRII .K!@chrtestuser-63-:localhost:8800DYMSSHFRND.K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS.K!@chrtestuser-39-:localhost:8800HQOBQJZUDV.K!@chrtestuser-34-:localhost:8800JUJQTQDDTH.K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV/M!@chrtestuser-233-:localhost:8800AJJFHKXPHA/M!@chrtestuser-163-:localhost:8800FYFIWVYQAG/M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ/M!@chrtestuser-124-:localhost:8800BIQFYVWLZN /M!@chrtestuser-123-:localhost:8800GABZLTWEEJ .K!@chrtestuser-10-:localhost:8800NPPZGPSUFO*C!@cas_user=21:localhost:8800BIHKGABDWPO7Y%@anon-20191002_181700-9:localhost:8800login_device$5Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQ#7[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMY6[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZ7[!@anon-20191002_181700-96:localhost:8800TASTZEHNVL6[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZT~6[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNB}6[!@anon-20191002_181700-91:localhost:8800UIADKEMPGA{6[!@anon-20191002_181700-90:localhost:8800BJDBLNAUER|3Y@anon-20191002_181700-8:localhost:8800device_2!3Y@anon-20191002_181700-8:localhost:8800device_1"5Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJOD 6[!@anon-20191002_181700-89:localhost:8800OFESILMBJHy6[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDIz6[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZw6[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWx6[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVu6[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENv6[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUt \ Z  j  |64IS %e'Q ]$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4om.room.member!QWLJZmJqjWZjVOjdYF:localhost:8800mLmM"@astest-1-20191002_181700:localhost:8800,$e?Q ]$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsm.room.history_visibility!QWLJZmJqjWZjVOjdYF:localhost:8800mHmI@anon-20191002_181700-832:localhost:8800$#e/Q ]$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8m.room.join_rules!QWLJZmJqjWZjVOjdYF:localhost:8800mE1mF@anon-20191002_181700-832:localhost:8800&"e3Q ]$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624m.room.power_levels!QWLJZmJqjWZjVOjdYF:localhost:8800mBQmC@anon-20191002_181700-832:localhost:8800 !e'Q ]$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Ym.room.member!QWLJZmJqjWZjVOjdYF:localhost:8800m?m@@anon-20191002_181700-832:localhost:8800  e'Q  ]$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUm.room.create!QWLJZmJqjWZjVOjdYF:localhost:8800m<m=@anon-20191002_181700-832:localhost:8800!e)Q ]$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycm.room.message!ZWANpHlizyLrUiVvAm:localhost:8800m7qm7w@astest-0-20191002_181700:localhost:8800 e'Q ]$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wm.room.member!ZWANpHlizyLrUiVvAm:localhost:8800m2 m3,@astest-0-20191002_181700:localhost:8800,e?Q ]$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwm.room.history_visibility!ZWANpHlizyLrUiVvAm:localhost:8800m-Im/@anon-20191002_181700-832:localhost:8800$e/Q ]$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIm.room.join_rules!ZWANpHlizyLrUiVvAm:localhost:8800m*m+&@anon-20191002_181700-832:localhost:8800&e3Q ]$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4m.room.power_levels!ZWANpHlizyLrUiVvAm:localhost:8800m%\m(@anon-20191002_181700-832:localhost:8800 e'Q ]$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8m.room.member!ZWANpHlizyLrUiVvAm:localhost:8800m"Gm"@anon-20191002_181700-832:localhost:8800 e'Q  ]$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUm.room.create!ZWANpHlizyLrUiVvAm:localhost:8800mm @anon-20191002_181700-832:localhost:8800e)Q ?$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUm.room.aliases!TkluVzxeeCbMtbFWWS:localhost:8800m1m@as-user-1:localhost:8800,e?Q ]$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMm.room.history_visibility!TkluVzxeeCbMtbFWWS:localhost:8800m m@anon-20191002_181700-831:localhost:8800$e/Q ]$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQm.room.join_rules!TkluVzxeeCbMtbFWWS:localhost:8800m m @anon-20191002_181700-831:localhost:8800&e3Q ]$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEm.room.power_levels!TkluVzxeeCbMtbFWWS:localhost:8800mVm@anon-20191002_181700-831:localhost:8800 e'Q ]$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwm.room.member!TkluVzxeeCbMtbFWWS:localhost:8800m~m@anon-20191002_181700-831:localhost:8800 e'Q  ]$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsm.room.create!TkluVzxeeCbMtbFWWS:localhost:8800m)m@anon-20191002_181700-831:localhost:8800,e?Q ]$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsm.room.history_visibility!ELBgBaMSIMNkjFSumH:localhost:8800mm@anon-20191002_181700-797:localhost:8800$e/Q ]$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAm.room.join_rules!ELBgBaMSIMNkjFSumH:localhost:8800mm@anon-20191002_181700-797:localhost:8800&e3Q ]$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zgm.room.power_levels!ELBgBaMSIMNkjFSumH:localhost:8800mm@anon-20191002_181700-797:localhost:8800 e'Q ]$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcm.room.member!ELBgBaMSIMNkjFSumH:localhost:8800mPm뀽@anon-20191002_181700-797:localhost:8800 o- 8 f  $ LW\ TeQ']$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800joinmSeQ? $XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibilityeReQ/ $Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rulesgQeQ3 $jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels PeQ']$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800joinaOeQ' $NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create NeQ']$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800joinmMeQ? $e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibilityeLeQ/ $4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rulesgKeQ3 $n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels JeQ']$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800joinaIeQ' $ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800m.room.createpHeQ))$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800mGeQ? $8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibilityeFeQ/ $-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rulesgEeQ3 $P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels DeQ']$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800joinaCeQ' $CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800m.room.createmBeQ? $Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibilityeAeQ/ $IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rulesg@eQ3 $S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels ?eQ']$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800join  4 h 6jfa[a@anon-20191002_181700-82:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECg127.0.0.1Dd]c@anon-20191002_181700-829:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQo127.0.0.1d]c@anon-20191002_181700-828:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtZOmJ5Y0BrQV86NX5ZbTAKMDAyZnNpZ25hdHVyZSAVKP_9ut80aKox6QESvRUFw_E8HKAsMRDzBJPjll0F7wo127.0.0.1d]c@anon-20191002_181700-827:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2Bwo127.0.0.1d]c@anon-20191002_181700-826:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgo127.0.0.1d]c@anon-20191002_181700-825:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6go127.0.0.1d]c@anon-20191002_181700-823:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAo127.0.0.1d]c@anon-20191002_181700-822:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32wo127.0.0.1d]c@anon-20191002_181700-821:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAo127.0.0.1d]c@anon-20191002_181700-820:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgo127.0.0.1  ikeQa_$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3859}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-831:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044117033, "hashes": {"sha256": "Zw3usQx6oKr5fuSkPJezspNti7OHUR5n+RaTvXaUGb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FYEck54rd2h4sPRXkJsfTW7hOeg9bLMRh8k2PSPsljf5oycZ+NfuVTqMNJO6coPG0t9+1uoQD69kRFlDl2xVCg"}}, "unsigned": {"age_ts": 1570044117033}}jeQa$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3858}{"auth_events": ["$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg", "$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI", "$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "prev_events": ["$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA"], "type": "m.room.history_visibility", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044086749, "hashes": {"sha256": "DmnlWQdXnqnuq/Yr8gfBiLc7cMe0qD2lfFq8aHOlmK0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NWVGCXqrSvA92QvakBDGibuxswtvPY9bu/jcwG6+bHj8FOlupAzGHpD43L2u8xylKWexs/nGiAx9jj/HuFBwBg"}}, "unsigned": {"age_ts": 1570044086749}}tieQau$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3857}{"auth_events": ["$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg", "$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI", "$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "prev_events": ["$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg"], "type": "m.room.join_rules", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044086040, "hashes": {"sha256": "sLUibHU6j5RdDw3iF2gYdkrePNGVylcUuV4wm4NqK0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6o94BIzAxlF5/KCcH+hwvAKXOGQXydhjGhdQDFFFklDZmr9RYDMLFcBml1CeDlCuP9MMRUEkQsx+aKdcQE98Cg"}}, "unsigned": {"age_ts": 1570044086040}}kheQac$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3856}{"auth_events": ["$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI", "$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "prev_events": ["$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "type": "m.room.power_levels", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"users": {"@anon-20191002_181700-797:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044084969, "hashes": {"sha256": "TblHQI/CnTOeVDrawJE4Cc6wxu8ZSOaIWeVffrBtjXw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dLNnRumS1vgdB6fzWyUSF9Roph4YanaPiXnmZsn7mcmlSE/HjbaurqSI6EWls/fex+iAoxdNFjcxLiZ/+vnUDg"}}, "unsigned": {"age_ts": 1570044084969}} IrO8H+ z _ < % t 5  g L )  x a "  q T 9 eNw8H+>'] m.room.member@astest-1-20191002_181700:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-832:localhost:8800 '  m.room.create >'] m.room.member@astest-0-20191002_181700:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-832:localhost:8800 '  m.room.create %)) m.room.aliaseslocalhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-831:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-797:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-795:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-793:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-791:localhost:8800 ~'  m.room.create }"?  m.room.history_visibility |/  m.room.join_rules {3  m.room.power_levels z>'] m.room.member@anon-20191002_181700-791:localhost:8800 y'  m.room.create x"?  m.room.history_visibility w/  m.room.join_rules v3  m.room.power_levels u>'] m.room.member@anon-20191002_181700-789:localhost:8800 t'  m.room.create s"?  m.room.history_visibility r/  m.room.join_rules q3  m.room.power_levels p>'] m.room.member@anon-20191002_181700-787:localhost:8800 o'  m.room.create n"?  m.room.history_visibility m/  m.room.join_rules l3  m.room.power_levels k>'] m.room.member@anon-20191002_181700-768:localhost:8800 j'  m.room.create i"?  m.room.history_visibility h/  m.room.join_rules g3  m.room.power_levels f>'] m.room.member@anon-20191002_181700-767:localhost:8800 e'  m.room.create d"?  m.room.history_visibility c/  m.room.join_rules b3  m.room.power_levels a>'] m.room.member@anon-20191002_181700-763:localhost:8800 `'  m.room.create _"?  m.room.history_visibility ^/  m.room.join_rules ]3  m.room.power_levels \>'] m.room.member@anon-20191002_181700-762:localhost:8800 ['  m.room.create Z = * T~=gg]!c @anon-20191002_181700-809:localhost:8800FIWEAYAHBVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgog]!c @anon-20191002_181700-810:localhost:8800RESWFULJECMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAog]!c @anon-20191002_181700-807:localhost:8800PRZHLWPXJXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-Qog~]!c@anon-20191002_181700-808:localhost:8800JCKLBLRDDMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQog}]!c@anon-20191002_181700-805:localhost:8800BNRHSJKYRWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQog|]!c@anon-20191002_181700-806:localhost:8800HOBYWJEDVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAog{]!c@anon-20191002_181700-803:localhost:8800PRYHWWCHCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAogz]!c@anon-20191002_181700-804:localhost:8800VJFGXBTXXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8Vvkswogy]!c@anon-20191002_181700-801:localhost:8800MRLZAOHJUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAo 2 0 @ P ` peup(q2<4 ] @astest-1-20191002_181700:localhost:8800]AS-1u3 ]@anon-20191002_181700-832:localhost:8800$2b$04$BfzYUVnEkTIE0kDCYvqCAuCMj4zu/OwMlfot8icDjF9tiuBL7skH6]<2 ] @astest-0-20191002_181700:localhost:8800]AS-1E1 o @astest-01create-1-20191002_181700:localhost:8800]AS-1B0 q @_astest-01create-0-20191002_181700:localhost:8800]E/ o @astest-01create-0-20191002_181700:localhost:8800]AS-1u. ]@anon-20191002_181700-831:localhost:8800$2b$04$cxj0H2ksyxHFN59bIziPK.BGtTfa67z7jwXiBq2U5xqFVGm4W4qYu]u- ]@anon-20191002_181700-830:localhost:8800$2b$04$.HFU8TtoUHoNcnp9FsgdaOE8yk4l2ZbvH/x3ij39e5hGYag8f.eeS]u, ]@anon-20191002_181700-829:localhost:8800$2b$04$BsdbVE5EdzQm6YymlnhuMOLjiSNmCpDaMLORbcpnBVhaJcX3Q46/S]8+ ] @anon-20191002_181700-828:localhost:8800]u* ]@anon-20191002_181700-827:localhost:8800$2b$04$MefZn0kAFjgF4/H8DjiUHOXRwGI02Odg2nn9pJshmUyaxcS1DzwA.]u) ]@anon-20191002_181700-826:localhost:8800$2b$04$qUD1Jq51Wi4JxI134zt5YOewmjw2c2Mdg89A.WZjc3vQMjxYK1o1q]u( ]@anon-20191002_181700-825:localhost:8800$2b$04$vtUMxfuUGyqXlnftlGYsYe4b2rpaNDIU04SqhJ6y618rLjEYbh5vS]u' ] @anon-20191002_181700-823:localhost:8800$2b$04$UwZPC7WnT4t83g.vY3aouOE6fpHMUuVXkgBFt36hUGCp9Butq4ya2]u& ] @anon-20191002_181700-821:localhost:8800$2b$04$mnwKry0XBL4ZmC29jaOINORPwCsEA5K4JtuJZQBI2BOIpYYgaQ6dG]u% ]@anon-20191002_181700-822:localhost:8800$2b$04$bwnJSkwLIIijIKLREVrtOOUiPDm3qhhySh.UZAjVzbGdB4sOkxub.]u$ ] @anon-20191002_181700-819:localhost:8800$2b$04$7S98nFwV5HCzDOOAqV39IOjSec2XljG4igY.1IEaGENsr28N75S22]u# ]@anon-20191002_181700-820:localhost:8800$2b$04$xJUcUkmj4u4e.EztpMzCXuSQE2Y.YVqohic5o84VNCj1rRLs1qT7S]u" ] @anon-20191002_181700-818:localhost:8800$2b$04$8kIgaoMhqDmFfQ0FsoJQneAQfukzojPfVBe475lgdBJWTMMXXPzOi]u! ] @anon-20191002_181700-815:localhost:8800$2b$04$PcXDdcJ/4kxOLrmtwVIvVuvPB.WpVIi.VZ9/3EHOzMWK6bOYhBlXK]u ]@anon-20191002_181700-816:localhost:8800$2b$04$HXAiv0nSq67TfliI2hVf.O.MyQ9ozhxSpWuhDEpVi3k1m1HYrEWA6]u ] @anon-20191002_181700-813:localhost:8800$2b$04$flsl554RdIV1fZkNKstZXettLuYZvMsHcO9b0p.8ZtQbQ6yQaa26O]u ]@anon-20191002_181700-814:localhost:8800$2b$04$G3EGzPvbJiiWMpzWvge1.OV4gvVH/x8jLjbf9xa7We5X3EepS7lGO]u ] @anon-20191002_181700-812:localhost:8800$2b$04$l9Fswza4iUBgGdmEpAu2gOnrRIMYQIGf4CNGj5XO6.JtB1sSADC8K]u ] @anon-20191002_181700-811:localhost:8800$2b$04$s4gBFa3MiVdaHsdtIUDIj.al/3QFdV9xpRlx1QXfvyhMcJbHNWb/C]u ] @anon-20191002_181700-809:localhost:8800$2b$04$r7.bxS8dcmcH/c1uZyB0FezB1xM6eXfkLcCh55WMX9Ov0BQr.xOrW]u ]@anon-20191002_181700-810:localhost:8800$2b$04$14MBipDatVzsJo4zib/G7uyBdGRy5bwTDH52erDhgHrQQeGgeDcH6]u ] @anon-20191002_181700-807:localhost:8800$2b$04$usu9DEXWbAUlxlTVNgDOWOdIhi7Vo2QeUndLlu7GxX.vMKbOD89oG]u ]@anon-20191002_181700-808:localhost:8800$2b$04$Vak.aza6Cmfo2r9ndwgIW.zxnKcu9aRlbkB8hvp3Tzi3rHAv5lv2m]u ] @anon-20191002_181700-805:localhost:8800$2b$04$DrqtQKBl0eptnLGByJx3oeqNUhudPU8DzUbOyAg1aSvgAqZthFDO2] i gh5 4  i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_Ktwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44Fgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0Qpwo 8l D `8n]c!E@anon-20191002_181700-810:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAoRESWFULJEC127.0.0.1Perl + Net::Async::HTTP/0.44m m]c!E@anon-20191002_181700-809:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgoFIWEAYAHBV127.0.0.1Perl + Net::Async::HTTP/0.44m볳l]c!E@anon-20191002_181700-808:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQoJCKLBLRDDM127.0.0.1Perl + Net::Async::HTTP/0.44m밯k]c!E@anon-20191002_181700-807:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-QoPRZHLWPXJX127.0.0.1Perl + Net::Async::HTTP/0.44m뮆j]c!E@anon-20191002_181700-806:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAoHOBYWJEDVV127.0.0.1Perl + Net::Async::HTTP/0.44m몤i]c!E@anon-20191002_181700-805:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQoBNRHSJKYRW127.0.0.1Perl + Net::Async::HTTP/0.44mh]c!E@anon-20191002_181700-804:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8VvkswoVJFGXBTXXF127.0.0.1Perl + Net::Async::HTTP/0.44mJg]c!E@anon-20191002_181700-803:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAoPRYHWWCHCC127.0.0.1Perl + Net::Async::HTTP/0.44mf]c!E@anon-20191002_181700-802:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAoNFTDLWJQJR127.0.0.1Perl + Net::Async::HTTP/0.44m.e]c!E@anon-20191002_181700-801:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAoMRLZAOHJUO127.0.0.1Perl + Net::Async::HTTP/0.44m뚑 ~z v r n j c_[WSOKGCQ]e!QWLJZmJqjWZjVOjdYF:localhost:8800@anon-20191002_181700-832:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YjoinQ]e!ZWANpHlizyLrUiVvAm:localhost:8800@astest-0-20191002_181700:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wjoinQ]e!ZWANpHlizyLrUiVvAm:localhost:8800@anon-20191002_181700-832:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8joinQ]e!TkluVzxeeCbMtbFWWS:localhost:8800@anon-20191002_181700-831:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwjoinQ]e!ELBgBaMSIMNkjFSumH:localhost:8800@anon-20191002_181700-797:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcjoinQ]e!CKNftKKCaOCVUyYWNY:localhost:8800@anon-20191002_181700-795:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkjoinQ]e!cvXpMzcxNNhsNttxvt:localhost:8800@anon-20191002_181700-793:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQjoinQ]e!jlGSdNttccYxjfLkwW:localhost:8800@anon-20191002_181700-791:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFojoin~Q]e!ZNIjCvcWhgcwskanjT:localhost:8800@anon-20191002_181700-791:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAjoin}Q]e!NJdkYMskQwIpIWlWkn:localhost:8800@anon-20191002_181700-789:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewjoin|Q]e!jGQNGXehugtTvjUGKI:localhost:8800@anon-20191002_181700-787:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkjoin{Q]e!VNdqhtoDkyMoQdMTtM:localhost:8800@anon-20191002_181700-768:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwjoinzQ]e!ulbQzxdPXzuvNoqqgU:localhost:8800@anon-20191002_181700-767:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAjoinyQ]e!pTvdDtkgovsIdAdxCm:localhost:8800@anon-20191002_181700-763:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEjoinxQ]e!vxEMWYTUdzvLyVZNzJ:localhost:8800@anon-20191002_181700-762:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cjoinwQ]e!CAGaRyRvrohDRBsrWH:localhost:8800@anon-20191002_181700-758:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkjoinvQ]e!hNCwypIzdDZDVmCEfd:localhost:8800@anon-20191002_181700-757:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08joinuQ]e!eZjhYVNpwdogVDKHCk:localhost:8800@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQinvitetQ]e!eZjhYVNpwdogVDKHCk:localhost:8800@anon-20191002_181700-754:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0joinsQ]e!sBcwyPoXKgnSGVTjNR:localhost:8800@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8joinrQ]e!sBcwyPoXKgnSGVTjNR:localhost:8800@anon-20191002_181700-754:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawjoinqQ]e!WgXzOXLTeqaGfiDFhL:localhost:8800@anon-20191002_181700-752:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsjoinpQ]e!LFBhoxJpmBqFrwEzGP:localhost:8800@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgjoinoQ]e!LFBhoxJpmBqFrwEzGP:localhost:8800@anon-20191002_181700-750:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIjoinnQ]e!URpLZLuBfVcfHVTBGS:localhost:8800@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywjoinmQ]e!URpLZLuBfVcfHVTBGS:localhost:8800@anon-20191002_181700-746:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IjoinlQ]e!YaLuQzmJKSMTSFEqjO:localhost:8800@anon-20191002_181700-744:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUojoinkQ]e!cOFSwLSkxZECJMvjjZ:localhost:8800@anon-20191002_181700-743:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegojoinjQ]e!cOFSwLSkxZECJMvjjZ:localhost:8800@anon-20191002_181700-742:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0joiniQ]e!eGEEtFXUXuZDImkeql:localhost:8800@anon-20191002_181700-736:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcjoin :>| Y 6 r  K $`:vP*f@| `c] +__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800join{}`c] +__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800join{}`c] +__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800join{}`c] +__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800join{}`c] +__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800join{}`c] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800join{}ac]+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800leave{}`c] +__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800join{}ac]+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800leave{}`c] +__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800join{}` c]+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800join{}` c] +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800join{}` c] +__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800join{}_ a] +__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800join{}_ a] +__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800join{}_a] +__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800join{}_a] +__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800join{}_a] +__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800join{}_a] +__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800join{}_a] +__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800join{}_a] +__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800join{}_a] +__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800join{}_a] +__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800join{}  D  Z 4 p J.j$`:`3c] +__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:8800join{}`2c] +__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:8800join{}`1c]+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:8800join{}`0c] +__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800join{}`/c] +__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800join{}`.c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800join{}`-c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800join{}`,c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800join{}`'c] +__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800join{}`&c] +__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800join{}`%c] +__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800join{}`$c] +__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800join{}`#c]+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800join{}`"c] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800join{}`!c] +__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800join{}` c] +__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800join{}`c] +__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800join{}`c] +__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800join{}`c] +__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800join{}`c] +__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800join{}`c] +__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800join{}`c] +__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800join{}`c] +__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800join{}`c] +__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800join{}`+c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800join{}`*c] +__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800join{}`)c] +__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800join{}O(c]i+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800invite{"profile": {"name": "Test Group", "avatar_url": null}, "inviter": "@anon-20191002_181700-809:localhost:8800"} 2j8l8 l :  QT ^ 4 b 9  h =  l C 4]@astest-1-20191002_181700:localhost:8800m2]@astest-1-20191002_181700:localhost:8800a4]@astest-0-20191002_181700:localhost:8800m2]@astest-0-20191002_181700:localhost:8800a%?@as-user-1:localhost:8800m~;o@astest-01create-1-20191002_181700:localhost:8800a};o@astest-01create-0-20191002_181700:localhost:8800a{%A@user-upper:localhost:8800m#A@user-upper:localhost:8800a!=@spyglass:localhost:8800a %A@mycooluser:localhost:8800m#A@mycooluser:localhost:8800a(K@chrtestuser-93-:localhost:8800a*K@chrtestuser-92-:localhost:8800m(K@chrtestuser-92-:localhost:8800a(K@chrtestuser-91-:localhost:8800a *K@chrtestuser-64-:localhost:8800m(K@chrtestuser-64-:localhost:8800a *K@chrtestuser-63-:localhost:8800m(K@chrtestuser-63-:localhost:8800a*K@chrtestuser-58-:localhost:8800m(K@chrtestuser-58-:localhost:8800a(K@chrtestuser-39-:localhost:8800a*K@chrtestuser-34-:localhost:8800m (K@chrtestuser-34-:localhost:8800a*K@chrtestuser-33-:localhost:8800m (K@chrtestuser-33-:localhost:8800a)M@chrtestuser-233-:localhost:8800a)M@chrtestuser-163-:localhost:8800a)M@chrtestuser-125-:localhost:8800a)M@chrtestuser-124-:localhost:8800a)M@chrtestuser-123-:localhost:8800a(K@chrtestuser-10-:localhost:8800a$C@cas_user=21:localhost:8800a`/Y@anon-20191002_181700-9:localhost:8800a&3[@anon-20191002_181700-99:localhost:8800m1[@anon-20191002_181700-99:localhost:8800a3[@anon-20191002_181700-97:localhost:8800m1[@anon-20191002_181700-97:localhost:8800a3[@anon-20191002_181700-96:localhost:8800m1[@anon-20191002_181700-96:localhost:8800a3[@anon-20191002_181700-95:localhost:8800m1[@anon-20191002_181700-95:localhost:8800a3[@anon-20191002_181700-93:localhost:8800m1[@anon-20191002_181700-93:localhost:8800a3[@anon-20191002_181700-91:localhost:8800m1[@anon-20191002_181700-91:localhost:8800a3[@anon-20191002_181700-90:localhost:8800m1[@anon-20191002_181700-90:localhost:8800a/Y@anon-20191002_181700-8:localhost:8800a%  : t K)d]c@anon-20191002_181700-832:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngo127.0.0.1d]c@anon-20191002_181700-831:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwo127.0.0.1^Y]@anon-20191002_181700-8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYK127.0.0.1a[a@anon-20191002_181700-89:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCg127.0.0.1Ja[a@anon-20191002_181700-88:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCg127.0.0.1Ka[a@anon-20191002_181700-87:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8Cg127.0.0.1Ia[a@anon-20191002_181700-86:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30Cg127.0.0.1Ha[a@anon-20191002_181700-85:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCg127.0.0.1Ga[a@anon-20191002_181700-84:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3Cg127.0.0.1Fa[a@anon-20191002_181700-83:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCg127.0.0.1E 8l D `8x]c!E@anon-20191002_181700-821:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAoLMJVQYBCFD127.0.0.1Perl + Net::Async::HTTP/0.44mߑw]c!E@anon-20191002_181700-820:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgoLLRZDHKYCL127.0.0.1Perl + Net::Async::HTTP/0.44m^v]c!E@anon-20191002_181700-819:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8QoZSSFHJTFIG127.0.0.1Perl + Net::Async::HTTP/0.44mu]c!E@anon-20191002_181700-818:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgoFQFDWYIMOL127.0.0.1Perl + Net::Async::HTTP/0.44mt]c!E@anon-20191002_181700-816:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4woPQOEGOAQKB127.0.0.1Perl + Net::Async::HTTP/0.44m΃s]c!E@anon-20191002_181700-815:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0QpwoHJUZHQSZPV127.0.0.1Perl + Net::Async::HTTP/0.44mɕr]c!E@anon-20191002_181700-814:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44FgoVHWGFZXPZC127.0.0.1Perl + Net::Async::HTTP/0.44mq]c!E@anon-20191002_181700-813:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgoVHZZXIJGOS127.0.0.1Perl + Net::Async::HTTP/0.44mp]c!E@anon-20191002_181700-812:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQoNTGXHOAHOH127.0.0.1Perl + Net::Async::HTTP/0.44mo]c!E@anon-20191002_181700-811:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_KtwgoHQYXFHPRHS127.0.0.1Perl + Net::Async::HTTP/0.44m@ == * T~gg]!c @anon-20191002_181700-812:localhost:8800NTGXHOAHOHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQog]!c @anon-20191002_181700-811:localhost:8800HQYXFHPRHSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_Ktwgog ]!c@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8Qog ]!c@anon-20191002_181700-820:localhost:8800LLRZDHKYCLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgog]!c@anon-20191002_181700-818:localhost:8800FQFDWYIMOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgog]!c@anon-20191002_181700-815:localhost:8800HJUZHQSZPVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0Qpwog]!c@anon-20191002_181700-816:localhost:8800PQOEGOAQKBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4wog]!c@anon-20191002_181700-813:localhost:8800VHZZXIJGOSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgog]!c@anon-20191002_181700-814:localhost:8800VHWGFZXPZCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44Fgo  QI A 8 - { " p e ZOD9.|#qfX]c@anon-20191002_181700-783:localhost:8800+__anon__-20191002_181700-19:localhost:8800X]c@anon-20191002_181700-782:localhost:8800+__anon__-20191002_181700-18:localhost:8800X]c@anon-20191002_181700-781:localhost:8800+__anon__-20191002_181700-17:localhost:8800X]c@anon-20191002_181700-779:localhost:8800+__anon__-20191002_181700-16:localhost:8800X]c@anon-20191002_181700-777:localhost:8800+__anon__-20191002_181700-15:localhost:8800X]c@anon-20191002_181700-775:localhost:8800+__anon__-20191002_181700-14:localhost:8800X]c@anon-20191002_181700-774:localhost:8800+__anon__-20191002_181700-13:localhost:8800X]c@anon-20191002_181700-773:localhost:8800+__anon__-20191002_181700-13:localhost:8800X]c@anon-20191002_181700-772:localhost:8800+__anon__-20191002_181700-12:localhost:8800X]c@anon-20191002_181700-771:localhost:8800+__anon__-20191002_181700-12:localhost:8800X]c@anon-20191002_181700-770:localhost:8800+__anon__-20191002_181700-11:localhost:8800 X]c@anon-20191002_181700-769:localhost:8800+__anon__-20191002_181700-11:localhost:8800 X]c@anon-20191002_181700-768:localhost:8800+__anon__-20191002_181700-10:localhost:8800 W]a@anon-20191002_181700-767:localhost:8800+__anon__-20191002_181700-9:localhost:8800 W]a@anon-20191002_181700-766:localhost:8800+__anon__-20191002_181700-8:localhost:8800 W]a@anon-20191002_181700-764:localhost:8800+__anon__-20191002_181700-7:localhost:8800W]a@anon-20191002_181700-763:localhost:8800+__anon__-20191002_181700-6:localhost:8800W]a@anon-20191002_181700-762:localhost:8800+__anon__-20191002_181700-5:localhost:8800W]a@anon-20191002_181700-761:localhost:8800+__anon__-20191002_181700-4:localhost:8800W]a@anon-20191002_181700-759:localhost:8800+__anon__-20191002_181700-3:localhost:8800W]a@anon-20191002_181700-758:localhost:8800+__anon__-20191002_181700-2:localhost:8800W]a@anon-20191002_181700-757:localhost:8800+__anon__-20191002_181700-1:localhost:8800V]a @anon-20191002_181700-756:localhost:8800+__anon__-20191002_181700-0:localhost:8800 NC 8 - { " p  e ZOX]c@anon-20191002_181700-823:localhost:8800+__anon__-20191002_181700-42:localhost:88003X]c@anon-20191002_181700-821:localhost:8800+__anon__-20191002_181700-41:localhost:88002X]c@anon-20191002_181700-820:localhost:8800+__anon__-20191002_181700-40:localhost:88001X]c@anon-20191002_181700-819:localhost:8800+__anon__-20191002_181700-40:localhost:88000X]c@anon-20191002_181700-818:localhost:8800+__anon__-20191002_181700-39:localhost:8800/X]c@anon-20191002_181700-816:localhost:8800+__anon__-20191002_181700-38:localhost:8800.X]c@anon-20191002_181700-815:localhost:8800+__anon__-20191002_181700-38:localhost:8800-X]c@anon-20191002_181700-814:localhost:8800+__anon__-20191002_181700-37:localhost:8800,X]c@anon-20191002_181700-813:localhost:8800+__anon__-20191002_181700-37:localhost:8800+X]c@anon-20191002_181700-812:localhost:8800+__anon__-20191002_181700-36:localhost:8800*X]c@anon-20191002_181700-811:localhost:8800+__anon__-20191002_181700-35:localhost:8800)X]c@anon-20191002_181700-810:localhost:8800+__anon__-20191002_181700-34:localhost:8800(X]c@anon-20191002_181700-809:localhost:8800+__anon__-20191002_181700-34:localhost:8800'X]c@anon-20191002_181700-807:localhost:8800+__anon__-20191002_181700-33:localhost:8800&X]c@anon-20191002_181700-805:localhost:8800+__anon__-20191002_181700-32:localhost:8800%X]c@anon-20191002_181700-803:localhost:8800+__anon__-20191002_181700-31:localhost:8800$X]c@anon-20191002_181700-802:localhost:8800+__anon__-20191002_181700-30:localhost:8800#X]c@anon-20191002_181700-801:localhost:8800+__anon__-20191002_181700-30:localhost:8800"X]c@anon-20191002_181700-799:localhost:8800+__anon__-20191002_181700-29:localhost:8800!X]c@anon-20191002_181700-797:localhost:8800+__anon__-20191002_181700-28:localhost:8800 X]c@anon-20191002_181700-795:localhost:8800+__anon__-20191002_181700-27:localhost:8800X]c@anon-20191002_181700-793:localhost:8800+__anon__-20191002_181700-26:localhost:8800X]c@anon-20191002_181700-791:localhost:8800+__anon__-20191002_181700-25:localhost:8800X]c@anon-20191002_181700-789:localhost:8800+__anon__-20191002_181700-24:localhost:8800X]c@anon-20191002_181700-787:localhost:8800+__anon__-20191002_181700-23:localhost:8800X]c@anon-20191002_181700-786:localhost:8800+__anon__-20191002_181700-22:localhost:8800X]c@anon-20191002_181700-785:localhost:8800+__anon__-20191002_181700-21:localhost:8800    i Q ;c]!W<+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:8800membership{"membership": "join", "content": {}} :c]!W;+__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:8800membership{"membership": "join", "content": {}} 9c]!W:+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:8800membership{"membership": "join", "content": {}} 8c]!W9+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800membership{"membership": "join", "content": {}} 7c]!W8+__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800membership{"membership": "join", "content": {}} 6c]!W7+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800membership{"membership": "join", "content": {}}p5c]!#6+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-815:localhost:8800"}} ,NC 8 , x  j  \ N@2~$pbTFX,c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800X+c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800X*c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800X)c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800X(c] +__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800X'c] +__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800X&c] +__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800X%c] +__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800X$c] +__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800X#c] +__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800X"c] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800X!c] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800X c] +__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800Xc] +__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800Xc] +__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800Xc] +__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800Xc] +__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800Xc] +__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800Xc] +__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800Xc] +__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800Xc] +__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800Xc] +__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800Xc] +__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800Xc] +__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800Xc] +__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800Xc] +__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800Xc] +__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800Xc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829Xc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800Xc] +__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800Xc] +__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800X c] +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800X c] +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800X c] +__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800W a] +__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800W a] +__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800Wa] +__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800Wa] +__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800Wa] +__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800Wa] +__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800Wa] +__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800Wa] +__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800Wa] +__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800Wa] +__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800  L> X3c] +__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829X2c] +__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:8800X1c] +__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:8800X0c] +__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:8800X/c] +__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800X.c] +__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800X-c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829 D 8 - { " p eQ ZOD9.|#qfI A Xc]+__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800Xc]+__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800Xc]+__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800Xc]+__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800Xc]+__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800Xc]+__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800Xc]+__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800Xc]+__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800Xc]+__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800Xc]+__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800Xc]+__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800Xc]+__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800Xc]+__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800Xc]+__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800Xc]+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829Xc]+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800Xc]+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800Xc]+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800Xc]+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800 Xc]+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800 Xc]+__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800 Wa]+__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800Va] +__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800 OD 9 . | # r W  j bXc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:88293Xc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:88002Xc]+__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:88001Xc]+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:88000Xc]+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800/Wa]+__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800 Wa]+__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800 Wa]+__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800Wa]+__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800Wa]+__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800Wa]+__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800Wa]+__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800Xc]+__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800.Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829-Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800,Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800+Xc]+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800*Xc]+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800)Xc]+__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800(Xc]+__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800'Xc]+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800&Xc]+__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800%Xc]+__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800$Xc]+__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800#Xc]+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800"Xc]+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800!Wa]+__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800 ih5i 4 g 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2Bwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32wo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI4bSxaTlJReEJAUThUekoKMDAyZnNpZ25hdHVyZSBtwxrANKPmMKrh9kZ_GnYlwttEipOHV6mneSTCC8eKOwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgo -c( w <  P  d ) x =  Q e*Oy>?8T]!r@astest-1-20191002_181700:localhost:8800OYDJFJVTHO8S]!q@anon-20191002_181700-832:localhost:8800HFTRPYGIKU8R]!p@astest-0-20191002_181700:localhost:8800XUQOQEKIQEBQq!o@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZAPo!n@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNT8O]!m@anon-20191002_181700-831:localhost:8800XNGQHPEIWA8N]!l@anon-20191002_181700-830:localhost:8800ERVCXTVUKS8M]!k@anon-20191002_181700-829:localhost:8800XJTWYRZUAX8L]!j@anon-20191002_181700-828:localhost:8800VKQEDRMGFL8E]!b@anon-20191002_181700-819:localhost:8800ZSSFHJTFIG8D]!a@anon-20191002_181700-820:localhost:8800LLRZDHKYCL8C]!`@anon-20191002_181700-818:localhost:8800FQFDWYIMOL8B]!_@anon-20191002_181700-815:localhost:8800HJUZHQSZPV8A]!^@anon-20191002_181700-816:localhost:8800PQOEGOAQKB8@]!]@anon-20191002_181700-813:localhost:8800VHZZXIJGOS8?]!\@anon-20191002_181700-814:localhost:8800VHWGFZXPZC8>]![@anon-20191002_181700-812:localhost:8800NTGXHOAHOH8=]!Z@anon-20191002_181700-811:localhost:8800HQYXFHPRHS8<]!Y@anon-20191002_181700-809:localhost:8800FIWEAYAHBV8;]!X@anon-20191002_181700-810:localhost:8800RESWFULJEC8:]!W@anon-20191002_181700-807:localhost:8800PRZHLWPXJX89]!V@anon-20191002_181700-808:localhost:8800JCKLBLRDDM88]!U@anon-20191002_181700-805:localhost:8800BNRHSJKYRW87]!T@anon-20191002_181700-806:localhost:8800HOBYWJEDVV86]!S@anon-20191002_181700-803:localhost:8800PRYHWWCHCC85]!R@anon-20191002_181700-804:localhost:8800VJFGXBTXXF84]!Q@anon-20191002_181700-801:localhost:8800MRLZAOHJUO83]!P@anon-20191002_181700-802:localhost:8800NFTDLWJQJR82]!O@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ81]!N@anon-20191002_181700-800:localhost:8800PFQNMAUDJC80]!M@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ8/]!L@anon-20191002_181700-798:localhost:8800INQDOVATBT8.]!K@anon-20191002_181700-795:localhost:8800JVASIBBRVU8-]!J@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ8,]!I@anon-20191002_181700-793:localhost:8800AKRKGRHMWI8+]!H@anon-20191002_181700-794:localhost:8800HERKLRVCIJ8*]!G@anon-20191002_181700-791:localhost:8800WJMTFALHBS8)]!F@anon-20191002_181700-792:localhost:8800YSFSTXJXHU8(]!E@anon-20191002_181700-789:localhost:8800GKBQSBKKFX8K]!h@anon-20191002_181700-827:localhost:8800DCXRWYLYSN8J]!g@anon-20191002_181700-826:localhost:8800NTTIDMFUCK8I]!f@anon-20191002_181700-825:localhost:8800FCBTIUXJCR8H]!e@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJ8G]!d@anon-20191002_181700-821:localhost:8800LMJVQYBCFD8F]!c@anon-20191002_181700-822:localhost:8800CCEPFILJPU 8l D `8]c!E@anon-20191002_181700-832:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngoHFTRPYGIKU127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-831:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwoXNGQHPEIWA127.0.0.1Perl + Net::Async::HTTP/0.44m׃]c!E@anon-20191002_181700-830:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgoERVCXTVUKS127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-829:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQoXJTWYRZUAX127.0.0.1Perl + Net::Async::HTTP/0.44m~]c!E@anon-20191002_181700-828:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtZOmJ5Y0BrQV86NX5ZbTAKMDAyZnNpZ25hdHVyZSAVKP_9ut80aKox6QESvRUFw_E8HKAsMRDzBJPjll0F7woVKQEDRMGFL127.0.0.1Perl + Net::Async::HTTP/0.44m̃}]c!E@anon-20191002_181700-827:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2BwoDCXRWYLYSN127.0.0.1Perl + Net::Async::HTTP/0.44m|]c!E@anon-20191002_181700-826:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgoNTTIDMFUCK127.0.0.1Perl + Net::Async::HTTP/0.44mf{]c!E@anon-20191002_181700-825:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6goFCBTIUXJCR127.0.0.1Perl + Net::Async::HTTP/0.44m溃z]c!E@anon-20191002_181700-823:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAoZJPRRDUAYJ127.0.0.1Perl + Net::Async::HTTP/0.44mxy]c!E@anon-20191002_181700-822:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32woCCEPFILJPU127.0.0.1Perl + Net::Async::HTTP/0.44m ,$J][$I s <  ` * $ h 8  y J  _ 0 8]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHO8]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKU8]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQEAo!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNT8]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWA8]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKS)A!@user-upper:localhost:8800XOXAYMRLKG'=!@spyglass:localhost:8800BUNJZHLDRS+A%@mycooluser:localhost:8800my_device_id.K!@chrtestuser-93-:localhost:8800HXQEHKTZDR .K!@chrtestuser-92-:localhost:8800CTWNGYMNFD.K!@chrtestuser-91-:localhost:8800XTTHVJFCAE .K!@chrtestuser-64-:localhost:8800WQBPBXVRII .K!@chrtestuser-63-:localhost:8800DYMSSHFRND.K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS.K!@chrtestuser-39-:localhost:8800HQOBQJZUDV.K!@chrtestuser-34-:localhost:8800JUJQTQDDTH.K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV/M!@chrtestuser-233-:localhost:8800AJJFHKXPHA/M!@chrtestuser-163-:localhost:8800FYFIWVYQAG/M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ/M!@chrtestuser-124-:localhost:8800BIQFYVWLZN /M!@chrtestuser-123-:localhost:8800GABZLTWEEJ .K!@chrtestuser-10-:localhost:8800NPPZGPSUFO*C!@cas_user=21:localhost:8800BIHKGABDWPM7Y%@anon-20191002_181700-9:localhost:8800login_device$5Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQ#6[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYx6[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZv6[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLw6[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZTu6[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNBt6[!@anon-20191002_181700-91:localhost:8800UIADKEMPGAr6[!@anon-20191002_181700-90:localhost:8800BJDBLNAUERs3Y@anon-20191002_181700-8:localhost:8800device_2!3Y@anon-20191002_181700-8:localhost:8800device_1"5Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJOD 6[!@anon-20191002_181700-89:localhost:8800OFESILMBJHp6[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDIq6[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZn6[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWo6[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVl6[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENm6[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUk ; T~ *=;~q!} @_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NWNpZCB1c2VyX2lkID0gQF9hc3Rlc3QtMDFjcmVhdGUtMC0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBkOEdGK2hUQUl5Rzt3Ums6CjAwMmZzaWduYXR1cmUg-CanMzUXVM_nrXBr1DolihUkhdjrHy2fXncXv2KA26IK|o!{@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NGNpZCB1c2VyX2lkID0gQGFzdGVzdC0wMWNyZWF0ZS0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg3Vlk5RURBKk5wVUY1fmUKMDAyZnNpZ25hdHVyZSBnfFubw9NgLkbaicepY-N33O3DczkknCqPfyu2xJSnaQog]!c@anon-20191002_181700-831:localhost:8800XNGQHPEIWAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwog]!c@anon-20191002_181700-830:localhost:8800ERVCXTVUKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgog]!c@anon-20191002_181700-829:localhost:8800XJTWYRZUAXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQog]!c@anon-20191002_181700-825:localhost:8800FCBTIUXJCRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6gog ]!c@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAog ]!c@anon-20191002_181700-821:localhost:8800LMJVQYBCFDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAog ]!c@anon-20191002_181700-822:localhost:8800CCEPFILJPUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32wog]!c@anon-20191002_181700-827:localhost:8800DCXRWYLYSNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2Bwog]!c@anon-20191002_181700-826:localhost:8800NTTIDMFUCKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgo r : w 8d]c@astest-1-20191002_181700:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgo127.0.0.1a[a@anon-20191002_181700-95:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCg127.0.0.1Oa[a@anon-20191002_181700-93:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6Cg127.0.0.1Na[a@anon-20191002_181700-91:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCg127.0.0.1L==9 @spyglass:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCg127.0.0.1^Y]@anon-20191002_181700-9:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsK127.0.0.1a[a@anon-20191002_181700-99:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCg127.0.0.1Ra[a@anon-20191002_181700-97:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCg127.0.0.1Pa[a@anon-20191002_181700-96:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCg127.0.0.1Q %@B B  8 x8 F  N  W  _ !x?]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHOmKa?]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKUm?]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWAm?]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKSm?]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAXm?]!@anon-20191002_181700-828:localhost:8800VKQEDRMGFLm-=! @spyglass:localhost:8800BUNJZHLDRSmp<Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQmk=[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYm*R=[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZm+P=[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLmQQ=[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZTmO=[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNBmAN=[!@anon-20191002_181700-91:localhost:8800UIADKEMPGAmuIL=[!@anon-20191002_181700-90:localhost:8800BJDBLNAUERmM<Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJODm}(=[!@anon-20191002_181700-89:localhost:8800OFESILMBJHma+J=[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDImqK=[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZmYI=[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWm?H=[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVm,G=[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENmqF=[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUm ;E=[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOmD?]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSNm?]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCKmf?]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCRm?]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJmx?]!@anon-20191002_181700-822:localhost:8800CCEPFILJPUm?]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFDmߑ?]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCLm^=[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEm:C?]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGm?]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOLm?]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKBm?]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPVmɕ?]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZCm  oeQa$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3863}{"auth_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE", "$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs", "$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "prev_events": ["$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ"], "type": "m.room.history_visibility", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044120261, "hashes": {"sha256": "7FkgJVXarWNuSbBUZatENgK54TjX8zl9eTcizmOlte4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+eXmTNmhc9Z4SwanoY9GlOh9p8hzMAxEUP5pra0hl+78WhODOBmh26RxTmCTT6lEyJOBvfg76Bw/RjFSpRHLCA"}}, "unsigned": {"age_ts": 1570044120261}}tneQau$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3862}{"auth_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE", "$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs", "$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "prev_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE"], "type": "m.room.join_rules", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044119468, "hashes": {"sha256": "AUEX+bie6d8z8nSGQhqS3VkQhWN9RJcn6J99wXsxC2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dFgSSZegKVSK7beCRkTYjMjf95QJ0OmXfCr59VpRhCCzc0j6EEb3hDbUfT522gonCBsxQ1UIbeTq4x3R6E6MBg"}}, "unsigned": {"age_ts": 1570044119468}}kmeQac$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3861}{"auth_events": ["$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs", "$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "prev_events": ["$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "type": "m.room.power_levels", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"users": {"@anon-20191002_181700-831:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044118614, "hashes": {"sha256": "6hutDPEfcVzuscr2phTyxKvuSGPqNmcFzlSnipaDMtA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B1cDXBlsBI4KpOEsQjJFCxvyAbjGfvLCvHilBVYrisuENZPL+eVDOu0164oFD31JDfVq4l060sSy+scbzD/CBw"}}, "unsigned": {"age_ts": 1570044118614}}vleQay$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3860}{"auth_events": ["$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs"], "prev_events": ["$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs"], "type": "m.room.member", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-831", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-831:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044117886, "hashes": {"sha256": "Jtb8OLENWWziCo8FGXIJ7XmdTIrMwLWUgvgfHCZ2W/E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DjXImOInZzZDllJvmu8I8VJbPFfEr+ny6juBKkLQ7kOR/w/xSRwo94pYBgwfwTxRcnr7HlfclvRqGyqmg2ieBw"}}, "unsigned": {"age_ts": 1570044117886}} Ir H  4 q : ]5Q% !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topict<Q3 !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levelss^Q']!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800r^Q']!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800l:Q/ !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rulesoBQ? !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibilityp6Q' !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.createk?Q9 !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_aliasnEQ))!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800q<Q3 !UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levels}^Q']!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800z:Q/ !UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rulesBQ? !UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibility6Q' !UyLoIXmzVFwycmBUeh:localhost:8800m.room.createu?Q9 !UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_aliasEQ))!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800<Q3 !UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels^Q']!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800:Q/ !UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rulesBQ? !UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility6Q' !UaitDdkGDcwvRLJSvp:localhost:8800m.room.create<Q3 !UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels <^@ 9 ` % ~' :  D-yrGh-F~h! 6Q' !TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create~;^Q']!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800 K h<Q3 !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levelsRQ'E!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455 ^Q']!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800 ^Q']!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800 B-6Q' !YQATbgbLImCDamiDHC:localhost:8800m.room.create:Q/ !XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rules <Q3 !WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels6Q' !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.create BQ? !SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibility <Q3 !RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levelsd:Q/ !NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rules/G<Q3 !NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels 6Q' !MXhwoqNXvexeDDSOZT:localhost:8800m.room.create 26Q' !KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar)6Q' !KIHYKMzkRDrJwiywwz:localhost:8800m.room.create^Q']!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800^Q']!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800 <Q3 !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels^Q']!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829ZV<Q3 !FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levelsQ6Q' !EWkoFeckhXlNyjuIEB:localhost:8800m.room.create'^Q']!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800:Q/ !CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules:Q/ !BfEFIDBthhkweqfhir:localhost:8800m.room.encryption^Q']!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800 dF0|A { : U  k 0 O  H F ;Q3 !zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levels BQ? !yTQmLDAxZscWKLMSWh:localhost:8800m.room.history_visibility5Q' !wvnfKBSrUlfNmYoeil:localhost:8800m.room.createl <Q3 !wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levelsC^Q']!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800 ^Q']!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800 R<Q3 !taANXnGBZntAreRurn:localhost:8800m.room.power_levels ,>Q9 !sPWVGnipjiiWQpywNO:localhost:8800m.room.canonical_alias3W^Q']!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800p6Q' !qjijQBfMwsCPTVgKPm:localhost:8800m.room.create K 6Q' !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.create ]T<Q3 !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.power_levels ^Q']!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800~AQ? !kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibilityu <Q3 !kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels <Q3 !jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels^Q']!ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800<Q3 !hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels^Q']!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800P^Q']!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800c6Q' !eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create v6Q' !eJPTUgihvSwaOhIkrC:localhost:8800m.room.createt 5Q' !dUnULFLGtgaVdwHtnz:localhost:8800m.room.create| :Q/ !cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rules RQ'E!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455 `6Q' !awHAhLuEkavTGACcUW:localhost:8800m.room.create39Q/ !aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rulesz 'cj8q? w E  } K  Q  W % ] +c1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk\1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE#1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQX1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIc1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI>1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs 1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg i1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI 1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE }1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekc1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsq1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg .1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUd1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsX1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUD1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw ~ 0`8pH X 0  h @  x P ( ` 8  p H 'Q!WFHIeSFQyuugGeBFxW:localhost:8800M'Q!WFHIeSFQyuugGeBFxW:localhost:8800L'Q!WFHIeSFQyuugGeBFxW:localhost:8800K'Q!WFHIeSFQyuugGeBFxW:localhost:8800J'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VOhMAiLfKyTOZbmKGw:localhost:8800s'Q!VOhMAiLfKyTOZbmKGw:localhost:8800r'Q!VOhMAiLfKyTOZbmKGw:localhost:8800q'Q!VOhMAiLfKyTOZbmKGw:localhost:8800p'Q!VOhMAiLfKyTOZbmKGw:localhost:8800o'Q!VOhMAiLfKyTOZbmKGw:localhost:8800n'Q!VOhMAiLfKyTOZbmKGw:localhost:8800m'Q!VOhMAiLfKyTOZbmKGw:localhost:8800l'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VCSCNemqikJZiRtxrs:localhost:8829'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800 } { y w u sqomkigec~eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800~~eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800~}eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~|eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800~{eeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800~zeeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~yeeQ$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~xeeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800~weeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~veeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800~ueeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800~teeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~seeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800~reeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800~qeeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~peeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800~oeeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800~neeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~meeQ$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~leeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~keeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800~jeeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800~ieeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~heeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800~geeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800 E|u m e ] U MEeeQ$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800ׁeeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800āeeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:88001eeQ$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800eeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:88002eeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800eeQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800\eeQ$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800reeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800eeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800^eeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800yeeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800w  "E H j s v  cQ']e%!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4opbQ? e$!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibility$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMshaQ/ e#!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rules$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8j`Q3 e"!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 _Q']e!!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Yd^Q' e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU ]Q']e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wp\Q? e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibility$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwh[Q/ e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rules$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIjZQ3 e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 YQ']e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8dXQ' e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.create$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUsWQ))e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUpVQ? e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibility$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMhUQ/ e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rules$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ E|t l d \ T MEeeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800 weeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800!eeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800PeeQ$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800]eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800 QeeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800 3eeQ$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:88006eeQ$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800GeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800 2vHd6 Z .   S ' x@ A  | W 2 } Y 5 n-]@astest-1-20191002_181700:localhost:88004-]@anon-20191002_181700-832:localhost:88003-]@astest-0-20191002_181700:localhost:88002A@user-upper:localhost:8800=@spyglass:localhost:8800A@mycooluser:localhost:8800#K@chrtestuser-93-:localhost:8800 #K@chrtestuser-92-:localhost:8800#K@chrtestuser-91-:localhost:8800 #K@chrtestuser-64-:localhost:8800 #K@chrtestuser-63-:localhost:8800#K@chrtestuser-58-:localhost:8800#K@chrtestuser-39-:localhost:8800#K@chrtestuser-34-:localhost:8800#K@chrtestuser-33-:localhost:8800$M@chrtestuser-233-:localhost:8800$M@chrtestuser-163-:localhost:8800$M@chrtestuser-125-:localhost:8800$M@chrtestuser-124-:localhost:8800 $M@chrtestuser-123-:localhost:8800 #K@chrtestuser-10-:localhost:8800C@cas_user=21:localhost:8800D6o@astest-01create-1-20191002_181700:localhost:880016o@astest-01create-0-20191002_181700:localhost:8800/*Y@anon-20191002_181700-9:localhost:8800+[@anon-20191002_181700-99:localhost:8800p+[@anon-20191002_181700-97:localhost:8800n+[@anon-20191002_181700-96:localhost:8800o+[@anon-20191002_181700-95:localhost:8800m+[@anon-20191002_181700-93:localhost:8800l+[@anon-20191002_181700-91:localhost:8800j+[@anon-20191002_181700-90:localhost:8800k*Y@anon-20191002_181700-8:localhost:8800+[@anon-20191002_181700-89:localhost:8800h+[@anon-20191002_181700-88:localhost:8800i+[@anon-20191002_181700-87:localhost:8800f+[@anon-20191002_181700-86:localhost:8800g+[@anon-20191002_181700-85:localhost:8800d+[@anon-20191002_181700-84:localhost:8800e+[@anon-20191002_181700-83:localhost:8800c-]@anon-20191002_181700-831:localhost:8800.-]@anon-20191002_181700-830:localhost:8800-+[@anon-20191002_181700-82:localhost:8800b-]@anon-20191002_181700-829:localhost:8800,-]@anon-20191002_181700-828:localhost:8800+-]@anon-20191002_181700-827:localhost:8800*-]@anon-20191002_181700-826:localhost:8800)-]@anon-20191002_181700-825:localhost:8800(-]@anon-20191002_181700-823:localhost:8800'-]@anon-20191002_181700-822:localhost:8800% 3vHd6 Z .   S ' xO! A  | W 2 } Y 5 n-]@astest-1-20191002_181700:localhost:88005-]@anon-20191002_181700-832:localhost:88004-]@astest-0-20191002_181700:localhost:88003?@as-user-1:localhost:88002A@user-upper:localhost:8800=@spyglass:localhost:8800A@mycooluser:localhost:8800#K@chrtestuser-93-:localhost:8800 #K@chrtestuser-92-:localhost:8800#K@chrtestuser-91-:localhost:8800 #K@chrtestuser-64-:localhost:8800 #K@chrtestuser-63-:localhost:8800#K@chrtestuser-58-:localhost:8800#K@chrtestuser-39-:localhost:8800#K@chrtestuser-34-:localhost:8800#K@chrtestuser-33-:localhost:8800$M@chrtestuser-233-:localhost:8800$M@chrtestuser-163-:localhost:8800$M@chrtestuser-125-:localhost:8800$M@chrtestuser-124-:localhost:8800 $M@chrtestuser-123-:localhost:8800 #K@chrtestuser-10-:localhost:8800C@cas_user=21:localhost:8800D6o@astest-01create-1-20191002_181700:localhost:880016o@astest-01create-0-20191002_181700:localhost:8800/*Y@anon-20191002_181700-9:localhost:8800+[@anon-20191002_181700-99:localhost:8800p+[@anon-20191002_181700-97:localhost:8800n+[@anon-20191002_181700-96:localhost:8800o+[@anon-20191002_181700-95:localhost:8800m+[@anon-20191002_181700-93:localhost:8800l+[@anon-20191002_181700-91:localhost:8800j+[@anon-20191002_181700-90:localhost:8800k*Y@anon-20191002_181700-8:localhost:8800+[@anon-20191002_181700-89:localhost:8800h+[@anon-20191002_181700-88:localhost:8800i+[@anon-20191002_181700-87:localhost:8800f+[@anon-20191002_181700-86:localhost:8800g+[@anon-20191002_181700-85:localhost:8800d+[@anon-20191002_181700-84:localhost:8800e+[@anon-20191002_181700-83:localhost:8800c-]@anon-20191002_181700-831:localhost:8800.-]@anon-20191002_181700-830:localhost:8800-+[@anon-20191002_181700-82:localhost:8800b-]@anon-20191002_181700-829:localhost:8800,-]@anon-20191002_181700-828:localhost:8800+-]@anon-20191002_181700-827:localhost:8800*-]@anon-20191002_181700-826:localhost:8800)-]@anon-20191002_181700-825:localhost:8800(-]@anon-20191002_181700-823:localhost:8800'-]@anon-20191002_181700-822:localhost:8800%  JkseQac$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3867}{"auth_events": ["$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "prev_events": ["$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "type": "m.room.power_levels", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"users": {"@anon-20191002_181700-832:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044126556, "hashes": {"sha256": "G1yD2SmymSxlAaO7TiLqUFLmGrDe/jrhD5RMtPaUW7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x6c4KslBgdcicSWLKmusKooOFfL0GfgPG8Vx1SWG0dJjJhRUQ/ttBp3Ii9sVDpabjfi62veu+WyLoWmEP1gyAw"}}, "unsigned": {"age_ts": 1570044126556}}vreQay$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3866}{"auth_events": ["$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU"], "prev_events": ["$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU"], "type": "m.room.member", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-832", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-832:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044125767, "hashes": {"sha256": "W46wRE1lwMTaBEBd4Ibx4RpudTB1Z/tgF/EoRXVxSYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8zO/Z01nvXVostcHrNaP5ojcVmg5RR/Mx4kH4PW8v0CKiUHiXeI5IuSRGge1OFgqrZkvDux10WF+mmCz5csFAw"}}, "unsigned": {"age_ts": 1570044125767}}iqeQa_$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3865}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-832:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044124848, "hashes": {"sha256": "2wD3bYM/PwAN2+gG0xNJkbRo8snZxAbx/mAQCKGHM4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Hy4BvSMzfiCJSZsHCYxhpT30ibK4LKWmlSxamVbTQpRb7sbQUPVngswMDHYL4OjIavKOXaE4NiulqREnGyeAQ"}}, "unsigned": {"age_ts": 1570044124848}}KpeQ?E$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800{"stream_ordering": 3864}{"auth_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE", "$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs"], "prev_events": ["$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM"], "type": "m.room.aliases", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@as-user-1:localhost:8800", "content": {"aliases": ["#astest-__ANON__-31:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044122929, "hashes": {"sha256": "6T98RLWsEGF84SGNQfRcME6RyBMdwOl8XDHeeJ39yTA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E9uFYE4MF20Brtot84IuxS9XZqxQmu7ZAUApN0lpuAR65Z7sWqsJdcqrA6pSSPI6vI1f4zNsag+HFWcYSJzSBA"}}, "unsigned": {"age_ts": 1570044122929}} ~z v r n j eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800}eeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800|eeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800{eeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800zeeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800yeeQ$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800xeeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800   * g]!c#@astest-1-20191002_181700:localhost:8800OYDJFJVTHOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgog]!c"@anon-20191002_181700-832:localhost:8800HFTRPYGIKUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngog]!c!@astest-0-20191002_181700:localhost:8800XUQOQEKIQEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI4bSxaTlJReEJAUThUekoKMDAyZnNpZ25hdHVyZSBtwxrANKPmMKrh9kZ_GnYlwttEipOHV6mneSTCC8eKOwo (Em< xG R ! ] , h 7  s B  ~ M vE0]r@astest-1-20191002_181700:localhost:8800T0]q@anon-20191002_181700-832:localhost:8800S0]p@astest-0-20191002_181700:localhost:8800R:qo@_astest-01create-0-20191002_181700:localhost:8800Q9on@astest-01create-0-20191002_181700:localhost:8800P0]m@anon-20191002_181700-831:localhost:8800O0]l@anon-20191002_181700-830:localhost:8800N0]k@anon-20191002_181700-829:localhost:8800M0]j@anon-20191002_181700-828:localhost:8800L0]h@anon-20191002_181700-827:localhost:8800K0]g@anon-20191002_181700-826:localhost:8800J0]f@anon-20191002_181700-825:localhost:8800I0]e@anon-20191002_181700-823:localhost:8800H0]d@anon-20191002_181700-821:localhost:8800G0]c@anon-20191002_181700-822:localhost:8800F0]b@anon-20191002_181700-819:localhost:8800E0]a@anon-20191002_181700-820:localhost:8800D0]`@anon-20191002_181700-818:localhost:8800C0]_@anon-20191002_181700-815:localhost:8800B0]^@anon-20191002_181700-816:localhost:8800A0]]@anon-20191002_181700-813:localhost:8800@0]\@anon-20191002_181700-814:localhost:8800?0][@anon-20191002_181700-812:localhost:8800>0]Z@anon-20191002_181700-811:localhost:8800=0]Y@anon-20191002_181700-809:localhost:8800<0]X@anon-20191002_181700-810:localhost:8800;0]W@anon-20191002_181700-807:localhost:8800:0]V@anon-20191002_181700-808:localhost:880090]U@anon-20191002_181700-805:localhost:880080]T@anon-20191002_181700-806:localhost:880070]S@anon-20191002_181700-803:localhost:880060]R@anon-20191002_181700-804:localhost:880050]Q@anon-20191002_181700-801:localhost:880040]P@anon-20191002_181700-802:localhost:880030]O@anon-20191002_181700-799:localhost:880020]N@anon-20191002_181700-800:localhost:880010]M@anon-20191002_181700-797:localhost:880000]L@anon-20191002_181700-798:localhost:8800/0]K@anon-20191002_181700-795:localhost:8800.0]J@anon-20191002_181700-796:localhost:8800- "nUq8 T  p 7 S  o 6 R n8e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4Msha2568e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAsha256 [8e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEsha256 8e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUsha256 8e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxssha2568e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIsha256c8e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwsha2568e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgsha2568e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0sha2568e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwsha2568e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMsha2568e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUsha2568e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYsha256)8e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgsha2568e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQsha256H8e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRssha256:8e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIsha2568e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIsha256g8e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHosha256 8e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQsha256 8e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgsha2568e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgsha256 8e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gsha2568e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgsha256 8e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wsha2568e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUsha2568e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wsha256k8e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdcsha256 8e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgsha2568e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APksha256 8e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jArosha2568e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYsha2568e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-Esha256 %8e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQsha256 (p(Ew]=@astest-1-20191002_181700:localhost:8800astest-1-20191002_181700Ev]=@astest-0-20191002_181700:localhost:8800astest-0-20191002_181700Eu]=@anon-20191002_181700-832:localhost:8800anon-20191002_181700-832 RM H TQe%!QWLJZmJqjWZjVOjdYF:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4oTQe$!QWLJZmJqjWZjVOjdYF:localhost:8800$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsTQe#!QWLJZmJqjWZjVOjdYF:localhost:8800$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8TQe"!QWLJZmJqjWZjVOjdYF:localhost:8800$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624TQe!!QWLJZmJqjWZjVOjdYF:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YTQe !QWLJZmJqjWZjVOjdYF:localhost:8800$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUTQe!ZWANpHlizyLrUiVvAm:localhost:8800$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycTQe!ZWANpHlizyLrUiVvAm:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wTQe!ZWANpHlizyLrUiVvAm:localhost:8800$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwTQe!ZWANpHlizyLrUiVvAm:localhost:8800$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI  6qweQ?$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800{"stream_ordering": 3871}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w"], "prev_events": ["$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w"], "type": "m.room.message", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@astest-0-20191002_181700:localhost:8800", "content": {"msgtype": "m.text", "body": "Message from AS directly"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570044131185, "hashes": {"sha256": "wkD5gDLUO7C+EYPoW/5WnQfDJy34VCg6vtppn2hLgfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "60mHNAT+OYxYLHuAeZuz8hKbDAEUY4x78AIEopOeRUFzaRiS33XVEamMvc4JGMZauD8O3WRObYsQdWlPtwAFCg"}}, "unsigned": {"age_ts": 1570044131185}}EveQ?9$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800{"stream_ordering": 3870}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI"], "prev_events": ["$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw"], "type": "m.room.member", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@astest-0-20191002_181700:localhost:8800", "content": {"membership": "join", "displayname": "astest-0-20191002_181700", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@astest-0-20191002_181700:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044129803, "hashes": {"sha256": "joNnmQ5pcaMqSdVlWPDRn141lvBrOhddyoZ8E7wmU2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9onPorZ5FlsToeyfK76gud54z1QEOUCRQj/6Eca8GAH2ftq9G8VZsJlRsnVC1s4iIzxWYX3c3td6IvnGg9/6Cw"}}, "unsigned": {"age_ts": 1570044129803}}ueQa$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3869}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "prev_events": ["$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI"], "type": "m.room.history_visibility", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044128585, "hashes": {"sha256": "lZCR1U79Hz9A2GTb4r5Q8VOyJ0glOMrik0Vha3o9XCU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QQH5k05ZFp467oFNYWwUrrxHg5VHhEH49b9WR6j/iucC6n1whGOmHFdrdDjEv3EYsDHqBT2sACCJImhAjubdAA"}}, "unsigned": {"age_ts": 1570044128585}}tteQau$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3868}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "prev_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4"], "type": "m.room.join_rules", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044127751, "hashes": {"sha256": "fL89XfzhEaDottCGBA8xkpLXYBgrBU3HYVD3h2T8vAo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mqAPWl+XQe0L67gyjs7Ge2NOd5tx+sUxEpO37cvuzh4a/euZfrrN21b3G6L4UcmtJvmMYihAM62t4Oico+wrDA"}}, "unsigned": {"age_ts": 1570044127751}} ll]c!E@astest-1-20191002_181700:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgoOYDJFJVTHO127.0.0.1Perl + Net::Async::HTTP/0.44mKa `M]Q@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800M]Q@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800M]Q@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800M~]Q@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800  8NC 8VweL$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4osha2562 MH#  \5 'kVveL$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMssha256\BNgp"niPaETеc_z7 VueL$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8sha256זۓߨ_cA%x# gOVteL$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624sha256P"^{S4&ZY暣ԗ2vnVseL$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Ysha256`qv`& iHY VreL$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUsha2566 c;oC4)UVqeL$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycsha256Ɨ4g|60 ]A'VpeL$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wsha2563}1Al}"ЩzSRlX\ 'cj8p> v D  | J  Q  W % ] +c1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI|1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM 1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA*1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kX1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4S1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IX1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX490e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMZ1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgZ1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw`1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQx1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM >1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo +1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm41e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroP1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800J'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800N&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:8800:'Q!fDISaqNBhlOwherxSt:localhost:8800i&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800Q&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800,'Q!cidyuyekVzJHHvyomb:localhost:8800@&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800w'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800I'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800M&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:88009'Q!fDISaqNBhlOwherxSt:localhost:8800h&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800P&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800+'Q!cidyuyekVzJHHvyomb:localhost:8800?&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800v'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800~'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800I'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800M&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:88009'Q!fDISaqNBhlOwherxSt:localhost:8800h&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800P&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800+'Q!cidyuyekVzJHHvyomb:localhost:8800?&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800v'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800~'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800   *t{eQau$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3875}{"auth_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624", "$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "prev_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624"], "type": "m.room.join_rules", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044134705, "hashes": {"sha256": "04I6AbOjMe8rFa4Kj6Pm/70KgvdEt5dXj9OrRzrRq7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITDX8FnLRo5JXQvn7//Tj2nuGd0ElQ47u4XT0wXN66LSm8OkuqijHMy6eiF1cYYVrswEaPYgWeKV9AGpS/9RAg"}}, "unsigned": {"age_ts": 1570044134705}}kzeQac$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3874}{"auth_events": ["$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "prev_events": ["$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "type": "m.room.power_levels", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"users": {"@anon-20191002_181700-832:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044133969, "hashes": {"sha256": "XclHb/T38G6cNnkEeBezzgD3yPIhzBX7xfc1tEX/TQo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8E0i5+bd0lqFn5Hq/T5pvKp1Q/oW5vzNPbtHn1XYWoJYRX4FML9wU43m1tx6GvF5l9A+zS+8NJf4a8f/fG4QBg"}}, "unsigned": {"age_ts": 1570044133969}}vyeQay$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3873}{"auth_events": ["$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU"], "prev_events": ["$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU"], "type": "m.room.member", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-832", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-832:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044133305, "hashes": {"sha256": "M8AhEONTn8gWgluA0fkIN9QlENr8QL7fYPJPB1m8O0s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CQnD/Xfk8brHgtAZTzBkOXXVqh43Iogper6Bc2tXKjTgdXpUGBHhnBTqcEK1i4nk4PXA6bZPwlqgG5V8PBbGDA"}}, "unsigned": {"age_ts": 1570044133305}}ixeQa_$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3872}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-832:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044132366, "hashes": {"sha256": "cRNKFYDoFRQEJ1xY9six8+kG9Pu+n5YstPP/6vPUe40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sWnyHw2Din0RW3eEHTauSH4BCLywtYpEVMSw4/NHrFc9JvHcN/pKe/w68/DwOtxMKlcicgA0dYJ8iPm+rYxMCQ"}}, "unsigned": {"age_ts": 1570044132366}} |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     {wٝs͝okgc_[WSOK~GxCt?l;j7g3d/`+\'W#S QMFA97 30( |xuqm iea]YURNJFٜBԜ>Μ:̜7ʜ3/+'#  }yuq}muipenbc_i\gYdVbS^P\MOJTFRBM>I;D8>4;03,0()$& "՛ ~{xȚtplhd`ך\њXΚTʚPÚLHEB>;841.+'$! |yxqm{jxfu r_o\k ggc _ Z\PYNVLSHPDLf:b7^4Z1V,R*N(J&F#C@=951 -)% !        { ݖw ږs ˖o Ֆk Жg ͖c ǖ_ Ŗ[ W S O L I E B > ; 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800I'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800M&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:88009'Q!fDISaqNBhlOwherxSt:localhost:8800h&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800P&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800+'Q!cidyuyekVzJHHvyomb:localhost:8800?&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800v'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800~'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800 )*) "Q']e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4oo!Q? e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibility$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsg Q/ e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rules$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8iQ3 e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624  wV}eQa9$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 803, "stream_ordering": 3877}{"auth_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624", "$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8"], "prev_events": ["$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs"], "type": "m.room.member", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@astest-1-20191002_181700:localhost:8800", "content": {"membership": "join", "displayname": "astest-1-20191002_181700", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@astest-1-20191002_181700:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044136658, "hashes": {"sha256": "qPSw17sEd9to0vTgetuo/GOkWaK8gNbHUm6Vc5sbSQI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H0KNGWKJIQdLhkueNVkyFv3F4nVfj0rsqvUAqO4bVV7maQIa441z5T7uNn5NrQbLcXB8OcM7kXF4RIySGTD7AQ"}}, "unsigned": {"age_ts": 1570044136658}}|eQa$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3876}{"auth_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624", "$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "prev_events": ["$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8"], "type": "m.room.history_visibility", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044135444, "hashes": {"sha256": "r88OW1DTfDnWeBN1fpm5miHeMHk18osDgUuJvWddzs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4nfhzQRDwovP/Zj7NFjK///sxvuf8t6vY0xoCR60AocZRV2SGjo8hoUGoMakQWQw3PMYKX9Gzx1vX3Ccf3/ICw"}}, "unsigned": {"age_ts": 1570044135444}} ) |?Q m L  X 4 | X,d5 =anon-20191002_181700-400{"room":{"state":{"lazy_load_members":true},"timeline":{"limit":10}}}b==anon-20191002_181700-397{"room":{"state":{"lazy_load_members":true},"timeline":{"limit":10}}}Z<=anon-20191002_181700-392{"event_format":"federation","room":{"timeline":{"limit":1}}};=ranon-20191002_181700-390{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.receipt"]},"state":{"types":[]},"timeline":{"types":[]}}}:=ranon-20191002_181700-389{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.receipt"]},"state":{"types":[]},"timeline":{"types":[]}}}9=panon-20191002_181700-388{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.typing"]},"state":{"types":[]},"timeline":{"types":[]}}}8=panon-20191002_181700-387{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.typing"]},"state":{"types":[]},"timeline":{"types":[]}}}7=panon-20191002_181700-386{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.typing"]},"state":{"types":[]},"timeline":{"types":[]}}};6=Janon-20191002_181700-385{"room":{"include_leave":true}};5=Janon-20191002_181700-384{"room":{"include_leave":true}};4=Janon-20191002_181700-383{"room":{"include_leave":true}};3=Janon-20191002_181700-382{"room":{"include_leave":true}};2=Janon-20191002_181700-381{"room":{"include_leave":true}};1=Janon-20191002_181700-380{"room":{"include_leave":true}}$0=anon-20191002_181700-379{"room":{"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["m.room.message","a.madeup.test.state"]}}}$/=anon-20191002_181700-378{"room":{"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["m.room.message","a.madeup.test.state"]}}};.=Janon-20191002_181700-377{"room":{"include_leave":true}}R-=xanon-20191002_181700-375{"room":{"include_leave":true,"timeline":{"limit":1}}},=anon-20191002_181700-374{};+=Janon-20191002_181700-372{"room":{"include_leave":true}};*=Janon-20191002_181700-371{"room":{"include_leave":true}};)=Janon-20191002_181700-370{"room":{"include_leave":true}};(=Janon-20191002_181700-369{"room":{"include_leave":true}}E'=^anon-20191002_181700-368{"presence":{"not_types":["m.presence"]}} AA=anon-20191002_181700-397==anon-20191002_181700-392<=anon-20191002_181700-390;=anon-20191002_181700-389:=anon-20191002_181700-3889=anon-20191002_181700-3878=anon-20191002_181700-3867=anon-20191002_181700-3856=anon-20191002_181700-3845=anon-20191002_181700-3834=anon-20191002_181700-3823=anon-20191002_181700-3812=anon-20191002_181700-3801=anon-20191002_181700-3790=anon-20191002_181700-378/=anon-20191002_181700-377.=anon-20191002_181700-375-=anon-20191002_181700-374,=anon-20191002_181700-372+=anon-20191002_181700-371*=anon-20191002_181700-370)=anon-20191002_181700-369(=anon-20191002_181700-368'=anon-20191002_181700-367&=anon-20191002_181700-366%=anon-20191002_181700-365$=anon-20191002_181700-364#=anon-20191002_181700-363"=anon-20191002_181700-353!=anon-20191002_181700-352 =anon-20191002_181700-351=anon-20191002_181700-350=anon-20191002_181700-349=anon-20191002_181700-348=anon-20191002_181700-347=anon-20191002_181700-346=anon-20191002_181700-345=anon-20191002_181700-343=anon-20191002_181700-342=anon-20191002_181700-341=anon-20191002_181700-339=anon-20191002_181700-338=anon-20191002_181700-337=anon-20191002_181700-336=anon-20191002_181700-335=anon-20191002_181700-334=anon-20191002_181700-333=anon-20191002_181700-332=anon-20191002_181700-331 =anon-20191002_181700-330 =anon-20191002_181700-329 =anon-20191002_181700-328 =anon-20191002_181700-327 =anon-20191002_181700-326=anon-20191002_181700-321=anon-20191002_181700-320=anon-20191002_181700-319=anon-20191002_181700-318=anon-20191002_181700-317=anon-20191002_181700-315= anon-20191002_181700-314 N~z | x ~ zvrnjd`\UN Q]e!OCEHAjcOXWNyWIESIS:localhost:8800@anon-20191002_181700-616:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsjoin Q]e!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpoinviteQ]e!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-614:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5ojoinQ]e!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2oinviteQ]e!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-612:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1YjoinQ]e!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-610:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIjoinQ]e!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-609:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEjoinQ]e!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-605:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7VcjoinQ]e!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-608:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0joinQ]e!zqQJfFCRlSEDPKlQPy:localhost:8800@anon-20191002_181700-605:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUleaveQ]e!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-606:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcjoinQ]e!JnAKXOrlyisFUpgJPw:localhost:8800@anon-20191002_181700-603:localhost:8800$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsjoin~Q]e!XRAZJeoZBhGeHKKjaG:localhost:8800@anon-20191002_181700-601:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Ujoin}Q]e!GwLdUoDplyVUogXDzu:localhost:8800@anon-20191002_181700-584:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQjoin|Q]e!nfxDdcgDfooxyiAzaB:localhost:8800@anon-20191002_181700-583:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogjoin{Q]e!XGAmnfaVvjDtQJuufa:localhost:8800@anon-20191002_181700-582:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YjoinzQ]e!OXpGdKbowFUTChPdmF:localhost:8800@anon-20191002_181700-580:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIjoinyQ]e!XUbDuPDiMTXJZDyAPc:localhost:8800@anon-20191002_181700-579:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUjoinxQ]e!VhUAklonNaWKRnLkcr:localhost:8800@anon-20191002_181700-578:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61EjoinwQ]e!ybXveQoxPVhjpKHAkG:localhost:8800@anon-20191002_181700-577:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkjoinvQ]e!ijOiudvuzOLNmgNKfG:localhost:8800@anon-20191002_181700-576:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SojoinuuQ]Q!hrhDJbmXvXBizKoiiK:localhost:8800@anon-20191002_181700-574:localhost:8800$1570043192266CXqej:localhost:8800jointQ]e!iLHJbsFszubrnybDNz:localhost:8800@anon-20191002_181700-574:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YjoinsQ]e!hGsPmWXboxZZtOlsxY:localhost:8800@anon-20191002_181700-573:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIjoinrQ]e!dvZnfJonDkxlrrDXUk:localhost:8800@anon-20191002_181700-572:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAjoinqQ]e!vZGjXEXQoCaoUXnkCa:localhost:8800@anon-20191002_181700-571:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4joinupQ]Q!GBPGYLDkXcAsHgkfuS:localhost:8800@anon-20191002_181700-570:localhost:8800$1570043151259knbjg:localhost:8800joinoQ]e!fdEymmlcUvjgshvVyl:localhost:8800@anon-20191002_181700-570:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgojoinnQ]e!xcdNyJNFEdaBGFycsB:localhost:8800@anon-20191002_181700-569:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMjoinmQ]e!SUDzkfFBgpuCANOxRS:localhost:8800@anon-20191002_181700-568:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0joinlQ]e!rWmvvGBgmFMdVvcfPk:localhost:8800@anon-20191002_181700-567:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieojoin     $ S-)/5EA=JQ]e!jomrpmwwQQtghscizn:localhost:8800@anon-20191002_181700-701:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8joinIQ]e!jomrpmwwQQtghscizn:localhost:8800@anon-20191002_181700-700:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyojoinHQ]e!ABHbfUdkHCJksMsaUt:localhost:8800@anon-20191002_181700-698:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucjoinGQ]e!DntdfAPfCfgdOoRMdl:localhost:8800@anon-20191002_181700-691:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUjoinFQ]e!THHfVSOSWiBQTHRAnJ:localhost:8800@anon-20191002_181700-690:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEjoinuEQ]Q!KetCYFxrTxawNOGnOf:localhost:8800@anon-20191002_181700-685:localhost:8800$1570043746461eQhrq:localhost:8800joinuDQ]Q!JiUawCFQnodcpssOfK:localhost:8800@anon-20191002_181700-684:localhost:8800$1570043736453VtbeL:localhost:8800joinuCQ]Q!NgkQVVUNzoyCVPtckM:localhost:8800@anon-20191002_181700-683:localhost:8800$1570043727446CGYaE:localhost:8800joinBQ]e!lgejtcwlywOoIXwEgy:localhost:8800@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEjoinuAQ]Q!PUIxAaiCnbqaVbawGu:localhost:8800@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800join@Q]e!OJilSqnQvLgoXSqRaW:localhost:8800@anon-20191002_181700-680:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYjoin?Q]e!SrwdtDytJDUBVZOueF:localhost:8800@anon-20191002_181700-679:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYjoin>Q]e!PVyTvKbqnjSXfGWAMy:localhost:8800@anon-20191002_181700-678:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gjoinf=3]Q!13:localhost:42455@anon-20191002_181700-677:localhost:8800$1570043683436iTOlZ:localhost:8800joinf<3]Q!12:localhost:42455@anon-20191002_181700-676:localhost:8800$1570043680434abJWo:localhost:8800join;Q]e!nhbUIcIbhuXkRqfeDa:localhost:8800@anon-20191002_181700-675:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIjoinf:3]Q!11:localhost:42455@anon-20191002_181700-674:localhost:8800$1570043670433bjAzo:localhost:8800joinf93]Q!11:localhost:42455@anon-20191002_181700-673:localhost:8800$1570043668432TfiHj:localhost:8800joinf83]Q!10:localhost:42455@anon-20191002_181700-672:localhost:8800$1570043664431IMLSL:localhost:8800joine71]Q!9:localhost:42455@anon-20191002_181700-671:localhost:8800$1570043660430kLPpN:localhost:8800joinu6Q]Q!SnROoiDBapNNtMmKnT:localhost:8800@anon-20191002_181700-670:localhost:8800$1570043653425AhyPB:localhost:8800joinu5Q]Q!uGpSboYkgxVNOqNeUG:localhost:8800@anon-20191002_181700-669:localhost:8800$1570043646419zIOAX:localhost:8800join4Q]e!DSFBpkqfnvBQbGoMUK:localhost:8800@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAjoin3Q]e!ZKPJvrCZHMHPEksYDc:localhost:8800@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUjoin2Q]e!PgNDjhhIBAXKryuGKy:localhost:8800@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAjoin1Q]e!vnFXnkCSfTbsSNKrtg:localhost:8800@anon-20191002_181700-666:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQjoin0Q]e!jRuDexjFzIDOKbwDJQ:localhost:8800@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucjoin/Q]e!KcXNWNfbLcYsBKZHIp:localhost:8800@anon-20191002_181700-664:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4joinu.Q]Q!dBfASZrfiFeSKTjYJm:localhost:8800@anon-20191002_181700-663:localhost:8800$1570043590413Khvee:localhost:8800joinu-Q]Q!taANXnGBZntAreRurn:localhost:8800@anon-20191002_181700-662:localhost:8800$1570043580403vYYeb:localhost:8800joinu,Q]Q!tcYctHPiaKzsKgrXlU:localhost:8800@anon-20191002_181700-661:localhost:8800$1570043579402KDYtE:localhost:8800joinu+Q]Q!drnXStKXkNQkouqUAg:localhost:8800@anon-20191002_181700-660:localhost:8800$1570043567391GonfI:localhost:8800join ~z v r n j fb^ZVRNJFhQ]e!ZOpRjvUhkWYJBFJZeO:localhost:8800@anon-20191002_181700-735:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8joingQ]e!ZOpRjvUhkWYJBFJZeO:localhost:8800@anon-20191002_181700-734:localhost:8800$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIjoinfQ]e!BPNyKqmwcpGxIbGFZG:localhost:8800@anon-20191002_181700-733:localhost:8800$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1EjoineQ]e!BPNyKqmwcpGxIbGFZG:localhost:8800@anon-20191002_181700-732:localhost:8800$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8joindQ]e!ZOwibbprUCQrSJQCrx:localhost:8800@anon-20191002_181700-731:localhost:8800$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAjoincQ]e!ZOwibbprUCQrSJQCrx:localhost:8800@anon-20191002_181700-730:localhost:8800$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScjoinbQ]e!qtelAHlSkrqEFmlCqS:localhost:8800@anon-20191002_181700-729:localhost:8800$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8joinaQ]e!qtelAHlSkrqEFmlCqS:localhost:8800@anon-20191002_181700-728:localhost:8800$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00join`Q]e!NcJYmIbgjsaKJOzBcs:localhost:8800@anon-20191002_181700-727:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMjoin_Q]e!NcJYmIbgjsaKJOzBcs:localhost:8800@anon-20191002_181700-726:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cjoin^Q]e!biBIcqnGelHvLnpkOu:localhost:8800@anon-20191002_181700-725:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkjoin]Q]e!biBIcqnGelHvLnpkOu:localhost:8800@anon-20191002_181700-724:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAjoin\Q]e!yNfCaBMPezurwkJRAX:localhost:8800@anon-20191002_181700-723:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokjoin[Q]e!yNfCaBMPezurwkJRAX:localhost:8800@anon-20191002_181700-722:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8joinZQ]e!BKZJsoFNhiLTDYNclB:localhost:8800@anon-20191002_181700-721:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4joinYQ]e!BKZJsoFNhiLTDYNclB:localhost:8800@anon-20191002_181700-720:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0joinXQ]e!aiOswwhoZqjhcjzbzc:localhost:8800@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgjoinWQ]e!aiOswwhoZqjhcjzbzc:localhost:8800@anon-20191002_181700-718:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wjoinVQ]e!IYxUkyFHOgvhLpdkOA:localhost:8800@anon-20191002_181700-717:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsjoinUQ]e!IYxUkyFHOgvhLpdkOA:localhost:8800@anon-20191002_181700-716:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IjoinTQ]e!anErKtXIsVKEEsrzWM:localhost:8800@anon-20191002_181700-715:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IjoinSQ]e!anErKtXIsVKEEsrzWM:localhost:8800@anon-20191002_181700-714:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyojoinRQ]e!TcCLuIBUrtFqghDgay:localhost:8800@anon-20191002_181700-713:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEjoinQQ]e!TcCLuIBUrtFqghDgay:localhost:8800@anon-20191002_181700-712:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEjoinPQ]e!yWhIsLsgNVGcnELrDS:localhost:8800@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4joinOQ]e!yWhIsLsgNVGcnELrDS:localhost:8800@anon-20191002_181700-710:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0joinNQ]e!wCsDjKBtuUbrmZgjsB:localhost:8800@anon-20191002_181700-708:localhost:8800$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQjoinMQ]e!SpXEytywhTbAftyVBr:localhost:8800@anon-20191002_181700-706:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4joinLQ]e!itfjLXhEaORJLkbfVS:localhost:8800@anon-20191002_181700-704:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcjoinKQ]e!GsjDgpaxdwYfnefiWO:localhost:8800@anon-20191002_181700-702:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIjoin ~z v r n j fb^ZTNJFBkQ]e!gXfXRDTXeVvOHQdaaQ:localhost:8800@anon-20191002_181700-566:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0joinjQ]e!hegUPDZCEEmBhsNJJR:localhost:8800@anon-20191002_181700-565:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgcjoiniQ]e!aSKNKSGXPGoIbSrbEN:localhost:8800@anon-20191002_181700-564:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gjoinhQ]e!peJMRJtXBvIiCttNmm:localhost:8800@anon-20191002_181700-563:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IjoingQ]e!tPkCGJBKmqUXJoRrnY:localhost:8800@anon-20191002_181700-562:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAjoinfQ]e!QnmLrBAxeItdHsaxWf:localhost:8800@anon-20191002_181700-561:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIjoineQ]e!hFwigdYZkwYNSwelRH:localhost:8800@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQjoindQ]e!paDmNxsOZIKyApbxXs:localhost:8800@anon-20191002_181700-556:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9EleavecQ]e!paDmNxsOZIKyApbxXs:localhost:8800@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4joinbQ]e!OtBUhGeUSiDMWRKIOT:localhost:8800@anon-20191002_181700-555:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcleaveaQ]e!OtBUhGeUSiDMWRKIOT:localhost:8800@anon-20191002_181700-554:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuojoin`Q]e!zHBgbzUZHshNGZvIBS:localhost:8800@anon-20191002_181700-552:localhost:8800$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcjoin_Q]e!cidyuyekVzJHHvyomb:localhost:8800@anon-20191002_181700-551:localhost:8800$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1Ajoin^Q]e!cidyuyekVzJHHvyomb:localhost:8800@anon-20191002_181700-550:localhost:8800$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswjoin]Q]e!pduebXnTyxQWVxEICp:localhost:8800@anon-20191002_181700-549:localhost:8800$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUcjoin\Q]e!pduebXnTyxQWVxEICp:localhost:8800@anon-20191002_181700-548:localhost:8800$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yojoin[Q]e!ZvLVbnHjeymRiFIkYr:localhost:8800@anon-20191002_181700-545:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590joinZQ]e!VUibrTIkcRbfrogbQV:localhost:8800@anon-20191002_181700-543:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIjoinYQ]e!WpThtNEVhrUbUdCdMJ:localhost:8800@anon-20191002_181700-541:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgjoinXQ]e!vRmMcoJDeCupADwqac:localhost:8800@anon-20191002_181700-539:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8joinWQ]e!fGkUEndqGrieltwbCh:localhost:8800@anon-20191002_181700-538:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0joinVQ]e!fGkUEndqGrieltwbCh:localhost:8800@anon-20191002_181700-537:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkjoinUQ]e!atnRTMliktaVUhMVID:localhost:8800@anon-20191002_181700-536:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQjoinTQ]e!atnRTMliktaVUhMVID:localhost:8800@anon-20191002_181700-535:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwjoinSQ]e!PHkVrXAyfGkFtzSagu:localhost:8800@anon-20191002_181700-534:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AjoinRQ]e!PHkVrXAyfGkFtzSagu:localhost:8800@anon-20191002_181700-533:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwjoinQQ]e!EhFUhsgQbBWmrnGmaz:localhost:8800@anon-20191002_181700-532:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUjoinPQ]e!EhFUhsgQbBWmrnGmaz:localhost:8800@anon-20191002_181700-531:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkjoinOQ]e!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-521:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgjoinNQ]e!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-520:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAjoin ~z v r n j f`\XTPIB<SQ]e!fkvdYkesQOFCAQkzky:localhost:8800@anon-20191002_181700-369:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYleaveRQ]e!OWGKxAmTrHLciIdrJi:localhost:8800@anon-20191002_181700-368:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90leaveQQ]e!aknLNLxfChlLvFYhkJ:localhost:8800@anon-20191002_181700-367:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosjoinPQ]e!HWTlaNxUKnDsrtlOxU:localhost:8800@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4ginviteOQ]e!HWTlaNxUKnDsrtlOxU:localhost:8800@anon-20191002_181700-365:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMjoinNQ]e!pUSFAnuwUuMlbiInDR:localhost:8800@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsinviteMQ]e!pUSFAnuwUuMlbiInDR:localhost:8800@anon-20191002_181700-363:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEjoinLQ]e!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-361:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4joinKQ]e!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUjoinJQ]e!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-360:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-QjoinIQ]e!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-358:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMjoinHQ]e!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgjoinGQ]e!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-357:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0joinFQ]e!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-355:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjojoinEQ]e!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gjoinDQ]e!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-354:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwjoinCQ]e!bOSxzttDtclnrWnLov:localhost:8800@anon-20191002_181700-353:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkleaveBQ]e!bOSxzttDtclnrWnLov:localhost:8800@anon-20191002_181700-352:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskjoinAQ]e!DnUHoxreGexNmjSVpq:localhost:8800@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0join@Q]e!DnUHoxreGexNmjSVpq:localhost:8800@anon-20191002_181700-350:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrojoin?Q]e!rwUuVBrftGHDBOlEZm:localhost:8800@anon-20191002_181700-349:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYjoin>Q]e!CkNvQnbApPIcuKygDk:localhost:8800@anon-20191002_181700-348:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYjoin=Q]e!NboFFVLpJHTeuUKCjM:localhost:8800@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40join<Q]e!NboFFVLpJHTeuUKCjM:localhost:8800@anon-20191002_181700-346:localhost:8800$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Yjoin;Q]e!aZwMKYDXJRlSKjQNWM:localhost:8800@anon-20191002_181700-345:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokjoin:Q]e!XiwGxQKwjgutEClKUy:localhost:8829@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsjoin9Q]e!mTlCLZQCmfDuQsJxxp:localhost:8800@anon-20191002_181700-342:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQojoin8Q]e!PEcOacvKaBKpXjytEF:localhost:8800@anon-20191002_181700-341:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwjoin7Q]e!NajQnqYmGyTjxhFYar:localhost:8829@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4join6Q]e!sJnuQYOyruhUpXDsLY:localhost:8800@anon-20191002_181700-338:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Okjoin       $LU = A  _ ! -?G$<I EE?tableui_auth_sessions_credentialsui_auth_sessions_credentials/CREATE TABLE ui_auth_sessions_credentials( session_id TEXT NOT NULL, stage_type TEXT NOT NULL, result TEXT NOT NULL, UNIQUE (session_id, stage_type), FOREIGN KEY (session_id) REFERENCES ui_auth_sessions (session_id) )@S-indexsqlite_autoindex_ui_auth_sessions_1ui_auth_sessions.--Wtableui_auth_sessionsui_auth_sessions-CREATE TABLE ui_auth_sessions( session_id TEXT NOT NULL, creation_time BIGINT NOT NULL, serverdict TEXT NOT NULL, clientdict TEXT NOT NULL, uri TEXT NOT NULL, method TEXT NOT NULL, description TEXT NOT NULL, UNIQUE (session_id) )O=3indexlocal_current_membership_room_idxlocal_current_membership$CREATE INDEX local_current_membership_room_idx ON local_current_membership(room_id) E=Iindexlocal_current_membership_idxlocal_current_membershipCREATE UNIQUE INDEX local_current_membership_idx ON local_current_membership(user_id, room_id)~== tablelocal_current_membershiplocal_current_membershipCREATE TABLE local_current_membership ( room_id TEXT NOT NULL, user_id TEXT NOT NULL, event_id TEXT NOT NULL, membership TEXT NOT NULL ) OA;indexdevice_lists_remote_resync_ts_idxdevice_lists_remote_resyncCREATE INDEX device_lists_remote_resync_ts_idx ON device_lists_remote_resync (added_ts) IAAindexdevice_lists_remote_resync_idxdevice_lists_remote_resync3CREATE UNIQUE INDEX device_lists_remote_resync_idx ON device_lists_remote_resync (user_id)AACtabledevice_lists_remote_resyncdevice_lists_remote_resyncCREATE TABLE device_lists_remote_resync ( user_id TEXT NOT NULL, added_ts BIGINT NOT NULL )DOEindexe2e_cross_signing_signatures2_idxe2e_cross_signing_signaturesCREATE INDEX e2e_cross_signing_signatures2_idx ON e2e_cross_signing_signatures(user_id, target_user_id, target_device_id)~K)%indexroom_retention_max_lifetime_idxroom_retentionCREATE INDEX room_retention_max_lifetime_idx on room_retention(max_lifetime);}O)indexsqlite_autoindex_room_retention_1room_retention?-|))tableroom_retentionroom_retention>CREATE TABLE room_retention( room_id TEXT, event_id TEXT, min_lifetime BIGINT, max_lifetime BIGINT, PRIMARY KEY(room_id, event_id) ).{Aindexsqlite_autoindex_devices_1devicesxzEtabledevicesdevicesCREATE TABLE "devices" ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, display_name TEXT, last_seen BIGINT, ip TEXT, user_agent TEXT, hidden BOOLEAN DEFAULT 0, CONSTRAINT device_uniqueness UNIQUE (user_id, device_id) )yI%Oindexevent_labels_room_id_label_idxevent_labelsCREATE INDEX event_labels_room_id_label_idx ON event_labels(room_id, label, topological_ordering){8xK%indexsqlite_autoindex_event_labels_1event_labels8w%%1tableevent_labelsevent_labelsCREATE TABLE event_labels ( event_id TEXT, label TEXT, room_id TEXT NOT NULL, topological_ordering BIGINT NOT NULL, PRIMARY KEY(event_id, label) )vvA%indexevent_expiry_expiry_ts_idxevent_expiryCREATE INDEX event_expiry_expiry_ts_idx ON event_expiry(expiry_ts)8uK%indexsqlite_autoindex_event_expiry_1event_expiryuO)\6jD  w Q*[1a6 ( KW c (6[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOi8]!@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO8]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBRJ8]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEU 8]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN 8]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJj8]!@anon-20191002_181700-260:localhost:8800PEYMVGORHU26[!@anon-20191002_181700-63:localhost:8800VLTVDGDALO[8]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS 6_,`- _ + ] # X ,  E { 1g&4h-aJ3g5d6[!E@anon-20191002_181700-26:localhost:8800UBEJKIDKFLmq127.0.0.1Perl + Net::Async::HTTP/0.44d5[!E@anon-20191002_181700-25:localhost:8800IOMJWWQXRTmm127.0.0.1Perl + Net::Async::HTTP/0.44d4[!E@anon-20191002_181700-24:localhost:8800MRUESCORNAmi127.0.0.1Perl + Net::Async::HTTP/0.44d3[!E@anon-20191002_181700-23:localhost:8800SNOHQGNOOLmS127.0.0.1Perl + Net::Async::HTTP/0.44d2[!E@anon-20191002_181700-22:localhost:8800HVNUPXSZHYmd127.0.0.1Perl + Net::Async::HTTP/0.44d1[!E@anon-20191002_181700-21:localhost:8800KHJDEDTDXIm?z127.0.0.1Perl + Net::Async::HTTP/0.44d0[!E@anon-20191002_181700-20:localhost:8800MIHVANNPDDm[127.0.0.1Perl + Net::Async::HTTP/0.449/[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL9.[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK9-[!@anon-20191002_181700-17:localhost:8800VRXIORHZEXd,[!E@anon-20191002_181700-16:localhost:8800OZMNCFRFTFm127.0.0.1Perl + Net::Async::HTTP/0.44d+[!E@anon-20191002_181700-15:localhost:8800KLXIHUSAOGm127.0.0.1Perl + Net::Async::HTTP/0.44I*[%)@anon-20191002_181700-14:localhost:8800login_devicedevice displayd)[!E@anon-20191002_181700-14:localhost:8800UAGQKBVBOWmo127.0.0.1Perl + Net::Async::HTTP/0.44d([!E@anon-20191002_181700-12:localhost:8800ATMHTVRQSQm127.0.0.1Perl + Net::Async::HTTP/0.449'[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZGd&[!E@anon-20191002_181700-11:localhost:8800GGVPWYJLFAm?127.0.0.1Perl + Net::Async::HTTP/0.44d%[!E@anon-20191002_181700-10:localhost:8800FPVSQGRDQGm127.0.0.1Perl + Net::Async::HTTP/0.44J$Y%-@anon-20191002_181700-9:localhost:8800login_devicenew display namec#Y!E@anon-20191002_181700-9:localhost:8800MGUQLDGKRQmk127.0.0.1Perl + Net::Async::HTTP/0.44?"Y@anon-20191002_181700-8:localhost:8800device_1display 1?!Y@anon-20191002_181700-8:localhost:8800device_2display 2c Y!E@anon-20191002_181700-8:localhost:8800EBQTKFPJODm}(127.0.0.1Perl + Net::Async::HTTP/0.44cY!E@anon-20191002_181700-7:localhost:8800FWKDVNUPWXmy127.0.0.1Perl + Net::Async::HTTP/0.44HY%)@anon-20191002_181700-6:localhost:8800login_devicedevice displaycY!E@anon-20191002_181700-6:localhost:8800YDTVVUXGOWmx1127.0.0.1Perl + Net::Async::HTTP/0.44cY!E@anon-20191002_181700-5:localhost:8800WYYDRNGEZSmua127.0.0.1Perl + Net::Async::HTTP/0.44cY!E@anon-20191002_181700-4:localhost:8800OXDBJBCTVLms-127.0.0.1Perl + Net::Async::HTTP/0.44U=!E@spyglass:localhost:8800BUNJZHLDRSmp127.0.0.1Perl + Net::Async::HTTP/0.44);!@02login:localhost:8800TUIMTGQXHF*;#@02login:localhost:8800my_super_id);!@02login:localhost:8800FHCBMHROPD);!@02login:localhost:8800OFRAEFMMXR9[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC8Y!@anon-20191002_181700-2:localhost:8800RDNVTAXLBR8Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF1K!@chrtestuser-39-:localhost:8800HQOBQJZUDV1K!@chrtestuser-10-:localhost:8800NPPZGPSUFO2M!@chrtestuser-233-:localhost:8800AJJFHKXPHA2M!@chrtestuser-163-:localhost:8800FYFIWVYQAG2M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ2 M!@chrtestuser-124-:localhost:8800BIQFYVWLZN2 M!@chrtestuser-123-:localhost:8800GABZLTWEEJ1 K!@chrtestuser-93-:localhost:8800HXQEHKTZDR1 K!@chrtestuser-91-:localhost:8800XTTHVJFCAE1 K!@chrtestuser-64-:localhost:8800WQBPBXVRII1K!@chrtestuser-92-:localhost:8800CTWNGYMNFD1K!@chrtestuser-63-:localhost:8800DYMSSHFRND1K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS1K!@chrtestuser-34-:localhost:8800JUJQTQDDTH1K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV.A%@mycooluser:localhost:8800my_device_id,A!@user-upper:localhost:8800XOXAYMRLKGAk!@01register-user-20191002_181700:localhost:8800KRNGWLGVFN +4X & Z ( \ 7  /QJ~LNda[!E@anon-20191002_181700-71:localhost:8800TCTQJEZQFIm127.0.0.1Perl + Net::Async::HTTP/0.44d`[!E@anon-20191002_181700-70:localhost:8800PGQYANGMEIm.127.0.0.1Perl + Net::Async::HTTP/0.44d_[!E@anon-20191002_181700-68:localhost:8800GNKAPUDEUDmA127.0.0.1Perl + Net::Async::HTTP/0.44d^[!E@anon-20191002_181700-67:localhost:8800ONYGLHFWXMmg127.0.0.1Perl + Net::Async::HTTP/0.44d][!E@anon-20191002_181700-64:localhost:8800NPZFHRJOQIm127.0.0.1Perl + Net::Async::HTTP/0.44d\[!E@anon-20191002_181700-65:localhost:8800JPWZALXKWPm&127.0.0.1Perl + Net::Async::HTTP/0.44d[[!E@anon-20191002_181700-63:localhost:8800VLTVDGDALOmK127.0.0.1Perl + Net::Async::HTTP/0.44dZ[!E@anon-20191002_181700-62:localhost:8800PJTOWKTNYXms127.0.0.1Perl + Net::Async::HTTP/0.44dY[!E@anon-20191002_181700-61:localhost:8800SXUBBXHSVUm^127.0.0.1Perl + Net::Async::HTTP/0.44dX[!E@anon-20191002_181700-60:localhost:8800JSZKVAFOZGm\127.0.0.1Perl + Net::Async::HTTP/0.44dW[!E@anon-20191002_181700-59:localhost:8800DRVLOZZUPQmZ127.0.0.1Perl + Net::Async::HTTP/0.44dV[!E@anon-20191002_181700-57:localhost:8800NFIQURSFUOmUB127.0.0.1Perl + Net::Async::HTTP/0.44dU[!E@anon-20191002_181700-55:localhost:8800GJICSOZSSMmN127.0.0.1Perl + Net::Async::HTTP/0.44dT[!E@anon-20191002_181700-54:localhost:8800WKSZTPHXTGmK127.0.0.1Perl + Net::Async::HTTP/0.44dS[!E@anon-20191002_181700-53:localhost:8800HCQPROAEXNmG127.0.0.1Perl + Net::Async::HTTP/0.44dR[!E@anon-20191002_181700-52:localhost:8800KYXATQJIHBmBj127.0.0.1Perl + Net::Async::HTTP/0.449Q[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPdP[!E@anon-20191002_181700-51:localhost:8800EXJVEMMDWDm?127.0.0.1Perl + Net::Async::HTTP/0.44dO[!E@anon-20191002_181700-50:localhost:8800BNBHLRCHUXm=127.0.0.1Perl + Net::Async::HTTP/0.44dN[!E@anon-20191002_181700-48:localhost:8800AJQOQZXPLWm6127.0.0.1Perl + Net::Async::HTTP/0.44-MC!@cas_user=21:localhost:8800BIHKGABDWP9L[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLU@K[%@anon-20191002_181700-45:localhost:8800xyzzydisplay_namekJ[%E@anon-20191002_181700-44:localhost:8800xyzzydisplay_namem-127.0.0.1Perl + Net::Async::HTTP/0.449I[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPD9H[!@anon-20191002_181700-43:localhost:8800CHTLJMKZAB#G/!@0:localhost:8800BLOODGXNYN#F/!@0:localhost:8800DWCYKFLVQMdE[!E@anon-20191002_181700-41:localhost:8800OLPAIVSAQXm'#127.0.0.1Perl + Net::Async::HTTP/0.44dD[!E@anon-20191002_181700-40:localhost:8800MBXHKMDVDXm%K127.0.0.1Perl + Net::Async::HTTP/0.44dC[!E@anon-20191002_181700-39:localhost:8800FJQMNXTSGYm127.0.0.1Perl + Net::Async::HTTP/0.44dB[!E@anon-20191002_181700-38:localhost:8800COQUCEUZOKm127.0.0.1Perl + Net::Async::HTTP/0.44dA[!E@anon-20191002_181700-37:localhost:8800VQICIZWNXHm3127.0.0.1Perl + Net::Async::HTTP/0.44d@[!E@anon-20191002_181700-36:localhost:8800KRWZEWLMKOmJ127.0.0.1Perl + Net::Async::HTTP/0.44d?[!E@anon-20191002_181700-35:localhost:8800EALQMPIKHOm 127.0.0.1Perl + Net::Async::HTTP/0.44d>[!E@anon-20191002_181700-34:localhost:8800ZGZSYILFGAm127.0.0.1Perl + Net::Async::HTTP/0.44d=[!E@anon-20191002_181700-33:localhost:8800SKGXUBFLKNm127.0.0.1Perl + Net::Async::HTTP/0.44d<[!E@anon-20191002_181700-32:localhost:8800DXDIQOFVCBm127.0.0.1Perl + Net::Async::HTTP/0.44d;[!E@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCm127.0.0.1Perl + Net::Async::HTTP/0.449:[!@anon-20191002_181700-30:localhost:8800STWEJRRVAK99[!@anon-20191002_181700-29:localhost:8800WSREAIROYNd8[!E@anon-20191002_181700-28:localhost:8800XMXOPMIZZUmz127.0.0.1Perl + Net::Async::HTTP/0.44d7[!E@anon-20191002_181700-27:localhost:8800TWNKNEABLTmv127.0.0.1Perl + Net::Async::HTTP/0.44 StM%tO* q M (  o J % m H # n J (  H p 8 X w>Z!x?["w>\#$1%@36:localhost:8800guest_device$1%@35:localhost:8800guest_deviceBBq!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZ6%7!@admin:localhost:8800GMJMIKRCOD]8]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA8]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT8]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN6[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQ(8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBE8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS6[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFA&8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH6[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQG%8]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA7]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH7]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW~7]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF}7]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF|7]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUIz7]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL{7]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMGx7]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHGy#/%@9:localhost:8800guest_device#/%@8:localhost:8800guest_device!/!@8:localhost:8800SPYUTHBEKD#/%@7:localhost:8800guest_device#/%@6:localhost:8800guest_device#/%@5:localhost:8800guest_device#/%@4:localhost:8800guest_device#/%@3:localhost:8800guest_device$1%@34:localhost:8800guest_device$1%@33:localhost:8800guest_device$1%@32:localhost:8800guest_device$1%@31:localhost:8800guest_device$1%@30:localhost:8800guest_device#/%@2:localhost:8800guest_device$1%@29:localhost:8800guest_device$1%@28:localhost:8800guest_device$1%@27:localhost:8800guest_device$1%@26:localhost:8800guest_device$1%@25:localhost:8800guest_device$1%@24:localhost:8800guest_device$1%@23:localhost:8800guest_device$1%@22:localhost:8800guest_device$1%@21:localhost:8800guest_device$1%@20:localhost:8800guest_device#/%@1:localhost:8800guest_device$1%@19:localhost:8800guest_device$1%@18:localhost:8800guest_device$1%@17:localhost:8800guest_device$1%@16:localhost:8800guest_device$1%@15:localhost:8800guest_device$1%@14:localhost:8800guest_device$1%@13:localhost:8800guest_device$1%@12:localhost:8800guest_device$1%@11:localhost:8800guest_device$1%@10:localhost:8800guest_device /!@0:localhost:8800DWCYKFLVQMF /!@0:localhost:8800BLOODGXNYNG';#@02login:localhost:8800my_super_id&;!@02login:localhost:8800TUIMTGQXHF&;!@02login:localhost:8800OFRAEFMMXR&;!@02login:localhost:8800FHCBMHROPD=k! @01register-user-20191002_181700:localhost:8800KRNGWLGVFN B__Uq: V  r 9 W  s :  X t;Y u<X!v=Y zA$8]!@an6[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZG'8]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS8]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU8]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW5Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF6[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL/8]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS8]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ8]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ8]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD8]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA8]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ8]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM8]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT8]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ6[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK.8]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ8]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB8]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF8]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN8]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH6[!@anon-20191002_181700-17:localhost:8800VRXIORHZEX-8]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY8]!@anon-20191002_181700-170:localhost:8800SULWIONTNX6[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTF,8]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW8]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ8]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE8]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ8]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL8]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF8]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN8]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD6[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOG+8]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN8]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV8]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT8]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD8]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY8]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG8]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA8]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8[%@anon-20191002_181700-14:localhost:8800login_device*6[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOW)8]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8]!@anon-20191002_181700-140:localhost:8800OLUEHITWUA '\4h 6 j  8 l  :n<n9k4d,\e]!E@anon-20191002_181700-119:localhost:8800CPKUOIOMCLm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-117:localhost:8800AOWWBWACSKm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-116:localhost:8800NOEVNPHDUZmB127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-115:localhost:8800XPQYONRAEBmg127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-114:localhost:8800CMIIGGQSIHm-127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-113:localhost:8800DEIMBREIQTm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-112:localhost:8800NJWUEDBXDEmɸ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-110:localhost:8800LARRQIDFNHmq127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-109:localhost:8800OVPPVZDCAAm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-108:localhost:8800KLPFELDKEHm}127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-107:localhost:8800IZRBPAPTCWmp127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-106:localhost:8800SACQZSUOIFm[P127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-104:localhost:8800LWMHDFOEAFmC127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-102:localhost:8800GRLAMJPVVLm)127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-103:localhost:8800WCYOWUZDUIm>127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-100:localhost:8800DHGUQTFIHGm"e127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-101:localhost:8800PXXMUXFBMGm127.0.0.1Perl + Net::Async::HTTP/0.44dw[!E@anon-20191002_181700-99:localhost:8800ZATUVUGXMYm*127.0.0.1Perl + Net::Async::HTTP/0.44dv[!E@anon-20191002_181700-96:localhost:8800TASTZEHNVLmQ127.0.0.1Perl + Net::Async::HTTP/0.44du[!E@anon-20191002_181700-97:localhost:8800JTJHHIHPPZm+127.0.0.1Perl + Net::Async::HTTP/0.44dt[!E@anon-20191002_181700-95:localhost:8800RLXRFTIWZTm127.0.0.1Perl + Net::Async::HTTP/0.44ds[!E@anon-20191002_181700-93:localhost:8800JXLBIPXXNBmA127.0.0.1Perl + Net::Async::HTTP/0.44dr[!E@anon-20191002_181700-90:localhost:8800BJDBLNAUERm127.0.0.1Perl + Net::Async::HTTP/0.44dq[!E@anon-20191002_181700-91:localhost:8800UIADKEMPGAmuI127.0.0.1Perl + Net::Async::HTTP/0.44dp[!E@anon-20191002_181700-88:localhost:8800GEBSMXLRDImq127.0.0.1Perl + Net::Async::HTTP/0.44do[!E@anon-20191002_181700-89:localhost:8800OFESILMBJHma+127.0.0.1Perl + Net::Async::HTTP/0.44dn[!E@anon-20191002_181700-86:localhost:8800YRHRLSEQYWm?127.0.0.1Perl + Net::Async::HTTP/0.44dm[!E@anon-20191002_181700-87:localhost:8800NPXBGXDHGZmY127.0.0.1Perl + Net::Async::HTTP/0.44dl[!E@anon-20191002_181700-84:localhost:8800YUGLTPPJENmq127.0.0.1Perl + Net::Async::HTTP/0.44dk[!E@anon-20191002_181700-85:localhost:8800ITOHGGKZTVm,127.0.0.1Perl + Net::Async::HTTP/0.44dj[!E@anon-20191002_181700-83:localhost:8800STLQYGHMSUm ;127.0.0.1Perl + Net::Async::HTTP/0.44di[!E@anon-20191002_181700-82:localhost:8800JESTYYWXIOm127.0.0.1Perl + Net::Async::HTTP/0.44dh[!E@anon-20191002_181700-81:localhost:8800CWYDKHHDSEm:127.0.0.1Perl + Net::Async::HTTP/0.44dg[!E@anon-20191002_181700-80:localhost:8800YTTBSSDSAFm127.0.0.1Perl + Net::Async::HTTP/0.44df[!E@anon-20191002_181700-79:localhost:8800EJTCNAZVHDm127.0.0.1Perl + Net::Async::HTTP/0.44de[!E@anon-20191002_181700-77:localhost:8800FSPHKPOXWNm&127.0.0.1Perl + Net::Async::HTTP/0.44dd[!E@anon-20191002_181700-75:localhost:8800RNMICKNMBMmHm127.0.0.1Perl + Net::Async::HTTP/0.44dc[!E@anon-20191002_181700-74:localhost:8800SVXLVPCWLXm127.0.0.1Perl + Net::Async::HTTP/0.44db[!E@anon-20191002_181700-73:localhost:8800XAYBGVYWKCm127.0.0.1Perl + Net::Async::HTTP/0.44 )0` ( X K { > 1a)Y!QD7TP1/%E@3:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-160:localhost:8800RSEHRUSFUDm127.0.0.1Perl + Net::Async::HTTP/0.44P//%E@2:localhost:8800guest_devicem޵127.0.0.1Perl + Net::Async::HTTP/0.44P./%E@1:localhost:8800guest_devicemȫ127.0.0.1Perl + Net::Async::HTTP/0.44:-]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYNe,]!E@anon-20191002_181700-158:localhost:8800XSKFBBFHAVm127.0.0.1Perl + Net::Async::HTTP/0.44:+]!@anon-20191002_181700-157:localhost:8800FXSFHLELFTe*]!E@anon-20191002_181700-156:localhost:8800KJWWDXWUBDm127.0.0.1Perl + Net::Async::HTTP/0.44:)]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJYe(]!E@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGmqh127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-153:localhost:8800RAWLINNCFAm`y127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-152:localhost:8800GXUCZNSPYGmKN127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-151:localhost:8800OZBCDWREHRm=127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-149:localhost:8800AGJMWNVTGMmf127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-150:localhost:8800RWWSTPGDUMm/127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-146:localhost:8800FNNRVHNVLIm^127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-143:localhost:8800ZFSJBJHVKYm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-144:localhost:8800KPCPVEDJYHm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-142:localhost:8800DLSRULHTCQm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-141:localhost:8800XOYNHFFWDUm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-140:localhost:8800OLUEHITWUAmL127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-138:localhost:8800JFLHGXHKXSmj127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-136:localhost:8800HMGQCGXZSSmI127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-137:localhost:8800TZFFQCVKWQmd127.0.0.1Perl + Net::Async::HTTP/0.44:]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUAe]!E@anon-20191002_181700-134:localhost:8800PCQACQPKQAm3127.0.0.1Perl + Net::Async::HTTP/0.44:]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCAe]!E@anon-20191002_181700-131:localhost:8800SOOHJVIHORmH127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-132:localhost:8800JPOUKBEMRTm&127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-129:localhost:8800PFGGATLHBEm127.0.0.1Perl + Net::Async::HTTP/0.44:]!@anon-20191002_181700-130:localhost:8800OESOAGWHDNe]!E@anon-20191002_181700-127:localhost:8800DDIVPYVSUImu127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-128:localhost:8800TAEIHPVZLYm 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-125:localhost:8800KJCLUQSSUQmc127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-126:localhost:8800NXVZZYYNXFm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-124:localhost:8800CLOWKQMSAJml127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-123:localhost:8800GANYBEJLPQml127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-122:localhost:8800KKXSFRABDEm_127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-121:localhost:8800SXEBHSUFRMm_127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-120:localhost:8800NYHQUMFAGSm9127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-118:localhost:8800EGGHWNCYVGm127.0.0.1Perl + Net::Async::HTTP/0.44 >>>Us: V  r 9  W  s :  X t;W u<Xv=Y wZ!8]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIF6[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRT58]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZA18]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT08]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTK/8]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLF.8]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEX-8]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKS,8]!@anon-20191002_181700-252:localhost:8800RURXOUWORG+8]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ*8]!@anon-20191002_181700-250:localhost:8800HLUDALFTVR)6[!@anon-20191002_181700-24:localhost:8800MRUESCORNA48]!@anon-20191002_181700-249:localhost:8800TCARNJMFBO(8]!@anon-20191002_181700-248:localhost:8800SFZRVIZXHM'8]!@anon-20191002_181700-247:localhost:8800TRPUOTMOOT%8]!@anon-20191002_181700-246:localhost:8800VWLZTFZJKU&8]!@anon-20191002_181700-245:localhost:8800BMGHUZBIKD$8]!@anon-20191002_181700-244:localhost:8800VWUTZPSOAH#8]!@anon-20191002_181700-243:localhost:8800FMNGREYZML"8]!@anon-20191002_181700-242:localhost:8800AYBUQGWFIB!8]!@anon-20191002_181700-241:localhost:8800AXXWURZRJC 8]!@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ6[!@anon-20191002_181700-23:localhost:8800SNOHQGNOOL38]!@anon-20191002_181700-239:localhost:8800WFWDJJSKCM8]!@anon-20191002_181700-238:localhost:8800CJBYPQAOBX8]!@anon-20191002_181700-237:localhost:8800GTKLCHUYBN8]!@anon-20191002_181700-236:localhost:8800ALVQESJRHC8]!@anon-20191002_181700-235:localhost:8800OYRPJJEYFG8]!@anon-20191002_181700-234:localhost:8800KLAICDFHKH8]!@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY8]!@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB6[!@anon-20191002_181700-22:localhost:8800HVNUPXSZHY28]!@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!@anon-20191002_181700-225:localhost:8800ZNKOABDJUU8]!@anon-20191002_181700-224:localhost:8800VJTZAJOEFY 8]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDW 8]!@anon-20191002_181700-222:localhost:8800VOKSLIDSSO 8]!@anon-20191002_181700-221:localhost:8800REITENATXK 8]!@anon-20191002_181700-220:localhost:8800OOLATWHSMP 6[!@anon-20191002_181700-21:localhost:8800KHJDEDTDXI18]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP8]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH8]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN8]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF6[!@anon-20191002_181700-20:localhost:8800MIHVANNPDD08]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO8]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDH *E" g  Y x O   o 7g/_;[KQ[1%E@18:localhost:8800guest_devicemF127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-190:localhost:8800QIEZENAKEZm127.0.0.1Perl + Net::Async::HTTP/0.44QY1%E@17:localhost:8800guest_devicemE127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-189:localhost:8800RWJCTIMOHJm5127.0.0.1Perl + Net::Async::HTTP/0.44QW1%E@16:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-188:localhost:8800HQVPFKSROBm127.0.0.1Perl + Net::Async::HTTP/0.44QU1%E@15:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-187:localhost:8800PTZIGIMOFFm_127.0.0.1Perl + Net::Async::HTTP/0.44QS1%E@14:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-186:localhost:8800MCDWETOPHNm2%127.0.0.1Perl + Net::Async::HTTP/0.44QQ1%E@13:localhost:8800guest_devicemP<127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-185:localhost:8800VORURBUNEEmU127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-184:localhost:8800VWQCQPUGVZm127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-183:localhost:8800PNPQZSANHGmG127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-182:localhost:8800TONQTGLEJVm127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-181:localhost:8800EXTONIIZTHm)127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-179:localhost:8800LJJECQVQQOm127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-178:localhost:8800RLQRIRERLRm127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-177:localhost:8800HOVRIDACJIm 127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-176:localhost:8800KYCPIRLNMAm\127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-175:localhost:8800LQUTZGXEPWmV127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-174:localhost:8800XYSQAGTUQWmH127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-173:localhost:8800HMAAIYSKTYm1B127.0.0.1Perl + Net::Async::HTTP/0.44QD1%E@12:localhost:8800guest_devicem/Z127.0.0.1Perl + Net::Async::HTTP/0.44QC1%E@11:localhost:8800guest_devicem+a127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-170:localhost:8800SULWIONTNXm'127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-169:localhost:8800MFKRKTWRFRmµ127.0.0.1Perl + Net::Async::HTTP/0.44e@]!E@anon-20191002_181700-168:localhost:8800LFMVYJKZWWm127.0.0.1Perl + Net::Async::HTTP/0.44&?1%@10:localhost:8800guest_device%>/%@9:localhost:8800guest_deviceN=/!E@8:localhost:8800SPYUTHBEKDm2127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-167:localhost:8800CZRBBMXBTZm127.0.0.1Perl + Net::Async::HTTP/0.44P;/%E@8:localhost:8800guest_devicem\127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-165:localhost:8800YDADSUNIXEmf127.0.0.1Perl + Net::Async::HTTP/0.44P9/%E@7:localhost:8800guest_devicemy127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-164:localhost:8800GPCCYGLLRJmE127.0.0.1Perl + Net::Async::HTTP/0.44P7/%E@6:localhost:8800guest_devicemY?127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-163:localhost:8800IWJPSDUPWLm'127.0.0.1Perl + Net::Async::HTTP/0.44P5/%E@5:localhost:8800guest_devicem8127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-162:localhost:8800PCGWJXGQXFm 127.0.0.1Perl + Net::Async::HTTP/0.44P3/%E@4:localhost:8800guest_devicem"127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-161:localhost:8800EYZNWDJKKNm127.0.0.1Perl + Net::Async::HTTP/0.44 )D d  @ 0 t P@` P,p8he]!E@anon-20191002_181700-215:localhost:8800YMMAIPPEFOm.127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-214:localhost:8800MEYMCWHAWPm 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-213:localhost:8800LEQWCYQYGHm I127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-212:localhost:8800RTYZTLKABNm]127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-211:localhost:8800FQOBFRKZSMmތ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-209:localhost:8800LYXETIOPNTm4127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-210:localhost:8800PHSGQQQBDFm{127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-208:localhost:8800NIDXMAEJEYmCZ127.0.0.1Perl + Net::Async::HTTP/0.44Q|1%E@34:localhost:8800guest_devicems127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-207:localhost:8800FTYKIESLCCm^127.0.0.1Perl + Net::Async::HTTP/0.44Qz1%E@33:localhost:8800guest_devicem3 127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-206:localhost:8800AXGAUUMYLVmw127.0.0.1Perl + Net::Async::HTTP/0.44Qx1%E@32:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-205:localhost:8800MIXIJDMFDOm}127.0.0.1Perl + Net::Async::HTTP/0.44Qv1%E@31:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-204:localhost:8800HOFBXQYKDHmR127.0.0.1Perl + Net::Async::HTTP/0.44Qt1%E@30:localhost:8800guest_devicemq127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-203:localhost:8800UCNLRVNQIFm8]!@anon-20191002_181700-271:localhost:8800EYEJMZUSJY;8]!@anon-20191002_181700-270:localhost:8800SRSYWQDCQU<6[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFL6 &0` ( X P H$h0`(X e*]!E@anon-20191002_181700-251:localhost:8800PMDEYZFDXJm{127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-250:localhost:8800HLUDALFTVRm{$127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-249:localhost:8800TCARNJMFBOm(8127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-248:localhost:8800SFZRVIZXHMm'\127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-246:localhost:8800VWLZTFZJKUmk127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-247:localhost:8800TRPUOTMOOTmi*127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-245:localhost:8800BMGHUZBIKDm 127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-244:localhost:8800VWUTZPSOAHm x127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-243:localhost:8800FMNGREYZMLm127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-242:localhost:8800AYBUQGWFIBm?127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-241:localhost:8800AXXWURZRJCmϕ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-240:localhost:8800CDHFDOSRPZmϒ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-239:localhost:8800WFWDJJSKCMm¬G127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-238:localhost:8800CJBYPQAOBXm«127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-237:localhost:8800GTKLCHUYBNmŒ{127.0.0.1Perl + Net::Async::HTTP/0.44Q1%E@36:localhost:8800guest_devicem¨127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-236:localhost:8800ALVQESJRHCmpa127.0.0.1Perl + Net::Async::HTTP/0.44Q1%E@35:localhost:8800guest_devicem‰127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-235:localhost:8800OYRPJJEYFGmXl127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-234:localhost:8800KLAICDFHKHmXj127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-233:localhost:8800ZGKUWUKWUYm?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-232:localhost:8800UUXEQUNCHPm?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-231:localhost:8800BJMMTIEXWQm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-230:localhost:8800ZDQWNSBGEBm"127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-229:localhost:8800HEUCKALXOCm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-228:localhost:8800UJAKRYEXDSm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-227:localhost:8800WRSATVMLKKmߞ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-226:localhost:8800AUORQAXWJLm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-225:localhost:8800ZNKOABDJUUm_127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-224:localhost:8800VJTZAJOEFYm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-223:localhost:8800IOQWEQAUDWm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-222:localhost:8800VOKSLIDSSOmE127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-221:localhost:8800REITENATXKm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-220:localhost:8800OOLATWHSMPmvV127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-219:localhost:8800KBEVVOFICUmu127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-218:localhost:8800EJUSKMCYXQmU127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-217:localhost:8800UMNJQPXSWWmU>127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-216:localhost:8800RYBXPLVXBJm/127.0.0.1Perl + Net::Async::HTTP/0.44 '~0# S  K {  Cs f.^&VN~eQ]!E@anon-20191002_181700-292:localhost:8800GGCVZACJDJmg127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-291:localhost:8800OPDSPHGDRKm^t127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-290:localhost:8800HIUKIRMYDGmD`127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-289:localhost:8800WRUIAYGXANm]!E@anon-20191002_181700-272:localhost:8800NRGYAKPXELmA}127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-273:localhost:8800SZMGOEVXQWm[s127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-270:localhost:8800SRSYWQDCQUm127.0.0.1Perl + Net::Async::HTTP/0.44e;]!E@anon-20191002_181700-271:localhost:8800EYEJMZUSJYm127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-269:localhost:8800EDTNFCDRMRmq127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-268:localhost:8800BTQHLEFFPUm127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-266:localhost:8800MREALOZRTWm 127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-265:localhost:8800COAARRCECCmſ;127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-264:localhost:8800DYYKUWOSTJmų127.0.0.1Perl + Net::Async::HTTP/0.44e5]!E@anon-20191002_181700-263:localhost:8800KUHOBSXQVMmšT127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-262:localhost:8800OLJVXJZUXGmő'127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-261:localhost:8800HLJRYNNHWEmŁ127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-260:localhost:8800PEYMVGORHUmq127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-259:localhost:8800CBTLKTDDZAma127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-258:localhost:8800ZRYHQQPEDTmE127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-257:localhost:8800AZPFFCLWTKm/127.0.0.1Perl + Net::Async::HTTP/0.44:.]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLFe-]!E@anon-20191002_181700-254:localhost:8800XJEYVFLUEXm127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-253:localhost:8800VCNUHOFNKSm<127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-252:localhost:8800RURXOUWORGm0127.0.0.1Perl + Net::Async::HTTP/0.44 =w=["Us: V  t ;  W  u <  X t;Y u<Z!vw>\#8]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGSq8]!@anon-20191002_181700-324:localhost:8800KKATIXOBNFp8]!@anon-20191002_181700-323:localhost:8800BHOVENVWZCo8]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTn8]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCm8]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBl6[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC;8]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAk8]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY8]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ8]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM8]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO8]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJ6[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKO@8]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRA8]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJ8]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXT8]!@anon-20191002_181700-366:localhost:8800FABJQITKMR8]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWO8]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTB8]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXF8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSUR8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJ8]!@anon-20191002_181700-360:localhost:8800XKNFVZJCRE6[!@anon-20191002_181700-35:localhost:8800EALQMPIKHO?8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBR8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILN8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERT8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFN8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJI8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKH8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRW8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMP8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFR8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAI6[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGA>8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYS8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZ8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYU8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROP8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHA8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML8]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP8]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW6[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKN=8]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH8]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD~8]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF}8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQIS|8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLI{8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYYz8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUy8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGPx8]!@anon-20191002_181700-331:localhost:8800COONNUXFOLw8]!@anon-20191002_181700-330:localhost:8800TFGJMHITULv6[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCB<8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLSu8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUOt8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHCs8]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYTr &0` ( X P Hx@p8h0`ew]!E@anon-20191002_181700-331:localhost:8800COONNUXFOLm$127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-330:localhost:8800TFGJMHITULmͺ127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-329:localhost:8800KKMPVZBDLSm˟e127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-328:localhost:8800DZKGSTQGUOmˈ 127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-327:localhost:8800WQCLQHKZHCmn127.0.0.1Perl + Net::Async::HTTP/0.44er]!E@anon-20191002_181700-326:localhost:8800YBIXYTHJYTmP127.0.0.1Perl + Net::Async::HTTP/0.44eq]!E@anon-20191002_181700-325:localhost:8800CDWNGKHJGSmH127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-324:localhost:8800KKATIXOBNFm&127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-323:localhost:8800BHOVENVWZCm127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-322:localhost:8800CMZHVCVAXTm 127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-321:localhost:8800WXFXGVMZGCm127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-320:localhost:8800WFQFGOHNGBm127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-319:localhost:8800HSJRSHPEIAm127.0.0.1Perl + Net::Async::HTTP/0.44ej]!E@anon-20191002_181700-318:localhost:8800PHFUHLOHRJmʳ127.0.0.1Perl + Net::Async::HTTP/0.44ei]!E@anon-20191002_181700-317:localhost:8800KSXFFXWMCBmʝt127.0.0.1Perl + Net::Async::HTTP/0.44eh]!E@anon-20191002_181700-316:localhost:8800JHIWJLKOFGmʛ127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-315:localhost:8800KXXAQONTRLmʙ127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-314:localhost:8800BTSWZNQVTPmʗT127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-312:localhost:8800LFIOTRIQVMmi127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-311:localhost:8800BNVFQNMSXMm:127.0.0.1Perl + Net::Async::HTTP/0.44ec]!E@anon-20191002_181700-310:localhost:8800UKYXDPZQOOm%127.0.0.1Perl + Net::Async::HTTP/0.44eb]!E@anon-20191002_181700-309:localhost:8800OEPQWZYGARm#127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-308:localhost:8800VRKBCOUWEFms127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-307:localhost:8800BEZNVUIADUm .127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-306:localhost:8800XZDIPYWWODm127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-305:localhost:8800PDQTBQSPGXm&127.0.0.1Perl + Net::Async::HTTP/0.44e]]!E@anon-20191002_181700-304:localhost:8800MQWNAFYDXKməB127.0.0.1Perl + Net::Async::HTTP/0.44e\]!E@anon-20191002_181700-303:localhost:8800FUOYNGGDMQmp,127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-302:localhost:8800PAWIWMHYHHm=o127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-301:localhost:8800SJPGITTBTXmo127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-300:localhost:8800ZZJIQPLATKm̔127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-299:localhost:8800BPDORAMNSEmȃ127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-298:localhost:8800GTROHDSCGVmE127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-297:localhost:8800DVSKNCGFXXm127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-296:localhost:8800SBLEQBXZQLm127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-295:localhost:8800CIYGWJHPPNmǷ3127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-294:localhost:8800RKGLRVXFMGmdžg127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-293:localhost:8800PVLMJRXINQm{127.0.0.1Perl + Net::Async::HTTP/0.44 =wUs: V  t ;  W  s <  Z !v=["w>Z#x?["w>Z!8]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ6[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXE8]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK6[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXD8]!@anon-20191002_181700-409:localhost:8800GINWCFSINT8]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW6[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC6[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYC8]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL8]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH6[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKB8]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE8]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH8]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS8]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE8]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP8]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ8]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM8]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO8]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF6[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHA8]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT8]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZ &0` ( X P Hx@p8h0`e]!E@anon-20191002_181700-371:localhost:8800MVADRLDOGOmS127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-370:localhost:8800SBQUDYTSCJmc127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-369:localhost:8800PMLSUBDYRAmx127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-368:localhost:8800OXEBNZFASJmϱ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-367:localhost:8800YMOZJNEHXTmϘ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-365:localhost:8800GEIVTPEZWOm~127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-366:localhost:8800FABJQITKMRm~127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-363:localhost:8800OFUEGGAJXFm`127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-364:localhost:8800PEYTIDQOTBm`127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-360:localhost:8800XKNFVZJCREmň127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-361:localhost:8800XCHGELQORJm^127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-362:localhost:8800DYTMFWLSURm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-359:localhost:8800NYAYBPPYBRmβ 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-357:localhost:8800TFBXZDXERTm]127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-358:localhost:8800YPZTVFTILNm)127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-356:localhost:8800ECXXWUQUFNm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-354:localhost:8800EEONPHMPKHm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-355:localhost:8800LDOCSGURJIms127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-353:localhost:8800JNEJUBWWRWm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-352:localhost:8800HQKTWVQFMPm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-350:localhost:8800TQWBNMPIAIm͒)127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-351:localhost:8800GHNDMAFVFRm͒+127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-349:localhost:8800IPTJJENAYSms127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-348:localhost:8800KYSIYINERZmV127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-346:localhost:8800CIUYDTNROPm5h127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-347:localhost:8800CFRSANQZYUm5k127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-345:localhost:8800QSMLRPQTHAm 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-343:localhost:8800QPHBRHJQMLm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-342:localhost:8800TTVUAXXSXPm„127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-341:localhost:8800GZLOUPOIMWm̢V127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-339:localhost:8800DEVPCFFDOHm̑*127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-338:localhost:8800OUNFKLKIBDmo127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-337:localhost:8800AOHNBPYYLFmS127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-336:localhost:8800OFRRIKPQISmR127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-335:localhost:8800WEGENLHOLImM127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-334:localhost:8800KPXDOKYVYYmK127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUm.127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-332:localhost:8800TBDDBAQUGPm127.0.0.1Perl + Net::Async::HTTP/0.44 '0` ( X P Hx@p8+[N:D]!@anon-20191002_181700-410:localhost:8800UDEVOELNMKeC]!E@anon-20191002_181700-409:localhost:8800GINWCFSINTm0 127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-408:localhost:8800XKDKZYMRFBm+!127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-407:localhost:8800RTGALMPCLSmj127.0.0.1Perl + Net::Async::HTTP/0.44:@]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGUe?]!E@anon-20191002_181700-405:localhost:8800QVDYLSWJGFm127.0.0.1Perl + Net::Async::HTTP/0.44e>]!E@anon-20191002_181700-404:localhost:8800QFVVSFPXDRmr127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-403:localhost:8800MFLWYWCNCIm127.0.0.1Perl + Net::Async::HTTP/0.44:<]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLIe;]!E@anon-20191002_181700-401:localhost:8800EBUCUMIOWSm127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-400:localhost:8800QHUMTZGCNWmҲ127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-399:localhost:8800PYXHCRNRQLmҚ127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-397:localhost:8800MUYZSHOUYAm҂127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-398:localhost:8800QJTBFOFNHMmҖ127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-396:localhost:8800ALHPRAAFGPm}127.0.0.1Perl + Net::Async::HTTP/0.44e5]!E@anon-20191002_181700-395:localhost:8800QBHVPKMMWEmd127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-394:localhost:8800PSPZGMAOEGmK127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-393:localhost:8800ABJMLTSTASm1p127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-392:localhost:8800GEJMGKQZNJm127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-391:localhost:8800XGNSQPEQLLm|127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-390:localhost:8800IMMWZCJBQHmI127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-389:localhost:8800NHRBBKCZKAm127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-388:localhost:8800WFNOXGPIPEmѧ127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-387:localhost:8800AJRMDNNIDHmђ127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-386:localhost:8800QTCKZJPBWSm}#127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-385:localhost:8800ZHNFADRSTEmP9127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-384:localhost:8800UKXQVESHRPmP=127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-383:localhost:8800CPGAGQTCJJm3127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-382:localhost:8800KSBAPZNICMm/127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-381:localhost:8800CRNWPBWJUOm127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-380:localhost:8800KLOHIVURCFm127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-379:localhost:8800XGMNNMSEOTm΅127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-378:localhost:8800BACPAMXENXm΃127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-377:localhost:8800IARUZBQDWZmЛ127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-375:localhost:8800ABNAUGMGBUmk~127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-376:localhost:8800IDKHLQVFRNmЇ127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-374:localhost:8800AEAOAEZYHYm;|127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-372:localhost:8800ADGVRBGQNMm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-373:localhost:8800LNMPGJNAVZm!%127.0.0.1Perl + Net::Async::HTTP/0.44 >Kf-Ws: ] $ y @  c *  F b )Gc,Hd.JKi08]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOH6[!@anon-20191002_181700-43:localhost:8800CHTLJMKZABH8]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQA8]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!@anon-20191002_181700-501:localhost:8800YBYGOFEONK 5Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVL8]!@anon-20191002_181700-499:localhost:8800VXSECXNERA 8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSC 8]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ 8]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]!@anon-20191002_181700-493:localhost:8800GRPWUCANVU 8]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU6[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWN8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ8]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS6[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLUL8]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH8]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ8]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]!@anon-20191002_181700-462:localhost:8800SKOLIDFQEN8]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZU8]!@anon-20191002_181700-460:localhost:8800GJEFYISBJP1[@anon-20191002_181700-45:localhost:8800xyzzyK8]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSG8]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC1[@anon-20191002_181700-44:localhost:8800xyzzyJ8]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJ8]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK6[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPDI &0` ( X {  Cs ;k3c+[#ej]!E@anon-20191002_181700-449:localhost:8800MYBVEJZYHYmS127.0.0.1Perl + Net::Async::HTTP/0.44ei]!E@anon-20191002_181700-446:localhost:8800JWCYKNRWXJm127.0.0.1Perl + Net::Async::HTTP/0.44eh]!E@anon-20191002_181700-447:localhost:8800VKYHTJKXLWm4^127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-445:localhost:8800IBQSIDYLYFm127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-444:localhost:8800OXPWWQTOCJmd127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-443:localhost:8800EZTQKOQREEm127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-442:localhost:8800ICXJFYTXBAmړ127.0.0.1Perl + Net::Async::HTTP/0.44ec]!E@anon-20191002_181700-441:localhost:8800MUSKUFQFQVm127.0.0.1Perl + Net::Async::HTTP/0.44eb]!E@anon-20191002_181700-440:localhost:8800OHPAOKURKKm127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-439:localhost:8800CVIXABNKXUmB127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-437:localhost:8800PMLBXPJIHMm127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-436:localhost:8800PJOSZGJIHEmԭ127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-438:localhost:8800TJXWGIJRBFm;127.0.0.1Perl + Net::Async::HTTP/0.44e]]!E@anon-20191002_181700-434:localhost:8800FQTRGMUKGZmԙ127.0.0.1Perl + Net::Async::HTTP/0.44e\]!E@anon-20191002_181700-433:localhost:8800UUQGLCEWQBmԃ127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-435:localhost:8800SYLXZYMBKMmԞ127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-432:localhost:8800ZOPSRSBYRNmvY127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-431:localhost:8800JIBNPXSTDLmr)127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-430:localhost:8800EJQMGEXFCCm]127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-429:localhost:8800OXLZZLMFDNmH127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-428:localhost:8800XEDNEAYRYKmF127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-427:localhost:8800JZIIFMRYCAm04127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-426:localhost:8800GGEPZOIJRJm127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-424:localhost:8800ZTZZRYHYSRm127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-425:localhost:8800TXVBKWCWYMm127.0.0.1Perl + Net::Async::HTTP/0.44:Q]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZReP]!E@anon-20191002_181700-421:localhost:8800UDSBEIJMWHm127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-422:localhost:8800VPDAIJPBTTmk127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-420:localhost:8800PFSCBSPFUQm127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-419:localhost:8800WRAHOCOTZGmӹ127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-417:localhost:8800VZYHWNRJEPmӢY127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-418:localhost:8800UIZEZFRVWZmӶw127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-416:localhost:8800DJBLIYEMJAmӌ127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-414:localhost:8800JOACLHYIFXmr127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-415:localhost:8800GYOCEBCXKNmӇS127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-413:localhost:8800ADVOIWYJVVm_c127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-411:localhost:8800QBCZCYKWITmC127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-412:localhost:8800EGSWCNVTAJmZU127.0.0.1Perl + Net::Async::HTTP/0.44 >@]$Y u< Z ! v =  [ " w >  \ #x?]$y@\#x?y@^%8]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSNI8]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJBH8]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWN8]!@anon-20191002_181700-516:localhost:8800DBXNPICYFO8]!@anon-20191002_181700-514:localhost:8800LBNXTFJTIT8]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHY8]!@anon-20191002_181700-510:localhost:8800TMGCAARJXM6[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXO8]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAUG8]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOXF8]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQNE8]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQD8]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPPC8]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTMB8]!@anon-20191002_181700-570:localhost:8800ECXFORDQSPA8]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQ@8]!@anon-20191002_181700-568:localhost:8800IRGUUINXHF?8]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNL>8]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKF=8]!@anon-20191002_181700-565:localhost:8800MSICJQZBGX<8]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZ;8]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOM:8]!@anon-20191002_181700-562:localhost:8800RUCUWRMARX98]!@anon-20191002_181700-561:localhost:8800YQDTZKECLG88]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEE76[!@anon-20191002_181700-55:localhost:8800GJICSOZSSMU8]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLS68]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDA58]!@anon-20191002_181700-556:localhost:8800TMQBHREBEO48]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ38]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXS28]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBU18]!@anon-20191002_181700-551:localhost:8800PDLFVATDIV08]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVR/6[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGT8]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO.8]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCC-8]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOV,8]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSK+8]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ*6[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNS8]!@anon-20191002_181700-539:localhost:8800OLXWQXBCRO)8]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ'8]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ(8]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ&8]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZ%8]!@anon-20191002_181700-534:localhost:8800FBPWXONJWM#8]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRP$8]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS!8]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYK"6[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBR8]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOL 8]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN8]!@anon-20191002_181700-526:localhost:8800CNSENJMXXV8]!@anon-20191002_181700-525:localhost:8800DQXQXDJYET8]!@anon-20191002_181700-524:localhost:8800IVEUVINDHF8]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLH8]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOV8]!@anon-20191002_181700-520:localhost:8800LGMWFFKPIS6[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPQ6[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDP &0` ( X P Hx@p8h0`e]!E@anon-20191002_181700-506:localhost:8800WTFXNSFUTLmG127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-505:localhost:8800QKCBIAVDQAm/127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-503:localhost:8800JNGLRXMCQMm i127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-501:localhost:8800YBYGOFEONKm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-499:localhost:8800VXSECXNERAm¤127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-497:localhost:8800OIZUJKPCSCm؞127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-495:localhost:8800QBXBDGRDFZm|W127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-493:localhost:8800GRPWUCANVUmY?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-494:localhost:8800HEAHMVMVEQmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-492:localhost:8800BHHCHVPHQTmOs127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-491:localhost:8800SADWUTCSYMm3_127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-490:localhost:8800YZYHXUDJBUm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-488:localhost:8800SPGGZQRKHZm!127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-486:localhost:8800OFHZWZEQDSm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-484:localhost:8800FWOSSLYDNUmײ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-482:localhost:8800JRYARQINGZmא127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-480:localhost:8800XJOMFBTCLSmm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-479:localhost:8800NIEZZMOKPHmb127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-478:localhost:8800VNBLCYVGBZmON127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-477:localhost:8800UXWKBDSXBAmEl127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-476:localhost:8800RXRCJNSJQBm-127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-475:localhost:8800JJMOBOLFAHm1127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-473:localhost:8800TSHZTIBDHNm127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-471:localhost:8800VTNKSDWUTBme127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-469:localhost:8800VLYSIOTSXRm֬127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-467:localhost:8800TOUFSHQMBKm։127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-465:localhost:8800JPLWYOLOJMmh127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-464:localhost:8800VUWRFRZGNEm\127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-463:localhost:8800ZKSEJYQPIOmH127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-462:localhost:8800SKOLIDFQENm?127.0.0.1Perl + Net::Async::HTTP/0.44er]!E@anon-20191002_181700-461:localhost:8800GRYRTUWCZUm%127.0.0.1Perl + Net::Async::HTTP/0.44eq]!E@anon-20191002_181700-460:localhost:8800GJEFYISBJPm 127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-458:localhost:8800BKBKPFYUSGmv127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-456:localhost:8800CRSASZJZPSm127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-454:localhost:8800BXAWMRWQLAmը127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-452:localhost:8800NISMZSIYDMmՇP127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-450:localhost:8800JKUEUBZDECm^127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-448:localhost:8800LJFADOXYLPm?R127.0.0.1Perl + Net::Async::HTTP/0.44 &0` ( X P o 7*TL|Dce6]!E@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSm9127.0.0.1Perl + Net::Async::HTTP/0.44v5]!/E@anon-20191002_181700-557:localhost:8800KTBNHNNWDAtest display namem+127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-556:localhost:8800TMQBHREBEOm127.0.0.1Perl + Net::Async::HTTP/0.44v3]!/E@anon-20191002_181700-555:localhost:8800MAWHFJMVIZtest display namem 127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-554:localhost:8800FFUSIPBHXSm127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-552:localhost:8800JYCWUAAHBUmB127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-551:localhost:8800PDLFVATDIVmL127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-550:localhost:8800TBXCVBUGVRm۲127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmۦ127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-548:localhost:8800XQXKFJTYCCmے127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-545:localhost:8800TWGXUTPQOVmY127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-543:localhost:8800FZCMWYDVSKm(127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-541:localhost:8800XVDHHDVGDJm127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-539:localhost:8800OLXWQXBCROm#127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-537:localhost:8800JAPSJNDXUJm̌127.0.0.1Perl + Net::Async::HTTP/0.44k']!E@anon-20191002_181700-538:localhost:8800PJMZGLQCBZwibblem127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-535:localhost:8800RWVMFNQDZQmگ127.0.0.1Perl + Net::Async::HTTP/0.44:%]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZe$]!E@anon-20191002_181700-533:localhost:8800TYQEWPDZRPmڕ(127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-534:localhost:8800FBPWXONJWMmڤ127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-531:localhost:8800HVNAEYFAYKm{127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-532:localhost:8800FXXARIFXSSmڋY127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-529:localhost:8800WXKOXWYNOLmv127.0.0.1Perl + Net::Async::HTTP/0.44v]!/E@anon-20191002_181700-527:localhost:8800BACKHRSCZNtest display namemr2127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-526:localhost:8800CNSENJMXXVmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-525:localhost:8800DQXQXDJYETml127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-524:localhost:8800IVEUVINDHFmh127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-523:localhost:8800CMSDWRWLLHmf}127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-521:localhost:8800PMRXQYAAOVm@127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-520:localhost:8800LGMWFFKPISm?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-518:localhost:8800LJEXZWJDWNm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-516:localhost:8800DBXNPICYFOm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-514:localhost:8800LBNXTFJTITm՞127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-512:localhost:8800XMPLTRSJHYmٴ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-510:localhost:8800TMGCAARJXMmَ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-509:localhost:8800RHTCHJDJOVmق|127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-508:localhost:8800IUNUZDZDEUmj127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-507:localhost:8800XTAWUKOTOHm`127.0.0.1Perl + Net::Async::HTTP/0.44 =x\#Uq8 T  u <  X  v =  Y u>Z!v=["w>xA]$8]!@anon-20191002_181700-639:localhost:8800VIDPYYIORG8]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHRP8]!@anon-20191002_181700-584:localhost:8800FZKRURXWXEO8]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEN8]!@anon-20191002_181700-582:localhost:8800WSKNBNWTARM8]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZL8]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOPK6[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOV8]!@anon-20191002_181700-638:localhost:8800AMILRIOBVF8]!@anon-20191002_181700-637:localhost:8800SOCIZPGICG8]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOL8]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJG~8]!@anon-20191002_181700-633:localhost:8800TRECTOOCOT}8]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWE|8]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZ{8]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPEz6[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYXZ8]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTXy8]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPWx8]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWOw8]!@anon-20191002_181700-625:localhost:8800LXKNSEODEIv8]!@anon-20191002_181700-624:localhost:8800AATHUMCUILu8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUDt8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLUs8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDHr8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQq6[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUY8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVVp8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABYo8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUETn8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHSm8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEMl8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZk8]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHIj8]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRPi8]!@anon-20191002_181700-611:localhost:8800UERIFUMBMUh8]!@anon-20191002_181700-610:localhost:8800ZXXERHSURNg6[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGX8]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEf8]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUe8]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVc8]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDb8]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEd8]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZW`8]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJa8]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLM^8]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAP_5Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZS6[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQW8]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR\8]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS[8]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSGY8]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHWZ8]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQX8]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHTW8]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXTV8]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPRU8]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQT8]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAUS8]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVER8]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYCQ &0` ( X P Hx@p8h0`e\]!E@anon-20191002_181700-598:localhost:8800TGNIJBJLORm)127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-597:localhost:8800TEPJNKLEKSm127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-596:localhost:8800WNSHUZKVHWm2127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-596:localhost:8800XLWTYGZVSGm127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-595:localhost:8800HPPFUJBMSQm127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-593:localhost:8800MHLBNUKOHTmȔ127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-591:localhost:8800EHJUGKTSXTm127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-590:localhost:8800WKVIGIMVPRm,127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-589:localhost:8800WSMMMNHHRQm޽c127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-588:localhost:8800CHJPRGUPAUm޹127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-587:localhost:8800VGJOOHQHVEm޷127.0.0.1Perl + Net::Async::HTTP/0.44eQ]!E@anon-20191002_181700-586:localhost:8800DOTBNZJMYCm޵127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-585:localhost:8800XLLZJGYIHRm޲127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-584:localhost:8800FZKRURXWXEmޘ127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEmހb127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-582:localhost:8800WSKNBNWTARml127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-581:localhost:8800RYCHJSFPQZmi[127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-580:localhost:8800CRNUPLGBOPmU127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-579:localhost:8800LLEXLPJZBRm?127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-578:localhost:8800JVKVSBXCSNm+u127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-577:localhost:8800MKYGCGNVJBm127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-576:localhost:8800OMBHTKYAAUmC127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-575:localhost:8800NDSWGGEQOXmr127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-574:localhost:8800HLLZYJLEQNm127.0.0.1Perl + Net::Async::HTTP/0.44eD]!E@anon-20191002_181700-573:localhost:8800BMOWCJUXWQmݓg127.0.0.1Perl + Net::Async::HTTP/0.44eC]!E@anon-20191002_181700-572:localhost:8800VQNUOKTLPPmo127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-571:localhost:8800LDVXZXQHTMm[127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-570:localhost:8800ECXFORDQSPm/5127.0.0.1Perl + Net::Async::HTTP/0.44e@]!E@anon-20191002_181700-569:localhost:8800QUJKINDXXQmy127.0.0.1Perl + Net::Async::HTTP/0.44e?]!E@anon-20191002_181700-568:localhost:8800IRGUUINXHFm127.0.0.1Perl + Net::Async::HTTP/0.44e>]!E@anon-20191002_181700-567:localhost:8800XHVOSXRUNLm127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-566:localhost:8800QBBGHXSEKFmԚ127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-565:localhost:8800MSICJQZBGXm127.0.0.1Perl + Net::Async::HTTP/0.44e;]!E@anon-20191002_181700-564:localhost:8800JAGAKQJOKZmܭn127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-563:localhost:8800RLVZAZQHOMmܘS127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-562:localhost:8800RUCUWRMARXm܃127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-561:localhost:8800YQDTZKECLGmr127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-560:localhost:8800MSCBPCIKEEmd127.0.0.1Perl + Net::Async::HTTP/0.44 'Cs f . ^ & VyAq 9i1ae]!E@anon-20191002_181700-640:localhost:8800JIZUEMVYQNm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-639:localhost:8800VIDPYYIORGmᷱ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-638:localhost:8800AMILRIOBVFmV127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-637:localhost:8800SOCIZPGICGmq127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-635:localhost:8800SCDBHOHLOLm3127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-634:localhost:8800GKOWEMDMJGm127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-633:localhost:8800TRECTOOCOTm127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-632:localhost:8800VIXCAXAJWEm127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-631:localhost:8800KQCHQRUBXZmM127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-630:localhost:8800VFOQXGNRPEm127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-628:localhost:8800JKNWCQGMTXm127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-627:localhost:8800XBWVSSSTPWmɓ127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-626:localhost:8800GMFLXIUBWOm127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-625:localhost:8800LXKNSEODEImࠢ127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-624:localhost:8800AATHUMCUILm127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-623:localhost:8800VLGPPLCUUDmx127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-622:localhost:8800IAPOATKCLUmb127.0.0.1Perl + Net::Async::HTTP/0.44:r]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDHeq]!E@anon-20191002_181700-620:localhost:8800CTOWFYNHGQmO127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-619:localhost:8800AZJJCPXJVVm5127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-618:localhost:8800KPRKVKAABYm4127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-617:localhost:8800DZQIEDJUETm*127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-616:localhost:8800YMFGFJXLHSm127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-615:localhost:8800LDFQWSUCEMm127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-614:localhost:8800KKJOZKNSMZmG127.0.0.1Perl + Net::Async::HTTP/0.44ej]!E@anon-20191002_181700-613:localhost:8800UDRWGJFVHIm127.0.0.1Perl + Net::Async::HTTP/0.44ei]!E@anon-20191002_181700-612:localhost:8800YGUHRNQFRPm127.0.0.1Perl + Net::Async::HTTP/0.44eh]!E@anon-20191002_181700-611:localhost:8800UERIFUMBMUm127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-610:localhost:8800ZXXERHSURNmߨ127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-609:localhost:8800HHJPZAWEAEmߨ!127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-608:localhost:8800RSNCULZYRUm߀127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-604:localhost:8800OVWYBOSWZEmf127.0.0.1Perl + Net::Async::HTTP/0.44:c]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVeb]!E@anon-20191002_181700-605:localhost:8800CFUUUFWJDDmFp127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-602:localhost:8800KDNTCWSCOJm?127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-603:localhost:8800KOCCLCFIZWm127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-600:localhost:8800RBYKXFWHAPm Y127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-601:localhost:8800BRBWCFMZLMm127.0.0.1Perl + Net::Async::HTTP/0.44R]7!E@admin:localhost:8800GMJMIKRCODmc127.0.0.1Perl + Net::Async::HTTP/0.44 =s;WWs: V  t ;  W  s :  V r;Ws:Xts:Z! 0 8]!@anon-20198]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOS8]!@anon-20191002_181700-646:localhost:8800HFMIURTAJA8]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVG8]!@anon-20191002_181700-644:localhost:8800INFGSFBNKU8]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQ8]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQ8]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVI8]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQN8]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO8]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG6[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUD_8]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY8]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK8]!@anon-20191002_181700-685:localhost:8800ESVUDGRJIL8]!@anon-20191002_181700-684:localhost:8800QWWSYDBLAC8]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPR8]!@anon-20191002_181700-682:localhost:8800RHXEIACOYG8]!@anon-20191002_181700-681:localhost:8800CDCNSMATEC8]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGI6[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXM^8]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKF8]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUT8]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGV8]!@anon-20191002_181700-676:localhost:8800KCVXVHDURO8]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAM8]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT8]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE8]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNR8]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF8]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMK8]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWO8]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGW8]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHN8]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSB8]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQ8]!@anon-20191002_181700-664:localhost:8800KYCVQKAERI8]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIH8]!@anon-20191002_181700-662:localhost:8800BPDPANNUMT8]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXV8]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXE6[!@anon-20191002_181700-65:localhost:8800JPWZALXKWP\8]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOF8]!@anon-20191002_181700-658:localhost:8800NAYXIQANDE8]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYF8]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGI8]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIR8]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXA8]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGU8]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHS8]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJ8]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUO6[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQI]8]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWA8]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGG &0` ( X P Hx@p8h0`e)]!E@anon-20191002_181700-678:localhost:8800FCKGQLJFUTm刨127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-677:localhost:8800SLBVCRXVGVma127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-676:localhost:8800KCVXVHDUROmW127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-675:localhost:8800ROEGYOHAAMm<127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-674:localhost:8800GKOEAKYNVTm+[127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-673:localhost:8800VPLLNWDDCEm(i127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-672:localhost:8800NZHSLWNGNRm*127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-671:localhost:8800KUQBONAEMFm #127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-670:localhost:8800MCSVGGDMMKm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-669:localhost:8800UUBRIPFVWOme127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-668:localhost:8800DCHVQLDWGWmt127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-667:localhost:8800DHNKEQDWHNmh,127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-666:localhost:8800LFHXFSCDSBmK127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-665:localhost:8800DPWOXNTOWQm-127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-664:localhost:8800KYCVQKAERIm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-663:localhost:8800IQBGXQXUIHm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-662:localhost:8800BPDPANNUMTm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-661:localhost:8800UIDVSRDCXVmi127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-660:localhost:8800MWFTHHYRXEm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-659:localhost:8800KLSOKHZPOFm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-658:localhost:8800NAYXIQANDEmr]127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-657:localhost:8800PPMSSCNTYFmH127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-656:localhost:8800JNVQOUXTGIm,7127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-655:localhost:8800JMLNJUZSIRm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-654:localhost:8800EGUMMWQZXAm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-653:localhost:8800LKDIHTPEGUmf127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-652:localhost:8800CVFIWYFYHSmА127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-650:localhost:8800HYWNLVNNUOm\127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-649:localhost:8800TAZJAMAQWAm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-648:localhost:8800FUMVLCFOGGmR127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-647:localhost:8800JJTUBBNUOSmN127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-646:localhost:8800HFMIURTAJAm♪127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-645:localhost:8800TQRBSFDPVGml127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-644:localhost:8800INFGSFBNKUmlq127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-643:localhost:8800NELMCBWNVQm9W127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-642:localhost:8800FQRREBIQEQm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-641:localhost:8800PFGGCSSRVIm}127.0.0.1Perl + Net::Async::HTTP/0.44 <>["Us: V  t ;  W  s :  V t;Wu<Xtu<X8]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW7Y%@anon-20191002_181700-6:localhost:8800login_device5Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOW8]!@anon-20191002_181700-758:localhost:8800GUAXNWFTDG8]!@anon-20191002_181700-757:localhost:8800QRQFPUSZXE8]!@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ8]!@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG8]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN6[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXc8]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBW8]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA8]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNY8]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK6[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCb8]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8]!@anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8]!@anon-20191002_181700-724:localhost:8800LOLQJOGTTU8]!@anon-20191002_181700-723:localhost:8800JIVAFIIFHN8]!@anon-20191002_181700-722:localhost:8800IZTIXMADAY8]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAG8]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN6[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIa8]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA8]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU6[!@anon-20191002_181700-70:localhost:8800PGQYANGMEI`8]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV &0` ( X P Hx@p8h0`eO]!E@anon-20191002_181700-719:localhost:8800ERYCEGRJPTm 127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-717:localhost:8800JZHRILWPLIm127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-716:localhost:8800ATBUACMSGRm 127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-715:localhost:8800MLSIEUMQJDm&127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-714:localhost:8800YDBOITJCYDm127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-713:localhost:8800HRGSFQOGPUm127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-712:localhost:8800CFERAQYYHKm127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-711:localhost:8800TQWWPGRZNAm獟127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-710:localhost:8800UKBZXSLNLUm127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-709:localhost:8800IIKOSHQIMXmx127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-708:localhost:8800SZXKLUUSLBmv127.0.0.1Perl + Net::Async::HTTP/0.44eD]!E@anon-20191002_181700-707:localhost:8800VRUFRMLDOPm^127.0.0.1Perl + Net::Async::HTTP/0.44eC]!E@anon-20191002_181700-706:localhost:8800WRSEYXOBHVm`127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-705:localhost:8800AZEUEPQBJMmH_127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-704:localhost:8800EQKVVEUTZFmF=127.0.0.1Perl + Net::Async::HTTP/0.44e@]!E@anon-20191002_181700-703:localhost:8800ZKXMBTYIRPm/*127.0.0.1Perl + Net::Async::HTTP/0.44e?]!E@anon-20191002_181700-702:localhost:8800MCYWHCABCHm-)127.0.0.1Perl + Net::Async::HTTP/0.44e>]!E@anon-20191002_181700-701:localhost:8800KSBXFIPYSSm 127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-700:localhost:8800GGDKZCAJLWm 127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-697:localhost:8800EDARWEUZCBm R127.0.0.1Perl + Net::Async::HTTP/0.44e;]!E@anon-20191002_181700-698:localhost:8800NUMXWJYFTCme127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-696:localhost:8800HBZTQHKFOSm4127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-695:localhost:8800VDCAEKRWDOm127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-693:localhost:8800LEFIZYPDBZm127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-692:localhost:8800EWIJGPCFOLm127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-691:localhost:8800KJUDUWTJKSm濵127.0.0.1Perl + Net::Async::HTTP/0.44e5]!E@anon-20191002_181700-690:localhost:8800KFUCCJJOIGmk127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-689:localhost:8800CXTYRGNUGFm&127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-688:localhost:8800XKOMYWOUIRm 127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-687:localhost:8800IBFTGGSJGYm~127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-686:localhost:8800FCAOSGHQKKm|127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-685:localhost:8800ESVUDGRJILmU 127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-684:localhost:8800QWWSYDBLACm/127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-683:localhost:8800WOMGUTEQPRm 127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-682:localhost:8800RHXEIACOYGm:127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-681:localhost:8800CDCNSMATECmʪ127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-680:localhost:8800EVTHCGRZGIm127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-679:localhost:8800SNZWGQRAKFm127.0.0.1Perl + Net::Async::HTTP/0.44 &0` ( X P Hx@3c+[#eu]!E@anon-20191002_181700-761:localhost:8800VFSPRJLZEGmCY127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-759:localhost:8800KXAFXIMWWPm@}127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-760:localhost:8800AAUYDDOUHUmAr127.0.0.1Perl + Net::Async::HTTP/0.44er]!E@anon-20191002_181700-758:localhost:8800GUAXNWFTDGm+127.0.0.1Perl + Net::Async::HTTP/0.44eq]!E@anon-20191002_181700-757:localhost:8800QRQFPUSZXEm 127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-756:localhost:8800VNKYAMEGUQmS127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-754:localhost:8800ZUIRTQEUGGm֜127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-755:localhost:8800AJENIKARXJm5127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-753:localhost:8800PLSIYKWQOBm 127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-752:localhost:8800RYCPPVBPAQm127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-751:localhost:8800FXMMNKQIDMmv127.0.0.1Perl + Net::Async::HTTP/0.44ej]!E@anon-20191002_181700-750:localhost:8800VQNSLBGSCNmF127.0.0.1Perl + Net::Async::HTTP/0.44:i]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBWeh]!E@anon-20191002_181700-748:localhost:8800FCZXWADFJAmC127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-747:localhost:8800IJKBXNQJNYm127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-746:localhost:8800SROUQRJUGNmx127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-745:localhost:8800GZRCRCKGZNmh127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-744:localhost:8800MCGVEWCDCMmf127.0.0.1Perl + Net::Async::HTTP/0.44ec]!E@anon-20191002_181700-743:localhost:8800YETXYLXSKFmM127.0.0.1Perl + Net::Async::HTTP/0.44eb]!E@anon-20191002_181700-742:localhost:8800OLLAKSSDJKmG127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-736:localhost:8800FLOTQJDCJVm(127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-735:localhost:8800ZQXZAKNBDXmu127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-734:localhost:8800KYIXUZPIHIm-127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-733:localhost:8800YGJVVHZCJQm?127.0.0.1Perl + Net::Async::HTTP/0.44e]]!E@anon-20191002_181700-732:localhost:8800XWWSSGHQCKm<127.0.0.1Perl + Net::Async::HTTP/0.44e\]!E@anon-20191002_181700-731:localhost:8800QAJRBGVMCYmӥ127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-730:localhost:8800BGYKRDCYIRm127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-729:localhost:8800DNPGOQMGAFm觏127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-728:localhost:8800KLYTBBZKRQm127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-726:localhost:8800DOLLBVDDIPm127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-727:localhost:8800NCKNSWYLRRm膗127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-725:localhost:8800PPTZJMVRMQmmG127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-724:localhost:8800LOLQJOGTTUmk127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-723:localhost:8800JIVAFIIFHNmL127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-722:localhost:8800IZTIXMADAYmJg127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-721:localhost:8800BHJHLJEYAGm+6127.0.0.1Perl + Net::Async::HTTP/0.44eQ]!E@anon-20191002_181700-720:localhost:8800CJYSUKRSXNm'T127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-718:localhost:8800LCLSEHKRUGm 127.0.0.1Perl + Net::Async::HTTP/0.44 EUq8 T  px?["]n$5Q@y\# v 7  S o ? 6 R 8]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAX28]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ8]!@anon-20191002_181700-788:localhost:8800JZUHRDQQEL 8]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAI 8]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLI 8]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZH8]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIW8]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQC8]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJX 8]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDM8]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRW8]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVV8]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCC8]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXF8]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUO8]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJR8]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ8]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJC8]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHU8]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFX8]!@anon-20191002_181700-790:localhost:8800VALGYGSZPA 8]!@anon-20191002_181700-787:localhost:8800ESOZVRSFST 6[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMd6[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEh6[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFg5Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWX6[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDf6[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNe8]!@anon-20191002_181700-798:localhost:8800INQDOVATBT8]!@anon-20191002_181700-795:localhost:8800JVASIBBRVU8]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ8]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWI8]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJ8]!@anon-20191002_181700-791:localhost:8800WJMTFALHBS8]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSN18]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCK08]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCR/8]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJ.8]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFD-8]!@anon-20191002_181700-822:localhost:8800CCEPFILJPU,8]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIG+8]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCL*8]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOL)8]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPV(8]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKB'8]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOS&8]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZC%8]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOH$8]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHS#8]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBV"8]!@anon-20191002_181700-810:localhost:8800RESWFULJEC!8]!@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTK8]!@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ8]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!@anon-20191002_181700-760:localhost:8800AAUYDDOUHU &0` ( X P Hx@p8h0`e]!E@anon-20191002_181700-804:localhost:8800VJFGXBTXXFmJ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-801:localhost:8800MRLZAOHJUOm뚑127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-802:localhost:8800NFTDLWJQJRm.127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-799:localhost:8800LEWHBWNYPQmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-800:localhost:8800PFQNMAUDJCm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-797:localhost:8800BZMLAVLJHJm{ 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-798:localhost:8800INQDOVATBTm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-795:localhost:8800JVASIBBRVUmb%127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-796:localhost:8800TWRMWQHVDQmw127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-793:localhost:8800AKRKGRHMWImE127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-794:localhost:8800HERKLRVCIJm^_127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-791:localhost:8800WJMTFALHBSm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-792:localhost:8800YSFSTXJXHUmB127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-789:localhost:8800GKBQSBKKFXm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-790:localhost:8800VALGYGSZPAm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-787:localhost:8800ESOZVRSFSTmܜ127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-788:localhost:8800JZUHRDQQELm2127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-786:localhost:8800WJWBUMRLAIm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-785:localhost:8800TVEQJOAJLIm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-784:localhost:8800SHHMGHRUZHmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-783:localhost:8800CBPSCDUMIWmͧ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-782:localhost:8800CMQAXLTOQCm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-781:localhost:8800FVUJNXJFVGm7127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-779:localhost:8800OWQMDGTEXWm~127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-777:localhost:8800DNPSVJVGARm꽺127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-775:localhost:8800KWWOCKYJTKm긄127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-773:localhost:8800KNQPPEVHSZm곲127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-774:localhost:8800EHLWRALUNWmA127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-771:localhost:8800WFJTBQEQEAmꬉ127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-772:localhost:8800AMIQGAPEEXmꮤ127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-769:localhost:8800YMNXMSKEVLm 127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-770:localhost:8800CKDIOBKNJMmꨥ127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-768:localhost:8800NKUFFDEKKSm 127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-767:localhost:8800HLSHGDMIOBmz127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-766:localhost:8800HMOWFAWFNHmx127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-764:localhost:8800CSKXMMYZWJmt127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-763:localhost:8800JLJXCXZRRGm\127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-762:localhost:8800SUIBWCIGQVmF(127.0.0.1Perl + Net::Async::HTTP/0.44 >0` ( X P Hx@K>e9]!E@astest-1-20191002_181700:localhost:8800OYDJFJVTHOmKa127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-832:localhost:8800HFTRPYGIKUm127.0.0.1Perl + Net::Async::HTTP/0.44:7]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQED6q!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZC5o!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNTe4]!E@anon-20191002_181700-831:localhost:8800XNGQHPEIWAm127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-830:localhost:8800ERVCXTVUKSm127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-829:localhost:8800XJTWYRZUAXm127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-827:localhost:8800DCXRWYLYSNm127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-826:localhost:8800NTTIDMFUCKmf127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-825:localhost:8800FCBTIUXJCRm127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJmx127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-821:localhost:8800LMJVQYBCFDmߑ127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-822:localhost:8800CCEPFILJPUm127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGm127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-820:localhost:8800LLRZDHKYCLm^127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-818:localhost:8800FQFDWYIMOLm127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-815:localhost:8800HJUZHQSZPVmɕ127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-816:localhost:8800PQOEGOAQKBm127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-813:localhost:8800VHZZXIJGOSm127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-814:localhost:8800VHWGFZXPZCm127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-812:localhost:8800NTGXHOAHOHm127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-811:localhost:8800HQYXFHPRHSm@127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-809:localhost:8800FIWEAYAHBVm볳127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-810:localhost:8800RESWFULJECm 127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-807:localhost:8800PRZHLWPXJXm뮆127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-808:localhost:8800JCKLBLRDDMm밯127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-805:localhost:8800BNRHSJKYRWm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-806:localhost:8800HOBYWJEDVVm몤127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-803:localhost:8800PRYHWWCHCCm127.0.0.1Perl + Net::Async::HTTP/0.44 ,$J][$I s <  ` * $ h 8  y J  _ 0 8]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHO98]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKU88]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQE7Ao!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNT58]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWA48]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKS3)A!@user-upper:localhost:8800XOXAYMRLKG'=!@spyglass:localhost:8800BUNJZHLDRS+A%@mycooluser:localhost:8800my_device_id.K!@chrtestuser-93-:localhost:8800HXQEHKTZDR .K!@chrtestuser-92-:localhost:8800CTWNGYMNFD.K!@chrtestuser-91-:localhost:8800XTTHVJFCAE .K!@chrtestuser-64-:localhost:8800WQBPBXVRII .K!@chrtestuser-63-:localhost:8800DYMSSHFRND.K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS.K!@chrtestuser-39-:localhost:8800HQOBQJZUDV.K!@chrtestuser-34-:localhost:8800JUJQTQDDTH.K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV/M!@chrtestuser-233-:localhost:8800AJJFHKXPHA/M!@chrtestuser-163-:localhost:8800FYFIWVYQAG/M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ/M!@chrtestuser-124-:localhost:8800BIQFYVWLZN /M!@chrtestuser-123-:localhost:8800GABZLTWEEJ .K!@chrtestuser-10-:localhost:8800NPPZGPSUFO*C!@cas_user=21:localhost:8800BIHKGABDWPM7Y%@anon-20191002_181700-9:localhost:8800login_device$5Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQ#6[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYw6[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZu6[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLv6[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZTt6[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNBs6[!@anon-20191002_181700-91:localhost:8800UIADKEMPGAq6[!@anon-20191002_181700-90:localhost:8800BJDBLNAUERr3Y@anon-20191002_181700-8:localhost:8800device_2!3Y@anon-20191002_181700-8:localhost:8800device_1"5Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJOD 6[!@anon-20191002_181700-89:localhost:8800OFESILMBJHo6[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDIp6[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZm6[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWn6[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVk6[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENl6[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUj 1^ k x ' 4 A N [ hu$1>KXw&3P]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800P]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800P]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800P]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800P]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800P]Q@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800 N[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800P]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800 @]1@anon-20191002_181700-617:localhost:8800!0:localhost:42455 P]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800 P]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800P]Q@anon-20191002_181700-613:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800 P]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-611:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800P]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800P]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800P]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800P]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800P]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800P]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800P]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800P]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800P]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800P]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800P]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800P]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800P]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800P]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800P]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800P]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800P]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800P]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800P]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800P]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800P]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 2n{* 9 V  c  r !  .;JWdq [DSP]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800AP]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800@N[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800$P]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800?P]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800>A]3@anon-20191002_181700-677:localhost:8800!13:localhost:42455=A]3@anon-20191002_181700-676:localhost:8800!12:localhost:42455&Q!CgVBWWcRJoHEcwoLcq:localhost:8800Z'Q!CSqENqzAezaZnGktbE:localhost:8800&Q!CQKLQUpSYakhxVDltC:localhost:8800^&Q!CQKLQUpSYakhxVDltC:localhost:8800]'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800o'Q!CAGaRyRvrohDRBsrWH:localhost:8800w&Q!BrssELMbasSzTFpIXm:localhost:88009&Q!BrssELMbasSzTFpIXm:localhost:88008'Q!BpTqIemsWFZIqTcgJO:localhost:8800w'Q!BpTqIemsWFZIqTcgJO:localhost:8800v'Q!BpTqIemsWFZIqTcgJO:localhost:8800u'Q!BoyzlWNkRPncpDjBDg:localhost:8800n&Q!BkzROHxDAfKIzYpmPV:localhost:8800m&Q!BkzROHxDAfKIzYpmPV:localhost:8800l&Q!BkzROHxDAfKIzYpmPV:localhost:8800k'Q!BfEFIDBthhkweqfhir:localhost:8800 'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800f'Q!BPNyKqmwcpGxIbGFZG:localhost:8800e'Q!BKZJsoFNhiLTDYNclB:localhost:8800Z'Q!BKZJsoFNhiLTDYNclB:localhost:8800Y'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800&Q!AjjrNwXmPTCruHxaJq:localhost:8800o&Q!AjjrNwXmPTCruHxaJq:localhost:8800n'Q!AYFqrmxwClFQlcTTYq:localhost:8800 &Q!AWfbViAZparIjmDaVT:localhost:8800*'Q!AOEdqVKPFddrqbKPOL:localhost:8800!'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:8800H1!9:localhost:4245571!6:localhost:424551!5:localhost:424553!13:localhost:42455=3!12:localhost:42455<3!11:localhost:42455:3!11:localhost:4245593!10:localhost:4245581!0:localhost:42455 aa:tL$ ` 8  p H X 0  h A  z R * d<uM%]5 nF~V.iA{T-f>'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:88008'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800&Q!OqPpVlCwmKdAUlwrXI:localhost:8800w&Q!OaCEdDAiatpwYcagUb:localhost:8800'&Q!OaCEdDAiatpwYcagUb:localhost:8800&'Q!OXpGdKbowFUTChPdmF:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800R&Q!OSHhtkGUjpUCkXwIhj:localhost:8800+&Q!OMkiVTuuOEeiFAXtUY:localhost:8800:'Q!OJilSqnQvLgoXSqRaW:localhost:8800@'Q!OCEHAjcOXWNyWIESIS:localhost:8800 &Q!OBWkjfrDCNgYFfblia:localhost:8800b&Q!OBWkjfrDCNgYFfblia:localhost:8800a'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800C'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800g'Q!NcJYmIbgjsaKJOzBcs:localhost:8800`'Q!NcJYmIbgjsaKJOzBcs:localhost:8800_'Q!NboFFVLpJHTeuUKCjM:localhost:8800='Q!NboFFVLpJHTeuUKCjM:localhost:8800<'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:88297&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800!'Q!NNiyzThHMivrxhojfp:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800}'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800#'Q!LazKtcHZriKzCvvGwV:localhost:8800)&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800p'Q!LFBhoxJpmBqFrwEzGP:localhost:8800o&Q!KxhGcTbEWmtgGNpdox:localhost:8800>&Q!KxhGcTbEWmtgGNpdox:localhost:8800='Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800E'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800/'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800&Q!JusxqeECtidaPlWqhp:localhost:8800u&Q!JusxqeECtidaPlWqhp:localhost:8800t'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!JiUawCFQnodcpssOfK:localhost:8800D'Q!JZouHBRxCRbcxYJnbn:localhost:8800-'Q!JYLMokjOhZZlmbZvTf:localhost:8800i'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800V'Q!IYxUkyFHOgvhLpdkOA:localhost:8800U'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800|&Q!IMiczgkCTjejbnbeyP:localhost:8800{'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800.&Q!IGVHKYcSuxzVPlFHlj:localhost:8800-'Q!HusOrLtWZTLbmQZxmm:localhost:8800z'Q!HusOrLtWZTLbmQZxmm:localhost:8800y'Q!HusOrLtWZTLbmQZxmm:localhost:8800x&Q!HmkcAMkMjWRhTDJMsy:localhost:8800<&Q!HmkcAMkMjWRhTDJMsy:localhost:8800;'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800Y&Q!HcMGemcRrLnLprOJJR:localhost:8800X'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800 a`8pI! Y 1 i A  { S +  c <  w O '_7qI!Y1 kC|T,e>xQ)a9&Q!XgobMgBjNcDRJnRXLD:localhost:8800D&Q!XgobMgBjNcDRJnRXLD:localhost:8800C'Q!XcaKxZsPvbZhAGKKdx:localhost:8800k'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800&Q!XIqmzIFbkHGQPIpywk:localhost:8800i&Q!XIqmzIFbkHGQPIpywk:localhost:8800h'Q!XGAmnfaVvjDtQJuufa:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800~'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800q'Q!WYyiQAVvitxsLZKVCG:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800j'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800c'Q!WFHIeSFQyuugGeBFxW:localhost:8800b'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800['Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800{&Q!VAEDgDJVqmxXZyAlSW:localhost:8800M&Q!VAEDgDJVqmxXZyAlSW:localhost:8800L'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:88003'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800n'Q!URpLZLuBfVcfHVTBGS:localhost:8800m'Q!UMFUOnYRvwKwSPkYHB:localhost:8800%'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:88000&Q!TleKOyAElrpgyyrAQA:localhost:8800/'Q!TlJCaYlCkOOVzFDlLx:localhost:8800F'Q!TlJCaYlCkOOVzFDlLx:localhost:8800E'Q!TlJCaYlCkOOVzFDlLx:localhost:8800D'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:88005'Q!TeraguiGoZoeOGFzlI:localhost:88004'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800R'Q!TcCLuIBUrtFqghDgay:localhost:8800Q&Q!TWETXUgfFZafDdbqLS:localhost:88005&Q!TWETXUgfFZafDdbqLS:localhost:88004'Q!TSFcaXDBqrCREHRHxv:localhost:8800"'Q!THHfVSOSWiBQTHRAnJ:localhost:8800F&Q!SyIWYOmcGiASNkPCTB:localhost:8800W&Q!SyIWYOmcGiASNkPCTB:localhost:8800V'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800?'Q!SrMQpDMFREKRMELwbL:localhost:8800L'Q!SrMQpDMFREKRMELwbL:localhost:8800K'Q!SrMQpDMFREKRMELwbL:localhost:8800J'Q!SpXEytywhTbAftyVBr:localhost:8800M'Q!SnROoiDBapNNtMmKnT:localhost:88006'Q!SfYtaUhCFosNfHfUVm:localhost:8800"'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800?'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:88007'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800Z&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800a'Q!QMrkSPlQDGborAyWtQ:localhost:8800`'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:88002'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800>'Q!XiwGxQKwjgutEClKUy:localhost:8829: a`8pH X 0  h @  y Q )  d =  v N &_7oGW/g?zR*d<uM%_7&Q!eKrOqiOabJcMgIJjwC:localhost:8800R'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800i'Q!dvZnfJonDkxlrrDXUk:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:88002&Q!duCKuavMBSfRbTFPsc:localhost:88001'Q!drnXStKXkNQkouqUAg:localhost:8800+'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800m'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:88002'Q!dBfASZrfiFeSKTjYJm:localhost:8800.'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800X&Q!cosGKKhHvKaVukBCic:localhost:8800$'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800&Q!cSUQGmpIsSCBAVTOHo:localhost:8800@'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800k'Q!cOFSwLSkxZECJMvjjZ:localhost:8800j&Q!cHtqiAyCHEAoBIbCmL:localhost:8800e&Q!cHtqiAyCHEAoBIbCmL:localhost:8800d&Q!cHtqiAyCHEAoBIbCmL:localhost:8800c'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800l'Q!bjdLCdBwkKaihRIRFG:localhost:8800%'Q!biBIcqnGelHvLnpkOu:localhost:8800^'Q!biBIcqnGelHvLnpkOu:localhost:8800]'Q!beBXQofoOfxNBtzsut:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800C'Q!bOSxzttDtclnrWnLov:localhost:8800B'Q!bNSXSTadOMhIrYpMzH:localhost:8800I'Q!bNSXSTadOMhIrYpMzH:localhost:8800H'Q!bNSXSTadOMhIrYpMzH:localhost:8800G'Q!bLWyXaXdvUhdSAooUz:localhost:8800''Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800x'Q!atnRTMliktaVUhMVID:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800T'Q!anErKtXIsVKEEsrzWM:localhost:8800S'Q!aknLNLxfChlLvFYhkJ:localhost:8800Q'Q!aiOswwhoZqjhcjzbzc:localhost:8800X'Q!aiOswwhoZqjhcjzbzc:localhost:8800W'Q!aaRwQZdNAliyvRHpjs:localhost:8800 'Q!aZwMKYDXJRlSKjQNWM:localhost:8800;&Q!aWvVRVaDflYyyGTOdD:localhost:8800s&Q!aWvVRVaDflYyyGTOdD:localhost:8800r&Q!aWvVRVaDflYyyGTOdD:localhost:8800q&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800 'Q!aHyAJEOSdKqTiRjOvw:localhost:8800W'Q!aHyAJEOSdKqTiRjOvw:localhost:8800V&Q!aBCvSXjtZUEPlPGHvY:localhost:8800}'Q!ZvLVbnHjeymRiFIkYr:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800 'Q!ZOwibbprUCQrSJQCrx:localhost:8800d'Q!ZOwibbprUCQrSJQCrx:localhost:8800c'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800h'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800g'Q!ZNIjCvcWhgcwskanjT:localhost:8800~'Q!ZKPJvrCZHMHPEksYDc:localhost:88003'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800f'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800&'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800l'Q!YQATbgbLImCDamiDHC:localhost:8800t'Q!YQATbgbLImCDamiDHC:localhost:8800s'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800S a`8rK# ] 5 o G   W /  g ?  w O '_7oGZ3 pI!Y1 jBzS+e>'Q!mBQpGaIiadEuKBXfOw:localhost:8800_'Q!mBQpGaIiadEuKBXfOw:localhost:8800^&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800B'Q!laUExtszUaoCpZoyEq:localhost:8800&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800g&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800f'Q!lEJUJZxqZPKZetemiR:localhost:8800('Q!lAGTcYIuMBXsVRGCOe:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800.'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:88001'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800J'Q!jomrpmwwQQtghscizn:localhost:8800I'Q!jlGSdNttccYxjfLkwW:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800(&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:88000'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800|'Q!jDKAOtmeAGbYTpwyEW:localhost:8800j'Q!itfjLXhEaORJLkbfVS:localhost:8800L'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800''Q!iTQSCiLqRMDtgXtUdC:localhost:8800&'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800U'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800$'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800v'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800T'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800S'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:8800I&Q!fJXiUpbbOlLbHWmPgs:localhost:8800H'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:8800K&Q!eySSVuCclRpBDgwKIU:localhost:8800J'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:8800E&Q!edbUkYJIZBNOiTuLJs:localhost:8800O&Q!edbUkYJIZBNOiTuLJs:localhost:8800N'Q!eZjhYVNpwdogVDKHCk:localhost:8800u'Q!eZjhYVNpwdogVDKHCk:localhost:8800t'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800 ``8qI! \ 5 n F  ~ V .  h @  y Q ) a9sK#[4 mE}U-f>wO'`9'Q!vZGjXEXQoCaoUXnkCa:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800Q&Q!vVmSdclwPIqYDbnmPn:localhost:8800P'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800)'Q!utJsNQubeIXvcTKGpx:localhost:8800('Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800z'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800!'Q!uGpSboYkgxVNOqNeUG:localhost:88005'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800,'Q!taANXnGBZntAreRurn:localhost:8800-'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800r'Q!svYOOXWZHtQQzlMcEP:localhost:8800q'Q!svYOOXWZHtQQzlMcEP:localhost:8800p'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:88006'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800s'Q!sBcwyPoXKgnSGVTjNR:localhost:8800r'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800?'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800/&Q!rZWweGEChkxxtzyfDB:localhost:8800#&Q!rZWweGEChkxxtzyfDB:localhost:8800"'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800~'Q!rQeYcODvQiLsOIbQrJ:localhost:8800Y'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800#'Q!qzrZzAieCgGSbpKOQR:localhost:8800$'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800&Q!quaZwrGnzbNWhwAOYB:localhost:8800v'Q!qtelAHlSkrqEFmlCqS:localhost:8800b'Q!qtelAHlSkrqEFmlCqS:localhost:8800a'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800N'Q!pUSFAnuwUuMlbiInDR:localhost:8800M'Q!pTvdDtkgovsIdAdxCm:localhost:8800y'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800\'Q!ozgnwUlebxvzLVwyHW:localhost:8800[&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:8800G&Q!oXKJArsPmtgaYANBrg:localhost:8800F'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800`&Q!ntuwVdUxfzNIhIKYaz:localhost:8800_'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800;'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:88000'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&Q!msMfSdLIAvklSSAnci:localhost:8800U'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:88009'Q!mOrKBPhetifKHDmElM:localhost:8800( 8I`8pH! Z 2 l E  ~ V .  f >  v N ( a9qI'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800e'Q!zsXPhIPzeXXLvuazzQ:localhost:8800d'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800h&Q!zhCsYcaweVFJLLNwBz:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800*%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800P'Q!yWhIsLsgNVGcnELrDS:localhost:8800O'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800\'Q!yNfCaBMPezurwkJRAX:localhost:8800['Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800,'Q!xcdNyJNFEdaBGFycsB:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800]&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800)'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800B&Q!wIhMbfQzYbJobPdwyi:localhost:8800A'Q!wCsDjKBtuUbrmZgjsB:localhost:8800N'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800x'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800 11vZ|) 0 7 > E LSZahov#}*1P@Q]!ulbQzxdPXzuvNoqqgU:localhost:8800@anon-20191002_181700-767:localhost:88004P?Q]!pTvdDtkgovsIdAdxCm:localhost:8800@anon-20191002_181700-763:localhost:88004P>Q]!vxEMWYTUdzvLyVZNzJ:localhost:8800@anon-20191002_181700-762:localhost:88004P=Q]!CAGaRyRvrohDRBsrWH:localhost:8800@anon-20191002_181700-758:localhost:88004P<Q]!hNCwypIzdDZDVmCEfd:localhost:8800@anon-20191002_181700-757:localhost:88004P;Q]!eZjhYVNpwdogVDKHCk:localhost:8800@anon-20191002_181700-754:localhost:88004P:Q]!sBcwyPoXKgnSGVTjNR:localhost:8800@anon-20191002_181700-754:localhost:88004P9Q]!WgXzOXLTeqaGfiDFhL:localhost:8800@anon-20191002_181700-752:localhost:88004P8Q]!LFBhoxJpmBqFrwEzGP:localhost:8800@anon-20191002_181700-750:localhost:88004P7Q]!URpLZLuBfVcfHVTBGS:localhost:8800@anon-20191002_181700-746:localhost:88004P6Q]!YaLuQzmJKSMTSFEqjO:localhost:8800@anon-20191002_181700-744:localhost:88004P5Q]!cOFSwLSkxZECJMvjjZ:localhost:8800@anon-20191002_181700-742:localhost:88004P4Q]!eGEEtFXUXuZDImkeql:localhost:8800@anon-20191002_181700-736:localhost:88004P3Q]!ZOpRjvUhkWYJBFJZeO:localhost:8800@anon-20191002_181700-734:localhost:88004P2Q]!BPNyKqmwcpGxIbGFZG:localhost:8800@anon-20191002_181700-732:localhost:88004P1Q]!ZOwibbprUCQrSJQCrx:localhost:8800@anon-20191002_181700-730:localhost:88004P0Q]!qtelAHlSkrqEFmlCqS:localhost:8800@anon-20191002_181700-728:localhost:88004P/Q]!NcJYmIbgjsaKJOzBcs:localhost:8800@anon-20191002_181700-726:localhost:88004P.Q]!biBIcqnGelHvLnpkOu:localhost:8800@anon-20191002_181700-724:localhost:88004P-Q]!yNfCaBMPezurwkJRAX:localhost:8800@anon-20191002_181700-722:localhost:88004P,Q]!BKZJsoFNhiLTDYNclB:localhost:8800@anon-20191002_181700-720:localhost:88004P+Q]!aiOswwhoZqjhcjzbzc:localhost:8800@anon-20191002_181700-718:localhost:88004P*Q]!IYxUkyFHOgvhLpdkOA:localhost:8800@anon-20191002_181700-716:localhost:88004P)Q]!anErKtXIsVKEEsrzWM:localhost:8800@anon-20191002_181700-714:localhost:88004P(Q]!TcCLuIBUrtFqghDgay:localhost:8800@anon-20191002_181700-712:localhost:88004P'Q]!yWhIsLsgNVGcnELrDS:localhost:8800@anon-20191002_181700-710:localhost:88004P&Q]!wCsDjKBtuUbrmZgjsB:localhost:8800@anon-20191002_181700-708:localhost:88004P%Q]!SpXEytywhTbAftyVBr:localhost:8800@anon-20191002_181700-706:localhost:88004P$Q]!itfjLXhEaORJLkbfVS:localhost:8800@anon-20191002_181700-704:localhost:88004P#Q]!GsjDgpaxdwYfnefiWO:localhost:8800@anon-20191002_181700-702:localhost:88004P"Q]!jomrpmwwQQtghscizn:localhost:8800@anon-20191002_181700-700:localhost:88004P!Q]!ABHbfUdkHCJksMsaUt:localhost:8800@anon-20191002_181700-698:localhost:88004P Q]!DntdfAPfCfgdOoRMdl:localhost:8800@anon-20191002_181700-691:localhost:88004PQ]!THHfVSOSWiBQTHRAnJ:localhost:8800@anon-20191002_181700-690:localhost:88004PQ]!KetCYFxrTxawNOGnOf:localhost:8800@anon-20191002_181700-685:localhost:88001PQ]!JiUawCFQnodcpssOfK:localhost:8800@anon-20191002_181700-684:localhost:88001PQ]!NgkQVVUNzoyCVPtckM:localhost:8800@anon-20191002_181700-683:localhost:88001PQ]!lgejtcwlywOoIXwEgy:localhost:8800@anon-20191002_181700-682:localhost:88004PQ]!PUIxAaiCnbqaVbawGu:localhost:8800@anon-20191002_181700-681:localhost:88001PQ]!OJilSqnQvLgoXSqRaW:localhost:8800@anon-20191002_181700-680:localhost:88004PQ]!SrwdtDytJDUBVZOueF:localhost:8800@anon-20191002_181700-679:localhost:88004PQ]!PVyTvKbqnjSXfGWAMy:localhost:8800@anon-20191002_181700-678:localhost:880043 !13:localhost:4245513 !12:localhost:424551PQ]!nhbUIcIbhuXkRqfeDa:localhost:8800@anon-20191002_181700-675:localhost:880043 !11:localhost:4245513 !10:localhost:4245511 !9:localhost:424551PQ]!SnROoiDBapNNtMmKnT:localhost:8800@anon-20191002_181700-670:localhost:88001     C=+]localhost:42455@anon-20191002_181700-674:localhost:8800=+]localhost:42455@anon-20191002_181700-673:localhost:8800=+]localhost:42455@anon-20191002_181700-671:localhost:8800=+]localhost:42455@anon-20191002_181700-636:localhost:8800  J <+]localhost:42455@anon-20191002_181700-674:localhost:8800<+]localhost:42455@anon-20191002_181700-673:localhost:8800<+]localhost:42455@anon-20191002_181700-671:localhost:8800;+] localhost:42455@anon-20191002_181700-636:localhost:8800 ! federationmastereventsmaster N [ , !zKe: `6P 1S$ l = j ;  q B  R #  W ( i\u- r C  q.Q!dvZnfJonDkxlrrDXUk:localhost:8800th.Q!cOFSwLSkxZECJMvjjZ:localhost:8800th.Q!cHtqiAyCHEAoBIbCmL:localhost:8800th.Q!biBIcqnGelHvLnpkOu:localhost:8800th.Q!beBXQofoOfxNBtzsut:localhost:8800th.Q!bQDOrbAknnQZfUbhgS:localhost:8800th.Q!bOSxzttDtclnrWnLov:localhost:8800th.Q!bNSXSTadOMhIrYpMzH:localhost:8800th.Q!bLWyXaXdvUhdSAooUz:localhost:8800th.Q!azRJNFPIRSFAskLILK:localhost:8800th.Q!cidyuyekVzJHHvyomb:localhost:8800th.Q!bnTuVBaAJTPbcYZtRl:localhost:8800th.Q!bkwyieHZwSMJfuSKvV:localhost:8800th.Q!bjdLCdBwkKaihRIRFG:localhost:8800th.Q!bQDOrbAknnQZfUbhgS:localhost:8800m.Q!bOSxzttDtclnrWnLov:localhost:8800m.Q!bNSXSTadOMhIrYpMzH:localhost:8800m.Q!bLWyXaXdvUhdSAooUz:localhost:8800m.Q!azRJNFPIRSFAskLILK:localhost:8800m.Q!bzPCFeFSMbCESvNbxl:localhost:8800m-Q!bnTuVBaAJTPbcYZtRl:localhost:8800mb.Q!bkwyieHZwSMJfuSKvV:localhost:8800m.Q!bjdLCdBwkKaihRIRFG:localhost:8800m.Q!biBIcqnGelHvLnpkOu:localhost:8800m.Q!beBXQofoOfxNBtzsut:localhost:8800m.Q!dvZnfJonDkxlrrDXUk:localhost:8800mR-Q!duCKuavMBSfRbTFPsc:localhost:8800m$.Q!drnXStKXkNQkouqUAg:localhost:8800m-Q!dnZVySJLGNtUKsSgXW:localhost:8800mg.Q!djwLhpJUYOKsgQtrky:localhost:8800m-Q!dWgOTucBVQBKZjfndN:localhost:8800mo-Q!dUnULFLGtgaVdwHtnz:localhost:8800m.Q!dDqNKNFdIjCAwnyaxp:localhost:8800m.Q!dBfASZrfiFeSKTjYJm:localhost:8800m.Q!cvXpMzcxNNhsNttxvt:localhost:8800m.Q!csWEXfVEVxdviNvgAd:localhost:8800m-Q!cosGKKhHvKaVukBCic:localhost:8800m.Q!coGyOAgYnlBZAqznax:localhost:8800m-.Q!cidyuyekVzJHHvyomb:localhost:8800mA-Q!cSUQGmpIsSCBAVTOHo:localhost:8800m..Q!cRbfhxZdPstEsPGPAu:localhost:8800mx.Q!cOFSwLSkxZECJMvjjZ:localhost:8800m-Q!cHtqiAyCHEAoBIbCmL:localhost:8800mC.Q!cGkVFpidyBBxUxsszG:localhost:8800m.Q!bzPCFeFSMbCESvNbxl:localhost:8800th.Q!cGkVFpidyBBxUxsszG:localhost:8800th.Q!cSUQGmpIsSCBAVTOHo:localhost:8800th.Q!cRbfhxZdPstEsPGPAu:localhost:8800th.Q!coGyOAgYnlBZAqznax:localhost:8800th.Q!cosGKKhHvKaVukBCic:localhost:8800th.Q!duCKuavMBSfRbTFPsc:localhost:8800th.Q!drnXStKXkNQkouqUAg:localhost:8800th.Q!dnZVySJLGNtUKsSgXW:localhost:8800th.Q!djwLhpJUYOKsgQtrky:localhost:8800th.Q!dWgOTucBVQBKZjfndN:localhost:8800th.Q!dUnULFLGtgaVdwHtnz:localhost:8800th.Q!dDqNKNFdIjCAwnyaxp:localhost:8800th.Q!dBfASZrfiFeSKTjYJm:localhost:8800th.Q!cvXpMzcxNNhsNttxvt:localhost:8800th.Q!csWEXfVEVxdviNvgAd:localhost:8800th.Q!awHAhLuEkavTGACcUW:localhost:8800th-Q!awHAhLuEkavTGACcUW:localhost:8800mN.Q!atnRTMliktaVUhMVID:localhost:8800th.Q!atnRTMliktaVUhMVID:localhost:8800m:.Q!anErKtXIsVKEEsrzWM:localhost:8800th.Q!anErKtXIsVKEEsrzWM:localhost:8800m.Q!aknLNLxfChlLvFYhkJ:localhost:8800th,.Q!eWRdwtyqHvuxZFvhNS:localhost:8800m .Q!ePtMOPPOgOcBIMNZpn:localhost:8800th.Q!ePtMOPPOgOcBIMNZpn:localhost:8800m.Q!eLsrBEnrHolwCNgkFW:localhost:8800th-Q!eLsrBEnrHolwCNgkFW:localhost:8800me.Q!eKrOqiOabJcMgIJjwC:localhost:8800th.Q!eJPTUgihvSwaOhIkrC:localhost:8800th.Q!eGEEtFXUXuZDImkeql:localhost:8800th-Q!eKrOqiOabJcMgIJjwC:localhost:8800m8-Q!eJPTUgihvSwaOhIkrC:localhost:8800m.Q!eGEEtFXUXuZDImkeql:localhost:8800m AKV f ( r 4 ~ A  Q  ^ "l0z=JYg+v:I V9x Q  !TSFcaXDBqrCREHRHxv:localhost:8800th&\9w Q  !THHfVSOSWiBQTHRAnJ:localhost:8800th&\;v Q!SyIWYOmcGiASNkPCTB:localhost:8800th&\9u Q  !SvKwEALYoNreUvqAlp:localhost:8800th&\:t Q !SrwdtDytJDUBVZOueF:localhost:8800th&\;s Q!SrMQpDMFREKRMELwbL:localhost:8800th&\9r Q  !SpXEytywhTbAftyVBr:localhost:8800th&\:q Q !SnROoiDBapNNtMmKnT:localhost:8800th&\9p Q  !SfYtaUhCFosNfHfUVm:localhost:8800th&\9o Q  !SUDzkfFBgpuCANOxRS:localhost:8800th&\9n Q  !SBEprlZiuliFNSfNmz:localhost:8800th&\9m Q  !RmwbYvIIQyPlHlClty:localhost:8800th&\9l Q   !RmdhCjvouVLmyIHjaM:localhost:8800th&\9k Q  !RYNJAGdRhIlwRZFbrO:localhost:8800th&\:j Q !RSLvuCuAqKQQrKCxNq:localhost:8800th&\9i Q  !RPfffkmSEbWggEjnoI:localhost:8800th&\9h Q   !ROoilpDjLJfjKfSPIi:localhost:8800th&\;g Q!RDEAXrqXQizuhCUFPq:localhost:8800th&\9f Q  !QyLUggxrTnULUAOseq:localhost:8800th&\9e Q  !QxqzQoEBIZhmzHIGrl:localhost:8800th&\9d Q  !QnmLrBAxeItdHsaxWf:localhost:8800th&\:c Q !QkkdnzvdrjHaFGkzMt:localhost:8800th&\9b Q  !QcaNrIiUsWpTiVGOnt:localhost:8800th&\9a Q  !QZhNrNpwObZGJZpdAG:localhost:8800th&\;` Q!QWLJZmJqjWZjVOjdYF:localhost:8800th&\9_ Q  !QMrkSPlQDGborAyWtQ:localhost:8800th&\9^ Q  !QFiJrWFFeTAAAUCjCE:localhost:8800th&\:] Q !PzoqoNRxeEEqiLyVSV:localhost:8800th&\:\ Q !PgNDjhhIBAXKryuGKy:localhost:8800th&\:[ Q !PcvmCDeVUSyJbXpTig:localhost:8800th&\9Z Q  !PVyTvKbqnjSXfGWAMy:localhost:8800th&\:Y Q !PUIxAaiCnbqaVbawGu:localhost:8800th&\9X Q   !PQZMTVTeCYqMZwkHvW:localhost:8800th&\;W Q!PHkVrXAyfGkFtzSagu:localhost:8800th&\9V Q  !PEcOacvKaBKpXjytEF:localhost:8800th&\9U Q   !OtBUhGeUSiDMWRKIOT:localhost:8800th&\9T Q  !OqPpVlCwmKdAUlwrXI:localhost:8800th&\;S Q!OaCEdDAiatpwYcagUb:localhost:8800th&\ 9R Q  !OXpGdKbowFUTChPdmF:localhost:8800th&\9Q Q  !OSHhtkGUjpUCkXwIhj:localhost:8800th&\:P Q !OJilSqnQvLgoXSqRaW:localhost:8800th&\9O Q  !OCEHAjcOXWNyWIESIS:localhost:8800th&\9N Q  !OBWkjfrDCNgYFfblia:localhost:8800th&\9M Q  !NrxQuziwSWzsHuXIlG:localhost:8800th&\9L Q  !NhWgOTYzEPRwAxRQvS:localhost:8800th&\:K Q !NgkQVVUNzoyCVPtckM:localhost:8800th&\9J Q  !NfaPEGKjnUDUTavzol:localhost:8800th&\9I Q  !NeYaCeYNFATCqlrlGT:localhost:8800th&\;H Q!NcJYmIbgjsaKJOzBcs:localhost:8800th&\;G Q!NboFFVLpJHTeuUKCjM:localhost:8800th&\:F Q !NanhNmCnVVpmZRJrTF:localhost:8800th&\:E Q !NajQnqYmGyTjxhFYar:localhost:8829th&\9D Q  !NZHpBquHDfJAjiawGk:localhost:8800th&\;C Q!NQgavrmiCPUVaVjssy:localhost:8800th&\9B Q  !NPdjmIfsBVIIkvWBzD:localhost:8800th&\9A Q  !NNiyzThHMivrxhojfp:localhost:8800th&\9@ Q  !NJdkYMskQwIpIWlWkn:localhost:8800th&\9? Q  !NFWKQvZkIwvecnREOC:localhost:8800th&\:> Q !MqstbCLZIQFiYNHrqR:localhost:8800th&\;= Q!MlzmtUYSZOiByAZdKx:localhost:8800th&\;< Q!MXhwoqNXvexeDDSOZT:localhost:8800th&\9; Q  !MWCLSWWGdWcSivNVLI:localhost:8800th&\9: Q  !MBWnwKRwFznvRpAzxr:localhost:8800th&\99 Q  !LvARVIpJZeRQxbKefX:localhost:8800th&\:8 Q !LazKtcHZriKzCvvGwV:localhost:8800th&\ (P|pdXL@4(th\PD8,  x l ` T H < 0 $    th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 ( th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th~ th} th| th{ thz thy thx thw thv thu tht ths thr thq thp tho thn thm thl thk thj thi thh thg thf the thd thc thb tha th` th_ th^ th] th\ th[ thZ thY thX thW thV thU thTl thS thR thQ thP thO thN thM thL thK thJ thI thH thG thF thE thD thC thB thA th@ th? th> th= th< th; th: th9 th8 th7 th6 th5 th4 th3 th2 th1 th0 th/ th. th- th, th+ th* th) th( th' th& th% th$ th# th" th! th th th th th th th th th th th th th th th th th th th th th th AJ T ^ " l . y ; J  Y e's5~@O\f*r6F ;9 Q !aWvVRVaDflYyyGTOdD:localhost:8800th&\98 Q  !aWbcZNVBalJilCEsdr:localhost:8800th&\97 Q  !aWJOsiuJONOvjKWEjO:localhost:8800th&\96 Q  !aVxOoyiLLnxmzgLJat:localhost:8800th&\95 Q  !aSKNKSGXPGoIbSrbEN:localhost:8800th&\94 Q  !aLxrqpqLkbzyIxGgpk:localhost:8800th&\93 Q   !aHyAJEOSdKqTiRjOvw:localhost:8800th&\92 Q  !aBCvSXjtZUEPlPGHvY:localhost:8800th&\91 Q  !ZvLVbnHjeymRiFIkYr:localhost:8800th&\;0 Q!ZaltdIYVZjCHsCWTZD:localhost:8800th&\;/ Q!ZaOktTIVeRgBXxfubH:localhost:8800th&\9. Q  !ZYKvjplZRyIWvzkRyM:localhost:8800th&\;- Q!ZWANpHlizyLrUiVvAm:localhost:8800th&\9, Q  !ZShBIxwbJmxjjZmoRQ:localhost:8800th&\;+ Q!ZOwibbprUCQrSJQCrx:localhost:8800th&\;* Q!ZOpRjvUhkWYJBFJZeO:localhost:8800th&\9) Q  !ZNIjCvcWhgcwskanjT:localhost:8800th&\:( Q !ZKPJvrCZHMHPEksYDc:localhost:8800th&\;' Q!YufaOfAlruTdjyUCwO:localhost:8800th&\9& Q  !YtVXQjSPgVtbxrzUOA:localhost:8800th&\:% Q !YpcmaMNMzjvtgYtrli:localhost:8800th&\9$ Q  !YmRuIWixFpaqEeDQLZ:localhost:8800th&\9# Q  !YgaGPEraeLCqHQirin:localhost:8800th&\9" Q  !YaLuQzmJKSMTSFEqjO:localhost:8800th&\;! Q!YQATbgbLImCDamiDHC:localhost:8800th&\9 Q  !YGUjVdVdpcQoGkRnWB:localhost:8800th&\; Q!XnUZiYJDWVNGfsBnGz:localhost:8800th&\: Q !XiwGxQKwjgutEClKUy:localhost:8829th&\; Q!XgobMgBjNcDRJnRXLD:localhost:8800th&\9 Q  !XcaKxZsPvbZhAGKKdx:localhost:8800th&\9 Q  !XUbDuPDiMTXJZDyAPc:localhost:8800th&\9 Q  !XRAZJeoZBhGeHKKjaG:localhost:8800th&\; Q!XNfwczePlyYFWLCaui:localhost:8800th&\; Q!XMNRkfscQXRjgYrOSd:localhost:8800th&\; Q!XIqmzIFbkHGQPIpywk:localhost:8800th&\ 9 Q  !XGAmnfaVvjDtQJuufa:localhost:8800th&\9 Q   !WuiaqqIOvBjgETqdus:localhost:8800th&\: Q !WpThtNEVhrUbUdCdMJ:localhost:8800th&\9 Q   !WjlTCJVOFJkanCtkFE:localhost:8800th&\9 Q  !WhqVaRReBxJXADAyYD:localhost:8800th&\9 Q   !WhLedNwPGGGTtqeqam:localhost:8800th&\9 Q  !WgXzOXLTeqaGfiDFhL:localhost:8800th&\9 Q   !WYyiQAVvitxsLZKVCG:localhost:8800th&\: Q !WWZVpyLeZfyfpWidLx:localhost:8800th&\ 9 Q  !WVzjUePHrzCjfyTbmK:localhost:8800th&\; Q!WFHIeSFQyuugGeBFxW:localhost:8800th&\9 Q  !VhUAklonNaWKRnLkcr:localhost:8800th&\9 Q  !VWYMJxEviBNDdJCuKT:localhost:8800th&\: Q !VUibrTIkcRbfrogbQV:localhost:8800th&\; Q!VOhMAiLfKyTOZbmKGw:localhost:8800th&\9 Q  !VNdqhtoDkyMoQdMTtM:localhost:8800th&\; Q!VAEDgDJVqmxXZyAlSW:localhost:8800th&\ 9 Q  !UyLoIXmzVFwycmBUeh:localhost:8800th&\9 Q  !UaitDdkGDcwvRLJSvp:localhost:8800th&\; Q!UTAORDrNxIbSlGByAp:localhost:8800th&\ ; Q!URpLZLuBfVcfHVTBGS:localhost:8800th&\9 Q  !UMFUOnYRvwKwSPkYHB:localhost:8800th&\; Q!UGVFuRGyPQmBbGsEDo:localhost:8800th&\; Q!TleKOyAElrpgyyrAQA:localhost:8800th&\;~ Q!TlJCaYlCkOOVzFDlLx:localhost:8800th&\9} Q  !TkluVzxeeCbMtbFWWS:localhost:8800th&\;| Q!TeraguiGoZoeOGFzlI:localhost:8800th&\9{ Q  !TcaopYfMoJFEcjYRzJ:localhost:8800th&\;z Q!TcCLuIBUrtFqghDgay:localhost:8800th&\9y Q   !TWETXUgfFZafDdbqLS:localhost:8800th&\ JuI_0sDY* o @  U & k =  S $ i : ~O e6{La2xuF\-.Q!nvclDopiBLEOKBIheH:localhost:8800m.Q!jlGSdNttccYxjfLkwW:localhost:8800m.Q!jfshVGNDxkvqPxFxWB:localhost:8800th -Q!jfshVGNDxkvqPxFxWB:localhost:8800m.Q!jYzridjeihmwPBuwLb:localhost:8800th -Q!jYzridjeihmwPBuwLb:localhost:8800m .Q!jRuDexjFzIDOKbwDJQ:localhost:8800th .Q!jRuDexjFzIDOKbwDJQ:localhost:8800m.Q!jIfvTrwedrWLubsnlM:localhost:8800th .Q!jIfvTrwedrWLubsnlM:localhost:8800m.Q!jGQNGXehugtTvjUGKI:localhost:8800th.Q!ntuwVdUxfzNIhIKYaz:localhost:8800th,-Q!ntuwVdUxfzNIhIKYaz:localhost:8800mA.Q!nteAxExBGJfaGIpuCx:localhost:8800th+-Q!nteAxExBGJfaGIpuCx:localhost:8800mV.Q!nhbUIcIbhuXkRqfeDa:localhost:8800th*.Q!nhbUIcIbhuXkRqfeDa:localhost:8800m.Q!nfxDdcgDfooxyiAzaB:localhost:8800th).Q!nfxDdcgDfooxyiAzaB:localhost:8800m\.Q!nftGLlLhVgzOwOFufp:localhost:8800th(.Q!nftGLlLhVgzOwOFufp:localhost:8800m.Q!mvgUHEsfGqDkPQUvfG:localhost:8800th'.Q!mvgUHEsfGqDkPQUvfG:localhost:8800m&.Q!msMfSdLIAvklSSAnci:localhost:8800th&-Q!msMfSdLIAvklSSAnci:localhost:8800m:.Q!mogJVPxghalmKbblUq:localhost:8800th%.Q!mogJVPxghalmKbblUq:localhost:8800m0.Q!mfzIRinBAGGrZvQAuI:localhost:8800th$-Q!mfzIRinBAGGrZvQAuI:localhost:8800mm.Q!mTlCLZQCmfDuQsJxxp:localhost:8800th#.Q!mTlCLZQCmfDuQsJxxp:localhost:8800m.Q!mOrKBPhetifKHDmElM:localhost:8800th".Q!mOrKBPhetifKHDmElM:localhost:8800m.Q!mMsxpaIlcykPuOnDyl:localhost:8800th!.Q!mMsxpaIlcykPuOnDyl:localhost:8800m.Q!mBQpGaIiadEuKBXfOw:localhost:8800th .Q!mBQpGaIiadEuKBXfOw:localhost:8800m.Q!loalEsWaTYwrVUNJLr:localhost:8800th-Q!loalEsWaTYwrVUNJLr:localhost:8800m.Q!lgejtcwlywOoIXwEgy:localhost:8800th.Q!lgejtcwlywOoIXwEgy:localhost:8800m.Q!laUExtszUaoCpZoyEq:localhost:8800th.Q!laUExtszUaoCpZoyEq:localhost:8800m..Q!lMRBkbYJDQHgdBZBFJ:localhost:8800th-Q!lMRBkbYJDQHgdBZBFJ:localhost:8800mD.Q!lEJUJZxqZPKZetemiR:localhost:8800th.Q!lEJUJZxqZPKZetemiR:localhost:8800m.Q!lAGTcYIuMBXsVRGCOe:localhost:8800th-Q!lAGTcYIuMBXsVRGCOe:localhost:8800mX.Q!kxTDuIasPNpXtiRsif:localhost:8800th-Q!kxTDuIasPNpXtiRsif:localhost:8800m.Q!kwXxkGQFkaeenFTQJr:localhost:8800th.Q!kwXxkGQFkaeenFTQJr:localhost:8800m.Q!kwJgbtogEzCqYbUXfh:localhost:8800th.Q!kwJgbtogEzCqYbUXfh:localhost:8800m.Q!krhefVncoErkCtnvsy:localhost:8800th.Q!krhefVncoErkCtnvsy:localhost:8800m.Q!kpTPWDZdBbbXKLonZK:localhost:8800th.Q!kpTPWDZdBbbXKLonZK:localhost:8800m.Q!kkgEEVUJynguTqAoWD:localhost:8800th-Q!kkgEEVUJynguTqAoWD:localhost:8800m.Q!kjueCKHmYaYefEEpQY:localhost:8800th.Q!kjueCKHmYaYefEEpQY:localhost:8800m.Q!kjjUsMowsioSQRIJeg:localhost:8800th.Q!kjjUsMowsioSQRIJeg:localhost:8800mc.Q!kOmCTyiizHqfCJdhlR:localhost:8800th.Q!kOmCTyiizHqfCJdhlR:localhost:8800m(.Q!kAxKaIQhXTtGFWSUgr:localhost:8800th.Q!kAxKaIQhXTtGFWSUgr:localhost:8800m.Q!jveVPZSXJOJyNDebPO:localhost:8800th.Q!jveVPZSXJOJyNDebPO:localhost:8800m.Q!jomrpmwwQQtghscizn:localhost:8800th.Q!jomrpmwwQQtghscizn:localhost:8800m.Q!jlGSdNttccYxjfLkwW:localhost:8800th AJV c ' p 4 z < G V e)r6~BLXd(r6E 9z Q  !hYPSaMPGsLnvYSmwhg:localhost:8800th&\9y Q  !hWHyATwKfuznrqTiyu:localhost:8800th&\9x Q  !hSzBsirdPWHtVjagXn:localhost:8800th&\9w Q  !hNCwypIzdDZDVmCEfd:localhost:8800th&\9v Q  !hGsPmWXboxZZtOlsxY:localhost:8800th&\:u Q !hFwigdYZkwYNSwelRH:localhost:8800th&\9t Q  !gXfXRDTXeVvOHQdaaQ:localhost:8800th&\9s Q  !fuHSJcznvGQnoYoLPW:localhost:8800th&\9r Q  !fsbkkRBZlUcBVVfMME:localhost:8800th&\;q Q!ffijTnPMbTrDXHqOXf:localhost:8800th&\9p Q  !fdEymmlcUvjgshvVyl:localhost:8800th&\9o Q  !fcdNYFWFyxmdpKAknc:localhost:8800th&\9n Q  !fOJLpnbtgKNxxVDquX:localhost:8800th&\;m Q!fJXiUpbbOlLbHWmPgs:localhost:8800th&\ ;l Q!fGkUEndqGrieltwbCh:localhost:8800th&\9k Q  !fDISaqNBhlOwherxSt:localhost:8800th&\;j Q!eySSVuCclRpBDgwKIU:localhost:8800th&\9i Q  !erBPdgtUsiOfIKUkho:localhost:8800th&\;h Q !egbhiBqOGhloZzopol:localhost:8800th&\9g Q  !egCvzKpbEwmuvDoBTb:localhost:8800th&\;f Q!edbUkYJIZBNOiTuLJs:localhost:8800th&\9e Q  !eZjhYVNpwdogVDKHCk:localhost:8800th&\;d Q!eWRdwtyqHvuxZFvhNS:localhost:8800th&\;c Q!ePtMOPPOgOcBIMNZpn:localhost:8800th&\9b Q  !eLsrBEnrHolwCNgkFW:localhost:8800th&\;a Q!eKrOqiOabJcMgIJjwC:localhost:8800th&\;` Q!eJPTUgihvSwaOhIkrC:localhost:8800th&\9_ Q   !eGEEtFXUXuZDImkeql:localhost:8800th&\9^ Q  !dvZnfJonDkxlrrDXUk:localhost:8800th&\;] Q!duCKuavMBSfRbTFPsc:localhost:8800th&\:\ Q !drnXStKXkNQkouqUAg:localhost:8800th&\9[ Q  !dnZVySJLGNtUKsSgXW:localhost:8800th&\9Z Q  !djwLhpJUYOKsgQtrky:localhost:8800th&\9Y Q  !dWgOTucBVQBKZjfndN:localhost:8800th&\9X Q  !dUnULFLGtgaVdwHtnz:localhost:8800th&\9W Q  !dDqNKNFdIjCAwnyaxp:localhost:8800th&\:V Q !dBfASZrfiFeSKTjYJm:localhost:8800th&\9U Q  !cvXpMzcxNNhsNttxvt:localhost:8800th&\9T Q  !csWEXfVEVxdviNvgAd:localhost:8800th&\:S Q !cosGKKhHvKaVukBCic:localhost:8800th&\9R Q   !coGyOAgYnlBZAqznax:localhost:8800th&\;Q Q!cidyuyekVzJHHvyomb:localhost:8800th&\9P Q  !cSUQGmpIsSCBAVTOHo:localhost:8800th&\:O Q !cRbfhxZdPstEsPGPAu:localhost:8800th&\;N Q!cOFSwLSkxZECJMvjjZ:localhost:8800th&\;M Q !cHtqiAyCHEAoBIbCmL:localhost:8800th&\ ;L Q!cGkVFpidyBBxUxsszG:localhost:8800th&\;K Q !bzPCFeFSMbCESvNbxl:localhost:8800th&\;J Q!bnTuVBaAJTPbcYZtRl:localhost:8800th&\ 9I Q  !bkwyieHZwSMJfuSKvV:localhost:8800th&\:H Q !bjdLCdBwkKaihRIRFG:localhost:8800th&\;G Q!biBIcqnGelHvLnpkOu:localhost:8800th&\9F Q  !beBXQofoOfxNBtzsut:localhost:8800th&\9E Q  !bQDOrbAknnQZfUbhgS:localhost:8800th&\9D Q   !bOSxzttDtclnrWnLov:localhost:8800th&\;C Q!bNSXSTadOMhIrYpMzH:localhost:8800th&\:B Q !bLWyXaXdvUhdSAooUz:localhost:8800th&\9A Q  !azRJNFPIRSFAskLILK:localhost:8800th&\9@ Q  !awHAhLuEkavTGACcUW:localhost:8800th&\;? Q!atnRTMliktaVUhMVID:localhost:8800th&\;> Q!anErKtXIsVKEEsrzWM:localhost:8800th&\9= Q  !aknLNLxfChlLvFYhkJ:localhost:8800th&\;< Q!aiOswwhoZqjhcjzbzc:localhost:8800th&\9; Q  !aaRwQZdNAliyvRHpjs:localhost:8800th&\ 9: Q  !aZwMKYDXJRlSKjQNWM:localhost:8800th&\ ,H,zK q B  W ( l =  S $ h 9 P!e6`1{LuFb4[sDZ,,/.Q!rJhSRzmWBQHlIhuDXT:localhost:8800thD.Q!nxLxsxzliamzflrEBs:localhost:8800m.Q!scyFsXcUIJiLIMwWMY:localhost:8800thP.Q!sPWVGnipjiiWQpywNO:localhost:8800thO.Q!sJnuQYOyruhUpXDsLY:localhost:8800thN.Q!sHRHoXzYrrPSlWBkoh:localhost:8800thM.Q!sBcwyPoXKgnSGVTjNR:localhost:8800thL.Q!sAWFpvSUPExZLVcPEd:localhost:8800thK.Q!rwUuVBrftGHDBOlEZm:localhost:8800thJ.Q!rpVYLTJGcFNdGzFzXj:localhost:8800thI.Q!raCWVWQGnXbmkexpCN:localhost:8800thH.Q!rZWweGEChkxxtzyfDB:localhost:8800thG.Q!rWmvvGBgmFMdVvcfPk:localhost:8800thF.Q!rWGwSSefrZzQYCYFHs:localhost:8800thE.Q!ozgnwUlebxvzLVwyHW:localhost:8800m.Q!odAvowLhHJcmkKlxFk:localhost:8800th1-Q!odAvowLhHJcmkKlxFk:localhost:8800m.Q!oZGRyBAkNDrEeiAqWL:localhost:8800th0.Q!oZGRyBAkNDrEeiAqWL:localhost:8800mz.Q!oXKJArsPmtgaYANBrg:localhost:8800th/-Q!oXKJArsPmtgaYANBrg:localhost:8800m2.Q!nxLxsxzliamzflrEBs:localhost:8800th.-Q!sfXbvAcOUJhzGwWEpZ:localhost:8800m~-Q!scyFsXcUIJiLIMwWMY:localhost:8800m-Q!sPWVGnipjiiWQpywNO:localhost:8800m .Q!sJnuQYOyruhUpXDsLY:localhost:8800m.Q!sHRHoXzYrrPSlWBkoh:localhost:8800m6.Q!sBcwyPoXKgnSGVTjNR:localhost:8800m.Q!sAWFpvSUPExZLVcPEd:localhost:8800mw.Q!rwUuVBrftGHDBOlEZm:localhost:8800m.Q!rpVYLTJGcFNdGzFzXj:localhost:8800m+.Q!raCWVWQGnXbmkexpCN:localhost:8800m-Q!rZWweGEChkxxtzyfDB:localhost:8800m.Q!rWmvvGBgmFMdVvcfPk:localhost:8800mL.Q!rWGwSSefrZzQYCYFHs:localhost:8800m.Q!rQeYcODvQiLsOIbQrJ:localhost:8800m.Q!rJhSRzmWBQHlIhuDXT:localhost:8800m.Q!qzurjQHmiriwjaUMhO:localhost:8800thC.Q!qzurjQHmiriwjaUMhO:localhost:8800m.Q!qzrZzAieCgGSbpKOQR:localhost:8800thB.Q!qzrZzAieCgGSbpKOQR:localhost:8800m.Q!qxqNYKdtgvOQdhmgsj:localhost:8800thA-Q!qxqNYKdtgvOQdhmgsj:localhost:8800mT.Q!quaZwrGnzbNWhwAOYB:localhost:8800th@-Q!quaZwrGnzbNWhwAOYB:localhost:8800mL.Q!qtelAHlSkrqEFmlCqS:localhost:8800th?.Q!qtelAHlSkrqEFmlCqS:localhost:8800m.Q!qjijQBfMwsCPTVgKPm:localhost:8800th>.Q!qjijQBfMwsCPTVgKPm:localhost:8800md.Q!qSUSLLWjDxcGibUZdT:localhost:8800th=.Q!qSUSLLWjDxcGibUZdT:localhost:8800m.Q!qInWQPtNQfBFoVzUtP:localhost:8800th<.Q!qInWQPtNQfBFoVzUtP:localhost:8800mm.Q!plcvCHNbjCkNMMxnTk:localhost:8800th;-Q!plcvCHNbjCkNMMxnTk:localhost:8800m.Q!peJMRJtXBvIiCttNmm:localhost:8800th:.Q!peJMRJtXBvIiCttNmm:localhost:8800mH.Q!pduebXnTyxQWVxEICp:localhost:8800th9.Q!pduebXnTyxQWVxEICp:localhost:8800m@.Q!paDmNxsOZIKyApbxXs:localhost:8800th8.Q!paDmNxsOZIKyApbxXs:localhost:8800mD.Q!pUSFAnuwUuMlbiInDR:localhost:8800th7.Q!pUSFAnuwUuMlbiInDR:localhost:8800m.Q!pTvdDtkgovsIdAdxCm:localhost:8800th6.Q!pTvdDtkgovsIdAdxCm:localhost:8800m.Q!pJUItjYTOUJQFIxyiX:localhost:8800th5.Q!pJUItjYTOUJQFIxyiX:localhost:8800m'.Q!pHoEnhQYhwlbJXqKQE:localhost:8800th4.Q!pHoEnhQYhwlbJXqKQE:localhost:8800mg.Q!oznZaCpONuNDaLarkI:localhost:8800th3-Q!oznZaCpONuNDaLarkI:localhost:8800mf.Q!ozgnwUlebxvzLVwyHW:localhost:8800th2 AJW c ' s 6 B  O  _ #m0z>JWf*t7DT9; Q  !plcvCHNbjCkNMMxnTk:localhost:8800th&\9: Q  !peJMRJtXBvIiCttNmm:localhost:8800th&\;9 Q!pduebXnTyxQWVxEICp:localhost:8800th&\98 Q   !paDmNxsOZIKyApbxXs:localhost:8800th&\97 Q  !pUSFAnuwUuMlbiInDR:localhost:8800th&\96 Q  !pTvdDtkgovsIdAdxCm:localhost:8800th&\95 Q  !pJUItjYTOUJQFIxyiX:localhost:8800th&\:4 Q !pHoEnhQYhwlbJXqKQE:localhost:8800th&\93 Q  !oznZaCpONuNDaLarkI:localhost:8800th&\;2 Q!ozgnwUlebxvzLVwyHW:localhost:8800th&\91 Q  !odAvowLhHJcmkKlxFk:localhost:8800th&\:0 Q !oZGRyBAkNDrEeiAqWL:localhost:8800th&\;/ Q !oXKJArsPmtgaYANBrg:localhost:8800th&\ 9. Q  !nxLxsxzliamzflrEBs:localhost:8800th&\9- Q  !nvclDopiBLEOKBIheH:localhost:8800th&\9, Q   !ntuwVdUxfzNIhIKYaz:localhost:8800th&\ 9+ Q  !nteAxExBGJfaGIpuCx:localhost:8800th&\:* Q !nhbUIcIbhuXkRqfeDa:localhost:8800th&\9) Q  !nfxDdcgDfooxyiAzaB:localhost:8800th&\9( Q  !nftGLlLhVgzOwOFufp:localhost:8800th&\:' Q !mvgUHEsfGqDkPQUvfG:localhost:8800th&\9& Q  !msMfSdLIAvklSSAnci:localhost:8800th&\;% Q!mogJVPxghalmKbblUq:localhost:8800th&\9$ Q  !mfzIRinBAGGrZvQAuI:localhost:8800th&\9# Q  !mTlCLZQCmfDuQsJxxp:localhost:8800th&\9" Q  !mOrKBPhetifKHDmElM:localhost:8800th&\;! Q!mMsxpaIlcykPuOnDyl:localhost:8800th&\; Q!mBQpGaIiadEuKBXfOw:localhost:8800th&\9 Q  !loalEsWaTYwrVUNJLr:localhost:8800th&\: Q !lgejtcwlywOoIXwEgy:localhost:8800th&\: Q !laUExtszUaoCpZoyEq:localhost:8800th&\9 Q  !lMRBkbYJDQHgdBZBFJ:localhost:8800th&\: Q !lEJUJZxqZPKZetemiR:localhost:8800th&\ 9 Q  !lAGTcYIuMBXsVRGCOe:localhost:8800th&\9 Q  !kxTDuIasPNpXtiRsif:localhost:8800th&\; Q!kwXxkGQFkaeenFTQJr:localhost:8800th&\9 Q  !kwJgbtogEzCqYbUXfh:localhost:8800th&\9 Q   !krhefVncoErkCtnvsy:localhost:8800th&\9 Q   !kpTPWDZdBbbXKLonZK:localhost:8800th&\9 Q  !kkgEEVUJynguTqAoWD:localhost:8800th&\9 Q  !kjueCKHmYaYefEEpQY:localhost:8800th&\9 Q  !kjjUsMowsioSQRIJeg:localhost:8800th&\; Q!kOmCTyiizHqfCJdhlR:localhost:8800th&\: Q !kAxKaIQhXTtGFWSUgr:localhost:8800th&\9 Q  !jveVPZSXJOJyNDebPO:localhost:8800th&\; Q!jomrpmwwQQtghscizn:localhost:8800th&\9 Q  !jlGSdNttccYxjfLkwW:localhost:8800th&\9 Q  !jfshVGNDxkvqPxFxWB:localhost:8800th&\; Q !jYzridjeihmwPBuwLb:localhost:8800th&\: Q !jRuDexjFzIDOKbwDJQ:localhost:8800th&\9 Q  !jIfvTrwedrWLubsnlM:localhost:8800th&\9 Q  !jGQNGXehugtTvjUGKI:localhost:8800th&\9 Q  !jDKAOtmeAGbYTpwyEW:localhost:8800th&\9 Q  !itfjLXhEaORJLkbfVS:localhost:8800th&\; Q!itKDOCtoMkFUETDtle:localhost:8800th&\9 Q  !ijOiudvuzOLNmgNKfG:localhost:8800th&\; Q!ifQxHmNAcSSGHVMjfi:localhost:8800th&\9 Q  !icheSPMgpemswIdQkw:localhost:8800th&\; Q!iTQSCiLqRMDtgXtUdC:localhost:8800th&\9 Q  !iLHJbsFszubrnybDNz:localhost:8800th&\: Q !iKezIvJyjkNqKayFju:localhost:8800th&\9~ Q  !hrhDJbmXvXBizKoiiK:localhost:8800th&\;} Q!hgjYwwwjWJNgwrzOto:localhost:8800th&\9| Q  !hegUPDZCEEmBhsNJJR:localhost:8800th&\9{ Q  !hZuwenlFDapIPBOyfi:localhost:8800th&\ W>1e[, p A  W ( (6lz=KU`&P!tEj; 1 , q B  W ) p B ^.Q!wAyboOFgsOPwkmgMAI:localhost:8800thp.Q!vOfeZvbtpuHfoqShFl:localhost:8800thf.Q!vJQYmOxOBLwFKzYkNj:localhost:8800the.Q!vBvlJEXUSQKUYmsKcO:localhost:8800thd.Q!vAUAIZrCnHTeMGeNuw:localhost:8800thc.Q!uxKymrHZeXRYCZwekU:localhost:8800thb.Q!utJsNQubeIXvcTKGpx:localhost:8800tha.Q!uqIEMXzdeNeXdJmuwh:localhost:8800th`.Q!ulbQzxdPXzuvNoqqgU:localhost:8800th_.Q!ubmTdQFAhrhZkGULDx:localhost:8800th^.Q!uSBqTezaFcMnlowsEf:localhost:8800th].Q!uPxXJHJyFQwvpQLZNs:localhost:8800th\.Q!svYOOXWZHtQQzlMcEP:localhost:8800thS.Q!svYOOXWZHtQQzlMcEP:localhost:8800m.Q!sqkBzbHHJOTNWwynqV:localhost:8800thR.Q!sqkBzbHHJOTNWwynqV:localhost:8800mn.Q!vZGjXEXQoCaoUXnkCa:localhost:8800thj.Q!vVmSdclwPIqYDbnmPn:localhost:8800thi.Q!vRmMcoJDeCupADwqac:localhost:8800thh.Q!vRRNxNyGboLHNhqQvr:localhost:8800thg-Q!tDsPLsKOLPePtEWRwn:localhost:8800m`.Q!vyCFfUTJKYJSDadFhT:localhost:8800tho.Q!vxEMWYTUdzvLyVZNzJ:localhost:8800thn.Q!vttkrtSyHEJXVMlvLo:localhost:8800thm.Q!vpuivIQDEhyuhOLWpg:localhost:8800thl.Q!vnFXnkCSfTbsSNKrtg:localhost:8800thk.Q!vRmMcoJDeCupADwqac:localhost:8800m<.Q!vRRNxNyGboLHNhqQvr:localhost:8800m-Q!vOfeZvbtpuHfoqShFl:localhost:8800mk-Q!vJQYmOxOBLwFKzYkNj:localhost:8800m.Q!vBvlJEXUSQKUYmsKcO:localhost:8800m2.Q!vAUAIZrCnHTeMGeNuw:localhost:8800m-Q!uxKymrHZeXRYCZwekU:localhost:8800m .Q!utJsNQubeIXvcTKGpx:localhost:8800m.Q!uqIEMXzdeNeXdJmuwh:localhost:8800m!.Q!ulbQzxdPXzuvNoqqgU:localhost:8800m.Q!ubmTdQFAhrhZkGULDx:localhost:8800m,.Q!uSBqTezaFcMnlowsEf:localhost:8800m.Q!uPxXJHJyFQwvpQLZNs:localhost:8800mtt.Q!uJtKGXTNdEnCPNOGDx:localhost:8800th[-Q!uJtKGXTNdEnCPNOGDx:localhost:8800m.Q!uGpSboYkgxVNOqNeUG:localhost:8800thZ.Q!uGpSboYkgxVNOqNeUG:localhost:8800m.Q!tkajvIKHoOMWGsReBs:localhost:8800thY-Q!tkajvIKHoOMWGsReBs:localhost:8800ms.Q!tcYctHPiaKzsKgrXlU:localhost:8800thX.Q!tcYctHPiaKzsKgrXlU:localhost:8800m.Q!taANXnGBZntAreRurn:localhost:8800thW.Q!taANXnGBZntAreRurn:localhost:8800m.Q!tPkCGJBKmqUXJoRrnY:localhost:8800thV.Q!tPkCGJBKmqUXJoRrnY:localhost:8800mG.Q!tLkhTnTgDjjAvscRkW:localhost:8800thU.Q!tLkhTnTgDjjAvscRkW:localhost:8800m.Q!tDsPLsKOLPePtEWRwn:localhost:8800thT-Q!wAyboOFgsOPwkmgMAI:localhost:8800mc.Q!vyCFfUTJKYJSDadFhT:localhost:8800m.Q!vxEMWYTUdzvLyVZNzJ:localhost:8800m.Q!vttkrtSyHEJXVMlvLo:localhost:8800m .Q!vpuivIQDEhyuhOLWpg:localhost:8800m.Q!vnFXnkCSfTbsSNKrtg:localhost:8800m.Q!vZGjXEXQoCaoUXnkCa:localhost:8800mQ-Q!vVmSdclwPIqYDbnmPn:localhost:8800m7 ALY f ( s 6  C  P  _ #n1}?LYf(t8DR9| Q  !xhbvqJDfxMSsZPqvld:localhost:8800th&\9{ Q  !xcdNyJNFEdaBGFycsB:localhost:8800th&\9z Q  !wvnfKBSrUlfNmYoeil:localhost:8800th&\9y Q  !wsvXTJXouVkEZcCFsD:localhost:8800th&\9x Q  !wnriPzXkIMmdTNoJKU:localhost:8800th&\;w Q!whuymJoLfUdkFdxoyE:localhost:8800th&\9v Q  !wUuodvgsmAJqKJUBCQ:localhost:8800th&\9u Q  !wLitJYvgvNJzanSIvO:localhost:8800th&\;t Q!wIhMbfQzYbJobPdwyi:localhost:8800th&\9s Q  !wCsDjKBtuUbrmZgjsB:localhost:8800th&\;r Q!wBkUBAjOznOyxrLchl:localhost:8800th&\ 9q Q  !wBBQYEPjQGnoAzDpEu:localhost:8800th&\9p Q  !wAyboOFgsOPwkmgMAI:localhost:8800th&\9o Q  !vyCFfUTJKYJSDadFhT:localhost:8800th&\ 9n Q  !vxEMWYTUdzvLyVZNzJ:localhost:8800th&\;m Q!vttkrtSyHEJXVMlvLo:localhost:8800th&\9l Q  !vpuivIQDEhyuhOLWpg:localhost:8800th&\:k Q !vnFXnkCSfTbsSNKrtg:localhost:8800th&\9j Q  !vZGjXEXQoCaoUXnkCa:localhost:8800th&\;i Q!vVmSdclwPIqYDbnmPn:localhost:8800th&\:h Q !vRmMcoJDeCupADwqac:localhost:8800th&\9g Q  !vRRNxNyGboLHNhqQvr:localhost:8800th&\;f Q!vOfeZvbtpuHfoqShFl:localhost:8800th&\9e Q  !vJQYmOxOBLwFKzYkNj:localhost:8800th&\:d Q !vBvlJEXUSQKUYmsKcO:localhost:8800th&\9c Q  !vAUAIZrCnHTeMGeNuw:localhost:8800th&\9b Q  !uxKymrHZeXRYCZwekU:localhost:8800th&\;a Q!utJsNQubeIXvcTKGpx:localhost:8800th&\;` Q!uqIEMXzdeNeXdJmuwh:localhost:8800th&\9_ Q  !ulbQzxdPXzuvNoqqgU:localhost:8800th&\9^ Q  !ubmTdQFAhrhZkGULDx:localhost:8800th&\9] Q  !uSBqTezaFcMnlowsEf:localhost:8800th&\:\ Q !uPxXJHJyFQwvpQLZNs:localhost:8800th&\9[ Q  !uJtKGXTNdEnCPNOGDx:localhost:8800th&\:Z Q !uGpSboYkgxVNOqNeUG:localhost:8800th&\9Y Q  !tkajvIKHoOMWGsReBs:localhost:8800th&\9X Q  !tcYctHPiaKzsKgrXlU:localhost:8800th&\:W Q !taANXnGBZntAreRurn:localhost:8800th&\9V Q  !tPkCGJBKmqUXJoRrnY:localhost:8800th&\9U Q  !tLkhTnTgDjjAvscRkW:localhost:8800th&\9T Q  !tDsPLsKOLPePtEWRwn:localhost:8800th&\;S Q!svYOOXWZHtQQzlMcEP:localhost:8800th&\:R Q !sqkBzbHHJOTNWwynqV:localhost:8800th&\9Q Q  !sfXbvAcOUJhzGwWEpZ:localhost:8800th&\9P Q  !scyFsXcUIJiLIMwWMY:localhost:8800th&\9O Q  !sPWVGnipjiiWQpywNO:localhost:8800th&\ 9N Q  !sJnuQYOyruhUpXDsLY:localhost:8800th&\:M Q !sHRHoXzYrrPSlWBkoh:localhost:8800th&\;L Q!sBcwyPoXKgnSGVTjNR:localhost:8800th&\:K Q !sAWFpvSUPExZLVcPEd:localhost:8800th&\9J Q  !rwUuVBrftGHDBOlEZm:localhost:8800th&\:I Q !rpVYLTJGcFNdGzFzXj:localhost:8800th&\9H Q  !raCWVWQGnXbmkexpCN:localhost:8800th&\;G Q!rZWweGEChkxxtzyfDB:localhost:8800th&\9F Q  !rWmvvGBgmFMdVvcfPk:localhost:8800th&\;E Q!rWGwSSefrZzQYCYFHs:localhost:8800th&\9D Q  !rJhSRzmWBQHlIhuDXT:localhost:8800th&\:C Q !qzurjQHmiriwjaUMhO:localhost:8800th&\9B Q  !qzrZzAieCgGSbpKOQR:localhost:8800th&\:A Q  !qxqNYKdtgvOQdhmgsj:localhost:8800th&\ 9@ Q  !quaZwrGnzbNWhwAOYB:localhost:8800th&\;? Q!qtelAHlSkrqEFmlCqS:localhost:8800th&\9> Q  !qjijQBfMwsCPTVgKPm:localhost:8800th&\9= Q  !qSUSLLWjDxcGibUZdT:localhost:8800th&\9< Q  !qInWQPtNQfBFoVzUtP:localhost:8800th&\ |pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8,  th th th th th th th th th th th th th th th th th th~ th} th| th{ thz thy thx thw thv thu tht ths thr thq thp tho thn thm thl thk thj thi thh thg thf the thd thc thb tha th` th_ th^ th] th\ th[ thZ thY thX thW thV thU thT thS thR thQ thP thO thN thM thL thK thJ thI thH thG thF thE thD thC thB thA th@ th? th> th= th< th; th: th9 th8 th7 th6 th5 th4 th3 th2 th1 th0 th/ th. th- th, th+ th* th) th( th' th& th% th$ th# th" th! th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th ?zsDZ, q B  U X& *   j o; @    P U! '   e n6 @ z.Q!zuCqeooOnfWkYrQdxA:localhost:8800th.Q!zsXPhIPzeXXLvuazzQ:localhost:8800th.Q!zoTQAhGwmDDUECKtbL:localhost:8800th.Q!zhCsYcaweVFJLLNwBz:localhost:8800th.Q!zScKnCZCFPIIodAiQj:localhost:8800th.Q!zNCItZNbpkZKuufRhC:localhost:8800th.Q!zNBpypJDRMlBdOcLlW:localhost:8800th.Q!zHBgbzUZHshNGZvIBS:localhost:8800th.Q!zFdNewlKnUiMBxnYrN:localhost:8800th.Q!yfizglmCXdcqCgDrTr:localhost:8800th.Q!ybXveQoxPVhjpKHAkG:localhost:8800th.Q!yWhIsLsgNVGcnELrDS:localhost:8800th.Q!yTQmLDAxZscWKLMSWh:localhost:8800th.Q!yNfCaBMPezurwkJRAX:localhost:8800th.Q!yLccBXjjEasExpsXlt:localhost:8800th.Q!yAzXcNLHMuqFOcOexj:localhost:8800th.Q!yAfsSyqpJWFnkXQFJL:localhost:8800th.Q!xwoIOPTGmJIlTXakxC:localhost:8800th~.Q!xvblqEscwOtCqJntfF:localhost:8800th}.Q!xhbvqJDfxMSsZPqvld:localhost:8800th|.Q!xcdNyJNFEdaBGFycsB:localhost:8800th{.Q!wvnfKBSrUlfNmYoeil:localhost:8800thz.Q!zuCqeooOnfWkYrQdxA:localhost:8800m .Q!zsXPhIPzeXXLvuazzQ:localhost:8800m.Q!zqQJfFCRlSEDPKlQPy:localhost:8800m`.Q!zoTQAhGwmDDUECKtbL:localhost:8800m-Q!zhCsYcaweVFJLLNwBz:localhost:8800m.Q!zScKnCZCFPIIodAiQj:localhost:8800m,Q !zNCItZNbpkZKuufRhC:localhost:8800m-Q!zNBpypJDRMlBdOcLlW:localhost:8800my.Q!zHBgbzUZHshNGZvIBS:localhost:8800mB-Q!zFdNewlKnUiMBxnYrN:localhost:8800m[.Q!yfizglmCXdcqCgDrTr:localhost:8800m.Q!ybXveQoxPVhjpKHAkG:localhost:8800mW.Q!yWhIsLsgNVGcnELrDS:localhost:8800m.Q!yTQmLDAxZscWKLMSWh:localhost:8800m .Q!yNfCaBMPezurwkJRAX:localhost:8800m.Q!yLccBXjjEasExpsXlt:localhost:8800m.Q!yAzXcNLHMuqFOcOexj:localhost:8800m .Q!yAfsSyqpJWFnkXQFJL:localhost:8800mi-Q!xwoIOPTGmJIlTXakxC:localhost:8800m .Q!xvblqEscwOtCqJntfF:localhost:8800m-Q!xhbvqJDfxMSsZPqvld:localhost:8800m!.Q!xcdNyJNFEdaBGFycsB:localhost:8800mN.Q!xXYMxashIZAUOTuGAJ:localhost:8800m-Q!wvnfKBSrUlfNmYoeil:localhost:8800m.Q!wsvXTJXouVkEZcCFsD:localhost:8800thy.Q!wsvXTJXouVkEZcCFsD:localhost:8800m.Q!wnriPzXkIMmdTNoJKU:localhost:8800thx-Q!wnriPzXkIMmdTNoJKU:localhost:8800m.Q!whuymJoLfUdkFdxoyE:localhost:8800thw.Q!whuymJoLfUdkFdxoyE:localhost:8800m .Q!wUuodvgsmAJqKJUBCQ:localhost:8800thv-Q!wUuodvgsmAJqKJUBCQ:localhost:8800m^.Q!wLitJYvgvNJzanSIvO:localhost:8800thu.Q!wLitJYvgvNJzanSIvO:localhost:8800m.Q!wIhMbfQzYbJobPdwyi:localhost:8800tht-Q!wIhMbfQzYbJobPdwyi:localhost:8800m/.Q!wCsDjKBtuUbrmZgjsB:localhost:8800ths.Q!wCsDjKBtuUbrmZgjsB:localhost:8800m.Q!wBkUBAjOznOyxrLchl:localhost:8800thr.Q!wBkUBAjOznOyxrLchl:localhost:8800m7.Q!wBBQYEPjQGnoAzDpEu:localhost:8800thq  ~LV c & p 4 ~; Q!zuCqeooOnfWkYrQdxA:localhost:8800th&\ 9 Q  !zsXPhIPzeXXLvuazzQ:localhost:8800th&\9 Q  !zoTQAhGwmDDUECKtbL:localhost:8800th&\9 Q  !zhCsYcaweVFJLLNwBz:localhost:8800th&\9 Q  !zScKnCZCFPIIodAiQj:localhost:8800th&\9 Q  !zNCItZNbpkZKuufRhC:localhost:8800th&\; Q!zNBpypJDRMlBdOcLlW:localhost:8800th&\: Q !zHBgbzUZHshNGZvIBS:localhost:8800th&\9 Q  !zFdNewlKnUiMBxnYrN:localhost:8800th&\: Q !yfizglmCXdcqCgDrTr:localhost:8800th&\9 Q  !ybXveQoxPVhjpKHAkG:localhost:8800th&\; Q!yWhIsLsgNVGcnELrDS:localhost:8800th&\; Q!yTQmLDAxZscWKLMSWh:localhost:8800th&\; Q!yNfCaBMPezurwkJRAX:localhost:8800th&\9 Q  !yLccBXjjEasExpsXlt:localhost:8800th&\; Q!yAzXcNLHMuqFOcOexj:localhost:8800th&\9 Q  !yAfsSyqpJWFnkXQFJL:localhost:8800th&\9~ Q  !xwoIOPTGmJIlTXakxC:localhost:8800th&\9} Q  !xvblqEscwOtCqJntfF:localhost:8800th&\! Vc|P$tH l @  e 9 ^ 2  Vb'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 a'Q!yLccBXjjEasExpsXlt:localhost:8800,`'Q!wBkUBAjOznOyxrLchl:localhost:8800_'Q!vJQYmOxOBLwFKzYkNj:localhost:8800^'Q!taANXnGBZntAreRurn:localhost:8800 ]'Q!rpVYLTJGcFNdGzFzXj:localhost:8800\'Q!qInWQPtNQfBFoVzUtP:localhost:8800 K['Q!nvclDopiBLEOKBIheH:localhost:8800Z&Q!loalEsWaTYwrVUNJLr:localhost:8800$Y'Q!kjjUsMowsioSQRIJeg:localhost:8800 X'Q!ijOiudvuzOLNmgNKfG:localhost:8800 W'Q!hGsPmWXboxZZtOlsxY:localhost:8800 V'Q!eySSVuCclRpBDgwKIU:localhost:8800U'Q!eGEEtFXUXuZDImkeql:localhost:8800 BT'Q!cRbfhxZdPstEsPGPAu:localhost:8800 S'Q!bNSXSTadOMhIrYpMzH:localhost:8800R&Q!aWJOsiuJONOvjKWEjO:localhost:8800`Q'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 NP'Q!XMNRkfscQXRjgYrOSd:localhost:8800O'Q!VhUAklonNaWKRnLkcr:localhost:8800 N'Q!TleKOyAElrpgyyrAQA:localhost:8800M'Q!SnROoiDBapNNtMmKnT:localhost:8800 aL'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 =K'Q!PHkVrXAyfGkFtzSagu:localhost:8800 J'Q!NrxQuziwSWzsHuXIlG:localhost:8800I'Q!NFWKQvZkIwvecnREOC:localhost:8800H'Q!KetCYFxrTxawNOGnOf:localhost:8800 G'Q!IlGJpjzrvvAFuwTAgo:localhost:8800F'Q!HbYxdEuVIeLKHwqJEh:localhost:8800E'Q!GGXyLHdVXqhQjPRvac:localhost:8800YD'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 C'Q!CgVBWWcRJoHEcwoLcq:localhost:8800B'Q!BckZfhQgrcyiMhEAAJ:localhost:8800 jkR9 x`H0 x P ( ` 8  p H X 0  h @ xP(`8pH X0 mE}U-e=uM%'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 9'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 8'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 7'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 6'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 5'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 4'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800]&Q!BDASLhdcKfNwxCTCSg:localhost:8800\&Q!BDASLhdcKfNwxCTCSg:localhost:8800[&Q!BDASLhdcKfNwxCTCSg:localhost:8800Z&Q!BDASLhdcKfNwxCTCSg:localhost:8800Y'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AjjrNwXmPTCruHxaJq:localhost:8800N'Q!AjjrNwXmPTCruHxaJq:localhost:8800M'Q!AjjrNwXmPTCruHxaJq:localhost:8800L'Q!AjjrNwXmPTCruHxaJq:localhost:8800K'Q!AjjrNwXmPTCruHxaJq:localhost:8800J'Q!AjjrNwXmPTCruHxaJq:localhost:8800I'Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AjjrNwXmPTCruHxaJq:localhost:8800G'Q!AjjrNwXmPTCruHxaJq:localhost:8800F'Q!AjjrNwXmPTCruHxaJq:localhost:8800E'Q!AjjrNwXmPTCruHxaJq:localhost:8800D'Q!AjjrNwXmPTCruHxaJq:localhost:8800C'Q!AYFqrmxwClFQlcTTYq:localhost:8800 2'Q!AYFqrmxwClFQlcTTYq:localhost:8800 1'Q!AYFqrmxwClFQlcTTYq:localhost:8800 0'Q!AYFqrmxwClFQlcTTYq:localhost:8800 /'Q!AYFqrmxwClFQlcTTYq:localhost:8800 .'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 1!9:localhost:42455 b1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 V3!13:localhost:42455 q3!13:localhost:42455 p3!13:localhost:42455 o3!12:localhost:42455 n3!12:localhost:42455 m3!11:localhost:42455 e3!11:localhost:42455 d3!10:localhost:42455 c1!0:localhost:42455 & a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800{'Q!CNFopUEQTFbzjmLvii:localhost:8800z'Q!CNFopUEQTFbzjmLvii:localhost:8800y'Q!CNFopUEQTFbzjmLvii:localhost:8800x'Q!CNFopUEQTFbzjmLvii:localhost:8800w'Q!CNFopUEQTFbzjmLvii:localhost:8800u'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CGckPHdSYcIocFvRAq:localhost:8800S'Q!CGckPHdSYcIocFvRAq:localhost:8800R'Q!CGckPHdSYcIocFvRAq:localhost:8800Q'Q!CGckPHdSYcIocFvRAq:localhost:8800P'Q!CGckPHdSYcIocFvRAq:localhost:8800O'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 ~'Q!BrssELMbasSzTFpIXm:localhost:8800.'Q!BrssELMbasSzTFpIXm:localhost:8800-'Q!BrssELMbasSzTFpIXm:localhost:8800,'Q!BrssELMbasSzTFpIXm:localhost:8800+'Q!BrssELMbasSzTFpIXm:localhost:8800*'Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BrssELMbasSzTFpIXm:localhost:8800('Q!BrssELMbasSzTFpIXm:localhost:8800''Q!BrssELMbasSzTFpIXm:localhost:8800&'Q!BpTqIemsWFZIqTcgJO:localhost:8800j'Q!BpTqIemsWFZIqTcgJO:localhost:8800i'Q!BpTqIemsWFZIqTcgJO:localhost:8800h'Q!BpTqIemsWFZIqTcgJO:localhost:8800g'Q!BpTqIemsWFZIqTcgJO:localhost:8800f'Q!BpTqIemsWFZIqTcgJO:localhost:8800e'Q!BpTqIemsWFZIqTcgJO:localhost:8800d'Q!BpTqIemsWFZIqTcgJO:localhost:8800c'Q!BoyzlWNkRPncpDjBDg:localhost:8800N'Q!BoyzlWNkRPncpDjBDg:localhost:8800M'Q!BoyzlWNkRPncpDjBDg:localhost:8800L'Q!BoyzlWNkRPncpDjBDg:localhost:8800K'Q!BoyzlWNkRPncpDjBDg:localhost:8800J'Q!BkzROHxDAfKIzYpmPV:localhost:8800B'Q!BkzROHxDAfKIzYpmPV:localhost:8800A'Q!BkzROHxDAfKIzYpmPV:localhost:8800@'Q!BkzROHxDAfKIzYpmPV:localhost:8800?'Q!BkzROHxDAfKIzYpmPV:localhost:8800>'Q!BkzROHxDAfKIzYpmPV:localhost:8800='Q!BkzROHxDAfKIzYpmPV:localhost:8800<'Q!BkzROHxDAfKIzYpmPV:localhost:8800;'Q!BkzROHxDAfKIzYpmPV:localhost:8800:'Q!BkzROHxDAfKIzYpmPV:localhost:88009'Q!BkzROHxDAfKIzYpmPV:localhost:88008'Q!BkzROHxDAfKIzYpmPV:localhost:88007'Q!BfEFIDBthhkweqfhir:localhost:8800l'Q!BfEFIDBthhkweqfhir:localhost:8800i'Q!BfEFIDBthhkweqfhir:localhost:8800h'Q!BfEFIDBthhkweqfhir:localhost:8800f'Q!BfEFIDBthhkweqfhir:localhost:8800d'Q!BfEFIDBthhkweqfhir:localhost:8800b'Q!BfEFIDBthhkweqfhir:localhost:8800`'Q!BfEFIDBthhkweqfhir:localhost:8800^'Q!BfEFIDBthhkweqfhir:localhost:8800\'Q!BfEFIDBthhkweqfhir:localhost:8800['Q!BfEFIDBthhkweqfhir:localhost:8800Z'Q!BfEFIDBthhkweqfhir:localhost:8800Y'Q!BfEFIDBthhkweqfhir:localhost:8800X'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800 'Q!EfJcWhdjNARbuHYrqU:localhost:8800 'Q!EfJcWhdjNARbuHYrqU:localhost:8800 'Q!EWkoFeckhXlNyjuIEB:localhost:8800"'Q!EWkoFeckhXlNyjuIEB:localhost:8800!'Q!EWkoFeckhXlNyjuIEB:localhost:8800 'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800e'Q!EMhFCPhwmnWVnjtXXM:localhost:8800d'Q!EMhFCPhwmnWVnjtXXM:localhost:8800c'Q!EMhFCPhwmnWVnjtXXM:localhost:8800b'Q!EMhFCPhwmnWVnjtXXM:localhost:8800a'Q!EMhFCPhwmnWVnjtXXM:localhost:8800`'Q!EMhFCPhwmnWVnjtXXM:localhost:8800_'Q!EMhFCPhwmnWVnjtXXM:localhost:8800^'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800 f'Q!DuqHkpTfWCUblSrxQj:localhost:8800 e'Q!DuqHkpTfWCUblSrxQj:localhost:8800 d'Q!DuqHkpTfWCUblSrxQj:localhost:8800 c'Q!DuqHkpTfWCUblSrxQj:localhost:8800 b'Q!DuqHkpTfWCUblSrxQj:localhost:8800 a'Q!DuqHkpTfWCUblSrxQj:localhost:8800 `'Q!DuqHkpTfWCUblSrxQj:localhost:8800 _'Q!DqxFmsXPclgGqpSwdy:localhost:8800\'Q!DqxFmsXPclgGqpSwdy:localhost:8800['Q!DqxFmsXPclgGqpSwdy:localhost:8800Z'Q!DqxFmsXPclgGqpSwdy:localhost:8800Y'Q!DqxFmsXPclgGqpSwdy:localhost:8800X'Q!DqxFmsXPclgGqpSwdy:localhost:8800W'Q!DqxFmsXPclgGqpSwdy:localhost:8800V'Q!DqxFmsXPclgGqpSwdy:localhost:8800U'Q!DqxFmsXPclgGqpSwdy:localhost:8800T'Q!DoiZErAdypBUMZKaeJ:localhost:88006'Q!DoiZErAdypBUMZKaeJ:localhost:88005'Q!DoiZErAdypBUMZKaeJ:localhost:88004'Q!DoiZErAdypBUMZKaeJ:localhost:88003'Q!DoiZErAdypBUMZKaeJ:localhost:88002'Q!DoiZErAdypBUMZKaeJ:localhost:88001'Q!DoiZErAdypBUMZKaeJ:localhost:88000'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 P'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 O'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 M'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 L'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 K'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 J'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 I'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 H'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 G'Q!CkNvQnbApPIcuKygDk:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800~'Q!CkNvQnbApPIcuKygDk:localhost:8800}'Q!CkNvQnbApPIcuKygDk:localhost:8800|'Q!CkNvQnbApPIcuKygDk:localhost:8800{'Q!CkNvQnbApPIcuKygDk:localhost:8800z'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!GGXyLHdVXqhQjPRvac:localhost:8800W'Q!GGXyLHdVXqhQjPRvac:localhost:8800V'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800 F'Q!FZOLkaLbBpaibrbHZx:localhost:8800 E'Q!FZOLkaLbBpaibrbHZx:localhost:8800 D'Q!FZOLkaLbBpaibrbHZx:localhost:8800 C'Q!FZOLkaLbBpaibrbHZx:localhost:8800 B'Q!FPcQcheNebvdFvmOnr:localhost:8800['Q!FPcQcheNebvdFvmOnr:localhost:8800Z'Q!FPcQcheNebvdFvmOnr:localhost:8800Y'Q!FPcQcheNebvdFvmOnr:localhost:8800X'Q!FPcQcheNebvdFvmOnr:localhost:8800W'Q!FPcQcheNebvdFvmOnr:localhost:8800V'Q!FPcQcheNebvdFvmOnr:localhost:8800U'Q!FPcQcheNebvdFvmOnr:localhost:8800T'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800~'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800J'Q!EieRtaCFZJJCIOkRPp:localhost:8800I'Q!EieRtaCFZJJCIOkRPp:localhost:8800H'Q!EieRtaCFZJJCIOkRPp:localhost:8800G'Q!EieRtaCFZJJCIOkRPp:localhost:8800F'Q!EieRtaCFZJJCIOkRPp:localhost:8800E'Q!EieRtaCFZJJCIOkRPp:localhost:8800D'Q!EieRtaCFZJJCIOkRPp:localhost:8800C'Q!EieRtaCFZJJCIOkRPp:localhost:8800B'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!GGXyLHdVXqhQjPRvac:localhost:8800X a`8pH X 0  h @  x P ( d =  u M %]5 mE}U-e=uM%]5 mE}U-'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800z'Q!HXfrGcvJCbRItyQLVE:localhost:8800y'Q!HXfrGcvJCbRItyQLVE:localhost:8800x'Q!HXfrGcvJCbRItyQLVE:localhost:8800w'Q!HXfrGcvJCbRItyQLVE:localhost:8800v'Q!HXfrGcvJCbRItyQLVE:localhost:8800u'Q!HXfrGcvJCbRItyQLVE:localhost:8800t'Q!HXfrGcvJCbRItyQLVE:localhost:8800s'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800''Q!HOPyhZPcKkrvSmDIvX:localhost:8800&'Q!HOPyhZPcKkrvSmDIvX:localhost:8800%'Q!HOPyhZPcKkrvSmDIvX:localhost:8800$'Q!HOPyhZPcKkrvSmDIvX:localhost:8800#'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 &Q!GixhPUMvtKSWoKRgvw:localhost:8800/&Q!GixhPUMvtKSWoKRgvw:localhost:8800.&Q!GixhPUMvtKSWoKRgvw:localhost:8800-&Q!GixhPUMvtKSWoKRgvw:localhost:8800,&Q!GixhPUMvtKSWoKRgvw:localhost:8800+'Q!GiSxJsKZhQVHBkrVPn:localhost:8800['Q!GiSxJsKZhQVHBkrVPn:localhost:8800Z'Q!GiSxJsKZhQVHBkrVPn:localhost:8800Y'Q!GiSxJsKZhQVHBkrVPn:localhost:8800X'Q!GiSxJsKZhQVHBkrVPn:localhost:8800W'Q!GiSxJsKZhQVHBkrVPn:localhost:8800V'Q!GiSxJsKZhQVHBkrVPn:localhost:8800U'Q!GiSxJsKZhQVHBkrVPn:localhost:8800T'Q!GiSxJsKZhQVHBkrVPn:localhost:8800S'Q!GiSxJsKZhQVHBkrVPn:localhost:8800R'Q!GiSxJsKZhQVHBkrVPn:localhost:8800Q'Q!GiSxJsKZhQVHBkrVPn:localhost:8800P'Q!GiSxJsKZhQVHBkrVPn:localhost:8800O'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800]'Q!GGXyLHdVXqhQjPRvac:localhost:8800\'Q!GGXyLHdVXqhQjPRvac:localhost:8800['Q!GGXyLHdVXqhQjPRvac:localhost:8800Z'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!IfYYyzLHSOeyJBxBfn:localhost:8800T'Q!IfYYyzLHSOeyJBxBfn:localhost:8800S'Q!IfYYyzLHSOeyJBxBfn:localhost:8800R'Q!IfYYyzLHSOeyJBxBfn:localhost:8800Q'Q!IfYYyzLHSOeyJBxBfn:localhost:8800P'Q!IfYYyzLHSOeyJBxBfn:localhost:8800O'Q!IfYYyzLHSOeyJBxBfn:localhost:8800N'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800r'Q!HusOrLtWZTLbmQZxmm:localhost:8800q'Q!HusOrLtWZTLbmQZxmm:localhost:8800p'Q!HusOrLtWZTLbmQZxmm:localhost:8800o'Q!HusOrLtWZTLbmQZxmm:localhost:8800n'Q!HusOrLtWZTLbmQZxmm:localhost:8800m'Q!HusOrLtWZTLbmQZxmm:localhost:8800l'Q!HusOrLtWZTLbmQZxmm:localhost:8800k'Q!HmkcAMkMjWRhTDJMsy:localhost:8800A'Q!HmkcAMkMjWRhTDJMsy:localhost:8800@'Q!HmkcAMkMjWRhTDJMsy:localhost:8800?'Q!HmkcAMkMjWRhTDJMsy:localhost:8800>'Q!HmkcAMkMjWRhTDJMsy:localhost:8800='Q!HmkcAMkMjWRhTDJMsy:localhost:8800<'Q!HmkcAMkMjWRhTDJMsy:localhost:8800;'Q!HmkcAMkMjWRhTDJMsy:localhost:8800:'Q!HmkcAMkMjWRhTDJMsy:localhost:88009'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800U a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 %'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 $'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 #'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 "'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 !'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800k'Q!KIHYKMzkRDrJwiywwz:localhost:8800j'Q!KIHYKMzkRDrJwiywwz:localhost:8800i'Q!KIHYKMzkRDrJwiywwz:localhost:8800h'Q!KIHYKMzkRDrJwiywwz:localhost:8800g'Q!KIHYKMzkRDrJwiywwz:localhost:8800f'Q!JusxqeECtidaPlWqhp:localhost:8800p'Q!JusxqeECtidaPlWqhp:localhost:8800o'Q!JusxqeECtidaPlWqhp:localhost:8800n'Q!JusxqeECtidaPlWqhp:localhost:8800m'Q!JusxqeECtidaPlWqhp:localhost:8800l'Q!JusxqeECtidaPlWqhp:localhost:8800k'Q!JusxqeECtidaPlWqhp:localhost:8800j'Q!JusxqeECtidaPlWqhp:localhost:8800i'Q!JusxqeECtidaPlWqhp:localhost:8800h'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JZouHBRxCRbcxYJnbn:localhost:8800,'Q!JZouHBRxCRbcxYJnbn:localhost:8800+'Q!JZouHBRxCRbcxYJnbn:localhost:8800*'Q!JZouHBRxCRbcxYJnbn:localhost:8800)'Q!JZouHBRxCRbcxYJnbn:localhost:8800('Q!JYLMokjOhZZlmbZvTf:localhost:88005'Q!JYLMokjOhZZlmbZvTf:localhost:88004'Q!JYLMokjOhZZlmbZvTf:localhost:88003'Q!JYLMokjOhZZlmbZvTf:localhost:88002'Q!JYLMokjOhZZlmbZvTf:localhost:88001'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800 a`8pH X 0  h @  x P ( b ;  v N &^6nF~V.f>vN&^6nF~V.'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MWCLSWWGdWcSivNVLI:localhost:8800z'Q!MWCLSWWGdWcSivNVLI:localhost:8800y'Q!MWCLSWWGdWcSivNVLI:localhost:8800x'Q!MWCLSWWGdWcSivNVLI:localhost:8800w'Q!MWCLSWWGdWcSivNVLI:localhost:8800v'Q!MWCLSWWGdWcSivNVLI:localhost:8800u'Q!MWCLSWWGdWcSivNVLI:localhost:8800t'Q!MWCLSWWGdWcSivNVLI:localhost:8800s'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 &Q!LaLcEGFLpjdlYlYKGC:localhost:8800 &Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 d'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 c'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 b'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 a'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 `'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 _'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 ^'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 ]'Q!KxhGcTbEWmtgGNpdox:localhost:8800I'Q!KxhGcTbEWmtgGNpdox:localhost:8800H'Q!KxhGcTbEWmtgGNpdox:localhost:8800G'Q!KxhGcTbEWmtgGNpdox:localhost:8800F'Q!KxhGcTbEWmtgGNpdox:localhost:8800E'Q!KxhGcTbEWmtgGNpdox:localhost:8800D'Q!KxhGcTbEWmtgGNpdox:localhost:8800C'Q!KxhGcTbEWmtgGNpdox:localhost:8800B'Q!KmuRTfGFgJdgIDAgIW:localhost:88007'Q!KmuRTfGFgJdgIDAgIW:localhost:88000'Q!KmuRTfGFgJdgIDAgIW:localhost:8800/'Q!KmuRTfGFgJdgIDAgIW:localhost:8800.'Q!KmuRTfGFgJdgIDAgIW:localhost:8800-'Q!KmuRTfGFgJdgIDAgIW:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800+'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!NFWKQvZkIwvecnREOC:localhost:8800 a`8pH X 0  h @  x P (  e >  v N &^6nF~V.f>vN&^6nF[3 'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800~'Q!NrxQuziwSWzsHuXIlG:localhost:8800}'Q!NrxQuziwSWzsHuXIlG:localhost:8800|&Q!NhWgOTYzEPRwAxRQvS:localhost:8800l&Q!NhWgOTYzEPRwAxRQvS:localhost:8800k&Q!NhWgOTYzEPRwAxRQvS:localhost:8800j&Q!NhWgOTYzEPRwAxRQvS:localhost:8800i&Q!NhWgOTYzEPRwAxRQvS:localhost:8800h'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800+'Q!NeYaCeYNFATCqlrlGT:localhost:8800*'Q!NeYaCeYNFATCqlrlGT:localhost:8800)'Q!NeYaCeYNFATCqlrlGT:localhost:8800('Q!NeYaCeYNFATCqlrlGT:localhost:8800''Q!NcJYmIbgjsaKJOzBcs:localhost:8800 :'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 3'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 +'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 $'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 #'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 "'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 !'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NboFFVLpJHTeuUKCjM:localhost:8800y'Q!NboFFVLpJHTeuUKCjM:localhost:8800x'Q!NboFFVLpJHTeuUKCjM:localhost:8800w'Q!NboFFVLpJHTeuUKCjM:localhost:8800v'Q!NboFFVLpJHTeuUKCjM:localhost:8800u'Q!NboFFVLpJHTeuUKCjM:localhost:8800t'Q!NboFFVLpJHTeuUKCjM:localhost:8800s'Q!NboFFVLpJHTeuUKCjM:localhost:8800r'Q!NanhNmCnVVpmZRJrTF:localhost:8800 ^'Q!NanhNmCnVVpmZRJrTF:localhost:8800 ]'Q!NanhNmCnVVpmZRJrTF:localhost:8800 \'Q!NanhNmCnVVpmZRJrTF:localhost:8800 ['Q!NanhNmCnVVpmZRJrTF:localhost:8800 Z'Q!NanhNmCnVVpmZRJrTF:localhost:8800 Y'Q!NanhNmCnVVpmZRJrTF:localhost:8800 X'Q!NanhNmCnVVpmZRJrTF:localhost:8800 W'Q!NajQnqYmGyTjxhFYar:localhost:8829W&Q!NZHpBquHDfJAjiawGk:localhost:8800C&Q!NZHpBquHDfJAjiawGk:localhost:8800B&Q!NZHpBquHDfJAjiawGk:localhost:8800A&Q!NZHpBquHDfJAjiawGk:localhost:8800@&Q!NZHpBquHDfJAjiawGk:localhost:8800?&Q!NZHpBquHDfJAjiawGk:localhost:8800>'Q!NQgavrmiCPUVaVjssy:localhost:8800A'Q!NQgavrmiCPUVaVjssy:localhost:8800@'Q!NQgavrmiCPUVaVjssy:localhost:8800?'Q!NQgavrmiCPUVaVjssy:localhost:8800>'Q!NQgavrmiCPUVaVjssy:localhost:8800='Q!NQgavrmiCPUVaVjssy:localhost:8800<'Q!NQgavrmiCPUVaVjssy:localhost:8800;'Q!NQgavrmiCPUVaVjssy:localhost:8800:'Q!NQgavrmiCPUVaVjssy:localhost:88009'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800F'Q!NNiyzThHMivrxhojfp:localhost:8800?'Q!NNiyzThHMivrxhojfp:localhost:8800>'Q!NNiyzThHMivrxhojfp:localhost:8800='Q!NNiyzThHMivrxhojfp:localhost:8800<'Q!NNiyzThHMivrxhojfp:localhost:8800;'Q!NNiyzThHMivrxhojfp:localhost:8800:'Q!NNiyzThHMivrxhojfp:localhost:88009'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NrxQuziwSWzsHuXIlG:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PEcOacvKaBKpXjytEF:localhost:8800_'Q!PEcOacvKaBKpXjytEF:localhost:8800^'Q!PEcOacvKaBKpXjytEF:localhost:8800]'Q!PEcOacvKaBKpXjytEF:localhost:8800\'Q!PEcOacvKaBKpXjytEF:localhost:8800['Q!PEcOacvKaBKpXjytEF:localhost:8800Z'Q!PEcOacvKaBKpXjytEF:localhost:8800Y'Q!PEcOacvKaBKpXjytEF:localhost:8800X'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 V'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 U'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 T'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 S'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 R'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 Q'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 P'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 O'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800~'Q!OqPpVlCwmKdAUlwrXI:localhost:8800}'Q!OqPpVlCwmKdAUlwrXI:localhost:8800|'Q!OqPpVlCwmKdAUlwrXI:localhost:8800{'Q!OqPpVlCwmKdAUlwrXI:localhost:8800z'Q!OqPpVlCwmKdAUlwrXI:localhost:8800y'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OMkiVTuuOEeiFAXtUY:localhost:88008'Q!OMkiVTuuOEeiFAXtUY:localhost:88007'Q!OMkiVTuuOEeiFAXtUY:localhost:88006'Q!OMkiVTuuOEeiFAXtUY:localhost:88005'Q!OMkiVTuuOEeiFAXtUY:localhost:88004'Q!OMkiVTuuOEeiFAXtUY:localhost:88003'Q!OMkiVTuuOEeiFAXtUY:localhost:88002'Q!OMkiVTuuOEeiFAXtUY:localhost:88001'Q!OMkiVTuuOEeiFAXtUY:localhost:88000'Q!OMkiVTuuOEeiFAXtUY:localhost:8800/'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 ~'Q!OCEHAjcOXWNyWIESIS:localhost:8800 %'Q!OCEHAjcOXWNyWIESIS:localhost:8800 $'Q!OCEHAjcOXWNyWIESIS:localhost:8800 #'Q!OCEHAjcOXWNyWIESIS:localhost:8800 "'Q!OCEHAjcOXWNyWIESIS:localhost:8800 !'Q!OCEHAjcOXWNyWIESIS:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800'Q!OBWkjfrDCNgYFfblia:localhost:8800'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH!^6nF~V.'Q!QnmLrBAxeItdHsaxWf:localhost:8800 l'Q!QnmLrBAxeItdHsaxWf:localhost:8800 k'Q!QnmLrBAxeItdHsaxWf:localhost:8800 j'Q!QnmLrBAxeItdHsaxWf:localhost:8800 i'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 m'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 l'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 k'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 j'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 i'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 h'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 g'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:88008'Q!QFiJrWFFeTAAAUCjCE:localhost:88006'Q!QFiJrWFFeTAAAUCjCE:localhost:88005'Q!QFiJrWFFeTAAAUCjCE:localhost:88004'Q!QFiJrWFFeTAAAUCjCE:localhost:88003'Q!QFiJrWFFeTAAAUCjCE:localhost:88002'Q!QFiJrWFFeTAAAUCjCE:localhost:88001'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ?'Q!PgNDjhhIBAXKryuGKy:localhost:8800 >'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ='Q!PgNDjhhIBAXKryuGKy:localhost:8800 <'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ;'Q!PgNDjhhIBAXKryuGKy:localhost:8800 :'Q!PgNDjhhIBAXKryuGKy:localhost:8800 9'Q!PgNDjhhIBAXKryuGKy:localhost:8800 8'Q!PgNDjhhIBAXKryuGKy:localhost:8800 7'Q!PgNDjhhIBAXKryuGKy:localhost:8800 6'Q!PgNDjhhIBAXKryuGKy:localhost:8800 5'Q!PcvmCDeVUSyJbXpTig:localhost:8800('Q!PcvmCDeVUSyJbXpTig:localhost:8800''Q!PcvmCDeVUSyJbXpTig:localhost:8800&'Q!PcvmCDeVUSyJbXpTig:localhost:8800%'Q!PcvmCDeVUSyJbXpTig:localhost:8800$'Q!PcvmCDeVUSyJbXpTig:localhost:8800#'Q!PcvmCDeVUSyJbXpTig:localhost:8800"'Q!PcvmCDeVUSyJbXpTig:localhost:8800!'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 z'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 x'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 v'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 t'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 r'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!QnmLrBAxeItdHsaxWf:localhost:8800 m a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!SnROoiDBapNNtMmKnT:localhost:8800 _'Q!SnROoiDBapNNtMmKnT:localhost:8800 ^'Q!SnROoiDBapNNtMmKnT:localhost:8800 ]'Q!SnROoiDBapNNtMmKnT:localhost:8800 \'Q!SnROoiDBapNNtMmKnT:localhost:8800 ['Q!SnROoiDBapNNtMmKnT:localhost:8800 Z'Q!SnROoiDBapNNtMmKnT:localhost:8800 Y'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SBEprlZiuliFNSfNmz:localhost:8800Q'Q!SBEprlZiuliFNSfNmz:localhost:8800P'Q!SBEprlZiuliFNSfNmz:localhost:8800O'Q!SBEprlZiuliFNSfNmz:localhost:8800N'Q!SBEprlZiuliFNSfNmz:localhost:8800M'Q!SBEprlZiuliFNSfNmz:localhost:8800L'Q!SBEprlZiuliFNSfNmz:localhost:8800K'Q!SBEprlZiuliFNSfNmz:localhost:8800J'Q!RmwbYvIIQyPlHlClty:localhost:8800)'Q!RmwbYvIIQyPlHlClty:localhost:8800('Q!RmwbYvIIQyPlHlClty:localhost:8800''Q!RmwbYvIIQyPlHlClty:localhost:8800&'Q!RmwbYvIIQyPlHlClty:localhost:8800%'Q!RmwbYvIIQyPlHlClty:localhost:8800$'Q!RmdhCjvouVLmyIHjaM:localhost:8800%'Q!RmdhCjvouVLmyIHjaM:localhost:8800$'Q!RmdhCjvouVLmyIHjaM:localhost:8800#'Q!RmdhCjvouVLmyIHjaM:localhost:8800"'Q!RmdhCjvouVLmyIHjaM:localhost:8800!'Q!RmdhCjvouVLmyIHjaM:localhost:8800 'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800e'Q!RSLvuCuAqKQQrKCxNq:localhost:8800d'Q!RSLvuCuAqKQQrKCxNq:localhost:8800c'Q!RSLvuCuAqKQQrKCxNq:localhost:8800b'Q!RSLvuCuAqKQQrKCxNq:localhost:8800a'Q!RSLvuCuAqKQQrKCxNq:localhost:8800`'Q!RSLvuCuAqKQQrKCxNq:localhost:8800_'Q!RSLvuCuAqKQQrKCxNq:localhost:8800^'Q!RSLvuCuAqKQQrKCxNq:localhost:8800]'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800G'Q!ROoilpDjLJfjKfSPIi:localhost:8800F'Q!ROoilpDjLJfjKfSPIi:localhost:8800E'Q!ROoilpDjLJfjKfSPIi:localhost:8800D'Q!ROoilpDjLJfjKfSPIi:localhost:8800C'Q!ROoilpDjLJfjKfSPIi:localhost:8800B'Q!ROoilpDjLJfjKfSPIi:localhost:8800A'Q!ROoilpDjLJfjKfSPIi:localhost:8800@'Q!ROoilpDjLJfjKfSPIi:localhost:8800?'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800)'Q!QyLUggxrTnULUAOseq:localhost:8800"'Q!QyLUggxrTnULUAOseq:localhost:8800!'Q!QyLUggxrTnULUAOseq:localhost:8800 'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 A'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 @'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ?'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 >'Q!SnROoiDBapNNtMmKnT:localhost:8800 ` a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TeraguiGoZoeOGFzlI:localhost:8800P'Q!TeraguiGoZoeOGFzlI:localhost:8800O'Q!TeraguiGoZoeOGFzlI:localhost:8800N'Q!TeraguiGoZoeOGFzlI:localhost:8800M'Q!TeraguiGoZoeOGFzlI:localhost:8800L'Q!TeraguiGoZoeOGFzlI:localhost:8800K'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800'Q!TWETXUgfFZafDdbqLS:localhost:8800'Q!TWETXUgfFZafDdbqLS:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800#'Q!SvKwEALYoNreUvqAlp:localhost:8800"'Q!SvKwEALYoNreUvqAlp:localhost:8800!'Q!SvKwEALYoNreUvqAlp:localhost:8800 'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800 }'Q!SrwdtDytJDUBVZOueF:localhost:8800 |'Q!SrwdtDytJDUBVZOueF:localhost:8800 {'Q!SrwdtDytJDUBVZOueF:localhost:8800 y'Q!SrwdtDytJDUBVZOueF:localhost:8800 w'Q!SrwdtDytJDUBVZOueF:localhost:8800 u'Q!SrwdtDytJDUBVZOueF:localhost:8800 s'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!TleKOyAElrpgyyrAQA:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VUibrTIkcRbfrogbQV:localhost:8800 /'Q!VUibrTIkcRbfrogbQV:localhost:8800 .'Q!VUibrTIkcRbfrogbQV:localhost:8800 -'Q!VUibrTIkcRbfrogbQV:localhost:8800 ,'Q!VUibrTIkcRbfrogbQV:localhost:8800 +'Q!VUibrTIkcRbfrogbQV:localhost:8800 *'Q!VUibrTIkcRbfrogbQV:localhost:8800 )'Q!VUibrTIkcRbfrogbQV:localhost:8800 ('Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800 u'Q!UluPYLGXtInKDTjRzp:localhost:8800 t'Q!UluPYLGXtInKDTjRzp:localhost:8800 s'Q!UluPYLGXtInKDTjRzp:localhost:8800 r'Q!UluPYLGXtInKDTjRzp:localhost:8800 q'Q!UluPYLGXtInKDTjRzp:localhost:8800 p'Q!UluPYLGXtInKDTjRzp:localhost:8800 o'Q!UluPYLGXtInKDTjRzp:localhost:8800 n'Q!UaitDdkGDcwvRLJSvp:localhost:8800J'Q!UaitDdkGDcwvRLJSvp:localhost:8800I'Q!UaitDdkGDcwvRLJSvp:localhost:8800H'Q!UaitDdkGDcwvRLJSvp:localhost:8800G'Q!UaitDdkGDcwvRLJSvp:localhost:8800F'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!URpLZLuBfVcfHVTBGS:localhost:8800 \'Q!URpLZLuBfVcfHVTBGS:localhost:8800 ['Q!URpLZLuBfVcfHVTBGS:localhost:8800 Z'Q!URpLZLuBfVcfHVTBGS:localhost:8800 Y'Q!URpLZLuBfVcfHVTBGS:localhost:8800 X'Q!URpLZLuBfVcfHVTBGS:localhost:8800 W'Q!URpLZLuBfVcfHVTBGS:localhost:8800 V'Q!URpLZLuBfVcfHVTBGS:localhost:8800 T'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800 'Q!UMFUOnYRvwKwSPkYHB:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800*'Q!XIqmzIFbkHGQPIpywk:localhost:8800)'Q!XIqmzIFbkHGQPIpywk:localhost:8800('Q!XIqmzIFbkHGQPIpywk:localhost:8800''Q!XIqmzIFbkHGQPIpywk:localhost:8800&'Q!XIqmzIFbkHGQPIpywk:localhost:8800%'Q!XIqmzIFbkHGQPIpywk:localhost:8800$'Q!XIqmzIFbkHGQPIpywk:localhost:8800#'Q!XIqmzIFbkHGQPIpywk:localhost:8800"'Q!XIqmzIFbkHGQPIpywk:localhost:8800!'Q!XIqmzIFbkHGQPIpywk:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 ''Q!WpThtNEVhrUbUdCdMJ:localhost:8800 &'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 %'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 $'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 #'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 "'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 !'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800v'Q!WhqVaRReBxJXADAyYD:localhost:8800s'Q!WhqVaRReBxJXADAyYD:localhost:8800r'Q!WhqVaRReBxJXADAyYD:localhost:8800q'Q!WhqVaRReBxJXADAyYD:localhost:8800p'Q!WhqVaRReBxJXADAyYD:localhost:8800o'Q!WhqVaRReBxJXADAyYD:localhost:8800n'Q!WhqVaRReBxJXADAyYD:localhost:8800m'Q!WhLedNwPGGGTtqeqam:localhost:88006'Q!WhLedNwPGGGTtqeqam:localhost:88005'Q!WhLedNwPGGGTtqeqam:localhost:88004'Q!WhLedNwPGGGTtqeqam:localhost:88003'Q!WhLedNwPGGGTtqeqam:localhost:88002'Q!WhLedNwPGGGTtqeqam:localhost:88001'Q!WhLedNwPGGGTtqeqam:localhost:88000'Q!WhLedNwPGGGTtqeqam:localhost:8800/'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 i'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 h'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 g'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 f'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 e'Q!WYyiQAVvitxsLZKVCG:localhost:8800s'Q!WYyiQAVvitxsLZKVCG:localhost:8800r'Q!WYyiQAVvitxsLZKVCG:localhost:8800q'Q!WYyiQAVvitxsLZKVCG:localhost:8800p'Q!WYyiQAVvitxsLZKVCG:localhost:8800o'Q!WYyiQAVvitxsLZKVCG:localhost:8800n'Q!WYyiQAVvitxsLZKVCG:localhost:8800m'Q!WYyiQAVvitxsLZKVCG:localhost:8800l'Q!WWZVpyLeZfyfpWidLx:localhost:88006'Q!WWZVpyLeZfyfpWidLx:localhost:88005'Q!WWZVpyLeZfyfpWidLx:localhost:88004'Q!WWZVpyLeZfyfpWidLx:localhost:88003'Q!WWZVpyLeZfyfpWidLx:localhost:88002'Q!WWZVpyLeZfyfpWidLx:localhost:88001'Q!WWZVpyLeZfyfpWidLx:localhost:88000'Q!WWZVpyLeZfyfpWidLx:localhost:8800/'Q!WWZVpyLeZfyfpWidLx:localhost:8800.'Q!WWZVpyLeZfyfpWidLx:localhost:8800-'Q!WWZVpyLeZfyfpWidLx:localhost:8800,'Q!WWZVpyLeZfyfpWidLx:localhost:8800+'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!ZKPJvrCZHMHPEksYDc:localhost:8800 E'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 D'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 C'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 B'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 A'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 @'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800&'Q!YtVXQjSPgVtbxrzUOA:localhost:8800%'Q!YtVXQjSPgVtbxrzUOA:localhost:8800$'Q!YtVXQjSPgVtbxrzUOA:localhost:8800#'Q!YtVXQjSPgVtbxrzUOA:localhost:8800"'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 U'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 S'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 R'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 Q'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 P'Q!YQATbgbLImCDamiDHC:localhost:8800b'Q!YQATbgbLImCDamiDHC:localhost:8800a'Q!YQATbgbLImCDamiDHC:localhost:8800`'Q!YQATbgbLImCDamiDHC:localhost:8800_'Q!YQATbgbLImCDamiDHC:localhost:8800^'Q!YQATbgbLImCDamiDHC:localhost:8800]'Q!YQATbgbLImCDamiDHC:localhost:8800\'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829i'Q!XiwGxQKwjgutEClKUy:localhost:8829h'Q!XgobMgBjNcDRJnRXLD:localhost:8800i'Q!XgobMgBjNcDRJnRXLD:localhost:8800h'Q!XgobMgBjNcDRJnRXLD:localhost:8800g'Q!XgobMgBjNcDRJnRXLD:localhost:8800f'Q!XgobMgBjNcDRJnRXLD:localhost:8800e'Q!XgobMgBjNcDRJnRXLD:localhost:8800d'Q!XgobMgBjNcDRJnRXLD:localhost:8800c'Q!XgobMgBjNcDRJnRXLD:localhost:8800b'Q!XgobMgBjNcDRJnRXLD:localhost:8800a'Q!XgobMgBjNcDRJnRXLD:localhost:8800`'Q!XgobMgBjNcDRJnRXLD:localhost:8800_'Q!XcaKxZsPvbZhAGKKdx:localhost:8800?'Q!XcaKxZsPvbZhAGKKdx:localhost:8800>'Q!XcaKxZsPvbZhAGKKdx:localhost:8800='Q!XcaKxZsPvbZhAGKKdx:localhost:8800<'Q!XcaKxZsPvbZhAGKKdx:localhost:8800;'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 F a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP(&Q!aWJOsiuJONOvjKWEjO:localhost:8800^'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 |'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 {'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x'Q!aLxrqpqLkbzyIxGgpk:localhost:8800t'Q!aLxrqpqLkbzyIxGgpk:localhost:8800k'Q!aLxrqpqLkbzyIxGgpk:localhost:8800g'Q!aLxrqpqLkbzyIxGgpk:localhost:8800e'Q!aLxrqpqLkbzyIxGgpk:localhost:8800c'Q!aLxrqpqLkbzyIxGgpk:localhost:8800a'Q!aLxrqpqLkbzyIxGgpk:localhost:8800_'Q!aLxrqpqLkbzyIxGgpk:localhost:8800]'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 5'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 4'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 3'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 2'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 1'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 0'Q!ZaltdIYVZjCHsCWTZD:localhost:8800t'Q!ZaltdIYVZjCHsCWTZD:localhost:8800s'Q!ZaltdIYVZjCHsCWTZD:localhost:8800r'Q!ZaltdIYVZjCHsCWTZD:localhost:8800q'Q!ZaltdIYVZjCHsCWTZD:localhost:8800p'Q!ZaltdIYVZjCHsCWTZD:localhost:8800o'Q!ZaltdIYVZjCHsCWTZD:localhost:8800n'Q!ZaOktTIVeRgBXxfubH:localhost:8800}'Q!ZaOktTIVeRgBXxfubH:localhost:8800|'Q!ZaOktTIVeRgBXxfubH:localhost:8800{'Q!ZaOktTIVeRgBXxfubH:localhost:8800z'Q!ZaOktTIVeRgBXxfubH:localhost:8800y'Q!ZaOktTIVeRgBXxfubH:localhost:8800x'Q!ZaOktTIVeRgBXxfubH:localhost:8800w'Q!ZaOktTIVeRgBXxfubH:localhost:8800v'Q!ZaOktTIVeRgBXxfubH:localhost:8800u'Q!ZYKvjplZRyIWvzkRyM:localhost:8800M'Q!ZYKvjplZRyIWvzkRyM:localhost:8800L'Q!ZYKvjplZRyIWvzkRyM:localhost:8800K'Q!ZYKvjplZRyIWvzkRyM:localhost:8800J'Q!ZYKvjplZRyIWvzkRyM:localhost:8800I'Q!ZYKvjplZRyIWvzkRyM:localhost:8800H'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800G'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800E'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800D'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800C'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800B'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800A'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800@'Q!ZOwibbprUCQrSJQCrx:localhost:8800 2'Q!ZOwibbprUCQrSJQCrx:localhost:8800 1'Q!ZOwibbprUCQrSJQCrx:localhost:8800 0'Q!ZOwibbprUCQrSJQCrx:localhost:8800 /'Q!ZOwibbprUCQrSJQCrx:localhost:8800 .'Q!ZOwibbprUCQrSJQCrx:localhost:8800 -'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 @'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 ?'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 >'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 ='Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 <'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 ;'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 &Q!aWJOsiuJONOvjKWEjO:localhost:8800_ ad=wO' _ 7  o G   W /  g ?  w O '_7oGW/g?wO'_7oGW/'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aaRwQZdNAliyvRHpjs:localhost:8800j'Q!aaRwQZdNAliyvRHpjs:localhost:8800W'Q!aaRwQZdNAliyvRHpjs:localhost:8800V'Q!aaRwQZdNAliyvRHpjs:localhost:8800U'Q!aaRwQZdNAliyvRHpjs:localhost:8800T'Q!aaRwQZdNAliyvRHpjs:localhost:8800S'Q!aaRwQZdNAliyvRHpjs:localhost:8800R'Q!aaRwQZdNAliyvRHpjs:localhost:8800Q'Q!aaRwQZdNAliyvRHpjs:localhost:8800P'Q!aaRwQZdNAliyvRHpjs:localhost:8800O'Q!aaRwQZdNAliyvRHpjs:localhost:8800N'Q!aaRwQZdNAliyvRHpjs:localhost:8800M'Q!aaRwQZdNAliyvRHpjs:localhost:8800L'Q!aaRwQZdNAliyvRHpjs:localhost:8800K'Q!aaRwQZdNAliyvRHpjs:localhost:8800J'Q!aaRwQZdNAliyvRHpjs:localhost:8800I'Q!aaRwQZdNAliyvRHpjs:localhost:8800H'Q!aZwMKYDXJRlSKjQNWM:localhost:8800q'Q!aZwMKYDXJRlSKjQNWM:localhost:8800p'Q!aZwMKYDXJRlSKjQNWM:localhost:8800o'Q!aZwMKYDXJRlSKjQNWM:localhost:8800n'Q!aZwMKYDXJRlSKjQNWM:localhost:8800m'Q!aZwMKYDXJRlSKjQNWM:localhost:8800l'Q!aZwMKYDXJRlSKjQNWM:localhost:8800k'Q!aZwMKYDXJRlSKjQNWM:localhost:8800j'Q!aWvVRVaDflYyyGTOdD:localhost:8800g'Q!aWvVRVaDflYyyGTOdD:localhost:8800f'Q!aWvVRVaDflYyyGTOdD:localhost:8800e'Q!aWvVRVaDflYyyGTOdD:localhost:8800d'Q!aWvVRVaDflYyyGTOdD:localhost:8800c'Q!aWvVRVaDflYyyGTOdD:localhost:8800b'Q!aWvVRVaDflYyyGTOdD:localhost:8800a'Q!aWvVRVaDflYyyGTOdD:localhost:8800`'Q!aWvVRVaDflYyyGTOdD:localhost:8800_'Q!aWvVRVaDflYyyGTOdD:localhost:8800^'Q!aWvVRVaDflYyyGTOdD:localhost:8800]'Q!aWvVRVaDflYyyGTOdD:localhost:8800\&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWbcZNVBalJilCEsdr:localhost:8800~&Q!aWbcZNVBalJilCEsdr:localhost:8800}&Q!aWbcZNVBalJilCEsdr:localhost:8800|&Q!aWbcZNVBalJilCEsdr:localhost:8800{&Q!aWJOsiuJONOvjKWEjO:localhost:8800b&Q!aWJOsiuJONOvjKWEjO:localhost:8800a a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 O'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 N'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 M'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 L'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 K'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 J'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800 'Q!bnTuVBaAJTPbcYZtRl:localhost:8800 'Q!bnTuVBaAJTPbcYZtRl:localhost:8800 'Q!bkwyieHZwSMJfuSKvV:localhost:8800D'Q!bkwyieHZwSMJfuSKvV:localhost:8800C'Q!bkwyieHZwSMJfuSKvV:localhost:8800B'Q!bkwyieHZwSMJfuSKvV:localhost:8800A'Q!bkwyieHZwSMJfuSKvV:localhost:8800@'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!dnZVySJLGNtUKsSgXW:localhost:8800/'Q!dnZVySJLGNtUKsSgXW:localhost:8800.'Q!dnZVySJLGNtUKsSgXW:localhost:8800-'Q!dnZVySJLGNtUKsSgXW:localhost:8800,'Q!dnZVySJLGNtUKsSgXW:localhost:8800+'Q!dnZVySJLGNtUKsSgXW:localhost:8800*'Q!djwLhpJUYOKsgQtrky:localhost:8800I'Q!djwLhpJUYOKsgQtrky:localhost:8800H'Q!djwLhpJUYOKsgQtrky:localhost:8800G'Q!djwLhpJUYOKsgQtrky:localhost:8800F'Q!djwLhpJUYOKsgQtrky:localhost:8800E'Q!dWgOTucBVQBKZjfndN:localhost:8800m'Q!dWgOTucBVQBKZjfndN:localhost:8800l'Q!dWgOTucBVQBKZjfndN:localhost:8800k'Q!dWgOTucBVQBKZjfndN:localhost:8800j'Q!dWgOTucBVQBKZjfndN:localhost:8800i'Q!dWgOTucBVQBKZjfndN:localhost:8800h'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800E'Q!dDqNKNFdIjCAwnyaxp:localhost:8800D'Q!dDqNKNFdIjCAwnyaxp:localhost:8800C'Q!dDqNKNFdIjCAwnyaxp:localhost:8800B'Q!dDqNKNFdIjCAwnyaxp:localhost:8800A'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800 A'Q!cidyuyekVzJHHvyomb:localhost:8800 @'Q!cidyuyekVzJHHvyomb:localhost:8800 ?'Q!cidyuyekVzJHHvyomb:localhost:8800 >'Q!cidyuyekVzJHHvyomb:localhost:8800 ='Q!cidyuyekVzJHHvyomb:localhost:8800 <'Q!cSUQGmpIsSCBAVTOHo:localhost:8800W'Q!cSUQGmpIsSCBAVTOHo:localhost:8800V'Q!cSUQGmpIsSCBAVTOHo:localhost:8800U'Q!cSUQGmpIsSCBAVTOHo:localhost:8800T'Q!cSUQGmpIsSCBAVTOHo:localhost:8800S'Q!cSUQGmpIsSCBAVTOHo:localhost:8800R'Q!eGEEtFXUXuZDImkeql:localhost:8800 A a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800r'Q!erBPdgtUsiOfIKUkho:localhost:8800q'Q!erBPdgtUsiOfIKUkho:localhost:8800p'Q!erBPdgtUsiOfIKUkho:localhost:8800o'Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800s'Q!egCvzKpbEwmuvDoBTb:localhost:8800r'Q!egCvzKpbEwmuvDoBTb:localhost:8800q'Q!egCvzKpbEwmuvDoBTb:localhost:8800p'Q!egCvzKpbEwmuvDoBTb:localhost:8800o'Q!egCvzKpbEwmuvDoBTb:localhost:8800n'Q!egCvzKpbEwmuvDoBTb:localhost:8800m'Q!egCvzKpbEwmuvDoBTb:localhost:8800l'Q!egCvzKpbEwmuvDoBTb:localhost:8800k'Q!egCvzKpbEwmuvDoBTb:localhost:8800j'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800 z'Q!eZjhYVNpwdogVDKHCk:localhost:8800 w'Q!eZjhYVNpwdogVDKHCk:localhost:8800 v'Q!eZjhYVNpwdogVDKHCk:localhost:8800 u'Q!eZjhYVNpwdogVDKHCk:localhost:8800 t'Q!eZjhYVNpwdogVDKHCk:localhost:8800 s'Q!eZjhYVNpwdogVDKHCk:localhost:8800 r'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!eLsrBEnrHolwCNgkFW:localhost:8800#'Q!eLsrBEnrHolwCNgkFW:localhost:8800"'Q!eLsrBEnrHolwCNgkFW:localhost:8800!'Q!eLsrBEnrHolwCNgkFW:localhost:8800 'Q!eLsrBEnrHolwCNgkFW:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800 I'Q!eGEEtFXUXuZDImkeql:localhost:8800 H'Q!eGEEtFXUXuZDImkeql:localhost:8800 G'Q!eGEEtFXUXuZDImkeql:localhost:8800 F'Q!eGEEtFXUXuZDImkeql:localhost:8800 E'Q!eGEEtFXUXuZDImkeql:localhost:8800 D'Q!eGEEtFXUXuZDImkeql:localhost:8800 C'Q!eySSVuCclRpBDgwKIU:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!hFwigdYZkwYNSwelRH:localhost:8800 g'Q!hFwigdYZkwYNSwelRH:localhost:8800 f'Q!hFwigdYZkwYNSwelRH:localhost:8800 e'Q!hFwigdYZkwYNSwelRH:localhost:8800 d'Q!hFwigdYZkwYNSwelRH:localhost:8800 c'Q!hFwigdYZkwYNSwelRH:localhost:8800 b'Q!hFwigdYZkwYNSwelRH:localhost:8800 a'Q!hFwigdYZkwYNSwelRH:localhost:8800 `'Q!hFwigdYZkwYNSwelRH:localhost:8800 _'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800~'Q!fcdNYFWFyxmdpKAknc:localhost:8800}'Q!fcdNYFWFyxmdpKAknc:localhost:8800|'Q!fcdNYFWFyxmdpKAknc:localhost:8800{'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fDISaqNBhlOwherxSt:localhost:8800 <'Q!fDISaqNBhlOwherxSt:localhost:8800 ;'Q!fDISaqNBhlOwherxSt:localhost:8800 :'Q!fDISaqNBhlOwherxSt:localhost:8800 9'Q!fDISaqNBhlOwherxSt:localhost:8800 8'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 h a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:88008'Q!hgjYwwwjWJNgwrzOto:localhost:88007'Q!hgjYwwwjWJNgwrzOto:localhost:88006'Q!hgjYwwwjWJNgwrzOto:localhost:88005'Q!hgjYwwwjWJNgwrzOto:localhost:88004'Q!hgjYwwwjWJNgwrzOto:localhost:88003'Q!hgjYwwwjWJNgwrzOto:localhost:88002'Q!hgjYwwwjWJNgwrzOto:localhost:88001'Q!hgjYwwwjWJNgwrzOto:localhost:88000'Q!hegUPDZCEEmBhsNJJR:localhost:8800 'Q!hegUPDZCEEmBhsNJJR:localhost:8800 'Q!hegUPDZCEEmBhsNJJR:localhost:8800 'Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~'Q!hegUPDZCEEmBhsNJJR:localhost:8800 }'Q!hZuwenlFDapIPBOyfi:localhost:8800 'Q!hZuwenlFDapIPBOyfi:localhost:8800 'Q!hZuwenlFDapIPBOyfi:localhost:8800 'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800g'Q!hSzBsirdPWHtVjagXn:localhost:8800f'Q!hSzBsirdPWHtVjagXn:localhost:8800e'Q!hSzBsirdPWHtVjagXn:localhost:8800d'Q!hSzBsirdPWHtVjagXn:localhost:8800c'Q!hSzBsirdPWHtVjagXn:localhost:8800b'Q!hNCwypIzdDZDVmCEfd:localhost:8800 }'Q!hNCwypIzdDZDVmCEfd:localhost:8800 |'Q!hNCwypIzdDZDVmCEfd:localhost:8800 {'Q!hNCwypIzdDZDVmCEfd:localhost:8800 y'Q!hNCwypIzdDZDVmCEfd:localhost:8800 x'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 a`8pH X 0  h @  x P ( ` 8  q J #`9vO(`8pH X0h@xP(`8'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800>'Q!kAxKaIQhXTtGFWSUgr:localhost:8800='Q!kAxKaIQhXTtGFWSUgr:localhost:8800<'Q!kAxKaIQhXTtGFWSUgr:localhost:8800;'Q!kAxKaIQhXTtGFWSUgr:localhost:8800:'Q!kAxKaIQhXTtGFWSUgr:localhost:88009'Q!kAxKaIQhXTtGFWSUgr:localhost:88008'Q!kAxKaIQhXTtGFWSUgr:localhost:88007'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800S&Q!jYzridjeihmwPBuwLb:localhost:8800R&Q!jYzridjeihmwPBuwLb:localhost:8800Q&Q!jYzridjeihmwPBuwLb:localhost:8800P&Q!jYzridjeihmwPBuwLb:localhost:8800O&Q!jYzridjeihmwPBuwLb:localhost:8800N&Q!jYzridjeihmwPBuwLb:localhost:8800M&Q!jYzridjeihmwPBuwLb:localhost:8800L&Q!jYzridjeihmwPBuwLb:localhost:8800K&Q!jYzridjeihmwPBuwLb:localhost:8800J&Q!jYzridjeihmwPBuwLb:localhost:8800I&Q!jYzridjeihmwPBuwLb:localhost:8800H&Q!jYzridjeihmwPBuwLb:localhost:8800G&Q!jYzridjeihmwPBuwLb:localhost:8800F&Q!jYzridjeihmwPBuwLb:localhost:8800E&Q!jYzridjeihmwPBuwLb:localhost:8800D'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 -'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 ,'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 +'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 *'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 )'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 ('Q!jRuDexjFzIDOKbwDJQ:localhost:8800 ''Q!jRuDexjFzIDOKbwDJQ:localhost:8800 &'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jDKAOtmeAGbYTpwyEW:localhost:8800:'Q!jDKAOtmeAGbYTpwyEW:localhost:88009'Q!jDKAOtmeAGbYTpwyEW:localhost:88008'Q!jDKAOtmeAGbYTpwyEW:localhost:88007'Q!jDKAOtmeAGbYTpwyEW:localhost:88006'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800  a`8pH X 0  h @  x P ( ` 8  p H ]6qI!Y1 iAyQ)a9qI!Y1 &Q!loalEsWaTYwrVUNJLr:localhost:8800"&Q!loalEsWaTYwrVUNJLr:localhost:8800!'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800z&Q!kxTDuIasPNpXtiRsif:localhost:8800y&Q!kxTDuIasPNpXtiRsif:localhost:8800x&Q!kxTDuIasPNpXtiRsif:localhost:8800w&Q!kxTDuIasPNpXtiRsif:localhost:8800v&Q!kxTDuIasPNpXtiRsif:localhost:8800u&Q!kxTDuIasPNpXtiRsif:localhost:8800t&Q!kxTDuIasPNpXtiRsif:localhost:8800s&Q!kxTDuIasPNpXtiRsif:localhost:8800r'Q!kwXxkGQFkaeenFTQJr:localhost:8800m'Q!kwXxkGQFkaeenFTQJr:localhost:8800l'Q!kwXxkGQFkaeenFTQJr:localhost:8800k'Q!kwXxkGQFkaeenFTQJr:localhost:8800j'Q!kwXxkGQFkaeenFTQJr:localhost:8800i'Q!kwXxkGQFkaeenFTQJr:localhost:8800h'Q!kwXxkGQFkaeenFTQJr:localhost:8800g'Q!kwXxkGQFkaeenFTQJr:localhost:8800f'Q!kwJgbtogEzCqYbUXfh:localhost:88001'Q!kwJgbtogEzCqYbUXfh:localhost:88000'Q!kwJgbtogEzCqYbUXfh:localhost:8800/'Q!kwJgbtogEzCqYbUXfh:localhost:8800.'Q!kwJgbtogEzCqYbUXfh:localhost:8800-'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800@'Q!kjueCKHmYaYefEEpQY:localhost:8800?'Q!kjueCKHmYaYefEEpQY:localhost:8800>'Q!kjueCKHmYaYefEEpQY:localhost:8800='Q!kjueCKHmYaYefEEpQY:localhost:8800<'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 &Q!loalEsWaTYwrVUNJLr:localhost:8800# aa9qI! Y 1 i A  y Q )  a 9  q I !Y1 iAyQ)a9qI!Y1 iAyQ)'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 l'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 k'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 j'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 i'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 h'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 g'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 f'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nftGLlLhVgzOwOFufp:localhost:8800;'Q!nftGLlLhVgzOwOFufp:localhost:8800:'Q!nftGLlLhVgzOwOFufp:localhost:88009'Q!nftGLlLhVgzOwOFufp:localhost:88008'Q!nftGLlLhVgzOwOFufp:localhost:88007'Q!mvgUHEsfGqDkPQUvfG:localhost:8800{'Q!mvgUHEsfGqDkPQUvfG:localhost:8800z'Q!mvgUHEsfGqDkPQUvfG:localhost:8800y'Q!mvgUHEsfGqDkPQUvfG:localhost:8800x'Q!mvgUHEsfGqDkPQUvfG:localhost:8800w'Q!mvgUHEsfGqDkPQUvfG:localhost:8800v'Q!mvgUHEsfGqDkPQUvfG:localhost:8800u'Q!mvgUHEsfGqDkPQUvfG:localhost:8800t'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800a'Q!mfzIRinBAGGrZvQAuI:localhost:8800`'Q!mfzIRinBAGGrZvQAuI:localhost:8800_'Q!mfzIRinBAGGrZvQAuI:localhost:8800^'Q!mfzIRinBAGGrZvQAuI:localhost:8800]'Q!mfzIRinBAGGrZvQAuI:localhost:8800\'Q!mTlCLZQCmfDuQsJxxp:localhost:8800g'Q!mTlCLZQCmfDuQsJxxp:localhost:8800f'Q!mTlCLZQCmfDuQsJxxp:localhost:8800e'Q!mTlCLZQCmfDuQsJxxp:localhost:8800d'Q!mTlCLZQCmfDuQsJxxp:localhost:8800c'Q!mTlCLZQCmfDuQsJxxp:localhost:8800b'Q!mTlCLZQCmfDuQsJxxp:localhost:8800a'Q!mTlCLZQCmfDuQsJxxp:localhost:8800`'Q!mOrKBPhetifKHDmElM:localhost:8800*'Q!mOrKBPhetifKHDmElM:localhost:8800('Q!mOrKBPhetifKHDmElM:localhost:8800''Q!mOrKBPhetifKHDmElM:localhost:8800&'Q!mOrKBPhetifKHDmElM:localhost:8800%'Q!mOrKBPhetifKHDmElM:localhost:8800$'Q!mOrKBPhetifKHDmElM:localhost:8800#'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800% a`8pH X 0  h @  z S ,  f >  v N &^6nF~V.f>vN&^6nG ]5 'Q!qInWQPtNQfBFoVzUtP:localhost:8800 I'Q!qInWQPtNQfBFoVzUtP:localhost:8800 H'Q!qInWQPtNQfBFoVzUtP:localhost:8800 G&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800 w'Q!peJMRJtXBvIiCttNmm:localhost:8800 v'Q!peJMRJtXBvIiCttNmm:localhost:8800 u'Q!peJMRJtXBvIiCttNmm:localhost:8800 t'Q!peJMRJtXBvIiCttNmm:localhost:8800 s'Q!pduebXnTyxQWVxEICp:localhost:8800 ;'Q!pduebXnTyxQWVxEICp:localhost:8800 :'Q!pduebXnTyxQWVxEICp:localhost:8800 9'Q!pduebXnTyxQWVxEICp:localhost:8800 8'Q!pduebXnTyxQWVxEICp:localhost:8800 7'Q!pduebXnTyxQWVxEICp:localhost:8800 6'Q!paDmNxsOZIKyApbxXs:localhost:8800 ^'Q!paDmNxsOZIKyApbxXs:localhost:8800 ]'Q!paDmNxsOZIKyApbxXs:localhost:8800 \'Q!paDmNxsOZIKyApbxXs:localhost:8800 ['Q!paDmNxsOZIKyApbxXs:localhost:8800 Z'Q!paDmNxsOZIKyApbxXs:localhost:8800 Y'Q!paDmNxsOZIKyApbxXs:localhost:8800 X'Q!paDmNxsOZIKyApbxXs:localhost:8800 W'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800~'Q!pJUItjYTOUJQFIxyiX:localhost:8800}'Q!pJUItjYTOUJQFIxyiX:localhost:8800|'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 -'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 ,'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 +'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 *'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 )'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 ('Q!pHoEnhQYhwlbJXqKQE:localhost:8800 ''Q!oznZaCpONuNDaLarkI:localhost:8800)'Q!oznZaCpONuNDaLarkI:localhost:8800('Q!oznZaCpONuNDaLarkI:localhost:8800''Q!oznZaCpONuNDaLarkI:localhost:8800&'Q!oznZaCpONuNDaLarkI:localhost:8800%'Q!oznZaCpONuNDaLarkI:localhost:8800$'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800~'Q!oXKJArsPmtgaYANBrg:localhost:8800}'Q!oXKJArsPmtgaYANBrg:localhost:8800|'Q!oXKJArsPmtgaYANBrg:localhost:8800{'Q!oXKJArsPmtgaYANBrg:localhost:8800z'Q!oXKJArsPmtgaYANBrg:localhost:8800y'Q!oXKJArsPmtgaYANBrg:localhost:8800x'Q!oXKJArsPmtgaYANBrg:localhost:8800w'Q!oXKJArsPmtgaYANBrg:localhost:8800v'Q!oXKJArsPmtgaYANBrg:localhost:8800u'Q!oXKJArsPmtgaYANBrg:localhost:8800t'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800 J a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:88006'Q!raCWVWQGnXbmkexpCN:localhost:88005'Q!raCWVWQGnXbmkexpCN:localhost:88004'Q!raCWVWQGnXbmkexpCN:localhost:88003'Q!raCWVWQGnXbmkexpCN:localhost:88002'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800~'Q!rWGwSSefrZzQYCYFHs:localhost:8800}'Q!rWGwSSefrZzQYCYFHs:localhost:8800|'Q!rWGwSSefrZzQYCYFHs:localhost:8800{'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800x'Q!quaZwrGnzbNWhwAOYB:localhost:8800w'Q!quaZwrGnzbNWhwAOYB:localhost:8800v'Q!quaZwrGnzbNWhwAOYB:localhost:8800u'Q!quaZwrGnzbNWhwAOYB:localhost:8800t'Q!quaZwrGnzbNWhwAOYB:localhost:8800s'Q!quaZwrGnzbNWhwAOYB:localhost:8800r'Q!quaZwrGnzbNWhwAOYB:localhost:8800q'Q!qtelAHlSkrqEFmlCqS:localhost:8800 *'Q!qtelAHlSkrqEFmlCqS:localhost:8800 )'Q!qtelAHlSkrqEFmlCqS:localhost:8800 ('Q!qtelAHlSkrqEFmlCqS:localhost:8800 ''Q!qtelAHlSkrqEFmlCqS:localhost:8800 &'Q!qtelAHlSkrqEFmlCqS:localhost:8800 %'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qSUSLLWjDxcGibUZdT:localhost:8800/'Q!qSUSLLWjDxcGibUZdT:localhost:8800.'Q!qSUSLLWjDxcGibUZdT:localhost:8800-'Q!qSUSLLWjDxcGibUZdT:localhost:8800,'Q!qSUSLLWjDxcGibUZdT:localhost:8800+'Q!qSUSLLWjDxcGibUZdT:localhost:8800*'Q!qInWQPtNQfBFoVzUtP:localhost:8800 L'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 a`8pH X 0  h @  x P ( ` 8  t M &c<vN&^6nF~V.f>vN&^6'Q!taANXnGBZntAreRurn:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 r'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 q'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n'Q!tLkhTnTgDjjAvscRkW:localhost:8800C'Q!tLkhTnTgDjjAvscRkW:localhost:8800B'Q!tLkhTnTgDjjAvscRkW:localhost:8800A'Q!tLkhTnTgDjjAvscRkW:localhost:8800@'Q!tLkhTnTgDjjAvscRkW:localhost:8800?'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800['Q!svYOOXWZHtQQzlMcEP:localhost:8800Z'Q!svYOOXWZHtQQzlMcEP:localhost:8800Y'Q!svYOOXWZHtQQzlMcEP:localhost:8800X'Q!svYOOXWZHtQQzlMcEP:localhost:8800W'Q!svYOOXWZHtQQzlMcEP:localhost:8800V'Q!svYOOXWZHtQQzlMcEP:localhost:8800U'Q!svYOOXWZHtQQzlMcEP:localhost:8800T'Q!sqkBzbHHJOTNWwynqV:localhost:8800 U'Q!sqkBzbHHJOTNWwynqV:localhost:8800 T'Q!sqkBzbHHJOTNWwynqV:localhost:8800 S'Q!sqkBzbHHJOTNWwynqV:localhost:8800 R'Q!sqkBzbHHJOTNWwynqV:localhost:8800 Q'Q!sqkBzbHHJOTNWwynqV:localhost:8800 P'Q!sqkBzbHHJOTNWwynqV:localhost:8800 O'Q!sqkBzbHHJOTNWwynqV:localhost:8800 N'Q!sqkBzbHHJOTNWwynqV:localhost:8800 M'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800g&Q!scyFsXcUIJiLIMwWMY:localhost:8800f&Q!scyFsXcUIJiLIMwWMY:localhost:8800e&Q!scyFsXcUIJiLIMwWMY:localhost:8800d&Q!scyFsXcUIJiLIMwWMY:localhost:8800c&Q!sPWVGnipjiiWQpywNO:localhost:88008&Q!sPWVGnipjiiWQpywNO:localhost:88007&Q!sPWVGnipjiiWQpywNO:localhost:88006&Q!sPWVGnipjiiWQpywNO:localhost:88005&Q!sPWVGnipjiiWQpywNO:localhost:88004&Q!sPWVGnipjiiWQpywNO:localhost:88003&Q!sPWVGnipjiiWQpywNO:localhost:88002&Q!sPWVGnipjiiWQpywNO:localhost:88001&Q!sPWVGnipjiiWQpywNO:localhost:88000'Q!sJnuQYOyruhUpXDsLY:localhost:8800V'Q!sJnuQYOyruhUpXDsLY:localhost:8800U'Q!sJnuQYOyruhUpXDsLY:localhost:8800T'Q!sJnuQYOyruhUpXDsLY:localhost:8800S'Q!sJnuQYOyruhUpXDsLY:localhost:8800R'Q!sJnuQYOyruhUpXDsLY:localhost:8800Q'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 q'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 p'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 o'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 n'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 m'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 l'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 k'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 j'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800  a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH!]5 mE}U-'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800=&Q!uxKymrHZeXRYCZwekU:localhost:8800<&Q!uxKymrHZeXRYCZwekU:localhost:8800;&Q!uxKymrHZeXRYCZwekU:localhost:8800:&Q!uxKymrHZeXRYCZwekU:localhost:88009'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800S'Q!uqIEMXzdeNeXdJmuwh:localhost:8800R'Q!uqIEMXzdeNeXdJmuwh:localhost:8800Q'Q!uqIEMXzdeNeXdJmuwh:localhost:8800P'Q!uqIEMXzdeNeXdJmuwh:localhost:8800O'Q!uqIEMXzdeNeXdJmuwh:localhost:8800N'Q!uqIEMXzdeNeXdJmuwh:localhost:8800M'Q!uqIEMXzdeNeXdJmuwh:localhost:8800L'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ~'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 }'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 |'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 {'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 z'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 y'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 x'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 w'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 v'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 X'Q!uGpSboYkgxVNOqNeUG:localhost:8800 W'Q!uGpSboYkgxVNOqNeUG:localhost:8800 V'Q!uGpSboYkgxVNOqNeUG:localhost:8800 U'Q!uGpSboYkgxVNOqNeUG:localhost:8800 T'Q!uGpSboYkgxVNOqNeUG:localhost:8800 S'Q!uGpSboYkgxVNOqNeUG:localhost:8800 R'Q!uGpSboYkgxVNOqNeUG:localhost:8800 Q'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!vJQYmOxOBLwFKzYkNj:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 4'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 3'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 2'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 1'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 0'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 /'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 .'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRRNxNyGboLHNhqQvr:localhost:8800 'Q!vRRNxNyGboLHNhqQvr:localhost:8800 'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800S'Q!vOfeZvbtpuHfoqShFl:localhost:8800R'Q!vOfeZvbtpuHfoqShFl:localhost:8800Q'Q!vOfeZvbtpuHfoqShFl:localhost:8800P'Q!vOfeZvbtpuHfoqShFl:localhost:8800O'Q!vOfeZvbtpuHfoqShFl:localhost:8800N'Q!vOfeZvbtpuHfoqShFl:localhost:8800M'Q!vOfeZvbtpuHfoqShFl:localhost:8800L'Q!vOfeZvbtpuHfoqShFl:localhost:8800K'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H Z3 mE}U-e=uM%a:rJ"Z2 'Q!yLccBXjjEasExpsXlt:localhost:8800*'Q!yLccBXjjEasExpsXlt:localhost:8800)'Q!yAzXcNLHMuqFOcOexj:localhost:8800K'Q!yAzXcNLHMuqFOcOexj:localhost:8800J'Q!yAzXcNLHMuqFOcOexj:localhost:8800I'Q!yAzXcNLHMuqFOcOexj:localhost:8800H'Q!yAzXcNLHMuqFOcOexj:localhost:8800G'Q!yAzXcNLHMuqFOcOexj:localhost:8800F'Q!yAzXcNLHMuqFOcOexj:localhost:8800E'Q!yAzXcNLHMuqFOcOexj:localhost:8800D'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 7'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 6'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 5'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 4'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 3&Q!xwoIOPTGmJIlTXakxC:localhost:8800X&Q!xwoIOPTGmJIlTXakxC:localhost:8800W&Q!xwoIOPTGmJIlTXakxC:localhost:8800V&Q!xwoIOPTGmJIlTXakxC:localhost:8800U&Q!xwoIOPTGmJIlTXakxC:localhost:8800T'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800q&Q!wvnfKBSrUlfNmYoeil:localhost:8800p&Q!wvnfKBSrUlfNmYoeil:localhost:8800o&Q!wvnfKBSrUlfNmYoeil:localhost:8800n&Q!wvnfKBSrUlfNmYoeil:localhost:8800m'Q!wsvXTJXouVkEZcCFsD:localhost:8800>'Q!wsvXTJXouVkEZcCFsD:localhost:8800='Q!wsvXTJXouVkEZcCFsD:localhost:8800<'Q!wsvXTJXouVkEZcCFsD:localhost:8800;'Q!wsvXTJXouVkEZcCFsD:localhost:8800:'Q!wsvXTJXouVkEZcCFsD:localhost:88009'Q!wsvXTJXouVkEZcCFsD:localhost:88008'Q!wsvXTJXouVkEZcCFsD:localhost:88007'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wIhMbfQzYbJobPdwyi:localhost:8800^'Q!wIhMbfQzYbJobPdwyi:localhost:8800]'Q!wIhMbfQzYbJobPdwyi:localhost:8800\'Q!wIhMbfQzYbJobPdwyi:localhost:8800['Q!wIhMbfQzYbJobPdwyi:localhost:8800Z'Q!wIhMbfQzYbJobPdwyi:localhost:8800Y'Q!wIhMbfQzYbJobPdwyi:localhost:8800X'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800+ ``8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8tM&`8tM%]5 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:88000'Q!zoTQAhGwmDDUECKtbL:localhost:8800/'Q!zoTQAhGwmDDUECKtbL:localhost:8800.'Q!zoTQAhGwmDDUECKtbL:localhost:8800-'Q!zoTQAhGwmDDUECKtbL:localhost:8800,&Q!zhCsYcaweVFJLLNwBz:localhost:8800*&Q!zhCsYcaweVFJLLNwBz:localhost:8800)&Q!zhCsYcaweVFJLLNwBz:localhost:8800(&Q!zhCsYcaweVFJLLNwBz:localhost:8800'&Q!zhCsYcaweVFJLLNwBz:localhost:8800&'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 &Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800 N'Q!zHBgbzUZHshNGZvIBS:localhost:8800 M'Q!zHBgbzUZHshNGZvIBS:localhost:8800 L'Q!zHBgbzUZHshNGZvIBS:localhost:8800 K'Q!zHBgbzUZHshNGZvIBS:localhost:8800 J'Q!zHBgbzUZHshNGZvIBS:localhost:8800 I'Q!zHBgbzUZHshNGZvIBS:localhost:8800 H'Q!zHBgbzUZHshNGZvIBS:localhost:8800 G'Q!zHBgbzUZHshNGZvIBS:localhost:8800 F'Q!zHBgbzUZHshNGZvIBS:localhost:8800 E'Q!zHBgbzUZHshNGZvIBS:localhost:8800 D'Q!zHBgbzUZHshNGZvIBS:localhost:8800 C'Q!zHBgbzUZHshNGZvIBS:localhost:8800 B'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800.'Q!yLccBXjjEasExpsXlt:localhost:8800-(  h`8pH X 0  h'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800!'Q!zsXPhIPzeXXLvuazzQ:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 3#Qexample.com!QWLJZmJqjWZjVOjdYF:localhost:8800$ 1#Q example.com!QWLJZmJqjWZjVOjdYF:localhost:8800 G jG?/indexdestination_rooms_room_iddestination_roomsgCREATE INDEX destination_rooms_room_id ON destination_rooms (room_id)BU/indexsqlite_autoindex_destination_rooms_1destination_roomseU//Wtabledestination_roomsdestination_roomsdCREATE TABLE destination_rooms ( -- the destination in question. destination TEXT NOT NULL REFERENCES destinations (destination), -- the ID of the room in question room_id TEXT NOT NULL REFERENCES rooms (room_id), -- the stream_ordering of the event stream_ordering BIGINT NOT NULL, PRIMARY KEY (destination, room_id) -- We don't declare a foreign key on stream_ordering here because that'd mean -- we'd need to either maintain an index (expensive) or do a table scan of -- destination_rooms whenever we delete an event (also potentially expensive). -- In addition to that, a foreign key on stream_ordering would be redundant -- as this row doesn't need to refer to a specific event; if the event gets -- deleted then it doesn't affect the validity of the stream_ordering here. )q=% indexstate_groups_room_id_idxstate_groupsACREATE INDEX state_groups_room_id_idx ON state_groups (room_id)5SAaindexfederation_stream_position_instancefederation_stream_position3CREATE UNIQUE INDEX federation_stream_position_instance ON federation_stream_position(type, instance_name)H [5indexsqlite_autoindex_ui_auth_sessions_ips_1ui_auth_sessions_ips 55/tableui_auth_sessions_ipsui_auth_sessions_ipsCREATE TABLE ui_auth_sessions_ips( session_id TEXT NOT NULL, ip TEXT NOT NULL, user_agent TEXT NOT NULL, UNIQUE (session_id, ip, user_agent), FOREIGN KEY (session_id) REFERENCES ui_auth_sessions (session_id) )] gQ indexdevice_lists_outbound_last_success_unique_idxdevice_lists_outbound_last_success2CREATE UNIQUE INDEX device_lists_outbound_last_success_unique_idx ON "device_lists_outbound_last_success" (destination, user_id)S QQtabledevice_lists_outbound_last_successdevice_lists_outbound_last_success1CREATE TABLE "device_lists_outbound_last_success" ( destination TEXT NOT NULL, user_id TEXT NOT NULL, stream_id BIGINT NOT NULL )X kEindexsqlite_autoindex_ui_auth_sessions_credentials_1ui_auth_sessions_credentials0 %Q !QWLJZmJqjWZjVOjdYF:localhost:8800synapse-1.53.0/.ci/twisted_trunk_build_failed_issue_template.md000066400000000000000000000002131420514467300247530ustar00rootroot00000000000000--- title: CI run against Twisted trunk is failing --- See https://github.com/{{env.GITHUB_REPOSITORY}}/actions/runs/{{env.GITHUB_RUN_ID}} synapse-1.53.0/.ci/worker-blacklist000066400000000000000000000002351420514467300171430ustar00rootroot00000000000000# This file serves as a blacklist for SyTest tests that we expect will fail in # Synapse when run under worker mode. For more details, see sytest-blacklist. synapse-1.53.0/.codecov.yml000066400000000000000000000004101420514467300155060ustar00rootroot00000000000000comment: off coverage: status: project: default: target: 0 # Target % coverage, can be auto. Turned off for now threshold: null base: auto patch: default: target: 0 threshold: null base: auto synapse-1.53.0/.coveragerc000066400000000000000000000001561420514467300154130ustar00rootroot00000000000000[run] branch = True parallel = True include=$TOP/synapse/* data_file = $TOP/.coverage [report] precision = 2 synapse-1.53.0/.dockerignore000066400000000000000000000002131420514467300157400ustar00rootroot00000000000000# ignore everything by default * # things to include !docker !scripts !synapse !MANIFEST.in !README.rst !setup.py !synctl **/__pycache__ synapse-1.53.0/.editorconfig000066400000000000000000000002251420514467300157440ustar00rootroot00000000000000# EditorConfig https://EditorConfig.org # top-most EditorConfig file root = true # 4 space indentation [*.py] indent_style = space indent_size = 4 synapse-1.53.0/.git-blame-ignore-revs000066400000000000000000000003451420514467300173720ustar00rootroot00000000000000# Black reformatting (#5482). 32e7c9e7f20b57dd081023ac42d6931a8da9b3a3 # Target Python 3.5 with black (#8664). aff1eb7c671b0a3813407321d2702ec46c71fa56 # Update black to 20.8b1 (#9381). 0a00b7ff14890987f09112a2ae696c61001e6cf1 synapse-1.53.0/.github/000077500000000000000000000000001420514467300146305ustar00rootroot00000000000000synapse-1.53.0/.github/CODEOWNERS000066400000000000000000000001631420514467300162230ustar00rootroot00000000000000# Automatically request reviews from the synapse-core team when a pull request comes in. * @matrix-org/synapse-coresynapse-1.53.0/.github/FUNDING.yml000066400000000000000000000002171420514467300164450ustar00rootroot00000000000000# One username per supported platform and one custom link patreon: matrixdotorg liberapay: matrixdotorg custom: https://paypal.me/matrixdotorg synapse-1.53.0/.github/ISSUE_TEMPLATE.md000066400000000000000000000004031420514467300173320ustar00rootroot00000000000000**If you are looking for support** please ask in **#synapse:matrix.org** (using a matrix.org account if necessary). We do not use GitHub issues for support. **If you want to report a security issue** please see https://matrix.org/security-disclosure-policy/ synapse-1.53.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001420514467300170135ustar00rootroot00000000000000synapse-1.53.0/.github/ISSUE_TEMPLATE/BUG_REPORT.md000066400000000000000000000037221420514467300210510ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve --- ### Description ### Steps to reproduce - list the steps - that reproduce the bug - using hyphens as bullet points ### Version information - **Homeserver**: If not matrix.org: - **Version**: - **Install method**: - **Platform**: synapse-1.53.0/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md000066400000000000000000000002211420514467300216330ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project --- **Description:** synapse-1.53.0/.github/ISSUE_TEMPLATE/SUPPORT_REQUEST.md000066400000000000000000000004061420514467300217210ustar00rootroot00000000000000--- name: Support request about: I need support for Synapse --- Please don't file github issues asking for support. Instead, please join [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org) (from a matrix.org account if necessary), and ask there. synapse-1.53.0/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000023101420514467300204250ustar00rootroot00000000000000### Pull Request Checklist * [ ] Pull request is based on the develop branch * [ ] Pull request includes a [changelog file](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#changelog). The entry should: - Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from `EventStore` to `EventWorkerStore`.". - Use markdown where necessary, mostly for `code blocks`. - End with either a period (.) or an exclamation mark (!). - Start with a capital letter. - Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry. * [ ] Pull request includes a [sign off](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#sign-off) * [ ] [Code style](https://matrix-org.github.io/synapse/latest/code_style.html) is correct (run the [linters](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#run-the-linters)) synapse-1.53.0/.github/SUPPORT.md000066400000000000000000000004121420514467300163230ustar00rootroot00000000000000[**#synapse:matrix.org**](https://matrix.to/#/#synapse:matrix.org) is the official support room for Synapse, and can be accessed by any client from https://matrix.org/docs/projects/try-matrix-now.html. Please ask for support there, rather than filing github issues. synapse-1.53.0/.github/workflows/000077500000000000000000000000001420514467300166655ustar00rootroot00000000000000synapse-1.53.0/.github/workflows/docker.yml000066400000000000000000000032671420514467300206670ustar00rootroot00000000000000# GitHub actions workflow which builds and publishes the docker images. name: Build docker images on: push: tags: ["v*"] branches: [ master, main, develop ] workflow_dispatch: permissions: contents: read jobs: build: runs-on: ubuntu-latest steps: - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v1 with: platforms: arm64 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 - name: Inspect builder run: docker buildx inspect - name: Log in to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} # TODO: consider using https://github.com/docker/metadata-action instead of this # custom magic - name: Calculate docker image tag id: set-tag run: | case "${GITHUB_REF}" in refs/heads/develop) tag=develop ;; refs/heads/master|refs/heads/main) tag=latest ;; refs/tags/*) tag=${GITHUB_REF#refs/tags/} ;; *) tag=${GITHUB_SHA} ;; esac echo "::set-output name=tag::$tag" - name: Build and push all platforms uses: docker/build-push-action@v2 with: push: true labels: "gitsha1=${{ github.sha }}" tags: "matrixdotorg/synapse:${{ steps.set-tag.outputs.tag }}" file: "docker/Dockerfile" platforms: linux/amd64,linux/arm64 synapse-1.53.0/.github/workflows/docs.yaml000066400000000000000000000037431420514467300205100ustar00rootroot00000000000000name: Deploy the documentation on: push: branches: # For bleeding-edge documentation - develop # For documentation specific to a release - 'release-v*' # stable docs - master workflow_dispatch: jobs: pages: name: GitHub Pages runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup mdbook uses: peaceiris/actions-mdbook@4b5ef36b314c2599664ca107bb8c02412548d79d # v1.1.14 with: mdbook-version: '0.4.9' - name: Build the documentation # mdbook will only create an index.html if we're including docs/README.md in SUMMARY.md. # However, we're using docs/README.md for other purposes and need to pick a new page # as the default. Let's opt for the welcome page instead. run: | mdbook build cp book/welcome_and_overview.html book/index.html # Figure out the target directory. # # The target directory depends on the name of the branch # - name: Get the target directory name id: vars run: | # first strip the 'refs/heads/' prefix with some shell foo branch="${GITHUB_REF#refs/heads/}" case $branch in release-*) # strip 'release-' from the name for release branches. branch="${branch#release-}" ;; master) # deploy to "latest" for the master branch. branch="latest" ;; esac # finally, set the 'branch-version' var. echo "::set-output name=branch-version::$branch" # Deploy to the target directory. - name: Deploy to gh pages uses: peaceiris/actions-gh-pages@068dc23d9710f1ba62e86896f84735d869951305 # v3.8.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./book destination_dir: ./${{ steps.vars.outputs.branch-version }} synapse-1.53.0/.github/workflows/release-artifacts.yml000066400000000000000000000075431420514467300230170ustar00rootroot00000000000000# GitHub actions workflow which builds the release artifacts. name: Build release artifacts on: # we build on PRs and develop to (hopefully) get early warning # of things breaking (but only build one set of debs) pull_request: push: branches: ["develop"] # we do the full build on tags. tags: ["v*"] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: write jobs: get-distros: name: "Calculate list of debian distros" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - id: set-distros run: | # if we're running from a tag, get the full list of distros; otherwise just use debian:sid dists='["debian:sid"]' if [[ $GITHUB_REF == refs/tags/* ]]; then dists=$(scripts-dev/build_debian_packages --show-dists-json) fi echo "::set-output name=distros::$dists" # map the step outputs to job outputs outputs: distros: ${{ steps.set-distros.outputs.distros }} # now build the packages with a matrix build. build-debs: needs: get-distros name: "Build .deb packages" runs-on: ubuntu-latest strategy: matrix: distro: ${{ fromJson(needs.get-distros.outputs.distros) }} steps: - name: Checkout uses: actions/checkout@v2 with: path: src - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 with: install: true - name: Set up docker layer caching uses: actions/cache@v2 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Set up python uses: actions/setup-python@v2 - name: Build the packages # see https://github.com/docker/build-push-action/issues/252 # for the cache magic here run: | ./src/scripts-dev/build_debian_packages \ --docker-build-arg=--cache-from=type=local,src=/tmp/.buildx-cache \ --docker-build-arg=--cache-to=type=local,mode=max,dest=/tmp/.buildx-cache-new \ --docker-build-arg=--progress=plain \ --docker-build-arg=--load \ "${{ matrix.distro }}" rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache - name: Upload debs as artifacts uses: actions/upload-artifact@v2 with: name: debs path: debs/* build-sdist: name: "Build pypi distribution files" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - run: pip install wheel - run: | python setup.py sdist bdist_wheel - uses: actions/upload-artifact@v2 with: name: python-dist path: dist/* # if it's a tag, create a release and attach the artifacts to it attach-assets: name: "Attach assets to release" if: ${{ !failure() && !cancelled() && startsWith(github.ref, 'refs/tags/') }} needs: - build-debs - build-sdist runs-on: ubuntu-latest steps: - name: Download all workflow run artifacts uses: actions/download-artifact@v2 - name: Build a tarball for the debs run: tar -cvJf debs.tar.xz debs - name: Attach to release uses: softprops/action-gh-release@a929a66f232c1b11af63782948aa2210f981808a # PR#109 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: | python-dist/* debs.tar.xz # if it's not already published, keep the release as a draft. draft: true # mark it as a prerelease if the tag contains 'rc'. prerelease: ${{ contains(github.ref, 'rc') }} synapse-1.53.0/.github/workflows/tests.yml000066400000000000000000000335431420514467300205620ustar00rootroot00000000000000name: Tests on: push: branches: ["develop", "release-*"] pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: lint: runs-on: ubuntu-latest strategy: matrix: toxenv: - "check-sampleconfig" - "check_codestyle" - "check_isort" - "mypy" - "packaging" steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - run: pip install tox - run: tox -e ${{ matrix.toxenv }} lint-crlf: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Check line endings run: scripts-dev/check_line_terminators.sh lint-newsfile: if: ${{ github.base_ref == 'develop' || contains(github.base_ref, 'release-') }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - uses: actions/setup-python@v2 - run: pip install tox - run: scripts-dev/check-newsfragment env: PULL_REQUEST_NUMBER: ${{ github.event.number }} lint-sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: "3.x" - run: pip install wheel - run: python setup.py sdist bdist_wheel - uses: actions/upload-artifact@v2 with: name: Python Distributions path: dist/* # Dummy step to gate other tests on without repeating the whole list linting-done: if: ${{ !cancelled() }} # Run this even if prior jobs were skipped needs: [lint, lint-crlf, lint-newsfile, lint-sdist] runs-on: ubuntu-latest steps: - run: "true" trial: if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail needs: linting-done runs-on: ubuntu-latest strategy: matrix: python-version: ["3.7", "3.8", "3.9", "3.10"] database: ["sqlite"] toxenv: ["py"] include: # Newest Python without optional deps - python-version: "3.10" toxenv: "py-noextras" # Oldest Python with PostgreSQL - python-version: "3.7" database: "postgres" postgres-version: "10" toxenv: "py" # Newest Python with newest PostgreSQL - python-version: "3.10" database: "postgres" postgres-version: "14" toxenv: "py" steps: - uses: actions/checkout@v2 - run: sudo apt-get -qq install xmlsec1 - name: Set up PostgreSQL ${{ matrix.postgres-version }} if: ${{ matrix.postgres-version }} run: | docker run -d -p 5432:5432 \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \ postgres:${{ matrix.postgres-version }} - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - run: pip install tox - name: Await PostgreSQL if: ${{ matrix.postgres-version }} timeout-minutes: 2 run: until pg_isready -h localhost; do sleep 1; done - run: tox -e ${{ matrix.toxenv }} env: TRIAL_FLAGS: "--jobs=2" SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }} SYNAPSE_POSTGRES_HOST: localhost SYNAPSE_POSTGRES_USER: postgres SYNAPSE_POSTGRES_PASSWORD: postgres - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true trial-olddeps: if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail needs: linting-done runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Test with old deps uses: docker://ubuntu:focal # For old python and sqlite with: workdir: /github/workspace entrypoint: .ci/scripts/test_old_deps.sh env: TRIAL_FLAGS: "--jobs=2" - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true trial-pypy: # Very slow; only run if the branch name includes 'pypy' if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() }} needs: linting-done runs-on: ubuntu-latest strategy: matrix: python-version: ["pypy-3.7"] steps: - uses: actions/checkout@v2 - run: sudo apt-get -qq install xmlsec1 libxml2-dev libxslt-dev - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - run: pip install tox - run: tox -e py env: TRIAL_FLAGS: "--jobs=2" - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true sytest: if: ${{ !failure() && !cancelled() }} needs: linting-done runs-on: ubuntu-latest container: image: matrixdotorg/sytest-synapse:${{ matrix.sytest-tag }} volumes: - ${{ github.workspace }}:/src env: SYTEST_BRANCH: ${{ github.head_ref }} POSTGRES: ${{ matrix.postgres && 1}} MULTI_POSTGRES: ${{ (matrix.postgres == 'multi-postgres') && 1}} WORKERS: ${{ matrix.workers && 1 }} REDIS: ${{ matrix.redis && 1 }} BLACKLIST: ${{ matrix.workers && 'synapse-blacklist-with-workers' }} TOP: ${{ github.workspace }} strategy: fail-fast: false matrix: include: - sytest-tag: focal - sytest-tag: focal postgres: postgres - sytest-tag: testing postgres: postgres - sytest-tag: focal postgres: multi-postgres workers: workers - sytest-tag: buster postgres: multi-postgres workers: workers - sytest-tag: buster postgres: postgres workers: workers redis: redis steps: - uses: actions/checkout@v2 - name: Prepare test blacklist run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers - name: Run SyTest run: /bootstrap.sh synapse working-directory: /src - name: Summarise results.tap if: ${{ always() }} run: /sytest/scripts/tap_to_gha.pl /logs/results.tap - name: Upload SyTest logs uses: actions/upload-artifact@v2 if: ${{ always() }} with: name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }}) path: | /logs/results.tap /logs/**/*.log* export-data: if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail needs: [linting-done, portdb] runs-on: ubuntu-latest env: TOP: ${{ github.workspace }} services: postgres: image: postgres ports: - 5432:5432 env: POSTGRES_PASSWORD: "postgres" POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8" options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v2 - run: sudo apt-get -qq install xmlsec1 - uses: actions/setup-python@v2 with: python-version: "3.9" - run: .ci/scripts/test_export_data_command.sh portdb: if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail needs: linting-done runs-on: ubuntu-latest env: TOP: ${{ github.workspace }} strategy: matrix: include: - python-version: "3.7" postgres-version: "10" - python-version: "3.10" postgres-version: "14" services: postgres: image: postgres:${{ matrix.postgres-version }} ports: - 5432:5432 env: POSTGRES_PASSWORD: "postgres" POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8" options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v2 - run: sudo apt-get -qq install xmlsec1 - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - run: .ci/scripts/test_synapse_port_db.sh complement: if: ${{ !failure() && !cancelled() }} needs: linting-done runs-on: ubuntu-latest steps: # The path is set via a file given by $GITHUB_PATH. We need both Go 1.17 and GOPATH on the path to run Complement. # See https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-system-path - name: "Set Go Version" run: | # Add Go 1.17 to the PATH: see https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md#environment-variables-2 echo "$GOROOT_1_17_X64/bin" >> $GITHUB_PATH # Add the Go path to the PATH: We need this so we can call gotestfmt echo "~/go/bin" >> $GITHUB_PATH - name: "Install Complement Dependencies" run: | sudo apt-get update && sudo apt-get install -y libolm3 libolm-dev go get -v github.com/haveyoudebuggedit/gotestfmt/v2/cmd/gotestfmt@latest - name: Run actions/checkout@v2 for synapse uses: actions/checkout@v2 with: path: synapse # Attempt to check out the same branch of Complement as the PR. If it # doesn't exist, fallback to HEAD. - name: Checkout complement shell: bash run: | mkdir -p complement # Attempt to use the version of complement which best matches the current # build. Depending on whether this is a PR or release, etc. we need to # use different fallbacks. # # 1. First check if there's a similarly named branch (GITHUB_HEAD_REF # for pull requests, otherwise GITHUB_REF). # 2. Attempt to use the base branch, e.g. when merging into release-vX.Y # (GITHUB_BASE_REF for pull requests). # 3. Use the default complement branch ("HEAD"). for BRANCH_NAME in "$GITHUB_HEAD_REF" "$GITHUB_BASE_REF" "${GITHUB_REF#refs/heads/}" "HEAD"; do # Skip empty branch names and merge commits. if [[ -z "$BRANCH_NAME" || $BRANCH_NAME =~ ^refs/pull/.* ]]; then continue fi (wget -O - "https://github.com/matrix-org/complement/archive/$BRANCH_NAME.tar.gz" | tar -xz --strip-components=1 -C complement) && break done # Build initial Synapse image - run: docker build -t matrixdotorg/synapse:latest -f docker/Dockerfile . working-directory: synapse env: DOCKER_BUILDKIT: 1 # Build a ready-to-run Synapse image based on the initial image above. # This new image includes a config file, keys for signing and TLS, and # other settings to make it suitable for testing under Complement. - run: docker build -t complement-synapse -f Synapse.Dockerfile . working-directory: complement/dockerfiles # Run Complement - run: | set -o pipefail go test -v -json -p 1 -tags synapse_blacklist,msc2403 ./tests/... 2>&1 | gotestfmt shell: bash name: Run Complement Tests env: COMPLEMENT_BASE_IMAGE: complement-synapse:latest working-directory: complement # a job which marks all the other jobs as complete, thus allowing PRs to be merged. tests-done: if: ${{ always() }} needs: - lint - lint-crlf - lint-newsfile - lint-sdist - trial - trial-olddeps - sytest - portdb - complement runs-on: ubuntu-latest steps: - name: Set build result env: NEEDS_CONTEXT: ${{ toJSON(needs) }} # the `jq` incantation dumps out a series of " " lines. # we set it to an intermediate variable to avoid a pipe, which makes it # hard to set $rc. run: | rc=0 results=$(jq -r 'to_entries[] | [.key,.value.result] | join(" ")' <<< $NEEDS_CONTEXT) while read job result ; do # The newsfile lint may be skipped on non PR builds if [ $result == "skipped" ] && [ $job == "lint-newsfile" ]; then continue fi if [ "$result" != "success" ]; then echo "::set-failed ::Job $job returned $result" rc=1 fi done <<< $results exit $rc synapse-1.53.0/.github/workflows/twisted_trunk.yml000066400000000000000000000046651420514467300223310ustar00rootroot00000000000000name: Twisted Trunk on: schedule: - cron: 0 8 * * * workflow_dispatch: jobs: mypy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - run: .ci/patch_for_twisted_trunk.sh - run: pip install tox - run: tox -e mypy trial: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: sudo apt-get -qq install xmlsec1 - uses: actions/setup-python@v2 with: python-version: 3.7 - run: .ci/patch_for_twisted_trunk.sh - run: pip install tox - run: tox -e py env: TRIAL_FLAGS: "--jobs=2" - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true sytest: runs-on: ubuntu-latest container: image: matrixdotorg/sytest-synapse:buster volumes: - ${{ github.workspace }}:/src steps: - uses: actions/checkout@v2 - name: Patch dependencies run: .ci/patch_for_twisted_trunk.sh working-directory: /src - name: Run SyTest run: /bootstrap.sh synapse working-directory: /src - name: Summarise results.tap if: ${{ always() }} run: /sytest/scripts/tap_to_gha.pl /logs/results.tap - name: Upload SyTest logs uses: actions/upload-artifact@v2 if: ${{ always() }} with: name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }}) path: | /logs/results.tap /logs/**/*.log* # open an issue if the build fails, so we know about it. open-issue: if: failure() needs: - mypy - trial - sytest runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: JasonEtco/create-an-issue@5d9504915f79f9cc6d791934b8ef34f2353dd74d # v2.5.0, 2020-12-06 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: update_existing: true filename: .ci/twisted_trunk_build_failed_issue_template.md synapse-1.53.0/.gitignore000066400000000000000000000011211420514467300152530ustar00rootroot00000000000000# filename patterns *~ .*.swp .#* *.deb *.egg *.egg-info *.lock *.py[cod] *.snap *.tac _trial_temp/ _trial_temp*/ /out .DS_Store __pycache__/ # stuff that is likely to exist when you run a server locally /*.db /*.log /*.log.* /*.log.config /*.pid /.python-version /*.signing.key /env/ /.venv*/ /homeserver*.yaml /logs /media_store/ /uploads # IDEs /.idea/ /.ropeproject/ /.vscode/ # build products !/.coveragerc /.coverage* /.mypy_cache/ /.tox /.tox-pg-container /build/ /coverage.* /dist/ /docs/build/ /htmlcov /pip-wheel-metadata/ # docs book/ # complement /complement-* /master.tar.gz synapse-1.53.0/AUTHORS.rst000066400000000000000000000031131420514467300151450ustar00rootroot00000000000000The following is an incomplete list of people outside the core team who have contributed to Synapse. It is no longer maintained: more recent contributions are listed in the `changelog `_. ---- Turned to Dust * ArchLinux installation instructions Brabo * Installation instruction fixes Ivan Shapovalov * contrib/systemd: a sample systemd unit file and a logger configuration Eric Myhre * Fix bug where ``media_store_path`` config option was ignored by v0 content repository API. Muthu Subramanian * Add SAML2 support for registration and login. Steven Hammerton * Add CAS support for registration and login. Mads Robin Christensen * CentOS 7 installation instructions. Florent Violleau * Add Raspberry Pi installation instructions and general troubleshooting items Niklas Riekenbrauck * Add JWT support for registration and login Christoph Witzany * Add LDAP support for authentication Pierre Jaury * Docker packaging Serban Constantin * Small bug fix Joseph Weston * Add admin API for querying HS version Benjamin Saunders * Documentation improvements Werner Sembach * Automatically remove a group/community when it is empty synapse-1.53.0/CHANGES.md000066400000000000000000026160371420514467300147010ustar00rootroot00000000000000Synapse 1.53.0 (2022-02-22) =========================== No significant changes. Synapse 1.53.0rc1 (2022-02-15) ============================== Features -------- - Add experimental support for sending to-device messages to application services, as specified by [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409). ([\#11215](https://github.com/matrix-org/synapse/issues/11215), [\#11966](https://github.com/matrix-org/synapse/issues/11966)) - Remove account data (including client config, push rules and ignored users) upon user deactivation. ([\#11655](https://github.com/matrix-org/synapse/issues/11655)) - Experimental support for [MSC3666](https://github.com/matrix-org/matrix-doc/pull/3666): including bundled aggregations in server side search results. ([\#11837](https://github.com/matrix-org/synapse/issues/11837)) - Enable cache time-based expiry by default. The `expiry_time` config flag has been superseded by `expire_caches` and `cache_entry_ttl`. ([\#11849](https://github.com/matrix-org/synapse/issues/11849)) - Add a callback to allow modules to allow or forbid a 3PID (email address, phone number) from being associated to a local account. ([\#11854](https://github.com/matrix-org/synapse/issues/11854)) - Stabilize support and remove unstable endpoints for [MSC3231](https://github.com/matrix-org/matrix-doc/pull/3231). Clients must switch to the stable identifier and endpoint. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#stablisation-of-msc3231) for more information. ([\#11867](https://github.com/matrix-org/synapse/issues/11867)) - Allow modules to retrieve the current instance's server name and worker name. ([\#11868](https://github.com/matrix-org/synapse/issues/11868)) - Use a dedicated configurable rate limiter for 3PID invites. ([\#11892](https://github.com/matrix-org/synapse/issues/11892)) - Support the stable API endpoint for [MSC3283](https://github.com/matrix-org/matrix-doc/pull/3283): new settings in `/capabilities` endpoint. ([\#11933](https://github.com/matrix-org/synapse/issues/11933), [\#11989](https://github.com/matrix-org/synapse/issues/11989)) - Support the `dir` parameter on the `/relations` endpoint, per [MSC3715](https://github.com/matrix-org/matrix-doc/pull/3715). ([\#11941](https://github.com/matrix-org/synapse/issues/11941)) - Experimental implementation of [MSC3706](https://github.com/matrix-org/matrix-doc/pull/3706): extensions to `/send_join` to support reduced response size. ([\#11967](https://github.com/matrix-org/synapse/issues/11967)) Bugfixes -------- - Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical messages backfilling in random order on remote homeservers. ([\#11114](https://github.com/matrix-org/synapse/issues/11114)) - Fix a bug introduced in Synapse 1.51.0 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for `synapse.8631_debug`. ([\#11890](https://github.com/matrix-org/synapse/issues/11890)) - Fix a long-standing bug where some unknown endpoints would return HTML error pages instead of JSON `M_UNRECOGNIZED` errors. ([\#11930](https://github.com/matrix-org/synapse/issues/11930)) - Implement an allow list of content types for which we will attempt to preview a URL. This prevents Synapse from making useless longer-lived connections to streaming media servers. ([\#11936](https://github.com/matrix-org/synapse/issues/11936)) - Fix a long-standing bug where pagination tokens from `/sync` and `/messages` could not be provided to the `/relations` API. ([\#11952](https://github.com/matrix-org/synapse/issues/11952)) - Require that modules register their callbacks using keyword arguments. ([\#11975](https://github.com/matrix-org/synapse/issues/11975)) - Fix a long-standing bug where `M_WRONG_ROOM_KEYS_VERSION` errors would not include the specced `current_version` field. ([\#11988](https://github.com/matrix-org/synapse/issues/11988)) Improved Documentation ---------------------- - Fix typo in User Admin API: unpind -> unbind. ([\#11859](https://github.com/matrix-org/synapse/issues/11859)) - Document images returned by the User List Media Admin API can include those generated by URL previews. ([\#11862](https://github.com/matrix-org/synapse/issues/11862)) - Remove outdated MSC1711 FAQ document. ([\#11907](https://github.com/matrix-org/synapse/issues/11907)) - Correct the structured logging configuration example. Contributed by Brad Jones. ([\#11946](https://github.com/matrix-org/synapse/issues/11946)) - Add information on the Synapse release cycle. ([\#11954](https://github.com/matrix-org/synapse/issues/11954)) - Fix broken link in the README to the admin API for password reset. ([\#11955](https://github.com/matrix-org/synapse/issues/11955)) Deprecations and Removals ------------------------- - Drop support for `webclient` listeners and configuring `web_client_location` to a non-HTTP(S) URL. Deprecated configurations are a configuration error. ([\#11895](https://github.com/matrix-org/synapse/issues/11895)) - Remove deprecated `user_may_create_room_with_invites` spam checker callback. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html#removal-of-user_may_create_room_with_invites) for more information. ([\#11950](https://github.com/matrix-org/synapse/issues/11950)) - No longer build `.deb` packages for Ubuntu 21.04 Hirsute Hippo, which has now EOLed. ([\#11961](https://github.com/matrix-org/synapse/issues/11961)) Internal Changes ---------------- - Enhance user registration test helpers to make them more useful for tests involving application services and devices. ([\#11615](https://github.com/matrix-org/synapse/issues/11615), [\#11616](https://github.com/matrix-org/synapse/issues/11616)) - Improve performance when fetching bundled aggregations for multiple events. ([\#11660](https://github.com/matrix-org/synapse/issues/11660), [\#11752](https://github.com/matrix-org/synapse/issues/11752)) - Fix type errors introduced by new annotations in the Prometheus Client library. ([\#11832](https://github.com/matrix-org/synapse/issues/11832)) - Add missing type hints to replication code. ([\#11856](https://github.com/matrix-org/synapse/issues/11856), [\#11938](https://github.com/matrix-org/synapse/issues/11938)) - Ensure that `opentracing` scopes are activated and closed at the right time. ([\#11869](https://github.com/matrix-org/synapse/issues/11869)) - Improve opentracing for incoming federation requests. ([\#11870](https://github.com/matrix-org/synapse/issues/11870)) - Improve internal docstrings in `synapse.util.caches`. ([\#11876](https://github.com/matrix-org/synapse/issues/11876)) - Do not needlessly clear the `get_users_in_room` and `get_users_in_room_with_profiles` caches when any room state changes. ([\#11878](https://github.com/matrix-org/synapse/issues/11878)) - Convert `ApplicationServiceTestCase` to use `simple_async_mock`. ([\#11880](https://github.com/matrix-org/synapse/issues/11880)) - Remove experimental changes to the default push rules which were introduced in Synapse 1.19.0 but never enabled. ([\#11884](https://github.com/matrix-org/synapse/issues/11884)) - Disable coverage calculation for olddeps build. ([\#11888](https://github.com/matrix-org/synapse/issues/11888)) - Preparation to support sending device list updates to application services. ([\#11905](https://github.com/matrix-org/synapse/issues/11905)) - Add a test that checks users receive their own device list updates down `/sync`. ([\#11909](https://github.com/matrix-org/synapse/issues/11909)) - Run Complement tests sequentially. ([\#11910](https://github.com/matrix-org/synapse/issues/11910)) - Various refactors to the application service notifier code. ([\#11911](https://github.com/matrix-org/synapse/issues/11911), [\#11912](https://github.com/matrix-org/synapse/issues/11912)) - Tests: replace mocked `Authenticator` with the real thing. ([\#11913](https://github.com/matrix-org/synapse/issues/11913)) - Various refactors to the typing notifications code. ([\#11914](https://github.com/matrix-org/synapse/issues/11914)) - Use the proper type for the `Content-Length` header in the `UploadResource`. ([\#11927](https://github.com/matrix-org/synapse/issues/11927)) - Remove an unnecessary ignoring of type hints due to fixes in upstream packages. ([\#11939](https://github.com/matrix-org/synapse/issues/11939)) - Add missing type hints. ([\#11953](https://github.com/matrix-org/synapse/issues/11953)) - Fix an import cycle in `synapse.event_auth`. ([\#11965](https://github.com/matrix-org/synapse/issues/11965)) - Unpin `frozendict` but exclude the known bad version 2.1.2. ([\#11969](https://github.com/matrix-org/synapse/issues/11969)) - Prepare for rename of default Complement branch. ([\#11971](https://github.com/matrix-org/synapse/issues/11971)) - Fetch Synapse's version using a helper from `matrix-common`. ([\#11979](https://github.com/matrix-org/synapse/issues/11979)) Synapse 1.52.0 (2022-02-08) =========================== No significant changes since 1.52.0rc1. Note that [Twisted 22.1.0](https://github.com/twisted/twisted/releases/tag/twisted-22.1.0) has recently been released, which fixes a [security issue](https://github.com/twisted/twisted/security/advisories/GHSA-92x2-jw7w-xvvx) within the Twisted library. We do not believe Synapse is affected by this vulnerability, though we advise server administrators who installed Synapse via pip to upgrade Twisted with `pip install --upgrade Twisted` as a matter of good practice. The Docker image `matrixdotorg/synapse` and the Debian packages from `packages.matrix.org` are using the updated library. Synapse 1.52.0rc1 (2022-02-01) ============================== Features -------- - Remove account data (including client config, push rules and ignored users) upon user deactivation. ([\#11621](https://github.com/matrix-org/synapse/issues/11621), [\#11788](https://github.com/matrix-org/synapse/issues/11788), [\#11789](https://github.com/matrix-org/synapse/issues/11789)) - Add an admin API to reset connection timeouts for remote server. ([\#11639](https://github.com/matrix-org/synapse/issues/11639)) - Add an admin API to get a list of rooms that federate with a given remote homeserver. ([\#11658](https://github.com/matrix-org/synapse/issues/11658)) - Add a config flag to inhibit `M_USER_IN_USE` during registration. ([\#11743](https://github.com/matrix-org/synapse/issues/11743)) - Add a module callback to set username at registration. ([\#11790](https://github.com/matrix-org/synapse/issues/11790)) - Allow configuring a maximum file size as well as a list of allowed content types for avatars. ([\#11846](https://github.com/matrix-org/synapse/issues/11846)) Bugfixes -------- - Include the bundled aggregations in the `/sync` response, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11612](https://github.com/matrix-org/synapse/issues/11612)) - Fix a long-standing bug when previewing Reddit URLs which do not contain an image. ([\#11767](https://github.com/matrix-org/synapse/issues/11767)) - Fix a long-standing bug that media streams could cause long-lived connections when generating URL previews. ([\#11784](https://github.com/matrix-org/synapse/issues/11784)) - Include a `prev_content` field in state events sent to Application Services. Contributed by @totallynotvaishnav. ([\#11798](https://github.com/matrix-org/synapse/issues/11798)) - Fix a bug introduced in Synapse 0.33.3 causing requests to sometimes log strings such as `HTTPStatus.OK` instead of integer status codes. ([\#11827](https://github.com/matrix-org/synapse/issues/11827)) Improved Documentation ---------------------- - Update pypi installation docs to indicate that we now support Python 3.10. ([\#11820](https://github.com/matrix-org/synapse/issues/11820)) - Add missing steps to the contribution submission process in the documentation. Contributed by @sequentialread. ([\#11821](https://github.com/matrix-org/synapse/issues/11821)) - Remove not needed old table of contents in documentation. ([\#11860](https://github.com/matrix-org/synapse/issues/11860)) - Consolidate the `access_token` information at the top of each relevant page in the Admin API documentation. ([\#11861](https://github.com/matrix-org/synapse/issues/11861)) Deprecations and Removals ------------------------- - Drop support for Python 3.6, which is EOL. ([\#11683](https://github.com/matrix-org/synapse/issues/11683)) - Remove the `experimental_msc1849_support_enabled` flag as the features are now stable. ([\#11843](https://github.com/matrix-org/synapse/issues/11843)) Internal Changes ---------------- - Preparation for database schema simplifications: add `state_key` and `rejection_reason` columns to `events` table. ([\#11792](https://github.com/matrix-org/synapse/issues/11792)) - Add `FrozenEvent.get_state_key` and use it in a couple of places. ([\#11793](https://github.com/matrix-org/synapse/issues/11793)) - Preparation for database schema simplifications: stop reading from `event_reference_hashes`. ([\#11794](https://github.com/matrix-org/synapse/issues/11794)) - Drop unused table `public_room_list_stream`. ([\#11795](https://github.com/matrix-org/synapse/issues/11795)) - Preparation for reducing Postgres serialization errors: allow setting transaction isolation level. Contributed by Nick @ Beeper. ([\#11799](https://github.com/matrix-org/synapse/issues/11799), [\#11847](https://github.com/matrix-org/synapse/issues/11847)) - Docker: skip the initial amd64-only build and go straight to multiarch. ([\#11810](https://github.com/matrix-org/synapse/issues/11810)) - Run Complement on the Github Actions VM and not inside a Docker container. ([\#11811](https://github.com/matrix-org/synapse/issues/11811)) - Log module names at startup. ([\#11813](https://github.com/matrix-org/synapse/issues/11813)) - Improve type safety of bundled aggregations code. ([\#11815](https://github.com/matrix-org/synapse/issues/11815)) - Correct a type annotation in the event validation logic. ([\#11817](https://github.com/matrix-org/synapse/issues/11817), [\#11830](https://github.com/matrix-org/synapse/issues/11830)) - Minor updates and documentation for database schema delta files. ([\#11823](https://github.com/matrix-org/synapse/issues/11823)) - Workaround a type annotation problem in `prometheus_client` 0.13.0. ([\#11834](https://github.com/matrix-org/synapse/issues/11834)) - Minor performance improvement in room state lookup. ([\#11836](https://github.com/matrix-org/synapse/issues/11836)) - Fix some indentation inconsistencies in the sample config. ([\#11838](https://github.com/matrix-org/synapse/issues/11838)) - Add type hints to `tests/rest/admin`. ([\#11851](https://github.com/matrix-org/synapse/issues/11851)) Synapse 1.51.0 (2022-01-25) =========================== No significant changes since 1.51.0rc2. Synapse 1.51.0 deprecates `webclient` listeners and non-HTTP(S) `web_client_location`s. Support for these will be removed in Synapse 1.53.0, at which point Synapse will not be capable of directly serving a web client for Matrix. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1510). Synapse 1.51.0rc2 (2022-01-24) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.40.0 that caused Synapse to fail to process incoming federation traffic after handling a large amount of events in a v1 room. ([\#11806](https://github.com/matrix-org/synapse/issues/11806)) Synapse 1.50.2 (2022-01-24) =========================== This release includes the same bugfix as Synapse 1.51.0rc2. Bugfixes -------- - Fix a bug introduced in Synapse 1.40.0 that caused Synapse to fail to process incoming federation traffic after handling a large amount of events in a v1 room. ([\#11806](https://github.com/matrix-org/synapse/issues/11806)) Synapse 1.51.0rc1 (2022-01-21) ============================== Features -------- - Add `track_puppeted_user_ips` config flag to record client IP addresses against puppeted users, and include the puppeted users in monthly active user counts. ([\#11561](https://github.com/matrix-org/synapse/issues/11561), [\#11749](https://github.com/matrix-org/synapse/issues/11749), [\#11757](https://github.com/matrix-org/synapse/issues/11757)) - Include whether the requesting user has participated in a thread when generating a summary for [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11577](https://github.com/matrix-org/synapse/issues/11577)) - Return an `M_FORBIDDEN` error code instead of `M_UNKNOWN` when a spam checker module prevents a user from creating a room. ([\#11672](https://github.com/matrix-org/synapse/issues/11672)) - Add a flag to the `synapse_review_recent_signups` script to ignore and filter appservice users. ([\#11675](https://github.com/matrix-org/synapse/issues/11675), [\#11770](https://github.com/matrix-org/synapse/issues/11770)) Bugfixes -------- - Fix a long-standing issue which could cause Synapse to incorrectly accept data in the unsigned field of events received over federation. ([\#11530](https://github.com/matrix-org/synapse/issues/11530)) - Fix a long-standing bug where Synapse wouldn't cache a response indicating that a remote user has no devices. ([\#11587](https://github.com/matrix-org/synapse/issues/11587)) - Fix an error that occurs whilst trying to get the federation status of a destination server that was working normally. This admin API was newly introduced in Synapse v1.49.0. ([\#11593](https://github.com/matrix-org/synapse/issues/11593)) - Fix bundled aggregations not being included in the `/sync` response, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11612](https://github.com/matrix-org/synapse/issues/11612), [\#11659](https://github.com/matrix-org/synapse/issues/11659), [\#11791](https://github.com/matrix-org/synapse/issues/11791)) - Fix the `/_matrix/client/v1/room/{roomId}/hierarchy` endpoint returning incorrect fields which have been present since Synapse 1.49.0. ([\#11667](https://github.com/matrix-org/synapse/issues/11667)) - Fix preview of some GIF URLs (like tenor.com). Contributed by Philippe Daouadi. ([\#11669](https://github.com/matrix-org/synapse/issues/11669)) - Fix a bug where only the first 50 rooms from a space were returned from the `/hierarchy` API. This has existed since the introduction of the API in Synapse v1.41.0. ([\#11695](https://github.com/matrix-org/synapse/issues/11695)) - Fix a bug introduced in Synapse v1.18.0 where password reset and address validation emails would not be sent if their subject was configured to use the 'app' template variable. Contributed by @br4nnigan. ([\#11710](https://github.com/matrix-org/synapse/issues/11710), [\#11745](https://github.com/matrix-org/synapse/issues/11745)) - Make the 'List Rooms' Admin API sort stable. Contributed by Daniël Sonck. ([\#11737](https://github.com/matrix-org/synapse/issues/11737)) - Fix a long-standing bug where space hierarchy over federation would only work correctly some of the time. ([\#11775](https://github.com/matrix-org/synapse/issues/11775)) - Fix a bug introduced in Synapse v1.46.0 that prevented `on_logged_out` module callbacks from being correctly awaited by Synapse. ([\#11786](https://github.com/matrix-org/synapse/issues/11786)) Improved Documentation ---------------------- - Warn against using a Let's Encrypt certificate for TLS/DTLS TURN server client connections, and suggest using ZeroSSL certificate instead. This works around client-side connectivity errors caused by WebRTC libraries that reject Let's Encrypt certificates. Contibuted by @AndrewFerr. ([\#11686](https://github.com/matrix-org/synapse/issues/11686)) - Document the new `SYNAPSE_TEST_PERSIST_SQLITE_DB` environment variable in the contributing guide. ([\#11715](https://github.com/matrix-org/synapse/issues/11715)) - Document that the minimum supported PostgreSQL version is now 10. ([\#11725](https://github.com/matrix-org/synapse/issues/11725)) - Fix typo in demo docs: differnt. ([\#11735](https://github.com/matrix-org/synapse/issues/11735)) - Update room spec URL in config files. ([\#11739](https://github.com/matrix-org/synapse/issues/11739)) - Mention `python3-venv` and `libpq-dev` dependencies in the contribution guide. ([\#11740](https://github.com/matrix-org/synapse/issues/11740)) - Update documentation for configuring login with Facebook. ([\#11755](https://github.com/matrix-org/synapse/issues/11755)) - Update installation instructions to note that Python 3.6 is no longer supported. ([\#11781](https://github.com/matrix-org/synapse/issues/11781)) Deprecations and Removals ------------------------- - Remove the unstable `/send_relation` endpoint. ([\#11682](https://github.com/matrix-org/synapse/issues/11682)) - Remove `python_twisted_reactor_pending_calls` Prometheus metric. ([\#11724](https://github.com/matrix-org/synapse/issues/11724)) - Remove the `password_hash` field from the response dictionaries of the [Users Admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html). ([\#11576](https://github.com/matrix-org/synapse/issues/11576)) - **Deprecate support for `webclient` listeners and non-HTTP(S) `web_client_location` configuration. ([\#11774](https://github.com/matrix-org/synapse/issues/11774), [\#11783](https://github.com/matrix-org/synapse/issues/11783))** Internal Changes ---------------- - Run `pyupgrade --py37-plus --keep-percent-format` on Synapse. ([\#11685](https://github.com/matrix-org/synapse/issues/11685)) - Use buildkit's cache feature to speed up docker builds. ([\#11691](https://github.com/matrix-org/synapse/issues/11691)) - Use `auto_attribs` and native type hints for attrs classes. ([\#11692](https://github.com/matrix-org/synapse/issues/11692), [\#11768](https://github.com/matrix-org/synapse/issues/11768)) - Remove debug logging for #4422, which has been closed since Synapse 0.99. ([\#11693](https://github.com/matrix-org/synapse/issues/11693)) - Remove fallback code for Python 2. ([\#11699](https://github.com/matrix-org/synapse/issues/11699)) - Add a test for [an edge case](https://github.com/matrix-org/synapse/pull/11532#discussion_r769104461) in the `/sync` logic. ([\#11701](https://github.com/matrix-org/synapse/issues/11701)) - Add the option to write SQLite test dbs to disk when running tests. ([\#11702](https://github.com/matrix-org/synapse/issues/11702)) - Improve Complement test output for Gitub Actions. ([\#11707](https://github.com/matrix-org/synapse/issues/11707)) - Fix docstring on `add_account_data_for_user`. ([\#11716](https://github.com/matrix-org/synapse/issues/11716)) - Complement environment variable name change and update `.gitignore`. ([\#11718](https://github.com/matrix-org/synapse/issues/11718)) - Simplify calculation of Prometheus metrics for garbage collection. ([\#11723](https://github.com/matrix-org/synapse/issues/11723)) - Improve accuracy of `python_twisted_reactor_tick_time` Prometheus metric. ([\#11724](https://github.com/matrix-org/synapse/issues/11724), [\#11771](https://github.com/matrix-org/synapse/issues/11771)) - Minor efficiency improvements when inserting many values into the database. ([\#11742](https://github.com/matrix-org/synapse/issues/11742)) - Invite PR authors to give themselves credit in the changelog. ([\#11744](https://github.com/matrix-org/synapse/issues/11744)) - Add optional debugging to investigate [issue 8631](https://github.com/matrix-org/synapse/issues/8631). ([\#11760](https://github.com/matrix-org/synapse/issues/11760)) - Remove `log_function` utility function and its uses. ([\#11761](https://github.com/matrix-org/synapse/issues/11761)) - Add a unit test that checks both `client` and `webclient` resources will function when simultaneously enabled. ([\#11765](https://github.com/matrix-org/synapse/issues/11765)) - Allow overriding complement commit using `COMPLEMENT_REF`. ([\#11766](https://github.com/matrix-org/synapse/issues/11766)) - Add some comments and type annotations for `_update_outliers_txn`. ([\#11776](https://github.com/matrix-org/synapse/issues/11776)) Synapse 1.50.1 (2022-01-18) =========================== This release fixes a bug in Synapse 1.50.0 that could prevent clients from being able to connect to Synapse if the `webclient` resource was enabled. Further details are available in [this issue](https://github.com/matrix-org/synapse/issues/11763). Bugfixes -------- - Fix a bug introduced in Synapse 1.50.0rc1 that could cause Matrix clients to be unable to connect to Synapse instances with the `webclient` resource enabled. ([\#11764](https://github.com/matrix-org/synapse/issues/11764)) Synapse 1.50.0 (2022-01-18) =========================== **This release contains a critical bug that may prevent clients from being able to connect. As such, it is not recommended to upgrade to 1.50.0. Instead, please upgrade straight to to 1.50.1. Further details are available in [this issue](https://github.com/matrix-org/synapse/issues/11763).** Please note that we now only support Python 3.7+ and PostgreSQL 10+ (if applicable), because Python 3.6 and PostgreSQL 9.6 have reached end-of-life. No significant changes since 1.50.0rc2. Synapse 1.50.0rc2 (2022-01-14) ============================== This release candidate fixes a federation-breaking regression introduced in Synapse 1.50.0rc1. Bugfixes -------- - Fix a bug introduced in Synapse v1.0.0 whereby some device list updates would not be sent to remote homeservers if there were too many to send at once. ([\#11729](https://github.com/matrix-org/synapse/issues/11729)) - Fix a bug introduced in Synapse v1.50.0rc1 whereby outbound federation could fail because too many EDUs were produced for device updates. ([\#11730](https://github.com/matrix-org/synapse/issues/11730)) Improved Documentation ---------------------- - Document that now the minimum supported PostgreSQL version is 10. ([\#11725](https://github.com/matrix-org/synapse/issues/11725)) Internal Changes ---------------- - Fix a typechecker problem related to our (ab)use of `nacl.signing.SigningKey`s. ([\#11714](https://github.com/matrix-org/synapse/issues/11714)) Synapse 1.50.0rc1 (2022-01-05) ============================== Features -------- - Allow guests to send state events per [MSC3419](https://github.com/matrix-org/matrix-doc/pull/3419). ([\#11378](https://github.com/matrix-org/synapse/issues/11378)) - Add experimental support for part of [MSC3202](https://github.com/matrix-org/matrix-doc/pull/3202): allowing application services to masquerade as specific devices. ([\#11538](https://github.com/matrix-org/synapse/issues/11538)) - Add admin API to get users' account data. ([\#11664](https://github.com/matrix-org/synapse/issues/11664)) - Include the room topic in the stripped state included with invites and knocking. ([\#11666](https://github.com/matrix-org/synapse/issues/11666)) - Send and handle cross-signing messages using the stable prefix. ([\#10520](https://github.com/matrix-org/synapse/issues/10520)) - Support unprefixed versions of fallback key property names. ([\#11541](https://github.com/matrix-org/synapse/issues/11541)) Bugfixes -------- - Fix a long-standing bug where relations from other rooms could be included in the bundled aggregations of an event. ([\#11516](https://github.com/matrix-org/synapse/issues/11516)) - Fix a long-standing bug which could cause `AssertionError`s to be written to the log when Synapse was restarted after purging events from the database. ([\#11536](https://github.com/matrix-org/synapse/issues/11536), [\#11642](https://github.com/matrix-org/synapse/issues/11642)) - Fix a bug introduced in Synapse 1.17.0 where a pusher created for an email with capital letters would fail to be created. ([\#11547](https://github.com/matrix-org/synapse/issues/11547)) - Fix a long-standing bug where responses included bundled aggregations when they should not, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11592](https://github.com/matrix-org/synapse/issues/11592), [\#11623](https://github.com/matrix-org/synapse/issues/11623)) - Fix a long-standing bug that some unknown endpoints would return HTML error pages instead of JSON `M_UNRECOGNIZED` errors. ([\#11602](https://github.com/matrix-org/synapse/issues/11602)) - Fix a bug introduced in Synapse 1.19.3 which could sometimes cause `AssertionError`s when backfilling rooms over federation. ([\#11632](https://github.com/matrix-org/synapse/issues/11632)) Improved Documentation ---------------------- - Update Synapse install command for FreeBSD as the package is now prefixed with `py38`. Contributed by @itchychips. ([\#11267](https://github.com/matrix-org/synapse/issues/11267)) - Document the usage of refresh tokens. ([\#11427](https://github.com/matrix-org/synapse/issues/11427)) - Add details for how to configure a TURN server when behind a NAT. Contibuted by @AndrewFerr. ([\#11553](https://github.com/matrix-org/synapse/issues/11553)) - Add references for using Postgres to the Docker documentation. ([\#11640](https://github.com/matrix-org/synapse/issues/11640)) - Fix the documentation link in newly-generated configuration files. ([\#11678](https://github.com/matrix-org/synapse/issues/11678)) - Correct the documentation for `nginx` to use a case-sensitive url pattern. Fixes an error introduced in v1.21.0. ([\#11680](https://github.com/matrix-org/synapse/issues/11680)) - Clarify SSO mapping provider documentation by writing `def` or `async def` before the names of methods, as appropriate. ([\#11681](https://github.com/matrix-org/synapse/issues/11681)) Deprecations and Removals ------------------------- - Replace `mock` package by its standard library version. ([\#11588](https://github.com/matrix-org/synapse/issues/11588)) - Drop support for Python 3.6 and Ubuntu 18.04. ([\#11633](https://github.com/matrix-org/synapse/issues/11633)) Internal Changes ---------------- - Allow specific, experimental events to be created without `prev_events`. Used by [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716). ([\#11243](https://github.com/matrix-org/synapse/issues/11243)) - A test helper (`wait_for_background_updates`) no longer depends on classes defining a `store` property. ([\#11331](https://github.com/matrix-org/synapse/issues/11331)) - Add type hints to `synapse.appservice`. ([\#11360](https://github.com/matrix-org/synapse/issues/11360)) - Add missing type hints to `synapse.config` module. ([\#11480](https://github.com/matrix-org/synapse/issues/11480)) - Add test to ensure we share the same `state_group` across the whole historical batch when using the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint. ([\#11487](https://github.com/matrix-org/synapse/issues/11487)) - Refactor `tests.util.setup_test_homeserver` and `tests.server.setup_test_homeserver`. ([\#11503](https://github.com/matrix-org/synapse/issues/11503)) - Move `glob_to_regex` and `re_word_boundary` to `matrix-python-common`. ([\#11505](https://github.com/matrix-org/synapse/issues/11505), [\#11687](https://github.com/matrix-org/synapse/issues/11687)) - Use `HTTPStatus` constants in place of literals in `tests.rest.client.test_auth`. ([\#11520](https://github.com/matrix-org/synapse/issues/11520)) - Add a receipt types constant for `m.read`. ([\#11531](https://github.com/matrix-org/synapse/issues/11531)) - Clean up `synapse.rest.admin`. ([\#11535](https://github.com/matrix-org/synapse/issues/11535)) - Add missing `errcode` to `parse_string` and `parse_boolean`. ([\#11542](https://github.com/matrix-org/synapse/issues/11542)) - Use `HTTPStatus` constants in place of literals in `synapse.http`. ([\#11543](https://github.com/matrix-org/synapse/issues/11543)) - Add missing type hints to storage classes. ([\#11546](https://github.com/matrix-org/synapse/issues/11546), [\#11549](https://github.com/matrix-org/synapse/issues/11549), [\#11551](https://github.com/matrix-org/synapse/issues/11551), [\#11555](https://github.com/matrix-org/synapse/issues/11555), [\#11575](https://github.com/matrix-org/synapse/issues/11575), [\#11589](https://github.com/matrix-org/synapse/issues/11589), [\#11594](https://github.com/matrix-org/synapse/issues/11594), [\#11652](https://github.com/matrix-org/synapse/issues/11652), [\#11653](https://github.com/matrix-org/synapse/issues/11653), [\#11654](https://github.com/matrix-org/synapse/issues/11654), [\#11657](https://github.com/matrix-org/synapse/issues/11657)) - Fix an inaccurate and misleading comment in the `/sync` code. ([\#11550](https://github.com/matrix-org/synapse/issues/11550)) - Add missing type hints to `synapse.logging.context`. ([\#11556](https://github.com/matrix-org/synapse/issues/11556)) - Stop populating unused database column `state_events.prev_state`. ([\#11558](https://github.com/matrix-org/synapse/issues/11558)) - Minor efficiency improvements in event persistence. ([\#11560](https://github.com/matrix-org/synapse/issues/11560)) - Add some safety checks that storage functions are used correctly. ([\#11564](https://github.com/matrix-org/synapse/issues/11564), [\#11580](https://github.com/matrix-org/synapse/issues/11580)) - Make `get_device` return `None` if the device doesn't exist rather than raising an exception. ([\#11565](https://github.com/matrix-org/synapse/issues/11565)) - Split the HTML parsing code from the URL preview resource code. ([\#11566](https://github.com/matrix-org/synapse/issues/11566)) - Remove redundant `COALESCE()`s around `COUNT()`s in database queries. ([\#11570](https://github.com/matrix-org/synapse/issues/11570)) - Add missing type hints to `synapse.http`. ([\#11571](https://github.com/matrix-org/synapse/issues/11571)) - Add [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) and [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) to `/versions` -> `unstable_features` to detect server support. ([\#11582](https://github.com/matrix-org/synapse/issues/11582)) - Add type hints to `synapse/tests/rest/admin`. ([\#11590](https://github.com/matrix-org/synapse/issues/11590)) - Drop end-of-life Python 3.6 and Postgres 9.6 from CI. ([\#11595](https://github.com/matrix-org/synapse/issues/11595)) - Update black version and run it on all the files. ([\#11596](https://github.com/matrix-org/synapse/issues/11596)) - Add opentracing type stubs and fix associated mypy errors. ([\#11603](https://github.com/matrix-org/synapse/issues/11603), [\#11622](https://github.com/matrix-org/synapse/issues/11622)) - Improve OpenTracing support for requests which use a `ResponseCache`. ([\#11607](https://github.com/matrix-org/synapse/issues/11607)) - Improve OpenTracing support for incoming HTTP requests. ([\#11618](https://github.com/matrix-org/synapse/issues/11618)) - A number of improvements to opentracing support. ([\#11619](https://github.com/matrix-org/synapse/issues/11619)) - Refactor the way that the `outlier` flag is set on events received over federation. ([\#11634](https://github.com/matrix-org/synapse/issues/11634)) - Improve the error messages from `get_create_event_for_room`. ([\#11638](https://github.com/matrix-org/synapse/issues/11638)) - Remove redundant `get_current_events_token` method. ([\#11643](https://github.com/matrix-org/synapse/issues/11643)) - Convert `namedtuples` to `attrs`. ([\#11665](https://github.com/matrix-org/synapse/issues/11665), [\#11574](https://github.com/matrix-org/synapse/issues/11574)) - Update the `/capabilities` response to include whether support for [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440) is available. ([\#11690](https://github.com/matrix-org/synapse/issues/11690)) - Send the `Accept` header in HTTP requests made using `SimpleHttpClient.get_json`. ([\#11677](https://github.com/matrix-org/synapse/issues/11677)) - Work around Mjolnir compatibility issue by adding an import for `glob_to_regex` in `synapse.util`, where it moved from. ([\#11696](https://github.com/matrix-org/synapse/issues/11696)) Synapse 1.49.2 (2021-12-21) =========================== This release fixes a regression introduced in Synapse 1.49.0 which could cause `/sync` requests to take significantly longer. This would particularly affect "initial" syncs for users participating in a large number of rooms, and in extreme cases, could make it impossible for such users to log in on a new client. **Note:** in line with our [deprecation policy](https://matrix-org.github.io/synapse/latest/deprecation_policy.html) for platform dependencies, this will be the last release to support Python 3.6 and PostgreSQL 9.6, both of which have now reached upstream end-of-life. Synapse will require Python 3.7+ and PostgreSQL 10+. **Note:** We will also stop producing packages for Ubuntu 18.04 (Bionic Beaver) after this release, as it uses Python 3.6. Bugfixes -------- - Fix a performance regression in `/sync` handling, introduced in 1.49.0. ([\#11583](https://github.com/matrix-org/synapse/issues/11583)) Internal Changes ---------------- - Work around a build problem on Debian Buster. ([\#11625](https://github.com/matrix-org/synapse/issues/11625)) Synapse 1.49.1 (2021-12-21) =========================== Not released due to problems building the debian packages. Synapse 1.49.0 (2021-12-14) =========================== No significant changes since version 1.49.0rc1. Support for Ubuntu 21.04 ends next month on the 20th of January --------------------------------------------------------------- For users of Ubuntu 21.04 (Hirsute Hippo), please be aware that [upstream support for this version of Ubuntu will end next month][Ubuntu2104EOL]. We will stop producing packages for Ubuntu 21.04 after upstream support ends. [Ubuntu2104EOL]: https://lists.ubuntu.com/archives/ubuntu-announce/2021-December/000275.html The wiki has been migrated to the documentation website ------------------------------------------------------- We've decided to move the existing, somewhat stagnant pages from the GitHub wiki to the [documentation website](https://matrix-org.github.io/synapse/latest/). This was done for two reasons. The first was to ensure that changes are checked by multiple authors before being committed (everyone makes mistakes!) and the second was visibility of the documentation. Not everyone knows that Synapse has some very useful information hidden away in its GitHub wiki pages. Bringing them to the documentation website should help with visibility, as well as keep all Synapse documentation in one, easily-searchable location. Note that contributions to the documentation website happen through [GitHub pull requests](https://github.com/matrix-org/synapse/pulls). Please visit [#synapse-dev:matrix.org](https://matrix.to/#/#synapse-dev:matrix.org) if you need help with the process! Synapse 1.49.0rc1 (2021-12-07) ============================== Features -------- - Add [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) experimental client and federation API endpoints to get the closest event to a given timestamp. ([\#9445](https://github.com/matrix-org/synapse/issues/9445)) - Include bundled relation aggregations during a limited `/sync` request and `/relations` request, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11284](https://github.com/matrix-org/synapse/issues/11284), [\#11478](https://github.com/matrix-org/synapse/issues/11478)) - Add plugin support for controlling database background updates. ([\#11306](https://github.com/matrix-org/synapse/issues/11306), [\#11475](https://github.com/matrix-org/synapse/issues/11475), [\#11479](https://github.com/matrix-org/synapse/issues/11479)) - Support the stable API endpoints for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946): the room `/hierarchy` endpoint. ([\#11329](https://github.com/matrix-org/synapse/issues/11329)) - Add admin API to get some information about federation status with remote servers. ([\#11407](https://github.com/matrix-org/synapse/issues/11407)) - Support expiry of refresh tokens and expiry of the overall session when refresh tokens are in use. ([\#11425](https://github.com/matrix-org/synapse/issues/11425)) - Stabilise support for [MSC2918](https://github.com/matrix-org/matrix-doc/blob/main/proposals/2918-refreshtokens.md#msc2918-refresh-tokens) refresh tokens as they have now been merged into the Matrix specification. ([\#11435](https://github.com/matrix-org/synapse/issues/11435), [\#11522](https://github.com/matrix-org/synapse/issues/11522)) - Update [MSC2918 refresh token](https://github.com/matrix-org/matrix-doc/blob/main/proposals/2918-refreshtokens.md#msc2918-refresh-tokens) support to confirm with the latest revision: accept the `refresh_tokens` parameter in the request body rather than in the URL parameters. ([\#11430](https://github.com/matrix-org/synapse/issues/11430)) - Support configuring the lifetime of non-refreshable access tokens separately to refreshable access tokens. ([\#11445](https://github.com/matrix-org/synapse/issues/11445)) - Expose `synapse_homeserver` and `synapse_worker` commands as entry points to run Synapse's main process and worker processes, respectively. Contributed by @Ma27. ([\#11449](https://github.com/matrix-org/synapse/issues/11449)) - `synctl stop` will now wait for Synapse to exit before returning. ([\#11459](https://github.com/matrix-org/synapse/issues/11459), [\#11490](https://github.com/matrix-org/synapse/issues/11490)) - Extend the "delete room" admin api to work correctly on rooms which have previously been partially deleted. ([\#11523](https://github.com/matrix-org/synapse/issues/11523)) - Add support for the `/_matrix/client/v3/login/sso/redirect/{idpId}` API from Matrix v1.1. This endpoint was overlooked when support for v3 endpoints was added in Synapse 1.48.0rc1. ([\#11451](https://github.com/matrix-org/synapse/issues/11451)) Bugfixes -------- - Fix using [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) batch sending in combination with event persistence workers. Contributed by @tulir at Beeper. ([\#11220](https://github.com/matrix-org/synapse/issues/11220)) - Fix a long-standing bug where all requests that read events from the database could get stuck as a result of losing the database connection, properly this time. Also fix a race condition introduced in the previous insufficient fix in Synapse 1.47.0. ([\#11376](https://github.com/matrix-org/synapse/issues/11376)) - The `/send_join` response now includes the stable `event` field instead of the unstable field from [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083). ([\#11413](https://github.com/matrix-org/synapse/issues/11413)) - Fix a bug introduced in Synapse 1.47.0 where `send_join` could fail due to an outdated `ijson` version. ([\#11439](https://github.com/matrix-org/synapse/issues/11439), [\#11441](https://github.com/matrix-org/synapse/issues/11441), [\#11460](https://github.com/matrix-org/synapse/issues/11460)) - Fix a bug introduced in Synapse 1.36.0 which could cause problems fetching event-signing keys from trusted key servers. ([\#11440](https://github.com/matrix-org/synapse/issues/11440)) - Fix a bug introduced in Synapse 1.47.1 where the media repository would fail to work if the media store path contained any symbolic links. ([\#11446](https://github.com/matrix-org/synapse/issues/11446)) - Fix an `LruCache` corruption bug, introduced in Synapse 1.38.0, that would cause certain requests to fail until the next Synapse restart. ([\#11454](https://github.com/matrix-org/synapse/issues/11454)) - Fix a long-standing bug where invites from ignored users were included in incremental syncs. ([\#11511](https://github.com/matrix-org/synapse/issues/11511)) - Fix a regression in Synapse 1.48.0 where presence workers would not clear their presence updates over replication on shutdown. ([\#11518](https://github.com/matrix-org/synapse/issues/11518)) - Fix a regression in Synapse 1.48.0 where the module API's `looping_background_call` method would spam errors to the logs when given a non-async function. ([\#11524](https://github.com/matrix-org/synapse/issues/11524)) Updates to the Docker image --------------------------- - Update `Dockerfile-workers` to healthcheck all workers in the container. ([\#11429](https://github.com/matrix-org/synapse/issues/11429)) Improved Documentation ---------------------- - Update the media repository documentation. ([\#11415](https://github.com/matrix-org/synapse/issues/11415)) - Update section about backward extremities in the room DAG concepts doc to correct the misconception about backward extremities indicating whether we have fetched an events' `prev_events`. ([\#11469](https://github.com/matrix-org/synapse/issues/11469)) Internal Changes ---------------- - Add `Final` annotation to string constants in `synapse.api.constants` so that they get typed as `Literal`s. ([\#11356](https://github.com/matrix-org/synapse/issues/11356)) - Add a check to ensure that users cannot start the Synapse master process when `worker_app` is set. ([\#11416](https://github.com/matrix-org/synapse/issues/11416)) - Add a note about postgres memory management and hugepages to postgres doc. ([\#11467](https://github.com/matrix-org/synapse/issues/11467)) - Add missing type hints to `synapse.config` module. ([\#11465](https://github.com/matrix-org/synapse/issues/11465)) - Add missing type hints to `synapse.federation`. ([\#11483](https://github.com/matrix-org/synapse/issues/11483)) - Add type annotations to `tests.storage.test_appservice`. ([\#11488](https://github.com/matrix-org/synapse/issues/11488), [\#11492](https://github.com/matrix-org/synapse/issues/11492)) - Add type annotations to some of the configuration surrounding refresh tokens. ([\#11428](https://github.com/matrix-org/synapse/issues/11428)) - Add type hints to `synapse/tests/rest/admin`. ([\#11501](https://github.com/matrix-org/synapse/issues/11501)) - Add type hints to storage classes. ([\#11411](https://github.com/matrix-org/synapse/issues/11411)) - Add wiki pages to documentation website. ([\#11402](https://github.com/matrix-org/synapse/issues/11402)) - Clean up `tests.storage.test_main` to remove use of legacy code. ([\#11493](https://github.com/matrix-org/synapse/issues/11493)) - Clean up `tests.test_visibility` to remove legacy code. ([\#11495](https://github.com/matrix-org/synapse/issues/11495)) - Convert status codes to `HTTPStatus` in `synapse.rest.admin`. ([\#11452](https://github.com/matrix-org/synapse/issues/11452), [\#11455](https://github.com/matrix-org/synapse/issues/11455)) - Extend the `scripts-dev/sign_json` script to support signing events. ([\#11486](https://github.com/matrix-org/synapse/issues/11486)) - Improve internal types in push code. ([\#11409](https://github.com/matrix-org/synapse/issues/11409)) - Improve type annotations in `synapse.module_api`. ([\#11029](https://github.com/matrix-org/synapse/issues/11029)) - Improve type hints for `LruCache`. ([\#11453](https://github.com/matrix-org/synapse/issues/11453)) - Preparation for database schema simplifications: disambiguate queries on `state_key`. ([\#11497](https://github.com/matrix-org/synapse/issues/11497)) - Refactor `backfilled` into specific behavior function arguments (`_persist_events_and_state_updates` and downstream calls). ([\#11417](https://github.com/matrix-org/synapse/issues/11417)) - Refactor `get_version_string` to fix-up types and duplicated code. ([\#11468](https://github.com/matrix-org/synapse/issues/11468)) - Refactor various parts of the `/sync` handler. ([\#11494](https://github.com/matrix-org/synapse/issues/11494), [\#11515](https://github.com/matrix-org/synapse/issues/11515)) - Remove unnecessary `json.dumps` from `tests.rest.admin`. ([\#11461](https://github.com/matrix-org/synapse/issues/11461)) - Save the OpenID Connect session ID on login. ([\#11482](https://github.com/matrix-org/synapse/issues/11482)) - Update and clean up recently ported documentation pages. ([\#11466](https://github.com/matrix-org/synapse/issues/11466)) Synapse 1.48.0 (2021-11-30) =========================== This release removes support for the long-deprecated `trust_identity_server_for_password_resets` configuration flag. This release also fixes some performance issues with some background database updates introduced in Synapse 1.47.0. No significant changes since 1.48.0rc1. Synapse 1.48.0rc1 (2021-11-25) ============================== Features -------- - Experimental support for the thread relation defined in [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11161](https://github.com/matrix-org/synapse/issues/11161)) - Support filtering by relation senders & types per [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11236](https://github.com/matrix-org/synapse/issues/11236)) - Add support for the `/_matrix/client/v3` and `/_matrix/media/v3` APIs from Matrix v1.1. ([\#11318](https://github.com/matrix-org/synapse/issues/11318), [\#11371](https://github.com/matrix-org/synapse/issues/11371)) - Support the stable version of [MSC2778](https://github.com/matrix-org/matrix-doc/pull/2778): the `m.login.application_service` login type. Contributed by @tulir. ([\#11335](https://github.com/matrix-org/synapse/issues/11335)) - Add a new version of delete room admin API `DELETE /_synapse/admin/v2/rooms/` to run it in the background. Contributed by @dklimpel. ([\#11223](https://github.com/matrix-org/synapse/issues/11223)) - Allow the admin [Delete Room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api) to block a room without the need to join it. ([\#11228](https://github.com/matrix-org/synapse/issues/11228)) - Add an admin API to un-shadow-ban a user. ([\#11347](https://github.com/matrix-org/synapse/issues/11347)) - Add an admin API to run background database schema updates. ([\#11352](https://github.com/matrix-org/synapse/issues/11352)) - Add an admin API for blocking a room. ([\#11324](https://github.com/matrix-org/synapse/issues/11324)) - Update the JWT login type to support custom a `sub` claim. ([\#11361](https://github.com/matrix-org/synapse/issues/11361)) - Store and allow querying of arbitrary event relations. ([\#11391](https://github.com/matrix-org/synapse/issues/11391)) Bugfixes -------- - Fix a long-standing bug wherein display names or avatar URLs containing null bytes cause an internal server error when stored in the DB. ([\#11230](https://github.com/matrix-org/synapse/issues/11230)) - Prevent [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical state events from being pushed to an application service via `/transactions`. ([\#11265](https://github.com/matrix-org/synapse/issues/11265)) - Fix a long-standing bug where uploading extremely thin images (e.g. 1000x1) would fail. Contributed by @Neeeflix. ([\#11288](https://github.com/matrix-org/synapse/issues/11288)) - Fix a bug, introduced in Synapse 1.46.0, which caused the `check_3pid_auth` and `on_logged_out` callbacks in legacy password authentication provider modules to not be registered. Modules using the generic module interface were not affected. ([\#11340](https://github.com/matrix-org/synapse/issues/11340)) - Fix a bug introduced in 1.41.0 where space hierarchy responses would be incorrectly reused if multiple users were to make the same request at the same time. ([\#11355](https://github.com/matrix-org/synapse/issues/11355)) - Fix a bug introduced in 1.45.0 where the `read_templates` method of the module API would error. ([\#11377](https://github.com/matrix-org/synapse/issues/11377)) - Fix an issue introduced in 1.47.0 which prevented servers re-joining rooms they had previously left, if their signing keys were replaced. ([\#11379](https://github.com/matrix-org/synapse/issues/11379)) - Fix a bug introduced in 1.13.0 where creating and publishing a room could cause errors if `room_list_publication_rules` is configured. ([\#11392](https://github.com/matrix-org/synapse/issues/11392)) - Improve performance of various background database updates. ([\#11421](https://github.com/matrix-org/synapse/issues/11421), [\#11422](https://github.com/matrix-org/synapse/issues/11422)) Improved Documentation ---------------------- - Suggest users of the Debian packages add configuration to `/etc/matrix-synapse/conf.d/` to prevent, upon upgrade, being asked to choose between their configuration and the maintainer's. ([\#11281](https://github.com/matrix-org/synapse/issues/11281)) - Fix typos in the documentation for the `username_available` admin API. Contributed by Stanislav Motylkov. ([\#11286](https://github.com/matrix-org/synapse/issues/11286)) - Add Single Sign-On, SAML and CAS pages to the documentation. ([\#11298](https://github.com/matrix-org/synapse/issues/11298)) - Change the word 'Home server' as one word 'homeserver' in documentation. ([\#11320](https://github.com/matrix-org/synapse/issues/11320)) - Fix missing quotes for wildcard domains in `federation_certificate_verification_whitelist`. ([\#11381](https://github.com/matrix-org/synapse/issues/11381)) Deprecations and Removals ------------------------- - Remove deprecated `trust_identity_server_for_password_resets` configuration flag. ([\#11333](https://github.com/matrix-org/synapse/issues/11333), [\#11395](https://github.com/matrix-org/synapse/issues/11395)) Internal Changes ---------------- - Add type annotations to `synapse.metrics`. ([\#10847](https://github.com/matrix-org/synapse/issues/10847)) - Split out federated PDU retrieval function into a non-cached version. ([\#11242](https://github.com/matrix-org/synapse/issues/11242)) - Clean up code relating to to-device messages and sending ephemeral events to application services. ([\#11247](https://github.com/matrix-org/synapse/issues/11247)) - Fix a small typo in the error response when a relation type other than 'm.annotation' is passed to `GET /rooms/{room_id}/aggregations/{event_id}`. ([\#11278](https://github.com/matrix-org/synapse/issues/11278)) - Drop unused database tables `room_stats_historical` and `user_stats_historical`. ([\#11280](https://github.com/matrix-org/synapse/issues/11280)) - Require all files in synapse/ and tests/ to pass mypy unless specifically excluded. ([\#11282](https://github.com/matrix-org/synapse/issues/11282), [\#11285](https://github.com/matrix-org/synapse/issues/11285), [\#11359](https://github.com/matrix-org/synapse/issues/11359)) - Add missing type hints to `synapse.app`. ([\#11287](https://github.com/matrix-org/synapse/issues/11287)) - Remove unused parameters on `FederationEventHandler._check_event_auth`. ([\#11292](https://github.com/matrix-org/synapse/issues/11292)) - Add type hints to `synapse._scripts`. ([\#11297](https://github.com/matrix-org/synapse/issues/11297)) - Fix an issue which prevented the `remove_deleted_devices_from_device_inbox` background database schema update from running when updating from a recent Synapse version. ([\#11303](https://github.com/matrix-org/synapse/issues/11303)) - Add type hints to storage classes. ([\#11307](https://github.com/matrix-org/synapse/issues/11307), [\#11310](https://github.com/matrix-org/synapse/issues/11310), [\#11311](https://github.com/matrix-org/synapse/issues/11311), [\#11312](https://github.com/matrix-org/synapse/issues/11312), [\#11313](https://github.com/matrix-org/synapse/issues/11313), [\#11314](https://github.com/matrix-org/synapse/issues/11314), [\#11316](https://github.com/matrix-org/synapse/issues/11316), [\#11322](https://github.com/matrix-org/synapse/issues/11322), [\#11332](https://github.com/matrix-org/synapse/issues/11332), [\#11339](https://github.com/matrix-org/synapse/issues/11339), [\#11342](https://github.com/matrix-org/synapse/issues/11342)) - Add type hints to `synapse.util`. ([\#11321](https://github.com/matrix-org/synapse/issues/11321), [\#11328](https://github.com/matrix-org/synapse/issues/11328)) - Improve type annotations in Synapse's test suite. ([\#11323](https://github.com/matrix-org/synapse/issues/11323), [\#11330](https://github.com/matrix-org/synapse/issues/11330)) - Test that room alias deletion works as intended. ([\#11327](https://github.com/matrix-org/synapse/issues/11327)) - Add type annotations for some methods and properties in the module API. ([\#11341](https://github.com/matrix-org/synapse/issues/11341)) - Fix running `scripts-dev/complement.sh`, which was broken in v1.47.0rc1. ([\#11368](https://github.com/matrix-org/synapse/issues/11368)) - Rename internal functions for token generation to better reflect what they do. ([\#11369](https://github.com/matrix-org/synapse/issues/11369), [\#11370](https://github.com/matrix-org/synapse/issues/11370)) - Add type hints to configuration classes. ([\#11377](https://github.com/matrix-org/synapse/issues/11377)) - Publish a `develop` image to Docker Hub. ([\#11380](https://github.com/matrix-org/synapse/issues/11380)) - Keep fallback key marked as used if it's re-uploaded. ([\#11382](https://github.com/matrix-org/synapse/issues/11382)) - Use `auto_attribs` on the `attrs` class `RefreshTokenLookupResult`. ([\#11386](https://github.com/matrix-org/synapse/issues/11386)) - Rename unstable `access_token_lifetime` configuration option to `refreshable_access_token_lifetime` to make it clear it only concerns refreshable access tokens. ([\#11388](https://github.com/matrix-org/synapse/issues/11388)) - Do not run the broken MSC2716 tests when running `scripts-dev/complement.sh`. ([\#11389](https://github.com/matrix-org/synapse/issues/11389)) - Remove dead code from supporting ACME. ([\#11393](https://github.com/matrix-org/synapse/issues/11393)) - Refactor including the bundled relations when serializing an event. ([\#11408](https://github.com/matrix-org/synapse/issues/11408)) Synapse 1.47.1 (2021-11-23) =========================== This release fixes a security issue in the media store, affecting all prior releases of Synapse. Server administrators are encouraged to update Synapse as soon as possible. We are not aware of these vulnerabilities being exploited in the wild. Server administrators who are unable to update Synapse may use the workarounds described in the linked GitHub Security Advisory below. Security advisory ----------------- The following issue is fixed in 1.47.1. - **[GHSA-3hfw-x7gx-437c](https://github.com/matrix-org/synapse/security/advisories/GHSA-3hfw-x7gx-437c) / [CVE-2021-41281](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41281): Path traversal when downloading remote media.** Synapse instances with the media repository enabled can be tricked into downloading a file from a remote server into an arbitrary directory, potentially outside the media store directory. The last two directories and file name of the path are chosen randomly by Synapse and cannot be controlled by an attacker, which limits the impact. Homeservers with the media repository disabled are unaffected. Homeservers configured with a federation whitelist are also unaffected. Fixed by [91f2bd090](https://github.com/matrix-org/synapse/commit/91f2bd090). Synapse 1.47.0 (2021-11-17) =========================== No significant changes since 1.47.0rc3. Synapse 1.47.0rc3 (2021-11-16) ============================== Bugfixes -------- - Fix a bug introduced in 1.47.0rc1 which caused worker processes to not halt startup in the presence of outstanding database migrations. ([\#11346](https://github.com/matrix-org/synapse/issues/11346)) - Fix a bug introduced in 1.47.0rc1 which prevented the 'remove deleted devices from `device_inbox` column' background process from running when updating from a recent Synapse version. ([\#11303](https://github.com/matrix-org/synapse/issues/11303), [\#11353](https://github.com/matrix-org/synapse/issues/11353)) Synapse 1.47.0rc2 (2021-11-10) ============================== This fixes an issue with publishing the Debian packages for 1.47.0rc1. It is otherwise identical to 1.47.0rc1. Synapse 1.47.0rc1 (2021-11-09) ============================== Deprecations and Removals ------------------------- - The `user_may_create_room_with_invites` module callback is now deprecated. Please refer to the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1470) for more information. ([\#11206](https://github.com/matrix-org/synapse/issues/11206)) - Remove deprecated admin API to delete rooms (`POST /_synapse/admin/v1/rooms//delete`). ([\#11213](https://github.com/matrix-org/synapse/issues/11213)) Features -------- - Advertise support for Client-Server API r0.6.1. ([\#11097](https://github.com/matrix-org/synapse/issues/11097)) - Add search by room ID and room alias to the List Room admin API. ([\#11099](https://github.com/matrix-org/synapse/issues/11099)) - Add an `on_new_event` third-party rules callback to allow Synapse modules to act after an event has been sent into a room. ([\#11126](https://github.com/matrix-org/synapse/issues/11126)) - Add a module API method to update a user's membership in a room. ([\#11147](https://github.com/matrix-org/synapse/issues/11147)) - Add metrics for thread pool usage. ([\#11178](https://github.com/matrix-org/synapse/issues/11178)) - Support the stable room type field for [MSC3288](https://github.com/matrix-org/matrix-doc/pull/3288). ([\#11187](https://github.com/matrix-org/synapse/issues/11187)) - Add a module API method to retrieve the current state of a room. ([\#11204](https://github.com/matrix-org/synapse/issues/11204)) - Calculate a default value for `public_baseurl` based on `server_name`. ([\#11210](https://github.com/matrix-org/synapse/issues/11210)) - Add support for serving `/.well-known/matrix/server` files, to redirect federation traffic to port 443. ([\#11211](https://github.com/matrix-org/synapse/issues/11211)) - Add admin APIs to pause, start and check the status of background updates. ([\#11263](https://github.com/matrix-org/synapse/issues/11263)) Bugfixes -------- - Fix a long-standing bug which allowed hidden devices to receive to-device messages, resulting in unnecessary database bloat. ([\#10097](https://github.com/matrix-org/synapse/issues/10097)) - Fix a long-standing bug where messages in the `device_inbox` table for deleted devices would persist indefinitely. Contributed by @dklimpel and @JohannesKleine. ([\#10969](https://github.com/matrix-org/synapse/issues/10969), [\#11212](https://github.com/matrix-org/synapse/issues/11212)) - Do not accept events if a third-party rule `check_event_allowed` callback raises an exception. ([\#11033](https://github.com/matrix-org/synapse/issues/11033)) - Fix long-standing bug where verification requests could fail in certain cases if a federation whitelist was in place but did not include your own homeserver. ([\#11129](https://github.com/matrix-org/synapse/issues/11129)) - Allow an empty list of `state_events_at_start` to be sent when using the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint and the author of the historical messages is already part of the current room state at the given `?prev_event_id`. ([\#11188](https://github.com/matrix-org/synapse/issues/11188)) - Fix a bug introduced in Synapse 1.45.0 which prevented the `synapse_review_recent_signups` script from running. Contributed by @samuel-p. ([\#11191](https://github.com/matrix-org/synapse/issues/11191)) - Delete `to_device` messages for hidden devices that will never be read, reducing database size. ([\#11199](https://github.com/matrix-org/synapse/issues/11199)) - Fix a long-standing bug wherein a missing `Content-Type` header when downloading remote media would cause Synapse to throw an error. ([\#11200](https://github.com/matrix-org/synapse/issues/11200)) - Fix a long-standing bug which could result in serialization errors and potentially duplicate transaction data when sending ephemeral events to application services. Contributed by @Fizzadar at Beeper. ([\#11207](https://github.com/matrix-org/synapse/issues/11207)) - Fix a bug introduced in Synapse 1.35.0 which made it impossible to join rooms that return a `send_join` response containing floats. ([\#11217](https://github.com/matrix-org/synapse/issues/11217)) - Fix long-standing bug where cross signing keys were not included in the response to `/r0/keys/query` the first time a remote user was queried. ([\#11234](https://github.com/matrix-org/synapse/issues/11234)) - Fix a long-standing bug where all requests that read events from the database could get stuck as a result of losing the database connection. ([\#11240](https://github.com/matrix-org/synapse/issues/11240)) - Fix a bug preventing Synapse from being rolled back to an earlier version when using workers. ([\#11255](https://github.com/matrix-org/synapse/issues/11255), [\#11276](https://github.com/matrix-org/synapse/issues/11276)) - Fix a bug introduced in Synapse 1.37.1 which caused a remote event being processed by a worker to not get processed on restart if the worker was killed. ([\#11262](https://github.com/matrix-org/synapse/issues/11262)) - Only allow old Element/Riot Android clients to send read receipts without a request body. All other clients must include a request body as required by the specification. Contributed by @rogersheu. ([\#11157](https://github.com/matrix-org/synapse/issues/11157)) Updates to the Docker image --------------------------- - Avoid changing user ID when started as a non-root user, and no explicit `UID` is set. ([\#11209](https://github.com/matrix-org/synapse/issues/11209)) Improved Documentation ---------------------- - Improve example HAProxy config in the docs to properly handle HTTP `Host` headers with port information. This is required for federation over port 443 to work correctly. ([\#11128](https://github.com/matrix-org/synapse/issues/11128)) - Add documentation for using Authentik as an OpenID Connect Identity Provider. Contributed by @samip5. ([\#11151](https://github.com/matrix-org/synapse/issues/11151)) - Clarify lack of support for Windows. ([\#11198](https://github.com/matrix-org/synapse/issues/11198)) - Improve code formatting and fix a few typos in docs. Contributed by @sumnerevans at Beeper. ([\#11221](https://github.com/matrix-org/synapse/issues/11221)) - Add documentation for using LemonLDAP as an OpenID Connect Identity Provider. Contributed by @l00ptr. ([\#11257](https://github.com/matrix-org/synapse/issues/11257)) Internal Changes ---------------- - Add type annotations for the `log_function` decorator. ([\#10943](https://github.com/matrix-org/synapse/issues/10943)) - Add type hints to `synapse.events`. ([\#11098](https://github.com/matrix-org/synapse/issues/11098)) - Remove and document unnecessary `RoomStreamToken` checks in application service ephemeral event code. ([\#11137](https://github.com/matrix-org/synapse/issues/11137)) - Add type hints so that `synapse.http` passes `mypy` checks. ([\#11164](https://github.com/matrix-org/synapse/issues/11164)) - Update scripts to pass Shellcheck lints. ([\#11166](https://github.com/matrix-org/synapse/issues/11166)) - Add knock information in admin export. Contributed by Rafael Gonçalves. ([\#11171](https://github.com/matrix-org/synapse/issues/11171)) - Add tests to check that `ClientIpStore.get_last_client_ip_by_device` and `get_user_ip_and_agents` combine database and in-memory data correctly. ([\#11179](https://github.com/matrix-org/synapse/issues/11179)) - Refactor `Filter` to check different fields depending on the data type. ([\#11194](https://github.com/matrix-org/synapse/issues/11194)) - Improve type hints for the relations datastore. ([\#11205](https://github.com/matrix-org/synapse/issues/11205)) - Replace outdated links in the pull request checklist with links to the rendered documentation. ([\#11225](https://github.com/matrix-org/synapse/issues/11225)) - Fix a bug in unit test `test_block_room_and_not_purge`. ([\#11226](https://github.com/matrix-org/synapse/issues/11226)) - In `ObservableDeferred`, run observers in the order they were registered. ([\#11229](https://github.com/matrix-org/synapse/issues/11229)) - Minor speed up to start up times and getting updates for groups by adding missing index to `local_group_updates.stream_id`. ([\#11231](https://github.com/matrix-org/synapse/issues/11231)) - Add `twine` and `towncrier` as dev dependencies, as they're used by the release script. ([\#11233](https://github.com/matrix-org/synapse/issues/11233)) - Allow `stream_writers.typing` config to be a list of one worker. ([\#11237](https://github.com/matrix-org/synapse/issues/11237)) - Remove debugging statement in tests. ([\#11239](https://github.com/matrix-org/synapse/issues/11239)) - Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical messages backfilling in random order on remote homeservers. ([\#11244](https://github.com/matrix-org/synapse/issues/11244)) - Add an additional test for the `cachedList` method decorator. ([\#11246](https://github.com/matrix-org/synapse/issues/11246)) - Make minor correction to the type of `auth_checkers` callbacks. ([\#11253](https://github.com/matrix-org/synapse/issues/11253)) - Clean up trivial aspects of the Debian package build tooling. ([\#11269](https://github.com/matrix-org/synapse/issues/11269), [\#11273](https://github.com/matrix-org/synapse/issues/11273)) - Blacklist new SyTest that checks that key uploads are valid pending the validation being implemented in Synapse. ([\#11270](https://github.com/matrix-org/synapse/issues/11270)) Synapse 1.46.0 (2021-11-02) =========================== The cause of the [performance regression affecting Synapse 1.44](https://github.com/matrix-org/synapse/issues/11049) has been identified and fixed. ([\#11177](https://github.com/matrix-org/synapse/issues/11177)) Bugfixes -------- - Fix a bug introduced in v1.46.0rc1 where URL previews of some XML documents would fail. ([\#11196](https://github.com/matrix-org/synapse/issues/11196)) Synapse 1.46.0rc1 (2021-10-27) ============================== Features -------- - Add support for Ubuntu 21.10 "Impish Indri". ([\#11024](https://github.com/matrix-org/synapse/issues/11024)) - Port the Password Auth Providers module interface to the new generic interface. ([\#10548](https://github.com/matrix-org/synapse/issues/10548), [\#11180](https://github.com/matrix-org/synapse/issues/11180)) - Experimental support for the thread relation defined in [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11088](https://github.com/matrix-org/synapse/issues/11088), [\#11181](https://github.com/matrix-org/synapse/issues/11181), [\#11192](https://github.com/matrix-org/synapse/issues/11192)) - Users admin API can now also modify user type in addition to allowing it to be set on user creation. ([\#11174](https://github.com/matrix-org/synapse/issues/11174)) Bugfixes -------- - Newly-created public rooms are now only assigned an alias if the room's creation has not been blocked by permission settings. Contributed by @AndrewFerr. ([\#10930](https://github.com/matrix-org/synapse/issues/10930)) - Fix a long-standing bug which meant that events received over federation were sometimes incorrectly accepted into the room state. ([\#11001](https://github.com/matrix-org/synapse/issues/11001), [\#11009](https://github.com/matrix-org/synapse/issues/11009), [\#11012](https://github.com/matrix-org/synapse/issues/11012)) - Fix 500 error on `/messages` when the server accumulates more than 5 backwards extremities at a given depth for a room. ([\#11027](https://github.com/matrix-org/synapse/issues/11027)) - Fix a bug where setting a user's `external_id` via the admin API returns 500 and deletes user's existing external mappings if that external ID is already mapped. ([\#11051](https://github.com/matrix-org/synapse/issues/11051)) - Fix a long-standing bug where users excluded from the user directory were added into the directory if they belonged to a room which became public or private. ([\#11075](https://github.com/matrix-org/synapse/issues/11075)) - Fix a long-standing bug when attempting to preview URLs which are in the `windows-1252` character encoding. ([\#11077](https://github.com/matrix-org/synapse/issues/11077), [\#11089](https://github.com/matrix-org/synapse/issues/11089)) - Fix broken export-data admin command and add test script checking the command to CI. ([\#11078](https://github.com/matrix-org/synapse/issues/11078)) - Show an error when timestamp in seconds is provided to the `/purge_media_cache` Admin API. ([\#11101](https://github.com/matrix-org/synapse/issues/11101)) - Fix local users who left all their rooms being removed from the user directory, even if the `search_all_users` config option was enabled. ([\#11103](https://github.com/matrix-org/synapse/issues/11103)) - Fix a bug which caused the module API's `get_user_ip_and_agents` function to always fail on workers. `get_user_ip_and_agents` was introduced in 1.44.0 and did not function correctly on worker processes at the time. ([\#11112](https://github.com/matrix-org/synapse/issues/11112)) - Identity server connection is no longer ignoring `ip_range_whitelist`. ([\#11120](https://github.com/matrix-org/synapse/issues/11120)) - Fix a bug introduced in Synapse 1.45.0 breaking the configuration file parsing script. ([\#11145](https://github.com/matrix-org/synapse/issues/11145)) - Fix a performance regression introduced in 1.44.0 which could cause client requests to time out when making large numbers of outbound requests. ([\#11177](https://github.com/matrix-org/synapse/issues/11177), [\#11190](https://github.com/matrix-org/synapse/issues/11190)) - Resolve and share `state_groups` for all [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical events in batch. ([\#10975](https://github.com/matrix-org/synapse/issues/10975)) Improved Documentation ---------------------- - Fix broken links relating to module API deprecation in the upgrade notes. ([\#11069](https://github.com/matrix-org/synapse/issues/11069)) - Add more information about what happens when a user is deactivated. ([\#11083](https://github.com/matrix-org/synapse/issues/11083)) - Clarify the the sample log config can be copied from the documentation without issue. ([\#11092](https://github.com/matrix-org/synapse/issues/11092)) - Update the admin API documentation with an updated list of the characters allowed in registration tokens. ([\#11093](https://github.com/matrix-org/synapse/issues/11093)) - Document Synapse's behaviour when dealing with multiple modules registering the same callbacks and/or handlers for the same HTTP endpoints. ([\#11096](https://github.com/matrix-org/synapse/issues/11096)) - Fix instances of `[example]{.title-ref}` in the upgrade documentation as a result of prior RST to Markdown conversion. ([\#11118](https://github.com/matrix-org/synapse/issues/11118)) - Document the version of Synapse each module callback was introduced in. ([\#11132](https://github.com/matrix-org/synapse/issues/11132)) - Document the version of Synapse that introduced each module API method. ([\#11183](https://github.com/matrix-org/synapse/issues/11183)) Internal Changes ---------------- - Fix spurious warnings about losing the logging context on the `ReplicationCommandHandler` when losing the replication connection. ([\#10984](https://github.com/matrix-org/synapse/issues/10984)) - Include rejected status when we log events. ([\#11008](https://github.com/matrix-org/synapse/issues/11008)) - Add some extra logging to the event persistence code. ([\#11014](https://github.com/matrix-org/synapse/issues/11014)) - Rearrange the internal workings of the incremental user directory updates. ([\#11035](https://github.com/matrix-org/synapse/issues/11035)) - Fix a long-standing bug where users excluded from the directory could still be added to the `users_who_share_private_rooms` table after a regular user joins a private room. ([\#11143](https://github.com/matrix-org/synapse/issues/11143)) - Add and improve type hints. ([\#10972](https://github.com/matrix-org/synapse/issues/10972), [\#11055](https://github.com/matrix-org/synapse/issues/11055), [\#11066](https://github.com/matrix-org/synapse/issues/11066), [\#11076](https://github.com/matrix-org/synapse/issues/11076), [\#11095](https://github.com/matrix-org/synapse/issues/11095), [\#11109](https://github.com/matrix-org/synapse/issues/11109), [\#11121](https://github.com/matrix-org/synapse/issues/11121), [\#11146](https://github.com/matrix-org/synapse/issues/11146)) - Mark the Synapse package as containing type annotations and fix export declarations so that Synapse pluggable modules may be type checked against Synapse. ([\#11054](https://github.com/matrix-org/synapse/issues/11054)) - Remove dead code from `MediaFilePaths`. ([\#11056](https://github.com/matrix-org/synapse/issues/11056)) - Be more lenient when parsing oEmbed response versions. ([\#11065](https://github.com/matrix-org/synapse/issues/11065)) - Create a separate module for the retention configuration. ([\#11070](https://github.com/matrix-org/synapse/issues/11070)) - Clean up some of the federation event authentication code for clarity. ([\#11115](https://github.com/matrix-org/synapse/issues/11115), [\#11116](https://github.com/matrix-org/synapse/issues/11116), [\#11122](https://github.com/matrix-org/synapse/issues/11122)) - Add docstrings and comments to the application service ephemeral event sending code. ([\#11138](https://github.com/matrix-org/synapse/issues/11138)) - Update the `sign_json` script to support inline configuration of the signing key. ([\#11139](https://github.com/matrix-org/synapse/issues/11139)) - Fix broken link in the docker image README. ([\#11144](https://github.com/matrix-org/synapse/issues/11144)) - Always dump logs from unit tests during CI runs. ([\#11068](https://github.com/matrix-org/synapse/issues/11068)) - Add tests for `MediaFilePaths` class. ([\#11057](https://github.com/matrix-org/synapse/issues/11057)) - Simplify the user admin API tests. ([\#11048](https://github.com/matrix-org/synapse/issues/11048)) - Add a test for the workaround introduced in [\#11042](https://github.com/matrix-org/synapse/pull/11042) concerning the behaviour of third-party rule modules and `SynapseError`s. ([\#11071](https://github.com/matrix-org/synapse/issues/11071)) Synapse 1.45.1 (2021-10-20) =========================== Bugfixes -------- - Revert change to counting of deactivated users towards the monthly active users limit, introduced in 1.45.0rc1. ([\#11127](https://github.com/matrix-org/synapse/issues/11127)) Synapse 1.45.0 (2021-10-19) =========================== No functional changes since Synapse 1.45.0rc2. Known Issues ------------ - A suspected [performance regression](https://github.com/matrix-org/synapse/issues/11049) which was first reported after the release of 1.44.0 remains unresolved. We have not been able to identify a probable cause. Affected users report that setting up a federation sender worker appears to alleviate symptoms of the regression. Improved Documentation ---------------------- - Reword changelog to clarify concerns about a suspected performance regression in 1.44.0. ([\#11117](https://github.com/matrix-org/synapse/issues/11117)) Synapse 1.45.0rc2 (2021-10-14) ============================== This release candidate [fixes](https://github.com/matrix-org/synapse/issues/11053) a user directory [bug](https://github.com/matrix-org/synapse/issues/11025) present in 1.45.0rc1. Known Issues ------------ - A suspected [performance regression](https://github.com/matrix-org/synapse/issues/11049) which was first reported after the release of 1.44.0 remains unresolved. We have not been able to identify a probable cause. Affected users report that setting up a federation sender worker appears to alleviate symptoms of the regression. Bugfixes -------- - Fix a long-standing bug when using multiple event persister workers where events were not correctly sent down `/sync` due to a race. ([\#11045](https://github.com/matrix-org/synapse/issues/11045)) - Fix a bug introduced in Synapse 1.45.0rc1 where the user directory would stop updating if it processed an event from a user not in the `users` table. ([\#11053](https://github.com/matrix-org/synapse/issues/11053)) - Fix a bug introduced in Synapse 1.44.0 when logging errors during oEmbed processing. ([\#11061](https://github.com/matrix-org/synapse/issues/11061)) Internal Changes ---------------- - Add an 'approximate difference' method to `StateFilter`. ([\#10825](https://github.com/matrix-org/synapse/issues/10825)) - Fix inconsistent behavior of `get_last_client_by_ip` when reporting data that has not been stored in the database yet. ([\#10970](https://github.com/matrix-org/synapse/issues/10970)) - Fix a bug introduced in Synapse 1.21.0 that causes opentracing and Prometheus metrics for replication requests to be measured incorrectly. ([\#10996](https://github.com/matrix-org/synapse/issues/10996)) - Ensure that cache config tests do not share state. ([\#11036](https://github.com/matrix-org/synapse/issues/11036)) Synapse 1.45.0rc1 (2021-10-12) ============================== **Note:** Media storage providers module that read from Synapse's configuration need changes as of this version, see the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1450) for more information. Known Issues ------------ - We are investigating [a performance issue](https://github.com/matrix-org/synapse/issues/11049) which was reported after the release of 1.44.0. - We are aware of [a bug](https://github.com/matrix-org/synapse/issues/11025) with the user directory when using application services. A second release candidate is expected which will resolve this. Features -------- - Add [MSC3069](https://github.com/matrix-org/matrix-doc/pull/3069) support to `/account/whoami`. ([\#9655](https://github.com/matrix-org/synapse/issues/9655)) - Support autodiscovery of oEmbed previews. ([\#10822](https://github.com/matrix-org/synapse/issues/10822)) - Add a `user_may_send_3pid_invite` spam checker callback for modules to allow or deny 3PID invites. ([\#10894](https://github.com/matrix-org/synapse/issues/10894)) - Add a spam checker callback to allow or deny room joins. ([\#10910](https://github.com/matrix-org/synapse/issues/10910)) - Include an `update_synapse_database` script in the distribution. Contributed by @Fizzadar at Beeper. ([\#10954](https://github.com/matrix-org/synapse/issues/10954)) - Include exception information in JSON logging output. Contributed by @Fizzadar at Beeper. ([\#11028](https://github.com/matrix-org/synapse/issues/11028)) Bugfixes -------- - Fix a minor bug in the response to `/_matrix/client/r0/voip/turnServer`. Contributed by @lukaslihotzki. ([\#10922](https://github.com/matrix-org/synapse/issues/10922)) - Fix a bug where empty `yyyy-mm-dd/` directories would be left behind in the media store's `url_cache_thumbnails/` directory. ([\#10924](https://github.com/matrix-org/synapse/issues/10924)) - Fix a bug introduced in Synapse v1.40.0 where the signature checks for room version 8 and 9 could be applied to earlier room versions in some situations. ([\#10927](https://github.com/matrix-org/synapse/issues/10927)) - Fix a long-standing bug wherein deactivated users still count towards the monthly active users limit. ([\#10947](https://github.com/matrix-org/synapse/issues/10947)) - Fix a long-standing bug which meant that events received over federation were sometimes incorrectly accepted into the room state. ([\#10956](https://github.com/matrix-org/synapse/issues/10956)) - Fix a long-standing bug where rebuilding the user directory wouldn't exclude support and deactivated users. ([\#10960](https://github.com/matrix-org/synapse/issues/10960)) - Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint rejecting subsequent batches with unknown batch ID error in existing room versions from the room creator. ([\#10962](https://github.com/matrix-org/synapse/issues/10962)) - Fix a bug that could leak local users' per-room nicknames and avatars when the user directory is rebuilt. ([\#10981](https://github.com/matrix-org/synapse/issues/10981)) - Fix a long-standing bug where the remainder of a batch of user directory changes would be silently dropped if the server left a room early in the batch. ([\#10982](https://github.com/matrix-org/synapse/issues/10982)) - Correct a bugfix introduced in Synapse v1.44.0 that would catch the wrong error if a connection is lost before a response could be written to it. ([\#10995](https://github.com/matrix-org/synapse/issues/10995)) - Fix a long-standing bug where local users' per-room nicknames/avatars were visible to anyone who could see you in the user directory. ([\#11002](https://github.com/matrix-org/synapse/issues/11002)) - Fix a long-standing bug where a user's per-room nickname/avatar would overwrite their profile in the user directory when a room was made public. ([\#11003](https://github.com/matrix-org/synapse/issues/11003)) - Work around a regression, introduced in Synapse v1.39.0, that caused `SynapseError`s raised by the experimental third-party rules module callback `check_event_allowed` to be ignored. ([\#11042](https://github.com/matrix-org/synapse/issues/11042)) - Fix a bug in [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) insertion events in rooms that could cause cross-talk/conflicts between batches. ([\#10877](https://github.com/matrix-org/synapse/issues/10877)) Improved Documentation ---------------------- - Change wording ("reference homeserver") in Synapse repository documentation. Contributed by @maxkratz. ([\#10971](https://github.com/matrix-org/synapse/issues/10971)) - Fix a dead URL in development documentation (SAML) and change wording from "Riot" to "Element". Contributed by @maxkratz. ([\#10973](https://github.com/matrix-org/synapse/issues/10973)) - Add additional content to the Welcome and Overview page of the documentation. ([\#10990](https://github.com/matrix-org/synapse/issues/10990)) - Update links to MSCs in documentation. Contributed by @dklimpel. ([\#10991](https://github.com/matrix-org/synapse/issues/10991)) Internal Changes ---------------- - Improve type hinting in `synapse.util`. ([\#10888](https://github.com/matrix-org/synapse/issues/10888)) - Add further type hints to `synapse.storage.util`. ([\#10892](https://github.com/matrix-org/synapse/issues/10892)) - Fix type hints to be compatible with an upcoming change to Twisted. ([\#10895](https://github.com/matrix-org/synapse/issues/10895)) - Update utility code to handle C implementations of frozendict. ([\#10902](https://github.com/matrix-org/synapse/issues/10902)) - Drop old functionality which maintained database compatibility with Synapse versions before v1.31. ([\#10903](https://github.com/matrix-org/synapse/issues/10903)) - Clean-up configuration helper classes for the `ServerConfig` class. ([\#10915](https://github.com/matrix-org/synapse/issues/10915)) - Use direct references to config flags. ([\#10916](https://github.com/matrix-org/synapse/issues/10916), [\#10959](https://github.com/matrix-org/synapse/issues/10959), [\#10985](https://github.com/matrix-org/synapse/issues/10985)) - Clean up some of the federation event authentication code for clarity. ([\#10926](https://github.com/matrix-org/synapse/issues/10926), [\#10940](https://github.com/matrix-org/synapse/issues/10940), [\#10986](https://github.com/matrix-org/synapse/issues/10986), [\#10987](https://github.com/matrix-org/synapse/issues/10987), [\#10988](https://github.com/matrix-org/synapse/issues/10988), [\#11010](https://github.com/matrix-org/synapse/issues/11010), [\#11011](https://github.com/matrix-org/synapse/issues/11011)) - Refactor various parts of the codebase to use `RoomVersion` objects instead of room version identifier strings. ([\#10934](https://github.com/matrix-org/synapse/issues/10934)) - Refactor user directory tests in preparation for upcoming changes. ([\#10935](https://github.com/matrix-org/synapse/issues/10935)) - Include the event id in the logcontext when handling PDUs received over federation. ([\#10936](https://github.com/matrix-org/synapse/issues/10936)) - Fix logged errors in unit tests. ([\#10939](https://github.com/matrix-org/synapse/issues/10939)) - Fix a broken test to ensure that consent configuration works during registration. ([\#10945](https://github.com/matrix-org/synapse/issues/10945)) - Add type hints to filtering classes. ([\#10958](https://github.com/matrix-org/synapse/issues/10958)) - Add type-hint to `HomeserverTestcase.setup_test_homeserver`. ([\#10961](https://github.com/matrix-org/synapse/issues/10961)) - Fix the test utility function `create_room_as` so that `is_public=True` will explicitly set the `visibility` parameter of room creation requests to `public`. Contributed by @AndrewFerr. ([\#10963](https://github.com/matrix-org/synapse/issues/10963)) - Make the release script more robust and transparent. ([\#10966](https://github.com/matrix-org/synapse/issues/10966)) - Refactor [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` mega function into smaller handler functions. ([\#10974](https://github.com/matrix-org/synapse/issues/10974)) - Log stack traces when a missing opentracing span is detected. ([\#10983](https://github.com/matrix-org/synapse/issues/10983)) - Update GHA config to run tests against Python 3.10 and PostgreSQL 14. ([\#10992](https://github.com/matrix-org/synapse/issues/10992)) - Fix a long-standing bug where `ReadWriteLock`s could drop logging contexts on exit. ([\#10993](https://github.com/matrix-org/synapse/issues/10993)) - Add a `CODEOWNERS` file to automatically request reviews from the `@matrix-org/synapse-core` team on new pull requests. ([\#10994](https://github.com/matrix-org/synapse/issues/10994)) - Add further type hints to `synapse.state`. ([\#11004](https://github.com/matrix-org/synapse/issues/11004)) - Remove the deprecated `BaseHandler` object. ([\#11005](https://github.com/matrix-org/synapse/issues/11005)) - Bump mypy version for CI to 0.910, and pull in new type stubs for dependencies. ([\#11006](https://github.com/matrix-org/synapse/issues/11006)) - Fix CI to run the unit tests without optional deps. ([\#11017](https://github.com/matrix-org/synapse/issues/11017)) - Ensure that cache config tests do not share state. ([\#11019](https://github.com/matrix-org/synapse/issues/11019)) - Add additional type hints to `synapse.server_notices`. ([\#11021](https://github.com/matrix-org/synapse/issues/11021)) - Add additional type hints for `synapse.push`. ([\#11023](https://github.com/matrix-org/synapse/issues/11023)) - When installing the optional developer dependencies, also include the dependencies needed for type-checking and unit testing. ([\#11034](https://github.com/matrix-org/synapse/issues/11034)) - Remove unnecessary list comprehension from `synapse_port_db` to satisfy code style requirements. ([\#11043](https://github.com/matrix-org/synapse/issues/11043)) Synapse 1.44.0 (2021-10-05) =========================== No significant changes since 1.44.0rc3. Synapse 1.44.0rc3 (2021-10-04) ============================== Bugfixes -------- - Fix a bug introduced in Synapse v1.40.0 where changing a user's display name or avatar in a restricted room would cause an authentication error. ([\#10933](https://github.com/matrix-org/synapse/issues/10933)) - Fix `/admin/whois/{user_id}` endpoint, which was broken in v1.44.0rc1. ([\#10968](https://github.com/matrix-org/synapse/issues/10968)) Synapse 1.44.0rc2 (2021-09-30) ============================== Bugfixes -------- - Fix a bug introduced in v1.44.0rc1 which caused the experimental [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint to return a 500 error. ([\#10938](https://github.com/matrix-org/synapse/issues/10938)) - Fix a bug introduced in v1.44.0rc1 which prevented sending presence events to application services. ([\#10944](https://github.com/matrix-org/synapse/issues/10944)) Improved Documentation ---------------------- - Minor updates to the installation instructions. ([\#10919](https://github.com/matrix-org/synapse/issues/10919)) Synapse 1.44.0rc1 (2021-09-29) ============================== Features -------- - Only allow the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send?chunk_id=xxx` endpoint to connect to an already existing insertion event. ([\#10776](https://github.com/matrix-org/synapse/issues/10776)) - Improve oEmbed URL previews by processing the author name, photo, and video information. ([\#10814](https://github.com/matrix-org/synapse/issues/10814), [\#10819](https://github.com/matrix-org/synapse/issues/10819)) - Speed up responding with large JSON objects to requests. ([\#10868](https://github.com/matrix-org/synapse/issues/10868), [\#10905](https://github.com/matrix-org/synapse/issues/10905)) - Add a `user_may_create_room_with_invites` spam checker callback to allow modules to allow or deny a room creation request based on the invites and/or 3PID invites it includes. ([\#10898](https://github.com/matrix-org/synapse/issues/10898)) Bugfixes -------- - Fix a long-standing bug that caused an `AssertionError` when purging history in certain rooms. Contributed by @Kokokokoka. ([\#10690](https://github.com/matrix-org/synapse/issues/10690)) - Fix a long-standing bug which caused deactivated users that were later reactivated to be missing from the user directory. ([\#10782](https://github.com/matrix-org/synapse/issues/10782)) - Fix a long-standing bug that caused unbanning a user by sending a membership event to fail. Contributed by @aaronraimist. ([\#10807](https://github.com/matrix-org/synapse/issues/10807)) - Fix a long-standing bug where logging contexts would go missing when federation requests time out. ([\#10810](https://github.com/matrix-org/synapse/issues/10810)) - Fix a long-standing bug causing an error in the deprecated `/initialSync` endpoint when using the undocumented `from` and `to` parameters. ([\#10827](https://github.com/matrix-org/synapse/issues/10827)) - Fix a bug causing the `remove_stale_pushers` background job to repeatedly fail and log errors. This bug affected Synapse servers that had been upgraded from version 1.28 or older and are using SQLite. ([\#10843](https://github.com/matrix-org/synapse/issues/10843)) - Fix a long-standing bug in Unicode support of the room search admin API breaking search for rooms with non-ASCII characters. ([\#10859](https://github.com/matrix-org/synapse/issues/10859)) - Fix a bug introduced in Synapse 1.37.0 which caused `knock` membership events which we sent to remote servers to be incorrectly stored in the local database. ([\#10873](https://github.com/matrix-org/synapse/issues/10873)) - Fix invalidating one-time key count cache after claiming keys. The bug was introduced in Synapse v1.41.0. Contributed by Tulir at Beeper. ([\#10875](https://github.com/matrix-org/synapse/issues/10875)) - Fix a long-standing bug causing application service users to be subject to MAU blocking if the MAU limit had been reached, even if configured not to be blocked. ([\#10881](https://github.com/matrix-org/synapse/issues/10881)) - Fix a long-standing bug which could cause events pulled over federation to be incorrectly rejected. ([\#10907](https://github.com/matrix-org/synapse/issues/10907)) - Fix a long-standing bug causing URL cache files to be stored in storage providers. Server admins may safely delete the `url_cache/` and `url_cache_thumbnails/` directories from any configured storage providers to reclaim space. ([\#10911](https://github.com/matrix-org/synapse/issues/10911)) - Fix a long-standing bug leading to race conditions when creating media store and config directories. ([\#10913](https://github.com/matrix-org/synapse/issues/10913)) Improved Documentation ---------------------- - Fix some crashes in the Module API example code, by adding JSON encoding/decoding. ([\#10845](https://github.com/matrix-org/synapse/issues/10845)) - Add developer documentation about experimental configuration flags. ([\#10865](https://github.com/matrix-org/synapse/issues/10865)) - Properly remove deleted files from GitHub pages when generating the documentation. ([\#10869](https://github.com/matrix-org/synapse/issues/10869)) Internal Changes ---------------- - Fix GitHub Actions config so we can run sytest on synapse from parallel branches. ([\#10659](https://github.com/matrix-org/synapse/issues/10659)) - Split out [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) meta events to their own fields in the `/batch_send` response. ([\#10777](https://github.com/matrix-org/synapse/issues/10777)) - Add missing type hints to REST servlets. ([\#10785](https://github.com/matrix-org/synapse/issues/10785), [\#10817](https://github.com/matrix-org/synapse/issues/10817)) - Simplify the internal logic which maintains the user directory database tables. ([\#10796](https://github.com/matrix-org/synapse/issues/10796)) - Use direct references to config flags. ([\#10812](https://github.com/matrix-org/synapse/issues/10812), [\#10885](https://github.com/matrix-org/synapse/issues/10885), [\#10893](https://github.com/matrix-org/synapse/issues/10893), [\#10897](https://github.com/matrix-org/synapse/issues/10897)) - Specify the type of token in generic "Invalid token" error messages. ([\#10815](https://github.com/matrix-org/synapse/issues/10815)) - Make `StateFilter` frozen so it is hashable. ([\#10816](https://github.com/matrix-org/synapse/issues/10816)) - Fix a long-standing bug where an `m.room.message` event containing a null byte would cause an internal server error. ([\#10820](https://github.com/matrix-org/synapse/issues/10820)) - Add type hints to the state database. ([\#10823](https://github.com/matrix-org/synapse/issues/10823)) - Opt out of cache expiry for `get_users_who_share_room_with_user`, to hopefully improve `/sync` performance when you haven't synced recently. ([\#10826](https://github.com/matrix-org/synapse/issues/10826)) - Track cache eviction rates more finely in Prometheus's monitoring. ([\#10829](https://github.com/matrix-org/synapse/issues/10829)) - Add missing type hints to `synapse.handlers`. ([\#10831](https://github.com/matrix-org/synapse/issues/10831), [\#10856](https://github.com/matrix-org/synapse/issues/10856)) - Extend the Module API to let plug-ins check whether an ID is local and to access IP + User Agent data. ([\#10833](https://github.com/matrix-org/synapse/issues/10833)) - Factor out PNG image data to a constant to be used in several tests. ([\#10834](https://github.com/matrix-org/synapse/issues/10834)) - Add a test to ensure state events sent by modules get persisted correctly. ([\#10835](https://github.com/matrix-org/synapse/issues/10835)) - Rename [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) fields and event types from `chunk` to `batch` to match the `/batch_send` endpoint. ([\#10838](https://github.com/matrix-org/synapse/issues/10838)) - Rename [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` query parameter from `?prev_event` to more obvious usage with `?prev_event_id`. ([\#10839](https://github.com/matrix-org/synapse/issues/10839)) - Add type hints to `synapse.http.site`. ([\#10867](https://github.com/matrix-org/synapse/issues/10867)) - Include outlier status when we log V2 or V3 events. ([\#10879](https://github.com/matrix-org/synapse/issues/10879)) - Break down Grafana's cache expiry time series based on reason for eviction, c.f. [\#10829](https://github.com/matrix-org/synapse/issues/10829). ([\#10880](https://github.com/matrix-org/synapse/issues/10880)) - Clean up some of the federation event authentication code for clarity. ([\#10883](https://github.com/matrix-org/synapse/issues/10883), [\#10884](https://github.com/matrix-org/synapse/issues/10884), [\#10896](https://github.com/matrix-org/synapse/issues/10896), [\#10901](https://github.com/matrix-org/synapse/issues/10901)) - Allow the `.` and `~` characters when creating registration tokens as per the change to [MSC3231](https://github.com/matrix-org/matrix-doc/pull/3231). ([\#10887](https://github.com/matrix-org/synapse/issues/10887)) - Clean up some unnecessary parentheses in places around the codebase. ([\#10889](https://github.com/matrix-org/synapse/issues/10889)) - Improve type hinting in the user directory code. ([\#10891](https://github.com/matrix-org/synapse/issues/10891)) - Update development testing script `test_postgresql.sh` to use a supported Python version and make re-runs quicker. ([\#10906](https://github.com/matrix-org/synapse/issues/10906)) - Document and summarize changes in schema version `61` – `64`. ([\#10917](https://github.com/matrix-org/synapse/issues/10917)) - Update release script to sign the newly created git tags. ([\#10925](https://github.com/matrix-org/synapse/issues/10925)) - Fix Debian builds due to `dh-virtualenv` no longer being able to build their docs. ([\#10931](https://github.com/matrix-org/synapse/issues/10931)) Synapse 1.43.0 (2021-09-21) =========================== This release drops support for the deprecated, unstable API for [MSC2858 (Multiple SSO Identity Providers)](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2858-Multiple-SSO-Identity-Providers.md#unstable-prefix), as well as the undocumented `experimental.msc2858_enabled` config option. Client authors should update their clients to use the stable API, available since Synapse 1.30. The documentation has been updated with configuration for routing `/spaces`, `/hierarchy` and `/summary` to workers. See [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.43/docs/upgrade.md#upgrading-to-v1430) for more details. No significant changes since 1.43.0rc2. Synapse 1.43.0rc2 (2021-09-17) ============================== Bugfixes -------- - Added opentracing logging to help debug [\#9424](https://github.com/matrix-org/synapse/issues/9424). ([\#10828](https://github.com/matrix-org/synapse/issues/10828)) Synapse 1.43.0rc1 (2021-09-14) ============================== Features -------- - Allow room creators to send historical events specified by [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) in existing room versions. ([\#10566](https://github.com/matrix-org/synapse/issues/10566)) - Add config option to use non-default manhole password and keys. ([\#10643](https://github.com/matrix-org/synapse/issues/10643)) - Skip final GC at shutdown to improve restart performance. ([\#10712](https://github.com/matrix-org/synapse/issues/10712)) - Allow configuration of the oEmbed URLs used for URL previews. ([\#10714](https://github.com/matrix-org/synapse/issues/10714), [\#10759](https://github.com/matrix-org/synapse/issues/10759)) - Prefer [room version 9](https://github.com/matrix-org/matrix-doc/pull/3375) for restricted rooms per the [room version capabilities](https://github.com/matrix-org/matrix-doc/pull/3244) API. ([\#10772](https://github.com/matrix-org/synapse/issues/10772)) Bugfixes -------- - Fix a long-standing bug where room avatars were not included in email notifications. ([\#10658](https://github.com/matrix-org/synapse/issues/10658)) - Fix a bug where the ordering algorithm was skipping the `origin_server_ts` step in the spaces summary resulting in unstable room orderings. ([\#10730](https://github.com/matrix-org/synapse/issues/10730)) - Fix edge case when persisting events into a room where there are multiple events we previously hadn't calculated auth chains for (and hadn't marked as needing to be calculated). ([\#10743](https://github.com/matrix-org/synapse/issues/10743)) - Fix a bug which prevented calls to `/createRoom` that included the `room_alias_name` parameter from being handled by worker processes. ([\#10757](https://github.com/matrix-org/synapse/issues/10757)) - Fix a bug which prevented user registration via SSO to require consent tracking for SSO mapping providers that don't prompt for Matrix ID selection. Contributed by @AndrewFerr. ([\#10733](https://github.com/matrix-org/synapse/issues/10733)) - Only return the stripped state events for the `m.space.child` events in a room for the spaces summary from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10760](https://github.com/matrix-org/synapse/issues/10760)) - Properly handle room upgrades of spaces. ([\#10774](https://github.com/matrix-org/synapse/issues/10774)) - Fix a bug which generated invalid homeserver config when the `frontend_proxy` worker type was passed to the Synapse Worker-based Complement image. ([\#10783](https://github.com/matrix-org/synapse/issues/10783)) Improved Documentation ---------------------- - Minor fix to the `media_repository` developer documentation. Contributed by @cuttingedge1109. ([\#10556](https://github.com/matrix-org/synapse/issues/10556)) - Update the documentation to note that the `/spaces` and `/hierarchy` endpoints can be routed to workers. ([\#10648](https://github.com/matrix-org/synapse/issues/10648)) - Clarify admin API documentation on undoing room deletions. ([\#10735](https://github.com/matrix-org/synapse/issues/10735)) - Split up the modules documentation and add examples for module developers. ([\#10758](https://github.com/matrix-org/synapse/issues/10758)) - Correct 2 typographical errors in the [Log Contexts documentation](https://matrix-org.github.io/synapse/latest/log_contexts.html). ([\#10795](https://github.com/matrix-org/synapse/issues/10795)) - Fix a wording mistake in the sample configuration. Contributed by @bramvdnheuvel:nltrix.net. ([\#10804](https://github.com/matrix-org/synapse/issues/10804)) Deprecations and Removals ------------------------- - Remove the [unstable MSC2858 API](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2858-Multiple-SSO-Identity-Providers.md#unstable-prefix), including the undocumented `experimental.msc2858_enabled` config option. The unstable API has been deprecated since Synapse 1.35. Client authors should update their clients to use the stable API introduced in Synapse 1.30 if they have not already done so. ([\#10693](https://github.com/matrix-org/synapse/issues/10693)) Internal Changes ---------------- - Add OpenTracing logging to help debug stuck messages (as described by issue [#9424](https://github.com/matrix-org/synapse/issues/9424)). ([\#10704](https://github.com/matrix-org/synapse/issues/10704)) - Add type annotations to the `synapse.util` package. ([\#10601](https://github.com/matrix-org/synapse/issues/10601)) - Ensure `rooms.creator` field is always populated for easy lookup in [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) usage later. ([\#10697](https://github.com/matrix-org/synapse/issues/10697)) - Add missing type hints to REST servlets. ([\#10707](https://github.com/matrix-org/synapse/issues/10707), [\#10728](https://github.com/matrix-org/synapse/issues/10728), [\#10736](https://github.com/matrix-org/synapse/issues/10736)) - Do not include rooms with unknown room versions in the spaces summary results. ([\#10727](https://github.com/matrix-org/synapse/issues/10727)) - Additional error checking for the `preset` field when creating a room. ([\#10738](https://github.com/matrix-org/synapse/issues/10738)) - Clean up some of the federation event authentication code for clarity. ([\#10744](https://github.com/matrix-org/synapse/issues/10744), [\#10745](https://github.com/matrix-org/synapse/issues/10745), [\#10746](https://github.com/matrix-org/synapse/issues/10746), [\#10771](https://github.com/matrix-org/synapse/issues/10771), [\#10773](https://github.com/matrix-org/synapse/issues/10773), [\#10781](https://github.com/matrix-org/synapse/issues/10781)) - Add an index to `presence_stream` to hopefully speed up startups a little. ([\#10748](https://github.com/matrix-org/synapse/issues/10748)) - Refactor event size checking code to simplify searching the codebase for the origins of certain error strings that are occasionally emitted. ([\#10750](https://github.com/matrix-org/synapse/issues/10750)) - Move tests relating to rooms having encryption out of the user directory tests. ([\#10752](https://github.com/matrix-org/synapse/issues/10752)) - Use `attrs` internally for the URL preview code & update documentation. ([\#10753](https://github.com/matrix-org/synapse/issues/10753)) - Minor speed ups when joining large rooms over federation. ([\#10754](https://github.com/matrix-org/synapse/issues/10754), [\#10755](https://github.com/matrix-org/synapse/issues/10755), [\#10756](https://github.com/matrix-org/synapse/issues/10756), [\#10780](https://github.com/matrix-org/synapse/issues/10780), [\#10784](https://github.com/matrix-org/synapse/issues/10784)) - Add a constant for `m.federate`. ([\#10775](https://github.com/matrix-org/synapse/issues/10775)) - Add a script to update the Debian changelog in a Docker container for systems that are not Debian-based. ([\#10778](https://github.com/matrix-org/synapse/issues/10778)) - Change the format of authenticated users in logs when a user is being puppeted by and admin user. ([\#10779](https://github.com/matrix-org/synapse/issues/10779)) - Remove fixed and flakey tests from the Sytest blacklist. ([\#10788](https://github.com/matrix-org/synapse/issues/10788)) - Improve internal details of the user directory code. ([\#10789](https://github.com/matrix-org/synapse/issues/10789)) - Use direct references to config flags. ([\#10798](https://github.com/matrix-org/synapse/issues/10798)) - Ensure the Rust reporter passes type checking with jaeger-client 4.7's type annotations. ([\#10799](https://github.com/matrix-org/synapse/issues/10799)) Synapse 1.42.0 (2021-09-07) =========================== This version of Synapse removes deprecated room-management admin APIs, removes out-of-date email pushers, and improves error handling for fallback templates for user-interactive authentication. For more information on these points, server administrators are encouraged to read [the upgrade notes](docs/upgrade.md#upgrading-to-v1420). No significant changes since 1.42.0rc2. Synapse 1.42.0rc2 (2021-09-06) ============================== Features -------- - Support room version 9 from [MSC3375](https://github.com/matrix-org/matrix-doc/pull/3375). ([\#10747](https://github.com/matrix-org/synapse/issues/10747)) Internal Changes ---------------- - Print a warning when using one of the deprecated `template_dir` settings. ([\#10768](https://github.com/matrix-org/synapse/issues/10768)) Synapse 1.42.0rc1 (2021-09-01) ============================== Features -------- - Add support for [MSC3231](https://github.com/matrix-org/matrix-doc/pull/3231): Token authenticated registration. Users can be required to submit a token during registration to authenticate themselves. Contributed by Callum Brown. ([\#10142](https://github.com/matrix-org/synapse/issues/10142)) - Add support for [MSC3283](https://github.com/matrix-org/matrix-doc/pull/3283): Expose `enable_set_displayname` in capabilities. ([\#10452](https://github.com/matrix-org/synapse/issues/10452)) - Port the `PresenceRouter` module interface to the new generic interface. ([\#10524](https://github.com/matrix-org/synapse/issues/10524)) - Add pagination to the spaces summary based on updates to [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10613](https://github.com/matrix-org/synapse/issues/10613), [\#10725](https://github.com/matrix-org/synapse/issues/10725)) Bugfixes -------- - Validate new `m.room.power_levels` events. Contributed by @aaronraimist. ([\#10232](https://github.com/matrix-org/synapse/issues/10232)) - Display an error on User-Interactive Authentication fallback pages when authentication fails. Contributed by Callum Brown. ([\#10561](https://github.com/matrix-org/synapse/issues/10561)) - Remove pushers when deleting an e-mail address from an account. Pushers for old unlinked emails will also be deleted. ([\#10581](https://github.com/matrix-org/synapse/issues/10581), [\#10734](https://github.com/matrix-org/synapse/issues/10734)) - Reject Client-Server `/keys/query` requests which provide `device_ids` incorrectly. ([\#10593](https://github.com/matrix-org/synapse/issues/10593)) - Rooms with unsupported room versions are no longer returned via `/sync`. ([\#10644](https://github.com/matrix-org/synapse/issues/10644)) - Enforce the maximum length for per-room display names and avatar URLs. ([\#10654](https://github.com/matrix-org/synapse/issues/10654)) - Fix a bug which caused the `synapse_user_logins_total` Prometheus metric not to be correctly initialised on restart. ([\#10677](https://github.com/matrix-org/synapse/issues/10677)) - Improve `ServerNoticeServlet` to avoid duplicate requests and add unit tests. ([\#10679](https://github.com/matrix-org/synapse/issues/10679)) - Fix long-standing issue which caused an error when a thumbnail is requested and there are multiple thumbnails with the same quality rating. ([\#10684](https://github.com/matrix-org/synapse/issues/10684)) - Fix a regression introduced in v1.41.0 which affected the performance of concurrent fetches of large sets of events, in extreme cases causing the process to hang. ([\#10703](https://github.com/matrix-org/synapse/issues/10703)) - Fix a regression introduced in Synapse 1.41 which broke email transmission on Systems using older versions of the Twisted library. ([\#10713](https://github.com/matrix-org/synapse/issues/10713)) Improved Documentation ---------------------- - Add documentation on how to connect Django with Synapse using OpenID Connect and django-oauth-toolkit. Contributed by @HugoDelval. ([\#10192](https://github.com/matrix-org/synapse/issues/10192)) - Advertise https://matrix-org.github.io/synapse documentation in the `README` and `CONTRIBUTING` files. ([\#10595](https://github.com/matrix-org/synapse/issues/10595)) - Fix some of the titles not rendering in the OpenID Connect documentation. ([\#10639](https://github.com/matrix-org/synapse/issues/10639)) - Minor clarifications to the documentation for reverse proxies. ([\#10708](https://github.com/matrix-org/synapse/issues/10708)) - Remove table of contents from the top of installation and contributing documentation pages. ([\#10711](https://github.com/matrix-org/synapse/issues/10711)) Deprecations and Removals ------------------------- - Remove deprecated Shutdown Room and Purge Room Admin API. ([\#8830](https://github.com/matrix-org/synapse/issues/8830)) Internal Changes ---------------- - Improve type hints for the proxy agent and SRV resolver modules. Contributed by @dklimpel. ([\#10608](https://github.com/matrix-org/synapse/issues/10608)) - Clean up some of the federation event authentication code for clarity. ([\#10614](https://github.com/matrix-org/synapse/issues/10614), [\#10615](https://github.com/matrix-org/synapse/issues/10615), [\#10624](https://github.com/matrix-org/synapse/issues/10624), [\#10640](https://github.com/matrix-org/synapse/issues/10640)) - Add a comment asking developers to leave a reason when bumping the database schema version. ([\#10621](https://github.com/matrix-org/synapse/issues/10621)) - Remove not needed database updates in modify user admin API. ([\#10627](https://github.com/matrix-org/synapse/issues/10627)) - Convert room member storage tuples to `attrs` classes. ([\#10629](https://github.com/matrix-org/synapse/issues/10629), [\#10642](https://github.com/matrix-org/synapse/issues/10642)) - Use auto-attribs for the attrs classes used in sync. ([\#10630](https://github.com/matrix-org/synapse/issues/10630)) - Make `backfill` and `get_missing_events` use the same codepath. ([\#10645](https://github.com/matrix-org/synapse/issues/10645)) - Improve the performance of the `/hierarchy` API (from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946)) by caching responses received over federation. ([\#10647](https://github.com/matrix-org/synapse/issues/10647)) - Run a nightly CI build against Twisted trunk. ([\#10651](https://github.com/matrix-org/synapse/issues/10651), [\#10672](https://github.com/matrix-org/synapse/issues/10672)) - Do not print out stack traces for network errors when fetching data over federation. ([\#10662](https://github.com/matrix-org/synapse/issues/10662)) - Simplify tests for device admin rest API. ([\#10664](https://github.com/matrix-org/synapse/issues/10664)) - Add missing type hints to REST servlets. ([\#10665](https://github.com/matrix-org/synapse/issues/10665), [\#10666](https://github.com/matrix-org/synapse/issues/10666), [\#10674](https://github.com/matrix-org/synapse/issues/10674)) - Flatten the `tests.synapse.rests` package by moving the contents of `v1` and `v2_alpha` into the parent. ([\#10667](https://github.com/matrix-org/synapse/issues/10667)) - Update `complement.sh` to rebuild the base Docker image when run with workers. ([\#10686](https://github.com/matrix-org/synapse/issues/10686)) - Split the event-processing methods in `FederationHandler` into a separate `FederationEventHandler`. ([\#10692](https://github.com/matrix-org/synapse/issues/10692)) - Remove unused `compare_digest` function. ([\#10706](https://github.com/matrix-org/synapse/issues/10706)) Synapse 1.41.1 (2021-08-31) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- The following issues are fixed in v1.41.1. - **[GHSA-3x4c-pq33-4w3q](https://github.com/matrix-org/synapse/security/advisories/GHSA-3x4c-pq33-4w3q) / [CVE-2021-39164](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-39164): Enumerating a private room's list of members and their display names.** If an unauthorized user both knows the Room ID of a private room *and* that room's history visibility is set to `shared`, then they may be able to enumerate the room's members, including their display names. The unauthorized user must be on the same homeserver as a user who is a member of the target room. Fixed by [52c7a51cf](https://github.com/matrix-org/synapse/commit/52c7a51cf). - **[GHSA-jj53-8fmw-f2w2](https://github.com/matrix-org/synapse/security/advisories/GHSA-jj53-8fmw-f2w2) / [CVE-2021-39163](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-39163): Disclosing a private room's name, avatar, topic, and number of members.** If an unauthorized user knows the Room ID of a private room, then its name, avatar, topic, and number of members may be disclosed through Group / Community features. The unauthorized user must be on the same homeserver as a user who is a member of the target room, and their homeserver must allow non-administrators to create groups (`enable_group_creation` in the Synapse configuration; off by default). Fixed by [cb35df940a](https://github.com/matrix-org/synapse/commit/cb35df940a), [\#10723](https://github.com/matrix-org/synapse/issues/10723). Bugfixes -------- - Fix a regression introduced in Synapse 1.41 which broke email transmission on systems using older versions of the Twisted library. ([\#10713](https://github.com/matrix-org/synapse/issues/10713)) Synapse 1.41.0 (2021-08-24) =========================== This release adds support for Debian 12 (Bookworm), but **removes support for Ubuntu 20.10 (Groovy Gorilla)**, which reached End of Life last month. Note that when using workers the `/_synapse/admin/v1/users/{userId}/media` must now be handled by media workers. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html) for more information. Features -------- - Enable room capabilities ([MSC3244](https://github.com/matrix-org/matrix-doc/pull/3244)) by default and set room version 8 as the preferred room version when creating restricted rooms. ([\#10571](https://github.com/matrix-org/synapse/issues/10571)) Synapse 1.41.0rc1 (2021-08-18) ============================== Features -------- - Add `get_userinfo_by_id` method to ModuleApi. ([\#9581](https://github.com/matrix-org/synapse/issues/9581)) - Initial local support for [MSC3266](https://github.com/matrix-org/synapse/pull/10394), Room Summary over the unstable `/rooms/{roomIdOrAlias}/summary` API. ([\#10394](https://github.com/matrix-org/synapse/issues/10394)) - Experimental support for [MSC3288](https://github.com/matrix-org/matrix-doc/pull/3288), sending `room_type` to the identity server for 3pid invites over the `/store-invite` API. ([\#10435](https://github.com/matrix-org/synapse/issues/10435)) - Add support for sending federation requests through a proxy. Contributed by @Bubu and @dklimpel. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html) for more information. ([\#10596](https://github.com/matrix-org/synapse/issues/10596)). ([\#10475](https://github.com/matrix-org/synapse/issues/10475)) - Add support for "marker" events which makes historical events discoverable for servers that already have all of the scrollback history (part of [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716)). ([\#10498](https://github.com/matrix-org/synapse/issues/10498)) - Add a configuration setting for the time a `/sync` response is cached for. ([\#10513](https://github.com/matrix-org/synapse/issues/10513)) - The default logging handler for new installations is now `PeriodicallyFlushingMemoryHandler`, a buffered logging handler which periodically flushes itself. ([\#10518](https://github.com/matrix-org/synapse/issues/10518)) - Add support for new redaction rules for historical events specified in [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716). ([\#10538](https://github.com/matrix-org/synapse/issues/10538)) - Add a setting to disable TLS when sending email. ([\#10546](https://github.com/matrix-org/synapse/issues/10546)) - Add pagination to the spaces summary based on updates to [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10549](https://github.com/matrix-org/synapse/issues/10549), [\#10560](https://github.com/matrix-org/synapse/issues/10560), [\#10569](https://github.com/matrix-org/synapse/issues/10569), [\#10574](https://github.com/matrix-org/synapse/issues/10574), [\#10575](https://github.com/matrix-org/synapse/issues/10575), [\#10579](https://github.com/matrix-org/synapse/issues/10579), [\#10583](https://github.com/matrix-org/synapse/issues/10583)) - Admin API to delete several media for a specific user. Contributed by @dklimpel. ([\#10558](https://github.com/matrix-org/synapse/issues/10558), [\#10628](https://github.com/matrix-org/synapse/issues/10628)) - Add support for routing `/createRoom` to workers. ([\#10564](https://github.com/matrix-org/synapse/issues/10564)) - Update the Synapse Grafana dashboard. ([\#10570](https://github.com/matrix-org/synapse/issues/10570)) - Add an admin API (`GET /_synapse/admin/username_available`) to check if a username is available (regardless of registration settings). ([\#10578](https://github.com/matrix-org/synapse/issues/10578)) - Allow editing a user's `external_ids` via the "Edit User" admin API. Contributed by @dklimpel. ([\#10598](https://github.com/matrix-org/synapse/issues/10598)) - The Synapse manhole no longer needs coroutines to be wrapped in `defer.ensureDeferred`. ([\#10602](https://github.com/matrix-org/synapse/issues/10602)) - Add option to allow modules to run periodic tasks on all instances, rather than just the one configured to run background tasks. ([\#10638](https://github.com/matrix-org/synapse/issues/10638)) Bugfixes -------- - Add some clarification to the sample config file. Contributed by @Kentokamoto. ([\#10129](https://github.com/matrix-org/synapse/issues/10129)) - Fix a long-standing bug where protocols which are not implemented by any appservices were incorrectly returned via `GET /_matrix/client/r0/thirdparty/protocols`. ([\#10532](https://github.com/matrix-org/synapse/issues/10532)) - Fix exceptions in logs when failing to get remote room list. ([\#10541](https://github.com/matrix-org/synapse/issues/10541)) - Fix longstanding bug which caused the user's presence "status message" to be reset when the user went offline. Contributed by @dklimpel. ([\#10550](https://github.com/matrix-org/synapse/issues/10550)) - Allow public rooms to be previewed in the spaces summary APIs from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10580](https://github.com/matrix-org/synapse/issues/10580)) - Fix a bug introduced in v1.37.1 where an error could occur in the asynchronous processing of PDUs when the queue was empty. ([\#10592](https://github.com/matrix-org/synapse/issues/10592)) - Fix errors on /sync when read receipt data is a string. Only affects homeservers with the experimental flag for [MSC2285](https://github.com/matrix-org/matrix-doc/pull/2285) enabled. Contributed by @SimonBrandner. ([\#10606](https://github.com/matrix-org/synapse/issues/10606)) - Additional validation for the spaces summary API to avoid errors like `ValueError: Stop argument for islice() must be None or an integer`. The missing validation has existed since v1.31.0. ([\#10611](https://github.com/matrix-org/synapse/issues/10611)) - Revert behaviour introduced in v1.38.0 that strips `org.matrix.msc2732.device_unused_fallback_key_types` from `/sync` when its value is empty. This field should instead always be present according to [MSC2732](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2732-olm-fallback-keys.md). ([\#10623](https://github.com/matrix-org/synapse/issues/10623)) Improved Documentation ---------------------- - Add documentation for configuring a forward proxy. ([\#10443](https://github.com/matrix-org/synapse/issues/10443)) - Updated the reverse proxy documentation to highlight the homserver configuration that is needed to make Synapse aware that is is intentionally reverse proxied. ([\#10551](https://github.com/matrix-org/synapse/issues/10551)) - Update CONTRIBUTING.md to fix index links and the instructions for SyTest in docker. ([\#10599](https://github.com/matrix-org/synapse/issues/10599)) Deprecations and Removals ------------------------- - No longer build `.deb` packages for Ubuntu 20.10 Groovy Gorilla, which has now EOLed. ([\#10588](https://github.com/matrix-org/synapse/issues/10588)) - The `template_dir` configuration settings in the `sso`, `account_validity` and `email` sections of the configuration file are now deprecated in favour of the global `templates.custom_template_directory` setting. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html) for more information. ([\#10596](https://github.com/matrix-org/synapse/issues/10596)) Internal Changes ---------------- - Improve event caching mechanism to avoid having multiple copies of an event in memory at a time. ([\#10119](https://github.com/matrix-org/synapse/issues/10119)) - Reduce errors in PostgreSQL logs due to concurrent serialization errors. ([\#10504](https://github.com/matrix-org/synapse/issues/10504)) - Include room ID in ignored EDU log messages. Contributed by @ilmari. ([\#10507](https://github.com/matrix-org/synapse/issues/10507)) - Add pagination to the spaces summary based on updates to [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10527](https://github.com/matrix-org/synapse/issues/10527), [\#10530](https://github.com/matrix-org/synapse/issues/10530)) - Fix CI to not break when run against branches rather than pull requests. ([\#10529](https://github.com/matrix-org/synapse/issues/10529)) - Mark all events stemming from the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint as historical. ([\#10537](https://github.com/matrix-org/synapse/issues/10537)) - Clean up some of the federation event authentication code for clarity. ([\#10539](https://github.com/matrix-org/synapse/issues/10539), [\#10591](https://github.com/matrix-org/synapse/issues/10591)) - Convert `Transaction` and `Edu` objects to attrs. ([\#10542](https://github.com/matrix-org/synapse/issues/10542)) - Update `/batch_send` endpoint to only return `state_events` created by the `state_events_from_before` passed in. ([\#10552](https://github.com/matrix-org/synapse/issues/10552)) - Update contributing.md to warn against rebasing an open PR. ([\#10563](https://github.com/matrix-org/synapse/issues/10563)) - Remove the unused public rooms replication stream. ([\#10565](https://github.com/matrix-org/synapse/issues/10565)) - Clarify error message when failing to join a restricted room. ([\#10572](https://github.com/matrix-org/synapse/issues/10572)) - Remove references to BuildKite in favour of GitHub Actions. ([\#10573](https://github.com/matrix-org/synapse/issues/10573)) - Move `/batch_send` endpoint defined by [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) to the `/v2_alpha` directory. ([\#10576](https://github.com/matrix-org/synapse/issues/10576)) - Allow multiple custom directories in `read_templates`. ([\#10587](https://github.com/matrix-org/synapse/issues/10587)) - Re-organize the `synapse.federation.transport.server` module to create smaller files. ([\#10590](https://github.com/matrix-org/synapse/issues/10590)) - Flatten the `synapse.rest.client` package by moving the contents of `v1` and `v2_alpha` into the parent. ([\#10600](https://github.com/matrix-org/synapse/issues/10600)) - Build Debian packages for Debian 12 (Bookworm). ([\#10612](https://github.com/matrix-org/synapse/issues/10612)) - Fix up a couple of links to the database schema documentation. ([\#10620](https://github.com/matrix-org/synapse/issues/10620)) - Fix a broken link to the upgrade notes. ([\#10631](https://github.com/matrix-org/synapse/issues/10631)) Synapse 1.40.0 (2021-08-10) =========================== No significant changes. Synapse 1.40.0rc3 (2021-08-09) ============================== Features -------- - Support [MSC3289: room version 8](https://github.com/matrix-org/matrix-doc/pull/3289). ([\#10449](https://github.com/matrix-org/synapse/issues/10449)) Bugfixes -------- - Mark the experimental room version from [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) as unstable. ([\#10449](https://github.com/matrix-org/synapse/issues/10449)) Improved Documentation ---------------------- - Fix broken links in `upgrade.md`. Contributed by @dklimpel. ([\#10543](https://github.com/matrix-org/synapse/issues/10543)) Synapse 1.40.0rc2 (2021-08-04) ============================== Bugfixes -------- - Fix the `PeriodicallyFlushingMemoryHandler` inhibiting application shutdown because of its background thread. ([\#10517](https://github.com/matrix-org/synapse/issues/10517)) - Fix a bug introduced in Synapse v1.40.0rc1 that could cause Synapse to respond with an error when clients would update read receipts. ([\#10531](https://github.com/matrix-org/synapse/issues/10531)) Internal Changes ---------------- - Fix release script to open the correct URL for the release. ([\#10516](https://github.com/matrix-org/synapse/issues/10516)) Synapse 1.40.0rc1 (2021-08-03) ============================== Features -------- - Add support for [MSC2033](https://github.com/matrix-org/matrix-doc/pull/2033): `device_id` on `/account/whoami`. ([\#9918](https://github.com/matrix-org/synapse/issues/9918)) - Update support for [MSC2716 - Incrementally importing history into existing rooms](https://github.com/matrix-org/matrix-doc/pull/2716). ([\#10245](https://github.com/matrix-org/synapse/issues/10245), [\#10432](https://github.com/matrix-org/synapse/issues/10432), [\#10463](https://github.com/matrix-org/synapse/issues/10463)) - Update support for [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083) to consider changes in the MSC around which servers can issue join events. ([\#10254](https://github.com/matrix-org/synapse/issues/10254), [\#10447](https://github.com/matrix-org/synapse/issues/10447), [\#10489](https://github.com/matrix-org/synapse/issues/10489)) - Initial support for [MSC3244](https://github.com/matrix-org/matrix-doc/pull/3244), Room version capabilities over the /capabilities API. ([\#10283](https://github.com/matrix-org/synapse/issues/10283)) - Add a buffered logging handler which periodically flushes itself. ([\#10407](https://github.com/matrix-org/synapse/issues/10407), [\#10515](https://github.com/matrix-org/synapse/issues/10515)) - Add support for https connections to a proxy server. Contributed by @Bubu and @dklimpel. ([\#10411](https://github.com/matrix-org/synapse/issues/10411)) - Support for [MSC2285 (hidden read receipts)](https://github.com/matrix-org/matrix-doc/pull/2285). Contributed by @SimonBrandner. ([\#10413](https://github.com/matrix-org/synapse/issues/10413)) - Email notifications now state whether an invitation is to a room or a space. ([\#10426](https://github.com/matrix-org/synapse/issues/10426)) - Allow setting transaction limit for database connections. ([\#10440](https://github.com/matrix-org/synapse/issues/10440), [\#10511](https://github.com/matrix-org/synapse/issues/10511)) - Add `creation_ts` to "list users" admin API. ([\#10448](https://github.com/matrix-org/synapse/issues/10448)) Bugfixes -------- - Improve character set detection in URL previews by supporting underscores (in addition to hyphens). Contributed by @srividyut. ([\#10410](https://github.com/matrix-org/synapse/issues/10410)) - Fix events being incorrectly rejected over federation if they reference auth events that the server needed to fetch. ([\#10439](https://github.com/matrix-org/synapse/issues/10439)) - Fix `synapse_federation_server_oldest_inbound_pdu_in_staging` Prometheus metric to not report a max age of 51 years when the queue is empty. ([\#10455](https://github.com/matrix-org/synapse/issues/10455)) - Fix a bug which caused an explicit assignment of power-level 0 to a user to be misinterpreted in rare circumstances. ([\#10499](https://github.com/matrix-org/synapse/issues/10499)) Improved Documentation ---------------------- - Fix hierarchy of providers on the OpenID page. ([\#10445](https://github.com/matrix-org/synapse/issues/10445)) - Consolidate development documentation to `docs/development/`. ([\#10453](https://github.com/matrix-org/synapse/issues/10453)) - Add some developer docs to explain room DAG concepts like `outliers`, `state_groups`, `depth`, etc. ([\#10464](https://github.com/matrix-org/synapse/issues/10464)) - Document how to use Complement while developing a new Synapse feature. ([\#10483](https://github.com/matrix-org/synapse/issues/10483)) Internal Changes ---------------- - Prune inbound federation queues for a room if they get too large. ([\#10390](https://github.com/matrix-org/synapse/issues/10390)) - Add type hints to `synapse.federation.transport.client` module. ([\#10408](https://github.com/matrix-org/synapse/issues/10408)) - Remove shebang line from module files. ([\#10415](https://github.com/matrix-org/synapse/issues/10415)) - Drop backwards-compatibility code that was required to support Ubuntu Xenial. ([\#10429](https://github.com/matrix-org/synapse/issues/10429)) - Use a docker image cache for the prerequisites for the debian package build. ([\#10431](https://github.com/matrix-org/synapse/issues/10431)) - Improve servlet type hints. ([\#10437](https://github.com/matrix-org/synapse/issues/10437), [\#10438](https://github.com/matrix-org/synapse/issues/10438)) - Replace usage of `or_ignore` in `simple_insert` with `simple_upsert` usage, to stop spamming postgres logs with spurious ERROR messages. ([\#10442](https://github.com/matrix-org/synapse/issues/10442)) - Update the `tests-done` Github Actions status. ([\#10444](https://github.com/matrix-org/synapse/issues/10444), [\#10512](https://github.com/matrix-org/synapse/issues/10512)) - Update type annotations to work with forthcoming Twisted 21.7.0 release. ([\#10446](https://github.com/matrix-org/synapse/issues/10446), [\#10450](https://github.com/matrix-org/synapse/issues/10450)) - Cancel redundant GHA workflows when a new commit is pushed. ([\#10451](https://github.com/matrix-org/synapse/issues/10451)) - Mitigate media repo XSS attacks on IE11 via the non-standard X-Content-Security-Policy header. ([\#10468](https://github.com/matrix-org/synapse/issues/10468)) - Additional type hints in the state handler. ([\#10482](https://github.com/matrix-org/synapse/issues/10482)) - Update syntax used to run complement tests. ([\#10488](https://github.com/matrix-org/synapse/issues/10488)) - Fix up type annotations to work with Twisted 21.7. ([\#10490](https://github.com/matrix-org/synapse/issues/10490)) - Improve type annotations for `ObservableDeferred`. ([\#10491](https://github.com/matrix-org/synapse/issues/10491)) - Extend release script to also tag and create GitHub releases. ([\#10496](https://github.com/matrix-org/synapse/issues/10496)) - Fix a bug which caused production debian packages to be incorrectly marked as 'prerelease'. ([\#10500](https://github.com/matrix-org/synapse/issues/10500)) Synapse 1.39.0 (2021-07-29) =========================== No significant changes. Synapse 1.39.0rc3 (2021-07-28) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.38 which caused an exception at startup when SAML authentication was enabled. ([\#10477](https://github.com/matrix-org/synapse/issues/10477)) - Fix a long-standing bug where Synapse would not inform clients that a device had exhausted its one-time-key pool, potentially causing problems decrypting events. ([\#10485](https://github.com/matrix-org/synapse/issues/10485)) - Fix reporting old R30 stats as R30v2 stats. Introduced in v1.39.0rc1. ([\#10486](https://github.com/matrix-org/synapse/issues/10486)) Internal Changes ---------------- - Fix an error which prevented the Github Actions workflow to build the docker images from running. ([\#10461](https://github.com/matrix-org/synapse/issues/10461)) - Fix release script to correctly version debian changelog when doing RCs. ([\#10465](https://github.com/matrix-org/synapse/issues/10465)) Synapse 1.39.0rc2 (2021-07-22) ============================== This release also includes the changes in v1.38.1. Internal Changes ---------------- - Move docker image build to Github Actions. ([\#10416](https://github.com/matrix-org/synapse/issues/10416)) Synapse 1.38.1 (2021-07-22) =========================== Bugfixes -------- - Always include `device_one_time_keys_count` key in `/sync` response to work around a bug in Element Android that broke encryption for new devices. ([\#10457](https://github.com/matrix-org/synapse/issues/10457)) Synapse 1.39.0rc1 (2021-07-20) ============================== The Third-Party Event Rules module interface has been deprecated in favour of the generic module interface introduced in Synapse v1.37.0. Support for the old interface is planned to be removed in September 2021. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html#upgrading-to-v1390) for more information. Features -------- - Add the ability to override the account validity feature with a module. ([\#9884](https://github.com/matrix-org/synapse/issues/9884)) - The spaces summary API now returns any joinable rooms, not only rooms which are world-readable. ([\#10298](https://github.com/matrix-org/synapse/issues/10298), [\#10305](https://github.com/matrix-org/synapse/issues/10305)) - Add a new version of the R30 phone-home metric, which removes a false impression of retention given by the old R30 metric. ([\#10332](https://github.com/matrix-org/synapse/issues/10332), [\#10427](https://github.com/matrix-org/synapse/issues/10427)) - Allow providing credentials to `http_proxy`. ([\#10360](https://github.com/matrix-org/synapse/issues/10360)) Bugfixes -------- - Fix error while dropping locks on shutdown. Introduced in v1.38.0. ([\#10433](https://github.com/matrix-org/synapse/issues/10433)) - Add base starting insertion event when no chunk ID is specified in the historical batch send API. ([\#10250](https://github.com/matrix-org/synapse/issues/10250)) - Fix historical batch send endpoint (MSC2716) rejecting batches with messages from multiple senders. ([\#10276](https://github.com/matrix-org/synapse/issues/10276)) - Fix purging rooms that other homeservers are still sending events for. Contributed by @ilmari. ([\#10317](https://github.com/matrix-org/synapse/issues/10317)) - Fix errors during backfill caused by previously purged redaction events. Contributed by Andreas Rammhold (@andir). ([\#10343](https://github.com/matrix-org/synapse/issues/10343)) - Fix the user directory becoming broken (and noisy errors being logged) when knocking and room statistics are in use. ([\#10344](https://github.com/matrix-org/synapse/issues/10344)) - Fix newly added `synapse_federation_server_oldest_inbound_pdu_in_staging` prometheus metric to measure age rather than timestamp. ([\#10355](https://github.com/matrix-org/synapse/issues/10355)) - Fix PostgreSQL sometimes using table scans for queries against `state_groups_state` table, taking a long time and a large amount of IO. ([\#10359](https://github.com/matrix-org/synapse/issues/10359)) - Fix `make_room_admin` failing for users that have left a private room. ([\#10367](https://github.com/matrix-org/synapse/issues/10367)) - Fix a number of logged errors caused by remote servers being down. ([\#10400](https://github.com/matrix-org/synapse/issues/10400), [\#10414](https://github.com/matrix-org/synapse/issues/10414)) - Responses from `/make_{join,leave,knock}` no longer include signatures, which will turn out to be invalid after events are returned to `/send_{join,leave,knock}`. ([\#10404](https://github.com/matrix-org/synapse/issues/10404)) Improved Documentation ---------------------- - Updated installation dependencies for newer macOS versions and ARM Macs. Contributed by Luke Walsh. ([\#9971](https://github.com/matrix-org/synapse/issues/9971)) - Simplify structure of room admin API. ([\#10313](https://github.com/matrix-org/synapse/issues/10313)) - Refresh the logcontext dev documentation. ([\#10353](https://github.com/matrix-org/synapse/issues/10353)), ([\#10337](https://github.com/matrix-org/synapse/issues/10337)) - Add delegation example for caddy in the reverse proxy documentation. Contributed by @moritzdietz. ([\#10368](https://github.com/matrix-org/synapse/issues/10368)) - Fix and clarify some links in `docs` and `contrib`. ([\#10370](https://github.com/matrix-org/synapse/issues/10370)), ([\#10322](https://github.com/matrix-org/synapse/issues/10322)), ([\#10399](https://github.com/matrix-org/synapse/issues/10399)) - Make deprecation notice of the spam checker doc more obvious. ([\#10395](https://github.com/matrix-org/synapse/issues/10395)) - Add instructions on installing Debian packages for release candidates. ([\#10396](https://github.com/matrix-org/synapse/issues/10396)) Deprecations and Removals ------------------------- - Remove functionality associated with the unused `room_stats_historical` and `user_stats_historical` tables. Contributed by @xmunoz. ([\#9721](https://github.com/matrix-org/synapse/issues/9721)) - The third-party event rules module interface is deprecated in favour of the generic module interface introduced in Synapse v1.37.0. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html#upgrading-to-v1390) for more information. ([\#10386](https://github.com/matrix-org/synapse/issues/10386)) Internal Changes ---------------- - Convert `room_depth.min_depth` column to a `BIGINT`. ([\#10289](https://github.com/matrix-org/synapse/issues/10289)) - Add tests to characterise the current behaviour of R30 phone-home metrics. ([\#10315](https://github.com/matrix-org/synapse/issues/10315)) - Rebuild event context and auth when processing specific results from `ThirdPartyEventRules` modules. ([\#10316](https://github.com/matrix-org/synapse/issues/10316)) - Minor change to the code that populates `user_daily_visits`. ([\#10324](https://github.com/matrix-org/synapse/issues/10324)) - Re-enable Sytests that were disabled for the 1.37.1 release. ([\#10345](https://github.com/matrix-org/synapse/issues/10345), [\#10357](https://github.com/matrix-org/synapse/issues/10357)) - Run `pyupgrade` on the codebase. ([\#10347](https://github.com/matrix-org/synapse/issues/10347), [\#10348](https://github.com/matrix-org/synapse/issues/10348)) - Switch `application_services_txns.txn_id` database column to `BIGINT`. ([\#10349](https://github.com/matrix-org/synapse/issues/10349)) - Convert internal type variable syntax to reflect wider ecosystem use. ([\#10350](https://github.com/matrix-org/synapse/issues/10350), [\#10380](https://github.com/matrix-org/synapse/issues/10380), [\#10381](https://github.com/matrix-org/synapse/issues/10381), [\#10382](https://github.com/matrix-org/synapse/issues/10382), [\#10418](https://github.com/matrix-org/synapse/issues/10418)) - Make the Github Actions workflow configuration more efficient. ([\#10383](https://github.com/matrix-org/synapse/issues/10383)) - Add type hints to `get_{domain,localpart}_from_id`. ([\#10385](https://github.com/matrix-org/synapse/issues/10385)) - When building Debian packages for prerelease versions, set the Section accordingly. ([\#10391](https://github.com/matrix-org/synapse/issues/10391)) - Add type hints and comments to event auth code. ([\#10393](https://github.com/matrix-org/synapse/issues/10393)) - Stagger sending of presence update to remote servers, reducing CPU spikes caused by starting many connections to remote servers at once. ([\#10398](https://github.com/matrix-org/synapse/issues/10398)) - Remove unused `events_by_room` code (tech debt). ([\#10421](https://github.com/matrix-org/synapse/issues/10421)) - Add a github actions job which records success of other jobs. ([\#10430](https://github.com/matrix-org/synapse/issues/10430)) Synapse 1.38.0 (2021-07-13) =========================== This release includes a database schema update which could result in elevated disk usage. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1380) for more information. No significant changes since 1.38.0rc3. Synapse 1.38.0rc3 (2021-07-13) ============================== Internal Changes ---------------- - Build the Debian packages in CI. ([\#10247](https://github.com/matrix-org/synapse/issues/10247), [\#10379](https://github.com/matrix-org/synapse/issues/10379)) Synapse 1.38.0rc2 (2021-07-09) ============================== Bugfixes -------- - Fix bug where inbound federation in a room could be delayed due to not correctly dropping a lock. Introduced in v1.37.1. ([\#10336](https://github.com/matrix-org/synapse/issues/10336)) Improved Documentation ---------------------- - Update links to documentation in the sample config. Contributed by @dklimpel. ([\#10287](https://github.com/matrix-org/synapse/issues/10287)) - Fix broken links in [INSTALL.md](INSTALL.md). Contributed by @dklimpel. ([\#10331](https://github.com/matrix-org/synapse/issues/10331)) Synapse 1.38.0rc1 (2021-07-06) ============================== Features -------- - Implement refresh tokens as specified by [MSC2918](https://github.com/matrix-org/matrix-doc/pull/2918). ([\#9450](https://github.com/matrix-org/synapse/issues/9450)) - Add support for evicting cache entries based on last access time. ([\#10205](https://github.com/matrix-org/synapse/issues/10205)) - Omit empty fields from the `/sync` response. Contributed by @deepbluev7. ([\#10214](https://github.com/matrix-org/synapse/issues/10214)) - Improve validation on federation `send_{join,leave,knock}` endpoints. ([\#10225](https://github.com/matrix-org/synapse/issues/10225), [\#10243](https://github.com/matrix-org/synapse/issues/10243)) - Add SSO `external_ids` to the Query User Account admin API. ([\#10261](https://github.com/matrix-org/synapse/issues/10261)) - Mark events received over federation which fail a spam check as "soft-failed". ([\#10263](https://github.com/matrix-org/synapse/issues/10263)) - Add metrics for new inbound federation staging area. ([\#10284](https://github.com/matrix-org/synapse/issues/10284)) - Add script to print information about recently registered users. ([\#10290](https://github.com/matrix-org/synapse/issues/10290)) Bugfixes -------- - Fix a long-standing bug which meant that invite rejections and knocks were not sent out over federation in a timely manner. ([\#10223](https://github.com/matrix-org/synapse/issues/10223)) - Fix a bug introduced in v1.26.0 where only users who have set profile information could be deactivated with erasure enabled. ([\#10252](https://github.com/matrix-org/synapse/issues/10252)) - Fix a long-standing bug where Synapse would return errors after 231 events were handled by the server. ([\#10264](https://github.com/matrix-org/synapse/issues/10264), [\#10267](https://github.com/matrix-org/synapse/issues/10267), [\#10282](https://github.com/matrix-org/synapse/issues/10282), [\#10286](https://github.com/matrix-org/synapse/issues/10286), [\#10291](https://github.com/matrix-org/synapse/issues/10291), [\#10314](https://github.com/matrix-org/synapse/issues/10314), [\#10326](https://github.com/matrix-org/synapse/issues/10326)) - Fix the prometheus `synapse_federation_server_pdu_process_time` metric. Broke in v1.37.1. ([\#10279](https://github.com/matrix-org/synapse/issues/10279)) - Ensure that inbound events from federation that were being processed when Synapse was restarted get promptly processed on start up. ([\#10303](https://github.com/matrix-org/synapse/issues/10303)) Improved Documentation ---------------------- - Move the upgrade notes to [docs/upgrade.md](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md) and convert them to markdown. ([\#10166](https://github.com/matrix-org/synapse/issues/10166)) - Choose Welcome & Overview as the default page for synapse documentation website. ([\#10242](https://github.com/matrix-org/synapse/issues/10242)) - Adjust the URL in the README.rst file to point to irc.libera.chat. ([\#10258](https://github.com/matrix-org/synapse/issues/10258)) - Fix homeserver config option name in presence router documentation. ([\#10288](https://github.com/matrix-org/synapse/issues/10288)) - Fix link pointing at the wrong section in the modules documentation page. ([\#10302](https://github.com/matrix-org/synapse/issues/10302)) Internal Changes ---------------- - Drop `Origin` and `Accept` from the value of the `Access-Control-Allow-Headers` response header. ([\#10114](https://github.com/matrix-org/synapse/issues/10114)) - Add type hints to the federation servlets. ([\#10213](https://github.com/matrix-org/synapse/issues/10213)) - Improve the reliability of auto-joining remote rooms. ([\#10237](https://github.com/matrix-org/synapse/issues/10237)) - Update the release script to use the semver terminology and determine the release branch based on the next version. ([\#10239](https://github.com/matrix-org/synapse/issues/10239)) - Fix type hints for computing auth events. ([\#10253](https://github.com/matrix-org/synapse/issues/10253)) - Improve the performance of the spaces summary endpoint by only recursing into spaces (and not rooms in general). ([\#10256](https://github.com/matrix-org/synapse/issues/10256)) - Move event authentication methods from `Auth` to `EventAuthHandler`. ([\#10268](https://github.com/matrix-org/synapse/issues/10268)) - Re-enable a SyTest after it has been fixed. ([\#10292](https://github.com/matrix-org/synapse/issues/10292)) Synapse 1.37.1 (2021-06-30) =========================== This release resolves issues (such as [#9490](https://github.com/matrix-org/synapse/issues/9490)) where one busy room could cause head-of-line blocking, starving Synapse from processing events in other rooms, and causing all federated traffic to fall behind. Synapse 1.37.1 processes inbound federation traffic asynchronously, ensuring that one busy room won't impact others. Please upgrade to Synapse 1.37.1 as soon as possible, in order to increase resilience to other traffic spikes. No significant changes since v1.37.1rc1. Synapse 1.37.1rc1 (2021-06-29) ============================== Features -------- - Handle inbound events from federation asynchronously. ([\#10269](https://github.com/matrix-org/synapse/issues/10269), [\#10272](https://github.com/matrix-org/synapse/issues/10272)) Synapse 1.37.0 (2021-06-29) =========================== This release deprecates the current spam checker interface. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#deprecation-of-the-current-spam-checker-interface) for more information on how to update to the new generic module interface. This release also removes support for fetching and renewing TLS certificates using the ACME v1 protocol, which has been fully decommissioned by Let's Encrypt on June 1st 2021. Admins previously using this feature should use a [reverse proxy](https://matrix-org.github.io/synapse/develop/reverse_proxy.html) to handle TLS termination, or use an external ACME client (such as [certbot](https://certbot.eff.org/)) to retrieve a certificate and key and provide them to Synapse using the `tls_certificate_path` and `tls_private_key_path` configuration settings. Synapse 1.37.0rc1 (2021-06-24) ============================== Features -------- - Implement "room knocking" as per [MSC2403](https://github.com/matrix-org/matrix-doc/pull/2403). Contributed by @Sorunome and anoa. ([\#6739](https://github.com/matrix-org/synapse/issues/6739), [\#9359](https://github.com/matrix-org/synapse/issues/9359), [\#10167](https://github.com/matrix-org/synapse/issues/10167), [\#10212](https://github.com/matrix-org/synapse/issues/10212), [\#10227](https://github.com/matrix-org/synapse/issues/10227)) - Add experimental support for backfilling history into rooms ([MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716)). ([\#9247](https://github.com/matrix-org/synapse/issues/9247)) - Implement a generic interface for third-party plugin modules. ([\#10062](https://github.com/matrix-org/synapse/issues/10062), [\#10206](https://github.com/matrix-org/synapse/issues/10206)) - Implement config option `sso.update_profile_information` to sync SSO users' profile information with the identity provider each time they login. Currently only displayname is supported. ([\#10108](https://github.com/matrix-org/synapse/issues/10108)) - Ensure that errors during startup are written to the logs and the console. ([\#10191](https://github.com/matrix-org/synapse/issues/10191)) Bugfixes -------- - Fix a bug introduced in Synapse v1.25.0 that prevented the `ip_range_whitelist` configuration option from working for federation and identity servers. Contributed by @mikure. ([\#10115](https://github.com/matrix-org/synapse/issues/10115)) - Remove a broken import line in Synapse's `admin_cmd` worker. Broke in Synapse v1.33.0. ([\#10154](https://github.com/matrix-org/synapse/issues/10154)) - Fix a bug introduced in Synapse v1.21.0 which could cause `/sync` to return immediately with an empty response. ([\#10157](https://github.com/matrix-org/synapse/issues/10157), [\#10158](https://github.com/matrix-org/synapse/issues/10158)) - Fix a minor bug in the response to `/_matrix/client/r0/user/{user}/openid/request_token` causing `expires_in` to be a float instead of an integer. Contributed by @lukaslihotzki. ([\#10175](https://github.com/matrix-org/synapse/issues/10175)) - Always require users to re-authenticate for dangerous operations: deactivating an account, modifying an account password, and adding 3PIDs. ([\#10184](https://github.com/matrix-org/synapse/issues/10184)) - Fix a bug introduced in Synpase v1.7.2 where remote server count metrics collection would be incorrectly delayed on startup. Found by @heftig. ([\#10195](https://github.com/matrix-org/synapse/issues/10195)) - Fix a bug introduced in Synapse v1.35.1 where an `allow` key of a `m.room.join_rules` event could be applied for incorrect room versions and configurations. ([\#10208](https://github.com/matrix-org/synapse/issues/10208)) - Fix performance regression in responding to user key requests over federation. Introduced in Synapse v1.34.0rc1. ([\#10221](https://github.com/matrix-org/synapse/issues/10221)) Improved Documentation ---------------------- - Add a new guide to decoding request logs. ([\#8436](https://github.com/matrix-org/synapse/issues/8436)) - Mention in the sample homeserver config that you may need to configure max upload size in your reverse proxy. Contributed by @aaronraimist. ([\#10122](https://github.com/matrix-org/synapse/issues/10122)) - Fix broken links in documentation. ([\#10180](https://github.com/matrix-org/synapse/issues/10180)) - Deploy a snapshot of the documentation website upon each new Synapse release. ([\#10198](https://github.com/matrix-org/synapse/issues/10198)) Deprecations and Removals ------------------------- - The current spam checker interface is deprecated in favour of a new generic modules system. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#deprecation-of-the-current-spam-checker-interface) for more information on how to update to the new system. ([\#10062](https://github.com/matrix-org/synapse/issues/10062), [\#10210](https://github.com/matrix-org/synapse/issues/10210), [\#10238](https://github.com/matrix-org/synapse/issues/10238)) - Stop supporting the unstable spaces prefixes from MSC1772. ([\#10161](https://github.com/matrix-org/synapse/issues/10161)) - Remove Synapse's support for automatically fetching and renewing certificates using the ACME v1 protocol. This protocol has been fully turned off by Let's Encrypt for existing installations on June 1st 2021. Admins previously using this feature should use a [reverse proxy](https://matrix-org.github.io/synapse/develop/reverse_proxy.html) to handle TLS termination, or use an external ACME client (such as [certbot](https://certbot.eff.org/)) to retrieve a certificate and key and provide them to Synapse using the `tls_certificate_path` and `tls_private_key_path` configuration settings. ([\#10194](https://github.com/matrix-org/synapse/issues/10194)) Internal Changes ---------------- - Update the database schema versioning to support gradual migration away from legacy tables. ([\#9933](https://github.com/matrix-org/synapse/issues/9933)) - Add type hints to the federation servlets. ([\#10080](https://github.com/matrix-org/synapse/issues/10080)) - Improve OpenTracing for event persistence. ([\#10134](https://github.com/matrix-org/synapse/issues/10134), [\#10193](https://github.com/matrix-org/synapse/issues/10193)) - Clean up the interface for injecting OpenTracing over HTTP. ([\#10143](https://github.com/matrix-org/synapse/issues/10143)) - Limit the number of in-flight `/keys/query` requests from a single device. ([\#10144](https://github.com/matrix-org/synapse/issues/10144)) - Refactor EventPersistenceQueue. ([\#10145](https://github.com/matrix-org/synapse/issues/10145)) - Document `SYNAPSE_TEST_LOG_LEVEL` to see the logger output when running tests. ([\#10148](https://github.com/matrix-org/synapse/issues/10148)) - Update the Complement build tags in GitHub Actions to test currently experimental features. ([\#10155](https://github.com/matrix-org/synapse/issues/10155)) - Add a `synapse_federation_soft_failed_events_total` metric to track how often events are soft failed. ([\#10156](https://github.com/matrix-org/synapse/issues/10156)) - Fetch the corresponding complement branch when performing CI. ([\#10160](https://github.com/matrix-org/synapse/issues/10160)) - Add some developer documentation about boolean columns in database schemas. ([\#10164](https://github.com/matrix-org/synapse/issues/10164)) - Add extra logging fields to better debug where events are being soft failed. ([\#10168](https://github.com/matrix-org/synapse/issues/10168)) - Add debug logging for when we enter and exit `Measure` blocks. ([\#10183](https://github.com/matrix-org/synapse/issues/10183)) - Improve comments in structured logging code. ([\#10188](https://github.com/matrix-org/synapse/issues/10188)) - Update [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083) support with modifications from the MSC. ([\#10189](https://github.com/matrix-org/synapse/issues/10189)) - Remove redundant DNS lookup limiter. ([\#10190](https://github.com/matrix-org/synapse/issues/10190)) - Upgrade `black` linting tool to 21.6b0. ([\#10197](https://github.com/matrix-org/synapse/issues/10197)) - Expose OpenTracing trace id in response headers. ([\#10199](https://github.com/matrix-org/synapse/issues/10199)) Synapse 1.36.0 (2021-06-15) =========================== No significant changes. Synapse 1.36.0rc2 (2021-06-11) ============================== Bugfixes -------- - Fix a bug which caused presence updates to stop working some time after a restart, when using a presence writer worker. Broke in v1.33.0. ([\#10149](https://github.com/matrix-org/synapse/issues/10149)) - Fix a bug when using federation sender worker where it would send out more presence updates than necessary, leading to high resource usage. Broke in v1.33.0. ([\#10163](https://github.com/matrix-org/synapse/issues/10163)) - Fix a bug where Synapse could send the same presence update to a remote twice. ([\#10165](https://github.com/matrix-org/synapse/issues/10165)) Synapse 1.36.0rc1 (2021-06-08) ============================== Features -------- - Add new endpoint `/_matrix/client/r0/rooms/{roomId}/aliases` from Client-Server API r0.6.1 (previously [MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432)). ([\#9224](https://github.com/matrix-org/synapse/issues/9224)) - Improve performance of incoming federation transactions in large rooms. ([\#9953](https://github.com/matrix-org/synapse/issues/9953), [\#9973](https://github.com/matrix-org/synapse/issues/9973)) - Rewrite logic around verifying JSON object and fetching server keys to be more performant and use less memory. ([\#10035](https://github.com/matrix-org/synapse/issues/10035)) - Add new admin APIs for unprotecting local media from quarantine. Contributed by @dklimpel. ([\#10040](https://github.com/matrix-org/synapse/issues/10040)) - Add new admin APIs to remove media by media ID from quarantine. Contributed by @dklimpel. ([\#10044](https://github.com/matrix-org/synapse/issues/10044)) - Make reason and score parameters optional for reporting content. Implements [MSC2414](https://github.com/matrix-org/matrix-doc/pull/2414). Contributed by Callum Brown. ([\#10077](https://github.com/matrix-org/synapse/issues/10077)) - Add support for routing more requests to workers. ([\#10084](https://github.com/matrix-org/synapse/issues/10084)) - Report OpenTracing spans for database activity. ([\#10113](https://github.com/matrix-org/synapse/issues/10113), [\#10136](https://github.com/matrix-org/synapse/issues/10136), [\#10141](https://github.com/matrix-org/synapse/issues/10141)) - Significantly reduce memory usage of joining large remote rooms. ([\#10117](https://github.com/matrix-org/synapse/issues/10117)) Bugfixes -------- - Fixed a bug causing replication requests to fail when receiving a lot of events via federation. ([\#10082](https://github.com/matrix-org/synapse/issues/10082)) - Fix a bug in the `force_tracing_for_users` option introduced in Synapse v1.35 which meant that the OpenTracing spans produced were missing most tags. ([\#10092](https://github.com/matrix-org/synapse/issues/10092)) - Fixed a bug that could cause Synapse to stop notifying application services. Contributed by Willem Mulder. ([\#10107](https://github.com/matrix-org/synapse/issues/10107)) - Fix bug where the server would attempt to fetch the same history in the room from a remote server multiple times in parallel. ([\#10116](https://github.com/matrix-org/synapse/issues/10116)) - Fix a bug introduced in Synapse 1.33.0 which caused replication requests to fail when receiving a lot of very large events via federation. ([\#10118](https://github.com/matrix-org/synapse/issues/10118)) - Fix bug when using workers where pagination requests failed if a remote server returned zero events from `/backfill`. Introduced in 1.35.0. ([\#10133](https://github.com/matrix-org/synapse/issues/10133)) Improved Documentation ---------------------- - Clarify security note regarding hosting Synapse on the same domain as other web applications. ([\#9221](https://github.com/matrix-org/synapse/issues/9221)) - Update CAPTCHA documentation to mention turning off the verify origin feature. Contributed by @aaronraimist. ([\#10046](https://github.com/matrix-org/synapse/issues/10046)) - Tweak wording of database recommendation in `INSTALL.md`. Contributed by @aaronraimist. ([\#10057](https://github.com/matrix-org/synapse/issues/10057)) - Add initial infrastructure for rendering Synapse documentation with mdbook. ([\#10086](https://github.com/matrix-org/synapse/issues/10086)) - Convert the remaining Admin API documentation files to markdown. ([\#10089](https://github.com/matrix-org/synapse/issues/10089)) - Make a link in docs use HTTPS. Contributed by @RhnSharma. ([\#10130](https://github.com/matrix-org/synapse/issues/10130)) - Fix broken link in Docker docs. ([\#10132](https://github.com/matrix-org/synapse/issues/10132)) Deprecations and Removals ------------------------- - Remove the experimental `spaces_enabled` flag. The spaces features are always available now. ([\#10063](https://github.com/matrix-org/synapse/issues/10063)) Internal Changes ---------------- - Tell CircleCI to build Docker images from `main` branch. ([\#9906](https://github.com/matrix-org/synapse/issues/9906)) - Simplify naming convention for release branches to only include the major and minor version numbers. ([\#10013](https://github.com/matrix-org/synapse/issues/10013)) - Add `parse_strings_from_args` for parsing an array from query parameters. ([\#10048](https://github.com/matrix-org/synapse/issues/10048), [\#10137](https://github.com/matrix-org/synapse/issues/10137)) - Remove some dead code regarding TLS certificate handling. ([\#10054](https://github.com/matrix-org/synapse/issues/10054)) - Remove redundant, unmaintained `convert_server_keys` script. ([\#10055](https://github.com/matrix-org/synapse/issues/10055)) - Improve the error message printed by synctl when synapse fails to start. ([\#10059](https://github.com/matrix-org/synapse/issues/10059)) - Fix GitHub Actions lint for newsfragments. ([\#10069](https://github.com/matrix-org/synapse/issues/10069)) - Update opentracing to inject the right context into the carrier. ([\#10074](https://github.com/matrix-org/synapse/issues/10074)) - Fix up `BatchingQueue` implementation. ([\#10078](https://github.com/matrix-org/synapse/issues/10078)) - Log method and path when dropping request due to size limit. ([\#10091](https://github.com/matrix-org/synapse/issues/10091)) - In Github Actions workflows, summarize the Sytest results in an easy-to-read format. ([\#10094](https://github.com/matrix-org/synapse/issues/10094)) - Make `/sync` do fewer state resolutions. ([\#10102](https://github.com/matrix-org/synapse/issues/10102)) - Add missing type hints to the admin API servlets. ([\#10105](https://github.com/matrix-org/synapse/issues/10105)) - Improve opentracing annotations for `Notifier`. ([\#10111](https://github.com/matrix-org/synapse/issues/10111)) - Enable Prometheus metrics for the jaeger client library. ([\#10112](https://github.com/matrix-org/synapse/issues/10112)) - Work to improve the responsiveness of `/sync` requests. ([\#10124](https://github.com/matrix-org/synapse/issues/10124)) - OpenTracing: use a consistent name for background processes. ([\#10135](https://github.com/matrix-org/synapse/issues/10135)) Synapse 1.35.1 (2021-06-03) =========================== Bugfixes -------- - Fix a bug introduced in v1.35.0 where invite-only rooms would be shown to all users in a space, regardless of if the user had access to it. ([\#10109](https://github.com/matrix-org/synapse/issues/10109)) Synapse 1.35.0 (2021-06-01) =========================== Note that [the tag](https://github.com/matrix-org/synapse/releases/tag/v1.35.0rc3) and [docker images](https://hub.docker.com/layers/matrixdotorg/synapse/v1.35.0rc3/images/sha256-34ccc87bd99a17e2cbc0902e678b5937d16bdc1991ead097eee6096481ecf2c4?context=explore) for `v1.35.0rc3` were incorrectly built. If you are experiencing issues with either, it is recommended to upgrade to the equivalent tag or docker image for the `v1.35.0` release. Deprecations and Removals ------------------------- - The core Synapse development team plan to drop support for the [unstable API of MSC2858](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2858-Multiple-SSO-Identity-Providers.md#unstable-prefix), including the undocumented `experimental.msc2858_enabled` config option, in August 2021. Client authors should ensure that their clients are updated to use the stable API (which has been supported since Synapse 1.30) well before that time, to give their users time to upgrade. ([\#10101](https://github.com/matrix-org/synapse/issues/10101)) Bugfixes -------- - Fixed a bug causing replication requests to fail when receiving a lot of events via federation. Introduced in v1.33.0. ([\#10082](https://github.com/matrix-org/synapse/issues/10082)) - Fix HTTP response size limit to allow joining very large rooms over federation. Introduced in v1.33.0. ([\#10093](https://github.com/matrix-org/synapse/issues/10093)) Internal Changes ---------------- - Log method and path when dropping request due to size limit. ([\#10091](https://github.com/matrix-org/synapse/issues/10091)) Synapse 1.35.0rc2 (2021-05-27) ============================== Bugfixes -------- - Fix a bug introduced in v1.35.0rc1 when calling the spaces summary API via a GET request. ([\#10079](https://github.com/matrix-org/synapse/issues/10079)) Synapse 1.35.0rc1 (2021-05-25) ============================== Features -------- - Add experimental support to allow a user who could join a restricted room to view it in the spaces summary. ([\#9922](https://github.com/matrix-org/synapse/issues/9922), [\#10007](https://github.com/matrix-org/synapse/issues/10007), [\#10038](https://github.com/matrix-org/synapse/issues/10038)) - Reduce memory usage when joining very large rooms over federation. ([\#9958](https://github.com/matrix-org/synapse/issues/9958)) - Add a configuration option which allows enabling opentracing by user id. ([\#9978](https://github.com/matrix-org/synapse/issues/9978)) - Enable experimental support for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946) (spaces summary API) and [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083) (restricted join rules) by default. ([\#10011](https://github.com/matrix-org/synapse/issues/10011)) Bugfixes -------- - Fix a bug introduced in v1.26.0 which meant that `synapse_port_db` would not correctly initialise some postgres sequences, requiring manual updates afterwards. ([\#9991](https://github.com/matrix-org/synapse/issues/9991)) - Fix `synctl`'s `--no-daemonize` parameter to work correctly with worker processes. ([\#9995](https://github.com/matrix-org/synapse/issues/9995)) - Fix a validation bug introduced in v1.34.0 in the ordering of spaces in the space summary API. ([\#10002](https://github.com/matrix-org/synapse/issues/10002)) - Fixed deletion of new presence stream states from database. ([\#10014](https://github.com/matrix-org/synapse/issues/10014), [\#10033](https://github.com/matrix-org/synapse/issues/10033)) - Fixed a bug with very high resolution image uploads throwing internal server errors. ([\#10029](https://github.com/matrix-org/synapse/issues/10029)) Updates to the Docker image --------------------------- - Fix bug introduced in Synapse 1.33.0 which caused a `Permission denied: '/homeserver.log'` error when starting Synapse with the generated log configuration. Contributed by Sergio Miguéns Iglesias. ([\#10045](https://github.com/matrix-org/synapse/issues/10045)) Improved Documentation ---------------------- - Add hardened systemd files as proposed in [#9760](https://github.com/matrix-org/synapse/issues/9760) and added them to `contrib/`. Change the docs to reflect the presence of these files. ([\#9803](https://github.com/matrix-org/synapse/issues/9803)) - Clarify documentation around SSO mapping providers generating unique IDs and localparts. ([\#9980](https://github.com/matrix-org/synapse/issues/9980)) - Updates to the PostgreSQL documentation (`postgres.md`). ([\#9988](https://github.com/matrix-org/synapse/issues/9988), [\#9989](https://github.com/matrix-org/synapse/issues/9989)) - Fix broken link in user directory documentation. Contributed by @junquera. ([\#10016](https://github.com/matrix-org/synapse/issues/10016)) - Add missing room state entry to the table of contents of room admin API. ([\#10043](https://github.com/matrix-org/synapse/issues/10043)) Deprecations and Removals ------------------------- - Removed support for the deprecated `tls_fingerprints` configuration setting. Contributed by Jerin J Titus. ([\#9280](https://github.com/matrix-org/synapse/issues/9280)) Internal Changes ---------------- - Allow sending full presence to users via workers other than the one that called `ModuleApi.send_local_online_presence_to`. ([\#9823](https://github.com/matrix-org/synapse/issues/9823)) - Update comments in the space summary handler. ([\#9974](https://github.com/matrix-org/synapse/issues/9974)) - Minor enhancements to the `@cachedList` descriptor. ([\#9975](https://github.com/matrix-org/synapse/issues/9975)) - Split multipart email sending into a dedicated handler. ([\#9977](https://github.com/matrix-org/synapse/issues/9977)) - Run `black` on files in the `scripts` directory. ([\#9981](https://github.com/matrix-org/synapse/issues/9981)) - Add missing type hints to `synapse.util` module. ([\#9982](https://github.com/matrix-org/synapse/issues/9982)) - Simplify a few helper functions. ([\#9984](https://github.com/matrix-org/synapse/issues/9984), [\#9985](https://github.com/matrix-org/synapse/issues/9985), [\#9986](https://github.com/matrix-org/synapse/issues/9986)) - Remove unnecessary property from SQLBaseStore. ([\#9987](https://github.com/matrix-org/synapse/issues/9987)) - Remove `keylen` param on `LruCache`. ([\#9993](https://github.com/matrix-org/synapse/issues/9993)) - Update the Grafana dashboard in `contrib/`. ([\#10001](https://github.com/matrix-org/synapse/issues/10001)) - Add a batching queue implementation. ([\#10017](https://github.com/matrix-org/synapse/issues/10017)) - Reduce memory usage when verifying signatures on large numbers of events at once. ([\#10018](https://github.com/matrix-org/synapse/issues/10018)) - Properly invalidate caches for destination retry timings every (instead of expiring entries every 5 minutes). ([\#10036](https://github.com/matrix-org/synapse/issues/10036)) - Fix running complement tests with Synapse workers. ([\#10039](https://github.com/matrix-org/synapse/issues/10039)) - Fix typo in `get_state_ids_for_event` docstring where the return type was incorrect. ([\#10050](https://github.com/matrix-org/synapse/issues/10050)) Synapse 1.34.0 (2021-05-17) =========================== This release deprecates the `room_invite_state_types` configuration setting. See the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.34.0/UPGRADE.rst#upgrading-to-v1340) for instructions on updating your configuration file to use the new `room_prejoin_state` setting. This release also deprecates the `POST /_synapse/admin/v1/rooms//delete` admin API route. Server administrators are encouraged to update their scripts to use the new `DELETE /_synapse/admin/v1/rooms/` route instead. No significant changes since v1.34.0rc1. Synapse 1.34.0rc1 (2021-05-12) ============================== Features -------- - Add experimental option to track memory usage of the caches. ([\#9881](https://github.com/matrix-org/synapse/issues/9881)) - Add support for `DELETE /_synapse/admin/v1/rooms/`. ([\#9889](https://github.com/matrix-org/synapse/issues/9889)) - Add limits to how often Synapse will GC, ensuring that large servers do not end up GC thrashing if `gc_thresholds` has not been correctly set. ([\#9902](https://github.com/matrix-org/synapse/issues/9902)) - Improve performance of sending events for worker-based deployments using Redis. ([\#9905](https://github.com/matrix-org/synapse/issues/9905), [\#9950](https://github.com/matrix-org/synapse/issues/9950), [\#9951](https://github.com/matrix-org/synapse/issues/9951)) - Improve performance after joining a large room when presence is enabled. ([\#9910](https://github.com/matrix-org/synapse/issues/9910), [\#9916](https://github.com/matrix-org/synapse/issues/9916)) - Support stable identifiers for [MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772) Spaces. `m.space.child` events will now be taken into account when populating the experimental spaces summary response. Please see [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.34.0/UPGRADE.rst#upgrading-to-v1340) if you have customised `room_invite_state_types` in your configuration. ([\#9915](https://github.com/matrix-org/synapse/issues/9915), [\#9966](https://github.com/matrix-org/synapse/issues/9966)) - Improve performance of backfilling in large rooms. ([\#9935](https://github.com/matrix-org/synapse/issues/9935)) - Add a config option to allow you to prevent device display names from being shared over federation. Contributed by @aaronraimist. ([\#9945](https://github.com/matrix-org/synapse/issues/9945)) - Update support for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946): Spaces Summary. ([\#9947](https://github.com/matrix-org/synapse/issues/9947), [\#9954](https://github.com/matrix-org/synapse/issues/9954)) Bugfixes -------- - Fix a bug introduced in v1.32.0 where the associated connection was improperly logged for SQL logging statements. ([\#9895](https://github.com/matrix-org/synapse/issues/9895)) - Correct the type hint for the `user_may_create_room_alias` method of spam checkers. It is provided a `RoomAlias`, not a `str`. ([\#9896](https://github.com/matrix-org/synapse/issues/9896)) - Fix bug where user directory could get out of sync if room visibility and membership changed in quick succession. ([\#9910](https://github.com/matrix-org/synapse/issues/9910)) - Include the `origin_server_ts` property in the experimental [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946) support to allow clients to properly sort rooms. ([\#9928](https://github.com/matrix-org/synapse/issues/9928)) - Fix bugs introduced in v1.23.0 which made the PostgreSQL port script fail when run with a newly-created SQLite database. ([\#9930](https://github.com/matrix-org/synapse/issues/9930)) - Fix a bug introduced in Synapse 1.29.0 which caused `m.room_key_request` to-device messages sent from one user to another to be dropped. ([\#9961](https://github.com/matrix-org/synapse/issues/9961), [\#9965](https://github.com/matrix-org/synapse/issues/9965)) - Fix a bug introduced in v1.27.0 preventing users and appservices exempt from ratelimiting from creating rooms with many invitees. ([\#9968](https://github.com/matrix-org/synapse/issues/9968)) Updates to the Docker image --------------------------- - Add `startup_delay` to docker healthcheck to reduce waiting time for coming online and update the documentation with extra options. Contributed by @Maquis196. ([\#9913](https://github.com/matrix-org/synapse/issues/9913)) Improved Documentation ---------------------- - Add `port` argument to the Postgres database sample config section. ([\#9911](https://github.com/matrix-org/synapse/issues/9911)) Deprecations and Removals ------------------------- - Mark as deprecated `POST /_synapse/admin/v1/rooms//delete`. ([\#9889](https://github.com/matrix-org/synapse/issues/9889)) Internal Changes ---------------- - Reduce the length of Synapse's access tokens. ([\#5588](https://github.com/matrix-org/synapse/issues/5588)) - Export jemalloc stats to Prometheus if it is being used. ([\#9882](https://github.com/matrix-org/synapse/issues/9882)) - Add type hints to presence handler. ([\#9885](https://github.com/matrix-org/synapse/issues/9885)) - Reduce memory usage of the LRU caches. ([\#9886](https://github.com/matrix-org/synapse/issues/9886)) - Add type hints to the `synapse.handlers` module. ([\#9896](https://github.com/matrix-org/synapse/issues/9896)) - Time response time for external cache requests. ([\#9904](https://github.com/matrix-org/synapse/issues/9904)) - Minor fixes to the `make_full_schema.sh` script. ([\#9931](https://github.com/matrix-org/synapse/issues/9931)) - Move database schema files into a common directory. ([\#9932](https://github.com/matrix-org/synapse/issues/9932)) - Add debug logging for lost/delayed to-device messages. ([\#9959](https://github.com/matrix-org/synapse/issues/9959)) Synapse 1.33.2 (2021-05-11) =========================== Due to the security issue highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- This release fixes a denial of service attack ([CVE-2021-29471](https://github.com/matrix-org/synapse/security/advisories/GHSA-x345-32rc-8h85)) against Synapse's push rules implementation. Server admins are encouraged to upgrade. Internal Changes ---------------- - Unpin attrs dependency. ([\#9946](https://github.com/matrix-org/synapse/issues/9946)) Synapse 1.33.1 (2021-05-06) =========================== Bugfixes -------- - Fix bug where `/sync` would break if using the latest version of `attrs` dependency, by pinning to a previous version. ([\#9937](https://github.com/matrix-org/synapse/issues/9937)) Synapse 1.33.0 (2021-05-05) =========================== Features -------- - Build Debian packages for Ubuntu 21.04 (Hirsute Hippo). ([\#9909](https://github.com/matrix-org/synapse/issues/9909)) Synapse 1.33.0rc2 (2021-04-29) ============================== Bugfixes -------- - Fix tight loop when handling presence replication when using workers. Introduced in v1.33.0rc1. ([\#9900](https://github.com/matrix-org/synapse/issues/9900)) Synapse 1.33.0rc1 (2021-04-28) ============================== Features -------- - Update experimental support for [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083): restricting room access via group membership. ([\#9800](https://github.com/matrix-org/synapse/issues/9800), [\#9814](https://github.com/matrix-org/synapse/issues/9814)) - Add experimental support for handling presence on a worker. ([\#9819](https://github.com/matrix-org/synapse/issues/9819), [\#9820](https://github.com/matrix-org/synapse/issues/9820), [\#9828](https://github.com/matrix-org/synapse/issues/9828), [\#9850](https://github.com/matrix-org/synapse/issues/9850)) - Return a new template when an user attempts to renew their account multiple times with the same token, stating that their account is set to expire. This replaces the invalid token template that would previously be shown in this case. This change concerns the optional account validity feature. ([\#9832](https://github.com/matrix-org/synapse/issues/9832)) Bugfixes -------- - Fixes the OIDC SSO flow when using a `public_baseurl` value including a non-root URL path. ([\#9726](https://github.com/matrix-org/synapse/issues/9726)) - Fix thumbnail generation for some sites with non-standard content types. Contributed by @rkfg. ([\#9788](https://github.com/matrix-org/synapse/issues/9788)) - Add some sanity checks to identity server passed to 3PID bind/unbind endpoints. ([\#9802](https://github.com/matrix-org/synapse/issues/9802)) - Limit the size of HTTP responses read over federation. ([\#9833](https://github.com/matrix-org/synapse/issues/9833)) - Fix a bug which could cause Synapse to get stuck in a loop of resyncing device lists. ([\#9867](https://github.com/matrix-org/synapse/issues/9867)) - Fix a long-standing bug where errors from federation did not propagate to the client. ([\#9868](https://github.com/matrix-org/synapse/issues/9868)) Improved Documentation ---------------------- - Add a note to the docker docs mentioning that we mirror upstream's supported Docker platforms. ([\#9801](https://github.com/matrix-org/synapse/issues/9801)) Internal Changes ---------------- - Add a dockerfile for running Synapse in worker-mode under Complement. ([\#9162](https://github.com/matrix-org/synapse/issues/9162)) - Apply `pyupgrade` across the codebase. ([\#9786](https://github.com/matrix-org/synapse/issues/9786)) - Move some replication processing out of `generic_worker`. ([\#9796](https://github.com/matrix-org/synapse/issues/9796)) - Replace `HomeServer.get_config()` with inline references. ([\#9815](https://github.com/matrix-org/synapse/issues/9815)) - Rename some handlers and config modules to not duplicate the top-level module. ([\#9816](https://github.com/matrix-org/synapse/issues/9816)) - Fix a long-standing bug which caused `max_upload_size` to not be correctly enforced. ([\#9817](https://github.com/matrix-org/synapse/issues/9817)) - Reduce CPU usage of the user directory by reusing existing calculated room membership. ([\#9821](https://github.com/matrix-org/synapse/issues/9821)) - Small speed up for joining large remote rooms. ([\#9825](https://github.com/matrix-org/synapse/issues/9825)) - Introduce flake8-bugbear to the test suite and fix some of its lint violations. ([\#9838](https://github.com/matrix-org/synapse/issues/9838)) - Only store the raw data in the in-memory caches, rather than objects that include references to e.g. the data stores. ([\#9845](https://github.com/matrix-org/synapse/issues/9845)) - Limit length of accepted email addresses. ([\#9855](https://github.com/matrix-org/synapse/issues/9855)) - Remove redundant `synapse.types.Collection` type definition. ([\#9856](https://github.com/matrix-org/synapse/issues/9856)) - Handle recently added rate limits correctly when using `--no-rate-limit` with the demo scripts. ([\#9858](https://github.com/matrix-org/synapse/issues/9858)) - Disable invite rate-limiting by default when running the unit tests. ([\#9871](https://github.com/matrix-org/synapse/issues/9871)) - Pass a reactor into `SynapseSite` to make testing easier. ([\#9874](https://github.com/matrix-org/synapse/issues/9874)) - Make `DomainSpecificString` an `attrs` class. ([\#9875](https://github.com/matrix-org/synapse/issues/9875)) - Add type hints to `synapse.api.auth` and `synapse.api.auth_blocking` modules. ([\#9876](https://github.com/matrix-org/synapse/issues/9876)) - Remove redundant `_PushHTTPChannel` test class. ([\#9878](https://github.com/matrix-org/synapse/issues/9878)) - Remove backwards-compatibility code for Python versions < 3.6. ([\#9879](https://github.com/matrix-org/synapse/issues/9879)) - Small performance improvement around handling new local presence updates. ([\#9887](https://github.com/matrix-org/synapse/issues/9887)) Synapse 1.32.2 (2021-04-22) =========================== This release includes a fix for a regression introduced in 1.32.0. Bugfixes -------- - Fix a regression in Synapse 1.32.0 and 1.32.1 which caused `LoggingContext` errors in plugins. ([\#9857](https://github.com/matrix-org/synapse/issues/9857)) Synapse 1.32.1 (2021-04-21) =========================== This release fixes [a regression](https://github.com/matrix-org/synapse/issues/9853) in Synapse 1.32.0 that caused connected Prometheus instances to become unstable. However, as this release is still subject to the `LoggingContext` change in 1.32.0, it is recommended to remain on or downgrade to 1.31.0. Bugfixes -------- - Fix a regression in Synapse 1.32.0 which caused Synapse to report large numbers of Prometheus time series, potentially overwhelming Prometheus instances. ([\#9854](https://github.com/matrix-org/synapse/issues/9854)) Synapse 1.32.0 (2021-04-20) =========================== **Note:** This release introduces [a regression](https://github.com/matrix-org/synapse/issues/9853) that can overwhelm connected Prometheus instances. This issue was not present in 1.32.0rc1. If affected, it is recommended to downgrade to 1.31.0 in the meantime, and follow [these instructions](https://github.com/matrix-org/synapse/pull/9854#issuecomment-823472183) to clean up any excess writeahead logs. **Note:** This release also mistakenly included a change that may affected Synapse modules that import `synapse.logging.context.LoggingContext`, such as [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider). This will be fixed in a later Synapse version. **Note:** This release requires Python 3.6+ and Postgres 9.6+ or SQLite 3.22+. This release removes the deprecated `GET /_synapse/admin/v1/users/` admin API. Please use the [v2 API](https://github.com/matrix-org/synapse/blob/develop/docs/admin_api/user_admin_api.rst#query-user-account) instead, which has improved capabilities. This release requires Application Services to use type `m.login.application_service` when registering users via the `/_matrix/client/r0/register` endpoint to comply with the spec. Please ensure your Application Services are up to date. If you are using the `packages.matrix.org` Debian repository for Synapse packages, note that we have recently updated the expiry date on the gpg signing key. If you see an error similar to `The following signatures were invalid: EXPKEYSIG F473DD4473365DE1`, you will need to get a fresh copy of the keys. You can do so with: ```sh sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg ``` Bugfixes -------- - Fix the log lines of nested logging contexts. Broke in 1.32.0rc1. ([\#9829](https://github.com/matrix-org/synapse/issues/9829)) Synapse 1.32.0rc1 (2021-04-13) ============================== Features -------- - Add a Synapse module for routing presence updates between users. ([\#9491](https://github.com/matrix-org/synapse/issues/9491)) - Add an admin API to manage ratelimit for a specific user. ([\#9648](https://github.com/matrix-org/synapse/issues/9648)) - Include request information in structured logging output. ([\#9654](https://github.com/matrix-org/synapse/issues/9654)) - Add `order_by` to the admin API `GET /_synapse/admin/v2/users`. Contributed by @dklimpel. ([\#9691](https://github.com/matrix-org/synapse/issues/9691)) - Replace the `room_invite_state_types` configuration setting with `room_prejoin_state`. ([\#9700](https://github.com/matrix-org/synapse/issues/9700)) - Add experimental support for [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083): restricting room access via group membership. ([\#9717](https://github.com/matrix-org/synapse/issues/9717), [\#9735](https://github.com/matrix-org/synapse/issues/9735)) - Update experimental support for Spaces: include `m.room.create` in the room state sent with room-invites. ([\#9710](https://github.com/matrix-org/synapse/issues/9710)) - Synapse now requires Python 3.6 or later. It also requires Postgres 9.6 or later or SQLite 3.22 or later. ([\#9766](https://github.com/matrix-org/synapse/issues/9766)) Bugfixes -------- - Prevent `synapse_forward_extremities` and `synapse_excess_extremity_events` Prometheus metrics from initially reporting zero-values after startup. ([\#8926](https://github.com/matrix-org/synapse/issues/8926)) - Fix recently added ratelimits to correctly honour the application service `rate_limited` flag. ([\#9711](https://github.com/matrix-org/synapse/issues/9711)) - Fix longstanding bug which caused `duplicate key value violates unique constraint "remote_media_cache_thumbnails_media_origin_media_id_thumbna_key"` errors. ([\#9725](https://github.com/matrix-org/synapse/issues/9725)) - Fix bug where sharded federation senders could get stuck repeatedly querying the DB in a loop, using lots of CPU. ([\#9770](https://github.com/matrix-org/synapse/issues/9770)) - Fix duplicate logging of exceptions thrown during federation transaction processing. ([\#9780](https://github.com/matrix-org/synapse/issues/9780)) Updates to the Docker image --------------------------- - Move opencontainers labels to the final Docker image such that users can inspect them. ([\#9765](https://github.com/matrix-org/synapse/issues/9765)) Improved Documentation ---------------------- - Make the `allowed_local_3pids` regex example in the sample config stricter. ([\#9719](https://github.com/matrix-org/synapse/issues/9719)) Deprecations and Removals ------------------------- - Remove old admin API `GET /_synapse/admin/v1/users/`. ([\#9401](https://github.com/matrix-org/synapse/issues/9401)) - Make `/_matrix/client/r0/register` expect a type of `m.login.application_service` when an Application Service registers a user, to align with [the relevant spec](https://spec.matrix.org/unstable/application-service-api/#server-admin-style-permissions). ([\#9548](https://github.com/matrix-org/synapse/issues/9548)) Internal Changes ---------------- - Replace deprecated `imp` module with successor `importlib`. Contributed by Cristina Muñoz. ([\#9718](https://github.com/matrix-org/synapse/issues/9718)) - Experiment with GitHub Actions for CI. ([\#9661](https://github.com/matrix-org/synapse/issues/9661)) - Introduce flake8-bugbear to the test suite and fix some of its lint violations. ([\#9682](https://github.com/matrix-org/synapse/issues/9682)) - Update `scripts-dev/complement.sh` to use a local checkout of Complement, allow running a subset of tests and have it use Synapse's Complement test blacklist. ([\#9685](https://github.com/matrix-org/synapse/issues/9685)) - Improve Jaeger tracing for `to_device` messages. ([\#9686](https://github.com/matrix-org/synapse/issues/9686)) - Add release helper script for automating part of the Synapse release process. ([\#9713](https://github.com/matrix-org/synapse/issues/9713)) - Add type hints to expiring cache. ([\#9730](https://github.com/matrix-org/synapse/issues/9730)) - Convert various testcases to `HomeserverTestCase`. ([\#9736](https://github.com/matrix-org/synapse/issues/9736)) - Start linting mypy with `no_implicit_optional`. ([\#9742](https://github.com/matrix-org/synapse/issues/9742)) - Add missing type hints to federation handler and server. ([\#9743](https://github.com/matrix-org/synapse/issues/9743)) - Check that a `ConfigError` is raised, rather than simply `Exception`, when appropriate in homeserver config file generation tests. ([\#9753](https://github.com/matrix-org/synapse/issues/9753)) - Fix incompatibility with `tox` 2.5. ([\#9769](https://github.com/matrix-org/synapse/issues/9769)) - Enable Complement tests for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946): Spaces Summary API. ([\#9771](https://github.com/matrix-org/synapse/issues/9771)) - Use mock from the standard library instead of a separate package. ([\#9772](https://github.com/matrix-org/synapse/issues/9772)) - Update Black configuration to target Python 3.6. ([\#9781](https://github.com/matrix-org/synapse/issues/9781)) - Add option to skip unit tests when building Debian packages. ([\#9793](https://github.com/matrix-org/synapse/issues/9793)) Synapse 1.31.0 (2021-04-06) =========================== **Note:** As announced in v1.25.0, and in line with the deprecation policy for platform dependencies, this is the last release to support Python 3.5 and PostgreSQL 9.5. Future versions of Synapse will require Python 3.6+ and PostgreSQL 9.6+, as per our [deprecation policy](docs/deprecation_policy.md). This is also the last release that the Synapse team will be publishing packages for Debian Stretch and Ubuntu Xenial. Improved Documentation ---------------------- - Add a document describing the deprecation policy for platform dependencies. ([\#9723](https://github.com/matrix-org/synapse/issues/9723)) Internal Changes ---------------- - Revert using `dmypy run` in lint script. ([\#9720](https://github.com/matrix-org/synapse/issues/9720)) - Pin flake8-bugbear's version. ([\#9734](https://github.com/matrix-org/synapse/issues/9734)) Synapse 1.31.0rc1 (2021-03-30) ============================== Features -------- - Add support to OpenID Connect login for requiring attributes on the `userinfo` response. Contributed by Hubbe King. ([\#9609](https://github.com/matrix-org/synapse/issues/9609)) - Add initial experimental support for a "space summary" API. ([\#9643](https://github.com/matrix-org/synapse/issues/9643), [\#9652](https://github.com/matrix-org/synapse/issues/9652), [\#9653](https://github.com/matrix-org/synapse/issues/9653)) - Add support for the busy presence state as described in [MSC3026](https://github.com/matrix-org/matrix-doc/pull/3026). ([\#9644](https://github.com/matrix-org/synapse/issues/9644)) - Add support for credentials for proxy authentication in the `HTTPS_PROXY` environment variable. ([\#9657](https://github.com/matrix-org/synapse/issues/9657)) Bugfixes -------- - Fix a longstanding bug that could cause issues when editing a reply to a message. ([\#9585](https://github.com/matrix-org/synapse/issues/9585)) - Fix the `/capabilities` endpoint to return `m.change_password` as disabled if the local password database is not used for authentication. Contributed by @dklimpel. ([\#9588](https://github.com/matrix-org/synapse/issues/9588)) - Check if local passwords are enabled before setting them for the user. ([\#9636](https://github.com/matrix-org/synapse/issues/9636)) - Fix a bug where federation sending can stall due to `concurrent access` database exceptions when it falls behind. ([\#9639](https://github.com/matrix-org/synapse/issues/9639)) - Fix a bug introduced in Synapse 1.30.1 which meant the suggested `pip` incantation to install an updated `cryptography` was incorrect. ([\#9699](https://github.com/matrix-org/synapse/issues/9699)) Updates to the Docker image --------------------------- - Speed up Docker builds and make it nicer to test against Complement while developing (install all dependencies before copying the project). ([\#9610](https://github.com/matrix-org/synapse/issues/9610)) - Include [opencontainers labels](https://github.com/opencontainers/image-spec/blob/master/annotations.md#pre-defined-annotation-keys) in the Docker image. ([\#9612](https://github.com/matrix-org/synapse/issues/9612)) Improved Documentation ---------------------- - Clarify that `register_new_matrix_user` is present also when installed via non-pip package. ([\#9074](https://github.com/matrix-org/synapse/issues/9074)) - Update source install documentation to mention platform prerequisites before the source install steps. ([\#9667](https://github.com/matrix-org/synapse/issues/9667)) - Improve worker documentation for fallback/web auth endpoints. ([\#9679](https://github.com/matrix-org/synapse/issues/9679)) - Update the sample configuration for OIDC authentication. ([\#9695](https://github.com/matrix-org/synapse/issues/9695)) Internal Changes ---------------- - Preparatory steps for removing redundant `outlier` data from `event_json.internal_metadata` column. ([\#9411](https://github.com/matrix-org/synapse/issues/9411)) - Add type hints to the caching module. ([\#9442](https://github.com/matrix-org/synapse/issues/9442)) - Introduce flake8-bugbear to the test suite and fix some of its lint violations. ([\#9499](https://github.com/matrix-org/synapse/issues/9499), [\#9659](https://github.com/matrix-org/synapse/issues/9659)) - Add additional type hints to the Homeserver object. ([\#9631](https://github.com/matrix-org/synapse/issues/9631), [\#9638](https://github.com/matrix-org/synapse/issues/9638), [\#9675](https://github.com/matrix-org/synapse/issues/9675), [\#9681](https://github.com/matrix-org/synapse/issues/9681)) - Only save remote cross-signing and device keys if they're different from the current ones. ([\#9634](https://github.com/matrix-org/synapse/issues/9634)) - Rename storage function to fix spelling and not conflict with another function's name. ([\#9637](https://github.com/matrix-org/synapse/issues/9637)) - Improve performance of federation catch up by sending the latest events in the room to the remote, rather than just the last event sent by the local server. ([\#9640](https://github.com/matrix-org/synapse/issues/9640), [\#9664](https://github.com/matrix-org/synapse/issues/9664)) - In the `federation_client` commandline client, stop automatically adding the URL prefix, so that servlets on other prefixes can be tested. ([\#9645](https://github.com/matrix-org/synapse/issues/9645)) - In the `federation_client` commandline client, handle inline `signing_key`s in `homeserver.yaml`. ([\#9647](https://github.com/matrix-org/synapse/issues/9647)) - Fixed some antipattern issues to improve code quality. ([\#9649](https://github.com/matrix-org/synapse/issues/9649)) - Add a storage method for pulling all current user presence state from the database. ([\#9650](https://github.com/matrix-org/synapse/issues/9650)) - Import `HomeServer` from the proper module. ([\#9665](https://github.com/matrix-org/synapse/issues/9665)) - Increase default join ratelimiting burst rate. ([\#9674](https://github.com/matrix-org/synapse/issues/9674)) - Add type hints to third party event rules and visibility modules. ([\#9676](https://github.com/matrix-org/synapse/issues/9676)) - Bump mypy-zope to 0.2.13 to fix "Cannot determine consistent method resolution order (MRO)" errors when running mypy a second time. ([\#9678](https://github.com/matrix-org/synapse/issues/9678)) - Use interpreter from `$PATH` via `/usr/bin/env` instead of absolute paths in various scripts. ([\#9689](https://github.com/matrix-org/synapse/issues/9689)) - Make it possible to use `dmypy`. ([\#9692](https://github.com/matrix-org/synapse/issues/9692)) - Suppress "CryptographyDeprecationWarning: int_from_bytes is deprecated". ([\#9698](https://github.com/matrix-org/synapse/issues/9698)) - Use `dmypy run` in lint script for improved performance in type-checking while developing. ([\#9701](https://github.com/matrix-org/synapse/issues/9701)) - Fix undetected mypy error when using Python 3.6. ([\#9703](https://github.com/matrix-org/synapse/issues/9703)) - Fix type-checking CI on develop. ([\#9709](https://github.com/matrix-org/synapse/issues/9709)) Synapse 1.30.1 (2021-03-26) =========================== This release is identical to Synapse 1.30.0, with the exception of explicitly setting a minimum version of Python's Cryptography library to ensure that users of Synapse are protected from the recent [OpenSSL security advisories](https://mta.openssl.org/pipermail/openssl-announce/2021-March/000198.html), especially CVE-2021-3449. Note that Cryptography defaults to bundling its own statically linked copy of OpenSSL, which means that you may not be protected by your operating system's security updates. It's also worth noting that Cryptography no longer supports Python 3.5, so admins deploying to older environments may not be protected against this or future vulnerabilities. Synapse will be dropping support for Python 3.5 at the end of March. Updates to the Docker image --------------------------- - Ensure that the docker container has up to date versions of openssl. ([\#9697](https://github.com/matrix-org/synapse/issues/9697)) Internal Changes ---------------- - Enforce that `cryptography` dependency is up to date to ensure it has the most recent openssl patches. ([\#9697](https://github.com/matrix-org/synapse/issues/9697)) Synapse 1.30.0 (2021-03-22) =========================== Note that this release deprecates the ability for appservices to call `POST /_matrix/client/r0/register` without the body parameter `type`. Appservice developers should use a `type` value of `m.login.application_service` as per [the spec](https://matrix.org/docs/spec/application_service/r0.1.2#server-admin-style-permissions). In future releases, calling this endpoint with an access token - but without a `m.login.application_service` type - will fail. No significant changes. Synapse 1.30.0rc1 (2021-03-16) ============================== Features -------- - Add prometheus metrics for number of users successfully registering and logging in. ([\#9510](https://github.com/matrix-org/synapse/issues/9510), [\#9511](https://github.com/matrix-org/synapse/issues/9511), [\#9573](https://github.com/matrix-org/synapse/issues/9573)) - Add `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time` prometheus metrics, which monitor federation delays by reporting the timestamps of messages sent and received to a set of remote servers. ([\#9540](https://github.com/matrix-org/synapse/issues/9540)) - Add support for generating JSON Web Tokens dynamically for use as OIDC client secrets. ([\#9549](https://github.com/matrix-org/synapse/issues/9549)) - Optimise handling of incomplete room history for incoming federation. ([\#9601](https://github.com/matrix-org/synapse/issues/9601)) - Finalise support for allowing clients to pick an SSO Identity Provider ([MSC2858](https://github.com/matrix-org/matrix-doc/pull/2858)). ([\#9617](https://github.com/matrix-org/synapse/issues/9617)) - Tell spam checker modules about the SSO IdP a user registered through if one was used. ([\#9626](https://github.com/matrix-org/synapse/issues/9626)) Bugfixes -------- - Fix long-standing bug when generating thumbnails for some images with transparency: `TypeError: cannot unpack non-iterable int object`. ([\#9473](https://github.com/matrix-org/synapse/issues/9473)) - Purge chain cover indexes for events that were purged prior to Synapse v1.29.0. ([\#9542](https://github.com/matrix-org/synapse/issues/9542), [\#9583](https://github.com/matrix-org/synapse/issues/9583)) - Fix bug where federation requests were not correctly retried on 5xx responses. ([\#9567](https://github.com/matrix-org/synapse/issues/9567)) - Fix re-activating an account via the admin API when local passwords are disabled. ([\#9587](https://github.com/matrix-org/synapse/issues/9587)) - Fix a bug introduced in Synapse 1.20 which caused incoming federation transactions to stack up, causing slow recovery from outages. ([\#9597](https://github.com/matrix-org/synapse/issues/9597)) - Fix a bug introduced in v1.28.0 where the OpenID Connect callback endpoint could error with a `MacaroonInitException`. ([\#9620](https://github.com/matrix-org/synapse/issues/9620)) - Fix Internal Server Error on `GET /_synapse/client/saml2/authn_response` request. ([\#9623](https://github.com/matrix-org/synapse/issues/9623)) Updates to the Docker image --------------------------- - Make use of an improved malloc implementation (`jemalloc`) in the docker image. ([\#8553](https://github.com/matrix-org/synapse/issues/8553)) Improved Documentation ---------------------- - Add relayd entry to reverse proxy example configurations. ([\#9508](https://github.com/matrix-org/synapse/issues/9508)) - Improve the SAML2 upgrade notes for 1.27.0. ([\#9550](https://github.com/matrix-org/synapse/issues/9550)) - Link to the "List user's media" admin API from the media admin API docs. ([\#9571](https://github.com/matrix-org/synapse/issues/9571)) - Clarify the spam checker modules documentation example to mention that `parse_config` is a required method. ([\#9580](https://github.com/matrix-org/synapse/issues/9580)) - Clarify the sample configuration for `stats` settings. ([\#9604](https://github.com/matrix-org/synapse/issues/9604)) Deprecations and Removals ------------------------- - The `synapse_federation_last_sent_pdu_age` and `synapse_federation_last_received_pdu_age` prometheus metrics have been removed. They are replaced by `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time`. ([\#9540](https://github.com/matrix-org/synapse/issues/9540)) - Registering an Application Service user without using the `m.login.application_service` login type will be unsupported in an upcoming Synapse release. ([\#9559](https://github.com/matrix-org/synapse/issues/9559)) Internal Changes ---------------- - Add tests to ResponseCache. ([\#9458](https://github.com/matrix-org/synapse/issues/9458)) - Add type hints to purge room and server notice admin API. ([\#9520](https://github.com/matrix-org/synapse/issues/9520)) - Add extra logging to ObservableDeferred when callbacks throw exceptions. ([\#9523](https://github.com/matrix-org/synapse/issues/9523)) - Fix incorrect type hints. ([\#9528](https://github.com/matrix-org/synapse/issues/9528), [\#9543](https://github.com/matrix-org/synapse/issues/9543), [\#9591](https://github.com/matrix-org/synapse/issues/9591), [\#9608](https://github.com/matrix-org/synapse/issues/9608), [\#9618](https://github.com/matrix-org/synapse/issues/9618)) - Add an additional test for purging a room. ([\#9541](https://github.com/matrix-org/synapse/issues/9541)) - Add a `.git-blame-ignore-revs` file with the hashes of auto-formatting. ([\#9560](https://github.com/matrix-org/synapse/issues/9560)) - Increase the threshold before which outbound federation to a server goes into "catch up" mode, which is expensive for the remote server to handle. ([\#9561](https://github.com/matrix-org/synapse/issues/9561)) - Fix spurious errors reported by the `config-lint.sh` script. ([\#9562](https://github.com/matrix-org/synapse/issues/9562)) - Fix type hints and tests for BlacklistingAgentWrapper and BlacklistingReactorWrapper. ([\#9563](https://github.com/matrix-org/synapse/issues/9563)) - Do not have mypy ignore type hints from unpaddedbase64. ([\#9568](https://github.com/matrix-org/synapse/issues/9568)) - Improve efficiency of calculating the auth chain in large rooms. ([\#9576](https://github.com/matrix-org/synapse/issues/9576)) - Convert `synapse.types.Requester` to an `attrs` class. ([\#9586](https://github.com/matrix-org/synapse/issues/9586)) - Add logging for redis connection setup. ([\#9590](https://github.com/matrix-org/synapse/issues/9590)) - Improve logging when processing incoming transactions. ([\#9596](https://github.com/matrix-org/synapse/issues/9596)) - Remove unused `stats.retention` setting, and emit a warning if stats are disabled. ([\#9604](https://github.com/matrix-org/synapse/issues/9604)) - Prevent attempting to bundle aggregations for state events in /context APIs. ([\#9619](https://github.com/matrix-org/synapse/issues/9619)) Synapse 1.29.0 (2021-03-08) =========================== Note that synapse now expects an `X-Forwarded-Proto` header when used with a reverse proxy. Please see the [upgrade notes](docs/upgrade.md#upgrading-to-v1290) for more details on this change. No significant changes. Synapse 1.29.0rc1 (2021-03-04) ============================== Features -------- - Add rate limiters to cross-user key sharing requests. ([\#8957](https://github.com/matrix-org/synapse/issues/8957)) - Add `order_by` to the admin API `GET /_synapse/admin/v1/users//media`. Contributed by @dklimpel. ([\#8978](https://github.com/matrix-org/synapse/issues/8978)) - Add some configuration settings to make users' profile data more private. ([\#9203](https://github.com/matrix-org/synapse/issues/9203)) - The `no_proxy` and `NO_PROXY` environment variables are now respected in proxied HTTP clients with the lowercase form taking precedence if both are present. Additionally, the lowercase `https_proxy` environment variable is now respected in proxied HTTP clients on top of existing support for the uppercase `HTTPS_PROXY` form and takes precedence if both are present. Contributed by Timothy Leung. ([\#9372](https://github.com/matrix-org/synapse/issues/9372)) - Add a configuration option, `user_directory.prefer_local_users`, which when enabled will make it more likely for users on the same server as you to appear above other users. ([\#9383](https://github.com/matrix-org/synapse/issues/9383), [\#9385](https://github.com/matrix-org/synapse/issues/9385)) - Add support for regenerating thumbnails if they have been deleted but the original image is still stored. ([\#9438](https://github.com/matrix-org/synapse/issues/9438)) - Add support for `X-Forwarded-Proto` header when using a reverse proxy. ([\#9472](https://github.com/matrix-org/synapse/issues/9472), [\#9501](https://github.com/matrix-org/synapse/issues/9501), [\#9512](https://github.com/matrix-org/synapse/issues/9512), [\#9539](https://github.com/matrix-org/synapse/issues/9539)) Bugfixes -------- - Fix a bug where users' pushers were not all deleted when they deactivated their account. ([\#9285](https://github.com/matrix-org/synapse/issues/9285), [\#9516](https://github.com/matrix-org/synapse/issues/9516)) - Fix a bug where a lot of unnecessary presence updates were sent when joining a room. ([\#9402](https://github.com/matrix-org/synapse/issues/9402)) - Fix a bug that caused multiple calls to the experimental `shared_rooms` endpoint to return stale results. ([\#9416](https://github.com/matrix-org/synapse/issues/9416)) - Fix a bug in single sign-on which could cause a "No session cookie found" error. ([\#9436](https://github.com/matrix-org/synapse/issues/9436)) - Fix bug introduced in v1.27.0 where allowing a user to choose their own username when logging in via single sign-on did not work unless an `idp_icon` was defined. ([\#9440](https://github.com/matrix-org/synapse/issues/9440)) - Fix a bug introduced in v1.26.0 where some sequences were not properly configured when running `synapse_port_db`. ([\#9449](https://github.com/matrix-org/synapse/issues/9449)) - Fix deleting pushers when using sharded pushers. ([\#9465](https://github.com/matrix-org/synapse/issues/9465), [\#9466](https://github.com/matrix-org/synapse/issues/9466), [\#9479](https://github.com/matrix-org/synapse/issues/9479), [\#9536](https://github.com/matrix-org/synapse/issues/9536)) - Fix missing startup checks for the consistency of certain PostgreSQL sequences. ([\#9470](https://github.com/matrix-org/synapse/issues/9470)) - Fix a long-standing bug where the media repository could leak file descriptors while previewing media. ([\#9497](https://github.com/matrix-org/synapse/issues/9497)) - Properly purge the event chain cover index when purging history. ([\#9498](https://github.com/matrix-org/synapse/issues/9498)) - Fix missing chain cover index due to a schema delta not being applied correctly. Only affected servers that ran development versions. ([\#9503](https://github.com/matrix-org/synapse/issues/9503)) - Fix a bug introduced in v1.25.0 where `/_synapse/admin/join/` would fail when given a room alias. ([\#9506](https://github.com/matrix-org/synapse/issues/9506)) - Prevent presence background jobs from running when presence is disabled. ([\#9530](https://github.com/matrix-org/synapse/issues/9530)) - Fix rare edge case that caused a background update to fail if the server had rejected an event that had duplicate auth events. ([\#9537](https://github.com/matrix-org/synapse/issues/9537)) Improved Documentation ---------------------- - Update the example systemd config to propagate reloads to individual units. ([\#9463](https://github.com/matrix-org/synapse/issues/9463)) Internal Changes ---------------- - Add documentation and type hints to `parse_duration`. ([\#9432](https://github.com/matrix-org/synapse/issues/9432)) - Remove vestiges of `uploads_path` configuration setting. ([\#9462](https://github.com/matrix-org/synapse/issues/9462)) - Add a comment about systemd-python. ([\#9464](https://github.com/matrix-org/synapse/issues/9464)) - Test that we require validated email for email pushers. ([\#9496](https://github.com/matrix-org/synapse/issues/9496)) - Allow python to generate bytecode for synapse. ([\#9502](https://github.com/matrix-org/synapse/issues/9502)) - Fix incorrect type hints. ([\#9515](https://github.com/matrix-org/synapse/issues/9515), [\#9518](https://github.com/matrix-org/synapse/issues/9518)) - Add type hints to device and event report admin API. ([\#9519](https://github.com/matrix-org/synapse/issues/9519)) - Add type hints to user admin API. ([\#9521](https://github.com/matrix-org/synapse/issues/9521)) - Bump the versions of mypy and mypy-zope used for static type checking. ([\#9529](https://github.com/matrix-org/synapse/issues/9529)) Synapse 1.28.0 (2021-02-25) =========================== Note that this release drops support for ARMv7 in the official Docker images, due to repeated problems building for ARMv7 (and the associated maintenance burden this entails). This release also fixes the documentation included in v1.27.0 around the callback URI for SAML2 identity providers. If your server is configured to use single sign-on via a SAML2 IdP, you may need to make configuration changes. Please review the [upgrade notes](docs/upgrade.md) for more details on these changes. Internal Changes ---------------- - Revert change in v1.28.0rc1 to remove the deprecated SAML endpoint. ([\#9474](https://github.com/matrix-org/synapse/issues/9474)) Synapse 1.28.0rc1 (2021-02-19) ============================== Removal warning --------------- The v1 list accounts API is deprecated and will be removed in a future release. This API was undocumented and misleading. It can be replaced by the [v2 list accounts API](https://github.com/matrix-org/synapse/blob/release-v1.28.0/docs/admin_api/user_admin_api.rst#list-accounts), which has been available since Synapse 1.7.0 (2019-12-13). Please check if you're using any scripts which use the admin API and replace `GET /_synapse/admin/v1/users/` with `GET /_synapse/admin/v2/users`. Features -------- - New admin API to get the context of an event: `/_synapse/admin/rooms/{roomId}/context/{eventId}`. ([\#9150](https://github.com/matrix-org/synapse/issues/9150)) - Further improvements to the user experience of registration via single sign-on. ([\#9300](https://github.com/matrix-org/synapse/issues/9300), [\#9301](https://github.com/matrix-org/synapse/issues/9301)) - Add hook to spam checker modules that allow checking file uploads and remote downloads. ([\#9311](https://github.com/matrix-org/synapse/issues/9311)) - Add support for receiving OpenID Connect authentication responses via form `POST`s rather than `GET`s. ([\#9376](https://github.com/matrix-org/synapse/issues/9376)) - Add the shadow-banning status to the admin API for user info. ([\#9400](https://github.com/matrix-org/synapse/issues/9400)) Bugfixes -------- - Fix long-standing bug where sending email notifications would fail for rooms that the server had since left. ([\#9257](https://github.com/matrix-org/synapse/issues/9257)) - Fix bug introduced in Synapse 1.27.0rc1 which meant the "session expired" error page during SSO registration was badly formatted. ([\#9296](https://github.com/matrix-org/synapse/issues/9296)) - Assert a maximum length for some parameters for spec compliance. ([\#9321](https://github.com/matrix-org/synapse/issues/9321), [\#9393](https://github.com/matrix-org/synapse/issues/9393)) - Fix additional errors when previewing URLs: "AttributeError 'NoneType' object has no attribute 'xpath'" and "ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.". ([\#9333](https://github.com/matrix-org/synapse/issues/9333)) - Fix a bug causing Synapse to impose the wrong type constraints on fields when processing responses from appservices to `/_matrix/app/v1/thirdparty/user/{protocol}`. ([\#9361](https://github.com/matrix-org/synapse/issues/9361)) - Fix bug where Synapse would occasionally stop reconnecting to Redis after the connection was lost. ([\#9391](https://github.com/matrix-org/synapse/issues/9391)) - Fix a long-standing bug when upgrading a room: "TypeError: '>' not supported between instances of 'NoneType' and 'int'". ([\#9395](https://github.com/matrix-org/synapse/issues/9395)) - Reduce the amount of memory used when generating the URL preview of a file that is larger than the `max_spider_size`. ([\#9421](https://github.com/matrix-org/synapse/issues/9421)) - Fix a long-standing bug in the deduplication of old presence, resulting in no deduplication. ([\#9425](https://github.com/matrix-org/synapse/issues/9425)) - The `ui_auth.session_timeout` config option can now be specified in terms of number of seconds/minutes/etc/. Contributed by Rishabh Arya. ([\#9426](https://github.com/matrix-org/synapse/issues/9426)) - Fix a bug introduced in v1.27.0: "TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType." related to the user directory. ([\#9428](https://github.com/matrix-org/synapse/issues/9428)) Updates to the Docker image --------------------------- - Drop support for ARMv7 in Docker images. ([\#9433](https://github.com/matrix-org/synapse/issues/9433)) Improved Documentation ---------------------- - Reorganize CHANGELOG.md. ([\#9281](https://github.com/matrix-org/synapse/issues/9281)) - Add note to `auto_join_rooms` config option explaining existing rooms must be publicly joinable. ([\#9291](https://github.com/matrix-org/synapse/issues/9291)) - Correct name of Synapse's service file in TURN howto. ([\#9308](https://github.com/matrix-org/synapse/issues/9308)) - Fix the braces in the `oidc_providers` section of the sample config. ([\#9317](https://github.com/matrix-org/synapse/issues/9317)) - Update installation instructions on Fedora. ([\#9322](https://github.com/matrix-org/synapse/issues/9322)) - Add HTTP/2 support to the nginx example configuration. Contributed by David Vo. ([\#9390](https://github.com/matrix-org/synapse/issues/9390)) - Update docs for using Gitea as OpenID provider. ([\#9404](https://github.com/matrix-org/synapse/issues/9404)) - Document that pusher instances are shardable. ([\#9407](https://github.com/matrix-org/synapse/issues/9407)) - Fix erroneous documentation from v1.27.0 about updating the SAML2 callback URL. ([\#9434](https://github.com/matrix-org/synapse/issues/9434)) Deprecations and Removals ------------------------- - Deprecate old admin API `GET /_synapse/admin/v1/users/`. ([\#9429](https://github.com/matrix-org/synapse/issues/9429)) Internal Changes ---------------- - Fix 'object name reserved for internal use' errors with recent versions of SQLite. ([\#9003](https://github.com/matrix-org/synapse/issues/9003)) - Add experimental support for running Synapse with PyPy. ([\#9123](https://github.com/matrix-org/synapse/issues/9123)) - Deny access to additional IP addresses by default. ([\#9240](https://github.com/matrix-org/synapse/issues/9240)) - Update the `Cursor` type hints to better match PEP 249. ([\#9299](https://github.com/matrix-org/synapse/issues/9299)) - Add debug logging for SRV lookups. Contributed by @Bubu. ([\#9305](https://github.com/matrix-org/synapse/issues/9305)) - Improve logging for OIDC login flow. ([\#9307](https://github.com/matrix-org/synapse/issues/9307)) - Share the code for handling required attributes between the CAS and SAML handlers. ([\#9326](https://github.com/matrix-org/synapse/issues/9326)) - Clean up the code to load the metadata for OpenID Connect identity providers. ([\#9362](https://github.com/matrix-org/synapse/issues/9362)) - Convert tests to use `HomeserverTestCase`. ([\#9377](https://github.com/matrix-org/synapse/issues/9377), [\#9396](https://github.com/matrix-org/synapse/issues/9396)) - Update the version of black used to 20.8b1. ([\#9381](https://github.com/matrix-org/synapse/issues/9381)) - Allow OIDC config to override discovered values. ([\#9384](https://github.com/matrix-org/synapse/issues/9384)) - Remove some dead code from the acceptance of room invites path. ([\#9394](https://github.com/matrix-org/synapse/issues/9394)) - Clean up an unused method in the presence handler code. ([\#9408](https://github.com/matrix-org/synapse/issues/9408)) Synapse 1.27.0 (2021-02-16) =========================== Note that this release includes a change in Synapse to use Redis as a cache ─ as well as a pub/sub mechanism ─ if Redis support is enabled for workers. No action is needed by server administrators, and we do not expect resource usage of the Redis instance to change dramatically. This release also changes the callback URI for OpenID Connect (OIDC) and SAML2 identity providers. If your server is configured to use single sign-on via an OIDC/OAuth2 or SAML2 IdP, you may need to make configuration changes. Please review the [upgrade notes](docs/upgrade.md) for more details on these changes. This release also changes escaping of variables in the HTML templates for SSO or email notifications. If you have customised these templates, please review the [upgrade notes](docs/upgrade.md) for more details on these changes. Bugfixes -------- - Fix building Docker images for armv7. ([\#9405](https://github.com/matrix-org/synapse/issues/9405)) Synapse 1.27.0rc2 (2021-02-11) ============================== Features -------- - Further improvements to the user experience of registration via single sign-on. ([\#9297](https://github.com/matrix-org/synapse/issues/9297)) Bugfixes -------- - Fix ratelimiting introduced in v1.27.0rc1 for invites to respect the `ratelimit` flag on application services. ([\#9302](https://github.com/matrix-org/synapse/issues/9302)) - Do not automatically calculate `public_baseurl` since it can be wrong in some situations. Reverts behaviour introduced in v1.26.0. ([\#9313](https://github.com/matrix-org/synapse/issues/9313)) Improved Documentation ---------------------- - Clarify the sample configuration for changes made to the template loading code. ([\#9310](https://github.com/matrix-org/synapse/issues/9310)) Synapse 1.27.0rc1 (2021-02-02) ============================== Features -------- - Add an admin API for getting and deleting forward extremities for a room. ([\#9062](https://github.com/matrix-org/synapse/issues/9062)) - Add an admin API for retrieving the current room state of a room. ([\#9168](https://github.com/matrix-org/synapse/issues/9168)) - Add experimental support for allowing clients to pick an SSO Identity Provider ([MSC2858](https://github.com/matrix-org/matrix-doc/pull/2858)). ([\#9183](https://github.com/matrix-org/synapse/issues/9183), [\#9242](https://github.com/matrix-org/synapse/issues/9242)) - Add an admin API endpoint for shadow-banning users. ([\#9209](https://github.com/matrix-org/synapse/issues/9209)) - Add ratelimits to the 3PID `/requestToken` APIs. ([\#9238](https://github.com/matrix-org/synapse/issues/9238)) - Add support to the OpenID Connect integration for adding the user's email address. ([\#9245](https://github.com/matrix-org/synapse/issues/9245)) - Add ratelimits to invites in rooms and to specific users. ([\#9258](https://github.com/matrix-org/synapse/issues/9258)) - Improve the user experience of setting up an account via single-sign on. ([\#9262](https://github.com/matrix-org/synapse/issues/9262), [\#9272](https://github.com/matrix-org/synapse/issues/9272), [\#9275](https://github.com/matrix-org/synapse/issues/9275), [\#9276](https://github.com/matrix-org/synapse/issues/9276), [\#9277](https://github.com/matrix-org/synapse/issues/9277), [\#9286](https://github.com/matrix-org/synapse/issues/9286), [\#9287](https://github.com/matrix-org/synapse/issues/9287)) - Add phone home stats for encrypted messages. ([\#9283](https://github.com/matrix-org/synapse/issues/9283)) - Update the redirect URI for OIDC authentication. ([\#9288](https://github.com/matrix-org/synapse/issues/9288)) Bugfixes -------- - Fix spurious errors in logs when deleting a non-existant pusher. ([\#9121](https://github.com/matrix-org/synapse/issues/9121)) - Fix a long-standing bug where Synapse would return a 500 error when a thumbnail did not exist (and auto-generation of thumbnails was not enabled). ([\#9163](https://github.com/matrix-org/synapse/issues/9163)) - Fix a long-standing bug where an internal server error was raised when attempting to preview an HTML document in an unknown character encoding. ([\#9164](https://github.com/matrix-org/synapse/issues/9164)) - Fix a long-standing bug where invalid data could cause errors when calculating the presentable room name for push. ([\#9165](https://github.com/matrix-org/synapse/issues/9165)) - Fix bug where we sometimes didn't detect that Redis connections had died, causing workers to not see new data. ([\#9218](https://github.com/matrix-org/synapse/issues/9218)) - Fix a bug where `None` was passed to Synapse modules instead of an empty dictionary if an empty module `config` block was provided in the homeserver config. ([\#9229](https://github.com/matrix-org/synapse/issues/9229)) - Fix a bug in the `make_room_admin` admin API where it failed if the admin with the greatest power level was not in the room. Contributed by Pankaj Yadav. ([\#9235](https://github.com/matrix-org/synapse/issues/9235)) - Prevent password hashes from getting dropped if a client failed threepid validation during a User Interactive Auth stage. Removes a workaround for an ancient bug in Riot Web /joined_rooms` to work for both local and remote users. ([\#8948](https://github.com/matrix-org/synapse/issues/8948)) - Add experimental support for handling to-device messages on worker processes. ([\#9042](https://github.com/matrix-org/synapse/issues/9042), [\#9043](https://github.com/matrix-org/synapse/issues/9043), [\#9044](https://github.com/matrix-org/synapse/issues/9044), [\#9130](https://github.com/matrix-org/synapse/issues/9130)) - Add experimental support for handling `/keys/claim` and `/room_keys` APIs on worker processes. ([\#9068](https://github.com/matrix-org/synapse/issues/9068)) - Add experimental support for handling `/devices` API on worker processes. ([\#9092](https://github.com/matrix-org/synapse/issues/9092)) - Add experimental support for moving off receipts and account data persistence off master. ([\#9104](https://github.com/matrix-org/synapse/issues/9104), [\#9166](https://github.com/matrix-org/synapse/issues/9166)) Bugfixes -------- - Fix a long-standing issue where an internal server error would occur when requesting a profile over federation that did not include a display name / avatar URL. ([\#9023](https://github.com/matrix-org/synapse/issues/9023)) - Fix a long-standing bug where some caches could grow larger than configured. ([\#9028](https://github.com/matrix-org/synapse/issues/9028)) - Fix error handling during insertion of client IPs into the database. ([\#9051](https://github.com/matrix-org/synapse/issues/9051)) - Fix bug where we didn't correctly record CPU time spent in `on_new_event` block. ([\#9053](https://github.com/matrix-org/synapse/issues/9053)) - Fix a minor bug which could cause confusing error messages from invalid configurations. ([\#9054](https://github.com/matrix-org/synapse/issues/9054)) - Fix incorrect exit code when there is an error at startup. ([\#9059](https://github.com/matrix-org/synapse/issues/9059)) - Fix `JSONDecodeError` spamming the logs when sending transactions to remote servers. ([\#9070](https://github.com/matrix-org/synapse/issues/9070)) - Fix "Failed to send request" errors when a client provides an invalid room alias. ([\#9071](https://github.com/matrix-org/synapse/issues/9071)) - Fix bugs in federation catchup logic that caused outbound federation to be delayed for large servers after start up. Introduced in v1.8.0 and v1.21.0. ([\#9114](https://github.com/matrix-org/synapse/issues/9114), [\#9116](https://github.com/matrix-org/synapse/issues/9116)) - Fix corruption of `pushers` data when a postgres bouncer is used. ([\#9117](https://github.com/matrix-org/synapse/issues/9117)) - Fix minor bugs in handling the `clientRedirectUrl` parameter for SSO login. ([\#9128](https://github.com/matrix-org/synapse/issues/9128)) - Fix "Unhandled error in Deferred: BodyExceededMaxSize" errors when .well-known files that are too large. ([\#9108](https://github.com/matrix-org/synapse/issues/9108)) - Fix "UnboundLocalError: local variable 'length' referenced before assignment" errors when the response body exceeds the expected size. This bug was introduced in v1.25.0. ([\#9145](https://github.com/matrix-org/synapse/issues/9145)) - Fix a long-standing bug "ValueError: invalid literal for int() with base 10" when `/publicRooms` is requested with an invalid `server` parameter. ([\#9161](https://github.com/matrix-org/synapse/issues/9161)) Improved Documentation ---------------------- - Add some extra docs for getting Synapse running on macOS. ([\#8997](https://github.com/matrix-org/synapse/issues/8997)) - Correct a typo in the `systemd-with-workers` documentation. ([\#9035](https://github.com/matrix-org/synapse/issues/9035)) - Correct a typo in `INSTALL.md`. ([\#9040](https://github.com/matrix-org/synapse/issues/9040)) - Add missing `user_mapping_provider` configuration to the Keycloak OIDC example. Contributed by @chris-ruecker. ([\#9057](https://github.com/matrix-org/synapse/issues/9057)) - Quote `pip install` packages when extras are used to avoid shells interpreting bracket characters. ([\#9151](https://github.com/matrix-org/synapse/issues/9151)) Deprecations and Removals ------------------------- - Remove broken and unmaintained `demo/webserver.py` script. ([\#9039](https://github.com/matrix-org/synapse/issues/9039)) Internal Changes ---------------- - Improve efficiency of large state resolutions. ([\#8868](https://github.com/matrix-org/synapse/issues/8868), [\#9029](https://github.com/matrix-org/synapse/issues/9029), [\#9115](https://github.com/matrix-org/synapse/issues/9115), [\#9118](https://github.com/matrix-org/synapse/issues/9118), [\#9124](https://github.com/matrix-org/synapse/issues/9124)) - Various clean-ups to the structured logging and logging context code. ([\#8939](https://github.com/matrix-org/synapse/issues/8939)) - Ensure rejected events get added to some metadata tables. ([\#9016](https://github.com/matrix-org/synapse/issues/9016)) - Ignore date-rotated homeserver logs saved to disk. ([\#9018](https://github.com/matrix-org/synapse/issues/9018)) - Remove an unused column from `access_tokens` table. ([\#9025](https://github.com/matrix-org/synapse/issues/9025)) - Add a `-noextras` factor to `tox.ini`, to support running the tests with no optional dependencies. ([\#9030](https://github.com/matrix-org/synapse/issues/9030)) - Fix running unit tests when optional dependencies are not installed. ([\#9031](https://github.com/matrix-org/synapse/issues/9031)) - Allow bumping schema version when using split out state database. ([\#9033](https://github.com/matrix-org/synapse/issues/9033)) - Configure the linters to run on a consistent set of files. ([\#9038](https://github.com/matrix-org/synapse/issues/9038)) - Various cleanups to device inbox store. ([\#9041](https://github.com/matrix-org/synapse/issues/9041)) - Drop unused database tables. ([\#9055](https://github.com/matrix-org/synapse/issues/9055)) - Remove unused `SynapseService` class. ([\#9058](https://github.com/matrix-org/synapse/issues/9058)) - Remove unnecessary declarations in the tests for the admin API. ([\#9063](https://github.com/matrix-org/synapse/issues/9063)) - Remove `SynapseRequest.get_user_agent`. ([\#9069](https://github.com/matrix-org/synapse/issues/9069)) - Remove redundant `Homeserver.get_ip_from_request` method. ([\#9080](https://github.com/matrix-org/synapse/issues/9080)) - Add type hints to media repository. ([\#9093](https://github.com/matrix-org/synapse/issues/9093)) - Fix the wrong arguments being passed to `BlacklistingAgentWrapper` from `MatrixFederationAgent`. Contributed by Timothy Leung. ([\#9098](https://github.com/matrix-org/synapse/issues/9098)) - Reduce the scope of caught exceptions in `BlacklistingAgentWrapper`. ([\#9106](https://github.com/matrix-org/synapse/issues/9106)) - Improve `UsernamePickerTestCase`. ([\#9112](https://github.com/matrix-org/synapse/issues/9112)) - Remove dependency on `distutils`. ([\#9125](https://github.com/matrix-org/synapse/issues/9125)) - Enforce that replication HTTP clients are called with keyword arguments only. ([\#9144](https://github.com/matrix-org/synapse/issues/9144)) - Fix the Python 3.5 / old dependencies build in CI. ([\#9146](https://github.com/matrix-org/synapse/issues/9146)) - Replace the old `perspectives` option in the Synapse docker config file template with `trusted_key_servers`. ([\#9157](https://github.com/matrix-org/synapse/issues/9157)) Synapse 1.25.0 (2021-01-13) =========================== Ending Support for Python 3.5 and Postgres 9.5 ---------------------------------------------- With this release, the Synapse team is announcing a formal deprecation policy for our platform dependencies, like Python and PostgreSQL: All future releases of Synapse will follow the upstream end-of-life schedules. Which means: * This is the last release which guarantees support for Python 3.5. * We will end support for PostgreSQL 9.5 early next month. * We will end support for Python 3.6 and PostgreSQL 9.6 near the end of the year. Crucially, this means __we will not produce .deb packages for Debian 9 (Stretch) or Ubuntu 16.04 (Xenial)__ beyond the transition period described below. The website https://endoflife.date/ has convenient summaries of the support schedules for projects like [Python](https://endoflife.date/python) and [PostgreSQL](https://endoflife.date/postgresql). If you are unable to upgrade your environment to a supported version of Python or Postgres, we encourage you to consider using the [Synapse Docker images](https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks) instead. ### Transition Period We will make a good faith attempt to avoid breaking compatibility in all releases through the end of March 2021. However, critical security vulnerabilities in dependencies or other unanticipated circumstances may arise which necessitate breaking compatibility earlier. We intend to continue producing .deb packages for Debian 9 (Stretch) and Ubuntu 16.04 (Xenial) through the transition period. Removal warning --------------- The old [Purge Room API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api/purge_room.md) and [Shutdown Room API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api/shutdown_room.md) are deprecated and will be removed in a future release. They will be replaced by the [Delete Room API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api/rooms.md#delete-room-api). `POST /_synapse/admin/v1/rooms//delete` replaces `POST /_synapse/admin/v1/purge_room` and `POST /_synapse/admin/v1/shutdown_room/`. Bugfixes -------- - Fix HTTP proxy support when using a proxy that is on a blacklisted IP. Introduced in v1.25.0rc1. Contributed by @Bubu. ([\#9084](https://github.com/matrix-org/synapse/issues/9084)) Synapse 1.25.0rc1 (2021-01-06) ============================== Features -------- - Add an admin API that lets server admins get power in rooms in which local users have power. ([\#8756](https://github.com/matrix-org/synapse/issues/8756)) - Add optional HTTP authentication to replication endpoints. ([\#8853](https://github.com/matrix-org/synapse/issues/8853)) - Improve the error messages printed as a result of configuration problems for extension modules. ([\#8874](https://github.com/matrix-org/synapse/issues/8874)) - Add the number of local devices to Room Details Admin API. Contributed by @dklimpel. ([\#8886](https://github.com/matrix-org/synapse/issues/8886)) - Add `X-Robots-Tag` header to stop web crawlers from indexing media. Contributed by Aaron Raimist. ([\#8887](https://github.com/matrix-org/synapse/issues/8887)) - Spam-checkers may now define their methods as `async`. ([\#8890](https://github.com/matrix-org/synapse/issues/8890)) - Add support for allowing users to pick their own user ID during a single-sign-on login. ([\#8897](https://github.com/matrix-org/synapse/issues/8897), [\#8900](https://github.com/matrix-org/synapse/issues/8900), [\#8911](https://github.com/matrix-org/synapse/issues/8911), [\#8938](https://github.com/matrix-org/synapse/issues/8938), [\#8941](https://github.com/matrix-org/synapse/issues/8941), [\#8942](https://github.com/matrix-org/synapse/issues/8942), [\#8951](https://github.com/matrix-org/synapse/issues/8951)) - Add an `email.invite_client_location` configuration option to send a web client location to the invite endpoint on the identity server which allows customisation of the email template. ([\#8930](https://github.com/matrix-org/synapse/issues/8930)) - The search term in the list room and list user Admin APIs is now treated as case-insensitive. ([\#8931](https://github.com/matrix-org/synapse/issues/8931)) - Apply an IP range blacklist to push and key revocation requests. ([\#8821](https://github.com/matrix-org/synapse/issues/8821), [\#8870](https://github.com/matrix-org/synapse/issues/8870), [\#8954](https://github.com/matrix-org/synapse/issues/8954)) - Add an option to allow re-use of user-interactive authentication sessions for a period of time. ([\#8970](https://github.com/matrix-org/synapse/issues/8970)) - Allow running the redact endpoint on workers. ([\#8994](https://github.com/matrix-org/synapse/issues/8994)) Bugfixes -------- - Fix bug where we might not correctly calculate the current state for rooms with multiple extremities. ([\#8827](https://github.com/matrix-org/synapse/issues/8827)) - Fix a long-standing bug in the register admin endpoint (`/_synapse/admin/v1/register`) when the `mac` field was not provided. The endpoint now properly returns a 400 error. Contributed by @edwargix. ([\#8837](https://github.com/matrix-org/synapse/issues/8837)) - Fix a long-standing bug on Synapse instances supporting Single-Sign-On, where users would be prompted to enter their password to confirm certain actions, even though they have not set a password. ([\#8858](https://github.com/matrix-org/synapse/issues/8858)) - Fix a longstanding bug where a 500 error would be returned if the `Content-Length` header was not provided to the upload media resource. ([\#8862](https://github.com/matrix-org/synapse/issues/8862)) - Add additional validation to pusher URLs to be compliant with the specification. ([\#8865](https://github.com/matrix-org/synapse/issues/8865)) - Fix the error code that is returned when a user tries to register on a homeserver on which new-user registration has been disabled. ([\#8867](https://github.com/matrix-org/synapse/issues/8867)) - Fix a bug where `PUT /_synapse/admin/v2/users/` failed to create a new user when `avatar_url` is specified. Bug introduced in Synapse v1.9.0. ([\#8872](https://github.com/matrix-org/synapse/issues/8872)) - Fix a 500 error when attempting to preview an empty HTML file. ([\#8883](https://github.com/matrix-org/synapse/issues/8883)) - Fix occasional deadlock when handling SIGHUP. ([\#8918](https://github.com/matrix-org/synapse/issues/8918)) - Fix login API to not ratelimit application services that have ratelimiting disabled. ([\#8920](https://github.com/matrix-org/synapse/issues/8920)) - Fix bug where we ratelimited auto joining of rooms on registration (using `auto_join_rooms` config). ([\#8921](https://github.com/matrix-org/synapse/issues/8921)) - Fix a bug where deactivated users appeared in the user directory when their profile information was updated. ([\#8933](https://github.com/matrix-org/synapse/issues/8933), [\#8964](https://github.com/matrix-org/synapse/issues/8964)) - Fix bug introduced in Synapse v1.24.0 which would cause an exception on startup if both `enabled` and `localdb_enabled` were set to `False` in the `password_config` setting of the configuration file. ([\#8937](https://github.com/matrix-org/synapse/issues/8937)) - Fix a bug where 500 errors would be returned if the `m.room_history_visibility` event had invalid content. ([\#8945](https://github.com/matrix-org/synapse/issues/8945)) - Fix a bug causing common English words to not be considered for a user directory search. ([\#8959](https://github.com/matrix-org/synapse/issues/8959)) - Fix bug where application services couldn't register new ghost users if the server had reached its MAU limit. ([\#8962](https://github.com/matrix-org/synapse/issues/8962)) - Fix a long-standing bug where a `m.image` event without a `url` would cause errors on push. ([\#8965](https://github.com/matrix-org/synapse/issues/8965)) - Fix a small bug in v2 state resolution algorithm, which could also cause performance issues for rooms with large numbers of power levels. ([\#8971](https://github.com/matrix-org/synapse/issues/8971)) - Add validation to the `sendToDevice` API to raise a missing parameters error instead of a 500 error. ([\#8975](https://github.com/matrix-org/synapse/issues/8975)) - Add validation of group IDs to raise a 400 error instead of a 500 eror. ([\#8977](https://github.com/matrix-org/synapse/issues/8977)) Improved Documentation ---------------------- - Fix the "Event persist rate" section of the included grafana dashboard by adding missing prometheus rules. ([\#8802](https://github.com/matrix-org/synapse/issues/8802)) - Combine related media admin API docs. ([\#8839](https://github.com/matrix-org/synapse/issues/8839)) - Fix an error in the documentation for the SAML username mapping provider. ([\#8873](https://github.com/matrix-org/synapse/issues/8873)) - Clarify comments around template directories in `sample_config.yaml`. ([\#8891](https://github.com/matrix-org/synapse/issues/8891)) - Move instructions for database setup, adjusted heading levels and improved syntax highlighting in [INSTALL.md](../INSTALL.md). Contributed by @fossterer. ([\#8987](https://github.com/matrix-org/synapse/issues/8987)) - Update the example value of `group_creation_prefix` in the sample configuration. ([\#8992](https://github.com/matrix-org/synapse/issues/8992)) - Link the Synapse developer room to the development section in the docs. ([\#9002](https://github.com/matrix-org/synapse/issues/9002)) Deprecations and Removals ------------------------- - Deprecate Shutdown Room and Purge Room Admin APIs. ([\#8829](https://github.com/matrix-org/synapse/issues/8829)) Internal Changes ---------------- - Properly store the mapping of external ID to Matrix ID for CAS users. ([\#8856](https://github.com/matrix-org/synapse/issues/8856), [\#8958](https://github.com/matrix-org/synapse/issues/8958)) - Remove some unnecessary stubbing from unit tests. ([\#8861](https://github.com/matrix-org/synapse/issues/8861)) - Remove unused `FakeResponse` class from unit tests. ([\#8864](https://github.com/matrix-org/synapse/issues/8864)) - Pass `room_id` to `get_auth_chain_difference`. ([\#8879](https://github.com/matrix-org/synapse/issues/8879)) - Add type hints to push module. ([\#8880](https://github.com/matrix-org/synapse/issues/8880), [\#8882](https://github.com/matrix-org/synapse/issues/8882), [\#8901](https://github.com/matrix-org/synapse/issues/8901), [\#8940](https://github.com/matrix-org/synapse/issues/8940), [\#8943](https://github.com/matrix-org/synapse/issues/8943), [\#9020](https://github.com/matrix-org/synapse/issues/9020)) - Simplify logic for handling user-interactive-auth via single-sign-on servers. ([\#8881](https://github.com/matrix-org/synapse/issues/8881)) - Skip the SAML tests if the requirements (`pysaml2` and `xmlsec1`) aren't available. ([\#8905](https://github.com/matrix-org/synapse/issues/8905)) - Fix multiarch docker image builds. ([\#8906](https://github.com/matrix-org/synapse/issues/8906)) - Don't publish `latest` docker image until all archs are built. ([\#8909](https://github.com/matrix-org/synapse/issues/8909)) - Various clean-ups to the structured logging and logging context code. ([\#8916](https://github.com/matrix-org/synapse/issues/8916), [\#8935](https://github.com/matrix-org/synapse/issues/8935)) - Automatically drop stale forward-extremities under some specific conditions. ([\#8929](https://github.com/matrix-org/synapse/issues/8929)) - Refactor test utilities for injecting HTTP requests. ([\#8946](https://github.com/matrix-org/synapse/issues/8946)) - Add a maximum size of 50 kilobytes to .well-known lookups. ([\#8950](https://github.com/matrix-org/synapse/issues/8950)) - Fix bug in `generate_log_config` script which made it write empty files. ([\#8952](https://github.com/matrix-org/synapse/issues/8952)) - Clean up tox.ini file; disable coverage checking for non-test runs. ([\#8963](https://github.com/matrix-org/synapse/issues/8963)) - Add type hints to the admin and room list handlers. ([\#8973](https://github.com/matrix-org/synapse/issues/8973)) - Add type hints to the receipts and user directory handlers. ([\#8976](https://github.com/matrix-org/synapse/issues/8976)) - Drop the unused `local_invites` table. ([\#8979](https://github.com/matrix-org/synapse/issues/8979)) - Add type hints to the base storage code. ([\#8980](https://github.com/matrix-org/synapse/issues/8980)) - Support using PyJWT v2.0.0 in the test suite. ([\#8986](https://github.com/matrix-org/synapse/issues/8986)) - Fix `tests.federation.transport.RoomDirectoryFederationTests` and ensure it runs in CI. ([\#8998](https://github.com/matrix-org/synapse/issues/8998)) - Add type hints to the crypto module. ([\#8999](https://github.com/matrix-org/synapse/issues/8999)) Synapse 1.24.0 (2020-12-09) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- The following issues are fixed in v1.23.1 and v1.24.0. - There is a denial of service attack ([CVE-2020-26257](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-26257)) against the federation APIs in which future events will not be correctly sent to other servers over federation. This affects all servers that participate in open federation. (Fixed in [#8776](https://github.com/matrix-org/synapse/pull/8776)). - Synapse may be affected by OpenSSL [CVE-2020-1971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1971). Synapse administrators should ensure that they have the latest versions of the cryptography Python package installed. To upgrade Synapse along with the cryptography package: * Administrators using the [`matrix.org` Docker image](https://hub.docker.com/r/matrixdotorg/synapse/) or the [Debian/Ubuntu packages from `matrix.org`](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages) should ensure that they have version 1.24.0 or 1.23.1 installed: these images include the updated packages. * Administrators who have [installed Synapse from source](https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-from-source) should upgrade the cryptography package within their virtualenv by running: ```sh /bin/pip install 'cryptography>=3.3' ``` * Administrators who have installed Synapse from distribution packages should consult the information from their distributions. Internal Changes ---------------- - Add a maximum version for pysaml2 on Python 3.5. ([\#8898](https://github.com/matrix-org/synapse/issues/8898)) Synapse 1.23.1 (2020-12-09) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- The following issues are fixed in v1.23.1 and v1.24.0. - There is a denial of service attack ([CVE-2020-26257](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-26257)) against the federation APIs in which future events will not be correctly sent to other servers over federation. This affects all servers that participate in open federation. (Fixed in [#8776](https://github.com/matrix-org/synapse/pull/8776)). - Synapse may be affected by OpenSSL [CVE-2020-1971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1971). Synapse administrators should ensure that they have the latest versions of the cryptography Python package installed. To upgrade Synapse along with the cryptography package: * Administrators using the [`matrix.org` Docker image](https://hub.docker.com/r/matrixdotorg/synapse/) or the [Debian/Ubuntu packages from `matrix.org`](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages) should ensure that they have version 1.24.0 or 1.23.1 installed: these images include the updated packages. * Administrators who have [installed Synapse from source](https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-from-source) should upgrade the cryptography package within their virtualenv by running: ```sh /bin/pip install 'cryptography>=3.3' ``` * Administrators who have installed Synapse from distribution packages should consult the information from their distributions. Bugfixes -------- - Fix a bug in some federation APIs which could lead to unexpected behaviour if different parameters were set in the URI and the request body. ([\#8776](https://github.com/matrix-org/synapse/issues/8776)) Internal Changes ---------------- - Add a maximum version for pysaml2 on Python 3.5. ([\#8898](https://github.com/matrix-org/synapse/issues/8898)) Synapse 1.24.0rc2 (2020-12-04) ============================== Bugfixes -------- - Fix a regression in v1.24.0rc1 which failed to allow SAML mapping providers which were unable to redirect users to an additional page. ([\#8878](https://github.com/matrix-org/synapse/issues/8878)) Internal Changes ---------------- - Add support for the `prometheus_client` newer than 0.9.0. Contributed by Jordan Bancino. ([\#8875](https://github.com/matrix-org/synapse/issues/8875)) Synapse 1.24.0rc1 (2020-12-02) ============================== Features -------- - Add admin API for logging in as a user. ([\#8617](https://github.com/matrix-org/synapse/issues/8617)) - Allow specification of the SAML IdP if the metadata returns multiple IdPs. ([\#8630](https://github.com/matrix-org/synapse/issues/8630)) - Add support for re-trying generation of a localpart for OpenID Connect mapping providers. ([\#8801](https://github.com/matrix-org/synapse/issues/8801), [\#8855](https://github.com/matrix-org/synapse/issues/8855)) - Allow the `Date` header through CORS. Contributed by Nicolas Chamo. ([\#8804](https://github.com/matrix-org/synapse/issues/8804)) - Add a config option, `push.group_by_unread_count`, which controls whether unread message counts in push notifications are defined as "the number of rooms with unread messages" or "total unread messages". ([\#8820](https://github.com/matrix-org/synapse/issues/8820)) - Add `force_purge` option to delete-room admin api. ([\#8843](https://github.com/matrix-org/synapse/issues/8843)) Bugfixes -------- - Fix a bug where appservices may be sent an excessive amount of read receipts and presence. Broke in v1.22.0. ([\#8744](https://github.com/matrix-org/synapse/issues/8744)) - Fix a bug in some federation APIs which could lead to unexpected behaviour if different parameters were set in the URI and the request body. ([\#8776](https://github.com/matrix-org/synapse/issues/8776)) - Fix a bug where synctl could spawn duplicate copies of a worker. Contributed by Waylon Cude. ([\#8798](https://github.com/matrix-org/synapse/issues/8798)) - Allow per-room profiles to be used for the server notice user. ([\#8799](https://github.com/matrix-org/synapse/issues/8799)) - Fix a bug where logging could break after a call to SIGHUP. ([\#8817](https://github.com/matrix-org/synapse/issues/8817)) - Fix `register_new_matrix_user` failing with "Bad Request" when trailing slash is included in server URL. Contributed by @angdraug. ([\#8823](https://github.com/matrix-org/synapse/issues/8823)) - Fix a minor long-standing bug in login, where we would offer the `password` login type if a custom auth provider supported it, even if password login was disabled. ([\#8835](https://github.com/matrix-org/synapse/issues/8835)) - Fix a long-standing bug which caused Synapse to require unspecified parameters during user-interactive authentication. ([\#8848](https://github.com/matrix-org/synapse/issues/8848)) - Fix a bug introduced in v1.20.0 where the user-agent and IP address reported during user registration for CAS, OpenID Connect, and SAML were of the wrong form. ([\#8784](https://github.com/matrix-org/synapse/issues/8784)) Improved Documentation ---------------------- - Clarify the usecase for a msisdn delegate. Contributed by Adrian Wannenmacher. ([\#8734](https://github.com/matrix-org/synapse/issues/8734)) - Remove extraneous comma from JSON example in User Admin API docs. ([\#8771](https://github.com/matrix-org/synapse/issues/8771)) - Update `turn-howto.md` with troubleshooting notes. ([\#8779](https://github.com/matrix-org/synapse/issues/8779)) - Fix the example on how to set the `Content-Type` header in nginx for the Client Well-Known URI. ([\#8793](https://github.com/matrix-org/synapse/issues/8793)) - Improve the documentation for the admin API to list all media in a room with respect to encrypted events. ([\#8795](https://github.com/matrix-org/synapse/issues/8795)) - Update the formatting of the `push` section of the homeserver config file to better align with the [code style guidelines](https://github.com/matrix-org/synapse/blob/develop/docs/code_style.md#configuration-file-format). ([\#8818](https://github.com/matrix-org/synapse/issues/8818)) - Improve documentation how to configure prometheus for workers. ([\#8822](https://github.com/matrix-org/synapse/issues/8822)) - Update example prometheus console. ([\#8824](https://github.com/matrix-org/synapse/issues/8824)) Deprecations and Removals ------------------------- - Remove old `/_matrix/client/*/admin` endpoints which were deprecated since Synapse 1.20.0. ([\#8785](https://github.com/matrix-org/synapse/issues/8785)) - Disable pretty printing JSON responses for curl. Users who want pretty-printed output should use [jq](https://stedolan.github.io/jq/) in combination with curl. Contributed by @tulir. ([\#8833](https://github.com/matrix-org/synapse/issues/8833)) Internal Changes ---------------- - Simplify the way the `HomeServer` object caches its internal attributes. ([\#8565](https://github.com/matrix-org/synapse/issues/8565), [\#8851](https://github.com/matrix-org/synapse/issues/8851)) - Add an example and documentation for clock skew to the SAML2 sample configuration to allow for clock/time difference between the homserver and IdP. Contributed by @localguru. ([\#8731](https://github.com/matrix-org/synapse/issues/8731)) - Generalise `RoomMemberHandler._locally_reject_invite` to apply to more flows than just invite. ([\#8751](https://github.com/matrix-org/synapse/issues/8751)) - Generalise `RoomStore.maybe_store_room_on_invite` to handle other, non-invite membership events. ([\#8754](https://github.com/matrix-org/synapse/issues/8754)) - Refactor test utilities for injecting HTTP requests. ([\#8757](https://github.com/matrix-org/synapse/issues/8757), [\#8758](https://github.com/matrix-org/synapse/issues/8758), [\#8759](https://github.com/matrix-org/synapse/issues/8759), [\#8760](https://github.com/matrix-org/synapse/issues/8760), [\#8761](https://github.com/matrix-org/synapse/issues/8761), [\#8777](https://github.com/matrix-org/synapse/issues/8777)) - Consolidate logic between the OpenID Connect and SAML code. ([\#8765](https://github.com/matrix-org/synapse/issues/8765)) - Use `TYPE_CHECKING` instead of magic `MYPY` variable. ([\#8770](https://github.com/matrix-org/synapse/issues/8770)) - Add a commandline script to sign arbitrary json objects. ([\#8772](https://github.com/matrix-org/synapse/issues/8772)) - Minor log line improvements for the SSO mapping code used to generate Matrix IDs from SSO IDs. ([\#8773](https://github.com/matrix-org/synapse/issues/8773)) - Add additional error checking for OpenID Connect and SAML mapping providers. ([\#8774](https://github.com/matrix-org/synapse/issues/8774), [\#8800](https://github.com/matrix-org/synapse/issues/8800)) - Add type hints to HTTP abstractions. ([\#8806](https://github.com/matrix-org/synapse/issues/8806), [\#8812](https://github.com/matrix-org/synapse/issues/8812)) - Remove unnecessary function arguments and add typing to several membership replication classes. ([\#8809](https://github.com/matrix-org/synapse/issues/8809)) - Optimise the lookup for an invite from another homeserver when trying to reject it. ([\#8815](https://github.com/matrix-org/synapse/issues/8815)) - Add tests for `password_auth_provider`s. ([\#8819](https://github.com/matrix-org/synapse/issues/8819)) - Drop redundant database index on `event_json`. ([\#8845](https://github.com/matrix-org/synapse/issues/8845)) - Simplify `uk.half-shot.msc2778.login.application_service` login handler. ([\#8847](https://github.com/matrix-org/synapse/issues/8847)) - Refactor `password_auth_provider` support code. ([\#8849](https://github.com/matrix-org/synapse/issues/8849)) - Add missing `ordering` to background database updates. ([\#8850](https://github.com/matrix-org/synapse/issues/8850)) - Allow for specifying a room version when creating a room in unit tests via `RestHelper.create_room_as`. ([\#8854](https://github.com/matrix-org/synapse/issues/8854)) Synapse 1.23.0 (2020-11-18) =========================== This release changes the way structured logging is configured. See the [upgrade notes](docs/upgrade.md#upgrading-to-v1230) for details. **Note**: We are aware of a trivially exploitable denial of service vulnerability in versions of Synapse prior to 1.20.0. Complete details will be disclosed on Monday, November 23rd. If you have not upgraded recently, please do so. Bugfixes -------- - Fix a dependency versioning bug in the Dockerfile that prevented Synapse from starting. ([\#8767](https://github.com/matrix-org/synapse/issues/8767)) Synapse 1.23.0rc1 (2020-11-13) ============================== Features -------- - Add a push rule that highlights when a jitsi conference is created in a room. ([\#8286](https://github.com/matrix-org/synapse/issues/8286)) - Add an admin api to delete a single file or files that were not used for a defined time from server. Contributed by @dklimpel. ([\#8519](https://github.com/matrix-org/synapse/issues/8519)) - Split admin API for reported events (`GET /_synapse/admin/v1/event_reports`) into detail and list endpoints. This is a breaking change to #8217 which was introduced in Synapse v1.21.0. Those who already use this API should check their scripts. Contributed by @dklimpel. ([\#8539](https://github.com/matrix-org/synapse/issues/8539)) - Support generating structured logs via the standard logging configuration. ([\#8607](https://github.com/matrix-org/synapse/issues/8607), [\#8685](https://github.com/matrix-org/synapse/issues/8685)) - Add an admin API to allow server admins to list users' pushers. Contributed by @dklimpel. ([\#8610](https://github.com/matrix-org/synapse/issues/8610), [\#8689](https://github.com/matrix-org/synapse/issues/8689)) - Add an admin API `GET /_synapse/admin/v1/users//media` to get information about uploaded media. Contributed by @dklimpel. ([\#8647](https://github.com/matrix-org/synapse/issues/8647)) - Add an admin API for local user media statistics. Contributed by @dklimpel. ([\#8700](https://github.com/matrix-org/synapse/issues/8700)) - Add `displayname` to Shared-Secret Registration for admins. ([\#8722](https://github.com/matrix-org/synapse/issues/8722)) Bugfixes -------- - Fix fetching of E2E cross signing keys over federation when only one of the master key and device signing key is cached already. ([\#8455](https://github.com/matrix-org/synapse/issues/8455)) - Fix a bug where Synapse would blindly forward bad responses from federation to clients when retrieving profile information. ([\#8580](https://github.com/matrix-org/synapse/issues/8580)) - Fix a bug where the account validity endpoint would silently fail if the user ID did not have an expiration time. It now returns a 400 error. ([\#8620](https://github.com/matrix-org/synapse/issues/8620)) - Fix email notifications for invites without local state. ([\#8627](https://github.com/matrix-org/synapse/issues/8627)) - Fix handling of invalid group IDs to return a 400 rather than log an exception and return a 500. ([\#8628](https://github.com/matrix-org/synapse/issues/8628)) - Fix handling of User-Agent headers that are invalid UTF-8, which caused user agents of users to not get correctly recorded. ([\#8632](https://github.com/matrix-org/synapse/issues/8632)) - Fix a bug in the `joined_rooms` admin API if the user has never joined any rooms. The bug was introduced, along with the API, in v1.21.0. ([\#8643](https://github.com/matrix-org/synapse/issues/8643)) - Fix exception during handling multiple concurrent requests for remote media when using multiple media repositories. ([\#8682](https://github.com/matrix-org/synapse/issues/8682)) - Fix bug that prevented Synapse from recovering after losing connection to the database. ([\#8726](https://github.com/matrix-org/synapse/issues/8726)) - Fix bug where the `/_synapse/admin/v1/send_server_notice` API could send notices to non-notice rooms. ([\#8728](https://github.com/matrix-org/synapse/issues/8728)) - Fix PostgreSQL port script fails when DB has no backfilled events. Broke in v1.21.0. ([\#8729](https://github.com/matrix-org/synapse/issues/8729)) - Fix PostgreSQL port script to correctly handle foreign key constraints. Broke in v1.21.0. ([\#8730](https://github.com/matrix-org/synapse/issues/8730)) - Fix PostgreSQL port script so that it can be run again after a failure. Broke in v1.21.0. ([\#8755](https://github.com/matrix-org/synapse/issues/8755)) Improved Documentation ---------------------- - Instructions for Azure AD in the OpenID Connect documentation. Contributed by peterk. ([\#8582](https://github.com/matrix-org/synapse/issues/8582)) - Improve the sample configuration for single sign-on providers. ([\#8635](https://github.com/matrix-org/synapse/issues/8635)) - Fix the filepath of Dex's example config and the link to Dex's Getting Started guide in the OpenID Connect docs. ([\#8657](https://github.com/matrix-org/synapse/issues/8657)) - Note support for Python 3.9. ([\#8665](https://github.com/matrix-org/synapse/issues/8665)) - Minor updates to docs on running tests. ([\#8666](https://github.com/matrix-org/synapse/issues/8666)) - Interlink prometheus/grafana documentation. ([\#8667](https://github.com/matrix-org/synapse/issues/8667)) - Notes on SSO logins and media_repository worker. ([\#8701](https://github.com/matrix-org/synapse/issues/8701)) - Document experimental support for running multiple event persisters. ([\#8706](https://github.com/matrix-org/synapse/issues/8706)) - Add information regarding the various sources of, and expected contributions to, Synapse's documentation to `CONTRIBUTING.md`. ([\#8714](https://github.com/matrix-org/synapse/issues/8714)) - Migrate documentation `docs/admin_api/event_reports` to markdown. ([\#8742](https://github.com/matrix-org/synapse/issues/8742)) - Add some helpful hints to the README for new Synapse developers. Contributed by @chagai95. ([\#8746](https://github.com/matrix-org/synapse/issues/8746)) Internal Changes ---------------- - Optimise `/createRoom` with multiple invited users. ([\#8559](https://github.com/matrix-org/synapse/issues/8559)) - Implement and use an `@lru_cache` decorator. ([\#8595](https://github.com/matrix-org/synapse/issues/8595)) - Don't instansiate Requester directly. ([\#8614](https://github.com/matrix-org/synapse/issues/8614)) - Type hints for `RegistrationStore`. ([\#8615](https://github.com/matrix-org/synapse/issues/8615)) - Change schema to support access tokens belonging to one user but granting access to another. ([\#8616](https://github.com/matrix-org/synapse/issues/8616)) - Remove unused OPTIONS handlers. ([\#8621](https://github.com/matrix-org/synapse/issues/8621)) - Run `mypy` as part of the lint.sh script. ([\#8633](https://github.com/matrix-org/synapse/issues/8633)) - Correct Synapse's PyPI package name in the OpenID Connect installation instructions. ([\#8634](https://github.com/matrix-org/synapse/issues/8634)) - Catch exceptions during initialization of `password_providers`. Contributed by Nicolai Søborg. ([\#8636](https://github.com/matrix-org/synapse/issues/8636)) - Fix typos and spelling errors in the code. ([\#8639](https://github.com/matrix-org/synapse/issues/8639)) - Reduce number of OpenTracing spans started. ([\#8640](https://github.com/matrix-org/synapse/issues/8640), [\#8668](https://github.com/matrix-org/synapse/issues/8668), [\#8670](https://github.com/matrix-org/synapse/issues/8670)) - Add field `total` to device list in admin API. ([\#8644](https://github.com/matrix-org/synapse/issues/8644)) - Add more type hints to the application services code. ([\#8655](https://github.com/matrix-org/synapse/issues/8655), [\#8693](https://github.com/matrix-org/synapse/issues/8693)) - Tell Black to format code for Python 3.5. ([\#8664](https://github.com/matrix-org/synapse/issues/8664)) - Don't pull event from DB when handling replication traffic. ([\#8669](https://github.com/matrix-org/synapse/issues/8669)) - Abstract some invite-related code in preparation for landing knocking. ([\#8671](https://github.com/matrix-org/synapse/issues/8671), [\#8688](https://github.com/matrix-org/synapse/issues/8688)) - Clarify representation of events in logfiles. ([\#8679](https://github.com/matrix-org/synapse/issues/8679)) - Don't require `hiredis` package to be installed to run unit tests. ([\#8680](https://github.com/matrix-org/synapse/issues/8680)) - Fix typing info on cache call signature to accept `on_invalidate`. ([\#8684](https://github.com/matrix-org/synapse/issues/8684)) - Fail tests if they do not await coroutines. ([\#8690](https://github.com/matrix-org/synapse/issues/8690)) - Improve start time by adding an index to `e2e_cross_signing_keys.stream_id`. ([\#8694](https://github.com/matrix-org/synapse/issues/8694)) - Re-organize the structured logging code to separate the TCP transport handling from the JSON formatting. ([\#8697](https://github.com/matrix-org/synapse/issues/8697)) - Use Python 3.8 in Docker images by default. ([\#8698](https://github.com/matrix-org/synapse/issues/8698)) - Remove the "draft" status of the Room Details Admin API. ([\#8702](https://github.com/matrix-org/synapse/issues/8702)) - Improve the error returned when a non-string displayname or avatar_url is used when updating a user's profile. ([\#8705](https://github.com/matrix-org/synapse/issues/8705)) - Block attempts by clients to send server ACLs, or redactions of server ACLs, that would result in the local server being blocked from the room. ([\#8708](https://github.com/matrix-org/synapse/issues/8708)) - Add metrics the allow the local sysadmin to track 3PID `/requestToken` requests. ([\#8712](https://github.com/matrix-org/synapse/issues/8712)) - Consolidate duplicated lists of purged tables that are checked in tests. ([\#8713](https://github.com/matrix-org/synapse/issues/8713)) - Add some `mdui:UIInfo` element examples for `saml2_config` in the homeserver config. ([\#8718](https://github.com/matrix-org/synapse/issues/8718)) - Improve the error message returned when a remote server incorrectly sets the `Content-Type` header in response to a JSON request. ([\#8719](https://github.com/matrix-org/synapse/issues/8719)) - Speed up repeated state resolutions on the same room by caching event ID to auth event ID lookups. ([\#8752](https://github.com/matrix-org/synapse/issues/8752)) Synapse 1.22.1 (2020-10-30) =========================== Bugfixes -------- - Fix a bug where an appservice may not be forwarded events for a room it was recently invited to. Broke in v1.22.0. ([\#8676](https://github.com/matrix-org/synapse/issues/8676)) - Fix `Object of type frozendict is not JSON serializable` exceptions when using third-party event rules. Broke in v1.22.0. ([\#8678](https://github.com/matrix-org/synapse/issues/8678)) Synapse 1.22.0 (2020-10-27) =========================== No significant changes. Synapse 1.22.0rc2 (2020-10-26) ============================== Bugfixes -------- - Fix bugs where ephemeral events were not sent to appservices. Broke in v1.22.0rc1. ([\#8648](https://github.com/matrix-org/synapse/issues/8648), [\#8656](https://github.com/matrix-org/synapse/issues/8656)) - Fix `user_daily_visits` table to not have duplicate rows per user/device due to multiple user agents. Broke in v1.22.0rc1. ([\#8654](https://github.com/matrix-org/synapse/issues/8654)) Synapse 1.22.0rc1 (2020-10-22) ============================== Features -------- - Add a configuration option for always using the "userinfo endpoint" for OpenID Connect. This fixes support for some identity providers, e.g. GitLab. Contributed by Benjamin Koch. ([\#7658](https://github.com/matrix-org/synapse/issues/7658)) - Add ability for `ThirdPartyEventRules` modules to query and manipulate whether a room is in the public rooms directory. ([\#8292](https://github.com/matrix-org/synapse/issues/8292), [\#8467](https://github.com/matrix-org/synapse/issues/8467)) - Add support for olm fallback keys ([MSC2732](https://github.com/matrix-org/matrix-doc/pull/2732)). ([\#8312](https://github.com/matrix-org/synapse/issues/8312), [\#8501](https://github.com/matrix-org/synapse/issues/8501)) - Add support for running background tasks in a separate worker process. ([\#8369](https://github.com/matrix-org/synapse/issues/8369), [\#8458](https://github.com/matrix-org/synapse/issues/8458), [\#8489](https://github.com/matrix-org/synapse/issues/8489), [\#8513](https://github.com/matrix-org/synapse/issues/8513), [\#8544](https://github.com/matrix-org/synapse/issues/8544), [\#8599](https://github.com/matrix-org/synapse/issues/8599)) - Add support for device dehydration ([MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697)). ([\#8380](https://github.com/matrix-org/synapse/issues/8380)) - Add support for [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409), which allows sending typing, read receipts, and presence events to appservices. ([\#8437](https://github.com/matrix-org/synapse/issues/8437), [\#8590](https://github.com/matrix-org/synapse/issues/8590)) - Change default room version to "6", per [MSC2788](https://github.com/matrix-org/matrix-doc/pull/2788). ([\#8461](https://github.com/matrix-org/synapse/issues/8461)) - Add the ability to send non-membership events into a room via the `ModuleApi`. ([\#8479](https://github.com/matrix-org/synapse/issues/8479)) - Increase default upload size limit from 10M to 50M. Contributed by @Akkowicz. ([\#8502](https://github.com/matrix-org/synapse/issues/8502)) - Add support for modifying event content in `ThirdPartyRules` modules. ([\#8535](https://github.com/matrix-org/synapse/issues/8535), [\#8564](https://github.com/matrix-org/synapse/issues/8564)) Bugfixes -------- - Fix a longstanding bug where invalid ignored users in account data could break clients. ([\#8454](https://github.com/matrix-org/synapse/issues/8454)) - Fix a bug where backfilling a room with an event that was missing the `redacts` field would break. ([\#8457](https://github.com/matrix-org/synapse/issues/8457)) - Don't attempt to respond to some requests if the client has already disconnected. ([\#8465](https://github.com/matrix-org/synapse/issues/8465)) - Fix message duplication if something goes wrong after persisting the event. ([\#8476](https://github.com/matrix-org/synapse/issues/8476)) - Fix incremental sync returning an incorrect `prev_batch` token in timeline section, which when used to paginate returned events that were included in the incremental sync. Broken since v0.16.0. ([\#8486](https://github.com/matrix-org/synapse/issues/8486)) - Expose the `uk.half-shot.msc2778.login.application_service` to clients from the login API. This feature was added in v1.21.0, but was not exposed as a potential login flow. ([\#8504](https://github.com/matrix-org/synapse/issues/8504)) - Fix error code for `/profile/{userId}/displayname` to be `M_BAD_JSON`. ([\#8517](https://github.com/matrix-org/synapse/issues/8517)) - Fix a bug introduced in v1.7.0 that could cause Synapse to insert values from non-state `m.room.retention` events into the `room_retention` database table. ([\#8527](https://github.com/matrix-org/synapse/issues/8527)) - Fix not sending events over federation when using sharded event writers. ([\#8536](https://github.com/matrix-org/synapse/issues/8536)) - Fix a long standing bug where email notifications for encrypted messages were blank. ([\#8545](https://github.com/matrix-org/synapse/issues/8545)) - Fix increase in the number of `There was no active span...` errors logged when using OpenTracing. ([\#8567](https://github.com/matrix-org/synapse/issues/8567)) - Fix a bug that prevented errors encountered during execution of the `synapse_port_db` from being correctly printed. ([\#8585](https://github.com/matrix-org/synapse/issues/8585)) - Fix appservice transactions to only include a maximum of 100 persistent and 100 ephemeral events. ([\#8606](https://github.com/matrix-org/synapse/issues/8606)) Updates to the Docker image --------------------------- - Added multi-arch support (arm64,arm/v7) for the docker images. Contributed by @maquis196. ([\#7921](https://github.com/matrix-org/synapse/issues/7921)) - Add support for passing commandline args to the synapse process. Contributed by @samuel-p. ([\#8390](https://github.com/matrix-org/synapse/issues/8390)) Improved Documentation ---------------------- - Update the directions for using the manhole with coroutines. ([\#8462](https://github.com/matrix-org/synapse/issues/8462)) - Improve readme by adding new shield.io badges. ([\#8493](https://github.com/matrix-org/synapse/issues/8493)) - Added note about docker in manhole.md regarding which ip address to bind to. Contributed by @Maquis196. ([\#8526](https://github.com/matrix-org/synapse/issues/8526)) - Document the new behaviour of the `allowed_lifetime_min` and `allowed_lifetime_max` settings in the room retention configuration. ([\#8529](https://github.com/matrix-org/synapse/issues/8529)) Deprecations and Removals ------------------------- - Drop unused `device_max_stream_id` table. ([\#8589](https://github.com/matrix-org/synapse/issues/8589)) Internal Changes ---------------- - Check for unreachable code with mypy. ([\#8432](https://github.com/matrix-org/synapse/issues/8432)) - Add unit test for event persister sharding. ([\#8433](https://github.com/matrix-org/synapse/issues/8433)) - Allow events to be sent to clients sooner when using sharded event persisters. ([\#8439](https://github.com/matrix-org/synapse/issues/8439), [\#8488](https://github.com/matrix-org/synapse/issues/8488), [\#8496](https://github.com/matrix-org/synapse/issues/8496), [\#8499](https://github.com/matrix-org/synapse/issues/8499)) - Configure `public_baseurl` when using demo scripts. ([\#8443](https://github.com/matrix-org/synapse/issues/8443)) - Add SQL logging on queries that happen during startup. ([\#8448](https://github.com/matrix-org/synapse/issues/8448)) - Speed up unit tests when using PostgreSQL. ([\#8450](https://github.com/matrix-org/synapse/issues/8450)) - Remove redundant database loads of stream_ordering for events we already have. ([\#8452](https://github.com/matrix-org/synapse/issues/8452)) - Reduce inconsistencies between codepaths for membership and non-membership events. ([\#8463](https://github.com/matrix-org/synapse/issues/8463)) - Combine `SpamCheckerApi` with the more generic `ModuleApi`. ([\#8464](https://github.com/matrix-org/synapse/issues/8464)) - Additional testing for `ThirdPartyEventRules`. ([\#8468](https://github.com/matrix-org/synapse/issues/8468)) - Add `-d` option to `./scripts-dev/lint.sh` to lint files that have changed since the last git commit. ([\#8472](https://github.com/matrix-org/synapse/issues/8472)) - Unblacklist some sytests. ([\#8474](https://github.com/matrix-org/synapse/issues/8474)) - Include the log level in the phone home stats. ([\#8477](https://github.com/matrix-org/synapse/issues/8477)) - Remove outdated sphinx documentation, scripts and configuration. ([\#8480](https://github.com/matrix-org/synapse/issues/8480)) - Clarify error message when plugin config parsers raise an error. ([\#8492](https://github.com/matrix-org/synapse/issues/8492)) - Remove the deprecated `Handlers` object. ([\#8494](https://github.com/matrix-org/synapse/issues/8494)) - Fix a threadsafety bug in unit tests. ([\#8497](https://github.com/matrix-org/synapse/issues/8497)) - Add user agent to user_daily_visits table. ([\#8503](https://github.com/matrix-org/synapse/issues/8503)) - Add type hints to various parts of the code base. ([\#8407](https://github.com/matrix-org/synapse/issues/8407), [\#8505](https://github.com/matrix-org/synapse/issues/8505), [\#8507](https://github.com/matrix-org/synapse/issues/8507), [\#8547](https://github.com/matrix-org/synapse/issues/8547), [\#8562](https://github.com/matrix-org/synapse/issues/8562), [\#8609](https://github.com/matrix-org/synapse/issues/8609)) - Remove unused code from the test framework. ([\#8514](https://github.com/matrix-org/synapse/issues/8514)) - Apply some internal fixes to the `HomeServer` class to make its code more idiomatic and statically-verifiable. ([\#8515](https://github.com/matrix-org/synapse/issues/8515)) - Factor out common code between `RoomMemberHandler._locally_reject_invite` and `EventCreationHandler.create_event`. ([\#8537](https://github.com/matrix-org/synapse/issues/8537)) - Improve database performance by executing more queries without starting transactions. ([\#8542](https://github.com/matrix-org/synapse/issues/8542)) - Rename `Cache` to `DeferredCache`, to better reflect its purpose. ([\#8548](https://github.com/matrix-org/synapse/issues/8548)) - Move metric registration code down into `LruCache`. ([\#8561](https://github.com/matrix-org/synapse/issues/8561), [\#8591](https://github.com/matrix-org/synapse/issues/8591)) - Replace `DeferredCache` with the lighter-weight `LruCache` where possible. ([\#8563](https://github.com/matrix-org/synapse/issues/8563)) - Add virtualenv-generated folders to `.gitignore`. ([\#8566](https://github.com/matrix-org/synapse/issues/8566)) - Add `get_immediate` method to `DeferredCache`. ([\#8568](https://github.com/matrix-org/synapse/issues/8568)) - Fix mypy not properly checking across the codebase, additionally, fix a typing assertion error in `handlers/auth.py`. ([\#8569](https://github.com/matrix-org/synapse/issues/8569)) - Fix `synmark` benchmark runner. ([\#8571](https://github.com/matrix-org/synapse/issues/8571)) - Modify `DeferredCache.get()` to return `Deferred`s instead of `ObservableDeferred`s. ([\#8572](https://github.com/matrix-org/synapse/issues/8572)) - Adjust a protocol-type definition to fit `sqlite3` assertions. ([\#8577](https://github.com/matrix-org/synapse/issues/8577)) - Support macOS on the `synmark` benchmark runner. ([\#8578](https://github.com/matrix-org/synapse/issues/8578)) - Update `mypy` static type checker to 0.790. ([\#8583](https://github.com/matrix-org/synapse/issues/8583), [\#8600](https://github.com/matrix-org/synapse/issues/8600)) - Re-organize the structured logging code to separate the TCP transport handling from the JSON formatting. ([\#8587](https://github.com/matrix-org/synapse/issues/8587)) - Remove extraneous unittest logging decorators from unit tests. ([\#8592](https://github.com/matrix-org/synapse/issues/8592)) - Minor optimisations in caching code. ([\#8593](https://github.com/matrix-org/synapse/issues/8593), [\#8594](https://github.com/matrix-org/synapse/issues/8594)) Synapse 1.21.2 (2020-10-15) =========================== Debian packages and Docker images have been rebuilt using the latest versions of dependency libraries, including authlib 0.15.1. Please see bugfixes below. Security advisory ----------------- * HTML pages served via Synapse were vulnerable to cross-site scripting (XSS) attacks. All server administrators are encouraged to upgrade. ([\#8444](https://github.com/matrix-org/synapse/pull/8444)) ([CVE-2020-26891](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-26891)) This fix was originally included in v1.21.0 but was missing a security advisory. This was reported by [Denis Kasak](https://github.com/dkasak). Bugfixes -------- - Fix rare bug where sending an event would fail due to a racey assertion. ([\#8530](https://github.com/matrix-org/synapse/issues/8530)) - An updated version of the authlib dependency is included in the Docker and Debian images to fix an issue using OpenID Connect. See [\#8534](https://github.com/matrix-org/synapse/issues/8534) for details. Synapse 1.21.1 (2020-10-13) =========================== This release fixes a regression in v1.21.0 that prevented debian packages from being built. It is otherwise identical to v1.21.0. Synapse 1.21.0 (2020-10-12) =========================== No significant changes since v1.21.0rc3. As [noted in v1.20.0](https://github.com/matrix-org/synapse/blob/release-v1.21.0/CHANGES.md#synapse-1200-2020-09-22), a future release will drop support for accessing Synapse's [Admin API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api) under the `/_matrix/client/*` endpoint prefixes. At that point, the Admin API will only be accessible under `/_synapse/admin`. Synapse 1.21.0rc3 (2020-10-08) ============================== Bugfixes -------- - Fix duplication of events on high traffic servers, caused by PostgreSQL `could not serialize access due to concurrent update` errors. ([\#8456](https://github.com/matrix-org/synapse/issues/8456)) Internal Changes ---------------- - Add Groovy Gorilla to the list of distributions we build `.deb`s for. ([\#8475](https://github.com/matrix-org/synapse/issues/8475)) Synapse 1.21.0rc2 (2020-10-02) ============================== Features -------- - Convert additional templates from inline HTML to Jinja2 templates. ([\#8444](https://github.com/matrix-org/synapse/issues/8444)) Bugfixes -------- - Fix a regression in v1.21.0rc1 which broke thumbnails of remote media. ([\#8438](https://github.com/matrix-org/synapse/issues/8438)) - Do not expose the experimental `uk.half-shot.msc2778.login.application_service` flow in the login API, which caused a compatibility problem with Element iOS. ([\#8440](https://github.com/matrix-org/synapse/issues/8440)) - Fix malformed log line in new federation "catch up" logic. ([\#8442](https://github.com/matrix-org/synapse/issues/8442)) - Fix DB query on startup for negative streams which caused long start up times. Introduced in [\#8374](https://github.com/matrix-org/synapse/issues/8374). ([\#8447](https://github.com/matrix-org/synapse/issues/8447)) Synapse 1.21.0rc1 (2020-10-01) ============================== Features -------- - Require the user to confirm that their password should be reset after clicking the email confirmation link. ([\#8004](https://github.com/matrix-org/synapse/issues/8004)) - Add an admin API `GET /_synapse/admin/v1/event_reports` to read entries of table `event_reports`. Contributed by @dklimpel. ([\#8217](https://github.com/matrix-org/synapse/issues/8217)) - Consolidate the SSO error template across all configuration. ([\#8248](https://github.com/matrix-org/synapse/issues/8248), [\#8405](https://github.com/matrix-org/synapse/issues/8405)) - Add a configuration option to specify a whitelist of domains that a user can be redirected to after validating their email or phone number. ([\#8275](https://github.com/matrix-org/synapse/issues/8275), [\#8417](https://github.com/matrix-org/synapse/issues/8417)) - Add experimental support for sharding event persister. ([\#8294](https://github.com/matrix-org/synapse/issues/8294), [\#8387](https://github.com/matrix-org/synapse/issues/8387), [\#8396](https://github.com/matrix-org/synapse/issues/8396), [\#8419](https://github.com/matrix-org/synapse/issues/8419)) - Add the room topic and avatar to the room details admin API. ([\#8305](https://github.com/matrix-org/synapse/issues/8305)) - Add an admin API for querying rooms where a user is a member. Contributed by @dklimpel. ([\#8306](https://github.com/matrix-org/synapse/issues/8306)) - Add `uk.half-shot.msc2778.login.application_service` login type to allow appservices to login. ([\#8320](https://github.com/matrix-org/synapse/issues/8320)) - Add a configuration option that allows existing users to log in with OpenID Connect. Contributed by @BBBSnowball and @OmmyZhang. ([\#8345](https://github.com/matrix-org/synapse/issues/8345)) - Add prometheus metrics for replication requests. ([\#8406](https://github.com/matrix-org/synapse/issues/8406)) - Support passing additional single sign-on parameters to the client. ([\#8413](https://github.com/matrix-org/synapse/issues/8413)) - Add experimental reporting of metrics on expensive rooms for state-resolution. ([\#8420](https://github.com/matrix-org/synapse/issues/8420)) - Add experimental prometheus metric to track numbers of "large" rooms for state resolutiom. ([\#8425](https://github.com/matrix-org/synapse/issues/8425)) - Add prometheus metrics to track federation delays. ([\#8430](https://github.com/matrix-org/synapse/issues/8430)) Bugfixes -------- - Fix a bug in the media repository where remote thumbnails with the same size but different crop methods would overwrite each other. Contributed by @deepbluev7. ([\#7124](https://github.com/matrix-org/synapse/issues/7124)) - Fix inconsistent handling of non-existent push rules, and stop tracking the `enabled` state of removed push rules. ([\#7796](https://github.com/matrix-org/synapse/issues/7796)) - Fix a longstanding bug when storing a media file with an empty `upload_name`. ([\#7905](https://github.com/matrix-org/synapse/issues/7905)) - Fix messages not being sent over federation until an event is sent into the same room. ([\#8230](https://github.com/matrix-org/synapse/issues/8230), [\#8247](https://github.com/matrix-org/synapse/issues/8247), [\#8258](https://github.com/matrix-org/synapse/issues/8258), [\#8272](https://github.com/matrix-org/synapse/issues/8272), [\#8322](https://github.com/matrix-org/synapse/issues/8322)) - Fix a longstanding bug where files that could not be thumbnailed would result in an Internal Server Error. ([\#8236](https://github.com/matrix-org/synapse/issues/8236), [\#8435](https://github.com/matrix-org/synapse/issues/8435)) - Upgrade minimum version of `canonicaljson` to version 1.4.0, to fix an unicode encoding issue. ([\#8262](https://github.com/matrix-org/synapse/issues/8262)) - Fix longstanding bug which could lead to incomplete database upgrades on SQLite. ([\#8265](https://github.com/matrix-org/synapse/issues/8265)) - Fix stack overflow when stderr is redirected to the logging system, and the logging system encounters an error. ([\#8268](https://github.com/matrix-org/synapse/issues/8268)) - Fix a bug which cause the logging system to report errors, if `DEBUG` was enabled and no `context` filter was applied. ([\#8278](https://github.com/matrix-org/synapse/issues/8278)) - Fix edge case where push could get delayed for a user until a later event was pushed. ([\#8287](https://github.com/matrix-org/synapse/issues/8287)) - Fix fetching malformed events from remote servers. ([\#8324](https://github.com/matrix-org/synapse/issues/8324)) - Fix `UnboundLocalError` from occuring when appservices send a malformed register request. ([\#8329](https://github.com/matrix-org/synapse/issues/8329)) - Don't send push notifications to expired user accounts. ([\#8353](https://github.com/matrix-org/synapse/issues/8353)) - Fix a regression in v1.19.0 with reactivating users through the admin API. ([\#8362](https://github.com/matrix-org/synapse/issues/8362)) - Fix a bug where during device registration the length of the device name wasn't limited. ([\#8364](https://github.com/matrix-org/synapse/issues/8364)) - Include `guest_access` in the fields that are checked for null bytes when updating `room_stats_state`. Broke in v1.7.2. ([\#8373](https://github.com/matrix-org/synapse/issues/8373)) - Fix theoretical race condition where events are not sent down `/sync` if the synchrotron worker is restarted without restarting other workers. ([\#8374](https://github.com/matrix-org/synapse/issues/8374)) - Fix a bug which could cause errors in rooms with malformed membership events, on servers using sqlite. ([\#8385](https://github.com/matrix-org/synapse/issues/8385)) - Fix "Re-starting finished log context" warning when receiving an event we already had over federation. ([\#8398](https://github.com/matrix-org/synapse/issues/8398)) - Fix incorrect handling of timeouts on outgoing HTTP requests. ([\#8400](https://github.com/matrix-org/synapse/issues/8400)) - Fix a regression in v1.20.0 in the `synapse_port_db` script regarding the `ui_auth_sessions_ips` table. ([\#8410](https://github.com/matrix-org/synapse/issues/8410)) - Remove unnecessary 3PID registration check when resetting password via an email address. Bug introduced in v0.34.0rc2. ([\#8414](https://github.com/matrix-org/synapse/issues/8414)) Improved Documentation ---------------------- - Add `/_synapse/client` to the reverse proxy documentation. ([\#8227](https://github.com/matrix-org/synapse/issues/8227)) - Add note to the reverse proxy settings documentation about disabling Apache's mod_security2. Contributed by Julian Fietkau (@jfietkau). ([\#8375](https://github.com/matrix-org/synapse/issues/8375)) - Improve description of `server_name` config option in `homserver.yaml`. ([\#8415](https://github.com/matrix-org/synapse/issues/8415)) Deprecations and Removals ------------------------- - Drop support for `prometheus_client` older than 0.4.0. ([\#8426](https://github.com/matrix-org/synapse/issues/8426)) Internal Changes ---------------- - Fix tests on distros which disable TLSv1.0. Contributed by @danc86. ([\#8208](https://github.com/matrix-org/synapse/issues/8208)) - Simplify the distributor code to avoid unnecessary work. ([\#8216](https://github.com/matrix-org/synapse/issues/8216)) - Remove the `populate_stats_process_rooms_2` background job and restore functionality to `populate_stats_process_rooms`. ([\#8243](https://github.com/matrix-org/synapse/issues/8243)) - Clean up type hints for `PaginationConfig`. ([\#8250](https://github.com/matrix-org/synapse/issues/8250), [\#8282](https://github.com/matrix-org/synapse/issues/8282)) - Track the latest event for every destination and room for catch-up after federation outage. ([\#8256](https://github.com/matrix-org/synapse/issues/8256)) - Fix non-user visible bug in implementation of `MultiWriterIdGenerator.get_current_token_for_writer`. ([\#8257](https://github.com/matrix-org/synapse/issues/8257)) - Switch to the JSON implementation from the standard library. ([\#8259](https://github.com/matrix-org/synapse/issues/8259)) - Add type hints to `synapse.util.async_helpers`. ([\#8260](https://github.com/matrix-org/synapse/issues/8260)) - Simplify tests that mock asynchronous functions. ([\#8261](https://github.com/matrix-org/synapse/issues/8261)) - Add type hints to `StreamToken` and `RoomStreamToken` classes. ([\#8279](https://github.com/matrix-org/synapse/issues/8279)) - Change `StreamToken.room_key` to be a `RoomStreamToken` instance. ([\#8281](https://github.com/matrix-org/synapse/issues/8281)) - Refactor notifier code to correctly use the max event stream position. ([\#8288](https://github.com/matrix-org/synapse/issues/8288)) - Use slotted classes where possible. ([\#8296](https://github.com/matrix-org/synapse/issues/8296)) - Support testing the local Synapse checkout against the [Complement homeserver test suite](https://github.com/matrix-org/complement/). ([\#8317](https://github.com/matrix-org/synapse/issues/8317)) - Update outdated usages of `metaclass` to python 3 syntax. ([\#8326](https://github.com/matrix-org/synapse/issues/8326)) - Move lint-related dependencies to package-extra field, update CONTRIBUTING.md to utilise this. ([\#8330](https://github.com/matrix-org/synapse/issues/8330), [\#8377](https://github.com/matrix-org/synapse/issues/8377)) - Use the `admin_patterns` helper in additional locations. ([\#8331](https://github.com/matrix-org/synapse/issues/8331)) - Fix test logging to allow braces in log output. ([\#8335](https://github.com/matrix-org/synapse/issues/8335)) - Remove `__future__` imports related to Python 2 compatibility. ([\#8337](https://github.com/matrix-org/synapse/issues/8337)) - Simplify `super()` calls to Python 3 syntax. ([\#8344](https://github.com/matrix-org/synapse/issues/8344)) - Fix bad merge from `release-v1.20.0` branch to `develop`. ([\#8354](https://github.com/matrix-org/synapse/issues/8354)) - Factor out a `_send_dummy_event_for_room` method. ([\#8370](https://github.com/matrix-org/synapse/issues/8370)) - Improve logging of state resolution. ([\#8371](https://github.com/matrix-org/synapse/issues/8371)) - Add type annotations to `SimpleHttpClient`. ([\#8372](https://github.com/matrix-org/synapse/issues/8372)) - Refactor ID generators to use `async with` syntax. ([\#8383](https://github.com/matrix-org/synapse/issues/8383)) - Add `EventStreamPosition` type. ([\#8388](https://github.com/matrix-org/synapse/issues/8388)) - Create a mechanism for marking tests "logcontext clean". ([\#8399](https://github.com/matrix-org/synapse/issues/8399)) - A pair of tiny cleanups in the federation request code. ([\#8401](https://github.com/matrix-org/synapse/issues/8401)) - Add checks on startup that PostgreSQL sequences are consistent with their associated tables. ([\#8402](https://github.com/matrix-org/synapse/issues/8402)) - Do not include appservice users when calculating the total MAU for a server. ([\#8404](https://github.com/matrix-org/synapse/issues/8404)) - Typing fixes for `synapse.handlers.federation`. ([\#8422](https://github.com/matrix-org/synapse/issues/8422)) - Various refactors to simplify stream token handling. ([\#8423](https://github.com/matrix-org/synapse/issues/8423)) - Make stream token serializing/deserializing async. ([\#8427](https://github.com/matrix-org/synapse/issues/8427)) Synapse 1.20.1 (2020-09-24) =========================== Bugfixes -------- - Fix a bug introduced in v1.20.0 which caused the `synapse_port_db` script to fail. ([\#8386](https://github.com/matrix-org/synapse/issues/8386)) - Fix a bug introduced in v1.20.0 which caused variables to be incorrectly escaped in Jinja2 templates. ([\#8394](https://github.com/matrix-org/synapse/issues/8394)) Synapse 1.20.0 (2020-09-22) =========================== No significant changes since v1.20.0rc5. Removal warning --------------- Historically, the [Synapse Admin API](https://github.com/matrix-org/synapse/tree/master/docs) has been accessible under the `/_matrix/client/api/v1/admin`, `/_matrix/client/unstable/admin`, `/_matrix/client/r0/admin` and `/_synapse/admin` prefixes. In a future release, we will be dropping support for accessing Synapse's Admin API using the `/_matrix/client/*` prefixes. From that point, the Admin API will only be accessible under `/_synapse/admin`. This makes it easier for homeserver admins to lock down external access to the Admin API endpoints. Synapse 1.20.0rc5 (2020-09-18) ============================== In addition to the below, Synapse 1.20.0rc5 also includes the bug fix that was included in 1.19.3. Features -------- - Add flags to the `/versions` endpoint for whether new rooms default to using E2EE. ([\#8343](https://github.com/matrix-org/synapse/issues/8343)) Bugfixes -------- - Fix rate limiting of federation `/send` requests. ([\#8342](https://github.com/matrix-org/synapse/issues/8342)) - Fix a longstanding bug where back pagination over federation could get stuck if it failed to handle a received event. ([\#8349](https://github.com/matrix-org/synapse/issues/8349)) Internal Changes ---------------- - Blacklist [MSC2753](https://github.com/matrix-org/matrix-doc/pull/2753) SyTests until it is implemented. ([\#8285](https://github.com/matrix-org/synapse/issues/8285)) Synapse 1.19.3 (2020-09-18) =========================== Bugfixes -------- - Partially mitigate bug where newly joined servers couldn't get past events in a room when there is a malformed event. ([\#8350](https://github.com/matrix-org/synapse/issues/8350)) Synapse 1.20.0rc4 (2020-09-16) ============================== Synapse 1.20.0rc4 is identical to 1.20.0rc3, with the addition of the security fix that was included in 1.19.2. Synapse 1.19.2 (2020-09-16) =========================== Due to the issue below server admins are encouraged to upgrade as soon as possible. Bugfixes -------- - Fix joining rooms over federation that include malformed events. ([\#8324](https://github.com/matrix-org/synapse/issues/8324)) Synapse 1.20.0rc3 (2020-09-11) ============================== Bugfixes -------- - Fix a bug introduced in v1.20.0rc1 where the wrong exception was raised when invalid JSON data is encountered. ([\#8291](https://github.com/matrix-org/synapse/issues/8291)) Synapse 1.20.0rc2 (2020-09-09) ============================== Bugfixes -------- - Fix a bug introduced in v1.20.0rc1 causing some features related to notifications to misbehave following the implementation of unread counts. ([\#8280](https://github.com/matrix-org/synapse/issues/8280)) Synapse 1.20.0rc1 (2020-09-08) ============================== Removal warning --------------- Some older clients used a [disallowed character](https://matrix.org/docs/spec/client_server/r0.6.1#post-matrix-client-r0-register-email-requesttoken) (`:`) in the `client_secret` parameter of various endpoints. The incorrect behaviour was allowed for backwards compatibility, but is now being removed from Synapse as most users have updated their client. Further context can be found at [\#6766](https://github.com/matrix-org/synapse/issues/6766). Features -------- - Add an endpoint to query your shared rooms with another user as an implementation of [MSC2666](https://github.com/matrix-org/matrix-doc/pull/2666). ([\#7785](https://github.com/matrix-org/synapse/issues/7785)) - Iteratively encode JSON to avoid blocking the reactor. ([\#8013](https://github.com/matrix-org/synapse/issues/8013), [\#8116](https://github.com/matrix-org/synapse/issues/8116)) - Add support for shadow-banning users (ignoring any message send requests). ([\#8034](https://github.com/matrix-org/synapse/issues/8034), [\#8092](https://github.com/matrix-org/synapse/issues/8092), [\#8095](https://github.com/matrix-org/synapse/issues/8095), [\#8142](https://github.com/matrix-org/synapse/issues/8142), [\#8152](https://github.com/matrix-org/synapse/issues/8152), [\#8157](https://github.com/matrix-org/synapse/issues/8157), [\#8158](https://github.com/matrix-org/synapse/issues/8158), [\#8176](https://github.com/matrix-org/synapse/issues/8176)) - Use the default template file when its equivalent is not found in a custom template directory. ([\#8037](https://github.com/matrix-org/synapse/issues/8037), [\#8107](https://github.com/matrix-org/synapse/issues/8107), [\#8252](https://github.com/matrix-org/synapse/issues/8252)) - Add unread messages count to sync responses, as specified in [MSC2654](https://github.com/matrix-org/matrix-doc/pull/2654). ([\#8059](https://github.com/matrix-org/synapse/issues/8059), [\#8254](https://github.com/matrix-org/synapse/issues/8254), [\#8270](https://github.com/matrix-org/synapse/issues/8270), [\#8274](https://github.com/matrix-org/synapse/issues/8274)) - Optimise `/federation/v1/user/devices/` API by only returning devices with encryption keys. ([\#8198](https://github.com/matrix-org/synapse/issues/8198)) Bugfixes -------- - Fix a memory leak by limiting the length of time that messages will be queued for a remote server that has been unreachable. ([\#7864](https://github.com/matrix-org/synapse/issues/7864)) - Fix `Re-starting finished log context PUT-nnnn` warning when event persistence failed. ([\#8081](https://github.com/matrix-org/synapse/issues/8081)) - Synapse now correctly enforces the valid characters in the `client_secret` parameter used in various endpoints. ([\#8101](https://github.com/matrix-org/synapse/issues/8101)) - Fix a bug introduced in v1.7.2 impacting message retention policies that would allow federated homeservers to dictate a retention period that's lower than the configured minimum allowed duration in the configuration file. ([\#8104](https://github.com/matrix-org/synapse/issues/8104)) - Fix a long-standing bug where invalid JSON would be accepted by Synapse. ([\#8106](https://github.com/matrix-org/synapse/issues/8106)) - Fix a bug introduced in Synapse v1.12.0 which could cause `/sync` requests to fail with a 404 if you had a very old outstanding room invite. ([\#8110](https://github.com/matrix-org/synapse/issues/8110)) - Return a proper error code when the rooms of an invalid group are requested. ([\#8129](https://github.com/matrix-org/synapse/issues/8129)) - Fix a bug which could cause a leaked postgres connection if synapse was set to daemonize. ([\#8131](https://github.com/matrix-org/synapse/issues/8131)) - Clarify the error code if a user tries to register with a numeric ID. This bug was introduced in v1.15.0. ([\#8135](https://github.com/matrix-org/synapse/issues/8135)) - Fix a bug where appservices with ratelimiting disabled would still be ratelimited when joining rooms. This bug was introduced in v1.19.0. ([\#8139](https://github.com/matrix-org/synapse/issues/8139)) - Fix logging in via OpenID Connect with a provider that uses integer user IDs. ([\#8190](https://github.com/matrix-org/synapse/issues/8190)) - Fix a longstanding bug where user directory updates could break when unexpected profile data was included in events. ([\#8223](https://github.com/matrix-org/synapse/issues/8223)) - Fix a longstanding bug where stats updates could break when unexpected profile data was included in events. ([\#8226](https://github.com/matrix-org/synapse/issues/8226)) - Fix slow start times for large servers by removing a table scan of the `users` table from startup code. ([\#8271](https://github.com/matrix-org/synapse/issues/8271)) Updates to the Docker image --------------------------- - Fix builds of the Docker image on non-x86 platforms. ([\#8144](https://github.com/matrix-org/synapse/issues/8144)) - Added curl for healthcheck support and readme updates for the change. Contributed by @maquis196. ([\#8147](https://github.com/matrix-org/synapse/issues/8147)) Improved Documentation ---------------------- - Link to matrix-synapse-rest-password-provider in the password provider documentation. ([\#8111](https://github.com/matrix-org/synapse/issues/8111)) - Updated documentation to note that Synapse does not follow `HTTP 308` redirects due to an upstream library not supporting them. Contributed by Ryan Cole. ([\#8120](https://github.com/matrix-org/synapse/issues/8120)) - Explain better what GDPR-erased means when deactivating a user. ([\#8189](https://github.com/matrix-org/synapse/issues/8189)) Internal Changes ---------------- - Add filter `name` to the `/users` admin API, which filters by user ID or displayname. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7377](https://github.com/matrix-org/synapse/issues/7377), [\#8163](https://github.com/matrix-org/synapse/issues/8163)) - Reduce run times of some unit tests by advancing the reactor a fewer number of times. ([\#7757](https://github.com/matrix-org/synapse/issues/7757)) - Don't fail `/submit_token` requests on incorrect session ID if `request_token_inhibit_3pid_errors` is turned on. ([\#7991](https://github.com/matrix-org/synapse/issues/7991)) - Convert various parts of the codebase to async/await. ([\#8071](https://github.com/matrix-org/synapse/issues/8071), [\#8072](https://github.com/matrix-org/synapse/issues/8072), [\#8074](https://github.com/matrix-org/synapse/issues/8074), [\#8075](https://github.com/matrix-org/synapse/issues/8075), [\#8076](https://github.com/matrix-org/synapse/issues/8076), [\#8087](https://github.com/matrix-org/synapse/issues/8087), [\#8100](https://github.com/matrix-org/synapse/issues/8100), [\#8119](https://github.com/matrix-org/synapse/issues/8119), [\#8121](https://github.com/matrix-org/synapse/issues/8121), [\#8133](https://github.com/matrix-org/synapse/issues/8133), [\#8156](https://github.com/matrix-org/synapse/issues/8156), [\#8162](https://github.com/matrix-org/synapse/issues/8162), [\#8166](https://github.com/matrix-org/synapse/issues/8166), [\#8168](https://github.com/matrix-org/synapse/issues/8168), [\#8173](https://github.com/matrix-org/synapse/issues/8173), [\#8191](https://github.com/matrix-org/synapse/issues/8191), [\#8192](https://github.com/matrix-org/synapse/issues/8192), [\#8193](https://github.com/matrix-org/synapse/issues/8193), [\#8194](https://github.com/matrix-org/synapse/issues/8194), [\#8195](https://github.com/matrix-org/synapse/issues/8195), [\#8197](https://github.com/matrix-org/synapse/issues/8197), [\#8199](https://github.com/matrix-org/synapse/issues/8199), [\#8200](https://github.com/matrix-org/synapse/issues/8200), [\#8201](https://github.com/matrix-org/synapse/issues/8201), [\#8202](https://github.com/matrix-org/synapse/issues/8202), [\#8207](https://github.com/matrix-org/synapse/issues/8207), [\#8213](https://github.com/matrix-org/synapse/issues/8213), [\#8214](https://github.com/matrix-org/synapse/issues/8214)) - Remove some unused database functions. ([\#8085](https://github.com/matrix-org/synapse/issues/8085)) - Add type hints to various parts of the codebase. ([\#8090](https://github.com/matrix-org/synapse/issues/8090), [\#8127](https://github.com/matrix-org/synapse/issues/8127), [\#8187](https://github.com/matrix-org/synapse/issues/8187), [\#8241](https://github.com/matrix-org/synapse/issues/8241), [\#8140](https://github.com/matrix-org/synapse/issues/8140), [\#8183](https://github.com/matrix-org/synapse/issues/8183), [\#8232](https://github.com/matrix-org/synapse/issues/8232), [\#8235](https://github.com/matrix-org/synapse/issues/8235), [\#8237](https://github.com/matrix-org/synapse/issues/8237), [\#8244](https://github.com/matrix-org/synapse/issues/8244)) - Return the previous stream token if a non-member event is a duplicate. ([\#8093](https://github.com/matrix-org/synapse/issues/8093), [\#8112](https://github.com/matrix-org/synapse/issues/8112)) - Separate `get_current_token` into two since there are two different use cases for it. ([\#8113](https://github.com/matrix-org/synapse/issues/8113)) - Remove `ChainedIdGenerator`. ([\#8123](https://github.com/matrix-org/synapse/issues/8123)) - Reduce the amount of whitespace in JSON stored and sent in responses. ([\#8124](https://github.com/matrix-org/synapse/issues/8124)) - Update the test federation client to handle streaming responses. ([\#8130](https://github.com/matrix-org/synapse/issues/8130)) - Micro-optimisations to `get_auth_chain_ids`. ([\#8132](https://github.com/matrix-org/synapse/issues/8132)) - Refactor `StreamIdGenerator` and `MultiWriterIdGenerator` to have the same interface. ([\#8161](https://github.com/matrix-org/synapse/issues/8161)) - Add functions to `MultiWriterIdGen` used by events stream. ([\#8164](https://github.com/matrix-org/synapse/issues/8164), [\#8179](https://github.com/matrix-org/synapse/issues/8179)) - Fix tests that were broken due to the merge of 1.19.1. ([\#8167](https://github.com/matrix-org/synapse/issues/8167)) - Make `SlavedIdTracker.advance` have the same interface as `MultiWriterIDGenerator`. ([\#8171](https://github.com/matrix-org/synapse/issues/8171)) - Remove unused `is_guest` parameter from, and add safeguard to, `MessageHandler.get_room_data`. ([\#8174](https://github.com/matrix-org/synapse/issues/8174), [\#8181](https://github.com/matrix-org/synapse/issues/8181)) - Standardize the mypy configuration. ([\#8175](https://github.com/matrix-org/synapse/issues/8175)) - Refactor some of `LoginRestServlet`'s helper methods, and move them to `AuthHandler` for easier reuse. ([\#8182](https://github.com/matrix-org/synapse/issues/8182)) - Fix `wait_for_stream_position` to allow multiple waiters on same stream ID. ([\#8196](https://github.com/matrix-org/synapse/issues/8196)) - Make `MultiWriterIDGenerator` work for streams that use negative values. ([\#8203](https://github.com/matrix-org/synapse/issues/8203)) - Refactor queries for device keys and cross-signatures. ([\#8204](https://github.com/matrix-org/synapse/issues/8204), [\#8205](https://github.com/matrix-org/synapse/issues/8205), [\#8222](https://github.com/matrix-org/synapse/issues/8222), [\#8224](https://github.com/matrix-org/synapse/issues/8224), [\#8225](https://github.com/matrix-org/synapse/issues/8225), [\#8231](https://github.com/matrix-org/synapse/issues/8231), [\#8233](https://github.com/matrix-org/synapse/issues/8233), [\#8234](https://github.com/matrix-org/synapse/issues/8234)) - Fix type hints for functions decorated with `@cached`. ([\#8240](https://github.com/matrix-org/synapse/issues/8240)) - Remove obsolete `order` field from federation send queues. ([\#8245](https://github.com/matrix-org/synapse/issues/8245)) - Stop sub-classing from object. ([\#8249](https://github.com/matrix-org/synapse/issues/8249)) - Add more logging to debug slow startup. ([\#8264](https://github.com/matrix-org/synapse/issues/8264)) - Do not attempt to upgrade database schema on worker processes. ([\#8266](https://github.com/matrix-org/synapse/issues/8266), [\#8276](https://github.com/matrix-org/synapse/issues/8276)) Synapse 1.19.1 (2020-08-27) =========================== No significant changes. Synapse 1.19.1rc1 (2020-08-25) ============================== Bugfixes -------- - Fix a bug introduced in v1.19.0 where appservices with ratelimiting disabled would still be ratelimited when joining rooms. ([\#8139](https://github.com/matrix-org/synapse/issues/8139)) - Fix a bug introduced in v1.19.0 that would cause e.g. profile updates to fail due to incorrect application of rate limits on join requests. ([\#8153](https://github.com/matrix-org/synapse/issues/8153)) Synapse 1.19.0 (2020-08-17) =========================== No significant changes since 1.19.0rc1. Removal warning --------------- As outlined in the [previous release](https://github.com/matrix-org/synapse/releases/tag/v1.18.0), we are no longer publishing Docker images with the `-py3` tag suffix. On top of that, we have also removed the `latest-py3` tag. Please see [the announcement in the upgrade notes for 1.18.0](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1180). Synapse 1.19.0rc1 (2020-08-13) ============================== Features -------- - Add option to allow server admins to join rooms which fail complexity checks. Contributed by @lugino-emeritus. ([\#7902](https://github.com/matrix-org/synapse/issues/7902)) - Add an option to purge room or not with delete room admin endpoint (`POST /_synapse/admin/v1/rooms//delete`). Contributed by @dklimpel. ([\#7964](https://github.com/matrix-org/synapse/issues/7964)) - Add rate limiting to users joining rooms. ([\#8008](https://github.com/matrix-org/synapse/issues/8008)) - Add a `/health` endpoint to every configured HTTP listener that can be used as a health check endpoint by load balancers. ([\#8048](https://github.com/matrix-org/synapse/issues/8048)) - Allow login to be blocked based on the values of SAML attributes. ([\#8052](https://github.com/matrix-org/synapse/issues/8052)) - Allow guest access to the `GET /_matrix/client/r0/rooms/{room_id}/members` endpoint, according to MSC2689. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7314](https://github.com/matrix-org/synapse/issues/7314)) Bugfixes -------- - Fix a bug introduced in Synapse v1.7.2 which caused inaccurate membership counts in the room directory. ([\#7977](https://github.com/matrix-org/synapse/issues/7977)) - Fix a long standing bug: 'Duplicate key value violates unique constraint "event_relations_id"' when message retention is configured. ([\#7978](https://github.com/matrix-org/synapse/issues/7978)) - Fix "no create event in auth events" when trying to reject invitation after inviter leaves. Bug introduced in Synapse v1.10.0. ([\#7980](https://github.com/matrix-org/synapse/issues/7980)) - Fix various comments and minor discrepencies in server notices code. ([\#7996](https://github.com/matrix-org/synapse/issues/7996)) - Fix a long standing bug where HTTP HEAD requests resulted in a 400 error. ([\#7999](https://github.com/matrix-org/synapse/issues/7999)) - Fix a long-standing bug which caused two copies of some log lines to be written when synctl was used along with a MemoryHandler logger. ([\#8011](https://github.com/matrix-org/synapse/issues/8011), [\#8012](https://github.com/matrix-org/synapse/issues/8012)) Updates to the Docker image --------------------------- - We no longer publish Docker images with the `-py3` tag suffix, as [announced in the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1180). ([\#8056](https://github.com/matrix-org/synapse/issues/8056)) Improved Documentation ---------------------- - Document how to set up a client .well-known file and fix several pieces of outdated documentation. ([\#7899](https://github.com/matrix-org/synapse/issues/7899)) - Improve workers docs. ([\#7990](https://github.com/matrix-org/synapse/issues/7990), [\#8000](https://github.com/matrix-org/synapse/issues/8000)) - Fix typo in `docs/workers.md`. ([\#7992](https://github.com/matrix-org/synapse/issues/7992)) - Add documentation for how to undo a room shutdown. ([\#7998](https://github.com/matrix-org/synapse/issues/7998), [\#8010](https://github.com/matrix-org/synapse/issues/8010)) Internal Changes ---------------- - Reduce the amount of whitespace in JSON stored and sent in responses. Contributed by David Vo. ([\#7372](https://github.com/matrix-org/synapse/issues/7372)) - Switch to the JSON implementation from the standard library and bump the minimum version of the canonicaljson library to 1.2.0. ([\#7936](https://github.com/matrix-org/synapse/issues/7936), [\#7979](https://github.com/matrix-org/synapse/issues/7979)) - Convert various parts of the codebase to async/await. ([\#7947](https://github.com/matrix-org/synapse/issues/7947), [\#7948](https://github.com/matrix-org/synapse/issues/7948), [\#7949](https://github.com/matrix-org/synapse/issues/7949), [\#7951](https://github.com/matrix-org/synapse/issues/7951), [\#7963](https://github.com/matrix-org/synapse/issues/7963), [\#7973](https://github.com/matrix-org/synapse/issues/7973), [\#7975](https://github.com/matrix-org/synapse/issues/7975), [\#7976](https://github.com/matrix-org/synapse/issues/7976), [\#7981](https://github.com/matrix-org/synapse/issues/7981), [\#7987](https://github.com/matrix-org/synapse/issues/7987), [\#7989](https://github.com/matrix-org/synapse/issues/7989), [\#8003](https://github.com/matrix-org/synapse/issues/8003), [\#8014](https://github.com/matrix-org/synapse/issues/8014), [\#8016](https://github.com/matrix-org/synapse/issues/8016), [\#8027](https://github.com/matrix-org/synapse/issues/8027), [\#8031](https://github.com/matrix-org/synapse/issues/8031), [\#8032](https://github.com/matrix-org/synapse/issues/8032), [\#8035](https://github.com/matrix-org/synapse/issues/8035), [\#8042](https://github.com/matrix-org/synapse/issues/8042), [\#8044](https://github.com/matrix-org/synapse/issues/8044), [\#8045](https://github.com/matrix-org/synapse/issues/8045), [\#8061](https://github.com/matrix-org/synapse/issues/8061), [\#8062](https://github.com/matrix-org/synapse/issues/8062), [\#8063](https://github.com/matrix-org/synapse/issues/8063), [\#8066](https://github.com/matrix-org/synapse/issues/8066), [\#8069](https://github.com/matrix-org/synapse/issues/8069), [\#8070](https://github.com/matrix-org/synapse/issues/8070)) - Move some database-related log lines from the default logger to the database/transaction loggers. ([\#7952](https://github.com/matrix-org/synapse/issues/7952)) - Add a script to detect source code files using non-unix line terminators. ([\#7965](https://github.com/matrix-org/synapse/issues/7965), [\#7970](https://github.com/matrix-org/synapse/issues/7970)) - Log the SAML session ID during creation. ([\#7971](https://github.com/matrix-org/synapse/issues/7971)) - Implement new experimental push rules for some users. ([\#7997](https://github.com/matrix-org/synapse/issues/7997)) - Remove redundant and unreliable signature check for v1 Identity Service lookup responses. ([\#8001](https://github.com/matrix-org/synapse/issues/8001)) - Improve the performance of the register endpoint. ([\#8009](https://github.com/matrix-org/synapse/issues/8009)) - Reduce less useful output in the newsfragment CI step. Add a link to the changelog section of the contributing guide on error. ([\#8024](https://github.com/matrix-org/synapse/issues/8024)) - Rename storage layer objects to be more sensible. ([\#8033](https://github.com/matrix-org/synapse/issues/8033)) - Change the default log config to reduce disk I/O and storage for new servers. ([\#8040](https://github.com/matrix-org/synapse/issues/8040)) - Add an assertion on `prev_events` in `create_new_client_event`. ([\#8041](https://github.com/matrix-org/synapse/issues/8041)) - Add a comment to `ServerContextFactory` about the use of `SSLv23_METHOD`. ([\#8043](https://github.com/matrix-org/synapse/issues/8043)) - Log `OPTIONS` requests at `DEBUG` rather than `INFO` level to reduce amount logged at `INFO`. ([\#8049](https://github.com/matrix-org/synapse/issues/8049)) - Reduce amount of outbound request logging at `INFO` level. ([\#8050](https://github.com/matrix-org/synapse/issues/8050)) - It is no longer necessary to explicitly define `filters` in the logging configuration. (Continuing to do so is redundant but harmless.) ([\#8051](https://github.com/matrix-org/synapse/issues/8051)) - Add and improve type hints. ([\#8058](https://github.com/matrix-org/synapse/issues/8058), [\#8064](https://github.com/matrix-org/synapse/issues/8064), [\#8060](https://github.com/matrix-org/synapse/issues/8060), [\#8067](https://github.com/matrix-org/synapse/issues/8067)) Synapse 1.18.0 (2020-07-30) =========================== Deprecation Warnings -------------------- ### Docker Tags with `-py3` Suffix From 10th August 2020, we will no longer publish Docker images with the `-py3` tag suffix. The images tagged with the `-py3` suffix have been identical to the non-suffixed tags since release 0.99.0, and the suffix is obsolete. On 10th August, we will remove the `latest-py3` tag. Existing per-release tags (such as `v1.18.0-py3`) will not be removed, but no new `-py3` tags will be added. Scripts relying on the `-py3` suffix will need to be updated. ### TCP-based Replication When setting up worker processes, we now recommend the use of a Redis server for replication. The old direct TCP connection method is deprecated and will be removed in a future release. See [docs/workers.md](https://github.com/matrix-org/synapse/blob/release-v1.18.0/docs/workers.md) for more details. Improved Documentation ---------------------- - Update worker docs with latest enhancements. ([\#7969](https://github.com/matrix-org/synapse/issues/7969)) Synapse 1.18.0rc2 (2020-07-28) ============================== Bugfixes -------- - Fix an `AssertionError` exception introduced in v1.18.0rc1. ([\#7876](https://github.com/matrix-org/synapse/issues/7876)) - Fix experimental support for moving typing off master when worker is restarted, which is broken in v1.18.0rc1. ([\#7967](https://github.com/matrix-org/synapse/issues/7967)) Internal Changes ---------------- - Further optimise queueing of inbound replication commands. ([\#7876](https://github.com/matrix-org/synapse/issues/7876)) Synapse 1.18.0rc1 (2020-07-27) ============================== Features -------- - Include room states on invite events that are sent to application services. Contributed by @Sorunome. ([\#6455](https://github.com/matrix-org/synapse/issues/6455)) - Add delete room admin endpoint (`POST /_synapse/admin/v1/rooms//delete`). Contributed by @dklimpel. ([\#7613](https://github.com/matrix-org/synapse/issues/7613), [\#7953](https://github.com/matrix-org/synapse/issues/7953)) - Add experimental support for running multiple federation sender processes. ([\#7798](https://github.com/matrix-org/synapse/issues/7798)) - Add the option to validate the `iss` and `aud` claims for JWT logins. ([\#7827](https://github.com/matrix-org/synapse/issues/7827)) - Add support for handling registration requests across multiple client reader workers. ([\#7830](https://github.com/matrix-org/synapse/issues/7830)) - Add an admin API to list the users in a room. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7842](https://github.com/matrix-org/synapse/issues/7842)) - Allow email subjects to be customised through Synapse's configuration. ([\#7846](https://github.com/matrix-org/synapse/issues/7846)) - Add the ability to re-activate an account from the admin API. ([\#7847](https://github.com/matrix-org/synapse/issues/7847), [\#7908](https://github.com/matrix-org/synapse/issues/7908)) - Add experimental support for running multiple pusher workers. ([\#7855](https://github.com/matrix-org/synapse/issues/7855)) - Add experimental support for moving typing off master. ([\#7869](https://github.com/matrix-org/synapse/issues/7869), [\#7959](https://github.com/matrix-org/synapse/issues/7959)) - Report CPU metrics to prometheus for time spent processing replication commands. ([\#7879](https://github.com/matrix-org/synapse/issues/7879)) - Support oEmbed for media previews. ([\#7920](https://github.com/matrix-org/synapse/issues/7920)) - Abort federation requests where the client disconnects before the ratelimiter expires. ([\#7930](https://github.com/matrix-org/synapse/issues/7930)) - Cache responses to `/_matrix/federation/v1/state_ids` to reduce duplicated work. ([\#7931](https://github.com/matrix-org/synapse/issues/7931)) Bugfixes -------- - Fix detection of out of sync remote device lists when receiving events from remote users. ([\#7815](https://github.com/matrix-org/synapse/issues/7815)) - Fix bug where Synapse fails to process an incoming event over federation if the server is missing too much of the event's auth chain. ([\#7817](https://github.com/matrix-org/synapse/issues/7817)) - Fix a bug causing Synapse to misinterpret the value `off` for `encryption_enabled_by_default_for_room_type` in its configuration file(s) if that value isn't surrounded by quotes. This bug was introduced in v1.16.0. ([\#7822](https://github.com/matrix-org/synapse/issues/7822)) - Fix bug where we did not always pass in `app_name` or `server_name` to email templates, including e.g. for registration emails. ([\#7829](https://github.com/matrix-org/synapse/issues/7829)) - Errors which occur while using the non-standard JWT login now return the proper error: `403 Forbidden` with an error code of `M_FORBIDDEN`. ([\#7844](https://github.com/matrix-org/synapse/issues/7844)) - Fix "AttributeError: 'str' object has no attribute 'get'" error message when applying per-room message retention policies. The bug was introduced in Synapse 1.7.0. ([\#7850](https://github.com/matrix-org/synapse/issues/7850)) - Fix a bug introduced in Synapse 1.10.0 which could cause a "no create event in auth events" error during room creation. ([\#7854](https://github.com/matrix-org/synapse/issues/7854)) - Fix a bug which allowed empty rooms to be rejoined over federation. ([\#7859](https://github.com/matrix-org/synapse/issues/7859)) - Fix 'Unable to find a suitable guest user ID' error when using multiple client_reader workers. ([\#7866](https://github.com/matrix-org/synapse/issues/7866)) - Fix a long standing bug where the tracing of async functions with opentracing was broken. ([\#7872](https://github.com/matrix-org/synapse/issues/7872), [\#7961](https://github.com/matrix-org/synapse/issues/7961)) - Fix "TypeError in `synapse.notifier`" exceptions. ([\#7880](https://github.com/matrix-org/synapse/issues/7880)) - Fix deprecation warning due to invalid escape sequences. ([\#7895](https://github.com/matrix-org/synapse/issues/7895)) Updates to the Docker image --------------------------- - Base docker image on Debian Buster rather than Alpine Linux. Contributed by @maquis196. ([\#7839](https://github.com/matrix-org/synapse/issues/7839)) Improved Documentation ---------------------- - Provide instructions on using `register_new_matrix_user` via docker. ([\#7885](https://github.com/matrix-org/synapse/issues/7885)) - Change the sample config postgres user section to use `synapse_user` instead of `synapse` to align with the documentation. ([\#7889](https://github.com/matrix-org/synapse/issues/7889)) - Reorder database paragraphs to promote postgres over sqlite. ([\#7933](https://github.com/matrix-org/synapse/issues/7933)) - Update the dates of ACME v1's end of life in [`ACME.md`](https://github.com/matrix-org/synapse/blob/master/docs/ACME.md). ([\#7934](https://github.com/matrix-org/synapse/issues/7934)) Deprecations and Removals ------------------------- - Remove unused `synapse_replication_tcp_resource_invalidate_cache` prometheus metric. ([\#7878](https://github.com/matrix-org/synapse/issues/7878)) - Remove Ubuntu Eoan from the list of `.deb` packages that we build as it is now end-of-life. Contributed by @gary-kim. ([\#7888](https://github.com/matrix-org/synapse/issues/7888)) Internal Changes ---------------- - Switch parts of the codebase from `simplejson` to the standard library `json`. ([\#7802](https://github.com/matrix-org/synapse/issues/7802)) - Add type hints to the http server code and remove an unused parameter. ([\#7813](https://github.com/matrix-org/synapse/issues/7813)) - Add type hints to synapse.api.errors module. ([\#7820](https://github.com/matrix-org/synapse/issues/7820)) - Ensure that calls to `json.dumps` are compatible with the standard library json. ([\#7836](https://github.com/matrix-org/synapse/issues/7836)) - Remove redundant `retry_on_integrity_error` wrapper for event persistence code. ([\#7848](https://github.com/matrix-org/synapse/issues/7848)) - Consistently use `db_to_json` to convert from database values to JSON objects. ([\#7849](https://github.com/matrix-org/synapse/issues/7849)) - Convert various parts of the codebase to async/await. ([\#7851](https://github.com/matrix-org/synapse/issues/7851), [\#7860](https://github.com/matrix-org/synapse/issues/7860), [\#7868](https://github.com/matrix-org/synapse/issues/7868), [\#7871](https://github.com/matrix-org/synapse/issues/7871), [\#7873](https://github.com/matrix-org/synapse/issues/7873), [\#7874](https://github.com/matrix-org/synapse/issues/7874), [\#7884](https://github.com/matrix-org/synapse/issues/7884), [\#7912](https://github.com/matrix-org/synapse/issues/7912), [\#7935](https://github.com/matrix-org/synapse/issues/7935), [\#7939](https://github.com/matrix-org/synapse/issues/7939), [\#7942](https://github.com/matrix-org/synapse/issues/7942), [\#7944](https://github.com/matrix-org/synapse/issues/7944)) - Add support for handling registration requests across multiple client reader workers. ([\#7853](https://github.com/matrix-org/synapse/issues/7853)) - Small performance improvement in typing processing. ([\#7856](https://github.com/matrix-org/synapse/issues/7856)) - The default value of `filter_timeline_limit` was changed from -1 (no limit) to 100. ([\#7858](https://github.com/matrix-org/synapse/issues/7858)) - Optimise queueing of inbound replication commands. ([\#7861](https://github.com/matrix-org/synapse/issues/7861)) - Add some type annotations to `HomeServer` and `BaseHandler`. ([\#7870](https://github.com/matrix-org/synapse/issues/7870)) - Clean up `PreserveLoggingContext`. ([\#7877](https://github.com/matrix-org/synapse/issues/7877)) - Change "unknown room version" logging from 'error' to 'warning'. ([\#7881](https://github.com/matrix-org/synapse/issues/7881)) - Stop using `device_max_stream_id` table and just use `device_inbox.stream_id`. ([\#7882](https://github.com/matrix-org/synapse/issues/7882)) - Return an empty body for OPTIONS requests. ([\#7886](https://github.com/matrix-org/synapse/issues/7886)) - Fix typo in generated config file. Contributed by @ThiefMaster. ([\#7890](https://github.com/matrix-org/synapse/issues/7890)) - Import ABC from `collections.abc` for Python 3.10 compatibility. ([\#7892](https://github.com/matrix-org/synapse/issues/7892)) - Remove unused functions `time_function`, `trace_function`, `get_previous_frames` and `get_previous_frame` from `synapse.logging.utils` module. ([\#7897](https://github.com/matrix-org/synapse/issues/7897)) - Lint the `contrib/` directory in CI and linting scripts, add `synctl` to the linting script for consistency with CI. ([\#7914](https://github.com/matrix-org/synapse/issues/7914)) - Use Element CSS and logo in notification emails when app name is Element. ([\#7919](https://github.com/matrix-org/synapse/issues/7919)) - Optimisation to /sync handling: skip serializing the response if the client has already disconnected. ([\#7927](https://github.com/matrix-org/synapse/issues/7927)) - When a client disconnects, don't log it as 'Error processing request'. ([\#7928](https://github.com/matrix-org/synapse/issues/7928)) - Add debugging to `/sync` response generation (disabled by default). ([\#7929](https://github.com/matrix-org/synapse/issues/7929)) - Update comments that refer to Deferreds for async functions. ([\#7945](https://github.com/matrix-org/synapse/issues/7945)) - Simplify error handling in federation handler. ([\#7950](https://github.com/matrix-org/synapse/issues/7950)) Synapse 1.17.0 (2020-07-13) =========================== Synapse 1.17.0 is identical to 1.17.0rc1, with the addition of the fix that was included in 1.16.1. Synapse 1.16.1 (2020-07-10) =========================== In some distributions of Synapse 1.16.0, we incorrectly included a database migration which added a new, unused table. This release removes the redundant table. Bugfixes -------- - Drop table `local_rejections_stream` which was incorrectly added in Synapse 1.16.0. ([\#7816](https://github.com/matrix-org/synapse/issues/7816), [b1beb3ff5](https://github.com/matrix-org/synapse/commit/b1beb3ff5)) Synapse 1.17.0rc1 (2020-07-09) ============================== Bugfixes -------- - Fix inconsistent handling of upper and lower case in email addresses when used as identifiers for login, etc. Contributed by @dklimpel. ([\#7021](https://github.com/matrix-org/synapse/issues/7021)) - Fix "Tried to close a non-active scope!" error messages when opentracing is enabled. ([\#7732](https://github.com/matrix-org/synapse/issues/7732)) - Fix incorrect error message when database CTYPE was set incorrectly. ([\#7760](https://github.com/matrix-org/synapse/issues/7760)) - Fix to not ignore `set_tweak` actions in Push Rules that have no `value`, as permitted by the specification. ([\#7766](https://github.com/matrix-org/synapse/issues/7766)) - Fix synctl to handle empty config files correctly. Contributed by @kotovalexarian. ([\#7779](https://github.com/matrix-org/synapse/issues/7779)) - Fixes a long standing bug in worker mode where worker information was saved in the devices table instead of the original IP address and user agent. ([\#7797](https://github.com/matrix-org/synapse/issues/7797)) - Fix 'stuck invites' which happen when we are unable to reject a room invite received over federation. ([\#7804](https://github.com/matrix-org/synapse/issues/7804), [\#7809](https://github.com/matrix-org/synapse/issues/7809), [\#7810](https://github.com/matrix-org/synapse/issues/7810)) Updates to the Docker image --------------------------- - Include libwebp in the Docker file to properly handle webp image uploads. ([\#7791](https://github.com/matrix-org/synapse/issues/7791)) Improved Documentation ---------------------- - Improve the documentation of the non-standard JSON web token login type. ([\#7776](https://github.com/matrix-org/synapse/issues/7776)) - Update doc links for caddy. Contributed by Nicolai Søborg. ([\#7789](https://github.com/matrix-org/synapse/issues/7789)) Internal Changes ---------------- - Refactor getting replication updates from database. ([\#7740](https://github.com/matrix-org/synapse/issues/7740)) - Send push notifications with a high or low priority depending upon whether they may generate user-observable effects. ([\#7765](https://github.com/matrix-org/synapse/issues/7765)) - Use symbolic names for replication stream names. ([\#7768](https://github.com/matrix-org/synapse/issues/7768)) - Add early returns to `_check_for_soft_fail`. ([\#7769](https://github.com/matrix-org/synapse/issues/7769)) - Fix up `synapse.handlers.federation` to pass mypy. ([\#7770](https://github.com/matrix-org/synapse/issues/7770)) - Convert the appserver handler to async/await. ([\#7775](https://github.com/matrix-org/synapse/issues/7775)) - Allow to use higher versions of prometheus_client <0.9.0 which are expected to introduce no breaking changes. Contributed by Oliver Kurz. ([\#7780](https://github.com/matrix-org/synapse/issues/7780)) - Update linting scripts and codebase to be compatible with `isort` v5. ([\#7786](https://github.com/matrix-org/synapse/issues/7786)) - Stop populating unused table `local_invites`. ([\#7793](https://github.com/matrix-org/synapse/issues/7793)) - Ensure that strings (not bytes) are passed into JSON serialization. ([\#7799](https://github.com/matrix-org/synapse/issues/7799)) - Switch from simplejson to the standard library json. ([\#7800](https://github.com/matrix-org/synapse/issues/7800)) - Add `signing_key` property to `HomeServer` to save code duplication. ([\#7805](https://github.com/matrix-org/synapse/issues/7805)) - Improve stacktraces from exceptions in background processes. ([\#7808](https://github.com/matrix-org/synapse/issues/7808)) - Fix various spelling errors in comments and log lines. ([\#7811](https://github.com/matrix-org/synapse/issues/7811)) Synapse 1.16.0 (2020-07-08) =========================== No significant changes since 1.16.0rc2. Note that this release deprecates the `m.login.jwt` login method, renaming it to `org.matrix.login.jwt`, as `m.login.jwt` is not part of the Matrix spec. Otherwise the behaviour is identical. Synapse will accept both names for now, but this may change in a future release. Synapse 1.16.0rc2 (2020-07-02) ============================== Synapse 1.16.0rc2 includes the security fixes released with Synapse 1.15.2. Please see [below](#synapse-1152-2020-07-02) for more details. Improved Documentation ---------------------- - Update postgres image in example `docker-compose.yaml` to tag `12-alpine`. ([\#7696](https://github.com/matrix-org/synapse/issues/7696)) Internal Changes ---------------- - Add some metrics for inbound and outbound federation latencies: `synapse_federation_server_pdu_process_time` and `synapse_event_processing_lag_by_event`. ([\#7771](https://github.com/matrix-org/synapse/issues/7771)) Synapse 1.15.2 (2020-07-02) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- * A malicious homeserver could force Synapse to reset the state in a room to a small subset of the correct state. This affects all Synapse deployments which federate with untrusted servers. ([96e9afe6](https://github.com/matrix-org/synapse/commit/96e9afe62500310977dc3cbc99a8d16d3d2fa15c)) * HTML pages served via Synapse were vulnerable to clickjacking attacks. This predominantly affects homeservers with single-sign-on enabled, but all server administrators are encouraged to upgrade. ([ea26e9a9](https://github.com/matrix-org/synapse/commit/ea26e9a98b0541fc886a1cb826a38352b7599dbe)) This was reported by [Quentin Gliech](https://sandhose.fr/). Synapse 1.16.0rc1 (2020-07-01) ============================== Features -------- - Add an option to enable encryption by default for new rooms. ([\#7639](https://github.com/matrix-org/synapse/issues/7639)) - Add support for running multiple media repository workers. See [docs/workers.md](https://github.com/matrix-org/synapse/blob/release-v1.16.0/docs/workers.md) for instructions. ([\#7706](https://github.com/matrix-org/synapse/issues/7706)) - Media can now be marked as safe from quarantined. ([\#7718](https://github.com/matrix-org/synapse/issues/7718)) - Expand the configuration options for auto-join rooms. ([\#7763](https://github.com/matrix-org/synapse/issues/7763)) Bugfixes -------- - Remove `user_id` from the response to `GET /_matrix/client/r0/presence/{userId}/status` to match the specification. ([\#7606](https://github.com/matrix-org/synapse/issues/7606)) - In worker mode, ensure that replicated data has not already been received. ([\#7648](https://github.com/matrix-org/synapse/issues/7648)) - Fix intermittent exception during startup, introduced in Synapse 1.14.0. ([\#7663](https://github.com/matrix-org/synapse/issues/7663)) - Include a user-agent for federation and well-known requests. ([\#7677](https://github.com/matrix-org/synapse/issues/7677)) - Accept the proper field (`phone`) for the `m.id.phone` identifier type. The legacy field of `number` is still accepted as a fallback. Bug introduced in v0.20.0. ([\#7687](https://github.com/matrix-org/synapse/issues/7687)) - Fix "Starting db txn 'get_completed_ui_auth_stages' from sentinel context" warning. The bug was introduced in 1.13.0. ([\#7688](https://github.com/matrix-org/synapse/issues/7688)) - Compare the URI and method during user interactive authentication (instead of the URI twice). Bug introduced in 1.13.0. ([\#7689](https://github.com/matrix-org/synapse/issues/7689)) - Fix a long standing bug where the response to the `GET room_keys/version` endpoint had the incorrect type for the `etag` field. ([\#7691](https://github.com/matrix-org/synapse/issues/7691)) - Fix logged error during device resync in opentracing. Broke in v1.14.0. ([\#7698](https://github.com/matrix-org/synapse/issues/7698)) - Do not break push rule evaluation when receiving an event with a non-string body. This is a long-standing bug. ([\#7701](https://github.com/matrix-org/synapse/issues/7701)) - Fixs a long standing bug which resulted in an exception: "TypeError: argument of type 'ObservableDeferred' is not iterable". ([\#7708](https://github.com/matrix-org/synapse/issues/7708)) - The `synapse_port_db` script no longer fails when the `ui_auth_sessions` table is non-empty. This bug has existed since v1.13.0. ([\#7711](https://github.com/matrix-org/synapse/issues/7711)) - Synapse will now fetch media from the proper specified URL (using the r0 prefix instead of the unspecified v1). ([\#7714](https://github.com/matrix-org/synapse/issues/7714)) - Fix the tables ignored by `synapse_port_db` to be in sync the current database schema. ([\#7717](https://github.com/matrix-org/synapse/issues/7717)) - Fix missing `Content-Length` on HTTP responses from the metrics handler. ([\#7730](https://github.com/matrix-org/synapse/issues/7730)) - Fix large state resolutions from stalling Synapse for seconds at a time. ([\#7735](https://github.com/matrix-org/synapse/issues/7735), [\#7746](https://github.com/matrix-org/synapse/issues/7746)) Improved Documentation ---------------------- - Spelling correction in sample_config.yaml. ([\#7652](https://github.com/matrix-org/synapse/issues/7652)) - Added instructions for how to use Keycloak via OpenID Connect to authenticate with Synapse. ([\#7659](https://github.com/matrix-org/synapse/issues/7659)) - Corrected misspelling of PostgreSQL. ([\#7724](https://github.com/matrix-org/synapse/issues/7724)) Deprecations and Removals ------------------------- - Deprecate `m.login.jwt` login method in favour of `org.matrix.login.jwt`, as `m.login.jwt` is not part of the Matrix spec. ([\#7675](https://github.com/matrix-org/synapse/issues/7675)) Internal Changes ---------------- - Refactor getting replication updates from database. ([\#7636](https://github.com/matrix-org/synapse/issues/7636)) - Clean-up the login fallback code. ([\#7657](https://github.com/matrix-org/synapse/issues/7657)) - Increase the default SAML session expiry time to 15 minutes. ([\#7664](https://github.com/matrix-org/synapse/issues/7664)) - Convert the device message and pagination handlers to async/await. ([\#7678](https://github.com/matrix-org/synapse/issues/7678)) - Convert typing handler to async/await. ([\#7679](https://github.com/matrix-org/synapse/issues/7679)) - Require `parameterized` package version to be at least 0.7.0. ([\#7680](https://github.com/matrix-org/synapse/issues/7680)) - Refactor handling of `listeners` configuration settings. ([\#7681](https://github.com/matrix-org/synapse/issues/7681)) - Replace uses of `six.iterkeys`/`iteritems`/`itervalues` with `keys()`/`items()`/`values()`. ([\#7692](https://github.com/matrix-org/synapse/issues/7692)) - Add support for using `rust-python-jaeger-reporter` library to reduce jaeger tracing overhead. ([\#7697](https://github.com/matrix-org/synapse/issues/7697)) - Make Tox actions work on Debian 10. ([\#7703](https://github.com/matrix-org/synapse/issues/7703)) - Replace all remaining uses of `six` with native Python 3 equivalents. Contributed by @ilmari. ([\#7704](https://github.com/matrix-org/synapse/issues/7704)) - Fix broken link in sample config. ([\#7712](https://github.com/matrix-org/synapse/issues/7712)) - Speed up state res v2 across large state differences. ([\#7725](https://github.com/matrix-org/synapse/issues/7725)) - Convert directory handler to async/await. ([\#7727](https://github.com/matrix-org/synapse/issues/7727)) - Move `flake8` to the end of `scripts-dev/lint.sh` as it takes the longest and could cause the script to exit early. ([\#7738](https://github.com/matrix-org/synapse/issues/7738)) - Explain the "test" conditional requirement for dependencies is not all of the modules necessary to run the unit tests. ([\#7751](https://github.com/matrix-org/synapse/issues/7751)) - Add some metrics for inbound and outbound federation latencies: `synapse_federation_server_pdu_process_time` and `synapse_event_processing_lag_by_event`. ([\#7755](https://github.com/matrix-org/synapse/issues/7755)) Synapse 1.15.1 (2020-06-16) =========================== Bugfixes -------- - Fix a bug introduced in v1.15.0 that would crash Synapse on start when using certain password auth providers. ([\#7684](https://github.com/matrix-org/synapse/issues/7684)) - Fix a bug introduced in v1.15.0 which meant that some 3PID management endpoints were not accessible on the correct URL. ([\#7685](https://github.com/matrix-org/synapse/issues/7685)) Synapse 1.15.0 (2020-06-11) =========================== No significant changes. Synapse 1.15.0rc1 (2020-06-09) ============================== Features -------- - Advertise support for Client-Server API r0.6.0 and remove related unstable feature flags. ([\#6585](https://github.com/matrix-org/synapse/issues/6585)) - Add an option to disable autojoining rooms for guest accounts. ([\#6637](https://github.com/matrix-org/synapse/issues/6637)) - For SAML authentication, add the ability to pass email addresses to be added to new users' accounts via SAML attributes. Contributed by Christopher Cooper. ([\#7385](https://github.com/matrix-org/synapse/issues/7385)) - Add admin APIs to allow server admins to manage users' devices. Contributed by @dklimpel. ([\#7481](https://github.com/matrix-org/synapse/issues/7481)) - Add support for generating thumbnails for WebP images. Previously, users would see an empty box instead of preview image. Contributed by @WGH-. ([\#7586](https://github.com/matrix-org/synapse/issues/7586)) - Support the standardized `m.login.sso` user-interactive authentication flow. ([\#7630](https://github.com/matrix-org/synapse/issues/7630)) Bugfixes -------- - Allow new users to be registered via the admin API even if the monthly active user limit has been reached. Contributed by @dklimpel. ([\#7263](https://github.com/matrix-org/synapse/issues/7263)) - Fix email notifications not being enabled for new users when created via the Admin API. ([\#7267](https://github.com/matrix-org/synapse/issues/7267)) - Fix str placeholders in an instance of `PrepareDatabaseException`. Introduced in Synapse v1.8.0. ([\#7575](https://github.com/matrix-org/synapse/issues/7575)) - Fix a bug in automatic user creation during first time login with `m.login.jwt`. Regression in v1.6.0. Contributed by @olof. ([\#7585](https://github.com/matrix-org/synapse/issues/7585)) - Fix a bug causing the cross-signing keys to be ignored when resyncing a device list. ([\#7594](https://github.com/matrix-org/synapse/issues/7594)) - Fix metrics failing when there is a large number of active background processes. ([\#7597](https://github.com/matrix-org/synapse/issues/7597)) - Fix bug where returning rooms for a group would fail if it included a room that the server was not in. ([\#7599](https://github.com/matrix-org/synapse/issues/7599)) - Fix duplicate key violation when persisting read markers. ([\#7607](https://github.com/matrix-org/synapse/issues/7607)) - Prevent an entire iteration of the device list resync loop from failing if one server responds with a malformed result. ([\#7609](https://github.com/matrix-org/synapse/issues/7609)) - Fix exceptions when fetching events from a remote host fails. ([\#7622](https://github.com/matrix-org/synapse/issues/7622)) - Make `synctl restart` start synapse if it wasn't running. ([\#7624](https://github.com/matrix-org/synapse/issues/7624)) - Pass device information through to the login endpoint when using the login fallback. ([\#7629](https://github.com/matrix-org/synapse/issues/7629)) - Advertise the `m.login.token` login flow when OpenID Connect is enabled. ([\#7631](https://github.com/matrix-org/synapse/issues/7631)) - Fix bug in account data replication stream. ([\#7656](https://github.com/matrix-org/synapse/issues/7656)) Improved Documentation ---------------------- - Update the OpenBSD installation instructions. ([\#7587](https://github.com/matrix-org/synapse/issues/7587)) - Advertise Python 3.8 support in `setup.py`. ([\#7602](https://github.com/matrix-org/synapse/issues/7602)) - Add a link to `#synapse:matrix.org` in the troubleshooting section of the README. ([\#7603](https://github.com/matrix-org/synapse/issues/7603)) - Clarifications to the admin api documentation. ([\#7647](https://github.com/matrix-org/synapse/issues/7647)) Internal Changes ---------------- - Convert the identity handler to async/await. ([\#7561](https://github.com/matrix-org/synapse/issues/7561)) - Improve query performance for fetching state from a PostgreSQL database. Contributed by @ilmari. ([\#7567](https://github.com/matrix-org/synapse/issues/7567)) - Speed up processing of federation stream RDATA rows. ([\#7584](https://github.com/matrix-org/synapse/issues/7584)) - Add comment to systemd example to show postgresql dependency. ([\#7591](https://github.com/matrix-org/synapse/issues/7591)) - Refactor `Ratelimiter` to limit the amount of expensive config value accesses. ([\#7595](https://github.com/matrix-org/synapse/issues/7595)) - Convert groups handlers to async/await. ([\#7600](https://github.com/matrix-org/synapse/issues/7600)) - Clean up exception handling in `SAML2ResponseResource`. ([\#7614](https://github.com/matrix-org/synapse/issues/7614)) - Check that all asynchronous tasks succeed and general cleanup of `MonthlyActiveUsersTestCase` and `TestMauLimit`. ([\#7619](https://github.com/matrix-org/synapse/issues/7619)) - Convert `get_user_id_by_threepid` to async/await. ([\#7620](https://github.com/matrix-org/synapse/issues/7620)) - Switch to upstream `dh-virtualenv` rather than our fork for Debian package builds. ([\#7621](https://github.com/matrix-org/synapse/issues/7621)) - Update CI scripts to check the number in the newsfile fragment. ([\#7623](https://github.com/matrix-org/synapse/issues/7623)) - Check if the localpart of a Matrix ID is reserved for guest users earlier in the registration flow, as well as when responding to requests to `/register/available`. ([\#7625](https://github.com/matrix-org/synapse/issues/7625)) - Minor cleanups to OpenID Connect integration. ([\#7628](https://github.com/matrix-org/synapse/issues/7628)) - Attempt to fix flaky test: `PhoneHomeStatsTestCase.test_performance_100`. ([\#7634](https://github.com/matrix-org/synapse/issues/7634)) - Fix typos of `m.olm.curve25519-aes-sha2` and `m.megolm.v1.aes-sha2` in comments, test files. ([\#7637](https://github.com/matrix-org/synapse/issues/7637)) - Convert user directory, state deltas, and stats handlers to async/await. ([\#7640](https://github.com/matrix-org/synapse/issues/7640)) - Remove some unused constants. ([\#7644](https://github.com/matrix-org/synapse/issues/7644)) - Fix type information on `assert_*_is_admin` methods. ([\#7645](https://github.com/matrix-org/synapse/issues/7645)) - Convert registration handler to async/await. ([\#7649](https://github.com/matrix-org/synapse/issues/7649)) Synapse 1.14.0 (2020-05-28) =========================== No significant changes. Synapse 1.14.0rc2 (2020-05-27) ============================== Bugfixes -------- - Fix cache config to not apply cache factor to event cache. Regression in v1.14.0rc1. ([\#7578](https://github.com/matrix-org/synapse/issues/7578)) - Fix bug where `ReplicationStreamer` was not always started when replication was enabled. Bug introduced in v1.14.0rc1. ([\#7579](https://github.com/matrix-org/synapse/issues/7579)) - Fix specifying individual cache factors for caches with special characters in their name. Regression in v1.14.0rc1. ([\#7580](https://github.com/matrix-org/synapse/issues/7580)) Improved Documentation ---------------------- - Fix the OIDC `client_auth_method` value in the sample config. ([\#7581](https://github.com/matrix-org/synapse/issues/7581)) Synapse 1.14.0rc1 (2020-05-26) ============================== Features -------- - Synapse's cache factor can now be configured in `homeserver.yaml` by the `caches.global_factor` setting. Additionally, `caches.per_cache_factors` controls the cache factors for individual caches. ([\#6391](https://github.com/matrix-org/synapse/issues/6391)) - Add OpenID Connect login/registration support. Contributed by Quentin Gliech, on behalf of [les Connecteurs](https://connecteu.rs). ([\#7256](https://github.com/matrix-org/synapse/issues/7256), [\#7457](https://github.com/matrix-org/synapse/issues/7457)) - Add room details admin endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7317](https://github.com/matrix-org/synapse/issues/7317)) - Allow for using more than one spam checker module at once. ([\#7435](https://github.com/matrix-org/synapse/issues/7435)) - Add additional authentication checks for `m.room.power_levels` event per [MSC2209](https://github.com/matrix-org/matrix-doc/pull/2209). ([\#7502](https://github.com/matrix-org/synapse/issues/7502)) - Implement room version 6 per [MSC2240](https://github.com/matrix-org/matrix-doc/pull/2240). ([\#7506](https://github.com/matrix-org/synapse/issues/7506)) - Add highly experimental option to move event persistence off master. ([\#7281](https://github.com/matrix-org/synapse/issues/7281), [\#7374](https://github.com/matrix-org/synapse/issues/7374), [\#7436](https://github.com/matrix-org/synapse/issues/7436), [\#7440](https://github.com/matrix-org/synapse/issues/7440), [\#7475](https://github.com/matrix-org/synapse/issues/7475), [\#7490](https://github.com/matrix-org/synapse/issues/7490), [\#7491](https://github.com/matrix-org/synapse/issues/7491), [\#7492](https://github.com/matrix-org/synapse/issues/7492), [\#7493](https://github.com/matrix-org/synapse/issues/7493), [\#7495](https://github.com/matrix-org/synapse/issues/7495), [\#7515](https://github.com/matrix-org/synapse/issues/7515), [\#7516](https://github.com/matrix-org/synapse/issues/7516), [\#7517](https://github.com/matrix-org/synapse/issues/7517), [\#7542](https://github.com/matrix-org/synapse/issues/7542)) Bugfixes -------- - Fix a bug where event updates might not be sent over replication to worker processes after the stream falls behind. ([\#7384](https://github.com/matrix-org/synapse/issues/7384)) - Allow expired user accounts to log out their device sessions. ([\#7443](https://github.com/matrix-org/synapse/issues/7443)) - Fix a bug that would cause Synapse not to resync out-of-sync device lists. ([\#7453](https://github.com/matrix-org/synapse/issues/7453)) - Prevent rooms with 0 members or with invalid version strings from breaking group queries. ([\#7465](https://github.com/matrix-org/synapse/issues/7465)) - Workaround for an upstream Twisted bug that caused Synapse to become unresponsive after startup. ([\#7473](https://github.com/matrix-org/synapse/issues/7473)) - Fix Redis reconnection logic that can result in missed updates over replication if master reconnects to Redis without restarting. ([\#7482](https://github.com/matrix-org/synapse/issues/7482)) - When sending `m.room.member` events, omit `displayname` and `avatar_url` if they aren't set instead of setting them to `null`. Contributed by Aaron Raimist. ([\#7497](https://github.com/matrix-org/synapse/issues/7497)) - Fix incorrect `method` label on `synapse_http_matrixfederationclient_{requests,responses}` prometheus metrics. ([\#7503](https://github.com/matrix-org/synapse/issues/7503)) - Ignore incoming presence events from other homeservers if presence is disabled locally. ([\#7508](https://github.com/matrix-org/synapse/issues/7508)) - Fix a long-standing bug that broke the update remote profile background process. ([\#7511](https://github.com/matrix-org/synapse/issues/7511)) - Hash passwords as early as possible during password reset. ([\#7538](https://github.com/matrix-org/synapse/issues/7538)) - Fix bug where a local user leaving a room could fail under rare circumstances. ([\#7548](https://github.com/matrix-org/synapse/issues/7548)) - Fix "Missing RelayState parameter" error when using user interactive authentication with SAML for some SAML providers. ([\#7552](https://github.com/matrix-org/synapse/issues/7552)) - Fix exception `'GenericWorkerReplicationHandler' object has no attribute 'send_federation_ack'`, introduced in v1.13.0. ([\#7564](https://github.com/matrix-org/synapse/issues/7564)) - `synctl` now warns if it was unable to stop Synapse and will not attempt to start Synapse if nothing was stopped. Contributed by Romain Bouyé. ([\#6598](https://github.com/matrix-org/synapse/issues/6598)) Updates to the Docker image --------------------------- - Update docker runtime image to Alpine v3.11. Contributed by @Starbix. ([\#7398](https://github.com/matrix-org/synapse/issues/7398)) Improved Documentation ---------------------- - Update information about mapping providers for SAML and OpenID. ([\#7458](https://github.com/matrix-org/synapse/issues/7458)) - Add additional reverse proxy example for Caddy v2. Contributed by Jeff Peeler. ([\#7463](https://github.com/matrix-org/synapse/issues/7463)) - Fix copy-paste error in `ServerNoticesConfig` docstring. Contributed by @ptman. ([\#7477](https://github.com/matrix-org/synapse/issues/7477)) - Improve the formatting of `reverse_proxy.md`. ([\#7514](https://github.com/matrix-org/synapse/issues/7514)) - Change the systemd worker service to check that the worker config file exists instead of silently failing. Contributed by David Vo. ([\#7528](https://github.com/matrix-org/synapse/issues/7528)) - Minor clarifications to the TURN docs. ([\#7533](https://github.com/matrix-org/synapse/issues/7533)) Internal Changes ---------------- - Add typing annotations in `synapse.federation`. ([\#7382](https://github.com/matrix-org/synapse/issues/7382)) - Convert the room handler to async/await. ([\#7396](https://github.com/matrix-org/synapse/issues/7396)) - Improve performance of `get_e2e_cross_signing_key`. ([\#7428](https://github.com/matrix-org/synapse/issues/7428)) - Improve performance of `mark_as_sent_devices_by_remote`. ([\#7429](https://github.com/matrix-org/synapse/issues/7429), [\#7562](https://github.com/matrix-org/synapse/issues/7562)) - Add type hints to the SAML handler. ([\#7445](https://github.com/matrix-org/synapse/issues/7445)) - Remove storage method `get_hosts_in_room` that is no longer called anywhere. ([\#7448](https://github.com/matrix-org/synapse/issues/7448)) - Fix some typos in the `notice_expiry` templates. ([\#7449](https://github.com/matrix-org/synapse/issues/7449)) - Convert the federation handler to async/await. ([\#7459](https://github.com/matrix-org/synapse/issues/7459)) - Convert the search handler to async/await. ([\#7460](https://github.com/matrix-org/synapse/issues/7460)) - Add type hints to `synapse.event_auth`. ([\#7505](https://github.com/matrix-org/synapse/issues/7505)) - Convert the room member handler to async/await. ([\#7507](https://github.com/matrix-org/synapse/issues/7507)) - Add type hints to room member handler. ([\#7513](https://github.com/matrix-org/synapse/issues/7513)) - Fix typing annotations in `tests.replication`. ([\#7518](https://github.com/matrix-org/synapse/issues/7518)) - Remove some redundant Python 2 support code. ([\#7519](https://github.com/matrix-org/synapse/issues/7519)) - All endpoints now respond with a 200 OK for `OPTIONS` requests. ([\#7534](https://github.com/matrix-org/synapse/issues/7534), [\#7560](https://github.com/matrix-org/synapse/issues/7560)) - Synapse now exports [detailed allocator statistics](https://doc.pypy.org/en/latest/gc_info.html#gc-get-stats) and basic GC timings as Prometheus metrics (`pypy_gc_time_seconds_total` and `pypy_memory_bytes`) when run under PyPy. Contributed by Ivan Shapovalov. ([\#7536](https://github.com/matrix-org/synapse/issues/7536)) - Remove Ubuntu Cosmic and Disco from the list of distributions which we provide `.deb`s for, due to end-of-life. ([\#7539](https://github.com/matrix-org/synapse/issues/7539)) - Make worker processes return a stubbed-out response to `GET /presence` requests. ([\#7545](https://github.com/matrix-org/synapse/issues/7545)) - Optimise some references to `hs.config`. ([\#7546](https://github.com/matrix-org/synapse/issues/7546)) - On upgrade room only send canonical alias once. ([\#7547](https://github.com/matrix-org/synapse/issues/7547)) - Fix some indentation inconsistencies in the sample config. ([\#7550](https://github.com/matrix-org/synapse/issues/7550)) - Include `synapse.http.site` in type checking. ([\#7553](https://github.com/matrix-org/synapse/issues/7553)) - Fix some test code to not mangle stacktraces, to make it easier to debug errors. ([\#7554](https://github.com/matrix-org/synapse/issues/7554)) - Refresh apt cache when building `dh_virtualenv` docker image. ([\#7555](https://github.com/matrix-org/synapse/issues/7555)) - Stop logging some expected HTTP request errors as exceptions. ([\#7556](https://github.com/matrix-org/synapse/issues/7556), [\#7563](https://github.com/matrix-org/synapse/issues/7563)) - Convert sending mail to async/await. ([\#7557](https://github.com/matrix-org/synapse/issues/7557)) - Simplify `reap_monthly_active_users`. ([\#7558](https://github.com/matrix-org/synapse/issues/7558)) Synapse 1.13.0 (2020-05-19) =========================== This release brings some potential changes necessary for certain configurations of Synapse: * If your Synapse is configured to use SSO and have a custom `sso_redirect_confirm_template_dir` configuration option set, you will need to duplicate the new `sso_auth_confirm.html`, `sso_auth_success.html` and `sso_account_deactivated.html` templates into that directory. * Synapse plugins using the `complete_sso_login` method of `synapse.module_api.ModuleApi` should instead switch to the async/await version, `complete_sso_login_async`, which includes additional checks. The former version is now deprecated. * A bug was introduced in Synapse 1.4.0 which could cause the room directory to be incomplete or empty if Synapse was upgraded directly from v1.2.1 or earlier, to versions between v1.4.0 and v1.12.x. Please review the [upgrade notes](docs/upgrade.md) for more details on these changes and for general upgrade guidance. Notice of change to the default `git` branch for Synapse -------------------------------------------------------- With the release of Synapse 1.13.0, the default `git` branch for Synapse has changed to `develop`, which is the development tip. This is more consistent with common practice and modern `git` usage. The `master` branch, which tracks the latest release, is still available. It is recommended that developers and distributors who have scripts which run builds using the default branch of Synapse should therefore consider pinning their scripts to `master`. Internal Changes ---------------- - Update the version of dh-virtualenv we use to build debs, and add focal to the list of target distributions. ([\#7526](https://github.com/matrix-org/synapse/issues/7526)) Synapse 1.13.0rc3 (2020-05-18) ============================== Bugfixes -------- - Hash passwords as early as possible during registration. ([\#7523](https://github.com/matrix-org/synapse/issues/7523)) Synapse 1.13.0rc2 (2020-05-14) ============================== Bugfixes -------- - Fix a long-standing bug which could cause messages not to be sent over federation, when state events with state keys matching user IDs (such as custom user statuses) were received. ([\#7376](https://github.com/matrix-org/synapse/issues/7376)) - Restore compatibility with non-compliant clients during the user interactive authentication process, fixing a problem introduced in v1.13.0rc1. ([\#7483](https://github.com/matrix-org/synapse/issues/7483)) Internal Changes ---------------- - Fix linting errors in new version of Flake8. ([\#7470](https://github.com/matrix-org/synapse/issues/7470)) Synapse 1.13.0rc1 (2020-05-11) ============================== Features -------- - Extend the `web_client_location` option to accept an absolute URL to use as a redirect. Adds a warning when running the web client on the same hostname as homeserver. Contributed by Martin Milata. ([\#7006](https://github.com/matrix-org/synapse/issues/7006)) - Set `Referrer-Policy` header to `no-referrer` on media downloads. ([\#7009](https://github.com/matrix-org/synapse/issues/7009)) - Add support for running replication over Redis when using workers. ([\#7040](https://github.com/matrix-org/synapse/issues/7040), [\#7325](https://github.com/matrix-org/synapse/issues/7325), [\#7352](https://github.com/matrix-org/synapse/issues/7352), [\#7401](https://github.com/matrix-org/synapse/issues/7401), [\#7427](https://github.com/matrix-org/synapse/issues/7427), [\#7439](https://github.com/matrix-org/synapse/issues/7439), [\#7446](https://github.com/matrix-org/synapse/issues/7446), [\#7450](https://github.com/matrix-org/synapse/issues/7450), [\#7454](https://github.com/matrix-org/synapse/issues/7454)) - Admin API `POST /_synapse/admin/v1/join/` to join users to a room like `auto_join_rooms` for creation of users. ([\#7051](https://github.com/matrix-org/synapse/issues/7051)) - Add options to prevent users from changing their profile or associated 3PIDs. ([\#7096](https://github.com/matrix-org/synapse/issues/7096)) - Support SSO in the user interactive authentication workflow. ([\#7102](https://github.com/matrix-org/synapse/issues/7102), [\#7186](https://github.com/matrix-org/synapse/issues/7186), [\#7279](https://github.com/matrix-org/synapse/issues/7279), [\#7343](https://github.com/matrix-org/synapse/issues/7343)) - Allow server admins to define and enforce a password policy ([MSC2000](https://github.com/matrix-org/matrix-doc/issues/2000)). ([\#7118](https://github.com/matrix-org/synapse/issues/7118)) - Improve the support for SSO authentication on the login fallback page. ([\#7152](https://github.com/matrix-org/synapse/issues/7152), [\#7235](https://github.com/matrix-org/synapse/issues/7235)) - Always whitelist the login fallback in the SSO configuration if `public_baseurl` is set. ([\#7153](https://github.com/matrix-org/synapse/issues/7153)) - Admin users are no longer required to be in a room to create an alias for it. ([\#7191](https://github.com/matrix-org/synapse/issues/7191)) - Require admin privileges to enable room encryption by default. This does not affect existing rooms. ([\#7230](https://github.com/matrix-org/synapse/issues/7230)) - Add a config option for specifying the value of the Accept-Language HTTP header when generating URL previews. ([\#7265](https://github.com/matrix-org/synapse/issues/7265)) - Allow `/requestToken` endpoints to hide the existence (or lack thereof) of 3PID associations on the homeserver. ([\#7315](https://github.com/matrix-org/synapse/issues/7315)) - Add a configuration setting to tweak the threshold for dummy events. ([\#7422](https://github.com/matrix-org/synapse/issues/7422)) Bugfixes -------- - Don't attempt to use an invalid sqlite config if no database configuration is provided. Contributed by @nekatak. ([\#6573](https://github.com/matrix-org/synapse/issues/6573)) - Fix single-sign on with CAS systems: pass the same service URL when requesting the CAS ticket and when calling the `proxyValidate` URL. Contributed by @Naugrimm. ([\#6634](https://github.com/matrix-org/synapse/issues/6634)) - Fix missing field `default` when fetching user-defined push rules. ([\#6639](https://github.com/matrix-org/synapse/issues/6639)) - Improve error responses when accessing remote public room lists. ([\#6899](https://github.com/matrix-org/synapse/issues/6899), [\#7368](https://github.com/matrix-org/synapse/issues/7368)) - Transfer alias mappings on room upgrade. ([\#6946](https://github.com/matrix-org/synapse/issues/6946)) - Ensure that a user interactive authentication session is tied to a single request. ([\#7068](https://github.com/matrix-org/synapse/issues/7068), [\#7455](https://github.com/matrix-org/synapse/issues/7455)) - Fix a bug in the federation API which could cause occasional "Failed to get PDU" errors. ([\#7089](https://github.com/matrix-org/synapse/issues/7089)) - Return the proper error (`M_BAD_ALIAS`) when a non-existant canonical alias is provided. ([\#7109](https://github.com/matrix-org/synapse/issues/7109)) - Fix a bug which meant that groups updates were not correctly replicated between workers. ([\#7117](https://github.com/matrix-org/synapse/issues/7117)) - Fix starting workers when federation sending not split out. ([\#7133](https://github.com/matrix-org/synapse/issues/7133)) - Ensure `is_verified` is a boolean in responses to `GET /_matrix/client/r0/room_keys/keys`. Also warn the user if they forgot the `version` query param. ([\#7150](https://github.com/matrix-org/synapse/issues/7150)) - Fix error page being shown when a custom SAML handler attempted to redirect when processing an auth response. ([\#7151](https://github.com/matrix-org/synapse/issues/7151)) - Avoid importing `sqlite3` when using the postgres backend. Contributed by David Vo. ([\#7155](https://github.com/matrix-org/synapse/issues/7155)) - Fix excessive CPU usage by `prune_old_outbound_device_pokes` job. ([\#7159](https://github.com/matrix-org/synapse/issues/7159)) - Fix a bug which could cause outbound federation traffic to stop working if a client uploaded an incorrect e2e device signature. ([\#7177](https://github.com/matrix-org/synapse/issues/7177)) - Fix a bug which could cause incorrect 'cyclic dependency' error. ([\#7178](https://github.com/matrix-org/synapse/issues/7178)) - Fix a bug that could cause a user to be invited to a server notices (aka System Alerts) room without any notice being sent. ([\#7199](https://github.com/matrix-org/synapse/issues/7199)) - Fix some worker-mode replication handling not being correctly recorded in CPU usage stats. ([\#7203](https://github.com/matrix-org/synapse/issues/7203)) - Do not allow a deactivated user to login via SSO. ([\#7240](https://github.com/matrix-org/synapse/issues/7240), [\#7259](https://github.com/matrix-org/synapse/issues/7259)) - Fix --help command-line argument. ([\#7249](https://github.com/matrix-org/synapse/issues/7249)) - Fix room publish permissions not being checked on room creation. ([\#7260](https://github.com/matrix-org/synapse/issues/7260)) - Reject unknown session IDs during user interactive authentication instead of silently creating a new session. ([\#7268](https://github.com/matrix-org/synapse/issues/7268)) - Fix a SQL query introduced in Synapse 1.12.0 which could cause large amounts of logging to the postgres slow-query log. ([\#7274](https://github.com/matrix-org/synapse/issues/7274)) - Persist user interactive authentication sessions across workers and Synapse restarts. ([\#7302](https://github.com/matrix-org/synapse/issues/7302)) - Fixed backwards compatibility logic of the first value of `trusted_third_party_id_servers` being used for `account_threepid_delegates.email`, which occurs when the former, deprecated option is set and the latter is not. ([\#7316](https://github.com/matrix-org/synapse/issues/7316)) - Fix a bug where event updates might not be sent over replication to worker processes after the stream falls behind. ([\#7337](https://github.com/matrix-org/synapse/issues/7337), [\#7358](https://github.com/matrix-org/synapse/issues/7358)) - Fix bad error handling that would cause Synapse to crash if it's provided with a YAML configuration file that's either empty or doesn't parse into a key-value map. ([\#7341](https://github.com/matrix-org/synapse/issues/7341)) - Fix incorrect metrics reporting for `renew_attestations` background task. ([\#7344](https://github.com/matrix-org/synapse/issues/7344)) - Prevent non-federating rooms from appearing in responses to federated `POST /publicRoom` requests when a filter was included. ([\#7367](https://github.com/matrix-org/synapse/issues/7367)) - Fix a bug which would cause the room durectory to be incorrectly populated if Synapse was upgraded directly from v1.2.1 or earlier to v1.4.0 or later. Note that this fix does not apply retrospectively; see the [upgrade notes](docs/upgrade.md#upgrading-to-v1130) for more information. ([\#7387](https://github.com/matrix-org/synapse/issues/7387)) - Fix bug in `EventContext.deserialize`. ([\#7393](https://github.com/matrix-org/synapse/issues/7393)) Improved Documentation ---------------------- - Update Debian installation instructions to recommend installing the `virtualenv` package instead of `python3-virtualenv`. ([\#6892](https://github.com/matrix-org/synapse/issues/6892)) - Improve the documentation for database configuration. ([\#6988](https://github.com/matrix-org/synapse/issues/6988)) - Improve the documentation of application service configuration files. ([\#7091](https://github.com/matrix-org/synapse/issues/7091)) - Update pre-built package name for FreeBSD. ([\#7107](https://github.com/matrix-org/synapse/issues/7107)) - Update postgres docs with login troubleshooting information. ([\#7119](https://github.com/matrix-org/synapse/issues/7119)) - Clean up INSTALL.md a bit. ([\#7141](https://github.com/matrix-org/synapse/issues/7141)) - Add documentation for running a local CAS server for testing. ([\#7147](https://github.com/matrix-org/synapse/issues/7147)) - Improve README.md by being explicit about public IP recommendation for TURN relaying. ([\#7167](https://github.com/matrix-org/synapse/issues/7167)) - Fix a small typo in the `metrics_flags` config option. ([\#7171](https://github.com/matrix-org/synapse/issues/7171)) - Update the contributed documentation on managing synapse workers with systemd, and bring it into the core distribution. ([\#7234](https://github.com/matrix-org/synapse/issues/7234)) - Add documentation to the `password_providers` config option. Add known password provider implementations to docs. ([\#7238](https://github.com/matrix-org/synapse/issues/7238), [\#7248](https://github.com/matrix-org/synapse/issues/7248)) - Modify suggested nginx reverse proxy configuration to match Synapse's default file upload size. Contributed by @ProCycleDev. ([\#7251](https://github.com/matrix-org/synapse/issues/7251)) - Documentation of media_storage_providers options updated to avoid misunderstandings. Contributed by Tristan Lins. ([\#7272](https://github.com/matrix-org/synapse/issues/7272)) - Add documentation on monitoring workers with Prometheus. ([\#7357](https://github.com/matrix-org/synapse/issues/7357)) - Clarify endpoint usage in the users admin api documentation. ([\#7361](https://github.com/matrix-org/synapse/issues/7361)) Deprecations and Removals ------------------------- - Remove nonfunctional `captcha_bypass_secret` option from `homeserver.yaml`. ([\#7137](https://github.com/matrix-org/synapse/issues/7137)) Internal Changes ---------------- - Add benchmarks for LruCache. ([\#6446](https://github.com/matrix-org/synapse/issues/6446)) - Return total number of users and profile attributes in admin users endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#6881](https://github.com/matrix-org/synapse/issues/6881)) - Change device list streams to have one row per ID. ([\#7010](https://github.com/matrix-org/synapse/issues/7010)) - Remove concept of a non-limited stream. ([\#7011](https://github.com/matrix-org/synapse/issues/7011)) - Move catchup of replication streams logic to worker. ([\#7024](https://github.com/matrix-org/synapse/issues/7024), [\#7195](https://github.com/matrix-org/synapse/issues/7195), [\#7226](https://github.com/matrix-org/synapse/issues/7226), [\#7239](https://github.com/matrix-org/synapse/issues/7239), [\#7286](https://github.com/matrix-org/synapse/issues/7286), [\#7290](https://github.com/matrix-org/synapse/issues/7290), [\#7318](https://github.com/matrix-org/synapse/issues/7318), [\#7326](https://github.com/matrix-org/synapse/issues/7326), [\#7378](https://github.com/matrix-org/synapse/issues/7378), [\#7421](https://github.com/matrix-org/synapse/issues/7421)) - Convert some of synapse.rest.media to async/await. ([\#7110](https://github.com/matrix-org/synapse/issues/7110), [\#7184](https://github.com/matrix-org/synapse/issues/7184), [\#7241](https://github.com/matrix-org/synapse/issues/7241)) - De-duplicate / remove unused REST code for login and auth. ([\#7115](https://github.com/matrix-org/synapse/issues/7115)) - Convert `*StreamRow` classes to inner classes. ([\#7116](https://github.com/matrix-org/synapse/issues/7116)) - Clean up some LoggingContext code. ([\#7120](https://github.com/matrix-org/synapse/issues/7120), [\#7181](https://github.com/matrix-org/synapse/issues/7181), [\#7183](https://github.com/matrix-org/synapse/issues/7183), [\#7408](https://github.com/matrix-org/synapse/issues/7408), [\#7426](https://github.com/matrix-org/synapse/issues/7426)) - Add explicit `instance_id` for USER_SYNC commands and remove implicit `conn_id` usage. ([\#7128](https://github.com/matrix-org/synapse/issues/7128)) - Refactored the CAS authentication logic to a separate class. ([\#7136](https://github.com/matrix-org/synapse/issues/7136)) - Run replication streamers on workers. ([\#7146](https://github.com/matrix-org/synapse/issues/7146)) - Add tests for outbound device pokes. ([\#7157](https://github.com/matrix-org/synapse/issues/7157)) - Fix device list update stream ids going backward. ([\#7158](https://github.com/matrix-org/synapse/issues/7158)) - Use `stream.current_token()` and remove `stream_positions()`. ([\#7172](https://github.com/matrix-org/synapse/issues/7172)) - Move client command handling out of TCP protocol. ([\#7185](https://github.com/matrix-org/synapse/issues/7185)) - Move server command handling out of TCP protocol. ([\#7187](https://github.com/matrix-org/synapse/issues/7187)) - Fix consistency of HTTP status codes reported in log lines. ([\#7188](https://github.com/matrix-org/synapse/issues/7188)) - Only run one background database update at a time. ([\#7190](https://github.com/matrix-org/synapse/issues/7190)) - Remove sent outbound device list pokes from the database. ([\#7192](https://github.com/matrix-org/synapse/issues/7192)) - Add a background database update job to clear out duplicate `device_lists_outbound_pokes`. ([\#7193](https://github.com/matrix-org/synapse/issues/7193)) - Remove some extraneous debugging log lines. ([\#7207](https://github.com/matrix-org/synapse/issues/7207)) - Add explicit Python build tooling as dependencies for the snapcraft build. ([\#7213](https://github.com/matrix-org/synapse/issues/7213)) - Add typing information to federation server code. ([\#7219](https://github.com/matrix-org/synapse/issues/7219)) - Extend room admin api (`GET /_synapse/admin/v1/rooms`) with additional attributes. ([\#7225](https://github.com/matrix-org/synapse/issues/7225)) - Unblacklist '/upgrade creates a new room' sytest for workers. ([\#7228](https://github.com/matrix-org/synapse/issues/7228)) - Remove redundant checks on `daemonize` from synctl. ([\#7233](https://github.com/matrix-org/synapse/issues/7233)) - Upgrade jQuery to v3.4.1 on fallback login/registration pages. ([\#7236](https://github.com/matrix-org/synapse/issues/7236)) - Change log line that told user to implement onLogin/onRegister fallback js functions to a warning, instead of an info, so it's more visible. ([\#7237](https://github.com/matrix-org/synapse/issues/7237)) - Correct the parameters of a test fixture. Contributed by Isaiah Singletary. ([\#7243](https://github.com/matrix-org/synapse/issues/7243)) - Convert auth handler to async/await. ([\#7261](https://github.com/matrix-org/synapse/issues/7261)) - Add some unit tests for replication. ([\#7278](https://github.com/matrix-org/synapse/issues/7278)) - Improve typing annotations in `synapse.replication.tcp.streams.Stream`. ([\#7291](https://github.com/matrix-org/synapse/issues/7291)) - Reduce log verbosity of url cache cleanup tasks. ([\#7295](https://github.com/matrix-org/synapse/issues/7295)) - Fix sample SAML Service Provider configuration. Contributed by @frcl. ([\#7300](https://github.com/matrix-org/synapse/issues/7300)) - Fix StreamChangeCache to work with multiple entities changing on the same stream id. ([\#7303](https://github.com/matrix-org/synapse/issues/7303)) - Fix an incorrect import in IdentityHandler. ([\#7319](https://github.com/matrix-org/synapse/issues/7319)) - Reduce logging verbosity for successful federation requests. ([\#7321](https://github.com/matrix-org/synapse/issues/7321)) - Convert some federation handler code to async/await. ([\#7338](https://github.com/matrix-org/synapse/issues/7338)) - Fix collation for postgres for unit tests. ([\#7359](https://github.com/matrix-org/synapse/issues/7359)) - Convert RegistrationWorkerStore.is_server_admin and dependent code to async/await. ([\#7363](https://github.com/matrix-org/synapse/issues/7363)) - Add an `instance_name` to `RDATA` and `POSITION` replication commands. ([\#7364](https://github.com/matrix-org/synapse/issues/7364)) - Thread through instance name to replication client. ([\#7369](https://github.com/matrix-org/synapse/issues/7369)) - Convert synapse.server_notices to async/await. ([\#7394](https://github.com/matrix-org/synapse/issues/7394)) - Convert synapse.notifier to async/await. ([\#7395](https://github.com/matrix-org/synapse/issues/7395)) - Fix issues with the Python package manifest. ([\#7404](https://github.com/matrix-org/synapse/issues/7404)) - Prevent methods in `synapse.handlers.auth` from polling the homeserver config every request. ([\#7420](https://github.com/matrix-org/synapse/issues/7420)) - Speed up fetching device lists changes when handling `/sync` requests. ([\#7423](https://github.com/matrix-org/synapse/issues/7423)) - Run group attestation renewal in series rather than parallel for performance. ([\#7442](https://github.com/matrix-org/synapse/issues/7442)) Synapse 1.12.4 (2020-04-23) =========================== No significant changes. Synapse 1.12.4rc1 (2020-04-22) ============================== Features -------- - Always send users their own device updates. ([\#7160](https://github.com/matrix-org/synapse/issues/7160)) - Add support for handling GET requests for `account_data` on a worker. ([\#7311](https://github.com/matrix-org/synapse/issues/7311)) Bugfixes -------- - Fix a bug that prevented cross-signing with users on worker-mode synapses. ([\#7255](https://github.com/matrix-org/synapse/issues/7255)) - Do not treat display names as globs in push rules. ([\#7271](https://github.com/matrix-org/synapse/issues/7271)) - Fix a bug with cross-signing devices belonging to remote users who did not share a room with any user on the local homeserver. ([\#7289](https://github.com/matrix-org/synapse/issues/7289)) Synapse 1.12.3 (2020-04-03) =========================== - Remove the the pin to Pillow 7.0 which was introduced in Synapse 1.12.2, and correctly fix the issue with building the Debian packages. ([\#7212](https://github.com/matrix-org/synapse/issues/7212)) Synapse 1.12.2 (2020-04-02) =========================== This release works around [an issue](https://github.com/matrix-org/synapse/issues/7208) with building the debian packages. No other significant changes since 1.12.1. Synapse 1.12.1 (2020-04-02) =========================== No significant changes since 1.12.1rc1. Synapse 1.12.1rc1 (2020-03-31) ============================== Bugfixes -------- - Fix starting workers when federation sending not split out. ([\#7133](https://github.com/matrix-org/synapse/issues/7133)). Introduced in v1.12.0. - Avoid importing `sqlite3` when using the postgres backend. Contributed by David Vo. ([\#7155](https://github.com/matrix-org/synapse/issues/7155)). Introduced in v1.12.0rc1. - Fix a bug which could cause outbound federation traffic to stop working if a client uploaded an incorrect e2e device signature. ([\#7177](https://github.com/matrix-org/synapse/issues/7177)). Introduced in v1.11.0. Synapse 1.12.0 (2020-03-23) =========================== Debian packages and Docker images are rebuilt using the latest versions of dependency libraries, including Twisted 20.3.0. **Please see security advisory below**. Potential slow database update during upgrade --------------------------------------------- Synapse 1.12.0 includes a database update which is run as part of the upgrade, and which may take some time (several hours in the case of a large server). Synapse will not respond to HTTP requests while this update is taking place. For imformation on seeing if you are affected, and workaround if you are, see the [upgrade notes](docs/upgrade.md#upgrading-to-v1120). Security advisory ----------------- Synapse may be vulnerable to request-smuggling attacks when it is used with a reverse-proxy. The vulnerabilties are fixed in Twisted 20.3.0, and are described in [CVE-2020-10108](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10108) and [CVE-2020-10109](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10109). For a good introduction to this class of request-smuggling attacks, see https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn. We are not aware of these vulnerabilities being exploited in the wild, and do not believe that they are exploitable with current versions of any reverse proxies. Nevertheless, we recommend that all Synapse administrators ensure that they have the latest versions of the Twisted library to ensure that their installation remains secure. * Administrators using the [`matrix.org` Docker image](https://hub.docker.com/r/matrixdotorg/synapse/) or the [Debian/Ubuntu packages from `matrix.org`](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages) should ensure that they have version 1.12.0 installed: these images include Twisted 20.3.0. * Administrators who have [installed Synapse from source](https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-from-source) should upgrade Twisted within their virtualenv by running: ```sh /bin/pip install 'Twisted>=20.3.0' ``` * Administrators who have installed Synapse from distribution packages should consult the information from their distributions. The `matrix.org` Synapse instance was not vulnerable to these vulnerabilities. Advance notice of change to the default `git` branch for Synapse ---------------------------------------------------------------- Currently, the default `git` branch for Synapse is `master`, which tracks the latest release. After the release of Synapse 1.13.0, we intend to change this default to `develop`, which is the development tip. This is more consistent with common practice and modern `git` usage. Although we try to keep `develop` in a stable state, there may be occasions where regressions creep in. Developers and distributors who have scripts which run builds using the default branch of `Synapse` should therefore consider pinning their scripts to `master`. Synapse 1.12.0rc1 (2020-03-19) ============================== Features -------- - Changes related to room alias management ([MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432)): - Publishing/removing a room from the room directory now requires the user to have a power level capable of modifying the canonical alias, instead of the room aliases. ([\#6965](https://github.com/matrix-org/synapse/issues/6965)) - Validate the `alt_aliases` property of canonical alias events. ([\#6971](https://github.com/matrix-org/synapse/issues/6971)) - Users with a power level sufficient to modify the canonical alias of a room can now delete room aliases. ([\#6986](https://github.com/matrix-org/synapse/issues/6986)) - Implement updated authorization rules and redaction rules for aliases events, from [MSC2261](https://github.com/matrix-org/matrix-doc/pull/2261) and [MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432). ([\#7037](https://github.com/matrix-org/synapse/issues/7037)) - Stop sending m.room.aliases events during room creation and upgrade. ([\#6941](https://github.com/matrix-org/synapse/issues/6941)) - Synapse no longer uses room alias events to calculate room names for push notifications. ([\#6966](https://github.com/matrix-org/synapse/issues/6966)) - The room list endpoint no longer returns a list of aliases. ([\#6970](https://github.com/matrix-org/synapse/issues/6970)) - Remove special handling of aliases events from [MSC2260](https://github.com/matrix-org/matrix-doc/pull/2260) added in v1.10.0rc1. ([\#7034](https://github.com/matrix-org/synapse/issues/7034)) - Expose the `synctl`, `hash_password` and `generate_config` commands in the snapcraft package. Contributed by @devec0. ([\#6315](https://github.com/matrix-org/synapse/issues/6315)) - Check that server_name is correctly set before running database updates. ([\#6982](https://github.com/matrix-org/synapse/issues/6982)) - Break down monthly active users by `appservice_id` and emit via Prometheus. ([\#7030](https://github.com/matrix-org/synapse/issues/7030)) - Render a configurable and comprehensible error page if something goes wrong during the SAML2 authentication process. ([\#7058](https://github.com/matrix-org/synapse/issues/7058), [\#7067](https://github.com/matrix-org/synapse/issues/7067)) - Add an optional parameter to control whether other sessions are logged out when a user's password is modified. ([\#7085](https://github.com/matrix-org/synapse/issues/7085)) - Add prometheus metrics for the number of active pushers. ([\#7103](https://github.com/matrix-org/synapse/issues/7103), [\#7106](https://github.com/matrix-org/synapse/issues/7106)) - Improve performance when making HTTPS requests to sygnal, sydent, etc, by sharing the SSL context object between connections. ([\#7094](https://github.com/matrix-org/synapse/issues/7094)) Bugfixes -------- - When a user's profile is updated via the admin API, also generate a displayname/avatar update for that user in each room. ([\#6572](https://github.com/matrix-org/synapse/issues/6572)) - Fix a couple of bugs in email configuration handling. ([\#6962](https://github.com/matrix-org/synapse/issues/6962)) - Fix an issue affecting worker-based deployments where replication would stop working, necessitating a full restart, after joining a large room. ([\#6967](https://github.com/matrix-org/synapse/issues/6967)) - Fix `duplicate key` error which was logged when rejoining a room over federation. ([\#6968](https://github.com/matrix-org/synapse/issues/6968)) - Prevent user from setting 'deactivated' to anything other than a bool on the v2 PUT /users Admin API. ([\#6990](https://github.com/matrix-org/synapse/issues/6990)) - Fix py35-old CI by using native tox package. ([\#7018](https://github.com/matrix-org/synapse/issues/7018)) - Fix a bug causing `org.matrix.dummy_event` to be included in responses from `/sync`. ([\#7035](https://github.com/matrix-org/synapse/issues/7035)) - Fix a bug that renders UTF-8 text files incorrectly when loaded from media. Contributed by @TheStranjer. ([\#7044](https://github.com/matrix-org/synapse/issues/7044)) - Fix a bug that would cause Synapse to respond with an error about event visibility if a client tried to request the state of a room at a given token. ([\#7066](https://github.com/matrix-org/synapse/issues/7066)) - Repair a data-corruption issue which was introduced in Synapse 1.10, and fixed in Synapse 1.11, and which could cause `/sync` to return with 404 errors about missing events and unknown rooms. ([\#7070](https://github.com/matrix-org/synapse/issues/7070)) - Fix a bug causing account validity renewal emails to be sent even if the feature is turned off in some cases. ([\#7074](https://github.com/matrix-org/synapse/issues/7074)) Improved Documentation ---------------------- - Updated CentOS8 install instructions. Contributed by Richard Kellner. ([\#6925](https://github.com/matrix-org/synapse/issues/6925)) - Fix `POSTGRES_INITDB_ARGS` in the `contrib/docker/docker-compose.yml` example docker-compose configuration. ([\#6984](https://github.com/matrix-org/synapse/issues/6984)) - Change date in [INSTALL.md](./INSTALL.md#tls-certificates) for last date of getting TLS certificates to November 2019. ([\#7015](https://github.com/matrix-org/synapse/issues/7015)) - Document that the fallback auth endpoints must be routed to the same worker node as the register endpoints. ([\#7048](https://github.com/matrix-org/synapse/issues/7048)) Deprecations and Removals ------------------------- - Remove the unused query_auth federation endpoint per [MSC2451](https://github.com/matrix-org/matrix-doc/pull/2451). ([\#7026](https://github.com/matrix-org/synapse/issues/7026)) Internal Changes ---------------- - Add type hints to `logging/context.py`. ([\#6309](https://github.com/matrix-org/synapse/issues/6309)) - Add some clarifications to `README.md` in the database schema directory. ([\#6615](https://github.com/matrix-org/synapse/issues/6615)) - Refactoring work in preparation for changing the event redaction algorithm. ([\#6874](https://github.com/matrix-org/synapse/issues/6874), [\#6875](https://github.com/matrix-org/synapse/issues/6875), [\#6983](https://github.com/matrix-org/synapse/issues/6983), [\#7003](https://github.com/matrix-org/synapse/issues/7003)) - Improve performance of v2 state resolution for large rooms. ([\#6952](https://github.com/matrix-org/synapse/issues/6952), [\#7095](https://github.com/matrix-org/synapse/issues/7095)) - Reduce time spent doing GC, by freezing objects on startup. ([\#6953](https://github.com/matrix-org/synapse/issues/6953)) - Minor perfermance fixes to `get_auth_chain_ids`. ([\#6954](https://github.com/matrix-org/synapse/issues/6954)) - Don't record remote cross-signing keys in the `devices` table. ([\#6956](https://github.com/matrix-org/synapse/issues/6956)) - Use flake8-comprehensions to enforce good hygiene of list/set/dict comprehensions. ([\#6957](https://github.com/matrix-org/synapse/issues/6957)) - Merge worker apps together. ([\#6964](https://github.com/matrix-org/synapse/issues/6964), [\#7002](https://github.com/matrix-org/synapse/issues/7002), [\#7055](https://github.com/matrix-org/synapse/issues/7055), [\#7104](https://github.com/matrix-org/synapse/issues/7104)) - Remove redundant `store_room` call from `FederationHandler._process_received_pdu`. ([\#6979](https://github.com/matrix-org/synapse/issues/6979)) - Update warning for incorrect database collation/ctype to include link to documentation. ([\#6985](https://github.com/matrix-org/synapse/issues/6985)) - Add some type annotations to the database storage classes. ([\#6987](https://github.com/matrix-org/synapse/issues/6987)) - Port `synapse.handlers.presence` to async/await. ([\#6991](https://github.com/matrix-org/synapse/issues/6991), [\#7019](https://github.com/matrix-org/synapse/issues/7019)) - Add some type annotations to the federation base & client classes. ([\#6995](https://github.com/matrix-org/synapse/issues/6995)) - Port `synapse.rest.keys` to async/await. ([\#7020](https://github.com/matrix-org/synapse/issues/7020)) - Add a type check to `is_verified` when processing room keys. ([\#7045](https://github.com/matrix-org/synapse/issues/7045)) - Add type annotations and comments to the auth handler. ([\#7063](https://github.com/matrix-org/synapse/issues/7063)) Synapse 1.11.1 (2020-03-03) =========================== This release includes a security fix impacting installations using Single Sign-On (i.e. SAML2 or CAS) for authentication. Administrators of such installations are encouraged to upgrade as soon as possible. The release also includes fixes for a couple of other bugs. Bugfixes -------- - Add a confirmation step to the SSO login flow before redirecting users to the redirect URL. ([b2bd54a2](https://github.com/matrix-org/synapse/commit/b2bd54a2e31d9a248f73fadb184ae9b4cbdb49f9), [65c73cdf](https://github.com/matrix-org/synapse/commit/65c73cdfec1876a9fec2fd2c3a74923cd146fe0b), [a0178df1](https://github.com/matrix-org/synapse/commit/a0178df10422a76fd403b82d2b2a4ed28a9a9d1e)) - Fixed set a user as an admin with the admin API `PUT /_synapse/admin/v2/users/`. Contributed by @dklimpel. ([\#6910](https://github.com/matrix-org/synapse/issues/6910)) - Fix bug introduced in Synapse 1.11.0 which sometimes caused errors when joining rooms over federation, with `'coroutine' object has no attribute 'event_id'`. ([\#6996](https://github.com/matrix-org/synapse/issues/6996)) Synapse 1.11.0 (2020-02-21) =========================== Improved Documentation ---------------------- - Small grammatical fixes to the ACME v1 deprecation notice. ([\#6944](https://github.com/matrix-org/synapse/issues/6944)) Synapse 1.11.0rc1 (2020-02-19) ============================== Features -------- - Admin API to add or modify threepids of user accounts. ([\#6769](https://github.com/matrix-org/synapse/issues/6769)) - Limit the number of events that can be requested by the backfill federation API to 100. ([\#6864](https://github.com/matrix-org/synapse/issues/6864)) - Add ability to run some group APIs on workers. ([\#6866](https://github.com/matrix-org/synapse/issues/6866)) - Reject device display names over 100 characters in length to prevent abuse. ([\#6882](https://github.com/matrix-org/synapse/issues/6882)) - Add ability to route federation user device queries to workers. ([\#6873](https://github.com/matrix-org/synapse/issues/6873)) - The result of a user directory search can now be filtered via the spam checker. ([\#6888](https://github.com/matrix-org/synapse/issues/6888)) - Implement new `GET /_matrix/client/unstable/org.matrix.msc2432/rooms/{roomId}/aliases` endpoint as per [MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432). ([\#6939](https://github.com/matrix-org/synapse/issues/6939), [\#6948](https://github.com/matrix-org/synapse/issues/6948), [\#6949](https://github.com/matrix-org/synapse/issues/6949)) - Stop sending `m.room.alias` events wheng adding / removing aliases. Check `alt_aliases` in the latest `m.room.canonical_alias` event when deleting an alias. ([\#6904](https://github.com/matrix-org/synapse/issues/6904)) - Change the default power levels of invites, tombstones and server ACLs for new rooms. ([\#6834](https://github.com/matrix-org/synapse/issues/6834)) Bugfixes -------- - Fixed third party event rules function `on_create_room`'s return value being ignored. ([\#6781](https://github.com/matrix-org/synapse/issues/6781)) - Allow URL-encoded User IDs on `/_synapse/admin/v2/users/[/admin]` endpoints. Thanks to @NHAS for reporting. ([\#6825](https://github.com/matrix-org/synapse/issues/6825)) - Fix Synapse refusing to start if `federation_certificate_verification_whitelist` option is blank. ([\#6849](https://github.com/matrix-org/synapse/issues/6849)) - Fix errors from logging in the purge jobs related to the message retention policies support. ([\#6945](https://github.com/matrix-org/synapse/issues/6945)) - Return a 404 instead of 200 for querying information of a non-existant user through the admin API. ([\#6901](https://github.com/matrix-org/synapse/issues/6901)) Updates to the Docker image --------------------------- - The deprecated "generate-config-on-the-fly" mode is no longer supported. ([\#6918](https://github.com/matrix-org/synapse/issues/6918)) Improved Documentation ---------------------- - Add details of PR merge strategy to contributing docs. ([\#6846](https://github.com/matrix-org/synapse/issues/6846)) - Spell out that the last event sent to a room won't be deleted by a purge. ([\#6891](https://github.com/matrix-org/synapse/issues/6891)) - Update Synapse's documentation to warn about the deprecation of ACME v1. ([\#6905](https://github.com/matrix-org/synapse/issues/6905), [\#6907](https://github.com/matrix-org/synapse/issues/6907), [\#6909](https://github.com/matrix-org/synapse/issues/6909)) - Add documentation for the spam checker. ([\#6906](https://github.com/matrix-org/synapse/issues/6906)) - Fix worker docs to point `/publicised_groups` API correctly. ([\#6938](https://github.com/matrix-org/synapse/issues/6938)) - Clean up and update docs on setting up federation. ([\#6940](https://github.com/matrix-org/synapse/issues/6940)) - Add a warning about indentation to generated configuration files. ([\#6920](https://github.com/matrix-org/synapse/issues/6920)) - Databases created using the compose file in contrib/docker will now always have correct encoding and locale settings. Contributed by Fridtjof Mund. ([\#6921](https://github.com/matrix-org/synapse/issues/6921)) - Update pip install directions in readme to avoid error when using zsh. ([\#6855](https://github.com/matrix-org/synapse/issues/6855)) Deprecations and Removals ------------------------- - Remove `m.lazy_load_members` from `unstable_features` since lazy loading is in the stable Client-Server API version r0.5.0. ([\#6877](https://github.com/matrix-org/synapse/issues/6877)) Internal Changes ---------------- - Add type hints to `SyncHandler`. ([\#6821](https://github.com/matrix-org/synapse/issues/6821)) - Refactoring work in preparation for changing the event redaction algorithm. ([\#6823](https://github.com/matrix-org/synapse/issues/6823), [\#6827](https://github.com/matrix-org/synapse/issues/6827), [\#6854](https://github.com/matrix-org/synapse/issues/6854), [\#6856](https://github.com/matrix-org/synapse/issues/6856), [\#6857](https://github.com/matrix-org/synapse/issues/6857), [\#6858](https://github.com/matrix-org/synapse/issues/6858)) - Fix stacktraces when using `ObservableDeferred` and async/await. ([\#6836](https://github.com/matrix-org/synapse/issues/6836)) - Port much of `synapse.handlers.federation` to async/await. ([\#6837](https://github.com/matrix-org/synapse/issues/6837), [\#6840](https://github.com/matrix-org/synapse/issues/6840)) - Populate `rooms.room_version` database column at startup, rather than in a background update. ([\#6847](https://github.com/matrix-org/synapse/issues/6847)) - Reduce amount we log at `INFO` level. ([\#6833](https://github.com/matrix-org/synapse/issues/6833), [\#6862](https://github.com/matrix-org/synapse/issues/6862)) - Remove unused `get_room_stats_state` method. ([\#6869](https://github.com/matrix-org/synapse/issues/6869)) - Add typing to `synapse.federation.sender` and port to async/await. ([\#6871](https://github.com/matrix-org/synapse/issues/6871)) - Refactor `_EventInternalMetadata` object to improve type safety. ([\#6872](https://github.com/matrix-org/synapse/issues/6872)) - Add an additional entry to the SyTest blacklist for worker mode. ([\#6883](https://github.com/matrix-org/synapse/issues/6883)) - Fix the use of sed in the linting scripts when using BSD sed. ([\#6887](https://github.com/matrix-org/synapse/issues/6887)) - Add type hints to the spam checker module. ([\#6915](https://github.com/matrix-org/synapse/issues/6915)) - Convert the directory handler tests to use HomeserverTestCase. ([\#6919](https://github.com/matrix-org/synapse/issues/6919)) - Increase DB/CPU perf of `_is_server_still_joined` check. ([\#6936](https://github.com/matrix-org/synapse/issues/6936)) - Tiny optimisation for incoming HTTP request dispatch. ([\#6950](https://github.com/matrix-org/synapse/issues/6950)) Synapse 1.10.1 (2020-02-17) =========================== Bugfixes -------- - Fix a bug introduced in Synapse 1.10.0 which would cause room state to be cleared in the database if Synapse was upgraded direct from 1.2.1 or earlier to 1.10.0. ([\#6924](https://github.com/matrix-org/synapse/issues/6924)) Synapse 1.10.0 (2020-02-12) =========================== **WARNING to client developers**: As of this release Synapse validates `client_secret` parameters in the Client-Server API as per the spec. See [\#6766](https://github.com/matrix-org/synapse/issues/6766) for details. Updates to the Docker image --------------------------- - Update the docker images to Alpine Linux 3.11. ([\#6897](https://github.com/matrix-org/synapse/issues/6897)) Synapse 1.10.0rc5 (2020-02-11) ============================== Bugfixes -------- - Fix the filtering introduced in 1.10.0rc3 to also apply to the state blocks returned by `/sync`. ([\#6884](https://github.com/matrix-org/synapse/issues/6884)) Synapse 1.10.0rc4 (2020-02-11) ============================== This release candidate was built incorrectly and is superceded by 1.10.0rc5. Synapse 1.10.0rc3 (2020-02-10) ============================== Features -------- - Filter out `m.room.aliases` from the CS API to mitigate abuse while a better solution is specced. ([\#6878](https://github.com/matrix-org/synapse/issues/6878)) Internal Changes ---------------- - Fix continuous integration failures with old versions of `pip`, which were introduced by a release of the `zipp` library. ([\#6880](https://github.com/matrix-org/synapse/issues/6880)) Synapse 1.10.0rc2 (2020-02-06) ============================== Bugfixes -------- - Fix an issue with cross-signing where device signatures were not sent to remote servers. ([\#6844](https://github.com/matrix-org/synapse/issues/6844)) - Fix to the unknown remote device detection which was introduced in 1.10.rc1. ([\#6848](https://github.com/matrix-org/synapse/issues/6848)) Internal Changes ---------------- - Detect unexpected sender keys on remote encrypted events and resync device lists. ([\#6850](https://github.com/matrix-org/synapse/issues/6850)) Synapse 1.10.0rc1 (2020-01-31) ============================== Features -------- - Add experimental support for updated authorization rules for aliases events, from [MSC2260](https://github.com/matrix-org/matrix-doc/pull/2260). ([\#6787](https://github.com/matrix-org/synapse/issues/6787), [\#6790](https://github.com/matrix-org/synapse/issues/6790), [\#6794](https://github.com/matrix-org/synapse/issues/6794)) Bugfixes -------- - Warn if postgres database has a non-C locale, as that can cause issues when upgrading locales (e.g. due to upgrading OS). ([\#6734](https://github.com/matrix-org/synapse/issues/6734)) - Minor fixes to `PUT /_synapse/admin/v2/users` admin api. ([\#6761](https://github.com/matrix-org/synapse/issues/6761)) - Validate `client_secret` parameter using the regex provided by the Client-Server API, temporarily allowing `:` characters for older clients. The `:` character will be removed in a future release. ([\#6767](https://github.com/matrix-org/synapse/issues/6767)) - Fix persisting redaction events that have been redacted (or otherwise don't have a redacts key). ([\#6771](https://github.com/matrix-org/synapse/issues/6771)) - Fix outbound federation request metrics. ([\#6795](https://github.com/matrix-org/synapse/issues/6795)) - Fix bug where querying a remote user's device keys that weren't cached resulted in only returning a single device. ([\#6796](https://github.com/matrix-org/synapse/issues/6796)) - Fix race in federation sender worker that delayed sending of device updates. ([\#6799](https://github.com/matrix-org/synapse/issues/6799), [\#6800](https://github.com/matrix-org/synapse/issues/6800)) - Fix bug where Synapse didn't invalidate cache of remote users' devices when Synapse left a room. ([\#6801](https://github.com/matrix-org/synapse/issues/6801)) - Fix waking up other workers when remote server is detected to have come back online. ([\#6811](https://github.com/matrix-org/synapse/issues/6811)) Improved Documentation ---------------------- - Clarify documentation related to `user_dir` and `federation_reader` workers. ([\#6775](https://github.com/matrix-org/synapse/issues/6775)) Internal Changes ---------------- - Record room versions in the `rooms` table. ([\#6729](https://github.com/matrix-org/synapse/issues/6729), [\#6788](https://github.com/matrix-org/synapse/issues/6788), [\#6810](https://github.com/matrix-org/synapse/issues/6810)) - Propagate cache invalidates from workers to other workers. ([\#6748](https://github.com/matrix-org/synapse/issues/6748)) - Remove some unnecessary admin handler abstraction methods. ([\#6751](https://github.com/matrix-org/synapse/issues/6751)) - Add some debugging for media storage providers. ([\#6757](https://github.com/matrix-org/synapse/issues/6757)) - Detect unknown remote devices and mark cache as stale. ([\#6776](https://github.com/matrix-org/synapse/issues/6776), [\#6819](https://github.com/matrix-org/synapse/issues/6819)) - Attempt to resync remote users' devices when detected as stale. ([\#6786](https://github.com/matrix-org/synapse/issues/6786)) - Delete current state from the database when server leaves a room. ([\#6792](https://github.com/matrix-org/synapse/issues/6792)) - When a client asks for a remote user's device keys check if the local cache for that user has been marked as potentially stale. ([\#6797](https://github.com/matrix-org/synapse/issues/6797)) - Add background update to clean out left rooms from current state. ([\#6802](https://github.com/matrix-org/synapse/issues/6802), [\#6816](https://github.com/matrix-org/synapse/issues/6816)) - Refactoring work in preparation for changing the event redaction algorithm. ([\#6803](https://github.com/matrix-org/synapse/issues/6803), [\#6805](https://github.com/matrix-org/synapse/issues/6805), [\#6806](https://github.com/matrix-org/synapse/issues/6806), [\#6807](https://github.com/matrix-org/synapse/issues/6807), [\#6820](https://github.com/matrix-org/synapse/issues/6820)) Synapse 1.9.1 (2020-01-28) ========================== Bugfixes -------- - Fix bug where setting `mau_limit_reserved_threepids` config would cause Synapse to refuse to start. ([\#6793](https://github.com/matrix-org/synapse/issues/6793)) Synapse 1.9.0 (2020-01-23) ========================== **WARNING**: As of this release, Synapse no longer supports versions of SQLite before 3.11, and will refuse to start when configured to use an older version. Administrators are recommended to migrate their database to Postgres (see instructions [here](docs/postgres.md)). If your Synapse deployment uses workers, note that the reverse-proxy configurations for the `synapse.app.media_repository`, `synapse.app.federation_reader` and `synapse.app.event_creator` workers have changed, with the addition of a few paths (see the updated configurations [here](docs/workers.md#available-worker-applications)). Existing configurations will continue to work. Improved Documentation ---------------------- - Fix endpoint documentation for the List Rooms admin API. ([\#6770](https://github.com/matrix-org/synapse/issues/6770)) Synapse 1.9.0rc1 (2020-01-22) ============================= Features -------- - Allow admin to create or modify a user. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5742](https://github.com/matrix-org/synapse/issues/5742)) - Add new quarantine media admin APIs to quarantine by media ID or by user who uploaded the media. ([\#6681](https://github.com/matrix-org/synapse/issues/6681), [\#6756](https://github.com/matrix-org/synapse/issues/6756)) - Add `org.matrix.e2e_cross_signing` to `unstable_features` in `/versions` as per [MSC1756](https://github.com/matrix-org/matrix-doc/pull/1756). ([\#6712](https://github.com/matrix-org/synapse/issues/6712)) - Add a new admin API to list and filter rooms on the server. ([\#6720](https://github.com/matrix-org/synapse/issues/6720)) Bugfixes -------- - Correctly proxy HTTP errors due to API calls to remote group servers. ([\#6654](https://github.com/matrix-org/synapse/issues/6654)) - Fix media repo admin APIs when using a media worker. ([\#6664](https://github.com/matrix-org/synapse/issues/6664)) - Fix "CRITICAL" errors being logged when a request is received for a uri containing non-ascii characters. ([\#6682](https://github.com/matrix-org/synapse/issues/6682)) - Fix a bug where we would assign a numeric user ID if somebody tried registering with an empty username. ([\#6690](https://github.com/matrix-org/synapse/issues/6690)) - Fix `purge_room` admin API. ([\#6711](https://github.com/matrix-org/synapse/issues/6711)) - Fix a bug causing Synapse to not always purge quiet rooms with a low `max_lifetime` in their message retention policies when running the automated purge jobs. ([\#6714](https://github.com/matrix-org/synapse/issues/6714)) - Fix the `synapse_port_db` not correctly running background updates. Thanks @tadzik for reporting. ([\#6718](https://github.com/matrix-org/synapse/issues/6718)) - Fix changing password via user admin API. ([\#6730](https://github.com/matrix-org/synapse/issues/6730)) - Fix `/events/:event_id` deprecated API. ([\#6731](https://github.com/matrix-org/synapse/issues/6731)) - Fix monthly active user limiting support for worker mode, fixes [#4639](https://github.com/matrix-org/synapse/issues/4639). ([\#6742](https://github.com/matrix-org/synapse/issues/6742)) - Fix bug when setting `account_validity` to an empty block in the config. Thanks to @Sorunome for reporting. ([\#6747](https://github.com/matrix-org/synapse/issues/6747)) - Fix `AttributeError: 'NoneType' object has no attribute 'get'` in `hash_password` when configuration has an empty `password_config`. Contributed by @ivilata. ([\#6753](https://github.com/matrix-org/synapse/issues/6753)) - Fix the `docker-compose.yaml` overriding the entire `/etc` folder of the container. Contributed by Fabian Meyer. ([\#6656](https://github.com/matrix-org/synapse/issues/6656)) Improved Documentation ---------------------- - Fix a typo in the configuration example for purge jobs in the sample configuration file. ([\#6621](https://github.com/matrix-org/synapse/issues/6621)) - Add complete documentation of the message retention policies support. ([\#6624](https://github.com/matrix-org/synapse/issues/6624), [\#6665](https://github.com/matrix-org/synapse/issues/6665)) - Add some helpful tips about changelog entries to the GitHub pull request template. ([\#6663](https://github.com/matrix-org/synapse/issues/6663)) - Clarify the `account_validity` and `email` sections of the sample configuration. ([\#6685](https://github.com/matrix-org/synapse/issues/6685)) - Add more endpoints to the documentation for Synapse workers. ([\#6698](https://github.com/matrix-org/synapse/issues/6698)) Deprecations and Removals ------------------------- - Synapse no longer supports versions of SQLite before 3.11, and will refuse to start when configured to use an older version. Administrators are recommended to migrate their database to Postgres (see instructions [here](docs/postgres.md)). ([\#6675](https://github.com/matrix-org/synapse/issues/6675)) Internal Changes ---------------- - Add `local_current_membership` table for tracking local user membership state in rooms. ([\#6655](https://github.com/matrix-org/synapse/issues/6655), [\#6728](https://github.com/matrix-org/synapse/issues/6728)) - Port `synapse.replication.tcp` to async/await. ([\#6666](https://github.com/matrix-org/synapse/issues/6666)) - Fixup `synapse.replication` to pass mypy checks. ([\#6667](https://github.com/matrix-org/synapse/issues/6667)) - Allow `additional_resources` to implement `IResource` directly. ([\#6686](https://github.com/matrix-org/synapse/issues/6686)) - Allow REST endpoint implementations to raise a `RedirectException`, which will redirect the user's browser to a given location. ([\#6687](https://github.com/matrix-org/synapse/issues/6687)) - Updates and extensions to the module API. ([\#6688](https://github.com/matrix-org/synapse/issues/6688)) - Updates to the SAML mapping provider API. ([\#6689](https://github.com/matrix-org/synapse/issues/6689), [\#6723](https://github.com/matrix-org/synapse/issues/6723)) - Remove redundant `RegistrationError` class. ([\#6691](https://github.com/matrix-org/synapse/issues/6691)) - Don't block processing of incoming EDUs behind processing PDUs in the same transaction. ([\#6697](https://github.com/matrix-org/synapse/issues/6697)) - Remove duplicate check for the `session` query parameter on the `/auth/xxx/fallback/web` Client-Server endpoint. ([\#6702](https://github.com/matrix-org/synapse/issues/6702)) - Attempt to retry sending a transaction when we detect a remote server has come back online, rather than waiting for a transaction to be triggered by new data. ([\#6706](https://github.com/matrix-org/synapse/issues/6706)) - Add `StateMap` type alias to simplify types. ([\#6715](https://github.com/matrix-org/synapse/issues/6715)) - Add a `DeltaState` to track changes to be made to current state during event persistence. ([\#6716](https://github.com/matrix-org/synapse/issues/6716)) - Add more logging around message retention policies support. ([\#6717](https://github.com/matrix-org/synapse/issues/6717)) - When processing a SAML response, log the assertions for easier configuration. ([\#6724](https://github.com/matrix-org/synapse/issues/6724)) - Fixup `synapse.rest` to pass mypy. ([\#6732](https://github.com/matrix-org/synapse/issues/6732), [\#6764](https://github.com/matrix-org/synapse/issues/6764)) - Fixup `synapse.api` to pass mypy. ([\#6733](https://github.com/matrix-org/synapse/issues/6733)) - Allow streaming cache 'invalidate all' to workers. ([\#6749](https://github.com/matrix-org/synapse/issues/6749)) - Remove unused CI docker compose files. ([\#6754](https://github.com/matrix-org/synapse/issues/6754)) Synapse 1.8.0 (2020-01-09) ========================== **WARNING**: As of this release Synapse will refuse to start if the `log_file` config option is specified. Support for the option was removed in v1.3.0. Bugfixes -------- - Fix `GET` request on `/_synapse/admin/v2/users` endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#6563](https://github.com/matrix-org/synapse/issues/6563)) - Fix incorrect signing of responses from the key server implementation. ([\#6657](https://github.com/matrix-org/synapse/issues/6657)) Synapse 1.8.0rc1 (2020-01-07) ============================= Features -------- - Add v2 APIs for the `send_join` and `send_leave` federation endpoints (as described in [MSC1802](https://github.com/matrix-org/matrix-doc/pull/1802)). ([\#6349](https://github.com/matrix-org/synapse/issues/6349)) - Add a develop script to generate full SQL schemas. ([\#6394](https://github.com/matrix-org/synapse/issues/6394)) - Add custom SAML username mapping functionality through an external provider plugin. ([\#6411](https://github.com/matrix-org/synapse/issues/6411)) - Automatically delete empty groups/communities. ([\#6453](https://github.com/matrix-org/synapse/issues/6453)) - Add option `limit_profile_requests_to_users_who_share_rooms` to prevent requirement of a local user sharing a room with another user to query their profile information. ([\#6523](https://github.com/matrix-org/synapse/issues/6523)) - Add an `export_signing_key` script to extract the public part of signing keys when rotating them. ([\#6546](https://github.com/matrix-org/synapse/issues/6546)) - Add experimental config option to specify multiple databases. ([\#6580](https://github.com/matrix-org/synapse/issues/6580)) - Raise an error if someone tries to use the `log_file` config option. ([\#6626](https://github.com/matrix-org/synapse/issues/6626)) Bugfixes -------- - Prevent redacted events from being returned during message search. ([\#6377](https://github.com/matrix-org/synapse/issues/6377), [\#6522](https://github.com/matrix-org/synapse/issues/6522)) - Prevent error on trying to search a upgraded room when the server is not in the predecessor room. ([\#6385](https://github.com/matrix-org/synapse/issues/6385)) - Improve performance of looking up cross-signing keys. ([\#6486](https://github.com/matrix-org/synapse/issues/6486)) - Fix race which occasionally caused deleted devices to reappear. ([\#6514](https://github.com/matrix-org/synapse/issues/6514)) - Fix missing row in `device_max_stream_id` that could cause unable to decrypt errors after server restart. ([\#6555](https://github.com/matrix-org/synapse/issues/6555)) - Fix a bug which meant that we did not send systemd notifications on startup if acme was enabled. ([\#6571](https://github.com/matrix-org/synapse/issues/6571)) - Fix exception when fetching the `matrix.org:ed25519:auto` key. ([\#6625](https://github.com/matrix-org/synapse/issues/6625)) - Fix bug where a moderator upgraded a room and became an admin in the new room. ([\#6633](https://github.com/matrix-org/synapse/issues/6633)) - Fix an error which was thrown by the `PresenceHandler` `_on_shutdown` handler. ([\#6640](https://github.com/matrix-org/synapse/issues/6640)) - Fix exceptions in the synchrotron worker log when events are rejected. ([\#6645](https://github.com/matrix-org/synapse/issues/6645)) - Ensure that upgraded rooms are removed from the directory. ([\#6648](https://github.com/matrix-org/synapse/issues/6648)) - Fix a bug causing Synapse not to fetch missing events when it believes it has every event in the room. ([\#6652](https://github.com/matrix-org/synapse/issues/6652)) Improved Documentation ---------------------- - Document the Room Shutdown Admin API. ([\#6541](https://github.com/matrix-org/synapse/issues/6541)) - Reword sections of [docs/federate.md](docs/federate.md) that explained delegation at time of Synapse 1.0 transition. ([\#6601](https://github.com/matrix-org/synapse/issues/6601)) - Added the section 'Configuration' in [docs/turn-howto.md](docs/turn-howto.md). ([\#6614](https://github.com/matrix-org/synapse/issues/6614)) Deprecations and Removals ------------------------- - Remove redundant code from event authorisation implementation. ([\#6502](https://github.com/matrix-org/synapse/issues/6502)) - Remove unused, undocumented `/_matrix/content` API. ([\#6628](https://github.com/matrix-org/synapse/issues/6628)) Internal Changes ---------------- - Add *experimental* support for multiple physical databases and split out state storage to separate data store. ([\#6245](https://github.com/matrix-org/synapse/issues/6245), [\#6510](https://github.com/matrix-org/synapse/issues/6510), [\#6511](https://github.com/matrix-org/synapse/issues/6511), [\#6513](https://github.com/matrix-org/synapse/issues/6513), [\#6564](https://github.com/matrix-org/synapse/issues/6564), [\#6565](https://github.com/matrix-org/synapse/issues/6565)) - Port sections of code base to async/await. ([\#6496](https://github.com/matrix-org/synapse/issues/6496), [\#6504](https://github.com/matrix-org/synapse/issues/6504), [\#6505](https://github.com/matrix-org/synapse/issues/6505), [\#6517](https://github.com/matrix-org/synapse/issues/6517), [\#6559](https://github.com/matrix-org/synapse/issues/6559), [\#6647](https://github.com/matrix-org/synapse/issues/6647), [\#6653](https://github.com/matrix-org/synapse/issues/6653)) - Remove `SnapshotCache` in favour of `ResponseCache`. ([\#6506](https://github.com/matrix-org/synapse/issues/6506)) - Silence mypy errors for files outside those specified. ([\#6512](https://github.com/matrix-org/synapse/issues/6512)) - Clean up some logging when handling incoming events over federation. ([\#6515](https://github.com/matrix-org/synapse/issues/6515)) - Test more folders against mypy. ([\#6534](https://github.com/matrix-org/synapse/issues/6534)) - Update `mypy` to new version. ([\#6537](https://github.com/matrix-org/synapse/issues/6537)) - Adjust the sytest blacklist for worker mode. ([\#6538](https://github.com/matrix-org/synapse/issues/6538)) - Remove unused `get_pagination_rows` methods from `EventSource` classes. ([\#6557](https://github.com/matrix-org/synapse/issues/6557)) - Clean up logs from the push notifier at startup. ([\#6558](https://github.com/matrix-org/synapse/issues/6558)) - Improve diagnostics on database upgrade failure. ([\#6570](https://github.com/matrix-org/synapse/issues/6570)) - Reduce the reconnect time when worker replication fails, to make it easier to catch up. ([\#6617](https://github.com/matrix-org/synapse/issues/6617)) - Simplify http handling by removing redundant `SynapseRequestFactory`. ([\#6619](https://github.com/matrix-org/synapse/issues/6619)) - Add a workaround for synapse raising exceptions when fetching the notary's own key from the notary. ([\#6620](https://github.com/matrix-org/synapse/issues/6620)) - Automate generation of the sample log config. ([\#6627](https://github.com/matrix-org/synapse/issues/6627)) - Simplify event creation code by removing redundant queries on the `event_reference_hashes` table. ([\#6629](https://github.com/matrix-org/synapse/issues/6629)) - Fix errors when `frozen_dicts` are enabled. ([\#6642](https://github.com/matrix-org/synapse/issues/6642)) Synapse 1.7.3 (2019-12-31) ========================== This release fixes a long-standing bug in the state resolution algorithm. Bugfixes -------- - Fix exceptions caused by state resolution choking on malformed events. ([\#6608](https://github.com/matrix-org/synapse/issues/6608)) Synapse 1.7.2 (2019-12-20) ========================== This release fixes some regressions introduced in Synapse 1.7.0 and 1.7.1. Bugfixes -------- - Fix a regression introduced in Synapse 1.7.1 which caused errors when attempting to backfill rooms over federation. ([\#6576](https://github.com/matrix-org/synapse/issues/6576)) - Fix a bug introduced in Synapse 1.7.0 which caused an error on startup when upgrading from versions before 1.3.0. ([\#6578](https://github.com/matrix-org/synapse/issues/6578)) Synapse 1.7.1 (2019-12-18) ========================== This release includes several security fixes as well as a fix to a bug exposed by the security fixes. Administrators are encouraged to upgrade as soon as possible. Security updates ---------------- - Fix a bug which could cause room events to be incorrectly authorized using events from a different room. ([\#6501](https://github.com/matrix-org/synapse/issues/6501), [\#6503](https://github.com/matrix-org/synapse/issues/6503), [\#6521](https://github.com/matrix-org/synapse/issues/6521), [\#6524](https://github.com/matrix-org/synapse/issues/6524), [\#6530](https://github.com/matrix-org/synapse/issues/6530), [\#6531](https://github.com/matrix-org/synapse/issues/6531)) - Fix a bug causing responses to the `/context` client endpoint to not use the pruned version of the event. ([\#6553](https://github.com/matrix-org/synapse/issues/6553)) - Fix a cause of state resets in room versions 2 onwards. ([\#6556](https://github.com/matrix-org/synapse/issues/6556), [\#6560](https://github.com/matrix-org/synapse/issues/6560)) Bugfixes -------- - Fix a bug which could cause the federation server to incorrectly return errors when handling certain obscure event graphs. ([\#6526](https://github.com/matrix-org/synapse/issues/6526), [\#6527](https://github.com/matrix-org/synapse/issues/6527)) Synapse 1.7.0 (2019-12-13) ========================== This release changes the default settings so that only local authenticated users can query the server's room directory. See the [upgrade notes](docs/upgrade.md#upgrading-to-v170) for details. Support for SQLite versions before 3.11 is now deprecated. A future release will refuse to start if used with an SQLite version before 3.11. Administrators are reminded that SQLite should not be used for production instances. Instructions for migrating to Postgres are available [here](docs/postgres.md). A future release of synapse will, by default, disable federation for servers using SQLite. No significant changes since 1.7.0rc2. Synapse 1.7.0rc2 (2019-12-11) ============================= Bugfixes -------- - Fix incorrect error message for invalid requests when setting user's avatar URL. ([\#6497](https://github.com/matrix-org/synapse/issues/6497)) - Fix support for SQLite 3.7. ([\#6499](https://github.com/matrix-org/synapse/issues/6499)) - Fix regression where sending email push would not work when using a pusher worker. ([\#6507](https://github.com/matrix-org/synapse/issues/6507), [\#6509](https://github.com/matrix-org/synapse/issues/6509)) Synapse 1.7.0rc1 (2019-12-09) ============================= Features -------- - Implement per-room message retention policies. ([\#5815](https://github.com/matrix-org/synapse/issues/5815), [\#6436](https://github.com/matrix-org/synapse/issues/6436)) - Add etag and count fields to key backup endpoints to help clients guess if there are new keys. ([\#5858](https://github.com/matrix-org/synapse/issues/5858)) - Add `/admin/v2/users` endpoint with pagination. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5925](https://github.com/matrix-org/synapse/issues/5925)) - Require User-Interactive Authentication for `/account/3pid/add`, meaning the user's password will be required to add a third-party ID to their account. ([\#6119](https://github.com/matrix-org/synapse/issues/6119)) - Implement the `/_matrix/federation/unstable/net.atleastfornow/state/` API as drafted in MSC2314. ([\#6176](https://github.com/matrix-org/synapse/issues/6176)) - Configure privacy-preserving settings by default for the room directory. ([\#6355](https://github.com/matrix-org/synapse/issues/6355)) - Add ephemeral messages support by partially implementing [MSC2228](https://github.com/matrix-org/matrix-doc/pull/2228). ([\#6409](https://github.com/matrix-org/synapse/issues/6409)) - Add support for [MSC 2367](https://github.com/matrix-org/matrix-doc/pull/2367), which allows specifying a reason on all membership events. ([\#6434](https://github.com/matrix-org/synapse/issues/6434)) Bugfixes -------- - Transfer non-standard power levels on room upgrade. ([\#6237](https://github.com/matrix-org/synapse/issues/6237)) - Fix error from the Pillow library when uploading RGBA images. ([\#6241](https://github.com/matrix-org/synapse/issues/6241)) - Correctly apply the event filter to the `state`, `events_before` and `events_after` fields in the response to `/context` requests. ([\#6329](https://github.com/matrix-org/synapse/issues/6329)) - Fix caching devices for remote users when using workers, so that we don't attempt to refetch (and potentially fail) each time a user requests devices. ([\#6332](https://github.com/matrix-org/synapse/issues/6332)) - Prevent account data syncs getting lost across TCP replication. ([\#6333](https://github.com/matrix-org/synapse/issues/6333)) - Fix bug: TypeError in `register_user()` while using LDAP auth module. ([\#6406](https://github.com/matrix-org/synapse/issues/6406)) - Fix an intermittent exception when handling read-receipts. ([\#6408](https://github.com/matrix-org/synapse/issues/6408)) - Fix broken guest registration when there are existing blocks of numeric user IDs. ([\#6420](https://github.com/matrix-org/synapse/issues/6420)) - Fix startup error when http proxy is defined. ([\#6421](https://github.com/matrix-org/synapse/issues/6421)) - Fix error when using synapse_port_db on a vanilla synapse db. ([\#6449](https://github.com/matrix-org/synapse/issues/6449)) - Fix uploading multiple cross signing signatures for the same user. ([\#6451](https://github.com/matrix-org/synapse/issues/6451)) - Fix bug which lead to exceptions being thrown in a loop when a cross-signed device is deleted. ([\#6462](https://github.com/matrix-org/synapse/issues/6462)) - Fix `synapse_port_db` not exiting with a 0 code if something went wrong during the port process. ([\#6470](https://github.com/matrix-org/synapse/issues/6470)) - Improve sanity-checking when receiving events over federation. ([\#6472](https://github.com/matrix-org/synapse/issues/6472)) - Fix inaccurate per-block Prometheus metrics. ([\#6491](https://github.com/matrix-org/synapse/issues/6491)) - Fix small performance regression for sending invites. ([\#6493](https://github.com/matrix-org/synapse/issues/6493)) - Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression. ([\#6494](https://github.com/matrix-org/synapse/issues/6494)) Improved Documentation ---------------------- - Update documentation and variables in user contributed systemd reference file. ([\#6369](https://github.com/matrix-org/synapse/issues/6369), [\#6490](https://github.com/matrix-org/synapse/issues/6490)) - Fix link in the user directory documentation. ([\#6388](https://github.com/matrix-org/synapse/issues/6388)) - Add build instructions to the docker readme. ([\#6390](https://github.com/matrix-org/synapse/issues/6390)) - Switch Ubuntu package install recommendation to use python3 packages in INSTALL.md. ([\#6443](https://github.com/matrix-org/synapse/issues/6443)) - Write some docs for the quarantine_media api. ([\#6458](https://github.com/matrix-org/synapse/issues/6458)) - Convert CONTRIBUTING.rst to markdown (among other small fixes). ([\#6461](https://github.com/matrix-org/synapse/issues/6461)) Deprecations and Removals ------------------------- - Remove admin/v1/users_paginate endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5925](https://github.com/matrix-org/synapse/issues/5925)) - Remove fallback for federation with old servers which lack the /federation/v1/state_ids API. ([\#6488](https://github.com/matrix-org/synapse/issues/6488)) Internal Changes ---------------- - Add benchmarks for structured logging and improve output performance. ([\#6266](https://github.com/matrix-org/synapse/issues/6266)) - Improve the performance of outputting structured logging. ([\#6322](https://github.com/matrix-org/synapse/issues/6322)) - Refactor some code in the event authentication path for clarity. ([\#6343](https://github.com/matrix-org/synapse/issues/6343), [\#6468](https://github.com/matrix-org/synapse/issues/6468), [\#6480](https://github.com/matrix-org/synapse/issues/6480)) - Clean up some unnecessary quotation marks around the codebase. ([\#6362](https://github.com/matrix-org/synapse/issues/6362)) - Complain on startup instead of 500'ing during runtime when `public_baseurl` isn't set when necessary. ([\#6379](https://github.com/matrix-org/synapse/issues/6379)) - Add a test scenario to make sure room history purges don't break `/messages` in the future. ([\#6392](https://github.com/matrix-org/synapse/issues/6392)) - Clarifications for the email configuration settings. ([\#6423](https://github.com/matrix-org/synapse/issues/6423)) - Add more tests to the blacklist when running in worker mode. ([\#6429](https://github.com/matrix-org/synapse/issues/6429)) - Refactor data store layer to support multiple databases in the future. ([\#6454](https://github.com/matrix-org/synapse/issues/6454), [\#6464](https://github.com/matrix-org/synapse/issues/6464), [\#6469](https://github.com/matrix-org/synapse/issues/6469), [\#6487](https://github.com/matrix-org/synapse/issues/6487)) - Port synapse.rest.client.v1 to async/await. ([\#6482](https://github.com/matrix-org/synapse/issues/6482)) - Port synapse.rest.client.v2_alpha to async/await. ([\#6483](https://github.com/matrix-org/synapse/issues/6483)) - Port SyncHandler to async/await. ([\#6484](https://github.com/matrix-org/synapse/issues/6484)) Synapse 1.6.1 (2019-11-28) ========================== Security updates ---------------- This release includes a security fix ([\#6426](https://github.com/matrix-org/synapse/issues/6426), below). Administrators are encouraged to upgrade as soon as possible. Bugfixes -------- - Clean up local threepids from user on account deactivation. ([\#6426](https://github.com/matrix-org/synapse/issues/6426)) - Fix startup error when http proxy is defined. ([\#6421](https://github.com/matrix-org/synapse/issues/6421)) Synapse 1.6.0 (2019-11-26) ========================== Bugfixes -------- - Fix phone home stats reporting. ([\#6418](https://github.com/matrix-org/synapse/issues/6418)) Synapse 1.6.0rc2 (2019-11-25) ============================= Bugfixes -------- - Fix a bug which could cause the background database update hander for event labels to get stuck in a loop raising exceptions. ([\#6407](https://github.com/matrix-org/synapse/issues/6407)) Synapse 1.6.0rc1 (2019-11-20) ============================= Features -------- - Add federation support for cross-signing. ([\#5727](https://github.com/matrix-org/synapse/issues/5727)) - Increase default room version from 4 to 5, thereby enforcing server key validity period checks. ([\#6220](https://github.com/matrix-org/synapse/issues/6220)) - Add support for outbound http proxying via http_proxy/HTTPS_PROXY env vars. ([\#6238](https://github.com/matrix-org/synapse/issues/6238)) - Implement label-based filtering on `/sync` and `/messages` ([MSC2326](https://github.com/matrix-org/matrix-doc/pull/2326)). ([\#6301](https://github.com/matrix-org/synapse/issues/6301), [\#6310](https://github.com/matrix-org/synapse/issues/6310), [\#6340](https://github.com/matrix-org/synapse/issues/6340)) Bugfixes -------- - Fix LruCache callback deduplication for Python 3.8. Contributed by @V02460. ([\#6213](https://github.com/matrix-org/synapse/issues/6213)) - Remove a room from a server's public rooms list on room upgrade. ([\#6232](https://github.com/matrix-org/synapse/issues/6232), [\#6235](https://github.com/matrix-org/synapse/issues/6235)) - Delete keys from key backup when deleting backup versions. ([\#6253](https://github.com/matrix-org/synapse/issues/6253)) - Make notification of cross-signing signatures work with workers. ([\#6254](https://github.com/matrix-org/synapse/issues/6254)) - Fix exception when remote servers attempt to join a room that they're not allowed to join. ([\#6278](https://github.com/matrix-org/synapse/issues/6278)) - Prevent errors from appearing on Synapse startup if `git` is not installed. ([\#6284](https://github.com/matrix-org/synapse/issues/6284)) - Appservice requests will no longer contain a double slash prefix when the appservice url provided ends in a slash. ([\#6306](https://github.com/matrix-org/synapse/issues/6306)) - Fix `/purge_room` admin API. ([\#6307](https://github.com/matrix-org/synapse/issues/6307)) - Fix the `hidden` field in the `devices` table for SQLite versions prior to 3.23.0. ([\#6313](https://github.com/matrix-org/synapse/issues/6313)) - Fix bug which casued rejected events to be persisted with the wrong room state. ([\#6320](https://github.com/matrix-org/synapse/issues/6320)) - Fix bug where `rc_login` ratelimiting would prematurely kick in. ([\#6335](https://github.com/matrix-org/synapse/issues/6335)) - Prevent the server taking a long time to start up when guest registration is enabled. ([\#6338](https://github.com/matrix-org/synapse/issues/6338)) - Fix bug where upgrading a guest account to a full user would fail when account validity is enabled. ([\#6359](https://github.com/matrix-org/synapse/issues/6359)) - Fix `to_device` stream ID getting reset every time Synapse restarts, which had the potential to cause unable to decrypt errors. ([\#6363](https://github.com/matrix-org/synapse/issues/6363)) - Fix permission denied error when trying to generate a config file with the docker image. ([\#6389](https://github.com/matrix-org/synapse/issues/6389)) Improved Documentation ---------------------- - Contributor documentation now mentions script to run linters. ([\#6164](https://github.com/matrix-org/synapse/issues/6164)) - Modify CAPTCHA_SETUP.md to update the terms `private key` and `public key` to `secret key` and `site key` respectively. Contributed by Yash Jipkate. ([\#6257](https://github.com/matrix-org/synapse/issues/6257)) - Update `INSTALL.md` Email section to talk about `account_threepid_delegates`. ([\#6272](https://github.com/matrix-org/synapse/issues/6272)) - Fix a small typo in `account_threepid_delegates` configuration option. ([\#6273](https://github.com/matrix-org/synapse/issues/6273)) Internal Changes ---------------- - Add a CI job to test the `synapse_port_db` script. ([\#6140](https://github.com/matrix-org/synapse/issues/6140), [\#6276](https://github.com/matrix-org/synapse/issues/6276)) - Convert EventContext to an attrs. ([\#6218](https://github.com/matrix-org/synapse/issues/6218)) - Move `persist_events` out from main data store. ([\#6240](https://github.com/matrix-org/synapse/issues/6240), [\#6300](https://github.com/matrix-org/synapse/issues/6300)) - Reduce verbosity of user/room stats. ([\#6250](https://github.com/matrix-org/synapse/issues/6250)) - Reduce impact of debug logging. ([\#6251](https://github.com/matrix-org/synapse/issues/6251)) - Expose some homeserver functionality to spam checkers. ([\#6259](https://github.com/matrix-org/synapse/issues/6259)) - Change cache descriptors to always return deferreds. ([\#6263](https://github.com/matrix-org/synapse/issues/6263), [\#6291](https://github.com/matrix-org/synapse/issues/6291)) - Fix incorrect comment regarding the functionality of an `if` statement. ([\#6269](https://github.com/matrix-org/synapse/issues/6269)) - Update CI to run `isort` over the `scripts` and `scripts-dev` directories. ([\#6270](https://github.com/matrix-org/synapse/issues/6270)) - Replace every instance of `logger.warn` method with `logger.warning` as the former is deprecated. ([\#6271](https://github.com/matrix-org/synapse/issues/6271), [\#6314](https://github.com/matrix-org/synapse/issues/6314)) - Port replication http server endpoints to async/await. ([\#6274](https://github.com/matrix-org/synapse/issues/6274)) - Port room rest handlers to async/await. ([\#6275](https://github.com/matrix-org/synapse/issues/6275)) - Remove redundant CLI parameters on CI's `flake8` step. ([\#6277](https://github.com/matrix-org/synapse/issues/6277)) - Port `federation_server.py` to async/await. ([\#6279](https://github.com/matrix-org/synapse/issues/6279)) - Port receipt and read markers to async/wait. ([\#6280](https://github.com/matrix-org/synapse/issues/6280)) - Split out state storage into separate data store. ([\#6294](https://github.com/matrix-org/synapse/issues/6294), [\#6295](https://github.com/matrix-org/synapse/issues/6295)) - Refactor EventContext for clarity. ([\#6298](https://github.com/matrix-org/synapse/issues/6298)) - Update the version of black used to 19.10b0. ([\#6304](https://github.com/matrix-org/synapse/issues/6304)) - Add some documentation about worker replication. ([\#6305](https://github.com/matrix-org/synapse/issues/6305)) - Move admin endpoints into separate files. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#6308](https://github.com/matrix-org/synapse/issues/6308)) - Document the use of `lint.sh` for code style enforcement & extend it to run on specified paths only. ([\#6312](https://github.com/matrix-org/synapse/issues/6312)) - Add optional python dependencies and dependant binary libraries to snapcraft packaging. ([\#6317](https://github.com/matrix-org/synapse/issues/6317)) - Remove the dependency on psutil and replace functionality with the stdlib `resource` module. ([\#6318](https://github.com/matrix-org/synapse/issues/6318), [\#6336](https://github.com/matrix-org/synapse/issues/6336)) - Improve documentation for EventContext fields. ([\#6319](https://github.com/matrix-org/synapse/issues/6319)) - Add some checks that we aren't using state from rejected events. ([\#6330](https://github.com/matrix-org/synapse/issues/6330)) - Add continuous integration for python 3.8. ([\#6341](https://github.com/matrix-org/synapse/issues/6341)) - Correct spacing/case of various instances of the word "homeserver". ([\#6357](https://github.com/matrix-org/synapse/issues/6357)) - Temporarily blacklist the failing unit test PurgeRoomTestCase.test_purge_room. ([\#6361](https://github.com/matrix-org/synapse/issues/6361)) Synapse 1.5.1 (2019-11-06) ========================== Features -------- - Limit the length of data returned by url previews, to prevent DoS attacks. ([\#6331](https://github.com/matrix-org/synapse/issues/6331), [\#6334](https://github.com/matrix-org/synapse/issues/6334)) Synapse 1.5.0 (2019-10-29) ========================== Security updates ---------------- This release includes a security fix ([\#6262](https://github.com/matrix-org/synapse/issues/6262), below). Administrators are encouraged to upgrade as soon as possible. Bugfixes -------- - Fix bug where room directory search was case sensitive. ([\#6268](https://github.com/matrix-org/synapse/issues/6268)) Synapse 1.5.0rc2 (2019-10-28) ============================= Bugfixes -------- - Update list of boolean columns in `synapse_port_db`. ([\#6247](https://github.com/matrix-org/synapse/issues/6247)) - Fix /keys/query API on workers. ([\#6256](https://github.com/matrix-org/synapse/issues/6256)) - Improve signature checking on some federation APIs. ([\#6262](https://github.com/matrix-org/synapse/issues/6262)) Internal Changes ---------------- - Move schema delta files to the correct data store. ([\#6248](https://github.com/matrix-org/synapse/issues/6248)) - Small performance improvement by removing repeated config lookups in room stats calculation. ([\#6255](https://github.com/matrix-org/synapse/issues/6255)) Synapse 1.5.0rc1 (2019-10-24) ========================== Features -------- - Improve quality of thumbnails for 1-bit/8-bit color palette images. ([\#2142](https://github.com/matrix-org/synapse/issues/2142)) - Add ability to upload cross-signing signatures. ([\#5726](https://github.com/matrix-org/synapse/issues/5726)) - Allow uploading of cross-signing keys. ([\#5769](https://github.com/matrix-org/synapse/issues/5769)) - CAS login now provides a default display name for users if a `displayname_attribute` is set in the configuration file. ([\#6114](https://github.com/matrix-org/synapse/issues/6114)) - Reject all pending invites for a user during deactivation. ([\#6125](https://github.com/matrix-org/synapse/issues/6125)) - Add config option to suppress client side resource limit alerting. ([\#6173](https://github.com/matrix-org/synapse/issues/6173)) Bugfixes -------- - Return an HTTP 404 instead of 400 when requesting a filter by ID that is unknown to the server. Thanks to @krombel for contributing this! ([\#2380](https://github.com/matrix-org/synapse/issues/2380)) - Fix a bug where users could be invited twice to the same group. ([\#3436](https://github.com/matrix-org/synapse/issues/3436)) - Fix `/createRoom` failing with badly-formatted MXIDs in the invitee list. Thanks to @wener291! ([\#4088](https://github.com/matrix-org/synapse/issues/4088)) - Make the `synapse_port_db` script create the right indexes on a new PostgreSQL database. ([\#6102](https://github.com/matrix-org/synapse/issues/6102), [\#6178](https://github.com/matrix-org/synapse/issues/6178), [\#6243](https://github.com/matrix-org/synapse/issues/6243)) - Fix bug when uploading a large file: Synapse responds with `M_UNKNOWN` while it should be `M_TOO_LARGE` according to spec. Contributed by Anshul Angaria. ([\#6109](https://github.com/matrix-org/synapse/issues/6109)) - Fix user push rules being deleted from a room when it is upgraded. ([\#6144](https://github.com/matrix-org/synapse/issues/6144)) - Don't 500 when trying to exchange a revoked 3PID invite. ([\#6147](https://github.com/matrix-org/synapse/issues/6147)) - Fix transferring notifications and tags when joining an upgraded room that is new to your server. ([\#6155](https://github.com/matrix-org/synapse/issues/6155)) - Fix bug where guest account registration can wedge after restart. ([\#6161](https://github.com/matrix-org/synapse/issues/6161)) - Fix monthly active user reaping when reserved users are specified. ([\#6168](https://github.com/matrix-org/synapse/issues/6168)) - Fix `/federation/v1/state` endpoint not supporting newer room versions. ([\#6170](https://github.com/matrix-org/synapse/issues/6170)) - Fix bug where we were updating censored events as bytes rather than text, occaisonally causing invalid JSON being inserted breaking APIs that attempted to fetch such events. ([\#6186](https://github.com/matrix-org/synapse/issues/6186)) - Fix occasional missed updates in the room and user directories. ([\#6187](https://github.com/matrix-org/synapse/issues/6187)) - Fix tracing of non-JSON APIs, `/media`, `/key` etc. ([\#6195](https://github.com/matrix-org/synapse/issues/6195)) - Fix bug where presence would not get timed out correctly if a synchrotron worker is used and restarted. ([\#6212](https://github.com/matrix-org/synapse/issues/6212)) - synapse_port_db: Add 2 additional BOOLEAN_COLUMNS to be able to convert from database schema v56. ([\#6216](https://github.com/matrix-org/synapse/issues/6216)) - Fix a bug where the Synapse demo script blacklisted `::1` (ipv6 localhost) from receiving federation traffic. ([\#6229](https://github.com/matrix-org/synapse/issues/6229)) Updates to the Docker image --------------------------- - Fix logging getting lost for the docker image. ([\#6197](https://github.com/matrix-org/synapse/issues/6197)) Internal Changes ---------------- - Update `user_filters` table to have a unique index, and non-null columns. Thanks to @pik for contributing this. ([\#1172](https://github.com/matrix-org/synapse/issues/1172), [\#6175](https://github.com/matrix-org/synapse/issues/6175), [\#6184](https://github.com/matrix-org/synapse/issues/6184)) - Allow devices to be marked as hidden, for use by features such as cross-signing. This adds a new field with a default value to the devices field in the database, and so the database upgrade may take a long time depending on how many devices are in the database. ([\#5759](https://github.com/matrix-org/synapse/issues/5759)) - Move lookup-related functions from RoomMemberHandler to IdentityHandler. ([\#5978](https://github.com/matrix-org/synapse/issues/5978)) - Improve performance of the public room list directory. ([\#6019](https://github.com/matrix-org/synapse/issues/6019), [\#6152](https://github.com/matrix-org/synapse/issues/6152), [\#6153](https://github.com/matrix-org/synapse/issues/6153), [\#6154](https://github.com/matrix-org/synapse/issues/6154)) - Edit header dicts docstrings in `SimpleHttpClient` to note that `str` or `bytes` can be passed as header keys. ([\#6077](https://github.com/matrix-org/synapse/issues/6077)) - Add snapcraft packaging information. Contributed by @devec0. ([\#6084](https://github.com/matrix-org/synapse/issues/6084), [\#6191](https://github.com/matrix-org/synapse/issues/6191)) - Kill off half-implemented password-reset via sms. ([\#6101](https://github.com/matrix-org/synapse/issues/6101)) - Remove `get_user_by_req` opentracing span and add some tags. ([\#6108](https://github.com/matrix-org/synapse/issues/6108)) - Drop some unused database tables. ([\#6115](https://github.com/matrix-org/synapse/issues/6115)) - Add env var to turn on tracking of log context changes. ([\#6127](https://github.com/matrix-org/synapse/issues/6127)) - Refactor configuration loading to allow better typechecking. ([\#6137](https://github.com/matrix-org/synapse/issues/6137)) - Log responder when responding to media request. ([\#6139](https://github.com/matrix-org/synapse/issues/6139)) - Improve performance of `find_next_generated_user_id` DB query. ([\#6148](https://github.com/matrix-org/synapse/issues/6148)) - Expand type-checking on modules imported by `synapse.config`. ([\#6150](https://github.com/matrix-org/synapse/issues/6150)) - Use Postgres ANY for selecting many values. ([\#6156](https://github.com/matrix-org/synapse/issues/6156)) - Add more caching to `_get_joined_users_from_context` DB query. ([\#6159](https://github.com/matrix-org/synapse/issues/6159)) - Add some metrics on the federation sender. ([\#6160](https://github.com/matrix-org/synapse/issues/6160)) - Add some logging to the rooms stats updates, to try to track down a flaky test. ([\#6167](https://github.com/matrix-org/synapse/issues/6167)) - Remove unused `timeout` parameter from `_get_public_room_list`. ([\#6179](https://github.com/matrix-org/synapse/issues/6179)) - Reject (accidental) attempts to insert bytes into postgres tables. ([\#6186](https://github.com/matrix-org/synapse/issues/6186)) - Make `version` optional in body of `PUT /room_keys/version/{version}`, since it's redundant. ([\#6189](https://github.com/matrix-org/synapse/issues/6189)) - Make storage layer responsible for adding device names to key, rather than the handler. ([\#6193](https://github.com/matrix-org/synapse/issues/6193)) - Port `synapse.rest.admin` module to use async/await. ([\#6196](https://github.com/matrix-org/synapse/issues/6196)) - Enforce that all boolean configuration values are lowercase in CI. ([\#6203](https://github.com/matrix-org/synapse/issues/6203)) - Remove some unused event-auth code. ([\#6214](https://github.com/matrix-org/synapse/issues/6214)) - Remove `Auth.check` method. ([\#6217](https://github.com/matrix-org/synapse/issues/6217)) - Remove `format_tap.py` script in favour of a perl reimplementation in Sytest's repo. ([\#6219](https://github.com/matrix-org/synapse/issues/6219)) - Refactor storage layer in preparation to support having multiple databases. ([\#6231](https://github.com/matrix-org/synapse/issues/6231)) - Remove some extra quotation marks across the codebase. ([\#6236](https://github.com/matrix-org/synapse/issues/6236)) Synapse 1.4.1 (2019-10-18) ========================== No changes since 1.4.1rc1. Synapse 1.4.1rc1 (2019-10-17) ============================= Bugfixes -------- - Fix bug where redacted events were sometimes incorrectly censored in the database, breaking APIs that attempted to fetch such events. ([\#6185](https://github.com/matrix-org/synapse/issues/6185), [5b0e9948](https://github.com/matrix-org/synapse/commit/5b0e9948eaae801643e594b5abc8ee4b10bd194e)) Synapse 1.4.0 (2019-10-03) ========================== Bugfixes -------- - Redact `client_secret` in server logs. ([\#6158](https://github.com/matrix-org/synapse/issues/6158)) Synapse 1.4.0rc2 (2019-10-02) ============================= Bugfixes -------- - Fix bug in background update that adds last seen information to the `devices` table, and improve its performance on Postgres. ([\#6135](https://github.com/matrix-org/synapse/issues/6135)) - Fix bad performance of censoring redactions background task. ([\#6141](https://github.com/matrix-org/synapse/issues/6141)) - Fix fetching censored redactions from DB, which caused APIs like initial sync to fail if it tried to include the censored redaction. ([\#6145](https://github.com/matrix-org/synapse/issues/6145)) - Fix exceptions when storing large retry intervals for down remote servers. ([\#6146](https://github.com/matrix-org/synapse/issues/6146)) Internal Changes ---------------- - Fix up sample config entry for `redaction_retention_period` option. ([\#6117](https://github.com/matrix-org/synapse/issues/6117)) Synapse 1.4.0rc1 (2019-09-26) ============================= Note that this release includes significant changes around 3pid verification. Administrators are reminded to review the [upgrade notes](docs/upgrade.md#upgrading-to-v140). Features -------- - Changes to 3pid verification: - Add the ability to send registration emails from the homeserver rather than delegating to an identity server. ([\#5835](https://github.com/matrix-org/synapse/issues/5835), [\#5940](https://github.com/matrix-org/synapse/issues/5940), [\#5993](https://github.com/matrix-org/synapse/issues/5993), [\#5994](https://github.com/matrix-org/synapse/issues/5994), [\#5868](https://github.com/matrix-org/synapse/issues/5868)) - Replace `trust_identity_server_for_password_resets` config option with `account_threepid_delegates`, and make the `id_server` parameteter optional on `*/requestToken` endpoints, as per [MSC2263](https://github.com/matrix-org/matrix-doc/pull/2263). ([\#5876](https://github.com/matrix-org/synapse/issues/5876), [\#5969](https://github.com/matrix-org/synapse/issues/5969), [\#6028](https://github.com/matrix-org/synapse/issues/6028)) - Switch to using the v2 Identity Service `/lookup` API where available, with fallback to v1. (Implements [MSC2134](https://github.com/matrix-org/matrix-doc/pull/2134) plus `id_access_token authentication` for v2 Identity Service APIs from [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140)). ([\#5897](https://github.com/matrix-org/synapse/issues/5897)) - Remove `bind_email` and `bind_msisdn` parameters from `/register` ala [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140). ([\#5964](https://github.com/matrix-org/synapse/issues/5964)) - Add `m.id_access_token` to `unstable_features` in `/versions` as per [MSC2264](https://github.com/matrix-org/matrix-doc/pull/2264). ([\#5974](https://github.com/matrix-org/synapse/issues/5974)) - Use the v2 Identity Service API for 3PID invites. ([\#5979](https://github.com/matrix-org/synapse/issues/5979)) - Add `POST /_matrix/client/unstable/account/3pid/unbind` endpoint from [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140) for unbinding a 3PID from an identity server without removing it from the homeserver user account. ([\#5980](https://github.com/matrix-org/synapse/issues/5980), [\#6062](https://github.com/matrix-org/synapse/issues/6062)) - Use `account_threepid_delegate.email` and `account_threepid_delegate.msisdn` for validating threepid sessions. ([\#6011](https://github.com/matrix-org/synapse/issues/6011)) - Allow homeserver to handle or delegate email validation when adding an email to a user's account. ([\#6042](https://github.com/matrix-org/synapse/issues/6042)) - Implement new Client Server API endpoints `/account/3pid/add` and `/account/3pid/bind` as per [MSC2290](https://github.com/matrix-org/matrix-doc/pull/2290). ([\#6043](https://github.com/matrix-org/synapse/issues/6043)) - Add an unstable feature flag for separate add/bind 3pid APIs. ([\#6044](https://github.com/matrix-org/synapse/issues/6044)) - Remove `bind` parameter from Client Server POST `/account` endpoint as per [MSC2290](https://github.com/matrix-org/matrix-doc/pull/2290/). ([\#6067](https://github.com/matrix-org/synapse/issues/6067)) - Add `POST /add_threepid/msisdn/submit_token` endpoint for proxying submitToken on an `account_threepid_handler`. ([\#6078](https://github.com/matrix-org/synapse/issues/6078)) - Add `submit_url` response parameter to `*/msisdn/requestToken` endpoints. ([\#6079](https://github.com/matrix-org/synapse/issues/6079)) - Add `m.require_identity_server` flag to /version's unstable_features. ([\#5972](https://github.com/matrix-org/synapse/issues/5972)) - Enhancements to OpenTracing support: - Make OpenTracing work in worker mode. ([\#5771](https://github.com/matrix-org/synapse/issues/5771)) - Pass OpenTracing contexts between servers when transmitting EDUs. ([\#5852](https://github.com/matrix-org/synapse/issues/5852)) - OpenTracing for device list updates. ([\#5853](https://github.com/matrix-org/synapse/issues/5853)) - Add a tag recording a request's authenticated entity and corresponding servlet in OpenTracing. ([\#5856](https://github.com/matrix-org/synapse/issues/5856)) - Add minimum OpenTracing for client servlets. ([\#5983](https://github.com/matrix-org/synapse/issues/5983)) - Check at setup that OpenTracing is installed if it's enabled in the config. ([\#5985](https://github.com/matrix-org/synapse/issues/5985)) - Trace replication send times. ([\#5986](https://github.com/matrix-org/synapse/issues/5986)) - Include missing OpenTracing contexts in outbout replication requests. ([\#5982](https://github.com/matrix-org/synapse/issues/5982)) - Fix sending of EDUs when OpenTracing is enabled with an empty whitelist. ([\#5984](https://github.com/matrix-org/synapse/issues/5984)) - Fix invalid references to None while OpenTracing if the log context slips. ([\#5988](https://github.com/matrix-org/synapse/issues/5988), [\#5991](https://github.com/matrix-org/synapse/issues/5991)) - OpenTracing for room and e2e keys. ([\#5855](https://github.com/matrix-org/synapse/issues/5855)) - Add OpenTracing span over HTTP push processing. ([\#6003](https://github.com/matrix-org/synapse/issues/6003)) - Add an admin API to purge old rooms from the database. ([\#5845](https://github.com/matrix-org/synapse/issues/5845)) - Retry well-known lookups if we have recently seen a valid well-known record for the server. ([\#5850](https://github.com/matrix-org/synapse/issues/5850)) - Add support for filtered room-directory search requests over federation ([MSC2197](https://github.com/matrix-org/matrix-doc/pull/2197), in order to allow upcoming room directory query performance improvements. ([\#5859](https://github.com/matrix-org/synapse/issues/5859)) - Correctly retry all hosts returned from SRV when we fail to connect. ([\#5864](https://github.com/matrix-org/synapse/issues/5864)) - Add admin API endpoint for setting whether or not a user is a server administrator. ([\#5878](https://github.com/matrix-org/synapse/issues/5878)) - Enable cleaning up extremities with dummy events by default to prevent undue build up of forward extremities. ([\#5884](https://github.com/matrix-org/synapse/issues/5884)) - Add config option to sign remote key query responses with a separate key. ([\#5895](https://github.com/matrix-org/synapse/issues/5895)) - Add support for config templating. ([\#5900](https://github.com/matrix-org/synapse/issues/5900)) - Users with the type of "support" or "bot" are no longer required to consent. ([\#5902](https://github.com/matrix-org/synapse/issues/5902)) - Let synctl accept a directory of config files. ([\#5904](https://github.com/matrix-org/synapse/issues/5904)) - Increase max display name size to 256. ([\#5906](https://github.com/matrix-org/synapse/issues/5906)) - Add admin API endpoint for getting whether or not a user is a server administrator. ([\#5914](https://github.com/matrix-org/synapse/issues/5914)) - Redact events in the database that have been redacted for a week. ([\#5934](https://github.com/matrix-org/synapse/issues/5934)) - New prometheus metrics: - `synapse_federation_known_servers`: represents the total number of servers your server knows about (i.e. is in rooms with), including itself. Enable by setting `metrics_flags.known_servers` to True in the configuration.([\#5981](https://github.com/matrix-org/synapse/issues/5981)) - `synapse_build_info`: exposes the Python version, OS version, and Synapse version of the running server. ([\#6005](https://github.com/matrix-org/synapse/issues/6005)) - Give appropriate exit codes when synctl fails. ([\#5992](https://github.com/matrix-org/synapse/issues/5992)) - Apply the federation blacklist to requests to identity servers. ([\#6000](https://github.com/matrix-org/synapse/issues/6000)) - Add `report_stats_endpoint` option to configure where stats are reported to, if enabled. Contributed by @Sorunome. ([\#6012](https://github.com/matrix-org/synapse/issues/6012)) - Add config option to increase ratelimits for room admins redacting messages. ([\#6015](https://github.com/matrix-org/synapse/issues/6015)) - Stop sending federation transactions to servers which have been down for a long time. ([\#6026](https://github.com/matrix-org/synapse/issues/6026)) - Make the process for mapping SAML2 users to matrix IDs more flexible. ([\#6037](https://github.com/matrix-org/synapse/issues/6037)) - Return a clearer error message when a timeout occurs when attempting to contact an identity server. ([\#6073](https://github.com/matrix-org/synapse/issues/6073)) - Prevent password reset's submit_token endpoint from accepting trailing slashes. ([\#6074](https://github.com/matrix-org/synapse/issues/6074)) - Return 403 on `/register/available` if registration has been disabled. ([\#6082](https://github.com/matrix-org/synapse/issues/6082)) - Explicitly log when a homeserver does not have the `trusted_key_servers` config field configured. ([\#6090](https://github.com/matrix-org/synapse/issues/6090)) - Add support for pruning old rows in `user_ips` table. ([\#6098](https://github.com/matrix-org/synapse/issues/6098)) Bugfixes -------- - Don't create broken room when `power_level_content_override.users` does not contain `creator_id`. ([\#5633](https://github.com/matrix-org/synapse/issues/5633)) - Fix database index so that different backup versions can have the same sessions. ([\#5857](https://github.com/matrix-org/synapse/issues/5857)) - Fix Synapse looking for config options `password_reset_failure_template` and `password_reset_success_template`, when they are actually `password_reset_template_failure_html`, `password_reset_template_success_html`. ([\#5863](https://github.com/matrix-org/synapse/issues/5863)) - Fix stack overflow when recovering an appservice which had an outage. ([\#5885](https://github.com/matrix-org/synapse/issues/5885)) - Fix error message which referred to `public_base_url` instead of `public_baseurl`. Thanks to @aaronraimist for the fix! ([\#5909](https://github.com/matrix-org/synapse/issues/5909)) - Fix 404 for thumbnail download when `dynamic_thumbnails` is `false` and the thumbnail was dynamically generated. Fix reported by rkfg. ([\#5915](https://github.com/matrix-org/synapse/issues/5915)) - Fix a cache-invalidation bug for worker-based deployments. ([\#5920](https://github.com/matrix-org/synapse/issues/5920)) - Fix admin API for listing media in a room not being available with an external media repo. ([\#5966](https://github.com/matrix-org/synapse/issues/5966)) - Fix list media admin API always returning an error. ([\#5967](https://github.com/matrix-org/synapse/issues/5967)) - Fix room and user stats tracking. ([\#5971](https://github.com/matrix-org/synapse/issues/5971), [\#5998](https://github.com/matrix-org/synapse/issues/5998), [\#6029](https://github.com/matrix-org/synapse/issues/6029)) - Return a `M_MISSING_PARAM` if `sid` is not provided to `/account/3pid`. ([\#5995](https://github.com/matrix-org/synapse/issues/5995)) - `federation_certificate_verification_whitelist` now will not cause `TypeErrors` to be raised (a regression in 1.3). Additionally, it now supports internationalised domain names in their non-canonical representation. ([\#5996](https://github.com/matrix-org/synapse/issues/5996)) - Only count real users when checking for auto-creation of auto-join room. ([\#6004](https://github.com/matrix-org/synapse/issues/6004)) - Ensure support users can be registered even if MAU limit is reached. ([\#6020](https://github.com/matrix-org/synapse/issues/6020)) - Fix bug where login error was shown incorrectly on SSO fallback login. ([\#6024](https://github.com/matrix-org/synapse/issues/6024)) - Fix bug in calculating the federation retry backoff period. ([\#6025](https://github.com/matrix-org/synapse/issues/6025)) - Prevent exceptions being logged when extremity-cleanup events fail due to lack of user consent to the terms of service. ([\#6053](https://github.com/matrix-org/synapse/issues/6053)) - Remove POST method from password-reset `submit_token` endpoint until we implement `submit_url` functionality. ([\#6056](https://github.com/matrix-org/synapse/issues/6056)) - Fix logcontext spam on non-Linux platforms. ([\#6059](https://github.com/matrix-org/synapse/issues/6059)) - Ensure query parameters in email validation links are URL-encoded. ([\#6063](https://github.com/matrix-org/synapse/issues/6063)) - Fix a bug which caused SAML attribute maps to be overridden by defaults. ([\#6069](https://github.com/matrix-org/synapse/issues/6069)) - Fix the logged number of updated items for the `users_set_deactivated_flag` background update. ([\#6092](https://github.com/matrix-org/synapse/issues/6092)) - Add `sid` to `next_link` for email validation. ([\#6097](https://github.com/matrix-org/synapse/issues/6097)) - Threepid validity checks on msisdns should not be dependent on `threepid_behaviour_email`. ([\#6104](https://github.com/matrix-org/synapse/issues/6104)) - Ensure that servers which are not configured to support email address verification do not offer it in the registration flows. ([\#6107](https://github.com/matrix-org/synapse/issues/6107)) Updates to the Docker image --------------------------- - Avoid changing `UID/GID` if they are already correct. ([\#5970](https://github.com/matrix-org/synapse/issues/5970)) - Provide `SYNAPSE_WORKER` envvar to specify python module. ([\#6058](https://github.com/matrix-org/synapse/issues/6058)) Improved Documentation ---------------------- - Convert documentation to markdown (from rst) ([\#5849](https://github.com/matrix-org/synapse/issues/5849)) - Update `INSTALL.md` to say that Python 2 is no longer supported. ([\#5953](https://github.com/matrix-org/synapse/issues/5953)) - Add developer documentation for using SAML2. ([\#6032](https://github.com/matrix-org/synapse/issues/6032)) - Add some notes on rolling back to v1.3.1. ([\#6049](https://github.com/matrix-org/synapse/issues/6049)) - Update the upgrade notes. ([\#6050](https://github.com/matrix-org/synapse/issues/6050)) Deprecations and Removals ------------------------- - Remove shared-secret registration from `/_matrix/client/r0/register` endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5877](https://github.com/matrix-org/synapse/issues/5877)) - Deprecate the `trusted_third_party_id_servers` option. ([\#5875](https://github.com/matrix-org/synapse/issues/5875)) Internal Changes ---------------- - Lay the groundwork for structured logging output. ([\#5680](https://github.com/matrix-org/synapse/issues/5680)) - Retry well-known lookup before the cache expires, giving a grace period where the remote well-known can be down but we still use the old result. ([\#5844](https://github.com/matrix-org/synapse/issues/5844)) - Remove log line for debugging issue #5407. ([\#5860](https://github.com/matrix-org/synapse/issues/5860)) - Refactor the Appservice scheduler code. ([\#5886](https://github.com/matrix-org/synapse/issues/5886)) - Compatibility with v2 Identity Service APIs other than /lookup. ([\#5892](https://github.com/matrix-org/synapse/issues/5892), [\#6013](https://github.com/matrix-org/synapse/issues/6013)) - Stop populating some unused tables. ([\#5893](https://github.com/matrix-org/synapse/issues/5893), [\#6047](https://github.com/matrix-org/synapse/issues/6047)) - Add missing index on `users_in_public_rooms` to improve the performance of directory queries. ([\#5894](https://github.com/matrix-org/synapse/issues/5894)) - Improve the logging when we have an error when fetching signing keys. ([\#5896](https://github.com/matrix-org/synapse/issues/5896)) - Add support for database engine-specific schema deltas, based on file extension. ([\#5911](https://github.com/matrix-org/synapse/issues/5911)) - Update Buildkite pipeline to use plugins instead of buildkite-agent commands. ([\#5922](https://github.com/matrix-org/synapse/issues/5922)) - Add link in sample config to the logging config schema. ([\#5926](https://github.com/matrix-org/synapse/issues/5926)) - Remove unnecessary parentheses in return statements. ([\#5931](https://github.com/matrix-org/synapse/issues/5931)) - Remove unused `jenkins/prepare_sytest.sh` file. ([\#5938](https://github.com/matrix-org/synapse/issues/5938)) - Move Buildkite pipeline config to the pipelines repo. ([\#5943](https://github.com/matrix-org/synapse/issues/5943)) - Remove unnecessary return statements in the codebase which were the result of a regex run. ([\#5962](https://github.com/matrix-org/synapse/issues/5962)) - Remove left-over methods from v1 registration API. ([\#5963](https://github.com/matrix-org/synapse/issues/5963)) - Cleanup event auth type initialisation. ([\#5975](https://github.com/matrix-org/synapse/issues/5975)) - Clean up dependency checking at setup. ([\#5989](https://github.com/matrix-org/synapse/issues/5989)) - Update OpenTracing docs to use the unified `trace` method. ([\#5776](https://github.com/matrix-org/synapse/issues/5776)) - Small refactor of function arguments and docstrings in` RoomMemberHandler`. ([\#6009](https://github.com/matrix-org/synapse/issues/6009)) - Remove unused `origin` argument on `FederationHandler.add_display_name_to_third_party_invite`. ([\#6010](https://github.com/matrix-org/synapse/issues/6010)) - Add a `failure_ts` column to the `destinations` database table. ([\#6016](https://github.com/matrix-org/synapse/issues/6016), [\#6072](https://github.com/matrix-org/synapse/issues/6072)) - Clean up some code in the retry logic. ([\#6017](https://github.com/matrix-org/synapse/issues/6017)) - Fix the structured logging tests stomping on the global log configuration for subsequent tests. ([\#6023](https://github.com/matrix-org/synapse/issues/6023)) - Clean up the sample config for SAML authentication. ([\#6064](https://github.com/matrix-org/synapse/issues/6064)) - Change mailer logging to reflect Synapse doesn't just do chat notifications by email now. ([\#6075](https://github.com/matrix-org/synapse/issues/6075)) - Move last-seen info into devices table. ([\#6089](https://github.com/matrix-org/synapse/issues/6089)) - Remove unused parameter to `get_user_id_by_threepid`. ([\#6099](https://github.com/matrix-org/synapse/issues/6099)) - Refactor the user-interactive auth handling. ([\#6105](https://github.com/matrix-org/synapse/issues/6105)) - Refactor code for calculating registration flows. ([\#6106](https://github.com/matrix-org/synapse/issues/6106)) Synapse 1.3.1 (2019-08-17) ========================== Features -------- - Drop hard dependency on `sdnotify` python package. ([\#5871](https://github.com/matrix-org/synapse/issues/5871)) Bugfixes -------- - Fix startup issue (hang on ACME provisioning) due to ordering of Twisted reactor startup. Thanks to @chrismoos for supplying the fix. ([\#5867](https://github.com/matrix-org/synapse/issues/5867)) Synapse 1.3.0 (2019-08-15) ========================== Bugfixes -------- - Fix 500 Internal Server Error on `publicRooms` when the public room list was cached. ([\#5851](https://github.com/matrix-org/synapse/issues/5851)) Synapse 1.3.0rc1 (2019-08-13) ========================== Features -------- - Use `M_USER_DEACTIVATED` instead of `M_UNKNOWN` for errcode when a deactivated user attempts to login. ([\#5686](https://github.com/matrix-org/synapse/issues/5686)) - Add sd_notify hooks to ease systemd integration and allows usage of Type=Notify. ([\#5732](https://github.com/matrix-org/synapse/issues/5732)) - Synapse will no longer serve any media repo admin endpoints when `enable_media_repo` is set to False in the configuration. If a media repo worker is used, the admin APIs relating to the media repo will be served from it instead. ([\#5754](https://github.com/matrix-org/synapse/issues/5754), [\#5848](https://github.com/matrix-org/synapse/issues/5848)) - Synapse can now be configured to not join remote rooms of a given "complexity" (currently, state events) over federation. This option can be used to prevent adverse performance on resource-constrained homeservers. ([\#5783](https://github.com/matrix-org/synapse/issues/5783)) - Allow defining HTML templates to serve the user on account renewal attempt when using the account validity feature. ([\#5807](https://github.com/matrix-org/synapse/issues/5807)) Bugfixes -------- - Fix UISIs during homeserver outage. ([\#5693](https://github.com/matrix-org/synapse/issues/5693), [\#5789](https://github.com/matrix-org/synapse/issues/5789)) - Fix stack overflow in server key lookup code. ([\#5724](https://github.com/matrix-org/synapse/issues/5724)) - start.sh no longer uses deprecated cli option. ([\#5725](https://github.com/matrix-org/synapse/issues/5725)) - Log when we receive an event receipt from an unexpected origin. ([\#5743](https://github.com/matrix-org/synapse/issues/5743)) - Fix debian packaging scripts to correctly build sid packages. ([\#5775](https://github.com/matrix-org/synapse/issues/5775)) - Correctly handle redactions of redactions. ([\#5788](https://github.com/matrix-org/synapse/issues/5788)) - Return 404 instead of 403 when accessing /rooms/{roomId}/event/{eventId} for an event without the appropriate permissions. ([\#5798](https://github.com/matrix-org/synapse/issues/5798)) - Fix check that tombstone is a state event in push rules. ([\#5804](https://github.com/matrix-org/synapse/issues/5804)) - Fix error when trying to login as a deactivated user when using a worker to handle login. ([\#5806](https://github.com/matrix-org/synapse/issues/5806)) - Fix bug where user `/sync` stream could get wedged in rare circumstances. ([\#5825](https://github.com/matrix-org/synapse/issues/5825)) - The purge_remote_media.sh script was fixed. ([\#5839](https://github.com/matrix-org/synapse/issues/5839)) Deprecations and Removals ------------------------- - Synapse now no longer accepts the `-v`/`--verbose`, `-f`/`--log-file`, or `--log-config` command line flags, and removes the deprecated `verbose` and `log_file` configuration file options. Users of these options should migrate their options into the dedicated log configuration. ([\#5678](https://github.com/matrix-org/synapse/issues/5678), [\#5729](https://github.com/matrix-org/synapse/issues/5729)) - Remove non-functional 'expire_access_token' setting. ([\#5782](https://github.com/matrix-org/synapse/issues/5782)) Internal Changes ---------------- - Make Jaeger fully configurable. ([\#5694](https://github.com/matrix-org/synapse/issues/5694)) - Add precautionary measures to prevent future abuse of `window.opener` in default welcome page. ([\#5695](https://github.com/matrix-org/synapse/issues/5695)) - Reduce database IO usage by optimising queries for current membership. ([\#5706](https://github.com/matrix-org/synapse/issues/5706), [\#5738](https://github.com/matrix-org/synapse/issues/5738), [\#5746](https://github.com/matrix-org/synapse/issues/5746), [\#5752](https://github.com/matrix-org/synapse/issues/5752), [\#5770](https://github.com/matrix-org/synapse/issues/5770), [\#5774](https://github.com/matrix-org/synapse/issues/5774), [\#5792](https://github.com/matrix-org/synapse/issues/5792), [\#5793](https://github.com/matrix-org/synapse/issues/5793)) - Improve caching when fetching `get_filtered_current_state_ids`. ([\#5713](https://github.com/matrix-org/synapse/issues/5713)) - Don't accept opentracing data from clients. ([\#5715](https://github.com/matrix-org/synapse/issues/5715)) - Speed up PostgreSQL unit tests in CI. ([\#5717](https://github.com/matrix-org/synapse/issues/5717)) - Update the coding style document. ([\#5719](https://github.com/matrix-org/synapse/issues/5719)) - Improve database query performance when recording retry intervals for remote hosts. ([\#5720](https://github.com/matrix-org/synapse/issues/5720)) - Add a set of opentracing utils. ([\#5722](https://github.com/matrix-org/synapse/issues/5722)) - Cache result of get_version_string to reduce overhead of `/version` federation requests. ([\#5730](https://github.com/matrix-org/synapse/issues/5730)) - Return 'user_type' in admin API user endpoints results. ([\#5731](https://github.com/matrix-org/synapse/issues/5731)) - Don't package the sytest test blacklist file. ([\#5733](https://github.com/matrix-org/synapse/issues/5733)) - Replace uses of returnValue with plain return, as returnValue is not needed on Python 3. ([\#5736](https://github.com/matrix-org/synapse/issues/5736)) - Blacklist some flakey tests in worker mode. ([\#5740](https://github.com/matrix-org/synapse/issues/5740)) - Fix some error cases in the caching layer. ([\#5749](https://github.com/matrix-org/synapse/issues/5749)) - Add a prometheus metric for pending cache lookups. ([\#5750](https://github.com/matrix-org/synapse/issues/5750)) - Stop trying to fetch events with event_id=None. ([\#5753](https://github.com/matrix-org/synapse/issues/5753)) - Convert RedactionTestCase to modern test style. ([\#5768](https://github.com/matrix-org/synapse/issues/5768)) - Allow looping calls to be given arguments. ([\#5780](https://github.com/matrix-org/synapse/issues/5780)) - Set the logs emitted when checking typing and presence timeouts to DEBUG level, not INFO. ([\#5785](https://github.com/matrix-org/synapse/issues/5785)) - Remove DelayedCall debugging from the test suite, as it is no longer required in the vast majority of Synapse's tests. ([\#5787](https://github.com/matrix-org/synapse/issues/5787)) - Remove some spurious exceptions from the logs where we failed to talk to a remote server. ([\#5790](https://github.com/matrix-org/synapse/issues/5790)) - Improve performance when making `.well-known` requests by sharing the SSL options between requests. ([\#5794](https://github.com/matrix-org/synapse/issues/5794)) - Disable codecov GitHub comments on PRs. ([\#5796](https://github.com/matrix-org/synapse/issues/5796)) - Don't allow clients to send tombstone events that reference the room it's sent in. ([\#5801](https://github.com/matrix-org/synapse/issues/5801)) - Deny redactions of events sent in a different room. ([\#5802](https://github.com/matrix-org/synapse/issues/5802)) - Deny sending well known state types as non-state events. ([\#5805](https://github.com/matrix-org/synapse/issues/5805)) - Handle incorrectly encoded query params correctly by returning a 400. ([\#5808](https://github.com/matrix-org/synapse/issues/5808)) - Handle pusher being deleted during processing rather than logging an exception. ([\#5809](https://github.com/matrix-org/synapse/issues/5809)) - Return 502 not 500 when failing to reach any remote server. ([\#5810](https://github.com/matrix-org/synapse/issues/5810)) - Reduce global pauses in the events stream caused by expensive state resolution during persistence. ([\#5826](https://github.com/matrix-org/synapse/issues/5826)) - Add a lower bound to well-known lookup cache time to avoid repeated lookups. ([\#5836](https://github.com/matrix-org/synapse/issues/5836)) - Whitelist history visbility sytests in worker mode tests. ([\#5843](https://github.com/matrix-org/synapse/issues/5843)) Synapse 1.2.1 (2019-07-26) ========================== Security update --------------- This release includes *four* security fixes: - Prevent an attack where a federated server could send redactions for arbitrary events in v1 and v2 rooms. ([\#5767](https://github.com/matrix-org/synapse/issues/5767)) - Prevent a denial-of-service attack where cycles of redaction events would make Synapse spin infinitely. Thanks to `@lrizika:matrix.org` for identifying and responsibly disclosing this issue. ([0f2ecb961](https://github.com/matrix-org/synapse/commit/0f2ecb961)) - Prevent an attack where users could be joined or parted from public rooms without their consent. Thanks to @dylangerdaly for identifying and responsibly disclosing this issue. ([\#5744](https://github.com/matrix-org/synapse/issues/5744)) - Fix a vulnerability where a federated server could spoof read-receipts from users on other servers. Thanks to @dylangerdaly for identifying this issue too. ([\#5743](https://github.com/matrix-org/synapse/issues/5743)) Additionally, the following fix was in Synapse **1.2.0**, but was not correctly identified during the original release: - It was possible for a room moderator to send a redaction for an `m.room.create` event, which would downgrade the room to version 1. Thanks to `/dev/ponies` for identifying and responsibly disclosing this issue! ([\#5701](https://github.com/matrix-org/synapse/issues/5701)) Synapse 1.2.0 (2019-07-25) ========================== No significant changes. Synapse 1.2.0rc2 (2019-07-24) ============================= Bugfixes -------- - Fix a regression introduced in v1.2.0rc1 which led to incorrect labels on some prometheus metrics. ([\#5734](https://github.com/matrix-org/synapse/issues/5734)) Synapse 1.2.0rc1 (2019-07-22) ============================= Security fixes -------------- This update included a security fix which was initially incorrectly flagged as a regular bug fix. - It was possible for a room moderator to send a redaction for an `m.room.create` event, which would downgrade the room to version 1. Thanks to `/dev/ponies` for identifying and responsibly disclosing this issue! ([\#5701](https://github.com/matrix-org/synapse/issues/5701)) Features -------- - Add support for opentracing. ([\#5544](https://github.com/matrix-org/synapse/issues/5544), [\#5712](https://github.com/matrix-org/synapse/issues/5712)) - Add ability to pull all locally stored events out of synapse that a particular user can see. ([\#5589](https://github.com/matrix-org/synapse/issues/5589)) - Add a basic admin command app to allow server operators to run Synapse admin commands separately from the main production instance. ([\#5597](https://github.com/matrix-org/synapse/issues/5597)) - Add `sender` and `origin_server_ts` fields to `m.replace`. ([\#5613](https://github.com/matrix-org/synapse/issues/5613)) - Add default push rule to ignore reactions. ([\#5623](https://github.com/matrix-org/synapse/issues/5623)) - Include the original event when asking for its relations. ([\#5626](https://github.com/matrix-org/synapse/issues/5626)) - Implement `session_lifetime` configuration option, after which access tokens will expire. ([\#5660](https://github.com/matrix-org/synapse/issues/5660)) - Return "This account has been deactivated" when a deactivated user tries to login. ([\#5674](https://github.com/matrix-org/synapse/issues/5674)) - Enable aggregations support by default ([\#5714](https://github.com/matrix-org/synapse/issues/5714)) Bugfixes -------- - Fix 'utime went backwards' errors on daemonization. ([\#5609](https://github.com/matrix-org/synapse/issues/5609)) - Various minor fixes to the federation request rate limiter. ([\#5621](https://github.com/matrix-org/synapse/issues/5621)) - Forbid viewing relations on an event once it has been redacted. ([\#5629](https://github.com/matrix-org/synapse/issues/5629)) - Fix requests to the `/store_invite` endpoint of identity servers being sent in the wrong format. ([\#5638](https://github.com/matrix-org/synapse/issues/5638)) - Fix newly-registered users not being able to lookup their own profile without joining a room. ([\#5644](https://github.com/matrix-org/synapse/issues/5644)) - Fix bug in #5626 that prevented the original_event field from actually having the contents of the original event in a call to `/relations`. ([\#5654](https://github.com/matrix-org/synapse/issues/5654)) - Fix 3PID bind requests being sent to identity servers as `application/x-form-www-urlencoded` data, which is deprecated. ([\#5658](https://github.com/matrix-org/synapse/issues/5658)) - Fix some problems with authenticating redactions in recent room versions. ([\#5699](https://github.com/matrix-org/synapse/issues/5699), [\#5700](https://github.com/matrix-org/synapse/issues/5700), [\#5707](https://github.com/matrix-org/synapse/issues/5707)) Updates to the Docker image --------------------------- - Base Docker image on a newer Alpine Linux version (3.8 -> 3.10). ([\#5619](https://github.com/matrix-org/synapse/issues/5619)) - Add missing space in default logging file format generated by the Docker image. ([\#5620](https://github.com/matrix-org/synapse/issues/5620)) Improved Documentation ---------------------- - Add information about nginx normalisation to reverse_proxy.rst. Contributed by @skalarproduktraum - thanks! ([\#5397](https://github.com/matrix-org/synapse/issues/5397)) - --no-pep517 should be --no-use-pep517 in the documentation to setup the development environment. ([\#5651](https://github.com/matrix-org/synapse/issues/5651)) - Improvements to Postgres setup instructions. Contributed by @Lrizika - thanks! ([\#5661](https://github.com/matrix-org/synapse/issues/5661)) - Minor tweaks to postgres documentation. ([\#5675](https://github.com/matrix-org/synapse/issues/5675)) Deprecations and Removals ------------------------- - Remove support for the `invite_3pid_guest` configuration setting. ([\#5625](https://github.com/matrix-org/synapse/issues/5625)) Internal Changes ---------------- - Move logging code out of `synapse.util` and into `synapse.logging`. ([\#5606](https://github.com/matrix-org/synapse/issues/5606), [\#5617](https://github.com/matrix-org/synapse/issues/5617)) - Add a blacklist file to the repo to blacklist certain sytests from failing CI. ([\#5611](https://github.com/matrix-org/synapse/issues/5611)) - Make runtime errors surrounding password reset emails much clearer. ([\#5616](https://github.com/matrix-org/synapse/issues/5616)) - Remove dead code for persiting outgoing federation transactions. ([\#5622](https://github.com/matrix-org/synapse/issues/5622)) - Add `lint.sh` to the scripts-dev folder which will run all linting steps required by CI. ([\#5627](https://github.com/matrix-org/synapse/issues/5627)) - Move RegistrationHandler.get_or_create_user to test code. ([\#5628](https://github.com/matrix-org/synapse/issues/5628)) - Add some more common python virtual-environment paths to the black exclusion list. ([\#5630](https://github.com/matrix-org/synapse/issues/5630)) - Some counter metrics exposed over Prometheus have been renamed, with the old names preserved for backwards compatibility and deprecated. See `docs/metrics-howto.rst` for details. ([\#5636](https://github.com/matrix-org/synapse/issues/5636)) - Unblacklist some user_directory sytests. ([\#5637](https://github.com/matrix-org/synapse/issues/5637)) - Factor out some redundant code in the login implementation. ([\#5639](https://github.com/matrix-org/synapse/issues/5639)) - Update ModuleApi to avoid register(generate_token=True). ([\#5640](https://github.com/matrix-org/synapse/issues/5640)) - Remove access-token support from `RegistrationHandler.register`, and rename it. ([\#5641](https://github.com/matrix-org/synapse/issues/5641)) - Remove access-token support from `RegistrationStore.register`, and rename it. ([\#5642](https://github.com/matrix-org/synapse/issues/5642)) - Improve logging for auto-join when a new user is created. ([\#5643](https://github.com/matrix-org/synapse/issues/5643)) - Remove unused and unnecessary check for FederationDeniedError in _exception_to_failure. ([\#5645](https://github.com/matrix-org/synapse/issues/5645)) - Fix a small typo in a code comment. ([\#5655](https://github.com/matrix-org/synapse/issues/5655)) - Clean up exception handling around client access tokens. ([\#5656](https://github.com/matrix-org/synapse/issues/5656)) - Add a mechanism for per-test homeserver configuration in the unit tests. ([\#5657](https://github.com/matrix-org/synapse/issues/5657)) - Inline issue_access_token. ([\#5659](https://github.com/matrix-org/synapse/issues/5659)) - Update the sytest BuildKite configuration to checkout Synapse in `/src`. ([\#5664](https://github.com/matrix-org/synapse/issues/5664)) - Add a `docker` type to the towncrier configuration. ([\#5673](https://github.com/matrix-org/synapse/issues/5673)) - Convert `synapse.federation.transport.server` to `async`. Might improve some stack traces. ([\#5689](https://github.com/matrix-org/synapse/issues/5689)) - Documentation for opentracing. ([\#5703](https://github.com/matrix-org/synapse/issues/5703)) Synapse 1.1.0 (2019-07-04) ========================== As of v1.1.0, Synapse no longer supports Python 2, nor Postgres version 9.4. See the [upgrade notes](docs/upgrade.md#upgrading-to-v110) for more details. This release also deprecates the use of environment variables to configure the docker image. See the [docker README](https://github.com/matrix-org/synapse/blob/release-v1.1.0/docker/README.md#legacy-dynamic-configuration-file-support) for more details. No changes since 1.1.0rc2. Synapse 1.1.0rc2 (2019-07-03) ============================= Bugfixes -------- - Fix regression in 1.1rc1 where OPTIONS requests to the media repo would fail. ([\#5593](https://github.com/matrix-org/synapse/issues/5593)) - Removed the `SYNAPSE_SMTP_*` docker container environment variables. Using these environment variables prevented the docker container from starting in Synapse v1.0, even though they didn't actually allow any functionality anyway. ([\#5596](https://github.com/matrix-org/synapse/issues/5596)) - Fix a number of "Starting txn from sentinel context" warnings. ([\#5605](https://github.com/matrix-org/synapse/issues/5605)) Internal Changes ---------------- - Update github templates. ([\#5552](https://github.com/matrix-org/synapse/issues/5552)) Synapse 1.1.0rc1 (2019-07-02) ============================= As of v1.1.0, Synapse no longer supports Python 2, nor Postgres version 9.4. See the [upgrade notes](docs/upgrade.md#upgrading-to-v110) for more details. Features -------- - Added possibilty to disable local password authentication. Contributed by Daniel Hoffend. ([\#5092](https://github.com/matrix-org/synapse/issues/5092)) - Add monthly active users to phonehome stats. ([\#5252](https://github.com/matrix-org/synapse/issues/5252)) - Allow expired user to trigger renewal email sending manually. ([\#5363](https://github.com/matrix-org/synapse/issues/5363)) - Statistics on forward extremities per room are now exposed via Prometheus. ([\#5384](https://github.com/matrix-org/synapse/issues/5384), [\#5458](https://github.com/matrix-org/synapse/issues/5458), [\#5461](https://github.com/matrix-org/synapse/issues/5461)) - Add --no-daemonize option to run synapse in the foreground, per issue #4130. Contributed by Soham Gumaste. ([\#5412](https://github.com/matrix-org/synapse/issues/5412), [\#5587](https://github.com/matrix-org/synapse/issues/5587)) - Fully support SAML2 authentication. Contributed by [Alexander Trost](https://github.com/galexrt) - thank you! ([\#5422](https://github.com/matrix-org/synapse/issues/5422)) - Allow server admins to define implementations of extra rules for allowing or denying incoming events. ([\#5440](https://github.com/matrix-org/synapse/issues/5440), [\#5474](https://github.com/matrix-org/synapse/issues/5474), [\#5477](https://github.com/matrix-org/synapse/issues/5477)) - Add support for handling pagination APIs on client reader worker. ([\#5505](https://github.com/matrix-org/synapse/issues/5505), [\#5513](https://github.com/matrix-org/synapse/issues/5513), [\#5531](https://github.com/matrix-org/synapse/issues/5531)) - Improve help and cmdline option names for --generate-config options. ([\#5512](https://github.com/matrix-org/synapse/issues/5512)) - Allow configuration of the path used for ACME account keys. ([\#5516](https://github.com/matrix-org/synapse/issues/5516), [\#5521](https://github.com/matrix-org/synapse/issues/5521), [\#5522](https://github.com/matrix-org/synapse/issues/5522)) - Add --data-dir and --open-private-ports options. ([\#5524](https://github.com/matrix-org/synapse/issues/5524)) - Split public rooms directory auth config in two settings, in order to manage client auth independently from the federation part of it. Obsoletes the "restrict_public_rooms_to_local_users" configuration setting. If "restrict_public_rooms_to_local_users" is set in the config, Synapse will act as if both new options are enabled, i.e. require authentication through the client API and deny federation requests. ([\#5534](https://github.com/matrix-org/synapse/issues/5534)) - The minimum TLS version used for outgoing federation requests can now be set with `federation_client_minimum_tls_version`. ([\#5550](https://github.com/matrix-org/synapse/issues/5550)) - Optimise devices changed query to not pull unnecessary rows from the database, reducing database load. ([\#5559](https://github.com/matrix-org/synapse/issues/5559)) - Add new metrics for number of forward extremities being persisted and number of state groups involved in resolution. ([\#5476](https://github.com/matrix-org/synapse/issues/5476)) Bugfixes -------- - Fix bug processing incoming events over federation if call to `/get_missing_events` fails. ([\#5042](https://github.com/matrix-org/synapse/issues/5042)) - Prevent more than one room upgrade happening simultaneously on the same room. ([\#5051](https://github.com/matrix-org/synapse/issues/5051)) - Fix a bug where running synapse_port_db would cause the account validity feature to fail because it didn't set the type of the email_sent column to boolean. ([\#5325](https://github.com/matrix-org/synapse/issues/5325)) - Warn about disabling email-based password resets when a reset occurs, and remove warning when someone attempts a phone-based reset. ([\#5387](https://github.com/matrix-org/synapse/issues/5387)) - Fix email notifications for unnamed rooms with multiple people. ([\#5388](https://github.com/matrix-org/synapse/issues/5388)) - Fix exceptions in federation reader worker caused by attempting to renew attestations, which should only happen on master worker. ([\#5389](https://github.com/matrix-org/synapse/issues/5389)) - Fix handling of failures fetching remote content to not log failures as exceptions. ([\#5390](https://github.com/matrix-org/synapse/issues/5390)) - Fix a bug where deactivated users could receive renewal emails if the account validity feature is on. ([\#5394](https://github.com/matrix-org/synapse/issues/5394)) - Fix missing invite state after exchanging 3PID invites over federaton. ([\#5464](https://github.com/matrix-org/synapse/issues/5464)) - Fix intermittent exceptions on Apple hardware. Also fix bug that caused database activity times to be under-reported in log lines. ([\#5498](https://github.com/matrix-org/synapse/issues/5498)) - Fix logging error when a tampered event is detected. ([\#5500](https://github.com/matrix-org/synapse/issues/5500)) - Fix bug where clients could tight loop calling `/sync` for a period. ([\#5507](https://github.com/matrix-org/synapse/issues/5507)) - Fix bug with `jinja2` preventing Synapse from starting. Users who had this problem should now simply need to run `pip install matrix-synapse`. ([\#5514](https://github.com/matrix-org/synapse/issues/5514)) - Fix a regression where homeservers on private IP addresses were incorrectly blacklisted. ([\#5523](https://github.com/matrix-org/synapse/issues/5523)) - Fixed m.login.jwt using unregistred user_id and added pyjwt>=1.6.4 as jwt conditional dependencies. Contributed by Pau Rodriguez-Estivill. ([\#5555](https://github.com/matrix-org/synapse/issues/5555), [\#5586](https://github.com/matrix-org/synapse/issues/5586)) - Fix a bug that would cause invited users to receive several emails for a single 3PID invite in case the inviter is rate limited. ([\#5576](https://github.com/matrix-org/synapse/issues/5576)) Updates to the Docker image --------------------------- - Add ability to change Docker containers [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) with the `TZ` variable. ([\#5383](https://github.com/matrix-org/synapse/issues/5383)) - Update docker image to use Python 3.7. ([\#5546](https://github.com/matrix-org/synapse/issues/5546)) - Deprecate the use of environment variables for configuration, and make the use of a static configuration the default. ([\#5561](https://github.com/matrix-org/synapse/issues/5561), [\#5562](https://github.com/matrix-org/synapse/issues/5562), [\#5566](https://github.com/matrix-org/synapse/issues/5566), [\#5567](https://github.com/matrix-org/synapse/issues/5567)) - Increase default log level for docker image to INFO. It can still be changed by editing the generated log.config file. ([\#5547](https://github.com/matrix-org/synapse/issues/5547)) - Send synapse logs to the docker logging system, by default. ([\#5565](https://github.com/matrix-org/synapse/issues/5565)) - Open the non-TLS port by default. ([\#5568](https://github.com/matrix-org/synapse/issues/5568)) - Fix failure to start under docker with SAML support enabled. ([\#5490](https://github.com/matrix-org/synapse/issues/5490)) - Use a sensible location for data files when generating a config file. ([\#5563](https://github.com/matrix-org/synapse/issues/5563)) Deprecations and Removals ------------------------- - Python 2.7 is no longer a supported platform. Synapse now requires Python 3.5+ to run. ([\#5425](https://github.com/matrix-org/synapse/issues/5425)) - PostgreSQL 9.4 is no longer supported. Synapse requires Postgres 9.5+ or above for Postgres support. ([\#5448](https://github.com/matrix-org/synapse/issues/5448)) - Remove support for cpu_affinity setting. ([\#5525](https://github.com/matrix-org/synapse/issues/5525)) Improved Documentation ---------------------- - Improve README section on performance troubleshooting. ([\#4276](https://github.com/matrix-org/synapse/issues/4276)) - Add information about how to install and run `black` on the codebase to code_style.rst. ([\#5537](https://github.com/matrix-org/synapse/issues/5537)) - Improve install docs on choosing server_name. ([\#5558](https://github.com/matrix-org/synapse/issues/5558)) Internal Changes ---------------- - Add logging to 3pid invite signature verification. ([\#5015](https://github.com/matrix-org/synapse/issues/5015)) - Update example haproxy config to a more compatible setup. ([\#5313](https://github.com/matrix-org/synapse/issues/5313)) - Track deactivated accounts in the database. ([\#5378](https://github.com/matrix-org/synapse/issues/5378), [\#5465](https://github.com/matrix-org/synapse/issues/5465), [\#5493](https://github.com/matrix-org/synapse/issues/5493)) - Clean up code for sending federation EDUs. ([\#5381](https://github.com/matrix-org/synapse/issues/5381)) - Add a sponsor button to the repo. ([\#5382](https://github.com/matrix-org/synapse/issues/5382), [\#5386](https://github.com/matrix-org/synapse/issues/5386)) - Don't log non-200 responses from federation queries as exceptions. ([\#5383](https://github.com/matrix-org/synapse/issues/5383)) - Update Python syntax in contrib/ to Python 3. ([\#5446](https://github.com/matrix-org/synapse/issues/5446)) - Update federation_client dev script to support `.well-known` and work with python3. ([\#5447](https://github.com/matrix-org/synapse/issues/5447)) - SyTest has been moved to Buildkite. ([\#5459](https://github.com/matrix-org/synapse/issues/5459)) - Demo script now uses python3. ([\#5460](https://github.com/matrix-org/synapse/issues/5460)) - Synapse can now handle RestServlets that return coroutines. ([\#5475](https://github.com/matrix-org/synapse/issues/5475), [\#5585](https://github.com/matrix-org/synapse/issues/5585)) - The demo servers talk to each other again. ([\#5478](https://github.com/matrix-org/synapse/issues/5478)) - Add an EXPERIMENTAL config option to try and periodically clean up extremities by sending dummy events. ([\#5480](https://github.com/matrix-org/synapse/issues/5480)) - Synapse's codebase is now formatted by `black`. ([\#5482](https://github.com/matrix-org/synapse/issues/5482)) - Some cleanups and sanity-checking in the CPU and database metrics. ([\#5499](https://github.com/matrix-org/synapse/issues/5499)) - Improve email notification logging. ([\#5502](https://github.com/matrix-org/synapse/issues/5502)) - Fix "Unexpected entry in 'full_schemas'" log warning. ([\#5509](https://github.com/matrix-org/synapse/issues/5509)) - Improve logging when generating config files. ([\#5510](https://github.com/matrix-org/synapse/issues/5510)) - Refactor and clean up Config parser for maintainability. ([\#5511](https://github.com/matrix-org/synapse/issues/5511)) - Make the config clearer in that email.template_dir is relative to the Synapse's root directory, not the `synapse/` folder within it. ([\#5543](https://github.com/matrix-org/synapse/issues/5543)) - Update v1.0.0 release changelog to include more information about changes to password resets. ([\#5545](https://github.com/matrix-org/synapse/issues/5545)) - Remove non-functioning check_event_hash.py dev script. ([\#5548](https://github.com/matrix-org/synapse/issues/5548)) - Synapse will now only allow TLS v1.2 connections when serving federation, if it terminates TLS. As Synapse's allowed ciphers were only able to be used in TLSv1.2 before, this does not change behaviour. ([\#5550](https://github.com/matrix-org/synapse/issues/5550)) - Logging when running GC collection on generation 0 is now at the DEBUG level, not INFO. ([\#5557](https://github.com/matrix-org/synapse/issues/5557)) - Reduce the amount of stuff we send in the docker context. ([\#5564](https://github.com/matrix-org/synapse/issues/5564)) - Point the reverse links in the Purge History contrib scripts at the intended location. ([\#5570](https://github.com/matrix-org/synapse/issues/5570)) Synapse 1.0.0 (2019-06-11) ========================== Bugfixes -------- - Fix bug where attempting to send transactions with large number of EDUs can fail. ([\#5418](https://github.com/matrix-org/synapse/issues/5418)) Improved Documentation ---------------------- - Expand the federation guide to include relevant content from the MSC1711 FAQ ([\#5419](https://github.com/matrix-org/synapse/issues/5419)) Internal Changes ---------------- - Move password reset links to /_matrix/client/unstable namespace. ([\#5424](https://github.com/matrix-org/synapse/issues/5424)) Synapse 1.0.0rc3 (2019-06-10) ============================= Security: Fix authentication bug introduced in 1.0.0rc1. Please upgrade to rc3 immediately Synapse 1.0.0rc2 (2019-06-10) ============================= Bugfixes -------- - Remove redundant warning about key server response validation. ([\#5392](https://github.com/matrix-org/synapse/issues/5392)) - Fix bug where old keys stored in the database with a null valid until timestamp caused all verification requests for that key to fail. ([\#5415](https://github.com/matrix-org/synapse/issues/5415)) - Fix excessive memory using with default `federation_verify_certificates: true` configuration. ([\#5417](https://github.com/matrix-org/synapse/issues/5417)) Synapse 1.0.0rc1 (2019-06-07) ============================= Features -------- - Synapse now more efficiently collates room statistics. ([\#4338](https://github.com/matrix-org/synapse/issues/4338), [\#5260](https://github.com/matrix-org/synapse/issues/5260), [\#5324](https://github.com/matrix-org/synapse/issues/5324)) - Add experimental support for relations (aka reactions and edits). ([\#5220](https://github.com/matrix-org/synapse/issues/5220)) - Ability to configure default room version. ([\#5223](https://github.com/matrix-org/synapse/issues/5223), [\#5249](https://github.com/matrix-org/synapse/issues/5249)) - Allow configuring a range for the account validity startup job. ([\#5276](https://github.com/matrix-org/synapse/issues/5276)) - CAS login will now hit the r0 API, not the deprecated v1 one. ([\#5286](https://github.com/matrix-org/synapse/issues/5286)) - Validate federation server TLS certificates by default (implements [MSC1711](https://github.com/matrix-org/matrix-doc/blob/master/proposals/1711-x509-for-federation.md)). ([\#5359](https://github.com/matrix-org/synapse/issues/5359)) - Update /_matrix/client/versions to reference support for r0.5.0. ([\#5360](https://github.com/matrix-org/synapse/issues/5360)) - Add a script to generate new signing-key files. ([\#5361](https://github.com/matrix-org/synapse/issues/5361)) - Update upgrade and installation guides ahead of 1.0. ([\#5371](https://github.com/matrix-org/synapse/issues/5371)) - Replace the `perspectives` configuration section with `trusted_key_servers`, and make validating the signatures on responses optional (since TLS will do this job for us). ([\#5374](https://github.com/matrix-org/synapse/issues/5374)) - Add ability to perform password reset via email without trusting the identity server. **As a result of this PR, password resets will now be disabled on the default configuration.** Password reset emails are now sent from the homeserver by default, instead of the identity server. To enable this functionality, ensure `email` and `public_baseurl` config options are filled out. If you would like to re-enable password resets being sent from the identity server (warning: this is dangerous! See [#5345](https://github.com/matrix-org/synapse/pull/5345)), set `email.trust_identity_server_for_password_resets` to true. ([\#5377](https://github.com/matrix-org/synapse/issues/5377)) - Set default room version to v4. ([\#5379](https://github.com/matrix-org/synapse/issues/5379)) Bugfixes -------- - Fixes client-server API not sending "m.heroes" to lazy-load /sync requests when a rooms name or its canonical alias are empty. Thanks to @dnaf for this work! ([\#5089](https://github.com/matrix-org/synapse/issues/5089)) - Prevent federation device list updates breaking when processing multiple updates at once. ([\#5156](https://github.com/matrix-org/synapse/issues/5156)) - Fix worker registration bug caused by ClientReaderSlavedStore being unable to see get_profileinfo. ([\#5200](https://github.com/matrix-org/synapse/issues/5200)) - Fix race when backfilling in rooms with worker mode. ([\#5221](https://github.com/matrix-org/synapse/issues/5221)) - Fix appservice timestamp massaging. ([\#5233](https://github.com/matrix-org/synapse/issues/5233)) - Ensure that server_keys fetched via a notary server are correctly signed. ([\#5251](https://github.com/matrix-org/synapse/issues/5251)) - Show the correct error when logging out and access token is missing. ([\#5256](https://github.com/matrix-org/synapse/issues/5256)) - Fix error code when there is an invalid parameter on /_matrix/client/r0/publicRooms ([\#5257](https://github.com/matrix-org/synapse/issues/5257)) - Fix error when downloading thumbnail with missing width/height parameter. ([\#5258](https://github.com/matrix-org/synapse/issues/5258)) - Fix schema update for account validity. ([\#5268](https://github.com/matrix-org/synapse/issues/5268)) - Fix bug where we leaked extremities when we soft failed events, leading to performance degradation. ([\#5274](https://github.com/matrix-org/synapse/issues/5274), [\#5278](https://github.com/matrix-org/synapse/issues/5278), [\#5291](https://github.com/matrix-org/synapse/issues/5291)) - Fix "db txn 'update_presence' from sentinel context" log messages. ([\#5275](https://github.com/matrix-org/synapse/issues/5275)) - Fix dropped logcontexts during high outbound traffic. ([\#5277](https://github.com/matrix-org/synapse/issues/5277)) - Fix a bug where it is not possible to get events in the federation format with the request `GET /_matrix/client/r0/rooms/{roomId}/messages`. ([\#5293](https://github.com/matrix-org/synapse/issues/5293)) - Fix performance problems with the rooms stats background update. ([\#5294](https://github.com/matrix-org/synapse/issues/5294)) - Fix noisy 'no key for server' logs. ([\#5300](https://github.com/matrix-org/synapse/issues/5300)) - Fix bug where a notary server would sometimes forget old keys. ([\#5307](https://github.com/matrix-org/synapse/issues/5307)) - Prevent users from setting huge displaynames and avatar URLs. ([\#5309](https://github.com/matrix-org/synapse/issues/5309)) - Fix handling of failures when processing incoming events where calling `/event_auth` on remote server fails. ([\#5317](https://github.com/matrix-org/synapse/issues/5317)) - Ensure that we have an up-to-date copy of the signing key when validating incoming federation requests. ([\#5321](https://github.com/matrix-org/synapse/issues/5321)) - Fix various problems which made the signing-key notary server time out for some requests. ([\#5333](https://github.com/matrix-org/synapse/issues/5333)) - Fix bug which would make certain operations (such as room joins) block for 20 minutes while attemoting to fetch verification keys. ([\#5334](https://github.com/matrix-org/synapse/issues/5334)) - Fix a bug where we could rapidly mark a server as unreachable even though it was only down for a few minutes. ([\#5335](https://github.com/matrix-org/synapse/issues/5335), [\#5340](https://github.com/matrix-org/synapse/issues/5340)) - Fix a bug where account validity renewal emails could only be sent when email notifs were enabled. ([\#5341](https://github.com/matrix-org/synapse/issues/5341)) - Fix failure when fetching batches of events during backfill, etc. ([\#5342](https://github.com/matrix-org/synapse/issues/5342)) - Add a new room version where the timestamps on events are checked against the validity periods on signing keys. ([\#5348](https://github.com/matrix-org/synapse/issues/5348), [\#5354](https://github.com/matrix-org/synapse/issues/5354)) - Fix room stats and presence background updates to correctly handle missing events. ([\#5352](https://github.com/matrix-org/synapse/issues/5352)) - Include left members in room summaries' heroes. ([\#5355](https://github.com/matrix-org/synapse/issues/5355)) - Fix `federation_custom_ca_list` configuration option. ([\#5362](https://github.com/matrix-org/synapse/issues/5362)) - Fix missing logcontext warnings on shutdown. ([\#5369](https://github.com/matrix-org/synapse/issues/5369)) Improved Documentation ---------------------- - Fix docs on resetting the user directory. ([\#5282](https://github.com/matrix-org/synapse/issues/5282)) - Fix notes about ACME in the MSC1711 faq. ([\#5357](https://github.com/matrix-org/synapse/issues/5357)) Internal Changes ---------------- - Synapse will now serve the experimental "room complexity" API endpoint. ([\#5216](https://github.com/matrix-org/synapse/issues/5216)) - The base classes for the v1 and v2_alpha REST APIs have been unified. ([\#5226](https://github.com/matrix-org/synapse/issues/5226), [\#5328](https://github.com/matrix-org/synapse/issues/5328)) - Simplifications and comments in do_auth. ([\#5227](https://github.com/matrix-org/synapse/issues/5227)) - Remove urllib3 pin as requests 2.22.0 has been released supporting urllib3 1.25.2. ([\#5230](https://github.com/matrix-org/synapse/issues/5230)) - Preparatory work for key-validity features. ([\#5232](https://github.com/matrix-org/synapse/issues/5232), [\#5234](https://github.com/matrix-org/synapse/issues/5234), [\#5235](https://github.com/matrix-org/synapse/issues/5235), [\#5236](https://github.com/matrix-org/synapse/issues/5236), [\#5237](https://github.com/matrix-org/synapse/issues/5237), [\#5244](https://github.com/matrix-org/synapse/issues/5244), [\#5250](https://github.com/matrix-org/synapse/issues/5250), [\#5296](https://github.com/matrix-org/synapse/issues/5296), [\#5299](https://github.com/matrix-org/synapse/issues/5299), [\#5343](https://github.com/matrix-org/synapse/issues/5343), [\#5347](https://github.com/matrix-org/synapse/issues/5347), [\#5356](https://github.com/matrix-org/synapse/issues/5356)) - Specify the type of reCAPTCHA key to use. ([\#5283](https://github.com/matrix-org/synapse/issues/5283)) - Improve sample config for monthly active user blocking. ([\#5284](https://github.com/matrix-org/synapse/issues/5284)) - Remove spurious debug from MatrixFederationHttpClient.get_json. ([\#5287](https://github.com/matrix-org/synapse/issues/5287)) - Improve logging for logcontext leaks. ([\#5288](https://github.com/matrix-org/synapse/issues/5288)) - Clarify that the admin change password API logs the user out. ([\#5303](https://github.com/matrix-org/synapse/issues/5303)) - New installs will now use the v54 full schema, rather than the full schema v14 and applying incremental updates to v54. ([\#5320](https://github.com/matrix-org/synapse/issues/5320)) - Improve docstrings on MatrixFederationClient. ([\#5332](https://github.com/matrix-org/synapse/issues/5332)) - Clean up FederationClient.get_events for clarity. ([\#5344](https://github.com/matrix-org/synapse/issues/5344)) - Various improvements to debug logging. ([\#5353](https://github.com/matrix-org/synapse/issues/5353)) - Don't run CI build checks until sample config check has passed. ([\#5370](https://github.com/matrix-org/synapse/issues/5370)) - Automatically retry buildkite builds (max twice) when an agent is lost. ([\#5380](https://github.com/matrix-org/synapse/issues/5380)) Synapse 0.99.5.2 (2019-05-30) ============================= Bugfixes -------- - Fix bug where we leaked extremities when we soft failed events, leading to performance degradation. ([\#5274](https://github.com/matrix-org/synapse/issues/5274), [\#5278](https://github.com/matrix-org/synapse/issues/5278), [\#5291](https://github.com/matrix-org/synapse/issues/5291)) Synapse 0.99.5.1 (2019-05-22) ============================= 0.99.5.1 supersedes 0.99.5 due to malformed debian changelog - no functional changes. Synapse 0.99.5 (2019-05-22) =========================== No significant changes. Synapse 0.99.5rc1 (2019-05-21) ============================== Features -------- - Add ability to blacklist IP ranges for the federation client. ([\#5043](https://github.com/matrix-org/synapse/issues/5043)) - Ratelimiting configuration for clients sending messages and the federation server has been altered to match login ratelimiting. The old configuration names will continue working. Check the sample config for details of the new names. ([\#5181](https://github.com/matrix-org/synapse/issues/5181)) - Drop support for the undocumented /_matrix/client/v2_alpha API prefix. ([\#5190](https://github.com/matrix-org/synapse/issues/5190)) - Add an option to disable per-room profiles. ([\#5196](https://github.com/matrix-org/synapse/issues/5196)) - Stick an expiration date to any registered user missing one at startup if account validity is enabled. ([\#5204](https://github.com/matrix-org/synapse/issues/5204)) - Add experimental support for relations (aka reactions and edits). ([\#5209](https://github.com/matrix-org/synapse/issues/5209), [\#5211](https://github.com/matrix-org/synapse/issues/5211), [\#5203](https://github.com/matrix-org/synapse/issues/5203), [\#5212](https://github.com/matrix-org/synapse/issues/5212)) - Add a room version 4 which uses a new event ID format, as per [MSC2002](https://github.com/matrix-org/matrix-doc/pull/2002). ([\#5210](https://github.com/matrix-org/synapse/issues/5210), [\#5217](https://github.com/matrix-org/synapse/issues/5217)) Bugfixes -------- - Fix image orientation when generating thumbnails (needs pillow>=4.3.0). Contributed by Pau Rodriguez-Estivill. ([\#5039](https://github.com/matrix-org/synapse/issues/5039)) - Exclude soft-failed events from forward-extremity candidates: fixes "No forward extremities left!" error. ([\#5146](https://github.com/matrix-org/synapse/issues/5146)) - Re-order stages in registration flows such that msisdn and email verification are done last. ([\#5174](https://github.com/matrix-org/synapse/issues/5174)) - Fix 3pid guest invites. ([\#5177](https://github.com/matrix-org/synapse/issues/5177)) - Fix a bug where the register endpoint would fail with M_THREEPID_IN_USE instead of returning an account previously registered in the same session. ([\#5187](https://github.com/matrix-org/synapse/issues/5187)) - Prevent registration for user ids that are too long to fit into a state key. Contributed by Reid Anderson. ([\#5198](https://github.com/matrix-org/synapse/issues/5198)) - Fix incompatibility between ACME support and Python 3.5.2. ([\#5218](https://github.com/matrix-org/synapse/issues/5218)) - Fix error handling for rooms whose versions are unknown. ([\#5219](https://github.com/matrix-org/synapse/issues/5219)) Internal Changes ---------------- - Make /sync attempt to return device updates for both joined and invited users. Note that this doesn't currently work correctly due to other bugs. ([\#3484](https://github.com/matrix-org/synapse/issues/3484)) - Update tests to consistently be configured via the same code that is used when loading from configuration files. ([\#5171](https://github.com/matrix-org/synapse/issues/5171), [\#5185](https://github.com/matrix-org/synapse/issues/5185)) - Allow client event serialization to be async. ([\#5183](https://github.com/matrix-org/synapse/issues/5183)) - Expose DataStore._get_events as get_events_as_list. ([\#5184](https://github.com/matrix-org/synapse/issues/5184)) - Make generating SQL bounds for pagination generic. ([\#5191](https://github.com/matrix-org/synapse/issues/5191)) - Stop telling people to install the optional dependencies by default. ([\#5197](https://github.com/matrix-org/synapse/issues/5197)) Synapse 0.99.4 (2019-05-15) =========================== No significant changes. Synapse 0.99.4rc1 (2019-05-13) ============================== Features -------- - Add systemd-python to the optional dependencies to enable logging to the systemd journal. Install with `pip install matrix-synapse[systemd]`. ([\#4339](https://github.com/matrix-org/synapse/issues/4339)) - Add a default .m.rule.tombstone push rule. ([\#4867](https://github.com/matrix-org/synapse/issues/4867)) - Add ability for password provider modules to bind email addresses to users upon registration. ([\#4947](https://github.com/matrix-org/synapse/issues/4947)) - Implementation of [MSC1711](https://github.com/matrix-org/matrix-doc/pull/1711) including config options for requiring valid TLS certificates for federation traffic, the ability to disable TLS validation for specific domains, and the ability to specify your own list of CA certificates. ([\#4967](https://github.com/matrix-org/synapse/issues/4967)) - Remove presence list support as per MSC 1819. ([\#4989](https://github.com/matrix-org/synapse/issues/4989)) - Reduce CPU usage starting pushers during start up. ([\#4991](https://github.com/matrix-org/synapse/issues/4991)) - Add a delete group admin API. ([\#5002](https://github.com/matrix-org/synapse/issues/5002)) - Add config option to block users from looking up 3PIDs. ([\#5010](https://github.com/matrix-org/synapse/issues/5010)) - Add context to phonehome stats. ([\#5020](https://github.com/matrix-org/synapse/issues/5020)) - Configure the example systemd units to have a log identifier of `matrix-synapse` instead of the executable name, `python`. Contributed by Christoph Müller. ([\#5023](https://github.com/matrix-org/synapse/issues/5023)) - Add time-based account expiration. ([\#5027](https://github.com/matrix-org/synapse/issues/5027), [\#5047](https://github.com/matrix-org/synapse/issues/5047), [\#5073](https://github.com/matrix-org/synapse/issues/5073), [\#5116](https://github.com/matrix-org/synapse/issues/5116)) - Add support for handling `/versions`, `/voip` and `/push_rules` client endpoints to client_reader worker. ([\#5063](https://github.com/matrix-org/synapse/issues/5063), [\#5065](https://github.com/matrix-org/synapse/issues/5065), [\#5070](https://github.com/matrix-org/synapse/issues/5070)) - Add a configuration option to require authentication on /publicRooms and /profile endpoints. ([\#5083](https://github.com/matrix-org/synapse/issues/5083)) - Move admin APIs to `/_synapse/admin/v1`. (The old paths are retained for backwards-compatibility, for now). ([\#5119](https://github.com/matrix-org/synapse/issues/5119)) - Implement an admin API for sending server notices. Many thanks to @krombel who provided a foundation for this work. ([\#5121](https://github.com/matrix-org/synapse/issues/5121), [\#5142](https://github.com/matrix-org/synapse/issues/5142)) Bugfixes -------- - Avoid redundant URL encoding of redirect URL for SSO login in the fallback login page. Fixes a regression introduced in [#4220](https://github.com/matrix-org/synapse/pull/4220). Contributed by Marcel Fabian Krüger ("[zaugin](https://github.com/zauguin)"). ([\#4555](https://github.com/matrix-org/synapse/issues/4555)) - Fix bug where presence updates were sent to all servers in a room when a new server joined, rather than to just the new server. ([\#4942](https://github.com/matrix-org/synapse/issues/4942), [\#5103](https://github.com/matrix-org/synapse/issues/5103)) - Fix sync bug which made accepting invites unreliable in worker-mode synapses. ([\#4955](https://github.com/matrix-org/synapse/issues/4955), [\#4956](https://github.com/matrix-org/synapse/issues/4956)) - start.sh: Fix the --no-rate-limit option for messages and make it bypass rate limit on registration and login too. ([\#4981](https://github.com/matrix-org/synapse/issues/4981)) - Transfer related groups on room upgrade. ([\#4990](https://github.com/matrix-org/synapse/issues/4990)) - Prevent the ability to kick users from a room they aren't in. ([\#4999](https://github.com/matrix-org/synapse/issues/4999)) - Fix issue #4596 so synapse_port_db script works with --curses option on Python 3. Contributed by Anders Jensen-Waud . ([\#5003](https://github.com/matrix-org/synapse/issues/5003)) - Clients timing out/disappearing while downloading from the media repository will now no longer log a spurious "Producer was not unregistered" message. ([\#5009](https://github.com/matrix-org/synapse/issues/5009)) - Fix "cannot import name execute_batch" error with postgres. ([\#5032](https://github.com/matrix-org/synapse/issues/5032)) - Fix disappearing exceptions in manhole. ([\#5035](https://github.com/matrix-org/synapse/issues/5035)) - Workaround bug in twisted where attempting too many concurrent DNS requests could cause it to hang due to running out of file descriptors. ([\#5037](https://github.com/matrix-org/synapse/issues/5037)) - Make sure we're not registering the same 3pid twice on registration. ([\#5071](https://github.com/matrix-org/synapse/issues/5071)) - Don't crash on lack of expiry templates. ([\#5077](https://github.com/matrix-org/synapse/issues/5077)) - Fix the ratelimiting on third party invites. ([\#5104](https://github.com/matrix-org/synapse/issues/5104)) - Add some missing limitations to room alias creation. ([\#5124](https://github.com/matrix-org/synapse/issues/5124), [\#5128](https://github.com/matrix-org/synapse/issues/5128)) - Limit the number of EDUs in transactions to 100 as expected by synapse. Thanks to @superboum for this work! ([\#5138](https://github.com/matrix-org/synapse/issues/5138)) Internal Changes ---------------- - Add test to verify threepid auth check added in #4435. ([\#4474](https://github.com/matrix-org/synapse/issues/4474)) - Fix/improve some docstrings in the replication code. ([\#4949](https://github.com/matrix-org/synapse/issues/4949)) - Split synapse.replication.tcp.streams into smaller files. ([\#4953](https://github.com/matrix-org/synapse/issues/4953)) - Refactor replication row generation/parsing. ([\#4954](https://github.com/matrix-org/synapse/issues/4954)) - Run `black` to clean up formatting on `synapse/storage/roommember.py` and `synapse/storage/events.py`. ([\#4959](https://github.com/matrix-org/synapse/issues/4959)) - Remove log line for password via the admin API. ([\#4965](https://github.com/matrix-org/synapse/issues/4965)) - Fix typo in TLS filenames in docker/README.md. Also add the '-p' commandline option to the 'docker run' example. Contributed by Jurrie Overgoor. ([\#4968](https://github.com/matrix-org/synapse/issues/4968)) - Refactor room version definitions. ([\#4969](https://github.com/matrix-org/synapse/issues/4969)) - Reduce log level of .well-known/matrix/client responses. ([\#4972](https://github.com/matrix-org/synapse/issues/4972)) - Add `config.signing_key_path` that can be read by `synapse.config` utility. ([\#4974](https://github.com/matrix-org/synapse/issues/4974)) - Track which identity server is used when binding a threepid and use that for unbinding, as per MSC1915. ([\#4982](https://github.com/matrix-org/synapse/issues/4982)) - Rewrite KeyringTestCase as a HomeserverTestCase. ([\#4985](https://github.com/matrix-org/synapse/issues/4985)) - README updates: Corrected the default POSTGRES_USER. Added port forwarding hint in TLS section. ([\#4987](https://github.com/matrix-org/synapse/issues/4987)) - Remove a number of unused tables from the database schema. ([\#4992](https://github.com/matrix-org/synapse/issues/4992), [\#5028](https://github.com/matrix-org/synapse/issues/5028), [\#5033](https://github.com/matrix-org/synapse/issues/5033)) - Run `black` on the remainder of `synapse/storage/`. ([\#4996](https://github.com/matrix-org/synapse/issues/4996)) - Fix grammar in get_current_users_in_room and give it a docstring. ([\#4998](https://github.com/matrix-org/synapse/issues/4998)) - Clean up some code in the server-key Keyring. ([\#5001](https://github.com/matrix-org/synapse/issues/5001)) - Convert SYNAPSE_NO_TLS Docker variable to boolean for user friendliness. Contributed by Gabriel Eckerson. ([\#5005](https://github.com/matrix-org/synapse/issues/5005)) - Refactor synapse.storage._base._simple_select_list_paginate. ([\#5007](https://github.com/matrix-org/synapse/issues/5007)) - Store the notary server name correctly in server_keys_json. ([\#5024](https://github.com/matrix-org/synapse/issues/5024)) - Rewrite Datastore.get_server_verify_keys to reduce the number of database transactions. ([\#5030](https://github.com/matrix-org/synapse/issues/5030)) - Remove extraneous period from copyright headers. ([\#5046](https://github.com/matrix-org/synapse/issues/5046)) - Update documentation for where to get Synapse packages. ([\#5067](https://github.com/matrix-org/synapse/issues/5067)) - Add workarounds for pep-517 install errors. ([\#5098](https://github.com/matrix-org/synapse/issues/5098)) - Improve logging when event-signature checks fail. ([\#5100](https://github.com/matrix-org/synapse/issues/5100)) - Factor out an "assert_requester_is_admin" function. ([\#5120](https://github.com/matrix-org/synapse/issues/5120)) - Remove the requirement to authenticate for /admin/server_version. ([\#5122](https://github.com/matrix-org/synapse/issues/5122)) - Prevent an exception from being raised in a IResolutionReceiver and use a more generic error message for blacklisted URL previews. ([\#5155](https://github.com/matrix-org/synapse/issues/5155)) - Run `black` on the tests directory. ([\#5170](https://github.com/matrix-org/synapse/issues/5170)) - Fix CI after new release of isort. ([\#5179](https://github.com/matrix-org/synapse/issues/5179)) - Fix bogus imports in unit tests. ([\#5154](https://github.com/matrix-org/synapse/issues/5154)) Synapse 0.99.3.2 (2019-05-03) ============================= Internal Changes ---------------- - Ensure that we have `urllib3` <1.25, to resolve incompatibility with `requests`. ([\#5135](https://github.com/matrix-org/synapse/issues/5135)) Synapse 0.99.3.1 (2019-05-03) ============================= Security update --------------- This release includes two security fixes: - Switch to using a cryptographically-secure random number generator for token strings, ensuring they cannot be predicted by an attacker. Thanks to @opnsec for identifying and responsibly disclosing this issue! ([\#5133](https://github.com/matrix-org/synapse/issues/5133)) - Blacklist 0.0.0.0 and :: by default for URL previews. Thanks to @opnsec for identifying and responsibly disclosing this issue too! ([\#5134](https://github.com/matrix-org/synapse/issues/5134)) Synapse 0.99.3 (2019-04-01) =========================== No significant changes. Synapse 0.99.3rc1 (2019-03-27) ============================== Features -------- - The user directory has been rewritten to make it faster, with less chance of falling behind on a large server. ([\#4537](https://github.com/matrix-org/synapse/issues/4537), [\#4846](https://github.com/matrix-org/synapse/issues/4846), [\#4864](https://github.com/matrix-org/synapse/issues/4864), [\#4887](https://github.com/matrix-org/synapse/issues/4887), [\#4900](https://github.com/matrix-org/synapse/issues/4900), [\#4944](https://github.com/matrix-org/synapse/issues/4944)) - Add configurable rate limiting to the /register endpoint. ([\#4735](https://github.com/matrix-org/synapse/issues/4735), [\#4804](https://github.com/matrix-org/synapse/issues/4804)) - Move server key queries to federation reader. ([\#4757](https://github.com/matrix-org/synapse/issues/4757)) - Add support for /account/3pid REST endpoint to client_reader worker. ([\#4759](https://github.com/matrix-org/synapse/issues/4759)) - Add an endpoint to the admin API for querying the server version. Contributed by Joseph Weston. ([\#4772](https://github.com/matrix-org/synapse/issues/4772)) - Include a default configuration file in the 'docs' directory. ([\#4791](https://github.com/matrix-org/synapse/issues/4791), [\#4801](https://github.com/matrix-org/synapse/issues/4801)) - Synapse is now permissive about trailing slashes on some of its federation endpoints, allowing zero or more to be present. ([\#4793](https://github.com/matrix-org/synapse/issues/4793)) - Add support for /keys/query and /keys/changes REST endpoints to client_reader worker. ([\#4796](https://github.com/matrix-org/synapse/issues/4796)) - Add checks to incoming events over federation for events evading auth (aka "soft fail"). ([\#4814](https://github.com/matrix-org/synapse/issues/4814)) - Add configurable rate limiting to the /login endpoint. ([\#4821](https://github.com/matrix-org/synapse/issues/4821), [\#4865](https://github.com/matrix-org/synapse/issues/4865)) - Remove trailing slashes from certain outbound federation requests. Retry if receiving a 404. Context: #3622. ([\#4840](https://github.com/matrix-org/synapse/issues/4840)) - Allow passing --daemonize flags to workers in the same way as with master. ([\#4853](https://github.com/matrix-org/synapse/issues/4853)) - Batch up outgoing read-receipts to reduce federation traffic. ([\#4890](https://github.com/matrix-org/synapse/issues/4890), [\#4927](https://github.com/matrix-org/synapse/issues/4927)) - Add option to disable searching the user directory. ([\#4895](https://github.com/matrix-org/synapse/issues/4895)) - Add option to disable searching of local and remote public room lists. ([\#4896](https://github.com/matrix-org/synapse/issues/4896)) - Add ability for password providers to login/register a user via 3PID (email, phone). ([\#4931](https://github.com/matrix-org/synapse/issues/4931)) Bugfixes -------- - Fix a bug where media with spaces in the name would get a corrupted name. ([\#2090](https://github.com/matrix-org/synapse/issues/2090)) - Fix attempting to paginate in rooms where server cannot see any events, to avoid unnecessarily pulling in lots of redacted events. ([\#4699](https://github.com/matrix-org/synapse/issues/4699)) - 'event_id' is now a required parameter in federated state requests, as per the matrix spec. ([\#4740](https://github.com/matrix-org/synapse/issues/4740)) - Fix tightloop over connecting to replication server. ([\#4749](https://github.com/matrix-org/synapse/issues/4749)) - Fix parsing of Content-Disposition headers on remote media requests and URL previews. ([\#4763](https://github.com/matrix-org/synapse/issues/4763)) - Fix incorrect log about not persisting duplicate state event. ([\#4776](https://github.com/matrix-org/synapse/issues/4776)) - Fix v4v6 option in HAProxy example config. Contributed by Flakebi. ([\#4790](https://github.com/matrix-org/synapse/issues/4790)) - Handle batch updates in worker replication protocol. ([\#4792](https://github.com/matrix-org/synapse/issues/4792)) - Fix bug where we didn't correctly throttle sending of USER_IP commands over replication. ([\#4818](https://github.com/matrix-org/synapse/issues/4818)) - Fix potential race in handling missing updates in device list updates. ([\#4829](https://github.com/matrix-org/synapse/issues/4829)) - Fix bug where synapse expected an un-specced `prev_state` field on state events. ([\#4837](https://github.com/matrix-org/synapse/issues/4837)) - Transfer a user's notification settings (push rules) on room upgrade. ([\#4838](https://github.com/matrix-org/synapse/issues/4838)) - fix test_auto_create_auto_join_where_no_consent. ([\#4886](https://github.com/matrix-org/synapse/issues/4886)) - Fix a bug where hs_disabled_message was sometimes not correctly enforced. ([\#4888](https://github.com/matrix-org/synapse/issues/4888)) - Fix bug in shutdown room admin API where it would fail if a user in the room hadn't consented to the privacy policy. ([\#4904](https://github.com/matrix-org/synapse/issues/4904)) - Fix bug where blocked world-readable rooms were still peekable. ([\#4908](https://github.com/matrix-org/synapse/issues/4908)) Internal Changes ---------------- - Add a systemd setup that supports synapse workers. Contributed by Luca Corbatto. ([\#4662](https://github.com/matrix-org/synapse/issues/4662)) - Change from TravisCI to Buildkite for CI. ([\#4752](https://github.com/matrix-org/synapse/issues/4752)) - When presence is disabled don't send over replication. ([\#4757](https://github.com/matrix-org/synapse/issues/4757)) - Minor docstring fixes for MatrixFederationAgent. ([\#4765](https://github.com/matrix-org/synapse/issues/4765)) - Optimise EDU transmission for the federation_sender worker. ([\#4770](https://github.com/matrix-org/synapse/issues/4770)) - Update test_typing to use HomeserverTestCase. ([\#4771](https://github.com/matrix-org/synapse/issues/4771)) - Update URLs for riot.im icons and logos in the default notification templates. ([\#4779](https://github.com/matrix-org/synapse/issues/4779)) - Removed unnecessary $ from some federation endpoint path regexes. ([\#4794](https://github.com/matrix-org/synapse/issues/4794)) - Remove link to deleted title in README. ([\#4795](https://github.com/matrix-org/synapse/issues/4795)) - Clean up read-receipt handling. ([\#4797](https://github.com/matrix-org/synapse/issues/4797)) - Add some debug about processing read receipts. ([\#4798](https://github.com/matrix-org/synapse/issues/4798)) - Clean up some replication code. ([\#4799](https://github.com/matrix-org/synapse/issues/4799)) - Add some docstrings. ([\#4815](https://github.com/matrix-org/synapse/issues/4815)) - Add debug logger to try and track down #4422. ([\#4816](https://github.com/matrix-org/synapse/issues/4816)) - Make shutdown API send explanation message to room after users have been forced joined. ([\#4817](https://github.com/matrix-org/synapse/issues/4817)) - Update example_log_config.yaml. ([\#4820](https://github.com/matrix-org/synapse/issues/4820)) - Document the `generate` option for the docker image. ([\#4824](https://github.com/matrix-org/synapse/issues/4824)) - Fix check-newsfragment for debian-only changes. ([\#4825](https://github.com/matrix-org/synapse/issues/4825)) - Add some debug logging for device list updates to help with #4828. ([\#4828](https://github.com/matrix-org/synapse/issues/4828)) - Improve federation documentation, specifically .well-known support. Many thanks to @vaab. ([\#4832](https://github.com/matrix-org/synapse/issues/4832)) - Disable captcha registration by default in unit tests. ([\#4839](https://github.com/matrix-org/synapse/issues/4839)) - Add stuff back to the .gitignore. ([\#4843](https://github.com/matrix-org/synapse/issues/4843)) - Clarify what registration_shared_secret allows for. ([\#4844](https://github.com/matrix-org/synapse/issues/4844)) - Correctly log expected errors when fetching server keys. ([\#4847](https://github.com/matrix-org/synapse/issues/4847)) - Update install docs to explicitly state a full-chain (not just the top-level) TLS certificate must be provided to Synapse. This caused some people's Synapse ports to appear correct in a browser but still (rightfully so) upset the federation tester. ([\#4849](https://github.com/matrix-org/synapse/issues/4849)) - Move client read-receipt processing to federation sender worker. ([\#4852](https://github.com/matrix-org/synapse/issues/4852)) - Refactor federation TransactionQueue. ([\#4855](https://github.com/matrix-org/synapse/issues/4855)) - Comment out most options in the generated config. ([\#4863](https://github.com/matrix-org/synapse/issues/4863)) - Fix yaml library warnings by using safe_load. ([\#4869](https://github.com/matrix-org/synapse/issues/4869)) - Update Apache setup to remove location syntax. Thanks to @cwmke! ([\#4870](https://github.com/matrix-org/synapse/issues/4870)) - Reinstate test case that runs unit tests against oldest supported dependencies. ([\#4879](https://github.com/matrix-org/synapse/issues/4879)) - Update link to federation docs. ([\#4881](https://github.com/matrix-org/synapse/issues/4881)) - fix test_auto_create_auto_join_where_no_consent. ([\#4886](https://github.com/matrix-org/synapse/issues/4886)) - Use a regular HomeServerConfig object for unit tests rater than a Mock. ([\#4889](https://github.com/matrix-org/synapse/issues/4889)) - Add some notes about tuning postgres for larger deployments. ([\#4895](https://github.com/matrix-org/synapse/issues/4895)) - Add a config option for torture-testing worker replication. ([\#4902](https://github.com/matrix-org/synapse/issues/4902)) - Log requests which are simulated by the unit tests. ([\#4905](https://github.com/matrix-org/synapse/issues/4905)) - Allow newsfragments to end with exclamation marks. Exciting! ([\#4912](https://github.com/matrix-org/synapse/issues/4912)) - Refactor some more tests to use HomeserverTestCase. ([\#4913](https://github.com/matrix-org/synapse/issues/4913)) - Refactor out the state deltas portion of the user directory store and handler. ([\#4917](https://github.com/matrix-org/synapse/issues/4917)) - Fix nginx example in ACME doc. ([\#4923](https://github.com/matrix-org/synapse/issues/4923)) - Use an explicit dbname for postgres connections in the tests. ([\#4928](https://github.com/matrix-org/synapse/issues/4928)) - Fix `ClientReplicationStreamProtocol.__str__()`. ([\#4929](https://github.com/matrix-org/synapse/issues/4929)) Synapse 0.99.2 (2019-03-01) =========================== Features -------- - Added an HAProxy example in the reverse proxy documentation. Contributed by Benoît S. (“Benpro”). ([\#4541](https://github.com/matrix-org/synapse/issues/4541)) - Add basic optional sentry integration. ([\#4632](https://github.com/matrix-org/synapse/issues/4632), [\#4694](https://github.com/matrix-org/synapse/issues/4694)) - Transfer bans on room upgrade. ([\#4642](https://github.com/matrix-org/synapse/issues/4642)) - Add configurable room list publishing rules. ([\#4647](https://github.com/matrix-org/synapse/issues/4647)) - Support .well-known delegation when issuing certificates through ACME. ([\#4652](https://github.com/matrix-org/synapse/issues/4652)) - Allow registration and login to be handled by a worker instance. ([\#4666](https://github.com/matrix-org/synapse/issues/4666), [\#4670](https://github.com/matrix-org/synapse/issues/4670), [\#4682](https://github.com/matrix-org/synapse/issues/4682)) - Reduce the overhead of creating outbound federation connections over TLS by caching the TLS client options. ([\#4674](https://github.com/matrix-org/synapse/issues/4674)) - Add prometheus metrics for number of outgoing EDUs, by type. ([\#4695](https://github.com/matrix-org/synapse/issues/4695)) - Return correct error code when inviting a remote user to a room whose homeserver does not support the room version. ([\#4721](https://github.com/matrix-org/synapse/issues/4721)) - Prevent showing rooms to other servers that were set to not federate. ([\#4746](https://github.com/matrix-org/synapse/issues/4746)) Bugfixes -------- - Fix possible exception when paginating. ([\#4263](https://github.com/matrix-org/synapse/issues/4263)) - The dependency checker now correctly reports a version mismatch for optional dependencies, instead of reporting the dependency missing. ([\#4450](https://github.com/matrix-org/synapse/issues/4450)) - Set CORS headers on .well-known requests. ([\#4651](https://github.com/matrix-org/synapse/issues/4651)) - Fix kicking guest users on guest access revocation in worker mode. ([\#4667](https://github.com/matrix-org/synapse/issues/4667)) - Fix an issue in the database migration script where the `e2e_room_keys.is_verified` column wasn't considered as a boolean. ([\#4680](https://github.com/matrix-org/synapse/issues/4680)) - Fix TaskStopped exceptions in logs when outbound requests time out. ([\#4690](https://github.com/matrix-org/synapse/issues/4690)) - Fix ACME config for python 2. ([\#4717](https://github.com/matrix-org/synapse/issues/4717)) - Fix paginating over federation persisting incorrect state. ([\#4718](https://github.com/matrix-org/synapse/issues/4718)) Internal Changes ---------------- - Run `black` to reformat user directory code. ([\#4635](https://github.com/matrix-org/synapse/issues/4635)) - Reduce number of exceptions we log. ([\#4643](https://github.com/matrix-org/synapse/issues/4643), [\#4668](https://github.com/matrix-org/synapse/issues/4668)) - Introduce upsert batching functionality in the database layer. ([\#4644](https://github.com/matrix-org/synapse/issues/4644)) - Fix various spelling mistakes. ([\#4657](https://github.com/matrix-org/synapse/issues/4657)) - Cleanup request exception logging. ([\#4669](https://github.com/matrix-org/synapse/issues/4669), [\#4737](https://github.com/matrix-org/synapse/issues/4737), [\#4738](https://github.com/matrix-org/synapse/issues/4738)) - Improve replication performance by reducing cache invalidation traffic. ([\#4671](https://github.com/matrix-org/synapse/issues/4671), [\#4715](https://github.com/matrix-org/synapse/issues/4715), [\#4748](https://github.com/matrix-org/synapse/issues/4748)) - Test against Postgres 9.5 as well as 9.4. ([\#4676](https://github.com/matrix-org/synapse/issues/4676)) - Run unit tests against python 3.7. ([\#4677](https://github.com/matrix-org/synapse/issues/4677)) - Attempt to clarify installation instructions/config. ([\#4681](https://github.com/matrix-org/synapse/issues/4681)) - Clean up gitignores. ([\#4688](https://github.com/matrix-org/synapse/issues/4688)) - Minor tweaks to acme docs. ([\#4689](https://github.com/matrix-org/synapse/issues/4689)) - Improve the logging in the pusher process. ([\#4691](https://github.com/matrix-org/synapse/issues/4691)) - Better checks on newsfragments. ([\#4698](https://github.com/matrix-org/synapse/issues/4698), [\#4750](https://github.com/matrix-org/synapse/issues/4750)) - Avoid some redundant work when processing read receipts. ([\#4706](https://github.com/matrix-org/synapse/issues/4706)) - Run `push_receipts_to_remotes` as background job. ([\#4707](https://github.com/matrix-org/synapse/issues/4707)) - Add prometheus metrics for number of badge update pushes. ([\#4709](https://github.com/matrix-org/synapse/issues/4709)) - Reduce pusher logging on startup ([\#4716](https://github.com/matrix-org/synapse/issues/4716)) - Don't log exceptions when failing to fetch remote server keys. ([\#4722](https://github.com/matrix-org/synapse/issues/4722)) - Correctly proxy exception in frontend_proxy worker. ([\#4723](https://github.com/matrix-org/synapse/issues/4723)) - Add database version to phonehome stats. ([\#4753](https://github.com/matrix-org/synapse/issues/4753)) Synapse 0.99.1.1 (2019-02-14) ============================= Bugfixes -------- - Fix "TypeError: '>' not supported" when starting without an existing certificate. Fix a bug where an existing certificate would be reprovisoned every day. ([\#4648](https://github.com/matrix-org/synapse/issues/4648)) Synapse 0.99.1 (2019-02-14) =========================== Features -------- - Include m.room.encryption on invites by default ([\#3902](https://github.com/matrix-org/synapse/issues/3902)) - Federation OpenID listener resource can now be activated even if federation is disabled ([\#4420](https://github.com/matrix-org/synapse/issues/4420)) - Synapse's ACME support will now correctly reprovision a certificate that approaches its expiry while Synapse is running. ([\#4522](https://github.com/matrix-org/synapse/issues/4522)) - Add ability to update backup versions ([\#4580](https://github.com/matrix-org/synapse/issues/4580)) - Allow the "unavailable" presence status for /sync. This change makes Synapse compliant with r0.4.0 of the Client-Server specification. ([\#4592](https://github.com/matrix-org/synapse/issues/4592)) - There is no longer any need to specify `no_tls`: it is inferred from the absence of TLS listeners ([\#4613](https://github.com/matrix-org/synapse/issues/4613), [\#4615](https://github.com/matrix-org/synapse/issues/4615), [\#4617](https://github.com/matrix-org/synapse/issues/4617), [\#4636](https://github.com/matrix-org/synapse/issues/4636)) - The default configuration no longer requires TLS certificates. ([\#4614](https://github.com/matrix-org/synapse/issues/4614)) Bugfixes -------- - Copy over room federation ability on room upgrade. ([\#4530](https://github.com/matrix-org/synapse/issues/4530)) - Fix noisy "twisted.internet.task.TaskStopped" errors in logs ([\#4546](https://github.com/matrix-org/synapse/issues/4546)) - Synapse is now tolerant of the `tls_fingerprints` option being None or not specified. ([\#4589](https://github.com/matrix-org/synapse/issues/4589)) - Fix 'no unique or exclusion constraint' error ([\#4591](https://github.com/matrix-org/synapse/issues/4591)) - Transfer Server ACLs on room upgrade. ([\#4608](https://github.com/matrix-org/synapse/issues/4608)) - Fix failure to start when not TLS certificate was given even if TLS was disabled. ([\#4618](https://github.com/matrix-org/synapse/issues/4618)) - Fix self-signed cert notice from generate-config. ([\#4625](https://github.com/matrix-org/synapse/issues/4625)) - Fix performance of `user_ips` table deduplication background update ([\#4626](https://github.com/matrix-org/synapse/issues/4626), [\#4627](https://github.com/matrix-org/synapse/issues/4627)) Internal Changes ---------------- - Change the user directory state query to use a filtered call to the db instead of a generic one. ([\#4462](https://github.com/matrix-org/synapse/issues/4462)) - Reject federation transactions if they include more than 50 PDUs or 100 EDUs. ([\#4513](https://github.com/matrix-org/synapse/issues/4513)) - Reduce duplication of ``synapse.app`` code. ([\#4567](https://github.com/matrix-org/synapse/issues/4567)) - Fix docker upload job to push -py2 images. ([\#4576](https://github.com/matrix-org/synapse/issues/4576)) - Add port configuration information to ACME instructions. ([\#4578](https://github.com/matrix-org/synapse/issues/4578)) - Update MSC1711 FAQ to calrify .well-known usage ([\#4584](https://github.com/matrix-org/synapse/issues/4584)) - Clean up default listener configuration ([\#4586](https://github.com/matrix-org/synapse/issues/4586)) - Clarifications for reverse proxy docs ([\#4607](https://github.com/matrix-org/synapse/issues/4607)) - Move ClientTLSOptionsFactory init out of `refresh_certificates` ([\#4611](https://github.com/matrix-org/synapse/issues/4611)) - Fail cleanly if listener config lacks a 'port' ([\#4616](https://github.com/matrix-org/synapse/issues/4616)) - Remove redundant entries from docker config ([\#4619](https://github.com/matrix-org/synapse/issues/4619)) - README updates ([\#4621](https://github.com/matrix-org/synapse/issues/4621)) Synapse 0.99.0 (2019-02-05) =========================== Synapse v0.99.x is a precursor to the upcoming Synapse v1.0 release. It contains foundational changes to room architecture and the federation security model necessary to support the upcoming r0 release of the Server to Server API. Features -------- - Synapse's cipher string has been updated to require ECDH key exchange. Configuring and generating dh_params is no longer required, and they will be ignored. ([\#4229](https://github.com/matrix-org/synapse/issues/4229)) - Synapse can now automatically provision TLS certificates via ACME (the protocol used by CAs like Let's Encrypt). ([\#4384](https://github.com/matrix-org/synapse/issues/4384), [\#4492](https://github.com/matrix-org/synapse/issues/4492), [\#4525](https://github.com/matrix-org/synapse/issues/4525), [\#4572](https://github.com/matrix-org/synapse/issues/4572), [\#4564](https://github.com/matrix-org/synapse/issues/4564), [\#4566](https://github.com/matrix-org/synapse/issues/4566), [\#4547](https://github.com/matrix-org/synapse/issues/4547), [\#4557](https://github.com/matrix-org/synapse/issues/4557)) - Implement MSC1708 (.well-known routing for server-server federation) ([\#4408](https://github.com/matrix-org/synapse/issues/4408), [\#4409](https://github.com/matrix-org/synapse/issues/4409), [\#4426](https://github.com/matrix-org/synapse/issues/4426), [\#4427](https://github.com/matrix-org/synapse/issues/4427), [\#4428](https://github.com/matrix-org/synapse/issues/4428), [\#4464](https://github.com/matrix-org/synapse/issues/4464), [\#4468](https://github.com/matrix-org/synapse/issues/4468), [\#4487](https://github.com/matrix-org/synapse/issues/4487), [\#4488](https://github.com/matrix-org/synapse/issues/4488), [\#4489](https://github.com/matrix-org/synapse/issues/4489), [\#4497](https://github.com/matrix-org/synapse/issues/4497), [\#4511](https://github.com/matrix-org/synapse/issues/4511), [\#4516](https://github.com/matrix-org/synapse/issues/4516), [\#4520](https://github.com/matrix-org/synapse/issues/4520), [\#4521](https://github.com/matrix-org/synapse/issues/4521), [\#4539](https://github.com/matrix-org/synapse/issues/4539), [\#4542](https://github.com/matrix-org/synapse/issues/4542), [\#4544](https://github.com/matrix-org/synapse/issues/4544)) - Search now includes results from predecessor rooms after a room upgrade. ([\#4415](https://github.com/matrix-org/synapse/issues/4415)) - Config option to disable requesting MSISDN on registration. ([\#4423](https://github.com/matrix-org/synapse/issues/4423)) - Add a metric for tracking event stream position of the user directory. ([\#4445](https://github.com/matrix-org/synapse/issues/4445)) - Support exposing server capabilities in CS API (MSC1753, MSC1804) ([\#4472](https://github.com/matrix-org/synapse/issues/4472), [81b7e7eed](https://github.com/matrix-org/synapse/commit/81b7e7eed323f55d6550e7a270a9dc2c4c7b0fe0))) - Add support for room version 3 ([\#4483](https://github.com/matrix-org/synapse/issues/4483), [\#4499](https://github.com/matrix-org/synapse/issues/4499), [\#4515](https://github.com/matrix-org/synapse/issues/4515), [\#4523](https://github.com/matrix-org/synapse/issues/4523), [\#4535](https://github.com/matrix-org/synapse/issues/4535)) - Synapse will now reload TLS certificates from disk upon SIGHUP. ([\#4495](https://github.com/matrix-org/synapse/issues/4495), [\#4524](https://github.com/matrix-org/synapse/issues/4524)) - The matrixdotorg/synapse Docker images now use Python 3 by default. ([\#4558](https://github.com/matrix-org/synapse/issues/4558)) Bugfixes -------- - Prevent users with access tokens predating the introduction of device IDs from creating spurious entries in the user_ips table. ([\#4369](https://github.com/matrix-org/synapse/issues/4369)) - Fix typo in ALL_USER_TYPES definition to ensure type is a tuple ([\#4392](https://github.com/matrix-org/synapse/issues/4392)) - Fix high CPU usage due to remote devicelist updates ([\#4397](https://github.com/matrix-org/synapse/issues/4397)) - Fix potential bug where creating or joining a room could fail ([\#4404](https://github.com/matrix-org/synapse/issues/4404)) - Fix bug when rejecting remote invites ([\#4405](https://github.com/matrix-org/synapse/issues/4405), [\#4527](https://github.com/matrix-org/synapse/issues/4527)) - Fix incorrect logcontexts after a Deferred was cancelled ([\#4407](https://github.com/matrix-org/synapse/issues/4407)) - Ensure encrypted room state is persisted across room upgrades. ([\#4411](https://github.com/matrix-org/synapse/issues/4411)) - Copy over whether a room is a direct message and any associated room tags on room upgrade. ([\#4412](https://github.com/matrix-org/synapse/issues/4412)) - Fix None guard in calling config.server.is_threepid_reserved ([\#4435](https://github.com/matrix-org/synapse/issues/4435)) - Don't send IP addresses as SNI ([\#4452](https://github.com/matrix-org/synapse/issues/4452)) - Fix UnboundLocalError in post_urlencoded_get_json ([\#4460](https://github.com/matrix-org/synapse/issues/4460)) - Add a timeout to filtered room directory queries. ([\#4461](https://github.com/matrix-org/synapse/issues/4461)) - Workaround for login error when using both LDAP and internal authentication. ([\#4486](https://github.com/matrix-org/synapse/issues/4486)) - Fix a bug where setting a relative consent directory path would cause a crash. ([\#4512](https://github.com/matrix-org/synapse/issues/4512)) Deprecations and Removals ------------------------- - Synapse no longer generates self-signed TLS certificates when generating a configuration file. ([\#4509](https://github.com/matrix-org/synapse/issues/4509)) Improved Documentation ---------------------- - Update debian installation instructions ([\#4526](https://github.com/matrix-org/synapse/issues/4526)) Internal Changes ---------------- - Synapse will now take advantage of native UPSERT functionality in PostgreSQL 9.5+ and SQLite 3.24+. ([\#4306](https://github.com/matrix-org/synapse/issues/4306), [\#4459](https://github.com/matrix-org/synapse/issues/4459), [\#4466](https://github.com/matrix-org/synapse/issues/4466), [\#4471](https://github.com/matrix-org/synapse/issues/4471), [\#4477](https://github.com/matrix-org/synapse/issues/4477), [\#4505](https://github.com/matrix-org/synapse/issues/4505)) - Update README to use the new virtualenv everywhere ([\#4342](https://github.com/matrix-org/synapse/issues/4342)) - Add better logging for unexpected errors while sending transactions ([\#4368](https://github.com/matrix-org/synapse/issues/4368)) - Apply a unique index to the user_ips table, preventing duplicates. ([\#4370](https://github.com/matrix-org/synapse/issues/4370), [\#4432](https://github.com/matrix-org/synapse/issues/4432), [\#4434](https://github.com/matrix-org/synapse/issues/4434)) - Silence travis-ci build warnings by removing non-functional python3.6 ([\#4377](https://github.com/matrix-org/synapse/issues/4377)) - Fix a comment in the generated config file ([\#4387](https://github.com/matrix-org/synapse/issues/4387)) - Add ground work for implementing future federation API versions ([\#4390](https://github.com/matrix-org/synapse/issues/4390)) - Update dependencies on msgpack and pymacaroons to use the up-to-date packages. ([\#4399](https://github.com/matrix-org/synapse/issues/4399)) - Tweak codecov settings to make them less loud. ([\#4400](https://github.com/matrix-org/synapse/issues/4400)) - Implement server support for MSC1794 - Federation v2 Invite API ([\#4402](https://github.com/matrix-org/synapse/issues/4402)) - debian package: symlink to explicit python version ([\#4433](https://github.com/matrix-org/synapse/issues/4433)) - Add infrastructure to support different event formats ([\#4437](https://github.com/matrix-org/synapse/issues/4437), [\#4447](https://github.com/matrix-org/synapse/issues/4447), [\#4448](https://github.com/matrix-org/synapse/issues/4448), [\#4470](https://github.com/matrix-org/synapse/issues/4470), [\#4481](https://github.com/matrix-org/synapse/issues/4481), [\#4482](https://github.com/matrix-org/synapse/issues/4482), [\#4493](https://github.com/matrix-org/synapse/issues/4493), [\#4494](https://github.com/matrix-org/synapse/issues/4494), [\#4496](https://github.com/matrix-org/synapse/issues/4496), [\#4510](https://github.com/matrix-org/synapse/issues/4510), [\#4514](https://github.com/matrix-org/synapse/issues/4514)) - Generate the debian config during build ([\#4444](https://github.com/matrix-org/synapse/issues/4444)) - Clarify documentation for the `public_baseurl` config param ([\#4458](https://github.com/matrix-org/synapse/issues/4458), [\#4498](https://github.com/matrix-org/synapse/issues/4498)) - Fix quoting for allowed_local_3pids example config ([\#4476](https://github.com/matrix-org/synapse/issues/4476)) - Remove deprecated --process-dependency-links option from UPGRADE.rst ([\#4485](https://github.com/matrix-org/synapse/issues/4485)) - Make it possible to set the log level for tests via an environment variable ([\#4506](https://github.com/matrix-org/synapse/issues/4506)) - Reduce the log level of linearizer lock acquirement to DEBUG. ([\#4507](https://github.com/matrix-org/synapse/issues/4507)) - Fix code to comply with linting in PyFlakes 3.7.1. ([\#4519](https://github.com/matrix-org/synapse/issues/4519)) - Add some debug for membership syncing issues ([\#4538](https://github.com/matrix-org/synapse/issues/4538)) - Docker: only copy what we need to the build image ([\#4562](https://github.com/matrix-org/synapse/issues/4562)) Synapse 0.34.1.1 (2019-01-11) ============================= This release fixes CVE-2019-5885 and is recommended for all users of Synapse 0.34.1. This release is compatible with Python 2.7 and 3.5+. Python 3.7 is fully supported. Bugfixes -------- - Fix spontaneous logout on upgrade ([\#4374](https://github.com/matrix-org/synapse/issues/4374)) Synapse 0.34.1 (2019-01-09) =========================== Internal Changes ---------------- - Add better logging for unexpected errors while sending transactions ([\#4361](https://github.com/matrix-org/synapse/issues/4361), [\#4362](https://github.com/matrix-org/synapse/issues/4362)) Synapse 0.34.1rc1 (2019-01-08) ============================== Features -------- - Special-case a support user for use in verifying behaviour of a given server. The support user does not appear in user directory or monthly active user counts. ([\#4141](https://github.com/matrix-org/synapse/issues/4141), [\#4344](https://github.com/matrix-org/synapse/issues/4344)) - Support for serving .well-known files ([\#4262](https://github.com/matrix-org/synapse/issues/4262)) - Rework SAML2 authentication ([\#4265](https://github.com/matrix-org/synapse/issues/4265), [\#4267](https://github.com/matrix-org/synapse/issues/4267)) - SAML2 authentication: Initialise user display name from SAML2 data ([\#4272](https://github.com/matrix-org/synapse/issues/4272)) - Synapse can now have its conditional/extra dependencies installed by pip. This functionality can be used by using `pip install matrix-synapse[feature]`, where feature is a comma separated list with the possible values `email.enable_notifs`, `matrix-synapse-ldap3`, `postgres`, `resources.consent`, `saml2`, `url_preview`, and `test`. If you want to install all optional dependencies, you can use "all" instead. ([\#4298](https://github.com/matrix-org/synapse/issues/4298), [\#4325](https://github.com/matrix-org/synapse/issues/4325), [\#4327](https://github.com/matrix-org/synapse/issues/4327)) - Add routes for reading account data. ([\#4303](https://github.com/matrix-org/synapse/issues/4303)) - Add opt-in support for v2 rooms ([\#4307](https://github.com/matrix-org/synapse/issues/4307)) - Add a script to generate a clean config file ([\#4315](https://github.com/matrix-org/synapse/issues/4315)) - Return server data in /login response ([\#4319](https://github.com/matrix-org/synapse/issues/4319)) Bugfixes -------- - Fix contains_url check to be consistent with other instances in code-base and check that value is an instance of string. ([\#3405](https://github.com/matrix-org/synapse/issues/3405)) - Fix CAS login when username is not valid in an MXID ([\#4264](https://github.com/matrix-org/synapse/issues/4264)) - Send CORS headers for /media/config ([\#4279](https://github.com/matrix-org/synapse/issues/4279)) - Add 'sandbox' to CSP for media reprository ([\#4284](https://github.com/matrix-org/synapse/issues/4284)) - Make the new landing page prettier. ([\#4294](https://github.com/matrix-org/synapse/issues/4294)) - Fix deleting E2E room keys when using old SQLite versions. ([\#4295](https://github.com/matrix-org/synapse/issues/4295)) - The metric synapse_admin_mau:current previously did not update when config.mau_stats_only was set to True ([\#4305](https://github.com/matrix-org/synapse/issues/4305)) - Fixed per-room account data filters ([\#4309](https://github.com/matrix-org/synapse/issues/4309)) - Fix indentation in default config ([\#4313](https://github.com/matrix-org/synapse/issues/4313)) - Fix synapse:latest docker upload ([\#4316](https://github.com/matrix-org/synapse/issues/4316)) - Fix test_metric.py compatibility with prometheus_client 0.5. Contributed by Maarten de Vries . ([\#4317](https://github.com/matrix-org/synapse/issues/4317)) - Avoid packaging _trial_temp directory in -py3 debian packages ([\#4326](https://github.com/matrix-org/synapse/issues/4326)) - Check jinja version for consent resource ([\#4327](https://github.com/matrix-org/synapse/issues/4327)) - fix NPE in /messages by checking if all events were filtered out ([\#4330](https://github.com/matrix-org/synapse/issues/4330)) - Fix `python -m synapse.config` on Python 3. ([\#4356](https://github.com/matrix-org/synapse/issues/4356)) Deprecations and Removals ------------------------- - Remove the deprecated v1/register API on Python 2. It was never ported to Python 3. ([\#4334](https://github.com/matrix-org/synapse/issues/4334)) Internal Changes ---------------- - Getting URL previews of IP addresses no longer fails on Python 3. ([\#4215](https://github.com/matrix-org/synapse/issues/4215)) - drop undocumented dependency on dateutil ([\#4266](https://github.com/matrix-org/synapse/issues/4266)) - Update the example systemd config to use a virtualenv ([\#4273](https://github.com/matrix-org/synapse/issues/4273)) - Update link to kernel DCO guide ([\#4274](https://github.com/matrix-org/synapse/issues/4274)) - Make isort tox check print diff when it fails ([\#4283](https://github.com/matrix-org/synapse/issues/4283)) - Log room_id in Unknown room errors ([\#4297](https://github.com/matrix-org/synapse/issues/4297)) - Documentation improvements for coturn setup. Contributed by Krithin Sitaram. ([\#4333](https://github.com/matrix-org/synapse/issues/4333)) - Update pull request template to use absolute links ([\#4341](https://github.com/matrix-org/synapse/issues/4341)) - Update README to not lie about required restart when updating TLS certificates ([\#4343](https://github.com/matrix-org/synapse/issues/4343)) - Update debian packaging for compatibility with transitional package ([\#4349](https://github.com/matrix-org/synapse/issues/4349)) - Fix command hint to generate a config file when trying to start without a config file ([\#4353](https://github.com/matrix-org/synapse/issues/4353)) - Add better logging for unexpected errors while sending transactions ([\#4358](https://github.com/matrix-org/synapse/issues/4358)) Synapse 0.34.0 (2018-12-20) =========================== Synapse 0.34.0 is the first release to fully support Python 3. Synapse will now run on Python versions 3.5 or 3.6 (as well as 2.7). Support for Python 3.7 remains experimental. We recommend upgrading to Python 3, but make sure to read the [upgrade notes](docs/upgrade.md#upgrading-to-v0340) when doing so. Features -------- - Add 'sandbox' to CSP for media reprository ([\#4284](https://github.com/matrix-org/synapse/issues/4284)) - Make the new landing page prettier. ([\#4294](https://github.com/matrix-org/synapse/issues/4294)) - Fix deleting E2E room keys when using old SQLite versions. ([\#4295](https://github.com/matrix-org/synapse/issues/4295)) - Add a welcome page for the client API port. Credit to @krombel! ([\#4289](https://github.com/matrix-org/synapse/issues/4289)) - Remove Matrix console from the default distribution ([\#4290](https://github.com/matrix-org/synapse/issues/4290)) - Add option to track MAU stats (but not limit people) ([\#3830](https://github.com/matrix-org/synapse/issues/3830)) - Add an option to enable recording IPs for appservice users ([\#3831](https://github.com/matrix-org/synapse/issues/3831)) - Rename login type `m.login.cas` to `m.login.sso` ([\#4220](https://github.com/matrix-org/synapse/issues/4220)) - Add an option to disable search for homeservers that may not be interested in it. ([\#4230](https://github.com/matrix-org/synapse/issues/4230)) Bugfixes -------- - Pushrules can now again be made with non-ASCII rule IDs. ([\#4165](https://github.com/matrix-org/synapse/issues/4165)) - The media repository now no longer fails to decode UTF-8 filenames when downloading remote media. ([\#4176](https://github.com/matrix-org/synapse/issues/4176)) - URL previews now correctly decode non-UTF-8 text if the header contains a ` synapse ([\#3897](https://github.com/matrix-org/synapse/issues/3897)) - Increase the timeout when filling missing events in federation requests ([\#3903](https://github.com/matrix-org/synapse/issues/3903)) - Improve the logging when handling a federation transaction ([\#3904](https://github.com/matrix-org/synapse/issues/3904), [\#3966](https://github.com/matrix-org/synapse/issues/3966)) - Improve logging of outbound federation requests ([\#3906](https://github.com/matrix-org/synapse/issues/3906), [\#3909](https://github.com/matrix-org/synapse/issues/3909)) - Fix the docker image building on python 3 ([\#3911](https://github.com/matrix-org/synapse/issues/3911)) - Add a regression test for logging failed HTTP requests on Python 3. ([\#3912](https://github.com/matrix-org/synapse/issues/3912)) - Comments and interface cleanup for on_receive_pdu ([\#3924](https://github.com/matrix-org/synapse/issues/3924)) - Fix spurious exceptions when remote http client closes conncetion ([\#3925](https://github.com/matrix-org/synapse/issues/3925)) - Log exceptions thrown by background tasks ([\#3927](https://github.com/matrix-org/synapse/issues/3927)) - Add a cache to get_destination_retry_timings ([\#3933](https://github.com/matrix-org/synapse/issues/3933), [\#3991](https://github.com/matrix-org/synapse/issues/3991)) - Automate pushes to docker hub ([\#3946](https://github.com/matrix-org/synapse/issues/3946)) - Require attrs 16.0.0 or later ([\#3947](https://github.com/matrix-org/synapse/issues/3947)) - Fix incompatibility with python3 on alpine ([\#3948](https://github.com/matrix-org/synapse/issues/3948)) - Run the test suite on the oldest supported versions of our dependencies in CI. ([\#3952](https://github.com/matrix-org/synapse/issues/3952)) - CircleCI now only runs merged jobs on PRs, and commit jobs on develop, master, and release branches. ([\#3957](https://github.com/matrix-org/synapse/issues/3957)) - Fix docstrings and add tests for state store methods ([\#3958](https://github.com/matrix-org/synapse/issues/3958)) - fix docstring for FederationClient.get_state_for_room ([\#3963](https://github.com/matrix-org/synapse/issues/3963)) - Run notify_app_services as a bg process ([\#3965](https://github.com/matrix-org/synapse/issues/3965)) - Clarifications in FederationHandler ([\#3967](https://github.com/matrix-org/synapse/issues/3967)) - Further reduce the docker image size ([\#3972](https://github.com/matrix-org/synapse/issues/3972)) - Build py3 docker images for docker hub too ([\#3976](https://github.com/matrix-org/synapse/issues/3976)) - Updated the installation instructions to point to the matrix-synapse package on PyPI. ([\#3985](https://github.com/matrix-org/synapse/issues/3985)) - Disable USE_FROZEN_DICTS for unittests by default. ([\#3987](https://github.com/matrix-org/synapse/issues/3987)) - Remove unused Jenkins and development related files from the repo. ([\#3988](https://github.com/matrix-org/synapse/issues/3988)) - Improve stacktraces in certain exceptions in the logs ([\#3989](https://github.com/matrix-org/synapse/issues/3989)) Synapse 0.33.5.1 (2018-09-25) ============================= Internal Changes ---------------- - Fix incompatibility with older Twisted version in tests. Thanks @OlegGirko! ([\#3940](https://github.com/matrix-org/synapse/issues/3940)) Synapse 0.33.5 (2018-09-24) =========================== No significant changes. Synapse 0.33.5rc1 (2018-09-17) ============================== Features -------- - Python 3.5 and 3.6 support is now in beta. ([\#3576](https://github.com/matrix-org/synapse/issues/3576)) - Implement `event_format` filter param in `/sync` ([\#3790](https://github.com/matrix-org/synapse/issues/3790)) - Add synapse_admin_mau:registered_reserved_users metric to expose number of real reaserved users ([\#3846](https://github.com/matrix-org/synapse/issues/3846)) Bugfixes -------- - Remove connection ID for replication prometheus metrics, as it creates a large number of new series. ([\#3788](https://github.com/matrix-org/synapse/issues/3788)) - guest users should not be part of mau total ([\#3800](https://github.com/matrix-org/synapse/issues/3800)) - Bump dependency on pyopenssl 16.x, to avoid incompatibility with recent Twisted. ([\#3804](https://github.com/matrix-org/synapse/issues/3804)) - Fix existing room tags not coming down sync when joining a room ([\#3810](https://github.com/matrix-org/synapse/issues/3810)) - Fix jwt import check ([\#3824](https://github.com/matrix-org/synapse/issues/3824)) - fix VOIP crashes under Python 3 (#3821) ([\#3835](https://github.com/matrix-org/synapse/issues/3835)) - Fix manhole so that it works with latest openssh clients ([\#3841](https://github.com/matrix-org/synapse/issues/3841)) - Fix outbound requests occasionally wedging, which can result in federation breaking between servers. ([\#3845](https://github.com/matrix-org/synapse/issues/3845)) - Show heroes if room name/canonical alias has been deleted ([\#3851](https://github.com/matrix-org/synapse/issues/3851)) - Fix handling of redacted events from federation ([\#3859](https://github.com/matrix-org/synapse/issues/3859)) - ([\#3874](https://github.com/matrix-org/synapse/issues/3874)) - Mitigate outbound federation randomly becoming wedged ([\#3875](https://github.com/matrix-org/synapse/issues/3875)) Internal Changes ---------------- - CircleCI tests now run on the potential merge of a PR. ([\#3704](https://github.com/matrix-org/synapse/issues/3704)) - http/ is now ported to Python 3. ([\#3771](https://github.com/matrix-org/synapse/issues/3771)) - Improve human readable error messages for threepid registration/account update ([\#3789](https://github.com/matrix-org/synapse/issues/3789)) - Make /sync slightly faster by avoiding needless copies ([\#3795](https://github.com/matrix-org/synapse/issues/3795)) - handlers/ is now ported to Python 3. ([\#3803](https://github.com/matrix-org/synapse/issues/3803)) - Limit the number of PDUs/EDUs per federation transaction ([\#3805](https://github.com/matrix-org/synapse/issues/3805)) - Only start postgres instance for postgres tests on Travis CI ([\#3806](https://github.com/matrix-org/synapse/issues/3806)) - tests/ is now ported to Python 3. ([\#3808](https://github.com/matrix-org/synapse/issues/3808)) - crypto/ is now ported to Python 3. ([\#3822](https://github.com/matrix-org/synapse/issues/3822)) - rest/ is now ported to Python 3. ([\#3823](https://github.com/matrix-org/synapse/issues/3823)) - add some logging for the keyring queue ([\#3826](https://github.com/matrix-org/synapse/issues/3826)) - speed up lazy loading by 2-3x ([\#3827](https://github.com/matrix-org/synapse/issues/3827)) - Improved Dockerfile to remove build requirements after building reducing the image size. ([\#3834](https://github.com/matrix-org/synapse/issues/3834)) - Disable lazy loading for incremental syncs for now ([\#3840](https://github.com/matrix-org/synapse/issues/3840)) - federation/ is now ported to Python 3. ([\#3847](https://github.com/matrix-org/synapse/issues/3847)) - Log when we retry outbound requests ([\#3853](https://github.com/matrix-org/synapse/issues/3853)) - Removed some excess logging messages. ([\#3855](https://github.com/matrix-org/synapse/issues/3855)) - Speed up purge history for rooms that have been previously purged ([\#3856](https://github.com/matrix-org/synapse/issues/3856)) - Refactor some HTTP timeout code. ([\#3857](https://github.com/matrix-org/synapse/issues/3857)) - Fix running merged builds on CircleCI ([\#3858](https://github.com/matrix-org/synapse/issues/3858)) - Fix typo in replication stream exception. ([\#3860](https://github.com/matrix-org/synapse/issues/3860)) - Add in flight real time metrics for Measure blocks ([\#3871](https://github.com/matrix-org/synapse/issues/3871)) - Disable buffering and automatic retrying in treq requests to prevent timeouts. ([\#3872](https://github.com/matrix-org/synapse/issues/3872)) - mention jemalloc in the README ([\#3877](https://github.com/matrix-org/synapse/issues/3877)) - Remove unmaintained "nuke-room-from-db.sh" script ([\#3888](https://github.com/matrix-org/synapse/issues/3888)) Synapse 0.33.4 (2018-09-07) =========================== Internal Changes ---------------- - Unignore synctl in .dockerignore to fix docker builds ([\#3802](https://github.com/matrix-org/synapse/issues/3802)) Synapse 0.33.4rc2 (2018-09-06) ============================== Pull in security fixes from v0.33.3.1 Synapse 0.33.3.1 (2018-09-06) ============================= SECURITY FIXES -------------- - Fix an issue where event signatures were not always correctly validated ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) - Fix an issue where server_acls could be circumvented for incoming events ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) Internal Changes ---------------- - Unignore synctl in .dockerignore to fix docker builds ([\#3802](https://github.com/matrix-org/synapse/issues/3802)) Synapse 0.33.4rc1 (2018-09-04) ============================== Features -------- - Support profile API endpoints on workers ([\#3659](https://github.com/matrix-org/synapse/issues/3659)) - Server notices for resource limit blocking ([\#3680](https://github.com/matrix-org/synapse/issues/3680)) - Allow guests to use /rooms/:roomId/event/:eventId ([\#3724](https://github.com/matrix-org/synapse/issues/3724)) - Add mau_trial_days config param, so that users only get counted as MAU after N days. ([\#3749](https://github.com/matrix-org/synapse/issues/3749)) - Require twisted 17.1 or later (fixes [#3741](https://github.com/matrix-org/synapse/issues/3741)). ([\#3751](https://github.com/matrix-org/synapse/issues/3751)) Bugfixes -------- - Fix error collecting prometheus metrics when run on dedicated thread due to threading concurrency issues ([\#3722](https://github.com/matrix-org/synapse/issues/3722)) - Fix bug where we resent "limit exceeded" server notices repeatedly ([\#3747](https://github.com/matrix-org/synapse/issues/3747)) - Fix bug where we broke sync when using limit_usage_by_mau but hadn't configured server notices ([\#3753](https://github.com/matrix-org/synapse/issues/3753)) - Fix 'federation_domain_whitelist' such that an empty list correctly blocks all outbound federation traffic ([\#3754](https://github.com/matrix-org/synapse/issues/3754)) - Fix tagging of server notice rooms ([\#3755](https://github.com/matrix-org/synapse/issues/3755), [\#3756](https://github.com/matrix-org/synapse/issues/3756)) - Fix 'admin_uri' config variable and error parameter to be 'admin_contact' to match the spec. ([\#3758](https://github.com/matrix-org/synapse/issues/3758)) - Don't return non-LL-member state in incremental sync state blocks ([\#3760](https://github.com/matrix-org/synapse/issues/3760)) - Fix bug in sending presence over federation ([\#3768](https://github.com/matrix-org/synapse/issues/3768)) - Fix bug where preserved threepid user comes to sign up and server is mau blocked ([\#3777](https://github.com/matrix-org/synapse/issues/3777)) Internal Changes ---------------- - Removed the link to the unmaintained matrix-synapse-auto-deploy project from the readme. ([\#3378](https://github.com/matrix-org/synapse/issues/3378)) - Refactor state module to support multiple room versions ([\#3673](https://github.com/matrix-org/synapse/issues/3673)) - The synapse.storage module has been ported to Python 3. ([\#3725](https://github.com/matrix-org/synapse/issues/3725)) - Split the state_group_cache into member and non-member state events (and so speed up LL /sync) ([\#3726](https://github.com/matrix-org/synapse/issues/3726)) - Log failure to authenticate remote servers as warnings (without stack traces) ([\#3727](https://github.com/matrix-org/synapse/issues/3727)) - The CONTRIBUTING guidelines have been updated to mention our use of Markdown and that .misc files have content. ([\#3730](https://github.com/matrix-org/synapse/issues/3730)) - Reference the need for an HTTP replication port when using the federation_reader worker ([\#3734](https://github.com/matrix-org/synapse/issues/3734)) - Fix minor spelling error in federation client documentation. ([\#3735](https://github.com/matrix-org/synapse/issues/3735)) - Remove redundant state resolution function ([\#3737](https://github.com/matrix-org/synapse/issues/3737)) - The test suite now passes on PostgreSQL. ([\#3740](https://github.com/matrix-org/synapse/issues/3740)) - Fix MAU cache invalidation due to missing yield ([\#3746](https://github.com/matrix-org/synapse/issues/3746)) - Make sure that we close db connections opened during init ([\#3764](https://github.com/matrix-org/synapse/issues/3764)) Synapse 0.33.3 (2018-08-22) =========================== Bugfixes -------- - Fix bug introduced in v0.33.3rc1 which made the ToS give a 500 error ([\#3732](https://github.com/matrix-org/synapse/issues/3732)) Synapse 0.33.3rc2 (2018-08-21) ============================== Bugfixes -------- - Fix bug in v0.33.3rc1 which caused infinite loops and OOMs ([\#3723](https://github.com/matrix-org/synapse/issues/3723)) Synapse 0.33.3rc1 (2018-08-21) ============================== Features -------- - Add support for the SNI extension to federation TLS connections. Thanks to @vojeroen! ([\#3439](https://github.com/matrix-org/synapse/issues/3439)) - Add /_media/r0/config ([\#3184](https://github.com/matrix-org/synapse/issues/3184)) - speed up /members API and add `at` and `membership` params as per MSC1227 ([\#3568](https://github.com/matrix-org/synapse/issues/3568)) - implement `summary` block in /sync response as per MSC688 ([\#3574](https://github.com/matrix-org/synapse/issues/3574)) - Add lazy-loading support to /messages as per MSC1227 ([\#3589](https://github.com/matrix-org/synapse/issues/3589)) - Add ability to limit number of monthly active users on the server ([\#3633](https://github.com/matrix-org/synapse/issues/3633)) - Support more federation endpoints on workers ([\#3653](https://github.com/matrix-org/synapse/issues/3653)) - Basic support for room versioning ([\#3654](https://github.com/matrix-org/synapse/issues/3654)) - Ability to disable client/server Synapse via conf toggle ([\#3655](https://github.com/matrix-org/synapse/issues/3655)) - Ability to whitelist specific threepids against monthly active user limiting ([\#3662](https://github.com/matrix-org/synapse/issues/3662)) - Add some metrics for the appservice and federation event sending loops ([\#3664](https://github.com/matrix-org/synapse/issues/3664)) - Where server is disabled, block ability for locked out users to read new messages ([\#3670](https://github.com/matrix-org/synapse/issues/3670)) - set admin uri via config, to be used in error messages where the user should contact the administrator ([\#3687](https://github.com/matrix-org/synapse/issues/3687)) - Synapse's presence functionality can now be disabled with the "use_presence" configuration option. ([\#3694](https://github.com/matrix-org/synapse/issues/3694)) - For resource limit blocked users, prevent writing into rooms ([\#3708](https://github.com/matrix-org/synapse/issues/3708)) Bugfixes -------- - Fix occasional glitches in the synapse_event_persisted_position metric ([\#3658](https://github.com/matrix-org/synapse/issues/3658)) - Fix bug on deleting 3pid when using identity servers that don't support unbind API ([\#3661](https://github.com/matrix-org/synapse/issues/3661)) - Make the tests pass on Twisted < 18.7.0 ([\#3676](https://github.com/matrix-org/synapse/issues/3676)) - Don’t ship recaptcha_ajax.js, use it directly from Google ([\#3677](https://github.com/matrix-org/synapse/issues/3677)) - Fixes test_reap_monthly_active_users so it passes under postgres ([\#3681](https://github.com/matrix-org/synapse/issues/3681)) - Fix mau blocking calulation bug on login ([\#3689](https://github.com/matrix-org/synapse/issues/3689)) - Fix missing yield in synapse.storage.monthly_active_users.initialise_reserved_users ([\#3692](https://github.com/matrix-org/synapse/issues/3692)) - Improve HTTP request logging to include all requests ([\#3700](https://github.com/matrix-org/synapse/issues/3700)) - Avoid timing out requests while we are streaming back the response ([\#3701](https://github.com/matrix-org/synapse/issues/3701)) - Support more federation endpoints on workers ([\#3705](https://github.com/matrix-org/synapse/issues/3705), [\#3713](https://github.com/matrix-org/synapse/issues/3713)) - Fix "Starting db txn 'get_all_updated_receipts' from sentinel context" warning ([\#3710](https://github.com/matrix-org/synapse/issues/3710)) - Fix bug where `state_cache` cache factor ignored environment variables ([\#3719](https://github.com/matrix-org/synapse/issues/3719)) Deprecations and Removals ------------------------- - The Shared-Secret registration method of the legacy v1/register REST endpoint has been removed. For a replacement, please see [the admin/register API documentation](https://github.com/matrix-org/synapse/blob/master/docs/admin_api/register_api.rst). ([\#3703](https://github.com/matrix-org/synapse/issues/3703)) Internal Changes ---------------- - The test suite now can run under PostgreSQL. ([\#3423](https://github.com/matrix-org/synapse/issues/3423)) - Refactor HTTP replication endpoints to reduce code duplication ([\#3632](https://github.com/matrix-org/synapse/issues/3632)) - Tests now correctly execute on Python 3. ([\#3647](https://github.com/matrix-org/synapse/issues/3647)) - Sytests can now be run inside a Docker container. ([\#3660](https://github.com/matrix-org/synapse/issues/3660)) - Port over enough to Python 3 to allow the sytests to start. ([\#3668](https://github.com/matrix-org/synapse/issues/3668)) - Update docker base image from alpine 3.7 to 3.8. ([\#3669](https://github.com/matrix-org/synapse/issues/3669)) - Rename synapse.util.async to synapse.util.async_helpers to mitigate async becoming a keyword on Python 3.7. ([\#3678](https://github.com/matrix-org/synapse/issues/3678)) - Synapse's tests are now formatted with the black autoformatter. ([\#3679](https://github.com/matrix-org/synapse/issues/3679)) - Implemented a new testing base class to reduce test boilerplate. ([\#3684](https://github.com/matrix-org/synapse/issues/3684)) - Rename MAU prometheus metrics ([\#3690](https://github.com/matrix-org/synapse/issues/3690)) - add new error type ResourceLimit ([\#3707](https://github.com/matrix-org/synapse/issues/3707)) - Logcontexts for replication command handlers ([\#3709](https://github.com/matrix-org/synapse/issues/3709)) - Update admin register API documentation to reference a real user ID. ([\#3712](https://github.com/matrix-org/synapse/issues/3712)) Synapse 0.33.2 (2018-08-09) =========================== No significant changes. Synapse 0.33.2rc1 (2018-08-07) ============================== Features -------- - add support for the lazy_loaded_members filter as per MSC1227 ([\#2970](https://github.com/matrix-org/synapse/issues/2970)) - add support for the include_redundant_members filter param as per MSC1227 ([\#3331](https://github.com/matrix-org/synapse/issues/3331)) - Add metrics to track resource usage by background processes ([\#3553](https://github.com/matrix-org/synapse/issues/3553), [\#3556](https://github.com/matrix-org/synapse/issues/3556), [\#3604](https://github.com/matrix-org/synapse/issues/3604), [\#3610](https://github.com/matrix-org/synapse/issues/3610)) - Add `code` label to `synapse_http_server_response_time_seconds` prometheus metric ([\#3554](https://github.com/matrix-org/synapse/issues/3554)) - Add support for client_reader to handle more APIs ([\#3555](https://github.com/matrix-org/synapse/issues/3555), [\#3597](https://github.com/matrix-org/synapse/issues/3597)) - make the /context API filter & lazy-load aware as per MSC1227 ([\#3567](https://github.com/matrix-org/synapse/issues/3567)) - Add ability to limit number of monthly active users on the server ([\#3630](https://github.com/matrix-org/synapse/issues/3630)) - When we fail to join a room over federation, pass the error code back to the client. ([\#3639](https://github.com/matrix-org/synapse/issues/3639)) - Add a new /admin/register API for non-interactively creating users. ([\#3415](https://github.com/matrix-org/synapse/issues/3415)) Bugfixes -------- - Make /directory/list API return 404 for room not found instead of 400. Thanks to @fuzzmz! ([\#3620](https://github.com/matrix-org/synapse/issues/3620)) - Default inviter_display_name to mxid for email invites ([\#3391](https://github.com/matrix-org/synapse/issues/3391)) - Don't generate TURN credentials if no TURN config options are set ([\#3514](https://github.com/matrix-org/synapse/issues/3514)) - Correctly announce deleted devices over federation ([\#3520](https://github.com/matrix-org/synapse/issues/3520)) - Catch failures saving metrics captured by Measure, and instead log the faulty metrics information for further analysis. ([\#3548](https://github.com/matrix-org/synapse/issues/3548)) - Unicode passwords are now normalised before hashing, preventing the instance where two different devices or browsers might send a different UTF-8 sequence for the password. ([\#3569](https://github.com/matrix-org/synapse/issues/3569)) - Fix potential stack overflow and deadlock under heavy load ([\#3570](https://github.com/matrix-org/synapse/issues/3570)) - Respond with M_NOT_FOUND when profiles are not found locally or over federation. Fixes #3585 ([\#3585](https://github.com/matrix-org/synapse/issues/3585)) - Fix failure to persist events over federation under load ([\#3601](https://github.com/matrix-org/synapse/issues/3601)) - Fix updating of cached remote profiles ([\#3605](https://github.com/matrix-org/synapse/issues/3605)) - Fix 'tuple index out of range' error ([\#3607](https://github.com/matrix-org/synapse/issues/3607)) - Only import secrets when available (fix for py < 3.6) ([\#3626](https://github.com/matrix-org/synapse/issues/3626)) Internal Changes ---------------- - Remove redundant checks on who_forgot_in_room ([\#3350](https://github.com/matrix-org/synapse/issues/3350)) - Remove unnecessary event re-signing hacks ([\#3367](https://github.com/matrix-org/synapse/issues/3367)) - Rewrite cache list decorator ([\#3384](https://github.com/matrix-org/synapse/issues/3384)) - Move v1-only REST APIs into their own module. ([\#3460](https://github.com/matrix-org/synapse/issues/3460)) - Replace more instances of Python 2-only iteritems and itervalues uses. ([\#3562](https://github.com/matrix-org/synapse/issues/3562)) - Refactor EventContext to accept state during init ([\#3577](https://github.com/matrix-org/synapse/issues/3577)) - Improve Dockerfile and docker-compose instructions ([\#3543](https://github.com/matrix-org/synapse/issues/3543)) - Release notes are now in the Markdown format. ([\#3552](https://github.com/matrix-org/synapse/issues/3552)) - add config for pep8 ([\#3559](https://github.com/matrix-org/synapse/issues/3559)) - Merge Linearizer and Limiter ([\#3571](https://github.com/matrix-org/synapse/issues/3571), [\#3572](https://github.com/matrix-org/synapse/issues/3572)) - Lazily load state on master process when using workers to reduce DB consumption ([\#3579](https://github.com/matrix-org/synapse/issues/3579), [\#3581](https://github.com/matrix-org/synapse/issues/3581), [\#3582](https://github.com/matrix-org/synapse/issues/3582), [\#3584](https://github.com/matrix-org/synapse/issues/3584)) - Fixes and optimisations for resolve_state_groups ([\#3586](https://github.com/matrix-org/synapse/issues/3586)) - Improve logging for exceptions when handling PDUs ([\#3587](https://github.com/matrix-org/synapse/issues/3587)) - Add some measure blocks to persist_events ([\#3590](https://github.com/matrix-org/synapse/issues/3590)) - Fix some random logcontext leaks. ([\#3591](https://github.com/matrix-org/synapse/issues/3591), [\#3606](https://github.com/matrix-org/synapse/issues/3606)) - Speed up calculating state deltas in persist_event loop ([\#3592](https://github.com/matrix-org/synapse/issues/3592)) - Attempt to reduce amount of state pulled out of DB during persist_events ([\#3595](https://github.com/matrix-org/synapse/issues/3595)) - Fix a documentation typo in on_make_leave_request ([\#3609](https://github.com/matrix-org/synapse/issues/3609)) - Make EventStore inherit from EventFederationStore ([\#3612](https://github.com/matrix-org/synapse/issues/3612)) - Remove some redundant joins on event_edges.room_id ([\#3613](https://github.com/matrix-org/synapse/issues/3613)) - Stop populating events.content ([\#3614](https://github.com/matrix-org/synapse/issues/3614)) - Update the /send_leave path registration to use event_id rather than a transaction ID. ([\#3616](https://github.com/matrix-org/synapse/issues/3616)) - Refactor FederationHandler to move DB writes into separate functions ([\#3621](https://github.com/matrix-org/synapse/issues/3621)) - Remove unused field "pdu_failures" from transactions. ([\#3628](https://github.com/matrix-org/synapse/issues/3628)) - rename replication_layer to federation_client ([\#3634](https://github.com/matrix-org/synapse/issues/3634)) - Factor out exception handling in federation_client ([\#3638](https://github.com/matrix-org/synapse/issues/3638)) - Refactor location of docker build script. ([\#3644](https://github.com/matrix-org/synapse/issues/3644)) - Update CONTRIBUTING to mention newsfragments. ([\#3645](https://github.com/matrix-org/synapse/issues/3645)) Synapse 0.33.1 (2018-08-02) =========================== SECURITY FIXES -------------- - Fix a potential issue where servers could request events for rooms they have not joined. ([\#3641](https://github.com/matrix-org/synapse/issues/3641)) - Fix a potential issue where users could see events in private rooms before they joined. ([\#3642](https://github.com/matrix-org/synapse/issues/3642)) Synapse 0.33.0 (2018-07-19) =========================== Bugfixes -------- - Disable a noisy warning about logcontexts. ([\#3561](https://github.com/matrix-org/synapse/issues/3561)) Synapse 0.33.0rc1 (2018-07-18) ============================== Features -------- - Enforce the specified API for report\_event. ([\#3316](https://github.com/matrix-org/synapse/issues/3316)) - Include CPU time from database threads in request/block metrics. ([\#3496](https://github.com/matrix-org/synapse/issues/3496), [\#3501](https://github.com/matrix-org/synapse/issues/3501)) - Add CPU metrics for \_fetch\_event\_list. ([\#3497](https://github.com/matrix-org/synapse/issues/3497)) - Optimisation to make handling incoming federation requests more efficient. ([\#3541](https://github.com/matrix-org/synapse/issues/3541)) Bugfixes -------- - Fix a significant performance regression in /sync. ([\#3505](https://github.com/matrix-org/synapse/issues/3505), [\#3521](https://github.com/matrix-org/synapse/issues/3521), [\#3530](https://github.com/matrix-org/synapse/issues/3530), [\#3544](https://github.com/matrix-org/synapse/issues/3544)) - Use more portable syntax in our use of the attrs package, widening the supported versions. ([\#3498](https://github.com/matrix-org/synapse/issues/3498)) - Fix queued federation requests being processed in the wrong order. ([\#3533](https://github.com/matrix-org/synapse/issues/3533)) - Ensure that erasure requests are correctly honoured for publicly accessible rooms when accessed over federation. ([\#3546](https://github.com/matrix-org/synapse/issues/3546)) Misc ---- - Refactoring to improve testability. ([\#3351](https://github.com/matrix-org/synapse/issues/3351), [\#3499](https://github.com/matrix-org/synapse/issues/3499)) - Use `isort` to sort imports. ([\#3463](https://github.com/matrix-org/synapse/issues/3463), [\#3464](https://github.com/matrix-org/synapse/issues/3464), [\#3540](https://github.com/matrix-org/synapse/issues/3540)) - Use parse and asserts from http.servlet. ([\#3534](https://github.com/matrix-org/synapse/issues/3534), [\#3535](https://github.com/matrix-org/synapse/issues/3535)). Synapse 0.32.2 (2018-07-07) =========================== Bugfixes -------- - Amend the Python dependencies to depend on attrs from PyPI, not attr ([\#3492](https://github.com/matrix-org/synapse/issues/3492)) Synapse 0.32.1 (2018-07-06) =========================== Bugfixes -------- - Add explicit dependency on netaddr ([\#3488](https://github.com/matrix-org/synapse/issues/3488)) Changes in synapse v0.32.0 (2018-07-06) ======================================= No changes since 0.32.0rc1 Synapse 0.32.0rc1 (2018-07-05) ============================== Features -------- - Add blacklist & whitelist of servers allowed to send events to a room via `m.room.server_acl` event. - Cache factor override system for specific caches ([\#3334](https://github.com/matrix-org/synapse/issues/3334)) - Add metrics to track appservice transactions ([\#3344](https://github.com/matrix-org/synapse/issues/3344)) - Try to log more helpful info when a sig verification fails ([\#3372](https://github.com/matrix-org/synapse/issues/3372)) - Synapse now uses the best performing JSON encoder/decoder according to your runtime (simplejson on CPython, stdlib json on PyPy). ([\#3462](https://github.com/matrix-org/synapse/issues/3462)) - Add optional ip\_range\_whitelist param to AS registration files to lock AS IP access ([\#3465](https://github.com/matrix-org/synapse/issues/3465)) - Reject invalid server names in federation requests ([\#3480](https://github.com/matrix-org/synapse/issues/3480)) - Reject invalid server names in homeserver.yaml ([\#3483](https://github.com/matrix-org/synapse/issues/3483)) Bugfixes -------- - Strip access\_token from outgoing requests ([\#3327](https://github.com/matrix-org/synapse/issues/3327)) - Redact AS tokens in logs ([\#3349](https://github.com/matrix-org/synapse/issues/3349)) - Fix federation backfill from SQLite servers ([\#3355](https://github.com/matrix-org/synapse/issues/3355)) - Fix event-purge-by-ts admin API ([\#3363](https://github.com/matrix-org/synapse/issues/3363)) - Fix event filtering in get\_missing\_events handler ([\#3371](https://github.com/matrix-org/synapse/issues/3371)) - Synapse is now stricter regarding accepting events which it cannot retrieve the prev\_events for. ([\#3456](https://github.com/matrix-org/synapse/issues/3456)) - Fix bug where synapse would explode when receiving unicode in HTTP User-Agent header ([\#3470](https://github.com/matrix-org/synapse/issues/3470)) - Invalidate cache on correct thread to avoid race ([\#3473](https://github.com/matrix-org/synapse/issues/3473)) Improved Documentation ---------------------- - `doc/postgres.rst`: fix display of the last command block. Thanks to @ArchangeGabriel! ([\#3340](https://github.com/matrix-org/synapse/issues/3340)) Deprecations and Removals ------------------------- - Remove was\_forgotten\_at ([\#3324](https://github.com/matrix-org/synapse/issues/3324)) Misc ---- - [\#3332](https://github.com/matrix-org/synapse/issues/3332), [\#3341](https://github.com/matrix-org/synapse/issues/3341), [\#3347](https://github.com/matrix-org/synapse/issues/3347), [\#3348](https://github.com/matrix-org/synapse/issues/3348), [\#3356](https://github.com/matrix-org/synapse/issues/3356), [\#3385](https://github.com/matrix-org/synapse/issues/3385), [\#3446](https://github.com/matrix-org/synapse/issues/3446), [\#3447](https://github.com/matrix-org/synapse/issues/3447), [\#3467](https://github.com/matrix-org/synapse/issues/3467), [\#3474](https://github.com/matrix-org/synapse/issues/3474) Changes in synapse v0.31.2 (2018-06-14) ======================================= SECURITY UPDATE: Prevent unauthorised users from setting state events in a room when there is no `m.room.power_levels` event in force in the room. (PR #3397) Discussion around the Matrix Spec change proposal for this change can be followed at . Changes in synapse v0.31.1 (2018-06-08) ======================================= v0.31.1 fixes a security bug in the `get_missing_events` federation API where event visibility rules were not applied correctly. We are not aware of it being actively exploited but please upgrade asap. Bug Fixes: - Fix event filtering in get\_missing\_events handler (PR #3371) Changes in synapse v0.31.0 (2018-06-06) ======================================= Most notable change from v0.30.0 is to switch to the python prometheus library to improve system stats reporting. WARNING: this changes a number of prometheus metrics in a backwards-incompatible manner. For more details, see [docs/metrics-howto.rst](docs/metrics-howto.rst#removal-of-deprecated-metrics--time-based-counters-becoming-histograms-in-0310). Bug Fixes: - Fix metric documentation tables (PR #3341) - Fix LaterGauge error handling (694968f) - Fix replication metrics (b7e7fd2) Changes in synapse v0.31.0-rc1 (2018-06-04) =========================================== Features: - Switch to the Python Prometheus library (PR #3256, #3274) - Let users leave the server notice room after joining (PR #3287) Changes: - daily user type phone home stats (PR #3264) - Use iter\* methods for \_filter\_events\_for\_server (PR #3267) - Docs on consent bits (PR #3268) - Remove users from user directory on deactivate (PR #3277) - Avoid sending consent notice to guest users (PR #3288) - disable CPUMetrics if no /proc/self/stat (PR #3299) - Consistently use six\'s iteritems and wrap lazy keys/values in list() if they\'re not meant to be lazy (PR #3307) - Add private IPv6 addresses to example config for url preview blacklist (PR #3317) Thanks to @thegcat! - Reduce stuck read-receipts: ignore depth when updating (PR #3318) - Put python\'s logs into Trial when running unit tests (PR #3319) Changes, python 3 migration: - Replace some more comparisons with six (PR #3243) Thanks to @NotAFile! - replace some iteritems with six (PR #3244) Thanks to @NotAFile! - Add batch\_iter to utils (PR #3245) Thanks to @NotAFile! - use repr, not str (PR #3246) Thanks to @NotAFile! - Misc Python3 fixes (PR #3247) Thanks to @NotAFile! - Py3 storage/\_base.py (PR #3278) Thanks to @NotAFile! - more six iteritems (PR #3279) Thanks to @NotAFile! - More Misc. py3 fixes (PR #3280) Thanks to @NotAFile! - remaining isintance fixes (PR #3281) Thanks to @NotAFile! - py3-ize state.py (PR #3283) Thanks to @NotAFile! - extend tox testing for py3 to avoid regressions (PR #3302) Thanks to @krombel! - use memoryview in py3 (PR #3303) Thanks to @NotAFile! Bugs: - Fix federation backfill bugs (PR #3261) - federation: fix LaterGauge usage (PR #3328) Thanks to @intelfx! Changes in synapse v0.30.0 (2018-05-24) ======================================= \'Server Notices\' are a new feature introduced in Synapse 0.30. They provide a channel whereby server administrators can send messages to users on the server. They are used as part of communication of the server policies (see `docs/consent_tracking.md`), however the intention is that they may also find a use for features such as \"Message of the day\". This feature is specific to Synapse, but uses standard Matrix communication mechanisms, so should work with any Matrix client. For more details see `docs/server_notices.md` Further Server Notices/Consent Tracking Support: - Allow overriding the server\_notices user\'s avatar (PR #3273) - Use the localpart in the consent uri (PR #3272) - Support for putting %(consent\_uri)s in messages (PR #3271) - Block attempts to send server notices to remote users (PR #3270) - Docs on consent bits (PR #3268) Changes in synapse v0.30.0-rc1 (2018-05-23) =========================================== Server Notices/Consent Tracking Support: - ConsentResource to gather policy consent from users (PR #3213) - Move RoomCreationHandler out of synapse.handlers.Handlers (PR #3225) - Infrastructure for a server notices room (PR #3232) - Send users a server notice about consent (PR #3236) - Reject attempts to send event before privacy consent is given (PR #3257) - Add a \'has\_consented\' template var to consent forms (PR #3262) - Fix dependency on jinja2 (PR #3263) Features: - Cohort analytics (PR #3163, #3241, #3251) - Add lxml to docker image for web previews (PR #3239) Thanks to @ptman! - Add in flight request metrics (PR #3252) Changes: - Remove unused update\_external\_syncs (PR #3233) - Use stream rather depth ordering for push actions (PR #3212) - Make purge\_history operate on tokens (PR #3221) - Don\'t support limitless pagination (PR #3265) Bug Fixes: - Fix logcontext resource usage tracking (PR #3258) - Fix error in handling receipts (PR #3235) - Stop the transaction cache caching failures (PR #3255) Changes in synapse v0.29.1 (2018-05-17) ======================================= Changes: - Update docker documentation (PR #3222) Changes in synapse v0.29.0 (2018-05-16) ======================================= Not changes since v0.29.0-rc1 Changes in synapse v0.29.0-rc1 (2018-05-14) =========================================== Notable changes, a docker file for running Synapse (Thanks to @kaiyou!) and a closed spec bug in the Client Server API. Additionally further prep for Python 3 migration. Potentially breaking change: - Make Client-Server API return 401 for invalid token (PR #3161). This changes the Client-server spec to return a 401 error code instead of 403 when the access token is unrecognised. This is the behaviour required by the specification, but some clients may be relying on the old, incorrect behaviour. Thanks to @NotAFile for fixing this. Features: - Add a Dockerfile for synapse (PR #2846) Thanks to @kaiyou! Changes - General: - nuke-room-from-db.sh: added postgresql option and help (PR #2337) Thanks to @rubo77! - Part user from rooms on account deactivate (PR #3201) - Make \'unexpected logging context\' into warnings (PR #3007) - Set Server header in SynapseRequest (PR #3208) - remove duplicates from groups tables (PR #3129) - Improve exception handling for background processes (PR #3138) - Add missing consumeErrors to improve exception handling (PR #3139) - reraise exceptions more carefully (PR #3142) - Remove redundant call to preserve\_fn (PR #3143) - Trap exceptions thrown within run\_in\_background (PR #3144) Changes - Refactors: - Refactor /context to reuse pagination storage functions (PR #3193) - Refactor recent events func to use pagination func (PR #3195) - Refactor pagination DB API to return concrete type (PR #3196) - Refactor get\_recent\_events\_for\_room return type (PR #3198) - Refactor sync APIs to reuse pagination API (PR #3199) - Remove unused code path from member change DB func (PR #3200) - Refactor request handling wrappers (PR #3203) - transaction\_id, destination defined twice (PR #3209) Thanks to @damir-manapov! - Refactor event storage to prepare for changes in state calculations (PR #3141) - Set Server header in SynapseRequest (PR #3208) - Use deferred.addTimeout instead of time\_bound\_deferred (PR #3127, #3178) - Use run\_in\_background in preference to preserve\_fn (PR #3140) Changes - Python 3 migration: - Construct HMAC as bytes on py3 (PR #3156) Thanks to @NotAFile! - run config tests on py3 (PR #3159) Thanks to @NotAFile! - Open certificate files as bytes (PR #3084) Thanks to @NotAFile! - Open config file in non-bytes mode (PR #3085) Thanks to @NotAFile! - Make event properties raise AttributeError instead (PR #3102) Thanks to @NotAFile! - Use six.moves.urlparse (PR #3108) Thanks to @NotAFile! - Add py3 tests to tox with folders that work (PR #3145) Thanks to @NotAFile! - Don\'t yield in list comprehensions (PR #3150) Thanks to @NotAFile! - Move more xrange to six (PR #3151) Thanks to @NotAFile! - make imports local (PR #3152) Thanks to @NotAFile! - move httplib import to six (PR #3153) Thanks to @NotAFile! - Replace stringIO imports with six (PR #3154, #3168) Thanks to @NotAFile! - more bytes strings (PR #3155) Thanks to @NotAFile! Bug Fixes: - synapse fails to start under Twisted \>= 18.4 (PR #3157) - Fix a class of logcontext leaks (PR #3170) - Fix a couple of logcontext leaks in unit tests (PR #3172) - Fix logcontext leak in media repo (PR #3174) - Escape label values in prometheus metrics (PR #3175, #3186) - Fix \'Unhandled Error\' logs with Twisted 18.4 (PR #3182) Thanks to @Half-Shot! - Fix logcontext leaks in rate limiter (PR #3183) - notifications: Convert next\_token to string according to the spec (PR #3190) Thanks to @mujx! - nuke-room-from-db.sh: fix deletion from search table (PR #3194) Thanks to @rubo77! - add guard for None on purge\_history api (PR #3160) Thanks to @krombel! Changes in synapse v0.28.1 (2018-05-01) ======================================= SECURITY UPDATE - Clamp the allowed values of event depth received over federation to be \[0, 2\^63 - 1\]. This mitigates an attack where malicious events injected with depth = 2\^63 - 1 render rooms unusable. Depth is used to determine the cosmetic ordering of events within a room, and so the ordering of events in such a room will default to using stream\_ordering rather than depth (topological\_ordering). This is a temporary solution to mitigate abuse in the wild, whilst a long term solution is being implemented to improve how the depth parameter is used. Full details at - Pin Twisted to \<18.4 until we stop using the private \_OpenSSLECCurve API. Changes in synapse v0.28.0 (2018-04-26) ======================================= Bug Fixes: - Fix quarantine media admin API and search reindex (PR #3130) - Fix media admin APIs (PR #3134) Changes in synapse v0.28.0-rc1 (2018-04-24) =========================================== Minor performance improvement to federation sending and bug fixes. (Note: This release does not include the delta state resolution implementation discussed in matrix live) Features: - Add metrics for event processing lag (PR #3090) - Add metrics for ResponseCache (PR #3092) Changes: - Synapse on PyPy (PR #2760) Thanks to @Valodim! - move handling of auto\_join\_rooms to RegisterHandler (PR #2996) Thanks to @krombel! - Improve handling of SRV records for federation connections (PR #3016) Thanks to @silkeh! - Document the behaviour of ResponseCache (PR #3059) - Preparation for py3 (PR #3061, #3073, #3074, #3075, #3103, #3104, #3106, #3107, #3109, #3110) Thanks to @NotAFile! - update prometheus dashboard to use new metric names (PR #3069) Thanks to @krombel! - use python3-compatible prints (PR #3074) Thanks to @NotAFile! - Send federation events concurrently (PR #3078) - Limit concurrent event sends for a room (PR #3079) - Improve R30 stat definition (PR #3086) - Send events to ASes concurrently (PR #3088) - Refactor ResponseCache usage (PR #3093) - Clarify that SRV may not point to a CNAME (PR #3100) Thanks to @silkeh! - Use str(e) instead of e.message (PR #3103) Thanks to @NotAFile! - Use six.itervalues in some places (PR #3106) Thanks to @NotAFile! - Refactor store.have\_events (PR #3117) Bug Fixes: - Return 401 for invalid access\_token on logout (PR #2938) Thanks to @dklug! - Return a 404 rather than a 500 on rejoining empty rooms (PR #3080) - fix federation\_domain\_whitelist (PR #3099) - Avoid creating events with huge numbers of prev\_events (PR #3113) - Reject events which have lots of prev\_events (PR #3118) Changes in synapse v0.27.4 (2018-04-13) ======================================= Changes: - Update canonicaljson dependency (\#3095) Changes in synapse v0.27.3 (2018-04-11) ====================================== Bug fixes: - URL quote path segments over federation (\#3082) Changes in synapse v0.27.3-rc2 (2018-04-09) =========================================== v0.27.3-rc1 used a stale version of the develop branch so the changelog overstates the functionality. v0.27.3-rc2 is up to date, rc1 should be ignored. Changes in synapse v0.27.3-rc1 (2018-04-09) =========================================== Notable changes include API support for joinability of groups. Also new metrics and phone home stats. Phone home stats include better visibility of system usage so we can tweak synpase to work better for all users rather than our own experience with matrix.org. Also, recording \'r30\' stat which is the measure we use to track overal growth of the Matrix ecosystem. It is defined as:- Counts the number of native 30 day retained users, defined as:- \* Users who have created their accounts more than 30 days : - Where last seen at most 30 days ago - Where account creation and last\_seen are \> 30 days\" Features: - Add joinability for groups (PR #3045) - Implement group join API (PR #3046) - Add counter metrics for calculating state delta (PR #3033) - R30 stats (PR #3041) - Measure time it takes to calculate state group ID (PR #3043) - Add basic performance statistics to phone home (PR #3044) - Add response size metrics (PR #3071) - phone home cache size configurations (PR #3063) Changes: - Add a blurb explaining the main synapse worker (PR #2886) Thanks to @turt2live! - Replace old style error catching with \'as\' keyword (PR #3000) Thanks to @NotAFile! - Use .iter\* to avoid copies in StateHandler (PR #3006) - Linearize calls to \_generate\_user\_id (PR #3029) - Remove last usage of ujson (PR #3030) - Use simplejson throughout (PR #3048) - Use static JSONEncoders (PR #3049) - Remove uses of events.content (PR #3060) - Improve database cache performance (PR #3068) Bug fixes: - Add room\_id to the response of rooms/{roomId}/join (PR #2986) Thanks to @jplatte! - Fix replication after switch to simplejson (PR #3015) - 404 correctly on missing paths via NoResource (PR #3022) - Fix error when claiming e2e keys from offline servers (PR #3034) - fix tests/storage/test\_user\_directory.py (PR #3042) - use PUT instead of POST for federating groups/m.join\_policy (PR #3070) Thanks to @krombel! - postgres port script: fix state\_groups\_pkey error (PR #3072) Changes in synapse v0.27.2 (2018-03-26) ======================================= Bug fixes: - Fix bug which broke TCP replication between workers (PR #3015) Changes in synapse v0.27.1 (2018-03-26) ======================================= Meta release as v0.27.0 temporarily pointed to the wrong commit Changes in synapse v0.27.0 (2018-03-26) ======================================= No changes since v0.27.0-rc2 Changes in synapse v0.27.0-rc2 (2018-03-19) =========================================== Pulls in v0.26.1 Bug fixes: - Fix bug introduced in v0.27.0-rc1 that causes much increased memory usage in state cache (PR #3005) Changes in synapse v0.26.1 (2018-03-15) ======================================= Bug fixes: - Fix bug where an invalid event caused server to stop functioning correctly, due to parsing and serializing bugs in ujson library (PR #3008) Changes in synapse v0.27.0-rc1 (2018-03-14) =========================================== The common case for running Synapse is not to run separate workers, but for those that do, be aware that synctl no longer starts the main synapse when using `-a` option with workers. A new worker file should be added with `worker_app: synapse.app.homeserver`. This release also begins the process of renaming a number of the metrics reported to prometheus. See [docs/metrics-howto.rst](docs/metrics-howto.rst#block-and-response-metrics-renamed-for-0-27-0). Note that the v0.28.0 release will remove the deprecated metric names. Features: - Add ability for ASes to override message send time (PR #2754) - Add support for custom storage providers for media repository (PR #2867, #2777, #2783, #2789, #2791, #2804, #2812, #2814, #2857, #2868, #2767) - Add purge API features, see [docs/admin\_api/purge\_history\_api.rst](docs/admin_api/purge_history_api.rst) for full details (PR #2858, #2867, #2882, #2946, #2962, #2943) - Add support for whitelisting 3PIDs that users can register. (PR #2813) - Add `/room/{id}/event/{id}` API (PR #2766) - Add an admin API to get all the media in a room (PR #2818) Thanks to @turt2live! - Add `federation_domain_whitelist` option (PR #2820, #2821) Changes: - Continue to factor out processing from main process and into worker processes. See updated [docs/workers.rst](docs/workers.rst) (PR #2892 - \#2904, #2913, #2920 - \#2926, #2947, #2847, #2854, #2872, #2873, #2874, #2928, #2929, #2934, #2856, #2976 - \#2984, #2987 - \#2989, #2991 - \#2993, #2995, #2784) - Ensure state cache is used when persisting events (PR #2864, #2871, #2802, #2835, #2836, #2841, #2842, #2849) - Change the default config to bind on both IPv4 and IPv6 on all platforms (PR #2435) Thanks to @silkeh! - No longer require a specific version of saml2 (PR #2695) Thanks to @okurz! - Remove `verbosity`/`log_file` from generated config (PR #2755) - Add and improve metrics and logging (PR #2770, #2778, #2785, #2786, #2787, #2793, #2794, #2795, #2809, #2810, #2833, #2834, #2844, #2965, #2927, #2975, #2790, #2796, #2838) - When using synctl with workers, don\'t start the main synapse automatically (PR #2774) - Minor performance improvements (PR #2773, #2792) - Use a connection pool for non-federation outbound connections (PR #2817) - Make it possible to run unit tests against postgres (PR #2829) - Update pynacl dependency to 1.2.1 or higher (PR #2888) Thanks to @bachp! - Remove ability for AS users to call /events and /sync (PR #2948) - Use bcrypt.checkpw (PR #2949) Thanks to @krombel! Bug fixes: - Fix broken `ldap_config` config option (PR #2683) Thanks to @seckrv! - Fix error message when user is not allowed to unban (PR #2761) Thanks to @turt2live! - Fix publicised groups GET API (singular) over federation (PR #2772) - Fix user directory when using `user_directory_search_all_users` config option (PR #2803, #2831) - Fix error on `/publicRooms` when no rooms exist (PR #2827) - Fix bug in quarantine\_media (PR #2837) - Fix url\_previews when no Content-Type is returned from URL (PR #2845) - Fix rare race in sync API when joining room (PR #2944) - Fix slow event search, switch back from GIST to GIN indexes (PR #2769, #2848) Changes in synapse v0.26.0 (2018-01-05) ======================================= No changes since v0.26.0-rc1 Changes in synapse v0.26.0-rc1 (2017-12-13) =========================================== Features: - Add ability for ASes to publicise groups for their users (PR #2686) - Add all local users to the user\_directory and optionally search them (PR #2723) - Add support for custom login types for validating users (PR #2729) Changes: - Update example Prometheus config to new format (PR #2648) Thanks to @krombel! - Rename redact\_content option to include\_content in Push API (PR #2650) - Declare support for r0.3.0 (PR #2677) - Improve upserts (PR #2684, #2688, #2689, #2713) - Improve documentation of workers (PR #2700) - Improve tracebacks on exceptions (PR #2705) - Allow guest access to group APIs for reading (PR #2715) - Support for posting content in federation\_client script (PR #2716) - Delete devices and pushers on logouts etc (PR #2722) Bug fixes: - Fix database port script (PR #2673) - Fix internal server error on login with ldap\_auth\_provider (PR #2678) Thanks to @jkolo! - Fix error on sqlite 3.7 (PR #2697) - Fix OPTIONS on preview\_url (PR #2707) - Fix error handling on dns lookup (PR #2711) - Fix wrong avatars when inviting multiple users when creating room (PR #2717) - Fix 500 when joining matrix-dev (PR #2719) Changes in synapse v0.25.1 (2017-11-17) ======================================= Bug fixes: - Fix login with LDAP and other password provider modules (PR #2678). Thanks to @jkolo! Changes in synapse v0.25.0 (2017-11-15) ======================================= Bug fixes: - Fix port script (PR #2673) Changes in synapse v0.25.0-rc1 (2017-11-14) =========================================== Features: - Add is\_public to groups table to allow for private groups (PR #2582) - Add a route for determining who you are (PR #2668) Thanks to @turt2live! - Add more features to the password providers (PR #2608, #2610, #2620, #2622, #2623, #2624, #2626, #2628, #2629) - Add a hook for custom rest endpoints (PR #2627) - Add API to update group room visibility (PR #2651) Changes: - Ignore \ tags when generating URL preview descriptions (PR #2576) Thanks to @maximevaillancourt! - Register some /unstable endpoints in /r0 as well (PR #2579) Thanks to @krombel! - Support /keys/upload on /r0 as well as /unstable (PR #2585) - Front-end proxy: pass through auth header (PR #2586) - Allow ASes to deactivate their own users (PR #2589) - Remove refresh tokens (PR #2613) - Automatically set default displayname on register (PR #2617) - Log login requests (PR #2618) - Always return is\_public in the /groups/:group\_id/rooms API (PR #2630) - Avoid no-op media deletes (PR #2637) Thanks to @spantaleev! - Fix various embarrassing typos around user\_directory and add some doc. (PR #2643) - Return whether a user is an admin within a group (PR #2647) - Namespace visibility options for groups (PR #2657) - Downcase UserIDs on registration (PR #2662) - Cache failures when fetching URL previews (PR #2669) Bug fixes: - Fix port script (PR #2577) - Fix error when running synapse with no logfile (PR #2581) - Fix UI auth when deleting devices (PR #2591) - Fix typo when checking if user is invited to group (PR #2599) - Fix the port script to drop NUL values in all tables (PR #2611) - Fix appservices being backlogged and not receiving new events due to a bug in notify\_interested\_services (PR #2631) Thanks to @xyzz! - Fix updating rooms avatar/display name when modified by admin (PR #2636) Thanks to @farialima! - Fix bug in state group storage (PR #2649) - Fix 500 on invalid utf-8 in request (PR #2663) Changes in synapse v0.24.1 (2017-10-24) ======================================= Bug fixes: - Fix updating group profiles over federation (PR #2567) Changes in synapse v0.24.0 (2017-10-23) ======================================= No changes since v0.24.0-rc1 Changes in synapse v0.24.0-rc1 (2017-10-19) =========================================== Features: - Add Group Server (PR #2352, #2363, #2374, #2377, #2378, #2382, #2410, #2426, #2430, #2454, #2471, #2472, #2544) - Add support for channel notifications (PR #2501) - Add basic implementation of backup media store (PR #2538) - Add config option to auto-join new users to rooms (PR #2545) Changes: - Make the spam checker a module (PR #2474) - Delete expired url cache data (PR #2478) - Ignore incoming events for rooms that we have left (PR #2490) - Allow spam checker to reject invites too (PR #2492) - Add room creation checks to spam checker (PR #2495) - Spam checking: add the invitee to user\_may\_invite (PR #2502) - Process events from federation for different rooms in parallel (PR #2520) - Allow error strings from spam checker (PR #2531) - Improve error handling for missing files in config (PR #2551) Bug fixes: - Fix handling SERVFAILs when doing AAAA lookups for federation (PR #2477) - Fix incompatibility with newer versions of ujson (PR #2483) Thanks to @jeremycline! - Fix notification keywords that start/end with non-word chars (PR #2500) - Fix stack overflow and logcontexts from linearizer (PR #2532) - Fix 500 error when fields missing from power\_levels event (PR #2552) - Fix 500 error when we get an error handling a PDU (PR #2553) Changes in synapse v0.23.1 (2017-10-02) ======================================= Changes: - Make \'affinity\' package optional, as it is not supported on some platforms Changes in synapse v0.23.0 (2017-10-02) ======================================= No changes since v0.23.0-rc2 Changes in synapse v0.23.0-rc2 (2017-09-26) =========================================== Bug fixes: - Fix regression in performance of syncs (PR #2470) Changes in synapse v0.23.0-rc1 (2017-09-25) =========================================== Features: - Add a frontend proxy worker (PR #2344) - Add support for event\_id\_only push format (PR #2450) - Add a PoC for filtering spammy events (PR #2456) - Add a config option to block all room invites (PR #2457) Changes: - Use bcrypt module instead of py-bcrypt (PR #2288) Thanks to @kyrias! - Improve performance of generating push notifications (PR #2343, #2357, #2365, #2366, #2371) - Improve DB performance for device list handling in sync (PR #2362) - Include a sample prometheus config (PR #2416) - Document known to work postgres version (PR #2433) Thanks to @ptman! Bug fixes: - Fix caching error in the push evaluator (PR #2332) - Fix bug where pusherpool didn\'t start and broke some rooms (PR #2342) - Fix port script for user directory tables (PR #2375) - Fix device lists notifications when user rejoins a room (PR #2443, #2449) - Fix sync to always send down current state events in timeline (PR #2451) - Fix bug where guest users were incorrectly kicked (PR #2453) - Fix bug talking to IPv6 only servers using SRV records (PR #2462) Changes in synapse v0.22.1 (2017-07-06) ======================================= Bug fixes: - Fix bug where pusher pool didn\'t start and caused issues when interacting with some rooms (PR #2342) Changes in synapse v0.22.0 (2017-07-06) ======================================= No changes since v0.22.0-rc2 Changes in synapse v0.22.0-rc2 (2017-07-04) =========================================== Changes: - Improve performance of storing user IPs (PR #2307, #2308) - Slightly improve performance of verifying access tokens (PR #2320) - Slightly improve performance of event persistence (PR #2321) - Increase default cache factor size from 0.1 to 0.5 (PR #2330) Bug fixes: - Fix bug with storing registration sessions that caused frequent CPU churn (PR #2319) Changes in synapse v0.22.0-rc1 (2017-06-26) =========================================== Features: - Add a user directory API (PR #2252, and many more) - Add shutdown room API to remove room from local server (PR #2291) - Add API to quarantine media (PR #2292) - Add new config option to not send event contents to push servers (PR #2301) Thanks to @cjdelisle! Changes: - Various performance fixes (PR #2177, #2233, #2230, #2238, #2248, #2256, #2274) - Deduplicate sync filters (PR #2219) Thanks to @krombel! - Correct a typo in UPGRADE.rst (PR #2231) Thanks to @aaronraimist! - Add count of one time keys to sync stream (PR #2237) - Only store event\_auth for state events (PR #2247) - Store URL cache preview downloads separately (PR #2299) Bug fixes: - Fix users not getting notifications when AS listened to that user\_id (PR #2216) Thanks to @slipeer! - Fix users without push set up not getting notifications after joining rooms (PR #2236) - Fix preview url API to trim long descriptions (PR #2243) - Fix bug where we used cached but unpersisted state group as prev group, resulting in broken state of restart (PR #2263) - Fix removing of pushers when using workers (PR #2267) - Fix CORS headers to allow Authorization header (PR #2285) Thanks to @krombel! Changes in synapse v0.21.1 (2017-06-15) ======================================= Bug fixes: - Fix bug in anonymous usage statistic reporting (PR #2281) Changes in synapse v0.21.0 (2017-05-18) ======================================= No changes since v0.21.0-rc3 Changes in synapse v0.21.0-rc3 (2017-05-17) =========================================== Features: - Add per user rate-limiting overrides (PR #2208) - Add config option to limit maximum number of events requested by `/sync` and `/messages` (PR #2221) Thanks to @psaavedra! Changes: - Various small performance fixes (PR #2201, #2202, #2224, #2226, #2227, #2228, #2229) - Update username availability checker API (PR #2209, #2213) - When purging, don\'t de-delta state groups we\'re about to delete (PR #2214) - Documentation to check synapse version (PR #2215) Thanks to @hamber-dick! - Add an index to event\_search to speed up purge history API (PR #2218) Bug fixes: - Fix API to allow clients to upload one-time-keys with new sigs (PR #2206) Changes in synapse v0.21.0-rc2 (2017-05-08) =========================================== Changes: - Always mark remotes as up if we receive a signed request from them (PR #2190) Bug fixes: - Fix bug where users got pushed for rooms they had muted (PR #2200) Changes in synapse v0.21.0-rc1 (2017-05-08) =========================================== Features: - Add username availability checker API (PR #2183) - Add read marker API (PR #2120) Changes: - Enable guest access for the 3pl/3pid APIs (PR #1986) - Add setting to support TURN for guests (PR #2011) - Various performance improvements (PR #2075, #2076, #2080, #2083, #2108, #2158, #2176, #2185) - Make synctl a bit more user friendly (PR #2078, #2127) Thanks @APwhitehat! - Replace HTTP replication with TCP replication (PR #2082, #2097, #2098, #2099, #2103, #2014, #2016, #2115, #2116, #2117) - Support authenticated SMTP (PR #2102) Thanks @DanielDent! - Add a counter metric for successfully-sent transactions (PR #2121) - Propagate errors sensibly from proxied IS requests (PR #2147) - Add more granular event send metrics (PR #2178) Bug fixes: - Fix nuke-room script to work with current schema (PR #1927) Thanks @zuckschwerdt! - Fix db port script to not assume postgres tables are in the public schema (PR #2024) Thanks @jerrykan! - Fix getting latest device IP for user with no devices (PR #2118) - Fix rejection of invites to unreachable servers (PR #2145) - Fix code for reporting old verify keys in synapse (PR #2156) - Fix invite state to always include all events (PR #2163) - Fix bug where synapse would always fetch state for any missing event (PR #2170) - Fix a leak with timed out HTTP connections (PR #2180) - Fix bug where we didn\'t time out HTTP requests to ASes (PR #2192) Docs: - Clarify doc for SQLite to PostgreSQL port (PR #1961) Thanks @benhylau! - Fix typo in synctl help (PR #2107) Thanks @HarHarLinks! - `web_client_location` documentation fix (PR #2131) Thanks @matthewjwolff! - Update README.rst with FreeBSD changes (PR #2132) Thanks @feld! - Clarify setting up metrics (PR #2149) Thanks @encks! Changes in synapse v0.20.0 (2017-04-11) ======================================= Bug fixes: - Fix joining rooms over federation where not all servers in the room saw the new server had joined (PR #2094) Changes in synapse v0.20.0-rc1 (2017-03-30) =========================================== Features: - Add delete\_devices API (PR #1993) - Add phone number registration/login support (PR #1994, #2055) Changes: - Use JSONSchema for validation of filters. Thanks @pik! (PR #1783) - Reread log config on SIGHUP (PR #1982) - Speed up public room list (PR #1989) - Add helpful texts to logger config options (PR #1990) - Minor `/sync` performance improvements. (PR #2002, #2013, #2022) - Add some debug to help diagnose weird federation issue (PR #2035) - Correctly limit retries for all federation requests (PR #2050, #2061) - Don\'t lock table when persisting new one time keys (PR #2053) - Reduce some CPU work on DB threads (PR #2054) - Cache hosts in room (PR #2060) - Batch sending of device list pokes (PR #2063) - Speed up persist event path in certain edge cases (PR #2070) Bug fixes: - Fix bug where current\_state\_events renamed to current\_state\_ids (PR #1849) - Fix routing loop when fetching remote media (PR #1992) - Fix current\_state\_events table to not lie (PR #1996) - Fix CAS login to handle PartialDownloadError (PR #1997) - Fix assertion to stop transaction queue getting wedged (PR #2010) - Fix presence to fallback to last\_active\_ts if it beats the last sync time. Thanks @Half-Shot! (PR #2014) - Fix bug when federation received a PDU while a room join is in progress (PR #2016) - Fix resetting state on rejected events (PR #2025) - Fix installation issues in readme. Thanks @ricco386 (PR #2037) - Fix caching of remote servers\' signature keys (PR #2042) - Fix some leaking log context (PR #2048, #2049, #2057, #2058) - Fix rejection of invites not reaching sync (PR #2056) Changes in synapse v0.19.3 (2017-03-20) ======================================= No changes since v0.19.3-rc2 Changes in synapse v0.19.3-rc2 (2017-03-13) =========================================== Bug fixes: - Fix bug in handling of incoming device list updates over federation. Changes in synapse v0.19.3-rc1 (2017-03-08) =========================================== Features: - Add some administration functionalities. Thanks to morteza-araby! (PR #1784) Changes: - Reduce database table sizes (PR #1873, #1916, #1923, #1963) - Update contrib/ to not use syutil. Thanks to andrewshadura! (PR #1907) - Don\'t fetch current state when sending an event in common case (PR #1955) Bug fixes: - Fix synapse\_port\_db failure. Thanks to Pneumaticat! (PR #1904) - Fix caching to not cache error responses (PR #1913) - Fix APIs to make kick & ban reasons work (PR #1917) - Fix bugs in the /keys/changes api (PR #1921) - Fix bug where users couldn\'t forget rooms they were banned from (PR #1922) - Fix issue with long language values in pushers API (PR #1925) - Fix a race in transaction queue (PR #1930) - Fix dynamic thumbnailing to preserve aspect ratio. Thanks to jkolo! (PR #1945) - Fix device list update to not constantly resync (PR #1964) - Fix potential for huge memory usage when getting device that have changed (PR #1969) Changes in synapse v0.19.2 (2017-02-20) ======================================= - Fix bug with event visibility check in /context/ API. Thanks to Tokodomo for pointing it out! (PR #1929) Changes in synapse v0.19.1 (2017-02-09) ======================================= - Fix bug where state was incorrectly reset in a room when synapse received an event over federation that did not pass auth checks (PR #1892) Changes in synapse v0.19.0 (2017-02-04) ======================================= No changes since RC 4. Changes in synapse v0.19.0-rc4 (2017-02-02) =========================================== - Bump cache sizes for common membership queries (PR #1879) Changes in synapse v0.19.0-rc3 (2017-02-02) =========================================== - Fix email push in pusher worker (PR #1875) - Make presence.get\_new\_events a bit faster (PR #1876) - Make /keys/changes a bit more performant (PR #1877) Changes in synapse v0.19.0-rc2 (2017-02-02) =========================================== - Include newly joined users in /keys/changes API (PR #1872) Changes in synapse v0.19.0-rc1 (2017-02-02) =========================================== Features: - Add support for specifying multiple bind addresses (PR #1709, #1712, #1795, #1835). Thanks to @kyrias! - Add /account/3pid/delete endpoint (PR #1714) - Add config option to configure the Riot URL used in notification emails (PR #1811). Thanks to @aperezdc! - Add username and password config options for turn server (PR #1832). Thanks to @xsteadfastx! - Implement device lists updates over federation (PR #1857, #1861, #1864) - Implement /keys/changes (PR #1869, #1872) Changes: - Improve IPv6 support (PR #1696). Thanks to @kyrias and @glyph! - Log which files we saved attachments to in the media\_repository (PR #1791) - Linearize updates to membership via PUT /state/ to better handle multiple joins (PR #1787) - Limit number of entries to prefill from cache on startup (PR #1792) - Remove full\_twisted\_stacktraces option (PR #1802) - Measure size of some caches by sum of the size of cached values (PR #1815) - Measure metrics of string\_cache (PR #1821) - Reduce logging verbosity (PR #1822, #1823, #1824) - Don\'t clobber a displayname or avatar\_url if provided by an m.room.member event (PR #1852) - Better handle 401/404 response for federation /send/ (PR #1866, #1871) Fixes: - Fix ability to change password to a non-ascii one (PR #1711) - Fix push getting stuck due to looking at the wrong view of state (PR #1820) - Fix email address comparison to be case insensitive (PR #1827) - Fix occasional inconsistencies of room membership (PR #1836, #1840) Performance: - Don\'t block messages sending on bumping presence (PR #1789) - Change device\_inbox stream index to include user (PR #1793) - Optimise state resolution (PR #1818) - Use DB cache of joined users for presence (PR #1862) - Add an index to make membership queries faster (PR #1867) Changes in synapse v0.18.7 (2017-01-09) ======================================= No changes from v0.18.7-rc2 Changes in synapse v0.18.7-rc2 (2017-01-07) =========================================== Bug fixes: - Fix error in rc1\'s discarding invalid inbound traffic logic that was incorrectly discarding missing events Changes in synapse v0.18.7-rc1 (2017-01-06) =========================================== Bug fixes: - Fix error in \#PR 1764 to actually fix the nightmare \#1753 bug. - Improve deadlock logging further - Discard inbound federation traffic from invalid domains, to immunise against \#1753 Changes in synapse v0.18.6 (2017-01-06) ======================================= Bug fixes: - Fix bug when checking if a guest user is allowed to join a room (PR #1772) Thanks to Patrik Oldsberg for diagnosing and the fix! Changes in synapse v0.18.6-rc3 (2017-01-05) =========================================== Bug fixes: - Fix bug where we failed to send ban events to the banned server (PR #1758) - Fix bug where we sent event that didn\'t originate on this server to other servers (PR #1764) - Fix bug where processing an event from a remote server took a long time because we were making long HTTP requests (PR #1765, PR #1744) Changes: - Improve logging for debugging deadlocks (PR #1766, PR #1767) Changes in synapse v0.18.6-rc2 (2016-12-30) =========================================== Bug fixes: - Fix memory leak in twisted by initialising logging correctly (PR #1731) - Fix bug where fetching missing events took an unacceptable amount of time in large rooms (PR #1734) Changes in synapse v0.18.6-rc1 (2016-12-29) =========================================== Bug fixes: - Make sure that outbound connections are closed (PR #1725) Changes in synapse v0.18.5 (2016-12-16) ======================================= Bug fixes: - Fix federation /backfill returning events it shouldn\'t (PR #1700) - Fix crash in url preview (PR #1701) Changes in synapse v0.18.5-rc3 (2016-12-13) =========================================== Features: - Add support for E2E for guests (PR #1653) - Add new API appservice specific public room list (PR #1676) - Add new room membership APIs (PR #1680) Changes: - Enable guest access for private rooms by default (PR #653) - Limit the number of events that can be created on a given room concurrently (PR #1620) - Log the args that we have on UI auth completion (PR #1649) - Stop generating refresh\_tokens (PR #1654) - Stop putting a time caveat on access tokens (PR #1656) - Remove unspecced GET endpoints for e2e keys (PR #1694) Bug fixes: - Fix handling of 500 and 429\'s over federation (PR #1650) - Fix Content-Type header parsing (PR #1660) - Fix error when previewing sites that include unicode, thanks to kyrias (PR #1664) - Fix some cases where we drop read receipts (PR #1678) - Fix bug where calls to `/sync` didn\'t correctly timeout (PR #1683) - Fix bug where E2E key query would fail if a single remote host failed (PR #1686) Changes in synapse v0.18.5-rc2 (2016-11-24) =========================================== Bug fixes: - Don\'t send old events over federation, fixes bug in -rc1. Changes in synapse v0.18.5-rc1 (2016-11-24) =========================================== Features: - Implement \"event\_fields\" in filters (PR #1638) Changes: - Use external ldap auth pacakge (PR #1628) - Split out federation transaction sending to a worker (PR #1635) - Fail with a coherent error message if /sync?filter= is invalid (PR #1636) - More efficient notif count queries (PR #1644) Changes in synapse v0.18.4 (2016-11-22) ======================================= Bug fixes: - Add workaround for buggy clients that the fail to register (PR #1632) Changes in synapse v0.18.4-rc1 (2016-11-14) =========================================== Changes: - Various database efficiency improvements (PR #1188, #1192) - Update default config to blacklist more internal IPs, thanks to Euan Kemp (PR #1198) - Allow specifying duration in minutes in config, thanks to Daniel Dent (PR #1625) Bug fixes: - Fix media repo to set CORs headers on responses (PR #1190) - Fix registration to not error on non-ascii passwords (PR #1191) - Fix create event code to limit the number of prev\_events (PR #1615) - Fix bug in transaction ID deduplication (PR #1624) Changes in synapse v0.18.3 (2016-11-08) ======================================= SECURITY UPDATE Explicitly require authentication when using LDAP3. This is the default on versions of `ldap3` above 1.0, but some distributions will package an older version. If you are using LDAP3 login and have a version of `ldap3` older than 1.0 it is **CRITICAL to updgrade**. Changes in synapse v0.18.2 (2016-11-01) ======================================= No changes since v0.18.2-rc5 Changes in synapse v0.18.2-rc5 (2016-10-28) =========================================== Bug fixes: - Fix prometheus process metrics in worker processes (PR #1184) Changes in synapse v0.18.2-rc4 (2016-10-27) =========================================== Bug fixes: - Fix `user_threepids` schema delta, which in some instances prevented startup after upgrade (PR #1183) Changes in synapse v0.18.2-rc3 (2016-10-27) =========================================== Changes: - Allow clients to supply access tokens as headers (PR #1098) - Clarify error codes for GET /filter/, thanks to Alexander Maznev (PR #1164) - Make password reset email field case insensitive (PR #1170) - Reduce redundant database work in email pusher (PR #1174) - Allow configurable rate limiting per AS (PR #1175) - Check whether to ratelimit sooner to avoid work (PR #1176) - Standardise prometheus metrics (PR #1177) Bug fixes: - Fix incredibly slow back pagination query (PR #1178) - Fix infinite typing bug (PR #1179) Changes in synapse v0.18.2-rc2 (2016-10-25) =========================================== (This release did not include the changes advertised and was identical to RC1) Changes in synapse v0.18.2-rc1 (2016-10-17) =========================================== Changes: - Remove redundant event\_auth index (PR #1113) - Reduce DB hits for replication (PR #1141) - Implement pluggable password auth (PR #1155) - Remove rate limiting from app service senders and fix get\_or\_create\_user requester, thanks to Patrik Oldsberg (PR #1157) - window.postmessage for Interactive Auth fallback (PR #1159) - Use sys.executable instead of hardcoded python, thanks to Pedro Larroy (PR #1162) - Add config option for adding additional TLS fingerprints (PR #1167) - User-interactive auth on delete device (PR #1168) Bug fixes: - Fix not being allowed to set your own state\_key, thanks to Patrik Oldsberg (PR #1150) - Fix interactive auth to return 401 from for incorrect password (PR #1160, #1166) - Fix email push notifs being dropped (PR #1169) Changes in synapse v0.18.1 (2016-10-05) ======================================= No changes since v0.18.1-rc1 Changes in synapse v0.18.1-rc1 (2016-09-30) =========================================== Features: - Add total\_room\_count\_estimate to `/publicRooms` (PR #1133) Changes: - Time out typing over federation (PR #1140) - Restructure LDAP authentication (PR #1153) Bug fixes: - Fix 3pid invites when server is already in the room (PR #1136) - Fix upgrading with SQLite taking lots of CPU for a few days after upgrade (PR #1144) - Fix upgrading from very old database versions (PR #1145) - Fix port script to work with recently added tables (PR #1146) Changes in synapse v0.18.0 (2016-09-19) ======================================= The release includes major changes to the state storage database schemas, which significantly reduce database size. Synapse will attempt to upgrade the current data in the background. Servers with large SQLite database may experience degradation of performance while this upgrade is in progress, therefore you may want to consider migrating to using Postgres before upgrading very large SQLite databases Changes: - Make public room search case insensitive (PR #1127) Bug fixes: - Fix and clean up publicRooms pagination (PR #1129) Changes in synapse v0.18.0-rc1 (2016-09-16) =========================================== Features: - Add `only=highlight` on `/notifications` (PR #1081) - Add server param to /publicRooms (PR #1082) - Allow clients to ask for the whole of a single state event (PR #1094) - Add is\_direct param to /createRoom (PR #1108) - Add pagination support to publicRooms (PR #1121) - Add very basic filter API to /publicRooms (PR #1126) - Add basic direct to device messaging support for E2E (PR #1074, #1084, #1104, #1111) Changes: - Move to storing state\_groups\_state as deltas, greatly reducing DB size (PR #1065) - Reduce amount of state pulled out of the DB during common requests (PR #1069) - Allow PDF to be rendered from media repo (PR #1071) - Reindex state\_groups\_state after pruning (PR #1085) - Clobber EDUs in send queue (PR #1095) - Conform better to the CAS protocol specification (PR #1100) - Limit how often we ask for keys from dead servers (PR #1114) Bug fixes: - Fix /notifications API when used with `from` param (PR #1080) - Fix backfill when cannot find an event. (PR #1107) Changes in synapse v0.17.3 (2016-09-09) ======================================= This release fixes a major bug that stopped servers from handling rooms with over 1000 members. Changes in synapse v0.17.2 (2016-09-08) ======================================= This release contains security bug fixes. Please upgrade. No changes since v0.17.2-rc1 Changes in synapse v0.17.2-rc1 (2016-09-05) =========================================== Features: - Start adding store-and-forward direct-to-device messaging (PR #1046, #1050, #1062, #1066) Changes: - Avoid pulling the full state of a room out so often (PR #1047, #1049, #1063, #1068) - Don\'t notify for online to online presence transitions. (PR #1054) - Occasionally persist unpersisted presence updates (PR #1055) - Allow application services to have an optional \'url\' (PR #1056) - Clean up old sent transactions from DB (PR #1059) Bug fixes: - Fix None check in backfill (PR #1043) - Fix membership changes to be idempotent (PR #1067) - Fix bug in get\_pdu where it would sometimes return events with incorrect signature Changes in synapse v0.17.1 (2016-08-24) ======================================= Changes: - Delete old received\_transactions rows (PR #1038) - Pass through user-supplied content in /join/\$room\_id (PR #1039) Bug fixes: - Fix bug with backfill (PR #1040) Changes in synapse v0.17.1-rc1 (2016-08-22) =========================================== Features: - Add notification API (PR #1028) Changes: - Don\'t print stack traces when failing to get remote keys (PR #996) - Various federation /event/ perf improvements (PR #998) - Only process one local membership event per room at a time (PR #1005) - Move default display name push rule (PR #1011, #1023) - Fix up preview URL API. Add tests. (PR #1015) - Set `Content-Security-Policy` on media repo (PR #1021) - Make notify\_interested\_services faster (PR #1022) - Add usage stats to prometheus monitoring (PR #1037) Bug fixes: - Fix token login (PR #993) - Fix CAS login (PR #994, #995) - Fix /sync to not clobber status\_msg (PR #997) - Fix redacted state events to include prev\_content (PR #1003) - Fix some bugs in the auth/ldap handler (PR #1007) - Fix backfill request to limit URI length, so that remotes don\'t reject the requests due to path length limits (PR #1012) - Fix AS push code to not send duplicate events (PR #1025) Changes in synapse v0.17.0 (2016-08-08) ======================================= This release contains significant security bug fixes regarding authenticating events received over federation. PLEASE UPGRADE. This release changes the LDAP configuration format in a backwards incompatible way, see PR #843 for details. Changes: - Add federation /version API (PR #990) - Make psutil dependency optional (PR #992) Bug fixes: - Fix URL preview API to exclude HTML comments in description (PR #988) - Fix error handling of remote joins (PR #991) Changes in synapse v0.17.0-rc4 (2016-08-05) =========================================== Changes: - Change the way we summarize URLs when previewing (PR #973) - Add new `/state_ids/` federation API (PR #979) - Speed up processing of `/state/` response (PR #986) Bug fixes: - Fix event persistence when event has already been partially persisted (PR #975, #983, #985) - Fix port script to also copy across backfilled events (PR #982) Changes in synapse v0.17.0-rc3 (2016-08-02) =========================================== Changes: - Forbid non-ASes from registering users whose names begin with \'\_\' (PR #958) - Add some basic admin API docs (PR #963) Bug fixes: - Send the correct host header when fetching keys (PR #941) - Fix joining a room that has missing auth events (PR #964) - Fix various push bugs (PR #966, #970) - Fix adding emails on registration (PR #968) Changes in synapse v0.17.0-rc2 (2016-08-02) =========================================== (This release did not include the changes advertised and was identical to RC1) Changes in synapse v0.17.0-rc1 (2016-07-28) =========================================== This release changes the LDAP configuration format in a backwards incompatible way, see PR #843 for details. Features: - Add purge\_media\_cache admin API (PR #902) - Add deactivate account admin API (PR #903) - Add optional pepper to password hashing (PR #907, #910 by KentShikama) - Add an admin option to shared secret registration (breaks backwards compat) (PR #909) - Add purge local room history API (PR #911, #923, #924) - Add requestToken endpoints (PR #915) - Add an /account/deactivate endpoint (PR #921) - Add filter param to /messages. Add \'contains\_url\' to filter. (PR #922) - Add device\_id support to /login (PR #929) - Add device\_id support to /v2/register flow. (PR #937, #942) - Add GET /devices endpoint (PR #939, #944) - Add GET /device/{deviceId} (PR #943) - Add update and delete APIs for devices (PR #949) Changes: - Rewrite LDAP Authentication against ldap3 (PR #843 by mweinelt) - Linearize some federation endpoints based on (origin, room\_id) (PR #879) - Remove the legacy v0 content upload API. (PR #888) - Use similar naming we use in email notifs for push (PR #894) - Optionally include password hash in createUser endpoint (PR #905 by KentShikama) - Use a query that postgresql optimises better for get\_events\_around (PR #906) - Fall back to \'username\' if \'user\' is not given for appservice registration. (PR #927 by Half-Shot) - Add metrics for psutil derived memory usage (PR #936) - Record device\_id in client\_ips (PR #938) - Send the correct host header when fetching keys (PR #941) - Log the hostname the reCAPTCHA was completed on (PR #946) - Make the device id on e2e key upload optional (PR #956) - Add r0.2.0 to the \"supported versions\" list (PR #960) - Don\'t include name of room for invites in push (PR #961) Bug fixes: - Fix substitution failure in mail template (PR #887) - Put most recent 20 messages in email notif (PR #892) - Ensure that the guest user is in the database when upgrading accounts (PR #914) - Fix various edge cases in auth handling (PR #919) - Fix 500 ISE when sending alias event without a state\_key (PR #925) - Fix bug where we stored rejections in the state\_group, persist all rejections (PR #948) - Fix lack of check of if the user is banned when handling 3pid invites (PR #952) - Fix a couple of bugs in the transaction and keyring code (PR #954, #955) Changes in synapse v0.16.1-r1 (2016-07-08) ========================================== THIS IS A CRITICAL SECURITY UPDATE. This fixes a bug which allowed users\' accounts to be accessed by unauthorised users. Changes in synapse v0.16.1 (2016-06-20) ======================================= Bug fixes: - Fix assorted bugs in `/preview_url` (PR #872) - Fix TypeError when setting unicode passwords (PR #873) Performance improvements: - Turn `use_frozen_events` off by default (PR #877) - Disable responding with canonical json for federation (PR #878) Changes in synapse v0.16.1-rc1 (2016-06-15) =========================================== Features: None Changes: - Log requester for `/publicRoom` endpoints when possible (PR #856) - 502 on `/thumbnail` when can\'t connect to remote server (PR #862) - Linearize fetching of gaps on incoming events (PR #871) Bugs fixes: - Fix bug where rooms where marked as published by default (PR #857) - Fix bug where joining room with an event with invalid sender (PR #868) - Fix bug where backfilled events were sent down sync streams (PR #869) - Fix bug where outgoing connections could wedge indefinitely, causing push notifications to be unreliable (PR #870) Performance improvements: - Improve `/publicRooms` performance(PR #859) Changes in synapse v0.16.0 (2016-06-09) ======================================= NB: As of v0.14 all AS config files must have an ID field. Bug fixes: - Don\'t make rooms published by default (PR #857) Changes in synapse v0.16.0-rc2 (2016-06-08) =========================================== Features: - Add configuration option for tuning GC via `gc.set_threshold` (PR #849) Changes: - Record metrics about GC (PR #771, #847, #852) - Add metric counter for number of persisted events (PR #841) Bug fixes: - Fix \'From\' header in email notifications (PR #843) - Fix presence where timeouts were not being fired for the first 8h after restarts (PR #842) - Fix bug where synapse sent malformed transactions to AS\'s when retrying transactions (Commits 310197b, 8437906) Performance improvements: - Remove event fetching from DB threads (PR #835) - Change the way we cache events (PR #836) - Add events to cache when we persist them (PR #840) Changes in synapse v0.16.0-rc1 (2016-06-03) =========================================== Version 0.15 was not released. See v0.15.0-rc1 below for additional changes. Features: - Add email notifications for missed messages (PR #759, #786, #799, #810, #815, #821) - Add a `url_preview_ip_range_whitelist` config param (PR #760) - Add /report endpoint (PR #762) - Add basic ignore user API (PR #763) - Add an openidish mechanism for proving that you own a given user\_id (PR #765) - Allow clients to specify a server\_name to avoid \'No known servers\' (PR #794) - Add secondary\_directory\_servers option to fetch room list from other servers (PR #808, #813) Changes: - Report per request metrics for all of the things using request\_handler (PR #756) - Correctly handle `NULL` password hashes from the database (PR #775) - Allow receipts for events we haven\'t seen in the db (PR #784) - Make synctl read a cache factor from config file (PR #785) - Increment badge count per missed convo, not per msg (PR #793) - Special case m.room.third\_party\_invite event auth to match invites (PR #814) Bug fixes: - Fix typo in event\_auth servlet path (PR #757) - Fix password reset (PR #758) Performance improvements: - Reduce database inserts when sending transactions (PR #767) - Queue events by room for persistence (PR #768) - Add cache to `get_user_by_id` (PR #772) - Add and use `get_domain_from_id` (PR #773) - Use tree cache for `get_linearized_receipts_for_room` (PR #779) - Remove unused indices (PR #782) - Add caches to `bulk_get_push_rules*` (PR #804) - Cache `get_event_reference_hashes` (PR #806) - Add `get_users_with_read_receipts_in_room` cache (PR #809) - Use state to calculate `get_users_in_room` (PR #811) - Load push rules in storage layer so that they get cached (PR #825) - Make `get_joined_hosts_for_room` use get\_users\_in\_room (PR #828) - Poke notifier on next reactor tick (PR #829) - Change CacheMetrics to be quicker (PR #830) Changes in synapse v0.15.0-rc1 (2016-04-26) =========================================== Features: - Add login support for Javascript Web Tokens, thanks to Niklas Riekenbrauck (PR #671,\#687) - Add URL previewing support (PR #688) - Add login support for LDAP, thanks to Christoph Witzany (PR #701) - Add GET endpoint for pushers (PR #716) Changes: - Never notify for member events (PR #667) - Deduplicate identical `/sync` requests (PR #668) - Require user to have left room to forget room (PR #673) - Use DNS cache if within TTL (PR #677) - Let users see their own leave events (PR #699) - Deduplicate membership changes (PR #700) - Increase performance of pusher code (PR #705) - Respond with error status 504 if failed to talk to remote server (PR #731) - Increase search performance on postgres (PR #745) Bug fixes: - Fix bug where disabling all notifications still resulted in push (PR #678) - Fix bug where users couldn\'t reject remote invites if remote refused (PR #691) - Fix bug where synapse attempted to backfill from itself (PR #693) - Fix bug where profile information was not correctly added when joining remote rooms (PR #703) - Fix bug where register API required incorrect key name for AS registration (PR #727) Changes in synapse v0.14.0 (2016-03-30) ======================================= No changes from v0.14.0-rc2 Changes in synapse v0.14.0-rc2 (2016-03-23) =========================================== Features: - Add published room list API (PR #657) Changes: - Change various caches to consume less memory (PR #656, #658, #660, #662, #663, #665) - Allow rooms to be published without requiring an alias (PR #664) - Intern common strings in caches to reduce memory footprint (\#666) Bug fixes: - Fix reject invites over federation (PR #646) - Fix bug where registration was not idempotent (PR #649) - Update aliases event after deleting aliases (PR #652) - Fix unread notification count, which was sometimes wrong (PR #661) Changes in synapse v0.14.0-rc1 (2016-03-14) =========================================== Features: - Add event\_id to response to state event PUT (PR #581) - Allow guest users access to messages in rooms they have joined (PR #587) - Add config for what state is included in a room invite (PR #598) - Send the inviter\'s member event in room invite state (PR #607) - Add error codes for malformed/bad JSON in /login (PR #608) - Add support for changing the actions for default rules (PR #609) - Add environment variable SYNAPSE\_CACHE\_FACTOR, default it to 0.1 (PR #612) - Add ability for alias creators to delete aliases (PR #614) - Add profile information to invites (PR #624) Changes: - Enforce user\_id exclusivity for AS registrations (PR #572) - Make adding push rules idempotent (PR #587) - Improve presence performance (PR #582, #586) - Change presence semantics for `last_active_ago` (PR #582, #586) - Don\'t allow `m.room.create` to be changed (PR #596) - Add 800x600 to default list of valid thumbnail sizes (PR #616) - Always include kicks and bans in full /sync (PR #625) - Send history visibility on boundary changes (PR #626) - Register endpoint now returns a refresh\_token (PR #637) Bug fixes: - Fix bug where we returned incorrect state in /sync (PR #573) - Always return a JSON object from push rule API (PR #606) - Fix bug where registering without a user id sometimes failed (PR #610) - Report size of ExpiringCache in cache size metrics (PR #611) - Fix rejection of invites to empty rooms (PR #615) - Fix usage of `bcrypt` to not use `checkpw` (PR #619) - Pin `pysaml2` dependency (PR #634) - Fix bug in `/sync` where timeline order was incorrect for backfilled events (PR #635) Changes in synapse v0.13.3 (2016-02-11) ======================================= - Fix bug where `/sync` would occasionally return events in the wrong room. Changes in synapse v0.13.2 (2016-02-11) ======================================= - Fix bug where `/events` would fail to skip some events if there had been more events than the limit specified since the last request (PR #570) Changes in synapse v0.13.1 (2016-02-10) ======================================= - Bump matrix-angular-sdk (matrix web console) dependency to 0.6.8 to pull in the fix for SYWEB-361 so that the default client can display HTML messages again(!) Changes in synapse v0.13.0 (2016-02-10) ======================================= This version includes an upgrade of the schema, specifically adding an index to the `events` table. This may cause synapse to pause for several minutes the first time it is started after the upgrade. Changes: - Improve general performance (PR #540, #543. \#544, #54, #549, #567) - Change guest user ids to be incrementing integers (PR #550) - Improve performance of public room list API (PR #552) - Change profile API to omit keys rather than return null (PR #557) - Add `/media/r0` endpoint prefix, which is equivalent to `/media/v1/` (PR #595) Bug fixes: - Fix bug with upgrading guest accounts where it would fail if you opened the registration email on a different device (PR #547) - Fix bug where unread count could be wrong (PR #568) Changes in synapse v0.12.1-rc1 (2016-01-29) =========================================== Features: - Add unread notification counts in `/sync` (PR #456) - Add support for inviting 3pids in `/createRoom` (PR #460) - Add ability for guest accounts to upgrade (PR #462) - Add `/versions` API (PR #468) - Add `event` to `/context` API (PR #492) - Add specific error code for invalid user names in `/register` (PR #499) - Add support for push badge counts (PR #507) - Add support for non-guest users to peek in rooms using `/events` (PR #510) Changes: - Change `/sync` so that guest users only get rooms they\'ve joined (PR #469) - Change to require unbanning before other membership changes (PR #501) - Change default push rules to notify for all messages (PR #486) - Change default push rules to not notify on membership changes (PR #514) - Change default push rules in one to one rooms to only notify for events that are messages (PR #529) - Change `/sync` to reject requests with a `from` query param (PR #512) - Change server manhole to use SSH rather than telnet (PR #473) - Change server to require AS users to be registered before use (PR #487) - Change server not to start when ASes are invalidly configured (PR #494) - Change server to require ID and `as_token` to be unique for AS\'s (PR #496) - Change maximum pagination limit to 1000 (PR #497) Bug fixes: - Fix bug where `/sync` didn\'t return when something under the leave key changed (PR #461) - Fix bug where we returned smaller rather than larger than requested thumbnails when `method=crop` (PR #464) - Fix thumbnails API to only return cropped thumbnails when asking for a cropped thumbnail (PR #475) - Fix bug where we occasionally still logged access tokens (PR #477) - Fix bug where `/events` would always return immediately for guest users (PR #480) - Fix bug where `/sync` unexpectedly returned old left rooms (PR #481) - Fix enabling and disabling push rules (PR #498) - Fix bug where `/register` returned 500 when given unicode username (PR #513) Changes in synapse v0.12.0 (2016-01-04) ======================================= - Expose `/login` under `r0` (PR #459) Changes in synapse v0.12.0-rc3 (2015-12-23) =========================================== - Allow guest accounts access to `/sync` (PR #455) - Allow filters to include/exclude rooms at the room level rather than just from the components of the sync for each room. (PR #454) - Include urls for room avatars in the response to `/publicRooms` (PR #453) - Don\'t set a identicon as the avatar for a user when they register (PR #450) - Add a `display_name` to third-party invites (PR #449) - Send more information to the identity server for third-party invites so that it can send richer messages to the invitee (PR #446) - Cache the responses to `/initialSync` for 5 minutes. If a client retries a request to `/initialSync` before the a response was computed to the first request then the same response is used for both requests (PR #457) - Fix a bug where synapse would always request the signing keys of remote servers even when the key was cached locally (PR #452) - Fix 500 when pagination search results (PR #447) - Fix a bug where synapse was leaking raw email address in third-party invites (PR #448) Changes in synapse v0.12.0-rc2 (2015-12-14) =========================================== - Add caches for whether rooms have been forgotten by a user (PR #434) - Remove instructions to use `--process-dependency-link` since all of the dependencies of synapse are on PyPI (PR #436) - Parallelise the processing of `/sync` requests (PR #437) - Fix race updating presence in `/events` (PR #444) - Fix bug back-populating search results (PR #441) - Fix bug calculating state in `/sync` requests (PR #442) Changes in synapse v0.12.0-rc1 (2015-12-10) =========================================== - Host the client APIs released as r0 by on paths prefixed by `/_matrix/client/r0`. (PR #430, PR #415, PR #400) - Updates the client APIs to match r0 of the matrix specification. - All APIs return events in the new event format, old APIs also include the fields needed to parse the event using the old format for compatibility. (PR #402) - Search results are now given as a JSON array rather than a JSON object (PR #405) - Miscellaneous changes to search (PR #403, PR #406, PR #412) - Filter JSON objects may now be passed as query parameters to `/sync` (PR #431) - Fix implementation of `/admin/whois` (PR #418) - Only include the rooms that user has left in `/sync` if the client requests them in the filter (PR #423) - Don\'t push for `m.room.message` by default (PR #411) - Add API for setting per account user data (PR #392) - Allow users to forget rooms (PR #385) - Performance improvements and monitoring: - Add per-request counters for CPU time spent on the main python thread. (PR #421, PR #420) - Add per-request counters for time spent in the database (PR #429) - Make state updates in the C+S API idempotent (PR #416) - Only fire `user_joined_room` if the user has actually joined. (PR #410) - Reuse a single http client, rather than creating new ones (PR #413) - Fixed a bug upgrading from older versions of synapse on postgresql (PR #417) Changes in synapse v0.11.1 (2015-11-20) ======================================= - Add extra options to search API (PR #394) - Fix bug where we did not correctly cap federation retry timers. This meant it could take several hours for servers to start talking to ressurected servers, even when they were receiving traffic from them (PR #393) - Don\'t advertise login token flow unless CAS is enabled. This caused issues where some clients would always use the fallback API if they did not recognize all login flows (PR #391) - Change /v2 sync API to rename `private_user_data` to `account_data` (PR #386) - Change /v2 sync API to remove the `event_map` and rename keys in `rooms` object (PR #389) Changes in synapse v0.11.0-r2 (2015-11-19) ========================================== - Fix bug in database port script (PR #387) Changes in synapse v0.11.0-r1 (2015-11-18) ========================================== - Retry and fail federation requests more aggressively for requests that block client side requests (PR #384) Changes in synapse v0.11.0 (2015-11-17) ======================================= - Change CAS login API (PR #349) Changes in synapse v0.11.0-rc2 (2015-11-13) =========================================== - Various changes to /sync API response format (PR #373) - Fix regression when setting display name in newly joined room over federation (PR #368) - Fix problem where /search was slow when using SQLite (PR #366) Changes in synapse v0.11.0-rc1 (2015-11-11) =========================================== - Add Search API (PR #307, #324, #327, #336, #350, #359) - Add \'archived\' state to v2 /sync API (PR #316) - Add ability to reject invites (PR #317) - Add config option to disable password login (PR #322) - Add the login fallback API (PR #330) - Add room context API (PR #334) - Add room tagging support (PR #335) - Update v2 /sync API to match spec (PR #305, #316, #321, #332, #337, #341) - Change retry schedule for application services (PR #320) - Change retry schedule for remote servers (PR #340) - Fix bug where we hosted static content in the incorrect place (PR #329) - Fix bug where we didn\'t increment retry interval for remote servers (PR #343) Changes in synapse v0.10.1-rc1 (2015-10-15) =========================================== - Add support for CAS, thanks to Steven Hammerton (PR #295, #296) - Add support for using macaroons for `access_token` (PR #256, #229) - Add support for `m.room.canonical_alias` (PR #287) - Add support for viewing the history of rooms that they have left. (PR #276, #294) - Add support for refresh tokens (PR #240) - Add flag on creation which disables federation of the room (PR #279) - Add some room state to invites. (PR #275) - Atomically persist events when joining a room over federation (PR #283) - Change default history visibility for private rooms (PR #271) - Allow users to redact their own sent events (PR #262) - Use tox for tests (PR #247) - Split up syutil into separate libraries (PR #243) Changes in synapse v0.10.0-r2 (2015-09-16) ========================================== - Fix bug where we always fetched remote server signing keys instead of using ones in our cache. - Fix adding threepids to an existing account. - Fix bug with invinting over federation where remote server was already in the room. (PR #281, SYN-392) Changes in synapse v0.10.0-r1 (2015-09-08) ========================================== - Fix bug with python packaging Changes in synapse v0.10.0 (2015-09-03) ======================================= No change from release candidate. Changes in synapse v0.10.0-rc6 (2015-09-02) =========================================== - Remove some of the old database upgrade scripts. - Fix database port script to work with newly created sqlite databases. Changes in synapse v0.10.0-rc5 (2015-08-27) =========================================== - Fix bug that broke downloading files with ascii filenames across federation. Changes in synapse v0.10.0-rc4 (2015-08-27) =========================================== - Allow UTF-8 filenames for upload. (PR #259) Changes in synapse v0.10.0-rc3 (2015-08-25) =========================================== - Add `--keys-directory` config option to specify where files such as certs and signing keys should be stored in, when using `--generate-config` or `--generate-keys`. (PR #250) - Allow `--config-path` to specify a directory, causing synapse to use all \*.yaml files in the directory as config files. (PR #249) - Add `web_client_location` config option to specify static files to be hosted by synapse under `/_matrix/client`. (PR #245) - Add helper utility to synapse to read and parse the config files and extract the value of a given key. For example: $ python -m synapse.config read server_name -c homeserver.yaml localhost (PR #246) Changes in synapse v0.10.0-rc2 (2015-08-24) =========================================== - Fix bug where we incorrectly populated the `event_forward_extremities` table, resulting in problems joining large remote rooms (e.g. `#matrix:matrix.org`) - Reduce the number of times we wake up pushers by not listening for presence or typing events, reducing the CPU cost of each pusher. Changes in synapse v0.10.0-rc1 (2015-08-21) =========================================== Also see v0.9.4-rc1 changelog, which has been amalgamated into this release. General: - Upgrade to Twisted 15 (PR #173) - Add support for serving and fetching encryption keys over federation. (PR #208) - Add support for logging in with email address (PR #234) - Add support for new `m.room.canonical_alias` event. (PR #233) - Change synapse to treat user IDs case insensitively during registration and login. (If two users already exist with case insensitive matching user ids, synapse will continue to require them to specify their user ids exactly.) - Error if a user tries to register with an email already in use. (PR #211) - Add extra and improve existing caches (PR #212, #219, #226, #228) - Batch various storage request (PR #226, #228) - Fix bug where we didn\'t correctly log the entity that triggered the request if the request came in via an application service (PR #230) - Fix bug where we needlessly regenerated the full list of rooms an AS is interested in. (PR #232) - Add support for AS\'s to use v2\_alpha registration API (PR #210) Configuration: - Add `--generate-keys` that will generate any missing cert and key files in the configuration files. This is equivalent to running `--generate-config` on an existing configuration file. (PR #220) - `--generate-config` now no longer requires a `--server-name` parameter when used on existing configuration files. (PR #220) - Add `--print-pidfile` flag that controls the printing of the pid to stdout of the demonised process. (PR #213) Media Repository: - Fix bug where we picked a lower resolution image than requested. (PR #205) - Add support for specifying if a the media repository should dynamically thumbnail images or not. (PR #206) Metrics: - Add statistics from the reactor to the metrics API. (PR #224, #225) Demo Homeservers: - Fix starting the demo homeservers without rate-limiting enabled. (PR #182) - Fix enabling registration on demo homeservers (PR #223) Changes in synapse v0.9.4-rc1 (2015-07-21) ========================================== General: - Add basic implementation of receipts. (SPEC-99) - Add support for configuration presets in room creation API. (PR #203) - Add auth event that limits the visibility of history for new users. (SPEC-134) - Add SAML2 login/registration support. (PR #201. Thanks Muthu Subramanian!) - Add client side key management APIs for end to end encryption. (PR #198) - Change power level semantics so that you cannot kick, ban or change power levels of users that have equal or greater power level than you. (SYN-192) - Improve performance by bulk inserting events where possible. (PR #193) - Improve performance by bulk verifying signatures where possible. (PR #194) Configuration: - Add support for including TLS certificate chains. Media Repository: - Add Content-Disposition headers to content repository responses. (SYN-150) Changes in synapse v0.9.3 (2015-07-01) ====================================== No changes from v0.9.3 Release Candidate 1. Changes in synapse v0.9.3-rc1 (2015-06-23) ========================================== General: - Fix a memory leak in the notifier. (SYN-412) - Improve performance of room initial sync. (SYN-418) - General improvements to logging. - Remove `access_token` query params from `INFO` level logging. Configuration: - Add support for specifying and configuring multiple listeners. (SYN-389) Application services: - Fix bug where synapse failed to send user queries to application services. Changes in synapse v0.9.2-r2 (2015-06-15) ========================================= Fix packaging so that schema delta python files get included in the package. Changes in synapse v0.9.2 (2015-06-12) ====================================== General: - Use ultrajson for json (de)serialisation when a canonical encoding is not required. Ultrajson is significantly faster than simplejson in certain circumstances. - Use connection pools for outgoing HTTP connections. - Process thumbnails on separate threads. Configuration: - Add option, `gzip_responses`, to disable HTTP response compression. Federation: - Improve resilience of backfill by ensuring we fetch any missing auth events. - Improve performance of backfill and joining remote rooms by removing unnecessary computations. This included handling events we\'d previously handled as well as attempting to compute the current state for outliers. Changes in synapse v0.9.1 (2015-05-26) ====================================== General: - Add support for backfilling when a client paginates. This allows servers to request history for a room from remote servers when a client tries to paginate history the server does not have - SYN-36 - Fix bug where you couldn\'t disable non-default pushrules - SYN-378 - Fix `register_new_user` script - SYN-359 - Improve performance of fetching events from the database, this improves both initialSync and sending of events. - Improve performance of event streams, allowing synapse to handle more simultaneous connected clients. Federation: - Fix bug with existing backfill implementation where it returned the wrong selection of events in some circumstances. - Improve performance of joining remote rooms. Configuration: - Add support for changing the bind host of the metrics listener via the `metrics_bind_host` option. Changes in synapse v0.9.0-r5 (2015-05-21) ========================================= - Add more database caches to reduce amount of work done for each pusher. This radically reduces CPU usage when multiple pushers are set up in the same room. Changes in synapse v0.9.0 (2015-05-07) ====================================== General: - Add support for using a PostgreSQL database instead of SQLite. See [docs/postgres.rst](docs/postgres.rst) for details. - Add password change and reset APIs. See [Registration](https://github.com/matrix-org/matrix-doc/blob/master/specification/10_client_server_api.rst#registration) in the spec. - Fix memory leak due to not releasing stale notifiers - SYN-339. - Fix race in caches that occasionally caused some presence updates to be dropped - SYN-369. - Check server name has not changed on restart. - Add a sample systemd unit file and a logger configuration in contrib/systemd. Contributed Ivan Shapovalov. Federation: - Add key distribution mechanisms for fetching public keys of unavailable remote homeservers. See [Retrieving Server Keys](https://github.com/matrix-org/matrix-doc/blob/6f2698/specification/30_server_server_api.rst#retrieving-server-keys) in the spec. Configuration: - Add support for multiple config files. - Add support for dictionaries in config files. - Remove support for specifying config options on the command line, except for: - `--daemonize` - Daemonize the homeserver. - `--manhole` - Turn on the twisted telnet manhole service on the given port. - `--database-path` - The path to a sqlite database to use. - `--verbose` - The verbosity level. - `--log-file` - File to log to. - `--log-config` - Python logging config file. - `--enable-registration` - Enable registration for new users. Application services: - Reliably retry sending of events from Synapse to application services, as per [Application Services](https://github.com/matrix-org/matrix-doc/blob/0c6bd9/specification/25_application_service_api.rst#home-server---application-service-api) spec. - Application services can no longer register via the `/register` API, instead their configuration should be saved to a file and listed in the synapse `app_service_config_files` config option. The AS configuration file has the same format as the old `/register` request. See [docs/application\_services.rst](docs/application_services.rst) for more information. Changes in synapse v0.8.1 (2015-03-18) ====================================== - Disable registration by default. New users can be added using the command `register_new_matrix_user` or by enabling registration in the config. - Add metrics to synapse. To enable metrics use config options `enable_metrics` and `metrics_port`. - Fix bug where banning only kicked the user. Changes in synapse v0.8.0 (2015-03-06) ====================================== General: - Add support for registration fallback. This is a page hosted on the server which allows a user to register for an account, regardless of what client they are using (e.g. mobile devices). - Added new default push rules and made them configurable by clients: - Suppress all notice messages. - Notify when invited to a new room. - Notify for messages that don\'t match any rule. - Notify on incoming call. Federation: - Added per host server side rate-limiting of incoming federation requests. - Added a `/get_missing_events/` API to federation to reduce number of `/events/` requests. Configuration: - Added configuration option to disable registration: `disable_registration`. - Added configuration option to change soft limit of number of open file descriptors: `soft_file_limit`. - Make `tls_private_key_path` optional when running with `no_tls`. Application services: - Application services can now poll on the CS API `/events` for their events, by providing their application service `access_token`. - Added exclusive namespace support to application services API. Changes in synapse v0.7.1 (2015-02-19) ====================================== - Initial alpha implementation of parts of the Application Services API. Including: - AS Registration / Unregistration - User Query API - Room Alias Query API - Push transport for receiving events. - User/Alias namespace admin control - Add cache when fetching events from remote servers to stop repeatedly fetching events with bad signatures. - Respect the per remote server retry scheme when fetching both events and server keys to reduce the number of times we send requests to dead servers. - Inform remote servers when the local server fails to handle a received event. - Turn off python bytecode generation due to problems experienced when upgrading from previous versions. Changes in synapse v0.7.0 (2015-02-12) ====================================== - Add initial implementation of the query auth federation API, allowing servers to agree on whether an event should be allowed or rejected. - Persist events we have rejected from federation, fixing the bug where servers would keep requesting the same events. - Various federation performance improvements, including: - Add in memory caches on queries such as: > - Computing the state of a room at a point in time, used for authorization on federation requests. > - Fetching events from the database. > - User\'s room membership, used for authorizing presence updates. - Upgraded JSON library to improve parsing and serialisation speeds. - Add default avatars to new user accounts using pydenticon library. - Correctly time out federation requests. - Retry federation requests against different servers. - Add support for push and push rules. - Add alpha versions of proposed new CSv2 APIs, including `/sync` API. Changes in synapse 0.6.1 (2015-01-07) ===================================== - Major optimizations to improve performance of initial sync and event sending in large rooms (by up to 10x) - Media repository now includes a Content-Length header on media downloads. - Improve quality of thumbnails by changing resizing algorithm. Changes in synapse 0.6.0 (2014-12-16) ===================================== - Add new API for media upload and download that supports thumbnailing. - Replicate media uploads over multiple homeservers so media is always served to clients from their local homeserver. This obsoletes the \--content-addr parameter and confusion over accessing content directly from remote homeservers. - Implement exponential backoff when retrying federation requests when sending to remote homeservers which are offline. - Implement typing notifications. - Fix bugs where we sent events with invalid signatures due to bugs where we incorrectly persisted events. - Improve performance of database queries involving retrieving events. Changes in synapse 0.5.4a (2014-12-13) ====================================== - Fix bug while generating the error message when a file path specified in the config doesn\'t exist. Changes in synapse 0.5.4 (2014-12-03) ===================================== - Fix presence bug where some rooms did not display presence updates for remote users. - Do not log SQL timing log lines when started with \"-v\" - Fix potential memory leak. Changes in synapse 0.5.3c (2014-12-02) ====================================== - Change the default value for the content\_addr option to use the HTTP listener, as by default the HTTPS listener will be using a self-signed certificate. Changes in synapse 0.5.3 (2014-11-27) ===================================== - Fix bug that caused joining a remote room to fail if a single event was not signed correctly. - Fix bug which caused servers to continuously try and fetch events from other servers. Changes in synapse 0.5.2 (2014-11-26) ===================================== Fix major bug that caused rooms to disappear from peoples initial sync. Changes in synapse 0.5.1 (2014-11-26) ===================================== See UPGRADES.rst for specific instructions on how to upgrade. - Fix bug where we served up an Event that did not match its signatures. - Fix regression where we no longer correctly handled the case where a homeserver receives an event for a room it doesn\'t recognise (but is in.) Changes in synapse 0.5.0 (2014-11-19) ===================================== This release includes changes to the federation protocol and client-server API that is not backwards compatible. This release also changes the internal database schemas and so requires servers to drop their current history. See UPGRADES.rst for details. Homeserver: - Add authentication and authorization to the federation protocol. Events are now signed by their originating homeservers. - Implement the new authorization model for rooms. - Split out web client into a seperate repository: matrix-angular-sdk. - Change the structure of PDUs. - Fix bug where user could not join rooms via an alias containing 4-byte UTF-8 characters. - Merge concept of PDUs and Events internally. - Improve logging by adding request ids to log lines. - Implement a very basic room initial sync API. - Implement the new invite/join federation APIs. Webclient: - The webclient has been moved to a seperate repository. Changes in synapse 0.4.2 (2014-10-31) ===================================== Homeserver: - Fix bugs where we did not notify users of correct presence updates. - Fix bug where we did not handle sub second event stream timeouts. Webclient: - Add ability to click on messages to see JSON. - Add ability to redact messages. - Add ability to view and edit all room state JSON. - Handle incoming redactions. - Improve feedback on errors. - Fix bugs in mobile CSS. - Fix bugs with desktop notifications. Changes in synapse 0.4.1 (2014-10-17) ===================================== Webclient: - Fix bug with display of timestamps. Changes in synpase 0.4.0 (2014-10-17) ===================================== This release includes changes to the federation protocol and client-server API that is not backwards compatible. The Matrix specification has been moved to a separate git repository: You will also need an updated syutil and config. See UPGRADES.rst. Homeserver: - Sign federation transactions to assert strong identity over federation. - Rename timestamp keys in PDUs and events from \'ts\' and \'hsob\_ts\' to \'origin\_server\_ts\'. Changes in synapse 0.3.4 (2014-09-25) ===================================== This version adds support for using a TURN server. See docs/turn-howto.rst on how to set one up. Homeserver: - Add support for redaction of messages. - Fix bug where inviting a user on a remote homeserver could take up to 20-30s. - Implement a get current room state API. - Add support specifying and retrieving turn server configuration. Webclient: - Add button to send messages to users from the home page. - Add support for using TURN for VoIP calls. - Show display name change messages. - Fix bug where the client didn\'t get the state of a newly joined room until after it has been refreshed. - Fix bugs with tab complete. - Fix bug where holding down the down arrow caused chrome to chew 100% CPU. - Fix bug where desktop notifications occasionally used \"Undefined\" as the display name. - Fix more places where we sometimes saw room IDs incorrectly. - Fix bug which caused lag when entering text in the text box. Changes in synapse 0.3.3 (2014-09-22) ===================================== Homeserver: - Fix bug where you continued to get events for rooms you had left. Webclient: - Add support for video calls with basic UI. - Fix bug where one to one chats were named after your display name rather than the other person\'s. - Fix bug which caused lag when typing in the textarea. - Refuse to run on browsers we know won\'t work. - Trigger pagination when joining new rooms. - Fix bug where we sometimes didn\'t display invitations in recents. - Automatically join room when accepting a VoIP call. - Disable outgoing and reject incoming calls on browsers we don\'t support VoIP in. - Don\'t display desktop notifications for messages in the room you are non-idle and speaking in. Changes in synapse 0.3.2 (2014-09-18) ===================================== Webclient: - Fix bug where an empty \"bing words\" list in old accounts didn\'t send notifications when it should have done. Changes in synapse 0.3.1 (2014-09-18) ===================================== This is a release to hotfix v0.3.0 to fix two regressions. Webclient: - Fix a regression where we sometimes displayed duplicate events. - Fix a regression where we didn\'t immediately remove rooms you were banned in from the recents list. Changes in synapse 0.3.0 (2014-09-18) ===================================== See UPGRADE for information about changes to the client server API, including breaking backwards compatibility with VoIP calls and registration API. Homeserver: - When a user changes their displayname or avatar the server will now update all their join states to reflect this. - The server now adds \"age\" key to events to indicate how old they are. This is clock independent, so at no point does any server or webclient have to assume their clock is in sync with everyone else. - Fix bug where we didn\'t correctly pull in missing PDUs. - Fix bug where prev\_content key wasn\'t always returned. - Add support for password resets. Webclient: - Improve page content loading. - Join/parts now trigger desktop notifications. - Always show room aliases in the UI if one is present. - No longer show user-count in the recents side panel. - Add up & down arrow support to the text box for message sending to step through your sent history. - Don\'t display notifications for our own messages. - Emotes are now formatted correctly in desktop notifications. - The recents list now differentiates between public & private rooms. - Fix bug where when switching between rooms the pagination flickered before the view jumped to the bottom of the screen. - Add bing word support. Registration API: - The registration API has been overhauled to function like the login API. In practice, this means registration requests must now include the following: \'type\':\'m.login.password\'. See UPGRADE for more information on this. - The \'user\_id\' key has been renamed to \'user\' to better match the login API. - There is an additional login type: \'m.login.email.identity\'. - The command client and web client have been updated to reflect these changes. Changes in synapse 0.2.3 (2014-09-12) ===================================== Homeserver: - Fix bug where we stopped sending events to remote homeservers if a user from that homeserver left, even if there were some still in the room. - Fix bugs in the state conflict resolution where it was incorrectly rejecting events. Webclient: - Display room names and topics. - Allow setting/editing of room names and topics. - Display information about rooms on the main page. - Handle ban and kick events in real time. - VoIP UI and reliability improvements. - Add glare support for VoIP. - Improvements to initial startup speed. - Don\'t display duplicate join events. - Local echo of messages. - Differentiate sending and sent of local echo. - Various minor bug fixes. Changes in synapse 0.2.2 (2014-09-06) ===================================== Homeserver: - When the server returns state events it now also includes the previous content. - Add support for inviting people when creating a new room. - Make the homeserver inform the room via m.room.aliases when a new alias is added for a room. - Validate m.room.power\_level events. Webclient: - Add support for captchas on registration. - Handle m.room.aliases events. - Asynchronously send messages and show a local echo. - Inform the UI when a message failed to send. - Only autoscroll on receiving a new message if the user was already at the bottom of the screen. - Add support for ban/kick reasons. Changes in synapse 0.2.1 (2014-09-03) ===================================== Homeserver: - Added support for signing up with a third party id. - Add synctl scripts. - Added rate limiting. - Add option to change the external address the content repo uses. - Presence bug fixes. Webclient: - Added support for signing up with a third party id. - Added support for banning and kicking users. - Added support for displaying and setting ops. - Added support for room names. - Fix bugs with room membership event display. Changes in synapse 0.2.0 (2014-09-02) ===================================== This update changes many configuration options, updates the database schema and mandates SSL for server-server connections. Homeserver: - Require SSL for server-server connections. - Add SSL listener for client-server connections. - Add ability to use config files. - Add support for kicking/banning and power levels. - Allow setting of room names and topics on creation. - Change presence to include last seen time of the user. - Change url path prefix to /\_matrix/\... - Bug fixes to presence. Webclient: - Reskin the CSS for registration and login. - Various improvements to rooms CSS. - Support changes in client-server API. - Bug fixes to VOIP UI. - Various bug fixes to handling of changes to room member list. Changes in synapse 0.1.2 (2014-08-29) ===================================== Webclient: - Add basic call state UI for VoIP calls. Changes in synapse 0.1.1 (2014-08-29) ===================================== Homeserver: - Fix bug that caused the event stream to not notify some clients about changes. Changes in synapse 0.1.0 (2014-08-29) ===================================== Presence has been reenabled in this release. Homeserver: - Update client to server API, including: - Use a more consistent url scheme. - Provide more useful information in the initial sync api. - Change the presence handling to be much more efficient. - Change the presence server to server API to not require explicit polling of all users who share a room with a user. - Fix races in the event streaming logic. Webclient: - Update to use new client to server API. - Add basic VOIP support. - Add idle timers that change your status to away. - Add recent rooms column when viewing a room. - Various network efficiency improvements. - Add basic mobile browser support. - Add a settings page. Changes in synapse 0.0.1 (2014-08-22) ===================================== Presence has been disabled in this release due to a bug that caused the homeserver to spam other remote homeservers. Homeserver: - Completely change the database schema to support generic event types. - Improve presence reliability. - Improve reliability of joining remote rooms. - Fix bug where room join events were duplicated. - Improve initial sync API to return more information to the client. - Stop generating fake messages for room membership events. Webclient: - Add tab completion of names. - Add ability to upload and send images. - Add profile pages. - Improve CSS layout of room. - Disambiguate identical display names. - Don\'t get remote users display names and avatars individually. - Use the new initial sync API to reduce number of round trips to the homeserver. - Change url scheme to use room aliases instead of room ids where known. - Increase longpoll timeout. Changes in synapse 0.0.0 (2014-08-13) ===================================== - Initial alpha release synapse-1.53.0/CONTRIBUTING.md000066400000000000000000000002531420514467300155210ustar00rootroot00000000000000# Welcome to Synapse Please see the [contributors' guide](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html) in our rendered documentation. synapse-1.53.0/INSTALL.md000066400000000000000000000004331420514467300147200ustar00rootroot00000000000000# Installation Instructions This document has moved to the [Synapse documentation website](https://matrix-org.github.io/synapse/latest/setup/installation.html). Please update your links. The markdown source is available in [docs/setup/installation.md](docs/setup/installation.md). synapse-1.53.0/LICENSE000066400000000000000000000236761420514467300143130ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS synapse-1.53.0/MANIFEST.in000066400000000000000000000023511420514467300150270ustar00rootroot00000000000000include synctl include LICENSE include VERSION include *.rst include *.md include demo/README include demo/demo.tls.dh include demo/*.py include demo/*.sh include synapse/py.typed recursive-include synapse/storage *.sql recursive-include synapse/storage *.sql.postgres recursive-include synapse/storage *.sql.sqlite recursive-include synapse/storage *.py recursive-include synapse/storage *.txt recursive-include synapse/storage *.md recursive-include docs * recursive-include scripts * recursive-include scripts-dev * recursive-include synapse *.pyi recursive-include tests *.py recursive-include tests *.pem recursive-include tests *.p8 recursive-include tests *.crt recursive-include tests *.key recursive-include synapse/res * recursive-include synapse/static *.css recursive-include synapse/static *.gif recursive-include synapse/static *.html recursive-include synapse/static *.js exclude .codecov.yml exclude .coveragerc exclude .dockerignore exclude .editorconfig exclude Dockerfile exclude mypy.ini exclude sytest-blacklist exclude test_postgresql.sh include book.toml include pyproject.toml recursive-include changelog.d * prune .circleci prune .github prune .ci prune contrib prune debian prune demo/etc prune docker prune snap prune stubs synapse-1.53.0/README.rst000066400000000000000000000500361420514467300147630ustar00rootroot00000000000000========================================================================= Synapse |support| |development| |documentation| |license| |pypi| |python| ========================================================================= .. contents:: Introduction ============ Matrix is an ambitious new ecosystem for open federated Instant Messaging and VoIP. The basics you need to know to get up and running are: - Everything in Matrix happens in a room. Rooms are distributed and do not exist on any single server. Rooms can be located using convenience aliases like ``#matrix:matrix.org`` or ``#test:localhost:8448``. - Matrix user IDs look like ``@matthew:matrix.org`` (although in the future you will normally refer to yourself and others using a third party identifier (3PID): email address, phone number, etc rather than manipulating Matrix user IDs) The overall architecture is:: client <----> homeserver <=====================> homeserver <----> client https://somewhere.org/_matrix https://elsewhere.net/_matrix ``#matrix:matrix.org`` is the official support room for Matrix, and can be accessed by any client from https://matrix.org/docs/projects/try-matrix-now.html or via IRC bridge at irc://irc.libera.chat/matrix. Synapse is currently in rapid development, but as of version 0.5 we believe it is sufficiently stable to be run as an internet-facing service for real usage! About Matrix ============ Matrix specifies a set of pragmatic RESTful HTTP JSON APIs as an open standard, which handle: - Creating and managing fully distributed chat rooms with no single points of control or failure - Eventually-consistent cryptographically secure synchronisation of room state across a global open network of federated servers and services - Sending and receiving extensible messages in a room with (optional) end-to-end encryption - Inviting, joining, leaving, kicking, banning room members - Managing user accounts (registration, login, logout) - Using 3rd Party IDs (3PIDs) such as email addresses, phone numbers, Facebook accounts to authenticate, identify and discover users on Matrix. - Placing 1:1 VoIP and Video calls These APIs are intended to be implemented on a wide range of servers, services and clients, letting developers build messaging and VoIP functionality on top of the entirely open Matrix ecosystem rather than using closed or proprietary solutions. The hope is for Matrix to act as the building blocks for a new generation of fully open and interoperable messaging and VoIP apps for the internet. Synapse is a Matrix "homeserver" implementation developed by the matrix.org core team, written in Python 3/Twisted. In Matrix, every user runs one or more Matrix clients, which connect through to a Matrix homeserver. The homeserver stores all their personal chat history and user account information - much as a mail client connects through to an IMAP/SMTP server. Just like email, you can either run your own Matrix homeserver and control and own your own communications and history or use one hosted by someone else (e.g. matrix.org) - there is no single point of control or mandatory service provider in Matrix, unlike WhatsApp, Facebook, Hangouts, etc. We'd like to invite you to join #matrix:matrix.org (via https://matrix.org/docs/projects/try-matrix-now.html), run a homeserver, take a look at the `Matrix spec `_, and experiment with the `APIs `_ and `Client SDKs `_. Thanks for using Matrix! Support ======= For support installing or managing Synapse, please join |room|_ (from a matrix.org account if necessary) and ask questions there. We do not use GitHub issues for support requests, only for bug reports and feature requests. Synapse's documentation is `nicely rendered on GitHub Pages `_, with its source available in |docs|_. .. |room| replace:: ``#synapse:matrix.org`` .. _room: https://matrix.to/#/#synapse:matrix.org .. |docs| replace:: ``docs`` .. _docs: docs Synapse Installation ==================== .. _federation: * For details on how to install synapse, see `Installation Instructions `_. * For specific details on how to configure Synapse for federation see `docs/federate.md `_ Connecting to Synapse from a client =================================== The easiest way to try out your new Synapse installation is by connecting to it from a web client. Unless you are running a test instance of Synapse on your local machine, in general, you will need to enable TLS support before you can successfully connect from a client: see `TLS certificates `_. An easy way to get started is to login or register via Element at https://app.element.io/#/login or https://app.element.io/#/register respectively. You will need to change the server you are logging into from ``matrix.org`` and instead specify a Homeserver URL of ``https://:8448`` (or just ``https://`` if you are using a reverse proxy). If you prefer to use another client, refer to our `client breakdown `_. If all goes well you should at least be able to log in, create a room, and start sending messages. .. _`client-user-reg`: Registering a new user from a client ------------------------------------ By default, registration of new users via Matrix clients is disabled. To enable it, specify ``enable_registration: true`` in ``homeserver.yaml``. (It is then recommended to also set up CAPTCHA - see ``_.) Once ``enable_registration`` is set to ``true``, it is possible to register a user via a Matrix client. Your new user name will be formed partly from the ``server_name``, and partly from a localpart you specify when you create the account. Your name will take the form of:: @localpart:my.domain.name (pronounced "at localpart on my dot domain dot name"). As when logging in, you will need to specify a "Custom server". Specify your desired ``localpart`` in the 'User name' box. Security note ============= Matrix serves raw, user-supplied data in some APIs -- specifically the `content repository endpoints`_. .. _content repository endpoints: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid Whilst we make a reasonable effort to mitigate against XSS attacks (for instance, by using `CSP`_), a Matrix homeserver should not be hosted on a domain hosting other web applications. This especially applies to sharing the domain with Matrix web clients and other sensitive applications like webmail. See https://developer.github.com/changes/2014-04-25-user-content-security for more information. .. _CSP: https://github.com/matrix-org/synapse/pull/1021 Ideally, the homeserver should not simply be on a different subdomain, but on a completely different `registered domain`_ (also known as top-level site or eTLD+1). This is because `some attacks`_ are still possible as long as the two applications share the same registered domain. .. _registered domain: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3 .. _some attacks: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie To illustrate this with an example, if your Element Web or other sensitive web application is hosted on ``A.example1.com``, you should ideally host Synapse on ``example2.com``. Some amount of protection is offered by hosting on ``B.example1.com`` instead, so this is also acceptable in some scenarios. However, you should *not* host your Synapse on ``A.example1.com``. Note that all of the above refers exclusively to the domain used in Synapse's ``public_baseurl`` setting. In particular, it has no bearing on the domain mentioned in MXIDs hosted on that server. Following this advice ensures that even if an XSS is found in Synapse, the impact to other applications will be minimal. Upgrading an existing Synapse ============================= The instructions for upgrading synapse are in `the upgrade notes`_. Please check these instructions as upgrading may require extra steps for some versions of synapse. .. _the upgrade notes: https://matrix-org.github.io/synapse/develop/upgrade.html .. _reverse-proxy: Using a reverse proxy with Synapse ================================== It is recommended to put a reverse proxy such as `nginx `_, `Apache `_, `Caddy `_, `HAProxy `_ or `relayd `_ in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. For information on configuring one, see ``_. Identity Servers ================ Identity servers have the job of mapping email addresses and other 3rd Party IDs (3PIDs) to Matrix user IDs, as well as verifying the ownership of 3PIDs before creating that mapping. **They are not where accounts or credentials are stored - these live on home servers. Identity Servers are just for mapping 3rd party IDs to matrix IDs.** This process is very security-sensitive, as there is obvious risk of spam if it is too easy to sign up for Matrix accounts or harvest 3PID data. In the longer term, we hope to create a decentralised system to manage it (`matrix-doc #712 `_), but in the meantime, the role of managing trusted identity in the Matrix ecosystem is farmed out to a cluster of known trusted ecosystem partners, who run 'Matrix Identity Servers' such as `Sydent `_, whose role is purely to authenticate and track 3PID logins and publish end-user public keys. You can host your own copy of Sydent, but this will prevent you reaching other users in the Matrix ecosystem via their email address, and prevent them finding you. We therefore recommend that you use one of the centralised identity servers at ``https://matrix.org`` or ``https://vector.im`` for now. To reiterate: the Identity server will only be used if you choose to associate an email address with your account, or send an invite to another user via their email address. Password reset ============== Users can reset their password through their client. Alternatively, a server admin can reset a users password using the `admin API `_ or by directly editing the database as shown below. First calculate the hash of the new password:: $ ~/synapse/env/bin/hash_password Password: Confirm password: $2a$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Then update the ``users`` table in the database:: UPDATE users SET password_hash='$2a$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' WHERE name='@test:test.com'; Synapse Development =================== The best place to get started is our `guide for contributors `_. This is part of our larger `documentation `_, which includes information for synapse developers as well as synapse administrators. Developers might be particularly interested in: * `Synapse's database schema `_, * `notes on Synapse's implementation details `_, and * `how we use git `_. Alongside all that, join our developer community on Matrix: `#synapse-dev:matrix.org `_, featuring real humans! Quick start ----------- Before setting up a development environment for synapse, make sure you have the system dependencies (such as the python header files) installed - see `Platform-specific prerequisites `_. To check out a synapse for development, clone the git repo into a working directory of your choice:: git clone https://github.com/matrix-org/synapse.git cd synapse Synapse has a number of external dependencies, that are easiest to install using pip and a virtualenv:: python3 -m venv ./env source ./env/bin/activate pip install -e ".[all,dev]" This will run a process of downloading and installing all the needed dependencies into a virtual env. If any dependencies fail to install, try installing the failing modules individually:: pip install -e "module-name" We recommend using the demo which starts 3 federated instances running on ports `8080` - `8082` ./demo/start.sh (to stop, you can use `./demo/stop.sh`) If you just want to start a single instance of the app and run it directly:: # Create the homeserver.yaml config once python -m synapse.app.homeserver \ --server-name my.domain.name \ --config-path homeserver.yaml \ --generate-config \ --report-stats=[yes|no] # Start the app python -m synapse.app.homeserver --config-path homeserver.yaml Running the unit tests ---------------------- After getting up and running, you may wish to run Synapse's unit tests to check that everything is installed correctly:: trial tests This should end with a 'PASSED' result (note that exact numbers will differ):: Ran 1337 tests in 716.064s PASSED (skips=15, successes=1322) For more tips on running the unit tests, like running a specific test or to see the logging output, see the `CONTRIBUTING doc `_. Running the Integration Tests ----------------------------- Synapse is accompanied by `SyTest `_, a Matrix homeserver integration testing suite, which uses HTTP requests to access the API as a Matrix client would. It is able to run Synapse directly from the source tree, so installation of the server is not required. Testing with SyTest is recommended for verifying that changes related to the Client-Server API are functioning correctly. See the `SyTest installation instructions `_ for details. Platform dependencies ===================== Synapse uses a number of platform dependencies such as Python and PostgreSQL, and aims to follow supported upstream versions. See the ``_ document for more details. Troubleshooting =============== Need help? Join our community support room on Matrix: `#synapse:matrix.org `_ Running out of File Handles --------------------------- If synapse runs out of file handles, it typically fails badly - live-locking at 100% CPU, and/or failing to accept new TCP connections (blocking the connecting client). Matrix currently can legitimately use a lot of file handles, thanks to busy rooms like #matrix:matrix.org containing hundreds of participating servers. The first time a server talks in a room it will try to connect simultaneously to all participating servers, which could exhaust the available file descriptors between DNS queries & HTTPS sockets, especially if DNS is slow to respond. (We need to improve the routing algorithm used to be better than full mesh, but as of March 2019 this hasn't happened yet). If you hit this failure mode, we recommend increasing the maximum number of open file handles to be at least 4096 (assuming a default of 1024 or 256). This is typically done by editing ``/etc/security/limits.conf`` Separately, Synapse may leak file handles if inbound HTTP requests get stuck during processing - e.g. blocked behind a lock or talking to a remote server etc. This is best diagnosed by matching up the 'Received request' and 'Processed request' log lines and looking for any 'Processed request' lines which take more than a few seconds to execute. Please let us know at #synapse:matrix.org if you see this failure mode so we can help debug it, however. Help!! Synapse is slow and eats all my RAM/CPU! ----------------------------------------------- First, ensure you are running the latest version of Synapse, using Python 3 with a PostgreSQL database. Synapse's architecture is quite RAM hungry currently - we deliberately cache a lot of recent room data and metadata in RAM in order to speed up common requests. We'll improve this in the future, but for now the easiest way to either reduce the RAM usage (at the risk of slowing things down) is to set the almost-undocumented ``SYNAPSE_CACHE_FACTOR`` environment variable. The default is 0.5, which can be decreased to reduce RAM usage in memory constrained enviroments, or increased if performance starts to degrade. However, degraded performance due to a low cache factor, common on machines with slow disks, often leads to explosions in memory use due backlogged requests. In this case, reducing the cache factor will make things worse. Instead, try increasing it drastically. 2.0 is a good starting value. Using `libjemalloc `_ can also yield a significant improvement in overall memory use, and especially in terms of giving back RAM to the OS. To use it, the library must simply be put in the LD_PRELOAD environment variable when launching Synapse. On Debian, this can be done by installing the ``libjemalloc1`` package and adding this line to ``/etc/default/matrix-synapse``:: LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 This can make a significant difference on Python 2.7 - it's unclear how much of an improvement it provides on Python 3.x. If you're encountering high CPU use by the Synapse process itself, you may be affected by a bug with presence tracking that leads to a massive excess of outgoing federation requests (see `discussion `_). If metrics indicate that your server is also issuing far more outgoing federation requests than can be accounted for by your users' activity, this is a likely cause. The misbehavior can be worked around by setting the following in the Synapse config file: .. code-block:: yaml presence: enabled: false People can't accept room invitations from me -------------------------------------------- The typical failure mode here is that you send an invitation to someone to join a room or direct chat, but when they go to accept it, they get an error (typically along the lines of "Invalid signature"). They might see something like the following in their logs:: 2019-09-11 19:32:04,271 - synapse.federation.transport.server - 288 - WARNING - GET-11752 - authenticate_request failed: 401: Invalid signature for server with key ed25519:a_EqML: Unable to verify signature for This is normally caused by a misconfiguration in your reverse-proxy. See ``_ and double-check that your settings are correct. .. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (get support on #synapse:matrix.org) :target: https://matrix.to/#/#synapse:matrix.org .. |development| image:: https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix :alt: (discuss development on #synapse-dev:matrix.org) :target: https://matrix.to/#/#synapse-dev:matrix.org .. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success :alt: (Rendered documentation on GitHub Pages) :target: https://matrix-org.github.io/synapse/latest/ .. |license| image:: https://img.shields.io/github/license/matrix-org/synapse :alt: (check license in LICENSE file) :target: LICENSE .. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (latest version released on PyPi) :target: https://pypi.org/project/matrix-synapse .. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (supported python versions) :target: https://pypi.org/project/matrix-synapse synapse-1.53.0/UPGRADE.rst000066400000000000000000000004011420514467300151040ustar00rootroot00000000000000Upgrading Synapse ================= This document has moved to the `Synapse documentation website `_. Please update your links. The markdown source is available in `docs/upgrade.md `_. synapse-1.53.0/book.toml000066400000000000000000000024061420514467300151210ustar00rootroot00000000000000# Documentation for possible options in this file is at # https://rust-lang.github.io/mdBook/format/config.html [book] title = "Synapse" authors = ["The Matrix.org Foundation C.I.C."] language = "en" multilingual = false # The directory that documentation files are stored in src = "docs" [build] # Prevent markdown pages from being automatically generated when they're # linked to in SUMMARY.md create-missing = false [output.html] # The URL visitors will be directed to when they try to edit a page edit-url-template = "https://github.com/matrix-org/synapse/edit/develop/{path}" # Remove the numbers that appear before each item in the sidebar, as they can # get quite messy as we nest deeper no-section-label = true # The source code URL of the repository git-repository-url = "https://github.com/matrix-org/synapse" # The path that the docs are hosted on site-url = "/synapse/" # Additional HTML, JS, CSS that's injected into each page of the book. # More information available in docs/website_files/README.md additional-css = [ "docs/website_files/table-of-contents.css", "docs/website_files/remove-nav-buttons.css", "docs/website_files/indent-section-headers.css", ] additional-js = ["docs/website_files/table-of-contents.js"] theme = "docs/website_files/theme"synapse-1.53.0/changelog.d/000077500000000000000000000000001420514467300154415ustar00rootroot00000000000000synapse-1.53.0/changelog.d/.gitignore000066400000000000000000000000141420514467300174240ustar00rootroot00000000000000!.gitignore synapse-1.53.0/contrib/000077500000000000000000000000001420514467300147305ustar00rootroot00000000000000synapse-1.53.0/contrib/README.rst000066400000000000000000000007471420514467300164270ustar00rootroot00000000000000Community Contributions ======================= Everything in this directory are projects submitted by the community that may be useful to others. As such, the project maintainers cannot guarantee support, stability or backwards compatibility of these projects. Files in this directory should *not* be relied on directly, as they may not continue to work or exist in future. If you wish to use any of these files then they should be copied to avoid them breaking from underneath you. synapse-1.53.0/contrib/cmdclient/000077500000000000000000000000001420514467300166725ustar00rootroot00000000000000synapse-1.53.0/contrib/cmdclient/console.py000077500000000000000000000726051420514467300207230ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Starts a synapse client console. """ import argparse import cmd import getpass import json import shlex import sys import time import urllib from http import TwistedHttpClient from typing import Optional import nacl.encoding import nacl.signing import urlparse from signedjson.sign import SignatureVerifyException, verify_signed_json from twisted.internet import defer, reactor, threads CONFIG_JSON = "cmdclient_config.json" # TODO: The concept of trusted identity servers has been deprecated. This option and checks # should be removed TRUSTED_ID_SERVERS = ["localhost:8001"] class SynapseCmd(cmd.Cmd): """Basic synapse command-line processor. This processes commands from the user and calls the relevant HTTP methods. """ def __init__(self, http_client, server_url, identity_server_url, username, token): cmd.Cmd.__init__(self) self.http_client = http_client self.http_client.verbose = True self.config = { "url": server_url, "identityServerUrl": identity_server_url, "user": username, "token": token, "verbose": "on", "complete_usernames": "on", "send_delivery_receipts": "on", } self.path_prefix = "/_matrix/client/api/v1" self.event_stream_token = "END" self.prompt = ">>> " def do_EOF(self, line): # allows CTRL+D quitting return True def emptyline(self): pass # else it repeats the previous command def _usr(self): return self.config["user"] def _tok(self): return self.config["token"] def _url(self): return self.config["url"] + self.path_prefix def _identityServerUrl(self): return self.config["identityServerUrl"] def _is_on(self, config_name): if config_name in self.config: return self.config[config_name] == "on" return False def _domain(self): if "user" not in self.config or not self.config["user"]: return None return self.config["user"].split(":")[1] def do_config(self, line): """Show the config for this client: "config" Edit a key value mapping: "config key value" e.g. "config token 1234" Config variables: user: The username to auth with. token: The access token to auth with. url: The url of the server. verbose: [on|off] The verbosity of requests/responses. complete_usernames: [on|off] Auto complete partial usernames by assuming they are on the same homeserver as you. E.g. name >> @name:yourhost send_delivery_receipts: [on|off] Automatically send receipts to messages when performing a 'stream' command. Additional key/values can be added and can be substituted into requests by using $. E.g. 'config roomid room1' then 'raw get /rooms/$roomid'. """ if len(line) == 0: print(json.dumps(self.config, indent=4)) return try: args = self._parse(line, ["key", "val"], force_keys=True) # make sure restricted config values are checked config_rules = [ # key, valid_values ("verbose", ["on", "off"]), ("complete_usernames", ["on", "off"]), ("send_delivery_receipts", ["on", "off"]), ] for key, valid_vals in config_rules: if key == args["key"] and args["val"] not in valid_vals: print("%s value must be one of %s" % (args["key"], valid_vals)) return # toggle the http client verbosity if args["key"] == "verbose": self.http_client.verbose = "on" == args["val"] # assign the new config self.config[args["key"]] = args["val"] print(json.dumps(self.config, indent=4)) save_config(self.config) except Exception as e: print(e) def do_register(self, line): """Registers for a new account: "register " : The desired user ID : Do not automatically clobber config values. """ args = self._parse(line, ["userid", "noupdate"]) password = None pwd = None pwd2 = "_" while pwd != pwd2: pwd = getpass.getpass("Type a password for this user: ") pwd2 = getpass.getpass("Retype the password: ") if pwd != pwd2 or len(pwd) == 0: print("Password mismatch.") pwd = None else: password = pwd body = {"type": "m.login.password"} if "userid" in args: body["user"] = args["userid"] if password: body["password"] = password reactor.callFromThread(self._do_register, body, "noupdate" not in args) @defer.inlineCallbacks def _do_register(self, data, update_config): # check the registration flows url = self._url() + "/register" json_res = yield self.http_client.do_request("GET", url) print(json.dumps(json_res, indent=4)) passwordFlow = None for flow in json_res["flows"]: if flow["type"] == "m.login.recaptcha" or ( "stages" in flow and "m.login.recaptcha" in flow["stages"] ): print("Unable to register: Home server requires captcha.") return if flow["type"] == "m.login.password" and "stages" not in flow: passwordFlow = flow break if not passwordFlow: return json_res = yield self.http_client.do_request("POST", url, data=data) print(json.dumps(json_res, indent=4)) if update_config and "user_id" in json_res: self.config["user"] = json_res["user_id"] self.config["token"] = json_res["access_token"] save_config(self.config) def do_login(self, line): """Login as a specific user: "login @bob:localhost" You MAY be prompted for a password, or instructed to visit a URL. """ try: args = self._parse(line, ["user_id"], force_keys=True) can_login = threads.blockingCallFromThread(reactor, self._check_can_login) if can_login: p = getpass.getpass("Enter your password: ") user = args["user_id"] if self._is_on("complete_usernames") and not user.startswith("@"): domain = self._domain() if domain: user = "@" + user + ":" + domain reactor.callFromThread(self._do_login, user, p) # print " got %s " % p except Exception as e: print(e) @defer.inlineCallbacks def _do_login(self, user, password): path = "/login" data = {"user": user, "password": password, "type": "m.login.password"} url = self._url() + path json_res = yield self.http_client.do_request("POST", url, data=data) print(json_res) if "access_token" in json_res: self.config["user"] = user self.config["token"] = json_res["access_token"] save_config(self.config) print("Login successful.") @defer.inlineCallbacks def _check_can_login(self): path = "/login" # ALWAYS check that the home server can handle the login request before # submitting! url = self._url() + path json_res = yield self.http_client.do_request("GET", url) print(json_res) if "flows" not in json_res: print("Failed to find any login flows.") defer.returnValue(False) flow = json_res["flows"][0] # assume first is the one we want. if "type" not in flow or "m.login.password" != flow["type"] or "stages" in flow: fallback_url = self._url() + "/login/fallback" print( "Unable to login via the command line client. Please visit " "%s to login." % fallback_url ) defer.returnValue(False) defer.returnValue(True) def do_emailrequest(self, line): """Requests the association of a third party identifier
The email address) A string of characters generated when requesting an email that you'll supply in subsequent calls to identify yourself The number of times the user has requested an email. Leave this the same between requests to retry the request at the transport level. Increment it to request that the email be sent again. """ args = self._parse(line, ["address", "clientSecret", "sendAttempt"]) postArgs = { "email": args["address"], "clientSecret": args["clientSecret"], "sendAttempt": args["sendAttempt"], } reactor.callFromThread(self._do_emailrequest, postArgs) @defer.inlineCallbacks def _do_emailrequest(self, args): # TODO: Update to use v2 Identity Service API endpoint url = ( self._identityServerUrl() + "/_matrix/identity/api/v1/validate/email/requestToken" ) json_res = yield self.http_client.do_request( "POST", url, data=urllib.urlencode(args), jsonreq=False, headers={"Content-Type": ["application/x-www-form-urlencoded"]}, ) print(json_res) if "sid" in json_res: print("Token sent. Your session ID is %s" % (json_res["sid"])) def do_emailvalidate(self, line): """Validate and associate a third party ID The session ID (sid) given to you in the response to requestToken The token sent to your third party identifier address The same clientSecret you supplied in requestToken """ args = self._parse(line, ["sid", "token", "clientSecret"]) postArgs = { "sid": args["sid"], "token": args["token"], "clientSecret": args["clientSecret"], } reactor.callFromThread(self._do_emailvalidate, postArgs) @defer.inlineCallbacks def _do_emailvalidate(self, args): # TODO: Update to use v2 Identity Service API endpoint url = ( self._identityServerUrl() + "/_matrix/identity/api/v1/validate/email/submitToken" ) json_res = yield self.http_client.do_request( "POST", url, data=urllib.urlencode(args), jsonreq=False, headers={"Content-Type": ["application/x-www-form-urlencoded"]}, ) print(json_res) def do_3pidbind(self, line): """Validate and associate a third party ID The session ID (sid) given to you in the response to requestToken The same clientSecret you supplied in requestToken """ args = self._parse(line, ["sid", "clientSecret"]) postArgs = {"sid": args["sid"], "clientSecret": args["clientSecret"]} postArgs["mxid"] = self.config["user"] reactor.callFromThread(self._do_3pidbind, postArgs) @defer.inlineCallbacks def _do_3pidbind(self, args): # TODO: Update to use v2 Identity Service API endpoint url = self._identityServerUrl() + "/_matrix/identity/api/v1/3pid/bind" json_res = yield self.http_client.do_request( "POST", url, data=urllib.urlencode(args), jsonreq=False, headers={"Content-Type": ["application/x-www-form-urlencoded"]}, ) print(json_res) def do_join(self, line): """Joins a room: "join " """ try: args = self._parse(line, ["roomid"], force_keys=True) self._do_membership_change(args["roomid"], "join", self._usr()) except Exception as e: print(e) def do_joinalias(self, line): try: args = self._parse(line, ["roomname"], force_keys=True) path = "/join/%s" % urllib.quote(args["roomname"]) reactor.callFromThread(self._run_and_pprint, "POST", path, {}) except Exception as e: print(e) def do_topic(self, line): """ "topic [set|get] []" Set the topic for a room: topic set Get the topic for a room: topic get """ try: args = self._parse(line, ["action", "roomid", "topic"]) if "action" not in args or "roomid" not in args: print("Must specify set|get and a room ID.") return if args["action"].lower() not in ["set", "get"]: print("Must specify set|get, not %s" % args["action"]) return path = "/rooms/%s/topic" % urllib.quote(args["roomid"]) if args["action"].lower() == "set": if "topic" not in args: print("Must specify a new topic.") return body = {"topic": args["topic"]} reactor.callFromThread(self._run_and_pprint, "PUT", path, body) elif args["action"].lower() == "get": reactor.callFromThread(self._run_and_pprint, "GET", path) except Exception as e: print(e) def do_invite(self, line): """Invite a user to a room: "invite " """ try: args = self._parse(line, ["userid", "roomid"], force_keys=True) user_id = args["userid"] reactor.callFromThread(self._do_invite, args["roomid"], user_id) except Exception as e: print(e) @defer.inlineCallbacks def _do_invite(self, roomid, userstring): if not userstring.startswith("@") and self._is_on("complete_usernames"): # TODO: Update to use v2 Identity Service API endpoint url = self._identityServerUrl() + "/_matrix/identity/api/v1/lookup" json_res = yield self.http_client.do_request( "GET", url, qparams={"medium": "email", "address": userstring} ) mxid = None if "mxid" in json_res and "signatures" in json_res: # TODO: Update to use v2 Identity Service API endpoint url = ( self._identityServerUrl() + "/_matrix/identity/api/v1/pubkey/ed25519" ) pubKey = None pubKeyObj = yield self.http_client.do_request("GET", url) if "public_key" in pubKeyObj: pubKey = nacl.signing.VerifyKey( pubKeyObj["public_key"], encoder=nacl.encoding.HexEncoder ) else: print("No public key found in pubkey response!") sigValid = False if pubKey: for signame in json_res["signatures"]: if signame not in TRUSTED_ID_SERVERS: print( "Ignoring signature from untrusted server %s" % (signame) ) else: try: verify_signed_json(json_res, signame, pubKey) sigValid = True print( "Mapping %s -> %s correctly signed by %s" % (userstring, json_res["mxid"], signame) ) break except SignatureVerifyException as e: print("Invalid signature from %s" % (signame)) print(e) if sigValid: print("Resolved 3pid %s to %s" % (userstring, json_res["mxid"])) mxid = json_res["mxid"] else: print( "Got association for %s but couldn't verify signature" % (userstring) ) if not mxid: mxid = "@" + userstring + ":" + self._domain() self._do_membership_change(roomid, "invite", mxid) def do_leave(self, line): """Leaves a room: "leave " """ try: args = self._parse(line, ["roomid"], force_keys=True) self._do_membership_change(args["roomid"], "leave", self._usr()) except Exception as e: print(e) def do_send(self, line): """Sends a message. "send " """ args = self._parse(line, ["roomid", "body"]) txn_id = "txn%s" % int(time.time()) path = "/rooms/%s/send/m.room.message/%s" % ( urllib.quote(args["roomid"]), txn_id, ) body_json = {"msgtype": "m.text", "body": args["body"]} reactor.callFromThread(self._run_and_pprint, "PUT", path, body_json) def do_list(self, line): """List data about a room. "list members [query]" - List all the members in this room. "list messages [query]" - List all the messages in this room. Where [query] will be directly applied as query parameters, allowing you to use the pagination API. E.g. the last 3 messages in this room: "list messages from=END&to=START&limit=3" """ args = self._parse(line, ["type", "roomid", "qp"]) if "type" not in args or "roomid" not in args: print("Must specify type and room ID.") return if args["type"] not in ["members", "messages"]: print("Unrecognised type: %s" % args["type"]) return room_id = args["roomid"] path = "/rooms/%s/%s" % (urllib.quote(room_id), args["type"]) qp = {"access_token": self._tok()} if "qp" in args: for key_value_str in args["qp"].split("&"): try: key_value = key_value_str.split("=") qp[key_value[0]] = key_value[1] except Exception: print("Bad query param: %s" % key_value) return reactor.callFromThread(self._run_and_pprint, "GET", path, query_params=qp) def do_create(self, line): """Creates a room. "create [public|private] " - Create a room with the specified visibility. "create " - Create a room with default visibility. "create [public|private]" - Create a room with specified visibility. "create" - Create a room with default visibility. """ args = self._parse(line, ["vis", "roomname"]) # fixup args depending on which were set body = {} if "vis" in args and args["vis"] in ["public", "private"]: body["visibility"] = args["vis"] if "roomname" in args: room_name = args["roomname"] body["room_alias_name"] = room_name elif "vis" in args and args["vis"] not in ["public", "private"]: room_name = args["vis"] body["room_alias_name"] = room_name reactor.callFromThread(self._run_and_pprint, "POST", "/createRoom", body) def do_raw(self, line): """Directly send a JSON object: "raw " : Required. One of "PUT", "GET", "POST", "xPUT", "xGET", "xPOST". Methods with 'x' prefixed will not automatically append the access token. : Required. E.g. "/events" : Optional. E.g. "{ "msgtype":"custom.text", "body":"abc123"}" """ args = self._parse(line, ["method", "path", "data"]) # sanity check if "method" not in args or "path" not in args: print("Must specify path and method.") return args["method"] = args["method"].upper() valid_methods = [ "PUT", "GET", "POST", "DELETE", "XPUT", "XGET", "XPOST", "XDELETE", ] if args["method"] not in valid_methods: print("Unsupported method: %s" % args["method"]) return if "data" not in args: args["data"] = None else: try: args["data"] = json.loads(args["data"]) except Exception as e: print("Data is not valid JSON. %s" % e) return qp = {"access_token": self._tok()} if args["method"].startswith("X"): qp = {} # remove access token args["method"] = args["method"][1:] # snip the X else: # append any query params the user has set try: parsed_url = urlparse.urlparse(args["path"]) qp.update(urlparse.parse_qs(parsed_url.query)) args["path"] = parsed_url.path except Exception: pass reactor.callFromThread( self._run_and_pprint, args["method"], args["path"], args["data"], query_params=qp, ) def do_stream(self, line): """Stream data from the server: "stream " """ args = self._parse(line, ["timeout"]) timeout = 5000 if "timeout" in args: try: timeout = int(args["timeout"]) except ValueError: print("Timeout must be in milliseconds.") return reactor.callFromThread(self._do_event_stream, timeout) @defer.inlineCallbacks def _do_event_stream(self, timeout): res = yield defer.ensureDeferred( self.http_client.get_json( self._url() + "/events", { "access_token": self._tok(), "timeout": str(timeout), "from": self.event_stream_token, }, ) ) print(json.dumps(res, indent=4)) if "chunk" in res: for event in res["chunk"]: if ( event["type"] == "m.room.message" and self._is_on("send_delivery_receipts") and event["user_id"] != self._usr() ): # not sent by us self._send_receipt(event, "d") # update the position in the stram if "end" in res: self.event_stream_token = res["end"] def _send_receipt(self, event, feedback_type): path = "/rooms/%s/messages/%s/%s/feedback/%s/%s" % ( urllib.quote(event["room_id"]), event["user_id"], event["msg_id"], self._usr(), feedback_type, ) data = {} reactor.callFromThread( self._run_and_pprint, "PUT", path, data=data, alt_text="Sent receipt for %s" % event["msg_id"], ) def _do_membership_change(self, roomid, membership, userid): path = "/rooms/%s/state/m.room.member/%s" % ( urllib.quote(roomid), urllib.quote(userid), ) data = {"membership": membership} reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data) def do_displayname(self, line): """Get or set my displayname: "displayname [new_name]" """ args = self._parse(line, ["name"]) path = "/profile/%s/displayname" % (self.config["user"]) if "name" in args: data = {"displayname": args["name"]} reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data) else: reactor.callFromThread(self._run_and_pprint, "GET", path) def _do_presence_state(self, state, line): args = self._parse(line, ["msgstring"]) path = "/presence/%s/status" % (self.config["user"]) data = {"state": state} if "msgstring" in args: data["status_msg"] = args["msgstring"] reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data) def do_offline(self, line): """Set my presence state to OFFLINE""" self._do_presence_state(0, line) def do_away(self, line): """Set my presence state to AWAY""" self._do_presence_state(1, line) def do_online(self, line): """Set my presence state to ONLINE""" self._do_presence_state(2, line) def _parse(self, line, keys, force_keys=False): """Parses the given line. Args: line : The line to parse keys : A list of keys to map onto the args force_keys : True to enforce that the line has a value for every key Returns: A dict of key:arg """ line_args = shlex.split(line) if force_keys and len(line_args) != len(keys): raise IndexError("Must specify all args: %s" % keys) # do $ substitutions for i, arg in enumerate(line_args): for config_key in self.config: if ("$" + config_key) in arg: arg = arg.replace("$" + config_key, self.config[config_key]) line_args[i] = arg return dict(zip(keys, line_args)) @defer.inlineCallbacks def _run_and_pprint( self, method, path, data=None, query_params: Optional[dict] = None, alt_text=None, ): """Runs an HTTP request and pretty prints the output. Args: method: HTTP method path: Relative path data: Raw JSON data if any query_params: dict of query parameters to add to the url """ query_params = query_params or {"access_token": None} url = self._url() + path if "access_token" in query_params: query_params["access_token"] = self._tok() json_res = yield self.http_client.do_request( method, url, data=data, qparams=query_params ) if alt_text: print(alt_text) else: print(json.dumps(json_res, indent=4)) def save_config(config): with open(CONFIG_JSON, "w") as out: json.dump(config, out) def main(server_url, identity_server_url, username, token, config_path): print("Synapse command line client") print("===========================") print("Server: %s" % server_url) print("Type 'help' to get started.") print("Close this console with CTRL+C then CTRL+D.") if not username or not token: print("- 'register ' - Register an account") print("- 'stream' - Connect to the event stream") print("- 'create ' - Create a room") print("- 'send ' - Send a message") http_client = TwistedHttpClient() # the command line client syn_cmd = SynapseCmd(http_client, server_url, identity_server_url, username, token) # load synapse.json config from a previous session global CONFIG_JSON CONFIG_JSON = config_path # bit cheeky, but just overwrite the global try: with open(config_path, "r") as config: syn_cmd.config = json.load(config) try: http_client.verbose = "on" == syn_cmd.config["verbose"] except Exception: pass print("Loaded config from %s" % config_path) except Exception: pass # Twisted-specific: Runs the command processor in Twisted's event loop # to maintain a single thread for both commands and event processing. # If using another HTTP client, just call syn_cmd.cmdloop() reactor.callInThread(syn_cmd.cmdloop) reactor.run() if __name__ == "__main__": parser = argparse.ArgumentParser("Starts a synapse client.") parser.add_argument( "-s", "--server", dest="server", default="http://localhost:8008", help="The URL of the home server to talk to.", ) parser.add_argument( "-i", "--identity-server", dest="identityserver", default="http://localhost:8090", help="The URL of the identity server to talk to.", ) parser.add_argument( "-u", "--username", dest="username", help="Your username on the server." ) parser.add_argument("-t", "--token", dest="token", help="Your access token.") parser.add_argument( "-c", "--config", dest="config", default=CONFIG_JSON, help="The location of the config.json file to read from.", ) args = parser.parse_args() if not args.server: print("You must supply a server URL to communicate with.") parser.print_help() sys.exit(1) server = args.server if not server.startswith("http://"): server = "http://" + args.server main(server, args.identityserver, args.username, args.token, args.config) synapse-1.53.0/contrib/cmdclient/http.py000066400000000000000000000147701420514467300202340ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json import urllib from pprint import pformat from typing import Optional from twisted.internet import defer, reactor from twisted.web.client import Agent, readBody from twisted.web.http_headers import Headers class HttpClient: """Interface for talking json over http""" def put_json(self, url, data): """Sends the specifed json data using PUT Args: url (str): The URL to PUT data to. data (dict): A dict containing the data that will be used as the request body. This will be encoded as JSON. Returns: Deferred: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. """ pass def get_json(self, url, args=None): """Gets some json from the given host homeserver and path Args: url (str): The URL to GET data from. args (dict): A dictionary used to create query strings, defaults to None. **Note**: The value of each key is assumed to be an iterable and *not* a string. Returns: Deferred: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. """ pass class TwistedHttpClient(HttpClient): """Wrapper around the twisted HTTP client api. Attributes: agent (twisted.web.client.Agent): The twisted Agent used to send the requests. """ def __init__(self): self.agent = Agent(reactor) @defer.inlineCallbacks def put_json(self, url, data): response = yield self._create_put_request( url, data, headers_dict={"Content-Type": ["application/json"]} ) body = yield readBody(response) defer.returnValue((response.code, body)) @defer.inlineCallbacks def get_json(self, url, args=None): if args: # generates a list of strings of form "k=v". qs = urllib.urlencode(args, True) url = "%s?%s" % (url, qs) response = yield self._create_get_request(url) body = yield readBody(response) defer.returnValue(json.loads(body)) def _create_put_request(self, url, json_data, headers_dict: Optional[dict] = None): """Wrapper of _create_request to issue a PUT request""" headers_dict = headers_dict or {} if "Content-Type" not in headers_dict: raise defer.error(RuntimeError("Must include Content-Type header for PUTs")) return self._create_request( "PUT", url, producer=_JsonProducer(json_data), headers_dict=headers_dict ) def _create_get_request(self, url, headers_dict: Optional[dict] = None): """Wrapper of _create_request to issue a GET request""" return self._create_request("GET", url, headers_dict=headers_dict or {}) @defer.inlineCallbacks def do_request( self, method, url, data=None, qparams=None, jsonreq=True, headers: Optional[dict] = None, ): headers = headers or {} if qparams: url = "%s?%s" % (url, urllib.urlencode(qparams, True)) if jsonreq: prod = _JsonProducer(data) headers["Content-Type"] = ["application/json"] else: prod = _RawProducer(data) if method in ["POST", "PUT"]: response = yield self._create_request( method, url, producer=prod, headers_dict=headers ) else: response = yield self._create_request(method, url) body = yield readBody(response) defer.returnValue(json.loads(body)) @defer.inlineCallbacks def _create_request( self, method, url, producer=None, headers_dict: Optional[dict] = None ): """Creates and sends a request to the given url""" headers_dict = headers_dict or {} headers_dict["User-Agent"] = ["Synapse Cmd Client"] retries_left = 5 print("%s to %s with headers %s" % (method, url, headers_dict)) if self.verbose and producer: if "password" in producer.data: temp = producer.data["password"] producer.data["password"] = "[REDACTED]" print(json.dumps(producer.data, indent=4)) producer.data["password"] = temp else: print(json.dumps(producer.data, indent=4)) while True: try: response = yield self.agent.request( method, url.encode("UTF8"), Headers(headers_dict), producer ) break except Exception as e: print("uh oh: %s" % e) if retries_left: yield self.sleep(2 ** (5 - retries_left)) retries_left -= 1 else: raise e if self.verbose: print("Status %s %s" % (response.code, response.phrase)) print(pformat(list(response.headers.getAllRawHeaders()))) defer.returnValue(response) def sleep(self, seconds): d = defer.Deferred() reactor.callLater(seconds, d.callback, seconds) return d class _RawProducer: def __init__(self, data): self.data = data self.body = data self.length = len(self.body) def startProducing(self, consumer): consumer.write(self.body) return defer.succeed(None) def pauseProducing(self): pass def stopProducing(self): pass class _JsonProducer: """Used by the twisted http client to create the HTTP body from json""" def __init__(self, jsn): self.data = jsn self.body = json.dumps(jsn).encode("utf8") self.length = len(self.body) def startProducing(self, consumer): consumer.write(self.body) return defer.succeed(None) def pauseProducing(self): pass def stopProducing(self): pass synapse-1.53.0/contrib/docker/000077500000000000000000000000001420514467300161775ustar00rootroot00000000000000synapse-1.53.0/contrib/docker/README.md000066400000000000000000000021271420514467300174600ustar00rootroot00000000000000 # Synapse Docker ### Configuration A sample ``docker-compose.yml`` is provided, including example labels for reverse proxying and other artifacts. The docker-compose file is an example, please comment/uncomment sections that are not suitable for your usecase. Specify a ``SYNAPSE_CONFIG_PATH``, preferably to a persistent path, to use manual configuration. To generate a fresh `homeserver.yaml`, you can use the `generate` command. (See the [documentation](../../docker/README.md#generating-a-configuration-file) for more information.) You will need to specify appropriate values for at least the `SYNAPSE_SERVER_NAME` and `SYNAPSE_REPORT_STATS` environment variables. For example: ``` docker-compose run --rm -e SYNAPSE_SERVER_NAME=my.matrix.host -e SYNAPSE_REPORT_STATS=yes synapse generate ``` (This will also generate necessary signing keys.) Then, customize your configuration and run the server: ``` docker-compose up -d ``` ### More information For more information on required environment variables and mounts, see the main docker documentation at [/docker/README.md](../../docker/README.md) synapse-1.53.0/contrib/docker/docker-compose.yml000066400000000000000000000052611420514467300216400ustar00rootroot00000000000000# This compose file is compatible with Compose itself, it might need some # adjustments to run properly with stack. version: '3' services: synapse: build: context: ../.. dockerfile: docker/Dockerfile image: docker.io/matrixdotorg/synapse:latest # Since synapse does not retry to connect to the database, restart upon # failure restart: unless-stopped # See the readme for a full documentation of the environment settings # NOTE: You must edit homeserver.yaml to use postgres, it defaults to sqlite environment: - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml volumes: # You may either store all the files in a local folder - ./files:/data # .. or you may split this between different storage points # - ./files:/data # - /path/to/ssd:/data/uploads # - /path/to/large_hdd:/data/media depends_on: - db # In order to expose Synapse, remove one of the following, you might for # instance expose the TLS port directly: ports: - 8448:8448/tcp # ... or use a reverse proxy, here is an example for traefik: labels: # The following lines are valid for Traefik version 1.x: - traefik.enable=true - traefik.frontend.rule=Host:my.matrix.Host - traefik.port=8008 # Alternatively, for Traefik version 2.0: - traefik.enable=true - traefik.http.routers.http-synapse.entryPoints=http - traefik.http.routers.http-synapse.rule=Host(`my.matrix.host`) - traefik.http.middlewares.https_redirect.redirectscheme.scheme=https - traefik.http.middlewares.https_redirect.redirectscheme.permanent=true - traefik.http.routers.http-synapse.middlewares=https_redirect - traefik.http.routers.https-synapse.entryPoints=https - traefik.http.routers.https-synapse.rule=Host(`my.matrix.host`) - traefik.http.routers.https-synapse.service=synapse - traefik.http.routers.https-synapse.tls=true - traefik.http.services.synapse.loadbalancer.server.port=8008 - traefik.http.routers.https-synapse.tls.certResolver=le-ssl db: image: docker.io/postgres:12-alpine # Change that password, of course! environment: - POSTGRES_USER=synapse - POSTGRES_PASSWORD=changeme # ensure the database gets created correctly # https://matrix-org.github.io/synapse/latest/postgres.html#set-up-database - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C volumes: # You may store the database tables in a local folder.. - ./schemas:/var/lib/postgresql/data # .. or store them on some high performance storage for better results # - /path/to/ssd/storage:/var/lib/postgresql/data synapse-1.53.0/contrib/example_log_config.yaml000066400000000000000000000024161420514467300214400ustar00rootroot00000000000000# Example log_config file for synapse. To enable, point `log_config` to it in # `homeserver.yaml`, and restart synapse. # # This configuration will produce similar results to the defaults within # synapse, but can be edited to give more flexibility. version: 1 formatters: fmt: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s- %(message)s' filters: context: (): synapse.logging.context.LoggingContextFilter request: "" handlers: # example output to console console: class: logging.StreamHandler formatter: fmt filters: [context] # example output to file - to enable, edit 'root' config below. file: class: logging.handlers.RotatingFileHandler formatter: fmt filename: /var/log/synapse/homeserver.log maxBytes: 100000000 backupCount: 3 filters: [context] encoding: utf8 root: level: INFO handlers: [console] # to use file handler instead, switch to [file] loggers: synapse: level: INFO synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO # example of enabling debugging for a component: # # synapse.federation.transport.server: # level: DEBUG synapse-1.53.0/contrib/experiments/000077500000000000000000000000001420514467300172735ustar00rootroot00000000000000synapse-1.53.0/contrib/experiments/cursesio.py000066400000000000000000000102051420514467300214770ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import curses import curses.wrapper from curses.ascii import isprint from twisted.internet import reactor class CursesStdIO: def __init__(self, stdscr, callback=None): self.statusText = "Synapse test app -" self.searchText = "" self.stdscr = stdscr self.logLine = "" self.callback = callback self._setup() def _setup(self): self.stdscr.nodelay(1) # Make non blocking self.rows, self.cols = self.stdscr.getmaxyx() self.lines = [] curses.use_default_colors() self.paintStatus(self.statusText) self.stdscr.refresh() def set_callback(self, callback): self.callback = callback def fileno(self): """We want to select on FD 0""" return 0 def connectionLost(self, reason): self.close() def print_line(self, text): """add a line to the internal list of lines""" self.lines.append(text) self.redraw() def print_log(self, text): self.logLine = text self.redraw() def redraw(self): """method for redisplaying lines based on internal list of lines""" self.stdscr.clear() self.paintStatus(self.statusText) i = 0 index = len(self.lines) - 1 while i < (self.rows - 3) and index >= 0: self.stdscr.addstr(self.rows - 3 - i, 0, self.lines[index], curses.A_NORMAL) i = i + 1 index = index - 1 self.printLogLine(self.logLine) self.stdscr.refresh() def paintStatus(self, text): if len(text) > self.cols: raise RuntimeError("TextTooLongError") self.stdscr.addstr( self.rows - 2, 0, text + " " * (self.cols - len(text)), curses.A_STANDOUT ) def printLogLine(self, text): self.stdscr.addstr( 0, 0, text + " " * (self.cols - len(text)), curses.A_STANDOUT ) def doRead(self): """Input is ready!""" curses.noecho() c = self.stdscr.getch() # read a character if c == curses.KEY_BACKSPACE: self.searchText = self.searchText[:-1] elif c == curses.KEY_ENTER or c == 10: text = self.searchText self.searchText = "" self.print_line(">> %s" % text) try: if self.callback: self.callback.on_line(text) except Exception as e: self.print_line(str(e)) self.stdscr.refresh() elif isprint(c): if len(self.searchText) == self.cols - 2: return self.searchText = self.searchText + chr(c) self.stdscr.addstr( self.rows - 1, 0, self.searchText + (" " * (self.cols - len(self.searchText) - 2)), ) self.paintStatus(self.statusText + " %d" % len(self.searchText)) self.stdscr.move(self.rows - 1, len(self.searchText)) self.stdscr.refresh() def logPrefix(self): return "CursesStdIO" def close(self): """clean up""" curses.nocbreak() self.stdscr.keypad(0) curses.echo() curses.endwin() class Callback: def __init__(self, stdio): self.stdio = stdio def on_line(self, text): self.stdio.print_line(text) def main(stdscr): screen = CursesStdIO(stdscr) # create Screen object callback = Callback(screen) screen.set_callback(callback) stdscr.refresh() reactor.addReader(screen) reactor.run() screen.close() if __name__ == "__main__": curses.wrapper(main) synapse-1.53.0/contrib/experiments/test_messaging.py000066400000000000000000000256161420514467300226730ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This is an example of using the server to server implementation to do a basic chat style thing. It accepts commands from stdin and outputs to stdout. It assumes that ucids are of the form @, and uses as the address of the remote home server to hit. Usage: python test_messaging.py Currently assumes the local address is localhost: """ import argparse import curses.wrapper import json import logging import os import re import cursesio from twisted.internet import defer, reactor from twisted.python import log from synapse.app.homeserver import SynapseHomeServer from synapse.federation import ReplicationHandler from synapse.federation.units import Pdu from synapse.util import origin_from_ucid # from synapse.logging.utils import log_function logger = logging.getLogger("example") def excpetion_errback(failure): logging.exception(failure) class InputOutput: """This is responsible for basic I/O so that a user can interact with the example app. """ def __init__(self, screen, user): self.screen = screen self.user = user def set_home_server(self, server): self.server = server def on_line(self, line): """This is where we process commands.""" try: m = re.match(r"^join (\S+)$", line) if m: # The `sender` wants to join a room. (room_name,) = m.groups() self.print_line("%s joining %s" % (self.user, room_name)) self.server.join_room(room_name, self.user, self.user) # self.print_line("OK.") return m = re.match(r"^invite (\S+) (\S+)$", line) if m: # `sender` wants to invite someone to a room room_name, invitee = m.groups() self.print_line("%s invited to %s" % (invitee, room_name)) self.server.invite_to_room(room_name, self.user, invitee) # self.print_line("OK.") return m = re.match(r"^send (\S+) (.*)$", line) if m: # `sender` wants to message a room room_name, body = m.groups() self.print_line("%s send to %s" % (self.user, room_name)) self.server.send_message(room_name, self.user, body) # self.print_line("OK.") return m = re.match(r"^backfill (\S+)$", line) if m: # we want to backfill a room (room_name,) = m.groups() self.print_line("backfill %s" % room_name) self.server.backfill(room_name) return self.print_line("Unrecognized command") except Exception as e: logger.exception(e) def print_line(self, text): self.screen.print_line(text) def print_log(self, text): self.screen.print_log(text) class IOLoggerHandler(logging.Handler): def __init__(self, io): logging.Handler.__init__(self) self.io = io def emit(self, record): if record.levelno < logging.WARN: return msg = self.format(record) self.io.print_log(msg) class Room: """Used to store (in memory) the current membership state of a room, and which home servers we should send PDUs associated with the room to. """ def __init__(self, room_name): self.room_name = room_name self.invited = set() self.participants = set() self.servers = set() self.oldest_server = None self.have_got_metadata = False def add_participant(self, participant): """Someone has joined the room""" self.participants.add(participant) self.invited.discard(participant) server = origin_from_ucid(participant) self.servers.add(server) if not self.oldest_server: self.oldest_server = server def add_invited(self, invitee): """Someone has been invited to the room""" self.invited.add(invitee) self.servers.add(origin_from_ucid(invitee)) class HomeServer(ReplicationHandler): """A very basic home server implentation that allows people to join a room and then invite other people. """ def __init__(self, server_name, replication_layer, output): self.server_name = server_name self.replication_layer = replication_layer self.replication_layer.set_handler(self) self.joined_rooms = {} self.output = output def on_receive_pdu(self, pdu): """We just received a PDU""" pdu_type = pdu.pdu_type if pdu_type == "sy.room.message": self._on_message(pdu) elif pdu_type == "sy.room.member" and "membership" in pdu.content: if pdu.content["membership"] == "join": self._on_join(pdu.context, pdu.state_key) elif pdu.content["membership"] == "invite": self._on_invite(pdu.origin, pdu.context, pdu.state_key) else: self.output.print_line( "#%s (unrec) %s = %s" % (pdu.context, pdu.pdu_type, json.dumps(pdu.content)) ) def _on_message(self, pdu): """We received a message""" self.output.print_line( "#%s %s %s" % (pdu.context, pdu.content["sender"], pdu.content["body"]) ) def _on_join(self, context, joinee): """Someone has joined a room, either a remote user or a local user""" room = self._get_or_create_room(context) room.add_participant(joinee) self.output.print_line("#%s %s %s" % (context, joinee, "*** JOINED")) def _on_invite(self, origin, context, invitee): """Someone has been invited""" room = self._get_or_create_room(context) room.add_invited(invitee) self.output.print_line("#%s %s %s" % (context, invitee, "*** INVITED")) if not room.have_got_metadata and origin is not self.server_name: logger.debug("Get room state") self.replication_layer.get_state_for_context(origin, context) room.have_got_metadata = True @defer.inlineCallbacks def send_message(self, room_name, sender, body): """Send a message to a room!""" destinations = yield self.get_servers_for_context(room_name) try: yield self.replication_layer.send_pdu( Pdu.create_new( context=room_name, pdu_type="sy.room.message", content={"sender": sender, "body": body}, origin=self.server_name, destinations=destinations, ) ) except Exception as e: logger.exception(e) @defer.inlineCallbacks def join_room(self, room_name, sender, joinee): """Join a room!""" self._on_join(room_name, joinee) destinations = yield self.get_servers_for_context(room_name) try: pdu = Pdu.create_new( context=room_name, pdu_type="sy.room.member", is_state=True, state_key=joinee, content={"membership": "join"}, origin=self.server_name, destinations=destinations, ) yield self.replication_layer.send_pdu(pdu) except Exception as e: logger.exception(e) @defer.inlineCallbacks def invite_to_room(self, room_name, sender, invitee): """Invite someone to a room!""" self._on_invite(self.server_name, room_name, invitee) destinations = yield self.get_servers_for_context(room_name) try: yield self.replication_layer.send_pdu( Pdu.create_new( context=room_name, is_state=True, pdu_type="sy.room.member", state_key=invitee, content={"membership": "invite"}, origin=self.server_name, destinations=destinations, ) ) except Exception as e: logger.exception(e) def backfill(self, room_name, limit=5): room = self.joined_rooms.get(room_name) if not room: return dest = room.oldest_server return self.replication_layer.backfill(dest, room_name, limit) def _get_room_remote_servers(self, room_name): return list(self.joined_rooms.setdefault(room_name).servers) def _get_or_create_room(self, room_name): return self.joined_rooms.setdefault(room_name, Room(room_name)) def get_servers_for_context(self, context): return defer.succeed( self.joined_rooms.setdefault(context, Room(context)).servers ) def main(stdscr): parser = argparse.ArgumentParser() parser.add_argument("user", type=str) parser.add_argument("-v", "--verbose", action="count") args = parser.parse_args() user = args.user server_name = origin_from_ucid(user) # Set up logging root_logger = logging.getLogger() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s" ) if not os.path.exists("logs"): os.makedirs("logs") fh = logging.FileHandler("logs/%s" % user) fh.setFormatter(formatter) root_logger.addHandler(fh) root_logger.setLevel(logging.DEBUG) # Hack: The only way to get it to stop logging to sys.stderr :( log.theLogPublisher.observers = [] observer = log.PythonLoggingObserver() observer.start() # Set up synapse server curses_stdio = cursesio.CursesStdIO(stdscr) input_output = InputOutput(curses_stdio, user) curses_stdio.set_callback(input_output) app_hs = SynapseHomeServer(server_name, db_name="dbs/%s" % user) replication = app_hs.get_replication_layer() hs = HomeServer(server_name, replication, curses_stdio) input_output.set_home_server(hs) # Add input_output logger io_logger = IOLoggerHandler(input_output) io_logger.setFormatter(formatter) root_logger.addHandler(io_logger) # Start! try: port = int(server_name.split(":")[1]) except Exception: port = 12345 app_hs.get_http_server().start_listening(port) reactor.addReader(curses_stdio) reactor.run() if __name__ == "__main__": curses.wrapper(main) synapse-1.53.0/contrib/grafana/000077500000000000000000000000001420514467300163275ustar00rootroot00000000000000synapse-1.53.0/contrib/grafana/README.md000066400000000000000000000010751420514467300176110ustar00rootroot00000000000000# Using the Synapse Grafana dashboard 0. Set up Prometheus and Grafana. Out of scope for this readme. Useful documentation about using Grafana with Prometheus: http://docs.grafana.org/features/datasources/prometheus/ 1. Have your Prometheus scrape your Synapse. https://matrix-org.github.io/synapse/latest/metrics-howto.html 2. Import dashboard into Grafana. Download `synapse.json`. Import it to Grafana and select the correct Prometheus datasource. http://docs.grafana.org/reference/export_import/ 3. Set up required recording rules. [contrib/prometheus](../prometheus) synapse-1.53.0/contrib/grafana/synapse.json000066400000000000000000011070521420514467300207120ustar00rootroot00000000000000{ "__inputs": [ { "name": "DS_PROMETHEUS", "label": "Prometheus", "description": "", "type": "datasource", "pluginId": "prometheus", "pluginName": "Prometheus" } ], "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "7.3.7" }, { "type": "panel", "id": "graph", "name": "Graph", "version": "" }, { "type": "panel", "id": "heatmap", "name": "Heatmap", "version": "" }, { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": "$datasource", "enable": false, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "limit": 100, "name": "Annotations & Alerts", "showIn": 0, "type": "dashboard" } ] }, "editable": true, "gnetId": null, "graphTooltip": 0, "id": null, "iteration": 1628606819564, "links": [ { "asDropdown": false, "icon": "external link", "includeVars": true, "keepTime": true, "tags": [ "matrix" ], "title": "Dashboards", "type": "dashboards" } ], "panels": [ { "collapsed": false, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 73, "panels": [], "title": "Overview", "type": "row" }, { "cards": { "cardPadding": -1, "cardRound": 0 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 1 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 189, "legend": { "show": false }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le)", "format": "heatmap", "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Event Send Time (excluding errors, all workers)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": null, "format": "s", "logBase": 2, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 1 }, "hiddenSeries": false, "id": 152, "legend": { "avg": false, "current": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 0, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Avg", "fill": 0, "linewidth": 3 }, { "alias": "99%", "color": "#C4162A", "fillBelowTo": "90%" }, { "alias": "90%", "color": "#FF7383", "fillBelowTo": "75%" }, { "alias": "75%", "color": "#FFEE52", "fillBelowTo": "50%" }, { "alias": "50%", "color": "#73BF69", "fillBelowTo": "25%" }, { "alias": "25%", "color": "#1F60C4", "fillBelowTo": "5%" }, { "alias": "5%", "lines": false }, { "alias": "Average", "color": "rgb(255, 255, 255)", "lines": true, "linewidth": 3 }, { "alias": "Events", "color": "#B877D9", "hideTooltip": true, "points": true, "yaxis": 2, "zindex": -3 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.99, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" }, { "expr": "histogram_quantile(0.9, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "expr": "histogram_quantile(0.75, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "expr": "histogram_quantile(0.5, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" }, { "expr": "histogram_quantile(0.25, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "legendFormat": "25%", "refId": "F" }, { "expr": "histogram_quantile(0.05, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "legendFormat": "5%", "refId": "G" }, { "expr": "sum(rate(synapse_http_server_response_time_seconds_sum{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) / sum(rate(synapse_http_server_response_time_seconds_count{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size]))", "legendFormat": "Average", "refId": "H" }, { "expr": "sum(rate(synapse_storage_events_persisted_events{instance=\"$instance\"}[$bucket_size]))", "hide": false, "instant": false, "legendFormat": "Events", "refId": "E" } ], "thresholds": [ { "colorMode": "warning", "fill": false, "line": true, "op": "gt", "value": 1, "yaxis": "left" }, { "colorMode": "critical", "fill": false, "line": true, "op": "gt", "value": 2, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Event Send Time Quantiles (excluding errors, all workers)", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "s", "label": "", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "hertz", "label": "", "logBase": 1, "max": null, "min": "0", "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 10 }, "hiddenSeries": false, "id": 75, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 3, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(process_cpu_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} ", "refId": "A" } ], "thresholds": [ { "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "CPU usage", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percentunit", "label": null, "logBase": 1, "max": "1.5", "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 10 }, "hiddenSeries": false, "id": 198, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 3, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}} {{index}}", "refId": "A", "step": 20, "target": "" }, { "expr": "sum(process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"})", "hide": true, "interval": "", "legendFormat": "total", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Memory", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "transformations": [], "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bytes", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 19 }, "hiddenSeries": false, "id": 37, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "/max$/", "color": "#890F02", "fill": 0, "legend": false } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "process_open_fds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A", "step": 20 }, { "expr": "process_max_fds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": true, "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} max", "refId": "B", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Open FDs", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "none", "label": "", "logBase": 1, "max": null, "min": null, "show": true }, { "decimals": null, "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 26 }, "id": 54, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 25 }, "hiddenSeries": false, "id": 5, "legend": { "alignAsTable": false, "avg": false, "current": false, "hideEmpty": false, "hideZero": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 3, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "/user/" }, { "alias": "/system/" } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(process_cpu_system_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} system ", "metric": "", "refId": "B", "step": 20 }, { "expr": "rate(process_cpu_user_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} user", "refId": "A", "step": 20 } ], "thresholds": [ { "colorMode": "custom", "fillColor": "rgba(255, 255, 255, 1)", "line": true, "lineColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 0.5, "yaxis": "left" }, { "colorMode": "custom", "fillColor": "rgba(255, 255, 255, 1)", "line": true, "lineColor": "rgb(87, 6, 16)", "op": "gt", "value": 0.8, "yaxis": "left" }, { "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "CPU", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percentunit", "label": "", "logBase": 1, "max": "1.2", "min": 0, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "Shows the time in which the given percentage of reactor ticks completed, over the sampled timespan", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 25 }, "hiddenSeries": false, "id": 105, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.99, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} 99%", "refId": "A", "step": 20 }, { "expr": "histogram_quantile(0.95, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 95%", "refId": "B" }, { "expr": "histogram_quantile(0.90, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 90%", "refId": "C" }, { "expr": "rate(python_twisted_reactor_tick_time_sum{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]) / rate(python_twisted_reactor_tick_time_count{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} mean", "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Reactor tick quantiles", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 32 }, "hiddenSeries": false, "id": 34, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}} {{index}}", "refId": "A", "step": 20, "target": "" }, { "expr": "sum(process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"})", "interval": "", "legendFormat": "total", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Memory", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "transformations": [], "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bytes", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 32 }, "hiddenSeries": false, "id": 49, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "/^up/", "legend": false, "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "scrape_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Prometheus scrape time", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "decimals": 0, "format": "none", "label": "", "logBase": 1, "max": "0", "min": "-1", "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 39 }, "hiddenSeries": false, "id": 53, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "min_over_time(up{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Up", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 39 }, "hiddenSeries": false, "id": 120, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null as zero", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": true, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_server_response_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_http_server_response_ru_stime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "instant": false, "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A" }, { "expr": "rate(synapse_background_process_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_background_process_ru_stime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "B" } ], "thresholds": [ { "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Stacked CPU usage", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 46 }, "hiddenSeries": false, "id": 136, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_client_requests{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "legendFormat": "{{job}}-{{index}} {{method}}", "refId": "A" }, { "expr": "rate(synapse_http_matrixfederationclient_requests{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "legendFormat": "{{job}}-{{index}} {{method}} (federation)", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Outgoing HTTP request rate", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "reqps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Process info", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 27 }, "id": 56, "panels": [ { "cards": { "cardPadding": -1, "cardRound": 0 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 21 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 85, "legend": { "show": false }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\"}[$bucket_size])) by (le)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Event Send Time (Including errors, across all workers)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": null, "format": "s", "logBase": 2, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 21 }, "hiddenSeries": false, "id": 33, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_storage_events_persisted_events{instance=\"$instance\"}[$bucket_size])) without (job,index)", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "", "refId": "A", "step": 20, "target": "" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Events Persisted (all workers)", "tooltip": { "shared": true, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": 1, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 30 }, "hiddenSeries": false, "id": 40, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_storage_events_persisted_by_source_type{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{type}}", "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Events/s Local vs Remote", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": "", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": 1, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 30 }, "hiddenSeries": false, "id": 46, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_storage_events_persisted_by_event_type{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "instant": false, "intervalFactor": 2, "legendFormat": "{{type}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Events/s by Type", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": { "irc-freenode (local)": "#EAB839" }, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": 1, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 37 }, "hiddenSeries": false, "id": 44, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_storage_events_persisted_by_origin{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{origin_entity}} ({{origin_type}})", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Events/s by Origin", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": 1, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 37 }, "hiddenSeries": false, "id": 45, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_storage_events_persisted_events_sep{job=~\"$job\",index=~\"$index\", type=\"m.room.member\",instance=\"$instance\", origin_type=\"local\"}[$bucket_size])) by (origin_type, origin_entity)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{origin_entity}} ({{origin_type}})", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Memberships/s by Origin", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 44 }, "hiddenSeries": false, "id": 118, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "repeatDirection": "h", "seriesOverrides": [ { "alias": "mean", "linewidth": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.99, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 99%", "refId": "A" }, { "expr": "histogram_quantile(0.95, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 95%", "refId": "B" }, { "expr": "histogram_quantile(0.90, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 90%", "refId": "C" }, { "expr": "histogram_quantile(0.50, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 50%", "refId": "D" }, { "expr": "sum(rate(synapse_http_server_response_time_seconds_sum{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method) / sum(rate(synapse_http_server_response_time_seconds_count{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method)", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} mean", "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Event send time quantiles by worker", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Event persistence", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 28 }, "id": 57, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": null, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 2, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 31 }, "hiddenSeries": false, "id": 4, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_server_requests_received{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [ { "colorMode": "custom", "fill": true, "fillColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 100, "yaxis": "left" }, { "colorMode": "custom", "fill": true, "fillColor": "rgba(234, 112, 112, 0.22)", "op": "gt", "value": 250, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Request Count by arrival time", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 31 }, "hiddenSeries": false, "id": 32, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_server_requests_received{instance=\"$instance\",job=~\"$job\",index=~\"$index\",method!=\"OPTIONS\"}[$bucket_size]) and topk(10,synapse_http_server_requests_received{instance=\"$instance\",job=~\"$job\",method!=\"OPTIONS\"})", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{method}} {{servlet}} {{job}}-{{index}}", "refId": "A", "step": 20, "target": "" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Top 10 Request Counts", "tooltip": { "shared": false, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": null, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 2, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 39 }, "hiddenSeries": false, "id": 139, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_server_in_flight_requests_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_http_server_in_flight_requests_ru_stime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [ { "colorMode": "custom", "fill": true, "fillColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 100, "yaxis": "left" }, { "colorMode": "custom", "fill": true, "fillColor": "rgba(234, 112, 112, 0.22)", "op": "gt", "value": 250, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Total CPU Usage by Endpoint", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": null, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 39 }, "hiddenSeries": false, "id": 52, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "(rate(synapse_http_server_in_flight_requests_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_http_server_in_flight_requests_ru_stime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) / rate(synapse_http_server_requests_received{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [ { "colorMode": "custom", "fill": true, "fillColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 100, "yaxis": "left" }, { "colorMode": "custom", "fill": true, "fillColor": "rgba(234, 112, 112, 0.22)", "op": "gt", "value": 250, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average CPU Usage by Endpoint", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 47 }, "hiddenSeries": false, "id": 7, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_server_in_flight_requests_db_txn_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "DB Usage by endpoint", "tooltip": { "shared": false, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": null, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 2, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 47 }, "hiddenSeries": false, "id": 47, "legend": { "alignAsTable": true, "avg": true, "current": false, "hideEmpty": false, "hideZero": true, "max": true, "min": false, "rightSide": false, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "(sum(rate(synapse_http_server_response_time_seconds_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\",tag!=\"incremental_sync\"}[$bucket_size])) without (code))/(sum(rate(synapse_http_server_response_time_seconds_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\",tag!=\"incremental_sync\"}[$bucket_size])) without (code))", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Non-sync avg response time", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 55 }, "hiddenSeries": false, "id": 103, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Total", "color": "rgb(255, 255, 255)", "fill": 0, "linewidth": 3 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "topk(10,synapse_http_server_in_flight_requests_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"})", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}}", "refId": "A" }, { "expr": "sum(avg_over_time(synapse_http_server_in_flight_requests_count{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "interval": "", "legendFormat": "Total", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Requests in flight", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Requests", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 29 }, "id": 97, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 32 }, "hiddenSeries": false, "id": 99, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_background_process_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_background_process_ru_stime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "CPU usage by background jobs", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 32 }, "hiddenSeries": false, "id": 101, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_background_process_db_txn_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) + rate(synapse_background_process_db_sched_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "DB usage by background jobs (including scheduling time)", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 41 }, "hiddenSeries": false, "id": 138, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_background_process_in_flight_count{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Background jobs in flight", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Background jobs", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 30 }, "id": 81, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 6 }, "hiddenSeries": false, "id": 79, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_federation_client_sent_transactions{instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "successful txn rate", "refId": "A" }, { "expr": "sum(rate(synapse_util_metrics_block_count{block_name=\"_send_new_transaction\",instance=\"$instance\"}[$bucket_size]) - ignoring (block_name) rate(synapse_federation_client_sent_transactions{instance=\"$instance\"}[$bucket_size]))", "legendFormat": "failed txn rate", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Outgoing federation transaction rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 6 }, "hiddenSeries": false, "id": 83, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_federation_server_received_pdus{instance=~\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "pdus", "refId": "A" }, { "expr": "sum(rate(synapse_federation_server_received_edus{instance=~\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "edus", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Incoming PDU/EDU rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 15 }, "hiddenSeries": false, "id": 109, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_federation_client_sent_pdu_destinations:total{instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "pdus", "refId": "A" }, { "expr": "sum(rate(synapse_federation_client_sent_edus{instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "edus", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Outgoing PDU/EDU rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 15 }, "hiddenSeries": false, "id": 111, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_federation_client_sent_edus_by_type{instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{type}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Outgoing EDUs by type", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "description": "The number of events in the in-memory queues ", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 24 }, "hiddenSeries": false, "id": 142, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_federation_transaction_queue_pending_pdus{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "pending PDUs {{job}}-{{index}}", "refId": "A" }, { "expr": "synapse_federation_transaction_queue_pending_edus{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "pending EDUs {{job}}-{{index}}", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "In-memory federation transmission queues", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "events", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": "", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "Number of events queued up on the master process for processing by the federation sender", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 24 }, "hiddenSeries": false, "id": 140, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_federation_send_queue_presence_changed_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "presence changed", "refId": "A" }, { "expr": "synapse_federation_send_queue_presence_map_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "presence map", "refId": "B" }, { "expr": "synapse_federation_send_queue_presence_destinations_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "presence destinations", "refId": "E" }, { "expr": "synapse_federation_send_queue_keyed_edu_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "keyed edus", "refId": "C" }, { "expr": "synapse_federation_send_queue_edus_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "other edus", "refId": "D" }, { "expr": "synapse_federation_send_queue_pos_time_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "stream positions", "refId": "F" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Outgoing EDU queues on master", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "none", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": -1, "cardRound": null }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 32 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 166, "legend": { "show": false }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "sum(rate(synapse_event_processing_lag_by_event_bucket{instance=\"$instance\",name=\"federation_sender\"}[$bucket_size])) by (le)", "format": "heatmap", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{ le }}", "refId": "A" } ], "title": "Federation send PDU lag", "tooltip": { "show": true, "showHistogram": true }, "tooltipDecimals": 2, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "s", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 33 }, "hiddenSeries": false, "id": 162, "legend": { "avg": false, "current": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 0, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Avg", "fill": 0, "linewidth": 3 }, { "alias": "99%", "color": "#C4162A", "fillBelowTo": "90%" }, { "alias": "90%", "color": "#FF7383", "fillBelowTo": "75%" }, { "alias": "75%", "color": "#FFEE52", "fillBelowTo": "50%" }, { "alias": "50%", "color": "#73BF69", "fillBelowTo": "25%" }, { "alias": "25%", "color": "#1F60C4", "fillBelowTo": "5%" }, { "alias": "5%", "lines": false }, { "alias": "Average", "color": "rgb(255, 255, 255)", "lines": true, "linewidth": 3 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.99, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" }, { "expr": "histogram_quantile(0.9, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "expr": "histogram_quantile(0.75, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "expr": "histogram_quantile(0.5, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" }, { "expr": "histogram_quantile(0.25, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "interval": "", "legendFormat": "25%", "refId": "F" }, { "expr": "histogram_quantile(0.05, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "interval": "", "legendFormat": "5%", "refId": "G" }, { "expr": "sum(rate(synapse_event_processing_lag_by_event_sum{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) / sum(rate(synapse_event_processing_lag_by_event_count{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "interval": "", "legendFormat": "Average", "refId": "H" } ], "thresholds": [ { "colorMode": "warning", "fill": false, "line": true, "op": "gt", "value": 0.25, "yaxis": "left" }, { "colorMode": "critical", "fill": false, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Federation send PDU lag quantiles", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "s", "label": "", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "hertz", "label": "", "logBase": 1, "max": null, "min": "0", "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": -1, "cardRound": null }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 41 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 164, "legend": { "show": false }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "sum(rate(synapse_federation_server_pdu_process_time_bucket{instance=\"$instance\"}[$bucket_size])) by (le)", "format": "heatmap", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{ le }}", "refId": "A" } ], "title": "Handle inbound PDU time", "tooltip": { "show": true, "showHistogram": true }, "tooltipDecimals": 2, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "s", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 42 }, "hiddenSeries": false, "id": 203, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_federation_server_oldest_inbound_pdu_in_staging{job=\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "rss {{index}}", "refId": "A", "step": 4 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Age of oldest event in staging area", "tooltip": { "msResolution": false, "shared": true, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "ms", "label": null, "logBase": 1, "max": null, "min": 0, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 50 }, "hiddenSeries": false, "id": 202, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_federation_server_number_inbound_pdu_in_staging{job=\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "rss {{index}}", "refId": "A", "step": 4 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Number of events in federation staging area", "tooltip": { "msResolution": false, "shared": true, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "none", "label": null, "logBase": 1, "max": null, "min": 0, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 51 }, "hiddenSeries": false, "id": 205, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_federation_soft_failed_events_total{instance=\"$instance\"}[$bucket_size]))", "interval": "", "legendFormat": "soft-failed events", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Soft-failed event rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Federation", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 31 }, "id": 60, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 34 }, "hiddenSeries": false, "id": 51, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_http_httppusher_http_pushes_processed{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) and on (instance, job, index) (synapse_http_httppusher_http_pushes_failed + synapse_http_httppusher_http_pushes_processed) > 0", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "processed {{job}}", "refId": "A", "step": 20 }, { "expr": "rate(synapse_http_httppusher_http_pushes_failed{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) and on (instance, job, index) (synapse_http_httppusher_http_pushes_failed + synapse_http_httppusher_http_pushes_processed) > 0", "format": "time_series", "intervalFactor": 2, "legendFormat": "failed {{job}}", "refId": "B", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "HTTP Push rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 34 }, "hiddenSeries": false, "id": 134, "legend": { "avg": false, "current": false, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "topk(10,synapse_pushers{job=~\"$job\",index=~\"$index\", instance=\"$instance\"})", "legendFormat": "{{kind}} {{app_id}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Active pusher instances by app", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Pushes", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 32 }, "id": 58, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 33 }, "hiddenSeries": false, "id": 48, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_storage_schedule_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(synapse_storage_schedule_time_count[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Avg time waiting for db conn", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "s", "label": "", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "Shows the time in which the given percentage of database queries were scheduled, over the sampled timespan", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 33 }, "hiddenSeries": false, "id": 104, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.99, rate(synapse_storage_schedule_time_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "hide": false, "intervalFactor": 1, "legendFormat": "{{job}} {{index}} 99%", "refId": "A", "step": 20 }, { "expr": "histogram_quantile(0.95, rate(synapse_storage_schedule_time_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}} {{index}} 95%", "refId": "B" }, { "expr": "histogram_quantile(0.90, rate(synapse_storage_schedule_time_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}} {{index}} 90%", "refId": "C" }, { "expr": "rate(synapse_storage_schedule_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(synapse_storage_schedule_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}} {{index}} mean", "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Db scheduling time quantiles", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "s", "label": "", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 40 }, "hiddenSeries": false, "id": 10, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "topk(10, rate(synapse_storage_transaction_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{desc}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Top DB transactions by txn rate", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "max": null, "min": 0, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 40 }, "hiddenSeries": false, "id": 11, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_storage_transaction_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{desc}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "DB transactions by total txn time", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 47 }, "hiddenSeries": false, "id": 180, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": false }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_storage_transaction_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(synapse_storage_transaction_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{desc}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average DB txn time", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 6, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 47 }, "hiddenSeries": false, "id": 200, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.99, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" }, { "expr": "histogram_quantile(0.9, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "expr": "histogram_quantile(0.75, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "expr": "histogram_quantile(0.5, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Time waiting for DB connection quantiles", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "s", "label": "", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Database", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 33 }, "id": 59, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 9 }, "hiddenSeries": false, "id": 12, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_metrics_block_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\",block_name!=\"wrapped_request_handler\"}[$bucket_size]) + rate(synapse_util_metrics_block_ru_stime_seconds[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Total CPU Usage by Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 9 }, "hiddenSeries": false, "id": 26, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "(rate(synapse_util_metrics_block_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) + rate(synapse_util_metrics_block_ru_stime_seconds[$bucket_size])) / rate(synapse_util_metrics_block_count[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average CPU Time per Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "ms", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 22 }, "hiddenSeries": false, "id": 13, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_metrics_block_db_txn_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Total DB Usage by Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "max": null, "min": 0, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "The time each database transaction takes to execute, on average, broken down by metrics block.", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 22 }, "hiddenSeries": false, "id": 27, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_metrics_block_db_txn_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) / rate(synapse_util_metrics_block_db_txn_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average Database Transaction time, by Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "ms", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 35 }, "hiddenSeries": false, "id": 28, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_metrics_block_db_txn_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) / rate(synapse_util_metrics_block_db_txn_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average Transactions per Block", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "none", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 35 }, "hiddenSeries": false, "id": 25, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "paceLength": 10, "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_metrics_block_time_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) / rate(synapse_util_metrics_block_count[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average Wallclock Time per Block", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "ms", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 15, "w": 12, "x": 0, "y": 48 }, "hiddenSeries": false, "id": 154, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_metrics_block_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Block count", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Per-block metrics", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 34 }, "id": 61, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": 2, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 10, "w": 12, "x": 0, "y": 35 }, "hiddenSeries": false, "id": 1, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_caches_cache:hits{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])/rate(synapse_util_caches_cache:total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Cache Hit Ratio", "tooltip": { "msResolution": true, "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percentunit", "label": "", "logBase": 1, "max": "1", "min": 0, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 10, "w": 12, "x": 12, "y": 35 }, "hiddenSeries": false, "id": 8, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_util_caches_cache:size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Cache Size", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "max": null, "min": 0, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 10, "w": 12, "x": 0, "y": 45 }, "hiddenSeries": false, "id": 38, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_caches_cache:total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Cache request rate", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "rps", "logBase": 1, "max": null, "min": 0, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 10, "w": 12, "x": 12, "y": 45 }, "hiddenSeries": false, "id": 39, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "topk(10, rate(synapse_util_caches_cache:total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]) - rate(synapse_util_caches_cache:hits{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Top 10 cache misses", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "rps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 55 }, "hiddenSeries": false, "id": 65, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_caches_cache:evicted_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{name}} ({{reason}}) {{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Cache eviction rate", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "hertz", "label": "entries / second", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Caches", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 35 }, "id": 148, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 29 }, "hiddenSeries": false, "id": 146, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_util_caches_response_cache:size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Response cache size", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 29 }, "hiddenSeries": false, "id": 150, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_util_caches_response_cache:hits{instance=\"$instance\", job=~\"$job\", index=~\"$index\"}[$bucket_size])/rate(synapse_util_caches_response_cache:total{instance=\"$instance\", job=~\"$job\", index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A" }, { "expr": "", "interval": "", "legendFormat": "", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Response cache hit rate", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percentunit", "label": null, "logBase": 1, "max": "1", "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Response caches", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 36 }, "id": 62, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 30 }, "hiddenSeries": false, "id": 91, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": true, "steppedLine": false, "targets": [ { "expr": "rate(python_gc_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[10m])", "format": "time_series", "instant": false, "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Total GC time by bucket (10m smoothing)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percentunit", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "decimals": 3, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 30 }, "hiddenSeries": false, "id": 21, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null as zero", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(python_gc_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(python_gc_time_count[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}} {{index}} gen {{gen}} ", "refId": "A", "step": 20, "target": "" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Average GC Time Per Collection", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "'gen 0' shows the number of objects allocated since the last gen0 GC.\n'gen 1' / 'gen 2' show the number of gen0/gen1 GCs since the last gen1/gen2 GC.", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 39 }, "hiddenSeries": false, "id": 89, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "/gen 0$/", "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "python_gc_counts{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Allocation counts", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Gen N-1 GCs since last Gen N GC", "logBase": 1, "max": null, "min": null, "show": true }, { "decimals": null, "format": "short", "label": "Objects since last Gen 0 GC", "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 39 }, "hiddenSeries": false, "id": 93, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(python_gc_unreachable_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(python_gc_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Object counts per collection", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 48 }, "hiddenSeries": false, "id": 95, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(python_gc_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "GC frequency", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": 0, "cardRound": null }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateSpectral", "exponent": 0.5, "max": null, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 48 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 87, "legend": { "show": true }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "sum(rate(python_gc_time_bucket[$bucket_size])) by (le)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "GC durations", "tooltip": { "show": true, "showHistogram": false }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": null, "format": "s", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null } ], "repeat": null, "title": "GC", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 37 }, "id": 63, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 13 }, "hiddenSeries": false, "id": 42, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum (rate(synapse_replication_tcp_protocol_inbound_commands{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (name, conn_id)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{command}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Rate of incoming commands", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "description": "", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 13 }, "hiddenSeries": false, "id": 144, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_replication_tcp_command_queue{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "{{stream_name}} {{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Queued incoming RDATA commands, by stream", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 20 }, "hiddenSeries": false, "id": 43, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum (rate(synapse_replication_tcp_protocol_outbound_commands{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (name, conn_id)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{command}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Rate of outgoing commands", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 20 }, "hiddenSeries": false, "id": 41, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_replication_tcp_resource_stream_updates{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{stream_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Outgoing stream updates", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 27 }, "hiddenSeries": false, "id": 113, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_replication_tcp_resource_connections_per_stream{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{stream_name}}", "refId": "A" }, { "expr": "synapse_replication_tcp_resource_total_connections{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}}", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Replication connections", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 27 }, "hiddenSeries": false, "id": 115, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_replication_tcp_protocol_close_reason{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{reason_type}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Replication connection close reasons", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "repeat": null, "title": "Replication", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 38 }, "id": 69, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 41 }, "hiddenSeries": false, "id": 67, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "max(synapse_event_persisted_position{instance=\"$instance\"}) - on() group_right() synapse_event_processing_positions{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Event processing lag", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "events", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 41 }, "hiddenSeries": false, "id": 71, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "time()*1000-synapse_event_processing_last_ts{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Age of last processed event", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "ms", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 50 }, "hiddenSeries": false, "id": 121, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "deriv(synapse_event_processing_last_ts{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/1000 - 1", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Event processing catchup rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "none", "label": "fallbehind(-) / catchup(+): s/sec", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Event processing loop positions", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 39 }, "id": 126, "panels": [ { "cards": { "cardPadding": 0, "cardRound": null }, "color": { "cardColor": "#B877D9", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "max": null, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "description": "Colour reflects the number of rooms with the given number of forward extremities, or fewer.\n\nThis is only updated once an hour.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 42 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 122, "legend": { "show": true }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "synapse_forward_extremities_bucket{instance=\"$instance\"} and on (index, instance, job) (synapse_storage_events_persisted_events > 0)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, "title": "Number of rooms, by number of forward extremities in room", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "Number of rooms with the given number of forward extremities or fewer.\n\nThis is only updated once an hour.", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 42 }, "hiddenSeries": false, "id": 124, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_forward_extremities_bucket{instance=\"$instance\"} > 0", "format": "heatmap", "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Room counts, by number of extremities", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "none", "label": "Number of rooms", "logBase": 10, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": 0, "cardRound": null }, "color": { "cardColor": "#5794F2", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "description": "Colour reflects the number of events persisted to rooms with the given number of forward extremities, or fewer.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 50 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 127, "legend": { "show": true }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, "title": "Events persisted, by number of forward extremities in room (heatmap)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "For a given percentage P, the number X where P% of events were persisted to rooms with X forward extremities or fewer.", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 50 }, "hiddenSeries": false, "id": 128, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.5, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "A" }, { "expr": "histogram_quantile(0.75, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "B" }, { "expr": "histogram_quantile(0.90, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "90%", "refId": "C" }, { "expr": "histogram_quantile(0.99, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Events persisted, by number of forward extremities in room (quantiles)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Number of extremities in room", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": 0, "cardRound": null }, "color": { "cardColor": "#FF9830", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "description": "Colour reflects the number of events persisted to rooms with the given number of stale forward extremities, or fewer.\n\nStale forward extremities are those that were in the previous set of extremities as well as the new.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 58 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 129, "legend": { "show": true }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, "title": "Events persisted, by number of stale forward extremities in room (heatmap)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "For given percentage P, the number X where P% of events were persisted to rooms with X stale forward extremities or fewer.\n\nStale forward extremities are those that were in the previous set of extremities as well as the new.", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 58 }, "hiddenSeries": false, "id": 130, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.5, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "A" }, { "expr": "histogram_quantile(0.75, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "B" }, { "expr": "histogram_quantile(0.90, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "90%", "refId": "C" }, { "expr": "histogram_quantile(0.99, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Events persisted, by number of stale forward extremities in room (quantiles)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Number of stale forward extremities in room", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": 0, "cardRound": null }, "color": { "cardColor": "#73BF69", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "description": "Colour reflects the number of state resolution operations performed over the given number of state groups, or fewer.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 66 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 131, "legend": { "show": true }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "heatmap", "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, "title": "Number of state resolution performed, by number of state groups involved (heatmap)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "For a given percentage P, the number X where P% of state resolution operations took place over X state groups or fewer.", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 66 }, "hiddenSeries": false, "id": 132, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "histogram_quantile(0.5, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "50%", "refId": "A" }, { "expr": "histogram_quantile(0.75, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "75%", "refId": "B" }, { "expr": "histogram_quantile(0.90, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "C" }, { "expr": "histogram_quantile(0.99, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Number of state resolutions performed, by number of state groups involved (quantiles)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Number of state groups", "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "When we do a state res while persisting events we try and see if we can prune any stale extremities.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 74 }, "hiddenSeries": false, "id": 179, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(synapse_storage_events_state_resolutions_during_persistence{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "State res ", "refId": "A" }, { "expr": "sum(rate(synapse_storage_events_potential_times_prune_extremities{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "Potential to prune", "refId": "B" }, { "expr": "sum(rate(synapse_storage_events_times_pruned_extremities{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "Pruned", "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Stale extremity dropping", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Extremities", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 40 }, "id": 158, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 41 }, "hiddenSeries": false, "id": 156, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Max", "color": "#bf1b00", "fill": 0, "linewidth": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_admin_mau:current{instance=\"$instance\", job=~\"$job\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "Current", "refId": "A" }, { "expr": "synapse_admin_mau:max{instance=\"$instance\", job=~\"$job\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "Max", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "MAU Limits", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 41 }, "hiddenSeries": false, "id": 160, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "synapse_admin_mau_current_mau_by_service{instance=\"$instance\"}", "interval": "", "legendFormat": "{{ app_service }}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "MAU by Appservice", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "MAU", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 41 }, "id": 177, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 1 }, "hiddenSeries": false, "id": 173, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_notifier_users_woken_by_stream{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "hide": false, "intervalFactor": 2, "legendFormat": "{{stream}} {{index}}", "metric": "synapse_notifier", "refId": "A", "step": 2 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Notifier Streams Woken", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 1 }, "hiddenSeries": false, "id": 175, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "percentage": false, "pluginVersion": "7.1.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_handler_presence_get_updates{job=~\"$job\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{type}} {{index}}", "refId": "A", "step": 2 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Presence Stream Fetch Type Rates", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Notifier", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 42 }, "id": 170, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 43 }, "hiddenSeries": false, "id": 168, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_appservice_api_sent_events{instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{service}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Sent Events rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 43 }, "hiddenSeries": false, "id": 171, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_appservice_api_sent_transactions{instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{service}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Transactions rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Appservices", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 43 }, "id": 188, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 44 }, "hiddenSeries": false, "id": 182, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_handler_presence_notified_presence{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Notified", "refId": "A" }, { "expr": "rate(synapse_handler_presence_federation_presence_out{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Remote ping", "refId": "B" }, { "expr": "rate(synapse_handler_presence_presence_updates{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Total updates", "refId": "C" }, { "expr": "rate(synapse_handler_presence_federation_presence{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Remote updates", "refId": "D" }, { "expr": "rate(synapse_handler_presence_bump_active_time{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Bump active time", "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Presence", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 44 }, "hiddenSeries": false, "id": 184, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_handler_presence_state_transition{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{from}} -> {{to}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Presence state transitions", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 52 }, "hiddenSeries": false, "id": 186, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_handler_presence_notify_reason{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{reason}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Presence notify reason", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "title": "Presence", "type": "row" }, { "collapsed": true, "datasource": "${DS_PROMETHEUS}", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 44 }, "id": 197, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 1 }, "hiddenSeries": false, "id": 191, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_external_cache_set{job=\"$job\", instance=\"$instance\", index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{ cache_name }} {{ index }}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "External Cache Set Rate", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "$datasource", "description": "", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 1 }, "hiddenSeries": false, "id": 193, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "rate(synapse_external_cache_get{job=\"$job\", instance=\"$instance\", index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{ cache_name }} {{ index }}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "External Cache Get Rate", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "cards": { "cardPadding": -1, "cardRound": null }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": "$datasource", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 9 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 195, "legend": { "show": false }, "links": [], "reverseYBuckets": false, "targets": [ { "expr": "sum(rate(synapse_external_cache_response_time_seconds_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le)", "format": "heatmap", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "External Cache Response Time", "tooltip": { "show": true, "showHistogram": true }, "tooltipDecimals": 2, "type": "heatmap", "xAxis": { "show": true }, "xBucketNumber": null, "xBucketSize": null, "yAxis": { "decimals": 0, "format": "s", "logBase": 1, "max": null, "min": null, "show": true, "splitFactor": null }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null } ], "title": "External Cache", "type": "row" } ], "refresh": false, "schemaVersion": 26, "style": "dark", "tags": [ "matrix" ], "templating": { "list": [ { "current": { "selected": false, "text": "default", "value": "default" }, "error": null, "hide": 0, "includeAll": false, "label": null, "multi": false, "name": "datasource", "options": [], "query": "prometheus", "queryValue": "", "refresh": 1, "regex": "", "skipUrlSync": false, "type": "datasource" }, { "allFormat": "glob", "auto": true, "auto_count": 100, "auto_min": "60s", "current": { "selected": false, "text": "auto", "value": "$__auto_interval_bucket_size" }, "datasource": null, "error": null, "hide": 0, "includeAll": false, "label": "Bucket Size", "multi": false, "multiFormat": "glob", "name": "bucket_size", "options": [ { "selected": true, "text": "auto", "value": "$__auto_interval_bucket_size" }, { "selected": false, "text": "30s", "value": "30s" }, { "selected": false, "text": "1m", "value": "1m" }, { "selected": false, "text": "2m", "value": "2m" }, { "selected": false, "text": "5m", "value": "5m" }, { "selected": false, "text": "10m", "value": "10m" }, { "selected": false, "text": "15m", "value": "15m" } ], "query": "30s,1m,2m,5m,10m,15m", "queryValue": "", "refresh": 2, "skipUrlSync": false, "type": "interval" }, { "allValue": null, "current": {}, "datasource": "$datasource", "definition": "", "error": null, "hide": 0, "includeAll": false, "label": null, "multi": false, "name": "instance", "options": [], "query": "label_values(synapse_util_metrics_block_ru_utime_seconds, instance)", "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 1, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false }, { "allFormat": "regex wildcard", "allValue": "", "current": {}, "datasource": "$datasource", "definition": "", "error": null, "hide": 0, "hideLabel": false, "includeAll": true, "label": "Job", "multi": true, "multiFormat": "regex values", "name": "job", "options": [], "query": "label_values(synapse_util_metrics_block_ru_utime_seconds, job)", "refresh": 2, "refresh_on_load": false, "regex": "", "skipUrlSync": false, "sort": 1, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false }, { "allFormat": "regex wildcard", "allValue": ".*", "current": {}, "datasource": "$datasource", "definition": "", "error": null, "hide": 0, "hideLabel": false, "includeAll": true, "label": "", "multi": true, "multiFormat": "regex values", "name": "index", "options": [], "query": "label_values(synapse_util_metrics_block_ru_utime_seconds, index)", "refresh": 2, "refresh_on_load": false, "regex": "", "skipUrlSync": false, "sort": 3, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false } ] }, "time": { "from": "now-3h", "to": "now" }, "timepicker": { "now": true, "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "time_options": [ "5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d" ] }, "timezone": "", "title": "Synapse", "uid": "000000012", "version": 100 }synapse-1.53.0/contrib/graph/000077500000000000000000000000001420514467300160315ustar00rootroot00000000000000synapse-1.53.0/contrib/graph/graph.py000066400000000000000000000102541420514467300175060ustar00rootroot00000000000000import argparse import cgi import datetime import json import pydot import urllib2 # Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. def make_name(pdu_id, origin): return "%s@%s" % (pdu_id, origin) def make_graph(pdus, room, filename_prefix): pdu_map = {} node_map = {} origins = set() colors = {"red", "green", "blue", "yellow", "purple"} for pdu in pdus: origins.add(pdu.get("origin")) color_map = {color: color for color in colors if color in origins} colors -= set(color_map.values()) color_map[None] = "black" for o in origins: if o in color_map: continue try: c = colors.pop() color_map[o] = c except Exception: print("Run out of colours!") color_map[o] = "black" graph = pydot.Dot(graph_name="Test") for pdu in pdus: name = make_name(pdu.get("pdu_id"), pdu.get("origin")) pdu_map[name] = pdu t = datetime.datetime.fromtimestamp(float(pdu["ts"]) / 1000).strftime( "%Y-%m-%d %H:%M:%S,%f" ) label = ( "<" "%(name)s
" "Type: %(type)s
" "State key: %(state_key)s
" "Content: %(content)s
" "Time: %(time)s
" "Depth: %(depth)s
" ">" ) % { "name": name, "type": pdu.get("pdu_type"), "state_key": pdu.get("state_key"), "content": cgi.escape(json.dumps(pdu.get("content")), quote=True), "time": t, "depth": pdu.get("depth"), } node = pydot.Node(name=name, label=label, color=color_map[pdu.get("origin")]) node_map[name] = node graph.add_node(node) for pdu in pdus: start_name = make_name(pdu.get("pdu_id"), pdu.get("origin")) for i, o in pdu.get("prev_pdus", []): end_name = make_name(i, o) if end_name not in node_map: print("%s not in nodes" % end_name) continue edge = pydot.Edge(node_map[start_name], node_map[end_name]) graph.add_edge(edge) # Add prev_state edges, if they exist if pdu.get("prev_state_id") and pdu.get("prev_state_origin"): prev_state_name = make_name( pdu.get("prev_state_id"), pdu.get("prev_state_origin") ) if prev_state_name in node_map: state_edge = pydot.Edge( node_map[start_name], node_map[prev_state_name], style="dotted" ) graph.add_edge(state_edge) graph.write("%s.dot" % filename_prefix, format="raw", prog="dot") # graph.write_png("%s.png" % filename_prefix, prog='dot') graph.write_svg("%s.svg" % filename_prefix, prog="dot") def get_pdus(host, room): transaction = json.loads( urllib2.urlopen( "http://%s/_matrix/federation/v1/context/%s/" % (host, room) ).read() ) return transaction["pdus"] if __name__ == "__main__": parser = argparse.ArgumentParser( description="Generate a PDU graph for a given room by talking " "to the given homeserver to get the list of PDUs. \n" "Requires pydot." ) parser.add_argument( "-p", "--prefix", dest="prefix", help="String to prefix output files with" ) parser.add_argument("host") parser.add_argument("room") args = parser.parse_args() host = args.host room = args.room prefix = args.prefix if args.prefix else "%s_graph" % (room) pdus = get_pdus(host, room) make_graph(pdus, room, prefix) synapse-1.53.0/contrib/graph/graph2.py000066400000000000000000000102301420514467300175620ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import cgi import datetime import json import sqlite3 import pydot from synapse.events import FrozenEvent from synapse.util.frozenutils import unfreeze def make_graph(db_name, room_id, file_prefix, limit): conn = sqlite3.connect(db_name) sql = ( "SELECT json FROM event_json as j " "INNER JOIN events as e ON e.event_id = j.event_id " "WHERE j.room_id = ?" ) args = [room_id] if limit: sql += " ORDER BY topological_ordering DESC, stream_ordering DESC LIMIT ?" args.append(limit) c = conn.execute(sql, args) events = [FrozenEvent(json.loads(e[0])) for e in c.fetchall()] events.sort(key=lambda e: e.depth) node_map = {} state_groups = {} graph = pydot.Dot(graph_name="Test") for event in events: c = conn.execute( "SELECT state_group FROM event_to_state_groups WHERE event_id = ?", (event.event_id,), ) res = c.fetchone() state_group = res[0] if res else None if state_group is not None: state_groups.setdefault(state_group, []).append(event.event_id) t = datetime.datetime.fromtimestamp( float(event.origin_server_ts) / 1000 ).strftime("%Y-%m-%d %H:%M:%S,%f") content = json.dumps(unfreeze(event.get_dict()["content"])) label = ( "<" "%(name)s
" "Type: %(type)s
" "State key: %(state_key)s
" "Content: %(content)s
" "Time: %(time)s
" "Depth: %(depth)s
" "State group: %(state_group)s
" ">" ) % { "name": event.event_id, "type": event.type, "state_key": event.get("state_key", None), "content": cgi.escape(content, quote=True), "time": t, "depth": event.depth, "state_group": state_group, } node = pydot.Node(name=event.event_id, label=label) node_map[event.event_id] = node graph.add_node(node) for event in events: for prev_id, _ in event.prev_events: try: end_node = node_map[prev_id] except Exception: end_node = pydot.Node(name=prev_id, label="<%s>" % (prev_id,)) node_map[prev_id] = end_node graph.add_node(end_node) edge = pydot.Edge(node_map[event.event_id], end_node) graph.add_edge(edge) for group, event_ids in state_groups.items(): if len(event_ids) <= 1: continue cluster = pydot.Cluster(str(group), label="" % (str(group),)) for event_id in event_ids: cluster.add_node(node_map[event_id]) graph.add_subgraph(cluster) graph.write("%s.dot" % file_prefix, format="raw", prog="dot") graph.write_svg("%s.svg" % file_prefix, prog="dot") if __name__ == "__main__": parser = argparse.ArgumentParser( description="Generate a PDU graph for a given room by talking " "to the given homeserver to get the list of PDUs. \n" "Requires pydot." ) parser.add_argument( "-p", "--prefix", dest="prefix", help="String to prefix output files with", default="graph_output", ) parser.add_argument("-l", "--limit", help="Only retrieve the last N events.") parser.add_argument("db") parser.add_argument("room") args = parser.parse_args() make_graph(args.db, args.room, args.prefix, args.limit) synapse-1.53.0/contrib/graph/graph3.py000066400000000000000000000100621420514467300175660ustar00rootroot00000000000000import argparse import cgi import datetime import pydot import simplejson as json from synapse.events import FrozenEvent from synapse.util.frozenutils import unfreeze # Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. def make_graph(file_name, room_id, file_prefix, limit): print("Reading lines") with open(file_name) as f: lines = f.readlines() print("Read lines") events = [FrozenEvent(json.loads(line)) for line in lines] print("Loaded events.") events.sort(key=lambda e: e.depth) print("Sorted events") if limit: events = events[-int(limit) :] node_map = {} graph = pydot.Dot(graph_name="Test") for event in events: t = datetime.datetime.fromtimestamp( float(event.origin_server_ts) / 1000 ).strftime("%Y-%m-%d %H:%M:%S,%f") content = json.dumps(unfreeze(event.get_dict()["content"]), indent=4) content = content.replace("\n", "
\n") print(content) content = [] for key, value in unfreeze(event.get_dict()["content"]).items(): if value is None: value = "" elif isinstance(value, str): pass else: value = json.dumps(value) content.append( "%s: %s," % ( cgi.escape(key, quote=True).encode("ascii", "xmlcharrefreplace"), cgi.escape(value, quote=True).encode("ascii", "xmlcharrefreplace"), ) ) content = "
\n".join(content) print(content) label = ( "<" "%(name)s
" "Type: %(type)s
" "State key: %(state_key)s
" "Content: %(content)s
" "Time: %(time)s
" "Depth: %(depth)s
" ">" ) % { "name": event.event_id, "type": event.type, "state_key": event.get("state_key", None), "content": content, "time": t, "depth": event.depth, } node = pydot.Node(name=event.event_id, label=label) node_map[event.event_id] = node graph.add_node(node) print("Created Nodes") for event in events: for prev_id, _ in event.prev_events: try: end_node = node_map[prev_id] except Exception: end_node = pydot.Node(name=prev_id, label="<%s>" % (prev_id,)) node_map[prev_id] = end_node graph.add_node(end_node) edge = pydot.Edge(node_map[event.event_id], end_node) graph.add_edge(edge) print("Created edges") graph.write("%s.dot" % file_prefix, format="raw", prog="dot") print("Created Dot") graph.write_svg("%s.svg" % file_prefix, prog="dot") print("Created svg") if __name__ == "__main__": parser = argparse.ArgumentParser( description="Generate a PDU graph for a given room by reading " "from a file with line deliminated events. \n" "Requires pydot." ) parser.add_argument( "-p", "--prefix", dest="prefix", help="String to prefix output files with", default="graph_output", ) parser.add_argument("-l", "--limit", help="Only retrieve the last N events.") parser.add_argument("event_file") parser.add_argument("room") args = parser.parse_args() make_graph(args.event_file, args.room, args.prefix, args.limit) synapse-1.53.0/contrib/jitsimeetbridge/000077500000000000000000000000001420514467300201025ustar00rootroot00000000000000synapse-1.53.0/contrib/jitsimeetbridge/jitsimeetbridge.py000066400000000000000000000254411420514467300236340ustar00rootroot00000000000000#!/usr/bin/env python """ This is an attempt at bridging matrix clients into a Jitis meet room via Matrix video call. It uses hard-coded xml strings overg XMPP BOSH. It can display one of the streams from the Jitsi bridge until the second lot of SDP comes down and we set the remote SDP at which point the stream ends. Our video never gets to the bridge. Requires: npm install jquery jsdom """ import json import subprocess import time import gevent import grequests from BeautifulSoup import BeautifulSoup ACCESS_TOKEN = "" MATRIXBASE = "https://matrix.org/_matrix/client/api/v1/" MYUSERNAME = "@davetest:matrix.org" HTTPBIND = "https://meet.jit.si/http-bind" # HTTPBIND = 'https://jitsi.vuc.me/http-bind' # ROOMNAME = "matrix" ROOMNAME = "pibble" HOST = "guest.jit.si" # HOST="jitsi.vuc.me" TURNSERVER = "turn.guest.jit.si" # TURNSERVER="turn.jitsi.vuc.me" ROOMDOMAIN = "meet.jit.si" # ROOMDOMAIN="conference.jitsi.vuc.me" class TrivialMatrixClient: def __init__(self, access_token): self.token = None self.access_token = access_token def getEvent(self): while True: url = ( MATRIXBASE + "events?access_token=" + self.access_token + "&timeout=60000" ) if self.token: url += "&from=" + self.token req = grequests.get(url) resps = grequests.map([req]) obj = json.loads(resps[0].content) print("incoming from matrix", obj) if "end" not in obj: continue self.token = obj["end"] if len(obj["chunk"]): return obj["chunk"][0] def joinRoom(self, roomId): url = MATRIXBASE + "rooms/" + roomId + "/join?access_token=" + self.access_token print(url) headers = {"Content-Type": "application/json"} req = grequests.post(url, headers=headers, data="{}") resps = grequests.map([req]) obj = json.loads(resps[0].content) print("response: ", obj) def sendEvent(self, roomId, evType, event): url = ( MATRIXBASE + "rooms/" + roomId + "/send/" + evType + "?access_token=" + self.access_token ) print(url) print(json.dumps(event)) headers = {"Content-Type": "application/json"} req = grequests.post(url, headers=headers, data=json.dumps(event)) resps = grequests.map([req]) obj = json.loads(resps[0].content) print("response: ", obj) xmppClients = {} def matrixLoop(): while True: ev = matrixCli.getEvent() print(ev) if ev["type"] == "m.room.member": print("membership event") if ev["membership"] == "invite" and ev["state_key"] == MYUSERNAME: roomId = ev["room_id"] print("joining room %s" % (roomId)) matrixCli.joinRoom(roomId) elif ev["type"] == "m.room.message": if ev["room_id"] in xmppClients: print("already have a bridge for that user, ignoring") continue print("got message, connecting") xmppClients[ev["room_id"]] = TrivialXmppClient(ev["room_id"], ev["user_id"]) gevent.spawn(xmppClients[ev["room_id"]].xmppLoop) elif ev["type"] == "m.call.invite": print("Incoming call") # sdp = ev['content']['offer']['sdp'] # print "sdp: %s" % (sdp) # xmppClients[ev['room_id']] = TrivialXmppClient(ev['room_id'], ev['user_id']) # gevent.spawn(xmppClients[ev['room_id']].xmppLoop) elif ev["type"] == "m.call.answer": print("Call answered") sdp = ev["content"]["answer"]["sdp"] if ev["room_id"] not in xmppClients: print("We didn't have a call for that room") continue # should probably check call ID too xmppCli = xmppClients[ev["room_id"]] xmppCli.sendAnswer(sdp) elif ev["type"] == "m.call.hangup": if ev["room_id"] in xmppClients: xmppClients[ev["room_id"]].stop() del xmppClients[ev["room_id"]] class TrivialXmppClient: def __init__(self, matrixRoom, userId): self.rid = 0 self.matrixRoom = matrixRoom self.userId = userId self.running = True def stop(self): self.running = False def nextRid(self): self.rid += 1 return "%d" % (self.rid) def sendIq(self, xml): fullXml = ( "%s" % (self.nextRid(), self.sid, xml) ) # print "\t>>>%s" % (fullXml) return self.xmppPoke(fullXml) def xmppPoke(self, xml): headers = {"Content-Type": "application/xml"} req = grequests.post(HTTPBIND, verify=False, headers=headers, data=xml) resps = grequests.map([req]) obj = BeautifulSoup(resps[0].content) return obj def sendAnswer(self, answer): print("sdp from matrix client", answer) p = subprocess.Popen( ["node", "unjingle/unjingle.js", "--sdp"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, ) jingle, out_err = p.communicate(answer) jingle = jingle % { "tojid": self.callfrom, "action": "session-accept", "initiator": self.callfrom, "responder": self.jid, "sid": self.callsid, } print("answer jingle from sdp", jingle) res = self.sendIq(jingle) print("reply from answer: ", res) self.ssrcs = {} jingleSoup = BeautifulSoup(jingle) for cont in jingleSoup.iq.jingle.findAll("content"): if cont.description: self.ssrcs[cont["name"]] = cont.description["ssrc"] print("my ssrcs:", self.ssrcs) gevent.joinall([gevent.spawn(self.advertiseSsrcs)]) def advertiseSsrcs(self): time.sleep(7) print("SSRC spammer started") while self.running: ssrcMsg = "%(nick)s" % { "tojid": "%s@%s/%s" % (ROOMNAME, ROOMDOMAIN, self.shortJid), "nick": self.userId, "assrc": self.ssrcs["audio"], "vssrc": self.ssrcs["video"], } res = self.sendIq(ssrcMsg) print("reply from ssrc announce: ", res) time.sleep(10) def xmppLoop(self): self.matrixCallId = time.time() res = self.xmppPoke( "" % (self.nextRid(), HOST) ) print(res) self.sid = res.body["sid"] print("sid %s" % (self.sid)) res = self.sendIq( "" ) res = self.xmppPoke( "" % (self.nextRid(), self.sid, HOST) ) res = self.sendIq( "" ) print(res) self.jid = res.body.iq.bind.jid.string print("jid: %s" % (self.jid)) self.shortJid = self.jid.split("-")[0] res = self.sendIq( "" ) # randomthing = res.body.iq['to'] # whatsitpart = randomthing.split('-')[0] # print "other random bind thing: %s" % (randomthing) # advertise preence to the jitsi room, with our nick res = self.sendIq( "%s" % (HOST, TURNSERVER, ROOMNAME, ROOMDOMAIN, self.userId) ) self.muc = {"users": []} for p in res.body.findAll("presence"): u = {} u["shortJid"] = p["from"].split("/")[1] if p.c and p.c.nick: u["nick"] = p.c.nick.string self.muc["users"].append(u) print("muc: ", self.muc) # wait for stuff while True: print("waiting...") res = self.sendIq("") print("got from stream: ", res) if res.body.iq: jingles = res.body.iq.findAll("jingle") if len(jingles): self.callfrom = res.body.iq["from"] self.handleInvite(jingles[0]) elif "type" in res.body and res.body["type"] == "terminate": self.running = False del xmppClients[self.matrixRoom] return def handleInvite(self, jingle): self.initiator = jingle["initiator"] self.callsid = jingle["sid"] p = subprocess.Popen( ["node", "unjingle/unjingle.js", "--jingle"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, ) print("raw jingle invite", str(jingle)) sdp, out_err = p.communicate(str(jingle)) print("transformed remote offer sdp", sdp) inviteEvent = { "offer": {"type": "offer", "sdp": sdp}, "call_id": self.matrixCallId, "version": 0, "lifetime": 30000, } matrixCli.sendEvent(self.matrixRoom, "m.call.invite", inviteEvent) matrixCli = TrivialMatrixClient(ACCESS_TOKEN) # Undefined name gevent.joinall([gevent.spawn(matrixLoop)]) synapse-1.53.0/contrib/jitsimeetbridge/syweb-jitsi-conference.patch000066400000000000000000000163501420514467300255060ustar00rootroot00000000000000diff --git a/syweb/webclient/app/components/matrix/matrix-call.js b/syweb/webclient/app/components/matrix/matrix-call.js index 9fbfff0..dc68077 100644 --- a/syweb/webclient/app/components/matrix/matrix-call.js +++ b/syweb/webclient/app/components/matrix/matrix-call.js @@ -16,6 +16,45 @@ limitations under the License. 'use strict'; + +function sendKeyframe(pc) { + console.log('sendkeyframe', pc.iceConnectionState); + if (pc.iceConnectionState !== 'connected') return; // safe... + pc.setRemoteDescription( + pc.remoteDescription, + function () { + pc.createAnswer( + function (modifiedAnswer) { + pc.setLocalDescription( + modifiedAnswer, + function () { + // noop + }, + function (error) { + console.log('triggerKeyframe setLocalDescription failed', error); + messageHandler.showError(); + } + ); + }, + function (error) { + console.log('triggerKeyframe createAnswer failed', error); + messageHandler.showError(); + } + ); + }, + function (error) { + console.log('triggerKeyframe setRemoteDescription failed', error); + messageHandler.showError(); + } + ); +} + + + + + + + var forAllVideoTracksOnStream = function(s, f) { var tracks = s.getVideoTracks(); for (var i = 0; i < tracks.length; i++) { @@ -83,7 +122,7 @@ angular.module('MatrixCall', []) } // FIXME: we should prevent any calls from being placed or accepted before this has finished - MatrixCall.getTurnServer(); + //MatrixCall.getTurnServer(); MatrixCall.CALL_TIMEOUT = 60000; MatrixCall.FALLBACK_STUN_SERVER = 'stun:stun.l.google.com:19302'; @@ -132,6 +171,22 @@ angular.module('MatrixCall', []) pc.onsignalingstatechange = function() { self.onSignallingStateChanged(); }; pc.onicecandidate = function(c) { self.gotLocalIceCandidate(c); }; pc.onaddstream = function(s) { self.onAddStream(s); }; + + var datachan = pc.createDataChannel('RTCDataChannel', { + reliable: false + }); + console.log("data chan: "+datachan); + datachan.onopen = function() { + console.log("data channel open"); + }; + datachan.onmessage = function() { + console.log("data channel message"); + }; + pc.ondatachannel = function(event) { + console.log("have data channel"); + event.channel.binaryType = 'blob'; + }; + return pc; } @@ -200,6 +255,12 @@ angular.module('MatrixCall', []) }, this.msg.lifetime - event.age); }; + MatrixCall.prototype.receivedInvite = function(event) { + console.log("Got second invite for call "+this.call_id); + this.peerConn.setRemoteDescription(new RTCSessionDescription(this.msg.offer), this.onSetRemoteDescriptionSuccess, this.onSetRemoteDescriptionError); + }; + + // perverse as it may seem, sometimes we want to instantiate a call with a hangup message // (because when getting the state of the room on load, events come in reverse order and // we want to remember that a call has been hung up) @@ -349,7 +410,7 @@ angular.module('MatrixCall', []) 'mandatory': { 'OfferToReceiveAudio': true, 'OfferToReceiveVideo': this.type == 'video' - }, + } }; this.peerConn.createAnswer(function(d) { self.createdAnswer(d); }, function(e) {}, constraints); // This can't be in an apply() because it's called by a predecessor call under glare conditions :( @@ -359,8 +420,20 @@ angular.module('MatrixCall', []) MatrixCall.prototype.gotLocalIceCandidate = function(event) { if (event.candidate) { console.log("Got local ICE "+event.candidate.sdpMid+" candidate: "+event.candidate.candidate); - this.sendCandidate(event.candidate); - } + //this.sendCandidate(event.candidate); + } else { + console.log("have all candidates, sending answer"); + var content = { + version: 0, + call_id: this.call_id, + answer: this.peerConn.localDescription + }; + this.sendEventWithRetry('m.call.answer', content); + var self = this; + $rootScope.$apply(function() { + self.state = 'connecting'; + }); + } } MatrixCall.prototype.gotRemoteIceCandidate = function(cand) { @@ -418,15 +491,6 @@ angular.module('MatrixCall', []) console.log("Created answer: "+description); var self = this; this.peerConn.setLocalDescription(description, function() { - var content = { - version: 0, - call_id: self.call_id, - answer: self.peerConn.localDescription - }; - self.sendEventWithRetry('m.call.answer', content); - $rootScope.$apply(function() { - self.state = 'connecting'; - }); }, function() { console.log("Error setting local description!"); } ); }; @@ -448,6 +512,9 @@ angular.module('MatrixCall', []) $rootScope.$apply(function() { self.state = 'connected'; self.didConnect = true; + /*$timeout(function() { + sendKeyframe(self.peerConn); + }, 1000);*/ }); } else if (this.peerConn.iceConnectionState == 'failed') { this.hangup('ice_failed'); @@ -518,6 +585,7 @@ angular.module('MatrixCall', []) MatrixCall.prototype.onRemoteStreamEnded = function(event) { console.log("Remote stream ended"); + return; var self = this; $rootScope.$apply(function() { self.state = 'ended'; diff --git a/syweb/webclient/app/components/matrix/matrix-phone-service.js b/syweb/webclient/app/components/matrix/matrix-phone-service.js index 55dbbf5..272fa27 100644 --- a/syweb/webclient/app/components/matrix/matrix-phone-service.js +++ b/syweb/webclient/app/components/matrix/matrix-phone-service.js @@ -48,6 +48,13 @@ angular.module('matrixPhoneService', []) return; } + // do we already have an entry for this call ID? + var existingEntry = matrixPhoneService.allCalls[msg.call_id]; + if (existingEntry) { + existingEntry.receivedInvite(msg); + return; + } + var call = undefined; if (!isLive) { // if this event wasn't live then this call may already be over @@ -108,7 +115,7 @@ angular.module('matrixPhoneService', []) call.hangup(); } } else { - $rootScope.$broadcast(matrixPhoneService.INCOMING_CALL_EVENT, call); + $rootScope.$broadcast(matrixPhoneService.INCOMING_CALL_EVENT, call); } } else if (event.type == 'm.call.answer') { var call = matrixPhoneService.allCalls[msg.call_id]; synapse-1.53.0/contrib/jitsimeetbridge/unjingle/000077500000000000000000000000001420514467300217155ustar00rootroot00000000000000synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe.jingle.sdp.js000066400000000000000000000666251420514467300260120ustar00rootroot00000000000000/* jshint -W117 */ // SDP STUFF function SDP(sdp) { this.media = sdp.split('\r\nm='); for (var i = 1; i < this.media.length; i++) { this.media[i] = 'm=' + this.media[i]; if (i != this.media.length - 1) { this.media[i] += '\r\n'; } } this.session = this.media.shift() + '\r\n'; this.raw = this.session + this.media.join(''); } exports.SDP = SDP; var jsdom = require("jsdom"); var window = jsdom.jsdom().parentWindow; var $ = require('jquery')(window); var SDPUtil = require('./strophe.jingle.sdp.util.js').SDPUtil; /** * Returns map of MediaChannel mapped per channel idx. */ SDP.prototype.getMediaSsrcMap = function() { var self = this; var media_ssrcs = {}; for (channelNum = 0; channelNum < self.media.length; channelNum++) { modified = true; tmp = SDPUtil.find_lines(self.media[channelNum], 'a=ssrc:'); var type = SDPUtil.parse_mid(SDPUtil.find_line(self.media[channelNum], 'a=mid:')); var channel = new MediaChannel(channelNum, type); media_ssrcs[channelNum] = channel; tmp.forEach(function (line) { var linessrc = line.substring(7).split(' ')[0]; // allocate new ChannelSsrc if(!channel.ssrcs[linessrc]) { channel.ssrcs[linessrc] = new ChannelSsrc(linessrc, type); } channel.ssrcs[linessrc].lines.push(line); }); tmp = SDPUtil.find_lines(self.media[channelNum], 'a=ssrc-group:'); tmp.forEach(function(line){ var semantics = line.substr(0, idx).substr(13); var ssrcs = line.substr(14 + semantics.length).split(' '); if (ssrcs.length != 0) { var ssrcGroup = new ChannelSsrcGroup(semantics, ssrcs); channel.ssrcGroups.push(ssrcGroup); } }); } return media_ssrcs; }; /** * Returns true if this SDP contains given SSRC. * @param ssrc the ssrc to check. * @returns {boolean} true if this SDP contains given SSRC. */ SDP.prototype.containsSSRC = function(ssrc) { var channels = this.getMediaSsrcMap(); var contains = false; Object.keys(channels).forEach(function(chNumber){ var channel = channels[chNumber]; //console.log("Check", channel, ssrc); if(Object.keys(channel.ssrcs).indexOf(ssrc) != -1){ contains = true; } }); return contains; }; /** * Returns map of MediaChannel that contains only media not contained in otherSdp. Mapped by channel idx. * @param otherSdp the other SDP to check ssrc with. */ SDP.prototype.getNewMedia = function(otherSdp) { // this could be useful in Array.prototype. function arrayEquals(array) { // if the other array is a falsy value, return if (!array) return false; // compare lengths - can save a lot of time if (this.length != array.length) return false; for (var i = 0, l=this.length; i < l; i++) { // Check if we have nested arrays if (this[i] instanceof Array && array[i] instanceof Array) { // recurse into the nested arrays if (!this[i].equals(array[i])) return false; } else if (this[i] != array[i]) { // Warning - two different object instances will never be equal: {x:20} != {x:20} return false; } } return true; } var myMedia = this.getMediaSsrcMap(); var othersMedia = otherSdp.getMediaSsrcMap(); var newMedia = {}; Object.keys(othersMedia).forEach(function(channelNum) { var myChannel = myMedia[channelNum]; var othersChannel = othersMedia[channelNum]; if(!myChannel && othersChannel) { // Add whole channel newMedia[channelNum] = othersChannel; return; } // Look for new ssrcs accross the channel Object.keys(othersChannel.ssrcs).forEach(function(ssrc) { if(Object.keys(myChannel.ssrcs).indexOf(ssrc) === -1) { // Allocate channel if we've found ssrc that doesn't exist in our channel if(!newMedia[channelNum]){ newMedia[channelNum] = new MediaChannel(othersChannel.chNumber, othersChannel.mediaType); } newMedia[channelNum].ssrcs[ssrc] = othersChannel.ssrcs[ssrc]; } }); // Look for new ssrc groups across the channels othersChannel.ssrcGroups.forEach(function(otherSsrcGroup){ // try to match the other ssrc-group with an ssrc-group of ours var matched = false; for (var i = 0; i < myChannel.ssrcGroups.length; i++) { var mySsrcGroup = myChannel.ssrcGroups[i]; if (otherSsrcGroup.semantics == mySsrcGroup.semantics && arrayEquals.apply(otherSsrcGroup.ssrcs, [mySsrcGroup.ssrcs])) { matched = true; break; } } if (!matched) { // Allocate channel if we've found an ssrc-group that doesn't // exist in our channel if(!newMedia[channelNum]){ newMedia[channelNum] = new MediaChannel(othersChannel.chNumber, othersChannel.mediaType); } newMedia[channelNum].ssrcGroups.push(otherSsrcGroup); } }); }); return newMedia; }; // remove iSAC and CN from SDP SDP.prototype.mangle = function () { var i, j, mline, lines, rtpmap, newdesc; for (i = 0; i < this.media.length; i++) { lines = this.media[i].split('\r\n'); lines.pop(); // remove empty last element mline = SDPUtil.parse_mline(lines.shift()); if (mline.media != 'audio') continue; newdesc = ''; mline.fmt.length = 0; for (j = 0; j < lines.length; j++) { if (lines[j].substr(0, 9) == 'a=rtpmap:') { rtpmap = SDPUtil.parse_rtpmap(lines[j]); if (rtpmap.name == 'CN' || rtpmap.name == 'ISAC') continue; mline.fmt.push(rtpmap.id); newdesc += lines[j] + '\r\n'; } else { newdesc += lines[j] + '\r\n'; } } this.media[i] = SDPUtil.build_mline(mline) + '\r\n'; this.media[i] += newdesc; } this.raw = this.session + this.media.join(''); }; // remove lines matching prefix from session section SDP.prototype.removeSessionLines = function(prefix) { var self = this; var lines = SDPUtil.find_lines(this.session, prefix); lines.forEach(function(line) { self.session = self.session.replace(line + '\r\n', ''); }); this.raw = this.session + this.media.join(''); return lines; } // remove lines matching prefix from a media section specified by mediaindex // TODO: non-numeric mediaindex could match mid SDP.prototype.removeMediaLines = function(mediaindex, prefix) { var self = this; var lines = SDPUtil.find_lines(this.media[mediaindex], prefix); lines.forEach(function(line) { self.media[mediaindex] = self.media[mediaindex].replace(line + '\r\n', ''); }); this.raw = this.session + this.media.join(''); return lines; } // add content's to a jingle element SDP.prototype.toJingle = function (elem, thecreator) { var i, j, k, mline, ssrc, rtpmap, tmp, line, lines; var self = this; // new bundle plan if (SDPUtil.find_line(this.session, 'a=group:')) { lines = SDPUtil.find_lines(this.session, 'a=group:'); for (i = 0; i < lines.length; i++) { tmp = lines[i].split(' '); var semantics = tmp.shift().substr(8); elem.c('group', {xmlns: 'urn:xmpp:jingle:apps:grouping:0', semantics:semantics}); for (j = 0; j < tmp.length; j++) { elem.c('content', {name: tmp[j]}).up(); } elem.up(); } } // old bundle plan, to be removed var bundle = []; if (SDPUtil.find_line(this.session, 'a=group:BUNDLE')) { bundle = SDPUtil.find_line(this.session, 'a=group:BUNDLE ').split(' '); bundle.shift(); } for (i = 0; i < this.media.length; i++) { mline = SDPUtil.parse_mline(this.media[i].split('\r\n')[0]); if (!(mline.media === 'audio' || mline.media === 'video' || mline.media === 'application')) { continue; } if (SDPUtil.find_line(this.media[i], 'a=ssrc:')) { ssrc = SDPUtil.find_line(this.media[i], 'a=ssrc:').substring(7).split(' ')[0]; // take the first } else { ssrc = false; } elem.c('content', {creator: thecreator, name: mline.media}); if (SDPUtil.find_line(this.media[i], 'a=mid:')) { // prefer identifier from a=mid if present var mid = SDPUtil.parse_mid(SDPUtil.find_line(this.media[i], 'a=mid:')); elem.attrs({ name: mid }); // old BUNDLE plan, to be removed if (bundle.indexOf(mid) !== -1) { elem.c('bundle', {xmlns: 'http://estos.de/ns/bundle'}).up(); bundle.splice(bundle.indexOf(mid), 1); } } if (SDPUtil.find_line(this.media[i], 'a=rtpmap:').length) { elem.c('description', {xmlns: 'urn:xmpp:jingle:apps:rtp:1', media: mline.media }); if (ssrc) { elem.attrs({ssrc: ssrc}); } for (j = 0; j < mline.fmt.length; j++) { rtpmap = SDPUtil.find_line(this.media[i], 'a=rtpmap:' + mline.fmt[j]); elem.c('payload-type', SDPUtil.parse_rtpmap(rtpmap)); // put any 'a=fmtp:' + mline.fmt[j] lines into if (SDPUtil.find_line(this.media[i], 'a=fmtp:' + mline.fmt[j])) { tmp = SDPUtil.parse_fmtp(SDPUtil.find_line(this.media[i], 'a=fmtp:' + mline.fmt[j])); for (k = 0; k < tmp.length; k++) { elem.c('parameter', tmp[k]).up(); } } this.RtcpFbToJingle(i, elem, mline.fmt[j]); // XEP-0293 -- map a=rtcp-fb elem.up(); } if (SDPUtil.find_line(this.media[i], 'a=crypto:', this.session)) { elem.c('encryption', {required: 1}); var crypto = SDPUtil.find_lines(this.media[i], 'a=crypto:', this.session); crypto.forEach(function(line) { elem.c('crypto', SDPUtil.parse_crypto(line)).up(); }); elem.up(); // end of encryption } if (ssrc) { // new style mapping elem.c('source', { ssrc: ssrc, xmlns: 'urn:xmpp:jingle:apps:rtp:ssma:0' }); // FIXME: group by ssrc and support multiple different ssrcs var ssrclines = SDPUtil.find_lines(this.media[i], 'a=ssrc:'); ssrclines.forEach(function(line) { idx = line.indexOf(' '); var linessrc = line.substr(0, idx).substr(7); if (linessrc != ssrc) { elem.up(); ssrc = linessrc; elem.c('source', { ssrc: ssrc, xmlns: 'urn:xmpp:jingle:apps:rtp:ssma:0' }); } var kv = line.substr(idx + 1); elem.c('parameter'); if (kv.indexOf(':') == -1) { elem.attrs({ name: kv }); } else { elem.attrs({ name: kv.split(':', 2)[0] }); elem.attrs({ value: kv.split(':', 2)[1] }); } elem.up(); }); elem.up(); // old proprietary mapping, to be removed at some point tmp = SDPUtil.parse_ssrc(this.media[i]); tmp.xmlns = 'http://estos.de/ns/ssrc'; tmp.ssrc = ssrc; elem.c('ssrc', tmp).up(); // ssrc is part of description // XEP-0339 handle ssrc-group attributes var ssrc_group_lines = SDPUtil.find_lines(this.media[i], 'a=ssrc-group:'); ssrc_group_lines.forEach(function(line) { idx = line.indexOf(' '); var semantics = line.substr(0, idx).substr(13); var ssrcs = line.substr(14 + semantics.length).split(' '); if (ssrcs.length != 0) { elem.c('ssrc-group', { semantics: semantics, xmlns: 'urn:xmpp:jingle:apps:rtp:ssma:0' }); ssrcs.forEach(function(ssrc) { elem.c('source', { ssrc: ssrc }) .up(); }); elem.up(); } }); } if (SDPUtil.find_line(this.media[i], 'a=rtcp-mux')) { elem.c('rtcp-mux').up(); } // XEP-0293 -- map a=rtcp-fb:* this.RtcpFbToJingle(i, elem, '*'); // XEP-0294 if (SDPUtil.find_line(this.media[i], 'a=extmap:')) { lines = SDPUtil.find_lines(this.media[i], 'a=extmap:'); for (j = 0; j < lines.length; j++) { tmp = SDPUtil.parse_extmap(lines[j]); elem.c('rtp-hdrext', { xmlns: 'urn:xmpp:jingle:apps:rtp:rtp-hdrext:0', uri: tmp.uri, id: tmp.value }); if (tmp.hasOwnProperty('direction')) { switch (tmp.direction) { case 'sendonly': elem.attrs({senders: 'responder'}); break; case 'recvonly': elem.attrs({senders: 'initiator'}); break; case 'sendrecv': elem.attrs({senders: 'both'}); break; case 'inactive': elem.attrs({senders: 'none'}); break; } } // TODO: handle params elem.up(); } } elem.up(); // end of description } // map ice-ufrag/pwd, dtls fingerprint, candidates this.TransportToJingle(i, elem); if (SDPUtil.find_line(this.media[i], 'a=sendrecv', this.session)) { elem.attrs({senders: 'both'}); } else if (SDPUtil.find_line(this.media[i], 'a=sendonly', this.session)) { elem.attrs({senders: 'initiator'}); } else if (SDPUtil.find_line(this.media[i], 'a=recvonly', this.session)) { elem.attrs({senders: 'responder'}); } else if (SDPUtil.find_line(this.media[i], 'a=inactive', this.session)) { elem.attrs({senders: 'none'}); } if (mline.port == '0') { // estos hack to reject an m-line elem.attrs({senders: 'rejected'}); } elem.up(); // end of content } elem.up(); return elem; }; SDP.prototype.TransportToJingle = function (mediaindex, elem) { var i = mediaindex; var tmp; var self = this; elem.c('transport'); // XEP-0343 DTLS/SCTP if (SDPUtil.find_line(this.media[mediaindex], 'a=sctpmap:').length) { var sctpmap = SDPUtil.find_line( this.media[i], 'a=sctpmap:', self.session); if (sctpmap) { var sctpAttrs = SDPUtil.parse_sctpmap(sctpmap); elem.c('sctpmap', { xmlns: 'urn:xmpp:jingle:transports:dtls-sctp:1', number: sctpAttrs[0], /* SCTP port */ protocol: sctpAttrs[1], /* protocol */ }); // Optional stream count attribute if (sctpAttrs.length > 2) elem.attrs({ streams: sctpAttrs[2]}); elem.up(); } } // XEP-0320 var fingerprints = SDPUtil.find_lines(this.media[mediaindex], 'a=fingerprint:', this.session); fingerprints.forEach(function(line) { tmp = SDPUtil.parse_fingerprint(line); tmp.xmlns = 'urn:xmpp:jingle:apps:dtls:0'; elem.c('fingerprint').t(tmp.fingerprint); delete tmp.fingerprint; line = SDPUtil.find_line(self.media[mediaindex], 'a=setup:', self.session); if (line) { tmp.setup = line.substr(8); } elem.attrs(tmp); elem.up(); // end of fingerprint }); tmp = SDPUtil.iceparams(this.media[mediaindex], this.session); if (tmp) { tmp.xmlns = 'urn:xmpp:jingle:transports:ice-udp:1'; elem.attrs(tmp); // XEP-0176 if (SDPUtil.find_line(this.media[mediaindex], 'a=candidate:', this.session)) { // add any a=candidate lines var lines = SDPUtil.find_lines(this.media[mediaindex], 'a=candidate:', this.session); lines.forEach(function (line) { elem.c('candidate', SDPUtil.candidateToJingle(line)).up(); }); } } elem.up(); // end of transport } SDP.prototype.RtcpFbToJingle = function (mediaindex, elem, payloadtype) { // XEP-0293 var lines = SDPUtil.find_lines(this.media[mediaindex], 'a=rtcp-fb:' + payloadtype); lines.forEach(function (line) { var tmp = SDPUtil.parse_rtcpfb(line); if (tmp.type == 'trr-int') { elem.c('rtcp-fb-trr-int', {xmlns: 'urn:xmpp:jingle:apps:rtp:rtcp-fb:0', value: tmp.params[0]}); elem.up(); } else { elem.c('rtcp-fb', {xmlns: 'urn:xmpp:jingle:apps:rtp:rtcp-fb:0', type: tmp.type}); if (tmp.params.length > 0) { elem.attrs({'subtype': tmp.params[0]}); } elem.up(); } }); }; SDP.prototype.RtcpFbFromJingle = function (elem, payloadtype) { // XEP-0293 var media = ''; var tmp = elem.find('>rtcp-fb-trr-int[xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0"]'); if (tmp.length) { media += 'a=rtcp-fb:' + '*' + ' ' + 'trr-int' + ' '; if (tmp.attr('value')) { media += tmp.attr('value'); } else { media += '0'; } media += '\r\n'; } tmp = elem.find('>rtcp-fb[xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0"]'); tmp.each(function () { media += 'a=rtcp-fb:' + payloadtype + ' ' + $(this).attr('type'); if ($(this).attr('subtype')) { media += ' ' + $(this).attr('subtype'); } media += '\r\n'; }); return media; }; // construct an SDP from a jingle stanza SDP.prototype.fromJingle = function (jingle) { var self = this; this.raw = 'v=0\r\n' + 'o=- ' + '1923518516' + ' 2 IN IP4 0.0.0.0\r\n' +// FIXME 's=-\r\n' + 't=0 0\r\n'; // http://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-04#section-8 if ($(jingle).find('>group[xmlns="urn:xmpp:jingle:apps:grouping:0"]').length) { $(jingle).find('>group[xmlns="urn:xmpp:jingle:apps:grouping:0"]').each(function (idx, group) { var contents = $(group).find('>content').map(function (idx, content) { return content.getAttribute('name'); }).get(); if (contents.length > 0) { self.raw += 'a=group:' + (group.getAttribute('semantics') || group.getAttribute('type')) + ' ' + contents.join(' ') + '\r\n'; } }); } else if ($(jingle).find('>group[xmlns="urn:ietf:rfc:5888"]').length) { // temporary namespace, not to be used. to be removed soon. $(jingle).find('>group[xmlns="urn:ietf:rfc:5888"]').each(function (idx, group) { var contents = $(group).find('>content').map(function (idx, content) { return content.getAttribute('name'); }).get(); if (group.getAttribute('type') !== null && contents.length > 0) { self.raw += 'a=group:' + group.getAttribute('type') + ' ' + contents.join(' ') + '\r\n'; } }); } else { // for backward compability, to be removed soon // assume all contents are in the same bundle group, can be improved upon later var bundle = $(jingle).find('>content').filter(function (idx, content) { //elem.c('bundle', {xmlns:'http://estos.de/ns/bundle'}); return $(content).find('>bundle').length > 0; }).map(function (idx, content) { return content.getAttribute('name'); }).get(); if (bundle.length) { this.raw += 'a=group:BUNDLE ' + bundle.join(' ') + '\r\n'; } } this.session = this.raw; jingle.find('>content').each(function () { var m = self.jingle2media($(this)); self.media.push(m); }); // reconstruct msid-semantic -- apparently not necessary /* var msid = SDPUtil.parse_ssrc(this.raw); if (msid.hasOwnProperty('mslabel')) { this.session += "a=msid-semantic: WMS " + msid.mslabel + "\r\n"; } */ this.raw = this.session + this.media.join(''); }; // translate a jingle content element into an an SDP media part SDP.prototype.jingle2media = function (content) { var media = '', desc = content.find('description'), ssrc = desc.attr('ssrc'), self = this, tmp; var sctp = content.find( '>transport>sctpmap[xmlns="urn:xmpp:jingle:transports:dtls-sctp:1"]'); tmp = { media: desc.attr('media') }; tmp.port = '1'; if (content.attr('senders') == 'rejected') { // estos hack to reject an m-line. tmp.port = '0'; } if (content.find('>transport>fingerprint').length || desc.find('encryption').length) { if (sctp.length) tmp.proto = 'DTLS/SCTP'; else tmp.proto = 'RTP/SAVPF'; } else { tmp.proto = 'RTP/AVPF'; } if (!sctp.length) { tmp.fmt = desc.find('payload-type').map( function () { return this.getAttribute('id'); }).get(); media += SDPUtil.build_mline(tmp) + '\r\n'; } else { media += 'm=application 1 DTLS/SCTP ' + sctp.attr('number') + '\r\n'; media += 'a=sctpmap:' + sctp.attr('number') + ' ' + sctp.attr('protocol'); var streamCount = sctp.attr('streams'); if (streamCount) media += ' ' + streamCount + '\r\n'; else media += '\r\n'; } media += 'c=IN IP4 0.0.0.0\r\n'; if (!sctp.length) media += 'a=rtcp:1 IN IP4 0.0.0.0\r\n'; //tmp = content.find('>transport[xmlns="urn:xmpp:jingle:transports:ice-udp:1"]'); tmp = content.find('>bundle>transport[xmlns="urn:xmpp:jingle:transports:ice-udp:1"]'); //console.log('transports: '+content.find('>transport[xmlns="urn:xmpp:jingle:transports:ice-udp:1"]').length); //console.log('bundle.transports: '+content.find('>bundle>transport[xmlns="urn:xmpp:jingle:transports:ice-udp:1"]').length); //console.log("tmp fingerprint: "+tmp.find('>fingerprint').innerHTML); if (tmp.length) { if (tmp.attr('ufrag')) { media += SDPUtil.build_iceufrag(tmp.attr('ufrag')) + '\r\n'; } if (tmp.attr('pwd')) { media += SDPUtil.build_icepwd(tmp.attr('pwd')) + '\r\n'; } tmp.find('>fingerprint').each(function () { // FIXME: check namespace at some point media += 'a=fingerprint:' + this.getAttribute('hash'); media += ' ' + $(this).text(); media += '\r\n'; //console.log("mline "+media); if (this.getAttribute('setup')) { media += 'a=setup:' + this.getAttribute('setup') + '\r\n'; } }); } switch (content.attr('senders')) { case 'initiator': media += 'a=sendonly\r\n'; break; case 'responder': media += 'a=recvonly\r\n'; break; case 'none': media += 'a=inactive\r\n'; break; case 'both': media += 'a=sendrecv\r\n'; break; } media += 'a=mid:' + content.attr('name') + '\r\n'; /*if (content.attr('name') == 'video') { media += 'a=x-google-flag:conference' + '\r\n'; }*/ // // see http://code.google.com/p/libjingle/issues/detail?id=309 -- no spec though // and http://mail.jabber.org/pipermail/jingle/2011-December/001761.html if (desc.find('rtcp-mux').length) { media += 'a=rtcp-mux\r\n'; } if (desc.find('encryption').length) { desc.find('encryption>crypto').each(function () { media += 'a=crypto:' + this.getAttribute('tag'); media += ' ' + this.getAttribute('crypto-suite'); media += ' ' + this.getAttribute('key-params'); if (this.getAttribute('session-params')) { media += ' ' + this.getAttribute('session-params'); } media += '\r\n'; }); } desc.find('payload-type').each(function () { media += SDPUtil.build_rtpmap(this) + '\r\n'; if ($(this).find('>parameter').length) { media += 'a=fmtp:' + this.getAttribute('id') + ' '; media += $(this).find('parameter').map(function () { return (this.getAttribute('name') ? (this.getAttribute('name') + '=') : '') + this.getAttribute('value'); }).get().join('; '); media += '\r\n'; } // xep-0293 media += self.RtcpFbFromJingle($(this), this.getAttribute('id')); }); // xep-0293 media += self.RtcpFbFromJingle(desc, '*'); // xep-0294 tmp = desc.find('>rtp-hdrext[xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0"]'); tmp.each(function () { media += 'a=extmap:' + this.getAttribute('id') + ' ' + this.getAttribute('uri') + '\r\n'; }); content.find('>bundle>transport[xmlns="urn:xmpp:jingle:transports:ice-udp:1"]>candidate').each(function () { media += SDPUtil.candidateFromJingle(this); }); // XEP-0339 handle ssrc-group attributes tmp = content.find('description>ssrc-group[xmlns="urn:xmpp:jingle:apps:rtp:ssma:0"]').each(function() { var semantics = this.getAttribute('semantics'); var ssrcs = $(this).find('>source').map(function() { return this.getAttribute('ssrc'); }).get(); if (ssrcs.length != 0) { media += 'a=ssrc-group:' + semantics + ' ' + ssrcs.join(' ') + '\r\n'; } }); tmp = content.find('description>source[xmlns="urn:xmpp:jingle:apps:rtp:ssma:0"]'); tmp.each(function () { var ssrc = this.getAttribute('ssrc'); $(this).find('>parameter').each(function () { media += 'a=ssrc:' + ssrc + ' ' + this.getAttribute('name'); if (this.getAttribute('value') && this.getAttribute('value').length) media += ':' + this.getAttribute('value'); media += '\r\n'; }); }); if (tmp.length === 0) { // fallback to proprietary mapping of a=ssrc lines tmp = content.find('description>ssrc[xmlns="http://estos.de/ns/ssrc"]'); if (tmp.length) { media += 'a=ssrc:' + ssrc + ' cname:' + tmp.attr('cname') + '\r\n'; media += 'a=ssrc:' + ssrc + ' msid:' + tmp.attr('msid') + '\r\n'; media += 'a=ssrc:' + ssrc + ' mslabel:' + tmp.attr('mslabel') + '\r\n'; media += 'a=ssrc:' + ssrc + ' label:' + tmp.attr('label') + '\r\n'; } } return media; }; synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe.jingle.sdp.util.js000066400000000000000000000334751420514467300267630ustar00rootroot00000000000000/** * Contains utility classes used in SDP class. * */ /** * Class holds a=ssrc lines and media type a=mid * @param ssrc synchronization source identifier number(a=ssrc lines from SDP) * @param type media type eg. "audio" or "video"(a=mid frm SDP) * @constructor */ function ChannelSsrc(ssrc, type) { this.ssrc = ssrc; this.type = type; this.lines = []; } /** * Class holds a=ssrc-group: lines * @param semantics * @param ssrcs * @constructor */ function ChannelSsrcGroup(semantics, ssrcs, line) { this.semantics = semantics; this.ssrcs = ssrcs; } /** * Helper class represents media channel. Is a container for ChannelSsrc, holds channel idx and media type. * @param channelNumber channel idx in SDP media array. * @param mediaType media type(a=mid) * @constructor */ function MediaChannel(channelNumber, mediaType) { /** * SDP channel number * @type {*} */ this.chNumber = channelNumber; /** * Channel media type(a=mid) * @type {*} */ this.mediaType = mediaType; /** * The maps of ssrc numbers to ChannelSsrc objects. */ this.ssrcs = {}; /** * The array of ChannelSsrcGroup objects. * @type {Array} */ this.ssrcGroups = []; } SDPUtil = { iceparams: function (mediadesc, sessiondesc) { var data = null; if (SDPUtil.find_line(mediadesc, 'a=ice-ufrag:', sessiondesc) && SDPUtil.find_line(mediadesc, 'a=ice-pwd:', sessiondesc)) { data = { ufrag: SDPUtil.parse_iceufrag(SDPUtil.find_line(mediadesc, 'a=ice-ufrag:', sessiondesc)), pwd: SDPUtil.parse_icepwd(SDPUtil.find_line(mediadesc, 'a=ice-pwd:', sessiondesc)) }; } return data; }, parse_iceufrag: function (line) { return line.substring(12); }, build_iceufrag: function (frag) { return 'a=ice-ufrag:' + frag; }, parse_icepwd: function (line) { return line.substring(10); }, build_icepwd: function (pwd) { return 'a=ice-pwd:' + pwd; }, parse_mid: function (line) { return line.substring(6); }, parse_mline: function (line) { var parts = line.substring(2).split(' '), data = {}; data.media = parts.shift(); data.port = parts.shift(); data.proto = parts.shift(); if (parts[parts.length - 1] === '') { // trailing whitespace parts.pop(); } data.fmt = parts; return data; }, build_mline: function (mline) { return 'm=' + mline.media + ' ' + mline.port + ' ' + mline.proto + ' ' + mline.fmt.join(' '); }, parse_rtpmap: function (line) { var parts = line.substring(9).split(' '), data = {}; data.id = parts.shift(); parts = parts[0].split('/'); data.name = parts.shift(); data.clockrate = parts.shift(); data.channels = parts.length ? parts.shift() : '1'; return data; }, /** * Parses SDP line "a=sctpmap:..." and extracts SCTP port from it. * @param line eg. "a=sctpmap:5000 webrtc-datachannel" * @returns [SCTP port number, protocol, streams] */ parse_sctpmap: function (line) { var parts = line.substring(10).split(' '); var sctpPort = parts[0]; var protocol = parts[1]; // Stream count is optional var streamCount = parts.length > 2 ? parts[2] : null; return [sctpPort, protocol, streamCount];// SCTP port }, build_rtpmap: function (el) { var line = 'a=rtpmap:' + el.getAttribute('id') + ' ' + el.getAttribute('name') + '/' + el.getAttribute('clockrate'); if (el.getAttribute('channels') && el.getAttribute('channels') != '1') { line += '/' + el.getAttribute('channels'); } return line; }, parse_crypto: function (line) { var parts = line.substring(9).split(' '), data = {}; data.tag = parts.shift(); data['crypto-suite'] = parts.shift(); data['key-params'] = parts.shift(); if (parts.length) { data['session-params'] = parts.join(' '); } return data; }, parse_fingerprint: function (line) { // RFC 4572 var parts = line.substring(14).split(' '), data = {}; data.hash = parts.shift(); data.fingerprint = parts.shift(); // TODO assert that fingerprint satisfies 2UHEX *(":" 2UHEX) ? return data; }, parse_fmtp: function (line) { var parts = line.split(' '), i, key, value, data = []; parts.shift(); parts = parts.join(' ').split(';'); for (i = 0; i < parts.length; i++) { key = parts[i].split('=')[0]; while (key.length && key[0] == ' ') { key = key.substring(1); } value = parts[i].split('=')[1]; if (key && value) { data.push({name: key, value: value}); } else if (key) { // rfc 4733 (DTMF) style stuff data.push({name: '', value: key}); } } return data; }, parse_icecandidate: function (line) { var candidate = {}, elems = line.split(' '); candidate.foundation = elems[0].substring(12); candidate.component = elems[1]; candidate.protocol = elems[2].toLowerCase(); candidate.priority = elems[3]; candidate.ip = elems[4]; candidate.port = elems[5]; // elems[6] => "typ" candidate.type = elems[7]; candidate.generation = 0; // default value, may be overwritten below for (var i = 8; i < elems.length; i += 2) { switch (elems[i]) { case 'raddr': candidate['rel-addr'] = elems[i + 1]; break; case 'rport': candidate['rel-port'] = elems[i + 1]; break; case 'generation': candidate.generation = elems[i + 1]; break; case 'tcptype': candidate.tcptype = elems[i + 1]; break; default: // TODO console.log('parse_icecandidate not translating "' + elems[i] + '" = "' + elems[i + 1] + '"'); } } candidate.network = '1'; candidate.id = Math.random().toString(36).substr(2, 10); // not applicable to SDP -- FIXME: should be unique, not just random return candidate; }, build_icecandidate: function (cand) { var line = ['a=candidate:' + cand.foundation, cand.component, cand.protocol, cand.priority, cand.ip, cand.port, 'typ', cand.type].join(' '); line += ' '; switch (cand.type) { case 'srflx': case 'prflx': case 'relay': if (cand.hasOwnAttribute('rel-addr') && cand.hasOwnAttribute('rel-port')) { line += 'raddr'; line += ' '; line += cand['rel-addr']; line += ' '; line += 'rport'; line += ' '; line += cand['rel-port']; line += ' '; } break; } if (cand.hasOwnAttribute('tcptype')) { line += 'tcptype'; line += ' '; line += cand.tcptype; line += ' '; } line += 'generation'; line += ' '; line += cand.hasOwnAttribute('generation') ? cand.generation : '0'; return line; }, parse_ssrc: function (desc) { // proprietary mapping of a=ssrc lines // TODO: see "Jingle RTP Source Description" by Juberti and P. Thatcher on google docs // and parse according to that var lines = desc.split('\r\n'), data = {}; for (var i = 0; i < lines.length; i++) { if (lines[i].substring(0, 7) == 'a=ssrc:') { var idx = lines[i].indexOf(' '); data[lines[i].substr(idx + 1).split(':', 2)[0]] = lines[i].substr(idx + 1).split(':', 2)[1]; } } return data; }, parse_rtcpfb: function (line) { var parts = line.substr(10).split(' '); var data = {}; data.pt = parts.shift(); data.type = parts.shift(); data.params = parts; return data; }, parse_extmap: function (line) { var parts = line.substr(9).split(' '); var data = {}; data.value = parts.shift(); if (data.value.indexOf('/') != -1) { data.direction = data.value.substr(data.value.indexOf('/') + 1); data.value = data.value.substr(0, data.value.indexOf('/')); } else { data.direction = 'both'; } data.uri = parts.shift(); data.params = parts; return data; }, find_line: function (haystack, needle, sessionpart) { var lines = haystack.split('\r\n'); for (var i = 0; i < lines.length; i++) { if (lines[i].substring(0, needle.length) == needle) { return lines[i]; } } if (!sessionpart) { return false; } // search session part lines = sessionpart.split('\r\n'); for (var j = 0; j < lines.length; j++) { if (lines[j].substring(0, needle.length) == needle) { return lines[j]; } } return false; }, find_lines: function (haystack, needle, sessionpart) { var lines = haystack.split('\r\n'), needles = []; for (var i = 0; i < lines.length; i++) { if (lines[i].substring(0, needle.length) == needle) needles.push(lines[i]); } if (needles.length || !sessionpart) { return needles; } // search session part lines = sessionpart.split('\r\n'); for (var j = 0; j < lines.length; j++) { if (lines[j].substring(0, needle.length) == needle) { needles.push(lines[j]); } } return needles; }, candidateToJingle: function (line) { // a=candidate:2979166662 1 udp 2113937151 192.168.2.100 57698 typ host generation 0 // if (line.indexOf('candidate:') === 0) { line = 'a=' + line; } else if (line.substring(0, 12) != 'a=candidate:') { console.log('parseCandidate called with a line that is not a candidate line'); console.log(line); return null; } if (line.substring(line.length - 2) == '\r\n') // chomp it line = line.substring(0, line.length - 2); var candidate = {}, elems = line.split(' '), i; if (elems[6] != 'typ') { console.log('did not find typ in the right place'); console.log(line); return null; } candidate.foundation = elems[0].substring(12); candidate.component = elems[1]; candidate.protocol = elems[2].toLowerCase(); candidate.priority = elems[3]; candidate.ip = elems[4]; candidate.port = elems[5]; // elems[6] => "typ" candidate.type = elems[7]; candidate.generation = '0'; // default, may be overwritten below for (i = 8; i < elems.length; i += 2) { switch (elems[i]) { case 'raddr': candidate['rel-addr'] = elems[i + 1]; break; case 'rport': candidate['rel-port'] = elems[i + 1]; break; case 'generation': candidate.generation = elems[i + 1]; break; case 'tcptype': candidate.tcptype = elems[i + 1]; break; default: // TODO console.log('not translating "' + elems[i] + '" = "' + elems[i + 1] + '"'); } } candidate.network = '1'; candidate.id = Math.random().toString(36).substr(2, 10); // not applicable to SDP -- FIXME: should be unique, not just random return candidate; }, candidateFromJingle: function (cand) { var line = 'a=candidate:'; line += cand.getAttribute('foundation'); line += ' '; line += cand.getAttribute('component'); line += ' '; line += cand.getAttribute('protocol'); //.toUpperCase(); // chrome M23 doesn't like this line += ' '; line += cand.getAttribute('priority'); line += ' '; line += cand.getAttribute('ip'); line += ' '; line += cand.getAttribute('port'); line += ' '; line += 'typ'; line += ' ' + cand.getAttribute('type'); line += ' '; switch (cand.getAttribute('type')) { case 'srflx': case 'prflx': case 'relay': if (cand.getAttribute('rel-addr') && cand.getAttribute('rel-port')) { line += 'raddr'; line += ' '; line += cand.getAttribute('rel-addr'); line += ' '; line += 'rport'; line += ' '; line += cand.getAttribute('rel-port'); line += ' '; } break; } if (cand.getAttribute('protocol').toLowerCase() == 'tcp') { line += 'tcptype'; line += ' '; line += cand.getAttribute('tcptype'); line += ' '; } line += 'generation'; line += ' '; line += cand.getAttribute('generation') || '0'; return line + '\r\n'; } }; exports.SDPUtil = SDPUtil; synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe/000077500000000000000000000000001420514467300234015ustar00rootroot00000000000000synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe/XMLHttpRequest.js000066400000000000000000000131121420514467300266060ustar00rootroot00000000000000/** * Wrapper for built-in http.js to emulate the browser XMLHttpRequest object. * * This can be used with JS designed for browsers to improve reuse of code and * allow the use of existing libraries. * * Usage: include("XMLHttpRequest.js") and use XMLHttpRequest per W3C specs. * * @todo SSL Support * @author Dan DeFelippi * @license MIT */ var Url = require("url") ,sys = require("util"); exports.XMLHttpRequest = function() { /** * Private variables */ var self = this; var http = require('http'); var https = require('https'); // Holds http.js objects var client; var request; var response; // Request settings var settings = {}; // Set some default headers var defaultHeaders = { "User-Agent": "node.js", "Accept": "*/*", }; var headers = defaultHeaders; /** * Constants */ this.UNSENT = 0; this.OPENED = 1; this.HEADERS_RECEIVED = 2; this.LOADING = 3; this.DONE = 4; /** * Public vars */ // Current state this.readyState = this.UNSENT; // default ready state change handler in case one is not set or is set late this.onreadystatechange = function() {}; // Result & response this.responseText = ""; this.responseXML = ""; this.status = null; this.statusText = null; /** * Open the connection. Currently supports local server requests. * * @param string method Connection method (eg GET, POST) * @param string url URL for the connection. * @param boolean async Asynchronous connection. Default is true. * @param string user Username for basic authentication (optional) * @param string password Password for basic authentication (optional) */ this.open = function(method, url, async, user, password) { settings = { "method": method, "url": url, "async": async || null, "user": user || null, "password": password || null }; this.abort(); setState(this.OPENED); }; /** * Sets a header for the request. * * @param string header Header name * @param string value Header value */ this.setRequestHeader = function(header, value) { headers[header] = value; }; /** * Gets a header from the server response. * * @param string header Name of header to get. * @return string Text of the header or null if it doesn't exist. */ this.getResponseHeader = function(header) { if (this.readyState > this.OPENED && response.headers[header]) { return header + ": " + response.headers[header]; } return null; }; /** * Gets all the response headers. * * @return string */ this.getAllResponseHeaders = function() { if (this.readyState < this.HEADERS_RECEIVED) { throw "INVALID_STATE_ERR: Headers have not been received."; } var result = ""; for (var i in response.headers) { result += i + ": " + response.headers[i] + "\r\n"; } return result.substr(0, result.length - 2); }; /** * Sends the request to the server. * * @param string data Optional data to send as request body. */ this.send = function(data) { if (this.readyState != this.OPENED) { throw "INVALID_STATE_ERR: connection must be opened before send() is called"; } var ssl = false; var url = Url.parse(settings.url); // Determine the server switch (url.protocol) { case 'https:': ssl = true; // SSL & non-SSL both need host, no break here. case 'http:': var host = url.hostname; break; case undefined: case '': var host = "localhost"; break; default: throw "Protocol not supported."; } // Default to port 80. If accessing localhost on another port be sure // to use http://localhost:port/path var port = url.port || (ssl ? 443 : 80); // Add query string if one is used var uri = url.pathname + (url.search ? url.search : ''); // Set the Host header or the server may reject the request this.setRequestHeader("Host", host); // Set content length header if (settings.method == "GET" || settings.method == "HEAD") { data = null; } else if (data) { this.setRequestHeader("Content-Length", Buffer.byteLength(data)); if (!headers["Content-Type"]) { this.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); } } // Use the proper protocol var doRequest = ssl ? https.request : http.request; var options = { host: host, port: port, path: uri, method: settings.method, headers: headers, agent: false }; var req = doRequest(options, function(res) { response = res; response.setEncoding("utf8"); setState(self.HEADERS_RECEIVED); self.status = response.statusCode; response.on('data', function(chunk) { // Make sure there's some data if (chunk) { self.responseText += chunk; } setState(self.LOADING); }); response.on('end', function() { setState(self.DONE); }); response.on('error', function() { self.handleError(error); }); }).on('error', function(error) { self.handleError(error); }); req.setHeader("Connection", "Close"); // Node 0.4 and later won't accept empty data. Make sure it's needed. if (data) { req.write(data); } req.end(); }; this.handleError = function(error) { this.status = 503; this.statusText = error; this.responseText = error.stack; setState(this.DONE); }; /** * Aborts a request. */ this.abort = function() { headers = defaultHeaders; this.readyState = this.UNSENT; this.responseText = ""; this.responseXML = ""; }; /** * Changes readyState and calls onreadystatechange. * * @param int state New state */ var setState = function(state) { self.readyState = state; self.onreadystatechange(); } }; synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe/base64.js000066400000000000000000000050441420514467300250260ustar00rootroot00000000000000// This code was written by Tyler Akins and has been placed in the // public domain. It would be nice if you left this header intact. // Base64 code from Tyler Akins -- http://rumkin.com var Base64 = (function () { var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var obj = { /** * Encodes a string in base64 * @param {String} input The string to encode in base64. */ encode: function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); } while (i < input.length); return output; }, /** * Decodes a base64 string. * @param {String} input The string to decode. */ decode: function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); do { enc1 = keyStr.indexOf(input.charAt(i++)); enc2 = keyStr.indexOf(input.charAt(i++)); enc3 = keyStr.indexOf(input.charAt(i++)); enc4 = keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } while (i < input.length); return output; } }; return obj; })(); // Nodify exports.Base64 = Base64; synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe/md5.js000066400000000000000000000241641420514467300244330ustar00rootroot00000000000000/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for more info. */ var MD5 = (function () { /* * Configurable variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. */ var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ /* * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ var safe_add = function (x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); }; /* * Bitwise rotate a 32-bit number to the left. */ var bit_rol = function (num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); }; /* * Convert a string to an array of little-endian words * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. */ var str2binl = function (str) { var bin = []; var mask = (1 << chrsz) - 1; for(var i = 0; i < str.length * chrsz; i += chrsz) { bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); } return bin; }; /* * Convert an array of little-endian words to a string */ var binl2str = function (bin) { var str = ""; var mask = (1 << chrsz) - 1; for(var i = 0; i < bin.length * 32; i += chrsz) { str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); } return str; }; /* * Convert an array of little-endian words to a hex string. */ var binl2hex = function (binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); } return str; }; /* * Convert an array of little-endian words to a base-64 string */ var binl2b64 = function (binarray) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; var triplet, j; for(var i = 0; i < binarray.length * 4; i += 3) { triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); for(j = 0; j < 4; j++) { if(i * 8 + j * 6 > binarray.length * 32) { str += b64pad; } else { str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); } } } return str; }; /* * These functions implement the four basic operations the algorithm uses. */ var md5_cmn = function (q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q),safe_add(x, t)), s),b); }; var md5_ff = function (a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); }; var md5_gg = function (a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); }; var md5_hh = function (a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); }; var md5_ii = function (a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); }; /* * Calculate the MD5 of an array of little-endian words, and a bit length */ var core_md5 = function (x, len) { /* append padding */ x[len >> 5] |= 0x80 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var olda, oldb, oldc, oldd; for (var i = 0; i < x.length; i += 16) { olda = a; oldb = b; oldc = c; oldd = d; a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } return [a, b, c, d]; }; /* * Calculate the HMAC-MD5, of a key and some data */ var core_hmac_md5 = function (key, data) { var bkey = str2binl(key); if(bkey.length > 16) { bkey = core_md5(bkey, key.length * chrsz); } var ipad = new Array(16), opad = new Array(16); for(var i = 0; i < 16; i++) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5C5C5C5C; } var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); return core_md5(opad.concat(hash), 512 + 128); }; var obj = { /* * These are the functions you'll usually want to call. * They take string arguments and return either hex or base-64 encoded * strings. */ hexdigest: function (s) { return binl2hex(core_md5(str2binl(s), s.length * chrsz)); }, b64digest: function (s) { return binl2b64(core_md5(str2binl(s), s.length * chrsz)); }, hash: function (s) { return binl2str(core_md5(str2binl(s), s.length * chrsz)); }, hmac_hexdigest: function (key, data) { return binl2hex(core_hmac_md5(key, data)); }, hmac_b64digest: function (key, data) { return binl2b64(core_hmac_md5(key, data)); }, hmac_hash: function (key, data) { return binl2str(core_hmac_md5(key, data)); }, /* * Perform a simple self-test to see if the VM is working */ test: function () { return MD5.hexdigest("abc") === "900150983cd24fb0d6963f7d28e17f72"; } }; return obj; })(); // Nodify exports.MD5 = MD5; synapse-1.53.0/contrib/jitsimeetbridge/unjingle/strophe/strophe.js000066400000000000000000003206151420514467300254320ustar00rootroot00000000000000/* This program is distributed under the terms of the MIT license. Please see the LICENSE file for details. Copyright 2006-2008, OGG, LLC */ /* jslint configuration: */ /*global document, window, setTimeout, clearTimeout, console, XMLHttpRequest, ActiveXObject, Base64, MD5, Strophe, $build, $msg, $iq, $pres */ /** File: strophe.js * A JavaScript library for XMPP BOSH. * * This is the JavaScript version of the Strophe library. Since JavaScript * has no facilities for persistent TCP connections, this library uses * Bidirectional-streams Over Synchronous HTTP (BOSH) to emulate * a persistent, stateful, two-way connection to an XMPP server. More * information on BOSH can be found in XEP 124. */ /** PrivateFunction: Function.prototype.bind * Bind a function to an instance. * * This Function object extension method creates a bound method similar * to those in Python. This means that the 'this' object will point * to the instance you want. See *
MDC's bind() documentation and * Bound Functions and Function Imports in JavaScript * for a complete explanation. * * This extension already exists in some browsers (namely, Firefox 3), but * we provide it to support those that don't. * * Parameters: * (Object) obj - The object that will become 'this' in the bound function. * (Object) argN - An option argument that will be prepended to the * arguments given for the function call * * Returns: * The bound function. */ /* Make it work on node.js: Nodify * * Steps: * 1. Create the global objects: window, document, Base64, MD5 and XMLHttpRequest * 2. Use the node-XMLHttpRequest module. * 3. Use jsdom for the document object - since it supports DOM functions. * 4. Replace all calls to childNodes with _childNodes (since the former doesn't * seem to work on jsdom). * 5. While getting the response from XMLHttpRequest, manually convert the text * data to XML. * 6. All calls to nodeName should replaced by nodeName.toLowerCase() since jsdom * seems to always convert node names to upper case. * */ var XMLHttpRequest = require('./XMLHttpRequest.js').XMLHttpRequest; var Base64 = require('./base64.js').Base64; var MD5 = require('./md5.js').MD5; var jsdom = require("jsdom").jsdom; document = jsdom(""), window = { XMLHttpRequest: XMLHttpRequest, Base64: Base64, MD5: MD5 }; exports.Strophe = window; if (!Function.prototype.bind) { Function.prototype.bind = function (obj /*, arg1, arg2, ... */) { var func = this; var _slice = Array.prototype.slice; var _concat = Array.prototype.concat; var _args = _slice.call(arguments, 1); return function () { return func.apply(obj ? obj : this, _concat.call(_args, _slice.call(arguments, 0))); }; }; } /** PrivateFunction: Array.prototype.indexOf * Return the index of an object in an array. * * This function is not supplied by some JavaScript implementations, so * we provide it if it is missing. This code is from: * http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference:Objects:Array:indexOf * * Parameters: * (Object) elt - The object to look for. * (Integer) from - The index from which to start looking. (optional). * * Returns: * The index of elt in the array or -1 if not found. */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) { from += len; } for (; from < len; from++) { if (from in this && this[from] === elt) { return from; } } return -1; }; } /* All of the Strophe globals are defined in this special function below so * that references to the globals become closures. This will ensure that * on page reload, these references will still be available to callbacks * that are still executing. */ (function (callback) { var Strophe; /** Function: $build * Create a Strophe.Builder. * This is an alias for 'new Strophe.Builder(name, attrs)'. * * Parameters: * (String) name - The root element name. * (Object) attrs - The attributes for the root element in object notation. * * Returns: * A new Strophe.Builder object. */ function $build(name, attrs) { return new Strophe.Builder(name, attrs); } /** Function: $msg * Create a Strophe.Builder with a element as the root. * * Parmaeters: * (Object) attrs - The element attributes in object notation. * * Returns: * A new Strophe.Builder object. */ function $msg(attrs) { return new Strophe.Builder("message", attrs); } /** Function: $iq * Create a Strophe.Builder with an element as the root. * * Parameters: * (Object) attrs - The element attributes in object notation. * * Returns: * A new Strophe.Builder object. */ function $iq(attrs) { return new Strophe.Builder("iq", attrs); } /** Function: $pres * Create a Strophe.Builder with a element as the root. * * Parameters: * (Object) attrs - The element attributes in object notation. * * Returns: * A new Strophe.Builder object. */ function $pres(attrs) { return new Strophe.Builder("presence", attrs); } /** Class: Strophe * An object container for all Strophe library functions. * * This class is just a container for all the objects and constants * used in the library. It is not meant to be instantiated, but to * provide a namespace for library objects, constants, and functions. */ Strophe = { /** Constant: VERSION * The version of the Strophe library. Unreleased builds will have * a version of head-HASH where HASH is a partial revision. */ VERSION: "@VERSION@", /** Constants: XMPP Namespace Constants * Common namespace constants from the XMPP RFCs and XEPs. * * NS.HTTPBIND - HTTP BIND namespace from XEP 124. * NS.BOSH - BOSH namespace from XEP 206. * NS.CLIENT - Main XMPP client namespace. * NS.AUTH - Legacy authentication namespace. * NS.ROSTER - Roster operations namespace. * NS.PROFILE - Profile namespace. * NS.DISCO_INFO - Service discovery info namespace from XEP 30. * NS.DISCO_ITEMS - Service discovery items namespace from XEP 30. * NS.MUC - Multi-User Chat namespace from XEP 45. * NS.SASL - XMPP SASL namespace from RFC 3920. * NS.STREAM - XMPP Streams namespace from RFC 3920. * NS.BIND - XMPP Binding namespace from RFC 3920. * NS.SESSION - XMPP Session namespace from RFC 3920. */ NS: { HTTPBIND: "http://jabber.org/protocol/httpbind", BOSH: "urn:xmpp:xbosh", CLIENT: "jabber:client", AUTH: "jabber:iq:auth", ROSTER: "jabber:iq:roster", PROFILE: "jabber:iq:profile", DISCO_INFO: "http://jabber.org/protocol/disco#info", DISCO_ITEMS: "http://jabber.org/protocol/disco#items", MUC: "http://jabber.org/protocol/muc", SASL: "urn:ietf:params:xml:ns:xmpp-sasl", STREAM: "http://etherx.jabber.org/streams", BIND: "urn:ietf:params:xml:ns:xmpp-bind", SESSION: "urn:ietf:params:xml:ns:xmpp-session", VERSION: "jabber:iq:version", STANZAS: "urn:ietf:params:xml:ns:xmpp-stanzas" }, /** Function: addNamespace * This function is used to extend the current namespaces in * Strophe.NS. It takes a key and a value with the key being the * name of the new namespace, with its actual value. * For example: * Strophe.addNamespace('PUBSUB', "http://jabber.org/protocol/pubsub"); * * Parameters: * (String) name - The name under which the namespace will be * referenced under Strophe.NS * (String) value - The actual namespace. */ addNamespace: function (name, value) { Strophe.NS[name] = value; }, /** Constants: Connection Status Constants * Connection status constants for use by the connection handler * callback. * * Status.ERROR - An error has occurred * Status.CONNECTING - The connection is currently being made * Status.CONNFAIL - The connection attempt failed * Status.AUTHENTICATING - The connection is authenticating * Status.AUTHFAIL - The authentication attempt failed * Status.CONNECTED - The connection has succeeded * Status.DISCONNECTED - The connection has been terminated * Status.DISCONNECTING - The connection is currently being terminated * Status.ATTACHED - The connection has been attached */ Status: { ERROR: 0, CONNECTING: 1, CONNFAIL: 2, AUTHENTICATING: 3, AUTHFAIL: 4, CONNECTED: 5, DISCONNECTED: 6, DISCONNECTING: 7, ATTACHED: 8 }, /** Constants: Log Level Constants * Logging level indicators. * * LogLevel.DEBUG - Debug output * LogLevel.INFO - Informational output * LogLevel.WARN - Warnings * LogLevel.ERROR - Errors * LogLevel.FATAL - Fatal errors */ LogLevel: { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, FATAL: 4 }, /** PrivateConstants: DOM Element Type Constants * DOM element types. * * ElementType.NORMAL - Normal element. * ElementType.TEXT - Text data element. */ ElementType: { NORMAL: 1, TEXT: 3 }, /** PrivateConstants: Timeout Values * Timeout values for error states. These values are in seconds. * These should not be changed unless you know exactly what you are * doing. * * TIMEOUT - Timeout multiplier. A waiting request will be considered * failed after Math.floor(TIMEOUT * wait) seconds have elapsed. * This defaults to 1.1, and with default wait, 66 seconds. * SECONDARY_TIMEOUT - Secondary timeout multiplier. In cases where * Strophe can detect early failure, it will consider the request * failed if it doesn't return after * Math.floor(SECONDARY_TIMEOUT * wait) seconds have elapsed. * This defaults to 0.1, and with default wait, 6 seconds. */ TIMEOUT: 1.1, SECONDARY_TIMEOUT: 0.1, /** Function: forEachChild * Map a function over some or all child elements of a given element. * * This is a small convenience function for mapping a function over * some or all of the children of an element. If elemName is null, all * children will be passed to the function, otherwise only children * whose tag names match elemName will be passed. * * Parameters: * (XMLElement) elem - The element to operate on. * (String) elemName - The child element tag name filter. * (Function) func - The function to apply to each child. This * function should take a single argument, a DOM element. */ forEachChild: function (elem, elemName, func) { var i, childNode; for (i = 0; i < elem._childNodes.length; i++) { childNode = elem._childNodes[i]; if (childNode.nodeType == Strophe.ElementType.NORMAL && (!elemName || this.isTagEqual(childNode, elemName))) { func(childNode); } } }, /** Function: isTagEqual * Compare an element's tag name with a string. * * This function is case insensitive. * * Parameters: * (XMLElement) el - A DOM element. * (String) name - The element name. * * Returns: * true if the element's tag name matches _el_, and false * otherwise. */ isTagEqual: function (el, name) { return el.tagName.toLowerCase() == name.toLowerCase(); }, /** PrivateVariable: _xmlGenerator * _Private_ variable that caches a DOM document to * generate elements. */ _xmlGenerator: null, /** PrivateFunction: _makeGenerator * _Private_ function that creates a dummy XML DOM document to serve as * an element and text node generator. */ _makeGenerator: function () { var doc; if (window.ActiveXObject) { doc = this._getIEXmlDom(); doc.appendChild(doc.createElement('strophe')); } else { doc = document.implementation .createDocument('jabber:client', 'strophe', null); } return doc; }, /** Function: xmlGenerator * Get the DOM document to generate elements. * * Returns: * The currently used DOM document. */ xmlGenerator: function () { if (!Strophe._xmlGenerator) { Strophe._xmlGenerator = Strophe._makeGenerator(); } return Strophe._xmlGenerator; }, /** PrivateFunction: _getIEXmlDom * Gets IE xml doc object * * Returns: * A Microsoft XML DOM Object * See Also: * http://msdn.microsoft.com/en-us/library/ms757837%28VS.85%29.aspx */ _getIEXmlDom : function() { var doc = null; var docStrings = [ "Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM" ]; for (var d = 0; d < docStrings.length; d++) { if (doc === null) { try { doc = new ActiveXObject(docStrings[d]); } catch (e) { doc = null; } } else { break; } } return doc; }, /** Function: xmlElement * Create an XML DOM element. * * This function creates an XML DOM element correctly across all * implementations. Note that these are not HTML DOM elements, which * aren't appropriate for XMPP stanzas. * * Parameters: * (String) name - The name for the element. * (Array|Object) attrs - An optional array or object containing * key/value pairs to use as element attributes. The object should * be in the format {'key': 'value'} or {key: 'value'}. The array * should have the format [['key1', 'value1'], ['key2', 'value2']]. * (String) text - The text child data for the element. * * Returns: * A new XML DOM element. */ xmlElement: function (name) { if (!name) { return null; } var node = Strophe.xmlGenerator().createElement(name); // FIXME: this should throw errors if args are the wrong type or // there are more than two optional args var a, i, k; for (a = 1; a < arguments.length; a++) { if (!arguments[a]) { continue; } if (typeof(arguments[a]) == "string" || typeof(arguments[a]) == "number") { node.appendChild(Strophe.xmlTextNode(arguments[a])); } else if (typeof(arguments[a]) == "object" && typeof(arguments[a].sort) == "function") { for (i = 0; i < arguments[a].length; i++) { if (typeof(arguments[a][i]) == "object" && typeof(arguments[a][i].sort) == "function") { node.setAttribute(arguments[a][i][0], arguments[a][i][1]); } } } else if (typeof(arguments[a]) == "object") { for (k in arguments[a]) { if (arguments[a].hasOwnProperty(k)) { node.setAttribute(k, arguments[a][k]); } } } } return node; }, /* Function: xmlescape * Excapes invalid xml characters. * * Parameters: * (String) text - text to escape. * * Returns: * Escaped text. */ xmlescape: function(text) { text = text.replace(/\&/g, "&"); text = text.replace(//g, ">"); return text; }, /** Function: xmlTextNode * Creates an XML DOM text node. * * Provides a cross implementation version of document.createTextNode. * * Parameters: * (String) text - The content of the text node. * * Returns: * A new XML DOM text node. */ xmlTextNode: function (text) { //ensure text is escaped text = Strophe.xmlescape(text); return Strophe.xmlGenerator().createTextNode(text); }, /** Function: getText * Get the concatenation of all text children of an element. * * Parameters: * (XMLElement) elem - A DOM element. * * Returns: * A String with the concatenated text of all text element children. */ getText: function (elem) { if (!elem) { return null; } var str = ""; if (elem._childNodes.length === 0 && elem.nodeType == Strophe.ElementType.TEXT) { str += elem.nodeValue; } for (var i = 0; i < elem._childNodes.length; i++) { if (elem._childNodes[i].nodeType == Strophe.ElementType.TEXT) { str += elem._childNodes[i].nodeValue; } } return str; }, /** Function: copyElement * Copy an XML DOM element. * * This function copies a DOM element and all its descendants and returns * the new copy. * * Parameters: * (XMLElement) elem - A DOM element. * * Returns: * A new, copied DOM element tree. */ copyElement: function (elem) { var i, el; if (elem.nodeType == Strophe.ElementType.NORMAL) { el = Strophe.xmlElement(elem.tagName); for (i = 0; i < elem.attributes.length; i++) { el.setAttribute(elem.attributes[i].nodeName.toLowerCase(), elem.attributes[i].value); } for (i = 0; i < elem._childNodes.length; i++) { el.appendChild(Strophe.copyElement(elem._childNodes[i])); } } else if (elem.nodeType == Strophe.ElementType.TEXT) { el = Strophe.xmlTextNode(elem.nodeValue); } return el; }, /** Function: escapeNode * Escape the node part (also called local part) of a JID. * * Parameters: * (String) node - A node (or local part). * * Returns: * An escaped node (or local part). */ escapeNode: function (node) { return node.replace(/^\s+|\s+$/g, '') .replace(/\\/g, "\\5c") .replace(/ /g, "\\20") .replace(/\"/g, "\\22") .replace(/\&/g, "\\26") .replace(/\'/g, "\\27") .replace(/\//g, "\\2f") .replace(/:/g, "\\3a") .replace(//g, "\\3e") .replace(/@/g, "\\40"); }, /** Function: unescapeNode * Unescape a node part (also called local part) of a JID. * * Parameters: * (String) node - A node (or local part). * * Returns: * An unescaped node (or local part). */ unescapeNode: function (node) { return node.replace(/\\20/g, " ") .replace(/\\22/g, '"') .replace(/\\26/g, "&") .replace(/\\27/g, "'") .replace(/\\2f/g, "/") .replace(/\\3a/g, ":") .replace(/\\3c/g, "<") .replace(/\\3e/g, ">") .replace(/\\40/g, "@") .replace(/\\5c/g, "\\"); }, /** Function: getNodeFromJid * Get the node portion of a JID String. * * Parameters: * (String) jid - A JID. * * Returns: * A String containing the node. */ getNodeFromJid: function (jid) { if (jid.indexOf("@") < 0) { return null; } return jid.split("@")[0]; }, /** Function: getDomainFromJid * Get the domain portion of a JID String. * * Parameters: * (String) jid - A JID. * * Returns: * A String containing the domain. */ getDomainFromJid: function (jid) { var bare = Strophe.getBareJidFromJid(jid); if (bare.indexOf("@") < 0) { return bare; } else { var parts = bare.split("@"); parts.splice(0, 1); return parts.join('@'); } }, /** Function: getResourceFromJid * Get the resource portion of a JID String. * * Parameters: * (String) jid - A JID. * * Returns: * A String containing the resource. */ getResourceFromJid: function (jid) { var s = jid.split("/"); if (s.length < 2) { return null; } s.splice(0, 1); return s.join('/'); }, /** Function: getBareJidFromJid * Get the bare JID from a JID String. * * Parameters: * (String) jid - A JID. * * Returns: * A String containing the bare JID. */ getBareJidFromJid: function (jid) { return jid ? jid.split("/")[0] : null; }, /** Function: log * User overrideable logging function. * * This function is called whenever the Strophe library calls any * of the logging functions. The default implementation of this * function does nothing. If client code wishes to handle the logging * messages, it should override this with * > Strophe.log = function (level, msg) { * > (user code here) * > }; * * Please note that data sent and received over the wire is logged * via Strophe.Connection.rawInput() and Strophe.Connection.rawOutput(). * * The different levels and their meanings are * * DEBUG - Messages useful for debugging purposes. * INFO - Informational messages. This is mostly information like * 'disconnect was called' or 'SASL auth succeeded'. * WARN - Warnings about potential problems. This is mostly used * to report transient connection errors like request timeouts. * ERROR - Some error occurred. * FATAL - A non-recoverable fatal error occurred. * * Parameters: * (Integer) level - The log level of the log message. This will * be one of the values in Strophe.LogLevel. * (String) msg - The log message. */ log: function (level, msg) { return; }, /** Function: debug * Log a message at the Strophe.LogLevel.DEBUG level. * * Parameters: * (String) msg - The log message. */ debug: function(msg) { this.log(this.LogLevel.DEBUG, msg); }, /** Function: info * Log a message at the Strophe.LogLevel.INFO level. * * Parameters: * (String) msg - The log message. */ info: function (msg) { this.log(this.LogLevel.INFO, msg); }, /** Function: warn * Log a message at the Strophe.LogLevel.WARN level. * * Parameters: * (String) msg - The log message. */ warn: function (msg) { this.log(this.LogLevel.WARN, msg); }, /** Function: error * Log a message at the Strophe.LogLevel.ERROR level. * * Parameters: * (String) msg - The log message. */ error: function (msg) { this.log(this.LogLevel.ERROR, msg); }, /** Function: fatal * Log a message at the Strophe.LogLevel.FATAL level. * * Parameters: * (String) msg - The log message. */ fatal: function (msg) { this.log(this.LogLevel.FATAL, msg); }, /** Function: serialize * Render a DOM element and all descendants to a String. * * Parameters: * (XMLElement) elem - A DOM element. * * Returns: * The serialized element tree as a String. */ serialize: function (elem) { var result; if (!elem) { return null; } if (typeof(elem.tree) === "function") { elem = elem.tree(); } var nodeName = elem.nodeName.toLowerCase(); var i, child; if (elem.getAttribute("_realname")) { nodeName = elem.getAttribute("_realname").toLowerCase(); } result = "<" + nodeName.toLowerCase(); for (i = 0; i < elem.attributes.length; i++) { if(elem.attributes[i].nodeName.toLowerCase() != "_realname") { result += " " + elem.attributes[i].nodeName.toLowerCase() + "='" + elem.attributes[i].value .replace(/&/g, "&") .replace(/\'/g, "'") .replace(/ 0) { result += ">"; for (i = 0; i < elem._childNodes.length; i++) { child = elem._childNodes[i]; if (child.nodeType == Strophe.ElementType.NORMAL) { // normal element, so recurse result += Strophe.serialize(child); } else if (child.nodeType == Strophe.ElementType.TEXT) { // text element result += child.nodeValue; } } result += ""; } else { result += "/>"; } return result; }, /** PrivateVariable: _requestId * _Private_ variable that keeps track of the request ids for * connections. */ _requestId: 0, /** PrivateVariable: Strophe.connectionPlugins * _Private_ variable Used to store plugin names that need * initialization on Strophe.Connection construction. */ _connectionPlugins: {}, /** Function: addConnectionPlugin * Extends the Strophe.Connection object with the given plugin. * * Paramaters: * (String) name - The name of the extension. * (Object) ptype - The plugin's prototype. */ addConnectionPlugin: function (name, ptype) { Strophe._connectionPlugins[name] = ptype; } }; /** Class: Strophe.Builder * XML DOM builder. * * This object provides an interface similar to JQuery but for building * DOM element easily and rapidly. All the functions except for toString() * and tree() return the object, so calls can be chained. Here's an * example using the $iq() builder helper. * > $iq({to: 'you', from: 'me', type: 'get', id: '1'}) * > .c('query', {xmlns: 'strophe:example'}) * > .c('example') * > .toString() * The above generates this XML fragment * > * > * > * > * > * The corresponding DOM manipulations to get a similar fragment would be * a lot more tedious and probably involve several helper variables. * * Since adding children makes new operations operate on the child, up() * is provided to traverse up the tree. To add two children, do * > builder.c('child1', ...).up().c('child2', ...) * The next operation on the Builder will be relative to the second child. */ /** Constructor: Strophe.Builder * Create a Strophe.Builder object. * * The attributes should be passed in object notation. For example * > var b = new Builder('message', {to: 'you', from: 'me'}); * or * > var b = new Builder('messsage', {'xml:lang': 'en'}); * * Parameters: * (String) name - The name of the root element. * (Object) attrs - The attributes for the root element in object notation. * * Returns: * A new Strophe.Builder. */ Strophe.Builder = function (name, attrs) { // Set correct namespace for jabber:client elements if (name == "presence" || name == "message" || name == "iq") { if (attrs && !attrs.xmlns) { attrs.xmlns = Strophe.NS.CLIENT; } else if (!attrs) { attrs = {xmlns: Strophe.NS.CLIENT}; } } // Holds the tree being built. this.nodeTree = Strophe.xmlElement(name, attrs); // Points to the current operation node. this.node = this.nodeTree; }; Strophe.Builder.prototype = { /** Function: tree * Return the DOM tree. * * This function returns the current DOM tree as an element object. This * is suitable for passing to functions like Strophe.Connection.send(). * * Returns: * The DOM tree as a element object. */ tree: function () { return this.nodeTree; }, /** Function: toString * Serialize the DOM tree to a String. * * This function returns a string serialization of the current DOM * tree. It is often used internally to pass data to a * Strophe.Request object. * * Returns: * The serialized DOM tree in a String. */ toString: function () { return Strophe.serialize(this.nodeTree); }, /** Function: up * Make the current parent element the new current element. * * This function is often used after c() to traverse back up the tree. * For example, to add two children to the same element * > builder.c('child1', {}).up().c('child2', {}); * * Returns: * The Stophe.Builder object. */ up: function () { this.node = this.node.parentNode; return this; }, /** Function: attrs * Add or modify attributes of the current element. * * The attributes should be passed in object notation. This function * does not move the current element pointer. * * Parameters: * (Object) moreattrs - The attributes to add/modify in object notation. * * Returns: * The Strophe.Builder object. */ attrs: function (moreattrs) { for (var k in moreattrs) { if (moreattrs.hasOwnProperty(k)) { this.node.setAttribute(k, moreattrs[k]); } } return this; }, /** Function: c * Add a child to the current element and make it the new current * element. * * This function moves the current element pointer to the child. If you * need to add another child, it is necessary to use up() to go back * to the parent in the tree. * * Parameters: * (String) name - The name of the child. * (Object) attrs - The attributes of the child in object notation. * * Returns: * The Strophe.Builder object. */ c: function (name, attrs) { var child = Strophe.xmlElement(name, attrs); this.node.appendChild(child); this.node = child; return this; }, /** Function: cnode * Add a child to the current element and make it the new current * element. * * This function is the same as c() except that instead of using a * name and an attributes object to create the child it uses an * existing DOM element object. * * Parameters: * (XMLElement) elem - A DOM element. * * Returns: * The Strophe.Builder object. */ cnode: function (elem) { var xmlGen = Strophe.xmlGenerator(); var newElem = xmlGen.importNode ? xmlGen.importNode(elem, true) : Strophe.copyElement(elem); this.node.appendChild(newElem); this.node = newElem; return this; }, /** Function: t * Add a child text element. * * This *does not* make the child the new current element since there * are no children of text elements. * * Parameters: * (String) text - The text data to append to the current element. * * Returns: * The Strophe.Builder object. */ t: function (text) { var child = Strophe.xmlTextNode(text); this.node.appendChild(child); return this; } }; /** PrivateClass: Strophe.Handler * _Private_ helper class for managing stanza handlers. * * A Strophe.Handler encapsulates a user provided callback function to be * executed when matching stanzas are received by the connection. * Handlers can be either one-off or persistant depending on their * return value. Returning true will cause a Handler to remain active, and * returning false will remove the Handler. * * Users will not use Strophe.Handler objects directly, but instead they * will use Strophe.Connection.addHandler() and * Strophe.Connection.deleteHandler(). */ /** PrivateConstructor: Strophe.Handler * Create and initialize a new Strophe.Handler. * * Parameters: * (Function) handler - A function to be executed when the handler is run. * (String) ns - The namespace to match. * (String) name - The element name to match. * (String) type - The element type to match. * (String) id - The element id attribute to match. * (String) from - The element from attribute to match. * (Object) options - Handler options * * Returns: * A new Strophe.Handler object. */ Strophe.Handler = function (handler, ns, name, type, id, from, options) { this.handler = handler; this.ns = ns; this.name = name; this.type = type; this.id = id; this.options = options || {matchbare: false}; // default matchBare to false if undefined if (!this.options.matchBare) { this.options.matchBare = false; } if (this.options.matchBare) { this.from = from ? Strophe.getBareJidFromJid(from) : null; } else { this.from = from; } // whether the handler is a user handler or a system handler this.user = true; }; Strophe.Handler.prototype = { /** PrivateFunction: isMatch * Tests if a stanza matches the Strophe.Handler. * * Parameters: * (XMLElement) elem - The XML element to test. * * Returns: * true if the stanza matches and false otherwise. */ isMatch: function (elem) { var nsMatch; var from = null; if (this.options.matchBare) { from = Strophe.getBareJidFromJid(elem.getAttribute('from')); } else { from = elem.getAttribute('from'); } nsMatch = false; if (!this.ns) { nsMatch = true; } else { var that = this; Strophe.forEachChild(elem, null, function (elem) { if (elem.getAttribute("xmlns") == that.ns) { nsMatch = true; } }); nsMatch = nsMatch || elem.getAttribute("xmlns") == this.ns; } if (nsMatch && (!this.name || Strophe.isTagEqual(elem, this.name)) && (!this.type || elem.getAttribute("type") == this.type) && (!this.id || elem.getAttribute("id") == this.id) && (!this.from || from == this.from)) { return true; } return false; }, /** PrivateFunction: run * Run the callback on a matching stanza. * * Parameters: * (XMLElement) elem - The DOM element that triggered the * Strophe.Handler. * * Returns: * A boolean indicating if the handler should remain active. */ run: function (elem) { var result = null; try { result = this.handler(elem); } catch (e) { if (e.sourceURL) { Strophe.fatal("error: " + this.handler + " " + e.sourceURL + ":" + e.line + " - " + e.name + ": " + e.message); } else if (e.fileName) { if (typeof(console) != "undefined") { console.trace(); console.error(this.handler, " - error - ", e, e.message); } Strophe.fatal("error: " + this.handler + " " + e.fileName + ":" + e.lineNumber + " - " + e.name + ": " + e.message); } else { Strophe.fatal("error: " + this.handler); } throw e; } return result; }, /** PrivateFunction: toString * Get a String representation of the Strophe.Handler object. * * Returns: * A String. */ toString: function () { return "{Handler: " + this.handler + "(" + this.name + "," + this.id + "," + this.ns + ")}"; } }; /** PrivateClass: Strophe.TimedHandler * _Private_ helper class for managing timed handlers. * * A Strophe.TimedHandler encapsulates a user provided callback that * should be called after a certain period of time or at regular * intervals. The return value of the callback determines whether the * Strophe.TimedHandler will continue to fire. * * Users will not use Strophe.TimedHandler objects directly, but instead * they will use Strophe.Connection.addTimedHandler() and * Strophe.Connection.deleteTimedHandler(). */ /** PrivateConstructor: Strophe.TimedHandler * Create and initialize a new Strophe.TimedHandler object. * * Parameters: * (Integer) period - The number of milliseconds to wait before the * handler is called. * (Function) handler - The callback to run when the handler fires. This * function should take no arguments. * * Returns: * A new Strophe.TimedHandler object. */ Strophe.TimedHandler = function (period, handler) { this.period = period; this.handler = handler; this.lastCalled = new Date().getTime(); this.user = true; }; Strophe.TimedHandler.prototype = { /** PrivateFunction: run * Run the callback for the Strophe.TimedHandler. * * Returns: * true if the Strophe.TimedHandler should be called again, and false * otherwise. */ run: function () { this.lastCalled = new Date().getTime(); return this.handler(); }, /** PrivateFunction: reset * Reset the last called time for the Strophe.TimedHandler. */ reset: function () { this.lastCalled = new Date().getTime(); }, /** PrivateFunction: toString * Get a string representation of the Strophe.TimedHandler object. * * Returns: * The string representation. */ toString: function () { return "{TimedHandler: " + this.handler + "(" + this.period +")}"; } }; /** PrivateClass: Strophe.Request * _Private_ helper class that provides a cross implementation abstraction * for a BOSH related XMLHttpRequest. * * The Strophe.Request class is used internally to encapsulate BOSH request * information. It is not meant to be used from user's code. */ /** PrivateConstructor: Strophe.Request * Create and initialize a new Strophe.Request object. * * Parameters: * (XMLElement) elem - The XML data to be sent in the request. * (Function) func - The function that will be called when the * XMLHttpRequest readyState changes. * (Integer) rid - The BOSH rid attribute associated with this request. * (Integer) sends - The number of times this same request has been * sent. */ Strophe.Request = function (elem, func, rid, sends) { this.id = ++Strophe._requestId; this.xmlData = elem; this.data = Strophe.serialize(elem); // save original function in case we need to make a new request // from this one. this.origFunc = func; this.func = func; this.rid = rid; this.date = NaN; this.sends = sends || 0; this.abort = false; this.dead = null; this.age = function () { if (!this.date) { return 0; } var now = new Date(); return (now - this.date) / 1000; }; this.timeDead = function () { if (!this.dead) { return 0; } var now = new Date(); return (now - this.dead) / 1000; }; this.xhr = this._newXHR(); }; Strophe.Request.prototype = { /** PrivateFunction: getResponse * Get a response from the underlying XMLHttpRequest. * * This function attempts to get a response from the request and checks * for errors. * * Throws: * "parsererror" - A parser error occured. * * Returns: * The DOM element tree of the response. */ getResponse: function () { // console.log("getResponse:", this.xhr.responseXML, ":", this.xhr.responseText); var node = null; if (this.xhr.responseXML && this.xhr.responseXML.documentElement) { node = this.xhr.responseXML.documentElement; if (node.tagName == "parsererror") { Strophe.error("invalid response received"); Strophe.error("responseText: " + this.xhr.responseText); Strophe.error("responseXML: " + Strophe.serialize(this.xhr.responseXML)); throw "parsererror"; } } else if (this.xhr.responseText) { // Hack for node. var _div = document.createElement("div"); _div.innerHTML = this.xhr.responseText; node = _div._childNodes[0]; Strophe.error("invalid response received"); Strophe.error("responseText: " + this.xhr.responseText); Strophe.error("responseXML: " + Strophe.serialize(this.xhr.responseXML)); } return node; }, /** PrivateFunction: _newXHR * _Private_ helper function to create XMLHttpRequests. * * This function creates XMLHttpRequests across all implementations. * * Returns: * A new XMLHttpRequest. */ _newXHR: function () { var xhr = null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); if (xhr.overrideMimeType) { xhr.overrideMimeType("text/xml"); } } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } // use Function.bind() to prepend ourselves as an argument xhr.onreadystatechange = this.func.bind(null, this); return xhr; } }; /** Class: Strophe.Connection * XMPP Connection manager. * * Thie class is the main part of Strophe. It manages a BOSH connection * to an XMPP server and dispatches events to the user callbacks as * data arrives. It supports SASL PLAIN, SASL DIGEST-MD5, and legacy * authentication. * * After creating a Strophe.Connection object, the user will typically * call connect() with a user supplied callback to handle connection level * events like authentication failure, disconnection, or connection * complete. * * The user will also have several event handlers defined by using * addHandler() and addTimedHandler(). These will allow the user code to * respond to interesting stanzas or do something periodically with the * connection. These handlers will be active once authentication is * finished. * * To send data to the connection, use send(). */ /** Constructor: Strophe.Connection * Create and initialize a Strophe.Connection object. * * Parameters: * (String) service - The BOSH service URL. * * Returns: * A new Strophe.Connection object. */ Strophe.Connection = function (service) { /* The path to the httpbind service. */ this.service = service; /* The connected JID. */ this.jid = ""; /* request id for body tags */ this.rid = Math.floor(Math.random() * 4294967295); /* The current session ID. */ this.sid = null; this.streamId = null; /* stream:features */ this.features = null; // SASL this.do_session = false; this.do_bind = false; // handler lists this.timedHandlers = []; this.handlers = []; this.removeTimeds = []; this.removeHandlers = []; this.addTimeds = []; this.addHandlers = []; this._idleTimeout = null; this._disconnectTimeout = null; this.authenticated = false; this.disconnecting = false; this.connected = false; this.errors = 0; this.paused = false; // default BOSH values this.hold = 1; this.wait = 60; this.window = 5; this._data = []; this._requests = []; this._uniqueId = Math.round(Math.random() * 10000); this._sasl_success_handler = null; this._sasl_failure_handler = null; this._sasl_challenge_handler = null; // setup onIdle callback every 1/10th of a second this._idleTimeout = setTimeout(this._onIdle.bind(this), 100); // initialize plugins for (var k in Strophe._connectionPlugins) { if (Strophe._connectionPlugins.hasOwnProperty(k)) { var ptype = Strophe._connectionPlugins[k]; // jslint complaints about the below line, but this is fine var F = function () {}; F.prototype = ptype; this[k] = new F(); this[k].init(this); } } }; Strophe.Connection.prototype = { /** Function: reset * Reset the connection. * * This function should be called after a connection is disconnected * before that connection is reused. */ reset: function () { this.rid = Math.floor(Math.random() * 4294967295); this.sid = null; this.streamId = null; // SASL this.do_session = false; this.do_bind = false; // handler lists this.timedHandlers = []; this.handlers = []; this.removeTimeds = []; this.removeHandlers = []; this.addTimeds = []; this.addHandlers = []; this.authenticated = false; this.disconnecting = false; this.connected = false; this.errors = 0; this._requests = []; this._uniqueId = Math.round(Math.random()*10000); }, /** Function: pause * Pause the request manager. * * This will prevent Strophe from sending any more requests to the * server. This is very useful for temporarily pausing while a lot * of send() calls are happening quickly. This causes Strophe to * send the data in a single request, saving many request trips. */ pause: function () { this.paused = true; }, /** Function: resume * Resume the request manager. * * This resumes after pause() has been called. */ resume: function () { this.paused = false; }, /** Function: getUniqueId * Generate a unique ID for use in elements. * * All stanzas are required to have unique id attributes. This * function makes creating these easy. Each connection instance has * a counter which starts from zero, and the value of this counter * plus a colon followed by the suffix becomes the unique id. If no * suffix is supplied, the counter is used as the unique id. * * Suffixes are used to make debugging easier when reading the stream * data, and their use is recommended. The counter resets to 0 for * every new connection for the same reason. For connections to the * same server that authenticate the same way, all the ids should be * the same, which makes it easy to see changes. This is useful for * automated testing as well. * * Parameters: * (String) suffix - A optional suffix to append to the id. * * Returns: * A unique string to be used for the id attribute. */ getUniqueId: function (suffix) { if (typeof(suffix) == "string" || typeof(suffix) == "number") { return ++this._uniqueId + ":" + suffix; } else { return ++this._uniqueId + ""; } }, /** Function: connect * Starts the connection process. * * As the connection process proceeds, the user supplied callback will * be triggered multiple times with status updates. The callback * should take two arguments - the status code and the error condition. * * The status code will be one of the values in the Strophe.Status * constants. The error condition will be one of the conditions * defined in RFC 3920 or the condition 'strophe-parsererror'. * * Please see XEP 124 for a more detailed explanation of the optional * parameters below. * * Parameters: * (String) jid - The user's JID. This may be a bare JID, * or a full JID. If a node is not supplied, SASL ANONYMOUS * authentication will be attempted. * (String) pass - The user's password. * (Function) callback The connect callback function. * (Integer) wait - The optional HTTPBIND wait value. This is the * time the server will wait before returning an empty result for * a request. The default setting of 60 seconds is recommended. * Other settings will require tweaks to the Strophe.TIMEOUT value. * (Integer) hold - The optional HTTPBIND hold value. This is the * number of connections the server will hold at one time. This * should almost always be set to 1 (the default). */ connect: function (jid, pass, callback, wait, hold, route) { this.jid = jid; this.pass = pass; this.connect_callback = callback; this.disconnecting = false; this.connected = false; this.authenticated = false; this.errors = 0; this.wait = wait || this.wait; this.hold = hold || this.hold; // parse jid for domain and resource this.domain = Strophe.getDomainFromJid(this.jid); // build the body tag var body_attrs = { to: this.domain, "xml:lang": "en", wait: this.wait, hold: this.hold, content: "text/xml; charset=utf-8", ver: "1.6", "xmpp:version": "1.0", "xmlns:xmpp": Strophe.NS.BOSH }; if (route) { body_attrs.route = route; } var body = this._buildBody().attrs(body_attrs); this._changeConnectStatus(Strophe.Status.CONNECTING, null); this._requests.push( new Strophe.Request(body.tree(), this._onRequestStateChange.bind( this, this._connect_cb.bind(this)), body.tree().getAttribute("rid"))); this._throttledRequestHandler(); }, /** Function: attach * Attach to an already created and authenticated BOSH session. * * This function is provided to allow Strophe to attach to BOSH * sessions which have been created externally, perhaps by a Web * application. This is often used to support auto-login type features * without putting user credentials into the page. * * Parameters: * (String) jid - The full JID that is bound by the session. * (String) sid - The SID of the BOSH session. * (String) rid - The current RID of the BOSH session. This RID * will be used by the next request. * (Function) callback The connect callback function. * (Integer) wait - The optional HTTPBIND wait value. This is the * time the server will wait before returning an empty result for * a request. The default setting of 60 seconds is recommended. * Other settings will require tweaks to the Strophe.TIMEOUT value. * (Integer) hold - The optional HTTPBIND hold value. This is the * number of connections the server will hold at one time. This * should almost always be set to 1 (the default). * (Integer) wind - The optional HTTBIND window value. This is the * allowed range of request ids that are valid. The default is 5. */ attach: function (jid, sid, rid, callback, wait, hold, wind) { this.jid = jid; this.sid = sid; this.rid = rid; this.connect_callback = callback; this.domain = Strophe.getDomainFromJid(this.jid); this.authenticated = true; this.connected = true; this.wait = wait || this.wait; this.hold = hold || this.hold; this.window = wind || this.window; this._changeConnectStatus(Strophe.Status.ATTACHED, null); }, /** Function: xmlInput * User overrideable function that receives XML data coming into the * connection. * * The default function does nothing. User code can override this with * > Strophe.Connection.xmlInput = function (elem) { * > (user code) * > }; * * Parameters: * (XMLElement) elem - The XML data received by the connection. */ xmlInput: function (elem) { return; }, /** Function: xmlOutput * User overrideable function that receives XML data sent to the * connection. * * The default function does nothing. User code can override this with * > Strophe.Connection.xmlOutput = function (elem) { * > (user code) * > }; * * Parameters: * (XMLElement) elem - The XMLdata sent by the connection. */ xmlOutput: function (elem) { return; }, /** Function: rawInput * User overrideable function that receives raw data coming into the * connection. * * The default function does nothing. User code can override this with * > Strophe.Connection.rawInput = function (data) { * > (user code) * > }; * * Parameters: * (String) data - The data received by the connection. */ rawInput: function (data) { return; }, /** Function: rawOutput * User overrideable function that receives raw data sent to the * connection. * * The default function does nothing. User code can override this with * > Strophe.Connection.rawOutput = function (data) { * > (user code) * > }; * * Parameters: * (String) data - The data sent by the connection. */ rawOutput: function (data) { return; }, /** Function: send * Send a stanza. * * This function is called to push data onto the send queue to * go out over the wire. Whenever a request is sent to the BOSH * server, all pending data is sent and the queue is flushed. * * Parameters: * (XMLElement | * [XMLElement] | * Strophe.Builder) elem - The stanza to send. */ send: function (elem) { if (elem === null) { return ; } if (typeof(elem.sort) === "function") { for (var i = 0; i < elem.length; i++) { this._queueData(elem[i]); } } else if (typeof(elem.tree) === "function") { this._queueData(elem.tree()); } else { this._queueData(elem); } this._throttledRequestHandler(); clearTimeout(this._idleTimeout); this._idleTimeout = setTimeout(this._onIdle.bind(this), 100); }, /** Function: flush * Immediately send any pending outgoing data. * * Normally send() queues outgoing data until the next idle period * (100ms), which optimizes network use in the common cases when * several send()s are called in succession. flush() can be used to * immediately send all pending data. */ flush: function () { // cancel the pending idle period and run the idle function // immediately clearTimeout(this._idleTimeout); this._onIdle(); }, /** Function: sendIQ * Helper function to send IQ stanzas. * * Parameters: * (XMLElement) elem - The stanza to send. * (Function) callback - The callback function for a successful request. * (Function) errback - The callback function for a failed or timed * out request. On timeout, the stanza will be null. * (Integer) timeout - The time specified in milliseconds for a * timeout to occur. * * Returns: * The id used to send the IQ. */ sendIQ: function(elem, callback, errback, timeout) { var timeoutHandler = null; var that = this; if (typeof(elem.tree) === "function") { elem = elem.tree(); } var id = elem.getAttribute('id'); // inject id if not found if (!id) { id = this.getUniqueId("sendIQ"); elem.setAttribute("id", id); } var handler = this.addHandler(function (stanza) { // remove timeout handler if there is one if (timeoutHandler) { that.deleteTimedHandler(timeoutHandler); } var iqtype = stanza.getAttribute('type'); if (iqtype == 'result') { if (callback) { callback(stanza); } } else if (iqtype == 'error') { if (errback) { errback(stanza); } } else { throw { name: "StropheError", message: "Got bad IQ type of " + iqtype }; } }, null, 'iq', null, id); // if timeout specified, setup timeout handler. if (timeout) { timeoutHandler = this.addTimedHandler(timeout, function () { // get rid of normal handler that.deleteHandler(handler); // call errback on timeout with null stanza if (errback) { errback(null); } return false; }); } this.send(elem); return id; }, /** PrivateFunction: _queueData * Queue outgoing data for later sending. Also ensures that the data * is a DOMElement. */ _queueData: function (element) { if (element === null || !element.tagName || !element._childNodes) { throw { name: "StropheError", message: "Cannot queue non-DOMElement." }; } this._data.push(element); }, /** PrivateFunction: _sendRestart * Send an xmpp:restart stanza. */ _sendRestart: function () { this._data.push("restart"); this._throttledRequestHandler(); clearTimeout(this._idleTimeout); this._idleTimeout = setTimeout(this._onIdle.bind(this), 100); }, /** Function: addTimedHandler * Add a timed handler to the connection. * * This function adds a timed handler. The provided handler will * be called every period milliseconds until it returns false, * the connection is terminated, or the handler is removed. Handlers * that wish to continue being invoked should return true. * * Because of method binding it is necessary to save the result of * this function if you wish to remove a handler with * deleteTimedHandler(). * * Note that user handlers are not active until authentication is * successful. * * Parameters: * (Integer) period - The period of the handler. * (Function) handler - The callback function. * * Returns: * A reference to the handler that can be used to remove it. */ addTimedHandler: function (period, handler) { var thand = new Strophe.TimedHandler(period, handler); this.addTimeds.push(thand); return thand; }, /** Function: deleteTimedHandler * Delete a timed handler for a connection. * * This function removes a timed handler from the connection. The * handRef parameter is *not* the function passed to addTimedHandler(), * but is the reference returned from addTimedHandler(). * * Parameters: * (Strophe.TimedHandler) handRef - The handler reference. */ deleteTimedHandler: function (handRef) { // this must be done in the Idle loop so that we don't change // the handlers during iteration this.removeTimeds.push(handRef); }, /** Function: addHandler * Add a stanza handler for the connection. * * This function adds a stanza handler to the connection. The * handler callback will be called for any stanza that matches * the parameters. Note that if multiple parameters are supplied, * they must all match for the handler to be invoked. * * The handler will receive the stanza that triggered it as its argument. * The handler should return true if it is to be invoked again; * returning false will remove the handler after it returns. * * As a convenience, the ns parameters applies to the top level element * and also any of its immediate children. This is primarily to make * matching /iq/query elements easy. * * The options argument contains handler matching flags that affect how * matches are determined. Currently the only flag is matchBare (a * boolean). When matchBare is true, the from parameter and the from * attribute on the stanza will be matched as bare JIDs instead of * full JIDs. To use this, pass {matchBare: true} as the value of * options. The default value for matchBare is false. * * The return value should be saved if you wish to remove the handler * with deleteHandler(). * * Parameters: * (Function) handler - The user callback. * (String) ns - The namespace to match. * (String) name - The stanza name to match. * (String) type - The stanza type attribute to match. * (String) id - The stanza id attribute to match. * (String) from - The stanza from attribute to match. * (String) options - The handler options * * Returns: * A reference to the handler that can be used to remove it. */ addHandler: function (handler, ns, name, type, id, from, options) { var hand = new Strophe.Handler(handler, ns, name, type, id, from, options); this.addHandlers.push(hand); return hand; }, /** Function: deleteHandler * Delete a stanza handler for a connection. * * This function removes a stanza handler from the connection. The * handRef parameter is *not* the function passed to addHandler(), * but is the reference returned from addHandler(). * * Parameters: * (Strophe.Handler) handRef - The handler reference. */ deleteHandler: function (handRef) { // this must be done in the Idle loop so that we don't change // the handlers during iteration this.removeHandlers.push(handRef); }, /** Function: disconnect * Start the graceful disconnection process. * * This function starts the disconnection process. This process starts * by sending unavailable presence and sending BOSH body of type * terminate. A timeout handler makes sure that disconnection happens * even if the BOSH server does not respond. * * The user supplied connection callback will be notified of the * progress as this process happens. * * Parameters: * (String) reason - The reason the disconnect is occuring. */ disconnect: function (reason) { this._changeConnectStatus(Strophe.Status.DISCONNECTING, reason); Strophe.info("Disconnect was called because: " + reason); if (this.connected) { // setup timeout handler this._disconnectTimeout = this._addSysTimedHandler( 3000, this._onDisconnectTimeout.bind(this)); this._sendTerminate(); } }, /** PrivateFunction: _changeConnectStatus * _Private_ helper function that makes sure plugins and the user's * callback are notified of connection status changes. * * Parameters: * (Integer) status - the new connection status, one of the values * in Strophe.Status * (String) condition - the error condition or null */ _changeConnectStatus: function (status, condition) { // notify all plugins listening for status changes for (var k in Strophe._connectionPlugins) { if (Strophe._connectionPlugins.hasOwnProperty(k)) { var plugin = this[k]; if (plugin.statusChanged) { try { plugin.statusChanged(status, condition); } catch (err) { Strophe.error("" + k + " plugin caused an exception " + "changing status: " + err); } } } } // notify the user's callback if (this.connect_callback) { try { this.connect_callback(status, condition); } catch (e) { Strophe.error("User connection callback caused an " + "exception: " + e); } } }, /** PrivateFunction: _buildBody * _Private_ helper function to generate the wrapper for BOSH. * * Returns: * A Strophe.Builder with a element. */ _buildBody: function () { var bodyWrap = $build('body', { rid: this.rid++, xmlns: Strophe.NS.HTTPBIND }); if (this.sid !== null) { bodyWrap.attrs({sid: this.sid}); } return bodyWrap; }, /** PrivateFunction: _removeRequest * _Private_ function to remove a request from the queue. * * Parameters: * (Strophe.Request) req - The request to remove. */ _removeRequest: function (req) { Strophe.debug("removing request"); var i; for (i = this._requests.length - 1; i >= 0; i--) { if (req == this._requests[i]) { this._requests.splice(i, 1); } } // IE6 fails on setting to null, so set to empty function req.xhr.onreadystatechange = function () {}; this._throttledRequestHandler(); }, /** PrivateFunction: _restartRequest * _Private_ function to restart a request that is presumed dead. * * Parameters: * (Integer) i - The index of the request in the queue. */ _restartRequest: function (i) { var req = this._requests[i]; if (req.dead === null) { req.dead = new Date(); } this._processRequest(i); }, /** PrivateFunction: _processRequest * _Private_ function to process a request in the queue. * * This function takes requests off the queue and sends them and * restarts dead requests. * * Parameters: * (Integer) i - The index of the request in the queue. */ _processRequest: function (i) { var req = this._requests[i]; var reqStatus = -1; try { if (req.xhr.readyState == 4) { reqStatus = req.xhr.status; } } catch (e) { Strophe.error("caught an error in _requests[" + i + "], reqStatus: " + reqStatus); } if (typeof(reqStatus) == "undefined") { reqStatus = -1; } // make sure we limit the number of retries if (req.sends > 5) { this._onDisconnectTimeout(); return; } var time_elapsed = req.age(); var primaryTimeout = (!isNaN(time_elapsed) && time_elapsed > Math.floor(Strophe.TIMEOUT * this.wait)); var secondaryTimeout = (req.dead !== null && req.timeDead() > Math.floor(Strophe.SECONDARY_TIMEOUT * this.wait)); var requestCompletedWithServerError = (req.xhr.readyState == 4 && (reqStatus < 1 || reqStatus >= 500)); if (primaryTimeout || secondaryTimeout || requestCompletedWithServerError) { if (secondaryTimeout) { Strophe.error("Request " + this._requests[i].id + " timed out (secondary), restarting"); } req.abort = true; req.xhr.abort(); // setting to null fails on IE6, so set to empty function req.xhr.onreadystatechange = function () {}; this._requests[i] = new Strophe.Request(req.xmlData, req.origFunc, req.rid, req.sends); req = this._requests[i]; } if (req.xhr.readyState === 0) { Strophe.debug("request id " + req.id + "." + req.sends + " posting"); req.date = new Date(); try { req.xhr.open("POST", this.service, true); } catch (e2) { Strophe.error("XHR open failed."); if (!this.connected) { this._changeConnectStatus(Strophe.Status.CONNFAIL, "bad-service"); } this.disconnect(); return; } // Fires the XHR request -- may be invoked immediately // or on a gradually expanding retry window for reconnects var sendFunc = function () { req.xhr.send(req.data); }; // Implement progressive backoff for reconnects -- // First retry (send == 1) should also be instantaneous if (req.sends > 1) { // Using a cube of the retry number creats a nicely // expanding retry window var backoff = Math.pow(req.sends, 3) * 1000; setTimeout(sendFunc, backoff); } else { sendFunc(); } req.sends++; this.xmlOutput(req.xmlData); this.rawOutput(req.data); } else { Strophe.debug("_processRequest: " + (i === 0 ? "first" : "second") + " request has readyState of " + req.xhr.readyState); } }, /** PrivateFunction: _throttledRequestHandler * _Private_ function to throttle requests to the connection window. * * This function makes sure we don't send requests so fast that the * request ids overflow the connection window in the case that one * request died. */ _throttledRequestHandler: function () { if (!this._requests) { Strophe.debug("_throttledRequestHandler called with " + "undefined requests"); } else { Strophe.debug("_throttledRequestHandler called with " + this._requests.length + " requests"); } if (!this._requests || this._requests.length === 0) { return; } if (this._requests.length > 0) { this._processRequest(0); } if (this._requests.length > 1 && Math.abs(this._requests[0].rid - this._requests[1].rid) < this.window) { this._processRequest(1); } }, /** PrivateFunction: _onRequestStateChange * _Private_ handler for Strophe.Request state changes. * * This function is called when the XMLHttpRequest readyState changes. * It contains a lot of error handling logic for the many ways that * requests can fail, and calls the request callback when requests * succeed. * * Parameters: * (Function) func - The handler for the request. * (Strophe.Request) req - The request that is changing readyState. */ _onRequestStateChange: function (func, req) { Strophe.debug("request id " + req.id + "." + req.sends + " state changed to " + req.xhr.readyState); if (req.abort) { req.abort = false; return; } // request complete var reqStatus; if (req.xhr.readyState == 4) { reqStatus = 0; try { reqStatus = req.xhr.status; } catch (e) { // ignore errors from undefined status attribute. works // around a browser bug } if (typeof(reqStatus) == "undefined") { reqStatus = 0; } if (this.disconnecting) { if (reqStatus >= 400) { this._hitError(reqStatus); return; } } var reqIs0 = (this._requests[0] == req); var reqIs1 = (this._requests[1] == req); if ((reqStatus > 0 && reqStatus < 500) || req.sends > 5) { // remove from internal queue this._removeRequest(req); Strophe.debug("request id " + req.id + " should now be removed"); } // request succeeded if (reqStatus == 200) { // if request 1 finished, or request 0 finished and request // 1 is over Strophe.SECONDARY_TIMEOUT seconds old, we need to // restart the other - both will be in the first spot, as the // completed request has been removed from the queue already if (reqIs1 || (reqIs0 && this._requests.length > 0 && this._requests[0].age() > Math.floor(Strophe.SECONDARY_TIMEOUT * this.wait))) { this._restartRequest(0); } // call handler Strophe.debug("request id " + req.id + "." + req.sends + " got 200"); func(req); this.errors = 0; } else { Strophe.error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened"); if (reqStatus === 0 || (reqStatus >= 400 && reqStatus < 600) || reqStatus >= 12000) { this._hitError(reqStatus); if (reqStatus >= 400 && reqStatus < 500) { this._changeConnectStatus(Strophe.Status.DISCONNECTING, null); this._doDisconnect(); } } } if (!((reqStatus > 0 && reqStatus < 500) || req.sends > 5)) { this._throttledRequestHandler(); } } }, /** PrivateFunction: _hitError * _Private_ function to handle the error count. * * Requests are resent automatically until their error count reaches * 5. Each time an error is encountered, this function is called to * increment the count and disconnect if the count is too high. * * Parameters: * (Integer) reqStatus - The request status. */ _hitError: function (reqStatus) { this.errors++; Strophe.warn("request errored, status: " + reqStatus + ", number of errors: " + this.errors); if (this.errors > 4) { this._onDisconnectTimeout(); } }, /** PrivateFunction: _doDisconnect * _Private_ function to disconnect. * * This is the last piece of the disconnection logic. This resets the * connection and alerts the user's connection callback. */ _doDisconnect: function () { Strophe.info("_doDisconnect was called"); this.authenticated = false; this.disconnecting = false; this.sid = null; this.streamId = null; this.rid = Math.floor(Math.random() * 4294967295); // tell the parent we disconnected if (this.connected) { this._changeConnectStatus(Strophe.Status.DISCONNECTED, null); this.connected = false; } // delete handlers this.handlers = []; this.timedHandlers = []; this.removeTimeds = []; this.removeHandlers = []; this.addTimeds = []; this.addHandlers = []; }, /** PrivateFunction: _dataRecv * _Private_ handler to processes incoming data from the the connection. * * Except for _connect_cb handling the initial connection request, * this function handles the incoming data for all requests. This * function also fires stanza handlers that match each incoming * stanza. * * Parameters: * (Strophe.Request) req - The request that has data ready. */ _dataRecv: function (req) { try { var elem = req.getResponse(); } catch (e) { if (e != "parsererror") { throw e; } this.disconnect("strophe-parsererror"); } if (elem === null) { return; } this.xmlInput(elem); this.rawInput(Strophe.serialize(elem)); // remove handlers scheduled for deletion var i, hand; while (this.removeHandlers.length > 0) { hand = this.removeHandlers.pop(); i = this.handlers.indexOf(hand); if (i >= 0) { this.handlers.splice(i, 1); } } // add handlers scheduled for addition while (this.addHandlers.length > 0) { this.handlers.push(this.addHandlers.pop()); } // handle graceful disconnect if (this.disconnecting && this._requests.length === 0) { this.deleteTimedHandler(this._disconnectTimeout); this._disconnectTimeout = null; this._doDisconnect(); return; } var typ = elem.getAttribute("type"); var cond, conflict; if (typ !== null && typ == "terminate") { // Don't process stanzas that come in after disconnect if (this.disconnecting) { return; } // an error occurred cond = elem.getAttribute("condition"); conflict = elem.getElementsByTagName("conflict"); if (cond !== null) { if (cond == "remote-stream-error" && conflict.length > 0) { cond = "conflict"; } this._changeConnectStatus(Strophe.Status.CONNFAIL, cond); } else { this._changeConnectStatus(Strophe.Status.CONNFAIL, "unknown"); } this.disconnect(); return; } // send each incoming stanza through the handler chain var that = this; Strophe.forEachChild(elem, null, function (child) { var i, newList; // process handlers newList = that.handlers; that.handlers = []; for (i = 0; i < newList.length; i++) { var hand = newList[i]; if (hand.isMatch(child) && (that.authenticated || !hand.user)) { if (hand.run(child)) { that.handlers.push(hand); } } else { that.handlers.push(hand); } } }); }, /** PrivateFunction: _sendTerminate * _Private_ function to send initial disconnect sequence. * * This is the first step in a graceful disconnect. It sends * the BOSH server a terminate body and includes an unavailable * presence if authentication has completed. */ _sendTerminate: function () { Strophe.info("_sendTerminate was called"); var body = this._buildBody().attrs({type: "terminate"}); if (this.authenticated) { body.c('presence', { xmlns: Strophe.NS.CLIENT, type: 'unavailable' }); } this.disconnecting = true; var req = new Strophe.Request(body.tree(), this._onRequestStateChange.bind( this, this._dataRecv.bind(this)), body.tree().getAttribute("rid")); this._requests.push(req); this._throttledRequestHandler(); }, /** PrivateFunction: _connect_cb * _Private_ handler for initial connection request. * * This handler is used to process the initial connection request * response from the BOSH server. It is used to set up authentication * handlers and start the authentication process. * * SASL authentication will be attempted if available, otherwise * the code will fall back to legacy authentication. * * Parameters: * (Strophe.Request) req - The current request. */ _connect_cb: function (req) { Strophe.info("_connect_cb was called"); this.connected = true; var bodyWrap = req.getResponse(); if (!bodyWrap) { return; } this.xmlInput(bodyWrap); this.rawInput(Strophe.serialize(bodyWrap)); var typ = bodyWrap.getAttribute("type"); var cond, conflict; if (typ !== null && typ == "terminate") { // an error occurred cond = bodyWrap.getAttribute("condition"); conflict = bodyWrap.getElementsByTagName("conflict"); if (cond !== null) { if (cond == "remote-stream-error" && conflict.length > 0) { cond = "conflict"; } this._changeConnectStatus(Strophe.Status.CONNFAIL, cond); } else { this._changeConnectStatus(Strophe.Status.CONNFAIL, "unknown"); } return; } // check to make sure we don't overwrite these if _connect_cb is // called multiple times in the case of missing stream:features if (!this.sid) { this.sid = bodyWrap.getAttribute("sid"); } if (!this.stream_id) { this.stream_id = bodyWrap.getAttribute("authid"); } var wind = bodyWrap.getAttribute('requests'); if (wind) { this.window = parseInt(wind, 10); } var hold = bodyWrap.getAttribute('hold'); if (hold) { this.hold = parseInt(hold, 10); } var wait = bodyWrap.getAttribute('wait'); if (wait) { this.wait = parseInt(wait, 10); } var do_sasl_plain = false; var do_sasl_digest_md5 = false; var do_sasl_anonymous = false; var mechanisms = bodyWrap.getElementsByTagName("mechanism"); var i, mech, auth_str, hashed_auth_str; if (mechanisms.length > 0) { for (i = 0; i < mechanisms.length; i++) { mech = Strophe.getText(mechanisms[i]); if (mech == 'DIGEST-MD5') { do_sasl_digest_md5 = true; } else if (mech == 'PLAIN') { do_sasl_plain = true; } else if (mech == 'ANONYMOUS') { do_sasl_anonymous = true; } } } else { // we didn't get stream:features yet, so we need wait for it // by sending a blank poll request var body = this._buildBody(); this._requests.push( new Strophe.Request(body.tree(), this._onRequestStateChange.bind( this, this._connect_cb.bind(this)), body.tree().getAttribute("rid"))); this._throttledRequestHandler(); return; } if (Strophe.getNodeFromJid(this.jid) === null && do_sasl_anonymous) { this._changeConnectStatus(Strophe.Status.AUTHENTICATING, null); this._sasl_success_handler = this._addSysHandler( this._sasl_success_cb.bind(this), null, "success", null, null); this._sasl_failure_handler = this._addSysHandler( this._sasl_failure_cb.bind(this), null, "failure", null, null); this.send($build("auth", { xmlns: Strophe.NS.SASL, mechanism: "ANONYMOUS" }).tree()); } else if (Strophe.getNodeFromJid(this.jid) === null) { // we don't have a node, which is required for non-anonymous // client connections this._changeConnectStatus(Strophe.Status.CONNFAIL, 'x-strophe-bad-non-anon-jid'); this.disconnect(); } else if (do_sasl_digest_md5) { this._changeConnectStatus(Strophe.Status.AUTHENTICATING, null); this._sasl_challenge_handler = this._addSysHandler( this._sasl_challenge1_cb.bind(this), null, "challenge", null, null); this._sasl_failure_handler = this._addSysHandler( this._sasl_failure_cb.bind(this), null, "failure", null, null); this.send($build("auth", { xmlns: Strophe.NS.SASL, mechanism: "DIGEST-MD5" }).tree()); } else if (do_sasl_plain) { // Build the plain auth string (barejid null // username null password) and base 64 encoded. auth_str = Strophe.getBareJidFromJid(this.jid); auth_str = auth_str + "\u0000"; auth_str = auth_str + Strophe.getNodeFromJid(this.jid); auth_str = auth_str + "\u0000"; auth_str = auth_str + this.pass; this._changeConnectStatus(Strophe.Status.AUTHENTICATING, null); this._sasl_success_handler = this._addSysHandler( this._sasl_success_cb.bind(this), null, "success", null, null); this._sasl_failure_handler = this._addSysHandler( this._sasl_failure_cb.bind(this), null, "failure", null, null); hashed_auth_str = Base64.encode(auth_str); this.send($build("auth", { xmlns: Strophe.NS.SASL, mechanism: "PLAIN" }).t(hashed_auth_str).tree()); } else { this._changeConnectStatus(Strophe.Status.AUTHENTICATING, null); this._addSysHandler(this._auth1_cb.bind(this), null, null, null, "_auth_1"); this.send($iq({ type: "get", to: this.domain, id: "_auth_1" }).c("query", { xmlns: Strophe.NS.AUTH }).c("username", {}).t(Strophe.getNodeFromJid(this.jid)).tree()); } }, /** PrivateFunction: _sasl_challenge1_cb * _Private_ handler for DIGEST-MD5 SASL authentication. * * Parameters: * (XMLElement) elem - The challenge stanza. * * Returns: * false to remove the handler. */ _sasl_challenge1_cb: function (elem) { var attribMatch = /([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/; var challenge = Base64.decode(Strophe.getText(elem)); var cnonce = MD5.hexdigest(Math.random() * 1234567890); var realm = ""; var host = null; var nonce = ""; var qop = ""; var matches; // remove unneeded handlers this.deleteHandler(this._sasl_failure_handler); while (challenge.match(attribMatch)) { matches = challenge.match(attribMatch); challenge = challenge.replace(matches[0], ""); matches[2] = matches[2].replace(/^"(.+)"$/, "$1"); switch (matches[1]) { case "realm": realm = matches[2]; break; case "nonce": nonce = matches[2]; break; case "qop": qop = matches[2]; break; case "host": host = matches[2]; break; } } var digest_uri = "xmpp/" + this.domain; if (host !== null) { digest_uri = digest_uri + "/" + host; } var A1 = MD5.hash(Strophe.getNodeFromJid(this.jid) + ":" + realm + ":" + this.pass) + ":" + nonce + ":" + cnonce; var A2 = 'AUTHENTICATE:' + digest_uri; var responseText = ""; responseText += 'username=' + this._quote(Strophe.getNodeFromJid(this.jid)) + ','; responseText += 'realm=' + this._quote(realm) + ','; responseText += 'nonce=' + this._quote(nonce) + ','; responseText += 'cnonce=' + this._quote(cnonce) + ','; responseText += 'nc="00000001",'; responseText += 'qop="auth",'; responseText += 'digest-uri=' + this._quote(digest_uri) + ','; responseText += 'response=' + this._quote( MD5.hexdigest(MD5.hexdigest(A1) + ":" + nonce + ":00000001:" + cnonce + ":auth:" + MD5.hexdigest(A2))) + ','; responseText += 'charset="utf-8"'; this._sasl_challenge_handler = this._addSysHandler( this._sasl_challenge2_cb.bind(this), null, "challenge", null, null); this._sasl_success_handler = this._addSysHandler( this._sasl_success_cb.bind(this), null, "success", null, null); this._sasl_failure_handler = this._addSysHandler( this._sasl_failure_cb.bind(this), null, "failure", null, null); this.send($build('response', { xmlns: Strophe.NS.SASL }).t(Base64.encode(responseText)).tree()); return false; }, /** PrivateFunction: _quote * _Private_ utility function to backslash escape and quote strings. * * Parameters: * (String) str - The string to be quoted. * * Returns: * quoted string */ _quote: function (str) { return '"' + str.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"'; //" end string workaround for emacs }, /** PrivateFunction: _sasl_challenge2_cb * _Private_ handler for second step of DIGEST-MD5 SASL authentication. * * Parameters: * (XMLElement) elem - The challenge stanza. * * Returns: * false to remove the handler. */ _sasl_challenge2_cb: function (elem) { // remove unneeded handlers this.deleteHandler(this._sasl_success_handler); this.deleteHandler(this._sasl_failure_handler); this._sasl_success_handler = this._addSysHandler( this._sasl_success_cb.bind(this), null, "success", null, null); this._sasl_failure_handler = this._addSysHandler( this._sasl_failure_cb.bind(this), null, "failure", null, null); this.send($build('response', {xmlns: Strophe.NS.SASL}).tree()); return false; }, /** PrivateFunction: _auth1_cb * _Private_ handler for legacy authentication. * * This handler is called in response to the initial * for legacy authentication. It builds an authentication and * sends it, creating a handler (calling back to _auth2_cb()) to * handle the result * * Parameters: * (XMLElement) elem - The stanza that triggered the callback. * * Returns: * false to remove the handler. */ _auth1_cb: function (elem) { // build plaintext auth iq var iq = $iq({type: "set", id: "_auth_2"}) .c('query', {xmlns: Strophe.NS.AUTH}) .c('username', {}).t(Strophe.getNodeFromJid(this.jid)) .up() .c('password').t(this.pass); if (!Strophe.getResourceFromJid(this.jid)) { // since the user has not supplied a resource, we pick // a default one here. unlike other auth methods, the server // cannot do this for us. this.jid = Strophe.getBareJidFromJid(this.jid) + '/strophe'; } iq.up().c('resource', {}).t(Strophe.getResourceFromJid(this.jid)); this._addSysHandler(this._auth2_cb.bind(this), null, null, null, "_auth_2"); this.send(iq.tree()); return false; }, /** PrivateFunction: _sasl_success_cb * _Private_ handler for succesful SASL authentication. * * Parameters: * (XMLElement) elem - The matching stanza. * * Returns: * false to remove the handler. */ _sasl_success_cb: function (elem) { Strophe.info("SASL authentication succeeded."); // remove old handlers this.deleteHandler(this._sasl_failure_handler); this._sasl_failure_handler = null; if (this._sasl_challenge_handler) { this.deleteHandler(this._sasl_challenge_handler); this._sasl_challenge_handler = null; } this._addSysHandler(this._sasl_auth1_cb.bind(this), null, "stream:features", null, null); // we must send an xmpp:restart now this._sendRestart(); return false; }, /** PrivateFunction: _sasl_auth1_cb * _Private_ handler to start stream binding. * * Parameters: * (XMLElement) elem - The matching stanza. * * Returns: * false to remove the handler. */ _sasl_auth1_cb: function (elem) { // save stream:features for future usage this.features = elem; var i, child; for (i = 0; i < elem._childNodes.length; i++) { child = elem._childNodes[i]; if (child.nodeName.toLowerCase() == 'bind') { this.do_bind = true; } if (child.nodeName.toLowerCase() == 'session') { this.do_session = true; } } if (!this.do_bind) { this._changeConnectStatus(Strophe.Status.AUTHFAIL, null); return false; } else { this._addSysHandler(this._sasl_bind_cb.bind(this), null, null, null, "_bind_auth_2"); var resource = Strophe.getResourceFromJid(this.jid); if (resource) { this.send($iq({type: "set", id: "_bind_auth_2"}) .c('bind', {xmlns: Strophe.NS.BIND}) .c('resource', {}).t(resource).tree()); } else { this.send($iq({type: "set", id: "_bind_auth_2"}) .c('bind', {xmlns: Strophe.NS.BIND}) .tree()); } } return false; }, /** PrivateFunction: _sasl_bind_cb * _Private_ handler for binding result and session start. * * Parameters: * (XMLElement) elem - The matching stanza. * * Returns: * false to remove the handler. */ _sasl_bind_cb: function (elem) { if (elem.getAttribute("type") == "error") { Strophe.info("SASL binding failed."); this._changeConnectStatus(Strophe.Status.AUTHFAIL, null); return false; } // TODO - need to grab errors var bind = elem.getElementsByTagName("bind"); var jidNode; if (bind.length > 0) { // Grab jid jidNode = bind[0].getElementsByTagName("jid"); if (jidNode.length > 0) { this.jid = Strophe.getText(jidNode[0]); if (this.do_session) { this._addSysHandler(this._sasl_session_cb.bind(this), null, null, null, "_session_auth_2"); this.send($iq({type: "set", id: "_session_auth_2"}) .c('session', {xmlns: Strophe.NS.SESSION}) .tree()); } else { this.authenticated = true; this._changeConnectStatus(Strophe.Status.CONNECTED, null); } } } else { Strophe.info("SASL binding failed."); this._changeConnectStatus(Strophe.Status.AUTHFAIL, null); return false; } }, /** PrivateFunction: _sasl_session_cb * _Private_ handler to finish successful SASL connection. * * This sets Connection.authenticated to true on success, which * starts the processing of user handlers. * * Parameters: * (XMLElement) elem - The matching stanza. * * Returns: * false to remove the handler. */ _sasl_session_cb: function (elem) { if (elem.getAttribute("type") == "result") { this.authenticated = true; this._changeConnectStatus(Strophe.Status.CONNECTED, null); } else if (elem.getAttribute("type") == "error") { Strophe.info("Session creation failed."); this._changeConnectStatus(Strophe.Status.AUTHFAIL, null); return false; } return false; }, /** PrivateFunction: _sasl_failure_cb * _Private_ handler for SASL authentication failure. * * Parameters: * (XMLElement) elem - The matching stanza. * * Returns: * false to remove the handler. */ _sasl_failure_cb: function (elem) { // delete unneeded handlers if (this._sasl_success_handler) { this.deleteHandler(this._sasl_success_handler); this._sasl_success_handler = null; } if (this._sasl_challenge_handler) { this.deleteHandler(this._sasl_challenge_handler); this._sasl_challenge_handler = null; } this._changeConnectStatus(Strophe.Status.AUTHFAIL, null); return false; }, /** PrivateFunction: _auth2_cb * _Private_ handler to finish legacy authentication. * * This handler is called when the result from the jabber:iq:auth * stanza is returned. * * Parameters: * (XMLElement) elem - The stanza that triggered the callback. * * Returns: * false to remove the handler. */ _auth2_cb: function (elem) { if (elem.getAttribute("type") == "result") { this.authenticated = true; this._changeConnectStatus(Strophe.Status.CONNECTED, null); } else if (elem.getAttribute("type") == "error") { this._changeConnectStatus(Strophe.Status.AUTHFAIL, null); this.disconnect(); } return false; }, /** PrivateFunction: _addSysTimedHandler * _Private_ function to add a system level timed handler. * * This function is used to add a Strophe.TimedHandler for the * library code. System timed handlers are allowed to run before * authentication is complete. * * Parameters: * (Integer) period - The period of the handler. * (Function) handler - The callback function. */ _addSysTimedHandler: function (period, handler) { var thand = new Strophe.TimedHandler(period, handler); thand.user = false; this.addTimeds.push(thand); return thand; }, /** PrivateFunction: _addSysHandler * _Private_ function to add a system level stanza handler. * * This function is used to add a Strophe.Handler for the * library code. System stanza handlers are allowed to run before * authentication is complete. * * Parameters: * (Function) handler - The callback function. * (String) ns - The namespace to match. * (String) name - The stanza name to match. * (String) type - The stanza type attribute to match. * (String) id - The stanza id attribute to match. */ _addSysHandler: function (handler, ns, name, type, id) { var hand = new Strophe.Handler(handler, ns, name, type, id); hand.user = false; this.addHandlers.push(hand); return hand; }, /** PrivateFunction: _onDisconnectTimeout * _Private_ timeout handler for handling non-graceful disconnection. * * If the graceful disconnect process does not complete within the * time allotted, this handler finishes the disconnect anyway. * * Returns: * false to remove the handler. */ _onDisconnectTimeout: function () { Strophe.info("_onDisconnectTimeout was called"); // cancel all remaining requests and clear the queue var req; while (this._requests.length > 0) { req = this._requests.pop(); req.abort = true; req.xhr.abort(); // jslint complains, but this is fine. setting to empty func // is necessary for IE6 req.xhr.onreadystatechange = function () {}; } // actually disconnect this._doDisconnect(); return false; }, /** PrivateFunction: _onIdle * _Private_ handler to process events during idle cycle. * * This handler is called every 100ms to fire timed handlers that * are ready and keep poll requests going. */ _onIdle: function () { var i, thand, since, newList; // add timed handlers scheduled for addition // NOTE: we add before remove in the case a timed handler is // added and then deleted before the next _onIdle() call. while (this.addTimeds.length > 0) { this.timedHandlers.push(this.addTimeds.pop()); } // remove timed handlers that have been scheduled for deletion while (this.removeTimeds.length > 0) { thand = this.removeTimeds.pop(); i = this.timedHandlers.indexOf(thand); if (i >= 0) { this.timedHandlers.splice(i, 1); } } // call ready timed handlers var now = new Date().getTime(); newList = []; for (i = 0; i < this.timedHandlers.length; i++) { thand = this.timedHandlers[i]; if (this.authenticated || !thand.user) { since = thand.lastCalled + thand.period; if (since - now <= 0) { if (thand.run()) { newList.push(thand); } } else { newList.push(thand); } } } this.timedHandlers = newList; var body, time_elapsed; // if no requests are in progress, poll if (this.authenticated && this._requests.length === 0 && this._data.length === 0 && !this.disconnecting) { Strophe.info("no requests during idle cycle, sending " + "blank request"); this._data.push(null); } if (this._requests.length < 2 && this._data.length > 0 && !this.paused) { body = this._buildBody(); for (i = 0; i < this._data.length; i++) { if (this._data[i] !== null) { if (this._data[i] === "restart") { body.attrs({ to: this.domain, "xml:lang": "en", "xmpp:restart": "true", "xmlns:xmpp": Strophe.NS.BOSH }); } else { body.cnode(this._data[i]).up(); } } } delete this._data; this._data = []; this._requests.push( new Strophe.Request(body.tree(), this._onRequestStateChange.bind( this, this._dataRecv.bind(this)), body.tree().getAttribute("rid"))); this._processRequest(this._requests.length - 1); } if (this._requests.length > 0) { time_elapsed = this._requests[0].age(); if (this._requests[0].dead !== null) { if (this._requests[0].timeDead() > Math.floor(Strophe.SECONDARY_TIMEOUT * this.wait)) { this._throttledRequestHandler(); } } if (time_elapsed > Math.floor(Strophe.TIMEOUT * this.wait)) { Strophe.warn("Request " + this._requests[0].id + " timed out, over " + Math.floor(Strophe.TIMEOUT * this.wait) + " seconds since last activity"); this._throttledRequestHandler(); } } // reactivate the timer clearTimeout(this._idleTimeout); this._idleTimeout = setTimeout(this._onIdle.bind(this), 100); } }; if (callback) { callback(Strophe, $build, $msg, $iq, $pres); } })(function () { window.Strophe = arguments[0]; window.$build = arguments[1]; window.$msg = arguments[2]; window.$iq = arguments[3]; window.$pres = arguments[4]; }); synapse-1.53.0/contrib/jitsimeetbridge/unjingle/unjingle.js000066400000000000000000000023411420514467300240660ustar00rootroot00000000000000var strophe = require("./strophe/strophe.js").Strophe; var Strophe = strophe.Strophe; var $iq = strophe.$iq; var $msg = strophe.$msg; var $build = strophe.$build; var $pres = strophe.$pres; var jsdom = require("jsdom"); var window = jsdom.jsdom().parentWindow; var $ = require('jquery')(window); var stropheJingle = require("./strophe.jingle.sdp.js"); var input = ''; process.stdin.on('readable', function() { var chunk = process.stdin.read(); if (chunk !== null) { input += chunk; } }); process.stdin.on('end', function() { if (process.argv[2] == '--jingle') { var elem = $(input); // app does: // sess.setRemoteDescription($(iq).find('>jingle'), 'offer'); //console.log(elem.find('>content')); var sdp = new stropheJingle.SDP(''); sdp.fromJingle(elem); console.log(sdp.raw); } else if (process.argv[2] == '--sdp') { var sdp = new stropheJingle.SDP(input); var accept = $iq({to: '%(tojid)s', type: 'set'}) .c('jingle', {xmlns: 'urn:xmpp:jingle:1', //action: 'session-accept', action: '%(action)s', initiator: '%(initiator)s', responder: '%(responder)s', sid: '%(sid)s' }); sdp.toJingle(accept, 'responder'); console.log(Strophe.serialize(accept)); } }); synapse-1.53.0/contrib/prometheus/000077500000000000000000000000001420514467300171235ustar00rootroot00000000000000synapse-1.53.0/contrib/prometheus/README.md000066400000000000000000000021111420514467300203750ustar00rootroot00000000000000This directory contains some sample monitoring config for using the 'Prometheus' monitoring server against synapse. To use it, first install prometheus by following the instructions at http://prometheus.io/ ### for Prometheus v1 Add a new job to the main prometheus.conf file: ```yaml job: { name: "synapse" target_group: { target: "http://SERVER.LOCATION.HERE:PORT/_synapse/metrics" } } ``` ### for Prometheus v2 Add a new job to the main prometheus.yml file: ```yaml - job_name: "synapse" metrics_path: "/_synapse/metrics" # when endpoint uses https: scheme: "https" static_configs: - targets: ["my.server.here:port"] ``` An example of a Prometheus configuration with workers can be found in [metrics-howto.md](https://matrix-org.github.io/synapse/latest/metrics-howto.html). To use `synapse.rules` add ```yaml rule_files: - "/PATH/TO/synapse-v2.rules" ``` Metrics are disabled by default when running synapse; they must be enabled with the 'enable-metrics' option, either in the synapse config file or as a command-line option. synapse-1.53.0/contrib/prometheus/consoles/000077500000000000000000000000001420514467300207505ustar00rootroot00000000000000synapse-1.53.0/contrib/prometheus/consoles/synapse.html000066400000000000000000000264101420514467300233230ustar00rootroot00000000000000{{ template "head" . }} {{ template "prom_content_head" . }}

System Resources

CPU

Memory

File descriptors

Reactor

Total reactor time

Average reactor tick time

Storage

Queries

Transactions

Transaction execution time

Average time waiting for database connection

Cache request rate

Cache size

Requests

Requests by Servlet

 (without EventStreamRestServlet or SyncRestServlet)

Average response times

All responses by code

Error responses by code

CPU Usage

DB Usage

Average event send times

Federation

Sent Messages

Received Messages

Pending

Clients

Notifiers

Notified Events

{{ template "prom_content_tail" . }} {{ template "tail" }} synapse-1.53.0/contrib/prometheus/synapse-v1.rules000066400000000000000000000032701420514467300222070ustar00rootroot00000000000000synapse_federation_transaction_queue_pendingEdus:total = sum(synapse_federation_transaction_queue_pendingEdus or absent(synapse_federation_transaction_queue_pendingEdus)*0) synapse_federation_transaction_queue_pendingPdus:total = sum(synapse_federation_transaction_queue_pendingPdus or absent(synapse_federation_transaction_queue_pendingPdus)*0) synapse_http_server_request_count:method{servlet=""} = sum(synapse_http_server_request_count) by (method) synapse_http_server_request_count:servlet{method=""} = sum(synapse_http_server_request_count) by (servlet) synapse_http_server_request_count:total{servlet=""} = sum(synapse_http_server_request_count:by_method) by (servlet) synapse_cache:hit_ratio_5m = rate(synapse_util_caches_cache:hits[5m]) / rate(synapse_util_caches_cache:total[5m]) synapse_cache:hit_ratio_30s = rate(synapse_util_caches_cache:hits[30s]) / rate(synapse_util_caches_cache:total[30s]) synapse_federation_client_sent{type="EDU"} = synapse_federation_client_sent_edus + 0 synapse_federation_client_sent{type="PDU"} = synapse_federation_client_sent_pdu_destinations:count + 0 synapse_federation_client_sent{type="Query"} = sum(synapse_federation_client_sent_queries) by (job) synapse_federation_server_received{type="EDU"} = synapse_federation_server_received_edus + 0 synapse_federation_server_received{type="PDU"} = synapse_federation_server_received_pdus + 0 synapse_federation_server_received{type="Query"} = sum(synapse_federation_server_received_queries) by (job) synapse_federation_transaction_queue_pending{type="EDU"} = synapse_federation_transaction_queue_pending_edus + 0 synapse_federation_transaction_queue_pending{type="PDU"} = synapse_federation_transaction_queue_pending_pdus + 0 synapse-1.53.0/contrib/prometheus/synapse-v2.rules000066400000000000000000000063341420514467300222140ustar00rootroot00000000000000groups: - name: synapse rules: - record: "synapse_federation_transaction_queue_pendingEdus:total" expr: "sum(synapse_federation_transaction_queue_pendingEdus or absent(synapse_federation_transaction_queue_pendingEdus)*0)" - record: "synapse_federation_transaction_queue_pendingPdus:total" expr: "sum(synapse_federation_transaction_queue_pendingPdus or absent(synapse_federation_transaction_queue_pendingPdus)*0)" - record: 'synapse_http_server_request_count:method' labels: servlet: "" expr: "sum(synapse_http_server_request_count) by (method)" - record: 'synapse_http_server_request_count:servlet' labels: method: "" expr: 'sum(synapse_http_server_request_count) by (servlet)' - record: 'synapse_http_server_request_count:total' labels: servlet: "" expr: 'sum(synapse_http_server_request_count:by_method) by (servlet)' - record: 'synapse_cache:hit_ratio_5m' expr: 'rate(synapse_util_caches_cache:hits[5m]) / rate(synapse_util_caches_cache:total[5m])' - record: 'synapse_cache:hit_ratio_30s' expr: 'rate(synapse_util_caches_cache:hits[30s]) / rate(synapse_util_caches_cache:total[30s])' - record: 'synapse_federation_client_sent' labels: type: "EDU" expr: 'synapse_federation_client_sent_edus + 0' - record: 'synapse_federation_client_sent' labels: type: "PDU" expr: 'synapse_federation_client_sent_pdu_destinations:count + 0' - record: 'synapse_federation_client_sent' labels: type: "Query" expr: 'sum(synapse_federation_client_sent_queries) by (job)' - record: 'synapse_federation_server_received' labels: type: "EDU" expr: 'synapse_federation_server_received_edus + 0' - record: 'synapse_federation_server_received' labels: type: "PDU" expr: 'synapse_federation_server_received_pdus + 0' - record: 'synapse_federation_server_received' labels: type: "Query" expr: 'sum(synapse_federation_server_received_queries) by (job)' - record: 'synapse_federation_transaction_queue_pending' labels: type: "EDU" expr: 'synapse_federation_transaction_queue_pending_edus + 0' - record: 'synapse_federation_transaction_queue_pending' labels: type: "PDU" expr: 'synapse_federation_transaction_queue_pending_pdus + 0' - record: synapse_storage_events_persisted_by_source_type expr: sum without(type, origin_type, origin_entity) (synapse_storage_events_persisted_events_sep{origin_type="remote"}) labels: type: remote - record: synapse_storage_events_persisted_by_source_type expr: sum without(type, origin_type, origin_entity) (synapse_storage_events_persisted_events_sep{origin_entity="*client*",origin_type="local"}) labels: type: local - record: synapse_storage_events_persisted_by_source_type expr: sum without(type, origin_type, origin_entity) (synapse_storage_events_persisted_events_sep{origin_entity!="*client*",origin_type="local"}) labels: type: bridges - record: synapse_storage_events_persisted_by_event_type expr: sum without(origin_entity, origin_type) (synapse_storage_events_persisted_events_sep) - record: synapse_storage_events_persisted_by_origin expr: sum without(type) (synapse_storage_events_persisted_events_sep) synapse-1.53.0/contrib/purge_api/000077500000000000000000000000001420514467300167035ustar00rootroot00000000000000synapse-1.53.0/contrib/purge_api/README.md000066400000000000000000000011741420514467300201650ustar00rootroot00000000000000Purge history API examples ========================== # `purge_history.sh` A bash file, that uses the [purge history API](https://matrix-org.github.io/synapse/latest/admin_api/purge_history_api.html) to purge all messages in a list of rooms up to a certain event. You can select a timeframe or a number of messages that you want to keep in the room. Just configure the variables DOMAIN, ADMIN, ROOMS_ARRAY and TIME at the top of the script. # `purge_remote_media.sh` A bash file, that uses the [purge history API](https://matrix-org.github.io/synapse/latest/admin_api/purge_history_api.html) to purge all old cached remote media. synapse-1.53.0/contrib/purge_api/purge_history.sh000066400000000000000000000150571420514467300221520ustar00rootroot00000000000000#!/usr/bin/env bash # this script will use the api: # https://matrix-org.github.io/synapse/latest/admin_api/purge_history_api.html # # It will purge all messages in a list of rooms up to a cetrain event ################################################################################################### # define your domain and admin user ################################################################################################### # add this user as admin in your home server: DOMAIN=yourserver.tld # add this user as admin in your home server: ADMIN="@you_admin_username:$DOMAIN" API_URL="$DOMAIN:8008/_matrix/client/r0" ################################################################################################### #choose the rooms to prune old messages from (add a free comment at the end) ################################################################################################### # the room_id's you can get e.g. from your Riot clients "View Source" button on each message ROOMS_ARRAY=( '!DgvjtOljKujDBrxyHk:matrix.org#riot:matrix.org' '!QtykxKocfZaZOUrTwp:matrix.org#Matrix HQ' ) # ALTERNATIVELY: # you can select all the rooms that are not encrypted and loop over the result: # SELECT room_id FROM rooms WHERE room_id NOT IN (SELECT DISTINCT room_id FROM events WHERE type ='m.room.encrypted') # or # select all rooms with at least 100 members: # SELECT q.room_id FROM (select count(*) as numberofusers, room_id FROM current_state_events WHERE type ='m.room.member' # GROUP BY room_id) AS q LEFT JOIN room_aliases a ON q.room_id=a.room_id WHERE q.numberofusers > 100 ORDER BY numberofusers desc ################################################################################################### # evaluate the EVENT_ID before which should be pruned ################################################################################################### # choose a time before which the messages should be pruned: TIME='12 months ago' # ALTERNATIVELY: # a certain time: # TIME='2016-08-31 23:59:59' # creates a timestamp from the given time string: UNIX_TIMESTAMP=$(date +%s%3N --date='TZ="UTC+2" '"$TIME") # ALTERNATIVELY: # prune all messages that are older than 1000 messages ago: # LAST_MESSAGES=1000 # SQL_GET_EVENT="SELECT event_id from events WHERE type='m.room.message' AND room_id ='$ROOM' ORDER BY received_ts DESC LIMIT 1 offset $(($LAST_MESSAGES - 1))" # ALTERNATIVELY: # select the EVENT_ID manually: #EVENT_ID='$1471814088343495zpPNI:matrix.org' # an example event from 21st of Aug 2016 by Matthew ################################################################################################### # make the admin user a server admin in the database with ################################################################################################### # psql -A -t --dbname=synapse -c "UPDATE users SET admin=1 WHERE name LIKE '$ADMIN'" ################################################################################################### # database function ################################################################################################### sql (){ # for sqlite3: #sqlite3 homeserver.db "pragma busy_timeout=20000;$1" | awk '{print $2}' # for postgres: psql -A -t --dbname=synapse -c "$1" | grep -v 'Pager' } ################################################################################################### # get an access token ################################################################################################### # for example externally by watching Riot in your browser's network inspector # or internally on the server locally, use this: TOKEN=$(sql "SELECT token FROM access_tokens WHERE user_id='$ADMIN' ORDER BY id DESC LIMIT 1") AUTH="Authorization: Bearer $TOKEN" ################################################################################################### # check, if your TOKEN works. For example this works: ################################################################################################### # $ curl --header "$AUTH" "$API_URL/rooms/$ROOM/state/m.room.power_levels" ################################################################################################### # finally start pruning the room: ################################################################################################### # this will really delete local events, so the messages in the room really # disappear unless they are restored by remote federation. This is because # we pass {"delete_local_events":true} to the curl invocation below. for ROOM in "${ROOMS_ARRAY[@]}"; do echo "########################################### $(date) ################# " echo "pruning room: $ROOM ..." ROOM=${ROOM%#*} #set -x echo "check for alias in db..." # for postgres: sql "SELECT * FROM room_aliases WHERE room_id='$ROOM'" echo "get event..." # for postgres: EVENT_ID=$(sql "SELECT event_id FROM events WHERE type='m.room.message' AND received_ts<'$UNIX_TIMESTAMP' AND room_id='$ROOM' ORDER BY received_ts DESC LIMIT 1;") if [ "$EVENT_ID" == "" ]; then echo "no event $TIME" else echo "event: $EVENT_ID" SLEEP=2 set -x # call purge OUT=$(curl --header "$AUTH" -s -d '{"delete_local_events":true}' POST "$API_URL/admin/purge_history/$ROOM/$EVENT_ID") PURGE_ID=$(echo "$OUT" |grep purge_id|cut -d'"' -f4 ) if [ "$PURGE_ID" == "" ]; then # probably the history purge is already in progress for $ROOM : "continuing with next room" else while : ; do # get status of purge and sleep longer each time if still active sleep $SLEEP STATUS=$(curl --header "$AUTH" -s GET "$API_URL/admin/purge_history_status/$PURGE_ID" |grep status|cut -d'"' -f4) : "$ROOM --> Status: $STATUS" [[ "$STATUS" == "active" ]] || break SLEEP=$((SLEEP + 1)) done fi set +x sleep 1 fi done ################################################################################################### # additionally ################################################################################################### # to benefit from pruning large amounts of data, you need to call VACUUM to free the unused space. # This can take a very long time (hours) and the client have to be stopped while you do so: # $ synctl stop # $ sqlite3 -line homeserver.db "vacuum;" # $ synctl start # This could be set, so you don't need to prune every time after deleting some rows: # $ sqlite3 homeserver.db "PRAGMA auto_vacuum = FULL;" # be cautious, it could make the database somewhat slow if there are a lot of deletions exit synapse-1.53.0/contrib/purge_api/purge_remote_media.sh000066400000000000000000000045351420514467300231020ustar00rootroot00000000000000#!/usr/bin/env bash DOMAIN=yourserver.tld # add this user as admin in your home server: ADMIN="@you_admin_username:$DOMAIN" API_URL="$DOMAIN:8008/_matrix/client/r0" # choose a time before which the messages should be pruned: # TIME='2016-08-31 23:59:59' TIME='12 months ago' # creates a timestamp from the given time string: UNIX_TIMESTAMP=$(date +%s%3N --date='TZ="UTC+2" '"$TIME") ################################################################################################### # database function ################################################################################################### sql (){ # for sqlite3: #sqlite3 homeserver.db "pragma busy_timeout=20000;$1" | awk '{print $2}' # for postgres: psql -A -t --dbname=synapse -c "$1" | grep -v 'Pager' } ############################################################################### # make the admin user a server admin in the database with ############################################################################### # sql "UPDATE users SET admin=1 WHERE name LIKE '$ADMIN'" ############################################################################### # get an access token ############################################################################### # for example externally by watching Riot in your browser's network inspector # or internally on the server locally, use this: TOKEN=$(sql "SELECT token FROM access_tokens WHERE user_id='$ADMIN' ORDER BY id DESC LIMIT 1") ############################################################################### # check, if your TOKEN works. For example this works: ############################################################################### # curl --header "Authorization: Bearer $TOKEN" "$API_URL/rooms/$ROOM/state/m.room.power_levels" ############################################################################### # optional check size before ############################################################################### # echo calculate used storage before ... # du -shc ../.synapse/media_store/* ############################################################################### # finally start pruning media: ############################################################################### set -x # for debugging the generated string curl --header "Authorization: Bearer $TOKEN" -X POST "$API_URL/admin/purge_media_cache/?before_ts=$UNIX_TIMESTAMP" synapse-1.53.0/contrib/scripts/000077500000000000000000000000001420514467300164175ustar00rootroot00000000000000synapse-1.53.0/contrib/scripts/kick_users.py000077500000000000000000000061231420514467300211400ustar00rootroot00000000000000#!/usr/bin/env python import json import sys import urllib from argparse import ArgumentParser import requests def _mkurl(template, kws): for key in kws: template = template.replace(key, kws[key]) return template def main(hs, room_id, access_token, user_id_prefix, why): if not why: why = "Automated kick." print( "Kicking members on %s in room %s matching %s" % (hs, room_id, user_id_prefix) ) room_state_url = _mkurl( "$HS/_matrix/client/api/v1/rooms/$ROOM/state?access_token=$TOKEN", {"$HS": hs, "$ROOM": room_id, "$TOKEN": access_token}, ) print("Getting room state => %s" % room_state_url) res = requests.get(room_state_url) print("HTTP %s" % res.status_code) state_events = res.json() if "error" in state_events: print("FATAL") print(state_events) return kick_list = [] room_name = room_id for event in state_events: if not event["type"] == "m.room.member": if event["type"] == "m.room.name": room_name = event["content"].get("name") continue if not event["content"].get("membership") == "join": continue if event["state_key"].startswith(user_id_prefix): kick_list.append(event["state_key"]) if len(kick_list) == 0: print("No user IDs match the prefix '%s'" % user_id_prefix) return print("The following user IDs will be kicked from %s" % room_name) for uid in kick_list: print(uid) doit = input("Continue? [Y]es\n") if len(doit) > 0 and doit.lower() == "y": print("Kicking members...") # encode them all kick_list = [urllib.quote(uid) for uid in kick_list] for uid in kick_list: kick_url = _mkurl( "$HS/_matrix/client/api/v1/rooms/$ROOM/state/m.room.member/$UID?access_token=$TOKEN", {"$HS": hs, "$UID": uid, "$ROOM": room_id, "$TOKEN": access_token}, ) kick_body = {"membership": "leave", "reason": why} print("Kicking %s" % uid) res = requests.put(kick_url, data=json.dumps(kick_body)) if res.status_code != 200: print("ERROR: HTTP %s" % res.status_code) if res.json().get("error"): print("ERROR: JSON %s" % res.json()) if __name__ == "__main__": parser = ArgumentParser("Kick members in a room matching a certain user ID prefix.") parser.add_argument("-u", "--user-id", help="The user ID prefix e.g. '@irc_'") parser.add_argument("-t", "--token", help="Your access_token") parser.add_argument("-r", "--room", help="The room ID to kick members in") parser.add_argument( "-s", "--homeserver", help="The base HS url e.g. http://matrix.org" ) parser.add_argument("-w", "--why", help="Reason for the kick. Optional.") args = parser.parse_args() if not args.room or not args.token or not args.user_id or not args.homeserver: parser.print_help() sys.exit(1) else: main(args.homeserver, args.room, args.token, args.user_id, args.why) synapse-1.53.0/contrib/systemd-with-workers/000077500000000000000000000000001420514467300210635ustar00rootroot00000000000000synapse-1.53.0/contrib/systemd-with-workers/README.md000066400000000000000000000003321420514467300223400ustar00rootroot00000000000000The documentation for using systemd to manage synapse workers is now part of the main synapse distribution. See [docs/systemd-with-workers](https://matrix-org.github.io/synapse/latest/systemd-with-workers/index.html). synapse-1.53.0/contrib/systemd/000077500000000000000000000000001420514467300164205ustar00rootroot00000000000000synapse-1.53.0/contrib/systemd/README.md000066400000000000000000000020011420514467300176700ustar00rootroot00000000000000# Setup Synapse with Systemd This is a setup for managing synapse with a user contributed systemd unit file. It provides a `matrix-synapse` systemd unit file that should be tailored to accommodate your installation in accordance with the installation instructions provided in [installation instructions](https://matrix-org.github.io/synapse/latest/setup/installation.html). ## Setup 1. Under the service section, ensure the `User` variable matches which user you installed synapse under and wish to run it as. 2. Under the service section, ensure the `WorkingDirectory` variable matches where you have installed synapse. 3. Under the service section, ensure the `ExecStart` variable matches the appropriate locations of your installation. 4. Copy the `matrix-synapse.service` to `/etc/systemd/system/` 5. Start Synapse: `sudo systemctl start matrix-synapse` 6. Verify Synapse is running: `sudo systemctl status matrix-synapse` 7. *optional* Enable Synapse to start at system boot: `sudo systemctl enable matrix-synapse` synapse-1.53.0/contrib/systemd/log_config.yaml000066400000000000000000000010271420514467300214120ustar00rootroot00000000000000version: 1 # In systemd's journal, loglevel is implicitly stored, so let's omit it # from the message text. formatters: journal_fmt: format: '%(name)s: [%(request)s] %(message)s' filters: context: (): synapse.logging.context.LoggingContextFilter request: "" handlers: journal: class: systemd.journal.JournalHandler formatter: journal_fmt filters: [context] SYSLOG_IDENTIFIER: synapse root: level: INFO handlers: [journal] disable_existing_loggers: False synapse-1.53.0/contrib/systemd/matrix-synapse.service000066400000000000000000000022271420514467300227710ustar00rootroot00000000000000# Example systemd configuration file for synapse. Copy into # /etc/systemd/system/, update the paths if necessary, then: # # systemctl enable matrix-synapse # systemctl start matrix-synapse # # This assumes that Synapse has been installed by a user named # synapse. # # This assumes that Synapse has been installed in a virtualenv in # the user's home directory: `/home/synapse/synapse/env`. # # **NOTE:** This is an example service file that may change in the future. If you # wish to use this please copy rather than symlink it. [Unit] Description=Synapse Matrix homeserver # If you are using postgresql to persist data, uncomment this line to make sure # synapse starts after the postgresql service. # After=postgresql.service [Service] Type=notify NotifyAccess=main ExecReload=/bin/kill -HUP $MAINPID Restart=on-abort User=synapse Group=nogroup WorkingDirectory=/home/synapse/synapse ExecStart=/home/synapse/synapse/env/bin/python -m synapse.app.homeserver --config-path=/home/synapse/synapse/homeserver.yaml SyslogIdentifier=matrix-synapse # adjust the cache factor if necessary # Environment=SYNAPSE_CACHE_FACTOR=2.0 [Install] WantedBy=multi-user.target synapse-1.53.0/contrib/systemd/override-hardened.conf000066400000000000000000000036501420514467300226620ustar00rootroot00000000000000[Service] # The following directives give the synapse service R/W access to: # - /run/matrix-synapse # - /var/lib/matrix-synapse # - /var/log/matrix-synapse RuntimeDirectory=matrix-synapse StateDirectory=matrix-synapse LogsDirectory=matrix-synapse ###################### ## Security Sandbox ## ###################### # Make sure that the service has its own unshared tmpfs at /tmp and that it # cannot see or change any real devices PrivateTmp=true PrivateDevices=true # We give no capabilities to a service by default CapabilityBoundingSet= AmbientCapabilities= # Protect the following from modification: # - The entire filesystem # - sysctl settings and loaded kernel modules # - No modifications allowed to Control Groups # - Hostname # - System Clock ProtectSystem=strict ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true ProtectClock=true ProtectHostname=true # Prevent access to the following: # - /home directory # - Kernel logs ProtectHome=tmpfs ProtectKernelLogs=true # Make sure that the process can only see PIDs and process details of itself, # and the second option disables seeing details of things like system load and # I/O etc ProtectProc=invisible ProcSubset=pid # While not needed, we set these options explicitly # - This process has been given access to the host network # - It can also communicate with any IP Address PrivateNetwork=false RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX IPAddressAllow=any # Restrict system calls to a sane bunch SystemCallArchitectures=native SystemCallFilter=@system-service SystemCallFilter=~@privileged @resources @obsolete # Misc restrictions # - Since the process is a python process it needs to be able to write and # execute memory regions, so we set MemoryDenyWriteExecute to false RestrictSUIDSGID=true RemoveIPC=true NoNewPrivileges=true RestrictRealtime=true RestrictNamespaces=true LockPersonality=true PrivateUsers=true MemoryDenyWriteExecute=false synapse-1.53.0/contrib/vertobot/000077500000000000000000000000001420514467300165745ustar00rootroot00000000000000synapse-1.53.0/contrib/vertobot/.gitignore000066400000000000000000000000321420514467300205570ustar00rootroot00000000000000vucbot.yaml vertobot.yaml synapse-1.53.0/contrib/vertobot/bot.pl000077500000000000000000000224331420514467300177240ustar00rootroot00000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; # // use IO::Socket::SSL qw(SSL_VERIFY_NONE); use IO::Async::Loop; use Net::Async::WebSocket::Client; use Net::Async::Matrix 0.11_002; use JSON; use YAML; use Data::UUID; use Getopt::Long; use Data::Dumper; binmode STDOUT, ":encoding(UTF-8)"; binmode STDERR, ":encoding(UTF-8)"; my $loop = IO::Async::Loop->new; # Net::Async::HTTP + SSL + IO::Poll doesn't play well. See # https://rt.cpan.org/Ticket/Display.html?id=93107 ref $loop eq "IO::Async::Loop::Poll" and warn "Using SSL with IO::Poll causes known memory-leaks!!\n"; GetOptions( 'C|config=s' => \my $CONFIG, 'eval-from=s' => \my $EVAL_FROM, ) or exit 1; if( defined $EVAL_FROM ) { # An emergency 'eval() this file' hack $SIG{HUP} = sub { my $code = do { open my $fh, "<", $EVAL_FROM or warn( "Cannot read - $!" ), return; local $/; <$fh> }; eval $code or warn "Cannot eval() - $@"; }; } defined $CONFIG or die "Must supply --config\n"; my %CONFIG = %{ YAML::LoadFile( $CONFIG ) }; my %MATRIX_CONFIG = %{ $CONFIG{matrix} }; # No harm in always applying this $MATRIX_CONFIG{SSL_verify_mode} = SSL_VERIFY_NONE; # Track every Room object, so we can ->leave them all on shutdown my %bot_matrix_rooms; my $bridgestate = {}; my $roomid_by_callid = {}; my $bot_verto = Net::Async::WebSocket::Client->new( on_frame => sub { my ( $self, $frame ) = @_; warn "[Verto] receiving $frame"; on_verto_json($frame); }, ); $loop->add( $bot_verto ); my $sessid = lc new Data::UUID->create_str(); my $bot_matrix = Net::Async::Matrix->new( %MATRIX_CONFIG, on_log => sub { warn "log: @_\n" }, on_invite => sub { my ($matrix, $invite) = @_; warn "[Matrix] invited to: " . $invite->{room_id} . " by " . $invite->{inviter} . "\n"; $matrix->join_room( $invite->{room_id} )->get; }, on_room_new => sub { my ($matrix, $room) = @_; warn "[Matrix] have a room ID: " . $room->room_id . "\n"; $bot_matrix_rooms{$room->room_id} = $room; # log in to verto on behalf of this room $bridgestate->{$room->room_id}->{sessid} = $sessid; $room->configure( on_message => \&on_room_message, ); my $f = send_verto_json_request("login", { 'login' => $CONFIG{'verto-dialog-params'}{'login'}, 'passwd' => $CONFIG{'verto-config'}{'passwd'}, 'sessid' => $sessid, }); $matrix->adopt_future($f); # we deliberately don't paginate the room, as we only care about # new calls }, on_unknown_event => \&on_unknown_event, on_error => sub { print STDERR "Matrix failure: @_\n"; }, ); $loop->add( $bot_matrix ); sub on_unknown_event { my ($matrix, $event) = @_; print Dumper($event); my $room_id = $event->{room_id}; my %dp = %{$CONFIG{'verto-dialog-params'}}; $dp{callID} = $bridgestate->{$room_id}->{callid}; if ($event->{type} eq 'm.call.invite') { $bridgestate->{$room_id}->{matrix_callid} = $event->{content}->{call_id}; $bridgestate->{$room_id}->{callid} = lc new Data::UUID->create_str(); $bridgestate->{$room_id}->{offer} = $event->{content}->{offer}->{sdp}; $bridgestate->{$room_id}->{gathered_candidates} = 0; $roomid_by_callid->{ $bridgestate->{$room_id}->{callid} } = $room_id; # no trickle ICE in verto apparently } elsif ($event->{type} eq 'm.call.candidates') { # XXX: compare call IDs if (!$bridgestate->{$room_id}->{gathered_candidates}) { $bridgestate->{$room_id}->{gathered_candidates} = 1; my $offer = $bridgestate->{$room_id}->{offer}; my $candidate_block = { audio => '', video => '', }; foreach (@{$event->{content}->{candidates}}) { if ($_->{sdpMid}) { $candidate_block->{$_->{sdpMid}} .= "a=" . $_->{candidate} . "\r\n"; } else { $candidate_block->{audio} .= "a=" . $_->{candidate} . "\r\n"; $candidate_block->{video} .= "a=" . $_->{candidate} . "\r\n"; } } # XXX: assumes audio comes first #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{audio}/; #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{video}/; $offer =~ s/(m=video)/$candidate_block->{audio}$1/; $offer =~ s/(.$)/$1\n$candidate_block->{video}$1/; my $f = send_verto_json_request("verto.invite", { "sdp" => $offer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $matrix->adopt_future($f); } else { # ignore them, as no trickle ICE, although we might as well # batch them up # foreach (@{$event->{content}->{candidates}}) { # push @{$bridgestate->{$room_id}->{candidates}}, $_; # } } } elsif ($event->{type} eq 'm.call.hangup') { if ($bridgestate->{$room_id}->{matrix_callid} eq $event->{content}->{call_id}) { my $f = send_verto_json_request("verto.bye", { "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $matrix->adopt_future($f); } else { warn "Ignoring unrecognised callid: ".$event->{content}->{call_id}; } } else { warn "Unhandled event: $event->{type}"; } } sub on_room_message { my ($room, $from, $content) = @_; my $room_id = $room->room_id; warn "[Matrix] in $room_id: $from: " . $content->{body} . "\n"; } Future->needs_all( $bot_matrix->login( %{ $CONFIG{"matrix-bot"} } )->then( sub { $bot_matrix->start; }), $bot_verto->connect( %{ $CONFIG{"verto-bot"} }, on_connect_error => sub { die "Cannot connect to verto - $_[-1]" }, on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" }, )->on_done( sub { warn("[Verto] connected to websocket"); }), )->get; $loop->attach_signal( PIPE => sub { warn "pipe\n" } ); $loop->attach_signal( INT => sub { $loop->stop }, ); $loop->attach_signal( TERM => sub { $loop->stop }, ); eval { $loop->run; } or my $e = $@; # When the bot gets shut down, have it leave the rooms so it's clear to observers # that it is no longer running. # if( $CONFIG{"leave-on-shutdown"} // 1 ) { # print STDERR "Removing bot from Matrix rooms...\n"; # Future->wait_all( map { $_->leave->else_done() } values %bot_matrix_rooms )->get; # } # else { # print STDERR "Leaving bot users in Matrix rooms.\n"; # } die $e if $e; exit 0; { my $json_id; my $requests; sub send_verto_json_request { $json_id ||= 1; my ($method, $params) = @_; my $json = { jsonrpc => "2.0", method => $method, params => $params, id => $json_id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); my $request = $loop->new_future; $requests->{$json_id} = $request; $json_id++; return $request; } sub send_verto_json_response { my ($result, $id) = @_; my $json = { jsonrpc => "2.0", result => $result, id => $id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); } sub on_verto_json { my $json = JSON->new->decode( $_[0] ); if ($json->{method}) { if (($json->{method} eq 'verto.answer' && $json->{params}->{sdp}) || $json->{method} eq 'verto.media') { my $room_id = $roomid_by_callid->{$json->{params}->{callID}}; my $room = $bot_matrix_rooms{$room_id}; if ($json->{params}->{sdp}) { # HACK HACK HACK HACK $room->_do_POST_json( "/send/m.call.answer", { call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, answer => { sdp => $json->{params}->{sdp}, type => "answer", }, })->then( sub { send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } } else { warn ("[Verto] unhandled method: " . $json->{method}); send_verto_json_response( { method => $json->{method}, }, $json->{id}); } } elsif ($json->{result}) { $requests->{$json->{id}}->done($json->{result}); } elsif ($json->{error}) { $requests->{$json->{id}}->fail($json->{error}->{message}, $json->{error}); } } } synapse-1.53.0/contrib/vertobot/bridge.pl000077500000000000000000000436171420514467300204030ustar00rootroot00000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; # // use IO::Socket::SSL qw(SSL_VERIFY_NONE); use IO::Async::Loop; use Net::Async::WebSocket::Client; use Net::Async::HTTP; use Net::Async::HTTP::Server; use JSON; use YAML; use Data::UUID; use Getopt::Long; use Data::Dumper; use URI::Encode qw(uri_encode uri_decode); binmode STDOUT, ":encoding(UTF-8)"; binmode STDERR, ":encoding(UTF-8)"; my $msisdn_to_matrix = { '447417892400' => '@matthew:matrix.org', }; my $matrix_to_msisdn = {}; foreach (keys %$msisdn_to_matrix) { $matrix_to_msisdn->{$msisdn_to_matrix->{$_}} = $_; } my $loop = IO::Async::Loop->new; # Net::Async::HTTP + SSL + IO::Poll doesn't play well. See # https://rt.cpan.org/Ticket/Display.html?id=93107 # ref $loop eq "IO::Async::Loop::Poll" and # warn "Using SSL with IO::Poll causes known memory-leaks!!\n"; GetOptions( 'C|config=s' => \my $CONFIG, 'eval-from=s' => \my $EVAL_FROM, ) or exit 1; if( defined $EVAL_FROM ) { # An emergency 'eval() this file' hack $SIG{HUP} = sub { my $code = do { open my $fh, "<", $EVAL_FROM or warn( "Cannot read - $!" ), return; local $/; <$fh> }; eval $code or warn "Cannot eval() - $@"; }; } defined $CONFIG or die "Must supply --config\n"; my %CONFIG = %{ YAML::LoadFile( $CONFIG ) }; my %MATRIX_CONFIG = %{ $CONFIG{matrix} }; # No harm in always applying this $MATRIX_CONFIG{SSL_verify_mode} = SSL_VERIFY_NONE; my $bridgestate = {}; my $roomid_by_callid = {}; my $sessid = lc new Data::UUID->create_str(); my $as_token = $CONFIG{"matrix-bot"}->{as_token}; my $hs_domain = $CONFIG{"matrix-bot"}->{domain}; my $http = Net::Async::HTTP->new(); $loop->add( $http ); sub create_virtual_user { my ($localpart) = @_; my ( $response ) = $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/register?". "access_token=$as_token&user_id=$localpart" ), content_type => "application/json", content => <get; warn $response->as_string if ($response->code != 200); } my $http_server = Net::Async::HTTP::Server->new( on_request => sub { my $self = shift; my ( $req ) = @_; my $response; my $path = uri_decode($req->path); warn("request: $path"); if ($path =~ m#/users/\@(\+.*)#) { # when queried about virtual users, auto-create them in the HS my $localpart = $1; create_virtual_user($localpart); $response = HTTP::Response->new( 200 ); $response->add_content('{}'); $response->content_type( "application/json" ); } elsif ($path =~ m#/transactions/(.*)#) { my $event = JSON->new->decode($req->body); print Dumper($event); my $room_id = $event->{room_id}; my %dp = %{$CONFIG{'verto-dialog-params'}}; $dp{callID} = $bridgestate->{$room_id}->{callid}; if ($event->{type} eq 'm.room.membership') { my $membership = $event->{content}->{membership}; my $state_key = $event->{state_key}; my $room_id = $event->{state_id}; if ($membership eq 'invite') { # autojoin invites my ( $response ) = $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/rooms/$room_id/join?". "access_token=$as_token&user_id=$state_key" ), content_type => "application/json", content => "{}", )->get; warn $response->as_string if ($response->code != 200); } } elsif ($event->{type} eq 'm.call.invite') { my $room_id = $event->{room_id}; $bridgestate->{$room_id}->{matrix_callid} = $event->{content}->{call_id}; $bridgestate->{$room_id}->{callid} = lc new Data::UUID->create_str(); $bridgestate->{$room_id}->{sessid} = $sessid; # $bridgestate->{$room_id}->{offer} = $event->{content}->{offer}->{sdp}; my $offer = $event->{content}->{offer}->{sdp}; # $bridgestate->{$room_id}->{gathered_candidates} = 0; $roomid_by_callid->{ $bridgestate->{$room_id}->{callid} } = $room_id; # no trickle ICE in verto apparently my $f = send_verto_json_request("verto.invite", { "sdp" => $offer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $self->adopt_future($f); } # elsif ($event->{type} eq 'm.call.candidates') { # # XXX: this could fire for both matrix->verto and verto->matrix calls # # and races as it collects candidates. much better to just turn off # # candidate gathering in the webclient entirely for now # # my $room_id = $event->{room_id}; # # XXX: compare call IDs # if (!$bridgestate->{$room_id}->{gathered_candidates}) { # $bridgestate->{$room_id}->{gathered_candidates} = 1; # my $offer = $bridgestate->{$room_id}->{offer}; # my $candidate_block = ""; # foreach (@{$event->{content}->{candidates}}) { # $candidate_block .= "a=" . $_->{candidate} . "\r\n"; # } # # XXX: collate using the right m= line - for now assume audio call # $offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/; # # my $f = send_verto_json_request("verto.invite", { # "sdp" => $offer, # "dialogParams" => \%dp, # "sessid" => $bridgestate->{$room_id}->{sessid}, # }); # $self->adopt_future($f); # } # else { # # ignore them, as no trickle ICE, although we might as well # # batch them up # # foreach (@{$event->{content}->{candidates}}) { # # push @{$bridgestate->{$room_id}->{candidates}}, $_; # # } # } # } elsif ($event->{type} eq 'm.call.answer') { # grab the answer and relay it to verto as a verto.answer my $room_id = $event->{room_id}; my $answer = $event->{content}->{answer}->{sdp}; my $f = send_verto_json_request("verto.answer", { "sdp" => $answer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $self->adopt_future($f); } elsif ($event->{type} eq 'm.call.hangup') { my $room_id = $event->{room_id}; if ($bridgestate->{$room_id}->{matrix_callid} eq $event->{content}->{call_id}) { my $f = send_verto_json_request("verto.bye", { "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $self->adopt_future($f); } else { warn "Ignoring unrecognised callid: ".$event->{content}->{call_id}; } } else { warn "Unhandled event: $event->{type}"; } $response = HTTP::Response->new( 200 ); $response->add_content('{}'); $response->content_type( "application/json" ); } else { warn "Unhandled path: $path"; $response = HTTP::Response->new( 404 ); } $req->respond( $response ); }, ); $loop->add( $http_server ); $http_server->listen( addr => { family => "inet", socktype => "stream", port => 8009 }, on_listen_error => sub { die "Cannot listen - $_[-1]\n" }, ); my $bot_verto = Net::Async::WebSocket::Client->new( on_frame => sub { my ( $self, $frame ) = @_; warn "[Verto] receiving $frame"; on_verto_json($frame); }, ); $loop->add( $bot_verto ); my $verto_connecting = $loop->new_future; $bot_verto->connect( %{ $CONFIG{"verto-bot"} }, on_connected => sub { warn("[Verto] connected to websocket"); if (not $verto_connecting->is_done) { $verto_connecting->done($bot_verto); send_verto_json_request("login", { 'login' => $CONFIG{'verto-dialog-params'}{'login'}, 'passwd' => $CONFIG{'verto-config'}{'passwd'}, 'sessid' => $sessid, }); } }, on_connect_error => sub { die "Cannot connect to verto - $_[-1]" }, on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" }, ); # die Dumper($verto_connecting); my $as_url = $CONFIG{"matrix-bot"}->{as_url}; Future->needs_all( $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}."/_matrix/appservice/v1/register" ), content_type => "application/json", content => <then( sub{ my ($response) = (@_); warn $response->as_string if ($response->code != 200); return Future->done; }), $verto_connecting, )->get; $loop->attach_signal( PIPE => sub { warn "pipe\n" } ); $loop->attach_signal( INT => sub { $loop->stop }, ); $loop->attach_signal( TERM => sub { $loop->stop }, ); eval { $loop->run; } or my $e = $@; die $e if $e; exit 0; { my $json_id; my $requests; sub send_verto_json_request { $json_id ||= 1; my ($method, $params) = @_; my $json = { jsonrpc => "2.0", method => $method, params => $params, id => $json_id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); my $request = $loop->new_future; $requests->{$json_id} = $request; $json_id++; return $request; } sub send_verto_json_response { my ($result, $id) = @_; my $json = { jsonrpc => "2.0", result => $result, id => $id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); } sub on_verto_json { my $json = JSON->new->decode( $_[0] ); if ($json->{method}) { if (($json->{method} eq 'verto.answer' && $json->{params}->{sdp}) || $json->{method} eq 'verto.media') { my $caller = $json->{dialogParams}->{caller_id_number}; my $callee = $json->{dialogParams}->{destination_number}; my $caller_user = '@+' . $caller . ':' . $hs_domain; my $callee_user = $msisdn_to_matrix->{$callee} || warn "unrecogised callee: $callee"; my $room_id = $roomid_by_callid->{$json->{params}->{callID}}; if ($json->{params}->{sdp}) { $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/send/m.call.answer?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, answer => { sdp => $json->{params}->{sdp}, type => "answer", }, }), )->then( sub { send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } } elsif ($json->{method} eq 'verto.invite') { my $caller = $json->{dialogParams}->{caller_id_number}; my $callee = $json->{dialogParams}->{destination_number}; my $caller_user = '@+' . $caller . ':' . $hs_domain; my $callee_user = $msisdn_to_matrix->{$callee} || warn "unrecogised callee: $callee"; my $alias = ($caller lt $callee) ? ($caller.'-'.$callee) : ($callee.'-'.$caller); my $room_id; # create a virtual user for the caller if needed. create_virtual_user($caller); # create a room of form #peer-peer and invite the callee $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/createRoom?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ room_alias_name => $alias, invite => [ $callee_user ], }), )->then( sub { my ( $response ) = @_; my $resp = JSON->new->decode($response->content); $room_id = $resp->{room_id}; $roomid_by_callid->{$json->{params}->{callID}} = $room_id; })->get; # join it my ($response) = $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/join/$room_id?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => '{}', )->get; $bridgestate->{$room_id}->{matrix_callid} = lc new Data::UUID->create_str(); $bridgestate->{$room_id}->{callid} = $json->{dialogParams}->{callID}; $bridgestate->{$room_id}->{sessid} = $sessid; # put the m.call.invite in there $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/send/m.call.invite?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, answer => { sdp => $json->{params}->{sdp}, type => "offer", }, }), )->then( sub { # acknowledge the verto send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } elsif ($json->{method} eq 'verto.bye') { my $caller = $json->{dialogParams}->{caller_id_number}; my $callee = $json->{dialogParams}->{destination_number}; my $caller_user = '@+' . $caller . ':' . $hs_domain; my $callee_user = $msisdn_to_matrix->{$callee} || warn "unrecogised callee: $callee"; my $room_id = $roomid_by_callid->{$json->{params}->{callID}}; # put the m.call.hangup into the room $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/send/m.call.hangup?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, }), )->then( sub { # acknowledge the verto send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } else { warn ("[Verto] unhandled method: " . $json->{method}); send_verto_json_response( { method => $json->{method}, }, $json->{id}); } } elsif ($json->{result}) { $requests->{$json->{id}}->done($json->{result}); } elsif ($json->{error}) { $requests->{$json->{id}}->fail($json->{error}->{message}, $json->{error}); } } } synapse-1.53.0/contrib/vertobot/config.yaml000066400000000000000000000012431420514467300207250ustar00rootroot00000000000000# Generic Matrix connection params matrix: server: 'matrix.org' SSL: 1 # Bot-user connection details matrix-bot: user_id: '@vertobot:matrix.org' password: '' domain: 'matrix.org" as_url: 'http://localhost:8009' as_token: 'vertobot123' verto-bot: host: webrtc.freeswitch.org service: 8081 url: "ws://webrtc.freeswitch.org:8081/" verto-config: passwd: 1234 verto-dialog-params: useVideo: false useStereo: false tag: "webcam" login: "1008@webrtc.freeswitch.org" destination_number: "9664" caller_id_name: "FreeSWITCH User" caller_id_number: "1008" callID: "" remote_caller_id_name: "Outbound Call" remote_caller_id_number: "9664" synapse-1.53.0/contrib/vertobot/cpanfile000066400000000000000000000005651420514467300203060ustar00rootroot00000000000000requires 'parent', 0; requires 'Future', '>= 0.29'; requires 'Net::Async::Matrix', '>= 0.11_002'; requires 'Net::Async::Matrix::Utils'; requires 'Net::Async::WebSocket::Protocol', 0; requires 'Data::UUID', 0; requires 'IO::Async', '>= 0.63'; requires 'IO::Async::SSL', 0; requires 'IO::Socket::SSL', 0; requires 'YAML', 0; requires 'JSON', 0; requires 'Getopt::Long', 0; synapse-1.53.0/contrib/vertobot/verto-example.json000066400000000000000000000172551420514467300222710ustar00rootroot00000000000000# JSON is shown in *reverse* chronological order. # Send v. Receive is implicit. { "jsonrpc": "2.0", "id": 7, "result": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "message": "CALL ENDED", "causeCode": 16, "cause": "NORMAL_CLEARING", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.bye", "params": { "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 7 } { "jsonrpc": "2.0", "id": 6, "result": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "action": "toggleHold", "holdState": "active", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.modify", "params": { "action": "toggleHold", "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 6 } { "jsonrpc": "2.0", "id": 5, "result": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "action": "toggleHold", "holdState": "held", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.modify", "params": { "action": "toggleHold", "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 5 } { "jsonrpc": "2.0", "id": 349819, "result": { "method": "verto.answer" } } { "jsonrpc": "2.0", "id": 349819, "method": "verto.answer", "params": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "sdp": "v=0\no=FreeSWITCH 1417101432 1417101433 IN IP4 209.105.235.10\ns=FreeSWITCH\nc=IN IP4 209.105.235.10\nt=0 0\na=msid-semantic: WMS jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vq\nm=audio 30134 RTP/SAVPF 111 126\na=rtpmap:111 opus/48000/2\na=fmtp:111 minptime=10; stereo=1\na=rtpmap:126 telephone-event/8000\na=silenceSupp:off - - - -\na=ptime:20\na=sendrecv\na=fingerprint:sha-256 F8:72:18:E9:72:89:99:22:5B:F8:B6:C6:C6:0D:C5:9B:B2:FB:BC:CA:8D:AB:13:8A:66:E1:37:38:A0:16:AA:41\na=rtcp-mux\na=rtcp:30134 IN IP4 209.105.235.10\na=ssrc:210967934 cname:rOIEajpw4FocakWY\na=ssrc:210967934 msid:jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vq a0\na=ssrc:210967934 mslabel:jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vq\na=ssrc:210967934 label:jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vqa0\na=ice-ufrag:OKwTmGLapwmxn7OF\na=ice-pwd:MmaMwq8rVmtWxfLbQ7U2Ew3T\na=candidate:2372654928 1 udp 659136 209.105.235.10 30134 typ host generation 0\n" } } { "jsonrpc": "2.0", "id": 4, "result": { "message": "CALL CREATED", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.invite", "params": { "sdp": "v=0\r\no=- 1381685806032722557 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio\r\na=msid-semantic: WMS 6OOMyGAyJakjwaOOBtV7WcBCCuIW6PpuXsNg\r\nm=audio 63088 RTP/SAVPF 111 103 104 0 8 106 105 13 126\r\nc=IN IP4 81.138.8.249\r\na=rtcp:63088 IN IP4 81.138.8.249\r\na=candidate:460398169 1 udp 2122260223 10.10.79.10 49945 typ host generation 0\r\na=candidate:460398169 2 udp 2122260223 10.10.79.10 49945 typ host generation 0\r\na=candidate:3460887983 1 udp 2122194687 192.168.1.64 63088 typ host generation 0\r\na=candidate:3460887983 2 udp 2122194687 192.168.1.64 63088 typ host generation 0\r\na=candidate:945327227 1 udp 1685987071 81.138.8.249 63088 typ srflx raddr 192.168.1.64 rport 63088 generation 0\r\na=candidate:945327227 2 udp 1685987071 81.138.8.249 63088 typ srflx raddr 192.168.1.64 rport 63088 generation 0\r\na=candidate:1441981097 1 tcp 1518280447 10.10.79.10 0 typ host tcptype active generation 0\r\na=candidate:1441981097 2 tcp 1518280447 10.10.79.10 0 typ host tcptype active generation 0\r\na=candidate:2160789855 1 tcp 1518214911 192.168.1.64 0 typ host tcptype active generation 0\r\na=candidate:2160789855 2 tcp 1518214911 192.168.1.64 0 typ host tcptype active generation 0\r\na=ice-ufrag:cP4qeRhn0LpcpA88\r\na=ice-pwd:fREmgSkXsDLGUUH1bwfrBQhW\r\na=ice-options:google-ice\r\na=fingerprint:sha-256 AF:35:64:1B:62:8A:EF:27:AE:2B:88:2E:FE:78:29:0B:08:DA:64:6C:DE:02:57:E3:EE:B1:D7:86:B8:36:8F:B0\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10; stereo=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:126 telephone-event/8000\r\na=maxptime:60\r\na=ssrc:558827154 cname:vdKHBNqa17t2gmE3\r\na=ssrc:558827154 msid:6OOMyGAyJakjwaOOBtV7WcBCCuIW6PpuXsNg bf1303fb-9833-4d7d-b9e4-b32cfe04acc3\r\na=ssrc:558827154 mslabel:6OOMyGAyJakjwaOOBtV7WcBCCuIW6PpuXsNg\r\na=ssrc:558827154 label:bf1303fb-9833-4d7d-b9e4-b32cfe04acc3\r\n", "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 4 } { "jsonrpc": "2.0", "id": 3, "result": { "message": "logged in", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "id": 1, "error": { "code": -32000, "message": "Authentication Required" } } { "jsonrpc": "2.0", "method": "login", "params": { "login": "1008@webrtc.freeswitch.org", "passwd": "1234", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 3 } { "jsonrpc": "2.0", "id": 2, "error": { "code": -32000, "message": "Authentication Required" } } { "jsonrpc": "2.0", "method": "login", "params": { "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 1 } { "jsonrpc": "2.0", "method": "login", "params": { "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 2 } synapse-1.53.0/debian/000077500000000000000000000000001420514467300145125ustar00rootroot00000000000000synapse-1.53.0/debian/.gitignore000066400000000000000000000002351420514467300165020ustar00rootroot00000000000000/matrix-synapse-py3.*.debhelper /matrix-synapse-py3.debhelper.log /matrix-synapse-py3.substvars /matrix-synapse-*/ /files /debhelper-build-stamp /.debhelper synapse-1.53.0/debian/NEWS000066400000000000000000000032121420514467300152070ustar00rootroot00000000000000matrix-synapse-py3 (0.34.0) stable; urgency=medium matrix-synapse-py3 is intended as a drop-in replacement for the existing matrix-synapse package. When the package is installed, matrix-synapse will be automatically uninstalled. The replacement should be relatively seamless, however, please note the following important differences to matrix-synapse: * Most importantly, the matrix-synapse service now runs under Python 3 rather than Python 2.7. * Synapse is installed into its own virtualenv (in /opt/venvs/matrix-synapse) instead of using the system python libraries. (This may mean that you can remove a number of old dependencies with `apt autoremove`). * If you have previously manually installed any custom python extensions (such as matrix-synapse-rest-auth) into the system python directories, you will need to reinstall them in the new virtualenv. Please consult the documentation of the relevant extensions for further details. matrix-synapse-py3 will take over responsibility for the existing configuration files, including the matrix-synapse systemd service. Beware, however, that `apt purge matrix-synapse` will *disable* the matrix-synapse service (so that it will not be started on reboot), even though that service is no longer being provided by the matrix-synapse package. It can be re-enabled with `systemctl enable matrix-synapse`. The matrix.org team will continue to provide Python 2 `matrix-synapse` packages for the next couple of releases, to allow time for system administrators to test the new packages. -- Richard van der Hoff Wed, 19 Dec 2018 14:00:00 +0000 synapse-1.53.0/debian/build_virtualenv000077500000000000000000000076721420514467300200320ustar00rootroot00000000000000#!/bin/bash # # runs dh_virtualenv to build the virtualenv in the build directory, # and then runs the trial tests against the installed synapse. set -e export DH_VIRTUALENV_INSTALL_ROOT=/opt/venvs # make sure that the virtualenv links to the specific version of python, by # dereferencing the python3 symlink. # # Otherwise, if somebody tries to install (say) the stretch package on buster, # they will get a confusing error about "No module named 'synapse'", because # python won't look in the right directory. At least this way, the error will # be a *bit* more obvious. # SNAKE=$(readlink -e /usr/bin/python3) # try to set the CFLAGS so any compiled C extensions are compiled with the most # generic as possible x64 instructions, so that compiling it on a new Intel chip # doesn't enable features not available on older ones or AMD. # # TODO: add similar things for non-amd64, or figure out a more generic way to # do this. case $(dpkg-architecture -q DEB_HOST_ARCH) in amd64) export CFLAGS=-march=x86-64 ;; esac # Use --builtin-venv to use the better `venv` module from CPython 3.4+ rather # than the 2/3 compatible `virtualenv`. dh_virtualenv \ --install-suffix "matrix-synapse" \ --builtin-venv \ --python "$SNAKE" \ --upgrade-pip \ --preinstall="lxml" \ --preinstall="mock" \ --preinstall="wheel" \ --extra-pip-arg="--no-cache-dir" \ --extra-pip-arg="--compile" \ --extras="all,systemd,test" PACKAGE_BUILD_DIR="debian/matrix-synapse-py3" VIRTUALENV_DIR="${PACKAGE_BUILD_DIR}${DH_VIRTUALENV_INSTALL_ROOT}/matrix-synapse" TARGET_PYTHON="${VIRTUALENV_DIR}/bin/python" case "$DEB_BUILD_OPTIONS" in *nocheck*) # Skip running tests if "nocheck" present in $DEB_BUILD_OPTIONS ;; *) # Copy tests to a temporary directory so that we can put them on the # PYTHONPATH without putting the uninstalled synapse on the pythonpath. tmpdir=$(mktemp -d) trap 'rm -r $tmpdir' EXIT cp -r tests "$tmpdir" PYTHONPATH="$tmpdir" \ "${TARGET_PYTHON}" -m twisted.trial --reporter=text -j2 tests ;; esac # build the config file "${TARGET_PYTHON}" "${VIRTUALENV_DIR}/bin/generate_config" \ --config-dir="/etc/matrix-synapse" \ --data-dir="/var/lib/matrix-synapse" | perl -pe ' # tweak the paths to the tls certs and signing keys /^tls_.*_path:/ and s/SERVERNAME/homeserver/; /^signing_key_path:/ and s/SERVERNAME/homeserver/; # tweak the pid file location /^pid_file:/ and s#:.*#: "/var/run/matrix-synapse.pid"#; # tweak the path to the log config /^log_config:/ and s/SERVERNAME\.log\.config/log.yaml/; # tweak the path to the media store /^media_store_path:/ and s#/media_store#/media#; # remove the server_name setting, which is set in a separate file /^server_name:/ and $_ = "#\n# This is set in /etc/matrix-synapse/conf.d/server_name.yaml for Debian installations.\n# $_"; # remove the report_stats setting, which is set in a separate file /^# report_stats:/ and $_ = ""; ' > "${PACKAGE_BUILD_DIR}/etc/matrix-synapse/homeserver.yaml" # build the log config file "${TARGET_PYTHON}" "${VIRTUALENV_DIR}/bin/generate_log_config" \ --output-file="${PACKAGE_BUILD_DIR}/etc/matrix-synapse/log.yaml" # add a dependency on the right version of python to substvars. PYPKG=$(basename "$SNAKE") echo "synapse:pydepends=$PYPKG" >> debian/matrix-synapse-py3.substvars # add a couple of triggers. This is needed so that dh-virtualenv can rebuild # the venv when the system python changes (see # https://dh-virtualenv.readthedocs.io/en/latest/tutorial.html#step-2-set-up-packaging-for-your-project) # # we do it here rather than the more conventional way of just adding it to # debian/matrix-synapse-py3.triggers, because we need to add a trigger on the # right version of python. cat >>"debian/.debhelper/generated/matrix-synapse-py3/triggers" < Tue, 22 Feb 2022 11:32:06 +0000 matrix-synapse-py3 (1.53.0~rc1) stable; urgency=medium * New synapse release 1.53.0~rc1. -- Synapse Packaging team Tue, 15 Feb 2022 10:40:50 +0000 matrix-synapse-py3 (1.52.0) stable; urgency=medium * New synapse release 1.52.0. -- Synapse Packaging team Tue, 08 Feb 2022 11:34:54 +0000 matrix-synapse-py3 (1.52.0~rc1) stable; urgency=medium * New synapse release 1.52.0~rc1. -- Synapse Packaging team Tue, 01 Feb 2022 11:04:09 +0000 matrix-synapse-py3 (1.51.0) stable; urgency=medium * New synapse release 1.51.0. -- Synapse Packaging team Tue, 25 Jan 2022 11:28:51 +0000 matrix-synapse-py3 (1.51.0~rc2) stable; urgency=medium * New synapse release 1.51.0~rc2. -- Synapse Packaging team Mon, 24 Jan 2022 12:25:00 +0000 matrix-synapse-py3 (1.51.0~rc1) stable; urgency=medium * New synapse release 1.51.0~rc1. -- Synapse Packaging team Fri, 21 Jan 2022 10:46:02 +0000 matrix-synapse-py3 (1.50.2) stable; urgency=medium * New synapse release 1.50.2. -- Synapse Packaging team Mon, 24 Jan 2022 13:37:11 +0000 matrix-synapse-py3 (1.50.1) stable; urgency=medium * New synapse release 1.50.1. -- Synapse Packaging team Tue, 18 Jan 2022 16:06:26 +0000 matrix-synapse-py3 (1.50.0) stable; urgency=medium * New synapse release 1.50.0. -- Synapse Packaging team Tue, 18 Jan 2022 10:40:38 +0000 matrix-synapse-py3 (1.50.0~rc2) stable; urgency=medium * New synapse release 1.50.0~rc2. -- Synapse Packaging team Fri, 14 Jan 2022 11:18:06 +0000 matrix-synapse-py3 (1.50.0~rc1) stable; urgency=medium * New synapse release 1.50.0~rc1. -- Synapse Packaging team Wed, 05 Jan 2022 12:36:17 +0000 matrix-synapse-py3 (1.49.2) stable; urgency=medium * New synapse release 1.49.2. -- Synapse Packaging team Tue, 21 Dec 2021 17:31:03 +0000 matrix-synapse-py3 (1.49.1) stable; urgency=medium * New synapse release 1.49.1. -- Synapse Packaging team Tue, 21 Dec 2021 11:07:30 +0000 matrix-synapse-py3 (1.49.0) stable; urgency=medium * New synapse release 1.49.0. -- Synapse Packaging team Tue, 14 Dec 2021 12:39:46 +0000 matrix-synapse-py3 (1.49.0~rc1) stable; urgency=medium * New synapse release 1.49.0~rc1. -- Synapse Packaging team Tue, 07 Dec 2021 13:52:21 +0000 matrix-synapse-py3 (1.48.0) stable; urgency=medium * New synapse release 1.48.0. -- Synapse Packaging team Tue, 30 Nov 2021 11:24:15 +0000 matrix-synapse-py3 (1.48.0~rc1) stable; urgency=medium * New synapse release 1.48.0~rc1. -- Synapse Packaging team Thu, 25 Nov 2021 15:56:03 +0000 matrix-synapse-py3 (1.47.1) stable; urgency=medium * New synapse release 1.47.1. -- Synapse Packaging team Fri, 19 Nov 2021 13:44:32 +0000 matrix-synapse-py3 (1.47.0) stable; urgency=medium * New synapse release 1.47.0. -- Synapse Packaging team Wed, 17 Nov 2021 13:09:43 +0000 matrix-synapse-py3 (1.47.0~rc3) stable; urgency=medium * New synapse release 1.47.0~rc3. -- Synapse Packaging team Tue, 16 Nov 2021 14:32:47 +0000 matrix-synapse-py3 (1.47.0~rc2) stable; urgency=medium [ Dan Callahan ] * Update scripts to pass Shellcheck lints. * Remove unused Vagrant scripts from debian/ directory. * Allow building Debian packages for any architecture, not just amd64. * Preinstall the "wheel" package when building virtualenvs. * Do not error if /etc/default/matrix-synapse is missing. [ Synapse Packaging team ] * New synapse release 1.47.0~rc2. -- Synapse Packaging team Wed, 10 Nov 2021 09:41:01 +0000 matrix-synapse-py3 (1.46.0) stable; urgency=medium [ Richard van der Hoff ] * Compress debs with xz, to fix incompatibility of impish debs with reprepro. [ Synapse Packaging team ] * New synapse release 1.46.0. -- Synapse Packaging team Tue, 02 Nov 2021 13:22:53 +0000 matrix-synapse-py3 (1.46.0~rc1) stable; urgency=medium * New synapse release 1.46.0~rc1. -- Synapse Packaging team Tue, 26 Oct 2021 14:04:04 +0100 matrix-synapse-py3 (1.45.1) stable; urgency=medium * New synapse release 1.45.1. -- Synapse Packaging team Wed, 20 Oct 2021 11:58:27 +0100 matrix-synapse-py3 (1.45.0) stable; urgency=medium * New synapse release 1.45.0. -- Synapse Packaging team Tue, 19 Oct 2021 11:18:53 +0100 matrix-synapse-py3 (1.45.0~rc2) stable; urgency=medium * New synapse release 1.45.0~rc2. -- Synapse Packaging team Thu, 14 Oct 2021 10:58:24 +0100 matrix-synapse-py3 (1.45.0~rc1) stable; urgency=medium [ Nick @ Beeper ] * Include an `update_synapse_database` script in the distribution. [ Synapse Packaging team ] * New synapse release 1.45.0~rc1. -- Synapse Packaging team Tue, 12 Oct 2021 10:46:27 +0100 matrix-synapse-py3 (1.44.0) stable; urgency=medium * New synapse release 1.44.0. -- Synapse Packaging team Tue, 05 Oct 2021 13:43:57 +0100 matrix-synapse-py3 (1.44.0~rc3) stable; urgency=medium * New synapse release 1.44.0~rc3. -- Synapse Packaging team Mon, 04 Oct 2021 14:57:22 +0100 matrix-synapse-py3 (1.44.0~rc2) stable; urgency=medium * New synapse release 1.44.0~rc2. -- Synapse Packaging team Thu, 30 Sep 2021 12:39:10 +0100 matrix-synapse-py3 (1.44.0~rc1) stable; urgency=medium * New synapse release 1.44.0~rc1. -- Synapse Packaging team Tue, 28 Sep 2021 13:41:28 +0100 matrix-synapse-py3 (1.43.0) stable; urgency=medium * New synapse release 1.43.0. -- Synapse Packaging team Tue, 21 Sep 2021 11:49:05 +0100 matrix-synapse-py3 (1.43.0~rc2) stable; urgency=medium * New synapse release 1.43.0~rc2. -- Synapse Packaging team Fri, 17 Sep 2021 10:43:21 +0100 matrix-synapse-py3 (1.43.0~rc1) stable; urgency=medium * New synapse release 1.43.0~rc1. -- Synapse Packaging team Tue, 14 Sep 2021 11:39:46 +0100 matrix-synapse-py3 (1.42.0) stable; urgency=medium * New synapse release 1.42.0. -- Synapse Packaging team Tue, 07 Sep 2021 16:19:09 +0100 matrix-synapse-py3 (1.42.0~rc2) stable; urgency=medium * New synapse release 1.42.0~rc2. -- Synapse Packaging team Mon, 06 Sep 2021 15:25:13 +0100 matrix-synapse-py3 (1.42.0~rc1) stable; urgency=medium * New synapse release 1.42.0rc1. -- Synapse Packaging team Wed, 01 Sep 2021 11:37:48 +0100 matrix-synapse-py3 (1.41.1) stable; urgency=high * New synapse release 1.41.1. -- Synapse Packaging team Tue, 31 Aug 2021 12:59:10 +0100 matrix-synapse-py3 (1.41.0) stable; urgency=medium * New synapse release 1.41.0. -- Synapse Packaging team Tue, 24 Aug 2021 15:31:45 +0100 matrix-synapse-py3 (1.41.0~rc1) stable; urgency=medium * New synapse release 1.41.0~rc1. -- Synapse Packaging team Wed, 18 Aug 2021 15:52:00 +0100 matrix-synapse-py3 (1.40.0) stable; urgency=medium * New synapse release 1.40.0. -- Synapse Packaging team Tue, 10 Aug 2021 13:50:48 +0100 matrix-synapse-py3 (1.40.0~rc3) stable; urgency=medium * New synapse release 1.40.0~rc3. -- Synapse Packaging team Mon, 09 Aug 2021 13:41:08 +0100 matrix-synapse-py3 (1.40.0~rc2) stable; urgency=medium * New synapse release 1.40.0~rc2. -- Synapse Packaging team Wed, 04 Aug 2021 17:08:55 +0100 matrix-synapse-py3 (1.40.0~rc1) stable; urgency=medium [ Richard van der Hoff ] * Drop backwards-compatibility code that was required to support Ubuntu Xenial. * Update package triggers so that the virtualenv is correctly rebuilt when the system python is rebuilt, on recent Python versions. [ Synapse Packaging team ] * New synapse release 1.40.0~rc1. -- Synapse Packaging team Tue, 03 Aug 2021 11:31:49 +0100 matrix-synapse-py3 (1.39.0) stable; urgency=medium * New synapse release 1.39.0. -- Synapse Packaging team Thu, 29 Jul 2021 09:59:00 +0100 matrix-synapse-py3 (1.39.0~rc3) stable; urgency=medium * New synapse release 1.39.0~rc3. -- Synapse Packaging team Wed, 28 Jul 2021 13:30:58 +0100 matrix-synapse-py3 (1.38.1) stable; urgency=medium * New synapse release 1.38.1. -- Synapse Packaging team Thu, 22 Jul 2021 15:37:06 +0100 matrix-synapse-py3 (1.39.0~rc1) stable; urgency=medium * New synapse release 1.39.0rc1. -- Synapse Packaging team Tue, 20 Jul 2021 14:28:34 +0100 matrix-synapse-py3 (1.38.0) stable; urgency=medium * New synapse release 1.38.0. -- Synapse Packaging team Tue, 13 Jul 2021 13:20:56 +0100 matrix-synapse-py3 (1.38.0rc3) prerelease; urgency=medium [ Erik Johnston ] * Add synapse_review_recent_signups script [ Synapse Packaging team ] * New synapse release 1.38.0rc3. -- Synapse Packaging team Tue, 13 Jul 2021 11:53:56 +0100 matrix-synapse-py3 (1.37.1) stable; urgency=medium * New synapse release 1.37.1. -- Synapse Packaging team Wed, 30 Jun 2021 12:24:06 +0100 matrix-synapse-py3 (1.37.0) stable; urgency=medium * New synapse release 1.37.0. -- Synapse Packaging team Tue, 29 Jun 2021 10:15:25 +0100 matrix-synapse-py3 (1.36.0) stable; urgency=medium * New synapse release 1.36.0. -- Synapse Packaging team Tue, 15 Jun 2021 15:41:53 +0100 matrix-synapse-py3 (1.35.1) stable; urgency=medium * New synapse release 1.35.1. -- Synapse Packaging team Thu, 03 Jun 2021 08:11:29 -0400 matrix-synapse-py3 (1.35.0) stable; urgency=medium * New synapse release 1.35.0. -- Synapse Packaging team Tue, 01 Jun 2021 13:23:35 +0100 matrix-synapse-py3 (1.34.0) stable; urgency=medium * New synapse release 1.34.0. -- Synapse Packaging team Mon, 17 May 2021 11:34:18 +0100 matrix-synapse-py3 (1.33.2) stable; urgency=medium * New synapse release 1.33.2. -- Synapse Packaging team Tue, 11 May 2021 11:17:59 +0100 matrix-synapse-py3 (1.33.1) stable; urgency=medium * New synapse release 1.33.1. -- Synapse Packaging team Thu, 06 May 2021 14:06:33 +0100 matrix-synapse-py3 (1.33.0) stable; urgency=medium * New synapse release 1.33.0. -- Synapse Packaging team Wed, 05 May 2021 14:15:27 +0100 matrix-synapse-py3 (1.32.2) stable; urgency=medium * New synapse release 1.32.2. -- Synapse Packaging team Wed, 22 Apr 2021 12:43:52 +0100 matrix-synapse-py3 (1.32.1) stable; urgency=medium * New synapse release 1.32.1. -- Synapse Packaging team Wed, 21 Apr 2021 14:00:55 +0100 matrix-synapse-py3 (1.32.0) stable; urgency=medium [ Dan Callahan ] * Skip tests when DEB_BUILD_OPTIONS contains "nocheck". [ Synapse Packaging team ] * New synapse release 1.32.0. -- Synapse Packaging team Tue, 20 Apr 2021 14:28:39 +0100 matrix-synapse-py3 (1.31.0) stable; urgency=medium * New synapse release 1.31.0. -- Synapse Packaging team Tue, 06 Apr 2021 13:08:29 +0100 matrix-synapse-py3 (1.30.1) stable; urgency=medium * New synapse release 1.30.1. -- Synapse Packaging team Fri, 26 Mar 2021 12:01:28 +0000 matrix-synapse-py3 (1.30.0) stable; urgency=medium * New synapse release 1.30.0. -- Synapse Packaging team Mon, 22 Mar 2021 13:15:34 +0000 matrix-synapse-py3 (1.29.0) stable; urgency=medium [ Jonathan de Jong ] * Remove the python -B flag (don't generate bytecode) in scripts and documentation. [ Synapse Packaging team ] * New synapse release 1.29.0. -- Synapse Packaging team Mon, 08 Mar 2021 13:51:50 +0000 matrix-synapse-py3 (1.28.0) stable; urgency=medium * New synapse release 1.28.0. -- Synapse Packaging team Thu, 25 Feb 2021 10:21:57 +0000 matrix-synapse-py3 (1.27.0) stable; urgency=medium [ Dan Callahan ] * Fix build on Ubuntu 16.04 LTS (Xenial). [ Synapse Packaging team ] * New synapse release 1.27.0. -- Synapse Packaging team Tue, 16 Feb 2021 13:11:28 +0000 matrix-synapse-py3 (1.26.0) stable; urgency=medium [ Richard van der Hoff ] * Remove dependency on `python3-distutils`. [ Synapse Packaging team ] * New synapse release 1.26.0. -- Synapse Packaging team Wed, 27 Jan 2021 12:43:35 -0500 matrix-synapse-py3 (1.25.0) stable; urgency=medium [ Dan Callahan ] * Update dependencies to account for the removal of the transitional dh-systemd package from Debian Bullseye. [ Synapse Packaging team ] * New synapse release 1.25.0. -- Synapse Packaging team Wed, 13 Jan 2021 10:14:55 +0000 matrix-synapse-py3 (1.24.0) stable; urgency=medium * New synapse release 1.24.0. -- Synapse Packaging team Wed, 09 Dec 2020 10:14:30 +0000 matrix-synapse-py3 (1.23.1) stable; urgency=medium * New synapse release 1.23.1. -- Synapse Packaging team Wed, 09 Dec 2020 10:40:39 +0000 matrix-synapse-py3 (1.23.0) stable; urgency=medium * New synapse release 1.23.0. -- Synapse Packaging team Wed, 18 Nov 2020 11:41:28 +0000 matrix-synapse-py3 (1.22.1) stable; urgency=medium * New synapse release 1.22.1. -- Synapse Packaging team Fri, 30 Oct 2020 15:25:37 +0000 matrix-synapse-py3 (1.22.0) stable; urgency=medium * New synapse release 1.22.0. -- Synapse Packaging team Tue, 27 Oct 2020 12:07:12 +0000 matrix-synapse-py3 (1.21.2) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.21.2. -- Synapse Packaging team Thu, 15 Oct 2020 09:23:27 -0400 matrix-synapse-py3 (1.21.1) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.21.1. [ Andrew Morgan ] * Explicitly install "test" python dependencies. -- Synapse Packaging team Tue, 13 Oct 2020 10:24:13 +0100 matrix-synapse-py3 (1.21.0) stable; urgency=medium * New synapse release 1.21.0. -- Synapse Packaging team Mon, 12 Oct 2020 15:47:44 +0100 matrix-synapse-py3 (1.20.1) stable; urgency=medium * New synapse release 1.20.1. -- Synapse Packaging team Thu, 24 Sep 2020 16:25:22 +0100 matrix-synapse-py3 (1.20.0) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.20.0. [ Dexter Chua ] * Use Type=notify in systemd service -- Synapse Packaging team Tue, 22 Sep 2020 15:19:32 +0100 matrix-synapse-py3 (1.19.3) stable; urgency=medium * New synapse release 1.19.3. -- Synapse Packaging team Fri, 18 Sep 2020 14:59:30 +0100 matrix-synapse-py3 (1.19.2) stable; urgency=medium * New synapse release 1.19.2. -- Synapse Packaging team Wed, 16 Sep 2020 12:50:30 +0100 matrix-synapse-py3 (1.19.1) stable; urgency=medium * New synapse release 1.19.1. -- Synapse Packaging team Thu, 27 Aug 2020 10:50:19 +0100 matrix-synapse-py3 (1.19.0) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.19.0. [ Aaron Raimist ] * Fix outdated documentation for SYNAPSE_CACHE_FACTOR -- Synapse Packaging team Mon, 17 Aug 2020 14:06:42 +0100 matrix-synapse-py3 (1.18.0) stable; urgency=medium * New synapse release 1.18.0. -- Synapse Packaging team Thu, 30 Jul 2020 10:55:53 +0100 matrix-synapse-py3 (1.17.0) stable; urgency=medium * New synapse release 1.17.0. -- Synapse Packaging team Mon, 13 Jul 2020 10:20:31 +0100 matrix-synapse-py3 (1.16.1) stable; urgency=medium * New synapse release 1.16.1. -- Synapse Packaging team Fri, 10 Jul 2020 12:09:24 +0100 matrix-synapse-py3 (1.17.0rc1) stable; urgency=medium * New synapse release 1.17.0rc1. -- Synapse Packaging team Thu, 09 Jul 2020 16:53:12 +0100 matrix-synapse-py3 (1.16.0) stable; urgency=medium * New synapse release 1.16.0. -- Synapse Packaging team Wed, 08 Jul 2020 11:03:48 +0100 matrix-synapse-py3 (1.15.2) stable; urgency=medium * New synapse release 1.15.2. -- Synapse Packaging team Thu, 02 Jul 2020 10:34:00 -0400 matrix-synapse-py3 (1.15.1) stable; urgency=medium * New synapse release 1.15.1. -- Synapse Packaging team Tue, 16 Jun 2020 10:27:50 +0100 matrix-synapse-py3 (1.15.0) stable; urgency=medium * New synapse release 1.15.0. -- Synapse Packaging team Thu, 11 Jun 2020 13:27:06 +0100 matrix-synapse-py3 (1.14.0) stable; urgency=medium * New synapse release 1.14.0. -- Synapse Packaging team Thu, 28 May 2020 10:37:27 +0000 matrix-synapse-py3 (1.13.0) stable; urgency=medium [ Patrick Cloke ] * Add information about .well-known files to Debian installation scripts. [ Synapse Packaging team ] * New synapse release 1.13.0. -- Synapse Packaging team Tue, 19 May 2020 09:16:56 -0400 matrix-synapse-py3 (1.12.4) stable; urgency=medium * New synapse release 1.12.4. -- Synapse Packaging team Thu, 23 Apr 2020 10:58:14 -0400 matrix-synapse-py3 (1.12.3) stable; urgency=medium [ Richard van der Hoff ] * Update the Debian build scripts to handle the new installation paths for the support libraries introduced by Pillow 7.1.1. [ Synapse Packaging team ] * New synapse release 1.12.3. -- Synapse Packaging team Fri, 03 Apr 2020 10:55:03 +0100 matrix-synapse-py3 (1.12.2) stable; urgency=medium * New synapse release 1.12.2. -- Synapse Packaging team Mon, 02 Apr 2020 19:02:17 +0000 matrix-synapse-py3 (1.12.1) stable; urgency=medium * New synapse release 1.12.1. -- Synapse Packaging team Mon, 02 Apr 2020 11:30:47 +0000 matrix-synapse-py3 (1.12.0) stable; urgency=medium * New synapse release 1.12.0. -- Synapse Packaging team Mon, 23 Mar 2020 12:13:03 +0000 matrix-synapse-py3 (1.11.1) stable; urgency=medium * New synapse release 1.11.1. -- Synapse Packaging team Tue, 03 Mar 2020 15:01:22 +0000 matrix-synapse-py3 (1.11.0) stable; urgency=medium * New synapse release 1.11.0. -- Synapse Packaging team Fri, 21 Feb 2020 08:54:34 +0000 matrix-synapse-py3 (1.10.1) stable; urgency=medium * New synapse release 1.10.1. -- Synapse Packaging team Mon, 17 Feb 2020 16:27:28 +0000 matrix-synapse-py3 (1.10.0) stable; urgency=medium * New synapse release 1.10.0. -- Synapse Packaging team Wed, 12 Feb 2020 12:18:54 +0000 matrix-synapse-py3 (1.9.1) stable; urgency=medium * New synapse release 1.9.1. -- Synapse Packaging team Tue, 28 Jan 2020 13:09:23 +0000 matrix-synapse-py3 (1.9.0) stable; urgency=medium * New synapse release 1.9.0. -- Synapse Packaging team Thu, 23 Jan 2020 12:56:31 +0000 matrix-synapse-py3 (1.8.0) stable; urgency=medium [ Richard van der Hoff ] * Automate generation of the default log configuration file. [ Synapse Packaging team ] * New synapse release 1.8.0. -- Synapse Packaging team Thu, 09 Jan 2020 11:39:27 +0000 matrix-synapse-py3 (1.7.3) stable; urgency=medium * New synapse release 1.7.3. -- Synapse Packaging team Tue, 31 Dec 2019 10:45:04 +0000 matrix-synapse-py3 (1.7.2) stable; urgency=medium * New synapse release 1.7.2. -- Synapse Packaging team Fri, 20 Dec 2019 10:56:50 +0000 matrix-synapse-py3 (1.7.1) stable; urgency=medium * New synapse release 1.7.1. -- Synapse Packaging team Wed, 18 Dec 2019 09:37:59 +0000 matrix-synapse-py3 (1.7.0) stable; urgency=medium * New synapse release 1.7.0. -- Synapse Packaging team Fri, 13 Dec 2019 10:19:38 +0000 matrix-synapse-py3 (1.6.1) stable; urgency=medium * New synapse release 1.6.1. -- Synapse Packaging team Thu, 28 Nov 2019 11:10:40 +0000 matrix-synapse-py3 (1.6.0) stable; urgency=medium * New synapse release 1.6.0. -- Synapse Packaging team Tue, 26 Nov 2019 12:15:40 +0000 matrix-synapse-py3 (1.5.1) stable; urgency=medium * New synapse release 1.5.1. -- Synapse Packaging team Wed, 06 Nov 2019 10:02:14 +0000 matrix-synapse-py3 (1.5.0) stable; urgency=medium * New synapse release 1.5.0. -- Synapse Packaging team Tue, 29 Oct 2019 14:28:41 +0000 matrix-synapse-py3 (1.4.1) stable; urgency=medium * New synapse release 1.4.1. -- Synapse Packaging team Fri, 18 Oct 2019 10:13:27 +0100 matrix-synapse-py3 (1.4.0) stable; urgency=medium * New synapse release 1.4.0. -- Synapse Packaging team Thu, 03 Oct 2019 13:22:25 +0100 matrix-synapse-py3 (1.3.1) stable; urgency=medium * New synapse release 1.3.1. -- Synapse Packaging team Sat, 17 Aug 2019 09:15:49 +0100 matrix-synapse-py3 (1.3.0) stable; urgency=medium [ Andrew Morgan ] * Remove libsqlite3-dev from required build dependencies. [ Synapse Packaging team ] * New synapse release 1.3.0. -- Synapse Packaging team Thu, 15 Aug 2019 12:04:23 +0100 matrix-synapse-py3 (1.2.0) stable; urgency=medium [ Amber Brown ] * Update logging config defaults to match API changes in Synapse. [ Richard van der Hoff ] * Add Recommends and Depends for some libraries which you probably want. [ Synapse Packaging team ] * New synapse release 1.2.0. -- Synapse Packaging team Thu, 25 Jul 2019 14:10:07 +0100 matrix-synapse-py3 (1.1.0) stable; urgency=medium [ Silke Hofstra ] * Include systemd-python to allow logging to the systemd journal. [ Synapse Packaging team ] * New synapse release 1.1.0. -- Synapse Packaging team Thu, 04 Jul 2019 11:43:41 +0100 matrix-synapse-py3 (1.0.0) stable; urgency=medium * New synapse release 1.0.0. -- Synapse Packaging team Tue, 11 Jun 2019 17:09:53 +0100 matrix-synapse-py3 (0.99.5.2) stable; urgency=medium * New synapse release 0.99.5.2. -- Synapse Packaging team Thu, 30 May 2019 16:28:07 +0100 matrix-synapse-py3 (0.99.5.1) stable; urgency=medium * New synapse release 0.99.5.1. -- Synapse Packaging team Wed, 22 May 2019 16:22:24 +0000 matrix-synapse-py3 (0.99.4) stable; urgency=medium [ Christoph Müller ] * Configure the systemd units to have a log identifier of `matrix-synapse` [ Synapse Packaging team ] * New synapse release 0.99.4. -- Synapse Packaging team Wed, 15 May 2019 13:58:08 +0100 matrix-synapse-py3 (0.99.3.2) stable; urgency=medium * New synapse release 0.99.3.2. -- Synapse Packaging team Fri, 03 May 2019 18:56:20 +0100 matrix-synapse-py3 (0.99.3.1) stable; urgency=medium * New synapse release 0.99.3.1. -- Synapse Packaging team Fri, 03 May 2019 16:02:43 +0100 matrix-synapse-py3 (0.99.3) stable; urgency=medium [ Richard van der Hoff ] * Fix warning during preconfiguration. (Fixes: #4819) [ Synapse Packaging team ] * New synapse release 0.99.3. -- Synapse Packaging team Mon, 01 Apr 2019 12:48:21 +0000 matrix-synapse-py3 (0.99.2) stable; urgency=medium * Fix overwriting of config settings on upgrade. * New synapse release 0.99.2. -- Synapse Packaging team Fri, 01 Mar 2019 10:55:08 +0000 matrix-synapse-py3 (0.99.1.1) stable; urgency=medium * New synapse release 0.99.1.1 -- Synapse Packaging team Thu, 14 Feb 2019 17:19:44 +0000 matrix-synapse-py3 (0.99.1) stable; urgency=medium [ Damjan Georgievski ] * Added ExecReload= in service unit file to send a HUP signal [ Synapse Packaging team ] * New synapse release 0.99.1 -- Synapse Packaging team Thu, 14 Feb 2019 14:12:26 +0000 matrix-synapse-py3 (0.99.0) stable; urgency=medium * New synapse release 0.99.0 -- Synapse Packaging team Tue, 5 Feb 2019 18:25:00 +0000 matrix-synapse-py3 (0.34.1.1++1) stable; urgency=medium * Update conflicts specifications to allow smoother transition from matrix-synapse. -- Synapse Packaging team Sat, 12 Jan 2019 12:58:35 +0000 matrix-synapse-py3 (0.34.1.1) stable; urgency=high * New synapse release 0.34.1.1 -- Synapse Packaging team Thu, 10 Jan 2019 15:04:52 +0000 matrix-synapse-py3 (0.34.1+1) stable; urgency=medium * Remove 'Breaks: matrix-synapse-ldap3'. (matrix-synapse-py3 includes the matrix-synapse-ldap3 python files, which makes the matrix-synapse-ldap3 debian package redundant but not broken. -- Synapse Packaging team Wed, 09 Jan 2019 15:30:00 +0000 matrix-synapse-py3 (0.34.1) stable; urgency=medium * New synapse release 0.34.1. * Update Conflicts specifications to allow installation alongside our matrix-synapse transitional package. -- Synapse Packaging team Wed, 09 Jan 2019 14:52:24 +0000 matrix-synapse-py3 (0.34.0) stable; urgency=medium * New synapse release 0.34.0. * Synapse is now installed into a Python 3 virtual environment with up-to-date dependencies. * The matrix-synapse service will now be restarted when the package is upgraded. (Fixes https://github.com/matrix-org/package-synapse-debian/issues/18) -- Synapse packaging team Wed, 19 Dec 2018 14:00:00 +0000 matrix-synapse (0.33.9-1matrix1) stretch; urgency=medium [ Erik Johnston ] * Remove dependency on python-pydenticon [ Richard van der Hoff ] * New upstream version 0.33.9 * Refresh patches for 0.33.9 -- Richard van der Hoff Tue, 20 Nov 2018 10:26:05 +0000 matrix-synapse (0.33.8-1) stretch; urgency=medium * New upstream version 0.33.8 -- Erik Johnston Thu, 01 Nov 2018 14:33:26 +0000 matrix-synapse (0.33.7-1matrix1) stretch; urgency=medium * New upstream version 0.33.7 -- Richard van der Hoff Thu, 18 Oct 2018 16:18:26 +0100 matrix-synapse (0.33.6-1matrix1) stretch; urgency=medium * Imported Upstream version 0.33.6 * Remove redundant explicit dep on python-bcrypt * Run the tests during build * Add dependency on python-attr 16.0 * Refresh patches for 0.33.6 -- Richard van der Hoff Thu, 04 Oct 2018 14:40:29 +0100 matrix-synapse (0.33.5.1-1matrix1) stretch; urgency=medium * Imported Upstream version 0.33.5.1 -- Richard van der Hoff Mon, 24 Sep 2018 18:20:51 +0100 matrix-synapse (0.33.5-1matrix1) stretch; urgency=medium * Imported Upstream version 0.33.5 -- Richard van der Hoff Mon, 24 Sep 2018 16:06:23 +0100 matrix-synapse (0.33.4-1mx1) stretch; urgency=medium * Imported Upstream version 0.33.4 * Avoid telling people to install packages with pip (fixes https://github.com/matrix-org/synapse/issues/3743) -- Richard van der Hoff Fri, 07 Sep 2018 14:06:17 +0100 matrix-synapse (0.33.3.1-1mx1) stretch; urgency=critical [ Richard van der Hoff ] * Imported Upstream version 0.33.3.1 -- Richard van der Hoff Thu, 06 Sep 2018 11:20:37 +0100 matrix-synapse (0.33.3-2) stretch; urgency=medium * We now require python-twisted 17.1.0 or later * Add recommendations for python-psycopg2 and python-lxml -- Richard van der Hoff Thu, 23 Aug 2018 19:04:08 +0100 matrix-synapse (0.33.3-1) jessie; urgency=medium * New upstream version 0.33.3 -- Richard van der Hoff Wed, 22 Aug 2018 14:50:30 +0100 matrix-synapse (0.33.2-1) jessie; urgency=medium * New upstream version 0.33.2 -- Richard van der Hoff Thu, 09 Aug 2018 15:40:42 +0100 matrix-synapse (0.33.1-1) jessie; urgency=medium * New upstream version 0.33.1 -- Erik Johnston Thu, 02 Aug 2018 15:52:19 +0100 matrix-synapse (0.33.0-1) jessie; urgency=medium * New upstream version 0.33.0 -- Richard van der Hoff Thu, 19 Jul 2018 13:38:41 +0100 matrix-synapse (0.32.1-1) jessie; urgency=medium * New upstream version 0.32.1 -- Richard van der Hoff Fri, 06 Jul 2018 17:16:29 +0100 matrix-synapse (0.32.0-1) jessie; urgency=medium * New upstream version 0.32.0 -- Erik Johnston Fri, 06 Jul 2018 15:34:06 +0100 matrix-synapse (0.31.2-1) jessie; urgency=high * New upstream version 0.31.2 -- Richard van der Hoff Thu, 14 Jun 2018 16:49:07 +0100 matrix-synapse (0.31.1-1) jessie; urgency=medium * New upstream version 0.31.1 * Require python-prometheus-client >= 0.0.14 -- Richard van der Hoff Fri, 08 Jun 2018 16:11:55 +0100 matrix-synapse (0.31.0-1) jessie; urgency=medium * New upstream version 0.31.0 -- Richard van der Hoff Wed, 06 Jun 2018 17:23:10 +0100 matrix-synapse (0.30.0-1) jessie; urgency=medium [ Michael Kaye ] * update homeserver.yaml to be somewhat more modern. [ Erik Johnston ] * New upstream version 0.30.0 -- Erik Johnston Thu, 24 May 2018 16:43:16 +0100 matrix-synapse (0.29.0-1) jessie; urgency=medium * New upstream version 0.29.0 -- Erik Johnston Wed, 16 May 2018 17:43:06 +0100 matrix-synapse (0.28.1-1) jessie; urgency=medium * New upstream version 0.28.1 -- Erik Johnston Tue, 01 May 2018 19:21:39 +0100 matrix-synapse (0.28.0-1) jessie; urgency=medium * New upstream 0.28.0 -- Erik Johnston Fri, 27 Apr 2018 13:15:49 +0100 matrix-synapse (0.27.4-1) jessie; urgency=medium * Bump canonicaljson version * New upstream 0.27.4 -- Erik Johnston Fri, 13 Apr 2018 13:37:47 +0100 matrix-synapse (0.27.3-1) jessie; urgency=medium * Report stats should default to off * Refresh patches * New upstream 0.27.3 -- Erik Johnston Wed, 11 Apr 2018 11:43:47 +0100 matrix-synapse (0.27.2-1) jessie; urgency=medium * New upstream version 0.27.2 -- Erik Johnston Mon, 26 Mar 2018 16:41:57 +0100 matrix-synapse (0.27.1-1) jessie; urgency=medium * New upstream version 0.27.1 -- Erik Johnston Mon, 26 Mar 2018 16:22:03 +0100 matrix-synapse (0.27.0-2) jessie; urgency=medium * Fix bcrypt dependency -- Erik Johnston Mon, 26 Mar 2018 16:00:26 +0100 matrix-synapse (0.27.0-1) jessie; urgency=medium * New upstream version 0.27.0 -- Erik Johnston Mon, 26 Mar 2018 15:07:52 +0100 matrix-synapse (0.26.1-1) jessie; urgency=medium * Ignore RC * New upstream version 0.26.1 -- Erik Johnston Fri, 16 Mar 2018 00:40:08 +0000 matrix-synapse (0.26.0-1) jessie; urgency=medium [ Richard van der Hoff ] * Remove `level` for `file` log handler [ Erik Johnston ] -- Erik Johnston Fri, 05 Jan 2018 11:21:26 +0000 matrix-synapse (0.25.1-1) jessie; urgency=medium * New upstream version 0.25.1 -- Erik Johnston Mon, 20 Nov 2017 10:05:37 +0000 matrix-synapse (0.25.0-1) jessie; urgency=medium * New upstream version 0.25.0 -- Erik Johnston Wed, 15 Nov 2017 11:36:32 +0000 matrix-synapse (0.24.1-1) jessie; urgency=medium * New upstream version 0.24.1 -- Erik Johnston Tue, 24 Oct 2017 15:05:03 +0100 matrix-synapse (0.24.0-1) jessie; urgency=medium * New upstream version 0.24.0 -- Erik Johnston Mon, 23 Oct 2017 14:11:46 +0100 matrix-synapse (0.23.1-1) xenial; urgency=medium * Imported upstream version 0.23.1 -- Erik Johnston Thu, 05 Oct 2017 15:28:25 +0100 matrix-synapse (0.23.0-1) jessie; urgency=medium * Fix patch after refactor * Add patch to remove requirement on affinity package * refresh webclient patch -- Erik Johnston Mon, 02 Oct 2017 15:34:57 +0100 matrix-synapse (0.22.1-1) jessie; urgency=medium * Imported Upstream version 0.22.1 -- Erik Johnston Thu, 06 Jul 2017 18:14:13 +0100 matrix-synapse (0.22.0-1) jessie; urgency=medium * Imported upstream version 0.22.0 -- Erik Johnston Thu, 06 Jul 2017 10:47:45 +0100 matrix-synapse (0.21.1-1) jessie; urgency=medium * Imported upstream version 0.21.1 -- Erik Johnston Thu, 15 Jun 2017 13:31:13 +0100 matrix-synapse (0.21.0-1) jessie; urgency=medium * Imported upstream version 0.21.0 * Update patches -- Erik Johnston Thu, 18 May 2017 14:16:54 +0100 matrix-synapse (0.20.0-2) jessie; urgency=medium * Depend on python-jsonschema -- Erik Johnston Wed, 12 Apr 2017 10:41:46 +0100 matrix-synapse (0.20.0-1) jessie; urgency=medium * Imported upstream version 0.20.0 -- Erik Johnston Tue, 11 Apr 2017 12:58:26 +0100 matrix-synapse (0.19.3-1) jessie; urgency=medium * Imported upstream version 0.19.3 -- Erik Johnston Tue, 21 Mar 2017 13:45:41 +0000 matrix-synapse (0.19.2-1) jessie; urgency=medium [ Sunil Mohan Adapa ] * Bump standards version to 3.9.8 * Add debian/copyright file * Don't ignore errors in debian/config * Reformat depenedencies in debian/control * Internationalize strings in template file * Update package description * Add lsb-base as dependency * Update questions for debconf style * Add man pages for all binaries [ Erik Johnston ] * Imported upstream version 0.19.2 -- Erik Johnston Tue, 21 Feb 2017 13:55:00 +0000 matrix-synapse (0.19.1-1) jessie; urgency=medium * Imported upstream version 0.19.1 -- Erik Johnston Thu, 09 Feb 2017 11:53:27 +0000 matrix-synapse (0.19.0-1) jessie; urgency=medium This build requires python-twisted 0.19.0, which may need to be installed from backports. [ Bryce Chidester ] * Add EnvironmentFile to the systemd service * Create matrix-synapse.default [ Erik Johnston ] * Imported upstream version 0.19.0 -- Erik Johnston Sat, 04 Feb 2017 09:58:29 +0000 matrix-synapse (0.18.7-1) trusty; urgency=medium * Imported Upstream version 0.18.4 -- Erik Johnston Mon, 09 Jan 2017 15:10:21 +0000 matrix-synapse (0.18.5-1) trusty; urgency=medium * Imported Upstream version 0.18.5 -- Erik Johnston Fri, 16 Dec 2016 10:51:59 +0000 matrix-synapse (0.18.4-1) trusty; urgency=medium * Imported Upstream version 0.18.4 -- Erik Johnston Tue, 22 Nov 2016 10:33:41 +0000 matrix-synapse (0.18.3-1) trusty; urgency=medium * Imported Upstream version 0.18.3 * Remove upstreamed ldap3 patch -- Erik Johnston Tue, 08 Nov 2016 15:01:49 +0000 matrix-synapse (0.18.2-2) trusty; urgency=high * Patch ldap3 support to workaround differences in python-ldap3 0.9, bug allowed unauthorized logins if ldap3 0.9 was used. -- Erik Johnston Tue, 08 Nov 2016 13:48:09 +0000 matrix-synapse (0.18.2-1) trusty; urgency=medium * Imported Upstream version 0.18.2 -- Erik Johnston Tue, 01 Nov 2016 13:30:45 +0000 matrix-synapse (0.18.1-1) trusty; urgency=medium * Imported Upstream version 0.18.1 -- Erik Johnston Wed, 05 Oct 2016 14:52:53 +0100 matrix-synapse (0.18.0-1) trusty; urgency=medium * Imported Upstream version 0.18.0 -- Erik Johnston Mon, 19 Sep 2016 17:38:48 +0100 matrix-synapse (0.17.3-1) trusty; urgency=medium * Imported Upstream version 0.17.3 -- Erik Johnston Fri, 09 Sep 2016 11:18:18 +0100 matrix-synapse (0.17.2-1) trusty; urgency=medium * Imported Upstream version 0.17.2 -- Erik Johnston Thu, 08 Sep 2016 15:37:14 +0100 matrix-synapse (0.17.1-1) trusty; urgency=medium * Imported Upstream version 0.17.1 -- Erik Johnston Wed, 24 Aug 2016 15:11:29 +0100 matrix-synapse (0.17.0-1) trusty; urgency=medium * Imported Upstream version 0.17.0 -- Erik Johnston Mon, 08 Aug 2016 13:56:15 +0100 matrix-synapse (0.16.1-r1-1) trusty; urgency=medium * Imported Upstream version 0.16.1-r1 -- Erik Johnston Fri, 08 Jul 2016 16:47:35 +0100 matrix-synapse (0.16.1-2) trusty; urgency=critical * Apply security patch -- Erik Johnston Fri, 08 Jul 2016 11:05:27 +0100 matrix-synapse (0.16.1-1) trusty; urgency=medium * New upstream release -- Erik Johnston Tue, 21 Jun 2016 14:56:48 +0100 matrix-synapse (0.16.0-3) trusty; urgency=medium * Don't require strict nacl==0.3.0 requirement -- Erik Johnston Mon, 20 Jun 2016 13:24:22 +0100 matrix-synapse (0.16.0-2) trusty; urgency=medium * Also change the permissions of /etc/matrix-synapse * Add apt webclient instructions * Fix up patches * Update default homeserver.yaml * Add patch -- Erik Johnston Fri, 10 Jun 2016 14:06:20 +0100 matrix-synapse (0.16.0-1) trusty; urgency=medium [ David A Roberts ] * systemd [ Erik Johnston ] * Fixup postinst and matrix-synapse.service * Handle email optional deps * New upstream release -- Erik Johnston Thu, 09 Jun 2016 16:17:01 +0100 matrix-synapse (0.14.0-1) trusty; urgency=medium * Remove saml2 module requirements -- Erik Johnston Wed, 30 Mar 2016 14:31:17 +0100 matrix-synapse (0.13.3-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 11 Feb 2016 16:35:39 +0000 matrix-synapse (0.13.2-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 11 Feb 2016 11:01:16 +0000 matrix-synapse (0.13.0-1) trusty; urgency=medium * New upstream release -- Erik Johnston Wed, 10 Feb 2016 16:34:39 +0000 matrix-synapse (0.12.0-2) trusty; urgency=medium * Don't default `registerion_shared_secret` config option -- Erik Johnston Wed, 06 Jan 2016 16:34:02 +0000 matrix-synapse (0.12.0-1) stable; urgency=medium * Imported Upstream version 0.12.0 -- Mark Haines Mon, 04 Jan 2016 15:38:33 +0000 matrix-synapse (0.11.1-1) unstable; urgency=medium * Imported Upstream version 0.11.1 -- Erik Johnston Fri, 20 Nov 2015 17:56:52 +0000 matrix-synapse (0.11.0-r2-1) stable; urgency=medium * Imported Upstream version 0.11.0-r2 * Add gbp.conf -- Erik Johnston Thu, 19 Nov 2015 13:52:36 +0000 matrix-synapse (0.11.0-1) wheezy; urgency=medium * Fix dependencies. -- Erik Johnston Tue, 17 Nov 2015 16:28:06 +0000 matrix-synapse (0.11.0-0) wheezy; urgency=medium * New upstream release -- Erik Johnston Tue, 17 Nov 2015 16:03:01 +0000 matrix-synapse (0.10.0-2) wheezy; urgency=medium * Rebuild for wheezy. -- Erik Johnston Fri, 04 Sep 2015 14:21:03 +0100 matrix-synapse (0.10.0-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 03 Sep 2015 10:08:34 +0100 matrix-synapse (0.10.0~rc6-3) trusty; urgency=medium * Create log directory. -- Erik Johnston Wed, 02 Sep 2015 17:49:07 +0100 matrix-synapse (0.10.0~rc6-2) trusty; urgency=medium * Add patch to work around upstream bug in config directory handling. -- Erik Johnston Wed, 02 Sep 2015 17:42:42 +0100 matrix-synapse (0.10.0~rc6-1) trusty; urgency=medium * New upstream release -- Erik Johnston Wed, 02 Sep 2015 17:21:21 +0100 matrix-synapse (0.10.0~rc5-3) trusty; urgency=medium * Update init script to work. -- Erik Johnston Fri, 28 Aug 2015 10:51:56 +0100 matrix-synapse (0.10.0~rc5-2) trusty; urgency=medium * Fix where python files are installed. -- Erik Johnston Thu, 27 Aug 2015 11:55:39 +0100 matrix-synapse (0.10.0~rc5-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 27 Aug 2015 11:26:54 +0100 matrix-synapse (0.10.0~rc4-1) trusty; urgency=medium * New upstream version. -- Erik Johnston Thu, 27 Aug 2015 10:29:31 +0100 matrix-synapse (0.10.0~rc3-7) trusty; urgency=medium * Add debian/watch -- Erik Johnston Wed, 26 Aug 2015 17:57:08 +0100 matrix-synapse (0.10.0~rc3-6) trusty; urgency=medium * Deps. -- Erik Johnston Wed, 26 Aug 2015 17:07:13 +0100 matrix-synapse (0.10.0~rc3-5) trusty; urgency=medium * Deps. -- Erik Johnston Wed, 26 Aug 2015 16:18:02 +0100 matrix-synapse (0.10.0~rc3-4) trusty; urgency=medium * More deps. -- Erik Johnston Wed, 26 Aug 2015 14:09:27 +0100 matrix-synapse (0.10.0~rc3-3) trusty; urgency=medium * Update deps. -- Erik Johnston Wed, 26 Aug 2015 13:49:20 +0100 matrix-synapse (0.10.0~rc3-2) trusty; urgency=medium * Add more deps. -- Erik Johnston Wed, 26 Aug 2015 13:25:45 +0100 matrix-synapse (0.10.0~rc3-1) trusty; urgency=medium * New upstream release -- Erik Johnston Tue, 25 Aug 2015 17:52:33 +0100 matrix-synapse (0.9.3-1~trusty1) trusty; urgency=medium * Rebuild for trusty. -- Erik Johnston Thu, 20 Aug 2015 15:05:43 +0100 matrix-synapse (0.9.3-1) wheezy; urgency=medium * New upstream release * Create a user, "matrix-synapse", to run as * Log to /var/log/matrix-synapse/ directory * Override the way synapse looks for the angular SDK (syweb) so it finds the packaged one -- Paul "LeoNerd" Evans Fri, 07 Aug 2015 15:32:12 +0100 matrix-synapse (0.9.2-2) wheezy; urgency=medium * Supply a default config file * Create directory in /var/lib * Use debconf to ask the user for the server name at installation time -- Paul "LeoNerd" Evans Thu, 06 Aug 2015 15:28:00 +0100 matrix-synapse (0.9.2-1) wheezy; urgency=low * source package automatically created by stdeb 0.8.2 -- Paul "LeoNerd" Evans Fri, 12 Jun 2015 14:32:03 +0100 synapse-1.53.0/debian/compat000066400000000000000000000000031420514467300157110ustar00rootroot0000000000000010 synapse-1.53.0/debian/control000066400000000000000000000021661420514467300161220ustar00rootroot00000000000000Source: matrix-synapse-py3 Section: contrib/python Priority: extra Maintainer: Synapse Packaging team # keep this list in sync with the build dependencies in docker/Dockerfile-dhvirtualenv. Build-Depends: debhelper (>= 10), dh-virtualenv (>= 1.1), libsystemd-dev, libpq-dev, lsb-release, python3-dev, python3, python3-setuptools, python3-pip, python3-venv, tar, Standards-Version: 3.9.8 Homepage: https://github.com/matrix-org/synapse Package: matrix-synapse-py3 Architecture: any Provides: matrix-synapse Conflicts: matrix-synapse (<< 0.34.0.1-0matrix2), matrix-synapse (>= 0.34.0.1-1), Pre-Depends: dpkg (>= 1.16.1) Depends: adduser, debconf, ${misc:Depends}, ${shlibs:Depends}, ${synapse:pydepends}, # some of our scripts use perl, but none of them are important, # so we put perl:Depends in Suggests rather than Depends. Recommends: ${shlibs1:Recommends}, Suggests: sqlite3, ${perl:Depends}, Description: Open federated Instant Messaging and VoIP server Matrix is an ambitious new ecosystem for open federated Instant Messaging and VoIP. Synapse is a reference Matrix server implementation. synapse-1.53.0/debian/copyright000066400000000000000000000111601420514467300164440ustar00rootroot00000000000000Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: synapse Source: https://github.com/matrix-org/synapse Files: * Copyright: 2014-2017, OpenMarket Ltd, 2017-2018 New Vector Ltd License: Apache-2.0 Files: synapse/config/saml2.py Copyright: 2015, Ericsson License: Apache-2.0 Files: synapse/config/jwt.py Copyright: 2015, Niklas Riekenbrauck License: Apache-2.0 Files: synapse/config/workers.py Copyright: 2016, matrix.org License: Apache-2.0 Files: synapse/config/repository.py Copyright: 2014-2015, matrix.org License: Apache-2.0 Files: contrib/jitsimeetbridge/unjingle/strophe/base64.js Copyright: Public Domain (Tyler Akins http://rumkin.com) License: public-domain This code was written by Tyler Akins and has been placed in the public domain. It would be nice if you left this header intact. Base64 code from Tyler Akins -- http://rumkin.com Files: contrib/jitsimeetbridge/unjingle/strophe/md5.js Copyright: 1999-2002, Paul Johnston & Contributors License: BSD-3-clause Files: contrib/jitsimeetbridge/unjingle/strophe/strophe.js Copyright: 2006-2008, OGG, LLC License: Expat Files: contrib/jitsimeetbridge/unjingle/strophe/XMLHttpRequest.js Copyright: 2010 passive.ly LLC License: Expat Files: contrib/jitsimeetbridge/unjingle/*.js Copyright: 2014 Jitsi License: Apache-2.0 Files: debian/* Copyright: 2016-2017, Erik Johnston 2017, Rahul De 2017, Sunil Mohan Adapa License: Apache-2.0 License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. . On Debian systems, the full text of the Apache License version 2.0 can be found in the file `/usr/share/common-licenses/Apache-2.0'. License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: Expat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. synapse-1.53.0/debian/dirs000066400000000000000000000001011420514467300153660ustar00rootroot00000000000000etc/matrix-synapse var/lib/matrix-synapse var/log/matrix-synapse synapse-1.53.0/debian/hash_password.1000066400000000000000000000042221420514467300174410ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "HASH_PASSWORD" "1" "July 2021" "" "" .SH "NAME" \fBhash_password\fR \- Calculate the hash of a new password, so that passwords can be reset .SH "SYNOPSIS" \fBhash_password\fR [\fB\-p\fR|\fB\-\-password\fR [password]] [\fB\-c\fR|\fB\-\-config\fR \fIfile\fR] .SH "DESCRIPTION" \fBhash_password\fR calculates the hash of a supplied password using bcrypt\. .P \fBhash_password\fR takes a password as an parameter either on the command line or the \fBSTDIN\fR if not supplied\. .P It accepts an YAML file which can be used to specify parameters like the number of rounds for bcrypt and password_config section having the pepper value used for the hashing\. By default \fBbcrypt_rounds\fR is set to \fB10\fR\. .P The hashed password is written on the \fBSTDOUT\fR\. .SH "FILES" A sample YAML file accepted by \fBhash_password\fR is described below: .P bcrypt_rounds: 17 password_config: pepper: "random hashing pepper" .SH "OPTIONS" .TP \fB\-p\fR, \fB\-\-password\fR Read the password form the command line if [password] is supplied\. If not, prompt the user and read the password form the \fBSTDIN\fR\. It is not recommended to type the password on the command line directly\. Use the STDIN instead\. .TP \fB\-c\fR, \fB\-\-config\fR Read the supplied YAML \fIfile\fR containing the options \fBbcrypt_rounds\fR and the \fBpassword_config\fR section containing the \fBpepper\fR value\. .SH "EXAMPLES" Hash from the command line: .IP "" 4 .nf $ hash_password \-p "p@ssw0rd" $2b$12$VJNqWQYfsWTEwcELfoSi4Oa8eA17movHqqi8\.X8fWFpum7SxZ9MFe .fi .IP "" 0 .P Hash from the STDIN: .IP "" 4 .nf $ hash_password Password: Confirm password: $2b$12$AszlvfmJl2esnyhmn8m/kuR2tdXgROWtWxnX\.rcuAbM8ErLoUhybG .fi .IP "" 0 .P Using a config file: .IP "" 4 .nf $ hash_password \-c config\.yml Password: Confirm password: $2b$12$CwI\.wBNr\.w3kmiUlV3T5s\.GT2wH7uebDCovDrCOh18dFedlANK99O .fi .IP "" 0 .SH "COPYRIGHT" This man page was written by Rahul De <\fI\%mailto:rahulde@swecha\.net\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synctl(1), synapse_port_db(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/hash_password.ronn000066400000000000000000000037141420514467300202620ustar00rootroot00000000000000hash_password(1) -- Calculate the hash of a new password, so that passwords can be reset ======================================================================================== ## SYNOPSIS `hash_password` [`-p`|`--password` [password]] [`-c`|`--config` ] ## DESCRIPTION **hash_password** calculates the hash of a supplied password using bcrypt. `hash_password` takes a password as an parameter either on the command line or the `STDIN` if not supplied. It accepts an YAML file which can be used to specify parameters like the number of rounds for bcrypt and password_config section having the pepper value used for the hashing. By default `bcrypt_rounds` is set to **10**. The hashed password is written on the `STDOUT`. ## FILES A sample YAML file accepted by `hash_password` is described below: bcrypt_rounds: 17 password_config: pepper: "random hashing pepper" ## OPTIONS * `-p`, `--password`: Read the password form the command line if [password] is supplied. If not, prompt the user and read the password form the `STDIN`. It is not recommended to type the password on the command line directly. Use the STDIN instead. * `-c`, `--config`: Read the supplied YAML containing the options `bcrypt_rounds` and the `password_config` section containing the `pepper` value. ## EXAMPLES Hash from the command line: $ hash_password -p "p@ssw0rd" $2b$12$VJNqWQYfsWTEwcELfoSi4Oa8eA17movHqqi8.X8fWFpum7SxZ9MFe Hash from the STDIN: $ hash_password Password: Confirm password: $2b$12$AszlvfmJl2esnyhmn8m/kuR2tdXgROWtWxnX.rcuAbM8ErLoUhybG Using a config file: $ hash_password -c config.yml Password: Confirm password: $2b$12$CwI.wBNr.w3kmiUlV3T5s.GT2wH7uebDCovDrCOh18dFedlANK99O ## COPYRIGHT This man page was written by Rahul De <> for Debian GNU/Linux distribution. ## SEE ALSO synctl(1), synapse_port_db(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/install000066400000000000000000000000701420514467300161000ustar00rootroot00000000000000debian/manage_debconf.pl /opt/venvs/matrix-synapse/lib/ synapse-1.53.0/debian/manage_debconf.pl000077500000000000000000000061111420514467300177610ustar00rootroot00000000000000#!/usr/bin/perl # # Interface between our config files and the debconf database. # # Usage: # # manage_debconf.pl # # where can be: # # read: read the configuration from the yaml into debconf # update: update the yaml config according to the debconf database use strict; use warnings; use Debconf::Client::ConfModule (qw/get set/); # map from the name of a setting in our .yaml file to the relevant debconf # setting. my %MAPPINGS=( server_name => 'matrix-synapse/server-name', report_stats => 'matrix-synapse/report-stats', ); # enable debug if dpkg --debug my $DEBUG = $ENV{DPKG_MAINTSCRIPT_DEBUG}; sub read_config { my @files = @_; foreach my $file (@files) { print STDERR "reading $file\n" if $DEBUG; open my $FH, "<", $file or next; # rudimentary parsing which (a) avoids having to depend on a yaml library, # and (b) is tolerant of yaml errors while($_ = <$FH>) { while (my ($setting, $debconf) = each %MAPPINGS) { $setting = quotemeta $setting; if(/^${setting}\s*:(.*)$/) { my $val = $1; # remove leading/trailing whitespace $val =~ s/^\s*//; $val =~ s/\s*$//; # remove surrounding quotes if ($val =~ /^"(.*)"$/ || $val =~ /^'(.*)'$/) { $val = $1; } print STDERR ">> $debconf = $val\n" if $DEBUG; set($debconf, $val); } } } close $FH; } } sub update_config { my @files = @_; my %substs = (); while (my ($setting, $debconf) = each %MAPPINGS) { my @res = get($debconf); $substs{$setting} = $res[1] if $res[0] == 0; } foreach my $file (@files) { print STDERR "checking $file\n" if $DEBUG; open my $FH, "<", $file or next; my $updated = 0; # read the whole file into memory my @lines = <$FH>; while (my ($setting, $val) = each %substs) { $setting = quotemeta $setting; map { if (/^${setting}\s*:\s*(.*)\s*$/) { my $current = $1; if ($val ne $current) { $_ = "${setting}: $val\n"; $updated = 1; } } } @lines; } close $FH; next unless $updated; print STDERR "updating $file\n" if $DEBUG; open $FH, ">", $file or die "unable to update $file"; print $FH @lines; close $FH; } } my $cmd = $ARGV[0]; my $read = 0; my $update = 0; if (not $cmd) { die "must specify a command to perform\n"; } elsif ($cmd eq 'read') { $read = 1; } elsif ($cmd eq 'update') { $update = 1; } else { die "unknown command '$cmd'\n"; } my @files = ( "/etc/matrix-synapse/homeserver.yaml", glob("/etc/matrix-synapse/conf.d/*.yaml"), ); if ($read) { read_config(@files); } elsif ($update) { update_config(@files); } synapse-1.53.0/debian/manpages000066400000000000000000000002111420514467300162220ustar00rootroot00000000000000debian/hash_password.1 debian/register_new_matrix_user.1 debian/synapse_port_db.1 debian/synapse_review_recent_signups.1 debian/synctl.1 synapse-1.53.0/debian/matrix-synapse-py3.config000077500000000000000000000007471420514467300214110ustar00rootroot00000000000000#!/bin/sh set -e # shellcheck disable=SC1091 . /usr/share/debconf/confmodule # try to update the debconf db according to whatever is in the config files # # note that we may get run during preconfiguration, in which case the script # will not yet be installed. [ -x /opt/venvs/matrix-synapse/lib/manage_debconf.pl ] && \ /opt/venvs/matrix-synapse/lib/manage_debconf.pl read db_input high matrix-synapse/server-name || true db_input high matrix-synapse/report-stats || true db_go synapse-1.53.0/debian/matrix-synapse-py3.links000066400000000000000000000007061420514467300212540ustar00rootroot00000000000000opt/venvs/matrix-synapse/bin/hash_password usr/bin/hash_password opt/venvs/matrix-synapse/bin/register_new_matrix_user usr/bin/register_new_matrix_user opt/venvs/matrix-synapse/bin/synapse_port_db usr/bin/synapse_port_db opt/venvs/matrix-synapse/bin/synapse_review_recent_signups usr/bin/synapse_review_recent_signups opt/venvs/matrix-synapse/bin/synctl usr/bin/synctl opt/venvs/matrix-synapse/bin/update_synapse_database usr/bin/update_synapse_database synapse-1.53.0/debian/matrix-synapse-py3.postinst000066400000000000000000000032461420514467300220210ustar00rootroot00000000000000#!/bin/sh -e # shellcheck disable=SC1091 . /usr/share/debconf/confmodule CONFIGFILE_SERVERNAME="/etc/matrix-synapse/conf.d/server_name.yaml" CONFIGFILE_REPORTSTATS="/etc/matrix-synapse/conf.d/report_stats.yaml" USER="matrix-synapse" case "$1" in configure|reconfigure) # generate template config files if they don't exist mkdir -p "/etc/matrix-synapse/conf.d/" if [ ! -e "$CONFIGFILE_SERVERNAME" ]; then cat > "$CONFIGFILE_SERVERNAME" < "$CONFIGFILE_REPORTSTATS" </dev/null; then adduser --quiet --system --no-create-home --home /var/lib/matrix-synapse $USER fi for DIR in /var/lib/matrix-synapse /var/log/matrix-synapse /etc/matrix-synapse; do if ! dpkg-statoverride --list --quiet $DIR >/dev/null; then dpkg-statoverride --force --quiet --update --add $USER nogroup 0755 $DIR fi done ;; esac #DEBHELPER# exit 0 synapse-1.53.0/debian/matrix-synapse-py3.preinst000066400000000000000000000022011420514467300216100ustar00rootroot00000000000000#!/bin/sh -e # Attempt to undo some of the braindamage caused by # https://github.com/matrix-org/package-synapse-debian/issues/18. # # Due to reasons [1], the old python2 matrix-synapse package will not stop the # service when the package is uninstalled. Our maintainer scripts will do the # right thing in terms of ensuring the service is enabled and unmasked, but # then do a `systemctl start matrix-synapse`, which of course does nothing - # leaving the old (py2) service running. # # There should normally be no reason for the service to be running during our # preinst, so we assume that if it *is* running, it's due to that situation, # and stop it. # # [1] dh_systemd_start doesn't do anything because it sees that there is an # init.d script with the same name, so leaves it to dh_installinit. # # dh_installinit doesn't do anything because somebody gave it a --no-start # for unknown reasons. if [ -x /bin/systemctl ]; then if /bin/systemctl --quiet is-active -- matrix-synapse; then echo >&2 "stopping existing matrix-synapse service" /bin/systemctl stop matrix-synapse || true fi fi #DEBHELPER# exit 0 synapse-1.53.0/debian/matrix-synapse.default000066400000000000000000000001371420514467300210450ustar00rootroot00000000000000# Specify environment variables used when running Synapse # SYNAPSE_CACHE_FACTOR=0.5 (default) synapse-1.53.0/debian/matrix-synapse.service000066400000000000000000000012201420514467300210530ustar00rootroot00000000000000[Unit] Description=Synapse Matrix homeserver [Service] Type=notify User=matrix-synapse WorkingDirectory=/var/lib/matrix-synapse EnvironmentFile=-/etc/default/matrix-synapse ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=matrix-synapse [Install] WantedBy=multi-user.target synapse-1.53.0/debian/po/000077500000000000000000000000001420514467300151305ustar00rootroot00000000000000synapse-1.53.0/debian/po/POTFILES.in000066400000000000000000000000441420514467300167030ustar00rootroot00000000000000[type: gettext/rfc822deb] templates synapse-1.53.0/debian/po/templates.pot000066400000000000000000000034021420514467300176510ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the matrix-synapse-py3 package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: matrix-synapse-py3\n" "Report-Msgid-Bugs-To: matrix-synapse-py3@packages.debian.org\n" "POT-Creation-Date: 2020-04-06 16:39-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../templates:1001 msgid "Name of the server:" msgstr "" #. Type: string #. Description #: ../templates:1001 msgid "" "The name that this homeserver will appear as, to clients and other servers " "via federation. This is normally the public hostname of the server running " "synapse, but can be different if you set up delegation. Please refer to the " "delegation documentation in this case: https://github.com/matrix-org/synapse/" "blob/master/docs/delegate.md." msgstr "" #. Type: boolean #. Description #: ../templates:2001 msgid "Report anonymous statistics?" msgstr "" #. Type: boolean #. Description #: ../templates:2001 msgid "" "Developers of Matrix and Synapse really appreciate helping the project out " "by reporting anonymized usage statistics from this homeserver. Only very " "basic aggregate data (e.g. number of users) will be reported, but it helps " "track the growth of the Matrix community, and helps in making Matrix a " "success, as well as to convince other networks that they should peer with " "Matrix." msgstr "" #. Type: boolean #. Description #: ../templates:2001 msgid "Thank you." msgstr "" synapse-1.53.0/debian/register_new_matrix_user.1000066400000000000000000000041731420514467300217200ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "REGISTER_NEW_MATRIX_USER" "1" "July 2021" "" "" .SH "NAME" \fBregister_new_matrix_user\fR \- Used to register new users with a given home server when registration has been disabled .SH "SYNOPSIS" \fBregister_new_matrix_user\fR options\|\.\|\.\|\. .SH "DESCRIPTION" \fBregister_new_matrix_user\fR registers new users with a given home server when registration has been disabled\. For this to work, the home server must be configured with the \'registration_shared_secret\' option set\. .P This accepts the user credentials like the username, password, is user an admin or not and registers the user onto the homeserver database\. Also, a YAML file containing the shared secret can be provided\. If not, the shared secret can be provided via the command line\. .P By default it assumes the home server URL to be \fBhttps://localhost:8448\fR\. This can be changed via the \fBserver_url\fR command line option\. .SH "FILES" A sample YAML file accepted by \fBregister_new_matrix_user\fR is described below: .IP "" 4 .nf registration_shared_secret: "s3cr3t" .fi .IP "" 0 .SH "OPTIONS" .TP \fB\-u\fR, \fB\-\-user\fR Local part of the new user\. Will prompt if omitted\. .TP \fB\-p\fR, \fB\-\-password\fR New password for user\. Will prompt if omitted\. Supplying the password on the command line is not recommended\. Use the STDIN instead\. .TP \fB\-a\fR, \fB\-\-admin\fR Register new user as an admin\. Will prompt if omitted\. .TP \fB\-c\fR, \fB\-\-config\fR Path to server config file containing the shared secret\. .TP \fB\-k\fR, \fB\-\-shared\-secret\fR Shared secret as defined in server config file\. This is an optional parameter as it can be also supplied via the YAML file\. .TP \fBserver_url\fR URL of the home server\. Defaults to \'https://localhost:8448\'\. .SH "EXAMPLES" .nf $ register_new_matrix_user \-u user1 \-p p@ssword \-a \-c config\.yaml .fi .SH "COPYRIGHT" This man page was written by Rahul De <\fI\%mailto:rahulde@swecha\.net\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synctl(1), synapse_port_db(1), hash_password(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/register_new_matrix_user.ronn000066400000000000000000000037401420514467300225330ustar00rootroot00000000000000register_new_matrix_user(1) -- Used to register new users with a given home server when registration has been disabled ====================================================================================================================== ## SYNOPSIS `register_new_matrix_user` options... ## DESCRIPTION **register_new_matrix_user** registers new users with a given home server when registration has been disabled. For this to work, the home server must be configured with the 'registration_shared_secret' option set. This accepts the user credentials like the username, password, is user an admin or not and registers the user onto the homeserver database. Also, a YAML file containing the shared secret can be provided. If not, the shared secret can be provided via the command line. By default it assumes the home server URL to be `https://localhost:8448`. This can be changed via the `server_url` command line option. ## FILES A sample YAML file accepted by `register_new_matrix_user` is described below: registration_shared_secret: "s3cr3t" ## OPTIONS * `-u`, `--user`: Local part of the new user. Will prompt if omitted. * `-p`, `--password`: New password for user. Will prompt if omitted. Supplying the password on the command line is not recommended. Use the STDIN instead. * `-a`, `--admin`: Register new user as an admin. Will prompt if omitted. * `-c`, `--config`: Path to server config file containing the shared secret. * `-k`, `--shared-secret`: Shared secret as defined in server config file. This is an optional parameter as it can be also supplied via the YAML file. * `server_url`: URL of the home server. Defaults to 'https://localhost:8448'. ## EXAMPLES $ register_new_matrix_user -u user1 -p p@ssword -a -c config.yaml ## COPYRIGHT This man page was written by Rahul De <> for Debian GNU/Linux distribution. ## SEE ALSO synctl(1), synapse_port_db(1), hash_password(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/rules000077500000000000000000000042341420514467300155750ustar00rootroot00000000000000#!/usr/bin/make -f # # Build Debian package using https://github.com/spotify/dh-virtualenv # # assume we only have one package PACKAGE_NAME:=`dh_listpackages` override_dh_systemd_enable: dh_systemd_enable --name=matrix-synapse override_dh_installinit: dh_installinit --name=matrix-synapse # we don't really want to strip the symbols from our object files. override_dh_strip: # dh_shlibdeps calls dpkg-shlibdeps, which finds all the binary files # (executables and shared libs) in the package, and looks for the shared # libraries that they depend on. It then adds a dependency on the package that # contains that library to the package. # # We make two modifications to that process... # override_dh_shlibdeps: # Firstly, postgres is not a hard dependency for us, so we want to make # the things that psycopg2 depends on (such as libpq) be # recommendations rather than hard dependencies. We do so by # running dpkg-shlibdeps manually on psycopg2's libs. # find debian/$(PACKAGE_NAME)/ -path '*/site-packages/psycopg2/*.so' | \ xargs dpkg-shlibdeps -Tdebian/$(PACKAGE_NAME).substvars \ -pshlibs1 -dRecommends # secondly, we exclude PIL's libraries from the process. They are known # to be self-contained, but they have interdependencies and # dpkg-shlibdeps doesn't know how to resolve them. # # As of Pillow 7.1.0, these libraries are in # site-packages/Pillow.libs. Previously, they were in # site-packages/PIL/.libs. # # (we also need to exclude psycopg2, of course, since we've already # dealt with that.) # dh_shlibdeps \ -X site-packages/PIL/.libs \ -X site-packages/Pillow.libs \ -X site-packages/psycopg2 override_dh_virtualenv: ./debian/build_virtualenv override_dh_builddeb: # force the compression to xzip, to stop dpkg-deb on impish defaulting to zstd # (which requires reprepro 5.3.0-1.3, which is currently only in 'experimental' in Debian: # https://metadata.ftp-master.debian.org/changelogs/main/r/reprepro/reprepro_5.3.0-1.3_changelog) dh_builddeb -- -Zxz %: dh $@ --with python-virtualenv synapse-1.53.0/debian/source/000077500000000000000000000000001420514467300160125ustar00rootroot00000000000000synapse-1.53.0/debian/source/format000066400000000000000000000000151420514467300172210ustar00rootroot000000000000003.0 (native) synapse-1.53.0/debian/synapse_port_db.1000066400000000000000000000053251420514467300177740ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "SYNAPSE_PORT_DB" "1" "July 2021" "" "" .SH "NAME" \fBsynapse_port_db\fR \- A script to port an existing synapse SQLite database to a new PostgreSQL database\. .SH "SYNOPSIS" \fBsynapse_port_db\fR [\-v] \-\-sqlite\-database=\fIdbfile\fR \-\-postgres\-config=\fIyamlconfig\fR [\-\-curses] [\-\-batch\-size=\fIbatch\-size\fR] .SH "DESCRIPTION" \fBsynapse_port_db\fR ports an existing synapse SQLite database to a new PostgreSQL database\. .P SQLite database is specified with \fB\-\-sqlite\-database\fR option and PostgreSQL configuration required to connect to PostgreSQL database is provided using \fB\-\-postgres\-config\fR configuration\. The configuration is specified in YAML format\. .SH "OPTIONS" .TP \fB\-v\fR Print log messages in \fBdebug\fR level instead of \fBinfo\fR level\. .TP \fB\-\-sqlite\-database\fR The snapshot of the SQLite database file\. This must not be currently used by a running synapse server\. .TP \fB\-\-postgres\-config\fR The database config file for the PostgreSQL database\. .TP \fB\-\-curses\fR Display a curses based progress UI\. .SH "CONFIG FILE" The postgres configuration file must be a valid YAML file with the following options\. .IP "\[ci]" 4 \fBdatabase\fR: Database configuration section\. This section header can be ignored and the options below may be specified as top level keys\. .IP "\[ci]" 4 \fBname\fR: Connector to use when connecting to the database\. This value must be \fBpsycopg2\fR\. .IP "\[ci]" 4 \fBargs\fR: DB API 2\.0 compatible arguments to send to the \fBpsycopg2\fR module\. .IP "\[ci]" 4 \fBdbname\fR \- the database name .IP "\[ci]" 4 \fBuser\fR \- user name used to authenticate .IP "\[ci]" 4 \fBpassword\fR \- password used to authenticate .IP "\[ci]" 4 \fBhost\fR \- database host address (defaults to UNIX socket if not provided) .IP "\[ci]" 4 \fBport\fR \- connection port number (defaults to 5432 if not provided) .IP "" 0 .IP "\[ci]" 4 \fBsynchronous_commit\fR: Optional\. Default is True\. If the value is \fBFalse\fR, enable asynchronous commit and don\'t wait for the server to call fsync before ending the transaction\. See: https://www\.postgresql\.org/docs/current/static/wal\-async\-commit\.html .IP "" 0 .IP "" 0 .P Following example illustrates the configuration file format\. .IP "" 4 .nf database: name: psycopg2 args: dbname: synapsedb user: synapseuser password: ORohmi9Eet=ohphi host: localhost synchronous_commit: false .fi .IP "" 0 .SH "COPYRIGHT" This man page was written by Sunil Mohan Adapa <\fI\%mailto:sunil@medhas\.org\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synctl(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/synapse_port_db.ronn000066400000000000000000000047321420514467300206110ustar00rootroot00000000000000synapse_port_db(1) -- A script to port an existing synapse SQLite database to a new PostgreSQL database. ============================================= ## SYNOPSIS `synapse_port_db` [-v] --sqlite-database= --postgres-config= [--curses] [--batch-size=] ## DESCRIPTION **synapse_port_db** ports an existing synapse SQLite database to a new PostgreSQL database. SQLite database is specified with `--sqlite-database` option and PostgreSQL configuration required to connect to PostgreSQL database is provided using `--postgres-config` configuration. The configuration is specified in YAML format. ## OPTIONS * `-v`: Print log messages in `debug` level instead of `info` level. * `--sqlite-database`: The snapshot of the SQLite database file. This must not be currently used by a running synapse server. * `--postgres-config`: The database config file for the PostgreSQL database. * `--curses`: Display a curses based progress UI. ## CONFIG FILE The postgres configuration file must be a valid YAML file with the following options. * `database`: Database configuration section. This section header can be ignored and the options below may be specified as top level keys. * `name`: Connector to use when connecting to the database. This value must be `psycopg2`. * `args`: DB API 2.0 compatible arguments to send to the `psycopg2` module. * `dbname` - the database name * `user` - user name used to authenticate * `password` - password used to authenticate * `host` - database host address (defaults to UNIX socket if not provided) * `port` - connection port number (defaults to 5432 if not provided) * `synchronous_commit`: Optional. Default is True. If the value is `False`, enable asynchronous commit and don't wait for the server to call fsync before ending the transaction. See: https://www.postgresql.org/docs/current/static/wal-async-commit.html Following example illustrates the configuration file format. database: name: psycopg2 args: dbname: synapsedb user: synapseuser password: ORohmi9Eet=ohphi host: localhost synchronous_commit: false ## COPYRIGHT This man page was written by Sunil Mohan Adapa <> for Debian GNU/Linux distribution. ## SEE ALSO synctl(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/synapse_review_recent_signups.1000066400000000000000000000026051420514467300227520ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "SYNAPSE_REVIEW_RECENT_SIGNUPS" "1" "July 2021" "" "" .SH "NAME" \fBsynapse_review_recent_signups\fR \- Print users that have recently registered on Synapse .SH "SYNOPSIS" \fBsynapse_review_recent_signups\fR \fB\-c\fR|\fB\-\-config\fR \fIfile\fR [\fB\-s\fR|\fB\-\-since\fR \fIperiod\fR] [\fB\-e\fR|\fB\-\-exclude\-emails\fR] [\fB\-u\fR|\fB\-\-only\-users\fR] .SH "DESCRIPTION" \fBsynapse_review_recent_signups\fR prints out recently registered users on a Synapse server, as well as some basic information about the user\. .P \fBsynapse_review_recent_signups\fR must be supplied with the config of the Synapse server, so that it can fetch the database config and connect to the database\. .SH "OPTIONS" .TP \fB\-c\fR, \fB\-\-config\fR The config file(s) used by the Synapse server\. .TP \fB\-s\fR, \fB\-\-since\fR How far back to search for newly registered users\. Defaults to 7d, i\.e\. up to seven days in the past\. Valid units are \'s\', \'m\', \'h\', \'d\', \'w\', or \'y\'\. .TP \fB\-e\fR, \fB\-\-exclude\-emails\fR Do not print out users that have validated emails associated with their account\. .TP \fB\-u\fR, \fB\-\-only\-users\fR Only print out the user IDs of recently registered users, without any additional information .SH "SEE ALSO" synctl(1), synapse_port_db(1), register_new_matrix_user(1), hash_password(1) synapse-1.53.0/debian/synapse_review_recent_signups.ronn000066400000000000000000000023371420514467300235700ustar00rootroot00000000000000synapse_review_recent_signups(1) -- Print users that have recently registered on Synapse ======================================================================================== ## SYNOPSIS `synapse_review_recent_signups` `-c`|`--config` [`-s`|`--since` ] [`-e`|`--exclude-emails`] [`-u`|`--only-users`] ## DESCRIPTION **synapse_review_recent_signups** prints out recently registered users on a Synapse server, as well as some basic information about the user. `synapse_review_recent_signups` must be supplied with the config of the Synapse server, so that it can fetch the database config and connect to the database. ## OPTIONS * `-c`, `--config`: The config file(s) used by the Synapse server. * `-s`, `--since`: How far back to search for newly registered users. Defaults to 7d, i.e. up to seven days in the past. Valid units are 's', 'm', 'h', 'd', 'w', or 'y'. * `-e`, `--exclude-emails`: Do not print out users that have validated emails associated with their account. * `-u`, `--only-users`: Only print out the user IDs of recently registered users, without any additional information ## SEE ALSO synctl(1), synapse_port_db(1), register_new_matrix_user(1), hash_password(1) synapse-1.53.0/debian/synctl.1000066400000000000000000000042641420514467300161160ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "SYNCTL" "1" "July 2021" "" "" .SH "NAME" \fBsynctl\fR \- Synapse server control interface .SH "SYNOPSIS" Start, stop or restart synapse server\. .P \fBsynctl\fR {start|stop|restart} [configfile] [\-w|\-\-worker=\fIWORKERCONFIG\fR] [\-a|\-\-all\-processes=\fIWORKERCONFIGDIR\fR] .SH "DESCRIPTION" \fBsynctl\fR can be used to start, stop or restart Synapse server\. The control operation can be done on all processes or a single worker process\. .SH "OPTIONS" .TP \fBaction\fR The value of action should be one of \fBstart\fR, \fBstop\fR or \fBrestart\fR\. .TP \fBconfigfile\fR Optional path of the configuration file to use\. Default value is \fBhomeserver\.yaml\fR\. The configuration file must exist for the operation to succeed\. .TP \fB\-w\fR, \fB\-\-worker\fR: .TP \fB\-a\fR, \fB\-\-all\-processes\fR: .SH "CONFIGURATION FILE" Configuration file may be generated as follows: .IP "" 4 .nf $ python \-m synapse\.app\.homeserver \-c config\.yaml \-\-generate\-config \-\-server\-name= .fi .IP "" 0 .SH "ENVIRONMENT" .TP \fBSYNAPSE_CACHE_FACTOR\fR Synapse\'s architecture is quite RAM hungry currently \- we deliberately cache a lot of recent room data and metadata in RAM in order to speed up common requests\. We\'ll improve this in the future, but for now the easiest way to either reduce the RAM usage (at the risk of slowing things down) is to set the almost\-undocumented \fBSYNAPSE_CACHE_FACTOR\fR environment variable\. The default is 0\.5, which can be decreased to reduce RAM usage in memory constrained enviroments, or increased if performance starts to degrade\. .IP However, degraded performance due to a low cache factor, common on machines with slow disks, often leads to explosions in memory use due backlogged requests\. In this case, reducing the cache factor will make things worse\. Instead, try increasing it drastically\. 2\.0 is a good starting value\. .SH "COPYRIGHT" This man page was written by Sunil Mohan Adapa <\fI\%mailto:sunil@medhas\.org\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synapse_port_db(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/synctl.ronn000066400000000000000000000051011420514467300167210ustar00rootroot00000000000000synctl(1) -- Synapse server control interface ============================================= ## SYNOPSIS Start, stop or restart synapse server. `synctl` {start|stop|restart} [configfile] [-w|--worker=] [-a|--all-processes=] ## DESCRIPTION **synctl** can be used to start, stop or restart Synapse server. The control operation can be done on all processes or a single worker process. ## OPTIONS * `action`: The value of action should be one of `start`, `stop` or `restart`. * `configfile`: Optional path of the configuration file to use. Default value is `homeserver.yaml`. The configuration file must exist for the operation to succeed. * `-w`, `--worker`: Perform start, stop or restart operations on a single worker. Incompatible with `-a`|`--all-processes`. Value passed must be a valid worker's configuration file. * `-a`, `--all-processes`: Perform start, stop or restart operations on all the workers in the given directory and the main synapse process. Incompatible with `-w`|`--worker`. Value passed must be a directory containing valid work configuration files. All files ending with `.yaml` extension shall be considered as configuration files and all other files in the directory are ignored. ## CONFIGURATION FILE Configuration file may be generated as follows: $ python -m synapse.app.homeserver -c config.yaml --generate-config --server-name= ## ENVIRONMENT * `SYNAPSE_CACHE_FACTOR`: Synapse's architecture is quite RAM hungry currently - we deliberately cache a lot of recent room data and metadata in RAM in order to speed up common requests. We'll improve this in the future, but for now the easiest way to either reduce the RAM usage (at the risk of slowing things down) is to set the almost-undocumented ``SYNAPSE_CACHE_FACTOR`` environment variable. The default is 0.5, which can be decreased to reduce RAM usage in memory constrained enviroments, or increased if performance starts to degrade. However, degraded performance due to a low cache factor, common on machines with slow disks, often leads to explosions in memory use due backlogged requests. In this case, reducing the cache factor will make things worse. Instead, try increasing it drastically. 2.0 is a good starting value. ## COPYRIGHT This man page was written by Sunil Mohan Adapa <> for Debian GNU/Linux distribution. ## SEE ALSO synapse_port_db(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.53.0/debian/templates000066400000000000000000000016421420514467300164360ustar00rootroot00000000000000Template: matrix-synapse/server-name Type: string _Description: Name of the server: The name that this homeserver will appear as, to clients and other servers via federation. This is normally the public hostname of the server running synapse, but can be different if you set up delegation. Please refer to the delegation documentation in this case: https://github.com/matrix-org/synapse/blob/master/docs/delegate.md. Template: matrix-synapse/report-stats Type: boolean Default: false _Description: Report anonymous statistics? Developers of Matrix and Synapse really appreciate helping the project out by reporting anonymized usage statistics from this homeserver. Only very basic aggregate data (e.g. number of users) will be reported, but it helps track the growth of the Matrix community, and helps in making Matrix a success, as well as to convince other networks that they should peer with Matrix. . Thank you. synapse-1.53.0/demo/000077500000000000000000000000001420514467300142145ustar00rootroot00000000000000synapse-1.53.0/demo/.gitignore000066400000000000000000000000561420514467300162050ustar00rootroot00000000000000*.db *.log *.log.* *.pid /media_store.* /etc synapse-1.53.0/demo/README000066400000000000000000000017661420514467300151060ustar00rootroot00000000000000DO NOT USE THESE DEMO SERVERS IN PRODUCTION Requires you to have done: python setup.py develop The demo start.sh will start three synapse servers on ports 8080, 8081 and 8082, with host names localhost:$port. This can be easily changed to `hostname`:$port in start.sh if required. To enable the servers to communicate untrusted ssl certs are used. In order to do this the servers do not check the certs and are configured in a highly insecure way. Do not use these configuration files in production. stop.sh will stop the synapse servers and the webclient. clean.sh will delete the databases and log files. To start a completely new set of servers, run: ./demo/stop.sh; ./demo/clean.sh && ./demo/start.sh Logs and sqlitedb will be stored in demo/808{0,1,2}.{log,db} Also note that when joining a public room on a different HS via "#foo:bar.net", then you are (in the current impl) joining a room with room_id "foo". This means that it won't work if your HS already has a room with that name. synapse-1.53.0/demo/clean.sh000077500000000000000000000004511420514467300156350ustar00rootroot00000000000000#!/usr/bin/env bash set -e DIR="$( cd "$( dirname "$0" )" && pwd )" PID_FILE="$DIR/servers.pid" if [ -f "$PID_FILE" ]; then echo "servers.pid exists!" exit 1 fi for port in 8080 8081 8082; do rm -rf "${DIR:?}/$port" rm -rf "$DIR/media_store.$port" done rm -rf "${DIR:?}/etc" synapse-1.53.0/demo/start.sh000077500000000000000000000103701420514467300157110ustar00rootroot00000000000000#!/usr/bin/env bash DIR="$( cd "$( dirname "$0" )" && pwd )" CWD=$(pwd) cd "$DIR/.." || exit mkdir -p demo/etc PYTHONPATH=$(readlink -f "$(pwd)") export PYTHONPATH echo "$PYTHONPATH" for port in 8080 8081 8082; do echo "Starting server on port $port... " https_port=$((port + 400)) mkdir -p demo/$port pushd demo/$port || exit #rm $DIR/etc/$port.config python3 -m synapse.app.homeserver \ --generate-config \ -H "localhost:$https_port" \ --config-path "$DIR/etc/$port.config" \ --report-stats no if ! grep -F "Customisation made by demo/start.sh" -q "$DIR/etc/$port.config"; then # Generate tls keys openssl req -x509 -newkey rsa:4096 -keyout "$DIR/etc/localhost:$https_port.tls.key" -out "$DIR/etc/localhost:$https_port.tls.crt" -days 365 -nodes -subj "/O=matrix" # Regenerate configuration { printf '\n\n# Customisation made by demo/start.sh\n' echo "public_baseurl: http://localhost:$port/" echo 'enable_registration: true' # Warning, this heredoc depends on the interaction of tabs and spaces. # Please don't accidentaly bork me with your fancy settings. listeners=$(cat <<-PORTLISTENERS # Configure server to listen on both $https_port and $port # This overides some of the default settings above listeners: - port: $https_port type: http tls: true resources: - names: [client, federation] - port: $port tls: false bind_addresses: ['::1', '127.0.0.1'] type: http x_forwarded: true resources: - names: [client, federation] compress: false PORTLISTENERS ) echo "${listeners}" # Disable tls for the servers printf '\n\n# Disable tls on the servers.' echo '# DO NOT USE IN PRODUCTION' echo 'use_insecure_ssl_client_just_for_testing_do_not_use: true' echo 'federation_verify_certificates: false' # Set tls paths echo "tls_certificate_path: \"$DIR/etc/localhost:$https_port.tls.crt\"" echo "tls_private_key_path: \"$DIR/etc/localhost:$https_port.tls.key\"" # Ignore keys from the trusted keys server echo '# Ignore keys from the trusted keys server' echo 'trusted_key_servers:' echo ' - server_name: "matrix.org"' echo ' accept_keys_insecurely: true' # Reduce the blacklist blacklist=$(cat <<-BLACK # Set the blacklist so that it doesn't include 127.0.0.1, ::1 federation_ip_range_blacklist: - '10.0.0.0/8' - '172.16.0.0/12' - '192.168.0.0/16' - '100.64.0.0/10' - '169.254.0.0/16' - 'fe80::/64' - 'fc00::/7' BLACK ) echo "${blacklist}" } >> "$DIR/etc/$port.config" fi # Check script parameters if [ $# -eq 1 ]; then if [ "$1" = "--no-rate-limit" ]; then # Disable any rate limiting ratelimiting=$(cat <<-RC rc_message: per_second: 1000 burst_count: 1000 rc_registration: per_second: 1000 burst_count: 1000 rc_login: address: per_second: 1000 burst_count: 1000 account: per_second: 1000 burst_count: 1000 failed_attempts: per_second: 1000 burst_count: 1000 rc_admin_redaction: per_second: 1000 burst_count: 1000 rc_joins: local: per_second: 1000 burst_count: 1000 remote: per_second: 1000 burst_count: 1000 rc_3pid_validation: per_second: 1000 burst_count: 1000 rc_invites: per_room: per_second: 1000 burst_count: 1000 per_user: per_second: 1000 burst_count: 1000 RC ) echo "${ratelimiting}" >> "$DIR/etc/$port.config" fi fi if ! grep -F "full_twisted_stacktraces" -q "$DIR/etc/$port.config"; then echo "full_twisted_stacktraces: true" >> "$DIR/etc/$port.config" fi if ! grep -F "report_stats" -q "$DIR/etc/$port.config" ; then echo "report_stats: false" >> "$DIR/etc/$port.config" fi python3 -m synapse.app.homeserver \ --config-path "$DIR/etc/$port.config" \ -D \ popd || exit done cd "$CWD" || exit synapse-1.53.0/demo/stop.sh000077500000000000000000000004061420514467300155400ustar00rootroot00000000000000#!/usr/bin/env bash DIR="$( cd "$( dirname "$0" )" && pwd )" FILES=$(find "$DIR" -name "*.pid" -type f); for pid_file in $FILES; do pid=$(cat "$pid_file") if [[ $pid ]]; then echo "Killing $pid_file with $pid" kill "$pid" fi done synapse-1.53.0/docker/000077500000000000000000000000001420514467300145375ustar00rootroot00000000000000synapse-1.53.0/docker/Dockerfile000066400000000000000000000064741420514467300165440ustar00rootroot00000000000000# Dockerfile to build the matrixdotorg/synapse docker images. # # Note that it uses features which are only available in BuildKit - see # https://docs.docker.com/go/buildkit/ for more information. # # To build the image, run `docker build` command from the root of the # synapse repository: # # DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile . # # There is an optional PYTHON_VERSION build argument which sets the # version of python to build against: for example: # # DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile --build-arg PYTHON_VERSION=3.9 . # ARG PYTHON_VERSION=3.8 ### ### Stage 0: builder ### FROM docker.io/python:${PYTHON_VERSION}-slim as builder # install the OS build deps # # RUN --mount is specific to buildkit and is documented at # https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md#build-mounts-run---mount. # Here we use it to set up a cache for apt, to improve rebuild speeds on # slow connections. # RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && apt-get install -y \ build-essential \ libffi-dev \ libjpeg-dev \ libpq-dev \ libssl-dev \ libwebp-dev \ libxml++2.6-dev \ libxslt1-dev \ openssl \ rustc \ zlib1g-dev \ && rm -rf /var/lib/apt/lists/* # Copy just what we need to pip install COPY scripts /synapse/scripts/ COPY MANIFEST.in README.rst setup.py synctl /synapse/ COPY synapse/__init__.py /synapse/synapse/__init__.py COPY synapse/python_dependencies.py /synapse/synapse/python_dependencies.py # To speed up rebuilds, install all of the dependencies before we copy over # the whole synapse project so that we this layer in the Docker cache can be # used while you develop on the source # # This is aiming at installing the `install_requires` and `extras_require` from `setup.py` RUN --mount=type=cache,target=/root/.cache/pip \ pip install --prefix="/install" --no-warn-script-location \ /synapse[all] # Copy over the rest of the project COPY synapse /synapse/synapse/ # Install the synapse package itself and all of its children packages. # # This is aiming at installing only the `packages=find_packages(...)` from `setup.py RUN pip install --prefix="/install" --no-deps --no-warn-script-location /synapse ### ### Stage 1: runtime ### FROM docker.io/python:${PYTHON_VERSION}-slim LABEL org.opencontainers.image.url='https://matrix.org/docs/projects/server/synapse' LABEL org.opencontainers.image.documentation='https://github.com/matrix-org/synapse/blob/master/docker/README.md' LABEL org.opencontainers.image.source='https://github.com/matrix-org/synapse.git' LABEL org.opencontainers.image.licenses='Apache-2.0' RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && apt-get install -y \ curl \ gosu \ libjpeg62-turbo \ libpq5 \ libwebp6 \ xmlsec1 \ libjemalloc2 \ libssl-dev \ openssl \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /install /usr/local COPY ./docker/start.py /start.py COPY ./docker/conf /conf VOLUME ["/data"] EXPOSE 8008/tcp 8009/tcp 8448/tcp ENTRYPOINT ["/start.py"] HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \ CMD curl -fSs http://localhost:8008/health || exit 1 synapse-1.53.0/docker/Dockerfile-dhvirtualenv000066400000000000000000000065571420514467300212570ustar00rootroot00000000000000# A dockerfile which builds a docker image for building a debian package for # synapse. The distro to build for is passed as a docker build var. # # The default entrypoint expects the synapse source to be mounted as a # (read-only) volume at /synapse/source, and an output directory at /debs. # # A pair of environment variables (TARGET_USERID and TARGET_GROUPID) can be # passed to the docker container; if these are set, the build script will chown # the build products accordingly, to avoid ending up with things owned by root # in the host filesystem. # Get the distro we want to pull from as a dynamic build variable ARG distro="" ### ### Stage 0: build a dh-virtualenv ### # This is only really needed on focal, since other distributions we # care about have a recent version of dh-virtualenv by default. Unfortunately, # it looks like focal is going to be with us for a while. # # (focal doesn't have a dh-virtualenv package at all. There is a PPA at # https://launchpad.net/~jyrki-pulliainen/+archive/ubuntu/dh-virtualenv, but # it's not obviously easier to use that than to build our own.) FROM ${distro} as builder RUN apt-get update -qq -o Acquire::Languages=none RUN env DEBIAN_FRONTEND=noninteractive apt-get install \ -yqq --no-install-recommends \ build-essential \ ca-certificates \ devscripts \ equivs \ wget # fetch and unpack the package RUN mkdir /dh-virtualenv RUN wget -q -O /dh-virtualenv.tar.gz https://github.com/spotify/dh-virtualenv/archive/refs/tags/1.2.2.tar.gz RUN tar -xv --strip-components=1 -C /dh-virtualenv -f /dh-virtualenv.tar.gz # install its build deps. We do another apt-cache-update here, because we might # be using a stale cache from docker build. RUN apt-get update -qq -o Acquire::Languages=none \ && cd /dh-virtualenv \ && env DEBIAN_FRONTEND=noninteractive mk-build-deps -ri -t "apt-get -y --no-install-recommends" # Build it. Note that building the docs doesn't work due to differences in # Sphinx APIs across versions/distros. RUN cd /dh-virtualenv && DEB_BUILD_OPTIONS=nodoc dpkg-buildpackage -us -uc -b ### ### Stage 1 ### FROM ${distro} # Get the distro we want to pull from as a dynamic build variable # (We need to define it in each build stage) ARG distro="" ENV distro ${distro} # Python < 3.7 assumes LANG="C" means ASCII-only and throws on printing unicode # http://bugs.python.org/issue19846 ENV LANG C.UTF-8 # Install the build dependencies # # NB: keep this list in sync with the list of build-deps in debian/control # TODO: it would be nice to do that automatically. RUN apt-get update -qq -o Acquire::Languages=none \ && env DEBIAN_FRONTEND=noninteractive apt-get install \ -yqq --no-install-recommends -o Dpkg::Options::=--force-unsafe-io \ build-essential \ debhelper \ devscripts \ libsystemd-dev \ lsb-release \ pkg-config \ python3-dev \ python3-pip \ python3-setuptools \ python3-venv \ sqlite3 \ libpq-dev \ xmlsec1 COPY --from=builder /dh-virtualenv_1.2.2-1_all.deb / # install dhvirtualenv. Update the apt cache again first, in case we got a # cached cache from docker the first time. RUN apt-get update -qq -o Acquire::Languages=none \ && apt-get install -yq /dh-virtualenv_1.2.2-1_all.deb WORKDIR /synapse/source ENTRYPOINT ["bash","/synapse/source/docker/build_debian.sh"] synapse-1.53.0/docker/Dockerfile-pgtests000066400000000000000000000022121420514467300202150ustar00rootroot00000000000000# Use the Sytest image that comes with a lot of the build dependencies # pre-installed FROM matrixdotorg/sytest:focal # The Sytest image doesn't come with python, so install that RUN apt-get update && apt-get -qq install -y python3 python3-dev python3-pip # We need tox to run the tests in run_pg_tests.sh RUN python3 -m pip install tox # Initialise the db RUN su -c '/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/data -E "UTF-8" --lc-collate="C.UTF-8" --lc-ctype="C.UTF-8" --username=postgres' postgres # Add a user with our UID and GID so that files get created on the host owned # by us, not root. ARG UID ARG GID RUN groupadd --gid $GID user RUN useradd --uid $UID --gid $GID --groups sudo --no-create-home user # Ensure we can start postgres by sudo-ing as the postgres user. RUN apt-get update && apt-get -qq install -y sudo RUN echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers ADD run_pg_tests.sh /run_pg_tests.sh # Use the "exec form" of ENTRYPOINT (https://docs.docker.com/engine/reference/builder/#entrypoint) # so that we can `docker run` this container and pass arguments to pg_tests.sh ENTRYPOINT ["/run_pg_tests.sh"] USER user synapse-1.53.0/docker/Dockerfile-workers000066400000000000000000000014551420514467300202300ustar00rootroot00000000000000# Inherit from the official Synapse docker image FROM matrixdotorg/synapse # Install deps RUN apt-get update RUN apt-get install -y supervisor redis nginx # Remove the default nginx sites RUN rm /etc/nginx/sites-enabled/default # Copy Synapse worker, nginx and supervisord configuration template files COPY ./docker/conf-workers/* /conf/ # Expose nginx listener port EXPOSE 8080/tcp # Volume for user-editable config files, logs etc. VOLUME ["/data"] # A script to read environment variables and create the necessary # files to run the desired worker configuration. Will start supervisord. COPY ./docker/configure_workers_and_start.py /configure_workers_and_start.py ENTRYPOINT ["/configure_workers_and_start.py"] HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \ CMD /bin/sh /healthcheck.sh synapse-1.53.0/docker/README-testing.md000066400000000000000000000143441420514467300174770ustar00rootroot00000000000000# Running tests against a dockerised Synapse It's possible to run integration tests against Synapse using [Complement](https://github.com/matrix-org/complement). Complement is a Matrix Spec compliance test suite for homeservers, and supports any homeserver docker image configured to listen on ports 8008/8448. This document contains instructions for building Synapse docker images that can be run inside Complement for testing purposes. Note that running Synapse's unit tests from within the docker image is not supported. ## Testing with SQLite and single-process Synapse > Note that `scripts-dev/complement.sh` is a script that will automatically build > and run an SQLite-based, single-process of Synapse against Complement. The instructions below will set up Complement testing for a single-process, SQLite-based Synapse deployment. Start by building the base Synapse docker image. If you wish to run tests with the latest release of Synapse, instead of your current checkout, you can skip this step. From the root of the repository: ```sh docker build -t matrixdotorg/synapse -f docker/Dockerfile . ``` This will build an image with the tag `matrixdotorg/synapse`. Next, build the Synapse image for Complement. You will need a local checkout of Complement. Change to the root of your Complement checkout and run: ```sh docker build -t complement-synapse -f "dockerfiles/Synapse.Dockerfile" dockerfiles ``` This will build an image with the tag `complement-synapse`, which can be handed to Complement for testing via the `COMPLEMENT_BASE_IMAGE` environment variable. Refer to [Complement's documentation](https://github.com/matrix-org/complement/#running) for how to run the tests, as well as the various available command line flags. ## Testing with PostgreSQL and single or multi-process Synapse The above docker image only supports running Synapse with SQLite and in a single-process topology. The following instructions are used to build a Synapse image for Complement that supports either single or multi-process topology with a PostgreSQL database backend. As with the single-process image, build the base Synapse docker image. If you wish to run tests with the latest release of Synapse, instead of your current checkout, you can skip this step. From the root of the repository: ```sh docker build -t matrixdotorg/synapse -f docker/Dockerfile . ``` This will build an image with the tag `matrixdotorg/synapse`. Next, we build a new image with worker support based on `matrixdotorg/synapse:latest`. Again, from the root of the repository: ```sh docker build -t matrixdotorg/synapse-workers -f docker/Dockerfile-workers . ``` This will build an image with the tag` matrixdotorg/synapse-workers`. It's worth noting at this point that this image is fully functional, and can be used for testing against locally. See instructions for using the container under [Running the Dockerfile-worker image standalone](#running-the-dockerfile-worker-image-standalone) below. Finally, build the Synapse image for Complement, which is based on `matrixdotorg/synapse-workers`. You will need a local checkout of Complement. Change to the root of your Complement checkout and run: ```sh docker build -t matrixdotorg/complement-synapse-workers -f dockerfiles/SynapseWorkers.Dockerfile dockerfiles ``` This will build an image with the tag `complement-synapse`, which can be handed to Complement for testing via the `COMPLEMENT_BASE_IMAGE` environment variable. Refer to [Complement's documentation](https://github.com/matrix-org/complement/#running) for how to run the tests, as well as the various available command line flags. ## Running the Dockerfile-worker image standalone For manual testing of a multi-process Synapse instance in Docker, [Dockerfile-workers](Dockerfile-workers) is a Dockerfile that will produce an image bundling all necessary components together for a workerised homeserver instance. This includes any desired Synapse worker processes, a nginx to route traffic accordingly, a redis for worker communication and a supervisord instance to start up and monitor all processes. You will need to provide your own postgres container to connect to, and TLS is not handled by the container. Once you've built the image using the above instructions, you can run it. Be sure you've set up a volume according to the [usual Synapse docker instructions](README.md). Then run something along the lines of: ``` docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=no \ -e POSTGRES_HOST=postgres \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=somesecret \ -e SYNAPSE_WORKER_TYPES=synchrotron,media_repository,user_dir \ -e SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK=1 \ matrixdotorg/synapse-workers ``` ...substituting `POSTGRES*` variables for those that match a postgres host you have available (usually a running postgres docker container). The `SYNAPSE_WORKER_TYPES` environment variable is a comma-separated list of workers to use when running the container. All possible worker names are defined by the keys of the `WORKERS_CONFIG` variable in [this script](configure_workers_and_start.py), which the Dockerfile makes use of to generate appropriate worker, nginx and supervisord config files. Sharding is supported for a subset of workers, in line with the [worker documentation](../docs/workers.md). To run multiple instances of a given worker type, simply specify the type multiple times in `SYNAPSE_WORKER_TYPES` (e.g `SYNAPSE_WORKER_TYPES=event_creator,event_creator...`). Otherwise, `SYNAPSE_WORKER_TYPES` can either be left empty or unset to spawn no workers (leaving only the main process). The container is configured to use redis-based worker mode. Logs for workers and the main process are logged to stdout and can be viewed with standard `docker logs` tooling. Worker logs contain their worker name after the timestamp. Setting `SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK=1` will cause worker logs to be written to `/logs/.log`. Logs are kept for 1 week and rotate every day at 00: 00, according to the container's clock. Logging for the main process must still be configured by modifying the homeserver's log config in your Synapse data volume. synapse-1.53.0/docker/README.md000066400000000000000000000215531420514467300160240ustar00rootroot00000000000000# Synapse Docker This Docker image will run Synapse as a single process. By default it uses a sqlite database; for production use you should connect it to a separate postgres database. The image also does *not* provide a TURN server. This image should work on all platforms that are supported by Docker upstream. Note that Docker's WS1-backend Linux Containers on Windows platform is [experimental](https://github.com/docker/for-win/issues/6470) and is not supported by this image. ## Volumes By default, the image expects a single volume, located at `/data`, that will hold: * configuration files; * uploaded media and thumbnails; * the SQLite database if you do not configure postgres; * the appservices configuration. You are free to use separate volumes depending on storage endpoints at your disposal. For instance, `/data/media` could be stored on a large but low performance hdd storage while other files could be stored on high performance endpoints. In order to setup an application service, simply create an `appservices` directory in the data volume and write the application service Yaml configuration file there. Multiple application services are supported. ## Generating a configuration file The first step is to generate a valid config file. To do this, you can run the image with the `generate` command line option. You will need to specify values for the `SYNAPSE_SERVER_NAME` and `SYNAPSE_REPORT_STATS` environment variable, and mount a docker volume to store the configuration on. For example: ``` docker run -it --rm \ --mount type=volume,src=synapse-data,dst=/data \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest generate ``` For information on picking a suitable server name, see https://matrix-org.github.io/synapse/latest/setup/installation.html. The above command will generate a `homeserver.yaml` in (typically) `/var/lib/docker/volumes/synapse-data/_data`. You should check this file, and customise it to your needs. The following environment variables are supported in `generate` mode: * `SYNAPSE_SERVER_NAME` (mandatory): the server public hostname. * `SYNAPSE_REPORT_STATS` (mandatory, `yes` or `no`): whether to enable anonymous statistics reporting. * `SYNAPSE_HTTP_PORT`: the port Synapse should listen on for http traffic. Defaults to `8008`. * `SYNAPSE_CONFIG_DIR`: where additional config files (such as the log config and event signing key) will be stored. Defaults to `/data`. * `SYNAPSE_CONFIG_PATH`: path to the file to be generated. Defaults to `/homeserver.yaml`. * `SYNAPSE_DATA_DIR`: where the generated config will put persistent data such as the database and media store. Defaults to `/data`. * `UID`, `GID`: the user id and group id to use for creating the data directories. If unset, and no user is set via `docker run --user`, defaults to `991`, `991`. ## Postgres By default the config will use SQLite. See the [docs on using Postgres](https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md) for more info on how to use Postgres. Until this section is improved [this issue](https://github.com/matrix-org/synapse/issues/8304) may provide useful information. ## Running synapse Once you have a valid configuration file, you can start synapse as follows: ``` docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ matrixdotorg/synapse:latest ``` (assuming 8008 is the port Synapse is configured to listen on for http traffic.) You can then check that it has started correctly with: ``` docker logs synapse ``` If all is well, you should now be able to connect to http://localhost:8008 and see a confirmation message. The following environment variables are supported in `run` mode: * `SYNAPSE_CONFIG_DIR`: where additional config files are stored. Defaults to `/data`. * `SYNAPSE_CONFIG_PATH`: path to the config file. Defaults to `/homeserver.yaml`. * `SYNAPSE_WORKER`: module to execute, used when running synapse with workers. Defaults to `synapse.app.homeserver`, which is suitable for non-worker mode. * `UID`, `GID`: the user and group id to run Synapse as. If unset, and no user is set via `docker run --user`, defaults to `991`, `991`. Note that this user must have permission to read the config files, and write to the data directories. * `TZ`: the [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) the container will run with. Defaults to `UTC`. For more complex setups (e.g. for workers) you can also pass your args directly to synapse using `run` mode. For example like this: ``` docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ matrixdotorg/synapse:latest run \ -m synapse.app.generic_worker \ --config-path=/data/homeserver.yaml \ --config-path=/data/generic_worker.yaml ``` If you do not provide `-m`, the value of the `SYNAPSE_WORKER` environment variable is used. If you do not provide at least one `--config-path` or `-c`, the value of the `SYNAPSE_CONFIG_PATH` environment variable is used instead. ## Generating an (admin) user After synapse is running, you may wish to create a user via `register_new_matrix_user`. This requires a `registration_shared_secret` to be set in your config file. Synapse must be restarted to pick up this change. You can then call the script: ``` docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help ``` Remember to remove the `registration_shared_secret` and restart if you no-longer need it. ## TLS support The default configuration exposes a single HTTP port: http://localhost:8008. It is suitable for local testing, but for any practical use, you will either need to use a reverse proxy, or configure Synapse to expose an HTTPS port. For documentation on using a reverse proxy, see https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md. For more information on enabling TLS support in synapse itself, see https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates. Of course, you will need to expose the TLS port from the container with a `-p` argument to `docker run`. ## Legacy dynamic configuration file support The docker image used to support creating a dynamic configuration file based on environment variables. This is no longer supported, and an error will be raised if you try to run synapse without a config file. It is, however, possible to generate a static configuration file based on the environment variables that were previously used. To do this, run the docker container once with the environment variables set, and `migrate_config` command line option. For example: ``` docker run -it --rm \ --mount type=volume,src=synapse-data,dst=/data \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest migrate_config ``` This will generate the same configuration file as the legacy mode used, and will store it in `/data/homeserver.yaml`. You can then use it as shown above at [Running synapse](#running-synapse). Note that the defaults used in this configuration file may be different to those when generating a new config file with `generate`: for example, TLS is enabled by default in this mode. You are encouraged to inspect the generated configuration file and edit it to ensure it meets your needs. ## Building the image If you need to build the image from a Synapse checkout, use the following `docker build` command from the repo's root: ``` docker build -t matrixdotorg/synapse -f docker/Dockerfile . ``` You can choose to build a different docker image by changing the value of the `-f` flag to point to another Dockerfile. ## Disabling the healthcheck If you are using a non-standard port or tls inside docker you can disable the healthcheck whilst running the above `docker run` commands. ``` --no-healthcheck ``` ## Disabling the healthcheck in docker-compose file If you wish to disable the healthcheck via docker-compose, append the following to your service configuration. ``` healthcheck: disable: true ``` ## Setting custom healthcheck on docker run If you wish to point the healthcheck at a different port with docker command, add the following ``` --health-cmd 'curl -fSs http://localhost:1234/health' ``` ## Setting the healthcheck in docker-compose file You can add the following to set a custom healthcheck in a docker compose file. You will need docker-compose version >2.1 for this to work. ``` healthcheck: test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"] interval: 15s timeout: 5s retries: 3 start_period: 5s ``` ## Using jemalloc Jemalloc is embedded in the image and will be used instead of the default allocator. You can read about jemalloc by reading the Synapse [README](https://github.com/matrix-org/synapse/blob/HEAD/README.rst#help-synapse-is-slow-and-eats-all-my-ram-cpu). synapse-1.53.0/docker/build_debian.sh000066400000000000000000000023141420514467300174740ustar00rootroot00000000000000#!/usr/bin/env bash # The script to build the Debian package, as ran inside the Docker image. set -ex # Get the codename from distro env DIST=$(cut -d ':' -f2 <<< "${distro:?}") # we get a read-only copy of the source: make a writeable copy cp -aT /synapse/source /synapse/build cd /synapse/build # if this is a prerelease, set the Section accordingly. # # When the package is later added to the package repo, reprepro will use the # Section to determine which "component" it should go into (see # https://manpages.debian.org/stretch/reprepro/reprepro.1.en.html#GUESSING) DEB_VERSION=$(dpkg-parsechangelog -SVersion) case $DEB_VERSION in *~rc*|*~a*|*~b*|*~c*) sed -ie '/^Section:/c\Section: prerelease' debian/control ;; esac # add an entry to the changelog for this distribution dch -M -l "+$DIST" "build for $DIST" dch -M -r "" --force-distribution --distribution "$DIST" dpkg-buildpackage -us -uc ls -l .. # copy the build results out, setting perms if necessary shopt -s nullglob for i in ../*.deb ../*.dsc ../*.tar.xz ../*.changes ../*.buildinfo; do [ -z "$TARGET_USERID" ] || chown "$TARGET_USERID" "$i" [ -z "$TARGET_GROUPID" ] || chgrp "$TARGET_GROUPID" "$i" mv "$i" /debs done synapse-1.53.0/docker/conf-workers/000077500000000000000000000000001420514467300171565ustar00rootroot00000000000000synapse-1.53.0/docker/conf-workers/healthcheck.sh.j2000066400000000000000000000003131420514467300222640ustar00rootroot00000000000000#!/bin/sh # This healthcheck script is designed to return OK when every # host involved returns OK {%- for healthcheck_url in healthcheck_urls %} curl -fSs {{ healthcheck_url }} || exit 1 {%- endfor %} synapse-1.53.0/docker/conf-workers/nginx.conf.j2000066400000000000000000000015231420514467300214630ustar00rootroot00000000000000# This file contains the base config for the reverse proxy, as part of ../Dockerfile-workers. # configure_workers_and_start.py uses and amends to this file depending on the workers # that have been selected. {{ upstream_directives }} server { # Listen on an unoccupied port number listen 8008; listen [::]:8008; server_name localhost; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 100M; {{ worker_locations }} # Send all other traffic to the main process location ~* ^(\\/_matrix|\\/_synapse) { proxy_pass http://localhost:8080; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; } } synapse-1.53.0/docker/conf-workers/shared.yaml.j2000066400000000000000000000004471420514467300216270ustar00rootroot00000000000000# This file contains the base for the shared homeserver config file between Synapse workers, # as part of ./Dockerfile-workers. # configure_workers_and_start.py uses and amends to this file depending on the workers # that have been selected. redis: enabled: true {{ shared_worker_config }}synapse-1.53.0/docker/conf-workers/supervisord.conf.j2000066400000000000000000000022161420514467300227250ustar00rootroot00000000000000# This file contains the base config for supervisord, as part of ../Dockerfile-workers. # configure_workers_and_start.py uses and amends to this file depending on the workers # that have been selected. [supervisord] nodaemon=true user=root [program:nginx] command=/usr/sbin/nginx -g "daemon off;" priority=500 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 username=www-data autorestart=true [program:redis] command=/usr/bin/redis-server /etc/redis/redis.conf --daemonize no priority=1 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 username=redis autorestart=true [program:synapse_main] command=/usr/local/bin/python -m synapse.app.homeserver --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml priority=10 # Log startup failures to supervisord's stdout/err # Regular synapse logs will still go in the configured data directory stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 autorestart=unexpected exitcodes=0 # Additional process blocks {{ worker_config }}synapse-1.53.0/docker/conf-workers/worker.yaml.j2000066400000000000000000000012231420514467300216630ustar00rootroot00000000000000# This is a configuration template for a single worker instance, and is # used by Dockerfile-workers. # Values will be change depending on whichever workers are selected when # running that image. worker_app: "{{ app }}" worker_name: "{{ name }}" # The replication listener on the main synapse process. worker_replication_host: 127.0.0.1 worker_replication_http_port: 9093 worker_listeners: - type: http port: {{ port }} {% if listener_resources %} resources: - names: {%- for resource in listener_resources %} - {{ resource }} {%- endfor %} {% endif %} worker_log_config: {{ worker_log_config_filepath }} {{ worker_extra_conf }} synapse-1.53.0/docker/conf/000077500000000000000000000000001420514467300154645ustar00rootroot00000000000000synapse-1.53.0/docker/conf/homeserver.yaml000066400000000000000000000100721420514467300205270ustar00rootroot00000000000000# vim:ft=yaml ## TLS ## {% if not SYNAPSE_NO_TLS %} tls_certificate_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.crt" tls_private_key_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.key" {% endif %} ## Server ## server_name: "{{ SYNAPSE_SERVER_NAME }}" pid_file: /homeserver.pid web_client: False soft_file_limit: 0 log_config: "{{ SYNAPSE_LOG_CONFIG }}" ## Ports ## listeners: {% if not SYNAPSE_NO_TLS %} - port: 8448 bind_addresses: ['::'] type: http tls: true x_forwarded: false resources: - names: [client] compress: true - names: [federation] # Federation APIs compress: false {% endif %} # Allow configuring in case we want to reverse proxy 8008 # using another process in the same container - port: {{ SYNAPSE_HTTP_PORT or 8008 }} tls: false bind_addresses: ['::'] type: http x_forwarded: false resources: - names: [client] compress: true - names: [federation] compress: false ## Database ## {% if POSTGRES_PASSWORD %} database: name: "psycopg2" args: user: "{{ POSTGRES_USER or "synapse" }}" password: "{{ POSTGRES_PASSWORD }}" database: "{{ POSTGRES_DB or "synapse" }}" host: "{{ POSTGRES_HOST or "db" }}" port: "{{ POSTGRES_PORT or "5432" }}" cp_min: 5 cp_max: 10 {% else %} database: name: "sqlite3" args: database: "/data/homeserver.db" {% endif %} ## Performance ## event_cache_size: "{{ SYNAPSE_EVENT_CACHE_SIZE or "10K" }}" ## Ratelimiting ## rc_messages_per_second: 0.2 rc_message_burst_count: 10.0 federation_rc_window_size: 1000 federation_rc_sleep_limit: 10 federation_rc_sleep_delay: 500 federation_rc_reject_limit: 50 federation_rc_concurrent: 3 ## Files ## media_store_path: "/data/media" max_upload_size: "{{ SYNAPSE_MAX_UPLOAD_SIZE or "50M" }}" max_image_pixels: "32M" dynamic_thumbnails: false # List of thumbnail to precalculate when an image is uploaded. thumbnail_sizes: - width: 32 height: 32 method: crop - width: 96 height: 96 method: crop - width: 320 height: 240 method: scale - width: 640 height: 480 method: scale - width: 800 height: 600 method: scale url_preview_enabled: False max_spider_size: "10M" ## Captcha ## {% if SYNAPSE_RECAPTCHA_PUBLIC_KEY %} recaptcha_public_key: "{{ SYNAPSE_RECAPTCHA_PUBLIC_KEY }}" recaptcha_private_key: "{{ SYNAPSE_RECAPTCHA_PRIVATE_KEY }}" enable_registration_captcha: True recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify" {% else %} recaptcha_public_key: "YOUR_PUBLIC_KEY" recaptcha_private_key: "YOUR_PRIVATE_KEY" enable_registration_captcha: False recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify" {% endif %} ## Turn ## {% if SYNAPSE_TURN_URIS %} turn_uris: {% for uri in SYNAPSE_TURN_URIS.split(',') %} - "{{ uri }}" {% endfor %} turn_shared_secret: "{{ SYNAPSE_TURN_SECRET }}" turn_user_lifetime: "1h" turn_allow_guests: True {% else %} turn_uris: [] turn_shared_secret: "YOUR_SHARED_SECRET" turn_user_lifetime: "1h" turn_allow_guests: True {% endif %} ## Registration ## enable_registration: {{ "True" if SYNAPSE_ENABLE_REGISTRATION else "False" }} registration_shared_secret: "{{ SYNAPSE_REGISTRATION_SHARED_SECRET }}" bcrypt_rounds: 12 allow_guest_access: {{ "True" if SYNAPSE_ALLOW_GUEST else "False" }} enable_group_creation: true ## Metrics ### {% if SYNAPSE_REPORT_STATS.lower() == "yes" %} enable_metrics: True report_stats: True {% else %} enable_metrics: False report_stats: False {% endif %} ## API Configuration ## {% if SYNAPSE_APPSERVICES %} app_service_config_files: {% for appservice in SYNAPSE_APPSERVICES %} - "{{ appservice }}" {% endfor %} {% endif %} macaroon_secret_key: "{{ SYNAPSE_MACAROON_SECRET_KEY }}" expire_access_token: False ## Signing Keys ## signing_key_path: "/data/{{ SYNAPSE_SERVER_NAME }}.signing.key" old_signing_keys: {} key_refresh_interval: "1d" # 1 Day. # The trusted servers to download signing keys from. trusted_key_servers: - server_name: matrix.org verify_keys: "ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw" password_config: enabled: true synapse-1.53.0/docker/conf/log.config000066400000000000000000000040661420514467300174420ustar00rootroot00000000000000version: 1 formatters: precise: {% if worker_name %} format: '%(asctime)s - worker:{{ worker_name }} - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' {% else %} format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' {% endif %} handlers: {% if LOG_FILE_PATH %} file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: {{ LOG_FILE_PATH }} when: "midnight" backupCount: 6 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. # WARNING/ERROR logs will still be flushed immediately, but there will be a # delay (of up to `period` seconds, or until the buffer is full with # `capacity` messages) before INFO/DEBUG logs get written. buffer: class: synapse.logging.handlers.PeriodicallyFlushingMemoryHandler target: file # The capacity is the maximum number of log lines that are buffered # before being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. # This parameter is required. capacity: 10 # Logs with a level at or above the flush level will cause the buffer to # be flushed immediately. # Default value: 40 (ERROR) # Other values: 50 (CRITICAL), 30 (WARNING), 20 (INFO), 10 (DEBUG) flushLevel: 30 # Flush immediately for WARNING logs and higher # The period of time, in seconds, between forced flushes. # Messages will not be delayed for longer than this time. # Default value: 5 seconds period: 5 {% endif %} console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO root: level: {{ SYNAPSE_LOG_LEVEL or "INFO" }} {% if LOG_FILE_PATH %} handlers: [console, buffer] {% else %} handlers: [console] {% endif %} disable_existing_loggers: false synapse-1.53.0/docker/configure_workers_and_start.py000077500000000000000000000515361420514467300227220ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This script reads environment variables and generates a shared Synapse worker, # nginx and supervisord configs depending on the workers requested. # # The environment variables it reads are: # * SYNAPSE_SERVER_NAME: The desired server_name of the homeserver. # * SYNAPSE_REPORT_STATS: Whether to report stats. # * SYNAPSE_WORKER_TYPES: A comma separated list of worker names as specified in WORKER_CONFIG # below. Leave empty for no workers, or set to '*' for all possible workers. # # NOTE: According to Complement's ENTRYPOINT expectations for a homeserver image (as defined # in the project's README), this script may be run multiple times, and functionality should # continue to work if so. import os import subprocess import sys import jinja2 import yaml MAIN_PROCESS_HTTP_LISTENER_PORT = 8080 WORKERS_CONFIG = { "pusher": { "app": "synapse.app.pusher", "listener_resources": [], "endpoint_patterns": [], "shared_extra_conf": {"start_pushers": False}, "worker_extra_conf": "", }, "user_dir": { "app": "synapse.app.user_dir", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(api/v1|r0|v3|unstable)/user_directory/search$" ], "shared_extra_conf": {"update_user_directory": False}, "worker_extra_conf": "", }, "media_repository": { "app": "synapse.app.media_repository", "listener_resources": ["media"], "endpoint_patterns": [ "^/_matrix/media/", "^/_synapse/admin/v1/purge_media_cache$", "^/_synapse/admin/v1/room/.*/media.*$", "^/_synapse/admin/v1/user/.*/media.*$", "^/_synapse/admin/v1/media/.*$", "^/_synapse/admin/v1/quarantine_media/.*$", ], "shared_extra_conf": {"enable_media_repo": False}, "worker_extra_conf": "enable_media_repo: true", }, "appservice": { "app": "synapse.app.appservice", "listener_resources": [], "endpoint_patterns": [], "shared_extra_conf": {"notify_appservices": False}, "worker_extra_conf": "", }, "federation_sender": { "app": "synapse.app.federation_sender", "listener_resources": [], "endpoint_patterns": [], "shared_extra_conf": {"send_federation": False}, "worker_extra_conf": "", }, "synchrotron": { "app": "synapse.app.generic_worker", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(v2_alpha|r0|v3)/sync$", "^/_matrix/client/(api/v1|v2_alpha|r0|v3)/events$", "^/_matrix/client/(api/v1|r0|v3)/initialSync$", "^/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "federation_reader": { "app": "synapse.app.generic_worker", "listener_resources": ["federation"], "endpoint_patterns": [ "^/_matrix/federation/(v1|v2)/event/", "^/_matrix/federation/(v1|v2)/state/", "^/_matrix/federation/(v1|v2)/state_ids/", "^/_matrix/federation/(v1|v2)/backfill/", "^/_matrix/federation/(v1|v2)/get_missing_events/", "^/_matrix/federation/(v1|v2)/publicRooms", "^/_matrix/federation/(v1|v2)/query/", "^/_matrix/federation/(v1|v2)/make_join/", "^/_matrix/federation/(v1|v2)/make_leave/", "^/_matrix/federation/(v1|v2)/send_join/", "^/_matrix/federation/(v1|v2)/send_leave/", "^/_matrix/federation/(v1|v2)/invite/", "^/_matrix/federation/(v1|v2)/query_auth/", "^/_matrix/federation/(v1|v2)/event_auth/", "^/_matrix/federation/(v1|v2)/exchange_third_party_invite/", "^/_matrix/federation/(v1|v2)/user/devices/", "^/_matrix/federation/(v1|v2)/get_groups_publicised$", "^/_matrix/key/v2/query", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "federation_inbound": { "app": "synapse.app.generic_worker", "listener_resources": ["federation"], "endpoint_patterns": ["/_matrix/federation/(v1|v2)/send/"], "shared_extra_conf": {}, "worker_extra_conf": "", }, "event_persister": { "app": "synapse.app.generic_worker", "listener_resources": ["replication"], "endpoint_patterns": [], "shared_extra_conf": {}, "worker_extra_conf": "", }, "background_worker": { "app": "synapse.app.generic_worker", "listener_resources": [], "endpoint_patterns": [], # This worker cannot be sharded. Therefore there should only ever be one background # worker, and it should be named background_worker1 "shared_extra_conf": {"run_background_tasks_on": "background_worker1"}, "worker_extra_conf": "", }, "event_creator": { "app": "synapse.app.generic_worker", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/redact", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/send", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick)$", "^/_matrix/client/(api/v1|r0|v3|unstable)/join/", "^/_matrix/client/(api/v1|r0|v3|unstable)/profile/", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "frontend_proxy": { "app": "synapse.app.frontend_proxy", "listener_resources": ["client", "replication"], "endpoint_patterns": ["^/_matrix/client/(api/v1|r0|v3|unstable)/keys/upload"], "shared_extra_conf": {}, "worker_extra_conf": ( "worker_main_http_uri: http://127.0.0.1:%d" % (MAIN_PROCESS_HTTP_LISTENER_PORT,) ), }, } # Templates for sections that may be inserted multiple times in config files SUPERVISORD_PROCESS_CONFIG_BLOCK = """ [program:synapse_{name}] command=/usr/local/bin/python -m {app} \ --config-path="{config_path}" \ --config-path=/conf/workers/shared.yaml \ --config-path=/conf/workers/{name}.yaml autorestart=unexpected priority=500 exitcodes=0 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 """ NGINX_LOCATION_CONFIG_BLOCK = """ location ~* {endpoint} {{ proxy_pass {upstream}; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; }} """ NGINX_UPSTREAM_CONFIG_BLOCK = """ upstream {upstream_worker_type} {{ {body} }} """ # Utility functions def log(txt: str): """Log something to the stdout. Args: txt: The text to log. """ print(txt) def error(txt: str): """Log something and exit with an error code. Args: txt: The text to log in error. """ log(txt) sys.exit(2) def convert(src: str, dst: str, **template_vars): """Generate a file from a template Args: src: Path to the input file. dst: Path to write to. template_vars: The arguments to replace placeholder variables in the template with. """ # Read the template file with open(src) as infile: template = infile.read() # Generate a string from the template. We disable autoescape to prevent template # variables from being escaped. rendered = jinja2.Template(template, autoescape=False).render(**template_vars) # Write the generated contents to a file # # We use append mode in case the files have already been written to by something else # (for instance, as part of the instructions in a dockerfile). with open(dst, "a") as outfile: # In case the existing file doesn't end with a newline outfile.write("\n") outfile.write(rendered) def add_sharding_to_shared_config( shared_config: dict, worker_type: str, worker_name: str, worker_port: int, ) -> None: """Given a dictionary representing a config file shared across all workers, append sharded worker information to it for the current worker_type instance. Args: shared_config: The config dict that all worker instances share (after being converted to YAML) worker_type: The type of worker (one of those defined in WORKERS_CONFIG). worker_name: The name of the worker instance. worker_port: The HTTP replication port that the worker instance is listening on. """ # The instance_map config field marks the workers that write to various replication streams instance_map = shared_config.setdefault("instance_map", {}) # Worker-type specific sharding config if worker_type == "pusher": shared_config.setdefault("pusher_instances", []).append(worker_name) elif worker_type == "federation_sender": shared_config.setdefault("federation_sender_instances", []).append(worker_name) elif worker_type == "event_persister": # Event persisters write to the events stream, so we need to update # the list of event stream writers shared_config.setdefault("stream_writers", {}).setdefault("events", []).append( worker_name ) # Map of stream writer instance names to host/ports combos instance_map[worker_name] = { "host": "localhost", "port": worker_port, } elif worker_type == "media_repository": # The first configured media worker will run the media background jobs shared_config.setdefault("media_instance_running_background_jobs", worker_name) def generate_base_homeserver_config(): """Starts Synapse and generates a basic homeserver config, which will later be modified for worker support. Raises: CalledProcessError if calling start.py returned a non-zero exit code. """ # start.py already does this for us, so just call that. # note that this script is copied in in the official, monolith dockerfile os.environ["SYNAPSE_HTTP_PORT"] = str(MAIN_PROCESS_HTTP_LISTENER_PORT) subprocess.check_output(["/usr/local/bin/python", "/start.py", "migrate_config"]) def generate_worker_files(environ, config_path: str, data_dir: str): """Read the desired list of workers from environment variables and generate shared homeserver, nginx and supervisord configs. Args: environ: _Environ[str] config_path: Where to output the generated Synapse main worker config file. data_dir: The location of the synapse data directory. Where log and user-facing config files live. """ # Note that yaml cares about indentation, so care should be taken to insert lines # into files at the correct indentation below. # shared_config is the contents of a Synapse config file that will be shared amongst # the main Synapse process as well as all workers. # It is intended mainly for disabling functionality when certain workers are spun up, # and adding a replication listener. # First read the original config file and extract the listeners block. Then we'll add # another listener for replication. Later we'll write out the result. listeners = [ { "port": 9093, "bind_address": "127.0.0.1", "type": "http", "resources": [{"names": ["replication"]}], } ] with open(config_path) as file_stream: original_config = yaml.safe_load(file_stream) original_listeners = original_config.get("listeners") if original_listeners: listeners += original_listeners # The shared homeserver config. The contents of which will be inserted into the # base shared worker jinja2 template. # # This config file will be passed to all workers, included Synapse's main process. shared_config = {"listeners": listeners} # The supervisord config. The contents of which will be inserted into the # base supervisord jinja2 template. # # Supervisord will be in charge of running everything, from redis to nginx to Synapse # and all of its worker processes. Load the config template, which defines a few # services that are necessary to run. supervisord_config = "" # Upstreams for load-balancing purposes. This dict takes the form of a worker type to the # ports of each worker. For example: # { # worker_type: {1234, 1235, ...}} # } # and will be used to construct 'upstream' nginx directives. nginx_upstreams = {} # A map of: {"endpoint": "upstream"}, where "upstream" is a str representing what will be # placed after the proxy_pass directive. The main benefit to representing this data as a # dict over a str is that we can easily deduplicate endpoints across multiple instances # of the same worker. # # An nginx site config that will be amended to depending on the workers that are # spun up. To be placed in /etc/nginx/conf.d. nginx_locations = {} # Read the desired worker configuration from the environment worker_types = environ.get("SYNAPSE_WORKER_TYPES") if worker_types is None: # No workers, just the main process worker_types = [] else: # Split type names by comma worker_types = worker_types.split(",") # Create the worker configuration directory if it doesn't already exist os.makedirs("/conf/workers", exist_ok=True) # Start worker ports from this arbitrary port worker_port = 18009 # A counter of worker_type -> int. Used for determining the name for a given # worker type when generating its config file, as each worker's name is just # worker_type + instance # worker_type_counter = {} # For each worker type specified by the user, create config values for worker_type in worker_types: worker_type = worker_type.strip() worker_config = WORKERS_CONFIG.get(worker_type) if worker_config: worker_config = worker_config.copy() else: log(worker_type + " is an unknown worker type! It will be ignored") continue new_worker_count = worker_type_counter.setdefault(worker_type, 0) + 1 worker_type_counter[worker_type] = new_worker_count # Name workers by their type concatenated with an incrementing number # e.g. federation_reader1 worker_name = worker_type + str(new_worker_count) worker_config.update( {"name": worker_name, "port": worker_port, "config_path": config_path} ) # Update the shared config with any worker-type specific options shared_config.update(worker_config["shared_extra_conf"]) # Check if more than one instance of this worker type has been specified worker_type_total_count = worker_types.count(worker_type) if worker_type_total_count > 1: # Update the shared config with sharding-related options if necessary add_sharding_to_shared_config( shared_config, worker_type, worker_name, worker_port ) # Enable the worker in supervisord supervisord_config += SUPERVISORD_PROCESS_CONFIG_BLOCK.format_map(worker_config) # Add nginx location blocks for this worker's endpoints (if any are defined) for pattern in worker_config["endpoint_patterns"]: # Determine whether we need to load-balance this worker if worker_type_total_count > 1: # Create or add to a load-balanced upstream for this worker nginx_upstreams.setdefault(worker_type, set()).add(worker_port) # Upstreams are named after the worker_type upstream = "http://" + worker_type else: upstream = "http://localhost:%d" % (worker_port,) # Note that this endpoint should proxy to this upstream nginx_locations[pattern] = upstream # Write out the worker's logging config file # Check whether we should write worker logs to disk, in addition to the console extra_log_template_args = {} if environ.get("SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK"): extra_log_template_args["LOG_FILE_PATH"] = "{dir}/logs/{name}.log".format( dir=data_dir, name=worker_name ) # Render and write the file log_config_filepath = "/conf/workers/{name}.log.config".format(name=worker_name) convert( "/conf/log.config", log_config_filepath, worker_name=worker_name, **extra_log_template_args, ) # Then a worker config file convert( "/conf/worker.yaml.j2", "/conf/workers/{name}.yaml".format(name=worker_name), **worker_config, worker_log_config_filepath=log_config_filepath, ) worker_port += 1 # Build the nginx location config blocks nginx_location_config = "" for endpoint, upstream in nginx_locations.items(): nginx_location_config += NGINX_LOCATION_CONFIG_BLOCK.format( endpoint=endpoint, upstream=upstream, ) # Determine the load-balancing upstreams to configure nginx_upstream_config = "" # At the same time, prepare a list of internal endpoints to healthcheck # starting with the main process which exists even if no workers do. healthcheck_urls = ["http://localhost:8080/health"] for upstream_worker_type, upstream_worker_ports in nginx_upstreams.items(): body = "" for port in upstream_worker_ports: body += " server localhost:%d;\n" % (port,) healthcheck_urls.append("http://localhost:%d/health" % (port,)) # Add to the list of configured upstreams nginx_upstream_config += NGINX_UPSTREAM_CONFIG_BLOCK.format( upstream_worker_type=upstream_worker_type, body=body, ) # Finally, we'll write out the config files. # Shared homeserver config convert( "/conf/shared.yaml.j2", "/conf/workers/shared.yaml", shared_worker_config=yaml.dump(shared_config), ) # Nginx config convert( "/conf/nginx.conf.j2", "/etc/nginx/conf.d/matrix-synapse.conf", worker_locations=nginx_location_config, upstream_directives=nginx_upstream_config, ) # Supervisord config convert( "/conf/supervisord.conf.j2", "/etc/supervisor/conf.d/supervisord.conf", main_config_path=config_path, worker_config=supervisord_config, ) # healthcheck config convert( "/conf/healthcheck.sh.j2", "/healthcheck.sh", healthcheck_urls=healthcheck_urls, ) # Ensure the logging directory exists log_dir = data_dir + "/logs" if not os.path.exists(log_dir): os.mkdir(log_dir) def start_supervisord(): """Starts up supervisord which then starts and monitors all other necessary processes Raises: CalledProcessError if calling start.py return a non-zero exit code. """ subprocess.run(["/usr/bin/supervisord"], stdin=subprocess.PIPE) def main(args, environ): config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get("SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml") data_dir = environ.get("SYNAPSE_DATA_DIR", "/data") # override SYNAPSE_NO_TLS, we don't support TLS in worker mode, # this needs to be handled by a frontend proxy environ["SYNAPSE_NO_TLS"] = "yes" # Generate the base homeserver config if one does not yet exist if not os.path.exists(config_path): log("Generating base homeserver config") generate_base_homeserver_config() # This script may be run multiple times (mostly by Complement, see note at top of file). # Don't re-configure workers in this instance. mark_filepath = "/conf/workers_have_been_configured" if not os.path.exists(mark_filepath): # Always regenerate all other config files generate_worker_files(environ, config_path, data_dir) # Mark workers as being configured with open(mark_filepath, "w") as f: f.write("") # Start supervisord, which will start Synapse, all of the configured worker # processes, redis, nginx etc. according to the config we created above. start_supervisord() if __name__ == "__main__": main(sys.argv, os.environ) synapse-1.53.0/docker/run_pg_tests.sh000077500000000000000000000011501420514467300176070ustar00rootroot00000000000000#!/usr/bin/env bash # This script runs the PostgreSQL tests inside a Docker container. It expects # the relevant source files to be mounted into /src (done automatically by the # caller script). It will set up the database, run it, and then use the tox # configuration to run the tests. set -e # Set PGUSER so Synapse's tests know what user to connect to the database with export PGUSER=postgres # Start the database sudo -u postgres /usr/lib/postgresql/10/bin/pg_ctl -w -D /var/lib/postgresql/data start # Run the tests cd /src export TRIAL_FLAGS="-j 4" tox --workdir=./.tox-pg-container -e py37-postgres "$@" synapse-1.53.0/docker/start.py000077500000000000000000000214541420514467300162570ustar00rootroot00000000000000#!/usr/local/bin/python import codecs import glob import os import platform import subprocess import sys import jinja2 # Utility functions def log(txt): print(txt, file=sys.stderr) def error(txt): log(txt) sys.exit(2) def convert(src, dst, environ): """Generate a file from a template Args: src (str): path to input file dst (str): path to file to write environ (dict): environment dictionary, for replacement mappings. """ with open(src) as infile: template = infile.read() rendered = jinja2.Template(template).render(**environ) with open(dst, "w") as outfile: outfile.write(rendered) def generate_config_from_template(config_dir, config_path, environ, ownership): """Generate a homeserver.yaml from environment variables Args: config_dir (str): where to put generated config files config_path (str): where to put the main config file environ (dict): environment dictionary ownership (str|None): ":" string which will be used to set ownership of the generated configs. If None, ownership will not change. """ for v in ("SYNAPSE_SERVER_NAME", "SYNAPSE_REPORT_STATS"): if v not in environ: error( "Environment variable '%s' is mandatory when generating a config file." % (v,) ) # populate some params from data files (if they exist, else create new ones) environ = environ.copy() secrets = { "registration": "SYNAPSE_REGISTRATION_SHARED_SECRET", "macaroon": "SYNAPSE_MACAROON_SECRET_KEY", } for name, secret in secrets.items(): if secret not in environ: filename = "/data/%s.%s.key" % (environ["SYNAPSE_SERVER_NAME"], name) # if the file already exists, load in the existing value; otherwise, # generate a new secret and write it to a file if os.path.exists(filename): log("Reading %s from %s" % (secret, filename)) with open(filename) as handle: value = handle.read() else: log("Generating a random secret for {}".format(secret)) value = codecs.encode(os.urandom(32), "hex").decode() with open(filename, "w") as handle: handle.write(value) environ[secret] = value environ["SYNAPSE_APPSERVICES"] = glob.glob("/data/appservices/*.yaml") if not os.path.exists(config_dir): os.mkdir(config_dir) # Convert SYNAPSE_NO_TLS to boolean if exists if "SYNAPSE_NO_TLS" in environ: tlsanswerstring = str.lower(environ["SYNAPSE_NO_TLS"]) if tlsanswerstring in ("true", "on", "1", "yes"): environ["SYNAPSE_NO_TLS"] = True else: if tlsanswerstring in ("false", "off", "0", "no"): environ["SYNAPSE_NO_TLS"] = False else: error( 'Environment variable "SYNAPSE_NO_TLS" found but value "' + tlsanswerstring + '" unrecognized; exiting.' ) if "SYNAPSE_LOG_CONFIG" not in environ: environ["SYNAPSE_LOG_CONFIG"] = config_dir + "/log.config" log("Generating synapse config file " + config_path) convert("/conf/homeserver.yaml", config_path, environ) log_config_file = environ["SYNAPSE_LOG_CONFIG"] log("Generating log config file " + log_config_file) convert("/conf/log.config", log_config_file, environ) # Hopefully we already have a signing key, but generate one if not. args = [ "python", "-m", "synapse.app.homeserver", "--config-path", config_path, # tell synapse to put generated keys in /data rather than /compiled "--keys-directory", config_dir, "--generate-keys", ] if ownership is not None: log(f"Setting ownership on /data to {ownership}") subprocess.check_output(["chown", "-R", ownership, "/data"]) args = ["gosu", ownership] + args subprocess.check_output(args) def run_generate_config(environ, ownership): """Run synapse with a --generate-config param to generate a template config file Args: environ (dict): env var dict ownership (str|None): "userid:groupid" arg for chmod. If None, ownership will not change. Never returns. """ for v in ("SYNAPSE_SERVER_NAME", "SYNAPSE_REPORT_STATS"): if v not in environ: error("Environment variable '%s' is mandatory in `generate` mode." % (v,)) server_name = environ["SYNAPSE_SERVER_NAME"] config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get("SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml") data_dir = environ.get("SYNAPSE_DATA_DIR", "/data") if ownership is not None: # make sure that synapse has perms to write to the data dir. log(f"Setting ownership on {data_dir} to {ownership}") subprocess.check_output(["chown", ownership, data_dir]) # create a suitable log config from our template log_config_file = "%s/%s.log.config" % (config_dir, server_name) if not os.path.exists(log_config_file): log("Creating log config %s" % (log_config_file,)) convert("/conf/log.config", log_config_file, environ) # generate the main config file, and a signing key. args = [ "python", "-m", "synapse.app.homeserver", "--server-name", server_name, "--report-stats", environ["SYNAPSE_REPORT_STATS"], "--config-path", config_path, "--config-directory", config_dir, "--data-directory", data_dir, "--generate-config", "--open-private-ports", ] # log("running %s" % (args, )) os.execv("/usr/local/bin/python", args) def main(args, environ): mode = args[1] if len(args) > 1 else "run" # if we were given an explicit user to switch to, do so ownership = None if "UID" in environ: desired_uid = int(environ["UID"]) desired_gid = int(environ.get("GID", "991")) ownership = f"{desired_uid}:{desired_gid}" elif os.getuid() == 0: # otherwise, if we are running as root, use user 991 ownership = "991:991" synapse_worker = environ.get("SYNAPSE_WORKER", "synapse.app.homeserver") # In generate mode, generate a configuration and missing keys, then exit if mode == "generate": return run_generate_config(environ, ownership) if mode == "migrate_config": # generate a config based on environment vars. config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get( "SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" ) return generate_config_from_template( config_dir, config_path, environ, ownership ) if mode != "run": error("Unknown execution mode '%s'" % (mode,)) args = args[2:] if "-m" not in args: args = ["-m", synapse_worker] + args jemallocpath = "/usr/lib/%s-linux-gnu/libjemalloc.so.2" % (platform.machine(),) if os.path.isfile(jemallocpath): environ["LD_PRELOAD"] = jemallocpath else: log("Could not find %s, will not use" % (jemallocpath,)) # if there are no config files passed to synapse, try adding the default file if not any(p.startswith("--config-path") or p.startswith("-c") for p in args): config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get( "SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" ) if not os.path.exists(config_path): if "SYNAPSE_SERVER_NAME" in environ: error( """\ Config file '%s' does not exist. The synapse docker image no longer supports generating a config file on-the-fly based on environment variables. You can migrate to a static config file by running with 'migrate_config'. See the README for more details. """ % (config_path,) ) error( "Config file '%s' does not exist. You should either create a new " "config file by running with the `generate` argument (and then edit " "the resulting file before restarting) or specify the path to an " "existing config file with the SYNAPSE_CONFIG_PATH variable." % (config_path,) ) args += ["--config-path", config_path] log("Starting synapse with args " + " ".join(args)) args = ["python"] + args if ownership is not None: args = ["gosu", ownership] + args os.execve("/usr/sbin/gosu", args, environ) else: os.execve("/usr/local/bin/python", args, environ) if __name__ == "__main__": main(sys.argv, os.environ) synapse-1.53.0/docs/000077500000000000000000000000001420514467300142205ustar00rootroot00000000000000synapse-1.53.0/docs/.sample_config_header.yaml000066400000000000000000000021061420514467300212770ustar00rootroot00000000000000# This file is maintained as an up-to-date snapshot of the default # homeserver.yaml configuration generated by Synapse. # # It is intended to act as a reference for the default configuration, # helping admins keep track of new options and other changes, and compare # their configs with the current default. As such, many of the actual # config values shown are placeholders. # # It is *not* intended to be copied and used as the basis for a real # homeserver.yaml. Instead, if you are starting from scratch, please generate # a fresh config using Synapse by following the instructions in # https://matrix-org.github.io/synapse/latest/setup/installation.html. # Configuration options that take a time period can be set using a number # followed by a letter. Letters have the following meanings: # s = second # m = minute # h = hour # d = day # w = week # y = year # For example, setting redaction_retention_period: 5m would remove redacted # messages from the database after 5 minutes, rather than 5 months. ################################################################################ synapse-1.53.0/docs/CAPTCHA_SETUP.md000066400000000000000000000032431420514467300165670ustar00rootroot00000000000000# Overview A captcha can be enabled on your homeserver to help prevent bots from registering accounts. Synapse currently uses Google's reCAPTCHA service which requires API keys from Google. ## Getting API keys 1. Create a new site at 1. Set the label to anything you want 1. Set the type to reCAPTCHA v2 using the "I'm not a robot" Checkbox option. This is the only type of captcha that works with Synapse. 1. Add the public hostname for your server, as set in `public_baseurl` in `homeserver.yaml`, to the list of authorized domains. If you have not set `public_baseurl`, use `server_name`. 1. Agree to the terms of service and submit. 1. Copy your site key and secret key and add them to your `homeserver.yaml` configuration file ```yaml recaptcha_public_key: YOUR_SITE_KEY recaptcha_private_key: YOUR_SECRET_KEY ``` 1. Enable the CAPTCHA for new registrations ```yaml enable_registration_captcha: true ``` 1. Go to the settings page for the CAPTCHA you just created 1. Uncheck the "Verify the origin of reCAPTCHA solutions" checkbox so that the captcha can be displayed in any client. If you do not disable this option then you must specify the domains of every client that is allowed to display the CAPTCHA. ## Configuring IP used for auth The reCAPTCHA API requires that the IP address of the user who solved the CAPTCHA is sent. If the client is connecting through a proxy or load balancer, it may be required to use the `X-Forwarded-For` (XFF) header instead of the origin IP address. This can be configured using the `x_forwarded` directive in the listeners section of the `homeserver.yaml` configuration file. synapse-1.53.0/docs/README.md000066400000000000000000000060401420514467300154770ustar00rootroot00000000000000# Synapse Documentation **The documentation is currently hosted [here](https://matrix-org.github.io/synapse).** Please update any links to point to the new website instead. ## About This directory currently holds a series of markdown files documenting how to install, use and develop Synapse. The documentation is readable directly from this repository, but it is recommended to instead browse through the [website](https://matrix-org.github.io/synapse) for easier discoverability. ## Adding to the documentation Most of the documentation currently exists as top-level files, as when organising them into a structured website, these files were kept in place so that existing links would not break. The rest of the documentation is stored in folders, such as `setup`, `usage`, and `development` etc. **All new documentation files should be placed in structured folders.** For example: To create a new user-facing documentation page about a new Single Sign-On protocol named "MyCoolProtocol", one should create a new file with a relevant name, such as "my_cool_protocol.md". This file might fit into the documentation structure at: - Usage - Configuration - User Authentication - Single Sign-On - **My Cool Protocol** Given that, one would place the new file under `usage/configuration/user_authentication/single_sign_on/my_cool_protocol.md`. Note that the structure of the documentation (and thus the left sidebar on the website) is determined by the list in [SUMMARY.md](SUMMARY.md). The final thing to do when adding a new page is to add a new line linking to the new documentation file: ```markdown - [My Cool Protocol](usage/configuration/user_authentication/single_sign_on/my_cool_protocol.md) ``` ## Building the documentation The documentation is built with [mdbook](https://rust-lang.github.io/mdBook/), and the outline of the documentation is determined by the structure of [SUMMARY.md](SUMMARY.md). First, [get mdbook](https://github.com/rust-lang/mdBook#installation). Then, **from the root of the repository**, build the documentation with: ```sh mdbook build ``` The rendered contents will be outputted to a new `book/` directory at the root of the repository. Please note that index.html is not built by default, it is created by copying over the file `welcome_and_overview.html` to `index.html` during deployment. Thus, when running `mdbook serve` locally the book will initially show a 404 in place of the index due to the above. Do not be alarmed! You can also have mdbook host the docs on a local webserver with hot-reload functionality via: ```sh mdbook serve ``` The URL at which the docs can be viewed at will be logged. ## Configuration and theming The look and behaviour of the website is configured by the [book.toml](../book.toml) file at the root of the repository. See [mdbook's documentation on configuration](https://rust-lang.github.io/mdBook/format/config.html) for available options. The site can be themed and additionally extended with extra UI and features. See [website_files/README.md](website_files/README.md) for details. synapse-1.53.0/docs/SUMMARY.md000066400000000000000000000121011420514467300156720ustar00rootroot00000000000000# Summary # Introduction - [Welcome and Overview](welcome_and_overview.md) # Setup - [Installation](setup/installation.md) - [Using Postgres](postgres.md) - [Configuring a Reverse Proxy](reverse_proxy.md) - [Configuring a Forward/Outbound Proxy](setup/forward_proxy.md) - [Configuring a Turn Server](turn-howto.md) - [Delegation](delegate.md) # Upgrading - [Upgrading between Synapse Versions](upgrade.md) # Usage - [Federation](federate.md) - [Configuration](usage/configuration/README.md) - [Homeserver Sample Config File](usage/configuration/homeserver_sample_config.md) - [Logging Sample Config File](usage/configuration/logging_sample_config.md) - [Structured Logging](structured_logging.md) - [Templates](templates.md) - [User Authentication](usage/configuration/user_authentication/README.md) - [Single-Sign On](usage/configuration/user_authentication/single_sign_on/README.md) - [OpenID Connect](openid.md) - [SAML](usage/configuration/user_authentication/single_sign_on/saml.md) - [CAS](usage/configuration/user_authentication/single_sign_on/cas.md) - [SSO Mapping Providers](sso_mapping_providers.md) - [Password Auth Providers](password_auth_providers.md) - [JSON Web Tokens](jwt.md) - [Refresh Tokens](usage/configuration/user_authentication/refresh_tokens.md) - [Registration Captcha](CAPTCHA_SETUP.md) - [Application Services](application_services.md) - [Server Notices](server_notices.md) - [Consent Tracking](consent_tracking.md) - [URL Previews](development/url_previews.md) - [User Directory](user_directory.md) - [Message Retention Policies](message_retention_policies.md) - [Pluggable Modules](modules/index.md) - [Writing a module](modules/writing_a_module.md) - [Spam checker callbacks](modules/spam_checker_callbacks.md) - [Third-party rules callbacks](modules/third_party_rules_callbacks.md) - [Presence router callbacks](modules/presence_router_callbacks.md) - [Account validity callbacks](modules/account_validity_callbacks.md) - [Password auth provider callbacks](modules/password_auth_provider_callbacks.md) - [Background update controller callbacks](modules/background_update_controller_callbacks.md) - [Porting a legacy module to the new interface](modules/porting_legacy_module.md) - [Workers](workers.md) - [Using `synctl` with Workers](synctl_workers.md) - [Systemd](systemd-with-workers/README.md) - [Administration](usage/administration/README.md) - [Admin API](usage/administration/admin_api/README.md) - [Account Validity](admin_api/account_validity.md) - [Background Updates](usage/administration/admin_api/background_updates.md) - [Delete Group](admin_api/delete_group.md) - [Event Reports](admin_api/event_reports.md) - [Media](admin_api/media_admin_api.md) - [Purge History](admin_api/purge_history_api.md) - [Register Users](admin_api/register_api.md) - [Registration Tokens](usage/administration/admin_api/registration_tokens.md) - [Manipulate Room Membership](admin_api/room_membership.md) - [Rooms](admin_api/rooms.md) - [Server Notices](admin_api/server_notices.md) - [Statistics](admin_api/statistics.md) - [Users](admin_api/user_admin_api.md) - [Server Version](admin_api/version_api.md) - [Federation](usage/administration/admin_api/federation.md) - [Manhole](manhole.md) - [Monitoring](metrics-howto.md) - [Understanding Synapse Through Grafana Graphs](usage/administration/understanding_synapse_through_grafana_graphs.md) - [Useful SQL for Admins](usage/administration/useful_sql_for_admins.md) - [Database Maintenance Tools](usage/administration/database_maintenance_tools.md) - [State Groups](usage/administration/state_groups.md) - [Request log format](usage/administration/request_log.md) - [Admin FAQ](usage/administration/admin_faq.md) - [Scripts]() # Development - [Contributing Guide](development/contributing_guide.md) - [Code Style](code_style.md) - [Release Cycle](development/releases.md) - [Git Usage](development/git.md) - [Testing]() - [OpenTracing](opentracing.md) - [Database Schemas](development/database_schema.md) - [Experimental features](development/experimental_features.md) - [Synapse Architecture]() - [Log Contexts](log_contexts.md) - [Replication](replication.md) - [TCP Replication](tcp_replication.md) - [Internal Documentation](development/internal_documentation/README.md) - [Single Sign-On]() - [SAML](development/saml.md) - [CAS](development/cas.md) - [Room DAG concepts](development/room-dag-concepts.md) - [State Resolution]() - [The Auth Chain Difference Algorithm](auth_chain_difference_algorithm.md) - [Media Repository](media_repository.md) - [Room and User Statistics](room_and_user_statistics.md) - [Scripts]() # Other - [Dependency Deprecation Policy](deprecation_policy.md) - [Running Synapse on a Single-Board Computer](other/running_synapse_on_single_board_computers.md) synapse-1.53.0/docs/admin_api/000077500000000000000000000000001420514467300161415ustar00rootroot00000000000000synapse-1.53.0/docs/admin_api/README.rst000066400000000000000000000012311420514467300176250ustar00rootroot00000000000000Admin APIs ========== **Note**: The latest documentation can be viewed `here `_. See `docs/README.md <../README.md>`_ for more information. **Please update links to point to the website instead.** Existing files in this directory are preserved to maintain historical links, but may be moved in the future. This directory includes documentation for the various synapse specific admin APIs available. Updates to the existing Admin API documentation should still be made to these files, but any new documentation files should instead be placed under `docs/usage/administration/admin_api <../usage/administration/admin_api>`_. synapse-1.53.0/docs/admin_api/account_validity.md000066400000000000000000000022001420514467300220160ustar00rootroot00000000000000# Account validity API This API allows a server administrator to manage the validity of an account. To use it, you must enable the account validity feature (under `account_validity`) in Synapse's configuration. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). ## Renew account This API extends the validity of an account by as much time as configured in the `period` parameter from the `account_validity` configuration. The API is: ``` POST /_synapse/admin/v1/account_validity/validity ``` with the following body: ```json { "user_id": "", "expiration_ts": 0, "enable_renewal_emails": true } ``` `expiration_ts` is an optional parameter and overrides the expiration date, which otherwise defaults to now + validity period. `enable_renewal_emails` is also an optional parameter and enables/disables sending renewal emails to the user. Defaults to true. The API returns with the new expiration date for this account, as a timestamp in milliseconds since epoch: ```json { "expiration_ts": 0 } ``` synapse-1.53.0/docs/admin_api/delete_group.md000066400000000000000000000006251420514467300211440ustar00rootroot00000000000000# Delete a local group This API lets a server admin delete a local group. Doing so will kick all users out of the group so that their clients will correctly handle the group being deleted. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). The API is: ``` POST /_synapse/admin/v1/delete_group/ ``` synapse-1.53.0/docs/admin_api/event_reports.md000066400000000000000000000143641420514467300213720ustar00rootroot00000000000000# Show reported events This API returns information about reported events. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). The api is: ``` GET /_synapse/admin/v1/event_reports?from=0&limit=10 ``` It returns a JSON body like the following: ```json { "event_reports": [ { "event_id": "$bNUFCwGzWca1meCGkjp-zwslF-GfVcXukvRLI1_FaVY", "id": 2, "reason": "foo", "score": -100, "received_ts": 1570897107409, "canonical_alias": "#alias1:matrix.org", "room_id": "!ERAgBpSOcCCuTJqQPk:matrix.org", "name": "Matrix HQ", "sender": "@foobar:matrix.org", "user_id": "@foo:matrix.org" }, { "event_id": "$3IcdZsDaN_En-S1DF4EMCy3v4gNRKeOJs8W5qTOKj4I", "id": 3, "reason": "bar", "score": -100, "received_ts": 1598889612059, "canonical_alias": "#alias2:matrix.org", "room_id": "!eGvUQuTCkHGVwNMOjv:matrix.org", "name": "Your room name here", "sender": "@foobar:matrix.org", "user_id": "@bar:matrix.org" } ], "next_token": 2, "total": 4 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more reports to paginate through. **URL parameters:** * `limit`: integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. * `from`: integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. * `dir`: string - Direction of event report order. Whether to fetch the most recent first (`b`) or the oldest first (`f`). Defaults to `b`. * `user_id`: string - Is optional and filters to only return users with user IDs that contain this value. This is the user who reported the event and wrote the reason. * `room_id`: string - Is optional and filters to only return rooms with room IDs that contain this value. **Response** The following fields are returned in the JSON response body: * `id`: integer - ID of event report. * `received_ts`: integer - The timestamp (in milliseconds since the unix epoch) when this report was sent. * `room_id`: string - The ID of the room in which the event being reported is located. * `name`: string - The name of the room. * `event_id`: string - The ID of the reported event. * `user_id`: string - This is the user who reported the event and wrote the reason. * `reason`: string - Comment made by the `user_id` in this report. May be blank or `null`. * `score`: integer - Content is reported based upon a negative score, where -100 is "most offensive" and 0 is "inoffensive". May be `null`. * `sender`: string - This is the ID of the user who sent the original message/event that was reported. * `canonical_alias`: string - The canonical alias of the room. `null` if the room does not have a canonical alias set. * `next_token`: integer - Indication for pagination. See above. * `total`: integer - Total number of event reports related to the query (`user_id` and `room_id`). # Show details of a specific event report This API returns information about a specific event report. The api is: ``` GET /_synapse/admin/v1/event_reports/ ``` It returns a JSON body like the following: ```json { "event_id": "$bNUFCwGzWca1meCGkjp-zwslF-GfVcXukvRLI1_FaVY", "event_json": { "auth_events": [ "$YK4arsKKcc0LRoe700pS8DSjOvUT4NDv0HfInlMFw2M", "$oggsNXxzPFRE3y53SUNd7nsj69-QzKv03a1RucHu-ws" ], "content": { "body": "matrix.org: This Week in Matrix", "format": "org.matrix.custom.html", "formatted_body": "matrix.org:
This Week in Matrix", "msgtype": "m.notice" }, "depth": 546, "hashes": { "sha256": "xK1//xnmvHJIOvbgXlkI8eEqdvoMmihVDJ9J4SNlsAw" }, "origin": "matrix.org", "origin_server_ts": 1592291711430, "prev_events": [ "$YK4arsKKcc0LRoe700pS8DSjOvUT4NDv0HfInlMFw2M" ], "prev_state": [], "room_id": "!ERAgBpSOcCCuTJqQPk:matrix.org", "sender": "@foobar:matrix.org", "signatures": { "matrix.org": { "ed25519:a_JaEG": "cs+OUKW/iHx5pEidbWxh0UiNNHwe46Ai9LwNz+Ah16aWDNszVIe2gaAcVZfvNsBhakQTew51tlKmL2kspXk/Dg" } }, "type": "m.room.message", "unsigned": { "age_ts": 1592291711430 } }, "id": , "reason": "foo", "score": -100, "received_ts": 1570897107409, "canonical_alias": "#alias1:matrix.org", "room_id": "!ERAgBpSOcCCuTJqQPk:matrix.org", "name": "Matrix HQ", "sender": "@foobar:matrix.org", "user_id": "@foo:matrix.org" } ``` **URL parameters:** * `report_id`: string - The ID of the event report. **Response** The following fields are returned in the JSON response body: * `id`: integer - ID of event report. * `received_ts`: integer - The timestamp (in milliseconds since the unix epoch) when this report was sent. * `room_id`: string - The ID of the room in which the event being reported is located. * `name`: string - The name of the room. * `event_id`: string - The ID of the reported event. * `user_id`: string - This is the user who reported the event and wrote the reason. * `reason`: string - Comment made by the `user_id` in this report. May be blank. * `score`: integer - Content is reported based upon a negative score, where -100 is "most offensive" and 0 is "inoffensive". * `sender`: string - This is the ID of the user who sent the original message/event that was reported. * `canonical_alias`: string - The canonical alias of the room. `null` if the room does not have a canonical alias set. * `event_json`: object - Details of the original event that was reported. synapse-1.53.0/docs/admin_api/media_admin_api.md000066400000000000000000000154401420514467300215470ustar00rootroot00000000000000# Querying media These APIs allow extracting media information from the homeserver. Details about the format of the `media_id` and storage of the media in the file system are documented under [media repository](../media_repository.md). To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). ## List all media in a room This API gets a list of known media in a room. However, it only shows media from unencrypted events or rooms. The API is: ``` GET /_synapse/admin/v1/room//media ``` The API returns a JSON body like the following: ```json { "local": [ "mxc://localhost/xwvutsrqponmlkjihgfedcba", "mxc://localhost/abcdefghijklmnopqrstuvwx" ], "remote": [ "mxc://matrix.org/xwvutsrqponmlkjihgfedcba", "mxc://matrix.org/abcdefghijklmnopqrstuvwx" ] } ``` ## List all media uploaded by a user Listing all media that has been uploaded by a local user can be achieved through the use of the [List media uploaded by a user](user_admin_api.md#list-media-uploaded-by-a-user) Admin API. # Quarantine media Quarantining media means that it is marked as inaccessible by users. It applies to any local media, and any locally-cached copies of remote media. The media file itself (and any thumbnails) is not deleted from the server. ## Quarantining media by ID This API quarantines a single piece of local or remote media. Request: ``` POST /_synapse/admin/v1/media/quarantine// {} ``` Where `server_name` is in the form of `example.org`, and `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` ## Remove media from quarantine by ID This API removes a single piece of local or remote media from quarantine. Request: ``` POST /_synapse/admin/v1/media/unquarantine// {} ``` Where `server_name` is in the form of `example.org`, and `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` ## Quarantining media in a room This API quarantines all local and remote media in a room. Request: ``` POST /_synapse/admin/v1/room//media/quarantine {} ``` Where `room_id` is in the form of `!roomid12345:example.org`. Response: ```json { "num_quarantined": 10 } ``` The following fields are returned in the JSON response body: * `num_quarantined`: integer - The number of media items successfully quarantined Note that there is a legacy endpoint, `POST /_synapse/admin/v1/quarantine_media/`, that operates the same. However, it is deprecated and may be removed in a future release. ## Quarantining all media of a user This API quarantines all *local* media that a *local* user has uploaded. That is to say, if you would like to quarantine media uploaded by a user on a remote homeserver, you should instead use one of the other APIs. Request: ``` POST /_synapse/admin/v1/user//media/quarantine {} ``` URL Parameters * `user_id`: string - User ID in the form of `@bob:example.org` Response: ```json { "num_quarantined": 10 } ``` The following fields are returned in the JSON response body: * `num_quarantined`: integer - The number of media items successfully quarantined ## Protecting media from being quarantined This API protects a single piece of local media from being quarantined using the above APIs. This is useful for sticker packs and other shared media which you do not want to get quarantined, especially when [quarantining media in a room](#quarantining-media-in-a-room). Request: ``` POST /_synapse/admin/v1/media/protect/ {} ``` Where `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` ## Unprotecting media from being quarantined This API reverts the protection of a media. Request: ``` POST /_synapse/admin/v1/media/unprotect/ {} ``` Where `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` # Delete local media This API deletes the *local* media from the disk of your own server. This includes any local thumbnails and copies of media downloaded from remote homeservers. This API will not affect media that has been uploaded to external media repositories (e.g https://github.com/turt2live/matrix-media-repo/). See also [Purge Remote Media API](#purge-remote-media-api). ## Delete a specific local media Delete a specific `media_id`. Request: ``` DELETE /_synapse/admin/v1/media// {} ``` URL Parameters * `server_name`: string - The name of your local server (e.g `matrix.org`) * `media_id`: string - The ID of the media (e.g `abcdefghijklmnopqrstuvwx`) Response: ```json { "deleted_media": [ "abcdefghijklmnopqrstuvwx" ], "total": 1 } ``` The following fields are returned in the JSON response body: * `deleted_media`: an array of strings - List of deleted `media_id` * `total`: integer - Total number of deleted `media_id` ## Delete local media by date or size Request: ``` POST /_synapse/admin/v1/media//delete?before_ts= {} ``` URL Parameters * `server_name`: string - The name of your local server (e.g `matrix.org`). * `before_ts`: string representing a positive integer - Unix timestamp in milliseconds. Files that were last used before this timestamp will be deleted. It is the timestamp of last access, not the timestamp when the file was created. * `size_gt`: Optional - string representing a positive integer - Size of the media in bytes. Files that are larger will be deleted. Defaults to `0`. * `keep_profiles`: Optional - string representing a boolean - Switch to also delete files that are still used in image data (e.g user profile, room avatar). If `false` these files will be deleted. Defaults to `true`. Response: ```json { "deleted_media": [ "abcdefghijklmnopqrstuvwx", "abcdefghijklmnopqrstuvwz" ], "total": 2 } ``` The following fields are returned in the JSON response body: * `deleted_media`: an array of strings - List of deleted `media_id` * `total`: integer - Total number of deleted `media_id` ## Delete media uploaded by a user You can find details of how to delete multiple media uploaded by a user in [User Admin API](user_admin_api.md#delete-media-uploaded-by-a-user). # Purge Remote Media API The purge remote media API allows server admins to purge old cached remote media. The API is: ``` POST /_synapse/admin/v1/purge_media_cache?before_ts= {} ``` URL Parameters * `unix_timestamp_in_ms`: string representing a positive integer - Unix timestamp in milliseconds. All cached media that was last accessed before this timestamp will be removed. Response: ```json { "deleted": 10 } ``` The following fields are returned in the JSON response body: * `deleted`: integer - The number of media items successfully deleted If the user re-requests purged remote media, synapse will re-request the media from the originating server. synapse-1.53.0/docs/admin_api/purge_history_api.md000066400000000000000000000042061420514467300222210ustar00rootroot00000000000000# Purge History API The purge history API allows server admins to purge historic events from their database, reclaiming disk space. Depending on the amount of history being purged a call to the API may take several minutes or longer. During this period users will not be able to paginate further back in the room from the point being purged from. Note that Synapse requires at least one message in each room, so it will never delete the last message in a room. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). The API is: ``` POST /_synapse/admin/v1/purge_history/[/] ``` By default, events sent by local users are not deleted, as they may represent the only copies of this content in existence. (Events sent by remote users are deleted.) Room state data (such as joins, leaves, topic) is always preserved. To delete local message events as well, set `delete_local_events` in the body: ```json { "delete_local_events": true } ``` The caller must specify the point in the room to purge up to. This can be specified by including an event_id in the URI, or by setting a `purge_up_to_event_id` or `purge_up_to_ts` in the request body. If an event id is given, that event (and others at the same graph depth) will be retained. If `purge_up_to_ts` is given, it should be a timestamp since the unix epoch, in milliseconds. The API starts the purge running, and returns immediately with a JSON body with a purge id: ```json { "purge_id": "" } ``` ## Purge status query It is possible to poll for updates on recent purges with a second API; ``` GET /_synapse/admin/v1/purge_history_status/ ``` This API returns a JSON body like the following: ```json { "status": "active" } ``` The status will be one of `active`, `complete`, or `failed`. If `status` is `failed` there will be a string `error` with the error message. ## Reclaim disk space (Postgres) To reclaim the disk space and return it to the operating system, you need to run `VACUUM FULL;` on the database. synapse-1.53.0/docs/admin_api/register_api.md000066400000000000000000000040111420514467300211340ustar00rootroot00000000000000# Shared-Secret Registration This API allows for the creation of users in an administrative and non-interactive way. This is generally used for bootstrapping a Synapse instance with administrator accounts. To authenticate yourself to the server, you will need both the shared secret (`registration_shared_secret` in the homeserver configuration), and a one-time nonce. If the registration shared secret is not configured, this API is not enabled. To fetch the nonce, you need to request one from the API: ``` > GET /_synapse/admin/v1/register < {"nonce": "thisisanonce"} ``` Once you have the nonce, you can make a `POST` to the same URL with a JSON body containing the nonce, username, password, whether they are an admin (optional, False by default), and a HMAC digest of the content. Also you can set the displayname (optional, `username` by default). As an example: ``` > POST /_synapse/admin/v1/register > { "nonce": "thisisanonce", "username": "pepper_roni", "displayname": "Pepper Roni", "password": "pizza", "admin": true, "mac": "mac_digest_here" } < { "access_token": "token_here", "user_id": "@pepper_roni:localhost", "home_server": "test", "device_id": "device_id_here" } ``` The MAC is the hex digest output of the HMAC-SHA1 algorithm, with the key being the shared secret and the content being the nonce, user, password, either the string "admin" or "notadmin", and optionally the user_type each separated by NULs. For an example of generation in Python: ```python import hmac, hashlib def generate_mac(nonce, user, password, admin=False, user_type=None): mac = hmac.new( key=shared_secret, digestmod=hashlib.sha1, ) mac.update(nonce.encode('utf8')) mac.update(b"\x00") mac.update(user.encode('utf8')) mac.update(b"\x00") mac.update(password.encode('utf8')) mac.update(b"\x00") mac.update(b"admin" if admin else b"notadmin") if user_type: mac.update(b"\x00") mac.update(user_type.encode('utf8')) return mac.hexdigest() ```synapse-1.53.0/docs/admin_api/room_membership.md000066400000000000000000000014771420514467300216630ustar00rootroot00000000000000# Edit Room Membership API This API allows an administrator to join an user account with a given `user_id` to a room with a given `room_id_or_alias`. You can only modify the membership of local users. The server administrator must be in the room and have permission to invite users. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). ## Parameters The following parameters are available: * `user_id` - Fully qualified user: for example, `@user:server.com`. * `room_id_or_alias` - The room identifier or alias to join: for example, `!636q39766251:server.com`. ## Usage ``` POST /_synapse/admin/v1/join/ { "user_id": "@user:server.com" } ``` Response: ```json { "room_id": "!636q39766251:server.com" } ``` synapse-1.53.0/docs/admin_api/rooms.md000066400000000000000000000717641420514467300176410ustar00rootroot00000000000000# List Room API The List Room admin API allows server admins to get a list of rooms on their server. There are various parameters available that allow for filtering and sorting the returned list. This API supports pagination. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). **Parameters** The following query parameters are available: * `from` - Offset in the returned list. Defaults to `0`. * `limit` - Maximum amount of rooms to return. Defaults to `100`. * `order_by` - The method in which to sort the returned list of rooms. Valid values are: - `alphabetical` - Same as `name`. This is deprecated. - `size` - Same as `joined_members`. This is deprecated. - `name` - Rooms are ordered alphabetically by room name. This is the default. - `canonical_alias` - Rooms are ordered alphabetically by main alias address of the room. - `joined_members` - Rooms are ordered by the number of members. Largest to smallest. - `joined_local_members` - Rooms are ordered by the number of local members. Largest to smallest. - `version` - Rooms are ordered by room version. Largest to smallest. - `creator` - Rooms are ordered alphabetically by creator of the room. - `encryption` - Rooms are ordered alphabetically by the end-to-end encryption algorithm. - `federatable` - Rooms are ordered by whether the room is federatable. - `public` - Rooms are ordered by visibility in room list. - `join_rules` - Rooms are ordered alphabetically by join rules of the room. - `guest_access` - Rooms are ordered alphabetically by guest access option of the room. - `history_visibility` - Rooms are ordered alphabetically by visibility of history of the room. - `state_events` - Rooms are ordered by number of state events. Largest to smallest. * `dir` - Direction of room order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. * `search_term` - Filter rooms by their room name, canonical alias and room id. Specifically, rooms are selected if the search term is contained in - the room's name, - the local part of the room's canonical alias, or - the complete (local and server part) room's id (case sensitive). Defaults to no filtering. **Response** The following fields are possible in the JSON response body: * `rooms` - An array of objects, each containing information about a room. - Room objects contain the following fields: - `room_id` - The ID of the room. - `name` - The name of the room. - `canonical_alias` - The canonical (main) alias address of the room. - `joined_members` - How many users are currently in the room. - `joined_local_members` - How many local users are currently in the room. - `version` - The version of the room as a string. - `creator` - The `user_id` of the room creator. - `encryption` - Algorithm of end-to-end encryption of messages. Is `null` if encryption is not active. - `federatable` - Whether users on other servers can join this room. - `public` - Whether the room is visible in room directory. - `join_rules` - The type of rules used for users wishing to join this room. One of: ["public", "knock", "invite", "private"]. - `guest_access` - Whether guests can join the room. One of: ["can_join", "forbidden"]. - `history_visibility` - Who can see the room history. One of: ["invited", "joined", "shared", "world_readable"]. - `state_events` - Total number of state_events of a room. Complexity of the room. * `offset` - The current pagination offset in rooms. This parameter should be used instead of `next_token` for room offset as `next_token` is not intended to be parsed. * `total_rooms` - The total number of rooms this query can return. Using this and `offset`, you have enough information to know the current progression through the list. * `next_batch` - If this field is present, we know that there are potentially more rooms on the server that did not all fit into this response. We can use `next_batch` to get the "next page" of results. To do so, simply repeat your request, setting the `from` parameter to the value of `next_batch`. * `prev_batch` - If this field is present, it is possible to paginate backwards. Use `prev_batch` for the `from` value in the next request to get the "previous page" of results. The API is: A standard request with no filtering: ``` GET /_synapse/admin/v1/rooms ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "name": "Matrix HQ", "canonical_alias": "#matrix:matrix.org", "joined_members": 8326, "joined_local_members": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534 }, ... (8 hidden items) ... { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "name": "This Week In Matrix (TWIM)", "canonical_alias": "#twim:matrix.org", "joined_members": 314, "joined_local_members": 20, "version": "4", "creator": "@foo:matrix.org", "encryption": "m.megolm.v1.aes-sha2", "federatable": true, "public": false, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8345 } ], "offset": 0, "total_rooms": 10 } ``` Filtering by room name: ``` GET /_synapse/admin/v1/rooms?search_term=TWIM ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "name": "This Week In Matrix (TWIM)", "canonical_alias": "#twim:matrix.org", "joined_members": 314, "joined_local_members": 20, "version": "4", "creator": "@foo:matrix.org", "encryption": "m.megolm.v1.aes-sha2", "federatable": true, "public": false, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8 } ], "offset": 0, "total_rooms": 1 } ``` Paginating through a list of rooms: ``` GET /_synapse/admin/v1/rooms?order_by=size ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "name": "Matrix HQ", "canonical_alias": "#matrix:matrix.org", "joined_members": 8326, "joined_local_members": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534 }, ... (98 hidden items) ... { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "name": "This Week In Matrix (TWIM)", "canonical_alias": "#twim:matrix.org", "joined_members": 314, "joined_local_members": 20, "version": "4", "creator": "@foo:matrix.org", "encryption": "m.megolm.v1.aes-sha2", "federatable": true, "public": false, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8345 } ], "offset": 0, "total_rooms": 150, "next_token": 100 } ``` The presence of the `next_token` parameter tells us that there are more rooms than returned in this request, and we need to make another request to get them. To get the next batch of room results, we repeat our request, setting the `from` parameter to the value of `next_token`. ``` GET /_synapse/admin/v1/rooms?order_by=size&from=100 ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!mscvqgqpHYjBGDxNym:matrix.org", "name": "Music Theory", "canonical_alias": "#musictheory:matrix.org", "joined_members": 127, "joined_local_members": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534 }, ... (48 hidden items) ... { "room_id": "!twcBhHVdZlQWuuxBhN:termina.org.uk", "name": "weechat-matrix", "canonical_alias": "#weechat-matrix:termina.org.uk", "joined_members": 137, "joined_local_members": 20, "version": "4", "creator": "@foo:termina.org.uk", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8345 } ], "offset": 100, "prev_batch": 0, "total_rooms": 150 } ``` Once the `next_token` parameter is no longer present, we know we've reached the end of the list. # Room Details API The Room Details admin API allows server admins to get all details of a room. The following fields are possible in the JSON response body: * `room_id` - The ID of the room. * `name` - The name of the room. * `topic` - The topic of the room. * `avatar` - The `mxc` URI to the avatar of the room. * `canonical_alias` - The canonical (main) alias address of the room. * `joined_members` - How many users are currently in the room. * `joined_local_members` - How many local users are currently in the room. * `joined_local_devices` - How many local devices are currently in the room. * `version` - The version of the room as a string. * `creator` - The `user_id` of the room creator. * `encryption` - Algorithm of end-to-end encryption of messages. Is `null` if encryption is not active. * `federatable` - Whether users on other servers can join this room. * `public` - Whether the room is visible in room directory. * `join_rules` - The type of rules used for users wishing to join this room. One of: ["public", "knock", "invite", "private"]. * `guest_access` - Whether guests can join the room. One of: ["can_join", "forbidden"]. * `history_visibility` - Who can see the room history. One of: ["invited", "joined", "shared", "world_readable"]. * `state_events` - Total number of state_events of a room. Complexity of the room. The API is: ``` GET /_synapse/admin/v1/rooms/ ``` A response body like the following is returned: ```json { "room_id": "!mscvqgqpHYjBGDxNym:matrix.org", "name": "Music Theory", "avatar": "mxc://matrix.org/AQDaVFlbkQoErdOgqWRgiGSV", "topic": "Theory, Composition, Notation, Analysis", "canonical_alias": "#musictheory:matrix.org", "joined_members": 127, "joined_local_members": 2, "joined_local_devices": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534 } ``` # Room Members API The Room Members admin API allows server admins to get a list of all members of a room. The response includes the following fields: * `members` - A list of all the members that are present in the room, represented by their ids. * `total` - Total number of members in the room. The API is: ``` GET /_synapse/admin/v1/rooms//members ``` A response body like the following is returned: ```json { "members": [ "@foo:matrix.org", "@bar:matrix.org", "@foobar:matrix.org" ], "total": 3 } ``` # Room State API The Room State admin API allows server admins to get a list of all state events in a room. The response includes the following fields: * `state` - The current state of the room at the time of request. The API is: ``` GET /_synapse/admin/v1/rooms//state ``` A response body like the following is returned: ```json { "state": [ {"type": "m.room.create", "state_key": "", "etc": true}, {"type": "m.room.power_levels", "state_key": "", "etc": true}, {"type": "m.room.name", "state_key": "", "etc": true} ] } ``` # Block Room API The Block Room admin API allows server admins to block and unblock rooms, and query to see if a given room is blocked. This API can be used to pre-emptively block a room, even if it's unknown to this homeserver. Users will be prevented from joining a blocked room. ## Block or unblock a room The API is: ``` PUT /_synapse/admin/v1/rooms//block ``` with a body of: ```json { "block": true } ``` A response body like the following is returned: ```json { "block": true } ``` **Parameters** The following parameters should be set in the URL: - `room_id` - The ID of the room. The following JSON body parameters are available: - `block` - If `true` the room will be blocked and if `false` the room will be unblocked. **Response** The following fields are possible in the JSON response body: - `block` - A boolean. `true` if the room is blocked, otherwise `false` ## Get block status The API is: ``` GET /_synapse/admin/v1/rooms//block ``` A response body like the following is returned: ```json { "block": true, "user_id": "" } ``` **Parameters** The following parameters should be set in the URL: - `room_id` - The ID of the room. **Response** The following fields are possible in the JSON response body: - `block` - A boolean. `true` if the room is blocked, otherwise `false` - `user_id` - An optional string. If the room is blocked (`block` is `true`) shows the user who has add the room to blocking list. Otherwise it is not displayed. # Delete Room API The Delete Room admin API allows server admins to remove rooms from the server and block these rooms. Shuts down a room. Moves all local users and room aliases automatically to a new room if `new_room_user_id` is set. Otherwise local users only leave the room without any information. The new room will be created with the user specified by the `new_room_user_id` parameter as room administrator and will contain a message explaining what happened. Users invited to the new room will have power level `-10` by default, and thus be unable to speak. If `block` is `true`, users will be prevented from joining the old room. This option can in [Version 1](#version-1-old-version) also be used to pre-emptively block a room, even if it's unknown to this homeserver. In this case, the room will be blocked, and no further action will be taken. If `block` is `false`, attempting to delete an unknown room is invalid and will be rejected as a bad request. This API will remove all trace of the old room from your database after removing all local users. If `purge` is `true` (the default), all traces of the old room will be removed from your database after removing all local users. If you do not want this to happen, set `purge` to `false`. Depending on the amount of history being purged, a call to the API may take several minutes or longer. The local server will only have the power to move local user and room aliases to the new room. Users on other servers will be unaffected. ## Version 1 (old version) This version works synchronously. That means you only get the response once the server has finished the action, which may take a long time. If you request the same action a second time, and the server has not finished the first one, the second request will block. This is fixed in version 2 of this API. The parameters are the same in both APIs. This API will become deprecated in the future. The API is: ``` DELETE /_synapse/admin/v1/rooms/ ``` with a body of: ```json { "new_room_user_id": "@someuser:example.com", "room_name": "Content Violation Notification", "message": "Bad Room has been shutdown due to content violations on this server. Please review our Terms of Service.", "block": true, "purge": true } ``` A response body like the following is returned: ```json { "kicked_users": [ "@foobar:example.com" ], "failed_to_kick_users": [], "local_aliases": [ "#badroom:example.com", "#evilsaloon:example.com" ], "new_room_id": "!newroomid:example.com" } ``` The parameters and response values have the same format as [version 2](#version-2-new-version) of the API. ## Version 2 (new version) **Note**: This API is new, experimental and "subject to change". This version works asynchronously, meaning you get the response from server immediately while the server works on that task in background. You can then request the status of the action to check if it has completed. The API is: ``` DELETE /_synapse/admin/v2/rooms/ ``` with a body of: ```json { "new_room_user_id": "@someuser:example.com", "room_name": "Content Violation Notification", "message": "Bad Room has been shutdown due to content violations on this server. Please review our Terms of Service.", "block": true, "purge": true } ``` The API starts the shut down and purge running, and returns immediately with a JSON body with a purge id: ```json { "delete_id": "" } ``` **Parameters** The following parameters should be set in the URL: * `room_id` - The ID of the room. The following JSON body parameters are available: * `new_room_user_id` - Optional. If set, a new room will be created with this user ID as the creator and admin, and all users in the old room will be moved into that room. If not set, no new room will be created and the users will just be removed from the old room. The user ID must be on the local server, but does not necessarily have to belong to a registered user. * `room_name` - Optional. A string representing the name of the room that new users will be invited to. Defaults to `Content Violation Notification` * `message` - Optional. A string containing the first message that will be sent as `new_room_user_id` in the new room. Ideally this will clearly convey why the original room was shut down. Defaults to `Sharing illegal content on this server is not permitted and rooms in violation will be blocked.` * `block` - Optional. If set to `true`, this room will be added to a blocking list, preventing future attempts to join the room. Rooms can be blocked even if they're not yet known to the homeserver (only with [Version 1](#version-1-old-version) of the API). Defaults to `false`. * `purge` - Optional. If set to `true`, it will remove all traces of the room from your database. Defaults to `true`. * `force_purge` - Optional, and ignored unless `purge` is `true`. If set to `true`, it will force a purge to go ahead even if there are local users still in the room. Do not use this unless a regular `purge` operation fails, as it could leave those users' clients in a confused state. The JSON body must not be empty. The body must be at least `{}`. ## Status of deleting rooms **Note**: This API is new, experimental and "subject to change". It is possible to query the status of the background task for deleting rooms. The status can be queried up to 24 hours after completion of the task, or until Synapse is restarted (whichever happens first). ### Query by `room_id` With this API you can get the status of all active deletion tasks, and all those completed in the last 24h, for the given `room_id`. The API is: ``` GET /_synapse/admin/v2/rooms//delete_status ``` A response body like the following is returned: ```json { "results": [ { "delete_id": "delete_id1", "status": "failed", "error": "error message", "shutdown_room": { "kicked_users": [], "failed_to_kick_users": [], "local_aliases": [], "new_room_id": null } }, { "delete_id": "delete_id2", "status": "purging", "shutdown_room": { "kicked_users": [ "@foobar:example.com" ], "failed_to_kick_users": [], "local_aliases": [ "#badroom:example.com", "#evilsaloon:example.com" ], "new_room_id": "!newroomid:example.com" } } ] } ``` **Parameters** The following parameters should be set in the URL: * `room_id` - The ID of the room. ### Query by `delete_id` With this API you can get the status of one specific task by `delete_id`. The API is: ``` GET /_synapse/admin/v2/rooms/delete_status/ ``` A response body like the following is returned: ```json { "status": "purging", "shutdown_room": { "kicked_users": [ "@foobar:example.com" ], "failed_to_kick_users": [], "local_aliases": [ "#badroom:example.com", "#evilsaloon:example.com" ], "new_room_id": "!newroomid:example.com" } } ``` **Parameters** The following parameters should be set in the URL: * `delete_id` - The ID for this delete. ### Response The following fields are returned in the JSON response body: - `results` - An array of objects, each containing information about one task. This field is omitted from the result when you query by `delete_id`. Task objects contain the following fields: - `delete_id` - The ID for this purge if you query by `room_id`. - `status` - The status will be one of: - `shutting_down` - The process is removing users from the room. - `purging` - The process is purging the room and event data from database. - `complete` - The process has completed successfully. - `failed` - The process is aborted, an error has occurred. - `error` - A string that shows an error message if `status` is `failed`. Otherwise this field is hidden. - `shutdown_room` - An object containing information about the result of shutting down the room. *Note:* The result is shown after removing the room members. The delete process can still be running. Please pay attention to the `status`. - `kicked_users` - An array of users (`user_id`) that were kicked. - `failed_to_kick_users` - An array of users (`user_id`) that that were not kicked. - `local_aliases` - An array of strings representing the local aliases that were migrated from the old room to the new. - `new_room_id` - A string representing the room ID of the new room, or `null` if no such room was created. ## Undoing room deletions *Note*: This guide may be outdated by the time you read it. By nature of room deletions being performed at the database level, the structure can and does change without notice. First, it's important to understand that a room deletion is very destructive. Undoing a deletion is not as simple as pretending it never happened - work has to be done to move forward instead of resetting the past. In fact, in some cases it might not be possible to recover at all: * If the room was invite-only, your users will need to be re-invited. * If the room no longer has any members at all, it'll be impossible to rejoin. * The first user to rejoin will have to do so via an alias on a different server (or receive an invite from a user on a different server). With all that being said, if you still want to try and recover the room: 1. If the room was `block`ed, you must unblock it on your server. This can be accomplished as follows: 1. For safety reasons, shut down Synapse. 2. In the database, run `DELETE FROM blocked_rooms WHERE room_id = '!example:example.org';` * For caution: it's recommended to run this in a transaction: `BEGIN; DELETE ...;`, verify you got 1 result, then `COMMIT;`. * The room ID is the same one supplied to the delete room API, not the Content Violation room. 3. Restart Synapse. This step is unnecessary if `block` was not set. 2. Any room aliases on your server that pointed to the deleted room may have been deleted, or redirected to the Content Violation room. These will need to be restored manually. 3. Users on your server that were in the deleted room will have been kicked from the room. Consider whether you want to update their membership (possibly via the [Edit Room Membership API](room_membership.md)) or let them handle rejoining themselves. 4. If `new_room_user_id` was given, a 'Content Violation' will have been created. Consider whether you want to delete that roomm. # Make Room Admin API Grants another user the highest power available to a local user who is in the room. If the user is not in the room, and it is not publicly joinable, then invite the user. By default the server admin (the caller) is granted power, but another user can optionally be specified, e.g.: ``` POST /_synapse/admin/v1/rooms//make_room_admin { "user_id": "@foo:example.com" } ``` # Forward Extremities Admin API Enables querying and deleting forward extremities from rooms. When a lot of forward extremities accumulate in a room, performance can become degraded. For details, see [#1760](https://github.com/matrix-org/synapse/issues/1760). ## Check for forward extremities To check the status of forward extremities for a room: ``` GET /_synapse/admin/v1/rooms//forward_extremities ``` A response as follows will be returned: ```json { "count": 1, "results": [ { "event_id": "$M5SP266vsnxctfwFgFLNceaCo3ujhRtg_NiiHabcdefgh", "state_group": 439, "depth": 123, "received_ts": 1611263016761 } ] } ``` ## Deleting forward extremities **WARNING**: Please ensure you know what you're doing and have read the related issue [#1760](https://github.com/matrix-org/synapse/issues/1760). Under no situations should this API be executed as an automated maintenance task! If a room has lots of forward extremities, the extra can be deleted as follows: ``` DELETE /_synapse/admin/v1/rooms//forward_extremities ``` A response as follows will be returned, indicating the amount of forward extremities that were deleted. ```json { "deleted": 1 } ``` # Event Context API This API lets a client find the context of an event. This is designed primarily to investigate abuse reports. ``` GET /_synapse/admin/v1/rooms//context/ ``` This API mimmicks [GET /_matrix/client/r0/rooms/{roomId}/context/{eventId}](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-rooms-roomid-context-eventid). Please refer to the link for all details on parameters and reseponse. Example response: ```json { "end": "t29-57_2_0_2", "events_after": [ { "content": { "body": "This is an example text message", "msgtype": "m.text", "format": "org.matrix.custom.html", "formatted_body": "This is an example text message" }, "type": "m.room.message", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 } } ], "event": { "content": { "body": "filename.jpg", "info": { "h": 398, "w": 394, "mimetype": "image/jpeg", "size": 31037 }, "url": "mxc://example.org/JWEIFJgwEIhweiWJE", "msgtype": "m.image" }, "type": "m.room.message", "event_id": "$f3h4d129462ha:example.com", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 } }, "events_before": [ { "content": { "body": "something-important.doc", "filename": "something-important.doc", "info": { "mimetype": "application/msword", "size": 46144 }, "msgtype": "m.file", "url": "mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe" }, "type": "m.room.message", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 } } ], "start": "t27-54_2_0_2", "state": [ { "content": { "creator": "@example:example.org", "room_version": "1", "m.federate": true, "predecessor": { "event_id": "$something:example.org", "room_id": "!oldroom:example.org" } }, "type": "m.room.create", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 }, "state_key": "" }, { "content": { "membership": "join", "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF", "displayname": "Alice Margatroid" }, "type": "m.room.member", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 }, "state_key": "@alice:example.org" } ] } ``` synapse-1.53.0/docs/admin_api/server_notices.md000066400000000000000000000021441420514467300215160ustar00rootroot00000000000000# Server Notices The API to send notices is as follows: ``` POST /_synapse/admin/v1/send_server_notice ``` or: ``` PUT /_synapse/admin/v1/send_server_notice/{txnId} ``` You will need to authenticate with an access token for an admin user. When using the `PUT` form, retransmissions with the same transaction ID will be ignored in the same way as with `PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}`. The request body should look something like the following: ```json { "user_id": "@target_user:server_name", "content": { "msgtype": "m.text", "body": "This is my message" } } ``` You can optionally include the following additional parameters: * `type`: the type of event. Defaults to `m.room.message`. * `state_key`: Setting this will result in a state event being sent. Once the notice has been sent, the API will return the following response: ```json { "event_id": "" } ``` Note that server notices must be enabled in `homeserver.yaml` before this API can be used. See [the server notices documentation](../server_notices.md) for more information. synapse-1.53.0/docs/admin_api/statistics.md000066400000000000000000000062371420514467300206650ustar00rootroot00000000000000# Users' media usage statistics Returns information about all local media usage of users. Gives the possibility to filter them by time and user. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). The API is: ``` GET /_synapse/admin/v1/statistics/users/media ``` A response body like the following is returned: ```json { "users": [ { "displayname": "foo_user_0", "media_count": 2, "media_length": 134, "user_id": "@foo_user_0:test" }, { "displayname": "foo_user_1", "media_count": 2, "media_length": 134, "user_id": "@foo_user_1:test" } ], "next_token": 3, "total": 10 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more reports to paginate through. **Parameters** The following parameters should be set in the URL: * `limit`: string representing a positive integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. * `from`: string representing a positive integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. * `order_by` - string - The method in which to sort the returned list of users. Valid values are: - `user_id` - Users are ordered alphabetically by `user_id`. This is the default. - `displayname` - Users are ordered alphabetically by `displayname`. - `media_length` - Users are ordered by the total size of uploaded media in bytes. Smallest to largest. - `media_count` - Users are ordered by number of uploaded media. Smallest to largest. * `from_ts` - string representing a positive integer - Considers only files created at this timestamp or later. Unix timestamp in ms. * `until_ts` - string representing a positive integer - Considers only files created at this timestamp or earlier. Unix timestamp in ms. * `search_term` - string - Filter users by their user ID localpart **or** displayname. The search term can be found in any part of the string. Defaults to no filtering. * `dir` - string - Direction of order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. **Response** The following fields are returned in the JSON response body: * `users` - An array of objects, each containing information about the user and their local media. Objects contain the following fields: - `displayname` - string - Displayname of this user. - `media_count` - integer - Number of uploaded media by this user. - `media_length` - integer - Size of uploaded media in bytes by this user. - `user_id` - string - Fully-qualified user ID (ex. `@user:server.com`). * `next_token` - integer - Opaque value used for pagination. See above. * `total` - integer - Total number of users after filtering. synapse-1.53.0/docs/admin_api/user_admin_api.md000066400000000000000000001006361420514467300214500ustar00rootroot00000000000000# User Admin API To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api). ## Query User Account This API returns information about a specific user account. The api is: ``` GET /_synapse/admin/v2/users/ ``` It returns a JSON body like the following: ```jsonc { "name": "@user:example.com", "displayname": "User", // can be null if not set "threepids": [ { "medium": "email", "address": "", "added_at": 1586458409743, "validated_at": 1586458409743 }, { "medium": "email", "address": "", "added_at": 1586458409743, "validated_at": 1586458409743 } ], "avatar_url": "", // can be null if not set "is_guest": 0, "admin": 0, "deactivated": 0, "shadow_banned": 0, "creation_ts": 1560432506, "appservice_id": null, "consent_server_notice_sent": null, "consent_version": null, "external_ids": [ { "auth_provider": "", "external_id": "" }, { "auth_provider": "", "external_id": "" } ], "user_type": null } ``` URL parameters: - `user_id`: fully-qualified user id: for example, `@user:server.com`. ## Create or modify Account This API allows an administrator to create or modify a user account with a specific `user_id`. This api is: ``` PUT /_synapse/admin/v2/users/ ``` with a body of: ```json { "password": "user_password", "displayname": "User", "threepids": [ { "medium": "email", "address": "" }, { "medium": "email", "address": "" } ], "external_ids": [ { "auth_provider": "", "external_id": "" }, { "auth_provider": "", "external_id": "" } ], "avatar_url": "", "admin": false, "deactivated": false, "user_type": null } ``` Returns HTTP status code: - `201` - When a new user object was created. - `200` - When a user was modified. URL parameters: - `user_id`: fully-qualified user id: for example, `@user:server.com`. Body parameters: - `password` - string, optional. If provided, the user's password is updated and all devices are logged out. - `displayname` - string, optional, defaults to the value of `user_id`. - `threepids` - array, optional, allows setting the third-party IDs (email, msisdn) - `medium` - string. Kind of third-party ID, either `email` or `msisdn`. - `address` - string. Value of third-party ID. belonging to a user. - `external_ids` - array, optional. Allow setting the identifier of the external identity provider for SSO (Single sign-on). Details in [Sample Configuration File](../usage/configuration/homeserver_sample_config.html) section `sso` and `oidc_providers`. - `auth_provider` - string. ID of the external identity provider. Value of `idp_id` in homeserver configuration. - `external_id` - string, user ID in the external identity provider. - `avatar_url` - string, optional, must be a [MXC URI](https://matrix.org/docs/spec/client_server/r0.6.0#matrix-content-mxc-uris). - `admin` - bool, optional, defaults to `false`. - `deactivated` - bool, optional. If unspecified, deactivation state will be left unchanged on existing accounts and set to `false` for new accounts. A user cannot be erased by deactivating with this API. For details on deactivating users see [Deactivate Account](#deactivate-account). - `user_type` - string or null, optional. If provided, the user type will be adjusted. If `null` given, the user type will be cleared. Other allowed options are: `bot` and `support`. If the user already exists then optional parameters default to the current value. In order to re-activate an account `deactivated` must be set to `false`. If users do not login via single-sign-on, a new `password` must be provided. ## List Accounts This API returns all local user accounts. By default, the response is ordered by ascending user ID. ``` GET /_synapse/admin/v2/users?from=0&limit=10&guests=false ``` A response body like the following is returned: ```json { "users": [ { "name": "", "is_guest": 0, "admin": 0, "user_type": null, "deactivated": 0, "shadow_banned": 0, "displayname": "", "avatar_url": null, "creation_ts": 1560432668000 }, { "name": "", "is_guest": 0, "admin": 1, "user_type": null, "deactivated": 0, "shadow_banned": 0, "displayname": "", "avatar_url": "", "creation_ts": 1561550621000 } ], "next_token": "100", "total": 200 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more users to paginate through. **Parameters** The following parameters should be set in the URL: - `user_id` - Is optional and filters to only return users with user IDs that contain this value. This parameter is ignored when using the `name` parameter. - `name` - Is optional and filters to only return users with user ID localparts **or** displaynames that contain this value. - `guests` - string representing a bool - Is optional and if `false` will **exclude** guest users. Defaults to `true` to include guest users. - `deactivated` - string representing a bool - Is optional and if `true` will **include** deactivated users. Defaults to `false` to exclude deactivated users. - `limit` - string representing a positive integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. - `from` - string representing a positive integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. - `order_by` - The method by which to sort the returned list of users. If the ordered field has duplicates, the second order is always by ascending `name`, which guarantees a stable ordering. Valid values are: - `name` - Users are ordered alphabetically by `name`. This is the default. - `is_guest` - Users are ordered by `is_guest` status. - `admin` - Users are ordered by `admin` status. - `user_type` - Users are ordered alphabetically by `user_type`. - `deactivated` - Users are ordered by `deactivated` status. - `shadow_banned` - Users are ordered by `shadow_banned` status. - `displayname` - Users are ordered alphabetically by `displayname`. - `avatar_url` - Users are ordered alphabetically by avatar URL. - `creation_ts` - Users are ordered by when the users was created in ms. - `dir` - Direction of media order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. Caution. The database only has indexes on the columns `name` and `creation_ts`. This means that if a different sort order is used (`is_guest`, `admin`, `user_type`, `deactivated`, `shadow_banned`, `avatar_url` or `displayname`), this can cause a large load on the database, especially for large environments. **Response** The following fields are returned in the JSON response body: - `users` - An array of objects, each containing information about an user. User objects contain the following fields: - `name` - string - Fully-qualified user ID (ex. `@user:server.com`). - `is_guest` - bool - Status if that user is a guest account. - `admin` - bool - Status if that user is a server administrator. - `user_type` - string - Type of the user. Normal users are type `None`. This allows user type specific behaviour. There are also types `support` and `bot`. - `deactivated` - bool - Status if that user has been marked as deactivated. - `shadow_banned` - bool - Status if that user has been marked as shadow banned. - `displayname` - string - The user's display name if they have set one. - `avatar_url` - string - The user's avatar URL if they have set one. - `creation_ts` - integer - The user's creation timestamp in ms. - `next_token`: string representing a positive integer - Indication for pagination. See above. - `total` - integer - Total number of media. ## Query current sessions for a user This API returns information about the active sessions for a specific user. The endpoints are: ``` GET /_synapse/admin/v1/whois/ ``` and: ``` GET /_matrix/client/r0/admin/whois/ ``` See also: [Client Server API Whois](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-admin-whois-userid). It returns a JSON body like the following: ```json { "user_id": "", "devices": { "": { "sessions": [ { "connections": [ { "ip": "1.2.3.4", "last_seen": 1417222374433, "user_agent": "Mozilla/5.0 ..." }, { "ip": "1.2.3.10", "last_seen": 1417222374500, "user_agent": "Dalvik/2.1.0 ..." } ] } ] } } } ``` `last_seen` is measured in milliseconds since the Unix epoch. ## Deactivate Account This API deactivates an account. It removes active access tokens, resets the password, and deletes third-party IDs (to prevent the user requesting a password reset). It can also mark the user as GDPR-erased. This means messages sent by the user will still be visible by anyone that was in the room when these messages were sent, but hidden from users joining the room afterwards. The api is: ``` POST /_synapse/admin/v1/deactivate/ ``` with a body of: ```json { "erase": true } ``` The erase parameter is optional and defaults to `false`. An empty body may be passed for backwards compatibility. The following actions are performed when deactivating an user: - Try to unbind 3PIDs from the identity server - Remove all 3PIDs from the homeserver - Delete all devices and E2EE keys - Delete all access tokens - Delete all pushers - Delete the password hash - Removal from all rooms the user is a member of - Remove the user from the user directory - Reject all pending invites - Remove all account validity information related to the user - Remove the arbitrary data store known as *account data*. For example, this includes: - list of ignored users; - push rules; - secret storage keys; and - cross-signing keys. The following additional actions are performed during deactivation if `erase` is set to `true`: - Remove the user's display name - Remove the user's avatar URL - Mark the user as erased The following actions are **NOT** performed. The list may be incomplete. - Remove mappings of SSO IDs - [Delete media uploaded](#delete-media-uploaded-by-a-user) by user (included avatar images) - Delete sent and received messages - Remove the user's creation (registration) timestamp - [Remove rate limit overrides](#override-ratelimiting-for-users) - Remove from monthly active users ## Reset password Changes the password of another user. This will automatically log the user out of all their devices. The api is: ``` POST /_synapse/admin/v1/reset_password/ ``` with a body of: ```json { "new_password": "", "logout_devices": true } ``` The parameter `new_password` is required. The parameter `logout_devices` is optional and defaults to `true`. ## Get whether a user is a server administrator or not The api is: ``` GET /_synapse/admin/v1/users//admin ``` A response body like the following is returned: ```json { "admin": true } ``` ## Change whether a user is a server administrator or not Note that you cannot demote yourself. The api is: ``` PUT /_synapse/admin/v1/users//admin ``` with a body of: ```json { "admin": true } ``` ## List room memberships of a user Gets a list of all `room_id` that a specific `user_id` is member. The API is: ``` GET /_synapse/admin/v1/users//joined_rooms ``` A response body like the following is returned: ```json { "joined_rooms": [ "!DuGcnbhHGaSZQoNQR:matrix.org", "!ZtSaPCawyWtxfWiIy:matrix.org" ], "total": 2 } ``` The server returns the list of rooms of which the user and the server are member. If the user is local, all the rooms of which the user is member are returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `joined_rooms` - An array of `room_id`. - `total` - Number of rooms. ## Account Data Gets information about account data for a specific `user_id`. The API is: ``` GET /_synapse/admin/v1/users//accountdata ``` A response body like the following is returned: ```json { "account_data": { "global": { "m.secret_storage.key.LmIGHTg5W": { "algorithm": "m.secret_storage.v1.aes-hmac-sha2", "iv": "fwjNZatxg==", "mac": "eWh9kNnLWZUNOgnc=" }, "im.vector.hide_profile": { "hide_profile": true }, "org.matrix.preview_urls": { "disable": false }, "im.vector.riot.breadcrumb_rooms": { "rooms": [ "!LxcBDAsDUVAfJDEo:matrix.org", "!MAhRxqasbItjOqxu:matrix.org" ] }, "m.accepted_terms": { "accepted": [ "https://example.org/somewhere/privacy-1.2-en.html", "https://example.org/somewhere/terms-2.0-en.html" ] }, "im.vector.setting.breadcrumbs": { "recent_rooms": [ "!MAhRxqasbItqxuEt:matrix.org", "!ZtSaPCawyWtxiImy:matrix.org" ] } }, "rooms": { "!GUdfZSHUJibpiVqHYd:matrix.org": { "m.fully_read": { "event_id": "$156334540fYIhZ:matrix.org" } }, "!tOZwOOiqwCYQkLhV:matrix.org": { "m.fully_read": { "event_id": "$xjsIyp4_NaVl2yPvIZs_k1Jl8tsC_Sp23wjqXPno" } } } } } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `account_data` - A map containing the account data for the user - `global` - A map containing the global account data for the user - `rooms` - A map containing the account data per room for the user ## User media ### List media uploaded by a user Gets a list of all local media that a specific `user_id` has created. These are media that the user has uploaded themselves ([local media](../media_repository.md#local-media)), as well as [URL preview images](../media_repository.md#url-previews) requested by the user if the [feature is enabled](../development/url_previews.md). By default, the response is ordered by descending creation date and ascending media ID. The newest media is on top. You can change the order with parameters `order_by` and `dir`. The API is: ``` GET /_synapse/admin/v1/users//media ``` A response body like the following is returned: ```json { "media": [ { "created_ts": 100400, "last_access_ts": null, "media_id": "qXhyRzulkwLsNHTbpHreuEgo", "media_length": 67, "media_type": "image/png", "quarantined_by": null, "safe_from_quarantine": false, "upload_name": "test1.png" }, { "created_ts": 200400, "last_access_ts": null, "media_id": "FHfiSnzoINDatrXHQIXBtahw", "media_length": 67, "media_type": "image/png", "quarantined_by": null, "safe_from_quarantine": false, "upload_name": "test2.png" } ], "next_token": 3, "total": 2 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more reports to paginate through. **Parameters** The following parameters should be set in the URL: - `user_id` - string - fully qualified: for example, `@user:server.com`. - `limit`: string representing a positive integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. - `from`: string representing a positive integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. - `order_by` - The method by which to sort the returned list of media. If the ordered field has duplicates, the second order is always by ascending `media_id`, which guarantees a stable ordering. Valid values are: - `media_id` - Media are ordered alphabetically by `media_id`. - `upload_name` - Media are ordered alphabetically by name the media was uploaded with. - `created_ts` - Media are ordered by when the content was uploaded in ms. Smallest to largest. This is the default. - `last_access_ts` - Media are ordered by when the content was last accessed in ms. Smallest to largest. - `media_length` - Media are ordered by length of the media in bytes. Smallest to largest. - `media_type` - Media are ordered alphabetically by MIME-type. - `quarantined_by` - Media are ordered alphabetically by the user ID that initiated the quarantine request for this media. - `safe_from_quarantine` - Media are ordered by the status if this media is safe from quarantining. - `dir` - Direction of media order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. If neither `order_by` nor `dir` is set, the default order is newest media on top (corresponds to `order_by` = `created_ts` and `dir` = `b`). Caution. The database only has indexes on the columns `media_id`, `user_id` and `created_ts`. This means that if a different sort order is used (`upload_name`, `last_access_ts`, `media_length`, `media_type`, `quarantined_by` or `safe_from_quarantine`), this can cause a large load on the database, especially for large environments. **Response** The following fields are returned in the JSON response body: - `media` - An array of objects, each containing information about a media. Media objects contain the following fields: - `created_ts` - integer - Timestamp when the content was uploaded in ms. - `last_access_ts` - integer - Timestamp when the content was last accessed in ms. - `media_id` - string - The id used to refer to the media. Details about the format are documented under [media repository](../media_repository.md). - `media_length` - integer - Length of the media in bytes. - `media_type` - string - The MIME-type of the media. - `quarantined_by` - string - The user ID that initiated the quarantine request for this media. - `safe_from_quarantine` - bool - Status if this media is safe from quarantining. - `upload_name` - string - The name the media was uploaded with. - `next_token`: integer - Indication for pagination. See above. - `total` - integer - Total number of media. ### Delete media uploaded by a user This API deletes the *local* media from the disk of your own server that a specific `user_id` has created. This includes any local thumbnails. This API will not affect media that has been uploaded to external media repositories (e.g https://github.com/turt2live/matrix-media-repo/). By default, the API deletes media ordered by descending creation date and ascending media ID. The newest media is deleted first. You can change the order with parameters `order_by` and `dir`. If no `limit` is set the API deletes `100` files per request. The API is: ``` DELETE /_synapse/admin/v1/users//media ``` A response body like the following is returned: ```json { "deleted_media": [ "abcdefghijklmnopqrstuvwx" ], "total": 1 } ``` The following fields are returned in the JSON response body: * `deleted_media`: an array of strings - List of deleted `media_id` * `total`: integer - Total number of deleted `media_id` **Note**: There is no `next_token`. This is not useful for deleting media, because after deleting media the remaining media have a new order. **Parameters** This API has the same parameters as [List media uploaded by a user](#list-media-uploaded-by-a-user). With the parameters you can for example limit the number of files to delete at once or delete largest/smallest or newest/oldest files first. ## Login as a user Get an access token that can be used to authenticate as that user. Useful for when admins wish to do actions on behalf of a user. The API is: ``` POST /_synapse/admin/v1/users//login {} ``` An optional `valid_until_ms` field can be specified in the request body as an integer timestamp that specifies when the token should expire. By default tokens do not expire. A response body like the following is returned: ```json { "access_token": "" } ``` This API does *not* generate a new device for the user, and so will not appear their `/devices` list, and in general the target user should not be able to tell they have been logged in as. To expire the token call the standard `/logout` API with the token. Note: The token will expire if the *admin* user calls `/logout/all` from any of their devices, but the token will *not* expire if the target user does the same. ## User devices ### List all devices Gets information about all devices for a specific `user_id`. The API is: ``` GET /_synapse/admin/v2/users//devices ``` A response body like the following is returned: ```json { "devices": [ { "device_id": "QBUAZIFURK", "display_name": "android", "last_seen_ip": "1.2.3.4", "last_seen_ts": 1474491775024, "user_id": "" }, { "device_id": "AUIECTSRND", "display_name": "ios", "last_seen_ip": "1.2.3.5", "last_seen_ts": 1474491775025, "user_id": "" } ], "total": 2 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `devices` - An array of objects, each containing information about a device. Device objects contain the following fields: - `device_id` - Identifier of device. - `display_name` - Display name set by the user for this device. Absent if no name has been set. - `last_seen_ip` - The IP address where this device was last seen. (May be a few minutes out of date, for efficiency reasons). - `last_seen_ts` - The timestamp (in milliseconds since the unix epoch) when this devices was last seen. (May be a few minutes out of date, for efficiency reasons). - `user_id` - Owner of device. - `total` - Total number of user's devices. ### Delete multiple devices Deletes the given devices for a specific `user_id`, and invalidates any access token associated with them. The API is: ``` POST /_synapse/admin/v2/users//delete_devices { "devices": [ "QBUAZIFURK", "AUIECTSRND" ], } ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. The following fields are required in the JSON request body: - `devices` - The list of device IDs to delete. ### Show a device Gets information on a single device, by `device_id` for a specific `user_id`. The API is: ``` GET /_synapse/admin/v2/users//devices/ ``` A response body like the following is returned: ```json { "device_id": "", "display_name": "android", "last_seen_ip": "1.2.3.4", "last_seen_ts": 1474491775024, "user_id": "" } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. - `device_id` - The device to retrieve. **Response** The following fields are returned in the JSON response body: - `device_id` - Identifier of device. - `display_name` - Display name set by the user for this device. Absent if no name has been set. - `last_seen_ip` - The IP address where this device was last seen. (May be a few minutes out of date, for efficiency reasons). - `last_seen_ts` - The timestamp (in milliseconds since the unix epoch) when this devices was last seen. (May be a few minutes out of date, for efficiency reasons). - `user_id` - Owner of device. ### Update a device Updates the metadata on the given `device_id` for a specific `user_id`. The API is: ``` PUT /_synapse/admin/v2/users//devices/ { "display_name": "My other phone" } ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. - `device_id` - The device to update. The following fields are required in the JSON request body: - `display_name` - The new display name for this device. If not given, the display name is unchanged. ### Delete a device Deletes the given `device_id` for a specific `user_id`, and invalidates any access token associated with it. The API is: ``` DELETE /_synapse/admin/v2/users//devices/ {} ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. - `device_id` - The device to delete. ## List all pushers Gets information about all pushers for a specific `user_id`. The API is: ``` GET /_synapse/admin/v1/users//pushers ``` A response body like the following is returned: ```json { "pushers": [ { "app_display_name":"HTTP Push Notifications", "app_id":"m.http", "data": { "url":"example.com" }, "device_display_name":"pushy push", "kind":"http", "lang":"None", "profile_tag":"", "pushkey":"a@example.com" } ], "total": 1 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `pushers` - An array containing the current pushers for the user - `app_display_name` - string - A string that will allow the user to identify what application owns this pusher. - `app_id` - string - This is a reverse-DNS style identifier for the application. Max length, 64 chars. - `data` - A dictionary of information for the pusher implementation itself. - `url` - string - Required if `kind` is `http`. The URL to use to send notifications to. - `format` - string - The format to use when sending notifications to the Push Gateway. - `device_display_name` - string - A string that will allow the user to identify what device owns this pusher. - `profile_tag` - string - This string determines which set of device specific rules this pusher executes. - `kind` - string - The kind of pusher. "http" is a pusher that sends HTTP pokes. - `lang` - string - The preferred language for receiving notifications (e.g. 'en' or 'en-US') - `profile_tag` - string - This string determines which set of device specific rules this pusher executes. - `pushkey` - string - This is a unique identifier for this pusher. Max length, 512 bytes. - `total` - integer - Number of pushers. See also the [Client-Server API Spec on pushers](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-pushers). ## Controlling whether a user is shadow-banned Shadow-banning is a useful tool for moderating malicious or egregiously abusive users. A shadow-banned users receives successful responses to their client-server API requests, but the events are not propagated into rooms. This can be an effective tool as it (hopefully) takes longer for the user to realise they are being moderated before pivoting to another account. Shadow-banning a user should be used as a tool of last resort and may lead to confusing or broken behaviour for the client. A shadow-banned user will not receive any notification and it is generally more appropriate to ban or kick abusive users. A shadow-banned user will be unable to contact anyone on the server. To shadow-ban a user the API is: ``` POST /_synapse/admin/v1/users//shadow_ban ``` To un-shadow-ban a user the API is: ``` DELETE /_synapse/admin/v1/users//shadow_ban ``` An empty JSON dict is returned in both cases. **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. ## Override ratelimiting for users This API allows to override or disable ratelimiting for a specific user. There are specific APIs to set, get and delete a ratelimit. ### Get status of ratelimit The API is: ``` GET /_synapse/admin/v1/users//override_ratelimit ``` A response body like the following is returned: ```json { "messages_per_second": 0, "burst_count": 0 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. **Response** The following fields are returned in the JSON response body: - `messages_per_second` - integer - The number of actions that can be performed in a second. `0` mean that ratelimiting is disabled for this user. - `burst_count` - integer - How many actions that can be performed before being limited. If **no** custom ratelimit is set, an empty JSON dict is returned. ```json {} ``` ### Set ratelimit The API is: ``` POST /_synapse/admin/v1/users//override_ratelimit ``` A response body like the following is returned: ```json { "messages_per_second": 0, "burst_count": 0 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. Body parameters: - `messages_per_second` - positive integer, optional. The number of actions that can be performed in a second. Defaults to `0`. - `burst_count` - positive integer, optional. How many actions that can be performed before being limited. Defaults to `0`. To disable users' ratelimit set both values to `0`. **Response** The following fields are returned in the JSON response body: - `messages_per_second` - integer - The number of actions that can be performed in a second. - `burst_count` - integer - How many actions that can be performed before being limited. ### Delete ratelimit The API is: ``` DELETE /_synapse/admin/v1/users//override_ratelimit ``` An empty JSON dict is returned. ```json {} ``` **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. ### Check username availability Checks to see if a username is available, and valid, for the server. See [the client-server API](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-register-available) for more information. This endpoint will work even if registration is disabled on the server, unlike `/_matrix/client/r0/register/available`. The API is: ``` GET /_synapse/admin/v1/username_available?username=$localpart ``` The request and response format is the same as the [/_matrix/client/r0/register/available](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-register-available) API. synapse-1.53.0/docs/admin_api/version_api.md000066400000000000000000000007311420514467300210020ustar00rootroot00000000000000# Version API This API returns the running Synapse version and the Python version on which Synapse is being run. This is useful when a Synapse instance is behind a proxy that does not forward the 'Server' header (which also contains Synapse version information). The api is: ``` GET /_synapse/admin/v1/server_version ``` It returns a JSON body like the following: ```json { "server_version": "0.99.2rc1 (b=develop, abcdef123)", "python_version": "3.7.8" } ``` synapse-1.53.0/docs/ancient_architecture_notes.md000066400000000000000000000055211420514467300221400ustar00rootroot00000000000000> **Warning** > These architecture notes are spectacularly old, and date back > to when Synapse was just federation code in isolation. This should be > merged into the main spec. # Server to Server ## Server to Server Stack To use the server to server stack, homeservers should only need to interact with the Messaging layer. The server to server side of things is designed into 4 distinct layers: 1. Messaging Layer 2. Pdu Layer 3. Transaction Layer 4. Transport Layer Where the bottom (the transport layer) is what talks to the internet via HTTP, and the top (the messaging layer) talks to the rest of the Home Server with a domain specific API. 1. **Messaging Layer** This is what the rest of the homeserver hits to send messages, join rooms, etc. It also allows you to register callbacks for when it get's notified by lower levels that e.g. a new message has been received. It is responsible for serializing requests to send to the data layer, and to parse requests received from the data layer. 2. **PDU Layer** This layer handles: - duplicate `pdu_id`'s - i.e., it makes sure we ignore them. - responding to requests for a given `pdu_id` - responding to requests for all metadata for a given context (i.e. room) - handling incoming backfill requests So it has to parse incoming messages to discover which are metadata and which aren't, and has to correctly clobber existing metadata where appropriate. For incoming PDUs, it has to check the PDUs it references to see if we have missed any. If we have go and ask someone (another homeserver) for it. 3. **Transaction Layer** This layer makes incoming requests idempotent. i.e., it stores which transaction id's we have seen and what our response were. If we have already seen a message with the given transaction id, we do not notify higher levels but simply respond with the previous response. `transaction_id` is from "`GET /send//`" It's also responsible for batching PDUs into single transaction for sending to remote destinations, so that we only ever have one transaction in flight to a given destination at any one time. This is also responsible for answering requests for things after a given set of transactions, i.e., ask for everything after 'ver' X. 4. **Transport Layer** This is responsible for starting a HTTP server and hitting the correct callbacks on the Transaction layer, as well as sending both data and requests for data. ## Persistence We persist things in a single sqlite3 database. All database queries get run on a separate, dedicated thread. This that we only ever have one query running at a time, making it a lot easier to do things in a safe manner. The queries are located in the `synapse.persistence.transactions` module, and the table information in the `synapse.persistence.tables` module. synapse-1.53.0/docs/application_services.md000066400000000000000000000023211420514467300207460ustar00rootroot00000000000000# Registering an Application Service The registration of new application services depends on the homeserver used. In synapse, you need to create a new configuration file for your AS and add it to the list specified under the `app_service_config_files` config option in your synapse config. For example: ```yaml app_service_config_files: - /home/matrix/.synapse/.yaml ``` The format of the AS configuration file is as follows: ```yaml url: as_token: hs_token: sender_localpart: namespaces: users: # List of users we're interested in - exclusive: regex: group_id: - ... aliases: [] # List of aliases we're interested in rooms: [] # List of room ids we're interested in ``` `exclusive`: If enabled, only this application service is allowed to register users in its namespace(s). `group_id`: All users of this application service are dynamically joined to this group. This is useful for e.g user organisation or flairs. See the [spec](https://matrix.org/docs/spec/application_service/unstable.html) for further details on how application services work. synapse-1.53.0/docs/architecture.md000066400000000000000000000067771420514467300172450ustar00rootroot00000000000000# Synapse Architecture As of the end of Oct 2014, Synapse's overall architecture looks like: synapse .-----------------------------------------------------. | Notifier | | ^ | | | | | | | .------------|------. | | | handlers/ | | | | | v | | | | Event*Handler <--------> rest/* <=> Client | | Rooms*Handler | | HS <=> federation/* <==> FederationHandler | | | | | PresenceHandler | | | | | TypingHandler | | | | '-------------------' | | | | | | | | state/* | | | | | | | | | v v | | `--------------> storage/* | | | | '--------------------------|--------------------------' v .----. | DB | '----' - Handlers: business logic of synapse itself. Follows a set contract of BaseHandler: - BaseHandler gives us onNewRoomEvent which: (TODO: flesh this out and make it less cryptic): - handle_state(event) - auth(event) - persist_event(event) - notify notifier or federation(event) - PresenceHandler: use distributor to get EDUs out of Federation. Very lightweight logic built on the distributor - TypingHandler: use distributor to get EDUs out of Federation. Very lightweight logic built on the distributor - EventsHandler: handles the events stream... - FederationHandler: - gets PDU from Federation Layer; turns into an event; follows basehandler functionality. - RoomsHandler: does all the room logic, including members - lots of classes in RoomsHandler. - ProfileHandler: talks to the storage to store/retrieve profile info. - EventFactory: generates events of particular event types. - Notifier: Backs the events handler - REST: Interfaces handlers and events to the outside world via HTTP/JSON. Converts events back and forth from JSON. - Federation: holds the HTTP client & server to talk to other servers. Does replication to make sure there's nothing missing in the graph. Handles reliability. Handles txns. - Distributor: generic event bus. used for presence & typing only currently. Notifier could be implemented using Distributor - so far we are only using for things which actually /require/ dynamic pluggability however as it can obfuscate the actual flow of control. - Auth: helper singleton to say whether a given event is allowed to do a given thing (TODO: put this on the diagram) - State: helper singleton: does state conflict resolution. You give it an event and it tells you if it actually updates the state or not, and annotates the event up properly and handles merge conflict resolution. - Storage: abstracts the storage engine. synapse-1.53.0/docs/auth_chain_diff.dot000066400000000000000000000015131420514467300200230ustar00rootroot00000000000000digraph auth { nodesep=0.5; rankdir="RL"; C [label="Create (1,1)"]; BJ [label="Bob's Join (2,1)", color=red]; BJ2 [label="Bob's Join (2,2)", color=red]; BJ2 -> BJ [color=red, dir=none]; subgraph cluster_foo { A1 [label="Alice's invite (4,1)", color=blue]; A2 [label="Alice's Join (4,2)", color=blue]; A3 [label="Alice's Join (4,3)", color=blue]; A3 -> A2 -> A1 [color=blue, dir=none]; color=none; } PL1 [label="Power Level (3,1)", color=darkgreen]; PL2 [label="Power Level (3,2)", color=darkgreen]; PL2 -> PL1 [color=darkgreen, dir=none]; {rank = same; C; BJ; PL1; A1;} A1 -> C [color=grey]; A1 -> BJ [color=grey]; PL1 -> C [color=grey]; BJ2 -> PL1 [penwidth=2]; A3 -> PL2 [penwidth=2]; A1 -> PL1 -> BJ -> C [penwidth=2]; } synapse-1.53.0/docs/auth_chain_diff.dot.png000066400000000000000000001226731420514467300206210ustar00rootroot00000000000000PNG  IHDRp*{bKGD IDATxw\S?W 0Þ^ n;j[Qk+ծ_kmmý*TdYa$qQQ!ȃGrxss>EEQEQEQEQZ|PEQeP((ʠhAQEQA⃢((EQEQE( EQE->((2(Z|PEQeP((ʠhAQEQA⃢((EQEQE( EQE->((2(Z|PEQeP((ʠhAQEQA⃢((EQEQE( EQE->((2(3c`8J%ZZ܌ftkoG[rH$P* --]]hoimi k뛖XZ `i [[fǃ%x]]hjR=s҂tvB"\uJ AHznMx&5ak r㩳\pp'sl%Riw>kw[?ojRR)d2u=#ݴ񦇚ffptTg&չܛ[AS"RPWuupQ_X =em[[]67-@Tk+ *٩6\\nn@yd QWzB$Bm-! =+up:anQ/Ե47ߴfMd{s:55Lֽǃ|ã; P"QSCccϊBշ>~MCgo%(hnV4]&S=v OOuJkgX,L"TWB!! 55`aWW7m.S2 jMM"ilT*b1R[lV<=ܜ$TT@ 먬@YW>_L gƘbڸ¥馑kC]NMMw?nfj~~QJԹ]Y}Р~m//ug 00  ;5_ \t/n!(+iܺ7^^M/iЏtu4PP)R Cv߂0t(iEbT*\\Wշ|>|}{(??x{K bRաAw^P33#$ Ap0;nr+WE0G=$6v̵uu7[Lz39:FHsg(ŇX|磠(.D2Dd~2-32LPEsii0DD * QQ#"'99Ea!:;ͭ{@=?I^RbUu;8 :Æ!&Æ!2Xdg3T=Dެ2__zun36Sfn!!=:b⣬ /"+K]s3HuC@}zyy((@u588 2Gb"M;ME[23l䠼^2=ӭj(S磣 ða>G#:ZןғFdd #C̈RaPPY!7WD."##0Vhh@f&23q"23ssDGhDF0PhjB^ |䠣*$1 6vP瑞tB/FCںTD=?DSlmѣQzENMI ӑt@Hs!.]](,TB{;0j0f y⣡gi:N!CRSA@AAwiX\ 0'b/$1PTV?Թ]WWWLik⣩ 'Na8VbdLI䤓(J48sTbH̙'!7),Ğ=ؽ%%psøq<3fН]y9N8~ǜ9XƎl`P={gjkS~Çqru=8)ǍGߏs`D̚3榫qZ[ٳ37vdSVGj*JK9s0w.7vXHMhmER~ >G^۱w/jjs1w.BBuq0RSP*1y2ǜ9<ŇRcǰmx1e8u AŘ8Kb Mp8<=rBpNVg'UW!*y/Xce(2RSq#.^DHܹ7vX.!|9 1F(>֒'ބ"cǒ'mmjljqt$+V+Wk/aɴiP;&J?ZZ$<dHD4vLTSC~8;ss2w.9sQzS[K>6<09rG!W^!VVݝ襤DQQ[GM#H::?IyMRZj(C9}̙C8I'*ҵkkI֬!2OL!;ᚾC ‚&RLRI~DG̞Mrs(d&Ill;FcDCq13X$!:eht|1 ڽ?Ʉ  UHGkȘ1‚ FH,#"/d;;;z5H elǏbnN>m#?IɪUJEo'NN$0;fhjvbgG""HVCTLٳOrn G2cGC *ټX[wǙvFBp֭3Y Rtǎcǎ%? кNm/_={NVv]vdUbab">ӦW_qT(HNs琕8#`_̈́{"2'bfmm1}5kpqNvgzm ɸt *ܾX 矆s/_~ 8o?hLaׯ{yymڴzY뛛'|{,?{,ùrʝXWWqƉ'\Rp…_+ɽswGj*6o%KLP*1gvƯ5U` B͎9[y[zwvv~666QQQ6mbVHo77{:ƎŻg$IKK˪UxV{K*ܹzw4 D++F?SSScbb\npp? *444..@iiqVZwhG[W^V[[ﻸxzzٳ@hhf@ϙ;w^Irr;8::Xy;v,]򔔔Ç6dcy#wbbbV^}5x%6 ZTX ᩧ ^={qww饗}yUuѢEl6;,,WpK66XVKK >cin^|~^^_bbfarߣ ))^v%r2 7ԬnݺBs=gkkx, RU;vpppj*ݻw{xx;w{nBȶmƎ[ZZ*gΜf!˗/W(ÇٳG*9sٹs({5fW_|rssرcrH$?~<Ç3UT+Wܲe{S=7.88'xBR}w!:Ay͛{Nń%F{s@ ;fggw֟~fr?/6fh/1Xz%lJA>j4w^^^ /LtΛ>#^^O&=}fڵk_PILyf|''[r>VVV7ofpߟ >~WMP!o&*_|@(2MزeK,JƩϞ=[{aggi!,>jԩd"4L @vRV\y?qFr?7!?R<ݽһ8_ݢE vUU3Lrz-c# b.ynX}ݜ9sqqqFꫯ:;;zWWWLX@yyyWu/`Ϡ5lw9oUZZY _|^*r?0J5 ޾`d)w40s[*>}:))?_fm??:ʹx}T*?k׮Xk׮oak&aB//;5:u}o̾圳Kn}_}ƌFڽ{fW\/ﺗ80pNoi۞=(+3P[<1/̗KuMM 󢡫~뭷| -- |(}7G|Es:mKKǏ5*..裏4O,€:o*>F'l{6mچ 4K⋥Kj''';w|ᇵx<oƝ;f̘o>[v?c=~p+++&-zw/q_](/= ;dlmm}T:F4 GGeBϤk?eff{w-Ə?sL!њ`},8*n;`FTۃ6tusܧzbm>޺\M98e |_l ?_jB//ŋ߿YŒe)[1f~a}}}kk믿f͚aÆxwygMMMKK˹sz-M+2O>|ׯ^qk=fJyReX޽{ fۮB5N'˭8Cƍwhlļyh~66h翶P>>>?#P(H$O?yzÇggϞO4, & SO! v>vWsfq HJ 13#jllLNNNHHqR駟?^.ՑU*UuuŌ3nNfٽ+ɉ鯏>"vvTM ߰a?nݺ͑Lx?xuuuMMӧM|џo֎9ya{Nb46 ??rsUUU|>g-))inn/cbbzI |@@,>T*2{6qu!!!3L/xyyiJf111[K[[)S\|Y!CXYY1ĉڭKׯY{yy}Ƿ&Mz!_[ךw^ۮА?5N;w=2x̘1>vTliXOID6vv8En3g!J%YXZXr)7)#8t萗ׯBɓ}Y#6\ib3<013#g2kMiw]>p8'7d^%qqƆl`%@WbeE֯X|0^%=Dk5yyy8(wWk֬1I$ $<JE6m"66$6C@I\N@7E)SA,@3no'kk2b]BJEl!ҒXA*+eɉۓ>"ZGR2iҔIP*ɏ?bnNV g.\ Æ6,X@ʌ e$dzAllȚ58C*%6??baA.5)SQRB~''zO1'Hb"aO KxP:E~{#Ӱ O.-#2V7ߟpH]ڽIn%aa %7n)0dɸq"^^d:";&}:x FRRH[| y{ٝ4t($54W^!<$ɺɣw,Bȭ'Uz:mCj*0s&U I=8r9{OJ1c.Ŵi^օ ظ{Ř7Fd8r;w!8;lЫJDZq#~|>.OܫP}҂};NF` ^|Ka`alߎan)S0s&w+eZ[qoXַ IDAT=7mWs`\$$*TuvQaa8$''aaa 7cN ܹ;V:T= BXӦB?կC :q80jLĉHLyWOJ\:'p4 31kRT^RSRc Lpiñc8zV$%a\<<<T@j*EM "#1}:NbAfq(cP*1e Ypp0r`)>4q(~'OB ƌĉ8ʀQ\SpΞEC\]1~<}3faTdgc;rsaaѣ1mNEL X:;Gq5f fSOWkpTHK޽w&`TL cGݬ OsgMdC[y9ΟGZ~ B!lmx-"BOR}' /ii8`cQ0y2&OFlLX3gp~55GBFƘ1=VVƎ$ 3S/A*E`:M38~'Nq471\{ %u}:;1cƎ=H=Dq1Jxz"!#F :wm#?yyz)nY"1 5 033v&NBv6ΝCZQ[ ssc(aLE*E~>rrp"q*b(`MB ӑFX[#!IICl,耟H$Q`f($L77c+C=%dfEdeA {{DF"* QQDd$=G~> 7`ؖ5kr]}Gqq1vZEշB尶FT S"#akk(MH\uWTqq=F!)i<&HKCFJJRCL:R;cGjs;; NNHLĨQ= uA"Ai) "A$ 7^dv EE(/Gy922ldС=_ለ@` _ggG;CQRB\.5Gh(I.GUQXN5;yCCBi)]]]`[tχD@KӁؒ[UUee[i)** /|| q)@*@33/;^|vpǏzCCCeeekk+stt4C UU\,-??~~︻PUJuJ%l"$>ASR<}tJJ 7̯\AI M=T!t7B!!  Ap0BC A@,>nRA @Y]SokP.Jnnps \]WW Φ?kkCS  DÍ T<Y">ϺsRYY|||0jjRW!ׯB=UWC. xy|><<>wq" Gm:kkQ[ RoСNؿu[~΋/y`~ׯ*XZ|>3Ýamm_>(֤4"jjԩΰW_EPBC80uu/UU;:ǃx\.lman{{p8pp}2M^r8=ooGWWCBu=V(hiJ&ThiBVHhiAs3ZZԷ&C`X[E9quU ??Ә|{{{UUH$r;k֔ <555DE46v ptTqp%9ss٩roncӛ!3V"BfhkT  :;܌&ukp >_}Gg p}) ZCP]d3z] ݯ}b۫sff`aBf=(MM;P( @&T6hnFggw>k'zMR( cfcKtL2ݏZ@ plssʪbnGsu8WL& w-AZ[[+**lYSS76޾Od~vv9\mO''cEv s\2JwӳKQ;&DtvS;:ˠ[NN~0 />15 Nٹ|7E@=42@*ΪZmvsj***Z[[5]SSPL2$6Mz3llS^jzdlrrr mZ|Pr|}}+** 4quu---RCa⃺#.U^^Ȑ!+---** `(芊vck…/}\T_X[[GGG߸q<333 S`!!!%%% y2ܹS{L0uPBs;'''@P^^^WWdoo>okk[XXa}Qv,+++%%eݭZ^`/kب->~annn_cccrrr`(J$ɏ?y˗/kj:x^IQAJ'E533rJ{{;4 +V16FJgݝ]VXX󃂂4C ,+00ںD.CP)JWo&;;[b̙ɓ&M7jK桡|>?:tfff ",,NNQ ukoo, z{9>o(tiEEEAAAS]\\\ 򢢢gꃖ~iӦM999t2!,ͥ>4iҩS\\\bcKJJ!!!!NNNѴ{wۡK.]G Z| ->JPD׼Jt3ԱaÆevvvW\|r``ꏂhz)Ei477_>??_uP->(~kZZZBBB83AHvvvQQQDDO)عsT*, ]d  Z|Pb#""JKK#EGSSӞ={낂BKK3fСjehEEEYYY!!!aaa Caaa> /l(JOhAˍ)+++**wvv *)) R~˖-׮], uL<وQ26lggWVVvUkkk|T*թSRRR8 5/^l2q(jeL666C(((LJQC]]SRR5 P`edQQQaaa/_rJTTC(PG||E/^h((hAհasrr"""BCݱc͛+**4 ϟo(ʸhA Æ +,,͍ppp5vhuzHNN~ghVS->DEE2755әO)SQSSso뚅[|yllB^X$%%eddGGZ.kBHaaaKKKhhhqqǐ!CEF3Ա~BYN:(N?]'xV}b \-|㢨`:6mTYYY~^ziذaF2:q뽼Je/9qĤI ҠR :::\.!$..QTއ:,X@'M:wzã2AITfggT*La( ջvڸq@ ,d:^~嘘#FQ&vo7oB&X^XXn7J9bS} J/^w^UZZz1]]]LII9yv u,Zʰ!S`FG>r֬Y=COlvdd$bcBXM";ʔ\vm̘1s~wrsϞ=SL D"6=yԺ͛7GDD/pn>R(CUQQgܨ7Rfii`X(pYf544X>k֬4XY.[NOQ@G>쩧<;v,<|Tz cByԩV8T@n:ZyPay/n())QTƎΝ;Npuu]jUii̙C(CzvttuH[;[-;MM]6\&K;ۻ]DT4K(UJC ] h324;K;3#ͱXpm̭,-yV<k[re0o/??188N~WV&ɛ--f&%RT.emmrEڢT);*E@C{U뵗rm97myV<6 @\s5׌kgigaf9Z;ޔV::jr|qEK@[fk=@:܂f+S55 MzxQQ11QQQ^Q<+C,Æ Lhh yy¼bfXˆkIu槟=tx䲪7JO?q߇2=ۧ5NneErbܪܪJ҆k2?ٟv}F6 *)MMb|b݌}tRgg'7K4\Y[[PSPX)'&+*+6vf쬬:RɱF?{])3JB .V\R{EET~QQ^11l=X_sĨ!c}cҝr4`;eYY+.29_Xas<† 򎢥)U2QY0)*DGxb`ۡ(C{Aɯ?Y|ԕSgKζZm2؛AXqL65p͸6iR#fƎ .B"##N7R~'O^إnԐQ @ A1aVeV{g;ϊPC&M IT(W!l)8Vӄ &:&3FJK._`6VL<-bZ{떟/HCCUAu£'OQG[gЉC'2j+4sReO]9ufǤIC'>;RFšC{.Inen4$irac}c騦)*(>qⓍ퍁ӣ>gF!\ȑ#CaMK{~+uW\l]F4frxxcDR̩9Q|Dщe]ӣ?L[AE7Glׅ].˯wu9lٓ'{T)H0 IDAT]޷?{Q?;n3 7ɮ**==]T95he\؝{~a05'}"10V؃T.=Zptù:b}c{bȅ~2l}[o=s'sv'bÖ[ qQNܽzj]]fkloyas[ k #<#rva> 4e,r3?_@qxJƾx̕(>N~NT2=f c^x8aZs!zZtXB@BG ?:Ѯ ]# 30)#-5\Xckf1(HNND"7n|>8^t|1>:o2]]ӿoiYf=*ϓI|ԝ^G>Ty)oFJ-@PQQgg3:F'M՚AFoO鯟6u4.gQI{Q&*[coN}X"켰pvزxЉkҥK9leۗğ=ݖPB&}֎ ٭\c>ihuOI;v;>/_={N]v]tbXG-.pϰjeii "|v Oq) y\2b]|YP-@{_XXX<<}u$IAA#lmm%KDEExK$O?dՇViΝKOO/++Jr_~UTE3WXm۶@do6!~Ud/-2Q/>Dev+Vxyyyyyi]>j{r PGGG/}\.^{_j/Μ9 Q|Blv~~~?bWlb/c*>fddy rvfaTwB^O /voP*aaa%L%ۖ8\Tm(Ŝ/#t1Ϟ=CظKY,Ś5kVYY/4Kz-L?())Yj@ >}sfffBu͡`\?gݻo;v())Ytf5z0Fz{lC˧GOUDl[[ND҇˕7S|&ᙅ#< CuѢEl6;,,׷{C&-?<ڢ(tk="8ɜݙ S"W_;v,!رcvvvnmm駟lll.oܸ1m4333HDijj3fK{{f%֭d۶m;vliiX,9s&=z4;33ۮY$?ÇT+WnٲER-T;7n\pp}]oo\y<ޭ#^{ܼk|a>^٫gu挌 @pk׮Zƺ&{&r&DEEx!/ EVRٻﰨqCtPuc&DMq[b4lz&DibVEE"}f:qɀ Hgs=/xsOqrd:e@r'~:N?9{ׯߺuh֭[o>}zÆ &M:~ʕ+绻9r$55U*zyy1L@۳b\XXߙfϞ_<3 v@MMN#)00PR]re.y7@UU0Pon?݂e~Ѿì Ã?:n֭_}cb esB+ШsJR 6Ɂٳg{m$oȾi$#W^[o)JL|GڵԩS˗/fhhh= /ҢErss'O_Ϙ>?r^<Ś9sɓSRR%`I2]ў"s>7eeeNNNC:1&YC'1W_iӦ^ۭYuBjٿ$i!i jIᓬ y*--NWZ_~Z~}SS'|rڵrZG_bN80,X'x<6M^ 9#Bo&lٲaOV+) ^iZ6WR\T*tZ/(4 kT3gfUye h""w/Z?fR?Nw r4Y11Kw9p8ﻇŋ BHpySGL>ey@ /0PEEEd*~W;pLhѢL"ߥܹsCBBL?{{{?S|Abbb[[EsrrLFP`0-ZRzW^R=bRPWzw~榦ϓF… "h'yם6:K^/X KV;vϦYエ,BK( np~J˕k رcd'[G<ýΐf'LMi//M6-l='{ڴi/r`~'ә{49pTWW~sr86m6Lfyڴi=gڴiS{<%% [նֆl,Sg^]Ko޼9Yz&Enu 9q<%+ޥZ WjM>zz.S 1 <4K=e˖ fς*7HX94Vy%_VVv ӏb… Ø \"=& fW w',j#4f Z^g}SojZńz\.wӇ_x:Z:u͛G@^3w- QPPPQѝ.h4sε 8Qh›_t&lVxNVuYh1Nƌ FgF~ᇀӧه~I|233z)`{m>Kht BĥKznvڰSjnv.<睿8@h,GA%v}}ӑMM&KDŽp}^N\-ww{*T*ϝ;sceekFr/\?PKYh_=O[Gܚ#FE! + 8Ŷ) 372og s˻ /ۂI$SR݃n޼9ydr(m?lO\9ܼ.cہm!yמ {\)k61#B`RoL-[n Q>1윸SG*j㬍nrB2׬bFҥKQQQёhl|wes5S`΍XT>җNX:FhZART~LfY2w2 ?9w e}4G8nܸ^oܸd2cbbRD*yw/ZN6Ie>4)4#׏ٓ{;7+/?=i&.#6d$'g'Nӗ?qhTڽFN-Yѳ)[*l0.]ݻ5V$M<ٌũt׏bPЧ

dAh؆|H=P,*rz(顥Kg1H/U^:DMkM{OO{zwhii)..2e HOR4??„ 5aW#,M^EcJ:Sr'mIAI'^5ySEwBCeäDk;01ýU~.$7fi҇N ImEE\.OIIA/_ ҒCBǏ n0?~<`.B*$gKffRJ>ii҇SBfdäD~ʹ( >>0ލfH o6ܼ)YPxSx\g1̸t2!Mыިk+m%j tf[Ϗ7|WxWxgxg^/֡|myOPR... 2-nT*U^^^BB@ׯ_www~ZV-~-DTR,*VsM"Týyx{{eڕUUUUŢqIUsUyc\#?yԐQ/B.mE¢[MnIn+*U:]BI;vE;y1߮hPut*;-yqThC8@ʧˁv`W|7 lW+Օqtz|FE x7xyŋ=zԩSjm#,n߾2^)/^tTLA 35}w*;{Fҩ:Crbv%74P;2vf9[:$mc+\-t;Jj }k?m/V3a9،;똞7r\iTyub.|޽ׯjc-X@VwǎK,Ynٳh4^r% `3|@sezCa0:U@D>JRt9B㲹@Ҹ,.pd:ظ$B/L>FdٿgsscK.-]c=C 'N>|XP@tt5k֌|Uzjll4i195MB.BvĮ5 :uŋM-w~Ǐ;c9rd,|˖-AAA<ӧ H58R~!NTTիWgΜi"~~͚5L&S?~|…AAA[l]RT& i8hzwE!d-|܏UV%''M<9""bڵ?㫯J@,ڵ+222---++|4c}\.\zrttl@!}d۷odҵkג"""Ӄ,Xpܹ{4C9_~}@@/^h̀e2Y[[PX,*߶S IDATBp:"i_G}n߾-Z]SS#H{ĉ0x<ի~iOϑ"N<|NB-L>Fd $ {W*VUUuvvzyyq8ÇgeeUUUv`2/^j4f'J݇zlii`D`!  .T*.]ZRRn:ѣ/ ݲeKMM#rqqF,K{?Bւ77qƵݻw ݻw444ڵ+""bΜ9WTf)Z"tvvFDD pBL>`Q('޺uS(u ׯ `4z)_7FRhsv CE|iii%%%&55?lhh8rHff&9=+++))+ɆQ\MM` vL&IBL>pp88Lv5PHzGϜ9S^^;t{7BdOiy,&!d?0@1a„*@ J푑۶m>ṣ>jѣs̉ٵkD"ApMZ2n!d?0@#BRCCCɧ0eee@Tjff#G>xr{EEŖ-[̙sQNw3֪G-!d?0@ffbbbڮ]]___|֭srrc]8.,,2 | 0a[QQQiiiRSS$7]8Fחi h4Y!p:"ccSkkk bܸqua*++ۻwߦ&FO?400pʔ)dgqÉ4B| swwOKK()))))WGLLΝ;G}Nŋ}}}7nܘk.du4h4<![>F[>fj"ԩS~On41%%%w8B!–dAd͛7o߾=px~~~_.CKFT*[>B~`,NxF@P(V-..vvv6mݻE"ݻSRRB]ƍ7c0@!//T:.Bawz}aa!Jxn:>_TTy^ _`0cBvd%,+11100%%%FHuxw) {.ё P4&!dW0@CP:::U*A%%%J2!!aĘL&pLmmΝ;CBB|>^ ` L *!lGvFSRRP(8yp!h4oYYY}]ϡQQQO>ڵkM@EEJJLL4/BhLHHpppdC<1d 7x#<<1FqtB&FcYYN jnn.))v 77uݸq T*VueD0 "\rRiQQ͎|*ԩSYYYgϞ5zd:99-_NB"jJ211|ru:ugdԒ͛7{{{DׯXzuvv~BÅJo0{@줤$VPP RpH$:sL@@ĮT*=p9sx<A!4TeD൷p8 bLlƢ|>smv1wիW/]\!`X|M77:vhxBLfҵZ͛oݺcZ8F՞:u ݲeKUU E!l)SX,f2 QYY)BCCM3 qqqgg?.\eyᬬ,>oHRxUV-[NBY| ͓O>y}~aƍdu-YdS"}xG?w{DDĭ[ϖyJu֭03_ƏOv *,i󳲲c}}}{gy&>>~$'G >vX>< |>_&%%W^^VqRyLjjݻ%ɑ#G233_>JHHHKK2ܬ!4apj__^ۋy}<4M~~Z&gF!))Y3 2nܸAT*:HRBݻNJnDv튌6mZVVB3L>瘗2*h4 a,:`0_v-:::%%&Ṹx{{WVVo.CE.s \ti1Q!_h4*HTFрB2Ý5"O.zN  l6l6[6]LgAnP(^^^F1888 JqªhƍwϝsssXȅcO?\^g1 E O~W@;j>AF=izbDpr''`0l]j;X !d'n "44D]( 9 "]y+0]H7;r_;|xw-HI9e T  Jj5tvV 2(Tv}ܙ ~~bCjTR3gEEE{{ĉ_jsssz]a2/1b1"_"Fs\nwf pf..@\G3E::+e@NPzSӓ#x{wUxS@waABm'*ܾ w|ԀTڵ}ǧ?x{q, /,,LLLuD" !6Əbc-aҤI6SiiBHKK`?)..6mh>/lkk#|bcyuZ"" - &N HNB>]t rɓc||l Au&N33fp8:ޔRBY,b2L&`xxxU牺)S5%"FҬ9`dp"\AD1 Rѐ]--´i0a- ~g䣡NӧYP*f̀ 1bcmVWʊ^ttd0$n@M\r%..CUɹMNjG5EE]e0 &›u;ԅ hl''3χ ,:v !40[$yyp4#df0k~, X ??Ck+DD…p!̚5Z X,VLLL߷ʴZmBBNgɓPS0s&Y[y9> j5…x1:2;VL>/BCaܮ[7F#ɓp<VDD +W⭆CAVӰ7nL4yjի Þ=pTT@l,\ +VXYg zÇMիaŊ0\!f䣾>@+!3s#ͅCA+ॗV#g4/^w1X\YY9uTM"֕dZt4: <sq#v Ar,|[o߂<<[$V*~ee Wv#??ѱd%%%!>>JACb"<$N9Z55C{;<ܭGBh}_(3@J TT޽P] [`1ٰ~=`4EPZj밺999]Jܸ5z ֬c_Zs!>6nf[XcC; * Μ}χ+n"C#BBv697qVݹVL&tO>lrr)=۲%"a2aZ(,ݻ 2~t:[a䣢&Owށ^2XgrdF @V|$%ANk%vaٹŲ!1~+WX*֮ x%x Ȁ#F T*u+vT&OY`60löm0oL 7ngqmVCb"|Bh,qmYk`7sB=aaa/-00_װ .]j`z뭃T;tizVb@ѐ?NK=sQ*a"xm1N{N`mhr֬+`K^#tnz^q2̀%KOk0)Gw?AFR__+hmm׿5rر_ Z=44}gFb~:k֬76N8OŅX0,XʀΝ;Dnmm=wZ61Z-1w.I\fcm'R / T7-[ Bc"(b>s:.Рhby<|<|w|xWJz뭷`ʕ*j溹?nܸ/쬫[f +frd{nJ?˅M\HX֭,b@.\hll$_| acm|m`Okv >Pᄈl)iM> 776k0EDDbzc?rT*i4ɓ'`ǎC:jHt:]TTԶmzi0bcc8^g2 .]DRo޼iMhfoK. BunnnMM8wPCam7;@m֨A]Kmm-k}>o``a>\...L&SכF7?~ƌ6l S[̘1f'%%]xlvLLLJJ ܺu+##u]UT1ck対X,ѻpk׮%Zj]*<@H4˔)Sm6nȞ}&M_`Rd}Je0w.,_n3k{﹧5j;ߠ[ưd,F#KlnLwwwRi4Je~~E`׮]ɓ'e2Çt:AO?4ڹsX,.((?~cCCA=^'"--ѣ*ܹsbHz Wq7o&bڴi4 ^x@1}tWWW2^222kfee sqqAċ/1#r8A?ܺ: \b_4ߞ֨AlLYƮa%g`z$NwFcdd?o_{O?ݳ!B⋦-䴘~RG r

>@Ǐ *[ я/D" *++_}Eh?sXMY soa=vij αCR CKKӧ_}'xh4[n%&&v^n>}ynܸaff͚k ?Ͼ irzL.xfzp@gĚNNu֯6ejx#ëb/*ՠVT(Je_/Ci_ !dBANNRV}P(cgNII9|y\.\ߟDtȑ'|rΝ+cǎAP(P[[;@0UUr90YMF,9gkkpoF#d쳐lR0P(JVn4lj2.\C>Pj{{ZT lR|DE /Ct&9gΜz J\NXH4uԞ[Mv֭/b׮]o/<@NNN0r E߷3g 2)5j5O֒V 3Z=X,9 IDAT% O>R5}>֨p-vCh c|1w0f4\AAA| y# R{+Wbq~j7dX/Ryyylllnn咍zT ~`zߟd^ۿ更4r HNw7|s 瘟z;ofwCT3j@RREʘ8_ᱶW `XDhWUB!|Ozr...EEERիǓdA>|/^, E"… ͛GNwBlݺU,<=ϯR _|QWW駟O?ussow9~xS=uL2ETy_m4Z> w;{ܹsCBBznٱcG Ey{{v6B`,ZP JHN:Ο?/ /\0.EXX_ؓdNDVAMk3nH [ )#{W[[[M{;v,11doݺ4hܳgc0111}gkVT|۽vyܹPGG P'L'&&Θ1;3n?Uցw{p8dAӦM ?prI~~~ϓZ[(bL-ʕ+%  zbD"!J~n탯Ilm'pv&2o,B$*1e JXbp`0x&PE./[l0{P< no'&M"BBh,??͖-%f"d2t ߟxKFhl,xz鐓3 Rܽ{7>^z鞻i47+&Lq}TT@F/0fG3Rd7F _~5 jj,[X7*k;dgCFAp,{G34<\lُ?8}є)Sz gK(.\pܸqRafv 99dP()9sD 'ZHNc,^ܘ6j^̛/b"h$>`23-#QXX8{ھ} XPM4Ryܹsaq*a@<4drǢQP q:p={,r~? ̓ڵPT> ۶yNB0mÑH$4mʔ)ØdD^x x5xEے~h} 5Əu@kNN> 2vK0I?(x=ߠd2*ey**ॗ`/1 ijYؿ\!32_ˇ ys𗿀EgA&'ݠPOÝ+z Ebb"mD7s GQ>:׿bB`$޽PU3a%p<|%9nnal`WO ŋt %vh+Wš50e <*4xj5< {@v6K/Uf:,&%$N?\]a (ۻ"8x !%6n+elϲiR gAa!ʕb {38x́?|QY+8xnބ0xXMVCfG Spܸ!!bX<#WQQQkkkjjŗB8x - .!)aiNB}=$'ʕVX!K>L !(+WW7.?<=")p > OX p!<$Lnw~/^RSLu 3o`̞?OïT qqx'IVO>L8yΜ!3N@ۄtP( 7.^KŮ)23aB:s\.ep)8yrsJĮ 3VYVS\ .Av6ӦAf&,YO%&2= PXF#Œ0iAt4h6p >\!#22`\F:Heee$==5F"p ?.@e%鐖bF?JKχ˗!'ʀFdȀ3!"t䣧NɁ  'j - RS!- "#1uχ6рJ822l\tJN<ցHu20ӳ@pC z(/T))]}4pvunv|djpp `\$(.^X2@x8L cO& ర0[b>r9tv2r!2ûk{LtP_]KJT*ppȮڞ &-Ɏ^ZyZSZ %%P] 88@XXWxx Kqjr9TWCUTWw}UU۠VCL 0~<$&l7oM:>GKdPPJyÁ޵=,ll[tWuSͯt df+"4Z/ʠ **/LB!..cmJ%P 44@S44DB!DܵoODxkX,K-n:;:]=0<Ш! CPPA!4"|QFả!4aFD!L>pm!bN!L>(PUUE B | {WQQqn30@vMՊbGGG[ǂB<0@v͛lB!/D"˽9cA!d6| ;+**tzllcA!dN| ;uMш\Bh#P(J}||pUs0@vGTVVV2[ǂB0@vB$&&:B/:.::G X#555>>>8Ba| {T[[fBm| P(tzJJcA!dY| jJmB!٘^v`HLLdX!alIX[B0@6c4]bbbmB!+نhjQQQ8!+عEEFF:BV6V{uNB݇0@VT*`?~A!d| ikk+..&"!!  L>WUUhGGG[Bf0@PVV&HX,aBBcML;>nnnbdZ'$;JKRRA!d{8<̃$ɮ\T*1@!D–H$a}gϞmɃJ? | ܹsϜ9߻~~~4͚!XPP X,Vrr2uD!>v<yyeL啞B^cȤRJyyy&LrHBƏ3y +l2.4+c'd2˗% ˝2e f!peŊ ؃ @###TW!]CVvvv^\\lzgg焄@ !=pX%Kژ|_ea7o4111)))y  L>'1Rkԩ>>>!Ш]IJ$G R]]bۨBӱX8\"!Pa0e˖~>}vr!DY,dXVVV666x%PXRR2yMM W(cXު100r jjj .d2 ҥK:ݻwd2.Ն갴TQQQYYӃZdp8^;P( Lw>|DbL6|ښN666W!^VV%–555&4uk־)mmm&ƍ/1+Ç\.OMM***aX+Wp8npzeggc/}k֬!-vY"k̦100rM>oiivZwww77X1+Dggg߽{R(oo>}ul6|& |򬬬˗/''' p89u#hnnNIIIIIwB;$$w쵐J>R ~{0QWW}M6-\P}tzzz}QXX...~N/70fhx?`hhcǎ+V٧-)))::qA]]]SSSKK@ D##ό iii}]nnC6mڤfʲ2E&%Ao?O<׿wޣG yc޽$88Ν;n 5#CBB8T*˻qիU[&::ۻZMsT>RSSmmm߿{喙vZvv@ `ٿL MC*޽ǧ>֭HXnnn=طo@ PuG -8 gϞ RI![۷oo?Մ>*0u9L7|"J}||bq~~y{ƍq)7R chheiiсceE*u{{{O:h``f͚~S/bիW={`?vtt9s#<<|/uӧOݻ_t2*XO\jjj׮]÷/^lii%Iqq={:)byOONxGBCC/_O&;Ⱦ>KK?JJJO8oY`,Lfiim6|[XX{***jǎe  d2"1ȼ&~MMիW[+֬dD"q1!GGGԴf͚cǎ;wbQQQr[*7nH---===^,(&>`~~5333-]A'h !mmɇ-X!l2R>d2ǎx"УGN>}՗~1SOE!-khh('s1o|@ \~jL [2}o:::.|ˊbMMM---|~`0ieeeee{޽–&&&;.WZER'Z:q BQR!D&-[^^`0>;RÇgfff__e{H$FrL&ÎXJ~駑mmmByYXX@!gyqξh""ގىb0~'5QJ jjj;e}}}Ϝ9SYYf/]:<GBա8%>RuuuW.++ 333#ϟQ(NNN؋hSΝ;;hkks8 #G(MrrrllGFF\\\h4Z||$ljE={lA7\.v|ʕK,Yn+Gblooٲe6l&0j+J]]]GFF_\._|###2^"&%%rdII ~!y6k۶mor `:(r$?lhhصk\z\\ٳg>|8O>p+ ݻ8&:!!!!!iZXX$&&&'' *% LOO|dTTJ#4IDATZ[[}}}-,,\:T(G/W\jQ.|}}T҃28qb*ɓ'tB{쉏tҖ-[p LBe!TZZqFX|???U1nݺŭ[NT([[uڵ :$+RHF!tM q.Q-\lٲSNEFF޹sDMCT>0_|ŊRuSo!BU[[{F͈"'Ovss۹sydd$vZ/^hmmgddrϟ?OUH N'u9B}wkjjjbbb.^ݽe˖U7`Nw .TUUX`jBabb˗򌍍CBB.\>Fwwwn޼dH _2۶m>>>Aխ5 F*uuu1̀k׺̅{LB&dff޸q@[[Æ zzzoքQ###9997oLMM!NNNNNN$I *L&+..D-Z~Ocf>ͭ  p8"qVTTr \]]W\fKf>jll|AaaaAA$ښdbX,sss Uw:%UUU<x>---;;;bT&ޞ1HUUUAA+//jllT(D"t􁡡j<--- ؃:H,dؼvvvZZZ*>^$***>}:FhFFFt:{LPd2L% =JcD244488(BH$bO |@с=f-\p4 X,e``_0Jxᖖ涶6@06>X,HD$L&S( b)ȈFtSS9Tc* Eoo/DRhJWAH$&LՅm6Q>T3r# |@ |@BآzIENDB`synapse-1.53.0/docs/auth_chain_difference_algorithm.md000066400000000000000000000117161420514467300230730ustar00rootroot00000000000000# Auth Chain Difference Algorithm The auth chain difference algorithm is used by V2 state resolution, where a naive implementation can be a significant source of CPU and DB usage. ### Definitions A *state set* is a set of state events; e.g. the input of a state resolution algorithm is a collection of state sets. The *auth chain* of a set of events are all the events' auth events and *their* auth events, recursively (i.e. the events reachable by walking the graph induced by an event's auth events links). The *auth chain difference* of a collection of state sets is the union minus the intersection of the sets of auth chains corresponding to the state sets, i.e an event is in the auth chain difference if it is reachable by walking the auth event graph from at least one of the state sets but not from *all* of the state sets. ## Breadth First Walk Algorithm A way of calculating the auth chain difference without calculating the full auth chains for each state set is to do a parallel breadth first walk (ordered by depth) of each state set's auth chain. By tracking which events are reachable from each state set we can finish early if every pending event is reachable from every state set. This can work well for state sets that have a small auth chain difference, but can be very inefficient for larger differences. However, this algorithm is still used if we don't have a chain cover index for the room (e.g. because we're in the process of indexing it). ## Chain Cover Index Synapse computes auth chain differences by pre-computing a "chain cover" index for the auth chain in a room, allowing efficient reachability queries like "is event A in the auth chain of event B". This is done by assigning every event a *chain ID* and *sequence number* (e.g. `(5,3)`), and having a map of *links* between chains (e.g. `(5,3) -> (2,4)`) such that A is reachable by B (i.e. `A` is in the auth chain of `B`) if and only if either: 1. A and B have the same chain ID and `A`'s sequence number is less than `B`'s sequence number; or 2. there is a link `L` between `B`'s chain ID and `A`'s chain ID such that `L.start_seq_no` <= `B.seq_no` and `A.seq_no` <= `L.end_seq_no`. There are actually two potential implementations, one where we store links from each chain to every other reachable chain (the transitive closure of the links graph), and one where we remove redundant links (the transitive reduction of the links graph) e.g. if we have chains `C3 -> C2 -> C1` then the link `C3 -> C1` would not be stored. Synapse uses the former implementations so that it doesn't need to recurse to test reachability between chains. ### Example An example auth graph would look like the following, where chains have been formed based on type/state_key and are denoted by colour and are labelled with `(chain ID, sequence number)`. Links are denoted by the arrows (links in grey are those that would be remove in the second implementation described above). ![Example](auth_chain_diff.dot.png) Note that we don't include all links between events and their auth events, as most of those links would be redundant. For example, all events point to the create event, but each chain only needs the one link from it's base to the create event. ## Using the Index This index can be used to calculate the auth chain difference of the state sets by looking at the chain ID and sequence numbers reachable from each state set: 1. For every state set lookup the chain ID/sequence numbers of each state event 2. Use the index to find all chains and the maximum sequence number reachable from each state set. 3. The auth chain difference is then all events in each chain that have sequence numbers between the maximum sequence number reachable from *any* state set and the minimum reachable by *all* state sets (if any). Note that steps 2 is effectively calculating the auth chain for each state set (in terms of chain IDs and sequence numbers), and step 3 is calculating the difference between the union and intersection of the auth chains. ### Worked Example For example, given the above graph, we can calculate the difference between state sets consisting of: 1. `S1`: Alice's invite `(4,1)` and Bob's second join `(2,2)`; and 2. `S2`: Alice's second join `(4,3)` and Bob's first join `(2,1)`. Using the index we see that the following auth chains are reachable from each state set: 1. `S1`: `(1,1)`, `(2,2)`, `(3,1)` & `(4,1)` 2. `S2`: `(1,1)`, `(2,1)`, `(3,2)` & `(4,3)` And so, for each the ranges that are in the auth chain difference: 1. Chain 1: None, (since everything can reach the create event). 2. Chain 2: The range `(1, 2]` (i.e. just `2`), as `1` is reachable by all state sets and the maximum reachable is `2` (corresponding to Bob's second join). 3. Chain 3: Similarly the range `(1, 2]` (corresponding to the second power level). 4. Chain 4: The range `(1, 3]` (corresponding to both of Alice's joins). So the final result is: Bob's second join `(2,2)`, the second power level `(3,2)` and both of Alice's joins `(4,2)` & `(4,3)`. synapse-1.53.0/docs/code_style.md000066400000000000000000000131221420514467300166730ustar00rootroot00000000000000# Code Style ## Formatting tools The Synapse codebase uses a number of code formatting tools in order to quickly and automatically check for formatting (and sometimes logical) errors in code. The necessary tools are detailed below. First install them with: ```sh pip install -e ".[lint,mypy]" ``` - **black** The Synapse codebase uses [black](https://pypi.org/project/black/) as an opinionated code formatter, ensuring all comitted code is properly formatted. Have `black` auto-format your code (it shouldn't change any functionality) with: ```sh black . --exclude="\.tox|build|env" ``` - **flake8** `flake8` is a code checking tool. We require code to pass `flake8` before being merged into the codebase. Check all application and test code with: ```sh flake8 synapse tests ``` - **isort** `isort` ensures imports are nicely formatted, and can suggest and auto-fix issues such as double-importing. Auto-fix imports with: ```sh isort -rc synapse tests ``` `-rc` means to recursively search the given directories. It's worth noting that modern IDEs and text editors can run these tools automatically on save. It may be worth looking into whether this functionality is supported in your editor for a more convenient development workflow. It is not, however, recommended to run `flake8` on save as it takes a while and is very resource intensive. ## General rules - **Naming**: - Use camel case for class and type names - Use underscores for functions and variables. - **Docstrings**: should follow the [google code style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings). See the [examples](http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) in the sphinx documentation. - **Imports**: - Imports should be sorted by `isort` as described above. - Prefer to import classes and functions rather than packages or modules. Example: ```python from synapse.types import UserID ... user_id = UserID(local, server) ``` is preferred over: ```python from synapse import types ... user_id = types.UserID(local, server) ``` (or any other variant). This goes against the advice in the Google style guide, but it means that errors in the name are caught early (at import time). - Avoid wildcard imports (`from synapse.types import *`) and relative imports (`from .types import UserID`). ## Configuration file format The [sample configuration file](./sample_config.yaml) acts as a reference to Synapse's configuration options for server administrators. Remember that many readers will be unfamiliar with YAML and server administration in general, so that it is important that the file be as easy to understand as possible, which includes following a consistent format. Some guidelines follow: - Sections should be separated with a heading consisting of a single line prefixed and suffixed with `##`. There should be **two** blank lines before the section header, and **one** after. - Each option should be listed in the file with the following format: - A comment describing the setting. Each line of this comment should be prefixed with a hash (`#`) and a space. The comment should describe the default behaviour (ie, what happens if the setting is omitted), as well as what the effect will be if the setting is changed. Often, the comment end with something like "uncomment the following to ". - A line consisting of only `#`. - A commented-out example setting, prefixed with only `#`. For boolean (on/off) options, convention is that this example should be the *opposite* to the default (so the comment will end with "Uncomment the following to enable [or disable] ." For other options, the example should give some non-default value which is likely to be useful to the reader. - There should be a blank line between each option. - Where several settings are grouped into a single dict, *avoid* the convention where the whole block is commented out, resulting in comment lines starting `# #`, as this is hard to read and confusing to edit. Instead, leave the top-level config option uncommented, and follow the conventions above for sub-options. Ensure that your code correctly handles the top-level option being set to `None` (as it will be if no sub-options are enabled). - Lines should be wrapped at 80 characters. - Use two-space indents. - `true` and `false` are spelt thus (as opposed to `True`, etc.) - Use single quotes (`'`) rather than double-quotes (`"`) or backticks (`` ` ``) to refer to configuration options. Example: ```yaml ## Frobnication ## # The frobnicator will ensure that all requests are fully frobnicated. # To enable it, uncomment the following. # #frobnicator_enabled: true # By default, the frobnicator will frobnicate with the default frobber. # The following will make it use an alternative frobber. # #frobincator_frobber: special_frobber # Settings for the frobber # frobber: # frobbing speed. Defaults to 1. # #speed: 10 # frobbing distance. Defaults to 1000. # #distance: 100 ``` Note that the sample configuration is generated from the synapse code and is maintained by a script, `scripts-dev/generate_sample_config`. Making sure that the output from this script matches the desired format is left as an exercise for the reader! synapse-1.53.0/docs/consent_tracking.md000066400000000000000000000162361420514467300201050ustar00rootroot00000000000000Support in Synapse for tracking agreement to server terms and conditions ======================================================================== Synapse 0.30 introduces support for tracking whether users have agreed to the terms and conditions set by the administrator of a server - and blocking access to the server until they have. There are several parts to this functionality; each requires some specific configuration in `homeserver.yaml` to be enabled. Note that various parts of the configuation and this document refer to the "privacy policy": agreement with a privacy policy is one particular use of this feature, but of course adminstrators can specify other terms and conditions unrelated to "privacy" per se. Collecting policy agreement from a user --------------------------------------- Synapse can be configured to serve the user a simple policy form with an "accept" button. Clicking "Accept" records the user's acceptance in the database and shows a success page. To enable this, first create templates for the policy and success pages. These should be stored on the local filesystem. These templates use the [Jinja2](http://jinja.pocoo.org) templating language, and [docs/privacy_policy_templates](https://github.com/matrix-org/synapse/tree/develop/docs/privacy_policy_templates/) gives examples of the sort of thing that can be done. Note that the templates must be stored under a name giving the language of the template - currently this must always be `en` (for "English"); internationalisation support is intended for the future. The template for the policy itself should be versioned and named according to the version: for example `1.0.html`. The version of the policy which the user has agreed to is stored in the database. Once the templates are in place, make the following changes to `homeserver.yaml`: 1. Add a `user_consent` section, which should look like: ```yaml user_consent: template_dir: privacy_policy_templates version: 1.0 ``` `template_dir` points to the directory containing the policy templates. `version` defines the version of the policy which will be served to the user. In the example above, Synapse will serve `privacy_policy_templates/en/1.0.html`. 2. Add a `form_secret` setting at the top level: ```yaml form_secret: "" ``` This should be set to an arbitrary secret string (try `pwgen -y 30` to generate suitable secrets). More on what this is used for below. 3. Add `consent` wherever the `client` resource is currently enabled in the `listeners` configuration. For example: ```yaml listeners: - port: 8008 resources: - names: - client - consent ``` Finally, ensure that `jinja2` is installed. If you are using a virtualenv, this should be a matter of `pip install Jinja2`. On debian, try `apt-get install python-jinja2`. Once this is complete, and the server has been restarted, try visiting `https:///_matrix/consent`. If correctly configured, this should give an error "Missing string query parameter 'u'". It is now possible to manually construct URIs where users can give their consent. ### Enabling consent tracking at registration 1. Add the following to your configuration: ```yaml user_consent: require_at_registration: true policy_name: "Privacy Policy" # or whatever you'd like to call the policy ``` 2. In your consent templates, make use of the `public_version` variable to see if an unauthenticated user is viewing the page. This is typically wrapped around the form that would be used to actually agree to the document: ```html {% if not public_version %}

{% endif %} ``` 3. Restart Synapse to apply the changes. Visiting `https:///_matrix/consent` should now give you a view of the privacy document. This is what users will be able to see when registering for accounts. ### Constructing the consent URI It may be useful to manually construct the "consent URI" for a given user - for instance, in order to send them an email asking them to consent. To do this, take the base `https:///_matrix/consent` URL and add the following query parameters: * `u`: the user id of the user. This can either be a full MXID (`@user:server.com`) or just the localpart (`user`). * `h`: hex-encoded HMAC-SHA256 of `u` using the `form_secret` as a key. It is possible to calculate this on the commandline with something like: ```bash echo -n '' | openssl sha256 -hmac '' ``` This should result in a URI which looks something like: `https:///_matrix/consent?u=&h=68a152465a4d...`. Note that not providing a `u` parameter will be interpreted as wanting to view the document from an unauthenticated perspective, such as prior to registration. Therefore, the `h` parameter is not required in this scenario. To enable this behaviour, set `require_at_registration` to `true` in your `user_consent` config. Sending users a server notice asking them to agree to the policy ---------------------------------------------------------------- It is possible to configure Synapse to send a [server notice](server_notices.md) to anybody who has not yet agreed to the current version of the policy. To do so: * ensure that the consent resource is configured, as in the previous section * ensure that server notices are configured, as in [the server notice documentation](server_notices.md). * Add `server_notice_content` under `user_consent` in `homeserver.yaml`. For example: ```yaml user_consent: server_notice_content: msgtype: m.text body: >- Please give your consent to the privacy policy at %(consent_uri)s. ``` Synapse automatically replaces the placeholder `%(consent_uri)s` with the consent uri for that user. * ensure that `public_baseurl` is set in `homeserver.yaml`, and gives the base URI that clients use to connect to the server. (It is used to construct `consent_uri` in the server notice.) Blocking users from using the server until they agree to the policy ------------------------------------------------------------------- Synapse can be configured to block any attempts to join rooms or send messages until the user has given their agreement to the policy. (Joining the server notices room is exempted from this). To enable this, add `block_events_error` under `user_consent`. For example: ```yaml user_consent: block_events_error: >- You can't send any messages until you consent to the privacy policy at %(consent_uri)s. ``` Synapse automatically replaces the placeholder `%(consent_uri)s` with the consent uri for that user. ensure that `public_baseurl` is set in `homeserver.yaml`, and gives the base URI that clients use to connect to the server. (It is used to construct `consent_uri` in the error.) synapse-1.53.0/docs/delegate.md000066400000000000000000000102731420514467300163170ustar00rootroot00000000000000# Delegation of incoming federation traffic In the following documentation, we use the term `server_name` to refer to that setting in your homeserver configuration file. It appears at the ends of user ids, and tells other homeservers where they can find your server. By default, other homeservers will expect to be able to reach yours via your `server_name`, on port 8448. For example, if you set your `server_name` to `example.com` (so that your user names look like `@user:example.com`), other servers will try to connect to yours at `https://example.com:8448/`. Delegation is a Matrix feature allowing a homeserver admin to retain a `server_name` of `example.com` so that user IDs, room aliases, etc continue to look like `*:example.com`, whilst having federation traffic routed to a different server and/or port (e.g. `synapse.example.com:443`). ## .well-known delegation To use this method, you need to be able to configure the server at `https://` to serve a file at `https:///.well-known/matrix/server`. There are two ways to do this, shown below. Note that the `.well-known` file is hosted on the default port for `https` (port 443). ### External server For maximum flexibility, you need to configure an external server such as nginx, Apache or HAProxy to serve the `https:///.well-known/matrix/server` file. Setting up such a server is out of the scope of this documentation, but note that it is often possible to configure your [reverse proxy](reverse_proxy.md) for this. The URL `https:///.well-known/matrix/server` should be configured return a JSON structure containing the key `m.server` like this: ```json { "m.server": "[:]" } ``` In our example (where we want federation traffic to be routed to `https://synapse.example.com`, on port 443), this would mean that `https://example.com/.well-known/matrix/server` should return: ```json { "m.server": "synapse.example.com:443" } ``` Note, specifying a port is optional. If no port is specified, then it defaults to 8448. ### Serving a `.well-known/matrix/server` file with Synapse If you are able to set up your domain so that `https://` is routed to Synapse (i.e., the only change needed is to direct federation traffic to port 443 instead of port 8448), then it is possible to configure Synapse to serve a suitable `.well-known/matrix/server` file. To do so, add the following to your `homeserver.yaml` file: ```yaml serve_server_wellknown: true ``` **Note**: this *only* works if `https://` is routed to Synapse, so is generally not suitable if Synapse is hosted at a subdomain such as `https://synapse.example.com`. ## SRV DNS record delegation It is also possible to do delegation using a SRV DNS record. However, that is generally not recommended, as it can be difficult to configure the TLS certificates correctly in this case, and it offers little advantage over `.well-known` delegation. However, if you really need it, you can find some documentation on what such a record should look like and how Synapse will use it in [the Matrix specification](https://matrix.org/docs/spec/server_server/latest#resolving-server-names). ## Delegation FAQ ### When do I need delegation? If your homeserver's APIs are accessible on the default federation port (8448) and the domain your `server_name` points to, you do not need any delegation. For instance, if you registered `example.com` and pointed its DNS A record at a fresh server, you could install Synapse on that host, giving it a `server_name` of `example.com`, and once a reverse proxy has been set up to proxy all requests sent to the port `8448` and serve TLS certificates for `example.com`, you wouldn't need any delegation set up. **However**, if your homeserver's APIs aren't accessible on port 8448 and on the domain `server_name` points to, you will need to let other servers know how to find it using delegation. ### Should I use a reverse proxy for federation traffic? Generally, using a reverse proxy for both the federation and client traffic is a good idea, since it saves handling TLS traffic in Synapse. See [the reverse proxy documentation](reverse_proxy.md) for information on setting up a reverse proxy. synapse-1.53.0/docs/deprecation_policy.md000066400000000000000000000025171420514467300204230ustar00rootroot00000000000000Deprecation Policy for Platform Dependencies ============================================ Synapse has a number of platform dependencies, including Python and PostgreSQL. This document outlines the policy towards which versions we support, and when we drop support for versions in the future. Policy ------ Synapse follows the upstream support life cycles for Python and PostgreSQL, i.e. when a version reaches End of Life Synapse will withdraw support for that version in future releases. Details on the upstream support life cycles for Python and PostgreSQL are documented at [https://endoflife.date/python](https://endoflife.date/python) and [https://endoflife.date/postgresql](https://endoflife.date/postgresql). Context ------- It is important for system admins to have a clear understanding of the platform requirements of Synapse and its deprecation policies so that they can effectively plan upgrading their infrastructure ahead of time. This is especially important in contexts where upgrading the infrastructure requires auditing and approval from a security team, or where otherwise upgrading is a long process. By following the upstream support life cycles Synapse can ensure that its dependencies continue to get security patches, while not requiring system admins to constantly update their platform dependencies to the latest versions. synapse-1.53.0/docs/development/000077500000000000000000000000001420514467300165425ustar00rootroot00000000000000synapse-1.53.0/docs/development/cas.md000066400000000000000000000040371420514467300176360ustar00rootroot00000000000000# How to test CAS as a developer without a server The [django-mama-cas](https://github.com/jbittel/django-mama-cas) project is an easy to run CAS implementation built on top of Django. ## Prerequisites 1. Create a new virtualenv: `python3 -m venv ` 2. Activate your virtualenv: `source /path/to/your/virtualenv/bin/activate` 3. Install Django and django-mama-cas: ```sh python -m pip install "django<3" "django-mama-cas==2.4.0" ``` 4. Create a Django project in the current directory: ```sh django-admin startproject cas_test . ``` 5. Follow the [install directions](https://django-mama-cas.readthedocs.io/en/latest/installation.html#configuring) for django-mama-cas 6. Setup the SQLite database: `python manage.py migrate` 7. Create a user: ```sh python manage.py createsuperuser ``` 1. Use whatever you want as the username and password. 2. Leave the other fields blank. 8. Use the built-in Django test server to serve the CAS endpoints on port 8000: ```sh python manage.py runserver ``` You should now have a Django project configured to serve CAS authentication with a single user created. ## Configure Synapse (and Element) to use CAS 1. Modify your `homeserver.yaml` to enable CAS and point it to your locally running Django test server: ```yaml cas_config: enabled: true server_url: "http://localhost:8000" service_url: "http://localhost:8081" #displayname_attribute: name #required_attributes: # name: value ``` 2. Restart Synapse. Note that the above configuration assumes the homeserver is running on port 8081 and that the CAS server is on port 8000, both on localhost. ## Testing the configuration Then in Element: 1. Visit the login page with a Element pointing at your homeserver. 2. Click the Single Sign-On button. 3. Login using the credentials created with `createsuperuser`. 4. You should be logged in. If you want to repeat this process you'll need to manually logout first: 1. http://localhost:8000/admin/ 2. Click "logout" in the top right. synapse-1.53.0/docs/development/contributing_guide.md000066400000000000000000000472451420514467300227640ustar00rootroot00000000000000# Contributing This document aims to get you started with contributing to Synapse! # 1. Who can contribute to Synapse? Everyone is welcome to contribute code to [matrix.org projects](https://github.com/matrix-org), provided that they are willing to license their contributions under the same license as the project itself. We follow a simple 'inbound=outbound' model for contributions: the act of submitting an 'inbound' contribution means that the contributor agrees to license the code under the same terms as the project's overall 'outbound' license - in our case, this is almost always Apache Software License v2 (see [LICENSE](https://github.com/matrix-org/synapse/blob/develop/LICENSE)). # 2. What do I need? If you are running Windows, the Windows Subsystem for Linux (WSL) is strongly recommended for development. More information about WSL can be found at . Running Synapse natively on Windows is not officially supported. The code of Synapse is written in Python 3. To do pretty much anything, you'll need [a recent version of Python 3](https://www.python.org/downloads/). Your Python also needs support for [virtual environments](https://docs.python.org/3/library/venv.html). This is usually built-in, but some Linux distributions like Debian and Ubuntu split it out into its own package. Running `sudo apt install python3-venv` should be enough. Synapse can connect to PostgreSQL via the [psycopg2](https://pypi.org/project/psycopg2/) Python library. Building this library from source requires access to PostgreSQL's C header files. On Debian or Ubuntu Linux, these can be installed with `sudo apt install libpq-dev`. The source code of Synapse is hosted on GitHub. You will also need [a recent version of git](https://github.com/git-guides/install-git). For some tests, you will need [a recent version of Docker](https://docs.docker.com/get-docker/). # 3. Get the source. The preferred and easiest way to contribute changes is to fork the relevant project on GitHub, and then [create a pull request]( https://help.github.com/articles/using-pull-requests/) to ask us to pull your changes into our repo. Please base your changes on the `develop` branch. ```sh git clone git@github.com:YOUR_GITHUB_USER_NAME/synapse.git git checkout develop ``` If you need help getting started with git, this is beyond the scope of the document, but you can find many good git tutorials on the web. # 4. Install the dependencies Once you have installed Python 3 and added the source, please open a terminal and setup a *virtualenv*, as follows: ```sh cd path/where/you/have/cloned/the/repository python3 -m venv ./env source ./env/bin/activate pip install wheel pip install -e ".[all,dev]" pip install tox ``` This will install the developer dependencies for the project. # 5. Get in touch. Join our developer community on Matrix: [#synapse-dev:matrix.org](https://matrix.to/#/#synapse-dev:matrix.org)! # 6. Pick an issue. Fix your favorite problem or perhaps find a [Good First Issue](https://github.com/matrix-org/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22) to work on. # 7. Turn coffee into code and documentation! There is a growing amount of documentation located in the [`docs`](https://github.com/matrix-org/synapse/tree/develop/docs) directory, with a rendered version [available online](https://matrix-org.github.io/synapse). This documentation is intended primarily for sysadmins running their own Synapse instance, as well as developers interacting externally with Synapse. [`docs/development`](https://github.com/matrix-org/synapse/tree/develop/docs/development) exists primarily to house documentation for Synapse developers. [`docs/admin_api`](https://github.com/matrix-org/synapse/tree/develop/docs/admin_api) houses documentation regarding Synapse's Admin API, which is used mostly by sysadmins and external service developers. Synapse's code style is documented [here](../code_style.md). Please follow it, including the conventions for the [sample configuration file](../code_style.md#configuration-file-format). We welcome improvements and additions to our documentation itself! When writing new pages, please [build `docs` to a book](https://github.com/matrix-org/synapse/tree/develop/docs#adding-to-the-documentation) to check that your contributions render correctly. The docs are written in [GitHub-Flavoured Markdown](https://guides.github.com/features/mastering-markdown/). Some documentation also exists in [Synapse's GitHub Wiki](https://github.com/matrix-org/synapse/wiki), although this is primarily contributed to by community authors. # 8. Test, test, test! While you're developing and before submitting a patch, you'll want to test your code. ## Run the linters. The linters look at your code and do two things: - ensure that your code follows the coding style adopted by the project; - catch a number of errors in your code. The linter takes no time at all to run as soon as you've [downloaded the dependencies into your python virtual environment](#4-install-the-dependencies). ```sh source ./env/bin/activate ./scripts-dev/lint.sh ``` Note that this script *will modify your files* to fix styling errors. Make sure that you have saved all your files. If you wish to restrict the linters to only the files changed since the last commit (much faster!), you can instead run: ```sh source ./env/bin/activate ./scripts-dev/lint.sh -d ``` Or if you know exactly which files you wish to lint, you can instead run: ```sh source ./env/bin/activate ./scripts-dev/lint.sh path/to/file1.py path/to/file2.py path/to/folder ``` ## Run the unit tests (Twisted trial). The unit tests run parts of Synapse, including your changes, to see if anything was broken. They are slower than the linters but will typically catch more errors. ```sh source ./env/bin/activate trial tests ``` If you wish to only run *some* unit tests, you may specify another module instead of `tests` - or a test class or a method: ```sh source ./env/bin/activate trial tests.rest.admin.test_room tests.handlers.test_admin.ExfiltrateData.test_invite ``` If your tests fail, you may wish to look at the logs (the default log level is `ERROR`): ```sh less _trial_temp/test.log ``` To increase the log level for the tests, set `SYNAPSE_TEST_LOG_LEVEL`: ```sh SYNAPSE_TEST_LOG_LEVEL=DEBUG trial tests ``` By default, tests will use an in-memory SQLite database for test data. For additional help with debugging, one can use an on-disk SQLite database file instead, in order to review database state during and after running tests. This can be done by setting the `SYNAPSE_TEST_PERSIST_SQLITE_DB` environment variable. Doing so will cause the database state to be stored in a file named `test.db` under the trial process' working directory. Typically, this ends up being `_trial_temp/test.db`. For example: ```sh SYNAPSE_TEST_PERSIST_SQLITE_DB=1 trial tests ``` The database file can then be inspected with: ```sh sqlite3 _trial_temp/test.db ``` Note that the database file is cleared at the beginning of each test run. Thus it will always only contain the data generated by the *last run test*. Though generally when debugging, one is only running a single test anyway. ### Running tests under PostgreSQL Invoking `trial` as above will use an in-memory SQLite database. This is great for quick development and testing. However, we recommend using a PostgreSQL database in production (and indeed, we have some code paths specific to each database). This means that we need to run our unit tests against PostgreSQL too. Our CI does this automatically for pull requests and release candidates, but it's sometimes useful to reproduce this locally. To do so, [configure Postgres](../postgres.md) and run `trial` with the following environment variables matching your configuration: - `SYNAPSE_POSTGRES` to anything nonempty - `SYNAPSE_POSTGRES_HOST` - `SYNAPSE_POSTGRES_USER` - `SYNAPSE_POSTGRES_PASSWORD` For example: ```shell export SYNAPSE_POSTGRES=1 export SYNAPSE_POSTGRES_HOST=localhost export SYNAPSE_POSTGRES_USER=postgres export SYNAPSE_POSTGRES_PASSWORD=mydevenvpassword trial ``` #### Prebuilt container Since configuring PostgreSQL can be fiddly, we can make use of a pre-made Docker container to set up PostgreSQL and run our tests for us. To do so, run ```shell scripts-dev/test_postgresql.sh ``` Any extra arguments to the script will be passed to `tox` and then to `trial`, so we can run a specific test in this container with e.g. ```shell scripts-dev/test_postgresql.sh tests.replication.test_sharded_event_persister.EventPersisterShardTestCase ``` The container creates a folder in your Synapse checkout called `.tox-pg-container` and uses this as a tox environment. The output of any `trial` runs goes into `_trial_temp` in your synapse source directory — the same as running `trial` directly on your host machine. ## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)). The integration tests are a more comprehensive suite of tests. They run a full version of Synapse, including your changes, to check if anything was broken. They are slower than the unit tests but will typically catch more errors. The following command will let you run the integration test with the most common configuration: ```sh $ docker run --rm -it -v /path/where/you/have/cloned/the/repository\:/src:ro -v /path/to/where/you/want/logs\:/logs matrixdotorg/sytest-synapse:buster ``` This configuration should generally cover your needs. For more details about other configurations, see [documentation in the SyTest repo](https://github.com/matrix-org/sytest/blob/develop/docker/README.md). ## Run the integration tests ([Complement](https://github.com/matrix-org/complement)). [Complement](https://github.com/matrix-org/complement) is a suite of black box tests that can be run on any homeserver implementation. It can also be thought of as end-to-end (e2e) tests. It's often nice to develop on Synapse and write Complement tests at the same time. Here is how to run your local Synapse checkout against your local Complement checkout. (checkout [`complement`](https://github.com/matrix-org/complement) alongside your `synapse` checkout) ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh ``` To run a specific test file, you can pass the test name at the end of the command. The name passed comes from the naming structure in your Complement tests. If you're unsure of the name, you can do a full run and copy it from the test output: ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh TestBackfillingHistory ``` To run a specific test, you can specify the whole name structure: ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh TestBackfillingHistory/parallel/Backfilled_historical_events_resolve_with_proper_state_in_correct_order ``` ### Access database for homeserver after Complement test runs. If you're curious what the database looks like after you run some tests, here are some steps to get you going in Synapse: 1. In your Complement test comment out `defer deployment.Destroy(t)` and replace with `defer time.Sleep(2 * time.Hour)` to keep the homeserver running after the tests complete 1. Start the Complement tests 1. Find the name of the container, `docker ps -f name=complement_` (this will filter for just the Compelement related Docker containers) 1. Access the container replacing the name with what you found in the previous step: `docker exec -it complement_1_hs_with_application_service.hs1_2 /bin/bash` 1. Install sqlite (database driver), `apt-get update && apt-get install -y sqlite3` 1. Then run `sqlite3` and open the database `.open /conf/homeserver.db` (this db path comes from the Synapse homeserver.yaml) # 9. Submit your patch. Once you're happy with your patch, it's time to prepare a Pull Request. To prepare a Pull Request, please: 1. verify that [all the tests pass](#test-test-test), including the coding style; 2. [sign off](#sign-off) your contribution; 3. `git push` your commit to your fork of Synapse; 4. on GitHub, [create the Pull Request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request); 5. add a [changelog entry](#changelog) and push it to your Pull Request; 6. for most contributors, that's all - however, if you are a member of the organization `matrix-org`, on GitHub, please request a review from `matrix.org / Synapse Core`. 7. if you need to update your PR, please avoid rebasing and just add new commits to your branch. ## Changelog All changes, even minor ones, need a corresponding changelog / newsfragment entry. These are managed by [Towncrier](https://github.com/hawkowl/towncrier). To create a changelog entry, make a new file in the `changelog.d` directory named in the format of `PRnumber.type`. The type can be one of the following: * `feature` * `bugfix` * `docker` (for updates to the Docker image) * `doc` (for updates to the documentation) * `removal` (also used for deprecations) * `misc` (for internal-only changes) This file will become part of our [changelog]( https://github.com/matrix-org/synapse/blob/master/CHANGES.md) at the next release, so the content of the file should be a short description of your change in the same style as the rest of the changelog. The file can contain Markdown formatting, and should end with a full stop (.) or an exclamation mark (!) for consistency. Adding credits to the changelog is encouraged, we value your contributions and would like to have you shouted out in the release notes! For example, a fix in PR #1234 would have its changelog entry in `changelog.d/1234.bugfix`, and contain content like: > The security levels of Florbs are now validated when received > via the `/federation/florb` endpoint. Contributed by Jane Matrix. If there are multiple pull requests involved in a single bugfix/feature/etc, then the content for each `changelog.d` file should be the same. Towncrier will merge the matching files together into a single changelog entry when we come to release. ### How do I know what to call the changelog file before I create the PR? Obviously, you don't know if you should call your newsfile `1234.bugfix` or `5678.bugfix` until you create the PR, which leads to a chicken-and-egg problem. There are two options for solving this: 1. Open the PR without a changelog file, see what number you got, and *then* add the changelog file to your branch (see [Updating your pull request](#updating-your-pull-request)), or: 1. Look at the [list of all issues/PRs](https://github.com/matrix-org/synapse/issues?q=), add one to the highest number you see, and quickly open the PR before somebody else claims your number. [This script](https://github.com/richvdh/scripts/blob/master/next_github_number.sh) might be helpful if you find yourself doing this a lot. Sorry, we know it's a bit fiddly, but it's *really* helpful for us when we come to put together a release! ### Debian changelog Changes which affect the debian packaging files (in `debian`) are an exception to the rule that all changes require a `changelog.d` file. In this case, you will need to add an entry to the debian changelog for the next release. For this, run the following command: ``` dch ``` This will make up a new version number (if there isn't already an unreleased version in flight), and open an editor where you can add a new changelog entry. (Our release process will ensure that the version number and maintainer name is corrected for the release.) If your change affects both the debian packaging *and* files outside the debian directory, you will need both a regular newsfragment *and* an entry in the debian changelog. (Though typically such changes should be submitted as two separate pull requests.) ## Sign off In order to have a concrete record that your contribution is intentional and you agree to license it under the same terms as the project's license, we've adopted the same lightweight approach that the Linux Kernel [submitting patches process]( https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>), [Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), and many other projects use: the DCO (Developer Certificate of Origin: http://developercertificate.org/). This is a simple declaration that you wrote the contribution or otherwise have the right to contribute it to Matrix: ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` If you agree to this for your contribution, then all that's needed is to include the line in your commit or pull request comment: ``` Signed-off-by: Your Name ``` We accept contributions under a legally identifiable name, such as your name on government documentation or common-law names (names claimed by legitimate usage or repute). Unfortunately, we cannot accept anonymous contributions at this time. Git allows you to add this signoff automatically when using the `-s` flag to `git commit`, which uses the name and email set in your `user.name` and `user.email` git configs. # 10. Turn feedback into better code. Once the Pull Request is opened, you will see a few things: 1. our automated CI (Continuous Integration) pipeline will run (again) the linters, the unit tests, the integration tests and more; 2. one or more of the developers will take a look at your Pull Request and offer feedback. From this point, you should: 1. Look at the results of the CI pipeline. - If there is any error, fix the error. 2. If a developer has requested changes, make these changes and let us know if it is ready for a developer to review again. 3. Create a new commit with the changes. - Please do NOT overwrite the history. New commits make the reviewer's life easier. - Push this commits to your Pull Request. 4. Back to 1. Once both the CI and the developers are happy, the patch will be merged into Synapse and released shortly! # 11. Find a new issue. By now, you know the drill! # Notes for maintainers on merging PRs etc There are some notes for those with commit access to the project on how we manage git [here](git.md). # Conclusion That's it! Matrix is a very open and collaborative project as you might expect given our obsession with open communication. If we're going to successfully matrix together all the fragmented communication technologies out there we are reliant on contributions and collaboration from the community to do so. So please get involved - and we hope you have as much fun hacking on Matrix as we do! synapse-1.53.0/docs/development/database_schema.md000066400000000000000000000171331420514467300221550ustar00rootroot00000000000000# Synapse database schema files Synapse's database schema is stored in the `synapse.storage.schema` module. ## Logical databases Synapse supports splitting its datastore across multiple physical databases (which can be useful for large installations), and the schema files are therefore split according to the logical database they apply to. At the time of writing, the following "logical" databases are supported: * `state` - used to store Matrix room state (more specifically, `state_groups`, their relationships and contents). * `main` - stores everything else. Additionally, the `common` directory contains schema files for tables which must be present on *all* physical databases. ## Synapse schema versions Synapse manages its database schema via "schema versions". These are mainly used to help avoid confusion if the Synapse codebase is rolled back after the database is updated. They work as follows: * The Synapse codebase defines a constant `synapse.storage.schema.SCHEMA_VERSION` which represents the expectations made about the database by that version. For example, as of Synapse v1.36, this is `59`. * The database stores a "compatibility version" in `schema_compat_version.compat_version` which defines the `SCHEMA_VERSION` of the oldest version of Synapse which will work with the database. On startup, if `compat_version` is found to be newer than `SCHEMA_VERSION`, Synapse will refuse to start. Synapse automatically updates this field from `synapse.storage.schema.SCHEMA_COMPAT_VERSION`. * Whenever a backwards-incompatible change is made to the database format (normally via a `delta` file), `synapse.storage.schema.SCHEMA_COMPAT_VERSION` is also updated so that administrators can not accidentally roll back to a too-old version of Synapse. Generally, the goal is to maintain compatibility with at least one or two previous releases of Synapse, so any substantial change tends to require multiple releases and a bit of forward-planning to get right. As a worked example: we want to remove the `room_stats_historical` table. Here is how it might pan out. 1. Replace any code that *reads* from `room_stats_historical` with alternative implementations, but keep writing to it in case of rollback to an earlier version. Also, increase `synapse.storage.schema.SCHEMA_VERSION`. In this instance, there is no existing code which reads from `room_stats_historical`, so our starting point is: v1.36.0: `SCHEMA_VERSION=59`, `SCHEMA_COMPAT_VERSION=59` 2. Next (say in Synapse v1.37.0): remove the code that *writes* to `room_stats_historical`, but don’t yet remove the table in case of rollback to v1.36.0. Again, we increase `synapse.storage.schema.SCHEMA_VERSION`, but because we have not broken compatibility with v1.36, we do not yet update `SCHEMA_COMPAT_VERSION`. We now have: v1.37.0: `SCHEMA_VERSION=60`, `SCHEMA_COMPAT_VERSION=59`. 3. Later (say in Synapse v1.38.0): we can remove the table altogether. This will break compatibility with v1.36.0, so we must update `SCHEMA_COMPAT_VERSION` accordingly. There is no need to update `synapse.storage.schema.SCHEMA_VERSION`, since there is no change to the Synapse codebase here. So we end up with: v1.38.0: `SCHEMA_VERSION=60`, `SCHEMA_COMPAT_VERSION=60`. If in doubt about whether to update `SCHEMA_VERSION` or not, it is generally best to lean towards doing so. ## Full schema dumps In the `full_schemas` directories, only the most recently-numbered snapshot is used (`54` at the time of writing). Older snapshots (eg, `16`) are present for historical reference only. ### Building full schema dumps If you want to recreate these schemas, they need to be made from a database that has had all background updates run. To do so, use `scripts-dev/make_full_schema.sh`. This will produce new `full.sql.postgres` and `full.sql.sqlite` files. Ensure postgres is installed, then run: ```sh ./scripts-dev/make_full_schema.sh -p postgres_username -o output_dir/ ``` NB at the time of writing, this script predates the split into separate `state`/`main` databases so will require updates to handle that correctly. ## Delta files Delta files define the steps required to upgrade the database from an earlier version. They can be written as either a file containing a series of SQL statements, or a Python module. Synapse remembers which delta files it has applied to a database (they are stored in the `applied_schema_deltas` table) and will not re-apply them (even if a given file is subsequently updated). Delta files should be placed in a directory named `synapse/storage/schema//delta//`. They are applied in alphanumeric order, so by convention the first two characters of the filename should be an integer such as `01`, to put the file in the right order. ### SQL delta files These should be named `*.sql`, or — for changes which should only be applied for a given database engine — `*.sql.posgres` or `*.sql.sqlite`. For example, a delta which adds a new column to the `foo` table might be called `01add_bar_to_foo.sql`. Note that our SQL parser is a bit simple - it understands comments (`--` and `/*...*/`), but complex statements which require a `;` in the middle of them (such as `CREATE TRIGGER`) are beyond it and you'll have to use a Python delta file. ### Python delta files For more flexibility, a delta file can take the form of a python module. These should be named `*.py`. Note that database-engine-specific modules are not supported here – instead you can write `if isinstance(database_engine, PostgresEngine)` or similar. A Python delta module should define either or both of the following functions: ```python import synapse.config.homeserver import synapse.storage.engines import synapse.storage.types def run_create( cur: synapse.storage.types.Cursor, database_engine: synapse.storage.engines.BaseDatabaseEngine, ) -> None: """Called whenever an existing or new database is to be upgraded""" ... def run_upgrade( cur: synapse.storage.types.Cursor, database_engine: synapse.storage.engines.BaseDatabaseEngine, config: synapse.config.homeserver.HomeServerConfig, ) -> None: """Called whenever an existing database is to be upgraded.""" ... ``` ## Boolean columns Boolean columns require special treatment, since SQLite treats booleans the same as integers. There are three separate aspects to this: * Any new boolean column must be added to the `BOOLEAN_COLUMNS` list in `scripts/synapse_port_db`. This tells the port script to cast the integer value from SQLite to a boolean before writing the value to the postgres database. * Before SQLite 3.23, `TRUE` and `FALSE` were not recognised as constants by SQLite, and the `IS [NOT] TRUE`/`IS [NOT] FALSE` operators were not supported. This makes it necessary to avoid using `TRUE` and `FALSE` constants in SQL commands. For example, to insert a `TRUE` value into the database, write: ```python txn.execute("INSERT INTO tbl(col) VALUES (?)", (True, )) ``` * Default values for new boolean columns present a particular difficulty. Generally it is best to create separate schema files for Postgres and SQLite. For example: ```sql # in 00delta.sql.postgres: ALTER TABLE tbl ADD COLUMN col BOOLEAN DEFAULT FALSE; ``` ```sql # in 00delta.sql.sqlite: ALTER TABLE tbl ADD COLUMN col BOOLEAN DEFAULT 0; ``` Note that there is a particularly insidious failure mode here: the Postgres flavour will be accepted by SQLite 3.22, but will give a column whose default value is the **string** `"FALSE"` - which, when cast back to a boolean in Python, evaluates to `True`. synapse-1.53.0/docs/development/experimental_features.md000066400000000000000000000036331420514467300234640ustar00rootroot00000000000000# Implementing experimental features in Synapse It can be desirable to implement "experimental" features which are disabled by default and must be explicitly enabled via the Synapse configuration. This is applicable for features which: * Are unstable in the Matrix spec (e.g. those defined by an MSC that has not yet been merged). * Developers are not confident in their use by general Synapse administrators/users (e.g. a feature is incomplete, buggy, performs poorly, or needs further testing). Note that this only really applies to features which are expected to be desirable to a broad audience. The [module infrastructure](../modules/index.md) should instead be investigated for non-standard features. Guarding experimental features behind configuration flags should help with some of the following scenarios: * Ensure that clients do not assume that unstable features exist (failing gracefully if they do not). * Unstable features do not become de-facto standards and can be removed aggressively (since only those who have opted-in will be affected). * Ease finding the implementation of unstable features in Synapse (for future removal or stabilization). * Ease testing a feature (or removal of feature) due to enabling/disabling without code changes. It also becomes possible to ask for wider testing, if desired. Experimental configuration flags should be disabled by default (requiring Synapse administrators to explicitly opt-in), although there are situations where it makes sense (from a product point-of-view) to enable features by default. This is expected and not an issue. It is not a requirement for experimental features to be behind a configuration flag, but one should be used if unsure. New experimental configuration flags should be added under the `experimental` configuration key (see the `synapse.config.experimental` file) and either explain (briefly) what is being enabled, or include the MSC number. synapse-1.53.0/docs/development/git.md000066400000000000000000000157371420514467300176640ustar00rootroot00000000000000Some notes on how we use git ============================ On keeping the commit history clean ----------------------------------- In an ideal world, our git commit history would be a linear progression of commits each of which contains a single change building on what came before. Here, by way of an arbitrary example, is the top of `git log --graph b2dba0607`: clean git graph Note how the commit comment explains clearly what is changing and why. Also note the *absence* of merge commits, as well as the absence of commits called things like (to pick a few culprits): [“pep8”](https://github.com/matrix-org/synapse/commit/84691da6c), [“fix broken test”](https://github.com/matrix-org/synapse/commit/474810d9d), [“oops”](https://github.com/matrix-org/synapse/commit/c9d72e457), [“typo”](https://github.com/matrix-org/synapse/commit/836358823), or [“Who's the president?”](https://github.com/matrix-org/synapse/commit/707374d5d). There are a number of reasons why keeping a clean commit history is a good thing: * From time to time, after a change lands, it turns out to be necessary to revert it, or to backport it to a release branch. Those operations are *much* easier when the change is contained in a single commit. * Similarly, it's much easier to answer questions like “is the fix for `/publicRooms` on the release branch?” if that change consists of a single commit. * Likewise: “what has changed on this branch in the last week?” is much clearer without merges and “pep8” commits everywhere. * Sometimes we need to figure out where a bug got introduced, or some behaviour changed. One way of doing that is with `git bisect`: pick an arbitrary commit between the known good point and the known bad point, and see how the code behaves. However, that strategy fails if the commit you chose is the middle of someone's epic branch in which they broke the world before putting it back together again. One counterargument is that it is sometimes useful to see how a PR evolved as it went through review cycles. This is true, but that information is always available via the GitHub UI (or via the little-known [refs/pull namespace](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally)). Of course, in reality, things are more complicated than that. We have release branches as well as `develop` and `master`, and we deliberately merge changes between them. Bugs often slip through and have to be fixed later. That's all fine: this not a cast-iron rule which must be obeyed, but an ideal to aim towards. Merges, squashes, rebases: wtf? ------------------------------- Ok, so that's what we'd like to achieve. How do we achieve it? The TL;DR is: when you come to merge a pull request, you *probably* want to “squash and merge”: ![squash and merge](img/git/squash.png). (This applies whether you are merging your own PR, or that of another contributor.) “Squash and merge”[1](#f1) takes all of the changes in the PR, and bundles them into a single commit. GitHub gives you the opportunity to edit the commit message before you confirm, and normally you should do so, because the default will be useless (again: `* woops typo` is not a useful thing to keep in the historical record). The main problem with this approach comes when you have a series of pull requests which build on top of one another: as soon as you squash-merge the first PR, you'll end up with a stack of conflicts to resolve in all of the others. In general, it's best to avoid this situation in the first place by trying not to have multiple related PRs in flight at the same time. Still, sometimes that's not possible and doing a regular merge is the lesser evil. Another occasion in which a regular merge makes more sense is a PR where you've deliberately created a series of commits each of which makes sense in its own right. For example: [a PR which gradually propagates a refactoring operation through the codebase](https://github.com/matrix-org/synapse/pull/6837), or [a PR which is the culmination of several other PRs](https://github.com/matrix-org/synapse/pull/5987). In this case the ability to figure out when a particular change/bug was introduced could be very useful. Ultimately: **this is not a hard-and-fast-rule**. If in doubt, ask yourself “do each of the commits I am about to merge make sense in their own right”, but remember that we're just doing our best to balance “keeping the commit history clean” with other factors. Git branching model ------------------- A [lot](https://nvie.com/posts/a-successful-git-branching-model/) [of](http://scottchacon.com/2011/08/31/github-flow.html) [words](https://www.endoflineblog.com/gitflow-considered-harmful) have been written in the past about git branching models (no really, [a lot](https://martinfowler.com/articles/branching-patterns.html)). I tend to think the whole thing is overblown. Fundamentally, it's not that complicated. Here's how we do it. Let's start with a picture: ![branching model](img/git/branches.jpg) It looks complicated, but it's really not. There's one basic rule: *anyone* is free to merge from *any* more-stable branch to *any* less-stable branch at *any* time[2](#f2). (The principle behind this is that if a change is good enough for the more-stable branch, then it's also good enough go put in a less-stable branch.) Meanwhile, merging (or squashing, as per the above) from a less-stable to a more-stable branch is a deliberate action in which you want to publish a change or a set of changes to (some subset of) the world: for example, this happens when a PR is landed, or as part of our release process. So, what counts as a more- or less-stable branch? A little reflection will show that our active branches are ordered thus, from more-stable to less-stable: * `master` (tracks our last release). * `release-vX.Y` (the branch where we prepare the next release)[3](#f3). * PR branches which are targeting the release. * `develop` (our "mainline" branch containing our bleeding-edge). * regular PR branches. The corollary is: if you have a bugfix that needs to land in both `release-vX.Y` *and* `develop`, then you should base your PR on `release-vX.Y`, get it merged there, and then merge from `release-vX.Y` to `develop`. (If a fix lands in `develop` and we later need it in a release-branch, we can of course cherry-pick it, but landing it in the release branch first helps reduce the chance of annoying conflicts.) --- [1]: “Squash and merge” is GitHub's term for this operation. Given that there is no merge involved, I'm not convinced it's the most intuitive name. [^](#a1) [2]: Well, anyone with commit access.[^](#a2) [3]: Very, very occasionally (I think this has happened once in the history of Synapse), we've had two releases in flight at once. Obviously, `release-v1.2` is more-stable than `release-v1.3`. [^](#a3) synapse-1.53.0/docs/development/img/000077500000000000000000000000001420514467300173165ustar00rootroot00000000000000synapse-1.53.0/docs/development/img/git/000077500000000000000000000000001420514467300201015ustar00rootroot00000000000000synapse-1.53.0/docs/development/img/git/branches.jpg000066400000000000000000002150441420514467300223760ustar00rootroot00000000000000JFIF*ExifII*1Google     -"Y !1AQ"aq2#BR$3brsCSc%4TdtD5E;1!AQ2Raq"3rB#b$4C ?03I%f0i(X* HDs?EFc8?3^c^yAQ5VGAk;=t9&gm޺e7uUj;?@+`coq˵Oxn;)-{D:|=(MMN_\$ JSh)KٟH_Xt^:dfK-k$:==6jwɧ __fEX" #g=.jji(&6kOgj]CutJJѧԠKO5ygI_4ۉiP1Q`JS/>sVmOuj?>lLCO4qeG!WJ .OGOϪߨW?n%` 37D}kTT~tJ dc&NY՟z?P"Z>%)\.}AGG+ f%,(TDܿ',]wΛ uy/G1dmYǐ0Xq0%K!EWH9g/6:?_9k,8ǐL\r(s_;ڥ O?LM Q9jh5M>C7nu}\YR,9 FsUҗPd ]7/5fR4aժe A1 6;0z̘F5\޲Rq10c.}j eC51y212o\MNIuL m2f"^c%Jz`Z.P92ZNrI2Xho?j'e3/>2Ǐwq 697,3[ ϩc[OG&R?ǬY3Eh|ۛ>qq2r5^e-nU٤xi&R@D36( M k"f8h # dCQbP(ê5(f e`&gBsJL(IY3U D P Y2a0)ZQ R3%ǶMsEB @IZ9f`-0%I̠`$J&5"&P0r#Xcf-Ŷ YLL42k"X GYDHķ( цLp."ddR·LqV>LNLW-';ӳұmZT. VTBnJL%2Ut"Sh1JB5_(!"-JäVd/0 0Yb<` b4@L6l˰ܕVDJ壀VWNO|ޘc82A uUݵvSFN@ъ vVfs)/8lL;wzhgɾGW6_gQ~B>ڋmdE}p1>ǹoUӫӮj o m{9cs\_Z1:p>_.qox|Y}OGNcoFN8ȧeRk;jm_F >C HܬsǤ?~ݨIٔ]7=)vMNA[nGy:5NMiwV{Rgvs83_yZv?e#Qvs#xT<1"u+=~OWK 4 8[}m@A#}gGfnzNKtޙnq/G+i~t 9Ar9eխ2]߰cOwzSVэm5>O]{9~.f ʬp%co庹}fzꗈg_RO_gߤӭ/WzhZ&=WwtoVI]zu[C(>X>σr@U-n`0X%C_5D+$`FLVP#(^':X G@@F% eil ǘ1 J:Rba(!$,\ L\q8DO3z,Q&9I(%#.FeɌ ЍZY\ KaX D( vH1oJz .<秺FcJg9O'_>?0 o:mΙf"9- WmV5bЫz9qeaidz2yN573Ϭtn侻wr5n=U28>|[ zql\*]\b tϬ K:l;2:iY.t>]@䜒NID|@5T_ҵjbz#amoۺW:?s7kMIJwt|f<皀Yb|;;CKZ++5: ]QqpKwJ88_4711=7ilg1ݏs sݫVéM*VTwg*E9@}1>g"|뻪h4NX@jY7c%kvخ[k xݱ='9-ڟ#ݭԦGVu!כV؆򟣩g'qG8v<[4ӿƍw>YihbtHH]"`qokNq?Fj:שfU͠# ϯ+2g_n闖ی׻Ovt޾V{Yܯv_ih)JRA֥U{6 zyϒSٽ4mpVQ>ґ?WF=kF>$-Zn|ꚮut |4&'?w}=ڽ'ub.?aY .}nwetVVmê#=zҴikRJWZEBFsT =$vVJ)bjTѱdyyOemN4i$1>3Nm^ĻzmSWYܞ@F#:OOWfj;NU-jna xgvVOZ*SRP VRPWJ1;Ff3ߛ;shۺf;>O]5ku"Q 8< uE4j4bpC)$ Pȟ8?&뵻;HASݟ}nK^ƒG8%r<9ohծh\Y=idő{7[5omy6)hDˣ uܥwxܤ MQ,t#U{8[ {{|έ*,^99E̵֕;s~1mzο5y;aJi+݊}W+:I:nuw۬k齫*iUUCl`#,q091$ͣϧu.^mon:wӊNW\~yO@!dy>w`tNt;D'JȞrVnv2jt.}m[5maQ#8fAB Nsek ˓03P؞C&k_ mji>YI m$WGGU,N]]nvNoKaH;[XyDTˉqs< GYݎ.NtU3׺I%,Ǟ8ndު:w{YnMmߛVʔCg>ZS'5bs^BWKnRS{%3^33<-$rO<9qgŚK13EuB$(,<(p;+TvQE)ݺh5RHAr 50V"Lʿkٕe£?w:]@ 2.ViG98\=>g3zg&179IM~Ljz'l΅Mx!j]Q²?ʯhjHRse8u*SNrO۸T5vXj-mW9e`T<6g+t]5j@0nq{zYO61;O^if?|j_rէM݋Zw'}hn.,ܛv7.@>|^;Yj4K+uC٨13轷]63_uT*v @sap1^F4.}P_= S" `-|o5Oڿ4kzk:}FMCERωcbs&&nsֽ\86RF32v{sUؚ{0Wimɱ*Ӕ[ϳY g?絵~oتjU ׄd$u;@f{ofӋN>d;~r7Ob}p?8篗^j;G+ۤvư75J-r#,dߋtݫm>=VF:E33_ܓתݲgWIwj#'8ju|u"Ս%wU>9|Jc3{!-V_C}w 8njէ2N:OkN%{Pe:NKٚWke(q,EUy$1:^x 6-M,:dc V,$ tK&ATn4q I [` ш)a&#.B~I8kp0H{տ狮 'x(*D@¨K,01 lNk~mThfRJ+K=mk!:vzZ` gd&r%>wt,k{_ӏ 9Z)mk9g{ն;>4z+ηTvٛc,W;^'oikՉ>ǻ_g&4|=캻/ QMF*fxVEOOӮ0'׾FׯgvŬf#Sb3+أ9=I/#A|36@j{GUk$itF _d]I>f{s%m='ڦZՋ{䳥urSyx oZS4\ϧnPk}L9 sL*5C).uAj56Vr798?HiQ+a~O^iK.s.$_sN,/ݗ%=u5Naj+MĮG'D;'HQN:Zm,9l2HOeWwt-ihTkU6>e$}}gaVrA6[j0R!TbJ3N֍qF,ms:e:nՠ &RWD`Q0H:CS5Lc_3Q(Ր=o E O!(s@JkcbYA310-Lr*p2%k $K",3Ij&Eb5Y&i\`GDR6%rXBP2#0Hj Xmrg|y)T>|R@U\,!(Ec62fȀ0̨ LЉ*c@S@P#I3@k4Y ܘOj(Bɗ2HD + L!0Ȉ,"&I&@`D VQQ =Ncdm @V"0(BʌX4bJbj:19tW|'{<{z;|[lX B"%1"pFq`EX4@N K @D"0Dz)B*ǘ0eDmG6Ei JB !24YK%# Fd& YyJfL*fV R%f%l E<ĬA `E`5 X\x5 Dz=@AL=%) M2̦hL͠^$".(3!|QX*@k9zzD twK^|]01>ȘF Dx@ $0c"DôSq<{"q;msEֶ8uzY.ZW>v57^ϢWnDTzK16B;.'wfc<H09~O_0:OsKZ%uSKfŬFsbݝmfL(SH5wrd)Rd [G9 }*A{e+*qzqIk T5l}Z6TZmax;~޻X:iGmT`حJK>3ܗcF3c5vuk_kCә}UtӥUPss;QX[rp7'=8϶r5ie@OVgcrT$&+g|?1gi53 8dc2w7wj5gt֣ pH=wv-Sf_i+MpzmDQzg\x8ݭ\@>H .J/h>9(r݀? |fp<7;0|lgWBWFkcuT쭄e >p1xӘl$Q@L%Be4>`al<,GW.(1g3} ep9:'R^O[[>}+*QN=a19?(qb0-hĉY"Peb,p54S%D00Lm4)DfH25L9"is"PCF 51%*XFD$:qK4 |;໮cԃ<>'fm ^#94u~uӽm_*7MfMot~#5g q=]JRzkoV;,'n(cU@ xO}~IJ-uli;zgskP'֙[,#'y_/ON i!t}C1`w`)s! @ Ad@IO9bJ@{c1 0!D,="uaz߷LxODF&Q (@88PXG"@/5lDa)C40afʼnF "P0#+%]0ebspĭ I*?uVp~ ^Y}OOFɔ[`RhF1 T{d+0$2A@18=\֋Gڍ;w'VsҷOD|Q뚫 te@JB&0b`P3DQIQ*P JDbX`l4j*!E T2SI1ElLjC 1 2ĭ,4!de P Xj%ǜb qX ,y j Th0sq0520 dx̶I߽>>~HuN孏_mi';4@y#Haԣt=Upr: uǰF9sQQ>qfjR(ꚚH}[AOPf_Z `N;ۦݱnGu 걝€@*AAc!G`P)X0$:凌 eD&29"X] \Fd@F0$1fIfmMuLl{c"8 w׀3pO;=Kj*Vb}M<mNgc̀#>¡f@A JcXE!LD+2Lp(@0`<5)aꬿh#_ ?AOTMV 0"U`D%fh&xHrH"JJe$#DHJ+eLx Va&V`2cUZB2CB90%bʄbJF!@(!O2@L`JY2#= pN?ۡvӘ[k[Gl'02I>X(hboԒ/ %[*xyu>PVDtm8vUzOf>&&35q4Տ'$DLHҊO.c $0@l'u;pרXd25 <mRNÓX9'X&1_XS7-zyb|;qn5>u/t/ɈƲL  pd8ȁ8 p cI٤X8?Jc q'5N2Q8Vi&ΙIDn1q*@J)LLyHAcC0<Q0P0*H#K BI1TɍL ADG(z@ ʋg @̂ec2#TB1" 퇰QyT䓎yr̤ls4xwTW`Y C`I:{)w]\Ew$n<0@ M5]GS5n[bx<{6O $~82fPBF>ȠX2 u!fP]FXWdo;T0tB:s*kin@1_ą9SauѽAU]vط$ pfPmB.«T$e#"YN/@^3C5"S*=E""&J8܁9sJt~[<pz=A:>FOzU7g1d^cձqL@e>Yn8cF)PB0aOY`"1fEsǯei`q;,Zrs8sUri4&H`eIYPL  9@@Vc"`h\"e$2(,q41z9m\UՉ6J WH3u "-ZD!f5cJd4PiDI(@E ^b0P,BV &d*0h1'{6<+XkrιvҫUYmDd#WgRe6*K-O sx~jυ5m,X *&`0#1C$J4@[,#0)g X#f͊eK ΁r7yWEZT{D`Q]:֠ZN9Vf0,KSj>㟨NNn=*#Ȳ_x5),|s/:&E=6/smVb#VeWqJ.ŶKu^s틨>_5?X*tP+ViG@1c,OGgkWšZK*u]#0d+Gm]U>]|~3N4WS"/}5#$-+ eL9+[s_-u`/S>z=FGq&GG}Vocc8 j6'?=_X.;~n{f`b>']M%v,XZي@ dخ'ejXrQ2p18ۯmMu+e*)+*|:;5-@=_{E.UYOsy:u@5O d=L{Y^L\(z$>_ ΃mr@\3vn;+ k9>~S_xk^is1tp܃v3vdx8RgdO}gS,`G(!(#PfV ,D%ȗ+^N=f*9&p&Q_s%̣ Ʀ1X1a4"HQ.dF  X @@rLk&@ t f eCF5"aeW#2@0 S+A#XqGNc9I  ,myUc߷w>C>61zmVB: "hKJ5csrOv`pOwxʰSd`@P{On*RP]pv ֧%Cm`vؖ'SOlXNLml5)ƹӪ|p <i :49;%Ɇ%A j$ D^  u-p{Rn~|yWt=H`]2[¥c &iSj͗(PU5ӑ/V<33öe#dұz}][YA'g<:ͪ }q-Jݲpʼn\LxկDs2~3""ª<|'[g{G,r~..ųs1ӒΊ8͖0>Os%YvmPWR U`㒈$qYXfz mZ[zNATYt%޼>xL=wN׽'OS:Nvcf%[ىXV8`AS+L`fwm,xsc}ƽ? ԥX31CWPrfiFݷ}"ԽR5U]@si b85Е3 zUJVOS=w15\ne+DX3K"qh4o`bET87XuyG=d7txCQ,gciZ$Km( 3M઺VXXTR7Yk0@%)Or L# e](='Y0V(R56k2Jo >Av7nv݅j]]5{ۖC*XLjNUNWd,K,TG]g ޤ;WP^v9,'AhY[m` ;bmaT1z q+T:Սb!<[b )Fޣ9͠[)}7"X6ʈ$`)fGiߢ3dcO!2 ߩk@|C1, UϹhsiqZs3v3|{G#{>D*eGYʿ)N^Y}kRwOK*PJ .pNW=ӸIg*r hIzϛƏ|}->Z"8Oa ,h#0F P1 @F0(đV ?^~8ݐ?w'O'#2XeIF@b j T_91`kA%Q S4HI:2T68p=9w׽DwX9*̿kgu'cq)2;=ghUV %`r~§fF z'7QY+a[>>NZzgǻT4:3PIAlݍ9kXR3c8$Fgc-.jNObX.WQQbck Fp3;kj.!eѪ"׮71'$yۏ@_'i$gv խr GB{C -(fWB[@4܀7|M6aGs q)hݱZ$bp$yI*V  |D/aVjkh?[fՏJ9#8t$U>3{[=3'Qە f@o]s>H`FARc#)SM?3=Nx.ۦ&x'>X2^Xu+Qpx j 3c"0`z٠5߹Rx\tQX=7nlz'n1P<#)X +I?9h%Y[:epF}kp@-#n}gf p{CcJd \M#Yi;"M^>ȝtW\_8GʳXK7)csmU/[dZzЩ64Xl_ip8ﶯ]Vk\m@o3=9Cev{{v?h<>y7/}>hkƣbVp8$@Ki\YiDrjrc؂!cӗ_ϻ9KCgwHӦQ`5 _#5I] ;/5[}5J6]z&sg;3xi^ulrz=DXx_ ~;QWU Msն>jZuC9vZ4?gէP6= r8f>zZzngm8'w@chynv6xuoe@vRswm݇ۢi[YH}IbT 356yf<׏?|s4uAS}U ;Mwtd?_GScgYv}#Q(e _șheY'Q[WwsMDuIڷO!@Ȳ)"ӌcn[pj+?3cv%"1?C9~=r~߾>i'T| d/7x@{aٝMY鮲z{˜5gyShU֍ZcڱG_/ZAg?aZs6>[vO1fz16Qe"q_Yh<0Ѹ/\=ygl 4^6X}83٘D.1 (*S3"8{/x~)&o rGz z])]P=M.g8j`uޱ}=J9B.9u9}}Vİ0!$AF:&f:8ϦʑgToq{f?ڝֵHjRnc\13<љڻ^}Doҿy8NVziYm8؁~hXT{L'?EBWh?~=>ɾu##O_eGst߳6GjJ?G&rǶň11=>0Q`JY( PkSfk3z<8#'! {Q҆(+U=G̨H934|U'ik|&Bj.֩fFwѽ lPp}aTWq1IĢ6x{(ǵcN3a~p:sH`˒cGɋ!)F,@{ f"p71=1>@zA!;Ա#in =n}UͬOy*/ f‹3ɝ~Vkq}`GȬZc+d ;|D4:K)kkZĶʻUV*,Z9Oa8NݪU6Pa>%?ebvup6jxjX<)N{ګ?_EDǮ;7rxsriNxbdtu( :ַiػǭFaXXu6zv9 b[@K3cѯ /Au&@Ps"?ovFæ=Rh8'r'SZ+`lQ# Xevg _ѷiF}g@#Q as̸&d -P EgH~08ݗNX`ٚk>63Drkifs2fE1^??9=g m^b֊fe&;MRP 2% JW x¦D3@14B BCeUYUԱϬ_5*V4.j+QǞ>WzhOA3լj ڋxY*F>>=dsY(mWN![8m١ϩ/"׷iWc}>ekS TFP*`ăIo X ª!\44ZdBVZ 1H110f`5Ƿxa6bA $zJG F:XEܣQT{ uw%c}]c/UvC, %^7bitk0RcAbs=d:Np9gn1c3٨~qlu'Iى(Js"&+8( L`ĂMY1fBB`2Lgd#5ѿiȜ^i_}؜&LMs1nlj6<pXkV.qbW]Kf#93anfqg;Uk t4멺$Tw)r'vzXVF*σvT7wG|׫꼳ko]ğ/\yHʚƮ#o.<2E\0\r45~>S)k!ێ1W'GlqkԞ=֛j_@ROn~6j9YvX;VH`,F}X "x^SkeToʭp BWU*dub F|`aSUZ*Z~Kykvy=zմ9LYI ='])z.^sZwywֽ,(XBmfر8o䞀N;ًSt51Wۨ,o߫C˞{oz8yRy 1Ar91n|_~O#<1z8SV}&?Wx7g^5Sp<-h'@ȝEGe>𬬯69N= DYkOWcǙiuP3-fjFUn$ goϒ&'xBw'3f;l Xg*@fdyv6Vhf = T?Ej9?=օ5*Q]AEp?{º95u[̈>1B}l+/'tRѮb P@-F"DAb )*8ݖ}?mlvS/{n|70,l㻧Mrx㧗VO|9>_T*ёzO۝rgIK j2SQzr5mu W: zN'bo]aZ>W~A\^=;4i)fJ5FmygdMEUد^v@Tq;^Z\1Jݬ v]Y(dnv//v_sr<;4i}!!EwkY)F23{էJ\gӧ,yq7&givEv0-B;c J![&}5ukZ$1b7/ggFj^XZڱ6py -;=R4JԺ Z&1AZWn-OGnϨ=G|gmuw7jl`>W=ϗfG64WWe6G}sۅtu϶8%R7l]y c[u}*G{_9WS55-++zᑀL܍gOJ%aK EH4r۳O wmN2 ")q/h JzU. ;xmfqq;Qʺp~K=tVkofSo^dwN;[:bPH "mG-qwDzϏMjL=uKJkխֶ#T-i0$nV{_i{SjZޫ{8-DfBWRP>/K %A 2%0d  )h zĢRP@j%+,@ښV SŮ+`Xv [8p3u5gny6k{0 8Uw[CljZf:SKo y8ٓ>;fQeɫJn{AaY*3-7y.J^ inŲ4-`2g+uvSrsT =IO}64nWJVnmd9k[TY-|*q9̹Qfu5H3,x8rg7{&`;C)>Ev=}5aUQQW π8 %UJ@GxJB@LQTD(up}>b2qm7+Sw vN'3 psv7b*Ofc\6VvԆIE4j Hc y&yF]ٴfLcmj|x䟉SJЁ%DYh2jE1358➳zl!CcuApOoVW˔>%B(Ȅ%3-`PL`A`8dJL+@u:JKg>s~&rN&8 h eBh H`)@D bcq25̫Q31)V0!\@ndXy1*؍]ç >DuU;Ӣ]jU ;ēG=_㉿E^{wT>t}Ovz&Hcic~I+aB8e ?=U},oq F}>uv_V7\~?|Mڤc}c95]{u&xxkv-tfpEc= Xd6I3t7sbiy$`M(u`ܫ)#s eI@BD]|NgR>w+=s8[X:m7Q/ʄ]^h-NH#'91ڥ؅A3I'9׉Z:aWJۊM۔Mxִ]u>[\S]W]JAVۗ@7)bTsPT 8tf#i4@ HHnT[*ԐGtsHv@# .᝭FGB3_ +NƱbFeJ&nL\_Sڵ@%efʩtP{،zNLg>_N-ݰ@n8_ ??J}g07푤kP_E}d`gKAck'!vրI2s|3 IO2=oN8q랐Pb ɈuXp  $Q+n,%Tf̗MDC" 9y~ }Qs<C?IuGΦϝU'Qe'°Sϧ_zK6{*#xVY}ο7V4-mUȟ[pe$nٳ {R52} ^/^l}xQm>,kGpUjcgϻb0U%o}MR<xMZfƉ=f: v f' IgR Hnq} y>u#K4OmRz 0»+Ŭw}yqnWڂT8:DNvÀg =+:gx9"|˳Nغj᭪שo5-0 ZV| %t$* d-s*( 8A>ǒDft GH046#>%&T܏f[9J"e? 4j+$~Rxd1-t:sǜAqm0EX5U $($Uh c"tݡUeb>POOA>o>{|,8x y0V$`21I, &LK*1E c᝽<[x|vU6li(h0 oa\0,PBP%@F̙aF0 JH0(kPcf yZxь;m7h_ńCs@w,RH4Gp)8k{:[9_Cm>Tԃ4 y-G{4ڗ]͸? cZ{- a5cVk?fFG8#F#pAtvL5I?Zuu: ΪA\qC|'GݏnXCW4YS_bl+ ʥ pD3N|$w[~pPj-ZȮPc0zce|Dy3U5#+ځ-1BqH=g1LQ]gܯFeb}][M[߉Ȧ~sSw=ϳm9>uI[{W35>} | ӑ69$w`^j竴K.F$,|eĥ#2AMY8D` zZ8]Aݩc:H&|$z>֪`҇!_j]Ei8 "fT #=qW#p+Gfq=]xV6Xp3ʠ;_h0iU3M$ՏR`gFlRsM)鼁1'Q=Htb <@IbA Ct:@ #"@2Yz~<@YHц},deb+B0 Ϙ"q2d\F$1bj򁒲,gio"XS2[Wbn*# 換W5Zfݟ_[=ے 3Xw 1itzt*ѬV>ܖprI;BtVV/(Kbx%[ZjMwS}Zi:;Z`/q3ݾOI]mCE#޲s^p3<459ɱssש:F=i{SYQ^Q^y$7?{#ZeFD57,A͏Y)$YF<ňFD$S<|a+ cQI&`3(-Zsγfh 2! 0Rhg<8%@`ʒDpXѶ"e[ZG% y@31,!b+ }5Zo೮ >9cgajD@0dff*-^=(/)KTXZ(@uP5d>qY|s-t+C۝K zGX¾3wlR>BϨu<l :06XL1dXNс1!cӝ='KVVsp<0nC;A:u [x+e}2񖙠x0/|dDr%%Lo>kæƪ.5][8Z#rͥA]w35cŞnSVmF V}=".pDO' Q Ngp7'u4`X}Ә"Ic)L~p d[@3m$F-x:@gb#R@L4B)bfZh..U>uj@TGY(~ 04%c3YXd4Q3&4?2  c50b `V`rZhPdC< V0 =ГӘ؞%@GVٜ5hhDGfyBNbs4 Oݫ!u_O|>Hʞ A=7,͆D0*I1:EP4X4 c/>B1̂0bsJZ(-24hVdZ+L2 !0e!e\d î;=XUd3~:i%'f@g,* EB#+D!# &*f`Z.H}+QZ=ʲ>;M}!Tc,*p $9"uџuđxYxQzmVN *}Ǒ7&٘ ̪̜)y%EXc1Ӷ,kcNH]8.O|!׉ʀP2j!`Z!d -˟=nE|&FeffLDCR (qFO)D~2Fˡ O2Z3Q<-(Vf1Z2ds xiˬ(0Td_aC= ;$W:dSn[.y$G3 ,4 S=BXL{( 2IpE% % 2hѤ S&A[:dqNc*yYh95"9&dP"iS(Ik3EJ#1ȫ% *Ʃ),HE,̐e3 |UR1ΗMOwN9>\ %nRC9h X4 #-VTDyjQڞ0K?]`cewSֳvBm}M<]XeJm{BC3'>O> ZkMzu#$Z >Y67I@6 )m =:Pet7F6 vVw-LņX[9AܵT"]}ָ*{X0FDk\m>-q5A|e)9p&"A %I(bPL|I=:@C~io3 ;GNfAQCfsų3jI$% Ww֠:'>rc@u?&u|UYVQ4I 07KIPraM:I y/r,GVbGuغtЮd212q'"s_k* =w7|,y{= KGʻ,Mruw:,K +kZ AE 2I| @>ĸ s@9J45i R@0 QHnb&G>daP-է?a9 *<[G)gD5 b(*QNaZ#b0(Fd34^btf`V2bq w"0xg#(,KfL[acT='ʾPot{6J`g?џTC>.9XF1\onB`ݱ3~ϯ\kYbfG_V cd J"Q{&52 cTd e@k/Sm}G|Ntmuds7: aVtR].(ԾJtYkQp'~*Vk,Tiyi| m7eW(m0Jp#=csU:Gg-8k8;񓎡8:?*W[藴o+*TGu$MU d"{kϘpے*;z*;?IR+͖X=wI'{NZſ6,VVY$~d#UPzڿ_mrMjSbQhX<ǘ<~{7nӎ7w;~|<}~׵vV-}Vpjk3t[F+cv'mڽMigXm˃Z/mg8#EG_{ss?wEiSk͏?cuu;9]4bm{oEE|5X9k3(ǘ lUb2XZB|'y}cq:=Wt [b+69="N*WEy -8RتXrBH'8[|.rsTJ3f{v .kpLtIQ$XpGP `VX fc5 1f%*29B`Wʯ?|?f%3(?12aL G2J- @Lm `^Y @R2fyE2DyT1 a!L1@yc,cn"eD,f \ il5WgjW5a}IWH#ru\s>?|{Q$.q7TN=:9gkx9XG_B~Z)c(,y@ lj(A2ĵ"Q\R"V%ȼJHdƧ*ʏy΃U]SfM,/]wا4-ƖQIwlw[Iv[ 5:JV Rݻ{ؠ'ԇjov5@!F0A>g=jw,O]k.V ©c-H7&~K]KӋOhgU]&l *e<5+AakaX߲gp ~=]ee{F{eך j\=ğI.thև*6تnhO=tZR ,fc9aZg#$6deK]W8u;LJ`>i tN;Heo6P] JTW?h3U`nPw) rGIA[Y G]AǸ {,-ɓ]J-?}nyŔ$g 591Hh IpY&+̈́50-c3$ow@>\`?I4AcPh@ `j Y cFZdV1 ZKXZGEiB"Bb@2gj Fq$ jBYkkmӡϲ*y5č GgVQvjҧ@?'){[mUprC] 7y!@D swNL X L@c14E*8B`M9w3X-ݓ[` N^#bPcý3G/]5!9{` )>O)c,3>AS*@*TU`N}jOj0i|׀?d!buEy+[Ӝ6=,v.٩tjrȓ_Y`jc't3-#=`p"J$u"QӘ<|yv=~S8c$qNEboLLy8VD DQ0IX 2dSLj #h*ıOɒI 4`1L<@#0( K#0P@thtOyw,F7doRJ yP3Q>|ˈGbsz"[8ٝ?}Ϳ~_Щ2-,>30$ a,YL(Y@I`I +2A6h)V`2Z3%|`umǦQGu?'g:i.+tѨ.0bs(<3Ѫ6]bUZg`>%fzJVu݂gƪXPΜJ),0=Dm{?/匡3,<")eH(@tDIXIEt[4PXmbn&'0:>VV3ڝK78Չ:>w/@}*8d6vUƣQ1VMkTϫC^Km- j,s֝"5gc{٭u8psp)s+PxDfiY2Q "e%0Q5̹ҌƮLȫS4Y4?^%s( LJ̙,@`Y05F#F< B)[#ϔDv9J5\1b1Nt+_P|=JƚssM^9+ZNP+Ԩf5?73u*୊!(uՁA9NT?sC} fuֹ_NI`=N@}?67n3mvMW`]bF@c tjGTvSpǻ<;d_Yufmwg-B~(͙CЙJmH'#=d`n 'ԫc.Jjab!<匈b1bVb(eJEqG!۟O?wĿD2Yl<ʁXH8 K Q$%E0cr bq{ciӦE`TgbF1Z^?e>^svgW]}EpXگs(݀'ҳKjyNѣ*}jM4{!D:$!C MGD^2T'< Wa䞣9NgߕڿveZ ^ί Lեͧʆ.1reW$Ͽ:JJߨT6n`8ԙv*guZ]hQUQinakW[ aJ {-;M_0+)kEW2bkUmÑrg6prV_m*SJ VԳb>)3-g4Π-Ҡj"T`={/ӥji !` ,* ;n_1.n >7> X Xds52lM^N`Vdw0ɘȁqB&, 0 "F%~.ċ1 ad,K$y*AEQfjҦjɁ@Ʋe,:L9cR}o~FFAhCDD&ᔥE3R9< }g{o'査vw^Sth\*҅@ҩapN(Oj-jתԽԥZ06YKf}:jAj{Ԁfӎ(1Ug~'?Cjz5lO"_Igwt<+ڶX3MȦ:uN Yuc/ 촭>wku4=iԚnV_3Gg^3mY$ ղ׏Sz}vYiKkn tꄎSU3U36L~q e *D3` 3(4Zݸ}[n]s%X30%a+Œ( 2H@q4 ̠&j҃@F3> h^&i*@D! 3F$@`F3X0(Jyd2D`@o0Gˏzmo. 疝v|Jŕߎܶ,OڭJ=[#~w%E>W+ꓱYTWGƥY}Vb(VRFrVa+q[$UVmwJhʅ'n ndg(I DkĥYi)^HZ < ELr ><"jY̑@LfJ&HV@0J%5 Y1) )L&4$^Z*{ >H R7v-nۭ4REUϵcqu\U+ʥM=g5DwuۻwYo֟ ׫}M UC;Юڽ,NVKԵՏlO;DioGl ct AYJřhtLs>}:}"@G u\A Lb2j %h*<}_FFĉ4%B4YP3@A P5dz1:CX0P34? ^U*Cbb~qs~3知}ݿΝff`K~oJHQK c1@aE3 ,O`^W%ҷèyA̲fMF*K@#ЊG3g:m7O3gIVe!&9YiFG 8pL{f#uXGI>AܯmuS ̡ 뛲/GTr?hgu*yJ.OZٴپ?ʑ;ƀEʋW?r=]XQ֠X?jOae~V}`D3jPg; J1\q\q9A83>邷!o| vSUE]@ ͕E#?';G5u'}f&1d6$@1ȏ0+2? UfFwF W*#(4#4Ġa  xWHbg_tmjbH]u˼-P³C+ 2z2B$ukCsZ*g#GI3س-VNͧ6Rm_^Tk>i])ܪWGVרsbiiKVi+kǘ݆ !LyJȘ0$Bf^=ӘЈ1ĩ8LL{Z>耀ĴYh/1-j" `S4D!`@ 45I1ڣ0fn4E?8kv8 maAIR'ʾPփ6Tv7Nrss =*@h?f擆c"L4 D?|dдy@hjbC( )P&fy/)vŘm?elg%LnL7A>} s8ݔ?CO4ONA+@4"JdF@d+3rc C0+Ƌ(Ā% ŘV%1"#vm6,Ϫ~a)LamP_v(R-*=B|Ar[LzY?ۢsl}3\TthUg mn}?~WǗmWeSn WaȬG[`s:|Lʷrx)W_PF[IxF<#):{і5MTS5S:_V?XWϩOE3]mSov@l0'ɫmDNI`aixD Q2Lp0,FfA3@ ź `u]1< i'q@2@ip;D7B>+C坈똁$ Y Aă4E`S3FD #xXf0$4a@b"#`#(H${z@p2#2fTcZ! +d8ȥ0Aڻ!RÕ q|=gӖ|wmU꼵<>eL]IO]k[1x G7lX\~36'{ r v[Ao#5w T R1Sf|gZ桗֯jr~ҏ^&.צӶQ1[}kPVG @y2a`2cV0:x5C?zNN8Ǔx B8οUSRDU9C+5dḞ.GYPɔ`X(J C0 <Ƣ P2"X ҖZ ` #JɁhd c&@hT (XBJ<]FyCs>IS|z0*õSMʰ^yy\+j E\+6ݘA+.N:v>e~%>83S/?d:Z &j`"-DP@řQL V|HX4jgSGki:]Oo&~?dnL i$)-d(܊0) JZk< =}߄ildhWٲj5-ib44!@3~4Tvj+V޵BpOY;[{qE5o5 ; dzhٔ..ZFl\)k+ſSn9m56 t/O|f%]]9: wձϿs#'dSSb/$>Ռ9f$pغ[if֘u;,Ȳ[v<sզh! <4X10 d @ň JQX\ K1bSJ^dJ2s'tR O@t!or@a[B &j#?>C߬ ߂JT >OQ>I0:@\Aϧ~cOk,wHx2FD~r//EXD @EJBPE04Q23-Lw`R3/:QbpX0;n}+I$y@i J1 )DȥXL1n,9j`Ìdx=9lid}30cS\t@lj(q3-d©Ldiĝс+l ^y4&!4ČJ R &/1 K> Zd \`PIC@{{RH^f+NnbG]MlAxQۍ>Wo"l`"{c UцXV0Ǩ36x3)]joh]GźکU{y`cIhtzt eZ;po[jTv]I(-bviB}.mM*܈@O\|1mbIW&Tșshfi4 `}s&EDDe+H"jw:SzˀptYp)Lf3U3 2sX&dM9Ƅ ,"Z&cZ7O tj9+,*|WUٜvUq+t`*"|zV:=dTg?/~{35~W "+( wŘ9J- ^dS&'J5̔Xc? o7{T3ۭ#zwMǙ.ܟ+3A n04)ƭ$Ɂ`s%L}`s4dL@2XxL{3Q/tX2ebhgY04cLh"`0Y905T(@LDq%2F 7H `kL`THC2 `hlI"C:ٳhhعΣvF κE:~պ2ҕgZд@LjfY(Ԙ$`4`ȕ@ɒY.LܘɊh51< Ctg1fNBsʏ2syNeF"rӬ̙jaa r%fB@Z`l>W}K]aʹ\GP} g{ծϵF'(B>g{{to.gsW}ښTXiދp7mYEwkvX3kniߦxWCp>!Fg$fy|UZinZcQǵ]e(҆ۻ;ٕ}Iv֒Z(Ɲi.0w<8zK+ EkQcv~*)WcKũZطA3Іh`1 +1!, R 2K@4Ƞљ /ti11hLȔ iM@r df% 0c`O:@m'd&K)M=6`V )2,S(5vk`~VU׮$g}]3@(1`WCuꟘg&ywb/&I0 )i0iJf`XMҦf" ̆O!4fJ@`/kf}I\/i#ŧc;;GH3enI@MQhbpQ} yA%Cm Q5@ ; xKG矪@Ab&&1nj%#QY@Vefg8$-ZB`RffA XJpq) -&`MADʙJ&u "-1 By*vʕT3u&3; ̋ՂYzfٔ+4R]Q qyVO }PESX-erFyB_n@ۖi]rV\emkY>vHa?ɟgMvצ@4EK(:a``xc>|c$f3L6hP4F-DbV  L`Q"̰(I?d +BF39J` |&@/3!^fq1L  H&=܈ {s!o J"IޓV%V6q(uϔw/ή,2mMP#1}K>y!1f8hLf@ 'Sg$Ni@g'ᤑ`!{"2f[( +tYcx㩈(y48Ry4QS2@- R(H"0d sf#P@4BaT&fJet 2e((%)$)̡E0T Vcǔ0eF5i JYB=bS3&@>Ɉ0:.:`ණB]*cYR{<|;X[1Ukmډ\s1g%z,./q']edR3SV8K 醖^ `ޡᏨ ` !fJ4q6S8ld ɏ| Ȕ P15 f̈QxL ^3I@x鑑t`a12 SR!j@cJHf>7a^U*+`x"}y~_Wys vn*2zc9d& ۿ/ 8Nb(kd D 1%2 f1GfaӋ~m8ߧO=W`"", M DhF,fyE%h X9 ǜ 1\ "50,(_3IV4k)+3*G ҡ9 432e$  j(LZRȍZ4L24TrA4ty&yenWFrp$:.i+QN6.եw@BxYwyُ45f5g-.@F! AgpBUR΁(WLMUL2sS֪8}s&5IMAkĝ$s:}w4U6ֽm(xmyIݩi.(U;*رHe}zv5ۨ}U.|MNlgKmk(Yv ~~:3ZALy1`fr.3Ry3R\DG`.w@H@* %  tقOWrJPsFT{|q'??Ewݑ=߻fHh򇘳F'GAr8I?)6rO\xuӎ|o~?GD<ʼng p+qtaSꁦ`Fc(J27J#"C0#Q &"`L po8rU"G4fK9:C& *1`QxVs3iU)& #%DCz>5f,@( S/*4(n%2WbeT#̀#oQǺiK2 z򀁰 0* 3C$Y@L҄5dXJc@8Z(42-bc4Ad7 L&9GQ0~g#ʖ?X}Ny>szgI856@{spOwdOA+FǑ sXlL#!Zn#("(LXYșl).<žզHJVfFc.2hsLYL,>"q fI3V#bZ=ёl`HI39+s>##[o0p>ϧP| l0@qǰ9Ov}Ko ,ۿ*a( 7mG#9uٕ_'ޣtڢF]}Y_`urTĐ=:[Ѹ23yk 0/1'07K% L531-, s d-'|a4Ya`yd'(L &4J:)-GLa Lb&1H*-+&"#/AUG^|?SY HqOOw#ðm]Ă9]q~v4AO!+iEh%̅2ұ9?GgViP>0j?~@źi O%&?[(L_R1+vd]pkmb˦OAavk\yq3>@.\2#`uo+lO| Dm2MJŕP{ۜJ4=?]?-)X@~?|v5~3-x Ӡf 'k.Srsz|q`eB}iKn2|#~t<&I?dJ@+IRPpeǔf8}nR"SJ AdL#pPs'nB8C3Q2Qɘe/\ĒzFp2CJu/3S?( b&Idv`D{k@id`eS2Z@u8y5{x{kR]{'7gK>j> ?`vM)jd6ä.eE &[#@L "52sđdD@Qh-L1򁰁i| 4"~zY7su]o*J3-}@3mhj5%38ͯGqWGn|#ߧm>'nm͜wC큁3:xxYhLuѷZ8n_NpXy`0:!}#K^?s9䮓gS; /n:jTw3DGI@VX8#aO@)D]&>Dԍs;X wWHW>kiovc'(LOM[Z==<ٯ9Cn?5>"^zIGݏvj;oZҮi@?;MM+3#~iNnQ}SXV{F2^iG;,OcP>3Re@s0b{wp5wޓ0sU|өj޺jB.q.Ts4P!N }MD^jխR0/Ճ5 v;PaQ_?GD?agSaIӿvwzg$w}_VgnQ3u~(9"ȼsS#5L~T=]Ͻ}N ڑ$~ugP~>?|;׎־cDdTZC2R$$t>ΟghV~ИL5b$ti@JI>@3#5XMTHXx60&B42I& `K, U3 9 xbLq{IsUaǿAtU\M5I*@ >fvW}>*i|P2Tl hg:܍s 04&13`Zf(L8`L U>JSA(eLY̏O% @&T k #(418 f50Oh|DVpnqcc89-EgfӪ`(F8n| ƍ?Mطk;$1~4N4K`qGu^I FVR2HYfzfu3ŌL@ 's*d– 0:rg),d9"V$nAϯqɆ4+K&PI04Nf=G)@c̘9LbI1O9ڐݡ9JtJx8Է;d{睤|iW2>̟jg]p*Z٥e('.Z! "&!-GQ30~~ybs.r} 0c@ǙQ,C2a4S2Lj(Lf@2G@b<:>hJht)nH#<FwԮOy3m:#Z>R>ޣXҔKYdHfeyq0h En{Nt&b/!1R~9&XIB_x <}fV.eH&0& cĝ4UH )W:i kPlc?;Yu 7rYng=>3)5ڍn-`ql{?+C;:/g{sTo1'ߑ0! "l~8N??t56EhMAyǬJ4 O{]cGWL"a/R>}طʯr@KTjo>k ^Q8';22Yx ɷ5j&s9nKtu|k,} ?{?P칟gS@)Jol |fi;/)Xlr\9yϻtvQ*[⠲&SFë /y(hjuxe6DU>#3rϳmnnmC%g|<پ}kTϋo(M/b[TjhV\(ឿ2'Gjt+8Ω,յkj*mv;%q=M5_y5U¨JChef#X|qW*nҪ0wocc0+Qq؛I9so_i׌Yy~W{&mCvT.@pHX-f~snwQ󫴶WXM6]4"X_OY9]{ǵ䏳WK Uvt:co#p{w \qϗ3v-֪ B\tᶦ:j̗T$\sV-Ğ^.mփ yiѺxu8gO]7|ڳ,Ƭf`Y .\d%003$JR!JS1S NCRb 1~^?~v*#mWw##nϖJi׬HO3UiWP҄γ,+ÙY @cBаC 4!bV: 7J&hL, f1$Lj5h2Jؚ "@i04#tO?6'A$c:t88{ N #eLcSԭb/%LՖ<@b+9e QCA )Ɍ`k+30eBs(|$hPbh \!Y*e.NB f\0) ZFY>_􆬊ۜA+9>vk=8@$ ֿ$xĂ~C-aXQY!4/w끈;,owӵz F-e75;ubO=gWʻ>M]گ<`8 {J?f#]=Z5]y|/{pvU4jd& di=[ix[s=jv0:="Y}<Ѧ{y};OWRzZ|-Pk\D옉+k1EyZ᭺˙i!Oa`r8OI*j)ٺL AϮN=93f83N2˙z,M3;Cc?H])Y㧵XS9}5vs^tzxOYk]Ulx |zսV[s=\Y3*3mC2J,Ƀ ޕ4QV-$Q+35iSźF oQtngZw#=?мwOꑽ%,Ʀ2q+wIdAL)A-Ds<\ǾJ?Q| ؀ot0˙̃JK l s"9 ĩ`2c( rAtMUh!Lj`o=͈GlsIqίlkRQ+d . 8=%_jGkUk^v/Ó񦰇Quzvt +q t$/l-l e9޸< l޻ݤ_p'L!~M=b˭ִBFHsSf#đ ުOx{Gϕ|SGo+e*-XY!lL 3/8#A7_|6qϮ|^()=,_rxON /`}ʥF;Vͣ;pga}ceQ-_>ǼM pӻk٫ҩG/iTGqxϊwzͅy | vrFN ̹ l6=}_ (N0 TNNGLys<=歼KYRy`Ay5)3>{|Oښn?v}}dow<+v+SO1N/g?EN;g7{+S*ۺ`q5 NΊ¤oEc =R=mcٓF}fv5m+1۸/ ڽ*;<{x%Z27 ;ُ黱ݝmZr*ԵaKsoW\#w=x'dPRPp=zr&Zn=ןjib3c{Em:z걪}(@rwɋ >;g{Gw^BЁӨ>rs;nƝM=<}bq'=Z=6:P Lr7}.^z,L2FXA")(?B}LVVaZ1\{)q ih#)*cS3ZX$)fhb)K~#W保]~G KlQf:oQkrx ɁF~>;9#i23L &h@dVaK7E <@DLA eAe h!ZG1#0X, F[}kX2>_YbA1 [Ǭ&lyP~Χ\R@}N:Qju[tLȌ a &,h'Ȱ@x}]|hl Bd(73-7' `ק#@ s$iaW, ^g&KUZzIfnG0!"j2&-E)U{*Jk|埳ZŅ0. 9cc}3w|QO `z9ϛij~ݗGDS?B8ݣmm[dHt"G}[Z̳J9ǿV@:xm7d}A&s32۝\b;2I=}y2^빯t }p3P?l+ĕV F 1u7V}ȉ2C3~j|A?m@ ^%Q232s126$Vp >f;y3Dh (F-L3EEY,JYn/}2Cz ?f8p 흥S[5T{%[1&t_k?;ty}kp)/0ݵIN#>ޭ]LM9r7tͬ'#geUkc<# zfymڝ3_bk5&C/]M!O?s\?w}k=ﮣ<7l餶3s{ ; 2V}8Wsj˴a˵`9A?\ݛzrg~ jAGQV4ȼǔa1A5^hA R2ee{$gSQbZI1't7@(8J.#2ӔR0F?}9SƋB=4zaS\maQ@e^ +Ě)As1&p` 1d&<c bK}Ljf0$JYh"c0h :5S|fjҔBejjG_O)!e 2MdDJfcf""XcY- !D30-17CR%eLD*g3stO}Λ>.,ydϣa}brv;A}~={SB.Qw|{D.fyi?@Gs=Îm1=SUT(¨zŴc7ϡ]ڇӖXOX0Va Dnk^]ZkP~qe!o]2;^ĂFXr~I4rNGͻ?iǻPt)$g{غs^NzjU |[IDFOH(`V%Sd2, `X+(@y#ta3!& i!((@b $DN`lg[M kUf'_O5Zl#/;%3&>xЈ@, #X3&yh3F=Y$JQ8H:`Rd͔LrJ2A5Yfj#1Ѭ1<BytD8T2Mg0~QĒnlS4xcF=f?imftif3۷\.ݗNܘJ@ ,Ɔ@ [Ġ${`dyf EIac 4 ǘ, L Q3G!3Y3 =#)aa0caT69 Ȥc~`}>LF ̍IZ f`eIk8Zkh,cYY35Zsm~4d^nqK @7v4}1+|ȡ)HlƘ E> '11xIIEm=&Uf1 aS[#xjvm%yYO}^L*!Ǯ׮G7b嘖 KS " `lP2 < ,ICQ.HȠ`b#8`Z$OH~ ^Zb4qf%VcaSŘ eO|8Y u5M)Lq;%Kۦi)1( Ef^e*b,)~ZeJ%cS(@33@ Ayh"0:X,l$EV$` NtP1Ɍ$T38VPÙn|H&};cy`j;o`8Q>)aߟP2FȔbVL[x$}^tUn0NY荳EV:Y_fC8R6X+|x}{V~f~CI@"Z>dGRzzuie;ͥ4 i~7msio\ώvFoei{:iS췴 1H|k:Tkk&OIAْXi1,\vegEOެY!BmiZT ª)$N_w;iu VMwX0 Av ͸ۏN:#gmcD]Ug{ߨ5j=V9@KV3Y8#щHg|RPµ5lC`-كϯ@P wQnRPUG,͐LWpʐGOӵ5u6[.EO =qbVOx{^+е9"ݸ9"r{ SZVvYYё鎦ARgGKW}n.BղܧR}<g]{kfFAp #i`N0sЂfX"̬^ @:y?k?sOm>x. \<|vTyuγZRVexIEy3eZgJ̬Z)g`^X3t)c+/` ǘ y|= I `hؒ߿1 PyḺ'?1IX\6D3 'Lu2sYr'_] 4Mv'ap4`F1?b}AV}D2 bH- h*B4h$.,d$h1 *t"ʐ#H1 ĥGF a1 @M^ FcS:F 1AȁϐK/-J/2n}*+cԻ`<277O1y.izsZ[ruLg򳗌v٥ ~lJSi=ґgvQvU#KE=wp8YiOoy:+CeG8Q٣]ctz;lOi^mMHjòߎUF[俳t(V ,Qu~ws= 2TfCax_L+^:uuѥԲh4 Cgu9==ջ~HeԋN1;)#?q׉kѩf>rlt) *%%TPs=ؖ)k굺 EeM# Ε(,eZ`wZu45,u%kvBp{0 e=a']=}=4<4:z=S+"92$T`q@*|s2<ŝB+7{m ٓq>3Ati-ƷUmF_W;C99*2PbX@ݧ]O=}3w{'ڈqr>\]);GdiYyYI5Qjd+M@c^dk a( ChR%cf`ňbDŘ[r~f<+B0x!N}NSP߃NrS8z>q>f1WvI5ǏX22*kHeafBPiylffɕ\3VUVEn\E` `D 1ź@00,14 &2eDH =CE1(e4ZT#L`jX3)jdX~{H}'&9 І='} W!DMVh_M`;dnqL2q`oX'Uݻԯֶ 2$#]TI5\ھzgyϔ+ FkFuCj-ΉaT{O, 5UؽQVUjorqߤb`6JuR[љrYU2 [#r:,nRFr W"3j4ݛ7gдYjuJgX!FPGzvlUf^ϭ٬6=z˫ 6ԗd7fB1HQԑ ~q>(CC'r})wͯeڻivM=PNѧWMj:ڋ{5njB\d31v⛆P̙B^XF CTRڍPExtikZR䠶*22{ 4=|N<|i<=FejW.R!wm_k˦ᒽIBwiI]BUbF> ;ϝjS,n5gWfjןkj8}BFu c@(pwr$it:ۨz8T56V:{0k(,suY%ey" XyJ#+04(80Ie<2EOkw'jT)~r]yٳn|㡝eKtNs[i6mSNF7Yc3>nC#UHJR+"@V^'x Y4/Rs^A `uh,%XFK33;(Lׁ+1 TMfEN0K $ pxCO t{@=;t-;\> %;I, ګOzP wۛrFXN_LlCeF+r3Fq_ RpIRG+y%4:Zl`\ܣ'=Z?kj[5=I5=y'*0YM〣trlIh8kG:~6Jg*s%IYqXȈJ &1`.TDi +Q&Zlō`q$~GṱhUYp)VI\/234`"yAzdp+2yQ " 6 4cUohZ?}oNq@%b,J h0@Csh!Zh`I!ePf\4eLK P1f&s5": V& RhD1S-(z mF\t(Lb2@m3f(1N{ef@ X Gjp1bXP"  bc(40DM*ISP RM>mz=^OZ 7.NN4D:թz-GM.ޯ'(gIvx1i}W@0j'0&uӻtj})kZOFx?k8>_L#Ijy?_.wT-{"6,4ꚢ:`-^GnK0̫`9IҨΠxC~Ptj<,n>1z]Zu/R8ud 899j|c^jv= q/o"zS<`lWi}0z)n\9O^jQq)>_8 `H~Щ|_iJ }х‚ī"AP [?G13}z) P>ə 8Y[zK@ Lu=Zrw!1[r|k>CiʼcܿLDTZFGkP}p,-7h7pHc,h Oڵ1ʨlu?mNUq]urCulcw- [ӭVzp>k(䆛VgPkG>c aU^9NjZPi%s4/|٧2pR'%2VoEȜ4~@#ĺI 6=8d̬[f74eĵ)(>2̘458+)S,fvNPA&1%&44_I-f#9GO i5ƵCzYӈm"1@Χ{C+synapse-1.53.0/docs/development/img/git/clean.png000066400000000000000000003303701420514467300216770ustar00rootroot00000000000000PNG  IHDRrfVbKGD pHYs  tIME 6ǙiTXtCommentCreated with GIMPd.e IDATxwtUlI@BI!P"Azw)RHDAQD"b(PB,# @h$B =#$&&}>x멷M/\=-֐ M"mʎ_$!iE<4;}]n̊1vn^%[Kc֊9S~: !MR*g5yd2ؘU*fKjĴm*KiRԱe~?3ձBv%}OJRWUQNe*c}jm:ev6VY{wM)lGUJj͆5jIUgQQ6-Mݮ$eCY^C|(~9qoK{).:jRnT:,gՙ_/WeU7StIPU?w>ҋ)9;vvGƒjo$Ƽ^<: Ow :k!%wֽ/OeN#ɕ^ő8s;?#_2WsF8Ȑ~io \VEt>s϶͕/1XgC&Юe2jIflps:}_8IC_5-S]ǎS-= 2 ix&r `oQGW5<]8XʚHX’7X6w1rk_ %{nR`͌&PY\: Pͳ`$POm3wIV-c׃ay6vv}db;ٓ3%E~B[+1sv=^mKh 53O8;O9Kg?sX !;ڌ(yc?Dfv_ڰJG\ۅ\*3`2נ=}1Uw`<|jY6rO!;fg[)1Vh3\Mw6yW{sd\i*kJR!ԭZgk4'2/p~S_} ߬wQ[Hx3'^%њll/cXHߍc#*p}K0s?J|vx z0)6Im SoҖmN>LjI' krWZFE=ۿـ{$;M!Q1x=w2둷iiq?mee%!g S4ŵ5i). NΦn ei2p:]ZX6I;}/CP)3o/RY8x1:cSSm.tG44Sm&nSAJgR7BxMՍsh4 ,kYzy kF8a_WLwy}| M@wkveOO8X%vfgyB!Ez$(z#v6 ʶv|/Mg[ȑq`OJF+Tzn;@z.Q,&/G鍌~Pe1\>-v1\Gf1nZ27!Lc剏c ^~q8&a3f!vOD2﫜99lzU"<BDBk;=?\'~ח, |T*, k| e:4IU{fnyʇ eҲf"k݇:_!"f .|Nxv`ˋ;?3LqyAo f- p،!}pO*,֏Ši#,uy;3 Fcg4&7_;?˪ڗI Aj]xsVR׏fBiWo%{Ft)zڸOWO f֩wbEUG Mz=rD~*;?ͣo|kj0hfx{G AL FA1{.{ޔÑof=y|d3flo$Φm;6agr;ۢ#qm\)Lǿ|LkxE ?;ׁIt h(+Syܪӆ gSUzf !aӹ~jy5r4Ay6TqKSn$&'(ƱE3wV6ԭX'ɿ,-¾u%$=BڢYm3m<+-#Tʵl),(e軭n>U'g/]_1|ro'wE*>:Hߙ ԼAv+Mf l9NsSʒ|?Py(+=]zv6򈡫|\8YDz66MXaj̔9(e#j ٷcZXl1?ǹ z28!5gmؕ+;Vԥ6zh%m* ]Cz\Oxᡶ4,+5suלPDŽ٧1'2wB܏i=0VᇛG `Ϋau+d&Gtϑ`f=jT6݃R!>V9t.J<vϕTI09{?&ҞYGҸxN`;K0e?W,66oi,j 9{O<]3owpklY?7a[ޏң!2W;ZLpTM!9r<׾hwnw#VR$k;~e > Yu_Bʵ -7K[m\]r>W,@' ʱp5Sė` oe &,aRTiW]5i9s/&ajE`Uv_669XHSOKٜ&J)lIZz}ko,b‡\;6-{1E{9pԔD& glVqJA]pEмi9q%3H _&AFmƀ Ns͇ '_Fh69Ja9<֝fpʪP{x1XV +V;D4`ݜF4o SzP5wf=Ԓ.\-٘9;:І|/W*4_.Kq#c1}ocz3wgwC( 1[BQX懼Mt0>N䱏han 7=_Γ̦g ~)8^k5Q \ÁASʡrݎf %o:W27~Bٺ8[OR8VG0hn:pϙ?KruT O59l{>Ӣc S؞fΜًXM'`$߬Mк+WT7* ntFC=?7fj ?iT|Wt|F{ǻKlqpݬa/KuL r٧ Ma,Θ)>ܘ&Dp*Yٮ9e>M WkKFb#uhe4QRj8szdgnD턉4 zL!*mHc޹>25D{kSV$43'up*fx7UpW<<+h'K*fWO 4Gb}$Fy<bl\;g 4LRYNn` |eVgsNzqۯ4)BZSؗzFc?웿n Xv)8 ZZ2|W=rQ&Z?o2P9xVc=nD0,u<Ÿi p3z'>:lQkXot#Kvly.5rz#Sg='#Fcw~! -wn=u~N-S'.zF=B!L37co}a| ,N'YFc(Ð,톦!k~~wڝB4:į.|Nxv`ˋ;-@Gb4Ln })*}[Dxf !aӹ)0>:t~zt7fI ,c8]>]w3,)#!ަ#1c4mjL@ko_ˉ|stcvr _SPɼ^=~Ǒ <6پ-n=B:ծcL9R6rư};ll),(e軭0*q9O=%1_fq ʇ<}m{w͙Tv+Mf l9NsJyMG[bNm!`ԉ[f[ΒF܊~R\QZ܃R!>V09 IDATլC՘D_!39+v[Hz-,^obV_N^ A46W[Nr6Ė!{t̸74دJB!m޸\_~~/^xwD-[E>s8qĹd,ظ[@G c vF7Vy~R\/ƺwwmej/g 7僇z;ZGW413{a|B.\HS֮]yͭ c򵱤f^d9W%g:ԍj~QO!dWTe+G`9jK T(ˍ?R/7l8`q Jeo5Wm`\meSOcj[lT>ͽj>KI)^}U{#yk} 뿜ݓT)/fP.U#})oM]zUfO|a7bzԋ9OL_iS!(>M)ucOJĄ8OYuX0-s?]?+Bq; m2d[;~$B!WɷB+B!ĝFVhB!$B!B :8 g&B!wbB+B!$B!BHB+B!$B!BZ!B!$B!BZ!B!$B! !B! B!%DSJ) B!S B!V!B"ULlv#JEOj<#:;6pﳐd<75Gb; YkחWny>>Ʃ}A,0ɤvY|&(ؼ'Ssې|D_9w~d|7r?#eU ƣ3ig1"c3m{m6<] lb-'"۴K.(eUv?]?T*KK-oܼ}m6]ʍ~wPŵ,U[=¼茛qm+|8s7r"eBkEj:c͗О=@5r,IՈzCX2>os~ϺZY`3C. H) K9cU(P* ^i@F~'tz#ccA? ']#|b__CYz\] +qk&ұV9}"o #>|=5]0`f\ 664iLnw~U'-SxPywd]Ѕgnyʇ e |&_ 'euͭWp)gT#+H\7M1\ /WHD`\4Sm&nqhۅߤ~xzd0vhQZ7Cgao74DWX?aV#A;Wdq N3bXr6|ܙZPbUzO@'T3v?s>ؒܞ /O>¢Gւ,\1V^xٱ(d;oߞ!$l:^>*a}j cu?DŽnվ gSUl~Й ۠OƧ.ۙ1U]0ny{/9e-QF>7nfVG>jQ!*i_ؐr^St탫Aà)IT~G AL FA潜WnNs-DH&Jv C*ժnCuxZ+} Uhh;?;ʖ k\R*֫mKLus+ڿ:fxi@5j~5P(uף۲.ݯVD,;e%kpZڴeTkTm|U WʑUK;URzչr9^$lVRcoŞ|qz1s_bf=޿4Ne6ۅj`js*-+UnjMmq)jI??5|mfu<;[uV_}bqW^?89UꨂT"W5?֟^=@-_!;5\Yfu1핖r*N[mI_pϫ=U龵Rol^ݓS:UBޘ(޼J *ڽS]J6Mj/Q6"`'NO']uZT~u/Zf:U=tZXU쮪ƈ5j?goSIug:M%nxF5.kPhU$u~NRI .S QR_90RN .Up*~,[81ݪY}X@@Vg3vk_ ?їFepuH[IH~Bt.EqiΠQͩX ]:7x@ξ`UƫRkFޖUI'fZ3yƋL:[Ns*m;"-tz9xqYGGm㬰2nFjWU \)$*=\Z0dT3|+p9Fý|(ȇ .#Fd[cYG؝Y, `kHRdAQ[o9\jZ6k27jVhx O?5ksHe &,aRTiW][TEŀAb]>+k]puɝ6F7{V9"&ki7{jz%#] Kٜ]gKaKO/W꩕x\#Ն[g:ƺxhш# O8[Jg,uo <(Qܵ՞#2sW񔺖͟N+\ꜛww~pZǝgfpnGq1"Q{0ܿ{>`xB[Z)nMg``ʸ{VӠ.o":9dDeBk^xfTۜ~H:Ғ3+,,i'Yٷ\%uI4638X PYd<(F(>4,ݺ*OgHv8 ƭht`)_lO$v\ؿP5QۋɗexN\fgK94)+|˫4f<%]R6B=R!{'_˙1kb^=[jl@?d2ubw7봇IcV4| Akcmo^ƒ/r} Yϟ4g]̍.o-dB4ؚz.Xz%Oztl~֦aKYJo帅i$r~{o`B:{r&\hX&j93γH"ojΌ0חsiBg-+аeCƴl`$N-\gP7Ncu+7/q̎|q.aqݺf:ՐPn0T}bEjT}+.-%S^,%O87FhgV)YI|#U 4 nsIpBGb9ƛ_PIa|cE2ݖ҉KP4i|07vDw]=-kƦ5$k޼@-^ߺҴ_[21->yܘ&Dp*j`, p8;7=_Γ̦g |_ :?LؕK_%ª|6C7;sÛSf/jcY4;v3{o&bh]ʕB`h6lĭ%wQy>P1,m6S!&Zf uK"Ʒeyg+ \LS+ySƩ}y[l9ˬL!˗1_ Qrd_!Җ1p⳵mndVa T{;~ڜ6}-]%J\Z!ZrM_A|^˹y=qNi? BIhB!("B!9 :8 gf!B;0B!BZ!B!$B!BZ!B! B! !B! B! !BIhB!V!B)A!BܩdV!BHB+B!mЪSy&i6 L>ـ{$y4w4W8mSؗW~:75[e[e]mBIhML5ߖ/RYrҔuƦd+ l6OO*K3b]-eљ3\mJ/V'ЊB<)QS`!BHB[ZĭHZpsNW~jv`̳* ?ItĿ`fNAAGx qI_4->L_}Gq(2{ymZ%̣OaN!u#1axvCL? *=3RCA0U+x{It h@3fVGKЅg~/J6 g B0;e #>|=5]0N錳[>Ќ0YV8Ogc\]ϩ8kg㙺~5؎Hzؔ|kgg>Lfm[*'NYZ3OEGBN3TUݖ6> (3llI_pq*-Z12jJQJUjPoRiR J)eT lWqNeߍU [-7l4tWjdjQrQV'Qk8f9jD'G)eUfuV!O2NZO _Y h Յqj*䥝*'o~JEezުj8a*2uڠEJUTפՃգ2iKLus+ڿ:fq}[e]T_oTY߭s6ζ!=BY}|ڪa*乭*;?Q [NE exw9 M[Q|zsz9ٷ*+,9FUqۧWڹ64Lyg%Zpݹk Bx7e: !$h>xwvGx9d-e7Br$biƨzvj4,Vŵ)kjn4hڝ isqiɾ57k-1F9tKؽxG:tbVztXv P|+{cL;[`iy[xF?!DY:8 eiq<V38p1}N!ۼD6oxhWgB!who'iP6!m$B!p@Z!B!4B+B!$B!Hhl<4F!B܁ B! !B! B! !BIhB!V!BIhB!V!BHB+B!$B!BM)$ B!N%+B!BZ!B!$)sh<۴~ֵlz/Y͑,z])2?b+ƥm0>oɔ_Y+3{z;׺X=U؆Tbs6$m8ەY1'iqt "v=mr) h}X|]4l'OHql6;IBټ-⒍xםL>OcS9HFϗ^Ǭ]v|Ԏd뵷" iT6lt/IHĻxZz?Xs;H.Kzޏk7>r(Z4yAfYT.˖MkHJp&}f\]L7q66]yn \Sz+q7&`̹>r>.B!6^+au/RK\P8h}F{RxsSZ'lpټ5}7Pc^uM腻ݤ`/{kM j͟_wcˎ7J'|gDc;Z>IH ۯXm(x9Q8YFCOPǾƶmSS%X_z8]_hO{N3a9C:ϒt?IcSwRuԜk,g? y$uiOQ+q;&Ơ8sB1;5 IDATu&SٰHrx?&ۉi u0hp\ l )<=AS]]~_Smˁ/I> S"nMм]~XcF쫅dqFʶL.t,I= ܇2ZZ~_Z /uoHN7(_ڳ{.lـuA%mlzwbzM;p`g$ia!xپg9aVoSUgⴡ(^4}-<ldƖ qR Өэr iznД]!#>z Ti3]SNr& {WbnM`Wp3́xy4h f;cSn,ؿ)݉9)N\'ǵzLoHoB& Pk[W!kt?[U{uF2?Z ;︪7ν.pY,7j Dq@-Ʌf٠a,eN~Q iCLe{ _/_>9S? &g-3d=ĬjtXNF Fjd%K᧊C,LڤOA6f[1T0 0O͏gN˼wp{%l3rwMܥ5K=$N6d FFP@֡Hܖ{^NްqzΆFc~SV<"V XǮPG38um 7I'Ύ' /B9D<[eLl]&yG}²RxUb~&b[1mbay,<)aqyp Gtۻ%k/jfhPLX@aGvF*t)]fRR­#ϱ)l8y0λ|x1$7p,]%P벐yܭ5=~Z }4z<l#umne`d<Õϐv}^"Ν7@ Q8~,4rdh2ڼLOLd6TZ#gpJFʵL %)ᗣOTg"  `v\|:M'!ϡa ١6}F D D<</-ԋ\~'|ФM1Vrl2 0d~}qߌGFeAhllN@`Hdrr4$g} YwOQSj6cؚRв0 t C# e㎡Vk04lhb){QDG Z>g6+|K/el7gsGDad:3FXbrH\|f!8GRe# ^aϒaSCI֫ЙTah?"습Ҡ3 cq5WžTgv[o"#;[fdx~<ѧ1~/ hsu \'ѤҘDt&$tz T07A%KRl$>E":^qVF"naq!0aaa|aa႖aaaeaa.haaوqF_w^ЍE=jm%<1&F?;AN/l<20ٶO:636~ 0V҂S3}a/ϗgYA@7ܮĸr 2 \17\<'Os >dIwPQa07}4RctUMͅ-,Р'fbzxlV|0 X={;~MC6sF }e:Aec>@LD6Wૂ1|.|}ixq=od̲3na_/h owcڤθ#iŷJ=j[\GlzH80lSV (=}??ţ\$E63.ɣ-е#иM3~@o0iRgw̢ >T|f}am7$D5zdfù ;[X@dPX9ûxp,S;F;C&P}&sGCKeĝ^ĺf,M?Ӿ ߚְa0v0>2vֆJ[Xx$\w)wF `||< ԛ0Թ ƿ*ϩZ\X6G;ƇQhFrE#LK(v q}3>ExcM)௩ "~ G`SVb:1uL{A0cSr>;m /[jU)m1ldﺣa 4qӦ= Yk돞c]a7b~ŵ쉀3wty X36·HspTN*_WRcA]g#O؉f&?}/9%H5{nà+Hs m#xג _<{)X ޘ9(t,={0|m9[z7VBy\MXWw .hfءP:t23pc,-M BҎKЦX捈E?`byzy2hoq2~qnnx a͡=žuA Xx6LTX3{ j<:Hw_v($sYii"XuXs`>}_FoGs WW`8gO<(JEbSj>3Hq㙗iLgLAF3SNoôC~d(;mK_A]06?>GR27˦:5FnC~v4(16u+JKg"ĦPݳBJk[0]4^H¨ѲGR6vN 0}Z'8 4&`d.KތܡRڢ^EHJIѕQc3zO{ѹ}˓=m'kFk6ڙ5xvx 5Ѵ{翍 n,D|ұ)I*)y뎭BOźu26V&ClǫnQaXљv0,-]~L؏ZyBFrn ޮP9w MGwHW}CY= 7 Zʊöc;2' xlE]=V,,U.TR JTǨ=]2N9{B@8S8!2*ru܋k2<4r %7#ӌ E&O23D*0LBQ#z߇8rT#(&| 3!HzpA& A&<C"8๨ÈuG\Qs)D4Ye=ؔOS qI5>R^+ߥyYӊ^H.29r9C&3`]?!h<nx,lZ]_e Rݽ[e}BKnÞ\2W;'cW5d%bڃ^Z@eGjR*\7>K#?-݌ج°b{hM]VތW㡦'/zc+q2ڢ?`hT}d'Q=qV9fE .:4m9`d.t: 37ŝ<}&u{q$K 7~77'-v?xd͕zɩX܎k.ê@1+ g49#?¤V|1bSjHMI-!%"rFxt. ߩX?l1HwSv?~_-,LH$H_՗Qgw#1kGgj@'06nۃ!=D$o !N=P<;ȸh7|J=D P|y(`NyTWx~x,9 🈏##<·e`Gn/Vd l)'Gt\Imd o8YETTE$bk肆Gn@0dܣw1(uԷz v(5V C]i-L`Č}%S&l?Dn^ hpc |0b^\d o"~9u ٙGcX3H)+#)|©>YM!SOHMIm[mtB~fK {٬;2zNCl_mf"YK(er3bSZ̑-(};{!t{S%x _Dp10 Sx-0 0 T70 0 -0 0 Tf#>Ӕ:aamkp PŻF}2.s= #f }7%A( }WxǩTv+ʂr==:~/Ş Մ-|tZb @P4´3{@i揉𔗴 =It JZ 1sd7oG#~ {($fOތ>Ћhʘ'0 <-? \;^eWon<.5?'AwqXK *5Pi'X9zo1*WXG{YWvb[3u0oL܃b1"c_pڌ#;1 a[$! o|v9ZXepM_|Tbyˋ}P[ާBLs1pZ,&?ǫߞ1)6|>sw]@59/Oԧv1ϲ"ڮ20 0OA[7-VmUq|آ +gxw/.#$ðMiX PCd RVCH6J8OhR5|cՅvu/uV3]_63AZM O[w?)x&uF}K,C&JE>5tmLL WF/O 1qx&mNè{۱>нcO݅\i=[5ň68L.k0EPs=Of \bN5>E] 0 <ɂCFpryJ "RA17>+pې5j#|[t8y{Xux#1dfgX2[zpR.bD*ԡ7b~ŵ쉀3Wv'3/'1tk0hgfN=+`yӰd3߸uiYϬfUܬ'Ǿs/WQ]e9ghuRb%. $#zAhn ۇ;:=,ˡOUЊi\/b*_ad`Ptmf$ = 5c۹CE~ sېY{;OY*2,ڇ&!;N[mdXJV1.)TEA~oc=8m?cҙxl9 "㓡V+R{Dؕ*oMk,Z5cO`x[o3)8%#ej~(2D)BtQ-.}L>MZl./ 0 d Z½u.q>qBdU =dxe*H?ݢpP/`}UQ}PZJ! dzC5jY/QVuA9aƛc63"<CPRHCV{vd}g7 nc9D2\ݹ7M@hzw+Fꂅ%gk,Ǫ{dmN'ާip*3=y69aȡ_%ybTԧvb5  c(k8M)T0 0(hIx:2P+l`x|8ꇪ: lHMJE^o A0sYѕ]V=F wd슻DX{i{;E/9g۰mq~()q=[H0av$ 3V.2@N1X %߫d3qpZ7Y?9~X&ݟL.XVa1O֜ &w2hcX{lx%>>"6ʘ'0  AJǒ+2+w/B07[t~g(+z? 9&)tاXʘ'0 Ø@f#v=vNT-ԛ0c5]ހTaableaa5ݡeaaߡeaaeaa*QRlt_\>aa-0 0 pA0 0 0\2 0 0  0 0  0 0 -0 0 pA0 0 0\2 0 0\2 0 0  0 0 ק IDATX 0 0Lu2 0 0\2 0 0L(h)i6b/@^n,BOS˲|Uͯm>I ]UU"cM^1RV|'ՖCdYڼ>Nk<in]].>iU- 6z1VI/,0fPa2~ ò1 & 0 SKߗc{AxP|KA͑+]Xv"Qbyˋ}P[4ue'ū_-;ycfܼc0\چb H?!#we +O6c:Sn)GOUu,Os ~o5 o.HOfӀdciCзX˽7ML-HP4jHOi1RF5R& }V} F񚒓1ޮ`[8@@95z34&AӪ;];j B&Ɠ."wh4њF+Suf.qcAsɕNԨTp 7ނdȪ \˗}4YL׊@uj:Y`Z bwQD :Ov]x: V5;=7H1vT3NR聶 t{yR@&đhͭGAO-P&NBmFӎT0ڣ#ͩΫG(Y_azu&]ЗFӎ\"CF4 nJ ޠ\u]:Zut%?O_vCCRp=z4*lMkԦmOOfP43u{2] ;HkB1O_ޥuetEq=06F /ӔR?ܠE=jш0 CDTg, ^QZ\:!6`,7cr;woRRp 1.𲑗VMʱwۈ]AY$xe;OYӠ7D<)g.h3#陷1¨Ѳ%!u' o6lFhX[X+CBDd;"fJ]D U} # H|RcL,H嫤I

!Ag"v]x ][qב{ ۖnh\ы61& $ '5]; a+r^ ;-"/rDzu 6%ܿ>ÄۑD,[Joowz:`3Ⱦ{Kģ~МQ?˸1ġ@t~FaŦ:V] ?7R)R\Li/yLw)|aEt!QlQ#CO!ϼK_{H!Rª7C3K^J$.SLv{>.F=ղRR&id_9`M~B"2N%O; J$2Q^F9a RX֙g_ Ab4yJ) IOK6NzdtF=ޡf\)f#1&Nj~*ɼd?h@Zn(w 4N; ۆRb v ΗZ8 .Ӟn;ڝo8 [H9{EaX=]Z؃ZsԼma"*,f#v=vNcy0P)b"JTBd/n-B0L)V0 S umUyJ|60Zaa~ 0 0 -0 0 Tf#X1 0 0L5,haa Zaa႖aaaeaaeaa.haa Zaa႖aa႖aaaeaaDŽ@Dj`aa+|aa႖aaaDAKI}r ʆn,BOS[,7_w~,OZgA*w ?>Me ކ| 0⟚dD 􆃅 V)h: H)@d[ó|s.&`}v[`A@7ܮ~}JE|.u*~OK 6z1V]z._e6a9{葿5OQ?u-@5 ]0󝕸wa2Ґݰ%VSn)GOUc!4Ytxf 규 D{3>"YҖQi?N 64nj0ylvۗ)xDJ5p%K7=|{4/^i`goA1uPKDzJyz4A2 oHo+r" y(^Fl (#Fo&T4ڭ;M?5v&g"%Q>%8Zִ&[n4%#՝Gjvx4zvO5w 5| ЙtJ/I8O1J'jm*m`eoA2dwS_>,kEAuj:YPۊ bJAiv]x: V5;=7#f^1&NZ*xs\R|JaXmnzD3+oKʟSw@7lR|v[i=>H2ȵrJ3hW\.ۡbk88S@Y1_YP;h]CbSM [8:߽Nț`Xwl]}}*֭Ɛ2O> ]"K@E\fLn-BRJ .JovfhTFX ڔ#),1$.vѽA@{lǫnQaaQ㙥rod23Ő 7ABln/GevJTҝ9๨ÈuG\a53I+L,,l)`, *g(w<42AZ`:heAQ] F.e W3^Xl+ߗaH_o؄Q V\WJĂ I\`n^ѧX;9R|Os*SYGxT^vKŠaL= g|6 +<[ !e$Z{˱H 떈>^Jݏ5??Y8b=.Gs ҿNGa憳S+A3ɑaRg+\CY@eGjR*Yj,ٟ܌}XX9.)ss2v]CNV"V=K#?-݌иmRcL,IȑOjN6bo{<d",[x?vC5O ŷZXѮ\}$T1]i~&rP_`,Nњ/OtO깇V AaC͞w]h4 mmk4)ƼHV뱴\v}BHHHs@e-I{}pLDCޣآF9%x]:oW_N"`hNoD_mڲb.}GGVgȾa9-\ՙDI-Y":g=ղRR&id_9`=| жigABɗRtlG{e)AgJgF`~ҥS(=Y*Qwhu/WHb#g2JubsR3N-Jִ&gWz}tɗ¤h4¥yXSVK&ҮHOWv%ǀ-OUQ~;Tl /ZoRQm(cj~ʭ@lVc*qf#v=vN:޻e"fr'LX?ބS>V퍕#z|0 SMƚ;#})S { Ӄ+fzˋd2Xv4|,0 S0lI.fv7 v:3 0 0LՄo1 0 0\2 0 0L(h)i6b/@n5vXޓbͯOJO2|_sIF@o8X`o%cI/O<}q[]rHɹ)[ȟEv.-_Ȫ}v[GA@7ܮ~i|.ʓOs sGp4'˓WeU\qm7}4Rr0\2 De!aK4U aa5鱑\AYc3dE݇e6ae_+RQM޺:b+;[X@dPX9ûxIgOz\2 ]: {ش_o E63.͐xӧ;fxhyh=t@H_x?gkCTP,<}#=äIQ2&xd;q]"f?QIF)?PWvu{%l ⟚_QS\ +Ax@xיxMs}B{"ڢ㛱H7HIIZF/V9Mqrs.]ә=@҆эC5SGɡP.b#z9@tkW`[JHҨHy2rX#ZK^+k#}JΟRm+*Gqx.0bfFQ,|)#fܓ!#* z hԚc'D_E΀{`MƓJa ear Ͻ$ ;o!U<QnQa 1^>3WR<*ve&33trO\gR3ѧD <=/ʙLŃxl-axȤYf<'G&zKEƓי%5O纊EB#U%ZW)- @S ZP8Y&uYf~*[=RRWdpwNƮkJĊ_Mj CMf)6}][qב{ ۖnhՅSCzh 7u A0sY)Ǖvum̃OLgRYy[GS@&ro/8 ߩX?l1|Ixt.u+&"R֪c^WOႋ Mk>+C/\VtGS©>YM!@y+2Ww[t`#Wbc&@?%6+qd\cx{>~-XOG^]2#lSl. |'^񁣳޺<K>y]ethpy^~>|M>>ja0d~2V!KNδeAәyJNRSeuFY^X߯.\>ݦ׋H+ETgArlĺq"*#H|=!6 63Ӭ%2yW1N+#VDs]hlucZWgƓw1(uԷ2/W^T=%F{ Ћa)>V퍕#zGa aˋd2Xv4|,0U2 0 0Lu/aa.haaJ41 ?;AN/=ߞ"~F1*Ui.%4Ɉ  Ycaт:#oi4;#iAp Զ IDATIavSO7tVA_=wG- pvnP6s႖ae!aK4Uwj2 /?+ X6v\2 ma+ lTѣ]e6tzi@otwڼyh=t0 =6= (aZ9ϟ |6TJZ #E܉3;F;C&P-܈@#dxcf(԰A XuAoxQo 'mJʾVh0Թ ƿ*ϩ9L,!h*Oe3eHL>v/u o p$ pzY8|]l`W; BW~ƌ!f) 39\ 5CM9l#sM(-Hs B^wG!s0gd y,5MwHNiLHPoۿPX4iU͹@#gʦ8o+/6c ˎuhHU7c" 4y(-8xr9tijJ։3g.Qԣk1Gv"R5q*m݈|9DZ33N6P·<H./N>I#:?ɹaF-e`Ptmf$ =V%' c0ƇxFULJHRtlgk"5y'qt3tlc 5Ѵ{翍 n3H;X%ovP)mQ"$NԹXcH?\<ѣ{ d]OUh.bXmdXt&Y}oL~ lfHm+ c6OXpۚ ME2)9*CJ{|ʖs3G=Q,~B&9[WFu1dl LϔΌğ\0 _rK)k:E5~L%WF~ U^E΃8@psQ37ꨏbK6#3vnQa 1^>JŨW8(- 2?"a.Sgq; *Eyl$նKՙQ'kd8Ѩ5"rS"*_":3'әQ;TZIux}S?KBq1j N m_ؤpIOjc.ZaG+hoP?ႋ ۶e ߵXwmfm @L Z]X/aګ8:ikzȏ0._2 #,{!tfn8;:IRe0v*Tz&"\ǣ Vhna>+C>ve.UgRյw 9YX;q~;Kg"7c;jYLvxg?`Z n a>d8DLq9~#KP}am7 Z (`?;³|Xv8 AUnMpϣ+>pt[`'mСYkmz^yt-|̪;H%,Z̡gD °pU2? Okd%H'Fy+2Ww[t`#:K2c&@?fc)q€_yapLS|b4e37txwđqnV 4uf&rRVy“":3C$Abaa-0 0 pA0 0 0\2 0 0  0 0  0 0 -0 0 pA0 0 0\2 0 0\2 0 0  0 0 X 0 0Lu2 0 0\2 0 0 !{b4ÓPpywo߆=_"U] ':o%ÊWBic-40S⡿7`+,zʪA^U^MmkE @7WS~t]SLe WJX ?%y2%܇͝G@F䫿+g٤f9V},ͻi{bUd8^{!O#1:{rntWpʞ0Z.pᄑ߸x1{= H$ɣJhs7-~TDgI|fĥozQL2dǮtmQ(7pt23kL_􏓜"cFpG?;=]g̬KyM}n7gPX=nV&61?Kgӑu\=kMft+Ojo_Fq{.cY2cd<9א:$])T,V)KMسw3qTo$[6,#SB <1}pvԡ(PEwɵLp>#Gw@o 63_U՜ܕpߋ=I!cgNUGUw@\ۃ43lq[Ή\@k#8әF A&m8;@UDMw5hԽ$.G(ey? J%s2J" >NzTkUiAsO\=`ѷj63'O3h7&aSRF359T[D"<ʄ ڭ$Ӈt;wR_Oٰx:T)ٶ)ati?s~a!?fR o;9GD[c.'~wG4ekat=Gґ]j+pvmKAscRvD+l<]Kzu(*6SP1\&#ue 1'΢C3Q?Ɉ?);7LEϷruk/ƧPl)Zm$0~n]KESf2yΕq,dr 9 j[\ɞZp貂T:7/e9;I :lT}taZX6ǵJB[}f3MXH#ci[4~ڣ\3gjr:Z壿V"H$177/&͔wt+`iOW !w%C`J%å/5WB_/r{5\pu!R~ C ɂoRns)\0~;P^[TvoN8EHF&0B*vͼx&W24LLMN )e+yuWӴq?؃|^ 4Zæ<аn;l[ܠOΪ'xW9UuأBlݾ[*-adHG7I @wjOK:渶lҸӓU_0~%7&+̬4J$Z֐~>gn:,-(ZE1qjeV\qBrzOgy{"'MIkfVM)H5toE xvY4WM=)@?g/m'18¿fz-8$NZͅc;7z6HtWTm9\|1d'3=_#ϒ\/ɩ{ƪ(:5Ff싍!eCxp,չ$ sHCK?1aA'>9mU!e;`X2˕ߛ_gjrZJ$Q?4 ʉ{zƣ9/xyI[Ews\>̴$nٳuvx㞺s$!>f>x%g.PTtQUIOg*`ceaYfe*r]O)/} '(,ĥc)S82{= . (>Q0_dF6Qսxx7'I~QgeT;c8W`ANuU~Apd`̉ā4pPc"=m[񀕪⾥h ֚B3>9ՒOK~ŷj6+äqSf4{تڧUTo%D(Whm NKU7[tдNb2?SsѴzsXs+OMt{Skl4A,ؘA*Tf{RZ4Oh=uncSm)_&bWPW?(;ַeLm;h$5Szwf,ZW?\:v=EMwM}\ƱrJGA}p95x" bV`Qךymo80+E66xwߢ)Tq<'ܪLv_8xd?WM!,.nI[k! @# w- }>];*1aF6ǵ],ߪg +=Öien]]:LMNV1DHPv3_"H$D"yJ$D"HdB+H$D"ȄV"H$D" D"H$uB+'~:٦Qu ɂk J7vDƮ)(=ON;ͣVąt ˖‡n}_'ːŢ^ ܇e{(bZ} 0rxrc19/ \~}ƀ((ꌋmY^:Mç?'Knǭtxc 8_,֦1`C/ؙɔ>%))ǔ_Q0&"(Ǡ4`׊oB Q}Řע}uɮ ݂'JxH$ɿ?5Y3$ r]89KÇqauw@Qtkk"i=Y֑ƴo$y8V+#2V)~Srk١71 `eϻo|\yy +8R^cǼ&6}B'W|UDOlMg~usĕL ?7;C<ĹSiKjz}krJ3J:94F"Z[Y.D\vp.Yޠ6˦LdȚ<(ėSv6WPM1?d>P\ 8_~f4s+Nqqχ>C|ir^4v~Ƭ Bbwx6q{hRv>N`PnӔ<ǟoI\LckLJ D<7>uӌT) ~4R>'Դbp'oСwoĜqzvg>ȉg?WE@\΂: 43mI⼯Cq78d(?OSILF ~OI梥|F{VM[cWMxfł w84[^1!.%Zg`] }G'<([5R tR\+2!:x43ۧҦE qKoXG2شeH]ʨ?Nud`2}$(:Q qdEv/ޕdh0n. iݸ &">/MhEǖtjǚ W̙]Rq>#Pt88T G׽$k]06:jRYvr3gF;qˆ R,IUm捓3Uf"AՉscR-vd:hbgYŅ}}O;Zў^js M?ƦI=傽&cIMtk1c3V4 YfuZ~xoZLI($/e}DŽ|2|;yG5UF,`bs61 m%jN_>n'; ng|-􊂮xb7Jer㜳TJƮj*b1?}(S2z%yt?1?sfts+P*+&DIrBhiK)OZZN{ eZ?-fЈ&< bIik2t7/E1K3?Ͷ\]eysz8) ?ߏvpТDFW`PVxVF%*VJLf@[=VoN|uLjȄֺ|/#5γ Ɲ+.yf2K(F /{q;KZ W]*N8qSSE}t9vfp$ k<eN6D˦DŁ24q.?qTB⃰mEM㵅LN&E0m0[3K4 f-wc'ْt3+Whˆa8yٴr4:MXwwWh÷7`l)eMzzъ~=p5iI޾x%9g Rr/P~FHi1 D IDATAޗ=VMbײN=K ɯ kƅ#d 5iP0bŗW4rk4;)n<5cw/O}9Cj<~Z?ѭ0__a|,bPrޖO}α<ݨr󎊏Z-hhZhhLL* huưt$o7=/!<Ąڦpv4.$!&TĻa6F#+#KvݵuHR|9VI4<Γ}5?ZY7LZUS"~ޙN^5o L#3x1޵¡JstCƽ/$la( -`֎tӶ3{[[y)@hM.S\_ӻq~QWE:V<$7?P,Ms(NP,gr8>9U|ZO[vbm:-P?ɕ v]ɆߺHn. V;]}tbɊ~/_u˯$4ނ *9`Ɲ m>*bC ~cs\4 ?Ee!Ȅ 2ٲ&:SҊFg:o"<6tO[-;>&r=][Cvz~4pu@ݵ{і/R\C>ӋY&N}5ř>h 6evv-pTWejx+)N`joM=47f)Yg,\/|l?'PFS'CEdaM&0Q޵ Dfk?nz *xu`06ik cWjO5ߪik쪶/OƼJS`Mb&Ѷ;+~p Df^}dzL,~ Nވ0ix-joQw:5}鵮._Mm+'U:=Ӥדg`rVlŒ< Jv -}α8S=uu3S|qKyt|CaHGWˇ<׶:sI((?\i~,NSHu#0/tQTs%ou|-?Wak Y@ؙ(H$D"y {Fՠ;$t,bhxiyog(ws+B ſx cв(DEj:D{̍ffG"zFᥩhSF|E.dpG~ĊA[.p2tXȵ+}TϮw3*R#hL7<-8tz C|IR-S}Т=mg3mHÐS"H$G(:'f[MdP\PotÇqauw@QnɵM Oj4ofr 9 Mܴ,HA?Y2}u!gT;ֈk:?g˭I^A W2\FњJNxdqҭ3]|[S&i"nLVw^Q9D^̋VFdD56[9G|j5h4}ЦPA-vsL6eqGJ\I/lgѱ m?{/m{E"H$ЖUN6||!L^O`ɓxh nslda/OC"N|KyսiiȍY/qpdzl?7?Qt_ s-;ڑGÉ$q/9~_;dۿq{&s1SqÇ;y{&ck ɤyV] ~OI3rԁ'>ޅޖКIά_g5yq}; 08{[TŋD"HdB{dX"MzR{M&ƒ~ vEuxcydL'$pV\vr3o]Rq>XEǖtjǚ WoN4 B?XoϠ]06:v9S K{]Pd޺h$tVT3V!0> N ?ӭztŊW{++` Oܲfꏢ "2;%' + {g/Ѡ'bMĵ_^݅C˲Z"B[- xK(T[59M&>Bo"G9GxQϔTj)&6g "PwK7@8gk=QkSGjD"X"n#'+-׏I<^d,Y'iD"H$ȴU"H$DZD"H$䟆\H$D"ȄV"H$D"y,Z?ɖH$D"ZD"H$D&D"H$Lh%D"H$J$D"HdB+H$D"ȄV"H$D" D"H$D"ZD"H$Lh%D"H$J$D"H$E!$D"H$T D"H$D&D"H$cЊDN>'NAQyri;7C`I cg\5+X5& c^NAhлШe3]=8+M{8r>Xor =^|}NIPy rC Eӡ4|sb.݊뢳kxKm< :4G-/WM&wN.fH$2}sz""tt?"8Y>i2fG3m#džbK[k<{ d\Aߌ)< e1Q߾oCx>t-=s@uI]۶Ww3 E< OȍffG"zFᥩ~6iL9,cXhdZԣ'=_L"&3Z{ƽܚܸ_ɀrmFk*9;4IT:S8n,HjYyR:o {(mH Fvo&-q!4K|{[WR"'W|h[ wjt~-ݽ;=Y֑hoŕL ?7;-VMܴڴ`6o.bx3TKwHU|-1r\ߵ՝i*2[g癟`ZZLXck; Ycǹ.,\sߵZӖhJ 9g*Uj:cՠ3.B/8OJ(R]ŮqSft0?Vw27YS\o&+s8y^mˑlx:%.3{C=.81Wh[{FNĮ|49j.捉bAۉ>ZD"qC,xL1ڋjDnj1rw1'T\Bwq>-2rD̄f«BnP&@l}hSՋO7 !̷E[Df/#* Z-nq"ѷnO1}%N>Zk8\$}P1qkL*k,GG| ”PVh8]Tͨrhrc &ep\͙PH^3L)V V,vo 3m\l nɿȁȈbͶ,傢qgl^;65nPd1/0z>Q{i(Cw0صӍ3T9t/BQlWNw;Eqxm;.2q}Q/ „0g3s+?aoWܪV|\rB_oNS."ƣtJqVqA1tA~B]-?؎xqOqVLLՂFVEƄ(n<5cw/O}9C!, Ɇh48P&fe!=L OyR-϶{Oz| EJhp o@Vt3 TѰ)?_EC ?8K0ךx;ƨsde1wɮ;W vz~!Գ?ܗ> `;3I0+G;C^nS}JstCƽ/$r{G5.blmCHٵ6`ߋEגK;{27elLu3f8۾`ħ搗y1mva$.g.TEez70bwn(kH$6-kbک#>%Rkkt&cnN^#ݗ^Ք~x(X.CIzw?d`O^O^]q+~ږJ E,RhI, Lņs7Sƒa ZJmaGգVϏF}n[sꠠyohm"P匶x12^)2ntz)/3U?uMC#y `F.3̟CSESz"Yj\๷Zwd |Mz`Cx3>SQ/=k1gh?ńS/ *6ٞE{X ޽`Z_g߄c\щM:S%5-n= ,ˢ6.5S=ǒEnk薴۶cĵ-ljE{cDJP]^k|41oڏy0e1K:`„~3ʻVᙈL:e͒NOU\~zH$k`qLk\?W2gag=YӉ$c398}HطhFYl@k%&>%bB]LK0K~S"Fx !p~\R&GCȗ) <4T;g4W*cV"H$D"ݮJ$D"H$2H$D"HVO&tM0D"H$`B+H$D"ȄV"H$D" D"H$D"ZD"H$Lh%D"H$J$D"H$2H$D"HdB+H$D" D"H$D"ZD"H$!4D"H$䟊\H$D"ȄV"H$D" 9oƒbz d1O0w< IUOs<9y 6uH$>ź3b8K2NVE7<͓5 +g٤f9V},ͻ~=97O+hgQ8Ŕzm%ٺSjq9'^ݒj16PlV릮=|s5칏H$ɣKhs7-~TDgI|f 9uڟNa@ر==5AS;໒fs>q{Z#S(,ȱU##ݟ銋VYo8e$ecgP噾议P~ZG&,V4=@WťozQL2dǮtmQUɥi/{g,u4Y~Vbfg6߿4 8k'jMu7>MZL}̺5>%D(ZCy25ZV/ce2J}1`o3i*DpϏq=Y?3MѡdVAa8)$&jeW2v:%s1a(K#hq JyQУwpkBNzTk]\f\֯s",c!Ж访Sp@.wg@zu(FP>G7~_J$dXSE>5{`*,M̠z9;LW.U*Ez&ٻ8eKjfkʾlٰL}5fR#z;#|F&z.mZ>4jj5iáQd⬨Ȣj ꮚyŴ?͈-PMJTb 7p0&I8tuJOD"H]B{c2buC:mw vlX<rlB΀Tu9sROefoo I#w.՘p0dw-8tYPm*߽g"l.D-6|i~MB^a7v$]u $Y}hs&5*@߁F]#XɁ|yBo')ArsrR\o7q3c*GZ8pkNQ|*Wib|šl 2"9>H: cV r %Y3gk4\]OR);]0y̗H^RvD+l<]Kzuʨ]f)3<8X}V29sUdf|Zjv4ы40fpi[E׭=5H%&&dNziE2J$&|1 m)vt+ViM8xgbJ%å/WB_ĭ庩3h1~ 'WNUp6dRP`2 9M_)Q$gt{DK$t Jm;X,Ne- 4 %ߍ߀ t'eSoF4%g[疋rl\kv Yn4I3]!~U?l WzfTk{BpơC?>ד=ԢjV]Rfk4r@jkL%,mG:zs\H[ũVC4A<+~}PYљN-ɢf|j38q1f$ljv6&!־ Ш^L-vU!y-}PRӂ$DZCk>\ï/,-(ZE1qjeV\fNMѠbci搘߇~֝S18¿fz-R6jBߊhhzRQOpbNWE:nS-:66hơG($l"Uܜ+8m;؋i8=֖TTv̗T|T^MLnKĺbN"gzG%9dݼ,c¬+voڦN.; %S\ af4 Sj.o)߹/ې?vs:H$pTj߇ TNy\ν%C攻I1&9nq}/ ӣ3D5Lg v[8Ws0q@ r8ܜo):(oR-^N&$QXtK6S (n8^ ]$p9npRc"=m[ݱBiYNbƱ{qXVݜ'Ek!C" g.*}%hkx㞺s$!>ljej>RL?rS}Lq!cRF\N,1#5T(;{Lhͬ_c|˰JazkmOI$Qڌr}ݫDof1iĬ d~ʣi)`5s8W2㝟 ⧔h4+X1g+ 8bf jn^Uη T^_mdkx3-ޫM{ .^9+2!m&r,l ~\5 Z ozKrKYμʲ4~xNU[oF@S׬qRUPgKNlO*BT wd!iQM,^tma:f T%[ 6fmeqeꂩMUT|J=;ַeLm;h$6mcF<1Z(Rk͉<٬ *ثĄTtW35ag2 ­ u[KT]iq1*>sD"<!̗H$D"H?o%D"H$2H$D"HdB+H$D"ȄV"H$D:h?l(Q:dqŅt ˖ʬΕx>@S H$ׄ6v!|x/pz{14;Z!ޙEUsgUDD@QĽ\%-, ׯZU_iԲ,Y[VjFᮨ,j* ̜1w0{>\9{O\$-m@d/Ez?Äoy{/r|16D"< F6 g6\i3Iw{}{ l { <5_ҮN(Wws ~Vjs\,;sg%hT'gOjt|{)HYH'= U=8}w uWͷOC( **sϲzhM]wv1kϜ ԎSH{jPtՙzȢڞoޛ4&R3WUo~̉KbZ}dZ‘-pwRyQ6M5iIMt0|w&ps@Q4蜼s+iKXG>O8A+#)>_2/K, 7%/l%gtwYiL2J$KhM\޼Ė kOj᫾\7gE"ɏ;f3y!Ex k-BώrLol&`y}*LfǕLLaT[@[ߵd[lOO篮a4 #z1c;z¢]S,+4Sl`8|+I jjy8\xԴџRb}\^{sI "3m%=ŐЖg%tїFiP0by*) F!Z-hhZhhLL`DnHĭ=q&iTN_;y%3 2 xwxvߗX}02K$OhonF8oK$ ǦR(vd*yDүF9fܶ2iFH,Df9FͨaD_{hmς]҄.߱qdU|orF냩)܋0&Fqk,JE<%>Zq3yŸ,14ڑeʚ0risc=pG6'YV8aiSdgsWɗu8>ˡW"H$|BƯQ;ڡ=~hkt66fqq#jt2PB6 xh{)\ً u(k{2q+M C{m>O*/bN}FG:ݟp97E/qMUOeKi=c]J.8"ِS1uh-H[&3e?5(0gYRoa>ɢ m;zC^#WIKcͦ襾!%ieo; ǰ'pQuCV>~*bz%o Aн >^>z|CVTե]<U&>猢ӊ | !.L#!H$DR mqɉVV t'V'|ƗAN O0tA҈w[S1rdJ-y,LWªåLM%>-KY}hP/ @5((L-l)Å(۩6:4ɶStG *jͶp}Ыny\\} fsG}*7W2S=[qeNS+WrJ$DZ]w8U,|/;QJK瓩RZ}xZ:uŦ͉jKӹ(9?! :d94ͨxX>ԙe"r3bp=)٘LYKodng/՘}k0/~;X0`yiW.#g?i7:nS=[ٌj*V4H$A%FjbE`8ۏ}_Epx֞K37 SNuI,ꄢmqջ۰s(x9KKjY\LppYO(rfqlQ!\pҎbob$L7f8FOIS0{d6:oN[=) 4G#O=T¬YiYZн?f8Or8{}s<ȰMμ;AE}U.L]2m{(h=\Q,i<yaH<5`'99&P\(CՠhjtTR&Z{:UR)gD" m~ZGx]89#k#a"VZe])=+N~@WxrRRGԣZ$]8רBR 5r.|7}Ycܢ`$lGhX{@L#vw,X츒)O> ~YtG@WY&Y7$]&َp4tTOg7*5£Ū~9첇jpl?/R 8T|EvL9?uvub[aS(WlS\i)H$?[O ۦ;zgoO%9.go41~`LJ6 1K "3m%=i-kT}%TeU Q3`,gDnZ0_5g7yf8Cx޸МMv atb' p)UYǙ ×3s^bDgHlMbIMg=箟cMLD}[yviƌ\vl8P)m-xcO$QeneUX4C^Yua=ڳo?$b~*Zű!ӎmӲ,)H$C n>Հ h?+<~ [+{,L+fq|j.M!LחET3Q4֍ڲ 5$JS?q-XEIW%L ]q-,ԏ盗t2MXÑL2SYIWmJzO`8Ip'ph,Иმr6f,$k+P1Z~ʡSi|BmD>8V橾p޵cTkϮrE tZ<5FȉzZT:%D"yhZaM4ЃYd\(D|v p9f.chGZ1)kNpPt@3Pf(Grr r:4hN#+Y'{X*ު-7m`wC ǦR(vy[cV[-m\v:4YWٿn+֢BߪșCF}ɷJg胃֨ש @{[r?;U;#@;o~+.Ay9ڳ`c6+9%D">-TY"("{QQE,mw+5\Ȯ|"^kDWSX#(~~O :E( I{/"Yt#^QNeDw E9o#; W!aʨ-À !roԫ,Fn"kZ {9LTtv +Nܳf1?":E::sG$e{@ Dwc"GN.*vD^B*Be"VUάbgDw z'%-)IYS89{w.q܄|X|}TirVz/WrJ$DbZӈ[[*WV$J3 IDAT.o9ίyWiD"H$;ȴU"H$DHShV"H$D"yԐ+D"H$J$D"H$EB+Ncsl2qD"H$G1H$D"HdB+H$D"ȄV"H$D" D"H$D&D"H$Lh%D"H$J$D"H$2H$D"ȄV"H$D" D"H$DRB(B! H$D"yT+D"H$J$D"H$EB+Ncsl2LZEVruLm>x JH$[0q~~7?aU9{{IvD"y8G#G4Q߂LU*bٴv(Y/6dKlu F {`絼91#j8܊$dM)=DׯBXFfq (J<>˘䘷Xg>;ʼn/ҺZ9\6s]o3g/i @I1X\9 yph2!u^cA_9ׁKOd"m-wetG *z Å(۩6:4mBY~ƌsOgǕP/H$ tpMk[֚#g ;9;LOh>ZQ>şB՝\YD *bflgbGF oL?1<GiX<-669t%đy }wY|^x8K|!YR^m⒑_T-rbztt0WuY4e;~KŻۺ A\^J&chҮ?oDZm[+$BHg`|  s;~Ƥ\xnHbp=)٘LYK_8=/ףߧ=~)=D" uodp&nş6tw!c"{v{{kj!^h]ldhv҃\(WgHIrt$=k5(L+awKbiW'EG o?怢h9y> V=ؔh5 ݖr#_mqջ۰s,֞Y9M$~NPL cyʷ }W'2ɢj3\\?AeqrF7N*N֤݄=|OnFѹh 3^mBh䃶AOX"}h*4ԇ&i'9b"MԝV&Ft";f `LHOKL%6dVM,=n,V\y r6mB௯⤸q~sںPyt4[6q}>ƀg*K.x=k4(z=ՙwu#]wQ2$ݑrE8'P]l?nD" )7o$e;Bb.|7}Yc]SGO篮a4E78 ,jvβb O9M a8y._sݔƊB'?jS"[ jl7Ik[l؇ό:$1H]˯] s)ȭ=]cm&[Ix:v._kyu~vWgw c3*Í#۔@Ph^psFuwDW?#E%w9W_}n !%W7?㝜#84HoE|-I4ϧ&KZuv]_yTfS/*2?JŀJh cAQd,[όK7ryn8ҷ2^:wـɷ'0lmi.5nTj9{(gUD"Z5)Do8ApriIFDmrr^FV5δv.C;4owڅ?ƵKIԪY9mw] JMA}_w4Kr{r߈~yG d9{9cVUF`yMHTRz0&'@4n\2z,xތkUAXxb:M<2܇o tEwOX[} #'!IкT\-B@PgCDOL`Jy'J"5Y݆ׅDߴvҼ_yTfS/ R&#ޫ)w}N^wfH%+i7o:f،y~#z]?ǚ.'4~)&9Dw~~D" sv^byOw'^ᗨ_H˟0Qkvej5=B<g*PS4Y]IdLZga*PL{V\6W'0]_BYSՂFVEƄd,%qrb֚\}IOXYdNj@U|VY:W4p?61?Z@g򥻫ƤKX%EqIg"}7{pv[Jex,Jy4_qJUo.^g:kp8?ksձ=ܸ%,ՋE$} ܔ1;dmJzO`8Ip'phl[7j:6d[{\Z9J$Z n4/=MگQͩd%quW]YQVj輨~c"at'ΟV% \݌>zf6E΅N^'_n'ۚϡ['Sht H?2e nP2cRtu= b.q?pQ3j謭W{`V>OL6IWߏl@*k}VH?fN[qG\ςΑ~ol1#B&D`ٿȺ}؟vR|K5Y aȐ>}&~/9_Tc7hۂd͋|)>=o04*SJz޽1ūq3JQlhmRYt`5і6.;Xu_UkQE!hB,wn@}X 9)i/2hS[D"ȄV4~A˗Z[#8GZP<^pr}w&jY1 \ZXՌf.zyFЇ9~[5hIcV9퓥h)hn[P^!v'{biی7K;4p+O^sXA[}y}X47czpMnޝ^x]uye`ޛ=~˱lNJCoVNEBAjN.~/V/c:nrz R lN+&1{|_EQ _P;M5+"RZ+X6#-?o5|@\ ꘸?AD"GPD4ǖ13$BV4_U"+JK9g>"}Lի+'D"ZD"H$ľV"H$D"yԐD"H$J$D"H$EB+Ncsl2yD"H$G1H$D"HdB+H$D"ȄV"H$D" D"H$D&D"H$Lh%D"H$J$D"H$2H$D"ȄV"H$D" D"H$DRB(B! H$D"yT+D"H$J$D"H$EB+Ncsl2L&9׃7qykn5[u>*՞:*(VQsRn6Vӯ4uAT}a+9$R:fJf~Gmy̎"?0.1>Ԙ.SzEω_5Jrr6JNҨQ˾~ˍW㆑#(XMa3Hg3 ڐ/ v< 1Dǘw>d!u Nb@,C}ǐDZP}jޖH$2HdKńDzP `cl~FQUH{jPtՙksR3{d6:oN+'RiFnCUG45y}AEԤ%5+uX-C`$A~EѠs"8|?G֒@kg#vuAxj.]P&׊3,&R3WUo~̉K{cfER*x/UO~SKjۨf lJeGkƑZ #6V'lR^,,6቉$,:m- l܆7W*6Ʋ{XUuXtd,n59Ns RK<rX3}?1]+UYl)DewEi*,%ZgZC~v;El*|Y!R0%/ʉ6n2 Vb׈/j?]ê+nW6{22Fd [ۻCⷱ5D;+ ~\!Q.ȴ<z ֋2\VXOH?#ZCIY-.fSf^t5v}S|\uYVyy}f_.Ҩ:!'1RwF6k=+fQŔRC{Ydds?5}O3X/DO[HKM:֞Mahew8-LVZ #vbZ.jw)I|O ]wX,y>D~sj_i~˖-Woo6>]$أ6æn ̿k1CCv]c\R̾?DcG}>.<}q+>p'ڞ+,9{9cVUF`yMHr^FVTS̮ z{A򎅶iJ 'Uv1x+4Ȩ؆:^J1:K֎M? ^4ևvsxٵTƻs_GyX`ՙO);soƠU)uڄu*)wUW5&yK袷d3)6YүǑb_|J#^[4mgZG|>LTqOKRdhb)XcaxwKZyQD6N?{O.ZgnV,9Ҝzf"[BY'rl/]"J7g!;ox*ȑk MӌYšsD-QCWvQ559uhxf  a‹h5ɍS͎\!$#˙;],^}fsL"zl+9}4E YC;LYs؀Р9dўT2ab][ЀYR_+,3~(xx=Ņ!MhBNj+//V:{ <;z1&}|UoIhЂ=6ݷWsLhK줠{SQN$qGd<vj?eKQI z|<ފ54MDղc(v3߭ DӯPzlEfj}w[Gsr: =ӸQeW5U9iQjt^&N8ѷA|:=WGu3'QU'^{GZPYևA(8uOIPSy0N nU y/ƖwKA?Ռf.z)G6]>p^"97E/qMȵ_,DDDV)F$wO džZy| 1T|BR 4ǖ1ʵO:-5H$%RĊ.>]C#6Ƀ#cwk>xLfKL}EɧxLf%I x2<<.)zsJ"H$D"y8 6D"H$J$D"H$EB+Ncsl2LB<[ꨠ(zZ:GiE-˿G,3U9NW"yT}*&FGѮJ'7TŖi]߻/rrml spj=hYY/6d?>!)>;^!Ph48Ѱ v^xzH|4xb;I-tfȔ8[0T%xJ(9ZDB0--EQׅ6_οy$ǼE8;NqۛYX"ål aC?g6s񢟶Ԛ%̕ K//P翻 &R5J?|tٿfe\.)ȄV"`"e{2\7gE"ɏ睖eN?˵ ů7$];͕i=qp=a$v^H`Q| {8Va2;dbCuռJO.<@jZ {`ϰsƉ}8L#(kj.|7}Yc}RmJ (4 Gx]89c^@y#-֞f7s՚֊r9q|UGQvϹJsNp W.q?}x''r 0w})_|og(o!ɒC }VbݢwWm-cޗ}^-\BQEMux1b\2M%gSPR]-Ϋn~S4wЖ Jyj۬׉6ջ.}Ճ@0>zq#-.ǡ97ٛQ@,G--jk2hx%~\iVN0ˇMA}_w4KrU3%ޯ7#;Z#{P&.3a98?D`Ws0gi-ٱu`־epFc(}OǸv) ĘOroshbpջmG8cAr^oDPߏArr^FV5hF4qPplʬrfRsXpҒzrhFֻO Cj;uLǹ Z0.=Y_=3ٿ3W((]dɿ1(m]HMY_RyتrR4㻪>XLEfuӽ)|DuЖTBsyJ'*gΜ1hUU!Z4ZZ-Zh4&LS@ q Loپ+Y::_2b O"_$`ʞ8 SalO<}-Wi"P4-aO ň1_{e裿EJ4K?wT}GCG,ɢ]q~ǧr$"t} ]岭:b۞7mI5pؗEz)QE Z Q;/;ƓkK/Yr,ctߋ dM-3UPc%R ߤ3>=8;w-%EY\2qDϫVs,As⃥{bM,/hmvTR|%Uztr且tWdu*6&^9dB yQD6N?{OXfŢ+{3!ͩpouϛtGF<OȵD& k,u.p"v>r;٢j\iFH,Df9Fͨ]0YGBb0G>ZMrTaOsL"z«6nFN=ma~FȑߝJF.>`ʊ8vs7訖sh@,y)XtPkϡAsYɢ=d\U\^;{7#R0&J~ Ae ܶݍfqޘ ǦR(vdb\ZF7ey2s= ~8GFIY < g"ebEJ+&K2i߮YRTr4',cůS-^CbW6w\-Hڻ>]-[=L%Ж8"mwl۩:Z@\_Bg' Ĝ6 u"3X̫]Kzn33Qu:ݿ1\O㞭LO^V9;vQ,mg.J.1^^|4-^CY^;ߓ=1-VkܑSi ﱋ=G y Fdn :P[PYևA(8uOgf4s\/ؠZ{ʃtjwO[ܬ8ߑی7K;4p+O^sѐƯQ;ڡ=~QJ[#4RA,n1,-f0dLXj>X >_Z5:m/t9 TuW,~So<<(8:ehe +^G?t;]`yL+88!y1dN, Jˁ[vbb_rI]D` >#=o8G'M`#CYR&|'}dsop rvZ|đ=?*#~d D"H$D&I$D"H$2H$D"HVdR_ *g#!^h][#h{p kI[8DB:=mơ&3ETto5>bq}?pSM&|<q @>y&]lY)6?wnAYwC1V⮭{VԨ\_ 7O Todp&nş67пG=Oy*m]bY\߾bYf?)Sams ̢[USjIFo+#tqWmj:(ŞoeBp Z˫P\;cIp|WdEº-Ss`BN1EsV_ɅHMKaϻwcW'B}nJcEϊDDe!5T[l؇ό:tOUG̊.6$כqqJ=(K=RZ6u"a dYTM̱Ӵz7hBgJߡx.1]J®i<+0w,tZ*VbPƍ45¶=ٛ}t{ov"Č1b"F{VUTТtTUQjbAD GXId{$u#Juz>y3p%焔O2q FŹL3FlspԈg FT1ūuGkt#[ͺ<>}sN?5[\ʏ>'euft̹Q+.ؼ>q6fE/k0ldyX S +W&1`d@i+!ww :?`T^{ ?xӁi{tlIwfLgFƭ J|Is}YHTh6>Rq+ˍbSF!q{,̱U:XylZǂ|/2xd#J0Y#25O|$ c0K{w+tNTL73lE|v*mrɬY櫋fwHmn#l^^=:Y{1r19<)F37A5*6)(V3ݰlti7ɝ٪R>ʯ>:ńɜHzFNj߃vj 'ýez.q><= hr *_;‘xf\Y!ǻfzO?"!?N/p+>|enǞ|FPj dҘ-i=ܫSEjb0;. ΍Ak.-pI5'i w01`#tNG9as+Zcy.+ӺE Zq)H !")ga7S5v!Zst"f֯͏e\MDpҽ˦>ZƱh%=AE4 w'r_}BjI5Rr~ܝ@ʕ,\wf%xjvAZg|7?_I\T4P>oT|#l @rb$W)t4ߕ@JN_GR`Y1Vn3aojj9`_[1\?Ɨo.[\;ħق>z1+xQ{w{w%];2m$Gsh?<-8"kµ:XZ{1xsVNlL~xÍpgMY 4HhJ6>f6CjΛ^Ϯ0;Ir|Y7۸5LQ=7?'aF*8) g/zK s+\VvsxQo,bhTh3 ۀq`NWq8_OdUJ}5̨OMvhV87wNNxŝħY,\wTo>MĨx4M_ڧ^]DW{KC+[D0Yu=+QTkNWNhf [3_g`0|9~ӣjivEKuQĬp]G*^fG-HMǠ%-UGc ֱ}cNU.cSOacS:zW-IJ;m+w+J~˓X?#7ogٯm9ymZ7c/yO,N!;?yMls磢8j{ǗHLU.M͓g)4ZmЊ(E5|xbByG]!/ B!OB! !BX$jt&E^K}E.w}J]lvB>S23l_æii#ߕ*^EŃ>cGb Gסqw <&O]3<|ڡ(]t_|-uJYO!Va-}IgH9~Y}ȁxn3 _x.ߦlبsǛt!u%UU{_`s3mGͩQ"'N{1,ス6W.iǷr&? ᔃ)k5 ]mXZ{bV~ϗe*Ծ@M!rgiS8nTcl/#?ŷ#.q؍.3Wܟ48p٘rюZq b-ܠ !&W#h`? Iȕpm0z5Wzwʾ#ez9s?|g(WPVv~rbHڟ 붘$.4TȉϛfȎ?%b86ZGb崋XKhemM]fodRa)i&c1URJq j_1+lߗ>Sgf2oF^$$Ďs过O~X}W+.ZS1='W17FDr3 \#YW4U|qUMx]U乓1e%ח6py{:l=W,L]O!$= >MdWyDEGs8Xf VIWm:3x:hF珥{0ŰreF MUwY/J&q=lY_@5e,^5dC=ZZYv4Ɛ2 w(J̧u)l7g^swΡ4p%'c?JT}H0F\g<FG?FwSezE0<:P29ş5Ic&*)''̫wqqvޱ9Fz֮'BǛm۹\2j֟"l@wVUE ˞Sspox?"!?NcW+ZAGףGNgl ޲~(wy7>OЦ=,ޔ&+,(f֖iz1Fb27&'h8\-vJv$uSTKX55'i m͘\J%=.(:7̶m$1+B! c֯͏e\7oyz^_OWOeirȨLϡ8b689ZmϏV N-3L|ٛß$QS kiS-X4c 3$cw5=t#]ɼW߇;q[|/!uhOul7;+Y"o9Rk(țo#:;[X;_?upczv5YSVbm<2*S;.Y.s! 7?'aF*8) w;0ҿ-V5[&;nAjB=u-|a p<^]DW{KC+[D |߈fUszG4WI|Ǧqtr%Ky~Z=~ˇZ86i$ IDATwfn}|nC񒾼u7?sUҾP\:}6l%KFz#CܱG}Ntt4]O!GK5j:'8 ߂684e?+B!!i-]- !B< !BZ!B! B!EBFM'lRB!ILhB!V!BIhB!V!BHB+B!$B!BHB+B!$B!BZ!B!$B!!QTUU% B!I%3B!BZ!B!$}I8g<Ǵ~@BELq]y_t+yſ,!eB!8֘B/fSp<-Ӽ=sZr))ꏊAY2X>~O&1b ;C-giK;iYWOʞٱ}=3Q<%JZ8</M}:eZo\+ć]H[42a&p|T έQ=?dpL >MiK#vgFE2}>6pq}zFrt+.]ㅙJC)]ChM9yL}iϡ?8OeϯٹݞюVO6euQmV}tu7!!x=Hc>?.o~j/PyNы]{ZZKfv3]qQrj~0fhUOBG:ћ ګz] ٴUϭLt3`Pl1[n$N^ix8CJx6HGw,xx!I^sgDlNJ:/O(yle1LXs=ŚmO'n4螝]F{L $lJ^)D~ߘ&} \*Q*=^VDDc.ΥZɻ"SOQmy@;vw`\4Ƶ{*lQJ΅ ŻC'O^ku)|^ N45`R|pVfۭT`]w (b޵|>]@[CsZ'.kѤWTӈmQMewNU,> FRy;Qѫ'o%E!yBMTҟnr~S?A9Jְw&J􈢽W&Ďӣb.lhr,^DllUȈ6ظh 4[+n9̻ i_UpkeodWP=Ӳ\1b xʿ04x)D!T.$n> `zU{u/x kLʑ\8&bz}ik8?g)*?M'8KgNbn_`F5vU.e_O5-\ ,{L$%jM.c)eh.ӮxШf۴A `:zC uaOh&3JT)q#Sb\T\ }]߅ohz~J=rgef~4.;6P[SBGЦC~f3嫒0YZ~.)92LJҏ*`Pb^Dq {8yvbf9yDF)BOW2iؾiEK8`oH2Cq}&0%j]Gv~4iEs뛰|UvisH4i!CSjTk{VL}3d֤B[IױQF.ejUu{N躧YQOSh$[VvUV-MCgW>h<Z˴1*ѬQ-G412"G5HLk*zj㟥cDT ?Tw\77ciHvQ51@InQTB!xȃB!BZ!B!$B!BZ!B:Un6)Fы7ગ{<g8w AO飢kB5Sck׌/O>H&> [F'cQΟm3YR~ N̦zwO*9d֏O<WD}qw&Ky\t`ʖ1}?B!%lبsǛt-BF)!Mhg7׍vL׊{{ꮟo|C H_? 7 Ʋ=b]TM!rV/jp`~>u{&'Ҧjqܨ=6j:{taܸVTvEgSfʵqpڇ4C%3OrDc~c#qЎKy}bm&nd:xaס11,!QY}ǜLӧn9po0o"̘>>2sjL"̂tq|UK·ڸ95JW u/׀e\0| `_vтxZ xFgiu_xpRuI¡/KvBs^LF|֓#>bѶrB%f.mBtz]\5'w9FN|4:9d7P1='W17FDr$nBT̙_!?f`R-C-:!DL&OD}ޑO<5Ol2JM= x/K~2;z:ΪXoF[zԄj'!)2ܜ<<>RwJAu-떦DV|s<+f@%k/5w9" 3p&j&f4+ZOBȰdbڦ|uw(ܗb^tnp9r:ŏN ԟ9=9%Z5lxşB!6Uٸ8M;c؜ # |1`]*оS$^я+T{Q,"gbFk</@İ@R3ɿ!nO+nIlzcO<5)YSYo3y7yԢKdԖ4}ϟ|PZU+س#ߤ__ҧ?,c֯͏e\7q<\Gb\HNOYgXoOAsjzGړy9!]-xЖơ/tvCڔ>:`m{x)w%+gw#إg8[Elh:*AB!6Cܱ٥wVև.Ͽ4d 7}|V![Z0w~z(,í/m|(^җf]p.幇VA2[ x=zu]t/|rll|&qwЀK{#Mu_gIj=D&b`OCL6n a FD_@uנËyoRCR?ܟmC(wOZ}t‘6X}(&߱z I k?jb7w1rq*m8*Af<.Jnfy1᷊f<̪Y\v:=`[Ӈ<ߦS.B!W hi [xF&c /y=͗1dԆzc_xz`&O]3;,Q2UnKTz%Ur^ǦeAcڮOzZ^!./XE=BG}ȁxn3 _xķ*5*r)OyljT)›NaoWЅ"L -;''3Co;:C.pFƤsQJ[*jf8ԭ]3RXZS2ld IѳbGUm[2) c^VZvxjY.z !*P N7go6&u7|T֋ %n:kd̀΅AkcYE"y3[?Or89` D$㷏_:wWI[\]g|sV Eiq(eqԞn`$g7׍vL׊{{ ,ٚѯ~%&gL_@g.׊ʮlj^Og<ϬY#i^.ѳU%d} x*s5зn JeHF Fla3p>:Q➽t"W:>19ZYm׊V=]Ϣv9g~=x [O!_OhZ\U乓1L=ɼ͊{x2njNbYr LCU)6W^$$ų#W換ñG>cJĞ;ÁTg8EzzĄwOsi.ˑޢ`R.4o_@'JT8s?C g!&WwsB/bO,GVodi-`R Үa=d^"P J:‰һL_lgEJŞ%K^ޫ}1O|Cͬ`>OKiz"fZE=B!sJxNE=wJhJq W L2l$:7)3^=)cN\bX ImWSzeO%"2G"*0g+]NYa3Qeq.ӌbѯj<iGӱa$4eF9&`ijTFTIbFk<Uiǘ?UG.eCVkeЦ%o8?&Gx n}zgweULׯ%2dF8g,z0>&6$¶J%bۀQ&+,.֖)BVkn즺np9嫪O}NEuTUM[pkJZA-pDFN4~P;ynLELV} g+|V6 IDAṮTP`EEF5ULꮌ9'ky5*ӬڻjPZ}7jdref=^GEѩ^j ?nV]3v=iimB!eUZ hiۧ{32> #gfxٷTglbT9=m4c&#jb؎ΛG7ֶӣLJ\tC)|z |.OyYt_| 5Ԋ4/}UJX܋߲6hȞjQcbw6ċ02O؝mcp*MېߗӍ.=;n/0Zts 'vZ\H?V::|%P95Wu޹<|B}>s'W1gS)Shvy%p,IasL5V1 !SB^B `!9b$0|9,T= )/3+'34b1#*0];u0XbnQn~dn%:;<\fawF<),Xݒ}WXyiyk)% q:$l MJ)`[.=Q޴~ 5۪0iimbi//g׶%sΙ5J8Rg0?*ppӹ0hm,Kۣ(ߴ,AQ٣ Ƶ-:1} &")E$^g͙ڎ DCX{X(ؖn̠^u;7Ղ{(y [EX>pN[b5<3q~4Ş'ls7ĥXyAcv&]hB蘐P2v@RJpX'D|q҄u =p3mGͩQ"'N{1, #?ŷ#.q؍\톝^bİB#q})]+ʱo q\ULlۅ{Ϫ\[{őN##mdTvzn~}g1nLTsNSlpquB)SyfI*%p)ߌ*p-!1䄮~; 9fD! 흤Z5J;MԞ+# "q|?&\4?"?7bu[Uszch`jM)3˩3S?jJ^y5 \?nN?3p&j&f4+ZOB웎by%eϯZNL\\8YW4U|q1I w~ftۓ%K[zȻ3w'\-S3(w˖5]uSw% yOK@4[Co\Ug?l SCf\!rJ:WûLAC&c1URJ&k/5w9" s?1S\sr`4˦/C0Q'YAk8ng51VnԈuK ,&I_H39ƛ6ĥr{\u!͇ҽd:s7oU7`V)&2B3^]gy7"su? 4׶}y*&?.я+T{Q,"g[?Kڷ{ċaXgƿOǜSGƞY&qsƫ<9UЙJg^swΡ4p%+`tVLbȜ$SsL(ظ5aVOY=~}uy~Z7K]hǓGL\[RU6^R=&dԮxcv_?z;s(3Ъ/"oF-f<5.3F0 zNJtɰѱl )wR])W͛rUR^xLza3Qeq.ӌ\)YSYo3y7yBm!ӨXhcS#օ:.=cVFn.oW^"K6h.乪Lbwl^lVm*&גHZBS2#6ɣ9Գz\j yyw*Z::w~Xw_ضD]C 0q2vFڭK(+\uX*YvRcܔ޳&UdÞxR/ajP0qthǢK8aqiS)/ \yg %a0'ȸV=hCGԥb|Xq)WI%PM3bmכ7]|}*5fD` ̧mJQ2w|ʘOwH. ۛyƟԋ;~iudݻq%w~/֊Z2 xC;N߹ [ɒ^ŭ/m|(^җf]p.| J`W;T?ܟmC(wO%UOo̫TٞX>ũfO$`G-HMǠ%UV(J~:)WTA2[ zKf.ϥI,̔8E?X=}uQ­66{T=Hi΋TJyey|=>ߚov-J/W2t|׃Jz'zTܨY7c}qk 6GV[Ա260£KoHDWg(vu9u!gwmPΟP*)ǰlZ<%;֧[?{/ 7"fxwd.LuRĨrzEƉu~Х K;o?{ZL_fd}GW2((:6.4;s961I5qlẁ#bkۀQ&@%.}:Uw>=fzU- jEǗL*%p,Eo{\@nd[11;iAXS,Sqz6 r!$}("UUQU%tztTU%T=LUM#pX 5/櫴Xw g7.>1X&lc tK*7IgH9~]932"&SK`v Aa6F*@݊)x_L2S#HvZov] (H`ł("QQo$6P4xMLnhPcnŘ`4H."Jb vP쀰;E@vfe~>syy)`/J` V`[!xq]NAW >6k].QwGf0un@h 5-r~605E!"95!C1kV<ۇ4WY"goփ8.]cdEǷu#b * 8ve鈛nJĕQYa\f S-ۊoiNFftpEEG%v"iވ Gh;kŏEB(x% * sDW~o+|?DǠ]')tL(Vt#׬quRW gh @fp+<Q'o`EeO yI?<(se<,u~sw9ʖ=0>N{L[IHk; ٟ7> ,ÄiP#T9ua]a .u]s(Rzb\^ Fҧq g-Ɨ,l`=q+Mxkn$nKBQՄ}+Yz h/9LjMpXeR@MhcRQK 3{H+f}`v/3\4Cv5^ X dI!K/xۋnDmT~Ul 8VfB#r8m[2(-b㮆ӜgEg ]/Pfmbdf[oeA> NJnDZϽpj}= bO1AQj}Aq5/ GNs*n}|"W9Iqn_wN`/4r~ xg~ WqW,]2 G 0G b ׸8Уd7س. Ґ6끺Uo9qwphҐ<#YF^e7 7~w{Mñ1-1u\Wv0)Y[0,Tp'q^S1y'c;B IZyϙ@n!Z⅒.Dmhry5sc O2p-#Ǿh_FhofWǡSѧRXv1$SRFV^h Wox;ݮw ycptvʬ%OC^\gAY9KxW>5 [829$&bGE %aĶ'uA%@uE?Birš.G*=1A?W$1g1$dž]'] [v+oPr9}>Vt9ߤBk/Ճ.-r' ?x\٣o *GTo(A[tv`(Cߐ7AV0>U*(+m g`*գa# ]Iʔ()m+nUHoӤK/t> P|#7d|GӸyCÚͲZ!XXjq9ܯ{V1i_58z>n݅, W I@cبi ;1 0+.}W\ _O.a+8I"BFЧ1bv0L] 6֦(ϿIke08k{#i33}\#NVExc+C|X"Ǖ@<0 ڿܘp!m~۴@saapT-ߏ63>>;棴<2vp3$~􅍝ui$V, KC6 _,tEp{w}:Un[kfA<)gDo 2D&->Ep1Aq0y Y"f!a5X?e_ZnCaZo0K {8A^[cd4x@Ķ+/>4݇=,|{wOcBjq]aqP9jcbi3aF'6~y|fu N.Bf{6,m Xh kv?6YqzA: hX7`t3g?՗Y -AANǦ[Nچk߅AE2AAQ  xz Zvrv/E1}a(X) l']KkjhO%S_ji:Fi۲,ď򆵉[[ &:WDm-)Qڮnm> cy:|sg ÓhSo*+þ9M>Կmkh٥myr|z}"V~وw  4(  AMe7'ܬ5^Es1fh;]$x\*=]K7 ;}lBh/SW; l e;4oĆ]ss4u~^Y"goփ8nTKA-Tr8榉GVfsv)8 unHX12jGթ,Tp:2 ¦qk,,[:ŬYAVBfoD|B_Dd1acdE[e5 Ĵh:+ ]HBsA4 엁qH)wh79v5;Zf|ձEfaEYRt[2-Y6N.%dm_f;.ocSFBǪ̫ozS1;vlG,^8ً+gi/}͂}0o{%s6KoSH>>=!-=xŭ3XǞYF'qXlisvXcD?ttEPg{5 zՃ R}W༆]Cbf7- xj:&W-5~% ƑK3,>XaUeY.RsmPa43+7dѴVhˏ 9މDjJd!y vFLG4dk@V^h Wox;ݮw yc,{Tf-}~ niL:I$ۏ$@>o`kr]όe Z#b!õ8~Z~PJV\EIEl[w SB0)ʯoRf :XU(2(>df, S\pSWRs'>/koSxQbGӸSq6X 0:3H㼆]6Fr8:ąC}lV_K̓B+/~'~(ߏՉG*x:#UAFgxyXV{ȀOL__Fb⡰4  . s=.fenBW$ o pקӣmMb|+0 aaQP|k 6W#l] >3d+'pciL~&,Z0S2H9%L|c1@+p^CxLML Ӛm Q@ 0.<(GB>/dQb'h (j*\A+a(GDmWLivY&U|=PjbrPYqUd5Ά3Sge6xc__/MKguAT>t+CѦ<.g`ۢCA Q߱ S;xMqAp@S.9?O٢w`sƖaVGVfsv)8NncdE[Q4V̸pkng1Fuj òB=Vu)H)VEVaq]=WuǕ٣/ڵtðs0б& @7biGi>֥YNFv %>(:)w)r cxB%U;אXa"y(f 2vxF ء1~&{N;L?i )[n#nbOY+k|0D ucLw<!TX~NJëozS1J6XEٍwð5,ghՁڑÊγ%z+d16i[w YieO,ad+cyRjަefmc˫&c?Jgr^߇X9c_tgK^c"vq ֱbKH#aeA,!ߗ w{Z2'IZls]Jڸv\Ʀxf wcX+kC|7's xq֋p>q^m>(A{}ׇ1YY76v}+kkPZy+`,=rF 4؇]{1-,wV"ҟaP^cSBnՋ.<ǮfG Ԍgs4xAhZ+,{Tf-}~ nˏXKޘ:[=|fQV^h Wox;ݮw „ak/͑4^t'Ov0ltO8µF̢eH%vP~yD;!jpesHL,ة0 9τ$c;BY(SJKǘ1 薃FtAf$"&5֏oFj@i+~(S=gPV%Tʊr}KA90x*[kJk |#Wr@&\.rddf, S\p7mTOz0 DMpWxCzj[q?]/t Ba͇kqfEcDbL0k5%&[КaqPyKgʛv?y َ'pl/lK#bPX&¹|D)3rJa ̔y&R~ %dhi 8,[Lt IA}>p6a|2Ib+{I-Vq} Oḿ+FO?@KNx"!n쇒fW'ԟxҋTۊW^ďa%baYA,cucL4x\֥;lZ*5"$igÂ^E4uԛ1 /Y:Mn&|ʟ! kv?6YqaJ@v /!m~|5ЊA. xH3Tg ^P1[9c譾TƃTDm    BKAAPAKAAe'aWR}aז#Ļg} Ua+ʞ٪b *kܪo$/_ɁTw|#,ď򆵉(5yDS,h93Kߤ!z+Qڮnm> nLݥؽ>Eo*+þ9Iyr|z}"Ѣdk$l2$ Z )GBwAY(Xi߮#/9!޶Pe^V.~aVWZa9 cp5vLh]c[l'pknïHtii+`>/RRo 7b0Sp\bdҟDԉ,ƨN`cqXQXd9ZⴻUӰRO2=|`7'ܬ}LFoݵy.xm\pɾ$d[AEP̚k%d&!m+_Dl+aֵDDt 9#PS떃A% 2?d WWj68FIM VB8Ve^}e|ЛԌ1=>Ʈa%|,tLMvݩg~ϬiYβuFv)y&k2qy5%ܭ2lk,F-Yq!V^^B;w` z[1d%l">.u&Ԧ׳1҃X]:u치eiDrkeyػ=-Kt+hӌ]tݸx79 [ry1}eۣݘhU|.f3|yɏ7Ux6o"Zu`v,)-s KUqy+`,=rfw}l[W2oN[ LHcEFbby.4 ŦnZ}<8El6,E/R&A41 -ǞhYKtW\ ȱ/m,ZQ&#%k ft×dv6kDr4 :Ǵ@XquЋ1t=`gDݱ8^.#HNǤw"ѹmB~}fu[sYMV2``[x`p4HC8$j[C,|ݡjmXFuԵ}P(6RA3zP۫py Щ])}$wdaN-bRsPqoH1bK 7XR6 2N -_2uY-\C#J܃6d}ׂc:mS ɠk<c5xA%VxuMpzS}O9"opϗm+p-*2NNe AW^g8Vm$E׆YcA R}AIǯoo}lz '}$*h@.ZakS_OߤB]5vh2c`V).]:dRf&pƼ/~'~(ߏՉGП ,,8wzҙ64aǤK/t> P|#7dlt]v?~'n~Bvh"O.韇5eO 9@b\xe}F ]Iʔ()m+nUǗְq#Ɗ-qP:rgHm>(ƐOܗ7* DkE?}'>ID^^h#7p$*hT aqPËYMb|+n|7 aaO+v):a[}1-{=_?.٭53 s_"H7"IV/xbˈp" %O$)O>Ep1Aq0y"\6 _,tEp{w}:Uڤ3梃+·O^'Ok}YG̺US].h|?f4+|ImSB/"C 0?a8cEjư_cA4|Tw mN^}·w2oDcUgEH }wφhX+R^sw -A! N ~z LS~X*Oi&]d[ B*Vh  A AAAA( Zvrv/EΎ,ď򆵉L3g ?[rxԧagK[Q㳿'%߭m٪b ""`AS^w( ct_U8Ɵ)}[VsN3R7aMia(GDmW7yMؗL 饡q ;ف(hsQ>5W~S1gMy8\X)E5G>GDAij\KA-Tr8=/+^0wtv"I(H)W<,ƨN`cqXQhObdƅ]ss4ucdE[ b6v"iވM-r~605E!"9(ʬ0~s.32uXuYa̤>ylK~?0q+Ԇ]Зt.8N1wy Z ?{sXiwf ?ATIm1hAF"鈛ne[W gh @fp+1=rT 'OqJwVGKKsX)}^{,3>!B@j܊q jiVݧ`]v(&_e_@bty3y!Z8GaU /X5Ngg}9x Aozz SWxhf?gVZgc:buus1>ܲg6U~T`[ر{9ld/CƳA^ԲˮS'٦ XDl֎V\t%Ee.;XaɅ,ad+>[6gAa54 {$"qNyB2h/}͂}0o{%sQ=gS6o"_巻˻J}IFR"]=ڍy]͎m,g:q#? y7D&#%k ft×dv6k(c;\h (&+ c0} -<0bz8e![cdho>Ws>h %{)t GpxL t}oLMOhֻ? '^[HNGJA_Fuԋj$c;BY a<= owN!/|L,gЋmOb8,BW L]fd^8dk`=8;_w@9ص BONėmTwǶr!!2>&tER'x>w:ٖоt: +.ܧ#2Q b9 vh2c`V).] SB0)ʯoR#PCTb DAAA4N袗     EAN.®(n_ӦC0xT~ֱi][N}lԀPW}O .?&ǟ:E{#+9p .o Ч6*ƌO (hEX?Qd' 4,EIfD콣EHyէ}Cee7ݠ8)Mկ/SA<5-AēABt_]A4V= 2+ߜLq5^͊vw֝Eq{cTVPY8,(/$3Wo0Ru3Lm1hƎvq߾c7'ܬ[gǩ9;V^aj7F SjRq?pjѱSėNDr S]W gh @fp+|2fpZ<"1B$$ÔBdgh3d>?^ )0YC /cdN3RZqy+`,=r@=M۰ȟW.E/RA*up5 zjmlvccWji#: Aozz>' BwN#غ;Nj7f~fzV} ,>XaU/ 85Y6N.%dm_f;.ocSF@}kEfaEYRt[OfvLM1?ӑ~2̾eiXǁ4V|elߜ,X)@s}ЕYӲK˂?g%zZ~Y{ΒԮO!Ml5!v~>ӓ9J`<#1trhry5Ze{:Be q2;7c_ۈY /bX:R~4 :Ǵ@Xq*?m8b;腓Bo-?CڣOw +GjIDs %8=m$y,{Tf-}~ nTO BI%~]~d?t+a"L9Zyy'\\wB)䍢φk@L1>1=2Ґq6bERXK2xlT01D>y;DMuL{;5F׍McI/Lf-"II @VwWB8* ʁ30VZTbYcha O,{)Ql7k,@|1C?#u 푃]M/Dd0hƩcdaN-bRsPqoH1F8 dZ_eG}4}udr!!2د94yˆmֽ5EÐq3f%aSY8tQ?yX :eClH_m3OԪOa i$h ,,8wJ!{*ON]fvh2c`V).] ހ6MB*7ұzCfAă{°~Q<~7N|Ɛʤ Ba͇kqf# KVS7P3qIA?[V_2aXq: 0}u]s7~W2*J/b--mFR纊>#0N"bܨtP+-qP:rk:`L9O)䟢[~ қH> ze jAD)3Hu(p\dqL@$@o2&]~8,܀6enBW$ o pקS6qx\֥鹮mN^}·wmkvk L9Ȝg"Rr0AY"f!a?&qaqP9'n?at ؟&¹|{KS\OlcQԾ3T2V gi_=pI ;?HX<"#1I/|205s GCIAgkX_MỵS?E}פ \_[W~qʞ ;sٰz5--$@+3 ~"5wzQh kv?6Yq ;_ڈ,H%$\b|q*f)JӋfd2:R\|M,Qof?>z/A421  hbAAA-AAA4\]KQ?`(Xeז#O6%LϸuDiZ~F,g5|F1MO%jsgS"刨j2']|?n>l7?eV|`bsxZd-+`KyC̬|_Uګ3ŰoOLRo6 n"2ɮ=vst^vZm 96|tX£[,Nh ^{zLzc1]*h h}p7a͏1*Utǒ4_F*ˈsrP}1vm ^sI tr{_(ۏ7U^ʜov~6p9cռ}: afG4,thv:{ A1]~th6X6 DK*vΐa>.ASPKA-Tr8榕W߳:]aYFawv"iވ Gh;k+WzVEVaq*_Qcd;85D<:]Z-O w}4G~NJ+L6]՟nt[oa/SgȌ?P硘5+JLC&=f{tKюhWT\/g=Z?e!h&gڎB?ߟ7> ,ÄiPFμ67}1+9%X2޵ qU="(/+VϥEP)O=[U@(<3k}Wb LlvȻHU0<{En6w:6\ᅎ+g y#3D=1- 5E h{w5<,>] ?3GPPb֗.ˏjULhÜwcĦ ~xU:Nw7Zƣ͜3xp=slN/A( D9Q~/>*P$ɠ _ip^n?֫,{|Bzov/3\4\ttA˼+ӅI #{_}k\cl{couCiH+58do{-໷7˓uO,q EבNm#8c33FgB2{4:cZrFGTT>>r{1!qe<\:- *K_8Rcl?ZZ`PpGܼ -i8a<:Ҿ70j~W;²?&E&ǞhYKt1d T]EP~y?sYU5ݺY~ɩN$:PV̧0뇗B/#ie3ظ=S}%aĶ'uABduE?20`+eu?zUy>cN?Bgu ɱapW1|GNm A~8{NFhs)O]N7M=gė#je,4)໚4d:.0hl <= owN!/|9K #A hk ?]pSe/ jCx\Y=n5xrfTBHr 'ԙXWUeaN-bRsPqoH1ƐA՟T]1,O?,Q)p!&jflL`aŹp_C/mtAH8l T# VܼobhpX. 2I2Ib+{өrZ0S2H9%L|c!0dQb'h (j*,e*@ \AzLB2 (\ZJna%baYDEᇈHLRa*Wj9>~wWQUW{j(|k`"Kb03ڟkF;ۃܶ=~S!K.sGH0/ q K ް#0X-k;ÿ.ĊC (9K #P6cmc<hp;sٰzJR05kEk4  B ~z LS~X*O  T[%h0EIp07! ATAADSv'  e'aWR   AAA-AAAPAKAATAATAAAAA-AAAPAKAAPAKAATAAD=1  h -AAA-AAA4\]KQ7AIv"9?5FY k̆ŝ:!޳{yug6FKq*B]Ua+ȬijZ6jz 3ŰoØ7-ǧ'b-JF¦1ivY&_Y]Mot4m]}Cee7gr,Fz#uc%I|:'APA[Hoj0Pli?+Ŷص&?c?% rM2\>>Jo|+gMeAMV̸pkn{cTVPY8,(_-ۉrG$ !W5vLh]}c;WJq~4e+E;&#/9!޶Pe^&7[oa8:3y.xm\}6vYNFlv)Cmĭ+E,[:ŬYAVBfۻ(waSHp1(Z*Vjǎ-ƩL2JS1=er\nt@H;J Q0a Xub둱4柂ҹ+7cd\'h)]E֗5;On,V֊]_NG|} [W6ѦD8Md,Nj(H 砉=D6?#ܾk:lWuGV8)׼W-e۴b~)5`3Ŀ-zQ)1$Ydۧ>R!!;V0J8v]hť3Eǀ"]gl+\'}+p-FoH,[q+%k<8k0;*ԟzc3E='6n&Tp_"Y1{_(ȿ EDSfdsFMwsC:1 g!q@g^,lA{S,)ZHZSm/vLV]m q';&+G}>(*m_];B2TQdΜx"7VYkE! 3yc-qmT8劽- 08?㱘6w-ȼy>"i:"pn3+KFOxЪ1>MxhGܺvz%⑐ np85H]m"X. {GZ \Aj8MDE\AQғ>3zޡ F)I0/&8XC|/Z+͏D6-@c~󓐕sӊ ;Eډ_en: O/OL(Ĕݰc(џ֭y|lkD|4.CG0-nڽqSVI'bѹҥ_VAK򓉥ƽ:S+9 :LċAMO{U󓈗X]B.ƔJʿ3B@/ Bno0M-_ |ݶڒĜ@h + Ĕ-f.Y O#  I_%ڒ?"i`SX,c9RcFJD΀{a' bC:o"{&)pO~l =|7!D,vđIDAT:LAoײxE~&׊] p$5Z[*)TR-uU8-~9X;{rp6 ,-ፏm-B/1X,>]!?&C".qS&!2=coY((!6KKسnrM-M撎 W+_m9f֩uc[uqCkcg'[7|M녍/3mE_x*-ұMpx2n<<NbTD؁BQkXLqZy@3_ ZcTd^WEzga_ ϪL,Mkr`6|&sPp3Z}=kmO"na0;ہke"7b,$}T>QH ;vg+D .ƉBKKAOٛTݜ X̏3RY'eR(&fo\S.Nz/q׬̬۪Ex/(8#d9A`/Y&4~y DAhu>=@eE~ۂ礷0_44r:cPOhLWu,8kvX7F՟Kse[11Ʊjd3\`~mz^Y-E-mD+4};OITHF ~u"Fj N/muj V"2Om莉G{cuH/qQtBKDDDDTXՉVE#.t :VL\_U$9}&~(:`9/۟% 'w?׊LDD}A[?#vLsL٫m>Er@o{\u˜|&w(ZVr'"bAKDTOo ϫ3;H̝mݡ; 0q |=TÜv.Bak+ ||OL¦ ۸هcLfp8y Xgַa;X>9-}L%!­?Xn3XE}\$شzeT s0(^ ŪJϑ4柂Κq}I Iy\gq?x砵v?EÅOѻ֚jjcqRYy?9/;s;D4V>lr6Tq~ƻ>(ޡÎK:b2w9o, W`<٤%ϝ~͸Kӈ.,\E'6n&WDXbLQAlh'<"<+}bZcoIȾ)Ok+|BCvaXq(KgEs劽- 0L,i<~=k1WDbI `T1S[Xl[B\ !khRPK̜X3Q/fxUWBX$|^K%&_^-BGn#G63Ahڜk亭]uҷǙZ)RfT뺰VLntE/2Wgľ+{c\ADTg<6ғ>3zޡ F)IYٰ#Ѥvĭk7Pr, #ZX \0|'芩GJ_i2#XL,6r9TAmvW|ۿ8S姶|~p0"__JiiYxnlyoؾ#ºCeҟpD=nK4kz˴YkrAdТQܼ4vM7? Y97Ϛ_+yXhͼM[K񈖈xɁU^{ ШnU*( u\7Qc4V`,ڋSz9T=EC:o"{&)pO?f`Y>=G8 ;JFa\3ڔIuT;sZu*P]rQ(p/v4섡RZfǢT*JJ(P``=KD,hΣ†k߫۰. .aϺ]v6)4`[$U 蝅ӷJ*. ┉~l6K7|Y~=ੴbjϬEwb! Cm@3Xذ%'p[5_[bhmd&/uo8ȗwCD,hӏgf?oG1!85.xh]<V){~<PHlE?fNl+f#C8Vzu9XXEވpsQKPD!EW;9@㇞gq@tYӳ TVCEبBlݦgҌX-E-mD+4};U㒃G9e49_?eK/[x/(8#d9A`/GVjm6ITxKE#~NC?ЋDDDDTU:%""""oxBKDDDD,hDA+Ң|A""""- Z"""""DDDDD,h- Z"""""DDDDD,h- Z""""" !+ Z"""":QЊhą@&$HP%"""+h<5$I~أ-6[ު??{&"0.A-_Rvu@#=Ur|Y7_,w82&XQB!`5kbE8; `"!!h,꾫pU/ǟah&(JĖ=VEܺ3O~&nztSqb zH}\$ش|Ɂ82JԒind 0 b 4:+SPvi@V|x7FdsL] pᰕ1hm VأxYPRbÁ4ƭl aѺWҶ4 INLE'a L}wDDDĂ.+\4y7ʮ8`藷CIa^X?C>3vOUDVIe#y.bsf4^x:4u)){P#?EIx/; 8.RKF;u¹X;/PMbtSVDDDĂxɁF \O°g~Ĩu ܰ,9] pGAZF.HѾG+(23ʒd\7#%~vAo:A߫47m$JMVr3D """bApqnbp ʯ˽4$' 9RV>)[!Mڝ@Ak!k3_FK Yk)XUYk\\L8k - O i.w7&Lg8}<!?&C"S?`6.xj$DF}lq-Ȗш"y;"  G!f.ًBbׇFm xMb֗4EîA墚m"noP[ YH89%|wLV{XVO]~<PHlEKA QW3"ڗ_j,}~o6?cmdP~O LTT0K50fb`6"""e+"-s"x$x1&,[^tBKDDDDTXՉVE#.t DDDDTO?+XrIENDB`synapse-1.53.0/docs/development/img/git/squash.png000066400000000000000000000717431420514467300221270ustar00rootroot00000000000000PNG  IHDR!bKGD pHYs  tIME " =tiTXtCommentCreated with GIMPd.e IDATx\TU ?TFq3-(sS%nX~45mC7tR*b+֪}$T"* Ġp@@05y{y{[R7 `!@ B@ DA B@ DA B@ DA B@ DA B@ DA B@ DA B@bDϢA-5niwɇFN_EC {fQTwKOk$R1:  $'13Ց/M4@BG.`I' LAp+{iӧv5 tݙ={ AD,%t$XH@ )>$ XKZ@QQh1S0 )v7`ހA\M  l$ $,ۥ F3 HL)f 6$!A" ܜ(ĨJp &0 v&fR 1SnZ Xd^m\mLsq nnE TAL@o`hQR3;}Ɗ깒rO22b t>a;|NS 3=~~*FNW)+]|_~| n/Ȁq_P@v,Bb?3-] qޞO&y055r?&|03vhE/sV_%eu>c3o"g/(+ȺٷNߪ›wyg 7^,:yruwK6gg4~0TfR *5׺/!`9qe%i<k}񰨡jm օF37|L7x2~1#"t=u%Υ?5@XGOd9K3(";F.Av֢*nN<0[1_כ󊴔:Q-./*,A]e%?s|7.!Ng1]4J(QLmMYfiBy+0+MM0Ov}>yiN=nOO{P]˓yl !T*ZJX`f_o߷l;jS~=EZC9-LÏ28I1IO^rO?N,4-*\n*t  &G>ǮxaLm'J\Eݟde˙x81S⺙!>`FYЃBRN}́I,C2|.=.ݱRavs{j UMWP3F%d7_׷!s50$Re0+< boRvNs< 25dSu>Ae !JkW+RJA֐RTPo(~Ŀ{ !,}_pd`'_獊ǏFh'5Y"lr^8t煇>fXoțs?Č=y0ȏyձ;[Г|SW$*}k'oO Sk>iVC=e^я*s;~mceWrt:Q4̚ipii*t]Z|G> PɽH*]Z7{t K>]pY=iIIHo{,9ePU O|RBWK[ފ/ayvSeŲ 9VΖz ses ߫lJsZO ]p*[IFW *\"ϷW K11puarFhl<)7]ӨJb^)l9i_Yjmy ocY1Iqk XvX=NfOXww`7#:<_8c8/ҏh qnΌ䣔G<±8D!/ eYEECh/GZ؝@Z84K2/U cK~#zRNg;pn!o+#@P@g;5ý#I7{ ]JL:165|ŵSkqx8I4PUY:1\f‡uwrGl-ǛUùKf,f$O ÝZ.(XN(IɆm.L㾶94o mc԰Oօ/}uYޝosE5si͞JstN6 w3ut⪫ +9x\хea 0ɉzq|vlir,.𥌳'5>~+f ƫʺ1k0OWdqlae8LlC&SWL#`;+Gcܖrzdr,uY^Nn߈Y9BAN}% }3Y|W)PdaHJnJJտu@g ّiNz=.Kq5Prq{t˾_ #z13w{% @эTEchSC0(Syo<\$tօDfo˗,s. H$%vb߉R+|=-.o{ _3cYJ;SʭЫξ.|9b>*b!vs m>"3g266,G,x(Ȋo8ȞƙϒJQή] @օU3똑|z m>ՍN8̞S1K'x'Pz{5e t#nc>{Ԕ1$uvŁ>eKnc?wC9˱-R9N`b6PR/kf~;{ pdDg]1{ EK<;;Oc?vrrveZLž>Pys ^@vfsS7Oϓiky!=synl~2 % Nd/]ԁEw |>S[|ˤ|}m)RrU+fœo1R-cC>瓞s̭, n~xH('?X柣^aЯ)h$Eueh"@ 5Z'ShbS3=ۋ,@pBGm$f BA" "b& mt&AzAzɢJjxcY@ xm{Biܒ&dA ܗ`y OjMdt@ozWJǏOmW@ /÷8J` ^,$FLH$Q, z Je%}ŕ$ Ξ-  ,,,XX`¶-m}q?Ң;λwS%Gyj9/?y&(B}ҽKf^z7f.Fhu|,]iw ,ct2/\B'GSstV-^ͷocҪLV.XʪrtpA&m+x`^I*{WT~[ҋ3w]!~竭Y6n,R5,.{$/VДaM?-O?L)iYO'4x{al,T釩pxIHڸ褮MAIȘHzbfQqb+RsL ('0m/$fsJA"0ظ|.G.Qqq$b?LCιzD@)h2ITm|dF C$&XritlٚO%Y0TEH=qV֍Qӈ,(b#|:_K֢4JϗyQ*mE p/ Ej2h4:߳8o\DT!S~0U9%<-26XO~A9@BJ ۘ3c[SJ sC_#{X^ș"u67z8C*l[8t(_C-wCթ(zϔ][|,imy5VPSDs92È88zdx/S&w2?FQhoFo@Ȍ ./7^-7k@pO^=ᬚbD]nkq@Loc2ٵzfRNgl< `w1洞ޥ8&I%2g_)=}!'ss:gn ]zM']>LH &I^obƐi,Z}3AhrL&*65 Q IDATђ~"Z^h߰8ʌsMi>ߜR]LN cx!T:ܽ( 9YgdNpV;<@OzvEsb';2r(]U8ĩZ=~6c&1n'[W7mϼ37솻 #iI_3.cZXχ^ W8O) E1^Rqdyw|ZKzOGߧSmxȔ9;Z/Wc#Q 䥡^.f~]*9ac "j*_6&⥡8*9Y^RXO\L8!=9s04nLElS+IKasQO>k,B yhd^ z1=o%ẶŽ:2{TyI}tPIVzR'*rT̩X?uB9u3{dHbH`IőϫG@=UY} ( T5}c4ƞǦ=EpQ 2VA @ f @  Vɧ5k zWNJ%> gplz,${^^tI\E]GR#@ Q@ OPQIG5M%@+_]0iҺTLbڅzb_e­漚"=^xP&ưH{7 Ұ71wz!c>oMekJRՍ]_yKRͅ-{B,+OܢXMGNjsou{n5keJD{elUew#.3Y3n_UO):tSgd0)Pmk'#d"d_"<:CՃk(ɹaa.-(_tBn!u{8 zROjRad5e*e"*؉H8Fo]%J4Xj\gpw~c&iW׊#ħTS8^ub=1$ Ñ $/XFf\#zrq eD.Wwq*h BM~o9 =G5c+N\ ݘZ9[L֭K%K8}m5ݶkY9$!6zV&dl~)3F{^HCVqB@.gGG/0j"9"M&keʛZĘJ6~6 c_gq4]9IQPl L u%t* JJU+$/"1vғ6˾O,"- 4Ƒt+X.ەJE L7txOfa<۳/8}baܛJTܛ$,}idoنW &~*Ěk o4;R+E? T4M{aܛL{m"2K*~ Ҵ-3mO^!:~ k$66͗U`,c|r42jrNfQBߛ1T^IZIotqR6mPu[tO|ip~Tɮu[<ĥ"G4jH̐'j^FOa'd<"G{Epg */&/>9Ug {3<C4ƠXS#So lxzr&WتÌ<ȼ醻 Ur_'dF0 ]OpIw2`Վ"04:ɨX_YOFD>ua6 uEo:#sv :ݍ|VFMAS78fK(P9MN\=5OS p-H}DC|{@F׼b-dzPTaa}Ct=C!U3Rx'/WB(䐣'*Qc^9,U9gVevAZ 0̐1%)X'ƘTxGS8ZŭY?z8|;EpgEZ]=}z{bɢ?ߋWS8&Ncc6vRZ xS^.yi ,#dY'SIHI'2~: VNSOFʉO`TA9eT I mp<,V.N&  Չ7V,C`[ݼZ{t",M%>crNdhk[yuiDNfWd[kp"*mֵҭgWjkuv5+]+dwz%AvEHSNIK=q菏&FC]VS9KA0;_<̮{nk2)uz@ox†#2i%:Ebveo,f7X~vkk'[p+U<:fT]li!iSP#u,r`¤a<,oHPx4%)v\l1lCpMey9^2II }ol`S'aכIZ'O2>#ō b:atۈT3ɻ#ݍ\۵^wvZbL֝A3k[q2v Ŕv;b%sedt2ܣ+Yo:(&^ʽ}er6^d'\WSX!yp$1rdSё(7~Blq<0'7/=y#keDMo0)=$&Fi4Xb|zm`wpًŔ*icׁGOt'Ħ6?g{AfևGzT^:RW)}M lkU0-j!tݵFJ$椂̞Nèɔ1Ճwg}rV=Zyݟ] 4i?ۦo+['q\y^ IM:w[59G1 D@ (Aka/:'Nuyjj:|N@ $yU^| [i~hov4,E ASwr$%%e5y:p7n m^?T2eg(Bf#Ϸ]%lN̏}]na>3N0cV,?YiO6v2Y QHzBO"?'N4m?.-xXʚ͙("!Gv yCƠpaWZ% Qpi0!y>ùR3' T&'Yģ@EZ;<apS:_zOi`8!2PYp8#r;'&[6Ӡ&_Ԇ*Ρao("2Pq]Z=VmZ-CLe?cBi_9[^ї79 =&`k?_&`~) T-{4˂}utRfXk*ٕ=؇p_/pIo+TR7h#'/7C͠IFh8S0o:xʹl*jGyUHMwk]u{=YI AB|S8uQ<=:d ,Bs+ZL՚G3'q&-")˘._S2Qt$@ *gxxF O_i1[qoFOWػfk;P'uu {dn*mw9SOTwm $fT^+PbycZU'2NգQTy\~3c:*m>HUEf0]Wy/:Z`k3ϵ̶L)X-c=B҂0Ke|r5u: :0bbE\Y6lJp%6K>$IHb b8)3ѧmpƉQSX9#.QD N´Ŭ\. \gkE7I$,Hȼ;=[ng'mal!@l>Wh=[%&'6Ub|R;+5D-tcoDx^g +TRWO Q<8Eb n@,! @  ! @  ! @  ! @  ! @ }tx*Qk@pB~AwIm 'GQkմ3*XH,KjRme24.A>׉Bv@p?׋nNblsĚ@ (@@ (@@ (@@ ~#\rT_ףRG.jM )¡r^^{PShQ/B-.`@oc0,W@ opwuk7G$ZRWK z :gL"N@pɒNf3Z\S H-;aaae',-;!Z"v۰Lc݆ _M>Bl.D{Uh P1{gb~@*RiC&> 6,,hz=ɭ[^a#.f 3Ys禳lH{q !Xg bLqg J4 s?qPʉ]عk7)aE%'B\@pDV(c[ɺFAx%X[Pr ?UX.>5yy:3Axlʇ|4f朜G`Ԧ_li|e:Tqt1) F_:''@A~u-901|nhmw4! [ o?x"IfBj87OQ&5&dkyen@W (cL5mLFR@r)xL|A@)"dz7(D# ʏ4."#I3.WLb-7rɜ̰r8D T7o|ONrQ ]2Ya'SyU4>5Pjxzo ;;()C&W;hm`-1 {;N y]X$jh@y4)TI S2?8:ϗ汖r! }5Sh& MrI]W_??ß ǧ2SJgu/٧k$YQ0K/7Y }lj(ɛz4S|A& ?w6FcmZ!7H<"[Ӻmcmu-黵yh?5>[bv ;w;vm&m֡5^3iYGܜmW^28c&+w;uY>XQǩLM] px(( jzch?jr/J:((^%>Ab SE5dmcE|3^h)< kh??w'uAy x?X{3;J8ݎg@=3GN)) IDATu"cfSl/G|'$X)v#d9rp~hk.cܱVRbȨ"˓%"+ uWx!xPʑ"\eCfSo@nak9Y$JcOSyׅV . fkW0/`b g<<3;H}Q |{{:>e||E 'Dj.5-_U҄TUn6Ć hUhP"R ̈́8!"H@e0$<̀kљ9g{Z?\K^fǏFp n]hag;Y;U3g ܐ [~2;)!oʂWBaV?Ol`c|G` 7bxl9'2XiY헿c=}>|epU9J +]>/j_{z)>/鵯17k.":ʷVn&7sߕ&ࠬߐh<vekMҺ0 k nDd2yif\.\(+ #30=iL.ȫW YXm(AwFq];8آ AI]:m[8&?ΎRϔP G'0@(aBԢY? 1wpߔX(q#8m*G7w-ǿCN980SUE ,8lVrƐf5k;A Lrj"&wS҄$+_y&C$°vׄ!~S'ʠr8g#&Ec[іvlRW8ҭӎQ/cپ=MthcZ pºD^N&T44BaJ2DXUL J,SɠR2% G}E!3m8(?be<(щ1>.*; 1 LP}Tyϯdd,r bPu !hessX3ӗkn9Z}hpWb3ǻkX_QlvT-4itb[~N ] @&TN[DWQp(^oUmyX@Y~!'f>F@NY<~#)q~u5gGM Q俎5,j!/kc{&'csLa Ybtt>dU$5f2pPb02fܲ7/ŤhԕR{EMkI$+%RZmۜCoБ@+*ւ)$'- Pi^r21ֶukvQ5l!tq ͩe/YY%T]IT_ص sS,l=GWdĠYPo0:[Fnj3"?63i\ p--^b͌+` m$x Kc7I:ly.Z[PR<Kce%LmWڠ؅k˭%UyJaWFr.S%[ɭ1nA)#QVyٙ(~=hM+wkg(+obj\5;EӜi$sN_0Z잺8/b@S$Gh41jϧ5c=2-񉤥#քCGZk檻J+]pߒD̜T/Hjl uU]Sax23`DŎg\ C.v&f_֚ھym%t äsfawkkۍb;pe2SRYb2p%?`HP6z/88丯cd~4Bg S@ӒBFsD@+^4LZ!״9xyZAr5])+H.*${M `GFt^vpL>4Z!kyஔd̞S.ME '#%TLz ٭/.Js}m1baAQ3^OU={̊Wyjr!%$/r\kd׌gfMkA?K[ʌ nWWm[^}(fW};jѳ`2ZYiVҞՄg^jl`K7e&)-9Axk公ބ:.m4qGKb:U it0!>ECOl%וoѻuM.?.h/|Ѧ.|CMGt]D)q}ӡ6Zk^?u}Gu]׿n>oJy`ޏ;̷]]W?Vm^MDަڿ6_뺮w|GV^I}Fhmա^?hso/<>ҟKZr;ln~R/{~KzAKR.WR/eA/:=0OVփgf]??O_gWl_͸X_} =st˷eD]w[]MuevRY~fm/|Ѧ9uǗ__~աw_KKӿ.ܜ1k1Avył쮱84ЧH3Bpx-v#{jRz`\[YSCU*CyR!0h˓Wx ˁniTFGL'Sf=|Obɬik.h3TN9ӊgsr؛ġ Gkyt 8<ڮ}zf굁GZ/)J6]3i Osuł-ǜh5Z([ }ZjMI~<ζM֜^.NW{=Q-Օ'"325.y³`ADAAADAAQADAAADAAQADAAADAA[R[mb5A'j \#AADAAQADAAADAAQADAAADAAQAF,m-DzqӠ0/Jby$}ZI*W܂U`_}6=Pi 313a|ట`VJm B/As4KŒ.PU@W4f -" 105f<|pMpBcKbqߙ]U좢Q>$;j3hy/I)Kvfy͝(a.fiF},p9ݣ1fΒ$A"WQʸ)Ҭ͜Wxn>~g' QL7<9XT@b[.ZF3`>/}m+r>pw^!>ߋ}yI;ccfq=ᬕ=;w'K)T~2sbU:k,$CNL9yi۩/a#Lۛ(|;D%܏Ή )T}/S.>1"'gUg!8/sGċ7@ٱI)9۩)Hz2~.ɋgWbEuZM!/~Ȟgx`餾s?Xhq/{>b_M0$a6XjǶsF; ff'D3%anVN0uQ̟X켓O2 m̅2iOgGx/a1IMOĬj>3t3 *ǩ*>Esf/Q&)ݝ[ufC| A)c睬 ~ҕ1LJnI̼` jUK1ըq9TF3L19Nـ:QŤbGF?+v<|Dc:9\ =Es7ihԙf>8§50>sx(ҷ,MFR8awdwqgv 40\j9>l!( c Lua08ҺA_La_"/.g@L1pki3xꗵf KcKb:jXL9lg(b n3.&.4hvT `jܷ$pyll2L+=BEqN:,-&7{9îx ifF"&J8K QhOy-S{߬G7w,fh$Gc2ȕ)׉ؘ%| bD#iǡDAݥXm{ViY` BiNҗxfʩʽ}Δ%~>LM#}L7ܙDVrLLB:8ħ-WsjkD!(|F;|oɇߊ27UWΗ*&Μ];Wl`{YxO /Y*C۱@ʅ)2S,]gż]11aerM,\pg&3]9˧-*;f:c &Lb`h)g[~ Vc@|$A=r0&&pKu;"p"oI 1d&bj`9{y8=9Hd 4 LO&+^,!2SADAAADAAQAnY}XHAD)==NQЁtG,&-zXv>h|6l/>o~;I 8ϲaPOeX|ݍ1}wl`[x1>ZKeewU2zIgsX.lbϷe귛(Z[=oyO˹־(gϵ:z_ybE_7/\ /mn»4/ 𯻺=>oie=oGHp#:ʷVn&7s'2^i 9㯝aW/_I!ua(A@m֖ul5L&/rL 7Cp,.~G1Qy }pE1_11.C{#t΂xܬBnIN_ #8ήlq: ]Li.}&gr,(L Upt28l@SZ0+'8Fq8E3c=ZgQE|)&3`6zqJ[JN2L4Fqm-[DLn)" UIVjM +Ida-*늼2> lgQm1GpCU,vv~ mCCԢeN5&rj44Sy r`t5''fY$A,g#eJ&~Cfl pZMUQ"yLQz@[K;c|2 kg9\T5NBVv>*ؼW2ւL[1g(^:\9KV^_`>y-¾v4+1Wx`;[T.c4Ii { Uь¸4 ̢Qpȁr(^oUmyX@Y~!'f>F@NY<~#)q~u5gGM Q俎5,j!/kc%#IDAT{&'csLa Ybtt>dU$5f2pPb02fܲ7/ŤhԕR{EMkI$+%RZmۜCoБ@+*ւ)$'- Pi^r21ֶukvQ5l!tq ͩe/YY%T]ͭ]ۛ0gsCS]GWPB08;AB2:gcc4k7_DP4fVr.`1aKg1^2DRslk f1.iW=965gC/I)a̞Qh j5fjfoD sqw_}͌͵rg>L|b`F*&ZWjC#ׁ >GT,4]˔Y?L®3`!,-D+ ^ʫu}E;5y%z Wy ~%ǰ&NkttaMxO'Ȋ5h:.3a~@zdGƃ^uСx,UJ^!<2c~q?Y.=JΌ}=ө$mfAk1 Jx;vF QVʕ(5`ݜ4X*Fql\w?e4z/9fpf jZZZ ŚWjI1^un)M\ow u1US%Ȯ aax4 Qoө=2;,7kJsWrO]\J[c"}r/(S0G3SQ {јÛW PVԸk|3w49ӬIh)i a|+S,*h՜"i-=B[W#>#-ïO$-e&lĹ)UwVb̓5`%,9JU-^:~@ʫ\=˕;l7;q1& ջح~9vR^p*j\PƌNg1֎ QoCid;>CXTMzd)\kYb2p%6pUP6z/88丯cd~4Bg S@ӒBFsD@+^4LZ!״9xyZhArٵSW\TH@9E 3 xhɇ= R=|Q9۹[Tx2ROăGx9g1(x&82t91aEd?Q 1&@(ݙ ^p(L)yz./a]g_cs9hhR H[<* 6q SCv:^-4;/lb0.< ;CG{8w ܊;Α|$ ( \7vԛ7" Xv?Gި16__௮il">AZ c'^qp3EDAˑ]Qd|;MىVT!tOH4oۇ??*O?I(ǼH[l_l{C51#8wu,?|3`ܟ_4cFc ;IМ_La |$p3Ό_SOc~S_ޢ_N?K~3Olb6sc>LJwP+r%)%7ϩ9;__*&(c, | 3;^K &jC윻o6N$Is7, CÀx;F7 3>F;fL{ 8lhga];E/{(nЮA08..莖+ (vno.? ׭#jM.ceg9{|mE䔞^|t+unQ>7߻h:NୣGЉ㬝K Mgt᥍Q03|ru rOvP:-bX8FcSvjj\ <3D6Yy;& >Xx?ĶVw^f ; 1Y=ťrc]j;Zhf3EG\o dA24^­O>@c7Gg,=ȍn=|ݭkwuu_~9 _ _mv:Сg>ls:d>'KizP_A7>ҿu]8[z׾3rWQu'Mm׺!u‡w՟OFyǡ<}E;ti3~LWқQ_GWC7Uƾ+^8r⥏\u}z]VkJiyCo]A8#_[[~=T}4d.g|ܦ/eQ/irU'KЋN,' n=oJF/iv'-xץCW?qQ/|ҙOU]uok0[6n~6Ѯ;JC_]Y]E~IޥurFxвcmǔhv1DpnG= QJ=0b~L zo|ZDmYkv4ЪjP BjΆ_4\m 9Nnٟɔ> = Qo.&F fMF+VgK蜡x gF1!/&_;oW}$p9}ۖ/x(q_g:{NߺAK~˚DSiQ5D|פ5{t֍ \\7e%}>0/&Kx)7[[1z g1Mt˫o.˃V @Xq3l<Q͌&\պlG(wsT wōDikZZ:o`hPRG4_< Az5T}xnƤY]{n;D?va:' <&·̀>Nʾ3vc٣(yYfi F |3QzwRonI0S{g g \G}{xA5Aʣ,OO/YkwGCe! " E#Q7aJ state` mapping), which is *very* space inefficient when state doesn't change, we instead assign each different set of state a "state group" and then have mappings of `event_id -> state_group` and `state_group -> state`. ### Stage group edges TODO: `state_group_edges` is a further optimization... notes from @Azrenbeth, https://pastebin.com/seUGVGeT synapse-1.53.0/docs/development/saml.md000066400000000000000000000034571420514467300200310ustar00rootroot00000000000000# How to test SAML as a developer without a server https://fujifish.github.io/samling/samling.html (https://github.com/fujifish/samling) is a great resource for being able to tinker with the SAML options within Synapse without needing to deploy and configure a complicated software stack. To make Synapse (and therefore Element) use it: 1. Use the samling.html URL above or deploy your own and visit the IdP Metadata tab. 2. Copy the XML to your clipboard. 3. On your Synapse server, create a new file `samling.xml` next to your `homeserver.yaml` with the XML from step 2 as the contents. 4. Edit your `homeserver.yaml` to include: ```yaml saml2_config: sp_config: allow_unknown_attributes: true # Works around a bug with AVA Hashes: https://github.com/IdentityPython/pysaml2/issues/388 metadata: local: ["samling.xml"] ``` 5. Ensure that your `homeserver.yaml` has a setting for `public_baseurl`: ```yaml public_baseurl: http://localhost:8080/ ``` 6. Run `apt-get install xmlsec1` and `pip install --upgrade --force 'pysaml2>=4.5.0'` to ensure the dependencies are installed and ready to go. 7. Restart Synapse. Then in Element: 1. Visit the login page and point Element towards your homeserver using the `public_baseurl` above. 2. Click the Single Sign-On button. 3. On the samling page, enter a Name Identifier and add a SAML Attribute for `uid=your_localpart`. The response must also be signed. 4. Click "Next". 5. Click "Post Response" (change nothing). 6. You should be logged in. If you try and repeat this process, you may be automatically logged in using the information you gave previously. To fix this, open your developer console (`F12` or `Ctrl+Shift+I`) while on the samling page and clear the site data. In Chrome, this will be a button on the Application tab. synapse-1.53.0/docs/development/url_previews.md000066400000000000000000000057071420514467300216230ustar00rootroot00000000000000URL Previews ============ The `GET /_matrix/media/r0/preview_url` endpoint provides a generic preview API for URLs which outputs [Open Graph](https://ogp.me/) responses (with some Matrix specific additions). This does have trade-offs compared to other designs: * Pros: * Simple and flexible; can be used by any clients at any point * Cons: * If each homeserver provides one of these independently, all the HSes in a room may needlessly DoS the target URI * The URL metadata must be stored somewhere, rather than just using Matrix itself to store the media. * Matrix cannot be used to distribute the metadata between homeservers. When Synapse is asked to preview a URL it does the following: 1. Checks against a URL blacklist (defined as `url_preview_url_blacklist` in the config). 2. Checks the in-memory cache by URLs and returns the result if it exists. (This is also used to de-duplicate processing of multiple in-flight requests at once.) 3. Kicks off a background process to generate a preview: 1. Checks the database cache by URL and timestamp and returns the result if it has not expired and was successful (a 2xx return code). 2. Checks if the URL matches an [oEmbed](https://oembed.com/) pattern. If it does, update the URL to download. 3. Downloads the URL and stores it into a file via the media storage provider and saves the local media metadata. 4. If the media is an image: 1. Generates thumbnails. 2. Generates an Open Graph response based on image properties. 5. If the media is HTML: 1. Decodes the HTML via the stored file. 2. Generates an Open Graph response from the HTML. 3. If a JSON oEmbed URL was found in the HTML via autodiscovery: 1. Downloads the URL and stores it into a file via the media storage provider and saves the local media metadata. 2. Convert the oEmbed response to an Open Graph response. 3. Override any Open Graph data from the HTML with data from oEmbed. 4. If an image exists in the Open Graph response: 1. Downloads the URL and stores it into a file via the media storage provider and saves the local media metadata. 2. Generates thumbnails. 3. Updates the Open Graph response based on image properties. 6. If the media is JSON and an oEmbed URL was found: 1. Convert the oEmbed response to an Open Graph response. 2. If a thumbnail or image is in the oEmbed response: 1. Downloads the URL and stores it into a file via the media storage provider and saves the local media metadata. 2. Generates thumbnails. 3. Updates the Open Graph response based on image properties. 7. Stores the result in the database cache. 4. Returns the result. The in-memory cache expires after 1 hour. Expired entries in the database cache (and their associated media files) are deleted every 10 seconds. The default expiration time is 1 hour from download. synapse-1.53.0/docs/favicon.png000066400000000000000000000173441420514467300163640ustar00rootroot00000000000000PNG  IHDR niCCPicc(uKBQjR!QCHEDc"!fբׯ@r4 QK_CAAkAADK@_K=*(Qr9y99`bl!Rb'5SF#;zPKgL l=Sng#e]OPZ&(5Ć]:8Z( :+SZ\9I0!F2%o_g] 8KNӟښ[p~R{p ÏzH6$L{6 ogП[]ifZD7c߽߶g_N pHYsG.IDATx^ EUm25+-R.(ddZ- H HinX'[4(h*05h?÷̜sf~{s9>g@ @ @ @ @ @ @ @ @ @ @ @ @ X 1sS%/鎒>u$]*\I,8Iw;Fpsk$}D%EŒ|5?<:2V^+tIqn$8X;T_= Y<7_i5l ϚR|S#@_~ֿi^{T؋wʴoS}|Nv N'Ip4F86 =6ӄ9>m\stilwI\@FB)x4T\x}np}I9r ӕ.>P$`=gv2Dp 1A ^Bϐ1Z uLctYر$\zX@Y#p`,<>W@|X@Y#p[~1ޝIkP<`|@`ƉZԣ`xm~AFbăoY LnW5xz4 G*A@cB +xL8r ^=%~%V,D`,+Lk9Ca!ňZ﫥 56ho1A$1]+x- {0aV r0[ 5&xV#58*Xu7L-ڣf]^( b3(E`N_ gKbHC,#x }f QAd0|#0vo xA6'J"^!iTa(s4pߛ{;ђ|. كVZ̳:uP0A2NWy0Z"g|( ln R7ZZ"@P !.p0Y$KB,0&?W|^ov]ۗꊬu'9yB *W$ixOeY q)*:<8D01%$!Nlʹ?׭ti+k@Tt@>K[yQxDaEZUwmpV9VSAvv6OE~T)7*l/J, Q䳴Ś/éO\D8y{Z'K{4O >]~gtGl,_I >lZ[TuRr!n<=IKPbڬt*3Z]Xh#߻}$şӘmb%G0VNC\zbv5 hhL +gV)o5\yc|wV]Q|T[͋O]4_|sGgJia 95%ٍ @C~ϝx4Eg|;\L!o̓:dP. 􋥆8;EfIBGߠ)xPLywC+BK)=qr7zTmFD;[2`r}'*CZ]me'"onQCqQdU^:ڀ J*l}HVaϩN (DZ~ųjeh=>(C&mm(2{ R}?p%vR[w䢃?Paze~Z3$!˟%*Ee3N</tzfmf9[Dں~ŀ2U[6։^1XohgAK]IJ5YU[>VIsK}_a@3KݥL<:Ӷg*E{09<7ܶ|h#1*D}*-p],{J(|B yޮjÕvɗS!aPiOT8sh.C!2M 3+7ז5Wns[J!v?j)bv@>w+,\ؤf3W܇3_G8Y0gq(,(ߪV9mx㡹VSzc*]buzP3;7c OdJuT۽eX-.ݪf^%,:pE(EwY޽GJ o{7tϒsnN݄XARW'UtR%5-ǍJCkF)!IMFzn8Y0Ξ >q'Z#cN[>OCSϤ:c͖r7eh^#W =na 9CöJ/}bzFLWXSK6xiN:Rʺ T}fpM[G2.[Ȁ."4k˔t m]5HKy6snK][M9̷8ZۙτXfQtdY1@[{+AڶXlZ}f$x=2Xɋ4}̃}x1rI=ҲB^>򸭾].|[&VzydȨM!ߡJy>ǃiW=EhkhvTRF|zw*onr*>Sz&LJ~(:s.Py T‚Ct?g۷ )準AK۵MDp;NFkJi|c)hl?E43O4ϣzȓ3lZo"shSGԷ%< RF(ZUm֦]1JJ:G+Ɓg))ixS}DGߕ'`/Z}#N'S3P#acتʗIA=j524r 4/r[ rf).)>_ ț:+|4=~|e.n,ط[HkQ2 kY=t۰CM}~. S=.bne[kn)YK>?Arh݂Vu"sua4Gg9S/r4)*YڗsRgdߗWCO 5dl ۖZSK.zH][s#jSԏ.S\dy_껽_٘g(|ʥܛdNT0- L%Y3& R5BLr ;bQ'쁆[,X3⃂'Y5ۚmEV9էTֶǩ^S+iW,Gκfsd T=3 ySvƊS3;ϼ_oe7t@Co*㖠lô[\X=RW,5\k\uwDi29Z>2lKu"\dyk1 yP=`^p[yx0}5Vcȅ u8xTmp6nʗo#RAx73Lj~VQLGD*S\6Q#즌7C+xNVԪi%rO=,=h[pU2՜ $`7M2P΂y9Y͟34jdWkr[e!w=wݔW -ZayhVu9cSNakx:YsqT/uji:O!.c-7E ٮ7-v;XA "ƤvG׎?Ԝ~--7[Vo`3nE^Cop <h\#eٮ}  I#bM5[/ =!g}]ϑiiof8tn6~`U)V 4g(-}pCr?bL&ϭ3gI#uwb &@ft &SPG}Ff5s- Bz;ܚ %fHeRz]S%+ֱ1Tm *~歃 yg`b@`.njxN59,-^ڣ>۔]C=@jmBaJ0ĹLݠ8{^wSJ]9*G9s7K D&x갭Q4})S$Td^55gh=C %ǚ{Q4ǝP~$vBEHV+W1]V'o&|u0pg: حSljxs[l99 8&S߱] %1 ծPEd9hԬrm0v@hA@ vg=ly·m\>!b!f81 {< ejV(Lc0y߯rL D.c&>w@ j^l<;) G'πAISp`vySFk+!p{Y_X=pBIȺBq}sHL@Jq_i'zK *- FymSQxԜe.P O?W߈^lu}eVG&{+o=&A[HBq=2Qᣒ#@@˃\ <)7O ɴ#ۢPhIXcT`Eg'de(w<ŬL0B+Ǟƅ#pp+A=RkܓU{ݢ+TSW[c+[ew(~Y@ȣ]a)ҹ]+\mcsO>@F@jʱ.Y7x*afcn 1(b).Ghq" Z8|ԣ鋻xMj4z}DS' FL%Ƅk6gI%A~"!ik$x'$ʡf%VÜW@j[w`>tQ`,xa޿{$: C#ID[4%`znPg@ӿ image/svg+xml synapse-1.53.0/docs/federate.md000066400000000000000000000071231420514467300163240ustar00rootroot00000000000000Setting up federation ===================== Federation is the process by which users on different servers can participate in the same room. For this to work, those other servers must be able to contact yours to send messages. The `server_name` configured in the Synapse configuration file (often `homeserver.yaml`) defines how resources (users, rooms, etc.) will be identified (eg: `@user:example.com`, `#room:example.com`). By default, it is also the domain that other servers will use to try to reach your server (via port 8448). This is easy to set up and will work provided you set the `server_name` to match your machine's public DNS hostname. For this default configuration to work, you will need to listen for TLS connections on port 8448. The preferred way to do that is by using a reverse proxy: see [the reverse proxy documentation](reverse_proxy.md) for instructions on how to correctly set one up. In some cases you might not want to run Synapse on the machine that has the `server_name` as its public DNS hostname, or you might want federation traffic to use a different port than 8448. For example, you might want to have your user names look like `@user:example.com`, but you want to run Synapse on `synapse.example.com` on port 443. This can be done using delegation, which allows an admin to control where federation traffic should be sent. See [the delegation documentation](delegate.md) for instructions on how to set this up. Once federation has been configured, you should be able to join a room over federation. A good place to start is `#synapse:matrix.org` - a room for Synapse admins. ## Troubleshooting You can use the [federation tester](https://matrix.org/federationtester) to check if your homeserver is configured correctly. Alternatively try the [JSON API used by the federation tester](https://matrix.org/federationtester/api/report?server_name=DOMAIN). Note that you'll have to modify this URL to replace `DOMAIN` with your `server_name`. Hitting the API directly provides extra detail. The typical failure mode for federation is that when the server tries to join a room, it is rejected with "401: Unauthorized". Generally this means that other servers in the room could not access yours. (Joining a room over federation is a complicated dance which requires connections in both directions). Another common problem is that people on other servers can't join rooms that you invite them to. This can be caused by an incorrectly-configured reverse proxy: see [the reverse proxy documentation](reverse_proxy.md) for instructions on how to correctly configure a reverse proxy. ### Known issues **HTTP `308 Permanent Redirect` redirects are not followed**: Due to missing features in the HTTP library used by Synapse, 308 redirects are currently not followed by federating servers, which can cause `M_UNKNOWN` or `401 Unauthorized` errors. This may affect users who are redirecting apex-to-www (e.g. `example.com` -> `www.example.com`), and especially users of the Kubernetes *Nginx Ingress* module, which uses 308 redirect codes by default. For those Kubernetes users, [this Stackoverflow post](https://stackoverflow.com/a/52617528/5096871) might be helpful. For other users, switching to a `301 Moved Permanently` code may be an option. 308 redirect codes will be supported properly in a future release of Synapse. ## Running a demo federation of Synapses If you want to get up and running quickly with a trio of homeservers in a private federation, there is a script in the `demo` directory. This is mainly useful just for development purposes. See [demo/README](https://github.com/matrix-org/synapse/tree/develop/demo/). synapse-1.53.0/docs/jwt.md000066400000000000000000000072541420514467300153560ustar00rootroot00000000000000# JWT Login Type Synapse comes with a non-standard login type to support [JSON Web Tokens](https://en.wikipedia.org/wiki/JSON_Web_Token). In general the documentation for [the login endpoint](https://matrix.org/docs/spec/client_server/r0.6.1#login) is still valid (and the mechanism works similarly to the [token based login](https://matrix.org/docs/spec/client_server/r0.6.1#token-based)). To log in using a JSON Web Token, clients should submit a `/login` request as follows: ```json { "type": "org.matrix.login.jwt", "token": "" } ``` Note that the login type of `m.login.jwt` is supported, but is deprecated. This will be removed in a future version of Synapse. The `token` field should include the JSON web token with the following claims: * A claim that encodes the local part of the user ID is required. By default, the `sub` (subject) claim is used, or a custom claim can be set in the configuration file. * The expiration time (`exp`), not before time (`nbf`), and issued at (`iat`) claims are optional, but validated if present. * The issuer (`iss`) claim is optional, but required and validated if configured. * The audience (`aud`) claim is optional, but required and validated if configured. Providing the audience claim when not configured will cause validation to fail. In the case that the token is not valid, the homeserver must respond with `403 Forbidden` and an error code of `M_FORBIDDEN`. As with other login types, there are additional fields (e.g. `device_id` and `initial_device_display_name`) which can be included in the above request. ## Preparing Synapse The JSON Web Token integration in Synapse uses the [`PyJWT`](https://pypi.org/project/pyjwt/) library, which must be installed as follows: * The relevant libraries are included in the Docker images and Debian packages provided by `matrix.org` so no further action is needed. * If you installed Synapse into a virtualenv, run `/path/to/env/bin/pip install synapse[pyjwt]` to install the necessary dependencies. * For other installation mechanisms, see the documentation provided by the maintainer. To enable the JSON web token integration, you should then add an `jwt_config` section to your configuration file (or uncomment the `enabled: true` line in the existing section). See [sample_config.yaml](./sample_config.yaml) for some sample settings. ## How to test JWT as a developer Although JSON Web Tokens are typically generated from an external server, the examples below use [PyJWT](https://pyjwt.readthedocs.io/en/latest/) directly. 1. Configure Synapse with JWT logins, note that this example uses a pre-shared secret and an algorithm of HS256: ```yaml jwt_config: enabled: true secret: "my-secret-token" algorithm: "HS256" ``` 2. Generate a JSON web token: ```bash $ pyjwt --key=my-secret-token --alg=HS256 encode sub=test-user eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.Ag71GT8v01UO3w80aqRPTeuVPBIBZkYhNTJJ-_-zQIc ``` 3. Query for the login types and ensure `org.matrix.login.jwt` is there: ```bash curl http://localhost:8080/_matrix/client/r0/login ``` 4. Login used the generated JSON web token from above: ```bash $ curl http://localhost:8082/_matrix/client/r0/login -X POST \ --data '{"type":"org.matrix.login.jwt","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.Ag71GT8v01UO3w80aqRPTeuVPBIBZkYhNTJJ-_-zQIc"}' { "access_token": "", "device_id": "ACBDEFGHI", "home_server": "localhost:8080", "user_id": "@test-user:localhost:8480" } ``` You should now be able to use the returned access token to query the client API. synapse-1.53.0/docs/log_contexts.md000066400000000000000000000325131420514467300172560ustar00rootroot00000000000000# Log Contexts To help track the processing of individual requests, synapse uses a '`log context`' to track which request it is handling at any given moment. This is done via a thread-local variable; a `logging.Filter` is then used to fish the information back out of the thread-local variable and add it to each log record. Logcontexts are also used for CPU and database accounting, so that we can track which requests were responsible for high CPU use or database activity. The `synapse.logging.context` module provides facilities for managing the current log context (as well as providing the `LoggingContextFilter` class). Asynchronous functions make the whole thing complicated, so this document describes how it all works, and how to write code which follows the rules. In this document, "awaitable" refers to any object which can be `await`ed. In the context of Synapse, that normally means either a coroutine or a Twisted [`Deferred`](https://twistedmatrix.com/documents/current/api/twisted.internet.defer.Deferred.html). ## Logcontexts without asynchronous code In the absence of any asynchronous voodoo, things are simple enough. As with any code of this nature, the rule is that our function should leave things as it found them: ```python from synapse.logging import context # omitted from future snippets def handle_request(request_id): request_context = context.LoggingContext() calling_context = context.set_current_context(request_context) try: request_context.request = request_id do_request_handling() logger.debug("finished") finally: context.set_current_context(calling_context) def do_request_handling(): logger.debug("phew") # this will be logged against request_id ``` LoggingContext implements the context management methods, so the above can be written much more succinctly as: ```python def handle_request(request_id): with context.LoggingContext() as request_context: request_context.request = request_id do_request_handling() logger.debug("finished") def do_request_handling(): logger.debug("phew") ``` ## Using logcontexts with awaitables Awaitables break the linear flow of code so that there is no longer a single entry point where we should set the logcontext and a single exit point where we should remove it. Consider the example above, where `do_request_handling` needs to do some blocking operation, and returns an awaitable: ```python async def handle_request(request_id): with context.LoggingContext() as request_context: request_context.request = request_id await do_request_handling() logger.debug("finished") ``` In the above flow: - The logcontext is set - `do_request_handling` is called, and returns an awaitable - `handle_request` awaits the awaitable - Execution of `handle_request` is suspended So we have stopped processing the request (and will probably go on to start processing the next), without clearing the logcontext. To circumvent this problem, synapse code assumes that, wherever you have an awaitable, you will want to `await` it. To that end, whereever functions return awaitables, we adopt the following conventions: **Rules for functions returning awaitables:** > - If the awaitable is already complete, the function returns with the > same logcontext it started with. > - If the awaitable is incomplete, the function clears the logcontext > before returning; when the awaitable completes, it restores the > logcontext before running any callbacks. That sounds complicated, but actually it means a lot of code (including the example above) "just works". There are two cases: - If `do_request_handling` returns a completed awaitable, then the logcontext will still be in place. In this case, execution will continue immediately after the `await`; the "finished" line will be logged against the right context, and the `with` block restores the original context before we return to the caller. - If the returned awaitable is incomplete, `do_request_handling` clears the logcontext before returning. The logcontext is therefore clear when `handle_request` `await`s the awaitable. Once `do_request_handling`'s awaitable completes, it will reinstate the logcontext, before running the second half of `handle_request`, so again the "finished" line will be logged against the right context, and the `with` block restores the original context. As an aside, it's worth noting that `handle_request` follows our rules - though that only matters if the caller has its own logcontext which it cares about. The following sections describe pitfalls and helpful patterns when implementing these rules. Always await your awaitables ---------------------------- Whenever you get an awaitable back from a function, you should `await` on it as soon as possible. Do not pass go; do not do any logging; do not call any other functions. ```python async def fun(): logger.debug("starting") await do_some_stuff() # just like this coro = more_stuff() result = await coro # also fine, of course return result ``` Provided this pattern is followed all the way back up to the callchain to where the logcontext was set, this will make things work out ok: provided `do_some_stuff` and `more_stuff` follow the rules above, then so will `fun`. It's all too easy to forget to `await`: for instance if we forgot that `do_some_stuff` returned an awaitable, we might plough on regardless. This leads to a mess; it will probably work itself out eventually, but not before a load of stuff has been logged against the wrong context. (Normally, other things will break, more obviously, if you forget to `await`, so this tends not to be a major problem in practice.) Of course sometimes you need to do something a bit fancier with your awaitable - not all code follows the linear A-then-B-then-C pattern. Notes on implementing more complex patterns are in later sections. ## Where you create a new awaitable, make it follow the rules Most of the time, an awaitable comes from another synapse function. Sometimes, though, we need to make up a new awaitable, or we get an awaitable back from external code. We need to make it follow our rules. The easy way to do it is by using `context.make_deferred_yieldable`. Suppose we want to implement `sleep`, which returns a deferred which will run its callbacks after a given number of seconds. That might look like: ```python # not a logcontext-rules-compliant function def get_sleep_deferred(seconds): d = defer.Deferred() reactor.callLater(seconds, d.callback, None) return d ``` That doesn't follow the rules, but we can fix it by calling it through `context.make_deferred_yieldable`: ```python async def sleep(seconds): return await context.make_deferred_yieldable(get_sleep_deferred(seconds)) ``` ## Fire-and-forget Sometimes you want to fire off a chain of execution, but not wait for its result. That might look a bit like this: ```python async def do_request_handling(): await foreground_operation() # *don't* do this background_operation() logger.debug("Request handling complete") async def background_operation(): await first_background_step() logger.debug("Completed first step") await second_background_step() logger.debug("Completed second step") ``` The above code does a couple of steps in the background after `do_request_handling` has finished. The log lines are still logged against the `request_context` logcontext, which may or may not be desirable. There are two big problems with the above, however. The first problem is that, if `background_operation` returns an incomplete awaitable, it will expect its caller to `await` immediately, so will have cleared the logcontext. In this example, that means that 'Request handling complete' will be logged without any context. The second problem, which is potentially even worse, is that when the awaitable returned by `background_operation` completes, it will restore the original logcontext. There is nothing waiting on that awaitable, so the logcontext will leak into the reactor and possibly get attached to some arbitrary future operation. There are two potential solutions to this. One option is to surround the call to `background_operation` with a `PreserveLoggingContext` call. That will reset the logcontext before starting `background_operation` (so the context restored when the deferred completes will be the empty logcontext), and will restore the current logcontext before continuing the foreground process: ```python async def do_request_handling(): await foreground_operation() # start background_operation off in the empty logcontext, to # avoid leaking the current context into the reactor. with PreserveLoggingContext(): background_operation() # this will now be logged against the request context logger.debug("Request handling complete") ``` Obviously that option means that the operations done in `background_operation` would be not be logged against a logcontext (though that might be fixed by setting a different logcontext via a `with LoggingContext(...)` in `background_operation`). The second option is to use `context.run_in_background`, which wraps a function so that it doesn't reset the logcontext even when it returns an incomplete awaitable, and adds a callback to the returned awaitable to reset the logcontext. In other words, it turns a function that follows the Synapse rules about logcontexts and awaitables into one which behaves more like an external function --- the opposite operation to that described in the previous section. It can be used like this: ```python async def do_request_handling(): await foreground_operation() context.run_in_background(background_operation) # this will now be logged against the request context logger.debug("Request handling complete") ``` ## Passing synapse deferreds into third-party functions A typical example of this is where we want to collect together two or more awaitables via `defer.gatherResults`: ```python a1 = operation1() a2 = operation2() a3 = defer.gatherResults([a1, a2]) ``` This is really a variation of the fire-and-forget problem above, in that we are firing off `a1` and `a2` without awaiting on them. The difference is that we now have third-party code attached to their callbacks. Anyway either technique given in the [Fire-and-forget](#fire-and-forget) section will work. Of course, the new awaitable returned by `gather` needs to be wrapped in order to make it follow the logcontext rules before we can yield it, as described in [Where you create a new awaitable, make it follow the rules](#where-you-create-a-new-awaitable-make-it-follow-the-rules). So, option one: reset the logcontext before starting the operations to be gathered: ```python async def do_request_handling(): with PreserveLoggingContext(): a1 = operation1() a2 = operation2() result = await defer.gatherResults([a1, a2]) ``` In this case particularly, though, option two, of using `context.run_in_background` almost certainly makes more sense, so that `operation1` and `operation2` are both logged against the original logcontext. This looks like: ```python async def do_request_handling(): a1 = context.run_in_background(operation1) a2 = context.run_in_background(operation2) result = await make_deferred_yieldable(defer.gatherResults([a1, a2])) ``` ## A note on garbage-collection of awaitable chains It turns out that our logcontext rules do not play nicely with awaitable chains which get orphaned and garbage-collected. Imagine we have some code that looks like this: ```python listener_queue = [] def on_something_interesting(): for d in listener_queue: d.callback("foo") async def await_something_interesting(): new_awaitable = defer.Deferred() listener_queue.append(new_awaitable) with PreserveLoggingContext(): await new_awaitable ``` Obviously, the idea here is that we have a bunch of things which are waiting for an event. (It's just an example of the problem here, but a relatively common one.) Now let's imagine two further things happen. First of all, whatever was waiting for the interesting thing goes away. (Perhaps the request times out, or something *even more* interesting happens.) Secondly, let's suppose that we decide that the interesting thing is never going to happen, and we reset the listener queue: ```python def reset_listener_queue(): listener_queue.clear() ``` So, both ends of the awaitable chain have now dropped their references, and the awaitable chain is now orphaned, and will be garbage-collected at some point. Note that `await_something_interesting` is a coroutine, which Python implements as a generator function. When Python garbage-collects generator functions, it gives them a chance to clean up by making the `await` (or `yield`) raise a `GeneratorExit` exception. In our case, that means that the `__exit__` handler of `PreserveLoggingContext` will carefully restore the request context, but there is now nothing waiting for its return, so the request context is never cleared. To reiterate, this problem only arises when *both* ends of a awaitable chain are dropped. Dropping the the reference to an awaitable you're supposed to be awaiting is bad practice, so this doesn't actually happen too much. Unfortunately, when it does happen, it will lead to leaked logcontexts which are incredibly hard to track down. synapse-1.53.0/docs/manhole.md000066400000000000000000000060441420514467300161710ustar00rootroot00000000000000Using the synapse manhole ========================= The "manhole" allows server administrators to access a Python shell on a running Synapse installation. This is a very powerful mechanism for administration and debugging. **_Security Warning_** Note that this will give administrative access to synapse to **all users** with shell access to the server. It should therefore **not** be enabled in environments where untrusted users have shell access. ## Configuring the manhole To enable it, first uncomment the `manhole` listener configuration in `homeserver.yaml`. The configuration is slightly different if you're using docker. #### Docker config If you are using Docker, set `bind_addresses` to `['0.0.0.0']` as shown: ```yaml listeners: - port: 9000 bind_addresses: ['0.0.0.0'] type: manhole ``` When using `docker run` to start the server, you will then need to change the command to the following to include the `manhole` port forwarding. The `-p 127.0.0.1:9000:9000` below is important: it ensures that access to the `manhole` is only possible for local users. ```bash docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ -p 127.0.0.1:9000:9000 \ matrixdotorg/synapse:latest ``` #### Native config If you are not using docker, set `bind_addresses` to `['::1', '127.0.0.1']` as shown. The `bind_addresses` in the example below is important: it ensures that access to the `manhole` is only possible for local users). ```yaml listeners: - port: 9000 bind_addresses: ['::1', '127.0.0.1'] type: manhole ``` ### Security settings The following config options are available: - `username` - The username for the manhole (defaults to `matrix`) - `password` - The password for the manhole (defaults to `rabbithole`) - `ssh_priv_key` - The path to a private SSH key (defaults to a hardcoded value) - `ssh_pub_key` - The path to a public SSH key (defaults to a hardcoded value) For example: ```yaml manhole_settings: username: manhole password: mypassword ssh_priv_key: "/home/synapse/manhole_keys/id_rsa" ssh_pub_key: "/home/synapse/manhole_keys/id_rsa.pub" ``` ## Accessing synapse manhole Then restart synapse, and point an ssh client at port 9000 on localhost, using the username and password configured in `homeserver.yaml` - with the default configuration, this would be: ```bash ssh -p9000 matrix@localhost ``` Then enter the password when prompted (the default is `rabbithole`). This gives a Python REPL in which `hs` gives access to the `synapse.server.HomeServer` object - which in turn gives access to many other parts of the process. Note that, prior to Synapse 1.41, any call which returns a coroutine will need to be wrapped in `ensureDeferred`. As a simple example, retrieving an event from the database: ```pycon >>> from twisted.internet import defer >>> defer.ensureDeferred(hs.get_datastore().get_event('$1416420717069yeQaw:matrix.org')) > ``` synapse-1.53.0/docs/media_repository.md000066400000000000000000000057501420514467300201270ustar00rootroot00000000000000# Media Repository *Synapse implementation-specific details for the media repository* The media repository * stores avatars, attachments and their thumbnails for media uploaded by local users. * caches avatars, attachments and their thumbnails for media uploaded by remote users. * caches resources and thumbnails used for [URL previews](development/url_previews.md). All media in Matrix can be identified by a unique [MXC URI](https://spec.matrix.org/latest/client-server-api/#matrix-content-mxc-uris), consisting of a server name and media ID: ``` mxc:/// ``` ## Local Media Synapse generates 24 character media IDs for content uploaded by local users. These media IDs consist of upper and lowercase letters and are case-sensitive. Other homeserver implementations may generate media IDs differently. Local media is recorded in the `local_media_repository` table, which includes metadata such as MIME types, upload times and file sizes. Note that this table is shared by the URL cache, which has a different media ID scheme. ### Paths A file with media ID `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` local_content/aa/bb/cccccccccccccccccccc local_thumbnails/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale ``` ## Remote Media When media from a remote homeserver is requested from Synapse, it is assigned a local `filesystem_id`, with the same format as locally-generated media IDs, as described above. A record of remote media is stored in the `remote_media_cache` table, which can be used to map remote MXC URIs (server names and media IDs) to local `filesystem_id`s. ### Paths A file from `matrix.org` with `filesystem_id` `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` remote_content/matrix.org/aa/bb/cccccccccccccccccccc remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale ``` Older thumbnails may omit the thumbnailing method: ``` remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg ``` Note that `remote_thumbnail/` does not have an `s`. ## URL Previews See [URL Previews](development/url_previews.md) for documentation on the URL preview process. When generating previews for URLs, Synapse may download and cache various resources, including images. These resources are assigned temporary media IDs of the form `yyyy-mm-dd_aaaaaaaaaaaaaaaa`, where `yyyy-mm-dd` is the current date and `aaaaaaaaaaaaaaaa` is a random sequence of 16 case-sensitive letters. The metadata for these cached resources is stored in the `local_media_repository` and `local_media_repository_url_cache` tables. Resources for URL previews are deleted after a few days. ### Paths The file with media ID `yyyy-mm-dd_aaaaaaaaaaaaaaaa` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` url_cache/yyyy-mm-dd/aaaaaaaaaaaaaaaa url_cache_thumbnails/yyyy-mm-dd/aaaaaaaaaaaaaaaa/128-96-image-jpeg-scale ``` synapse-1.53.0/docs/message_retention_policies.md000066400000000000000000000204171420514467300221500ustar00rootroot00000000000000# Message retention policies Synapse admins can enable support for message retention policies on their homeserver. Message retention policies exist at a room level, follow the semantics described in [MSC1763](https://github.com/matrix-org/matrix-doc/blob/matthew/msc1763/proposals/1763-configurable-retention-periods.md), and allow server and room admins to configure how long messages should be kept in a homeserver's database before being purged from it. **Please note that, as this feature isn't part of the Matrix specification yet, this implementation is to be considered as experimental.** A message retention policy is mainly defined by its `max_lifetime` parameter, which defines how long a message can be kept around after it was sent to the room. If a room doesn't have a message retention policy, and there's no default one for a given server, then no message sent in that room is ever purged on that server. MSC1763 also specifies semantics for a `min_lifetime` parameter which defines the amount of time after which an event _can_ get purged (after it was sent to the room), but Synapse doesn't currently support it beyond registering it. Both `max_lifetime` and `min_lifetime` are optional parameters. Note that message retention policies don't apply to state events. Once an event reaches its expiry date (defined as the time it was sent plus the value for `max_lifetime` in the room), two things happen: * Synapse stops serving the event to clients via any endpoint. * The message gets picked up by the next purge job (see the "Purge jobs" section) and is removed from Synapse's database. Since purge jobs don't run continuously, this means that an event might stay in a server's database for longer than the value for `max_lifetime` in the room would allow, though hidden from clients. Similarly, if a server (with support for message retention policies enabled) receives from another server an event that should have been purged according to its room's policy, then the receiving server will process and store that event until it's picked up by the next purge job, though it will always hide it from clients. Synapse requires at least one message in each room, so it will never delete the last message in a room. It will, however, hide it from clients. ## Server configuration Support for this feature can be enabled and configured in the `retention` section of the Synapse configuration file (see the [sample file](https://github.com/matrix-org/synapse/blob/v1.36.0/docs/sample_config.yaml#L451-L518)). To enable support for message retention policies, set the setting `enabled` in this section to `true`. ### Default policy A default message retention policy is a policy defined in Synapse's configuration that is used by Synapse for every room that doesn't have a message retention policy configured in its state. This allows server admins to ensure that messages are never kept indefinitely in a server's database. A default policy can be defined as such, in the `retention` section of the configuration file: ```yaml default_policy: min_lifetime: 1d max_lifetime: 1y ``` Here, `min_lifetime` and `max_lifetime` have the same meaning and level of support as previously described. They can be expressed either as a duration (using the units `s` (seconds), `m` (minutes), `h` (hours), `d` (days), `w` (weeks) and `y` (years)) or as a number of milliseconds. ### Purge jobs Purge jobs are the jobs that Synapse runs in the background to purge expired events from the database. They are only run if support for message retention policies is enabled in the server's configuration. If no configuration for purge jobs is configured by the server admin, Synapse will use a default configuration, which is described in the [sample configuration file](https://github.com/matrix-org/synapse/blob/v1.36.0/docs/sample_config.yaml#L451-L518). Some server admins might want a finer control on when events are removed depending on an event's room's policy. This can be done by setting the `purge_jobs` sub-section in the `retention` section of the configuration file. An example of such configuration could be: ```yaml purge_jobs: - longest_max_lifetime: 3d interval: 12h - shortest_max_lifetime: 3d longest_max_lifetime: 1w interval: 1d - shortest_max_lifetime: 1w interval: 2d ``` In this example, we define three jobs: * one that runs twice a day (every 12 hours) and purges events in rooms which policy's `max_lifetime` is lower or equal to 3 days. * one that runs once a day and purges events in rooms which policy's `max_lifetime` is between 3 days and a week. * one that runs once every 2 days and purges events in rooms which policy's `max_lifetime` is greater than a week. Note that this example is tailored to show different configurations and features slightly more jobs than it's probably necessary (in practice, a server admin would probably consider it better to replace the two last jobs with one that runs once a day and handles rooms which which policy's `max_lifetime` is greater than 3 days). Keep in mind, when configuring these jobs, that a purge job can become quite heavy on the server if it targets many rooms, therefore prefer having jobs with a low interval that target a limited set of rooms. Also make sure to include a job with no minimum and one with no maximum to make sure your configuration handles every policy. As previously mentioned in this documentation, while a purge job that runs e.g. every day means that an expired event might stay in the database for up to a day after its expiry, Synapse hides expired events from clients as soon as they expire, so the event is not visible to local users between its expiry date and the moment it gets purged from the server's database. ### Lifetime limits Server admins can set limits on the values of `max_lifetime` to use when purging old events in a room. These limits can be defined as such in the `retention` section of the configuration file: ```yaml allowed_lifetime_min: 1d allowed_lifetime_max: 1y ``` The limits are considered when running purge jobs. If necessary, the effective value of `max_lifetime` will be brought between `allowed_lifetime_min` and `allowed_lifetime_max` (inclusive). This means that, if the value of `max_lifetime` defined in the room's state is lower than `allowed_lifetime_min`, the value of `allowed_lifetime_min` will be used instead. Likewise, if the value of `max_lifetime` is higher than `allowed_lifetime_max`, the value of `allowed_lifetime_max` will be used instead. In the example above, we ensure Synapse never deletes events that are less than one day old, and that it always deletes events that are over a year old. If a default policy is set, and its `max_lifetime` value is lower than `allowed_lifetime_min` or higher than `allowed_lifetime_max`, the same process applies. Both parameters are optional; if one is omitted Synapse won't use it to adjust the effective value of `max_lifetime`. Like other settings in this section, these parameters can be expressed either as a duration or as a number of milliseconds. ## Room configuration To configure a room's message retention policy, a room's admin or moderator needs to send a state event in that room with the type `m.room.retention` and the following content: ```json { "max_lifetime": ... } ``` In this event's content, the `max_lifetime` parameter has the same meaning as previously described, and needs to be expressed in milliseconds. The event's content can also include a `min_lifetime` parameter, which has the same meaning and limited support as previously described. Note that over every server in the room, only the ones with support for message retention policies will actually remove expired events. This support is currently not enabled by default in Synapse. ## Note on reclaiming disk space While purge jobs actually delete data from the database, the disk space used by the database might not decrease immediately on the database's host. However, even though the database engine won't free up the disk space, it will start writing new data into where the purged data was. If you want to reclaim the freed disk space anyway and return it to the operating system, the server admin needs to run `VACUUM FULL;` (or `VACUUM;` for SQLite databases) on Synapse's database (see the related [PostgreSQL documentation](https://www.postgresql.org/docs/current/sql-vacuum.html)). synapse-1.53.0/docs/metrics-howto.md000066400000000000000000000423261420514467300173550ustar00rootroot00000000000000# How to monitor Synapse metrics using Prometheus 1. Install Prometheus: Follow instructions at 1. Enable Synapse metrics: There are two methods of enabling metrics in Synapse. The first serves the metrics as a part of the usual web server and can be enabled by adding the \"metrics\" resource to the existing listener as such: ```yaml resources: - names: - client - metrics ``` This provides a simple way of adding metrics to your Synapse installation, and serves under `/_synapse/metrics`. If you do not wish your metrics be publicly exposed, you will need to either filter it out at your load balancer, or use the second method. The second method runs the metrics server on a different port, in a different thread to Synapse. This can make it more resilient to heavy load meaning metrics cannot be retrieved, and can be exposed to just internal networks easier. The served metrics are available over HTTP only, and will be available at `/_synapse/metrics`. Add a new listener to homeserver.yaml: ```yaml listeners: - type: metrics port: 9000 bind_addresses: - '0.0.0.0' ``` For both options, you will need to ensure that `enable_metrics` is set to `True`. 1. Restart Synapse. 1. Add a Prometheus target for Synapse. It needs to set the `metrics_path` to a non-default value (under `scrape_configs`): ```yaml - job_name: "synapse" scrape_interval: 15s metrics_path: "/_synapse/metrics" static_configs: - targets: ["my.server.here:port"] ``` where `my.server.here` is the IP address of Synapse, and `port` is the listener port configured with the `metrics` resource. If your prometheus is older than 1.5.2, you will need to replace `static_configs` in the above with `target_groups`. 1. Restart Prometheus. 1. Consider using the [grafana dashboard](https://github.com/matrix-org/synapse/tree/master/contrib/grafana/) and required [recording rules](https://github.com/matrix-org/synapse/tree/master/contrib/prometheus/) ## Monitoring workers To monitor a Synapse installation using [workers](workers.md), every worker needs to be monitored independently, in addition to the main homeserver process. This is because workers don't send their metrics to the main homeserver process, but expose them directly (if they are configured to do so). To allow collecting metrics from a worker, you need to add a `metrics` listener to its configuration, by adding the following under `worker_listeners`: ```yaml - type: metrics bind_address: '' port: 9101 ``` The `bind_address` and `port` parameters should be set so that the resulting listener can be reached by prometheus, and they don't clash with an existing worker. With this example, the worker's metrics would then be available on `http://127.0.0.1:9101`. Example Prometheus target for Synapse with workers: ```yaml - job_name: "synapse" scrape_interval: 15s metrics_path: "/_synapse/metrics" static_configs: - targets: ["my.server.here:port"] labels: instance: "my.server" job: "master" index: 1 - targets: ["my.workerserver.here:port"] labels: instance: "my.server" job: "generic_worker" index: 1 - targets: ["my.workerserver.here:port"] labels: instance: "my.server" job: "generic_worker" index: 2 - targets: ["my.workerserver.here:port"] labels: instance: "my.server" job: "media_repository" index: 1 ``` Labels (`instance`, `job`, `index`) can be defined as anything. The labels are used to group graphs in grafana. ## Renaming of metrics & deprecation of old names in 1.2 Synapse 1.2 updates the Prometheus metrics to match the naming convention of the upstream `prometheus_client`. The old names are considered deprecated and will be removed in a future version of Synapse. | New Name | Old Name | | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | python_gc_objects_collected_total | python_gc_objects_collected | | python_gc_objects_uncollectable_total | python_gc_objects_uncollectable | | python_gc_collections_total | python_gc_collections | | process_cpu_seconds_total | process_cpu_seconds | | synapse_federation_client_sent_transactions_total | synapse_federation_client_sent_transactions | | synapse_federation_client_events_processed_total | synapse_federation_client_events_processed | | synapse_event_processing_loop_count_total | synapse_event_processing_loop_count | | synapse_event_processing_loop_room_count_total | synapse_event_processing_loop_room_count | | synapse_util_metrics_block_count_total | synapse_util_metrics_block_count | | synapse_util_metrics_block_time_seconds_total | synapse_util_metrics_block_time_seconds | | synapse_util_metrics_block_ru_utime_seconds_total | synapse_util_metrics_block_ru_utime_seconds | | synapse_util_metrics_block_ru_stime_seconds_total | synapse_util_metrics_block_ru_stime_seconds | | synapse_util_metrics_block_db_txn_count_total | synapse_util_metrics_block_db_txn_count | | synapse_util_metrics_block_db_txn_duration_seconds_total | synapse_util_metrics_block_db_txn_duration_seconds | | synapse_util_metrics_block_db_sched_duration_seconds_total | synapse_util_metrics_block_db_sched_duration_seconds | | synapse_background_process_start_count_total | synapse_background_process_start_count | | synapse_background_process_ru_utime_seconds_total | synapse_background_process_ru_utime_seconds | | synapse_background_process_ru_stime_seconds_total | synapse_background_process_ru_stime_seconds | | synapse_background_process_db_txn_count_total | synapse_background_process_db_txn_count | | synapse_background_process_db_txn_duration_seconds_total | synapse_background_process_db_txn_duration_seconds | | synapse_background_process_db_sched_duration_seconds_total | synapse_background_process_db_sched_duration_seconds | | synapse_storage_events_persisted_events_total | synapse_storage_events_persisted_events | | synapse_storage_events_persisted_events_sep_total | synapse_storage_events_persisted_events_sep | | synapse_storage_events_state_delta_total | synapse_storage_events_state_delta | | synapse_storage_events_state_delta_single_event_total | synapse_storage_events_state_delta_single_event | | synapse_storage_events_state_delta_reuse_delta_total | synapse_storage_events_state_delta_reuse_delta | | synapse_federation_server_received_pdus_total | synapse_federation_server_received_pdus | | synapse_federation_server_received_edus_total | synapse_federation_server_received_edus | | synapse_handler_presence_notified_presence_total | synapse_handler_presence_notified_presence | | synapse_handler_presence_federation_presence_out_total | synapse_handler_presence_federation_presence_out | | synapse_handler_presence_presence_updates_total | synapse_handler_presence_presence_updates | | synapse_handler_presence_timers_fired_total | synapse_handler_presence_timers_fired | | synapse_handler_presence_federation_presence_total | synapse_handler_presence_federation_presence | | synapse_handler_presence_bump_active_time_total | synapse_handler_presence_bump_active_time | | synapse_federation_client_sent_edus_total | synapse_federation_client_sent_edus | | synapse_federation_client_sent_pdu_destinations_count_total | synapse_federation_client_sent_pdu_destinations:count | | synapse_federation_client_sent_pdu_destinations_total | synapse_federation_client_sent_pdu_destinations:total | | synapse_handlers_appservice_events_processed_total | synapse_handlers_appservice_events_processed | | synapse_notifier_notified_events_total | synapse_notifier_notified_events | | synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total | synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter | | synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter_total | synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter | | synapse_http_httppusher_http_pushes_processed_total | synapse_http_httppusher_http_pushes_processed | | synapse_http_httppusher_http_pushes_failed_total | synapse_http_httppusher_http_pushes_failed | | synapse_http_httppusher_badge_updates_processed_total | synapse_http_httppusher_badge_updates_processed | | synapse_http_httppusher_badge_updates_failed_total | synapse_http_httppusher_badge_updates_failed | Removal of deprecated metrics & time based counters becoming histograms in 0.31.0 --------------------------------------------------------------------------------- The duplicated metrics deprecated in Synapse 0.27.0 have been removed. All time duration-based metrics have been changed to be seconds. This affects: | msec -> sec metrics | | -------------------------------------- | | python_gc_time | | python_twisted_reactor_tick_time | | synapse_storage_query_time | | synapse_storage_schedule_time | | synapse_storage_transaction_time | Several metrics have been changed to be histograms, which sort entries into buckets and allow better analysis. The following metrics are now histograms: | Altered metrics | | ------------------------------------------------ | | python_gc_time | | python_twisted_reactor_pending_calls | | python_twisted_reactor_tick_time | | synapse_http_server_response_time_seconds | | synapse_storage_query_time | | synapse_storage_schedule_time | | synapse_storage_transaction_time | Block and response metrics renamed for 0.27.0 --------------------------------------------- Synapse 0.27.0 begins the process of rationalising the duplicate `*:count` metrics reported for the resource tracking for code blocks and HTTP requests. At the same time, the corresponding `*:total` metrics are being renamed, as the `:total` suffix no longer makes sense in the absence of a corresponding `:count` metric. To enable a graceful migration path, this release just adds new names for the metrics being renamed. A future release will remove the old ones. The following table shows the new metrics, and the old metrics which they are replacing. | New name | Old name | | ------------------------------------------------------------- | ---------------------------------------------------------- | | synapse_util_metrics_block_count | synapse_util_metrics_block_timer:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_ru_utime:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_ru_stime:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_db_txn_count:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_db_txn_duration:count | | synapse_util_metrics_block_time_seconds | synapse_util_metrics_block_timer:total | | synapse_util_metrics_block_ru_utime_seconds | synapse_util_metrics_block_ru_utime:total | | synapse_util_metrics_block_ru_stime_seconds | synapse_util_metrics_block_ru_stime:total | | synapse_util_metrics_block_db_txn_count | synapse_util_metrics_block_db_txn_count:total | | synapse_util_metrics_block_db_txn_duration_seconds | synapse_util_metrics_block_db_txn_duration:total | | synapse_http_server_response_count | synapse_http_server_requests | | synapse_http_server_response_count | synapse_http_server_response_time:count | | synapse_http_server_response_count | synapse_http_server_response_ru_utime:count | | synapse_http_server_response_count | synapse_http_server_response_ru_stime:count | | synapse_http_server_response_count | synapse_http_server_response_db_txn_count:count | | synapse_http_server_response_count | synapse_http_server_response_db_txn_duration:count | | synapse_http_server_response_time_seconds | synapse_http_server_response_time:total | | synapse_http_server_response_ru_utime_seconds | synapse_http_server_response_ru_utime:total | | synapse_http_server_response_ru_stime_seconds | synapse_http_server_response_ru_stime:total | | synapse_http_server_response_db_txn_count | synapse_http_server_response_db_txn_count:total | | synapse_http_server_response_db_txn_duration_seconds | synapse_http_server_response_db_txn_duration:total | Standard Metric Names --------------------- As of synapse version 0.18.2, the format of the process-wide metrics has been changed to fit prometheus standard naming conventions. Additionally the units have been changed to seconds, from miliseconds. | New name | Old name | | ---------------------------------------- | --------------------------------- | | process_cpu_user_seconds_total | process_resource_utime / 1000 | | process_cpu_system_seconds_total | process_resource_stime / 1000 | | process_open_fds (no \'type\' label) | process_fds | The python-specific counts of garbage collector performance have been renamed. | New name | Old name | | -------------------------------- | -------------------------- | | python_gc_time | reactor_gc_time | | python_gc_unreachable_total | reactor_gc_unreachable | | python_gc_counts | reactor_gc_counts | The twisted-specific reactor metrics have been renamed. | New name | Old name | | -------------------------------------- | ----------------------- | | python_twisted_reactor_pending_calls | reactor_pending_calls | | python_twisted_reactor_tick_time | reactor_tick_time | synapse-1.53.0/docs/modules/000077500000000000000000000000001420514467300156705ustar00rootroot00000000000000synapse-1.53.0/docs/modules/account_validity_callbacks.md000066400000000000000000000033651420514467300235610ustar00rootroot00000000000000# Account validity callbacks Account validity callbacks allow module developers to add extra steps to verify the validity on an account, i.e. see if a user can be granted access to their account on the Synapse instance. Account validity callbacks can be registered using the module API's `register_account_validity_callbacks` method. The available account validity callbacks are: ### `is_user_expired` _First introduced in Synapse v1.39.0_ ```python async def is_user_expired(user: str) -> Optional[bool] ``` Called when processing any authenticated request (except for logout requests). The module can return a `bool` to indicate whether the user has expired and should be locked out of their account, or `None` if the module wasn't able to figure it out. The user is represented by their Matrix user ID (e.g. `@alice:example.com`). If the module returns `True`, the current request will be denied with the error code `ORG_MATRIX_EXPIRED_ACCOUNT` and the HTTP status code 403. Note that this doesn't invalidate the user's access token. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_user_registration` _First introduced in Synapse v1.39.0_ ```python async def on_user_registration(user: str) -> None ``` Called after successfully registering a user, in case the module needs to perform extra operations to keep track of them. (e.g. add them to a database table). The user is represented by their Matrix user ID. If multiple modules implement this callback, Synapse runs them all in order. synapse-1.53.0/docs/modules/background_update_controller_callbacks.md000066400000000000000000000060611420514467300261400ustar00rootroot00000000000000# Background update controller callbacks Background update controller callbacks allow module developers to control (e.g. rate-limit) how database background updates are run. A database background update is an operation Synapse runs on its database in the background after it starts. It's usually used to run database operations that would take too long if they were run at the same time as schema updates (which are run on startup) and delay Synapse's startup too much: populating a table with a big amount of data, adding an index on a big table, deleting superfluous data, etc. Background update controller callbacks can be registered using the module API's `register_background_update_controller_callbacks` method. Only the first module (in order of appearance in Synapse's configuration file) calling this method can register background update controller callbacks, subsequent calls are ignored. The available background update controller callbacks are: ### `on_update` _First introduced in Synapse v1.49.0_ ```python def on_update(update_name: str, database_name: str, one_shot: bool) -> AsyncContextManager[int] ``` Called when about to do an iteration of a background update. The module is given the name of the update, the name of the database, and a flag to indicate whether the background update will happen in one go and may take a long time (e.g. creating indices). If this last argument is set to `False`, the update will be run in batches. The module must return an async context manager. It will be entered before Synapse runs a background update; this should return the desired duration of the iteration, in milliseconds. The context manager will be exited when the iteration completes. Note that the duration returned by the context manager is a target, and an iteration may take substantially longer or shorter. If the `one_shot` flag is set to `True`, the duration returned is ignored. __Note__: Unlike most module callbacks in Synapse, this one is _synchronous_. This is because asynchronous operations are expected to be run by the async context manager. This callback is required when registering any other background update controller callback. ### `default_batch_size` _First introduced in Synapse v1.49.0_ ```python async def default_batch_size(update_name: str, database_name: str) -> int ``` Called before the first iteration of a background update, with the name of the update and of the database. The module must return the number of elements to process in this first iteration. If this callback is not defined, Synapse will use a default value of 100. ### `min_batch_size` _First introduced in Synapse v1.49.0_ ```python async def min_batch_size(update_name: str, database_name: str) -> int ``` Called before running a new batch for a background update, with the name of the update and of the database. The module must return an integer representing the minimum number of elements to process in this iteration. This number must be at least 1, and is used to ensure that progress is always made. If this callback is not defined, Synapse will use a default value of 100. synapse-1.53.0/docs/modules/index.md000066400000000000000000000040521420514467300173220ustar00rootroot00000000000000# Modules Synapse supports extending its functionality by configuring external modules. **Note**: When using third-party modules, you effectively allow someone else to run custom code on your Synapse homeserver. Server admins are encouraged to verify the provenance of the modules they use on their homeserver and make sure the modules aren't running malicious code on their instance. ## Using modules To use a module on Synapse, add it to the `modules` section of the configuration file: ```yaml modules: - module: my_super_module.MySuperClass config: do_thing: true - module: my_other_super_module.SomeClass config: {} ``` Each module is defined by a path to a Python class as well as a configuration. This information for a given module should be available in the module's own documentation. ## Using multiple modules The order in which modules are listed in this section is important. When processing an action that can be handled by several modules, Synapse will always prioritise the module that appears first (i.e. is the highest in the list). This means: * If several modules register the same callback, the callback registered by the module that appears first is used. * If several modules try to register a handler for the same HTTP path, only the handler registered by the module that appears first is used. Handlers registered by the other module(s) are ignored and Synapse will log a warning message about them. Note that Synapse doesn't allow multiple modules implementing authentication checkers via the password auth provider feature for the same login type with different fields. If this happens, Synapse will refuse to start. ## Current status We are currently in the process of migrating module interfaces to this system. While some interfaces might be compatible with it, others still require configuring modules in another part of Synapse's configuration file. Currently, only the following pre-existing interfaces are compatible with this new system: * spam checker * third-party rules * presence router * password auth providers synapse-1.53.0/docs/modules/password_auth_provider_callbacks.md000066400000000000000000000234401420514467300250110ustar00rootroot00000000000000# Password auth provider callbacks Password auth providers offer a way for server administrators to integrate their Synapse installation with an external authentication system. The callbacks can be registered by using the Module API's `register_password_auth_provider_callbacks` method. ## Callbacks ### `auth_checkers` _First introduced in Synapse v1.46.0_ ```python auth_checkers: Dict[Tuple[str, Tuple[str, ...]], Callable] ``` A dict mapping from tuples of a login type identifier (such as `m.login.password`) and a tuple of field names (such as `("password", "secret_thing")`) to authentication checking callbacks, which should be of the following form: ```python async def check_auth( user: str, login_type: str, login_dict: "synapse.module_api.JsonDict", ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]] ] ] ``` The login type and field names should be provided by the user in the request to the `/login` API. [The Matrix specification](https://matrix.org/docs/spec/client_server/latest#authentication-types) defines some types, however user defined ones are also allowed. The callback is passed the `user` field provided by the client (which might not be in `@username:server` form), the login type, and a dictionary of login secrets passed by the client. If the authentication is successful, the module must return the user's Matrix ID (e.g. `@alice:example.com`) and optionally a callback to be called with the response to the `/login` request. If the module doesn't wish to return a callback, it must return `None` instead. If the authentication is unsuccessful, the module must return `None`. If multiple modules register an auth checker for the same login type but with different fields, Synapse will refuse to start. If multiple modules register an auth checker for the same login type with the same fields, then the callbacks will be executed in order, until one returns a Matrix User ID (and optionally a callback). In that case, the return value of that callback will be accepted and subsequent callbacks will not be fired. If every callback returns `None`, then the authentication fails. ### `check_3pid_auth` _First introduced in Synapse v1.46.0_ ```python async def check_3pid_auth( medium: str, address: str, password: str, ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]] ] ] ``` Called when a user attempts to register or log in with a third party identifier, such as email. It is passed the medium (eg. `email`), an address (eg. `jdoe@example.com`) and the user's password. If the authentication is successful, the module must return the user's Matrix ID (e.g. `@alice:example.com`) and optionally a callback to be called with the response to the `/login` request. If the module doesn't wish to return a callback, it must return None instead. If the authentication is unsuccessful, the module must return `None`. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. If every callback return `None`, the authentication is denied. ### `on_logged_out` _First introduced in Synapse v1.46.0_ ```python async def on_logged_out( user_id: str, device_id: Optional[str], access_token: str ) -> None ``` Called during a logout request for a user. It is passed the qualified user ID, the ID of the deactivated device (if any: access tokens are occasionally created without an associated device ID), and the (now deactivated) access token. If multiple modules implement this callback, Synapse runs them all in order. ### `get_username_for_registration` _First introduced in Synapse v1.52.0_ ```python async def get_username_for_registration( uia_results: Dict[str, Any], params: Dict[str, Any], ) -> Optional[str] ``` Called when registering a new user. The module can return a username to set for the user being registered by returning it as a string, or `None` if it doesn't wish to force a username for this user. If a username is returned, it will be used as the local part of a user's full Matrix ID (e.g. it's `alice` in `@alice:example.com`). This callback is called once [User-Interactive Authentication](https://spec.matrix.org/latest/client-server-api/#user-interactive-authentication-api) has been completed by the user. It is not called when registering a user via SSO. It is passed two dictionaries, which include the information that the user has provided during the registration process. The first dictionary contains the results of the [User-Interactive Authentication](https://spec.matrix.org/latest/client-server-api/#user-interactive-authentication-api) flow followed by the user. Its keys are the identifiers of every step involved in the flow, associated with either a boolean value indicating whether the step was correctly completed, or additional information (e.g. email address, phone number...). A list of most existing identifiers can be found in the [Matrix specification](https://spec.matrix.org/v1.1/client-server-api/#authentication-types). Here's an example featuring all currently supported keys: ```python { "m.login.dummy": True, # Dummy authentication "m.login.terms": True, # User has accepted the terms of service for the homeserver "m.login.recaptcha": True, # User has completed the recaptcha challenge "m.login.email.identity": { # User has provided and verified an email address "medium": "email", "address": "alice@example.com", "validated_at": 1642701357084, }, "m.login.msisdn": { # User has provided and verified a phone number "medium": "msisdn", "address": "33123456789", "validated_at": 1642701357084, }, "m.login.registration_token": "sometoken", # User has registered through a registration token } ``` The second dictionary contains the parameters provided by the user's client in the request to `/_matrix/client/v3/register`. See the [Matrix specification](https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3register) for a complete list of these parameters. If the module cannot, or does not wish to, generate a username for this user, it must return `None`. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. If every callback return `None`, the username provided by the user is used, if any (otherwise one is automatically generated). ## `is_3pid_allowed` _First introduced in Synapse v1.53.0_ ```python async def is_3pid_allowed(self, medium: str, address: str, registration: bool) -> bool ``` Called when attempting to bind a third-party identifier (i.e. an email address or a phone number). The module is given the medium of the third-party identifier (which is `email` if the identifier is an email address, or `msisdn` if the identifier is a phone number) and its address, as well as a boolean indicating whether the attempt to bind is happening as part of registering a new user. The module must return a boolean indicating whether the identifier can be allowed to be bound to an account on the local homeserver. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ## Example The example module below implements authentication checkers for two different login types: - `my.login.type` - Expects a `my_field` field to be sent to `/login` - Is checked by the method: `self.check_my_login` - `m.login.password` (defined in [the spec](https://matrix.org/docs/spec/client_server/latest#password-based)) - Expects a `password` field to be sent to `/login` - Is checked by the method: `self.check_pass` ```python from typing import Awaitable, Callable, Optional, Tuple import synapse from synapse import module_api class MyAuthProvider: def __init__(self, config: dict, api: module_api): self.api = api self.credentials = { "bob": "building", "@scoop:matrix.org": "digging", } api.register_password_auth_provider_callbacks( auth_checkers={ ("my.login_type", ("my_field",)): self.check_my_login, ("m.login.password", ("password",)): self.check_pass, }, ) async def check_my_login( self, username: str, login_type: str, login_dict: "synapse.module_api.JsonDict", ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]], ] ]: if login_type != "my.login_type": return None if self.credentials.get(username) == login_dict.get("my_field"): return self.api.get_qualified_user_id(username) async def check_pass( self, username: str, login_type: str, login_dict: "synapse.module_api.JsonDict", ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]], ] ]: if login_type != "m.login.password": return None if self.credentials.get(username) == login_dict.get("password"): return self.api.get_qualified_user_id(username) ``` synapse-1.53.0/docs/modules/porting_legacy_module.md000066400000000000000000000021531420514467300225660ustar00rootroot00000000000000# Porting an existing module that uses the old interface In order to port a module that uses Synapse's old module interface, its author needs to: * ensure the module's callbacks are all asynchronous. * register their callbacks using one or more of the `register_[...]_callbacks` methods from the `ModuleApi` class in the module's `__init__` method (see [this section](writing_a_module.html#registering-a-callback) for more info). Additionally, if the module is packaged with an additional web resource, the module should register this resource in its `__init__` method using the `register_web_resource` method from the `ModuleApi` class (see [this section](writing_a_module.html#registering-a-web-resource) for more info). There is no longer a `get_db_schema_files` callback provided for password auth provider modules. Any changes to the database should now be made by the module using the module API class. The module's author should also update any example in the module's configuration to only use the new `modules` section in Synapse's configuration file (see [this section](index.html#using-modules) for more info). synapse-1.53.0/docs/modules/presence_router_callbacks.md000066400000000000000000000076111420514467300234220ustar00rootroot00000000000000# Presence router callbacks Presence router callbacks allow module developers to specify additional users (local or remote) to receive certain presence updates from local users. Presence router callbacks can be registered using the module API's `register_presence_router_callbacks` method. ## Callbacks The available presence router callbacks are: ### `get_users_for_states` _First introduced in Synapse v1.42.0_ ```python async def get_users_for_states( state_updates: Iterable["synapse.api.UserPresenceState"], ) -> Dict[str, Set["synapse.api.UserPresenceState"]] ``` **Requires** `get_interested_users` to also be registered Called when processing updates to the presence state of one or more users. This callback can be used to instruct the server to forward that presence state to specific users. The module must return a dictionary that maps from Matrix user IDs (which can be local or remote) to the `UserPresenceState` changes that they should be forwarded. Synapse will then attempt to send the specified presence updates to each user when possible. If multiple modules implement this callback, Synapse merges all the dictionaries returned by the callbacks. If multiple callbacks return a dictionary containing the same key, Synapse concatenates the sets associated with this key from each dictionary. ### `get_interested_users` _First introduced in Synapse v1.42.0_ ```python async def get_interested_users( user_id: str ) -> Union[Set[str], "synapse.module_api.PRESENCE_ALL_USERS"] ``` **Requires** `get_users_for_states` to also be registered Called when determining which users someone should be able to see the presence state of. This callback should return complementary results to `get_users_for_state` or the presence information may not be properly forwarded. The callback is given the Matrix user ID for a local user that is requesting presence data and should return the Matrix user IDs of the users whose presence state they are allowed to query. The returned users can be local or remote. Alternatively the callback can return `synapse.module_api.PRESENCE_ALL_USERS` to indicate that the user should receive updates from all known users. If multiple modules implement this callback, they will be considered in order. Synapse calls each callback one by one, and use a concatenation of all the `set`s returned by the callbacks. If one callback returns `synapse.module_api.PRESENCE_ALL_USERS`, Synapse uses this value instead. If this happens, Synapse does not call any of the subsequent implementations of this callback. ## Example The example below is a module that implements both presence router callbacks, and ensures that `@alice:example.org` receives all presence updates from `@bob:example.com` and `@charlie:somewhere.org`, regardless of whether Alice shares a room with any of them. ```python from typing import Dict, Iterable, Set, Union from synapse.module_api import ModuleApi class CustomPresenceRouter: def __init__(self, config: dict, api: ModuleApi): self.api = api self.api.register_presence_router_callbacks( get_users_for_states=self.get_users_for_states, get_interested_users=self.get_interested_users, ) async def get_users_for_states( self, state_updates: Iterable["synapse.api.UserPresenceState"], ) -> Dict[str, Set["synapse.api.UserPresenceState"]]: res = {} for update in state_updates: if ( update.user_id == "@bob:example.com" or update.user_id == "@charlie:somewhere.org" ): res.setdefault("@alice:example.com", set()).add(update) return res async def get_interested_users( self, user_id: str, ) -> Union[Set[str], "synapse.module_api.PRESENCE_ALL_USERS"]: if user_id == "@alice:example.com": return {"@bob:example.com", "@charlie:somewhere.org"} return set() ``` synapse-1.53.0/docs/modules/spam_checker_callbacks.md000066400000000000000000000257061420514467300226470ustar00rootroot00000000000000# Spam checker callbacks Spam checker callbacks allow module developers to implement spam mitigation actions for Synapse instances. Spam checker callbacks can be registered using the module API's `register_spam_checker_callbacks` method. ## Callbacks The available spam checker callbacks are: ### `check_event_for_spam` _First introduced in Synapse v1.37.0_ ```python async def check_event_for_spam(event: "synapse.events.EventBase") -> Union[bool, str] ``` Called when receiving an event from a client or via federation. The module can return either a `bool` to indicate whether the event must be rejected because of spam, or a `str` to indicate the event must be rejected because of spam and to give a rejection reason to forward to clients. If multiple modules implement this callback, they will be considered in order. If a callback returns `False`, Synapse falls through to the next one. The value of the first callback that does not return `False` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_join_room` _First introduced in Synapse v1.37.0_ ```python async def user_may_join_room(user: str, room: str, is_invited: bool) -> bool ``` Called when a user is trying to join a room. The module must return a `bool` to indicate whether the user can join the room. The user is represented by their Matrix user ID (e.g. `@alice:example.com`) and the room is represented by its Matrix ID (e.g. `!room:example.com`). The module is also given a boolean to indicate whether the user currently has a pending invite in the room. This callback isn't called if the join is performed by a server administrator, or in the context of a room creation. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_invite` _First introduced in Synapse v1.37.0_ ```python async def user_may_invite(inviter: str, invitee: str, room_id: str) -> bool ``` Called when processing an invitation. The module must return a `bool` indicating whether the inviter can invite the invitee to the given room. Both inviter and invitee are represented by their Matrix user ID (e.g. `@alice:example.com`). If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_send_3pid_invite` _First introduced in Synapse v1.45.0_ ```python async def user_may_send_3pid_invite( inviter: str, medium: str, address: str, room_id: str, ) -> bool ``` Called when processing an invitation using a third-party identifier (also called a 3PID, e.g. an email address or a phone number). The module must return a `bool` indicating whether the inviter can invite the invitee to the given room. The inviter is represented by their Matrix user ID (e.g. `@alice:example.com`), and the invitee is represented by its medium (e.g. "email") and its address (e.g. `alice@example.com`). See [the Matrix specification](https://matrix.org/docs/spec/appendices#pid-types) for more information regarding third-party identifiers. For example, a call to this callback to send an invitation to the email address `alice@example.com` would look like this: ```python await user_may_send_3pid_invite( "@bob:example.com", # The inviter's user ID "email", # The medium of the 3PID to invite "alice@example.com", # The address of the 3PID to invite "!some_room:example.com", # The ID of the room to send the invite into ) ``` **Note**: If the third-party identifier is already associated with a matrix user ID, [`user_may_invite`](#user_may_invite) will be used instead. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_create_room` _First introduced in Synapse v1.37.0_ ```python async def user_may_create_room(user: str) -> bool ``` Called when processing a room creation request. The module must return a `bool` indicating whether the given user (represented by their Matrix user ID) is allowed to create a room. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_create_room_alias` _First introduced in Synapse v1.37.0_ ```python async def user_may_create_room_alias(user: str, room_alias: "synapse.types.RoomAlias") -> bool ``` Called when trying to associate an alias with an existing room. The module must return a `bool` indicating whether the given user (represented by their Matrix user ID) is allowed to set the given alias. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_publish_room` _First introduced in Synapse v1.37.0_ ```python async def user_may_publish_room(user: str, room_id: str) -> bool ``` Called when trying to publish a room to the homeserver's public rooms directory. The module must return a `bool` indicating whether the given user (represented by their Matrix user ID) is allowed to publish the given room. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_username_for_spam` _First introduced in Synapse v1.37.0_ ```python async def check_username_for_spam(user_profile: Dict[str, str]) -> bool ``` Called when computing search results in the user directory. The module must return a `bool` indicating whether the given user profile can appear in search results. The profile is represented as a dictionary with the following keys: * `user_id`: The Matrix ID for this user. * `display_name`: The user's display name. * `avatar_url`: The `mxc://` URL to the user's avatar. The module is given a copy of the original dictionary, so modifying it from within the module cannot modify a user's profile when included in user directory search results. If multiple modules implement this callback, they will be considered in order. If a callback returns `False`, Synapse falls through to the next one. The value of the first callback that does not return `False` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_registration_for_spam` _First introduced in Synapse v1.37.0_ ```python async def check_registration_for_spam( email_threepid: Optional[dict], username: Optional[str], request_info: Collection[Tuple[str, str]], auth_provider_id: Optional[str] = None, ) -> "synapse.spam_checker_api.RegistrationBehaviour" ``` Called when registering a new user. The module must return a `RegistrationBehaviour` indicating whether the registration can go through or must be denied, or whether the user may be allowed to register but will be shadow banned. The arguments passed to this callback are: * `email_threepid`: The email address used for registering, if any. * `username`: The username the user would like to register. Can be `None`, meaning that Synapse will generate one later. * `request_info`: A collection of tuples, which first item is a user agent, and which second item is an IP address. These user agents and IP addresses are the ones that were used during the registration process. * `auth_provider_id`: The identifier of the SSO authentication provider, if any. If multiple modules implement this callback, they will be considered in order. If a callback returns `RegistrationBehaviour.ALLOW`, Synapse falls through to the next one. The value of the first callback that does not return `RegistrationBehaviour.ALLOW` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_media_file_for_spam` _First introduced in Synapse v1.37.0_ ```python async def check_media_file_for_spam( file_wrapper: "synapse.rest.media.v1.media_storage.ReadableFileWrapper", file_info: "synapse.rest.media.v1._base.FileInfo", ) -> bool ``` Called when storing a local or remote file. The module must return a boolean indicating whether the given file can be stored in the homeserver's media store. If multiple modules implement this callback, they will be considered in order. If a callback returns `False`, Synapse falls through to the next one. The value of the first callback that does not return `False` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ## Example The example below is a module that implements the spam checker callback `check_event_for_spam` to deny any message sent by users whose Matrix user IDs are mentioned in a configured list, and registers a web resource to the path `/_synapse/client/list_spam_checker/is_evil` that returns a JSON object indicating whether the provided user appears in that list. ```python import json from typing import Union from twisted.web.resource import Resource from twisted.web.server import Request from synapse.module_api import ModuleApi class IsUserEvilResource(Resource): def __init__(self, config): super(IsUserEvilResource, self).__init__() self.evil_users = config.get("evil_users") or [] def render_GET(self, request: Request): user = request.args.get(b"user")[0].decode() request.setHeader(b"Content-Type", b"application/json") return json.dumps({"evil": user in self.evil_users}).encode() class ListSpamChecker: def __init__(self, config: dict, api: ModuleApi): self.api = api self.evil_users = config.get("evil_users") or [] self.api.register_spam_checker_callbacks( check_event_for_spam=self.check_event_for_spam, ) self.api.register_web_resource( path="/_synapse/client/list_spam_checker/is_evil", resource=IsUserEvilResource(config), ) async def check_event_for_spam(self, event: "synapse.events.EventBase") -> Union[bool, str]: return event.sender not in self.evil_users ``` synapse-1.53.0/docs/modules/third_party_rules_callbacks.md000066400000000000000000000163401420514467300237600ustar00rootroot00000000000000# Third party rules callbacks Third party rules callbacks allow module developers to add extra checks to verify the validity of incoming events. Third party event rules callbacks can be registered using the module API's `register_third_party_rules_callbacks` method. ## Callbacks The available third party rules callbacks are: ### `check_event_allowed` _First introduced in Synapse v1.39.0_ ```python async def check_event_allowed( event: "synapse.events.EventBase", state_events: "synapse.types.StateMap", ) -> Tuple[bool, Optional[dict]] ``` ** This callback is very experimental and can and will break without notice. Module developers are encouraged to implement `check_event_for_spam` from the spam checker category instead. ** Called when processing any incoming event, with the event and a `StateMap` representing the current state of the room the event is being sent into. A `StateMap` is a dictionary that maps tuples containing an event type and a state key to the corresponding state event. For example retrieving the room's `m.room.create` event from the `state_events` argument would look like this: `state_events.get(("m.room.create", ""))`. The module must return a boolean indicating whether the event can be allowed. Note that this callback function processes incoming events coming via federation traffic (on top of client traffic). This means denying an event might cause the local copy of the room's history to diverge from that of remote servers. This may cause federation issues in the room. It is strongly recommended to only deny events using this callback function if the sender is a local user, or in a private federation in which all servers are using the same module, with the same configuration. If the boolean returned by the module is `True`, it may also tell Synapse to replace the event with new data by returning the new event's data as a dictionary. In order to do that, it is recommended the module calls `event.get_dict()` to get the current event as a dictionary, and modify the returned dictionary accordingly. If `check_event_allowed` raises an exception, the module is assumed to have failed. The event will not be accepted but is not treated as explicitly rejected, either. An HTTP request causing the module check will likely result in a 500 Internal Server Error. When the boolean returned by the module is `False`, the event is rejected. (Module developers should not use exceptions for rejection.) Note that replacing the event only works for events sent by local users, not for events received over federation. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_create_room` _First introduced in Synapse v1.39.0_ ```python async def on_create_room( requester: "synapse.types.Requester", request_content: dict, is_requester_admin: bool, ) -> None ``` Called when processing a room creation request, with the `Requester` object for the user performing the request, a dictionary representing the room creation request's JSON body (see [the spec](https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-createroom) for a list of possible parameters), and a boolean indicating whether the user performing the request is a server admin. Modules can modify the `request_content` (by e.g. adding events to its `initial_state`), or deny the room's creation by raising a `module_api.errors.SynapseError`. If multiple modules implement this callback, they will be considered in order. If a callback returns without raising an exception, Synapse falls through to the next one. The room creation will be forbidden as soon as one of the callbacks raises an exception. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_threepid_can_be_invited` _First introduced in Synapse v1.39.0_ ```python async def check_threepid_can_be_invited( medium: str, address: str, state_events: "synapse.types.StateMap", ) -> bool: ``` Called when processing an invite via a third-party identifier (i.e. email or phone number). The module must return a boolean indicating whether the invite can go through. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_visibility_can_be_modified` _First introduced in Synapse v1.39.0_ ```python async def check_visibility_can_be_modified( room_id: str, state_events: "synapse.types.StateMap", new_visibility: str, ) -> bool: ``` Called when changing the visibility of a room in the local public room directory. The visibility is a string that's either "public" or "private". The module must return a boolean indicating whether the change can go through. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_new_event` _First introduced in Synapse v1.47.0_ ```python async def on_new_event( event: "synapse.events.EventBase", state_events: "synapse.types.StateMap", ) -> None: ``` Called after sending an event into a room. The module is passed the event, as well as the state of the room _after_ the event. This means that if the event is a state event, it will be included in this state. Note that this callback is called when the event has already been processed and stored into the room, which means this callback cannot be used to deny persisting the event. To deny an incoming event, see [`check_event_for_spam`](spam_checker_callbacks.md#check_event_for_spam) instead. If multiple modules implement this callback, Synapse runs them all in order. ## Example The example below is a module that implements the third-party rules callback `check_event_allowed` to censor incoming messages as dictated by a third-party service. ```python from typing import Optional, Tuple from synapse.module_api import ModuleApi _DEFAULT_CENSOR_ENDPOINT = "https://my-internal-service.local/censor-event" class EventCensorer: def __init__(self, config: dict, api: ModuleApi): self.api = api self._endpoint = config.get("endpoint", _DEFAULT_CENSOR_ENDPOINT) self.api.register_third_party_rules_callbacks( check_event_allowed=self.check_event_allowed, ) async def check_event_allowed( self, event: "synapse.events.EventBase", state_events: "synapse.types.StateMap", ) -> Tuple[bool, Optional[dict]]: event_dict = event.get_dict() new_event_content = await self.api.http_client.post_json_get_json( uri=self._endpoint, post_json=event_dict, ) event_dict["content"] = new_event_content return event_dict ``` synapse-1.53.0/docs/modules/writing_a_module.md000066400000000000000000000101401420514467300215360ustar00rootroot00000000000000# Writing a module A module is a Python class that uses Synapse's module API to interact with the homeserver. It can register callbacks that Synapse will call on specific operations, as well as web resources to attach to Synapse's web server. When instantiated, a module is given its parsed configuration as well as an instance of the `synapse.module_api.ModuleApi` class. The configuration is a dictionary, and is either the output of the module's `parse_config` static method (see below), or the configuration associated with the module in Synapse's configuration file. See the documentation for the `ModuleApi` class [here](https://github.com/matrix-org/synapse/blob/master/synapse/module_api/__init__.py). ## When Synapse runs with several modules configured If Synapse is running with other modules configured, the order each module appears in within the `modules` section of the Synapse configuration file might restrict what it can or cannot register. See [this section](index.html#using-multiple-modules) for more information. On top of the rules listed in the link above, if a callback returns a value that should cause the current operation to fail (e.g. if a callback checking an event returns with a value that should cause the event to be denied), Synapse will fail the operation and ignore any subsequent callbacks that should have been run after this one. The documentation for each callback mentions how Synapse behaves when multiple modules implement it. ## Handling the module's configuration A module can implement the following static method: ```python @staticmethod def parse_config(config: dict) -> dict ``` This method is given a dictionary resulting from parsing the YAML configuration for the module. It may modify it (for example by parsing durations expressed as strings (e.g. "5d") into milliseconds, etc.), and return the modified dictionary. It may also verify that the configuration is correct, and raise an instance of `synapse.module_api.errors.ConfigError` if not. ## Registering a web resource Modules can register web resources onto Synapse's web server using the following module API method: ```python def ModuleApi.register_web_resource(path: str, resource: IResource) -> None ``` The path is the full absolute path to register the resource at. For example, if you register a resource for the path `/_synapse/client/my_super_module/say_hello`, Synapse will serve it at `http(s)://[HS_URL]/_synapse/client/my_super_module/say_hello`. Note that Synapse does not allow registering resources for several sub-paths in the `/_matrix` namespace (such as anything under `/_matrix/client` for example). It is strongly recommended that modules register their web resources under the `/_synapse/client` namespace. The provided resource is a Python class that implements Twisted's [IResource](https://twistedmatrix.com/documents/current/api/twisted.web.resource.IResource.html) interface (such as [Resource](https://twistedmatrix.com/documents/current/api/twisted.web.resource.Resource.html)). Only one resource can be registered for a given path. If several modules attempt to register a resource for the same path, the module that appears first in Synapse's configuration file takes priority. Modules **must** register their web resources in their `__init__` method. ## Registering a callback Modules can use Synapse's module API to register callbacks. Callbacks are functions that Synapse will call when performing specific actions. Callbacks must be asynchronous (unless specified otherwise), and are split in categories. A single module may implement callbacks from multiple categories, and is under no obligation to implement all callbacks from the categories it registers callbacks for. Modules can register callbacks using one of the module API's `register_[...]_callbacks` methods. The callback functions are passed to these methods as keyword arguments, with the callback name as the argument name and the function as its value. A `register_[...]_callbacks` method exists for each category. Callbacks for each category can be found on their respective page of the [Synapse documentation website](https://matrix-org.github.io/synapse).synapse-1.53.0/docs/openid.md000066400000000000000000000504501420514467300160240ustar00rootroot00000000000000# Configuring Synapse to authenticate against an OpenID Connect provider Synapse can be configured to use an OpenID Connect Provider (OP) for authentication, instead of its own local password database. Any OP should work with Synapse, as long as it supports the authorization code flow. There are a few options for that: - start a local OP. Synapse has been tested with [Hydra][hydra] and [Dex][dex-idp]. Note that for an OP to work, it should be served under a secure (HTTPS) origin. A certificate signed with a self-signed, locally trusted CA should work. In that case, start Synapse with a `SSL_CERT_FILE` environment variable set to the path of the CA. - set up a SaaS OP, like [Google][google-idp], [Auth0][auth0] or [Okta][okta]. Synapse has been tested with Auth0 and Google. It may also be possible to use other OAuth2 providers which provide the [authorization code grant type](https://tools.ietf.org/html/rfc6749#section-4.1), such as [Github][github-idp]. [google-idp]: https://developers.google.com/identity/protocols/oauth2/openid-connect [auth0]: https://auth0.com/ [authentik]: https://goauthentik.io/ [lemonldap]: https://lemonldap-ng.org/ [okta]: https://www.okta.com/ [dex-idp]: https://github.com/dexidp/dex [keycloak-idp]: https://www.keycloak.org/docs/latest/server_admin/#sso-protocols [hydra]: https://www.ory.sh/docs/hydra/ [github-idp]: https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps ## Preparing Synapse The OpenID integration in Synapse uses the [`authlib`](https://pypi.org/project/Authlib/) library, which must be installed as follows: * The relevant libraries are included in the Docker images and Debian packages provided by `matrix.org` so no further action is needed. * If you installed Synapse into a virtualenv, run `/path/to/env/bin/pip install matrix-synapse[oidc]` to install the necessary dependencies. * For other installation mechanisms, see the documentation provided by the maintainer. To enable the OpenID integration, you should then add a section to the `oidc_providers` setting in your configuration file (or uncomment one of the existing examples). See [sample_config.yaml](./sample_config.yaml) for some sample settings, as well as the text below for example configurations for specific providers. ## Sample configs Here are a few configs for providers that should work with Synapse. ### Microsoft Azure Active Directory Azure AD can act as an OpenID Connect Provider. Register a new application under *App registrations* in the Azure AD management console. The RedirectURI for your application should point to your matrix server: `[synapse public baseurl]/_synapse/client/oidc/callback` Go to *Certificates & secrets* and register a new client secret. Make note of your Directory (tenant) ID as it will be used in the Azure links. Edit your Synapse config file and change the `oidc_config` section: ```yaml oidc_providers: - idp_id: microsoft idp_name: Microsoft issuer: "https://login.microsoftonline.com//v2.0" client_id: "" client_secret: "" scopes: ["openid", "profile"] authorization_endpoint: "https://login.microsoftonline.com//oauth2/v2.0/authorize" token_endpoint: "https://login.microsoftonline.com//oauth2/v2.0/token" userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo" user_mapping_provider: config: localpart_template: "{{ user.preferred_username.split('@')[0] }}" display_name_template: "{{ user.name }}" ``` ### Dex [Dex][dex-idp] is a simple, open-source OpenID Connect Provider. Although it is designed to help building a full-blown provider with an external database, it can be configured with static passwords in a config file. Follow the [Getting Started guide](https://dexidp.io/docs/getting-started/) to install Dex. Edit `examples/config-dev.yaml` config file from the Dex repo to add a client: ```yaml staticClients: - id: synapse secret: secret redirectURIs: - '[synapse public baseurl]/_synapse/client/oidc/callback' name: 'Synapse' ``` Run with `dex serve examples/config-dev.yaml`. Synapse config: ```yaml oidc_providers: - idp_id: dex idp_name: "My Dex server" skip_verification: true # This is needed as Dex is served on an insecure endpoint issuer: "http://127.0.0.1:5556/dex" client_id: "synapse" client_secret: "secret" scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.name }}" display_name_template: "{{ user.name|capitalize }}" ``` ### Keycloak [Keycloak][keycloak-idp] is an opensource IdP maintained by Red Hat. Follow the [Getting Started Guide](https://www.keycloak.org/getting-started) to install Keycloak and set up a realm. 1. Click `Clients` in the sidebar and click `Create` 2. Fill in the fields as below: | Field | Value | |-----------|-----------| | Client ID | `synapse` | | Client Protocol | `openid-connect` | 3. Click `Save` 4. Fill in the fields as below: | Field | Value | |-----------|-----------| | Client ID | `synapse` | | Enabled | `On` | | Client Protocol | `openid-connect` | | Access Type | `confidential` | | Valid Redirect URIs | `[synapse public baseurl]/_synapse/client/oidc/callback` | 5. Click `Save` 6. On the Credentials tab, update the fields: | Field | Value | |-------|-------| | Client Authenticator | `Client ID and Secret` | 7. Click `Regenerate Secret` 8. Copy Secret ```yaml oidc_providers: - idp_id: keycloak idp_name: "My KeyCloak server" issuer: "https://127.0.0.1:8443/auth/realms/{realm_name}" client_id: "synapse" client_secret: "copy secret generated from above" scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` ### Auth0 [Auth0][auth0] is a hosted SaaS IdP solution. 1. Create a regular web application for Synapse 2. Set the Allowed Callback URLs to `[synapse public baseurl]/_synapse/client/oidc/callback` 3. Add a rule to add the `preferred_username` claim.

Code sample ```js function addPersistenceAttribute(user, context, callback) { user.user_metadata = user.user_metadata || {}; user.user_metadata.preferred_username = user.user_metadata.preferred_username || user.user_id; context.idToken.preferred_username = user.user_metadata.preferred_username; auth0.users.updateUserMetadata(user.user_id, user.user_metadata) .then(function(){ callback(null, user, context); }) .catch(function(err){ callback(err); }); } ```
Synapse config: ```yaml oidc_providers: - idp_id: auth0 idp_name: Auth0 issuer: "https://your-tier.eu.auth0.com/" # TO BE FILLED client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` ### Authentik [Authentik][authentik] is an open-source IdP solution. 1. Create a provider in Authentik, with type OAuth2/OpenID. 2. The parameters are: - Client Type: Confidential - JWT Algorithm: RS256 - Scopes: OpenID, Email and Profile - RSA Key: Select any available key - Redirect URIs: `[synapse public baseurl]/_synapse/client/oidc/callback` 3. Create an application for synapse in Authentik and link it to the provider. 4. Note the slug of your application, Client ID and Client Secret. Synapse config: ```yaml oidc_providers: - idp_id: authentik idp_name: authentik discover: true issuer: "https://your.authentik.example.org/application/o/your-app-slug/" # TO BE FILLED: domain and slug client_id: "your client id" # TO BE FILLED client_secret: "your client secret" # TO BE FILLED scopes: - "openid" - "profile" - "email" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}}" display_name_template: "{{ user.preferred_username|capitalize }}" # TO BE FILLED: If your users have names in Authentik and you want those in Synapse, this should be replaced with user.name|capitalize. ``` ### LemonLDAP [LemonLDAP::NG][lemonldap] is an open-source IdP solution. 1. Create an OpenID Connect Relying Parties in LemonLDAP::NG 2. The parameters are: - Client ID under the basic menu of the new Relying Parties (`Options > Basic > Client ID`) - Client secret (`Options > Basic > Client secret`) - JWT Algorithm: RS256 within the security menu of the new Relying Parties (`Options > Security > ID Token signature algorithm` and `Options > Security > Access Token signature algorithm`) - Scopes: OpenID, Email and Profile - Allowed redirection addresses for login (`Options > Basic > Allowed redirection addresses for login` ) : `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: lemonldap idp_name: lemonldap discover: true issuer: "https://auth.example.org/" # TO BE FILLED: replace with your domain client_id: "your client id" # TO BE FILLED client_secret: "your client secret" # TO BE FILLED scopes: - "openid" - "profile" - "email" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}}" # TO BE FILLED: If your users have names in LemonLDAP::NG and you want those in Synapse, this should be replaced with user.name|capitalize or any valid filter. display_name_template: "{{ user.preferred_username|capitalize }}" ``` ### GitHub [GitHub][github-idp] is a bit special as it is not an OpenID Connect compliant provider, but just a regular OAuth2 provider. The [`/user` API endpoint](https://developer.github.com/v3/users/#get-the-authenticated-user) can be used to retrieve information on the authenticated user. As the Synapse login mechanism needs an attribute to uniquely identify users, and that endpoint does not return a `sub` property, an alternative `subject_claim` has to be set. 1. Create a new OAuth application: https://github.com/settings/applications/new. 2. Set the callback URL to `[synapse public baseurl]/_synapse/client/oidc/callback`. Synapse config: ```yaml oidc_providers: - idp_id: github idp_name: Github idp_brand: "github" # optional: styling hint for clients discover: false issuer: "https://github.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED authorization_endpoint: "https://github.com/login/oauth/authorize" token_endpoint: "https://github.com/login/oauth/access_token" userinfo_endpoint: "https://api.github.com/user" scopes: ["read:user"] user_mapping_provider: config: subject_claim: "id" localpart_template: "{{ user.login }}" display_name_template: "{{ user.name }}" ``` ### Google [Google][google-idp] is an OpenID certified authentication and authorisation provider. 1. Set up a project in the Google API Console (see https://developers.google.com/identity/protocols/oauth2/openid-connect#appsetup). 2. Add an "OAuth Client ID" for a Web Application under "Credentials". 3. Copy the Client ID and Client Secret, and add the following to your synapse config: ```yaml oidc_providers: - idp_id: google idp_name: Google idp_brand: "google" # optional: styling hint for clients issuer: "https://accounts.google.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.given_name|lower }}" display_name_template: "{{ user.name }}" ``` 4. Back in the Google console, add this Authorized redirect URI: `[synapse public baseurl]/_synapse/client/oidc/callback`. ### Twitch 1. Setup a developer account on [Twitch](https://dev.twitch.tv/) 2. Obtain the OAuth 2.0 credentials by [creating an app](https://dev.twitch.tv/console/apps/) 3. Add this OAuth Redirect URL: `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: twitch idp_name: Twitch issuer: "https://id.twitch.tv/oauth2/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED client_auth_method: "client_secret_post" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` ### GitLab 1. Create a [new application](https://gitlab.com/profile/applications). 2. Add the `read_user` and `openid` scopes. 3. Add this Callback URL: `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: gitlab idp_name: Gitlab idp_brand: "gitlab" # optional: styling hint for clients issuer: "https://gitlab.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED client_auth_method: "client_secret_post" scopes: ["openid", "read_user"] user_profile_method: "userinfo_endpoint" user_mapping_provider: config: localpart_template: '{{ user.nickname }}' display_name_template: '{{ user.name }}' ``` ### Facebook 0. You will need a Facebook developer account. You can register for one [here](https://developers.facebook.com/async/registration/). 1. On the [apps](https://developers.facebook.com/apps/) page of the developer console, "Create App", and choose "Build Connected Experiences". 2. Once the app is created, add "Facebook Login" and choose "Web". You don't need to go through the whole form here. 3. In the left-hand menu, open "Products"/"Facebook Login"/"Settings". * Add `[synapse public baseurl]/_synapse/client/oidc/callback` as an OAuth Redirect URL. 4. In the left-hand menu, open "Settings/Basic". Here you can copy the "App ID" and "App Secret" for use below. Synapse config: ```yaml - idp_id: facebook idp_name: Facebook idp_brand: "facebook" # optional: styling hint for clients discover: false issuer: "https://www.facebook.com" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED scopes: ["openid", "email"] authorization_endpoint: "https://facebook.com/dialog/oauth" token_endpoint: "https://graph.facebook.com/v9.0/oauth/access_token" jwks_uri: "https://www.facebook.com/.well-known/oauth/openid/jwks/" user_mapping_provider: config: display_name_template: "{{ user.name }}" email_template: "{{ '{{ user.email }}' }}" ``` Relevant documents: * [Manually Build a Login Flow](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow) * [Using Facebook's Graph API](https://developers.facebook.com/docs/graph-api/using-graph-api/) * [Reference to the User endpoint](https://developers.facebook.com/docs/graph-api/reference/user) Facebook do have an [OIDC discovery endpoint](https://www.facebook.com/.well-known/openid-configuration), but it has a `response_types_supported` which excludes "code" (which we rely on, and is even mentioned in their [documentation](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#login)), so we have to disable discovery and configure the URIs manually. ### Gitea Gitea is, like Github, not an OpenID provider, but just an OAuth2 provider. The [`/user` API endpoint](https://try.gitea.io/api/swagger#/user/userGetCurrent) can be used to retrieve information on the authenticated user. As the Synapse login mechanism needs an attribute to uniquely identify users, and that endpoint does not return a `sub` property, an alternative `subject_claim` has to be set. 1. Create a new application. 2. Add this Callback URL: `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: gitea idp_name: Gitea discover: false issuer: "https://your-gitea.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED client_auth_method: client_secret_post scopes: [] # Gitea doesn't support Scopes authorization_endpoint: "https://your-gitea.com/login/oauth/authorize" token_endpoint: "https://your-gitea.com/login/oauth/access_token" userinfo_endpoint: "https://your-gitea.com/api/v1/user" user_mapping_provider: config: subject_claim: "id" localpart_template: "{{ user.login }}" display_name_template: "{{ user.full_name }}" ``` ### XWiki Install [OpenID Connect Provider](https://extensions.xwiki.org/xwiki/bin/view/Extension/OpenID%20Connect/OpenID%20Connect%20Provider/) extension in your [XWiki](https://www.xwiki.org) instance. Synapse config: ```yaml oidc_providers: - idp_id: xwiki idp_name: "XWiki" issuer: "https://myxwikihost/xwiki/oidc/" client_id: "your-client-id" # TO BE FILLED client_auth_method: none scopes: ["openid", "profile"] user_profile_method: "userinfo_endpoint" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` ### Apple Configuring "Sign in with Apple" (SiWA) requires an Apple Developer account. You will need to create a new "Services ID" for SiWA, and create and download a private key with "SiWA" enabled. As well as the private key file, you will need: * Client ID: the "identifier" you gave the "Services ID" * Team ID: a 10-character ID associated with your developer account. * Key ID: the 10-character identifier for the key. https://help.apple.com/developer-account/?lang=en#/dev77c875b7e has more documentation on setting up SiWA. The synapse config will look like this: ```yaml - idp_id: apple idp_name: Apple issuer: "https://appleid.apple.com" client_id: "your-client-id" # Set to the "identifier" for your "ServicesID" client_auth_method: "client_secret_post" client_secret_jwt_key: key_file: "/path/to/AuthKey_KEYIDCODE.p8" # point to your key file jwt_header: alg: ES256 kid: "KEYIDCODE" # Set to the 10-char Key ID jwt_payload: iss: TEAMIDCODE # Set to the 10-char Team ID scopes: ["name", "email", "openid"] authorization_endpoint: https://appleid.apple.com/auth/authorize?response_mode=form_post user_mapping_provider: config: email_template: "{{ user.email }}" ``` ### Django OAuth Toolkit [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit) is a Django application providing out of the box all the endpoints, data and logic needed to add OAuth2 capabilities to your Django projects. It supports [OpenID Connect too](https://django-oauth-toolkit.readthedocs.io/en/latest/oidc.html). Configuration on Django's side: 1. Add an application: https://example.com/admin/oauth2_provider/application/add/ and choose parameters like this: * `Redirect uris`: https://synapse.example.com/_synapse/client/oidc/callback * `Client type`: `Confidential` * `Authorization grant type`: `Authorization code` * `Algorithm`: `HMAC with SHA-2 256` 2. You can [customize the claims](https://django-oauth-toolkit.readthedocs.io/en/latest/oidc.html#customizing-the-oidc-responses) Django gives to synapse (optional):
Code sample ```python class CustomOAuth2Validator(OAuth2Validator): def get_additional_claims(self, request): return { "sub": request.user.email, "email": request.user.email, "first_name": request.user.first_name, "last_name": request.user.last_name, } ```
Your synapse config is then: ```yaml oidc_providers: - idp_id: django_example idp_name: "Django Example" issuer: "https://example.com/o/" client_id: "your-client-id" # CHANGE ME client_secret: "your-client-secret" # CHANGE ME scopes: ["openid"] user_profile_method: "userinfo_endpoint" # needed because oauth-toolkit does not include user information in the authorization response user_mapping_provider: config: localpart_template: "{{ user.email.split('@')[0] }}" display_name_template: "{{ user.first_name }} {{ user.last_name }}" email_template: "{{ user.email }}" ``` synapse-1.53.0/docs/opentracing.md000066400000000000000000000066561420514467300170700ustar00rootroot00000000000000# OpenTracing ## Background OpenTracing is a semi-standard being adopted by a number of distributed tracing platforms. It is a common api for facilitating vendor-agnostic tracing instrumentation. That is, we can use the OpenTracing api and select one of a number of tracer implementations to do the heavy lifting in the background. Our current selected implementation is Jaeger. OpenTracing is a tool which gives an insight into the causal relationship of work done in and between servers. The servers each track events and report them to a centralised server - in Synapse's case: Jaeger. The basic unit used to represent events is the span. The span roughly represents a single piece of work that was done and the time at which it occurred. A span can have child spans, meaning that the work of the child had to be completed for the parent span to complete, or it can have follow-on spans which represent work that is undertaken as a result of the parent but is not depended on by the parent to in order to finish. Since this is undertaken in a distributed environment a request to another server, such as an RPC or a simple GET, can be considered a span (a unit or work) for the local server. This causal link is what OpenTracing aims to capture and visualise. In order to do this metadata about the local server's span, i.e the 'span context', needs to be included with the request to the remote. It is up to the remote server to decide what it does with the spans it creates. This is called the sampling policy and it can be configured through Jaeger's settings. For OpenTracing concepts see . For more information about Jaeger's implementation see ## Setting up OpenTracing To receive OpenTracing spans, start up a Jaeger server. This can be done using docker like so: ```sh docker run -d --name jaeger \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ jaegertracing/all-in-one:1 ``` Latest documentation is probably at https://www.jaegertracing.io/docs/latest/getting-started. ## Enable OpenTracing in Synapse OpenTracing is not enabled by default. It must be enabled in the homeserver config by uncommenting the config options under `opentracing` as shown in the [sample config](./sample_config.yaml). For example: ```yaml opentracing: enabled: true homeserver_whitelist: - "mytrustedhomeserver.org" - "*.myotherhomeservers.com" ``` ## Homeserver whitelisting The homeserver whitelist is configured using regular expressions. A list of regular expressions can be given and their union will be compared when propagating any spans contexts to another homeserver. Though it's mostly safe to send and receive span contexts to and from untrusted users since span contexts are usually opaque ids it can lead to two problems, namely: - If the span context is marked as sampled by the sending homeserver the receiver will sample it. Therefore two homeservers with wildly different sampling policies could incur higher sampling counts than intended. - Sending servers can attach arbitrary data to spans, known as 'baggage'. For safety this has been disabled in Synapse but that doesn't prevent another server sending you baggage which will be logged to OpenTracing's logs. ## Configuring Jaeger Sampling strategies can be set as in this document: . synapse-1.53.0/docs/other/000077500000000000000000000000001420514467300153415ustar00rootroot00000000000000synapse-1.53.0/docs/other/running_synapse_on_single_board_computers.md000066400000000000000000000135631420514467300264220ustar00rootroot00000000000000## Summary of performance impact of running on resource constrained devices such as SBCs I've been running my homeserver on a cubietruck at home now for some time and am often replying to statements like "you need loads of ram to join large rooms" with "it works fine for me". I thought it might be useful to curate a summary of the issues you're likely to run into to help as a scaling-down guide, maybe highlight these for development work or end up as documentation. It seems that once you get up to about 4x1.5GHz arm64 4GiB these issues are no longer a problem. - **Platform**: 2x1GHz armhf 2GiB ram [Single-board computers](https://wiki.debian.org/CheapServerBoxHardware), SSD, postgres. ### Presence This is the main reason people have a poor matrix experience on resource constrained homeservers. Element web will frequently be saying the server is offline while the python process will be pegged at 100% cpu. This feature is used to tell when other users are active (have a client app in the foreground) and therefore more likely to respond, but requires a lot of network activity to maintain even when nobody is talking in a room. ![Screenshot_2020-10-01_19-29-46](https://user-images.githubusercontent.com/71895/94848963-a47a3580-041c-11eb-8b6e-acb772b4259e.png) While synapse does have some performance issues with presence [#3971](https://github.com/matrix-org/synapse/issues/3971), the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial [#8055](https://github.com/matrix-org/synapse/issues/8055). There is also a client-side config option which disables the UI and idle tracking [enable_presence_by_hs_url] to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well. [enable_presence_by_hs_url]: https://github.com/vector-im/element-web/blob/v1.7.8/config.sample.json#L45 ### Joining Joining a "large", federated room will initially fail with the below message in Element web, but waiting a while (10-60mins) and trying again will succeed without any issue. What counts as "large" is not message history, user count, connections to homeservers or even a simple count of the state events, it is instead how long the state resolution algorithm takes. However, each of those numbers are reasonable proxies, so we can use them as estimates since user count is one of the few things you see before joining. ![Screenshot_2020-10-02_17-15-06](https://user-images.githubusercontent.com/71895/94945781-18771500-04d3-11eb-8419-83c2da73a341.png) This is [#1211](https://github.com/matrix-org/synapse/issues/1211) and will also hopefully be mitigated by peeking [matrix-org/matrix-doc#2753](https://github.com/matrix-org/matrix-doc/pull/2753) so at least you don't need to wait for a join to complete before finding out if it's the kind of room you want. Note that you should first disable presence, otherwise it'll just make the situation worse [#3120](https://github.com/matrix-org/synapse/issues/3120). There is a lot of database interaction too, so make sure you've [migrated your data](../postgres.md) from the default sqlite to postgresql. Personally, I recommend patience - once the initial join is complete there's rarely any issues with actually interacting with the room, but if you like you can just block "large" rooms entirely. ### Sessions Anything that requires modifying the device list [#7721](https://github.com/matrix-org/synapse/issues/7721) will take a while to propagate, again taking the client "Offline" until it's complete. This includes signing in and out, editing the public name and verifying e2ee. The main mitigation I recommend is to keep long-running sessions open e.g. by using Firefox SSB "Use this site in App mode" or Chromium PWA "Install Element". ### Recommended configuration Put the below in a new file at /etc/matrix-synapse/conf.d/sbc.yaml to override the defaults in homeserver.yaml. ``` # Set to false to disable presence tracking on this homeserver. use_presence: false # When this is enabled, the room "complexity" will be checked before a user # joins a new remote room. If it is above the complexity limit, the server will # disallow joining, or will instantly leave. limit_remote_rooms: # Uncomment to enable room complexity checking. #enabled: true complexity: 3.0 # Database configuration database: name: psycopg2 args: user: matrix-synapse # Generate a long, secure one with a password manager password: hunter2 database: matrix-synapse host: localhost cp_min: 5 cp_max: 10 ``` Currently the complexity is measured by [current_state_events / 500](https://github.com/matrix-org/synapse/blob/v1.20.1/synapse/storage/databases/main/events_worker.py#L986). You can find join times and your most complex rooms like this: ``` admin@homeserver:~$ zgrep '/client/r0/join/' /var/log/matrix-synapse/homeserver.log* | awk '{print $18, $25}' | sort --human-numeric-sort 29.922sec/-0.002sec /_matrix/client/r0/join/%23debian-fasttrack%3Apoddery.com 182.088sec/0.003sec /_matrix/client/r0/join/%23decentralizedweb-general%3Amatrix.org 911.625sec/-570.847sec /_matrix/client/r0/join/%23synapse%3Amatrix.org admin@homeserver:~$ sudo --user postgres psql matrix-synapse --command 'select canonical_alias, joined_members, current_state_events from room_stats_state natural join room_stats_current where canonical_alias is not null order by current_state_events desc fetch first 5 rows only' canonical_alias | joined_members | current_state_events -------------------------------+----------------+---------------------- #_oftc_#debian:matrix.org | 871 | 52355 #matrix:matrix.org | 6379 | 10684 #irc:matrix.org | 461 | 3751 #decentralizedweb-general:matrix.org | 997 | 1509 #whatsapp:maunium.net | 554 | 854 ```synapse-1.53.0/docs/password_auth_providers.md000066400000000000000000000122241420514467300215230ustar00rootroot00000000000000

This page of the Synapse documentation is now deprecated. For up to date documentation on setting up or writing a password auth provider module, please see this page.

# Password auth provider modules Password auth providers offer a way for server administrators to integrate their Synapse installation with an existing authentication system. A password auth provider is a Python class which is dynamically loaded into Synapse, and provides a number of methods by which it can integrate with the authentication system. This document serves as a reference for those looking to implement their own password auth providers. Additionally, here is a list of known password auth provider module implementations: * [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3/) * [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) * [matrix-synapse-rest-password-provider](https://github.com/ma1uta/matrix-synapse-rest-password-provider) ## Required methods Password auth provider classes must provide the following methods: * `parse_config(config)` This method is passed the `config` object for this module from the homeserver configuration file. It should perform any appropriate sanity checks on the provided configuration, and return an object which is then passed into `__init__`. This method should have the `@staticmethod` decoration. * `__init__(self, config, account_handler)` The constructor is passed the config object returned by `parse_config`, and a `synapse.module_api.ModuleApi` object which allows the password provider to check if accounts exist and/or create new ones. ## Optional methods Password auth provider classes may optionally provide the following methods: * `get_db_schema_files(self)` This method, if implemented, should return an Iterable of `(name, stream)` pairs of database schema files. Each file is applied in turn at initialisation, and a record is then made in the database so that it is not re-applied on the next start. * `get_supported_login_types(self)` This method, if implemented, should return a `dict` mapping from a login type identifier (such as `m.login.password`) to an iterable giving the fields which must be provided by the user in the submission to [the `/login` API](https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-login). These fields are passed in the `login_dict` dictionary to `check_auth`. For example, if a password auth provider wants to implement a custom login type of `com.example.custom_login`, where the client is expected to pass the fields `secret1` and `secret2`, the provider should implement this method and return the following dict: ```python {"com.example.custom_login": ("secret1", "secret2")} ``` * `check_auth(self, username, login_type, login_dict)` This method does the real work. If implemented, it will be called for each login attempt where the login type matches one of the keys returned by `get_supported_login_types`. It is passed the (possibly unqualified) `user` field provided by the client, the login type, and a dictionary of login secrets passed by the client. The method should return an `Awaitable` object, which resolves to the canonical `@localpart:domain` user ID if authentication is successful, and `None` if not. Alternatively, the `Awaitable` can resolve to a `(str, func)` tuple, in which case the second field is a callback which will be called with the result from the `/login` call (including `access_token`, `device_id`, etc.) * `check_3pid_auth(self, medium, address, password)` This method, if implemented, is called when a user attempts to register or log in with a third party identifier, such as email. It is passed the medium (ex. "email"), an address (ex. "") and the user's password. The method should return an `Awaitable` object, which resolves to a `str` containing the user's (canonical) User id if authentication was successful, and `None` if not. As with `check_auth`, the `Awaitable` may alternatively resolve to a `(user_id, callback)` tuple. * `check_password(self, user_id, password)` This method provides a simpler interface than `get_supported_login_types` and `check_auth` for password auth providers that just want to provide a mechanism for validating `m.login.password` logins. If implemented, it will be called to check logins with an `m.login.password` login type. It is passed a qualified `@localpart:domain` user id, and the password provided by the user. The method should return an `Awaitable` object, which resolves to `True` if authentication is successful, and `False` if not. * `on_logged_out(self, user_id, device_id, access_token)` This method, if implemented, is called when a user logs out. It is passed the qualified user ID, the ID of the deactivated device (if any: access tokens are occasionally created without an associated device ID), and the (now deactivated) access token. It may return an `Awaitable` object; the logout request will wait for the `Awaitable` to complete, but the result is ignored. synapse-1.53.0/docs/postgres.md000066400000000000000000000206401420514467300164120ustar00rootroot00000000000000# Using Postgres Synapse supports PostgreSQL versions 10 or later. ## Install postgres client libraries Synapse will require the python postgres client library in order to connect to a postgres database. - If you are using the [matrix.org debian/ubuntu packages](setup/installation.md#matrixorg-packages), the necessary python library will already be installed, but you will need to ensure the low-level postgres library is installed, which you can do with `apt install libpq5`. - For other pre-built packages, please consult the documentation from the relevant package. - If you installed synapse [in a virtualenv](setup/installation.md#installing-from-source), you can install the library with: ~/synapse/env/bin/pip install "matrix-synapse[postgres]" (substituting the path to your virtualenv for `~/synapse/env`, if you used a different path). You will require the postgres development files. These are in the `libpq-dev` package on Debian-derived distributions. ## Set up database Assuming your PostgreSQL database user is called `postgres`, first authenticate as the database user with: ```sh su - postgres # Or, if your system uses sudo to get administrative rights sudo -u postgres bash ``` Then, create a postgres user and a database with: ```sh # this will prompt for a password for the new user createuser --pwprompt synapse_user createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse ``` The above will create a user called `synapse_user`, and a database called `synapse`. Note that the PostgreSQL database *must* have the correct encoding set (as shown above), otherwise it will not be able to store UTF8 strings. You may need to enable password authentication so `synapse_user` can connect to the database. See . ## Synapse config When you are ready to start using PostgreSQL, edit the `database` section in your config file to match the following lines: ```yaml database: name: psycopg2 args: user: password: database: host: cp_min: 5 cp_max: 10 ``` All key, values in `args` are passed to the `psycopg2.connect(..)` function, except keys beginning with `cp_`, which are consumed by the twisted adbapi connection pool. See the [libpq documentation](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) for a list of options which can be passed. You should consider tuning the `args.keepalives_*` options if there is any danger of the connection between your homeserver and database dropping, otherwise Synapse may block for an extended period while it waits for a response from the database server. Example values might be: ```yaml database: args: # ... as above # seconds of inactivity after which TCP should send a keepalive message to the server keepalives_idle: 10 # the number of seconds after which a TCP keepalive message that is not # acknowledged by the server should be retransmitted keepalives_interval: 10 # the number of TCP keepalives that can be lost before the client's connection # to the server is considered dead keepalives_count: 3 ``` ## Tuning Postgres The default settings should be fine for most deployments. For larger scale deployments tuning some of the settings is recommended, details of which can be found at . In particular, we've found tuning the following values helpful for performance: - `shared_buffers` - `effective_cache_size` - `work_mem` - `maintenance_work_mem` - `autovacuum_work_mem` Note that the appropriate values for those fields depend on the amount of free memory the database host has available. Additionally, admins of large deployments might want to consider using huge pages to help manage memory, especially when using large values of `shared_buffers`. You can read more about that [here](https://www.postgresql.org/docs/10/kernel-resources.html#LINUX-HUGE-PAGES). ## Porting from SQLite ### Overview The script `synapse_port_db` allows porting an existing synapse server backed by SQLite to using PostgreSQL. This is done in as a two phase process: 1. Copy the existing SQLite database to a separate location and run the port script against that offline database. 2. Shut down the server. Rerun the port script to port any data that has come in since taking the first snapshot. Restart server against the PostgreSQL database. The port script is designed to be run repeatedly against newer snapshots of the SQLite database file. This makes it safe to repeat step 1 if there was a delay between taking the previous snapshot and being ready to do step 2. It is safe to at any time kill the port script and restart it. Note that the database may take up significantly more (25% - 100% more) space on disk after porting to Postgres. ### Using the port script Firstly, shut down the currently running synapse server and copy its database file (typically `homeserver.db`) to another location. Once the copy is complete, restart synapse. For instance: ```sh ./synctl stop cp homeserver.db homeserver.db.snapshot ./synctl start ``` Copy the old config file into a new config file: ```sh cp homeserver.yaml homeserver-postgres.yaml ``` Edit the database section as described in the section *Synapse config* above and with the SQLite snapshot located at `homeserver.db.snapshot` simply run: ```sh synapse_port_db --sqlite-database homeserver.db.snapshot \ --postgres-config homeserver-postgres.yaml ``` The flag `--curses` displays a coloured curses progress UI. If the script took a long time to complete, or time has otherwise passed since the original snapshot was taken, repeat the previous steps with a newer snapshot. To complete the conversion shut down the synapse server and run the port script one last time, e.g. if the SQLite database is at `homeserver.db` run: ```sh synapse_port_db --sqlite-database homeserver.db \ --postgres-config homeserver-postgres.yaml ``` Once that has completed, change the synapse config to point at the PostgreSQL database configuration file `homeserver-postgres.yaml`: ```sh ./synctl stop mv homeserver.yaml homeserver-old-sqlite.yaml mv homeserver-postgres.yaml homeserver.yaml ./synctl start ``` Synapse should now be running against PostgreSQL. ## Troubleshooting ### Alternative auth methods If you get an error along the lines of `FATAL: Ident authentication failed for user "synapse_user"`, you may need to use an authentication method other than `ident`: * If the `synapse_user` user has a password, add the password to the `database:` section of `homeserver.yaml`. Then add the following to `pg_hba.conf`: ``` host synapse synapse_user ::1/128 md5 # or `scram-sha-256` instead of `md5` if you use that ``` * If the `synapse_user` user does not have a password, then a password doesn't have to be added to `homeserver.yaml`. But the following does need to be added to `pg_hba.conf`: ``` host synapse synapse_user ::1/128 trust ``` Note that line order matters in `pg_hba.conf`, so make sure that if you do add a new line, it is inserted before: ``` host all all ::1/128 ident ``` ### Fixing incorrect `COLLATE` or `CTYPE` Synapse will refuse to set up a new database if it has the wrong values of `COLLATE` and `CTYPE` set, and will log warnings on existing databases. Using different locales can cause issues if the locale library is updated from underneath the database, or if a different version of the locale is used on any replicas. The safest way to fix the issue is to dump the database and recreate it with the correct locale parameter (as shown above). It is also possible to change the parameters on a live database and run a `REINDEX` on the entire database, however extreme care must be taken to avoid database corruption. Note that the above may fail with an error about duplicate rows if corruption has already occurred, and such duplicate rows will need to be manually removed. ### Fixing inconsistent sequences error Synapse uses Postgres sequences to generate IDs for various tables. A sequence and associated table can get out of sync if, for example, Synapse has been downgraded and then upgraded again. To fix the issue shut down Synapse (including any and all workers) and run the SQL command included in the error message. Once done Synapse should start successfully. synapse-1.53.0/docs/presence_router_module.md000066400000000000000000000221151420514467300213140ustar00rootroot00000000000000

This page of the Synapse documentation is now deprecated. For up to date documentation on setting up or writing a presence router module, please see this page.

# Presence Router Module Synapse supports configuring a module that can specify additional users (local or remote) to should receive certain presence updates from local users. Note that routing presence via Application Service transactions is not currently supported. The presence routing module is implemented as a Python class, which will be imported by the running Synapse. ## Python Presence Router Class The Python class is instantiated with two objects: * A configuration object of some type (see below). * An instance of `synapse.module_api.ModuleApi`. It then implements methods related to presence routing. Note that one method of `ModuleApi` that may be useful is: ```python async def ModuleApi.send_local_online_presence_to(users: Iterable[str]) -> None ``` which can be given a list of local or remote MXIDs to broadcast known, online user presence to (for those users that the receiving user is considered interested in). It does not include state for users who are currently offline, and it can only be called on workers that support sending federation. Additionally, this method must only be called from the process that has been configured to write to the the [presence stream](workers.md#stream-writers). By default, this is the main process, but another worker can be configured to do so. ### Module structure Below is a list of possible methods that can be implemented, and whether they are required. #### `parse_config` ```python def parse_config(config_dict: dict) -> Any ``` **Required.** A static method that is passed a dictionary of config options, and should return a validated config object. This method is described further in [Configuration](#configuration). #### `get_users_for_states` ```python async def get_users_for_states( self, state_updates: Iterable[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: ``` **Required.** An asynchronous method that is passed an iterable of user presence state. This method can determine whether a given presence update should be sent to certain users. It does this by returning a dictionary with keys representing local or remote Matrix User IDs, and values being a python set of `synapse.handlers.presence.UserPresenceState` instances. Synapse will then attempt to send the specified presence updates to each user when possible. #### `get_interested_users` ```python async def get_interested_users(self, user_id: str) -> Union[Set[str], str] ``` **Required.** An asynchronous method that is passed a single Matrix User ID. This method is expected to return the users that the passed in user may be interested in the presence of. Returned users may be local or remote. The presence routed as a result of what this method returns is sent in addition to the updates already sent between users that share a room together. Presence updates are deduplicated. This method should return a python set of Matrix User IDs, or the object `synapse.events.presence_router.PresenceRouter.ALL_USERS` to indicate that the passed user should receive presence information for *all* known users. For clarity, if the user `@alice:example.org` is passed to this method, and the Set `{"@bob:example.com", "@charlie:somewhere.org"}` is returned, this signifies that Alice should receive presence updates sent by Bob and Charlie, regardless of whether these users share a room. ### Example Below is an example implementation of a presence router class. ```python from typing import Dict, Iterable, Set, Union from synapse.events.presence_router import PresenceRouter from synapse.handlers.presence import UserPresenceState from synapse.module_api import ModuleApi class PresenceRouterConfig: def __init__(self): # Config options with their defaults # A list of users to always send all user presence updates to self.always_send_to_users = [] # type: List[str] # A list of users to ignore presence updates for. Does not affect # shared-room presence relationships self.blacklisted_users = [] # type: List[str] class ExamplePresenceRouter: """An example implementation of synapse.presence_router.PresenceRouter. Supports routing all presence to a configured set of users, or a subset of presence from certain users to members of certain rooms. Args: config: A configuration object. module_api: An instance of Synapse's ModuleApi. """ def __init__(self, config: PresenceRouterConfig, module_api: ModuleApi): self._config = config self._module_api = module_api @staticmethod def parse_config(config_dict: dict) -> PresenceRouterConfig: """Parse a configuration dictionary from the homeserver config, do some validation and return a typed PresenceRouterConfig. Args: config_dict: The configuration dictionary. Returns: A validated config object. """ # Initialise a typed config object config = PresenceRouterConfig() always_send_to_users = config_dict.get("always_send_to_users") blacklisted_users = config_dict.get("blacklisted_users") # Do some validation of config options... otherwise raise a # synapse.config.ConfigError. config.always_send_to_users = always_send_to_users config.blacklisted_users = blacklisted_users return config async def get_users_for_states( self, state_updates: Iterable[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: """Given an iterable of user presence updates, determine where each one needs to go. Returned results will not affect presence updates that are sent between users who share a room. Args: state_updates: An iterable of user presence state updates. Returns: A dictionary of user_id -> set of UserPresenceState that the user should receive. """ destination_users = {} # type: Dict[str, Set[UserPresenceState] # Ignore any updates for blacklisted users desired_updates = set() for update in state_updates: if update.state_key not in self._config.blacklisted_users: desired_updates.add(update) # Send all presence updates to specific users for user_id in self._config.always_send_to_users: destination_users[user_id] = desired_updates return destination_users async def get_interested_users( self, user_id: str, ) -> Union[Set[str], PresenceRouter.ALL_USERS]: """ Retrieve a list of users that `user_id` is interested in receiving the presence of. This will be in addition to those they share a room with. Optionally, the object PresenceRouter.ALL_USERS can be returned to indicate that this user should receive all incoming local and remote presence updates. Note that this method will only be called for local users. Args: user_id: A user requesting presence updates. Returns: A set of user IDs to return additional presence updates for, or PresenceRouter.ALL_USERS to return presence updates for all other users. """ if user_id in self._config.always_send_to_users: return PresenceRouter.ALL_USERS return set() ``` #### A note on `get_users_for_states` and `get_interested_users` Both of these methods are effectively two different sides of the same coin. The logic regarding which users should receive updates for other users should be the same between them. `get_users_for_states` is called when presence updates come in from either federation or local users, and is used to either direct local presence to remote users, or to wake up the sync streams of local users to collect remote presence. In contrast, `get_interested_users` is used to determine the users that presence should be fetched for when a local user is syncing. This presence is then retrieved, before being fed through `get_users_for_states` once again, with only the syncing user's routing information pulled from the resulting dictionary. Their routing logic should thus line up, else you may run into unintended behaviour. ## Configuration Once you've crafted your module and installed it into the same Python environment as Synapse, amend your homeserver config file with the following. ```yaml presence: enabled: true presence_router: module: my_module.ExamplePresenceRouter config: # Any configuration options for your module. The below is an example. # of setting options for ExamplePresenceRouter. always_send_to_users: ["@presence_gobbler:example.org"] blacklisted_users: - "@alice:example.com" - "@bob:example.com" ... ``` The contents of `config` will be passed as a Python dictionary to the static `parse_config` method of your class. The object returned by this method will then be passed to the `__init__` method of your module as `config`. synapse-1.53.0/docs/privacy_policy_templates/000077500000000000000000000000001420514467300213325ustar00rootroot00000000000000synapse-1.53.0/docs/privacy_policy_templates/en/000077500000000000000000000000001420514467300217345ustar00rootroot00000000000000synapse-1.53.0/docs/privacy_policy_templates/en/1.0.html000066400000000000000000000013241420514467300231200ustar00rootroot00000000000000 Matrix.org Privacy policy {% if has_consented %}

Your base already belong to us.

{% else %}

All your base are belong to us.

{% if not public_version %}
{% endif %} {% endif %} synapse-1.53.0/docs/privacy_policy_templates/en/success.html000066400000000000000000000002321420514467300242670ustar00rootroot00000000000000 Matrix.org Privacy policy

Sweet.

synapse-1.53.0/docs/replication.md000066400000000000000000000030161420514467300170530ustar00rootroot00000000000000# Replication Architecture ## Motivation We'd like to be able to split some of the work that synapse does into multiple python processes. In theory multiple synapse processes could share a single postgresql database and we\'d scale up by running more synapse processes. However much of synapse assumes that only one process is interacting with the database, both for assigning unique identifiers when inserting into tables, notifying components about new updates, and for invalidating its caches. So running multiple copies of the current code isn't an option. One way to run multiple processes would be to have a single writer process and multiple reader processes connected to the same database. In order to do this we'd need a way for the reader process to invalidate its in-memory caches when an update happens on the writer. One way to do this is for the writer to present an append-only log of updates which the readers can consume to invalidate their caches and to push updates to listening clients or pushers. Synapse already stores much of its data as an append-only log so that it can correctly respond to `/sync` requests so the amount of code changes needed to expose the append-only log to the readers should be fairly minimal. ## Architecture ### The Replication Protocol See [the TCP replication documentation](tcp_replication.md). ### The Slaved DataStore There are read-only version of the synapse storage layer in `synapse/replication/slave/storage` that use the response of the replication API to invalidate their caches. synapse-1.53.0/docs/reverse_proxy.md000066400000000000000000000210331420514467300174550ustar00rootroot00000000000000# Using a reverse proxy with Synapse It is recommended to put a reverse proxy such as [nginx](https://nginx.org/en/docs/http/ngx_http_proxy_module.html), [Apache](https://httpd.apache.org/docs/current/mod/mod_proxy_http.html), [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy), [HAProxy](https://www.haproxy.org/) or [relayd](https://man.openbsd.org/relayd.8) in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. You should configure your reverse proxy to forward requests to `/_matrix` or `/_synapse/client` to Synapse, and have it set the `X-Forwarded-For` and `X-Forwarded-Proto` request headers. You should remember that Matrix clients and other Matrix servers do not necessarily need to connect to your server via the same server name or port. Indeed, clients will use port 443 by default, whereas servers default to port 8448. Where these are different, we refer to the 'client port' and the 'federation port'. See [the Matrix specification](https://matrix.org/docs/spec/server_server/latest#resolving-server-names) for more details of the algorithm used for federation connections, and [Delegation](delegate.md) for instructions on setting up delegation. **NOTE**: Your reverse proxy must not `canonicalise` or `normalise` the requested URI in any way (for example, by decoding `%xx` escapes). Beware that Apache *will* canonicalise URIs unless you specify `nocanon`. Let's assume that we expect clients to connect to our server at `https://matrix.example.com`, and other servers to connect at `https://example.com:8448`. The following sections detail the configuration of the reverse proxy and the homeserver. ## Homeserver Configuration The HTTP configuration will need to be updated for Synapse to correctly record client IP addresses and generate redirect URLs while behind a reverse proxy. In `homeserver.yaml` set `x_forwarded: true` in the port 8008 section and consider setting `bind_addresses: ['127.0.0.1']` so that the server only listens to traffic on localhost. (Do not change `bind_addresses` to `127.0.0.1` when using a containerized Synapse, as that will prevent it from responding to proxied traffic.) ## Reverse-proxy configuration examples **NOTE**: You only need one of these. ### nginx ```nginx server { listen 443 ssl http2; listen [::]:443 ssl http2; # For the federation port listen 8448 ssl http2 default_server; listen [::]:8448 ssl http2 default_server; server_name matrix.example.com; location ~ ^(/_matrix|/_synapse/client) { # note: do not add a path (even a single /) after the port in `proxy_pass`, # otherwise nginx will canonicalise the URI and cause signature verification # errors. proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 50M; } } ``` ### Caddy v1 ``` matrix.example.com { proxy /_matrix http://localhost:8008 { transparent } proxy /_synapse/client http://localhost:8008 { transparent } } example.com:8448 { proxy / http://localhost:8008 { transparent } } ``` ### Caddy v2 ``` matrix.example.com { reverse_proxy /_matrix/* http://localhost:8008 reverse_proxy /_synapse/client/* http://localhost:8008 } example.com:8448 { reverse_proxy http://localhost:8008 } ``` [Delegation](delegate.md) example: ``` (matrix-well-known-header) { # Headers header Access-Control-Allow-Origin "*" header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization" header Content-Type "application/json" } example.com { handle /.well-known/matrix/server { import matrix-well-known-header respond `{"m.server":"matrix.example.com:443"}` } handle /.well-known/matrix/client { import matrix-well-known-header respond `{"m.homeserver":{"base_url":"https://matrix.example.com"},"m.identity_server":{"base_url":"https://identity.example.com"}}` } } matrix.example.com { reverse_proxy /_matrix/* http://localhost:8008 reverse_proxy /_synapse/client/* http://localhost:8008 } ``` ### Apache ```apache SSLEngine on ServerName matrix.example.com RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode ProxyPreserveHost on ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix ProxyPass /_synapse/client http://127.0.0.1:8008/_synapse/client nocanon ProxyPassReverse /_synapse/client http://127.0.0.1:8008/_synapse/client SSLEngine on ServerName example.com RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix ``` **NOTE**: ensure the `nocanon` options are included. **NOTE 2**: It appears that Synapse is currently incompatible with the ModSecurity module for Apache (`mod_security2`). If you need it enabled for other services on your web server, you can disable it for Synapse's two VirtualHosts by including the following lines before each of the two `` above: ```apache SecRuleEngine off ``` **NOTE 3**: Missing `ProxyPreserveHost on` can lead to a redirect loop. ### HAProxy ``` frontend https bind :::443 v4v6 ssl crt /etc/ssl/haproxy/ strict-sni alpn h2,http/1.1 http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Proto http if !{ ssl_fc } http-request set-header X-Forwarded-For %[src] # Matrix client traffic acl matrix-host hdr(host) -i matrix.example.com matrix.example.com:443 acl matrix-path path_beg /_matrix acl matrix-path path_beg /_synapse/client use_backend matrix if matrix-host matrix-path frontend matrix-federation bind :::8448 v4v6 ssl crt /etc/ssl/haproxy/synapse.pem alpn h2,http/1.1 http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Proto http if !{ ssl_fc } http-request set-header X-Forwarded-For %[src] default_backend matrix backend matrix server matrix 127.0.0.1:8008 ``` ### Relayd ``` table { 127.0.0.1 } table { 127.0.0.1 } http protocol "https" { tls { no tlsv1.0, ciphers "HIGH" } tls keypair "example.com" match header set "X-Forwarded-For" value "$REMOTE_ADDR" match header set "X-Forwarded-Proto" value "https" # set CORS header for .well-known/matrix/server, .well-known/matrix/client # httpd does not support setting headers, so do it here match request path "/.well-known/matrix/*" tag "matrix-cors" match response tagged "matrix-cors" header set "Access-Control-Allow-Origin" value "*" pass quick path "/_matrix/*" forward to pass quick path "/_synapse/client/*" forward to # pass on non-matrix traffic to webserver pass forward to } relay "https_traffic" { listen on egress port 443 tls protocol "https" forward to port 8008 check tcp forward to port 8080 check tcp } http protocol "matrix" { tls { no tlsv1.0, ciphers "HIGH" } tls keypair "example.com" block pass quick path "/_matrix/*" forward to pass quick path "/_synapse/client/*" forward to } relay "matrix_federation" { listen on egress port 8448 tls protocol "matrix" forward to port 8008 check tcp } ``` ## Health check endpoint Synapse exposes a health check endpoint for use by reverse proxies. Each configured HTTP listener has a `/health` endpoint which always returns 200 OK (and doesn't get logged). ## Synapse administration endpoints Endpoints for administering your Synapse instance are placed under `/_synapse/admin`. These require authentication through an access token of an admin user. However as access to these endpoints grants the caller a lot of power, we do not recommend exposing them to the public internet without good reason. synapse-1.53.0/docs/room_and_user_statistics.md000066400000000000000000000012251420514467300216500ustar00rootroot00000000000000Room and User Statistics ======================== Synapse maintains room and user statistics in various tables. These can be used for administrative purposes but are also used when generating the public room directory. # Synapse Developer Documentation ## High-Level Concepts ### Definitions * **subject**: Something we are tracking stats about – currently a room or user. * **current row**: An entry for a subject in the appropriate current statistics table. Each subject can have only one. ### Overview Stats correspond to the present values. Current rows contain the most up-to-date statistics for a room. Each subject can only have one entry. synapse-1.53.0/docs/sample_config.yaml000066400000000000000000002757061420514467300177330ustar00rootroot00000000000000# This file is maintained as an up-to-date snapshot of the default # homeserver.yaml configuration generated by Synapse. # # It is intended to act as a reference for the default configuration, # helping admins keep track of new options and other changes, and compare # their configs with the current default. As such, many of the actual # config values shown are placeholders. # # It is *not* intended to be copied and used as the basis for a real # homeserver.yaml. Instead, if you are starting from scratch, please generate # a fresh config using Synapse by following the instructions in # https://matrix-org.github.io/synapse/latest/setup/installation.html. # Configuration options that take a time period can be set using a number # followed by a letter. Letters have the following meanings: # s = second # m = minute # h = hour # d = day # w = week # y = year # For example, setting redaction_retention_period: 5m would remove redacted # messages from the database after 5 minutes, rather than 5 months. ################################################################################ # Configuration file for Synapse. # # This is a YAML file: see [1] for a quick introduction. Note in particular # that *indentation is important*: all the elements of a list or dictionary # should have the same indentation. # # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html ## Modules ## # Server admins can expand Synapse's functionality with external modules. # # See https://matrix-org.github.io/synapse/latest/modules/index.html for more # documentation on how to configure or create custom modules for Synapse. # modules: #- module: my_super_module.MySuperClass # config: # do_thing: true #- module: my_other_super_module.SomeClass # config: {} ## Server ## # The public-facing domain of the server # # The server_name name will appear at the end of usernames and room addresses # created on this server. For example if the server_name was example.com, # usernames on this server would be in the format @user:example.com # # In most cases you should avoid using a matrix specific subdomain such as # matrix.example.com or synapse.example.com as the server_name for the same # reasons you wouldn't use user@email.example.com as your email address. # See https://matrix-org.github.io/synapse/latest/delegate.html # for information on how to host Synapse on a subdomain while preserving # a clean server_name. # # The server_name cannot be changed later so it is important to # configure this correctly before you start Synapse. It should be all # lowercase and may contain an explicit port. # Examples: matrix.org, localhost:8080 # server_name: "SERVERNAME" # When running as a daemon, the file to store the pid in # pid_file: DATADIR/homeserver.pid # The absolute URL to the web client which / will redirect to. # #web_client_location: https://riot.example.com/ # The public-facing base URL that clients use to access this Homeserver (not # including _matrix/...). This is the same URL a user might enter into the # 'Custom Homeserver URL' field on their client. If you use Synapse with a # reverse proxy, this should be the URL to reach Synapse via the proxy. # Otherwise, it should be the URL to reach Synapse's client HTTP listener (see # 'listeners' below). # # Defaults to 'https:///'. # #public_baseurl: https://example.com/ # Uncomment the following to tell other servers to send federation traffic on # port 443. # # By default, other servers will try to reach our server on port 8448, which can # be inconvenient in some environments. # # Provided 'https:///' on port 443 is routed to Synapse, this # option configures Synapse to serve a file at # 'https:///.well-known/matrix/server'. This will tell other # servers to send traffic to port 443 instead. # # See https://matrix-org.github.io/synapse/latest/delegate.html for more # information. # # Defaults to 'false'. # #serve_server_wellknown: true # Set the soft limit on the number of file descriptors synapse can use # Zero is used to indicate synapse should set the soft limit to the # hard limit. # #soft_file_limit: 0 # Presence tracking allows users to see the state (e.g online/offline) # of other local and remote users. # presence: # Uncomment to disable presence tracking on this homeserver. This option # replaces the previous top-level 'use_presence' option. # #enabled: false # Whether to require authentication to retrieve profile data (avatars, # display names) of other users through the client API. Defaults to # 'false'. Note that profile data is also available via the federation # API, unless allow_profile_lookup_over_federation is set to false. # #require_auth_for_profile_requests: true # Uncomment to require a user to share a room with another user in order # to retrieve their profile information. Only checked on Client-Server # requests. Profile requests from other servers should be checked by the # requesting server. Defaults to 'false'. # #limit_profile_requests_to_users_who_share_rooms: true # Uncomment to prevent a user's profile data from being retrieved and # displayed in a room until they have joined it. By default, a user's # profile data is included in an invite event, regardless of the values # of the above two settings, and whether or not the users share a server. # Defaults to 'true'. # #include_profile_data_on_invite: false # If set to 'true', removes the need for authentication to access the server's # public rooms directory through the client API, meaning that anyone can # query the room directory. Defaults to 'false'. # #allow_public_rooms_without_auth: true # If set to 'true', allows any other homeserver to fetch the server's public # rooms directory via federation. Defaults to 'false'. # #allow_public_rooms_over_federation: true # The default room version for newly created rooms. # # Known room versions are listed here: # https://spec.matrix.org/latest/rooms/#complete-list-of-room-versions # # For example, for room version 1, default_room_version should be set # to "1". # #default_room_version: "6" # The GC threshold parameters to pass to `gc.set_threshold`, if defined # #gc_thresholds: [700, 10, 10] # The minimum time in seconds between each GC for a generation, regardless of # the GC thresholds. This ensures that we don't do GC too frequently. # # A value of `[1s, 10s, 30s]` indicates that a second must pass between consecutive # generation 0 GCs, etc. # # Defaults to `[1s, 10s, 30s]`. # #gc_min_interval: [0.5s, 30s, 1m] # Set the limit on the returned events in the timeline in the get # and sync operations. The default value is 100. -1 means no upper limit. # # Uncomment the following to increase the limit to 5000. # #filter_timeline_limit: 5000 # Whether room invites to users on this server should be blocked # (except those sent by local server admins). The default is False. # #block_non_admin_invites: true # Room searching # # If disabled, new messages will not be indexed for searching and users # will receive errors when searching for messages. Defaults to enabled. # #enable_search: false # Prevent outgoing requests from being sent to the following blacklisted IP address # CIDR ranges. If this option is not specified then it defaults to private IP # address ranges (see the example below). # # The blacklist applies to the outbound requests for federation, identity servers, # push servers, and for checking key validity for third-party invite events. # # (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly # listed here, since they correspond to unroutable addresses.) # # This option replaces federation_ip_range_blacklist in Synapse v1.25.0. # # Note: The value is ignored when an HTTP proxy is in use # #ip_range_blacklist: # - '127.0.0.0/8' # - '10.0.0.0/8' # - '172.16.0.0/12' # - '192.168.0.0/16' # - '100.64.0.0/10' # - '192.0.0.0/24' # - '169.254.0.0/16' # - '192.88.99.0/24' # - '198.18.0.0/15' # - '192.0.2.0/24' # - '198.51.100.0/24' # - '203.0.113.0/24' # - '224.0.0.0/4' # - '::1/128' # - 'fe80::/10' # - 'fc00::/7' # - '2001:db8::/32' # - 'ff00::/8' # - 'fec0::/10' # List of IP address CIDR ranges that should be allowed for federation, # identity servers, push servers, and for checking key validity for # third-party invite events. This is useful for specifying exceptions to # wide-ranging blacklisted target IP ranges - e.g. for communication with # a push server only visible in your network. # # This whitelist overrides ip_range_blacklist and defaults to an empty # list. # #ip_range_whitelist: # - '192.168.1.1' # List of ports that Synapse should listen on, their purpose and their # configuration. # # Options for each listener include: # # port: the TCP port to bind to # # bind_addresses: a list of local addresses to listen on. The default is # 'all local interfaces'. # # type: the type of listener. Normally 'http', but other valid options are: # 'manhole' (see https://matrix-org.github.io/synapse/latest/manhole.html), # 'metrics' (see https://matrix-org.github.io/synapse/latest/metrics-howto.html), # 'replication' (see https://matrix-org.github.io/synapse/latest/workers.html). # # tls: set to true to enable TLS for this listener. Will use the TLS # key/cert specified in tls_private_key_path / tls_certificate_path. # # x_forwarded: Only valid for an 'http' listener. Set to true to use the # X-Forwarded-For header as the client IP. Useful when Synapse is # behind a reverse-proxy. # # resources: Only valid for an 'http' listener. A list of resources to host # on this port. Options for each resource are: # # names: a list of names of HTTP resources. See below for a list of # valid resource names. # # compress: set to true to enable HTTP compression for this resource. # # additional_resources: Only valid for an 'http' listener. A map of # additional endpoints which should be loaded via dynamic modules. # # Valid resource names are: # # client: the client-server API (/_matrix/client), and the synapse admin # API (/_synapse/admin). Also implies 'media' and 'static'. # # consent: user consent forms (/_matrix/consent). # See https://matrix-org.github.io/synapse/latest/consent_tracking.html. # # federation: the server-server API (/_matrix/federation). Also implies # 'media', 'keys', 'openid' # # keys: the key discovery API (/_matrix/keys). # # media: the media API (/_matrix/media). # # metrics: the metrics interface. # See https://matrix-org.github.io/synapse/latest/metrics-howto.html. # # openid: OpenID authentication. # # replication: the HTTP replication API (/_synapse/replication). # See https://matrix-org.github.io/synapse/latest/workers.html. # # static: static resources under synapse/static (/_matrix/static). (Mostly # useful for 'fallback authentication'.) # listeners: # TLS-enabled listener: for when matrix traffic is sent directly to synapse. # # Disabled by default. To enable it, uncomment the following. (Note that you # will also need to give Synapse a TLS key and certificate: see the TLS section # below.) # #- port: 8448 # type: http # tls: true # resources: # - names: [client, federation] # Unsecure HTTP listener: for when matrix traffic passes through a reverse proxy # that unwraps TLS. # # If you plan to use a reverse proxy, please see # https://matrix-org.github.io/synapse/latest/reverse_proxy.html. # - port: 8008 tls: false type: http x_forwarded: true bind_addresses: ['::1', '127.0.0.1'] resources: - names: [client, federation] compress: false # example additional_resources: # #additional_resources: # "/_matrix/my/custom/endpoint": # module: my_module.CustomRequestHandler # config: {} # Turn on the twisted ssh manhole service on localhost on the given # port. # #- port: 9000 # bind_addresses: ['::1', '127.0.0.1'] # type: manhole # Connection settings for the manhole # manhole_settings: # The username for the manhole. This defaults to 'matrix'. # #username: manhole # The password for the manhole. This defaults to 'rabbithole'. # #password: mypassword # The private and public SSH key pair used to encrypt the manhole traffic. # If these are left unset, then hardcoded and non-secret keys are used, # which could allow traffic to be intercepted if sent over a public network. # #ssh_priv_key_path: CONFDIR/id_rsa #ssh_pub_key_path: CONFDIR/id_rsa.pub # Forward extremities can build up in a room due to networking delays between # homeservers. Once this happens in a large room, calculation of the state of # that room can become quite expensive. To mitigate this, once the number of # forward extremities reaches a given threshold, Synapse will send an # org.matrix.dummy_event event, which will reduce the forward extremities # in the room. # # This setting defines the threshold (i.e. number of forward extremities in the # room) at which dummy events are sent. The default value is 10. # #dummy_events_threshold: 5 ## Homeserver blocking ## # How to reach the server admin, used in ResourceLimitError # #admin_contact: 'mailto:admin@server.com' # Global blocking # #hs_disabled: false #hs_disabled_message: 'Human readable reason for why the HS is blocked' # Monthly Active User Blocking # # Used in cases where the admin or server owner wants to limit to the # number of monthly active users. # # 'limit_usage_by_mau' disables/enables monthly active user blocking. When # enabled and a limit is reached the server returns a 'ResourceLimitError' # with error type Codes.RESOURCE_LIMIT_EXCEEDED # # 'max_mau_value' is the hard limit of monthly active users above which # the server will start blocking user actions. # # 'mau_trial_days' is a means to add a grace period for active users. It # means that users must be active for this number of days before they # can be considered active and guards against the case where lots of users # sign up in a short space of time never to return after their initial # session. # # 'mau_limit_alerting' is a means of limiting client side alerting # should the mau limit be reached. This is useful for small instances # where the admin has 5 mau seats (say) for 5 specific people and no # interest increasing the mau limit further. Defaults to True, which # means that alerting is enabled # #limit_usage_by_mau: false #max_mau_value: 50 #mau_trial_days: 2 #mau_limit_alerting: false # If enabled, the metrics for the number of monthly active users will # be populated, however no one will be limited. If limit_usage_by_mau # is true, this is implied to be true. # #mau_stats_only: false # Sometimes the server admin will want to ensure certain accounts are # never blocked by mau checking. These accounts are specified here. # #mau_limit_reserved_threepids: # - medium: 'email' # address: 'reserved_user@example.com' # Used by phonehome stats to group together related servers. #server_context: context # Resource-constrained homeserver settings # # When this is enabled, the room "complexity" will be checked before a user # joins a new remote room. If it is above the complexity limit, the server will # disallow joining, or will instantly leave. # # Room complexity is an arbitrary measure based on factors such as the number of # users in the room. # limit_remote_rooms: # Uncomment to enable room complexity checking. # #enabled: true # the limit above which rooms cannot be joined. The default is 1.0. # #complexity: 0.5 # override the error which is returned when the room is too complex. # #complexity_error: "This room is too complex." # allow server admins to join complex rooms. Default is false. # #admins_can_join: true # Whether to require a user to be in the room to add an alias to it. # Defaults to 'true'. # #require_membership_for_aliases: false # Whether to allow per-room membership profiles through the send of membership # events with profile information that differ from the target's global profile. # Defaults to 'true'. # #allow_per_room_profiles: false # The largest allowed file size for a user avatar. Defaults to no restriction. # # Note that user avatar changes will not work if this is set without # using Synapse's media repository. # #max_avatar_size: 10M # The MIME types allowed for user avatars. Defaults to no restriction. # # Note that user avatar changes will not work if this is set without # using Synapse's media repository. # #allowed_avatar_mimetypes: ["image/png", "image/jpeg", "image/gif"] # How long to keep redacted events in unredacted form in the database. After # this period redacted events get replaced with their redacted form in the DB. # # Defaults to `7d`. Set to `null` to disable. # #redaction_retention_period: 28d # How long to track users' last seen time and IPs in the database. # # Defaults to `28d`. Set to `null` to disable clearing out of old rows. # #user_ips_max_age: 14d # Inhibits the /requestToken endpoints from returning an error that might leak # information about whether an e-mail address is in use or not on this # homeserver. # Note that for some endpoints the error situation is the e-mail already being # used, and for others the error is entering the e-mail being unused. # If this option is enabled, instead of returning an error, these endpoints will # act as if no error happened and return a fake session ID ('sid') to clients. # #request_token_inhibit_3pid_errors: true # A list of domains that the domain portion of 'next_link' parameters # must match. # # This parameter is optionally provided by clients while requesting # validation of an email or phone number, and maps to a link that # users will be automatically redirected to after validation # succeeds. Clients can make use this parameter to aid the validation # process. # # The whitelist is applied whether the homeserver or an # identity server is handling validation. # # The default value is no whitelist functionality; all domains are # allowed. Setting this value to an empty list will instead disallow # all domains. # #next_link_domain_whitelist: ["matrix.org"] # Templates to use when generating email or HTML page contents. # templates: # Directory in which Synapse will try to find template files to use to generate # email or HTML page contents. # If not set, or a file is not found within the template directory, a default # template from within the Synapse package will be used. # # See https://matrix-org.github.io/synapse/latest/templates.html for more # information about using custom templates. # #custom_template_directory: /path/to/custom/templates/ # Message retention policy at the server level. # # Room admins and mods can define a retention period for their rooms using the # 'm.room.retention' state event, and server admins can cap this period by setting # the 'allowed_lifetime_min' and 'allowed_lifetime_max' config options. # # If this feature is enabled, Synapse will regularly look for and purge events # which are older than the room's maximum retention period. Synapse will also # filter events received over federation so that events that should have been # purged are ignored and not stored again. # retention: # The message retention policies feature is disabled by default. Uncomment the # following line to enable it. # #enabled: true # Default retention policy. If set, Synapse will apply it to rooms that lack the # 'm.room.retention' state event. Currently, the value of 'min_lifetime' doesn't # matter much because Synapse doesn't take it into account yet. # #default_policy: # min_lifetime: 1d # max_lifetime: 1y # Retention policy limits. If set, and the state of a room contains a # 'm.room.retention' event in its state which contains a 'min_lifetime' or a # 'max_lifetime' that's out of these bounds, Synapse will cap the room's policy # to these limits when running purge jobs. # #allowed_lifetime_min: 1d #allowed_lifetime_max: 1y # Server admins can define the settings of the background jobs purging the # events which lifetime has expired under the 'purge_jobs' section. # # If no configuration is provided, a single job will be set up to delete expired # events in every room daily. # # Each job's configuration defines which range of message lifetimes the job # takes care of. For example, if 'shortest_max_lifetime' is '2d' and # 'longest_max_lifetime' is '3d', the job will handle purging expired events in # rooms whose state defines a 'max_lifetime' that's both higher than 2 days, and # lower than or equal to 3 days. Both the minimum and the maximum value of a # range are optional, e.g. a job with no 'shortest_max_lifetime' and a # 'longest_max_lifetime' of '3d' will handle every room with a retention policy # which 'max_lifetime' is lower than or equal to three days. # # The rationale for this per-job configuration is that some rooms might have a # retention policy with a low 'max_lifetime', where history needs to be purged # of outdated messages on a more frequent basis than for the rest of the rooms # (e.g. every 12h), but not want that purge to be performed by a job that's # iterating over every room it knows, which could be heavy on the server. # # If any purge job is configured, it is strongly recommended to have at least # a single job with neither 'shortest_max_lifetime' nor 'longest_max_lifetime' # set, or one job without 'shortest_max_lifetime' and one job without # 'longest_max_lifetime' set. Otherwise some rooms might be ignored, even if # 'allowed_lifetime_min' and 'allowed_lifetime_max' are set, because capping a # room's policy to these values is done after the policies are retrieved from # Synapse's database (which is done using the range specified in a purge job's # configuration). # #purge_jobs: # - longest_max_lifetime: 3d # interval: 12h # - shortest_max_lifetime: 3d # interval: 1d ## TLS ## # PEM-encoded X509 certificate for TLS. # This certificate, as of Synapse 1.0, will need to be a valid and verifiable # certificate, signed by a recognised Certificate Authority. # # Be sure to use a `.pem` file that includes the full certificate chain including # any intermediate certificates (for instance, if using certbot, use # `fullchain.pem` as your certificate, not `cert.pem`). # #tls_certificate_path: "CONFDIR/SERVERNAME.tls.crt" # PEM-encoded private key for TLS # #tls_private_key_path: "CONFDIR/SERVERNAME.tls.key" # Whether to verify TLS server certificates for outbound federation requests. # # Defaults to `true`. To disable certificate verification, uncomment the # following line. # #federation_verify_certificates: false # The minimum TLS version that will be used for outbound federation requests. # # Defaults to `1`. Configurable to `1`, `1.1`, `1.2`, or `1.3`. Note # that setting this value higher than `1.2` will prevent federation to most # of the public Matrix network: only configure it to `1.3` if you have an # entirely private federation setup and you can ensure TLS 1.3 support. # #federation_client_minimum_tls_version: 1.2 # Skip federation certificate verification on the following whitelist # of domains. # # This setting should only be used in very specific cases, such as # federation over Tor hidden services and similar. For private networks # of homeservers, you likely want to use a private CA instead. # # Only effective if federation_verify_certicates is `true`. # #federation_certificate_verification_whitelist: # - lon.example.com # - "*.domain.com" # - "*.onion" # List of custom certificate authorities for federation traffic. # # This setting should only normally be used within a private network of # homeservers. # # Note that this list will replace those that are provided by your # operating environment. Certificates must be in PEM format. # #federation_custom_ca_list: # - myCA1.pem # - myCA2.pem # - myCA3.pem ## Federation ## # Restrict federation to the following whitelist of domains. # N.B. we recommend also firewalling your federation listener to limit # inbound federation traffic as early as possible, rather than relying # purely on this application-layer restriction. If not specified, the # default is to whitelist everything. # #federation_domain_whitelist: # - lon.example.com # - nyc.example.com # - syd.example.com # Report prometheus metrics on the age of PDUs being sent to and received from # the following domains. This can be used to give an idea of "delay" on inbound # and outbound federation, though be aware that any delay can be due to problems # at either end or with the intermediate network. # # By default, no domains are monitored in this way. # #federation_metrics_domains: # - matrix.org # - example.com # Uncomment to disable profile lookup over federation. By default, the # Federation API allows other homeservers to obtain profile data of any user # on this homeserver. Defaults to 'true'. # #allow_profile_lookup_over_federation: false # Uncomment to disable device display name lookup over federation. By default, the # Federation API allows other homeservers to obtain device display names of any user # on this homeserver. Defaults to 'true'. # #allow_device_name_lookup_over_federation: false ## Caching ## # Caching can be configured through the following options. # # A cache 'factor' is a multiplier that can be applied to each of # Synapse's caches in order to increase or decrease the maximum # number of entries that can be stored. # The number of events to cache in memory. Not affected by # caches.global_factor. # #event_cache_size: 10K caches: # Controls the global cache factor, which is the default cache factor # for all caches if a specific factor for that cache is not otherwise # set. # # This can also be set by the "SYNAPSE_CACHE_FACTOR" environment # variable. Setting by environment variable takes priority over # setting through the config file. # # Defaults to 0.5, which will half the size of all caches. # #global_factor: 1.0 # A dictionary of cache name to cache factor for that individual # cache. Overrides the global cache factor for a given cache. # # These can also be set through environment variables comprised # of "SYNAPSE_CACHE_FACTOR_" + the name of the cache in capital # letters and underscores. Setting by environment variable # takes priority over setting through the config file. # Ex. SYNAPSE_CACHE_FACTOR_GET_USERS_WHO_SHARE_ROOM_WITH_USER=2.0 # # Some caches have '*' and other characters that are not # alphanumeric or underscores. These caches can be named with or # without the special characters stripped. For example, to specify # the cache factor for `*stateGroupCache*` via an environment # variable would be `SYNAPSE_CACHE_FACTOR_STATEGROUPCACHE=2.0`. # per_cache_factors: #get_users_who_share_room_with_user: 2.0 # Controls whether cache entries are evicted after a specified time # period. Defaults to true. Uncomment to disable this feature. # #expire_caches: false # If expire_caches is enabled, this flag controls how long an entry can # be in a cache without having been accessed before being evicted. # Defaults to 30m. Uncomment to set a different time to live for cache entries. # #cache_entry_ttl: 30m # Controls how long the results of a /sync request are cached for after # a successful response is returned. A higher duration can help clients with # intermittent connections, at the cost of higher memory usage. # # By default, this is zero, which means that sync responses are not cached # at all. # #sync_response_cache_duration: 2m ## Database ## # The 'database' setting defines the database that synapse uses to store all of # its data. # # 'name' gives the database engine to use: either 'sqlite3' (for SQLite) or # 'psycopg2' (for PostgreSQL). # # 'txn_limit' gives the maximum number of transactions to run per connection # before reconnecting. Defaults to 0, which means no limit. # # 'args' gives options which are passed through to the database engine, # except for options starting 'cp_', which are used to configure the Twisted # connection pool. For a reference to valid arguments, see: # * for sqlite: https://docs.python.org/3/library/sqlite3.html#sqlite3.connect # * for postgres: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS # * for the connection pool: https://twistedmatrix.com/documents/current/api/twisted.enterprise.adbapi.ConnectionPool.html#__init__ # # # Example SQLite configuration: # #database: # name: sqlite3 # args: # database: /path/to/homeserver.db # # # Example Postgres configuration: # #database: # name: psycopg2 # txn_limit: 10000 # args: # user: synapse_user # password: secretpassword # database: synapse # host: localhost # port: 5432 # cp_min: 5 # cp_max: 10 # # For more information on using Synapse with Postgres, # see https://matrix-org.github.io/synapse/latest/postgres.html. # database: name: sqlite3 args: database: DATADIR/homeserver.db ## Logging ## # A yaml python logging config file as described by # https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema # log_config: "CONFDIR/SERVERNAME.log.config" ## Ratelimiting ## # Ratelimiting settings for client actions (registration, login, messaging). # # Each ratelimiting configuration is made of two parameters: # - per_second: number of requests a client can send per second. # - burst_count: number of requests a client can send before being throttled. # # Synapse currently uses the following configurations: # - one for messages that ratelimits sending based on the account the client # is using # - one for registration that ratelimits registration requests based on the # client's IP address. # - one for checking the validity of registration tokens that ratelimits # requests based on the client's IP address. # - one for login that ratelimits login requests based on the client's IP # address. # - one for login that ratelimits login requests based on the account the # client is attempting to log into. # - one for login that ratelimits login requests based on the account the # client is attempting to log into, based on the amount of failed login # attempts for this account. # - one for ratelimiting redactions by room admins. If this is not explicitly # set then it uses the same ratelimiting as per rc_message. This is useful # to allow room admins to deal with abuse quickly. # - two for ratelimiting number of rooms a user can join, "local" for when # users are joining rooms the server is already in (this is cheap) vs # "remote" for when users are trying to join rooms not on the server (which # can be more expensive) # - one for ratelimiting how often a user or IP can attempt to validate a 3PID. # - two for ratelimiting how often invites can be sent in a room or to a # specific user. # - one for ratelimiting 3PID invites (i.e. invites sent to a third-party ID # such as an email address or a phone number) based on the account that's # sending the invite. # # The defaults are as shown below. # #rc_message: # per_second: 0.2 # burst_count: 10 # #rc_registration: # per_second: 0.17 # burst_count: 3 # #rc_registration_token_validity: # per_second: 0.1 # burst_count: 5 # #rc_login: # address: # per_second: 0.17 # burst_count: 3 # account: # per_second: 0.17 # burst_count: 3 # failed_attempts: # per_second: 0.17 # burst_count: 3 # #rc_admin_redaction: # per_second: 1 # burst_count: 50 # #rc_joins: # local: # per_second: 0.1 # burst_count: 10 # remote: # per_second: 0.01 # burst_count: 10 # #rc_3pid_validation: # per_second: 0.003 # burst_count: 5 # #rc_invites: # per_room: # per_second: 0.3 # burst_count: 10 # per_user: # per_second: 0.003 # burst_count: 5 # #rc_third_party_invite: # per_second: 0.2 # burst_count: 10 # Ratelimiting settings for incoming federation # # The rc_federation configuration is made up of the following settings: # - window_size: window size in milliseconds # - sleep_limit: number of federation requests from a single server in # a window before the server will delay processing the request. # - sleep_delay: duration in milliseconds to delay processing events # from remote servers by if they go over the sleep limit. # - reject_limit: maximum number of concurrent federation requests # allowed from a single server # - concurrent: number of federation requests to concurrently process # from a single server # # The defaults are as shown below. # #rc_federation: # window_size: 1000 # sleep_limit: 10 # sleep_delay: 500 # reject_limit: 50 # concurrent: 3 # Target outgoing federation transaction frequency for sending read-receipts, # per-room. # # If we end up trying to send out more read-receipts, they will get buffered up # into fewer transactions. # #federation_rr_transactions_per_room_per_second: 50 ## Media Store ## # Enable the media store service in the Synapse master. Uncomment the # following if you are using a separate media store worker. # #enable_media_repo: false # Directory where uploaded images and attachments are stored. # media_store_path: "DATADIR/media_store" # Media storage providers allow media to be stored in different # locations. # #media_storage_providers: # - module: file_system # # Whether to store newly uploaded local files # store_local: false # # Whether to store newly downloaded remote files # store_remote: false # # Whether to wait for successful storage for local uploads # store_synchronous: false # config: # directory: /mnt/some/other/directory # The largest allowed upload size in bytes # # If you are using a reverse proxy you may also need to set this value in # your reverse proxy's config. Notably Nginx has a small max body size by default. # See https://matrix-org.github.io/synapse/latest/reverse_proxy.html. # #max_upload_size: 50M # Maximum number of pixels that will be thumbnailed # #max_image_pixels: 32M # Whether to generate new thumbnails on the fly to precisely match # the resolution requested by the client. If true then whenever # a new resolution is requested by the client the server will # generate a new thumbnail. If false the server will pick a thumbnail # from a precalculated list. # #dynamic_thumbnails: false # List of thumbnails to precalculate when an image is uploaded. # #thumbnail_sizes: # - width: 32 # height: 32 # method: crop # - width: 96 # height: 96 # method: crop # - width: 320 # height: 240 # method: scale # - width: 640 # height: 480 # method: scale # - width: 800 # height: 600 # method: scale # Is the preview URL API enabled? # # 'false' by default: uncomment the following to enable it (and specify a # url_preview_ip_range_blacklist blacklist). # #url_preview_enabled: true # List of IP address CIDR ranges that the URL preview spider is denied # from accessing. There are no defaults: you must explicitly # specify a list for URL previewing to work. You should specify any # internal services in your network that you do not want synapse to try # to connect to, otherwise anyone in any Matrix room could cause your # synapse to issue arbitrary GET requests to your internal services, # causing serious security issues. # # (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly # listed here, since they correspond to unroutable addresses.) # # This must be specified if url_preview_enabled is set. It is recommended that # you uncomment the following list as a starting point. # # Note: The value is ignored when an HTTP proxy is in use # #url_preview_ip_range_blacklist: # - '127.0.0.0/8' # - '10.0.0.0/8' # - '172.16.0.0/12' # - '192.168.0.0/16' # - '100.64.0.0/10' # - '192.0.0.0/24' # - '169.254.0.0/16' # - '192.88.99.0/24' # - '198.18.0.0/15' # - '192.0.2.0/24' # - '198.51.100.0/24' # - '203.0.113.0/24' # - '224.0.0.0/4' # - '::1/128' # - 'fe80::/10' # - 'fc00::/7' # - '2001:db8::/32' # - 'ff00::/8' # - 'fec0::/10' # List of IP address CIDR ranges that the URL preview spider is allowed # to access even if they are specified in url_preview_ip_range_blacklist. # This is useful for specifying exceptions to wide-ranging blacklisted # target IP ranges - e.g. for enabling URL previews for a specific private # website only visible in your network. # #url_preview_ip_range_whitelist: # - '192.168.1.1' # Optional list of URL matches that the URL preview spider is # denied from accessing. You should use url_preview_ip_range_blacklist # in preference to this, otherwise someone could define a public DNS # entry that points to a private IP address and circumvent the blacklist. # This is more useful if you know there is an entire shape of URL that # you know that will never want synapse to try to spider. # # Each list entry is a dictionary of url component attributes as returned # by urlparse.urlsplit as applied to the absolute form of the URL. See # https://docs.python.org/2/library/urlparse.html#urlparse.urlsplit # The values of the dictionary are treated as an filename match pattern # applied to that component of URLs, unless they start with a ^ in which # case they are treated as a regular expression match. If all the # specified component matches for a given list item succeed, the URL is # blacklisted. # #url_preview_url_blacklist: # # blacklist any URL with a username in its URI # - username: '*' # # # blacklist all *.google.com URLs # - netloc: 'google.com' # - netloc: '*.google.com' # # # blacklist all plain HTTP URLs # - scheme: 'http' # # # blacklist http(s)://www.acme.com/foo # - netloc: 'www.acme.com' # path: '/foo' # # # blacklist any URL with a literal IPv4 address # - netloc: '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' # The largest allowed URL preview spidering size in bytes # #max_spider_size: 10M # A list of values for the Accept-Language HTTP header used when # downloading webpages during URL preview generation. This allows # Synapse to specify the preferred languages that URL previews should # be in when communicating with remote servers. # # Each value is a IETF language tag; a 2-3 letter identifier for a # language, optionally followed by subtags separated by '-', specifying # a country or region variant. # # Multiple values can be provided, and a weight can be added to each by # using quality value syntax (;q=). '*' translates to any language. # # Defaults to "en". # # Example: # # url_preview_accept_language: # - en-UK # - en-US;q=0.9 # - fr;q=0.8 # - *;q=0.7 # url_preview_accept_language: # - en # oEmbed allows for easier embedding content from a website. It can be # used for generating URLs previews of services which support it. # oembed: # A default list of oEmbed providers is included with Synapse. # # Uncomment the following to disable using these default oEmbed URLs. # Defaults to 'false'. # #disable_default_providers: true # Additional files with oEmbed configuration (each should be in the # form of providers.json). # # By default, this list is empty (so only the default providers.json # is used). # #additional_providers: # - oembed/my_providers.json ## Captcha ## # See docs/CAPTCHA_SETUP.md for full details of configuring this. # This homeserver's ReCAPTCHA public key. Must be specified if # enable_registration_captcha is enabled. # #recaptcha_public_key: "YOUR_PUBLIC_KEY" # This homeserver's ReCAPTCHA private key. Must be specified if # enable_registration_captcha is enabled. # #recaptcha_private_key: "YOUR_PRIVATE_KEY" # Uncomment to enable ReCaptcha checks when registering, preventing signup # unless a captcha is answered. Requires a valid ReCaptcha # public/private key. Defaults to 'false'. # #enable_registration_captcha: true # The API endpoint to use for verifying m.login.recaptcha responses. # Defaults to "https://www.recaptcha.net/recaptcha/api/siteverify". # #recaptcha_siteverify_api: "https://my.recaptcha.site" ## TURN ## # The public URIs of the TURN server to give to clients # #turn_uris: [] # The shared secret used to compute passwords for the TURN server # #turn_shared_secret: "YOUR_SHARED_SECRET" # The Username and password if the TURN server needs them and # does not use a token # #turn_username: "TURNSERVER_USERNAME" #turn_password: "TURNSERVER_PASSWORD" # How long generated TURN credentials last # #turn_user_lifetime: 1h # Whether guests should be allowed to use the TURN server. # This defaults to True, otherwise VoIP will be unreliable for guests. # However, it does introduce a slight security risk as it allows users to # connect to arbitrary endpoints without having first signed up for a # valid account (e.g. by passing a CAPTCHA). # #turn_allow_guests: true ## Registration ## # # Registration can be rate-limited using the parameters in the "Ratelimiting" # section of this file. # Enable registration for new users. # #enable_registration: false # Time that a user's session remains valid for, after they log in. # # Note that this is not currently compatible with guest logins. # # Note also that this is calculated at login time: changes are not applied # retrospectively to users who have already logged in. # # By default, this is infinite. # #session_lifetime: 24h # Time that an access token remains valid for, if the session is # using refresh tokens. # For more information about refresh tokens, please see the manual. # Note that this only applies to clients which advertise support for # refresh tokens. # # Note also that this is calculated at login time and refresh time: # changes are not applied to existing sessions until they are refreshed. # # By default, this is 5 minutes. # #refreshable_access_token_lifetime: 5m # Time that a refresh token remains valid for (provided that it is not # exchanged for another one first). # This option can be used to automatically log-out inactive sessions. # Please see the manual for more information. # # Note also that this is calculated at login time and refresh time: # changes are not applied to existing sessions until they are refreshed. # # By default, this is infinite. # #refresh_token_lifetime: 24h # Time that an access token remains valid for, if the session is NOT # using refresh tokens. # Please note that not all clients support refresh tokens, so setting # this to a short value may be inconvenient for some users who will # then be logged out frequently. # # Note also that this is calculated at login time: changes are not applied # retrospectively to existing sessions for users that have already logged in. # # By default, this is infinite. # #nonrefreshable_access_token_lifetime: 24h # The user must provide all of the below types of 3PID when registering. # #registrations_require_3pid: # - email # - msisdn # Explicitly disable asking for MSISDNs from the registration # flow (overrides registrations_require_3pid if MSISDNs are set as required) # #disable_msisdn_registration: true # Mandate that users are only allowed to associate certain formats of # 3PIDs with accounts on this server. # #allowed_local_3pids: # - medium: email # pattern: '^[^@]+@matrix\.org$' # - medium: email # pattern: '^[^@]+@vector\.im$' # - medium: msisdn # pattern: '\+44' # Enable 3PIDs lookup requests to identity servers from this server. # #enable_3pid_lookup: true # Require users to submit a token during registration. # Tokens can be managed using the admin API: # https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/registration_tokens.html # Note that `enable_registration` must be set to `true`. # Disabling this option will not delete any tokens previously generated. # Defaults to false. Uncomment the following to require tokens: # #registration_requires_token: true # If set, allows registration of standard or admin accounts by anyone who # has the shared secret, even if registration is otherwise disabled. # #registration_shared_secret: # Set the number of bcrypt rounds used to generate password hash. # Larger numbers increase the work factor needed to generate the hash. # The default number is 12 (which equates to 2^12 rounds). # N.B. that increasing this will exponentially increase the time required # to register or login - e.g. 24 => 2^24 rounds which will take >20 mins. # #bcrypt_rounds: 12 # Allows users to register as guests without a password/email/etc, and # participate in rooms hosted on this server which have been made # accessible to anonymous users. # #allow_guest_access: false # The identity server which we suggest that clients should use when users log # in on this server. # # (By default, no suggestion is made, so it is left up to the client. # This setting is ignored unless public_baseurl is also explicitly set.) # #default_identity_server: https://matrix.org # Handle threepid (email/phone etc) registration and password resets through a set of # *trusted* identity servers. Note that this allows the configured identity server to # reset passwords for accounts! # # Be aware that if `email` is not set, and SMTP options have not been # configured in the email config block, registration and user password resets via # email will be globally disabled. # # Additionally, if `msisdn` is not set, registration and password resets via msisdn # will be disabled regardless, and users will not be able to associate an msisdn # identifier to their account. This is due to Synapse currently not supporting # any method of sending SMS messages on its own. # # To enable using an identity server for operations regarding a particular third-party # identifier type, set the value to the URL of that identity server as shown in the # examples below. # # Servers handling the these requests must answer the `/requestToken` endpoints defined # by the Matrix Identity Service API specification: # https://matrix.org/docs/spec/identity_service/latest # account_threepid_delegates: #email: https://example.com # Delegate email sending to example.com #msisdn: http://localhost:8090 # Delegate SMS sending to this local process # Whether users are allowed to change their displayname after it has # been initially set. Useful when provisioning users based on the # contents of a third-party directory. # # Does not apply to server administrators. Defaults to 'true' # #enable_set_displayname: false # Whether users are allowed to change their avatar after it has been # initially set. Useful when provisioning users based on the contents # of a third-party directory. # # Does not apply to server administrators. Defaults to 'true' # #enable_set_avatar_url: false # Whether users can change the 3PIDs associated with their accounts # (email address and msisdn). # # Defaults to 'true' # #enable_3pid_changes: false # Users who register on this homeserver will automatically be joined # to these rooms. # # By default, any room aliases included in this list will be created # as a publicly joinable room when the first user registers for the # homeserver. This behaviour can be customised with the settings below. # If the room already exists, make certain it is a publicly joinable # room. The join rule of the room must be set to 'public'. # #auto_join_rooms: # - "#example:example.com" # Where auto_join_rooms are specified, setting this flag ensures that the # the rooms exist by creating them when the first user on the # homeserver registers. # # By default the auto-created rooms are publicly joinable from any federated # server. Use the autocreate_auto_join_rooms_federated and # autocreate_auto_join_room_preset settings below to customise this behaviour. # # Setting to false means that if the rooms are not manually created, # users cannot be auto-joined since they do not exist. # # Defaults to true. Uncomment the following line to disable automatically # creating auto-join rooms. # #autocreate_auto_join_rooms: false # Whether the auto_join_rooms that are auto-created are available via # federation. Only has an effect if autocreate_auto_join_rooms is true. # # Note that whether a room is federated cannot be modified after # creation. # # Defaults to true: the room will be joinable from other servers. # Uncomment the following to prevent users from other homeservers from # joining these rooms. # #autocreate_auto_join_rooms_federated: false # The room preset to use when auto-creating one of auto_join_rooms. Only has an # effect if autocreate_auto_join_rooms is true. # # This can be one of "public_chat", "private_chat", or "trusted_private_chat". # If a value of "private_chat" or "trusted_private_chat" is used then # auto_join_mxid_localpart must also be configured. # # Defaults to "public_chat", meaning that the room is joinable by anyone, including # federated servers if autocreate_auto_join_rooms_federated is true (the default). # Uncomment the following to require an invitation to join these rooms. # #autocreate_auto_join_room_preset: private_chat # The local part of the user id which is used to create auto_join_rooms if # autocreate_auto_join_rooms is true. If this is not provided then the # initial user account that registers will be used to create the rooms. # # The user id is also used to invite new users to any auto-join rooms which # are set to invite-only. # # It *must* be configured if autocreate_auto_join_room_preset is set to # "private_chat" or "trusted_private_chat". # # Note that this must be specified in order for new users to be correctly # invited to any auto-join rooms which have been set to invite-only (either # at the time of creation or subsequently). # # Note that, if the room already exists, this user must be joined and # have the appropriate permissions to invite new members. # #auto_join_mxid_localpart: system # When auto_join_rooms is specified, setting this flag to false prevents # guest accounts from being automatically joined to the rooms. # # Defaults to true. # #auto_join_rooms_for_guests: false # Whether to inhibit errors raised when registering a new account if the user ID # already exists. If turned on, that requests to /register/available will always # show a user ID as available, and Synapse won't raise an error when starting # a registration with a user ID that already exists. However, Synapse will still # raise an error if the registration completes and the username conflicts. # # Defaults to false. # #inhibit_user_in_use_error: true ## Metrics ### # Enable collection and rendering of performance metrics # #enable_metrics: false # Enable sentry integration # NOTE: While attempts are made to ensure that the logs don't contain # any sensitive information, this cannot be guaranteed. By enabling # this option the sentry server may therefore receive sensitive # information, and it in turn may then diseminate sensitive information # through insecure notification channels if so configured. # #sentry: # dsn: "..." # Flags to enable Prometheus metrics which are not suitable to be # enabled by default, either for performance reasons or limited use. # metrics_flags: # Publish synapse_federation_known_servers, a gauge of the number of # servers this homeserver knows about, including itself. May cause # performance problems on large homeservers. # #known_servers: true # Whether or not to report anonymized homeserver usage statistics. # #report_stats: true|false # The endpoint to report the anonymized homeserver usage statistics to. # Defaults to https://matrix.org/report-usage-stats/push # #report_stats_endpoint: https://example.com/report-usage-stats/push ## API Configuration ## # Controls for the state that is shared with users who receive an invite # to a room # room_prejoin_state: # By default, the following state event types are shared with users who # receive invites to the room: # # - m.room.join_rules # - m.room.canonical_alias # - m.room.avatar # - m.room.encryption # - m.room.name # - m.room.create # - m.room.topic # # Uncomment the following to disable these defaults (so that only the event # types listed in 'additional_event_types' are shared). Defaults to 'false'. # #disable_default_event_types: true # Additional state event types to share with users when they are invited # to a room. # # By default, this list is empty (so only the default event types are shared). # #additional_event_types: # - org.example.custom.event.type # We record the IP address of clients used to access the API for various # reasons, including displaying it to the user in the "Where you're signed in" # dialog. # # By default, when puppeting another user via the admin API, the client IP # address is recorded against the user who created the access token (ie, the # admin user), and *not* the puppeted user. # # Uncomment the following to also record the IP address against the puppeted # user. (This also means that the puppeted user will count as an "active" user # for the purpose of monthly active user tracking - see 'limit_usage_by_mau' etc # above.) # #track_puppeted_user_ips: true # A list of application service config files to use # #app_service_config_files: # - app_service_1.yaml # - app_service_2.yaml # Uncomment to enable tracking of application service IP addresses. Implicitly # enables MAU tracking for application service users. # #track_appservice_user_ips: true # a secret which is used to sign access tokens. If none is specified, # the registration_shared_secret is used, if one is given; otherwise, # a secret key is derived from the signing key. # #macaroon_secret_key: # a secret which is used to calculate HMACs for form values, to stop # falsification of values. Must be specified for the User Consent # forms to work. # #form_secret: ## Signing Keys ## # Path to the signing key to sign messages with # signing_key_path: "CONFDIR/SERVERNAME.signing.key" # The keys that the server used to sign messages with but won't use # to sign new messages. # old_signing_keys: # For each key, `key` should be the base64-encoded public key, and # `expired_ts`should be the time (in milliseconds since the unix epoch) that # it was last used. # # It is possible to build an entry from an old signing.key file using the # `export_signing_key` script which is provided with synapse. # # For example: # #"ed25519:id": { key: "base64string", expired_ts: 123456789123 } # How long key response published by this server is valid for. # Used to set the valid_until_ts in /key/v2 APIs. # Determines how quickly servers will query to check which keys # are still valid. # #key_refresh_interval: 1d # The trusted servers to download signing keys from. # # When we need to fetch a signing key, each server is tried in parallel. # # Normally, the connection to the key server is validated via TLS certificates. # Additional security can be provided by configuring a `verify key`, which # will make synapse check that the response is signed by that key. # # This setting supercedes an older setting named `perspectives`. The old format # is still supported for backwards-compatibility, but it is deprecated. # # 'trusted_key_servers' defaults to matrix.org, but using it will generate a # warning on start-up. To suppress this warning, set # 'suppress_key_server_warning' to true. # # Options for each entry in the list include: # # server_name: the name of the server. required. # # verify_keys: an optional map from key id to base64-encoded public key. # If specified, we will check that the response is signed by at least # one of the given keys. # # accept_keys_insecurely: a boolean. Normally, if `verify_keys` is unset, # and federation_verify_certificates is not `true`, synapse will refuse # to start, because this would allow anyone who can spoof DNS responses # to masquerade as the trusted key server. If you know what you are doing # and are sure that your network environment provides a secure connection # to the key server, you can set this to `true` to override this # behaviour. # # An example configuration might look like: # #trusted_key_servers: # - server_name: "my_trusted_server.example.com" # verify_keys: # "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr" # - server_name: "my_other_trusted_server.example.com" # trusted_key_servers: - server_name: "matrix.org" # Uncomment the following to disable the warning that is emitted when the # trusted_key_servers include 'matrix.org'. See above. # #suppress_key_server_warning: true # The signing keys to use when acting as a trusted key server. If not specified # defaults to the server signing key. # # Can contain multiple keys, one per line. # #key_server_signing_keys_path: "key_server_signing_keys.key" ## Single sign-on integration ## # The following settings can be used to make Synapse use a single sign-on # provider for authentication, instead of its internal password database. # # You will probably also want to set the following options to `false` to # disable the regular login/registration flows: # * enable_registration # * password_config.enabled # # You will also want to investigate the settings under the "sso" configuration # section below. # Enable SAML2 for registration and login. Uses pysaml2. # # At least one of `sp_config` or `config_path` must be set in this section to # enable SAML login. # # Once SAML support is enabled, a metadata file will be exposed at # https://:/_synapse/client/saml2/metadata.xml, which you may be able to # use to configure your SAML IdP with. Alternatively, you can manually configure # the IdP to use an ACS location of # https://:/_synapse/client/saml2/authn_response. # saml2_config: # `sp_config` is the configuration for the pysaml2 Service Provider. # See pysaml2 docs for format of config. # # Default values will be used for the 'entityid' and 'service' settings, # so it is not normally necessary to specify them unless you need to # override them. # sp_config: # Point this to the IdP's metadata. You must provide either a local # file via the `local` attribute or (preferably) a URL via the # `remote` attribute. # #metadata: # local: ["saml2/idp.xml"] # remote: # - url: https://our_idp/metadata.xml # Allowed clock difference in seconds between the homeserver and IdP. # # Uncomment the below to increase the accepted time difference from 0 to 3 seconds. # #accepted_time_diff: 3 # By default, the user has to go to our login page first. If you'd like # to allow IdP-initiated login, set 'allow_unsolicited: true' in a # 'service.sp' section: # #service: # sp: # allow_unsolicited: true # The examples below are just used to generate our metadata xml, and you # may well not need them, depending on your setup. Alternatively you # may need a whole lot more detail - see the pysaml2 docs! #description: ["My awesome SP", "en"] #name: ["Test SP", "en"] #ui_info: # display_name: # - lang: en # text: "Display Name is the descriptive name of your service." # description: # - lang: en # text: "Description should be a short paragraph explaining the purpose of the service." # information_url: # - lang: en # text: "https://example.com/terms-of-service" # privacy_statement_url: # - lang: en # text: "https://example.com/privacy-policy" # keywords: # - lang: en # text: ["Matrix", "Element"] # logo: # - lang: en # text: "https://example.com/logo.svg" # width: "200" # height: "80" #organization: # name: Example com # display_name: # - ["Example co", "en"] # url: "http://example.com" #contact_person: # - given_name: Bob # sur_name: "the Sysadmin" # email_address": ["admin@example.com"] # contact_type": technical # Instead of putting the config inline as above, you can specify a # separate pysaml2 configuration file: # #config_path: "CONFDIR/sp_conf.py" # The lifetime of a SAML session. This defines how long a user has to # complete the authentication process, if allow_unsolicited is unset. # The default is 15 minutes. # #saml_session_lifetime: 5m # An external module can be provided here as a custom solution to # mapping attributes returned from a saml provider onto a matrix user. # user_mapping_provider: # The custom module's class. Uncomment to use a custom module. # #module: mapping_provider.SamlMappingProvider # Custom configuration values for the module. Below options are # intended for the built-in provider, they should be changed if # using a custom module. This section will be passed as a Python # dictionary to the module's `parse_config` method. # config: # The SAML attribute (after mapping via the attribute maps) to use # to derive the Matrix ID from. 'uid' by default. # # Note: This used to be configured by the # saml2_config.mxid_source_attribute option. If that is still # defined, its value will be used instead. # #mxid_source_attribute: displayName # The mapping system to use for mapping the saml attribute onto a # matrix ID. # # Options include: # * 'hexencode' (which maps unpermitted characters to '=xx') # * 'dotreplace' (which replaces unpermitted characters with # '.'). # The default is 'hexencode'. # # Note: This used to be configured by the # saml2_config.mxid_mapping option. If that is still defined, its # value will be used instead. # #mxid_mapping: dotreplace # In previous versions of synapse, the mapping from SAML attribute to # MXID was always calculated dynamically rather than stored in a # table. For backwards- compatibility, we will look for user_ids # matching such a pattern before creating a new account. # # This setting controls the SAML attribute which will be used for this # backwards-compatibility lookup. Typically it should be 'uid', but if # the attribute maps are changed, it may be necessary to change it. # # The default is 'uid'. # #grandfathered_mxid_source_attribute: upn # It is possible to configure Synapse to only allow logins if SAML attributes # match particular values. The requirements can be listed under # `attribute_requirements` as shown below. All of the listed attributes must # match for the login to be permitted. # #attribute_requirements: # - attribute: userGroup # value: "staff" # - attribute: department # value: "sales" # If the metadata XML contains multiple IdP entities then the `idp_entityid` # option must be set to the entity to redirect users to. # # Most deployments only have a single IdP entity and so should omit this # option. # #idp_entityid: 'https://our_idp/entityid' # List of OpenID Connect (OIDC) / OAuth 2.0 identity providers, for registration # and login. # # Options for each entry include: # # idp_id: a unique identifier for this identity provider. Used internally # by Synapse; should be a single word such as 'github'. # # Note that, if this is changed, users authenticating via that provider # will no longer be recognised as the same user! # # (Use "oidc" here if you are migrating from an old "oidc_config" # configuration.) # # idp_name: A user-facing name for this identity provider, which is used to # offer the user a choice of login mechanisms. # # idp_icon: An optional icon for this identity provider, which is presented # by clients and Synapse's own IdP picker page. If given, must be an # MXC URI of the format mxc:///. (An easy way to # obtain such an MXC URI is to upload an image to an (unencrypted) room # and then copy the "url" from the source of the event.) # # idp_brand: An optional brand for this identity provider, allowing clients # to style the login flow according to the identity provider in question. # See the spec for possible options here. # # discover: set to 'false' to disable the use of the OIDC discovery mechanism # to discover endpoints. Defaults to true. # # issuer: Required. The OIDC issuer. Used to validate tokens and (if discovery # is enabled) to discover the provider's endpoints. # # client_id: Required. oauth2 client id to use. # # client_secret: oauth2 client secret to use. May be omitted if # client_secret_jwt_key is given, or if client_auth_method is 'none'. # # client_secret_jwt_key: Alternative to client_secret: details of a key used # to create a JSON Web Token to be used as an OAuth2 client secret. If # given, must be a dictionary with the following properties: # # key: a pem-encoded signing key. Must be a suitable key for the # algorithm specified. Required unless 'key_file' is given. # # key_file: the path to file containing a pem-encoded signing key file. # Required unless 'key' is given. # # jwt_header: a dictionary giving properties to include in the JWT # header. Must include the key 'alg', giving the algorithm used to # sign the JWT, such as "ES256", using the JWA identifiers in # RFC7518. # # jwt_payload: an optional dictionary giving properties to include in # the JWT payload. Normally this should include an 'iss' key. # # client_auth_method: auth method to use when exchanging the token. Valid # values are 'client_secret_basic' (default), 'client_secret_post' and # 'none'. # # scopes: list of scopes to request. This should normally include the "openid" # scope. Defaults to ["openid"]. # # authorization_endpoint: the oauth2 authorization endpoint. Required if # provider discovery is disabled. # # token_endpoint: the oauth2 token endpoint. Required if provider discovery is # disabled. # # userinfo_endpoint: the OIDC userinfo endpoint. Required if discovery is # disabled and the 'openid' scope is not requested. # # jwks_uri: URI where to fetch the JWKS. Required if discovery is disabled and # the 'openid' scope is used. # # skip_verification: set to 'true' to skip metadata verification. Use this if # you are connecting to a provider that is not OpenID Connect compliant. # Defaults to false. Avoid this in production. # # user_profile_method: Whether to fetch the user profile from the userinfo # endpoint, or to rely on the data returned in the id_token from the # token_endpoint. # # Valid values are: 'auto' or 'userinfo_endpoint'. # # Defaults to 'auto', which uses the userinfo endpoint if 'openid' is # not included in 'scopes'. Set to 'userinfo_endpoint' to always use the # userinfo endpoint. # # allow_existing_users: set to 'true' to allow a user logging in via OIDC to # match a pre-existing account instead of failing. This could be used if # switching from password logins to OIDC. Defaults to false. # # user_mapping_provider: Configuration for how attributes returned from a OIDC # provider are mapped onto a matrix user. This setting has the following # sub-properties: # # module: The class name of a custom mapping module. Default is # 'synapse.handlers.oidc.JinjaOidcMappingProvider'. # See https://matrix-org.github.io/synapse/latest/sso_mapping_providers.html#openid-mapping-providers # for information on implementing a custom mapping provider. # # config: Configuration for the mapping provider module. This section will # be passed as a Python dictionary to the user mapping provider # module's `parse_config` method. # # For the default provider, the following settings are available: # # subject_claim: name of the claim containing a unique identifier # for the user. Defaults to 'sub', which OpenID Connect # compliant providers should provide. # # localpart_template: Jinja2 template for the localpart of the MXID. # If this is not set, the user will be prompted to choose their # own username (see 'sso_auth_account_details.html' in the 'sso' # section of this file). # # display_name_template: Jinja2 template for the display name to set # on first login. If unset, no displayname will be set. # # email_template: Jinja2 template for the email address of the user. # If unset, no email address will be added to the account. # # extra_attributes: a map of Jinja2 templates for extra attributes # to send back to the client during login. # Note that these are non-standard and clients will ignore them # without modifications. # # When rendering, the Jinja2 templates are given a 'user' variable, # which is set to the claims returned by the UserInfo Endpoint and/or # in the ID Token. # # It is possible to configure Synapse to only allow logins if certain attributes # match particular values in the OIDC userinfo. The requirements can be listed under # `attribute_requirements` as shown below. All of the listed attributes must # match for the login to be permitted. Additional attributes can be added to # userinfo by expanding the `scopes` section of the OIDC config to retrieve # additional information from the OIDC provider. # # If the OIDC claim is a list, then the attribute must match any value in the list. # Otherwise, it must exactly match the value of the claim. Using the example # below, the `family_name` claim MUST be "Stephensson", but the `groups` # claim MUST contain "admin". # # attribute_requirements: # - attribute: family_name # value: "Stephensson" # - attribute: groups # value: "admin" # # See https://matrix-org.github.io/synapse/latest/openid.html # for information on how to configure these options. # # For backwards compatibility, it is also possible to configure a single OIDC # provider via an 'oidc_config' setting. This is now deprecated and admins are # advised to migrate to the 'oidc_providers' format. (When doing that migration, # use 'oidc' for the idp_id to ensure that existing users continue to be # recognised.) # oidc_providers: # Generic example # #- idp_id: my_idp # idp_name: "My OpenID provider" # idp_icon: "mxc://example.com/mediaid" # discover: false # issuer: "https://accounts.example.com/" # client_id: "provided-by-your-issuer" # client_secret: "provided-by-your-issuer" # client_auth_method: client_secret_post # scopes: ["openid", "profile"] # authorization_endpoint: "https://accounts.example.com/oauth2/auth" # token_endpoint: "https://accounts.example.com/oauth2/token" # userinfo_endpoint: "https://accounts.example.com/userinfo" # jwks_uri: "https://accounts.example.com/.well-known/jwks.json" # skip_verification: true # user_mapping_provider: # config: # subject_claim: "id" # localpart_template: "{{ user.login }}" # display_name_template: "{{ user.name }}" # email_template: "{{ user.email }}" # attribute_requirements: # - attribute: userGroup # value: "synapseUsers" # Enable Central Authentication Service (CAS) for registration and login. # cas_config: # Uncomment the following to enable authorization against a CAS server. # Defaults to false. # #enabled: true # The URL of the CAS authorization endpoint. # #server_url: "https://cas-server.com" # The attribute of the CAS response to use as the display name. # # If unset, no displayname will be set. # #displayname_attribute: name # It is possible to configure Synapse to only allow logins if CAS attributes # match particular values. All of the keys in the mapping below must exist # and the values must match the given value. Alternately if the given value # is None then any value is allowed (the attribute just must exist). # All of the listed attributes must match for the login to be permitted. # #required_attributes: # userGroup: "staff" # department: None # Additional settings to use with single-sign on systems such as OpenID Connect, # SAML2 and CAS. # # Server admins can configure custom templates for pages related to SSO. See # https://matrix-org.github.io/synapse/latest/templates.html for more information. # sso: # A list of client URLs which are whitelisted so that the user does not # have to confirm giving access to their account to the URL. Any client # whose URL starts with an entry in the following list will not be subject # to an additional confirmation step after the SSO login is completed. # # WARNING: An entry such as "https://my.client" is insecure, because it # will also match "https://my.client.evil.site", exposing your users to # phishing attacks from evil.site. To avoid this, include a slash after the # hostname: "https://my.client/". # # The login fallback page (used by clients that don't natively support the # required login flows) is whitelisted in addition to any URLs in this list. # # By default, this list contains only the login fallback page. # #client_whitelist: # - https://riot.im/develop # - https://my.custom.client/ # Uncomment to keep a user's profile fields in sync with information from # the identity provider. Currently only syncing the displayname is # supported. Fields are checked on every SSO login, and are updated # if necessary. # # Note that enabling this option will override user profile information, # regardless of whether users have opted-out of syncing that # information when first signing in. Defaults to false. # #update_profile_information: true # JSON web token integration. The following settings can be used to make # Synapse JSON web tokens for authentication, instead of its internal # password database. # # Each JSON Web Token needs to contain a "sub" (subject) claim, which is # used as the localpart of the mxid. # # Additionally, the expiration time ("exp"), not before time ("nbf"), # and issued at ("iat") claims are validated if present. # # Note that this is a non-standard login type and client support is # expected to be non-existent. # # See https://matrix-org.github.io/synapse/latest/jwt.html. # #jwt_config: # Uncomment the following to enable authorization using JSON web # tokens. Defaults to false. # #enabled: true # This is either the private shared secret or the public key used to # decode the contents of the JSON web token. # # Required if 'enabled' is true. # #secret: "provided-by-your-issuer" # The algorithm used to sign the JSON web token. # # Supported algorithms are listed at # https://pyjwt.readthedocs.io/en/latest/algorithms.html # # Required if 'enabled' is true. # #algorithm: "provided-by-your-issuer" # Name of the claim containing a unique identifier for the user. # # Optional, defaults to `sub`. # #subject_claim: "sub" # The issuer to validate the "iss" claim against. # # Optional, if provided the "iss" claim will be required and # validated for all JSON web tokens. # #issuer: "provided-by-your-issuer" # A list of audiences to validate the "aud" claim against. # # Optional, if provided the "aud" claim will be required and # validated for all JSON web tokens. # # Note that if the "aud" claim is included in a JSON web token then # validation will fail without configuring audiences. # #audiences: # - "provided-by-your-issuer" password_config: # Uncomment to disable password login # #enabled: false # Uncomment to disable authentication against the local password # database. This is ignored if `enabled` is false, and is only useful # if you have other password_providers. # #localdb_enabled: false # Uncomment and change to a secret random string for extra security. # DO NOT CHANGE THIS AFTER INITIAL SETUP! # #pepper: "EVEN_MORE_SECRET" # Define and enforce a password policy. Each parameter is optional. # This is an implementation of MSC2000. # policy: # Whether to enforce the password policy. # Defaults to 'false'. # #enabled: true # Minimum accepted length for a password. # Defaults to 0. # #minimum_length: 15 # Whether a password must contain at least one digit. # Defaults to 'false'. # #require_digit: true # Whether a password must contain at least one symbol. # A symbol is any character that's not a number or a letter. # Defaults to 'false'. # #require_symbol: true # Whether a password must contain at least one lowercase letter. # Defaults to 'false'. # #require_lowercase: true # Whether a password must contain at least one uppercase letter. # Defaults to 'false'. # #require_uppercase: true ui_auth: # The amount of time to allow a user-interactive authentication session # to be active. # # This defaults to 0, meaning the user is queried for their credentials # before every action, but this can be overridden to allow a single # validation to be re-used. This weakens the protections afforded by # the user-interactive authentication process, by allowing for multiple # (and potentially different) operations to use the same validation session. # # This is ignored for potentially "dangerous" operations (including # deactivating an account, modifying an account password, and # adding a 3PID). # # Uncomment below to allow for credential validation to last for 15 # seconds. # #session_timeout: "15s" # Configuration for sending emails from Synapse. # # Server admins can configure custom templates for email content. See # https://matrix-org.github.io/synapse/latest/templates.html for more information. # email: # The hostname of the outgoing SMTP server to use. Defaults to 'localhost'. # #smtp_host: mail.server # The port on the mail server for outgoing SMTP. Defaults to 25. # #smtp_port: 587 # Username/password for authentication to the SMTP server. By default, no # authentication is attempted. # #smtp_user: "exampleusername" #smtp_pass: "examplepassword" # Uncomment the following to require TLS transport security for SMTP. # By default, Synapse will connect over plain text, and will then switch to # TLS via STARTTLS *if the SMTP server supports it*. If this option is set, # Synapse will refuse to connect unless the server supports STARTTLS. # #require_transport_security: true # Uncomment the following to disable TLS for SMTP. # # By default, if the server supports TLS, it will be used, and the server # must present a certificate that is valid for 'smtp_host'. If this option # is set to false, TLS will not be used. # #enable_tls: false # notif_from defines the "From" address to use when sending emails. # It must be set if email sending is enabled. # # The placeholder '%(app)s' will be replaced by the application name, # which is normally 'app_name' (below), but may be overridden by the # Matrix client application. # # Note that the placeholder must be written '%(app)s', including the # trailing 's'. # #notif_from: "Your Friendly %(app)s homeserver " # app_name defines the default value for '%(app)s' in notif_from and email # subjects. It defaults to 'Matrix'. # #app_name: my_branded_matrix_server # Uncomment the following to enable sending emails for messages that the user # has missed. Disabled by default. # #enable_notifs: true # Uncomment the following to disable automatic subscription to email # notifications for new users. Enabled by default. # #notif_for_new_users: false # Custom URL for client links within the email notifications. By default # links will be based on "https://matrix.to". # # (This setting used to be called riot_base_url; the old name is still # supported for backwards-compatibility but is now deprecated.) # #client_base_url: "http://localhost/riot" # Configure the time that a validation email will expire after sending. # Defaults to 1h. # #validation_token_lifetime: 15m # The web client location to direct users to during an invite. This is passed # to the identity server as the org.matrix.web_client_location key. Defaults # to unset, giving no guidance to the identity server. # #invite_client_location: https://app.element.io # Subjects to use when sending emails from Synapse. # # The placeholder '%(app)s' will be replaced with the value of the 'app_name' # setting above, or by a value dictated by the Matrix client application. # # If a subject isn't overridden in this configuration file, the value used as # its example will be used. # #subjects: # Subjects for notification emails. # # On top of the '%(app)s' placeholder, these can use the following # placeholders: # # * '%(person)s', which will be replaced by the display name of the user(s) # that sent the message(s), e.g. "Alice and Bob". # * '%(room)s', which will be replaced by the name of the room the # message(s) have been sent to, e.g. "My super room". # # See the example provided for each setting to see which placeholder can be # used and how to use them. # # Subject to use to notify about one message from one or more user(s) in a # room which has a name. #message_from_person_in_room: "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room..." # # Subject to use to notify about one message from one or more user(s) in a # room which doesn't have a name. #message_from_person: "[%(app)s] You have a message on %(app)s from %(person)s..." # # Subject to use to notify about multiple messages from one or more users in # a room which doesn't have a name. #messages_from_person: "[%(app)s] You have messages on %(app)s from %(person)s..." # # Subject to use to notify about multiple messages in a room which has a # name. #messages_in_room: "[%(app)s] You have messages on %(app)s in the %(room)s room..." # # Subject to use to notify about multiple messages in multiple rooms. #messages_in_room_and_others: "[%(app)s] You have messages on %(app)s in the %(room)s room and others..." # # Subject to use to notify about multiple messages from multiple persons in # multiple rooms. This is similar to the setting above except it's used when # the room in which the notification was triggered has no name. #messages_from_person_and_others: "[%(app)s] You have messages on %(app)s from %(person)s and others..." # # Subject to use to notify about an invite to a room which has a name. #invite_from_person_to_room: "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s..." # # Subject to use to notify about an invite to a room which doesn't have a # name. #invite_from_person: "[%(app)s] %(person)s has invited you to chat on %(app)s..." # Subject for emails related to account administration. # # On top of the '%(app)s' placeholder, these one can use the # '%(server_name)s' placeholder, which will be replaced by the value of the # 'server_name' setting in your Synapse configuration. # # Subject to use when sending a password reset email. #password_reset: "[%(server_name)s] Password reset" # # Subject to use when sending a verification email to assert an address's # ownership. #email_validation: "[%(server_name)s] Validate your email" ## Push ## push: # Clients requesting push notifications can either have the body of # the message sent in the notification poke along with other details # like the sender, or just the event ID and room ID (`event_id_only`). # If clients choose the former, this option controls whether the # notification request includes the content of the event (other details # like the sender are still included). For `event_id_only` push, it # has no effect. # # For modern android devices the notification content will still appear # because it is loaded by the app. iPhone, however will send a # notification saying only that a message arrived and who it came from. # # The default value is "true" to include message details. Uncomment to only # include the event ID and room ID in push notification payloads. # #include_content: false # When a push notification is received, an unread count is also sent. # This number can either be calculated as the number of unread messages # for the user, or the number of *rooms* the user has unread messages in. # # The default value is "true", meaning push clients will see the number of # rooms with unread messages in them. Uncomment to instead send the number # of unread messages. # #group_unread_count_by_room: false ## Rooms ## # Controls whether locally-created rooms should be end-to-end encrypted by # default. # # Possible options are "all", "invite", and "off". They are defined as: # # * "all": any locally-created room # * "invite": any room created with the "private_chat" or "trusted_private_chat" # room creation presets # * "off": this option will take no effect # # The default value is "off". # # Note that this option will only affect rooms created after it is set. It # will also not affect rooms created by other servers. # #encryption_enabled_by_default_for_room_type: invite # Uncomment to allow non-server-admin users to create groups on this server # #enable_group_creation: true # If enabled, non server admins can only create groups with local parts # starting with this prefix # #group_creation_prefix: "unofficial_" # User Directory configuration # user_directory: # Defines whether users can search the user directory. If false then # empty responses are returned to all queries. Defaults to true. # # Uncomment to disable the user directory. # #enabled: false # Defines whether to search all users visible to your HS when searching # the user directory. If false, search results will only contain users # visible in public rooms and users sharing a room with the requester. # Defaults to false. # # NB. If you set this to true, and the last time the user_directory search # indexes were (re)built was before Synapse 1.44, you'll have to # rebuild the indexes in order to search through all known users. # These indexes are built the first time Synapse starts; admins can # manually trigger a rebuild via API following the instructions at # https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/background_updates.html#run # # Uncomment to return search results containing all known users, even if that # user does not share a room with the requester. # #search_all_users: true # Defines whether to prefer local users in search query results. # If True, local users are more likely to appear above remote users # when searching the user directory. Defaults to false. # # Uncomment to prefer local over remote users in user directory search # results. # #prefer_local_users: true # User Consent configuration # # for detailed instructions, see # https://matrix-org.github.io/synapse/latest/consent_tracking.html # # Parts of this section are required if enabling the 'consent' resource under # 'listeners', in particular 'template_dir' and 'version'. # # 'template_dir' gives the location of the templates for the HTML forms. # This directory should contain one subdirectory per language (eg, 'en', 'fr'), # and each language directory should contain the policy document (named as # '.html') and a success page (success.html). # # 'version' specifies the 'current' version of the policy document. It defines # the version to be served by the consent resource if there is no 'v' # parameter. # # 'server_notice_content', if enabled, will send a user a "Server Notice" # asking them to consent to the privacy policy. The 'server_notices' section # must also be configured for this to work. Notices will *not* be sent to # guest users unless 'send_server_notice_to_guests' is set to true. # # 'block_events_error', if set, will block any attempts to send events # until the user consents to the privacy policy. The value of the setting is # used as the text of the error. # # 'require_at_registration', if enabled, will add a step to the registration # process, similar to how captcha works. Users will be required to accept the # policy before their account is created. # # 'policy_name' is the display name of the policy users will see when registering # for an account. Has no effect unless `require_at_registration` is enabled. # Defaults to "Privacy Policy". # #user_consent: # template_dir: res/templates/privacy # version: 1.0 # server_notice_content: # msgtype: m.text # body: >- # To continue using this homeserver you must review and agree to the # terms and conditions at %(consent_uri)s # send_server_notice_to_guests: true # block_events_error: >- # To continue using this homeserver you must review and agree to the # terms and conditions at %(consent_uri)s # require_at_registration: false # policy_name: Privacy Policy # # Settings for local room and user statistics collection. See # https://matrix-org.github.io/synapse/latest/room_and_user_statistics.html. # stats: # Uncomment the following to disable room and user statistics. Note that doing # so may cause certain features (such as the room directory) not to work # correctly. # #enabled: false # Server Notices room configuration # # Uncomment this section to enable a room which can be used to send notices # from the server to users. It is a special room which cannot be left; notices # come from a special "notices" user id. # # If you uncomment this section, you *must* define the system_mxid_localpart # setting, which defines the id of the user which will be used to send the # notices. # # It's also possible to override the room name, the display name of the # "notices" user, and the avatar for the user. # #server_notices: # system_mxid_localpart: notices # system_mxid_display_name: "Server Notices" # system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ" # room_name: "Server Notices" # Uncomment to disable searching the public room list. When disabled # blocks searching local and remote room lists for local and remote # users by always returning an empty list for all queries. # #enable_room_list_search: false # The `alias_creation` option controls who's allowed to create aliases # on this server. # # The format of this option is a list of rules that contain globs that # match against user_id, room_id and the new alias (fully qualified with # server name). The action in the first rule that matches is taken, # which can currently either be "allow" or "deny". # # Missing user_id/room_id/alias fields default to "*". # # If no rules match the request is denied. An empty list means no one # can create aliases. # # Options for the rules include: # # user_id: Matches against the creator of the alias # alias: Matches against the alias being created # room_id: Matches against the room ID the alias is being pointed at # action: Whether to "allow" or "deny" the request if the rule matches # # The default is: # #alias_creation_rules: # - user_id: "*" # alias: "*" # room_id: "*" # action: allow # The `room_list_publication_rules` option controls who can publish and # which rooms can be published in the public room list. # # The format of this option is the same as that for # `alias_creation_rules`. # # If the room has one or more aliases associated with it, only one of # the aliases needs to match the alias rule. If there are no aliases # then only rules with `alias: *` match. # # If no rules match the request is denied. An empty list means no one # can publish rooms. # # Options for the rules include: # # user_id: Matches against the creator of the alias # room_id: Matches against the room ID being published # alias: Matches against any current local or canonical aliases # associated with the room # action: Whether to "allow" or "deny" the request if the rule matches # # The default is: # #room_list_publication_rules: # - user_id: "*" # alias: "*" # room_id: "*" # action: allow ## Opentracing ## # These settings enable opentracing, which implements distributed tracing. # This allows you to observe the causal chains of events across servers # including requests, key lookups etc., across any server running # synapse or any other other services which supports opentracing # (specifically those implemented with Jaeger). # opentracing: # tracing is disabled by default. Uncomment the following line to enable it. # #enabled: true # The list of homeservers we wish to send and receive span contexts and span baggage. # See https://matrix-org.github.io/synapse/latest/opentracing.html. # # This is a list of regexes which are matched against the server_name of the # homeserver. # # By default, it is empty, so no servers are matched. # #homeserver_whitelist: # - ".*" # A list of the matrix IDs of users whose requests will always be traced, # even if the tracing system would otherwise drop the traces due to # probabilistic sampling. # # By default, the list is empty. # #force_tracing_for_users: # - "@user1:server_name" # - "@user2:server_name" # Jaeger can be configured to sample traces at different rates. # All configuration options provided by Jaeger can be set here. # Jaeger's configuration is mostly related to trace sampling which # is documented here: # https://www.jaegertracing.io/docs/latest/sampling/. # #jaeger_config: # sampler: # type: const # param: 1 # logging: # false ## Workers ## # Disables sending of outbound federation transactions on the main process. # Uncomment if using a federation sender worker. # #send_federation: false # It is possible to run multiple federation sender workers, in which case the # work is balanced across them. # # This configuration must be shared between all federation sender workers, and if # changed all federation sender workers must be stopped at the same time and then # started, to ensure that all instances are running with the same config (otherwise # events may be dropped). # #federation_sender_instances: # - federation_sender1 # When using workers this should be a map from `worker_name` to the # HTTP replication listener of the worker, if configured. # #instance_map: # worker1: # host: localhost # port: 8034 # Experimental: When using workers you can define which workers should # handle event persistence and typing notifications. Any worker # specified here must also be in the `instance_map`. # #stream_writers: # events: worker1 # typing: worker1 # The worker that is used to run background tasks (e.g. cleaning up expired # data). If not provided this defaults to the main process. # #run_background_tasks_on: worker1 # A shared secret used by the replication APIs to authenticate HTTP requests # from workers. # # By default this is unused and traffic is not authenticated. # #worker_replication_secret: "" # Configuration for Redis when using workers. This *must* be enabled when # using workers (unless using old style direct TCP configuration). # redis: # Uncomment the below to enable Redis support. # #enabled: true # Optional host and port to use to connect to redis. Defaults to # localhost and 6379 # #host: localhost #port: 6379 # Optional password if configured on the Redis instance # #password: synapse-1.53.0/docs/sample_log_config.yaml000066400000000000000000000060761420514467300205640ustar00rootroot00000000000000# Log configuration for Synapse. # # This is a YAML file containing a standard Python logging configuration # dictionary. See [1] for details on the valid settings. # # Synapse also supports structured logging for machine readable logs which can # be ingested by ELK stacks. See [2] for details. # # [1]: https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema # [2]: https://matrix-org.github.io/synapse/latest/structured_logging.html version: 1 formatters: precise: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' handlers: file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: /var/log/matrix-synapse/homeserver.log when: midnight backupCount: 3 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. # WARNING/ERROR logs will still be flushed immediately, but there will be a # delay (of up to `period` seconds, or until the buffer is full with # `capacity` messages) before INFO/DEBUG logs get written. buffer: class: synapse.logging.handlers.PeriodicallyFlushingMemoryHandler target: file # The capacity is the maximum number of log lines that are buffered # before being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. # This parameter is required. capacity: 10 # Logs with a level at or above the flush level will cause the buffer to # be flushed immediately. # Default value: 40 (ERROR) # Other values: 50 (CRITICAL), 30 (WARNING), 20 (INFO), 10 (DEBUG) flushLevel: 30 # Flush immediately for WARNING logs and higher # The period of time, in seconds, between forced flushes. # Messages will not be delayed for longer than this time. # Default value: 5 seconds period: 5 # A handler that writes logs to stderr. Unused by default, but can be used # instead of "buffer" and "file" in the logger handlers. console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO twisted: # We send the twisted logging directly to the file handler, # to work around https://github.com/matrix-org/synapse/issues/3471 # when using "buffer" logger. Use "console" to log to stderr instead. handlers: [file] propagate: false root: level: INFO # Write logs to the `buffer` handler, which will buffer them together in memory, # then write them to a file. # # Replace "buffer" with "console" to log to stderr instead. (Note that you'll # also need to update the configuration for the `twisted` logger above, in # this case.) # handlers: [buffer] disable_existing_loggers: false synapse-1.53.0/docs/server_notices.md000066400000000000000000000045631420514467300176040ustar00rootroot00000000000000# Server Notices 'Server Notices' are a new feature introduced in Synapse 0.30. They provide a channel whereby server administrators can send messages to users on the server. They are used as part of communication of the server polices (see [Consent Tracking](consent_tracking.md)), however the intention is that they may also find a use for features such as "Message of the day". This is a feature specific to Synapse, but it uses standard Matrix communication mechanisms, so should work with any Matrix client. ## User experience When the user is first sent a server notice, they will get an invitation to a room (typically called 'Server Notices', though this is configurable in `homeserver.yaml`). They will be **unable to reject** this invitation - attempts to do so will receive an error. Once they accept the invitation, they will see the notice message in the room history; it will appear to have come from the 'server notices user' (see below). The user is prevented from sending any messages in this room by the power levels. Having joined the room, the user can leave the room if they want. Subsequent server notices will then cause a new room to be created. ## Synapse configuration Server notices come from a specific user id on the server. Server administrators are free to choose the user id - something like `server` is suggested, meaning the notices will come from `@server:`. Once the Server Notices user is configured, that user id becomes a special, privileged user, so administrators should ensure that **it is not already allocated**. In order to support server notices, it is necessary to add some configuration to the `homeserver.yaml` file. In particular, you should add a `server_notices` section, which should look like this: ```yaml server_notices: system_mxid_localpart: server system_mxid_display_name: "Server Notices" system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ" room_name: "Server Notices" ``` The only compulsory setting is `system_mxid_localpart`, which defines the user id of the Server Notices user, as above. `room_name` defines the name of the room which will be created. `system_mxid_display_name` and `system_mxid_avatar_url` can be used to set the displayname and avatar of the Server Notices user. ## Sending notices To send server notices to users you can use the [admin_api](admin_api/server_notices.md). synapse-1.53.0/docs/setup/000077500000000000000000000000001420514467300153605ustar00rootroot00000000000000synapse-1.53.0/docs/setup/forward_proxy.md000066400000000000000000000053051420514467300206120ustar00rootroot00000000000000# Using a forward proxy with Synapse You can use Synapse with a forward or outbound proxy. An example of when this is necessary is in corporate environments behind a DMZ (demilitarized zone). Synapse supports routing outbound HTTP(S) requests via a proxy. Only HTTP(S) proxy is supported, not SOCKS proxy or anything else. ## Configure The `http_proxy`, `https_proxy`, `no_proxy` environment variables are used to specify proxy settings. The environment variable is not case sensitive. - `http_proxy`: Proxy server to use for HTTP requests. - `https_proxy`: Proxy server to use for HTTPS requests. - `no_proxy`: Comma-separated list of hosts, IP addresses, or IP ranges in CIDR format which should not use the proxy. Synapse will directly connect to these hosts. The `http_proxy` and `https_proxy` environment variables have the form: `[scheme://][:@][:]` - Supported schemes are `http://` and `https://`. The default scheme is `http://` for compatibility reasons; it is recommended to set a scheme. If scheme is set to `https://` the connection uses TLS between Synapse and the proxy. **NOTE**: Synapse validates the certificates. If the certificate is not valid, then the connection is dropped. - Default port if not given is `1080`. - Username and password are optional and will be used to authenticate against the proxy. **Examples** - HTTP_PROXY=http://USERNAME:PASSWORD@10.0.1.1:8080/ - HTTPS_PROXY=http://USERNAME:PASSWORD@proxy.example.com:8080/ - NO_PROXY=master.hostname.example.com,10.1.0.0/16,172.30.0.0/16 **NOTE**: Synapse does not apply the IP blacklist to connections through the proxy (since the DNS resolution is done by the proxy). It is expected that the proxy or firewall will apply blacklisting of IP addresses. ## Connection types The proxy will be **used** for: - push - url previews - phone-home stats - recaptcha validation - CAS auth validation - OpenID Connect - Outbound federation - Federation (checking public key revocation) - Fetching public keys of other servers - Downloading remote media It will **not be used** for: - Application Services - Identity servers - In worker configurations - connections between workers - connections from workers to Redis ## Troubleshooting If a proxy server is used with TLS (HTTPS) and no connections are established, it is most likely due to the proxy's certificates. To test this, the validation in Synapse can be deactivated. **NOTE**: This has an impact on security and is for testing purposes only! To deactivate the certificate validation, the following setting must be made in [homserver.yaml](../usage/configuration/homeserver_sample_config.md). ```yaml use_insecure_ssl_client_just_for_testing_do_not_use: true ``` synapse-1.53.0/docs/setup/installation.md000066400000000000000000000457251420514467300204200ustar00rootroot00000000000000# Installation Instructions ## Choosing your server name It is important to choose the name for your server before you install Synapse, because it cannot be changed later. The server name determines the "domain" part of user-ids for users on your server: these will all be of the format `@user:my.domain.name`. It also determines how other matrix servers will reach yours for federation. For a test configuration, set this to the hostname of your server. For a more production-ready setup, you will probably want to specify your domain (`example.com`) rather than a matrix-specific hostname here (in the same way that your email address is probably `user@example.com` rather than `user@email.example.com`) - but doing so may require more advanced setup: see [Setting up Federation](../federate.md). ## Installing Synapse ### Prebuilt packages Prebuilt packages are available for a number of platforms. These are recommended for most users. #### Docker images and Ansible playbooks There is an official synapse image available at which can be used with the docker-compose file available at [contrib/docker](https://github.com/matrix-org/synapse/tree/develop/contrib/docker). Further information on this including configuration options is available in the README on hub.docker.com. Alternatively, Andreas Peters (previously Silvio Fricke) has contributed a Dockerfile to automate a synapse server in a single Docker image, at Slavi Pantaleev has created an Ansible playbook, which installs the offical Docker image of Matrix Synapse along with many other Matrix-related services (Postgres database, Element, coturn, ma1sd, SSL support, etc.). For more details, see #### Debian/Ubuntu ##### Matrix.org packages Matrix.org provides Debian/Ubuntu packages of Synapse, for the amd64 architecture via . To install the latest release: ```sh sudo apt install -y lsb-release wget apt-transport-https sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list sudo apt update sudo apt install matrix-synapse-py3 ``` Packages are also published for release candidates. To enable the prerelease channel, add `prerelease` to the `sources.list` line. For example: ```sh sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main prerelease" | sudo tee /etc/apt/sources.list.d/matrix-org.list sudo apt update sudo apt install matrix-synapse-py3 ``` The fingerprint of the repository signing key (as shown by `gpg /usr/share/keyrings/matrix-org-archive-keyring.gpg`) is `AAF9AE843A7584B5A3E4CD2BCF45A512DE2DA058`. When installing with Debian packages, you might prefer to place files in `/etc/matrix-synapse/conf.d/` to override your configuration without editing the main configuration file at `/etc/matrix-synapse/homeserver.yaml`. By doing that, you won't be asked if you want to replace your configuration file when you upgrade the Debian package to a later version. ##### Downstream Debian packages We do not recommend using the packages from the default Debian `buster` repository at this time, as they are old and suffer from known security vulnerabilities. You can install the latest version of Synapse from [our repository](#matrixorg-packages) or from `buster-backports`. Please see the [Debian documentation](https://backports.debian.org/Instructions/) for information on how to use backports. If you are using Debian `sid` or testing, Synapse is available in the default repositories and it should be possible to install it simply with: ```sh sudo apt install matrix-synapse ``` ##### Downstream Ubuntu packages We do not recommend using the packages in the default Ubuntu repository at this time, as they are old and suffer from known security vulnerabilities. The latest version of Synapse can be installed from [our repository](#matrixorg-packages). #### Fedora Synapse is in the Fedora repositories as `matrix-synapse`: ```sh sudo dnf install matrix-synapse ``` Oleg Girko provides Fedora RPMs at #### OpenSUSE Synapse is in the OpenSUSE repositories as `matrix-synapse`: ```sh sudo zypper install matrix-synapse ``` #### SUSE Linux Enterprise Server Unofficial package are built for SLES 15 in the openSUSE:Backports:SLE-15 repository at #### ArchLinux The quickest way to get up and running with ArchLinux is probably with the community package , which should pull in most of the necessary dependencies. pip may be outdated (6.0.7-1 and needs to be upgraded to 6.0.8-1 ): ```sh sudo pip install --upgrade pip ``` If you encounter an error with lib bcrypt causing an Wrong ELF Class: ELFCLASS32 (x64 Systems), you may need to reinstall py-bcrypt to correctly compile it under the right architecture. (This should not be needed if installing under virtualenv): ```sh sudo pip uninstall py-bcrypt sudo pip install py-bcrypt ``` #### Void Linux Synapse can be found in the void repositories as 'synapse': ```sh xbps-install -Su xbps-install -S synapse ``` #### FreeBSD Synapse can be installed via FreeBSD Ports or Packages contributed by Brendan Molloy from: - Ports: `cd /usr/ports/net-im/py-matrix-synapse && make install clean` - Packages: `pkg install py38-matrix-synapse` #### OpenBSD As of OpenBSD 6.7 Synapse is available as a pre-compiled binary. The filesystem underlying the homeserver directory (defaults to `/var/synapse`) has to be mounted with `wxallowed` (cf. `mount(8)`), so creating a separate filesystem and mounting it to `/var/synapse` should be taken into consideration. Installing Synapse: ```sh doas pkg_add synapse ``` #### NixOS Robin Lambertz has packaged Synapse for NixOS at: ### Installing as a Python module from PyPI It's also possible to install Synapse as a Python module from PyPI. When following this route please make sure that the [Platform-specific prerequisites](#platform-specific-prerequisites) are already installed. System requirements: - POSIX-compliant system (tested on Linux & OS X) - Python 3.7 or later, up to Python 3.10. - At least 1GB of free RAM if you want to join large public rooms like #matrix:matrix.org To install the Synapse homeserver run: ```sh mkdir -p ~/synapse virtualenv -p python3 ~/synapse/env source ~/synapse/env/bin/activate pip install --upgrade pip pip install --upgrade setuptools pip install matrix-synapse ``` This will download Synapse from [PyPI](https://pypi.org/project/matrix-synapse) and install it, along with the python libraries it uses, into a virtual environment under `~/synapse/env`. Feel free to pick a different directory if you prefer. This Synapse installation can then be later upgraded by using pip again with the update flag: ```sh source ~/synapse/env/bin/activate pip install -U matrix-synapse ``` Before you can start Synapse, you will need to generate a configuration file. To do this, run (in your virtualenv, as before): ```sh cd ~/synapse python -m synapse.app.homeserver \ --server-name my.domain.name \ --config-path homeserver.yaml \ --generate-config \ --report-stats=[yes|no] ``` ... substituting an appropriate value for `--server-name`. This command will generate you a config file that you can then customise, but it will also generate a set of keys for you. These keys will allow your homeserver to identify itself to other homeserver, so don't lose or delete them. It would be wise to back them up somewhere safe. (If, for whatever reason, you do need to change your homeserver's keys, you may find that other homeserver have the old key cached. If you update the signing key, you should change the name of the key in the `.signing.key` file (the second word) to something different. See the [spec](https://matrix.org/docs/spec/server_server/latest.html#retrieving-server-keys) for more information on key management). To actually run your new homeserver, pick a working directory for Synapse to run (e.g. `~/synapse`), and: ```sh cd ~/synapse source env/bin/activate synctl start ``` #### Platform-specific prerequisites Synapse is written in Python but some of the libraries it uses are written in C. So before we can install Synapse itself we need a working C compiler and the header files for Python C extensions. ##### Debian/Ubuntu/Raspbian Installing prerequisites on Ubuntu or Debian: ```sh sudo apt install build-essential python3-dev libffi-dev \ python3-pip python3-setuptools sqlite3 \ libssl-dev virtualenv libjpeg-dev libxslt1-dev ``` ##### ArchLinux Installing prerequisites on ArchLinux: ```sh sudo pacman -S base-devel python python-pip \ python-setuptools python-virtualenv sqlite3 ``` ##### CentOS/Fedora Installing prerequisites on CentOS or Fedora Linux: ```sh sudo dnf install libtiff-devel libjpeg-devel libzip-devel freetype-devel \ libwebp-devel libxml2-devel libxslt-devel libpq-devel \ python3-virtualenv libffi-devel openssl-devel python3-devel sudo dnf groupinstall "Development Tools" ``` ##### macOS Installing prerequisites on macOS: You may need to install the latest Xcode developer tools: ```sh xcode-select --install ``` On ARM-based Macs you may need to explicitly install libjpeg which is a pillow dependency. You can use Homebrew (https://brew.sh): ```sh brew install jpeg ``` On macOS Catalina (10.15) you may need to explicitly install OpenSSL via brew and inform `pip` about it so that `psycopg2` builds: ```sh brew install openssl@1.1 export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include" ``` ##### OpenSUSE Installing prerequisites on openSUSE: ```sh sudo zypper in -t pattern devel_basis sudo zypper in python-pip python-setuptools sqlite3 python-virtualenv \ python-devel libffi-devel libopenssl-devel libjpeg62-devel ``` ##### OpenBSD A port of Synapse is available under `net/synapse`. The filesystem underlying the homeserver directory (defaults to `/var/synapse`) has to be mounted with `wxallowed` (cf. `mount(8)`), so creating a separate filesystem and mounting it to `/var/synapse` should be taken into consideration. To be able to build Synapse's dependency on python the `WRKOBJDIR` (cf. `bsd.port.mk(5)`) for building python, too, needs to be on a filesystem mounted with `wxallowed` (cf. `mount(8)`). Creating a `WRKOBJDIR` for building python under `/usr/local` (which on a default OpenBSD installation is mounted with `wxallowed`): ```sh doas mkdir /usr/local/pobj_wxallowed ``` Assuming `PORTS_PRIVSEP=Yes` (cf. `bsd.port.mk(5)`) and `SUDO=doas` are configured in `/etc/mk.conf`: ```sh doas chown _pbuild:_pbuild /usr/local/pobj_wxallowed ``` Setting the `WRKOBJDIR` for building python: ```sh echo WRKOBJDIR_lang/python/3.7=/usr/local/pobj_wxallowed \\nWRKOBJDIR_lang/python/2.7=/usr/local/pobj_wxallowed >> /etc/mk.conf ``` Building Synapse: ```sh cd /usr/ports/net/synapse make install ``` ##### Windows Running Synapse natively on Windows is not officially supported. If you wish to run or develop Synapse on Windows, the Windows Subsystem for Linux provides a Linux environment which is capable of using the Debian, Fedora, or source installation methods. More information about WSL can be found at for Windows 10/11 and for Windows Server. ## Setting up Synapse Once you have installed synapse as above, you will need to configure it. ### Using PostgreSQL By default Synapse uses an [SQLite](https://sqlite.org/) database and in doing so trades performance for convenience. Almost all installations should opt to use [PostgreSQL](https://www.postgresql.org) instead. Advantages include: - significant performance improvements due to the superior threading and caching model, smarter query optimiser - allowing the DB to be run on separate hardware For information on how to install and use PostgreSQL in Synapse, please see [Using Postgres](../postgres.md) SQLite is only acceptable for testing purposes. SQLite should not be used in a production server. Synapse will perform poorly when using SQLite, especially when participating in large rooms. ### TLS certificates The default configuration exposes a single HTTP port on the local interface: `http://localhost:8008`. It is suitable for local testing, but for any practical use, you will need Synapse's APIs to be served over HTTPS. The recommended way to do so is to set up a reverse proxy on port `8448`. You can find documentation on doing so in [the reverse proxy documentation](../reverse_proxy.md). Alternatively, you can configure Synapse to expose an HTTPS port. To do so, you will need to edit `homeserver.yaml`, as follows: - First, under the `listeners` section, uncomment the configuration for the TLS-enabled listener. (Remove the hash sign (`#`) at the start of each line). The relevant lines are like this: ```yaml - port: 8448 type: http tls: true resources: - names: [client, federation] ``` - You will also need to uncomment the `tls_certificate_path` and `tls_private_key_path` lines under the `TLS` section. You will need to manage provisioning of these certificates yourself. If you are using your own certificate, be sure to use a `.pem` file that includes the full certificate chain including any intermediate certificates (for instance, if using certbot, use `fullchain.pem` as your certificate, not `cert.pem`). For a more detailed guide to configuring your server for federation, see [Federation](../federate.md). ### Client Well-Known URI Setting up the client Well-Known URI is optional but if you set it up, it will allow users to enter their full username (e.g. `@user:`) into clients which support well-known lookup to automatically configure the homeserver and identity server URLs. This is useful so that users don't have to memorize or think about the actual homeserver URL you are using. The URL `https:///.well-known/matrix/client` should return JSON in the following format. ```json { "m.homeserver": { "base_url": "https://" } } ``` It can optionally contain identity server information as well. ```json { "m.homeserver": { "base_url": "https://" }, "m.identity_server": { "base_url": "https://" } } ``` To work in browser based clients, the file must be served with the appropriate Cross-Origin Resource Sharing (CORS) headers. A recommended value would be `Access-Control-Allow-Origin: *` which would allow all browser based clients to view it. In nginx this would be something like: ```nginx location /.well-known/matrix/client { return 200 '{"m.homeserver": {"base_url": "https://"}}'; default_type application/json; add_header Access-Control-Allow-Origin *; } ``` You should also ensure the `public_baseurl` option in `homeserver.yaml` is set correctly. `public_baseurl` should be set to the URL that clients will use to connect to your server. This is the same URL you put for the `m.homeserver` `base_url` above. ```yaml public_baseurl: "https://" ``` ### Email It is desirable for Synapse to have the capability to send email. This allows Synapse to send password reset emails, send verifications when an email address is added to a user's account, and send email notifications to users when they receive new messages. To configure an SMTP server for Synapse, modify the configuration section headed `email`, and be sure to have at least the `smtp_host`, `smtp_port` and `notif_from` fields filled out. You may also need to set `smtp_user`, `smtp_pass`, and `require_transport_security`. If email is not configured, password reset, registration and notifications via email will be disabled. ### Registering a user The easiest way to create a new user is to do so from a client like [Element](https://element.io/). Alternatively, you can do so from the command line. This can be done as follows: 1. If synapse was installed via pip, activate the virtualenv as follows (if Synapse was installed via a prebuilt package, `register_new_matrix_user` should already be on the search path): ```sh cd ~/synapse source env/bin/activate synctl start # if not already running ``` 2. Run the following command: ```sh register_new_matrix_user -c homeserver.yaml http://localhost:8008 ``` This will prompt you to add details for the new user, and will then connect to the running Synapse to create the new user. For example: ``` New user localpart: erikj Password: Confirm password: Make admin [no]: Success! ``` This process uses a setting `registration_shared_secret` in `homeserver.yaml`, which is shared between Synapse itself and the `register_new_matrix_user` script. It doesn't matter what it is (a random value is generated by `--generate-config`), but it should be kept secret, as anyone with knowledge of it can register users, including admin accounts, on your server even if `enable_registration` is `false`. ### Setting up a TURN server For reliable VoIP calls to be routed via this homeserver, you MUST configure a TURN server. See [TURN setup](../turn-howto.md) for details. ### URL previews Synapse includes support for previewing URLs, which is disabled by default. To turn it on you must enable the `url_preview_enabled: True` config parameter and explicitly specify the IP ranges that Synapse is not allowed to spider for previewing in the `url_preview_ip_range_blacklist` configuration parameter. This is critical from a security perspective to stop arbitrary Matrix users spidering 'internal' URLs on your network. At the very least we recommend that your loopback and RFC1918 IP addresses are blacklisted. This also requires the optional `lxml` python dependency to be installed. This in turn requires the `libxml2` library to be available - on Debian/Ubuntu this means `apt-get install libxml2-dev`, or equivalent for your OS. ### Troubleshooting Installation `pip` seems to leak *lots* of memory during installation. For instance, a Linux host with 512MB of RAM may run out of memory whilst installing Twisted. If this happens, you will have to individually install the dependencies which are failing, e.g.: ```sh pip install twisted ``` If you have any other problems, feel free to ask in [#synapse:matrix.org](https://matrix.to/#/#synapse:matrix.org). synapse-1.53.0/docs/spam_checker.md000066400000000000000000000072211420514467300171700ustar00rootroot00000000000000

This page of the Synapse documentation is now deprecated. For up to date documentation on setting up or writing a spam checker module, please see this page.

# Handling spam in Synapse Synapse has support to customize spam checking behavior. It can plug into a variety of events and affect how they are presented to users on your homeserver. The spam checking behavior is implemented as a Python class, which must be able to be imported by the running Synapse. ## Python spam checker class The Python class is instantiated with two objects: * Any configuration (see below). * An instance of `synapse.module_api.ModuleApi`. It then implements methods which return a boolean to alter behavior in Synapse. All the methods must be defined. There's a generic method for checking every event (`check_event_for_spam`), as well as some specific methods: * `user_may_invite` * `user_may_create_room` * `user_may_create_room_alias` * `user_may_publish_room` * `check_username_for_spam` * `check_registration_for_spam` * `check_media_file_for_spam` The details of each of these methods (as well as their inputs and outputs) are documented in the `synapse.events.spamcheck.SpamChecker` class. The `ModuleApi` class provides a way for the custom spam checker class to call back into the homeserver internals. Additionally, a `parse_config` method is mandatory and receives the plugin config dictionary. After parsing, It must return an object which will be passed to `__init__` later. ### Example ```python from synapse.spam_checker_api import RegistrationBehaviour class ExampleSpamChecker: def __init__(self, config, api): self.config = config self.api = api @staticmethod def parse_config(config): return config async def check_event_for_spam(self, foo): return False # allow all events async def user_may_invite(self, inviter_userid, invitee_userid, room_id): return True # allow all invites async def user_may_create_room(self, userid): return True # allow all room creations async def user_may_create_room_alias(self, userid, room_alias): return True # allow all room aliases async def user_may_publish_room(self, userid, room_id): return True # allow publishing of all rooms async def check_username_for_spam(self, user_profile): return False # allow all usernames async def check_registration_for_spam( self, email_threepid, username, request_info, auth_provider_id, ): return RegistrationBehaviour.ALLOW # allow all registrations async def check_media_file_for_spam(self, file_wrapper, file_info): return False # allow all media ``` ## Configuration Modify the `spam_checker` section of your `homeserver.yaml` in the following manner: Create a list entry with the keys `module` and `config`. * `module` should point to the fully qualified Python class that implements your custom logic, e.g. `my_module.ExampleSpamChecker`. * `config` is a dictionary that gets passed to the spam checker class. ### Example This section might look like: ```yaml spam_checker: - module: my_module.ExampleSpamChecker config: # Enable or disable a specific option in ExampleSpamChecker. my_custom_option: true ``` More spam checkers can be added in tandem by appending more items to the list. An action is blocked when at least one of the configured spam checkers flags it. ## Examples The [Mjolnir](https://github.com/matrix-org/mjolnir) project is a full fledged example using the Synapse spam checking API, including a bot for dynamic configuration. synapse-1.53.0/docs/sso_mapping_providers.md000066400000000000000000000255761420514467300211750ustar00rootroot00000000000000# SSO Mapping Providers A mapping provider is a Python class (loaded via a Python module) that works out how to map attributes of a SSO response to Matrix-specific user attributes. Details such as user ID localpart, displayname, and even avatar URLs are all things that can be mapped from talking to a SSO service. As an example, a SSO service may return the email address "john.smith@example.com" for a user, whereas Synapse will need to figure out how to turn that into a displayname when creating a Matrix user for this individual. It may choose `John Smith`, or `Smith, John [Example.com]` or any number of variations. As each Synapse configuration may want something different, this is where SAML mapping providers come into play. SSO mapping providers are currently supported for OpenID and SAML SSO configurations. Please see the details below for how to implement your own. It is up to the mapping provider whether the user should be assigned a predefined Matrix ID based on the SSO attributes, or if the user should be allowed to choose their own username. In the first case - where users are automatically allocated a Matrix ID - it is the responsibility of the mapping provider to normalise the SSO attributes and map them to a valid Matrix ID. The [specification for Matrix IDs](https://matrix.org/docs/spec/appendices#user-identifiers) has some information about what is considered valid. If the mapping provider does not assign a Matrix ID, then Synapse will automatically serve an HTML page allowing the user to pick their own username. External mapping providers are provided to Synapse in the form of an external Python module. You can retrieve this module from [PyPI](https://pypi.org) or elsewhere, but it must be importable via Synapse (e.g. it must be in the same virtualenv as Synapse). The Synapse config is then modified to point to the mapping provider (and optionally provide additional configuration for it). ## OpenID Mapping Providers The OpenID mapping provider can be customized by editing the `oidc_config.user_mapping_provider.module` config option. `oidc_config.user_mapping_provider.config` allows you to provide custom configuration options to the module. Check with the module's documentation for what options it provides (if any). The options listed by default are for the user mapping provider built in to Synapse. If using a custom module, you should comment these options out and use those specified by the module instead. ### Building a Custom OpenID Mapping Provider A custom mapping provider must specify the following methods: * `def __init__(self, parsed_config)` - Arguments: - `parsed_config` - A configuration object that is the return value of the `parse_config` method. You should set any configuration options needed by the module here. * `def parse_config(config)` - This method should have the `@staticmethod` decoration. - Arguments: - `config` - A `dict` representing the parsed content of the `oidc_config.user_mapping_provider.config` homeserver config option. Runs on homeserver startup. Providers should extract and validate any option values they need here. - Whatever is returned will be passed back to the user mapping provider module's `__init__` method during construction. * `def get_remote_user_id(self, userinfo)` - Arguments: - `userinfo` - A `authlib.oidc.core.claims.UserInfo` object to extract user information from. - This method must return a string, which is the unique, immutable identifier for the user. Commonly the `sub` claim of the response. * `async def map_user_attributes(self, userinfo, token, failures)` - This method must be async. - Arguments: - `userinfo` - A `authlib.oidc.core.claims.UserInfo` object to extract user information from. - `token` - A dictionary which includes information necessary to make further requests to the OpenID provider. - `failures` - An `int` that represents the amount of times the returned mxid localpart mapping has failed. This should be used to create a deduplicated mxid localpart which should be returned instead. For example, if this method returns `john.doe` as the value of `localpart` in the returned dict, and that is already taken on the homeserver, this method will be called again with the same parameters but with failures=1. The method should then return a different `localpart` value, such as `john.doe1`. - Returns a dictionary with two keys: - `localpart`: A string, used to generate the Matrix ID. If this is `None`, the user is prompted to pick their own username. This is only used during a user's first login. Once a localpart has been associated with a remote user ID (see `get_remote_user_id`) it cannot be updated. - `displayname`: An optional string, the display name for the user. * `async def get_extra_attributes(self, userinfo, token)` - This method must be async. - Arguments: - `userinfo` - A `authlib.oidc.core.claims.UserInfo` object to extract user information from. - `token` - A dictionary which includes information necessary to make further requests to the OpenID provider. - Returns a dictionary that is suitable to be serialized to JSON. This will be returned as part of the response during a successful login. Note that care should be taken to not overwrite any of the parameters usually returned as part of the [login response](https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-login). ### Default OpenID Mapping Provider Synapse has a built-in OpenID mapping provider if a custom provider isn't specified in the config. It is located at [`synapse.handlers.oidc.JinjaOidcMappingProvider`](https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/oidc.py). ## SAML Mapping Providers The SAML mapping provider can be customized by editing the `saml2_config.user_mapping_provider.module` config option. `saml2_config.user_mapping_provider.config` allows you to provide custom configuration options to the module. Check with the module's documentation for what options it provides (if any). The options listed by default are for the user mapping provider built in to Synapse. If using a custom module, you should comment these options out and use those specified by the module instead. ### Building a Custom SAML Mapping Provider A custom mapping provider must specify the following methods: * `def __init__(self, parsed_config, module_api)` - Arguments: - `parsed_config` - A configuration object that is the return value of the `parse_config` method. You should set any configuration options needed by the module here. - `module_api` - a `synapse.module_api.ModuleApi` object which provides the stable API available for extension modules. * `def parse_config(config)` - **This method should have the `@staticmethod` decoration.** - Arguments: - `config` - A `dict` representing the parsed content of the `saml_config.user_mapping_provider.config` homeserver config option. Runs on homeserver startup. Providers should extract and validate any option values they need here. - Whatever is returned will be passed back to the user mapping provider module's `__init__` method during construction. * `def get_saml_attributes(config)` - **This method should have the `@staticmethod` decoration.** - Arguments: - `config` - A object resulting from a call to `parse_config`. - Returns a tuple of two sets. The first set equates to the SAML auth response attributes that are required for the module to function, whereas the second set consists of those attributes which can be used if available, but are not necessary. * `def get_remote_user_id(self, saml_response, client_redirect_url)` - Arguments: - `saml_response` - A `saml2.response.AuthnResponse` object to extract user information from. - `client_redirect_url` - A string, the URL that the client will be redirected to. - This method must return a string, which is the unique, immutable identifier for the user. Commonly the `uid` claim of the response. * `def saml_response_to_user_attributes(self, saml_response, failures, client_redirect_url)` - Arguments: - `saml_response` - A `saml2.response.AuthnResponse` object to extract user information from. - `failures` - An `int` that represents the amount of times the returned mxid localpart mapping has failed. This should be used to create a deduplicated mxid localpart which should be returned instead. For example, if this method returns `john.doe` as the value of `mxid_localpart` in the returned dict, and that is already taken on the homeserver, this method will be called again with the same parameters but with failures=1. The method should then return a different `mxid_localpart` value, such as `john.doe1`. - `client_redirect_url` - A string, the URL that the client will be redirected to. - This method must return a dictionary, which will then be used by Synapse to build a new user. The following keys are allowed: * `mxid_localpart` - A string, the mxid localpart of the new user. If this is `None`, the user is prompted to pick their own username. This is only used during a user's first login. Once a localpart has been associated with a remote user ID (see `get_remote_user_id`) it cannot be updated. * `displayname` - The displayname of the new user. If not provided, will default to the value of `mxid_localpart`. * `emails` - A list of emails for the new user. If not provided, will default to an empty list. Alternatively it can raise a `synapse.api.errors.RedirectException` to redirect the user to another page. This is useful to prompt the user for additional information, e.g. if you want them to provide their own username. It is the responsibility of the mapping provider to either redirect back to `client_redirect_url` (including any additional information) or to complete registration using methods from the `ModuleApi`. ### Default SAML Mapping Provider Synapse has a built-in SAML mapping provider if a custom provider isn't specified in the config. It is located at [`synapse.handlers.saml.DefaultSamlMappingProvider`](https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/saml.py). synapse-1.53.0/docs/structured_logging.md000066400000000000000000000115121420514467300204540ustar00rootroot00000000000000# Structured Logging A structured logging system can be useful when your logs are destined for a machine to parse and process. By maintaining its machine-readable characteristics, it enables more efficient searching and aggregations when consumed by software such as the "ELK stack". Synapse's structured logging system is configured via the file that Synapse's `log_config` config option points to. The file should include a formatter which uses the `synapse.logging.TerseJsonFormatter` class included with Synapse and a handler which uses the above formatter. There is also a `synapse.logging.JsonFormatter` option which does not include a timestamp in the resulting JSON. This is useful if the log ingester adds its own timestamp. A structured logging configuration looks similar to the following: ```yaml version: 1 formatters: structured: class: synapse.logging.TerseJsonFormatter handlers: file: class: logging.handlers.TimedRotatingFileHandler formatter: structured filename: /path/to/my/logs/homeserver.log when: midnight backupCount: 3 # Does not include the current log file. encoding: utf8 loggers: synapse: level: INFO handlers: [remote] synapse.storage.SQL: level: WARNING ``` The above logging config will set Synapse as 'INFO' logging level by default, with the SQL layer at 'WARNING', and will log to a file, stored as JSON. It is also possible to figure Synapse to log to a remote endpoint by using the `synapse.logging.RemoteHandler` class included with Synapse. It takes the following arguments: - `host`: Hostname or IP address of the log aggregator. - `port`: Numerical port to contact on the host. - `maximum_buffer`: (Optional, defaults to 1000) The maximum buffer size to allow. A remote structured logging configuration looks similar to the following: ```yaml version: 1 formatters: structured: class: synapse.logging.TerseJsonFormatter handlers: remote: class: synapse.logging.RemoteHandler formatter: structured host: 10.1.2.3 port: 9999 loggers: synapse: level: INFO handlers: [remote] synapse.storage.SQL: level: WARNING ``` The above logging config will set Synapse as 'INFO' logging level by default, with the SQL layer at 'WARNING', and will log JSON formatted messages to a remote endpoint at 10.1.2.3:9999. ## Upgrading from legacy structured logging configuration Versions of Synapse prior to v1.23.0 included a custom structured logging configuration which is deprecated. It used a `structured: true` flag and configured `drains` instead of ``handlers`` and `formatters`. Synapse currently automatically converts the old configuration to the new configuration, but this will be removed in a future version of Synapse. The following reference can be used to update your configuration. Based on the drain `type`, we can pick a new handler: 1. For a type of `console`, `console_json`, or `console_json_terse`: a handler with a class of `logging.StreamHandler` and a `stream` of `ext://sys.stdout` or `ext://sys.stderr` should be used. 2. For a type of `file` or `file_json`: a handler of `logging.FileHandler` with a location of the file path should be used. 3. For a type of `network_json_terse`: a handler of `synapse.logging.RemoteHandler` with the host and port should be used. Then based on the drain `type` we can pick a new formatter: 1. For a type of `console` or `file` no formatter is necessary. 2. For a type of `console_json` or `file_json`: a formatter of `synapse.logging.JsonFormatter` should be used. 3. For a type of `console_json_terse` or `network_json_terse`: a formatter of `synapse.logging.TerseJsonFormatter` should be used. For each new handler and formatter they should be added to the logging configuration and then assigned to either a logger or the root logger. An example legacy configuration: ```yaml structured: true loggers: synapse: level: INFO synapse.storage.SQL: level: WARNING drains: console: type: console location: stdout file: type: file_json location: homeserver.log ``` Would be converted into a new configuration: ```yaml version: 1 formatters: json: class: synapse.logging.JsonFormatter handlers: console: class: logging.StreamHandler stream: ext://sys.stdout file: class: logging.FileHandler formatter: json filename: homeserver.log loggers: synapse: level: INFO handlers: [console, file] synapse.storage.SQL: level: WARNING ``` The new logging configuration is a bit more verbose, but significantly more flexible. It allows for configuration that were not previously possible, such as sending plain logs over the network, or using different handlers for different modules. synapse-1.53.0/docs/synctl_workers.md000066400000000000000000000021531420514467300176330ustar00rootroot00000000000000### Using synctl with workers If you want to use `synctl` to manage your synapse processes, you will need to create an an additional configuration file for the main synapse process. That configuration should look like this: ```yaml worker_app: synapse.app.homeserver ``` Additionally, each worker app must be configured with the name of a "pid file", to which it will write its process ID when it starts. For example, for a synchrotron, you might write: ```yaml worker_pid_file: /home/matrix/synapse/worker1.pid ``` Finally, to actually run your worker-based synapse, you must pass synctl the `-a` commandline option to tell it to operate on all the worker configurations found in the given directory, e.g.: ```sh synctl -a $CONFIG/workers start ``` Currently one should always restart all workers when restarting or upgrading synapse, unless you explicitly know it's safe not to. For instance, restarting synapse without restarting all the synchrotrons may result in broken typing notifications. To manipulate a specific worker, you pass the -w option to synctl: ```sh synctl -w $CONFIG/workers/worker1.yaml restart ``` synapse-1.53.0/docs/systemd-with-workers/000077500000000000000000000000001420514467300203535ustar00rootroot00000000000000synapse-1.53.0/docs/systemd-with-workers/README.md000066400000000000000000000102371420514467300216350ustar00rootroot00000000000000# Setting up Synapse with Workers and Systemd This is a setup for managing synapse with systemd, including support for managing workers. It provides a `matrix-synapse` service for the master, as well as a `matrix-synapse-worker@` service template for any workers you require. Additionally, to group the required services, it sets up a `matrix-synapse.target`. See the folder [system](https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/) for the systemd unit files. The folder [workers](https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/workers/) contains an example configuration for the `federation_reader` worker. ## Synapse configuration files See [the worker documentation](../workers.md) for information on how to set up the configuration files and reverse-proxy correctly. Below is a sample `federation_reader` worker configuration file. ```yaml {{#include workers/federation_reader.yaml}} ``` Systemd manages daemonization itself, so ensure that none of the configuration files set either `daemonize` or `worker_daemonize`. The config files of all workers are expected to be located in `/etc/matrix-synapse/workers`. If you want to use a different location, edit the provided `*.service` files accordingly. There is no need for a separate configuration file for the master process. ## Set up 1. Adjust synapse configuration files as above. 1. Copy the `*.service` and `*.target` files in [system](https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/) to `/etc/systemd/system`. 1. Run `systemctl daemon-reload` to tell systemd to load the new unit files. 1. Run `systemctl enable matrix-synapse.service`. This will configure the synapse master process to be started as part of the `matrix-synapse.target` target. 1. For each worker process to be enabled, run `systemctl enable matrix-synapse-worker@.service`. For each ``, there should be a corresponding configuration file. `/etc/matrix-synapse/workers/.yaml`. 1. Start all the synapse processes with `systemctl start matrix-synapse.target`. 1. Tell systemd to start synapse on boot with `systemctl enable matrix-synapse.target`. ## Usage Once the services are correctly set up, you can use the following commands to manage your synapse installation: ```sh # Restart Synapse master and all workers systemctl restart matrix-synapse.target # Stop Synapse and all workers systemctl stop matrix-synapse.target # Restart the master alone systemctl start matrix-synapse.service # Restart a specific worker (eg. federation_reader); the master is # unaffected by this. systemctl restart matrix-synapse-worker@federation_reader.service # Add a new worker (assuming all configs are set up already) systemctl enable matrix-synapse-worker@federation_writer.service systemctl restart matrix-synapse.target ``` ## Hardening **Optional:** If further hardening is desired, the file `override-hardened.conf` may be copied from [contrib/systemd/override-hardened.conf](https://github.com/matrix-org/synapse/tree/develop/contrib/systemd/) in this repository to the location `/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf` (the directory may have to be created). It enables certain sandboxing features in systemd to further secure the synapse service. You may read the comments to understand what the override file is doing. The same file will need to be copied to `/etc/systemd/system/matrix-synapse-worker@.service.d/override-hardened-worker.conf` (this directory may also have to be created) in order to apply the same hardening options to any worker processes. Once these files have been copied to their appropriate locations, simply reload systemd's manager config files and restart all Synapse services to apply the hardening options. They will automatically be applied at every restart as long as the override files are present at the specified locations. ```sh systemctl daemon-reload # Restart services systemctl restart matrix-synapse.target ``` In order to see their effect, you may run `systemd-analyze security matrix-synapse.service` before and after applying the hardening options to see the changes being applied at a glance. synapse-1.53.0/docs/systemd-with-workers/system/000077500000000000000000000000001420514467300216775ustar00rootroot00000000000000synapse-1.53.0/docs/systemd-with-workers/system/matrix-synapse-worker@.service000066400000000000000000000015671420514467300276650ustar00rootroot00000000000000[Unit] Description=Synapse %i AssertPathExists=/etc/matrix-synapse/workers/%i.yaml # This service should be restarted when the synapse target is restarted. PartOf=matrix-synapse.target ReloadPropagatedFrom=matrix-synapse.target # if this is started at the same time as the main, let the main process start # first, to initialise the database schema. After=matrix-synapse.service [Service] Type=notify NotifyAccess=main User=matrix-synapse WorkingDirectory=/var/lib/matrix-synapse EnvironmentFile=-/etc/default/matrix-synapse ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.generic_worker --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --config-path=/etc/matrix-synapse/workers/%i.yaml ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=matrix-synapse-%i [Install] WantedBy=matrix-synapse.target synapse-1.53.0/docs/systemd-with-workers/system/matrix-synapse.service000066400000000000000000000014551420514467300262520ustar00rootroot00000000000000[Unit] Description=Synapse master # This service should be restarted when the synapse target is restarted. PartOf=matrix-synapse.target ReloadPropagatedFrom=matrix-synapse.target [Service] Type=notify NotifyAccess=main User=matrix-synapse WorkingDirectory=/var/lib/matrix-synapse EnvironmentFile=-/etc/default/matrix-synapse ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=matrix-synapse [Install] WantedBy=matrix-synapse.target synapse-1.53.0/docs/systemd-with-workers/system/matrix-synapse.target000066400000000000000000000001441420514467300260720ustar00rootroot00000000000000[Unit] Description=Synapse parent target After=network.target [Install] WantedBy=multi-user.target synapse-1.53.0/docs/systemd-with-workers/workers/000077500000000000000000000000001420514467300220475ustar00rootroot00000000000000synapse-1.53.0/docs/systemd-with-workers/workers/federation_reader.yaml000066400000000000000000000004721420514467300264000ustar00rootroot00000000000000worker_app: synapse.app.federation_reader worker_name: federation_reader1 worker_replication_host: 127.0.0.1 worker_replication_http_port: 9093 worker_listeners: - type: http port: 8011 resources: - names: [federation] worker_log_config: /etc/matrix-synapse/federation-reader-log.yaml synapse-1.53.0/docs/tcp_replication.md000066400000000000000000000223611420514467300177250ustar00rootroot00000000000000# TCP Replication ## Motivation Previously the workers used an HTTP long poll mechanism to get updates from the master, which had the problem of causing a lot of duplicate work on the server. This TCP protocol replaces those APIs with the aim of increased efficiency. ## Overview The protocol is based on fire and forget, line based commands. An example flow would be (where '>' indicates master to worker and '<' worker to master flows): > SERVER example.com < REPLICATE > POSITION events master 53 53 > RDATA events master 54 ["$foo1:bar.com", ...] > RDATA events master 55 ["$foo4:bar.com", ...] The example shows the server accepting a new connection and sending its identity with the `SERVER` command, followed by the client server to respond with the position of all streams. The server then periodically sends `RDATA` commands which have the format `RDATA `, where the format of `` is defined by the individual streams. The `` is the name of the Synapse process that generated the data (usually "master"). Error reporting happens by either the client or server sending an ERROR command, and usually the connection will be closed. Since the protocol is a simple line based, its possible to manually connect to the server using a tool like netcat. A few things should be noted when manually using the protocol: - The federation stream is only available if federation sending has been disabled on the main process. - The server will only time connections out that have sent a `PING` command. If a ping is sent then the connection will be closed if no further commands are receieved within 15s. Both the client and server protocol implementations will send an initial PING on connection and ensure at least one command every 5s is sent (not necessarily `PING`). - `RDATA` commands *usually* include a numeric token, however if the stream has multiple rows to replicate per token the server will send multiple `RDATA` commands, with all but the last having a token of `batch`. See the documentation on `commands.RdataCommand` for further details. ## Architecture The basic structure of the protocol is line based, where the initial word of each line specifies the command. The rest of the line is parsed based on the command. For example, the RDATA command is defined as: RDATA (Note that may contains spaces, but cannot contain newlines.) Blank lines are ignored. ### Keep alives Both sides are expected to send at least one command every 5s or so, and should send a `PING` command if necessary. If either side do not receive a command within e.g. 15s then the connection should be closed. Because the server may be connected to manually using e.g. netcat, the timeouts aren't enabled until an initial `PING` command is seen. Both the client and server implementations below send a `PING` command immediately on connection to ensure the timeouts are enabled. This ensures that both sides can quickly realize if the tcp connection has gone and handle the situation appropriately. ### Start up When a new connection is made, the server: - Sends a `SERVER` command, which includes the identity of the server, allowing the client to detect if its connected to the expected server - Sends a `PING` command as above, to enable the client to time out connections promptly. The client: - Sends a `NAME` command, allowing the server to associate a human friendly name with the connection. This is optional. - Sends a `PING` as above - Sends a `REPLICATE` to get the current position of all streams. - On receipt of a `SERVER` command, checks that the server name matches the expected server name. ### Error handling If either side detects an error it can send an `ERROR` command and close the connection. If the client side loses the connection to the server it should reconnect, following the steps above. ### Congestion If the server sends messages faster than the client can consume them the server will first buffer a (fairly large) number of commands and then disconnect the client. This ensures that we don't queue up an unbounded number of commands in memory and gives us a potential oppurtunity to squawk loudly. When/if the client recovers it can reconnect to the server and ask for missed messages. ### Reliability In general the replication stream should be considered an unreliable transport since e.g. commands are not resent if the connection disappears. The exception to that are the replication streams, i.e. RDATA commands, since these include tokens which can be used to restart the stream on connection errors. The client should keep track of the token in the last RDATA command received for each stream so that on reconneciton it can start streaming from the correct place. Note: not all RDATA have valid tokens due to batching. See `RdataCommand` for more details. ### Example An example iteraction is shown below. Each line is prefixed with '>' or '<' to indicate which side is sending, these are *not* included on the wire: * connection established * > SERVER localhost:8823 > PING 1490197665618 < NAME synapse.app.appservice < PING 1490197665618 < REPLICATE > POSITION events master 1 1 > POSITION backfill master 1 1 > POSITION caches master 1 1 > RDATA caches master 2 ["get_user_by_id",["@01register-user:localhost:8823"],1490197670513] > RDATA events master 14 ["$149019767112vOHxz:localhost:8823", "!AFDCvgApUmpdfVjIXm:localhost:8823","m.room.guest_access","",null] < PING 1490197675618 > ERROR server stopping * connection closed by server * The `POSITION` command sent by the server is used to set the clients position without needing to send data with the `RDATA` command. An example of a batched set of `RDATA` is: > RDATA caches master batch ["get_user_by_id",["@test:localhost:8823"],1490197670513] > RDATA caches master batch ["get_user_by_id",["@test2:localhost:8823"],1490197670513] > RDATA caches master batch ["get_user_by_id",["@test3:localhost:8823"],1490197670513] > RDATA caches master 54 ["get_user_by_id",["@test4:localhost:8823"],1490197670513] In this case the client shouldn't advance their caches token until it sees the the last `RDATA`. ### List of commands The list of valid commands, with which side can send it: server (S) or client (C): #### SERVER (S) Sent at the start to identify which server the client is talking to #### RDATA (S) A single update in a stream #### POSITION (S) On receipt of a POSITION command clients should check if they have missed any updates, and if so then fetch them out of band. Sent in response to a REPLICATE command (but can happen at any time). The POSITION command includes the source of the stream. Currently all streams are written by a single process (usually "master"). If fetching missing updates via HTTP API, rather than via the DB, then processes should make the request to the appropriate process. Two positions are included, the "new" position and the last position sent respectively. This allows servers to tell instances that the positions have advanced but no data has been written, without clients needlessly checking to see if they have missed any updates. #### ERROR (S, C) There was an error #### PING (S, C) Sent periodically to ensure the connection is still alive #### NAME (C) Sent at the start by client to inform the server who they are #### REPLICATE (C) Asks the server for the current position of all streams. #### USER_SYNC (C) A user has started or stopped syncing on this process. #### CLEAR_USER_SYNC (C) The server should clear all associated user sync data from the worker. This is used when a worker is shutting down. #### FEDERATION_ACK (C) Acknowledge receipt of some federation data ### REMOTE_SERVER_UP (S, C) Inform other processes that a remote server may have come back online. See `synapse/replication/tcp/commands.py` for a detailed description and the format of each command. ### Cache Invalidation Stream The cache invalidation stream is used to inform workers when they need to invalidate any of their caches in the data store. This is done by streaming all cache invalidations done on master down to the workers, assuming that any caches on the workers also exist on the master. Each individual cache invalidation results in a row being sent down replication, which includes the cache name (the name of the function) and they key to invalidate. For example: > RDATA caches master 550953771 ["get_user_by_id", ["@bob:example.com"], 1550574873251] Alternatively, an entire cache can be invalidated by sending down a `null` instead of the key. For example: > RDATA caches master 550953772 ["get_user_by_id", null, 1550574873252] However, there are times when a number of caches need to be invalidated at the same time with the same key. To reduce traffic we batch those invalidations into a single poke by defining a special cache name that workers understand to mean to expand to invalidate the correct caches. Currently the special cache names are declared in `synapse/storage/_base.py` and are: 1. `cs_cache_fake` ─ invalidates caches that depend on the current state synapse-1.53.0/docs/templates.md000066400000000000000000000321631420514467300165450ustar00rootroot00000000000000# Templates Synapse uses parametrised templates to generate the content of emails it sends and webpages it shows to users. By default, Synapse will use the templates listed [here](https://github.com/matrix-org/synapse/tree/master/synapse/res/templates). Server admins can configure an additional directory for Synapse to look for templates in, allowing them to specify custom templates: ```yaml templates: custom_templates_directory: /path/to/custom/templates/ ``` If this setting is not set, or the files named below are not found within the directory, default templates from within the Synapse package will be used. Templates that are given variables when being rendered are rendered using [Jinja 2](https://jinja.palletsprojects.com/en/2.11.x/). Templates rendered by Jinja 2 can also access two functions on top of the functions already available as part of Jinja 2: ```python format_ts(value: int, format: str) -> str ``` Formats a timestamp in milliseconds. Example: `reason.last_sent_ts|format_ts("%c")` ```python mxc_to_http(value: str, width: int, height: int, resize_method: str = "crop") -> str ``` Turns a `mxc://` URL for media content into an HTTP(S) one using the homeserver's `public_baseurl` configuration setting as the URL's base. Example: `message.sender_avatar_url|mxc_to_http(32,32)` ## Email templates Below are the templates Synapse will look for when generating the content of an email: * `notif_mail.html` and `notif_mail.txt`: The contents of email notifications of missed events. When rendering, this template is given the following variables: * `user_display_name`: the display name for the user receiving the notification * `unsubscribe_link`: the link users can click to unsubscribe from email notifications * `summary_text`: a summary of the notification(s). The text used can be customised by configuring the various settings in the `email.subjects` section of the configuration file. * `rooms`: a list of rooms containing events to include in the email. Each element is an object with the following attributes: * `title`: a human-readable name for the room * `hash`: a hash of the ID of the room * `invite`: a boolean, which is `True` if the room is an invite the user hasn't accepted yet, `False` otherwise * `notifs`: a list of events, or an empty list if `invite` is `True`. Each element is an object with the following attributes: * `link`: a `matrix.to` link to the event * `ts`: the time in milliseconds at which the event was received * `messages`: a list of messages containing one message before the event, the message in the event, and one message after the event. Each element is an object with the following attributes: * `event_type`: the type of the event * `is_historical`: a boolean, which is `False` if the message is the one that triggered the notification, `True` otherwise * `id`: the ID of the event * `ts`: the time in milliseconds at which the event was sent * `sender_name`: the display name for the event's sender * `sender_avatar_url`: the avatar URL (as a `mxc://` URL) for the event's sender * `sender_hash`: a hash of the user ID of the sender * `msgtype`: the type of the message * `body_text_html`: html representation of the message * `body_text_plain`: plaintext representation of the message * `image_url`: mxc url of an image, when "msgtype" is "m.image" * `link`: a `matrix.to` link to the room * `avator_url`: url to the room's avator * `reason`: information on the event that triggered the email to be sent. It's an object with the following attributes: * `room_id`: the ID of the room the event was sent in * `room_name`: a human-readable name for the room the event was sent in * `now`: the current time in milliseconds * `received_at`: the time in milliseconds at which the event was received * `delay_before_mail_ms`: the amount of time in milliseconds Synapse always waits before ever emailing about a notification (to give the user a chance to respond to other push or notice the window) * `last_sent_ts`: the time in milliseconds at which a notification was last sent for an event in this room * `throttle_ms`: the minimum amount of time in milliseconds between two notifications can be sent for this room * `password_reset.html` and `password_reset.txt`: The contents of password reset emails sent by the homeserver. When rendering, these templates are given a `link` variable which contains the link the user must click in order to reset their password. * `registration.html` and `registration.txt`: The contents of address verification emails sent during registration. When rendering, these templates are given a `link` variable which contains the link the user must click in order to validate their email address. * `add_threepid.html` and `add_threepid.txt`: The contents of address verification emails sent when an address is added to a Matrix account. When rendering, these templates are given a `link` variable which contains the link the user must click in order to validate their email address. ## HTML page templates for registration and password reset Below are the templates Synapse will look for when generating pages related to registration and password reset: * `password_reset_confirmation.html`: An HTML page that a user will see when they follow the link in the password reset email. The user will be asked to confirm the action before their password is reset. When rendering, this template is given the following variables: * `sid`: the session ID for the password reset * `token`: the token for the password reset * `client_secret`: the client secret for the password reset * `password_reset_success.html` and `password_reset_failure.html`: HTML pages for success and failure that a user will see when they confirm the password reset flow using the page above. When rendering, `password_reset_success.html` is given no variable, and `password_reset_failure.html` is given a `failure_reason`, which contains the reason for the password reset failure. * `registration_success.html` and `registration_failure.html`: HTML pages for success and failure that a user will see when they follow the link in an address verification email sent during registration. When rendering, `registration_success.html` is given no variable, and `registration_failure.html` is given a `failure_reason`, which contains the reason for the registration failure. * `add_threepid_success.html` and `add_threepid_failure.html`: HTML pages for success and failure that a user will see when they follow the link in an address verification email sent when an address is added to a Matrix account. When rendering, `add_threepid_success.html` is given no variable, and `add_threepid_failure.html` is given a `failure_reason`, which contains the reason for the registration failure. ## HTML page templates for Single Sign-On (SSO) Below are the templates Synapse will look for when generating pages related to SSO: * `sso_login_idp_picker.html`: HTML page to prompt the user to choose an Identity Provider during login. This is only used if multiple SSO Identity Providers are configured. When rendering, this template is given the following variables: * `redirect_url`: the URL that the user will be redirected to after login. * `server_name`: the homeserver's name. * `providers`: a list of available Identity Providers. Each element is an object with the following attributes: * `idp_id`: unique identifier for the IdP * `idp_name`: user-facing name for the IdP * `idp_icon`: if specified in the IdP config, an MXC URI for an icon for the IdP * `idp_brand`: if specified in the IdP config, a textual identifier for the brand of the IdP The rendered HTML page should contain a form which submits its results back as a GET request, with the following query parameters: * `redirectUrl`: the client redirect URI (ie, the `redirect_url` passed to the template) * `idp`: the 'idp_id' of the chosen IDP. * `sso_auth_account_details.html`: HTML page to prompt new users to enter a userid and confirm other details. This is only shown if the SSO implementation (with any `user_mapping_provider`) does not return a localpart. When rendering, this template is given the following variables: * `server_name`: the homeserver's name. * `idp`: details of the SSO Identity Provider that the user logged in with: an object with the following attributes: * `idp_id`: unique identifier for the IdP * `idp_name`: user-facing name for the IdP * `idp_icon`: if specified in the IdP config, an MXC URI for an icon for the IdP * `idp_brand`: if specified in the IdP config, a textual identifier for the brand of the IdP * `user_attributes`: an object containing details about the user that we received from the IdP. May have the following attributes: * display_name: the user's display_name * emails: a list of email addresses The template should render a form which submits the following fields: * `username`: the localpart of the user's chosen user id * `sso_new_user_consent.html`: HTML page allowing the user to consent to the server's terms and conditions. This is only shown for new users, and only if `user_consent.require_at_registration` is set. When rendering, this template is given the following variables: * `server_name`: the homeserver's name. * `user_id`: the user's matrix proposed ID. * `user_profile.display_name`: the user's proposed display name, if any. * consent_version: the version of the terms that the user will be shown * `terms_url`: a link to the page showing the terms. The template should render a form which submits the following fields: * `accepted_version`: the version of the terms accepted by the user (ie, 'consent_version' from the input variables). * `sso_redirect_confirm.html`: HTML page for a confirmation step before redirecting back to the client with the login token. When rendering, this template is given the following variables: * `redirect_url`: the URL the user is about to be redirected to. * `display_url`: the same as `redirect_url`, but with the query parameters stripped. The intention is to have a human-readable URL to show to users, not to use it as the final address to redirect to. * `server_name`: the homeserver's name. * `new_user`: a boolean indicating whether this is the user's first time logging in. * `user_id`: the user's matrix ID. * `user_profile.avatar_url`: an MXC URI for the user's avatar, if any. `None` if the user has not set an avatar. * `user_profile.display_name`: the user's display name. `None` if the user has not set a display name. * `sso_auth_confirm.html`: HTML page which notifies the user that they are authenticating to confirm an operation on their account during the user interactive authentication process. When rendering, this template is given the following variables: * `redirect_url`: the URL the user is about to be redirected to. * `description`: the operation which the user is being asked to confirm * `idp`: details of the Identity Provider that we will use to confirm the user's identity: an object with the following attributes: * `idp_id`: unique identifier for the IdP * `idp_name`: user-facing name for the IdP * `idp_icon`: if specified in the IdP config, an MXC URI for an icon for the IdP * `idp_brand`: if specified in the IdP config, a textual identifier for the brand of the IdP * `sso_auth_success.html`: HTML page shown after a successful user interactive authentication session. Note that this page must include the JavaScript which notifies of a successful authentication (see https://matrix.org/docs/spec/client_server/r0.6.0#fallback). This template has no additional variables. * `sso_auth_bad_user.html`: HTML page shown after a user-interactive authentication session which does not map correctly onto the expected user. When rendering, this template is given the following variables: * `server_name`: the homeserver's name. * `user_id_to_verify`: the MXID of the user that we are trying to validate. * `sso_account_deactivated.html`: HTML page shown during single sign-on if a deactivated user (according to Synapse's database) attempts to login. This template has no additional variables. * `sso_error.html`: HTML page to display to users if something goes wrong during the OpenID Connect authentication process. When rendering, this template is given two variables: * `error`: the technical name of the error * `error_description`: a human-readable message for the error synapse-1.53.0/docs/turn-howto.md000066400000000000000000000315111420514467300166710ustar00rootroot00000000000000# Overview This document explains how to enable VoIP relaying on your homeserver with TURN. The synapse Matrix homeserver supports integration with TURN server via the [TURN server REST API](). This allows the homeserver to generate credentials that are valid for use on the TURN server through the use of a secret shared between the homeserver and the TURN server. The following sections describe how to install [coturn]() (which implements the TURN REST API) and integrate it with synapse. ## Requirements For TURN relaying with `coturn` to work, it must be hosted on a server/endpoint with a public IP. Hosting TURN behind NAT requires port forwaring and for the NAT gateway to have a public IP. However, even with appropriate configuration, NAT is known to cause issues and to often not work. ## `coturn` setup ### Initial installation The TURN daemon `coturn` is available from a variety of sources such as native package managers, or installation from source. #### Debian installation Just install the debian package: ```sh apt install coturn ``` This will install and start a systemd service called `coturn`. #### Source installation 1. Download the [latest release](https://github.com/coturn/coturn/releases/latest) from github. Unpack it and `cd` into the directory. 1. Configure it: ```sh ./configure ``` You may need to install `libevent2`: if so, you should do so in the way recommended by your operating system. You can ignore warnings about lack of database support: a database is unnecessary for this purpose. 1. Build and install it: ```sh make make install ``` ### Configuration 1. Create or edit the config file in `/etc/turnserver.conf`. The relevant lines, with example values, are: ``` use-auth-secret static-auth-secret=[your secret key here] realm=turn.myserver.org ``` See `turnserver.conf` for explanations of the options. One way to generate the `static-auth-secret` is with `pwgen`: ```sh pwgen -s 64 1 ``` A `realm` must be specified, but its value is somewhat arbitrary. (It is sent to clients as part of the authentication flow.) It is conventional to set it to be your server name. 1. You will most likely want to configure coturn to write logs somewhere. The easiest way is normally to send them to the syslog: ```sh syslog ``` (in which case, the logs will be available via `journalctl -u coturn` on a systemd system). Alternatively, coturn can be configured to write to a logfile - check the example config file supplied with coturn. 1. Consider your security settings. TURN lets users request a relay which will connect to arbitrary IP addresses and ports. The following configuration is suggested as a minimum starting point: ``` # VoIP traffic is all UDP. There is no reason to let users connect to arbitrary TCP endpoints via the relay. no-tcp-relay # don't let the relay ever try to connect to private IP address ranges within your network (if any) # given the turn server is likely behind your firewall, remember to include any privileged public IPs too. denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 # recommended additional local peers to block, to mitigate external access to internal services. # https://www.rtcsec.com/article/slack-webrtc-turn-compromise-and-bug-bounty/#how-to-fix-an-open-turn-relay-to-address-this-vulnerability no-multicast-peers denied-peer-ip=0.0.0.0-0.255.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=127.0.0.0-127.255.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=192.0.0.0-192.0.0.255 denied-peer-ip=192.0.2.0-192.0.2.255 denied-peer-ip=192.88.99.0-192.88.99.255 denied-peer-ip=198.18.0.0-198.19.255.255 denied-peer-ip=198.51.100.0-198.51.100.255 denied-peer-ip=203.0.113.0-203.0.113.255 denied-peer-ip=240.0.0.0-255.255.255.255 # special case the turn server itself so that client->TURN->TURN->client flows work # this should be one of the turn server's listening IPs allowed-peer-ip=10.0.0.1 # consider whether you want to limit the quota of relayed streams per user (or total) to avoid risk of DoS. user-quota=12 # 4 streams per video call, so 12 streams = 3 simultaneous relayed calls per user. total-quota=1200 ``` 1. Also consider supporting TLS/DTLS. To do this, add the following settings to `turnserver.conf`: ``` # TLS certificates, including intermediate certs. # For Let's Encrypt certificates, use `fullchain.pem` here. cert=/path/to/fullchain.pem # TLS private key file pkey=/path/to/privkey.pem # Ensure the configuration lines that disable TLS/DTLS are commented-out or removed #no-tls #no-dtls ``` In this case, replace the `turn:` schemes in the `turn_uris` settings below with `turns:`. We recommend that you only try to set up TLS/DTLS once you have set up a basic installation and got it working. NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will not work with any Matrix client that uses Chromium's WebRTC library. This currently includes Element Android & iOS; for more details, see their [respective](https://github.com/vector-im/element-android/issues/1533) [issues](https://github.com/vector-im/element-ios/issues/2712) as well as the underlying [WebRTC issue](https://bugs.chromium.org/p/webrtc/issues/detail?id=11710). Consider using a ZeroSSL certificate for your TURN server as a working alternative. 1. Ensure your firewall allows traffic into the TURN server on the ports you've configured it to listen on (By default: 3478 and 5349 for TURN traffic (remember to allow both TCP and UDP traffic), and ports 49152-65535 for the UDP relay.) 1. If your TURN server is behind NAT, the NAT gateway must have an external, publicly-reachable IP address. You must configure coturn to advertise that address to connecting clients: ``` external-ip=EXTERNAL_NAT_IPv4_ADDRESS ``` You may optionally limit the TURN server to listen only on the local address that is mapped by NAT to the external address: ``` listening-ip=INTERNAL_TURNSERVER_IPv4_ADDRESS ``` If your NAT gateway is reachable over both IPv4 and IPv6, you may configure coturn to advertise each available address: ``` external-ip=EXTERNAL_NAT_IPv4_ADDRESS external-ip=EXTERNAL_NAT_IPv6_ADDRESS ``` When advertising an external IPv6 address, ensure that the firewall and network settings of the system running your TURN server are configured to accept IPv6 traffic, and that the TURN server is listening on the local IPv6 address that is mapped by NAT to the external IPv6 address. 1. (Re)start the turn server: * If you used the Debian package (or have set up a systemd unit yourself): ```sh systemctl restart coturn ``` * If you installed from source: ```sh bin/turnserver -o ``` ## Synapse setup Your homeserver configuration file needs the following extra keys: 1. "`turn_uris`": This needs to be a yaml list of public-facing URIs for your TURN server to be given out to your clients. Add separate entries for each transport your TURN server supports. 2. "`turn_shared_secret`": This is the secret shared between your homeserver and your TURN server, so you should set it to the same string you used in turnserver.conf. 3. "`turn_user_lifetime`": This is the amount of time credentials generated by your homeserver are valid for (in milliseconds). Shorter times offer less potential for abuse at the expense of increased traffic between web clients and your homeserver to refresh credentials. The TURN REST API specification recommends one day (86400000). 4. "`turn_allow_guests`": Whether to allow guest users to use the TURN server. This is enabled by default, as otherwise VoIP will not work reliably for guests. However, it does introduce a security risk as it lets guests connect to arbitrary endpoints without having gone through a CAPTCHA or similar to register a real account. As an example, here is the relevant section of the config file for `matrix.org`. The `turn_uris` are appropriate for TURN servers listening on the default ports, with no TLS. turn_uris: [ "turn:turn.matrix.org?transport=udp", "turn:turn.matrix.org?transport=tcp" ] turn_shared_secret: "n0t4ctuAllymatr1Xd0TorgSshar3d5ecret4obvIousreAsons" turn_user_lifetime: 86400000 turn_allow_guests: True After updating the homeserver configuration, you must restart synapse: * If you use synctl: ```sh cd /where/you/run/synapse ./synctl restart ``` * If you use systemd: ```sh systemctl restart matrix-synapse.service ``` ... and then reload any clients (or wait an hour for them to refresh their settings). ## Troubleshooting The normal symptoms of a misconfigured TURN server are that calls between devices on different networks ring, but get stuck at "call connecting". Unfortunately, troubleshooting this can be tricky. Here are a few things to try: * Check that you have opened your firewall to allow TCP and UDP traffic to the TURN ports (normally 3478 and 5349). * Check that you have opened your firewall to allow UDP traffic to the UDP relay ports (49152-65535 by default). * Try disabling `coturn`'s TLS/DTLS listeners and enable only its (unencrypted) TCP/UDP listeners. (This will only leave signaling traffic unencrypted; voice & video WebRTC traffic is always encrypted.) * Some WebRTC implementations (notably, that of Google Chrome) appear to get confused by TURN servers which are reachable over IPv6 (this appears to be an unexpected side-effect of its handling of multiple IP addresses as defined by [`draft-ietf-rtcweb-ip-handling`](https://tools.ietf.org/html/draft-ietf-rtcweb-ip-handling-12)). Try removing any AAAA records for your TURN server, so that it is only reachable over IPv4. * If your TURN server is behind NAT: * double-check that your NAT gateway is correctly forwarding all TURN ports (normally 3478 & 5349 for TCP & UDP TURN traffic, and 49152-65535 for the UDP relay) to the NAT-internal address of your TURN server. If advertising both IPv4 and IPv6 external addresses via the `external-ip` option, ensure that the NAT is forwarding both IPv4 and IPv6 traffic to the IPv4 and IPv6 internal addresses of your TURN server. When in doubt, remove AAAA records for your TURN server and specify only an IPv4 address as your `external-ip`. * ensure that your TURN server uses the NAT gateway as its default route. * Enable more verbose logging in coturn via the `verbose` setting: ``` verbose ``` ... and then see if there are any clues in its logs. * If you are using a browser-based client under Chrome, check `chrome://webrtc-internals/` for insights into the internals of the negotiation. On Firefox, check the "Connection Log" on `about:webrtc`. (Understanding the output is beyond the scope of this document!) * You can test your Matrix homeserver TURN setup with https://test.voip.librepush.net/. Note that this test is not fully reliable yet, so don't be discouraged if the test fails. [Here](https://github.com/matrix-org/voip-tester) is the github repo of the source of the tester, where you can file bug reports. * There is a WebRTC test tool at https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/. To use it, you will need a username/password for your TURN server. You can either: * look for the `GET /_matrix/client/r0/voip/turnServer` request made by a matrix client to your homeserver in your browser's network inspector. In the response you should see `username` and `password`. Or: * Use the following shell commands: ```sh secret=staticAuthSecretHere u=$((`date +%s` + 3600)):test p=$(echo -n $u | openssl dgst -hmac $secret -sha1 -binary | base64) echo -e "username: $u\npassword: $p" ``` Or: * Temporarily configure coturn to accept a static username/password. To do this, comment out `use-auth-secret` and `static-auth-secret` and add the following: ``` lt-cred-mech user=username:password ``` **Note**: these settings will not take effect unless `use-auth-secret` and `static-auth-secret` are disabled. Restart coturn after changing the configuration file. Remember to restore the original settings to go back to testing with Matrix clients! If the TURN server is working correctly, you should see at least one `relay` entry in the results. synapse-1.53.0/docs/upgrade.md000066400000000000000000001710231420514467300161750ustar00rootroot00000000000000# Upgrading Synapse Before upgrading check if any special steps are required to upgrade from the version you currently have installed to the current version of Synapse. The extra instructions that may be required are listed later in this document. - Check that your versions of Python and PostgreSQL are still supported. Synapse follows upstream lifecycles for [Python](https://endoflife.date/python) and [PostgreSQL](https://endoflife.date/postgresql), and removes support for versions which are no longer maintained. The website also offers convenient summaries. - If Synapse was installed using [prebuilt packages](setup/installation.md#prebuilt-packages), you will need to follow the normal process for upgrading those packages. - If Synapse was installed from source, then: 1. Activate the virtualenv before upgrading. For example, if Synapse is installed in a virtualenv in `~/synapse/env` then run: ```bash source ~/synapse/env/bin/activate ``` 2. If Synapse was installed using pip then upgrade to the latest version by running: ```bash pip install --upgrade matrix-synapse ``` If Synapse was installed using git then upgrade to the latest version by running: ```bash git pull pip install --upgrade . ``` 3. Restart Synapse: ```bash ./synctl restart ``` To check whether your update was successful, you can check the running server version with: ```bash # you may need to replace 'localhost:8008' if synapse is not configured # to listen on port 8008. curl http://localhost:8008/_synapse/admin/v1/server_version ``` ## Rolling back to older versions Rolling back to previous releases can be difficult, due to database schema changes between releases. Where we have been able to test the rollback process, this will be noted below. In general, you will need to undo any changes made during the upgrade process, for example: - pip: ```bash source env/bin/activate # replace `1.3.0` accordingly: pip install matrix-synapse==1.3.0 ``` - Debian: ```bash # replace `1.3.0` and `stretch` accordingly: wget https://packages.matrix.org/debian/pool/main/m/matrix-synapse-py3/matrix-synapse-py3_1.3.0+stretch1_amd64.deb dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb ``` # Upgrading to v1.53.0 ## Dropping support for `webclient` listeners and non-HTTP(S) `web_client_location` Per the deprecation notice in Synapse v1.51.0, listeners of type `webclient` are no longer supported and configuring them is a now a configuration error. Configuring a non-HTTP(S) `web_client_location` configuration is is now a configuration error. Since the `webclient` listener is no longer supported, this setting only applies to the root path `/` of Synapse's web server and no longer the `/_matrix/client/` path. ## Stablisation of MSC3231 The unstable validity-check endpoint for the [Registration Tokens](https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv1registermloginregistration_tokenvalidity) feature has been stabilised and moved from: `/_matrix/client/unstable/org.matrix.msc3231/register/org.matrix.msc3231.login.registration_token/validity` to: `/_matrix/client/v1/register/m.login.registration_token/validity` Please update any relevant reverse proxy or firewall configurations appropriately. ## Time-based cache expiry is now enabled by default Formerly, entries in the cache were not evicted regardless of whether they were accessed after storing. This behavior has now changed. By default entries in the cache are now evicted after 30m of not being accessed. To change the default behavior, go to the `caches` section of the config and change the `expire_caches` and `cache_entry_ttl` flags as necessary. Please note that these flags replace the `expiry_time` flag in the config. The `expiry_time` flag will still continue to work, but it has been deprecated and will be removed in the future. ## Deprecation of `capability` `org.matrix.msc3283.*` The `capabilities` of MSC3283 from the REST API `/_matrix/client/r0/capabilities` becomes stable. The old `capabilities` - `org.matrix.msc3283.set_displayname`, - `org.matrix.msc3283.set_avatar_url` and - `org.matrix.msc3283.3pid_changes` are deprecated and scheduled to be removed in Synapse v1.54.0. The new `capabilities` - `m.set_displayname`, - `m.set_avatar_url` and - `m.3pid_changes` are now active by default. ## Removal of `user_may_create_room_with_invites` As announced with the release of [Synapse 1.47.0](#deprecation-of-the-user_may_create_room_with_invites-module-callback), the deprecated `user_may_create_room_with_invites` module callback has been removed. Modules relying on it can instead implement [`user_may_invite`](https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite) and use the [`get_room_state`](https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876) module API to infer whether the invite is happening while creating a room (see [this function](https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89) as an example). Alternately, modules can also implement [`on_create_room`](https://matrix-org.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room). # Upgrading to v1.52.0 ## Twisted security release Note that [Twisted 22.1.0](https://github.com/twisted/twisted/releases/tag/twisted-22.1.0) has recently been released, which fixes a [security issue](https://github.com/twisted/twisted/security/advisories/GHSA-92x2-jw7w-xvvx) within the Twisted library. We do not believe Synapse is affected by this vulnerability, though we advise server administrators who installed Synapse via pip to upgrade Twisted with `pip install --upgrade Twisted` as a matter of good practice. The Docker image `matrixdotorg/synapse` and the Debian packages from `packages.matrix.org` are using the updated library. # Upgrading to v1.51.0 ## Deprecation of `webclient` listeners and non-HTTP(S) `web_client_location` Listeners of type `webclient` are deprecated and scheduled to be removed in Synapse v1.53.0. Similarly, a non-HTTP(S) `web_client_location` configuration is deprecated and will become a configuration error in Synapse v1.53.0. # Upgrading to v1.50.0 ## Dropping support for old Python and Postgres versions In line with our [deprecation policy](deprecation_policy.md), we've dropped support for Python 3.6 and PostgreSQL 9.6, as they are no longer supported upstream. This release of Synapse requires Python 3.7+ and PostgreSQL 10+. # Upgrading to v1.47.0 ## Removal of old Room Admin API The following admin APIs were deprecated in [Synapse 1.34](https://github.com/matrix-org/synapse/blob/v1.34.0/CHANGES.md#deprecations-and-removals) (released on 2021-05-17) and have now been removed: - `POST /_synapse/admin/v1//delete` Any scripts still using the above APIs should be converted to use the [Delete Room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api). ## Deprecation of the `user_may_create_room_with_invites` module callback The `user_may_create_room_with_invites` is deprecated and will be removed in a future version of Synapse. Modules implementing this callback can instead implement [`user_may_invite`](https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite) and use the [`get_room_state`](https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876) module API method to infer whether the invite is happening in the context of creating a room. We plan to remove this callback in January 2022. # Upgrading to v1.45.0 ## Changes required to media storage provider modules when reading from the Synapse configuration object Media storage provider modules that read from the Synapse configuration object (i.e. that read the value of `hs.config.[...]`) now need to specify the configuration section they're reading from. This means that if a module reads the value of e.g. `hs.config.media_store_path`, it needs to replace it with `hs.config.media.media_store_path`. # Upgrading to v1.44.0 ## The URL preview cache is no longer mirrored to storage providers The `url_cache/` and `url_cache_thumbnails/` directories in the media store are no longer mirrored to storage providers. These two directories can be safely deleted from any configured storage providers to reclaim space. # Upgrading to v1.43.0 ## The spaces summary APIs can now be handled by workers The [available worker applications documentation](https://matrix-org.github.io/synapse/latest/workers.html#available-worker-applications) has been updated to reflect that calls to the `/spaces`, `/hierarchy`, and `/summary` endpoints can now be routed to workers for both client API and federation requests. # Upgrading to v1.42.0 ## Removal of old Room Admin API The following admin APIs were deprecated in [Synapse 1.25](https://github.com/matrix-org/synapse/blob/v1.25.0/CHANGES.md#removal-warning) (released on 2021-01-13) and have now been removed: - `POST /_synapse/admin/v1/purge_room` - `POST /_synapse/admin/v1/shutdown_room/` Any scripts still using the above APIs should be converted to use the [Delete Room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api). ## User-interactive authentication fallback templates can now display errors This may affect you if you make use of custom HTML templates for the [reCAPTCHA](../synapse/res/templates/recaptcha.html) or [terms](../synapse/res/templates/terms.html) fallback pages. The template is now provided an `error` variable if the authentication process failed. See the default templates linked above for an example. ## Removal of out-of-date email pushers Users will stop receiving message updates via email for addresses that were once, but not still, linked to their account. # Upgrading to v1.41.0 ## Add support for routing outbound HTTP requests via a proxy for federation Since Synapse 1.6.0 (2019-11-26) you can set a proxy for outbound HTTP requests via http_proxy/https_proxy environment variables. This proxy was set for: - push - url previews - phone-home stats - recaptcha validation - CAS auth validation - OpenID Connect - Federation (checking public key revocation) In this version we have added support for outbound requests for: - Outbound federation - Downloading remote media - Fetching public keys of other servers These requests use the same proxy configuration. If you have a proxy configuration we recommend to verify the configuration. It may be necessary to adjust the `no_proxy` environment variable. See [using a forward proxy with Synapse documentation](setup/forward_proxy.md) for details. ## Deprecation of `template_dir` The `template_dir` settings in the `sso`, `account_validity` and `email` sections of the configuration file are now deprecated. Server admins should use the new `templates.custom_template_directory` setting in the configuration file and use one single custom template directory for all aforementioned features. Template file names remain unchanged. See [the related documentation](https://matrix-org.github.io/synapse/latest/templates.html) for more information and examples. We plan to remove support for these settings in October 2021. ## `/_synapse/admin/v1/users/{userId}/media` must be handled by media workers The [media repository worker documentation](https://matrix-org.github.io/synapse/latest/workers.html#synapseappmedia_repository) has been updated to reflect that calls to `/_synapse/admin/v1/users/{userId}/media` must now be handled by media repository workers. This is due to the new `DELETE` method of this endpoint modifying the media store. # Upgrading to v1.39.0 ## Deprecation of the current third-party rules module interface The current third-party rules module interface is deprecated in favour of the new generic modules system introduced in Synapse v1.37.0. Authors of third-party rules modules can refer to [this documentation](modules/porting_legacy_module.md) to update their modules. Synapse administrators can refer to [this documentation](modules/index.md) to update their configuration once the modules they are using have been updated. We plan to remove support for the current third-party rules interface in September 2021. # Upgrading to v1.38.0 ## Re-indexing of `events` table on Postgres databases This release includes a database schema update which requires re-indexing one of the larger tables in the database, `events`. This could result in increased disk I/O for several hours or days after upgrading while the migration completes. Furthermore, because we have to keep the old indexes until the new indexes are ready, it could result in a significant, temporary, increase in disk space. To get a rough idea of the disk space required, check the current size of one of the indexes. For example, from a `psql` shell, run the following sql: ```sql SELECT pg_size_pretty(pg_relation_size('events_order_room')); ``` We need to rebuild **four** indexes, so you will need to multiply this result by four to give an estimate of the disk space required. For example, on one particular server: ``` synapse=# select pg_size_pretty(pg_relation_size('events_order_room')); pg_size_pretty ---------------- 288 MB (1 row) ``` On this server, it would be wise to ensure that at least 1152MB are free. The additional disk space will be freed once the migration completes. SQLite databases are unaffected by this change. # Upgrading to v1.37.0 ## Deprecation of the current spam checker interface The current spam checker interface is deprecated in favour of a new generic modules system. Authors of spam checker modules can refer to [this documentation](modules/porting_legacy_module.md to update their modules. Synapse administrators can refer to [this documentation](modules/index.md) to update their configuration once the modules they are using have been updated. We plan to remove support for the current spam checker interface in August 2021. More module interfaces will be ported over to this new generic system in future versions of Synapse. # Upgrading to v1.34.0 ## `room_invite_state_types` configuration setting The `room_invite_state_types` configuration setting has been deprecated and replaced with `room_prejoin_state`. See the [sample configuration file](https://github.com/matrix-org/synapse/blob/v1.34.0/docs/sample_config.yaml#L1515). If you have set `room_invite_state_types` to the default value you should simply remove it from your configuration file. The default value used to be: ```yaml room_invite_state_types: - "m.room.join_rules" - "m.room.canonical_alias" - "m.room.avatar" - "m.room.encryption" - "m.room.name" ``` If you have customised this value, you should remove `room_invite_state_types` and configure `room_prejoin_state` instead. # Upgrading to v1.33.0 ## Account Validity HTML templates can now display a user's expiration date This may affect you if you have enabled the account validity feature, and have made use of a custom HTML template specified by the `account_validity.template_dir` or `account_validity.account_renewed_html_path` Synapse config options. The template can now accept an `expiration_ts` variable, which represents the unix timestamp in milliseconds for the future date of which their account has been renewed until. See the [default template](https://github.com/matrix-org/synapse/blob/release-v1.33.0/synapse/res/templates/account_renewed.html) for an example of usage. ALso note that a new HTML template, `account_previously_renewed.html`, has been added. This is is shown to users when they attempt to renew their account with a valid renewal token that has already been used before. The default template contents can been found [here](https://github.com/matrix-org/synapse/blob/release-v1.33.0/synapse/res/templates/account_previously_renewed.html), and can also accept an `expiration_ts` variable. This template replaces the error message users would previously see upon attempting to use a valid renewal token more than once. # Upgrading to v1.32.0 ## Regression causing connected Prometheus instances to become overwhelmed This release introduces [a regression](https://github.com/matrix-org/synapse/issues/9853) that can overwhelm connected Prometheus instances. This issue is not present in Synapse v1.32.0rc1. If you have been affected, please downgrade to 1.31.0. You then may need to remove excess writeahead logs in order for Prometheus to recover. Instructions for doing so are provided [here](https://github.com/matrix-org/synapse/pull/9854#issuecomment-823472183). ## Dropping support for old Python, Postgres and SQLite versions In line with our [deprecation policy](deprecation_policy.md), we've dropped support for Python 3.5 and PostgreSQL 9.5, as they are no longer supported upstream. This release of Synapse requires Python 3.6+ and PostgresSQL 9.6+ or SQLite 3.22+. ## Removal of old List Accounts Admin API The deprecated v1 "list accounts" admin API (`GET /_synapse/admin/v1/users/`) has been removed in this version. The [v2 list accounts API](admin_api/user_admin_api.md#list-accounts) has been available since Synapse 1.7.0 (2019-12-13), and is accessible under `GET /_synapse/admin/v2/users`. The deprecation of the old endpoint was announced with Synapse 1.28.0 (released on 2021-02-25). ## Application Services must use type `m.login.application_service` when registering users In compliance with the [Application Service spec](https://matrix.org/docs/spec/application_service/r0.1.2#server-admin-style-permissions), Application Services are now required to use the `m.login.application_service` type when registering users via the `/_matrix/client/r0/register` endpoint. This behaviour was deprecated in Synapse v1.30.0. Please ensure your Application Services are up to date. # Upgrading to v1.29.0 ## Requirement for X-Forwarded-Proto header When using Synapse with a reverse proxy (in particular, when using the `x_forwarded` option on an HTTP listener), Synapse now expects to receive an `X-Forwarded-Proto` header on incoming HTTP requests. If it is not set, Synapse will log a warning on each received request. To avoid the warning, administrators using a reverse proxy should ensure that the reverse proxy sets `X-Forwarded-Proto` header to `https` or `http` to indicate the protocol used by the client. Synapse also requires the `Host` header to be preserved. See the [reverse proxy documentation](reverse_proxy.md), where the example configurations have been updated to show how to set these headers. (Users of [Caddy](https://caddyserver.com/) are unaffected, since we believe it sets `X-Forwarded-Proto` by default.) # Upgrading to v1.27.0 ## Changes to callback URI for OAuth2 / OpenID Connect and SAML2 This version changes the URI used for callbacks from OAuth2 and SAML2 identity providers: - If your server is configured for single sign-on via an OpenID Connect or OAuth2 identity provider, you will need to add `[synapse public baseurl]/_synapse/client/oidc/callback` to the list of permitted "redirect URIs" at the identity provider. See the [OpenID docs](openid.md) for more information on setting up OpenID Connect. - If your server is configured for single sign-on via a SAML2 identity provider, you will need to add `[synapse public baseurl]/_synapse/client/saml2/authn_response` as a permitted "ACS location" (also known as "allowed callback URLs") at the identity provider. The "Issuer" in the "AuthnRequest" to the SAML2 identity provider is also updated to `[synapse public baseurl]/_synapse/client/saml2/metadata.xml`. If your SAML2 identity provider uses this property to validate or otherwise identify Synapse, its configuration will need to be updated to use the new URL. Alternatively you could create a new, separate "EntityDescriptor" in your SAML2 identity provider with the new URLs and leave the URLs in the existing "EntityDescriptor" as they were. ## Changes to HTML templates The HTML templates for SSO and email notifications now have [Jinja2's autoescape](https://jinja.palletsprojects.com/en/2.11.x/api/#autoescaping) enabled for files ending in `.html`, `.htm`, and `.xml`. If you have customised these templates and see issues when viewing them you might need to update them. It is expected that most configurations will need no changes. If you have customised the templates *names* for these templates, it is recommended to verify they end in `.html` to ensure autoescape is enabled. The above applies to the following templates: - `add_threepid.html` - `add_threepid_failure.html` - `add_threepid_success.html` - `notice_expiry.html` - `notice_expiry.html` - `notif_mail.html` (which, by default, includes `room.html` and `notif.html`) - `password_reset.html` - `password_reset_confirmation.html` - `password_reset_failure.html` - `password_reset_success.html` - `registration.html` - `registration_failure.html` - `registration_success.html` - `sso_account_deactivated.html` - `sso_auth_bad_user.html` - `sso_auth_confirm.html` - `sso_auth_success.html` - `sso_error.html` - `sso_login_idp_picker.html` - `sso_redirect_confirm.html` # Upgrading to v1.26.0 ## Rolling back to v1.25.0 after a failed upgrade v1.26.0 includes a lot of large changes. If something problematic occurs, you may want to roll-back to a previous version of Synapse. Because v1.26.0 also includes a new database schema version, reverting that version is also required alongside the generic rollback instructions mentioned above. In short, to roll back to v1.25.0 you need to: 1. Stop the server 2. Decrease the schema version in the database: ```sql UPDATE schema_version SET version = 58; ``` 3. Delete the ignored users & chain cover data: ```sql DROP TABLE IF EXISTS ignored_users; UPDATE rooms SET has_auth_chain_index = false; ``` For PostgreSQL run: ```sql TRUNCATE event_auth_chain_links; TRUNCATE event_auth_chains; ``` For SQLite run: ```sql DELETE FROM event_auth_chain_links; DELETE FROM event_auth_chains; ``` 4. Mark the deltas as not run (so they will re-run on upgrade). ```sql DELETE FROM applied_schema_deltas WHERE version = 59 AND file = "59/01ignored_user.py"; DELETE FROM applied_schema_deltas WHERE version = 59 AND file = "59/06chain_cover_index.sql"; ``` 5. Downgrade Synapse by following the instructions for your installation method in the "Rolling back to older versions" section above. # Upgrading to v1.25.0 ## Last release supporting Python 3.5 This is the last release of Synapse which guarantees support with Python 3.5, which passed its upstream End of Life date several months ago. We will attempt to maintain support through March 2021, but without guarantees. In the future, Synapse will follow upstream schedules for ending support of older versions of Python and PostgreSQL. Please upgrade to at least Python 3.6 and PostgreSQL 9.6 as soon as possible. ## Blacklisting IP ranges Synapse v1.25.0 includes new settings, `ip_range_blacklist` and `ip_range_whitelist`, for controlling outgoing requests from Synapse for federation, identity servers, push, and for checking key validity for third-party invite events. The previous setting, `federation_ip_range_blacklist`, is deprecated. The new `ip_range_blacklist` defaults to private IP ranges if it is not defined. If you have never customised `federation_ip_range_blacklist` it is recommended that you remove that setting. If you have customised `federation_ip_range_blacklist` you should update the setting name to `ip_range_blacklist`. If you have a custom push server that is reached via private IP space you may need to customise `ip_range_blacklist` or `ip_range_whitelist`. # Upgrading to v1.24.0 ## Custom OpenID Connect mapping provider breaking change This release allows the OpenID Connect mapping provider to perform normalisation of the localpart of the Matrix ID. This allows for the mapping provider to specify different algorithms, instead of the [default way](). If your Synapse configuration uses a custom mapping provider (`oidc_config.user_mapping_provider.module` is specified and not equal to `synapse.handlers.oidc_handler.JinjaOidcMappingProvider`) then you *must* ensure that `map_user_attributes` of the mapping provider performs some normalisation of the `localpart` returned. To match previous behaviour you can use the `map_username_to_mxid_localpart` function provided by Synapse. An example is shown below: ```python from synapse.types import map_username_to_mxid_localpart class MyMappingProvider: def map_user_attributes(self, userinfo, token): # ... your custom logic ... sso_user_id = ... localpart = map_username_to_mxid_localpart(sso_user_id) return {"localpart": localpart} ``` ## Removal historical Synapse Admin API Historically, the Synapse Admin API has been accessible under: - `/_matrix/client/api/v1/admin` - `/_matrix/client/unstable/admin` - `/_matrix/client/r0/admin` - `/_synapse/admin/v1` The endpoints with `/_matrix/client/*` prefixes have been removed as of v1.24.0. The Admin API is now only accessible under: - `/_synapse/admin/v1` The only exception is the `/admin/whois` endpoint, which is [also available via the client-server API](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-admin-whois-userid). The deprecation of the old endpoints was announced with Synapse 1.20.0 (released on 2020-09-22) and makes it easier for homeserver admins to lock down external access to the Admin API endpoints. # Upgrading to v1.23.0 ## Structured logging configuration breaking changes This release deprecates use of the `structured: true` logging configuration for structured logging. If your logging configuration contains `structured: true` then it should be modified based on the [structured logging documentation](structured_logging.md). The `structured` and `drains` logging options are now deprecated and should be replaced by standard logging configuration of `handlers` and `formatters`. A future will release of Synapse will make using `structured: true` an error. # Upgrading to v1.22.0 ## ThirdPartyEventRules breaking changes This release introduces a backwards-incompatible change to modules making use of `ThirdPartyEventRules` in Synapse. If you make use of a module defined under the `third_party_event_rules` config option, please make sure it is updated to handle the below change: The `http_client` argument is no longer passed to modules as they are initialised. Instead, modules are expected to make use of the `http_client` property on the `ModuleApi` class. Modules are now passed a `module_api` argument during initialisation, which is an instance of `ModuleApi`. `ModuleApi` instances have a `http_client` property which acts the same as the `http_client` argument previously passed to `ThirdPartyEventRules` modules. # Upgrading to v1.21.0 ## Forwarding `/_synapse/client` through your reverse proxy The [reverse proxy documentation](reverse_proxy.md) has been updated to include reverse proxy directives for `/_synapse/client/*` endpoints. As the user password reset flow now uses endpoints under this prefix, **you must update your reverse proxy configurations for user password reset to work**. Additionally, note that the [Synapse worker documentation](workers.md) has been updated to : state that the `/_synapse/client/password_reset/email/submit_token` endpoint can be handled by all workers. If you make use of Synapse's worker feature, please update your reverse proxy configuration to reflect this change. ## New HTML templates A new HTML template, [password_reset_confirmation.html](https://github.com/matrix-org/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html), has been added to the `synapse/res/templates` directory. If you are using a custom template directory, you may want to copy the template over and modify it. Note that as of v1.20.0, templates do not need to be included in custom template directories for Synapse to start. The default templates will be used if a custom template cannot be found. This page will appear to the user after clicking a password reset link that has been emailed to them. To complete password reset, the page must include a way to make a `POST` request to `/_synapse/client/password_reset/{medium}/submit_token` with the query parameters from the original link, presented as a URL-encoded form. See the file itself for more details. ## Updated Single Sign-on HTML Templates The `saml_error.html` template was removed from Synapse and replaced with the `sso_error.html` template. If your Synapse is configured to use SAML and a custom `sso_redirect_confirm_template_dir` configuration then any customisations of the `saml_error.html` template will need to be merged into the `sso_error.html` template. These templates are similar, but the parameters are slightly different: - The `msg` parameter should be renamed to `error_description`. - There is no longer a `code` parameter for the response code. - A string `error` parameter is available that includes a short hint of why a user is seeing the error page. # Upgrading to v1.18.0 ## Docker `-py3` suffix will be removed in future versions From 10th August 2020, we will no longer publish Docker images with the `-py3` tag suffix. The images tagged with the `-py3` suffix have been identical to the non-suffixed tags since release 0.99.0, and the suffix is obsolete. On 10th August, we will remove the `latest-py3` tag. Existing per-release tags (such as `v1.18.0-py3` will not be removed, but no new `-py3` tags will be added. Scripts relying on the `-py3` suffix will need to be updated. ## Redis replication is now recommended in lieu of TCP replication When setting up worker processes, we now recommend the use of a Redis server for replication. **The old direct TCP connection method is deprecated and will be removed in a future release.** See [workers](workers.md) for more details. # Upgrading to v1.14.0 This version includes a database update which is run as part of the upgrade, and which may take a couple of minutes in the case of a large server. Synapse will not respond to HTTP requests while this update is taking place. # Upgrading to v1.13.0 ## Incorrect database migration in old synapse versions A bug was introduced in Synapse 1.4.0 which could cause the room directory to be incomplete or empty if Synapse was upgraded directly from v1.2.1 or earlier, to versions between v1.4.0 and v1.12.x. This will *not* be a problem for Synapse installations which were: : - created at v1.4.0 or later, - upgraded via v1.3.x, or - upgraded straight from v1.2.1 or earlier to v1.13.0 or later. If completeness of the room directory is a concern, installations which are affected can be repaired as follows: 1. Run the following sql from a `psql` or `sqlite3` console: ```sql INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES ('populate_stats_process_rooms', '{}', 'current_state_events_membership'); INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES ('populate_stats_process_users', '{}', 'populate_stats_process_rooms'); ``` 2. Restart synapse. ## New Single Sign-on HTML Templates New templates (`sso_auth_confirm.html`, `sso_auth_success.html`, and `sso_account_deactivated.html`) were added to Synapse. If your Synapse is configured to use SSO and a custom `sso_redirect_confirm_template_dir` configuration then these templates will need to be copied from [synapse/res/templates](synapse/res/templates) into that directory. ## Synapse SSO Plugins Method Deprecation Plugins using the `complete_sso_login` method of `synapse.module_api.ModuleApi` should update to using the async/await version `complete_sso_login_async` which includes additional checks. The non-async version is considered deprecated. ## Rolling back to v1.12.4 after a failed upgrade v1.13.0 includes a lot of large changes. If something problematic occurs, you may want to roll-back to a previous version of Synapse. Because v1.13.0 also includes a new database schema version, reverting that version is also required alongside the generic rollback instructions mentioned above. In short, to roll back to v1.12.4 you need to: 1. Stop the server 2. Decrease the schema version in the database: ```sql UPDATE schema_version SET version = 57; ``` 3. Downgrade Synapse by following the instructions for your installation method in the "Rolling back to older versions" section above. # Upgrading to v1.12.0 This version includes a database update which is run as part of the upgrade, and which may take some time (several hours in the case of a large server). Synapse will not respond to HTTP requests while this update is taking place. This is only likely to be a problem in the case of a server which is participating in many rooms. 0. As with all upgrades, it is recommended that you have a recent backup of your database which can be used for recovery in the event of any problems. 1. As an initial check to see if you will be affected, you can try running the following query from the `psql` or `sqlite3` console. It is safe to run it while Synapse is still running. ```sql SELECT MAX(q.v) FROM ( SELECT ( SELECT ej.json AS v FROM state_events se INNER JOIN event_json ej USING (event_id) WHERE se.room_id=rooms.room_id AND se.type='m.room.create' AND se.state_key='' LIMIT 1 ) FROM rooms WHERE rooms.room_version IS NULL ) q; ``` This query will take about the same amount of time as the upgrade process: ie, if it takes 5 minutes, then it is likely that Synapse will be unresponsive for 5 minutes during the upgrade. If you consider an outage of this duration to be acceptable, no further action is necessary and you can simply start Synapse 1.12.0. If you would prefer to reduce the downtime, continue with the steps below. 2. The easiest workaround for this issue is to manually create a new index before upgrading. On PostgreSQL, his can be done as follows: ```sql CREATE INDEX CONCURRENTLY tmp_upgrade_1_12_0_index ON state_events(room_id) WHERE type = 'm.room.create'; ``` The above query may take some time, but is also safe to run while Synapse is running. We assume that no SQLite users have databases large enough to be affected. If you *are* affected, you can run a similar query, omitting the `CONCURRENTLY` keyword. Note however that this operation may in itself cause Synapse to stop running for some time. Synapse admins are reminded that [SQLite is not recommended for use outside a test environment](postgres.md). 3. Once the index has been created, the `SELECT` query in step 1 above should complete quickly. It is therefore safe to upgrade to Synapse 1.12.0. 4. Once Synapse 1.12.0 has successfully started and is responding to HTTP requests, the temporary index can be removed: ```sql DROP INDEX tmp_upgrade_1_12_0_index; ``` # Upgrading to v1.10.0 Synapse will now log a warning on start up if used with a PostgreSQL database that has a non-recommended locale set. See [Postgres](postgres.md) for details. # Upgrading to v1.8.0 Specifying a `log_file` config option will now cause Synapse to refuse to start, and should be replaced by with the `log_config` option. Support for the `log_file` option was removed in v1.3.0 and has since had no effect. # Upgrading to v1.7.0 In an attempt to configure Synapse in a privacy preserving way, the default behaviours of `allow_public_rooms_without_auth` and `allow_public_rooms_over_federation` have been inverted. This means that by default, only authenticated users querying the Client/Server API will be able to query the room directory, and relatedly that the server will not share room directory information with other servers over federation. If your installation does not explicitly set these settings one way or the other and you want either setting to be `true` then it will necessary to update your homeserver configuration file accordingly. For more details on the surrounding context see our [explainer](https://matrix.org/blog/2019/11/09/avoiding-unwelcome-visitors-on-private-matrix-servers). # Upgrading to v1.5.0 This release includes a database migration which may take several minutes to complete if there are a large number (more than a million or so) of entries in the `devices` table. This is only likely to a be a problem on very large installations. # Upgrading to v1.4.0 ## New custom templates If you have configured a custom template directory with the `email.template_dir` option, be aware that there are new templates regarding registration and threepid management (see below) that must be included. - `registration.html` and `registration.txt` - `registration_success.html` and `registration_failure.html` - `add_threepid.html` and `add_threepid.txt` - `add_threepid_failure.html` and `add_threepid_success.html` Synapse will expect these files to exist inside the configured template directory, and **will fail to start** if they are absent. To view the default templates, see [synapse/res/templates](https://github.com/matrix-org/synapse/tree/master/synapse/res/templates). ## 3pid verification changes **Note: As of this release, users will be unable to add phone numbers or email addresses to their accounts, without changes to the Synapse configuration. This includes adding an email address during registration.** It is possible for a user to associate an email address or phone number with their account, for a number of reasons: - for use when logging in, as an alternative to the user id. - in the case of email, as an alternative contact to help with account recovery. - in the case of email, to receive notifications of missed messages. Before an email address or phone number can be added to a user's account, or before such an address is used to carry out a password-reset, Synapse must confirm the operation with the owner of the email address or phone number. It does this by sending an email or text giving the user a link or token to confirm receipt. This process is known as '3pid verification'. ('3pid', or 'threepid', stands for third-party identifier, and we use it to refer to external identifiers such as email addresses and phone numbers.) Previous versions of Synapse delegated the task of 3pid verification to an identity server by default. In most cases this server is `vector.im` or `matrix.org`. In Synapse 1.4.0, for security and privacy reasons, the homeserver will no longer delegate this task to an identity server by default. Instead, the server administrator will need to explicitly decide how they would like the verification messages to be sent. In the medium term, the `vector.im` and `matrix.org` identity servers will disable support for delegated 3pid verification entirely. However, in order to ease the transition, they will retain the capability for a limited period. Delegated email verification will be disabled on Monday 2nd December 2019 (giving roughly 2 months notice). Disabling delegated SMS verification will follow some time after that once SMS verification support lands in Synapse. Once delegated 3pid verification support has been disabled in the `vector.im` and `matrix.org` identity servers, all Synapse versions that depend on those instances will be unable to verify email and phone numbers through them. There are no imminent plans to remove delegated 3pid verification from Sydent generally. (Sydent is the identity server project that backs the `vector.im` and `matrix.org` instances). ### Email Following upgrade, to continue verifying email (e.g. as part of the registration process), admins can either:- - Configure Synapse to use an email server. - Run or choose an identity server which allows delegated email verification and delegate to it. #### Configure SMTP in Synapse To configure an SMTP server for Synapse, modify the configuration section headed `email`, and be sure to have at least the `smtp_host, smtp_port` and `notif_from` fields filled out. You may also need to set `smtp_user`, `smtp_pass`, and `require_transport_security`. See the [sample configuration file](usage/configuration/homeserver_sample_config.md) for more details on these settings. #### Delegate email to an identity server Some admins will wish to continue using email verification as part of the registration process, but will not immediately have an appropriate SMTP server at hand. To this end, we will continue to support email verification delegation via the `vector.im` and `matrix.org` identity servers for two months. Support for delegated email verification will be disabled on Monday 2nd December. The `account_threepid_delegates` dictionary defines whether the homeserver should delegate an external server (typically an [identity server](https://matrix.org/docs/spec/identity_service/r0.2.1)) to handle sending confirmation messages via email and SMS. So to delegate email verification, in `homeserver.yaml`, set `account_threepid_delegates.email` to the base URL of an identity server. For example: ```yaml account_threepid_delegates: email: https://example.com # Delegate email sending to example.com ``` Note that `account_threepid_delegates.email` replaces the deprecated `email.trust_identity_server_for_password_resets`: if `email.trust_identity_server_for_password_resets` is set to `true`, and `account_threepid_delegates.email` is not set, then the first entry in `trusted_third_party_id_servers` will be used as the `account_threepid_delegate` for email. This is to ensure compatibility with existing Synapse installs that set up external server handling for these tasks before v1.4.0. If `email.trust_identity_server_for_password_resets` is `true` and no trusted identity server domains are configured, Synapse will report an error and refuse to start. If `email.trust_identity_server_for_password_resets` is `false` or absent and no `email` delegate is configured in `account_threepid_delegates`, then Synapse will send email verification messages itself, using the configured SMTP server (see above). that type. ### Phone numbers Synapse does not support phone-number verification itself, so the only way to maintain the ability for users to add phone numbers to their accounts will be by continuing to delegate phone number verification to the `matrix.org` and `vector.im` identity servers (or another identity server that supports SMS sending). The `account_threepid_delegates` dictionary defines whether the homeserver should delegate an external server (typically an [identity server](https://matrix.org/docs/spec/identity_service/r0.2.1)) to handle sending confirmation messages via email and SMS. So to delegate phone number verification, in `homeserver.yaml`, set `account_threepid_delegates.msisdn` to the base URL of an identity server. For example: ```yaml account_threepid_delegates: msisdn: https://example.com # Delegate sms sending to example.com ``` The `matrix.org` and `vector.im` identity servers will continue to support delegated phone number verification via SMS until such time as it is possible for admins to configure their servers to perform phone number verification directly. More details will follow in a future release. ## Rolling back to v1.3.1 If you encounter problems with v1.4.0, it should be possible to roll back to v1.3.1, subject to the following: - The 'room statistics' engine was heavily reworked in this release (see [#5971](https://github.com/matrix-org/synapse/pull/5971)), including significant changes to the database schema, which are not easily reverted. This will cause the room statistics engine to stop updating when you downgrade. The room statistics are essentially unused in v1.3.1 (in future versions of Synapse, they will be used to populate the room directory), so there should be no loss of functionality. However, the statistics engine will write errors to the logs, which can be avoided by setting the following in `homeserver.yaml`: ```yaml stats: enabled: false ``` Don't forget to re-enable it when you upgrade again, in preparation for its use in the room directory! # Upgrading to v1.2.0 Some counter metrics have been renamed, with the old names deprecated. See [the metrics documentation](metrics-howto.md#renaming-of-metrics--deprecation-of-old-names-in-12) for details. # Upgrading to v1.1.0 Synapse v1.1.0 removes support for older Python and PostgreSQL versions, as outlined in [our deprecation notice](https://matrix.org/blog/2019/04/08/synapse-deprecating-postgres-9-4-and-python-2-x). ## Minimum Python Version Synapse v1.1.0 has a minimum Python requirement of Python 3.5. Python 3.6 or Python 3.7 are recommended as they have improved internal string handling, significantly reducing memory usage. If you use current versions of the Matrix.org-distributed Debian packages or Docker images, action is not required. If you install Synapse in a Python virtual environment, please see "Upgrading to v0.34.0" for notes on setting up a new virtualenv under Python 3. ## Minimum PostgreSQL Version If using PostgreSQL under Synapse, you will need to use PostgreSQL 9.5 or above. Please see the [PostgreSQL documentation](https://www.postgresql.org/docs/11/upgrading.html) for more details on upgrading your database. # Upgrading to v1.0 ## Validation of TLS certificates Synapse v1.0 is the first release to enforce validation of TLS certificates for the federation API. It is therefore essential that your certificates are correctly configured. Note, v1.0 installations will also no longer be able to federate with servers that have not correctly configured their certificates. In rare cases, it may be desirable to disable certificate checking: for example, it might be essential to be able to federate with a given legacy server in a closed federation. This can be done in one of two ways:- - Configure the global switch `federation_verify_certificates` to `false`. - Configure a whitelist of server domains to trust via `federation_certificate_verification_whitelist`. See the [sample configuration file](usage/configuration/homeserver_sample_config.md) for more details on these settings. ## Email When a user requests a password reset, Synapse will send an email to the user to confirm the request. Previous versions of Synapse delegated the job of sending this email to an identity server. If the identity server was somehow malicious or became compromised, it would be theoretically possible to hijack an account through this means. Therefore, by default, Synapse v1.0 will send the confirmation email itself. If Synapse is not configured with an SMTP server, password reset via email will be disabled. To configure an SMTP server for Synapse, modify the configuration section headed `email`, and be sure to have at least the `smtp_host`, `smtp_port` and `notif_from` fields filled out. You may also need to set `smtp_user`, `smtp_pass`, and `require_transport_security`. If you are absolutely certain that you wish to continue using an identity server for password resets, set `trust_identity_server_for_password_resets` to `true`. See the [sample configuration file](usage/configuration/homeserver_sample_config.md) for more details on these settings. ## New email templates Some new templates have been added to the default template directory for the purpose of the homeserver sending its own password reset emails. If you have configured a custom `template_dir` in your Synapse config, these files will need to be added. `password_reset.html` and `password_reset.txt` are HTML and plain text templates respectively that contain the contents of what will be emailed to the user upon attempting to reset their password via email. `password_reset_success.html` and `password_reset_failure.html` are HTML files that the content of which (assuming no redirect URL is set) will be shown to the user after they attempt to click the link in the email sent to them. # Upgrading to v0.99.0 Please be aware that, before Synapse v1.0 is released around March 2019, you will need to replace any self-signed certificates with those verified by a root CA. Information on how to do so can be found at the ACME docs. # Upgrading to v0.34.0 1. This release is the first to fully support Python 3. Synapse will now run on Python versions 3.5, or 3.6 (as well as 2.7). We recommend switching to Python 3, as it has been shown to give performance improvements. For users who have installed Synapse into a virtualenv, we recommend doing this by creating a new virtualenv. For example: ```sh virtualenv -p python3 ~/synapse/env3 source ~/synapse/env3/bin/activate pip install matrix-synapse ``` You can then start synapse as normal, having activated the new virtualenv: ```sh cd ~/synapse source env3/bin/activate synctl start ``` Users who have installed from distribution packages should see the relevant package documentation. See below for notes on Debian packages. - When upgrading to Python 3, you **must** make sure that your log files are configured as UTF-8, by adding `encoding: utf8` to the `RotatingFileHandler` configuration (if you have one) in your `.log.config` file. For example, if your `log.config` file contains: ```yaml handlers: file: class: logging.handlers.RotatingFileHandler formatter: precise filename: homeserver.log maxBytes: 104857600 backupCount: 10 filters: [context] console: class: logging.StreamHandler formatter: precise filters: [context] ``` Then you should update this to be: ```yaml handlers: file: class: logging.handlers.RotatingFileHandler formatter: precise filename: homeserver.log maxBytes: 104857600 backupCount: 10 filters: [context] encoding: utf8 console: class: logging.StreamHandler formatter: precise filters: [context] ``` There is no need to revert this change if downgrading to Python 2. We are also making available Debian packages which will run Synapse on Python 3. You can switch to these packages with `apt-get install matrix-synapse-py3`, however, please read [debian/NEWS](https://github.com/matrix-org/synapse/blob/release-v0.34.0/debian/NEWS) before doing so. The existing `matrix-synapse` packages will continue to use Python 2 for the time being. 2. This release removes the `riot.im` from the default list of trusted identity servers. If `riot.im` is in your homeserver's list of `trusted_third_party_id_servers`, you should remove it. It was added in case a hypothetical future identity server was put there. If you don't remove it, users may be unable to deactivate their accounts. 3. This release no longer installs the (unmaintained) Matrix Console web client as part of the default installation. It is possible to re-enable it by installing it separately and setting the `web_client_location` config option, but please consider switching to another client. # Upgrading to v0.33.7 This release removes the example email notification templates from `res/templates` (they are now internal to the python package). This should only affect you if you (a) deploy your Synapse instance from a git checkout or a github snapshot URL, and (b) have email notifications enabled. If you have email notifications enabled, you should ensure that `email.template_dir` is either configured to point at a directory where you have installed customised templates, or leave it unset to use the default templates. # Upgrading to v0.27.3 This release expands the anonymous usage stats sent if the opt-in `report_stats` configuration is set to `true`. We now capture RSS memory and cpu use at a very coarse level. This requires administrators to install the optional `psutil` python module. We would appreciate it if you could assist by ensuring this module is available and `report_stats` is enabled. This will let us see if performance changes to synapse are having an impact to the general community. # Upgrading to v0.15.0 If you want to use the new URL previewing API (`/_matrix/media/r0/preview_url`) then you have to explicitly enable it in the config and update your dependencies dependencies. See README.rst for details. # Upgrading to v0.11.0 This release includes the option to send anonymous usage stats to matrix.org, and requires that administrators explictly opt in or out by setting the `report_stats` option to either `true` or `false`. We would really appreciate it if you could help our project out by reporting anonymized usage statistics from your homeserver. Only very basic aggregate data (e.g. number of users) will be reported, but it helps us to track the growth of the Matrix community, and helps us to make Matrix a success, as well as to convince other networks that they should peer with us. # Upgrading to v0.9.0 Application services have had a breaking API change in this version. They can no longer register themselves with a home server using the AS HTTP API. This decision was made because a compromised application service with free reign to register any regex in effect grants full read/write access to the home server if a regex of `.*` is used. An attack where a compromised AS re-registers itself with `.*` was deemed too big of a security risk to ignore, and so the ability to register with the HS remotely has been removed. It has been replaced by specifying a list of application service registrations in `homeserver.yaml`: ```yaml app_service_config_files: ["registration-01.yaml", "registration-02.yaml"] ``` Where `registration-01.yaml` looks like: ```yaml url: # e.g. "https://my.application.service.com" as_token: hs_token: sender_localpart: # This is a new field which denotes the user_id localpart when using the AS token namespaces: users: - exclusive: regex: # e.g. "@prefix_.*" aliases: - exclusive: regex: rooms: - exclusive: regex: ``` # Upgrading to v0.8.0 Servers which use captchas will need to add their public key to: static/client/register/register_config.js window.matrixRegistrationConfig = { recaptcha_public_key: "YOUR_PUBLIC_KEY" }; This is required in order to support registration fallback (typically used on mobile devices). # Upgrading to v0.7.0 New dependencies are: - pydenticon - simplejson - syutil - matrix-angular-sdk To pull in these dependencies in a virtual env, run: python synapse/python_dependencies.py | xargs -n 1 pip install # Upgrading to v0.6.0 To pull in new dependencies, run: python setup.py develop --user This update includes a change to the database schema. To upgrade you first need to upgrade the database by running: python scripts/upgrade_db_to_v0.6.0.py Where `` is the location of the database, `` is the server name as specified in the synapse configuration, and `` is the location of the signing key as specified in the synapse configuration. This may take some time to complete. Failures of signatures and content hashes can safely be ignored. # Upgrading to v0.5.1 Depending on precisely when you installed v0.5.0 you may have ended up with a stale release of the reference matrix webclient installed as a python module. To uninstall it and ensure you are depending on the latest module, please run: $ pip uninstall syweb # Upgrading to v0.5.0 The webclient has been split out into a seperate repository/pacakage in this release. Before you restart your homeserver you will need to pull in the webclient package by running: python setup.py develop --user This release completely changes the database schema and so requires upgrading it before starting the new version of the homeserver. The script "database-prepare-for-0.5.0.sh" should be used to upgrade the database. This will save all user information, such as logins and profiles, but will otherwise purge the database. This includes messages, which rooms the home server was a member of and room alias mappings. If you would like to keep your history, please take a copy of your database file and ask for help in #matrix:matrix.org. The upgrade process is, unfortunately, non trivial and requires human intervention to resolve any resulting conflicts during the upgrade process. Before running the command the homeserver should be first completely shutdown. To run it, simply specify the location of the database, e.g.: > ./scripts/database-prepare-for-0.5.0.sh "homeserver.db" Once this has successfully completed it will be safe to restart the homeserver. You may notice that the homeserver takes a few seconds longer to restart than usual as it reinitializes the database. On startup of the new version, users can either rejoin remote rooms using room aliases or by being reinvited. Alternatively, if any other homeserver sends a message to a room that the homeserver was previously in the local HS will automatically rejoin the room. # Upgrading to v0.4.0 This release needs an updated syutil version. Run: python setup.py develop You will also need to upgrade your configuration as the signing key format has changed. Run: python -m synapse.app.homeserver --config-path --generate-config # Upgrading to v0.3.0 This registration API now closely matches the login API. This introduces a bit more backwards and forwards between the HS and the client, but this improves the overall flexibility of the API. You can now GET on /register to retrieve a list of valid registration flows. Upon choosing one, they are submitted in the same way as login, e.g: { type: m.login.password, user: foo, password: bar } The default HS supports 2 flows, with and without Identity Server email authentication. Enabling captcha on the HS will add in an extra step to all flows: `m.login.recaptcha` which must be completed before you can transition to the next stage. There is a new login type: `m.login.email.identity` which contains the `threepidCreds` key which were previously sent in the original register request. For more information on this, see the specification. ## Web Client The VoIP specification has changed between v0.2.0 and v0.3.0. Users should refresh any browser tabs to get the latest web client code. Users on v0.2.0 of the web client will not be able to call those on v0.3.0 and vice versa. # Upgrading to v0.2.0 The home server now requires setting up of SSL config before it can run. To automatically generate default config use: $ python synapse/app/homeserver.py \ --server-name machine.my.domain.name \ --bind-port 8448 \ --config-path homeserver.config \ --generate-config This config can be edited if desired, for example to specify a different SSL certificate to use. Once done you can run the home server using: $ python synapse/app/homeserver.py --config-path homeserver.config See the README.rst for more information. Also note that some config options have been renamed, including: - "host" to "server-name" - "database" to "database-path" - "port" to "bind-port" and "unsecure-port" # Upgrading to v0.0.1 This release completely changes the database schema and so requires upgrading it before starting the new version of the homeserver. The script "database-prepare-for-0.0.1.sh" should be used to upgrade the database. This will save all user information, such as logins and profiles, but will otherwise purge the database. This includes messages, which rooms the home server was a member of and room alias mappings. Before running the command the homeserver should be first completely shutdown. To run it, simply specify the location of the database, e.g.: > ./scripts/database-prepare-for-0.0.1.sh "homeserver.db" Once this has successfully completed it will be safe to restart the homeserver. You may notice that the homeserver takes a few seconds longer to restart than usual as it reinitializes the database. On startup of the new version, users can either rejoin remote rooms using room aliases or by being reinvited. Alternatively, if any other homeserver sends a message to a room that the homeserver was previously in the local HS will automatically rejoin the room. synapse-1.53.0/docs/usage/000077500000000000000000000000001420514467300153245ustar00rootroot00000000000000synapse-1.53.0/docs/usage/administration/000077500000000000000000000000001420514467300203515ustar00rootroot00000000000000synapse-1.53.0/docs/usage/administration/README.md000066400000000000000000000004261420514467300216320ustar00rootroot00000000000000# Administration This section contains information on managing your Synapse homeserver. This includes: * Managing users, rooms and media via the Admin API. * Setting up metrics and monitoring to give you insight into your homeserver's health. * Configuring structured logging.synapse-1.53.0/docs/usage/administration/admin_api/000077500000000000000000000000001420514467300222725ustar00rootroot00000000000000synapse-1.53.0/docs/usage/administration/admin_api/README.md000066400000000000000000000022631420514467300235540ustar00rootroot00000000000000# The Admin API ## Authenticate as a server admin Many of the API calls in the admin api will require an `access_token` for a server admin. (Note that a server admin is distinct from a room admin.) A user can be marked as a server admin by updating the database directly, e.g.: ```sql UPDATE users SET admin = 1 WHERE name = '@foo:bar.com'; ``` A new server admin user can also be created using the `register_new_matrix_user` command. This is a script that is located in the `scripts/` directory, or possibly already on your `$PATH` depending on how Synapse was installed. Finding your user's `access_token` is client-dependent, but will usually be shown in the client's settings. ## Making an Admin API request Once you have your `access_token`, you will need to authenticate each request to an Admin API endpoint by providing the token as either a query parameter or a request header. To add it as a request header in cURL: ```sh curl --header "Authorization: Bearer " ``` For more details on access tokens in Matrix, please refer to the complete [matrix spec documentation](https://matrix.org/docs/spec/client_server/r0.6.1#using-access-tokens). synapse-1.53.0/docs/usage/administration/admin_api/background_updates.md000066400000000000000000000046441420514467300264700ustar00rootroot00000000000000# Background Updates API This API allows a server administrator to manage the background updates being run against the database. ## Status This API gets the current status of the background updates. The API is: ``` GET /_synapse/admin/v1/background_updates/status ``` Returning: ```json { "enabled": true, "current_updates": { "": { "name": "", "total_item_count": 50, "total_duration_ms": 10000.0, "average_items_per_ms": 2.2, }, } } ``` `enabled` whether the background updates are enabled or disabled. `db_name` the database name (usually Synapse is configured with a single database named 'master'). For each update: `name` the name of the update. `total_item_count` total number of "items" processed (the meaning of 'items' depends on the update in question). `total_duration_ms` how long the background process has been running, not including time spent sleeping. `average_items_per_ms` how many items are processed per millisecond based on an exponential average. ## Enabled This API allow pausing background updates. Background updates should *not* be paused for significant periods of time, as this can affect the performance of Synapse. *Note*: This won't persist over restarts. *Note*: This won't cancel any update query that is currently running. This is usually fine since most queries are short lived, except for `CREATE INDEX` background updates which won't be cancelled once started. The API is: ``` POST /_synapse/admin/v1/background_updates/enabled ``` with the following body: ```json { "enabled": false } ``` `enabled` sets whether the background updates are enabled or disabled. The API returns the `enabled` param. ```json { "enabled": false } ``` There is also a `GET` version which returns the `enabled` state. ## Run This API schedules a specific background update to run. The job starts immediately after calling the API. The API is: ``` POST /_synapse/admin/v1/background_updates/start_job ``` with the following body: ```json { "job_name": "populate_stats_process_rooms" } ``` The following JSON body parameters are available: - `job_name` - A string which job to run. Valid values are: - `populate_stats_process_rooms` - Recalculate the stats for all rooms. - `regenerate_directory` - Recalculate the [user directory](../../../user_directory.md) if it is stale or out of sync. synapse-1.53.0/docs/usage/administration/admin_api/federation.md000066400000000000000000000157601420514467300247450ustar00rootroot00000000000000# Federation API This API allows a server administrator to manage Synapse's federation with other homeservers. Note: This API is new, experimental and "subject to change". ## List of destinations This API gets the current destination retry timing info for all remote servers. The list contains all the servers with which the server federates, regardless of whether an error occurred or not. If an error occurs, it may take up to 20 minutes for the error to be displayed here, as a complete retry must have failed. The API is: A standard request with no filtering: ``` GET /_synapse/admin/v1/federation/destinations ``` A response body like the following is returned: ```json { "destinations":[ { "destination": "matrix.org", "retry_last_ts": 1557332397936, "retry_interval": 3000000, "failure_ts": 1557329397936, "last_successful_stream_ordering": null } ], "total": 1 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more destinations to paginate through. **Parameters** The following query parameters are available: - `from` - Offset in the returned list. Defaults to `0`. - `limit` - Maximum amount of destinations to return. Defaults to `100`. - `order_by` - The method in which to sort the returned list of destinations. Valid values are: - `destination` - Destinations are ordered alphabetically by remote server name. This is the default. - `retry_last_ts` - Destinations are ordered by time of last retry attempt in ms. - `retry_interval` - Destinations are ordered by how long until next retry in ms. - `failure_ts` - Destinations are ordered by when the server started failing in ms. - `last_successful_stream_ordering` - Destinations are ordered by the stream ordering of the most recent successfully-sent PDU. - `dir` - Direction of room order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. *Caution:* The database only has an index on the column `destination`. This means that if a different sort order is used, this can cause a large load on the database, especially for large environments. **Response** The following fields are returned in the JSON response body: - `destinations` - An array of objects, each containing information about a destination. Destination objects contain the following fields: - `destination` - string - Name of the remote server to federate. - `retry_last_ts` - integer - The last time Synapse tried and failed to reach the remote server, in ms. This is `0` if the last attempt to communicate with the remote server was successful. - `retry_interval` - integer - How long since the last time Synapse tried to reach the remote server before trying again, in ms. This is `0` if no further retrying occuring. - `failure_ts` - nullable integer - The first time Synapse tried and failed to reach the remote server, in ms. This is `null` if communication with the remote server has never failed. - `last_successful_stream_ordering` - nullable integer - The stream ordering of the most recent successfully-sent [PDU](understanding_synapse_through_grafana_graphs.md#federation) to this destination, or `null` if this information has not been tracked yet. - `next_token`: string representing a positive integer - Indication for pagination. See above. - `total` - integer - Total number of destinations. ## Destination Details API This API gets the retry timing info for a specific remote server. The API is: ``` GET /_synapse/admin/v1/federation/destinations/ ``` A response body like the following is returned: ```json { "destination": "matrix.org", "retry_last_ts": 1557332397936, "retry_interval": 3000000, "failure_ts": 1557329397936, "last_successful_stream_ordering": null } ``` **Parameters** The following parameters should be set in the URL: - `destination` - Name of the remote server. **Response** The response fields are the same like in the `destinations` array in [List of destinations](#list-of-destinations) response. ## Destination rooms This API gets the rooms that federate with a specific remote server. The API is: ``` GET /_synapse/admin/v1/federation/destinations//rooms ``` A response body like the following is returned: ```json { "rooms":[ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "stream_ordering": 8326 }, { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "stream_ordering": 93534 } ], "total": 2 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more destinations to paginate through. **Parameters** The following parameters should be set in the URL: - `destination` - Name of the remote server. The following query parameters are available: - `from` - Offset in the returned list. Defaults to `0`. - `limit` - Maximum amount of destinations to return. Defaults to `100`. - `dir` - Direction of room order by `room_id`. Either `f` for forwards or `b` for backwards. Defaults to `f`. **Response** The following fields are returned in the JSON response body: - `rooms` - An array of objects, each containing information about a room. Room objects contain the following fields: - `room_id` - string - The ID of the room. - `stream_ordering` - integer - The stream ordering of the most recent successfully-sent [PDU](understanding_synapse_through_grafana_graphs.md#federation) to this destination in this room. - `next_token`: string representing a positive integer - Indication for pagination. See above. - `total` - integer - Total number of destinations. ## Reset connection timeout Synapse makes federation requests to other homeservers. If a federation request fails, Synapse will mark the destination homeserver as offline, preventing any future requests to that server for a "cooldown" period. This period grows over time if the server continues to fail its responses ([exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff)). Admins can cancel the cooldown period with this API. This API resets the retry timing for a specific remote server and tries to connect to the remote server again. It does not wait for the next `retry_interval`. The connection must have previously run into an error and `retry_last_ts` ([Destination Details API](#destination-details-api)) must not be equal to `0`. The connection attempt is carried out in the background and can take a while even if the API already returns the http status 200. The API is: ``` POST /_synapse/admin/v1/federation/destinations//reset_connection {} ``` **Parameters** The following parameters should be set in the URL: - `destination` - Name of the remote server. synapse-1.53.0/docs/usage/administration/admin_api/registration_tokens.md000066400000000000000000000163051420514467300267160ustar00rootroot00000000000000# Registration Tokens This API allows you to manage tokens which can be used to authenticate registration requests, as proposed in [MSC3231](https://github.com/matrix-org/matrix-doc/blob/main/proposals/3231-token-authenticated-registration.md). To use it, you will need to enable the `registration_requires_token` config option, and authenticate by providing an `access_token` for a server admin: see [Admin API](../../usage/administration/admin_api). Note that this API is still experimental; not all clients may support it yet. ## Registration token objects Most endpoints make use of JSON objects that contain details about tokens. These objects have the following fields: - `token`: The token which can be used to authenticate registration. - `uses_allowed`: The number of times the token can be used to complete a registration before it becomes invalid. - `pending`: The number of pending uses the token has. When someone uses the token to authenticate themselves, the pending counter is incremented so that the token is not used more than the permitted number of times. When the person completes registration the pending counter is decremented, and the completed counter is incremented. - `completed`: The number of times the token has been used to successfully complete a registration. - `expiry_time`: The latest time the token is valid. Given as the number of milliseconds since 1970-01-01 00:00:00 UTC (the start of the Unix epoch). To convert this into a human-readable form you can remove the milliseconds and use the `date` command. For example, `date -d '@1625394937'`. ## List all tokens Lists all tokens and details about them. If the request is successful, the top level JSON object will have a `registration_tokens` key which is an array of registration token objects. ``` GET /_synapse/admin/v1/registration_tokens ``` Optional query parameters: - `valid`: `true` or `false`. If `true`, only valid tokens are returned. If `false`, only tokens that have expired or have had all uses exhausted are returned. If omitted, all tokens are returned regardless of validity. Example: ``` GET /_synapse/admin/v1/registration_tokens ``` ``` 200 OK { "registration_tokens": [ { "token": "abcd", "uses_allowed": 3, "pending": 0, "completed": 1, "expiry_time": null }, { "token": "pqrs", "uses_allowed": 2, "pending": 1, "completed": 1, "expiry_time": null }, { "token": "wxyz", "uses_allowed": null, "pending": 0, "completed": 9, "expiry_time": 1625394937000 // 2021-07-04 10:35:37 UTC } ] } ``` Example using the `valid` query parameter: ``` GET /_synapse/admin/v1/registration_tokens?valid=false ``` ``` 200 OK { "registration_tokens": [ { "token": "pqrs", "uses_allowed": 2, "pending": 1, "completed": 1, "expiry_time": null }, { "token": "wxyz", "uses_allowed": null, "pending": 0, "completed": 9, "expiry_time": 1625394937000 // 2021-07-04 10:35:37 UTC } ] } ``` ## Get one token Get details about a single token. If the request is successful, the response body will be a registration token object. ``` GET /_synapse/admin/v1/registration_tokens/ ``` Path parameters: - `token`: The registration token to return details of. Example: ``` GET /_synapse/admin/v1/registration_tokens/abcd ``` ``` 200 OK { "token": "abcd", "uses_allowed": 3, "pending": 0, "completed": 1, "expiry_time": null } ``` ## Create token Create a new registration token. If the request is successful, the newly created token will be returned as a registration token object in the response body. ``` POST /_synapse/admin/v1/registration_tokens/new ``` The request body must be a JSON object and can contain the following fields: - `token`: The registration token. A string of no more than 64 characters that consists only of characters matched by the regex `[A-Za-z0-9._~-]`. Default: randomly generated. - `uses_allowed`: The integer number of times the token can be used to complete a registration before it becomes invalid. Default: `null` (unlimited uses). - `expiry_time`: The latest time the token is valid. Given as the number of milliseconds since 1970-01-01 00:00:00 UTC (the start of the Unix epoch). You could use, for example, `date '+%s000' -d 'tomorrow'`. Default: `null` (token does not expire). - `length`: The length of the token randomly generated if `token` is not specified. Must be between 1 and 64 inclusive. Default: `16`. If a field is omitted the default is used. Example using defaults: ``` POST /_synapse/admin/v1/registration_tokens/new {} ``` ``` 200 OK { "token": "0M-9jbkf2t_Tgiw1", "uses_allowed": null, "pending": 0, "completed": 0, "expiry_time": null } ``` Example specifying some fields: ``` POST /_synapse/admin/v1/registration_tokens/new { "token": "defg", "uses_allowed": 1 } ``` ``` 200 OK { "token": "defg", "uses_allowed": 1, "pending": 0, "completed": 0, "expiry_time": null } ``` ## Update token Update the number of allowed uses or expiry time of a token. If the request is successful, the updated token will be returned as a registration token object in the response body. ``` PUT /_synapse/admin/v1/registration_tokens/ ``` Path parameters: - `token`: The registration token to update. The request body must be a JSON object and can contain the following fields: - `uses_allowed`: The integer number of times the token can be used to complete a registration before it becomes invalid. By setting `uses_allowed` to `0` the token can be easily made invalid without deleting it. If `null` the token will have an unlimited number of uses. - `expiry_time`: The latest time the token is valid. Given as the number of milliseconds since 1970-01-01 00:00:00 UTC (the start of the Unix epoch). If `null` the token will not expire. If a field is omitted its value is not modified. Example: ``` PUT /_synapse/admin/v1/registration_tokens/defg { "expiry_time": 4781243146000 // 2121-07-06 11:05:46 UTC } ``` ``` 200 OK { "token": "defg", "uses_allowed": 1, "pending": 0, "completed": 0, "expiry_time": 4781243146000 } ``` ## Delete token Delete a registration token. If the request is successful, the response body will be an empty JSON object. ``` DELETE /_synapse/admin/v1/registration_tokens/ ``` Path parameters: - `token`: The registration token to delete. Example: ``` DELETE /_synapse/admin/v1/registration_tokens/wxyz ``` ``` 200 OK {} ``` ## Errors If a request fails a "standard error response" will be returned as defined in the [Matrix Client-Server API specification](https://matrix.org/docs/spec/client_server/r0.6.1#api-standards). For example, if the token specified in a path parameter does not exist a `404 Not Found` error will be returned. ``` GET /_synapse/admin/v1/registration_tokens/1234 ``` ``` 404 Not Found { "errcode": "M_NOT_FOUND", "error": "No such registration token: 1234" } ``` synapse-1.53.0/docs/usage/administration/admin_faq.md000066400000000000000000000111051420514467300226100ustar00rootroot00000000000000## Admin FAQ How do I become a server admin? --- If your server already has an admin account you should use the user admin API to promote other accounts to become admins. See [User Admin API](../../admin_api/user_admin_api.md#Change-whether-a-user-is-a-server-administrator-or-not) If you don't have any admin accounts yet you won't be able to use the admin API so you'll have to edit the database manually. Manually editing the database is generally not recommended so once you have an admin account, use the admin APIs to make further changes. ```sql UPDATE users SET admin = 1 WHERE name = '@foo:bar.com'; ``` What servers are my server talking to? --- Run this sql query on your db: ```sql SELECT * FROM destinations; ``` What servers are currently participating in this room? --- Run this sql query on your db: ```sql SELECT DISTINCT split_part(state_key, ':', 2) FROM current_state_events AS c INNER JOIN room_memberships AS m USING (room_id, event_id) WHERE room_id = '!cURbafjkfsMDVwdRDQ:matrix.org' AND membership = 'join'; ``` What users are registered on my server? --- ```sql SELECT NAME from users; ``` Manually resetting passwords: --- See https://github.com/matrix-org/synapse/blob/master/README.rst#password-reset I have a problem with my server. Can I just delete my database and start again? --- Deleting your database is unlikely to make anything better. It's easy to make the mistake of thinking that you can start again from a clean slate by dropping your database, but things don't work like that in a federated network: lots of other servers have information about your server. For example: other servers might think that you are in a room, your server will think that you are not, and you'll probably be unable to interact with that room in a sensible way ever again. In general, there are better solutions to any problem than dropping the database. Come and seek help in https://matrix.to/#/#synapse:matrix.org. There are two exceptions when it might be sensible to delete your database and start again: * You have *never* joined any rooms which are federated with other servers. For instance, a local deployment which the outside world can't talk to. * You are changing the `server_name` in the homeserver configuration. In effect this makes your server a completely new one from the point of view of the network, so in this case it makes sense to start with a clean database. (In both cases you probably also want to clear out the media_store.) I've stuffed up access to my room, how can I delete it to free up the alias? --- Using the following curl command: ``` curl -H 'Authorization: Bearer ' -X DELETE https://matrix.org/_matrix/client/r0/directory/room/ ``` `` - can be obtained in riot by looking in the riot settings, down the bottom is: Access Token:\ `` - the room alias, eg. #my_room:matrix.org this possibly needs to be URL encoded also, for example %23my_room%3Amatrix.org How can I find the lines corresponding to a given HTTP request in my homeserver log? --- Synapse tags each log line according to the HTTP request it is processing. When it finishes processing each request, it logs a line containing the words `Processed request: `. For example: ``` 2019-02-14 22:35:08,196 - synapse.access.http.8008 - 302 - INFO - GET-37 - ::1 - 8008 - {@richvdh:localhost} Processed request: 0.173sec/0.001sec (0.002sec, 0.000sec) (0.027sec/0.026sec/2) 687B 200 "GET /_matrix/client/r0/sync HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" [0 dbevts]" ``` Here we can see that the request has been tagged with `GET-37`. (The tag depends on the method of the HTTP request, so might start with `GET-`, `PUT-`, `POST-`, `OPTIONS-` or `DELETE-`.) So to find all lines corresponding to this request, we can do: ``` grep 'GET-37' homeserver.log ``` If you want to paste that output into a github issue or matrix room, please remember to surround it with triple-backticks (```) to make it legible (see https://help.github.com/en/articles/basic-writing-and-formatting-syntax#quoting-code). What do all those fields in the 'Processed' line mean? --- See [Request log format](request_log.md). What are the biggest rooms on my server? --- ```sql SELECT s.canonical_alias, g.room_id, count(*) AS num_rows FROM state_groups_state AS g, room_stats_state AS s WHERE g.room_id = s.room_id GROUP BY s.canonical_alias, g.room_id ORDER BY num_rows desc LIMIT 10; ``` You can also use the [List Room API](../../admin_api/rooms.md#list-room-api) and `order_by` `state_events`. synapse-1.53.0/docs/usage/administration/database_maintenance_tools.md000066400000000000000000000017611420514467300262260ustar00rootroot00000000000000This blog post by Victor Berger explains how to use many of the tools listed on this page: https://levans.fr/shrink-synapse-database.html # List of useful tools and scripts for maintenance Synapse database: ## [Purge Remote Media API](../../admin_api/media_admin_api.md#purge-remote-media-api) The purge remote media API allows server admins to purge old cached remote media. ## [Purge Local Media API](../../admin_api/media_admin_api.md#delete-local-media) This API deletes the *local* media from the disk of your own server. ## [Purge History API](../../admin_api/purge_history_api.md) The purge history API allows server admins to purge historic events from their database, reclaiming disk space. ## [synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state) Tool for compressing (deduplicating) `state_groups_state` table. ## [SQL for analyzing Synapse PostgreSQL database stats](useful_sql_for_admins.md) Some easy SQL that reports useful stats about your Synapse database.synapse-1.53.0/docs/usage/administration/request_log.md000066400000000000000000000051461420514467300232320ustar00rootroot00000000000000# Request log format HTTP request logs are written by synapse (see [`site.py`](../synapse/http/site.py) for details). See the following for how to decode the dense data available from the default logging configuration. ``` 2020-10-01 12:00:00,000 - synapse.access.http.8008 - 311 - INFO - PUT-1000- 192.168.0.1 - 8008 - {another-matrix-server.com} Processed request: 0.100sec/-0.000sec (0.000sec, 0.000sec) (0.001sec/0.090sec/3) 11B !200 "PUT /_matrix/federation/v1/send/1600000000000 HTTP/1.1" "Synapse/1.20.1" [0 dbevts] -AAAAAAAAAAAAAAAAAAAAA- -BBBBBBBBBBBBBBBBBBBBBB- -C- -DD- -EEEEEE- -FFFFFFFFF- -GG- -HHHHHHHHHHHHHHHHHHHHHHH- -IIIIII- -JJJJJJJ- -KKKKKK-, -LLLLLL- -MMMMMMM- -NNNNNN- O -P- -QQ- -RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR- -SSSSSSSSSSSS- -TTTTTT- ``` | Part | Explanation | | ----- | ------------ | | AAAA | Timestamp request was logged (not recieved) | | BBBB | Logger name (`synapse.access.(http\|https).`, where 'tag' is defined in the `listeners` config section, normally the port) | | CCCC | Line number in code | | DDDD | Log Level | | EEEE | Request Identifier (This identifier is shared by related log lines)| | FFFF | Source IP (Or X-Forwarded-For if enabled) | | GGGG | Server Port | | HHHH | Federated Server or Local User making request (blank if unauthenticated or not supplied) | | IIII | Total Time to process the request | | JJJJ | Time to send response over network once generated (this may be negative if the socket is closed before the response is generated)| | KKKK | Userland CPU time | | LLLL | System CPU time | | MMMM | Total time waiting for a free DB connection from the pool across all parallel DB work from this request | | NNNN | Total time waiting for response to DB queries across all parallel DB work from this request | | OOOO | Count of DB transactions performed | | PPPP | Response body size | | QQQQ | Response status code (prefixed with ! if the socket was closed before the response was generated) | | RRRR | Request | | SSSS | User-agent | | TTTT | Events fetched from DB to service this request (note that this does not include events fetched from the cache) | MMMM / NNNN can be greater than IIII if there are multiple slow database queries running in parallel. Some actions can result in multiple identical http requests, which will return the same data, but only the first request will report time/transactions in `KKKK`/`LLLL`/`MMMM`/`NNNN`/`OOOO` - the others will be awaiting the first query to return a response and will simultaneously return with the first request, but with very small processing times. synapse-1.53.0/docs/usage/administration/state_groups.md000066400000000000000000000045371420514467300234230ustar00rootroot00000000000000# How do State Groups work? As a general rule, I encourage people who want to understand the deepest darkest secrets of the database schema to drop by #synapse-dev:matrix.org and ask questions. However, one question that comes up frequently is that of how "state groups" work, and why the `state_groups_state` table gets so big, so here's an attempt to answer that question. We need to be able to relatively quickly calculate the state of a room at any point in that room's history. In other words, we need to know the state of the room at each event in that room. This is done as follows: A sequence of events where the state is the same are grouped together into a `state_group`; the mapping is recorded in `event_to_state_groups`. (Technically speaking, since a state event usually changes the state in the room, we are recording the state of the room *after* the given event id: which is to say, to a handwavey simplification, the first event in a state group is normally a state event, and others in the same state group are normally non-state-events.) `state_groups` records, for each state group, the id of the room that we're looking at, and also the id of the first event in that group. (I'm not sure if that event id is used much in practice.) Now, if we stored all the room state for each `state_group`, that would be a huge amount of data. Instead, for each state group, we normally store the difference between the state in that group and some other state group, and only occasionally (every 100 state changes or so) record the full state. So, most state groups have an entry in `state_group_edges` (don't ask me why it's not a column in `state_groups`) which records the previous state group in the room, and `state_groups_state` records the differences in state since that previous state group. A full state group just records the event id for each piece of state in the room at that point. ## Known bugs with state groups There are various reasons that we can end up creating many more state groups than we need: see https://github.com/matrix-org/synapse/issues/3364 for more details. ## Compression tool There is a tool at https://github.com/matrix-org/rust-synapse-compress-state which can compress the `state_groups_state` on a room by-room basis (essentially, it reduces the number of "full" state groups). This can result in dramatic reductions of the storage used.synapse-1.53.0/docs/usage/administration/understanding_synapse_through_grafana_graphs.md000066400000000000000000000144341420514467300320730ustar00rootroot00000000000000## Understanding Synapse through Grafana graphs It is possible to monitor much of the internal state of Synapse using [Prometheus](https://prometheus.io) metrics and [Grafana](https://grafana.com/). A guide for configuring Synapse to provide metrics is available [here](../../metrics-howto.md) and information on setting up Grafana is [here](https://github.com/matrix-org/synapse/tree/master/contrib/grafana). In this setup, Prometheus will periodically scrape the information Synapse provides and store a record of it over time. Grafana is then used as an interface to query and present this information through a series of pretty graphs. Once you have grafana set up, and assuming you're using [our grafana dashboard template](https://github.com/matrix-org/synapse/blob/master/contrib/grafana/synapse.json), look for the following graphs when debugging a slow/overloaded Synapse: ## Message Event Send Time ![image](https://user-images.githubusercontent.com/1342360/82239409-a1c8e900-9930-11ea-8081-e4614e0c63f4.png) This, along with the CPU and Memory graphs, is a good way to check the general health of your Synapse instance. It represents how long it takes for a user on your homeserver to send a message. ## Transaction Count and Transaction Duration ![image](https://user-images.githubusercontent.com/1342360/82239985-8d392080-9931-11ea-80d0-843ab2f22e1e.png) ![image](https://user-images.githubusercontent.com/1342360/82240050-ab068580-9931-11ea-98f1-f94671cbac9a.png) These graphs show the database transactions that are occurring the most frequently, as well as those are that are taking the most amount of time to execute. ![image](https://user-images.githubusercontent.com/1342360/82240192-e86b1300-9931-11ea-9aac-3e2c9bfa6fdc.png) In the first graph, we can see obvious spikes corresponding to lots of `get_user_by_id` transactions. This would be useful information to figure out which part of the Synapse codebase is potentially creating a heavy load on the system. However, be sure to cross-reference this with Transaction Duration, which states that `get_users_by_id` is actually a very quick database transaction and isn't causing as much load as others, like `persist_events`: ![image](https://user-images.githubusercontent.com/1342360/82240467-62030100-9932-11ea-8db9-917f2d977fe1.png) Still, it's probably worth investigating why we're getting users from the database that often, and whether it's possible to reduce the amount of queries we make by adjusting our cache factor(s). The `persist_events` transaction is responsible for saving new room events to the Synapse database, so can often show a high transaction duration. ## Federation The charts in the "Federation" section show information about incoming and outgoing federation requests. Federation data can be divided into two basic types: - PDU (Persistent Data Unit) - room events: messages, state events (join/leave), etc. These are permanently stored in the database. - EDU (Ephemeral Data Unit) - other data, which need not be stored permanently, such as read receipts, typing notifications. The "Outgoing EDUs by type" chart shows the EDUs within outgoing federation requests by type: `m.device_list_update`, `m.direct_to_device`, `m.presence`, `m.receipt`, `m.typing`. If you see a large number of `m.presence` EDUs and are having trouble with too much CPU load, you can disable `presence` in the Synapse config. See also [#3971](https://github.com/matrix-org/synapse/issues/3971). ## Caches ![image](https://user-images.githubusercontent.com/1342360/82240572-8b239180-9932-11ea-96ff-6b5f0e57ebe5.png) ![image](https://user-images.githubusercontent.com/1342360/82240666-b8703f80-9932-11ea-86af-9f663988d8da.png) This is quite a useful graph. It shows how many times Synapse attempts to retrieve a piece of data from a cache which the cache did not contain, thus resulting in a call to the database. We can see here that the `_get_joined_profile_from_event_id` cache is being requested a lot, and often the data we're after is not cached. Cross-referencing this with the Eviction Rate graph, which shows that entries are being evicted from `_get_joined_profile_from_event_id` quite often: ![image](https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png) we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available [here](https://github.com/matrix-org/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642) (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage. ## Forward Extremities ![image](https://user-images.githubusercontent.com/1342360/82241440-13566680-9934-11ea-8b88-ba468db937ed.png) Forward extremities are the leaf events at the end of a DAG in a room, aka events that have no children. The more that exist in a room, the more [state resolution](https://spec.matrix.org/v1.1/server-server-api/#room-state-resolution) that Synapse needs to perform (hint: it's an expensive operation). While Synapse has code to prevent too many of these existing at one time in a room, bugs can sometimes make them crop up again. If a room has >10 forward extremities, it's worth checking which room is the culprit and potentially removing them using the SQL queries mentioned in [#1760](https://github.com/matrix-org/synapse/issues/1760). ## Garbage Collection ![image](https://user-images.githubusercontent.com/1342360/82241911-da6ac180-9934-11ea-9a0d-a311fe22acd0.png) Large spikes in garbage collection times (bigger than shown here, I'm talking in the multiple seconds range), can cause lots of problems in Synapse performance. It's more an indicator of problems, and a symptom of other problems though, so check other graphs for what might be causing it. ## Final Thoughts If you're still having performance problems with your Synapse instance and you've tried everything you can, it may just be a lack of system resources. Consider adding more CPU and RAM, and make use of [worker mode](../../workers.md) to make use of multiple CPU cores / multiple machines for your homeserver. synapse-1.53.0/docs/usage/administration/useful_sql_for_admins.md000066400000000000000000000117251420514467300252640ustar00rootroot00000000000000## Some useful SQL queries for Synapse Admins ## Size of full matrix db `SELECT pg_size_pretty( pg_database_size( 'matrix' ) );` ### Result example: ``` pg_size_pretty ---------------- 6420 MB (1 row) ``` ## Show top 20 larger rooms by state events count ```sql SELECT r.name, s.room_id, s.current_state_events FROM room_stats_current s LEFT JOIN room_stats_state r USING (room_id) ORDER BY current_state_events DESC LIMIT 20; ``` and by state_group_events count: ```sql SELECT rss.name, s.room_id, count(s.room_id) FROM state_groups_state s LEFT JOIN room_stats_state rss USING (room_id) GROUP BY s.room_id, rss.name ORDER BY count(s.room_id) DESC LIMIT 20; ``` plus same, but with join removed for performance reasons: ```sql SELECT s.room_id, count(s.room_id) FROM state_groups_state s GROUP BY s.room_id ORDER BY count(s.room_id) DESC LIMIT 20; ``` ## Show top 20 larger tables by row count ```sql SELECT relname, n_live_tup as rows FROM pg_stat_user_tables ORDER BY n_live_tup DESC LIMIT 20; ``` This query is quick, but may be very approximate, for exact number of rows use `SELECT COUNT(*) FROM `. ### Result example: ``` state_groups_state - 161687170 event_auth - 8584785 event_edges - 6995633 event_json - 6585916 event_reference_hashes - 6580990 events - 6578879 received_transactions - 5713989 event_to_state_groups - 4873377 stream_ordering_to_exterm - 4136285 current_state_delta_stream - 3770972 event_search - 3670521 state_events - 2845082 room_memberships - 2785854 cache_invalidation_stream - 2448218 state_groups - 1255467 state_group_edges - 1229849 current_state_events - 1222905 users_in_public_rooms - 364059 device_lists_stream - 326903 user_directory_search - 316433 ``` ## Show top 20 rooms by new events count in last 1 day: ```sql SELECT e.room_id, r.name, COUNT(e.event_id) cnt FROM events e LEFT JOIN room_stats_state r USING (room_id) WHERE e.origin_server_ts >= DATE_PART('epoch', NOW() - INTERVAL '1 day') * 1000 GROUP BY e.room_id, r.name ORDER BY cnt DESC LIMIT 20; ``` ## Show top 20 users on homeserver by sent events (messages) at last month: ```sql SELECT user_id, SUM(total_events) FROM user_stats_historical WHERE TO_TIMESTAMP(end_ts/1000) AT TIME ZONE 'UTC' > date_trunc('day', now() - interval '1 month') GROUP BY user_id ORDER BY SUM(total_events) DESC LIMIT 20; ``` ## Show last 100 messages from needed user, with room names: ```sql SELECT e.room_id, r.name, e.event_id, e.type, e.content, j.json FROM events e LEFT JOIN event_json j USING (room_id) LEFT JOIN room_stats_state r USING (room_id) WHERE sender = '@LOGIN:example.com' AND e.type = 'm.room.message' ORDER BY stream_ordering DESC LIMIT 100; ``` ## Show top 20 larger tables by storage size ```sql SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND C.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size(C.oid) DESC LIMIT 20; ``` ### Result example: ``` public.state_groups_state - 27 GB public.event_json - 9855 MB public.events - 3675 MB public.event_edges - 3404 MB public.received_transactions - 2745 MB public.event_reference_hashes - 1864 MB public.event_auth - 1775 MB public.stream_ordering_to_exterm - 1663 MB public.event_search - 1370 MB public.room_memberships - 1050 MB public.event_to_state_groups - 948 MB public.current_state_delta_stream - 711 MB public.state_events - 611 MB public.presence_stream - 530 MB public.current_state_events - 525 MB public.cache_invalidation_stream - 466 MB public.receipts_linearized - 279 MB public.state_groups - 160 MB public.device_lists_remote_cache - 124 MB public.state_group_edges - 122 MB ``` ## Show rooms with names, sorted by events in this rooms `echo "select event_json.room_id,room_stats_state.name from event_json,room_stats_state where room_stats_state.room_id=event_json.room_id" | psql synapse | sort | uniq -c | sort -n` ### Result example: ``` 9459 !FPUfgzXYWTKgIrwKxW:matrix.org | This Week in Matrix 9459 !FPUfgzXYWTKgIrwKxW:matrix.org | This Week in Matrix (TWIM) 17799 !iDIOImbmXxwNngznsa:matrix.org | Linux in Russian 18739 !GnEEPYXUhoaHbkFBNX:matrix.org | Riot Android 23373 !QtykxKocfZaZOUrTwp:matrix.org | Matrix HQ 39504 !gTQfWzbYncrtNrvEkB:matrix.org | ru.[matrix] 43601 !iNmaIQExDMeqdITdHH:matrix.org | Riot 43601 !iNmaIQExDMeqdITdHH:matrix.org | Riot Web/Desktop ``` ## Lookup room state info by list of room_id ```sql SELECT rss.room_id, rss.name, rss.canonical_alias, rss.topic, rss.encryption, rsc.joined_members, rsc.local_users_in_room, rss.join_rules FROM room_stats_state rss LEFT JOIN room_stats_current rsc USING (room_id) WHERE room_id IN (WHERE room_id IN ( '!OGEhHVWSdvArJzumhm:matrix.org', '!YTvKGNlinIzlkMTVRl:matrix.org' ) ```synapse-1.53.0/docs/usage/configuration/000077500000000000000000000000001420514467300201735ustar00rootroot00000000000000synapse-1.53.0/docs/usage/configuration/README.md000066400000000000000000000003471420514467300214560ustar00rootroot00000000000000# Configuration This section contains information on tweaking Synapse via the various options in the configuration file. A configuration file should have been generated when you [installed Synapse](../../setup/installation.html). synapse-1.53.0/docs/usage/configuration/homeserver_sample_config.md000066400000000000000000000011271420514467300255630ustar00rootroot00000000000000# Homeserver Sample Configuration File Below is a sample homeserver configuration file. The homeserver configuration file can be tweaked to change the behaviour of your homeserver. A restart of the server is generally required to apply any changes made to this file. Note that the contents below are *not* intended to be copied and used as the basis for a real homeserver.yaml. Instead, if you are starting from scratch, please generate a fresh config using Synapse by following the instructions in [Installation](../../setup/installation.md). ```yaml {{#include ../../sample_config.yaml}} ``` synapse-1.53.0/docs/usage/configuration/logging_sample_config.md000066400000000000000000000012021420514467300250240ustar00rootroot00000000000000# Logging Sample Configuration File Below is a sample logging configuration file. This file can be tweaked to control how your homeserver will output logs. A restart of the server is generally required to apply any changes made to this file. The value of the `log_config` option in your homeserver config should be the path to this file. Note that a default logging configuration (shown below) is created automatically alongside the homeserver config when following the [installation instructions](../../setup/installation.md). It should be named `.log.config` by default. ```yaml {{#include ../../sample_log_config.yaml}} ``` synapse-1.53.0/docs/usage/configuration/user_authentication/000077500000000000000000000000001420514467300242505ustar00rootroot00000000000000synapse-1.53.0/docs/usage/configuration/user_authentication/README.md000066400000000000000000000010241420514467300255240ustar00rootroot00000000000000# User Authentication Synapse supports multiple methods of authenticating users, either out-of-the-box or through custom pluggable authentication modules. Included in Synapse is support for authenticating users via: * A username and password. * An email address and password. * Single Sign-On through the SAML, Open ID Connect or CAS protocols. * JSON Web Tokens. * An administrator's shared secret. Synapse can additionally be extended to support custom authentication schemes through optional "password auth provider" modules.synapse-1.53.0/docs/usage/configuration/user_authentication/refresh_tokens.md000066400000000000000000000155201420514467300276160ustar00rootroot00000000000000# Refresh Tokens Synapse supports refresh tokens since version 1.49 (some earlier versions had support for an earlier, experimental draft of [MSC2918] which is not compatible). [MSC2918]: https://github.com/matrix-org/matrix-doc/blob/main/proposals/2918-refreshtokens.md#msc2918-refresh-tokens ## Background and motivation Synapse users' sessions are identified by **access tokens**; access tokens are issued to users on login. Each session gets a unique access token which identifies it; the access token must be kept secret as it grants access to the user's account. Traditionally, these access tokens were eternally valid (at least until the user explicitly chose to log out). In some cases, it may be desirable for these access tokens to expire so that the potential damage caused by leaking an access token is reduced. On the other hand, forcing a user to re-authenticate (log in again) often might be too much of an inconvenience. **Refresh tokens** are a mechanism to avoid some of this inconvenience whilst still getting most of the benefits of short access token lifetimes. Refresh tokens are also a concept present in OAuth 2 — further reading is available [here](https://datatracker.ietf.org/doc/html/rfc6749#section-1.5). When refresh tokens are in use, both an access token and a refresh token will be issued to users on login. The access token will expire after a predetermined amount of time, but otherwise works in the same way as before. When the access token is close to expiring (or has expired), the user's client should present the homeserver (Synapse) with the refresh token. The homeserver will then generate a new access token and refresh token for the user and return them. The old refresh token is invalidated and can not be used again*. Finally, refresh tokens also make it possible for sessions to be logged out if they are inactive for too long, before the session naturally ends; see the configuration guide below. *To prevent issues if clients lose connection half-way through refreshing a token, the refresh token is only invalidated once the new access token has been used at least once. For all intents and purposes, the above simplification is sufficient. ## Caveats There are some caveats: * If a third party gets both your access token and refresh token, they will be able to continue to enjoy access to your session. * This is still an improvement because you (the user) will notice when *your* session expires and you're not able to use your refresh token. That would be a giveaway that someone else has compromised your session. You would be able to log in again and terminate that session. Previously (with long-lived access tokens), a third party that has your access token could go undetected for a very long time. * Clients need to implement support for refresh tokens in order for them to be a useful mechanism. * It is up to homeserver administrators if they want to issue long-lived access tokens to clients not implementing refresh tokens. * For compatibility, it is likely that they should, at least until client support is widespread. * Users with clients that support refresh tokens will still benefit from the added security; it's not possible to downgrade a session to using long-lived access tokens so this effectively gives users the choice. * In a closed environment where all users use known clients, this may not be an issue as the homeserver administrator can know if the clients have refresh token support. In that case, the non-refreshable access token lifetime may be set to a short duration so that a similar level of security is provided. ## Configuration Guide The following configuration options, in the `registration` section, are related: * `session_lifetime`: maximum length of a session, even if it's refreshed. In other words, the client must log in again after this time period. In most cases, this can be unset (infinite) or set to a long time (years or months). * `refreshable_access_token_lifetime`: lifetime of access tokens that are created by clients supporting refresh tokens. This should be short; a good value might be 5 minutes (`5m`). * `nonrefreshable_access_token_lifetime`: lifetime of access tokens that are created by clients which don't support refresh tokens. Make this short if you want to effectively force use of refresh tokens. Make this long if you don't want to inconvenience users of clients which don't support refresh tokens (by forcing them to frequently re-authenticate using login credentials). * `refresh_token_lifetime`: lifetime of refresh tokens. In other words, the client must refresh within this time period to maintain its session. Unless you want to log inactive sessions out, it is often fine to use a long value here or even leave it unset (infinite). Beware that making it too short will inconvenience clients that do not connect very often, including mobile clients and clients of infrequent users (by making it more difficult for them to refresh in time, which may force them to need to re-authenticate using login credentials). **Note:** All four options above only apply when tokens are created (by logging in or refreshing). Changes to these settings do not apply retroactively. ### Using refresh token expiry to log out inactive sessions If you'd like to force sessions to be logged out upon inactivity, you can enable refreshable access token expiry and refresh token expiry. This works because a client must refresh at least once within a period of `refresh_token_lifetime` in order to maintain valid credentials to access the account. (It's suggested that `refresh_token_lifetime` should be longer than `refreshable_access_token_lifetime` and this section assumes that to be the case for simplicity.) Note: this will only affect sessions using refresh tokens. You may wish to set a short `nonrefreshable_access_token_lifetime` to prevent this being bypassed by clients that do not support refresh tokens. #### Choosing values that guarantee permitting some inactivity It may be desirable to permit some short periods of inactivity, for example to accommodate brief outages in client connectivity. The following model aims to provide guidance for choosing `refresh_token_lifetime` and `refreshable_access_token_lifetime` to satisfy requirements of the form: 1. inactivity longer than `L` **MUST** cause the session to be logged out; and 2. inactivity shorter than `S` **MUST NOT** cause the session to be logged out. This model makes the weakest assumption that all active clients will refresh as needed to maintain an active access token, but no sooner. *In reality, clients may refresh more often than this model assumes, but the above requirements will still hold.* To satisfy the above model, * `refresh_token_lifetime` should be set to `L`; and * `refreshable_access_token_lifetime` should be set to `L - S`. synapse-1.53.0/docs/usage/configuration/user_authentication/single_sign_on/000077500000000000000000000000001420514467300272455ustar00rootroot00000000000000synapse-1.53.0/docs/usage/configuration/user_authentication/single_sign_on/README.md000066400000000000000000000003171420514467300305250ustar00rootroot00000000000000# Single Sign-On Synapse supports single sign-on through the SAML, Open ID Connect or CAS protocols. LDAP and other login methods are supported through first and third-party password auth provider modules.synapse-1.53.0/docs/usage/configuration/user_authentication/single_sign_on/cas.md000066400000000000000000000005061420514467300303360ustar00rootroot00000000000000# CAS Synapse supports authenticating users via the [Central Authentication Service protocol](https://en.wikipedia.org/wiki/Central_Authentication_Service) (CAS) natively. Please see the `cas_config` and `sso` sections of the [Synapse configuration file](../../../configuration/homeserver_sample_config.md) for more details.synapse-1.53.0/docs/usage/configuration/user_authentication/single_sign_on/saml.md000066400000000000000000000005221420514467300305220ustar00rootroot00000000000000# SAML Synapse supports authenticating users via the [Security Assertion Markup Language](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language) (SAML) protocol natively. Please see the `saml2_config` and `sso` sections of the [Synapse configuration file](../../../configuration/homeserver_sample_config.md) for more details.synapse-1.53.0/docs/user_directory.md000066400000000000000000000045311420514467300176070ustar00rootroot00000000000000User Directory API Implementation ================================= The user directory is currently maintained based on the 'visible' users on this particular server - i.e. ones which your account shares a room with, or who are present in a publicly viewable room present on the server. The directory info is stored in various tables, which can (typically after DB corruption) get stale or out of sync. If this happens, for now the solution to fix it is to use the [admin API](usage/administration/admin_api/background_updates.md#run) and execute the job `regenerate_directory`. This should then start a background task to flush the current tables and regenerate the directory. Data model ---------- There are five relevant tables that collectively form the "user directory". Three of them track a master list of all the users we could search for. The last two (collectively called the "search tables") track who can see who. From all of these tables we exclude three types of local user: - support users - appservice users - deactivated users * `user_directory`. This contains the user_id, display name and avatar we'll return when you search the directory. - Because there's only one directory entry per user, it's important that we only ever put publicly visible names here. Otherwise we might leak a private nickname or avatar used in a private room. - Indexed on rooms. Indexed on users. * `user_directory_search`. To be joined to `user_directory`. It contains an extra column that enables full text search based on user ids and display names. Different schemas for SQLite and Postgres with different code paths to match. - Indexed on the full text search data. Indexed on users. * `user_directory_stream_pos`. When the initial background update to populate the directory is complete, we record a stream position here. This indicates that synapse should now listen for room changes and incrementally update the directory where necessary. * `users_in_public_rooms`. Contains associations between users and the public rooms they're in. Used to determine which users are in public rooms and should be publicly visible in the directory. * `users_who_share_private_rooms`. Rows are triples `(L, M, room id)` where `L` is a local user and `M` is a local or remote user. `L` and `M` should be different, but this isn't enforced by a constraint. synapse-1.53.0/docs/website_files/000077500000000000000000000000001420514467300170445ustar00rootroot00000000000000synapse-1.53.0/docs/website_files/README.md000066400000000000000000000032601420514467300203240ustar00rootroot00000000000000# Documentation Website Files and Assets This directory contains extra files for modifying the look and functionality of [mdbook](https://github.com/rust-lang/mdBook), the documentation software that's used to generate Synapse's documentation website. The configuration options in the `output.html` section of [book.toml](../../book.toml) point to additional JS/CSS in this directory that are added on each page load. In addition, the `theme` directory contains files that overwrite their counterparts in each of the default themes included with mdbook. Currently we use these files to generate a floating Table of Contents panel. The code for which was partially taken from [JorelAli/mdBook-pagetoc](https://github.com/JorelAli/mdBook-pagetoc/) before being modified such that it scrolls with the content of the page. This is handled by the `table-of-contents.js/css` files. The table of contents panel only appears on pages that have more than one header, as well as only appearing on desktop-sized monitors. We remove the navigation arrows which typically appear on the left and right side of the screen on desktop as they interfere with the table of contents. This is handled by the `remove-nav-buttons.css` file. Finally, we also stylise the chapter titles in the left sidebar by indenting them slightly so that they are more visually distinguishable from the section headers (the bold titles). This is done through the `indent-section-headers.css` file. More information can be found in mdbook's official documentation for [injecting page JS/CSS](https://rust-lang.github.io/mdBook/format/config.html) and [customising the default themes](https://rust-lang.github.io/mdBook/format/theme/index.html).synapse-1.53.0/docs/website_files/indent-section-headers.css000066400000000000000000000002411420514467300241070ustar00rootroot00000000000000/* * Indents each chapter title in the left sidebar so that they aren't * at the same level as the section headers. */ .chapter-item { margin-left: 1em; }synapse-1.53.0/docs/website_files/remove-nav-buttons.css000066400000000000000000000003741420514467300233350ustar00rootroot00000000000000/* Remove the prev, next chapter buttons as they interfere with the * table of contents. * Note that the table of contents only appears on desktop, thus we * only remove the desktop (wide) chapter buttons. */ .nav-wide-wrapper { display: none }synapse-1.53.0/docs/website_files/table-of-contents.css000066400000000000000000000021361420514467300231040ustar00rootroot00000000000000:root { --pagetoc-width: 250px; } @media only screen and (max-width:1439px) { .sidetoc { display: none; } } @media only screen and (min-width:1440px) { main { position: relative; margin-left: 100px !important; margin-right: var(--pagetoc-width) !important; } .sidetoc { margin-left: auto; margin-right: auto; left: calc(100% + (var(--content-max-width))/4 - 140px); position: absolute; text-align: right; } .pagetoc { position: fixed; width: var(--pagetoc-width); overflow: auto; right: 20px; height: calc(100% - var(--menu-bar-height)); } .pagetoc a { color: var(--fg) !important; display: block; padding: 5px 15px 5px 10px; text-align: left; text-decoration: none; } .pagetoc a:hover, .pagetoc a.active { background: var(--sidebar-bg) !important; color: var(--sidebar-fg) !important; } .pagetoc .active { background: var(--sidebar-bg); color: var(--sidebar-fg); } } synapse-1.53.0/docs/website_files/table-of-contents.js000066400000000000000000000076311420514467300227350ustar00rootroot00000000000000const getPageToc = () => document.getElementsByClassName('pagetoc')[0]; const pageToc = getPageToc(); const pageTocChildren = [...pageToc.children]; const headers = [...document.getElementsByClassName('header')]; // Select highlighted item in ToC when clicking an item pageTocChildren.forEach(child => { child.addEventHandler('click', () => { pageTocChildren.forEach(child => { child.classList.remove('active'); }); child.classList.add('active'); }); }); /** * Test whether a node is in the viewport */ function isInViewport(node) { const rect = node.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth); } /** * Set a new ToC entry. * Clear any previously highlighted ToC items, set the new one, * and adjust the ToC scroll position. */ function setTocEntry() { let activeEntry; const pageTocChildren = [...getPageToc().children]; // Calculate which header is the current one at the top of screen headers.forEach(header => { if (window.pageYOffset >= header.offsetTop) { activeEntry = header; } }); // Update selected item in ToC when scrolling pageTocChildren.forEach(child => { if (activeEntry.href.localeCompare(child.href) === 0) { child.classList.add('active'); } else { child.classList.remove('active'); } }); let tocEntryForLocation = document.querySelector(`nav a[href="${activeEntry.href}"]`); if (tocEntryForLocation) { const headingForLocation = document.querySelector(activeEntry.hash); if (headingForLocation && isInViewport(headingForLocation)) { // Update ToC scroll const nav = getPageToc(); const content = document.querySelector('html'); if (content.scrollTop !== 0) { nav.scrollTo({ top: tocEntryForLocation.offsetTop - 100, left: 0, behavior: 'smooth', }); } else { nav.scrollTop = 0; } } } } /** * Populate sidebar on load */ window.addEventListener('load', () => { // Only create table of contents if there is more than one header on the page if (headers.length <= 1) { return; } // Create an entry in the page table of contents for each header in the document headers.forEach((header, index) => { const link = document.createElement('a'); // Indent shows hierarchy let indent = '0px'; switch (header.parentElement.tagName) { case 'H1': indent = '5px'; break; case 'H2': indent = '20px'; break; case 'H3': indent = '30px'; break; case 'H4': indent = '40px'; break; case 'H5': indent = '50px'; break; case 'H6': indent = '60px'; break; default: break; } let tocEntry; if (index == 0) { // Create a bolded title for the first element tocEntry = document.createElement("strong"); tocEntry.innerHTML = header.text; } else { // All other elements are non-bold tocEntry = document.createTextNode(header.text); } link.appendChild(tocEntry); link.style.paddingLeft = indent; link.href = header.href; pageToc.appendChild(link); }); setTocEntry.call(); }); // Handle active headers on scroll, if there is more than one header on the page if (headers.length > 1) { window.addEventListener('scroll', setTocEntry); } synapse-1.53.0/docs/website_files/theme/000077500000000000000000000000001420514467300201465ustar00rootroot00000000000000synapse-1.53.0/docs/website_files/theme/index.hbs000066400000000000000000000346741420514467300217710ustar00rootroot00000000000000 {{ title }} {{#if is_print }} {{/if}} {{#if base_url}} {{/if}} {{> head}} {{#if favicon_svg}} {{/if}} {{#if favicon_png}} {{/if}} {{#if print_enable}} {{/if}} {{#if copy_fonts}} {{/if}} {{#each additional_css}} {{/each}} {{#if mathjax_support}} {{/if}}
{{> header}} {{#if search_enabled}} {{/if}}
{{{ content }}}
{{#if livereload}} {{/if}} {{#if google_analytics}} {{/if}} {{#if playground_line_numbers}} {{/if}} {{#if playground_copyable}} {{/if}} {{#if playground_js}} {{/if}} {{#if search_js}} {{/if}} {{#each additional_js}} {{/each}} {{#if is_print}} {{#if mathjax_support}} {{else}} {{/if}} {{/if}} synapse-1.53.0/docs/welcome_and_overview.md000066400000000000000000000066041420514467300207530ustar00rootroot00000000000000# Introduction Welcome to the documentation repository for Synapse, a [Matrix](https://matrix.org) homeserver implementation developed by the matrix.org core team. ## Installing and using Synapse This documentation covers topics for **installation**, **configuration** and **maintainence** of your Synapse process: * Learn how to [install](setup/installation.md) and [configure](usage/configuration/index.html) your own instance, perhaps with [Single Sign-On](usage/configuration/user_authentication/index.html). * See how to [upgrade](upgrade.md) between Synapse versions. * Administer your instance using the [Admin API](usage/administration/admin_api/index.html), installing [pluggable modules](modules/index.html), or by accessing the [manhole](manhole.md). * Learn how to [read log lines](usage/administration/request_log.md), configure [logging](usage/configuration/logging_sample_config.md) or set up [structured logging](structured_logging.md). * Scale Synapse through additional [worker processes](workers.md). * Set up [monitoring and metrics](metrics-howto.md) to keep an eye on your Synapse instance's performance. ## Developing on Synapse Contributions are welcome! Synapse is primarily written in [Python](https://python.org). As a developer, you may be interested in the following documentation: * Read the [Contributing Guide](development/contributing_guide.md). It is meant to walk new contributors through the process of developing and submitting a change to the Synapse codebase (which is [hosted on GitHub](https://github.com/matrix-org/synapse)). * Set up your [development environment](development/contributing_guide.md#2-what-do-i-need), then learn how to [lint](development/contributing_guide.md#run-the-linters) and [test](development/contributing_guide.md#8-test-test-test) your code. * Look at [the issue tracker](https://github.com/matrix-org/synapse/issues) for bugs to fix or features to add. If you're new, it may be best to start with those labeled [good first issue](https://github.com/matrix-org/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). * Understand [how Synapse is built](development/internal_documentation/index.html), how to [migrate database schemas](development/database_schema.md), learn about [federation](federate.md) and how to [set up a local federation](federate.md#running-a-demo-federation-of-synapses) for development. * We like to keep our `git` history clean. [Learn](development/git.md) how to do so! * And finally, contribute to this documentation! The source for which is [located here](https://github.com/matrix-org/synapse/tree/develop/docs). ## Donating to Synapse development Want to help keep Synapse going but don't know how to code? Synapse is a [Matrix.org Foundation](https://matrix.org) project. Consider becoming a supportor on [Liberapay](https://liberapay.com/matrixdotorg), [Patreon](https://patreon.com/matrixdotorg) or through [PayPal](https://paypal.me/matrixdotorg) via a one-time donation. If you are an organisation or enterprise and would like to sponsor development, reach out to us over email at: support (at) matrix.org ## Reporting a security vulnerability If you've found a security issue in Synapse or any other Matrix.org Foundation project, please report it to us in accordance with our [Security Disclosure Policy](https://www.matrix.org/security-disclosure-policy/). Thank you! synapse-1.53.0/docs/workers.md000066400000000000000000000532651420514467300162510ustar00rootroot00000000000000# Scaling synapse via workers For small instances it recommended to run Synapse in the default monolith mode. For larger instances where performance is a concern it can be helpful to split out functionality into multiple separate python processes. These processes are called 'workers', and are (eventually) intended to scale horizontally independently. Synapse's worker support is under active development and subject to change as we attempt to rapidly scale ever larger Synapse instances. However we are documenting it here to help admins needing a highly scalable Synapse instance similar to the one running `matrix.org`. All processes continue to share the same database instance, and as such, workers only work with PostgreSQL-based Synapse deployments. SQLite should only be used for demo purposes and any admin considering workers should already be running PostgreSQL. See also [Matrix.org blog post](https://matrix.org/blog/2020/11/03/how-we-fixed-synapses-scalability) for a higher level overview. ## Main process/worker communication The processes communicate with each other via a Synapse-specific protocol called 'replication' (analogous to MySQL- or Postgres-style database replication) which feeds streams of newly written data between processes so they can be kept in sync with the database state. When configured to do so, Synapse uses a [Redis pub/sub channel](https://redis.io/topics/pubsub) to send the replication stream between all configured Synapse processes. Additionally, processes may make HTTP requests to each other, primarily for operations which need to wait for a reply ─ such as sending an event. Redis support was added in v1.13.0 with it becoming the recommended method in v1.18.0. It replaced the old direct TCP connections (which is deprecated as of v1.18.0) to the main process. With Redis, rather than all the workers connecting to the main process, all the workers and the main process connect to Redis, which relays replication commands between processes. This can give a significant cpu saving on the main process and will be a prerequisite for upcoming performance improvements. If Redis support is enabled Synapse will use it as a shared cache, as well as a pub/sub mechanism. See the [Architectural diagram](#architectural-diagram) section at the end for a visualisation of what this looks like. ## Setting up workers A Redis server is required to manage the communication between the processes. The Redis server should be installed following the normal procedure for your distribution (e.g. `apt install redis-server` on Debian). It is safe to use an existing Redis deployment if you have one. Once installed, check that Redis is running and accessible from the host running Synapse, for example by executing `echo PING | nc -q1 localhost 6379` and seeing a response of `+PONG`. The appropriate dependencies must also be installed for Synapse. If using a virtualenv, these can be installed with: ```sh pip install "matrix-synapse[redis]" ``` Note that these dependencies are included when synapse is installed with `pip install matrix-synapse[all]`. They are also included in the debian packages from `matrix.org` and in the docker images at https://hub.docker.com/r/matrixdotorg/synapse/. To make effective use of the workers, you will need to configure an HTTP reverse-proxy such as nginx or haproxy, which will direct incoming requests to the correct worker, or to the main synapse instance. See [the reverse proxy documentation](reverse_proxy.md) for information on setting up a reverse proxy. When using workers, each worker process has its own configuration file which contains settings specific to that worker, such as the HTTP listener that it provides (if any), logging configuration, etc. Normally, the worker processes are configured to read from a shared configuration file as well as the worker-specific configuration files. This makes it easier to keep common configuration settings synchronised across all the processes. The main process is somewhat special in this respect: it does not normally need its own configuration file and can take all of its configuration from the shared configuration file. ### Shared configuration Normally, only a couple of changes are needed to make an existing configuration file suitable for use with workers. First, you need to enable an "HTTP replication listener" for the main process; and secondly, you need to enable redis-based replication. Optionally, a shared secret can be used to authenticate HTTP traffic between workers. For example: ```yaml # extend the existing `listeners` section. This defines the ports that the # main process will listen on. listeners: # The HTTP replication port - port: 9093 bind_address: '127.0.0.1' type: http resources: - names: [replication] # Add a random shared secret to authenticate traffic. worker_replication_secret: "" redis: enabled: true ``` See the sample config for the full documentation of each option. Under **no circumstances** should the replication listener be exposed to the public internet; it has no authentication and is unencrypted. ### Worker configuration In the config file for each worker, you must specify the type of worker application (`worker_app`), and you should specify a unique name for the worker (`worker_name`). The currently available worker applications are listed below. You must also specify the HTTP replication endpoint that it should talk to on the main synapse process. `worker_replication_host` should specify the host of the main synapse and `worker_replication_http_port` should point to the HTTP replication port. If the worker will handle HTTP requests then the `worker_listeners` option should be set with a `http` listener, in the same way as the `listeners` option in the shared config. For example: ```yaml worker_app: synapse.app.generic_worker worker_name: worker1 # The replication listener on the main synapse process. worker_replication_host: 127.0.0.1 worker_replication_http_port: 9093 worker_listeners: - type: http port: 8083 resources: - names: - client - federation worker_log_config: /home/matrix/synapse/config/worker1_log_config.yaml ``` ...is a full configuration for a generic worker instance, which will expose a plain HTTP endpoint on port 8083 separately serving various endpoints, e.g. `/sync`, which are listed below. Obviously you should configure your reverse-proxy to route the relevant endpoints to the worker (`localhost:8083` in the above example). ### Running Synapse with workers Finally, you need to start your worker processes. This can be done with either `synctl` or your distribution's preferred service manager such as `systemd`. We recommend the use of `systemd` where available: for information on setting up `systemd` to start synapse workers, see [Systemd with Workers](systemd-with-workers). To use `synctl`, see [Using synctl with Workers](synctl_workers.md). ## Available worker applications ### `synapse.app.generic_worker` This worker can handle API requests matching the following regular expressions: # Sync requests ^/_matrix/client/(v2_alpha|r0|v3)/sync$ ^/_matrix/client/(api/v1|v2_alpha|r0|v3)/events$ ^/_matrix/client/(api/v1|r0|v3)/initialSync$ ^/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$ # Federation requests ^/_matrix/federation/v1/event/ ^/_matrix/federation/v1/state/ ^/_matrix/federation/v1/state_ids/ ^/_matrix/federation/v1/backfill/ ^/_matrix/federation/v1/get_missing_events/ ^/_matrix/federation/v1/publicRooms ^/_matrix/federation/v1/query/ ^/_matrix/federation/v1/make_join/ ^/_matrix/federation/v1/make_leave/ ^/_matrix/federation/v1/send_join/ ^/_matrix/federation/v2/send_join/ ^/_matrix/federation/v1/send_leave/ ^/_matrix/federation/v2/send_leave/ ^/_matrix/federation/v1/invite/ ^/_matrix/federation/v2/invite/ ^/_matrix/federation/v1/query_auth/ ^/_matrix/federation/v1/event_auth/ ^/_matrix/federation/v1/exchange_third_party_invite/ ^/_matrix/federation/v1/user/devices/ ^/_matrix/federation/v1/get_groups_publicised$ ^/_matrix/key/v2/query ^/_matrix/federation/unstable/org.matrix.msc2946/spaces/ ^/_matrix/federation/(v1|unstable/org.matrix.msc2946)/hierarchy/ # Inbound federation transaction request ^/_matrix/federation/v1/send/ # Client API requests ^/_matrix/client/(api/v1|r0|v3|unstable)/createRoom$ ^/_matrix/client/(api/v1|r0|v3|unstable)/publicRooms$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/joined_members$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/context/.*$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/members$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state$ ^/_matrix/client/unstable/org.matrix.msc2946/rooms/.*/spaces$ ^/_matrix/client/(v1|unstable/org.matrix.msc2946)/rooms/.*/hierarchy$ ^/_matrix/client/unstable/im.nheko.summary/rooms/.*/summary$ ^/_matrix/client/(api/v1|r0|v3|unstable)/account/3pid$ ^/_matrix/client/(api/v1|r0|v3|unstable)/devices$ ^/_matrix/client/(api/v1|r0|v3|unstable)/keys/query$ ^/_matrix/client/(api/v1|r0|v3|unstable)/keys/changes$ ^/_matrix/client/versions$ ^/_matrix/client/(api/v1|r0|v3|unstable)/voip/turnServer$ ^/_matrix/client/(api/v1|r0|v3|unstable)/joined_groups$ ^/_matrix/client/(api/v1|r0|v3|unstable)/publicised_groups$ ^/_matrix/client/(api/v1|r0|v3|unstable)/publicised_groups/ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/event/ ^/_matrix/client/(api/v1|r0|v3|unstable)/joined_rooms$ ^/_matrix/client/(api/v1|r0|v3|unstable)/search$ # Registration/login requests ^/_matrix/client/(api/v1|r0|v3|unstable)/login$ ^/_matrix/client/(r0|v3|unstable)/register$ ^/_matrix/client/v1/register/m.login.registration_token/validity$ # Event sending requests ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/redact ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/send ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state/ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick)$ ^/_matrix/client/(api/v1|r0|v3|unstable)/join/ ^/_matrix/client/(api/v1|r0|v3|unstable)/profile/ Additionally, the following REST endpoints can be handled for GET requests: ^/_matrix/federation/v1/groups/ Pagination requests can also be handled, but all requests for a given room must be routed to the same instance. Additionally, care must be taken to ensure that the purge history admin API is not used while pagination requests for the room are in flight: ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/messages$ Additionally, the following endpoints should be included if Synapse is configured to use SSO (you only need to include the ones for whichever SSO provider you're using): # for all SSO providers ^/_matrix/client/(api/v1|r0|v3|unstable)/login/sso/redirect ^/_synapse/client/pick_idp$ ^/_synapse/client/pick_username ^/_synapse/client/new_user_consent$ ^/_synapse/client/sso_register$ # OpenID Connect requests. ^/_synapse/client/oidc/callback$ # SAML requests. ^/_synapse/client/saml2/authn_response$ # CAS requests. ^/_matrix/client/(api/v1|r0|v3|unstable)/login/cas/ticket$ Ensure that all SSO logins go to a single process. For multiple workers not handling the SSO endpoints properly, see [#7530](https://github.com/matrix-org/synapse/issues/7530) and [#9427](https://github.com/matrix-org/synapse/issues/9427). Note that a HTTP listener with `client` and `federation` resources must be configured in the `worker_listeners` option in the worker config. #### Load balancing It is possible to run multiple instances of this worker app, with incoming requests being load-balanced between them by the reverse-proxy. However, different endpoints have different characteristics and so admins may wish to run multiple groups of workers handling different endpoints so that load balancing can be done in different ways. For `/sync` and `/initialSync` requests it will be more efficient if all requests from a particular user are routed to a single instance. Extracting a user ID from the access token or `Authorization` header is currently left as an exercise for the reader. Admins may additionally wish to separate out `/sync` requests that have a `since` query parameter from those that don't (and `/initialSync`), as requests that don't are known as "initial sync" that happens when a user logs in on a new device and can be *very* resource intensive, so isolating these requests will stop them from interfering with other users ongoing syncs. Federation and client requests can be balanced via simple round robin. The inbound federation transaction request `^/_matrix/federation/v1/send/` should be balanced by source IP so that transactions from the same remote server go to the same process. Registration/login requests can be handled separately purely to help ensure that unexpected load doesn't affect new logins and sign ups. Finally, event sending requests can be balanced by the room ID in the URI (or the full URI, or even just round robin), the room ID is the path component after `/rooms/`. If there is a large bridge connected that is sending or may send lots of events, then a dedicated set of workers can be provisioned to limit the effects of bursts of events from that bridge on events sent by normal users. #### Stream writers Additionally, there is *experimental* support for moving writing of specific streams (such as events) off of the main process to a particular worker. (This is only supported with Redis-based replication.) Currently supported streams are `events` and `typing`. To enable this, the worker must have a HTTP replication listener configured, have a `worker_name` and be listed in the `instance_map` config. For example to move event persistence off to a dedicated worker, the shared configuration would include: ```yaml instance_map: event_persister1: host: localhost port: 8034 stream_writers: events: event_persister1 ``` The `events` stream also experimentally supports having multiple writers, where work is sharded between them by room ID. Note that you *must* restart all worker instances when adding or removing event persisters. An example `stream_writers` configuration with multiple writers: ```yaml stream_writers: events: - event_persister1 - event_persister2 ``` #### Background tasks There is also *experimental* support for moving background tasks to a separate worker. Background tasks are run periodically or started via replication. Exactly which tasks are configured to run depends on your Synapse configuration (e.g. if stats is enabled). To enable this, the worker must have a `worker_name` and can be configured to run background tasks. For example, to move background tasks to a dedicated worker, the shared configuration would include: ```yaml run_background_tasks_on: background_worker ``` You might also wish to investigate the `update_user_directory` and `media_instance_running_background_jobs` settings. ### `synapse.app.pusher` Handles sending push notifications to sygnal and email. Doesn't handle any REST endpoints itself, but you should set `start_pushers: False` in the shared configuration file to stop the main synapse sending push notifications. To run multiple instances at once the `pusher_instances` option should list all pusher instances by their worker name, e.g.: ```yaml pusher_instances: - pusher_worker1 - pusher_worker2 ``` ### `synapse.app.appservice` Handles sending output traffic to Application Services. Doesn't handle any REST endpoints itself, but you should set `notify_appservices: False` in the shared configuration file to stop the main synapse sending appservice notifications. Note this worker cannot be load-balanced: only one instance should be active. ### `synapse.app.federation_sender` Handles sending federation traffic to other servers. Doesn't handle any REST endpoints itself, but you should set `send_federation: False` in the shared configuration file to stop the main synapse sending this traffic. If running multiple federation senders then you must list each instance in the `federation_sender_instances` option by their `worker_name`. All instances must be stopped and started when adding or removing instances. For example: ```yaml federation_sender_instances: - federation_sender1 - federation_sender2 ``` ### `synapse.app.media_repository` Handles the media repository. It can handle all endpoints starting with: /_matrix/media/ ... and the following regular expressions matching media-specific administration APIs: ^/_synapse/admin/v1/purge_media_cache$ ^/_synapse/admin/v1/room/.*/media.*$ ^/_synapse/admin/v1/user/.*/media.*$ ^/_synapse/admin/v1/media/.*$ ^/_synapse/admin/v1/quarantine_media/.*$ ^/_synapse/admin/v1/users/.*/media$ You should also set `enable_media_repo: False` in the shared configuration file to stop the main synapse running background jobs related to managing the media repository. Note that doing so will prevent the main process from being able to handle the above endpoints. In the `media_repository` worker configuration file, configure the http listener to expose the `media` resource. For example: ```yaml worker_listeners: - type: http port: 8085 resources: - names: - media ``` Note that if running multiple media repositories they must be on the same server and you must configure a single instance to run the background tasks, e.g.: ```yaml media_instance_running_background_jobs: "media-repository-1" ``` Note that if a reverse proxy is used , then `/_matrix/media/` must be routed for both inbound client and federation requests (if they are handled separately). ### `synapse.app.user_dir` Handles searches in the user directory. It can handle REST endpoints matching the following regular expressions: ^/_matrix/client/(api/v1|r0|v3|unstable)/user_directory/search$ When using this worker you must also set `update_user_directory: False` in the shared configuration file to stop the main synapse running background jobs related to updating the user directory. ### `synapse.app.frontend_proxy` Proxies some frequently-requested client endpoints to add caching and remove load from the main synapse. It can handle REST endpoints matching the following regular expressions: ^/_matrix/client/(api/v1|r0|v3|unstable)/keys/upload If `use_presence` is False in the homeserver config, it can also handle REST endpoints matching the following regular expressions: ^/_matrix/client/(api/v1|r0|v3|unstable)/presence/[^/]+/status This "stub" presence handler will pass through `GET` request but make the `PUT` effectively a no-op. It will proxy any requests it cannot handle to the main synapse instance. It must therefore be configured with the location of the main instance, via the `worker_main_http_uri` setting in the `frontend_proxy` worker configuration file. For example: ```yaml worker_main_http_uri: http://127.0.0.1:8008 ``` ### Historical apps *Note:* Historically there used to be more apps, however they have been amalgamated into a single `synapse.app.generic_worker` app. The remaining apps are ones that do specific processing unrelated to requests, e.g. the `pusher` that handles sending out push notifications for new events. The intention is for all these to be folded into the `generic_worker` app and to use config to define which processes handle the various proccessing such as push notifications. ## Migration from old config There are two main independent changes that have been made: introducing Redis support and merging apps into `synapse.app.generic_worker`. Both these changes are backwards compatible and so no changes to the config are required, however server admins are encouraged to plan to migrate to Redis as the old style direct TCP replication config is deprecated. To migrate to Redis add the `redis` config as above, and optionally remove the TCP `replication` listener from master and `worker_replication_port` from worker config. To migrate apps to use `synapse.app.generic_worker` simply update the `worker_app` option in the worker configs, and where worker are started (e.g. in systemd service files, but not required for synctl). ## Architectural diagram The following shows an example setup using Redis and a reverse proxy: ``` Clients & Federation | v +-----------+ | | | Reverse | | Proxy | | | +-----------+ | | | | | | HTTP requests +-------------------+ | +-----------+ | +---+ | | | | v v v +--------------+ +--------------+ +--------------+ +--------------+ | Main | | Generic | | Generic | | Event | | Process | | Worker 1 | | Worker 2 | | Persister | +--------------+ +--------------+ +--------------+ +--------------+ ^ ^ | ^ | | ^ | ^ ^ | | | | | | | | | | | | | | | HTTP | | | | | | +----------+<--|---|---------+ | | | | | | +-------------|-->+----------+ | | | | | | | | | v v v v ==================================================================== Redis pub/sub channel ``` synapse-1.53.0/mypy.ini000066400000000000000000000221171420514467300147720ustar00rootroot00000000000000[mypy] namespace_packages = True plugins = mypy_zope:plugin, scripts-dev/mypy_synapse_plugin.py follow_imports = normal check_untyped_defs = True show_error_codes = True show_traceback = True mypy_path = stubs warn_unreachable = True local_partial_types = True no_implicit_optional = True files = scripts-dev/sign_json, setup.py, synapse/, tests/ # Note: Better exclusion syntax coming in mypy > 0.910 # https://github.com/python/mypy/pull/11329 # # For now, set the (?x) flag enable "verbose" regexes # https://docs.python.org/3/library/re.html#re.X exclude = (?x) ^( |synapse/storage/databases/__init__.py |synapse/storage/databases/main/__init__.py |synapse/storage/databases/main/cache.py |synapse/storage/databases/main/devices.py |synapse/storage/databases/main/event_federation.py |synapse/storage/databases/main/group_server.py |synapse/storage/databases/main/metrics.py |synapse/storage/databases/main/monthly_active_users.py |synapse/storage/databases/main/presence.py |synapse/storage/databases/main/purge_events.py |synapse/storage/databases/main/push_rule.py |synapse/storage/databases/main/receipts.py |synapse/storage/databases/main/roommember.py |synapse/storage/databases/main/search.py |synapse/storage/databases/main/state.py |synapse/storage/databases/main/user_directory.py |synapse/storage/schema/ |tests/api/test_auth.py |tests/api/test_ratelimiting.py |tests/app/test_openid_listener.py |tests/appservice/test_scheduler.py |tests/config/test_cache.py |tests/config/test_tls.py |tests/crypto/test_keyring.py |tests/events/test_presence_router.py |tests/events/test_utils.py |tests/federation/test_federation_catch_up.py |tests/federation/test_federation_sender.py |tests/federation/test_federation_server.py |tests/federation/transport/test_knocking.py |tests/federation/transport/test_server.py |tests/handlers/test_cas.py |tests/handlers/test_directory.py |tests/handlers/test_e2e_keys.py |tests/handlers/test_federation.py |tests/handlers/test_oidc.py |tests/handlers/test_presence.py |tests/handlers/test_profile.py |tests/handlers/test_saml.py |tests/handlers/test_typing.py |tests/http/federation/test_matrix_federation_agent.py |tests/http/federation/test_srv_resolver.py |tests/http/test_fedclient.py |tests/http/test_proxyagent.py |tests/http/test_servlet.py |tests/http/test_site.py |tests/logging/__init__.py |tests/logging/test_terse_json.py |tests/module_api/test_api.py |tests/push/test_email.py |tests/push/test_http.py |tests/push/test_presentable_names.py |tests/push/test_push_rule_evaluator.py |tests/rest/client/test_account.py |tests/rest/client/test_events.py |tests/rest/client/test_filter.py |tests/rest/client/test_groups.py |tests/rest/client/test_register.py |tests/rest/client/test_report_event.py |tests/rest/client/test_rooms.py |tests/rest/client/test_third_party_rules.py |tests/rest/client/test_transactions.py |tests/rest/client/test_typing.py |tests/rest/client/utils.py |tests/rest/key/v2/test_remote_key_resource.py |tests/rest/media/v1/test_base.py |tests/rest/media/v1/test_media_storage.py |tests/rest/media/v1/test_url_preview.py |tests/scripts/test_new_matrix_user.py |tests/server.py |tests/server_notices/test_resource_limits_server_notices.py |tests/state/test_v2.py |tests/storage/test_background_update.py |tests/storage/test_base.py |tests/storage/test_client_ips.py |tests/storage/test_database.py |tests/storage/test_event_federation.py |tests/storage/test_id_generators.py |tests/storage/test_roommember.py |tests/test_metrics.py |tests/test_phone_home.py |tests/test_server.py |tests/test_state.py |tests/test_terms_auth.py |tests/unittest.py |tests/util/caches/test_cached_call.py |tests/util/caches/test_deferred_cache.py |tests/util/caches/test_descriptors.py |tests/util/caches/test_response_cache.py |tests/util/caches/test_ttlcache.py |tests/util/test_async_helpers.py |tests/util/test_batching_queue.py |tests/util/test_dict_cache.py |tests/util/test_expiring_cache.py |tests/util/test_file_consumer.py |tests/util/test_linearizer.py |tests/util/test_logcontext.py |tests/util/test_lrucache.py |tests/util/test_rwlock.py |tests/util/test_wheel_timer.py |tests/utils.py )$ [mypy-synapse.api.*] disallow_untyped_defs = True [mypy-synapse.app.*] disallow_untyped_defs = True [mypy-synapse.appservice.*] disallow_untyped_defs = True [mypy-synapse.config._base] disallow_untyped_defs = True [mypy-synapse.crypto.*] disallow_untyped_defs = True [mypy-synapse.event_auth] disallow_untyped_defs = True [mypy-synapse.events.*] disallow_untyped_defs = True [mypy-synapse.federation.*] disallow_untyped_defs = True [mypy-synapse.federation.transport.client] disallow_untyped_defs = False [mypy-synapse.handlers.*] disallow_untyped_defs = True [mypy-synapse.http.server] disallow_untyped_defs = True [mypy-synapse.logging.context] disallow_untyped_defs = True [mypy-synapse.metrics.*] disallow_untyped_defs = True [mypy-synapse.module_api.*] disallow_untyped_defs = True [mypy-synapse.notifier] disallow_untyped_defs = True [mypy-synapse.push.*] disallow_untyped_defs = True [mypy-synapse.replication.*] disallow_untyped_defs = True [mypy-synapse.rest.*] disallow_untyped_defs = True [mypy-synapse.server_notices.*] disallow_untyped_defs = True [mypy-synapse.state.*] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.account_data] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.client_ips] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.directory] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.e2e_room_keys] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.end_to_end_keys] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.event_push_actions] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.events_bg_updates] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.events_worker] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.room] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.room_batch] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.profile] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.stats] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.state_deltas] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.transactions] disallow_untyped_defs = True [mypy-synapse.storage.databases.main.user_erasure_store] disallow_untyped_defs = True [mypy-synapse.storage.util.*] disallow_untyped_defs = True [mypy-synapse.streams.*] disallow_untyped_defs = True [mypy-synapse.util.*] disallow_untyped_defs = True [mypy-synapse.util.caches.treecache] disallow_untyped_defs = False [mypy-tests.handlers.test_user_directory] disallow_untyped_defs = True [mypy-tests.storage.test_profile] disallow_untyped_defs = True [mypy-tests.storage.test_user_directory] disallow_untyped_defs = True [mypy-tests.rest.admin.*] disallow_untyped_defs = True [mypy-tests.rest.client.test_directory] disallow_untyped_defs = True [mypy-tests.federation.transport.test_client] disallow_untyped_defs = True ;; Dependencies without annotations ;; Before ignoring a module, check to see if type stubs are available. ;; The `typeshed` project maintains stubs here: ;; https://github.com/python/typeshed/tree/master/stubs ;; and for each package `foo` there's a corresponding `types-foo` package on PyPI, ;; which we can pull in as a dev dependency by adding to `setup.py`'s ;; `CONDITIONAL_REQUIREMENTS["mypy"]` list. [mypy-authlib.*] ignore_missing_imports = True [mypy-bcrypt] ignore_missing_imports = True [mypy-canonicaljson] ignore_missing_imports = True [mypy-constantly] ignore_missing_imports = True [mypy-daemonize] ignore_missing_imports = True [mypy-h11] ignore_missing_imports = True [mypy-hiredis] ignore_missing_imports = True [mypy-hyperlink] ignore_missing_imports = True [mypy-ijson.*] ignore_missing_imports = True [mypy-jaeger_client.*] ignore_missing_imports = True [mypy-josepy.*] ignore_missing_imports = True [mypy-jwt.*] ignore_missing_imports = True [mypy-lxml] ignore_missing_imports = True [mypy-msgpack] ignore_missing_imports = True [mypy-nacl.*] ignore_missing_imports = True [mypy-netaddr] ignore_missing_imports = True [mypy-parameterized.*] ignore_missing_imports = True [mypy-phonenumbers.*] ignore_missing_imports = True [mypy-prometheus_client.*] ignore_missing_imports = True [mypy-pymacaroons.*] ignore_missing_imports = True [mypy-pympler.*] ignore_missing_imports = True [mypy-rust_python_jaeger_reporter.*] ignore_missing_imports = True [mypy-saml2.*] ignore_missing_imports = True [mypy-sentry_sdk] ignore_missing_imports = True [mypy-service_identity.*] ignore_missing_imports = True [mypy-signedjson.*] ignore_missing_imports = True [mypy-treq.*] ignore_missing_imports = True [mypy-twisted.*] ignore_missing_imports = True [mypy-zope] ignore_missing_imports = True synapse-1.53.0/pylint.cfg000066400000000000000000000207361420514467300153000ustar00rootroot00000000000000[MASTER] # Specify a configuration file. #rcfile= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= # Profiled execution. profile=no # Add files or directories to the blacklist. They should be base names, not # paths. ignore=CVS # Pickle collected data for later comparisons. persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= [MESSAGES CONTROL] # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time. See also the "--disable" option for examples. #enable= # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once).You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" disable=missing-docstring [REPORTS] # Set the output format. Available formats are text, parseable, colorized, msvs # (visual studio) and html. You can also give a reporter class, eg # mypackage.mymodule.MyReporterClass. output-format=text # Put messages in a separate file for each module / package specified on the # command line instead of printing them on stdout. Reports (if any) will be # written in a file name "pylint_global.[txt|html]". files-output=no # Tells whether to display a full report or only the messages reports=yes # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Add a comment according to your evaluation note. This is used by the global # evaluation report (RP0004). comment=no # Template used to display messages. This is a python new-style format string # used to format the message information. See doc for all details #msg-template= [TYPECHECK] # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamically set). ignored-classes=SQLObject # When zope mode is activated, add a predefined set of Zope acquired attributes # to generated-members. zope=no # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. Python regular # expressions are accepted. generated-members=REQUEST,acl_users,aq_parent [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX,TODO [SIMILARITIES] # Minimum lines number of a similarity. min-similarity-lines=4 # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # Ignore imports when computing similarities. ignore-imports=no [VARIABLES] # Tells whether we should check for unused import in __init__ files. init-import=no # A regular expression matching the beginning of the name of dummy variables # (i.e. not used). dummy-variables-rgx=_$|dummy # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= [BASIC] # Required attributes for module, separated by a comma required-attributes= # List of builtins function names that should not be used, separated by a comma bad-functions=map,filter,apply,input # Regular expression which should only match correct module names module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ # Regular expression which should only match correct module level names const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ # Regular expression which should only match correct class names class-rgx=[A-Z_][a-zA-Z0-9]+$ # Regular expression which should only match correct function names function-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct method names method-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct instance attribute names attr-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct argument names argument-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct variable names variable-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct attribute names in class # bodies class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ # Regular expression which should only match correct list comprehension / # generator expression variable names inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_ # Bad variable names which should always be refused, separated by a comma bad-names=foo,bar,baz,toto,tutu,tata # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=__.*__ # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. docstring-min-length=-1 [FORMAT] # Maximum number of characters on a single line. max-line-length=80 # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no # List of optional constructs for which whitespace checking is disabled no-space-check=trailing-comma,dict-separator # Maximum number of lines in a module max-module-lines=1000 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' [DESIGN] # Maximum number of arguments for function / method max-args=5 # Argument names that match this expression will be ignored. Default to name # with leading underscore ignored-argument-names=_.* # Maximum number of locals for function / method body max-locals=15 # Maximum number of return / yield for function / method body max-returns=6 # Maximum number of branch for function / method body max-branches=12 # Maximum number of statements in function / method body max-statements=50 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Minimum number of public methods for a class (see R0903). min-public-methods=2 # Maximum number of public methods for a class (see R0904). max-public-methods=20 [IMPORTS] # Deprecated modules which should not be used, separated by a comma deprecated-modules=regsub,TERMIOS,Bastion,rexec # Create a graph of every (i.e. internal and external) dependencies in the # given file (report RP0402 must not be disabled) import-graph= # Create a graph of external dependencies in the given file (report RP0402 must # not be disabled) ext-import-graph= # Create a graph of internal dependencies in the given file (report RP0402 must # not be disabled) int-import-graph= [CLASSES] # List of interface methods to ignore, separated by a comma. This is used for # instance to not check methods defines in Zope's Interface base class. ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls # List of valid names for the first argument in a metaclass class method. valid-metaclass-classmethod-first-arg=mcs [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception" overgeneral-exceptions=Exception synapse-1.53.0/pyproject.toml000066400000000000000000000023141420514467300162040ustar00rootroot00000000000000[tool.towncrier] package = "synapse" filename = "CHANGES.md" directory = "changelog.d" issue_format = "[\\#{issue}](https://github.com/matrix-org/synapse/issues/{issue})" [[tool.towncrier.type]] directory = "feature" name = "Features" showcontent = true [[tool.towncrier.type]] directory = "bugfix" name = "Bugfixes" showcontent = true [[tool.towncrier.type]] directory = "docker" name = "Updates to the Docker image" showcontent = true [[tool.towncrier.type]] directory = "doc" name = "Improved Documentation" showcontent = true [[tool.towncrier.type]] directory = "removal" name = "Deprecations and Removals" showcontent = true [[tool.towncrier.type]] directory = "misc" name = "Internal Changes" showcontent = true [tool.black] target-version = ['py37', 'py38', 'py39', 'py310'] exclude = ''' ( /( \.eggs # exclude a few common directories in the | \.git # root of the project | \.tox | \.venv | \.env | env | _build | _trial_temp.* | build | dist | debian )/ ) ''' synapse-1.53.0/scripts-dev/000077500000000000000000000000001420514467300155335ustar00rootroot00000000000000synapse-1.53.0/scripts-dev/build_debian_packages000077500000000000000000000146141420514467300217260ustar00rootroot00000000000000#!/usr/bin/env python3 # Build the Debian packages using Docker images. # # This script builds the Docker images and then executes them sequentially, each # one building a Debian package for the targeted operating system. It is # designed to be a "single command" to produce all the images. # # By default, builds for all known distributions, but a list of distributions # can be passed on the commandline for debugging. import argparse import json import os import signal import subprocess import sys import threading from concurrent.futures import ThreadPoolExecutor from typing import Optional, Sequence DISTS = ( "debian:buster", # oldstable: EOL 2022-08 "debian:bullseye", "debian:bookworm", "debian:sid", "ubuntu:focal", # 20.04 LTS (our EOL forced by Py38 on 2024-10-14) "ubuntu:impish", # 21.10 (EOL 2022-07) ) DESC = """\ Builds .debs for synapse, using a Docker image for the build environment. By default, builds for all known distributions, but a list of distributions can be passed on the commandline for debugging. """ projdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) class Builder(object): def __init__( self, redirect_stdout=False, docker_build_args: Optional[Sequence[str]] = None ): self.redirect_stdout = redirect_stdout self._docker_build_args = tuple(docker_build_args or ()) self.active_containers = set() self._lock = threading.Lock() self._failed = False def run_build(self, dist, skip_tests=False): """Build deb for a single distribution""" if self._failed: print("not building %s due to earlier failure" % (dist,)) raise Exception("failed") try: self._inner_build(dist, skip_tests) except Exception as e: print("build of %s failed: %s" % (dist, e), file=sys.stderr) self._failed = True raise def _inner_build(self, dist, skip_tests=False): tag = dist.split(":", 1)[1] # Make the dir where the debs will live. # # Note that we deliberately put this outside the source tree, otherwise # we tend to get source packages which are full of debs. (We could hack # around that with more magic in the build_debian.sh script, but that # doesn't solve the problem for natively-run dpkg-buildpakage). debsdir = os.path.join(projdir, "../debs") os.makedirs(debsdir, exist_ok=True) if self.redirect_stdout: logfile = os.path.join(debsdir, "%s.buildlog" % (tag,)) print("building %s: directing output to %s" % (dist, logfile)) stdout = open(logfile, "w") else: stdout = None # first build a docker image for the build environment build_args = ( ( "docker", "build", "--tag", "dh-venv-builder:" + tag, "--build-arg", "distro=" + dist, "-f", "docker/Dockerfile-dhvirtualenv", ) + self._docker_build_args + ("docker",) ) subprocess.check_call( build_args, stdout=stdout, stderr=subprocess.STDOUT, cwd=projdir, ) container_name = "synapse_build_" + tag with self._lock: self.active_containers.add(container_name) # then run the build itself subprocess.check_call( [ "docker", "run", "--rm", "--name", container_name, "--volume=" + projdir + ":/synapse/source:ro", "--volume=" + debsdir + ":/debs", "-e", "TARGET_USERID=%i" % (os.getuid(),), "-e", "TARGET_GROUPID=%i" % (os.getgid(),), "-e", "DEB_BUILD_OPTIONS=%s" % ("nocheck" if skip_tests else ""), "dh-venv-builder:" + tag, ], stdout=stdout, stderr=subprocess.STDOUT, ) with self._lock: self.active_containers.remove(container_name) if stdout is not None: stdout.close() print("Completed build of %s" % (dist,)) def kill_containers(self): with self._lock: active = list(self.active_containers) for c in active: print("killing container %s" % (c,)) subprocess.run( [ "docker", "kill", c, ], stdout=subprocess.DEVNULL, ) with self._lock: self.active_containers.remove(c) def run_builds(builder, dists, jobs=1, skip_tests=False): def sig(signum, _frame): print("Caught SIGINT") builder.kill_containers() signal.signal(signal.SIGINT, sig) with ThreadPoolExecutor(max_workers=jobs) as e: res = e.map(lambda dist: builder.run_build(dist, skip_tests), dists) # make sure we consume the iterable so that exceptions are raised. for _ in res: pass if __name__ == "__main__": parser = argparse.ArgumentParser( description=DESC, ) parser.add_argument( "-j", "--jobs", type=int, default=1, help="specify the number of builds to run in parallel", ) parser.add_argument( "--no-check", action="store_true", help="skip running tests after building", ) parser.add_argument( "--docker-build-arg", action="append", help="specify an argument to pass to docker build", ) parser.add_argument( "--show-dists-json", action="store_true", help="instead of building the packages, just list the dists to build for, as a json array", ) parser.add_argument( "dist", nargs="*", default=DISTS, help="a list of distributions to build for. Default: %(default)s", ) args = parser.parse_args() if args.show_dists_json: print(json.dumps(DISTS)) else: builder = Builder( redirect_stdout=(args.jobs > 1), docker_build_args=args.docker_build_arg ) run_builds( builder, dists=args.dist, jobs=args.jobs, skip_tests=args.no_check, ) synapse-1.53.0/scripts-dev/check-newsfragment000077500000000000000000000043311420514467300212350ustar00rootroot00000000000000#!/usr/bin/env bash # # A script which checks that an appropriate news file has been added on this # branch. echo -e "+++ \033[32mChecking newsfragment\033[m" set -e # make sure that origin/develop is up to date git remote set-branches --add origin develop git fetch -q origin develop pr="$PULL_REQUEST_NUMBER" # if there are changes in the debian directory, check that the debian changelog # has been updated if ! git diff --quiet FETCH_HEAD... -- debian; then if git diff --quiet FETCH_HEAD... -- debian/changelog; then echo "Updates to debian directory, but no update to the changelog." >&2 echo "!! Please see the contributing guide for help writing your changelog entry:" >&2 echo "https://github.com/matrix-org/synapse/blob/develop/CONTRIBUTING.md#debian-changelog" >&2 exit 1 fi fi # if there are changes *outside* the debian directory, check that the # newsfragments have been updated. if ! git diff --name-only FETCH_HEAD... | grep -qv '^debian/'; then exit 0 fi # Print a link to the contributing guide if the user makes a mistake CONTRIBUTING_GUIDE_TEXT="!! Please see the contributing guide for help writing your changelog entry: https://github.com/matrix-org/synapse/blob/develop/CONTRIBUTING.md#changelog" # If check-newsfragment returns a non-zero exit code, print the contributing guide and exit tox -qe check-newsfragment || (echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 && exit 1) echo echo "--------------------------" echo matched=0 for f in $(git diff --diff-filter=d --name-only FETCH_HEAD... -- changelog.d); do # check that any added newsfiles on this branch end with a full stop. lastchar=$(tr -d '\n' < "$f" | tail -c 1) if [ "$lastchar" != '.' ] && [ "$lastchar" != '!' ]; then echo -e "\e[31mERROR: newsfragment $f does not end with a '.' or '!'\e[39m" >&2 echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 exit 1 fi # see if this newsfile corresponds to the right PR [[ -n "$pr" && "$f" == changelog.d/"$pr".* ]] && matched=1 done if [[ -n "$pr" && "$matched" -eq 0 ]]; then echo -e "\e[31mERROR: Did not find a news fragment with the right number: expected changelog.d/$pr.*.\e[39m" >&2 echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 exit 1 fi synapse-1.53.0/scripts-dev/check_line_terminators.sh000077500000000000000000000022761420514467300226140ustar00rootroot00000000000000#!/bin/bash # # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This script checks that line terminators in all repository files (excluding # those in the .git directory) feature unix line terminators. # # Usage: # # ./check_line_terminators.sh # # The script will emit exit code 1 if any files that do not use unix line # terminators are found, 0 otherwise. # cd to the root of the repository cd "$(dirname "$0")/.." || exit # Find and print files with non-unix line terminators if find . -path './.git/*' -prune -o -type f -print0 | xargs -0 grep -I -l $'\r$'; then echo -e '\e[31mERROR: found files with CRLF line endings. See above.\e[39m' exit 1 fi synapse-1.53.0/scripts-dev/check_signature.py000066400000000000000000000042701420514467300212460ustar00rootroot00000000000000import argparse import json import logging import sys import dns.resolver import urllib2 from signedjson.key import decode_verify_key_bytes, write_signing_keys from signedjson.sign import verify_signed_json from unpaddedbase64 import decode_base64 def get_targets(server_name): if ":" in server_name: target, port = server_name.split(":") yield (target, int(port)) return try: answers = dns.resolver.query("_matrix._tcp." + server_name, "SRV") for srv in answers: yield (srv.target, srv.port) except dns.resolver.NXDOMAIN: yield (server_name, 8448) def get_server_keys(server_name, target, port): url = "https://%s:%i/_matrix/key/v1" % (target, port) keys = json.load(urllib2.urlopen(url)) verify_keys = {} for key_id, key_base64 in keys["verify_keys"].items(): verify_key = decode_verify_key_bytes(key_id, decode_base64(key_base64)) verify_signed_json(keys, server_name, verify_key) verify_keys[key_id] = verify_key return verify_keys def main(): parser = argparse.ArgumentParser() parser.add_argument("signature_name") parser.add_argument( "input_json", nargs="?", type=argparse.FileType("r"), default=sys.stdin ) args = parser.parse_args() logging.basicConfig() server_name = args.signature_name keys = {} for target, port in get_targets(server_name): try: keys = get_server_keys(server_name, target, port) print("Using keys from https://%s:%s/_matrix/key/v1" % (target, port)) write_signing_keys(sys.stdout, keys.values()) break except Exception: logging.exception("Error talking to %s:%s", target, port) json_to_check = json.load(args.input_json) print("Checking JSON:") for key_id in json_to_check["signatures"][args.signature_name]: try: key = keys[key_id] verify_signed_json(json_to_check, args.signature_name, key) print("PASS %s" % (key_id,)) except Exception: logging.exception("Check for key %s failed" % (key_id,)) print("FAIL %s" % (key_id,)) if __name__ == "__main__": main() synapse-1.53.0/scripts-dev/complement.sh000077500000000000000000000053711420514467300202430ustar00rootroot00000000000000#!/usr/bin/env bash # This script is designed for developers who want to test their code # against Complement. # # It makes a Synapse image which represents the current checkout, # builds a synapse-complement image on top, then runs tests with it. # # By default the script will fetch the latest Complement master branch and # run tests with that. This can be overridden to use a custom Complement # checkout by setting the COMPLEMENT_DIR environment variable to the # filepath of a local Complement checkout or by setting the COMPLEMENT_REF # environment variable to pull a different branch or commit. # # By default Synapse is run in monolith mode. This can be overridden by # setting the WORKERS environment variable. # # A regular expression of test method names can be supplied as the first # argument to the script. Complement will then only run those tests. If # no regex is supplied, all tests are run. For example; # # ./complement.sh "TestOutboundFederation(Profile|Send)" # # Exit if a line returns a non-zero exit code set -e # enable buildkit for the docker builds export DOCKER_BUILDKIT=1 # Change to the repository root cd "$(dirname $0)/.." # Check for a user-specified Complement checkout if [[ -z "$COMPLEMENT_DIR" ]]; then COMPLEMENT_REF=${COMPLEMENT_REF:-master} echo "COMPLEMENT_DIR not set. Fetching Complement checkout from ${COMPLEMENT_REF}..." wget -Nq https://github.com/matrix-org/complement/archive/${COMPLEMENT_REF}.tar.gz tar -xzf ${COMPLEMENT_REF}.tar.gz COMPLEMENT_DIR=complement-${COMPLEMENT_REF} echo "Checkout available at 'complement-${COMPLEMENT_REF}'" fi # Build the base Synapse image from the local checkout docker build -t matrixdotorg/synapse -f "docker/Dockerfile" . # If we're using workers, modify the docker files slightly. if [[ -n "$WORKERS" ]]; then # Build the workers docker image (from the base Synapse image). docker build -t matrixdotorg/synapse-workers -f "docker/Dockerfile-workers" . export COMPLEMENT_BASE_IMAGE=complement-synapse-workers COMPLEMENT_DOCKERFILE=SynapseWorkers.Dockerfile # And provide some more configuration to complement. export COMPLEMENT_CA=true export COMPLEMENT_SPAWN_HS_TIMEOUT_SECS=25 else export COMPLEMENT_BASE_IMAGE=complement-synapse COMPLEMENT_DOCKERFILE=Synapse.Dockerfile fi # Build the Complement image from the Synapse image we just built. docker build -t $COMPLEMENT_BASE_IMAGE -f "$COMPLEMENT_DIR/dockerfiles/$COMPLEMENT_DOCKERFILE" "$COMPLEMENT_DIR/dockerfiles" cd "$COMPLEMENT_DIR" EXTRA_COMPLEMENT_ARGS="" if [[ -n "$1" ]]; then # A test name regex has been set, supply it to Complement EXTRA_COMPLEMENT_ARGS+="-run $1 " fi # Run the tests! echo "Images built; running complement" go test -v -tags synapse_blacklist,msc2403 -count=1 $EXTRA_COMPLEMENT_ARGS ./tests/... synapse-1.53.0/scripts-dev/config-lint.sh000077500000000000000000000010321420514467300202770ustar00rootroot00000000000000#!/usr/bin/env bash # Find linting errors in Synapse's default config file. # Exits with 0 if there are no problems, or another code otherwise. # cd to the root of the repository cd "$(dirname "$0")/.." || exit # Restore backup of sample config upon script exit trap "mv docs/sample_config.yaml.bak docs/sample_config.yaml" EXIT # Fix non-lowercase true/false values sed -i.bak -E "s/: +True/: true/g; s/: +False/: false/g;" docs/sample_config.yaml # Check if anything changed diff docs/sample_config.yaml docs/sample_config.yaml.bak synapse-1.53.0/scripts-dev/database-save.sh000077500000000000000000000005711420514467300205750ustar00rootroot00000000000000#!/bin/sh # This script will write a dump file of local user state if you want to splat # your entire server database and start again but preserve the identity of # local users and their access tokens. # # To restore it, use # # $ sqlite3 homeserver.db < table-save.sql sqlite3 "$1" <<'EOF' >table-save.sql .dump users .dump access_tokens .dump presence .dump profiles EOF synapse-1.53.0/scripts-dev/definitions.py000077500000000000000000000146111420514467300204260ustar00rootroot00000000000000#! /usr/bin/python import argparse import ast import os import re import sys import yaml class DefinitionVisitor(ast.NodeVisitor): def __init__(self): super().__init__() self.functions = {} self.classes = {} self.names = {} self.attrs = set() self.definitions = { "def": self.functions, "class": self.classes, "names": self.names, "attrs": self.attrs, } def visit_Name(self, node): self.names.setdefault(type(node.ctx).__name__, set()).add(node.id) def visit_Attribute(self, node): self.attrs.add(node.attr) for child in ast.iter_child_nodes(node): self.visit(child) def visit_ClassDef(self, node): visitor = DefinitionVisitor() self.classes[node.name] = visitor.definitions for child in ast.iter_child_nodes(node): visitor.visit(child) def visit_FunctionDef(self, node): visitor = DefinitionVisitor() self.functions[node.name] = visitor.definitions for child in ast.iter_child_nodes(node): visitor.visit(child) def non_empty(defs): functions = {name: non_empty(f) for name, f in defs["def"].items()} classes = {name: non_empty(f) for name, f in defs["class"].items()} result = {} if functions: result["def"] = functions if classes: result["class"] = classes names = defs["names"] uses = [] for name in names.get("Load", ()): if name not in names.get("Param", ()) and name not in names.get("Store", ()): uses.append(name) uses.extend(defs["attrs"]) if uses: result["uses"] = uses result["names"] = names result["attrs"] = defs["attrs"] return result def definitions_in_code(input_code): input_ast = ast.parse(input_code) visitor = DefinitionVisitor() visitor.visit(input_ast) definitions = non_empty(visitor.definitions) return definitions def definitions_in_file(filepath): with open(filepath) as f: return definitions_in_code(f.read()) def defined_names(prefix, defs, names): for name, funcs in defs.get("def", {}).items(): names.setdefault(name, {"defined": []})["defined"].append(prefix + name) defined_names(prefix + name + ".", funcs, names) for name, funcs in defs.get("class", {}).items(): names.setdefault(name, {"defined": []})["defined"].append(prefix + name) defined_names(prefix + name + ".", funcs, names) def used_names(prefix, item, defs, names): for name, funcs in defs.get("def", {}).items(): used_names(prefix + name + ".", name, funcs, names) for name, funcs in defs.get("class", {}).items(): used_names(prefix + name + ".", name, funcs, names) path = prefix.rstrip(".") for used in defs.get("uses", ()): if used in names: if item: names[item].setdefault("uses", []).append(used) names[used].setdefault("used", {}).setdefault(item, []).append(path) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Find definitions.") parser.add_argument( "--unused", action="store_true", help="Only list unused definitions" ) parser.add_argument( "--ignore", action="append", metavar="REGEXP", help="Ignore a pattern" ) parser.add_argument( "--pattern", action="append", metavar="REGEXP", help="Search for a pattern" ) parser.add_argument( "directories", nargs="+", metavar="DIR", help="Directories to search for definitions", ) parser.add_argument( "--referrers", default=0, type=int, help="Include referrers up to the given depth", ) parser.add_argument( "--referred", default=0, type=int, help="Include referred down to the given depth", ) parser.add_argument( "--format", default="yaml", help="Output format, one of 'yaml' or 'dot'" ) args = parser.parse_args() definitions = {} for directory in args.directories: for root, _, files in os.walk(directory): for filename in files: if filename.endswith(".py"): filepath = os.path.join(root, filename) definitions[filepath] = definitions_in_file(filepath) names = {} for filepath, defs in definitions.items(): defined_names(filepath + ":", defs, names) for filepath, defs in definitions.items(): used_names(filepath + ":", None, defs, names) patterns = [re.compile(pattern) for pattern in args.pattern or ()] ignore = [re.compile(pattern) for pattern in args.ignore or ()] result = {} for name, definition in names.items(): if patterns and not any(pattern.match(name) for pattern in patterns): continue if ignore and any(pattern.match(name) for pattern in ignore): continue if args.unused and definition.get("used"): continue result[name] = definition referrer_depth = args.referrers referrers = set() while referrer_depth: referrer_depth -= 1 for entry in result.values(): for used_by in entry.get("used", ()): referrers.add(used_by) for name, definition in names.items(): if name not in referrers: continue if ignore and any(pattern.match(name) for pattern in ignore): continue result[name] = definition referred_depth = args.referred referred = set() while referred_depth: referred_depth -= 1 for entry in result.values(): for uses in entry.get("uses", ()): referred.add(uses) for name, definition in names.items(): if name not in referred: continue if ignore and any(pattern.match(name) for pattern in ignore): continue result[name] = definition if args.format == "yaml": yaml.dump(result, sys.stdout, default_flow_style=False) elif args.format == "dot": print("digraph {") for name, entry in result.items(): print(name) for used_by in entry.get("used", ()): if used_by in result: print(used_by, "->", name) print("}") else: raise ValueError("Unknown format %r" % (args.format)) synapse-1.53.0/scripts-dev/docker_update_debian_changelog.sh000077500000000000000000000053001420514467300242120ustar00rootroot00000000000000#!/bin/bash -e # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This script is meant to be used inside a Docker container to run the `dch` incantations # needed to release Synapse. This is useful on systems like macOS where such scripts are # not easily accessible. # # Running it (when if the current working directory is the root of the Synapse checkout): # docker run --rm -v $PWD:/synapse ubuntu:latest /synapse/scripts-dev/docker_update_debian_changelog.sh VERSION # # The image can be replaced by any other Debian-based image (as long as the `devscripts` # package exists in the default repository). # `VERSION` is the version of Synapse being released without the leading "v" (e.g. 1.42.0). # Check if a version was provided. if [ "$#" -ne 1 ]; then echo "Usage: update_debian_changelog.sh VERSION" echo "VERSION is the version of Synapse being released in the form 1.42.0 (without the leading \"v\")" exit 1 fi # Check that apt-get is available on the system. if ! which apt-get > /dev/null 2>&1; then echo "\"apt-get\" isn't available on this system. This script needs to be run in a Docker container using a Debian-based image." exit 1 fi # Check if devscripts is available in the default repos for this distro. # Update the apt package list cache. # We need to do this before we can search the apt cache or install devscripts. apt-get update || exit 1 if ! apt-cache search devscripts | grep -E "^devscripts \-" > /dev/null; then echo "The package \"devscripts\" needs to exist in the default repositories for this distribution." exit 1 fi # We set -x here rather than in the shebang so that if we need to exit early because no # version was provided, the message doesn't get drowned in useless output. set -x # Make the root of the Synapse checkout the current working directory. cd /synapse # Install devscripts (which provides dch). We need to make the Debian frontend # noninteractive because installing devscripts otherwise asks for the machine's location. DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts # Update the Debian changelog. ver=${1} dch -M -v "$(sed -Ee 's/(rc|a|b|c)/~\1/' <<<"$ver")" "New synapse release $ver." dch -M -r -D stable "" synapse-1.53.0/scripts-dev/dump_macaroon.py000077500000000000000000000010241420514467300207310ustar00rootroot00000000000000#!/usr/bin/env python import sys import pymacaroons if len(sys.argv) == 1: sys.stderr.write("usage: %s macaroon [key]\n" % (sys.argv[0],)) sys.exit(1) macaroon_string = sys.argv[1] key = sys.argv[2] if len(sys.argv) > 2 else None macaroon = pymacaroons.Macaroon.deserialize(macaroon_string) print(macaroon.inspect()) print("") verifier = pymacaroons.Verifier() verifier.satisfy_general(lambda c: True) try: verifier.verify(macaroon, key) print("Signature is correct") except Exception as e: print(str(e)) synapse-1.53.0/scripts-dev/federation_client.py000077500000000000000000000216561420514467300216000ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Script for signing and sending federation requests. Some tips on doing the join dance with this: room_id=... user_id=... # make_join federation_client.py "/_matrix/federation/v1/make_join/$room_id/$user_id?ver=5" > make_join.json # sign jq -M .event make_join.json | sign_json --sign-event-room-version=$(jq -r .room_version make_join.json) -o signed-join.json # send_join federation_client.py -X PUT "/_matrix/federation/v2/send_join/$room_id/x" --body $( send_join.json """ import argparse import base64 import json import sys from typing import Any, Optional from urllib import parse as urlparse import requests import signedjson.key import signedjson.types import srvlookup import yaml from requests.adapters import HTTPAdapter # uncomment the following to enable debug logging of http requests # from httplib import HTTPConnection # HTTPConnection.debuglevel = 1 def encode_base64(input_bytes): """Encode bytes as a base64 string without any padding.""" input_len = len(input_bytes) output_len = 4 * ((input_len + 2) // 3) + (input_len + 2) % 3 - 2 output_bytes = base64.b64encode(input_bytes) output_string = output_bytes[:output_len].decode("ascii") return output_string def encode_canonical_json(value): return json.dumps( value, # Encode code-points outside of ASCII as UTF-8 rather than \u escapes ensure_ascii=False, # Remove unecessary white space. separators=(",", ":"), # Sort the keys of dictionaries. sort_keys=True, # Encode the resulting unicode as UTF-8 bytes. ).encode("UTF-8") def sign_json( json_object: Any, signing_key: signedjson.types.SigningKey, signing_name: str ) -> Any: signatures = json_object.pop("signatures", {}) unsigned = json_object.pop("unsigned", None) signed = signing_key.sign(encode_canonical_json(json_object)) signature_base64 = encode_base64(signed.signature) key_id = "%s:%s" % (signing_key.alg, signing_key.version) signatures.setdefault(signing_name, {})[key_id] = signature_base64 json_object["signatures"] = signatures if unsigned is not None: json_object["unsigned"] = unsigned return json_object def request( method: Optional[str], origin_name: str, origin_key: signedjson.types.SigningKey, destination: str, path: str, content: Optional[str], ) -> requests.Response: if method is None: if content is None: method = "GET" else: method = "POST" json_to_sign = { "method": method, "uri": path, "origin": origin_name, "destination": destination, } if content is not None: json_to_sign["content"] = json.loads(content) signed_json = sign_json(json_to_sign, origin_key, origin_name) authorization_headers = [] for key, sig in signed_json["signatures"][origin_name].items(): header = 'X-Matrix origin=%s,key="%s",sig="%s"' % (origin_name, key, sig) authorization_headers.append(header.encode("ascii")) print("Authorization: %s" % header, file=sys.stderr) dest = "matrix://%s%s" % (destination, path) print("Requesting %s" % dest, file=sys.stderr) s = requests.Session() s.mount("matrix://", MatrixConnectionAdapter()) headers = {"Host": destination, "Authorization": authorization_headers[0]} if method == "POST": headers["Content-Type"] = "application/json" return s.request( method=method, url=dest, headers=headers, verify=False, data=content, stream=True, ) def main(): parser = argparse.ArgumentParser( description="Signs and sends a federation request to a matrix homeserver" ) parser.add_argument( "-N", "--server-name", help="Name to give as the local homeserver. If unspecified, will be " "read from the config file.", ) parser.add_argument( "-k", "--signing-key-path", help="Path to the file containing the private ed25519 key to sign the " "request with.", ) parser.add_argument( "-c", "--config", default="homeserver.yaml", help="Path to server config file. Ignored if --server-name and " "--signing-key-path are both given.", ) parser.add_argument( "-d", "--destination", default="matrix.org", help="name of the remote homeserver. We will do SRV lookups and " "connect appropriately.", ) parser.add_argument( "-X", "--method", help="HTTP method to use for the request. Defaults to GET if --body is" "unspecified, POST if it is.", ) parser.add_argument("--body", help="Data to send as the body of the HTTP request") parser.add_argument( "path", help="request path, including the '/_matrix/federation/...' prefix." ) args = parser.parse_args() args.signing_key = None if args.signing_key_path: with open(args.signing_key_path) as f: args.signing_key = f.readline() if not args.server_name or not args.signing_key: read_args_from_config(args) algorithm, version, key_base64 = args.signing_key.split() key = signedjson.key.decode_signing_key_base64(algorithm, version, key_base64) result = request( args.method, args.server_name, key, args.destination, args.path, content=args.body, ) sys.stderr.write("Status Code: %d\n" % (result.status_code,)) for chunk in result.iter_content(): # we write raw utf8 to stdout. sys.stdout.buffer.write(chunk) print("") def read_args_from_config(args): with open(args.config, "r") as fh: config = yaml.safe_load(fh) if not args.server_name: args.server_name = config["server_name"] if not args.signing_key: if "signing_key" in config: args.signing_key = config["signing_key"] else: with open(config["signing_key_path"]) as f: args.signing_key = f.readline() class MatrixConnectionAdapter(HTTPAdapter): @staticmethod def lookup(s, skip_well_known=False): if s[-1] == "]": # ipv6 literal (with no port) return s, 8448 if ":" in s: out = s.rsplit(":", 1) try: port = int(out[1]) except ValueError: raise ValueError("Invalid host:port '%s'" % s) return out[0], port # try a .well-known lookup if not skip_well_known: well_known = MatrixConnectionAdapter.get_well_known(s) if well_known: return MatrixConnectionAdapter.lookup(well_known, skip_well_known=True) try: srv = srvlookup.lookup("matrix", "tcp", s)[0] return srv.host, srv.port except Exception: return s, 8448 @staticmethod def get_well_known(server_name): uri = "https://%s/.well-known/matrix/server" % (server_name,) print("fetching %s" % (uri,), file=sys.stderr) try: resp = requests.get(uri) if resp.status_code != 200: print("%s gave %i" % (uri, resp.status_code), file=sys.stderr) return None parsed_well_known = resp.json() if not isinstance(parsed_well_known, dict): raise Exception("not a dict") if "m.server" not in parsed_well_known: raise Exception("Missing key 'm.server'") new_name = parsed_well_known["m.server"] print("well-known lookup gave %s" % (new_name,), file=sys.stderr) return new_name except Exception as e: print("Invalid response from %s: %s" % (uri, e), file=sys.stderr) return None def get_connection(self, url, proxies=None): parsed = urlparse.urlparse(url) (host, port) = self.lookup(parsed.netloc) netloc = "%s:%d" % (host, port) print("Connecting to %s" % (netloc,), file=sys.stderr) url = urlparse.urlunparse( ("https", netloc, parsed.path, parsed.params, parsed.query, parsed.fragment) ) return super().get_connection(url, proxies) if __name__ == "__main__": main() synapse-1.53.0/scripts-dev/generate_sample_config000077500000000000000000000017411420514467300221440ustar00rootroot00000000000000#!/usr/bin/env bash # # Update/check the docs/sample_config.yaml set -e cd "$(dirname "$0")/.." SAMPLE_CONFIG="docs/sample_config.yaml" SAMPLE_LOG_CONFIG="docs/sample_log_config.yaml" check() { diff -u "$SAMPLE_LOG_CONFIG" <(./scripts/generate_log_config) >/dev/null || return 1 } if [ "$1" == "--check" ]; then diff -u "$SAMPLE_CONFIG" <(./scripts/generate_config --header-file docs/.sample_config_header.yaml) >/dev/null || { echo -e "\e[1m\e[31m$SAMPLE_CONFIG is not up-to-date. Regenerate it with \`scripts-dev/generate_sample_config\`.\e[0m" >&2 exit 1 } diff -u "$SAMPLE_LOG_CONFIG" <(./scripts/generate_log_config) >/dev/null || { echo -e "\e[1m\e[31m$SAMPLE_LOG_CONFIG is not up-to-date. Regenerate it with \`scripts-dev/generate_sample_config\`.\e[0m" >&2 exit 1 } else ./scripts/generate_config --header-file docs/.sample_config_header.yaml -o "$SAMPLE_CONFIG" ./scripts/generate_log_config -o "$SAMPLE_LOG_CONFIG" fi synapse-1.53.0/scripts-dev/hash_history.py000066400000000000000000000053121420514467300206120ustar00rootroot00000000000000import sqlite3 import sys from unpaddedbase64 import decode_base64, encode_base64 from synapse.crypto.event_signing import ( add_event_pdu_content_hash, compute_pdu_event_reference_hash, ) from synapse.federation.units import Pdu from synapse.storage._base import SQLBaseStore from synapse.storage.pdu import PduStore from synapse.storage.signatures import SignatureStore class Store: _get_pdu_tuples = PduStore.__dict__["_get_pdu_tuples"] _get_pdu_content_hashes_txn = SignatureStore.__dict__["_get_pdu_content_hashes_txn"] _get_prev_pdu_hashes_txn = SignatureStore.__dict__["_get_prev_pdu_hashes_txn"] _get_pdu_origin_signatures_txn = SignatureStore.__dict__[ "_get_pdu_origin_signatures_txn" ] _store_pdu_content_hash_txn = SignatureStore.__dict__["_store_pdu_content_hash_txn"] _store_pdu_reference_hash_txn = SignatureStore.__dict__[ "_store_pdu_reference_hash_txn" ] _store_prev_pdu_hash_txn = SignatureStore.__dict__["_store_prev_pdu_hash_txn"] simple_insert_txn = SQLBaseStore.__dict__["simple_insert_txn"] store = Store() def select_pdus(cursor): cursor.execute("SELECT pdu_id, origin FROM pdus ORDER BY depth ASC") ids = cursor.fetchall() pdu_tuples = store._get_pdu_tuples(cursor, ids) pdus = [Pdu.from_pdu_tuple(p) for p in pdu_tuples] reference_hashes = {} for pdu in pdus: try: if pdu.prev_pdus: print("PROCESS", pdu.pdu_id, pdu.origin, pdu.prev_pdus) for pdu_id, origin, hashes in pdu.prev_pdus: ref_alg, ref_hsh = reference_hashes[(pdu_id, origin)] hashes[ref_alg] = encode_base64(ref_hsh) store._store_prev_pdu_hash_txn( cursor, pdu.pdu_id, pdu.origin, pdu_id, origin, ref_alg, ref_hsh ) print("SUCCESS", pdu.pdu_id, pdu.origin, pdu.prev_pdus) pdu = add_event_pdu_content_hash(pdu) ref_alg, ref_hsh = compute_pdu_event_reference_hash(pdu) reference_hashes[(pdu.pdu_id, pdu.origin)] = (ref_alg, ref_hsh) store._store_pdu_reference_hash_txn( cursor, pdu.pdu_id, pdu.origin, ref_alg, ref_hsh ) for alg, hsh_base64 in pdu.hashes.items(): print(alg, hsh_base64) store._store_pdu_content_hash_txn( cursor, pdu.pdu_id, pdu.origin, alg, decode_base64(hsh_base64) ) except Exception: print("FAILED_", pdu.pdu_id, pdu.origin, pdu.prev_pdus) def main(): conn = sqlite3.connect(sys.argv[1]) cursor = conn.cursor() select_pdus(cursor) conn.commit() if __name__ == "__main__": main() synapse-1.53.0/scripts-dev/lint.sh000077500000000000000000000055051420514467300170450ustar00rootroot00000000000000#!/usr/bin/env bash # # Runs linting scripts over the local Synapse checkout # isort - sorts import statements # black - opinionated code formatter # flake8 - lints and finds mistakes set -e usage() { echo echo "Usage: $0 [-h] [-d] [paths...]" echo echo "-d" echo " Lint files that have changed since the last git commit." echo echo " If paths are provided and this option is set, both provided paths and those" echo " that have changed since the last commit will be linted." echo echo " If no paths are provided and this option is not set, all files will be linted." echo echo " Note that paths with a file extension that is not '.py' will be excluded." echo "-h" echo " Display this help text." } USING_DIFF=0 files=() while getopts ":dh" opt; do case $opt in d) USING_DIFF=1 ;; h) usage exit ;; \?) echo "ERROR: Invalid option: -$OPTARG" >&2 usage exit ;; esac done # Strip any options from the command line arguments now that # we've finished processing them shift "$((OPTIND-1))" if [ $USING_DIFF -eq 1 ]; then # Check both staged and non-staged changes for path in $(git diff HEAD --name-only); do filename=$(basename "$path") file_extension="${filename##*.}" # If an extension is present, and it's something other than 'py', # then ignore this file if [[ -n ${file_extension+x} && $file_extension != "py" ]]; then continue fi # Append this path to our list of files to lint files+=("$path") done fi # Append any remaining arguments as files to lint files+=("$@") if [[ $USING_DIFF -eq 1 ]]; then # If we were asked to lint changed files, and no paths were found as a result... if [ ${#files[@]} -eq 0 ]; then # Then print and exit echo "No files found to lint." exit 0 fi else # If we were not asked to lint changed files, and no paths were found as a result, # then lint everything! if [[ -z ${files+x} ]]; then # Lint all source code files and directories # Note: this list aims to mirror the one in tox.ini files=( "synapse" "docker" "tests" # annoyingly, black doesn't find these so we have to list them "scripts/export_signing_key" "scripts/generate_config" "scripts/generate_log_config" "scripts/hash_password" "scripts/register_new_matrix_user" "scripts/synapse_port_db" "scripts/update_synapse_database" "scripts-dev" "scripts-dev/build_debian_packages" "scripts-dev/sign_json" "contrib" "synctl" "setup.py" "synmark" "stubs" ".ci" ) fi fi echo "Linting these paths: ${files[*]}" echo # Print out the commands being run set -x isort "${files[@]}" python3 -m black "${files[@]}" ./scripts-dev/config-lint.sh flake8 "${files[@]}" mypy synapse-1.53.0/scripts-dev/list_url_patterns.py000077500000000000000000000023461420514467300216720ustar00rootroot00000000000000#! /usr/bin/python import argparse import ast import os import sys import yaml PATTERNS_V1 = [] PATTERNS_V2 = [] RESULT = {"v1": PATTERNS_V1, "v2": PATTERNS_V2} class CallVisitor(ast.NodeVisitor): def visit_Call(self, node): if isinstance(node.func, ast.Name): name = node.func.id else: return if name == "client_patterns": PATTERNS_V2.append(node.args[0].s) def find_patterns_in_code(input_code): input_ast = ast.parse(input_code) visitor = CallVisitor() visitor.visit(input_ast) def find_patterns_in_file(filepath): with open(filepath) as f: find_patterns_in_code(f.read()) parser = argparse.ArgumentParser(description="Find url patterns.") parser.add_argument( "directories", nargs="+", metavar="DIR", help="Directories to search for definitions", ) args = parser.parse_args() for directory in args.directories: for root, _, files in os.walk(directory): for filename in files: if filename.endswith(".py"): filepath = os.path.join(root, filename) find_patterns_in_file(filepath) PATTERNS_V1.sort() PATTERNS_V2.sort() yaml.dump(RESULT, sys.stdout, default_flow_style=False) synapse-1.53.0/scripts-dev/make_full_schema.sh000077500000000000000000000126271420514467300213610ustar00rootroot00000000000000#!/usr/bin/env bash # # This script generates SQL files for creating a brand new Synapse DB with the latest # schema, on both SQLite3 and Postgres. # # It does so by having Synapse generate an up-to-date SQLite DB, then running # synapse_port_db to convert it to Postgres. It then dumps the contents of both. export PGHOST="localhost" POSTGRES_DB_NAME="synapse_full_schema.$$" SQLITE_FULL_SCHEMA_OUTPUT_FILE="full.sql.sqlite" POSTGRES_FULL_SCHEMA_OUTPUT_FILE="full.sql.postgres" REQUIRED_DEPS=("matrix-synapse" "psycopg2") usage() { echo echo "Usage: $0 -p -o [-c] [-n] [-h]" echo echo "-p " echo " Username to connect to local postgres instance. The password will be requested" echo " during script execution." echo "-c" echo " CI mode. Enables coverage tracking and prints every command that the script runs." echo "-o " echo " Directory to output full schema files to." echo "-h" echo " Display this help text." } while getopts "p:co:h" opt; do case $opt in p) export PGUSER=$OPTARG ;; c) # Print all commands that are being executed set -x # Modify required dependencies for coverage REQUIRED_DEPS+=("coverage" "coverage-enable-subprocess") COVERAGE=1 ;; o) command -v realpath > /dev/null || (echo "The -o flag requires the 'realpath' binary to be installed" && exit 1) OUTPUT_DIR="$(realpath "$OPTARG")" ;; h) usage exit ;; \?) echo "ERROR: Invalid option: -$OPTARG" >&2 usage exit ;; esac done # Check that required dependencies are installed unsatisfied_requirements=() for dep in "${REQUIRED_DEPS[@]}"; do pip show "$dep" --quiet || unsatisfied_requirements+=("$dep") done if [ ${#unsatisfied_requirements} -ne 0 ]; then echo "Please install the following python packages: ${unsatisfied_requirements[*]}" exit 1 fi if [ -z "$PGUSER" ]; then echo "No postgres username supplied" usage exit 1 fi if [ -z "$OUTPUT_DIR" ]; then echo "No output directory supplied" usage exit 1 fi # Create the output directory if it doesn't exist mkdir -p "$OUTPUT_DIR" read -rsp "Postgres password for '$PGUSER': " PGPASSWORD echo "" export PGPASSWORD # Exit immediately if a command fails set -e # cd to root of the synapse directory cd "$(dirname "$0")/.." # Create temporary SQLite and Postgres homeserver db configs and key file TMPDIR=$(mktemp -d) KEY_FILE=$TMPDIR/test.signing.key # default Synapse signing key path SQLITE_CONFIG=$TMPDIR/sqlite.conf SQLITE_DB=$TMPDIR/homeserver.db POSTGRES_CONFIG=$TMPDIR/postgres.conf # Ensure these files are delete on script exit trap 'rm -rf $TMPDIR' EXIT cat > "$SQLITE_CONFIG" < "$POSTGRES_CONFIG" < "$OUTPUT_DIR/$SQLITE_FULL_SCHEMA_OUTPUT_FILE" echo "Dumping Postgres schema to '$OUTPUT_DIR/$POSTGRES_FULL_SCHEMA_OUTPUT_FILE'..." pg_dump --format=plain --no-tablespaces --no-acl --no-owner $POSTGRES_DB_NAME | sed -e '/^--/d' -e 's/public\.//g' -e '/^SET /d' -e '/^SELECT /d' > "$OUTPUT_DIR/$POSTGRES_FULL_SCHEMA_OUTPUT_FILE" echo "Cleaning up temporary Postgres database..." dropdb $POSTGRES_DB_NAME echo "Done! Files dumped to: $OUTPUT_DIR" synapse-1.53.0/scripts-dev/mypy_synapse_plugin.py000066400000000000000000000067361420514467300222370ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This is a mypy plugin for Synpase to deal with some of the funky typing that can crop up, e.g the cache descriptors. """ from typing import Callable, Optional from mypy.nodes import ARG_NAMED_OPT from mypy.plugin import MethodSigContext, Plugin from mypy.typeops import bind_self from mypy.types import CallableType, NoneType class SynapsePlugin(Plugin): def get_method_signature_hook( self, fullname: str ) -> Optional[Callable[[MethodSigContext], CallableType]]: if fullname.startswith( "synapse.util.caches.descriptors._CachedFunction.__call__" ) or fullname.startswith( "synapse.util.caches.descriptors._LruCachedFunction.__call__" ): return cached_function_method_signature return None def cached_function_method_signature(ctx: MethodSigContext) -> CallableType: """Fixes the `_CachedFunction.__call__` signature to be correct. It already has *almost* the correct signature, except: 1. the `self` argument needs to be marked as "bound"; 2. any `cache_context` argument should be removed; 3. an optional keyword argument `on_invalidated` should be added. """ # First we mark this as a bound function signature. signature = bind_self(ctx.default_signature) # Secondly, we remove any "cache_context" args. # # Note: We should be only doing this if `cache_context=True` is set, but if # it isn't then the code will raise an exception when its called anyway, so # its not the end of the world. context_arg_index = None for idx, name in enumerate(signature.arg_names): if name == "cache_context": context_arg_index = idx break arg_types = list(signature.arg_types) arg_names = list(signature.arg_names) arg_kinds = list(signature.arg_kinds) if context_arg_index: arg_types.pop(context_arg_index) arg_names.pop(context_arg_index) arg_kinds.pop(context_arg_index) # Third, we add an optional "on_invalidate" argument. # # This is a callable which accepts no input and returns nothing. calltyp = CallableType( arg_types=[], arg_kinds=[], arg_names=[], ret_type=NoneType(), fallback=ctx.api.named_generic_type("builtins.function", []), ) arg_types.append(calltyp) arg_names.append("on_invalidate") arg_kinds.append(ARG_NAMED_OPT) # Arg is an optional kwarg. signature = signature.copy_modified( arg_types=arg_types, arg_names=arg_names, arg_kinds=arg_kinds, ) return signature def plugin(version: str): # This is the entry point of the plugin, and let's us deal with the fact # that the mypy plugin interface is *not* stable by looking at the version # string. # # However, since we pin the version of mypy Synapse uses in CI, we don't # really care. return SynapsePlugin synapse-1.53.0/scripts-dev/next_github_number.sh000077500000000000000000000004641420514467300217660ustar00rootroot00000000000000#!/usr/bin/env bash set -e # Fetch the current GitHub issue number, add one to it -- presto! The likely # next PR number. CURRENT_NUMBER=$(curl -s "https://api.github.com/repos/matrix-org/synapse/issues?state=all&per_page=1" | jq -r ".[0].number") CURRENT_NUMBER=$((CURRENT_NUMBER+1)) echo $CURRENT_NUMBER synapse-1.53.0/scripts-dev/release.py000077500000000000000000000417111420514467300175340ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """An interactive script for doing a release. See `cli()` below. """ import re import subprocess import sys import urllib.request from os import path from tempfile import TemporaryDirectory from typing import List, Optional, Tuple import attr import click import commonmark import git import redbaron from click.exceptions import ClickException from github import Github from packaging import version def run_until_successful(command, *args, **kwargs): while True: completed_process = subprocess.run(command, *args, **kwargs) exit_code = completed_process.returncode if exit_code == 0: # successful, so nothing more to do here. return completed_process print(f"The command {command!r} failed with exit code {exit_code}.") print("Please try to correct the failure and then re-run.") click.confirm("Try again?", abort=True) @click.group() def cli(): """An interactive script to walk through the parts of creating a release. Requires the dev dependencies be installed, which can be done via: pip install -e .[dev] Then to use: ./scripts-dev/release.py prepare # ... ask others to look at the changelog ... ./scripts-dev/release.py tag # ... wait for asssets to build ... ./scripts-dev/release.py publish ./scripts-dev/release.py upload If the env var GH_TOKEN (or GITHUB_TOKEN) is set, or passed into the `tag`/`publish` command, then a new draft release will be created/published. """ @cli.command() def prepare(): """Do the initial stages of creating a release, including creating release branch, updating changelog and pushing to GitHub. """ # Make sure we're in a git repo. try: repo = git.Repo() except git.InvalidGitRepositoryError: raise click.ClickException("Not in Synapse repo.") if repo.is_dirty(): raise click.ClickException("Uncommitted changes exist.") click.secho("Updating git repo...") repo.remote().fetch() # Get the current version and AST from root Synapse module. current_version, parsed_synapse_ast, version_node = parse_version_from_module() # Figure out what sort of release we're doing and calcuate the new version. rc = click.confirm("RC", default=True) if current_version.pre: # If the current version is an RC we don't need to bump any of the # version numbers (other than the RC number). if rc: new_version = "{}.{}.{}rc{}".format( current_version.major, current_version.minor, current_version.micro, current_version.pre[1] + 1, ) else: new_version = "{}.{}.{}".format( current_version.major, current_version.minor, current_version.micro, ) else: # If this is a new release cycle then we need to know if it's a minor # or a patch version bump. release_type = click.prompt( "Release type", type=click.Choice(("minor", "patch")), show_choices=True, default="minor", ) if release_type == "minor": if rc: new_version = "{}.{}.{}rc1".format( current_version.major, current_version.minor + 1, 0, ) else: new_version = "{}.{}.{}".format( current_version.major, current_version.minor + 1, 0, ) else: if rc: new_version = "{}.{}.{}rc1".format( current_version.major, current_version.minor, current_version.micro + 1, ) else: new_version = "{}.{}.{}".format( current_version.major, current_version.minor, current_version.micro + 1, ) # Confirm the calculated version is OK. if not click.confirm(f"Create new version: {new_version}?", default=True): click.get_current_context().abort() # Switch to the release branch. parsed_new_version = version.parse(new_version) # We assume for debian changelogs that we only do RCs or full releases. assert not parsed_new_version.is_devrelease assert not parsed_new_version.is_postrelease release_branch_name = ( f"release-v{parsed_new_version.major}.{parsed_new_version.minor}" ) release_branch = find_ref(repo, release_branch_name) if release_branch: if release_branch.is_remote(): # If the release branch only exists on the remote we check it out # locally. repo.git.checkout(release_branch_name) release_branch = repo.active_branch else: # If a branch doesn't exist we create one. We ask which one branch it # should be based off, defaulting to sensible values depending on the # release type. if current_version.is_prerelease: default = release_branch_name elif release_type == "minor": default = "develop" else: default = "master" branch_name = click.prompt( "Which branch should the release be based on?", default=default ) base_branch = find_ref(repo, branch_name) if not base_branch: print(f"Could not find base branch {branch_name}!") click.get_current_context().abort() # Check out the base branch and ensure it's up to date repo.head.reference = base_branch repo.head.reset(index=True, working_tree=True) if not base_branch.is_remote(): update_branch(repo) # Create the new release branch release_branch = repo.create_head(release_branch_name, commit=base_branch) # Switch to the release branch and ensure its up to date. repo.git.checkout(release_branch_name) update_branch(repo) # Update the `__version__` variable and write it back to the file. version_node.value = '"' + new_version + '"' with open("synapse/__init__.py", "w") as f: f.write(parsed_synapse_ast.dumps()) # Generate changelogs run_until_successful("python3 -m towncrier", shell=True) # Generate debian changelogs if parsed_new_version.pre is not None: # If this is an RC then we need to coerce the version string to match # Debian norms, e.g. 1.39.0rc2 gets converted to 1.39.0~rc2. base_ver = parsed_new_version.base_version pre_type, pre_num = parsed_new_version.pre debian_version = f"{base_ver}~{pre_type}{pre_num}" else: debian_version = new_version run_until_successful( f'dch -M -v {debian_version} "New synapse release {debian_version}."', shell=True, ) run_until_successful('dch -M -r -D stable ""', shell=True) # Show the user the changes and ask if they want to edit the change log. repo.git.add("-u") subprocess.run("git diff --cached", shell=True) if click.confirm("Edit changelog?", default=False): click.edit(filename="CHANGES.md") # Commit the changes. repo.git.add("-u") repo.git.commit("-m", new_version) # We give the option to bail here in case the user wants to make sure things # are OK before pushing. if not click.confirm("Push branch to github?", default=True): print("") print("Run when ready to push:") print("") print(f"\tgit push -u {repo.remote().name} {repo.active_branch.name}") print("") sys.exit(0) # Otherwise, push and open the changelog in the browser. repo.git.push("-u", repo.remote().name, repo.active_branch.name) print("Opening the changelog in your browser...") print("Please ask others to give it a check.") click.launch( f"https://github.com/matrix-org/synapse/blob/{repo.active_branch.name}/CHANGES.md" ) @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"]) def tag(gh_token: Optional[str]): """Tags the release and generates a draft GitHub release""" # Make sure we're in a git repo. try: repo = git.Repo() except git.InvalidGitRepositoryError: raise click.ClickException("Not in Synapse repo.") if repo.is_dirty(): raise click.ClickException("Uncommitted changes exist.") click.secho("Updating git repo...") repo.remote().fetch() # Find out the version and tag name. current_version, _, _ = parse_version_from_module() tag_name = f"v{current_version}" # Check we haven't released this version. if tag_name in repo.tags: raise click.ClickException(f"Tag {tag_name} already exists!\n") # Get the appropriate changelogs and tag. changes = get_changes_for_version(current_version) click.echo_via_pager(changes) if click.confirm("Edit text?", default=False): changes = click.edit(changes, require_save=False) repo.create_tag(tag_name, message=changes, sign=True) if not click.confirm("Push tag to GitHub?", default=True): print("") print("Run when ready to push:") print("") print(f"\tgit push {repo.remote().name} tag {current_version}") print("") return repo.git.push(repo.remote().name, "tag", tag_name) # If no token was given, we bail here if not gh_token: print("Launching the GitHub release page in your browser.") print("Please correct the title and create a draft.") if current_version.is_prerelease: print("As this is an RC, remember to mark it as a pre-release!") print("(by the way, this step can be automated by passing --gh-token,") print("or one of the GH_TOKEN or GITHUB_TOKEN env vars.)") click.launch(f"https://github.com/matrix-org/synapse/releases/edit/{tag_name}") print("Once done, you need to wait for the release assets to build.") if click.confirm("Launch the release assets actions page?", default=True): click.launch( f"https://github.com/matrix-org/synapse/actions?query=branch%3A{tag_name}" ) return # Create a new draft release gh = Github(gh_token) gh_repo = gh.get_repo("matrix-org/synapse") release = gh_repo.create_git_release( tag=tag_name, name=tag_name, message=changes, draft=True, prerelease=current_version.is_prerelease, ) # Open the release and the actions where we are building the assets. print("Launching the release page and the actions page.") click.launch(release.html_url) click.launch( f"https://github.com/matrix-org/synapse/actions?query=branch%3A{tag_name}" ) click.echo("Wait for release assets to be built") @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"], required=True) def publish(gh_token: str): """Publish release.""" # Make sure we're in a git repo. try: repo = git.Repo() except git.InvalidGitRepositoryError: raise click.ClickException("Not in Synapse repo.") if repo.is_dirty(): raise click.ClickException("Uncommitted changes exist.") current_version, _, _ = parse_version_from_module() tag_name = f"v{current_version}" if not click.confirm(f"Publish {tag_name}?", default=True): return # Publish the draft release gh = Github(gh_token) gh_repo = gh.get_repo("matrix-org/synapse") for release in gh_repo.get_releases(): if release.title == tag_name: break else: raise ClickException(f"Failed to find GitHub release for {tag_name}") assert release.title == tag_name if not release.draft: click.echo("Release already published.") return release = release.update_release( name=release.title, message=release.body, tag_name=release.tag_name, prerelease=release.prerelease, draft=False, ) @cli.command() def upload(): """Upload release to pypi.""" current_version, _, _ = parse_version_from_module() tag_name = f"v{current_version}" pypi_asset_names = [ f"matrix_synapse-{current_version}-py3-none-any.whl", f"matrix-synapse-{current_version}.tar.gz", ] with TemporaryDirectory(prefix=f"synapse_upload_{tag_name}_") as tmpdir: for name in pypi_asset_names: filename = path.join(tmpdir, name) url = f"https://github.com/matrix-org/synapse/releases/download/{tag_name}/{name}" click.echo(f"Downloading {name} into {filename}") urllib.request.urlretrieve(url, filename=filename) if click.confirm("Upload to PyPI?", default=True): subprocess.run("twine upload *", shell=True, cwd=tmpdir) click.echo( f"Done! Remember to merge the tag {tag_name} into the appropriate branches" ) def parse_version_from_module() -> Tuple[ version.Version, redbaron.RedBaron, redbaron.Node ]: # Parse the AST and load the `__version__` node so that we can edit it # later. with open("synapse/__init__.py") as f: red = redbaron.RedBaron(f.read()) version_node = None for node in red: if node.type != "assignment": continue if node.target.type != "name": continue if node.target.value != "__version__": continue version_node = node break if not version_node: print("Failed to find '__version__' definition in synapse/__init__.py") sys.exit(1) # Parse the current version. current_version = version.parse(version_node.value.value.strip('"')) assert isinstance(current_version, version.Version) return current_version, red, version_node def find_ref(repo: git.Repo, ref_name: str) -> Optional[git.HEAD]: """Find the branch/ref, looking first locally then in the remote.""" if ref_name in repo.refs: return repo.refs[ref_name] elif ref_name in repo.remote().refs: return repo.remote().refs[ref_name] else: return None def update_branch(repo: git.Repo): """Ensure branch is up to date if it has a remote""" if repo.active_branch.tracking_branch(): repo.git.merge(repo.active_branch.tracking_branch().name) def get_changes_for_version(wanted_version: version.Version) -> str: """Get the changelogs for the given version. If an RC then will only get the changelog for that RC version, otherwise if its a full release will get the changelog for the release and all its RCs. """ with open("CHANGES.md") as f: changes = f.read() # First we parse the changelog so that we can split it into sections based # on the release headings. ast = commonmark.Parser().parse(changes) @attr.s(auto_attribs=True) class VersionSection: title: str # These are 0-based. start_line: int end_line: Optional[int] = None # Is none if its the last entry headings: List[VersionSection] = [] for node, _ in ast.walker(): # We look for all text nodes that are in a level 1 heading. if node.t != "text": continue if node.parent.t != "heading" or node.parent.level != 1: continue # If we have a previous heading then we update its `end_line`. if headings: headings[-1].end_line = node.parent.sourcepos[0][0] - 1 headings.append(VersionSection(node.literal, node.parent.sourcepos[0][0] - 1)) changes_by_line = changes.split("\n") version_changelog = [] # The lines we want to include in the changelog # Go through each section and find any that match the requested version. regex = re.compile(r"^Synapse v?(\S+)") for section in headings: groups = regex.match(section.title) if not groups: continue heading_version = version.parse(groups.group(1)) heading_base_version = version.parse(heading_version.base_version) # Check if heading version matches the requested version, or if its an # RC of the requested version. if wanted_version not in (heading_version, heading_base_version): continue version_changelog.extend(changes_by_line[section.start_line : section.end_line]) return "\n".join(version_changelog) if __name__ == "__main__": cli() synapse-1.53.0/scripts-dev/sign_json000077500000000000000000000117531420514467300174610ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import json import sys from json import JSONDecodeError import yaml from signedjson.key import read_signing_keys from signedjson.sign import sign_json from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.crypto.event_signing import add_hashes_and_signatures from synapse.util import json_encoder def main(): parser = argparse.ArgumentParser( description="""Adds a signature to a JSON object. Example usage: $ scripts-dev/sign_json.py -N test -k localhost.signing.key "{}" {"signatures":{"test":{"ed25519:a_ZnZh":"LmPnml6iM0iR..."}}} """, formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument( "-N", "--server-name", help="Name to give as the local homeserver. If unspecified, will be " "read from the config file.", ) parser.add_argument( "-k", "--signing-key-path", help="Path to the file containing the private ed25519 key to sign the " "request with.", ) parser.add_argument( "-K", "--signing-key", help="The private ed25519 key to sign the request with.", ) parser.add_argument( "-c", "--config", default="homeserver.yaml", help=( "Path to synapse config file, from which the server name and/or signing " "key path will be read. Ignored if --server-name and --signing-key(-path) " "are both given." ), ) parser.add_argument( "--sign-event-room-version", type=str, help=( "Sign the JSON as an event for the given room version, rather than raw JSON. " "This means that we will add a 'hashes' object, and redact the event before " "signing." ), ) input_args = parser.add_mutually_exclusive_group() input_args.add_argument("input_data", nargs="?", help="Raw JSON to be signed.") input_args.add_argument( "-i", "--input", type=argparse.FileType("r"), default=sys.stdin, help=( "A file from which to read the JSON to be signed. If neither --input nor " "input_data are given, JSON will be read from stdin." ), ) parser.add_argument( "-o", "--output", type=argparse.FileType("w"), default=sys.stdout, help="Where to write the signed JSON. Defaults to stdout.", ) args = parser.parse_args() if not args.server_name or not (args.signing_key_path or args.signing_key): read_args_from_config(args) if args.signing_key: keys = read_signing_keys([args.signing_key]) else: with open(args.signing_key_path) as f: keys = read_signing_keys(f) json_to_sign = args.input_data if json_to_sign is None: json_to_sign = args.input.read() try: obj = json.loads(json_to_sign) except JSONDecodeError as e: print("Unable to parse input as JSON: %s" % e, file=sys.stderr) sys.exit(1) if not isinstance(obj, dict): print("Input json was not an object", file=sys.stderr) sys.exit(1) if args.sign_event_room_version: room_version = KNOWN_ROOM_VERSIONS.get(args.sign_event_room_version) if not room_version: print( f"Unknown room version {args.sign_event_room_version}", file=sys.stderr ) sys.exit(1) add_hashes_and_signatures(room_version, obj, args.server_name, keys[0]) else: sign_json(obj, args.server_name, keys[0]) for c in json_encoder.iterencode(obj): args.output.write(c) args.output.write("\n") def read_args_from_config(args: argparse.Namespace) -> None: with open(args.config, "r") as fh: config = yaml.safe_load(fh) if not args.server_name: args.server_name = config["server_name"] if not args.signing_key_path and not args.signing_key: if "signing_key" in config: args.signing_key = config["signing_key"] elif "signing_key_path" in config: args.signing_key_path = config["signing_key_path"] else: print( "A signing key must be given on the commandline or in the config file.", file=sys.stderr, ) sys.exit(1) if __name__ == "__main__": main() synapse-1.53.0/scripts-dev/tail-synapse.py000066400000000000000000000032761420514467300205260ustar00rootroot00000000000000import collections import json import sys import time import requests Entry = collections.namedtuple("Entry", "name position rows") ROW_TYPES = {} def row_type_for_columns(name, column_names): column_names = tuple(column_names) row_type = ROW_TYPES.get((name, column_names)) if row_type is None: row_type = collections.namedtuple(name, column_names) ROW_TYPES[(name, column_names)] = row_type return row_type def parse_response(content): streams = json.loads(content) result = {} for name, value in streams.items(): row_type = row_type_for_columns(name, value["field_names"]) position = value["position"] rows = [row_type(*row) for row in value["rows"]] result[name] = Entry(name, position, rows) return result def replicate(server, streams): return parse_response( requests.get( server + "/_synapse/replication", verify=False, params=streams ).content ) def main(): server = sys.argv[1] streams = None while not streams: try: streams = { row.name: row.position for row in replicate(server, {"streams": "-1"})["streams"].rows } except requests.exceptions.ConnectionError: time.sleep(0.1) while True: try: results = replicate(server, streams) except Exception: sys.stdout.write("connection_lost(" + repr(streams) + ")\n") break for update in results.values(): for row in update.rows: sys.stdout.write(repr(row) + "\n") streams[update.name] = update.position if __name__ == "__main__": main() synapse-1.53.0/scripts-dev/test_postgresql.sh000077500000000000000000000011071420514467300213330ustar00rootroot00000000000000#!/usr/bin/env bash # This script builds the Docker image to run the PostgreSQL tests, and then runs # the tests. It uses a dedicated tox environment so that we don't have to # rebuild it each time. # Command line arguments to this script are forwarded to "tox" and then to "trial". set -e # Build, and tag docker build docker/ \ --build-arg "UID=$(id -u)" \ --build-arg "GID=$(id -g)" \ -f docker/Dockerfile-pgtests \ -t synapsepgtests # Run, mounting the current directory into /src docker run --rm -it -v "$(pwd):/src" -v synapse-pg-test-tox:/tox synapsepgtests "$@" synapse-1.53.0/scripts/000077500000000000000000000000001420514467300147575ustar00rootroot00000000000000synapse-1.53.0/scripts/export_signing_key000077500000000000000000000051631420514467300206210ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import sys import time from typing import Optional import nacl.signing from signedjson.key import encode_verify_key_base64, get_verify_key, read_signing_keys def exit(status: int = 0, message: Optional[str] = None): if message: print(message, file=sys.stderr) sys.exit(status) def format_plain(public_key: nacl.signing.VerifyKey): print( "%s:%s %s" % ( public_key.alg, public_key.version, encode_verify_key_base64(public_key), ) ) def format_for_config(public_key: nacl.signing.VerifyKey, expiry_ts: int): print( ' "%s:%s": { key: "%s", expired_ts: %i }' % ( public_key.alg, public_key.version, encode_verify_key_base64(public_key), expiry_ts, ) ) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "key_file", nargs="+", type=argparse.FileType("r"), help="The key file to read", ) parser.add_argument( "-x", action="store_true", dest="for_config", help="format the output for inclusion in the old_signing_keys config setting", ) parser.add_argument( "--expiry-ts", type=int, default=int(time.time() * 1000) + 6 * 3600000, help=( "The expiry time to use for -x, in milliseconds since 1970. The default " "is (now+6h)." ), ) args = parser.parse_args() formatter = ( (lambda k: format_for_config(k, args.expiry_ts)) if args.for_config else format_plain ) keys = [] for file in args.key_file: try: res = read_signing_keys(file) except Exception as e: exit( status=1, message="Error reading key from file %s: %s %s" % (file.name, type(e), e), ) res = [] for key in res: formatter(get_verify_key(key)) synapse-1.53.0/scripts/generate_config000077500000000000000000000043761420514467300200360ustar00rootroot00000000000000#!/usr/bin/env python3 import argparse import shutil import sys from synapse.config.homeserver import HomeServerConfig if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "--config-dir", default="CONFDIR", help="The path where the config files are kept. Used to create filenames for " "things like the log config and the signing key. Default: %(default)s", ) parser.add_argument( "--data-dir", default="DATADIR", help="The path where the data files are kept. Used to create filenames for " "things like the database and media store. Default: %(default)s", ) parser.add_argument( "--server-name", default="SERVERNAME", help="The server name. Used to initialise the server_name config param, but also " "used in the names of some of the config files. Default: %(default)s", ) parser.add_argument( "--report-stats", action="store", help="Whether the generated config reports anonymized usage statistics", choices=["yes", "no"], ) parser.add_argument( "--generate-secrets", action="store_true", help="Enable generation of new secrets for things like the macaroon_secret_key." "By default, these parameters will be left unset.", ) parser.add_argument( "-o", "--output-file", type=argparse.FileType("w"), default=sys.stdout, help="File to write the configuration to. Default: stdout", ) parser.add_argument( "--header-file", type=argparse.FileType("r"), help="File from which to read a header, which will be printed before the " "generated config.", ) args = parser.parse_args() report_stats = args.report_stats if report_stats is not None: report_stats = report_stats == "yes" conf = HomeServerConfig().generate_config( config_dir_path=args.config_dir, data_dir_path=args.data_dir, server_name=args.server_name, generate_secrets=args.generate_secrets, report_stats=report_stats, ) if args.header_file: shutil.copyfileobj(args.header_file, args.output_file) args.output_file.write(conf) synapse-1.53.0/scripts/generate_log_config000077500000000000000000000024221420514467300206650ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import sys from synapse.config.logger import DEFAULT_LOG_CONFIG if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "-o", "--output-file", type=argparse.FileType("w"), default=sys.stdout, help="File to write the configuration to. Default: stdout", ) parser.add_argument( "-f", "--log-file", type=str, default="/var/log/matrix-synapse/homeserver.log", help="name of the log file", ) args = parser.parse_args() out = args.output_file out.write(DEFAULT_LOG_CONFIG.substitute(log_file=args.log_file)) out.flush() synapse-1.53.0/scripts/generate_signing_key.py000077500000000000000000000022231420514467300215130ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import sys from signedjson.key import generate_signing_key, write_signing_keys from synapse.util.stringutils import random_string if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "-o", "--output_file", type=argparse.FileType("w"), default=sys.stdout, help="Where to write the output to", ) args = parser.parse_args() key_id = "a_" + random_string(4) key = (generate_signing_key(key_id),) write_signing_keys(args.output_file, key) synapse-1.53.0/scripts/hash_password000077500000000000000000000040161420514467300175530ustar00rootroot00000000000000#!/usr/bin/env python import argparse import getpass import sys import unicodedata import bcrypt import yaml bcrypt_rounds = 12 password_pepper = "" def prompt_for_pass(): password = getpass.getpass("Password: ") if not password: raise Exception("Password cannot be blank.") confirm_password = getpass.getpass("Confirm password: ") if password != confirm_password: raise Exception("Passwords do not match.") return password if __name__ == "__main__": parser = argparse.ArgumentParser( description=( "Calculate the hash of a new password, so that passwords can be reset" ) ) parser.add_argument( "-p", "--password", default=None, help="New password for user. Will prompt if omitted.", ) parser.add_argument( "-c", "--config", type=argparse.FileType("r"), help=( "Path to server config file. " "Used to read in bcrypt_rounds and password_pepper." ), ) args = parser.parse_args() if "config" in args and args.config: config = yaml.safe_load(args.config) bcrypt_rounds = config.get("bcrypt_rounds", bcrypt_rounds) password_config = config.get("password_config", None) or {} password_pepper = password_config.get("pepper", password_pepper) password = args.password if not password: password = prompt_for_pass() # On Python 2, make sure we decode it to Unicode before we normalise it if isinstance(password, bytes): try: password = password.decode(sys.stdin.encoding) except UnicodeDecodeError: print( "ERROR! Your password is not decodable using your terminal encoding (%s)." % (sys.stdin.encoding,) ) pw = unicodedata.normalize("NFKC", password) hashed = bcrypt.hashpw( pw.encode("utf8") + password_pepper.encode("utf8"), bcrypt.gensalt(bcrypt_rounds), ).decode("ascii") print(hashed) synapse-1.53.0/scripts/move_remote_media_to_new_store.py000077500000000000000000000071311420514467300236050ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Moves a list of remote media from one media store to another. The input should be a list of media files to be moved, one per line. Each line should be formatted:: | This can be extracted from postgres with:: psql --tuples-only -A -c "select media_origin, filesystem_id from matrix.remote_media_cache where ..." To use, pipe the above into:: PYTHON_PATH=. ./scripts/move_remote_media_to_new_store.py """ import argparse import logging import os import shutil import sys from synapse.rest.media.v1.filepath import MediaFilePaths logger = logging.getLogger() def main(src_repo, dest_repo): src_paths = MediaFilePaths(src_repo) dest_paths = MediaFilePaths(dest_repo) for line in sys.stdin: line = line.strip() parts = line.split("|") if len(parts) != 2: print("Unable to parse input line %s" % line, file=sys.stderr) sys.exit(1) move_media(parts[0], parts[1], src_paths, dest_paths) def move_media(origin_server, file_id, src_paths, dest_paths): """Move the given file, and any thumbnails, to the dest repo Args: origin_server (str): file_id (str): src_paths (MediaFilePaths): dest_paths (MediaFilePaths): """ logger.info("%s/%s", origin_server, file_id) # check that the original exists original_file = src_paths.remote_media_filepath(origin_server, file_id) if not os.path.exists(original_file): logger.warning( "Original for %s/%s (%s) does not exist", origin_server, file_id, original_file, ) else: mkdir_and_move( original_file, dest_paths.remote_media_filepath(origin_server, file_id) ) # now look for thumbnails original_thumb_dir = src_paths.remote_media_thumbnail_dir(origin_server, file_id) if not os.path.exists(original_thumb_dir): return mkdir_and_move( original_thumb_dir, dest_paths.remote_media_thumbnail_dir(origin_server, file_id), ) def mkdir_and_move(original_file, dest_file): dirname = os.path.dirname(dest_file) if not os.path.exists(dirname): logger.debug("mkdir %s", dirname) os.makedirs(dirname) logger.debug("mv %s %s", original_file, dest_file) shutil.move(original_file, dest_file) if __name__ == "__main__": parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter ) parser.add_argument("-v", action="store_true", help="enable debug logging") parser.add_argument("src_repo", help="Path to source content repo") parser.add_argument("dest_repo", help="Path to source content repo") args = parser.parse_args() logging_config = { "level": logging.DEBUG if args.v else logging.INFO, "format": "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s", } logging.basicConfig(**logging_config) main(args.src_repo, args.dest_repo) synapse-1.53.0/scripts/register_new_matrix_user000077500000000000000000000013011420514467300220170ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse._scripts.register_new_matrix_user import main if __name__ == "__main__": main() synapse-1.53.0/scripts/synapse_port_db000077500000000000000000001232331420514467300201040ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2015, 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import curses import logging import sys import time import traceback from typing import Dict, Iterable, Optional, Set import yaml from matrix_common.versionstring import get_distribution_version_string from twisted.internet import defer, reactor from synapse.config.database import DatabaseConnectionConfig from synapse.config.homeserver import HomeServerConfig from synapse.logging.context import ( LoggingContext, make_deferred_yieldable, run_in_background, ) from synapse.storage.database import DatabasePool, make_conn from synapse.storage.databases.main import PushRuleStore from synapse.storage.databases.main.account_data import AccountDataWorkerStore from synapse.storage.databases.main.client_ips import ClientIpBackgroundUpdateStore from synapse.storage.databases.main.deviceinbox import DeviceInboxBackgroundUpdateStore from synapse.storage.databases.main.devices import DeviceBackgroundUpdateStore from synapse.storage.databases.main.end_to_end_keys import EndToEndKeyBackgroundStore from synapse.storage.databases.main.events_bg_updates import ( EventsBackgroundUpdatesStore, ) from synapse.storage.databases.main.group_server import GroupServerWorkerStore from synapse.storage.databases.main.media_repository import ( MediaRepositoryBackgroundUpdateStore, ) from synapse.storage.databases.main.presence import PresenceBackgroundUpdateStore from synapse.storage.databases.main.pusher import PusherWorkerStore from synapse.storage.databases.main.registration import ( RegistrationBackgroundUpdateStore, find_max_generated_user_id_localpart, ) from synapse.storage.databases.main.room import RoomBackgroundUpdateStore from synapse.storage.databases.main.roommember import RoomMemberBackgroundUpdateStore from synapse.storage.databases.main.search import SearchBackgroundUpdateStore from synapse.storage.databases.main.state import MainStateBackgroundUpdateStore from synapse.storage.databases.main.stats import StatsStore from synapse.storage.databases.main.user_directory import ( UserDirectoryBackgroundUpdateStore, ) from synapse.storage.databases.state.bg_updates import StateBackgroundUpdateStore from synapse.storage.engines import create_engine from synapse.storage.prepare_database import prepare_database from synapse.util import Clock logger = logging.getLogger("synapse_port_db") BOOLEAN_COLUMNS = { "events": ["processed", "outlier", "contains_url"], "rooms": ["is_public", "has_auth_chain_index"], "event_edges": ["is_state"], "presence_list": ["accepted"], "presence_stream": ["currently_active"], "public_room_list_stream": ["visibility"], "devices": ["hidden"], "device_lists_outbound_pokes": ["sent"], "users_who_share_rooms": ["share_private"], "groups": ["is_public"], "group_rooms": ["is_public"], "group_users": ["is_public", "is_admin"], "group_summary_rooms": ["is_public"], "group_room_categories": ["is_public"], "group_summary_users": ["is_public"], "group_roles": ["is_public"], "local_group_membership": ["is_publicised", "is_admin"], "e2e_room_keys": ["is_verified"], "account_validity": ["email_sent"], "redactions": ["have_censored"], "room_stats_state": ["is_federatable"], "local_media_repository": ["safe_from_quarantine"], "users": ["shadow_banned"], "e2e_fallback_keys_json": ["used"], "access_tokens": ["used"], } APPEND_ONLY_TABLES = [ "event_reference_hashes", "events", "event_json", "state_events", "room_memberships", "topics", "room_names", "rooms", "local_media_repository", "local_media_repository_thumbnails", "remote_media_cache", "remote_media_cache_thumbnails", "redactions", "event_edges", "event_auth", "received_transactions", "sent_transactions", "transaction_id_to_pdu", "users", "state_groups", "state_groups_state", "event_to_state_groups", "rejections", "event_search", "presence_stream", "push_rules_stream", "ex_outlier_stream", "cache_invalidation_stream_by_instance", "public_room_list_stream", "state_group_edges", "stream_ordering_to_exterm", ] IGNORED_TABLES = { # We don't port these tables, as they're a faff and we can regenerate # them anyway. "user_directory", "user_directory_search", "user_directory_search_content", "user_directory_search_docsize", "user_directory_search_segdir", "user_directory_search_segments", "user_directory_search_stat", "user_directory_search_pos", "users_who_share_private_rooms", "users_in_public_room", # UI auth sessions have foreign keys so additional care needs to be taken, # the sessions are transient anyway, so ignore them. "ui_auth_sessions", "ui_auth_sessions_credentials", "ui_auth_sessions_ips", } # Error returned by the run function. Used at the top-level part of the script to # handle errors and return codes. end_error = None # type: Optional[str] # The exec_info for the error, if any. If error is defined but not exec_info the script # will show only the error message without the stacktrace, if exec_info is defined but # not the error then the script will show nothing outside of what's printed in the run # function. If both are defined, the script will print both the error and the stacktrace. end_error_exec_info = None class Store( ClientIpBackgroundUpdateStore, DeviceInboxBackgroundUpdateStore, DeviceBackgroundUpdateStore, EventsBackgroundUpdatesStore, MediaRepositoryBackgroundUpdateStore, RegistrationBackgroundUpdateStore, RoomBackgroundUpdateStore, RoomMemberBackgroundUpdateStore, SearchBackgroundUpdateStore, StateBackgroundUpdateStore, MainStateBackgroundUpdateStore, UserDirectoryBackgroundUpdateStore, EndToEndKeyBackgroundStore, StatsStore, AccountDataWorkerStore, PushRuleStore, PusherWorkerStore, PresenceBackgroundUpdateStore, GroupServerWorkerStore, ): def execute(self, f, *args, **kwargs): return self.db_pool.runInteraction(f.__name__, f, *args, **kwargs) def execute_sql(self, sql, *args): def r(txn): txn.execute(sql, args) return txn.fetchall() return self.db_pool.runInteraction("execute_sql", r) def insert_many_txn(self, txn, table, headers, rows): sql = "INSERT INTO %s (%s) VALUES (%s)" % ( table, ", ".join(k for k in headers), ", ".join("%s" for _ in headers), ) try: txn.executemany(sql, rows) except Exception: logger.exception("Failed to insert: %s", table) raise def set_room_is_public(self, room_id, is_public): raise Exception( "Attempt to set room_is_public during port_db: database not empty?" ) class MockHomeserver: def __init__(self, config): self.clock = Clock(reactor) self.config = config self.hostname = config.server.server_name self.version_string = "Synapse/" + get_distribution_version_string( "matrix-synapse" ) def get_clock(self): return self.clock def get_reactor(self): return reactor def get_instance_name(self): return "master" class Porter(object): def __init__(self, **kwargs): self.__dict__.update(kwargs) async def setup_table(self, table): if table in APPEND_ONLY_TABLES: # It's safe to just carry on inserting. row = await self.postgres_store.db_pool.simple_select_one( table="port_from_sqlite3", keyvalues={"table_name": table}, retcols=("forward_rowid", "backward_rowid"), allow_none=True, ) total_to_port = None if row is None: if table == "sent_transactions": ( forward_chunk, already_ported, total_to_port, ) = await self._setup_sent_transactions() backward_chunk = 0 else: await self.postgres_store.db_pool.simple_insert( table="port_from_sqlite3", values={ "table_name": table, "forward_rowid": 1, "backward_rowid": 0, }, ) forward_chunk = 1 backward_chunk = 0 already_ported = 0 else: forward_chunk = row["forward_rowid"] backward_chunk = row["backward_rowid"] if total_to_port is None: already_ported, total_to_port = await self._get_total_count_to_port( table, forward_chunk, backward_chunk ) else: def delete_all(txn): txn.execute( "DELETE FROM port_from_sqlite3 WHERE table_name = %s", (table,) ) txn.execute("TRUNCATE %s CASCADE" % (table,)) await self.postgres_store.execute(delete_all) await self.postgres_store.db_pool.simple_insert( table="port_from_sqlite3", values={"table_name": table, "forward_rowid": 1, "backward_rowid": 0}, ) forward_chunk = 1 backward_chunk = 0 already_ported, total_to_port = await self._get_total_count_to_port( table, forward_chunk, backward_chunk ) return table, already_ported, total_to_port, forward_chunk, backward_chunk async def get_table_constraints(self) -> Dict[str, Set[str]]: """Returns a map of tables that have foreign key constraints to tables they depend on.""" def _get_constraints(txn): # We can pull the information about foreign key constraints out from # the postgres schema tables. sql = """ SELECT DISTINCT tc.table_name, ccu.table_name AS foreign_table_name FROM information_schema.table_constraints AS tc INNER JOIN information_schema.constraint_column_usage AS ccu USING (table_schema, constraint_name) WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name != ccu.table_name; """ txn.execute(sql) results = {} for table, foreign_table in txn: results.setdefault(table, set()).add(foreign_table) return results return await self.postgres_store.db_pool.runInteraction( "get_table_constraints", _get_constraints ) async def handle_table( self, table, postgres_size, table_size, forward_chunk, backward_chunk ): logger.info( "Table %s: %i/%i (rows %i-%i) already ported", table, postgres_size, table_size, backward_chunk + 1, forward_chunk - 1, ) if not table_size: return self.progress.add_table(table, postgres_size, table_size) if table == "event_search": await self.handle_search_table( postgres_size, table_size, forward_chunk, backward_chunk ) return if table in IGNORED_TABLES: self.progress.update(table, table_size) # Mark table as done return if table == "user_directory_stream_pos": # We need to make sure there is a single row, `(X, null), as that is # what synapse expects to be there. await self.postgres_store.db_pool.simple_insert( table=table, values={"stream_id": None} ) self.progress.update(table, table_size) # Mark table as done return forward_select = ( "SELECT rowid, * FROM %s WHERE rowid >= ? ORDER BY rowid LIMIT ?" % (table,) ) backward_select = ( "SELECT rowid, * FROM %s WHERE rowid <= ? ORDER BY rowid LIMIT ?" % (table,) ) do_forward = [True] do_backward = [True] while True: def r(txn): forward_rows = [] backward_rows = [] if do_forward[0]: txn.execute(forward_select, (forward_chunk, self.batch_size)) forward_rows = txn.fetchall() if not forward_rows: do_forward[0] = False if do_backward[0]: txn.execute(backward_select, (backward_chunk, self.batch_size)) backward_rows = txn.fetchall() if not backward_rows: do_backward[0] = False if forward_rows or backward_rows: headers = [column[0] for column in txn.description] else: headers = None return headers, forward_rows, backward_rows headers, frows, brows = await self.sqlite_store.db_pool.runInteraction( "select", r ) if frows or brows: if frows: forward_chunk = max(row[0] for row in frows) + 1 if brows: backward_chunk = min(row[0] for row in brows) - 1 rows = frows + brows rows = self._convert_rows(table, headers, rows) def insert(txn): self.postgres_store.insert_many_txn(txn, table, headers[1:], rows) self.postgres_store.db_pool.simple_update_one_txn( txn, table="port_from_sqlite3", keyvalues={"table_name": table}, updatevalues={ "forward_rowid": forward_chunk, "backward_rowid": backward_chunk, }, ) await self.postgres_store.execute(insert) postgres_size += len(rows) self.progress.update(table, postgres_size) else: return async def handle_search_table( self, postgres_size, table_size, forward_chunk, backward_chunk ): select = ( "SELECT es.rowid, es.*, e.origin_server_ts, e.stream_ordering" " FROM event_search as es" " INNER JOIN events AS e USING (event_id, room_id)" " WHERE es.rowid >= ?" " ORDER BY es.rowid LIMIT ?" ) while True: def r(txn): txn.execute(select, (forward_chunk, self.batch_size)) rows = txn.fetchall() headers = [column[0] for column in txn.description] return headers, rows headers, rows = await self.sqlite_store.db_pool.runInteraction("select", r) if rows: forward_chunk = rows[-1][0] + 1 # We have to treat event_search differently since it has a # different structure in the two different databases. def insert(txn): sql = ( "INSERT INTO event_search (event_id, room_id, key," " sender, vector, origin_server_ts, stream_ordering)" " VALUES (?,?,?,?,to_tsvector('english', ?),?,?)" ) rows_dict = [] for row in rows: d = dict(zip(headers, row)) if "\0" in d["value"]: logger.warning("dropping search row %s", d) else: rows_dict.append(d) txn.executemany( sql, [ ( row["event_id"], row["room_id"], row["key"], row["sender"], row["value"], row["origin_server_ts"], row["stream_ordering"], ) for row in rows_dict ], ) self.postgres_store.db_pool.simple_update_one_txn( txn, table="port_from_sqlite3", keyvalues={"table_name": "event_search"}, updatevalues={ "forward_rowid": forward_chunk, "backward_rowid": backward_chunk, }, ) await self.postgres_store.execute(insert) postgres_size += len(rows) self.progress.update("event_search", postgres_size) else: return def build_db_store( self, db_config: DatabaseConnectionConfig, allow_outdated_version: bool = False, ): """Builds and returns a database store using the provided configuration. Args: db_config: The database configuration allow_outdated_version: True to suppress errors about the database server version being too old to run a complete synapse Returns: The built Store object. """ self.progress.set_state("Preparing %s" % db_config.config["name"]) engine = create_engine(db_config.config) hs = MockHomeserver(self.hs_config) with make_conn(db_config, engine, "portdb") as db_conn: engine.check_database( db_conn, allow_outdated_version=allow_outdated_version ) prepare_database(db_conn, engine, config=self.hs_config) store = Store(DatabasePool(hs, db_config, engine), db_conn, hs) db_conn.commit() return store async def run_background_updates_on_postgres(self): # Manually apply all background updates on the PostgreSQL database. postgres_ready = ( await self.postgres_store.db_pool.updates.has_completed_background_updates() ) if not postgres_ready: # Only say that we're running background updates when there are background # updates to run. self.progress.set_state("Running background updates on PostgreSQL") while not postgres_ready: await self.postgres_store.db_pool.updates.do_next_background_update(100) postgres_ready = await ( self.postgres_store.db_pool.updates.has_completed_background_updates() ) async def run(self): """Ports the SQLite database to a PostgreSQL database. When a fatal error is met, its message is assigned to the global "end_error" variable. When this error comes with a stacktrace, its exec_info is assigned to the global "end_error_exec_info" variable. """ global end_error try: # we allow people to port away from outdated versions of sqlite. self.sqlite_store = self.build_db_store( DatabaseConnectionConfig("master-sqlite", self.sqlite_config), allow_outdated_version=True, ) # Check if all background updates are done, abort if not. updates_complete = ( await self.sqlite_store.db_pool.updates.has_completed_background_updates() ) if not updates_complete: end_error = ( "Pending background updates exist in the SQLite3 database." " Please start Synapse again and wait until every update has finished" " before running this script.\n" ) return self.postgres_store = self.build_db_store( self.hs_config.database.get_single_database() ) await self.run_background_updates_on_postgres() self.progress.set_state("Creating port tables") def create_port_table(txn): txn.execute( "CREATE TABLE IF NOT EXISTS port_from_sqlite3 (" " table_name varchar(100) NOT NULL UNIQUE," " forward_rowid bigint NOT NULL," " backward_rowid bigint NOT NULL" ")" ) # The old port script created a table with just a "rowid" column. # We want people to be able to rerun this script from an old port # so that they can pick up any missing events that were not # ported across. def alter_table(txn): txn.execute( "ALTER TABLE IF EXISTS port_from_sqlite3" " RENAME rowid TO forward_rowid" ) txn.execute( "ALTER TABLE IF EXISTS port_from_sqlite3" " ADD backward_rowid bigint NOT NULL DEFAULT 0" ) try: await self.postgres_store.db_pool.runInteraction( "alter_table", alter_table ) except Exception: # On Error Resume Next pass await self.postgres_store.db_pool.runInteraction( "create_port_table", create_port_table ) # Step 2. Set up sequences # # We do this before porting the tables so that event if we fail half # way through the postgres DB always have sequences that are greater # than their respective tables. If we don't then creating the # `DataStore` object will fail due to the inconsistency. self.progress.set_state("Setting up sequence generators") await self._setup_state_group_id_seq() await self._setup_user_id_seq() await self._setup_events_stream_seqs() await self._setup_sequence( "device_inbox_sequence", ("device_inbox", "device_federation_outbox") ) await self._setup_sequence( "account_data_sequence", ("room_account_data", "room_tags_revisions", "account_data"), ) await self._setup_sequence("receipts_sequence", ("receipts_linearized",)) await self._setup_sequence("presence_stream_sequence", ("presence_stream",)) await self._setup_auth_chain_sequence() # Step 3. Get tables. self.progress.set_state("Fetching tables") sqlite_tables = await self.sqlite_store.db_pool.simple_select_onecol( table="sqlite_master", keyvalues={"type": "table"}, retcol="name" ) postgres_tables = await self.postgres_store.db_pool.simple_select_onecol( table="information_schema.tables", keyvalues={}, retcol="distinct table_name", ) tables = set(sqlite_tables) & set(postgres_tables) logger.info("Found %d tables", len(tables)) # Step 4. Figure out what still needs copying self.progress.set_state("Checking on port progress") setup_res = await make_deferred_yieldable( defer.gatherResults( [ run_in_background(self.setup_table, table) for table in tables if table not in ["schema_version", "applied_schema_deltas"] and not table.startswith("sqlite_") ], consumeErrors=True, ) ) # Map from table name to args passed to `handle_table`, i.e. a tuple # of: `postgres_size`, `table_size`, `forward_chunk`, `backward_chunk`. tables_to_port_info_map = {r[0]: r[1:] for r in setup_res} # Step 5. Do the copying. # # This is slightly convoluted as we need to ensure tables are ported # in the correct order due to foreign key constraints. self.progress.set_state("Copying to postgres") constraints = await self.get_table_constraints() tables_ported = set() # type: Set[str] while tables_to_port_info_map: # Pulls out all tables that are still to be ported and which # only depend on tables that are already ported (if any). tables_to_port = [ table for table in tables_to_port_info_map if not constraints.get(table, set()) - tables_ported ] await make_deferred_yieldable( defer.gatherResults( [ run_in_background( self.handle_table, table, *tables_to_port_info_map.pop(table), ) for table in tables_to_port ], consumeErrors=True, ) ) tables_ported.update(tables_to_port) self.progress.done() except Exception as e: global end_error_exec_info end_error = str(e) end_error_exec_info = sys.exc_info() logger.exception("") finally: reactor.stop() def _convert_rows(self, table, headers, rows): bool_col_names = BOOLEAN_COLUMNS.get(table, []) bool_cols = [i for i, h in enumerate(headers) if h in bool_col_names] class BadValueException(Exception): pass def conv(j, col): if j in bool_cols: return bool(col) if isinstance(col, bytes): return bytearray(col) elif isinstance(col, str) and "\0" in col: logger.warning( "DROPPING ROW: NUL value in table %s col %s: %r", table, headers[j], col, ) raise BadValueException() return col outrows = [] for row in rows: try: outrows.append( tuple(conv(j, col) for j, col in enumerate(row) if j > 0) ) except BadValueException: pass return outrows async def _setup_sent_transactions(self): # Only save things from the last day yesterday = int(time.time() * 1000) - 86400000 # And save the max transaction id from each destination select = ( "SELECT rowid, * FROM sent_transactions WHERE rowid IN (" "SELECT max(rowid) FROM sent_transactions" " GROUP BY destination" ")" ) def r(txn): txn.execute(select) rows = txn.fetchall() headers = [column[0] for column in txn.description] ts_ind = headers.index("ts") return headers, [r for r in rows if r[ts_ind] < yesterday] headers, rows = await self.sqlite_store.db_pool.runInteraction("select", r) rows = self._convert_rows("sent_transactions", headers, rows) inserted_rows = len(rows) if inserted_rows: max_inserted_rowid = max(r[0] for r in rows) def insert(txn): self.postgres_store.insert_many_txn( txn, "sent_transactions", headers[1:], rows ) await self.postgres_store.execute(insert) else: max_inserted_rowid = 0 def get_start_id(txn): txn.execute( "SELECT rowid FROM sent_transactions WHERE ts >= ?" " ORDER BY rowid ASC LIMIT 1", (yesterday,), ) rows = txn.fetchall() if rows: return rows[0][0] else: return 1 next_chunk = await self.sqlite_store.execute(get_start_id) next_chunk = max(max_inserted_rowid + 1, next_chunk) await self.postgres_store.db_pool.simple_insert( table="port_from_sqlite3", values={ "table_name": "sent_transactions", "forward_rowid": next_chunk, "backward_rowid": 0, }, ) def get_sent_table_size(txn): txn.execute( "SELECT count(*) FROM sent_transactions" " WHERE ts >= ?", (yesterday,) ) (size,) = txn.fetchone() return int(size) remaining_count = await self.sqlite_store.execute(get_sent_table_size) total_count = remaining_count + inserted_rows return next_chunk, inserted_rows, total_count async def _get_remaining_count_to_port(self, table, forward_chunk, backward_chunk): frows = await self.sqlite_store.execute_sql( "SELECT count(*) FROM %s WHERE rowid >= ?" % (table,), forward_chunk ) brows = await self.sqlite_store.execute_sql( "SELECT count(*) FROM %s WHERE rowid <= ?" % (table,), backward_chunk ) return frows[0][0] + brows[0][0] async def _get_already_ported_count(self, table): rows = await self.postgres_store.execute_sql( "SELECT count(*) FROM %s" % (table,) ) return rows[0][0] async def _get_total_count_to_port(self, table, forward_chunk, backward_chunk): remaining, done = await make_deferred_yieldable( defer.gatherResults( [ run_in_background( self._get_remaining_count_to_port, table, forward_chunk, backward_chunk, ), run_in_background(self._get_already_ported_count, table), ], ) ) remaining = int(remaining) if remaining else 0 done = int(done) if done else 0 return done, remaining + done async def _setup_state_group_id_seq(self) -> None: curr_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table="state_groups", keyvalues={}, retcol="MAX(id)", allow_none=True ) if not curr_id: return def r(txn): next_id = curr_id + 1 txn.execute("ALTER SEQUENCE state_group_id_seq RESTART WITH %s", (next_id,)) await self.postgres_store.db_pool.runInteraction("setup_state_group_id_seq", r) async def _setup_user_id_seq(self) -> None: curr_id = await self.sqlite_store.db_pool.runInteraction( "setup_user_id_seq", find_max_generated_user_id_localpart ) def r(txn): next_id = curr_id + 1 txn.execute("ALTER SEQUENCE user_id_seq RESTART WITH %s", (next_id,)) await self.postgres_store.db_pool.runInteraction("setup_user_id_seq", r) async def _setup_events_stream_seqs(self) -> None: """Set the event stream sequences to the correct values.""" # We get called before we've ported the events table, so we need to # fetch the current positions from the SQLite store. curr_forward_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table="events", keyvalues={}, retcol="MAX(stream_ordering)", allow_none=True ) curr_backward_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table="events", keyvalues={}, retcol="MAX(-MIN(stream_ordering), 1)", allow_none=True, ) def _setup_events_stream_seqs_set_pos(txn): if curr_forward_id: txn.execute( "ALTER SEQUENCE events_stream_seq RESTART WITH %s", (curr_forward_id + 1,), ) if curr_backward_id: txn.execute( "ALTER SEQUENCE events_backfill_stream_seq RESTART WITH %s", (curr_backward_id + 1,), ) await self.postgres_store.db_pool.runInteraction( "_setup_events_stream_seqs", _setup_events_stream_seqs_set_pos, ) async def _setup_sequence( self, sequence_name: str, stream_id_tables: Iterable[str] ) -> None: """Set a sequence to the correct value.""" current_stream_ids = [] for stream_id_table in stream_id_tables: max_stream_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table=stream_id_table, keyvalues={}, retcol="COALESCE(MAX(stream_id), 1)", allow_none=True, ) current_stream_ids.append(max_stream_id) next_id = max(current_stream_ids) + 1 def r(txn): sql = "ALTER SEQUENCE %s RESTART WITH" % (sequence_name,) txn.execute(sql + " %s", (next_id,)) await self.postgres_store.db_pool.runInteraction( "_setup_%s" % (sequence_name,), r ) async def _setup_auth_chain_sequence(self) -> None: curr_chain_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table="event_auth_chains", keyvalues={}, retcol="MAX(chain_id)", allow_none=True, ) def r(txn): txn.execute( "ALTER SEQUENCE event_auth_chain_id RESTART WITH %s", (curr_chain_id + 1,), ) if curr_chain_id is not None: await self.postgres_store.db_pool.runInteraction( "_setup_event_auth_chain_id", r, ) ############################################## # The following is simply UI stuff ############################################## class Progress(object): """Used to report progress of the port""" def __init__(self): self.tables = {} self.start_time = int(time.time()) def add_table(self, table, cur, size): self.tables[table] = { "start": cur, "num_done": cur, "total": size, "perc": int(cur * 100 / size), } def update(self, table, num_done): data = self.tables[table] data["num_done"] = num_done data["perc"] = int(num_done * 100 / data["total"]) def done(self): pass class CursesProgress(Progress): """Reports progress to a curses window""" def __init__(self, stdscr): self.stdscr = stdscr curses.use_default_colors() curses.curs_set(0) curses.init_pair(1, curses.COLOR_RED, -1) curses.init_pair(2, curses.COLOR_GREEN, -1) self.last_update = 0 self.finished = False self.total_processed = 0 self.total_remaining = 0 super(CursesProgress, self).__init__() def update(self, table, num_done): super(CursesProgress, self).update(table, num_done) self.total_processed = 0 self.total_remaining = 0 for data in self.tables.values(): self.total_processed += data["num_done"] - data["start"] self.total_remaining += data["total"] - data["num_done"] self.render() def render(self, force=False): now = time.time() if not force and now - self.last_update < 0.2: # reactor.callLater(1, self.render) return self.stdscr.clear() rows, cols = self.stdscr.getmaxyx() duration = int(now) - int(self.start_time) minutes, seconds = divmod(duration, 60) duration_str = "%02dm %02ds" % (minutes, seconds) if self.finished: status = "Time spent: %s (Done!)" % (duration_str,) else: if self.total_processed > 0: left = float(self.total_remaining) / self.total_processed est_remaining = (int(now) - self.start_time) * left est_remaining_str = "%02dm %02ds remaining" % divmod(est_remaining, 60) else: est_remaining_str = "Unknown" status = "Time spent: %s (est. remaining: %s)" % ( duration_str, est_remaining_str, ) self.stdscr.addstr(0, 0, status, curses.A_BOLD) max_len = max(len(t) for t in self.tables.keys()) left_margin = 5 middle_space = 1 items = self.tables.items() items = sorted(items, key=lambda i: (i[1]["perc"], i[0])) for i, (table, data) in enumerate(items): if i + 2 >= rows: break perc = data["perc"] color = curses.color_pair(2) if perc == 100 else curses.color_pair(1) self.stdscr.addstr( i + 2, left_margin + max_len - len(table), table, curses.A_BOLD | color ) size = 20 progress = "[%s%s]" % ( "#" * int(perc * size / 100), " " * (size - int(perc * size / 100)), ) self.stdscr.addstr( i + 2, left_margin + max_len + middle_space, "%s %3d%% (%d/%d)" % (progress, perc, data["num_done"], data["total"]), ) if self.finished: self.stdscr.addstr(rows - 1, 0, "Press any key to exit...") self.stdscr.refresh() self.last_update = time.time() def done(self): self.finished = True self.render(True) self.stdscr.getch() def set_state(self, state): self.stdscr.clear() self.stdscr.addstr(0, 0, state + "...", curses.A_BOLD) self.stdscr.refresh() class TerminalProgress(Progress): """Just prints progress to the terminal""" def update(self, table, num_done): super(TerminalProgress, self).update(table, num_done) data = self.tables[table] print( "%s: %d%% (%d/%d)" % (table, data["perc"], data["num_done"], data["total"]) ) def set_state(self, state): print(state + "...") ############################################## ############################################## if __name__ == "__main__": parser = argparse.ArgumentParser( description="A script to port an existing synapse SQLite database to" " a new PostgreSQL database." ) parser.add_argument("-v", action="store_true") parser.add_argument( "--sqlite-database", required=True, help="The snapshot of the SQLite database file. This must not be" " currently used by a running synapse server", ) parser.add_argument( "--postgres-config", type=argparse.FileType("r"), required=True, help="The database config file for the PostgreSQL database", ) parser.add_argument( "--curses", action="store_true", help="display a curses based progress UI" ) parser.add_argument( "--batch-size", type=int, default=1000, help="The number of rows to select from the SQLite table each" " iteration [default=1000]", ) args = parser.parse_args() logging_config = { "level": logging.DEBUG if args.v else logging.INFO, "format": "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s", } if args.curses: logging_config["filename"] = "port-synapse.log" logging.basicConfig(**logging_config) sqlite_config = { "name": "sqlite3", "args": { "database": args.sqlite_database, "cp_min": 1, "cp_max": 1, "check_same_thread": False, }, } hs_config = yaml.safe_load(args.postgres_config) if "database" not in hs_config: sys.stderr.write("The configuration file must have a 'database' section.\n") sys.exit(4) postgres_config = hs_config["database"] if "name" not in postgres_config: sys.stderr.write("Malformed database config: no 'name'\n") sys.exit(2) if postgres_config["name"] != "psycopg2": sys.stderr.write("Database must use the 'psycopg2' connector.\n") sys.exit(3) config = HomeServerConfig() config.parse_config_dict(hs_config, "", "") def start(stdscr=None): if stdscr: progress = CursesProgress(stdscr) else: progress = TerminalProgress() porter = Porter( sqlite_config=sqlite_config, progress=progress, batch_size=args.batch_size, hs_config=config, ) @defer.inlineCallbacks def run(): with LoggingContext("synapse_port_db_run"): yield defer.ensureDeferred(porter.run()) reactor.callWhenRunning(run) reactor.run() if args.curses: curses.wrapper(start) else: start() if end_error: if end_error_exec_info: exc_type, exc_value, exc_traceback = end_error_exec_info traceback.print_exception(exc_type, exc_value, exc_traceback) sys.stderr.write(end_error) sys.exit(5) synapse-1.53.0/scripts/synapse_review_recent_signups000077500000000000000000000013121420514467300230550ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse._scripts.review_recent_signups import main if __name__ == "__main__": main() synapse-1.53.0/scripts/sync_room_to_group.pl000077500000000000000000000034431420514467300212510ustar00rootroot00000000000000#!/usr/bin/env perl use strict; use warnings; use JSON::XS; use LWP::UserAgent; use URI::Escape; if (@ARGV < 4) { die "usage: $0 \n"; } my ($hs, $access_token, $room_id, $group_id) = @ARGV; my $ua = LWP::UserAgent->new(); $ua->timeout(10); if ($room_id =~ /^#/) { $room_id = uri_escape($room_id); $room_id = decode_json($ua->get("${hs}/_matrix/client/r0/directory/room/${room_id}?access_token=${access_token}")->decoded_content)->{room_id}; } my $room_users = [ keys %{decode_json($ua->get("${hs}/_matrix/client/r0/rooms/${room_id}/joined_members?access_token=${access_token}")->decoded_content)->{joined}} ]; my $group_users = [ (map { $_->{user_id} } @{decode_json($ua->get("${hs}/_matrix/client/unstable/groups/${group_id}/users?access_token=${access_token}" )->decoded_content)->{chunk}}), (map { $_->{user_id} } @{decode_json($ua->get("${hs}/_matrix/client/unstable/groups/${group_id}/invited_users?access_token=${access_token}" )->decoded_content)->{chunk}}), ]; die "refusing to sync from empty room" unless (@$room_users); die "refusing to sync to empty group" unless (@$group_users); my $diff = {}; foreach my $user (@$room_users) { $diff->{$user}++ } foreach my $user (@$group_users) { $diff->{$user}-- } foreach my $user (keys %$diff) { if ($diff->{$user} == 1) { warn "inviting $user"; print STDERR $ua->put("${hs}/_matrix/client/unstable/groups/${group_id}/admin/users/invite/${user}?access_token=${access_token}", Content=>'{}')->status_line."\n"; } elsif ($diff->{$user} == -1) { warn "removing $user"; print STDERR $ua->put("${hs}/_matrix/client/unstable/groups/${group_id}/admin/users/remove/${user}?access_token=${access_token}", Content=>'{}')->status_line."\n"; } } synapse-1.53.0/scripts/update_synapse_database000077500000000000000000000066601420514467300215650ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import logging import sys import yaml from matrix_common.versionstring import get_distribution_version_string from twisted.internet import defer, reactor from synapse.config.homeserver import HomeServerConfig from synapse.metrics.background_process_metrics import run_as_background_process from synapse.server import HomeServer from synapse.storage import DataStore logger = logging.getLogger("update_database") class MockHomeserver(HomeServer): DATASTORE_CLASS = DataStore def __init__(self, config, **kwargs): super(MockHomeserver, self).__init__( config.server.server_name, reactor=reactor, config=config, **kwargs ) self.version_string = "Synapse/" + get_distribution_version_string( "matrix-synapse" ) def run_background_updates(hs): store = hs.get_datastore() async def run_background_updates(): await store.db_pool.updates.run_background_updates(sleep=False) # Stop the reactor to exit the script once every background update is run. reactor.stop() def run(): # Apply all background updates on the database. defer.ensureDeferred( run_as_background_process("background_updates", run_background_updates) ) reactor.callWhenRunning(run) reactor.run() def main(): parser = argparse.ArgumentParser( description=( "Updates a synapse database to the latest schema and optionally runs background updates" " on it." ) ) parser.add_argument("-v", action="store_true") parser.add_argument( "--database-config", type=argparse.FileType("r"), required=True, help="Synapse configuration file, giving the details of the database to be updated", ) parser.add_argument( "--run-background-updates", action="store_true", required=False, help="run background updates after upgrading the database schema", ) args = parser.parse_args() logging_config = { "level": logging.DEBUG if args.v else logging.INFO, "format": "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s", } logging.basicConfig(**logging_config) # Load, process and sanity-check the config. hs_config = yaml.safe_load(args.database_config) if "database" not in hs_config: sys.stderr.write("The configuration file must have a 'database' section.\n") sys.exit(4) config = HomeServerConfig() config.parse_config_dict(hs_config, "", "") # Instantiate and initialise the homeserver object. hs = MockHomeserver(config) # Setup instantiates the store within the homeserver object and updates the # DB. hs.setup() if args.run_background_updates: run_background_updates(hs) if __name__ == "__main__": main() synapse-1.53.0/setup.cfg000066400000000000000000000014731420514467300151160ustar00rootroot00000000000000[trial] test_suite = tests [check-manifest] ignore = .git-blame-ignore-revs contrib contrib/* docs/* pylint.cfg tox.ini [flake8] # see https://pycodestyle.readthedocs.io/en/latest/intro.html#error-codes # for error codes. The ones we ignore are: # W503: line break before binary operator # W504: line break after binary operator # E203: whitespace before ':' (which is contrary to pep8?) # E731: do not assign a lambda expression, use a def # E501: Line too long (black enforces this for us) ignore=W503,W504,E203,E731,E501 [isort] line_length = 88 sections=FUTURE,STDLIB,THIRDPARTY,TWISTED,FIRSTPARTY,TESTS,LOCALFOLDER default_section=THIRDPARTY known_first_party = synapse known_tests=tests known_twisted=twisted,OpenSSL multi_line_output=3 include_trailing_comma=true combine_as_imports=true synapse-1.53.0/setup.py000077500000000000000000000134011420514467300150040ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2014-2017 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2017-2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import glob import os from typing import Any, Dict from setuptools import Command, find_packages, setup here = os.path.abspath(os.path.dirname(__file__)) # Some notes on `setup.py test`: # # Once upon a time we used to try to make `setup.py test` run `tox` to run the # tests. That's a bad idea for three reasons: # # 1: `setup.py test` is supposed to find out whether the tests work in the # *current* environmentt, not whatever tox sets up. # 2: Empirically, trying to install tox during the test run wasn't working ("No # module named virtualenv"). # 3: The tox documentation advises against it[1]. # # Even further back in time, we used to use setuptools_trial [2]. That has its # own set of issues: for instance, it requires installation of Twisted to build # an sdist (because the recommended mode of usage is to add it to # `setup_requires`). That in turn means that in order to successfully run tox # you have to have the python header files installed for whichever version of # python tox uses (which is python3 on recent ubuntus, for example). # # So, for now at least, we stick with what appears to be the convention among # Twisted projects, and don't attempt to do anything when someone runs # `setup.py test`; instead we direct people to run `trial` directly if they # care. # # [1]: http://tox.readthedocs.io/en/2.5.0/example/basic.html#integration-with-setup-py-test-command # [2]: https://pypi.python.org/pypi/setuptools_trial class TestCommand(Command): def initialize_options(self): pass def finalize_options(self): pass def run(self): print( """Synapse's tests cannot be run via setup.py. To run them, try: PYTHONPATH="." trial tests """ ) def read_file(path_segments): """Read a file from the package. Takes a list of strings to join to make the path""" file_path = os.path.join(here, *path_segments) with open(file_path) as f: return f.read() def exec_file(path_segments): """Execute a single python file to get the variables defined in it""" result: Dict[str, Any] = {} code = read_file(path_segments) exec(code, result) return result version = exec_file(("synapse", "__init__.py"))["__version__"] dependencies = exec_file(("synapse", "python_dependencies.py")) long_description = read_file(("README.rst",)) REQUIREMENTS = dependencies["REQUIREMENTS"] CONDITIONAL_REQUIREMENTS = dependencies["CONDITIONAL_REQUIREMENTS"] ALL_OPTIONAL_REQUIREMENTS = dependencies["ALL_OPTIONAL_REQUIREMENTS"] # Make `pip install matrix-synapse[all]` install all the optional dependencies. CONDITIONAL_REQUIREMENTS["all"] = list(ALL_OPTIONAL_REQUIREMENTS) # Developer dependencies should not get included in "all". # # We pin black so that our tests don't start failing on new releases. CONDITIONAL_REQUIREMENTS["lint"] = [ "isort==5.7.0", "black==21.12b0", "flake8-comprehensions", "flake8-bugbear==21.3.2", "flake8", ] CONDITIONAL_REQUIREMENTS["mypy"] = [ "mypy==0.910", "mypy-zope==0.3.2", "types-bleach>=4.1.0", "types-jsonschema>=3.2.0", "types-opentracing>=2.4.2", "types-Pillow>=8.3.4", "types-pyOpenSSL>=20.0.7", "types-PyYAML>=5.4.10", "types-requests>=2.26.0", "types-setuptools>=57.4.0", ] # Dependencies which are exclusively required by unit test code. This is # NOT a list of all modules that are necessary to run the unit tests. # Tests assume that all optional dependencies are installed. # # parameterized_class decorator was introduced in parameterized 0.7.0 CONDITIONAL_REQUIREMENTS["test"] = ["parameterized>=0.7.0"] CONDITIONAL_REQUIREMENTS["dev"] = ( CONDITIONAL_REQUIREMENTS["lint"] + CONDITIONAL_REQUIREMENTS["mypy"] + CONDITIONAL_REQUIREMENTS["test"] + [ # The following are used by the release script "click==7.1.2", "redbaron==0.9.2", "GitPython==3.1.14", "commonmark==0.9.1", "pygithub==1.55", # The following are executed as commands by the release script. "twine", "towncrier", ] ) setup( name="matrix-synapse", version=version, packages=find_packages(exclude=["tests", "tests.*"]), description="Reference homeserver for the Matrix decentralised comms protocol", install_requires=REQUIREMENTS, extras_require=CONDITIONAL_REQUIREMENTS, include_package_data=True, zip_safe=False, long_description=long_description, long_description_content_type="text/x-rst", python_requires="~=3.7", entry_points={ "console_scripts": [ "synapse_homeserver = synapse.app.homeserver:main", "synapse_worker = synapse.app.generic_worker:main", ] }, classifiers=[ "Development Status :: 5 - Production/Stable", "Topic :: Communications :: Chat", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", ], scripts=["synctl"] + glob.glob("scripts/*"), cmdclass={"test": TestCommand}, ) synapse-1.53.0/snap/000077500000000000000000000000001420514467300142315ustar00rootroot00000000000000synapse-1.53.0/snap/snapcraft.yaml000066400000000000000000000024551420514467300171040ustar00rootroot00000000000000name: matrix-synapse base: core18 version: git summary: Reference Matrix homeserver description: | Synapse is the reference Matrix homeserver. Matrix is a federated and decentralised instant messaging and VoIP system. grade: stable confinement: strict apps: matrix-synapse: command: synctl --no-daemonize start $SNAP_COMMON/homeserver.yaml stop-command: synctl -c $SNAP_COMMON stop plugs: [network-bind, network] daemon: simple hash-password: command: hash_password generate-config: command: generate_config generate-signing-key: command: generate_signing_key.py register-new-matrix-user: command: register_new_matrix_user plugs: [network] synctl: command: synctl parts: matrix-synapse: source: . plugin: python python-version: python3 python-packages: - '.[all]' - pip - setuptools - setuptools-scm - wheel build-packages: - libffi-dev - libturbojpeg0-dev - libssl-dev - libxslt1-dev - libpq-dev - zlib1g-dev stage-packages: - libasn1-8-heimdal - libgssapi3-heimdal - libhcrypto4-heimdal - libheimbase1-heimdal - libheimntlm0-heimdal - libhx509-5-heimdal - libkrb5-26-heimdal - libldap-2.4-2 - libpq5 - libsasl2-2 synapse-1.53.0/stubs/000077500000000000000000000000001420514467300144305ustar00rootroot00000000000000synapse-1.53.0/stubs/frozendict.pyi000066400000000000000000000026101420514467300173210ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Stub for frozendict. from typing import Any, Hashable, Iterable, Iterator, Mapping, Tuple, TypeVar, overload _KT = TypeVar("_KT", bound=Hashable) # Key type. _VT = TypeVar("_VT") # Value type. class frozendict(Mapping[_KT, _VT]): @overload def __init__(self, **kwargs: _VT) -> None: ... @overload def __init__(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ... @overload def __init__( self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT ) -> None: ... def __getitem__(self, key: _KT) -> _VT: ... def __contains__(self, key: Any) -> bool: ... def copy(self, **add_or_replace: Any) -> frozendict: ... def __iter__(self) -> Iterator[_KT]: ... def __len__(self) -> int: ... def __repr__(self) -> str: ... def __hash__(self) -> int: ... synapse-1.53.0/stubs/sortedcontainers/000077500000000000000000000000001420514467300200165ustar00rootroot00000000000000synapse-1.53.0/stubs/sortedcontainers/__init__.pyi000066400000000000000000000005631420514467300223040ustar00rootroot00000000000000from .sorteddict import SortedDict, SortedItemsView, SortedKeysView, SortedValuesView from .sortedlist import SortedKeyList, SortedList, SortedListWithKey from .sortedset import SortedSet __all__ = [ "SortedDict", "SortedKeysView", "SortedItemsView", "SortedValuesView", "SortedKeyList", "SortedList", "SortedListWithKey", "SortedSet", ] synapse-1.53.0/stubs/sortedcontainers/sorteddict.pyi000066400000000000000000000104341420514467300227070ustar00rootroot00000000000000# stub for SortedDict. This is a lightly edited copy of # https://github.com/grantjenks/python-sortedcontainers/blob/eea42df1f7bad2792e8da77335ff888f04b9e5ae/sortedcontainers/sorteddict.pyi # (from https://github.com/grantjenks/python-sortedcontainers/pull/107) from typing import ( Any, Callable, Dict, Hashable, ItemsView, Iterable, Iterator, KeysView, List, Mapping, Optional, Sequence, Tuple, Type, TypeVar, Union, ValuesView, overload, ) _T = TypeVar("_T") _S = TypeVar("_S") _T_h = TypeVar("_T_h", bound=Hashable) _KT = TypeVar("_KT", bound=Hashable) # Key type. _VT = TypeVar("_VT") # Value type. _KT_co = TypeVar("_KT_co", covariant=True, bound=Hashable) _VT_co = TypeVar("_VT_co", covariant=True) _SD = TypeVar("_SD", bound=SortedDict) _Key = Callable[[_T], Any] class SortedDict(Dict[_KT, _VT]): @overload def __init__(self, **kwargs: _VT) -> None: ... @overload def __init__(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ... @overload def __init__( self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT ) -> None: ... @overload def __init__(self, __key: _Key[_KT], **kwargs: _VT) -> None: ... @overload def __init__( self, __key: _Key[_KT], __map: Mapping[_KT, _VT], **kwargs: _VT ) -> None: ... @overload def __init__( self, __key: _Key[_KT], __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT ) -> None: ... @property def key(self) -> Optional[_Key[_KT]]: ... @property def iloc(self) -> SortedKeysView[_KT]: ... def clear(self) -> None: ... def __delitem__(self, key: _KT) -> None: ... def __iter__(self) -> Iterator[_KT]: ... def __reversed__(self) -> Iterator[_KT]: ... def __setitem__(self, key: _KT, value: _VT) -> None: ... def _setitem(self, key: _KT, value: _VT) -> None: ... def copy(self: _SD) -> _SD: ... def __copy__(self: _SD) -> _SD: ... @classmethod @overload def fromkeys(cls, seq: Iterable[_T_h]) -> SortedDict[_T_h, None]: ... @classmethod @overload def fromkeys(cls, seq: Iterable[_T_h], value: _S) -> SortedDict[_T_h, _S]: ... def keys(self) -> SortedKeysView[_KT]: ... def items(self) -> SortedItemsView[_KT, _VT]: ... def values(self) -> SortedValuesView[_VT]: ... @overload def pop(self, key: _KT) -> _VT: ... @overload def pop(self, key: _KT, default: _T = ...) -> Union[_VT, _T]: ... def popitem(self, index: int = ...) -> Tuple[_KT, _VT]: ... def peekitem(self, index: int = ...) -> Tuple[_KT, _VT]: ... def setdefault(self, key: _KT, default: Optional[_VT] = ...) -> _VT: ... @overload def update(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ... @overload def update(self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT) -> None: ... @overload def update(self, **kwargs: _VT) -> None: ... def __reduce__( self, ) -> Tuple[ Type[SortedDict[_KT, _VT]], Tuple[Callable[[_KT], Any], List[Tuple[_KT, _VT]]], ]: ... def __repr__(self) -> str: ... def _check(self) -> None: ... def islice( self, start: Optional[int] = ..., stop: Optional[int] = ..., reverse=bool, ) -> Iterator[_KT]: ... def bisect_left(self, value: _KT) -> int: ... def bisect_right(self, value: _KT) -> int: ... class SortedKeysView(KeysView[_KT_co], Sequence[_KT_co]): @overload def __getitem__(self, index: int) -> _KT_co: ... @overload def __getitem__(self, index: slice) -> List[_KT_co]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... class SortedItemsView( # type: ignore ItemsView[_KT_co, _VT_co], Sequence[Tuple[_KT_co, _VT_co]] ): def __iter__(self) -> Iterator[Tuple[_KT_co, _VT_co]]: ... @overload def __getitem__(self, index: int) -> Tuple[_KT_co, _VT_co]: ... @overload def __getitem__(self, index: slice) -> List[Tuple[_KT_co, _VT_co]]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... class SortedValuesView(ValuesView[_VT_co], Sequence[_VT_co]): @overload def __getitem__(self, index: int) -> _VT_co: ... @overload def __getitem__(self, index: slice) -> List[_VT_co]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... synapse-1.53.0/stubs/sortedcontainers/sortedlist.pyi000066400000000000000000000154421420514467300227430ustar00rootroot00000000000000# stub for SortedList. This is an exact copy of # https://github.com/grantjenks/python-sortedcontainers/blob/a419ffbd2b1c935b09f11f0971696e537fd0c510/sortedcontainers/sortedlist.pyi # (from https://github.com/grantjenks/python-sortedcontainers/pull/107) from typing import ( Any, Callable, Generic, Iterable, Iterator, List, MutableSequence, Optional, Sequence, Tuple, Type, TypeVar, Union, overload, ) _T = TypeVar("_T") _SL = TypeVar("_SL", bound=SortedList) _SKL = TypeVar("_SKL", bound=SortedKeyList) _Key = Callable[[_T], Any] _Repr = Callable[[], str] def recursive_repr(fillvalue: str = ...) -> Callable[[_Repr], _Repr]: ... class SortedList(MutableSequence[_T]): DEFAULT_LOAD_FACTOR: int = ... def __init__( self, iterable: Optional[Iterable[_T]] = ..., key: Optional[_Key[_T]] = ..., ): ... # NB: currently mypy does not honour return type, see mypy #3307 @overload def __new__(cls: Type[_SL], iterable: None, key: None) -> _SL: ... @overload def __new__(cls: Type[_SL], iterable: None, key: _Key[_T]) -> SortedKeyList[_T]: ... @overload def __new__(cls: Type[_SL], iterable: Iterable[_T], key: None) -> _SL: ... @overload def __new__(cls, iterable: Iterable[_T], key: _Key[_T]) -> SortedKeyList[_T]: ... @property def key(self) -> Optional[Callable[[_T], Any]]: ... def _reset(self, load: int) -> None: ... def clear(self) -> None: ... def _clear(self) -> None: ... def add(self, value: _T) -> None: ... def _expand(self, pos: int) -> None: ... def update(self, iterable: Iterable[_T]) -> None: ... def _update(self, iterable: Iterable[_T]) -> None: ... def discard(self, value: _T) -> None: ... def remove(self, value: _T) -> None: ... def _delete(self, pos: int, idx: int) -> None: ... def _loc(self, pos: int, idx: int) -> int: ... def _pos(self, idx: int) -> int: ... def _build_index(self) -> None: ... def __contains__(self, value: Any) -> bool: ... def __delitem__(self, index: Union[int, slice]) -> None: ... @overload def __getitem__(self, index: int) -> _T: ... @overload def __getitem__(self, index: slice) -> List[_T]: ... @overload def _getitem(self, index: int) -> _T: ... @overload def _getitem(self, index: slice) -> List[_T]: ... @overload def __setitem__(self, index: int, value: _T) -> None: ... @overload def __setitem__(self, index: slice, value: Iterable[_T]) -> None: ... def __iter__(self) -> Iterator[_T]: ... def __reversed__(self) -> Iterator[_T]: ... def __len__(self) -> int: ... def reverse(self) -> None: ... def islice( self, start: Optional[int] = ..., stop: Optional[int] = ..., reverse=bool, ) -> Iterator[_T]: ... def _islice( self, min_pos: int, min_idx: int, max_pos: int, max_idx: int, reverse: bool, ) -> Iterator[_T]: ... def irange( self, minimum: Optional[int] = ..., maximum: Optional[int] = ..., inclusive: Tuple[bool, bool] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def bisect_left(self, value: _T) -> int: ... def bisect_right(self, value: _T) -> int: ... def bisect(self, value: _T) -> int: ... def _bisect_right(self, value: _T) -> int: ... def count(self, value: _T) -> int: ... def copy(self: _SL) -> _SL: ... def __copy__(self: _SL) -> _SL: ... def append(self, value: _T) -> None: ... def extend(self, values: Iterable[_T]) -> None: ... def insert(self, index: int, value: _T) -> None: ... def pop(self, index: int = ...) -> _T: ... def index( self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ... ) -> int: ... def __add__(self: _SL, other: Iterable[_T]) -> _SL: ... def __radd__(self: _SL, other: Iterable[_T]) -> _SL: ... def __iadd__(self: _SL, other: Iterable[_T]) -> _SL: ... def __mul__(self: _SL, num: int) -> _SL: ... def __rmul__(self: _SL, num: int) -> _SL: ... def __imul__(self: _SL, num: int) -> _SL: ... def __eq__(self, other: Any) -> bool: ... def __ne__(self, other: Any) -> bool: ... def __lt__(self, other: Sequence[_T]) -> bool: ... def __gt__(self, other: Sequence[_T]) -> bool: ... def __le__(self, other: Sequence[_T]) -> bool: ... def __ge__(self, other: Sequence[_T]) -> bool: ... def __repr__(self) -> str: ... def _check(self) -> None: ... class SortedKeyList(SortedList[_T]): def __init__( self, iterable: Optional[Iterable[_T]] = ..., key: _Key[_T] = ... ) -> None: ... def __new__( cls, iterable: Optional[Iterable[_T]] = ..., key: _Key[_T] = ... ) -> SortedKeyList[_T]: ... @property def key(self) -> Callable[[_T], Any]: ... def clear(self) -> None: ... def _clear(self) -> None: ... def add(self, value: _T) -> None: ... def _expand(self, pos: int) -> None: ... def update(self, iterable: Iterable[_T]) -> None: ... def _update(self, iterable: Iterable[_T]) -> None: ... # NB: Must be T to be safely passed to self.func, yet base class imposes Any def __contains__(self, value: _T) -> bool: ... # type: ignore def discard(self, value: _T) -> None: ... def remove(self, value: _T) -> None: ... def _delete(self, pos: int, idx: int) -> None: ... def irange( self, minimum: Optional[int] = ..., maximum: Optional[int] = ..., inclusive: Tuple[bool, bool] = ..., reverse: bool = ..., ): ... def irange_key( self, min_key: Optional[Any] = ..., max_key: Optional[Any] = ..., inclusive: Tuple[bool, bool] = ..., reserve: bool = ..., ): ... def bisect_left(self, value: _T) -> int: ... def bisect_right(self, value: _T) -> int: ... def bisect(self, value: _T) -> int: ... def bisect_key_left(self, key: Any) -> int: ... def _bisect_key_left(self, key: Any) -> int: ... def bisect_key_right(self, key: Any) -> int: ... def _bisect_key_right(self, key: Any) -> int: ... def bisect_key(self, key: Any) -> int: ... def count(self, value: _T) -> int: ... def copy(self: _SKL) -> _SKL: ... def __copy__(self: _SKL) -> _SKL: ... def index( self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ... ) -> int: ... def __add__(self: _SKL, other: Iterable[_T]) -> _SKL: ... def __radd__(self: _SKL, other: Iterable[_T]) -> _SKL: ... def __iadd__(self: _SKL, other: Iterable[_T]) -> _SKL: ... def __mul__(self: _SKL, num: int) -> _SKL: ... def __rmul__(self: _SKL, num: int) -> _SKL: ... def __imul__(self: _SKL, num: int) -> _SKL: ... def __repr__(self) -> str: ... def _check(self) -> None: ... SortedListWithKey = SortedKeyList synapse-1.53.0/stubs/sortedcontainers/sortedset.pyi000066400000000000000000000110071420514467300225540ustar00rootroot00000000000000# stub for SortedSet. This is a lightly edited copy of # https://github.com/grantjenks/python-sortedcontainers/blob/d0a225d7fd0fb4c54532b8798af3cbeebf97e2d5/sortedcontainers/sortedset.pyi # (from https://github.com/grantjenks/python-sortedcontainers/pull/107) from typing import ( AbstractSet, Any, Callable, Generic, Hashable, Iterable, Iterator, List, MutableSet, Optional, Sequence, Set, Tuple, Type, TypeVar, Union, overload, ) # --- Global _T = TypeVar("_T", bound=Hashable) _S = TypeVar("_S", bound=Hashable) _SS = TypeVar("_SS", bound=SortedSet) _Key = Callable[[_T], Any] class SortedSet(MutableSet[_T], Sequence[_T]): def __init__( self, iterable: Optional[Iterable[_T]] = ..., key: Optional[_Key[_T]] = ..., ) -> None: ... @classmethod def _fromset( cls, values: Set[_T], key: Optional[_Key[_T]] = ... ) -> SortedSet[_T]: ... @property def key(self) -> Optional[_Key[_T]]: ... def __contains__(self, value: Any) -> bool: ... @overload def __getitem__(self, index: int) -> _T: ... @overload def __getitem__(self, index: slice) -> List[_T]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... def __eq__(self, other: Any) -> bool: ... def __ne__(self, other: Any) -> bool: ... def __lt__(self, other: Iterable[_T]) -> bool: ... def __gt__(self, other: Iterable[_T]) -> bool: ... def __le__(self, other: Iterable[_T]) -> bool: ... def __ge__(self, other: Iterable[_T]) -> bool: ... def __len__(self) -> int: ... def __iter__(self) -> Iterator[_T]: ... def __reversed__(self) -> Iterator[_T]: ... def add(self, value: _T) -> None: ... def _add(self, value: _T) -> None: ... def clear(self) -> None: ... def copy(self: _SS) -> _SS: ... def __copy__(self: _SS) -> _SS: ... def count(self, value: _T) -> int: ... def discard(self, value: _T) -> None: ... def _discard(self, value: _T) -> None: ... def pop(self, index: int = ...) -> _T: ... def remove(self, value: _T) -> None: ... def difference(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __sub__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def difference_update( self, *iterables: Iterable[_S] ) -> SortedSet[Union[_T, _S]]: ... def __isub__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def intersection(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __and__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __rand__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def intersection_update( self, *iterables: Iterable[_S] ) -> SortedSet[Union[_T, _S]]: ... def __iand__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def symmetric_difference(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __xor__(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __rxor__(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def symmetric_difference_update( self, other: Iterable[_S] ) -> SortedSet[Union[_T, _S]]: ... def __ixor__(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def union(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __or__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __ror__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def update(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __ior__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def _update(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __reduce__( self, ) -> Tuple[Type[SortedSet[_T]], Set[_T], Callable[[_T], Any]]: ... def __repr__(self) -> str: ... def _check(self) -> None: ... def bisect_left(self, value: _T) -> int: ... def bisect_right(self, value: _T) -> int: ... def islice( self, start: Optional[int] = ..., stop: Optional[int] = ..., reverse=bool, ) -> Iterator[_T]: ... def irange( self, minimum: Optional[_T] = ..., maximum: Optional[_T] = ..., inclusive: Tuple[bool, bool] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def index( self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ... ) -> int: ... def _reset(self, load: int) -> None: ... synapse-1.53.0/stubs/txredisapi.pyi000066400000000000000000000046661420514467300173430ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains *incomplete* type hints for txredisapi. """ from typing import Any, List, Optional, Type, Union from twisted.internet import protocol from twisted.internet.defer import Deferred class RedisProtocol(protocol.Protocol): def publish(self, channel: str, message: bytes): ... def ping(self) -> "Deferred[None]": ... def set( self, key: str, value: Any, expire: Optional[int] = None, pexpire: Optional[int] = None, only_if_not_exists: bool = False, only_if_exists: bool = False, ) -> "Deferred[None]": ... def get(self, key: str) -> "Deferred[Any]": ... class SubscriberProtocol(RedisProtocol): def __init__(self, *args, **kwargs): ... password: Optional[str] def subscribe(self, channels: Union[str, List[str]]): ... def connectionMade(self): ... def connectionLost(self, reason): ... def lazyConnection( host: str = ..., port: int = ..., dbid: Optional[int] = ..., reconnect: bool = ..., charset: str = ..., password: Optional[str] = ..., connectTimeout: Optional[int] = ..., replyTimeout: Optional[int] = ..., convertNumbers: bool = ..., ) -> RedisProtocol: ... class ConnectionHandler: ... class RedisFactory(protocol.ReconnectingClientFactory): continueTrying: bool handler: RedisProtocol pool: List[RedisProtocol] replyTimeout: Optional[int] def __init__( self, uuid: str, dbid: Optional[int], poolsize: int, isLazy: bool = False, handler: Type = ConnectionHandler, charset: str = "utf-8", password: Optional[str] = None, replyTimeout: Optional[int] = None, convertNumbers: Optional[int] = True, ): ... def buildProtocol(self, addr) -> RedisProtocol: ... class SubscriberFactory(RedisFactory): def __init__(self) -> None: ... synapse-1.53.0/synapse/000077500000000000000000000000001420514467300147525ustar00rootroot00000000000000synapse-1.53.0/synapse/__init__.py000066400000000000000000000034621420514467300170700ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018-9 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This is a reference implementation of a Matrix homeserver. """ import json import os import sys # Check that we're not running on an unsupported Python version. if sys.version_info < (3, 7): print("Synapse requires Python 3.7 or above.") sys.exit(1) # Twisted and canonicaljson will fail to import when this file is executed to # get the __version__ during a fresh install. That's OK and subsequent calls to # actually start Synapse will import these libraries fine. try: from twisted.internet import protocol from twisted.internet.protocol import Factory from twisted.names.dns import DNSDatagramProtocol protocol.Factory.noisy = False Factory.noisy = False DNSDatagramProtocol.noisy = False except ImportError: pass # Use the standard library json implementation instead of simplejson. try: from canonicaljson import set_json_library set_json_library(json) except ImportError: pass __version__ = "1.53.0" if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)): # We import here so that we don't have to install a bunch of deps when # running the packaging tox test. from synapse.util.patch_inline_callbacks import do_patch do_patch() synapse-1.53.0/synapse/_scripts/000077500000000000000000000000001420514467300166005ustar00rootroot00000000000000synapse-1.53.0/synapse/_scripts/__init__.py000066400000000000000000000000001420514467300206770ustar00rootroot00000000000000synapse-1.53.0/synapse/_scripts/register_new_matrix_user.py000066400000000000000000000142221420514467300242720ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2018 New Vector # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import getpass import hashlib import hmac import logging import sys from typing import Callable, Optional import requests as _requests import yaml def request_registration( user: str, password: str, server_location: str, shared_secret: str, admin: bool = False, user_type: Optional[str] = None, requests=_requests, _print: Callable[[str], None] = print, exit: Callable[[int], None] = sys.exit, ) -> None: url = "%s/_synapse/admin/v1/register" % (server_location.rstrip("/"),) # Get the nonce r = requests.get(url, verify=False) if r.status_code != 200: _print("ERROR! Received %d %s" % (r.status_code, r.reason)) if 400 <= r.status_code < 500: try: _print(r.json()["error"]) except Exception: pass return exit(1) nonce = r.json()["nonce"] mac = hmac.new(key=shared_secret.encode("utf8"), digestmod=hashlib.sha1) mac.update(nonce.encode("utf8")) mac.update(b"\x00") mac.update(user.encode("utf8")) mac.update(b"\x00") mac.update(password.encode("utf8")) mac.update(b"\x00") mac.update(b"admin" if admin else b"notadmin") if user_type: mac.update(b"\x00") mac.update(user_type.encode("utf8")) hex_mac = mac.hexdigest() data = { "nonce": nonce, "username": user, "password": password, "mac": hex_mac, "admin": admin, "user_type": user_type, } _print("Sending registration request...") r = requests.post(url, json=data, verify=False) if r.status_code != 200: _print("ERROR! Received %d %s" % (r.status_code, r.reason)) if 400 <= r.status_code < 500: try: _print(r.json()["error"]) except Exception: pass return exit(1) _print("Success!") def register_new_user( user: str, password: str, server_location: str, shared_secret: str, admin: Optional[bool], user_type: Optional[str], ) -> None: if not user: try: default_user: Optional[str] = getpass.getuser() except Exception: default_user = None if default_user: user = input("New user localpart [%s]: " % (default_user,)) if not user: user = default_user else: user = input("New user localpart: ") if not user: print("Invalid user name") sys.exit(1) if not password: password = getpass.getpass("Password: ") if not password: print("Password cannot be blank.") sys.exit(1) confirm_password = getpass.getpass("Confirm password: ") if password != confirm_password: print("Passwords do not match") sys.exit(1) if admin is None: admin_inp = input("Make admin [no]: ") if admin_inp in ("y", "yes", "true"): admin = True else: admin = False request_registration( user, password, server_location, shared_secret, bool(admin), user_type ) def main() -> None: logging.captureWarnings(True) parser = argparse.ArgumentParser( description="Used to register new users with a given homeserver when" " registration has been disabled. The homeserver must be" " configured with the 'registration_shared_secret' option" " set." ) parser.add_argument( "-u", "--user", default=None, help="Local part of the new user. Will prompt if omitted.", ) parser.add_argument( "-p", "--password", default=None, help="New password for user. Will prompt if omitted.", ) parser.add_argument( "-t", "--user_type", default=None, help="User type as specified in synapse.api.constants.UserTypes", ) admin_group = parser.add_mutually_exclusive_group() admin_group.add_argument( "-a", "--admin", action="store_true", help=( "Register new user as an admin. " "Will prompt if --no-admin is not set either." ), ) admin_group.add_argument( "--no-admin", action="store_true", help=( "Register new user as a regular user. " "Will prompt if --admin is not set either." ), ) group = parser.add_mutually_exclusive_group(required=True) group.add_argument( "-c", "--config", type=argparse.FileType("r"), help="Path to server config file. Used to read in shared secret.", ) group.add_argument( "-k", "--shared-secret", help="Shared secret as defined in server config file." ) parser.add_argument( "server_url", default="https://localhost:8448", nargs="?", help="URL to use to talk to the homeserver. Defaults to " " 'https://localhost:8448'.", ) args = parser.parse_args() if "config" in args and args.config: config = yaml.safe_load(args.config) secret = config.get("registration_shared_secret", None) if not secret: print("No 'registration_shared_secret' defined in config.") sys.exit(1) else: secret = args.shared_secret admin = None if args.admin or args.no_admin: admin = args.admin register_new_user( args.user, args.password, args.server_url, secret, admin, args.user_type ) if __name__ == "__main__": main() synapse-1.53.0/synapse/_scripts/review_recent_signups.py000066400000000000000000000134351420514467300235710ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import sys import time from datetime import datetime from typing import List import attr from synapse.config._base import ( Config, RootConfig, find_config_files, read_config_files, ) from synapse.config.database import DatabaseConfig from synapse.storage.database import DatabasePool, LoggingTransaction, make_conn from synapse.storage.engines import create_engine class ReviewConfig(RootConfig): "A config class that just pulls out the database config" config_classes = [DatabaseConfig] @attr.s(auto_attribs=True) class UserInfo: user_id: str creation_ts: int emails: List[str] = attr.Factory(list) private_rooms: List[str] = attr.Factory(list) public_rooms: List[str] = attr.Factory(list) ips: List[str] = attr.Factory(list) def get_recent_users( txn: LoggingTransaction, since_ms: int, exclude_app_service: bool ) -> List[UserInfo]: """Fetches recently registered users and some info on them.""" sql = """ SELECT name, creation_ts FROM users WHERE ? <= creation_ts AND deactivated = 0 """ if exclude_app_service: sql += " AND appservice_id IS NULL" txn.execute(sql, (since_ms / 1000,)) user_infos = [UserInfo(user_id, creation_ts) for user_id, creation_ts in txn] for user_info in user_infos: user_info.emails = DatabasePool.simple_select_onecol_txn( txn, table="user_threepids", keyvalues={"user_id": user_info.user_id, "medium": "email"}, retcol="address", ) sql = """ SELECT room_id, canonical_alias, name, join_rules FROM local_current_membership INNER JOIN room_stats_state USING (room_id) WHERE user_id = ? AND membership = 'join' """ txn.execute(sql, (user_info.user_id,)) for room_id, canonical_alias, name, join_rules in txn: if join_rules == "public": user_info.public_rooms.append(canonical_alias or name or room_id) else: user_info.private_rooms.append(canonical_alias or name or room_id) user_info.ips = DatabasePool.simple_select_onecol_txn( txn, table="user_ips", keyvalues={"user_id": user_info.user_id}, retcol="ip", ) return user_infos def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "-c", "--config-path", action="append", metavar="CONFIG_FILE", help="The config files for Synapse.", required=True, ) parser.add_argument( "-s", "--since", metavar="duration", help="Specify how far back to review user registrations for, defaults to 7d (i.e. 7 days).", default="7d", ) parser.add_argument( "-e", "--exclude-emails", action="store_true", help="Exclude users that have validated email addresses.", ) parser.add_argument( "-u", "--only-users", action="store_true", help="Only print user IDs that match.", ) parser.add_argument( "-a", "--exclude-app-service", help="Exclude appservice users.", action="store_true", ) config = ReviewConfig() config_args = parser.parse_args(sys.argv[1:]) config_files = find_config_files(search_paths=config_args.config_path) config_dict = read_config_files(config_files) config.parse_config_dict( config_dict, ) since_ms = time.time() * 1000 - Config.parse_duration(config_args.since) exclude_users_with_email = config_args.exclude_emails exclude_users_with_appservice = config_args.exclude_app_service include_context = not config_args.only_users for database_config in config.database.databases: if "main" in database_config.databases: break engine = create_engine(database_config.config) with make_conn(database_config, engine, "review_recent_signups") as db_conn: # This generates a type of Cursor, not LoggingTransaction. user_infos = get_recent_users(db_conn.cursor(), since_ms, exclude_users_with_appservice) # type: ignore[arg-type] for user_info in user_infos: if exclude_users_with_email and user_info.emails: continue if include_context: print_public_rooms = "" if user_info.public_rooms: print_public_rooms = "(" + ", ".join(user_info.public_rooms[:3]) if len(user_info.public_rooms) > 3: print_public_rooms += ", ..." print_public_rooms += ")" print("# Created:", datetime.fromtimestamp(user_info.creation_ts)) print("# Email:", ", ".join(user_info.emails) or "None") print("# IPs:", ", ".join(user_info.ips)) print( "# Number joined public rooms:", len(user_info.public_rooms), print_public_rooms, ) print("# Number joined private rooms:", len(user_info.private_rooms)) print("#") print(user_info.user_id) if include_context: print() if __name__ == "__main__": main() synapse-1.53.0/synapse/api/000077500000000000000000000000001420514467300155235ustar00rootroot00000000000000synapse-1.53.0/synapse/api/__init__.py000066400000000000000000000011071420514467300176330ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/api/auth.py000066400000000000000000000673411420514467300170510ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional, Tuple import pymacaroons from netaddr import IPAddress from twisted.web.server import Request from synapse import event_auth from synapse.api.auth_blocking import AuthBlocking from synapse.api.constants import EventTypes, HistoryVisibility, Membership from synapse.api.errors import ( AuthError, Codes, InvalidClientTokenError, MissingClientTokenError, ) from synapse.appservice import ApplicationService from synapse.events import EventBase from synapse.http import get_request_user_agent from synapse.http.site import SynapseRequest from synapse.logging.opentracing import active_span, force_tracing, start_active_span from synapse.storage.databases.main.registration import TokenLookupResult from synapse.types import Requester, StateMap, UserID, create_requester from synapse.util.caches.lrucache import LruCache from synapse.util.macaroons import get_value_from_macaroon, satisfy_expiry if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # guests always get this device id. GUEST_DEVICE_ID = "guest_device" class _InvalidMacaroonException(Exception): pass class Auth: """ This class contains functions for authenticating users of our client-server API. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.clock = hs.get_clock() self.store = hs.get_datastore() self.state = hs.get_state_handler() self._account_validity_handler = hs.get_account_validity_handler() self.token_cache: LruCache[str, Tuple[str, bool]] = LruCache( 10000, "token_cache" ) self._auth_blocking = AuthBlocking(self.hs) self._track_appservice_user_ips = hs.config.appservice.track_appservice_user_ips self._track_puppeted_user_ips = hs.config.api.track_puppeted_user_ips self._macaroon_secret_key = hs.config.key.macaroon_secret_key self._force_tracing_for_users = hs.config.tracing.force_tracing_for_users async def check_user_in_room( self, room_id: str, user_id: str, current_state: Optional[StateMap[EventBase]] = None, allow_departed_users: bool = False, ) -> EventBase: """Check if the user is in the room, or was at some point. Args: room_id: The room to check. user_id: The user to check. current_state: Optional map of the current state of the room. If provided then that map is used to check whether they are a member of the room. Otherwise the current membership is loaded from the database. allow_departed_users: if True, accept users that were previously members but have now departed. Raises: AuthError if the user is/was not in the room. Returns: Membership event for the user if the user was in the room. This will be the join event if they are currently joined to the room. This will be the leave event if they have left the room. """ if current_state: member = current_state.get((EventTypes.Member, user_id), None) else: member = await self.state.get_current_state( room_id=room_id, event_type=EventTypes.Member, state_key=user_id ) if member: membership = member.membership if membership == Membership.JOIN: return member # XXX this looks totally bogus. Why do we not allow users who have been banned, # or those who were members previously and have been re-invited? if allow_departed_users and membership == Membership.LEAVE: forgot = await self.store.did_forget(user_id, room_id) if not forgot: return member raise AuthError(403, "User %s not in room %s" % (user_id, room_id)) async def get_user_by_req( self, request: SynapseRequest, allow_guest: bool = False, rights: str = "access", allow_expired: bool = False, ) -> Requester: """Get a registered user's ID. Args: request: An HTTP request with an access_token query parameter. allow_guest: If False, will raise an AuthError if the user making the request is a guest. rights: The operation being performed; the access token must allow this allow_expired: If True, allow the request through even if the account is expired, or session token lifetime has ended. Note that /login will deliver access tokens regardless of expiration. Returns: Resolves to the requester Raises: InvalidClientCredentialsError if no user by that token exists or the token is invalid. AuthError if access is denied for the user in the access token """ parent_span = active_span() with start_active_span("get_user_by_req"): requester = await self._wrapped_get_user_by_req( request, allow_guest, rights, allow_expired ) if parent_span: if requester.authenticated_entity in self._force_tracing_for_users: # request tracing is enabled for this user, so we need to force it # tracing on for the parent span (which will be the servlet span). # # It's too late for the get_user_by_req span to inherit the setting, # so we also force it on for that. force_tracing() force_tracing(parent_span) parent_span.set_tag( "authenticated_entity", requester.authenticated_entity ) parent_span.set_tag("user_id", requester.user.to_string()) if requester.device_id is not None: parent_span.set_tag("device_id", requester.device_id) if requester.app_service is not None: parent_span.set_tag("appservice_id", requester.app_service.id) return requester async def _wrapped_get_user_by_req( self, request: SynapseRequest, allow_guest: bool, rights: str, allow_expired: bool, ) -> Requester: """Helper for get_user_by_req Once get_user_by_req has set up the opentracing span, this does the actual work. """ try: ip_addr = request.getClientIP() user_agent = get_request_user_agent(request) access_token = self.get_access_token_from_request(request) ( user_id, device_id, app_service, ) = await self._get_appservice_user_id_and_device_id(request) if user_id and app_service: if ip_addr and self._track_appservice_user_ips: await self.store.insert_client_ip( user_id=user_id, access_token=access_token, ip=ip_addr, user_agent=user_agent, device_id="dummy-device" if device_id is None else device_id, # stubbed ) requester = create_requester( user_id, app_service=app_service, device_id=device_id ) request.requester = user_id return requester user_info = await self.get_user_by_access_token( access_token, rights, allow_expired=allow_expired ) token_id = user_info.token_id is_guest = user_info.is_guest shadow_banned = user_info.shadow_banned # Deny the request if the user account has expired. if not allow_expired: if await self._account_validity_handler.is_user_expired( user_info.user_id ): # Raise the error if either an account validity module has determined # the account has expired, or the legacy account validity # implementation is enabled and determined the account has expired raise AuthError( 403, "User account has expired", errcode=Codes.EXPIRED_ACCOUNT, ) device_id = user_info.device_id if access_token and ip_addr: await self.store.insert_client_ip( user_id=user_info.token_owner, access_token=access_token, ip=ip_addr, user_agent=user_agent, device_id=device_id, ) # Track also the puppeted user client IP if enabled and the user is puppeting if ( user_info.user_id != user_info.token_owner and self._track_puppeted_user_ips ): await self.store.insert_client_ip( user_id=user_info.user_id, access_token=access_token, ip=ip_addr, user_agent=user_agent, device_id=device_id, ) if is_guest and not allow_guest: raise AuthError( 403, "Guest access not allowed", errcode=Codes.GUEST_ACCESS_FORBIDDEN, ) # Mark the token as used. This is used to invalidate old refresh # tokens after some time. if not user_info.token_used and token_id is not None: await self.store.mark_access_token_as_used(token_id) requester = create_requester( user_info.user_id, token_id, is_guest, shadow_banned, device_id, app_service=app_service, authenticated_entity=user_info.token_owner, ) request.requester = requester return requester except KeyError: raise MissingClientTokenError() async def validate_appservice_can_control_user_id( self, app_service: ApplicationService, user_id: str ) -> None: """Validates that the app service is allowed to control the given user. Args: app_service: The app service that controls the user user_id: The author MXID that the app service is controlling Raises: AuthError: If the application service is not allowed to control the user (user namespace regex does not match, wrong homeserver, etc) or if the user has not been registered yet. """ # It's ok if the app service is trying to use the sender from their registration if app_service.sender == user_id: pass # Check to make sure the app service is allowed to control the user elif not app_service.is_interested_in_user(user_id): raise AuthError( 403, "Application service cannot masquerade as this user (%s)." % user_id, ) # Check to make sure the user is already registered on the homeserver elif not (await self.store.get_user_by_id(user_id)): raise AuthError( 403, "Application service has not registered this user (%s)" % user_id ) async def _get_appservice_user_id_and_device_id( self, request: Request ) -> Tuple[Optional[str], Optional[str], Optional[ApplicationService]]: """ Given a request, reads the request parameters to determine: - whether it's an application service that's making this request - what user the application service should be treated as controlling (the user_id URI parameter allows an application service to masquerade any applicable user in its namespace) - what device the application service should be treated as controlling (the device_id[^1] URI parameter allows an application service to masquerade as any device that exists for the relevant user) [^1] Unstable and provided by MSC3202. Must use `org.matrix.msc3202.device_id` in place of `device_id` for now. Returns: 3-tuple of (user ID?, device ID?, application service?) Postconditions: - If an application service is returned, so is a user ID - A user ID is never returned without an application service - A device ID is never returned without a user ID or an application service - The returned application service, if present, is permitted to control the returned user ID. - The returned device ID, if present, has been checked to be a valid device ID for the returned user ID. """ DEVICE_ID_ARG_NAME = b"org.matrix.msc3202.device_id" app_service = self.store.get_app_service_by_token( self.get_access_token_from_request(request) ) if app_service is None: return None, None, None if app_service.ip_range_whitelist: ip_address = IPAddress(request.getClientIP()) if ip_address not in app_service.ip_range_whitelist: return None, None, None # This will always be set by the time Twisted calls us. assert request.args is not None if b"user_id" in request.args: effective_user_id = request.args[b"user_id"][0].decode("utf8") await self.validate_appservice_can_control_user_id( app_service, effective_user_id ) else: effective_user_id = app_service.sender effective_device_id: Optional[str] = None if ( self.hs.config.experimental.msc3202_device_masquerading_enabled and DEVICE_ID_ARG_NAME in request.args ): effective_device_id = request.args[DEVICE_ID_ARG_NAME][0].decode("utf8") # We only just set this so it can't be None! assert effective_device_id is not None device_opt = await self.store.get_device( effective_user_id, effective_device_id ) if device_opt is None: # For now, use 400 M_EXCLUSIVE if the device doesn't exist. # This is an open thread of discussion on MSC3202 as of 2021-12-09. raise AuthError( 400, f"Application service trying to use a device that doesn't exist ('{effective_device_id}' for {effective_user_id})", Codes.EXCLUSIVE, ) return effective_user_id, effective_device_id, app_service async def get_user_by_access_token( self, token: str, rights: str = "access", allow_expired: bool = False, ) -> TokenLookupResult: """Validate access token and get user_id from it Args: token: The access token to get the user by rights: The operation being performed; the access token must allow this allow_expired: If False, raises an InvalidClientTokenError if the token is expired Raises: InvalidClientTokenError if a user by that token exists, but the token is expired InvalidClientCredentialsError if no user by that token exists or the token is invalid """ if rights == "access": # first look in the database r = await self.store.get_user_by_access_token(token) if r: valid_until_ms = r.valid_until_ms if ( not allow_expired and valid_until_ms is not None and valid_until_ms < self.clock.time_msec() ): # there was a valid access token, but it has expired. # soft-logout the user. raise InvalidClientTokenError( msg="Access token has expired", soft_logout=True ) return r # otherwise it needs to be a valid macaroon try: user_id, guest = self._parse_and_validate_macaroon(token, rights) if rights == "access": if not guest: # non-guest access tokens must be in the database logger.warning("Unrecognised access token - not in store.") raise InvalidClientTokenError() # Guest access tokens are not stored in the database (there can # only be one access token per guest, anyway). # # In order to prevent guest access tokens being used as regular # user access tokens (and hence getting around the invalidation # process), we look up the user id and check that it is indeed # a guest user. # # It would of course be much easier to store guest access # tokens in the database as well, but that would break existing # guest tokens. stored_user = await self.store.get_user_by_id(user_id) if not stored_user: raise InvalidClientTokenError("Unknown user_id %s" % user_id) if not stored_user["is_guest"]: raise InvalidClientTokenError( "Guest access token used for regular user" ) ret = TokenLookupResult( user_id=user_id, is_guest=True, # all guests get the same device id device_id=GUEST_DEVICE_ID, ) elif rights == "delete_pusher": # We don't store these tokens in the database ret = TokenLookupResult(user_id=user_id, is_guest=False) else: raise RuntimeError("Unknown rights setting %s", rights) return ret except ( _InvalidMacaroonException, pymacaroons.exceptions.MacaroonException, TypeError, ValueError, ) as e: logger.warning("Invalid macaroon in auth: %s %s", type(e), e) raise InvalidClientTokenError("Invalid macaroon passed.") def _parse_and_validate_macaroon( self, token: str, rights: str = "access" ) -> Tuple[str, bool]: """Takes a macaroon and tries to parse and validate it. This is cached if and only if rights == access and there isn't an expiry. On invalid macaroon raises _InvalidMacaroonException Returns: (user_id, is_guest) """ if rights == "access": cached = self.token_cache.get(token, None) if cached: return cached try: macaroon = pymacaroons.Macaroon.deserialize(token) except Exception: # deserialize can throw more-or-less anything # doesn't look like a macaroon: treat it as an opaque token which # must be in the database. # TODO: it would be nice to get rid of this, but apparently some # people use access tokens which aren't macaroons raise _InvalidMacaroonException() try: user_id = get_value_from_macaroon(macaroon, "user_id") guest = False for caveat in macaroon.caveats: if caveat.caveat_id == "guest = true": guest = True self.validate_macaroon(macaroon, rights, user_id=user_id) except ( pymacaroons.exceptions.MacaroonException, KeyError, TypeError, ValueError, ): raise InvalidClientTokenError("Invalid macaroon passed.") if rights == "access": self.token_cache[token] = (user_id, guest) return user_id, guest def validate_macaroon( self, macaroon: pymacaroons.Macaroon, type_string: str, user_id: str ) -> None: """ validate that a Macaroon is understood by and was signed by this server. Args: macaroon: The macaroon to validate type_string: The kind of token required (e.g. "access", "delete_pusher") user_id: The user_id required """ v = pymacaroons.Verifier() # the verifier runs a test for every caveat on the macaroon, to check # that it is met for the current request. Each caveat must match at # least one of the predicates specified by satisfy_exact or # specify_general. v.satisfy_exact("gen = 1") v.satisfy_exact("type = " + type_string) v.satisfy_exact("user_id = %s" % user_id) v.satisfy_exact("guest = true") satisfy_expiry(v, self.clock.time_msec) # access_tokens include a nonce for uniqueness: any value is acceptable v.satisfy_general(lambda c: c.startswith("nonce = ")) v.verify(macaroon, self._macaroon_secret_key) def get_appservice_by_req(self, request: SynapseRequest) -> ApplicationService: token = self.get_access_token_from_request(request) service = self.store.get_app_service_by_token(token) if not service: logger.warning("Unrecognised appservice access token.") raise InvalidClientTokenError() request.requester = create_requester(service.sender, app_service=service) return service async def is_server_admin(self, user: UserID) -> bool: """Check if the given user is a local server admin. Args: user: user to check Returns: True if the user is an admin """ return await self.store.is_server_admin(user) async def check_can_change_room_list(self, room_id: str, user: UserID) -> bool: """Determine whether the user is allowed to edit the room's entry in the published room list. Args: room_id user """ is_admin = await self.is_server_admin(user) if is_admin: return True user_id = user.to_string() await self.check_user_in_room(room_id, user_id) # We currently require the user is a "moderator" in the room. We do this # by checking if they would (theoretically) be able to change the # m.room.canonical_alias events power_level_event = await self.state.get_current_state( room_id, EventTypes.PowerLevels, "" ) auth_events = {} if power_level_event: auth_events[(EventTypes.PowerLevels, "")] = power_level_event send_level = event_auth.get_send_level( EventTypes.CanonicalAlias, "", power_level_event ) user_level = event_auth.get_user_power_level(user_id, auth_events) return user_level >= send_level @staticmethod def has_access_token(request: Request) -> bool: """Checks if the request has an access_token. Returns: False if no access_token was given, True otherwise. """ # This will always be set by the time Twisted calls us. assert request.args is not None query_params = request.args.get(b"access_token") auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") return bool(query_params) or bool(auth_headers) @staticmethod def get_access_token_from_request(request: Request) -> str: """Extracts the access_token from the request. Args: request: The http request. Returns: The access_token Raises: MissingClientTokenError: If there isn't a single access_token in the request """ # This will always be set by the time Twisted calls us. assert request.args is not None auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") query_params = request.args.get(b"access_token") if auth_headers: # Try the get the access_token from a "Authorization: Bearer" # header if query_params is not None: raise MissingClientTokenError( "Mixing Authorization headers and access_token query parameters." ) if len(auth_headers) > 1: raise MissingClientTokenError("Too many Authorization headers.") parts = auth_headers[0].split(b" ") if parts[0] == b"Bearer" and len(parts) == 2: return parts[1].decode("ascii") else: raise MissingClientTokenError("Invalid Authorization header.") else: # Try to get the access_token from the query params. if not query_params: raise MissingClientTokenError() return query_params[0].decode("ascii") async def check_user_in_room_or_world_readable( self, room_id: str, user_id: str, allow_departed_users: bool = False ) -> Tuple[str, Optional[str]]: """Checks that the user is or was in the room or the room is world readable. If it isn't then an exception is raised. Args: room_id: room to check user_id: user to check allow_departed_users: if True, accept users that were previously members but have now departed Returns: Resolves to the current membership of the user in the room and the membership event ID of the user. If the user is not in the room and never has been, then `(Membership.JOIN, None)` is returned. """ try: # check_user_in_room will return the most recent membership # event for the user if: # * The user is a non-guest user, and was ever in the room # * The user is a guest user, and has joined the room # else it will throw. member_event = await self.check_user_in_room( room_id, user_id, allow_departed_users=allow_departed_users ) return member_event.membership, member_event.event_id except AuthError: visibility = await self.state.get_current_state( room_id, EventTypes.RoomHistoryVisibility, "" ) if ( visibility and visibility.content.get("history_visibility") == HistoryVisibility.WORLD_READABLE ): return Membership.JOIN, None raise AuthError( 403, "User %s not in room %s, and room previews are disabled" % (user_id, room_id), ) async def check_auth_blocking( self, user_id: Optional[str] = None, threepid: Optional[dict] = None, user_type: Optional[str] = None, requester: Optional[Requester] = None, ) -> None: await self._auth_blocking.check_auth_blocking( user_id=user_id, threepid=threepid, user_type=user_type, requester=requester ) synapse-1.53.0/synapse/api/auth_blocking.py000066400000000000000000000134451420514467300207150ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional from synapse.api.constants import LimitBlockingTypes, UserTypes from synapse.api.errors import Codes, ResourceLimitError from synapse.config.server import is_threepid_reserved from synapse.types import Requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AuthBlocking: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self._hs_disabled = hs.config.server.hs_disabled self._hs_disabled_message = hs.config.server.hs_disabled_message self._admin_contact = hs.config.server.admin_contact self._max_mau_value = hs.config.server.max_mau_value self._limit_usage_by_mau = hs.config.server.limit_usage_by_mau self._mau_limits_reserved_threepids = ( hs.config.server.mau_limits_reserved_threepids ) self._server_name = hs.hostname self._track_appservice_user_ips = hs.config.appservice.track_appservice_user_ips async def check_auth_blocking( self, user_id: Optional[str] = None, threepid: Optional[dict] = None, user_type: Optional[str] = None, requester: Optional[Requester] = None, ) -> None: """Checks if the user should be rejected for some external reason, such as monthly active user limiting or global disable flag Args: user_id: If present, checks for presence against existing MAU cohort threepid: If present, checks for presence against configured reserved threepid. Used in cases where the user is trying register with a MAU blocked server, normally they would be rejected but their threepid is on the reserved list. user_id and threepid should never be set at the same time. user_type: If present, is used to decide whether to check against certain blocking reasons like MAU. requester: If present, and the authenticated entity is a user, checks for presence against existing MAU cohort. Passing in both a `user_id` and `requester` is an error. """ if requester and user_id: raise Exception( "Passed in both 'user_id' and 'requester' to 'check_auth_blocking'" ) if requester: if requester.authenticated_entity.startswith("@"): user_id = requester.authenticated_entity elif requester.authenticated_entity == self._server_name: # We never block the server from doing actions on behalf of # users. return if requester.app_service and not self._track_appservice_user_ips: # If we're authenticated as an appservice then we only block # auth if `track_appservice_user_ips` is set, as that option # implicitly means that application services are part of MAU # limits. return # Never fail an auth check for the server notices users or support user # This can be a problem where event creation is prohibited due to blocking if user_id is not None: if user_id == self._server_notices_mxid: return if await self.store.is_support_user(user_id): return if self._hs_disabled: raise ResourceLimitError( 403, self._hs_disabled_message, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, admin_contact=self._admin_contact, limit_type=LimitBlockingTypes.HS_DISABLED, ) if self._limit_usage_by_mau is True: assert not (user_id and threepid) # If the user is already part of the MAU cohort or a trial user if user_id: timestamp = await self.store.user_last_seen_monthly_active(user_id) if timestamp: return is_trial = await self.store.is_trial_user(user_id) if is_trial: return elif threepid: # If the user does not exist yet, but is signing up with a # reserved threepid then pass auth check if is_threepid_reserved(self._mau_limits_reserved_threepids, threepid): return elif user_type == UserTypes.SUPPORT: # If the user does not exist yet and is of type "support", # allow registration. Support users are excluded from MAU checks. return # Else if there is no room in the MAU bucket, bail current_mau = await self.store.get_monthly_active_count() if current_mau >= self._max_mau_value: raise ResourceLimitError( 403, "Monthly Active User Limit Exceeded", admin_contact=self._admin_contact, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, limit_type=LimitBlockingTypes.MONTHLY_ACTIVE_USER, ) synapse-1.53.0/synapse/api/constants.py000066400000000000000000000167231420514467300201220ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2018-2019 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains constants from the specification.""" from typing_extensions import Final # the max size of a (canonical-json-encoded) event MAX_PDU_SIZE = 65536 # the "depth" field on events is limited to 2**63 - 1 MAX_DEPTH = 2 ** 63 - 1 # the maximum length for a room alias is 255 characters MAX_ALIAS_LENGTH = 255 # the maximum length for a user id is 255 characters MAX_USERID_LENGTH = 255 # The maximum length for a group id is 255 characters MAX_GROUPID_LENGTH = 255 MAX_GROUP_CATEGORYID_LENGTH = 255 MAX_GROUP_ROLEID_LENGTH = 255 class Membership: """Represents the membership states of a user in a room.""" INVITE: Final = "invite" JOIN: Final = "join" KNOCK: Final = "knock" LEAVE: Final = "leave" BAN: Final = "ban" LIST: Final = (INVITE, JOIN, KNOCK, LEAVE, BAN) class PresenceState: """Represents the presence state of a user.""" OFFLINE: Final = "offline" UNAVAILABLE: Final = "unavailable" ONLINE: Final = "online" BUSY: Final = "org.matrix.msc3026.busy" class JoinRules: PUBLIC: Final = "public" KNOCK: Final = "knock" INVITE: Final = "invite" PRIVATE: Final = "private" # As defined for MSC3083. RESTRICTED: Final = "restricted" class RestrictedJoinRuleTypes: """Understood types for the allow rules in restricted join rules.""" ROOM_MEMBERSHIP: Final = "m.room_membership" class LoginType: PASSWORD: Final = "m.login.password" EMAIL_IDENTITY: Final = "m.login.email.identity" MSISDN: Final = "m.login.msisdn" RECAPTCHA: Final = "m.login.recaptcha" TERMS: Final = "m.login.terms" SSO: Final = "m.login.sso" DUMMY: Final = "m.login.dummy" REGISTRATION_TOKEN: Final = "m.login.registration_token" # This is used in the `type` parameter for /register when called by # an appservice to register a new user. APP_SERVICE_REGISTRATION_TYPE: Final = "m.login.application_service" class EventTypes: Member: Final = "m.room.member" Create: Final = "m.room.create" Tombstone: Final = "m.room.tombstone" JoinRules: Final = "m.room.join_rules" PowerLevels: Final = "m.room.power_levels" Aliases: Final = "m.room.aliases" Redaction: Final = "m.room.redaction" ThirdPartyInvite: Final = "m.room.third_party_invite" RelatedGroups: Final = "m.room.related_groups" RoomHistoryVisibility: Final = "m.room.history_visibility" CanonicalAlias: Final = "m.room.canonical_alias" Encrypted: Final = "m.room.encrypted" RoomAvatar: Final = "m.room.avatar" RoomEncryption: Final = "m.room.encryption" GuestAccess: Final = "m.room.guest_access" # These are used for validation Message: Final = "m.room.message" Topic: Final = "m.room.topic" Name: Final = "m.room.name" ServerACL: Final = "m.room.server_acl" Pinned: Final = "m.room.pinned_events" Retention: Final = "m.room.retention" Dummy: Final = "org.matrix.dummy_event" SpaceChild: Final = "m.space.child" SpaceParent: Final = "m.space.parent" MSC2716_INSERTION: Final = "org.matrix.msc2716.insertion" MSC2716_BATCH: Final = "org.matrix.msc2716.batch" MSC2716_MARKER: Final = "org.matrix.msc2716.marker" class ToDeviceEventTypes: RoomKeyRequest: Final = "m.room_key_request" class DeviceKeyAlgorithms: """Spec'd algorithms for the generation of per-device keys""" ED25519: Final = "ed25519" CURVE25519: Final = "curve25519" SIGNED_CURVE25519: Final = "signed_curve25519" class EduTypes: Presence: Final = "m.presence" class RejectedReason: AUTH_ERROR: Final = "auth_error" class RoomCreationPreset: PRIVATE_CHAT: Final = "private_chat" PUBLIC_CHAT: Final = "public_chat" TRUSTED_PRIVATE_CHAT: Final = "trusted_private_chat" class ThirdPartyEntityKind: USER: Final = "user" LOCATION: Final = "location" ServerNoticeMsgType: Final = "m.server_notice" ServerNoticeLimitReached: Final = "m.server_notice.usage_limit_reached" class UserTypes: """Allows for user type specific behaviour. With the benefit of hindsight 'admin' and 'guest' users should also be UserTypes. Normal users are type None """ SUPPORT: Final = "support" BOT: Final = "bot" ALL_USER_TYPES: Final = (SUPPORT, BOT) class RelationTypes: """The types of relations known to this server.""" ANNOTATION: Final = "m.annotation" REPLACE: Final = "m.replace" REFERENCE: Final = "m.reference" THREAD: Final = "io.element.thread" class LimitBlockingTypes: """Reasons that a server may be blocked""" MONTHLY_ACTIVE_USER: Final = "monthly_active_user" HS_DISABLED: Final = "hs_disabled" class EventContentFields: """Fields found in events' content, regardless of type.""" # Labels for the event, cf https://github.com/matrix-org/matrix-doc/pull/2326 LABELS: Final = "org.matrix.labels" # Timestamp to delete the event after # cf https://github.com/matrix-org/matrix-doc/pull/2228 SELF_DESTRUCT_AFTER: Final = "org.matrix.self_destruct_after" # cf https://github.com/matrix-org/matrix-doc/pull/1772 ROOM_TYPE: Final = "type" # Whether a room can federate. FEDERATE: Final = "m.federate" # The creator of the room, as used in `m.room.create` events. ROOM_CREATOR: Final = "creator" # Used in m.room.guest_access events. GUEST_ACCESS: Final = "guest_access" # Used on normal messages to indicate they were historically imported after the fact MSC2716_HISTORICAL: Final = "org.matrix.msc2716.historical" # For "insertion" events to indicate what the next batch ID should be in # order to connect to it MSC2716_NEXT_BATCH_ID: Final = "org.matrix.msc2716.next_batch_id" # Used on "batch" events to indicate which insertion event it connects to MSC2716_BATCH_ID: Final = "org.matrix.msc2716.batch_id" # For "marker" events MSC2716_MARKER_INSERTION: Final = "org.matrix.msc2716.marker.insertion" # The authorising user for joining a restricted room. AUTHORISING_USER: Final = "join_authorised_via_users_server" class RoomTypes: """Understood values of the room_type field of m.room.create events.""" SPACE: Final = "m.space" class RoomEncryptionAlgorithms: MEGOLM_V1_AES_SHA2: Final = "m.megolm.v1.aes-sha2" DEFAULT: Final = MEGOLM_V1_AES_SHA2 class AccountDataTypes: DIRECT: Final = "m.direct" IGNORED_USER_LIST: Final = "m.ignored_user_list" class HistoryVisibility: INVITED: Final = "invited" JOINED: Final = "joined" SHARED: Final = "shared" WORLD_READABLE: Final = "world_readable" class GuestAccess: CAN_JOIN: Final = "can_join" # anything that is not "can_join" is considered "forbidden", but for completeness: FORBIDDEN: Final = "forbidden" class ReceiptTypes: READ: Final = "m.read" class ReadReceiptEventFields: MSC2285_HIDDEN: Final = "org.matrix.msc2285.hidden" synapse-1.53.0/synapse/api/errors.py000066400000000000000000000460501420514467300174160ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains exceptions and error codes.""" import logging import typing from http import HTTPStatus from typing import Any, Dict, List, Optional, Union from twisted.web import http from synapse.util import json_decoder if typing.TYPE_CHECKING: from synapse.types import JsonDict logger = logging.getLogger(__name__) class Codes: UNRECOGNIZED = "M_UNRECOGNIZED" UNAUTHORIZED = "M_UNAUTHORIZED" FORBIDDEN = "M_FORBIDDEN" BAD_JSON = "M_BAD_JSON" NOT_JSON = "M_NOT_JSON" USER_IN_USE = "M_USER_IN_USE" ROOM_IN_USE = "M_ROOM_IN_USE" BAD_PAGINATION = "M_BAD_PAGINATION" BAD_STATE = "M_BAD_STATE" UNKNOWN = "M_UNKNOWN" NOT_FOUND = "M_NOT_FOUND" MISSING_TOKEN = "M_MISSING_TOKEN" UNKNOWN_TOKEN = "M_UNKNOWN_TOKEN" GUEST_ACCESS_FORBIDDEN = "M_GUEST_ACCESS_FORBIDDEN" LIMIT_EXCEEDED = "M_LIMIT_EXCEEDED" CAPTCHA_NEEDED = "M_CAPTCHA_NEEDED" CAPTCHA_INVALID = "M_CAPTCHA_INVALID" MISSING_PARAM = "M_MISSING_PARAM" INVALID_PARAM = "M_INVALID_PARAM" TOO_LARGE = "M_TOO_LARGE" EXCLUSIVE = "M_EXCLUSIVE" THREEPID_AUTH_FAILED = "M_THREEPID_AUTH_FAILED" THREEPID_IN_USE = "M_THREEPID_IN_USE" THREEPID_NOT_FOUND = "M_THREEPID_NOT_FOUND" THREEPID_DENIED = "M_THREEPID_DENIED" INVALID_USERNAME = "M_INVALID_USERNAME" SERVER_NOT_TRUSTED = "M_SERVER_NOT_TRUSTED" CONSENT_NOT_GIVEN = "M_CONSENT_NOT_GIVEN" CANNOT_LEAVE_SERVER_NOTICE_ROOM = "M_CANNOT_LEAVE_SERVER_NOTICE_ROOM" RESOURCE_LIMIT_EXCEEDED = "M_RESOURCE_LIMIT_EXCEEDED" UNSUPPORTED_ROOM_VERSION = "M_UNSUPPORTED_ROOM_VERSION" INCOMPATIBLE_ROOM_VERSION = "M_INCOMPATIBLE_ROOM_VERSION" WRONG_ROOM_KEYS_VERSION = "M_WRONG_ROOM_KEYS_VERSION" EXPIRED_ACCOUNT = "ORG_MATRIX_EXPIRED_ACCOUNT" PASSWORD_TOO_SHORT = "M_PASSWORD_TOO_SHORT" PASSWORD_NO_DIGIT = "M_PASSWORD_NO_DIGIT" PASSWORD_NO_UPPERCASE = "M_PASSWORD_NO_UPPERCASE" PASSWORD_NO_LOWERCASE = "M_PASSWORD_NO_LOWERCASE" PASSWORD_NO_SYMBOL = "M_PASSWORD_NO_SYMBOL" PASSWORD_IN_DICTIONARY = "M_PASSWORD_IN_DICTIONARY" WEAK_PASSWORD = "M_WEAK_PASSWORD" INVALID_SIGNATURE = "M_INVALID_SIGNATURE" USER_DEACTIVATED = "M_USER_DEACTIVATED" BAD_ALIAS = "M_BAD_ALIAS" # For restricted join rules. UNABLE_AUTHORISE_JOIN = "M_UNABLE_TO_AUTHORISE_JOIN" UNABLE_TO_GRANT_JOIN = "M_UNABLE_TO_GRANT_JOIN" class CodeMessageException(RuntimeError): """An exception with integer code and message string attributes. Attributes: code: HTTP error code msg: string describing the error """ def __init__(self, code: Union[int, HTTPStatus], msg: str): super().__init__("%d: %s" % (code, msg)) # Some calls to this method pass instances of http.HTTPStatus for `code`. # While HTTPStatus is a subclass of int, it has magic __str__ methods # which emit `HTTPStatus.FORBIDDEN` when converted to a str, instead of `403`. # This causes inconsistency in our log lines. # # To eliminate this behaviour, we convert them to their integer equivalents here. self.code = int(code) self.msg = msg class RedirectException(CodeMessageException): """A pseudo-error indicating that we want to redirect the client to a different location Attributes: cookies: a list of set-cookies values to add to the response. For example: b"sessionId=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT" """ def __init__(self, location: bytes, http_code: int = http.FOUND): """ Args: location: the URI to redirect to http_code: the HTTP response code """ msg = "Redirect to %s" % (location.decode("utf-8"),) super().__init__(code=http_code, msg=msg) self.location = location self.cookies: List[bytes] = [] class SynapseError(CodeMessageException): """A base exception type for matrix errors which have an errcode and error message (as well as an HTTP status code). Attributes: errcode: Matrix error code e.g 'M_FORBIDDEN' """ def __init__(self, code: int, msg: str, errcode: str = Codes.UNKNOWN): """Constructs a synapse error. Args: code: The integer error code (an HTTP response code) msg: The human-readable error message. errcode: The matrix error code e.g 'M_FORBIDDEN' """ super().__init__(code, msg) self.errcode = errcode def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode) class InvalidAPICallError(SynapseError): """You called an existing API endpoint, but fed that endpoint invalid or incomplete data.""" def __init__(self, msg: str): super().__init__(HTTPStatus.BAD_REQUEST, msg, Codes.BAD_JSON) class ProxiedRequestError(SynapseError): """An error from a general matrix endpoint, eg. from a proxied Matrix API call. Attributes: errcode: Matrix error code e.g 'M_FORBIDDEN' """ def __init__( self, code: int, msg: str, errcode: str = Codes.UNKNOWN, additional_fields: Optional[Dict] = None, ): super().__init__(code, msg, errcode) if additional_fields is None: self._additional_fields: Dict = {} else: self._additional_fields = dict(additional_fields) def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode, **self._additional_fields) class ConsentNotGivenError(SynapseError): """The error returned to the client when the user has not consented to the privacy policy. """ def __init__(self, msg: str, consent_uri: str): """Constructs a ConsentNotGivenError Args: msg: The human-readable error message consent_url: The URL where the user can give their consent """ super().__init__( code=HTTPStatus.FORBIDDEN, msg=msg, errcode=Codes.CONSENT_NOT_GIVEN ) self._consent_uri = consent_uri def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode, consent_uri=self._consent_uri) class UserDeactivatedError(SynapseError): """The error returned to the client when the user attempted to access an authenticated endpoint, but the account has been deactivated. """ def __init__(self, msg: str): """Constructs a UserDeactivatedError Args: msg: The human-readable error message """ super().__init__( code=HTTPStatus.FORBIDDEN, msg=msg, errcode=Codes.USER_DEACTIVATED ) class FederationDeniedError(SynapseError): """An error raised when the server tries to federate with a server which is not on its federation whitelist. Attributes: destination: The destination which has been denied """ def __init__(self, destination: Optional[str]): """Raised by federation client or server to indicate that we are are deliberately not attempting to contact a given server because it is not on our federation whitelist. Args: destination: the domain in question """ self.destination = destination super().__init__( code=403, msg="Federation denied with %s." % (self.destination,), errcode=Codes.FORBIDDEN, ) class InteractiveAuthIncompleteError(Exception): """An error raised when UI auth is not yet complete (This indicates we should return a 401 with 'result' as the body) Attributes: session_id: The ID of the ongoing interactive auth session. result: the server response to the request, which should be passed back to the client """ def __init__(self, session_id: str, result: "JsonDict"): super().__init__("Interactive auth not yet complete") self.session_id = session_id self.result = result class UnrecognizedRequestError(SynapseError): """An error indicating we don't understand the request you're trying to make""" def __init__( self, msg: str = "Unrecognized request", errcode: str = Codes.UNRECOGNIZED ): super().__init__(400, msg, errcode) class NotFoundError(SynapseError): """An error indicating we can't find the thing you asked for""" def __init__(self, msg: str = "Not found", errcode: str = Codes.NOT_FOUND): super().__init__(404, msg, errcode=errcode) class AuthError(SynapseError): """An error raised when there was a problem authorising an event, and at various other poorly-defined times. """ def __init__(self, code: int, msg: str, errcode: str = Codes.FORBIDDEN): super().__init__(code, msg, errcode) class InvalidClientCredentialsError(SynapseError): """An error raised when there was a problem with the authorisation credentials in a client request. https://matrix.org/docs/spec/client_server/r0.5.0#using-access-tokens: When credentials are required but missing or invalid, the HTTP call will return with a status of 401 and the error code, M_MISSING_TOKEN or M_UNKNOWN_TOKEN respectively. """ def __init__(self, msg: str, errcode: str): super().__init__(code=401, msg=msg, errcode=errcode) class MissingClientTokenError(InvalidClientCredentialsError): """Raised when we couldn't find the access token in a request""" def __init__(self, msg: str = "Missing access token"): super().__init__(msg=msg, errcode="M_MISSING_TOKEN") class InvalidClientTokenError(InvalidClientCredentialsError): """Raised when we didn't understand the access token in a request""" def __init__( self, msg: str = "Unrecognised access token", soft_logout: bool = False ): super().__init__(msg=msg, errcode="M_UNKNOWN_TOKEN") self._soft_logout = soft_logout def error_dict(self) -> "JsonDict": d = super().error_dict() d["soft_logout"] = self._soft_logout return d class ResourceLimitError(SynapseError): """ Any error raised when there is a problem with resource usage. For instance, the monthly active user limit for the server has been exceeded """ def __init__( self, code: int, msg: str, errcode: str = Codes.RESOURCE_LIMIT_EXCEEDED, admin_contact: Optional[str] = None, limit_type: Optional[str] = None, ): self.admin_contact = admin_contact self.limit_type = limit_type super().__init__(code, msg, errcode=errcode) def error_dict(self) -> "JsonDict": return cs_error( self.msg, self.errcode, admin_contact=self.admin_contact, limit_type=self.limit_type, ) class EventSizeError(SynapseError): """An error raised when an event is too big.""" def __init__(self, msg: str): super().__init__(413, msg, Codes.TOO_LARGE) class LoginError(SynapseError): """An error raised when there was a problem logging in.""" class StoreError(SynapseError): """An error raised when there was a problem storing some data.""" class InvalidCaptchaError(SynapseError): def __init__( self, code: int = 400, msg: str = "Invalid captcha.", error_url: Optional[str] = None, errcode: str = Codes.CAPTCHA_INVALID, ): super().__init__(code, msg, errcode) self.error_url = error_url def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode, error_url=self.error_url) class LimitExceededError(SynapseError): """A client has sent too many requests and is being throttled.""" def __init__( self, code: int = 429, msg: str = "Too Many Requests", retry_after_ms: Optional[int] = None, errcode: str = Codes.LIMIT_EXCEEDED, ): super().__init__(code, msg, errcode) self.retry_after_ms = retry_after_ms def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode, retry_after_ms=self.retry_after_ms) class RoomKeysVersionError(SynapseError): """A client has tried to upload to a non-current version of the room_keys store""" def __init__(self, current_version: str): """ Args: current_version: the current version of the store they should have used """ super().__init__(403, "Wrong room_keys version", Codes.WRONG_ROOM_KEYS_VERSION) self.current_version = current_version def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode, current_version=self.current_version) class UnsupportedRoomVersionError(SynapseError): """The client's request to create a room used a room version that the server does not support.""" def __init__(self, msg: str = "Homeserver does not support this room version"): super().__init__( code=400, msg=msg, errcode=Codes.UNSUPPORTED_ROOM_VERSION, ) class ThreepidValidationError(SynapseError): """An error raised when there was a problem authorising an event.""" def __init__(self, msg: str, errcode: str = Codes.FORBIDDEN): super().__init__(400, msg, errcode) class IncompatibleRoomVersionError(SynapseError): """A server is trying to join a room whose version it does not support. Unlike UnsupportedRoomVersionError, it is specific to the case of the make_join failing. """ def __init__(self, room_version: str): super().__init__( code=400, msg="Your homeserver does not support the features required to " "interact with this room", errcode=Codes.INCOMPATIBLE_ROOM_VERSION, ) self._room_version = room_version def error_dict(self) -> "JsonDict": return cs_error(self.msg, self.errcode, room_version=self._room_version) class PasswordRefusedError(SynapseError): """A password has been refused, either during password reset/change or registration.""" def __init__( self, msg: str = "This password doesn't comply with the server's policy", errcode: str = Codes.WEAK_PASSWORD, ): super().__init__( code=400, msg=msg, errcode=errcode, ) class RequestSendFailed(RuntimeError): """Sending a HTTP request over federation failed due to not being able to talk to the remote server for some reason. This exception is used to differentiate "expected" errors that arise due to networking (e.g. DNS failures, connection timeouts etc), versus unexpected errors (like programming errors). """ def __init__(self, inner_exception: BaseException, can_retry: bool): super().__init__( "Failed to send request: %s: %s" % (type(inner_exception).__name__, inner_exception) ) self.inner_exception = inner_exception self.can_retry = can_retry def cs_error(msg: str, code: str = Codes.UNKNOWN, **kwargs: Any) -> "JsonDict": """Utility method for constructing an error response for client-server interactions. Args: msg: The error message. code: The error code. kwargs: Additional keys to add to the response. Returns: A dict representing the error response JSON. """ err = {"error": msg, "errcode": code} for key, value in kwargs.items(): err[key] = value return err class FederationError(RuntimeError): """This class is used to inform remote homeservers about erroneous PDUs they sent us. FATAL: The remote server could not interpret the source event. (e.g., it was missing a required field) ERROR: The remote server interpreted the event, but it failed some other check (e.g. auth) WARN: The remote server accepted the event, but believes some part of it is wrong (e.g., it referred to an invalid event) """ def __init__( self, level: str, code: int, reason: str, affected: str, source: Optional[str] = None, ): if level not in ["FATAL", "ERROR", "WARN"]: raise ValueError("Level is not valid: %s" % (level,)) self.level = level self.code = code self.reason = reason self.affected = affected self.source = source msg = "%s %s: %s" % (level, code, reason) super().__init__(msg) def get_dict(self) -> "JsonDict": return { "level": self.level, "code": self.code, "reason": self.reason, "affected": self.affected, "source": self.source if self.source else self.affected, } class HttpResponseException(CodeMessageException): """ Represents an HTTP-level failure of an outbound request Attributes: response: body of response """ def __init__(self, code: int, msg: str, response: bytes): """ Args: code: HTTP status code msg: reason phrase from HTTP response status line response: body of response """ super().__init__(code, msg) self.response = response def to_synapse_error(self) -> SynapseError: """Make a SynapseError based on an HTTPResponseException This is useful when a proxied request has failed, and we need to decide how to map the failure onto a matrix error to send back to the client. An attempt is made to parse the body of the http response as a matrix error. If that succeeds, the errcode and error message from the body are used as the errcode and error message in the new synapse error. Otherwise, the errcode is set to M_UNKNOWN, and the error message is set to the reason code from the HTTP response. Returns: SynapseError: """ # try to parse the body as json, to get better errcode/msg, but # default to M_UNKNOWN with the HTTP status as the error text try: j = json_decoder.decode(self.response.decode("utf-8")) except ValueError: j = {} if not isinstance(j, dict): j = {} errcode = j.pop("errcode", Codes.UNKNOWN) errmsg = j.pop("error", self.msg) return ProxiedRequestError(self.code, errmsg, errcode, j) class ShadowBanError(Exception): """ Raised when a shadow-banned user attempts to perform an action. This should be caught and a proper "fake" success response sent to the user. """ class ModuleFailedException(Exception): """ Raised when a module API callback fails, for example because it raised an exception. """ synapse-1.53.0/synapse/api/filtering.py000066400000000000000000000435461420514467300200740ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2018-2019 New Vector Ltd # Copyright 2019-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json from typing import ( TYPE_CHECKING, Awaitable, Callable, Dict, Iterable, List, Optional, Set, TypeVar, Union, ) import jsonschema from jsonschema import FormatChecker from synapse.api.constants import EventContentFields from synapse.api.errors import SynapseError from synapse.api.presence import UserPresenceState from synapse.events import EventBase from synapse.types import JsonDict, RoomID, UserID if TYPE_CHECKING: from synapse.server import HomeServer FILTER_SCHEMA = { "additionalProperties": False, "type": "object", "properties": { "limit": {"type": "number"}, "senders": {"$ref": "#/definitions/user_id_array"}, "not_senders": {"$ref": "#/definitions/user_id_array"}, # TODO: We don't limit event type values but we probably should... # check types are valid event types "types": {"type": "array", "items": {"type": "string"}}, "not_types": {"type": "array", "items": {"type": "string"}}, }, } ROOM_FILTER_SCHEMA = { "additionalProperties": False, "type": "object", "properties": { "not_rooms": {"$ref": "#/definitions/room_id_array"}, "rooms": {"$ref": "#/definitions/room_id_array"}, "ephemeral": {"$ref": "#/definitions/room_event_filter"}, "include_leave": {"type": "boolean"}, "state": {"$ref": "#/definitions/room_event_filter"}, "timeline": {"$ref": "#/definitions/room_event_filter"}, "account_data": {"$ref": "#/definitions/room_event_filter"}, }, } ROOM_EVENT_FILTER_SCHEMA = { "additionalProperties": False, "type": "object", "properties": { "limit": {"type": "number"}, "senders": {"$ref": "#/definitions/user_id_array"}, "not_senders": {"$ref": "#/definitions/user_id_array"}, "types": {"type": "array", "items": {"type": "string"}}, "not_types": {"type": "array", "items": {"type": "string"}}, "rooms": {"$ref": "#/definitions/room_id_array"}, "not_rooms": {"$ref": "#/definitions/room_id_array"}, "contains_url": {"type": "boolean"}, "lazy_load_members": {"type": "boolean"}, "include_redundant_members": {"type": "boolean"}, # Include or exclude events with the provided labels. # cf https://github.com/matrix-org/matrix-doc/pull/2326 "org.matrix.labels": {"type": "array", "items": {"type": "string"}}, "org.matrix.not_labels": {"type": "array", "items": {"type": "string"}}, # MSC3440, filtering by event relations. "io.element.relation_senders": {"type": "array", "items": {"type": "string"}}, "io.element.relation_types": {"type": "array", "items": {"type": "string"}}, }, } USER_ID_ARRAY_SCHEMA = { "type": "array", "items": {"type": "string", "format": "matrix_user_id"}, } ROOM_ID_ARRAY_SCHEMA = { "type": "array", "items": {"type": "string", "format": "matrix_room_id"}, } USER_FILTER_SCHEMA = { "$schema": "http://json-schema.org/draft-04/schema#", "description": "schema for a Sync filter", "type": "object", "definitions": { "room_id_array": ROOM_ID_ARRAY_SCHEMA, "user_id_array": USER_ID_ARRAY_SCHEMA, "filter": FILTER_SCHEMA, "room_filter": ROOM_FILTER_SCHEMA, "room_event_filter": ROOM_EVENT_FILTER_SCHEMA, }, "properties": { "presence": {"$ref": "#/definitions/filter"}, "account_data": {"$ref": "#/definitions/filter"}, "room": {"$ref": "#/definitions/room_filter"}, "event_format": {"type": "string", "enum": ["client", "federation"]}, "event_fields": { "type": "array", "items": { "type": "string", # Don't allow '\\' in event field filters. This makes matching # events a lot easier as we can then use a negative lookbehind # assertion to split '\.' If we allowed \\ then it would # incorrectly split '\\.' See synapse.events.utils.serialize_event # # Note that because this is a regular expression, we have to escape # each backslash in the pattern. "pattern": r"^((?!\\\\).)*$", }, }, }, "additionalProperties": False, } @FormatChecker.cls_checks("matrix_room_id") def matrix_room_id_validator(room_id_str: str) -> RoomID: return RoomID.from_string(room_id_str) @FormatChecker.cls_checks("matrix_user_id") def matrix_user_id_validator(user_id_str: str) -> UserID: return UserID.from_string(user_id_str) class Filtering: def __init__(self, hs: "HomeServer"): self._hs = hs self.store = hs.get_datastore() self.DEFAULT_FILTER_COLLECTION = FilterCollection(hs, {}) async def get_user_filter( self, user_localpart: str, filter_id: Union[int, str] ) -> "FilterCollection": result = await self.store.get_user_filter(user_localpart, filter_id) return FilterCollection(self._hs, result) def add_user_filter( self, user_localpart: str, user_filter: JsonDict ) -> Awaitable[int]: self.check_valid_filter(user_filter) return self.store.add_user_filter(user_localpart, user_filter) # TODO(paul): surely we should probably add a delete_user_filter or # replace_user_filter at some point? There's no REST API specified for # them however def check_valid_filter(self, user_filter_json: JsonDict) -> None: """Check if the provided filter is valid. This inspects all definitions contained within the filter. Args: user_filter_json: The filter Raises: SynapseError: If the filter is not valid. """ # NB: Filters are the complete json blobs. "Definitions" are an # individual top-level key e.g. public_user_data. Filters are made of # many definitions. try: jsonschema.validate( user_filter_json, USER_FILTER_SCHEMA, format_checker=FormatChecker() ) except jsonschema.ValidationError as e: raise SynapseError(400, str(e)) # Filters work across events, presence EDUs, and account data. FilterEvent = TypeVar("FilterEvent", EventBase, UserPresenceState, JsonDict) class FilterCollection: def __init__(self, hs: "HomeServer", filter_json: JsonDict): self._filter_json = filter_json room_filter_json = self._filter_json.get("room", {}) self._room_filter = Filter( hs, {k: v for k, v in room_filter_json.items() if k in ("rooms", "not_rooms")}, ) self._room_timeline_filter = Filter(hs, room_filter_json.get("timeline", {})) self._room_state_filter = Filter(hs, room_filter_json.get("state", {})) self._room_ephemeral_filter = Filter(hs, room_filter_json.get("ephemeral", {})) self._room_account_data = Filter(hs, room_filter_json.get("account_data", {})) self._presence_filter = Filter(hs, filter_json.get("presence", {})) self._account_data = Filter(hs, filter_json.get("account_data", {})) self.include_leave = filter_json.get("room", {}).get("include_leave", False) self.event_fields = filter_json.get("event_fields", []) self.event_format = filter_json.get("event_format", "client") def __repr__(self) -> str: return "" % (json.dumps(self._filter_json),) def get_filter_json(self) -> JsonDict: return self._filter_json def timeline_limit(self) -> int: return self._room_timeline_filter.limit def presence_limit(self) -> int: return self._presence_filter.limit def ephemeral_limit(self) -> int: return self._room_ephemeral_filter.limit def lazy_load_members(self) -> bool: return self._room_state_filter.lazy_load_members def include_redundant_members(self) -> bool: return self._room_state_filter.include_redundant_members async def filter_presence( self, events: Iterable[UserPresenceState] ) -> List[UserPresenceState]: return await self._presence_filter.filter(events) async def filter_account_data(self, events: Iterable[JsonDict]) -> List[JsonDict]: return await self._account_data.filter(events) async def filter_room_state(self, events: Iterable[EventBase]) -> List[EventBase]: return await self._room_state_filter.filter( await self._room_filter.filter(events) ) async def filter_room_timeline( self, events: Iterable[EventBase] ) -> List[EventBase]: return await self._room_timeline_filter.filter( await self._room_filter.filter(events) ) async def filter_room_ephemeral(self, events: Iterable[JsonDict]) -> List[JsonDict]: return await self._room_ephemeral_filter.filter( await self._room_filter.filter(events) ) async def filter_room_account_data( self, events: Iterable[JsonDict] ) -> List[JsonDict]: return await self._room_account_data.filter( await self._room_filter.filter(events) ) def blocks_all_presence(self) -> bool: return ( self._presence_filter.filters_all_types() or self._presence_filter.filters_all_senders() ) def blocks_all_room_ephemeral(self) -> bool: return ( self._room_ephemeral_filter.filters_all_types() or self._room_ephemeral_filter.filters_all_senders() or self._room_ephemeral_filter.filters_all_rooms() ) def blocks_all_room_timeline(self) -> bool: return ( self._room_timeline_filter.filters_all_types() or self._room_timeline_filter.filters_all_senders() or self._room_timeline_filter.filters_all_rooms() ) class Filter: def __init__(self, hs: "HomeServer", filter_json: JsonDict): self._hs = hs self._store = hs.get_datastore() self.filter_json = filter_json self.limit = filter_json.get("limit", 10) self.lazy_load_members = filter_json.get("lazy_load_members", False) self.include_redundant_members = filter_json.get( "include_redundant_members", False ) self.types = filter_json.get("types", None) self.not_types = filter_json.get("not_types", []) self.rooms = filter_json.get("rooms", None) self.not_rooms = filter_json.get("not_rooms", []) self.senders = filter_json.get("senders", None) self.not_senders = filter_json.get("not_senders", []) self.contains_url = filter_json.get("contains_url", None) self.labels = filter_json.get("org.matrix.labels", None) self.not_labels = filter_json.get("org.matrix.not_labels", []) # Ideally these would be rejected at the endpoint if they were provided # and not supported, but that would involve modifying the JSON schema # based on the homeserver configuration. if hs.config.experimental.msc3440_enabled: self.relation_senders = self.filter_json.get( "io.element.relation_senders", None ) self.relation_types = self.filter_json.get( "io.element.relation_types", None ) else: self.relation_senders = None self.relation_types = None def filters_all_types(self) -> bool: return "*" in self.not_types def filters_all_senders(self) -> bool: return "*" in self.not_senders def filters_all_rooms(self) -> bool: return "*" in self.not_rooms def _check(self, event: FilterEvent) -> bool: """Checks whether the filter matches the given event. Args: event: The event, account data, or presence to check against this filter. Returns: True if the event matches the filter. """ # We usually get the full "events" as dictionaries coming through, # except for presence which actually gets passed around as its own type. if isinstance(event, UserPresenceState): user_id = event.user_id field_matchers = { "senders": lambda v: user_id == v, "types": lambda v: "m.presence" == v, } return self._check_fields(field_matchers) else: content = event.get("content") # Content is assumed to be a dict below, so ensure it is. This should # always be true for events, but account_data has been allowed to # have non-dict content. if not isinstance(content, dict): content = {} sender = event.get("sender", None) if not sender: # Presence events had their 'sender' in content.user_id, but are # now handled above. We don't know if anything else uses this # form. TODO: Check this and probably remove it. sender = content.get("user_id") room_id = event.get("room_id", None) ev_type = event.get("type", None) # check if there is a string url field in the content for filtering purposes labels = content.get(EventContentFields.LABELS, []) field_matchers = { "rooms": lambda v: room_id == v, "senders": lambda v: sender == v, "types": lambda v: _matches_wildcard(ev_type, v), "labels": lambda v: v in labels, } result = self._check_fields(field_matchers) if not result: return result contains_url_filter = self.contains_url if contains_url_filter is not None: contains_url = isinstance(content.get("url"), str) if contains_url_filter != contains_url: return False return True def _check_fields(self, field_matchers: Dict[str, Callable[[str], bool]]) -> bool: """Checks whether the filter matches the given event fields. Args: field_matchers: A map of attribute name to callable to use for checking particular fields. The attribute name and an inverse (not_) must exist on the Filter. The callable should return true if the event's value matches the filter's value. Returns: True if the event fields match """ for name, match_func in field_matchers.items(): # If the event matches one of the disallowed values, reject it. not_name = "not_%s" % (name,) disallowed_values = getattr(self, not_name) if any(map(match_func, disallowed_values)): return False # Other the event does not match at least one of the allowed values, # reject it. allowed_values = getattr(self, name) if allowed_values is not None: if not any(map(match_func, allowed_values)): return False # Otherwise, accept it. return True def filter_rooms(self, room_ids: Iterable[str]) -> Set[str]: """Apply the 'rooms' filter to a given list of rooms. Args: room_ids: A list of room_ids. Returns: A list of room_ids that match the filter """ room_ids = set(room_ids) disallowed_rooms = set(self.not_rooms) room_ids -= disallowed_rooms allowed_rooms = self.rooms if allowed_rooms is not None: room_ids &= set(allowed_rooms) return room_ids async def _check_event_relations( self, events: Iterable[FilterEvent] ) -> List[FilterEvent]: # The event IDs to check, mypy doesn't understand the ifinstance check. event_ids = [event.event_id for event in events if isinstance(event, EventBase)] # type: ignore[attr-defined] event_ids_to_keep = set( await self._store.events_have_relations( event_ids, self.relation_senders, self.relation_types ) ) return [ event for event in events if not isinstance(event, EventBase) or event.event_id in event_ids_to_keep ] async def filter(self, events: Iterable[FilterEvent]) -> List[FilterEvent]: result = [event for event in events if self._check(event)] if self.relation_senders or self.relation_types: return await self._check_event_relations(result) return result def with_room_ids(self, room_ids: Iterable[str]) -> "Filter": """Returns a new filter with the given room IDs appended. Args: room_ids: The room_ids to add Returns: filter: A new filter including the given rooms and the old filter's rooms. """ newFilter = Filter(self._hs, self.filter_json) newFilter.rooms += room_ids return newFilter def _matches_wildcard(actual_value: Optional[str], filter_value: str) -> bool: if filter_value.endswith("*") and isinstance(actual_value, str): type_prefix = filter_value[:-1] return actual_value.startswith(type_prefix) else: return actual_value == filter_value synapse-1.53.0/synapse/api/presence.py000066400000000000000000000041361420514467300177050ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Any, Optional import attr from synapse.api.constants import PresenceState from synapse.types import JsonDict @attr.s(slots=True, frozen=True, auto_attribs=True) class UserPresenceState: """Represents the current presence state of the user. user_id last_active: Time in msec that the user last interacted with server. last_federation_update: Time in msec since either a) we sent a presence update to other servers or b) we received a presence update, depending on if is a local user or not. last_user_sync: Time in msec that the user last *completed* a sync (or event stream). status_msg: User set status message. """ user_id: str state: str last_active_ts: int last_federation_update_ts: int last_user_sync_ts: int status_msg: Optional[str] currently_active: bool def as_dict(self) -> JsonDict: return attr.asdict(self) @staticmethod def from_dict(d: JsonDict) -> "UserPresenceState": return UserPresenceState(**d) def copy_and_replace(self, **kwargs: Any) -> "UserPresenceState": return attr.evolve(self, **kwargs) @classmethod def default(cls, user_id: str) -> "UserPresenceState": """Returns a default presence state.""" return cls( user_id=user_id, state=PresenceState.OFFLINE, last_active_ts=0, last_federation_update_ts=0, last_user_sync_ts=0, status_msg=None, currently_active=False, ) synapse-1.53.0/synapse/api/ratelimiting.py000066400000000000000000000322751420514467300205760ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from collections import OrderedDict from typing import Hashable, Optional, Tuple from synapse.api.errors import LimitExceededError from synapse.config.ratelimiting import RateLimitConfig from synapse.storage.databases.main import DataStore from synapse.types import Requester from synapse.util import Clock class Ratelimiter: """ Ratelimit actions marked by arbitrary keys. Args: clock: A homeserver clock, for retrieving the current time rate_hz: The long term number of actions that can be performed in a second. burst_count: How many actions that can be performed before being limited. """ def __init__( self, store: DataStore, clock: Clock, rate_hz: float, burst_count: int ): self.clock = clock self.rate_hz = rate_hz self.burst_count = burst_count self.store = store # A ordered dictionary keeping track of actions, when they were last # performed and how often. Each entry is a mapping from a key of arbitrary type # to a tuple representing: # * How many times an action has occurred since a point in time # * The point in time # * The rate_hz of this particular entry. This can vary per request self.actions: OrderedDict[Hashable, Tuple[float, float, float]] = OrderedDict() async def can_do_action( self, requester: Optional[Requester], key: Optional[Hashable] = None, rate_hz: Optional[float] = None, burst_count: Optional[int] = None, update: bool = True, n_actions: int = 1, _time_now_s: Optional[float] = None, ) -> Tuple[bool, float]: """Can the entity (e.g. user or IP address) perform the action? Checks if the user has ratelimiting disabled in the database by looking for null/zero values in the `ratelimit_override` table. (Non-zero values aren't honoured, as they're specific to the event sending ratelimiter, rather than all ratelimiters) Args: requester: The requester that is doing the action, if any. Used to check if the user has ratelimits disabled in the database. key: An arbitrary key used to classify an action. Defaults to the requester's user ID. rate_hz: The long term number of actions that can be performed in a second. Overrides the value set during instantiation if set. burst_count: How many actions that can be performed before being limited. Overrides the value set during instantiation if set. update: Whether to count this check as performing the action n_actions: The number of times the user wants to do this action. If the user cannot do all of the actions, the user's action count is not incremented at all. _time_now_s: The current time. Optional, defaults to the current time according to self.clock. Only used by tests. Returns: A tuple containing: * A bool indicating if they can perform the action now * The reactor timestamp for when the action can be performed next. -1 if rate_hz is less than or equal to zero """ if key is None: if not requester: raise ValueError("Must supply at least one of `requester` or `key`") key = requester.user.to_string() if requester: # Disable rate limiting of users belonging to any AS that is configured # not to be rate limited in its registration file (rate_limited: true|false). if requester.app_service and not requester.app_service.is_rate_limited(): return True, -1.0 # Check if ratelimiting has been disabled for the user. # # Note that we don't use the returned rate/burst count, as the table # is specifically for the event sending ratelimiter. Instead, we # only use it to (somewhat cheekily) infer whether the user should # be subject to any rate limiting or not. override = await self.store.get_ratelimit_for_user( requester.authenticated_entity ) if override and not override.messages_per_second: return True, -1.0 # Override default values if set time_now_s = _time_now_s if _time_now_s is not None else self.clock.time() rate_hz = rate_hz if rate_hz is not None else self.rate_hz burst_count = burst_count if burst_count is not None else self.burst_count # Remove any expired entries self._prune_message_counts(time_now_s) # Check if there is an existing count entry for this key action_count, time_start, _ = self.actions.get(key, (0.0, time_now_s, 0.0)) # Check whether performing another action is allowed time_delta = time_now_s - time_start performed_count = action_count - time_delta * rate_hz if performed_count < 0: performed_count = 0 time_start = time_now_s # This check would be easier read as performed_count + n_actions > burst_count, # but performed_count might be a very precise float (with lots of numbers # following the point) in which case Python might round it up when adding it to # n_actions. Writing it this way ensures it doesn't happen. if performed_count > burst_count - n_actions: # Deny, we have exceeded our burst count allowed = False else: # We haven't reached our limit yet allowed = True action_count = performed_count + n_actions if update: self.actions[key] = (action_count, time_start, rate_hz) if rate_hz > 0: # Find out when the count of existing actions expires time_allowed = time_start + (action_count - burst_count + 1) / rate_hz # Don't give back a time in the past if time_allowed < time_now_s: time_allowed = time_now_s else: # XXX: Why is this -1? This seems to only be used in # self.ratelimit. I guess so that clients get a time in the past and don't # feel afraid to try again immediately time_allowed = -1 return allowed, time_allowed def _prune_message_counts(self, time_now_s: float) -> None: """Remove message count entries that have not exceeded their defined rate_hz limit Args: time_now_s: The current time """ # We create a copy of the key list here as the dictionary is modified during # the loop for key in list(self.actions.keys()): action_count, time_start, rate_hz = self.actions[key] # Rate limit = "seconds since we started limiting this action" * rate_hz # If this limit has not been exceeded, wipe our record of this action time_delta = time_now_s - time_start if action_count - time_delta * rate_hz > 0: continue else: del self.actions[key] async def ratelimit( self, requester: Optional[Requester], key: Optional[Hashable] = None, rate_hz: Optional[float] = None, burst_count: Optional[int] = None, update: bool = True, n_actions: int = 1, _time_now_s: Optional[float] = None, ) -> None: """Checks if an action can be performed. If not, raises a LimitExceededError Checks if the user has ratelimiting disabled in the database by looking for null/zero values in the `ratelimit_override` table. (Non-zero values aren't honoured, as they're specific to the event sending ratelimiter, rather than all ratelimiters) Args: requester: The requester that is doing the action, if any. Used to check for if the user has ratelimits disabled. key: An arbitrary key used to classify an action. Defaults to the requester's user ID. rate_hz: The long term number of actions that can be performed in a second. Overrides the value set during instantiation if set. burst_count: How many actions that can be performed before being limited. Overrides the value set during instantiation if set. update: Whether to count this check as performing the action n_actions: The number of times the user wants to do this action. If the user cannot do all of the actions, the user's action count is not incremented at all. _time_now_s: The current time. Optional, defaults to the current time according to self.clock. Only used by tests. Raises: LimitExceededError: If an action could not be performed, along with the time in milliseconds until the action can be performed again """ time_now_s = _time_now_s if _time_now_s is not None else self.clock.time() allowed, time_allowed = await self.can_do_action( requester, key, rate_hz=rate_hz, burst_count=burst_count, update=update, n_actions=n_actions, _time_now_s=time_now_s, ) if not allowed: raise LimitExceededError( retry_after_ms=int(1000 * (time_allowed - time_now_s)) ) class RequestRatelimiter: def __init__( self, store: DataStore, clock: Clock, rc_message: RateLimitConfig, rc_admin_redaction: Optional[RateLimitConfig], ): self.store = store self.clock = clock # The rate_hz and burst_count are overridden on a per-user basis self.request_ratelimiter = Ratelimiter( store=self.store, clock=self.clock, rate_hz=0, burst_count=0 ) self._rc_message = rc_message # Check whether ratelimiting room admin message redaction is enabled # by the presence of rate limits in the config if rc_admin_redaction: self.admin_redaction_ratelimiter: Optional[Ratelimiter] = Ratelimiter( store=self.store, clock=self.clock, rate_hz=rc_admin_redaction.per_second, burst_count=rc_admin_redaction.burst_count, ) else: self.admin_redaction_ratelimiter = None async def ratelimit( self, requester: Requester, update: bool = True, is_admin_redaction: bool = False, ) -> None: """Ratelimits requests. Args: requester update: Whether to record that a request is being processed. Set to False when doing multiple checks for one request (e.g. to check up front if we would reject the request), and set to True for the last call for a given request. is_admin_redaction: Whether this is a room admin/moderator redacting an event. If so then we may apply different ratelimits depending on config. Raises: LimitExceededError if the request should be ratelimited """ user_id = requester.user.to_string() # The AS user itself is never rate limited. app_service = self.store.get_app_service_by_user_id(user_id) if app_service is not None: return # do not ratelimit app service senders messages_per_second = self._rc_message.per_second burst_count = self._rc_message.burst_count # Check if there is a per user override in the DB. override = await self.store.get_ratelimit_for_user(user_id) if override: # If overridden with a null Hz then ratelimiting has been entirely # disabled for the user if not override.messages_per_second: return messages_per_second = override.messages_per_second burst_count = override.burst_count if is_admin_redaction and self.admin_redaction_ratelimiter: # If we have separate config for admin redactions, use a separate # ratelimiter as to not have user_ids clash await self.admin_redaction_ratelimiter.ratelimit(requester, update=update) else: # Override rate and burst count per-user await self.request_ratelimiter.ratelimit( requester, rate_hz=messages_per_second, burst_count=burst_count, update=update, ) synapse-1.53.0/synapse/api/room_versions.py000066400000000000000000000235021420514467300210030ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Callable, Dict, Optional import attr class EventFormatVersions: """This is an internal enum for tracking the version of the event format, independently from the room version. """ V1 = 1 # $id:server event id format V2 = 2 # MSC1659-style $hash event id format: introduced for room v3 V3 = 3 # MSC1884-style $hash format: introduced for room v4 KNOWN_EVENT_FORMAT_VERSIONS = { EventFormatVersions.V1, EventFormatVersions.V2, EventFormatVersions.V3, } class StateResolutionVersions: """Enum to identify the state resolution algorithms""" V1 = 1 # room v1 state res V2 = 2 # MSC1442 state res: room v2 and later class RoomDisposition: STABLE = "stable" UNSTABLE = "unstable" @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomVersion: """An object which describes the unique attributes of a room version.""" identifier: str # the identifier for this version disposition: str # one of the RoomDispositions event_format: int # one of the EventFormatVersions state_res: int # one of the StateResolutionVersions enforce_key_validity: bool # Before MSC2432, m.room.aliases had special auth rules and redaction rules special_case_aliases_auth: bool # Strictly enforce canonicaljson, do not allow: # * Integers outside the range of [-2 ^ 53 + 1, 2 ^ 53 - 1] # * Floats # * NaN, Infinity, -Infinity strict_canonicaljson: bool # MSC2209: Check 'notifications' key while verifying # m.room.power_levels auth rules. limit_notifications_power_levels: bool # MSC2174/MSC2176: Apply updated redaction rules algorithm. msc2176_redaction_rules: bool # MSC3083: Support the 'restricted' join_rule. msc3083_join_rules: bool # MSC3375: Support for the proper redaction rules for MSC3083. This mustn't # be enabled if MSC3083 is not. msc3375_redaction_rules: bool # MSC2403: Allows join_rules to be set to 'knock', changes auth rules to allow sending # m.room.membership event with membership 'knock'. msc2403_knocking: bool # MSC2716: Adds m.room.power_levels -> content.historical field to control # whether "insertion", "chunk", "marker" events can be sent msc2716_historical: bool # MSC2716: Adds support for redacting "insertion", "chunk", and "marker" events msc2716_redactions: bool class RoomVersions: V1 = RoomVersion( "1", RoomDisposition.STABLE, EventFormatVersions.V1, StateResolutionVersions.V1, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) V2 = RoomVersion( "2", RoomDisposition.STABLE, EventFormatVersions.V1, StateResolutionVersions.V2, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) V3 = RoomVersion( "3", RoomDisposition.STABLE, EventFormatVersions.V2, StateResolutionVersions.V2, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) V4 = RoomVersion( "4", RoomDisposition.STABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) V5 = RoomVersion( "5", RoomDisposition.STABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) V6 = RoomVersion( "6", RoomDisposition.STABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) MSC2176 = RoomVersion( "org.matrix.msc2176", RoomDisposition.UNSTABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, msc2176_redaction_rules=True, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=False, msc2716_historical=False, msc2716_redactions=False, ) V7 = RoomVersion( "7", RoomDisposition.STABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=True, msc2716_historical=False, msc2716_redactions=False, ) V8 = RoomVersion( "8", RoomDisposition.STABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, msc2176_redaction_rules=False, msc3083_join_rules=True, msc3375_redaction_rules=False, msc2403_knocking=True, msc2716_historical=False, msc2716_redactions=False, ) V9 = RoomVersion( "9", RoomDisposition.STABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, msc2176_redaction_rules=False, msc3083_join_rules=True, msc3375_redaction_rules=True, msc2403_knocking=True, msc2716_historical=False, msc2716_redactions=False, ) MSC2716v3 = RoomVersion( "org.matrix.msc2716v3", RoomDisposition.UNSTABLE, EventFormatVersions.V3, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, msc2176_redaction_rules=False, msc3083_join_rules=False, msc3375_redaction_rules=False, msc2403_knocking=True, msc2716_historical=True, msc2716_redactions=True, ) KNOWN_ROOM_VERSIONS: Dict[str, RoomVersion] = { v.identifier: v for v in ( RoomVersions.V1, RoomVersions.V2, RoomVersions.V3, RoomVersions.V4, RoomVersions.V5, RoomVersions.V6, RoomVersions.MSC2176, RoomVersions.V7, RoomVersions.V8, RoomVersions.V9, RoomVersions.MSC2716v3, ) } @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomVersionCapability: """An object which describes the unique attributes of a room version.""" identifier: str # the identifier for this capability preferred_version: Optional[RoomVersion] support_check_lambda: Callable[[RoomVersion], bool] MSC3244_CAPABILITIES = { cap.identifier: { "preferred": cap.preferred_version.identifier if cap.preferred_version is not None else None, "support": [ v.identifier for v in KNOWN_ROOM_VERSIONS.values() if cap.support_check_lambda(v) ], } for cap in ( RoomVersionCapability( "knock", RoomVersions.V7, lambda room_version: room_version.msc2403_knocking, ), RoomVersionCapability( "restricted", RoomVersions.V9, lambda room_version: room_version.msc3083_join_rules, ), ) } synapse-1.53.0/synapse/api/urls.py000066400000000000000000000043171420514467300170670ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains the URL paths to prefix various aspects of the server with. """ import hmac from hashlib import sha256 from urllib.parse import urlencode from synapse.config import ConfigError from synapse.config.homeserver import HomeServerConfig SYNAPSE_CLIENT_API_PREFIX = "/_synapse/client" CLIENT_API_PREFIX = "/_matrix/client" FEDERATION_PREFIX = "/_matrix/federation" FEDERATION_V1_PREFIX = FEDERATION_PREFIX + "/v1" FEDERATION_V2_PREFIX = FEDERATION_PREFIX + "/v2" FEDERATION_UNSTABLE_PREFIX = FEDERATION_PREFIX + "/unstable" STATIC_PREFIX = "/_matrix/static" SERVER_KEY_V2_PREFIX = "/_matrix/key/v2" MEDIA_R0_PREFIX = "/_matrix/media/r0" MEDIA_V3_PREFIX = "/_matrix/media/v3" LEGACY_MEDIA_PREFIX = "/_matrix/media/v1" class ConsentURIBuilder: def __init__(self, hs_config: HomeServerConfig): if hs_config.key.form_secret is None: raise ConfigError("form_secret not set in config") self._hmac_secret = hs_config.key.form_secret.encode("utf-8") self._public_baseurl = hs_config.server.public_baseurl def build_user_consent_uri(self, user_id: str) -> str: """Build a URI which we can give to the user to do their privacy policy consent Args: user_id: mxid or username of user Returns The URI where the user can do consent """ mac = hmac.new( key=self._hmac_secret, msg=user_id.encode("ascii"), digestmod=sha256 ).hexdigest() consent_uri = "%s_matrix/consent?%s" % ( self._public_baseurl, urlencode({"u": user_id, "h": mac}), ) return consent_uri synapse-1.53.0/synapse/app/000077500000000000000000000000001420514467300155325ustar00rootroot00000000000000synapse-1.53.0/synapse/app/__init__.py000066400000000000000000000034361420514467300176510ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import sys from typing import Container from synapse import python_dependencies # noqa: E402 logger = logging.getLogger(__name__) try: python_dependencies.check_requirements() except python_dependencies.DependencyException as e: sys.stderr.writelines( e.message # noqa: B306, DependencyException.message is a property ) sys.exit(1) def check_bind_error( e: Exception, address: str, bind_addresses: Container[str] ) -> None: """ This method checks an exception occurred while binding on 0.0.0.0. If :: is specified in the bind addresses a warning is shown. The exception is still raised otherwise. Binding on both 0.0.0.0 and :: causes an exception on Linux and macOS because :: binds on both IPv4 and IPv6 (as per RFC 3493). When binding on 0.0.0.0 after :: this can safely be ignored. Args: e: Exception that was caught. address: Address on which binding was attempted. bind_addresses: Addresses on which the service listens. """ if address == "0.0.0.0" and "::" in bind_addresses: logger.warning( "Failed to listen on 0.0.0.0, continuing because listening on [::]" ) else: raise e synapse-1.53.0/synapse/app/_base.py000066400000000000000000000474271420514467300171730ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # Copyright 2019-2021 The Matrix.org Foundation C.I.C # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import atexit import gc import logging import os import signal import socket import sys import traceback import warnings from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, Dict, Iterable, List, NoReturn, Optional, Tuple, cast, ) from cryptography.utils import CryptographyDeprecationWarning from matrix_common.versionstring import get_distribution_version_string import twisted from twisted.internet import defer, error, reactor as _reactor from twisted.internet.interfaces import IOpenSSLContextFactory, IReactorSSL, IReactorTCP from twisted.internet.protocol import ServerFactory from twisted.internet.tcp import Port from twisted.logger import LoggingFile, LogLevel from twisted.protocols.tls import TLSMemoryBIOFactory from twisted.python.threadpool import ThreadPool import synapse from synapse.api.constants import MAX_PDU_SIZE from synapse.app import check_bind_error from synapse.app.phone_stats_home import start_phone_stats_home from synapse.config.homeserver import HomeServerConfig from synapse.config.server import ManholeConfig from synapse.crypto import context_factory from synapse.events.presence_router import load_legacy_presence_router from synapse.events.spamcheck import load_legacy_spam_checkers from synapse.events.third_party_rules import load_legacy_third_party_event_rules from synapse.handlers.auth import load_legacy_password_auth_providers from synapse.logging.context import PreserveLoggingContext from synapse.metrics import install_gc_manager, register_threadpool from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.metrics.jemalloc import setup_jemalloc_stats from synapse.types import ISynapseReactor from synapse.util.caches.lrucache import setup_expire_lru_cache_entries from synapse.util.daemonize import daemonize_process from synapse.util.gai_resolver import GAIResolver from synapse.util.rlimit import change_resource_limit if TYPE_CHECKING: from synapse.server import HomeServer # Twisted injects the global reactor to make it easier to import, this confuses # mypy which thinks it is a module. Tell it that it a more proper type. reactor = cast(ISynapseReactor, _reactor) logger = logging.getLogger(__name__) # list of tuples of function, args list, kwargs dict _sighup_callbacks: List[ Tuple[Callable[..., None], Tuple[Any, ...], Dict[str, Any]] ] = [] def register_sighup(func: Callable[..., None], *args: Any, **kwargs: Any) -> None: """ Register a function to be called when a SIGHUP occurs. Args: func: Function to be called when sent a SIGHUP signal. *args, **kwargs: args and kwargs to be passed to the target function. """ _sighup_callbacks.append((func, args, kwargs)) def start_worker_reactor( appname: str, config: HomeServerConfig, run_command: Callable[[], None] = reactor.run, ) -> None: """Run the reactor in the main process Daemonizes if necessary, and then configures some resources, before starting the reactor. Pulls configuration from the 'worker' settings in 'config'. Args: appname: application name which will be sent to syslog config: config object run_command: callable that actually runs the reactor """ logger = logging.getLogger(config.worker.worker_app) start_reactor( appname, soft_file_limit=config.server.soft_file_limit, gc_thresholds=config.server.gc_thresholds, pid_file=config.worker.worker_pid_file, daemonize=config.worker.worker_daemonize, print_pidfile=config.server.print_pidfile, logger=logger, run_command=run_command, ) def start_reactor( appname: str, soft_file_limit: int, gc_thresholds: Optional[Tuple[int, int, int]], pid_file: str, daemonize: bool, print_pidfile: bool, logger: logging.Logger, run_command: Callable[[], None] = reactor.run, ) -> None: """Run the reactor in the main process Daemonizes if necessary, and then configures some resources, before starting the reactor Args: appname: application name which will be sent to syslog soft_file_limit: gc_thresholds: pid_file: name of pid file to write to if daemonize is True daemonize: true to run the reactor in a background process print_pidfile: whether to print the pid file, if daemonize is True logger: logger instance to pass to Daemonize run_command: callable that actually runs the reactor """ def run() -> None: logger.info("Running") setup_jemalloc_stats() change_resource_limit(soft_file_limit) if gc_thresholds: gc.set_threshold(*gc_thresholds) install_gc_manager() run_command() # make sure that we run the reactor with the sentinel log context, # otherwise other PreserveLoggingContext instances will get confused # and complain when they see the logcontext arbitrarily swapping # between the sentinel and `run` logcontexts. # # We also need to drop the logcontext before forking if we're daemonizing, # otherwise the cputime metrics get confused about the per-thread resource usage # appearing to go backwards. with PreserveLoggingContext(): if daemonize: if print_pidfile: print(pid_file) daemonize_process(pid_file, logger) run() def quit_with_error(error_string: str) -> NoReturn: message_lines = error_string.split("\n") line_length = min(max(len(line) for line in message_lines), 80) + 2 sys.stderr.write("*" * line_length + "\n") for line in message_lines: sys.stderr.write(" %s\n" % (line.rstrip(),)) sys.stderr.write("*" * line_length + "\n") sys.exit(1) def handle_startup_exception(e: Exception) -> NoReturn: # Exceptions that occur between setting up the logging and forking or starting # the reactor are written to the logs, followed by a summary to stderr. logger.exception("Exception during startup") quit_with_error( f"Error during initialisation:\n {e}\nThere may be more information in the logs." ) def redirect_stdio_to_logs() -> None: streams = [("stdout", LogLevel.info), ("stderr", LogLevel.error)] for (stream, level) in streams: oldStream = getattr(sys, stream) loggingFile = LoggingFile( logger=twisted.logger.Logger(namespace=stream), level=level, encoding=getattr(oldStream, "encoding", None), ) setattr(sys, stream, loggingFile) print("Redirected stdout/stderr to logs") def register_start(cb: Callable[..., Awaitable], *args: Any, **kwargs: Any) -> None: """Register a callback with the reactor, to be called once it is running This can be used to initialise parts of the system which require an asynchronous setup. Any exception raised by the callback will be printed and logged, and the process will exit. """ async def wrapper() -> None: try: await cb(*args, **kwargs) except Exception: # previously, we used Failure().printTraceback() here, in the hope that # would give better tracebacks than traceback.print_exc(). However, that # doesn't handle chained exceptions (with a __cause__ or __context__) well, # and I *think* the need for Failure() is reduced now that we mostly use # async/await. # Write the exception to both the logs *and* the unredirected stderr, # because people tend to get confused if it only goes to one or the other. # # One problem with this is that if people are using a logging config that # logs to the console (as is common eg under docker), they will get two # copies of the exception. We could maybe try to detect that, but it's # probably a cost we can bear. logger.fatal("Error during startup", exc_info=True) print("Error during startup:", file=sys.__stderr__) traceback.print_exc(file=sys.__stderr__) # it's no use calling sys.exit here, since that just raises a SystemExit # exception which is then caught by the reactor, and everything carries # on as normal. os._exit(1) reactor.callWhenRunning(lambda: defer.ensureDeferred(wrapper())) def listen_metrics(bind_addresses: Iterable[str], port: int) -> None: """ Start Prometheus metrics server. """ from synapse.metrics import RegistryProxy, start_http_server for host in bind_addresses: logger.info("Starting metrics listener on %s:%d", host, port) start_http_server(port, addr=host, registry=RegistryProxy) def listen_manhole( bind_addresses: Collection[str], port: int, manhole_settings: ManholeConfig, manhole_globals: dict, ) -> None: # twisted.conch.manhole 21.1.0 uses "int_from_bytes", which produces a confusing # warning. It's fixed by https://github.com/twisted/twisted/pull/1522), so # suppress the warning for now. warnings.filterwarnings( action="ignore", category=CryptographyDeprecationWarning, message="int_from_bytes is deprecated", ) from synapse.util.manhole import manhole listen_tcp( bind_addresses, port, manhole(settings=manhole_settings, globals=manhole_globals), ) def listen_tcp( bind_addresses: Collection[str], port: int, factory: ServerFactory, reactor: IReactorTCP = reactor, backlog: int = 50, ) -> List[Port]: """ Create a TCP socket for a port and several addresses Returns: list of twisted.internet.tcp.Port listening for TCP connections """ r = [] for address in bind_addresses: try: r.append(reactor.listenTCP(port, factory, backlog, address)) except error.CannotListenError as e: check_bind_error(e, address, bind_addresses) # IReactorTCP returns an object implementing IListeningPort from listenTCP, # but we know it will be a Port instance. return r # type: ignore[return-value] def listen_ssl( bind_addresses: Collection[str], port: int, factory: ServerFactory, context_factory: IOpenSSLContextFactory, reactor: IReactorSSL = reactor, backlog: int = 50, ) -> List[Port]: """ Create an TLS-over-TCP socket for a port and several addresses Returns: list of twisted.internet.tcp.Port listening for TLS connections """ r = [] for address in bind_addresses: try: r.append( reactor.listenSSL(port, factory, context_factory, backlog, address) ) except error.CannotListenError as e: check_bind_error(e, address, bind_addresses) # IReactorSSL incorrectly declares that an int is returned from listenSSL, # it actually returns an object implementing IListeningPort, but we know it # will be a Port instance. return r # type: ignore[return-value] def refresh_certificate(hs: "HomeServer") -> None: """ Refresh the TLS certificates that Synapse is using by re-reading them from disk and updating the TLS context factories to use them. """ if not hs.config.server.has_tls_listener(): return hs.config.tls.read_certificate_from_disk() hs.tls_server_context_factory = context_factory.ServerContextFactory(hs.config) if hs._listening_services: logger.info("Updating context factories...") for i in hs._listening_services: # When you listenSSL, it doesn't make an SSL port but a TCP one with # a TLS wrapping factory around the factory you actually want to get # requests. This factory attribute is public but missing from # Twisted's documentation. if isinstance(i.factory, TLSMemoryBIOFactory): addr = i.getHost() logger.info( "Replacing TLS context factory on [%s]:%i", addr.host, addr.port ) # We want to replace TLS factories with a new one, with the new # TLS configuration. We do this by reaching in and pulling out # the wrappedFactory, and then re-wrapping it. i.factory = TLSMemoryBIOFactory( hs.tls_server_context_factory, False, i.factory.wrappedFactory ) logger.info("Context factories updated.") async def start(hs: "HomeServer") -> None: """ Start a Synapse server or worker. Should be called once the reactor is running. Will start the main HTTP listeners and do some other startup tasks, and then notify systemd. Args: hs: homeserver instance """ reactor = hs.get_reactor() # We want to use a separate thread pool for the resolver so that large # numbers of DNS requests don't starve out other users of the threadpool. resolver_threadpool = ThreadPool(name="gai_resolver") resolver_threadpool.start() reactor.addSystemEventTrigger("during", "shutdown", resolver_threadpool.stop) reactor.installNameResolver( GAIResolver(reactor, getThreadPool=lambda: resolver_threadpool) ) # Register the threadpools with our metrics. register_threadpool("default", reactor.getThreadPool()) register_threadpool("gai_resolver", resolver_threadpool) # Set up the SIGHUP machinery. if hasattr(signal, "SIGHUP"): @wrap_as_background_process("sighup") async def handle_sighup(*args: Any, **kwargs: Any) -> None: # Tell systemd our state, if we're using it. This will silently fail if # we're not using systemd. sdnotify(b"RELOADING=1") for i, args, kwargs in _sighup_callbacks: i(*args, **kwargs) sdnotify(b"READY=1") # We defer running the sighup handlers until next reactor tick. This # is so that we're in a sane state, e.g. flushing the logs may fail # if the sighup happens in the middle of writing a log entry. def run_sighup(*args: Any, **kwargs: Any) -> None: # `callFromThread` should be "signal safe" as well as thread # safe. reactor.callFromThread(handle_sighup, *args, **kwargs) signal.signal(signal.SIGHUP, run_sighup) register_sighup(refresh_certificate, hs) # Load the certificate from disk. refresh_certificate(hs) # Start the tracer synapse.logging.opentracing.init_tracer(hs) # type: ignore[attr-defined] # noqa # Instantiate the modules so they can register their web resources to the module API # before we start the listeners. module_api = hs.get_module_api() for module, config in hs.config.modules.loaded_modules: m = module(config=config, api=module_api) logger.info("Loaded module %s", m) load_legacy_spam_checkers(hs) load_legacy_third_party_event_rules(hs) load_legacy_presence_router(hs) load_legacy_password_auth_providers(hs) # If we've configured an expiry time for caches, start the background job now. setup_expire_lru_cache_entries(hs) # It is now safe to start your Synapse. hs.start_listening() hs.get_datastore().db_pool.start_profiling() hs.get_pusherpool().start() # Log when we start the shut down process. hs.get_reactor().addSystemEventTrigger( "before", "shutdown", logger.info, "Shutting down..." ) setup_sentry(hs) setup_sdnotify(hs) # If background tasks are running on the main process, start collecting the # phone home stats. if hs.config.worker.run_background_tasks: start_phone_stats_home(hs) # We now freeze all allocated objects in the hopes that (almost) # everything currently allocated are things that will be used for the # rest of time. Doing so means less work each GC (hopefully). # # PyPy does not (yet?) implement gc.freeze() if hasattr(gc, "freeze"): gc.collect() gc.freeze() # Speed up shutdowns by freezing all allocated objects. This moves everything # into the permanent generation and excludes them from the final GC. atexit.register(gc.freeze) def setup_sentry(hs: "HomeServer") -> None: """Enable sentry integration, if enabled in configuration""" if not hs.config.metrics.sentry_enabled: return import sentry_sdk sentry_sdk.init( dsn=hs.config.metrics.sentry_dsn, release=get_distribution_version_string("matrix-synapse"), ) # We set some default tags that give some context to this instance with sentry_sdk.configure_scope() as scope: scope.set_tag("matrix_server_name", hs.config.server.server_name) app = ( hs.config.worker.worker_app if hs.config.worker.worker_app else "synapse.app.homeserver" ) name = hs.get_instance_name() scope.set_tag("worker_app", app) scope.set_tag("worker_name", name) def setup_sdnotify(hs: "HomeServer") -> None: """Adds process state hooks to tell systemd what we are up to.""" # Tell systemd our state, if we're using it. This will silently fail if # we're not using systemd. sdnotify(b"READY=1\nMAINPID=%i" % (os.getpid(),)) hs.get_reactor().addSystemEventTrigger( "before", "shutdown", sdnotify, b"STOPPING=1" ) sdnotify_sockaddr = os.getenv("NOTIFY_SOCKET") def sdnotify(state: bytes) -> None: """ Send a notification to systemd, if the NOTIFY_SOCKET env var is set. This function is based on the sdnotify python package, but since it's only a few lines of code, it's easier to duplicate it here than to add a dependency on a package which many OSes don't include as a matter of principle. Args: state: notification to send """ if not isinstance(state, bytes): raise TypeError("sdnotify should be called with a bytes") if not sdnotify_sockaddr: return addr = sdnotify_sockaddr if addr[0] == "@": addr = "\0" + addr[1:] try: with socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) as sock: sock.connect(addr) sock.sendall(state) except Exception as e: # this is a bit surprising, since we don't expect to have a NOTIFY_SOCKET # unless systemd is expecting us to notify it. logger.warning("Unable to send notification to systemd: %s", e) def max_request_body_size(config: HomeServerConfig) -> int: """Get a suitable maximum size for incoming HTTP requests""" # Other than media uploads, the biggest request we expect to see is a fully-loaded # /federation/v1/send request. # # The main thing in such a request is up to 50 PDUs, and up to 100 EDUs. PDUs are # limited to 65536 bytes (possibly slightly more if the sender didn't use canonical # json encoding); there is no specced limit to EDUs (see # https://github.com/matrix-org/matrix-doc/issues/3121). # # in short, we somewhat arbitrarily limit requests to 200 * 64K (about 12.5M) # max_request_size = 200 * MAX_PDU_SIZE # if we have a media repo enabled, we may need to allow larger uploads than that if config.media.can_load_media_repo: max_request_size = max(max_request_size, config.media.max_upload_size) return max_request_size synapse-1.53.0/synapse/app/admin_cmd.py000066400000000000000000000216751420514467300200320ustar00rootroot00000000000000# Copyright 2019 Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import json import logging import os import sys import tempfile from typing import List, Optional from matrix_common.versionstring import get_distribution_version_string from twisted.internet import defer, task import synapse from synapse.app import _base from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig from synapse.config.logger import setup_logging from synapse.events import EventBase from synapse.handlers.admin import ExfiltrationWriter from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.replication.slave.storage.account_data import SlavedAccountDataStore from synapse.replication.slave.storage.appservice import SlavedApplicationServiceStore from synapse.replication.slave.storage.client_ips import SlavedClientIpStore from synapse.replication.slave.storage.deviceinbox import SlavedDeviceInboxStore from synapse.replication.slave.storage.devices import SlavedDeviceStore from synapse.replication.slave.storage.events import SlavedEventStore from synapse.replication.slave.storage.filtering import SlavedFilteringStore from synapse.replication.slave.storage.groups import SlavedGroupServerStore from synapse.replication.slave.storage.push_rule import SlavedPushRuleStore from synapse.replication.slave.storage.receipts import SlavedReceiptsStore from synapse.replication.slave.storage.registration import SlavedRegistrationStore from synapse.server import HomeServer from synapse.storage.databases.main.room import RoomWorkerStore from synapse.types import StateMap from synapse.util.logcontext import LoggingContext logger = logging.getLogger("synapse.app.admin_cmd") class AdminCmdSlavedStore( SlavedReceiptsStore, SlavedAccountDataStore, SlavedApplicationServiceStore, SlavedRegistrationStore, SlavedFilteringStore, SlavedGroupServerStore, SlavedDeviceInboxStore, SlavedDeviceStore, SlavedPushRuleStore, SlavedEventStore, SlavedClientIpStore, BaseSlavedStore, RoomWorkerStore, ): pass class AdminCmdServer(HomeServer): DATASTORE_CLASS = AdminCmdSlavedStore # type: ignore async def export_data_command(hs: HomeServer, args: argparse.Namespace) -> None: """Export data for a user.""" user_id = args.user_id directory = args.output_directory res = await hs.get_admin_handler().export_user_data( user_id, FileExfiltrationWriter(user_id, directory=directory) ) print(res) class FileExfiltrationWriter(ExfiltrationWriter): """An ExfiltrationWriter that writes the users data to a directory. Returns the directory location on completion. Note: This writes to disk on the main reactor thread. Args: user_id: The user whose data is being exfiltrated. directory: The directory to write the data to, if None then will write to a temporary directory. """ def __init__(self, user_id: str, directory: Optional[str] = None): self.user_id = user_id if directory: self.base_directory = directory else: self.base_directory = tempfile.mkdtemp( prefix="synapse-exfiltrate__%s__" % (user_id,) ) os.makedirs(self.base_directory, exist_ok=True) if list(os.listdir(self.base_directory)): raise Exception("Directory must be empty") def write_events(self, room_id: str, events: List[EventBase]) -> None: room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) events_file = os.path.join(room_directory, "events") with open(events_file, "a") as f: for event in events: print(json.dumps(event.get_pdu_json()), file=f) def write_state( self, room_id: str, event_id: str, state: StateMap[EventBase] ) -> None: room_directory = os.path.join(self.base_directory, "rooms", room_id) state_directory = os.path.join(room_directory, "state") os.makedirs(state_directory, exist_ok=True) event_file = os.path.join(state_directory, event_id) with open(event_file, "a") as f: for event in state.values(): print(json.dumps(event.get_pdu_json()), file=f) def write_invite( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: self.write_events(room_id, [event]) # We write the invite state somewhere else as they aren't full events # and are only a subset of the state at the event. room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) invite_state = os.path.join(room_directory, "invite_state") with open(invite_state, "a") as f: for event in state.values(): print(json.dumps(event), file=f) def write_knock( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: self.write_events(room_id, [event]) # We write the knock state somewhere else as they aren't full events # and are only a subset of the state at the event. room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) knock_state = os.path.join(room_directory, "knock_state") with open(knock_state, "a") as f: for event in state.values(): print(json.dumps(event), file=f) def finished(self) -> str: return self.base_directory def start(config_options: List[str]) -> None: parser = argparse.ArgumentParser(description="Synapse Admin Command") HomeServerConfig.add_arguments_to_parser(parser) subparser = parser.add_subparsers( title="Admin Commands", required=True, dest="command", metavar="", help="The admin command to perform.", ) export_data_parser = subparser.add_parser( "export-data", help="Export all data for a user" ) export_data_parser.add_argument("user_id", help="User to extra data from") export_data_parser.add_argument( "--output-directory", action="store", metavar="DIRECTORY", required=False, help="The directory to store the exported data in. Must be empty. Defaults" " to creating a temp directory.", ) export_data_parser.set_defaults(func=export_data_command) try: config, args = HomeServerConfig.load_config_with_parser(parser, config_options) except ConfigError as e: sys.stderr.write("\n" + str(e) + "\n") sys.exit(1) if config.worker.worker_app is not None: assert config.worker.worker_app == "synapse.app.admin_cmd" # Update the config with some basic overrides so that don't have to specify # a full worker config. config.worker.worker_app = "synapse.app.admin_cmd" if not config.worker.worker_daemonize and not config.worker.worker_log_config: # Since we're meant to be run as a "command" let's not redirect stdio # unless we've actually set log config. config.logging.no_redirect_stdio = True # Explicitly disable background processes config.server.update_user_directory = False config.worker.run_background_tasks = False config.worker.start_pushers = False config.worker.pusher_shard_config.instances = [] config.worker.send_federation = False config.worker.federation_shard_config.instances = [] synapse.events.USE_FROZEN_DICTS = config.server.use_frozen_dicts ss = AdminCmdServer( config.server.server_name, config=config, version_string="Synapse/" + get_distribution_version_string("matrix-synapse"), ) setup_logging(ss, config, use_worker_options=True) ss.setup() # We use task.react as the basic run command as it correctly handles tearing # down the reactor when the deferreds resolve and setting the return value. # We also make sure that `_base.start` gets run before we actually run the # command. async def run() -> None: with LoggingContext("command"): await _base.start(ss) await args.func(ss, args) _base.start_worker_reactor( "synapse-admin-cmd", config, run_command=lambda: task.react(lambda _reactor: defer.ensureDeferred(run())), ) if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/appservice.py000066400000000000000000000014101420514467300202410ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/client_reader.py000066400000000000000000000014101420514467300207000ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/event_creator.py000066400000000000000000000014101420514467300207400ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/federation_reader.py000066400000000000000000000014101420514467300215420ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/federation_sender.py000066400000000000000000000014101420514467300215600ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/frontend_proxy.py000066400000000000000000000014101420514467300211600ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/generic_worker.py000066400000000000000000000502341420514467300211150ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import sys from typing import Dict, List, Optional, Tuple from matrix_common.versionstring import get_distribution_version_string from twisted.internet import address from twisted.web.resource import Resource import synapse import synapse.events from synapse.api.errors import HttpResponseException, RequestSendFailed, SynapseError from synapse.api.urls import ( CLIENT_API_PREFIX, FEDERATION_PREFIX, LEGACY_MEDIA_PREFIX, MEDIA_R0_PREFIX, MEDIA_V3_PREFIX, SERVER_KEY_V2_PREFIX, ) from synapse.app import _base from synapse.app._base import ( handle_startup_exception, max_request_body_size, redirect_stdio_to_logs, register_start, ) from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig from synapse.config.logger import setup_logging from synapse.config.server import ListenerConfig from synapse.federation.transport.server import TransportLayerServer from synapse.http.server import JsonResource, OptionsResource from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest, SynapseSite from synapse.logging.context import LoggingContext from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.replication.slave.storage.account_data import SlavedAccountDataStore from synapse.replication.slave.storage.appservice import SlavedApplicationServiceStore from synapse.replication.slave.storage.client_ips import SlavedClientIpStore from synapse.replication.slave.storage.deviceinbox import SlavedDeviceInboxStore from synapse.replication.slave.storage.devices import SlavedDeviceStore from synapse.replication.slave.storage.directory import DirectoryStore from synapse.replication.slave.storage.events import SlavedEventStore from synapse.replication.slave.storage.filtering import SlavedFilteringStore from synapse.replication.slave.storage.groups import SlavedGroupServerStore from synapse.replication.slave.storage.keys import SlavedKeyStore from synapse.replication.slave.storage.profile import SlavedProfileStore from synapse.replication.slave.storage.push_rule import SlavedPushRuleStore from synapse.replication.slave.storage.pushers import SlavedPusherStore from synapse.replication.slave.storage.receipts import SlavedReceiptsStore from synapse.replication.slave.storage.registration import SlavedRegistrationStore from synapse.rest.admin import register_servlets_for_media_repo from synapse.rest.client import ( account_data, events, groups, initial_sync, login, presence, profile, push_rule, read_marker, receipts, room, room_keys, sendtodevice, sync, tags, user_directory, versions, voip, ) from synapse.rest.client._base import client_patterns from synapse.rest.client.account import ThreepidRestServlet from synapse.rest.client.devices import DevicesRestServlet from synapse.rest.client.keys import ( KeyChangesServlet, KeyQueryServlet, OneTimeKeyServlet, ) from synapse.rest.client.register import ( RegisterRestServlet, RegistrationTokenValidityRestServlet, ) from synapse.rest.health import HealthResource from synapse.rest.key.v2 import KeyApiV2Resource from synapse.rest.synapse.client import build_synapse_client_resource_tree from synapse.rest.well_known import well_known_resource from synapse.server import HomeServer from synapse.storage.databases.main.censor_events import CensorEventsStore from synapse.storage.databases.main.client_ips import ClientIpWorkerStore from synapse.storage.databases.main.e2e_room_keys import EndToEndRoomKeyStore from synapse.storage.databases.main.lock import LockStore from synapse.storage.databases.main.media_repository import MediaRepositoryStore from synapse.storage.databases.main.metrics import ServerMetricsStore from synapse.storage.databases.main.monthly_active_users import ( MonthlyActiveUsersWorkerStore, ) from synapse.storage.databases.main.presence import PresenceStore from synapse.storage.databases.main.room import RoomWorkerStore from synapse.storage.databases.main.room_batch import RoomBatchStore from synapse.storage.databases.main.search import SearchStore from synapse.storage.databases.main.session import SessionStore from synapse.storage.databases.main.stats import StatsStore from synapse.storage.databases.main.transactions import TransactionWorkerStore from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore from synapse.storage.databases.main.user_directory import UserDirectoryStore from synapse.types import JsonDict from synapse.util.httpresourcetree import create_resource_tree logger = logging.getLogger("synapse.app.generic_worker") class KeyUploadServlet(RestServlet): """An implementation of the `KeyUploadServlet` that responds to read only requests, but otherwise proxies through to the master instance. """ PATTERNS = client_patterns("/keys/upload(/(?P[^/]+))?$") def __init__(self, hs: HomeServer): """ Args: hs: server """ super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.http_client = hs.get_simple_http_client() self.main_uri = hs.config.worker.worker_main_http_uri async def on_POST( self, request: SynapseRequest, device_id: Optional[str] ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) user_id = requester.user.to_string() body = parse_json_object_from_request(request) if device_id is not None: # passing the device_id here is deprecated; however, we allow it # for now for compatibility with older clients. if requester.device_id is not None and device_id != requester.device_id: logger.warning( "Client uploading keys for a different device " "(logged in as %s, uploading for %s)", requester.device_id, device_id, ) else: device_id = requester.device_id if device_id is None: raise SynapseError( 400, "To upload keys, you must pass device_id when authenticating" ) if body: # They're actually trying to upload something, proxy to main synapse. # Proxy headers from the original request, such as the auth headers # (in case the access token is there) and the original IP / # User-Agent of the request. headers = { header: request.requestHeaders.getRawHeaders(header, []) for header in (b"Authorization", b"User-Agent") } # Add the previous hop to the X-Forwarded-For header. x_forwarded_for = request.requestHeaders.getRawHeaders( b"X-Forwarded-For", [] ) # we use request.client here, since we want the previous hop, not the # original client (as returned by request.getClientAddress()). if isinstance(request.client, (address.IPv4Address, address.IPv6Address)): previous_host = request.client.host.encode("ascii") # If the header exists, add to the comma-separated list of the first # instance of the header. Otherwise, generate a new header. if x_forwarded_for: x_forwarded_for = [x_forwarded_for[0] + b", " + previous_host] x_forwarded_for.extend(x_forwarded_for[1:]) else: x_forwarded_for = [previous_host] headers[b"X-Forwarded-For"] = x_forwarded_for # Replicate the original X-Forwarded-Proto header. Note that # XForwardedForRequest overrides isSecure() to give us the original protocol # used by the client, as opposed to the protocol used by our upstream proxy # - which is what we want here. headers[b"X-Forwarded-Proto"] = [ b"https" if request.isSecure() else b"http" ] try: result = await self.http_client.post_json_get_json( self.main_uri + request.uri.decode("ascii"), body, headers=headers ) except HttpResponseException as e: raise e.to_synapse_error() from e except RequestSendFailed as e: raise SynapseError(502, "Failed to talk to master") from e return 200, result else: # Just interested in counts. result = await self.store.count_e2e_one_time_keys(user_id, device_id) return 200, {"one_time_key_counts": result} class GenericWorkerSlavedStore( # FIXME(#3714): We need to add UserDirectoryStore as we write directly # rather than going via the correct worker. UserDirectoryStore, StatsStore, UIAuthWorkerStore, EndToEndRoomKeyStore, PresenceStore, SlavedDeviceInboxStore, SlavedDeviceStore, SlavedReceiptsStore, SlavedPushRuleStore, SlavedGroupServerStore, SlavedAccountDataStore, SlavedPusherStore, CensorEventsStore, ClientIpWorkerStore, SlavedEventStore, SlavedKeyStore, RoomWorkerStore, RoomBatchStore, DirectoryStore, SlavedApplicationServiceStore, SlavedRegistrationStore, SlavedProfileStore, SlavedClientIpStore, SlavedFilteringStore, MonthlyActiveUsersWorkerStore, MediaRepositoryStore, ServerMetricsStore, SearchStore, TransactionWorkerStore, LockStore, SessionStore, BaseSlavedStore, ): # Properties that multiple storage classes define. Tell mypy what the # expected type is. server_name: str config: HomeServerConfig class GenericWorkerServer(HomeServer): DATASTORE_CLASS = GenericWorkerSlavedStore # type: ignore def _listen_http(self, listener_config: ListenerConfig) -> None: port = listener_config.port bind_addresses = listener_config.bind_addresses assert listener_config.http_options is not None site_tag = listener_config.http_options.tag if site_tag is None: site_tag = str(port) # We always include a health resource. resources: Dict[str, Resource] = {"/health": HealthResource()} for res in listener_config.http_options.resources: for name in res.names: if name == "metrics": resources[METRICS_PREFIX] = MetricsResource(RegistryProxy) elif name == "client": resource = JsonResource(self, canonical_json=False) RegisterRestServlet(self).register(resource) RegistrationTokenValidityRestServlet(self).register(resource) login.register_servlets(self, resource) ThreepidRestServlet(self).register(resource) DevicesRestServlet(self).register(resource) # Read-only KeyUploadServlet(self).register(resource) KeyQueryServlet(self).register(resource) KeyChangesServlet(self).register(resource) OneTimeKeyServlet(self).register(resource) voip.register_servlets(self, resource) push_rule.register_servlets(self, resource) versions.register_servlets(self, resource) profile.register_servlets(self, resource) sync.register_servlets(self, resource) events.register_servlets(self, resource) room.register_servlets(self, resource, is_worker=True) room.register_deprecated_servlets(self, resource) initial_sync.register_servlets(self, resource) room_keys.register_servlets(self, resource) tags.register_servlets(self, resource) account_data.register_servlets(self, resource) receipts.register_servlets(self, resource) read_marker.register_servlets(self, resource) sendtodevice.register_servlets(self, resource) user_directory.register_servlets(self, resource) presence.register_servlets(self, resource) groups.register_servlets(self, resource) resources.update({CLIENT_API_PREFIX: resource}) resources.update(build_synapse_client_resource_tree(self)) resources.update({"/.well-known": well_known_resource(self)}) elif name == "federation": resources.update({FEDERATION_PREFIX: TransportLayerServer(self)}) elif name == "media": if self.config.media.can_load_media_repo: media_repo = self.get_media_repository_resource() # We need to serve the admin servlets for media on the # worker. admin_resource = JsonResource(self, canonical_json=False) register_servlets_for_media_repo(self, admin_resource) resources.update( { MEDIA_R0_PREFIX: media_repo, MEDIA_V3_PREFIX: media_repo, LEGACY_MEDIA_PREFIX: media_repo, "/_synapse/admin": admin_resource, } ) else: logger.warning( "A 'media' listener is configured but the media" " repository is disabled. Ignoring." ) if name == "openid" and "federation" not in res.names: # Only load the openid resource separately if federation resource # is not specified since federation resource includes openid # resource. resources.update( { FEDERATION_PREFIX: TransportLayerServer( self, servlet_groups=["openid"] ) } ) if name in ["keys", "federation"]: resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self) if name == "replication": resources[REPLICATION_PREFIX] = ReplicationRestResource(self) # Attach additional resources registered by modules. resources.update(self._module_web_resources) self._module_web_resources_consumed = True root_resource = create_resource_tree(resources, OptionsResource()) _base.listen_tcp( bind_addresses, port, SynapseSite( "synapse.access.http.%s" % (site_tag,), site_tag, listener_config, root_resource, self.version_string, max_request_body_size=max_request_body_size(self.config), reactor=self.get_reactor(), ), reactor=self.get_reactor(), ) logger.info("Synapse worker now listening on port %d", port) def start_listening(self) -> None: for listener in self.config.worker.worker_listeners: if listener.type == "http": self._listen_http(listener) elif listener.type == "manhole": _base.listen_manhole( listener.bind_addresses, listener.port, manhole_settings=self.config.server.manhole_settings, manhole_globals={"hs": self}, ) elif listener.type == "metrics": if not self.config.metrics.enable_metrics: logger.warning( "Metrics listener configured, but " "enable_metrics is not True!" ) else: _base.listen_metrics(listener.bind_addresses, listener.port) else: logger.warning("Unsupported listener type: %s", listener.type) self.get_tcp_replication().start_replication(self) def start(config_options: List[str]) -> None: try: config = HomeServerConfig.load_config("Synapse worker", config_options) except ConfigError as e: sys.stderr.write("\n" + str(e) + "\n") sys.exit(1) # For backwards compatibility let any of the old app names. assert config.worker.worker_app in ( "synapse.app.appservice", "synapse.app.client_reader", "synapse.app.event_creator", "synapse.app.federation_reader", "synapse.app.federation_sender", "synapse.app.frontend_proxy", "synapse.app.generic_worker", "synapse.app.media_repository", "synapse.app.pusher", "synapse.app.synchrotron", "synapse.app.user_dir", ) if config.worker.worker_app == "synapse.app.appservice": if config.appservice.notify_appservices: sys.stderr.write( "\nThe appservices must be disabled in the main synapse process" "\nbefore they can be run in a separate worker." "\nPlease add ``notify_appservices: false`` to the main config" "\n" ) sys.exit(1) # Force the appservice to start since they will be disabled in the main config config.appservice.notify_appservices = True else: # For other worker types we force this to off. config.appservice.notify_appservices = False if config.worker.worker_app == "synapse.app.user_dir": if config.server.update_user_directory: sys.stderr.write( "\nThe update_user_directory must be disabled in the main synapse process" "\nbefore they can be run in a separate worker." "\nPlease add ``update_user_directory: false`` to the main config" "\n" ) sys.exit(1) # Force the pushers to start since they will be disabled in the main config config.server.update_user_directory = True else: # For other worker types we force this to off. config.server.update_user_directory = False synapse.events.USE_FROZEN_DICTS = config.server.use_frozen_dicts synapse.util.caches.TRACK_MEMORY_USAGE = config.caches.track_memory_usage if config.server.gc_seconds: synapse.metrics.MIN_TIME_BETWEEN_GCS = config.server.gc_seconds hs = GenericWorkerServer( config.server.server_name, config=config, version_string="Synapse/" + get_distribution_version_string("matrix-synapse"), ) setup_logging(hs, config, use_worker_options=True) try: hs.setup() # Ensure the replication streamer is always started in case we write to any # streams. Will no-op if no streams can be written to by this worker. hs.get_replication_streamer() except Exception as e: handle_startup_exception(e) register_start(_base.start, hs) # redirect stdio to the logs, if configured. if not hs.config.logging.no_redirect_stdio: redirect_stdio_to_logs() _base.start_worker_reactor("synapse-generic-worker", config) def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.53.0/synapse/app/homeserver.py000066400000000000000000000367071420514467300203000ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import os import sys from typing import Dict, Iterable, Iterator, List from matrix_common.versionstring import get_distribution_version_string from twisted.internet.tcp import Port from twisted.web.resource import EncodingResourceWrapper, Resource from twisted.web.server import GzipEncoderFactory import synapse import synapse.config.logger from synapse import events from synapse.api.urls import ( CLIENT_API_PREFIX, FEDERATION_PREFIX, LEGACY_MEDIA_PREFIX, MEDIA_R0_PREFIX, MEDIA_V3_PREFIX, SERVER_KEY_V2_PREFIX, STATIC_PREFIX, ) from synapse.app import _base from synapse.app._base import ( handle_startup_exception, listen_ssl, listen_tcp, max_request_body_size, redirect_stdio_to_logs, register_start, ) from synapse.config._base import ConfigError from synapse.config.emailconfig import ThreepidBehaviour from synapse.config.homeserver import HomeServerConfig from synapse.config.server import ListenerConfig from synapse.federation.transport.server import TransportLayerServer from synapse.http.additional_resource import AdditionalResource from synapse.http.server import ( OptionsResource, RootOptionsRedirectResource, StaticResource, ) from synapse.http.site import SynapseSite from synapse.logging.context import LoggingContext from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy from synapse.python_dependencies import check_requirements from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource from synapse.replication.tcp.resource import ReplicationStreamProtocolFactory from synapse.rest import ClientRestResource from synapse.rest.admin import AdminRestResource from synapse.rest.health import HealthResource from synapse.rest.key.v2 import KeyApiV2Resource from synapse.rest.synapse.client import build_synapse_client_resource_tree from synapse.rest.well_known import well_known_resource from synapse.server import HomeServer from synapse.storage import DataStore from synapse.util.httpresourcetree import create_resource_tree from synapse.util.module_loader import load_module logger = logging.getLogger("synapse.app.homeserver") def gz_wrap(r: Resource) -> Resource: return EncodingResourceWrapper(r, [GzipEncoderFactory()]) class SynapseHomeServer(HomeServer): DATASTORE_CLASS = DataStore # type: ignore def _listener_http( self, config: HomeServerConfig, listener_config: ListenerConfig ) -> Iterable[Port]: port = listener_config.port bind_addresses = listener_config.bind_addresses tls = listener_config.tls # Must exist since this is an HTTP listener. assert listener_config.http_options is not None site_tag = listener_config.http_options.tag if site_tag is None: site_tag = str(port) # We always include a health resource. resources: Dict[str, Resource] = {"/health": HealthResource()} for res in listener_config.http_options.resources: for name in res.names: if name == "openid" and "federation" in res.names: # Skip loading openid resource if federation is defined # since federation resource will include openid continue resources.update(self._configure_named_resource(name, res.compress)) additional_resources = listener_config.http_options.additional_resources logger.debug("Configuring additional resources: %r", additional_resources) module_api = self.get_module_api() for path, resmodule in additional_resources.items(): handler_cls, config = load_module( resmodule, ("listeners", site_tag, "additional_resources", "<%s>" % (path,)), ) handler = handler_cls(config, module_api) if isinstance(handler, Resource): resource = handler elif hasattr(handler, "handle_request"): resource = AdditionalResource(self, handler.handle_request) else: raise ConfigError( "additional_resource %s does not implement a known interface" % (resmodule["module"],) ) resources[path] = resource # Attach additional resources registered by modules. resources.update(self._module_web_resources) self._module_web_resources_consumed = True # Try to find something useful to serve at '/': # # 1. Redirect to the web client if it is an HTTP(S) URL. # 2. Redirect to the static "Synapse is running" page. # 3. Do not redirect and use a blank resource. if self.config.server.web_client_location: root_resource: Resource = RootOptionsRedirectResource( self.config.server.web_client_location ) elif STATIC_PREFIX in resources: root_resource = RootOptionsRedirectResource(STATIC_PREFIX) else: root_resource = OptionsResource() site = SynapseSite( "synapse.access.%s.%s" % ("https" if tls else "http", site_tag), site_tag, listener_config, create_resource_tree(resources, root_resource), self.version_string, max_request_body_size=max_request_body_size(self.config), reactor=self.get_reactor(), ) if tls: # refresh_certificate should have been called before this. assert self.tls_server_context_factory is not None ports = listen_ssl( bind_addresses, port, site, self.tls_server_context_factory, reactor=self.get_reactor(), ) logger.info("Synapse now listening on TCP port %d (TLS)", port) else: ports = listen_tcp( bind_addresses, port, site, reactor=self.get_reactor(), ) logger.info("Synapse now listening on TCP port %d", port) return ports def _configure_named_resource( self, name: str, compress: bool = False ) -> Dict[str, Resource]: """Build a resource map for a named resource Args: name: named resource: one of "client", "federation", etc compress: whether to enable gzip compression for this resource Returns: map from path to HTTP resource """ resources: Dict[str, Resource] = {} if name == "client": client_resource: Resource = ClientRestResource(self) if compress: client_resource = gz_wrap(client_resource) resources.update( { CLIENT_API_PREFIX: client_resource, "/.well-known": well_known_resource(self), "/_synapse/admin": AdminRestResource(self), **build_synapse_client_resource_tree(self), } ) if self.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: from synapse.rest.synapse.client.password_reset import ( PasswordResetSubmitTokenResource, ) resources[ "/_synapse/client/password_reset/email/submit_token" ] = PasswordResetSubmitTokenResource(self) if name == "consent": from synapse.rest.consent.consent_resource import ConsentResource consent_resource: Resource = ConsentResource(self) if compress: consent_resource = gz_wrap(consent_resource) resources.update({"/_matrix/consent": consent_resource}) if name == "federation": resources.update({FEDERATION_PREFIX: TransportLayerServer(self)}) if name == "openid": resources.update( { FEDERATION_PREFIX: TransportLayerServer( self, servlet_groups=["openid"] ) } ) if name in ["static", "client"]: resources.update( { STATIC_PREFIX: StaticResource( os.path.join(os.path.dirname(synapse.__file__), "static") ) } ) if name in ["media", "federation", "client"]: if self.config.server.enable_media_repo: media_repo = self.get_media_repository_resource() resources.update( { MEDIA_R0_PREFIX: media_repo, MEDIA_V3_PREFIX: media_repo, LEGACY_MEDIA_PREFIX: media_repo, } ) elif name == "media": raise ConfigError( "'media' resource conflicts with enable_media_repo=False" ) if name in ["keys", "federation"]: resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self) if name == "metrics" and self.config.metrics.enable_metrics: resources[METRICS_PREFIX] = MetricsResource(RegistryProxy) if name == "replication": resources[REPLICATION_PREFIX] = ReplicationRestResource(self) return resources def start_listening(self) -> None: if self.config.redis.redis_enabled: # If redis is enabled we connect via the replication command handler # in the same way as the workers (since we're effectively a client # rather than a server). self.get_tcp_replication().start_replication(self) for listener in self.config.server.listeners: if listener.type == "http": self._listening_services.extend( self._listener_http(self.config, listener) ) elif listener.type == "manhole": _base.listen_manhole( listener.bind_addresses, listener.port, manhole_settings=self.config.server.manhole_settings, manhole_globals={"hs": self}, ) elif listener.type == "replication": services = listen_tcp( listener.bind_addresses, listener.port, ReplicationStreamProtocolFactory(self), ) for s in services: self.get_reactor().addSystemEventTrigger( "before", "shutdown", s.stopListening ) elif listener.type == "metrics": if not self.config.metrics.enable_metrics: logger.warning( "Metrics listener configured, but " "enable_metrics is not True!" ) else: _base.listen_metrics(listener.bind_addresses, listener.port) else: # this shouldn't happen, as the listener type should have been checked # during parsing logger.warning("Unrecognized listener type: %s", listener.type) def setup(config_options: List[str]) -> SynapseHomeServer: """ Args: config_options_options: The options passed to Synapse. Usually `sys.argv[1:]`. Returns: A homeserver instance. """ try: config = HomeServerConfig.load_or_generate_config( "Synapse Homeserver", config_options ) except ConfigError as e: sys.stderr.write("\n") for f in format_config_error(e): sys.stderr.write(f) sys.stderr.write("\n") sys.exit(1) if not config: # If a config isn't returned, and an exception isn't raised, we're just # generating config files and shouldn't try to continue. sys.exit(0) if config.worker.worker_app: raise ConfigError( "You have specified `worker_app` in the config but are attempting to start a non-worker " "instance. Please use `python -m synapse.app.generic_worker` instead (or remove the option if this is the main process)." ) sys.exit(1) events.USE_FROZEN_DICTS = config.server.use_frozen_dicts synapse.util.caches.TRACK_MEMORY_USAGE = config.caches.track_memory_usage if config.server.gc_seconds: synapse.metrics.MIN_TIME_BETWEEN_GCS = config.server.gc_seconds hs = SynapseHomeServer( config.server.server_name, config=config, version_string="Synapse/" + get_distribution_version_string("matrix-synapse"), ) synapse.config.logger.setup_logging(hs, config, use_worker_options=False) logger.info("Setting up server") try: hs.setup() except Exception as e: handle_startup_exception(e) async def start() -> None: # Load the OIDC provider metadatas, if OIDC is enabled. if hs.config.oidc.oidc_enabled: oidc = hs.get_oidc_handler() # Loading the provider metadata also ensures the provider config is valid. await oidc.load_metadata() await _base.start(hs) hs.get_datastore().db_pool.updates.start_doing_background_updates() register_start(start) return hs def format_config_error(e: ConfigError) -> Iterator[str]: """ Formats a config error neatly The idea is to format the immediate error, plus the "causes" of those errors, hopefully in a way that makes sense to the user. For example: Error in configuration at 'oidc_config.user_mapping_provider.config.display_name_template': Failed to parse config for module 'JinjaOidcMappingProvider': invalid jinja template: unexpected end of template, expected 'end of print statement'. Args: e: the error to be formatted Returns: An iterator which yields string fragments to be formatted """ yield "Error in configuration" if e.path: yield " at '%s'" % (".".join(e.path),) yield ":\n %s" % (e.msg,) parent_e = e.__cause__ indent = 1 while parent_e: indent += 1 yield ":\n%s%s" % (" " * indent, str(parent_e)) parent_e = parent_e.__cause__ def run(hs: HomeServer) -> None: _base.start_reactor( "synapse-homeserver", soft_file_limit=hs.config.server.soft_file_limit, gc_thresholds=hs.config.server.gc_thresholds, pid_file=hs.config.server.pid_file, daemonize=hs.config.server.daemonize, print_pidfile=hs.config.server.print_pidfile, logger=logger, ) def main() -> None: with LoggingContext("main"): # check base requirements check_requirements() hs = setup(sys.argv[1:]) # redirect stdio to the logs, if configured. if not hs.config.logging.no_redirect_stdio: redirect_stdio_to_logs() run(hs) if __name__ == "__main__": main() synapse-1.53.0/synapse/app/media_repository.py000066400000000000000000000014101420514467300214560ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/phone_stats_home.py000066400000000000000000000175671420514467300214630ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import math import resource import sys from typing import TYPE_CHECKING, List, Sized, Tuple from prometheus_client import Gauge from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger("synapse.app.homeserver") # Contains the list of processes we will be monitoring # currently either 0 or 1 _stats_process: List[Tuple[int, "resource.struct_rusage"]] = [] # Gauges to expose monthly active user control metrics current_mau_gauge = Gauge("synapse_admin_mau:current", "Current MAU") current_mau_by_service_gauge = Gauge( "synapse_admin_mau_current_mau_by_service", "Current MAU by service", ["app_service"], ) max_mau_gauge = Gauge("synapse_admin_mau:max", "MAU Limit") registered_reserved_users_mau_gauge = Gauge( "synapse_admin_mau:registered_reserved_users", "Registered users with reserved threepids", ) @wrap_as_background_process("phone_stats_home") async def phone_stats_home( hs: "HomeServer", stats: JsonDict, stats_process: List[Tuple[int, "resource.struct_rusage"]] = _stats_process, ) -> None: logger.info("Gathering stats for reporting") now = int(hs.get_clock().time()) # Ensure the homeserver has started. assert hs.start_time is not None uptime = int(now - hs.start_time) if uptime < 0: uptime = 0 # # Performance statistics. Keep this early in the function to maintain reliability of `test_performance_100` test. # old = stats_process[0] new = (now, resource.getrusage(resource.RUSAGE_SELF)) stats_process[0] = new # Get RSS in bytes stats["memory_rss"] = new[1].ru_maxrss # Get CPU time in % of a single core, not % of all cores used_cpu_time = (new[1].ru_utime + new[1].ru_stime) - ( old[1].ru_utime + old[1].ru_stime ) if used_cpu_time == 0 or new[0] == old[0]: stats["cpu_average"] = 0 else: stats["cpu_average"] = math.floor(used_cpu_time / (new[0] - old[0]) * 100) # # General statistics # store = hs.get_datastore() stats["homeserver"] = hs.config.server.server_name stats["server_context"] = hs.config.server.server_context stats["timestamp"] = now stats["uptime_seconds"] = uptime version = sys.version_info stats["python_version"] = "{}.{}.{}".format( version.major, version.minor, version.micro ) stats["total_users"] = await store.count_all_users() total_nonbridged_users = await store.count_nonbridged_users() stats["total_nonbridged_users"] = total_nonbridged_users daily_user_type_results = await store.count_daily_user_type() for name, count in daily_user_type_results.items(): stats["daily_user_type_" + name] = count room_count = await store.get_room_count() stats["total_room_count"] = room_count stats["daily_active_users"] = await store.count_daily_users() stats["monthly_active_users"] = await store.count_monthly_users() daily_active_e2ee_rooms = await store.count_daily_active_e2ee_rooms() stats["daily_active_e2ee_rooms"] = daily_active_e2ee_rooms stats["daily_e2ee_messages"] = await store.count_daily_e2ee_messages() daily_sent_e2ee_messages = await store.count_daily_sent_e2ee_messages() stats["daily_sent_e2ee_messages"] = daily_sent_e2ee_messages stats["daily_active_rooms"] = await store.count_daily_active_rooms() stats["daily_messages"] = await store.count_daily_messages() daily_sent_messages = await store.count_daily_sent_messages() stats["daily_sent_messages"] = daily_sent_messages r30_results = await store.count_r30_users() for name, count in r30_results.items(): stats["r30_users_" + name] = count r30v2_results = await store.count_r30v2_users() for name, count in r30v2_results.items(): stats["r30v2_users_" + name] = count stats["cache_factor"] = hs.config.caches.global_factor stats["event_cache_size"] = hs.config.caches.event_cache_size # # Database version # # This only reports info about the *main* database. stats["database_engine"] = store.db_pool.engine.module.__name__ stats["database_server_version"] = store.db_pool.engine.server_version # # Logging configuration # synapse_logger = logging.getLogger("synapse") log_level = synapse_logger.getEffectiveLevel() stats["log_level"] = logging.getLevelName(log_level) logger.info( "Reporting stats to %s: %s" % (hs.config.metrics.report_stats_endpoint, stats) ) try: await hs.get_proxied_http_client().put_json( hs.config.metrics.report_stats_endpoint, stats ) except Exception as e: logger.warning("Error reporting stats: %s", e) def start_phone_stats_home(hs: "HomeServer") -> None: """ Start the background tasks which report phone home stats. """ clock = hs.get_clock() stats: JsonDict = {} def performance_stats_init() -> None: _stats_process.clear() _stats_process.append( (int(hs.get_clock().time()), resource.getrusage(resource.RUSAGE_SELF)) ) # Rather than update on per session basis, batch up the requests. # If you increase the loop period, the accuracy of user_daily_visits # table will decrease clock.looping_call(hs.get_datastore().generate_user_daily_visits, 5 * 60 * 1000) # monthly active user limiting functionality clock.looping_call(hs.get_datastore().reap_monthly_active_users, 1000 * 60 * 60) hs.get_datastore().reap_monthly_active_users() @wrap_as_background_process("generate_monthly_active_users") async def generate_monthly_active_users() -> None: current_mau_count = 0 current_mau_count_by_service = {} reserved_users: Sized = () store = hs.get_datastore() if hs.config.server.limit_usage_by_mau or hs.config.server.mau_stats_only: current_mau_count = await store.get_monthly_active_count() current_mau_count_by_service = ( await store.get_monthly_active_count_by_service() ) reserved_users = await store.get_registered_reserved_users() current_mau_gauge.set(float(current_mau_count)) for app_service, count in current_mau_count_by_service.items(): current_mau_by_service_gauge.labels(app_service).set(float(count)) registered_reserved_users_mau_gauge.set(float(len(reserved_users))) max_mau_gauge.set(float(hs.config.server.max_mau_value)) if hs.config.server.limit_usage_by_mau or hs.config.server.mau_stats_only: generate_monthly_active_users() clock.looping_call(generate_monthly_active_users, 5 * 60 * 1000) # End of monthly active user settings if hs.config.metrics.report_stats: logger.info("Scheduling stats reporting for 3 hour intervals") clock.looping_call(phone_stats_home, 3 * 60 * 60 * 1000, hs, stats) # We need to defer this init for the cases that we daemonize # otherwise the process ID we get is that of the non-daemon process clock.call_later(0, performance_stats_init) # We wait 5 minutes to send the first set of stats as the server can # be quite busy the first few minutes clock.call_later(5 * 60, phone_stats_home, hs, stats) synapse-1.53.0/synapse/app/pusher.py000066400000000000000000000014101420514467300174060ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/synchrotron.py000066400000000000000000000014101420514467300204700ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/app/user_dir.py000066400000000000000000000014161420514467300177220ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.53.0/synapse/appservice/000077500000000000000000000000001420514467300171135ustar00rootroot00000000000000synapse-1.53.0/synapse/appservice/__init__.py000066400000000000000000000306201420514467300212250ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from enum import Enum from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Pattern import attr from netaddr import IPSet from synapse.api.constants import EventTypes from synapse.events import EventBase from synapse.types import GroupID, JsonDict, UserID, get_domain_from_id from synapse.util.caches.descriptors import _CacheContext, cached if TYPE_CHECKING: from synapse.appservice.api import ApplicationServiceApi from synapse.storage.databases.main import DataStore logger = logging.getLogger(__name__) class ApplicationServiceState(Enum): DOWN = "down" UP = "up" @attr.s(slots=True, frozen=True, auto_attribs=True) class Namespace: exclusive: bool group_id: Optional[str] regex: Pattern[str] class ApplicationService: """Defines an application service. This definition is mostly what is provided to the /register AS API. Provides methods to check if this service is "interested" in events. """ NS_USERS = "users" NS_ALIASES = "aliases" NS_ROOMS = "rooms" # The ordering here is important as it is used to map database values (which # are stored as ints representing the position in this list) to namespace # values. NS_LIST = [NS_USERS, NS_ALIASES, NS_ROOMS] def __init__( self, token: str, hostname: str, id: str, sender: str, url: Optional[str] = None, namespaces: Optional[JsonDict] = None, hs_token: Optional[str] = None, protocols: Optional[Iterable[str]] = None, rate_limited: bool = True, ip_range_whitelist: Optional[IPSet] = None, supports_ephemeral: bool = False, ): self.token = token self.url = ( url.rstrip("/") if isinstance(url, str) else None ) # url must not end with a slash self.hs_token = hs_token self.sender = sender self.server_name = hostname self.namespaces = self._check_namespaces(namespaces) self.id = id self.ip_range_whitelist = ip_range_whitelist self.supports_ephemeral = supports_ephemeral if "|" in self.id: raise Exception("application service ID cannot contain '|' character") # .protocols is a publicly visible field if protocols: self.protocols = set(protocols) else: self.protocols = set() self.rate_limited = rate_limited def _check_namespaces( self, namespaces: Optional[JsonDict] ) -> Dict[str, List[Namespace]]: # Sanity check that it is of the form: # { # users: [ {regex: "[A-z]+.*", exclusive: true}, ...], # aliases: [ {regex: "[A-z]+.*", exclusive: true}, ...], # rooms: [ {regex: "[A-z]+.*", exclusive: true}, ...], # } if namespaces is None: namespaces = {} result: Dict[str, List[Namespace]] = {} for ns in ApplicationService.NS_LIST: result[ns] = [] if ns not in namespaces: continue if not isinstance(namespaces[ns], list): raise ValueError("Bad namespace value for '%s'" % ns) for regex_obj in namespaces[ns]: if not isinstance(regex_obj, dict): raise ValueError("Expected dict regex for ns '%s'" % ns) exclusive = regex_obj.get("exclusive") if not isinstance(exclusive, bool): raise ValueError("Expected bool for 'exclusive' in ns '%s'" % ns) group_id = regex_obj.get("group_id") if group_id: if not isinstance(group_id, str): raise ValueError( "Expected string for 'group_id' in ns '%s'" % ns ) try: GroupID.from_string(group_id) except Exception: raise ValueError( "Expected valid group ID for 'group_id' in ns '%s'" % ns ) if get_domain_from_id(group_id) != self.server_name: raise ValueError( "Expected 'group_id' to be this host in ns '%s'" % ns ) regex = regex_obj.get("regex") if not isinstance(regex, str): raise ValueError("Expected string for 'regex' in ns '%s'" % ns) # Pre-compile regex. result[ns].append(Namespace(exclusive, group_id, re.compile(regex))) return result def _matches_regex( self, namespace_key: str, test_string: str ) -> Optional[Namespace]: for namespace in self.namespaces[namespace_key]: if namespace.regex.match(test_string): return namespace return None def _is_exclusive(self, namespace_key: str, test_string: str) -> bool: namespace = self._matches_regex(namespace_key, test_string) if namespace: return namespace.exclusive return False async def _matches_user(self, event: EventBase, store: "DataStore") -> bool: if self.is_interested_in_user(event.sender): return True # also check m.room.member state key if event.type == EventTypes.Member and self.is_interested_in_user( event.state_key ): return True does_match = await self.matches_user_in_member_list(event.room_id, store) return does_match @cached(num_args=1, cache_context=True) async def matches_user_in_member_list( self, room_id: str, store: "DataStore", cache_context: _CacheContext, ) -> bool: """Check if this service is interested a room based upon it's membership Args: room_id: The room to check. store: The datastore to query. Returns: True if this service would like to know about this room. """ member_list = await store.get_users_in_room( room_id, on_invalidate=cache_context.invalidate ) # check joined member events for user_id in member_list: if self.is_interested_in_user(user_id): return True return False def _matches_room_id(self, event: EventBase) -> bool: if hasattr(event, "room_id"): return self.is_interested_in_room(event.room_id) return False async def _matches_aliases(self, event: EventBase, store: "DataStore") -> bool: alias_list = await store.get_aliases_for_room(event.room_id) for alias in alias_list: if self.is_interested_in_alias(alias): return True return False async def is_interested(self, event: EventBase, store: "DataStore") -> bool: """Check if this service is interested in this event. Args: event: The event to check. store: The datastore to query. Returns: True if this service would like to know about this event. """ # Do cheap checks first if self._matches_room_id(event): return True # This will check the namespaces first before # checking the store, so should be run before _matches_aliases if await self._matches_user(event, store): return True # This will check the store, so should be run last if await self._matches_aliases(event, store): return True return False @cached(num_args=1) async def is_interested_in_presence( self, user_id: UserID, store: "DataStore" ) -> bool: """Check if this service is interested a user's presence Args: user_id: The user to check. store: The datastore to query. Returns: True if this service would like to know about presence for this user. """ # Find all the rooms the sender is in if self.is_interested_in_user(user_id.to_string()): return True room_ids = await store.get_rooms_for_user(user_id.to_string()) # Then find out if the appservice is interested in any of those rooms for room_id in room_ids: if await self.matches_user_in_member_list(room_id, store): return True return False def is_interested_in_user(self, user_id: str) -> bool: return ( bool(self._matches_regex(ApplicationService.NS_USERS, user_id)) or user_id == self.sender ) def is_interested_in_alias(self, alias: str) -> bool: return bool(self._matches_regex(ApplicationService.NS_ALIASES, alias)) def is_interested_in_room(self, room_id: str) -> bool: return bool(self._matches_regex(ApplicationService.NS_ROOMS, room_id)) def is_exclusive_user(self, user_id: str) -> bool: return ( self._is_exclusive(ApplicationService.NS_USERS, user_id) or user_id == self.sender ) def is_interested_in_protocol(self, protocol: str) -> bool: return protocol in self.protocols def is_exclusive_alias(self, alias: str) -> bool: return self._is_exclusive(ApplicationService.NS_ALIASES, alias) def is_exclusive_room(self, room_id: str) -> bool: return self._is_exclusive(ApplicationService.NS_ROOMS, room_id) def get_exclusive_user_regexes(self) -> List[Pattern[str]]: """Get the list of regexes used to determine if a user is exclusively registered by the AS """ return [ namespace.regex for namespace in self.namespaces[ApplicationService.NS_USERS] if namespace.exclusive ] def get_groups_for_user(self, user_id: str) -> Iterable[str]: """Get the groups that this user is associated with by this AS Args: user_id: The ID of the user. Returns: An iterable that yields group_id strings. """ return ( namespace.group_id for namespace in self.namespaces[ApplicationService.NS_USERS] if namespace.group_id and namespace.regex.match(user_id) ) def is_rate_limited(self) -> bool: return self.rate_limited def __str__(self) -> str: # copy dictionary and redact token fields so they don't get logged dict_copy = self.__dict__.copy() dict_copy["token"] = "" dict_copy["hs_token"] = "" return "ApplicationService: %s" % (dict_copy,) class AppServiceTransaction: """Represents an application service transaction.""" def __init__( self, service: ApplicationService, id: int, events: List[EventBase], ephemeral: List[JsonDict], to_device_messages: List[JsonDict], ): self.service = service self.id = id self.events = events self.ephemeral = ephemeral self.to_device_messages = to_device_messages async def send(self, as_api: "ApplicationServiceApi") -> bool: """Sends this transaction using the provided AS API interface. Args: as_api: The API to use to send. Returns: True if the transaction was sent. """ return await as_api.push_bulk( service=self.service, events=self.events, ephemeral=self.ephemeral, to_device_messages=self.to_device_messages, txn_id=self.id, ) async def complete(self, store: "DataStore") -> None: """Completes this transaction as successful. Marks this transaction ID on the application service and removes the transaction contents from the database. Args: store: The database store to operate on. """ await store.complete_appservice_txn(service=self.service, txn_id=self.id) synapse-1.53.0/synapse/appservice/api.py000066400000000000000000000253701420514467300202450ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Tuple from prometheus_client import Counter from synapse.api.constants import EventTypes, Membership, ThirdPartyEntityKind from synapse.api.errors import CodeMessageException from synapse.events import EventBase from synapse.events.utils import serialize_event from synapse.http.client import SimpleHttpClient from synapse.types import JsonDict, ThirdPartyInstanceID from synapse.util.caches.response_cache import ResponseCache if TYPE_CHECKING: from synapse.appservice import ApplicationService from synapse.server import HomeServer logger = logging.getLogger(__name__) sent_transactions_counter = Counter( "synapse_appservice_api_sent_transactions", "Number of /transactions/ requests sent", ["service"], ) failed_transactions_counter = Counter( "synapse_appservice_api_failed_transactions", "Number of /transactions/ requests that failed to send", ["service"], ) sent_events_counter = Counter( "synapse_appservice_api_sent_events", "Number of events sent to the AS", ["service"] ) HOUR_IN_MS = 60 * 60 * 1000 APP_SERVICE_PREFIX = "/_matrix/app/unstable" def _is_valid_3pe_metadata(info: JsonDict) -> bool: if "instances" not in info: return False if not isinstance(info["instances"], list): return False return True def _is_valid_3pe_result(r: JsonDict, field: str) -> bool: if not isinstance(r, dict): return False for k in (field, "protocol"): if k not in r: return False if not isinstance(r[k], str): return False if "fields" not in r: return False fields = r["fields"] if not isinstance(fields, dict): return False return True class ApplicationServiceApi(SimpleHttpClient): """This class manages HS -> AS communications, including querying and pushing. """ def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self.protocol_meta_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "as_protocol_meta", timeout_ms=HOUR_IN_MS ) async def query_user(self, service: "ApplicationService", user_id: str) -> bool: if service.url is None: return False # This is required by the configuration. assert service.hs_token is not None uri = service.url + ("/users/%s" % urllib.parse.quote(user_id)) try: response = await self.get_json(uri, {"access_token": service.hs_token}) if response is not None: # just an empty json object return True except CodeMessageException as e: if e.code == 404: return False logger.warning("query_user to %s received %s", uri, e.code) except Exception as ex: logger.warning("query_user to %s threw exception %s", uri, ex) return False async def query_alias(self, service: "ApplicationService", alias: str) -> bool: if service.url is None: return False # This is required by the configuration. assert service.hs_token is not None uri = service.url + ("/rooms/%s" % urllib.parse.quote(alias)) try: response = await self.get_json(uri, {"access_token": service.hs_token}) if response is not None: # just an empty json object return True except CodeMessageException as e: logger.warning("query_alias to %s received %s", uri, e.code) if e.code == 404: return False except Exception as ex: logger.warning("query_alias to %s threw exception %s", uri, ex) return False async def query_3pe( self, service: "ApplicationService", kind: str, protocol: str, fields: Dict[bytes, List[bytes]], ) -> List[JsonDict]: if kind == ThirdPartyEntityKind.USER: required_field = "userid" elif kind == ThirdPartyEntityKind.LOCATION: required_field = "alias" else: raise ValueError("Unrecognised 'kind' argument %r to query_3pe()", kind) if service.url is None: return [] uri = "%s%s/thirdparty/%s/%s" % ( service.url, APP_SERVICE_PREFIX, kind, urllib.parse.quote(protocol), ) try: response = await self.get_json(uri, fields) if not isinstance(response, list): logger.warning( "query_3pe to %s returned an invalid response %r", uri, response ) return [] ret = [] for r in response: if _is_valid_3pe_result(r, field=required_field): ret.append(r) else: logger.warning( "query_3pe to %s returned an invalid result %r", uri, r ) return ret except Exception as ex: logger.warning("query_3pe to %s threw exception %s", uri, ex) return [] async def get_3pe_protocol( self, service: "ApplicationService", protocol: str ) -> Optional[JsonDict]: if service.url is None: return {} async def _get() -> Optional[JsonDict]: uri = "%s%s/thirdparty/protocol/%s" % ( service.url, APP_SERVICE_PREFIX, urllib.parse.quote(protocol), ) try: info = await self.get_json(uri) if not _is_valid_3pe_metadata(info): logger.warning( "query_3pe_protocol to %s did not return a valid result", uri ) return None for instance in info.get("instances", []): network_id = instance.get("network_id", None) if network_id is not None: instance["instance_id"] = ThirdPartyInstanceID( service.id, network_id ).to_string() return info except Exception as ex: logger.warning("query_3pe_protocol to %s threw exception %s", uri, ex) return None key = (service.id, protocol) return await self.protocol_meta_cache.wrap(key, _get) async def push_bulk( self, service: "ApplicationService", events: List[EventBase], ephemeral: List[JsonDict], to_device_messages: List[JsonDict], txn_id: Optional[int] = None, ) -> bool: """ Push data to an application service. Args: service: The application service to send to. events: The persistent events to send. ephemeral: The ephemeral events to send. to_device_messages: The to-device messages to send. txn_id: An unique ID to assign to this transaction. Application services should deduplicate transactions received with identitical IDs. Returns: True if the task succeeded, False if it failed. """ if service.url is None: return True # This is required by the configuration. assert service.hs_token is not None serialized_events = self._serialize(service, events) if txn_id is None: logger.warning( "push_bulk: Missing txn ID sending events to %s", service.url ) txn_id = 0 uri = service.url + ("/transactions/%s" % urllib.parse.quote(str(txn_id))) # Never send ephemeral events to appservices that do not support it body: Dict[str, List[JsonDict]] = {"events": serialized_events} if service.supports_ephemeral: body.update( { # TODO: Update to stable prefixes once MSC2409 completes FCP merge. "de.sorunome.msc2409.ephemeral": ephemeral, "de.sorunome.msc2409.to_device": to_device_messages, } ) try: await self.put_json( uri=uri, json_body=body, args={"access_token": service.hs_token}, ) if logger.isEnabledFor(logging.DEBUG): logger.debug( "push_bulk to %s succeeded! events=%s", uri, [event.get("event_id") for event in events], ) sent_transactions_counter.labels(service.id).inc() sent_events_counter.labels(service.id).inc(len(serialized_events)) return True except CodeMessageException as e: logger.warning( "push_bulk to %s received code=%s msg=%s", uri, e.code, e.msg, exc_info=logger.isEnabledFor(logging.DEBUG), ) except Exception as ex: logger.warning( "push_bulk to %s threw exception(%s) %s args=%s", uri, type(ex).__name__, ex, ex.args, exc_info=logger.isEnabledFor(logging.DEBUG), ) failed_transactions_counter.labels(service.id).inc() return False def _serialize( self, service: "ApplicationService", events: Iterable[EventBase] ) -> List[JsonDict]: time_now = self.clock.time_msec() return [ serialize_event( e, time_now, as_client_event=True, # If this is an invite or a knock membership event, and we're interested # in this user, then include any stripped state alongside the event. include_stripped_room_state=( e.type == EventTypes.Member and ( e.membership == Membership.INVITE or e.membership == Membership.KNOCK ) and service.is_interested_in_user(e.state_key) ), ) for e in events ] synapse-1.53.0/synapse/appservice/scheduler.py000066400000000000000000000342041420514467300214460ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This module controls the reliability for application service transactions. The nominal flow through this module looks like: __________ 1---ASa[e]-->| Service |--> Queue ASa[f] 2----ASb[e]->| Queuer | 3--ASa[f]--->|__________|-----------+ ASa[e], ASb[e] V -````````- +------------+ |````````|<--StoreTxn-|Transaction | |Database| | Controller |---> SEND TO AS `--------` +------------+ What happens on SEND TO AS depends on the state of the Application Service: - If the AS is marked as DOWN, do nothing. - If the AS is marked as UP, send the transaction. * SUCCESS : Increment where the AS is up to txn-wise and nuke the txn contents from the db. * FAILURE : Marked AS as DOWN and start Recoverer. Recoverer attempts to recover ASes who have died. The flow for this looks like: ,--------------------- backoff++ --------------. V | START ---> Wait exp ------> Get oldest txn ID from ----> FAILURE backoff DB and try to send it ^ |___________ Mark AS as | V UP & quit +---------- YES SUCCESS | | | NO <--- Have more txns? <------ Mark txn success & nuke <-+ from db; incr AS pos. Reset backoff. This is all tied together by the AppServiceScheduler which DIs the required components. """ import logging from typing import ( TYPE_CHECKING, Awaitable, Callable, Collection, Dict, List, Optional, Set, ) from synapse.appservice import ApplicationService, ApplicationServiceState from synapse.appservice.api import ApplicationServiceApi from synapse.events import EventBase from synapse.logging.context import run_in_background from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main import DataStore from synapse.types import JsonDict from synapse.util import Clock if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Maximum number of events to provide in an AS transaction. MAX_PERSISTENT_EVENTS_PER_TRANSACTION = 100 # Maximum number of ephemeral events to provide in an AS transaction. MAX_EPHEMERAL_EVENTS_PER_TRANSACTION = 100 # Maximum number of to-device messages to provide in an AS transaction. MAX_TO_DEVICE_MESSAGES_PER_TRANSACTION = 100 class ApplicationServiceScheduler: """Public facing API for this module. Does the required DI to tie the components together. This also serves as the "event_pool", which in this case is a simple array. """ def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.store = hs.get_datastore() self.as_api = hs.get_application_service_api() self.txn_ctrl = _TransactionController(self.clock, self.store, self.as_api) self.queuer = _ServiceQueuer(self.txn_ctrl, self.clock) async def start(self) -> None: logger.info("Starting appservice scheduler") # check for any DOWN ASes and start recoverers for them. services = await self.store.get_appservices_by_state( ApplicationServiceState.DOWN ) for service in services: self.txn_ctrl.start_recoverer(service) def enqueue_for_appservice( self, appservice: ApplicationService, events: Optional[Collection[EventBase]] = None, ephemeral: Optional[Collection[JsonDict]] = None, to_device_messages: Optional[Collection[JsonDict]] = None, ) -> None: """ Enqueue some data to be sent off to an application service. Args: appservice: The application service to create and send a transaction to. events: The persistent room events to send. ephemeral: The ephemeral events to send. to_device_messages: The to-device messages to send. These differ from normal to-device messages sent to clients, as they have 'to_device_id' and 'to_user_id' fields. """ # We purposefully allow this method to run with empty events/ephemeral # collections, so that callers do not need to check iterable size themselves. if not events and not ephemeral and not to_device_messages: return if events: self.queuer.queued_events.setdefault(appservice.id, []).extend(events) if ephemeral: self.queuer.queued_ephemeral.setdefault(appservice.id, []).extend(ephemeral) if to_device_messages: self.queuer.queued_to_device_messages.setdefault(appservice.id, []).extend( to_device_messages ) # Kick off a new application service transaction self.queuer.start_background_request(appservice) class _ServiceQueuer: """Queue of events waiting to be sent to appservices. Groups events into transactions per-appservice, and sends them on to the TransactionController. Makes sure that we only have one transaction in flight per appservice at a given time. """ def __init__(self, txn_ctrl: "_TransactionController", clock: Clock): # dict of {service_id: [events]} self.queued_events: Dict[str, List[EventBase]] = {} # dict of {service_id: [events]} self.queued_ephemeral: Dict[str, List[JsonDict]] = {} # dict of {service_id: [to_device_message_json]} self.queued_to_device_messages: Dict[str, List[JsonDict]] = {} # the appservices which currently have a transaction in flight self.requests_in_flight: Set[str] = set() self.txn_ctrl = txn_ctrl self.clock = clock def start_background_request(self, service: ApplicationService) -> None: # start a sender for this appservice if we don't already have one if service.id in self.requests_in_flight: return run_as_background_process( "as-sender-%s" % (service.id,), self._send_request, service ) async def _send_request(self, service: ApplicationService) -> None: # sanity-check: we shouldn't get here if this service already has a sender # running. assert service.id not in self.requests_in_flight self.requests_in_flight.add(service.id) try: while True: all_events = self.queued_events.get(service.id, []) events = all_events[:MAX_PERSISTENT_EVENTS_PER_TRANSACTION] del all_events[:MAX_PERSISTENT_EVENTS_PER_TRANSACTION] all_events_ephemeral = self.queued_ephemeral.get(service.id, []) ephemeral = all_events_ephemeral[:MAX_EPHEMERAL_EVENTS_PER_TRANSACTION] del all_events_ephemeral[:MAX_EPHEMERAL_EVENTS_PER_TRANSACTION] all_to_device_messages = self.queued_to_device_messages.get( service.id, [] ) to_device_messages_to_send = all_to_device_messages[ :MAX_TO_DEVICE_MESSAGES_PER_TRANSACTION ] del all_to_device_messages[:MAX_TO_DEVICE_MESSAGES_PER_TRANSACTION] if not events and not ephemeral and not to_device_messages_to_send: return try: await self.txn_ctrl.send( service, events, ephemeral, to_device_messages_to_send ) except Exception: logger.exception("AS request failed") finally: self.requests_in_flight.discard(service.id) class _TransactionController: """Transaction manager. Builds AppServiceTransactions and runs their lifecycle. Also starts a Recoverer if a transaction fails. (Note we have only have one of these in the homeserver.) """ def __init__(self, clock: Clock, store: DataStore, as_api: ApplicationServiceApi): self.clock = clock self.store = store self.as_api = as_api # map from service id to recoverer instance self.recoverers: Dict[str, "_Recoverer"] = {} # for UTs self.RECOVERER_CLASS = _Recoverer async def send( self, service: ApplicationService, events: List[EventBase], ephemeral: Optional[List[JsonDict]] = None, to_device_messages: Optional[List[JsonDict]] = None, ) -> None: """ Create a transaction with the given data and send to the provided application service. Args: service: The application service to send the transaction to. events: The persistent events to include in the transaction. ephemeral: The ephemeral events to include in the transaction. to_device_messages: The to-device messages to include in the transaction. """ try: txn = await self.store.create_appservice_txn( service=service, events=events, ephemeral=ephemeral or [], to_device_messages=to_device_messages or [], ) service_is_up = await self._is_service_up(service) if service_is_up: sent = await txn.send(self.as_api) if sent: await txn.complete(self.store) else: run_in_background(self._on_txn_fail, service) except Exception: logger.exception("Error creating appservice transaction") run_in_background(self._on_txn_fail, service) async def on_recovered(self, recoverer: "_Recoverer") -> None: logger.info( "Successfully recovered application service AS ID %s", recoverer.service.id ) self.recoverers.pop(recoverer.service.id) logger.info("Remaining active recoverers: %s", len(self.recoverers)) await self.store.set_appservice_state( recoverer.service, ApplicationServiceState.UP ) async def _on_txn_fail(self, service: ApplicationService) -> None: try: await self.store.set_appservice_state(service, ApplicationServiceState.DOWN) self.start_recoverer(service) except Exception: logger.exception("Error starting AS recoverer") def start_recoverer(self, service: ApplicationService) -> None: """Start a Recoverer for the given service Args: service: """ logger.info("Starting recoverer for AS ID %s", service.id) assert service.id not in self.recoverers recoverer = self.RECOVERER_CLASS( self.clock, self.store, self.as_api, service, self.on_recovered ) self.recoverers[service.id] = recoverer recoverer.recover() logger.info("Now %i active recoverers", len(self.recoverers)) async def _is_service_up(self, service: ApplicationService) -> bool: state = await self.store.get_appservice_state(service) return state == ApplicationServiceState.UP or state is None class _Recoverer: """Manages retries and backoff for a DOWN appservice. We have one of these for each appservice which is currently considered DOWN. Args: clock (synapse.util.Clock): store (synapse.storage.DataStore): as_api (synapse.appservice.api.ApplicationServiceApi): service (synapse.appservice.ApplicationService): the service we are managing callback (callable[_Recoverer]): called once the service recovers. """ def __init__( self, clock: Clock, store: DataStore, as_api: ApplicationServiceApi, service: ApplicationService, callback: Callable[["_Recoverer"], Awaitable[None]], ): self.clock = clock self.store = store self.as_api = as_api self.service = service self.callback = callback self.backoff_counter = 1 def recover(self) -> None: def _retry() -> None: run_as_background_process( "as-recoverer-%s" % (self.service.id,), self.retry ) delay = 2 ** self.backoff_counter logger.info("Scheduling retries on %s in %fs", self.service.id, delay) self.clock.call_later(delay, _retry) def _backoff(self) -> None: # cap the backoff to be around 8.5min => (2^9) = 512 secs if self.backoff_counter < 9: self.backoff_counter += 1 self.recover() async def retry(self) -> None: logger.info("Starting retries on %s", self.service.id) try: while True: txn = await self.store.get_oldest_unsent_txn(self.service) if not txn: # nothing left: we're done! await self.callback(self) return logger.info( "Retrying transaction %s for AS ID %s", txn.id, txn.service.id ) sent = await txn.send(self.as_api) if not sent: break await txn.complete(self.store) # reset the backoff counter and then process the next transaction self.backoff_counter = 1 except Exception: logger.exception("Unexpected error running retries") # we didn't manage to send all of the transactions before we got an error of # some flavour: reschedule the next retry. self._backoff() synapse-1.53.0/synapse/config/000077500000000000000000000000001420514467300162175ustar00rootroot00000000000000synapse-1.53.0/synapse/config/__init__.py000066400000000000000000000014611420514467300203320ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import ConfigError, find_config_files # export ConfigError and find_config_files if somebody does # import * # this is largely a fudge to stop PEP8 moaning about the import __all__ = ["ConfigError", "find_config_files"] synapse-1.53.0/synapse/config/__main__.py000066400000000000000000000035011420514467300203100ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from typing import List from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig def main(args: List[str]) -> None: action = args[1] if len(args) > 1 and args[1] == "read" else None # If we're reading a key in the config file, then `args[1]` will be `read` and `args[2]` # will be the key to read. # We'll want to rework this code if we want to support more actions than just `read`. load_config_args = args[3:] if action else args[1:] try: config = HomeServerConfig.load_config("", load_config_args) except ConfigError as e: sys.stderr.write("\n" + str(e) + "\n") sys.exit(1) print("Config parses OK!") if action == "read": key = args[2] key_parts = key.split(".") value = config try: while len(key_parts): value = getattr(value, key_parts[0]) key_parts.pop(0) print(f"\n{key}: {value}") except AttributeError: print( f"\nNo '{key}' key could be found in the provided configuration file." ) sys.exit(1) if __name__ == "__main__": main(sys.argv) synapse-1.53.0/synapse/config/_base.py000066400000000000000000000745021420514467300176520ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2017-2018 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import errno import os from collections import OrderedDict from hashlib import sha256 from textwrap import dedent from typing import ( Any, Dict, Iterable, List, MutableMapping, Optional, Tuple, Type, TypeVar, Union, ) import attr import jinja2 import pkg_resources import yaml from synapse.util.templates import _create_mxc_to_http_filter, _format_ts_filter class ConfigError(Exception): """Represents a problem parsing the configuration Args: msg: A textual description of the error. path: Where appropriate, an indication of where in the configuration the problem lies. """ def __init__(self, msg: str, path: Optional[Iterable[str]] = None): self.msg = msg self.path = path # We split these messages out to allow packages to override with package # specific instructions. MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS = """\ Please opt in or out of reporting anonymized homeserver usage statistics, by setting the `report_stats` key in your config file to either True or False. """ MISSING_REPORT_STATS_SPIEL = """\ We would really appreciate it if you could help our project out by reporting anonymized usage statistics from your homeserver. Only very basic aggregate data (e.g. number of users) will be reported, but it helps us to track the growth of the Matrix community, and helps us to make Matrix a success, as well as to convince other networks that they should peer with us. Thank you. """ MISSING_SERVER_NAME = """\ Missing mandatory `server_name` config option. """ CONFIG_FILE_HEADER = """\ # Configuration file for Synapse. # # This is a YAML file: see [1] for a quick introduction. Note in particular # that *indentation is important*: all the elements of a list or dictionary # should have the same indentation. # # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html """ def path_exists(file_path: str) -> bool: """Check if a file exists Unlike os.path.exists, this throws an exception if there is an error checking if the file exists (for example, if there is a perms error on the parent dir). Returns: True if the file exists; False if not. """ try: os.stat(file_path) return True except OSError as e: if e.errno != errno.ENOENT: raise e return False class Config: """ A configuration section, containing configuration keys and values. Attributes: section: The section title of this config object, such as "tls" or "logger". This is used to refer to it on the root logger (for example, `config.tls.some_option`). Must be defined in subclasses. """ section: str def __init__(self, root_config: "RootConfig" = None): self.root = root_config # Get the path to the default Synapse template directory self.default_template_dir = pkg_resources.resource_filename( "synapse", "res/templates" ) @staticmethod def parse_size(value: Union[str, int]) -> int: if isinstance(value, int): return value sizes = {"K": 1024, "M": 1024 * 1024} size = 1 suffix = value[-1] if suffix in sizes: value = value[:-1] size = sizes[suffix] return int(value) * size @staticmethod def parse_duration(value: Union[str, int]) -> int: """Convert a duration as a string or integer to a number of milliseconds. If an integer is provided it is treated as milliseconds and is unchanged. String durations can have a suffix of 's', 'm', 'h', 'd', 'w', or 'y'. No suffix is treated as milliseconds. Args: value: The duration to parse. Returns: The number of milliseconds in the duration. """ if isinstance(value, int): return value second = 1000 minute = 60 * second hour = 60 * minute day = 24 * hour week = 7 * day year = 365 * day sizes = {"s": second, "m": minute, "h": hour, "d": day, "w": week, "y": year} size = 1 suffix = value[-1] if suffix in sizes: value = value[:-1] size = sizes[suffix] return int(value) * size @staticmethod def abspath(file_path: str) -> str: return os.path.abspath(file_path) if file_path else file_path @classmethod def path_exists(cls, file_path: str) -> bool: return path_exists(file_path) @classmethod def check_file(cls, file_path: Optional[str], config_name: str) -> str: if file_path is None: raise ConfigError("Missing config for %s." % (config_name,)) try: os.stat(file_path) except OSError as e: raise ConfigError( "Error accessing file '%s' (config for %s): %s" % (file_path, config_name, e.strerror) ) return cls.abspath(file_path) @classmethod def ensure_directory(cls, dir_path: str) -> str: dir_path = cls.abspath(dir_path) os.makedirs(dir_path, exist_ok=True) if not os.path.isdir(dir_path): raise ConfigError("%s is not a directory" % (dir_path,)) return dir_path @classmethod def read_file(cls, file_path: Any, config_name: str) -> str: """Deprecated: call read_file directly""" return read_file(file_path, (config_name,)) def read_template(self, filename: str) -> jinja2.Template: """Load a template file from disk. This function will attempt to load the given template from the default Synapse template directory. Files read are treated as Jinja templates. The templates is not rendered yet and has autoescape enabled. Args: filename: A template filename to read. Raises: ConfigError: if the file's path is incorrect or otherwise cannot be read. Returns: A jinja2 template. """ return self.read_templates([filename])[0] def read_templates( self, filenames: List[str], custom_template_directories: Optional[Iterable[str]] = None, ) -> List[jinja2.Template]: """Load a list of template files from disk using the given variables. This function will attempt to load the given templates from the default Synapse template directory. If `custom_template_directories` is supplied, any directory in this list is tried (in the order they appear in the list) before trying Synapse's default directory. Files read are treated as Jinja templates. The templates are not rendered yet and have autoescape enabled. Args: filenames: A list of template filenames to read. custom_template_directories: A list of directory to try to look for the templates before using the default Synapse template directory instead. Raises: ConfigError: if the file's path is incorrect or otherwise cannot be read. Returns: A list of jinja2 templates. """ search_directories = [] # The loader will first look in the custom template directories (if specified) # for the given filename. If it doesn't find it, it will use the default # template dir instead. if custom_template_directories is not None: for custom_template_directory in custom_template_directories: # Check that the given template directory exists if not self.path_exists(custom_template_directory): raise ConfigError( "Configured template directory does not exist: %s" % (custom_template_directory,) ) # Search the custom template directory as well search_directories.append(custom_template_directory) # Append the default directory at the end of the list so Jinja can fallback on it # if a template is missing from any custom directory. search_directories.append(self.default_template_dir) # TODO: switch to synapse.util.templates.build_jinja_env loader = jinja2.FileSystemLoader(search_directories) env = jinja2.Environment( loader=loader, autoescape=jinja2.select_autoescape(), ) # Update the environment with our custom filters env.filters.update( { "format_ts": _format_ts_filter, "mxc_to_http": _create_mxc_to_http_filter( self.root.server.public_baseurl ), } ) # Load the templates return [env.get_template(filename) for filename in filenames] TRootConfig = TypeVar("TRootConfig", bound="RootConfig") class RootConfig: """ Holder of an application's configuration. What configuration this object holds is defined by `config_classes`, a list of Config classes that will be instantiated and given the contents of a configuration file to read. They can then be accessed on this class by their section name, defined in the Config or dynamically set to be the name of the class, lower-cased and with "Config" removed. """ config_classes = [] def __init__(self): for config_class in self.config_classes: if config_class.section is None: raise ValueError("%r requires a section name" % (config_class,)) try: conf = config_class(self) except Exception as e: raise Exception("Failed making %s: %r" % (config_class.section, e)) setattr(self, config_class.section, conf) def invoke_all( self, func_name: str, *args: Any, **kwargs: Any ) -> MutableMapping[str, Any]: """ Invoke a function on all instantiated config objects this RootConfig is configured to use. Args: func_name: Name of function to invoke *args **kwargs Returns: ordered dictionary of config section name and the result of the function from it. """ res = OrderedDict() for config_class in self.config_classes: config = getattr(self, config_class.section) if hasattr(config, func_name): res[config_class.section] = getattr(config, func_name)(*args, **kwargs) return res @classmethod def invoke_all_static(cls, func_name: str, *args: Any, **kwargs: any) -> None: """ Invoke a static function on config objects this RootConfig is configured to use. Args: func_name: Name of function to invoke *args **kwargs Returns: ordered dictionary of config section name and the result of the function from it. """ for config in cls.config_classes: if hasattr(config, func_name): getattr(config, func_name)(*args, **kwargs) def generate_config( self, config_dir_path: str, data_dir_path: str, server_name: str, generate_secrets: bool = False, report_stats: Optional[bool] = None, open_private_ports: bool = False, listeners: Optional[List[dict]] = None, tls_certificate_path: Optional[str] = None, tls_private_key_path: Optional[str] = None, ) -> str: """ Build a default configuration file This is used when the user explicitly asks us to generate a config file (eg with --generate_config). Args: config_dir_path: The path where the config files are kept. Used to create filenames for things like the log config and the signing key. data_dir_path: The path where the data files are kept. Used to create filenames for things like the database and media store. server_name: The server name. Used to initialise the server_name config param, but also used in the names of some of the config files. generate_secrets: True if we should generate new secrets for things like the macaroon_secret_key. If False, these parameters will be left unset. report_stats: Initial setting for the report_stats setting. If None, report_stats will be left unset. open_private_ports: True to leave private ports (such as the non-TLS HTTP listener) open to the internet. listeners: A list of descriptions of the listeners synapse should start with each of which specifies a port (int), a list of resources (list(str)), tls (bool) and type (str). For example: [{ "port": 8448, "resources": [{"names": ["federation"]}], "tls": True, "type": "http", }, { "port": 443, "resources": [{"names": ["client"]}], "tls": False, "type": "http", }], tls_certificate_path: The path to the tls certificate. tls_private_key_path: The path to the tls private key. Returns: The yaml config file """ return CONFIG_FILE_HEADER + "\n\n".join( dedent(conf) for conf in self.invoke_all( "generate_config_section", config_dir_path=config_dir_path, data_dir_path=data_dir_path, server_name=server_name, generate_secrets=generate_secrets, report_stats=report_stats, open_private_ports=open_private_ports, listeners=listeners, tls_certificate_path=tls_certificate_path, tls_private_key_path=tls_private_key_path, ).values() ) @classmethod def load_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> TRootConfig: """Parse the commandline and config files Doesn't support config-file-generation: used by the worker apps. Returns: Config object. """ config_parser = argparse.ArgumentParser(description=description) cls.add_arguments_to_parser(config_parser) obj, _ = cls.load_config_with_parser(config_parser, argv) return obj @classmethod def add_arguments_to_parser(cls, config_parser: argparse.ArgumentParser) -> None: """Adds all the config flags to an ArgumentParser. Doesn't support config-file-generation: used by the worker apps. Used for workers where we want to add extra flags/subcommands. Args: config_parser: App description """ config_parser.add_argument( "-c", "--config-path", action="append", metavar="CONFIG_FILE", help="Specify config file. Can be given multiple times and" " may specify directories containing *.yaml files.", ) config_parser.add_argument( "--keys-directory", metavar="DIRECTORY", help="Where files such as certs and signing keys are stored when" " their location is not given explicitly in the config." " Defaults to the directory containing the last config file", ) cls.invoke_all_static("add_arguments", config_parser) @classmethod def load_config_with_parser( cls: Type[TRootConfig], parser: argparse.ArgumentParser, argv: List[str] ) -> Tuple[TRootConfig, argparse.Namespace]: """Parse the commandline and config files with the given parser Doesn't support config-file-generation: used by the worker apps. Used for workers where we want to add extra flags/subcommands. Args: parser argv Returns: Returns the parsed config object and the parsed argparse.Namespace object from parser.parse_args(..)` """ obj = cls() config_args = parser.parse_args(argv) config_files = find_config_files(search_paths=config_args.config_path) if not config_files: parser.error("Must supply a config file.") if config_args.keys_directory: config_dir_path = config_args.keys_directory else: config_dir_path = os.path.dirname(config_files[-1]) config_dir_path = os.path.abspath(config_dir_path) data_dir_path = os.getcwd() config_dict = read_config_files(config_files) obj.parse_config_dict( config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path ) obj.invoke_all("read_arguments", config_args) return obj, config_args @classmethod def load_or_generate_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> Optional[TRootConfig]: """Parse the commandline and config files Supports generation of config files, so is used for the main homeserver app. Returns: Config object, or None if --generate-config or --generate-keys was set """ parser = argparse.ArgumentParser(description=description) parser.add_argument( "-c", "--config-path", action="append", metavar="CONFIG_FILE", help="Specify config file. Can be given multiple times and" " may specify directories containing *.yaml files.", ) generate_group = parser.add_argument_group("Config generation") generate_group.add_argument( "--generate-config", action="store_true", help="Generate a config file, then exit.", ) generate_group.add_argument( "--generate-missing-configs", "--generate-keys", action="store_true", help="Generate any missing additional config files, then exit.", ) generate_group.add_argument( "-H", "--server-name", help="The server name to generate a config file for." ) generate_group.add_argument( "--report-stats", action="store", help="Whether the generated config reports anonymized usage statistics.", choices=["yes", "no"], ) generate_group.add_argument( "--config-directory", "--keys-directory", metavar="DIRECTORY", help=( "Specify where additional config files such as signing keys and log" " config should be stored. Defaults to the same directory as the last" " config file." ), ) generate_group.add_argument( "--data-directory", metavar="DIRECTORY", help=( "Specify where data such as the media store and database file should be" " stored. Defaults to the current working directory." ), ) generate_group.add_argument( "--open-private-ports", action="store_true", help=( "Leave private ports (such as the non-TLS HTTP listener) open to the" " internet. Do not use this unless you know what you are doing." ), ) cls.invoke_all_static("add_arguments", parser) config_args = parser.parse_args(argv) config_files = find_config_files(search_paths=config_args.config_path) if not config_files: parser.error( "Must supply a config file.\nA config file can be automatically" ' generated using "--generate-config -H SERVER_NAME' ' -c CONFIG-FILE"' ) if config_args.config_directory: config_dir_path = config_args.config_directory else: config_dir_path = os.path.dirname(config_files[-1]) config_dir_path = os.path.abspath(config_dir_path) data_dir_path = os.getcwd() generate_missing_configs = config_args.generate_missing_configs obj = cls() if config_args.generate_config: if config_args.report_stats is None: parser.error( "Please specify either --report-stats=yes or --report-stats=no\n\n" + MISSING_REPORT_STATS_SPIEL ) (config_path,) = config_files if not path_exists(config_path): print("Generating config file %s" % (config_path,)) if config_args.data_directory: data_dir_path = config_args.data_directory else: data_dir_path = os.getcwd() data_dir_path = os.path.abspath(data_dir_path) server_name = config_args.server_name if not server_name: raise ConfigError( "Must specify a server_name to a generate config for." " Pass -H server.name." ) config_str = obj.generate_config( config_dir_path=config_dir_path, data_dir_path=data_dir_path, server_name=server_name, report_stats=(config_args.report_stats == "yes"), generate_secrets=True, open_private_ports=config_args.open_private_ports, ) os.makedirs(config_dir_path, exist_ok=True) with open(config_path, "w") as config_file: config_file.write(config_str) config_file.write("\n\n# vim:ft=yaml") config_dict = yaml.safe_load(config_str) obj.generate_missing_files(config_dict, config_dir_path) print( ( "A config file has been generated in %r for server name" " %r. Please review this file and customise it" " to your needs." ) % (config_path, server_name) ) return else: print( ( "Config file %r already exists. Generating any missing config" " files." ) % (config_path,) ) generate_missing_configs = True config_dict = read_config_files(config_files) if generate_missing_configs: obj.generate_missing_files(config_dict, config_dir_path) return None obj.parse_config_dict( config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path ) obj.invoke_all("read_arguments", config_args) return obj def parse_config_dict( self, config_dict: Dict[str, Any], config_dir_path: Optional[str] = None, data_dir_path: Optional[str] = None, ) -> None: """Read the information from the config dict into this Config object. Args: config_dict: Configuration data, as read from the yaml config_dir_path: The path where the config files are kept. Used to create filenames for things like the log config and the signing key. data_dir_path: The path where the data files are kept. Used to create filenames for things like the database and media store. """ self.invoke_all( "read_config", config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path, ) def generate_missing_files( self, config_dict: Dict[str, Any], config_dir_path: str ) -> None: self.invoke_all("generate_files", config_dict, config_dir_path) def read_config_files(config_files: Iterable[str]) -> Dict[str, Any]: """Read the config files into a dict Args: config_files: A list of the config files to read Returns: The configuration dictionary. """ specified_config = {} for config_file in config_files: with open(config_file) as file_stream: yaml_config = yaml.safe_load(file_stream) if not isinstance(yaml_config, dict): err = "File %r is empty or doesn't parse into a key-value map. IGNORING." print(err % (config_file,)) continue specified_config.update(yaml_config) if "server_name" not in specified_config: raise ConfigError(MISSING_SERVER_NAME) if "report_stats" not in specified_config: raise ConfigError( MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS + "\n" + MISSING_REPORT_STATS_SPIEL ) return specified_config def find_config_files(search_paths: List[str]) -> List[str]: """Finds config files using a list of search paths. If a path is a file then that file path is added to the list. If a search path is a directory then all the "*.yaml" files in that directory are added to the list in sorted order. Args: search_paths: A list of paths to search. Returns: A list of file paths. """ config_files = [] if search_paths: for config_path in search_paths: if os.path.isdir(config_path): # We accept specifying directories as config paths, we search # inside that directory for all files matching *.yaml, and then # we apply them in *sorted* order. files = [] for entry in os.listdir(config_path): entry_path = os.path.join(config_path, entry) if not os.path.isfile(entry_path): err = "Found subdirectory in config directory: %r. IGNORING." print(err % (entry_path,)) continue if not entry.endswith(".yaml"): err = ( "Found file in config directory that does not end in " "'.yaml': %r. IGNORING." ) print(err % (entry_path,)) continue files.append(entry_path) config_files.extend(sorted(files)) else: config_files.append(config_path) return config_files @attr.s(auto_attribs=True) class ShardedWorkerHandlingConfig: """Algorithm for choosing which instance is responsible for handling some sharded work. For example, the federation senders use this to determine which instances handles sending stuff to a given destination (which is used as the `key` below). """ instances: List[str] def should_handle(self, instance_name: str, key: str) -> bool: """Whether this instance is responsible for handling the given key.""" # If no instances are defined we assume some other worker is handling # this. if not self.instances: return False return self._get_instance(key) == instance_name def _get_instance(self, key: str) -> str: """Get the instance responsible for handling the given key. Note: For federation sending and pushers the config for which instance is sending is known only to the sender instance, so we don't expose this method by default. """ if not self.instances: raise Exception("Unknown worker") if len(self.instances) == 1: return self.instances[0] # We shard by taking the hash, modulo it by the number of instances and # then checking whether this instance matches the instance at that # index. # # (Technically this introduces some bias and is not entirely uniform, # but since the hash is so large the bias is ridiculously small). dest_hash = sha256(key.encode("utf8")).digest() dest_int = int.from_bytes(dest_hash, byteorder="little") remainder = dest_int % (len(self.instances)) return self.instances[remainder] @attr.s class RoutableShardedWorkerHandlingConfig(ShardedWorkerHandlingConfig): """A version of `ShardedWorkerHandlingConfig` that is used for config options where all instances know which instances are responsible for the sharded work. """ def __attrs_post_init__(self): # We require that `self.instances` is non-empty. if not self.instances: raise Exception("Got empty list of instances for shard config") def get_instance(self, key: str) -> str: """Get the instance responsible for handling the given key.""" return self._get_instance(key) def read_file(file_path: Any, config_path: Iterable[str]) -> str: """Check the given file exists, and read it into a string If it does not, emit an error indicating the problem Args: file_path: the file to be read config_path: where in the configuration file_path came from, so that a useful error can be emitted if it does not exist. Returns: content of the file. Raises: ConfigError if there is a problem reading the file. """ if not isinstance(file_path, str): raise ConfigError("%r is not a string", config_path) try: os.stat(file_path) with open(file_path) as file_stream: return file_stream.read() except OSError as e: raise ConfigError("Error accessing file %r" % (file_path,), config_path) from e __all__ = [ "Config", "RootConfig", "ShardedWorkerHandlingConfig", "RoutableShardedWorkerHandlingConfig", "read_file", ] synapse-1.53.0/synapse/config/_base.pyi000066400000000000000000000131331420514467300200140ustar00rootroot00000000000000import argparse from typing import ( Any, Dict, Iterable, List, MutableMapping, Optional, Tuple, Type, TypeVar, Union, ) import jinja2 from synapse.config import ( account_validity, api, appservice, auth, cache, captcha, cas, consent, database, emailconfig, experimental, federation, groups, jwt, key, logger, metrics, modules, oembed, oidc, password_auth_providers, push, ratelimiting, redis, registration, repository, retention, room, room_directory, saml2, server, server_notices, spam_checker, sso, stats, third_party_event_rules, tls, tracer, user_directory, voip, workers, ) class ConfigError(Exception): def __init__(self, msg: str, path: Optional[Iterable[str]] = None): self.msg = msg self.path = path MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS: str MISSING_REPORT_STATS_SPIEL: str MISSING_SERVER_NAME: str def path_exists(file_path: str) -> bool: ... TRootConfig = TypeVar("TRootConfig", bound="RootConfig") class RootConfig: server: server.ServerConfig experimental: experimental.ExperimentalConfig tls: tls.TlsConfig database: database.DatabaseConfig logging: logger.LoggingConfig ratelimiting: ratelimiting.RatelimitConfig media: repository.ContentRepositoryConfig oembed: oembed.OembedConfig captcha: captcha.CaptchaConfig voip: voip.VoipConfig registration: registration.RegistrationConfig account_validity: account_validity.AccountValidityConfig metrics: metrics.MetricsConfig api: api.ApiConfig appservice: appservice.AppServiceConfig key: key.KeyConfig saml2: saml2.SAML2Config cas: cas.CasConfig sso: sso.SSOConfig oidc: oidc.OIDCConfig jwt: jwt.JWTConfig auth: auth.AuthConfig email: emailconfig.EmailConfig worker: workers.WorkerConfig authproviders: password_auth_providers.PasswordAuthProviderConfig push: push.PushConfig spamchecker: spam_checker.SpamCheckerConfig room: room.RoomConfig groups: groups.GroupsConfig userdirectory: user_directory.UserDirectoryConfig consent: consent.ConsentConfig stats: stats.StatsConfig servernotices: server_notices.ServerNoticesConfig roomdirectory: room_directory.RoomDirectoryConfig thirdpartyrules: third_party_event_rules.ThirdPartyRulesConfig tracing: tracer.TracerConfig redis: redis.RedisConfig modules: modules.ModulesConfig caches: cache.CacheConfig federation: federation.FederationConfig retention: retention.RetentionConfig config_classes: List[Type["Config"]] = ... def __init__(self) -> None: ... def invoke_all( self, func_name: str, *args: Any, **kwargs: Any ) -> MutableMapping[str, Any]: ... @classmethod def invoke_all_static(cls, func_name: str, *args: Any, **kwargs: Any) -> None: ... def parse_config_dict( self, config_dict: Dict[str, Any], config_dir_path: Optional[str] = ..., data_dir_path: Optional[str] = ..., ) -> None: ... def generate_config( self, config_dir_path: str, data_dir_path: str, server_name: str, generate_secrets: bool = ..., report_stats: Optional[bool] = ..., open_private_ports: bool = ..., listeners: Optional[Any] = ..., tls_certificate_path: Optional[str] = ..., tls_private_key_path: Optional[str] = ..., ) -> str: ... @classmethod def load_or_generate_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> Optional[TRootConfig]: ... @classmethod def load_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> TRootConfig: ... @classmethod def add_arguments_to_parser( cls, config_parser: argparse.ArgumentParser ) -> None: ... @classmethod def load_config_with_parser( cls: Type[TRootConfig], parser: argparse.ArgumentParser, argv: List[str] ) -> Tuple[TRootConfig, argparse.Namespace]: ... def generate_missing_files( self, config_dict: dict, config_dir_path: str ) -> None: ... class Config: root: RootConfig default_template_dir: str def __init__(self, root_config: Optional[RootConfig] = ...) -> None: ... @staticmethod def parse_size(value: Union[str, int]) -> int: ... @staticmethod def parse_duration(value: Union[str, int]) -> int: ... @staticmethod def abspath(file_path: Optional[str]) -> str: ... @classmethod def path_exists(cls, file_path: str) -> bool: ... @classmethod def check_file(cls, file_path: str, config_name: str) -> str: ... @classmethod def ensure_directory(cls, dir_path: str) -> str: ... @classmethod def read_file(cls, file_path: str, config_name: str) -> str: ... def read_template(self, filenames: str) -> jinja2.Template: ... def read_templates( self, filenames: List[str], custom_template_directories: Optional[Iterable[str]] = None, ) -> List[jinja2.Template]: ... def read_config_files(config_files: Iterable[str]) -> Dict[str, Any]: ... def find_config_files(search_paths: List[str]) -> List[str]: ... class ShardedWorkerHandlingConfig: instances: List[str] def __init__(self, instances: List[str]) -> None: ... def should_handle(self, instance_name: str, key: str) -> bool: ... class RoutableShardedWorkerHandlingConfig(ShardedWorkerHandlingConfig): def get_instance(self, key: str) -> str: ... def read_file(file_path: Any, config_path: Iterable[str]) -> str: ... synapse-1.53.0/synapse/config/_util.py000066400000000000000000000041561420514467300177130ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Any, Iterable import jsonschema from synapse.config._base import ConfigError from synapse.types import JsonDict def validate_config( json_schema: JsonDict, config: Any, config_path: Iterable[str] ) -> None: """Validates a config setting against a JsonSchema definition This can be used to validate a section of the config file against a schema definition. If the validation fails, a ConfigError is raised with a textual description of the problem. Args: json_schema: the schema to validate against config: the configuration value to be validated config_path: the path within the config file. This will be used as a basis for the error message. """ try: jsonschema.validate(config, json_schema) except jsonschema.ValidationError as e: raise json_error_to_config_error(e, config_path) def json_error_to_config_error( e: jsonschema.ValidationError, config_path: Iterable[str] ) -> ConfigError: """Converts a json validation error to a user-readable ConfigError Args: e: the exception to be converted config_path: the path within the config file. This will be used as a basis for the error message. Returns: a ConfigError """ # copy `config_path` before modifying it. path = list(config_path) for p in list(e.absolute_path): if isinstance(p, int): path.append("" % p) else: path.append(str(p)) return ConfigError(e.message, path) synapse-1.53.0/synapse/config/account_validity.py000066400000000000000000000105041420514467300221320ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from synapse.config._base import Config, ConfigError logger = logging.getLogger(__name__) LEGACY_TEMPLATE_DIR_WARNING = """ This server's configuration file is using the deprecated 'template_dir' setting in the 'account_validity' section. Support for this setting has been deprecated and will be removed in a future version of Synapse. Server admins should instead use the new 'custom_templates_directory' setting documented here: https://matrix-org.github.io/synapse/latest/templates.html ---------------------------------------------------------------------------------------""" class AccountValidityConfig(Config): section = "account_validity" def read_config(self, config, **kwargs): """Parses the old account validity config. The config format looks like this: account_validity: enabled: true period: 6w renew_at: 1w renew_email_subject: "Renew your %(app)s account" template_dir: "res/templates" account_renewed_html_path: "account_renewed.html" invalid_token_html_path: "invalid_token.html" We expect admins to use modules for this feature (which is why it doesn't appear in the sample config file), but we want to keep support for it around for a bit for backwards compatibility. """ account_validity_config = config.get("account_validity") or {} self.account_validity_enabled = account_validity_config.get("enabled", False) self.account_validity_renew_by_email_enabled = ( "renew_at" in account_validity_config ) if self.account_validity_enabled: if "period" in account_validity_config: self.account_validity_period = self.parse_duration( account_validity_config["period"] ) else: raise ConfigError("'period' is required when using account validity") if "renew_at" in account_validity_config: self.account_validity_renew_at = self.parse_duration( account_validity_config["renew_at"] ) if "renew_email_subject" in account_validity_config: self.account_validity_renew_email_subject = account_validity_config[ "renew_email_subject" ] else: self.account_validity_renew_email_subject = "Renew your %(app)s account" self.account_validity_startup_job_max_delta = ( self.account_validity_period * 10.0 / 100.0 ) # Load account validity templates. account_validity_template_dir = account_validity_config.get("template_dir") if account_validity_template_dir is not None: logger.warning(LEGACY_TEMPLATE_DIR_WARNING) account_renewed_template_filename = account_validity_config.get( "account_renewed_html_path", "account_renewed.html" ) invalid_token_template_filename = account_validity_config.get( "invalid_token_html_path", "invalid_token.html" ) # Read and store template content custom_template_directories = ( self.root.server.custom_template_directory, account_validity_template_dir, ) ( self.account_validity_account_renewed_template, self.account_validity_account_previously_renewed_template, self.account_validity_invalid_token_template, ) = self.read_templates( [ account_renewed_template_filename, "account_previously_renewed.html", invalid_token_template_filename, ], (td for td in custom_template_directories if td), ) synapse-1.53.0/synapse/config/api.py000066400000000000000000000133541420514467300173500ustar00rootroot00000000000000# Copyright 2015-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import Iterable from synapse.api.constants import EventTypes from synapse.config._base import Config, ConfigError from synapse.config._util import validate_config from synapse.types import JsonDict logger = logging.getLogger(__name__) class ApiConfig(Config): section = "api" def read_config(self, config: JsonDict, **kwargs): validate_config(_MAIN_SCHEMA, config, ()) self.room_prejoin_state = list(self._get_prejoin_state_types(config)) self.track_puppeted_user_ips = config.get("track_puppeted_user_ips", False) def generate_config_section(cls, **kwargs) -> str: formatted_default_state_types = "\n".join( " # - %s" % (t,) for t in _DEFAULT_PREJOIN_STATE_TYPES ) return """\ ## API Configuration ## # Controls for the state that is shared with users who receive an invite # to a room # room_prejoin_state: # By default, the following state event types are shared with users who # receive invites to the room: # %(formatted_default_state_types)s # # Uncomment the following to disable these defaults (so that only the event # types listed in 'additional_event_types' are shared). Defaults to 'false'. # #disable_default_event_types: true # Additional state event types to share with users when they are invited # to a room. # # By default, this list is empty (so only the default event types are shared). # #additional_event_types: # - org.example.custom.event.type # We record the IP address of clients used to access the API for various # reasons, including displaying it to the user in the "Where you're signed in" # dialog. # # By default, when puppeting another user via the admin API, the client IP # address is recorded against the user who created the access token (ie, the # admin user), and *not* the puppeted user. # # Uncomment the following to also record the IP address against the puppeted # user. (This also means that the puppeted user will count as an "active" user # for the purpose of monthly active user tracking - see 'limit_usage_by_mau' etc # above.) # #track_puppeted_user_ips: true """ % { "formatted_default_state_types": formatted_default_state_types } def _get_prejoin_state_types(self, config: JsonDict) -> Iterable[str]: """Get the event types to include in the prejoin state Parses the config and returns an iterable of the event types to be included. """ room_prejoin_state_config = config.get("room_prejoin_state") or {} # backwards-compatibility support for room_invite_state_types if "room_invite_state_types" in config: # if both "room_invite_state_types" and "room_prejoin_state" are set, then # we don't really know what to do. if room_prejoin_state_config: raise ConfigError( "Can't specify both 'room_invite_state_types' and 'room_prejoin_state' " "in config" ) logger.warning(_ROOM_INVITE_STATE_TYPES_WARNING) yield from config["room_invite_state_types"] return if not room_prejoin_state_config.get("disable_default_event_types"): yield from _DEFAULT_PREJOIN_STATE_TYPES yield from room_prejoin_state_config.get("additional_event_types", []) _ROOM_INVITE_STATE_TYPES_WARNING = """\ WARNING: The 'room_invite_state_types' configuration setting is now deprecated, and replaced with 'room_prejoin_state'. New features may not work correctly unless 'room_invite_state_types' is removed. See the sample configuration file for details of 'room_prejoin_state'. -------------------------------------------------------------------------------- """ _DEFAULT_PREJOIN_STATE_TYPES = [ EventTypes.JoinRules, EventTypes.CanonicalAlias, EventTypes.RoomAvatar, EventTypes.RoomEncryption, EventTypes.Name, # Per MSC1772. EventTypes.Create, # Per MSC3173. EventTypes.Topic, ] # room_prejoin_state can either be None (as it is in the default config), or # an object containing other config settings _ROOM_PREJOIN_STATE_CONFIG_SCHEMA = { "oneOf": [ { "type": "object", "properties": { "disable_default_event_types": {"type": "boolean"}, "additional_event_types": { "type": "array", "items": {"type": "string"}, }, }, }, {"type": "null"}, ] } # the legacy room_invite_state_types setting _ROOM_INVITE_STATE_TYPES_SCHEMA = {"type": "array", "items": {"type": "string"}} _MAIN_SCHEMA = { "type": "object", "properties": { "room_prejoin_state": _ROOM_PREJOIN_STATE_CONFIG_SCHEMA, "room_invite_state_types": _ROOM_INVITE_STATE_TYPES_SCHEMA, "track_puppeted_user_ips": { "type": "boolean", }, }, } synapse-1.53.0/synapse/config/appservice.py000066400000000000000000000154001420514467300207320ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import Dict, List from urllib import parse as urlparse import yaml from netaddr import IPSet from synapse.appservice import ApplicationService from synapse.types import JsonDict, UserID from ._base import Config, ConfigError logger = logging.getLogger(__name__) class AppServiceConfig(Config): section = "appservice" def read_config(self, config, **kwargs) -> None: self.app_service_config_files = config.get("app_service_config_files", []) self.notify_appservices = config.get("notify_appservices", True) self.track_appservice_user_ips = config.get("track_appservice_user_ips", False) def generate_config_section(cls, **kwargs) -> str: return """\ # A list of application service config files to use # #app_service_config_files: # - app_service_1.yaml # - app_service_2.yaml # Uncomment to enable tracking of application service IP addresses. Implicitly # enables MAU tracking for application service users. # #track_appservice_user_ips: true """ def load_appservices( hostname: str, config_files: List[str] ) -> List[ApplicationService]: """Returns a list of Application Services from the config files.""" if not isinstance(config_files, list): logger.warning("Expected %s to be a list of AS config files.", config_files) return [] # Dicts of value -> filename seen_as_tokens: Dict[str, str] = {} seen_ids: Dict[str, str] = {} appservices = [] for config_file in config_files: try: with open(config_file) as f: appservice = _load_appservice(hostname, yaml.safe_load(f), config_file) if appservice.id in seen_ids: raise ConfigError( "Cannot reuse ID across application services: " "%s (files: %s, %s)" % (appservice.id, config_file, seen_ids[appservice.id]) ) seen_ids[appservice.id] = config_file if appservice.token in seen_as_tokens: raise ConfigError( "Cannot reuse as_token across application services: " "%s (files: %s, %s)" % ( appservice.token, config_file, seen_as_tokens[appservice.token], ) ) seen_as_tokens[appservice.token] = config_file logger.info("Loaded application service: %s", appservice) appservices.append(appservice) except Exception as e: logger.error("Failed to load appservice from '%s'", config_file) logger.exception(e) raise return appservices def _load_appservice( hostname: str, as_info: JsonDict, config_filename: str ) -> ApplicationService: required_string_fields = ["id", "as_token", "hs_token", "sender_localpart"] for field in required_string_fields: if not isinstance(as_info.get(field), str): raise KeyError( "Required string field: '%s' (%s)" % (field, config_filename) ) # 'url' must either be a string or explicitly null, not missing # to avoid accidentally turning off push for ASes. if not isinstance(as_info.get("url"), str) and as_info.get("url", "") is not None: raise KeyError( "Required string field or explicit null: 'url' (%s)" % (config_filename,) ) localpart = as_info["sender_localpart"] if urlparse.quote(localpart) != localpart: raise ValueError("sender_localpart needs characters which are not URL encoded.") user = UserID(localpart, hostname) user_id = user.to_string() # Rate limiting for users of this AS is on by default (excludes sender) rate_limited = as_info.get("rate_limited") if not isinstance(rate_limited, bool): rate_limited = True # namespace checks if not isinstance(as_info.get("namespaces"), dict): raise KeyError("Requires 'namespaces' object.") for ns in ApplicationService.NS_LIST: # specific namespaces are optional if ns in as_info["namespaces"]: # expect a list of dicts with exclusive and regex keys for regex_obj in as_info["namespaces"][ns]: if not isinstance(regex_obj, dict): raise ValueError( "Expected namespace entry in %s to be an object, but got %s", ns, regex_obj, ) if not isinstance(regex_obj.get("regex"), str): raise ValueError("Missing/bad type 'regex' key in %s", regex_obj) if not isinstance(regex_obj.get("exclusive"), bool): raise ValueError( "Missing/bad type 'exclusive' key in %s", regex_obj ) # protocols check protocols = as_info.get("protocols") if protocols: if not isinstance(protocols, list): raise KeyError("Optional 'protocols' must be a list if present.") for p in protocols: if not isinstance(p, str): raise KeyError("Bad value for 'protocols' item") if as_info["url"] is None: logger.info( "(%s) Explicitly empty 'url' provided. This application service" " will not receive events or queries.", config_filename, ) ip_range_whitelist = None if as_info.get("ip_range_whitelist"): ip_range_whitelist = IPSet(as_info.get("ip_range_whitelist")) supports_ephemeral = as_info.get("de.sorunome.msc2409.push_ephemeral", False) return ApplicationService( token=as_info["as_token"], hostname=hostname, url=as_info["url"], namespaces=as_info["namespaces"], hs_token=as_info["hs_token"], sender=user_id, id=as_info["id"], supports_ephemeral=supports_ephemeral, protocols=protocols, rate_limited=rate_limited, ip_range_whitelist=ip_range_whitelist, ) synapse-1.53.0/synapse/config/auth.py000066400000000000000000000103151420514467300175320ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config class AuthConfig(Config): """Password and login configuration""" section = "auth" def read_config(self, config, **kwargs): password_config = config.get("password_config", {}) if password_config is None: password_config = {} self.password_enabled = password_config.get("enabled", True) self.password_localdb_enabled = password_config.get("localdb_enabled", True) self.password_pepper = password_config.get("pepper", "") # Password policy self.password_policy = password_config.get("policy") or {} self.password_policy_enabled = self.password_policy.get("enabled", False) # User-interactive authentication ui_auth = config.get("ui_auth") or {} self.ui_auth_session_timeout = self.parse_duration( ui_auth.get("session_timeout", 0) ) def generate_config_section(self, config_dir_path, server_name, **kwargs): return """\ password_config: # Uncomment to disable password login # #enabled: false # Uncomment to disable authentication against the local password # database. This is ignored if `enabled` is false, and is only useful # if you have other password_providers. # #localdb_enabled: false # Uncomment and change to a secret random string for extra security. # DO NOT CHANGE THIS AFTER INITIAL SETUP! # #pepper: "EVEN_MORE_SECRET" # Define and enforce a password policy. Each parameter is optional. # This is an implementation of MSC2000. # policy: # Whether to enforce the password policy. # Defaults to 'false'. # #enabled: true # Minimum accepted length for a password. # Defaults to 0. # #minimum_length: 15 # Whether a password must contain at least one digit. # Defaults to 'false'. # #require_digit: true # Whether a password must contain at least one symbol. # A symbol is any character that's not a number or a letter. # Defaults to 'false'. # #require_symbol: true # Whether a password must contain at least one lowercase letter. # Defaults to 'false'. # #require_lowercase: true # Whether a password must contain at least one uppercase letter. # Defaults to 'false'. # #require_uppercase: true ui_auth: # The amount of time to allow a user-interactive authentication session # to be active. # # This defaults to 0, meaning the user is queried for their credentials # before every action, but this can be overridden to allow a single # validation to be re-used. This weakens the protections afforded by # the user-interactive authentication process, by allowing for multiple # (and potentially different) operations to use the same validation session. # # This is ignored for potentially "dangerous" operations (including # deactivating an account, modifying an account password, and # adding a 3PID). # # Uncomment below to allow for credential validation to last for 15 # seconds. # #session_timeout: "15s" """ synapse-1.53.0/synapse/config/cache.py000066400000000000000000000243241420514467300176410ustar00rootroot00000000000000# Copyright 2019-2021 Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import os import re import threading from typing import Callable, Dict, Optional import attr from synapse.python_dependencies import DependencyException, check_requirements from ._base import Config, ConfigError logger = logging.getLogger(__name__) # The prefix for all cache factor-related environment variables _CACHE_PREFIX = "SYNAPSE_CACHE_FACTOR" # Map from canonicalised cache name to cache. _CACHES: Dict[str, Callable[[float], None]] = {} # a lock on the contents of _CACHES _CACHES_LOCK = threading.Lock() _DEFAULT_FACTOR_SIZE = 0.5 _DEFAULT_EVENT_CACHE_SIZE = "10K" @attr.s(slots=True, auto_attribs=True) class CacheProperties: # The default factor size for all caches default_factor_size: float = float( os.environ.get(_CACHE_PREFIX, _DEFAULT_FACTOR_SIZE) ) resize_all_caches_func: Optional[Callable[[], None]] = None properties = CacheProperties() def _canonicalise_cache_name(cache_name: str) -> str: """Gets the canonical form of the cache name. Since we specify cache names in config and environment variables we need to ignore case and special characters. For example, some caches have asterisks in their name to denote that they're not attached to a particular database function, and these asterisks need to be stripped out """ cache_name = re.sub(r"[^A-Za-z_1-9]", "", cache_name) return cache_name.lower() def add_resizable_cache( cache_name: str, cache_resize_callback: Callable[[float], None] ) -> None: """Register a cache that's size can dynamically change Args: cache_name: A reference to the cache cache_resize_callback: A callback function that will be ran whenever the cache needs to be resized """ # Some caches have '*' in them which we strip out. cache_name = _canonicalise_cache_name(cache_name) # sometimes caches are initialised from background threads, so we need to make # sure we don't conflict with another thread running a resize operation with _CACHES_LOCK: _CACHES[cache_name] = cache_resize_callback # Ensure all loaded caches are sized appropriately # # This method should only run once the config has been read, # as it uses values read from it if properties.resize_all_caches_func: properties.resize_all_caches_func() class CacheConfig(Config): section = "caches" _environ = os.environ @staticmethod def reset() -> None: """Resets the caches to their defaults. Used for tests.""" properties.default_factor_size = float( os.environ.get(_CACHE_PREFIX, _DEFAULT_FACTOR_SIZE) ) properties.resize_all_caches_func = None with _CACHES_LOCK: _CACHES.clear() def generate_config_section(self, **kwargs) -> str: return """\ ## Caching ## # Caching can be configured through the following options. # # A cache 'factor' is a multiplier that can be applied to each of # Synapse's caches in order to increase or decrease the maximum # number of entries that can be stored. # The number of events to cache in memory. Not affected by # caches.global_factor. # #event_cache_size: 10K caches: # Controls the global cache factor, which is the default cache factor # for all caches if a specific factor for that cache is not otherwise # set. # # This can also be set by the "SYNAPSE_CACHE_FACTOR" environment # variable. Setting by environment variable takes priority over # setting through the config file. # # Defaults to 0.5, which will half the size of all caches. # #global_factor: 1.0 # A dictionary of cache name to cache factor for that individual # cache. Overrides the global cache factor for a given cache. # # These can also be set through environment variables comprised # of "SYNAPSE_CACHE_FACTOR_" + the name of the cache in capital # letters and underscores. Setting by environment variable # takes priority over setting through the config file. # Ex. SYNAPSE_CACHE_FACTOR_GET_USERS_WHO_SHARE_ROOM_WITH_USER=2.0 # # Some caches have '*' and other characters that are not # alphanumeric or underscores. These caches can be named with or # without the special characters stripped. For example, to specify # the cache factor for `*stateGroupCache*` via an environment # variable would be `SYNAPSE_CACHE_FACTOR_STATEGROUPCACHE=2.0`. # per_cache_factors: #get_users_who_share_room_with_user: 2.0 # Controls whether cache entries are evicted after a specified time # period. Defaults to true. Uncomment to disable this feature. # #expire_caches: false # If expire_caches is enabled, this flag controls how long an entry can # be in a cache without having been accessed before being evicted. # Defaults to 30m. Uncomment to set a different time to live for cache entries. # #cache_entry_ttl: 30m # Controls how long the results of a /sync request are cached for after # a successful response is returned. A higher duration can help clients with # intermittent connections, at the cost of higher memory usage. # # By default, this is zero, which means that sync responses are not cached # at all. # #sync_response_cache_duration: 2m """ def read_config(self, config, **kwargs) -> None: self.event_cache_size = self.parse_size( config.get("event_cache_size", _DEFAULT_EVENT_CACHE_SIZE) ) self.cache_factors: Dict[str, float] = {} cache_config = config.get("caches") or {} self.global_factor = cache_config.get( "global_factor", properties.default_factor_size ) if not isinstance(self.global_factor, (int, float)): raise ConfigError("caches.global_factor must be a number.") # Set the global one so that it's reflected in new caches properties.default_factor_size = self.global_factor # Load cache factors from the config individual_factors = cache_config.get("per_cache_factors") or {} if not isinstance(individual_factors, dict): raise ConfigError("caches.per_cache_factors must be a dictionary") # Canonicalise the cache names *before* updating with the environment # variables. individual_factors = { _canonicalise_cache_name(key): val for key, val in individual_factors.items() } # Override factors from environment if necessary individual_factors.update( { _canonicalise_cache_name(key[len(_CACHE_PREFIX) + 1 :]): float(val) for key, val in self._environ.items() if key.startswith(_CACHE_PREFIX + "_") } ) for cache, factor in individual_factors.items(): if not isinstance(factor, (int, float)): raise ConfigError( "caches.per_cache_factors.%s must be a number" % (cache,) ) self.cache_factors[cache] = factor self.track_memory_usage = cache_config.get("track_memory_usage", False) if self.track_memory_usage: try: check_requirements("cache_memory") except DependencyException as e: raise ConfigError( e.message # noqa: B306, DependencyException.message is a property ) expire_caches = cache_config.get("expire_caches", True) cache_entry_ttl = cache_config.get("cache_entry_ttl", "30m") if expire_caches: self.expiry_time_msec: Optional[int] = self.parse_duration(cache_entry_ttl) else: self.expiry_time_msec = None # Backwards compatibility support for the now-removed "expiry_time" config flag. expiry_time = cache_config.get("expiry_time") if expiry_time and expire_caches: logger.warning( "You have set two incompatible options, expiry_time and expire_caches. Please only use the " "expire_caches and cache_entry_ttl options and delete the expiry_time option as it is " "deprecated." ) if expiry_time: logger.warning( "Expiry_time is a deprecated option, please use the expire_caches and cache_entry_ttl options " "instead." ) self.expiry_time_msec = self.parse_duration(expiry_time) self.sync_response_cache_duration = self.parse_duration( cache_config.get("sync_response_cache_duration", 0) ) # Resize all caches (if necessary) with the new factors we've loaded self.resize_all_caches() # Store this function so that it can be called from other classes without # needing an instance of Config properties.resize_all_caches_func = self.resize_all_caches def resize_all_caches(self) -> None: """Ensure all cache sizes are up to date For each cache, run the mapped callback function with either a specific cache factor or the default, global one. """ # block other threads from modifying _CACHES while we iterate it. with _CACHES_LOCK: for cache_name, callback in _CACHES.items(): new_factor = self.cache_factors.get(cache_name, self.global_factor) callback(new_factor) synapse-1.53.0/synapse/config/captcha.py000066400000000000000000000042711420514467300202000ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config class CaptchaConfig(Config): section = "captcha" def read_config(self, config, **kwargs): self.recaptcha_private_key = config.get("recaptcha_private_key") self.recaptcha_public_key = config.get("recaptcha_public_key") self.enable_registration_captcha = config.get( "enable_registration_captcha", False ) self.recaptcha_siteverify_api = config.get( "recaptcha_siteverify_api", "https://www.recaptcha.net/recaptcha/api/siteverify", ) self.recaptcha_template = self.read_template("recaptcha.html") def generate_config_section(self, **kwargs): return """\ ## Captcha ## # See docs/CAPTCHA_SETUP.md for full details of configuring this. # This homeserver's ReCAPTCHA public key. Must be specified if # enable_registration_captcha is enabled. # #recaptcha_public_key: "YOUR_PUBLIC_KEY" # This homeserver's ReCAPTCHA private key. Must be specified if # enable_registration_captcha is enabled. # #recaptcha_private_key: "YOUR_PRIVATE_KEY" # Uncomment to enable ReCaptcha checks when registering, preventing signup # unless a captcha is answered. Requires a valid ReCaptcha # public/private key. Defaults to 'false'. # #enable_registration_captcha: true # The API endpoint to use for verifying m.login.recaptcha responses. # Defaults to "https://www.recaptcha.net/recaptcha/api/siteverify". # #recaptcha_siteverify_api: "https://my.recaptcha.site" """ synapse-1.53.0/synapse/config/cas.py000066400000000000000000000070671420514467300173510ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Any, List from synapse.config.sso import SsoAttributeRequirement from ._base import Config from ._util import validate_config class CasConfig(Config): """Cas Configuration cas_server_url: URL of CAS server """ section = "cas" def read_config(self, config, **kwargs) -> None: cas_config = config.get("cas_config", None) self.cas_enabled = cas_config and cas_config.get("enabled", True) if self.cas_enabled: self.cas_server_url = cas_config["server_url"] # TODO Update this to a _synapse URL. public_baseurl = self.root.server.public_baseurl self.cas_service_url = public_baseurl + "_matrix/client/r0/login/cas/ticket" self.cas_displayname_attribute = cas_config.get("displayname_attribute") required_attributes = cas_config.get("required_attributes") or {} self.cas_required_attributes = _parsed_required_attributes_def( required_attributes ) else: self.cas_server_url = None self.cas_service_url = None self.cas_displayname_attribute = None self.cas_required_attributes = [] def generate_config_section(self, config_dir_path, server_name, **kwargs) -> str: return """\ # Enable Central Authentication Service (CAS) for registration and login. # cas_config: # Uncomment the following to enable authorization against a CAS server. # Defaults to false. # #enabled: true # The URL of the CAS authorization endpoint. # #server_url: "https://cas-server.com" # The attribute of the CAS response to use as the display name. # # If unset, no displayname will be set. # #displayname_attribute: name # It is possible to configure Synapse to only allow logins if CAS attributes # match particular values. All of the keys in the mapping below must exist # and the values must match the given value. Alternately if the given value # is None then any value is allowed (the attribute just must exist). # All of the listed attributes must match for the login to be permitted. # #required_attributes: # userGroup: "staff" # department: None """ # CAS uses a legacy required attributes mapping, not the one provided by # SsoAttributeRequirement. REQUIRED_ATTRIBUTES_SCHEMA = { "type": "object", "additionalProperties": {"anyOf": [{"type": "string"}, {"type": "null"}]}, } def _parsed_required_attributes_def( required_attributes: Any, ) -> List[SsoAttributeRequirement]: validate_config( REQUIRED_ATTRIBUTES_SCHEMA, required_attributes, config_path=("cas_config", "required_attributes"), ) return [SsoAttributeRequirement(k, v) for k, v in required_attributes.items()] synapse-1.53.0/synapse/config/consent.py000066400000000000000000000110771420514467300202500ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from os import path from typing import Optional from synapse.config import ConfigError from ._base import Config DEFAULT_CONFIG = """\ # User Consent configuration # # for detailed instructions, see # https://matrix-org.github.io/synapse/latest/consent_tracking.html # # Parts of this section are required if enabling the 'consent' resource under # 'listeners', in particular 'template_dir' and 'version'. # # 'template_dir' gives the location of the templates for the HTML forms. # This directory should contain one subdirectory per language (eg, 'en', 'fr'), # and each language directory should contain the policy document (named as # '.html') and a success page (success.html). # # 'version' specifies the 'current' version of the policy document. It defines # the version to be served by the consent resource if there is no 'v' # parameter. # # 'server_notice_content', if enabled, will send a user a "Server Notice" # asking them to consent to the privacy policy. The 'server_notices' section # must also be configured for this to work. Notices will *not* be sent to # guest users unless 'send_server_notice_to_guests' is set to true. # # 'block_events_error', if set, will block any attempts to send events # until the user consents to the privacy policy. The value of the setting is # used as the text of the error. # # 'require_at_registration', if enabled, will add a step to the registration # process, similar to how captcha works. Users will be required to accept the # policy before their account is created. # # 'policy_name' is the display name of the policy users will see when registering # for an account. Has no effect unless `require_at_registration` is enabled. # Defaults to "Privacy Policy". # #user_consent: # template_dir: res/templates/privacy # version: 1.0 # server_notice_content: # msgtype: m.text # body: >- # To continue using this homeserver you must review and agree to the # terms and conditions at %(consent_uri)s # send_server_notice_to_guests: true # block_events_error: >- # To continue using this homeserver you must review and agree to the # terms and conditions at %(consent_uri)s # require_at_registration: false # policy_name: Privacy Policy # """ class ConsentConfig(Config): section = "consent" def __init__(self, *args): super().__init__(*args) self.user_consent_version: Optional[str] = None self.user_consent_template_dir: Optional[str] = None self.user_consent_server_notice_content = None self.user_consent_server_notice_to_guests = False self.block_events_without_consent_error = None self.user_consent_at_registration = False self.user_consent_policy_name = "Privacy Policy" def read_config(self, config, **kwargs): consent_config = config.get("user_consent") self.terms_template = self.read_template("terms.html") if consent_config is None: return self.user_consent_version = str(consent_config["version"]) self.user_consent_template_dir = self.abspath(consent_config["template_dir"]) if not isinstance(self.user_consent_template_dir, str) or not path.isdir( self.user_consent_template_dir ): raise ConfigError( "Could not find template directory '%s'" % (self.user_consent_template_dir,) ) self.user_consent_server_notice_content = consent_config.get( "server_notice_content" ) self.block_events_without_consent_error = consent_config.get( "block_events_error" ) self.user_consent_server_notice_to_guests = bool( consent_config.get("send_server_notice_to_guests", False) ) self.user_consent_at_registration = bool( consent_config.get("require_at_registration", False) ) self.user_consent_policy_name = consent_config.get( "policy_name", "Privacy Policy" ) def generate_config_section(self, **kwargs): return DEFAULT_CONFIG synapse-1.53.0/synapse/config/database.py000066400000000000000000000170501420514467300203400ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import logging import os from synapse.config._base import Config, ConfigError logger = logging.getLogger(__name__) NON_SQLITE_DATABASE_PATH_WARNING = """\ Ignoring 'database_path' setting: not using a sqlite3 database. -------------------------------------------------------------------------------- """ DEFAULT_CONFIG = """\ ## Database ## # The 'database' setting defines the database that synapse uses to store all of # its data. # # 'name' gives the database engine to use: either 'sqlite3' (for SQLite) or # 'psycopg2' (for PostgreSQL). # # 'txn_limit' gives the maximum number of transactions to run per connection # before reconnecting. Defaults to 0, which means no limit. # # 'args' gives options which are passed through to the database engine, # except for options starting 'cp_', which are used to configure the Twisted # connection pool. For a reference to valid arguments, see: # * for sqlite: https://docs.python.org/3/library/sqlite3.html#sqlite3.connect # * for postgres: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS # * for the connection pool: https://twistedmatrix.com/documents/current/api/twisted.enterprise.adbapi.ConnectionPool.html#__init__ # # # Example SQLite configuration: # #database: # name: sqlite3 # args: # database: /path/to/homeserver.db # # # Example Postgres configuration: # #database: # name: psycopg2 # txn_limit: 10000 # args: # user: synapse_user # password: secretpassword # database: synapse # host: localhost # port: 5432 # cp_min: 5 # cp_max: 10 # # For more information on using Synapse with Postgres, # see https://matrix-org.github.io/synapse/latest/postgres.html. # database: name: sqlite3 args: database: %(database_path)s """ class DatabaseConnectionConfig: """Contains the connection config for a particular database. Args: name: A label for the database, used for logging. db_config: The config for a particular database, as per `database` section of main config. Has three fields: `name` for database module name, `args` for the args to give to the database connector, and optional `data_stores` that is a list of stores to provision on this database (defaulting to all). """ def __init__(self, name: str, db_config: dict): db_engine = db_config.get("name", "sqlite3") if db_engine not in ("sqlite3", "psycopg2"): raise ConfigError("Unsupported database type %r" % (db_engine,)) if db_engine == "sqlite3": db_config.setdefault("args", {}).update( {"cp_min": 1, "cp_max": 1, "check_same_thread": False} ) data_stores = db_config.get("data_stores") if data_stores is None: data_stores = ["main", "state"] self.name = name self.config = db_config # The `data_stores` config is actually talking about `databases` (we # changed the name). self.databases = data_stores class DatabaseConfig(Config): section = "database" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.databases = [] def read_config(self, config, **kwargs) -> None: # We *experimentally* support specifying multiple databases via the # `databases` key. This is a map from a label to database config in the # same format as the `database` config option, plus an extra # `data_stores` key to specify which data store goes where. For example: # # databases: # master: # name: psycopg2 # data_stores: ["main"] # args: {} # state: # name: psycopg2 # data_stores: ["state"] # args: {} multi_database_config = config.get("databases") database_config = config.get("database") database_path = config.get("database_path") if multi_database_config and database_config: raise ConfigError("Can't specify both 'database' and 'databases' in config") if multi_database_config: if database_path: raise ConfigError("Can't specify 'database_path' with 'databases'") self.databases = [ DatabaseConnectionConfig(name, db_conf) for name, db_conf in multi_database_config.items() ] if database_config: self.databases = [DatabaseConnectionConfig("master", database_config)] if database_path: if self.databases and self.databases[0].name != "sqlite3": logger.warning(NON_SQLITE_DATABASE_PATH_WARNING) return database_config = {"name": "sqlite3", "args": {}} self.databases = [DatabaseConnectionConfig("master", database_config)] self.set_databasepath(database_path) def generate_config_section(self, data_dir_path, **kwargs) -> str: return DEFAULT_CONFIG % { "database_path": os.path.join(data_dir_path, "homeserver.db") } def read_arguments(self, args: argparse.Namespace) -> None: """ Cases for the cli input: - If no databases are configured and no database_path is set, raise. - No databases and only database_path available ==> sqlite3 db. - If there are multiple databases and a database_path raise an error. - If the database set in the config file is sqlite then overwrite with the command line argument. """ if args.database_path is None: if not self.databases: raise ConfigError("No database config provided") return if len(self.databases) == 0: database_config = {"name": "sqlite3", "args": {}} self.databases = [DatabaseConnectionConfig("master", database_config)] self.set_databasepath(args.database_path) return if self.get_single_database().name == "sqlite3": self.set_databasepath(args.database_path) else: logger.warning(NON_SQLITE_DATABASE_PATH_WARNING) def set_databasepath(self, database_path: str) -> None: if database_path != ":memory:": database_path = self.abspath(database_path) self.databases[0].config["args"]["database"] = database_path @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: db_group = parser.add_argument_group("database") db_group.add_argument( "-d", "--database-path", metavar="SQLITE_DATABASE_PATH", help="The path to a sqlite database to use.", ) def get_single_database(self) -> DatabaseConnectionConfig: """Returns the database if there is only one, useful for e.g. tests""" if not self.databases: raise Exception("More than one database exists") return self.databases[0] synapse-1.53.0/synapse/config/emailconfig.py000066400000000000000000000543251420514467300210570ustar00rootroot00000000000000# Copyright 2015-2016 OpenMarket Ltd # Copyright 2017-2018 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This file can't be called email.py because if it is, we cannot: import email.utils import logging import os from enum import Enum import attr from ._base import Config, ConfigError logger = logging.getLogger(__name__) MISSING_PASSWORD_RESET_CONFIG_ERROR = """\ Password reset emails are enabled on this homeserver due to a partial 'email' block. However, the following required keys are missing: %s """ DEFAULT_SUBJECTS = { "message_from_person_in_room": "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room...", "message_from_person": "[%(app)s] You have a message on %(app)s from %(person)s...", "messages_from_person": "[%(app)s] You have messages on %(app)s from %(person)s...", "messages_in_room": "[%(app)s] You have messages on %(app)s in the %(room)s room...", "messages_in_room_and_others": "[%(app)s] You have messages on %(app)s in the %(room)s room and others...", "messages_from_person_and_others": "[%(app)s] You have messages on %(app)s from %(person)s and others...", "invite_from_person": "[%(app)s] %(person)s has invited you to chat on %(app)s...", "invite_from_person_to_room": "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s...", "invite_from_person_to_space": "[%(app)s] %(person)s has invited you to join the %(space)s space on %(app)s...", "password_reset": "[%(server_name)s] Password reset", "email_validation": "[%(server_name)s] Validate your email", } LEGACY_TEMPLATE_DIR_WARNING = """ This server's configuration file is using the deprecated 'template_dir' setting in the 'email' section. Support for this setting has been deprecated and will be removed in a future version of Synapse. Server admins should instead use the new 'custom_templates_directory' setting documented here: https://matrix-org.github.io/synapse/latest/templates.html ---------------------------------------------------------------------------------------""" @attr.s(slots=True, frozen=True, auto_attribs=True) class EmailSubjectConfig: message_from_person_in_room: str message_from_person: str messages_from_person: str messages_in_room: str messages_in_room_and_others: str messages_from_person_and_others: str invite_from_person: str invite_from_person_to_room: str invite_from_person_to_space: str password_reset: str email_validation: str class EmailConfig(Config): section = "email" def read_config(self, config, **kwargs): # TODO: We should separate better the email configuration from the notification # and account validity config. self.email_enable_notifs = False email_config = config.get("email") if email_config is None: email_config = {} self.email_smtp_host = email_config.get("smtp_host", "localhost") self.email_smtp_port = email_config.get("smtp_port", 25) self.email_smtp_user = email_config.get("smtp_user", None) self.email_smtp_pass = email_config.get("smtp_pass", None) self.require_transport_security = email_config.get( "require_transport_security", False ) self.enable_smtp_tls = email_config.get("enable_tls", True) if self.require_transport_security and not self.enable_smtp_tls: raise ConfigError( "email.require_transport_security requires email.enable_tls to be true" ) if "app_name" in email_config: self.email_app_name = email_config["app_name"] else: self.email_app_name = "Matrix" # TODO: Rename notif_from to something more generic, or have a separate # from for password resets, message notifications, etc? # Currently the email section is a bit bogged down with settings for # multiple functions. Would be good to split it out into separate # sections and only put the common ones under email: self.email_notif_from = email_config.get("notif_from", None) if self.email_notif_from is not None: # make sure it's valid parsed = email.utils.parseaddr(self.email_notif_from) if parsed[1] == "": raise RuntimeError("Invalid notif_from address") # A user-configurable template directory template_dir = email_config.get("template_dir") if template_dir is not None: logger.warning(LEGACY_TEMPLATE_DIR_WARNING) if isinstance(template_dir, str): # We need an absolute path, because we change directory after starting (and # we don't yet know what auxiliary templates like mail.css we will need). template_dir = os.path.abspath(template_dir) elif template_dir is not None: # If template_dir is something other than a str or None, warn the user raise ConfigError("Config option email.template_dir must be type str") self.email_enable_notifs = email_config.get("enable_notifs", False) self.threepid_behaviour_email = ( # Have Synapse handle the email sending if account_threepid_delegates.email # is not defined # msisdn is currently always remote while Synapse does not support any method of # sending SMS messages ThreepidBehaviour.REMOTE if self.root.registration.account_threepid_delegate_email else ThreepidBehaviour.LOCAL ) if config.get("trust_identity_server_for_password_resets"): raise ConfigError( 'The config option "trust_identity_server_for_password_resets" ' 'has been replaced by "account_threepid_delegate". ' "Please consult the sample config at docs/sample_config.yaml for " "details and update your config file." ) self.local_threepid_handling_disabled_due_to_email_config = False if ( self.threepid_behaviour_email == ThreepidBehaviour.LOCAL and email_config == {} ): # We cannot warn the user this has happened here # Instead do so when a user attempts to reset their password self.local_threepid_handling_disabled_due_to_email_config = True self.threepid_behaviour_email = ThreepidBehaviour.OFF # Get lifetime of a validation token in milliseconds self.email_validation_token_lifetime = self.parse_duration( email_config.get("validation_token_lifetime", "1h") ) if self.threepid_behaviour_email == ThreepidBehaviour.LOCAL: missing = [] if not self.email_notif_from: missing.append("email.notif_from") if missing: raise ConfigError( MISSING_PASSWORD_RESET_CONFIG_ERROR % (", ".join(missing),) ) # These email templates have placeholders in them, and thus must be # parsed using a templating engine during a request password_reset_template_html = email_config.get( "password_reset_template_html", "password_reset.html" ) password_reset_template_text = email_config.get( "password_reset_template_text", "password_reset.txt" ) registration_template_html = email_config.get( "registration_template_html", "registration.html" ) registration_template_text = email_config.get( "registration_template_text", "registration.txt" ) add_threepid_template_html = email_config.get( "add_threepid_template_html", "add_threepid.html" ) add_threepid_template_text = email_config.get( "add_threepid_template_text", "add_threepid.txt" ) password_reset_template_failure_html = email_config.get( "password_reset_template_failure_html", "password_reset_failure.html" ) registration_template_failure_html = email_config.get( "registration_template_failure_html", "registration_failure.html" ) add_threepid_template_failure_html = email_config.get( "add_threepid_template_failure_html", "add_threepid_failure.html" ) # These templates do not support any placeholder variables, so we # will read them from disk once during setup password_reset_template_success_html = email_config.get( "password_reset_template_success_html", "password_reset_success.html" ) registration_template_success_html = email_config.get( "registration_template_success_html", "registration_success.html" ) add_threepid_template_success_html = email_config.get( "add_threepid_template_success_html", "add_threepid_success.html" ) # Read all templates from disk ( self.email_password_reset_template_html, self.email_password_reset_template_text, self.email_registration_template_html, self.email_registration_template_text, self.email_add_threepid_template_html, self.email_add_threepid_template_text, self.email_password_reset_template_confirmation_html, self.email_password_reset_template_failure_html, self.email_registration_template_failure_html, self.email_add_threepid_template_failure_html, password_reset_template_success_html_template, registration_template_success_html_template, add_threepid_template_success_html_template, ) = self.read_templates( [ password_reset_template_html, password_reset_template_text, registration_template_html, registration_template_text, add_threepid_template_html, add_threepid_template_text, "password_reset_confirmation.html", password_reset_template_failure_html, registration_template_failure_html, add_threepid_template_failure_html, password_reset_template_success_html, registration_template_success_html, add_threepid_template_success_html, ], ( td for td in ( self.root.server.custom_template_directory, template_dir, ) if td ), # Filter out template_dir if not provided ) # Render templates that do not contain any placeholders self.email_password_reset_template_success_html_content = ( password_reset_template_success_html_template.render() ) self.email_registration_template_success_html_content = ( registration_template_success_html_template.render() ) self.email_add_threepid_template_success_html_content = ( add_threepid_template_success_html_template.render() ) if self.email_enable_notifs: missing = [] if not self.email_notif_from: missing.append("email.notif_from") if missing: raise ConfigError( "email.enable_notifs is True but required keys are missing: %s" % (", ".join(missing),) ) notif_template_html = email_config.get( "notif_template_html", "notif_mail.html" ) notif_template_text = email_config.get( "notif_template_text", "notif_mail.txt" ) ( self.email_notif_template_html, self.email_notif_template_text, ) = self.read_templates( [notif_template_html, notif_template_text], ( td for td in ( self.root.server.custom_template_directory, template_dir, ) if td ), # Filter out template_dir if not provided ) self.email_notif_for_new_users = email_config.get( "notif_for_new_users", True ) self.email_riot_base_url = email_config.get( "client_base_url", email_config.get("riot_base_url", None) ) if self.root.account_validity.account_validity_renew_by_email_enabled: expiry_template_html = email_config.get( "expiry_template_html", "notice_expiry.html" ) expiry_template_text = email_config.get( "expiry_template_text", "notice_expiry.txt" ) ( self.account_validity_template_html, self.account_validity_template_text, ) = self.read_templates( [expiry_template_html, expiry_template_text], ( td for td in ( self.root.server.custom_template_directory, template_dir, ) if td ), # Filter out template_dir if not provided ) subjects_config = email_config.get("subjects", {}) subjects = {} for key, default in DEFAULT_SUBJECTS.items(): subjects[key] = subjects_config.get(key, default) self.email_subjects = EmailSubjectConfig(**subjects) # The invite client location should be a HTTP(S) URL or None. self.invite_client_location = email_config.get("invite_client_location") or None if self.invite_client_location: if not isinstance(self.invite_client_location, str): raise ConfigError( "Config option email.invite_client_location must be type str" ) if not ( self.invite_client_location.startswith("http://") or self.invite_client_location.startswith("https://") ): raise ConfigError( "Config option email.invite_client_location must be a http or https URL", path=("email", "invite_client_location"), ) def generate_config_section(self, config_dir_path, server_name, **kwargs): return ( """\ # Configuration for sending emails from Synapse. # # Server admins can configure custom templates for email content. See # https://matrix-org.github.io/synapse/latest/templates.html for more information. # email: # The hostname of the outgoing SMTP server to use. Defaults to 'localhost'. # #smtp_host: mail.server # The port on the mail server for outgoing SMTP. Defaults to 25. # #smtp_port: 587 # Username/password for authentication to the SMTP server. By default, no # authentication is attempted. # #smtp_user: "exampleusername" #smtp_pass: "examplepassword" # Uncomment the following to require TLS transport security for SMTP. # By default, Synapse will connect over plain text, and will then switch to # TLS via STARTTLS *if the SMTP server supports it*. If this option is set, # Synapse will refuse to connect unless the server supports STARTTLS. # #require_transport_security: true # Uncomment the following to disable TLS for SMTP. # # By default, if the server supports TLS, it will be used, and the server # must present a certificate that is valid for 'smtp_host'. If this option # is set to false, TLS will not be used. # #enable_tls: false # notif_from defines the "From" address to use when sending emails. # It must be set if email sending is enabled. # # The placeholder '%%(app)s' will be replaced by the application name, # which is normally 'app_name' (below), but may be overridden by the # Matrix client application. # # Note that the placeholder must be written '%%(app)s', including the # trailing 's'. # #notif_from: "Your Friendly %%(app)s homeserver " # app_name defines the default value for '%%(app)s' in notif_from and email # subjects. It defaults to 'Matrix'. # #app_name: my_branded_matrix_server # Uncomment the following to enable sending emails for messages that the user # has missed. Disabled by default. # #enable_notifs: true # Uncomment the following to disable automatic subscription to email # notifications for new users. Enabled by default. # #notif_for_new_users: false # Custom URL for client links within the email notifications. By default # links will be based on "https://matrix.to". # # (This setting used to be called riot_base_url; the old name is still # supported for backwards-compatibility but is now deprecated.) # #client_base_url: "http://localhost/riot" # Configure the time that a validation email will expire after sending. # Defaults to 1h. # #validation_token_lifetime: 15m # The web client location to direct users to during an invite. This is passed # to the identity server as the org.matrix.web_client_location key. Defaults # to unset, giving no guidance to the identity server. # #invite_client_location: https://app.element.io # Subjects to use when sending emails from Synapse. # # The placeholder '%%(app)s' will be replaced with the value of the 'app_name' # setting above, or by a value dictated by the Matrix client application. # # If a subject isn't overridden in this configuration file, the value used as # its example will be used. # #subjects: # Subjects for notification emails. # # On top of the '%%(app)s' placeholder, these can use the following # placeholders: # # * '%%(person)s', which will be replaced by the display name of the user(s) # that sent the message(s), e.g. "Alice and Bob". # * '%%(room)s', which will be replaced by the name of the room the # message(s) have been sent to, e.g. "My super room". # # See the example provided for each setting to see which placeholder can be # used and how to use them. # # Subject to use to notify about one message from one or more user(s) in a # room which has a name. #message_from_person_in_room: "%(message_from_person_in_room)s" # # Subject to use to notify about one message from one or more user(s) in a # room which doesn't have a name. #message_from_person: "%(message_from_person)s" # # Subject to use to notify about multiple messages from one or more users in # a room which doesn't have a name. #messages_from_person: "%(messages_from_person)s" # # Subject to use to notify about multiple messages in a room which has a # name. #messages_in_room: "%(messages_in_room)s" # # Subject to use to notify about multiple messages in multiple rooms. #messages_in_room_and_others: "%(messages_in_room_and_others)s" # # Subject to use to notify about multiple messages from multiple persons in # multiple rooms. This is similar to the setting above except it's used when # the room in which the notification was triggered has no name. #messages_from_person_and_others: "%(messages_from_person_and_others)s" # # Subject to use to notify about an invite to a room which has a name. #invite_from_person_to_room: "%(invite_from_person_to_room)s" # # Subject to use to notify about an invite to a room which doesn't have a # name. #invite_from_person: "%(invite_from_person)s" # Subject for emails related to account administration. # # On top of the '%%(app)s' placeholder, these one can use the # '%%(server_name)s' placeholder, which will be replaced by the value of the # 'server_name' setting in your Synapse configuration. # # Subject to use when sending a password reset email. #password_reset: "%(password_reset)s" # # Subject to use when sending a verification email to assert an address's # ownership. #email_validation: "%(email_validation)s" """ % DEFAULT_SUBJECTS ) class ThreepidBehaviour(Enum): """ Enum to define the behaviour of Synapse with regards to when it contacts an identity server for 3pid registration and password resets REMOTE = use an external server to send tokens LOCAL = send tokens ourselves OFF = disable registration via 3pid and password resets """ REMOTE = "remote" LOCAL = "local" OFF = "off" synapse-1.53.0/synapse/config/experimental.py000066400000000000000000000054661420514467300213010ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.config._base import Config from synapse.types import JsonDict class ExperimentalConfig(Config): """Config section for enabling experimental features""" section = "experimental" def read_config(self, config: JsonDict, **kwargs): experimental = config.get("experimental_features") or {} # MSC3440 (thread relation) self.msc3440_enabled: bool = experimental.get("msc3440_enabled", False) # MSC3666: including bundled relations in /search. self.msc3666_enabled: bool = experimental.get("msc3666_enabled", False) # MSC3026 (busy presence state) self.msc3026_enabled: bool = experimental.get("msc3026_enabled", False) # MSC2716 (importing historical messages) self.msc2716_enabled: bool = experimental.get("msc2716_enabled", False) # MSC2285 (hidden read receipts) self.msc2285_enabled: bool = experimental.get("msc2285_enabled", False) # MSC3244 (room version capabilities) self.msc3244_enabled: bool = experimental.get("msc3244_enabled", True) # MSC3283 (set displayname, avatar_url and change 3pid capabilities) self.msc3283_enabled: bool = experimental.get("msc3283_enabled", False) # MSC3266 (room summary api) self.msc3266_enabled: bool = experimental.get("msc3266_enabled", False) # MSC3030 (Jump to date API endpoint) self.msc3030_enabled: bool = experimental.get("msc3030_enabled", False) # The portion of MSC3202 which is related to device masquerading. self.msc3202_device_masquerading_enabled: bool = experimental.get( "msc3202_device_masquerading", False ) # MSC2409 (this setting only relates to optionally sending to-device messages). # Presence, typing and read receipt EDUs are already sent to application services that # have opted in to receive them. If enabled, this adds to-device messages to that list. self.msc2409_to_device_messages_enabled: bool = experimental.get( "msc2409_to_device_messages_enabled", False ) # MSC3706 (server-side support for partial state in /send_join responses) self.msc3706_enabled: bool = experimental.get("msc3706_enabled", False) synapse-1.53.0/synapse/config/federation.py000066400000000000000000000071431420514467300207160ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Optional from synapse.config._base import Config from synapse.config._util import validate_config class FederationConfig(Config): section = "federation" def read_config(self, config, **kwargs): # FIXME: federation_domain_whitelist needs sytests self.federation_domain_whitelist: Optional[dict] = None federation_domain_whitelist = config.get("federation_domain_whitelist", None) if federation_domain_whitelist is not None: # turn the whitelist into a hash for speed of lookup self.federation_domain_whitelist = {} for domain in federation_domain_whitelist: self.federation_domain_whitelist[domain] = True federation_metrics_domains = config.get("federation_metrics_domains") or [] validate_config( _METRICS_FOR_DOMAINS_SCHEMA, federation_metrics_domains, ("federation_metrics_domains",), ) self.federation_metrics_domains = set(federation_metrics_domains) self.allow_profile_lookup_over_federation = config.get( "allow_profile_lookup_over_federation", True ) self.allow_device_name_lookup_over_federation = config.get( "allow_device_name_lookup_over_federation", True ) def generate_config_section(self, config_dir_path, server_name, **kwargs): return """\ ## Federation ## # Restrict federation to the following whitelist of domains. # N.B. we recommend also firewalling your federation listener to limit # inbound federation traffic as early as possible, rather than relying # purely on this application-layer restriction. If not specified, the # default is to whitelist everything. # #federation_domain_whitelist: # - lon.example.com # - nyc.example.com # - syd.example.com # Report prometheus metrics on the age of PDUs being sent to and received from # the following domains. This can be used to give an idea of "delay" on inbound # and outbound federation, though be aware that any delay can be due to problems # at either end or with the intermediate network. # # By default, no domains are monitored in this way. # #federation_metrics_domains: # - matrix.org # - example.com # Uncomment to disable profile lookup over federation. By default, the # Federation API allows other homeservers to obtain profile data of any user # on this homeserver. Defaults to 'true'. # #allow_profile_lookup_over_federation: false # Uncomment to disable device display name lookup over federation. By default, the # Federation API allows other homeservers to obtain device display names of any user # on this homeserver. Defaults to 'true'. # #allow_device_name_lookup_over_federation: false """ _METRICS_FOR_DOMAINS_SCHEMA = {"type": "array", "items": {"type": "string"}} synapse-1.53.0/synapse/config/groups.py000066400000000000000000000023371420514467300201150ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config class GroupsConfig(Config): section = "groups" def read_config(self, config, **kwargs): self.enable_group_creation = config.get("enable_group_creation", False) self.group_creation_prefix = config.get("group_creation_prefix", "") def generate_config_section(self, **kwargs): return """\ # Uncomment to allow non-server-admin users to create groups on this server # #enable_group_creation: true # If enabled, non server admins can only create groups with local parts # starting with this prefix # #group_creation_prefix: "unofficial_" """ synapse-1.53.0/synapse/config/homeserver.py000066400000000000000000000061461420514467300207570ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import RootConfig from .account_validity import AccountValidityConfig from .api import ApiConfig from .appservice import AppServiceConfig from .auth import AuthConfig from .cache import CacheConfig from .captcha import CaptchaConfig from .cas import CasConfig from .consent import ConsentConfig from .database import DatabaseConfig from .emailconfig import EmailConfig from .experimental import ExperimentalConfig from .federation import FederationConfig from .groups import GroupsConfig from .jwt import JWTConfig from .key import KeyConfig from .logger import LoggingConfig from .metrics import MetricsConfig from .modules import ModulesConfig from .oembed import OembedConfig from .oidc import OIDCConfig from .password_auth_providers import PasswordAuthProviderConfig from .push import PushConfig from .ratelimiting import RatelimitConfig from .redis import RedisConfig from .registration import RegistrationConfig from .repository import ContentRepositoryConfig from .retention import RetentionConfig from .room import RoomConfig from .room_directory import RoomDirectoryConfig from .saml2 import SAML2Config from .server import ServerConfig from .server_notices import ServerNoticesConfig from .spam_checker import SpamCheckerConfig from .sso import SSOConfig from .stats import StatsConfig from .third_party_event_rules import ThirdPartyRulesConfig from .tls import TlsConfig from .tracer import TracerConfig from .user_directory import UserDirectoryConfig from .voip import VoipConfig from .workers import WorkerConfig class HomeServerConfig(RootConfig): config_classes = [ ModulesConfig, ServerConfig, RetentionConfig, TlsConfig, FederationConfig, CacheConfig, DatabaseConfig, LoggingConfig, RatelimitConfig, ContentRepositoryConfig, OembedConfig, CaptchaConfig, VoipConfig, RegistrationConfig, AccountValidityConfig, MetricsConfig, ApiConfig, AppServiceConfig, KeyConfig, SAML2Config, OIDCConfig, CasConfig, SSOConfig, JWTConfig, AuthConfig, EmailConfig, PasswordAuthProviderConfig, PushConfig, SpamCheckerConfig, RoomConfig, GroupsConfig, UserDirectoryConfig, ConsentConfig, StatsConfig, ServerNoticesConfig, RoomDirectoryConfig, ThirdPartyRulesConfig, TracerConfig, WorkerConfig, RedisConfig, ExperimentalConfig, ] synapse-1.53.0/synapse/config/jwt.py000066400000000000000000000102261420514467300173760ustar00rootroot00000000000000# Copyright 2015 Niklas Riekenbrauck # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config, ConfigError MISSING_JWT = """Missing jwt library. This is required for jwt login. Install by running: pip install pyjwt """ class JWTConfig(Config): section = "jwt" def read_config(self, config, **kwargs): jwt_config = config.get("jwt_config", None) if jwt_config: self.jwt_enabled = jwt_config.get("enabled", False) self.jwt_secret = jwt_config["secret"] self.jwt_algorithm = jwt_config["algorithm"] self.jwt_subject_claim = jwt_config.get("subject_claim", "sub") # The issuer and audiences are optional, if provided, it is asserted # that the claims exist on the JWT. self.jwt_issuer = jwt_config.get("issuer") self.jwt_audiences = jwt_config.get("audiences") try: import jwt jwt # To stop unused lint. except ImportError: raise ConfigError(MISSING_JWT) else: self.jwt_enabled = False self.jwt_secret = None self.jwt_algorithm = None self.jwt_subject_claim = None self.jwt_issuer = None self.jwt_audiences = None def generate_config_section(self, **kwargs): return """\ # JSON web token integration. The following settings can be used to make # Synapse JSON web tokens for authentication, instead of its internal # password database. # # Each JSON Web Token needs to contain a "sub" (subject) claim, which is # used as the localpart of the mxid. # # Additionally, the expiration time ("exp"), not before time ("nbf"), # and issued at ("iat") claims are validated if present. # # Note that this is a non-standard login type and client support is # expected to be non-existent. # # See https://matrix-org.github.io/synapse/latest/jwt.html. # #jwt_config: # Uncomment the following to enable authorization using JSON web # tokens. Defaults to false. # #enabled: true # This is either the private shared secret or the public key used to # decode the contents of the JSON web token. # # Required if 'enabled' is true. # #secret: "provided-by-your-issuer" # The algorithm used to sign the JSON web token. # # Supported algorithms are listed at # https://pyjwt.readthedocs.io/en/latest/algorithms.html # # Required if 'enabled' is true. # #algorithm: "provided-by-your-issuer" # Name of the claim containing a unique identifier for the user. # # Optional, defaults to `sub`. # #subject_claim: "sub" # The issuer to validate the "iss" claim against. # # Optional, if provided the "iss" claim will be required and # validated for all JSON web tokens. # #issuer: "provided-by-your-issuer" # A list of audiences to validate the "aud" claim against. # # Optional, if provided the "aud" claim will be required and # validated for all JSON web tokens. # # Note that if the "aud" claim is included in a JSON web token then # validation will fail without configuring audiences. # #audiences: # - "provided-by-your-issuer" """ synapse-1.53.0/synapse/config/key.py000066400000000000000000000433371420514467300173730ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import hashlib import logging import os from typing import Any, Dict, Iterator, List, Optional import attr import jsonschema from signedjson.key import ( NACL_ED25519, SigningKey, VerifyKey, decode_signing_key_base64, decode_verify_key_bytes, generate_signing_key, is_signing_algorithm_supported, read_signing_keys, write_signing_keys, ) from unpaddedbase64 import decode_base64 from synapse.types import JsonDict from synapse.util.stringutils import random_string, random_string_with_symbols from ._base import Config, ConfigError INSECURE_NOTARY_ERROR = """\ Your server is configured to accept key server responses without signature validation or TLS certificate validation. This is likely to be very insecure. If you are *sure* you want to do this, set 'accept_keys_insecurely' on the keyserver configuration.""" RELYING_ON_MATRIX_KEY_ERROR = """\ Your server is configured to accept key server responses without TLS certificate validation, and which are only signed by the old (possibly compromised) matrix.org signing key 'ed25519:auto'. This likely isn't what you want to do, and you should enable 'federation_verify_certificates' in your configuration. If you are *sure* you want to do this, set 'accept_keys_insecurely' on the trusted_key_server configuration.""" TRUSTED_KEY_SERVER_NOT_CONFIGURED_WARN = """\ Synapse requires that a list of trusted key servers are specified in order to provide signing keys for other servers in the federation. This homeserver does not have a trusted key server configured in homeserver.yaml and will fall back to the default of 'matrix.org'. Trusted key servers should be long-lived and stable which makes matrix.org a good choice for many admins, but some admins may wish to choose another. To suppress this warning, the admin should set 'trusted_key_servers' in homeserver.yaml to their desired key server and 'suppress_key_server_warning' to 'true'. In a future release the software-defined default will be removed entirely and the trusted key server will be defined exclusively by the value of 'trusted_key_servers'. --------------------------------------------------------------------------------""" TRUSTED_KEY_SERVER_CONFIGURED_AS_M_ORG_WARN = """\ This server is configured to use 'matrix.org' as its trusted key server via the 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key server since it is long-lived, stable and trusted. However, some admins may wish to use another server for this purpose. To suppress this warning and continue using 'matrix.org', admins should set 'suppress_key_server_warning' to 'true' in homeserver.yaml. --------------------------------------------------------------------------------""" logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) class TrustedKeyServer: # name of the server. server_name: str # map from key id to key object, or None to disable signature verification. verify_keys: Optional[Dict[str, VerifyKey]] = None class KeyConfig(Config): section = "key" def read_config(self, config, config_dir_path, **kwargs): # the signing key can be specified inline or in a separate file if "signing_key" in config: self.signing_key = read_signing_keys([config["signing_key"]]) else: signing_key_path = config.get("signing_key_path") if signing_key_path is None: signing_key_path = os.path.join( config_dir_path, config["server_name"] + ".signing.key" ) self.signing_key = self.read_signing_keys(signing_key_path, "signing_key") self.old_signing_keys = self.read_old_signing_keys( config.get("old_signing_keys") ) self.key_refresh_interval = self.parse_duration( config.get("key_refresh_interval", "1d") ) suppress_key_server_warning = config.get("suppress_key_server_warning", False) key_server_signing_keys_path = config.get("key_server_signing_keys_path") if key_server_signing_keys_path: self.key_server_signing_keys = self.read_signing_keys( key_server_signing_keys_path, "key_server_signing_keys_path" ) else: self.key_server_signing_keys = list(self.signing_key) # if neither trusted_key_servers nor perspectives are given, use the default. if "perspectives" not in config and "trusted_key_servers" not in config: logger.warning(TRUSTED_KEY_SERVER_NOT_CONFIGURED_WARN) key_servers = [{"server_name": "matrix.org"}] else: key_servers = config.get("trusted_key_servers", []) if not isinstance(key_servers, list): raise ConfigError( "trusted_key_servers, if given, must be a list, not a %s" % (type(key_servers).__name__,) ) # merge the 'perspectives' config into the 'trusted_key_servers' config. key_servers.extend(_perspectives_to_key_servers(config)) if not suppress_key_server_warning and "matrix.org" in ( s["server_name"] for s in key_servers ): logger.warning(TRUSTED_KEY_SERVER_CONFIGURED_AS_M_ORG_WARN) # list of TrustedKeyServer objects self.key_servers = list( _parse_key_servers( key_servers, self.root.tls.federation_verify_certificates ) ) self.macaroon_secret_key = config.get( "macaroon_secret_key", self.root.registration.registration_shared_secret ) if not self.macaroon_secret_key: # Unfortunately, there are people out there that don't have this # set. Lets just be "nice" and derive one from their secret key. logger.warning("Config is missing macaroon_secret_key") seed = bytes(self.signing_key[0]) self.macaroon_secret_key = hashlib.sha256(seed).digest() # a secret which is used to calculate HMACs for form values, to stop # falsification of values self.form_secret = config.get("form_secret", None) def generate_config_section( self, config_dir_path, server_name, generate_secrets=False, **kwargs ): base_key_name = os.path.join(config_dir_path, server_name) if generate_secrets: macaroon_secret_key = 'macaroon_secret_key: "%s"' % ( random_string_with_symbols(50), ) form_secret = 'form_secret: "%s"' % random_string_with_symbols(50) else: macaroon_secret_key = "#macaroon_secret_key: " form_secret = "#form_secret: " return ( """\ # a secret which is used to sign access tokens. If none is specified, # the registration_shared_secret is used, if one is given; otherwise, # a secret key is derived from the signing key. # %(macaroon_secret_key)s # a secret which is used to calculate HMACs for form values, to stop # falsification of values. Must be specified for the User Consent # forms to work. # %(form_secret)s ## Signing Keys ## # Path to the signing key to sign messages with # signing_key_path: "%(base_key_name)s.signing.key" # The keys that the server used to sign messages with but won't use # to sign new messages. # old_signing_keys: # For each key, `key` should be the base64-encoded public key, and # `expired_ts`should be the time (in milliseconds since the unix epoch) that # it was last used. # # It is possible to build an entry from an old signing.key file using the # `export_signing_key` script which is provided with synapse. # # For example: # #"ed25519:id": { key: "base64string", expired_ts: 123456789123 } # How long key response published by this server is valid for. # Used to set the valid_until_ts in /key/v2 APIs. # Determines how quickly servers will query to check which keys # are still valid. # #key_refresh_interval: 1d # The trusted servers to download signing keys from. # # When we need to fetch a signing key, each server is tried in parallel. # # Normally, the connection to the key server is validated via TLS certificates. # Additional security can be provided by configuring a `verify key`, which # will make synapse check that the response is signed by that key. # # This setting supercedes an older setting named `perspectives`. The old format # is still supported for backwards-compatibility, but it is deprecated. # # 'trusted_key_servers' defaults to matrix.org, but using it will generate a # warning on start-up. To suppress this warning, set # 'suppress_key_server_warning' to true. # # Options for each entry in the list include: # # server_name: the name of the server. required. # # verify_keys: an optional map from key id to base64-encoded public key. # If specified, we will check that the response is signed by at least # one of the given keys. # # accept_keys_insecurely: a boolean. Normally, if `verify_keys` is unset, # and federation_verify_certificates is not `true`, synapse will refuse # to start, because this would allow anyone who can spoof DNS responses # to masquerade as the trusted key server. If you know what you are doing # and are sure that your network environment provides a secure connection # to the key server, you can set this to `true` to override this # behaviour. # # An example configuration might look like: # #trusted_key_servers: # - server_name: "my_trusted_server.example.com" # verify_keys: # "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr" # - server_name: "my_other_trusted_server.example.com" # trusted_key_servers: - server_name: "matrix.org" # Uncomment the following to disable the warning that is emitted when the # trusted_key_servers include 'matrix.org'. See above. # #suppress_key_server_warning: true # The signing keys to use when acting as a trusted key server. If not specified # defaults to the server signing key. # # Can contain multiple keys, one per line. # #key_server_signing_keys_path: "key_server_signing_keys.key" """ % locals() ) def read_signing_keys(self, signing_key_path: str, name: str) -> List[SigningKey]: """Read the signing keys in the given path. Args: signing_key_path name: Associated config key name Returns: The signing keys read from the given path. """ signing_keys = self.read_file(signing_key_path, name) try: return read_signing_keys(signing_keys.splitlines(True)) except Exception as e: raise ConfigError("Error reading %s: %s" % (name, str(e))) def read_old_signing_keys( self, old_signing_keys: Optional[JsonDict] ) -> Dict[str, VerifyKey]: if old_signing_keys is None: return {} keys = {} for key_id, key_data in old_signing_keys.items(): if is_signing_algorithm_supported(key_id): key_base64 = key_data["key"] key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) verify_key.expired_ts = key_data["expired_ts"] keys[key_id] = verify_key else: raise ConfigError( "Unsupported signing algorithm for old key: %r" % (key_id,) ) return keys def generate_files(self, config: Dict[str, Any], config_dir_path: str) -> None: if "signing_key" in config: return signing_key_path = config.get("signing_key_path") if signing_key_path is None: signing_key_path = os.path.join( config_dir_path, config["server_name"] + ".signing.key" ) if not self.path_exists(signing_key_path): print("Generating signing key file %s" % (signing_key_path,)) with open(signing_key_path, "w") as signing_key_file: key_id = "a_" + random_string(4) write_signing_keys(signing_key_file, (generate_signing_key(key_id),)) else: signing_keys = self.read_file(signing_key_path, "signing_key") if len(signing_keys.split("\n")[0].split()) == 1: # handle keys in the old format. key_id = "a_" + random_string(4) key = decode_signing_key_base64( NACL_ED25519, key_id, signing_keys.split("\n")[0] ) with open(signing_key_path, "w") as signing_key_file: write_signing_keys(signing_key_file, (key,)) def _perspectives_to_key_servers(config: JsonDict) -> Iterator[JsonDict]: """Convert old-style 'perspectives' configs into new-style 'trusted_key_servers' Returns an iterable of entries to add to trusted_key_servers. """ # 'perspectives' looks like: # # { # "servers": { # "matrix.org": { # "verify_keys": { # "ed25519:auto": { # "key": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw" # } # } # } # } # } # # 'trusted_keys' looks like: # # [ # { # "server_name": "matrix.org", # "verify_keys": { # "ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw", # } # } # ] perspectives_servers = config.get("perspectives", {}).get("servers", {}) for server_name, server_opts in perspectives_servers.items(): trusted_key_server_entry = {"server_name": server_name} verify_keys = server_opts.get("verify_keys") if verify_keys is not None: trusted_key_server_entry["verify_keys"] = { key_id: key_data["key"] for key_id, key_data in verify_keys.items() } yield trusted_key_server_entry TRUSTED_KEY_SERVERS_SCHEMA = { "$schema": "http://json-schema.org/draft-04/schema#", "description": "schema for the trusted_key_servers setting", "type": "array", "items": { "type": "object", "properties": { "server_name": {"type": "string"}, "verify_keys": { "type": "object", # each key must be a base64 string "additionalProperties": {"type": "string"}, }, }, "required": ["server_name"], }, } def _parse_key_servers( key_servers: List[Any], federation_verify_certificates: bool ) -> Iterator[TrustedKeyServer]: try: jsonschema.validate(key_servers, TRUSTED_KEY_SERVERS_SCHEMA) except jsonschema.ValidationError as e: raise ConfigError( "Unable to parse 'trusted_key_servers': {}".format( e.message # noqa: B306, jsonschema.ValidationError.message is a valid attribute ) ) for server in key_servers: server_name = server["server_name"] result = TrustedKeyServer(server_name=server_name) verify_keys = server.get("verify_keys") if verify_keys is not None: result.verify_keys = {} for key_id, key_base64 in verify_keys.items(): if not is_signing_algorithm_supported(key_id): raise ConfigError( "Unsupported signing algorithm on key %s for server %s in " "trusted_key_servers" % (key_id, server_name) ) try: key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) except Exception as e: raise ConfigError( "Unable to parse key %s for server %s in " "trusted_key_servers: %s" % (key_id, server_name, e) ) result.verify_keys[key_id] = verify_key if not federation_verify_certificates and not server.get( "accept_keys_insecurely" ): _assert_keyserver_has_verify_keys(result) yield result def _assert_keyserver_has_verify_keys(trusted_key_server: TrustedKeyServer) -> None: if not trusted_key_server.verify_keys: raise ConfigError(INSECURE_NOTARY_ERROR) # also check that they are not blindly checking the old matrix.org key if trusted_key_server.server_name == "matrix.org" and any( key_id == "ed25519:auto" for key_id in trusted_key_server.verify_keys ): raise ConfigError(RELYING_ON_MATRIX_KEY_ERROR) synapse-1.53.0/synapse/config/logger.py000066400000000000000000000274741420514467300200660ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import logging import logging.config import os import sys import threading from string import Template from typing import TYPE_CHECKING, Any, Dict, Optional import yaml from matrix_common.versionstring import get_distribution_version_string from zope.interface import implementer from twisted.logger import ( ILogObserver, LogBeginner, STDLibLogObserver, eventAsText, globalLogBeginner, ) from synapse.logging._structured import setup_structured_logging from synapse.logging.context import LoggingContextFilter from synapse.logging.filter import MetadataFilter from ._base import Config, ConfigError if TYPE_CHECKING: from synapse.config.homeserver import HomeServerConfig from synapse.server import HomeServer DEFAULT_LOG_CONFIG = Template( """\ # Log configuration for Synapse. # # This is a YAML file containing a standard Python logging configuration # dictionary. See [1] for details on the valid settings. # # Synapse also supports structured logging for machine readable logs which can # be ingested by ELK stacks. See [2] for details. # # [1]: https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema # [2]: https://matrix-org.github.io/synapse/latest/structured_logging.html version: 1 formatters: precise: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - \ %(request)s - %(message)s' handlers: file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: ${log_file} when: midnight backupCount: 3 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. # WARNING/ERROR logs will still be flushed immediately, but there will be a # delay (of up to `period` seconds, or until the buffer is full with # `capacity` messages) before INFO/DEBUG logs get written. buffer: class: synapse.logging.handlers.PeriodicallyFlushingMemoryHandler target: file # The capacity is the maximum number of log lines that are buffered # before being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. # This parameter is required. capacity: 10 # Logs with a level at or above the flush level will cause the buffer to # be flushed immediately. # Default value: 40 (ERROR) # Other values: 50 (CRITICAL), 30 (WARNING), 20 (INFO), 10 (DEBUG) flushLevel: 30 # Flush immediately for WARNING logs and higher # The period of time, in seconds, between forced flushes. # Messages will not be delayed for longer than this time. # Default value: 5 seconds period: 5 # A handler that writes logs to stderr. Unused by default, but can be used # instead of "buffer" and "file" in the logger handlers. console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO twisted: # We send the twisted logging directly to the file handler, # to work around https://github.com/matrix-org/synapse/issues/3471 # when using "buffer" logger. Use "console" to log to stderr instead. handlers: [file] propagate: false root: level: INFO # Write logs to the `buffer` handler, which will buffer them together in memory, # then write them to a file. # # Replace "buffer" with "console" to log to stderr instead. (Note that you'll # also need to update the configuration for the `twisted` logger above, in # this case.) # handlers: [buffer] disable_existing_loggers: false """ ) LOG_FILE_ERROR = """\ Support for the log_file configuration option and --log-file command-line option was removed in Synapse 1.3.0. You should instead set up a separate log configuration file. """ class LoggingConfig(Config): section = "logging" def read_config(self, config, **kwargs) -> None: if config.get("log_file"): raise ConfigError(LOG_FILE_ERROR) self.log_config = self.abspath(config.get("log_config")) self.no_redirect_stdio = config.get("no_redirect_stdio", False) def generate_config_section(self, config_dir_path, server_name, **kwargs) -> str: log_config = os.path.join(config_dir_path, server_name + ".log.config") return ( """\ ## Logging ## # A yaml python logging config file as described by # https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema # log_config: "%(log_config)s" """ % locals() ) def read_arguments(self, args: argparse.Namespace) -> None: if args.no_redirect_stdio is not None: self.no_redirect_stdio = args.no_redirect_stdio if args.log_file is not None: raise ConfigError(LOG_FILE_ERROR) @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: logging_group = parser.add_argument_group("logging") logging_group.add_argument( "-n", "--no-redirect-stdio", action="store_true", default=None, help="Do not redirect stdout/stderr to the log", ) logging_group.add_argument( "-f", "--log-file", dest="log_file", help=argparse.SUPPRESS, ) def generate_files(self, config: Dict[str, Any], config_dir_path: str) -> None: log_config = config.get("log_config") if log_config and not os.path.exists(log_config): log_file = self.abspath("homeserver.log") print( "Generating log config file %s which will log to %s" % (log_config, log_file) ) with open(log_config, "w") as log_config_file: log_config_file.write(DEFAULT_LOG_CONFIG.substitute(log_file=log_file)) def _setup_stdlib_logging( config: "HomeServerConfig", log_config_path: Optional[str], logBeginner: LogBeginner ) -> None: """ Set up Python standard library logging. """ if log_config_path is None: log_format = ( "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s" " - %(message)s" ) logger = logging.getLogger("") logger.setLevel(logging.INFO) logging.getLogger("synapse.storage.SQL").setLevel(logging.INFO) formatter = logging.Formatter(log_format) handler = logging.StreamHandler() handler.setFormatter(formatter) logger.addHandler(handler) else: # Load the logging configuration. _load_logging_config(log_config_path) # We add a log record factory that runs all messages through the # LoggingContextFilter so that we get the context *at the time we log* # rather than when we write to a handler. This can be done in config using # filter options, but care must when using e.g. MemoryHandler to buffer # writes. log_context_filter = LoggingContextFilter() log_metadata_filter = MetadataFilter({"server_name": config.server.server_name}) old_factory = logging.getLogRecordFactory() def factory(*args: Any, **kwargs: Any) -> logging.LogRecord: record = old_factory(*args, **kwargs) log_context_filter.filter(record) log_metadata_filter.filter(record) return record logging.setLogRecordFactory(factory) # Route Twisted's native logging through to the standard library logging # system. observer = STDLibLogObserver() threadlocal = threading.local() @implementer(ILogObserver) def _log(event: dict) -> None: if "log_text" in event: if event["log_text"].startswith("DNSDatagramProtocol starting on "): return if event["log_text"].startswith("(UDP Port "): return if event["log_text"].startswith("Timing out client"): return # this is a workaround to make sure we don't get stack overflows when the # logging system raises an error which is written to stderr which is redirected # to the logging system, etc. if getattr(threadlocal, "active", False): # write the text of the event, if any, to the *real* stderr (which may # be redirected to /dev/null, but there's not much we can do) try: event_text = eventAsText(event) print("logging during logging: %s" % event_text, file=sys.__stderr__) except Exception: # gah. pass return try: threadlocal.active = True return observer(event) finally: threadlocal.active = False logBeginner.beginLoggingTo([_log], redirectStandardIO=False) def _load_logging_config(log_config_path: str) -> None: """ Configure logging from a log config path. """ with open(log_config_path, "rb") as f: log_config = yaml.safe_load(f.read()) if not log_config: logging.warning("Loaded a blank logging config?") # If the old structured logging configuration is being used, convert it to # the new style configuration. if "structured" in log_config and log_config.get("structured"): log_config = setup_structured_logging(log_config) logging.config.dictConfig(log_config) def _reload_logging_config(log_config_path: Optional[str]) -> None: """ Reload the log configuration from the file and apply it. """ # If no log config path was given, it cannot be reloaded. if log_config_path is None: return _load_logging_config(log_config_path) logging.info("Reloaded log config from %s due to SIGHUP", log_config_path) def setup_logging( hs: "HomeServer", config: "HomeServerConfig", use_worker_options: bool = False, logBeginner: LogBeginner = globalLogBeginner, ) -> None: """ Set up the logging subsystem. Args: config (LoggingConfig | synapse.config.worker.WorkerConfig): configuration data use_worker_options (bool): True to use the 'worker_log_config' option instead of 'log_config'. logBeginner: The Twisted logBeginner to use. """ log_config_path = ( config.worker.worker_log_config if use_worker_options else config.logging.log_config ) # Perform one-time logging configuration. _setup_stdlib_logging(config, log_config_path, logBeginner=logBeginner) # Add a SIGHUP handler to reload the logging configuration, if one is available. from synapse.app import _base as appbase appbase.register_sighup(_reload_logging_config, log_config_path) # Log immediately so we can grep backwards. logging.warning("***** STARTING SERVER *****") logging.warning( "Server %s version %s", sys.argv[0], get_distribution_version_string("matrix-synapse"), ) logging.info("Server hostname: %s", config.server.server_name) logging.info("Instance name: %s", hs.get_instance_name()) synapse-1.53.0/synapse/config/metrics.py000066400000000000000000000077751420514467300202570ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import attr from synapse.python_dependencies import DependencyException, check_requirements from ._base import Config, ConfigError @attr.s class MetricsFlags: known_servers: bool = attr.ib( default=False, validator=attr.validators.instance_of(bool) ) @classmethod def all_off(cls) -> "MetricsFlags": """ Instantiate the flags with all options set to off. """ return cls(**{x.name: False for x in attr.fields(cls)}) class MetricsConfig(Config): section = "metrics" def read_config(self, config, **kwargs): self.enable_metrics = config.get("enable_metrics", False) self.report_stats = config.get("report_stats", None) self.report_stats_endpoint = config.get( "report_stats_endpoint", "https://matrix.org/report-usage-stats/push" ) self.metrics_port = config.get("metrics_port") self.metrics_bind_host = config.get("metrics_bind_host", "127.0.0.1") if self.enable_metrics: _metrics_config = config.get("metrics_flags") or {} self.metrics_flags = MetricsFlags(**_metrics_config) else: self.metrics_flags = MetricsFlags.all_off() self.sentry_enabled = "sentry" in config if self.sentry_enabled: try: check_requirements("sentry") except DependencyException as e: raise ConfigError( e.message # noqa: B306, DependencyException.message is a property ) self.sentry_dsn = config["sentry"].get("dsn") if not self.sentry_dsn: raise ConfigError( "sentry.dsn field is required when sentry integration is enabled" ) def generate_config_section(self, report_stats=None, **kwargs): res = """\ ## Metrics ### # Enable collection and rendering of performance metrics # #enable_metrics: false # Enable sentry integration # NOTE: While attempts are made to ensure that the logs don't contain # any sensitive information, this cannot be guaranteed. By enabling # this option the sentry server may therefore receive sensitive # information, and it in turn may then diseminate sensitive information # through insecure notification channels if so configured. # #sentry: # dsn: "..." # Flags to enable Prometheus metrics which are not suitable to be # enabled by default, either for performance reasons or limited use. # metrics_flags: # Publish synapse_federation_known_servers, a gauge of the number of # servers this homeserver knows about, including itself. May cause # performance problems on large homeservers. # #known_servers: true # Whether or not to report anonymized homeserver usage statistics. # """ if report_stats is None: res += "#report_stats: true|false\n" else: res += "report_stats: %s\n" % ("true" if report_stats else "false") res += """ # The endpoint to report the anonymized homeserver usage statistics to. # Defaults to https://matrix.org/report-usage-stats/push # #report_stats_endpoint: https://example.com/report-usage-stats/push """ return res synapse-1.53.0/synapse/config/modules.py000066400000000000000000000035351420514467300202470ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Any, Dict, List, Tuple from synapse.config._base import Config, ConfigError from synapse.util.module_loader import load_module class ModulesConfig(Config): section = "modules" def read_config(self, config: dict, **kwargs): self.loaded_modules: List[Tuple[Any, Dict]] = [] configured_modules = config.get("modules") or [] for i, module in enumerate(configured_modules): config_path = ("modules", "" % i) if not isinstance(module, dict): raise ConfigError("expected a mapping", config_path) self.loaded_modules.append(load_module(module, config_path)) def generate_config_section(self, **kwargs): return """ ## Modules ## # Server admins can expand Synapse's functionality with external modules. # # See https://matrix-org.github.io/synapse/latest/modules/index.html for more # documentation on how to configure or create custom modules for Synapse. # modules: #- module: my_super_module.MySuperClass # config: # do_thing: true #- module: my_other_super_module.SomeClass # config: {} """ synapse-1.53.0/synapse/config/oembed.py000066400000000000000000000155711420514467300200350ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json import re from typing import Any, Dict, Iterable, List, Optional, Pattern from urllib import parse as urlparse import attr import pkg_resources from synapse.types import JsonDict from ._base import Config, ConfigError from ._util import validate_config @attr.s(slots=True, frozen=True, auto_attribs=True) class OEmbedEndpointConfig: # The API endpoint to fetch. api_endpoint: str # The patterns to match. url_patterns: List[Pattern] # The supported formats. formats: Optional[List[str]] class OembedConfig(Config): """oEmbed Configuration""" section = "oembed" def read_config(self, config, **kwargs): oembed_config: Dict[str, Any] = config.get("oembed") or {} # A list of patterns which will be used. self.oembed_patterns: List[OEmbedEndpointConfig] = list( self._parse_and_validate_providers(oembed_config) ) def _parse_and_validate_providers( self, oembed_config: dict ) -> Iterable[OEmbedEndpointConfig]: """Extract and parse the oEmbed providers from the given JSON file. Returns a generator which yields the OidcProviderConfig objects """ # Whether to use the packaged providers.json file. if not oembed_config.get("disable_default_providers") or False: providers = json.load( pkg_resources.resource_stream("synapse", "res/providers.json") ) yield from self._parse_and_validate_provider( providers, config_path=("oembed",) ) # The JSON files which includes additional provider information. for i, file in enumerate(oembed_config.get("additional_providers") or []): # TODO Error checking. with open(file) as f: providers = json.load(f) yield from self._parse_and_validate_provider( providers, config_path=( "oembed", "additional_providers", f"", ), ) def _parse_and_validate_provider( self, providers: List[JsonDict], config_path: Iterable[str] ) -> Iterable[OEmbedEndpointConfig]: # Ensure it is the proper form. validate_config( _OEMBED_PROVIDER_SCHEMA, providers, config_path=config_path, ) # Parse it and yield each result. for provider in providers: # Each provider might have multiple API endpoints, each which # might have multiple patterns to match. for endpoint in provider["endpoints"]: api_endpoint = endpoint["url"] # The API endpoint must be an HTTP(S) URL. results = urlparse.urlparse(api_endpoint) if results.scheme not in {"http", "https"}: raise ConfigError( f"Unsupported oEmbed scheme ({results.scheme}) for endpoint {api_endpoint}", config_path, ) patterns = [ self._glob_to_pattern(glob, config_path) for glob in endpoint["schemes"] ] yield OEmbedEndpointConfig( api_endpoint, patterns, endpoint.get("formats") ) def _glob_to_pattern(self, glob: str, config_path: Iterable[str]) -> Pattern: """ Convert the glob into a sane regular expression to match against. The rules followed will be slightly different for the domain portion vs. the rest. 1. The scheme must be one of HTTP / HTTPS (and have no globs). 2. The domain can have globs, but we limit it to characters that can reasonably be a domain part. TODO: This does not attempt to handle Unicode domain names. TODO: The domain should not allow wildcard TLDs. 3. Other parts allow a glob to be any one, or more, characters. """ results = urlparse.urlparse(glob) # The scheme must be HTTP(S) (and cannot contain wildcards). if results.scheme not in {"http", "https"}: raise ConfigError( f"Unsupported oEmbed scheme ({results.scheme}) for pattern: {glob}", config_path, ) pattern = urlparse.urlunparse( [ results.scheme, re.escape(results.netloc).replace("\\*", "[a-zA-Z0-9_-]+"), ] + [re.escape(part).replace("\\*", ".+") for part in results[2:]] ) return re.compile(pattern) def generate_config_section(self, **kwargs): return """\ # oEmbed allows for easier embedding content from a website. It can be # used for generating URLs previews of services which support it. # oembed: # A default list of oEmbed providers is included with Synapse. # # Uncomment the following to disable using these default oEmbed URLs. # Defaults to 'false'. # #disable_default_providers: true # Additional files with oEmbed configuration (each should be in the # form of providers.json). # # By default, this list is empty (so only the default providers.json # is used). # #additional_providers: # - oembed/my_providers.json """ _OEMBED_PROVIDER_SCHEMA = { "type": "array", "items": { "type": "object", "properties": { "provider_name": {"type": "string"}, "provider_url": {"type": "string"}, "endpoints": { "type": "array", "items": { "type": "object", "properties": { "schemes": { "type": "array", "items": {"type": "string"}, }, "url": {"type": "string"}, "formats": {"type": "array", "items": {"type": "string"}}, "discovery": {"type": "boolean"}, }, "required": ["schemes", "url"], }, }, }, "required": ["provider_name", "provider_url", "endpoints"], }, } synapse-1.53.0/synapse/config/oidc.py000066400000000000000000000612331420514467300175140ustar00rootroot00000000000000# Copyright 2020 Quentin Gliech # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from collections import Counter from typing import Any, Collection, Iterable, List, Mapping, Optional, Tuple, Type import attr from synapse.config._util import validate_config from synapse.config.sso import SsoAttributeRequirement from synapse.python_dependencies import DependencyException, check_requirements from synapse.types import JsonDict from synapse.util.module_loader import load_module from synapse.util.stringutils import parse_and_validate_mxc_uri from ._base import Config, ConfigError, read_file DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.oidc.JinjaOidcMappingProvider" # The module that JinjaOidcMappingProvider is in was renamed, we want to # transparently handle both the same. LEGACY_USER_MAPPING_PROVIDER = "synapse.handlers.oidc_handler.JinjaOidcMappingProvider" class OIDCConfig(Config): section = "oidc" def read_config(self, config, **kwargs) -> None: self.oidc_providers = tuple(_parse_oidc_provider_configs(config)) if not self.oidc_providers: return try: check_requirements("oidc") except DependencyException as e: raise ConfigError( e.message # noqa: B306, DependencyException.message is a property ) from e # check we don't have any duplicate idp_ids now. (The SSO handler will also # check for duplicates when the REST listeners get registered, but that happens # after synapse has forked so doesn't give nice errors.) c = Counter([i.idp_id for i in self.oidc_providers]) for idp_id, count in c.items(): if count > 1: raise ConfigError( "Multiple OIDC providers have the idp_id %r." % idp_id ) public_baseurl = self.root.server.public_baseurl self.oidc_callback_url = public_baseurl + "_synapse/client/oidc/callback" @property def oidc_enabled(self) -> bool: # OIDC is enabled if we have a provider return bool(self.oidc_providers) def generate_config_section(self, config_dir_path, server_name, **kwargs) -> str: return """\ # List of OpenID Connect (OIDC) / OAuth 2.0 identity providers, for registration # and login. # # Options for each entry include: # # idp_id: a unique identifier for this identity provider. Used internally # by Synapse; should be a single word such as 'github'. # # Note that, if this is changed, users authenticating via that provider # will no longer be recognised as the same user! # # (Use "oidc" here if you are migrating from an old "oidc_config" # configuration.) # # idp_name: A user-facing name for this identity provider, which is used to # offer the user a choice of login mechanisms. # # idp_icon: An optional icon for this identity provider, which is presented # by clients and Synapse's own IdP picker page. If given, must be an # MXC URI of the format mxc:///. (An easy way to # obtain such an MXC URI is to upload an image to an (unencrypted) room # and then copy the "url" from the source of the event.) # # idp_brand: An optional brand for this identity provider, allowing clients # to style the login flow according to the identity provider in question. # See the spec for possible options here. # # discover: set to 'false' to disable the use of the OIDC discovery mechanism # to discover endpoints. Defaults to true. # # issuer: Required. The OIDC issuer. Used to validate tokens and (if discovery # is enabled) to discover the provider's endpoints. # # client_id: Required. oauth2 client id to use. # # client_secret: oauth2 client secret to use. May be omitted if # client_secret_jwt_key is given, or if client_auth_method is 'none'. # # client_secret_jwt_key: Alternative to client_secret: details of a key used # to create a JSON Web Token to be used as an OAuth2 client secret. If # given, must be a dictionary with the following properties: # # key: a pem-encoded signing key. Must be a suitable key for the # algorithm specified. Required unless 'key_file' is given. # # key_file: the path to file containing a pem-encoded signing key file. # Required unless 'key' is given. # # jwt_header: a dictionary giving properties to include in the JWT # header. Must include the key 'alg', giving the algorithm used to # sign the JWT, such as "ES256", using the JWA identifiers in # RFC7518. # # jwt_payload: an optional dictionary giving properties to include in # the JWT payload. Normally this should include an 'iss' key. # # client_auth_method: auth method to use when exchanging the token. Valid # values are 'client_secret_basic' (default), 'client_secret_post' and # 'none'. # # scopes: list of scopes to request. This should normally include the "openid" # scope. Defaults to ["openid"]. # # authorization_endpoint: the oauth2 authorization endpoint. Required if # provider discovery is disabled. # # token_endpoint: the oauth2 token endpoint. Required if provider discovery is # disabled. # # userinfo_endpoint: the OIDC userinfo endpoint. Required if discovery is # disabled and the 'openid' scope is not requested. # # jwks_uri: URI where to fetch the JWKS. Required if discovery is disabled and # the 'openid' scope is used. # # skip_verification: set to 'true' to skip metadata verification. Use this if # you are connecting to a provider that is not OpenID Connect compliant. # Defaults to false. Avoid this in production. # # user_profile_method: Whether to fetch the user profile from the userinfo # endpoint, or to rely on the data returned in the id_token from the # token_endpoint. # # Valid values are: 'auto' or 'userinfo_endpoint'. # # Defaults to 'auto', which uses the userinfo endpoint if 'openid' is # not included in 'scopes'. Set to 'userinfo_endpoint' to always use the # userinfo endpoint. # # allow_existing_users: set to 'true' to allow a user logging in via OIDC to # match a pre-existing account instead of failing. This could be used if # switching from password logins to OIDC. Defaults to false. # # user_mapping_provider: Configuration for how attributes returned from a OIDC # provider are mapped onto a matrix user. This setting has the following # sub-properties: # # module: The class name of a custom mapping module. Default is # {mapping_provider!r}. # See https://matrix-org.github.io/synapse/latest/sso_mapping_providers.html#openid-mapping-providers # for information on implementing a custom mapping provider. # # config: Configuration for the mapping provider module. This section will # be passed as a Python dictionary to the user mapping provider # module's `parse_config` method. # # For the default provider, the following settings are available: # # subject_claim: name of the claim containing a unique identifier # for the user. Defaults to 'sub', which OpenID Connect # compliant providers should provide. # # localpart_template: Jinja2 template for the localpart of the MXID. # If this is not set, the user will be prompted to choose their # own username (see 'sso_auth_account_details.html' in the 'sso' # section of this file). # # display_name_template: Jinja2 template for the display name to set # on first login. If unset, no displayname will be set. # # email_template: Jinja2 template for the email address of the user. # If unset, no email address will be added to the account. # # extra_attributes: a map of Jinja2 templates for extra attributes # to send back to the client during login. # Note that these are non-standard and clients will ignore them # without modifications. # # When rendering, the Jinja2 templates are given a 'user' variable, # which is set to the claims returned by the UserInfo Endpoint and/or # in the ID Token. # # It is possible to configure Synapse to only allow logins if certain attributes # match particular values in the OIDC userinfo. The requirements can be listed under # `attribute_requirements` as shown below. All of the listed attributes must # match for the login to be permitted. Additional attributes can be added to # userinfo by expanding the `scopes` section of the OIDC config to retrieve # additional information from the OIDC provider. # # If the OIDC claim is a list, then the attribute must match any value in the list. # Otherwise, it must exactly match the value of the claim. Using the example # below, the `family_name` claim MUST be "Stephensson", but the `groups` # claim MUST contain "admin". # # attribute_requirements: # - attribute: family_name # value: "Stephensson" # - attribute: groups # value: "admin" # # See https://matrix-org.github.io/synapse/latest/openid.html # for information on how to configure these options. # # For backwards compatibility, it is also possible to configure a single OIDC # provider via an 'oidc_config' setting. This is now deprecated and admins are # advised to migrate to the 'oidc_providers' format. (When doing that migration, # use 'oidc' for the idp_id to ensure that existing users continue to be # recognised.) # oidc_providers: # Generic example # #- idp_id: my_idp # idp_name: "My OpenID provider" # idp_icon: "mxc://example.com/mediaid" # discover: false # issuer: "https://accounts.example.com/" # client_id: "provided-by-your-issuer" # client_secret: "provided-by-your-issuer" # client_auth_method: client_secret_post # scopes: ["openid", "profile"] # authorization_endpoint: "https://accounts.example.com/oauth2/auth" # token_endpoint: "https://accounts.example.com/oauth2/token" # userinfo_endpoint: "https://accounts.example.com/userinfo" # jwks_uri: "https://accounts.example.com/.well-known/jwks.json" # skip_verification: true # user_mapping_provider: # config: # subject_claim: "id" # localpart_template: "{{{{ user.login }}}}" # display_name_template: "{{{{ user.name }}}}" # email_template: "{{{{ user.email }}}}" # attribute_requirements: # - attribute: userGroup # value: "synapseUsers" """.format( mapping_provider=DEFAULT_USER_MAPPING_PROVIDER ) # jsonschema definition of the configuration settings for an oidc identity provider OIDC_PROVIDER_CONFIG_SCHEMA = { "type": "object", "required": ["issuer", "client_id"], "properties": { "idp_id": { "type": "string", "minLength": 1, # MSC2858 allows a maxlen of 255, but we prefix with "oidc-" "maxLength": 250, "pattern": "^[A-Za-z0-9._~-]+$", }, "idp_name": {"type": "string"}, "idp_icon": {"type": "string"}, "idp_brand": { "type": "string", "minLength": 1, "maxLength": 255, "pattern": "^[a-z][a-z0-9_.-]*$", }, "discover": {"type": "boolean"}, "issuer": {"type": "string"}, "client_id": {"type": "string"}, "client_secret": {"type": "string"}, "client_secret_jwt_key": { "type": "object", "required": ["jwt_header"], "oneOf": [ {"required": ["key"]}, {"required": ["key_file"]}, ], "properties": { "key": {"type": "string"}, "key_file": {"type": "string"}, "jwt_header": { "type": "object", "required": ["alg"], "properties": { "alg": {"type": "string"}, }, "additionalProperties": {"type": "string"}, }, "jwt_payload": { "type": "object", "additionalProperties": {"type": "string"}, }, }, }, "client_auth_method": { "type": "string", # the following list is the same as the keys of # authlib.oauth2.auth.ClientAuth.DEFAULT_AUTH_METHODS. We inline it # to avoid importing authlib here. "enum": ["client_secret_basic", "client_secret_post", "none"], }, "scopes": {"type": "array", "items": {"type": "string"}}, "authorization_endpoint": {"type": "string"}, "token_endpoint": {"type": "string"}, "userinfo_endpoint": {"type": "string"}, "jwks_uri": {"type": "string"}, "skip_verification": {"type": "boolean"}, "user_profile_method": { "type": "string", "enum": ["auto", "userinfo_endpoint"], }, "allow_existing_users": {"type": "boolean"}, "user_mapping_provider": {"type": ["object", "null"]}, "attribute_requirements": { "type": "array", "items": SsoAttributeRequirement.JSON_SCHEMA, }, }, } # the same as OIDC_PROVIDER_CONFIG_SCHEMA, but with compulsory idp_id and idp_name OIDC_PROVIDER_CONFIG_WITH_ID_SCHEMA = { "allOf": [OIDC_PROVIDER_CONFIG_SCHEMA, {"required": ["idp_id", "idp_name"]}] } # the `oidc_providers` list can either be None (as it is in the default config), or # a list of provider configs, each of which requires an explicit ID and name. OIDC_PROVIDER_LIST_SCHEMA = { "oneOf": [ {"type": "null"}, {"type": "array", "items": OIDC_PROVIDER_CONFIG_WITH_ID_SCHEMA}, ] } # the `oidc_config` setting can either be None (which it used to be in the default # config), or an object. If an object, it is ignored unless it has an "enabled: True" # property. # # It's *possible* to represent this with jsonschema, but the resultant errors aren't # particularly clear, so we just check for either an object or a null here, and do # additional checks in the code. OIDC_CONFIG_SCHEMA = {"oneOf": [{"type": "null"}, {"type": "object"}]} # the top-level schema can contain an "oidc_config" and/or an "oidc_providers". MAIN_CONFIG_SCHEMA = { "type": "object", "properties": { "oidc_config": OIDC_CONFIG_SCHEMA, "oidc_providers": OIDC_PROVIDER_LIST_SCHEMA, }, } def _parse_oidc_provider_configs(config: JsonDict) -> Iterable["OidcProviderConfig"]: """extract and parse the OIDC provider configs from the config dict The configuration may contain either a single `oidc_config` object with an `enabled: True` property, or a list of provider configurations under `oidc_providers`, *or both*. Returns a generator which yields the OidcProviderConfig objects """ validate_config(MAIN_CONFIG_SCHEMA, config, ()) for i, p in enumerate(config.get("oidc_providers") or []): yield _parse_oidc_config_dict(p, ("oidc_providers", "" % (i,))) # for backwards-compatibility, it is also possible to provide a single "oidc_config" # object with an "enabled: True" property. oidc_config = config.get("oidc_config") if oidc_config and oidc_config.get("enabled", False): # MAIN_CONFIG_SCHEMA checks that `oidc_config` is an object, but not that # it matches OIDC_PROVIDER_CONFIG_SCHEMA (see the comments on OIDC_CONFIG_SCHEMA # above), so now we need to validate it. validate_config(OIDC_PROVIDER_CONFIG_SCHEMA, oidc_config, ("oidc_config",)) yield _parse_oidc_config_dict(oidc_config, ("oidc_config",)) def _parse_oidc_config_dict( oidc_config: JsonDict, config_path: Tuple[str, ...] ) -> "OidcProviderConfig": """Take the configuration dict and parse it into an OidcProviderConfig Raises: ConfigError if the configuration is malformed. """ ump_config = oidc_config.get("user_mapping_provider", {}) ump_config.setdefault("module", DEFAULT_USER_MAPPING_PROVIDER) if ump_config.get("module") == LEGACY_USER_MAPPING_PROVIDER: ump_config["module"] = DEFAULT_USER_MAPPING_PROVIDER ump_config.setdefault("config", {}) ( user_mapping_provider_class, user_mapping_provider_config, ) = load_module(ump_config, config_path + ("user_mapping_provider",)) # Ensure loaded user mapping module has defined all necessary methods required_methods = [ "get_remote_user_id", "map_user_attributes", ] missing_methods = [ method for method in required_methods if not hasattr(user_mapping_provider_class, method) ] if missing_methods: raise ConfigError( "Class %s is missing required " "methods: %s" % ( user_mapping_provider_class, ", ".join(missing_methods), ), config_path + ("user_mapping_provider", "module"), ) idp_id = oidc_config.get("idp_id", "oidc") # prefix the given IDP with a prefix specific to the SSO mechanism, to avoid # clashes with other mechs (such as SAML, CAS). # # We allow "oidc" as an exception so that people migrating from old-style # "oidc_config" format (which has long used "oidc" as its idp_id) can migrate to # a new-style "oidc_providers" entry without changing the idp_id for their provider # (and thereby invalidating their user_external_ids data). if idp_id != "oidc": idp_id = "oidc-" + idp_id # MSC2858 also specifies that the idp_icon must be a valid MXC uri idp_icon = oidc_config.get("idp_icon") if idp_icon is not None: try: parse_and_validate_mxc_uri(idp_icon) except ValueError as e: raise ConfigError( "idp_icon must be a valid MXC URI", config_path + ("idp_icon",) ) from e client_secret_jwt_key_config = oidc_config.get("client_secret_jwt_key") client_secret_jwt_key: Optional[OidcProviderClientSecretJwtKey] = None if client_secret_jwt_key_config is not None: keyfile = client_secret_jwt_key_config.get("key_file") if keyfile: key = read_file(keyfile, config_path + ("client_secret_jwt_key",)) else: key = client_secret_jwt_key_config["key"] client_secret_jwt_key = OidcProviderClientSecretJwtKey( key=key, jwt_header=client_secret_jwt_key_config["jwt_header"], jwt_payload=client_secret_jwt_key_config.get("jwt_payload", {}), ) # parse attribute_requirements from config (list of dicts) into a list of SsoAttributeRequirement attribute_requirements = [ SsoAttributeRequirement(**x) for x in oidc_config.get("attribute_requirements", []) ] return OidcProviderConfig( idp_id=idp_id, idp_name=oidc_config.get("idp_name", "OIDC"), idp_icon=idp_icon, idp_brand=oidc_config.get("idp_brand"), discover=oidc_config.get("discover", True), issuer=oidc_config["issuer"], client_id=oidc_config["client_id"], client_secret=oidc_config.get("client_secret"), client_secret_jwt_key=client_secret_jwt_key, client_auth_method=oidc_config.get("client_auth_method", "client_secret_basic"), scopes=oidc_config.get("scopes", ["openid"]), authorization_endpoint=oidc_config.get("authorization_endpoint"), token_endpoint=oidc_config.get("token_endpoint"), userinfo_endpoint=oidc_config.get("userinfo_endpoint"), jwks_uri=oidc_config.get("jwks_uri"), skip_verification=oidc_config.get("skip_verification", False), user_profile_method=oidc_config.get("user_profile_method", "auto"), allow_existing_users=oidc_config.get("allow_existing_users", False), user_mapping_provider_class=user_mapping_provider_class, user_mapping_provider_config=user_mapping_provider_config, attribute_requirements=attribute_requirements, ) @attr.s(slots=True, frozen=True, auto_attribs=True) class OidcProviderClientSecretJwtKey: # a pem-encoded signing key key: str # properties to include in the JWT header jwt_header: Mapping[str, str] # properties to include in the JWT payload. jwt_payload: Mapping[str, str] @attr.s(slots=True, frozen=True, auto_attribs=True) class OidcProviderConfig: # a unique identifier for this identity provider. Used in the 'user_external_ids' # table, as well as the query/path parameter used in the login protocol. idp_id: str # user-facing name for this identity provider. idp_name: str # Optional MXC URI for icon for this IdP. idp_icon: Optional[str] # Optional brand identifier for this IdP. idp_brand: Optional[str] # whether the OIDC discovery mechanism is used to discover endpoints discover: bool # the OIDC issuer. Used to validate tokens and (if discovery is enabled) to # discover the provider's endpoints. issuer: str # oauth2 client id to use client_id: str # oauth2 client secret to use. if `None`, use client_secret_jwt_key to generate # a secret. client_secret: Optional[str] # key to use to construct a JWT to use as a client secret. May be `None` if # `client_secret` is set. client_secret_jwt_key: Optional[OidcProviderClientSecretJwtKey] # auth method to use when exchanging the token. # Valid values are 'client_secret_basic', 'client_secret_post' and # 'none'. client_auth_method: str # list of scopes to request scopes: Collection[str] # the oauth2 authorization endpoint. Required if discovery is disabled. authorization_endpoint: Optional[str] # the oauth2 token endpoint. Required if discovery is disabled. token_endpoint: Optional[str] # the OIDC userinfo endpoint. Required if discovery is disabled and the # "openid" scope is not requested. userinfo_endpoint: Optional[str] # URI where to fetch the JWKS. Required if discovery is disabled and the # "openid" scope is used. jwks_uri: Optional[str] # Whether to skip metadata verification skip_verification: bool # Whether to fetch the user profile from the userinfo endpoint. Valid # values are: "auto" or "userinfo_endpoint". user_profile_method: str # whether to allow a user logging in via OIDC to match a pre-existing account # instead of failing allow_existing_users: bool # the class of the user mapping provider user_mapping_provider_class: Type # the config of the user mapping provider user_mapping_provider_config: Any # required attributes to require in userinfo to allow login/registration attribute_requirements: List[SsoAttributeRequirement] synapse-1.53.0/synapse/config/password_auth_providers.py000066400000000000000000000053161420514467300235560ustar00rootroot00000000000000# Copyright 2016 Openmarket # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Any, List, Tuple, Type from synapse.util.module_loader import load_module from ._base import Config LDAP_PROVIDER = "ldap_auth_provider.LdapAuthProvider" class PasswordAuthProviderConfig(Config): section = "authproviders" def read_config(self, config, **kwargs): """Parses the old password auth providers config. The config format looks like this: password_providers: # Example config for an LDAP auth provider - module: "ldap_auth_provider.LdapAuthProvider" config: enabled: true uri: "ldap://ldap.example.com:389" start_tls: true base: "ou=users,dc=example,dc=com" attributes: uid: "cn" mail: "email" name: "givenName" #bind_dn: #bind_password: #filter: "(objectClass=posixAccount)" We expect admins to use modules for this feature (which is why it doesn't appear in the sample config file), but we want to keep support for it around for a bit for backwards compatibility. """ self.password_providers: List[Tuple[Type, Any]] = [] providers = [] # We want to be backwards compatible with the old `ldap_config` # param. ldap_config = config.get("ldap_config", {}) if ldap_config.get("enabled", False): providers.append({"module": LDAP_PROVIDER, "config": ldap_config}) providers.extend(config.get("password_providers") or []) for i, provider in enumerate(providers): mod_name = provider["module"] # This is for backwards compat when the ldap auth provider resided # in this package. if mod_name == "synapse.util.ldap_auth_provider.LdapAuthProvider": mod_name = LDAP_PROVIDER (provider_class, provider_config) = load_module( {"module": mod_name, "config": provider["config"]}, ("password_providers", "" % i), ) self.password_providers.append((provider_class, provider_config)) synapse-1.53.0/synapse/config/push.py000066400000000000000000000067421420514467300175610ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config class PushConfig(Config): section = "push" def read_config(self, config, **kwargs): push_config = config.get("push") or {} self.push_include_content = push_config.get("include_content", True) self.push_group_unread_count_by_room = push_config.get( "group_unread_count_by_room", True ) # There was a a 'redact_content' setting but mistakenly read from the # 'email'section'. Check for the flag in the 'push' section, and log, # but do not honour it to avoid nasty surprises when people upgrade. if push_config.get("redact_content") is not None: print( "The push.redact_content content option has never worked. " "Please set push.include_content if you want this behaviour" ) # Now check for the one in the 'email' section and honour it, # with a warning. push_config = config.get("email") or {} redact_content = push_config.get("redact_content") if redact_content is not None: print( "The 'email.redact_content' option is deprecated: " "please set push.include_content instead" ) self.push_include_content = not redact_content def generate_config_section(self, config_dir_path, server_name, **kwargs): return """ ## Push ## push: # Clients requesting push notifications can either have the body of # the message sent in the notification poke along with other details # like the sender, or just the event ID and room ID (`event_id_only`). # If clients choose the former, this option controls whether the # notification request includes the content of the event (other details # like the sender are still included). For `event_id_only` push, it # has no effect. # # For modern android devices the notification content will still appear # because it is loaded by the app. iPhone, however will send a # notification saying only that a message arrived and who it came from. # # The default value is "true" to include message details. Uncomment to only # include the event ID and room ID in push notification payloads. # #include_content: false # When a push notification is received, an unread count is also sent. # This number can either be calculated as the number of unread messages # for the user, or the number of *rooms* the user has unread messages in. # # The default value is "true", meaning push clients will see the number of # rooms with unread messages in them. Uncomment to instead send the number # of unread messages. # #group_unread_count_by_room: false """ synapse-1.53.0/synapse/config/ratelimiting.py000066400000000000000000000237241420514467300212710ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Dict, Optional import attr from ._base import Config class RateLimitConfig: def __init__( self, config: Dict[str, float], defaults: Optional[Dict[str, float]] = None, ): defaults = defaults or {"per_second": 0.17, "burst_count": 3.0} self.per_second = config.get("per_second", defaults["per_second"]) self.burst_count = int(config.get("burst_count", defaults["burst_count"])) @attr.s(auto_attribs=True) class FederationRateLimitConfig: window_size: int = 1000 sleep_limit: int = 10 sleep_delay: int = 500 reject_limit: int = 50 concurrent: int = 3 class RatelimitConfig(Config): section = "ratelimiting" def read_config(self, config, **kwargs): # Load the new-style messages config if it exists. Otherwise fall back # to the old method. if "rc_message" in config: self.rc_message = RateLimitConfig( config["rc_message"], defaults={"per_second": 0.2, "burst_count": 10.0} ) else: self.rc_message = RateLimitConfig( { "per_second": config.get("rc_messages_per_second", 0.2), "burst_count": config.get("rc_message_burst_count", 10.0), } ) # Load the new-style federation config, if it exists. Otherwise, fall # back to the old method. if "rc_federation" in config: self.rc_federation = FederationRateLimitConfig(**config["rc_federation"]) else: self.rc_federation = FederationRateLimitConfig( **{ k: v for k, v in { "window_size": config.get("federation_rc_window_size"), "sleep_limit": config.get("federation_rc_sleep_limit"), "sleep_delay": config.get("federation_rc_sleep_delay"), "reject_limit": config.get("federation_rc_reject_limit"), "concurrent": config.get("federation_rc_concurrent"), }.items() if v is not None } ) self.rc_registration = RateLimitConfig(config.get("rc_registration", {})) self.rc_registration_token_validity = RateLimitConfig( config.get("rc_registration_token_validity", {}), defaults={"per_second": 0.1, "burst_count": 5}, ) rc_login_config = config.get("rc_login", {}) self.rc_login_address = RateLimitConfig(rc_login_config.get("address", {})) self.rc_login_account = RateLimitConfig(rc_login_config.get("account", {})) self.rc_login_failed_attempts = RateLimitConfig( rc_login_config.get("failed_attempts", {}) ) self.federation_rr_transactions_per_room_per_second = config.get( "federation_rr_transactions_per_room_per_second", 50 ) rc_admin_redaction = config.get("rc_admin_redaction") self.rc_admin_redaction = None if rc_admin_redaction: self.rc_admin_redaction = RateLimitConfig(rc_admin_redaction) self.rc_joins_local = RateLimitConfig( config.get("rc_joins", {}).get("local", {}), defaults={"per_second": 0.1, "burst_count": 10}, ) self.rc_joins_remote = RateLimitConfig( config.get("rc_joins", {}).get("remote", {}), defaults={"per_second": 0.01, "burst_count": 10}, ) # Ratelimit cross-user key requests: # * For local requests this is keyed by the sending device. # * For requests received over federation this is keyed by the origin. # # Note that this isn't exposed in the configuration as it is obscure. self.rc_key_requests = RateLimitConfig( config.get("rc_key_requests", {}), defaults={"per_second": 20, "burst_count": 100}, ) self.rc_3pid_validation = RateLimitConfig( config.get("rc_3pid_validation") or {}, defaults={"per_second": 0.003, "burst_count": 5}, ) self.rc_invites_per_room = RateLimitConfig( config.get("rc_invites", {}).get("per_room", {}), defaults={"per_second": 0.3, "burst_count": 10}, ) self.rc_invites_per_user = RateLimitConfig( config.get("rc_invites", {}).get("per_user", {}), defaults={"per_second": 0.003, "burst_count": 5}, ) self.rc_third_party_invite = RateLimitConfig( config.get("rc_third_party_invite", {}), defaults={ "per_second": self.rc_message.per_second, "burst_count": self.rc_message.burst_count, }, ) def generate_config_section(self, **kwargs): return """\ ## Ratelimiting ## # Ratelimiting settings for client actions (registration, login, messaging). # # Each ratelimiting configuration is made of two parameters: # - per_second: number of requests a client can send per second. # - burst_count: number of requests a client can send before being throttled. # # Synapse currently uses the following configurations: # - one for messages that ratelimits sending based on the account the client # is using # - one for registration that ratelimits registration requests based on the # client's IP address. # - one for checking the validity of registration tokens that ratelimits # requests based on the client's IP address. # - one for login that ratelimits login requests based on the client's IP # address. # - one for login that ratelimits login requests based on the account the # client is attempting to log into. # - one for login that ratelimits login requests based on the account the # client is attempting to log into, based on the amount of failed login # attempts for this account. # - one for ratelimiting redactions by room admins. If this is not explicitly # set then it uses the same ratelimiting as per rc_message. This is useful # to allow room admins to deal with abuse quickly. # - two for ratelimiting number of rooms a user can join, "local" for when # users are joining rooms the server is already in (this is cheap) vs # "remote" for when users are trying to join rooms not on the server (which # can be more expensive) # - one for ratelimiting how often a user or IP can attempt to validate a 3PID. # - two for ratelimiting how often invites can be sent in a room or to a # specific user. # - one for ratelimiting 3PID invites (i.e. invites sent to a third-party ID # such as an email address or a phone number) based on the account that's # sending the invite. # # The defaults are as shown below. # #rc_message: # per_second: 0.2 # burst_count: 10 # #rc_registration: # per_second: 0.17 # burst_count: 3 # #rc_registration_token_validity: # per_second: 0.1 # burst_count: 5 # #rc_login: # address: # per_second: 0.17 # burst_count: 3 # account: # per_second: 0.17 # burst_count: 3 # failed_attempts: # per_second: 0.17 # burst_count: 3 # #rc_admin_redaction: # per_second: 1 # burst_count: 50 # #rc_joins: # local: # per_second: 0.1 # burst_count: 10 # remote: # per_second: 0.01 # burst_count: 10 # #rc_3pid_validation: # per_second: 0.003 # burst_count: 5 # #rc_invites: # per_room: # per_second: 0.3 # burst_count: 10 # per_user: # per_second: 0.003 # burst_count: 5 # #rc_third_party_invite: # per_second: 0.2 # burst_count: 10 # Ratelimiting settings for incoming federation # # The rc_federation configuration is made up of the following settings: # - window_size: window size in milliseconds # - sleep_limit: number of federation requests from a single server in # a window before the server will delay processing the request. # - sleep_delay: duration in milliseconds to delay processing events # from remote servers by if they go over the sleep limit. # - reject_limit: maximum number of concurrent federation requests # allowed from a single server # - concurrent: number of federation requests to concurrently process # from a single server # # The defaults are as shown below. # #rc_federation: # window_size: 1000 # sleep_limit: 10 # sleep_delay: 500 # reject_limit: 50 # concurrent: 3 # Target outgoing federation transaction frequency for sending read-receipts, # per-room. # # If we end up trying to send out more read-receipts, they will get buffered up # into fewer transactions. # #federation_rr_transactions_per_room_per_second: 50 """ synapse-1.53.0/synapse/config/redis.py000066400000000000000000000034751420514467300177100ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.config._base import Config from synapse.python_dependencies import check_requirements class RedisConfig(Config): section = "redis" def read_config(self, config, **kwargs): redis_config = config.get("redis") or {} self.redis_enabled = redis_config.get("enabled", False) if not self.redis_enabled: return check_requirements("redis") self.redis_host = redis_config.get("host", "localhost") self.redis_port = redis_config.get("port", 6379) self.redis_password = redis_config.get("password") def generate_config_section(self, config_dir_path, server_name, **kwargs): return """\ # Configuration for Redis when using workers. This *must* be enabled when # using workers (unless using old style direct TCP configuration). # redis: # Uncomment the below to enable Redis support. # #enabled: true # Optional host and port to use to connect to redis. Defaults to # localhost and 6379 # #host: localhost #port: 6379 # Optional password if configured on the Redis instance # #password: """ synapse-1.53.0/synapse/config/registration.py000066400000000000000000000520031420514467300213030ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse from typing import Optional from synapse.api.constants import RoomCreationPreset from synapse.config._base import Config, ConfigError from synapse.types import RoomAlias, UserID from synapse.util.stringutils import random_string_with_symbols, strtobool class RegistrationConfig(Config): section = "registration" def read_config(self, config, **kwargs): self.enable_registration = strtobool( str(config.get("enable_registration", False)) ) if "disable_registration" in config: self.enable_registration = not strtobool( str(config["disable_registration"]) ) self.registrations_require_3pid = config.get("registrations_require_3pid", []) self.allowed_local_3pids = config.get("allowed_local_3pids", []) self.enable_3pid_lookup = config.get("enable_3pid_lookup", True) self.registration_requires_token = config.get( "registration_requires_token", False ) self.registration_shared_secret = config.get("registration_shared_secret") self.bcrypt_rounds = config.get("bcrypt_rounds", 12) account_threepid_delegates = config.get("account_threepid_delegates") or {} self.account_threepid_delegate_email = account_threepid_delegates.get("email") self.account_threepid_delegate_msisdn = account_threepid_delegates.get("msisdn") self.default_identity_server = config.get("default_identity_server") self.allow_guest_access = config.get("allow_guest_access", False) if config.get("invite_3pid_guest", False): raise ConfigError("invite_3pid_guest is no longer supported") self.auto_join_rooms = config.get("auto_join_rooms", []) for room_alias in self.auto_join_rooms: if not RoomAlias.is_valid(room_alias): raise ConfigError("Invalid auto_join_rooms entry %s" % (room_alias,)) # Options for creating auto-join rooms if they do not exist yet. self.autocreate_auto_join_rooms = config.get("autocreate_auto_join_rooms", True) self.autocreate_auto_join_rooms_federated = config.get( "autocreate_auto_join_rooms_federated", True ) self.autocreate_auto_join_room_preset = ( config.get("autocreate_auto_join_room_preset") or RoomCreationPreset.PUBLIC_CHAT ) self.auto_join_room_requires_invite = self.autocreate_auto_join_room_preset in { RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, } # Pull the creator/inviter from the configuration, this gets used to # send invites for invite-only rooms. mxid_localpart = config.get("auto_join_mxid_localpart") self.auto_join_user_id = None if mxid_localpart: # Convert the localpart to a full mxid. self.auto_join_user_id = UserID( mxid_localpart, self.root.server.server_name ).to_string() if self.autocreate_auto_join_rooms: # Ensure the preset is a known value. if self.autocreate_auto_join_room_preset not in { RoomCreationPreset.PUBLIC_CHAT, RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, }: raise ConfigError("Invalid value for autocreate_auto_join_room_preset") # If the preset requires invitations to be sent, ensure there's a # configured user to send them from. if self.auto_join_room_requires_invite: if not mxid_localpart: raise ConfigError( "The configuration option `auto_join_mxid_localpart` is required if " "`autocreate_auto_join_room_preset` is set to private_chat or trusted_private_chat, such that " "Synapse knows who to send invitations from. Please " "configure `auto_join_mxid_localpart`." ) self.auto_join_rooms_for_guests = config.get("auto_join_rooms_for_guests", True) self.enable_set_displayname = config.get("enable_set_displayname", True) self.enable_set_avatar_url = config.get("enable_set_avatar_url", True) self.enable_3pid_changes = config.get("enable_3pid_changes", True) self.disable_msisdn_registration = config.get( "disable_msisdn_registration", False ) session_lifetime = config.get("session_lifetime") if session_lifetime is not None: session_lifetime = self.parse_duration(session_lifetime) self.session_lifetime = session_lifetime # The `refreshable_access_token_lifetime` applies for tokens that can be renewed # using a refresh token, as per MSC2918. # If it is `None`, the refresh token mechanism is disabled. refreshable_access_token_lifetime = config.get( "refreshable_access_token_lifetime", "5m", ) if refreshable_access_token_lifetime is not None: refreshable_access_token_lifetime = self.parse_duration( refreshable_access_token_lifetime ) self.refreshable_access_token_lifetime: Optional[ int ] = refreshable_access_token_lifetime if ( self.session_lifetime is not None and "refreshable_access_token_lifetime" in config ): if self.session_lifetime < self.refreshable_access_token_lifetime: raise ConfigError( "Both `session_lifetime` and `refreshable_access_token_lifetime` " "configuration options have been set, but `refreshable_access_token_lifetime` " " exceeds `session_lifetime`!" ) # The `nonrefreshable_access_token_lifetime` applies for tokens that can NOT be # refreshed using a refresh token. # If it is None, then these tokens last for the entire length of the session, # which is infinite by default. # The intention behind this configuration option is to help with requiring # all clients to use refresh tokens, if the homeserver administrator requires. nonrefreshable_access_token_lifetime = config.get( "nonrefreshable_access_token_lifetime", None, ) if nonrefreshable_access_token_lifetime is not None: nonrefreshable_access_token_lifetime = self.parse_duration( nonrefreshable_access_token_lifetime ) self.nonrefreshable_access_token_lifetime = nonrefreshable_access_token_lifetime if ( self.session_lifetime is not None and self.nonrefreshable_access_token_lifetime is not None ): if self.session_lifetime < self.nonrefreshable_access_token_lifetime: raise ConfigError( "Both `session_lifetime` and `nonrefreshable_access_token_lifetime` " "configuration options have been set, but `nonrefreshable_access_token_lifetime` " " exceeds `session_lifetime`!" ) refresh_token_lifetime = config.get("refresh_token_lifetime") if refresh_token_lifetime is not None: refresh_token_lifetime = self.parse_duration(refresh_token_lifetime) self.refresh_token_lifetime: Optional[int] = refresh_token_lifetime if ( self.session_lifetime is not None and self.refresh_token_lifetime is not None ): if self.session_lifetime < self.refresh_token_lifetime: raise ConfigError( "Both `session_lifetime` and `refresh_token_lifetime` " "configuration options have been set, but `refresh_token_lifetime` " " exceeds `session_lifetime`!" ) # The fallback template used for authenticating using a registration token self.registration_token_template = self.read_template("registration_token.html") # The success template used during fallback auth. self.fallback_success_template = self.read_template("auth_success.html") self.inhibit_user_in_use_error = config.get("inhibit_user_in_use_error", False) def generate_config_section(self, generate_secrets=False, **kwargs): if generate_secrets: registration_shared_secret = 'registration_shared_secret: "%s"' % ( random_string_with_symbols(50), ) else: registration_shared_secret = "#registration_shared_secret: " return ( """\ ## Registration ## # # Registration can be rate-limited using the parameters in the "Ratelimiting" # section of this file. # Enable registration for new users. # #enable_registration: false # Time that a user's session remains valid for, after they log in. # # Note that this is not currently compatible with guest logins. # # Note also that this is calculated at login time: changes are not applied # retrospectively to users who have already logged in. # # By default, this is infinite. # #session_lifetime: 24h # Time that an access token remains valid for, if the session is # using refresh tokens. # For more information about refresh tokens, please see the manual. # Note that this only applies to clients which advertise support for # refresh tokens. # # Note also that this is calculated at login time and refresh time: # changes are not applied to existing sessions until they are refreshed. # # By default, this is 5 minutes. # #refreshable_access_token_lifetime: 5m # Time that a refresh token remains valid for (provided that it is not # exchanged for another one first). # This option can be used to automatically log-out inactive sessions. # Please see the manual for more information. # # Note also that this is calculated at login time and refresh time: # changes are not applied to existing sessions until they are refreshed. # # By default, this is infinite. # #refresh_token_lifetime: 24h # Time that an access token remains valid for, if the session is NOT # using refresh tokens. # Please note that not all clients support refresh tokens, so setting # this to a short value may be inconvenient for some users who will # then be logged out frequently. # # Note also that this is calculated at login time: changes are not applied # retrospectively to existing sessions for users that have already logged in. # # By default, this is infinite. # #nonrefreshable_access_token_lifetime: 24h # The user must provide all of the below types of 3PID when registering. # #registrations_require_3pid: # - email # - msisdn # Explicitly disable asking for MSISDNs from the registration # flow (overrides registrations_require_3pid if MSISDNs are set as required) # #disable_msisdn_registration: true # Mandate that users are only allowed to associate certain formats of # 3PIDs with accounts on this server. # #allowed_local_3pids: # - medium: email # pattern: '^[^@]+@matrix\\.org$' # - medium: email # pattern: '^[^@]+@vector\\.im$' # - medium: msisdn # pattern: '\\+44' # Enable 3PIDs lookup requests to identity servers from this server. # #enable_3pid_lookup: true # Require users to submit a token during registration. # Tokens can be managed using the admin API: # https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/registration_tokens.html # Note that `enable_registration` must be set to `true`. # Disabling this option will not delete any tokens previously generated. # Defaults to false. Uncomment the following to require tokens: # #registration_requires_token: true # If set, allows registration of standard or admin accounts by anyone who # has the shared secret, even if registration is otherwise disabled. # %(registration_shared_secret)s # Set the number of bcrypt rounds used to generate password hash. # Larger numbers increase the work factor needed to generate the hash. # The default number is 12 (which equates to 2^12 rounds). # N.B. that increasing this will exponentially increase the time required # to register or login - e.g. 24 => 2^24 rounds which will take >20 mins. # #bcrypt_rounds: 12 # Allows users to register as guests without a password/email/etc, and # participate in rooms hosted on this server which have been made # accessible to anonymous users. # #allow_guest_access: false # The identity server which we suggest that clients should use when users log # in on this server. # # (By default, no suggestion is made, so it is left up to the client. # This setting is ignored unless public_baseurl is also explicitly set.) # #default_identity_server: https://matrix.org # Handle threepid (email/phone etc) registration and password resets through a set of # *trusted* identity servers. Note that this allows the configured identity server to # reset passwords for accounts! # # Be aware that if `email` is not set, and SMTP options have not been # configured in the email config block, registration and user password resets via # email will be globally disabled. # # Additionally, if `msisdn` is not set, registration and password resets via msisdn # will be disabled regardless, and users will not be able to associate an msisdn # identifier to their account. This is due to Synapse currently not supporting # any method of sending SMS messages on its own. # # To enable using an identity server for operations regarding a particular third-party # identifier type, set the value to the URL of that identity server as shown in the # examples below. # # Servers handling the these requests must answer the `/requestToken` endpoints defined # by the Matrix Identity Service API specification: # https://matrix.org/docs/spec/identity_service/latest # account_threepid_delegates: #email: https://example.com # Delegate email sending to example.com #msisdn: http://localhost:8090 # Delegate SMS sending to this local process # Whether users are allowed to change their displayname after it has # been initially set. Useful when provisioning users based on the # contents of a third-party directory. # # Does not apply to server administrators. Defaults to 'true' # #enable_set_displayname: false # Whether users are allowed to change their avatar after it has been # initially set. Useful when provisioning users based on the contents # of a third-party directory. # # Does not apply to server administrators. Defaults to 'true' # #enable_set_avatar_url: false # Whether users can change the 3PIDs associated with their accounts # (email address and msisdn). # # Defaults to 'true' # #enable_3pid_changes: false # Users who register on this homeserver will automatically be joined # to these rooms. # # By default, any room aliases included in this list will be created # as a publicly joinable room when the first user registers for the # homeserver. This behaviour can be customised with the settings below. # If the room already exists, make certain it is a publicly joinable # room. The join rule of the room must be set to 'public'. # #auto_join_rooms: # - "#example:example.com" # Where auto_join_rooms are specified, setting this flag ensures that the # the rooms exist by creating them when the first user on the # homeserver registers. # # By default the auto-created rooms are publicly joinable from any federated # server. Use the autocreate_auto_join_rooms_federated and # autocreate_auto_join_room_preset settings below to customise this behaviour. # # Setting to false means that if the rooms are not manually created, # users cannot be auto-joined since they do not exist. # # Defaults to true. Uncomment the following line to disable automatically # creating auto-join rooms. # #autocreate_auto_join_rooms: false # Whether the auto_join_rooms that are auto-created are available via # federation. Only has an effect if autocreate_auto_join_rooms is true. # # Note that whether a room is federated cannot be modified after # creation. # # Defaults to true: the room will be joinable from other servers. # Uncomment the following to prevent users from other homeservers from # joining these rooms. # #autocreate_auto_join_rooms_federated: false # The room preset to use when auto-creating one of auto_join_rooms. Only has an # effect if autocreate_auto_join_rooms is true. # # This can be one of "public_chat", "private_chat", or "trusted_private_chat". # If a value of "private_chat" or "trusted_private_chat" is used then # auto_join_mxid_localpart must also be configured. # # Defaults to "public_chat", meaning that the room is joinable by anyone, including # federated servers if autocreate_auto_join_rooms_federated is true (the default). # Uncomment the following to require an invitation to join these rooms. # #autocreate_auto_join_room_preset: private_chat # The local part of the user id which is used to create auto_join_rooms if # autocreate_auto_join_rooms is true. If this is not provided then the # initial user account that registers will be used to create the rooms. # # The user id is also used to invite new users to any auto-join rooms which # are set to invite-only. # # It *must* be configured if autocreate_auto_join_room_preset is set to # "private_chat" or "trusted_private_chat". # # Note that this must be specified in order for new users to be correctly # invited to any auto-join rooms which have been set to invite-only (either # at the time of creation or subsequently). # # Note that, if the room already exists, this user must be joined and # have the appropriate permissions to invite new members. # #auto_join_mxid_localpart: system # When auto_join_rooms is specified, setting this flag to false prevents # guest accounts from being automatically joined to the rooms. # # Defaults to true. # #auto_join_rooms_for_guests: false # Whether to inhibit errors raised when registering a new account if the user ID # already exists. If turned on, that requests to /register/available will always # show a user ID as available, and Synapse won't raise an error when starting # a registration with a user ID that already exists. However, Synapse will still # raise an error if the registration completes and the username conflicts. # # Defaults to false. # #inhibit_user_in_use_error: true """ % locals() ) @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: reg_group = parser.add_argument_group("registration") reg_group.add_argument( "--enable-registration", action="store_true", default=None, help="Enable registration for new users.", ) def read_arguments(self, args: argparse.Namespace) -> None: if args.enable_registration is not None: self.enable_registration = strtobool(str(args.enable_registration)) synapse-1.53.0/synapse/config/repository.py000066400000000000000000000363611420514467300210210ustar00rootroot00000000000000# Copyright 2014, 2015 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import os from typing import Dict, List, Tuple from urllib.request import getproxies_environment # type: ignore import attr from synapse.config.server import DEFAULT_IP_RANGE_BLACKLIST, generate_ip_set from synapse.python_dependencies import DependencyException, check_requirements from synapse.types import JsonDict from synapse.util.module_loader import load_module from ._base import Config, ConfigError logger = logging.getLogger(__name__) DEFAULT_THUMBNAIL_SIZES = [ {"width": 32, "height": 32, "method": "crop"}, {"width": 96, "height": 96, "method": "crop"}, {"width": 320, "height": 240, "method": "scale"}, {"width": 640, "height": 480, "method": "scale"}, {"width": 800, "height": 600, "method": "scale"}, ] THUMBNAIL_SIZE_YAML = """\ # - width: %(width)i # height: %(height)i # method: %(method)s """ HTTP_PROXY_SET_WARNING = """\ The Synapse config url_preview_ip_range_blacklist will be ignored as an HTTP(s) proxy is configured.""" @attr.s(frozen=True, slots=True, auto_attribs=True) class ThumbnailRequirement: width: int height: int method: str media_type: str @attr.s(frozen=True, slots=True, auto_attribs=True) class MediaStorageProviderConfig: store_local: bool # Whether to store newly uploaded local files store_remote: bool # Whether to store newly downloaded remote files store_synchronous: bool # Whether to wait for successful storage for local uploads def parse_thumbnail_requirements( thumbnail_sizes: List[JsonDict], ) -> Dict[str, Tuple[ThumbnailRequirement, ...]]: """Takes a list of dictionaries with "width", "height", and "method" keys and creates a map from image media types to the thumbnail size, thumbnailing method, and thumbnail media type to precalculate Args: thumbnail_sizes: List of dicts with "width", "height", and "method" keys Returns: Dictionary mapping from media type string to list of ThumbnailRequirement. """ requirements: Dict[str, List[ThumbnailRequirement]] = {} for size in thumbnail_sizes: width = size["width"] height = size["height"] method = size["method"] jpeg_thumbnail = ThumbnailRequirement(width, height, method, "image/jpeg") png_thumbnail = ThumbnailRequirement(width, height, method, "image/png") requirements.setdefault("image/jpeg", []).append(jpeg_thumbnail) requirements.setdefault("image/jpg", []).append(jpeg_thumbnail) requirements.setdefault("image/webp", []).append(jpeg_thumbnail) requirements.setdefault("image/gif", []).append(png_thumbnail) requirements.setdefault("image/png", []).append(png_thumbnail) return { media_type: tuple(thumbnails) for media_type, thumbnails in requirements.items() } class ContentRepositoryConfig(Config): section = "media" def read_config(self, config, **kwargs): # Only enable the media repo if either the media repo is enabled or the # current worker app is the media repo. if ( self.root.server.enable_media_repo is False and config.get("worker_app") != "synapse.app.media_repository" ): self.can_load_media_repo = False return else: self.can_load_media_repo = True # Whether this instance should be the one to run the background jobs to # e.g clean up old URL previews. self.media_instance_running_background_jobs = config.get( "media_instance_running_background_jobs", ) self.max_upload_size = self.parse_size(config.get("max_upload_size", "50M")) self.max_image_pixels = self.parse_size(config.get("max_image_pixels", "32M")) self.max_spider_size = self.parse_size(config.get("max_spider_size", "10M")) self.media_store_path = self.ensure_directory( config.get("media_store_path", "media_store") ) backup_media_store_path = config.get("backup_media_store_path") synchronous_backup_media_store = config.get( "synchronous_backup_media_store", False ) storage_providers = config.get("media_storage_providers", []) if backup_media_store_path: if storage_providers: raise ConfigError( "Cannot use both 'backup_media_store_path' and 'storage_providers'" ) storage_providers = [ { "module": "file_system", "store_local": True, "store_synchronous": synchronous_backup_media_store, "store_remote": True, "config": {"directory": backup_media_store_path}, } ] # This is a list of config that can be used to create the storage # providers. The entries are tuples of (Class, class_config, # MediaStorageProviderConfig), where Class is the class of the provider, # the class_config the config to pass to it, and # MediaStorageProviderConfig are options for StorageProviderWrapper. # # We don't create the storage providers here as not all workers need # them to be started. self.media_storage_providers: List[tuple] = [] for i, provider_config in enumerate(storage_providers): # We special case the module "file_system" so as not to need to # expose FileStorageProviderBackend if provider_config["module"] == "file_system": provider_config["module"] = ( "synapse.rest.media.v1.storage_provider" ".FileStorageProviderBackend" ) provider_class, parsed_config = load_module( provider_config, ("media_storage_providers", "" % i) ) wrapper_config = MediaStorageProviderConfig( provider_config.get("store_local", False), provider_config.get("store_remote", False), provider_config.get("store_synchronous", False), ) self.media_storage_providers.append( (provider_class, parsed_config, wrapper_config) ) self.dynamic_thumbnails = config.get("dynamic_thumbnails", False) self.thumbnail_requirements = parse_thumbnail_requirements( config.get("thumbnail_sizes", DEFAULT_THUMBNAIL_SIZES) ) self.url_preview_enabled = config.get("url_preview_enabled", False) if self.url_preview_enabled: try: check_requirements("url_preview") except DependencyException as e: raise ConfigError( e.message # noqa: B306, DependencyException.message is a property ) proxy_env = getproxies_environment() if "url_preview_ip_range_blacklist" not in config: if "http" not in proxy_env or "https" not in proxy_env: raise ConfigError( "For security, you must specify an explicit target IP address " "blacklist in url_preview_ip_range_blacklist for url previewing " "to work" ) else: if "http" in proxy_env or "https" in proxy_env: logger.warning("".join(HTTP_PROXY_SET_WARNING)) # we always blacklist '0.0.0.0' and '::', which are supposed to be # unroutable addresses. self.url_preview_ip_range_blacklist = generate_ip_set( config["url_preview_ip_range_blacklist"], ["0.0.0.0", "::"], config_path=("url_preview_ip_range_blacklist",), ) self.url_preview_ip_range_whitelist = generate_ip_set( config.get("url_preview_ip_range_whitelist", ()), config_path=("url_preview_ip_range_whitelist",), ) self.url_preview_url_blacklist = config.get("url_preview_url_blacklist", ()) self.url_preview_accept_language = config.get( "url_preview_accept_language" ) or ["en"] def generate_config_section(self, data_dir_path, **kwargs): media_store = os.path.join(data_dir_path, "media_store") formatted_thumbnail_sizes = "".join( THUMBNAIL_SIZE_YAML % s for s in DEFAULT_THUMBNAIL_SIZES ) # strip final NL formatted_thumbnail_sizes = formatted_thumbnail_sizes[:-1] ip_range_blacklist = "\n".join( " # - '%s'" % ip for ip in DEFAULT_IP_RANGE_BLACKLIST ) return ( r""" ## Media Store ## # Enable the media store service in the Synapse master. Uncomment the # following if you are using a separate media store worker. # #enable_media_repo: false # Directory where uploaded images and attachments are stored. # media_store_path: "%(media_store)s" # Media storage providers allow media to be stored in different # locations. # #media_storage_providers: # - module: file_system # # Whether to store newly uploaded local files # store_local: false # # Whether to store newly downloaded remote files # store_remote: false # # Whether to wait for successful storage for local uploads # store_synchronous: false # config: # directory: /mnt/some/other/directory # The largest allowed upload size in bytes # # If you are using a reverse proxy you may also need to set this value in # your reverse proxy's config. Notably Nginx has a small max body size by default. # See https://matrix-org.github.io/synapse/latest/reverse_proxy.html. # #max_upload_size: 50M # Maximum number of pixels that will be thumbnailed # #max_image_pixels: 32M # Whether to generate new thumbnails on the fly to precisely match # the resolution requested by the client. If true then whenever # a new resolution is requested by the client the server will # generate a new thumbnail. If false the server will pick a thumbnail # from a precalculated list. # #dynamic_thumbnails: false # List of thumbnails to precalculate when an image is uploaded. # #thumbnail_sizes: %(formatted_thumbnail_sizes)s # Is the preview URL API enabled? # # 'false' by default: uncomment the following to enable it (and specify a # url_preview_ip_range_blacklist blacklist). # #url_preview_enabled: true # List of IP address CIDR ranges that the URL preview spider is denied # from accessing. There are no defaults: you must explicitly # specify a list for URL previewing to work. You should specify any # internal services in your network that you do not want synapse to try # to connect to, otherwise anyone in any Matrix room could cause your # synapse to issue arbitrary GET requests to your internal services, # causing serious security issues. # # (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly # listed here, since they correspond to unroutable addresses.) # # This must be specified if url_preview_enabled is set. It is recommended that # you uncomment the following list as a starting point. # # Note: The value is ignored when an HTTP proxy is in use # #url_preview_ip_range_blacklist: %(ip_range_blacklist)s # List of IP address CIDR ranges that the URL preview spider is allowed # to access even if they are specified in url_preview_ip_range_blacklist. # This is useful for specifying exceptions to wide-ranging blacklisted # target IP ranges - e.g. for enabling URL previews for a specific private # website only visible in your network. # #url_preview_ip_range_whitelist: # - '192.168.1.1' # Optional list of URL matches that the URL preview spider is # denied from accessing. You should use url_preview_ip_range_blacklist # in preference to this, otherwise someone could define a public DNS # entry that points to a private IP address and circumvent the blacklist. # This is more useful if you know there is an entire shape of URL that # you know that will never want synapse to try to spider. # # Each list entry is a dictionary of url component attributes as returned # by urlparse.urlsplit as applied to the absolute form of the URL. See # https://docs.python.org/2/library/urlparse.html#urlparse.urlsplit # The values of the dictionary are treated as an filename match pattern # applied to that component of URLs, unless they start with a ^ in which # case they are treated as a regular expression match. If all the # specified component matches for a given list item succeed, the URL is # blacklisted. # #url_preview_url_blacklist: # # blacklist any URL with a username in its URI # - username: '*' # # # blacklist all *.google.com URLs # - netloc: 'google.com' # - netloc: '*.google.com' # # # blacklist all plain HTTP URLs # - scheme: 'http' # # # blacklist http(s)://www.acme.com/foo # - netloc: 'www.acme.com' # path: '/foo' # # # blacklist any URL with a literal IPv4 address # - netloc: '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' # The largest allowed URL preview spidering size in bytes # #max_spider_size: 10M # A list of values for the Accept-Language HTTP header used when # downloading webpages during URL preview generation. This allows # Synapse to specify the preferred languages that URL previews should # be in when communicating with remote servers. # # Each value is a IETF language tag; a 2-3 letter identifier for a # language, optionally followed by subtags separated by '-', specifying # a country or region variant. # # Multiple values can be provided, and a weight can be added to each by # using quality value syntax (;q=). '*' translates to any language. # # Defaults to "en". # # Example: # # url_preview_accept_language: # - en-UK # - en-US;q=0.9 # - fr;q=0.8 # - *;q=0.7 # url_preview_accept_language: # - en """ % locals() ) synapse-1.53.0/synapse/config/retention.py000066400000000000000000000230701420514467300206020ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import List, Optional import attr from synapse.config._base import Config, ConfigError logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class RetentionPurgeJob: """Object describing the configuration of the manhole""" interval: int shortest_max_lifetime: Optional[int] longest_max_lifetime: Optional[int] class RetentionConfig(Config): section = "retention" def read_config(self, config, **kwargs): retention_config = config.get("retention") if retention_config is None: retention_config = {} self.retention_enabled = retention_config.get("enabled", False) retention_default_policy = retention_config.get("default_policy") if retention_default_policy is not None: self.retention_default_min_lifetime = retention_default_policy.get( "min_lifetime" ) if self.retention_default_min_lifetime is not None: self.retention_default_min_lifetime = self.parse_duration( self.retention_default_min_lifetime ) self.retention_default_max_lifetime = retention_default_policy.get( "max_lifetime" ) if self.retention_default_max_lifetime is not None: self.retention_default_max_lifetime = self.parse_duration( self.retention_default_max_lifetime ) if ( self.retention_default_min_lifetime is not None and self.retention_default_max_lifetime is not None and ( self.retention_default_min_lifetime > self.retention_default_max_lifetime ) ): raise ConfigError( "The default retention policy's 'min_lifetime' can not be greater" " than its 'max_lifetime'" ) else: self.retention_default_min_lifetime = None self.retention_default_max_lifetime = None if self.retention_enabled: logger.info( "Message retention policies support enabled with the following default" " policy: min_lifetime = %s ; max_lifetime = %s", self.retention_default_min_lifetime, self.retention_default_max_lifetime, ) self.retention_allowed_lifetime_min = retention_config.get( "allowed_lifetime_min" ) if self.retention_allowed_lifetime_min is not None: self.retention_allowed_lifetime_min = self.parse_duration( self.retention_allowed_lifetime_min ) self.retention_allowed_lifetime_max = retention_config.get( "allowed_lifetime_max" ) if self.retention_allowed_lifetime_max is not None: self.retention_allowed_lifetime_max = self.parse_duration( self.retention_allowed_lifetime_max ) if ( self.retention_allowed_lifetime_min is not None and self.retention_allowed_lifetime_max is not None and self.retention_allowed_lifetime_min > self.retention_allowed_lifetime_max ): raise ConfigError( "Invalid retention policy limits: 'allowed_lifetime_min' can not be" " greater than 'allowed_lifetime_max'" ) self.retention_purge_jobs: List[RetentionPurgeJob] = [] for purge_job_config in retention_config.get("purge_jobs", []): interval_config = purge_job_config.get("interval") if interval_config is None: raise ConfigError( "A retention policy's purge jobs configuration must have the" " 'interval' key set." ) interval = self.parse_duration(interval_config) shortest_max_lifetime = purge_job_config.get("shortest_max_lifetime") if shortest_max_lifetime is not None: shortest_max_lifetime = self.parse_duration(shortest_max_lifetime) longest_max_lifetime = purge_job_config.get("longest_max_lifetime") if longest_max_lifetime is not None: longest_max_lifetime = self.parse_duration(longest_max_lifetime) if ( shortest_max_lifetime is not None and longest_max_lifetime is not None and shortest_max_lifetime > longest_max_lifetime ): raise ConfigError( "A retention policy's purge jobs configuration's" " 'shortest_max_lifetime' value can not be greater than its" " 'longest_max_lifetime' value." ) self.retention_purge_jobs.append( RetentionPurgeJob(interval, shortest_max_lifetime, longest_max_lifetime) ) if not self.retention_purge_jobs: self.retention_purge_jobs = [ RetentionPurgeJob(self.parse_duration("1d"), None, None) ] def generate_config_section(self, config_dir_path, server_name, **kwargs): return """\ # Message retention policy at the server level. # # Room admins and mods can define a retention period for their rooms using the # 'm.room.retention' state event, and server admins can cap this period by setting # the 'allowed_lifetime_min' and 'allowed_lifetime_max' config options. # # If this feature is enabled, Synapse will regularly look for and purge events # which are older than the room's maximum retention period. Synapse will also # filter events received over federation so that events that should have been # purged are ignored and not stored again. # retention: # The message retention policies feature is disabled by default. Uncomment the # following line to enable it. # #enabled: true # Default retention policy. If set, Synapse will apply it to rooms that lack the # 'm.room.retention' state event. Currently, the value of 'min_lifetime' doesn't # matter much because Synapse doesn't take it into account yet. # #default_policy: # min_lifetime: 1d # max_lifetime: 1y # Retention policy limits. If set, and the state of a room contains a # 'm.room.retention' event in its state which contains a 'min_lifetime' or a # 'max_lifetime' that's out of these bounds, Synapse will cap the room's policy # to these limits when running purge jobs. # #allowed_lifetime_min: 1d #allowed_lifetime_max: 1y # Server admins can define the settings of the background jobs purging the # events which lifetime has expired under the 'purge_jobs' section. # # If no configuration is provided, a single job will be set up to delete expired # events in every room daily. # # Each job's configuration defines which range of message lifetimes the job # takes care of. For example, if 'shortest_max_lifetime' is '2d' and # 'longest_max_lifetime' is '3d', the job will handle purging expired events in # rooms whose state defines a 'max_lifetime' that's both higher than 2 days, and # lower than or equal to 3 days. Both the minimum and the maximum value of a # range are optional, e.g. a job with no 'shortest_max_lifetime' and a # 'longest_max_lifetime' of '3d' will handle every room with a retention policy # which 'max_lifetime' is lower than or equal to three days. # # The rationale for this per-job configuration is that some rooms might have a # retention policy with a low 'max_lifetime', where history needs to be purged # of outdated messages on a more frequent basis than for the rest of the rooms # (e.g. every 12h), but not want that purge to be performed by a job that's # iterating over every room it knows, which could be heavy on the server. # # If any purge job is configured, it is strongly recommended to have at least # a single job with neither 'shortest_max_lifetime' nor 'longest_max_lifetime' # set, or one job without 'shortest_max_lifetime' and one job without # 'longest_max_lifetime' set. Otherwise some rooms might be ignored, even if # 'allowed_lifetime_min' and 'allowed_lifetime_max' are set, because capping a # room's policy to these values is done after the policies are retrieved from # Synapse's database (which is done using the range specified in a purge job's # configuration). # #purge_jobs: # - longest_max_lifetime: 3d # interval: 12h # - shortest_max_lifetime: 3d # interval: 1d """ synapse-1.53.0/synapse/config/room.py000066400000000000000000000061001420514467300175420ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from synapse.api.constants import RoomCreationPreset from ._base import Config, ConfigError logger = logging.Logger(__name__) class RoomDefaultEncryptionTypes: """Possible values for the encryption_enabled_by_default_for_room_type config option""" ALL = "all" INVITE = "invite" OFF = "off" class RoomConfig(Config): section = "room" def read_config(self, config, **kwargs): # Whether new, locally-created rooms should have encryption enabled encryption_for_room_type = config.get( "encryption_enabled_by_default_for_room_type", RoomDefaultEncryptionTypes.OFF, ) if encryption_for_room_type == RoomDefaultEncryptionTypes.ALL: self.encryption_enabled_by_default_for_room_presets = [ RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, RoomCreationPreset.PUBLIC_CHAT, ] elif encryption_for_room_type == RoomDefaultEncryptionTypes.INVITE: self.encryption_enabled_by_default_for_room_presets = [ RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, ] elif ( encryption_for_room_type == RoomDefaultEncryptionTypes.OFF or encryption_for_room_type is False ): # PyYAML translates "off" into False if it's unquoted, so we also need to # check for encryption_for_room_type being False. self.encryption_enabled_by_default_for_room_presets = [] else: raise ConfigError( "Invalid value for encryption_enabled_by_default_for_room_type" ) def generate_config_section(self, **kwargs): return """\ ## Rooms ## # Controls whether locally-created rooms should be end-to-end encrypted by # default. # # Possible options are "all", "invite", and "off". They are defined as: # # * "all": any locally-created room # * "invite": any room created with the "private_chat" or "trusted_private_chat" # room creation presets # * "off": this option will take no effect # # The default value is "off". # # Note that this option will only affect rooms created after it is set. It # will also not affect rooms created by other servers. # #encryption_enabled_by_default_for_room_type: invite """ synapse-1.53.0/synapse/config/room_directory.py000066400000000000000000000176561420514467300216500ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # Copyright 2021 Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import List from matrix_common.regex import glob_to_regex from synapse.types import JsonDict from ._base import Config, ConfigError class RoomDirectoryConfig(Config): section = "roomdirectory" def read_config(self, config, **kwargs) -> None: self.enable_room_list_search = config.get("enable_room_list_search", True) alias_creation_rules = config.get("alias_creation_rules") if alias_creation_rules is not None: self._alias_creation_rules = [ _RoomDirectoryRule("alias_creation_rules", rule) for rule in alias_creation_rules ] else: self._alias_creation_rules = [ _RoomDirectoryRule("alias_creation_rules", {"action": "allow"}) ] room_list_publication_rules = config.get("room_list_publication_rules") if room_list_publication_rules is not None: self._room_list_publication_rules = [ _RoomDirectoryRule("room_list_publication_rules", rule) for rule in room_list_publication_rules ] else: self._room_list_publication_rules = [ _RoomDirectoryRule("room_list_publication_rules", {"action": "allow"}) ] def generate_config_section(self, config_dir_path, server_name, **kwargs) -> str: return """ # Uncomment to disable searching the public room list. When disabled # blocks searching local and remote room lists for local and remote # users by always returning an empty list for all queries. # #enable_room_list_search: false # The `alias_creation` option controls who's allowed to create aliases # on this server. # # The format of this option is a list of rules that contain globs that # match against user_id, room_id and the new alias (fully qualified with # server name). The action in the first rule that matches is taken, # which can currently either be "allow" or "deny". # # Missing user_id/room_id/alias fields default to "*". # # If no rules match the request is denied. An empty list means no one # can create aliases. # # Options for the rules include: # # user_id: Matches against the creator of the alias # alias: Matches against the alias being created # room_id: Matches against the room ID the alias is being pointed at # action: Whether to "allow" or "deny" the request if the rule matches # # The default is: # #alias_creation_rules: # - user_id: "*" # alias: "*" # room_id: "*" # action: allow # The `room_list_publication_rules` option controls who can publish and # which rooms can be published in the public room list. # # The format of this option is the same as that for # `alias_creation_rules`. # # If the room has one or more aliases associated with it, only one of # the aliases needs to match the alias rule. If there are no aliases # then only rules with `alias: *` match. # # If no rules match the request is denied. An empty list means no one # can publish rooms. # # Options for the rules include: # # user_id: Matches against the creator of the alias # room_id: Matches against the room ID being published # alias: Matches against any current local or canonical aliases # associated with the room # action: Whether to "allow" or "deny" the request if the rule matches # # The default is: # #room_list_publication_rules: # - user_id: "*" # alias: "*" # room_id: "*" # action: allow """ def is_alias_creation_allowed(self, user_id: str, room_id: str, alias: str) -> bool: """Checks if the given user is allowed to create the given alias Args: user_id: The user to check. room_id: The room ID for the alias. alias: The alias being created. Returns: True if user is allowed to create the alias """ for rule in self._alias_creation_rules: if rule.matches(user_id, room_id, [alias]): return rule.action == "allow" return False def is_publishing_room_allowed( self, user_id: str, room_id: str, aliases: List[str] ) -> bool: """Checks if the given user is allowed to publish the room Args: user_id: The user ID publishing the room. room_id: The room being published. aliases: any local aliases associated with the room Returns: True if user can publish room """ for rule in self._room_list_publication_rules: if rule.matches(user_id, room_id, aliases): return rule.action == "allow" return False class _RoomDirectoryRule: """Helper class to test whether a room directory action is allowed, like creating an alias or publishing a room. """ def __init__(self, option_name: str, rule: JsonDict): """ Args: option_name: Name of the config option this rule belongs to rule: The rule as specified in the config """ action = rule["action"] user_id = rule.get("user_id", "*") room_id = rule.get("room_id", "*") alias = rule.get("alias", "*") if action in ("allow", "deny"): self.action = action else: raise ConfigError( "%s rules can only have action of 'allow' or 'deny'" % (option_name,) ) self._alias_matches_all = alias == "*" try: self._user_id_regex = glob_to_regex(user_id) self._alias_regex = glob_to_regex(alias) self._room_id_regex = glob_to_regex(room_id) except Exception as e: raise ConfigError("Failed to parse glob into regex") from e def matches(self, user_id: str, room_id: str, aliases: List[str]) -> bool: """Tests if this rule matches the given user_id, room_id and aliases. Args: user_id: The user ID to check. room_id: The room ID to check. aliases: The associated aliases to the room. Will be a single element for testing alias creation, and can be empty for testing room publishing. Returns: True if the rule matches. """ # Note: The regexes are anchored at both ends if not self._user_id_regex.match(user_id): return False if not self._room_id_regex.match(room_id): return False # We only have alias checks left, so we can short circuit if the alias # rule matches everything. if self._alias_matches_all: return True # If we are not given any aliases then this rule only matches if the # alias glob matches all aliases, which we checked above. if not aliases: return False # Otherwise, we just need one alias to match for alias in aliases: if self._alias_regex.match(alias): return True return False synapse-1.53.0/synapse/config/saml2.py000066400000000000000000000407511420514467300176160ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # Copyright 2019-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import Any, List, Set from synapse.config.sso import SsoAttributeRequirement from synapse.python_dependencies import DependencyException, check_requirements from synapse.types import JsonDict from synapse.util.module_loader import load_module, load_python_module from ._base import Config, ConfigError from ._util import validate_config logger = logging.getLogger(__name__) DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.saml.DefaultSamlMappingProvider" # The module that DefaultSamlMappingProvider is in was renamed, we want to # transparently handle both the same. LEGACY_USER_MAPPING_PROVIDER = ( "synapse.handlers.saml_handler.DefaultSamlMappingProvider" ) def _dict_merge(merge_dict: dict, into_dict: dict) -> None: """Do a deep merge of two dicts Recursively merges `merge_dict` into `into_dict`: * For keys where both `merge_dict` and `into_dict` have a dict value, the values are recursively merged * For all other keys, the values in `into_dict` (if any) are overwritten with the value from `merge_dict`. Args: merge_dict: dict to merge into_dict: target dict to be modified """ for k, v in merge_dict.items(): if k not in into_dict: into_dict[k] = v continue current_val = into_dict[k] if isinstance(v, dict) and isinstance(current_val, dict): _dict_merge(v, current_val) continue # otherwise we just overwrite into_dict[k] = v class SAML2Config(Config): section = "saml2" def read_config(self, config, **kwargs) -> None: self.saml2_enabled = False saml2_config = config.get("saml2_config") if not saml2_config or not saml2_config.get("enabled", True): return if not saml2_config.get("sp_config") and not saml2_config.get("config_path"): return try: check_requirements("saml2") except DependencyException as e: raise ConfigError( e.message # noqa: B306, DependencyException.message is a property ) self.saml2_enabled = True attribute_requirements = saml2_config.get("attribute_requirements") or [] self.attribute_requirements = _parse_attribute_requirements_def( attribute_requirements ) self.saml2_grandfathered_mxid_source_attribute = saml2_config.get( "grandfathered_mxid_source_attribute", "uid" ) self.saml2_idp_entityid = saml2_config.get("idp_entityid", None) # user_mapping_provider may be None if the key is present but has no value ump_dict = saml2_config.get("user_mapping_provider") or {} # Use the default user mapping provider if not set ump_dict.setdefault("module", DEFAULT_USER_MAPPING_PROVIDER) if ump_dict.get("module") == LEGACY_USER_MAPPING_PROVIDER: ump_dict["module"] = DEFAULT_USER_MAPPING_PROVIDER # Ensure a config is present ump_dict["config"] = ump_dict.get("config") or {} if ump_dict["module"] == DEFAULT_USER_MAPPING_PROVIDER: # Load deprecated options for use by the default module old_mxid_source_attribute = saml2_config.get("mxid_source_attribute") if old_mxid_source_attribute: logger.warning( "The config option saml2_config.mxid_source_attribute is deprecated. " "Please use saml2_config.user_mapping_provider.config" ".mxid_source_attribute instead." ) ump_dict["config"]["mxid_source_attribute"] = old_mxid_source_attribute old_mxid_mapping = saml2_config.get("mxid_mapping") if old_mxid_mapping: logger.warning( "The config option saml2_config.mxid_mapping is deprecated. Please " "use saml2_config.user_mapping_provider.config.mxid_mapping instead." ) ump_dict["config"]["mxid_mapping"] = old_mxid_mapping # Retrieve an instance of the module's class # Pass the config dictionary to the module for processing ( self.saml2_user_mapping_provider_class, self.saml2_user_mapping_provider_config, ) = load_module(ump_dict, ("saml2_config", "user_mapping_provider")) # Ensure loaded user mapping module has defined all necessary methods # Note parse_config() is already checked during the call to load_module required_methods = [ "get_saml_attributes", "saml_response_to_user_attributes", "get_remote_user_id", ] missing_methods = [ method for method in required_methods if not hasattr(self.saml2_user_mapping_provider_class, method) ] if missing_methods: raise ConfigError( "Class specified by saml2_config." "user_mapping_provider.module is missing required " "methods: %s" % (", ".join(missing_methods),) ) # Get the desired saml auth response attributes from the module saml2_config_dict = self._default_saml_config_dict( *self.saml2_user_mapping_provider_class.get_saml_attributes( self.saml2_user_mapping_provider_config ) ) _dict_merge( merge_dict=saml2_config.get("sp_config", {}), into_dict=saml2_config_dict ) config_path = saml2_config.get("config_path", None) if config_path is not None: mod = load_python_module(config_path) config = getattr(mod, "CONFIG", None) if config is None: raise ConfigError( "Config path specified by saml2_config.config_path does not " "have a CONFIG property." ) _dict_merge(merge_dict=config, into_dict=saml2_config_dict) import saml2.config self.saml2_sp_config = saml2.config.SPConfig() self.saml2_sp_config.load(saml2_config_dict) # session lifetime: in milliseconds self.saml2_session_lifetime = self.parse_duration( saml2_config.get("saml_session_lifetime", "15m") ) def _default_saml_config_dict( self, required_attributes: Set[str], optional_attributes: Set[str] ) -> JsonDict: """Generate a configuration dictionary with required and optional attributes that will be needed to process new user registration Args: required_attributes: SAML auth response attributes that are necessary to function optional_attributes: SAML auth response attributes that can be used to add additional information to Synapse user accounts, but are not required Returns: A SAML configuration dictionary """ import saml2 if self.saml2_grandfathered_mxid_source_attribute: optional_attributes.add(self.saml2_grandfathered_mxid_source_attribute) optional_attributes -= required_attributes public_baseurl = self.root.server.public_baseurl metadata_url = public_baseurl + "_synapse/client/saml2/metadata.xml" response_url = public_baseurl + "_synapse/client/saml2/authn_response" return { "entityid": metadata_url, "service": { "sp": { "endpoints": { "assertion_consumer_service": [ (response_url, saml2.BINDING_HTTP_POST) ] }, "required_attributes": list(required_attributes), "optional_attributes": list(optional_attributes), # "name_id_format": saml2.saml.NAMEID_FORMAT_PERSISTENT, } }, } def generate_config_section(self, config_dir_path, server_name, **kwargs) -> str: return """\ ## Single sign-on integration ## # The following settings can be used to make Synapse use a single sign-on # provider for authentication, instead of its internal password database. # # You will probably also want to set the following options to `false` to # disable the regular login/registration flows: # * enable_registration # * password_config.enabled # # You will also want to investigate the settings under the "sso" configuration # section below. # Enable SAML2 for registration and login. Uses pysaml2. # # At least one of `sp_config` or `config_path` must be set in this section to # enable SAML login. # # Once SAML support is enabled, a metadata file will be exposed at # https://:/_synapse/client/saml2/metadata.xml, which you may be able to # use to configure your SAML IdP with. Alternatively, you can manually configure # the IdP to use an ACS location of # https://:/_synapse/client/saml2/authn_response. # saml2_config: # `sp_config` is the configuration for the pysaml2 Service Provider. # See pysaml2 docs for format of config. # # Default values will be used for the 'entityid' and 'service' settings, # so it is not normally necessary to specify them unless you need to # override them. # sp_config: # Point this to the IdP's metadata. You must provide either a local # file via the `local` attribute or (preferably) a URL via the # `remote` attribute. # #metadata: # local: ["saml2/idp.xml"] # remote: # - url: https://our_idp/metadata.xml # Allowed clock difference in seconds between the homeserver and IdP. # # Uncomment the below to increase the accepted time difference from 0 to 3 seconds. # #accepted_time_diff: 3 # By default, the user has to go to our login page first. If you'd like # to allow IdP-initiated login, set 'allow_unsolicited: true' in a # 'service.sp' section: # #service: # sp: # allow_unsolicited: true # The examples below are just used to generate our metadata xml, and you # may well not need them, depending on your setup. Alternatively you # may need a whole lot more detail - see the pysaml2 docs! #description: ["My awesome SP", "en"] #name: ["Test SP", "en"] #ui_info: # display_name: # - lang: en # text: "Display Name is the descriptive name of your service." # description: # - lang: en # text: "Description should be a short paragraph explaining the purpose of the service." # information_url: # - lang: en # text: "https://example.com/terms-of-service" # privacy_statement_url: # - lang: en # text: "https://example.com/privacy-policy" # keywords: # - lang: en # text: ["Matrix", "Element"] # logo: # - lang: en # text: "https://example.com/logo.svg" # width: "200" # height: "80" #organization: # name: Example com # display_name: # - ["Example co", "en"] # url: "http://example.com" #contact_person: # - given_name: Bob # sur_name: "the Sysadmin" # email_address": ["admin@example.com"] # contact_type": technical # Instead of putting the config inline as above, you can specify a # separate pysaml2 configuration file: # #config_path: "%(config_dir_path)s/sp_conf.py" # The lifetime of a SAML session. This defines how long a user has to # complete the authentication process, if allow_unsolicited is unset. # The default is 15 minutes. # #saml_session_lifetime: 5m # An external module can be provided here as a custom solution to # mapping attributes returned from a saml provider onto a matrix user. # user_mapping_provider: # The custom module's class. Uncomment to use a custom module. # #module: mapping_provider.SamlMappingProvider # Custom configuration values for the module. Below options are # intended for the built-in provider, they should be changed if # using a custom module. This section will be passed as a Python # dictionary to the module's `parse_config` method. # config: # The SAML attribute (after mapping via the attribute maps) to use # to derive the Matrix ID from. 'uid' by default. # # Note: This used to be configured by the # saml2_config.mxid_source_attribute option. If that is still # defined, its value will be used instead. # #mxid_source_attribute: displayName # The mapping system to use for mapping the saml attribute onto a # matrix ID. # # Options include: # * 'hexencode' (which maps unpermitted characters to '=xx') # * 'dotreplace' (which replaces unpermitted characters with # '.'). # The default is 'hexencode'. # # Note: This used to be configured by the # saml2_config.mxid_mapping option. If that is still defined, its # value will be used instead. # #mxid_mapping: dotreplace # In previous versions of synapse, the mapping from SAML attribute to # MXID was always calculated dynamically rather than stored in a # table. For backwards- compatibility, we will look for user_ids # matching such a pattern before creating a new account. # # This setting controls the SAML attribute which will be used for this # backwards-compatibility lookup. Typically it should be 'uid', but if # the attribute maps are changed, it may be necessary to change it. # # The default is 'uid'. # #grandfathered_mxid_source_attribute: upn # It is possible to configure Synapse to only allow logins if SAML attributes # match particular values. The requirements can be listed under # `attribute_requirements` as shown below. All of the listed attributes must # match for the login to be permitted. # #attribute_requirements: # - attribute: userGroup # value: "staff" # - attribute: department # value: "sales" # If the metadata XML contains multiple IdP entities then the `idp_entityid` # option must be set to the entity to redirect users to. # # Most deployments only have a single IdP entity and so should omit this # option. # #idp_entityid: 'https://our_idp/entityid' """ % { "config_dir_path": config_dir_path } ATTRIBUTE_REQUIREMENTS_SCHEMA = { "type": "array", "items": SsoAttributeRequirement.JSON_SCHEMA, } def _parse_attribute_requirements_def( attribute_requirements: Any, ) -> List[SsoAttributeRequirement]: validate_config( ATTRIBUTE_REQUIREMENTS_SCHEMA, attribute_requirements, config_path=("saml2_config", "attribute_requirements"), ) return [SsoAttributeRequirement(**x) for x in attribute_requirements] synapse-1.53.0/synapse/config/server.py000066400000000000000000001506661420514467300201150ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import itertools import logging import os.path import re import urllib.parse from textwrap import indent from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union import attr import yaml from netaddr import AddrFormatError, IPNetwork, IPSet from twisted.conch.ssh.keys import Key from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.types import JsonDict from synapse.util.module_loader import load_module from synapse.util.stringutils import parse_and_validate_server_name from ._base import Config, ConfigError from ._util import validate_config logger = logging.Logger(__name__) # by default, we attempt to listen on both '::' *and* '0.0.0.0' because some OSes # (Windows, macOS, other BSD/Linux where net.ipv6.bindv6only is set) will only listen # on IPv6 when '::' is set. # # We later check for errors when binding to 0.0.0.0 and ignore them if :: is also in # in the list. DEFAULT_BIND_ADDRESSES = ["::", "0.0.0.0"] def _6to4(network: IPNetwork) -> IPNetwork: """Convert an IPv4 network into a 6to4 IPv6 network per RFC 3056.""" # 6to4 networks consist of: # * 2002 as the first 16 bits # * The first IPv4 address in the network hex-encoded as the next 32 bits # * The new prefix length needs to include the bits from the 2002 prefix. hex_network = hex(network.first)[2:] hex_network = ("0" * (8 - len(hex_network))) + hex_network return IPNetwork( "2002:%s:%s::/%d" % ( hex_network[:4], hex_network[4:], 16 + network.prefixlen, ) ) def generate_ip_set( ip_addresses: Optional[Iterable[str]], extra_addresses: Optional[Iterable[str]] = None, config_path: Optional[Iterable[str]] = None, ) -> IPSet: """ Generate an IPSet from a list of IP addresses or CIDRs. Additionally, for each IPv4 network in the list of IP addresses, also includes the corresponding IPv6 networks. This includes: * IPv4-Compatible IPv6 Address (see RFC 4291, section 2.5.5.1) * IPv4-Mapped IPv6 Address (see RFC 4291, section 2.5.5.2) * 6to4 Address (see RFC 3056, section 2) Args: ip_addresses: An iterable of IP addresses or CIDRs. extra_addresses: An iterable of IP addresses or CIDRs. config_path: The path in the configuration for error messages. Returns: A new IP set. """ result = IPSet() for ip in itertools.chain(ip_addresses or (), extra_addresses or ()): try: network = IPNetwork(ip) except AddrFormatError as e: raise ConfigError( "Invalid IP range provided: %s." % (ip,), config_path ) from e result.add(network) # It is possible that these already exist in the set, but that's OK. if ":" not in str(network): result.add(IPNetwork(network).ipv6(ipv4_compatible=True)) result.add(IPNetwork(network).ipv6(ipv4_compatible=False)) result.add(_6to4(network)) return result # IP ranges that are considered private / unroutable / don't make sense. DEFAULT_IP_RANGE_BLACKLIST = [ # Localhost "127.0.0.0/8", # Private networks. "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", # Carrier grade NAT. "100.64.0.0/10", # Address registry. "192.0.0.0/24", # Link-local networks. "169.254.0.0/16", # Formerly used for 6to4 relay. "192.88.99.0/24", # Testing networks. "198.18.0.0/15", "192.0.2.0/24", "198.51.100.0/24", "203.0.113.0/24", # Multicast. "224.0.0.0/4", # Localhost "::1/128", # Link-local addresses. "fe80::/10", # Unique local addresses. "fc00::/7", # Testing networks. "2001:db8::/32", # Multicast. "ff00::/8", # Site-local addresses "fec0::/10", ] DEFAULT_ROOM_VERSION = "6" ROOM_COMPLEXITY_TOO_GREAT = ( "Your homeserver is unable to join rooms this large or complex. " "Please speak to your server administrator, or upgrade your instance " "to join this room." ) METRICS_PORT_WARNING = """\ The metrics_port configuration option is deprecated in Synapse 0.31 in favour of a listener. Please see https://matrix-org.github.io/synapse/latest/metrics-howto.html on how to configure the new listener. --------------------------------------------------------------------------------""" KNOWN_LISTENER_TYPES = { "http", "metrics", "manhole", "replication", } KNOWN_RESOURCES = { "client", "consent", "federation", "keys", "media", "metrics", "openid", "replication", "static", } @attr.s(frozen=True) class HttpResourceConfig: names: List[str] = attr.ib( factory=list, validator=attr.validators.deep_iterable(attr.validators.in_(KNOWN_RESOURCES)), # type: ignore ) compress: bool = attr.ib( default=False, validator=attr.validators.optional(attr.validators.instance_of(bool)), # type: ignore[arg-type] ) @attr.s(slots=True, frozen=True, auto_attribs=True) class HttpListenerConfig: """Object describing the http-specific parts of the config of a listener""" x_forwarded: bool = False resources: List[HttpResourceConfig] = attr.Factory(list) additional_resources: Dict[str, dict] = attr.Factory(dict) tag: Optional[str] = None @attr.s(slots=True, frozen=True, auto_attribs=True) class ListenerConfig: """Object describing the configuration of a single listener.""" port: int = attr.ib(validator=attr.validators.instance_of(int)) bind_addresses: List[str] type: str = attr.ib(validator=attr.validators.in_(KNOWN_LISTENER_TYPES)) tls: bool = False # http_options is only populated if type=http http_options: Optional[HttpListenerConfig] = None @attr.s(slots=True, frozen=True, auto_attribs=True) class ManholeConfig: """Object describing the configuration of the manhole""" username: str = attr.ib(validator=attr.validators.instance_of(str)) password: str = attr.ib(validator=attr.validators.instance_of(str)) priv_key: Optional[Key] pub_key: Optional[Key] @attr.s(frozen=True) class LimitRemoteRoomsConfig: enabled: bool = attr.ib(validator=attr.validators.instance_of(bool), default=False) complexity: Union[float, int] = attr.ib( validator=attr.validators.instance_of( (float, int) # type: ignore[arg-type] # noqa ), default=1.0, ) complexity_error: str = attr.ib( validator=attr.validators.instance_of(str), default=ROOM_COMPLEXITY_TOO_GREAT, ) admins_can_join: bool = attr.ib( validator=attr.validators.instance_of(bool), default=False ) class ServerConfig(Config): section = "server" def read_config(self, config, **kwargs): self.server_name = config["server_name"] self.server_context = config.get("server_context", None) try: parse_and_validate_server_name(self.server_name) except ValueError as e: raise ConfigError(str(e)) self.pid_file = self.abspath(config.get("pid_file")) self.soft_file_limit = config.get("soft_file_limit", 0) self.daemonize = config.get("daemonize") self.print_pidfile = config.get("print_pidfile") self.user_agent_suffix = config.get("user_agent_suffix") self.use_frozen_dicts = config.get("use_frozen_dicts", False) self.serve_server_wellknown = config.get("serve_server_wellknown", False) # Whether we should serve a "client well-known": # (a) at .well-known/matrix/client on our client HTTP listener # (b) in the response to /login # # ... which together help ensure that clients use our public_baseurl instead of # whatever they were told by the user. # # For the sake of backwards compatibility with existing installations, this is # True if public_baseurl is specified explicitly, and otherwise False. (The # reasoning here is that we have no way of knowing that the default # public_baseurl is actually correct for existing installations - many things # will not work correctly, but that's (probably?) better than sending clients # to a completely broken URL. self.serve_client_wellknown = False public_baseurl = config.get("public_baseurl") if public_baseurl is None: public_baseurl = f"https://{self.server_name}/" logger.info("Using default public_baseurl %s", public_baseurl) else: self.serve_client_wellknown = True if public_baseurl[-1] != "/": public_baseurl += "/" self.public_baseurl = public_baseurl # check that public_baseurl is valid try: splits = urllib.parse.urlsplit(self.public_baseurl) except Exception as e: raise ConfigError(f"Unable to parse URL: {e}", ("public_baseurl",)) if splits.scheme not in ("https", "http"): raise ConfigError( f"Invalid scheme '{splits.scheme}': only https and http are supported" ) if splits.query or splits.fragment: raise ConfigError( "public_baseurl cannot contain query parameters or a #-fragment" ) # Whether to enable user presence. presence_config = config.get("presence") or {} self.use_presence = presence_config.get("enabled") if self.use_presence is None: self.use_presence = config.get("use_presence", True) # Custom presence router module # This is the legacy way of configuring it (the config should now be put in the modules section) self.presence_router_module_class = None self.presence_router_config = None presence_router_config = presence_config.get("presence_router") if presence_router_config: ( self.presence_router_module_class, self.presence_router_config, ) = load_module(presence_router_config, ("presence", "presence_router")) # Whether to update the user directory or not. This should be set to # false only if we are updating the user directory in a worker self.update_user_directory = config.get("update_user_directory", True) # whether to enable the media repository endpoints. This should be set # to false if the media repository is running as a separate endpoint; # doing so ensures that we will not run cache cleanup jobs on the # master, potentially causing inconsistency. self.enable_media_repo = config.get("enable_media_repo", True) # Whether to require authentication to retrieve profile data (avatars, # display names) of other users through the client API. self.require_auth_for_profile_requests = config.get( "require_auth_for_profile_requests", False ) # Whether to require sharing a room with a user to retrieve their # profile data self.limit_profile_requests_to_users_who_share_rooms = config.get( "limit_profile_requests_to_users_who_share_rooms", False, ) # Whether to retrieve and display profile data for a user when they # are invited to a room self.include_profile_data_on_invite = config.get( "include_profile_data_on_invite", True ) if "restrict_public_rooms_to_local_users" in config and ( "allow_public_rooms_without_auth" in config or "allow_public_rooms_over_federation" in config ): raise ConfigError( "Can't use 'restrict_public_rooms_to_local_users' if" " 'allow_public_rooms_without_auth' and/or" " 'allow_public_rooms_over_federation' is set." ) # Check if the legacy "restrict_public_rooms_to_local_users" flag is set. This # flag is now obsolete but we need to check it for backward-compatibility. if config.get("restrict_public_rooms_to_local_users", False): self.allow_public_rooms_without_auth = False self.allow_public_rooms_over_federation = False else: # If set to 'true', removes the need for authentication to access the server's # public rooms directory through the client API, meaning that anyone can # query the room directory. Defaults to 'false'. self.allow_public_rooms_without_auth = config.get( "allow_public_rooms_without_auth", False ) # If set to 'true', allows any other homeserver to fetch the server's public # rooms directory via federation. Defaults to 'false'. self.allow_public_rooms_over_federation = config.get( "allow_public_rooms_over_federation", False ) default_room_version = config.get("default_room_version", DEFAULT_ROOM_VERSION) # Ensure room version is a str default_room_version = str(default_room_version) if default_room_version not in KNOWN_ROOM_VERSIONS: raise ConfigError( "Unknown default_room_version: %s, known room versions: %s" % (default_room_version, list(KNOWN_ROOM_VERSIONS.keys())) ) # Get the actual room version object rather than just the identifier self.default_room_version = KNOWN_ROOM_VERSIONS[default_room_version] # whether to enable search. If disabled, new entries will not be inserted # into the search tables and they will not be indexed. Users will receive # errors when attempting to search for messages. self.enable_search = config.get("enable_search", True) self.filter_timeline_limit = config.get("filter_timeline_limit", 100) # Whether we should block invites sent to users on this server # (other than those sent by local server admins) self.block_non_admin_invites = config.get("block_non_admin_invites", False) # Options to control access by tracking MAU self.limit_usage_by_mau = config.get("limit_usage_by_mau", False) self.max_mau_value = 0 if self.limit_usage_by_mau: self.max_mau_value = config.get("max_mau_value", 0) self.mau_stats_only = config.get("mau_stats_only", False) self.mau_limits_reserved_threepids = config.get( "mau_limit_reserved_threepids", [] ) self.mau_trial_days = config.get("mau_trial_days", 0) self.mau_limit_alerting = config.get("mau_limit_alerting", True) # How long to keep redacted events in the database in unredacted form # before redacting them. redaction_retention_period = config.get("redaction_retention_period", "7d") if redaction_retention_period is not None: self.redaction_retention_period: Optional[int] = self.parse_duration( redaction_retention_period ) else: self.redaction_retention_period = None # How long to keep entries in the `users_ips` table. user_ips_max_age = config.get("user_ips_max_age", "28d") if user_ips_max_age is not None: self.user_ips_max_age: Optional[int] = self.parse_duration(user_ips_max_age) else: self.user_ips_max_age = None # Options to disable HS self.hs_disabled = config.get("hs_disabled", False) self.hs_disabled_message = config.get("hs_disabled_message", "") # Admin uri to direct users at should their instance become blocked # due to resource constraints self.admin_contact = config.get("admin_contact", None) ip_range_blacklist = config.get( "ip_range_blacklist", DEFAULT_IP_RANGE_BLACKLIST ) # Attempt to create an IPSet from the given ranges # Always blacklist 0.0.0.0, :: self.ip_range_blacklist = generate_ip_set( ip_range_blacklist, ["0.0.0.0", "::"], config_path=("ip_range_blacklist",) ) self.ip_range_whitelist = generate_ip_set( config.get("ip_range_whitelist", ()), config_path=("ip_range_whitelist",) ) # The federation_ip_range_blacklist is used for backwards-compatibility # and only applies to federation and identity servers. if "federation_ip_range_blacklist" in config: # Always blacklist 0.0.0.0, :: self.federation_ip_range_blacklist = generate_ip_set( config["federation_ip_range_blacklist"], ["0.0.0.0", "::"], config_path=("federation_ip_range_blacklist",), ) # 'federation_ip_range_whitelist' was never a supported configuration option. self.federation_ip_range_whitelist = None else: # No backwards-compatiblity requrired, as federation_ip_range_blacklist # is not given. Default to ip_range_blacklist and ip_range_whitelist. self.federation_ip_range_blacklist = self.ip_range_blacklist self.federation_ip_range_whitelist = self.ip_range_whitelist # (undocumented) option for torturing the worker-mode replication a bit, # for testing. The value defines the number of milliseconds to pause before # sending out any replication updates. self.replication_torture_level = config.get("replication_torture_level") # Whether to require a user to be in the room to add an alias to it. # Defaults to True. self.require_membership_for_aliases = config.get( "require_membership_for_aliases", True ) # Whether to allow per-room membership profiles through the send of membership # events with profile information that differ from the target's global profile. self.allow_per_room_profiles = config.get("allow_per_room_profiles", True) # The maximum size an avatar can have, in bytes. self.max_avatar_size = config.get("max_avatar_size") if self.max_avatar_size is not None: self.max_avatar_size = self.parse_size(self.max_avatar_size) # The MIME types allowed for an avatar. self.allowed_avatar_mimetypes = config.get("allowed_avatar_mimetypes") if self.allowed_avatar_mimetypes and not isinstance( self.allowed_avatar_mimetypes, list, ): raise ConfigError("allowed_avatar_mimetypes must be a list") self.listeners = [parse_listener_def(x) for x in config.get("listeners", [])] # no_tls is not really supported any more, but let's grandfather it in # here. if config.get("no_tls", False): l2 = [] for listener in self.listeners: if listener.tls: logger.info( "Ignoring TLS-enabled listener on port %i due to no_tls", listener.port, ) else: l2.append(listener) self.listeners = l2 self.web_client_location = config.get("web_client_location", None) # Non-HTTP(S) web client location is not supported. if self.web_client_location and not ( self.web_client_location.startswith("http://") or self.web_client_location.startswith("https://") ): raise ConfigError("web_client_location must point to a HTTP(S) URL.") self.gc_thresholds = read_gc_thresholds(config.get("gc_thresholds", None)) self.gc_seconds = self.read_gc_intervals(config.get("gc_min_interval", None)) self.limit_remote_rooms = LimitRemoteRoomsConfig( **(config.get("limit_remote_rooms") or {}) ) bind_port = config.get("bind_port") if bind_port: if config.get("no_tls", False): raise ConfigError("no_tls is incompatible with bind_port") self.listeners = [] bind_host = config.get("bind_host", "") gzip_responses = config.get("gzip_responses", True) http_options = HttpListenerConfig( resources=[ HttpResourceConfig(names=["client"], compress=gzip_responses), HttpResourceConfig(names=["federation"]), ], ) self.listeners.append( ListenerConfig( port=bind_port, bind_addresses=[bind_host], tls=True, type="http", http_options=http_options, ) ) unsecure_port = config.get("unsecure_port", bind_port - 400) if unsecure_port: self.listeners.append( ListenerConfig( port=unsecure_port, bind_addresses=[bind_host], tls=False, type="http", http_options=http_options, ) ) manhole = config.get("manhole") if manhole: self.listeners.append( ListenerConfig( port=manhole, bind_addresses=["127.0.0.1"], type="manhole", ) ) manhole_settings = config.get("manhole_settings") or {} validate_config( _MANHOLE_SETTINGS_SCHEMA, manhole_settings, ("manhole_settings",) ) manhole_username = manhole_settings.get("username", "matrix") manhole_password = manhole_settings.get("password", "rabbithole") manhole_priv_key_path = manhole_settings.get("ssh_priv_key_path") manhole_pub_key_path = manhole_settings.get("ssh_pub_key_path") manhole_priv_key = None if manhole_priv_key_path is not None: try: manhole_priv_key = Key.fromFile(manhole_priv_key_path) except Exception as e: raise ConfigError( f"Failed to read manhole private key file {manhole_priv_key_path}" ) from e manhole_pub_key = None if manhole_pub_key_path is not None: try: manhole_pub_key = Key.fromFile(manhole_pub_key_path) except Exception as e: raise ConfigError( f"Failed to read manhole public key file {manhole_pub_key_path}" ) from e self.manhole_settings = ManholeConfig( username=manhole_username, password=manhole_password, priv_key=manhole_priv_key, pub_key=manhole_pub_key, ) metrics_port = config.get("metrics_port") if metrics_port: logger.warning(METRICS_PORT_WARNING) self.listeners.append( ListenerConfig( port=metrics_port, bind_addresses=[config.get("metrics_bind_host", "127.0.0.1")], type="http", http_options=HttpListenerConfig( resources=[HttpResourceConfig(names=["metrics"])] ), ) ) self.cleanup_extremities_with_dummy_events = config.get( "cleanup_extremities_with_dummy_events", True ) # The number of forward extremities in a room needed to send a dummy event. self.dummy_events_threshold = config.get("dummy_events_threshold", 10) self.enable_ephemeral_messages = config.get("enable_ephemeral_messages", False) # Inhibits the /requestToken endpoints from returning an error that might leak # information about whether an e-mail address is in use or not on this # homeserver, and instead return a 200 with a fake sid if this kind of error is # met, without sending anything. # This is a compromise between sending an email, which could be a spam vector, # and letting the client know which email address is bound to an account and # which one isn't. self.request_token_inhibit_3pid_errors = config.get( "request_token_inhibit_3pid_errors", False, ) # Whitelist of domain names that given next_link parameters must have next_link_domain_whitelist: Optional[List[str]] = config.get( "next_link_domain_whitelist" ) self.next_link_domain_whitelist: Optional[Set[str]] = None if next_link_domain_whitelist is not None: if not isinstance(next_link_domain_whitelist, list): raise ConfigError("'next_link_domain_whitelist' must be a list") # Turn the list into a set to improve lookup speed. self.next_link_domain_whitelist = set(next_link_domain_whitelist) templates_config = config.get("templates") or {} if not isinstance(templates_config, dict): raise ConfigError("The 'templates' section must be a dictionary") self.custom_template_directory: Optional[str] = templates_config.get( "custom_template_directory" ) if self.custom_template_directory is not None and not isinstance( self.custom_template_directory, str ): raise ConfigError("'custom_template_directory' must be a string") def has_tls_listener(self) -> bool: return any(listener.tls for listener in self.listeners) def generate_config_section( self, server_name, data_dir_path, open_private_ports, listeners, config_dir_path, **kwargs, ): ip_range_blacklist = "\n".join( " # - '%s'" % ip for ip in DEFAULT_IP_RANGE_BLACKLIST ) _, bind_port = parse_and_validate_server_name(server_name) if bind_port is not None: unsecure_port = bind_port - 400 else: bind_port = 8448 unsecure_port = 8008 pid_file = os.path.join(data_dir_path, "homeserver.pid") # Bring DEFAULT_ROOM_VERSION into the local-scope for use in the # default config string default_room_version = DEFAULT_ROOM_VERSION secure_listeners = [] unsecure_listeners = [] private_addresses = ["::1", "127.0.0.1"] if listeners: for listener in listeners: if listener["tls"]: secure_listeners.append(listener) else: # If we don't want open ports we need to bind the listeners # to some address other than 0.0.0.0. Here we chose to use # localhost. # If the addresses are already bound we won't overwrite them # however. if not open_private_ports: listener.setdefault("bind_addresses", private_addresses) unsecure_listeners.append(listener) secure_http_bindings = indent( yaml.dump(secure_listeners), " " * 10 ).lstrip() unsecure_http_bindings = indent( yaml.dump(unsecure_listeners), " " * 10 ).lstrip() if not unsecure_listeners: unsecure_http_bindings = ( """- port: %(unsecure_port)s tls: false type: http x_forwarded: true""" % locals() ) if not open_private_ports: unsecure_http_bindings += ( "\n bind_addresses: ['::1', '127.0.0.1']" ) unsecure_http_bindings += """ resources: - names: [client, federation] compress: false""" if listeners: # comment out this block unsecure_http_bindings = "#" + re.sub( "\n {10}", lambda match: match.group(0) + "#", unsecure_http_bindings, ) if not secure_listeners: secure_http_bindings = ( """#- port: %(bind_port)s # type: http # tls: true # resources: # - names: [client, federation]""" % locals() ) return ( """\ ## Server ## # The public-facing domain of the server # # The server_name name will appear at the end of usernames and room addresses # created on this server. For example if the server_name was example.com, # usernames on this server would be in the format @user:example.com # # In most cases you should avoid using a matrix specific subdomain such as # matrix.example.com or synapse.example.com as the server_name for the same # reasons you wouldn't use user@email.example.com as your email address. # See https://matrix-org.github.io/synapse/latest/delegate.html # for information on how to host Synapse on a subdomain while preserving # a clean server_name. # # The server_name cannot be changed later so it is important to # configure this correctly before you start Synapse. It should be all # lowercase and may contain an explicit port. # Examples: matrix.org, localhost:8080 # server_name: "%(server_name)s" # When running as a daemon, the file to store the pid in # pid_file: %(pid_file)s # The absolute URL to the web client which / will redirect to. # #web_client_location: https://riot.example.com/ # The public-facing base URL that clients use to access this Homeserver (not # including _matrix/...). This is the same URL a user might enter into the # 'Custom Homeserver URL' field on their client. If you use Synapse with a # reverse proxy, this should be the URL to reach Synapse via the proxy. # Otherwise, it should be the URL to reach Synapse's client HTTP listener (see # 'listeners' below). # # Defaults to 'https:///'. # #public_baseurl: https://example.com/ # Uncomment the following to tell other servers to send federation traffic on # port 443. # # By default, other servers will try to reach our server on port 8448, which can # be inconvenient in some environments. # # Provided 'https:///' on port 443 is routed to Synapse, this # option configures Synapse to serve a file at # 'https:///.well-known/matrix/server'. This will tell other # servers to send traffic to port 443 instead. # # See https://matrix-org.github.io/synapse/latest/delegate.html for more # information. # # Defaults to 'false'. # #serve_server_wellknown: true # Set the soft limit on the number of file descriptors synapse can use # Zero is used to indicate synapse should set the soft limit to the # hard limit. # #soft_file_limit: 0 # Presence tracking allows users to see the state (e.g online/offline) # of other local and remote users. # presence: # Uncomment to disable presence tracking on this homeserver. This option # replaces the previous top-level 'use_presence' option. # #enabled: false # Whether to require authentication to retrieve profile data (avatars, # display names) of other users through the client API. Defaults to # 'false'. Note that profile data is also available via the federation # API, unless allow_profile_lookup_over_federation is set to false. # #require_auth_for_profile_requests: true # Uncomment to require a user to share a room with another user in order # to retrieve their profile information. Only checked on Client-Server # requests. Profile requests from other servers should be checked by the # requesting server. Defaults to 'false'. # #limit_profile_requests_to_users_who_share_rooms: true # Uncomment to prevent a user's profile data from being retrieved and # displayed in a room until they have joined it. By default, a user's # profile data is included in an invite event, regardless of the values # of the above two settings, and whether or not the users share a server. # Defaults to 'true'. # #include_profile_data_on_invite: false # If set to 'true', removes the need for authentication to access the server's # public rooms directory through the client API, meaning that anyone can # query the room directory. Defaults to 'false'. # #allow_public_rooms_without_auth: true # If set to 'true', allows any other homeserver to fetch the server's public # rooms directory via federation. Defaults to 'false'. # #allow_public_rooms_over_federation: true # The default room version for newly created rooms. # # Known room versions are listed here: # https://spec.matrix.org/latest/rooms/#complete-list-of-room-versions # # For example, for room version 1, default_room_version should be set # to "1". # #default_room_version: "%(default_room_version)s" # The GC threshold parameters to pass to `gc.set_threshold`, if defined # #gc_thresholds: [700, 10, 10] # The minimum time in seconds between each GC for a generation, regardless of # the GC thresholds. This ensures that we don't do GC too frequently. # # A value of `[1s, 10s, 30s]` indicates that a second must pass between consecutive # generation 0 GCs, etc. # # Defaults to `[1s, 10s, 30s]`. # #gc_min_interval: [0.5s, 30s, 1m] # Set the limit on the returned events in the timeline in the get # and sync operations. The default value is 100. -1 means no upper limit. # # Uncomment the following to increase the limit to 5000. # #filter_timeline_limit: 5000 # Whether room invites to users on this server should be blocked # (except those sent by local server admins). The default is False. # #block_non_admin_invites: true # Room searching # # If disabled, new messages will not be indexed for searching and users # will receive errors when searching for messages. Defaults to enabled. # #enable_search: false # Prevent outgoing requests from being sent to the following blacklisted IP address # CIDR ranges. If this option is not specified then it defaults to private IP # address ranges (see the example below). # # The blacklist applies to the outbound requests for federation, identity servers, # push servers, and for checking key validity for third-party invite events. # # (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly # listed here, since they correspond to unroutable addresses.) # # This option replaces federation_ip_range_blacklist in Synapse v1.25.0. # # Note: The value is ignored when an HTTP proxy is in use # #ip_range_blacklist: %(ip_range_blacklist)s # List of IP address CIDR ranges that should be allowed for federation, # identity servers, push servers, and for checking key validity for # third-party invite events. This is useful for specifying exceptions to # wide-ranging blacklisted target IP ranges - e.g. for communication with # a push server only visible in your network. # # This whitelist overrides ip_range_blacklist and defaults to an empty # list. # #ip_range_whitelist: # - '192.168.1.1' # List of ports that Synapse should listen on, their purpose and their # configuration. # # Options for each listener include: # # port: the TCP port to bind to # # bind_addresses: a list of local addresses to listen on. The default is # 'all local interfaces'. # # type: the type of listener. Normally 'http', but other valid options are: # 'manhole' (see https://matrix-org.github.io/synapse/latest/manhole.html), # 'metrics' (see https://matrix-org.github.io/synapse/latest/metrics-howto.html), # 'replication' (see https://matrix-org.github.io/synapse/latest/workers.html). # # tls: set to true to enable TLS for this listener. Will use the TLS # key/cert specified in tls_private_key_path / tls_certificate_path. # # x_forwarded: Only valid for an 'http' listener. Set to true to use the # X-Forwarded-For header as the client IP. Useful when Synapse is # behind a reverse-proxy. # # resources: Only valid for an 'http' listener. A list of resources to host # on this port. Options for each resource are: # # names: a list of names of HTTP resources. See below for a list of # valid resource names. # # compress: set to true to enable HTTP compression for this resource. # # additional_resources: Only valid for an 'http' listener. A map of # additional endpoints which should be loaded via dynamic modules. # # Valid resource names are: # # client: the client-server API (/_matrix/client), and the synapse admin # API (/_synapse/admin). Also implies 'media' and 'static'. # # consent: user consent forms (/_matrix/consent). # See https://matrix-org.github.io/synapse/latest/consent_tracking.html. # # federation: the server-server API (/_matrix/federation). Also implies # 'media', 'keys', 'openid' # # keys: the key discovery API (/_matrix/keys). # # media: the media API (/_matrix/media). # # metrics: the metrics interface. # See https://matrix-org.github.io/synapse/latest/metrics-howto.html. # # openid: OpenID authentication. # # replication: the HTTP replication API (/_synapse/replication). # See https://matrix-org.github.io/synapse/latest/workers.html. # # static: static resources under synapse/static (/_matrix/static). (Mostly # useful for 'fallback authentication'.) # listeners: # TLS-enabled listener: for when matrix traffic is sent directly to synapse. # # Disabled by default. To enable it, uncomment the following. (Note that you # will also need to give Synapse a TLS key and certificate: see the TLS section # below.) # %(secure_http_bindings)s # Unsecure HTTP listener: for when matrix traffic passes through a reverse proxy # that unwraps TLS. # # If you plan to use a reverse proxy, please see # https://matrix-org.github.io/synapse/latest/reverse_proxy.html. # %(unsecure_http_bindings)s # example additional_resources: # #additional_resources: # "/_matrix/my/custom/endpoint": # module: my_module.CustomRequestHandler # config: {} # Turn on the twisted ssh manhole service on localhost on the given # port. # #- port: 9000 # bind_addresses: ['::1', '127.0.0.1'] # type: manhole # Connection settings for the manhole # manhole_settings: # The username for the manhole. This defaults to 'matrix'. # #username: manhole # The password for the manhole. This defaults to 'rabbithole'. # #password: mypassword # The private and public SSH key pair used to encrypt the manhole traffic. # If these are left unset, then hardcoded and non-secret keys are used, # which could allow traffic to be intercepted if sent over a public network. # #ssh_priv_key_path: %(config_dir_path)s/id_rsa #ssh_pub_key_path: %(config_dir_path)s/id_rsa.pub # Forward extremities can build up in a room due to networking delays between # homeservers. Once this happens in a large room, calculation of the state of # that room can become quite expensive. To mitigate this, once the number of # forward extremities reaches a given threshold, Synapse will send an # org.matrix.dummy_event event, which will reduce the forward extremities # in the room. # # This setting defines the threshold (i.e. number of forward extremities in the # room) at which dummy events are sent. The default value is 10. # #dummy_events_threshold: 5 ## Homeserver blocking ## # How to reach the server admin, used in ResourceLimitError # #admin_contact: 'mailto:admin@server.com' # Global blocking # #hs_disabled: false #hs_disabled_message: 'Human readable reason for why the HS is blocked' # Monthly Active User Blocking # # Used in cases where the admin or server owner wants to limit to the # number of monthly active users. # # 'limit_usage_by_mau' disables/enables monthly active user blocking. When # enabled and a limit is reached the server returns a 'ResourceLimitError' # with error type Codes.RESOURCE_LIMIT_EXCEEDED # # 'max_mau_value' is the hard limit of monthly active users above which # the server will start blocking user actions. # # 'mau_trial_days' is a means to add a grace period for active users. It # means that users must be active for this number of days before they # can be considered active and guards against the case where lots of users # sign up in a short space of time never to return after their initial # session. # # 'mau_limit_alerting' is a means of limiting client side alerting # should the mau limit be reached. This is useful for small instances # where the admin has 5 mau seats (say) for 5 specific people and no # interest increasing the mau limit further. Defaults to True, which # means that alerting is enabled # #limit_usage_by_mau: false #max_mau_value: 50 #mau_trial_days: 2 #mau_limit_alerting: false # If enabled, the metrics for the number of monthly active users will # be populated, however no one will be limited. If limit_usage_by_mau # is true, this is implied to be true. # #mau_stats_only: false # Sometimes the server admin will want to ensure certain accounts are # never blocked by mau checking. These accounts are specified here. # #mau_limit_reserved_threepids: # - medium: 'email' # address: 'reserved_user@example.com' # Used by phonehome stats to group together related servers. #server_context: context # Resource-constrained homeserver settings # # When this is enabled, the room "complexity" will be checked before a user # joins a new remote room. If it is above the complexity limit, the server will # disallow joining, or will instantly leave. # # Room complexity is an arbitrary measure based on factors such as the number of # users in the room. # limit_remote_rooms: # Uncomment to enable room complexity checking. # #enabled: true # the limit above which rooms cannot be joined. The default is 1.0. # #complexity: 0.5 # override the error which is returned when the room is too complex. # #complexity_error: "This room is too complex." # allow server admins to join complex rooms. Default is false. # #admins_can_join: true # Whether to require a user to be in the room to add an alias to it. # Defaults to 'true'. # #require_membership_for_aliases: false # Whether to allow per-room membership profiles through the send of membership # events with profile information that differ from the target's global profile. # Defaults to 'true'. # #allow_per_room_profiles: false # The largest allowed file size for a user avatar. Defaults to no restriction. # # Note that user avatar changes will not work if this is set without # using Synapse's media repository. # #max_avatar_size: 10M # The MIME types allowed for user avatars. Defaults to no restriction. # # Note that user avatar changes will not work if this is set without # using Synapse's media repository. # #allowed_avatar_mimetypes: ["image/png", "image/jpeg", "image/gif"] # How long to keep redacted events in unredacted form in the database. After # this period redacted events get replaced with their redacted form in the DB. # # Defaults to `7d`. Set to `null` to disable. # #redaction_retention_period: 28d # How long to track users' last seen time and IPs in the database. # # Defaults to `28d`. Set to `null` to disable clearing out of old rows. # #user_ips_max_age: 14d # Inhibits the /requestToken endpoints from returning an error that might leak # information about whether an e-mail address is in use or not on this # homeserver. # Note that for some endpoints the error situation is the e-mail already being # used, and for others the error is entering the e-mail being unused. # If this option is enabled, instead of returning an error, these endpoints will # act as if no error happened and return a fake session ID ('sid') to clients. # #request_token_inhibit_3pid_errors: true # A list of domains that the domain portion of 'next_link' parameters # must match. # # This parameter is optionally provided by clients while requesting # validation of an email or phone number, and maps to a link that # users will be automatically redirected to after validation # succeeds. Clients can make use this parameter to aid the validation # process. # # The whitelist is applied whether the homeserver or an # identity server is handling validation. # # The default value is no whitelist functionality; all domains are # allowed. Setting this value to an empty list will instead disallow # all domains. # #next_link_domain_whitelist: ["matrix.org"] # Templates to use when generating email or HTML page contents. # templates: # Directory in which Synapse will try to find template files to use to generate # email or HTML page contents. # If not set, or a file is not found within the template directory, a default # template from within the Synapse package will be used. # # See https://matrix-org.github.io/synapse/latest/templates.html for more # information about using custom templates. # #custom_template_directory: /path/to/custom/templates/ """ % locals() ) def read_arguments(self, args: argparse.Namespace) -> None: if args.manhole is not None: self.manhole = args.manhole if args.daemonize is not None: self.daemonize = args.daemonize if args.print_pidfile is not None: self.print_pidfile = args.print_pidfile @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: server_group = parser.add_argument_group("server") server_group.add_argument( "-D", "--daemonize", action="store_true", default=None, help="Daemonize the homeserver", ) server_group.add_argument( "--print-pidfile", action="store_true", default=None, help="Print the path to the pidfile just before daemonizing", ) server_group.add_argument( "--manhole", metavar="PORT", dest="manhole", type=int, help="Turn on the twisted telnet manhole service on the given port.", ) def read_gc_intervals(self, durations: Any) -> Optional[Tuple[float, float, float]]: """Reads the three durations for the GC min interval option, returning seconds.""" if durations is None: return None try: if len(durations) != 3: raise ValueError() return ( self.parse_duration(durations[0]) / 1000, self.parse_duration(durations[1]) / 1000, self.parse_duration(durations[2]) / 1000, ) except Exception: raise ConfigError( "Value of `gc_min_interval` must be a list of three durations if set" ) def is_threepid_reserved( reserved_threepids: List[JsonDict], threepid: JsonDict ) -> bool: """Check the threepid against the reserved threepid config Args: reserved_threepids: List of reserved threepids threepid: The threepid to test for Returns: Is the threepid undertest reserved_user """ for tp in reserved_threepids: if threepid["medium"] == tp["medium"] and threepid["address"] == tp["address"]: return True return False def read_gc_thresholds( thresholds: Optional[List[Any]], ) -> Optional[Tuple[int, int, int]]: """Reads the three integer thresholds for garbage collection. Ensures that the thresholds are integers if thresholds are supplied. """ if thresholds is None: return None try: assert len(thresholds) == 3 return int(thresholds[0]), int(thresholds[1]), int(thresholds[2]) except Exception: raise ConfigError( "Value of `gc_threshold` must be a list of three integers if set" ) def parse_listener_def(listener: Any) -> ListenerConfig: """parse a listener config from the config file""" listener_type = listener["type"] port = listener.get("port") if not isinstance(port, int): raise ConfigError("Listener configuration is lacking a valid 'port' option") tls = listener.get("tls", False) bind_addresses = listener.get("bind_addresses", []) bind_address = listener.get("bind_address") # if bind_address was specified, add it to the list of addresses if bind_address: bind_addresses.append(bind_address) # if we still have an empty list of addresses, use the default list if not bind_addresses: if listener_type == "metrics": # the metrics listener doesn't support IPv6 bind_addresses.append("0.0.0.0") else: bind_addresses.extend(DEFAULT_BIND_ADDRESSES) http_config = None if listener_type == "http": try: resources = [ HttpResourceConfig(**res) for res in listener.get("resources", []) ] except ValueError as e: raise ConfigError("Unknown listener resource") from e http_config = HttpListenerConfig( x_forwarded=listener.get("x_forwarded", False), resources=resources, additional_resources=listener.get("additional_resources", {}), tag=listener.get("tag"), ) return ListenerConfig(port, bind_addresses, listener_type, tls, http_config) _MANHOLE_SETTINGS_SCHEMA = { "type": "object", "properties": { "username": {"type": "string"}, "password": {"type": "string"}, "ssh_priv_key_path": {"type": "string"}, "ssh_pub_key_path": {"type": "string"}, }, } synapse-1.53.0/synapse/config/server_notices.py000066400000000000000000000060001420514467300216170ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.types import UserID from ._base import Config DEFAULT_CONFIG = """\ # Server Notices room configuration # # Uncomment this section to enable a room which can be used to send notices # from the server to users. It is a special room which cannot be left; notices # come from a special "notices" user id. # # If you uncomment this section, you *must* define the system_mxid_localpart # setting, which defines the id of the user which will be used to send the # notices. # # It's also possible to override the room name, the display name of the # "notices" user, and the avatar for the user. # #server_notices: # system_mxid_localpart: notices # system_mxid_display_name: "Server Notices" # system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ" # room_name: "Server Notices" """ class ServerNoticesConfig(Config): """Configuration for the server notices room. Attributes: server_notices_mxid (str|None): The MXID to use for server notices. None if server notices are not enabled. server_notices_mxid_display_name (str|None): The display name to use for the server notices user. None if server notices are not enabled. server_notices_mxid_avatar_url (str|None): The MXC URL for the avatar of the server notices user. None if server notices are not enabled. server_notices_room_name (str|None): The name to use for the server notices room. None if server notices are not enabled. """ section = "servernotices" def __init__(self, *args): super().__init__(*args) self.server_notices_mxid = None self.server_notices_mxid_display_name = None self.server_notices_mxid_avatar_url = None self.server_notices_room_name = None def read_config(self, config, **kwargs): c = config.get("server_notices") if c is None: return mxid_localpart = c["system_mxid_localpart"] self.server_notices_mxid = UserID( mxid_localpart, self.root.server.server_name ).to_string() self.server_notices_mxid_display_name = c.get("system_mxid_display_name", None) self.server_notices_mxid_avatar_url = c.get("system_mxid_avatar_url", None) # todo: i18n self.server_notices_room_name = c.get("room_name", "Server Notices") def generate_config_section(self, **kwargs): return DEFAULT_CONFIG synapse-1.53.0/synapse/config/spam_checker.py000066400000000000000000000047311420514467300212220ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import Any, Dict, List, Tuple from synapse.config import ConfigError from synapse.util.module_loader import load_module from ._base import Config logger = logging.getLogger(__name__) LEGACY_SPAM_CHECKER_WARNING = """ This server is using a spam checker module that is implementing the deprecated spam checker interface. Please check with the module's maintainer to see if a new version supporting Synapse's generic modules system is available. For more information, please see https://matrix-org.github.io/synapse/latest/modules.html ---------------------------------------------------------------------------------------""" class SpamCheckerConfig(Config): section = "spamchecker" def read_config(self, config, **kwargs): self.spam_checkers: List[Tuple[Any, Dict]] = [] spam_checkers = config.get("spam_checker") or [] if isinstance(spam_checkers, dict): # The spam_checker config option used to only support one # spam checker, and thus was simply a dictionary with module # and config keys. Support this old behaviour by checking # to see if the option resolves to a dictionary self.spam_checkers.append(load_module(spam_checkers, ("spam_checker",))) elif isinstance(spam_checkers, list): for i, spam_checker in enumerate(spam_checkers): config_path = ("spam_checker", "" % i) if not isinstance(spam_checker, dict): raise ConfigError("expected a mapping", config_path) self.spam_checkers.append(load_module(spam_checker, config_path)) else: raise ConfigError("spam_checker syntax is incorrect") # If this configuration is being used in any way, warn the admin that it is going # away soon. if self.spam_checkers: logger.warning(LEGACY_SPAM_CHECKER_WARNING) synapse-1.53.0/synapse/config/sso.py000066400000000000000000000136231420514467300174020ustar00rootroot00000000000000# Copyright 2020-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import Any, Dict, Optional import attr from ._base import Config logger = logging.getLogger(__name__) LEGACY_TEMPLATE_DIR_WARNING = """ This server's configuration file is using the deprecated 'template_dir' setting in the 'sso' section. Support for this setting has been deprecated and will be removed in a future version of Synapse. Server admins should instead use the new 'custom_templates_directory' setting documented here: https://matrix-org.github.io/synapse/latest/templates.html ---------------------------------------------------------------------------------------""" @attr.s(frozen=True, auto_attribs=True) class SsoAttributeRequirement: """Object describing a single requirement for SSO attributes.""" attribute: str # If a value is not given, than the attribute must simply exist. value: Optional[str] JSON_SCHEMA = { "type": "object", "properties": {"attribute": {"type": "string"}, "value": {"type": "string"}}, "required": ["attribute", "value"], } class SSOConfig(Config): """SSO Configuration""" section = "sso" def read_config(self, config, **kwargs) -> None: sso_config: Dict[str, Any] = config.get("sso") or {} # The sso-specific template_dir self.sso_template_dir = sso_config.get("template_dir") if self.sso_template_dir is not None: logger.warning(LEGACY_TEMPLATE_DIR_WARNING) # Read templates from disk custom_template_directories = ( self.root.server.custom_template_directory, self.sso_template_dir, ) ( self.sso_login_idp_picker_template, self.sso_redirect_confirm_template, self.sso_auth_confirm_template, self.sso_error_template, sso_account_deactivated_template, sso_auth_success_template, self.sso_auth_bad_user_template, ) = self.read_templates( [ "sso_login_idp_picker.html", "sso_redirect_confirm.html", "sso_auth_confirm.html", "sso_error.html", "sso_account_deactivated.html", "sso_auth_success.html", "sso_auth_bad_user.html", ], (td for td in custom_template_directories if td), ) # These templates have no placeholders, so render them here self.sso_account_deactivated_template = ( sso_account_deactivated_template.render() ) self.sso_auth_success_template = sso_auth_success_template.render() self.sso_client_whitelist = sso_config.get("client_whitelist") or [] self.sso_update_profile_information = ( sso_config.get("update_profile_information") or False ) # Attempt to also whitelist the server's login fallback, since that fallback sets # the redirect URL to itself (so it can process the login token then return # gracefully to the client). This would make it pointless to ask the user for # confirmation, since the URL the confirmation page would be showing wouldn't be # the client's. login_fallback_url = ( self.root.server.public_baseurl + "_matrix/static/client/login" ) self.sso_client_whitelist.append(login_fallback_url) def generate_config_section(self, **kwargs) -> str: return """\ # Additional settings to use with single-sign on systems such as OpenID Connect, # SAML2 and CAS. # # Server admins can configure custom templates for pages related to SSO. See # https://matrix-org.github.io/synapse/latest/templates.html for more information. # sso: # A list of client URLs which are whitelisted so that the user does not # have to confirm giving access to their account to the URL. Any client # whose URL starts with an entry in the following list will not be subject # to an additional confirmation step after the SSO login is completed. # # WARNING: An entry such as "https://my.client" is insecure, because it # will also match "https://my.client.evil.site", exposing your users to # phishing attacks from evil.site. To avoid this, include a slash after the # hostname: "https://my.client/". # # The login fallback page (used by clients that don't natively support the # required login flows) is whitelisted in addition to any URLs in this list. # # By default, this list contains only the login fallback page. # #client_whitelist: # - https://riot.im/develop # - https://my.custom.client/ # Uncomment to keep a user's profile fields in sync with information from # the identity provider. Currently only syncing the displayname is # supported. Fields are checked on every SSO login, and are updated # if necessary. # # Note that enabling this option will override user profile information, # regardless of whether users have opted-out of syncing that # information when first signing in. Defaults to false. # #update_profile_information: true """ synapse-1.53.0/synapse/config/stats.py000066400000000000000000000040551420514467300177330ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from ._base import Config ROOM_STATS_DISABLED_WARN = """\ WARNING: room/user statistics have been disabled via the stats.enabled configuration setting. This means that certain features (such as the room directory) will not operate correctly. Future versions of Synapse may ignore this setting. To fix this warning, remove the stats.enabled setting from your configuration file. --------------------------------------------------------------------------------""" logger = logging.getLogger(__name__) class StatsConfig(Config): """Stats Configuration Configuration for the behaviour of synapse's stats engine """ section = "stats" def read_config(self, config, **kwargs): self.stats_enabled = True stats_config = config.get("stats", None) if stats_config: self.stats_enabled = stats_config.get("enabled", self.stats_enabled) if not self.stats_enabled: logger.warning(ROOM_STATS_DISABLED_WARN) def generate_config_section(self, config_dir_path, server_name, **kwargs): return """ # Settings for local room and user statistics collection. See # https://matrix-org.github.io/synapse/latest/room_and_user_statistics.html. # stats: # Uncomment the following to disable room and user statistics. Note that doing # so may cause certain features (such as the room directory) not to work # correctly. # #enabled: false """ synapse-1.53.0/synapse/config/third_party_event_rules.py000066400000000000000000000020421420514467300235330ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.util.module_loader import load_module from ._base import Config class ThirdPartyRulesConfig(Config): section = "thirdpartyrules" def read_config(self, config, **kwargs): self.third_party_event_rules = None provider = config.get("third_party_event_rules", None) if provider is not None: self.third_party_event_rules = load_module( provider, ("third_party_event_rules",) ) synapse-1.53.0/synapse/config/tls.py000066400000000000000000000241701420514467300173770ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import os from typing import List, Optional, Pattern from matrix_common.regex import glob_to_regex from OpenSSL import SSL, crypto from twisted.internet._sslverify import Certificate, trustRootFromCertificates from synapse.config._base import Config, ConfigError logger = logging.getLogger(__name__) class TlsConfig(Config): section = "tls" def read_config(self, config: dict, config_dir_path: str, **kwargs): self.tls_certificate_file = self.abspath(config.get("tls_certificate_path")) self.tls_private_key_file = self.abspath(config.get("tls_private_key_path")) if self.root.server.has_tls_listener(): if not self.tls_certificate_file: raise ConfigError( "tls_certificate_path must be specified if TLS-enabled listeners are " "configured." ) if not self.tls_private_key_file: raise ConfigError( "tls_private_key_path must be specified if TLS-enabled listeners are " "configured." ) # Whether to verify certificates on outbound federation traffic self.federation_verify_certificates = config.get( "federation_verify_certificates", True ) # Minimum TLS version to use for outbound federation traffic self.federation_client_minimum_tls_version = str( config.get("federation_client_minimum_tls_version", 1) ) if self.federation_client_minimum_tls_version not in ["1", "1.1", "1.2", "1.3"]: raise ConfigError( "federation_client_minimum_tls_version must be one of: 1, 1.1, 1.2, 1.3" ) # Prevent people shooting themselves in the foot here by setting it to # the biggest number blindly if self.federation_client_minimum_tls_version == "1.3": if getattr(SSL, "OP_NO_TLSv1_3", None) is None: raise ConfigError( "federation_client_minimum_tls_version cannot be 1.3, " "your OpenSSL does not support it" ) # Whitelist of domains to not verify certificates for fed_whitelist_entries = config.get( "federation_certificate_verification_whitelist", [] ) if fed_whitelist_entries is None: fed_whitelist_entries = [] # Support globs (*) in whitelist values self.federation_certificate_verification_whitelist: List[Pattern] = [] for entry in fed_whitelist_entries: try: entry_regex = glob_to_regex(entry.encode("ascii").decode("ascii")) except UnicodeEncodeError: raise ConfigError( "IDNA domain names are not allowed in the " "federation_certificate_verification_whitelist: %s" % (entry,) ) # Convert globs to regex self.federation_certificate_verification_whitelist.append(entry_regex) # List of custom certificate authorities for federation traffic validation custom_ca_list = config.get("federation_custom_ca_list", None) # Read in and parse custom CA certificates self.federation_ca_trust_root = None if custom_ca_list is not None: if len(custom_ca_list) == 0: # A trustroot cannot be generated without any CA certificates. # Raise an error if this option has been specified without any # corresponding certificates. raise ConfigError( "federation_custom_ca_list specified without " "any certificate files" ) certs = [] for ca_file in custom_ca_list: logger.debug("Reading custom CA certificate file: %s", ca_file) content = self.read_file(ca_file, "federation_custom_ca_list") # Parse the CA certificates try: cert_base = Certificate.loadPEM(content) certs.append(cert_base) except Exception as e: raise ConfigError( "Error parsing custom CA certificate file %s: %s" % (ca_file, e) ) self.federation_ca_trust_root = trustRootFromCertificates(certs) # This config option applies to non-federation HTTP clients # (e.g. for talking to recaptcha, identity servers, and such) # It should never be used in production, and is intended for # use only when running tests. self.use_insecure_ssl_client_just_for_testing_do_not_use = config.get( "use_insecure_ssl_client_just_for_testing_do_not_use" ) self.tls_certificate: Optional[crypto.X509] = None self.tls_private_key: Optional[crypto.PKey] = None def read_certificate_from_disk(self) -> None: """ Read the certificates and private key from disk. """ self.tls_private_key = self.read_tls_private_key() self.tls_certificate = self.read_tls_certificate() def generate_config_section( self, config_dir_path, server_name, data_dir_path, tls_certificate_path, tls_private_key_path, **kwargs, ): """If the TLS paths are not specified the default will be certs in the config directory""" base_key_name = os.path.join(config_dir_path, server_name) if bool(tls_certificate_path) != bool(tls_private_key_path): raise ConfigError( "Please specify both a cert path and a key path or neither." ) tls_enabled = "" if tls_certificate_path and tls_private_key_path else "#" if not tls_certificate_path: tls_certificate_path = base_key_name + ".tls.crt" if not tls_private_key_path: tls_private_key_path = base_key_name + ".tls.key" # flake8 doesn't recognise that variables are used in the below string _ = tls_enabled return ( """\ ## TLS ## # PEM-encoded X509 certificate for TLS. # This certificate, as of Synapse 1.0, will need to be a valid and verifiable # certificate, signed by a recognised Certificate Authority. # # Be sure to use a `.pem` file that includes the full certificate chain including # any intermediate certificates (for instance, if using certbot, use # `fullchain.pem` as your certificate, not `cert.pem`). # %(tls_enabled)stls_certificate_path: "%(tls_certificate_path)s" # PEM-encoded private key for TLS # %(tls_enabled)stls_private_key_path: "%(tls_private_key_path)s" # Whether to verify TLS server certificates for outbound federation requests. # # Defaults to `true`. To disable certificate verification, uncomment the # following line. # #federation_verify_certificates: false # The minimum TLS version that will be used for outbound federation requests. # # Defaults to `1`. Configurable to `1`, `1.1`, `1.2`, or `1.3`. Note # that setting this value higher than `1.2` will prevent federation to most # of the public Matrix network: only configure it to `1.3` if you have an # entirely private federation setup and you can ensure TLS 1.3 support. # #federation_client_minimum_tls_version: 1.2 # Skip federation certificate verification on the following whitelist # of domains. # # This setting should only be used in very specific cases, such as # federation over Tor hidden services and similar. For private networks # of homeservers, you likely want to use a private CA instead. # # Only effective if federation_verify_certicates is `true`. # #federation_certificate_verification_whitelist: # - lon.example.com # - "*.domain.com" # - "*.onion" # List of custom certificate authorities for federation traffic. # # This setting should only normally be used within a private network of # homeservers. # # Note that this list will replace those that are provided by your # operating environment. Certificates must be in PEM format. # #federation_custom_ca_list: # - myCA1.pem # - myCA2.pem # - myCA3.pem """ # Lowercase the string representation of boolean values % { x[0]: str(x[1]).lower() if isinstance(x[1], bool) else x[1] for x in locals().items() } ) def read_tls_certificate(self) -> crypto.X509: """Reads the TLS certificate from the configured file, and returns it Returns: The certificate """ cert_path = self.tls_certificate_file logger.info("Loading TLS certificate from %s", cert_path) cert_pem = self.read_file(cert_path, "tls_certificate_path") cert = crypto.load_certificate(crypto.FILETYPE_PEM, cert_pem.encode()) return cert def read_tls_private_key(self) -> crypto.PKey: """Reads the TLS private key from the configured file, and returns it Returns: The private key """ private_key_path = self.tls_private_key_file logger.info("Loading TLS key from %s", private_key_path) private_key_pem = self.read_file(private_key_path, "tls_private_key_path") return crypto.load_privatekey(crypto.FILETYPE_PEM, private_key_pem) synapse-1.53.0/synapse/config/tracer.py000066400000000000000000000105001420514467300200450ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C.d # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Set from synapse.python_dependencies import DependencyException, check_requirements from ._base import Config, ConfigError class TracerConfig(Config): section = "tracing" def read_config(self, config, **kwargs): opentracing_config = config.get("opentracing") if opentracing_config is None: opentracing_config = {} self.opentracer_enabled = opentracing_config.get("enabled", False) self.jaeger_config = opentracing_config.get( "jaeger_config", {"sampler": {"type": "const", "param": 1}, "logging": False}, ) self.force_tracing_for_users: Set[str] = set() if not self.opentracer_enabled: return try: check_requirements("opentracing") except DependencyException as e: raise ConfigError( e.message # noqa: B306, DependencyException.message is a property ) # The tracer is enabled so sanitize the config self.opentracer_whitelist = opentracing_config.get("homeserver_whitelist", []) if not isinstance(self.opentracer_whitelist, list): raise ConfigError("Tracer homeserver_whitelist config is malformed") force_tracing_for_users = opentracing_config.get("force_tracing_for_users", []) if not isinstance(force_tracing_for_users, list): raise ConfigError( "Expected a list", ("opentracing", "force_tracing_for_users") ) for i, u in enumerate(force_tracing_for_users): if not isinstance(u, str): raise ConfigError( "Expected a string", ("opentracing", "force_tracing_for_users", f"index {i}"), ) self.force_tracing_for_users.add(u) def generate_config_section(cls, **kwargs): return """\ ## Opentracing ## # These settings enable opentracing, which implements distributed tracing. # This allows you to observe the causal chains of events across servers # including requests, key lookups etc., across any server running # synapse or any other other services which supports opentracing # (specifically those implemented with Jaeger). # opentracing: # tracing is disabled by default. Uncomment the following line to enable it. # #enabled: true # The list of homeservers we wish to send and receive span contexts and span baggage. # See https://matrix-org.github.io/synapse/latest/opentracing.html. # # This is a list of regexes which are matched against the server_name of the # homeserver. # # By default, it is empty, so no servers are matched. # #homeserver_whitelist: # - ".*" # A list of the matrix IDs of users whose requests will always be traced, # even if the tracing system would otherwise drop the traces due to # probabilistic sampling. # # By default, the list is empty. # #force_tracing_for_users: # - "@user1:server_name" # - "@user2:server_name" # Jaeger can be configured to sample traces at different rates. # All configuration options provided by Jaeger can be set here. # Jaeger's configuration is mostly related to trace sampling which # is documented here: # https://www.jaegertracing.io/docs/latest/sampling/. # #jaeger_config: # sampler: # type: const # param: 1 # logging: # false """ synapse-1.53.0/synapse/config/user_directory.py000066400000000000000000000060621420514467300216370ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config class UserDirectoryConfig(Config): """User Directory Configuration Configuration for the behaviour of the /user_directory API """ section = "userdirectory" def read_config(self, config, **kwargs): user_directory_config = config.get("user_directory") or {} self.user_directory_search_enabled = user_directory_config.get("enabled", True) self.user_directory_search_all_users = user_directory_config.get( "search_all_users", False ) self.user_directory_search_prefer_local_users = user_directory_config.get( "prefer_local_users", False ) def generate_config_section(self, config_dir_path, server_name, **kwargs): return """ # User Directory configuration # user_directory: # Defines whether users can search the user directory. If false then # empty responses are returned to all queries. Defaults to true. # # Uncomment to disable the user directory. # #enabled: false # Defines whether to search all users visible to your HS when searching # the user directory. If false, search results will only contain users # visible in public rooms and users sharing a room with the requester. # Defaults to false. # # NB. If you set this to true, and the last time the user_directory search # indexes were (re)built was before Synapse 1.44, you'll have to # rebuild the indexes in order to search through all known users. # These indexes are built the first time Synapse starts; admins can # manually trigger a rebuild via API following the instructions at # https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/background_updates.html#run # # Uncomment to return search results containing all known users, even if that # user does not share a room with the requester. # #search_all_users: true # Defines whether to prefer local users in search query results. # If True, local users are more likely to appear above remote users # when searching the user directory. Defaults to false. # # Uncomment to prefer local over remote users in user directory search # results. # #prefer_local_users: true """ synapse-1.53.0/synapse/config/voip.py000066400000000000000000000041611420514467300175500ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ._base import Config class VoipConfig(Config): section = "voip" def read_config(self, config, **kwargs): self.turn_uris = config.get("turn_uris", []) self.turn_shared_secret = config.get("turn_shared_secret") self.turn_username = config.get("turn_username") self.turn_password = config.get("turn_password") self.turn_user_lifetime = self.parse_duration( config.get("turn_user_lifetime", "1h") ) self.turn_allow_guests = config.get("turn_allow_guests", True) def generate_config_section(self, **kwargs): return """\ ## TURN ## # The public URIs of the TURN server to give to clients # #turn_uris: [] # The shared secret used to compute passwords for the TURN server # #turn_shared_secret: "YOUR_SHARED_SECRET" # The Username and password if the TURN server needs them and # does not use a token # #turn_username: "TURNSERVER_USERNAME" #turn_password: "TURNSERVER_PASSWORD" # How long generated TURN credentials last # #turn_user_lifetime: 1h # Whether guests should be allowed to use the TURN server. # This defaults to True, otherwise VoIP will be unreliable for guests. # However, it does introduce a slight security risk as it allows users to # connect to arbitrary endpoints without having first signed up for a # valid account (e.g. by passing a CAPTCHA). # #turn_allow_guests: true """ synapse-1.53.0/synapse/config/workers.py000066400000000000000000000321051420514467300202660ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse from typing import List, Union import attr from ._base import ( Config, ConfigError, RoutableShardedWorkerHandlingConfig, ShardedWorkerHandlingConfig, ) from .server import ListenerConfig, parse_listener_def _FEDERATION_SENDER_WITH_SEND_FEDERATION_ENABLED_ERROR = """ The send_federation config option must be disabled in the main synapse process before they can be run in a separate worker. Please add ``send_federation: false`` to the main config """ _PUSHER_WITH_START_PUSHERS_ENABLED_ERROR = """ The start_pushers config option must be disabled in the main synapse process before they can be run in a separate worker. Please add ``start_pushers: false`` to the main config """ def _instance_to_list_converter(obj: Union[str, List[str]]) -> List[str]: """Helper for allowing parsing a string or list of strings to a config option expecting a list of strings. """ if isinstance(obj, str): return [obj] return obj @attr.s(auto_attribs=True) class InstanceLocationConfig: """The host and port to talk to an instance via HTTP replication.""" host: str port: int @attr.s class WriterLocations: """Specifies the instances that write various streams. Attributes: events: The instances that write to the event and backfill streams. typing: The instances that write to the typing stream. Currently can only be a single instance. to_device: The instances that write to the to_device stream. Currently can only be a single instance. account_data: The instances that write to the account data streams. Currently can only be a single instance. receipts: The instances that write to the receipts stream. Currently can only be a single instance. presence: The instances that write to the presence stream. Currently can only be a single instance. """ events: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) typing: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) to_device: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) account_data: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) receipts: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) presence: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) class WorkerConfig(Config): """The workers are processes run separately to the main synapse process. They have their own pid_file and listener configuration. They use the replication_url to talk to the main synapse process.""" section = "worker" def read_config(self, config, **kwargs): self.worker_app = config.get("worker_app") # Canonicalise worker_app so that master always has None if self.worker_app == "synapse.app.homeserver": self.worker_app = None self.worker_listeners = [ parse_listener_def(x) for x in config.get("worker_listeners", []) ] self.worker_daemonize = config.get("worker_daemonize") self.worker_pid_file = config.get("worker_pid_file") self.worker_log_config = config.get("worker_log_config") # The host used to connect to the main synapse self.worker_replication_host = config.get("worker_replication_host", None) # The port on the main synapse for TCP replication self.worker_replication_port = config.get("worker_replication_port", None) # The port on the main synapse for HTTP replication endpoint self.worker_replication_http_port = config.get("worker_replication_http_port") # The shared secret used for authentication when connecting to the main synapse. self.worker_replication_secret = config.get("worker_replication_secret", None) self.worker_name = config.get("worker_name", self.worker_app) self.instance_name = self.worker_name or "master" self.worker_main_http_uri = config.get("worker_main_http_uri", None) # This option is really only here to support `--manhole` command line # argument. manhole = config.get("worker_manhole") if manhole: self.worker_listeners.append( ListenerConfig( port=manhole, bind_addresses=["127.0.0.1"], type="manhole", ) ) # Handle federation sender configuration. # # There are two ways of configuring which instances handle federation # sending: # 1. The old way where "send_federation" is set to false and running a # `synapse.app.federation_sender` worker app. # 2. Specifying the workers sending federation in # `federation_sender_instances`. # send_federation = config.get("send_federation", True) federation_sender_instances = config.get("federation_sender_instances") if federation_sender_instances is None: # Default to an empty list, which means "another, unknown, worker is # responsible for it". federation_sender_instances = [] # If no federation sender instances are set we check if # `send_federation` is set, which means use master if send_federation: federation_sender_instances = ["master"] if self.worker_app == "synapse.app.federation_sender": if send_federation: # If we're running federation senders, and not using # `federation_sender_instances`, then we should have # explicitly set `send_federation` to false. raise ConfigError( _FEDERATION_SENDER_WITH_SEND_FEDERATION_ENABLED_ERROR ) federation_sender_instances = [self.worker_name] self.send_federation = self.instance_name in federation_sender_instances self.federation_shard_config = ShardedWorkerHandlingConfig( federation_sender_instances ) # A map from instance name to host/port of their HTTP replication endpoint. instance_map = config.get("instance_map") or {} self.instance_map = { name: InstanceLocationConfig(**c) for name, c in instance_map.items() } # Map from type of streams to source, c.f. WriterLocations. writers = config.get("stream_writers") or {} self.writers = WriterLocations(**writers) # Check that the configured writers for events and typing also appears in # `instance_map`. for stream in ( "events", "typing", "to_device", "account_data", "receipts", "presence", ): instances = _instance_to_list_converter(getattr(self.writers, stream)) for instance in instances: if instance != "master" and instance not in self.instance_map: raise ConfigError( "Instance %r is configured to write %s but does not appear in `instance_map` config." % (instance, stream) ) if len(self.writers.typing) != 1: raise ConfigError( "Must only specify one instance to handle `typing` messages." ) if len(self.writers.to_device) != 1: raise ConfigError( "Must only specify one instance to handle `to_device` messages." ) if len(self.writers.account_data) != 1: raise ConfigError( "Must only specify one instance to handle `account_data` messages." ) if len(self.writers.receipts) != 1: raise ConfigError( "Must only specify one instance to handle `receipts` messages." ) if len(self.writers.events) == 0: raise ConfigError("Must specify at least one instance to handle `events`.") if len(self.writers.presence) != 1: raise ConfigError( "Must only specify one instance to handle `presence` messages." ) self.events_shard_config = RoutableShardedWorkerHandlingConfig( self.writers.events ) # Handle sharded push start_pushers = config.get("start_pushers", True) pusher_instances = config.get("pusher_instances") if pusher_instances is None: # Default to an empty list, which means "another, unknown, worker is # responsible for it". pusher_instances = [] # If no pushers instances are set we check if `start_pushers` is # set, which means use master if start_pushers: pusher_instances = ["master"] if self.worker_app == "synapse.app.pusher": if start_pushers: # If we're running pushers, and not using # `pusher_instances`, then we should have explicitly set # `start_pushers` to false. raise ConfigError(_PUSHER_WITH_START_PUSHERS_ENABLED_ERROR) pusher_instances = [self.instance_name] self.start_pushers = self.instance_name in pusher_instances self.pusher_shard_config = ShardedWorkerHandlingConfig(pusher_instances) # Whether this worker should run background tasks or not. # # As a note for developers, the background tasks guarded by this should # be able to run on only a single instance (meaning that they don't # depend on any in-memory state of a particular worker). # # No effort is made to ensure only a single instance of these tasks is # running. background_tasks_instance = config.get("run_background_tasks_on") or "master" self.run_background_tasks = ( self.worker_name is None and background_tasks_instance == "master" ) or self.worker_name == background_tasks_instance def generate_config_section(self, config_dir_path, server_name, **kwargs): return """\ ## Workers ## # Disables sending of outbound federation transactions on the main process. # Uncomment if using a federation sender worker. # #send_federation: false # It is possible to run multiple federation sender workers, in which case the # work is balanced across them. # # This configuration must be shared between all federation sender workers, and if # changed all federation sender workers must be stopped at the same time and then # started, to ensure that all instances are running with the same config (otherwise # events may be dropped). # #federation_sender_instances: # - federation_sender1 # When using workers this should be a map from `worker_name` to the # HTTP replication listener of the worker, if configured. # #instance_map: # worker1: # host: localhost # port: 8034 # Experimental: When using workers you can define which workers should # handle event persistence and typing notifications. Any worker # specified here must also be in the `instance_map`. # #stream_writers: # events: worker1 # typing: worker1 # The worker that is used to run background tasks (e.g. cleaning up expired # data). If not provided this defaults to the main process. # #run_background_tasks_on: worker1 # A shared secret used by the replication APIs to authenticate HTTP requests # from workers. # # By default this is unused and traffic is not authenticated. # #worker_replication_secret: "" """ def read_arguments(self, args: argparse.Namespace) -> None: # We support a bunch of command line arguments that override options in # the config. A lot of these options have a worker_* prefix when running # on workers so we also have to override them when command line options # are specified. if args.daemonize is not None: self.worker_daemonize = args.daemonize if args.manhole is not None: self.worker_manhole = args.worker_manhole synapse-1.53.0/synapse/crypto/000077500000000000000000000000001420514467300162725ustar00rootroot00000000000000synapse-1.53.0/synapse/crypto/__init__.py000066400000000000000000000011071420514467300204020ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/crypto/context_factory.py000066400000000000000000000246701420514467300220700ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from service_identity import VerificationError from service_identity.pyopenssl import verify_hostname, verify_ip_address from zope.interface import implementer from OpenSSL import SSL, crypto from twisted.internet._sslverify import _defaultCurveName from twisted.internet.abstract import isIPAddress, isIPv6Address from twisted.internet.interfaces import IOpenSSLClientConnectionCreator from twisted.internet.ssl import ( CertificateOptions, ContextFactory, TLSVersion, platformTrust, ) from twisted.protocols.tls import TLSMemoryBIOProtocol from twisted.python.failure import Failure from twisted.web.iweb import IPolicyForHTTPS from synapse.config.homeserver import HomeServerConfig logger = logging.getLogger(__name__) _TLS_VERSION_MAP = { "1": TLSVersion.TLSv1_0, "1.1": TLSVersion.TLSv1_1, "1.2": TLSVersion.TLSv1_2, "1.3": TLSVersion.TLSv1_3, } class ServerContextFactory(ContextFactory): """Factory for PyOpenSSL SSL contexts that are used to handle incoming connections. TODO: replace this with an implementation of IOpenSSLServerConnectionCreator, per https://github.com/matrix-org/synapse/issues/1691 """ def __init__(self, config: HomeServerConfig): # TODO: once pyOpenSSL exposes TLS_METHOD and SSL_CTX_set_min_proto_version, # switch to those (see https://github.com/pyca/cryptography/issues/5379). # # note that, despite the confusing name, SSLv23_METHOD does *not* enforce SSLv2 # or v3, but is a synonym for TLS_METHOD, which allows the client and server # to negotiate an appropriate version of TLS constrained by the version options # set with context.set_options. # self._context = SSL.Context(SSL.SSLv23_METHOD) self.configure_context(self._context, config) @staticmethod def configure_context(context: SSL.Context, config: HomeServerConfig) -> None: try: _ecCurve = crypto.get_elliptic_curve(_defaultCurveName) context.set_tmp_ecdh(_ecCurve) except Exception: logger.exception("Failed to enable elliptic curve for TLS") context.set_options( SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3 | SSL.OP_NO_TLSv1 | SSL.OP_NO_TLSv1_1 ) context.use_certificate_chain_file(config.tls.tls_certificate_file) assert config.tls.tls_private_key is not None context.use_privatekey(config.tls.tls_private_key) # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ context.set_cipher_list( b"ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES256:ECDH+AES128:!aNULL:!SHA1:!AESCCM" ) def getContext(self) -> SSL.Context: return self._context @implementer(IPolicyForHTTPS) class FederationPolicyForHTTPS: """Factory for Twisted SSLClientConnectionCreators that are used to make connections to remote servers for federation. Uses one of two OpenSSL context objects for all connections, depending on whether we should do SSL certificate verification. get_options decides whether we should do SSL certificate verification and constructs an SSLClientConnectionCreator factory accordingly. """ def __init__(self, config: HomeServerConfig): self._config = config # Check if we're using a custom list of a CA certificates trust_root = config.tls.federation_ca_trust_root if trust_root is None: # Use CA root certs provided by OpenSSL trust_root = platformTrust() # "insecurelyLowerMinimumTo" is the argument that will go lower than # Twisted's default, which is why it is marked as "insecure" (since # Twisted's defaults are reasonably secure). But, since Twisted is # moving to TLS 1.2 by default, we want to respect the config option if # it is set to 1.0 (which the alternate option, raiseMinimumTo, will not # let us do). minTLS = _TLS_VERSION_MAP[config.tls.federation_client_minimum_tls_version] _verify_ssl = CertificateOptions( trustRoot=trust_root, insecurelyLowerMinimumTo=minTLS ) self._verify_ssl_context = _verify_ssl.getContext() self._verify_ssl_context.set_info_callback(_context_info_cb) _no_verify_ssl = CertificateOptions(insecurelyLowerMinimumTo=minTLS) self._no_verify_ssl_context = _no_verify_ssl.getContext() self._no_verify_ssl_context.set_info_callback(_context_info_cb) self._should_verify = self._config.tls.federation_verify_certificates self._federation_certificate_verification_whitelist = ( self._config.tls.federation_certificate_verification_whitelist ) def get_options(self, host: bytes) -> IOpenSSLClientConnectionCreator: # IPolicyForHTTPS.get_options takes bytes, but we want to compare # against the str whitelist. The hostnames in the whitelist are already # IDNA-encoded like the hosts will be here. ascii_host = host.decode("ascii") # Check if certificate verification has been enabled should_verify = self._should_verify # Check if we've disabled certificate verification for this host if self._should_verify: for regex in self._federation_certificate_verification_whitelist: if regex.match(ascii_host): should_verify = False break ssl_context = ( self._verify_ssl_context if should_verify else self._no_verify_ssl_context ) return SSLClientConnectionCreator(host, ssl_context, should_verify) def creatorForNetloc( self, hostname: bytes, port: int ) -> IOpenSSLClientConnectionCreator: """Implements the IPolicyForHTTPS interface so that this can be passed directly to agents. """ return self.get_options(hostname) @implementer(IPolicyForHTTPS) class RegularPolicyForHTTPS: """Factory for Twisted SSLClientConnectionCreators that are used to make connections to remote servers, for other than federation. Always uses the same OpenSSL context object, which uses the default OpenSSL CA trust root. """ def __init__(self) -> None: trust_root = platformTrust() self._ssl_context = CertificateOptions(trustRoot=trust_root).getContext() self._ssl_context.set_info_callback(_context_info_cb) def creatorForNetloc( self, hostname: bytes, port: int ) -> IOpenSSLClientConnectionCreator: return SSLClientConnectionCreator(hostname, self._ssl_context, True) def _context_info_cb(ssl_connection: SSL.Connection, where: int, ret: int) -> None: """The 'information callback' for our openssl context objects. Note: Once this is set as the info callback on a Context object, the Context should only be used with the SSLClientConnectionCreator. """ # we assume that the app_data on the connection object has been set to # a TLSMemoryBIOProtocol object. (This is done by SSLClientConnectionCreator) tls_protocol = ssl_connection.get_app_data() try: # ... we further assume that SSLClientConnectionCreator has set the # '_synapse_tls_verifier' attribute to a ConnectionVerifier object. tls_protocol._synapse_tls_verifier.verify_context_info_cb(ssl_connection, where) except BaseException: # taken from the twisted implementation logger.exception("Error during info_callback") f = Failure() tls_protocol.failVerification(f) @implementer(IOpenSSLClientConnectionCreator) class SSLClientConnectionCreator: """Creates openssl connection objects for client connections. Replaces twisted.internet.ssl.ClientTLSOptions """ def __init__(self, hostname: bytes, ctx: SSL.Context, verify_certs: bool): self._ctx = ctx self._verifier = ConnectionVerifier(hostname, verify_certs) def clientConnectionForTLS( self, tls_protocol: TLSMemoryBIOProtocol ) -> SSL.Connection: context = self._ctx connection = SSL.Connection(context, None) # as per twisted.internet.ssl.ClientTLSOptions, we set the application # data to our TLSMemoryBIOProtocol... connection.set_app_data(tls_protocol) # ... and we also gut-wrench a '_synapse_tls_verifier' attribute into the # tls_protocol so that the SSL context's info callback has something to # call to do the cert verification. tls_protocol._synapse_tls_verifier = self._verifier # type: ignore[attr-defined] return connection class ConnectionVerifier: """Set the SNI, and do cert verification This is a thing which is attached to the TLSMemoryBIOProtocol, and is called by the ssl context's info callback. """ # This code is based on twisted.internet.ssl.ClientTLSOptions. def __init__(self, hostname: bytes, verify_certs: bool): self._verify_certs = verify_certs _decoded = hostname.decode("ascii") if isIPAddress(_decoded) or isIPv6Address(_decoded): self._is_ip_address = True else: self._is_ip_address = False self._hostnameBytes = hostname self._hostnameASCII = self._hostnameBytes.decode("ascii") def verify_context_info_cb( self, ssl_connection: SSL.Connection, where: int ) -> None: if where & SSL.SSL_CB_HANDSHAKE_START and not self._is_ip_address: ssl_connection.set_tlsext_host_name(self._hostnameBytes) if where & SSL.SSL_CB_HANDSHAKE_DONE and self._verify_certs: try: if self._is_ip_address: verify_ip_address(ssl_connection, self._hostnameASCII) else: verify_hostname(ssl_connection, self._hostnameASCII) except VerificationError: f = Failure() tls_protocol = ssl_connection.get_app_data() tls_protocol.failVerification(f) synapse-1.53.0/synapse/crypto/event_signing.py000066400000000000000000000140031420514467300215010ustar00rootroot00000000000000# # Copyright 2014-2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import collections.abc import hashlib import logging from typing import Any, Callable, Dict, Tuple from canonicaljson import encode_canonical_json from signedjson.sign import sign_json from signedjson.types import SigningKey from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersion from synapse.events import EventBase from synapse.events.utils import prune_event, prune_event_dict from synapse.types import JsonDict logger = logging.getLogger(__name__) Hasher = Callable[[bytes], "hashlib._Hash"] def check_event_content_hash( event: EventBase, hash_algorithm: Hasher = hashlib.sha256 ) -> bool: """Check whether the hash for this PDU matches the contents""" name, expected_hash = compute_content_hash(event.get_pdu_json(), hash_algorithm) logger.debug( "Verifying content hash on %s (expecting: %s)", event.event_id, encode_base64(expected_hash), ) # some malformed events lack a 'hashes'. Protect against it being missing # or a weird type by basically treating it the same as an unhashed event. hashes = event.get("hashes") # nb it might be a frozendict or a dict if not isinstance(hashes, collections.abc.Mapping): raise SynapseError( 400, "Malformed 'hashes': %s" % (type(hashes),), Codes.UNAUTHORIZED ) if name not in hashes: raise SynapseError( 400, "Algorithm %s not in hashes %s" % (name, list(hashes)), Codes.UNAUTHORIZED, ) message_hash_base64 = hashes[name] try: message_hash_bytes = decode_base64(message_hash_base64) except Exception: raise SynapseError( 400, "Invalid base64: %s" % (message_hash_base64,), Codes.UNAUTHORIZED ) return message_hash_bytes == expected_hash def compute_content_hash( event_dict: Dict[str, Any], hash_algorithm: Hasher ) -> Tuple[str, bytes]: """Compute the content hash of an event, which is the hash of the unredacted event. Args: event_dict: The unredacted event as a dict hash_algorithm: A hasher from `hashlib`, e.g. hashlib.sha256, to use to hash the event Returns: A tuple of the name of hash and the hash as raw bytes. """ event_dict = dict(event_dict) event_dict.pop("age_ts", None) event_dict.pop("unsigned", None) event_dict.pop("signatures", None) event_dict.pop("hashes", None) event_dict.pop("outlier", None) event_dict.pop("destinations", None) event_json_bytes = encode_canonical_json(event_dict) hashed = hash_algorithm(event_json_bytes) return hashed.name, hashed.digest() def compute_event_reference_hash( event: EventBase, hash_algorithm: Hasher = hashlib.sha256 ) -> Tuple[str, bytes]: """Computes the event reference hash. This is the hash of the redacted event. Args: event hash_algorithm: A hasher from `hashlib`, e.g. hashlib.sha256, to use to hash the event Returns: A tuple of the name of hash and the hash as raw bytes. """ tmp_event = prune_event(event) event_dict = tmp_event.get_pdu_json() event_dict.pop("signatures", None) event_dict.pop("age_ts", None) event_dict.pop("unsigned", None) event_json_bytes = encode_canonical_json(event_dict) hashed = hash_algorithm(event_json_bytes) return hashed.name, hashed.digest() def compute_event_signature( room_version: RoomVersion, event_dict: JsonDict, signature_name: str, signing_key: SigningKey, ) -> Dict[str, Dict[str, str]]: """Compute the signature of the event for the given name and key. Args: room_version: the version of the room that this event is in. (the room version determines the redaction algorithm and hence the json to be signed) event_dict: The event as a dict signature_name: The name of the entity signing the event (typically the server's hostname). signing_key: The key to sign with Returns: a dictionary in the same format of an event's signatures field. """ redact_json = prune_event_dict(room_version, event_dict) redact_json.pop("age_ts", None) redact_json.pop("unsigned", None) if logger.isEnabledFor(logging.DEBUG): logger.debug("Signing event: %s", encode_canonical_json(redact_json)) redact_json = sign_json(redact_json, signature_name, signing_key) if logger.isEnabledFor(logging.DEBUG): logger.debug("Signed event: %s", encode_canonical_json(redact_json)) return redact_json["signatures"] def add_hashes_and_signatures( room_version: RoomVersion, event_dict: JsonDict, signature_name: str, signing_key: SigningKey, ) -> None: """Add content hash and sign the event Args: room_version: the version of the room this event is in event_dict: The event to add hashes to and sign signature_name: The name of the entity signing the event (typically the server's hostname). signing_key: The key to sign with """ name, digest = compute_content_hash(event_dict, hash_algorithm=hashlib.sha256) event_dict.setdefault("hashes", {})[name] = encode_base64(digest) event_dict["signatures"] = compute_event_signature( room_version, event_dict, signature_name=signature_name, signing_key=signing_key ) synapse-1.53.0/synapse/crypto/keyring.py000066400000000000000000000776611420514467300203350ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import logging import urllib from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Optional, Tuple import attr from signedjson.key import ( decode_verify_key_bytes, encode_verify_key_base64, get_verify_key, is_signing_algorithm_supported, ) from signedjson.sign import ( SignatureVerifyException, encode_canonical_json, signature_ids, verify_signed_json, ) from signedjson.types import VerifyKey from unpaddedbase64 import decode_base64 from twisted.internet import defer from synapse.api.errors import ( Codes, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.config.key import TrustedKeyServer from synapse.events import EventBase from synapse.events.utils import prune_event_dict from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.storage.keys import FetchKeyResult from synapse.types import JsonDict from synapse.util import unwrapFirstError from synapse.util.async_helpers import yieldable_gather_results from synapse.util.batching_queue import BatchingQueue from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, cmp=False, auto_attribs=True) class VerifyJsonRequest: """ A request to verify a JSON object. Attributes: server_name: The name of the server to verify against. get_json_object: A callback to fetch the JSON object to verify. A callback is used to allow deferring the creation of the JSON object to verify until needed, e.g. for events we can defer creating the redacted copy. This reduces the memory usage when there are large numbers of in flight requests. minimum_valid_until_ts: time at which we require the signing key to be valid. (0 implies we don't care) key_ids: The set of key_ids to that could be used to verify the JSON object """ server_name: str get_json_object: Callable[[], JsonDict] minimum_valid_until_ts: int key_ids: List[str] @staticmethod def from_json_object( server_name: str, json_object: JsonDict, minimum_valid_until_ms: int, ) -> "VerifyJsonRequest": """Create a VerifyJsonRequest to verify all signatures on a signed JSON object for the given server. """ key_ids = signature_ids(json_object, server_name) return VerifyJsonRequest( server_name, lambda: json_object, minimum_valid_until_ms, key_ids=key_ids, ) @staticmethod def from_event( server_name: str, event: EventBase, minimum_valid_until_ms: int, ) -> "VerifyJsonRequest": """Create a VerifyJsonRequest to verify all signatures on an event object for the given server. """ key_ids = list(event.signatures.get(server_name, [])) return VerifyJsonRequest( server_name, # We defer creating the redacted json object, as it uses a lot more # memory than the Event object itself. lambda: prune_event_dict(event.room_version, event.get_pdu_json()), minimum_valid_until_ms, key_ids=key_ids, ) class KeyLookupError(ValueError): pass @attr.s(slots=True, frozen=True, auto_attribs=True) class _FetchKeyRequest: """A request for keys for a given server. We will continue to try and fetch until we have all the keys listed under `key_ids` (with an appropriate `valid_until_ts` property) or we run out of places to fetch keys from. Attributes: server_name: The name of the server that owns the keys. minimum_valid_until_ts: The timestamp which the keys must be valid until. key_ids: The IDs of the keys to attempt to fetch """ server_name: str minimum_valid_until_ts: int key_ids: List[str] class Keyring: """Handles verifying signed JSON objects and fetching the keys needed to do so. """ def __init__( self, hs: "HomeServer", key_fetchers: "Optional[Iterable[KeyFetcher]]" = None ): self.clock = hs.get_clock() if key_fetchers is None: key_fetchers = ( StoreKeyFetcher(hs), PerspectivesKeyFetcher(hs), ServerKeyFetcher(hs), ) self._key_fetchers = key_fetchers self._server_queue: BatchingQueue[ _FetchKeyRequest, Dict[str, Dict[str, FetchKeyResult]] ] = BatchingQueue( "keyring_server", clock=hs.get_clock(), process_batch_callback=self._inner_fetch_key_requests, ) self._hostname = hs.hostname # build a FetchKeyResult for each of our own keys, to shortcircuit the # fetcher. self._local_verify_keys: Dict[str, FetchKeyResult] = {} for key_id, key in hs.config.key.old_signing_keys.items(): self._local_verify_keys[key_id] = FetchKeyResult( verify_key=key, valid_until_ts=key.expired_ts ) vk = get_verify_key(hs.signing_key) self._local_verify_keys[f"{vk.alg}:{vk.version}"] = FetchKeyResult( verify_key=vk, valid_until_ts=2 ** 63, # fake future timestamp ) async def verify_json_for_server( self, server_name: str, json_object: JsonDict, validity_time: int, ) -> None: """Verify that a JSON object has been signed by a given server Completes if the the object was correctly signed, otherwise raises. Args: server_name: name of the server which must have signed this object json_object: object to be checked validity_time: timestamp at which we require the signing key to be valid. (0 implies we don't care) """ request = VerifyJsonRequest.from_json_object( server_name, json_object, validity_time, ) return await self.process_request(request) def verify_json_objects_for_server( self, server_and_json: Iterable[Tuple[str, dict, int]] ) -> List[defer.Deferred]: """Bulk verifies signatures of json objects, bulk fetching keys as necessary. Args: server_and_json: Iterable of (server_name, json_object, validity_time) tuples. validity_time is a timestamp at which the signing key must be valid. Returns: List: for each input triplet, a deferred indicating success or failure to verify each json object's signature for the given server_name. The deferreds run their callbacks in the sentinel logcontext. """ return [ run_in_background( self.process_request, VerifyJsonRequest.from_json_object( server_name, json_object, validity_time, ), ) for server_name, json_object, validity_time in server_and_json ] async def verify_event_for_server( self, server_name: str, event: EventBase, validity_time: int, ) -> None: await self.process_request( VerifyJsonRequest.from_event( server_name, event, validity_time, ) ) async def process_request(self, verify_request: VerifyJsonRequest) -> None: """Processes the `VerifyJsonRequest`. Raises if the object is not signed by the server, the signatures don't match or we failed to fetch the necessary keys. """ if not verify_request.key_ids: raise SynapseError( 400, f"Not signed by {verify_request.server_name}", Codes.UNAUTHORIZED, ) found_keys: Dict[str, FetchKeyResult] = {} # If we are the originating server, short-circuit the key-fetch for any keys # we already have if verify_request.server_name == self._hostname: for key_id in verify_request.key_ids: if key_id in self._local_verify_keys: found_keys[key_id] = self._local_verify_keys[key_id] key_ids_to_find = set(verify_request.key_ids) - found_keys.keys() if key_ids_to_find: # Add the keys we need to verify to the queue for retrieval. We queue # up requests for the same server so we don't end up with many in flight # requests for the same keys. key_request = _FetchKeyRequest( server_name=verify_request.server_name, minimum_valid_until_ts=verify_request.minimum_valid_until_ts, key_ids=list(key_ids_to_find), ) found_keys_by_server = await self._server_queue.add_to_queue( key_request, key=verify_request.server_name ) # Since we batch up requests the returned set of keys may contain keys # from other servers, so we pull out only the ones we care about. found_keys.update(found_keys_by_server.get(verify_request.server_name, {})) # Verify each signature we got valid keys for, raising if we can't # verify any of them. verified = False for key_id in verify_request.key_ids: key_result = found_keys.get(key_id) if not key_result: continue if key_result.valid_until_ts < verify_request.minimum_valid_until_ts: continue await self._process_json(key_result.verify_key, verify_request) verified = True if not verified: raise SynapseError( 401, f"Failed to find any key to satisfy: {key_request}", Codes.UNAUTHORIZED, ) async def _process_json( self, verify_key: VerifyKey, verify_request: VerifyJsonRequest ) -> None: """Processes the `VerifyJsonRequest`. Raises if the signature can't be verified. """ try: verify_signed_json( verify_request.get_json_object(), verify_request.server_name, verify_key, ) except SignatureVerifyException as e: logger.debug( "Error verifying signature for %s:%s:%s with key %s: %s", verify_request.server_name, verify_key.alg, verify_key.version, encode_verify_key_base64(verify_key), str(e), ) raise SynapseError( 401, "Invalid signature for server %s with key %s:%s: %s" % ( verify_request.server_name, verify_key.alg, verify_key.version, str(e), ), Codes.UNAUTHORIZED, ) async def _inner_fetch_key_requests( self, requests: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: """Processing function for the queue of `_FetchKeyRequest`.""" logger.debug("Starting fetch for %s", requests) # First we need to deduplicate requests for the same key. We do this by # taking the *maximum* requested `minimum_valid_until_ts` for each pair # of server name/key ID. server_to_key_to_ts: Dict[str, Dict[str, int]] = {} for request in requests: by_server = server_to_key_to_ts.setdefault(request.server_name, {}) for key_id in request.key_ids: existing_ts = by_server.get(key_id, 0) by_server[key_id] = max(request.minimum_valid_until_ts, existing_ts) deduped_requests = [ _FetchKeyRequest(server_name, minimum_valid_ts, [key_id]) for server_name, by_server in server_to_key_to_ts.items() for key_id, minimum_valid_ts in by_server.items() ] logger.debug("Deduplicated key requests to %s", deduped_requests) # For each key we call `_inner_verify_request` which will handle # fetching each key. Note these shouldn't throw if we fail to contact # other servers etc. results_per_request = await yieldable_gather_results( self._inner_fetch_key_request, deduped_requests, ) # We now convert the returned list of results into a map from server # name to key ID to FetchKeyResult, to return. to_return: Dict[str, Dict[str, FetchKeyResult]] = {} for (request, results) in zip(deduped_requests, results_per_request): to_return_by_server = to_return.setdefault(request.server_name, {}) for key_id, key_result in results.items(): existing = to_return_by_server.get(key_id) if not existing or existing.valid_until_ts < key_result.valid_until_ts: to_return_by_server[key_id] = key_result return to_return async def _inner_fetch_key_request( self, verify_request: _FetchKeyRequest ) -> Dict[str, FetchKeyResult]: """Attempt to fetch the given key by calling each key fetcher one by one. """ logger.debug("Starting fetch for %s", verify_request) found_keys: Dict[str, FetchKeyResult] = {} missing_key_ids = set(verify_request.key_ids) for fetcher in self._key_fetchers: if not missing_key_ids: break logger.debug("Getting keys from %s for %s", fetcher, verify_request) keys = await fetcher.get_keys( verify_request.server_name, list(missing_key_ids), verify_request.minimum_valid_until_ts, ) for key_id, key in keys.items(): if not key: continue # If we already have a result for the given key ID we keep the # one with the highest `valid_until_ts`. existing_key = found_keys.get(key_id) if existing_key: if key.valid_until_ts <= existing_key.valid_until_ts: continue # We always store the returned key even if it doesn't the # `minimum_valid_until_ts` requirement, as some verification # requests may still be able to be satisfied by it. # # We still keep looking for the key from other fetchers in that # case though. found_keys[key_id] = key if key.valid_until_ts < verify_request.minimum_valid_until_ts: continue missing_key_ids.discard(key_id) return found_keys class KeyFetcher(metaclass=abc.ABCMeta): def __init__(self, hs: "HomeServer"): self._queue = BatchingQueue( self.__class__.__name__, hs.get_clock(), self._fetch_keys ) async def get_keys( self, server_name: str, key_ids: List[str], minimum_valid_until_ts: int ) -> Dict[str, FetchKeyResult]: results = await self._queue.add_to_queue( _FetchKeyRequest( server_name=server_name, key_ids=key_ids, minimum_valid_until_ts=minimum_valid_until_ts, ) ) return results.get(server_name, {}) @abc.abstractmethod async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: pass class StoreKeyFetcher(KeyFetcher): """KeyFetcher impl which fetches keys from our data store""" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: key_ids_to_fetch = ( (queue_value.server_name, key_id) for queue_value in keys_to_fetch for key_id in queue_value.key_ids ) res = await self.store.get_server_verify_keys(key_ids_to_fetch) keys: Dict[str, Dict[str, FetchKeyResult]] = {} for (server_name, key_id), key in res.items(): keys.setdefault(server_name, {})[key_id] = key return keys class BaseV2KeyFetcher(KeyFetcher): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.config = hs.config async def process_v2_response( self, from_server: str, response_json: JsonDict, time_added_ms: int ) -> Dict[str, FetchKeyResult]: """Parse a 'Server Keys' structure from the result of a /key request This is used to parse either the entirety of the response from GET /_matrix/key/v2/server, or a single entry from the list returned by POST /_matrix/key/v2/query. Checks that each signature in the response that claims to come from the origin server is valid, and that there is at least one such signature. Stores the json in server_keys_json so that it can be used for future responses to /_matrix/key/v2/query. Args: from_server: the name of the server producing this result: either the origin server for a /_matrix/key/v2/server request, or the notary for a /_matrix/key/v2/query. response_json: the json-decoded Server Keys response object time_added_ms: the timestamp to record in server_keys_json Returns: Map from key_id to result object """ ts_valid_until_ms = response_json["valid_until_ts"] # start by extracting the keys from the response, since they may be required # to validate the signature on the response. verify_keys = {} for key_id, key_data in response_json["verify_keys"].items(): if is_signing_algorithm_supported(key_id): key_base64 = key_data["key"] key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) verify_keys[key_id] = FetchKeyResult( verify_key=verify_key, valid_until_ts=ts_valid_until_ms ) server_name = response_json["server_name"] verified = False for key_id in response_json["signatures"].get(server_name, {}): key = verify_keys.get(key_id) if not key: # the key may not be present in verify_keys if: # * we got the key from the notary server, and: # * the key belongs to the notary server, and: # * the notary server is using a different key to sign notary # responses. continue verify_signed_json(response_json, server_name, key.verify_key) verified = True break if not verified: raise KeyLookupError( "Key response for %s is not signed by the origin server" % (server_name,) ) for key_id, key_data in response_json["old_verify_keys"].items(): if is_signing_algorithm_supported(key_id): key_base64 = key_data["key"] key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) verify_keys[key_id] = FetchKeyResult( verify_key=verify_key, valid_until_ts=key_data["expired_ts"] ) key_json_bytes = encode_canonical_json(response_json) await make_deferred_yieldable( defer.gatherResults( [ run_in_background( self.store.store_server_keys_json, server_name=server_name, key_id=key_id, from_server=from_server, ts_now_ms=time_added_ms, ts_expires_ms=ts_valid_until_ms, key_json_bytes=key_json_bytes, ) for key_id in verify_keys ], consumeErrors=True, ).addErrback(unwrapFirstError) ) return verify_keys class PerspectivesKeyFetcher(BaseV2KeyFetcher): """KeyFetcher impl which fetches keys from the "perspectives" servers""" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self.client = hs.get_federation_http_client() self.key_servers = self.config.key.key_servers async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: """see KeyFetcher._fetch_keys""" async def get_key(key_server: TrustedKeyServer) -> Dict: try: return await self.get_server_verify_key_v2_indirect( keys_to_fetch, key_server ) except KeyLookupError as e: logger.warning( "Key lookup failed from %r: %s", key_server.server_name, e ) except Exception as e: logger.exception( "Unable to get key from %r: %s %s", key_server.server_name, type(e).__name__, str(e), ) return {} results = await make_deferred_yieldable( defer.gatherResults( [run_in_background(get_key, server) for server in self.key_servers], consumeErrors=True, ).addErrback(unwrapFirstError) ) union_of_keys: Dict[str, Dict[str, FetchKeyResult]] = {} for result in results: for server_name, keys in result.items(): union_of_keys.setdefault(server_name, {}).update(keys) return union_of_keys async def get_server_verify_key_v2_indirect( self, keys_to_fetch: List[_FetchKeyRequest], key_server: TrustedKeyServer ) -> Dict[str, Dict[str, FetchKeyResult]]: """ Args: keys_to_fetch: the keys to be fetched. key_server: notary server to query for the keys Returns: Map from server_name -> key_id -> FetchKeyResult Raises: KeyLookupError if there was an error processing the entire response from the server """ perspective_name = key_server.server_name logger.info( "Requesting keys %s from notary server %s", keys_to_fetch, perspective_name, ) request: JsonDict = {} for queue_value in keys_to_fetch: # there may be multiple requests for each server, so we have to merge # them intelligently. request_for_server = { key_id: { "minimum_valid_until_ts": queue_value.minimum_valid_until_ts, } for key_id in queue_value.key_ids } request.setdefault(queue_value.server_name, {}).update(request_for_server) logger.debug("Request to notary server %s: %s", perspective_name, request) try: query_response = await self.client.post_json( destination=perspective_name, path="/_matrix/key/v2/query", data={"server_keys": request}, ) except (NotRetryingDestination, RequestSendFailed) as e: # these both have str() representations which we can't really improve upon raise KeyLookupError(str(e)) except HttpResponseException as e: raise KeyLookupError("Remote server returned an error: %s" % (e,)) logger.debug( "Response from notary server %s: %s", perspective_name, query_response ) keys: Dict[str, Dict[str, FetchKeyResult]] = {} added_keys: List[Tuple[str, str, FetchKeyResult]] = [] time_now_ms = self.clock.time_msec() assert isinstance(query_response, dict) for response in query_response["server_keys"]: # do this first, so that we can give useful errors thereafter server_name = response.get("server_name") if not isinstance(server_name, str): raise KeyLookupError( "Malformed response from key notary server %s: invalid server_name" % (perspective_name,) ) try: self._validate_perspectives_response(key_server, response) processed_response = await self.process_v2_response( perspective_name, response, time_added_ms=time_now_ms ) except KeyLookupError as e: logger.warning( "Error processing response from key notary server %s for origin " "server %s: %s", perspective_name, server_name, e, ) # we continue to process the rest of the response continue added_keys.extend( (server_name, key_id, key) for key_id, key in processed_response.items() ) keys.setdefault(server_name, {}).update(processed_response) await self.store.store_server_verify_keys( perspective_name, time_now_ms, added_keys ) return keys def _validate_perspectives_response( self, key_server: TrustedKeyServer, response: JsonDict ) -> None: """Optionally check the signature on the result of a /key/query request Args: key_server: the notary server that produced this result response: the json-decoded Server Keys response object """ perspective_name = key_server.server_name perspective_keys = key_server.verify_keys if perspective_keys is None: # signature checking is disabled on this server return if ( "signatures" not in response or perspective_name not in response["signatures"] ): raise KeyLookupError("Response not signed by the notary server") verified = False for key_id in response["signatures"][perspective_name]: if key_id in perspective_keys: verify_signed_json(response, perspective_name, perspective_keys[key_id]) verified = True if not verified: raise KeyLookupError( "Response not signed with a known key: signed with: %r, known keys: %r" % ( list(response["signatures"][perspective_name].keys()), list(perspective_keys.keys()), ) ) class ServerKeyFetcher(BaseV2KeyFetcher): """KeyFetcher impl which fetches keys from the origin servers""" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self.client = hs.get_federation_http_client() async def get_keys( self, server_name: str, key_ids: List[str], minimum_valid_until_ts: int ) -> Dict[str, FetchKeyResult]: results = await self._queue.add_to_queue( _FetchKeyRequest( server_name=server_name, key_ids=key_ids, minimum_valid_until_ts=minimum_valid_until_ts, ), key=server_name, ) return results.get(server_name, {}) async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: """ Args: keys_to_fetch: the keys to be fetched. server_name -> key_ids Returns: Map from server_name -> key_id -> FetchKeyResult """ results = {} async def get_key(key_to_fetch_item: _FetchKeyRequest) -> None: server_name = key_to_fetch_item.server_name key_ids = key_to_fetch_item.key_ids try: keys = await self.get_server_verify_key_v2_direct(server_name, key_ids) results[server_name] = keys except KeyLookupError as e: logger.warning( "Error looking up keys %s from %s: %s", key_ids, server_name, e ) except Exception: logger.exception("Error getting keys %s from %s", key_ids, server_name) await yieldable_gather_results(get_key, keys_to_fetch) return results async def get_server_verify_key_v2_direct( self, server_name: str, key_ids: Iterable[str] ) -> Dict[str, FetchKeyResult]: """ Args: server_name: key_ids: Returns: Map from key ID to lookup result Raises: KeyLookupError if there was a problem making the lookup """ keys: Dict[str, FetchKeyResult] = {} for requested_key_id in key_ids: # we may have found this key as a side-effect of asking for another. if requested_key_id in keys: continue time_now_ms = self.clock.time_msec() try: response = await self.client.get_json( destination=server_name, path="/_matrix/key/v2/server/" + urllib.parse.quote(requested_key_id), ignore_backoff=True, # we only give the remote server 10s to respond. It should be an # easy request to handle, so if it doesn't reply within 10s, it's # probably not going to. # # Furthermore, when we are acting as a notary server, we cannot # wait all day for all of the origin servers, as the requesting # server will otherwise time out before we can respond. # # (Note that get_json may make 4 attempts, so this can still take # almost 45 seconds to fetch the headers, plus up to another 60s to # read the response). timeout=10000, ) except (NotRetryingDestination, RequestSendFailed) as e: # these both have str() representations which we can't really improve # upon raise KeyLookupError(str(e)) except HttpResponseException as e: raise KeyLookupError("Remote server returned an error: %s" % (e,)) assert isinstance(response, dict) if response["server_name"] != server_name: raise KeyLookupError( "Expected a response for server %r not %r" % (server_name, response["server_name"]) ) response_keys = await self.process_v2_response( from_server=server_name, response_json=response, time_added_ms=time_now_ms, ) await self.store.store_server_verify_keys( server_name, time_now_ms, ((server_name, key_id, key) for key_id, key in response_keys.items()), ) keys.update(response_keys) return keys synapse-1.53.0/synapse/event_auth.py000066400000000000000000001003721420514467300174710ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import typing from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union from canonicaljson import encode_canonical_json from signedjson.key import decode_verify_key_bytes from signedjson.sign import SignatureVerifyException, verify_signed_json from unpaddedbase64 import decode_base64 from synapse.api.constants import ( MAX_PDU_SIZE, EventContentFields, EventTypes, JoinRules, Membership, ) from synapse.api.errors import AuthError, EventSizeError, SynapseError from synapse.api.room_versions import ( KNOWN_ROOM_VERSIONS, EventFormatVersions, RoomVersion, ) from synapse.types import StateMap, UserID, get_domain_from_id if typing.TYPE_CHECKING: # conditional imports to avoid import cycle from synapse.events import EventBase from synapse.events.builder import EventBuilder logger = logging.getLogger(__name__) def validate_event_for_room_version( room_version_obj: RoomVersion, event: "EventBase" ) -> None: """Ensure that the event complies with the limits, and has the right signatures NB: does not *validate* the signatures - it assumes that any signatures present have already been checked. NB: it does not check that the event satisfies the auth rules (that is done in check_auth_rules_for_event) - these tests are independent of the rest of the state in the room. NB: This is used to check events that have been received over federation. As such, it can only enforce the checks specified in the relevant room version, to avoid a split-brain situation where some servers accept such events, and others reject them. TODO: consider moving this into EventValidator Args: room_version_obj: the version of the room which contains this event event: the event to be checked Raises: SynapseError if there is a problem with the event """ _check_size_limits(event) if not hasattr(event, "room_id"): raise AuthError(500, "Event has no room_id: %s" % event) # check that the event has the correct signatures sender_domain = get_domain_from_id(event.sender) is_invite_via_3pid = ( event.type == EventTypes.Member and event.membership == Membership.INVITE and "third_party_invite" in event.content ) # Check the sender's domain has signed the event if not event.signatures.get(sender_domain): # We allow invites via 3pid to have a sender from a different # HS, as the sender must match the sender of the original # 3pid invite. This is checked further down with the # other dedicated membership checks. if not is_invite_via_3pid: raise AuthError(403, "Event not signed by sender's server") if event.format_version in (EventFormatVersions.V1,): # Only older room versions have event IDs to check. event_id_domain = get_domain_from_id(event.event_id) # Check the origin domain has signed the event if not event.signatures.get(event_id_domain): raise AuthError(403, "Event not signed by sending server") is_invite_via_allow_rule = ( room_version_obj.msc3083_join_rules and event.type == EventTypes.Member and event.membership == Membership.JOIN and EventContentFields.AUTHORISING_USER in event.content ) if is_invite_via_allow_rule: authoriser_domain = get_domain_from_id( event.content[EventContentFields.AUTHORISING_USER] ) if not event.signatures.get(authoriser_domain): raise AuthError(403, "Event not signed by authorising server") def check_auth_rules_for_event( room_version_obj: RoomVersion, event: "EventBase", auth_events: Iterable["EventBase"], ) -> None: """Check that an event complies with the auth rules Checks whether an event passes the auth rules with a given set of state events Assumes that we have already checked that the event is the right shape (it has enough signatures, has a room ID, etc). In other words: - it's fine for use in state resolution, when we have already decided whether to accept the event or not, and are now trying to decide whether it should make it into the room state - when we're doing the initial event auth, it is only suitable in combination with a bunch of other tests. Args: room_version_obj: the version of the room event: the event being checked. auth_events: the room state to check the events against. Raises: AuthError if the checks fail """ # We need to ensure that the auth events are actually for the same room, to # stop people from using powers they've been granted in other rooms for # example. # # Arguably we don't need to do this when we're just doing state res, as presumably # the state res algorithm isn't silly enough to give us events from different rooms. # Still, it's easier to do it anyway. room_id = event.room_id for auth_event in auth_events: if auth_event.room_id != room_id: raise AuthError( 403, "During auth for event %s in room %s, found event %s in the state " "which is in room %s" % (event.event_id, room_id, auth_event.event_id, auth_event.room_id), ) if auth_event.rejected_reason: raise AuthError( 403, "During auth for event %s: found rejected event %s in the state" % (event.event_id, auth_event.event_id), ) # Implementation of https://matrix.org/docs/spec/rooms/v1#authorization-rules # # 1. If type is m.room.create: if event.type == EventTypes.Create: # 1b. If the domain of the room_id does not match the domain of the sender, # reject. sender_domain = get_domain_from_id(event.sender) room_id_domain = get_domain_from_id(event.room_id) if room_id_domain != sender_domain: raise AuthError( 403, "Creation event's room_id domain does not match sender's" ) # 1c. If content.room_version is present and is not a recognised version, reject room_version_prop = event.content.get("room_version", "1") if room_version_prop not in KNOWN_ROOM_VERSIONS: raise AuthError( 403, "room appears to have unsupported version %s" % (room_version_prop,), ) logger.debug("Allowing! %s", event) return auth_dict = {(e.type, e.state_key): e for e in auth_events} # 3. If event does not have a m.room.create in its auth_events, reject. creation_event = auth_dict.get((EventTypes.Create, ""), None) if not creation_event: raise AuthError(403, "No create event in auth events") # additional check for m.federate creating_domain = get_domain_from_id(event.room_id) originating_domain = get_domain_from_id(event.sender) if creating_domain != originating_domain: if not _can_federate(event, auth_dict): raise AuthError(403, "This room has been marked as unfederatable.") # 4. If type is m.room.aliases if event.type == EventTypes.Aliases and room_version_obj.special_case_aliases_auth: # 4a. If event has no state_key, reject if not event.is_state(): raise AuthError(403, "Alias event must be a state event") if not event.state_key: raise AuthError(403, "Alias event must have non-empty state_key") # 4b. If sender's domain doesn't matches [sic] state_key, reject sender_domain = get_domain_from_id(event.sender) if event.state_key != sender_domain: raise AuthError( 403, "Alias event's state_key does not match sender's domain" ) # 4c. Otherwise, allow. logger.debug("Allowing! %s", event) return # 5. If type is m.room.membership if event.type == EventTypes.Member: _is_membership_change_allowed(room_version_obj, event, auth_dict) logger.debug("Allowing! %s", event) return _check_event_sender_in_room(event, auth_dict) # Special case to allow m.room.third_party_invite events wherever # a user is allowed to issue invites. Fixes # https://github.com/vector-im/vector-web/issues/1208 hopefully if event.type == EventTypes.ThirdPartyInvite: user_level = get_user_power_level(event.user_id, auth_dict) invite_level = get_named_level(auth_dict, "invite", 0) if user_level < invite_level: raise AuthError(403, "You don't have permission to invite users") else: logger.debug("Allowing! %s", event) return _can_send_event(event, auth_dict) if event.type == EventTypes.PowerLevels: _check_power_levels(room_version_obj, event, auth_dict) if event.type == EventTypes.Redaction: check_redaction(room_version_obj, event, auth_dict) if ( event.type == EventTypes.MSC2716_INSERTION or event.type == EventTypes.MSC2716_BATCH or event.type == EventTypes.MSC2716_MARKER ): check_historical(room_version_obj, event, auth_dict) logger.debug("Allowing! %s", event) def _check_size_limits(event: "EventBase") -> None: if len(event.user_id) > 255: raise EventSizeError("'user_id' too large") if len(event.room_id) > 255: raise EventSizeError("'room_id' too large") if event.is_state() and len(event.state_key) > 255: raise EventSizeError("'state_key' too large") if len(event.type) > 255: raise EventSizeError("'type' too large") if len(event.event_id) > 255: raise EventSizeError("'event_id' too large") if len(encode_canonical_json(event.get_pdu_json())) > MAX_PDU_SIZE: raise EventSizeError("event too large") def _can_federate(event: "EventBase", auth_events: StateMap["EventBase"]) -> bool: creation_event = auth_events.get((EventTypes.Create, "")) # There should always be a creation event, but if not don't federate. if not creation_event: return False return creation_event.content.get(EventContentFields.FEDERATE, True) is True def _is_membership_change_allowed( room_version: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"] ) -> None: """ Confirms that the event which changes membership is an allowed change. Args: room_version: The version of the room. event: The event to check. auth_events: The current auth events of the room. Raises: AuthError if the event is not allowed. """ membership = event.content["membership"] # Check if this is the room creator joining: if len(event.prev_event_ids()) == 1 and Membership.JOIN == membership: # Get room creation event: key = (EventTypes.Create, "") create = auth_events.get(key) if create and event.prev_event_ids()[0] == create.event_id: if create.content["creator"] == event.state_key: return target_user_id = event.state_key creating_domain = get_domain_from_id(event.room_id) target_domain = get_domain_from_id(target_user_id) if creating_domain != target_domain: if not _can_federate(event, auth_events): raise AuthError(403, "This room has been marked as unfederatable.") # get info about the caller key = (EventTypes.Member, event.user_id) caller = auth_events.get(key) caller_in_room = caller and caller.membership == Membership.JOIN caller_invited = caller and caller.membership == Membership.INVITE caller_knocked = ( caller and room_version.msc2403_knocking and caller.membership == Membership.KNOCK ) # get info about the target key = (EventTypes.Member, target_user_id) target = auth_events.get(key) target_in_room = target and target.membership == Membership.JOIN target_banned = target and target.membership == Membership.BAN key = (EventTypes.JoinRules, "") join_rule_event = auth_events.get(key) if join_rule_event: join_rule = join_rule_event.content.get("join_rule", JoinRules.INVITE) else: join_rule = JoinRules.INVITE user_level = get_user_power_level(event.user_id, auth_events) target_level = get_user_power_level(target_user_id, auth_events) invite_level = get_named_level(auth_events, "invite", 0) ban_level = get_named_level(auth_events, "ban", 50) logger.debug( "_is_membership_change_allowed: %s", { "caller_in_room": caller_in_room, "caller_invited": caller_invited, "caller_knocked": caller_knocked, "target_banned": target_banned, "target_in_room": target_in_room, "membership": membership, "join_rule": join_rule, "target_user_id": target_user_id, "event.user_id": event.user_id, }, ) if Membership.INVITE == membership and "third_party_invite" in event.content: if not _verify_third_party_invite(event, auth_events): raise AuthError(403, "You are not invited to this room.") if target_banned: raise AuthError(403, "%s is banned from the room" % (target_user_id,)) return # Require the user to be in the room for membership changes other than join/knock. if Membership.JOIN != membership and ( RoomVersion.msc2403_knocking and Membership.KNOCK != membership ): # If the user has been invited or has knocked, they are allowed to change their # membership event to leave if ( (caller_invited or caller_knocked) and Membership.LEAVE == membership and target_user_id == event.user_id ): return if not caller_in_room: # caller isn't joined raise AuthError(403, "%s not in room %s." % (event.user_id, event.room_id)) if Membership.INVITE == membership: # TODO (erikj): We should probably handle this more intelligently # PRIVATE join rules. # Invites are valid iff caller is in the room and target isn't. if target_banned: raise AuthError(403, "%s is banned from the room" % (target_user_id,)) elif target_in_room: # the target is already in the room. raise AuthError(403, "%s is already in the room." % target_user_id) else: if user_level < invite_level: raise AuthError(403, "You don't have permission to invite users") elif Membership.JOIN == membership: # Joins are valid iff caller == target and: # * They are not banned. # * They are accepting a previously sent invitation. # * They are already joined (it's a NOOP). # * The room is public. # * The room is restricted and the user meets the allows rules. if event.user_id != target_user_id: raise AuthError(403, "Cannot force another user to join.") elif target_banned: raise AuthError(403, "You are banned from this room") elif join_rule == JoinRules.PUBLIC: pass elif room_version.msc3083_join_rules and join_rule == JoinRules.RESTRICTED: # This is the same as public, but the event must contain a reference # to the server who authorised the join. If the event does not contain # the proper content it is rejected. # # Note that if the caller is in the room or invited, then they do # not need to meet the allow rules. if not caller_in_room and not caller_invited: authorising_user = event.content.get( EventContentFields.AUTHORISING_USER ) if authorising_user is None: raise AuthError(403, "Join event is missing authorising user.") # The authorising user must be in the room. key = (EventTypes.Member, authorising_user) member_event = auth_events.get(key) _check_joined_room(member_event, authorising_user, event.room_id) authorising_user_level = get_user_power_level( authorising_user, auth_events ) if authorising_user_level < invite_level: raise AuthError(403, "Join event authorised by invalid server.") elif join_rule == JoinRules.INVITE or ( room_version.msc2403_knocking and join_rule == JoinRules.KNOCK ): if not caller_in_room and not caller_invited: raise AuthError(403, "You are not invited to this room.") else: # TODO (erikj): may_join list # TODO (erikj): private rooms raise AuthError(403, "You are not allowed to join this room") elif Membership.LEAVE == membership: # TODO (erikj): Implement kicks. if target_banned and user_level < ban_level: raise AuthError(403, "You cannot unban user %s." % (target_user_id,)) elif target_user_id != event.user_id: kick_level = get_named_level(auth_events, "kick", 50) if user_level < kick_level or user_level <= target_level: raise AuthError(403, "You cannot kick user %s." % target_user_id) elif Membership.BAN == membership: if user_level < ban_level or user_level <= target_level: raise AuthError(403, "You don't have permission to ban") elif room_version.msc2403_knocking and Membership.KNOCK == membership: if join_rule != JoinRules.KNOCK: raise AuthError(403, "You don't have permission to knock") elif target_user_id != event.user_id: raise AuthError(403, "You cannot knock for other users") elif target_in_room: raise AuthError(403, "You cannot knock on a room you are already in") elif caller_invited: raise AuthError(403, "You are already invited to this room") elif target_banned: raise AuthError(403, "You are banned from this room") else: raise AuthError(500, "Unknown membership %s" % membership) def _check_event_sender_in_room( event: "EventBase", auth_events: StateMap["EventBase"] ) -> None: key = (EventTypes.Member, event.user_id) member_event = auth_events.get(key) _check_joined_room(member_event, event.user_id, event.room_id) def _check_joined_room( member: Optional["EventBase"], user_id: str, room_id: str ) -> None: if not member or member.membership != Membership.JOIN: raise AuthError( 403, "User %s not in room %s (%s)" % (user_id, room_id, repr(member)) ) def get_send_level( etype: str, state_key: Optional[str], power_levels_event: Optional["EventBase"] ) -> int: """Get the power level required to send an event of a given type The federation spec [1] refers to this as "Required Power Level". https://matrix.org/docs/spec/server_server/unstable.html#definitions Args: etype: type of event state_key: state_key of state event, or None if it is not a state event. power_levels_event: power levels event in force at this point in the room Returns: power level required to send this event. """ if power_levels_event: power_levels_content = power_levels_event.content else: power_levels_content = {} # see if we have a custom level for this event type send_level = power_levels_content.get("events", {}).get(etype) # otherwise, fall back to the state_default/events_default. if send_level is None: if state_key is not None: send_level = power_levels_content.get("state_default", 50) else: send_level = power_levels_content.get("events_default", 0) return int(send_level) def _can_send_event(event: "EventBase", auth_events: StateMap["EventBase"]) -> bool: power_levels_event = get_power_level_event(auth_events) send_level = get_send_level(event.type, event.get("state_key"), power_levels_event) user_level = get_user_power_level(event.user_id, auth_events) if user_level < send_level: raise AuthError( 403, "You don't have permission to post that to the room. " + "user_level (%d) < send_level (%d)" % (user_level, send_level), ) # Check state_key if hasattr(event, "state_key"): if event.state_key.startswith("@"): if event.state_key != event.user_id: raise AuthError(403, "You are not allowed to set others state") return True def check_redaction( room_version_obj: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"], ) -> bool: """Check whether the event sender is allowed to redact the target event. Returns: True if the the sender is allowed to redact the target event if the target event was created by them. False if the sender is allowed to redact the target event with no further checks. Raises: AuthError if the event sender is definitely not allowed to redact the target event. """ user_level = get_user_power_level(event.user_id, auth_events) redact_level = get_named_level(auth_events, "redact", 50) if user_level >= redact_level: return False if room_version_obj.event_format == EventFormatVersions.V1: redacter_domain = get_domain_from_id(event.event_id) if not isinstance(event.redacts, str): return False redactee_domain = get_domain_from_id(event.redacts) if redacter_domain == redactee_domain: return True else: event.internal_metadata.recheck_redaction = True return True raise AuthError(403, "You don't have permission to redact events") def check_historical( room_version_obj: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"], ) -> None: """Check whether the event sender is allowed to send historical related events like "insertion", "batch", and "marker". Returns: None Raises: AuthError if the event sender is not allowed to send historical related events ("insertion", "batch", and "marker"). """ # Ignore the auth checks in room versions that do not support historical # events if not room_version_obj.msc2716_historical: return user_level = get_user_power_level(event.user_id, auth_events) historical_level = get_named_level(auth_events, "historical", 100) if user_level < historical_level: raise AuthError( 403, 'You don\'t have permission to send send historical related events ("insertion", "batch", and "marker")', ) def _check_power_levels( room_version_obj: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"], ) -> None: user_list = event.content.get("users", {}) # Validate users for k, v in user_list.items(): try: UserID.from_string(k) except Exception: raise SynapseError(400, "Not a valid user_id: %s" % (k,)) try: int(v) except Exception: raise SynapseError(400, "Not a valid power level: %s" % (v,)) key = (event.type, event.state_key) current_state = auth_events.get(key) if not current_state: return user_level = get_user_power_level(event.user_id, auth_events) # Check other levels: levels_to_check: List[Tuple[str, Optional[str]]] = [ ("users_default", None), ("events_default", None), ("state_default", None), ("ban", None), ("redact", None), ("kick", None), ("invite", None), ] old_list = current_state.content.get("users", {}) for user in set(list(old_list) + list(user_list)): levels_to_check.append((user, "users")) old_list = current_state.content.get("events", {}) new_list = event.content.get("events", {}) for ev_id in set(list(old_list) + list(new_list)): levels_to_check.append((ev_id, "events")) # MSC2209 specifies these checks should also be done for the "notifications" # key. if room_version_obj.limit_notifications_power_levels: old_list = current_state.content.get("notifications", {}) new_list = event.content.get("notifications", {}) for ev_id in set(list(old_list) + list(new_list)): levels_to_check.append((ev_id, "notifications")) old_state = current_state.content new_state = event.content for level_to_check, dir in levels_to_check: old_loc = old_state new_loc = new_state if dir: old_loc = old_loc.get(dir, {}) new_loc = new_loc.get(dir, {}) if level_to_check in old_loc: old_level: Optional[int] = int(old_loc[level_to_check]) else: old_level = None if level_to_check in new_loc: new_level: Optional[int] = int(new_loc[level_to_check]) else: new_level = None if new_level is not None and old_level is not None: if new_level == old_level: continue if dir == "users" and level_to_check != event.user_id: if old_level == user_level: raise AuthError( 403, "You don't have permission to remove ops level equal " "to your own", ) # Check if the old and new levels are greater than the user level # (if defined) old_level_too_big = old_level is not None and old_level > user_level new_level_too_big = new_level is not None and new_level > user_level if old_level_too_big or new_level_too_big: raise AuthError( 403, "You don't have permission to add ops level greater than your own" ) def get_power_level_event(auth_events: StateMap["EventBase"]) -> Optional["EventBase"]: return auth_events.get((EventTypes.PowerLevels, "")) def get_user_power_level(user_id: str, auth_events: StateMap["EventBase"]) -> int: """Get a user's power level Args: user_id: user's id to look up in power_levels auth_events: state in force at this point in the room (or rather, a subset of it including at least the create event and power levels event. Returns: the user's power level in this room. """ power_level_event = get_power_level_event(auth_events) if power_level_event: level = power_level_event.content.get("users", {}).get(user_id) if level is None: level = power_level_event.content.get("users_default", 0) if level is None: return 0 else: return int(level) else: # if there is no power levels event, the creator gets 100 and everyone # else gets 0. # some things which call this don't pass the create event: hack around # that. key = (EventTypes.Create, "") create_event = auth_events.get(key) if create_event is not None and create_event.content["creator"] == user_id: return 100 else: return 0 def get_named_level(auth_events: StateMap["EventBase"], name: str, default: int) -> int: power_level_event = get_power_level_event(auth_events) if not power_level_event: return default level = power_level_event.content.get(name, None) if level is not None: return int(level) else: return default def _verify_third_party_invite( event: "EventBase", auth_events: StateMap["EventBase"] ) -> bool: """ Validates that the invite event is authorized by a previous third-party invite. Checks that the public key, and keyserver, match those in the third party invite, and that the invite event has a signature issued using that public key. Args: event: The m.room.member join event being validated. auth_events: All relevant previous context events which may be used for authorization decisions. Return: True if the event fulfills the expectations of a previous third party invite event. """ if "third_party_invite" not in event.content: return False if "signed" not in event.content["third_party_invite"]: return False signed = event.content["third_party_invite"]["signed"] for key in {"mxid", "token"}: if key not in signed: return False token = signed["token"] invite_event = auth_events.get((EventTypes.ThirdPartyInvite, token)) if not invite_event: return False if invite_event.sender != event.sender: return False if event.user_id != invite_event.user_id: return False if signed["mxid"] != event.state_key: return False if signed["token"] != token: return False for public_key_object in get_public_keys(invite_event): public_key = public_key_object["public_key"] try: for server, signature_block in signed["signatures"].items(): for key_name in signature_block.keys(): if not key_name.startswith("ed25519:"): continue verify_key = decode_verify_key_bytes( key_name, decode_base64(public_key) ) verify_signed_json(signed, server, verify_key) # We got the public key from the invite, so we know that the # correct server signed the signed bundle. # The caller is responsible for checking that the signing # server has not revoked that public key. return True except (KeyError, SignatureVerifyException): continue return False def get_public_keys(invite_event: "EventBase") -> List[Dict[str, Any]]: public_keys = [] if "public_key" in invite_event.content: o = {"public_key": invite_event.content["public_key"]} if "key_validity_url" in invite_event.content: o["key_validity_url"] = invite_event.content["key_validity_url"] public_keys.append(o) public_keys.extend(invite_event.content.get("public_keys", [])) return public_keys def auth_types_for_event( room_version: RoomVersion, event: Union["EventBase", "EventBuilder"] ) -> Set[Tuple[str, str]]: """Given an event, return a list of (EventType, StateKey) that may be needed to auth the event. The returned list may be a superset of what would actually be required depending on the full state of the room. Used to limit the number of events to fetch from the database to actually auth the event. """ if event.type == EventTypes.Create: return set() auth_types = { (EventTypes.PowerLevels, ""), (EventTypes.Member, event.sender), (EventTypes.Create, ""), } if event.type == EventTypes.Member: membership = event.content["membership"] if membership in [Membership.JOIN, Membership.INVITE, Membership.KNOCK]: auth_types.add((EventTypes.JoinRules, "")) auth_types.add((EventTypes.Member, event.state_key)) if membership == Membership.INVITE: if "third_party_invite" in event.content: key = ( EventTypes.ThirdPartyInvite, event.content["third_party_invite"]["signed"]["token"], ) auth_types.add(key) if room_version.msc3083_join_rules and membership == Membership.JOIN: if EventContentFields.AUTHORISING_USER in event.content: key = ( EventTypes.Member, event.content[EventContentFields.AUTHORISING_USER], ) auth_types.add(key) return auth_types synapse-1.53.0/synapse/events/000077500000000000000000000000001420514467300162565ustar00rootroot00000000000000synapse-1.53.0/synapse/events/__init__.py000066400000000000000000000515741420514467300204030ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import os from typing import ( TYPE_CHECKING, Any, Dict, Generic, Iterable, List, Optional, Sequence, Tuple, Type, TypeVar, Union, overload, ) from typing_extensions import Literal from unpaddedbase64 import encode_base64 from synapse.api.room_versions import EventFormatVersions, RoomVersion, RoomVersions from synapse.types import JsonDict, RoomStreamToken from synapse.util.caches import intern_dict from synapse.util.frozenutils import freeze from synapse.util.stringutils import strtobool if TYPE_CHECKING: from synapse.events.builder import EventBuilder # Whether we should use frozen_dict in FrozenEvent. Using frozen_dicts prevents # bugs where we accidentally share e.g. signature dicts. However, converting a # dict to frozen_dicts is expensive. # # NOTE: This is overridden by the configuration by the Synapse worker apps, but # for the sake of tests, it is set here while it cannot be configured on the # homeserver object itself. USE_FROZEN_DICTS = strtobool(os.environ.get("SYNAPSE_USE_FROZEN_DICTS", "0")) T = TypeVar("T") # DictProperty (and DefaultDictProperty) require the classes they're used with to # have a _dict property to pull properties from. # # TODO _DictPropertyInstance should not include EventBuilder but due to # https://github.com/python/mypy/issues/5570 it thinks the DictProperty and # DefaultDictProperty get applied to EventBuilder when it is in a Union with # EventBase. This is the least invasive hack to get mypy to comply. # # Note that DictProperty/DefaultDictProperty cannot actually be used with # EventBuilder as it lacks a _dict property. _DictPropertyInstance = Union["_EventInternalMetadata", "EventBase", "EventBuilder"] class DictProperty(Generic[T]): """An object property which delegates to the `_dict` within its parent object.""" __slots__ = ["key"] def __init__(self, key: str): self.key = key @overload def __get__( self, instance: Literal[None], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> "DictProperty": ... @overload def __get__( self, instance: _DictPropertyInstance, owner: Optional[Type[_DictPropertyInstance]] = None, ) -> T: ... def __get__( self, instance: Optional[_DictPropertyInstance], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> Union[T, "DictProperty"]: # if the property is accessed as a class property rather than an instance # property, return the property itself rather than the value if instance is None: return self try: assert isinstance(instance, (EventBase, _EventInternalMetadata)) return instance._dict[self.key] except KeyError as e1: # We want this to look like a regular attribute error (mostly so that # hasattr() works correctly), so we convert the KeyError into an # AttributeError. # # To exclude the KeyError from the traceback, we explicitly # 'raise from e1.__context__' (which is better than 'raise from None', # because that would omit any *earlier* exceptions). # raise AttributeError( "'%s' has no '%s' property" % (type(instance), self.key) ) from e1.__context__ def __set__(self, instance: _DictPropertyInstance, v: T) -> None: assert isinstance(instance, (EventBase, _EventInternalMetadata)) instance._dict[self.key] = v def __delete__(self, instance: _DictPropertyInstance) -> None: assert isinstance(instance, (EventBase, _EventInternalMetadata)) try: del instance._dict[self.key] except KeyError as e1: raise AttributeError( "'%s' has no '%s' property" % (type(instance), self.key) ) from e1.__context__ class DefaultDictProperty(DictProperty, Generic[T]): """An extension of DictProperty which provides a default if the property is not present in the parent's _dict. Note that this means that hasattr() on the property always returns True. """ __slots__ = ["default"] def __init__(self, key: str, default: T): super().__init__(key) self.default = default @overload def __get__( self, instance: Literal[None], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> "DefaultDictProperty": ... @overload def __get__( self, instance: _DictPropertyInstance, owner: Optional[Type[_DictPropertyInstance]] = None, ) -> T: ... def __get__( self, instance: Optional[_DictPropertyInstance], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> Union[T, "DefaultDictProperty"]: if instance is None: return self assert isinstance(instance, (EventBase, _EventInternalMetadata)) return instance._dict.get(self.key, self.default) class _EventInternalMetadata: __slots__ = ["_dict", "stream_ordering", "outlier"] def __init__(self, internal_metadata_dict: JsonDict): # we have to copy the dict, because it turns out that the same dict is # reused. TODO: fix that self._dict = dict(internal_metadata_dict) # the stream ordering of this event. None, until it has been persisted. self.stream_ordering: Optional[int] = None # whether this event is an outlier (ie, whether we have the state at that point # in the DAG) self.outlier = False out_of_band_membership: DictProperty[bool] = DictProperty("out_of_band_membership") send_on_behalf_of: DictProperty[str] = DictProperty("send_on_behalf_of") recheck_redaction: DictProperty[bool] = DictProperty("recheck_redaction") soft_failed: DictProperty[bool] = DictProperty("soft_failed") proactively_send: DictProperty[bool] = DictProperty("proactively_send") redacted: DictProperty[bool] = DictProperty("redacted") txn_id: DictProperty[str] = DictProperty("txn_id") token_id: DictProperty[int] = DictProperty("token_id") historical: DictProperty[bool] = DictProperty("historical") # XXX: These are set by StreamWorkerStore._set_before_and_after. # I'm pretty sure that these are never persisted to the database, so shouldn't # be here before: DictProperty[RoomStreamToken] = DictProperty("before") after: DictProperty[RoomStreamToken] = DictProperty("after") order: DictProperty[Tuple[int, int]] = DictProperty("order") def get_dict(self) -> JsonDict: return dict(self._dict) def is_outlier(self) -> bool: return self.outlier def is_out_of_band_membership(self) -> bool: """Whether this is an out of band membership, like an invite or an invite rejection. This is needed as those events are marked as outliers, but they still need to be processed as if they're new events (e.g. updating invite state in the database, relaying to clients, etc). (Added in synapse 0.99.0, so may be unreliable for events received before that) """ return self._dict.get("out_of_band_membership", False) def get_send_on_behalf_of(self) -> Optional[str]: """Whether this server should send the event on behalf of another server. This is used by the federation "send_join" API to forward the initial join event for a server in the room. returns a str with the name of the server this event is sent on behalf of. """ return self._dict.get("send_on_behalf_of") def need_to_check_redaction(self) -> bool: """Whether the redaction event needs to be rechecked when fetching from the database. Starting in room v3 redaction events are accepted up front, and later checked to see if the redacter and redactee's domains match. If the sender of the redaction event is allowed to redact any event due to auth rules, then this will always return false. """ return self._dict.get("recheck_redaction", False) def is_soft_failed(self) -> bool: """Whether the event has been soft failed. Soft failed events should be handled as usual, except: 1. They should not go down sync or event streams, or generally sent to clients. 2. They should not be added to the forward extremities (and therefore not to current state). """ return self._dict.get("soft_failed", False) def should_proactively_send(self) -> bool: """Whether the event, if ours, should be sent to other clients and servers. This is used for sending dummy events internally. Servers and clients can still explicitly fetch the event. """ return self._dict.get("proactively_send", True) def is_redacted(self) -> bool: """Whether the event has been redacted. This is used for efficiently checking whether an event has been marked as redacted without needing to make another database call. """ return self._dict.get("redacted", False) def is_historical(self) -> bool: """Whether this is a historical message. This is used by the batchsend historical message endpoint and is needed to and mark the event as backfilled and skip some checks like push notifications. """ return self._dict.get("historical", False) class EventBase(metaclass=abc.ABCMeta): @property @abc.abstractmethod def format_version(self) -> int: """The EventFormatVersion implemented by this event""" ... def __init__( self, event_dict: JsonDict, room_version: RoomVersion, signatures: Dict[str, Dict[str, str]], unsigned: JsonDict, internal_metadata_dict: JsonDict, rejected_reason: Optional[str], ): assert room_version.event_format == self.format_version self.room_version = room_version self.signatures = signatures self.unsigned = unsigned self.rejected_reason = rejected_reason self._dict = event_dict self.internal_metadata = _EventInternalMetadata(internal_metadata_dict) depth: DictProperty[int] = DictProperty("depth") content: DictProperty[JsonDict] = DictProperty("content") hashes: DictProperty[Dict[str, str]] = DictProperty("hashes") origin: DictProperty[str] = DictProperty("origin") origin_server_ts: DictProperty[int] = DictProperty("origin_server_ts") redacts: DefaultDictProperty[Optional[str]] = DefaultDictProperty("redacts", None) room_id: DictProperty[str] = DictProperty("room_id") sender: DictProperty[str] = DictProperty("sender") # TODO state_key should be Optional[str]. This is generally asserted in Synapse # by calling is_state() first (which ensures it is not None), but it is hard (not possible?) # to properly annotate that calling is_state() asserts that state_key exists # and is non-None. It would be better to replace such direct references with # get_state_key() (and a check for None). state_key: DictProperty[str] = DictProperty("state_key") type: DictProperty[str] = DictProperty("type") user_id: DictProperty[str] = DictProperty("sender") @property def event_id(self) -> str: raise NotImplementedError() @property def membership(self) -> str: return self.content["membership"] def is_state(self) -> bool: return self.get_state_key() is not None def get_state_key(self) -> Optional[str]: """Get the state key of this event, or None if it's not a state event""" return self._dict.get("state_key") def get_dict(self) -> JsonDict: d = dict(self._dict) d.update({"signatures": self.signatures, "unsigned": dict(self.unsigned)}) return d def get(self, key: str, default: Optional[Any] = None) -> Any: return self._dict.get(key, default) def get_internal_metadata_dict(self) -> JsonDict: return self.internal_metadata.get_dict() def get_pdu_json(self, time_now: Optional[int] = None) -> JsonDict: pdu_json = self.get_dict() if time_now is not None and "age_ts" in pdu_json["unsigned"]: age = time_now - pdu_json["unsigned"]["age_ts"] pdu_json.setdefault("unsigned", {})["age"] = int(age) del pdu_json["unsigned"]["age_ts"] # This may be a frozen event pdu_json["unsigned"].pop("redacted_because", None) return pdu_json def get_templated_pdu_json(self) -> JsonDict: """ Return a JSON object suitable for a templated event, as used in the make_{join,leave,knock} workflow. """ # By using _dict directly we don't pull in signatures/unsigned. template_json = dict(self._dict) # The hashes (similar to the signature) need to be recalculated by the # joining/leaving/knocking server after (potentially) modifying the # event. template_json.pop("hashes") return template_json def __getitem__(self, field: str) -> Optional[Any]: return self._dict[field] def __contains__(self, field: str) -> bool: return field in self._dict def items(self) -> List[Tuple[str, Optional[Any]]]: return list(self._dict.items()) def keys(self) -> Iterable[str]: return self._dict.keys() def prev_event_ids(self) -> Sequence[str]: """Returns the list of prev event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's prev_events """ return [e for e, _ in self._dict["prev_events"]] def auth_event_ids(self) -> Sequence[str]: """Returns the list of auth event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's auth_events """ return [e for e, _ in self._dict["auth_events"]] def freeze(self) -> None: """'Freeze' the event dict, so it cannot be modified by accident""" # this will be a no-op if the event dict is already frozen. self._dict = freeze(self._dict) def __str__(self) -> str: return self.__repr__() def __repr__(self) -> str: rejection = f"REJECTED={self.rejected_reason}, " if self.rejected_reason else "" return ( f"<{self.__class__.__name__} " f"{rejection}" f"event_id={self.event_id}, " f"type={self.get('type')}, " f"state_key={self.get('state_key')}, " f"outlier={self.internal_metadata.is_outlier()}" ">" ) class FrozenEvent(EventBase): format_version = EventFormatVersions.V1 # All events of this type are V1 def __init__( self, event_dict: JsonDict, room_version: RoomVersion, internal_metadata_dict: Optional[JsonDict] = None, rejected_reason: Optional[str] = None, ): internal_metadata_dict = internal_metadata_dict or {} event_dict = dict(event_dict) # Signatures is a dict of dicts, and this is faster than doing a # copy.deepcopy signatures = { name: {sig_id: sig for sig_id, sig in sigs.items()} for name, sigs in event_dict.pop("signatures", {}).items() } unsigned = dict(event_dict.pop("unsigned", {})) # We intern these strings because they turn up a lot (especially when # caching). event_dict = intern_dict(event_dict) if USE_FROZEN_DICTS: frozen_dict = freeze(event_dict) else: frozen_dict = event_dict self._event_id = event_dict["event_id"] super().__init__( frozen_dict, room_version=room_version, signatures=signatures, unsigned=unsigned, internal_metadata_dict=internal_metadata_dict, rejected_reason=rejected_reason, ) @property def event_id(self) -> str: return self._event_id class FrozenEventV2(EventBase): format_version = EventFormatVersions.V2 # All events of this type are V2 def __init__( self, event_dict: JsonDict, room_version: RoomVersion, internal_metadata_dict: Optional[JsonDict] = None, rejected_reason: Optional[str] = None, ): internal_metadata_dict = internal_metadata_dict or {} event_dict = dict(event_dict) # Signatures is a dict of dicts, and this is faster than doing a # copy.deepcopy signatures = { name: {sig_id: sig for sig_id, sig in sigs.items()} for name, sigs in event_dict.pop("signatures", {}).items() } assert "event_id" not in event_dict unsigned = dict(event_dict.pop("unsigned", {})) # We intern these strings because they turn up a lot (especially when # caching). event_dict = intern_dict(event_dict) if USE_FROZEN_DICTS: frozen_dict = freeze(event_dict) else: frozen_dict = event_dict self._event_id: Optional[str] = None super().__init__( frozen_dict, room_version=room_version, signatures=signatures, unsigned=unsigned, internal_metadata_dict=internal_metadata_dict, rejected_reason=rejected_reason, ) @property def event_id(self) -> str: # We have to import this here as otherwise we get an import loop which # is hard to break. from synapse.crypto.event_signing import compute_event_reference_hash if self._event_id: return self._event_id self._event_id = "$" + encode_base64(compute_event_reference_hash(self)[1]) return self._event_id def prev_event_ids(self) -> Sequence[str]: """Returns the list of prev event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's prev_events """ return self._dict["prev_events"] def auth_event_ids(self) -> Sequence[str]: """Returns the list of auth event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's auth_events """ return self._dict["auth_events"] class FrozenEventV3(FrozenEventV2): """FrozenEventV3, which differs from FrozenEventV2 only in the event_id format""" format_version = EventFormatVersions.V3 # All events of this type are V3 @property def event_id(self) -> str: # We have to import this here as otherwise we get an import loop which # is hard to break. from synapse.crypto.event_signing import compute_event_reference_hash if self._event_id: return self._event_id self._event_id = "$" + encode_base64( compute_event_reference_hash(self)[1], urlsafe=True ) return self._event_id def _event_type_from_format_version( format_version: int, ) -> Type[Union[FrozenEvent, FrozenEventV2, FrozenEventV3]]: """Returns the python type to use to construct an Event object for the given event format version. Args: format_version: The event format version Returns: type: A type that can be initialized as per the initializer of `FrozenEvent` """ if format_version == EventFormatVersions.V1: return FrozenEvent elif format_version == EventFormatVersions.V2: return FrozenEventV2 elif format_version == EventFormatVersions.V3: return FrozenEventV3 else: raise Exception("No event format %r" % (format_version,)) def make_event_from_dict( event_dict: JsonDict, room_version: RoomVersion = RoomVersions.V1, internal_metadata_dict: Optional[JsonDict] = None, rejected_reason: Optional[str] = None, ) -> EventBase: """Construct an EventBase from the given event dict""" event_type = _event_type_from_format_version(room_version.event_format) return event_type( event_dict, room_version, internal_metadata_dict or {}, rejected_reason ) synapse-1.53.0/synapse/events/builder.py000066400000000000000000000223701420514467300202620ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union import attr from nacl.signing import SigningKey from synapse.api.constants import MAX_DEPTH from synapse.api.room_versions import ( KNOWN_EVENT_FORMAT_VERSIONS, EventFormatVersions, RoomVersion, ) from synapse.crypto.event_signing import add_hashes_and_signatures from synapse.events import EventBase, _EventInternalMetadata, make_event_from_dict from synapse.state import StateHandler from synapse.storage.databases.main import DataStore from synapse.types import EventID, JsonDict from synapse.util import Clock from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.handlers.event_auth import EventAuthHandler from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, cmp=False, frozen=True, auto_attribs=True) class EventBuilder: """A format independent event builder used to build up the event content before signing the event. (Note that while objects of this class are frozen, the content/unsigned/internal_metadata fields are still mutable) Attributes: room_version: Version of the target room room_id type sender content unsigned internal_metadata _state _auth _store _clock _hostname: The hostname of the server creating the event _signing_key: The signing key to use to sign the event as the server """ _state: StateHandler _event_auth_handler: "EventAuthHandler" _store: DataStore _clock: Clock _hostname: str _signing_key: SigningKey room_version: RoomVersion room_id: str type: str sender: str content: JsonDict = attr.Factory(dict) unsigned: JsonDict = attr.Factory(dict) # These only exist on a subset of events, so they raise AttributeError if # someone tries to get them when they don't exist. _state_key: Optional[str] = None _redacts: Optional[str] = None _origin_server_ts: Optional[int] = None internal_metadata: _EventInternalMetadata = attr.Factory( lambda: _EventInternalMetadata({}) ) @property def state_key(self) -> str: if self._state_key is not None: return self._state_key raise AttributeError("state_key") def is_state(self) -> bool: return self._state_key is not None async def build( self, prev_event_ids: List[str], auth_event_ids: Optional[List[str]], depth: Optional[int] = None, ) -> EventBase: """Transform into a fully signed and hashed event Args: prev_event_ids: The event IDs to use as the prev events auth_event_ids: The event IDs to use as the auth events. Should normally be set to None, which will cause them to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Returns: The signed and hashed event. """ if auth_event_ids is None: state_ids = await self._state.get_current_state_ids( self.room_id, prev_event_ids ) auth_event_ids = self._event_auth_handler.compute_auth_events( self, state_ids ) format_version = self.room_version.event_format # The types of auth/prev events changes between event versions. prev_events: Union[List[str], List[Tuple[str, Dict[str, str]]]] auth_events: Union[List[str], List[Tuple[str, Dict[str, str]]]] if format_version == EventFormatVersions.V1: auth_events = await self._store.add_event_hashes(auth_event_ids) prev_events = await self._store.add_event_hashes(prev_event_ids) else: auth_events = auth_event_ids prev_events = prev_event_ids # Otherwise, progress the depth as normal if depth is None: ( _, most_recent_prev_event_depth, ) = await self._store.get_max_depth_of(prev_event_ids) depth = most_recent_prev_event_depth + 1 # we cap depth of generated events, to ensure that they are not # rejected by other servers (and so that they can be persisted in # the db) depth = min(depth, MAX_DEPTH) event_dict: Dict[str, Any] = { "auth_events": auth_events, "prev_events": prev_events, "type": self.type, "room_id": self.room_id, "sender": self.sender, "content": self.content, "unsigned": self.unsigned, "depth": depth, "prev_state": [], } if self.is_state(): event_dict["state_key"] = self._state_key if self._redacts is not None: event_dict["redacts"] = self._redacts if self._origin_server_ts is not None: event_dict["origin_server_ts"] = self._origin_server_ts return create_local_event_from_event_dict( clock=self._clock, hostname=self._hostname, signing_key=self._signing_key, room_version=self.room_version, event_dict=event_dict, internal_metadata_dict=self.internal_metadata.get_dict(), ) class EventBuilderFactory: def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.hostname = hs.hostname self.signing_key = hs.signing_key self.store = hs.get_datastore() self.state = hs.get_state_handler() self._event_auth_handler = hs.get_event_auth_handler() def for_room_version( self, room_version: RoomVersion, key_values: dict ) -> EventBuilder: """Generate an event builder appropriate for the given room version Args: room_version: Version of the room that we're creating an event builder for key_values: Fields used as the basis of the new event Returns: EventBuilder """ return EventBuilder( store=self.store, state=self.state, event_auth_handler=self._event_auth_handler, clock=self.clock, hostname=self.hostname, signing_key=self.signing_key, room_version=room_version, type=key_values["type"], state_key=key_values.get("state_key"), room_id=key_values["room_id"], sender=key_values["sender"], content=key_values.get("content", {}), unsigned=key_values.get("unsigned", {}), redacts=key_values.get("redacts", None), origin_server_ts=key_values.get("origin_server_ts", None), ) def create_local_event_from_event_dict( clock: Clock, hostname: str, signing_key: SigningKey, room_version: RoomVersion, event_dict: JsonDict, internal_metadata_dict: Optional[JsonDict] = None, ) -> EventBase: """Takes a fully formed event dict, ensuring that fields like `origin` and `origin_server_ts` have correct values for a locally produced event, then signs and hashes it. """ format_version = room_version.event_format if format_version not in KNOWN_EVENT_FORMAT_VERSIONS: raise Exception("No event format defined for version %r" % (format_version,)) if internal_metadata_dict is None: internal_metadata_dict = {} time_now = int(clock.time_msec()) if format_version == EventFormatVersions.V1: event_dict["event_id"] = _create_event_id(clock, hostname) event_dict["origin"] = hostname event_dict.setdefault("origin_server_ts", time_now) event_dict.setdefault("unsigned", {}) age = event_dict["unsigned"].pop("age", 0) event_dict["unsigned"].setdefault("age_ts", time_now - age) event_dict.setdefault("signatures", {}) add_hashes_and_signatures(room_version, event_dict, hostname, signing_key) return make_event_from_dict( event_dict, room_version, internal_metadata_dict=internal_metadata_dict ) # A counter used when generating new event IDs _event_id_counter = 0 def _create_event_id(clock: Clock, hostname: str) -> str: """Create a new event ID Args: clock hostname: The server name for the event ID Returns: The new event ID """ global _event_id_counter i = str(_event_id_counter) _event_id_counter += 1 local_part = str(int(clock.time())) + i + random_string(5) e_id = EventID(local_part, hostname) return e_id.to_string() synapse-1.53.0/synapse/events/presence_router.py000066400000000000000000000203551420514467300220410ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Optional, Set, Union, ) from synapse.api.presence import UserPresenceState from synapse.util.async_helpers import maybe_awaitable if TYPE_CHECKING: from synapse.server import HomeServer GET_USERS_FOR_STATES_CALLBACK = Callable[ [Iterable[UserPresenceState]], Awaitable[Dict[str, Set[UserPresenceState]]] ] # This must either return a set of strings or the constant PresenceRouter.ALL_USERS. GET_INTERESTED_USERS_CALLBACK = Callable[[str], Awaitable[Union[Set[str], str]]] logger = logging.getLogger(__name__) def load_legacy_presence_router(hs: "HomeServer") -> None: """Wrapper that loads a presence router module configured using the old configuration, and registers the hooks they implement. """ if hs.config.server.presence_router_module_class is None: return module = hs.config.server.presence_router_module_class config = hs.config.server.presence_router_config api = hs.get_module_api() presence_router = module(config=config, module_api=api) # The known hooks. If a module implements a method which name appears in this set, # we'll want to register it. presence_router_methods = { "get_users_for_states", "get_interested_users", } # All methods that the module provides should be async, but this wasn't enforced # in the old module system, so we wrap them if needed def async_wrapper(f: Optional[Callable]) -> Optional[Callable[..., Awaitable]]: # f might be None if the callback isn't implemented by the module. In this # case we don't want to register a callback at all so we return None. if f is None: return None def run(*args: Any, **kwargs: Any) -> Awaitable: # Assertion required because mypy can't prove we won't change `f` # back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert f is not None return maybe_awaitable(f(*args, **kwargs)) return run # Register the hooks through the module API. hooks = { hook: async_wrapper(getattr(presence_router, hook, None)) for hook in presence_router_methods } api.register_presence_router_callbacks(**hooks) class PresenceRouter: """ A module that the homeserver will call upon to help route user presence updates to additional destinations. """ ALL_USERS = "ALL" def __init__(self, hs: "HomeServer"): # Initially there are no callbacks self._get_users_for_states_callbacks: List[GET_USERS_FOR_STATES_CALLBACK] = [] self._get_interested_users_callbacks: List[GET_INTERESTED_USERS_CALLBACK] = [] def register_presence_router_callbacks( self, get_users_for_states: Optional[GET_USERS_FOR_STATES_CALLBACK] = None, get_interested_users: Optional[GET_INTERESTED_USERS_CALLBACK] = None, ) -> None: # PresenceRouter modules are required to implement both of these methods # or neither of them as they are assumed to act in a complementary manner paired_methods = [get_users_for_states, get_interested_users] if paired_methods.count(None) == 1: raise RuntimeError( "PresenceRouter modules must register neither or both of the paired callbacks: " "[get_users_for_states, get_interested_users]" ) # Append the methods provided to the lists of callbacks if get_users_for_states is not None: self._get_users_for_states_callbacks.append(get_users_for_states) if get_interested_users is not None: self._get_interested_users_callbacks.append(get_interested_users) async def get_users_for_states( self, state_updates: Iterable[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: """ Given an iterable of user presence updates, determine where each one needs to go. Args: state_updates: An iterable of user presence state updates. Returns: A dictionary of user_id -> set of UserPresenceState, indicating which presence updates each user should receive. """ # Bail out early if we don't have any callbacks to run. if len(self._get_users_for_states_callbacks) == 0: # Don't include any extra destinations for presence updates return {} users_for_states: Dict[str, Set[UserPresenceState]] = {} # run all the callbacks for get_users_for_states and combine the results for callback in self._get_users_for_states_callbacks: try: result = await callback(state_updates) except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue if not isinstance(result, Dict): logger.warning( "Wrong type returned by module API callback %s: %s, expected Dict", callback, result, ) continue for key, new_entries in result.items(): if not isinstance(new_entries, Set): logger.warning( "Wrong type returned by module API callback %s: %s, expected Set", callback, new_entries, ) break users_for_states.setdefault(key, set()).update(new_entries) return users_for_states async def get_interested_users(self, user_id: str) -> Union[Set[str], str]: """ Retrieve a list of users that `user_id` is interested in receiving the presence of. This will be in addition to those they share a room with. Optionally, the object PresenceRouter.ALL_USERS can be returned to indicate that this user should receive all incoming local and remote presence updates. Note that this method will only be called for local users, but can return users that are local or remote. Args: user_id: A user requesting presence updates. Returns: A set of user IDs to return presence updates for, or ALL_USERS to return all known updates. """ # Bail out early if we don't have any callbacks to run. if len(self._get_interested_users_callbacks) == 0: # Don't report any additional interested users return set() interested_users = set() # run all the callbacks for get_interested_users and combine the results for callback in self._get_interested_users_callbacks: try: result = await callback(user_id) except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue # If one of the callbacks returns ALL_USERS then we can stop calling all # of the other callbacks, since the set of interested_users is already as # large as it can possibly be if result == PresenceRouter.ALL_USERS: return PresenceRouter.ALL_USERS if not isinstance(result, Set): logger.warning( "Wrong type returned by module API callback %s: %s, expected set", callback, result, ) continue # Add the new interested users to the set interested_users.update(result) return interested_users synapse-1.53.0/synapse/events/snapshot.py000066400000000000000000000334241420514467300204750ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, List, Optional, Tuple, Union import attr from frozendict import frozendict from twisted.internet.defer import Deferred from synapse.appservice import ApplicationService from synapse.events import EventBase from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.types import JsonDict, StateMap if TYPE_CHECKING: from synapse.storage import Storage from synapse.storage.databases.main import DataStore @attr.s(slots=True, auto_attribs=True) class EventContext: """ Holds information relevant to persisting an event Attributes: rejected: A rejection reason if the event was rejected, else False _state_group: The ID of the state group for this event. Note that state events are persisted with a state group which includes the new event, so this is effectively the state *after* the event in question. For a *rejected* state event, where the state of the rejected event is ignored, this state_group should never make it into the event_to_state_groups table. Indeed, inspecting this value for a rejected state event is almost certainly incorrect. For an outlier, where we don't have the state at the event, this will be None. Note that this is a private attribute: it should be accessed via the ``state_group`` property. state_group_before_event: The ID of the state group representing the state of the room before this event. If this is a non-state event, this will be the same as ``state_group``. If it's a state event, it will be the same as ``prev_group``. If ``state_group`` is None (ie, the event is an outlier), ``state_group_before_event`` will always also be ``None``. prev_group: If it is known, ``state_group``'s prev_group. Note that this being None does not necessarily mean that ``state_group`` does not have a prev_group! If the event is a state event, this is normally the same as ``prev_group``. If ``state_group`` is None (ie, the event is an outlier), ``prev_group`` will always also be ``None``. Note that this *not* (necessarily) the state group associated with ``_prev_state_ids``. delta_ids: If ``prev_group`` is not None, the state delta between ``prev_group`` and ``state_group``. app_service: If this event is being sent by a (local) application service, that app service. _current_state_ids: The room state map, including this event - ie, the state in ``state_group``. (type, state_key) -> event_id For an outlier, this is {} Note that this is a private attribute: it should be accessed via ``get_current_state_ids``. _AsyncEventContext impl calculates this on-demand: it will be None until that happens. _prev_state_ids: The room state map, excluding this event - ie, the state in ``state_group_before_event``. For a non-state event, this will be the same as _current_state_events. Note that it is a completely different thing to prev_group! (type, state_key) -> event_id For an outlier, this is {} As with _current_state_ids, this is a private attribute. It should be accessed via get_prev_state_ids. """ rejected: Union[bool, str] = False _state_group: Optional[int] = None state_group_before_event: Optional[int] = None prev_group: Optional[int] = None delta_ids: Optional[StateMap[str]] = None app_service: Optional[ApplicationService] = None _current_state_ids: Optional[StateMap[str]] = None _prev_state_ids: Optional[StateMap[str]] = None @staticmethod def with_state( state_group: Optional[int], state_group_before_event: Optional[int], current_state_ids: Optional[StateMap[str]], prev_state_ids: Optional[StateMap[str]], prev_group: Optional[int] = None, delta_ids: Optional[StateMap[str]] = None, ) -> "EventContext": return EventContext( current_state_ids=current_state_ids, prev_state_ids=prev_state_ids, state_group=state_group, state_group_before_event=state_group_before_event, prev_group=prev_group, delta_ids=delta_ids, ) @staticmethod def for_outlier() -> "EventContext": """Return an EventContext instance suitable for persisting an outlier event""" return EventContext( current_state_ids={}, prev_state_ids={}, ) async def serialize(self, event: EventBase, store: "DataStore") -> JsonDict: """Converts self to a type that can be serialized as JSON, and then deserialized by `deserialize` Args: event: The event that this context relates to Returns: The serialized event. """ # We don't serialize the full state dicts, instead they get pulled out # of the DB on the other side. However, the other side can't figure out # the prev_state_ids, so if we're a state event we include the event # id that we replaced in the state. if event.is_state(): prev_state_ids = await self.get_prev_state_ids() prev_state_id = prev_state_ids.get((event.type, event.state_key)) else: prev_state_id = None return { "prev_state_id": prev_state_id, "event_type": event.type, "event_state_key": event.get_state_key(), "state_group": self._state_group, "state_group_before_event": self.state_group_before_event, "rejected": self.rejected, "prev_group": self.prev_group, "delta_ids": _encode_state_dict(self.delta_ids), "app_service_id": self.app_service.id if self.app_service else None, } @staticmethod def deserialize(storage: "Storage", input: JsonDict) -> "EventContext": """Converts a dict that was produced by `serialize` back into a EventContext. Args: storage: Used to convert AS ID to AS object and fetch state. input: A dict produced by `serialize` Returns: The event context. """ context = _AsyncEventContextImpl( # We use the state_group and prev_state_id stuff to pull the # current_state_ids out of the DB and construct prev_state_ids. storage=storage, prev_state_id=input["prev_state_id"], event_type=input["event_type"], event_state_key=input["event_state_key"], state_group=input["state_group"], state_group_before_event=input["state_group_before_event"], prev_group=input["prev_group"], delta_ids=_decode_state_dict(input["delta_ids"]), rejected=input["rejected"], ) app_service_id = input["app_service_id"] if app_service_id: context.app_service = storage.main.get_app_service_by_id(app_service_id) return context @property def state_group(self) -> Optional[int]: """The ID of the state group for this event. Note that state events are persisted with a state group which includes the new event, so this is effectively the state *after* the event in question. For an outlier, where we don't have the state at the event, this will be None. It is an error to access this for a rejected event, since rejected state should not make it into the room state. Accessing this property will raise an exception if ``rejected`` is set. """ if self.rejected: raise RuntimeError("Attempt to access state_group of rejected event") return self._state_group async def get_current_state_ids(self) -> Optional[StateMap[str]]: """ Gets the room state map, including this event - ie, the state in ``state_group`` It is an error to access this for a rejected event, since rejected state should not make it into the room state. This method will raise an exception if ``rejected`` is set. Returns: Returns None if state_group is None, which happens when the associated event is an outlier. Maps a (type, state_key) to the event ID of the state event matching this tuple. """ if self.rejected: raise RuntimeError("Attempt to access state_ids of rejected event") await self._ensure_fetched() return self._current_state_ids async def get_prev_state_ids(self) -> StateMap[str]: """ Gets the room state map, excluding this event. For a non-state event, this will be the same as get_current_state_ids(). Returns: Returns {} if state_group is None, which happens when the associated event is an outlier. Maps a (type, state_key) to the event ID of the state event matching this tuple. """ await self._ensure_fetched() # There *should* be previous state IDs now. assert self._prev_state_ids is not None return self._prev_state_ids def get_cached_current_state_ids(self) -> Optional[StateMap[str]]: """Gets the current state IDs if we have them already cached. It is an error to access this for a rejected event, since rejected state should not make it into the room state. This method will raise an exception if ``rejected`` is set. Returns: Returns None if we haven't cached the state or if state_group is None (which happens when the associated event is an outlier). Otherwise, returns the the current state IDs. """ if self.rejected: raise RuntimeError("Attempt to access state_ids of rejected event") return self._current_state_ids async def _ensure_fetched(self) -> None: return None @attr.s(slots=True) class _AsyncEventContextImpl(EventContext): """ An implementation of EventContext which fetches _current_state_ids and _prev_state_ids from the database on demand. Attributes: _storage _fetching_state_deferred: Resolves when *_state_ids have been calculated. None if we haven't started calculating yet _event_type: The type of the event the context is associated with. _event_state_key: The state_key of the event the context is associated with. _prev_state_id: If the event associated with the context is a state event, then `_prev_state_id` is the event_id of the state that was replaced. """ # This needs to have a default as we're inheriting _storage: "Storage" = attr.ib(default=None) _prev_state_id: Optional[str] = attr.ib(default=None) _event_type: str = attr.ib(default=None) _event_state_key: Optional[str] = attr.ib(default=None) _fetching_state_deferred: Optional["Deferred[None]"] = attr.ib(default=None) async def _ensure_fetched(self) -> None: if not self._fetching_state_deferred: self._fetching_state_deferred = run_in_background(self._fill_out_state) await make_deferred_yieldable(self._fetching_state_deferred) async def _fill_out_state(self) -> None: """Called to populate the _current_state_ids and _prev_state_ids attributes by loading from the database. """ if self.state_group is None: # No state group means the event is an outlier. Usually the state_ids dicts are also # pre-set to empty dicts, but they get reset when the context is serialized, so set # them to empty dicts again here. self._current_state_ids = {} self._prev_state_ids = {} return current_state_ids = await self._storage.state.get_state_ids_for_group( self.state_group ) # Set this separately so mypy knows current_state_ids is not None. self._current_state_ids = current_state_ids if self._event_state_key is not None: self._prev_state_ids = dict(current_state_ids) key = (self._event_type, self._event_state_key) if self._prev_state_id: self._prev_state_ids[key] = self._prev_state_id else: self._prev_state_ids.pop(key, None) else: self._prev_state_ids = current_state_ids def _encode_state_dict( state_dict: Optional[StateMap[str]], ) -> Optional[List[Tuple[str, str, str]]]: """Since dicts of (type, state_key) -> event_id cannot be serialized in JSON we need to convert them to a form that can. """ if state_dict is None: return None return [(etype, state_key, v) for (etype, state_key), v in state_dict.items()] def _decode_state_dict( input: Optional[List[Tuple[str, str, str]]] ) -> Optional[StateMap[str]]: """Decodes a state dict encoded using `_encode_state_dict` above""" if input is None: return None return frozendict({(etype, state_key): v for etype, state_key, v in input}) synapse-1.53.0/synapse/events/spamcheck.py000066400000000000000000000432531420514467300205750ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import inspect import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, Dict, List, Optional, Tuple, Union, ) from synapse.rest.media.v1._base import FileInfo from synapse.rest.media.v1.media_storage import ReadableFileWrapper from synapse.spam_checker_api import RegistrationBehaviour from synapse.types import RoomAlias from synapse.util.async_helpers import maybe_awaitable if TYPE_CHECKING: import synapse.events import synapse.server logger = logging.getLogger(__name__) CHECK_EVENT_FOR_SPAM_CALLBACK = Callable[ ["synapse.events.EventBase"], Awaitable[Union[bool, str]], ] USER_MAY_JOIN_ROOM_CALLBACK = Callable[[str, str, bool], Awaitable[bool]] USER_MAY_INVITE_CALLBACK = Callable[[str, str, str], Awaitable[bool]] USER_MAY_SEND_3PID_INVITE_CALLBACK = Callable[[str, str, str, str], Awaitable[bool]] USER_MAY_CREATE_ROOM_CALLBACK = Callable[[str], Awaitable[bool]] USER_MAY_CREATE_ROOM_ALIAS_CALLBACK = Callable[[str, RoomAlias], Awaitable[bool]] USER_MAY_PUBLISH_ROOM_CALLBACK = Callable[[str, str], Awaitable[bool]] CHECK_USERNAME_FOR_SPAM_CALLBACK = Callable[[Dict[str, str]], Awaitable[bool]] LEGACY_CHECK_REGISTRATION_FOR_SPAM_CALLBACK = Callable[ [ Optional[dict], Optional[str], Collection[Tuple[str, str]], ], Awaitable[RegistrationBehaviour], ] CHECK_REGISTRATION_FOR_SPAM_CALLBACK = Callable[ [ Optional[dict], Optional[str], Collection[Tuple[str, str]], Optional[str], ], Awaitable[RegistrationBehaviour], ] CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK = Callable[ [ReadableFileWrapper, FileInfo], Awaitable[bool], ] def load_legacy_spam_checkers(hs: "synapse.server.HomeServer") -> None: """Wrapper that loads spam checkers configured using the old configuration, and registers the spam checker hooks they implement. """ spam_checkers: List[Any] = [] api = hs.get_module_api() for module, config in hs.config.spamchecker.spam_checkers: # Older spam checkers don't accept the `api` argument, so we # try and detect support. spam_args = inspect.getfullargspec(module) if "api" in spam_args.args: spam_checkers.append(module(config=config, api=api)) else: spam_checkers.append(module(config=config)) # The known spam checker hooks. If a spam checker module implements a method # which name appears in this set, we'll want to register it. spam_checker_methods = { "check_event_for_spam", "user_may_invite", "user_may_create_room", "user_may_create_room_alias", "user_may_publish_room", "check_username_for_spam", "check_registration_for_spam", "check_media_file_for_spam", } for spam_checker in spam_checkers: # Methods on legacy spam checkers might not be async, so we wrap them around a # wrapper that will call maybe_awaitable on the result. def async_wrapper(f: Optional[Callable]) -> Optional[Callable[..., Awaitable]]: # f might be None if the callback isn't implemented by the module. In this # case we don't want to register a callback at all so we return None. if f is None: return None wrapped_func = f if f.__name__ == "check_registration_for_spam": checker_args = inspect.signature(f) if len(checker_args.parameters) == 3: # Backwards compatibility; some modules might implement a hook that # doesn't expect a 4th argument. In this case, wrap it in a function # that gives it only 3 arguments and drops the auth_provider_id on # the floor. def wrapper( email_threepid: Optional[dict], username: Optional[str], request_info: Collection[Tuple[str, str]], auth_provider_id: Optional[str], ) -> Union[Awaitable[RegistrationBehaviour], RegistrationBehaviour]: # Assertion required because mypy can't prove we won't # change `f` back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert f is not None return f( email_threepid, username, request_info, ) wrapped_func = wrapper elif len(checker_args.parameters) != 4: raise RuntimeError( "Bad signature for callback check_registration_for_spam", ) def run(*args: Any, **kwargs: Any) -> Awaitable: # Assertion required because mypy can't prove we won't change `f` # back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert wrapped_func is not None return maybe_awaitable(wrapped_func(*args, **kwargs)) return run # Register the hooks through the module API. hooks = { hook: async_wrapper(getattr(spam_checker, hook, None)) for hook in spam_checker_methods } api.register_spam_checker_callbacks(**hooks) class SpamChecker: def __init__(self) -> None: self._check_event_for_spam_callbacks: List[CHECK_EVENT_FOR_SPAM_CALLBACK] = [] self._user_may_join_room_callbacks: List[USER_MAY_JOIN_ROOM_CALLBACK] = [] self._user_may_invite_callbacks: List[USER_MAY_INVITE_CALLBACK] = [] self._user_may_send_3pid_invite_callbacks: List[ USER_MAY_SEND_3PID_INVITE_CALLBACK ] = [] self._user_may_create_room_callbacks: List[USER_MAY_CREATE_ROOM_CALLBACK] = [] self._user_may_create_room_alias_callbacks: List[ USER_MAY_CREATE_ROOM_ALIAS_CALLBACK ] = [] self._user_may_publish_room_callbacks: List[USER_MAY_PUBLISH_ROOM_CALLBACK] = [] self._check_username_for_spam_callbacks: List[ CHECK_USERNAME_FOR_SPAM_CALLBACK ] = [] self._check_registration_for_spam_callbacks: List[ CHECK_REGISTRATION_FOR_SPAM_CALLBACK ] = [] self._check_media_file_for_spam_callbacks: List[ CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK ] = [] def register_callbacks( self, check_event_for_spam: Optional[CHECK_EVENT_FOR_SPAM_CALLBACK] = None, user_may_join_room: Optional[USER_MAY_JOIN_ROOM_CALLBACK] = None, user_may_invite: Optional[USER_MAY_INVITE_CALLBACK] = None, user_may_send_3pid_invite: Optional[USER_MAY_SEND_3PID_INVITE_CALLBACK] = None, user_may_create_room: Optional[USER_MAY_CREATE_ROOM_CALLBACK] = None, user_may_create_room_alias: Optional[ USER_MAY_CREATE_ROOM_ALIAS_CALLBACK ] = None, user_may_publish_room: Optional[USER_MAY_PUBLISH_ROOM_CALLBACK] = None, check_username_for_spam: Optional[CHECK_USERNAME_FOR_SPAM_CALLBACK] = None, check_registration_for_spam: Optional[ CHECK_REGISTRATION_FOR_SPAM_CALLBACK ] = None, check_media_file_for_spam: Optional[CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK] = None, ) -> None: """Register callbacks from module for each hook.""" if check_event_for_spam is not None: self._check_event_for_spam_callbacks.append(check_event_for_spam) if user_may_join_room is not None: self._user_may_join_room_callbacks.append(user_may_join_room) if user_may_invite is not None: self._user_may_invite_callbacks.append(user_may_invite) if user_may_send_3pid_invite is not None: self._user_may_send_3pid_invite_callbacks.append( user_may_send_3pid_invite, ) if user_may_create_room is not None: self._user_may_create_room_callbacks.append(user_may_create_room) if user_may_create_room_alias is not None: self._user_may_create_room_alias_callbacks.append( user_may_create_room_alias, ) if user_may_publish_room is not None: self._user_may_publish_room_callbacks.append(user_may_publish_room) if check_username_for_spam is not None: self._check_username_for_spam_callbacks.append(check_username_for_spam) if check_registration_for_spam is not None: self._check_registration_for_spam_callbacks.append( check_registration_for_spam, ) if check_media_file_for_spam is not None: self._check_media_file_for_spam_callbacks.append(check_media_file_for_spam) async def check_event_for_spam( self, event: "synapse.events.EventBase" ) -> Union[bool, str]: """Checks if a given event is considered "spammy" by this server. If the server considers an event spammy, then it will be rejected if sent by a local user. If it is sent by a user on another server, then users receive a blank event. Args: event: the event to be checked Returns: True or a string if the event is spammy. If a string is returned it will be used as the error message returned to the user. """ for callback in self._check_event_for_spam_callbacks: res: Union[bool, str] = await callback(event) if res: return res return False async def user_may_join_room( self, user_id: str, room_id: str, is_invited: bool ) -> bool: """Checks if a given users is allowed to join a room. Not called when a user creates a room. Args: userid: The ID of the user wanting to join the room room_id: The ID of the room the user wants to join is_invited: Whether the user is invited into the room Returns: Whether the user may join the room """ for callback in self._user_may_join_room_callbacks: if await callback(user_id, room_id, is_invited) is False: return False return True async def user_may_invite( self, inviter_userid: str, invitee_userid: str, room_id: str ) -> bool: """Checks if a given user may send an invite If this method returns false, the invite will be rejected. Args: inviter_userid: The user ID of the sender of the invitation invitee_userid: The user ID targeted in the invitation room_id: The room ID Returns: True if the user may send an invite, otherwise False """ for callback in self._user_may_invite_callbacks: if await callback(inviter_userid, invitee_userid, room_id) is False: return False return True async def user_may_send_3pid_invite( self, inviter_userid: str, medium: str, address: str, room_id: str ) -> bool: """Checks if a given user may invite a given threepid into the room If this method returns false, the threepid invite will be rejected. Note that if the threepid is already associated with a Matrix user ID, Synapse will call user_may_invite with said user ID instead. Args: inviter_userid: The user ID of the sender of the invitation medium: The 3PID's medium (e.g. "email") address: The 3PID's address (e.g. "alice@example.com") room_id: The room ID Returns: True if the user may send the invite, otherwise False """ for callback in self._user_may_send_3pid_invite_callbacks: if await callback(inviter_userid, medium, address, room_id) is False: return False return True async def user_may_create_room(self, userid: str) -> bool: """Checks if a given user may create a room If this method returns false, the creation request will be rejected. Args: userid: The ID of the user attempting to create a room Returns: True if the user may create a room, otherwise False """ for callback in self._user_may_create_room_callbacks: if await callback(userid) is False: return False return True async def user_may_create_room_alias( self, userid: str, room_alias: RoomAlias ) -> bool: """Checks if a given user may create a room alias If this method returns false, the association request will be rejected. Args: userid: The ID of the user attempting to create a room alias room_alias: The alias to be created Returns: True if the user may create a room alias, otherwise False """ for callback in self._user_may_create_room_alias_callbacks: if await callback(userid, room_alias) is False: return False return True async def user_may_publish_room(self, userid: str, room_id: str) -> bool: """Checks if a given user may publish a room to the directory If this method returns false, the publish request will be rejected. Args: userid: The user ID attempting to publish the room room_id: The ID of the room that would be published Returns: True if the user may publish the room, otherwise False """ for callback in self._user_may_publish_room_callbacks: if await callback(userid, room_id) is False: return False return True async def check_username_for_spam(self, user_profile: Dict[str, str]) -> bool: """Checks if a user ID or display name are considered "spammy" by this server. If the server considers a username spammy, then it will not be included in user directory results. Args: user_profile: The user information to check, it contains the keys: * user_id * display_name * avatar_url Returns: True if the user is spammy. """ for callback in self._check_username_for_spam_callbacks: # Make a copy of the user profile object to ensure the spam checker cannot # modify it. if await callback(user_profile.copy()): return True return False async def check_registration_for_spam( self, email_threepid: Optional[dict], username: Optional[str], request_info: Collection[Tuple[str, str]], auth_provider_id: Optional[str] = None, ) -> RegistrationBehaviour: """Checks if we should allow the given registration request. Args: email_threepid: The email threepid used for registering, if any username: The request user name, if any request_info: List of tuples of user agent and IP that were used during the registration process. auth_provider_id: The SSO IdP the user used, e.g "oidc", "saml", "cas". If any. Note this does not include users registered via a password provider. Returns: Enum for how the request should be handled """ for callback in self._check_registration_for_spam_callbacks: behaviour = await ( callback(email_threepid, username, request_info, auth_provider_id) ) assert isinstance(behaviour, RegistrationBehaviour) if behaviour != RegistrationBehaviour.ALLOW: return behaviour return RegistrationBehaviour.ALLOW async def check_media_file_for_spam( self, file_wrapper: ReadableFileWrapper, file_info: FileInfo ) -> bool: """Checks if a piece of newly uploaded media should be blocked. This will be called for local uploads, downloads of remote media, each thumbnail generated for those, and web pages/images used for URL previews. Note that care should be taken to not do blocking IO operations in the main thread. For example, to get the contents of a file a module should do:: async def check_media_file_for_spam( self, file: ReadableFileWrapper, file_info: FileInfo ) -> bool: buffer = BytesIO() await file.write_chunks_to(buffer.write) if buffer.getvalue() == b"Hello World": return True return False Args: file: An object that allows reading the contents of the media. file_info: Metadata about the file. Returns: True if the media should be blocked or False if it should be allowed. """ for callback in self._check_media_file_for_spam_callbacks: spam = await callback(file_wrapper, file_info) if spam: return True return False synapse-1.53.0/synapse/events/third_party_rules.py000066400000000000000000000345071420514467300224040ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Awaitable, Callable, List, Optional, Tuple from synapse.api.errors import ModuleFailedException, SynapseError from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.types import Requester, StateMap from synapse.util.async_helpers import maybe_awaitable if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) CHECK_EVENT_ALLOWED_CALLBACK = Callable[ [EventBase, StateMap[EventBase]], Awaitable[Tuple[bool, Optional[dict]]] ] ON_CREATE_ROOM_CALLBACK = Callable[[Requester, dict, bool], Awaitable] CHECK_THREEPID_CAN_BE_INVITED_CALLBACK = Callable[ [str, str, StateMap[EventBase]], Awaitable[bool] ] CHECK_VISIBILITY_CAN_BE_MODIFIED_CALLBACK = Callable[ [str, StateMap[EventBase], str], Awaitable[bool] ] ON_NEW_EVENT_CALLBACK = Callable[[EventBase, StateMap[EventBase]], Awaitable] def load_legacy_third_party_event_rules(hs: "HomeServer") -> None: """Wrapper that loads a third party event rules module configured using the old configuration, and registers the hooks they implement. """ if hs.config.thirdpartyrules.third_party_event_rules is None: return module, config = hs.config.thirdpartyrules.third_party_event_rules api = hs.get_module_api() third_party_rules = module(config=config, module_api=api) # The known hooks. If a module implements a method which name appears in this set, # we'll want to register it. third_party_event_rules_methods = { "check_event_allowed", "on_create_room", "check_threepid_can_be_invited", "check_visibility_can_be_modified", } def async_wrapper(f: Optional[Callable]) -> Optional[Callable[..., Awaitable]]: # f might be None if the callback isn't implemented by the module. In this # case we don't want to register a callback at all so we return None. if f is None: return None # We return a separate wrapper for these methods because, in order to wrap them # correctly, we need to await its result. Therefore it doesn't make a lot of # sense to make it go through the run() wrapper. if f.__name__ == "check_event_allowed": # We need to wrap check_event_allowed because its old form would return either # a boolean or a dict, but now we want to return the dict separately from the # boolean. async def wrap_check_event_allowed( event: EventBase, state_events: StateMap[EventBase], ) -> Tuple[bool, Optional[dict]]: # Assertion required because mypy can't prove we won't change # `f` back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert f is not None res = await f(event, state_events) if isinstance(res, dict): return True, res else: return res, None return wrap_check_event_allowed if f.__name__ == "on_create_room": # We need to wrap on_create_room because its old form would return a boolean # if the room creation is denied, but now we just want it to raise an # exception. async def wrap_on_create_room( requester: Requester, config: dict, is_requester_admin: bool ) -> None: # Assertion required because mypy can't prove we won't change # `f` back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert f is not None res = await f(requester, config, is_requester_admin) if res is False: raise SynapseError( 403, "Room creation forbidden with these parameters", ) return wrap_on_create_room def run(*args: Any, **kwargs: Any) -> Awaitable: # Assertion required because mypy can't prove we won't change `f` # back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert f is not None return maybe_awaitable(f(*args, **kwargs)) return run # Register the hooks through the module API. hooks = { hook: async_wrapper(getattr(third_party_rules, hook, None)) for hook in third_party_event_rules_methods } api.register_third_party_rules_callbacks(**hooks) class ThirdPartyEventRules: """Allows server admins to provide a Python module implementing an extra set of rules to apply when processing events. This is designed to help admins of closed federations with enforcing custom behaviours. """ def __init__(self, hs: "HomeServer"): self.third_party_rules = None self.store = hs.get_datastore() self._check_event_allowed_callbacks: List[CHECK_EVENT_ALLOWED_CALLBACK] = [] self._on_create_room_callbacks: List[ON_CREATE_ROOM_CALLBACK] = [] self._check_threepid_can_be_invited_callbacks: List[ CHECK_THREEPID_CAN_BE_INVITED_CALLBACK ] = [] self._check_visibility_can_be_modified_callbacks: List[ CHECK_VISIBILITY_CAN_BE_MODIFIED_CALLBACK ] = [] self._on_new_event_callbacks: List[ON_NEW_EVENT_CALLBACK] = [] def register_third_party_rules_callbacks( self, check_event_allowed: Optional[CHECK_EVENT_ALLOWED_CALLBACK] = None, on_create_room: Optional[ON_CREATE_ROOM_CALLBACK] = None, check_threepid_can_be_invited: Optional[ CHECK_THREEPID_CAN_BE_INVITED_CALLBACK ] = None, check_visibility_can_be_modified: Optional[ CHECK_VISIBILITY_CAN_BE_MODIFIED_CALLBACK ] = None, on_new_event: Optional[ON_NEW_EVENT_CALLBACK] = None, ) -> None: """Register callbacks from modules for each hook.""" if check_event_allowed is not None: self._check_event_allowed_callbacks.append(check_event_allowed) if on_create_room is not None: self._on_create_room_callbacks.append(on_create_room) if check_threepid_can_be_invited is not None: self._check_threepid_can_be_invited_callbacks.append( check_threepid_can_be_invited, ) if check_visibility_can_be_modified is not None: self._check_visibility_can_be_modified_callbacks.append( check_visibility_can_be_modified, ) if on_new_event is not None: self._on_new_event_callbacks.append(on_new_event) async def check_event_allowed( self, event: EventBase, context: EventContext ) -> Tuple[bool, Optional[dict]]: """Check if a provided event should be allowed in the given context. The module can return: * True: the event is allowed. * False: the event is not allowed, and should be rejected with M_FORBIDDEN. If the event is allowed, the module can also return a dictionary to use as a replacement for the event. Args: event: The event to be checked. context: The context of the event. Returns: The result from the ThirdPartyRules module, as above. """ # Bail out early without hitting the store if we don't have any callbacks to run. if len(self._check_event_allowed_callbacks) == 0: return True, None prev_state_ids = await context.get_prev_state_ids() # Retrieve the state events from the database. events = await self.store.get_events(prev_state_ids.values()) state_events = {(ev.type, ev.state_key): ev for ev in events.values()} # Ensure that the event is frozen, to make sure that the module is not tempted # to try to modify it. Any attempt to modify it at this point will invalidate # the hashes and signatures. event.freeze() for callback in self._check_event_allowed_callbacks: try: res, replacement_data = await callback(event, state_events) except SynapseError as e: # FIXME: Being able to throw SynapseErrors is relied upon by # some modules. PR #10386 accidentally broke this ability. # That said, we aren't keen on exposing this implementation detail # to modules and we should one day have a proper way to do what # is wanted. # This module callback needs a rework so that hacks such as # this one are not necessary. raise e except Exception: raise ModuleFailedException( "Failed to run `check_event_allowed` module API callback" ) # Return if the event shouldn't be allowed or if the module came up with a # replacement dict for the event. if res is False: return res, None elif isinstance(replacement_data, dict): return True, replacement_data return True, None async def on_create_room( self, requester: Requester, config: dict, is_requester_admin: bool ) -> None: """Intercept requests to create room to maybe deny it (via an exception) or update the request config. Args: requester config: The creation config from the client. is_requester_admin: If the requester is an admin """ for callback in self._on_create_room_callbacks: try: await callback(requester, config, is_requester_admin) except Exception as e: # Don't silence the errors raised by this callback since we expect it to # raise an exception to deny the creation of the room; instead make sure # it's a SynapseError we can send to clients. if not isinstance(e, SynapseError): e = SynapseError( 403, "Room creation forbidden with these parameters" ) raise e async def check_threepid_can_be_invited( self, medium: str, address: str, room_id: str ) -> bool: """Check if a provided 3PID can be invited in the given room. Args: medium: The 3PID's medium. address: The 3PID's address. room_id: The room we want to invite the threepid to. Returns: True if the 3PID can be invited, False if not. """ # Bail out early without hitting the store if we don't have any callbacks to run. if len(self._check_threepid_can_be_invited_callbacks) == 0: return True state_events = await self._get_state_map_for_room(room_id) for callback in self._check_threepid_can_be_invited_callbacks: try: if await callback(medium, address, state_events) is False: return False except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) return True async def check_visibility_can_be_modified( self, room_id: str, new_visibility: str ) -> bool: """Check if a room is allowed to be published to, or removed from, the public room list. Args: room_id: The ID of the room. new_visibility: The new visibility state. Either "public" or "private". Returns: True if the room's visibility can be modified, False if not. """ # Bail out early without hitting the store if we don't have any callback if len(self._check_visibility_can_be_modified_callbacks) == 0: return True state_events = await self._get_state_map_for_room(room_id) for callback in self._check_visibility_can_be_modified_callbacks: try: if await callback(room_id, state_events, new_visibility) is False: return False except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) return True async def on_new_event(self, event_id: str) -> None: """Let modules act on events after they've been sent (e.g. auto-accepting invites, etc.) Args: event_id: The ID of the event. Raises: ModuleFailureError if a callback raised any exception. """ # Bail out early without hitting the store if we don't have any callbacks if len(self._on_new_event_callbacks) == 0: return event = await self.store.get_event(event_id) state_events = await self._get_state_map_for_room(event.room_id) for callback in self._on_new_event_callbacks: try: await callback(event, state_events) except Exception as e: logger.exception( "Failed to run module API callback %s: %s", callback, e ) async def _get_state_map_for_room(self, room_id: str) -> StateMap[EventBase]: """Given a room ID, return the state events of that room. Args: room_id: The ID of the room. Returns: A dict mapping (event type, state key) to state event. """ state_ids = await self.store.get_filtered_current_state_ids(room_id) room_state_events = await self.store.get_events(state_ids.values()) state_events = {} for key, event_id in state_ids.items(): state_events[key] = room_state_events[event_id] return state_events synapse-1.53.0/synapse/events/utils.py000066400000000000000000000461301420514467300177740ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import collections.abc import re from typing import ( TYPE_CHECKING, Any, Callable, Dict, Iterable, List, Mapping, Optional, Union, ) from frozendict import frozendict from synapse.api.constants import EventContentFields, EventTypes, RelationTypes from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersion from synapse.types import JsonDict from synapse.util.frozenutils import unfreeze from . import EventBase if TYPE_CHECKING: from synapse.storage.databases.main.relations import BundledAggregations # Split strings on "." but not "\." This uses a negative lookbehind assertion for '\' # (? EventBase: """Returns a pruned version of the given event, which removes all keys we don't know about or think could potentially be dodgy. This is used when we "redact" an event. We want to remove all fields that the user has specified, but we do want to keep necessary information like type, state_key etc. """ pruned_event_dict = prune_event_dict(event.room_version, event.get_dict()) from . import make_event_from_dict pruned_event = make_event_from_dict( pruned_event_dict, event.room_version, event.internal_metadata.get_dict() ) # copy the internal fields pruned_event.internal_metadata.stream_ordering = ( event.internal_metadata.stream_ordering ) pruned_event.internal_metadata.outlier = event.internal_metadata.outlier # Mark the event as redacted pruned_event.internal_metadata.redacted = True return pruned_event def prune_event_dict(room_version: RoomVersion, event_dict: JsonDict) -> JsonDict: """Redacts the event_dict in the same way as `prune_event`, except it operates on dicts rather than event objects Returns: A copy of the pruned event dict """ allowed_keys = [ "event_id", "sender", "room_id", "hashes", "signatures", "content", "type", "state_key", "depth", "prev_events", "auth_events", "origin", "origin_server_ts", ] # Room versions from before MSC2176 had additional allowed keys. if not room_version.msc2176_redaction_rules: allowed_keys.extend(["prev_state", "membership"]) event_type = event_dict["type"] new_content = {} def add_fields(*fields: str) -> None: for field in fields: if field in event_dict["content"]: new_content[field] = event_dict["content"][field] if event_type == EventTypes.Member: add_fields("membership") if room_version.msc3375_redaction_rules: add_fields(EventContentFields.AUTHORISING_USER) elif event_type == EventTypes.Create: # MSC2176 rules state that create events cannot be redacted. if room_version.msc2176_redaction_rules: return event_dict add_fields("creator") elif event_type == EventTypes.JoinRules: add_fields("join_rule") if room_version.msc3083_join_rules: add_fields("allow") elif event_type == EventTypes.PowerLevels: add_fields( "users", "users_default", "events", "events_default", "state_default", "ban", "kick", "redact", ) if room_version.msc2176_redaction_rules: add_fields("invite") if room_version.msc2716_historical: add_fields("historical") elif event_type == EventTypes.Aliases and room_version.special_case_aliases_auth: add_fields("aliases") elif event_type == EventTypes.RoomHistoryVisibility: add_fields("history_visibility") elif event_type == EventTypes.Redaction and room_version.msc2176_redaction_rules: add_fields("redacts") elif room_version.msc2716_redactions and event_type == EventTypes.MSC2716_INSERTION: add_fields(EventContentFields.MSC2716_NEXT_BATCH_ID) elif room_version.msc2716_redactions and event_type == EventTypes.MSC2716_BATCH: add_fields(EventContentFields.MSC2716_BATCH_ID) elif room_version.msc2716_redactions and event_type == EventTypes.MSC2716_MARKER: add_fields(EventContentFields.MSC2716_MARKER_INSERTION) allowed_fields = {k: v for k, v in event_dict.items() if k in allowed_keys} allowed_fields["content"] = new_content unsigned: JsonDict = {} allowed_fields["unsigned"] = unsigned event_unsigned = event_dict.get("unsigned", {}) if "age_ts" in event_unsigned: unsigned["age_ts"] = event_unsigned["age_ts"] if "replaces_state" in event_unsigned: unsigned["replaces_state"] = event_unsigned["replaces_state"] return allowed_fields def _copy_field(src: JsonDict, dst: JsonDict, field: List[str]) -> None: """Copy the field in 'src' to 'dst'. For example, if src={"foo":{"bar":5}} and dst={}, and field=["foo","bar"] then dst={"foo":{"bar":5}}. Args: src: The dict to read from. dst: The dict to modify. field: List of keys to drill down to in 'src'. """ if len(field) == 0: # this should be impossible return if len(field) == 1: # common case e.g. 'origin_server_ts' if field[0] in src: dst[field[0]] = src[field[0]] return # Else is a nested field e.g. 'content.body' # Pop the last field as that's the key to move across and we need the # parent dict in order to access the data. Drill down to the right dict. key_to_move = field.pop(-1) sub_dict = src for sub_field in field: # e.g. sub_field => "content" if sub_field in sub_dict and type(sub_dict[sub_field]) in [dict, frozendict]: sub_dict = sub_dict[sub_field] else: return if key_to_move not in sub_dict: return # Insert the key into the output dictionary, creating nested objects # as required. We couldn't do this any earlier or else we'd need to delete # the empty objects if the key didn't exist. sub_out_dict = dst for sub_field in field: sub_out_dict = sub_out_dict.setdefault(sub_field, {}) sub_out_dict[key_to_move] = sub_dict[key_to_move] def only_fields(dictionary: JsonDict, fields: List[str]) -> JsonDict: """Return a new dict with only the fields in 'dictionary' which are present in 'fields'. If there are no event fields specified then all fields are included. The entries may include '.' characters to indicate sub-fields. So ['content.body'] will include the 'body' field of the 'content' object. A literal '.' character in a field name may be escaped using a '\'. Args: dictionary: The dictionary to read from. fields: A list of fields to copy over. Only shallow refs are taken. Returns: A new dictionary with only the given fields. If fields was empty, the same dictionary is returned. """ if len(fields) == 0: return dictionary # for each field, convert it: # ["content.body.thing\.with\.dots"] => [["content", "body", "thing\.with\.dots"]] split_fields = [SPLIT_FIELD_REGEX.split(f) for f in fields] # for each element of the output array of arrays: # remove escaping so we can use the right key names. split_fields[:] = [ [f.replace(r"\.", r".") for f in field_array] for field_array in split_fields ] output: JsonDict = {} for field_array in split_fields: _copy_field(dictionary, output, field_array) return output def format_event_raw(d: JsonDict) -> JsonDict: return d def format_event_for_client_v1(d: JsonDict) -> JsonDict: d = format_event_for_client_v2(d) sender = d.get("sender") if sender is not None: d["user_id"] = sender copy_keys = ( "age", "redacted_because", "replaces_state", "prev_content", "invite_room_state", "knock_room_state", ) for key in copy_keys: if key in d["unsigned"]: d[key] = d["unsigned"][key] return d def format_event_for_client_v2(d: JsonDict) -> JsonDict: drop_keys = ( "auth_events", "prev_events", "hashes", "signatures", "depth", "origin", "prev_state", ) for key in drop_keys: d.pop(key, None) return d def format_event_for_client_v2_without_room_id(d: JsonDict) -> JsonDict: d = format_event_for_client_v2(d) d.pop("room_id", None) return d def serialize_event( e: Union[JsonDict, EventBase], time_now_ms: int, *, as_client_event: bool = True, event_format: Callable[[JsonDict], JsonDict] = format_event_for_client_v1, token_id: Optional[str] = None, only_event_fields: Optional[List[str]] = None, include_stripped_room_state: bool = False, ) -> JsonDict: """Serialize event for clients Args: e time_now_ms as_client_event event_format token_id only_event_fields include_stripped_room_state: Some events can have stripped room state stored in the `unsigned` field. This is required for invite and knock functionality. If this option is False, that state will be removed from the event before it is returned. Otherwise, it will be kept. Returns: The serialized event dictionary. """ # FIXME(erikj): To handle the case of presence events and the like if not isinstance(e, EventBase): return e time_now_ms = int(time_now_ms) # Should this strip out None's? d = {k: v for k, v in e.get_dict().items()} d["event_id"] = e.event_id if "age_ts" in d["unsigned"]: d["unsigned"]["age"] = time_now_ms - d["unsigned"]["age_ts"] del d["unsigned"]["age_ts"] if "redacted_because" in e.unsigned: d["unsigned"]["redacted_because"] = serialize_event( e.unsigned["redacted_because"], time_now_ms, event_format=event_format ) if token_id is not None: if token_id == getattr(e.internal_metadata, "token_id", None): txn_id = getattr(e.internal_metadata, "txn_id", None) if txn_id is not None: d["unsigned"]["transaction_id"] = txn_id # invite_room_state and knock_room_state are a list of stripped room state events # that are meant to provide metadata about a room to an invitee/knocker. They are # intended to only be included in specific circumstances, such as down sync, and # should not be included in any other case. if not include_stripped_room_state: d["unsigned"].pop("invite_room_state", None) d["unsigned"].pop("knock_room_state", None) if as_client_event: d = event_format(d) if only_event_fields: if not isinstance(only_event_fields, list) or not all( isinstance(f, str) for f in only_event_fields ): raise TypeError("only_event_fields must be a list of strings") d = only_fields(d, only_event_fields) return d class EventClientSerializer: """Serializes events that are to be sent to clients. This is used for bundling extra information with any events to be sent to clients. """ def serialize_event( self, event: Union[JsonDict, EventBase], time_now: int, *, bundle_aggregations: Optional[Dict[str, "BundledAggregations"]] = None, **kwargs: Any, ) -> JsonDict: """Serializes a single event. Args: event: The event being serialized. time_now: The current time in milliseconds bundle_aggregations: Whether to include the bundled aggregations for this event. Only applies to non-state events. (State events never include bundled aggregations.) **kwargs: Arguments to pass to `serialize_event` Returns: The serialized event """ # To handle the case of presence events and the like if not isinstance(event, EventBase): return event serialized_event = serialize_event(event, time_now, **kwargs) # Check if there are any bundled aggregations to include with the event. if bundle_aggregations: event_aggregations = bundle_aggregations.get(event.event_id) if event_aggregations: self._inject_bundled_aggregations( event, time_now, bundle_aggregations[event.event_id], serialized_event, ) return serialized_event def _inject_bundled_aggregations( self, event: EventBase, time_now: int, aggregations: "BundledAggregations", serialized_event: JsonDict, ) -> None: """Potentially injects bundled aggregations into the unsigned portion of the serialized event. Args: event: The event being serialized. time_now: The current time in milliseconds aggregations: The bundled aggregation to serialize. serialized_event: The serialized event which may be modified. """ serialized_aggregations = {} if aggregations.annotations: serialized_aggregations[RelationTypes.ANNOTATION] = aggregations.annotations if aggregations.references: serialized_aggregations[RelationTypes.REFERENCE] = aggregations.references if aggregations.replace: # If there is an edit replace the content, preserving existing # relations. edit = aggregations.replace # Ensure we take copies of the edit content, otherwise we risk modifying # the original event. edit_content = edit.content.copy() # Unfreeze the event content if necessary, so that we may modify it below edit_content = unfreeze(edit_content) serialized_event["content"] = edit_content.get("m.new_content", {}) # Check for existing relations relates_to = event.content.get("m.relates_to") if relates_to: # Keep the relations, ensuring we use a dict copy of the original serialized_event["content"]["m.relates_to"] = relates_to.copy() else: serialized_event["content"].pop("m.relates_to", None) serialized_aggregations[RelationTypes.REPLACE] = { "event_id": edit.event_id, "origin_server_ts": edit.origin_server_ts, "sender": edit.sender, } # If this event is the start of a thread, include a summary of the replies. if aggregations.thread: serialized_aggregations[RelationTypes.THREAD] = { # Don't bundle aggregations as this could recurse forever. "latest_event": self.serialize_event( aggregations.thread.latest_event, time_now, bundle_aggregations=None ), "count": aggregations.thread.count, "current_user_participated": aggregations.thread.current_user_participated, } # Include the bundled aggregations in the event. if serialized_aggregations: serialized_event["unsigned"].setdefault("m.relations", {}).update( serialized_aggregations ) def serialize_events( self, events: Iterable[Union[JsonDict, EventBase]], time_now: int, **kwargs: Any ) -> List[JsonDict]: """Serializes multiple events. Args: event time_now: The current time in milliseconds **kwargs: Arguments to pass to `serialize_event` Returns: The list of serialized events """ return [ self.serialize_event(event, time_now=time_now, **kwargs) for event in events ] def copy_power_levels_contents( old_power_levels: Mapping[str, Union[int, Mapping[str, int]]] ) -> Dict[str, Union[int, Dict[str, int]]]: """Copy the content of a power_levels event, unfreezing frozendicts along the way Raises: TypeError if the input does not look like a valid power levels event content """ if not isinstance(old_power_levels, collections.abc.Mapping): raise TypeError("Not a valid power-levels content: %r" % (old_power_levels,)) power_levels: Dict[str, Union[int, Dict[str, int]]] = {} for k, v in old_power_levels.items(): if isinstance(v, int): power_levels[k] = v continue if isinstance(v, collections.abc.Mapping): h: Dict[str, int] = {} power_levels[k] = h for k1, v1 in v.items(): # we should only have one level of nesting if not isinstance(v1, int): raise TypeError( "Invalid power_levels value for %s.%s: %r" % (k, k1, v1) ) h[k1] = v1 continue raise TypeError("Invalid power_levels value for %s: %r" % (k, v)) return power_levels def validate_canonicaljson(value: Any) -> None: """ Ensure that the JSON object is valid according to the rules of canonical JSON. See the appendix section 3.1: Canonical JSON. This rejects JSON that has: * An integer outside the range of [-2 ^ 53 + 1, 2 ^ 53 - 1] * Floats * NaN, Infinity, -Infinity """ if isinstance(value, int): if value < CANONICALJSON_MIN_INT or CANONICALJSON_MAX_INT < value: raise SynapseError(400, "JSON integer out of range", Codes.BAD_JSON) elif isinstance(value, float): # Note that Infinity, -Infinity, and NaN are also considered floats. raise SynapseError(400, "Bad JSON value: float", Codes.BAD_JSON) elif isinstance(value, (dict, frozendict)): for v in value.values(): validate_canonicaljson(v) elif isinstance(value, (list, tuple)): for i in value: validate_canonicaljson(i) elif not isinstance(value, (bool, str)) and value is not None: # Other potential JSON values (bool, None, str) are safe. raise SynapseError(400, "Unknown JSON value", Codes.BAD_JSON) synapse-1.53.0/synapse/events/validator.py000066400000000000000000000232121420514467300206150ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import collections.abc from typing import Iterable, Type, Union import jsonschema from synapse.api.constants import MAX_ALIAS_LENGTH, EventTypes, Membership from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import EventFormatVersions from synapse.config.homeserver import HomeServerConfig from synapse.events import EventBase from synapse.events.builder import EventBuilder from synapse.events.utils import ( CANONICALJSON_MAX_INT, CANONICALJSON_MIN_INT, validate_canonicaljson, ) from synapse.federation.federation_server import server_matches_acl_event from synapse.types import EventID, JsonDict, RoomID, UserID class EventValidator: def validate_new(self, event: EventBase, config: HomeServerConfig) -> None: """Validates the event has roughly the right format Args: event: The event to validate. config: The homeserver's configuration. """ self.validate_builder(event) if event.format_version == EventFormatVersions.V1: EventID.from_string(event.event_id) required = [ "auth_events", "content", "hashes", "origin", "prev_events", "sender", "type", ] for k in required: if k not in event: raise SynapseError(400, "Event does not have key %s" % (k,)) # Check that the following keys have string values event_strings = ["origin"] for s in event_strings: if not isinstance(getattr(event, s), str): raise SynapseError(400, "'%s' not a string type" % (s,)) # Depending on the room version, ensure the data is spec compliant JSON. if event.room_version.strict_canonicaljson: # Note that only the client controlled portion of the event is # checked, since we trust the portions of the event we created. validate_canonicaljson(event.content) if event.type == EventTypes.Aliases: if "aliases" in event.content: for alias in event.content["aliases"]: if len(alias) > MAX_ALIAS_LENGTH: raise SynapseError( 400, ( "Can't create aliases longer than" " %d characters" % (MAX_ALIAS_LENGTH,) ), Codes.INVALID_PARAM, ) if event.type == EventTypes.Retention: self._validate_retention(event) if event.type == EventTypes.ServerACL: if not server_matches_acl_event(config.server.server_name, event): raise SynapseError( 400, "Can't create an ACL event that denies the local server" ) if event.type == EventTypes.PowerLevels: try: jsonschema.validate( instance=event.content, schema=POWER_LEVELS_SCHEMA, cls=plValidator, ) except jsonschema.ValidationError as e: if e.path: # example: "users_default": '0' is not of type 'integer' message = '"' + e.path[-1] + '": ' + e.message # noqa: B306 # jsonschema.ValidationError.message is a valid attribute else: # example: '0' is not of type 'integer' message = e.message # noqa: B306 # jsonschema.ValidationError.message is a valid attribute raise SynapseError( code=400, msg=message, errcode=Codes.BAD_JSON, ) def _validate_retention(self, event: EventBase) -> None: """Checks that an event that defines the retention policy for a room respects the format enforced by the spec. Args: event: The event to validate. """ if not event.is_state(): raise SynapseError(code=400, msg="must be a state event") min_lifetime = event.content.get("min_lifetime") max_lifetime = event.content.get("max_lifetime") if min_lifetime is not None: if not isinstance(min_lifetime, int): raise SynapseError( code=400, msg="'min_lifetime' must be an integer", errcode=Codes.BAD_JSON, ) if max_lifetime is not None: if not isinstance(max_lifetime, int): raise SynapseError( code=400, msg="'max_lifetime' must be an integer", errcode=Codes.BAD_JSON, ) if ( min_lifetime is not None and max_lifetime is not None and min_lifetime > max_lifetime ): raise SynapseError( code=400, msg="'min_lifetime' can't be greater than 'max_lifetime", errcode=Codes.BAD_JSON, ) def validate_builder(self, event: Union[EventBase, EventBuilder]) -> None: """Validates that the builder/event has roughly the right format. Only checks values that we expect a proto event to have, rather than all the fields an event would have """ strings = ["room_id", "sender", "type"] if hasattr(event, "state_key"): strings.append("state_key") for s in strings: if not isinstance(getattr(event, s), str): raise SynapseError(400, "Not '%s' a string type" % (s,)) RoomID.from_string(event.room_id) UserID.from_string(event.sender) if event.type == EventTypes.Message: strings = ["body", "msgtype"] self._ensure_strings(event.content, strings) elif event.type == EventTypes.Topic: self._ensure_strings(event.content, ["topic"]) self._ensure_state_event(event) elif event.type == EventTypes.Name: self._ensure_strings(event.content, ["name"]) self._ensure_state_event(event) elif event.type == EventTypes.Member: if "membership" not in event.content: raise SynapseError(400, "Content has not membership key") if event.content["membership"] not in Membership.LIST: raise SynapseError(400, "Invalid membership key") self._ensure_state_event(event) elif event.type == EventTypes.Tombstone: if "replacement_room" not in event.content: raise SynapseError(400, "Content has no replacement_room key") if event.content["replacement_room"] == event.room_id: raise SynapseError( 400, "Tombstone cannot reference the room it was sent in" ) self._ensure_state_event(event) def _ensure_strings(self, d: JsonDict, keys: Iterable[str]) -> None: for s in keys: if s not in d: raise SynapseError(400, "'%s' not in content" % (s,)) if not isinstance(d[s], str): raise SynapseError(400, "'%s' not a string type" % (s,)) def _ensure_state_event(self, event: Union[EventBase, EventBuilder]) -> None: if not event.is_state(): raise SynapseError(400, "'%s' must be state events" % (event.type,)) POWER_LEVELS_SCHEMA = { "type": "object", "properties": { "ban": {"$ref": "#/definitions/int"}, "events": {"$ref": "#/definitions/objectOfInts"}, "events_default": {"$ref": "#/definitions/int"}, "invite": {"$ref": "#/definitions/int"}, "kick": {"$ref": "#/definitions/int"}, "notifications": {"$ref": "#/definitions/objectOfInts"}, "redact": {"$ref": "#/definitions/int"}, "state_default": {"$ref": "#/definitions/int"}, "users": {"$ref": "#/definitions/objectOfInts"}, "users_default": {"$ref": "#/definitions/int"}, }, "definitions": { "int": { "type": "integer", "minimum": CANONICALJSON_MIN_INT, "maximum": CANONICALJSON_MAX_INT, }, "objectOfInts": { "type": "object", "additionalProperties": {"$ref": "#/definitions/int"}, }, }, } # This could return something newer than Draft 7, but that's the current "latest" # validator. def _create_power_level_validator() -> Type[jsonschema.Draft7Validator]: validator = jsonschema.validators.validator_for(POWER_LEVELS_SCHEMA) # by default jsonschema does not consider a frozendict to be an object so # we need to use a custom type checker # https://python-jsonschema.readthedocs.io/en/stable/validate/?highlight=object#validating-with-additional-types type_checker = validator.TYPE_CHECKER.redefine( "object", lambda checker, thing: isinstance(thing, collections.abc.Mapping) ) return jsonschema.validators.extend(validator, type_checker=type_checker) plValidator = _create_power_level_validator() synapse-1.53.0/synapse/federation/000077500000000000000000000000001420514467300170725ustar00rootroot00000000000000synapse-1.53.0/synapse/federation/__init__.py000066400000000000000000000012111420514467300211760ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This package includes all the federation specific logic. """ synapse-1.53.0/synapse/federation/federation_base.py000066400000000000000000000243311420514467300225610ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING from synapse.api.constants import MAX_DEPTH, EventContentFields, EventTypes, Membership from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import EventFormatVersions, RoomVersion from synapse.crypto.event_signing import check_event_content_hash from synapse.crypto.keyring import Keyring from synapse.events import EventBase, make_event_from_dict from synapse.events.utils import prune_event, validate_canonicaljson from synapse.http.servlet import assert_params_in_dict from synapse.types import JsonDict, get_domain_from_id if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class FederationBase: def __init__(self, hs: "HomeServer"): self.hs = hs self.server_name = hs.hostname self.keyring = hs.get_keyring() self.spam_checker = hs.get_spam_checker() self.store = hs.get_datastore() self._clock = hs.get_clock() async def _check_sigs_and_hash( self, room_version: RoomVersion, pdu: EventBase ) -> EventBase: """Checks that event is correctly signed by the sending server. Args: room_version: The room version of the PDU pdu: the event to be checked Returns: * the original event if the checks pass * a redacted version of the event (if the signature matched but the hash did not) * throws a SynapseError if the signature check failed.""" try: await _check_sigs_on_pdu(self.keyring, room_version, pdu) except SynapseError as e: logger.warning( "Signature check failed for %s: %s", pdu.event_id, e, ) raise if not check_event_content_hash(pdu): # let's try to distinguish between failures because the event was # redacted (which are somewhat expected) vs actual ball-tampering # incidents. # # This is just a heuristic, so we just assume that if the keys are # about the same between the redacted and received events, then the # received event was probably a redacted copy (but we then use our # *actual* redacted copy to be on the safe side.) redacted_event = prune_event(pdu) if set(redacted_event.keys()) == set(pdu.keys()) and set( redacted_event.content.keys() ) == set(pdu.content.keys()): logger.info( "Event %s seems to have been redacted; using our redacted copy", pdu.event_id, ) else: logger.warning( "Event %s content has been tampered, redacting", pdu.event_id, ) return redacted_event result = await self.spam_checker.check_event_for_spam(pdu) if result: logger.warning("Event contains spam, soft-failing %s", pdu.event_id) # we redact (to save disk space) as well as soft-failing (to stop # using the event in prev_events). redacted_event = prune_event(pdu) redacted_event.internal_metadata.soft_failed = True return redacted_event return pdu async def _check_sigs_on_pdu( keyring: Keyring, room_version: RoomVersion, pdu: EventBase ) -> None: """Check that the given events are correctly signed Raise a SynapseError if the event wasn't correctly signed. Args: keyring: keyring object to do the checks room_version: the room version of the PDUs pdus: the events to be checked """ # we want to check that the event is signed by: # # (a) the sender's server # # - except in the case of invites created from a 3pid invite, which are exempt # from this check, because the sender has to match that of the original 3pid # invite, but the event may come from a different HS, for reasons that I don't # entirely grok (why do the senders have to match? and if they do, why doesn't the # joining server ask the inviting server to do the switcheroo with # exchange_third_party_invite?). # # That's pretty awful, since redacting such an invite will render it invalid # (because it will then look like a regular invite without a valid signature), # and signatures are *supposed* to be valid whether or not an event has been # redacted. But this isn't the worst of the ways that 3pid invites are broken. # # (b) for V1 and V2 rooms, the server which created the event_id # # let's start by getting the domain for each pdu, and flattening the event back # to JSON. # First we check that the sender event is signed by the sender's domain # (except if its a 3pid invite, in which case it may be sent by any server) if not _is_invite_via_3pid(pdu): try: await keyring.verify_event_for_server( get_domain_from_id(pdu.sender), pdu, pdu.origin_server_ts if room_version.enforce_key_validity else 0, ) except Exception as e: errmsg = "event id %s: unable to verify signature for sender %s: %s" % ( pdu.event_id, get_domain_from_id(pdu.sender), e, ) raise SynapseError(403, errmsg, Codes.FORBIDDEN) # now let's look for events where the sender's domain is different to the # event id's domain (normally only the case for joins/leaves), and add additional # checks. Only do this if the room version has a concept of event ID domain # (ie, the room version uses old-style non-hash event IDs). if room_version.event_format == EventFormatVersions.V1 and get_domain_from_id( pdu.event_id ) != get_domain_from_id(pdu.sender): try: await keyring.verify_event_for_server( get_domain_from_id(pdu.event_id), pdu, pdu.origin_server_ts if room_version.enforce_key_validity else 0, ) except Exception as e: errmsg = ( "event id %s: unable to verify signature for event id domain %s: %s" % ( pdu.event_id, get_domain_from_id(pdu.event_id), e, ) ) raise SynapseError(403, errmsg, Codes.FORBIDDEN) # If this is a join event for a restricted room it may have been authorised # via a different server from the sending server. Check those signatures. if ( room_version.msc3083_join_rules and pdu.type == EventTypes.Member and pdu.membership == Membership.JOIN and EventContentFields.AUTHORISING_USER in pdu.content ): authorising_server = get_domain_from_id( pdu.content[EventContentFields.AUTHORISING_USER] ) try: await keyring.verify_event_for_server( authorising_server, pdu, pdu.origin_server_ts if room_version.enforce_key_validity else 0, ) except Exception as e: errmsg = ( "event id %s: unable to verify signature for authorising server %s: %s" % ( pdu.event_id, authorising_server, e, ) ) raise SynapseError(403, errmsg, Codes.FORBIDDEN) def _is_invite_via_3pid(event: EventBase) -> bool: return ( event.type == EventTypes.Member and event.membership == Membership.INVITE and "third_party_invite" in event.content ) def event_from_pdu_json(pdu_json: JsonDict, room_version: RoomVersion) -> EventBase: """Construct an EventBase from an event json received over federation Args: pdu_json: pdu as received over federation room_version: The version of the room this event belongs to Raises: SynapseError: if the pdu is missing required fields or is otherwise not a valid matrix event """ # we could probably enforce a bunch of other fields here (room_id, sender, # origin, etc etc) assert_params_in_dict(pdu_json, ("type", "depth")) # Strip any unauthorized values from "unsigned" if they exist if "unsigned" in pdu_json: _strip_unsigned_values(pdu_json) depth = pdu_json["depth"] if not isinstance(depth, int): raise SynapseError(400, "Depth %r not an intger" % (depth,), Codes.BAD_JSON) if depth < 0: raise SynapseError(400, "Depth too small", Codes.BAD_JSON) elif depth > MAX_DEPTH: raise SynapseError(400, "Depth too large", Codes.BAD_JSON) # Validate that the JSON conforms to the specification. if room_version.strict_canonicaljson: validate_canonicaljson(pdu_json) event = make_event_from_dict(pdu_json, room_version) return event def _strip_unsigned_values(pdu_dict: JsonDict) -> None: """ Strip any unsigned values unless specifically allowed, as defined by the whitelist. pdu: the json dict to strip values from. Note that the dict is mutated by this function """ unsigned = pdu_dict["unsigned"] if not isinstance(unsigned, dict): pdu_dict["unsigned"] = {} if pdu_dict["type"] == "m.room.member": whitelist = ["knock_room_state", "invite_room_state", "age"] else: whitelist = ["age"] filtered_unsigned = {k: v for k, v in unsigned.items() if k in whitelist} pdu_dict["unsigned"] = filtered_unsigned synapse-1.53.0/synapse/federation/federation_client.py000066400000000000000000001637751420514467300231450ustar00rootroot00000000000000# Copyright 2015-2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import copy import itertools import logging from typing import ( TYPE_CHECKING, Awaitable, Callable, Collection, Container, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple, TypeVar, Union, ) import attr from prometheus_client import Counter from synapse.api.constants import EventContentFields, EventTypes, Membership from synapse.api.errors import ( CodeMessageException, Codes, FederationDeniedError, HttpResponseException, RequestSendFailed, SynapseError, UnsupportedRoomVersionError, ) from synapse.api.room_versions import ( KNOWN_ROOM_VERSIONS, EventFormatVersions, RoomVersion, RoomVersions, ) from synapse.events import EventBase, builder from synapse.federation.federation_base import FederationBase, event_from_pdu_json from synapse.federation.transport.client import SendJoinResponse from synapse.types import JsonDict, get_domain_from_id from synapse.util.async_helpers import concurrently_execute from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) sent_queries_counter = Counter("synapse_federation_client_sent_queries", "", ["type"]) PDU_RETRY_TIME_MS = 1 * 60 * 1000 T = TypeVar("T") class InvalidResponseError(RuntimeError): """Helper for _try_destination_list: indicates that the server returned a response we couldn't parse """ @attr.s(slots=True, frozen=True, auto_attribs=True) class SendJoinResult: # The event to persist. event: EventBase # A string giving the server the event was sent to. origin: str state: List[EventBase] auth_chain: List[EventBase] class FederationClient(FederationBase): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.pdu_destination_tried: Dict[str, Dict[str, int]] = {} self._clock.looping_call(self._clear_tried_cache, 60 * 1000) self.state = hs.get_state_handler() self.transport_layer = hs.get_federation_transport_client() self.hostname = hs.hostname self.signing_key = hs.signing_key self._get_pdu_cache: ExpiringCache[str, EventBase] = ExpiringCache( cache_name="get_pdu_cache", clock=self._clock, max_len=1000, expiry_ms=120 * 1000, reset_expiry_on_get=False, ) # A cache for fetching the room hierarchy over federation. # # Some stale data over federation is OK, but must be refreshed # periodically since the local server is in the room. # # It is a map of (room ID, suggested-only) -> the response of # get_room_hierarchy. self._get_room_hierarchy_cache: ExpiringCache[ Tuple[str, bool], Tuple[JsonDict, Sequence[JsonDict], Sequence[JsonDict], Sequence[str]], ] = ExpiringCache( cache_name="get_room_hierarchy_cache", clock=self._clock, max_len=1000, expiry_ms=5 * 60 * 1000, reset_expiry_on_get=False, ) def _clear_tried_cache(self) -> None: """Clear pdu_destination_tried cache""" now = self._clock.time_msec() old_dict = self.pdu_destination_tried self.pdu_destination_tried = {} for event_id, destination_dict in old_dict.items(): destination_dict = { dest: time for dest, time in destination_dict.items() if time + PDU_RETRY_TIME_MS > now } if destination_dict: self.pdu_destination_tried[event_id] = destination_dict async def make_query( self, destination: str, query_type: str, args: dict, retry_on_dns_fail: bool = False, ignore_backoff: bool = False, ) -> JsonDict: """Sends a federation Query to a remote homeserver of the given type and arguments. Args: destination: Domain name of the remote homeserver query_type: Category of the query type; should match the handler name used in register_query_handler(). args: Mapping of strings to strings containing the details of the query request. ignore_backoff: true to ignore the historical backoff data and try the request anyway. Returns: The JSON object from the response """ sent_queries_counter.labels(query_type).inc() return await self.transport_layer.make_query( destination, query_type, args, retry_on_dns_fail=retry_on_dns_fail, ignore_backoff=ignore_backoff, ) async def query_client_keys( self, destination: str, content: JsonDict, timeout: int ) -> JsonDict: """Query device keys for a device hosted on a remote server. Args: destination: Domain name of the remote homeserver content: The query content. Returns: The JSON object from the response """ sent_queries_counter.labels("client_device_keys").inc() return await self.transport_layer.query_client_keys( destination, content, timeout ) async def query_user_devices( self, destination: str, user_id: str, timeout: int = 30000 ) -> JsonDict: """Query the device keys for a list of user ids hosted on a remote server. """ sent_queries_counter.labels("user_devices").inc() return await self.transport_layer.query_user_devices( destination, user_id, timeout ) async def claim_client_keys( self, destination: str, content: JsonDict, timeout: int ) -> JsonDict: """Claims one-time keys for a device hosted on a remote server. Args: destination: Domain name of the remote homeserver content: The query content. Returns: The JSON object from the response """ sent_queries_counter.labels("client_one_time_keys").inc() return await self.transport_layer.claim_client_keys( destination, content, timeout ) async def backfill( self, dest: str, room_id: str, limit: int, extremities: Collection[str] ) -> Optional[List[EventBase]]: """Requests some more historic PDUs for the given room from the given destination server. Args: dest: The remote homeserver to ask. room_id: The room_id to backfill. limit: The maximum number of events to return. extremities: our current backwards extremities, to backfill from Must be a Collection that is falsy when empty. (Iterable is not enough here!) """ logger.debug("backfill extrem=%s", extremities) # If there are no extremities then we've (probably) reached the start. if not extremities: return None transaction_data = await self.transport_layer.backfill( dest, room_id, extremities, limit ) logger.debug("backfill transaction_data=%r", transaction_data) if not isinstance(transaction_data, dict): # TODO we probably want an exception type specific to federation # client validation. raise TypeError("Backfill transaction_data is not a dict.") transaction_data_pdus = transaction_data.get("pdus") if not isinstance(transaction_data_pdus, list): # TODO we probably want an exception type specific to federation # client validation. raise TypeError("transaction_data.pdus is not a list.") room_version = await self.store.get_room_version(room_id) pdus = [event_from_pdu_json(p, room_version) for p in transaction_data_pdus] # Check signatures and hash of pdus, removing any from the list that fail checks pdus[:] = await self._check_sigs_and_hash_and_fetch( dest, pdus, room_version=room_version ) return pdus async def get_pdu_from_destination_raw( self, destination: str, event_id: str, room_version: RoomVersion, timeout: Optional[int] = None, ) -> Optional[EventBase]: """Requests the PDU with given origin and ID from the remote home server. Does not have any caching or rate limiting! Args: destination: Which homeserver to query event_id: event to fetch room_version: version of the room timeout: How long to try (in ms) each destination for before moving to the next destination. None indicates no timeout. Returns: The requested PDU, or None if we were unable to find it. Raises: SynapseError, NotRetryingDestination, FederationDeniedError """ transaction_data = await self.transport_layer.get_event( destination, event_id, timeout=timeout ) logger.debug( "retrieved event id %s from %s: %r", event_id, destination, transaction_data, ) pdu_list: List[EventBase] = [ event_from_pdu_json(p, room_version) for p in transaction_data["pdus"] ] if pdu_list and pdu_list[0]: pdu = pdu_list[0] # Check signatures are correct. signed_pdu = await self._check_sigs_and_hash(room_version, pdu) return signed_pdu return None async def get_pdu( self, destinations: Iterable[str], event_id: str, room_version: RoomVersion, timeout: Optional[int] = None, ) -> Optional[EventBase]: """Requests the PDU with given origin and ID from the remote home servers. Will attempt to get the PDU from each destination in the list until one succeeds. Args: destinations: Which homeservers to query event_id: event to fetch room_version: version of the room timeout: How long to try (in ms) each destination for before moving to the next destination. None indicates no timeout. Returns: The requested PDU, or None if we were unable to find it. """ # TODO: Rate limit the number of times we try and get the same event. ev = self._get_pdu_cache.get(event_id) if ev: return ev pdu_attempts = self.pdu_destination_tried.setdefault(event_id, {}) signed_pdu = None for destination in destinations: now = self._clock.time_msec() last_attempt = pdu_attempts.get(destination, 0) if last_attempt + PDU_RETRY_TIME_MS > now: continue try: signed_pdu = await self.get_pdu_from_destination_raw( destination=destination, event_id=event_id, room_version=room_version, timeout=timeout, ) pdu_attempts[destination] = now except SynapseError as e: logger.info( "Failed to get PDU %s from %s because %s", event_id, destination, e ) continue except NotRetryingDestination as e: logger.info(str(e)) continue except FederationDeniedError as e: logger.info(str(e)) continue except Exception as e: pdu_attempts[destination] = now logger.info( "Failed to get PDU %s from %s because %s", event_id, destination, e ) continue if signed_pdu: self._get_pdu_cache[event_id] = signed_pdu return signed_pdu async def get_room_state_ids( self, destination: str, room_id: str, event_id: str ) -> Tuple[List[str], List[str]]: """Calls the /state_ids endpoint to fetch the state at a particular point in the room, and the auth events for the given event Returns: a tuple of (state event_ids, auth event_ids) """ result = await self.transport_layer.get_room_state_ids( destination, room_id, event_id=event_id ) state_event_ids = result["pdu_ids"] auth_event_ids = result.get("auth_chain_ids", []) if not isinstance(state_event_ids, list) or not isinstance( auth_event_ids, list ): raise Exception("invalid response from /state_ids") return state_event_ids, auth_event_ids async def _check_sigs_and_hash_and_fetch( self, origin: str, pdus: Collection[EventBase], room_version: RoomVersion, ) -> List[EventBase]: """Takes a list of PDUs and checks the signatures and hashes of each one. If a PDU fails its signature check then we check if we have it in the database and if not then request if from the originating server of that PDU. If a PDU fails its content hash check then it is redacted. The given list of PDUs are not modified, instead the function returns a new list. Args: origin pdu room_version Returns: A list of PDUs that have valid signatures and hashes. """ # We limit how many PDUs we check at once, as if we try to do hundreds # of thousands of PDUs at once we see large memory spikes. valid_pdus = [] async def _execute(pdu: EventBase) -> None: valid_pdu = await self._check_sigs_and_hash_and_fetch_one( pdu=pdu, origin=origin, room_version=room_version, ) if valid_pdu: valid_pdus.append(valid_pdu) await concurrently_execute(_execute, pdus, 10000) return valid_pdus async def _check_sigs_and_hash_and_fetch_one( self, pdu: EventBase, origin: str, room_version: RoomVersion, ) -> Optional[EventBase]: """Takes a PDU and checks its signatures and hashes. If the PDU fails its signature check then we check if we have it in the database and if not then request if from the originating server of that PDU. If then PDU fails its content hash check then it is redacted. Args: origin pdu room_version Returns: The PDU (possibly redacted) if it has valid signatures and hashes. """ res = None try: res = await self._check_sigs_and_hash(room_version, pdu) except SynapseError: pass if not res: # Check local db. res = await self.store.get_event( pdu.event_id, allow_rejected=True, allow_none=True ) pdu_origin = get_domain_from_id(pdu.sender) if not res and pdu_origin != origin: try: res = await self.get_pdu( destinations=[pdu_origin], event_id=pdu.event_id, room_version=room_version, timeout=10000, ) except SynapseError: pass if not res: logger.warning( "Failed to find copy of %s with valid signature", pdu.event_id ) return res async def get_event_auth( self, destination: str, room_id: str, event_id: str ) -> List[EventBase]: res = await self.transport_layer.get_event_auth(destination, room_id, event_id) room_version = await self.store.get_room_version(room_id) auth_chain = [event_from_pdu_json(p, room_version) for p in res["auth_chain"]] signed_auth = await self._check_sigs_and_hash_and_fetch( destination, auth_chain, room_version=room_version ) return signed_auth def _is_unknown_endpoint( self, e: HttpResponseException, synapse_error: Optional[SynapseError] = None ) -> bool: """ Returns true if the response was due to an endpoint being unimplemented. Args: e: The error response received from the remote server. synapse_error: The above error converted to a SynapseError. This is automatically generated if not provided. """ if synapse_error is None: synapse_error = e.to_synapse_error() # There is no good way to detect an "unknown" endpoint. # # Dendrite returns a 404 (with no body); synapse returns a 400 # with M_UNRECOGNISED. return e.code == 404 or ( e.code == 400 and synapse_error.errcode == Codes.UNRECOGNIZED ) async def _try_destination_list( self, description: str, destinations: Iterable[str], callback: Callable[[str], Awaitable[T]], failover_errcodes: Optional[Container[str]] = None, failover_on_unknown_endpoint: bool = False, ) -> T: """Try an operation on a series of servers, until it succeeds Args: description: description of the operation we're doing, for logging destinations: list of server_names to try callback: Function to run for each server. Passed a single argument: the server_name to try. If the callback raises a CodeMessageException with a 300/400 code or an UnsupportedRoomVersionError, attempts to perform the operation stop immediately and the exception is reraised. Otherwise, if the callback raises an Exception the error is logged and the next server tried. Normally the stacktrace is logged but this is suppressed if the exception is an InvalidResponseError. failover_errcodes: Error codes (specific to this endpoint) which should cause a failover when received as part of an HTTP 400 error. failover_on_unknown_endpoint: if True, we will try other servers if it looks like a server doesn't support the endpoint. This is typically useful if the endpoint in question is new or experimental. Returns: The result of callback, if it succeeds Raises: SynapseError if the chosen remote server returns a 300/400 code, or no servers were reachable. """ if failover_errcodes is None: failover_errcodes = () for destination in destinations: if destination == self.server_name: continue try: return await callback(destination) except ( RequestSendFailed, InvalidResponseError, NotRetryingDestination, ) as e: logger.warning("Failed to %s via %s: %s", description, destination, e) except UnsupportedRoomVersionError: raise except HttpResponseException as e: synapse_error = e.to_synapse_error() failover = False # Failover should occur: # # * On internal server errors. # * If the destination responds that it cannot complete the request. # * If the destination doesn't implemented the endpoint for some reason. if 500 <= e.code < 600: failover = True elif e.code == 400 and synapse_error.errcode in failover_errcodes: failover = True elif failover_on_unknown_endpoint and self._is_unknown_endpoint( e, synapse_error ): failover = True if not failover: raise synapse_error from e logger.warning( "Failed to %s via %s: %i %s", description, destination, e.code, e.args[0], ) except Exception: logger.warning( "Failed to %s via %s", description, destination, exc_info=True ) raise SynapseError(502, "Failed to %s via any server" % (description,)) async def make_membership_event( self, destinations: Iterable[str], room_id: str, user_id: str, membership: str, content: dict, params: Optional[Mapping[str, Union[str, Iterable[str]]]], ) -> Tuple[str, EventBase, RoomVersion]: """ Creates an m.room.member event, with context, without participating in the room. Does so by asking one of the already participating servers to create an event with proper context. Returns a fully signed and hashed event. Note that this does not append any events to any graphs. Args: destinations: Candidate homeservers which are probably participating in the room. room_id: The room in which the event will happen. user_id: The user whose membership is being evented. membership: The "membership" property of the event. Must be one of "join" or "leave". content: Any additional data to put into the content field of the event. params: Query parameters to include in the request. Returns: `(origin, event, room_version)` where origin is the remote homeserver which generated the event, and room_version is the version of the room. Raises: UnsupportedRoomVersionError: if remote responds with a room version we don't understand. SynapseError: if the chosen remote server returns a 300/400 code, or no servers successfully handle the request. """ valid_memberships = {Membership.JOIN, Membership.LEAVE, Membership.KNOCK} if membership not in valid_memberships: raise RuntimeError( "make_membership_event called with membership='%s', must be one of %s" % (membership, ",".join(valid_memberships)) ) async def send_request(destination: str) -> Tuple[str, EventBase, RoomVersion]: ret = await self.transport_layer.make_membership_event( destination, room_id, user_id, membership, params ) # Note: If not supplied, the room version may be either v1 or v2, # however either way the event format version will be v1. room_version_id = ret.get("room_version", RoomVersions.V1.identifier) room_version = KNOWN_ROOM_VERSIONS.get(room_version_id) if not room_version: raise UnsupportedRoomVersionError() if not room_version.msc2403_knocking and membership == Membership.KNOCK: raise SynapseError( 400, "This room version does not support knocking", errcode=Codes.FORBIDDEN, ) pdu_dict = ret.get("event", None) if not isinstance(pdu_dict, dict): raise InvalidResponseError("Bad 'event' field in response") logger.debug("Got response to make_%s: %s", membership, pdu_dict) pdu_dict["content"].update(content) # The protoevent received over the JSON wire may not have all # the required fields. Lets just gloss over that because # there's some we never care about if "prev_state" not in pdu_dict: pdu_dict["prev_state"] = [] ev = builder.create_local_event_from_event_dict( self._clock, self.hostname, self.signing_key, room_version=room_version, event_dict=pdu_dict, ) return destination, ev, room_version # MSC3083 defines additional error codes for room joins. Unfortunately # we do not yet know the room version, assume these will only be returned # by valid room versions. failover_errcodes = ( (Codes.UNABLE_AUTHORISE_JOIN, Codes.UNABLE_TO_GRANT_JOIN) if membership == Membership.JOIN else None ) return await self._try_destination_list( "make_" + membership, destinations, send_request, failover_errcodes=failover_errcodes, ) async def send_join( self, destinations: Iterable[str], pdu: EventBase, room_version: RoomVersion ) -> SendJoinResult: """Sends a join event to one of a list of homeservers. Doing so will cause the remote server to add the event to the graph, and send the event out to the rest of the federation. Args: destinations: Candidate homeservers which are probably participating in the room. pdu: event to be sent room_version: the version of the room (according to the server that did the make_join) Returns: The result of the send join request. Raises: SynapseError: if the chosen remote server returns a 300/400 code, or no servers successfully handle the request. """ async def send_request(destination: str) -> SendJoinResult: response = await self._do_send_join(room_version, destination, pdu) # If an event was returned (and expected to be returned): # # * Ensure it has the same event ID (note that the event ID is a hash # of the event fields for versions which support MSC3083). # * Ensure the signatures are good. # # Otherwise, fallback to the provided event. if room_version.msc3083_join_rules and response.event: event = response.event valid_pdu = await self._check_sigs_and_hash_and_fetch_one( pdu=event, origin=destination, room_version=room_version, ) if valid_pdu is None or event.event_id != pdu.event_id: raise InvalidResponseError("Returned an invalid join event") else: event = pdu state = response.state auth_chain = response.auth_events create_event = None for e in state: if (e.type, e.state_key) == (EventTypes.Create, ""): create_event = e break if create_event is None: # If the state doesn't have a create event then the room is # invalid, and it would fail auth checks anyway. raise InvalidResponseError("No create event in state") # the room version should be sane. create_room_version = create_event.content.get( "room_version", RoomVersions.V1.identifier ) if create_room_version != room_version.identifier: # either the server that fulfilled the make_join, or the server that is # handling the send_join, is lying. raise InvalidResponseError( "Unexpected room version %s in create event" % (create_room_version,) ) logger.info( "Processing from send_join %d events", len(state) + len(auth_chain) ) # We now go and check the signatures and hashes for the event. Note # that we limit how many events we process at a time to keep the # memory overhead from exploding. valid_pdus_map: Dict[str, EventBase] = {} async def _execute(pdu: EventBase) -> None: valid_pdu = await self._check_sigs_and_hash_and_fetch_one( pdu=pdu, origin=destination, room_version=room_version, ) if valid_pdu: valid_pdus_map[valid_pdu.event_id] = valid_pdu await concurrently_execute( _execute, itertools.chain(state, auth_chain), 10000 ) # NB: We *need* to copy to ensure that we don't have multiple # references being passed on, as that causes... issues. signed_state = [ copy.copy(valid_pdus_map[p.event_id]) for p in state if p.event_id in valid_pdus_map ] signed_auth = [ valid_pdus_map[p.event_id] for p in auth_chain if p.event_id in valid_pdus_map ] # NB: We *need* to copy to ensure that we don't have multiple # references being passed on, as that causes... issues. for s in signed_state: s.internal_metadata = copy.deepcopy(s.internal_metadata) # double-check that the same create event has ended up in the auth chain auth_chain_create_events = [ e.event_id for e in signed_auth if (e.type, e.state_key) == (EventTypes.Create, "") ] if auth_chain_create_events != [create_event.event_id]: raise InvalidResponseError( "Unexpected create event(s) in auth chain: %s" % (auth_chain_create_events,) ) return SendJoinResult( event=event, state=signed_state, auth_chain=signed_auth, origin=destination, ) # MSC3083 defines additional error codes for room joins. failover_errcodes = None if room_version.msc3083_join_rules: failover_errcodes = ( Codes.UNABLE_AUTHORISE_JOIN, Codes.UNABLE_TO_GRANT_JOIN, ) # If the join is being authorised via allow rules, we need to send # the /send_join back to the same server that was originally used # with /make_join. if EventContentFields.AUTHORISING_USER in pdu.content: destinations = [ get_domain_from_id(pdu.content[EventContentFields.AUTHORISING_USER]) ] return await self._try_destination_list( "send_join", destinations, send_request, failover_errcodes=failover_errcodes ) async def _do_send_join( self, room_version: RoomVersion, destination: str, pdu: EventBase ) -> SendJoinResponse: time_now = self._clock.time_msec() try: return await self.transport_layer.send_join_v2( room_version=room_version, destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint. Otherwise consider it a legitmate error # and raise. if not self._is_unknown_endpoint(e): raise logger.debug("Couldn't send_join with the v2 API, falling back to the v1 API") return await self.transport_layer.send_join_v1( room_version=room_version, destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) async def send_invite( self, destination: str, room_id: str, event_id: str, pdu: EventBase, ) -> EventBase: room_version = await self.store.get_room_version(room_id) content = await self._do_send_invite(destination, pdu, room_version) pdu_dict = content["event"] logger.debug("Got response to send_invite: %s", pdu_dict) pdu = event_from_pdu_json(pdu_dict, room_version) # Check signatures are correct. pdu = await self._check_sigs_and_hash(room_version, pdu) # FIXME: We should handle signature failures more gracefully. return pdu async def _do_send_invite( self, destination: str, pdu: EventBase, room_version: RoomVersion ) -> JsonDict: """Actually sends the invite, first trying v2 API and falling back to v1 API if necessary. Returns: The event as a dict as returned by the remote server Raises: SynapseError: if the remote server returns an error or if the server only supports the v1 endpoint and a room version other than "1" or "2" is requested. """ time_now = self._clock.time_msec() try: return await self.transport_layer.send_invite_v2( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content={ "event": pdu.get_pdu_json(time_now), "room_version": room_version.identifier, "invite_room_state": pdu.unsigned.get("invite_room_state", []), }, ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint if the room uses old-style event IDs. # Otherwise consider it a legitmate error and raise. err = e.to_synapse_error() if self._is_unknown_endpoint(e, err): if room_version.event_format != EventFormatVersions.V1: raise SynapseError( 400, "User's homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) else: raise err # Didn't work, try v1 API. # Note the v1 API returns a tuple of `(200, content)` _, content = await self.transport_layer.send_invite_v1( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) return content async def send_leave(self, destinations: Iterable[str], pdu: EventBase) -> None: """Sends a leave event to one of a list of homeservers. Doing so will cause the remote server to add the event to the graph, and send the event out to the rest of the federation. This is mostly useful to reject received invites. Args: destinations: Candidate homeservers which are probably participating in the room. pdu: event to be sent Raises: SynapseError: if the chosen remote server returns a 300/400 code, or no servers successfully handle the request. """ async def send_request(destination: str) -> None: content = await self._do_send_leave(destination, pdu) logger.debug("Got content: %s", content) return await self._try_destination_list( "send_leave", destinations, send_request ) async def _do_send_leave(self, destination: str, pdu: EventBase) -> JsonDict: time_now = self._clock.time_msec() try: return await self.transport_layer.send_leave_v2( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint. Otherwise consider it a legitmate error # and raise. if not self._is_unknown_endpoint(e): raise logger.debug("Couldn't send_leave with the v2 API, falling back to the v1 API") resp = await self.transport_layer.send_leave_v1( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) # We expect the v1 API to respond with [200, content], so we only return the # content. return resp[1] async def send_knock(self, destinations: List[str], pdu: EventBase) -> JsonDict: """Attempts to send a knock event to given a list of servers. Iterates through the list until one attempt succeeds. Doing so will cause the remote server to add the event to the graph, and send the event out to the rest of the federation. Args: destinations: A list of candidate homeservers which are likely to be participating in the room. pdu: The event to be sent. Returns: The remote homeserver return some state from the room. The response dictionary is in the form: {"knock_state_events": [, ...]} The list of state events may be empty. Raises: SynapseError: If the chosen remote server returns a 3xx/4xx code. RuntimeError: If no servers were reachable. """ async def send_request(destination: str) -> JsonDict: return await self._do_send_knock(destination, pdu) return await self._try_destination_list( "send_knock", destinations, send_request ) async def _do_send_knock(self, destination: str, pdu: EventBase) -> JsonDict: """Send a knock event to a remote homeserver. Args: destination: The homeserver to send to. pdu: The event to send. Returns: The remote homeserver can optionally return some state from the room. The response dictionary is in the form: {"knock_state_events": [, ...]} The list of state events may be empty. """ time_now = self._clock.time_msec() return await self.transport_layer.send_knock_v1( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) async def get_public_rooms( self, remote_server: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[Dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Get the list of public rooms from a remote homeserver Args: remote_server: The name of the remote server limit: Maximum amount of rooms to return since_token: Used for result pagination search_filter: A filter dictionary to send the remote homeserver and filter the result set include_all_networks: Whether to include results from all third party instances third_party_instance_id: Whether to only include results from a specific third party instance Returns: The response from the remote server. Raises: HttpResponseException / RequestSendFailed: There was an exception returned from the remote server SynapseException: M_FORBIDDEN when the remote server has disallowed publicRoom requests over federation """ return await self.transport_layer.get_public_rooms( remote_server, limit, since_token, search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) async def get_missing_events( self, destination: str, room_id: str, earliest_events_ids: Iterable[str], latest_events: Iterable[EventBase], limit: int, min_depth: int, timeout: int, ) -> List[EventBase]: """Tries to fetch events we are missing. This is called when we receive an event without having received all of its ancestors. Args: destination room_id earliest_events_ids: List of event ids. Effectively the events we expected to receive, but haven't. `get_missing_events` should only return events that didn't happen before these. latest_events: List of events we have received that we don't have all previous events for. limit: Maximum number of events to return. min_depth: Minimum depth of events to return. timeout: Max time to wait in ms """ try: content = await self.transport_layer.get_missing_events( destination=destination, room_id=room_id, earliest_events=earliest_events_ids, latest_events=[e.event_id for e in latest_events], limit=limit, min_depth=min_depth, timeout=timeout, ) room_version = await self.store.get_room_version(room_id) events = [ event_from_pdu_json(e, room_version) for e in content.get("events", []) ] signed_events = await self._check_sigs_and_hash_and_fetch( destination, events, room_version=room_version ) except HttpResponseException as e: if not e.code == 400: raise # We are probably hitting an old server that doesn't support # get_missing_events signed_events = [] return signed_events async def forward_third_party_invite( self, destinations: Iterable[str], room_id: str, event_dict: JsonDict ) -> None: for destination in destinations: if destination == self.server_name: continue try: await self.transport_layer.exchange_third_party_invite( destination=destination, room_id=room_id, event_dict=event_dict ) return except CodeMessageException: raise except Exception as e: logger.exception( "Failed to send_third_party_invite via %s: %s", destination, str(e) ) raise RuntimeError("Failed to send to any server.") async def get_room_complexity( self, destination: str, room_id: str ) -> Optional[JsonDict]: """ Fetch the complexity of a remote room from another server. Args: destination: The remote server room_id: The room ID to ask about. Returns: Dict contains the complexity metric versions, while None means we could not fetch the complexity. """ try: return await self.transport_layer.get_room_complexity( destination=destination, room_id=room_id ) except CodeMessageException as e: # We didn't manage to get it -- probably a 404. We are okay if other # servers don't give it to us. logger.debug( "Failed to fetch room complexity via %s for %s, got a %d", destination, room_id, e.code, ) except Exception: logger.exception( "Failed to fetch room complexity via %s for %s", destination, room_id ) # If we don't manage to find it, return None. It's not an error if a # server doesn't give it to us. return None async def get_space_summary( self, destinations: Iterable[str], room_id: str, suggested_only: bool, max_rooms_per_space: Optional[int], exclude_rooms: List[str], ) -> "FederationSpaceSummaryResult": """ Call other servers to get a summary of the given space Args: destinations: The remote servers. We will try them in turn, omitting any that have been blacklisted. room_id: ID of the space to be queried suggested_only: If true, ask the remote server to only return children with the "suggested" flag set max_rooms_per_space: A limit on the number of children to return for each space exclude_rooms: A list of room IDs to tell the remote server to skip Returns: a parsed FederationSpaceSummaryResult Raises: SynapseError if we were unable to get a valid summary from any of the remote servers """ async def send_request(destination: str) -> FederationSpaceSummaryResult: res = await self.transport_layer.get_space_summary( destination=destination, room_id=room_id, suggested_only=suggested_only, max_rooms_per_space=max_rooms_per_space, exclude_rooms=exclude_rooms, ) try: return FederationSpaceSummaryResult.from_json_dict(res) except ValueError as e: raise InvalidResponseError(str(e)) return await self._try_destination_list( "fetch space summary", destinations, send_request, failover_on_unknown_endpoint=True, ) async def get_room_hierarchy( self, destinations: Iterable[str], room_id: str, suggested_only: bool, ) -> Tuple[JsonDict, Sequence[JsonDict], Sequence[JsonDict], Sequence[str]]: """ Call other servers to get a hierarchy of the given room. Performs simple data validates and parsing of the response. Args: destinations: The remote servers. We will try them in turn, omitting any that have been blacklisted. room_id: ID of the space to be queried suggested_only: If true, ask the remote server to only return children with the "suggested" flag set Returns: A tuple of: The room as a JSON dictionary, without a "children_state" key. A list of `m.space.child` state events. A list of children rooms, as JSON dictionaries. A list of inaccessible children room IDs. Raises: SynapseError if we were unable to get a valid summary from any of the remote servers """ cached_result = self._get_room_hierarchy_cache.get((room_id, suggested_only)) if cached_result: return cached_result async def send_request( destination: str, ) -> Tuple[JsonDict, Sequence[JsonDict], Sequence[JsonDict], Sequence[str]]: try: res = await self.transport_layer.get_room_hierarchy( destination=destination, room_id=room_id, suggested_only=suggested_only, ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the unstable endpoint. Otherwise consider it a # legitmate error and raise. if not self._is_unknown_endpoint(e): raise logger.debug( "Couldn't fetch room hierarchy with the v1 API, falling back to the unstable API" ) res = await self.transport_layer.get_room_hierarchy_unstable( destination=destination, room_id=room_id, suggested_only=suggested_only, ) room = res.get("room") if not isinstance(room, dict): raise InvalidResponseError("'room' must be a dict") # Validate children_state of the room. children_state = room.pop("children_state", []) if not isinstance(children_state, Sequence): raise InvalidResponseError("'room.children_state' must be a list") if any(not isinstance(e, dict) for e in children_state): raise InvalidResponseError("Invalid event in 'children_state' list") try: [ FederationSpaceSummaryEventResult.from_json_dict(e) for e in children_state ] except ValueError as e: raise InvalidResponseError(str(e)) # Validate the children rooms. children = res.get("children", []) if not isinstance(children, Sequence): raise InvalidResponseError("'children' must be a list") if any(not isinstance(r, dict) for r in children): raise InvalidResponseError("Invalid room in 'children' list") # Validate the inaccessible children. inaccessible_children = res.get("inaccessible_children", []) if not isinstance(inaccessible_children, Sequence): raise InvalidResponseError("'inaccessible_children' must be a list") if any(not isinstance(r, str) for r in inaccessible_children): raise InvalidResponseError( "Invalid room ID in 'inaccessible_children' list" ) return room, children_state, children, inaccessible_children try: result = await self._try_destination_list( "fetch room hierarchy", destinations, send_request, failover_on_unknown_endpoint=True, ) except SynapseError as e: # If an unexpected error occurred, re-raise it. if e.code != 502: raise logger.debug( "Couldn't fetch room hierarchy, falling back to the spaces API" ) # Fallback to the old federation API and translate the results if # no servers implement the new API. # # The algorithm below is a bit inefficient as it only attempts to # parse information for the requested room, but the legacy API may # return additional layers. legacy_result = await self.get_space_summary( destinations, room_id, suggested_only, max_rooms_per_space=None, exclude_rooms=[], ) # Find the requested room in the response (and remove it). for _i, room in enumerate(legacy_result.rooms): if room.get("room_id") == room_id: break else: # The requested room was not returned, nothing we can do. raise requested_room = legacy_result.rooms.pop(_i) # Find any children events of the requested room. children_events = [] children_room_ids = set() for event in legacy_result.events: if event.room_id == room_id: children_events.append(event.data) children_room_ids.add(event.state_key) # Find the children rooms. children = [] for room in legacy_result.rooms: if room.get("room_id") in children_room_ids: children.append(room) # It isn't clear from the response whether some of the rooms are # not accessible. result = (requested_room, children_events, children, ()) # Cache the result to avoid fetching data over federation every time. self._get_room_hierarchy_cache[(room_id, suggested_only)] = result return result async def timestamp_to_event( self, destination: str, room_id: str, timestamp: int, direction: str ) -> "TimestampToEventResponse": """ Calls a remote federating server at `destination` asking for their closest event to the given timestamp in the given direction. Also validates the response to always return the expected keys or raises an error. Args: destination: Domain name of the remote homeserver room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: ["f"|"b"] to indicate whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: A parsed TimestampToEventResponse including the closest event_id and origin_server_ts Raises: Various exceptions when the request fails InvalidResponseError when the response does not have the correct keys or wrong types """ remote_response = await self.transport_layer.timestamp_to_event( destination, room_id, timestamp, direction ) if not isinstance(remote_response, dict): raise InvalidResponseError( "Response must be a JSON dictionary but received %r" % remote_response ) try: return TimestampToEventResponse.from_json_dict(remote_response) except ValueError as e: raise InvalidResponseError(str(e)) @attr.s(frozen=True, slots=True, auto_attribs=True) class TimestampToEventResponse: """Typed response dictionary for the federation /timestamp_to_event endpoint""" event_id: str origin_server_ts: int # the raw data, including the above keys data: JsonDict @classmethod def from_json_dict(cls, d: JsonDict) -> "TimestampToEventResponse": """Parsed response from the federation /timestamp_to_event endpoint Args: d: JSON object response to be parsed Raises: ValueError if d does not the correct keys or they are the wrong types """ event_id = d.get("event_id") if not isinstance(event_id, str): raise ValueError( "Invalid response: 'event_id' must be a str but received %r" % event_id ) origin_server_ts = d.get("origin_server_ts") if not isinstance(origin_server_ts, int): raise ValueError( "Invalid response: 'origin_server_ts' must be a int but received %r" % origin_server_ts ) return cls(event_id, origin_server_ts, d) @attr.s(frozen=True, slots=True, auto_attribs=True) class FederationSpaceSummaryEventResult: """Represents a single event in the result of a successful get_space_summary call. It's essentially just a serialised event object, but we do a bit of parsing and validation in `from_json_dict` and store some of the validated properties in object attributes. """ event_type: str room_id: str state_key: str via: Sequence[str] # the raw data, including the above keys data: JsonDict @classmethod def from_json_dict(cls, d: JsonDict) -> "FederationSpaceSummaryEventResult": """Parse an event within the result of a /spaces/ request Args: d: json object to be parsed Raises: ValueError if d is not a valid event """ event_type = d.get("type") if not isinstance(event_type, str): raise ValueError("Invalid event: 'event_type' must be a str") room_id = d.get("room_id") if not isinstance(room_id, str): raise ValueError("Invalid event: 'room_id' must be a str") state_key = d.get("state_key") if not isinstance(state_key, str): raise ValueError("Invalid event: 'state_key' must be a str") content = d.get("content") if not isinstance(content, dict): raise ValueError("Invalid event: 'content' must be a dict") via = content.get("via") if not isinstance(via, Sequence): raise ValueError("Invalid event: 'via' must be a list") if any(not isinstance(v, str) for v in via): raise ValueError("Invalid event: 'via' must be a list of strings") return cls(event_type, room_id, state_key, via, d) @attr.s(frozen=True, slots=True, auto_attribs=True) class FederationSpaceSummaryResult: """Represents the data returned by a successful get_space_summary call.""" rooms: List[JsonDict] events: Sequence[FederationSpaceSummaryEventResult] @classmethod def from_json_dict(cls, d: JsonDict) -> "FederationSpaceSummaryResult": """Parse the result of a /spaces/ request Args: d: json object to be parsed Raises: ValueError if d is not a valid /spaces/ response """ rooms = d.get("rooms") if not isinstance(rooms, List): raise ValueError("'rooms' must be a list") if any(not isinstance(r, dict) for r in rooms): raise ValueError("Invalid room in 'rooms' list") events = d.get("events") if not isinstance(events, Sequence): raise ValueError("'events' must be a list") if any(not isinstance(e, dict) for e in events): raise ValueError("Invalid event in 'events' list") parsed_events = [ FederationSpaceSummaryEventResult.from_json_dict(e) for e in events ] return cls(rooms, parsed_events) synapse-1.53.0/synapse/federation/federation_server.py000066400000000000000000001541001420514467300231530ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # Copyright 2019-2021 Matrix.org Federation C.I.C # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, Dict, Iterable, List, Optional, Tuple, Union, ) from matrix_common.regex import glob_to_regex from prometheus_client import Counter, Gauge, Histogram from twisted.internet.abstract import isIPAddress from twisted.python import failure from synapse.api.constants import EduTypes, EventContentFields, EventTypes, Membership from synapse.api.errors import ( AuthError, Codes, FederationError, IncompatibleRoomVersionError, NotFoundError, SynapseError, UnsupportedRoomVersionError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.crypto.event_signing import compute_event_signature from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.federation.federation_base import FederationBase, event_from_pdu_json from synapse.federation.persistence import TransactionActions from synapse.federation.units import Edu, Transaction from synapse.http.servlet import assert_params_in_dict from synapse.logging.context import ( make_deferred_yieldable, nested_logging_context, run_in_background, ) from synapse.logging.opentracing import log_kv, start_active_span_from_edu, trace from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.replication.http.federation import ( ReplicationFederationSendEduRestServlet, ReplicationGetQueryRestServlet, ) from synapse.storage.databases.main.lock import Lock from synapse.types import JsonDict, StateMap, get_domain_from_id from synapse.util import json_decoder, unwrapFirstError from synapse.util.async_helpers import Linearizer, concurrently_execute, gather_results from synapse.util.caches.response_cache import ResponseCache from synapse.util.stringutils import parse_server_name if TYPE_CHECKING: from synapse.server import HomeServer # when processing incoming transactions, we try to handle multiple rooms in # parallel, up to this limit. TRANSACTION_CONCURRENCY_LIMIT = 10 logger = logging.getLogger(__name__) received_pdus_counter = Counter("synapse_federation_server_received_pdus", "") received_edus_counter = Counter("synapse_federation_server_received_edus", "") received_queries_counter = Counter( "synapse_federation_server_received_queries", "", ["type"] ) pdu_process_time = Histogram( "synapse_federation_server_pdu_process_time", "Time taken to process an event", ) last_pdu_ts_metric = Gauge( "synapse_federation_last_received_pdu_time", "The timestamp of the last PDU which was successfully received from the given domain", labelnames=("server_name",), ) # The name of the lock to use when process events in a room received over # federation. _INBOUND_EVENT_HANDLING_LOCK_NAME = "federation_inbound_pdu" class FederationServer(FederationBase): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.handler = hs.get_federation_handler() self.storage = hs.get_storage() self._federation_event_handler = hs.get_federation_event_handler() self.state = hs.get_state_handler() self._event_auth_handler = hs.get_event_auth_handler() self.device_handler = hs.get_device_handler() # Ensure the following handlers are loaded since they register callbacks # with FederationHandlerRegistry. hs.get_directory_handler() self._server_linearizer = Linearizer("fed_server") # origins that we are currently processing a transaction from. # a dict from origin to txn id. self._active_transactions: Dict[str, str] = {} # We cache results for transaction with the same ID self._transaction_resp_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "fed_txn_handler", timeout_ms=30000 ) self.transaction_actions = TransactionActions(self.store) self.registry = hs.get_federation_registry() # We cache responses to state queries, as they take a while and often # come in waves. self._state_resp_cache: ResponseCache[ Tuple[str, Optional[str]] ] = ResponseCache(hs.get_clock(), "state_resp", timeout_ms=30000) self._state_ids_resp_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "state_ids_resp", timeout_ms=30000 ) self._federation_metrics_domains = ( hs.config.federation.federation_metrics_domains ) self._room_prejoin_state_types = hs.config.api.room_prejoin_state # Whether we have started handling old events in the staging area. self._started_handling_of_staged_events = False @wrap_as_background_process("_handle_old_staged_events") async def _handle_old_staged_events(self) -> None: """Handle old staged events by fetching all rooms that have staged events and start the processing of each of those rooms. """ # Get all the rooms IDs with staged events. room_ids = await self.store.get_all_rooms_with_staged_incoming_events() # We then shuffle them so that if there are multiple instances doing # this work they're less likely to collide. random.shuffle(room_ids) for room_id in room_ids: room_version = await self.store.get_room_version(room_id) # Try and acquire the processing lock for the room, if we get it start a # background process for handling the events in the room. lock = await self.store.try_acquire_lock( _INBOUND_EVENT_HANDLING_LOCK_NAME, room_id ) if lock: logger.info("Handling old staged inbound events in %s", room_id) self._process_incoming_pdus_in_room_inner( room_id, room_version, lock, ) # We pause a bit so that we don't start handling all rooms at once. await self._clock.sleep(random.uniform(0, 0.1)) async def on_backfill_request( self, origin: str, room_id: str, versions: List[str], limit: int ) -> Tuple[int, Dict[str, Any]]: with (await self._server_linearizer.queue((origin, room_id))): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) pdus = await self.handler.on_backfill_request( origin, room_id, versions, limit ) res = self._transaction_dict_from_pdus(pdus) return 200, res async def on_timestamp_to_event_request( self, origin: str, room_id: str, timestamp: int, direction: str ) -> Tuple[int, Dict[str, Any]]: """When we receive a federated `/timestamp_to_event` request, handle all of the logic for validating and fetching the event. Args: origin: The server we received the event from room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: ["f"|"b"] to indicate whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: Tuple indicating the response status code and dictionary response body including `event_id`. """ with (await self._server_linearizer.queue((origin, room_id))): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) # We only try to fetch data from the local database event_id = await self.store.get_event_id_for_timestamp( room_id, timestamp, direction ) if event_id: event = await self.store.get_event( event_id, allow_none=False, allow_rejected=False ) return 200, { "event_id": event_id, "origin_server_ts": event.origin_server_ts, } raise SynapseError( 404, "Unable to find event from %s in direction %s" % (timestamp, direction), errcode=Codes.NOT_FOUND, ) async def on_incoming_transaction( self, origin: str, transaction_id: str, destination: str, transaction_data: JsonDict, ) -> Tuple[int, JsonDict]: # If we receive a transaction we should make sure that kick off handling # any old events in the staging area. if not self._started_handling_of_staged_events: self._started_handling_of_staged_events = True self._handle_old_staged_events() # Start a periodic check for old staged events. This is to handle # the case where locks time out, e.g. if another process gets killed # without dropping its locks. self._clock.looping_call(self._handle_old_staged_events, 60 * 1000) # keep this as early as possible to make the calculated origin ts as # accurate as possible. request_time = self._clock.time_msec() transaction = Transaction( transaction_id=transaction_id, destination=destination, origin=origin, origin_server_ts=transaction_data.get("origin_server_ts"), # type: ignore pdus=transaction_data.get("pdus"), # type: ignore edus=transaction_data.get("edus"), ) if not transaction_id: raise Exception("Transaction missing transaction_id") logger.debug("[%s] Got transaction", transaction_id) # Reject malformed transactions early: reject if too many PDUs/EDUs if len(transaction.pdus) > 50 or len(transaction.edus) > 100: logger.info("Transaction PDU or EDU count too large. Returning 400") return 400, {} # we only process one transaction from each origin at a time. We need to do # this check here, rather than in _on_incoming_transaction_inner so that we # don't cache the rejection in _transaction_resp_cache (so that if the txn # arrives again later, we can process it). current_transaction = self._active_transactions.get(origin) if current_transaction and current_transaction != transaction_id: logger.warning( "Received another txn %s from %s while still processing %s", transaction_id, origin, current_transaction, ) return 429, { "errcode": Codes.UNKNOWN, "error": "Too many concurrent transactions", } # CRITICAL SECTION: we must now not await until we populate _active_transactions # in _on_incoming_transaction_inner. # We wrap in a ResponseCache so that we de-duplicate retried # transactions. return await self._transaction_resp_cache.wrap( (origin, transaction_id), self._on_incoming_transaction_inner, origin, transaction, request_time, ) async def _on_incoming_transaction_inner( self, origin: str, transaction: Transaction, request_time: int ) -> Tuple[int, Dict[str, Any]]: # CRITICAL SECTION: the first thing we must do (before awaiting) is # add an entry to _active_transactions. assert origin not in self._active_transactions self._active_transactions[origin] = transaction.transaction_id try: result = await self._handle_incoming_transaction( origin, transaction, request_time ) return result finally: del self._active_transactions[origin] async def _handle_incoming_transaction( self, origin: str, transaction: Transaction, request_time: int ) -> Tuple[int, Dict[str, Any]]: """Process an incoming transaction and return the HTTP response Args: origin: the server making the request transaction: incoming transaction request_time: timestamp that the HTTP request arrived at Returns: HTTP response code and body """ existing_response = await self.transaction_actions.have_responded( origin, transaction ) if existing_response: logger.debug( "[%s] We've already responded to this request", transaction.transaction_id, ) return existing_response logger.debug("[%s] Transaction is new", transaction.transaction_id) # We process PDUs and EDUs in parallel. This is important as we don't # want to block things like to device messages from reaching clients # behind the potentially expensive handling of PDUs. pdu_results, _ = await make_deferred_yieldable( gather_results( ( run_in_background( self._handle_pdus_in_txn, origin, transaction, request_time ), run_in_background(self._handle_edus_in_txn, origin, transaction), ), consumeErrors=True, ).addErrback(unwrapFirstError) ) response = {"pdus": pdu_results} logger.debug("Returning: %s", str(response)) await self.transaction_actions.set_response(origin, transaction, 200, response) return 200, response async def _handle_pdus_in_txn( self, origin: str, transaction: Transaction, request_time: int ) -> Dict[str, dict]: """Process the PDUs in a received transaction. Args: origin: the server making the request transaction: incoming transaction request_time: timestamp that the HTTP request arrived at Returns: A map from event ID of a processed PDU to any errors we should report back to the sending server. """ received_pdus_counter.inc(len(transaction.pdus)) origin_host, _ = parse_server_name(origin) pdus_by_room: Dict[str, List[EventBase]] = {} newest_pdu_ts = 0 for p in transaction.pdus: # FIXME (richardv): I don't think this works: # https://github.com/matrix-org/synapse/issues/8429 if "unsigned" in p: unsigned = p["unsigned"] if "age" in unsigned: p["age"] = unsigned["age"] if "age" in p: p["age_ts"] = request_time - int(p["age"]) del p["age"] # We try and pull out an event ID so that if later checks fail we # can log something sensible. We don't mandate an event ID here in # case future event formats get rid of the key. possible_event_id = p.get("event_id", "") # Now we get the room ID so that we can check that we know the # version of the room. room_id = p.get("room_id") if not room_id: logger.info( "Ignoring PDU as does not have a room_id. Event ID: %s", possible_event_id, ) continue try: room_version = await self.store.get_room_version(room_id) except NotFoundError: logger.info("Ignoring PDU for unknown room_id: %s", room_id) continue except UnsupportedRoomVersionError as e: # this can happen if support for a given room version is withdrawn, # so that we still get events for said room. logger.info("Ignoring PDU: %s", e) continue event = event_from_pdu_json(p, room_version) pdus_by_room.setdefault(room_id, []).append(event) if event.origin_server_ts > newest_pdu_ts: newest_pdu_ts = event.origin_server_ts pdu_results = {} # we can process different rooms in parallel (which is useful if they # require callouts to other servers to fetch missing events), but # impose a limit to avoid going too crazy with ram/cpu. async def process_pdus_for_room(room_id: str) -> None: with nested_logging_context(room_id): logger.debug("Processing PDUs for %s", room_id) try: await self.check_server_matches_acl(origin_host, room_id) except AuthError as e: logger.warning( "Ignoring PDUs for room %s from banned server", room_id ) for pdu in pdus_by_room[room_id]: event_id = pdu.event_id pdu_results[event_id] = e.error_dict() return for pdu in pdus_by_room[room_id]: pdu_results[pdu.event_id] = await process_pdu(pdu) async def process_pdu(pdu: EventBase) -> JsonDict: event_id = pdu.event_id with nested_logging_context(event_id): try: await self._handle_received_pdu(origin, pdu) return {} except FederationError as e: logger.warning("Error handling PDU %s: %s", event_id, e) return {"error": str(e)} except Exception as e: f = failure.Failure() logger.error( "Failed to handle PDU %s", event_id, exc_info=(f.type, f.value, f.getTracebackObject()), # type: ignore ) return {"error": str(e)} await concurrently_execute( process_pdus_for_room, pdus_by_room.keys(), TRANSACTION_CONCURRENCY_LIMIT ) if newest_pdu_ts and origin in self._federation_metrics_domains: last_pdu_ts_metric.labels(server_name=origin).set(newest_pdu_ts / 1000) return pdu_results async def _handle_edus_in_txn(self, origin: str, transaction: Transaction) -> None: """Process the EDUs in a received transaction.""" async def _process_edu(edu_dict: JsonDict) -> None: received_edus_counter.inc() edu = Edu( origin=origin, destination=self.server_name, edu_type=edu_dict["edu_type"], content=edu_dict["content"], ) await self.registry.on_edu(edu.edu_type, origin, edu.content) await concurrently_execute( _process_edu, transaction.edus, TRANSACTION_CONCURRENCY_LIMIT, ) async def on_room_state_request( self, origin: str, room_id: str, event_id: Optional[str] ) -> Tuple[int, JsonDict]: origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) in_room = await self._event_auth_handler.check_host_in_room(room_id, origin) if not in_room: raise AuthError(403, "Host not in room.") # we grab the linearizer to protect ourselves from servers which hammer # us. In theory we might already have the response to this query # in the cache so we could return it without waiting for the linearizer # - but that's non-trivial to get right, and anyway somewhat defeats # the point of the linearizer. with (await self._server_linearizer.queue((origin, room_id))): resp: JsonDict = dict( await self._state_resp_cache.wrap( (room_id, event_id), self._on_context_state_request_compute, room_id, event_id, ) ) room_version = await self.store.get_room_version_id(room_id) resp["room_version"] = room_version return 200, resp async def on_state_ids_request( self, origin: str, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: if not event_id: raise NotImplementedError("Specify an event") origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) in_room = await self._event_auth_handler.check_host_in_room(room_id, origin) if not in_room: raise AuthError(403, "Host not in room.") resp = await self._state_ids_resp_cache.wrap( (room_id, event_id), self._on_state_ids_request_compute, room_id, event_id, ) return 200, resp async def _on_state_ids_request_compute( self, room_id: str, event_id: str ) -> JsonDict: state_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id) auth_chain_ids = await self.store.get_auth_chain_ids(room_id, state_ids) return {"pdu_ids": state_ids, "auth_chain_ids": list(auth_chain_ids)} async def _on_context_state_request_compute( self, room_id: str, event_id: Optional[str] ) -> Dict[str, list]: if event_id: pdus: Iterable[EventBase] = await self.handler.get_state_for_pdu( room_id, event_id ) else: pdus = (await self.state.get_current_state(room_id)).values() auth_chain = await self.store.get_auth_chain( room_id, [pdu.event_id for pdu in pdus] ) return { "pdus": [pdu.get_pdu_json() for pdu in pdus], "auth_chain": [pdu.get_pdu_json() for pdu in auth_chain], } async def on_pdu_request( self, origin: str, event_id: str ) -> Tuple[int, Union[JsonDict, str]]: pdu = await self.handler.get_persisted_pdu(origin, event_id) if pdu: return 200, self._transaction_dict_from_pdus([pdu]) else: return 404, "" async def on_query_request( self, query_type: str, args: Dict[str, str] ) -> Tuple[int, Dict[str, Any]]: received_queries_counter.labels(query_type).inc() resp = await self.registry.on_query(query_type, args) return 200, resp async def on_make_join_request( self, origin: str, room_id: str, user_id: str, supported_versions: List[str] ) -> Dict[str, Any]: origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) room_version = await self.store.get_room_version_id(room_id) if room_version not in supported_versions: logger.warning( "Room version %s not in %s", room_version, supported_versions ) raise IncompatibleRoomVersionError(room_version=room_version) pdu = await self.handler.on_make_join_request(origin, room_id, user_id) return {"event": pdu.get_templated_pdu_json(), "room_version": room_version} async def on_invite_request( self, origin: str, content: JsonDict, room_version_id: str ) -> Dict[str, Any]: room_version = KNOWN_ROOM_VERSIONS.get(room_version_id) if not room_version: raise SynapseError( 400, "Homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) pdu = event_from_pdu_json(content, room_version) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, pdu.room_id) pdu = await self._check_sigs_and_hash(room_version, pdu) ret_pdu = await self.handler.on_invite_request(origin, pdu, room_version) time_now = self._clock.time_msec() return {"event": ret_pdu.get_pdu_json(time_now)} async def on_send_join_request( self, origin: str, content: JsonDict, room_id: str, caller_supports_partial_state: bool = False, ) -> Dict[str, Any]: event, context = await self._on_send_membership_event( origin, content, Membership.JOIN, room_id ) prev_state_ids = await context.get_prev_state_ids() state_event_ids: Collection[str] servers_in_room: Optional[Collection[str]] if caller_supports_partial_state: state_event_ids = _get_event_ids_for_partial_state_join( event, prev_state_ids ) servers_in_room = await self.state.get_hosts_in_room_at_events( room_id, event_ids=event.prev_event_ids() ) else: state_event_ids = prev_state_ids.values() servers_in_room = None auth_chain_event_ids = await self.store.get_auth_chain_ids( room_id, state_event_ids ) # if the caller has opted in, we can omit any auth_chain events which are # already in state_event_ids if caller_supports_partial_state: auth_chain_event_ids.difference_update(state_event_ids) auth_chain_events = await self.store.get_events_as_list(auth_chain_event_ids) state_events = await self.store.get_events_as_list(state_event_ids) # we try to do all the async stuff before this point, so that time_now is as # accurate as possible. time_now = self._clock.time_msec() event_json = event.get_pdu_json(time_now) resp = { # TODO Remove the unstable prefix when servers have updated. "org.matrix.msc3083.v2.event": event_json, "event": event_json, "state": [p.get_pdu_json(time_now) for p in state_events], "auth_chain": [p.get_pdu_json(time_now) for p in auth_chain_events], "org.matrix.msc3706.partial_state": caller_supports_partial_state, } if servers_in_room is not None: resp["org.matrix.msc3706.servers_in_room"] = list(servers_in_room) return resp async def on_make_leave_request( self, origin: str, room_id: str, user_id: str ) -> Dict[str, Any]: origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) pdu = await self.handler.on_make_leave_request(origin, room_id, user_id) room_version = await self.store.get_room_version_id(room_id) return {"event": pdu.get_templated_pdu_json(), "room_version": room_version} async def on_send_leave_request( self, origin: str, content: JsonDict, room_id: str ) -> dict: logger.debug("on_send_leave_request: content: %s", content) await self._on_send_membership_event(origin, content, Membership.LEAVE, room_id) return {} async def on_make_knock_request( self, origin: str, room_id: str, user_id: str, supported_versions: List[str] ) -> JsonDict: """We've received a /make_knock/ request, so we create a partial knock event for the room and hand that back, along with the room version, to the knocking homeserver. We do *not* persist or process this event until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: The room to create the knock event in. user_id: The user to create the knock for. supported_versions: The room versions supported by the requesting server. Returns: The partial knock event. """ origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) room_version = await self.store.get_room_version(room_id) # Check that this room version is supported by the remote homeserver if room_version.identifier not in supported_versions: logger.warning( "Room version %s not in %s", room_version.identifier, supported_versions ) raise IncompatibleRoomVersionError(room_version=room_version.identifier) # Check that this room supports knocking as defined by its room version if not room_version.msc2403_knocking: raise SynapseError( 403, "This room version does not support knocking", errcode=Codes.FORBIDDEN, ) pdu = await self.handler.on_make_knock_request(origin, room_id, user_id) return { "event": pdu.get_templated_pdu_json(), "room_version": room_version.identifier, } async def on_send_knock_request( self, origin: str, content: JsonDict, room_id: str, ) -> Dict[str, List[JsonDict]]: """ We have received a knock event for a room. Verify and send the event into the room on the knocking homeserver's behalf. Then reply with some stripped state from the room for the knockee. Args: origin: The remote homeserver of the knocking user. content: The content of the request. room_id: The ID of the room to knock on. Returns: The stripped room state. """ _, context = await self._on_send_membership_event( origin, content, Membership.KNOCK, room_id ) # Retrieve stripped state events from the room and send them back to the remote # server. This will allow the remote server's clients to display information # related to the room while the knock request is pending. stripped_room_state = ( await self.store.get_stripped_room_state_from_event_context( context, self._room_prejoin_state_types ) ) return {"knock_state_events": stripped_room_state} async def _on_send_membership_event( self, origin: str, content: JsonDict, membership_type: str, room_id: str ) -> Tuple[EventBase, EventContext]: """Handle an on_send_{join,leave,knock} request Does some preliminary validation before passing the request on to the federation handler. Args: origin: The (authenticated) requesting server content: The body of the send_* request - a complete membership event membership_type: The expected membership type (join or leave, depending on the endpoint) room_id: The room_id from the request, to be validated against the room_id in the event Returns: The event and context of the event after inserting it into the room graph. Raises: SynapseError if there is a problem with the request, including things like the room_id not matching or the event not being authorized. """ assert_params_in_dict(content, ["room_id"]) if content["room_id"] != room_id: raise SynapseError( 400, "Room ID in body does not match that in request path", Codes.BAD_JSON, ) room_version = await self.store.get_room_version(room_id) if membership_type == Membership.KNOCK and not room_version.msc2403_knocking: raise SynapseError( 403, "This room version does not support knocking", errcode=Codes.FORBIDDEN, ) event = event_from_pdu_json(content, room_version) if event.type != EventTypes.Member or not event.is_state(): raise SynapseError(400, "Not an m.room.member event", Codes.BAD_JSON) if event.content.get("membership") != membership_type: raise SynapseError(400, "Not a %s event" % membership_type, Codes.BAD_JSON) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, event.room_id) logger.debug("_on_send_membership_event: pdu sigs: %s", event.signatures) # Sign the event since we're vouching on behalf of the remote server that # the event is valid to be sent into the room. Currently this is only done # if the user is being joined via restricted join rules. if ( room_version.msc3083_join_rules and event.membership == Membership.JOIN and EventContentFields.AUTHORISING_USER in event.content ): # We can only authorise our own users. authorising_server = get_domain_from_id( event.content[EventContentFields.AUTHORISING_USER] ) if authorising_server != self.server_name: raise SynapseError( 400, f"Cannot authorise request from resident server: {authorising_server}", ) event.signatures.update( compute_event_signature( room_version, event.get_pdu_json(), self.hs.hostname, self.hs.signing_key, ) ) event = await self._check_sigs_and_hash(room_version, event) return await self._federation_event_handler.on_send_membership_event( origin, event ) async def on_event_auth( self, origin: str, room_id: str, event_id: str ) -> Tuple[int, Dict[str, Any]]: with (await self._server_linearizer.queue((origin, room_id))): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) time_now = self._clock.time_msec() auth_pdus = await self.handler.on_event_auth(event_id) res = {"auth_chain": [a.get_pdu_json(time_now) for a in auth_pdus]} return 200, res async def on_query_client_keys( self, origin: str, content: Dict[str, str] ) -> Tuple[int, Dict[str, Any]]: return await self.on_query_request("client_keys", content) async def on_query_user_devices( self, origin: str, user_id: str ) -> Tuple[int, Dict[str, Any]]: keys = await self.device_handler.on_federation_query_user_devices(user_id) return 200, keys @trace async def on_claim_client_keys( self, origin: str, content: JsonDict ) -> Dict[str, Any]: query = [] for user_id, device_keys in content.get("one_time_keys", {}).items(): for device_id, algorithm in device_keys.items(): query.append((user_id, device_id, algorithm)) log_kv({"message": "Claiming one time keys.", "user, device pairs": query}) results = await self.store.claim_e2e_one_time_keys(query) json_result: Dict[str, Dict[str, dict]] = {} for user_id, device_keys in results.items(): for device_id, keys in device_keys.items(): for key_id, json_str in keys.items(): json_result.setdefault(user_id, {})[device_id] = { key_id: json_decoder.decode(json_str) } logger.info( "Claimed one-time-keys: %s", ",".join( ( "%s for %s:%s" % (key_id, user_id, device_id) for user_id, user_keys in json_result.items() for device_id, device_keys in user_keys.items() for key_id, _ in device_keys.items() ) ), ) return {"one_time_keys": json_result} async def on_get_missing_events( self, origin: str, room_id: str, earliest_events: List[str], latest_events: List[str], limit: int, ) -> Dict[str, list]: with (await self._server_linearizer.queue((origin, room_id))): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) logger.debug( "on_get_missing_events: earliest_events: %r, latest_events: %r," " limit: %d", earliest_events, latest_events, limit, ) missing_events = await self.handler.on_get_missing_events( origin, room_id, earliest_events, latest_events, limit ) if len(missing_events) < 5: logger.debug( "Returning %d events: %r", len(missing_events), missing_events ) else: logger.debug("Returning %d events", len(missing_events)) time_now = self._clock.time_msec() return {"events": [ev.get_pdu_json(time_now) for ev in missing_events]} async def on_openid_userinfo(self, token: str) -> Optional[str]: ts_now_ms = self._clock.time_msec() return await self.store.get_user_id_for_open_id_token(token, ts_now_ms) def _transaction_dict_from_pdus(self, pdu_list: List[EventBase]) -> JsonDict: """Returns a new Transaction containing the given PDUs suitable for transmission. """ time_now = self._clock.time_msec() pdus = [p.get_pdu_json(time_now) for p in pdu_list] return Transaction( # Just need a dummy transaction ID and destination since it won't be used. transaction_id="", origin=self.server_name, pdus=pdus, origin_server_ts=int(time_now), destination="", ).get_dict() async def _handle_received_pdu(self, origin: str, pdu: EventBase) -> None: """Process a PDU received in a federation /send/ transaction. If the event is invalid, then this method throws a FederationError. (The error will then be logged and sent back to the sender (which probably won't do anything with it), and other events in the transaction will be processed as normal). It is likely that we'll then receive other events which refer to this rejected_event in their prev_events, etc. When that happens, we'll attempt to fetch the rejected event again, which will presumably fail, so those second-generation events will also get rejected. Eventually, we get to the point where there are more than 10 events between any new events and the original rejected event. Since we only try to backfill 10 events deep on received pdu, we then accept the new event, possibly introducing a discontinuity in the DAG, with new forward extremities, so normal service is approximately returned, until we try to backfill across the discontinuity. Args: origin: server which sent the pdu pdu: received pdu Raises: FederationError if the signatures / hash do not match, or if the event was unacceptable for any other reason (eg, too large, too many prev_events, couldn't find the prev_events) """ # We've already checked that we know the room version by this point room_version = await self.store.get_room_version(pdu.room_id) # Check signature. try: pdu = await self._check_sigs_and_hash(room_version, pdu) except SynapseError as e: raise FederationError("ERROR", e.code, e.msg, affected=pdu.event_id) # Add the event to our staging area await self.store.insert_received_event_to_staging(origin, pdu) # Try and acquire the processing lock for the room, if we get it start a # background process for handling the events in the room. lock = await self.store.try_acquire_lock( _INBOUND_EVENT_HANDLING_LOCK_NAME, pdu.room_id ) if lock: self._process_incoming_pdus_in_room_inner( pdu.room_id, room_version, lock, origin, pdu ) @wrap_as_background_process("_process_incoming_pdus_in_room_inner") async def _process_incoming_pdus_in_room_inner( self, room_id: str, room_version: RoomVersion, lock: Lock, latest_origin: Optional[str] = None, latest_event: Optional[EventBase] = None, ) -> None: """Process events in the staging area for the given room. The latest_origin and latest_event args are the latest origin and event received (or None to simply pull the next event from the database). """ # The common path is for the event we just received be the only event in # the room, so instead of pulling the event out of the DB and parsing # the event we just pull out the next event ID and check if that matches. if latest_event is not None and latest_origin is not None: result = await self.store.get_next_staged_event_id_for_room(room_id) if result is None: latest_origin = None latest_event = None else: next_origin, next_event_id = result if ( next_origin != latest_origin or next_event_id != latest_event.event_id ): latest_origin = None latest_event = None if latest_origin is None or latest_event is None: next = await self.store.get_next_staged_event_for_room( room_id, room_version ) if not next: await lock.release() return origin, event = next else: origin = latest_origin event = latest_event # We loop round until there are no more events in the room in the # staging area, or we fail to get the lock (which means another process # has started processing). while True: async with lock: logger.info("handling received PDU: %s", event) try: with nested_logging_context(event.event_id): await self._federation_event_handler.on_receive_pdu( origin, event ) except FederationError as e: # XXX: Ideally we'd inform the remote we failed to process # the event, but we can't return an error in the transaction # response (as we've already responded). logger.warning("Error handling PDU %s: %s", event.event_id, e) except Exception: f = failure.Failure() logger.error( "Failed to handle PDU %s", event.event_id, exc_info=(f.type, f.value, f.getTracebackObject()), # type: ignore ) received_ts = await self.store.remove_received_event_from_staging( origin, event.event_id ) if received_ts is not None: pdu_process_time.observe( (self._clock.time_msec() - received_ts) / 1000 ) # We need to do this check outside the lock to avoid a race between # a new event being inserted by another instance and it attempting # to acquire the lock. next = await self.store.get_next_staged_event_for_room( room_id, room_version ) if not next: break origin, event = next # Prune the event queue if it's getting large. # # We do this *after* handling the first event as the common case is # that the queue is empty (/has the single event in), and so there's # no need to do this check. pruned = await self.store.prune_staged_events_in_room(room_id, room_version) if pruned: # If we have pruned the queue check we need to refetch the next # event to handle. next = await self.store.get_next_staged_event_for_room( room_id, room_version ) if not next: break origin, event = next new_lock = await self.store.try_acquire_lock( _INBOUND_EVENT_HANDLING_LOCK_NAME, room_id ) if not new_lock: return lock = new_lock def __str__(self) -> str: return "" % self.server_name async def exchange_third_party_invite( self, sender_user_id: str, target_user_id: str, room_id: str, signed: Dict ) -> None: await self.handler.exchange_third_party_invite( sender_user_id, target_user_id, room_id, signed ) async def on_exchange_third_party_invite_request(self, event_dict: Dict) -> None: await self.handler.on_exchange_third_party_invite_request(event_dict) async def check_server_matches_acl(self, server_name: str, room_id: str) -> None: """Check if the given server is allowed by the server ACLs in the room Args: server_name: name of server, *without any port part* room_id: ID of the room to check Raises: AuthError if the server does not match the ACL """ state_ids = await self.store.get_current_state_ids(room_id) acl_event_id = state_ids.get((EventTypes.ServerACL, "")) if not acl_event_id: return acl_event = await self.store.get_event(acl_event_id) if server_matches_acl_event(server_name, acl_event): return raise AuthError(code=403, msg="Server is banned from room") def server_matches_acl_event(server_name: str, acl_event: EventBase) -> bool: """Check if the given server is allowed by the ACL event Args: server_name: name of server, without any port part acl_event: m.room.server_acl event Returns: True if this server is allowed by the ACLs """ logger.debug("Checking %s against acl %s", server_name, acl_event.content) # first of all, check if literal IPs are blocked, and if so, whether the # server name is a literal IP allow_ip_literals = acl_event.content.get("allow_ip_literals", True) if not isinstance(allow_ip_literals, bool): logger.warning("Ignoring non-bool allow_ip_literals flag") allow_ip_literals = True if not allow_ip_literals: # check for ipv6 literals. These start with '['. if server_name[0] == "[": return False # check for ipv4 literals. We can just lift the routine from twisted. if isIPAddress(server_name): return False # next, check the deny list deny = acl_event.content.get("deny", []) if not isinstance(deny, (list, tuple)): logger.warning("Ignoring non-list deny ACL %s", deny) deny = [] for e in deny: if _acl_entry_matches(server_name, e): # logger.info("%s matched deny rule %s", server_name, e) return False # then the allow list. allow = acl_event.content.get("allow", []) if not isinstance(allow, (list, tuple)): logger.warning("Ignoring non-list allow ACL %s", allow) allow = [] for e in allow: if _acl_entry_matches(server_name, e): # logger.info("%s matched allow rule %s", server_name, e) return True # everything else should be rejected. # logger.info("%s fell through", server_name) return False def _acl_entry_matches(server_name: str, acl_entry: Any) -> bool: if not isinstance(acl_entry, str): logger.warning( "Ignoring non-str ACL entry '%s' (is %s)", acl_entry, type(acl_entry) ) return False regex = glob_to_regex(acl_entry) return bool(regex.match(server_name)) class FederationHandlerRegistry: """Allows classes to register themselves as handlers for a given EDU or query type for incoming federation traffic. """ def __init__(self, hs: "HomeServer"): self.config = hs.config self.clock = hs.get_clock() self._instance_name = hs.get_instance_name() # These are safe to load in monolith mode, but will explode if we try # and use them. However we have guards before we use them to ensure that # we don't route to ourselves, and in monolith mode that will always be # the case. self._get_query_client = ReplicationGetQueryRestServlet.make_client(hs) self._send_edu = ReplicationFederationSendEduRestServlet.make_client(hs) self.edu_handlers: Dict[str, Callable[[str, dict], Awaitable[None]]] = {} self.query_handlers: Dict[str, Callable[[dict], Awaitable[JsonDict]]] = {} # Map from type to instance names that we should route EDU handling to. # We randomly choose one instance from the list to route to for each new # EDU received. self._edu_type_to_instance: Dict[str, List[str]] = {} def register_edu_handler( self, edu_type: str, handler: Callable[[str, JsonDict], Awaitable[None]] ) -> None: """Sets the handler callable that will be used to handle an incoming federation EDU of the given type. Args: edu_type: The type of the incoming EDU to register handler for handler: A callable invoked on incoming EDU of the given type. The arguments are the origin server name and the EDU contents. """ if edu_type in self.edu_handlers: raise KeyError("Already have an EDU handler for %s" % (edu_type,)) logger.info("Registering federation EDU handler for %r", edu_type) self.edu_handlers[edu_type] = handler def register_query_handler( self, query_type: str, handler: Callable[[dict], Awaitable[JsonDict]] ) -> None: """Sets the handler callable that will be used to handle an incoming federation query of the given type. Args: query_type: Category name of the query, which should match the string used by make_query. handler: Invoked to handle incoming queries of this type. The return will be yielded on and the result used as the response to the query request. """ if query_type in self.query_handlers: raise KeyError("Already have a Query handler for %s" % (query_type,)) logger.info("Registering federation query handler for %r", query_type) self.query_handlers[query_type] = handler def register_instances_for_edu( self, edu_type: str, instance_names: List[str] ) -> None: """Register that the EDU handler is on multiple instances.""" self._edu_type_to_instance[edu_type] = instance_names async def on_edu(self, edu_type: str, origin: str, content: dict) -> None: if not self.config.server.use_presence and edu_type == EduTypes.Presence: return # Check if we have a handler on this instance handler = self.edu_handlers.get(edu_type) if handler: with start_active_span_from_edu(content, "handle_edu"): try: await handler(origin, content) except SynapseError as e: logger.info("Failed to handle edu %r: %r", edu_type, e) except Exception: logger.exception("Failed to handle edu %r", edu_type) return # Check if we can route it somewhere else that isn't us instances = self._edu_type_to_instance.get(edu_type, ["master"]) if self._instance_name not in instances: # Pick an instance randomly so that we don't overload one. route_to = random.choice(instances) try: await self._send_edu( instance_name=route_to, edu_type=edu_type, origin=origin, content=content, ) except SynapseError as e: logger.info("Failed to handle edu %r: %r", edu_type, e) except Exception: logger.exception("Failed to handle edu %r", edu_type) return # Oh well, let's just log and move on. logger.warning("No handler registered for EDU type %s", edu_type) async def on_query(self, query_type: str, args: dict) -> JsonDict: handler = self.query_handlers.get(query_type) if handler: return await handler(args) # Check if we can route it somewhere else that isn't us if self._instance_name == "master": return await self._get_query_client(query_type=query_type, args=args) # Uh oh, no handler! Let's raise an exception so the request returns an # error. logger.warning("No handler registered for query type %s", query_type) raise NotFoundError("No handler for Query type '%s'" % (query_type,)) def _get_event_ids_for_partial_state_join( join_event: EventBase, prev_state_ids: StateMap[str], ) -> Collection[str]: """Calculate state to be retuned in a partial_state send_join Args: join_event: the join event being send_joined prev_state_ids: the event ids of the state before the join Returns: the event ids to be returned """ # return all non-member events state_event_ids = { event_id for (event_type, state_key), event_id in prev_state_ids.items() if event_type != EventTypes.Member } # we also need the current state of the current user (it's going to # be an auth event for the new join, so we may as well return it) current_membership_event_id = prev_state_ids.get( (EventTypes.Member, join_event.state_key) ) if current_membership_event_id is not None: state_event_ids.add(current_membership_event_id) # TODO: return a few more members: # - those with invites # - those that are kicked? / banned return state_event_ids synapse-1.53.0/synapse/federation/persistence.py000066400000000000000000000044411420514467300217730ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This module contains all the persistence actions done by the federation package. These actions are mostly only used by the :py:mod:`.replication` module. """ import logging from typing import Optional, Tuple from synapse.federation.units import Transaction from synapse.storage.databases.main import DataStore from synapse.types import JsonDict logger = logging.getLogger(__name__) class TransactionActions: """Defines persistence actions that relate to handling Transactions.""" def __init__(self, datastore: DataStore): self.store = datastore async def have_responded( self, origin: str, transaction: Transaction ) -> Optional[Tuple[int, JsonDict]]: """Have we already responded to a transaction with the same id and origin? Returns: `None` if we have not previously responded to this transaction or a 2-tuple of `(int, dict)` representing the response code and response body. """ transaction_id = transaction.transaction_id if not transaction_id: raise RuntimeError("Cannot persist a transaction with no transaction_id") return await self.store.get_received_txn_response(transaction_id, origin) async def set_response( self, origin: str, transaction: Transaction, code: int, response: JsonDict ) -> None: """Persist how we responded to a transaction.""" transaction_id = transaction.transaction_id if not transaction_id: raise RuntimeError("Cannot persist a transaction with no transaction_id") await self.store.set_received_txn_response( transaction_id, origin, code, response ) synapse-1.53.0/synapse/federation/send_queue.py000066400000000000000000000412501420514467300216030ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """A federation sender that forwards things to be sent across replication to a worker process. It assumes there is a single worker process feeding off of it. Each row in the replication stream consists of a type and some json, where the types indicate whether they are presence, or edus, etc. Ephemeral or non-event data are queued up in-memory. When the worker requests updates since a particular point, all in-memory data since before that point is dropped. We also expire things in the queue after 5 minutes, to ensure that a dead worker doesn't cause the queues to grow limitlessly. Events are replicated via a separate events stream. """ import logging from typing import ( TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Sized, Tuple, Type, ) import attr from sortedcontainers import SortedDict from synapse.api.presence import UserPresenceState from synapse.federation.sender import AbstractFederationSender, FederationSender from synapse.metrics import LaterGauge from synapse.replication.tcp.streams.federation import FederationStream from synapse.types import JsonDict, ReadReceipt, RoomStreamToken from synapse.util.metrics import Measure from .units import Edu if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class FederationRemoteSendQueue(AbstractFederationSender): """A drop in replacement for FederationSender""" def __init__(self, hs: "HomeServer"): self.server_name = hs.hostname self.clock = hs.get_clock() self.notifier = hs.get_notifier() self.is_mine_id = hs.is_mine_id # We may have multiple federation sender instances, so we need to track # their positions separately. self._sender_instances = hs.config.worker.federation_shard_config.instances self._sender_positions: Dict[str, int] = {} # Pending presence map user_id -> UserPresenceState self.presence_map: Dict[str, UserPresenceState] = {} # Stores the destinations we need to explicitly send presence to about a # given user. # Stream position -> (user_id, destinations) self.presence_destinations: SortedDict[ int, Tuple[str, Iterable[str]] ] = SortedDict() # (destination, key) -> EDU self.keyed_edu: Dict[Tuple[str, tuple], Edu] = {} # stream position -> (destination, key) self.keyed_edu_changed: SortedDict[int, Tuple[str, tuple]] = SortedDict() self.edus: SortedDict[int, Edu] = SortedDict() # stream ID for the next entry into keyed_edu_changed/edus. self.pos = 1 # map from stream ID to the time that stream entry was generated, so that we # can clear out entries after a while self.pos_time: SortedDict[int, int] = SortedDict() # EVERYTHING IS SAD. In particular, python only makes new scopes when # we make a new function, so we need to make a new function so the inner # lambda binds to the queue rather than to the name of the queue which # changes. ARGH. def register(name: str, queue: Sized) -> None: LaterGauge( "synapse_federation_send_queue_%s_size" % (queue_name,), "", [], lambda: len(queue), ) for queue_name in [ "presence_map", "keyed_edu", "keyed_edu_changed", "edus", "pos_time", "presence_destinations", ]: register(queue_name, getattr(self, queue_name)) self.clock.looping_call(self._clear_queue, 30 * 1000) def _next_pos(self) -> int: pos = self.pos self.pos += 1 self.pos_time[self.clock.time_msec()] = pos return pos def _clear_queue(self) -> None: """Clear the queues for anything older than N minutes""" FIVE_MINUTES_AGO = 5 * 60 * 1000 now = self.clock.time_msec() keys = self.pos_time.keys() time = self.pos_time.bisect_left(now - FIVE_MINUTES_AGO) if not keys[:time]: return position_to_delete = max(keys[:time]) for key in keys[:time]: del self.pos_time[key] self._clear_queue_before_pos(position_to_delete) def _clear_queue_before_pos(self, position_to_delete: int) -> None: """Clear all the queues from before a given position""" with Measure(self.clock, "send_queue._clear"): # Delete things out of presence maps keys = self.presence_destinations.keys() i = self.presence_destinations.bisect_left(position_to_delete) for key in keys[:i]: del self.presence_destinations[key] user_ids = {user_id for user_id, _ in self.presence_destinations.values()} to_del = [ user_id for user_id in self.presence_map if user_id not in user_ids ] for user_id in to_del: del self.presence_map[user_id] # Delete things out of keyed edus keys = self.keyed_edu_changed.keys() i = self.keyed_edu_changed.bisect_left(position_to_delete) for key in keys[:i]: del self.keyed_edu_changed[key] live_keys = set() for edu_key in self.keyed_edu_changed.values(): live_keys.add(edu_key) keys_to_del = [ edu_key for edu_key in self.keyed_edu if edu_key not in live_keys ] for edu_key in keys_to_del: del self.keyed_edu[edu_key] # Delete things out of edu map keys = self.edus.keys() i = self.edus.bisect_left(position_to_delete) for key in keys[:i]: del self.edus[key] def notify_new_events(self, max_token: RoomStreamToken) -> None: """As per FederationSender""" # This should never get called. raise NotImplementedError() def build_and_send_edu( self, destination: str, edu_type: str, content: JsonDict, key: Optional[Hashable] = None, ) -> None: """As per FederationSender""" if destination == self.server_name: logger.info("Not sending EDU to ourselves") return pos = self._next_pos() edu = Edu( origin=self.server_name, destination=destination, edu_type=edu_type, content=content, ) if key: assert isinstance(key, tuple) self.keyed_edu[(destination, key)] = edu self.keyed_edu_changed[pos] = (destination, key) else: self.edus[pos] = edu self.notifier.on_new_replication_data() async def send_read_receipt(self, receipt: ReadReceipt) -> None: """As per FederationSender Args: receipt: """ # nothing to do here: the replication listener will handle it. def send_presence_to_destinations( self, states: Iterable[UserPresenceState], destinations: Iterable[str] ) -> None: """As per FederationSender Args: states destinations """ for state in states: pos = self._next_pos() self.presence_map.update({state.user_id: state for state in states}) self.presence_destinations[pos] = (state.user_id, destinations) self.notifier.on_new_replication_data() def send_device_messages(self, destination: str) -> None: """As per FederationSender""" # We don't need to replicate this as it gets sent down a different # stream. def wake_destination(self, server: str) -> None: pass def get_current_token(self) -> int: return self.pos - 1 def federation_ack(self, instance_name: str, token: int) -> None: if self._sender_instances: # If we have configured multiple federation sender instances we need # to track their positions separately, and only clear the queue up # to the token all instances have acked. self._sender_positions[instance_name] = token token = min(self._sender_positions.values()) self._clear_queue_before_pos(token) async def get_replication_rows( self, instance_name: str, from_token: int, to_token: int, target_row_count: int ) -> Tuple[List[Tuple[int, Tuple]], int, bool]: """Get rows to be sent over federation between the two tokens Args: instance_name: the name of the current process from_token: the previous stream token: the starting point for fetching the updates to_token: the new stream token: the point to get updates up to target_row_count: a target for the number of rows to be returned. Returns: a triplet `(updates, new_last_token, limited)`, where: * `updates` is a list of `(token, row)` entries. * `new_last_token` is the new position in stream. * `limited` is whether there are more updates to fetch. """ # TODO: Handle target_row_count. # To handle restarts where we wrap around if from_token > self.pos: from_token = -1 # list of tuple(int, BaseFederationRow), where the first is the position # of the federation stream. rows: List[Tuple[int, BaseFederationRow]] = [] # Fetch presence to send to destinations i = self.presence_destinations.bisect_right(from_token) j = self.presence_destinations.bisect_right(to_token) + 1 for pos, (user_id, dests) in self.presence_destinations.items()[i:j]: rows.append( ( pos, PresenceDestinationsRow( state=self.presence_map[user_id], destinations=list(dests) ), ) ) # Fetch changes keyed edus i = self.keyed_edu_changed.bisect_right(from_token) j = self.keyed_edu_changed.bisect_right(to_token) + 1 # We purposefully clobber based on the key here, python dict comprehensions # always use the last value, so this will correctly point to the last # stream position. keyed_edus = {v: k for k, v in self.keyed_edu_changed.items()[i:j]} for ((destination, edu_key), pos) in keyed_edus.items(): rows.append( ( pos, KeyedEduRow( key=edu_key, edu=self.keyed_edu[(destination, edu_key)] ), ) ) # Fetch changed edus i = self.edus.bisect_right(from_token) j = self.edus.bisect_right(to_token) + 1 edus = self.edus.items()[i:j] for (pos, edu) in edus: rows.append((pos, EduRow(edu))) # Sort rows based on pos rows.sort() return ( [(pos, (row.TypeId, row.to_data())) for pos, row in rows], to_token, False, ) class BaseFederationRow: """Base class for rows to be sent in the federation stream. Specifies how to identify, serialize and deserialize the different types. """ TypeId = "" # Unique string that ids the type. Must be overridden in sub classes. @staticmethod def from_data(data: JsonDict) -> "BaseFederationRow": """Parse the data from the federation stream into a row. Args: data: The value of ``data`` from FederationStreamRow.data, type depends on the type of stream """ raise NotImplementedError() def to_data(self) -> JsonDict: """Serialize this row to be sent over the federation stream. Returns: The value to be sent in FederationStreamRow.data. The type depends on the type of stream. """ raise NotImplementedError() def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: """Add this row to the appropriate field in the buffer ready for this to be sent over federation. We use a buffer so that we can batch up events that have come in at the same time and send them all at once. Args: buff (BufferedToSend) """ raise NotImplementedError() @attr.s(slots=True, frozen=True, auto_attribs=True) class PresenceDestinationsRow(BaseFederationRow): state: UserPresenceState destinations: List[str] TypeId = "pd" @staticmethod def from_data(data: JsonDict) -> "PresenceDestinationsRow": return PresenceDestinationsRow( state=UserPresenceState.from_dict(data["state"]), destinations=data["dests"] ) def to_data(self) -> JsonDict: return {"state": self.state.as_dict(), "dests": self.destinations} def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: buff.presence_destinations.append((self.state, self.destinations)) @attr.s(slots=True, frozen=True, auto_attribs=True) class KeyedEduRow(BaseFederationRow): """Streams EDUs that have an associated key that is ued to clobber. For example, typing EDUs clobber based on room_id. """ key: Tuple[str, ...] # the edu key passed to send_edu edu: Edu TypeId = "k" @staticmethod def from_data(data: JsonDict) -> "KeyedEduRow": return KeyedEduRow(key=tuple(data["key"]), edu=Edu(**data["edu"])) def to_data(self) -> JsonDict: return {"key": self.key, "edu": self.edu.get_internal_dict()} def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: buff.keyed_edus.setdefault(self.edu.destination, {})[self.key] = self.edu @attr.s(slots=True, frozen=True, auto_attribs=True) class EduRow(BaseFederationRow): """Streams EDUs that don't have keys. See KeyedEduRow""" edu: Edu TypeId = "e" @staticmethod def from_data(data: JsonDict) -> "EduRow": return EduRow(Edu(**data)) def to_data(self) -> JsonDict: return self.edu.get_internal_dict() def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: buff.edus.setdefault(self.edu.destination, []).append(self.edu) _rowtypes: Tuple[Type[BaseFederationRow], ...] = ( PresenceDestinationsRow, KeyedEduRow, EduRow, ) TypeToRow = {Row.TypeId: Row for Row in _rowtypes} @attr.s(slots=True, frozen=True, auto_attribs=True) class ParsedFederationStreamData: # list of tuples of UserPresenceState and destinations presence_destinations: List[Tuple[UserPresenceState, List[str]]] # dict of destination -> { key -> Edu } keyed_edus: Dict[str, Dict[Tuple[str, ...], Edu]] # dict of destination -> [Edu] edus: Dict[str, List[Edu]] def process_rows_for_federation( transaction_queue: FederationSender, rows: List[FederationStream.FederationStreamRow], ) -> None: """Parse a list of rows from the federation stream and put them in the transaction queue ready for sending to the relevant homeservers. Args: transaction_queue rows """ # The federation stream contains a bunch of different types of # rows that need to be handled differently. We parse the rows, put # them into the appropriate collection and then send them off. buff = ParsedFederationStreamData( presence_destinations=[], keyed_edus={}, edus={}, ) # Parse the rows in the stream and add to the buffer for row in rows: if row.type not in TypeToRow: logger.error("Unrecognized federation row type %r", row.type) continue RowType = TypeToRow[row.type] parsed_row = RowType.from_data(row.data) parsed_row.add_to_buffer(buff) for state, destinations in buff.presence_destinations: transaction_queue.send_presence_to_destinations( states=[state], destinations=destinations ) for edu_map in buff.keyed_edus.values(): for key, edu in edu_map.items(): transaction_queue.send_edu(edu, key) for edu_list in buff.edus.values(): for edu in edu_list: transaction_queue.send_edu(edu, None) synapse-1.53.0/synapse/federation/sender/000077500000000000000000000000001420514467300203525ustar00rootroot00000000000000synapse-1.53.0/synapse/federation/sender/__init__.py000066400000000000000000000667221420514467300225000ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import logging from collections import OrderedDict from typing import TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Set, Tuple import attr from prometheus_client import Counter from typing_extensions import Literal from twisted.internet import defer from twisted.internet.interfaces import IDelayedCall import synapse.metrics from synapse.api.presence import UserPresenceState from synapse.events import EventBase from synapse.federation.sender.per_destination_queue import PerDestinationQueue from synapse.federation.sender.transaction_manager import TransactionManager from synapse.federation.units import Edu from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.metrics import ( LaterGauge, event_processing_loop_counter, event_processing_loop_room_count, events_processed_counter, ) from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.types import JsonDict, ReadReceipt, RoomStreamToken from synapse.util import Clock from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.events.presence_router import PresenceRouter from synapse.server import HomeServer logger = logging.getLogger(__name__) sent_pdus_destination_dist_count = Counter( "synapse_federation_client_sent_pdu_destinations:count", "Number of PDUs queued for sending to one or more destinations", ) sent_pdus_destination_dist_total = Counter( "synapse_federation_client_sent_pdu_destinations:total", "Total number of PDUs queued for sending across all destinations", ) # Time (in s) after Synapse's startup that we will begin to wake up destinations # that have catch-up outstanding. CATCH_UP_STARTUP_DELAY_SEC = 15 # Time (in s) to wait in between waking up each destination, i.e. one destination # will be woken up every seconds after Synapse's startup until we have woken # every destination has outstanding catch-up. CATCH_UP_STARTUP_INTERVAL_SEC = 5 class AbstractFederationSender(metaclass=abc.ABCMeta): @abc.abstractmethod def notify_new_events(self, max_token: RoomStreamToken) -> None: """This gets called when we have some new events we might want to send out to other servers. """ raise NotImplementedError() @abc.abstractmethod async def send_read_receipt(self, receipt: ReadReceipt) -> None: """Send a RR to any other servers in the room Args: receipt: receipt to be sent """ raise NotImplementedError() @abc.abstractmethod def send_presence_to_destinations( self, states: Iterable[UserPresenceState], destinations: Iterable[str] ) -> None: """Send the given presence states to the given destinations. Args: destinations: """ raise NotImplementedError() @abc.abstractmethod def build_and_send_edu( self, destination: str, edu_type: str, content: JsonDict, key: Optional[Hashable] = None, ) -> None: """Construct an Edu object, and queue it for sending Args: destination: name of server to send to edu_type: type of EDU to send content: content of EDU key: clobbering key for this edu """ raise NotImplementedError() @abc.abstractmethod def send_device_messages(self, destination: str) -> None: raise NotImplementedError() @abc.abstractmethod def wake_destination(self, destination: str) -> None: """Called when we want to retry sending transactions to a remote. This is mainly useful if the remote server has been down and we think it might have come back. """ raise NotImplementedError() @abc.abstractmethod def get_current_token(self) -> int: raise NotImplementedError() @abc.abstractmethod def federation_ack(self, instance_name: str, token: int) -> None: raise NotImplementedError() @abc.abstractmethod async def get_replication_rows( self, instance_name: str, from_token: int, to_token: int, target_row_count: int ) -> Tuple[List[Tuple[int, Tuple]], int, bool]: raise NotImplementedError() @attr.s class _PresenceQueue: """A queue of destinations that need to be woken up due to new presence updates. Staggers waking up of per destination queues to ensure that we don't attempt to start TLS connections with many hosts all at once, leading to pinned CPU. """ # The maximum duration in seconds between queuing up a destination and it # being woken up. _MAX_TIME_IN_QUEUE = 30.0 # The maximum duration in seconds between waking up consecutive destination # queues. _MAX_DELAY = 0.1 sender: "FederationSender" = attr.ib() clock: Clock = attr.ib() queue: "OrderedDict[str, Literal[None]]" = attr.ib(factory=OrderedDict) processing: bool = attr.ib(default=False) def add_to_queue(self, destination: str) -> None: """Add a destination to the queue to be woken up.""" self.queue[destination] = None if not self.processing: self._handle() @wrap_as_background_process("_PresenceQueue.handle") async def _handle(self) -> None: """Background process to drain the queue.""" if not self.queue: return assert not self.processing self.processing = True try: # We start with a delay that should drain the queue quickly enough that # we process all destinations in the queue in _MAX_TIME_IN_QUEUE # seconds. # # We also add an upper bound to the delay, to gracefully handle the # case where the queue only has a few entries in it. current_sleep_seconds = min( self._MAX_DELAY, self._MAX_TIME_IN_QUEUE / len(self.queue) ) while self.queue: destination, _ = self.queue.popitem(last=False) queue = self.sender._get_per_destination_queue(destination) if not queue._new_data_to_send: # The per destination queue has already been woken up. continue queue.attempt_new_transaction() await self.clock.sleep(current_sleep_seconds) if not self.queue: break # More destinations may have been added to the queue, so we may # need to reduce the delay to ensure everything gets processed # within _MAX_TIME_IN_QUEUE seconds. current_sleep_seconds = min( current_sleep_seconds, self._MAX_TIME_IN_QUEUE / len(self.queue) ) finally: self.processing = False class FederationSender(AbstractFederationSender): def __init__(self, hs: "HomeServer"): self.hs = hs self.server_name = hs.hostname self.store = hs.get_datastore() self.state = hs.get_state_handler() self.clock = hs.get_clock() self.is_mine_id = hs.is_mine_id self._presence_router: Optional["PresenceRouter"] = None self._transaction_manager = TransactionManager(hs) self._instance_name = hs.get_instance_name() self._federation_shard_config = hs.config.worker.federation_shard_config # map from destination to PerDestinationQueue self._per_destination_queues: Dict[str, PerDestinationQueue] = {} LaterGauge( "synapse_federation_transaction_queue_pending_destinations", "", [], lambda: sum( 1 for d in self._per_destination_queues.values() if d.transmission_loop_running ), ) LaterGauge( "synapse_federation_transaction_queue_pending_pdus", "", [], lambda: sum( d.pending_pdu_count() for d in self._per_destination_queues.values() ), ) LaterGauge( "synapse_federation_transaction_queue_pending_edus", "", [], lambda: sum( d.pending_edu_count() for d in self._per_destination_queues.values() ), ) self._is_processing = False self._last_poked_id = -1 # map from room_id to a set of PerDestinationQueues which we believe are # awaiting a call to flush_read_receipts_for_room. The presence of an entry # here for a given room means that we are rate-limiting RR flushes to that room, # and that there is a pending call to _flush_rrs_for_room in the system. self._queues_awaiting_rr_flush_by_room: Dict[str, Set[PerDestinationQueue]] = {} self._rr_txn_interval_per_room_ms = ( 1000.0 / hs.config.ratelimiting.federation_rr_transactions_per_room_per_second ) # wake up destinations that have outstanding PDUs to be caught up self._catchup_after_startup_timer: Optional[ IDelayedCall ] = self.clock.call_later( CATCH_UP_STARTUP_DELAY_SEC, run_as_background_process, "wake_destinations_needing_catchup", self._wake_destinations_needing_catchup, ) self._external_cache = hs.get_external_cache() self._presence_queue = _PresenceQueue(self, self.clock) def _get_per_destination_queue(self, destination: str) -> PerDestinationQueue: """Get or create a PerDestinationQueue for the given destination Args: destination: server_name of remote server """ queue = self._per_destination_queues.get(destination) if not queue: queue = PerDestinationQueue(self.hs, self._transaction_manager, destination) self._per_destination_queues[destination] = queue return queue def notify_new_events(self, max_token: RoomStreamToken) -> None: """This gets called when we have some new events we might want to send out to other servers. """ # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. current_id = max_token.stream self._last_poked_id = max(current_id, self._last_poked_id) if self._is_processing: return # fire off a processing loop in the background run_as_background_process( "process_event_queue_for_federation", self._process_event_queue_loop ) async def _process_event_queue_loop(self) -> None: try: self._is_processing = True while True: last_token = await self.store.get_federation_out_pos("events") next_token, events = await self.store.get_all_new_events_stream( last_token, self._last_poked_id, limit=100 ) logger.debug("Handling %s -> %s", last_token, next_token) if not events and next_token >= self._last_poked_id: break async def handle_event(event: EventBase) -> None: # Only send events for this server. send_on_behalf_of = event.internal_metadata.get_send_on_behalf_of() is_mine = self.is_mine_id(event.sender) if not is_mine and send_on_behalf_of is None: return if not event.internal_metadata.should_proactively_send(): return destinations: Optional[Set[str]] = None if not event.prev_event_ids(): # If there are no prev event IDs then the state is empty # and so no remote servers in the room destinations = set() else: # We check the external cache for the destinations, which is # stored per state group. sg = await self._external_cache.get( "event_to_prev_state_group", event.event_id ) if sg: destinations = await self._external_cache.get( "get_joined_hosts", str(sg) ) if destinations is None: try: # Get the state from before the event. # We need to make sure that this is the state from before # the event and not from after it. # Otherwise if the last member on a server in a room is # banned then it won't receive the event because it won't # be in the room after the ban. destinations = await self.state.get_hosts_in_room_at_events( event.room_id, event_ids=event.prev_event_ids() ) except Exception: logger.exception( "Failed to calculate hosts in room for event: %s", event.event_id, ) return destinations = { d for d in destinations if self._federation_shard_config.should_handle( self._instance_name, d ) } if send_on_behalf_of is not None: # If we are sending the event on behalf of another server # then it already has the event and there is no reason to # send the event to it. destinations.discard(send_on_behalf_of) logger.debug("Sending %s to %r", event, destinations) if destinations: await self._send_pdu(event, destinations) now = self.clock.time_msec() ts = await self.store.get_received_ts(event.event_id) assert ts is not None synapse.metrics.event_processing_lag_by_event.labels( "federation_sender" ).observe((now - ts) / 1000) async def handle_room_events(events: Iterable[EventBase]) -> None: with Measure(self.clock, "handle_room_events"): for event in events: await handle_event(event) events_by_room: Dict[str, List[EventBase]] = {} for event in events: events_by_room.setdefault(event.room_id, []).append(event) await make_deferred_yieldable( defer.gatherResults( [ run_in_background(handle_room_events, evs) for evs in events_by_room.values() ], consumeErrors=True, ) ) await self.store.update_federation_out_pos("events", next_token) if events: now = self.clock.time_msec() ts = await self.store.get_received_ts(events[-1].event_id) assert ts is not None synapse.metrics.event_processing_lag.labels( "federation_sender" ).set(now - ts) synapse.metrics.event_processing_last_ts.labels( "federation_sender" ).set(ts) events_processed_counter.inc(len(events)) event_processing_loop_room_count.labels("federation_sender").inc( len(events_by_room) ) event_processing_loop_counter.labels("federation_sender").inc() synapse.metrics.event_processing_positions.labels( "federation_sender" ).set(next_token) finally: self._is_processing = False async def _send_pdu(self, pdu: EventBase, destinations: Iterable[str]) -> None: # We loop through all destinations to see whether we already have # a transaction in progress. If we do, stick it in the pending_pdus # table and we'll get back to it later. destinations = set(destinations) destinations.discard(self.server_name) logger.debug("Sending to: %s", str(destinations)) if not destinations: return sent_pdus_destination_dist_total.inc(len(destinations)) sent_pdus_destination_dist_count.inc() assert pdu.internal_metadata.stream_ordering # track the fact that we have a PDU for these destinations, # to allow us to perform catch-up later on if the remote is unreachable # for a while. await self.store.store_destination_rooms_entries( destinations, pdu.room_id, pdu.internal_metadata.stream_ordering, ) for destination in destinations: self._get_per_destination_queue(destination).send_pdu(pdu) async def send_read_receipt(self, receipt: ReadReceipt) -> None: """Send a RR to any other servers in the room Args: receipt: receipt to be sent """ # Some background on the rate-limiting going on here. # # It turns out that if we attempt to send out RRs as soon as we get them from # a client, then we end up trying to do several hundred Hz of federation # transactions. (The number of transactions scales as O(N^2) on the size of a # room, since in a large room we have both more RRs coming in, and more servers # to send them to.) # # This leads to a lot of CPU load, and we end up getting behind. The solution # currently adopted is as follows: # # The first receipt in a given room is sent out immediately, at time T0. Any # further receipts are, in theory, batched up for N seconds, where N is calculated # based on the number of servers in the room to achieve a transaction frequency # of around 50Hz. So, for example, if there were 100 servers in the room, then # N would be 100 / 50Hz = 2 seconds. # # Then, after T+N, we flush out any receipts that have accumulated, and restart # the timer to flush out more receipts at T+2N, etc. If no receipts accumulate, # we stop the cycle and go back to the start. # # However, in practice, it is often possible to flush out receipts earlier: in # particular, if we are sending a transaction to a given server anyway (for # example, because we have a PDU or a RR in another room to send), then we may # as well send out all of the pending RRs for that server. So it may be that # by the time we get to T+N, we don't actually have any RRs left to send out. # Nevertheless we continue to buffer up RRs for the room in question until we # reach the point that no RRs arrive between timer ticks. # # For even more background, see https://github.com/matrix-org/synapse/issues/4730. room_id = receipt.room_id # Work out which remote servers should be poked and poke them. domains_set = await self.state.get_current_hosts_in_room(room_id) domains = [ d for d in domains_set if d != self.server_name and self._federation_shard_config.should_handle(self._instance_name, d) ] if not domains: return queues_pending_flush = self._queues_awaiting_rr_flush_by_room.get(room_id) # if there is no flush yet scheduled, we will send out these receipts with # immediate flushes, and schedule the next flush for this room. if queues_pending_flush is not None: logger.debug("Queuing receipt for: %r", domains) else: logger.debug("Sending receipt to: %r", domains) self._schedule_rr_flush_for_room(room_id, len(domains)) for domain in domains: queue = self._get_per_destination_queue(domain) queue.queue_read_receipt(receipt) # if there is already a RR flush pending for this room, then make sure this # destination is registered for the flush if queues_pending_flush is not None: queues_pending_flush.add(queue) else: queue.flush_read_receipts_for_room(room_id) def _schedule_rr_flush_for_room(self, room_id: str, n_domains: int) -> None: # that is going to cause approximately len(domains) transactions, so now back # off for that multiplied by RR_TXN_INTERVAL_PER_ROOM backoff_ms = self._rr_txn_interval_per_room_ms * n_domains logger.debug("Scheduling RR flush in %s in %d ms", room_id, backoff_ms) self.clock.call_later(backoff_ms, self._flush_rrs_for_room, room_id) self._queues_awaiting_rr_flush_by_room[room_id] = set() def _flush_rrs_for_room(self, room_id: str) -> None: queues = self._queues_awaiting_rr_flush_by_room.pop(room_id) logger.debug("Flushing RRs in %s to %s", room_id, queues) if not queues: # no more RRs arrived for this room; we are done. return # schedule the next flush self._schedule_rr_flush_for_room(room_id, len(queues)) for queue in queues: queue.flush_read_receipts_for_room(room_id) def send_presence_to_destinations( self, states: Iterable[UserPresenceState], destinations: Iterable[str] ) -> None: """Send the given presence states to the given destinations. destinations (list[str]) """ if not states or not self.hs.config.server.use_presence: # No-op if presence is disabled. return # Ensure we only send out presence states for local users. for state in states: assert self.is_mine_id(state.user_id) for destination in destinations: if destination == self.server_name: continue if not self._federation_shard_config.should_handle( self._instance_name, destination ): continue self._get_per_destination_queue(destination).send_presence( states, start_loop=False ) self._presence_queue.add_to_queue(destination) def build_and_send_edu( self, destination: str, edu_type: str, content: JsonDict, key: Optional[Hashable] = None, ) -> None: """Construct an Edu object, and queue it for sending Args: destination: name of server to send to edu_type: type of EDU to send content: content of EDU key: clobbering key for this edu """ if destination == self.server_name: logger.info("Not sending EDU to ourselves") return if not self._federation_shard_config.should_handle( self._instance_name, destination ): return edu = Edu( origin=self.server_name, destination=destination, edu_type=edu_type, content=content, ) self.send_edu(edu, key) def send_edu(self, edu: Edu, key: Optional[Hashable]) -> None: """Queue an EDU for sending Args: edu: edu to send key: clobbering key for this edu """ if not self._federation_shard_config.should_handle( self._instance_name, edu.destination ): return queue = self._get_per_destination_queue(edu.destination) if key: queue.send_keyed_edu(edu, key) else: queue.send_edu(edu) def send_device_messages(self, destination: str) -> None: if destination == self.server_name: logger.warning("Not sending device update to ourselves") return if not self._federation_shard_config.should_handle( self._instance_name, destination ): return self._get_per_destination_queue(destination).attempt_new_transaction() def wake_destination(self, destination: str) -> None: """Called when we want to retry sending transactions to a remote. This is mainly useful if the remote server has been down and we think it might have come back. """ if destination == self.server_name: logger.warning("Not waking up ourselves") return if not self._federation_shard_config.should_handle( self._instance_name, destination ): return self._get_per_destination_queue(destination).attempt_new_transaction() @staticmethod def get_current_token() -> int: # Dummy implementation for case where federation sender isn't offloaded # to a worker. return 0 def federation_ack(self, instance_name: str, token: int) -> None: # It is not expected that this gets called on FederationSender. raise NotImplementedError() @staticmethod async def get_replication_rows( instance_name: str, from_token: int, to_token: int, target_row_count: int ) -> Tuple[List[Tuple[int, Tuple]], int, bool]: # Dummy implementation for case where federation sender isn't offloaded # to a worker. return [], 0, False async def _wake_destinations_needing_catchup(self) -> None: """ Wakes up destinations that need catch-up and are not currently being backed off from. In order to reduce load spikes, adds a delay between each destination. """ last_processed: Optional[str] = None while True: destinations_to_wake = ( await self.store.get_catch_up_outstanding_destinations(last_processed) ) if not destinations_to_wake: # finished waking all destinations! self._catchup_after_startup_timer = None break last_processed = destinations_to_wake[-1] destinations_to_wake = [ d for d in destinations_to_wake if self._federation_shard_config.should_handle(self._instance_name, d) ] for destination in destinations_to_wake: logger.info( "Destination %s has outstanding catch-up, waking up.", last_processed, ) self.wake_destination(destination) await self.clock.sleep(CATCH_UP_STARTUP_INTERVAL_SEC) synapse-1.53.0/synapse/federation/sender/per_destination_queue.py000066400000000000000000000715431420514467300253310ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import datetime import logging from types import TracebackType from typing import TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Tuple, Type import attr from prometheus_client import Counter from synapse.api.errors import ( FederationDeniedError, HttpResponseException, RequestSendFailed, ) from synapse.api.presence import UserPresenceState from synapse.events import EventBase from synapse.federation.units import Edu from synapse.handlers.presence import format_user_presence_state from synapse.logging import issue9533_logger from synapse.logging.opentracing import SynapseTags, set_tag from synapse.metrics import sent_transactions_counter from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import ReadReceipt from synapse.util.retryutils import NotRetryingDestination, get_retry_limiter if TYPE_CHECKING: import synapse.server # This is defined in the Matrix spec and enforced by the receiver. MAX_EDUS_PER_TRANSACTION = 100 logger = logging.getLogger(__name__) sent_edus_counter = Counter( "synapse_federation_client_sent_edus", "Total number of EDUs successfully sent" ) sent_edus_by_type = Counter( "synapse_federation_client_sent_edus_by_type", "Number of sent EDUs successfully sent, by event type", ["type"], ) class PerDestinationQueue: """ Manages the per-destination transmission queues. Args: hs transaction_sender destination: the server_name of the destination that we are managing transmission for. """ def __init__( self, hs: "synapse.server.HomeServer", transaction_manager: "synapse.federation.sender.TransactionManager", destination: str, ): self._server_name = hs.hostname self._clock = hs.get_clock() self._store = hs.get_datastore() self._transaction_manager = transaction_manager self._instance_name = hs.get_instance_name() self._federation_shard_config = hs.config.worker.federation_shard_config self._state = hs.get_state_handler() self._should_send_on_this_instance = True if not self._federation_shard_config.should_handle( self._instance_name, destination ): # We don't raise an exception here to avoid taking out any other # processing. We have a guard in `attempt_new_transaction` that # ensure we don't start sending stuff. logger.error( "Create a per destination queue for %s on wrong worker", destination, ) self._should_send_on_this_instance = False self._destination = destination self.transmission_loop_running = False # Flag to signal to any running transmission loop that there is new data # queued up to be sent. self._new_data_to_send = False # True whilst we are sending events that the remote homeserver missed # because it was unreachable. We start in this state so we can perform # catch-up at startup. # New events will only be sent once this is finished, at which point # _catching_up is flipped to False. self._catching_up: bool = True # The stream_ordering of the most recent PDU that was discarded due to # being in catch-up mode. self._catchup_last_skipped: int = 0 # Cache of the last successfully-transmitted stream ordering for this # destination (we are the only updater so this is safe) self._last_successful_stream_ordering: Optional[int] = None # a queue of pending PDUs self._pending_pdus: List[EventBase] = [] # XXX this is never actually used: see # https://github.com/matrix-org/synapse/issues/7549 self._pending_edus: List[Edu] = [] # Pending EDUs by their "key". Keyed EDUs are EDUs that get clobbered # based on their key (e.g. typing events by room_id) # Map of (edu_type, key) -> Edu self._pending_edus_keyed: Dict[Tuple[str, Hashable], Edu] = {} # Map of user_id -> UserPresenceState of pending presence to be sent to this # destination self._pending_presence: Dict[str, UserPresenceState] = {} # room_id -> receipt_type -> user_id -> receipt_dict self._pending_rrs: Dict[str, Dict[str, Dict[str, dict]]] = {} self._rrs_pending_flush = False # stream_id of last successfully sent to-device message. # NB: may be a long or an int. self._last_device_stream_id = 0 # stream_id of last successfully sent device list update. self._last_device_list_stream_id = 0 def __str__(self) -> str: return "PerDestinationQueue[%s]" % self._destination def pending_pdu_count(self) -> int: return len(self._pending_pdus) def pending_edu_count(self) -> int: return ( len(self._pending_edus) + len(self._pending_presence) + len(self._pending_edus_keyed) ) def send_pdu(self, pdu: EventBase) -> None: """Add a PDU to the queue, and start the transmission loop if necessary Args: pdu: pdu to send """ if not self._catching_up or self._last_successful_stream_ordering is None: # only enqueue the PDU if we are not catching up (False) or do not # yet know if we have anything to catch up (None) self._pending_pdus.append(pdu) else: assert pdu.internal_metadata.stream_ordering self._catchup_last_skipped = pdu.internal_metadata.stream_ordering self.attempt_new_transaction() def send_presence( self, states: Iterable[UserPresenceState], start_loop: bool = True ) -> None: """Add presence updates to the queue. Args: states: Presence updates to send start_loop: Whether to start the transmission loop if not already running. Args: states: presence to send """ self._pending_presence.update({state.user_id: state for state in states}) self._new_data_to_send = True if start_loop: self.attempt_new_transaction() def queue_read_receipt(self, receipt: ReadReceipt) -> None: """Add a RR to the list to be sent. Doesn't start the transmission loop yet (see flush_read_receipts_for_room) Args: receipt: receipt to be queued """ self._pending_rrs.setdefault(receipt.room_id, {}).setdefault( receipt.receipt_type, {} )[receipt.user_id] = {"event_ids": receipt.event_ids, "data": receipt.data} def flush_read_receipts_for_room(self, room_id: str) -> None: # if we don't have any read-receipts for this room, it may be that we've already # sent them out, so we don't need to flush. if room_id not in self._pending_rrs: return self._rrs_pending_flush = True self.attempt_new_transaction() def send_keyed_edu(self, edu: Edu, key: Hashable) -> None: self._pending_edus_keyed[(edu.edu_type, key)] = edu self.attempt_new_transaction() def send_edu(self, edu: Edu) -> None: self._pending_edus.append(edu) self.attempt_new_transaction() def attempt_new_transaction(self) -> None: """Try to start a new transaction to this destination If there is already a transaction in progress to this destination, returns immediately. Otherwise kicks off the process of sending a transaction in the background. """ # Mark that we (may) have new things to send, so that any running # transmission loop will recheck whether there is stuff to send. self._new_data_to_send = True if self.transmission_loop_running: # XXX: this can get stuck on by a never-ending # request at which point pending_pdus just keeps growing. # we need application-layer timeouts of some flavour of these # requests logger.debug("TX [%s] Transaction already in progress", self._destination) return if not self._should_send_on_this_instance: # We don't raise an exception here to avoid taking out any other # processing. logger.error( "Trying to start a transaction to %s on wrong worker", self._destination ) return logger.debug("TX [%s] Starting transaction loop", self._destination) run_as_background_process( "federation_transaction_transmission_loop", self._transaction_transmission_loop, ) async def _transaction_transmission_loop(self) -> None: pending_pdus: List[EventBase] = [] try: self.transmission_loop_running = True # This will throw if we wouldn't retry. We do this here so we fail # quickly, but we will later check this again in the http client, # hence why we throw the result away. await get_retry_limiter(self._destination, self._clock, self._store) if self._catching_up: # we potentially need to catch-up first await self._catch_up_transmission_loop() if self._catching_up: # not caught up yet return pending_pdus = [] while True: self._new_data_to_send = False async with _TransactionQueueManager(self) as ( pending_pdus, pending_edus, ): if not pending_pdus and not pending_edus: logger.debug("TX [%s] Nothing to send", self._destination) # If we've gotten told about new things to send during # checking for things to send, we try looking again. # Otherwise new PDUs or EDUs might arrive in the meantime, # but not get sent because we hold the # `transmission_loop_running` flag. if self._new_data_to_send: continue else: return if pending_pdus: logger.debug( "TX [%s] len(pending_pdus_by_dest[dest]) = %d", self._destination, len(pending_pdus), ) await self._transaction_manager.send_new_transaction( self._destination, pending_pdus, pending_edus ) sent_transactions_counter.inc() sent_edus_counter.inc(len(pending_edus)) for edu in pending_edus: sent_edus_by_type.labels(edu.edu_type).inc() except NotRetryingDestination as e: logger.debug( "TX [%s] not ready for retry yet (next retry at %s) - " "dropping transaction for now", self._destination, datetime.datetime.fromtimestamp( (e.retry_last_ts + e.retry_interval) / 1000.0 ), ) if e.retry_interval > 60 * 60 * 1000: # we won't retry for another hour! # (this suggests a significant outage) # We drop pending EDUs because otherwise they will # rack up indefinitely. # (Dropping PDUs is already performed by `_start_catching_up`.) # Note that: # - the EDUs that are being dropped here are those that we can # afford to drop (specifically, only typing notifications, # read receipts and presence updates are being dropped here) # - Other EDUs such as to_device messages are queued with a # different mechanism # - this is all volatile state that would be lost if the # federation sender restarted anyway # dropping read receipts is a bit sad but should be solved # through another mechanism, because this is all volatile! self._pending_edus = [] self._pending_edus_keyed = {} self._pending_presence = {} self._pending_rrs = {} self._start_catching_up() except FederationDeniedError as e: logger.info(e) except HttpResponseException as e: logger.warning( "TX [%s] Received %d response to transaction: %s", self._destination, e.code, e, ) except RequestSendFailed as e: logger.warning( "TX [%s] Failed to send transaction: %s", self._destination, e ) for p in pending_pdus: logger.info( "Failed to send event %s to %s", p.event_id, self._destination ) except Exception: logger.exception("TX [%s] Failed to send transaction", self._destination) for p in pending_pdus: logger.info( "Failed to send event %s to %s", p.event_id, self._destination ) finally: # We want to be *very* sure we clear this after we stop processing self.transmission_loop_running = False async def _catch_up_transmission_loop(self) -> None: first_catch_up_check = self._last_successful_stream_ordering is None if first_catch_up_check: # first catchup so get last_successful_stream_ordering from database self._last_successful_stream_ordering = ( await self._store.get_destination_last_successful_stream_ordering( self._destination ) ) if self._last_successful_stream_ordering is None: # if it's still None, then this means we don't have the information # in our database ­ we haven't successfully sent a PDU to this server # (at least since the introduction of the feature tracking # last_successful_stream_ordering). # Sadly, this means we can't do anything here as we don't know what # needs catching up — so catching up is futile; let's stop. self._catching_up = False return # get at most 50 catchup room/PDUs while True: event_ids = await self._store.get_catch_up_room_event_ids( self._destination, self._last_successful_stream_ordering, ) if not event_ids: # No more events to catch up on, but we can't ignore the chance # of a race condition, so we check that no new events have been # skipped due to us being in catch-up mode if self._catchup_last_skipped > self._last_successful_stream_ordering: # another event has been skipped because we were in catch-up mode continue # we are done catching up! self._catching_up = False break if first_catch_up_check: # as this is our check for needing catch-up, we may have PDUs in # the queue from before we *knew* we had to do catch-up, so # clear those out now. self._start_catching_up() # fetch the relevant events from the event store # - redacted behaviour of REDACT is fine, since we only send metadata # of redacted events to the destination. # - don't need to worry about rejected events as we do not actively # forward received events over federation. catchup_pdus = await self._store.get_events_as_list(event_ids) if not catchup_pdus: raise AssertionError( "No events retrieved when we asked for %r. " "This should not happen." % event_ids ) # We send transactions with events from one room only, as its likely # that the remote will have to do additional processing, which may # take some time. It's better to give it small amounts of work # rather than risk the request timing out and repeatedly being # retried, and not making any progress. # # Note: `catchup_pdus` will have exactly one PDU per room. for pdu in catchup_pdus: # The PDU from the DB will be the last PDU in the room from # *this server* that wasn't sent to the remote. However, other # servers may have sent lots of events since then, and we want # to try and tell the remote only about the *latest* events in # the room. This is so that it doesn't get inundated by events # from various parts of the DAG, which all need to be processed. # # Note: this does mean that in large rooms a server coming back # online will get sent the same events from all the different # servers, but the remote will correctly deduplicate them and # handle it only once. # Step 1, fetch the current extremities extrems = await self._store.get_prev_events_for_room(pdu.room_id) if pdu.event_id in extrems: # If the event is in the extremities, then great! We can just # use that without having to do further checks. room_catchup_pdus = [pdu] else: # If not, fetch the extremities and figure out which we can # send. extrem_events = await self._store.get_events_as_list(extrems) new_pdus = [] for p in extrem_events: # We pulled this from the DB, so it'll be non-null assert p.internal_metadata.stream_ordering # Filter out events that happened before the remote went # offline if ( p.internal_metadata.stream_ordering < self._last_successful_stream_ordering ): continue # Filter out events where the server is not in the room, # e.g. it may have left/been kicked. *Ideally* we'd pull # out the kick and send that, but it's a rare edge case # so we don't bother for now (the server that sent the # kick should send it out if its online). hosts = await self._state.get_hosts_in_room_at_events( p.room_id, [p.event_id] ) if self._destination not in hosts: continue new_pdus.append(p) # If we've filtered out all the extremities, fall back to # sending the original event. This should ensure that the # server gets at least some of missed events (especially if # the other sending servers are up). if new_pdus: room_catchup_pdus = new_pdus else: room_catchup_pdus = [pdu] logger.info( "Catching up rooms to %s: %r", self._destination, pdu.room_id ) await self._transaction_manager.send_new_transaction( self._destination, room_catchup_pdus, [] ) sent_transactions_counter.inc() # We pulled this from the DB, so it'll be non-null assert pdu.internal_metadata.stream_ordering # Note that we mark the last successful stream ordering as that # from the *original* PDU, rather than the PDU(s) we actually # send. This is because we use it to mark our position in the # queue of missed PDUs to process. self._last_successful_stream_ordering = ( pdu.internal_metadata.stream_ordering ) await self._store.set_destination_last_successful_stream_ordering( self._destination, self._last_successful_stream_ordering ) def _get_rr_edus(self, force_flush: bool) -> Iterable[Edu]: if not self._pending_rrs: return if not force_flush and not self._rrs_pending_flush: # not yet time for this lot return edu = Edu( origin=self._server_name, destination=self._destination, edu_type="m.receipt", content=self._pending_rrs, ) self._pending_rrs = {} self._rrs_pending_flush = False yield edu def _pop_pending_edus(self, limit: int) -> List[Edu]: pending_edus = self._pending_edus pending_edus, self._pending_edus = pending_edus[:limit], pending_edus[limit:] return pending_edus async def _get_device_update_edus(self, limit: int) -> Tuple[List[Edu], int]: last_device_list = self._last_device_list_stream_id # Retrieve list of new device updates to send to the destination now_stream_id, results = await self._store.get_device_updates_by_remote( self._destination, last_device_list, limit=limit ) edus = [ Edu( origin=self._server_name, destination=self._destination, edu_type=edu_type, content=content, ) for (edu_type, content) in results ] assert len(edus) <= limit, "get_device_updates_by_remote returned too many EDUs" return edus, now_stream_id async def _get_to_device_message_edus(self, limit: int) -> Tuple[List[Edu], int]: last_device_stream_id = self._last_device_stream_id to_device_stream_id = self._store.get_to_device_stream_token() contents, stream_id = await self._store.get_new_device_msgs_for_remote( self._destination, last_device_stream_id, to_device_stream_id, limit ) for content in contents: message_id = content.get("message_id") if not message_id: continue set_tag(SynapseTags.TO_DEVICE_MESSAGE_ID, message_id) edus = [ Edu( origin=self._server_name, destination=self._destination, edu_type="m.direct_to_device", content=content, ) for content in contents ] if edus: issue9533_logger.debug( "Sending %i to-device messages to %s, up to stream id %i", len(edus), self._destination, stream_id, ) return edus, stream_id def _start_catching_up(self) -> None: """ Marks this destination as being in catch-up mode. This throws away the PDU queue. """ self._catching_up = True self._pending_pdus = [] @attr.s(slots=True, auto_attribs=True) class _TransactionQueueManager: """A helper async context manager for pulling stuff off the queues and tracking what was last successfully sent, etc. """ queue: PerDestinationQueue _device_stream_id: Optional[int] = None _device_list_id: Optional[int] = None _last_stream_ordering: Optional[int] = None _pdus: List[EventBase] = attr.Factory(list) async def __aenter__(self) -> Tuple[List[EventBase], List[Edu]]: # First we calculate the EDUs we want to send, if any. # We start by fetching device related EDUs, i.e device updates and to # device messages. We have to keep 2 free slots for presence and rr_edus. limit = MAX_EDUS_PER_TRANSACTION - 2 device_update_edus, dev_list_id = await self.queue._get_device_update_edus( limit ) if device_update_edus: self._device_list_id = dev_list_id else: self.queue._last_device_list_stream_id = dev_list_id limit -= len(device_update_edus) ( to_device_edus, device_stream_id, ) = await self.queue._get_to_device_message_edus(limit) if to_device_edus: self._device_stream_id = device_stream_id else: self.queue._last_device_stream_id = device_stream_id pending_edus = device_update_edus + to_device_edus # Now add the read receipt EDU. pending_edus.extend(self.queue._get_rr_edus(force_flush=False)) # And presence EDU. if self.queue._pending_presence: pending_edus.append( Edu( origin=self.queue._server_name, destination=self.queue._destination, edu_type="m.presence", content={ "push": [ format_user_presence_state( presence, self.queue._clock.time_msec() ) for presence in self.queue._pending_presence.values() ] }, ) ) self.queue._pending_presence = {} # Finally add any other types of EDUs if there is room. pending_edus.extend( self.queue._pop_pending_edus(MAX_EDUS_PER_TRANSACTION - len(pending_edus)) ) while ( len(pending_edus) < MAX_EDUS_PER_TRANSACTION and self.queue._pending_edus_keyed ): _, val = self.queue._pending_edus_keyed.popitem() pending_edus.append(val) # Now we look for any PDUs to send, by getting up to 50 PDUs from the # queue self._pdus = self.queue._pending_pdus[:50] if not self._pdus and not pending_edus: return [], [] # if we've decided to send a transaction anyway, and we have room, we # may as well send any pending RRs if len(pending_edus) < MAX_EDUS_PER_TRANSACTION: pending_edus.extend(self.queue._get_rr_edus(force_flush=True)) if self._pdus: self._last_stream_ordering = self._pdus[ -1 ].internal_metadata.stream_ordering assert self._last_stream_ordering return self._pdus, pending_edus async def __aexit__( self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], tb: Optional[TracebackType], ) -> None: if exc_type is not None: # Failed to send transaction, so we bail out. return # Successfully sent transactions, so we remove pending PDUs from the queue if self._pdus: self.queue._pending_pdus = self.queue._pending_pdus[len(self._pdus) :] # Succeeded to send the transaction so we record where we have sent up # to in the various streams if self._device_stream_id: await self.queue._store.delete_device_msgs_for_remote( self.queue._destination, self._device_stream_id ) self.queue._last_device_stream_id = self._device_stream_id # also mark the device updates as sent if self._device_list_id: logger.info( "Marking as sent %r %r", self.queue._destination, self._device_list_id ) await self.queue._store.mark_as_sent_devices_by_remote( self.queue._destination, self._device_list_id ) self.queue._last_device_list_stream_id = self._device_list_id if self._last_stream_ordering: # we sent some PDUs and it was successful, so update our # last_successful_stream_ordering in the destinations table. await self.queue._store.set_destination_last_successful_stream_ordering( self.queue._destination, self._last_stream_ordering ) synapse-1.53.0/synapse/federation/sender/transaction_manager.py000066400000000000000000000152201420514467300247430ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, List from prometheus_client import Gauge from synapse.api.errors import HttpResponseException from synapse.events import EventBase from synapse.federation.persistence import TransactionActions from synapse.federation.units import Edu, Transaction from synapse.logging.opentracing import ( extract_text_map, set_tag, start_active_span_follows_from, tags, whitelisted_homeserver, ) from synapse.types import JsonDict from synapse.util import json_decoder from synapse.util.metrics import measure_func if TYPE_CHECKING: import synapse.server logger = logging.getLogger(__name__) issue_8631_logger = logging.getLogger("synapse.8631_debug") last_pdu_ts_metric = Gauge( "synapse_federation_last_sent_pdu_time", "The timestamp of the last PDU which was successfully sent to the given domain", labelnames=("server_name",), ) class TransactionManager: """Helper class which handles building and sending transactions shared between PerDestinationQueue objects """ def __init__(self, hs: "synapse.server.HomeServer"): self._server_name = hs.hostname self.clock = hs.get_clock() # nb must be called this for @measure_func self._store = hs.get_datastore() self._transaction_actions = TransactionActions(self._store) self._transport_layer = hs.get_federation_transport_client() self._federation_metrics_domains = ( hs.config.federation.federation_metrics_domains ) # HACK to get unique tx id self._next_txn_id = int(self.clock.time_msec()) @measure_func("_send_new_transaction") async def send_new_transaction( self, destination: str, pdus: List[EventBase], edus: List[Edu], ) -> None: """ Args: destination: The destination to send to (e.g. 'example.org') pdus: In-order list of PDUs to send edus: List of EDUs to send """ # Make a transaction-sending opentracing span. This span follows on from # all the edus in that transaction. This needs to be done since there is # no active span here, so if the edus were not received by the remote the # span would have no causality and it would be forgotten. span_contexts = [] keep_destination = whitelisted_homeserver(destination) for edu in edus: context = edu.get_context() if context: span_contexts.append(extract_text_map(json_decoder.decode(context))) if keep_destination: edu.strip_context() with start_active_span_follows_from("send_transaction", span_contexts): logger.debug("TX [%s] _attempt_new_transaction", destination) txn_id = str(self._next_txn_id) logger.debug( "TX [%s] {%s} Attempting new transaction (pdus: %d, edus: %d)", destination, txn_id, len(pdus), len(edus), ) transaction = Transaction( origin_server_ts=int(self.clock.time_msec()), transaction_id=txn_id, origin=self._server_name, destination=destination, pdus=[p.get_pdu_json() for p in pdus], edus=[edu.get_dict() for edu in edus], ) self._next_txn_id += 1 logger.info( "TX [%s] {%s} Sending transaction [%s], (PDUs: %d, EDUs: %d)", destination, txn_id, transaction.transaction_id, len(pdus), len(edus), ) if issue_8631_logger.isEnabledFor(logging.DEBUG): DEVICE_UPDATE_EDUS = {"m.device_list_update", "m.signing_key_update"} device_list_updates = [ edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS ] if device_list_updates: issue_8631_logger.debug( "about to send txn [%s] including device list updates: %s", transaction.transaction_id, device_list_updates, ) # Actually send the transaction # FIXME (erikj): This is a bit of a hack to make the Pdu age # keys work # FIXME (richardv): I also believe it no longer works. We (now?) store # "age_ts" in "unsigned" rather than at the top level. See # https://github.com/matrix-org/synapse/issues/8429. def json_data_cb() -> JsonDict: data = transaction.get_dict() now = int(self.clock.time_msec()) if "pdus" in data: for p in data["pdus"]: if "age_ts" in p: unsigned = p.setdefault("unsigned", {}) unsigned["age"] = now - int(p["age_ts"]) del p["age_ts"] return data try: response = await self._transport_layer.send_transaction( transaction, json_data_cb ) except HttpResponseException as e: code = e.code set_tag(tags.ERROR, True) logger.info("TX [%s] {%s} got %d response", destination, txn_id, code) raise logger.info("TX [%s] {%s} got 200 response", destination, txn_id) for e_id, r in response.get("pdus", {}).items(): if "error" in r: logger.warning( "TX [%s] {%s} Remote returned error for %s: %s", destination, txn_id, e_id, r, ) if pdus and destination in self._federation_metrics_domains: last_pdu = pdus[-1] last_pdu_ts_metric.labels(server_name=destination).set( last_pdu.origin_server_ts / 1000 ) synapse-1.53.0/synapse/federation/transport/000077500000000000000000000000001420514467300211265ustar00rootroot00000000000000synapse-1.53.0/synapse/federation/transport/__init__.py000066400000000000000000000016571420514467300232500ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """The transport layer is responsible for both sending transactions to remote homeservers and receiving a variety of requests from other homeservers. By default this is done over HTTPS (and all homeservers are required to support HTTPS), however individual pairings of servers may decide to communicate over a different (albeit still reliable) protocol. """ synapse-1.53.0/synapse/federation/transport/client.py000066400000000000000000001267721420514467300227750ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib from typing import ( Any, Awaitable, Callable, Collection, Dict, Generator, Iterable, List, Mapping, Optional, Tuple, Union, ) import attr import ijson from synapse.api.constants import Membership from synapse.api.errors import Codes, HttpResponseException, SynapseError from synapse.api.room_versions import RoomVersion from synapse.api.urls import ( FEDERATION_UNSTABLE_PREFIX, FEDERATION_V1_PREFIX, FEDERATION_V2_PREFIX, ) from synapse.events import EventBase, make_event_from_dict from synapse.federation.units import Transaction from synapse.http.matrixfederationclient import ByteParser from synapse.types import JsonDict logger = logging.getLogger(__name__) # Send join responses can be huge, so we set a separate limit here. The response # is parsed in a streaming manner, which helps alleviate the issue of memory # usage a bit. MAX_RESPONSE_SIZE_SEND_JOIN = 500 * 1024 * 1024 class TransportLayerClient: """Sends federation HTTP requests to other servers""" def __init__(self, hs): self.server_name = hs.hostname self.client = hs.get_federation_http_client() async def get_room_state_ids( self, destination: str, room_id: str, event_id: str ) -> JsonDict: """Requests all state for a given room from the given server at the given event. Returns the state's event_id's Args: destination: The host name of the remote homeserver we want to get the state from. context: The name of the context we want the state of event_id: The event we want the context at. Returns: Results in a dict received from the remote homeserver. """ logger.debug("get_room_state_ids dest=%s, room=%s", destination, room_id) path = _create_v1_path("/state_ids/%s", room_id) return await self.client.get_json( destination, path=path, args={"event_id": event_id}, try_trailing_slash_on_400=True, ) async def get_event( self, destination: str, event_id: str, timeout: Optional[int] = None ) -> JsonDict: """Requests the pdu with give id and origin from the given server. Args: destination: The host name of the remote homeserver we want to get the state from. event_id: The id of the event being requested. timeout: How long to try (in ms) the destination for before giving up. None indicates no timeout. Returns: Results in a dict received from the remote homeserver. """ logger.debug("get_pdu dest=%s, event_id=%s", destination, event_id) path = _create_v1_path("/event/%s", event_id) return await self.client.get_json( destination, path=path, timeout=timeout, try_trailing_slash_on_400=True ) async def backfill( self, destination: str, room_id: str, event_tuples: Collection[str], limit: int ) -> Optional[JsonDict]: """Requests `limit` previous PDUs in a given context before list of PDUs. Args: destination room_id event_tuples: Must be a Collection that is falsy when empty. (Iterable is not enough here!) limit Returns: Results in a dict received from the remote homeserver. """ logger.debug( "backfill dest=%s, room_id=%s, event_tuples=%r, limit=%s", destination, room_id, event_tuples, str(limit), ) if not event_tuples: # TODO: raise? return None path = _create_v1_path("/backfill/%s", room_id) args = {"v": event_tuples, "limit": [str(limit)]} return await self.client.get_json( destination, path=path, args=args, try_trailing_slash_on_400=True ) async def timestamp_to_event( self, destination: str, room_id: str, timestamp: int, direction: str ) -> Union[JsonDict, List]: """ Calls a remote federating server at `destination` asking for their closest event to the given timestamp in the given direction. Args: destination: Domain name of the remote homeserver room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: ["f"|"b"] to indicate whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: Response dict received from the remote homeserver. Raises: Various exceptions when the request fails """ path = _create_path( FEDERATION_UNSTABLE_PREFIX, "/org.matrix.msc3030/timestamp_to_event/%s", room_id, ) args = {"ts": [str(timestamp)], "dir": [direction]} remote_response = await self.client.get_json( destination, path=path, args=args, try_trailing_slash_on_400=True ) return remote_response async def send_transaction( self, transaction: Transaction, json_data_callback: Optional[Callable[[], JsonDict]] = None, ) -> JsonDict: """Sends the given Transaction to its destination Args: transaction Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Fails with ``HTTPRequestException`` if we get an HTTP response code >= 300. Fails with ``NotRetryingDestination`` if we are not yet ready to retry this server. Fails with ``FederationDeniedError`` if this destination is not on our federation whitelist """ logger.debug( "send_data dest=%s, txid=%s", transaction.destination, # type: ignore transaction.transaction_id, # type: ignore ) if transaction.destination == self.server_name: # type: ignore raise RuntimeError("Transport layer cannot send to itself!") # FIXME: This is only used by the tests. The actual json sent is # generated by the json_data_callback. json_data = transaction.get_dict() path = _create_v1_path("/send/%s", transaction.transaction_id) # type: ignore return await self.client.put_json( transaction.destination, # type: ignore path=path, data=json_data, json_data_callback=json_data_callback, long_retries=True, backoff_on_404=True, # If we get a 404 the other side has gone try_trailing_slash_on_400=True, ) async def make_query( self, destination: str, query_type: str, args: dict, retry_on_dns_fail: bool, ignore_backoff: bool = False, ) -> JsonDict: path = _create_v1_path("/query/%s", query_type) return await self.client.get_json( destination=destination, path=path, args=args, retry_on_dns_fail=retry_on_dns_fail, timeout=10000, ignore_backoff=ignore_backoff, ) async def make_membership_event( self, destination: str, room_id: str, user_id: str, membership: str, params: Optional[Mapping[str, Union[str, Iterable[str]]]], ) -> JsonDict: """Asks a remote server to build and sign us a membership event Note that this does not append any events to any graphs. Args: destination (str): address of remote homeserver room_id (str): room to join/leave user_id (str): user to be joined/left membership (str): one of join/leave params (dict[str, str|Iterable[str]]): Query parameters to include in the request. Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body (ie, the new event). Fails with ``HTTPRequestException`` if we get an HTTP response code >= 300. Fails with ``NotRetryingDestination`` if we are not yet ready to retry this server. Fails with ``FederationDeniedError`` if the remote destination is not in our federation whitelist """ valid_memberships = {Membership.JOIN, Membership.LEAVE, Membership.KNOCK} if membership not in valid_memberships: raise RuntimeError( "make_membership_event called with membership='%s', must be one of %s" % (membership, ",".join(valid_memberships)) ) path = _create_v1_path("/make_%s/%s/%s", membership, room_id, user_id) ignore_backoff = False retry_on_dns_fail = False if membership == Membership.LEAVE: # we particularly want to do our best to send leave events. The # problem is that if it fails, we won't retry it later, so if the # remote server was just having a momentary blip, the room will be # out of sync. ignore_backoff = True retry_on_dns_fail = True return await self.client.get_json( destination=destination, path=path, args=params, retry_on_dns_fail=retry_on_dns_fail, timeout=20000, ignore_backoff=ignore_backoff, ) async def send_join_v1( self, room_version: RoomVersion, destination: str, room_id: str, event_id: str, content: JsonDict, ) -> "SendJoinResponse": path = _create_v1_path("/send_join/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, parser=SendJoinParser(room_version, v1_api=True), max_response_size=MAX_RESPONSE_SIZE_SEND_JOIN, ) async def send_join_v2( self, room_version: RoomVersion, destination: str, room_id: str, event_id: str, content: JsonDict, ) -> "SendJoinResponse": path = _create_v2_path("/send_join/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, parser=SendJoinParser(room_version, v1_api=False), max_response_size=MAX_RESPONSE_SIZE_SEND_JOIN, ) async def send_leave_v1( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> Tuple[int, JsonDict]: path = _create_v1_path("/send_leave/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, # we want to do our best to send this through. The problem is # that if it fails, we won't retry it later, so if the remote # server was just having a momentary blip, the room will be out of # sync. ignore_backoff=True, ) async def send_leave_v2( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> JsonDict: path = _create_v2_path("/send_leave/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, # we want to do our best to send this through. The problem is # that if it fails, we won't retry it later, so if the remote # server was just having a momentary blip, the room will be out of # sync. ignore_backoff=True, ) async def send_knock_v1( self, destination: str, room_id: str, event_id: str, content: JsonDict, ) -> JsonDict: """ Sends a signed knock membership event to a remote server. This is the second step for knocking after make_knock. Args: destination: The remote homeserver. room_id: The ID of the room to knock on. event_id: The ID of the knock membership event that we're sending. content: The knock membership event that we're sending. Note that this is not the `content` field of the membership event, but the entire signed membership event itself represented as a JSON dict. Returns: The remote homeserver can optionally return some state from the room. The response dictionary is in the form: {"knock_state_events": [, ...]} The list of state events may be empty. """ path = _create_v1_path("/send_knock/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content ) async def send_invite_v1( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> Tuple[int, JsonDict]: path = _create_v1_path("/invite/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def send_invite_v2( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> JsonDict: path = _create_v2_path("/invite/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def get_public_rooms( self, remote_server: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[Dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Get the list of public rooms from a remote homeserver See synapse.federation.federation_client.FederationClient.get_public_rooms for more information. """ if search_filter: # this uses MSC2197 (Search Filtering over Federation) path = _create_v1_path("/publicRooms") data: Dict[str, Any] = { "include_all_networks": "true" if include_all_networks else "false" } if third_party_instance_id: data["third_party_instance_id"] = third_party_instance_id if limit: data["limit"] = str(limit) if since_token: data["since"] = since_token data["filter"] = search_filter try: response = await self.client.post_json( destination=remote_server, path=path, data=data, ignore_backoff=True ) except HttpResponseException as e: if e.code == 403: raise SynapseError( 403, "You are not allowed to view the public rooms list of %s" % (remote_server,), errcode=Codes.FORBIDDEN, ) raise else: path = _create_v1_path("/publicRooms") args: Dict[str, Any] = { "include_all_networks": "true" if include_all_networks else "false" } if third_party_instance_id: args["third_party_instance_id"] = (third_party_instance_id,) if limit: args["limit"] = [str(limit)] if since_token: args["since"] = [since_token] try: response = await self.client.get_json( destination=remote_server, path=path, args=args, ignore_backoff=True ) except HttpResponseException as e: if e.code == 403: raise SynapseError( 403, "You are not allowed to view the public rooms list of %s" % (remote_server,), errcode=Codes.FORBIDDEN, ) raise return response async def exchange_third_party_invite( self, destination: str, room_id: str, event_dict: JsonDict ) -> JsonDict: path = _create_v1_path("/exchange_third_party_invite/%s", room_id) return await self.client.put_json( destination=destination, path=path, data=event_dict ) async def get_event_auth( self, destination: str, room_id: str, event_id: str ) -> JsonDict: path = _create_v1_path("/event_auth/%s/%s", room_id, event_id) return await self.client.get_json(destination=destination, path=path) async def query_client_keys( self, destination: str, query_content: JsonDict, timeout: int ) -> JsonDict: """Query the device keys for a list of user ids hosted on a remote server. Request: { "device_keys": { "": [""] } } Response: { "device_keys": { "": { "": {...} } }, "master_key": { "": {...} } }, "self_signing_key": { "": {...} } } Args: destination: The server to query. query_content: The user ids to query. Returns: A dict containing device and cross-signing keys. """ path = _create_v1_path("/user/keys/query") return await self.client.post_json( destination=destination, path=path, data=query_content, timeout=timeout ) async def query_user_devices( self, destination: str, user_id: str, timeout: int ) -> JsonDict: """Query the devices for a user id hosted on a remote server. Response: { "stream_id": "...", "devices": [ { ... } ], "master_key": { "user_id": "", "usage": [...], "keys": {...}, "signatures": { "": {...} } }, "self_signing_key": { "user_id": "", "usage": [...], "keys": {...}, "signatures": { "": {...} } } } Args: destination: The server to query. query_content: The user ids to query. Returns: A dict containing device and cross-signing keys. """ path = _create_v1_path("/user/devices/%s", user_id) return await self.client.get_json( destination=destination, path=path, timeout=timeout ) async def claim_client_keys( self, destination: str, query_content: JsonDict, timeout: int ) -> JsonDict: """Claim one-time keys for a list of devices hosted on a remote server. Request: { "one_time_keys": { "": { "": "" } } } Response: { "device_keys": { "": { "": { ":": "" } } } } Args: destination: The server to query. query_content: The user ids to query. Returns: A dict containing the one-time keys. """ path = _create_v1_path("/user/keys/claim") return await self.client.post_json( destination=destination, path=path, data=query_content, timeout=timeout ) async def get_missing_events( self, destination: str, room_id: str, earliest_events: Iterable[str], latest_events: Iterable[str], limit: int, min_depth: int, timeout: int, ) -> JsonDict: path = _create_v1_path("/get_missing_events/%s", room_id) return await self.client.post_json( destination=destination, path=path, data={ "limit": int(limit), "min_depth": int(min_depth), "earliest_events": earliest_events, "latest_events": latest_events, }, timeout=timeout, ) async def get_group_profile( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get a group profile""" path = _create_v1_path("/groups/%s/profile", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def update_group_profile( self, destination: str, group_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """Update a remote group profile Args: destination group_id requester_user_id content: The new profile of the group """ path = _create_v1_path("/groups/%s/profile", group_id) return self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def get_group_summary( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get a group summary""" path = _create_v1_path("/groups/%s/summary", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def get_rooms_in_group( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get all rooms in a group""" path = _create_v1_path("/groups/%s/rooms", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def add_room_to_group( self, destination: str, group_id: str, requester_user_id: str, room_id: str, content: JsonDict, ) -> JsonDict: """Add a room to a group""" path = _create_v1_path("/groups/%s/room/%s", group_id, room_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def update_room_in_group( self, destination: str, group_id: str, requester_user_id: str, room_id: str, config_key: str, content: JsonDict, ) -> JsonDict: """Update room in group""" path = _create_v1_path( "/groups/%s/room/%s/config/%s", group_id, room_id, config_key ) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def remove_room_from_group( self, destination: str, group_id: str, requester_user_id: str, room_id: str ) -> JsonDict: """Remove a room from a group""" path = _create_v1_path("/groups/%s/room/%s", group_id, room_id) return await self.client.delete_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def get_users_in_group( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get users in a group""" path = _create_v1_path("/groups/%s/users", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def get_invited_users_in_group( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get users that have been invited to a group""" path = _create_v1_path("/groups/%s/invited_users", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def accept_group_invite( self, destination: str, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Accept a group invite""" path = _create_v1_path("/groups/%s/users/%s/accept_invite", group_id, user_id) return await self.client.post_json( destination=destination, path=path, data=content, ignore_backoff=True ) def join_group( self, destination: str, group_id: str, user_id: str, content: JsonDict ) -> Awaitable[JsonDict]: """Attempts to join a group""" path = _create_v1_path("/groups/%s/users/%s/join", group_id, user_id) return self.client.post_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def invite_to_group( self, destination: str, group_id: str, user_id: str, requester_user_id: str, content: JsonDict, ) -> JsonDict: """Invite a user to a group""" path = _create_v1_path("/groups/%s/users/%s/invite", group_id, user_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def invite_to_group_notification( self, destination: str, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Sent by group server to inform a user's server that they have been invited. """ path = _create_v1_path("/groups/local/%s/users/%s/invite", group_id, user_id) return await self.client.post_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def remove_user_from_group( self, destination: str, group_id: str, requester_user_id: str, user_id: str, content: JsonDict, ) -> JsonDict: """Remove a user from a group""" path = _create_v1_path("/groups/%s/users/%s/remove", group_id, user_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def remove_user_from_group_notification( self, destination: str, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Sent by group server to inform a user's server that they have been kicked from the group. """ path = _create_v1_path("/groups/local/%s/users/%s/remove", group_id, user_id) return await self.client.post_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def renew_group_attestation( self, destination: str, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Sent by either a group server or a user's server to periodically update the attestations """ path = _create_v1_path("/groups/%s/renew_attestation/%s", group_id, user_id) return await self.client.post_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def update_group_summary_room( self, destination: str, group_id: str, user_id: str, room_id: str, category_id: str, content: JsonDict, ) -> JsonDict: """Update a room entry in a group summary""" if category_id: path = _create_v1_path( "/groups/%s/summary/categories/%s/rooms/%s", group_id, category_id, room_id, ) else: path = _create_v1_path("/groups/%s/summary/rooms/%s", group_id, room_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": user_id}, data=content, ignore_backoff=True, ) async def delete_group_summary_room( self, destination: str, group_id: str, user_id: str, room_id: str, category_id: str, ) -> JsonDict: """Delete a room entry in a group summary""" if category_id: path = _create_v1_path( "/groups/%s/summary/categories/%s/rooms/%s", group_id, category_id, room_id, ) else: path = _create_v1_path("/groups/%s/summary/rooms/%s", group_id, room_id) return await self.client.delete_json( destination=destination, path=path, args={"requester_user_id": user_id}, ignore_backoff=True, ) async def get_group_categories( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get all categories in a group""" path = _create_v1_path("/groups/%s/categories", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def get_group_category( self, destination: str, group_id: str, requester_user_id: str, category_id: str ) -> JsonDict: """Get category info in a group""" path = _create_v1_path("/groups/%s/categories/%s", group_id, category_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def update_group_category( self, destination: str, group_id: str, requester_user_id: str, category_id: str, content: JsonDict, ) -> JsonDict: """Update a category in a group""" path = _create_v1_path("/groups/%s/categories/%s", group_id, category_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def delete_group_category( self, destination: str, group_id: str, requester_user_id: str, category_id: str ) -> JsonDict: """Delete a category in a group""" path = _create_v1_path("/groups/%s/categories/%s", group_id, category_id) return await self.client.delete_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def get_group_roles( self, destination: str, group_id: str, requester_user_id: str ) -> JsonDict: """Get all roles in a group""" path = _create_v1_path("/groups/%s/roles", group_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def get_group_role( self, destination: str, group_id: str, requester_user_id: str, role_id: str ) -> JsonDict: """Get a roles info""" path = _create_v1_path("/groups/%s/roles/%s", group_id, role_id) return await self.client.get_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def update_group_role( self, destination: str, group_id: str, requester_user_id: str, role_id: str, content: JsonDict, ) -> JsonDict: """Update a role in a group""" path = _create_v1_path("/groups/%s/roles/%s", group_id, role_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def delete_group_role( self, destination: str, group_id: str, requester_user_id: str, role_id: str ) -> JsonDict: """Delete a role in a group""" path = _create_v1_path("/groups/%s/roles/%s", group_id, role_id) return await self.client.delete_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def update_group_summary_user( self, destination: str, group_id: str, requester_user_id: str, user_id: str, role_id: str, content: JsonDict, ) -> JsonDict: """Update a users entry in a group""" if role_id: path = _create_v1_path( "/groups/%s/summary/roles/%s/users/%s", group_id, role_id, user_id ) else: path = _create_v1_path("/groups/%s/summary/users/%s", group_id, user_id) return await self.client.post_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def set_group_join_policy( self, destination: str, group_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """Sets the join policy for a group""" path = _create_v1_path("/groups/%s/settings/m.join_policy", group_id) return await self.client.put_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, data=content, ignore_backoff=True, ) async def delete_group_summary_user( self, destination: str, group_id: str, requester_user_id: str, user_id: str, role_id: str, ) -> JsonDict: """Delete a users entry in a group""" if role_id: path = _create_v1_path( "/groups/%s/summary/roles/%s/users/%s", group_id, role_id, user_id ) else: path = _create_v1_path("/groups/%s/summary/users/%s", group_id, user_id) return await self.client.delete_json( destination=destination, path=path, args={"requester_user_id": requester_user_id}, ignore_backoff=True, ) async def bulk_get_publicised_groups( self, destination: str, user_ids: Iterable[str] ) -> JsonDict: """Get the groups a list of users are publicising""" path = _create_v1_path("/get_groups_publicised") content = {"user_ids": user_ids} return await self.client.post_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def get_room_complexity(self, destination: str, room_id: str) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. """ path = _create_path(FEDERATION_UNSTABLE_PREFIX, "/rooms/%s/complexity", room_id) return await self.client.get_json(destination=destination, path=path) async def get_space_summary( self, destination: str, room_id: str, suggested_only: bool, max_rooms_per_space: Optional[int], exclude_rooms: List[str], ) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. suggested_only: if True, only suggested rooms will be returned max_rooms_per_space: an optional limit to the number of children to be returned per space exclude_rooms: a list of any rooms we can skip """ # TODO When switching to the stable endpoint, use GET instead of POST. path = _create_path( FEDERATION_UNSTABLE_PREFIX, "/org.matrix.msc2946/spaces/%s", room_id ) params = { "suggested_only": suggested_only, "exclude_rooms": exclude_rooms, } if max_rooms_per_space is not None: params["max_rooms_per_space"] = max_rooms_per_space return await self.client.post_json( destination=destination, path=path, data=params ) async def get_room_hierarchy( self, destination: str, room_id: str, suggested_only: bool ) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. suggested_only: if True, only suggested rooms will be returned """ path = _create_v1_path("/hierarchy/%s", room_id) return await self.client.get_json( destination=destination, path=path, args={"suggested_only": "true" if suggested_only else "false"}, ) async def get_room_hierarchy_unstable( self, destination: str, room_id: str, suggested_only: bool ) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. suggested_only: if True, only suggested rooms will be returned """ path = _create_path( FEDERATION_UNSTABLE_PREFIX, "/org.matrix.msc2946/hierarchy/%s", room_id ) return await self.client.get_json( destination=destination, path=path, args={"suggested_only": "true" if suggested_only else "false"}, ) def _create_path(federation_prefix: str, path: str, *args: str) -> str: """ Ensures that all args are url encoded. """ return federation_prefix + path % tuple(urllib.parse.quote(arg, "") for arg in args) def _create_v1_path(path: str, *args: str) -> str: """Creates a path against V1 federation API from the path template and args. Ensures that all args are url encoded. Example: _create_v1_path("/event/%s", event_id) Args: path: String template for the path args: Args to insert into path. Each arg will be url encoded """ return _create_path(FEDERATION_V1_PREFIX, path, *args) def _create_v2_path(path: str, *args: str) -> str: """Creates a path against V2 federation API from the path template and args. Ensures that all args are url encoded. Example: _create_v2_path("/event/%s", event_id) Args: path: String template for the path args: Args to insert into path. Each arg will be url encoded """ return _create_path(FEDERATION_V2_PREFIX, path, *args) @attr.s(slots=True, auto_attribs=True) class SendJoinResponse: """The parsed response of a `/send_join` request.""" # The list of auth events from the /send_join response. auth_events: List[EventBase] # The list of state from the /send_join response. state: List[EventBase] # The raw join event from the /send_join response. event_dict: JsonDict # The parsed join event from the /send_join response. This will be None if # "event" is not included in the response. event: Optional[EventBase] = None @ijson.coroutine def _event_parser(event_dict: JsonDict) -> Generator[None, Tuple[str, Any], None]: """Helper function for use with `ijson.kvitems_coro` to parse key-value pairs to add them to a given dictionary. """ while True: key, value = yield event_dict[key] = value @ijson.coroutine def _event_list_parser( room_version: RoomVersion, events: List[EventBase] ) -> Generator[None, JsonDict, None]: """Helper function for use with `ijson.items_coro` to parse an array of events and add them to the given list. """ while True: obj = yield event = make_event_from_dict(obj, room_version) events.append(event) class SendJoinParser(ByteParser[SendJoinResponse]): """A parser for the response to `/send_join` requests. Args: room_version: The version of the room. v1_api: Whether the response is in the v1 format. """ CONTENT_TYPE = "application/json" def __init__(self, room_version: RoomVersion, v1_api: bool): self._response = SendJoinResponse([], [], {}) self._room_version = room_version # The V1 API has the shape of `[200, {...}]`, which we handle by # prefixing with `item.*`. prefix = "item." if v1_api else "" self._coro_state = ijson.items_coro( _event_list_parser(room_version, self._response.state), prefix + "state.item", use_float=True, ) self._coro_auth = ijson.items_coro( _event_list_parser(room_version, self._response.auth_events), prefix + "auth_chain.item", use_float=True, ) # TODO Remove the unstable prefix when servers have updated. # # By re-using the same event dictionary this will cause the parsing of # org.matrix.msc3083.v2.event and event to stomp over each other. # Generally this should be fine. self._coro_unstable_event = ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "org.matrix.msc3083.v2.event", use_float=True, ) self._coro_event = ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "event", use_float=True, ) def write(self, data: bytes) -> int: self._coro_state.send(data) self._coro_auth.send(data) self._coro_unstable_event.send(data) self._coro_event.send(data) return len(data) def finish(self) -> SendJoinResponse: if self._response.event_dict: self._response.event = make_event_from_dict( self._response.event_dict, self._room_version ) return self._response synapse-1.53.0/synapse/federation/transport/server/000077500000000000000000000000001420514467300224345ustar00rootroot00000000000000synapse-1.53.0/synapse/federation/transport/server/__init__.py000066400000000000000000000254071420514467300245550ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Tuple, Type from typing_extensions import Literal from synapse.api.errors import FederationDeniedError, SynapseError from synapse.federation.transport.server._base import ( Authenticator, BaseFederationServlet, ) from synapse.federation.transport.server.federation import ( FEDERATION_SERVLET_CLASSES, FederationTimestampLookupServlet, ) from synapse.federation.transport.server.groups_local import GROUP_LOCAL_SERVLET_CLASSES from synapse.federation.transport.server.groups_server import ( GROUP_SERVER_SERVLET_CLASSES, ) from synapse.http.server import HttpServer, JsonResource from synapse.http.servlet import ( parse_boolean_from_args, parse_integer_from_args, parse_string_from_args, ) from synapse.types import JsonDict, ThirdPartyInstanceID from synapse.util.ratelimitutils import FederationRateLimiter if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class TransportLayerServer(JsonResource): """Handles incoming federation HTTP requests""" def __init__(self, hs: "HomeServer", servlet_groups: Optional[List[str]] = None): """Initialize the TransportLayerServer Will by default register all servlets. For custom behaviour, pass in a list of servlet_groups to register. Args: hs: homeserver servlet_groups: List of servlet groups to register. Defaults to ``DEFAULT_SERVLET_GROUPS``. """ self.hs = hs self.clock = hs.get_clock() self.servlet_groups = servlet_groups super().__init__(hs, canonical_json=False) self.authenticator = Authenticator(hs) self.ratelimiter = hs.get_federation_ratelimiter() self.register_servlets() def register_servlets(self) -> None: register_servlets( self.hs, resource=self, ratelimiter=self.ratelimiter, authenticator=self.authenticator, servlet_groups=self.servlet_groups, ) class PublicRoomList(BaseFederationServlet): """ Fetch the public room list for this server. This API returns information in the same format as /publicRooms on the client API, but will only ever include local public rooms and hence is intended for consumption by other homeservers. GET /publicRooms HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json { "chunk": [ { "aliases": [ "#test:localhost" ], "guest_can_join": false, "name": "test room", "num_joined_members": 3, "room_id": "!whkydVegtvatLfXmPN:localhost", "world_readable": false } ], "end": "END", "start": "START" } """ PATH = "/publicRooms" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_room_list_handler() self.allow_access = hs.config.server.allow_public_rooms_over_federation async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: if not self.allow_access: raise FederationDeniedError(origin) limit = parse_integer_from_args(query, "limit", 0) since_token = parse_string_from_args(query, "since", None) include_all_networks = parse_boolean_from_args( query, "include_all_networks", default=False ) third_party_instance_id = parse_string_from_args( query, "third_party_instance_id", None ) if include_all_networks: network_tuple = None elif third_party_instance_id: network_tuple = ThirdPartyInstanceID.from_string(third_party_instance_id) else: network_tuple = ThirdPartyInstanceID(None, None) if limit == 0: # zero is a special value which corresponds to no limit. limit = None data = await self.handler.get_local_public_room_list( limit, since_token, network_tuple=network_tuple, from_federation=True ) return 200, data async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: # This implements MSC2197 (Search Filtering over Federation) if not self.allow_access: raise FederationDeniedError(origin) limit: Optional[int] = int(content.get("limit", 100)) since_token = content.get("since", None) search_filter = content.get("filter", None) include_all_networks = content.get("include_all_networks", False) third_party_instance_id = content.get("third_party_instance_id", None) if include_all_networks: network_tuple = None if third_party_instance_id is not None: raise SynapseError( 400, "Can't use include_all_networks with an explicit network" ) elif third_party_instance_id is None: network_tuple = ThirdPartyInstanceID(None, None) else: network_tuple = ThirdPartyInstanceID.from_string(third_party_instance_id) if search_filter is None: logger.warning("Nonefilter") if limit == 0: # zero is a special value which corresponds to no limit. limit = None data = await self.handler.get_local_public_room_list( limit=limit, since_token=since_token, search_filter=search_filter, network_tuple=network_tuple, from_federation=True, ) return 200, data class FederationGroupsRenewAttestaionServlet(BaseFederationServlet): """A group or user's server renews their attestation""" PATH = "/groups/(?P[^/]*)/renew_attestation/(?P[^/]*)" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_groups_attestation_renewer() async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, JsonDict]: # We don't need to check auth here as we check the attestation signatures new_content = await self.handler.on_renew_attestation( group_id, user_id, content ) return 200, new_content class OpenIdUserInfo(BaseFederationServlet): """ Exchange a bearer token for information about a user. The response format should be compatible with: http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse GET /openid/userinfo?access_token=ABDEFGH HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json { "sub": "@userpart:example.org", } """ PATH = "/openid/userinfo" REQUIRE_AUTH = False def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_federation_server() async def on_GET( self, origin: Optional[str], content: Literal[None], query: Dict[bytes, List[bytes]], ) -> Tuple[int, JsonDict]: token = parse_string_from_args(query, "access_token") if token is None: return ( 401, {"errcode": "M_MISSING_TOKEN", "error": "Access Token required"}, ) user_id = await self.handler.on_openid_userinfo(token) if user_id is None: return ( 401, { "errcode": "M_UNKNOWN_TOKEN", "error": "Access Token unknown or expired", }, ) return 200, {"sub": user_id} DEFAULT_SERVLET_GROUPS: Dict[str, Iterable[Type[BaseFederationServlet]]] = { "federation": FEDERATION_SERVLET_CLASSES, "room_list": (PublicRoomList,), "group_server": GROUP_SERVER_SERVLET_CLASSES, "group_local": GROUP_LOCAL_SERVLET_CLASSES, "group_attestation": (FederationGroupsRenewAttestaionServlet,), "openid": (OpenIdUserInfo,), } def register_servlets( hs: "HomeServer", resource: HttpServer, authenticator: Authenticator, ratelimiter: FederationRateLimiter, servlet_groups: Optional[Iterable[str]] = None, ) -> None: """Initialize and register servlet classes. Will by default register all servlets. For custom behaviour, pass in a list of servlet_groups to register. Args: hs: homeserver resource: resource class to register to authenticator: authenticator to use ratelimiter: ratelimiter to use servlet_groups: List of servlet groups to register. Defaults to ``DEFAULT_SERVLET_GROUPS``. """ if not servlet_groups: servlet_groups = DEFAULT_SERVLET_GROUPS.keys() for servlet_group in servlet_groups: # Skip unknown servlet groups. if servlet_group not in DEFAULT_SERVLET_GROUPS: raise RuntimeError( f"Attempting to register unknown federation servlet: '{servlet_group}'" ) for servletclass in DEFAULT_SERVLET_GROUPS[servlet_group]: # Only allow the `/timestamp_to_event` servlet if msc3030 is enabled if ( servletclass == FederationTimestampLookupServlet and not hs.config.experimental.msc3030_enabled ): continue servletclass( hs=hs, authenticator=authenticator, ratelimiter=ratelimiter, server_name=hs.hostname, ).register(resource) synapse-1.53.0/synapse/federation/transport/server/_base.py000066400000000000000000000313111420514467300240560ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import functools import logging import re import time from typing import TYPE_CHECKING, Any, Awaitable, Callable, Optional, Tuple, cast from synapse.api.errors import Codes, FederationDeniedError, SynapseError from synapse.api.urls import FEDERATION_V1_PREFIX from synapse.http.server import HttpServer, ServletCallback from synapse.http.servlet import parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.logging.context import run_in_background from synapse.logging.opentracing import ( active_span, set_tag, span_context_from_request, start_active_span, start_active_span_follows_from, whitelisted_homeserver, ) from synapse.types import JsonDict from synapse.util.ratelimitutils import FederationRateLimiter from synapse.util.stringutils import parse_and_validate_server_name if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AuthenticationError(SynapseError): """There was a problem authenticating the request""" class NoAuthenticationError(AuthenticationError): """The request had no authentication information""" class Authenticator: def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self.keyring = hs.get_keyring() self.server_name = hs.hostname self.store = hs.get_datastore() self.federation_domain_whitelist = ( hs.config.federation.federation_domain_whitelist ) self.notifier = hs.get_notifier() self.replication_client = None if hs.config.worker.worker_app: self.replication_client = hs.get_tcp_replication() # A method just so we can pass 'self' as the authenticator to the Servlets async def authenticate_request( self, request: SynapseRequest, content: Optional[JsonDict] ) -> str: now = self._clock.time_msec() json_request: JsonDict = { "method": request.method.decode("ascii"), "uri": request.uri.decode("ascii"), "destination": self.server_name, "signatures": {}, } if content is not None: json_request["content"] = content origin = None auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") if not auth_headers: raise NoAuthenticationError( 401, "Missing Authorization headers", Codes.UNAUTHORIZED ) for auth in auth_headers: if auth.startswith(b"X-Matrix"): (origin, key, sig) = _parse_auth_header(auth) json_request["origin"] = origin json_request["signatures"].setdefault(origin, {})[key] = sig if ( self.federation_domain_whitelist is not None and origin not in self.federation_domain_whitelist ): raise FederationDeniedError(origin) if origin is None or not json_request["signatures"]: raise NoAuthenticationError( 401, "Missing Authorization headers", Codes.UNAUTHORIZED ) await self.keyring.verify_json_for_server( origin, json_request, now, ) logger.debug("Request from %s", origin) request.requester = origin # If we get a valid signed request from the other side, its probably # alive retry_timings = await self.store.get_destination_retry_timings(origin) if retry_timings and retry_timings.retry_last_ts: run_in_background(self.reset_retry_timings, origin) return origin async def reset_retry_timings(self, origin: str) -> None: try: logger.info("Marking origin %r as up", origin) await self.store.set_destination_retry_timings(origin, None, 0, 0) # Inform the relevant places that the remote server is back up. self.notifier.notify_remote_server_up(origin) if self.replication_client: # If we're on a worker we try and inform master about this. The # replication client doesn't hook into the notifier to avoid # infinite loops where we send a `REMOTE_SERVER_UP` command to # master, which then echoes it back to us which in turn pokes # the notifier. self.replication_client.send_remote_server_up(origin) except Exception: logger.exception("Error resetting retry timings on %s", origin) def _parse_auth_header(header_bytes: bytes) -> Tuple[str, str, str]: """Parse an X-Matrix auth header Args: header_bytes: header value Returns: origin, key id, signature. Raises: AuthenticationError if the header could not be parsed """ try: header_str = header_bytes.decode("utf-8") params = header_str.split(" ")[1].split(",") param_dict = {k: v for k, v in (kv.split("=", maxsplit=1) for kv in params)} def strip_quotes(value: str) -> str: if value.startswith('"'): return value[1:-1] else: return value origin = strip_quotes(param_dict["origin"]) # ensure that the origin is a valid server name parse_and_validate_server_name(origin) key = strip_quotes(param_dict["key"]) sig = strip_quotes(param_dict["sig"]) return origin, key, sig except Exception as e: logger.warning( "Error parsing auth header '%s': %s", header_bytes.decode("ascii", "replace"), e, ) raise AuthenticationError( 400, "Malformed Authorization header", Codes.UNAUTHORIZED ) class BaseFederationServlet: """Abstract base class for federation servlet classes. The servlet object should have a PATH attribute which takes the form of a regexp to match against the request path (excluding the /federation/v1 prefix). The servlet should also implement one or more of on_GET, on_POST, on_PUT, to match the appropriate HTTP method. These methods must be *asynchronous* and have the signature: on_(self, origin, content, query, **kwargs) With arguments: origin (unicode|None): The authenticated server_name of the calling server, unless REQUIRE_AUTH is set to False and authentication failed. content (unicode|None): decoded json body of the request. None if the request was a GET. query (dict[bytes, list[bytes]]): Query params from the request. url-decoded (ie, '+' and '%xx' are decoded) but note that it is *not* utf8-decoded yet. **kwargs (dict[unicode, unicode]): the dict mapping keys to path components as specified in the path match regexp. Returns: Optional[Tuple[int, object]]: either (response code, response object) to return a JSON response, or None if the request has already been handled. Raises: SynapseError: to return an error code Exception: other exceptions will be caught, logged, and a 500 will be returned. """ PATH = "" # Overridden in subclasses, the regex to match against the path. REQUIRE_AUTH = True PREFIX = FEDERATION_V1_PREFIX # Allows specifying the API version RATELIMIT = True # Whether to rate limit requests or not def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): self.hs = hs self.authenticator = authenticator self.ratelimiter = ratelimiter self.server_name = server_name def _wrap(self, func: Callable[..., Awaitable[Tuple[int, Any]]]) -> ServletCallback: authenticator = self.authenticator ratelimiter = self.ratelimiter @functools.wraps(func) async def new_func( request: SynapseRequest, *args: Any, **kwargs: str ) -> Optional[Tuple[int, Any]]: """A callback which can be passed to HttpServer.RegisterPaths Args: request: *args: unused? **kwargs: the dict mapping keys to path components as specified in the path match regexp. Returns: (response code, response object) as returned by the callback method. None if the request has already been handled. """ content = None if request.method in [b"PUT", b"POST"]: # TODO: Handle other method types? other content types? content = parse_json_object_from_request(request) try: with start_active_span("authenticate_request"): origin: Optional[str] = await authenticator.authenticate_request( request, content ) except NoAuthenticationError: origin = None if self.REQUIRE_AUTH: logger.warning( "authenticate_request failed: missing authentication" ) raise except Exception as e: logger.warning("authenticate_request failed: %s", e) raise # update the active opentracing span with the authenticated entity set_tag("authenticated_entity", origin) # if the origin is authenticated and whitelisted, use its span context # as the parent. context = None if origin and whitelisted_homeserver(origin): context = span_context_from_request(request) if context: servlet_span = active_span() # a scope which uses the origin's context as a parent processing_start_time = time.time() scope = start_active_span_follows_from( "incoming-federation-request", child_of=context, contexts=(servlet_span,), start_time=processing_start_time, ) else: # just use our context as a parent scope = start_active_span( "incoming-federation-request", ) try: with scope: if origin and self.RATELIMIT: with ratelimiter.ratelimit(origin) as d: await d if request._disconnected: logger.warning( "client disconnected before we started processing " "request" ) return None response = await func( origin, content, request.args, *args, **kwargs ) else: response = await func( origin, content, request.args, *args, **kwargs ) finally: # if we used the origin's context as the parent, add a new span using # the servlet span as a parent, so that we have a link if context: scope2 = start_active_span_follows_from( "process-federation_request", contexts=(scope.span,), start_time=processing_start_time, ) scope2.close() return response return cast(ServletCallback, new_func) def register(self, server: HttpServer) -> None: pattern = re.compile("^" + self.PREFIX + self.PATH + "$") for method in ("GET", "PUT", "POST"): code = getattr(self, "on_%s" % (method), None) if code is None: continue server.register_paths( method, (pattern,), self._wrap(code), self.__class__.__name__, ) synapse-1.53.0/synapse/federation/transport/server/federation.py000066400000000000000000000620751420514467300251400ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import ( TYPE_CHECKING, Dict, List, Mapping, Optional, Sequence, Tuple, Type, Union, ) from matrix_common.versionstring import get_distribution_version_string from typing_extensions import Literal from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersions from synapse.api.urls import FEDERATION_UNSTABLE_PREFIX, FEDERATION_V2_PREFIX from synapse.federation.transport.server._base import ( Authenticator, BaseFederationServlet, ) from synapse.http.servlet import ( parse_boolean_from_args, parse_integer_from_args, parse_string_from_args, parse_strings_from_args, ) from synapse.types import JsonDict from synapse.util.ratelimitutils import FederationRateLimiter if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) issue_8631_logger = logging.getLogger("synapse.8631_debug") class BaseFederationServerServlet(BaseFederationServlet): """Abstract base class for federation servlet classes which provides a federation server handler. See BaseFederationServlet for more information. """ def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_federation_server() class FederationSendServlet(BaseFederationServerServlet): PATH = "/send/(?P[^/]*)/?" # We ratelimit manually in the handler as we queue up the requests and we # don't want to fill up the ratelimiter with blocked requests. RATELIMIT = False # This is when someone is trying to send us a bunch of data. async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], transaction_id: str, ) -> Tuple[int, JsonDict]: """Called on PUT /send// Args: transaction_id: The transaction_id associated with this request. This is *not* None. Returns: Tuple of `(code, response)`, where `response` is a python dict to be converted into JSON that is used as the response body. """ # Parse the request try: transaction_data = content logger.debug("Decoded %s: %s", transaction_id, str(transaction_data)) logger.info( "Received txn %s from %s. (PDUs: %d, EDUs: %d)", transaction_id, origin, len(transaction_data.get("pdus", [])), len(transaction_data.get("edus", [])), ) if issue_8631_logger.isEnabledFor(logging.DEBUG): DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"] device_list_updates = [ edu.content for edu in transaction_data.get("edus", []) if edu.get("edu_type") in DEVICE_UPDATE_EDUS ] if device_list_updates: issue_8631_logger.debug( "received transaction [%s] including device list updates: %s", transaction_id, device_list_updates, ) except Exception as e: logger.exception(e) return 400, {"error": "Invalid transaction"} code, response = await self.handler.on_incoming_transaction( origin, transaction_id, self.server_name, transaction_data ) return code, response class FederationEventServlet(BaseFederationServerServlet): PATH = "/event/(?P[^/]*)/?" # This is when someone asks for a data item for a given server data_id pair. async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], event_id: str, ) -> Tuple[int, Union[JsonDict, str]]: return await self.handler.on_pdu_request(origin, event_id) class FederationStateV1Servlet(BaseFederationServerServlet): PATH = "/state/(?P[^/]*)/?" # This is when someone asks for all data for a given room. async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_room_state_request( origin, room_id, parse_string_from_args(query, "event_id", None, required=False), ) class FederationStateIdsServlet(BaseFederationServerServlet): PATH = "/state_ids/(?P[^/]*)/?" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_state_ids_request( origin, room_id, parse_string_from_args(query, "event_id", None, required=True), ) class FederationBackfillServlet(BaseFederationServerServlet): PATH = "/backfill/(?P[^/]*)/?" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: versions = [x.decode("ascii") for x in query[b"v"]] limit = parse_integer_from_args(query, "limit", None) if not limit: return 400, {"error": "Did not include limit param"} return await self.handler.on_backfill_request(origin, room_id, versions, limit) class FederationTimestampLookupServlet(BaseFederationServerServlet): """ API endpoint to fetch the `event_id` of the closest event to the given timestamp (`ts` query parameter) in the given direction (`dir` query parameter). Useful for other homeservers when they're unable to find an event locally. `ts` is a timestamp in milliseconds where we will find the closest event in the given direction. `dir` can be `f` or `b` to indicate forwards and backwards in time from the given timestamp. GET /_matrix/federation/unstable/org.matrix.msc3030/timestamp_to_event/?ts=&dir= { "event_id": ... } """ PATH = "/timestamp_to_event/(?P[^/]*)/?" PREFIX = FEDERATION_UNSTABLE_PREFIX + "/org.matrix.msc3030" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: timestamp = parse_integer_from_args(query, "ts", required=True) direction = parse_string_from_args( query, "dir", default="f", allowed_values=["f", "b"], required=True ) return await self.handler.on_timestamp_to_event_request( origin, room_id, timestamp, direction ) class FederationQueryServlet(BaseFederationServerServlet): PATH = "/query/(?P[^/]*)" # This is when we receive a server-server Query async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], query_type: str, ) -> Tuple[int, JsonDict]: args = {k.decode("utf8"): v[0].decode("utf-8") for k, v in query.items()} args["origin"] = origin return await self.handler.on_query_request(query_type, args) class FederationMakeJoinServlet(BaseFederationServerServlet): PATH = "/make_join/(?P[^/]*)/(?P[^/]*)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: """ Args: origin: The authenticated server_name of the calling server content: (GETs don't have bodies) query: Query params from the request. **kwargs: the dict mapping keys to path components as specified in the path match regexp. Returns: Tuple of (response code, response object) """ supported_versions = parse_strings_from_args(query, "ver", encoding="utf-8") if supported_versions is None: supported_versions = ["1"] result = await self.handler.on_make_join_request( origin, room_id, user_id, supported_versions=supported_versions ) return 200, result class FederationMakeLeaveServlet(BaseFederationServerServlet): PATH = "/make_leave/(?P[^/]*)/(?P[^/]*)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: result = await self.handler.on_make_leave_request(origin, room_id, user_id) return 200, result class FederationV1SendLeaveServlet(BaseFederationServerServlet): PATH = "/send_leave/(?P[^/]*)/(?P[^/]*)" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, Tuple[int, JsonDict]]: result = await self.handler.on_send_leave_request(origin, content, room_id) return 200, (200, result) class FederationV2SendLeaveServlet(BaseFederationServerServlet): PATH = "/send_leave/(?P[^/]*)/(?P[^/]*)" PREFIX = FEDERATION_V2_PREFIX async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: result = await self.handler.on_send_leave_request(origin, content, room_id) return 200, result class FederationMakeKnockServlet(BaseFederationServerServlet): PATH = "/make_knock/(?P[^/]*)/(?P[^/]*)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: # Retrieve the room versions the remote homeserver claims to support supported_versions = parse_strings_from_args( query, "ver", required=True, encoding="utf-8" ) result = await self.handler.on_make_knock_request( origin, room_id, user_id, supported_versions=supported_versions ) return 200, result class FederationV1SendKnockServlet(BaseFederationServerServlet): PATH = "/send_knock/(?P[^/]*)/(?P[^/]*)" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: result = await self.handler.on_send_knock_request(origin, content, room_id) return 200, result class FederationEventAuthServlet(BaseFederationServerServlet): PATH = "/event_auth/(?P[^/]*)/(?P[^/]*)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_event_auth(origin, room_id, event_id) class FederationV1SendJoinServlet(BaseFederationServerServlet): PATH = "/send_join/(?P[^/]*)/(?P[^/]*)" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, Tuple[int, JsonDict]]: # TODO(paul): assert that event_id parsed from path actually # match those given in content result = await self.handler.on_send_join_request(origin, content, room_id) return 200, (200, result) class FederationV2SendJoinServlet(BaseFederationServerServlet): PATH = "/send_join/(?P[^/]*)/(?P[^/]*)" PREFIX = FEDERATION_V2_PREFIX def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self._msc3706_enabled = hs.config.experimental.msc3706_enabled async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: # TODO(paul): assert that event_id parsed from path actually # match those given in content partial_state = False if self._msc3706_enabled: partial_state = parse_boolean_from_args( query, "org.matrix.msc3706.partial_state", default=False ) result = await self.handler.on_send_join_request( origin, content, room_id, caller_supports_partial_state=partial_state ) return 200, result class FederationV1InviteServlet(BaseFederationServerServlet): PATH = "/invite/(?P[^/]*)/(?P[^/]*)" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, Tuple[int, JsonDict]]: # We don't get a room version, so we have to assume its EITHER v1 or # v2. This is "fine" as the only difference between V1 and V2 is the # state resolution algorithm, and we don't use that for processing # invites result = await self.handler.on_invite_request( origin, content, room_version_id=RoomVersions.V1.identifier ) # V1 federation API is defined to return a content of `[200, {...}]` # due to a historical bug. return 200, (200, result) class FederationV2InviteServlet(BaseFederationServerServlet): PATH = "/invite/(?P[^/]*)/(?P[^/]*)" PREFIX = FEDERATION_V2_PREFIX async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: # TODO(paul): assert that room_id/event_id parsed from path actually # match those given in content room_version = content["room_version"] event = content["event"] invite_room_state = content["invite_room_state"] # Synapse expects invite_room_state to be in unsigned, as it is in v1 # API event.setdefault("unsigned", {})["invite_room_state"] = invite_room_state result = await self.handler.on_invite_request( origin, event, room_version_id=room_version ) return 200, result class FederationThirdPartyInviteExchangeServlet(BaseFederationServerServlet): PATH = "/exchange_third_party_invite/(?P[^/]*)" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: await self.handler.on_exchange_third_party_invite_request(content) return 200, {} class FederationClientKeysQueryServlet(BaseFederationServerServlet): PATH = "/user/keys/query" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: return await self.handler.on_query_client_keys(origin, content) class FederationUserDevicesQueryServlet(BaseFederationServerServlet): PATH = "/user/devices/(?P[^/]*)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], user_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_query_user_devices(origin, user_id) class FederationClientKeysClaimServlet(BaseFederationServerServlet): PATH = "/user/keys/claim" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: response = await self.handler.on_claim_client_keys(origin, content) return 200, response class FederationGetMissingEventsServlet(BaseFederationServerServlet): # TODO(paul): Why does this path alone end with "/?" optional? PATH = "/get_missing_events/(?P[^/]*)/?" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: limit = int(content.get("limit", 10)) earliest_events = content.get("earliest_events", []) latest_events = content.get("latest_events", []) result = await self.handler.on_get_missing_events( origin, room_id=room_id, earliest_events=earliest_events, latest_events=latest_events, limit=limit, ) return 200, result class On3pidBindServlet(BaseFederationServerServlet): PATH = "/3pid/onbind" REQUIRE_AUTH = False async def on_POST( self, origin: Optional[str], content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: if "invites" in content: last_exception = None for invite in content["invites"]: try: if "signed" not in invite or "token" not in invite["signed"]: message = ( "Rejecting received notification of third-" "party invite without signed: %s" % (invite,) ) logger.info(message) raise SynapseError(400, message) await self.handler.exchange_third_party_invite( invite["sender"], invite["mxid"], invite["room_id"], invite["signed"], ) except Exception as e: last_exception = e if last_exception: raise last_exception return 200, {} class FederationVersionServlet(BaseFederationServlet): PATH = "/version" REQUIRE_AUTH = False async def on_GET( self, origin: Optional[str], content: Literal[None], query: Dict[bytes, List[bytes]], ) -> Tuple[int, JsonDict]: return ( 200, { "server": { "name": "Synapse", "version": get_distribution_version_string("matrix-synapse"), } }, ) class FederationSpaceSummaryServlet(BaseFederationServlet): PREFIX = FEDERATION_UNSTABLE_PREFIX + "/org.matrix.msc2946" PATH = "/spaces/(?P[^/]*)" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_room_summary_handler() async def on_GET( self, origin: str, content: Literal[None], query: Mapping[bytes, Sequence[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: suggested_only = parse_boolean_from_args(query, "suggested_only", default=False) max_rooms_per_space = parse_integer_from_args(query, "max_rooms_per_space") if max_rooms_per_space is not None and max_rooms_per_space < 0: raise SynapseError( 400, "Value for 'max_rooms_per_space' must be a non-negative integer", Codes.BAD_JSON, ) exclude_rooms = parse_strings_from_args(query, "exclude_rooms", default=[]) return 200, await self.handler.federation_space_summary( origin, room_id, suggested_only, max_rooms_per_space, exclude_rooms ) # TODO When switching to the stable endpoint, remove the POST handler. async def on_POST( self, origin: str, content: JsonDict, query: Mapping[bytes, Sequence[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: suggested_only = content.get("suggested_only", False) if not isinstance(suggested_only, bool): raise SynapseError( 400, "'suggested_only' must be a boolean", Codes.BAD_JSON ) exclude_rooms = content.get("exclude_rooms", []) if not isinstance(exclude_rooms, list) or any( not isinstance(x, str) for x in exclude_rooms ): raise SynapseError(400, "bad value for 'exclude_rooms'", Codes.BAD_JSON) max_rooms_per_space = content.get("max_rooms_per_space") if max_rooms_per_space is not None: if not isinstance(max_rooms_per_space, int): raise SynapseError( 400, "bad value for 'max_rooms_per_space'", Codes.BAD_JSON ) if max_rooms_per_space < 0: raise SynapseError( 400, "Value for 'max_rooms_per_space' must be a non-negative integer", Codes.BAD_JSON, ) return 200, await self.handler.federation_space_summary( origin, room_id, suggested_only, max_rooms_per_space, exclude_rooms ) class FederationRoomHierarchyServlet(BaseFederationServlet): PATH = "/hierarchy/(?P[^/]*)" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_room_summary_handler() async def on_GET( self, origin: str, content: Literal[None], query: Mapping[bytes, Sequence[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: suggested_only = parse_boolean_from_args(query, "suggested_only", default=False) return 200, await self.handler.get_federation_hierarchy( origin, room_id, suggested_only ) class FederationRoomHierarchyUnstableServlet(FederationRoomHierarchyServlet): PREFIX = FEDERATION_UNSTABLE_PREFIX + "/org.matrix.msc2946" class RoomComplexityServlet(BaseFederationServlet): """ Indicates to other servers how complex (and therefore likely resource-intensive) a public room this server knows about is. """ PATH = "/rooms/(?P[^/]*)/complexity" PREFIX = FEDERATION_UNSTABLE_PREFIX def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self._store = self.hs.get_datastore() async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: is_public = await self._store.is_room_world_readable_or_publicly_joinable( room_id ) if not is_public: raise SynapseError(404, "Room not found", errcode=Codes.INVALID_PARAM) complexity = await self._store.get_room_complexity(room_id) return 200, complexity FEDERATION_SERVLET_CLASSES: Tuple[Type[BaseFederationServlet], ...] = ( FederationSendServlet, FederationEventServlet, FederationStateV1Servlet, FederationStateIdsServlet, FederationBackfillServlet, FederationTimestampLookupServlet, FederationQueryServlet, FederationMakeJoinServlet, FederationMakeLeaveServlet, FederationEventServlet, FederationV1SendJoinServlet, FederationV2SendJoinServlet, FederationV1SendLeaveServlet, FederationV2SendLeaveServlet, FederationV1InviteServlet, FederationV2InviteServlet, FederationGetMissingEventsServlet, FederationEventAuthServlet, FederationClientKeysQueryServlet, FederationUserDevicesQueryServlet, FederationClientKeysClaimServlet, FederationThirdPartyInviteExchangeServlet, On3pidBindServlet, FederationVersionServlet, RoomComplexityServlet, FederationSpaceSummaryServlet, FederationRoomHierarchyServlet, FederationRoomHierarchyUnstableServlet, FederationV1SendKnockServlet, FederationMakeKnockServlet, ) synapse-1.53.0/synapse/federation/transport/server/groups_local.py000066400000000000000000000071501420514467300255020ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Dict, List, Tuple, Type from synapse.api.errors import SynapseError from synapse.federation.transport.server._base import ( Authenticator, BaseFederationServlet, ) from synapse.handlers.groups_local import GroupsLocalHandler from synapse.types import JsonDict, get_domain_from_id from synapse.util.ratelimitutils import FederationRateLimiter if TYPE_CHECKING: from synapse.server import HomeServer class BaseGroupsLocalServlet(BaseFederationServlet): """Abstract base class for federation servlet classes which provides a groups local handler. See BaseFederationServlet for more information. """ def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_groups_local_handler() class FederationGroupsLocalInviteServlet(BaseGroupsLocalServlet): """A group server has invited a local user""" PATH = "/groups/local/(?P[^/]*)/users/(?P[^/]*)/invite" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, JsonDict]: if get_domain_from_id(group_id) != origin: raise SynapseError(403, "group_id doesn't match origin") assert isinstance( self.handler, GroupsLocalHandler ), "Workers cannot handle group invites." new_content = await self.handler.on_invite(group_id, user_id, content) return 200, new_content class FederationGroupsRemoveLocalUserServlet(BaseGroupsLocalServlet): """A group server has removed a local user""" PATH = "/groups/local/(?P[^/]*)/users/(?P[^/]*)/remove" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, None]: if get_domain_from_id(group_id) != origin: raise SynapseError(403, "user_id doesn't match origin") assert isinstance( self.handler, GroupsLocalHandler ), "Workers cannot handle group removals." await self.handler.user_removed_from_group(group_id, user_id, content) return 200, None class FederationGroupsBulkPublicisedServlet(BaseGroupsLocalServlet): """Get roles in a group""" PATH = "/get_groups_publicised" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: resp = await self.handler.bulk_get_publicised_groups( content["user_ids"], proxy=False ) return 200, resp GROUP_LOCAL_SERVLET_CLASSES: Tuple[Type[BaseFederationServlet], ...] = ( FederationGroupsLocalInviteServlet, FederationGroupsRemoveLocalUserServlet, FederationGroupsBulkPublicisedServlet, ) synapse-1.53.0/synapse/federation/transport/server/groups_server.py000066400000000000000000000561701420514467300257240ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Dict, List, Tuple, Type from typing_extensions import Literal from synapse.api.constants import MAX_GROUP_CATEGORYID_LENGTH, MAX_GROUP_ROLEID_LENGTH from synapse.api.errors import Codes, SynapseError from synapse.federation.transport.server._base import ( Authenticator, BaseFederationServlet, ) from synapse.http.servlet import parse_string_from_args from synapse.types import JsonDict, get_domain_from_id from synapse.util.ratelimitutils import FederationRateLimiter if TYPE_CHECKING: from synapse.server import HomeServer class BaseGroupsServerServlet(BaseFederationServlet): """Abstract base class for federation servlet classes which provides a groups server handler. See BaseFederationServlet for more information. """ def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_groups_server_handler() class FederationGroupsProfileServlet(BaseGroupsServerServlet): """Get/set the basic profile of a group on behalf of a user""" PATH = "/groups/(?P[^/]*)/profile" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.get_group_profile(group_id, requester_user_id) return 200, new_content async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.update_group_profile( group_id, requester_user_id, content ) return 200, new_content class FederationGroupsSummaryServlet(BaseGroupsServerServlet): PATH = "/groups/(?P[^/]*)/summary" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.get_group_summary(group_id, requester_user_id) return 200, new_content class FederationGroupsRoomsServlet(BaseGroupsServerServlet): """Get the rooms in a group on behalf of a user""" PATH = "/groups/(?P[^/]*)/rooms" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.get_rooms_in_group(group_id, requester_user_id) return 200, new_content class FederationGroupsAddRoomsServlet(BaseGroupsServerServlet): """Add/remove room from group""" PATH = "/groups/(?P[^/]*)/room/(?P[^/]*)" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, room_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.add_room_to_group( group_id, requester_user_id, room_id, content ) return 200, new_content async def on_DELETE( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, room_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.remove_room_from_group( group_id, requester_user_id, room_id ) return 200, new_content class FederationGroupsAddRoomsConfigServlet(BaseGroupsServerServlet): """Update room config in group""" PATH = ( "/groups/(?P[^/]*)/room/(?P[^/]*)" "/config/(?P[^/]*)" ) async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, room_id: str, config_key: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") result = await self.handler.update_room_in_group( group_id, requester_user_id, room_id, config_key, content ) return 200, result class FederationGroupsUsersServlet(BaseGroupsServerServlet): """Get the users in a group on behalf of a user""" PATH = "/groups/(?P[^/]*)/users" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.get_users_in_group(group_id, requester_user_id) return 200, new_content class FederationGroupsInvitedUsersServlet(BaseGroupsServerServlet): """Get the users that have been invited to a group""" PATH = "/groups/(?P[^/]*)/invited_users" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.get_invited_users_in_group( group_id, requester_user_id ) return 200, new_content class FederationGroupsInviteServlet(BaseGroupsServerServlet): """Ask a group server to invite someone to the group""" PATH = "/groups/(?P[^/]*)/users/(?P[^/]*)/invite" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.invite_to_group( group_id, user_id, requester_user_id, content ) return 200, new_content class FederationGroupsAcceptInviteServlet(BaseGroupsServerServlet): """Accept an invitation from the group server""" PATH = "/groups/(?P[^/]*)/users/(?P[^/]*)/accept_invite" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, JsonDict]: if get_domain_from_id(user_id) != origin: raise SynapseError(403, "user_id doesn't match origin") new_content = await self.handler.accept_invite(group_id, user_id, content) return 200, new_content class FederationGroupsJoinServlet(BaseGroupsServerServlet): """Attempt to join a group""" PATH = "/groups/(?P[^/]*)/users/(?P[^/]*)/join" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, JsonDict]: if get_domain_from_id(user_id) != origin: raise SynapseError(403, "user_id doesn't match origin") new_content = await self.handler.join_group(group_id, user_id, content) return 200, new_content class FederationGroupsRemoveUserServlet(BaseGroupsServerServlet): """Leave or kick a user from the group""" PATH = "/groups/(?P[^/]*)/users/(?P[^/]*)/remove" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, user_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.remove_user_from_group( group_id, user_id, requester_user_id, content ) return 200, new_content class FederationGroupsSummaryRoomsServlet(BaseGroupsServerServlet): """Add/remove a room from the group summary, with optional category. Matches both: - /groups/:group/summary/rooms/:room_id - /groups/:group/summary/categories/:category/rooms/:room_id """ PATH = ( "/groups/(?P[^/]*)/summary" "(/categories/(?P[^/]+))?" "/rooms/(?P[^/]*)" ) async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, category_id: str, room_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if category_id == "": raise SynapseError( 400, "category_id cannot be empty string", Codes.INVALID_PARAM ) if len(category_id) > MAX_GROUP_CATEGORYID_LENGTH: raise SynapseError( 400, "category_id may not be longer than %s characters" % (MAX_GROUP_CATEGORYID_LENGTH,), Codes.INVALID_PARAM, ) resp = await self.handler.update_group_summary_room( group_id, requester_user_id, room_id=room_id, category_id=category_id, content=content, ) return 200, resp async def on_DELETE( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, category_id: str, room_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if category_id == "": raise SynapseError(400, "category_id cannot be empty string") resp = await self.handler.delete_group_summary_room( group_id, requester_user_id, room_id=room_id, category_id=category_id ) return 200, resp class FederationGroupsCategoriesServlet(BaseGroupsServerServlet): """Get all categories for a group""" PATH = "/groups/(?P[^/]*)/categories/?" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") resp = await self.handler.get_group_categories(group_id, requester_user_id) return 200, resp class FederationGroupsCategoryServlet(BaseGroupsServerServlet): """Add/remove/get a category in a group""" PATH = "/groups/(?P[^/]*)/categories/(?P[^/]+)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, category_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") resp = await self.handler.get_group_category( group_id, requester_user_id, category_id ) return 200, resp async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, category_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if category_id == "": raise SynapseError(400, "category_id cannot be empty string") if len(category_id) > MAX_GROUP_CATEGORYID_LENGTH: raise SynapseError( 400, "category_id may not be longer than %s characters" % (MAX_GROUP_CATEGORYID_LENGTH,), Codes.INVALID_PARAM, ) resp = await self.handler.upsert_group_category( group_id, requester_user_id, category_id, content ) return 200, resp async def on_DELETE( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, category_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if category_id == "": raise SynapseError(400, "category_id cannot be empty string") resp = await self.handler.delete_group_category( group_id, requester_user_id, category_id ) return 200, resp class FederationGroupsRolesServlet(BaseGroupsServerServlet): """Get roles in a group""" PATH = "/groups/(?P[^/]*)/roles/?" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") resp = await self.handler.get_group_roles(group_id, requester_user_id) return 200, resp class FederationGroupsRoleServlet(BaseGroupsServerServlet): """Add/remove/get a role in a group""" PATH = "/groups/(?P[^/]*)/roles/(?P[^/]+)" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, role_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") resp = await self.handler.get_group_role(group_id, requester_user_id, role_id) return 200, resp async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, role_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if role_id == "": raise SynapseError( 400, "role_id cannot be empty string", Codes.INVALID_PARAM ) if len(role_id) > MAX_GROUP_ROLEID_LENGTH: raise SynapseError( 400, "role_id may not be longer than %s characters" % (MAX_GROUP_ROLEID_LENGTH,), Codes.INVALID_PARAM, ) resp = await self.handler.update_group_role( group_id, requester_user_id, role_id, content ) return 200, resp async def on_DELETE( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, role_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if role_id == "": raise SynapseError(400, "role_id cannot be empty string") resp = await self.handler.delete_group_role( group_id, requester_user_id, role_id ) return 200, resp class FederationGroupsSummaryUsersServlet(BaseGroupsServerServlet): """Add/remove a user from the group summary, with optional role. Matches both: - /groups/:group/summary/users/:user_id - /groups/:group/summary/roles/:role/users/:user_id """ PATH = ( "/groups/(?P[^/]*)/summary" "(/roles/(?P[^/]+))?" "/users/(?P[^/]*)" ) async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, role_id: str, user_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if role_id == "": raise SynapseError(400, "role_id cannot be empty string") if len(role_id) > MAX_GROUP_ROLEID_LENGTH: raise SynapseError( 400, "role_id may not be longer than %s characters" % (MAX_GROUP_ROLEID_LENGTH,), Codes.INVALID_PARAM, ) resp = await self.handler.update_group_summary_user( group_id, requester_user_id, user_id=user_id, role_id=role_id, content=content, ) return 200, resp async def on_DELETE( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], group_id: str, role_id: str, user_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") if role_id == "": raise SynapseError(400, "role_id cannot be empty string") resp = await self.handler.delete_group_summary_user( group_id, requester_user_id, user_id=user_id, role_id=role_id ) return 200, resp class FederationGroupsSettingJoinPolicyServlet(BaseGroupsServerServlet): """Sets whether a group is joinable without an invite or knock""" PATH = "/groups/(?P[^/]*)/settings/m.join_policy" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], group_id: str, ) -> Tuple[int, JsonDict]: requester_user_id = parse_string_from_args( query, "requester_user_id", required=True ) if get_domain_from_id(requester_user_id) != origin: raise SynapseError(403, "requester_user_id doesn't match origin") new_content = await self.handler.set_group_join_policy( group_id, requester_user_id, content ) return 200, new_content GROUP_SERVER_SERVLET_CLASSES: Tuple[Type[BaseFederationServlet], ...] = ( FederationGroupsProfileServlet, FederationGroupsSummaryServlet, FederationGroupsRoomsServlet, FederationGroupsUsersServlet, FederationGroupsInvitedUsersServlet, FederationGroupsInviteServlet, FederationGroupsAcceptInviteServlet, FederationGroupsJoinServlet, FederationGroupsRemoveUserServlet, FederationGroupsSummaryRoomsServlet, FederationGroupsCategoriesServlet, FederationGroupsCategoryServlet, FederationGroupsRolesServlet, FederationGroupsRoleServlet, FederationGroupsSummaryUsersServlet, FederationGroupsAddRoomsServlet, FederationGroupsAddRoomsConfigServlet, FederationGroupsSettingJoinPolicyServlet, ) synapse-1.53.0/synapse/federation/units.py000066400000000000000000000056021420514467300206110ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Defines the JSON structure of the protocol units used by the server to server protocol. """ import logging from typing import List, Optional import attr from synapse.types import JsonDict logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class Edu: """An Edu represents a piece of data sent from one homeserver to another. In comparison to Pdus, Edus are not persisted for a long time on disk, are not meaningful beyond a given pair of homeservers, and don't have an internal ID or previous references graph. """ edu_type: str content: dict origin: str destination: str def get_dict(self) -> JsonDict: return { "edu_type": self.edu_type, "content": self.content, } def get_internal_dict(self) -> JsonDict: return { "edu_type": self.edu_type, "content": self.content, "origin": self.origin, "destination": self.destination, } def get_context(self) -> str: return getattr(self, "content", {}).get("org.matrix.opentracing_context", "{}") def strip_context(self) -> None: getattr(self, "content", {})["org.matrix.opentracing_context"] = "{}" def _none_to_list(edus: Optional[List[JsonDict]]) -> List[JsonDict]: if edus is None: return [] return edus @attr.s(slots=True, frozen=True, auto_attribs=True) class Transaction: """A transaction is a list of Pdus and Edus to be sent to a remote home server with some extra metadata. Example transaction:: { "origin": "foo", "prev_ids": ["abc", "def"], "pdus": [ ... ], } """ # Required keys. transaction_id: str origin: str destination: str origin_server_ts: int pdus: List[JsonDict] = attr.ib(factory=list, converter=_none_to_list) edus: List[JsonDict] = attr.ib(factory=list, converter=_none_to_list) def get_dict(self) -> JsonDict: """A JSON-ready dictionary of valid keys which aren't internal.""" result = { "origin": self.origin, "origin_server_ts": self.origin_server_ts, "pdus": self.pdus, } if self.edus: result["edus"] = self.edus return result synapse-1.53.0/synapse/groups/000077500000000000000000000000001420514467300162715ustar00rootroot00000000000000synapse-1.53.0/synapse/groups/__init__.py000066400000000000000000000000001420514467300203700ustar00rootroot00000000000000synapse-1.53.0/synapse/groups/attestations.py000066400000000000000000000201451420514467300213670ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Attestations ensure that users and groups can't lie about their memberships. When a user joins a group the HS and GS swap attestations, which allow them both to independently prove to third parties their membership.These attestations have a validity period so need to be periodically renewed. If a user leaves (or gets kicked out of) a group, either side can still use their attestation to "prove" their membership, until the attestation expires. Therefore attestations shouldn't be relied on to prove membership in important cases, but can for less important situations, e.g. showing a users membership of groups on their profile, showing flairs, etc. An attestation is a signed blob of json that looks like: { "user_id": "@foo:a.example.com", "group_id": "+bar:b.example.com", "valid_until_ms": 1507994728530, "signatures":{"matrix.org":{"ed25519:auto":"..."}} } """ import logging import random from typing import TYPE_CHECKING, Optional, Tuple from signedjson.sign import sign_json from twisted.internet.defer import Deferred from synapse.api.errors import HttpResponseException, RequestSendFailed, SynapseError from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import JsonDict, get_domain_from_id if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Default validity duration for new attestations we create DEFAULT_ATTESTATION_LENGTH_MS = 3 * 24 * 60 * 60 * 1000 # We add some jitter to the validity duration of attestations so that if we # add lots of users at once we don't need to renew them all at once. # The jitter is a multiplier picked randomly between the first and second number DEFAULT_ATTESTATION_JITTER = (0.9, 1.3) # Start trying to update our attestations when they come this close to expiring UPDATE_ATTESTATION_TIME_MS = 1 * 24 * 60 * 60 * 1000 class GroupAttestationSigning: """Creates and verifies group attestations.""" def __init__(self, hs: "HomeServer"): self.keyring = hs.get_keyring() self.clock = hs.get_clock() self.server_name = hs.hostname self.signing_key = hs.signing_key async def verify_attestation( self, attestation: JsonDict, group_id: str, user_id: str, server_name: Optional[str] = None, ) -> None: """Verifies that the given attestation matches the given parameters. An optional server_name can be supplied to explicitly set which server's signature is expected. Otherwise assumes that either the group_id or user_id is local and uses the other's server as the one to check. """ if not server_name: if get_domain_from_id(group_id) == self.server_name: server_name = get_domain_from_id(user_id) elif get_domain_from_id(user_id) == self.server_name: server_name = get_domain_from_id(group_id) else: raise Exception("Expected either group_id or user_id to be local") if user_id != attestation["user_id"]: raise SynapseError(400, "Attestation has incorrect user_id") if group_id != attestation["group_id"]: raise SynapseError(400, "Attestation has incorrect group_id") valid_until_ms = attestation["valid_until_ms"] # TODO: We also want to check that *new* attestations that people give # us to store are valid for at least a little while. now = self.clock.time_msec() if valid_until_ms < now: raise SynapseError(400, "Attestation expired") assert server_name is not None await self.keyring.verify_json_for_server( server_name, attestation, now, ) def create_attestation(self, group_id: str, user_id: str) -> JsonDict: """Create an attestation for the group_id and user_id with default validity length. """ validity_period = DEFAULT_ATTESTATION_LENGTH_MS * random.uniform( *DEFAULT_ATTESTATION_JITTER ) valid_until_ms = int(self.clock.time_msec() + validity_period) return sign_json( { "group_id": group_id, "user_id": user_id, "valid_until_ms": valid_until_ms, }, self.server_name, self.signing_key, ) class GroupAttestionRenewer: """Responsible for sending and receiving attestation updates.""" def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.store = hs.get_datastore() self.assestations = hs.get_groups_attestation_signing() self.transport_client = hs.get_federation_transport_client() self.is_mine_id = hs.is_mine_id self.attestations = hs.get_groups_attestation_signing() if not hs.config.worker.worker_app: self._renew_attestations_loop = self.clock.looping_call( self._start_renew_attestations, 30 * 60 * 1000 ) async def on_renew_attestation( self, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """When a remote updates an attestation""" attestation = content["attestation"] if not self.is_mine_id(group_id) and not self.is_mine_id(user_id): raise SynapseError(400, "Neither user not group are on this server") await self.attestations.verify_attestation( attestation, user_id=user_id, group_id=group_id ) await self.store.update_remote_attestion(group_id, user_id, attestation) return {} def _start_renew_attestations(self) -> "Deferred[None]": return run_as_background_process("renew_attestations", self._renew_attestations) async def _renew_attestations(self) -> None: """Called periodically to check if we need to update any of our attestations""" now = self.clock.time_msec() rows = await self.store.get_attestations_need_renewals( now + UPDATE_ATTESTATION_TIME_MS ) async def _renew_attestation(group_user: Tuple[str, str]) -> None: group_id, user_id = group_user try: if not self.is_mine_id(group_id): destination = get_domain_from_id(group_id) elif not self.is_mine_id(user_id): destination = get_domain_from_id(user_id) else: logger.warning( "Incorrectly trying to do attestations for user: %r in %r", user_id, group_id, ) await self.store.remove_attestation_renewal(group_id, user_id) return attestation = self.attestations.create_attestation(group_id, user_id) await self.transport_client.renew_group_attestation( destination, group_id, user_id, content={"attestation": attestation} ) await self.store.update_attestation_renewal( group_id, user_id, attestation ) except (RequestSendFailed, HttpResponseException) as e: logger.warning( "Failed to renew attestation of %r in %r: %s", user_id, group_id, e ) except Exception: logger.exception( "Error renewing attestation of %r in %r", user_id, group_id ) for row in rows: await _renew_attestation((row["group_id"], row["user_id"])) synapse-1.53.0/synapse/groups/groups_server.py000066400000000000000000001057371420514467300215650ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2018 New Vector Ltd # Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional from synapse.api.errors import Codes, SynapseError from synapse.handlers.groups_local import GroupsLocalHandler from synapse.handlers.profile import MAX_AVATAR_URL_LEN, MAX_DISPLAYNAME_LEN from synapse.types import GroupID, JsonDict, RoomID, UserID, get_domain_from_id from synapse.util.async_helpers import concurrently_execute if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # TODO: Allow users to "knock" or simply join depending on rules # TODO: Federation admin APIs # TODO: is_privileged flag to users and is_public to users and rooms # TODO: Audit log for admins (profile updates, membership changes, users who tried # to join but were rejected, etc) # TODO: Flairs # Note that the maximum lengths are somewhat arbitrary. MAX_SHORT_DESC_LEN = 1000 MAX_LONG_DESC_LEN = 10000 class GroupsServerWorkerHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self.room_list_handler = hs.get_room_list_handler() self.auth = hs.get_auth() self.clock = hs.get_clock() self.keyring = hs.get_keyring() self.is_mine_id = hs.is_mine_id self.signing_key = hs.signing_key self.server_name = hs.hostname self.attestations = hs.get_groups_attestation_signing() self.transport_client = hs.get_federation_transport_client() self.profile_handler = hs.get_profile_handler() async def check_group_is_ours( self, group_id: str, requester_user_id: str, and_exists: bool = False, and_is_admin: Optional[str] = None, ) -> Optional[dict]: """Check that the group is ours, and optionally if it exists. If group does exist then return group. Args: group_id: The group ID to check. requester_user_id: The user ID of the requester. and_exists: whether to also check if group exists and_is_admin: whether to also check if given str is a user_id that is an admin """ if not self.is_mine_id(group_id): raise SynapseError(400, "Group not on this server") group = await self.store.get_group(group_id) if and_exists and not group: raise SynapseError(404, "Unknown group") is_user_in_group = await self.store.is_user_in_group( requester_user_id, group_id ) if group and not is_user_in_group and not group["is_public"]: raise SynapseError(404, "Unknown group") if and_is_admin: is_admin = await self.store.is_user_admin_in_group(group_id, and_is_admin) if not is_admin: raise SynapseError(403, "User is not admin in group") return group async def get_group_summary( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get the summary for a group as seen by requester_user_id. The group summary consists of the profile of the room, and a curated list of users and rooms. These list *may* be organised by role/category. The roles/categories are ordered, and so are the users/rooms within them. A user/room may appear in multiple roles/categories. """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) is_user_in_group = await self.store.is_user_in_group( requester_user_id, group_id ) profile = await self.get_group_profile(group_id, requester_user_id) users, roles = await self.store.get_users_for_summary_by_role( group_id, include_private=is_user_in_group ) # TODO: Add profiles to users rooms, categories = await self.store.get_rooms_for_summary_by_category( group_id, include_private=is_user_in_group ) for room_entry in rooms: room_id = room_entry["room_id"] joined_users = await self.store.get_users_in_room(room_id) entry = await self.room_list_handler.generate_room_entry( room_id, len(joined_users), with_alias=False, allow_private=True ) if entry is None: continue entry = dict(entry) # so we don't change what's cached entry.pop("room_id", None) room_entry["profile"] = entry rooms.sort(key=lambda e: e.get("order", 0)) for user in users: user_id = user["user_id"] if not self.is_mine_id(requester_user_id): attestation = await self.store.get_remote_attestation(group_id, user_id) if not attestation: continue user["attestation"] = attestation else: user["attestation"] = self.attestations.create_attestation( group_id, user_id ) user_profile = await self.profile_handler.get_profile_from_cache(user_id) user.update(user_profile) users.sort(key=lambda e: e.get("order", 0)) membership_info = await self.store.get_users_membership_info_in_group( group_id, requester_user_id ) return { "profile": profile, "users_section": { "users": users, "roles": roles, "total_user_count_estimate": 0, # TODO }, "rooms_section": { "rooms": rooms, "categories": categories, "total_room_count_estimate": 0, # TODO }, "user": membership_info, } async def get_group_categories( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get all categories in a group (as seen by user)""" await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) categories = await self.store.get_group_categories(group_id=group_id) return {"categories": categories} async def get_group_category( self, group_id: str, requester_user_id: str, category_id: str ) -> JsonDict: """Get a specific category in a group (as seen by user)""" await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) return await self.store.get_group_category( group_id=group_id, category_id=category_id ) async def get_group_roles(self, group_id: str, requester_user_id: str) -> JsonDict: """Get all roles in a group (as seen by user)""" await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) roles = await self.store.get_group_roles(group_id=group_id) return {"roles": roles} async def get_group_role( self, group_id: str, requester_user_id: str, role_id: str ) -> JsonDict: """Get a specific role in a group (as seen by user)""" await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) return await self.store.get_group_role(group_id=group_id, role_id=role_id) async def get_group_profile( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get the group profile as seen by requester_user_id""" await self.check_group_is_ours(group_id, requester_user_id) group = await self.store.get_group(group_id) if group: cols = [ "name", "short_description", "long_description", "avatar_url", "is_public", ] group_description = {key: group[key] for key in cols} group_description["is_openly_joinable"] = group["join_policy"] == "open" return group_description else: raise SynapseError(404, "Unknown group") async def get_users_in_group( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get the users in group as seen by requester_user_id. The ordering is arbitrary at the moment """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) is_user_in_group = await self.store.is_user_in_group( requester_user_id, group_id ) user_results = await self.store.get_users_in_group( group_id, include_private=is_user_in_group ) chunk = [] for user_result in user_results: g_user_id = user_result["user_id"] is_public = user_result["is_public"] is_privileged = user_result["is_admin"] entry = {"user_id": g_user_id} profile = await self.profile_handler.get_profile_from_cache(g_user_id) entry.update(profile) entry["is_public"] = bool(is_public) entry["is_privileged"] = bool(is_privileged) if not self.is_mine_id(g_user_id): attestation = await self.store.get_remote_attestation( group_id, g_user_id ) if not attestation: continue entry["attestation"] = attestation else: entry["attestation"] = self.attestations.create_attestation( group_id, g_user_id ) chunk.append(entry) # TODO: If admin add lists of users whose attestations have timed out return {"chunk": chunk, "total_user_count_estimate": len(user_results)} async def get_invited_users_in_group( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get the users that have been invited to a group as seen by requester_user_id. The ordering is arbitrary at the moment """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) is_user_in_group = await self.store.is_user_in_group( requester_user_id, group_id ) if not is_user_in_group: raise SynapseError(403, "User not in group") invited_users = await self.store.get_invited_users_in_group(group_id) user_profiles = [] for user_id in invited_users: user_profile = {"user_id": user_id} try: profile = await self.profile_handler.get_profile_from_cache(user_id) user_profile.update(profile) except Exception as e: logger.warning("Error getting profile for %s: %s", user_id, e) user_profiles.append(user_profile) return {"chunk": user_profiles, "total_user_count_estimate": len(invited_users)} async def get_rooms_in_group( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get the rooms in group as seen by requester_user_id This returns rooms in order of decreasing number of joined users """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) is_user_in_group = await self.store.is_user_in_group( requester_user_id, group_id ) # Note! room_results["is_public"] is about whether the room is considered # public from the group's point of view. (i.e. whether non-group members # should be able to see the room is in the group). # This is not the same as whether the room itself is public (in the sense # of being visible in the room directory). # As such, room_results["is_public"] itself is not sufficient to determine # whether any given user is permitted to see the room's metadata. room_results = await self.store.get_rooms_in_group( group_id, include_private=is_user_in_group ) chunk = [] for room_result in room_results: room_id = room_result["room_id"] joined_users = await self.store.get_users_in_room(room_id) # check the user is actually allowed to see the room before showing it to them allow_private = requester_user_id in joined_users entry = await self.room_list_handler.generate_room_entry( room_id, len(joined_users), with_alias=False, allow_private=allow_private, ) if not entry: continue entry["is_public"] = bool(room_result["is_public"]) chunk.append(entry) chunk.sort(key=lambda e: -e["num_joined_members"]) return {"chunk": chunk, "total_room_count_estimate": len(chunk)} class GroupsServerHandler(GroupsServerWorkerHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) # Ensure attestations get renewed hs.get_groups_attestation_renewer() async def update_group_summary_room( self, group_id: str, requester_user_id: str, room_id: str, category_id: str, content: JsonDict, ) -> JsonDict: """Add/update a room to the group summary""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) RoomID.from_string(room_id) # Ensure valid room id order = content.get("order", None) is_public = _parse_visibility_from_contents(content) await self.store.add_room_to_summary( group_id=group_id, room_id=room_id, category_id=category_id, order=order, is_public=is_public, ) return {} async def delete_group_summary_room( self, group_id: str, requester_user_id: str, room_id: str, category_id: str ) -> JsonDict: """Remove a room from the summary""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) await self.store.remove_room_from_summary( group_id=group_id, room_id=room_id, category_id=category_id ) return {} async def set_group_join_policy( self, group_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """Sets the group join policy. Currently supported policies are: - "invite": an invite must be received and accepted in order to join. - "open": anyone can join. """ await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) join_policy = _parse_join_policy_from_contents(content) if join_policy is None: raise SynapseError(400, "No value specified for 'm.join_policy'") await self.store.set_group_join_policy(group_id, join_policy=join_policy) return {} async def update_group_category( self, group_id: str, requester_user_id: str, category_id: str, content: JsonDict ) -> JsonDict: """Add/Update a group category""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) is_public = _parse_visibility_from_contents(content) profile = content.get("profile") await self.store.upsert_group_category( group_id=group_id, category_id=category_id, is_public=is_public, profile=profile, ) return {} async def delete_group_category( self, group_id: str, requester_user_id: str, category_id: str ) -> JsonDict: """Delete a group category""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) await self.store.remove_group_category( group_id=group_id, category_id=category_id ) return {} async def update_group_role( self, group_id: str, requester_user_id: str, role_id: str, content: JsonDict ) -> JsonDict: """Add/update a role in a group""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) is_public = _parse_visibility_from_contents(content) profile = content.get("profile") await self.store.upsert_group_role( group_id=group_id, role_id=role_id, is_public=is_public, profile=profile ) return {} async def delete_group_role( self, group_id: str, requester_user_id: str, role_id: str ) -> JsonDict: """Remove role from group""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) await self.store.remove_group_role(group_id=group_id, role_id=role_id) return {} async def update_group_summary_user( self, group_id: str, requester_user_id: str, user_id: str, role_id: str, content: JsonDict, ) -> JsonDict: """Add/update a users entry in the group summary""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) order = content.get("order", None) is_public = _parse_visibility_from_contents(content) await self.store.add_user_to_summary( group_id=group_id, user_id=user_id, role_id=role_id, order=order, is_public=is_public, ) return {} async def delete_group_summary_user( self, group_id: str, requester_user_id: str, user_id: str, role_id: str ) -> JsonDict: """Remove a user from the group summary""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) await self.store.remove_user_from_summary( group_id=group_id, user_id=user_id, role_id=role_id ) return {} async def update_group_profile( self, group_id: str, requester_user_id: str, content: JsonDict ) -> None: """Update the group profile""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) profile = {} for keyname, max_length in ( ("name", MAX_DISPLAYNAME_LEN), ("avatar_url", MAX_AVATAR_URL_LEN), ("short_description", MAX_SHORT_DESC_LEN), ("long_description", MAX_LONG_DESC_LEN), ): if keyname in content: value = content[keyname] if not isinstance(value, str): raise SynapseError( 400, "%r value is not a string" % (keyname,), errcode=Codes.INVALID_PARAM, ) if len(value) > max_length: raise SynapseError( 400, "Invalid %s parameter" % (keyname,), errcode=Codes.INVALID_PARAM, ) profile[keyname] = value await self.store.update_group_profile(group_id, profile) async def add_room_to_group( self, group_id: str, requester_user_id: str, room_id: str, content: JsonDict ) -> JsonDict: """Add room to group""" RoomID.from_string(room_id) # Ensure valid room id await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) is_public = _parse_visibility_from_contents(content) await self.store.add_room_to_group(group_id, room_id, is_public=is_public) return {} async def update_room_in_group( self, group_id: str, requester_user_id: str, room_id: str, config_key: str, content: JsonDict, ) -> JsonDict: """Update room in group""" RoomID.from_string(room_id) # Ensure valid room id await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) if config_key == "m.visibility": is_public = _parse_visibility_dict(content) await self.store.update_room_in_group_visibility( group_id, room_id, is_public=is_public ) else: raise SynapseError(400, "Unknown config option") return {} async def remove_room_from_group( self, group_id: str, requester_user_id: str, room_id: str ) -> JsonDict: """Remove room from group""" await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) await self.store.remove_room_from_group(group_id, room_id) return {} async def invite_to_group( self, group_id: str, user_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """Invite user to group""" group = await self.check_group_is_ours( group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) if not group: raise SynapseError(400, "Group does not exist", errcode=Codes.BAD_STATE) # TODO: Check if user knocked invited_users = await self.store.get_invited_users_in_group(group_id) if user_id in invited_users: raise SynapseError( 400, "User already invited to group", errcode=Codes.BAD_STATE ) user_results = await self.store.get_users_in_group( group_id, include_private=True ) if user_id in (user_result["user_id"] for user_result in user_results): raise SynapseError(400, "User already in group") content = { "profile": {"name": group["name"], "avatar_url": group["avatar_url"]}, "inviter": requester_user_id, } if self.hs.is_mine_id(user_id): groups_local = self.hs.get_groups_local_handler() assert isinstance( groups_local, GroupsLocalHandler ), "Workers cannot invites users to groups." res = await groups_local.on_invite(group_id, user_id, content) local_attestation = None else: local_attestation = self.attestations.create_attestation(group_id, user_id) content.update({"attestation": local_attestation}) res = await self.transport_client.invite_to_group_notification( get_domain_from_id(user_id), group_id, user_id, content ) user_profile = res.get("user_profile", {}) await self.store.add_remote_profile_cache( user_id, displayname=user_profile.get("displayname"), avatar_url=user_profile.get("avatar_url"), ) if res["state"] == "join": if not self.hs.is_mine_id(user_id): remote_attestation = res["attestation"] await self.attestations.verify_attestation( remote_attestation, user_id=user_id, group_id=group_id ) else: remote_attestation = None await self.store.add_user_to_group( group_id, user_id, is_admin=False, is_public=False, # TODO local_attestation=local_attestation, remote_attestation=remote_attestation, ) return {"state": "join"} elif res["state"] == "invite": await self.store.add_group_invite(group_id, user_id) return {"state": "invite"} elif res["state"] == "reject": return {"state": "reject"} else: raise SynapseError(502, "Unknown state returned by HS") async def _add_user( self, group_id: str, user_id: str, content: JsonDict ) -> Optional[JsonDict]: """Add a user to a group based on a content dict. See accept_invite, join_group. """ if not self.hs.is_mine_id(user_id): local_attestation: Optional[ JsonDict ] = self.attestations.create_attestation(group_id, user_id) remote_attestation = content["attestation"] await self.attestations.verify_attestation( remote_attestation, user_id=user_id, group_id=group_id ) else: local_attestation = None remote_attestation = None is_public = _parse_visibility_from_contents(content) await self.store.add_user_to_group( group_id, user_id, is_admin=False, is_public=is_public, local_attestation=local_attestation, remote_attestation=remote_attestation, ) return local_attestation async def accept_invite( self, group_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """User tries to accept an invite to the group. This is different from them asking to join, and so should error if no invite exists (and they're not a member of the group) """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) is_invited = await self.store.is_user_invited_to_local_group( group_id, requester_user_id ) if not is_invited: raise SynapseError(403, "User not invited to group") local_attestation = await self._add_user(group_id, requester_user_id, content) return {"state": "join", "attestation": local_attestation} async def join_group( self, group_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """User tries to join the group. This will error if the group requires an invite/knock to join """ group_info = await self.check_group_is_ours( group_id, requester_user_id, and_exists=True ) if not group_info: raise SynapseError(404, "Group does not exist", errcode=Codes.NOT_FOUND) if group_info["join_policy"] != "open": raise SynapseError(403, "Group is not publicly joinable") local_attestation = await self._add_user(group_id, requester_user_id, content) return {"state": "join", "attestation": local_attestation} async def remove_user_from_group( self, group_id: str, user_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """Remove a user from the group; either a user is leaving or an admin kicked them. """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) is_kick = False if requester_user_id != user_id: is_admin = await self.store.is_user_admin_in_group( group_id, requester_user_id ) if not is_admin: raise SynapseError(403, "User is not admin in group") is_kick = True await self.store.remove_user_from_group(group_id, user_id) if is_kick: if self.hs.is_mine_id(user_id): groups_local = self.hs.get_groups_local_handler() assert isinstance( groups_local, GroupsLocalHandler ), "Workers cannot remove users from groups." await groups_local.user_removed_from_group(group_id, user_id, {}) else: await self.transport_client.remove_user_from_group_notification( get_domain_from_id(user_id), group_id, user_id, {} ) if not self.hs.is_mine_id(user_id): await self.store.maybe_delete_remote_profile_cache(user_id) # Delete group if the last user has left users = await self.store.get_users_in_group(group_id, include_private=True) if not users: await self.store.delete_group(group_id) return {} async def create_group( self, group_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: logger.info("Attempting to create group with ID: %r", group_id) # parsing the id into a GroupID validates it. group_id_obj = GroupID.from_string(group_id) group = await self.check_group_is_ours(group_id, requester_user_id) if group: raise SynapseError(400, "Group already exists") is_admin = await self.auth.is_server_admin( UserID.from_string(requester_user_id) ) if not is_admin: if not self.hs.config.groups.enable_group_creation: raise SynapseError( 403, "Only a server admin can create groups on this server" ) localpart = group_id_obj.localpart if not localpart.startswith(self.hs.config.groups.group_creation_prefix): raise SynapseError( 400, "Can only create groups with prefix %r on this server" % (self.hs.config.groups.group_creation_prefix,), ) profile = content.get("profile", {}) name = profile.get("name") avatar_url = profile.get("avatar_url") short_description = profile.get("short_description") long_description = profile.get("long_description") user_profile = content.get("user_profile", {}) await self.store.create_group( group_id, requester_user_id, name=name, avatar_url=avatar_url, short_description=short_description, long_description=long_description, ) if not self.hs.is_mine_id(requester_user_id): remote_attestation = content["attestation"] await self.attestations.verify_attestation( remote_attestation, user_id=requester_user_id, group_id=group_id ) local_attestation: Optional[ JsonDict ] = self.attestations.create_attestation(group_id, requester_user_id) else: local_attestation = None remote_attestation = None await self.store.add_user_to_group( group_id, requester_user_id, is_admin=True, is_public=True, # TODO local_attestation=local_attestation, remote_attestation=remote_attestation, ) if not self.hs.is_mine_id(requester_user_id): await self.store.add_remote_profile_cache( requester_user_id, displayname=user_profile.get("displayname"), avatar_url=user_profile.get("avatar_url"), ) return {"group_id": group_id} async def delete_group(self, group_id: str, requester_user_id: str) -> None: """Deletes a group, kicking out all current members. Only group admins or server admins can call this request Args: group_id: The group ID to delete. requester_user_id: The user requesting to delete the group. """ await self.check_group_is_ours(group_id, requester_user_id, and_exists=True) # Only server admins or group admins can delete groups. is_admin = await self.store.is_user_admin_in_group(group_id, requester_user_id) if not is_admin: is_admin = await self.auth.is_server_admin( UserID.from_string(requester_user_id) ) if not is_admin: raise SynapseError(403, "User is not an admin") # Before deleting the group lets kick everyone out of it users = await self.store.get_users_in_group(group_id, include_private=True) async def _kick_user_from_group(user_id): if self.hs.is_mine_id(user_id): groups_local = self.hs.get_groups_local_handler() assert isinstance( groups_local, GroupsLocalHandler ), "Workers cannot kick users from groups." await groups_local.user_removed_from_group(group_id, user_id, {}) else: await self.transport_client.remove_user_from_group_notification( get_domain_from_id(user_id), group_id, user_id, {} ) await self.store.maybe_delete_remote_profile_cache(user_id) # We kick users out in the order of: # 1. Non-admins # 2. Other admins # 3. The requester # # This is so that if the deletion fails for some reason other admins or # the requester still has auth to retry. non_admins = [] admins = [] for u in users: if u["user_id"] == requester_user_id: continue if u["is_admin"]: admins.append(u["user_id"]) else: non_admins.append(u["user_id"]) await concurrently_execute(_kick_user_from_group, non_admins, 10) await concurrently_execute(_kick_user_from_group, admins, 10) await _kick_user_from_group(requester_user_id) await self.store.delete_group(group_id) def _parse_join_policy_from_contents(content: JsonDict) -> Optional[str]: """Given a content for a request, return the specified join policy or None""" join_policy_dict = content.get("m.join_policy") if join_policy_dict: return _parse_join_policy_dict(join_policy_dict) else: return None def _parse_join_policy_dict(join_policy_dict: JsonDict) -> str: """Given a dict for the "m.join_policy" config return the join policy specified""" join_policy_type = join_policy_dict.get("type") if not join_policy_type: return "invite" if join_policy_type not in ("invite", "open"): raise SynapseError(400, "Synapse only supports 'invite'/'open' join rule") return join_policy_type def _parse_visibility_from_contents(content: JsonDict) -> bool: """Given a content for a request parse out whether the entity should be public or not """ visibility = content.get("m.visibility") if visibility: return _parse_visibility_dict(visibility) else: is_public = True return is_public def _parse_visibility_dict(visibility: JsonDict) -> bool: """Given a dict for the "m.visibility" config return if the entity should be public or not """ vis_type = visibility.get("type") if not vis_type: return True if vis_type not in ("public", "private"): raise SynapseError(400, "Synapse only supports 'public'/'private' visibility") return vis_type == "public" synapse-1.53.0/synapse/handlers/000077500000000000000000000000001420514467300165525ustar00rootroot00000000000000synapse-1.53.0/synapse/handlers/__init__.py000066400000000000000000000011071420514467300206620ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/handlers/account_data.py000066400000000000000000000165061420514467300215610ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import random from typing import TYPE_CHECKING, Collection, List, Optional, Tuple from synapse.replication.http.account_data import ( ReplicationAddTagRestServlet, ReplicationRemoveTagRestServlet, ReplicationRoomAccountDataRestServlet, ReplicationUserAccountDataRestServlet, ) from synapse.streams import EventSource from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer class AccountDataHandler: def __init__(self, hs: "HomeServer"): self._store = hs.get_datastore() self._instance_name = hs.get_instance_name() self._notifier = hs.get_notifier() self._user_data_client = ReplicationUserAccountDataRestServlet.make_client(hs) self._room_data_client = ReplicationRoomAccountDataRestServlet.make_client(hs) self._add_tag_client = ReplicationAddTagRestServlet.make_client(hs) self._remove_tag_client = ReplicationRemoveTagRestServlet.make_client(hs) self._account_data_writers = hs.config.worker.writers.account_data async def add_account_data_to_room( self, user_id: str, room_id: str, account_data_type: str, content: JsonDict ) -> int: """Add some account_data to a room for a user. Args: user_id: The user to add a tag for. room_id: The room to add a tag for. account_data_type: The type of account_data to add. content: A json object to associate with the tag. Returns: The maximum stream ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.add_account_data_to_room( user_id, room_id, account_data_type, content ) self._notifier.on_new_event( "account_data_key", max_stream_id, users=[user_id] ) return max_stream_id else: response = await self._room_data_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, account_data_type=account_data_type, content=content, ) return response["max_stream_id"] async def add_account_data_for_user( self, user_id: str, account_data_type: str, content: JsonDict ) -> int: """Add some global account_data for a user. Args: user_id: The user to add a tag for. account_data_type: The type of account_data to add. content: A json object to associate with the tag. Returns: The maximum stream ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.add_account_data_for_user( user_id, account_data_type, content ) self._notifier.on_new_event( "account_data_key", max_stream_id, users=[user_id] ) return max_stream_id else: response = await self._user_data_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, account_data_type=account_data_type, content=content, ) return response["max_stream_id"] async def add_tag_to_room( self, user_id: str, room_id: str, tag: str, content: JsonDict ) -> int: """Add a tag to a room for a user. Args: user_id: The user to add a tag for. room_id: The room to add a tag for. tag: The tag name to add. content: A json object to associate with the tag. Returns: The next account data ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.add_tag_to_room( user_id, room_id, tag, content ) self._notifier.on_new_event( "account_data_key", max_stream_id, users=[user_id] ) return max_stream_id else: response = await self._add_tag_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, tag=tag, content=content, ) return response["max_stream_id"] async def remove_tag_from_room(self, user_id: str, room_id: str, tag: str) -> int: """Remove a tag from a room for a user. Returns: The next account data ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.remove_tag_from_room( user_id, room_id, tag ) self._notifier.on_new_event( "account_data_key", max_stream_id, users=[user_id] ) return max_stream_id else: response = await self._remove_tag_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, tag=tag, ) return response["max_stream_id"] class AccountDataEventSource(EventSource[int, JsonDict]): def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() def get_current_key(self, direction: str = "f") -> int: return self.store.get_max_account_data_stream_id() async def get_new_events( self, user: UserID, from_key: int, limit: Optional[int], room_ids: Collection[str], is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[JsonDict], int]: user_id = user.to_string() last_stream_id = from_key current_stream_id = self.store.get_max_account_data_stream_id() results = [] tags = await self.store.get_updated_tags(user_id, last_stream_id) for room_id, room_tags in tags.items(): results.append( {"type": "m.tag", "content": {"tags": room_tags}, "room_id": room_id} ) ( account_data, room_account_data, ) = await self.store.get_updated_account_data_for_user(user_id, last_stream_id) for account_data_type, content in account_data.items(): results.append({"type": account_data_type, "content": content}) for room_id, account_data in room_account_data.items(): for account_data_type, content in account_data.items(): results.append( {"type": account_data_type, "content": content, "room_id": room_id} ) return results, current_stream_id synapse-1.53.0/synapse/handlers/account_validity.py000066400000000000000000000407311420514467300224720ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import email.mime.multipart import email.utils import logging from typing import TYPE_CHECKING, Awaitable, Callable, List, Optional, Tuple from twisted.web.http import Request from synapse.api.errors import AuthError, StoreError, SynapseError from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.types import UserID from synapse.util import stringutils if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Types for callbacks to be registered via the module api IS_USER_EXPIRED_CALLBACK = Callable[[str], Awaitable[Optional[bool]]] ON_USER_REGISTRATION_CALLBACK = Callable[[str], Awaitable] # Temporary hooks to allow for a transition from `/_matrix/client` endpoints # to `/_synapse/client/account_validity`. See `register_account_validity_callbacks`. ON_LEGACY_SEND_MAIL_CALLBACK = Callable[[str], Awaitable] ON_LEGACY_RENEW_CALLBACK = Callable[[str], Awaitable[Tuple[bool, bool, int]]] ON_LEGACY_ADMIN_REQUEST = Callable[[Request], Awaitable] class AccountValidityHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.config = hs.config self.store = self.hs.get_datastore() self.send_email_handler = self.hs.get_send_email_handler() self.clock = self.hs.get_clock() self._app_name = self.hs.config.email.email_app_name self._account_validity_enabled = ( hs.config.account_validity.account_validity_enabled ) self._account_validity_renew_by_email_enabled = ( hs.config.account_validity.account_validity_renew_by_email_enabled ) self._account_validity_period = None if self._account_validity_enabled: self._account_validity_period = ( hs.config.account_validity.account_validity_period ) if ( self._account_validity_enabled and self._account_validity_renew_by_email_enabled ): # Don't do email-specific configuration if renewal by email is disabled. self._template_html = hs.config.email.account_validity_template_html self._template_text = hs.config.email.account_validity_template_text self._renew_email_subject = ( hs.config.account_validity.account_validity_renew_email_subject ) # Check the renewal emails to send and send them every 30min. if hs.config.worker.run_background_tasks: self.clock.looping_call(self._send_renewal_emails, 30 * 60 * 1000) self._is_user_expired_callbacks: List[IS_USER_EXPIRED_CALLBACK] = [] self._on_user_registration_callbacks: List[ON_USER_REGISTRATION_CALLBACK] = [] self._on_legacy_send_mail_callback: Optional[ ON_LEGACY_SEND_MAIL_CALLBACK ] = None self._on_legacy_renew_callback: Optional[ON_LEGACY_RENEW_CALLBACK] = None # The legacy admin requests callback isn't a protected attribute because we need # to access it from the admin servlet, which is outside of this handler. self.on_legacy_admin_request_callback: Optional[ON_LEGACY_ADMIN_REQUEST] = None def register_account_validity_callbacks( self, is_user_expired: Optional[IS_USER_EXPIRED_CALLBACK] = None, on_user_registration: Optional[ON_USER_REGISTRATION_CALLBACK] = None, on_legacy_send_mail: Optional[ON_LEGACY_SEND_MAIL_CALLBACK] = None, on_legacy_renew: Optional[ON_LEGACY_RENEW_CALLBACK] = None, on_legacy_admin_request: Optional[ON_LEGACY_ADMIN_REQUEST] = None, ) -> None: """Register callbacks from module for each hook.""" if is_user_expired is not None: self._is_user_expired_callbacks.append(is_user_expired) if on_user_registration is not None: self._on_user_registration_callbacks.append(on_user_registration) # The builtin account validity feature exposes 3 endpoints (send_mail, renew, and # an admin one). As part of moving the feature into a module, we need to change # the path from /_matrix/client/unstable/account_validity/... to # /_synapse/client/account_validity, because: # # * the feature isn't part of the Matrix spec thus shouldn't live under /_matrix # * the way we register servlets means that modules can't register resources # under /_matrix/client # # We need to allow for a transition period between the old and new endpoints # in order to allow for clients to update (and for emails to be processed). # # Once the email-account-validity module is loaded, it will take control of account # validity by moving the rows from our `account_validity` table into its own table. # # Therefore, we need to allow modules (in practice just the one implementing the # email-based account validity) to temporarily hook into the legacy endpoints so we # can route the traffic coming into the old endpoints into the module, which is # why we have the following three temporary hooks. if on_legacy_send_mail is not None: if self._on_legacy_send_mail_callback is not None: raise RuntimeError("Tried to register on_legacy_send_mail twice") self._on_legacy_send_mail_callback = on_legacy_send_mail if on_legacy_renew is not None: if self._on_legacy_renew_callback is not None: raise RuntimeError("Tried to register on_legacy_renew twice") self._on_legacy_renew_callback = on_legacy_renew if on_legacy_admin_request is not None: if self.on_legacy_admin_request_callback is not None: raise RuntimeError("Tried to register on_legacy_admin_request twice") self.on_legacy_admin_request_callback = on_legacy_admin_request async def is_user_expired(self, user_id: str) -> bool: """Checks if a user has expired against third-party modules. Args: user_id: The user to check the expiry of. Returns: Whether the user has expired. """ for callback in self._is_user_expired_callbacks: expired = await callback(user_id) if expired is not None: return expired if self._account_validity_enabled: # If no module could determine whether the user has expired and the legacy # configuration is enabled, fall back to it. return await self.store.is_account_expired(user_id, self.clock.time_msec()) return False async def on_user_registration(self, user_id: str) -> None: """Tell third-party modules about a user's registration. Args: user_id: The ID of the newly registered user. """ for callback in self._on_user_registration_callbacks: await callback(user_id) @wrap_as_background_process("send_renewals") async def _send_renewal_emails(self) -> None: """Gets the list of users whose account is expiring in the amount of time configured in the ``renew_at`` parameter from the ``account_validity`` configuration, and sends renewal emails to all of these users as long as they have an email 3PID attached to their account. """ expiring_users = await self.store.get_users_expiring_soon() if expiring_users: for user in expiring_users: await self._send_renewal_email( user_id=user["user_id"], expiration_ts=user["expiration_ts_ms"] ) async def send_renewal_email_to_user(self, user_id: str) -> None: """ Send a renewal email for a specific user. Args: user_id: The user ID to send a renewal email for. Raises: SynapseError if the user is not set to renew. """ # If a module supports sending a renewal email from here, do that, otherwise do # the legacy dance. if self._on_legacy_send_mail_callback is not None: await self._on_legacy_send_mail_callback(user_id) return if not self._account_validity_renew_by_email_enabled: raise AuthError( 403, "Account renewal via email is disabled on this server." ) expiration_ts = await self.store.get_expiration_ts_for_user(user_id) # If this user isn't set to be expired, raise an error. if expiration_ts is None: raise SynapseError(400, "User has no expiration time: %s" % (user_id,)) await self._send_renewal_email(user_id, expiration_ts) async def _send_renewal_email(self, user_id: str, expiration_ts: int) -> None: """Sends out a renewal email to every email address attached to the given user with a unique link allowing them to renew their account. Args: user_id: ID of the user to send email(s) to. expiration_ts: Timestamp in milliseconds for the expiration date of this user's account (used in the email templates). """ addresses = await self._get_email_addresses_for_user(user_id) # Stop right here if the user doesn't have at least one email address. # In this case, they will have to ask their server admin to renew their # account manually. # We don't need to do a specific check to make sure the account isn't # deactivated, as a deactivated account isn't supposed to have any # email address attached to it. if not addresses: return try: user_display_name = await self.store.get_profile_displayname( UserID.from_string(user_id).localpart ) if user_display_name is None: user_display_name = user_id except StoreError: user_display_name = user_id renewal_token = await self._get_renewal_token(user_id) url = "%s_matrix/client/unstable/account_validity/renew?token=%s" % ( self.hs.config.server.public_baseurl, renewal_token, ) template_vars = { "display_name": user_display_name, "expiration_ts": expiration_ts, "url": url, } html_text = self._template_html.render(**template_vars) plain_text = self._template_text.render(**template_vars) for address in addresses: raw_to = email.utils.parseaddr(address)[1] await self.send_email_handler.send_email( email_address=raw_to, subject=self._renew_email_subject, app_name=self._app_name, html=html_text, text=plain_text, ) await self.store.set_renewal_mail_status(user_id=user_id, email_sent=True) async def _get_email_addresses_for_user(self, user_id: str) -> List[str]: """Retrieve the list of email addresses attached to a user's account. Args: user_id: ID of the user to lookup email addresses for. Returns: Email addresses for this account. """ threepids = await self.store.user_get_threepids(user_id) addresses = [] for threepid in threepids: if threepid["medium"] == "email": addresses.append(threepid["address"]) return addresses async def _get_renewal_token(self, user_id: str) -> str: """Generates a 32-byte long random string that will be inserted into the user's renewal email's unique link, then saves it into the database. Args: user_id: ID of the user to generate a string for. Returns: The generated string. Raises: StoreError(500): Couldn't generate a unique string after 5 attempts. """ attempts = 0 while attempts < 5: try: renewal_token = stringutils.random_string(32) await self.store.set_renewal_token_for_user(user_id, renewal_token) return renewal_token except StoreError: attempts += 1 raise StoreError(500, "Couldn't generate a unique string as refresh string.") async def renew_account(self, renewal_token: str) -> Tuple[bool, bool, int]: """Renews the account attached to a given renewal token by pushing back the expiration date by the current validity period in the server's configuration. If it turns out that the token is valid but has already been used, then the token is considered stale. A token is stale if the 'token_used_ts_ms' db column is non-null. This method exists to support handling the legacy account validity /renew endpoint. If a module implements the on_legacy_renew callback, then this process is delegated to the module instead. Args: renewal_token: Token sent with the renewal request. Returns: A tuple containing: * A bool representing whether the token is valid and unused. * A bool which is `True` if the token is valid, but stale. * An int representing the user's expiry timestamp as milliseconds since the epoch, or 0 if the token was invalid. """ # If a module supports triggering a renew from here, do that, otherwise do the # legacy dance. if self._on_legacy_renew_callback is not None: return await self._on_legacy_renew_callback(renewal_token) try: ( user_id, current_expiration_ts, token_used_ts, ) = await self.store.get_user_from_renewal_token(renewal_token) except StoreError: return False, False, 0 # Check whether this token has already been used. if token_used_ts: logger.info( "User '%s' attempted to use previously used token '%s' to renew account", user_id, renewal_token, ) return False, True, current_expiration_ts logger.debug("Renewing an account for user %s", user_id) # Renew the account. Pass the renewal_token here so that it is not cleared. # We want to keep the token around in case the user attempts to renew their # account with the same token twice (clicking the email link twice). # # In that case, the token will be accepted, but the account's expiration ts # will remain unchanged. new_expiration_ts = await self.renew_account_for_user( user_id, renewal_token=renewal_token ) return True, False, new_expiration_ts async def renew_account_for_user( self, user_id: str, expiration_ts: Optional[int] = None, email_sent: bool = False, renewal_token: Optional[str] = None, ) -> int: """Renews the account attached to a given user by pushing back the expiration date by the current validity period in the server's configuration. Args: user_id: The ID of the user to renew. expiration_ts: New expiration date. Defaults to now + validity period. email_sent: Whether an email has been sent for this validity period. renewal_token: Token sent with the renewal request. The user's token will be cleared if this is None. Returns: New expiration date for this account, as a timestamp in milliseconds since epoch. """ now = self.clock.time_msec() if expiration_ts is None: assert self._account_validity_period is not None expiration_ts = now + self._account_validity_period await self.store.set_account_validity_for_user( user_id=user_id, expiration_ts=expiration_ts, email_sent=email_sent, renewal_token=renewal_token, token_used_ts=now, ) return expiration_ts synapse-1.53.0/synapse/handlers/admin.py000066400000000000000000000262041420514467300202200ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set from synapse.api.constants import Membership from synapse.events import EventBase from synapse.types import JsonDict, RoomStreamToken, StateMap, UserID from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AdminHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.storage = hs.get_storage() self.state_store = self.storage.state async def get_whois(self, user: UserID) -> JsonDict: connections = [] sessions = await self.store.get_user_ip_and_agents(user) for session in sessions: connections.append( { "ip": session["ip"], "last_seen": session["last_seen"], "user_agent": session["user_agent"], } ) ret = { "user_id": user.to_string(), "devices": {"": {"sessions": [{"connections": connections}]}}, } return ret async def get_user(self, user: UserID) -> Optional[JsonDict]: """Function to get user details""" user_info_dict = await self.store.get_user_by_id(user.to_string()) if user_info_dict is None: return None # Restrict returned information to a known set of fields. This prevents additional # fields added to get_user_by_id from modifying Synapse's external API surface. user_info_to_return = { "name", "admin", "deactivated", "shadow_banned", "creation_ts", "appservice_id", "consent_server_notice_sent", "consent_version", "user_type", "is_guest", } # Restrict returned keys to a known set. user_info_dict = { key: value for key, value in user_info_dict.items() if key in user_info_to_return } # Add additional user metadata profile = await self.store.get_profileinfo(user.localpart) threepids = await self.store.user_get_threepids(user.to_string()) external_ids = [ ({"auth_provider": auth_provider, "external_id": external_id}) for auth_provider, external_id in await self.store.get_external_ids_by_user( user.to_string() ) ] user_info_dict["displayname"] = profile.display_name user_info_dict["avatar_url"] = profile.avatar_url user_info_dict["threepids"] = threepids user_info_dict["external_ids"] = external_ids return user_info_dict async def export_user_data(self, user_id: str, writer: "ExfiltrationWriter") -> Any: """Write all data we have on the user to the given writer. Args: user_id: The user ID to fetch data of. writer: The writer to write to. Returns: Resolves when all data for a user has been written. The returned value is that returned by `writer.finished()`. """ # Get all rooms the user is in or has been in rooms = await self.store.get_rooms_for_local_user_where_membership_is( user_id, membership_list=( Membership.JOIN, Membership.LEAVE, Membership.BAN, Membership.INVITE, Membership.KNOCK, ), ) # We only try and fetch events for rooms the user has been in. If # they've been e.g. invited to a room without joining then we handle # those separately. rooms_user_has_been_in = await self.store.get_rooms_user_has_been_in(user_id) for index, room in enumerate(rooms): room_id = room.room_id logger.info( "[%s] Handling room %s, %d/%d", user_id, room_id, index + 1, len(rooms) ) forgotten = await self.store.did_forget(user_id, room_id) if forgotten: logger.info("[%s] User forgot room %d, ignoring", user_id, room_id) continue if room_id not in rooms_user_has_been_in: # If we haven't been in the rooms then the filtering code below # won't return anything, so we need to handle these cases # explicitly. if room.membership == Membership.INVITE: event_id = room.event_id invite = await self.store.get_event(event_id, allow_none=True) if invite: invited_state = invite.unsigned["invite_room_state"] writer.write_invite(room_id, invite, invited_state) if room.membership == Membership.KNOCK: event_id = room.event_id knock = await self.store.get_event(event_id, allow_none=True) if knock: knock_state = knock.unsigned["knock_room_state"] writer.write_knock(room_id, knock, knock_state) continue # We only want to bother fetching events up to the last time they # were joined. We estimate that point by looking at the # stream_ordering of the last membership if it wasn't a join. if room.membership == Membership.JOIN: stream_ordering = self.store.get_room_max_stream_ordering() else: stream_ordering = room.stream_ordering from_key = RoomStreamToken(0, 0) to_key = RoomStreamToken(None, stream_ordering) # Events that we've processed in this room written_events: Set[str] = set() # We need to track gaps in the events stream so that we can then # write out the state at those events. We do this by keeping track # of events whose prev events we haven't seen. # Map from event ID to prev events that haven't been processed, # dict[str, set[str]]. event_to_unseen_prevs = {} # The reverse mapping to above, i.e. map from unseen event to events # that have the unseen event in their prev_events, i.e. the unseen # events "children". unseen_to_child_events: Dict[str, Set[str]] = {} # We fetch events in the room the user could see by fetching *all* # events that we have and then filtering, this isn't the most # efficient method perhaps but it does guarantee we get everything. while True: events, _ = await self.store.paginate_room_events( room_id, from_key, to_key, limit=100, direction="f" ) if not events: break from_key = events[-1].internal_metadata.after events = await filter_events_for_client(self.storage, user_id, events) writer.write_events(room_id, events) # Update the extremity tracking dicts for event in events: # Check if we have any prev events that haven't been # processed yet, and add those to the appropriate dicts. unseen_events = set(event.prev_event_ids()) - written_events if unseen_events: event_to_unseen_prevs[event.event_id] = unseen_events for unseen in unseen_events: unseen_to_child_events.setdefault(unseen, set()).add( event.event_id ) # Now check if this event is an unseen prev event, if so # then we remove this event from the appropriate dicts. for child_id in unseen_to_child_events.pop(event.event_id, []): event_to_unseen_prevs[child_id].discard(event.event_id) written_events.add(event.event_id) logger.info( "Written %d events in room %s", len(written_events), room_id ) # Extremities are the events who have at least one unseen prev event. extremities = ( event_id for event_id, unseen_prevs in event_to_unseen_prevs.items() if unseen_prevs ) for event_id in extremities: if not event_to_unseen_prevs[event_id]: continue state = await self.state_store.get_state_for_event(event_id) writer.write_state(room_id, event_id, state) return writer.finished() class ExfiltrationWriter(metaclass=abc.ABCMeta): """Interface used to specify how to write exported data.""" @abc.abstractmethod def write_events(self, room_id: str, events: List[EventBase]) -> None: """Write a batch of events for a room.""" raise NotImplementedError() @abc.abstractmethod def write_state( self, room_id: str, event_id: str, state: StateMap[EventBase] ) -> None: """Write the state at the given event in the room. This only gets called for backward extremities rather than for each event. """ raise NotImplementedError() @abc.abstractmethod def write_invite( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: """Write an invite for the room, with associated invite state. Args: room_id: The room ID the invite is for. event: The invite event. state: A subset of the state at the invite, with a subset of the event keys (type, state_key content and sender). """ raise NotImplementedError() @abc.abstractmethod def write_knock( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: """Write a knock for the room, with associated knock state. Args: room_id: The room ID the knock is for. event: The knock event. state: A subset of the state at the knock, with a subset of the event keys (type, state_key content and sender). """ raise NotImplementedError() @abc.abstractmethod def finished(self) -> Any: """Called when all data has successfully been exported and written. This functions return value is passed to the caller of `export_user_data`. """ raise NotImplementedError() synapse-1.53.0/synapse/handlers/appservice.py000066400000000000000000000701151420514467300212710ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Collection, Dict, Iterable, List, Optional, Union from prometheus_client import Counter from twisted.internet import defer import synapse from synapse.api.constants import EventTypes from synapse.appservice import ApplicationService from synapse.events import EventBase from synapse.handlers.presence import format_user_presence_state from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.metrics import ( event_processing_loop_counter, event_processing_loop_room_count, ) from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.storage.databases.main.directory import RoomAliasMapping from synapse.types import JsonDict, RoomAlias, RoomStreamToken, UserID from synapse.util.async_helpers import Linearizer from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) events_processed_counter = Counter("synapse_handlers_appservice_events_processed", "") class ApplicationServicesHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.is_mine_id = hs.is_mine_id self.appservice_api = hs.get_application_service_api() self.scheduler = hs.get_application_service_scheduler() self.started_scheduler = False self.clock = hs.get_clock() self.notify_appservices = hs.config.appservice.notify_appservices self.event_sources = hs.get_event_sources() self._msc2409_to_device_messages_enabled = ( hs.config.experimental.msc2409_to_device_messages_enabled ) self.current_max = 0 self.is_processing = False self._ephemeral_events_linearizer = Linearizer( name="appservice_ephemeral_events" ) def notify_interested_services(self, max_token: RoomStreamToken) -> None: """Notifies (pushes) all application services interested in this event. Pushing is done asynchronously, so this method won't block for any prolonged length of time. """ # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. current_id = max_token.stream services = self.store.get_app_services() if not services or not self.notify_appservices: return self.current_max = max(self.current_max, current_id) if self.is_processing: return # We only start a new background process if necessary rather than # optimistically (to cut down on overhead). self._notify_interested_services(max_token) @wrap_as_background_process("notify_interested_services") async def _notify_interested_services(self, max_token: RoomStreamToken) -> None: with Measure(self.clock, "notify_interested_services"): self.is_processing = True try: limit = 100 upper_bound = -1 while upper_bound < self.current_max: ( upper_bound, events, ) = await self.store.get_new_events_for_appservice( self.current_max, limit ) events_by_room: Dict[str, List[EventBase]] = {} for event in events: events_by_room.setdefault(event.room_id, []).append(event) async def handle_event(event: EventBase) -> None: # Gather interested services services = await self._get_services_for_event(event) if len(services) == 0: return # no services need notifying # Do we know this user exists? If not, poke the user # query API for all services which match that user regex. # This needs to block as these user queries need to be # made BEFORE pushing the event. await self._check_user_exists(event.sender) if event.type == EventTypes.Member: await self._check_user_exists(event.state_key) if not self.started_scheduler: async def start_scheduler() -> None: try: await self.scheduler.start() except Exception: logger.error("Application Services Failure") run_as_background_process("as_scheduler", start_scheduler) self.started_scheduler = True # Fork off pushes to these services for service in services: self.scheduler.enqueue_for_appservice( service, events=[event] ) now = self.clock.time_msec() ts = await self.store.get_received_ts(event.event_id) assert ts is not None synapse.metrics.event_processing_lag_by_event.labels( "appservice_sender" ).observe((now - ts) / 1000) async def handle_room_events(events: Iterable[EventBase]) -> None: for event in events: await handle_event(event) await make_deferred_yieldable( defer.gatherResults( [ run_in_background(handle_room_events, evs) for evs in events_by_room.values() ], consumeErrors=True, ) ) await self.store.set_appservice_last_pos(upper_bound) synapse.metrics.event_processing_positions.labels( "appservice_sender" ).set(upper_bound) events_processed_counter.inc(len(events)) event_processing_loop_room_count.labels("appservice_sender").inc( len(events_by_room) ) event_processing_loop_counter.labels("appservice_sender").inc() if events: now = self.clock.time_msec() ts = await self.store.get_received_ts(events[-1].event_id) assert ts is not None synapse.metrics.event_processing_lag.labels( "appservice_sender" ).set(now - ts) synapse.metrics.event_processing_last_ts.labels( "appservice_sender" ).set(ts) finally: self.is_processing = False def notify_interested_services_ephemeral( self, stream_key: str, new_token: Union[int, RoomStreamToken], users: Collection[Union[str, UserID]], ) -> None: """ This is called by the notifier in the background when an ephemeral event is handled by the homeserver. This will determine which appservices are interested in the event, and submit them. Args: stream_key: The stream the event came from. `stream_key` can be "typing_key", "receipt_key", "presence_key" or "to_device_key". Any other value for `stream_key` will cause this function to return early. Ephemeral events will only be pushed to appservices that have opted into receiving them by setting `push_ephemeral` to true in their registration file. Note that while MSC2409 is experimental, this option is called `de.sorunome.msc2409.push_ephemeral`. Appservices will only receive ephemeral events that fall within their registered user and room namespaces. new_token: The stream token of the event. users: The users that should be informed of the new event, if any. """ if not self.notify_appservices: return # Notify appservices of updates in ephemeral event streams. # Only the following streams are currently supported. # FIXME: We should use constants for these values. if stream_key not in ( "typing_key", "receipt_key", "presence_key", "to_device_key", ): return # Assert that new_token is an integer (and not a RoomStreamToken). # All of the supported streams that this function handles use an # integer to track progress (rather than a RoomStreamToken - a # vector clock implementation) as they don't support multiple # stream writers. # # As a result, we simply assert that new_token is an integer. # If we do end up needing to pass a RoomStreamToken down here # in the future, using RoomStreamToken.stream (the minimum stream # position) to convert to an ascending integer value should work. # Additional context: https://github.com/matrix-org/synapse/pull/11137 assert isinstance(new_token, int) # Ignore to-device messages if the feature flag is not enabled if ( stream_key == "to_device_key" and not self._msc2409_to_device_messages_enabled ): return # Check whether there are any appservices which have registered to receive # ephemeral events. # # Note that whether these events are actually relevant to these appservices # is decided later on. services = [ service for service in self.store.get_app_services() if service.supports_ephemeral ] if not services: # Bail out early if none of the target appservices have explicitly registered # to receive these ephemeral events. return # We only start a new background process if necessary rather than # optimistically (to cut down on overhead). self._notify_interested_services_ephemeral( services, stream_key, new_token, users ) @wrap_as_background_process("notify_interested_services_ephemeral") async def _notify_interested_services_ephemeral( self, services: List[ApplicationService], stream_key: str, new_token: int, users: Collection[Union[str, UserID]], ) -> None: logger.debug("Checking interested services for %s", stream_key) with Measure(self.clock, "notify_interested_services_ephemeral"): for service in services: if stream_key == "typing_key": # Note that we don't persist the token (via set_appservice_stream_type_pos) # for typing_key due to performance reasons and due to their highly # ephemeral nature. # # Instead we simply grab the latest typing updates in _handle_typing # and, if they apply to this application service, send it off. events = await self._handle_typing(service, new_token) if events: self.scheduler.enqueue_for_appservice(service, ephemeral=events) continue # Since we read/update the stream position for this AS/stream with ( await self._ephemeral_events_linearizer.queue( (service.id, stream_key) ) ): if stream_key == "receipt_key": events = await self._handle_receipts(service, new_token) self.scheduler.enqueue_for_appservice(service, ephemeral=events) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "read_receipt", new_token ) elif stream_key == "presence_key": events = await self._handle_presence(service, users, new_token) self.scheduler.enqueue_for_appservice(service, ephemeral=events) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "presence", new_token ) elif stream_key == "to_device_key": # Retrieve a list of to-device message events, as well as the # maximum stream token of the messages we were able to retrieve. to_device_messages = await self._get_to_device_messages( service, new_token, users ) self.scheduler.enqueue_for_appservice( service, to_device_messages=to_device_messages ) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "to_device", new_token ) async def _handle_typing( self, service: ApplicationService, new_token: int ) -> List[JsonDict]: """ Return the typing events since the given stream token that the given application service should receive. First fetch all typing events between the given typing stream token (non-inclusive) and the latest typing event stream token (inclusive). Then return only those typing events that the given application service may be interested in. Args: service: The application service to check for which events it should receive. new_token: A typing event stream token. Returns: A list of JSON dictionaries containing data derived from the typing events that should be sent to the given application service. """ typing_source = self.event_sources.sources.typing # Get the typing events from just before current typing, _ = await typing_source.get_new_events_as( service=service, # For performance reasons, we don't persist the previous # token in the DB and instead fetch the latest typing event # for appservices. # TODO: It'd likely be more efficient to simply fetch the # typing event with the given 'new_token' stream token and # check if the given service was interested, rather than # iterating over all typing events and only grabbing the # latest few. from_key=new_token - 1, ) return typing async def _handle_receipts( self, service: ApplicationService, new_token: Optional[int] ) -> List[JsonDict]: """ Return the latest read receipts that the given application service should receive. First fetch all read receipts between the last receipt stream token that this application service should have previously received (non-inclusive) and the latest read receipt stream token (inclusive). Then from that set, return only those read receipts that the given application service may be interested in. Args: service: The application service to check for which events it should receive. new_token: A receipts event stream token. Purely used to double-check that the from_token we pull from the database isn't greater than or equal to this token. Prevents accidentally duplicating work. Returns: A list of JSON dictionaries containing data derived from the read receipts that should be sent to the given application service. """ from_key = await self.store.get_type_stream_id_for_appservice( service, "read_receipt" ) if new_token is not None and new_token <= from_key: logger.debug( "Rejecting token lower than or equal to stored: %s" % (new_token,) ) return [] receipts_source = self.event_sources.sources.receipt receipts, _ = await receipts_source.get_new_events_as( service=service, from_key=from_key ) return receipts async def _handle_presence( self, service: ApplicationService, users: Collection[Union[str, UserID]], new_token: Optional[int], ) -> List[JsonDict]: """ Return the latest presence updates that the given application service should receive. First, filter the given users list to those that the application service is interested in. Then retrieve the latest presence updates since the the last-known previously received presence stream token for the given application service. Return those presence updates. Args: service: The application service that ephemeral events are being sent to. users: The users that should receive the presence update. new_token: A presence update stream token. Purely used to double-check that the from_token we pull from the database isn't greater than or equal to this token. Prevents accidentally duplicating work. Returns: A list of json dictionaries containing data derived from the presence events that should be sent to the given application service. """ events: List[JsonDict] = [] presence_source = self.event_sources.sources.presence from_key = await self.store.get_type_stream_id_for_appservice( service, "presence" ) if new_token is not None and new_token <= from_key: logger.debug( "Rejecting token lower than or equal to stored: %s" % (new_token,) ) return [] for user in users: if isinstance(user, str): user = UserID.from_string(user) interested = await service.is_interested_in_presence(user, self.store) if not interested: continue presence_events, _ = await presence_source.get_new_events( user=user, from_key=from_key, ) time_now = self.clock.time_msec() events.extend( { "type": "m.presence", "sender": event.user_id, "content": format_user_presence_state( event, time_now, include_user_id=False ), } for event in presence_events ) return events async def _get_to_device_messages( self, service: ApplicationService, new_token: int, users: Collection[Union[str, UserID]], ) -> List[JsonDict]: """ Given an application service, determine which events it should receive from those between the last-recorded to-device message stream token for this appservice and the given stream token. Args: service: The application service to check for which events it should receive. new_token: The latest to-device event stream token. users: The users to be notified for the new to-device messages (ie, the recipients of the messages). Returns: A list of JSON dictionaries containing data derived from the to-device events that should be sent to the given application service. """ # Get the stream token that this application service has processed up until from_key = await self.store.get_type_stream_id_for_appservice( service, "to_device" ) # Filter out users that this appservice is not interested in users_appservice_is_interested_in: List[str] = [] for user in users: # FIXME: We should do this farther up the call stack. We currently repeat # this operation in _handle_presence. if isinstance(user, UserID): user = user.to_string() if service.is_interested_in_user(user): users_appservice_is_interested_in.append(user) if not users_appservice_is_interested_in: # Return early if the AS was not interested in any of these users return [] # Retrieve the to-device messages for each user recipient_device_to_messages = await self.store.get_messages_for_user_devices( users_appservice_is_interested_in, from_key, new_token, ) # According to MSC2409, we'll need to add 'to_user_id' and 'to_device_id' fields # to the event JSON so that the application service will know which user/device # combination this messages was intended for. # # So we mangle this dict into a flat list of to-device messages with the relevant # user ID and device ID embedded inside each message dict. message_payload: List[JsonDict] = [] for ( user_id, device_id, ), messages in recipient_device_to_messages.items(): for message_json in messages: # Remove 'message_id' from the to-device message, as it's an internal ID message_json.pop("message_id", None) message_payload.append( { "to_user_id": user_id, "to_device_id": device_id, **message_json, } ) return message_payload async def query_user_exists(self, user_id: str) -> bool: """Check if any application service knows this user_id exists. Args: user_id: The user to query if they exist on any AS. Returns: True if this user exists on at least one application service. """ user_query_services = self._get_services_for_user(user_id=user_id) for user_service in user_query_services: is_known_user = await self.appservice_api.query_user(user_service, user_id) if is_known_user: return True return False async def query_room_alias_exists( self, room_alias: RoomAlias ) -> Optional[RoomAliasMapping]: """Check if an application service knows this room alias exists. Args: room_alias: The room alias to query. Returns: RoomAliasMapping or None if no association can be found. """ room_alias_str = room_alias.to_string() services = self.store.get_app_services() alias_query_services = [ s for s in services if (s.is_interested_in_alias(room_alias_str)) ] for alias_service in alias_query_services: is_known_alias = await self.appservice_api.query_alias( alias_service, room_alias_str ) if is_known_alias: # the alias exists now so don't query more ASes. return await self.store.get_association_from_room_alias(room_alias) return None async def query_3pe( self, kind: str, protocol: str, fields: Dict[bytes, List[bytes]] ) -> List[JsonDict]: services = self._get_services_for_3pn(protocol) results = await make_deferred_yieldable( defer.DeferredList( [ run_in_background( self.appservice_api.query_3pe, service, kind, protocol, fields ) for service in services ], consumeErrors=True, ) ) ret = [] for (success, result) in results: if success: ret.extend(result) return ret async def get_3pe_protocols( self, only_protocol: Optional[str] = None ) -> Dict[str, JsonDict]: services = self.store.get_app_services() protocols: Dict[str, List[JsonDict]] = {} # Collect up all the individual protocol responses out of the ASes for s in services: for p in s.protocols: if only_protocol is not None and p != only_protocol: continue if p not in protocols: protocols[p] = [] info = await self.appservice_api.get_3pe_protocol(s, p) if info is not None: protocols[p].append(info) def _merge_instances(infos: List[JsonDict]) -> JsonDict: # Merge the 'instances' lists of multiple results, but just take # the other fields from the first as they ought to be identical # copy the result so as not to corrupt the cached one combined = dict(infos[0]) combined["instances"] = list(combined["instances"]) for info in infos[1:]: combined["instances"].extend(info["instances"]) return combined return { p: _merge_instances(protocols[p]) for p in protocols.keys() if protocols[p] } async def _get_services_for_event( self, event: EventBase ) -> List[ApplicationService]: """Retrieve a list of application services interested in this event. Args: event: The event to check. Returns: A list of services interested in this event based on the service regex. """ services = self.store.get_app_services() # we can't use a list comprehension here. Since python 3, list # comprehensions use a generator internally. This means you can't yield # inside of a list comprehension anymore. interested_list = [] for s in services: if await s.is_interested(event, self.store): interested_list.append(s) return interested_list def _get_services_for_user(self, user_id: str) -> List[ApplicationService]: services = self.store.get_app_services() return [s for s in services if (s.is_interested_in_user(user_id))] def _get_services_for_3pn(self, protocol: str) -> List[ApplicationService]: services = self.store.get_app_services() return [s for s in services if s.is_interested_in_protocol(protocol)] async def _is_unknown_user(self, user_id: str) -> bool: if not self.is_mine_id(user_id): # we don't know if they are unknown or not since it isn't one of our # users. We can't poke ASes. return False user_info = await self.store.get_user_by_id(user_id) if user_info: return False # user not found; could be the AS though, so check. services = self.store.get_app_services() service_list = [s for s in services if s.sender == user_id] return len(service_list) == 0 async def _check_user_exists(self, user_id: str) -> bool: unknown_user = await self._is_unknown_user(user_id) if unknown_user: return await self.query_user_exists(user_id) return True synapse-1.53.0/synapse/handlers/auth.py000066400000000000000000002734141420514467300201000ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2019 - 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import time import unicodedata import urllib.parse from binascii import crc32 from http import HTTPStatus from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Mapping, Optional, Tuple, Type, Union, cast, ) import attr import bcrypt import pymacaroons import unpaddedbase64 from pymacaroons.exceptions import MacaroonVerificationFailedException from twisted.web.server import Request from synapse.api.constants import LoginType from synapse.api.errors import ( AuthError, Codes, InteractiveAuthIncompleteError, LoginError, StoreError, SynapseError, UserDeactivatedError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.handlers.ui_auth import ( INTERACTIVE_AUTH_CHECKERS, UIAuthSessionDataConstants, ) from synapse.handlers.ui_auth.checkers import UserInteractiveAuthChecker from synapse.http import get_request_user_agent from synapse.http.server import finish_request, respond_with_html from synapse.http.site import SynapseRequest from synapse.logging.context import defer_to_thread from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.roommember import ProfileInfo from synapse.types import JsonDict, Requester, UserID from synapse.util import stringutils as stringutils from synapse.util.async_helpers import maybe_awaitable from synapse.util.macaroons import get_value_from_macaroon, satisfy_expiry from synapse.util.msisdn import phone_number_to_msisdn from synapse.util.stringutils import base62_encode from synapse.util.threepids import canonicalise_email if TYPE_CHECKING: from synapse.module_api import ModuleApi from synapse.rest.client.login import LoginResponse from synapse.server import HomeServer logger = logging.getLogger(__name__) def convert_client_dict_legacy_fields_to_identifier( submission: JsonDict, ) -> Dict[str, str]: """ Convert a legacy-formatted login submission to an identifier dict. Legacy login submissions (used in both login and user-interactive authentication) provide user-identifying information at the top-level instead. These are now deprecated and replaced with identifiers: https://matrix.org/docs/spec/client_server/r0.6.1#identifier-types Args: submission: The client dict to convert Returns: The matching identifier dict Raises: SynapseError: If the format of the client dict is invalid """ identifier = submission.get("identifier", {}) # Generate an m.id.user identifier if "user" parameter is present user = submission.get("user") if user: identifier = {"type": "m.id.user", "user": user} # Generate an m.id.thirdparty identifier if "medium" and "address" parameters are present medium = submission.get("medium") address = submission.get("address") if medium and address: identifier = { "type": "m.id.thirdparty", "medium": medium, "address": address, } # We've converted valid, legacy login submissions to an identifier. If the # submission still doesn't have an identifier, it's invalid if not identifier: raise SynapseError(400, "Invalid login submission", Codes.INVALID_PARAM) # Ensure the identifier has a type if "type" not in identifier: raise SynapseError( 400, "'identifier' dict has no key 'type'", errcode=Codes.MISSING_PARAM, ) return identifier def login_id_phone_to_thirdparty(identifier: JsonDict) -> Dict[str, str]: """ Convert a phone login identifier type to a generic threepid identifier. Args: identifier: Login identifier dict of type 'm.id.phone' Returns: An equivalent m.id.thirdparty identifier dict """ if "country" not in identifier or ( # The specification requires a "phone" field, while Synapse used to require a "number" # field. Accept both for backwards compatibility. "phone" not in identifier and "number" not in identifier ): raise SynapseError( 400, "Invalid phone-type identifier", errcode=Codes.INVALID_PARAM ) # Accept both "phone" and "number" as valid keys in m.id.phone phone_number = identifier.get("phone", identifier["number"]) # Convert user-provided phone number to a consistent representation msisdn = phone_number_to_msisdn(identifier["country"], phone_number) return { "type": "m.id.thirdparty", "medium": "msisdn", "address": msisdn, } @attr.s(slots=True, auto_attribs=True) class SsoLoginExtraAttributes: """Data we track about SAML2 sessions""" # time the session was created, in milliseconds creation_time: int extra_attributes: JsonDict @attr.s(slots=True, frozen=True, auto_attribs=True) class LoginTokenAttributes: """Data we store in a short-term login token""" user_id: str auth_provider_id: str """The SSO Identity Provider that the user authenticated with, to get this token.""" auth_provider_session_id: Optional[str] """The session ID advertised by the SSO Identity Provider.""" class AuthHandler: SESSION_EXPIRE_MS = 48 * 60 * 60 * 1000 def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.clock = hs.get_clock() self.checkers: Dict[str, UserInteractiveAuthChecker] = {} for auth_checker_class in INTERACTIVE_AUTH_CHECKERS: inst = auth_checker_class(hs) if inst.is_enabled(): self.checkers[inst.AUTH_TYPE] = inst # type: ignore self.bcrypt_rounds = hs.config.registration.bcrypt_rounds self.password_auth_provider = hs.get_password_auth_provider() self.hs = hs # FIXME better possibility to access registrationHandler later? self.macaroon_gen = hs.get_macaroon_generator() self._password_enabled = hs.config.auth.password_enabled self._password_localdb_enabled = hs.config.auth.password_localdb_enabled # Ratelimiter for failed auth during UIA. Uses same ratelimit config # as per `rc_login.failed_attempts`. self._failed_uia_attempts_ratelimiter = Ratelimiter( store=self.store, clock=self.clock, rate_hz=self.hs.config.ratelimiting.rc_login_failed_attempts.per_second, burst_count=self.hs.config.ratelimiting.rc_login_failed_attempts.burst_count, ) # The number of seconds to keep a UI auth session active. self._ui_auth_session_timeout = hs.config.auth.ui_auth_session_timeout # Ratelimitier for failed /login attempts self._failed_login_attempts_ratelimiter = Ratelimiter( store=self.store, clock=hs.get_clock(), rate_hz=self.hs.config.ratelimiting.rc_login_failed_attempts.per_second, burst_count=self.hs.config.ratelimiting.rc_login_failed_attempts.burst_count, ) self._clock = self.hs.get_clock() # Expire old UI auth sessions after a period of time. if hs.config.worker.run_background_tasks: self._clock.looping_call( run_as_background_process, 5 * 60 * 1000, "expire_old_sessions", self._expire_old_sessions, ) # Load the SSO HTML templates. # The following template is shown to the user during a client login via SSO, # after the SSO completes and before redirecting them back to their client. # It notifies the user they are about to give access to their matrix account # to the client. self._sso_redirect_confirm_template = ( hs.config.sso.sso_redirect_confirm_template ) # The following template is shown during user interactive authentication # in the fallback auth scenario. It notifies the user that they are # authenticating for an operation to occur on their account. self._sso_auth_confirm_template = hs.config.sso.sso_auth_confirm_template # The following template is shown during the SSO authentication process if # the account is deactivated. self._sso_account_deactivated_template = ( hs.config.sso.sso_account_deactivated_template ) self._server_name = hs.config.server.server_name # cast to tuple for use with str.startswith self._whitelisted_sso_clients = tuple(hs.config.sso.sso_client_whitelist) # A mapping of user ID to extra attributes to include in the login # response. self._extra_attributes: Dict[str, SsoLoginExtraAttributes] = {} async def validate_user_via_ui_auth( self, requester: Requester, request: SynapseRequest, request_body: Dict[str, Any], description: str, can_skip_ui_auth: bool = False, ) -> Tuple[dict, Optional[str]]: """ Checks that the user is who they claim to be, via a UI auth. This is used for things like device deletion and password reset where the user already has a valid access token, but we want to double-check that it isn't stolen by re-authenticating them. Args: requester: The user, as given by the access token request: The request sent by the client. request_body: The body of the request sent by the client description: A human readable string to be displayed to the user that describes the operation happening on their account. can_skip_ui_auth: True if the UI auth session timeout applies this action. Should be set to False for any "dangerous" actions (e.g. deactivating an account). Returns: A tuple of (params, session_id). 'params' contains the parameters for this request (which may have been given only in a previous call). 'session_id' is the ID of this session, either passed in by the client or assigned by this call. This is None if UI auth was skipped (by re-using a previous validation). Raises: InteractiveAuthIncompleteError if the client has not yet completed any of the permitted login flows AuthError if the client has completed a login flow, and it gives a different user to `requester` LimitExceededError if the ratelimiter's failed request count for this user is too high to proceed """ if not requester.access_token_id: raise ValueError("Cannot validate a user without an access token") if can_skip_ui_auth and self._ui_auth_session_timeout: last_validated = await self.store.get_access_token_last_validated( requester.access_token_id ) if self.clock.time_msec() - last_validated < self._ui_auth_session_timeout: # Return the input parameters, minus the auth key, which matches # the logic in check_ui_auth. request_body.pop("auth", None) return request_body, None requester_user_id = requester.user.to_string() # Check if we should be ratelimited due to too many previous failed attempts await self._failed_uia_attempts_ratelimiter.ratelimit(requester, update=False) # build a list of supported flows supported_ui_auth_types = await self._get_available_ui_auth_types( requester.user ) flows = [[login_type] for login_type in supported_ui_auth_types] def get_new_session_data() -> JsonDict: return {UIAuthSessionDataConstants.REQUEST_USER_ID: requester_user_id} try: result, params, session_id = await self.check_ui_auth( flows, request, request_body, description, get_new_session_data, ) except LoginError: # Update the ratelimiter to say we failed (`can_do_action` doesn't raise). await self._failed_uia_attempts_ratelimiter.can_do_action( requester, ) raise # find the completed login type for login_type in supported_ui_auth_types: if login_type not in result: continue validated_user_id = result[login_type] break else: # this can't happen raise Exception("check_auth returned True but no successful login type") # check that the UI auth matched the access token if validated_user_id != requester_user_id: raise AuthError(403, "Invalid auth") # Note that the access token has been validated. await self.store.update_access_token_last_validated(requester.access_token_id) return params, session_id async def _get_available_ui_auth_types(self, user: UserID) -> Iterable[str]: """Get a list of the authentication types this user can use""" ui_auth_types = set() # if the HS supports password auth, and the user has a non-null password, we # support password auth if self._password_localdb_enabled and self._password_enabled: lookupres = await self._find_user_id_and_pwd_hash(user.to_string()) if lookupres: _, password_hash = lookupres if password_hash: ui_auth_types.add(LoginType.PASSWORD) # also allow auth from password providers for t in self.password_auth_provider.get_supported_login_types().keys(): if t == LoginType.PASSWORD and not self._password_enabled: continue ui_auth_types.add(t) # if sso is enabled, allow the user to log in via SSO iff they have a mapping # from sso to mxid. if await self.hs.get_sso_handler().get_identity_providers_for_user( user.to_string() ): ui_auth_types.add(LoginType.SSO) return ui_auth_types def get_enabled_auth_types(self) -> Iterable[str]: """Return the enabled user-interactive authentication types Returns the UI-Auth types which are supported by the homeserver's current config. """ return self.checkers.keys() async def check_ui_auth( self, flows: List[List[str]], request: SynapseRequest, clientdict: Dict[str, Any], description: str, get_new_session_data: Optional[Callable[[], JsonDict]] = None, ) -> Tuple[dict, dict, str]: """ Takes a dictionary sent by the client in the login / registration protocol and handles the User-Interactive Auth flow. If no auth flows have been completed successfully, raises an InteractiveAuthIncompleteError. To handle this, you can use synapse.rest.client._base.interactive_auth_handler as a decorator. Args: flows: A list of login flows. Each flow is an ordered list of strings representing auth-types. At least one full flow must be completed in order for auth to be successful. request: The request sent by the client. clientdict: The dictionary from the client root level, not the 'auth' key: this method prompts for auth if none is sent. description: A human readable string to be displayed to the user that describes the operation happening on their account. get_new_session_data: an optional callback which will be called when starting a new session. it should return data to be stored as part of the session. The keys of the returned data should be entries in UIAuthSessionDataConstants. Returns: A tuple of (creds, params, session_id). 'creds' contains the authenticated credentials of each stage. 'params' contains the parameters for this request (which may have been given only in a previous call). 'session_id' is the ID of this session, either passed in by the client or assigned by this call Raises: InteractiveAuthIncompleteError if the client has not yet completed all the stages in any of the permitted flows. """ sid: Optional[str] = None authdict = clientdict.pop("auth", {}) if "session" in authdict: sid = authdict["session"] # Convert the URI and method to strings. uri = request.uri.decode("utf-8") # type: ignore method = request.method.decode("utf-8") # If there's no session ID, create a new session. if not sid: new_session_data = get_new_session_data() if get_new_session_data else {} session = await self.store.create_ui_auth_session( clientdict, uri, method, description ) for k, v in new_session_data.items(): await self.set_session_data(session.session_id, k, v) else: try: session = await self.store.get_ui_auth_session(sid) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (sid,)) # If the client provides parameters, update what is persisted, # otherwise use whatever was last provided. # # This was designed to allow the client to omit the parameters # and just supply the session in subsequent calls so it split # auth between devices by just sharing the session, (eg. so you # could continue registration from your phone having clicked the # email auth link on there). It's probably too open to abuse # because it lets unauthenticated clients store arbitrary objects # on a homeserver. # # Revisit: Assuming the REST APIs do sensible validation, the data # isn't arbitrary. # # Note that the registration endpoint explicitly removes the # "initial_device_display_name" parameter if it is provided # without a "password" parameter. See the changes to # synapse.rest.client.register.RegisterRestServlet.on_POST # in commit 544722bad23fc31056b9240189c3cbbbf0ffd3f9. if not clientdict: clientdict = session.clientdict # Ensure that the queried operation does not vary between stages of # the UI authentication session. This is done by generating a stable # comparator and storing it during the initial query. Subsequent # queries ensure that this comparator has not changed. # # The comparator is based on the requested URI and HTTP method. The # client dict (minus the auth dict) should also be checked, but some # clients are not spec compliant, just warn for now if the client # dict changes. if (session.uri, session.method) != (uri, method): raise SynapseError( 403, "Requested operation has changed during the UI authentication session.", ) if session.clientdict != clientdict: logger.warning( "Requested operation has changed during the UI " "authentication session. A future version of Synapse " "will remove this capability." ) # For backwards compatibility, changes to the client dict are # persisted as clients modify them throughout their user interactive # authentication flow. await self.store.set_ui_auth_clientdict(sid, clientdict) user_agent = get_request_user_agent(request) clientip = request.getClientIP() await self.store.add_user_agent_ip_to_ui_auth_session( session.session_id, user_agent, clientip ) if not authdict: raise InteractiveAuthIncompleteError( session.session_id, self._auth_dict_for_flows(flows, session.session_id) ) # check auth type currently being presented errordict: Dict[str, Any] = {} if "type" in authdict: login_type: str = authdict["type"] try: result = await self._check_auth_dict(authdict, clientip) if result: await self.store.mark_ui_auth_stage_complete( session.session_id, login_type, result ) except LoginError as e: # this step failed. Merge the error dict into the response # so that the client can have another go. errordict = e.error_dict() creds = await self.store.get_completed_ui_auth_stages(session.session_id) for f in flows: # If all the required credentials have been supplied, the user has # successfully completed the UI auth process! if len(set(f) - set(creds)) == 0: # it's very useful to know what args are stored, but this can # include the password in the case of registering, so only log # the keys (confusingly, clientdict may contain a password # param, creds is just what the user authed as for UI auth # and is not sensitive). logger.info( "Auth completed with creds: %r. Client dict has keys: %r", creds, list(clientdict), ) return creds, clientdict, session.session_id ret = self._auth_dict_for_flows(flows, session.session_id) ret["completed"] = list(creds) ret.update(errordict) raise InteractiveAuthIncompleteError(session.session_id, ret) async def add_oob_auth( self, stagetype: str, authdict: Dict[str, Any], clientip: str ) -> None: """ Adds the result of out-of-band authentication into an existing auth session. Currently used for adding the result of fallback auth. Raises: LoginError if the stagetype is unknown or the session is missing. LoginError is raised by check_auth if authentication fails. """ if stagetype not in self.checkers: raise LoginError( 400, f"Unknown UIA stage type: {stagetype}", Codes.INVALID_PARAM ) if "session" not in authdict: raise LoginError(400, "Missing session ID", Codes.MISSING_PARAM) # If authentication fails a LoginError is raised. Otherwise, store # the successful result. result = await self.checkers[stagetype].check_auth(authdict, clientip) await self.store.mark_ui_auth_stage_complete( authdict["session"], stagetype, result ) def get_session_id(self, clientdict: Dict[str, Any]) -> Optional[str]: """ Gets the session ID for a client given the client dictionary Args: clientdict: The dictionary sent by the client in the request Returns: The string session ID the client sent. If the client did not send a session ID, returns None. """ sid = None if clientdict and "auth" in clientdict: authdict = clientdict["auth"] if "session" in authdict: sid = authdict["session"] return sid async def set_session_data(self, session_id: str, key: str, value: Any) -> None: """ Store a key-value pair into the sessions data associated with this request. This data is stored server-side and cannot be modified by the client. Args: session_id: The ID of this session as returned from check_auth key: The key to store the data under. An entry from UIAuthSessionDataConstants. value: The data to store """ try: await self.store.set_ui_auth_session_data(session_id, key, value) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (session_id,)) async def get_session_data( self, session_id: str, key: str, default: Optional[Any] = None ) -> Any: """ Retrieve data stored with set_session_data Args: session_id: The ID of this session as returned from check_auth key: The key the data was stored under. An entry from UIAuthSessionDataConstants. default: Value to return if the key has not been set """ try: return await self.store.get_ui_auth_session_data(session_id, key, default) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (session_id,)) async def _expire_old_sessions(self) -> None: """ Invalidate any user interactive authentication sessions that have expired. """ now = self._clock.time_msec() expiration_time = now - self.SESSION_EXPIRE_MS await self.store.delete_old_ui_auth_sessions(expiration_time) async def _check_auth_dict( self, authdict: Dict[str, Any], clientip: str ) -> Union[Dict[str, Any], str]: """Attempt to validate the auth dict provided by a client Args: authdict: auth dict provided by the client clientip: IP address of the client Returns: Result of the stage verification. Raises: StoreError if there was a problem accessing the database SynapseError if there was a problem with the request LoginError if there was an authentication problem. """ login_type = authdict["type"] checker = self.checkers.get(login_type) if checker is not None: res = await checker.check_auth(authdict, clientip=clientip) return res # fall back to the v1 login flow canonical_id, _ = await self.validate_login(authdict) return canonical_id def _get_params_recaptcha(self) -> dict: return {"public_key": self.hs.config.captcha.recaptcha_public_key} def _get_params_terms(self) -> dict: return { "policies": { "privacy_policy": { "version": self.hs.config.consent.user_consent_version, "en": { "name": self.hs.config.consent.user_consent_policy_name, "url": "%s_matrix/consent?v=%s" % ( self.hs.config.server.public_baseurl, self.hs.config.consent.user_consent_version, ), }, } } } def _auth_dict_for_flows( self, flows: List[List[str]], session_id: str, ) -> Dict[str, Any]: public_flows = [] for f in flows: public_flows.append(f) get_params = { LoginType.RECAPTCHA: self._get_params_recaptcha, LoginType.TERMS: self._get_params_terms, } params: Dict[str, Any] = {} for f in public_flows: for stage in f: if stage in get_params and stage not in params: params[stage] = get_params[stage]() return { "session": session_id, "flows": [{"stages": f} for f in public_flows], "params": params, } async def refresh_token( self, refresh_token: str, access_token_valid_until_ms: Optional[int], refresh_token_valid_until_ms: Optional[int], ) -> Tuple[str, str, Optional[int]]: """ Consumes a refresh token and generate both a new access token and a new refresh token from it. The consumed refresh token is considered invalid after the first use of the new access token or the new refresh token. The lifetime of both the access token and refresh token will be capped so that they do not exceed the session's ultimate expiry time, if applicable. Args: refresh_token: The token to consume. access_token_valid_until_ms: The expiration timestamp of the new access token. None if the access token does not expire. refresh_token_valid_until_ms: The expiration timestamp of the new refresh token. None if the refresh token does not expire. Returns: A tuple containing: - the new access token - the new refresh token - the actual expiry time of the access token, which may be earlier than `access_token_valid_until_ms`. """ # Verify the token signature first before looking up the token if not self._verify_refresh_token(refresh_token): raise SynapseError( HTTPStatus.UNAUTHORIZED, "invalid refresh token", Codes.UNKNOWN_TOKEN ) existing_token = await self.store.lookup_refresh_token(refresh_token) if existing_token is None: raise SynapseError( HTTPStatus.UNAUTHORIZED, "refresh token does not exist", Codes.UNKNOWN_TOKEN, ) if ( existing_token.has_next_access_token_been_used or existing_token.has_next_refresh_token_been_refreshed ): raise SynapseError( HTTPStatus.FORBIDDEN, "refresh token isn't valid anymore", Codes.FORBIDDEN, ) now_ms = self._clock.time_msec() if existing_token.expiry_ts is not None and existing_token.expiry_ts < now_ms: raise SynapseError( HTTPStatus.FORBIDDEN, "The supplied refresh token has expired", Codes.FORBIDDEN, ) if existing_token.ultimate_session_expiry_ts is not None: # This session has a bounded lifetime, even across refreshes. if access_token_valid_until_ms is not None: access_token_valid_until_ms = min( access_token_valid_until_ms, existing_token.ultimate_session_expiry_ts, ) else: access_token_valid_until_ms = existing_token.ultimate_session_expiry_ts if refresh_token_valid_until_ms is not None: refresh_token_valid_until_ms = min( refresh_token_valid_until_ms, existing_token.ultimate_session_expiry_ts, ) else: refresh_token_valid_until_ms = existing_token.ultimate_session_expiry_ts if existing_token.ultimate_session_expiry_ts < now_ms: raise SynapseError( HTTPStatus.FORBIDDEN, "The session has expired and can no longer be refreshed", Codes.FORBIDDEN, ) ( new_refresh_token, new_refresh_token_id, ) = await self.create_refresh_token_for_user_id( user_id=existing_token.user_id, device_id=existing_token.device_id, expiry_ts=refresh_token_valid_until_ms, ultimate_session_expiry_ts=existing_token.ultimate_session_expiry_ts, ) access_token = await self.create_access_token_for_user_id( user_id=existing_token.user_id, device_id=existing_token.device_id, valid_until_ms=access_token_valid_until_ms, refresh_token_id=new_refresh_token_id, ) await self.store.replace_refresh_token( existing_token.token_id, new_refresh_token_id ) return access_token, new_refresh_token, access_token_valid_until_ms def _verify_refresh_token(self, token: str) -> bool: """ Verifies the shape of a refresh token. Args: token: The refresh token to verify Returns: Whether the token has the right shape """ parts = token.split("_", maxsplit=4) if len(parts) != 4: return False type, localpart, rand, crc = parts # Refresh tokens are prefixed by "syr_", let's check that if type != "syr": return False # Check the CRC base = f"{type}_{localpart}_{rand}" expected_crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) if crc != expected_crc: return False return True async def create_refresh_token_for_user_id( self, user_id: str, device_id: str, expiry_ts: Optional[int], ultimate_session_expiry_ts: Optional[int], ) -> Tuple[str, int]: """ Creates a new refresh token for the user with the given user ID. Args: user_id: canonical user ID device_id: the device ID to associate with the token. expiry_ts (milliseconds since the epoch): Time after which the refresh token cannot be used. If None, the refresh token never expires until it has been used. ultimate_session_expiry_ts (milliseconds since the epoch): Time at which the session will end and can not be extended any further. If None, the session can be refreshed indefinitely. Returns: The newly created refresh token and its ID in the database """ refresh_token = self.generate_refresh_token(UserID.from_string(user_id)) refresh_token_id = await self.store.add_refresh_token_to_user( user_id=user_id, token=refresh_token, device_id=device_id, expiry_ts=expiry_ts, ultimate_session_expiry_ts=ultimate_session_expiry_ts, ) return refresh_token, refresh_token_id async def create_access_token_for_user_id( self, user_id: str, device_id: Optional[str], valid_until_ms: Optional[int], puppets_user_id: Optional[str] = None, is_appservice_ghost: bool = False, refresh_token_id: Optional[int] = None, ) -> str: """ Creates a new access token for the user with the given user ID. The user is assumed to have been authenticated by some other mechanism (e.g. CAS), and the user_id converted to the canonical case. The device will be recorded in the table if it is not there already. Args: user_id: canonical User ID device_id: the device ID to associate with the tokens. None to leave the tokens unassociated with a device (deprecated: we should always have a device ID) valid_until_ms: when the token is valid until. None for no expiry. is_appservice_ghost: Whether the user is an application ghost user refresh_token_id: the refresh token ID that will be associated with this access token. Returns: The access token for the user's session. Raises: StoreError if there was a problem storing the token. """ fmt_expiry = "" if valid_until_ms is not None: fmt_expiry = time.strftime( " until %Y-%m-%d %H:%M:%S", time.localtime(valid_until_ms / 1000.0) ) if puppets_user_id: logger.info( "Logging in user %s as %s%s", user_id, puppets_user_id, fmt_expiry ) target_user_id_obj = UserID.from_string(puppets_user_id) else: logger.info( "Logging in user %s on device %s%s", user_id, device_id, fmt_expiry ) target_user_id_obj = UserID.from_string(user_id) if ( not is_appservice_ghost or self.hs.config.appservice.track_appservice_user_ips ): await self.auth.check_auth_blocking(user_id) access_token = self.generate_access_token(target_user_id_obj) await self.store.add_access_token_to_user( user_id=user_id, token=access_token, device_id=device_id, valid_until_ms=valid_until_ms, puppets_user_id=puppets_user_id, refresh_token_id=refresh_token_id, ) # the device *should* have been registered before we got here; however, # it's possible we raced against a DELETE operation. The thing we # really don't want is active access_tokens without a record of the # device, so we double-check it here. if device_id is not None: if await self.store.get_device(user_id, device_id) is None: await self.store.delete_access_token(access_token) raise StoreError(400, "Login raced against device deletion") return access_token async def check_user_exists(self, user_id: str) -> Optional[str]: """ Checks to see if a user with the given id exists. Will check case insensitively, but return None if there are multiple inexact matches. Args: user_id: complete @user:id Returns: The canonical_user_id, or None if zero or multiple matches """ res = await self._find_user_id_and_pwd_hash(user_id) if res is not None: return res[0] return None async def _find_user_id_and_pwd_hash( self, user_id: str ) -> Optional[Tuple[str, str]]: """Checks to see if a user with the given id exists. Will check case insensitively, but will return None if there are multiple inexact matches. Returns: A 2-tuple of `(canonical_user_id, password_hash)` or `None` if there is not exactly one match """ user_infos = await self.store.get_users_by_id_case_insensitive(user_id) result = None if not user_infos: logger.warning("Attempted to login as %s but they do not exist", user_id) elif len(user_infos) == 1: # a single match (possibly not exact) result = user_infos.popitem() elif user_id in user_infos: # multiple matches, but one is exact result = (user_id, user_infos[user_id]) else: # multiple matches, none of them exact logger.warning( "Attempted to login as %s but it matches more than one user " "inexactly: %r", user_id, user_infos.keys(), ) return result def can_change_password(self) -> bool: """Get whether users on this server are allowed to change or set a password. Both `config.auth.password_enabled` and `config.auth.password_localdb_enabled` must be true. Note that any account (even SSO accounts) are allowed to add passwords if the above is true. Returns: Whether users on this server are allowed to change or set a password """ return self._password_enabled and self._password_localdb_enabled def get_supported_login_types(self) -> Iterable[str]: """Get a the login types supported for the /login API By default this is just 'm.login.password' (unless password_enabled is False in the config file), but password auth providers can provide other login types. Returns: login types """ # Load any login types registered by modules # This is stored in the password_auth_provider so this doesn't trigger # any callbacks types = list(self.password_auth_provider.get_supported_login_types().keys()) # This list should include PASSWORD if (either _password_localdb_enabled is # true or if one of the modules registered it) AND _password_enabled is true # Also: # Some clients just pick the first type in the list. In this case, we want # them to use PASSWORD (rather than token or whatever), so we want to make sure # that comes first, where it's present. if LoginType.PASSWORD in types: types.remove(LoginType.PASSWORD) if self._password_enabled: types.insert(0, LoginType.PASSWORD) elif self._password_localdb_enabled and self._password_enabled: types.insert(0, LoginType.PASSWORD) return types async def validate_login( self, login_submission: Dict[str, Any], ratelimit: bool = False, ) -> Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]: """Authenticates the user for the /login API Also used by the user-interactive auth flow to validate auth types which don't have an explicit UIA handler, including m.password.auth. Args: login_submission: the whole of the login submission (including 'type' and other relevant fields) ratelimit: whether to apply the failed_login_attempt ratelimiter Returns: A tuple of the canonical user id, and optional callback to be called once the access token and device id are issued Raises: StoreError if there was a problem accessing the database SynapseError if there was a problem with the request LoginError if there was an authentication problem. """ login_type = login_submission.get("type") if not isinstance(login_type, str): raise SynapseError(400, "Bad parameter: type", Codes.INVALID_PARAM) # ideally, we wouldn't be checking the identifier unless we know we have a login # method which uses it (https://github.com/matrix-org/synapse/issues/8836) # # But the auth providers' check_auth interface requires a username, so in # practice we can only support login methods which we can map to a username # anyway. # special case to check for "password" for the check_password interface # for the auth providers password = login_submission.get("password") if login_type == LoginType.PASSWORD: if not self._password_enabled: raise SynapseError(400, "Password login has been disabled.") if not isinstance(password, str): raise SynapseError(400, "Bad parameter: password", Codes.INVALID_PARAM) # map old-school login fields into new-school "identifier" fields. identifier_dict = convert_client_dict_legacy_fields_to_identifier( login_submission ) # convert phone type identifiers to generic threepids if identifier_dict["type"] == "m.id.phone": identifier_dict = login_id_phone_to_thirdparty(identifier_dict) # convert threepid identifiers to user IDs if identifier_dict["type"] == "m.id.thirdparty": address = identifier_dict.get("address") medium = identifier_dict.get("medium") if medium is None or address is None: raise SynapseError(400, "Invalid thirdparty identifier") # For emails, canonicalise the address. # We store all email addresses canonicalised in the DB. # (See add_threepid in synapse/handlers/auth.py) if medium == "email": try: address = canonicalise_email(address) except ValueError as e: raise SynapseError(400, str(e)) # We also apply account rate limiting using the 3PID as a key, as # otherwise using 3PID bypasses the ratelimiting based on user ID. if ratelimit: await self._failed_login_attempts_ratelimiter.ratelimit( None, (medium, address), update=False ) # Check for login providers that support 3pid login types if login_type == LoginType.PASSWORD: # we've already checked that there is a (valid) password field assert isinstance(password, str) ( canonical_user_id, callback_3pid, ) = await self.check_password_provider_3pid(medium, address, password) if canonical_user_id: # Authentication through password provider and 3pid succeeded return canonical_user_id, callback_3pid # No password providers were able to handle this 3pid # Check local store user_id = await self.hs.get_datastore().get_user_id_by_threepid( medium, address ) if not user_id: logger.warning( "unknown 3pid identifier medium %s, address %r", medium, address ) # We mark that we've failed to log in here, as # `check_password_provider_3pid` might have returned `None` due # to an incorrect password, rather than the account not # existing. # # If it returned None but the 3PID was bound then we won't hit # this code path, which is fine as then the per-user ratelimit # will kick in below. if ratelimit: await self._failed_login_attempts_ratelimiter.can_do_action( None, (medium, address) ) raise LoginError(403, "", errcode=Codes.FORBIDDEN) identifier_dict = {"type": "m.id.user", "user": user_id} # by this point, the identifier should be an m.id.user: if it's anything # else, we haven't understood it. if identifier_dict["type"] != "m.id.user": raise SynapseError(400, "Unknown login identifier type") username = identifier_dict.get("user") if not username: raise SynapseError(400, "User identifier is missing 'user' key") if username.startswith("@"): qualified_user_id = username else: qualified_user_id = UserID(username, self.hs.hostname).to_string() # Check if we've hit the failed ratelimit (but don't update it) if ratelimit: await self._failed_login_attempts_ratelimiter.ratelimit( None, qualified_user_id.lower(), update=False ) try: return await self._validate_userid_login(username, login_submission) except LoginError: # The user has failed to log in, so we need to update the rate # limiter. Using `can_do_action` avoids us raising a ratelimit # exception and masking the LoginError. The actual ratelimiting # should have happened above. if ratelimit: await self._failed_login_attempts_ratelimiter.can_do_action( None, qualified_user_id.lower() ) raise async def _validate_userid_login( self, username: str, login_submission: Dict[str, Any], ) -> Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]: """Helper for validate_login Handles login, once we've mapped 3pids onto userids Args: username: the username, from the identifier dict login_submission: the whole of the login submission (including 'type' and other relevant fields) Returns: A tuple of the canonical user id, and optional callback to be called once the access token and device id are issued Raises: StoreError if there was a problem accessing the database SynapseError if there was a problem with the request LoginError if there was an authentication problem. """ if username.startswith("@"): qualified_user_id = username else: qualified_user_id = UserID(username, self.hs.hostname).to_string() login_type = login_submission.get("type") # we already checked that we have a valid login type assert isinstance(login_type, str) known_login_type = False # Check if login_type matches a type registered by one of the modules # We don't need to remove LoginType.PASSWORD from the list if password login is # disabled, since if that were the case then by this point we know that the # login_type is not LoginType.PASSWORD supported_login_types = self.password_auth_provider.get_supported_login_types() # check if the login type being used is supported by a module if login_type in supported_login_types: # Make a note that this login type is supported by the server known_login_type = True # Get all the fields expected for this login types login_fields = supported_login_types[login_type] # go through the login submission and keep track of which required fields are # provided/not provided missing_fields = [] login_dict = {} for f in login_fields: if f not in login_submission: missing_fields.append(f) else: login_dict[f] = login_submission[f] # raise an error if any of the expected fields for that login type weren't provided if missing_fields: raise SynapseError( 400, "Missing parameters for login type %s: %s" % (login_type, missing_fields), ) # call all of the check_auth hooks for that login_type # it will return a result once the first success is found (or None otherwise) result = await self.password_auth_provider.check_auth( username, login_type, login_dict ) if result: return result # if no module managed to authenticate the user, then fallback to built in password based auth if login_type == LoginType.PASSWORD and self._password_localdb_enabled: known_login_type = True # we've already checked that there is a (valid) password field password = login_submission["password"] assert isinstance(password, str) canonical_user_id = await self._check_local_password( qualified_user_id, password ) if canonical_user_id: return canonical_user_id, None if not known_login_type: raise SynapseError(400, "Unknown login type %s" % login_type) # We raise a 403 here, but note that if we're doing user-interactive # login, it turns all LoginErrors into a 401 anyway. raise LoginError(403, "Invalid password", errcode=Codes.FORBIDDEN) async def check_password_provider_3pid( self, medium: str, address: str, password: str ) -> Tuple[Optional[str], Optional[Callable[["LoginResponse"], Awaitable[None]]]]: """Check if a password provider is able to validate a thirdparty login Args: medium: The medium of the 3pid (ex. email). address: The address of the 3pid (ex. jdoe@example.com). password: The password of the user. Returns: A tuple of `(user_id, callback)`. If authentication is successful, `user_id`is the authenticated, canonical user ID. `callback` is then either a function to be later run after the server has completed login/registration, or `None`. If authentication was unsuccessful, `user_id` and `callback` are both `None`. """ # call all of the check_3pid_auth callbacks # Result will be from the first callback that returns something other than None # If all the callbacks return None, then result is also set to None result = await self.password_auth_provider.check_3pid_auth( medium, address, password ) if result: return result # if result is None then return (None, None) return None, None async def _check_local_password(self, user_id: str, password: str) -> Optional[str]: """Authenticate a user against the local password database. user_id is checked case insensitively, but will return None if there are multiple inexact matches. Args: user_id: complete @user:id password: the provided password Returns: The canonical_user_id, or None if unknown user/bad password """ lookupres = await self._find_user_id_and_pwd_hash(user_id) if not lookupres: return None (user_id, password_hash) = lookupres # If the password hash is None, the account has likely been deactivated if not password_hash: deactivated = await self.store.get_user_deactivated_status(user_id) if deactivated: raise UserDeactivatedError("This account has been deactivated") result = await self.validate_hash(password, password_hash) if not result: logger.warning("Failed password login for user %s", user_id) return None return user_id def generate_access_token(self, for_user: UserID) -> str: """Generates an opaque string, for use as an access token""" # we use the following format for access tokens: # syt___ b64local = unpaddedbase64.encode_base64(for_user.localpart.encode("utf-8")) random_string = stringutils.random_string(20) base = f"syt_{b64local}_{random_string}" crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) return f"{base}_{crc}" def generate_refresh_token(self, for_user: UserID) -> str: """Generates an opaque string, for use as a refresh token""" # we use the following format for refresh tokens: # syr___ b64local = unpaddedbase64.encode_base64(for_user.localpart.encode("utf-8")) random_string = stringutils.random_string(20) base = f"syr_{b64local}_{random_string}" crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) return f"{base}_{crc}" async def validate_short_term_login_token( self, login_token: str ) -> LoginTokenAttributes: try: res = self.macaroon_gen.verify_short_term_login_token(login_token) except Exception: raise AuthError(403, "Invalid login token", errcode=Codes.FORBIDDEN) await self.auth.check_auth_blocking(res.user_id) return res async def delete_access_token(self, access_token: str) -> None: """Invalidate a single access token Args: access_token: access token to be deleted """ user_info = await self.auth.get_user_by_access_token(access_token) await self.store.delete_access_token(access_token) # see if any modules want to know about this await self.password_auth_provider.on_logged_out( user_id=user_info.user_id, device_id=user_info.device_id, access_token=access_token, ) # delete pushers associated with this access token if user_info.token_id is not None: await self.hs.get_pusherpool().remove_pushers_by_access_token( user_info.user_id, (user_info.token_id,) ) async def delete_access_tokens_for_user( self, user_id: str, except_token_id: Optional[int] = None, device_id: Optional[str] = None, ) -> None: """Invalidate access tokens belonging to a user Args: user_id: ID of user the tokens belong to except_token_id: access_token ID which should *not* be deleted device_id: ID of device the tokens are associated with. If None, tokens associated with any device (or no device) will be deleted """ tokens_and_devices = await self.store.user_delete_access_tokens( user_id, except_token_id=except_token_id, device_id=device_id ) # see if any modules want to know about this for token, _, device_id in tokens_and_devices: await self.password_auth_provider.on_logged_out( user_id=user_id, device_id=device_id, access_token=token ) # delete pushers associated with the access tokens await self.hs.get_pusherpool().remove_pushers_by_access_token( user_id, (token_id for _, token_id, _ in tokens_and_devices) ) async def add_threepid( self, user_id: str, medium: str, address: str, validated_at: int ) -> None: # check if medium has a valid value if medium not in ["email", "msisdn"]: raise SynapseError( code=400, msg=("'%s' is not a valid value for 'medium'" % (medium,)), errcode=Codes.INVALID_PARAM, ) # 'Canonicalise' email addresses down to lower case. # We've now moving towards the homeserver being the entity that # is responsible for validating threepids used for resetting passwords # on accounts, so in future Synapse will gain knowledge of specific # types (mediums) of threepid. For now, we still use the existing # infrastructure, but this is the start of synapse gaining knowledge # of specific types of threepid (and fixes the fact that checking # for the presence of an email address during password reset was # case sensitive). if medium == "email": address = canonicalise_email(address) await self.store.user_add_threepid( user_id, medium, address, validated_at, self.hs.get_clock().time_msec() ) async def delete_threepid( self, user_id: str, medium: str, address: str, id_server: Optional[str] = None ) -> bool: """Attempts to unbind the 3pid on the identity servers and deletes it from the local database. Args: user_id: ID of user to remove the 3pid from. medium: The medium of the 3pid being removed: "email" or "msisdn". address: The 3pid address to remove. id_server: Use the given identity server when unbinding any threepids. If None then will attempt to unbind using the identity server specified when binding (if known). Returns: Returns True if successfully unbound the 3pid on the identity server, False if identity server doesn't support the unbind API. """ # 'Canonicalise' email addresses as per above if medium == "email": address = canonicalise_email(address) identity_handler = self.hs.get_identity_handler() result = await identity_handler.try_unbind_threepid( user_id, {"medium": medium, "address": address, "id_server": id_server} ) await self.store.user_delete_threepid(user_id, medium, address) if medium == "email": await self.store.delete_pusher_by_app_id_pushkey_user_id( app_id="m.email", pushkey=address, user_id=user_id ) return result async def hash(self, password: str) -> str: """Computes a secure hash of password. Args: password: Password to hash. Returns: Hashed password. """ def _do_hash() -> str: # Normalise the Unicode in the password pw = unicodedata.normalize("NFKC", password) return bcrypt.hashpw( pw.encode("utf8") + self.hs.config.auth.password_pepper.encode("utf8"), bcrypt.gensalt(self.bcrypt_rounds), ).decode("ascii") return await defer_to_thread(self.hs.get_reactor(), _do_hash) async def validate_hash( self, password: str, stored_hash: Union[bytes, str] ) -> bool: """Validates that self.hash(password) == stored_hash. Args: password: Password to hash. stored_hash: Expected hash value. Returns: Whether self.hash(password) == stored_hash. """ def _do_validate_hash(checked_hash: bytes) -> bool: # Normalise the Unicode in the password pw = unicodedata.normalize("NFKC", password) return bcrypt.checkpw( pw.encode("utf8") + self.hs.config.auth.password_pepper.encode("utf8"), checked_hash, ) if stored_hash: if not isinstance(stored_hash, bytes): stored_hash = stored_hash.encode("ascii") return await defer_to_thread( self.hs.get_reactor(), _do_validate_hash, stored_hash ) else: return False async def start_sso_ui_auth(self, request: SynapseRequest, session_id: str) -> str: """ Get the HTML for the SSO redirect confirmation page. Args: request: The incoming HTTP request session_id: The user interactive authentication session ID. Returns: The HTML to render. """ try: session = await self.store.get_ui_auth_session(session_id) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (session_id,)) user_id_to_verify: str = await self.get_session_data( session_id, UIAuthSessionDataConstants.REQUEST_USER_ID ) idps = await self.hs.get_sso_handler().get_identity_providers_for_user( user_id_to_verify ) if not idps: # we checked that the user had some remote identities before offering an SSO # flow, so either it's been deleted or the client has requested SSO despite # it not being offered. raise SynapseError(400, "User has no SSO identities") # for now, just pick one idp_id, sso_auth_provider = next(iter(idps.items())) if len(idps) > 0: logger.warning( "User %r has previously logged in with multiple SSO IdPs; arbitrarily " "picking %r", user_id_to_verify, idp_id, ) redirect_url = await sso_auth_provider.handle_redirect_request( request, None, session_id ) return self._sso_auth_confirm_template.render( description=session.description, redirect_url=redirect_url, idp=sso_auth_provider, ) async def complete_sso_login( self, registered_user_id: str, auth_provider_id: str, request: Request, client_redirect_url: str, extra_attributes: Optional[JsonDict] = None, new_user: bool = False, auth_provider_session_id: Optional[str] = None, ) -> None: """Having figured out a mxid for this user, complete the HTTP request Args: registered_user_id: The registered user ID to complete SSO login for. auth_provider_id: The id of the SSO Identity provider that was used for login. This will be stored in the login token for future tracking in prometheus metrics. request: The request to complete. client_redirect_url: The URL to which to redirect the user at the end of the process. extra_attributes: Extra attributes which will be passed to the client during successful login. Must be JSON serializable. new_user: True if we should use wording appropriate to a user who has just registered. auth_provider_session_id: The session ID from the SSO IdP received during login. """ # If the account has been deactivated, do not proceed with the login # flow. deactivated = await self.store.get_user_deactivated_status(registered_user_id) if deactivated: respond_with_html(request, 403, self._sso_account_deactivated_template) return profile = await self.store.get_profileinfo( UserID.from_string(registered_user_id).localpart ) self._complete_sso_login( registered_user_id, auth_provider_id, request, client_redirect_url, extra_attributes, new_user=new_user, user_profile_data=profile, auth_provider_session_id=auth_provider_session_id, ) def _complete_sso_login( self, registered_user_id: str, auth_provider_id: str, request: Request, client_redirect_url: str, extra_attributes: Optional[JsonDict] = None, new_user: bool = False, user_profile_data: Optional[ProfileInfo] = None, auth_provider_session_id: Optional[str] = None, ) -> None: """ The synchronous portion of complete_sso_login. This exists purely for backwards compatibility of synapse.module_api.ModuleApi. """ if user_profile_data is None: user_profile_data = ProfileInfo(None, None) # Store any extra attributes which will be passed in the login response. # Note that this is per-user so it may overwrite a previous value, this # is considered OK since the newest SSO attributes should be most valid. if extra_attributes: self._extra_attributes[registered_user_id] = SsoLoginExtraAttributes( self._clock.time_msec(), extra_attributes, ) # Create a login token login_token = self.macaroon_gen.generate_short_term_login_token( registered_user_id, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) # Append the login token to the original redirect URL (i.e. with its query # parameters kept intact) to build the URL to which the template needs to # redirect the users once they have clicked on the confirmation link. redirect_url = self.add_query_param_to_url( client_redirect_url, "loginToken", login_token ) # if the client is whitelisted, we can redirect straight to it if client_redirect_url.startswith(self._whitelisted_sso_clients): request.redirect(redirect_url) finish_request(request) return # Otherwise, serve the redirect confirmation page. # Remove the query parameters from the redirect URL to get a shorter version of # it. This is only to display a human-readable URL in the template, but not the # URL we redirect users to. url_parts = urllib.parse.urlsplit(client_redirect_url) if url_parts.scheme == "https": # for an https uri, just show the netloc (ie, the hostname. Specifically, # the bit between "//" and "/"; this includes any potential # "username:password@" prefix.) display_url = url_parts.netloc else: # for other uris, strip the query-params (including the login token) and # fragment. display_url = urllib.parse.urlunsplit( (url_parts.scheme, url_parts.netloc, url_parts.path, "", "") ) html = self._sso_redirect_confirm_template.render( display_url=display_url, redirect_url=redirect_url, server_name=self._server_name, new_user=new_user, user_id=registered_user_id, user_profile=user_profile_data, ) respond_with_html(request, 200, html) async def _sso_login_callback(self, login_result: "LoginResponse") -> None: """ A login callback which might add additional attributes to the login response. Args: login_result: The data to be sent to the client. Includes the user ID and access token. """ # Expire attributes before processing. Note that there shouldn't be any # valid logins that still have extra attributes. self._expire_sso_extra_attributes() extra_attributes = self._extra_attributes.get(login_result["user_id"]) if extra_attributes: login_result_dict = cast(Dict[str, Any], login_result) login_result_dict.update(extra_attributes.extra_attributes) def _expire_sso_extra_attributes(self) -> None: """ Iterate through the mapping of user IDs to extra attributes and remove any that are no longer valid. """ # TODO This should match the amount of time the macaroon is valid for. LOGIN_TOKEN_EXPIRATION_TIME = 2 * 60 * 1000 expire_before = self._clock.time_msec() - LOGIN_TOKEN_EXPIRATION_TIME to_expire = set() for user_id, data in self._extra_attributes.items(): if data.creation_time < expire_before: to_expire.add(user_id) for user_id in to_expire: logger.debug("Expiring extra attributes for user %s", user_id) del self._extra_attributes[user_id] @staticmethod def add_query_param_to_url(url: str, param_name: str, param: Any) -> str: url_parts = list(urllib.parse.urlparse(url)) query = urllib.parse.parse_qsl(url_parts[4], keep_blank_values=True) query.append((param_name, param)) url_parts[4] = urllib.parse.urlencode(query) return urllib.parse.urlunparse(url_parts) @attr.s(slots=True, auto_attribs=True) class MacaroonGenerator: hs: "HomeServer" def generate_guest_access_token(self, user_id: str) -> str: macaroon = self._generate_base_macaroon(user_id) macaroon.add_first_party_caveat("type = access") # Include a nonce, to make sure that each login gets a different # access token. macaroon.add_first_party_caveat( "nonce = %s" % (stringutils.random_string_with_symbols(16),) ) macaroon.add_first_party_caveat("guest = true") return macaroon.serialize() def generate_short_term_login_token( self, user_id: str, auth_provider_id: str, auth_provider_session_id: Optional[str] = None, duration_in_ms: int = (2 * 60 * 1000), ) -> str: macaroon = self._generate_base_macaroon(user_id) macaroon.add_first_party_caveat("type = login") now = self.hs.get_clock().time_msec() expiry = now + duration_in_ms macaroon.add_first_party_caveat("time < %d" % (expiry,)) macaroon.add_first_party_caveat("auth_provider_id = %s" % (auth_provider_id,)) if auth_provider_session_id is not None: macaroon.add_first_party_caveat( "auth_provider_session_id = %s" % (auth_provider_session_id,) ) return macaroon.serialize() def verify_short_term_login_token(self, token: str) -> LoginTokenAttributes: """Verify a short-term-login macaroon Checks that the given token is a valid, unexpired short-term-login token minted by this server. Args: token: the login token to verify Returns: the user_id that this token is valid for Raises: MacaroonVerificationFailedException if the verification failed """ macaroon = pymacaroons.Macaroon.deserialize(token) user_id = get_value_from_macaroon(macaroon, "user_id") auth_provider_id = get_value_from_macaroon(macaroon, "auth_provider_id") auth_provider_session_id: Optional[str] = None try: auth_provider_session_id = get_value_from_macaroon( macaroon, "auth_provider_session_id" ) except MacaroonVerificationFailedException: pass v = pymacaroons.Verifier() v.satisfy_exact("gen = 1") v.satisfy_exact("type = login") v.satisfy_general(lambda c: c.startswith("user_id = ")) v.satisfy_general(lambda c: c.startswith("auth_provider_id = ")) v.satisfy_general(lambda c: c.startswith("auth_provider_session_id = ")) satisfy_expiry(v, self.hs.get_clock().time_msec) v.verify(macaroon, self.hs.config.key.macaroon_secret_key) return LoginTokenAttributes( user_id=user_id, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) def generate_delete_pusher_token(self, user_id: str) -> str: macaroon = self._generate_base_macaroon(user_id) macaroon.add_first_party_caveat("type = delete_pusher") return macaroon.serialize() def _generate_base_macaroon(self, user_id: str) -> pymacaroons.Macaroon: macaroon = pymacaroons.Macaroon( location=self.hs.config.server.server_name, identifier="key", key=self.hs.config.key.macaroon_secret_key, ) macaroon.add_first_party_caveat("gen = 1") macaroon.add_first_party_caveat("user_id = %s" % (user_id,)) return macaroon def load_legacy_password_auth_providers(hs: "HomeServer") -> None: module_api = hs.get_module_api() for module, config in hs.config.authproviders.password_providers: load_single_legacy_password_auth_provider( module=module, config=config, api=module_api ) def load_single_legacy_password_auth_provider( module: Type, config: JsonDict, api: "ModuleApi", ) -> None: try: provider = module(config=config, account_handler=api) except Exception as e: logger.error("Error while initializing %r: %s", module, e) raise # All methods that the module provides should be async, but this wasn't enforced # in the old module system, so we wrap them if needed def async_wrapper(f: Optional[Callable]) -> Optional[Callable[..., Awaitable]]: # f might be None if the callback isn't implemented by the module. In this # case we don't want to register a callback at all so we return None. if f is None: return None # We need to wrap check_password because its old form would return a boolean # but we now want it to behave just like check_auth() and return the matrix id of # the user if authentication succeeded or None otherwise if f.__name__ == "check_password": async def wrapped_check_password( username: str, login_type: str, login_dict: JsonDict ) -> Optional[Tuple[str, Optional[Callable]]]: # We've already made sure f is not None above, but mypy doesn't do well # across function boundaries so we need to tell it f is definitely not # None. assert f is not None matrix_user_id = api.get_qualified_user_id(username) password = login_dict["password"] is_valid = await f(matrix_user_id, password) if is_valid: return matrix_user_id, None return None return wrapped_check_password # We need to wrap check_auth as in the old form it could return # just a str, but now it must return Optional[Tuple[str, Optional[Callable]] if f.__name__ == "check_auth": async def wrapped_check_auth( username: str, login_type: str, login_dict: JsonDict ) -> Optional[Tuple[str, Optional[Callable]]]: # We've already made sure f is not None above, but mypy doesn't do well # across function boundaries so we need to tell it f is definitely not # None. assert f is not None result = await f(username, login_type, login_dict) if isinstance(result, str): return result, None return result return wrapped_check_auth # We need to wrap check_3pid_auth as in the old form it could return # just a str, but now it must return Optional[Tuple[str, Optional[Callable]] if f.__name__ == "check_3pid_auth": async def wrapped_check_3pid_auth( medium: str, address: str, password: str ) -> Optional[Tuple[str, Optional[Callable]]]: # We've already made sure f is not None above, but mypy doesn't do well # across function boundaries so we need to tell it f is definitely not # None. assert f is not None result = await f(medium, address, password) if isinstance(result, str): return result, None return result return wrapped_check_3pid_auth def run(*args: Tuple, **kwargs: Dict) -> Awaitable: # mypy doesn't do well across function boundaries so we need to tell it # f is definitely not None. assert f is not None return maybe_awaitable(f(*args, **kwargs)) return run # If the module has these methods implemented, then we pull them out # and register them as hooks. check_3pid_auth_hook: Optional[CHECK_3PID_AUTH_CALLBACK] = async_wrapper( getattr(provider, "check_3pid_auth", None) ) on_logged_out_hook: Optional[ON_LOGGED_OUT_CALLBACK] = async_wrapper( getattr(provider, "on_logged_out", None) ) supported_login_types = {} # call get_supported_login_types and add that to the dict g = getattr(provider, "get_supported_login_types", None) if g is not None: # Note the old module style also called get_supported_login_types at loading time # and it is synchronous supported_login_types.update(g()) auth_checkers = {} # Legacy modules have a check_auth method which expects to be called with one of # the keys returned by get_supported_login_types. New style modules register a # dictionary of login_type->check_auth_method mappings check_auth = async_wrapper(getattr(provider, "check_auth", None)) if check_auth is not None: for login_type, fields in supported_login_types.items(): # need tuple(fields) since fields can be any Iterable type (so may not be hashable) auth_checkers[(login_type, tuple(fields))] = check_auth # if it has a "check_password" method then it should handle all auth checks # with login type of LoginType.PASSWORD check_password = async_wrapper(getattr(provider, "check_password", None)) if check_password is not None: # need to use a tuple here for ("password",) not a list since lists aren't hashable auth_checkers[(LoginType.PASSWORD, ("password",))] = check_password api.register_password_auth_provider_callbacks( check_3pid_auth=check_3pid_auth_hook, on_logged_out=on_logged_out_hook, auth_checkers=auth_checkers, ) CHECK_3PID_AUTH_CALLBACK = Callable[ [str, str, str], Awaitable[ Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]] ], ] ON_LOGGED_OUT_CALLBACK = Callable[[str, Optional[str], str], Awaitable] CHECK_AUTH_CALLBACK = Callable[ [str, str, JsonDict], Awaitable[ Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]] ], ] GET_USERNAME_FOR_REGISTRATION_CALLBACK = Callable[ [JsonDict, JsonDict], Awaitable[Optional[str]], ] IS_3PID_ALLOWED_CALLBACK = Callable[[str, str, bool], Awaitable[bool]] class PasswordAuthProvider: """ A class that the AuthHandler calls when authenticating users It allows modules to provide alternative methods for authentication """ def __init__(self) -> None: # lists of callbacks self.check_3pid_auth_callbacks: List[CHECK_3PID_AUTH_CALLBACK] = [] self.on_logged_out_callbacks: List[ON_LOGGED_OUT_CALLBACK] = [] self.get_username_for_registration_callbacks: List[ GET_USERNAME_FOR_REGISTRATION_CALLBACK ] = [] self.is_3pid_allowed_callbacks: List[IS_3PID_ALLOWED_CALLBACK] = [] # Mapping from login type to login parameters self._supported_login_types: Dict[str, Iterable[str]] = {} # Mapping from login type to auth checker callbacks self.auth_checker_callbacks: Dict[str, List[CHECK_AUTH_CALLBACK]] = {} def register_password_auth_provider_callbacks( self, check_3pid_auth: Optional[CHECK_3PID_AUTH_CALLBACK] = None, on_logged_out: Optional[ON_LOGGED_OUT_CALLBACK] = None, is_3pid_allowed: Optional[IS_3PID_ALLOWED_CALLBACK] = None, auth_checkers: Optional[ Dict[Tuple[str, Tuple[str, ...]], CHECK_AUTH_CALLBACK] ] = None, get_username_for_registration: Optional[ GET_USERNAME_FOR_REGISTRATION_CALLBACK ] = None, ) -> None: # Register check_3pid_auth callback if check_3pid_auth is not None: self.check_3pid_auth_callbacks.append(check_3pid_auth) # register on_logged_out callback if on_logged_out is not None: self.on_logged_out_callbacks.append(on_logged_out) if auth_checkers is not None: # register a new supported login_type # Iterate through all of the types being registered for (login_type, fields), callback in auth_checkers.items(): # Note: fields may be empty here. This would allow a modules auth checker to # be called with just 'login_type' and no password or other secrets # Need to check that all the field names are strings or may get nasty errors later for f in fields: if not isinstance(f, str): raise RuntimeError( "A module tried to register support for login type: %s with parameters %s" " but all parameter names must be strings" % (login_type, fields) ) # 2 modules supporting the same login type must expect the same fields # e.g. 1 can't expect "pass" if the other expects "password" # so throw an exception if that happens if login_type not in self._supported_login_types.get(login_type, []): self._supported_login_types[login_type] = fields else: fields_currently_supported = self._supported_login_types.get( login_type ) if fields_currently_supported != fields: raise RuntimeError( "A module tried to register support for login type: %s with parameters %s" " but another module had already registered support for that type with parameters %s" % (login_type, fields, fields_currently_supported) ) # Add the new method to the list of auth_checker_callbacks for this login type self.auth_checker_callbacks.setdefault(login_type, []).append(callback) if get_username_for_registration is not None: self.get_username_for_registration_callbacks.append( get_username_for_registration, ) if is_3pid_allowed is not None: self.is_3pid_allowed_callbacks.append(is_3pid_allowed) def get_supported_login_types(self) -> Mapping[str, Iterable[str]]: """Get the login types supported by this password provider Returns a map from a login type identifier (such as m.login.password) to an iterable giving the fields which must be provided by the user in the submission to the /login API. """ return self._supported_login_types async def check_auth( self, username: str, login_type: str, login_dict: JsonDict ) -> Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]]: """Check if the user has presented valid login credentials Args: username: user id presented by the client. Either an MXID or an unqualified username. login_type: the login type being attempted - one of the types returned by get_supported_login_types() login_dict: the dictionary of login secrets passed by the client. Returns: (user_id, callback) where `user_id` is the fully-qualified mxid of the user, and `callback` is an optional callback which will be called with the result from the /login call (including access_token, device_id, etc.) """ # Go through all callbacks for the login type until one returns with a value # other than None (i.e. until a callback returns a success) for callback in self.auth_checker_callbacks[login_type]: try: result = await callback(username, login_type, login_dict) except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue if result is not None: # Check that the callback returned a Tuple[str, Optional[Callable]] # "type: ignore[unreachable]" is used after some isinstance checks because mypy thinks # result is always the right type, but as it is 3rd party code it might not be if not isinstance(result, tuple) or len(result) != 2: logger.warning( "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # pull out the two parts of the tuple so we can do type checking str_result, callback_result = result # the 1st item in the tuple should be a str if not isinstance(str_result, str): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # the second should be Optional[Callable] if callback_result is not None: if not callable(callback_result): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # The result is a (str, Optional[callback]) tuple so return the successful result return result # If this point has been reached then none of the callbacks successfully authenticated # the user so return None return None async def check_3pid_auth( self, medium: str, address: str, password: str ) -> Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]]: # This function is able to return a deferred that either # resolves None, meaning authentication failure, or upon # success, to a str (which is the user_id) or a tuple of # (user_id, callback_func), where callback_func should be run # after we've finished everything else for callback in self.check_3pid_auth_callbacks: try: result = await callback(medium, address, password) except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue if result is not None: # Check that the callback returned a Tuple[str, Optional[Callable]] # "type: ignore[unreachable]" is used after some isinstance checks because mypy thinks # result is always the right type, but as it is 3rd party code it might not be if not isinstance(result, tuple) or len(result) != 2: logger.warning( "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # pull out the two parts of the tuple so we can do type checking str_result, callback_result = result # the 1st item in the tuple should be a str if not isinstance(str_result, str): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # the second should be Optional[Callable] if callback_result is not None: if not callable(callback_result): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # The result is a (str, Optional[callback]) tuple so return the successful result return result # If this point has been reached then none of the callbacks successfully authenticated # the user so return None return None async def on_logged_out( self, user_id: str, device_id: Optional[str], access_token: str ) -> None: # call all of the on_logged_out callbacks for callback in self.on_logged_out_callbacks: try: await callback(user_id, device_id, access_token) except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue async def get_username_for_registration( self, uia_results: JsonDict, params: JsonDict, ) -> Optional[str]: """Defines the username to use when registering the user, using the credentials and parameters provided during the UIA flow. Stops at the first callback that returns a string. Args: uia_results: The credentials provided during the UIA flow. params: The parameters provided by the registration request. Returns: The localpart to use when registering this user, or None if no module returned a localpart. """ for callback in self.get_username_for_registration_callbacks: try: res = await callback(uia_results, params) if isinstance(res, str): return res elif res is not None: # mypy complains that this line is unreachable because it assumes the # data returned by the module fits the expected type. We just want # to make sure this is the case. logger.warning( # type: ignore[unreachable] "Ignoring non-string value returned by" " get_username_for_registration callback %s: %s", callback, res, ) except Exception as e: logger.error( "Module raised an exception in get_username_for_registration: %s", e, ) raise SynapseError(code=500, msg="Internal Server Error") return None async def is_3pid_allowed( self, medium: str, address: str, registration: bool, ) -> bool: """Check if the user can be allowed to bind a 3PID on this homeserver. Args: medium: The medium of the 3PID. address: The address of the 3PID. registration: Whether the 3PID is being bound when registering a new user. Returns: Whether the 3PID is allowed to be bound on this homeserver """ for callback in self.is_3pid_allowed_callbacks: try: res = await callback(medium, address, registration) if res is False: return res elif not isinstance(res, bool): # mypy complains that this line is unreachable because it assumes the # data returned by the module fits the expected type. We just want # to make sure this is the case. logger.warning( # type: ignore[unreachable] "Ignoring non-string value returned by" " is_3pid_allowed callback %s: %s", callback, res, ) except Exception as e: logger.error("Module raised an exception in is_3pid_allowed: %s", e) raise SynapseError(code=500, msg="Internal Server Error") return True synapse-1.53.0/synapse/handlers/cas.py000066400000000000000000000334741420514467300177050ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from typing import TYPE_CHECKING, Dict, List, Optional from xml.etree import ElementTree as ET import attr from twisted.web.client import PartialDownloadError from synapse.api.errors import HttpResponseException from synapse.handlers.sso import MappingException, UserAttributes from synapse.http.site import SynapseRequest from synapse.types import UserID, map_username_to_mxid_localpart if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class CasError(Exception): """Used to catch errors when validating the CAS ticket.""" def __init__(self, error: str, error_description: Optional[str] = None): self.error = error self.error_description = error_description def __str__(self) -> str: if self.error_description: return f"{self.error}: {self.error_description}" return self.error @attr.s(slots=True, frozen=True, auto_attribs=True) class CasResponse: username: str attributes: Dict[str, List[Optional[str]]] class CasHandler: """ Utility class for to handle the response from a CAS SSO service. Args: hs """ def __init__(self, hs: "HomeServer"): self.hs = hs self._hostname = hs.hostname self._store = hs.get_datastore() self._auth_handler = hs.get_auth_handler() self._registration_handler = hs.get_registration_handler() self._cas_server_url = hs.config.cas.cas_server_url self._cas_service_url = hs.config.cas.cas_service_url self._cas_displayname_attribute = hs.config.cas.cas_displayname_attribute self._cas_required_attributes = hs.config.cas.cas_required_attributes self._http_client = hs.get_proxied_http_client() # identifier for the external_ids table self.idp_id = "cas" # user-facing name of this auth provider self.idp_name = "CAS" # we do not currently support brands/icons for CAS auth, but this is required by # the SsoIdentityProvider protocol type. self.idp_icon = None self.idp_brand = None self._sso_handler = hs.get_sso_handler() self._sso_handler.register_identity_provider(self) def _build_service_param(self, args: Dict[str, str]) -> str: """ Generates a value to use as the "service" parameter when redirecting or querying the CAS service. Args: args: Additional arguments to include in the final redirect URL. Returns: The URL to use as a "service" parameter. """ return "%s?%s" % ( self._cas_service_url, urllib.parse.urlencode(args), ) async def _validate_ticket( self, ticket: str, service_args: Dict[str, str] ) -> CasResponse: """ Validate a CAS ticket with the server, and return the parsed the response. Args: ticket: The CAS ticket from the client. service_args: Additional arguments to include in the service URL. Should be the same as those passed to `handle_redirect_request`. Raises: CasError: If there's an error parsing the CAS response. Returns: The parsed CAS response. """ uri = self._cas_server_url + "/proxyValidate" args = { "ticket": ticket, "service": self._build_service_param(service_args), } try: body = await self._http_client.get_raw(uri, args) except PartialDownloadError as pde: # Twisted raises this error if the connection is closed, # even if that's being used old-http style to signal end-of-data body = pde.response except HttpResponseException as e: description = ( 'Authorization server responded with a "{status}" error ' "while exchanging the authorization code." ).format(status=e.code) raise CasError("server_error", description) from e return self._parse_cas_response(body) def _parse_cas_response(self, cas_response_body: bytes) -> CasResponse: """ Retrieve the user and other parameters from the CAS response. Args: cas_response_body: The response from the CAS query. Raises: CasError: If there's an error parsing the CAS response. Returns: The parsed CAS response. """ # Ensure the response is valid. root = ET.fromstring(cas_response_body) if not root.tag.endswith("serviceResponse"): raise CasError( "missing_service_response", "root of CAS response is not serviceResponse", ) success = root[0].tag.endswith("authenticationSuccess") if not success: raise CasError("unsucessful_response", "Unsuccessful CAS response") # Iterate through the nodes and pull out the user and any extra attributes. user = None attributes: Dict[str, List[Optional[str]]] = {} for child in root[0]: if child.tag.endswith("user"): user = child.text if child.tag.endswith("attributes"): for attribute in child: # ElementTree library expands the namespace in # attribute tags to the full URL of the namespace. # We don't care about namespace here and it will always # be encased in curly braces, so we remove them. tag = attribute.tag if "}" in tag: tag = tag.split("}")[1] attributes.setdefault(tag, []).append(attribute.text) # Ensure a user was found. if user is None: raise CasError("no_user", "CAS response does not contain user") return CasResponse(user, attributes) async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Generates a URL for the CAS server where the client should be redirected. Args: request: the incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login (or None for UI Auth). ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: URL to redirect to """ if ui_auth_session_id: service_args = {"session": ui_auth_session_id} else: assert client_redirect_url service_args = {"redirectUrl": client_redirect_url.decode("utf8")} args = urllib.parse.urlencode( {"service": self._build_service_param(service_args)} ) return "%s/login?%s" % (self._cas_server_url, args) async def handle_ticket( self, request: SynapseRequest, ticket: str, client_redirect_url: Optional[str], session: Optional[str], ) -> None: """ Called once the user has successfully authenticated with the SSO. Validates a CAS ticket sent by the client and completes the auth process. If the user interactive authentication session is provided, marks the UI Auth session as complete, then returns an HTML page notifying the user they are done. Otherwise, this registers the user if necessary, and then returns a redirect (with a login token) to the client. Args: request: the incoming request from the browser. We'll respond to it with a redirect or an HTML page. ticket: The CAS ticket provided by the client. client_redirect_url: the redirectUrl parameter from the `/cas/ticket` HTTP request, if given. This should be the same as the redirectUrl from the original `/login/sso/redirect` request. session: The session parameter from the `/cas/ticket` HTTP request, if given. This should be the UI Auth session id. """ args = {} if client_redirect_url: args["redirectUrl"] = client_redirect_url if session: args["session"] = session try: cas_response = await self._validate_ticket(ticket, args) except CasError as e: logger.exception("Could not validate ticket") self._sso_handler.render_error(request, e.error, e.error_description, 401) return await self._handle_cas_response( request, cas_response, client_redirect_url, session ) async def _handle_cas_response( self, request: SynapseRequest, cas_response: CasResponse, client_redirect_url: Optional[str], session: Optional[str], ) -> None: """Handle a CAS response to a ticket request. Assumes that the response has been validated. Maps the user onto an MXID, registering them if necessary, and returns a response to the browser. Args: request: the incoming request from the browser. We'll respond to it with an HTML page or a redirect cas_response: The parsed CAS response. client_redirect_url: the redirectUrl parameter from the `/cas/ticket` HTTP request, if given. This should be the same as the redirectUrl from the original `/login/sso/redirect` request. session: The session parameter from the `/cas/ticket` HTTP request, if given. This should be the UI Auth session id. """ # first check if we're doing a UIA if session: return await self._sso_handler.complete_sso_ui_auth_request( self.idp_id, cas_response.username, session, request, ) # otherwise, we're handling a login request. # Ensure that the attributes of the logged in user meet the required # attributes. if not self._sso_handler.check_required_attributes( request, cas_response.attributes, self._cas_required_attributes ): return # Call the mapper to register/login the user # If this not a UI auth request than there must be a redirect URL. assert client_redirect_url is not None try: await self._complete_cas_login(cas_response, request, client_redirect_url) except MappingException as e: logger.exception("Could not map user") self._sso_handler.render_error(request, "mapping_error", str(e)) async def _complete_cas_login( self, cas_response: CasResponse, request: SynapseRequest, client_redirect_url: str, ) -> None: """ Given a CAS response, complete the login flow Retrieves the remote user ID, registers the user if necessary, and serves a redirect back to the client with a login-token. Args: cas_response: The parsed CAS response. request: The request to respond to client_redirect_url: The redirect URL passed in by the client. Raises: MappingException if there was a problem mapping the response to a user. RedirectException: some mapping providers may raise this if they need to redirect to an interstitial page. """ # Note that CAS does not support a mapping provider, so the logic is hard-coded. localpart = map_username_to_mxid_localpart(cas_response.username) async def cas_response_to_user_attributes(failures: int) -> UserAttributes: """ Map from CAS attributes to user attributes. """ # Due to the grandfathering logic matching any previously registered # mxids it isn't expected for there to be any failures. if failures: raise RuntimeError("CAS is not expected to de-duplicate Matrix IDs") # Arbitrarily use the first attribute found. display_name = cas_response.attributes.get( self._cas_displayname_attribute, [None] )[0] return UserAttributes(localpart=localpart, display_name=display_name) async def grandfather_existing_users() -> Optional[str]: # Since CAS did not always use the user_external_ids table, always # to attempt to map to existing users. user_id = UserID(localpart, self._hostname).to_string() logger.debug( "Looking for existing account based on mapped %s", user_id, ) users = await self._store.get_users_by_id_case_insensitive(user_id) if users: registered_user_id = list(users.keys())[0] logger.info("Grandfathering mapping to %s", registered_user_id) return registered_user_id return None await self._sso_handler.complete_sso_login_request( self.idp_id, cas_response.username, request, client_redirect_url, cas_response_to_user_attributes, grandfather_existing_users, ) synapse-1.53.0/synapse/handlers/deactivate_account.py000066400000000000000000000256671420514467300227710ustar00rootroot00000000000000# Copyright 2017, 2018 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional from synapse.api.errors import SynapseError from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import Requester, UserID, create_requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DeactivateAccountHandler: """Handler which deals with deactivating user accounts.""" def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.hs = hs self._auth_handler = hs.get_auth_handler() self._device_handler = hs.get_device_handler() self._room_member_handler = hs.get_room_member_handler() self._identity_handler = hs.get_identity_handler() self._profile_handler = hs.get_profile_handler() self.user_directory_handler = hs.get_user_directory_handler() self._server_name = hs.hostname # Flag that indicates whether the process to part users from rooms is running self._user_parter_running = False # Start the user parter loop so it can resume parting users from rooms where # it left off (if it has work left to do). if hs.config.worker.run_background_tasks: hs.get_reactor().callWhenRunning(self._start_user_parting) self._account_validity_enabled = ( hs.config.account_validity.account_validity_enabled ) async def deactivate_account( self, user_id: str, erase_data: bool, requester: Requester, id_server: Optional[str] = None, by_admin: bool = False, ) -> bool: """Deactivate a user's account Args: user_id: ID of user to be deactivated erase_data: whether to GDPR-erase the user's data requester: The user attempting to make this change. id_server: Use the given identity server when unbinding any threepids. If None then will attempt to unbind using the identity server specified when binding (if known). by_admin: Whether this change was made by an administrator. Returns: True if identity server supports removing threepids, otherwise False. """ # FIXME: Theoretically there is a race here wherein user resets # password using threepid. # delete threepids first. We remove these from the IS so if this fails, # leave the user still active so they can try again. # Ideally we would prevent password resets and then do this in the # background thread. # This will be set to false if the identity server doesn't support # unbinding identity_server_supports_unbinding = True # Retrieve the 3PIDs this user has bound to an identity server threepids = await self.store.user_get_bound_threepids(user_id) for threepid in threepids: try: result = await self._identity_handler.try_unbind_threepid( user_id, { "medium": threepid["medium"], "address": threepid["address"], "id_server": id_server, }, ) identity_server_supports_unbinding &= result except Exception: # Do we want this to be a fatal error or should we carry on? logger.exception("Failed to remove threepid from ID server") raise SynapseError(400, "Failed to remove threepid from ID server") await self.store.user_delete_threepid( user_id, threepid["medium"], threepid["address"] ) # Remove all 3PIDs this user has bound to the homeserver await self.store.user_delete_threepids(user_id) # delete any devices belonging to the user, which will also # delete corresponding access tokens. await self._device_handler.delete_all_devices_for_user(user_id) # then delete any remaining access tokens which weren't associated with # a device. await self._auth_handler.delete_access_tokens_for_user(user_id) await self.store.user_set_password_hash(user_id, None) # Most of the pushers will have been deleted when we logged out the # associated devices above, but we still need to delete pushers not # associated with devices, e.g. email pushers. await self.store.delete_all_pushers_for_user(user_id) # Add the user to a table of users pending deactivation (ie. # removal from all the rooms they're a member of) await self.store.add_user_pending_deactivation(user_id) # delete from user directory await self.user_directory_handler.handle_local_user_deactivated(user_id) # Mark the user as erased, if they asked for that if erase_data: user = UserID.from_string(user_id) # Remove avatar URL from this user await self._profile_handler.set_avatar_url(user, requester, "", by_admin) # Remove displayname from this user await self._profile_handler.set_displayname(user, requester, "", by_admin) logger.info("Marking %s as erased", user_id) await self.store.mark_user_erased(user_id) # Now start the process that goes through that list and # parts users from rooms (if it isn't already running) self._start_user_parting() # Reject all pending invites for the user, so that the user doesn't show up in the # "invited" section of rooms' members list. await self._reject_pending_invites_for_user(user_id) # Remove all information on the user from the account_validity table. if self._account_validity_enabled: await self.store.delete_account_validity_for_user(user_id) # Mark the user as deactivated. await self.store.set_user_deactivated_status(user_id, True) # Remove account data (including ignored users and push rules). await self.store.purge_account_data_for_user(user_id) return identity_server_supports_unbinding async def _reject_pending_invites_for_user(self, user_id: str) -> None: """Reject pending invites addressed to a given user ID. Args: user_id: The user ID to reject pending invites for. """ user = UserID.from_string(user_id) pending_invites = await self.store.get_invited_rooms_for_local_user(user_id) for room in pending_invites: try: await self._room_member_handler.update_membership( create_requester(user, authenticated_entity=self._server_name), user, room.room_id, "leave", ratelimit=False, require_consent=False, ) logger.info( "Rejected invite for deactivated user %r in room %r", user_id, room.room_id, ) except Exception: logger.exception( "Failed to reject invite for user %r in room %r:" " ignoring and continuing", user_id, room.room_id, ) def _start_user_parting(self) -> None: """ Start the process that goes through the table of users pending deactivation, if it isn't already running. """ if not self._user_parter_running: run_as_background_process("user_parter_loop", self._user_parter_loop) async def _user_parter_loop(self) -> None: """Loop that parts deactivated users from rooms""" self._user_parter_running = True logger.info("Starting user parter") try: while True: user_id = await self.store.get_user_pending_deactivation() if user_id is None: break logger.info("User parter parting %r", user_id) await self._part_user(user_id) await self.store.del_user_pending_deactivation(user_id) logger.info("User parter finished parting %r", user_id) logger.info("User parter finished: stopping") finally: self._user_parter_running = False async def _part_user(self, user_id: str) -> None: """Causes the given user_id to leave all the rooms they're joined to""" user = UserID.from_string(user_id) rooms_for_user = await self.store.get_rooms_for_user(user_id) for room_id in rooms_for_user: logger.info("User parter parting %r from %r", user_id, room_id) try: await self._room_member_handler.update_membership( create_requester(user, authenticated_entity=self._server_name), user, room_id, "leave", ratelimit=False, require_consent=False, ) except Exception: logger.exception( "Failed to part user %r from room %r: ignoring and continuing", user_id, room_id, ) async def activate_account(self, user_id: str) -> None: """ Activate an account that was previously deactivated. This marks the user as active and not erased in the database, but does not attempt to rejoin rooms, re-add threepids, etc. If enabled, the user will be re-added to the user directory. The user will also need a password hash set to actually login. Args: user_id: ID of user to be re-activated """ user = UserID.from_string(user_id) # Ensure the user is not marked as erased. await self.store.mark_user_not_erased(user_id) # Mark the user as active. await self.store.set_user_deactivated_status(user_id, False) # Add the user to the directory, if necessary. Note that # this must be done after the user is re-activated, because # deactivated users are excluded from the user directory. profile = await self.store.get_profileinfo(user.localpart) await self.user_directory_handler.handle_local_profile_change(user_id, profile) synapse-1.53.0/synapse/handlers/device.py000066400000000000000000001151051420514467300203660ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # Copyright 2019,2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import ( TYPE_CHECKING, Any, Collection, Dict, Iterable, List, Mapping, Optional, Set, Tuple, ) from synapse.api import errors from synapse.api.constants import EventTypes from synapse.api.errors import ( Codes, FederationDeniedError, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.logging.opentracing import log_kv, set_tag, trace from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import ( JsonDict, StreamToken, UserID, get_domain_from_id, get_verify_key_from_cross_signing_key, ) from synapse.util import stringutils from synapse.util.async_helpers import Linearizer from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.metrics import measure_func from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) MAX_DEVICE_DISPLAY_NAME_LEN = 100 class DeviceWorkerHandler: def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.hs = hs self.store = hs.get_datastore() self.notifier = hs.get_notifier() self.state = hs.get_state_handler() self.state_store = hs.get_storage().state self._auth_handler = hs.get_auth_handler() self.server_name = hs.hostname @trace async def get_devices_by_user(self, user_id: str) -> List[JsonDict]: """ Retrieve the given user's devices Args: user_id: The user ID to query for devices. Returns: info on each device """ set_tag("user_id", user_id) device_map = await self.store.get_devices_by_user(user_id) ips = await self.store.get_last_client_ip_by_device(user_id, device_id=None) devices = list(device_map.values()) for device in devices: _update_device_from_client_ips(device, ips) log_kv(device_map) return devices @trace async def get_device(self, user_id: str, device_id: str) -> JsonDict: """Retrieve the given device Args: user_id: The user to get the device from device_id: The device to fetch. Returns: info on the device Raises: errors.NotFoundError: if the device was not found """ device = await self.store.get_device(user_id, device_id) if device is None: raise errors.NotFoundError() ips = await self.store.get_last_client_ip_by_device(user_id, device_id) _update_device_from_client_ips(device, ips) set_tag("device", device) set_tag("ips", ips) return device @trace @measure_func("device.get_user_ids_changed") async def get_user_ids_changed( self, user_id: str, from_token: StreamToken ) -> JsonDict: """Get list of users that have had the devices updated, or have newly joined a room, that `user_id` may be interested in. """ set_tag("user_id", user_id) set_tag("from_token", from_token) now_room_key = self.store.get_room_max_token() room_ids = await self.store.get_rooms_for_user(user_id) # First we check if any devices have changed for users that we share # rooms with. users_who_share_room = await self.store.get_users_who_share_room_with_user( user_id ) tracked_users = set(users_who_share_room) # Always tell the user about their own devices tracked_users.add(user_id) changed = await self.store.get_users_whose_devices_changed( from_token.device_list_key, tracked_users ) # Then work out if any users have since joined rooms_changed = self.store.get_rooms_that_changed(room_ids, from_token.room_key) member_events = await self.store.get_membership_changes_for_user( user_id, from_token.room_key, now_room_key ) rooms_changed.update(event.room_id for event in member_events) stream_ordering = from_token.room_key.stream possibly_changed = set(changed) possibly_left = set() for room_id in rooms_changed: current_state_ids = await self.store.get_current_state_ids(room_id) # The user may have left the room # TODO: Check if they actually did or if we were just invited. if room_id not in room_ids: for etype, state_key in current_state_ids.keys(): if etype != EventTypes.Member: continue possibly_left.add(state_key) continue # Fetch the current state at the time. try: event_ids = await self.store.get_forward_extremities_for_room_at_stream_ordering( room_id, stream_ordering=stream_ordering ) except errors.StoreError: # we have purged the stream_ordering index since the stream # ordering: treat it the same as a new room event_ids = [] # special-case for an empty prev state: include all members # in the changed list if not event_ids: log_kv( {"event": "encountered empty previous state", "room_id": room_id} ) for etype, state_key in current_state_ids.keys(): if etype != EventTypes.Member: continue possibly_changed.add(state_key) continue current_member_id = current_state_ids.get((EventTypes.Member, user_id)) if not current_member_id: continue # mapping from event_id -> state_dict prev_state_ids = await self.state_store.get_state_ids_for_events(event_ids) # Check if we've joined the room? If so we just blindly add all the users to # the "possibly changed" users. for state_dict in prev_state_ids.values(): member_event = state_dict.get((EventTypes.Member, user_id), None) if not member_event or member_event != current_member_id: for etype, state_key in current_state_ids.keys(): if etype != EventTypes.Member: continue possibly_changed.add(state_key) break # If there has been any change in membership, include them in the # possibly changed list. We'll check if they are joined below, # and we're not toooo worried about spuriously adding users. for key, event_id in current_state_ids.items(): etype, state_key = key if etype != EventTypes.Member: continue # check if this member has changed since any of the extremities # at the stream_ordering, and add them to the list if so. for state_dict in prev_state_ids.values(): prev_event_id = state_dict.get(key, None) if not prev_event_id or prev_event_id != event_id: if state_key != user_id: possibly_changed.add(state_key) break if possibly_changed or possibly_left: # Take the intersection of the users whose devices may have changed # and those that actually still share a room with the user possibly_joined = possibly_changed & users_who_share_room possibly_left = (possibly_changed | possibly_left) - users_who_share_room else: possibly_joined = set() possibly_left = set() result = {"changed": list(possibly_joined), "left": list(possibly_left)} log_kv(result) return result async def on_federation_query_user_devices(self, user_id: str) -> JsonDict: stream_id, devices = await self.store.get_e2e_device_keys_for_federation_query( user_id ) master_key = await self.store.get_e2e_cross_signing_key(user_id, "master") self_signing_key = await self.store.get_e2e_cross_signing_key( user_id, "self_signing" ) return { "user_id": user_id, "stream_id": stream_id, "devices": devices, "master_key": master_key, "self_signing_key": self_signing_key, } class DeviceHandler(DeviceWorkerHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.federation_sender = hs.get_federation_sender() self.device_list_updater = DeviceListUpdater(hs, self) federation_registry = hs.get_federation_registry() federation_registry.register_edu_handler( "m.device_list_update", self.device_list_updater.incoming_device_list_update ) hs.get_distributor().observe("user_left_room", self.user_left_room) def _check_device_name_length(self, name: Optional[str]) -> None: """ Checks whether a device name is longer than the maximum allowed length. Args: name: The name of the device. Raises: SynapseError: if the device name is too long. """ if name and len(name) > MAX_DEVICE_DISPLAY_NAME_LEN: raise SynapseError( 400, "Device display name is too long (max %i)" % (MAX_DEVICE_DISPLAY_NAME_LEN,), errcode=Codes.TOO_LARGE, ) async def check_device_registered( self, user_id: str, device_id: Optional[str], initial_device_display_name: Optional[str] = None, auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None, ) -> str: """ If the given device has not been registered, register it with the supplied display name. If no device_id is supplied, we make one up. Args: user_id: @user:id device_id: device id supplied by client initial_device_display_name: device display name from client auth_provider_id: The SSO IdP the user used, if any. auth_provider_session_id: The session ID (sid) got from the SSO IdP. Returns: device id (generated if none was supplied) """ self._check_device_name_length(initial_device_display_name) if device_id is not None: new_device = await self.store.store_device( user_id=user_id, device_id=device_id, initial_device_display_name=initial_device_display_name, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) if new_device: await self.notify_device_update(user_id, [device_id]) return device_id # if the device id is not specified, we'll autogen one, but loop a few # times in case of a clash. attempts = 0 while attempts < 5: new_device_id = stringutils.random_string(10).upper() new_device = await self.store.store_device( user_id=user_id, device_id=new_device_id, initial_device_display_name=initial_device_display_name, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) if new_device: await self.notify_device_update(user_id, [new_device_id]) return new_device_id attempts += 1 raise errors.StoreError(500, "Couldn't generate a device ID.") @trace async def delete_device(self, user_id: str, device_id: str) -> None: """Delete the given device Args: user_id: The user to delete the device from. device_id: The device to delete. """ try: await self.store.delete_device(user_id, device_id) except errors.StoreError as e: if e.code == 404: # no match set_tag("error", True) log_kv( {"reason": "User doesn't have device id.", "device_id": device_id} ) pass else: raise await self._auth_handler.delete_access_tokens_for_user( user_id, device_id=device_id ) await self.store.delete_e2e_keys_by_device(user_id=user_id, device_id=device_id) await self.notify_device_update(user_id, [device_id]) @trace async def delete_all_devices_for_user( self, user_id: str, except_device_id: Optional[str] = None ) -> None: """Delete all of the user's devices Args: user_id: The user to remove all devices from except_device_id: optional device id which should not be deleted """ device_map = await self.store.get_devices_by_user(user_id) device_ids = list(device_map) if except_device_id is not None: device_ids = [d for d in device_ids if d != except_device_id] await self.delete_devices(user_id, device_ids) async def delete_devices(self, user_id: str, device_ids: List[str]) -> None: """Delete several devices Args: user_id: The user to delete devices from. device_ids: The list of device IDs to delete """ try: await self.store.delete_devices(user_id, device_ids) except errors.StoreError as e: if e.code == 404: # no match set_tag("error", True) set_tag("reason", "User doesn't have that device id.") pass else: raise # Delete access tokens and e2e keys for each device. Not optimised as it is not # considered as part of a critical path. for device_id in device_ids: await self._auth_handler.delete_access_tokens_for_user( user_id, device_id=device_id ) await self.store.delete_e2e_keys_by_device( user_id=user_id, device_id=device_id ) await self.notify_device_update(user_id, device_ids) async def update_device(self, user_id: str, device_id: str, content: dict) -> None: """Update the given device Args: user_id: The user to update devices of. device_id: The device to update. content: body of update request """ # Reject a new displayname which is too long. new_display_name = content.get("display_name") self._check_device_name_length(new_display_name) try: await self.store.update_device( user_id, device_id, new_display_name=new_display_name ) await self.notify_device_update(user_id, [device_id]) except errors.StoreError as e: if e.code == 404: raise errors.NotFoundError() else: raise @trace @measure_func("notify_device_update") async def notify_device_update( self, user_id: str, device_ids: Collection[str] ) -> None: """Notify that a user's device(s) has changed. Pokes the notifier, and remote servers if the user is local. Args: user_id: The Matrix ID of the user who's device list has been updated. device_ids: The device IDs that have changed. """ if not device_ids: # No changes to notify about, so this is a no-op. return users_who_share_room = await self.store.get_users_who_share_room_with_user( user_id ) hosts: Set[str] = set() if self.hs.is_mine_id(user_id): hosts.update(get_domain_from_id(u) for u in users_who_share_room) hosts.discard(self.server_name) set_tag("target_hosts", hosts) position = await self.store.add_device_change_to_streams( user_id, device_ids, list(hosts) ) if not position: # This should only happen if there are no updates, so we bail. return for device_id in device_ids: logger.debug( "Notifying about update %r/%r, ID: %r", user_id, device_id, position ) # specify the user ID too since the user should always get their own device list # updates, even if they aren't in any rooms. users_to_notify = users_who_share_room.union({user_id}) self.notifier.on_new_event("device_list_key", position, users=users_to_notify) if hosts: logger.info( "Sending device list update notif for %r to: %r", user_id, hosts ) for host in hosts: self.federation_sender.send_device_messages(host) log_kv({"message": "sent device update to host", "host": host}) async def notify_user_signature_update( self, from_user_id: str, user_ids: List[str] ) -> None: """Notify a user that they have made new signatures of other users. Args: from_user_id: the user who made the signature user_ids: the users IDs that have new signatures """ position = await self.store.add_user_signature_change_to_streams( from_user_id, user_ids ) self.notifier.on_new_event("device_list_key", position, users=[from_user_id]) async def user_left_room(self, user: UserID, room_id: str) -> None: user_id = user.to_string() room_ids = await self.store.get_rooms_for_user(user_id) if not room_ids: # We no longer share rooms with this user, so we'll no longer # receive device updates. Mark this in DB. await self.store.mark_remote_user_device_list_as_unsubscribed(user_id) async def store_dehydrated_device( self, user_id: str, device_data: JsonDict, initial_device_display_name: Optional[str] = None, ) -> str: """Store a dehydrated device for a user. If the user had a previous dehydrated device, it is removed. Args: user_id: the user that we are storing the device for device_data: the dehydrated device information initial_device_display_name: The display name to use for the device Returns: device id of the dehydrated device """ device_id = await self.check_device_registered( user_id, None, initial_device_display_name, ) old_device_id = await self.store.store_dehydrated_device( user_id, device_id, device_data ) if old_device_id is not None: await self.delete_device(user_id, old_device_id) return device_id async def get_dehydrated_device( self, user_id: str ) -> Optional[Tuple[str, JsonDict]]: """Retrieve the information for a dehydrated device. Args: user_id: the user whose dehydrated device we are looking for Returns: a tuple whose first item is the device ID, and the second item is the dehydrated device information """ return await self.store.get_dehydrated_device(user_id) async def rehydrate_device( self, user_id: str, access_token: str, device_id: str ) -> dict: """Process a rehydration request from the user. Args: user_id: the user who is rehydrating the device access_token: the access token used for the request device_id: the ID of the device that will be rehydrated Returns: a dict containing {"success": True} """ success = await self.store.remove_dehydrated_device(user_id, device_id) if not success: raise errors.NotFoundError() # If the dehydrated device was successfully deleted (the device ID # matched the stored dehydrated device), then modify the access # token to use the dehydrated device's ID and copy the old device # display name to the dehydrated device, and destroy the old device # ID old_device_id = await self.store.set_device_for_access_token( access_token, device_id ) old_device = await self.store.get_device(user_id, old_device_id) if old_device is None: raise errors.NotFoundError() await self.store.update_device(user_id, device_id, old_device["display_name"]) # can't call self.delete_device because that will clobber the # access token so call the storage layer directly await self.store.delete_device(user_id, old_device_id) await self.store.delete_e2e_keys_by_device( user_id=user_id, device_id=old_device_id ) # tell everyone that the old device is gone and that the dehydrated # device has a new display name await self.notify_device_update(user_id, [old_device_id, device_id]) return {"success": True} def _update_device_from_client_ips( device: JsonDict, client_ips: Mapping[Tuple[str, str], Mapping[str, Any]] ) -> None: ip = client_ips.get((device["user_id"], device["device_id"]), {}) device.update({"last_seen_ts": ip.get("last_seen"), "last_seen_ip": ip.get("ip")}) class DeviceListUpdater: "Handles incoming device list updates from federation and updates the DB" def __init__(self, hs: "HomeServer", device_handler: DeviceHandler): self.store = hs.get_datastore() self.federation = hs.get_federation_client() self.clock = hs.get_clock() self.device_handler = device_handler self._remote_edu_linearizer = Linearizer(name="remote_device_list") # user_id -> list of updates waiting to be handled. self._pending_updates: Dict[ str, List[Tuple[str, str, Iterable[str], JsonDict]] ] = {} # Recently seen stream ids. We don't bother keeping these in the DB, # but they're useful to have them about to reduce the number of spurious # resyncs. self._seen_updates: ExpiringCache[str, Set[str]] = ExpiringCache( cache_name="device_update_edu", clock=self.clock, max_len=10000, expiry_ms=30 * 60 * 1000, iterable=True, ) # Attempt to resync out of sync device lists every 30s. self._resync_retry_in_progress = False self.clock.looping_call( run_as_background_process, 30 * 1000, func=self._maybe_retry_device_resync, desc="_maybe_retry_device_resync", ) @trace async def incoming_device_list_update( self, origin: str, edu_content: JsonDict ) -> None: """Called on incoming device list update from federation. Responsible for parsing the EDU and adding to pending updates list. """ set_tag("origin", origin) set_tag("edu_content", edu_content) user_id = edu_content.pop("user_id") device_id = edu_content.pop("device_id") stream_id = str(edu_content.pop("stream_id")) # They may come as ints prev_ids = edu_content.pop("prev_id", []) prev_ids = [str(p) for p in prev_ids] # They may come as ints if get_domain_from_id(user_id) != origin: # TODO: Raise? logger.warning( "Got device list update edu for %r/%r from %r", user_id, device_id, origin, ) set_tag("error", True) log_kv( { "message": "Got a device list update edu from a user and " "device which does not match the origin of the request.", "user_id": user_id, "device_id": device_id, } ) return room_ids = await self.store.get_rooms_for_user(user_id) if not room_ids: # We don't share any rooms with this user. Ignore update, as we # probably won't get any further updates. set_tag("error", True) log_kv( { "message": "Got an update from a user for which " "we don't share any rooms", "other user_id": user_id, } ) logger.warning( "Got device list update edu for %r/%r, but don't share a room", user_id, device_id, ) return logger.debug("Received device list update for %r/%r", user_id, device_id) self._pending_updates.setdefault(user_id, []).append( (device_id, stream_id, prev_ids, edu_content) ) await self._handle_device_updates(user_id) @measure_func("_incoming_device_list_update") async def _handle_device_updates(self, user_id: str) -> None: "Actually handle pending updates." with (await self._remote_edu_linearizer.queue(user_id)): pending_updates = self._pending_updates.pop(user_id, []) if not pending_updates: # This can happen since we batch updates return for device_id, stream_id, prev_ids, _ in pending_updates: logger.debug( "Handling update %r/%r, ID: %r, prev: %r ", user_id, device_id, stream_id, prev_ids, ) # Given a list of updates we check if we need to resync. This # happens if we've missed updates. resync = await self._need_to_do_resync(user_id, pending_updates) if logger.isEnabledFor(logging.INFO): logger.info( "Received device list update for %s, requiring resync: %s. Devices: %s", user_id, resync, ", ".join(u[0] for u in pending_updates), ) if resync: await self.user_device_resync(user_id) else: # Simply update the single device, since we know that is the only # change (because of the single prev_id matching the current cache) for device_id, stream_id, _, content in pending_updates: await self.store.update_remote_device_list_cache_entry( user_id, device_id, content, stream_id ) await self.device_handler.notify_device_update( user_id, [device_id for device_id, _, _, _ in pending_updates] ) self._seen_updates.setdefault(user_id, set()).update( stream_id for _, stream_id, _, _ in pending_updates ) async def _need_to_do_resync( self, user_id: str, updates: Iterable[Tuple[str, str, Iterable[str], JsonDict]] ) -> bool: """Given a list of updates for a user figure out if we need to do a full resync, or whether we have enough data that we can just apply the delta. """ seen_updates: Set[str] = self._seen_updates.get(user_id, set()) extremity = await self.store.get_device_list_last_stream_id_for_remote(user_id) logger.debug("Current extremity for %r: %r", user_id, extremity) stream_id_in_updates = set() # stream_ids in updates list for _, stream_id, prev_ids, _ in updates: if not prev_ids: # We always do a resync if there are no previous IDs return True for prev_id in prev_ids: if prev_id == extremity: continue elif prev_id in seen_updates: continue elif prev_id in stream_id_in_updates: continue else: return True stream_id_in_updates.add(stream_id) return False @trace async def _maybe_retry_device_resync(self) -> None: """Retry to resync device lists that are out of sync, except if another retry is in progress. """ if self._resync_retry_in_progress: return try: # Prevent another call of this function to retry resyncing device lists so # we don't send too many requests. self._resync_retry_in_progress = True # Get all of the users that need resyncing. need_resync = await self.store.get_user_ids_requiring_device_list_resync() # Iterate over the set of user IDs. for user_id in need_resync: try: # Try to resync the current user's devices list. result = await self.user_device_resync( user_id=user_id, mark_failed_as_stale=False, ) # user_device_resync only returns a result if it managed to # successfully resync and update the database. Updating the table # of users requiring resync isn't necessary here as # user_device_resync already does it (through # self.store.update_remote_device_list_cache). if result: logger.debug( "Successfully resynced the device list for %s", user_id, ) except Exception as e: # If there was an issue resyncing this user, e.g. if the remote # server sent a malformed result, just log the error instead of # aborting all the subsequent resyncs. logger.debug( "Could not resync the device list for %s: %s", user_id, e, ) finally: # Allow future calls to retry resyncinc out of sync device lists. self._resync_retry_in_progress = False async def user_device_resync( self, user_id: str, mark_failed_as_stale: bool = True ) -> Optional[JsonDict]: """Fetches all devices for a user and updates the device cache with them. Args: user_id: The user's id whose device_list will be updated. mark_failed_as_stale: Whether to mark the user's device list as stale if the attempt to resync failed. Returns: A dict with device info as under the "devices" in the result of this request: https://matrix.org/docs/spec/server_server/r0.1.2#get-matrix-federation-v1-user-devices-userid """ logger.debug("Attempting to resync the device list for %s", user_id) log_kv({"message": "Doing resync to update device list."}) # Fetch all devices for the user. origin = get_domain_from_id(user_id) try: result = await self.federation.query_user_devices(origin, user_id) except NotRetryingDestination: if mark_failed_as_stale: # Mark the remote user's device list as stale so we know we need to retry # it later. await self.store.mark_remote_user_device_cache_as_stale(user_id) return None except (RequestSendFailed, HttpResponseException) as e: logger.warning( "Failed to handle device list update for %s: %s", user_id, e, ) if mark_failed_as_stale: # Mark the remote user's device list as stale so we know we need to retry # it later. await self.store.mark_remote_user_device_cache_as_stale(user_id) # We abort on exceptions rather than accepting the update # as otherwise synapse will 'forget' that its device list # is out of date. If we bail then we will retry the resync # next time we get a device list update for this user_id. # This makes it more likely that the device lists will # eventually become consistent. return None except FederationDeniedError as e: set_tag("error", True) log_kv({"reason": "FederationDeniedError"}) logger.info(e) return None except Exception as e: set_tag("error", True) log_kv( {"message": "Exception raised by federation request", "exception": e} ) logger.exception("Failed to handle device list update for %s", user_id) if mark_failed_as_stale: # Mark the remote user's device list as stale so we know we need to retry # it later. await self.store.mark_remote_user_device_cache_as_stale(user_id) return None log_kv({"result": result}) stream_id = result["stream_id"] devices = result["devices"] # Get the master key and the self-signing key for this user if provided in the # response (None if not in the response). # The response will not contain the user signing key, as this key is only used by # its owner, thus it doesn't make sense to send it over federation. master_key = result.get("master_key") self_signing_key = result.get("self_signing_key") ignore_devices = False # If the remote server has more than ~1000 devices for this user # we assume that something is going horribly wrong (e.g. a bot # that logs in and creates a new device every time it tries to # send a message). Maintaining lots of devices per user in the # cache can cause serious performance issues as if this request # takes more than 60s to complete, internal replication from the # inbound federation worker to the synapse master may time out # causing the inbound federation to fail and causing the remote # server to retry, causing a DoS. So in this scenario we give # up on storing the total list of devices and only handle the # delta instead. if len(devices) > 1000: logger.warning( "Ignoring device list snapshot for %s as it has >1K devs (%d)", user_id, len(devices), ) devices = [] ignore_devices = True else: prev_stream_id = await self.store.get_device_list_last_stream_id_for_remote( user_id ) cached_devices = await self.store.get_cached_devices_for_user(user_id) # To ensure that a user with no devices is cached, we skip the resync only # if we have a stream_id from previously writing a cache entry. if prev_stream_id is not None and cached_devices == { d["device_id"]: d for d in devices }: logging.info( "Skipping device list resync for %s, as our cache matches already", user_id, ) devices = [] ignore_devices = True for device in devices: logger.debug( "Handling resync update %r/%r, ID: %r", user_id, device["device_id"], stream_id, ) if not ignore_devices: await self.store.update_remote_device_list_cache( user_id, devices, stream_id ) # mark the cache as valid, whether or not we actually processed any device # list updates. await self.store.mark_remote_user_device_cache_as_valid(user_id) device_ids = [device["device_id"] for device in devices] # Handle cross-signing keys. cross_signing_device_ids = await self.process_cross_signing_key_update( user_id, master_key, self_signing_key, ) device_ids = device_ids + cross_signing_device_ids if device_ids: await self.device_handler.notify_device_update(user_id, device_ids) # We clobber the seen updates since we've re-synced from a given # point. self._seen_updates[user_id] = {stream_id} return result async def process_cross_signing_key_update( self, user_id: str, master_key: Optional[JsonDict], self_signing_key: Optional[JsonDict], ) -> List[str]: """Process the given new master and self-signing key for the given remote user. Args: user_id: The ID of the user these keys are for. master_key: The dict of the cross-signing master key as returned by the remote server. self_signing_key: The dict of the cross-signing self-signing key as returned by the remote server. Return: The device IDs for the given keys. """ device_ids = [] current_keys_map = await self.store.get_e2e_cross_signing_keys_bulk([user_id]) current_keys = current_keys_map.get(user_id) or {} if master_key and master_key != current_keys.get("master"): await self.store.set_e2e_cross_signing_key(user_id, "master", master_key) _, verify_key = get_verify_key_from_cross_signing_key(master_key) # verify_key is a VerifyKey from signedjson, which uses # .version to denote the portion of the key ID after the # algorithm and colon, which is the device ID device_ids.append(verify_key.version) if self_signing_key and self_signing_key != current_keys.get("self_signing"): await self.store.set_e2e_cross_signing_key( user_id, "self_signing", self_signing_key ) _, verify_key = get_verify_key_from_cross_signing_key(self_signing_key) device_ids.append(verify_key.version) return device_ids synapse-1.53.0/synapse/handlers/devicemessage.py000066400000000000000000000265221420514467300217370ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Dict from synapse.api.constants import ToDeviceEventTypes from synapse.api.errors import SynapseError from synapse.api.ratelimiting import Ratelimiter from synapse.logging.context import run_in_background from synapse.logging.opentracing import ( SynapseTags, get_active_span_text_map, log_kv, set_tag, ) from synapse.replication.http.devices import ReplicationUserDevicesResyncRestServlet from synapse.types import JsonDict, Requester, UserID, get_domain_from_id from synapse.util import json_encoder from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DeviceMessageHandler: def __init__(self, hs: "HomeServer"): """ Args: hs: server """ self.store = hs.get_datastore() self.notifier = hs.get_notifier() self.is_mine = hs.is_mine # We only need to poke the federation sender explicitly if its on the # same instance. Other federation sender instances will get notified by # `synapse.app.generic_worker.FederationSenderHandler` when it sees it # in the to-device replication stream. self.federation_sender = None if hs.should_send_federation(): self.federation_sender = hs.get_federation_sender() # If we can handle the to device EDUs we do so, otherwise we route them # to the appropriate worker. if hs.get_instance_name() in hs.config.worker.writers.to_device: hs.get_federation_registry().register_edu_handler( "m.direct_to_device", self.on_direct_to_device_edu ) else: hs.get_federation_registry().register_instances_for_edu( "m.direct_to_device", hs.config.worker.writers.to_device, ) # The handler to call when we think a user's device list might be out of # sync. We do all device list resyncing on the master instance, so if # we're on a worker we hit the device resync replication API. if hs.config.worker.worker_app is None: self._user_device_resync = ( hs.get_device_handler().device_list_updater.user_device_resync ) else: self._user_device_resync = ( ReplicationUserDevicesResyncRestServlet.make_client(hs) ) # a rate limiter for room key requests. The keys are # (sending_user_id, sending_device_id). self._ratelimiter = Ratelimiter( store=self.store, clock=hs.get_clock(), rate_hz=hs.config.ratelimiting.rc_key_requests.per_second, burst_count=hs.config.ratelimiting.rc_key_requests.burst_count, ) async def on_direct_to_device_edu(self, origin: str, content: JsonDict) -> None: """ Handle receiving to-device messages from remote homeservers. Args: origin: The remote homeserver. content: The JSON dictionary containing the to-device messages. """ local_messages = {} sender_user_id = content["sender"] if origin != get_domain_from_id(sender_user_id): logger.warning( "Dropping device message from %r with spoofed sender %r", origin, sender_user_id, ) message_type = content["type"] message_id = content["message_id"] for user_id, by_device in content["messages"].items(): # we use UserID.from_string to catch invalid user ids if not self.is_mine(UserID.from_string(user_id)): logger.warning("To-device message to non-local user %s", user_id) raise SynapseError(400, "Not a user here") if not by_device: continue # Ratelimit key requests by the sending user. if message_type == ToDeviceEventTypes.RoomKeyRequest: allowed, _ = await self._ratelimiter.can_do_action( None, (sender_user_id, None) ) if not allowed: logger.info( "Dropping room_key_request from %s to %s due to rate limit", sender_user_id, user_id, ) continue messages_by_device = { device_id: { "content": message_content, "type": message_type, "sender": sender_user_id, } for device_id, message_content in by_device.items() } local_messages[user_id] = messages_by_device await self._check_for_unknown_devices( message_type, sender_user_id, by_device ) # Add messages to the database. # Retrieve the stream id of the last-processed to-device message. last_stream_id = await self.store.add_messages_from_remote_to_device_inbox( origin, message_id, local_messages ) # Notify listeners that there are new to-device messages to process, # handing them the latest stream id. self.notifier.on_new_event( "to_device_key", last_stream_id, users=local_messages.keys() ) async def _check_for_unknown_devices( self, message_type: str, sender_user_id: str, by_device: Dict[str, Dict[str, Any]], ) -> None: """Checks inbound device messages for unknown remote devices, and if found marks the remote cache for the user as stale. """ if message_type != "m.room_key_request": return # Get the sending device IDs requesting_device_ids = set() for message_content in by_device.values(): device_id = message_content.get("requesting_device_id") requesting_device_ids.add(device_id) # Check if we are tracking the devices of the remote user. room_ids = await self.store.get_rooms_for_user(sender_user_id) if not room_ids: logger.info( "Received device message from remote device we don't" " share a room with: %s %s", sender_user_id, requesting_device_ids, ) return # If we are tracking check that we know about the sending # devices. cached_devices = await self.store.get_cached_devices_for_user(sender_user_id) unknown_devices = requesting_device_ids - set(cached_devices) if unknown_devices: logger.info( "Received device message from remote device not in our cache: %s %s", sender_user_id, unknown_devices, ) await self.store.mark_remote_user_device_cache_as_stale(sender_user_id) # Immediately attempt a resync in the background run_in_background(self._user_device_resync, user_id=sender_user_id) async def send_device_message( self, requester: Requester, message_type: str, messages: Dict[str, Dict[str, JsonDict]], ) -> None: """ Handle a request from a user to send to-device message(s). Args: requester: The user that is sending the to-device messages. message_type: The type of to-device messages that are being sent. messages: A dictionary containing recipients mapped to messages intended for them. """ sender_user_id = requester.user.to_string() message_id = random_string(16) set_tag(SynapseTags.TO_DEVICE_MESSAGE_ID, message_id) log_kv({"number_of_to_device_messages": len(messages)}) set_tag("sender", sender_user_id) local_messages = {} remote_messages: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} for user_id, by_device in messages.items(): # Ratelimit local cross-user key requests by the sending device. if ( message_type == ToDeviceEventTypes.RoomKeyRequest and user_id != sender_user_id ): allowed, _ = await self._ratelimiter.can_do_action( requester, (sender_user_id, requester.device_id) ) if not allowed: logger.info( "Dropping room_key_request from %s to %s due to rate limit", sender_user_id, user_id, ) continue # we use UserID.from_string to catch invalid user ids if self.is_mine(UserID.from_string(user_id)): messages_by_device = { device_id: { "content": message_content, "type": message_type, "sender": sender_user_id, "message_id": message_id, } for device_id, message_content in by_device.items() } if messages_by_device: local_messages[user_id] = messages_by_device log_kv( { "user_id": user_id, "device_id": list(messages_by_device), } ) else: destination = get_domain_from_id(user_id) remote_messages.setdefault(destination, {})[user_id] = by_device context = get_active_span_text_map() remote_edu_contents = {} for destination, messages in remote_messages.items(): log_kv({"destination": destination}) remote_edu_contents[destination] = { "messages": messages, "sender": sender_user_id, "type": message_type, "message_id": message_id, "org.matrix.opentracing_context": json_encoder.encode(context), } # Add messages to the database. # Retrieve the stream id of the last-processed to-device message. last_stream_id = await self.store.add_messages_to_device_inbox( local_messages, remote_edu_contents ) # Notify listeners that there are new to-device messages to process, # handing them the latest stream id. self.notifier.on_new_event( "to_device_key", last_stream_id, users=local_messages.keys() ) if self.federation_sender: for destination in remote_messages.keys(): # Enqueue a new federation transaction to send the new # device messages to each remote destination. self.federation_sender.send_device_messages(destination) synapse-1.53.0/synapse/handlers/directory.py000066400000000000000000000461731420514467300211430ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import string from typing import TYPE_CHECKING, Iterable, List, Optional from synapse.api.constants import MAX_ALIAS_LENGTH, EventTypes from synapse.api.errors import ( AuthError, CodeMessageException, Codes, NotFoundError, RequestSendFailed, ShadowBanError, StoreError, SynapseError, ) from synapse.appservice import ApplicationService from synapse.storage.databases.main.directory import RoomAliasMapping from synapse.types import JsonDict, Requester, RoomAlias, UserID, get_domain_from_id if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DirectoryHandler: def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.hs = hs self.state = hs.get_state_handler() self.appservice_handler = hs.get_application_service_handler() self.event_creation_handler = hs.get_event_creation_handler() self.store = hs.get_datastore() self.config = hs.config self.enable_room_list_search = hs.config.roomdirectory.enable_room_list_search self.require_membership = hs.config.server.require_membership_for_aliases self.third_party_event_rules = hs.get_third_party_event_rules() self.server_name = hs.hostname self.federation = hs.get_federation_client() hs.get_federation_registry().register_query_handler( "directory", self.on_directory_query ) self.spam_checker = hs.get_spam_checker() async def _create_association( self, room_alias: RoomAlias, room_id: str, servers: Optional[Iterable[str]] = None, creator: Optional[str] = None, ) -> None: # general association creation for both human users and app services for wchar in string.whitespace: if wchar in room_alias.localpart: raise SynapseError(400, "Invalid characters in room alias") if not self.hs.is_mine(room_alias): raise SynapseError(400, "Room alias must be local") # TODO(erikj): Change this. # TODO(erikj): Add transactions. # TODO(erikj): Check if there is a current association. if not servers: users = await self.store.get_users_in_room(room_id) servers = {get_domain_from_id(u) for u in users} if not servers: raise SynapseError(400, "Failed to get server list") await self.store.create_room_alias_association( room_alias, room_id, servers, creator=creator ) async def create_association( self, requester: Requester, room_alias: RoomAlias, room_id: str, servers: Optional[List[str]] = None, check_membership: bool = True, ) -> None: """Attempt to create a new alias Args: requester room_alias room_id servers: Iterable of servers that others servers should try and join via check_membership: Whether to check if the user is in the room before the alias can be set (if the server's config requires it). """ user_id = requester.user.to_string() room_alias_str = room_alias.to_string() if len(room_alias_str) > MAX_ALIAS_LENGTH: raise SynapseError( 400, "Can't create aliases longer than %s characters" % MAX_ALIAS_LENGTH, Codes.INVALID_PARAM, ) service = requester.app_service if service: if not service.is_interested_in_alias(room_alias_str): raise SynapseError( 400, "This application service has not reserved this kind of alias.", errcode=Codes.EXCLUSIVE, ) else: # Server admins are not subject to the same constraints as normal # users when creating an alias (e.g. being in the room). is_admin = await self.auth.is_server_admin(requester.user) if (self.require_membership and check_membership) and not is_admin: rooms_for_user = await self.store.get_rooms_for_user(user_id) if room_id not in rooms_for_user: raise AuthError( 403, "You must be in the room to create an alias for it" ) if not await self.spam_checker.user_may_create_room_alias( user_id, room_alias ): raise AuthError(403, "This user is not permitted to create this alias") if not self.config.roomdirectory.is_alias_creation_allowed( user_id, room_id, room_alias_str ): # Let's just return a generic message, as there may be all sorts of # reasons why we said no. TODO: Allow configurable error messages # per alias creation rule? raise SynapseError(403, "Not allowed to create alias") can_create = self.can_modify_alias(room_alias, user_id=user_id) if not can_create: raise AuthError( 400, "This alias is reserved by an application service.", errcode=Codes.EXCLUSIVE, ) await self._create_association(room_alias, room_id, servers, creator=user_id) async def delete_association( self, requester: Requester, room_alias: RoomAlias ) -> str: """Remove an alias from the directory (this is only meant for human users; AS users should call delete_appservice_association) Args: requester room_alias Returns: room id that the alias used to point to Raises: NotFoundError: if the alias doesn't exist AuthError: if the user doesn't have perms to delete the alias (ie, the user is neither the creator of the alias, nor a server admin. SynapseError: if the alias belongs to an AS """ user_id = requester.user.to_string() try: can_delete = await self._user_can_delete_alias(room_alias, user_id) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown room alias") raise if not can_delete: raise AuthError(403, "You don't have permission to delete the alias.") can_delete = self.can_modify_alias(room_alias, user_id=user_id) if not can_delete: raise SynapseError( 400, "This alias is reserved by an application service.", errcode=Codes.EXCLUSIVE, ) room_id = await self._delete_association(room_alias) if room_id is None: # It's possible someone else deleted the association after the # checks above, but before we did the deletion. raise NotFoundError("Unknown room alias") try: await self._update_canonical_alias(requester, user_id, room_id, room_alias) except ShadowBanError as e: logger.info("Failed to update alias events due to shadow-ban: %s", e) except AuthError as e: logger.info("Failed to update alias events: %s", e) return room_id async def delete_appservice_association( self, service: ApplicationService, room_alias: RoomAlias ) -> None: if not service.is_interested_in_alias(room_alias.to_string()): raise SynapseError( 400, "This application service has not reserved this kind of alias", errcode=Codes.EXCLUSIVE, ) await self._delete_association(room_alias) async def _delete_association(self, room_alias: RoomAlias) -> Optional[str]: if not self.hs.is_mine(room_alias): raise SynapseError(400, "Room alias must be local") room_id = await self.store.delete_room_alias(room_alias) return room_id async def get_association(self, room_alias: RoomAlias) -> JsonDict: room_id = None if self.hs.is_mine(room_alias): result: Optional[ RoomAliasMapping ] = await self.get_association_from_room_alias(room_alias) if result: room_id = result.room_id servers = result.servers else: try: fed_result: Optional[JsonDict] = await self.federation.make_query( destination=room_alias.domain, query_type="directory", args={"room_alias": room_alias.to_string()}, retry_on_dns_fail=False, ignore_backoff=True, ) except RequestSendFailed: raise SynapseError(502, "Failed to fetch alias") except CodeMessageException as e: logging.warning("Error retrieving alias") if e.code == 404: fed_result = None else: raise SynapseError(502, "Failed to fetch alias") if fed_result and "room_id" in fed_result and "servers" in fed_result: room_id = fed_result["room_id"] servers = fed_result["servers"] if not room_id: raise SynapseError( 404, "Room alias %s not found" % (room_alias.to_string(),), Codes.NOT_FOUND, ) users = await self.store.get_users_in_room(room_id) extra_servers = {get_domain_from_id(u) for u in users} servers_set = set(extra_servers) | set(servers) # If this server is in the list of servers, return it first. if self.server_name in servers_set: servers = [self.server_name] + [ s for s in servers_set if s != self.server_name ] else: servers = list(servers_set) return {"room_id": room_id, "servers": servers} async def on_directory_query(self, args: JsonDict) -> JsonDict: room_alias = RoomAlias.from_string(args["room_alias"]) if not self.hs.is_mine(room_alias): raise SynapseError(400, "Room Alias is not hosted on this homeserver") result = await self.get_association_from_room_alias(room_alias) if result is not None: return {"room_id": result.room_id, "servers": result.servers} else: raise SynapseError( 404, "Room alias %r not found" % (room_alias.to_string(),), Codes.NOT_FOUND, ) async def _update_canonical_alias( self, requester: Requester, user_id: str, room_id: str, room_alias: RoomAlias ) -> None: """ Send an updated canonical alias event if the removed alias was set as the canonical alias or listed in the alt_aliases field. Raises: ShadowBanError if the requester has been shadow-banned. """ alias_event = await self.state.get_current_state( room_id, EventTypes.CanonicalAlias, "" ) # There is no canonical alias, nothing to do. if not alias_event: return # Obtain a mutable version of the event content. content = dict(alias_event.content) send_update = False # Remove the alias property if it matches the removed alias. alias_str = room_alias.to_string() if alias_event.content.get("alias", "") == alias_str: send_update = True content.pop("alias", "") # Filter the alt_aliases property for the removed alias. Note that the # value is not modified if alt_aliases is of an unexpected form. alt_aliases = content.get("alt_aliases") if isinstance(alt_aliases, (list, tuple)) and alias_str in alt_aliases: send_update = True alt_aliases = [alias for alias in alt_aliases if alias != alias_str] if alt_aliases: content["alt_aliases"] = alt_aliases else: del content["alt_aliases"] if send_update: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.CanonicalAlias, "state_key": "", "room_id": room_id, "sender": user_id, "content": content, }, ratelimit=False, ) async def get_association_from_room_alias( self, room_alias: RoomAlias ) -> Optional[RoomAliasMapping]: result = await self.store.get_association_from_room_alias(room_alias) if not result: # Query AS to see if it exists as_handler = self.appservice_handler result = await as_handler.query_room_alias_exists(room_alias) return result def can_modify_alias(self, alias: RoomAlias, user_id: Optional[str] = None) -> bool: # Any application service "interested" in an alias they are regexing on # can modify the alias. # Users can only modify the alias if ALL the interested services have # non-exclusive locks on the alias (or there are no interested services) services = self.store.get_app_services() interested_services = [ s for s in services if s.is_interested_in_alias(alias.to_string()) ] for service in interested_services: if user_id == service.sender: # this user IS the app service so they can do whatever they like return True elif service.is_exclusive_alias(alias.to_string()): # another service has an exclusive lock on this alias. return False # either no interested services, or no service with an exclusive lock return True async def _user_can_delete_alias(self, alias: RoomAlias, user_id: str) -> bool: """Determine whether a user can delete an alias. One of the following must be true: 1. The user created the alias. 2. The user is a server administrator. 3. The user has a power-level sufficient to send a canonical alias event for the current room. """ creator = await self.store.get_room_alias_creator(alias.to_string()) if creator == user_id: return True # Resolve the alias to the corresponding room. room_mapping = await self.get_association(alias) room_id = room_mapping["room_id"] if not room_id: return False return await self.auth.check_can_change_room_list( room_id, UserID.from_string(user_id) ) async def edit_published_room_list( self, requester: Requester, room_id: str, visibility: str ) -> None: """Edit the entry of the room in the published room list. requester room_id visibility: "public" or "private" """ user_id = requester.user.to_string() if not await self.spam_checker.user_may_publish_room(user_id, room_id): raise AuthError( 403, "This user is not permitted to publish rooms to the room list" ) if requester.is_guest: raise AuthError(403, "Guests cannot edit the published room list") if visibility not in ["public", "private"]: raise SynapseError(400, "Invalid visibility setting") if visibility == "public" and not self.enable_room_list_search: # The room list has been disabled. raise AuthError( 403, "This user is not permitted to publish rooms to the room list" ) room = await self.store.get_room(room_id) if room is None: raise SynapseError(400, "Unknown room") can_change_room_list = await self.auth.check_can_change_room_list( room_id, requester.user ) if not can_change_room_list: raise AuthError( 403, "This server requires you to be a moderator in the room to" " edit its room list entry", ) making_public = visibility == "public" if making_public: room_aliases = await self.store.get_aliases_for_room(room_id) canonical_alias = await self.store.get_canonical_alias_for_room(room_id) if canonical_alias: room_aliases.append(canonical_alias) if not self.config.roomdirectory.is_publishing_room_allowed( user_id, room_id, room_aliases ): # Let's just return a generic message, as there may be all sorts of # reasons why we said no. TODO: Allow configurable error messages # per alias creation rule? raise SynapseError(403, "Not allowed to publish room") # Check if publishing is blocked by a third party module allowed_by_third_party_rules = await ( self.third_party_event_rules.check_visibility_can_be_modified( room_id, visibility ) ) if not allowed_by_third_party_rules: raise SynapseError(403, "Not allowed to publish room") await self.store.set_room_is_public(room_id, making_public) async def edit_published_appservice_room_list( self, appservice_id: str, network_id: str, room_id: str, visibility: str ) -> None: """Add or remove a room from the appservice/network specific public room list. Args: appservice_id: ID of the appservice that owns the list network_id: The ID of the network the list is associated with room_id visibility: either "public" or "private" """ if visibility not in ["public", "private"]: raise SynapseError(400, "Invalid visibility setting") await self.store.set_room_is_public_appservice( room_id, appservice_id, network_id, visibility == "public" ) async def get_aliases_for_room( self, requester: Requester, room_id: str ) -> List[str]: """ Get a list of the aliases that currently point to this room on this server """ # allow access to server admins and current members of the room is_admin = await self.auth.is_server_admin(requester.user) if not is_admin: await self.auth.check_user_in_room_or_world_readable( room_id, requester.user.to_string() ) return await self.store.get_aliases_for_room(room_id) synapse-1.53.0/synapse/handlers/e2e_keys.py000066400000000000000000001563061420514467300206450ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2018-2019 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Tuple import attr from canonicaljson import encode_canonical_json from signedjson.key import VerifyKey, decode_verify_key_bytes from signedjson.sign import SignatureVerifyException, verify_signed_json from unpaddedbase64 import decode_base64 from twisted.internet import defer from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import log_kv, set_tag, tag_args, trace from synapse.replication.http.devices import ReplicationUserDevicesResyncRestServlet from synapse.types import ( JsonDict, UserID, get_domain_from_id, get_verify_key_from_cross_signing_key, ) from synapse.util import json_decoder, unwrapFirstError from synapse.util.async_helpers import Linearizer from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class E2eKeysHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.federation = hs.get_federation_client() self.device_handler = hs.get_device_handler() self.is_mine = hs.is_mine self.clock = hs.get_clock() self._edu_updater = SigningKeyEduUpdater(hs, self) federation_registry = hs.get_federation_registry() self._is_master = hs.config.worker.worker_app is None if not self._is_master: self._user_device_resync_client = ( ReplicationUserDevicesResyncRestServlet.make_client(hs) ) else: # Only register this edu handler on master as it requires writing # device updates to the db federation_registry.register_edu_handler( "m.signing_key_update", self._edu_updater.incoming_signing_key_update, ) # also handle the unstable version # FIXME: remove this when enough servers have upgraded federation_registry.register_edu_handler( "org.matrix.signing_key_update", self._edu_updater.incoming_signing_key_update, ) # doesn't really work as part of the generic query API, because the # query request requires an object POST, but we abuse the # "query handler" interface. federation_registry.register_query_handler( "client_keys", self.on_federation_query_client_keys ) # Limit the number of in-flight requests from a single device. self._query_devices_linearizer = Linearizer( name="query_devices", max_count=10, ) @trace async def query_devices( self, query_body: JsonDict, timeout: int, from_user_id: str, from_device_id: str ) -> JsonDict: """Handle a device key query from a client { "device_keys": { "": [""] } } -> { "device_keys": { "": { "": { ... } } } } Args: from_user_id: the user making the query. This is used when adding cross-signing signatures to limit what signatures users can see. from_device_id: the device making the query. This is used to limit the number of in-flight queries at a time. """ with await self._query_devices_linearizer.queue((from_user_id, from_device_id)): device_keys_query: Dict[str, Iterable[str]] = query_body.get( "device_keys", {} ) # separate users by domain. # make a map from domain to user_id to device_ids local_query = {} remote_queries = {} for user_id, device_ids in device_keys_query.items(): # we use UserID.from_string to catch invalid user ids if self.is_mine(UserID.from_string(user_id)): local_query[user_id] = device_ids else: remote_queries[user_id] = device_ids set_tag("local_key_query", local_query) set_tag("remote_key_query", remote_queries) # First get local devices. # A map of destination -> failure response. failures: Dict[str, JsonDict] = {} results = {} if local_query: local_result = await self.query_local_devices(local_query) for user_id, keys in local_result.items(): if user_id in local_query: results[user_id] = keys # Get cached cross-signing keys cross_signing_keys = await self.get_cross_signing_keys_from_cache( device_keys_query, from_user_id ) # Now attempt to get any remote devices from our local cache. # A map of destination -> user ID -> device IDs. remote_queries_not_in_cache: Dict[str, Dict[str, Iterable[str]]] = {} if remote_queries: query_list: List[Tuple[str, Optional[str]]] = [] for user_id, device_ids in remote_queries.items(): if device_ids: query_list.extend( (user_id, device_id) for device_id in device_ids ) else: query_list.append((user_id, None)) ( user_ids_not_in_cache, remote_results, ) = await self.store.get_user_devices_from_cache(query_list) for user_id, devices in remote_results.items(): user_devices = results.setdefault(user_id, {}) for device_id, device in devices.items(): keys = device.get("keys", None) device_display_name = device.get("device_display_name", None) if keys: result = dict(keys) unsigned = result.setdefault("unsigned", {}) if device_display_name: unsigned["device_display_name"] = device_display_name user_devices[device_id] = result # check for missing cross-signing keys. for user_id in remote_queries.keys(): cached_cross_master = user_id in cross_signing_keys["master_keys"] cached_cross_selfsigning = ( user_id in cross_signing_keys["self_signing_keys"] ) # check if we are missing only one of cross-signing master or # self-signing key, but the other one is cached. # as we need both, this will issue a federation request. # if we don't have any of the keys, either the user doesn't have # cross-signing set up, or the cached device list # is not (yet) updated. if cached_cross_master ^ cached_cross_selfsigning: user_ids_not_in_cache.add(user_id) # add those users to the list to fetch over federation. for user_id in user_ids_not_in_cache: domain = get_domain_from_id(user_id) r = remote_queries_not_in_cache.setdefault(domain, {}) r[user_id] = remote_queries[user_id] # Now fetch any devices that we don't have in our cache await make_deferred_yieldable( defer.gatherResults( [ run_in_background( self._query_devices_for_destination, results, cross_signing_keys, failures, destination, queries, timeout, ) for destination, queries in remote_queries_not_in_cache.items() ], consumeErrors=True, ).addErrback(unwrapFirstError) ) ret = {"device_keys": results, "failures": failures} ret.update(cross_signing_keys) return ret @trace async def _query_devices_for_destination( self, results: JsonDict, cross_signing_keys: JsonDict, failures: Dict[str, JsonDict], destination: str, destination_query: Dict[str, Iterable[str]], timeout: int, ) -> None: """This is called when we are querying the device list of a user on a remote homeserver and their device list is not in the device list cache. If we share a room with this user and we're not querying for specific user we will update the cache with their device list. Args: results: A map from user ID to their device keys, which gets updated with the newly fetched keys. cross_signing_keys: Map from user ID to their cross signing keys, which gets updated with the newly fetched keys. failures: Map of destinations to failures that have occurred while attempting to fetch keys. destination: The remote server to query destination_query: The query dict of devices to query the remote server for. timeout: The timeout for remote HTTP requests. """ # We first consider whether we wish to update the device list cache with # the users device list. We want to track a user's devices when the # authenticated user shares a room with the queried user and the query # has not specified a particular device. # If we update the cache for the queried user we remove them from further # queries. We use the more efficient batched query_client_keys for all # remaining users user_ids_updated = [] for (user_id, device_list) in destination_query.items(): if user_id in user_ids_updated: continue if device_list: continue room_ids = await self.store.get_rooms_for_user(user_id) if not room_ids: continue # We've decided we're sharing a room with this user and should # probably be tracking their device lists. However, we haven't # done an initial sync on the device list so we do it now. try: if self._is_master: resync_results = await self.device_handler.device_list_updater.user_device_resync( user_id ) else: resync_results = await self._user_device_resync_client( user_id=user_id ) # Add the device keys to the results. user_devices = resync_results["devices"] user_results = results.setdefault(user_id, {}) for device in user_devices: user_results[device["device_id"]] = device["keys"] user_ids_updated.append(user_id) # Add any cross signing keys to the results. master_key = resync_results.get("master_key") self_signing_key = resync_results.get("self_signing_key") if master_key: cross_signing_keys["master_keys"][user_id] = master_key if self_signing_key: cross_signing_keys["self_signing_keys"][user_id] = self_signing_key except Exception as e: failures[destination] = _exception_to_failure(e) if len(destination_query) == len(user_ids_updated): # We've updated all the users in the query and we do not need to # make any further remote calls. return # Remove all the users from the query which we have updated for user_id in user_ids_updated: destination_query.pop(user_id) try: remote_result = await self.federation.query_client_keys( destination, {"device_keys": destination_query}, timeout=timeout ) for user_id, keys in remote_result["device_keys"].items(): if user_id in destination_query: results[user_id] = keys if "master_keys" in remote_result: for user_id, key in remote_result["master_keys"].items(): if user_id in destination_query: cross_signing_keys["master_keys"][user_id] = key if "self_signing_keys" in remote_result: for user_id, key in remote_result["self_signing_keys"].items(): if user_id in destination_query: cross_signing_keys["self_signing_keys"][user_id] = key except Exception as e: failure = _exception_to_failure(e) failures[destination] = failure set_tag("error", True) set_tag("reason", failure) return async def get_cross_signing_keys_from_cache( self, query: Iterable[str], from_user_id: Optional[str] ) -> Dict[str, Dict[str, dict]]: """Get cross-signing keys for users from the database Args: query: an iterable of user IDs. A dict whose keys are user IDs satisfies this, so the query format used for query_devices can be used here. from_user_id: the user making the query. This is used when adding cross-signing signatures to limit what signatures users can see. Returns: A map from (master_keys|self_signing_keys|user_signing_keys) -> user_id -> key """ master_keys = {} self_signing_keys = {} user_signing_keys = {} user_ids = list(query) keys = await self.store.get_e2e_cross_signing_keys_bulk(user_ids, from_user_id) for user_id, user_info in keys.items(): if user_info is None: continue if "master" in user_info: master_keys[user_id] = user_info["master"] if "self_signing" in user_info: self_signing_keys[user_id] = user_info["self_signing"] # users can see other users' master and self-signing keys, but can # only see their own user-signing keys if from_user_id: from_user_key = keys.get(from_user_id) if from_user_key and "user_signing" in from_user_key: user_signing_keys[from_user_id] = from_user_key["user_signing"] return { "master_keys": master_keys, "self_signing_keys": self_signing_keys, "user_signing_keys": user_signing_keys, } @trace async def query_local_devices( self, query: Dict[str, Optional[List[str]]] ) -> Dict[str, Dict[str, dict]]: """Get E2E device keys for local users Args: query: map from user_id to a list of devices to query (None for all devices) Returns: A map from user_id -> device_id -> device details """ set_tag("local_query", query) local_query: List[Tuple[str, Optional[str]]] = [] result_dict: Dict[str, Dict[str, dict]] = {} for user_id, device_ids in query.items(): # we use UserID.from_string to catch invalid user ids if not self.is_mine(UserID.from_string(user_id)): logger.warning("Request for keys for non-local user %s", user_id) log_kv( { "message": "Requested a local key for a user which" " was not local to the homeserver", "user_id": user_id, } ) set_tag("error", True) raise SynapseError(400, "Not a user here") if not device_ids: local_query.append((user_id, None)) else: for device_id in device_ids: local_query.append((user_id, device_id)) # make sure that each queried user appears in the result dict result_dict[user_id] = {} results = await self.store.get_e2e_device_keys_for_cs_api(local_query) # Build the result structure for user_id, device_keys in results.items(): for device_id, device_info in device_keys.items(): result_dict[user_id][device_id] = device_info log_kv(results) return result_dict async def on_federation_query_client_keys( self, query_body: Dict[str, Dict[str, Optional[List[str]]]] ) -> JsonDict: """Handle a device key query from a federated server""" device_keys_query: Dict[str, Optional[List[str]]] = query_body.get( "device_keys", {} ) res = await self.query_local_devices(device_keys_query) ret = {"device_keys": res} # add in the cross-signing keys cross_signing_keys = await self.get_cross_signing_keys_from_cache( device_keys_query, None ) ret.update(cross_signing_keys) return ret @trace async def claim_one_time_keys( self, query: Dict[str, Dict[str, Dict[str, str]]], timeout: int ) -> JsonDict: local_query: List[Tuple[str, str, str]] = [] remote_queries: Dict[str, Dict[str, Dict[str, str]]] = {} for user_id, one_time_keys in query.get("one_time_keys", {}).items(): # we use UserID.from_string to catch invalid user ids if self.is_mine(UserID.from_string(user_id)): for device_id, algorithm in one_time_keys.items(): local_query.append((user_id, device_id, algorithm)) else: domain = get_domain_from_id(user_id) remote_queries.setdefault(domain, {})[user_id] = one_time_keys set_tag("local_key_query", local_query) set_tag("remote_key_query", remote_queries) results = await self.store.claim_e2e_one_time_keys(local_query) # A map of user ID -> device ID -> key ID -> key. json_result: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} failures: Dict[str, JsonDict] = {} for user_id, device_keys in results.items(): for device_id, keys in device_keys.items(): for key_id, json_str in keys.items(): json_result.setdefault(user_id, {})[device_id] = { key_id: json_decoder.decode(json_str) } @trace async def claim_client_keys(destination: str) -> None: set_tag("destination", destination) device_keys = remote_queries[destination] try: remote_result = await self.federation.claim_client_keys( destination, {"one_time_keys": device_keys}, timeout=timeout ) for user_id, keys in remote_result["one_time_keys"].items(): if user_id in device_keys: json_result[user_id] = keys except Exception as e: failure = _exception_to_failure(e) failures[destination] = failure set_tag("error", True) set_tag("reason", failure) await make_deferred_yieldable( defer.gatherResults( [ run_in_background(claim_client_keys, destination) for destination in remote_queries ], consumeErrors=True, ) ) logger.info( "Claimed one-time-keys: %s", ",".join( ( "%s for %s:%s" % (key_id, user_id, device_id) for user_id, user_keys in json_result.items() for device_id, device_keys in user_keys.items() for key_id, _ in device_keys.items() ) ), ) log_kv({"one_time_keys": json_result, "failures": failures}) return {"one_time_keys": json_result, "failures": failures} @tag_args async def upload_keys_for_user( self, user_id: str, device_id: str, keys: JsonDict ) -> JsonDict: time_now = self.clock.time_msec() # TODO: Validate the JSON to make sure it has the right keys. device_keys = keys.get("device_keys", None) if device_keys: logger.info( "Updating device_keys for device %r for user %s at %d", device_id, user_id, time_now, ) log_kv( { "message": "Updating device_keys for user.", "user_id": user_id, "device_id": device_id, } ) # TODO: Sign the JSON with the server key changed = await self.store.set_e2e_device_keys( user_id, device_id, time_now, device_keys ) if changed: # Only notify about device updates *if* the keys actually changed await self.device_handler.notify_device_update(user_id, [device_id]) else: log_kv({"message": "Not updating device_keys for user", "user_id": user_id}) one_time_keys = keys.get("one_time_keys", None) if one_time_keys: log_kv( { "message": "Updating one_time_keys for device.", "user_id": user_id, "device_id": device_id, } ) await self._upload_one_time_keys_for_user( user_id, device_id, time_now, one_time_keys ) else: log_kv( {"message": "Did not update one_time_keys", "reason": "no keys given"} ) fallback_keys = keys.get("fallback_keys") or keys.get( "org.matrix.msc2732.fallback_keys" ) if fallback_keys and isinstance(fallback_keys, dict): log_kv( { "message": "Updating fallback_keys for device.", "user_id": user_id, "device_id": device_id, } ) await self.store.set_e2e_fallback_keys(user_id, device_id, fallback_keys) elif fallback_keys: log_kv({"message": "Did not update fallback_keys", "reason": "not a dict"}) else: log_kv( {"message": "Did not update fallback_keys", "reason": "no keys given"} ) # the device should have been registered already, but it may have been # deleted due to a race with a DELETE request. Or we may be using an # old access_token without an associated device_id. Either way, we # need to double-check the device is registered to avoid ending up with # keys without a corresponding device. await self.device_handler.check_device_registered(user_id, device_id) result = await self.store.count_e2e_one_time_keys(user_id, device_id) set_tag("one_time_key_counts", result) return {"one_time_key_counts": result} async def _upload_one_time_keys_for_user( self, user_id: str, device_id: str, time_now: int, one_time_keys: JsonDict ) -> None: logger.info( "Adding one_time_keys %r for device %r for user %r at %d", one_time_keys.keys(), device_id, user_id, time_now, ) # make a list of (alg, id, key) tuples key_list = [] for key_id, key_obj in one_time_keys.items(): algorithm, key_id = key_id.split(":") key_list.append((algorithm, key_id, key_obj)) # First we check if we have already persisted any of the keys. existing_key_map = await self.store.get_e2e_one_time_keys( user_id, device_id, [k_id for _, k_id, _ in key_list] ) new_keys = [] # Keys that we need to insert. (alg, id, json) tuples. for algorithm, key_id, key in key_list: ex_json = existing_key_map.get((algorithm, key_id), None) if ex_json: if not _one_time_keys_match(ex_json, key): raise SynapseError( 400, ( "One time key %s:%s already exists. " "Old key: %s; new key: %r" ) % (algorithm, key_id, ex_json, key), ) else: new_keys.append( (algorithm, key_id, encode_canonical_json(key).decode("ascii")) ) log_kv({"message": "Inserting new one_time_keys.", "keys": new_keys}) await self.store.add_e2e_one_time_keys(user_id, device_id, time_now, new_keys) async def upload_signing_keys_for_user( self, user_id: str, keys: JsonDict ) -> JsonDict: """Upload signing keys for cross-signing Args: user_id: the user uploading the keys keys: the signing keys """ # if a master key is uploaded, then check it. Otherwise, load the # stored master key, to check signatures on other keys if "master_key" in keys: master_key = keys["master_key"] _check_cross_signing_key(master_key, user_id, "master") else: master_key = await self.store.get_e2e_cross_signing_key(user_id, "master") # if there is no master key, then we can't do anything, because all the # other cross-signing keys need to be signed by the master key if not master_key: raise SynapseError(400, "No master key available", Codes.MISSING_PARAM) try: master_key_id, master_verify_key = get_verify_key_from_cross_signing_key( master_key ) except ValueError: if "master_key" in keys: # the invalid key came from the request raise SynapseError(400, "Invalid master key", Codes.INVALID_PARAM) else: # the invalid key came from the database logger.error("Invalid master key found for user %s", user_id) raise SynapseError(500, "Invalid master key") # for the other cross-signing keys, make sure that they have valid # signatures from the master key if "self_signing_key" in keys: self_signing_key = keys["self_signing_key"] _check_cross_signing_key( self_signing_key, user_id, "self_signing", master_verify_key ) if "user_signing_key" in keys: user_signing_key = keys["user_signing_key"] _check_cross_signing_key( user_signing_key, user_id, "user_signing", master_verify_key ) # if everything checks out, then store the keys and send notifications deviceids = [] if "master_key" in keys: await self.store.set_e2e_cross_signing_key(user_id, "master", master_key) deviceids.append(master_verify_key.version) if "self_signing_key" in keys: await self.store.set_e2e_cross_signing_key( user_id, "self_signing", self_signing_key ) try: deviceids.append( get_verify_key_from_cross_signing_key(self_signing_key)[1].version ) except ValueError: raise SynapseError(400, "Invalid self-signing key", Codes.INVALID_PARAM) if "user_signing_key" in keys: await self.store.set_e2e_cross_signing_key( user_id, "user_signing", user_signing_key ) # the signature stream matches the semantics that we want for # user-signing key updates: only the user themselves is notified of # their own user-signing key updates await self.device_handler.notify_user_signature_update(user_id, [user_id]) # master key and self-signing key updates match the semantics of device # list updates: all users who share an encrypted room are notified if len(deviceids): await self.device_handler.notify_device_update(user_id, deviceids) return {} async def upload_signatures_for_device_keys( self, user_id: str, signatures: JsonDict ) -> JsonDict: """Upload device signatures for cross-signing Args: user_id: the user uploading the signatures signatures: map of users to devices to signed keys. This is the submission from the user; an exception will be raised if it is malformed. Returns: The response to be sent back to the client. The response will have a "failures" key, which will be a dict mapping users to devices to errors for the signatures that failed. Raises: SynapseError: if the signatures dict is not valid. """ failures = {} # signatures to be stored. Each item will be a SignatureListItem signature_list = [] # split between checking signatures for own user and signatures for # other users, since we verify them with different keys self_signatures = signatures.get(user_id, {}) other_signatures = {k: v for k, v in signatures.items() if k != user_id} self_signature_list, self_failures = await self._process_self_signatures( user_id, self_signatures ) signature_list.extend(self_signature_list) failures.update(self_failures) other_signature_list, other_failures = await self._process_other_signatures( user_id, other_signatures ) signature_list.extend(other_signature_list) failures.update(other_failures) # store the signature, and send the appropriate notifications for sync logger.debug("upload signature failures: %r", failures) await self.store.store_e2e_cross_signing_signatures(user_id, signature_list) self_device_ids = [item.target_device_id for item in self_signature_list] if self_device_ids: await self.device_handler.notify_device_update(user_id, self_device_ids) signed_users = [item.target_user_id for item in other_signature_list] if signed_users: await self.device_handler.notify_user_signature_update( user_id, signed_users ) return {"failures": failures} async def _process_self_signatures( self, user_id: str, signatures: JsonDict ) -> Tuple[List["SignatureListItem"], Dict[str, Dict[str, dict]]]: """Process uploaded signatures of the user's own keys. Signatures of the user's own keys from this API come in two forms: - signatures of the user's devices by the user's self-signing key, - signatures of the user's master key by the user's devices. Args: user_id (string): the user uploading the keys signatures (dict[string, dict]): map of devices to signed keys Returns: A tuple of a list of signatures to store, and a map of users to devices to failure reasons Raises: SynapseError: if the input is malformed """ signature_list: List["SignatureListItem"] = [] failures: Dict[str, Dict[str, JsonDict]] = {} if not signatures: return signature_list, failures if not isinstance(signatures, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) try: # get our self-signing key to verify the signatures ( _, self_signing_key_id, self_signing_verify_key, ) = await self._get_e2e_cross_signing_verify_key(user_id, "self_signing") # get our master key, since we may have received a signature of it. # We need to fetch it here so that we know what its key ID is, so # that we can check if a signature that was sent is a signature of # the master key or of a device ( master_key, _, master_verify_key, ) = await self._get_e2e_cross_signing_verify_key(user_id, "master") # fetch our stored devices. This is used to 1. verify # signatures on the master key, and 2. to compare with what # was sent if the device was signed devices = await self.store.get_e2e_device_keys_for_cs_api([(user_id, None)]) if user_id not in devices: raise NotFoundError("No device keys found") devices = devices[user_id] except SynapseError as e: failure = _exception_to_failure(e) failures[user_id] = {device: failure for device in signatures.keys()} return signature_list, failures for device_id, device in signatures.items(): # make sure submitted data is in the right form if not isinstance(device, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) try: if "signatures" not in device or user_id not in device["signatures"]: # no signature was sent raise SynapseError( 400, "Invalid signature", Codes.INVALID_SIGNATURE ) if device_id == master_verify_key.version: # The signature is of the master key. This needs to be # handled differently from signatures of normal devices. master_key_signature_list = self._check_master_key_signature( user_id, device_id, device, master_key, devices ) signature_list.extend(master_key_signature_list) continue # at this point, we have a device that should be signed # by the self-signing key if self_signing_key_id not in device["signatures"][user_id]: # no signature was sent raise SynapseError( 400, "Invalid signature", Codes.INVALID_SIGNATURE ) try: stored_device = devices[device_id] except KeyError: raise NotFoundError("Unknown device") if self_signing_key_id in stored_device.get("signatures", {}).get( user_id, {} ): # we already have a signature on this device, so we # can skip it, since it should be exactly the same continue _check_device_signature( user_id, self_signing_verify_key, device, stored_device ) signature = device["signatures"][user_id][self_signing_key_id] signature_list.append( SignatureListItem( self_signing_key_id, user_id, device_id, signature ) ) except SynapseError as e: failures.setdefault(user_id, {})[device_id] = _exception_to_failure(e) return signature_list, failures def _check_master_key_signature( self, user_id: str, master_key_id: str, signed_master_key: JsonDict, stored_master_key: JsonDict, devices: Dict[str, Dict[str, JsonDict]], ) -> List["SignatureListItem"]: """Check signatures of a user's master key made by their devices. Args: user_id: the user whose master key is being checked master_key_id: the ID of the user's master key signed_master_key: the user's signed master key that was uploaded stored_master_key: our previously-stored copy of the user's master key devices: the user's devices Returns: A list of signatures to store Raises: SynapseError: if a signature is invalid """ # for each device that signed the master key, check the signature. master_key_signature_list = [] sigs = signed_master_key["signatures"] for signing_key_id, signature in sigs[user_id].items(): _, signing_device_id = signing_key_id.split(":", 1) if ( signing_device_id not in devices or signing_key_id not in devices[signing_device_id]["keys"] ): # signed by an unknown device, or the # device does not have the key raise SynapseError(400, "Invalid signature", Codes.INVALID_SIGNATURE) # get the key and check the signature pubkey = devices[signing_device_id]["keys"][signing_key_id] verify_key = decode_verify_key_bytes(signing_key_id, decode_base64(pubkey)) _check_device_signature( user_id, verify_key, signed_master_key, stored_master_key ) master_key_signature_list.append( SignatureListItem(signing_key_id, user_id, master_key_id, signature) ) return master_key_signature_list async def _process_other_signatures( self, user_id: str, signatures: Dict[str, dict] ) -> Tuple[List["SignatureListItem"], Dict[str, Dict[str, dict]]]: """Process uploaded signatures of other users' keys. These will be the target user's master keys, signed by the uploading user's user-signing key. Args: user_id: the user uploading the keys signatures: map of users to devices to signed keys Returns: A list of signatures to store, and a map of users to devices to failure reasons Raises: SynapseError: if the input is malformed """ signature_list: List["SignatureListItem"] = [] failures: Dict[str, Dict[str, JsonDict]] = {} if not signatures: return signature_list, failures try: # get our user-signing key to verify the signatures ( user_signing_key, user_signing_key_id, user_signing_verify_key, ) = await self._get_e2e_cross_signing_verify_key(user_id, "user_signing") except SynapseError as e: failure = _exception_to_failure(e) for user, devicemap in signatures.items(): failures[user] = {device_id: failure for device_id in devicemap.keys()} return signature_list, failures for target_user, devicemap in signatures.items(): # make sure submitted data is in the right form if not isinstance(devicemap, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) for device in devicemap.values(): if not isinstance(device, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) device_id = None try: # get the target user's master key, to make sure it matches # what was sent ( master_key, master_key_id, _, ) = await self._get_e2e_cross_signing_verify_key( target_user, "master", user_id ) # make sure that the target user's master key is the one that # was signed (and no others) device_id = master_key_id.split(":", 1)[1] if device_id not in devicemap: logger.debug( "upload signature: could not find signature for device %s", device_id, ) # set device to None so that the failure gets # marked on all the signatures device_id = None raise NotFoundError("Unknown device") key = devicemap[device_id] other_devices = [k for k in devicemap.keys() if k != device_id] if other_devices: # other devices were signed -- mark those as failures logger.debug("upload signature: too many devices specified") failure = _exception_to_failure(NotFoundError("Unknown device")) failures[target_user] = { device: failure for device in other_devices } if user_signing_key_id in master_key.get("signatures", {}).get( user_id, {} ): # we already have the signature, so we can skip it continue _check_device_signature( user_id, user_signing_verify_key, key, master_key ) signature = key["signatures"][user_id][user_signing_key_id] signature_list.append( SignatureListItem( user_signing_key_id, target_user, device_id, signature ) ) except SynapseError as e: failure = _exception_to_failure(e) if device_id is None: failures[target_user] = { device_id: failure for device_id in devicemap.keys() } else: failures.setdefault(target_user, {})[device_id] = failure return signature_list, failures async def _get_e2e_cross_signing_verify_key( self, user_id: str, key_type: str, from_user_id: Optional[str] = None ) -> Tuple[JsonDict, str, VerifyKey]: """Fetch locally or remotely query for a cross-signing public key. First, attempt to fetch the cross-signing public key from storage. If that fails, query the keys from the homeserver they belong to and update our local copy. Args: user_id: the user whose key should be fetched key_type: the type of key to fetch from_user_id: the user that we are fetching the keys for. This affects what signatures are fetched. Returns: The raw key data, the key ID, and the signedjson verify key Raises: NotFoundError: if the key is not found SynapseError: if `user_id` is invalid """ user = UserID.from_string(user_id) key = await self.store.get_e2e_cross_signing_key( user_id, key_type, from_user_id ) if key: # We found a copy of this key in our database. Decode and return it key_id, verify_key = get_verify_key_from_cross_signing_key(key) return key, key_id, verify_key # If we couldn't find the key locally, and we're looking for keys of # another user then attempt to fetch the missing key from the remote # user's server. # # We may run into this in possible edge cases where a user tries to # cross-sign a remote user, but does not share any rooms with them yet. # Thus, we would not have their key list yet. We instead fetch the key, # store it and notify clients of new, associated device IDs. if self.is_mine(user) or key_type not in ["master", "self_signing"]: # Note that master and self_signing keys are the only cross-signing keys we # can request over federation raise NotFoundError("No %s key found for %s" % (key_type, user_id)) ( key, key_id, verify_key, ) = await self._retrieve_cross_signing_keys_for_remote_user(user, key_type) if key is None: raise NotFoundError("No %s key found for %s" % (key_type, user_id)) return key, key_id, verify_key async def _retrieve_cross_signing_keys_for_remote_user( self, user: UserID, desired_key_type: str, ) -> Tuple[Optional[dict], Optional[str], Optional[VerifyKey]]: """Queries cross-signing keys for a remote user and saves them to the database Only the key specified by `key_type` will be returned, while all retrieved keys will be saved regardless Args: user: The user to query remote keys for desired_key_type: The type of key to receive. One of "master", "self_signing" Returns: A tuple of the retrieved key content, the key's ID and the matching VerifyKey. If the key cannot be retrieved, all values in the tuple will instead be None. """ try: remote_result = await self.federation.query_user_devices( user.domain, user.to_string() ) except Exception as e: logger.warning( "Unable to query %s for cross-signing keys of user %s: %s %s", user.domain, user.to_string(), type(e), e, ) return None, None, None # Process each of the retrieved cross-signing keys desired_key = None desired_key_id = None desired_verify_key = None retrieved_device_ids = [] for key_type in ["master", "self_signing"]: key_content = remote_result.get(key_type + "_key") if not key_content: continue # Ensure these keys belong to the correct user if "user_id" not in key_content: logger.warning( "Invalid %s key retrieved, missing user_id field: %s", key_type, key_content, ) continue if user.to_string() != key_content["user_id"]: logger.warning( "Found %s key of user %s when querying for keys of user %s", key_type, key_content["user_id"], user.to_string(), ) continue # Validate the key contents try: # verify_key is a VerifyKey from signedjson, which uses # .version to denote the portion of the key ID after the # algorithm and colon, which is the device ID key_id, verify_key = get_verify_key_from_cross_signing_key(key_content) except ValueError as e: logger.warning( "Invalid %s key retrieved: %s - %s %s", key_type, key_content, type(e), e, ) continue # Note down the device ID attached to this key retrieved_device_ids.append(verify_key.version) # If this is the desired key type, save it and its ID/VerifyKey if key_type == desired_key_type: desired_key = key_content desired_verify_key = verify_key desired_key_id = key_id # At the same time, store this key in the db for subsequent queries await self.store.set_e2e_cross_signing_key( user.to_string(), key_type, key_content ) # Notify clients that new devices for this user have been discovered if retrieved_device_ids: # XXX is this necessary? await self.device_handler.notify_device_update( user.to_string(), retrieved_device_ids ) return desired_key, desired_key_id, desired_verify_key def _check_cross_signing_key( key: JsonDict, user_id: str, key_type: str, signing_key: Optional[VerifyKey] = None ) -> None: """Check a cross-signing key uploaded by a user. Performs some basic sanity checking, and ensures that it is signed, if a signature is required. Args: key: the key data to verify user_id: the user whose key is being checked key_type: the type of key that the key should be signing_key: the signing key that the key should be signed with. If omitted, signatures will not be checked. """ if ( key.get("user_id") != user_id or key_type not in key.get("usage", []) or len(key.get("keys", {})) != 1 ): raise SynapseError(400, ("Invalid %s key" % (key_type,)), Codes.INVALID_PARAM) if signing_key: try: verify_signed_json(key, user_id, signing_key) except SignatureVerifyException: raise SynapseError( 400, ("Invalid signature on %s key" % key_type), Codes.INVALID_SIGNATURE ) def _check_device_signature( user_id: str, verify_key: VerifyKey, signed_device: JsonDict, stored_device: JsonDict, ) -> None: """Check that a signature on a device or cross-signing key is correct and matches the copy of the device/key that we have stored. Throws an exception if an error is detected. Args: user_id: the user ID whose signature is being checked verify_key: the key to verify the device with signed_device: the uploaded signed device data stored_device: our previously stored copy of the device Raises: SynapseError: if the signature was invalid or the sent device is not the same as the stored device """ # make sure that the device submitted matches what we have stored stripped_signed_device = { k: v for k, v in signed_device.items() if k not in ["signatures", "unsigned"] } stripped_stored_device = { k: v for k, v in stored_device.items() if k not in ["signatures", "unsigned"] } if stripped_signed_device != stripped_stored_device: logger.debug( "upload signatures: key does not match %s vs %s", signed_device, stored_device, ) raise SynapseError(400, "Key does not match") try: verify_signed_json(signed_device, user_id, verify_key) except SignatureVerifyException: logger.debug("invalid signature on key") raise SynapseError(400, "Invalid signature", Codes.INVALID_SIGNATURE) def _exception_to_failure(e: Exception) -> JsonDict: if isinstance(e, SynapseError): return {"status": e.code, "errcode": e.errcode, "message": str(e)} if isinstance(e, CodeMessageException): return {"status": e.code, "message": str(e)} if isinstance(e, NotRetryingDestination): return {"status": 503, "message": "Not ready for retry"} # include ConnectionRefused and other errors # # Note that some Exceptions (notably twisted's ResponseFailed etc) don't # give a string for e.message, which json then fails to serialize. return {"status": 503, "message": str(e)} def _one_time_keys_match(old_key_json: str, new_key: JsonDict) -> bool: old_key = json_decoder.decode(old_key_json) # if either is a string rather than an object, they must match exactly if not isinstance(old_key, dict) or not isinstance(new_key, dict): return old_key == new_key # otherwise, we strip off the 'signatures' if any, because it's legitimate # for different upload attempts to have different signatures. old_key.pop("signatures", None) new_key_copy = dict(new_key) new_key_copy.pop("signatures", None) return old_key == new_key_copy @attr.s(slots=True, auto_attribs=True) class SignatureListItem: """An item in the signature list as used by upload_signatures_for_device_keys.""" signing_key_id: str target_user_id: str target_device_id: str signature: JsonDict class SigningKeyEduUpdater: """Handles incoming signing key updates from federation and updates the DB""" def __init__(self, hs: "HomeServer", e2e_keys_handler: E2eKeysHandler): self.store = hs.get_datastore() self.federation = hs.get_federation_client() self.clock = hs.get_clock() self.e2e_keys_handler = e2e_keys_handler self._remote_edu_linearizer = Linearizer(name="remote_signing_key") # user_id -> list of updates waiting to be handled. self._pending_updates: Dict[str, List[Tuple[JsonDict, JsonDict]]] = {} async def incoming_signing_key_update( self, origin: str, edu_content: JsonDict ) -> None: """Called on incoming signing key update from federation. Responsible for parsing the EDU and adding to pending updates list. Args: origin: the server that sent the EDU edu_content: the contents of the EDU """ user_id = edu_content.pop("user_id") master_key = edu_content.pop("master_key", None) self_signing_key = edu_content.pop("self_signing_key", None) if get_domain_from_id(user_id) != origin: logger.warning("Got signing key update edu for %r from %r", user_id, origin) return room_ids = await self.store.get_rooms_for_user(user_id) if not room_ids: # We don't share any rooms with this user. Ignore update, as we # probably won't get any further updates. return self._pending_updates.setdefault(user_id, []).append( (master_key, self_signing_key) ) await self._handle_signing_key_updates(user_id) async def _handle_signing_key_updates(self, user_id: str) -> None: """Actually handle pending updates. Args: user_id: the user whose updates we are processing """ device_handler = self.e2e_keys_handler.device_handler device_list_updater = device_handler.device_list_updater with (await self._remote_edu_linearizer.queue(user_id)): pending_updates = self._pending_updates.pop(user_id, []) if not pending_updates: # This can happen since we batch updates return device_ids: List[str] = [] logger.info("pending updates: %r", pending_updates) for master_key, self_signing_key in pending_updates: new_device_ids = ( await device_list_updater.process_cross_signing_key_update( user_id, master_key, self_signing_key, ) ) device_ids = device_ids + new_device_ids await device_handler.notify_device_update(user_id, device_ids) synapse-1.53.0/synapse/handlers/e2e_room_keys.py000066400000000000000000000412451420514467300216740ustar00rootroot00000000000000# Copyright 2017, 2018 New Vector Ltd # Copyright 2019 Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict, Optional from typing_extensions import Literal from synapse.api.errors import ( Codes, NotFoundError, RoomKeysVersionError, StoreError, SynapseError, ) from synapse.logging.opentracing import log_kv, trace from synapse.storage.databases.main.e2e_room_keys import RoomKey from synapse.types import JsonDict from synapse.util.async_helpers import Linearizer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class E2eRoomKeysHandler: """ Implements an optional realtime backup mechanism for encrypted E2E megolm room keys. This gives a way for users to store and recover their megolm keys if they lose all their clients. It should also extend easily to future room key mechanisms. The actual payload of the encrypted keys is completely opaque to the handler. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() # Used to lock whenever a client is uploading key data. This prevents collisions # between clients trying to upload the details of a new session, given all # clients belonging to a user will receive and try to upload a new session at # roughly the same time. Also used to lock out uploads when the key is being # changed. self._upload_linearizer = Linearizer("upload_room_keys_lock") @trace async def get_room_keys( self, user_id: str, version: str, room_id: Optional[str] = None, session_id: Optional[str] = None, ) -> Dict[ Literal["rooms"], Dict[str, Dict[Literal["sessions"], Dict[str, RoomKey]]] ]: """Bulk get the E2E room keys for a given backup, optionally filtered to a given room, or a given session. See EndToEndRoomKeyStore.get_e2e_room_keys for full details. Args: user_id: the user whose keys we're getting version: the version ID of the backup we're getting keys from room_id: room ID to get keys for, for None to get keys for all rooms session_id: session ID to get keys for, for None to get keys for all sessions Raises: NotFoundError: if the backup version does not exist Returns: A dict giving the session_data and message metadata for these room keys. `{"rooms": {room_id: {"sessions": {session_id: room_key}}}}` """ # we deliberately take the lock to get keys so that changing the version # works atomically with (await self._upload_linearizer.queue(user_id)): # make sure the backup version exists try: await self.store.get_e2e_room_keys_version_info(user_id, version) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise results = await self.store.get_e2e_room_keys( user_id, version, room_id, session_id ) log_kv(results) return results @trace async def delete_room_keys( self, user_id: str, version: str, room_id: Optional[str] = None, session_id: Optional[str] = None, ) -> JsonDict: """Bulk delete the E2E room keys for a given backup, optionally filtered to a given room or a given session. See EndToEndRoomKeyStore.delete_e2e_room_keys for full details. Args: user_id: the user whose backup we're deleting version: the version ID of the backup we're deleting room_id: room ID to delete keys for, for None to delete keys for all rooms session_id: session ID to delete keys for, for None to delete keys for all sessions Raises: NotFoundError: if the backup version does not exist Returns: A dict containing the count and etag for the backup version """ # lock for consistency with uploading with (await self._upload_linearizer.queue(user_id)): # make sure the backup version exists try: version_info = await self.store.get_e2e_room_keys_version_info( user_id, version ) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise await self.store.delete_e2e_room_keys(user_id, version, room_id, session_id) version_etag = version_info["etag"] + 1 await self.store.update_e2e_room_keys_version( user_id, version, None, version_etag ) count = await self.store.count_e2e_room_keys(user_id, version) return {"etag": str(version_etag), "count": count} @trace async def upload_room_keys( self, user_id: str, version: str, room_keys: JsonDict ) -> JsonDict: """Bulk upload a list of room keys into a given backup version, asserting that the given version is the current backup version. room_keys are merged into the current backup as described in RoomKeysServlet.on_PUT(). Args: user_id: the user whose backup we're setting version: the version ID of the backup we're updating room_keys: a nested dict describing the room_keys we're setting: { "rooms": { "!abc:matrix.org": { "sessions": { "c0ff33": { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } } } } } Returns: A dict containing the count and etag for the backup version Raises: NotFoundError: if there are no versions defined RoomKeysVersionError: if the uploaded version is not the current version """ # TODO: Validate the JSON to make sure it has the right keys. # XXX: perhaps we should use a finer grained lock here? with (await self._upload_linearizer.queue(user_id)): # Check that the version we're trying to upload is the current version try: version_info = await self.store.get_e2e_room_keys_version_info(user_id) except StoreError as e: if e.code == 404: raise NotFoundError("Version '%s' not found" % (version,)) else: raise if version_info["version"] != version: # Check that the version we're trying to upload actually exists try: version_info = await self.store.get_e2e_room_keys_version_info( user_id, version ) # if we get this far, the version must exist raise RoomKeysVersionError(current_version=version_info["version"]) except StoreError as e: if e.code == 404: raise NotFoundError("Version '%s' not found" % (version,)) else: raise # Fetch any existing room keys for the sessions that have been # submitted. Then compare them with the submitted keys. If the # key is new, insert it; if the key should be updated, then update # it; otherwise, drop it. existing_keys = await self.store.get_e2e_room_keys_multi( user_id, version, room_keys["rooms"] ) to_insert = [] # batch the inserts together changed = False # if anything has changed, we need to update the etag for room_id, room in room_keys["rooms"].items(): for session_id, room_key in room["sessions"].items(): if not isinstance(room_key["is_verified"], bool): msg = ( "is_verified must be a boolean in keys for session %s in" "room %s" % (session_id, room_id) ) raise SynapseError(400, msg, Codes.INVALID_PARAM) log_kv( { "message": "Trying to upload room key", "room_id": room_id, "session_id": session_id, "user_id": user_id, } ) current_room_key = existing_keys.get(room_id, {}).get(session_id) if current_room_key: if self._should_replace_room_key(current_room_key, room_key): log_kv({"message": "Replacing room key."}) # updates are done one at a time in the DB, so send # updates right away rather than batching them up, # like we do with the inserts await self.store.update_e2e_room_key( user_id, version, room_id, session_id, room_key ) changed = True else: log_kv({"message": "Not replacing room_key."}) else: log_kv( { "message": "Room key not found.", "room_id": room_id, "user_id": user_id, } ) log_kv({"message": "Replacing room key."}) to_insert.append((room_id, session_id, room_key)) changed = True if len(to_insert): await self.store.add_e2e_room_keys(user_id, version, to_insert) version_etag = version_info["etag"] if changed: version_etag = version_etag + 1 await self.store.update_e2e_room_keys_version( user_id, version, None, version_etag ) count = await self.store.count_e2e_room_keys(user_id, version) return {"etag": str(version_etag), "count": count} @staticmethod def _should_replace_room_key( current_room_key: Optional[RoomKey], room_key: RoomKey ) -> bool: """ Determine whether to replace a given current_room_key (if any) with a newly uploaded room_key backup Args: current_room_key: Optional, the current room_key dict if any room_key : The new room_key dict which may or may not be fit to replace the current_room_key Returns: True if current_room_key should be replaced by room_key in the backup """ if current_room_key: # spelt out with if/elifs rather than nested boolean expressions # purely for legibility. if room_key["is_verified"] and not current_room_key["is_verified"]: return True elif ( room_key["first_message_index"] < current_room_key["first_message_index"] ): return True elif room_key["forwarded_count"] < current_room_key["forwarded_count"]: return True else: return False return True @trace async def create_version(self, user_id: str, version_info: JsonDict) -> str: """Create a new backup version. This automatically becomes the new backup version for the user's keys; previous backups will no longer be writeable to. Args: user_id: the user whose backup version we're creating version_info: metadata about the new version being created { "algorithm": "m.megolm_backup.v1", "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" } Returns: The new version number. """ # TODO: Validate the JSON to make sure it has the right keys. # lock everyone out until we've switched version with (await self._upload_linearizer.queue(user_id)): new_version = await self.store.create_e2e_room_keys_version( user_id, version_info ) return new_version async def get_version_info( self, user_id: str, version: Optional[str] = None ) -> JsonDict: """Get the info about a given version of the user's backup Args: user_id: the user whose current backup version we're querying version: Optional; if None gives the most recent version otherwise a historical one. Raises: NotFoundError: if the requested backup version doesn't exist Returns: A info dict that gives the info about the new version. { "version": "1234", "algorithm": "m.megolm_backup.v1", "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" } """ with (await self._upload_linearizer.queue(user_id)): try: res = await self.store.get_e2e_room_keys_version_info(user_id, version) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise res["count"] = await self.store.count_e2e_room_keys(user_id, res["version"]) res["etag"] = str(res["etag"]) return res @trace async def delete_version(self, user_id: str, version: Optional[str] = None) -> None: """Deletes a given version of the user's e2e_room_keys backup Args: user_id(str): the user whose current backup version we're deleting version(str): the version id of the backup being deleted Raises: NotFoundError: if this backup version doesn't exist """ with (await self._upload_linearizer.queue(user_id)): try: await self.store.delete_e2e_room_keys_version(user_id, version) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise @trace async def update_version( self, user_id: str, version: str, version_info: JsonDict ) -> JsonDict: """Update the info about a given version of the user's backup Args: user_id: the user whose current backup version we're updating version: the backup version we're updating version_info: the new information about the backup Raises: NotFoundError: if the requested backup version doesn't exist Returns: An empty dict. """ if "version" not in version_info: version_info["version"] = version elif version_info["version"] != version: raise SynapseError( 400, "Version in body does not match", Codes.INVALID_PARAM ) with (await self._upload_linearizer.queue(user_id)): try: old_info = await self.store.get_e2e_room_keys_version_info( user_id, version ) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise if old_info["algorithm"] != version_info["algorithm"]: raise SynapseError(400, "Algorithm does not match", Codes.INVALID_PARAM) await self.store.update_e2e_room_keys_version( user_id, version, version_info ) return {} synapse-1.53.0/synapse/handlers/event_auth.py000066400000000000000000000270441420514467300212750ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Collection, List, Optional, Union from synapse import event_auth from synapse.api.constants import ( EventTypes, JoinRules, Membership, RestrictedJoinRuleTypes, ) from synapse.api.errors import AuthError, Codes, SynapseError from synapse.api.room_versions import RoomVersion from synapse.event_auth import check_auth_rules_for_event from synapse.events import EventBase from synapse.events.builder import EventBuilder from synapse.events.snapshot import EventContext from synapse.types import StateMap, get_domain_from_id from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EventAuthHandler: """ This class contains methods for authenticating events added to room graphs. """ def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self._store = hs.get_datastore() self._server_name = hs.hostname async def check_auth_rules_from_context( self, room_version_obj: RoomVersion, event: EventBase, context: EventContext, ) -> None: """Check an event passes the auth rules at its own auth events""" auth_event_ids = event.auth_event_ids() auth_events_by_id = await self._store.get_events(auth_event_ids) check_auth_rules_for_event(room_version_obj, event, auth_events_by_id.values()) def compute_auth_events( self, event: Union[EventBase, EventBuilder], current_state_ids: StateMap[str], for_verification: bool = False, ) -> List[str]: """Given an event and current state return the list of event IDs used to auth an event. If `for_verification` is False then only return auth events that should be added to the event's `auth_events`. Returns: List of event IDs. """ if event.type == EventTypes.Create: return [] # Currently we ignore the `for_verification` flag even though there are # some situations where we can drop particular auth events when adding # to the event's `auth_events` (e.g. joins pointing to previous joins # when room is publicly joinable). Dropping event IDs has the # advantage that the auth chain for the room grows slower, but we use # the auth chain in state resolution v2 to order events, which means # care must be taken if dropping events to ensure that it doesn't # introduce undesirable "state reset" behaviour. # # All of which sounds a bit tricky so we don't bother for now. auth_ids = [] for etype, state_key in event_auth.auth_types_for_event( event.room_version, event ): auth_ev_id = current_state_ids.get((etype, state_key)) if auth_ev_id: auth_ids.append(auth_ev_id) return auth_ids async def get_user_which_could_invite( self, room_id: str, current_state_ids: StateMap[str] ) -> str: """ Searches the room state for a local user who has the power level necessary to invite other users. Args: room_id: The room ID under search. current_state_ids: The current state of the room. Returns: The MXID of the user which could issue an invite. Raises: SynapseError if no appropriate user is found. """ power_level_event_id = current_state_ids.get((EventTypes.PowerLevels, "")) invite_level = 0 users_default_level = 0 if power_level_event_id: power_level_event = await self._store.get_event(power_level_event_id) invite_level = power_level_event.content.get("invite", invite_level) users_default_level = power_level_event.content.get( "users_default", users_default_level ) users = power_level_event.content.get("users", {}) else: users = {} # Find the user with the highest power level. users_in_room = await self._store.get_users_in_room(room_id) # Only interested in local users. local_users_in_room = [ u for u in users_in_room if get_domain_from_id(u) == self._server_name ] chosen_user = max( local_users_in_room, key=lambda user: users.get(user, users_default_level), default=None, ) # Return the chosen if they can issue invites. user_power_level = users.get(chosen_user, users_default_level) if chosen_user and user_power_level >= invite_level: logger.debug( "Found a user who can issue invites %s with power level %d >= invite level %d", chosen_user, user_power_level, invite_level, ) return chosen_user # No user was found. raise SynapseError( 400, "Unable to find a user which could issue an invite", Codes.UNABLE_TO_GRANT_JOIN, ) async def check_host_in_room(self, room_id: str, host: str) -> bool: with Measure(self._clock, "check_host_in_room"): return await self._store.is_host_joined(room_id, host) async def check_restricted_join_rules( self, state_ids: StateMap[str], room_version: RoomVersion, user_id: str, prev_member_event: Optional[EventBase], ) -> None: """ Check whether a user can join a room without an invite due to restricted join rules. When joining a room with restricted joined rules (as defined in MSC3083), the membership of rooms must be checked during a room join. Args: state_ids: The state of the room as it currently is. room_version: The room version of the room being joined. user_id: The user joining the room. prev_member_event: The current membership event for this user. Raises: AuthError if the user cannot join the room. """ # If the member is invited or currently joined, then nothing to do. if prev_member_event and ( prev_member_event.membership in (Membership.JOIN, Membership.INVITE) ): return # This is not a room with a restricted join rule, so we don't need to do the # restricted room specific checks. # # Note: We'll be applying the standard join rule checks later, which will # catch the cases of e.g. trying to join private rooms without an invite. if not await self.has_restricted_join_rules(state_ids, room_version): return # Get the rooms which allow access to this room and check if the user is # in any of them. allowed_rooms = await self.get_rooms_that_allow_join(state_ids) if not await self.is_user_in_rooms(allowed_rooms, user_id): # If this is a remote request, the user might be in an allowed room # that we do not know about. if get_domain_from_id(user_id) != self._server_name: for room_id in allowed_rooms: if not await self._store.is_host_joined(room_id, self._server_name): raise SynapseError( 400, f"Unable to check if {user_id} is in allowed rooms.", Codes.UNABLE_AUTHORISE_JOIN, ) raise AuthError( 403, "You do not belong to any of the required rooms/spaces to join this room.", ) async def has_restricted_join_rules( self, state_ids: StateMap[str], room_version: RoomVersion ) -> bool: """ Return if the room has the proper join rules set for access via rooms. Args: state_ids: The state of the room as it currently is. room_version: The room version of the room to query. Returns: True if the proper room version and join rules are set for restricted access. """ # This only applies to room versions which support the new join rule. if not room_version.msc3083_join_rules: return False # If there's no join rule, then it defaults to invite (so this doesn't apply). join_rules_event_id = state_ids.get((EventTypes.JoinRules, ""), None) if not join_rules_event_id: return False # If the join rule is not restricted, this doesn't apply. join_rules_event = await self._store.get_event(join_rules_event_id) return join_rules_event.content.get("join_rule") == JoinRules.RESTRICTED async def get_rooms_that_allow_join( self, state_ids: StateMap[str] ) -> Collection[str]: """ Generate a list of rooms in which membership allows access to a room. Args: state_ids: The current state of the room the user wishes to join Returns: A collection of room IDs. Membership in any of the rooms in the list grants the ability to join the target room. """ # If there's no join rule, then it defaults to invite (so this doesn't apply). join_rules_event_id = state_ids.get((EventTypes.JoinRules, ""), None) if not join_rules_event_id: return () # If the join rule is not restricted, this doesn't apply. join_rules_event = await self._store.get_event(join_rules_event_id) # If allowed is of the wrong form, then only allow invited users. allow_list = join_rules_event.content.get("allow", []) if not isinstance(allow_list, list): return () # Pull out the other room IDs, invalid data gets filtered. result = [] for allow in allow_list: if not isinstance(allow, dict): continue # If the type is unexpected, skip it. if allow.get("type") != RestrictedJoinRuleTypes.ROOM_MEMBERSHIP: continue room_id = allow.get("room_id") if not isinstance(room_id, str): continue result.append(room_id) return result async def is_user_in_rooms(self, room_ids: Collection[str], user_id: str) -> bool: """ Check whether a user is a member of any of the provided rooms. Args: room_ids: The rooms to check for membership. user_id: The user to check. Returns: True if the user is in any of the rooms, false otherwise. """ if not room_ids: return False # Get the list of joined rooms and see if there's an overlap. joined_rooms = await self._store.get_rooms_for_user(user_id) # Check each room and see if the user is in it. for room_id in room_ids: if room_id in joined_rooms: return True # The user was not in any of the rooms. return False synapse-1.53.0/synapse/handlers/events.py000066400000000000000000000140061420514467300204310ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from typing import TYPE_CHECKING, Iterable, List, Optional from synapse.api.constants import EduTypes, EventTypes, Membership from synapse.api.errors import AuthError, SynapseError from synapse.events import EventBase from synapse.handlers.presence import format_user_presence_state from synapse.streams.config import PaginationConfig from synapse.types import JsonDict, UserID from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EventStreamHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.clock = hs.get_clock() self.hs = hs self.notifier = hs.get_notifier() self.state = hs.get_state_handler() self._server_notices_sender = hs.get_server_notices_sender() self._event_serializer = hs.get_event_client_serializer() async def get_stream( self, auth_user_id: str, pagin_config: PaginationConfig, timeout: int = 0, as_client_event: bool = True, affect_presence: bool = True, room_id: Optional[str] = None, is_guest: bool = False, ) -> JsonDict: """Fetches the events stream for a given user.""" if room_id: blocked = await self.store.is_room_blocked(room_id) if blocked: raise SynapseError(403, "This room has been blocked on this server") # send any outstanding server notices to the user. await self._server_notices_sender.on_user_syncing(auth_user_id) auth_user = UserID.from_string(auth_user_id) presence_handler = self.hs.get_presence_handler() context = await presence_handler.user_syncing( auth_user_id, affect_presence=affect_presence ) with context: if timeout: # If they've set a timeout set a minimum limit. timeout = max(timeout, 500) # Add some randomness to this value to try and mitigate against # thundering herds on restart. timeout = random.randint(int(timeout * 0.9), int(timeout * 1.1)) stream_result = await self.notifier.get_events_for( auth_user, pagin_config, timeout, is_guest=is_guest, explicit_room_id=room_id, ) events = stream_result.events time_now = self.clock.time_msec() # When the user joins a new room, or another user joins a currently # joined room, we need to send down presence for those users. to_add: List[JsonDict] = [] for event in events: if not isinstance(event, EventBase): continue if event.type == EventTypes.Member: if event.membership != Membership.JOIN: continue # Send down presence. if event.state_key == auth_user_id: # Send down presence for everyone in the room. users: Iterable[str] = await self.store.get_users_in_room( event.room_id ) else: users = [event.state_key] states = await presence_handler.get_states(users) to_add.extend( { "type": EduTypes.Presence, "content": format_user_presence_state(state, time_now), } for state in states ) events.extend(to_add) chunks = self._event_serializer.serialize_events( events, time_now, as_client_event=as_client_event, ) chunk = { "chunk": chunks, "start": await stream_result.start_token.to_string(self.store), "end": await stream_result.end_token.to_string(self.store), } return chunk class EventHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.storage = hs.get_storage() async def get_event( self, user: UserID, room_id: Optional[str], event_id: str ) -> Optional[EventBase]: """Retrieve a single specified event. Args: user: The user requesting the event room_id: The expected room id. We'll return None if the event's room does not match. event_id: The event ID to obtain. Returns: An event, or None if there is no event matching this ID. Raises: SynapseError if there was a problem retrieving this event, or AuthError if the user does not have the rights to inspect this event. """ event = await self.store.get_event(event_id, check_room_id=room_id) if not event: return None users = await self.store.get_users_in_room(event.room_id) is_peeking = user.to_string() not in users filtered = await filter_events_for_client( self.storage, user.to_string(), [event], is_peeking=is_peeking ) if not filtered: raise AuthError(403, "You don't have permission to access that event.") return event synapse-1.53.0/synapse/handlers/federation.py000066400000000000000000001562431420514467300212570ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains handlers for federation events.""" import logging from http import HTTPStatus from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Tuple, Union from signedjson.key import decode_verify_key_bytes from signedjson.sign import verify_signed_json from unpaddedbase64 import decode_base64 from twisted.internet import defer from synapse import event_auth from synapse.api.constants import EventContentFields, EventTypes, Membership from synapse.api.errors import ( AuthError, CodeMessageException, Codes, FederationDeniedError, HttpResponseException, NotFoundError, RequestSendFailed, SynapseError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.crypto.event_signing import compute_event_signature from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.events.validator import EventValidator from synapse.federation.federation_client import InvalidResponseError from synapse.http.servlet import assert_params_in_dict from synapse.logging.context import ( make_deferred_yieldable, nested_logging_context, preserve_fn, run_in_background, ) from synapse.replication.http.federation import ( ReplicationCleanRoomRestServlet, ReplicationStoreRoomOnOutlierMembershipRestServlet, ) from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.types import JsonDict, StateMap, get_domain_from_id from synapse.util.async_helpers import Linearizer from synapse.util.retryutils import NotRetryingDestination from synapse.visibility import filter_events_for_server if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) def get_domains_from_state(state: StateMap[EventBase]) -> List[Tuple[str, int]]: """Get joined domains from state Args: state: State map from type/state key to event. Returns: Returns a list of servers with the lowest depth of their joins. Sorted by lowest depth first. """ joined_users = [ (state_key, int(event.depth)) for (e_type, state_key), event in state.items() if e_type == EventTypes.Member and event.membership == Membership.JOIN ] joined_domains: Dict[str, int] = {} for u, d in joined_users: try: dom = get_domain_from_id(u) old_d = joined_domains.get(dom) if old_d: joined_domains[dom] = min(d, old_d) else: joined_domains[dom] = d except Exception: pass return sorted(joined_domains.items(), key=lambda d: d[1]) class FederationHandler: """Handles general incoming federation requests Incoming events are *not* handled here, for which see FederationEventHandler. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self.storage = hs.get_storage() self.state_store = self.storage.state self.federation_client = hs.get_federation_client() self.state_handler = hs.get_state_handler() self.server_name = hs.hostname self.keyring = hs.get_keyring() self.is_mine_id = hs.is_mine_id self.spam_checker = hs.get_spam_checker() self.event_creation_handler = hs.get_event_creation_handler() self.event_builder_factory = hs.get_event_builder_factory() self._event_auth_handler = hs.get_event_auth_handler() self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self.config = hs.config self.http_client = hs.get_proxied_blacklisted_http_client() self._replication = hs.get_replication_data_handler() self._federation_event_handler = hs.get_federation_event_handler() self._clean_room_for_join_client = ReplicationCleanRoomRestServlet.make_client( hs ) if hs.config.worker.worker_app: self._maybe_store_room_on_outlier_membership = ( ReplicationStoreRoomOnOutlierMembershipRestServlet.make_client(hs) ) else: self._maybe_store_room_on_outlier_membership = ( self.store.maybe_store_room_on_outlier_membership ) self._room_backfill = Linearizer("room_backfill") self.third_party_event_rules = hs.get_third_party_event_rules() async def maybe_backfill( self, room_id: str, current_depth: int, limit: int ) -> bool: """Checks the database to see if we should backfill before paginating, and if so do. Args: room_id current_depth: The depth from which we're paginating from. This is used to decide if we should backfill and what extremities to use. limit: The number of events that the pagination request will return. This is used as part of the heuristic to decide if we should back paginate. """ with (await self._room_backfill.queue(room_id)): return await self._maybe_backfill_inner(room_id, current_depth, limit) async def _maybe_backfill_inner( self, room_id: str, current_depth: int, limit: int ) -> bool: oldest_events_with_depth = ( await self.store.get_oldest_event_ids_with_depth_in_room(room_id) ) insertion_events_to_be_backfilled: Dict[str, int] = {} if self.hs.config.experimental.msc2716_enabled: insertion_events_to_be_backfilled = ( await self.store.get_insertion_event_backward_extremities_in_room( room_id ) ) logger.debug( "_maybe_backfill_inner: extremities oldest_events_with_depth=%s insertion_events_to_be_backfilled=%s", oldest_events_with_depth, insertion_events_to_be_backfilled, ) if not oldest_events_with_depth and not insertion_events_to_be_backfilled: logger.debug("Not backfilling as no extremeties found.") return False # We only want to paginate if we can actually see the events we'll get, # as otherwise we'll just spend a lot of resources to get redacted # events. # # We do this by filtering all the backwards extremities and seeing if # any remain. Given we don't have the extremity events themselves, we # need to actually check the events that reference them. # # *Note*: the spec wants us to keep backfilling until we reach the start # of the room in case we are allowed to see some of the history. However # in practice that causes more issues than its worth, as a) its # relatively rare for there to be any visible history and b) even when # there is its often sufficiently long ago that clients would stop # attempting to paginate before backfill reached the visible history. # # TODO: If we do do a backfill then we should filter the backwards # extremities to only include those that point to visible portions of # history. # # TODO: Correctly handle the case where we are allowed to see the # forward event but not the backward extremity, e.g. in the case of # initial join of the server where we are allowed to see the join # event but not anything before it. This would require looking at the # state *before* the event, ignoring the special casing certain event # types have. forward_event_ids = await self.store.get_successor_events( list(oldest_events_with_depth) ) extremities_events = await self.store.get_events( forward_event_ids, redact_behaviour=EventRedactBehaviour.AS_IS, get_prev_content=False, ) # We set `check_history_visibility_only` as we might otherwise get false # positives from users having been erased. filtered_extremities = await filter_events_for_server( self.storage, self.server_name, list(extremities_events.values()), redact=False, check_history_visibility_only=True, ) logger.debug( "_maybe_backfill_inner: filtered_extremities %s", filtered_extremities ) if not filtered_extremities and not insertion_events_to_be_backfilled: return False extremities = { **oldest_events_with_depth, # TODO: insertion_events_to_be_backfilled is currently skipping the filtered_extremities checks **insertion_events_to_be_backfilled, } # Check if we reached a point where we should start backfilling. sorted_extremeties_tuple = sorted(extremities.items(), key=lambda e: -int(e[1])) max_depth = sorted_extremeties_tuple[0][1] # If we're approaching an extremity we trigger a backfill, otherwise we # no-op. # # We chose twice the limit here as then clients paginating backwards # will send pagination requests that trigger backfill at least twice # using the most recent extremity before it gets removed (see below). We # chose more than one times the limit in case of failure, but choosing a # much larger factor will result in triggering a backfill request much # earlier than necessary. if current_depth - 2 * limit > max_depth: logger.debug( "Not backfilling as we don't need to. %d < %d - 2 * %d", max_depth, current_depth, limit, ) return False # We ignore extremities that have a greater depth than our current depth # as: # 1. we don't really care about getting events that have happened # after our current position; and # 2. we have likely previously tried and failed to backfill from that # extremity, so to avoid getting "stuck" requesting the same # backfill repeatedly we drop those extremities. filtered_sorted_extremeties_tuple = [ t for t in sorted_extremeties_tuple if int(t[1]) <= current_depth ] logger.debug( "room_id: %s, backfill: current_depth: %s, limit: %s, max_depth: %s, extrems (%d): %s filtered_sorted_extremeties_tuple: %s", room_id, current_depth, limit, max_depth, len(sorted_extremeties_tuple), sorted_extremeties_tuple, filtered_sorted_extremeties_tuple, ) # However, we need to check that the filtered extremities are non-empty. # If they are empty then either we can a) bail or b) still attempt to # backfill. We opt to try backfilling anyway just in case we do get # relevant events. if filtered_sorted_extremeties_tuple: sorted_extremeties_tuple = filtered_sorted_extremeties_tuple # We don't want to specify too many extremities as it causes the backfill # request URI to be too long. extremities = dict(sorted_extremeties_tuple[:5]) # Now we need to decide which hosts to hit first. # First we try hosts that are already in the room # TODO: HEURISTIC ALERT. curr_state = await self.state_handler.get_current_state(room_id) curr_domains = get_domains_from_state(curr_state) likely_domains = [ domain for domain, depth in curr_domains if domain != self.server_name ] async def try_backfill(domains: List[str]) -> bool: # TODO: Should we try multiple of these at a time? for dom in domains: try: await self._federation_event_handler.backfill( dom, room_id, limit=100, extremities=extremities ) # If this succeeded then we probably already have the # appropriate stuff. # TODO: We can probably do something more intelligent here. return True except (SynapseError, InvalidResponseError) as e: logger.info("Failed to backfill from %s because %s", dom, e) continue except HttpResponseException as e: if 400 <= e.code < 500: raise e.to_synapse_error() logger.info("Failed to backfill from %s because %s", dom, e) continue except CodeMessageException as e: if 400 <= e.code < 500: raise logger.info("Failed to backfill from %s because %s", dom, e) continue except NotRetryingDestination as e: logger.info(str(e)) continue except RequestSendFailed as e: logger.info("Failed to get backfill from %s because %s", dom, e) continue except FederationDeniedError as e: logger.info(e) continue except Exception as e: logger.exception("Failed to backfill from %s because %s", dom, e) continue return False success = await try_backfill(likely_domains) if success: return True # Huh, well *those* domains didn't work out. Lets try some domains # from the time. tried_domains = set(likely_domains) tried_domains.add(self.server_name) event_ids = list(extremities.keys()) logger.debug("calling resolve_state_groups in _maybe_backfill") resolve = preserve_fn(self.state_handler.resolve_state_groups_for_events) states_list = await make_deferred_yieldable( defer.gatherResults( [resolve(room_id, [e]) for e in event_ids], consumeErrors=True ) ) # A map from event_id to state map of event_ids. state_ids: Dict[str, StateMap[str]] = dict( zip(event_ids, [s.state for s in states_list]) ) state_map = await self.store.get_events( [e_id for ids in state_ids.values() for e_id in ids.values()], get_prev_content=False, ) # A map from event_id to state map of events. state_events: Dict[str, StateMap[EventBase]] = { key: { k: state_map[e_id] for k, e_id in state_dict.items() if e_id in state_map } for key, state_dict in state_ids.items() } for e_id in event_ids: likely_extremeties_domains = get_domains_from_state(state_events[e_id]) success = await try_backfill( [ dom for dom, _ in likely_extremeties_domains if dom not in tried_domains ] ) if success: return True tried_domains.update(dom for dom, _ in likely_extremeties_domains) return False async def send_invite(self, target_host: str, event: EventBase) -> EventBase: """Sends the invite to the remote server for signing. Invites must be signed by the invitee's server before distribution. """ try: pdu = await self.federation_client.send_invite( destination=target_host, room_id=event.room_id, event_id=event.event_id, pdu=event, ) except RequestSendFailed: raise SynapseError(502, f"Can't connect to server {target_host}") return pdu async def on_event_auth(self, event_id: str) -> List[EventBase]: event = await self.store.get_event(event_id) auth = await self.store.get_auth_chain( event.room_id, list(event.auth_event_ids()), include_given=True ) return list(auth) async def do_invite_join( self, target_hosts: Iterable[str], room_id: str, joinee: str, content: JsonDict ) -> Tuple[str, int]: """Attempts to join the `joinee` to the room `room_id` via the servers contained in `target_hosts`. This first triggers a /make_join/ request that returns a partial event that we can fill out and sign. This is then sent to the remote server via /send_join/ which responds with the state at that event and the auth_chains. We suspend processing of any received events from this room until we have finished processing the join. Args: target_hosts: List of servers to attempt to join the room with. room_id: The ID of the room to join. joinee: The User ID of the joining user. content: The event content to use for the join event. """ # TODO: We should be able to call this on workers, but the upgrading of # room stuff after join currently doesn't work on workers. assert self.config.worker.worker_app is None logger.debug("Joining %s to %s", joinee, room_id) origin, event, room_version_obj = await self._make_and_verify_event( target_hosts, room_id, joinee, "join", content, params={"ver": KNOWN_ROOM_VERSIONS}, ) # This shouldn't happen, because the RoomMemberHandler has a # linearizer lock which only allows one operation per user per room # at a time - so this is just paranoia. assert room_id not in self._federation_event_handler.room_queues self._federation_event_handler.room_queues[room_id] = [] await self._clean_room_for_join(room_id) try: # Try the host we successfully got a response to /make_join/ # request first. host_list = list(target_hosts) try: host_list.remove(origin) host_list.insert(0, origin) except ValueError: pass ret = await self.federation_client.send_join( host_list, event, room_version_obj ) event = ret.event origin = ret.origin state = ret.state auth_chain = ret.auth_chain auth_chain.sort(key=lambda e: e.depth) logger.debug("do_invite_join auth_chain: %s", auth_chain) logger.debug("do_invite_join state: %s", state) logger.debug("do_invite_join event: %s", event) # if this is the first time we've joined this room, it's time to add # a row to `rooms` with the correct room version. If there's already a # row there, we should override it, since it may have been populated # based on an invite request which lied about the room version. # # federation_client.send_join has already checked that the room # version in the received create event is the same as room_version_obj, # so we can rely on it now. # await self.store.upsert_room_on_join( room_id=room_id, room_version=room_version_obj, auth_events=auth_chain, ) max_stream_id = await self._federation_event_handler.process_remote_join( origin, room_id, auth_chain, state, event, room_version_obj ) # We wait here until this instance has seen the events come down # replication (if we're using replication) as the below uses caches. await self._replication.wait_for_stream_position( self.config.worker.events_shard_config.get_instance(room_id), "events", max_stream_id, ) # Check whether this room is the result of an upgrade of a room we already know # about. If so, migrate over user information predecessor = await self.store.get_room_predecessor(room_id) if not predecessor or not isinstance(predecessor.get("room_id"), str): return event.event_id, max_stream_id old_room_id = predecessor["room_id"] logger.debug( "Found predecessor for %s during remote join: %s", room_id, old_room_id ) # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() await member_handler.transfer_room_state_on_room_upgrade( old_room_id, room_id ) logger.debug("Finished joining %s to %s", joinee, room_id) return event.event_id, max_stream_id finally: room_queue = self._federation_event_handler.room_queues[room_id] del self._federation_event_handler.room_queues[room_id] # we don't need to wait for the queued events to be processed - # it's just a best-effort thing at this point. We do want to do # them roughly in order, though, otherwise we'll end up making # lots of requests for missing prev_events which we do actually # have. Hence we fire off the background task, but don't wait for it. run_in_background(self._handle_queued_pdus, room_queue) async def do_knock( self, target_hosts: List[str], room_id: str, knockee: str, content: JsonDict, ) -> Tuple[str, int]: """Sends the knock to the remote server. This first triggers a make_knock request that returns a partial event that we can fill out and sign. This is then sent to the remote server via send_knock. Knock events must be signed by the knockee's server before distributing. Args: target_hosts: A list of hosts that we want to try knocking through. room_id: The ID of the room to knock on. knockee: The ID of the user who is knocking. content: The content of the knock event. Returns: A tuple of (event ID, stream ID). Raises: SynapseError: If the chosen remote server returns a 3xx/4xx code. RuntimeError: If no servers were reachable. """ logger.debug("Knocking on room %s on behalf of user %s", room_id, knockee) # Inform the remote server of the room versions we support supported_room_versions = list(KNOWN_ROOM_VERSIONS.keys()) # Ask the remote server to create a valid knock event for us. Once received, # we sign the event params: Dict[str, Iterable[str]] = {"ver": supported_room_versions} origin, event, event_format_version = await self._make_and_verify_event( target_hosts, room_id, knockee, Membership.KNOCK, content, params=params ) # Mark the knock as an outlier as we don't yet have the state at this point in # the DAG. event.internal_metadata.outlier = True # ... but tell /sync to send it to clients anyway. event.internal_metadata.out_of_band_membership = True # Record the room ID and its version so that we have a record of the room await self._maybe_store_room_on_outlier_membership( room_id=event.room_id, room_version=event_format_version ) # Initially try the host that we successfully called /make_knock on try: target_hosts.remove(origin) target_hosts.insert(0, origin) except ValueError: pass # Send the signed event back to the room, and potentially receive some # further information about the room in the form of partial state events stripped_room_state = await self.federation_client.send_knock( target_hosts, event ) # Store any stripped room state events in the "unsigned" key of the event. # This is a bit of a hack and is cribbing off of invites. Basically we # store the room state here and retrieve it again when this event appears # in the invitee's sync stream. It is stripped out for all other local users. event.unsigned["knock_room_state"] = stripped_room_state["knock_state_events"] context = EventContext.for_outlier() stream_id = await self._federation_event_handler.persist_events_and_notify( event.room_id, [(event, context)] ) return event.event_id, stream_id async def _handle_queued_pdus( self, room_queue: List[Tuple[EventBase, str]] ) -> None: """Process PDUs which got queued up while we were busy send_joining. Args: room_queue: list of PDUs to be processed and the servers that sent them """ for p, origin in room_queue: try: logger.info( "Processing queued PDU %s which was received while we were joining", p, ) with nested_logging_context(p.event_id): await self._federation_event_handler.on_receive_pdu(origin, p) except Exception as e: logger.warning( "Error handling queued PDU %s from %s: %s", p.event_id, origin, e ) async def on_make_join_request( self, origin: str, room_id: str, user_id: str ) -> EventBase: """We've received a /make_join/ request, so we create a partial join event for the room and return that. We do *not* persist or process it until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: Room to create join event in user_id: The user to create the join for """ if get_domain_from_id(user_id) != origin: logger.info( "Got /make_join request for user %r from different origin %s, ignoring", user_id, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) # checking the room version will check that we've actually heard of the room # (and return a 404 otherwise) room_version = await self.store.get_room_version(room_id) # now check that we are *still* in the room is_in_room = await self._event_auth_handler.check_host_in_room( room_id, self.server_name ) if not is_in_room: logger.info( "Got /make_join request for room %s we are no longer in", room_id, ) raise NotFoundError("Not an active room on this server") event_content = {"membership": Membership.JOIN} # If the current room is using restricted join rules, additional information # may need to be included in the event content in order to efficiently # validate the event. # # Note that this requires the /send_join request to come back to the # same server. if room_version.msc3083_join_rules: state_ids = await self.store.get_current_state_ids(room_id) if await self._event_auth_handler.has_restricted_join_rules( state_ids, room_version ): prev_member_event_id = state_ids.get((EventTypes.Member, user_id), None) # If the user is invited or joined to the room already, then # no additional info is needed. include_auth_user_id = True if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) include_auth_user_id = prev_member_event.membership not in ( Membership.JOIN, Membership.INVITE, ) if include_auth_user_id: event_content[ EventContentFields.AUTHORISING_USER ] = await self._event_auth_handler.get_user_which_could_invite( room_id, state_ids, ) builder = self.event_builder_factory.for_room_version( room_version, { "type": EventTypes.Member, "content": event_content, "room_id": room_id, "sender": user_id, "state_key": user_id, }, ) try: event, context = await self.event_creation_handler.create_new_client_event( builder=builder ) except SynapseError as e: logger.warning("Failed to create join to %s because %s", room_id, e) raise # Ensure the user can even join the room. await self._federation_event_handler.check_join_restrictions(context, event) # The remote hasn't signed it yet, obviously. We'll do the full checks # when we get the event back in `on_send_join_request` await self._event_auth_handler.check_auth_rules_from_context( room_version, event, context ) return event async def on_invite_request( self, origin: str, event: EventBase, room_version: RoomVersion ) -> EventBase: """We've got an invite event. Process and persist it. Sign it. Respond with the now signed event. """ if event.state_key is None: raise SynapseError(400, "The invite event did not have a state key") is_blocked = await self.store.is_room_blocked(event.room_id) if is_blocked: raise SynapseError(403, "This room has been blocked on this server") if self.hs.config.server.block_non_admin_invites: raise SynapseError(403, "This server does not accept room invites") if not await self.spam_checker.user_may_invite( event.sender, event.state_key, event.room_id ): raise SynapseError( 403, "This user is not permitted to send invites to this server/user" ) membership = event.content.get("membership") if event.type != EventTypes.Member or membership != Membership.INVITE: raise SynapseError(400, "The event was not an m.room.member invite event") sender_domain = get_domain_from_id(event.sender) if sender_domain != origin: raise SynapseError( 400, "The invite event was not from the server sending it" ) if not self.is_mine_id(event.state_key): raise SynapseError(400, "The invite event must be for this server") # block any attempts to invite the server notices mxid if event.state_key == self._server_notices_mxid: raise SynapseError(HTTPStatus.FORBIDDEN, "Cannot invite this user") # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() # We don't rate limit based on room ID, as that should be done by # sending server. await member_handler.ratelimit_invite(None, None, event.state_key) # keep a record of the room version, if we don't yet know it. # (this may get overwritten if we later get a different room version in a # join dance). await self._maybe_store_room_on_outlier_membership( room_id=event.room_id, room_version=room_version ) event.internal_metadata.outlier = True event.internal_metadata.out_of_band_membership = True event.signatures.update( compute_event_signature( room_version, event.get_pdu_json(), self.hs.hostname, self.hs.signing_key, ) ) context = EventContext.for_outlier() await self._federation_event_handler.persist_events_and_notify( event.room_id, [(event, context)] ) return event async def do_remotely_reject_invite( self, target_hosts: Iterable[str], room_id: str, user_id: str, content: JsonDict ) -> Tuple[EventBase, int]: origin, event, room_version = await self._make_and_verify_event( target_hosts, room_id, user_id, "leave", content=content ) # Mark as outlier as we don't have any state for this event; we're not # even in the room. event.internal_metadata.outlier = True event.internal_metadata.out_of_band_membership = True # Try the host that we successfully called /make_leave/ on first for # the /send_leave/ request. host_list = list(target_hosts) try: host_list.remove(origin) host_list.insert(0, origin) except ValueError: pass await self.federation_client.send_leave(host_list, event) context = EventContext.for_outlier() stream_id = await self._federation_event_handler.persist_events_and_notify( event.room_id, [(event, context)] ) return event, stream_id async def _make_and_verify_event( self, target_hosts: Iterable[str], room_id: str, user_id: str, membership: str, content: JsonDict, params: Optional[Dict[str, Union[str, Iterable[str]]]] = None, ) -> Tuple[str, EventBase, RoomVersion]: ( origin, event, room_version, ) = await self.federation_client.make_membership_event( target_hosts, room_id, user_id, membership, content, params=params ) logger.debug("Got response to make_%s: %s", membership, event) # We should assert some things. # FIXME: Do this in a nicer way assert event.type == EventTypes.Member assert event.user_id == user_id assert event.state_key == user_id assert event.room_id == room_id return origin, event, room_version async def on_make_leave_request( self, origin: str, room_id: str, user_id: str ) -> EventBase: """We've received a /make_leave/ request, so we create a partial leave event for the room and return that. We do *not* persist or process it until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: Room to create leave event in user_id: The user to create the leave for """ if get_domain_from_id(user_id) != origin: logger.info( "Got /make_leave request for user %r from different origin %s, ignoring", user_id, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) room_version_obj = await self.store.get_room_version(room_id) builder = self.event_builder_factory.for_room_version( room_version_obj, { "type": EventTypes.Member, "content": {"membership": Membership.LEAVE}, "room_id": room_id, "sender": user_id, "state_key": user_id, }, ) event, context = await self.event_creation_handler.create_new_client_event( builder=builder ) try: # The remote hasn't signed it yet, obviously. We'll do the full checks # when we get the event back in `on_send_leave_request` await self._event_auth_handler.check_auth_rules_from_context( room_version_obj, event, context ) except AuthError as e: logger.warning("Failed to create new leave %r because %s", event, e) raise e return event async def on_make_knock_request( self, origin: str, room_id: str, user_id: str ) -> EventBase: """We've received a make_knock request, so we create a partial knock event for the room and return that. We do *not* persist or process it until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: The room to create the knock event in. user_id: The user to create the knock for. Returns: The partial knock event. """ if get_domain_from_id(user_id) != origin: logger.info( "Get /make_knock request for user %r from different origin %s, ignoring", user_id, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) room_version_obj = await self.store.get_room_version(room_id) builder = self.event_builder_factory.for_room_version( room_version_obj, { "type": EventTypes.Member, "content": {"membership": Membership.KNOCK}, "room_id": room_id, "sender": user_id, "state_key": user_id, }, ) event, context = await self.event_creation_handler.create_new_client_event( builder=builder ) event_allowed, _ = await self.third_party_event_rules.check_event_allowed( event, context ) if not event_allowed: logger.warning("Creation of knock %s forbidden by third-party rules", event) raise SynapseError( 403, "This event is not allowed in this context", Codes.FORBIDDEN ) try: # The remote hasn't signed it yet, obviously. We'll do the full checks # when we get the event back in `on_send_knock_request` await self._event_auth_handler.check_auth_rules_from_context( room_version_obj, event, context ) except AuthError as e: logger.warning("Failed to create new knock %r because %s", event, e) raise e return event async def get_state_for_pdu(self, room_id: str, event_id: str) -> List[EventBase]: """Returns the state at the event. i.e. not including said event.""" event = await self.store.get_event(event_id, check_room_id=room_id) state_groups = await self.state_store.get_state_groups(room_id, [event_id]) if state_groups: _, state = list(state_groups.items()).pop() results = {(e.type, e.state_key): e for e in state} if event.is_state(): # Get previous state if "replaces_state" in event.unsigned: prev_id = event.unsigned["replaces_state"] if prev_id != event.event_id: prev_event = await self.store.get_event(prev_id) results[(event.type, event.state_key)] = prev_event else: del results[(event.type, event.state_key)] res = list(results.values()) return res else: return [] async def get_state_ids_for_pdu(self, room_id: str, event_id: str) -> List[str]: """Returns the state at the event. i.e. not including said event.""" event = await self.store.get_event(event_id, check_room_id=room_id) state_groups = await self.state_store.get_state_groups_ids(room_id, [event_id]) if state_groups: _, state = list(state_groups.items()).pop() results = state if event.is_state(): # Get previous state if "replaces_state" in event.unsigned: prev_id = event.unsigned["replaces_state"] if prev_id != event.event_id: results[(event.type, event.state_key)] = prev_id else: results.pop((event.type, event.state_key), None) return list(results.values()) else: return [] async def on_backfill_request( self, origin: str, room_id: str, pdu_list: List[str], limit: int ) -> List[EventBase]: in_room = await self._event_auth_handler.check_host_in_room(room_id, origin) if not in_room: raise AuthError(403, "Host not in room.") # Synapse asks for 100 events per backfill request. Do not allow more. limit = min(limit, 100) events = await self.store.get_backfill_events(room_id, pdu_list, limit) logger.debug( "on_backfill_request: backfill events=%s", [ "event_id=%s,depth=%d,body=%s,prevs=%s\n" % ( event.event_id, event.depth, event.content.get("body", event.type), event.prev_event_ids(), ) for event in events ], ) events = await filter_events_for_server(self.storage, origin, events) return events async def get_persisted_pdu( self, origin: str, event_id: str ) -> Optional[EventBase]: """Get an event from the database for the given server. Args: origin: hostname of server which is requesting the event; we will check that the server is allowed to see it. event_id: id of the event being requested Returns: None if we know nothing about the event; otherwise the (possibly-redacted) event. Raises: AuthError if the server is not currently in the room """ event = await self.store.get_event( event_id, allow_none=True, allow_rejected=True ) if event: in_room = await self._event_auth_handler.check_host_in_room( event.room_id, origin ) if not in_room: raise AuthError(403, "Host not in room.") events = await filter_events_for_server(self.storage, origin, [event]) event = events[0] return event else: return None async def on_get_missing_events( self, origin: str, room_id: str, earliest_events: List[str], latest_events: List[str], limit: int, ) -> List[EventBase]: in_room = await self._event_auth_handler.check_host_in_room(room_id, origin) if not in_room: raise AuthError(403, "Host not in room.") # Only allow up to 20 events to be retrieved per request. limit = min(limit, 20) missing_events = await self.store.get_missing_events( room_id=room_id, earliest_events=earliest_events, latest_events=latest_events, limit=limit, ) missing_events = await filter_events_for_server( self.storage, origin, missing_events ) return missing_events async def exchange_third_party_invite( self, sender_user_id: str, target_user_id: str, room_id: str, signed: JsonDict ) -> None: third_party_invite = {"signed": signed} event_dict = { "type": EventTypes.Member, "content": { "membership": Membership.INVITE, "third_party_invite": third_party_invite, }, "room_id": room_id, "sender": sender_user_id, "state_key": target_user_id, } if await self._event_auth_handler.check_host_in_room(room_id, self.hs.hostname): room_version_obj = await self.store.get_room_version(room_id) builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) EventValidator().validate_builder(builder) event, context = await self.event_creation_handler.create_new_client_event( builder=builder ) event, context = await self.add_display_name_to_third_party_invite( room_version_obj, event_dict, event, context ) EventValidator().validate_new(event, self.config) # We need to tell the transaction queue to send this out, even # though the sender isn't a local user. event.internal_metadata.send_on_behalf_of = self.hs.hostname try: validate_event_for_room_version(room_version_obj, event) await self._event_auth_handler.check_auth_rules_from_context( room_version_obj, event, context ) except AuthError as e: logger.warning("Denying new third party invite %r because %s", event, e) raise e await self._check_signature(event, context) # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() await member_handler.send_membership_event(None, event, context) else: destinations = {x.split(":", 1)[-1] for x in (sender_user_id, room_id)} try: await self.federation_client.forward_third_party_invite( destinations, room_id, event_dict ) except (RequestSendFailed, HttpResponseException): raise SynapseError(502, "Failed to forward third party invite") async def on_exchange_third_party_invite_request( self, event_dict: JsonDict ) -> None: """Handle an exchange_third_party_invite request from a remote server The remote server will call this when it wants to turn a 3pid invite into a normal m.room.member invite. Args: event_dict: Dictionary containing the event body. """ assert_params_in_dict(event_dict, ["room_id"]) room_version_obj = await self.store.get_room_version(event_dict["room_id"]) # NB: event_dict has a particular specced format we might need to fudge # if we change event formats too much. builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) event, context = await self.event_creation_handler.create_new_client_event( builder=builder ) event, context = await self.add_display_name_to_third_party_invite( room_version_obj, event_dict, event, context ) try: validate_event_for_room_version(room_version_obj, event) await self._event_auth_handler.check_auth_rules_from_context( room_version_obj, event, context ) except AuthError as e: logger.warning("Denying third party invite %r because %s", event, e) raise e await self._check_signature(event, context) # We need to tell the transaction queue to send this out, even # though the sender isn't a local user. event.internal_metadata.send_on_behalf_of = get_domain_from_id(event.sender) # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() await member_handler.send_membership_event(None, event, context) async def add_display_name_to_third_party_invite( self, room_version_obj: RoomVersion, event_dict: JsonDict, event: EventBase, context: EventContext, ) -> Tuple[EventBase, EventContext]: key = ( EventTypes.ThirdPartyInvite, event.content["third_party_invite"]["signed"]["token"], ) original_invite = None prev_state_ids = await context.get_prev_state_ids() original_invite_id = prev_state_ids.get(key) if original_invite_id: original_invite = await self.store.get_event( original_invite_id, allow_none=True ) if original_invite: # If the m.room.third_party_invite event's content is empty, it means the # invite has been revoked. In this case, we don't have to raise an error here # because the auth check will fail on the invite (because it's not able to # fetch public keys from the m.room.third_party_invite event's content, which # is empty). display_name = original_invite.content.get("display_name") event_dict["content"]["third_party_invite"]["display_name"] = display_name else: logger.info( "Could not find invite event for third_party_invite: %r", event_dict ) # We don't discard here as this is not the appropriate place to do # auth checks. If we need the invite and don't have it then the # auth check code will explode appropriately. builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) EventValidator().validate_builder(builder) event, context = await self.event_creation_handler.create_new_client_event( builder=builder ) EventValidator().validate_new(event, self.config) return event, context async def _check_signature(self, event: EventBase, context: EventContext) -> None: """ Checks that the signature in the event is consistent with its invite. Args: event: The m.room.member event to check context: Raises: AuthError: if signature didn't match any keys, or key has been revoked, SynapseError: if a transient error meant a key couldn't be checked for revocation. """ signed = event.content["third_party_invite"]["signed"] token = signed["token"] prev_state_ids = await context.get_prev_state_ids() invite_event_id = prev_state_ids.get((EventTypes.ThirdPartyInvite, token)) invite_event = None if invite_event_id: invite_event = await self.store.get_event(invite_event_id, allow_none=True) if not invite_event: raise AuthError(403, "Could not find invite") logger.debug("Checking auth on event %r", event.content) last_exception: Optional[Exception] = None # for each public key in the 3pid invite event for public_key_object in event_auth.get_public_keys(invite_event): try: # for each sig on the third_party_invite block of the actual invite for server, signature_block in signed["signatures"].items(): for key_name in signature_block.keys(): if not key_name.startswith("ed25519:"): continue logger.debug( "Attempting to verify sig with key %s from %r " "against pubkey %r", key_name, server, public_key_object, ) try: public_key = public_key_object["public_key"] verify_key = decode_verify_key_bytes( key_name, decode_base64(public_key) ) verify_signed_json(signed, server, verify_key) logger.debug( "Successfully verified sig with key %s from %r " "against pubkey %r", key_name, server, public_key_object, ) except Exception: logger.info( "Failed to verify sig with key %s from %r " "against pubkey %r", key_name, server, public_key_object, ) raise try: if "key_validity_url" in public_key_object: await self._check_key_revocation( public_key, public_key_object["key_validity_url"] ) except Exception: logger.info( "Failed to query key_validity_url %s", public_key_object["key_validity_url"], ) raise return except Exception as e: last_exception = e if last_exception is None: # we can only get here if get_public_keys() returned an empty list # TODO: make this better raise RuntimeError("no public key in invite event") raise last_exception async def _check_key_revocation(self, public_key: str, url: str) -> None: """ Checks whether public_key has been revoked. Args: public_key: base-64 encoded public key. url: Key revocation URL. Raises: AuthError: if they key has been revoked. SynapseError: if a transient error meant a key couldn't be checked for revocation. """ try: response = await self.http_client.get_json(url, {"public_key": public_key}) except Exception: raise SynapseError(502, "Third party certificate could not be checked") if "valid" not in response or not response["valid"]: raise AuthError(403, "Third party certificate was invalid") async def _clean_room_for_join(self, room_id: str) -> None: """Called to clean up any data in DB for a given room, ready for the server to join the room. Args: room_id """ if self.config.worker.worker_app: await self._clean_room_for_join_client(room_id) else: await self.store.clean_room_for_join(room_id) async def get_room_complexity( self, remote_room_hosts: List[str], room_id: str ) -> Optional[dict]: """ Fetch the complexity of a remote room over federation. Args: remote_room_hosts (list[str]): The remote servers to ask. room_id (str): The room ID to ask about. Returns: Dict contains the complexity metric versions, while None means we could not fetch the complexity. """ for host in remote_room_hosts: res = await self.federation_client.get_room_complexity(host, room_id) # We got a result, return it. if res: return res # We fell off the bottom, couldn't get the complexity from anyone. Oh # well. return None synapse-1.53.0/synapse/handlers/federation_event.py000066400000000000000000002303321420514467300224500ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging from http import HTTPStatus from typing import ( TYPE_CHECKING, Collection, Container, Dict, Iterable, List, Optional, Sequence, Set, Tuple, ) from prometheus_client import Counter from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, Membership, RejectedReason, RoomEncryptionAlgorithms, ) from synapse.api.errors import ( AuthError, Codes, FederationError, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion, RoomVersions from synapse.event_auth import ( auth_types_for_event, check_auth_rules_for_event, validate_event_for_room_version, ) from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.federation.federation_client import InvalidResponseError from synapse.logging.context import nested_logging_context, run_in_background from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.http.devices import ReplicationUserDevicesResyncRestServlet from synapse.replication.http.federation import ( ReplicationFederationSendEventsRestServlet, ) from synapse.state import StateResolutionStore from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.types import ( PersistedEventPosition, RoomStreamToken, StateMap, UserID, get_domain_from_id, ) from synapse.util.async_helpers import Linearizer, concurrently_execute from synapse.util.iterutils import batch_iter from synapse.util.retryutils import NotRetryingDestination from synapse.util.stringutils import shortstr if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) soft_failed_event_counter = Counter( "synapse_federation_soft_failed_events_total", "Events received over federation that we marked as soft_failed", ) class FederationEventHandler: """Handles events that originated from federation. Responsible for handing incoming events and passing them on to the rest of the homeserver (including auth and state conflict resolutions) """ def __init__(self, hs: "HomeServer"): self._store = hs.get_datastore() self._storage = hs.get_storage() self._state_store = self._storage.state self._state_handler = hs.get_state_handler() self._event_creation_handler = hs.get_event_creation_handler() self._event_auth_handler = hs.get_event_auth_handler() self._message_handler = hs.get_message_handler() self._action_generator = hs.get_action_generator() self._state_resolution_handler = hs.get_state_resolution_handler() # avoid a circular dependency by deferring execution here self._get_room_member_handler = hs.get_room_member_handler self._federation_client = hs.get_federation_client() self._third_party_event_rules = hs.get_third_party_event_rules() self._notifier = hs.get_notifier() self._is_mine_id = hs.is_mine_id self._server_name = hs.hostname self._instance_name = hs.get_instance_name() self._config = hs.config self._ephemeral_messages_enabled = hs.config.server.enable_ephemeral_messages self._send_events = ReplicationFederationSendEventsRestServlet.make_client(hs) if hs.config.worker.worker_app: self._user_device_resync = ( ReplicationUserDevicesResyncRestServlet.make_client(hs) ) else: self._device_list_updater = hs.get_device_handler().device_list_updater # When joining a room we need to queue any events for that room up. # For each room, a list of (pdu, origin) tuples. # TODO: replace this with something more elegant, probably based around the # federation event staging area. self.room_queues: Dict[str, List[Tuple[EventBase, str]]] = {} self._room_pdu_linearizer = Linearizer("fed_room_pdu") async def on_receive_pdu(self, origin: str, pdu: EventBase) -> None: """Process a PDU received via a federation /send/ transaction Args: origin: server which initiated the /send/ transaction. Will be used to fetch missing events or state. pdu: received PDU """ # We should never see any outliers here. assert not pdu.internal_metadata.outlier room_id = pdu.room_id event_id = pdu.event_id # We reprocess pdus when we have seen them only as outliers existing = await self._store.get_event( event_id, allow_none=True, allow_rejected=True ) # FIXME: Currently we fetch an event again when we already have it # if it has been marked as an outlier. if existing: if not existing.internal_metadata.is_outlier(): logger.info( "Ignoring received event %s which we have already seen", event_id ) return if pdu.internal_metadata.is_outlier(): logger.info( "Ignoring received outlier %s which we already have as an outlier", event_id, ) return logger.info("De-outliering event %s", event_id) # do some initial sanity-checking of the event. In particular, make # sure it doesn't have hundreds of prev_events or auth_events, which # could cause a huge state resolution or cascade of event fetches. try: self._sanity_check_event(pdu) except SynapseError as err: logger.warning("Received event failed sanity checks") raise FederationError("ERROR", err.code, err.msg, affected=pdu.event_id) # If we are currently in the process of joining this room, then we # queue up events for later processing. if room_id in self.room_queues: logger.info( "Queuing PDU from %s for now: join in progress", origin, ) self.room_queues[room_id].append((pdu, origin)) return # If we're not in the room just ditch the event entirely. This is # probably an old server that has come back and thinks we're still in # the room (or we've been rejoined to the room by a state reset). # # Note that if we were never in the room then we would have already # dropped the event, since we wouldn't know the room version. is_in_room = await self._event_auth_handler.check_host_in_room( room_id, self._server_name ) if not is_in_room: logger.info( "Ignoring PDU from %s as we're not in the room", origin, ) return None # Try to fetch any missing prev events to fill in gaps in the graph prevs = set(pdu.prev_event_ids()) seen = await self._store.have_events_in_timeline(prevs) missing_prevs = prevs - seen if missing_prevs: # We only backfill backwards to the min depth. min_depth = await self._store.get_min_depth(pdu.room_id) logger.debug("min_depth: %d", min_depth) if min_depth is not None and pdu.depth > min_depth: # If we're missing stuff, ensure we only fetch stuff one # at a time. logger.info( "Acquiring room lock to fetch %d missing prev_events: %s", len(missing_prevs), shortstr(missing_prevs), ) with (await self._room_pdu_linearizer.queue(pdu.room_id)): logger.info( "Acquired room lock to fetch %d missing prev_events", len(missing_prevs), ) try: await self._get_missing_events_for_pdu( origin, pdu, prevs, min_depth ) except Exception as e: raise Exception( "Error fetching missing prev_events for %s: %s" % (event_id, e) ) from e # Update the set of things we've seen after trying to # fetch the missing stuff seen = await self._store.have_events_in_timeline(prevs) missing_prevs = prevs - seen if not missing_prevs: logger.info("Found all missing prev_events") if missing_prevs: # since this event was pushed to us, it is possible for it to # become the only forward-extremity in the room, and we would then # trust its state to be the state for the whole room. This is very # bad. Further, if the event was pushed to us, there is no excuse # for us not to have all the prev_events. (XXX: apart from # min_depth?) # # We therefore reject any such events. logger.warning( "Rejecting: failed to fetch %d prev events: %s", len(missing_prevs), shortstr(missing_prevs), ) raise FederationError( "ERROR", 403, ( "Your server isn't divulging details about prev_events " "referenced in this event." ), affected=pdu.event_id, ) await self._process_received_pdu(origin, pdu, state=None) async def on_send_membership_event( self, origin: str, event: EventBase ) -> Tuple[EventBase, EventContext]: """ We have received a join/leave/knock event for a room via send_join/leave/knock. Verify that event and send it into the room on the remote homeserver's behalf. This is quite similar to on_receive_pdu, with the following principal differences: * only membership events are permitted (and only events with sender==state_key -- ie, no kicks or bans) * *We* send out the event on behalf of the remote server. * We enforce the membership restrictions of restricted rooms. * Rejected events result in an exception rather than being stored. There are also other differences, however it is not clear if these are by design or omission. In particular, we do not attempt to backfill any missing prev_events. Args: origin: The homeserver of the remote (joining/invited/knocking) user. event: The member event that has been signed by the remote homeserver. Returns: The event and context of the event after inserting it into the room graph. Raises: SynapseError if the event is not accepted into the room """ logger.debug( "on_send_membership_event: Got event: %s, signatures: %s", event.event_id, event.signatures, ) if get_domain_from_id(event.sender) != origin: logger.info( "Got send_membership request for user %r from different origin %s", event.sender, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) if event.sender != event.state_key: raise SynapseError(400, "state_key and sender must match", Codes.BAD_JSON) assert not event.internal_metadata.outlier # Send this event on behalf of the other server. # # The remote server isn't a full participant in the room at this point, so # may not have an up-to-date list of the other homeservers participating in # the room, so we send it on their behalf. event.internal_metadata.send_on_behalf_of = origin context = await self._state_handler.compute_event_context(event) context = await self._check_event_auth(origin, event, context) if context.rejected: raise SynapseError( 403, f"{event.membership} event was rejected", Codes.FORBIDDEN ) # for joins, we need to check the restrictions of restricted rooms if event.membership == Membership.JOIN: await self.check_join_restrictions(context, event) # for knock events, we run the third-party event rules. It's not entirely clear # why we don't do this for other sorts of membership events. if event.membership == Membership.KNOCK: event_allowed, _ = await self._third_party_event_rules.check_event_allowed( event, context ) if not event_allowed: logger.info("Sending of knock %s forbidden by third-party rules", event) raise SynapseError( 403, "This event is not allowed in this context", Codes.FORBIDDEN ) # all looks good, we can persist the event. # First, precalculate the joined hosts so that the federation sender doesn't # need to. await self._event_creation_handler.cache_joined_hosts_for_event(event, context) await self._check_for_soft_fail(event, None, origin=origin) await self._run_push_actions_and_persist_event(event, context) return event, context async def check_join_restrictions( self, context: EventContext, event: EventBase ) -> None: """Check that restrictions in restricted join rules are matched Called when we receive a join event via send_join. Raises an auth error if the restrictions are not matched. """ prev_state_ids = await context.get_prev_state_ids() # Check if the user is already in the room or invited to the room. user_id = event.state_key prev_member_event_id = prev_state_ids.get((EventTypes.Member, user_id), None) prev_member_event = None if prev_member_event_id: prev_member_event = await self._store.get_event(prev_member_event_id) # Check if the member should be allowed access via membership in a space. await self._event_auth_handler.check_restricted_join_rules( prev_state_ids, event.room_version, user_id, prev_member_event, ) async def process_remote_join( self, origin: str, room_id: str, auth_events: List[EventBase], state: List[EventBase], event: EventBase, room_version: RoomVersion, ) -> int: """Persists the events returned by a send_join Checks the auth chain is valid (and passes auth checks) for the state and event. Then persists all of the events. Notifies about the persisted events where appropriate. Args: origin: Where the events came from room_id: auth_events state event room_version: The room version we expect this room to have, and will raise if it doesn't match the version in the create event. Returns: The stream ID after which all events have been persisted. Raises: SynapseError if the response is in some way invalid. """ event_map = {e.event_id: e for e in itertools.chain(auth_events, state)} create_event = None for e in auth_events: if (e.type, e.state_key) == (EventTypes.Create, ""): create_event = e break if create_event is None: # If the state doesn't have a create event then the room is # invalid, and it would fail auth checks anyway. raise SynapseError(400, "No create event in state") room_version_id = create_event.content.get( "room_version", RoomVersions.V1.identifier ) if room_version.identifier != room_version_id: raise SynapseError(400, "Room version mismatch") # filter out any events we have already seen seen_remotes = await self._store.have_seen_events(room_id, event_map.keys()) for s in seen_remotes: event_map.pop(s, None) # persist the auth chain and state events. # # any invalid events here will be marked as rejected, and we'll carry on. # # any events whose auth events are missing (ie, not in the send_join response, # and not already in our db) will just be ignored. This is correct behaviour, # because the reason that auth_events are missing might be due to us being # unable to validate their signatures. The fact that we can't validate their # signatures right now doesn't mean that we will *never* be able to, so it # is premature to reject them. # await self._auth_and_persist_outliers(room_id, event_map.values()) # and now persist the join event itself. logger.info("Peristing join-via-remote %s", event) with nested_logging_context(suffix=event.event_id): context = await self._state_handler.compute_event_context( event, old_state=state ) context = await self._check_event_auth(origin, event, context) if context.rejected: raise SynapseError(400, "Join event was rejected") return await self.persist_events_and_notify(room_id, [(event, context)]) async def backfill( self, dest: str, room_id: str, limit: int, extremities: Collection[str] ) -> None: """Trigger a backfill request to `dest` for the given `room_id` This will attempt to get more events from the remote. If the other side has no new events to offer, this will return an empty list. As the events are received, we check their signatures, and also do some sanity-checking on them. If any of the backfilled events are invalid, this method throws a SynapseError. We might also raise an InvalidResponseError if the response from the remote server is just bogus. TODO: make this more useful to distinguish failures of the remote server from invalid events (there is probably no point in trying to re-fetch invalid events from every other HS in the room.) """ if dest == self._server_name: raise SynapseError(400, "Can't backfill from self.") events = await self._federation_client.backfill( dest, room_id, limit=limit, extremities=extremities ) if not events: return # if there are any events in the wrong room, the remote server is buggy and # should not be trusted. for ev in events: if ev.room_id != room_id: raise InvalidResponseError( f"Remote server {dest} returned event {ev.event_id} which is in " f"room {ev.room_id}, when we were backfilling in {room_id}" ) await self._process_pulled_events( dest, events, backfilled=True, ) async def _get_missing_events_for_pdu( self, origin: str, pdu: EventBase, prevs: Set[str], min_depth: int ) -> None: """ Args: origin: Origin of the pdu. Will be called to get the missing events pdu: received pdu prevs: List of event ids which we are missing min_depth: Minimum depth of events to return. """ room_id = pdu.room_id event_id = pdu.event_id seen = await self._store.have_events_in_timeline(prevs) if not prevs - seen: return latest_list = await self._store.get_latest_event_ids_in_room(room_id) # We add the prev events that we have seen to the latest # list to ensure the remote server doesn't give them to us latest = set(latest_list) latest |= seen logger.info( "Requesting missing events between %s and %s", shortstr(latest), event_id, ) # XXX: we set timeout to 10s to help workaround # https://github.com/matrix-org/synapse/issues/1733. # The reason is to avoid holding the linearizer lock # whilst processing inbound /send transactions, causing # FDs to stack up and block other inbound transactions # which empirically can currently take up to 30 minutes. # # N.B. this explicitly disables retry attempts. # # N.B. this also increases our chances of falling back to # fetching fresh state for the room if the missing event # can't be found, which slightly reduces our security. # it may also increase our DAG extremity count for the room, # causing additional state resolution? See #1760. # However, fetching state doesn't hold the linearizer lock # apparently. # # see https://github.com/matrix-org/synapse/pull/1744 # # ---- # # Update richvdh 2018/09/18: There are a number of problems with timing this # request out aggressively on the client side: # # - it plays badly with the server-side rate-limiter, which starts tarpitting you # if you send too many requests at once, so you end up with the server carefully # working through the backlog of your requests, which you have already timed # out. # # - for this request in particular, we now (as of # https://github.com/matrix-org/synapse/pull/3456) reject any PDUs where the # server can't produce a plausible-looking set of prev_events - so we becone # much more likely to reject the event. # # - contrary to what it says above, we do *not* fall back to fetching fresh state # for the room if get_missing_events times out. Rather, we give up processing # the PDU whose prevs we are missing, which then makes it much more likely that # we'll end up back here for the *next* PDU in the list, which exacerbates the # problem. # # - the aggressive 10s timeout was introduced to deal with incoming federation # requests taking 8 hours to process. It's not entirely clear why that was going # on; certainly there were other issues causing traffic storms which are now # resolved, and I think in any case we may be more sensible about our locking # now. We're *certainly* more sensible about our logging. # # All that said: Let's try increasing the timeout to 60s and see what happens. try: missing_events = await self._federation_client.get_missing_events( origin, room_id, earliest_events_ids=list(latest), latest_events=[pdu], limit=10, min_depth=min_depth, timeout=60000, ) except (RequestSendFailed, HttpResponseException, NotRetryingDestination) as e: # We failed to get the missing events, but since we need to handle # the case of `get_missing_events` not returning the necessary # events anyway, it is safe to simply log the error and continue. logger.warning("Failed to get prev_events: %s", e) return logger.info("Got %d prev_events", len(missing_events)) await self._process_pulled_events(origin, missing_events, backfilled=False) async def _process_pulled_events( self, origin: str, events: Iterable[EventBase], backfilled: bool ) -> None: """Process a batch of events we have pulled from a remote server Pulls in any events required to auth the events, persists the received events, and notifies clients, if appropriate. Assumes the events have already had their signatures and hashes checked. Params: origin: The server we received these events from events: The received events. backfilled: True if this is part of a historical batch of events (inhibits notification to clients, and validation of device keys.) """ logger.debug( "processing pulled backfilled=%s events=%s", backfilled, [ "event_id=%s,depth=%d,body=%s,prevs=%s\n" % ( event.event_id, event.depth, event.content.get("body", event.type), event.prev_event_ids(), ) for event in events ], ) # We want to sort these by depth so we process them and # tell clients about them in order. sorted_events = sorted(events, key=lambda x: x.depth) for ev in sorted_events: with nested_logging_context(ev.event_id): await self._process_pulled_event(origin, ev, backfilled=backfilled) async def _process_pulled_event( self, origin: str, event: EventBase, backfilled: bool ) -> None: """Process a single event that we have pulled from a remote server Pulls in any events required to auth the event, persists the received event, and notifies clients, if appropriate. Assumes the event has already had its signatures and hashes checked. This is somewhat equivalent to on_receive_pdu, but applies somewhat different logic in the case that we are missing prev_events (in particular, it just requests the state at that point, rather than triggering a get_missing_events) - so is appropriate when we have pulled the event from a remote server, rather than having it pushed to us. Params: origin: The server we received this event from events: The received event backfilled: True if this is part of a historical batch of events (inhibits notification to clients, and validation of device keys.) """ logger.info("Processing pulled event %s", event) # these should not be outliers. assert ( not event.internal_metadata.is_outlier() ), "pulled event unexpectedly flagged as outlier" event_id = event.event_id existing = await self._store.get_event( event_id, allow_none=True, allow_rejected=True ) if existing: if not existing.internal_metadata.is_outlier(): logger.info( "Ignoring received event %s which we have already seen", event_id, ) return logger.info("De-outliering event %s", event_id) try: self._sanity_check_event(event) except SynapseError as err: logger.warning("Event %s failed sanity check: %s", event_id, err) return try: state = await self._resolve_state_at_missing_prevs(origin, event) await self._process_received_pdu( origin, event, state=state, backfilled=backfilled ) except FederationError as e: if e.code == 403: logger.warning("Pulled event %s failed history check.", event_id) else: raise async def _resolve_state_at_missing_prevs( self, dest: str, event: EventBase ) -> Optional[Iterable[EventBase]]: """Calculate the state at an event with missing prev_events. This is used when we have pulled a batch of events from a remote server, and still don't have all the prev_events. If we already have all the prev_events for `event`, this method does nothing. Otherwise, the missing prevs become new backwards extremities, and we fall back to asking the remote server for the state after each missing `prev_event`, and resolving across them. That's ok provided we then resolve the state against other bits of the DAG before using it - in other words, that the received event `event` is not going to become the only forwards_extremity in the room (which will ensure that you can't just take over a room by sending an event, withholding its prev_events, and declaring yourself to be an admin in the subsequent state request). In other words: we should only call this method if `event` has been *pulled* as part of a batch of missing prev events, or similar. Params: dest: the remote server to ask for state at the missing prevs. Typically, this will be the server we got `event` from. event: an event to check for missing prevs. Returns: if we already had all the prev events, `None`. Otherwise, returns a list of the events in the state at `event`. """ room_id = event.room_id event_id = event.event_id prevs = set(event.prev_event_ids()) seen = await self._store.have_events_in_timeline(prevs) missing_prevs = prevs - seen if not missing_prevs: return None logger.info( "Event %s is missing prev_events %s: calculating state for a " "backwards extremity", event_id, shortstr(missing_prevs), ) # Calculate the state after each of the previous events, and # resolve them to find the correct state at the current event. event_map = {event_id: event} try: # Get the state of the events we know about ours = await self._state_store.get_state_groups_ids(room_id, seen) # state_maps is a list of mappings from (type, state_key) to event_id state_maps: List[StateMap[str]] = list(ours.values()) # we don't need this any more, let's delete it. del ours # Ask the remote server for the states we don't # know about for p in missing_prevs: logger.info("Requesting state after missing prev_event %s", p) with nested_logging_context(p): # note that if any of the missing prevs share missing state or # auth events, the requests to fetch those events are deduped # by the get_pdu_cache in federation_client. remote_state = await self._get_state_after_missing_prev_event( dest, room_id, p ) remote_state_map = { (x.type, x.state_key): x.event_id for x in remote_state } state_maps.append(remote_state_map) for x in remote_state: event_map[x.event_id] = x room_version = await self._store.get_room_version_id(room_id) state_map = await self._state_resolution_handler.resolve_events_with_store( room_id, room_version, state_maps, event_map, state_res_store=StateResolutionStore(self._store), ) # We need to give _process_received_pdu the actual state events # rather than event ids, so generate that now. # First though we need to fetch all the events that are in # state_map, so we can build up the state below. evs = await self._store.get_events( list(state_map.values()), get_prev_content=False, redact_behaviour=EventRedactBehaviour.AS_IS, ) event_map.update(evs) state = [event_map[e] for e in state_map.values()] except Exception: logger.warning( "Error attempting to resolve state at missing prev_events", exc_info=True, ) raise FederationError( "ERROR", 403, "We can't get valid state history.", affected=event_id, ) return state async def _get_state_after_missing_prev_event( self, destination: str, room_id: str, event_id: str, ) -> List[EventBase]: """Requests all of the room state at a given event from a remote homeserver. Args: destination: The remote homeserver to query for the state. room_id: The id of the room we're interested in. event_id: The id of the event we want the state at. Returns: A list of events in the state, including the event itself """ ( state_event_ids, auth_event_ids, ) = await self._federation_client.get_room_state_ids( destination, room_id, event_id=event_id ) logger.debug( "state_ids returned %i state events, %i auth events", len(state_event_ids), len(auth_event_ids), ) # start by just trying to fetch the events from the store desired_events = set(state_event_ids) desired_events.add(event_id) logger.debug("Fetching %i events from cache/store", len(desired_events)) fetched_events = await self._store.get_events( desired_events, allow_rejected=True ) missing_desired_events = desired_events - fetched_events.keys() logger.debug( "We are missing %i events (got %i)", len(missing_desired_events), len(fetched_events), ) # We probably won't need most of the auth events, so let's just check which # we have for now, rather than thrashing the event cache with them all # unnecessarily. # TODO: we probably won't actually need all of the auth events, since we # already have a bunch of the state events. It would be nice if the # federation api gave us a way of finding out which we actually need. missing_auth_events = set(auth_event_ids) - fetched_events.keys() missing_auth_events.difference_update( await self._store.have_seen_events(room_id, missing_auth_events) ) logger.debug("We are also missing %i auth events", len(missing_auth_events)) missing_events = missing_desired_events | missing_auth_events logger.debug("Fetching %i events from remote", len(missing_events)) await self._get_events_and_persist( destination=destination, room_id=room_id, event_ids=missing_events ) # we need to make sure we re-load from the database to get the rejected # state correct. fetched_events.update( await self._store.get_events(missing_desired_events, allow_rejected=True) ) # check for events which were in the wrong room. # # this can happen if a remote server claims that the state or # auth_events at an event in room A are actually events in room B bad_events = [ (event_id, event.room_id) for event_id, event in fetched_events.items() if event.room_id != room_id ] for bad_event_id, bad_room_id in bad_events: # This is a bogus situation, but since we may only discover it a long time # after it happened, we try our best to carry on, by just omitting the # bad events from the returned state set. logger.warning( "Remote server %s claims event %s in room %s is an auth/state " "event in room %s", destination, bad_event_id, bad_room_id, room_id, ) del fetched_events[bad_event_id] # if we couldn't get the prev event in question, that's a problem. remote_event = fetched_events.get(event_id) if not remote_event: raise Exception("Unable to get missing prev_event %s" % (event_id,)) # missing state at that event is a warning, not a blocker # XXX: this doesn't sound right? it means that we'll end up with incomplete # state. failed_to_fetch = desired_events - fetched_events.keys() if failed_to_fetch: logger.warning( "Failed to fetch missing state events for %s %s", event_id, failed_to_fetch, ) remote_state = [ fetched_events[e_id] for e_id in state_event_ids if e_id in fetched_events ] if remote_event.is_state() and remote_event.rejected_reason is None: remote_state.append(remote_event) return remote_state async def _process_received_pdu( self, origin: str, event: EventBase, state: Optional[Iterable[EventBase]], backfilled: bool = False, ) -> None: """Called when we have a new non-outlier event. This is called when we have a new event to add to the room DAG. This can be due to: * events received directly via a /send request * events retrieved via get_missing_events after a /send request * events backfilled after a client request. It's not currently used for events received from incoming send_{join,knock,leave} requests (which go via on_send_membership_event), nor for joins created by a remote join dance (which go via process_remote_join). We need to do auth checks and put it through the StateHandler. Args: origin: server sending the event event: event to be persisted state: Normally None, but if we are handling a gap in the graph (ie, we are missing one or more prev_events), the resolved state at the event backfilled: True if this is part of a historical batch of events (inhibits notification to clients, and validation of device keys.) """ logger.debug("Processing event: %s", event) assert not event.internal_metadata.outlier try: context = await self._state_handler.compute_event_context( event, old_state=state ) context = await self._check_event_auth( origin, event, context, ) except AuthError as e: # FIXME richvdh 2021/10/07 I don't think this is reachable. Let's log it # for now logger.exception("Unexpected AuthError from _check_event_auth") raise FederationError("ERROR", e.code, e.msg, affected=event.event_id) if not backfilled and not context.rejected: # For new (non-backfilled and non-outlier) events we check if the event # passes auth based on the current state. If it doesn't then we # "soft-fail" the event. await self._check_for_soft_fail(event, state, origin=origin) await self._run_push_actions_and_persist_event(event, context, backfilled) await self._handle_marker_event(origin, event) if backfilled or context.rejected: return await self._maybe_kick_guest_users(event) # For encrypted messages we check that we know about the sending device, # if we don't then we mark the device cache for that user as stale. if event.type == EventTypes.Encrypted: device_id = event.content.get("device_id") sender_key = event.content.get("sender_key") cached_devices = await self._store.get_cached_devices_for_user(event.sender) resync = False # Whether we should resync device lists. device = None if device_id is not None: device = cached_devices.get(device_id) if device is None: logger.info( "Received event from remote device not in our cache: %s %s", event.sender, device_id, ) resync = True # We also check if the `sender_key` matches what we expect. if sender_key is not None: # Figure out what sender key we're expecting. If we know the # device and recognize the algorithm then we can work out the # exact key to expect. Otherwise check it matches any key we # have for that device. current_keys: Container[str] = [] if device: keys = device.get("keys", {}).get("keys", {}) if ( event.content.get("algorithm") == RoomEncryptionAlgorithms.MEGOLM_V1_AES_SHA2 ): # For this algorithm we expect a curve25519 key. key_name = "curve25519:%s" % (device_id,) current_keys = [keys.get(key_name)] else: # We don't know understand the algorithm, so we just # check it matches a key for the device. current_keys = keys.values() elif device_id: # We don't have any keys for the device ID. pass else: # The event didn't include a device ID, so we just look for # keys across all devices. current_keys = [ key for device in cached_devices.values() for key in device.get("keys", {}).get("keys", {}).values() ] # We now check that the sender key matches (one of) the expected # keys. if sender_key not in current_keys: logger.info( "Received event from remote device with unexpected sender key: %s %s: %s", event.sender, device_id or "", sender_key, ) resync = True if resync: run_as_background_process( "resync_device_due_to_pdu", self._resync_device, event.sender, ) async def _resync_device(self, sender: str) -> None: """We have detected that the device list for the given user may be out of sync, so we try and resync them. """ try: await self._store.mark_remote_user_device_cache_as_stale(sender) # Immediately attempt a resync in the background if self._config.worker.worker_app: await self._user_device_resync(user_id=sender) else: await self._device_list_updater.user_device_resync(sender) except Exception: logger.exception("Failed to resync device for %s", sender) async def _handle_marker_event(self, origin: str, marker_event: EventBase) -> None: """Handles backfilling the insertion event when we receive a marker event that points to one. Args: origin: Origin of the event. Will be called to get the insertion event marker_event: The event to process """ if marker_event.type != EventTypes.MSC2716_MARKER: # Not a marker event return if marker_event.rejected_reason is not None: # Rejected event return # Skip processing a marker event if the room version doesn't # support it or the event is not from the room creator. room_version = await self._store.get_room_version(marker_event.room_id) create_event = await self._store.get_create_event_for_room(marker_event.room_id) room_creator = create_event.content.get(EventContentFields.ROOM_CREATOR) if not room_version.msc2716_historical and ( not self._config.experimental.msc2716_enabled or marker_event.sender != room_creator ): return logger.debug("_handle_marker_event: received %s", marker_event) insertion_event_id = marker_event.content.get( EventContentFields.MSC2716_MARKER_INSERTION ) if insertion_event_id is None: # Nothing to retrieve then (invalid marker) return logger.debug( "_handle_marker_event: backfilling insertion event %s", insertion_event_id ) await self._get_events_and_persist( origin, marker_event.room_id, [insertion_event_id], ) insertion_event = await self._store.get_event( insertion_event_id, allow_none=True ) if insertion_event is None: logger.warning( "_handle_marker_event: server %s didn't return insertion event %s for marker %s", origin, insertion_event_id, marker_event.event_id, ) return logger.debug( "_handle_marker_event: succesfully backfilled insertion event %s from marker event %s", insertion_event, marker_event, ) await self._store.insert_insertion_extremity( insertion_event_id, marker_event.room_id ) logger.debug( "_handle_marker_event: insertion extremity added for %s from marker event %s", insertion_event, marker_event, ) async def _get_events_and_persist( self, destination: str, room_id: str, event_ids: Collection[str] ) -> None: """Fetch the given events from a server, and persist them as outliers. This function *does not* recursively get missing auth events of the newly fetched events. Callers must include in the `event_ids` argument any missing events from the auth chain. Logs a warning if we can't find the given event. """ room_version = await self._store.get_room_version(room_id) events: List[EventBase] = [] async def get_event(event_id: str) -> None: with nested_logging_context(event_id): try: event = await self._federation_client.get_pdu( [destination], event_id, room_version, ) if event is None: logger.warning( "Server %s didn't return event %s", destination, event_id, ) return events.append(event) except Exception as e: logger.warning( "Error fetching missing state/auth event %s: %s %s", event_id, type(e), e, ) await concurrently_execute(get_event, event_ids, 5) logger.info("Fetched %i events of %i requested", len(events), len(event_ids)) await self._auth_and_persist_outliers(room_id, events) async def _auth_and_persist_outliers( self, room_id: str, events: Iterable[EventBase] ) -> None: """Persist a batch of outlier events fetched from remote servers. We first sort the events to make sure that we process each event's auth_events before the event itself. We then mark the events as outliers, persist them to the database, and, where appropriate (eg, an invite), awake the notifier. Params: room_id: the room that the events are meant to be in (though this has not yet been checked) events: the events that have been fetched """ event_map = {event.event_id: event for event in events} # XXX: it might be possible to kick this process off in parallel with fetching # the events. while event_map: # build a list of events whose auth events are not in the queue. roots = tuple( ev for ev in event_map.values() if not any(aid in event_map for aid in ev.auth_event_ids()) ) if not roots: # if *none* of the remaining events are ready, that means # we have a loop. This either means a bug in our logic, or that # somebody has managed to create a loop (which requires finding a # hash collision in room v2 and later). logger.warning( "Loop found in auth events while fetching missing state/auth " "events: %s", shortstr(event_map.keys()), ) return logger.info( "Persisting %i of %i remaining outliers: %s", len(roots), len(event_map), shortstr(e.event_id for e in roots), ) await self._auth_and_persist_outliers_inner(room_id, roots) for ev in roots: del event_map[ev.event_id] async def _auth_and_persist_outliers_inner( self, room_id: str, fetched_events: Collection[EventBase] ) -> None: """Helper for _auth_and_persist_outliers Persists a batch of events where we have (theoretically) already persisted all of their auth events. Marks the events as outliers, auths them, persists them to the database, and, where appropriate (eg, an invite), awakes the notifier. Params: origin: where the events came from room_id: the room that the events are meant to be in (though this has not yet been checked) fetched_events: the events to persist """ # get all the auth events for all the events in this batch. By now, they should # have been persisted. auth_events = { aid for event in fetched_events for aid in event.auth_event_ids() } persisted_events = await self._store.get_events( auth_events, allow_rejected=True, ) room_version = await self._store.get_room_version_id(room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] def prep(event: EventBase) -> Optional[Tuple[EventBase, EventContext]]: with nested_logging_context(suffix=event.event_id): auth = [] for auth_event_id in event.auth_event_ids(): ae = persisted_events.get(auth_event_id) if not ae: # the fact we can't find the auth event doesn't mean it doesn't # exist, which means it is premature to reject `event`. Instead we # just ignore it for now. logger.warning( "Dropping event %s, which relies on auth_event %s, which could not be found", event, auth_event_id, ) return None auth.append(ae) # we're not bothering about room state, so flag the event as an outlier. event.internal_metadata.outlier = True context = EventContext.for_outlier() try: validate_event_for_room_version(room_version_obj, event) check_auth_rules_for_event(room_version_obj, event, auth) except AuthError as e: logger.warning("Rejecting %r because %s", event, e) context.rejected = RejectedReason.AUTH_ERROR return event, context events_to_persist = (x for x in (prep(event) for event in fetched_events) if x) await self.persist_events_and_notify( room_id, tuple(events_to_persist), # Mark these events backfilled as they're historic events that will # eventually be backfilled. For example, missing events we fetch # during backfill should be marked as backfilled as well. backfilled=True, ) async def _check_event_auth( self, origin: str, event: EventBase, context: EventContext, ) -> EventContext: """ Checks whether an event should be rejected (for failing auth checks). Args: origin: The host the event originates from. event: The event itself. context: The event context. Returns: The updated context object. Raises: AuthError if we were unable to find copies of the event's auth events. (Most other failures just cause us to set `context.rejected`.) """ # This method should only be used for non-outliers assert not event.internal_metadata.outlier # first of all, check that the event itself is valid. room_version = await self._store.get_room_version_id(event.room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] try: validate_event_for_room_version(room_version_obj, event) except AuthError as e: logger.warning("While validating received event %r: %s", event, e) # TODO: use a different rejected reason here? context.rejected = RejectedReason.AUTH_ERROR return context # next, check that we have all of the event's auth events. # # Note that this can raise AuthError, which we want to propagate to the # caller rather than swallow with `context.rejected` (since we cannot be # certain that there is a permanent problem with the event). claimed_auth_events = await self._load_or_fetch_auth_events_for_event( origin, event ) # ... and check that the event passes auth at those auth events. try: check_auth_rules_for_event(room_version_obj, event, claimed_auth_events) except AuthError as e: logger.warning( "While checking auth of %r against auth_events: %s", event, e ) context.rejected = RejectedReason.AUTH_ERROR return context # now check auth against what we think the auth events *should* be. prev_state_ids = await context.get_prev_state_ids() auth_events_ids = self._event_auth_handler.compute_auth_events( event, prev_state_ids, for_verification=True ) auth_events_x = await self._store.get_events(auth_events_ids) calculated_auth_event_map = { (e.type, e.state_key): e for e in auth_events_x.values() } try: updated_auth_events = await self._update_auth_events_for_auth( event, calculated_auth_event_map=calculated_auth_event_map, ) except Exception: # We don't really mind if the above fails, so lets not fail # processing if it does. However, it really shouldn't fail so # let's still log as an exception since we'll still want to fix # any bugs. logger.exception( "Failed to double check auth events for %s with remote. " "Ignoring failure and continuing processing of event.", event.event_id, ) updated_auth_events = None if updated_auth_events: context = await self._update_context_for_auth_events( event, context, updated_auth_events ) auth_events_for_auth = updated_auth_events else: auth_events_for_auth = calculated_auth_event_map try: check_auth_rules_for_event( room_version_obj, event, auth_events_for_auth.values() ) except AuthError as e: logger.warning("Failed auth resolution for %r because %s", event, e) context.rejected = RejectedReason.AUTH_ERROR return context async def _maybe_kick_guest_users(self, event: EventBase) -> None: if event.type != EventTypes.GuestAccess: return guest_access = event.content.get(EventContentFields.GUEST_ACCESS) if guest_access == GuestAccess.CAN_JOIN: return current_state_map = await self._state_handler.get_current_state(event.room_id) current_state = list(current_state_map.values()) await self._get_room_member_handler().kick_guest_users(current_state) async def _check_for_soft_fail( self, event: EventBase, state: Optional[Iterable[EventBase]], origin: str, ) -> None: """Checks if we should soft fail the event; if so, marks the event as such. Args: event state: The state at the event if we don't have all the event's prev events origin: The host the event originates from. """ extrem_ids_list = await self._store.get_latest_event_ids_in_room(event.room_id) extrem_ids = set(extrem_ids_list) prev_event_ids = set(event.prev_event_ids()) if extrem_ids == prev_event_ids: # If they're the same then the current state is the same as the # state at the event, so no point rechecking auth for soft fail. return room_version = await self._store.get_room_version_id(event.room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] # Calculate the "current state". if state is not None: # If we're explicitly given the state then we won't have all the # prev events, and so we have a gap in the graph. In this case # we want to be a little careful as we might have been down for # a while and have an incorrect view of the current state, # however we still want to do checks as gaps are easy to # maliciously manufacture. # # So we use a "current state" that is actually a state # resolution across the current forward extremities and the # given state at the event. This should correctly handle cases # like bans, especially with state res v2. state_sets_d = await self._state_store.get_state_groups( event.room_id, extrem_ids ) state_sets: List[Iterable[EventBase]] = list(state_sets_d.values()) state_sets.append(state) current_states = await self._state_handler.resolve_events( room_version, state_sets, event ) current_state_ids: StateMap[str] = { k: e.event_id for k, e in current_states.items() } else: current_state_ids = await self._state_handler.get_current_state_ids( event.room_id, latest_event_ids=extrem_ids ) logger.debug( "Doing soft-fail check for %s: state %s", event.event_id, current_state_ids, ) # Now check if event pass auth against said current state auth_types = auth_types_for_event(room_version_obj, event) current_state_ids_list = [ e for k, e in current_state_ids.items() if k in auth_types ] current_auth_events = await self._store.get_events_as_list( current_state_ids_list ) try: check_auth_rules_for_event(room_version_obj, event, current_auth_events) except AuthError as e: logger.warning( "Soft-failing %r (from %s) because %s", event, e, origin, extra={ "room_id": event.room_id, "mxid": event.sender, "hs": origin, }, ) soft_failed_event_counter.inc() event.internal_metadata.soft_failed = True async def _update_auth_events_for_auth( self, event: EventBase, calculated_auth_event_map: StateMap[EventBase], ) -> Optional[StateMap[EventBase]]: """Helper for _check_event_auth. See there for docs. Checks whether a given event has the expected auth events. If it doesn't then we talk to the remote server to compare state to see if we can come to a consensus (e.g. if one server missed some valid state). This attempts to resolve any potential divergence of state between servers, but is not essential and so failures should not block further processing of the event. Args: event: calculated_auth_event_map: Our calculated auth_events based on the state of the room at the event's position in the DAG. Returns: updated auth event map, or None if no changes are needed. """ assert not event.internal_metadata.outlier # check for events which are in the event's claimed auth_events, but not # in our calculated event map. event_auth_events = set(event.auth_event_ids()) different_auth = event_auth_events.difference( e.event_id for e in calculated_auth_event_map.values() ) if not different_auth: return None logger.info( "auth_events refers to events which are not in our calculated auth " "chain: %s", different_auth, ) # XXX: currently this checks for redactions but I'm not convinced that is # necessary? different_events = await self._store.get_events_as_list(different_auth) # double-check they're all in the same room - we should already have checked # this but it doesn't hurt to check again. for d in different_events: assert ( d.room_id == event.room_id ), f"Event {event.event_id} refers to auth_event {d.event_id} which is in a different room" # now we state-resolve between our own idea of the auth events, and the remote's # idea of them. local_state = calculated_auth_event_map.values() remote_auth_events = dict(calculated_auth_event_map) remote_auth_events.update({(d.type, d.state_key): d for d in different_events}) remote_state = remote_auth_events.values() room_version = await self._store.get_room_version_id(event.room_id) new_state = await self._state_handler.resolve_events( room_version, (local_state, remote_state), event ) different_state = { (d.type, d.state_key): d for d in new_state.values() if calculated_auth_event_map.get((d.type, d.state_key)) != d } if not different_state: logger.info("State res returned no new state") return None logger.info( "After state res: updating auth_events with new state %s", different_state.values(), ) # take a copy of calculated_auth_event_map before we modify it. auth_events = dict(calculated_auth_event_map) auth_events.update(different_state) return auth_events async def _load_or_fetch_auth_events_for_event( self, destination: str, event: EventBase ) -> Collection[EventBase]: """Fetch this event's auth_events, from database or remote Loads any of the auth_events that we already have from the database/cache. If there are any that are missing, calls /event_auth to get the complete auth chain for the event (and then attempts to load the auth_events again). If any of the auth_events cannot be found, raises an AuthError. This can happen for a number of reasons; eg: the events don't exist, or we were unable to talk to `destination`, or we couldn't validate the signature on the event (which in turn has multiple potential causes). Args: destination: where to send the /event_auth request. Typically the server that sent us `event` in the first place. event: the event whose auth_events we want Returns: all of the events listed in `event.auth_events_ids`, after deduplication Raises: AuthError if we were unable to fetch the auth_events for any reason. """ event_auth_event_ids = set(event.auth_event_ids()) event_auth_events = await self._store.get_events( event_auth_event_ids, allow_rejected=True ) missing_auth_event_ids = event_auth_event_ids.difference( event_auth_events.keys() ) if not missing_auth_event_ids: return event_auth_events.values() logger.info( "Event %s refers to unknown auth events %s: fetching auth chain", event, missing_auth_event_ids, ) try: await self._get_remote_auth_chain_for_event( destination, event.room_id, event.event_id ) except Exception as e: logger.warning("Failed to get auth chain for %s: %s", event, e) # in this case, it's very likely we still won't have all the auth # events - but we pick that up below. # try to fetch the auth events we missed list time. extra_auth_events = await self._store.get_events( missing_auth_event_ids, allow_rejected=True ) missing_auth_event_ids.difference_update(extra_auth_events.keys()) event_auth_events.update(extra_auth_events) if not missing_auth_event_ids: return event_auth_events.values() # we still don't have all the auth events. logger.warning( "Missing auth events for %s: %s", event, shortstr(missing_auth_event_ids), ) # the fact we can't find the auth event doesn't mean it doesn't # exist, which means it is premature to store `event` as rejected. # instead we raise an AuthError, which will make the caller ignore it. raise AuthError(code=HTTPStatus.FORBIDDEN, msg="Auth events could not be found") async def _get_remote_auth_chain_for_event( self, destination: str, room_id: str, event_id: str ) -> None: """If we are missing some of an event's auth events, attempt to request them Args: destination: where to fetch the auth tree from room_id: the room in which we are lacking auth events event_id: the event for which we are lacking auth events """ try: remote_event_map = { e.event_id: e for e in await self._federation_client.get_event_auth( destination, room_id, event_id ) } except RequestSendFailed as e1: # The other side isn't around or doesn't implement the # endpoint, so lets just bail out. logger.info("Failed to get event auth from remote: %s", e1) return logger.info("/event_auth returned %i events", len(remote_event_map)) # `event` may be returned, but we should not yet process it. remote_event_map.pop(event_id, None) # nor should we reprocess any events we have already seen. seen_remotes = await self._store.have_seen_events( room_id, remote_event_map.keys() ) for s in seen_remotes: remote_event_map.pop(s, None) await self._auth_and_persist_outliers(room_id, remote_event_map.values()) async def _update_context_for_auth_events( self, event: EventBase, context: EventContext, auth_events: StateMap[EventBase] ) -> EventContext: """Update the state_ids in an event context after auth event resolution, storing the changes as a new state group. Args: event: The event we're handling the context for context: initial event context auth_events: Events to update in the event context. Returns: new event context """ # exclude the state key of the new event from the current_state in the context. if event.is_state(): event_key: Optional[Tuple[str, str]] = (event.type, event.state_key) else: event_key = None state_updates = { k: a.event_id for k, a in auth_events.items() if k != event_key } current_state_ids = await context.get_current_state_ids() current_state_ids = dict(current_state_ids) # type: ignore current_state_ids.update(state_updates) prev_state_ids = await context.get_prev_state_ids() prev_state_ids = dict(prev_state_ids) prev_state_ids.update({k: a.event_id for k, a in auth_events.items()}) # create a new state group as a delta from the existing one. prev_group = context.state_group state_group = await self._state_store.store_state_group( event.event_id, event.room_id, prev_group=prev_group, delta_ids=state_updates, current_state_ids=current_state_ids, ) return EventContext.with_state( state_group=state_group, state_group_before_event=context.state_group_before_event, current_state_ids=current_state_ids, prev_state_ids=prev_state_ids, prev_group=prev_group, delta_ids=state_updates, ) async def _run_push_actions_and_persist_event( self, event: EventBase, context: EventContext, backfilled: bool = False ) -> None: """Run the push actions for a received event, and persist it. Args: event: The event itself. context: The event context. backfilled: True if the event was backfilled. """ # this method should not be called on outliers (those code paths call # persist_events_and_notify directly.) assert not event.internal_metadata.outlier if not backfilled and not context.rejected: min_depth = await self._store.get_min_depth(event.room_id) if min_depth is None or min_depth > event.depth: # XXX richvdh 2021/10/07: I don't really understand what this # condition is doing. I think it's trying not to send pushes # for events that predate our join - but that's not really what # min_depth means, and anyway ancient events are a more general # problem. # # for now I'm just going to log about it. logger.info( "Skipping push actions for old event with depth %s < %s", event.depth, min_depth, ) else: await self._action_generator.handle_push_actions_for_event( event, context ) try: await self.persist_events_and_notify( event.room_id, [(event, context)], backfilled=backfilled ) except Exception: run_in_background( self._store.remove_push_actions_from_staging, event.event_id ) raise async def persist_events_and_notify( self, room_id: str, event_and_contexts: Sequence[Tuple[EventBase, EventContext]], backfilled: bool = False, ) -> int: """Persists events and tells the notifier/pushers about them, if necessary. Args: room_id: The room ID of events being persisted. event_and_contexts: Sequence of events with their associated context that should be persisted. All events must belong to the same room. backfilled: Whether these events are a result of backfilling or not Returns: The stream ID after which all events have been persisted. """ if not event_and_contexts: return self._store.get_room_max_stream_ordering() instance = self._config.worker.events_shard_config.get_instance(room_id) if instance != self._instance_name: # Limit the number of events sent over replication. We choose 200 # here as that is what we default to in `max_request_body_size(..)` for batch in batch_iter(event_and_contexts, 200): result = await self._send_events( instance_name=instance, store=self._store, room_id=room_id, event_and_contexts=batch, backfilled=backfilled, ) return result["max_stream_id"] else: assert self._storage.persistence # Note that this returns the events that were persisted, which may not be # the same as were passed in if some were deduplicated due to transaction IDs. events, max_stream_token = await self._storage.persistence.persist_events( event_and_contexts, backfilled=backfilled ) if self._ephemeral_messages_enabled: for event in events: # If there's an expiry timestamp on the event, schedule its expiry. self._message_handler.maybe_schedule_expiry(event) if not backfilled: # Never notify for backfilled events for event in events: await self._notify_persisted_event(event, max_stream_token) return max_stream_token.stream async def _notify_persisted_event( self, event: EventBase, max_stream_token: RoomStreamToken ) -> None: """Checks to see if notifier/pushers should be notified about the event or not. Args: event: max_stream_token: The max_stream_id returned by persist_events """ extra_users = [] if event.type == EventTypes.Member: target_user_id = event.state_key # We notify for memberships if its an invite for one of our # users if event.internal_metadata.is_outlier(): if event.membership != Membership.INVITE: if not self._is_mine_id(target_user_id): return target_user = UserID.from_string(target_user_id) extra_users.append(target_user) elif event.internal_metadata.is_outlier(): return # the event has been persisted so it should have a stream ordering. assert event.internal_metadata.stream_ordering event_pos = PersistedEventPosition( self._instance_name, event.internal_metadata.stream_ordering ) await self._notifier.on_new_room_event( event, event_pos, max_stream_token, extra_users=extra_users ) def _sanity_check_event(self, ev: EventBase) -> None: """ Do some early sanity checks of a received event In particular, checks it doesn't have an excessive number of prev_events or auth_events, which could cause a huge state resolution or cascade of event fetches. Args: ev: event to be checked Raises: SynapseError if the event does not pass muster """ if len(ev.prev_event_ids()) > 20: logger.warning( "Rejecting event %s which has %i prev_events", ev.event_id, len(ev.prev_event_ids()), ) raise SynapseError(HTTPStatus.BAD_REQUEST, "Too many prev_events") if len(ev.auth_event_ids()) > 10: logger.warning( "Rejecting event %s which has %i auth_events", ev.event_id, len(ev.auth_event_ids()), ) raise SynapseError(HTTPStatus.BAD_REQUEST, "Too many auth_events") synapse-1.53.0/synapse/handlers/groups_local.py000066400000000000000000000463421420514467300216260ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Set from synapse.api.errors import HttpResponseException, RequestSendFailed, SynapseError from synapse.types import GroupID, JsonDict, get_domain_from_id if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) def _create_rerouter(func_name: str) -> Callable[..., Awaitable[JsonDict]]: """Returns an async function that looks at the group id and calls the function on federation or the local group server if the group is local """ async def f( self: "GroupsLocalWorkerHandler", group_id: str, *args: Any, **kwargs: Any ) -> JsonDict: if not GroupID.is_valid(group_id): raise SynapseError(400, "%s is not a legal group ID" % (group_id,)) if self.is_mine_id(group_id): return await getattr(self.groups_server_handler, func_name)( group_id, *args, **kwargs ) else: destination = get_domain_from_id(group_id) try: return await getattr(self.transport_client, func_name)( destination, group_id, *args, **kwargs ) except HttpResponseException as e: # Capture errors returned by the remote homeserver and # re-throw specific errors as SynapseErrors. This is so # when the remote end responds with things like 403 Not # In Group, we can communicate that to the client instead # of a 500. raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") return f class GroupsLocalWorkerHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self.room_list_handler = hs.get_room_list_handler() self.groups_server_handler = hs.get_groups_server_handler() self.transport_client = hs.get_federation_transport_client() self.auth = hs.get_auth() self.clock = hs.get_clock() self.keyring = hs.get_keyring() self.is_mine_id = hs.is_mine_id self.signing_key = hs.signing_key self.server_name = hs.hostname self.notifier = hs.get_notifier() self.attestations = hs.get_groups_attestation_signing() self.profile_handler = hs.get_profile_handler() # The following functions merely route the query to the local groups server # or federation depending on if the group is local or remote get_group_profile = _create_rerouter("get_group_profile") get_rooms_in_group = _create_rerouter("get_rooms_in_group") get_invited_users_in_group = _create_rerouter("get_invited_users_in_group") get_group_category = _create_rerouter("get_group_category") get_group_categories = _create_rerouter("get_group_categories") get_group_role = _create_rerouter("get_group_role") get_group_roles = _create_rerouter("get_group_roles") async def get_group_summary( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get the group summary for a group. If the group is remote we check that the users have valid attestations. """ if self.is_mine_id(group_id): res = await self.groups_server_handler.get_group_summary( group_id, requester_user_id ) else: try: res = await self.transport_client.get_group_summary( get_domain_from_id(group_id), group_id, requester_user_id ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") group_server_name = get_domain_from_id(group_id) # Loop through the users and validate the attestations. chunk = res["users_section"]["users"] valid_users = [] for entry in chunk: g_user_id = entry["user_id"] attestation = entry.pop("attestation", {}) try: if get_domain_from_id(g_user_id) != group_server_name: await self.attestations.verify_attestation( attestation, group_id=group_id, user_id=g_user_id, server_name=get_domain_from_id(g_user_id), ) valid_users.append(entry) except Exception as e: logger.info("Failed to verify user is in group: %s", e) res["users_section"]["users"] = valid_users res["users_section"]["users"].sort(key=lambda e: e.get("order", 0)) res["rooms_section"]["rooms"].sort(key=lambda e: e.get("order", 0)) # Add `is_publicised` flag to indicate whether the user has publicised their # membership of the group on their profile result = await self.store.get_publicised_groups_for_user(requester_user_id) is_publicised = group_id in result res.setdefault("user", {})["is_publicised"] = is_publicised return res async def get_users_in_group( self, group_id: str, requester_user_id: str ) -> JsonDict: """Get users in a group""" if self.is_mine_id(group_id): return await self.groups_server_handler.get_users_in_group( group_id, requester_user_id ) group_server_name = get_domain_from_id(group_id) try: res = await self.transport_client.get_users_in_group( get_domain_from_id(group_id), group_id, requester_user_id ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") chunk = res["chunk"] valid_entries = [] for entry in chunk: g_user_id = entry["user_id"] attestation = entry.pop("attestation", {}) try: if get_domain_from_id(g_user_id) != group_server_name: await self.attestations.verify_attestation( attestation, group_id=group_id, user_id=g_user_id, server_name=get_domain_from_id(g_user_id), ) valid_entries.append(entry) except Exception as e: logger.info("Failed to verify user is in group: %s", e) res["chunk"] = valid_entries return res async def get_joined_groups(self, user_id: str) -> JsonDict: group_ids = await self.store.get_joined_groups(user_id) return {"groups": group_ids} async def get_publicised_groups_for_user(self, user_id: str) -> JsonDict: if self.hs.is_mine_id(user_id): result = await self.store.get_publicised_groups_for_user(user_id) # Check AS associated groups for this user - this depends on the # RegExps in the AS registration file (under `users`) for app_service in self.store.get_app_services(): result.extend(app_service.get_groups_for_user(user_id)) return {"groups": result} else: try: bulk_result = await self.transport_client.bulk_get_publicised_groups( get_domain_from_id(user_id), [user_id] ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") result = bulk_result.get("users", {}).get(user_id) # TODO: Verify attestations return {"groups": result} async def bulk_get_publicised_groups( self, user_ids: Iterable[str], proxy: bool = True ) -> JsonDict: destinations: Dict[str, Set[str]] = {} local_users = set() for user_id in user_ids: if self.hs.is_mine_id(user_id): local_users.add(user_id) else: destinations.setdefault(get_domain_from_id(user_id), set()).add(user_id) if not proxy and destinations: raise SynapseError(400, "Some user_ids are not local") results = {} failed_results: List[str] = [] for destination, dest_user_ids in destinations.items(): try: r = await self.transport_client.bulk_get_publicised_groups( destination, list(dest_user_ids) ) results.update(r["users"]) except Exception: failed_results.extend(dest_user_ids) for uid in local_users: results[uid] = await self.store.get_publicised_groups_for_user(uid) # Check AS associated groups for this user - this depends on the # RegExps in the AS registration file (under `users`) for app_service in self.store.get_app_services(): results[uid].extend(app_service.get_groups_for_user(uid)) return {"users": results} class GroupsLocalHandler(GroupsLocalWorkerHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) # Ensure attestations get renewed hs.get_groups_attestation_renewer() # The following functions merely route the query to the local groups server # or federation depending on if the group is local or remote update_group_profile = _create_rerouter("update_group_profile") add_room_to_group = _create_rerouter("add_room_to_group") update_room_in_group = _create_rerouter("update_room_in_group") remove_room_from_group = _create_rerouter("remove_room_from_group") update_group_summary_room = _create_rerouter("update_group_summary_room") delete_group_summary_room = _create_rerouter("delete_group_summary_room") update_group_category = _create_rerouter("update_group_category") delete_group_category = _create_rerouter("delete_group_category") update_group_summary_user = _create_rerouter("update_group_summary_user") delete_group_summary_user = _create_rerouter("delete_group_summary_user") update_group_role = _create_rerouter("update_group_role") delete_group_role = _create_rerouter("delete_group_role") set_group_join_policy = _create_rerouter("set_group_join_policy") async def create_group( self, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Create a group""" logger.info("Asking to create group with ID: %r", group_id) if self.is_mine_id(group_id): res = await self.groups_server_handler.create_group( group_id, user_id, content ) local_attestation = None remote_attestation = None else: raise SynapseError(400, "Unable to create remote groups") is_publicised = content.get("publicise", False) token = await self.store.register_user_group_membership( group_id, user_id, membership="join", is_admin=True, local_attestation=local_attestation, remote_attestation=remote_attestation, is_publicised=is_publicised, ) self.notifier.on_new_event("groups_key", token, users=[user_id]) return res async def join_group( self, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Request to join a group""" if self.is_mine_id(group_id): await self.groups_server_handler.join_group(group_id, user_id, content) local_attestation = None remote_attestation = None else: local_attestation = self.attestations.create_attestation(group_id, user_id) content["attestation"] = local_attestation try: res = await self.transport_client.join_group( get_domain_from_id(group_id), group_id, user_id, content ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") remote_attestation = res["attestation"] await self.attestations.verify_attestation( remote_attestation, group_id=group_id, user_id=user_id, server_name=get_domain_from_id(group_id), ) # TODO: Check that the group is public and we're being added publicly is_publicised = content.get("publicise", False) token = await self.store.register_user_group_membership( group_id, user_id, membership="join", is_admin=False, local_attestation=local_attestation, remote_attestation=remote_attestation, is_publicised=is_publicised, ) self.notifier.on_new_event("groups_key", token, users=[user_id]) return {} async def accept_invite( self, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """Accept an invite to a group""" if self.is_mine_id(group_id): await self.groups_server_handler.accept_invite(group_id, user_id, content) local_attestation = None remote_attestation = None else: local_attestation = self.attestations.create_attestation(group_id, user_id) content["attestation"] = local_attestation try: res = await self.transport_client.accept_group_invite( get_domain_from_id(group_id), group_id, user_id, content ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") remote_attestation = res["attestation"] await self.attestations.verify_attestation( remote_attestation, group_id=group_id, user_id=user_id, server_name=get_domain_from_id(group_id), ) # TODO: Check that the group is public and we're being added publicly is_publicised = content.get("publicise", False) token = await self.store.register_user_group_membership( group_id, user_id, membership="join", is_admin=False, local_attestation=local_attestation, remote_attestation=remote_attestation, is_publicised=is_publicised, ) self.notifier.on_new_event("groups_key", token, users=[user_id]) return {} async def invite( self, group_id: str, user_id: str, requester_user_id: str, config: JsonDict ) -> JsonDict: """Invite a user to a group""" content = {"requester_user_id": requester_user_id, "config": config} if self.is_mine_id(group_id): res = await self.groups_server_handler.invite_to_group( group_id, user_id, requester_user_id, content ) else: try: res = await self.transport_client.invite_to_group( get_domain_from_id(group_id), group_id, user_id, requester_user_id, content, ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") return res async def on_invite( self, group_id: str, user_id: str, content: JsonDict ) -> JsonDict: """One of our users were invited to a group""" # TODO: Support auto join and rejection if not self.is_mine_id(user_id): raise SynapseError(400, "User not on this server") local_profile = {} if "profile" in content: if "name" in content["profile"]: local_profile["name"] = content["profile"]["name"] if "avatar_url" in content["profile"]: local_profile["avatar_url"] = content["profile"]["avatar_url"] token = await self.store.register_user_group_membership( group_id, user_id, membership="invite", content={"profile": local_profile, "inviter": content["inviter"]}, ) self.notifier.on_new_event("groups_key", token, users=[user_id]) try: user_profile = await self.profile_handler.get_profile(user_id) except Exception as e: logger.warning("No profile for user %s: %s", user_id, e) user_profile = {} return {"state": "invite", "user_profile": user_profile} async def remove_user_from_group( self, group_id: str, user_id: str, requester_user_id: str, content: JsonDict ) -> JsonDict: """Remove a user from a group""" if user_id == requester_user_id: token = await self.store.register_user_group_membership( group_id, user_id, membership="leave" ) self.notifier.on_new_event("groups_key", token, users=[user_id]) # TODO: Should probably remember that we tried to leave so that we can # retry if the group server is currently down. if self.is_mine_id(group_id): res = await self.groups_server_handler.remove_user_from_group( group_id, user_id, requester_user_id, content ) else: content["requester_user_id"] = requester_user_id try: res = await self.transport_client.remove_user_from_group( get_domain_from_id(group_id), group_id, requester_user_id, user_id, content, ) except HttpResponseException as e: raise e.to_synapse_error() except RequestSendFailed: raise SynapseError(502, "Failed to contact group server") return res async def user_removed_from_group( self, group_id: str, user_id: str, content: JsonDict ) -> None: """One of our users was removed/kicked from a group""" # TODO: Check if user in group token = await self.store.register_user_group_membership( group_id, user_id, membership="leave" ) self.notifier.on_new_event("groups_key", token, users=[user_id]) synapse-1.53.0/synapse/handlers/identity.py000066400000000000000000001123471420514467300207650ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Utilities for interacting with Identity Servers""" import logging import urllib.parse from typing import TYPE_CHECKING, Awaitable, Callable, Dict, List, Optional, Tuple from synapse.api.errors import ( CodeMessageException, Codes, HttpResponseException, SynapseError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.config.emailconfig import ThreepidBehaviour from synapse.http import RequestTimedOutError from synapse.http.client import SimpleHttpClient from synapse.http.site import SynapseRequest from synapse.types import JsonDict, Requester from synapse.util import json_decoder from synapse.util.hash import sha256_and_url_safe_base64 from synapse.util.stringutils import ( assert_valid_client_secret, random_string, valid_id_server_location, ) if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) id_server_scheme = "https://" class IdentityHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() # An HTTP client for contacting trusted URLs. self.http_client = SimpleHttpClient(hs) # An HTTP client for contacting identity servers specified by clients. self.blacklisting_http_client = SimpleHttpClient( hs, ip_blacklist=hs.config.server.federation_ip_range_blacklist, ip_whitelist=hs.config.server.federation_ip_range_whitelist, ) self.federation_http_client = hs.get_federation_http_client() self.hs = hs self._web_client_location = hs.config.email.invite_client_location # Ratelimiters for `/requestToken` endpoints. self._3pid_validation_ratelimiter_ip = Ratelimiter( store=self.store, clock=hs.get_clock(), rate_hz=hs.config.ratelimiting.rc_3pid_validation.per_second, burst_count=hs.config.ratelimiting.rc_3pid_validation.burst_count, ) self._3pid_validation_ratelimiter_address = Ratelimiter( store=self.store, clock=hs.get_clock(), rate_hz=hs.config.ratelimiting.rc_3pid_validation.per_second, burst_count=hs.config.ratelimiting.rc_3pid_validation.burst_count, ) async def ratelimit_request_token_requests( self, request: SynapseRequest, medium: str, address: str, ) -> None: """Used to ratelimit requests to `/requestToken` by IP and address. Args: request: The associated request medium: The type of threepid, e.g. "msisdn" or "email" address: The actual threepid ID, e.g. the phone number or email address """ await self._3pid_validation_ratelimiter_ip.ratelimit( None, (medium, request.getClientIP()) ) await self._3pid_validation_ratelimiter_address.ratelimit( None, (medium, address) ) async def threepid_from_creds( self, id_server: str, creds: Dict[str, str] ) -> Optional[JsonDict]: """ Retrieve and validate a threepid identifier from a "credentials" dictionary against a given identity server Args: id_server: The identity server to validate 3PIDs against. Must be a complete URL including the protocol (http(s)://) creds: Dictionary containing the following keys: * client_secret|clientSecret: A unique secret str provided by the client * sid: The ID of the validation session Returns: A dictionary consisting of response params to the /getValidated3pid endpoint of the Identity Service API, or None if the threepid was not found """ client_secret = creds.get("client_secret") or creds.get("clientSecret") if not client_secret: raise SynapseError( 400, "Missing param client_secret in creds", errcode=Codes.MISSING_PARAM ) assert_valid_client_secret(client_secret) session_id = creds.get("sid") if not session_id: raise SynapseError( 400, "Missing param session_id in creds", errcode=Codes.MISSING_PARAM ) query_params = {"sid": session_id, "client_secret": client_secret} url = id_server + "/_matrix/identity/api/v1/3pid/getValidated3pid" try: data = await self.http_client.get_json(url, query_params) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except HttpResponseException as e: logger.info( "%s returned %i for threepid validation for: %s", id_server, e.code, creds, ) return None # Old versions of Sydent return a 200 http code even on a failed validation # check. Thus, in addition to the HttpResponseException check above (which # checks for non-200 errors), we need to make sure validation_session isn't # actually an error, identified by the absence of a "medium" key # See https://github.com/matrix-org/sydent/issues/215 for details if "medium" in data: return data logger.info("%s reported non-validated threepid: %s", id_server, creds) return None async def bind_threepid( self, client_secret: str, sid: str, mxid: str, id_server: str, id_access_token: Optional[str] = None, use_v2: bool = True, ) -> JsonDict: """Bind a 3PID to an identity server Args: client_secret: A unique secret provided by the client sid: The ID of the validation session mxid: The MXID to bind the 3PID to id_server: The domain of the identity server to query id_access_token: The access token to authenticate to the identity server with, if necessary. Required if use_v2 is true use_v2: Whether to use v2 Identity Service API endpoints. Defaults to True Raises: SynapseError: On any of the following conditions - the supplied id_server is not a valid identity server name - we failed to contact the supplied identity server Returns: The response from the identity server """ logger.debug("Proxying threepid bind request for %s to %s", mxid, id_server) # If an id_access_token is not supplied, force usage of v1 if id_access_token is None: use_v2 = False if not valid_id_server_location(id_server): raise SynapseError( 400, "id_server must be a valid hostname with optional port and path components", ) # Decide which API endpoint URLs to use headers = {} bind_data = {"sid": sid, "client_secret": client_secret, "mxid": mxid} if use_v2: bind_url = "https://%s/_matrix/identity/v2/3pid/bind" % (id_server,) headers["Authorization"] = create_id_access_token_header(id_access_token) # type: ignore else: bind_url = "https://%s/_matrix/identity/api/v1/3pid/bind" % (id_server,) try: # Use the blacklisting http client as this call is only to identity servers # provided by a client data = await self.blacklisting_http_client.post_json_get_json( bind_url, bind_data, headers=headers ) # Remember where we bound the threepid await self.store.add_user_bound_threepid( user_id=mxid, medium=data["medium"], address=data["address"], id_server=id_server, ) return data except HttpResponseException as e: if e.code != 404 or not use_v2: logger.error("3PID bind failed with Matrix error: %r", e) raise e.to_synapse_error() except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except CodeMessageException as e: data = json_decoder.decode(e.msg) # XXX WAT? return data logger.info("Got 404 when POSTing JSON %s, falling back to v1 URL", bind_url) res = await self.bind_threepid( client_secret, sid, mxid, id_server, id_access_token, use_v2=False ) return res async def try_unbind_threepid(self, mxid: str, threepid: dict) -> bool: """Attempt to remove a 3PID from an identity server, or if one is not provided, all identity servers we're aware the binding is present on Args: mxid: Matrix user ID of binding to be removed threepid: Dict with medium & address of binding to be removed, and an optional id_server. Raises: SynapseError: If we failed to contact the identity server Returns: True on success, otherwise False if the identity server doesn't support unbinding (or no identity server found to contact). """ if threepid.get("id_server"): id_servers = [threepid["id_server"]] else: id_servers = await self.store.get_id_servers_user_bound( user_id=mxid, medium=threepid["medium"], address=threepid["address"] ) # We don't know where to unbind, so we don't have a choice but to return if not id_servers: return False changed = True for id_server in id_servers: changed &= await self.try_unbind_threepid_with_id_server( mxid, threepid, id_server ) return changed async def try_unbind_threepid_with_id_server( self, mxid: str, threepid: dict, id_server: str ) -> bool: """Removes a binding from an identity server Args: mxid: Matrix user ID of binding to be removed threepid: Dict with medium & address of binding to be removed id_server: Identity server to unbind from Raises: SynapseError: On any of the following conditions - the supplied id_server is not a valid identity server name - we failed to contact the supplied identity server Returns: True on success, otherwise False if the identity server doesn't support unbinding """ if not valid_id_server_location(id_server): raise SynapseError( 400, "id_server must be a valid hostname with optional port and path components", ) url = "https://%s/_matrix/identity/api/v1/3pid/unbind" % (id_server,) url_bytes = b"/_matrix/identity/api/v1/3pid/unbind" content = { "mxid": mxid, "threepid": {"medium": threepid["medium"], "address": threepid["address"]}, } # we abuse the federation http client to sign the request, but we have to send it # using the normal http client since we don't want the SRV lookup and want normal # 'browser-like' HTTPS. auth_headers = self.federation_http_client.build_auth_headers( destination=None, method=b"POST", url_bytes=url_bytes, content=content, destination_is=id_server.encode("ascii"), ) headers = {b"Authorization": auth_headers} try: # Use the blacklisting http client as this call is only to identity servers # provided by a client await self.blacklisting_http_client.post_json_get_json( url, content, headers ) changed = True except HttpResponseException as e: changed = False if e.code in (400, 404, 501): # The remote server probably doesn't support unbinding (yet) logger.warning("Received %d response while unbinding threepid", e.code) else: logger.error("Failed to unbind threepid on identity server: %s", e) raise SynapseError(500, "Failed to contact identity server") except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") await self.store.remove_user_bound_threepid( user_id=mxid, medium=threepid["medium"], address=threepid["address"], id_server=id_server, ) return changed async def send_threepid_validation( self, email_address: str, client_secret: str, send_attempt: int, send_email_func: Callable[[str, str, str, str], Awaitable], next_link: Optional[str] = None, ) -> str: """Send a threepid validation email for password reset or registration purposes Args: email_address: The user's email address client_secret: The provided client secret send_attempt: Which send attempt this is send_email_func: A function that takes an email address, token, client_secret and session_id, sends an email and returns an Awaitable. next_link: The URL to redirect the user to after validation Returns: The new session_id upon success Raises: SynapseError is an error occurred when sending the email """ # Check that this email/client_secret/send_attempt combo is new or # greater than what we've seen previously session = await self.store.get_threepid_validation_session( "email", client_secret, address=email_address, validated=False ) # Check to see if a session already exists and that it is not yet # marked as validated if session and session.get("validated_at") is None: session_id = session["session_id"] last_send_attempt = session["last_send_attempt"] # Check that the send_attempt is higher than previous attempts if send_attempt <= last_send_attempt: # If not, just return a success without sending an email return session_id else: # An non-validated session does not exist yet. # Generate a session id session_id = random_string(16) if next_link: # Manipulate the next_link to add the sid, because the caller won't get # it until we send a response, by which time we've sent the mail. if "?" in next_link: next_link += "&" else: next_link += "?" next_link += "sid=" + urllib.parse.quote(session_id) # Generate a new validation token token = random_string(32) # Send the mail with the link containing the token, client_secret # and session_id try: await send_email_func(email_address, token, client_secret, session_id) except Exception: logger.exception( "Error sending threepid validation email to %s", email_address ) raise SynapseError(500, "An error was encountered when sending the email") token_expires = ( self.hs.get_clock().time_msec() + self.hs.config.email.email_validation_token_lifetime ) await self.store.start_or_continue_validation_session( "email", email_address, session_id, client_secret, send_attempt, next_link, token, token_expires, ) return session_id async def requestEmailToken( self, id_server: str, email: str, client_secret: str, send_attempt: int, next_link: Optional[str] = None, ) -> JsonDict: """ Request an external server send an email on our behalf for the purposes of threepid validation. Args: id_server: The identity server to proxy to email: The email to send the message to client_secret: The unique client_secret sends by the user send_attempt: Which attempt this is next_link: A link to redirect the user to once they submit the token Returns: The json response body from the server """ params = { "email": email, "client_secret": client_secret, "send_attempt": send_attempt, } if next_link: params["next_link"] = next_link try: data = await self.http_client.post_json_get_json( id_server + "/_matrix/identity/api/v1/validate/email/requestToken", params, ) return data except HttpResponseException as e: logger.info("Proxied requestToken failed: %r", e) raise e.to_synapse_error() except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") async def requestMsisdnToken( self, id_server: str, country: str, phone_number: str, client_secret: str, send_attempt: int, next_link: Optional[str] = None, ) -> JsonDict: """ Request an external server send an SMS message on our behalf for the purposes of threepid validation. Args: id_server: The identity server to proxy to country: The country code of the phone number phone_number: The number to send the message to client_secret: The unique client_secret sends by the user send_attempt: Which attempt this is next_link: A link to redirect the user to once they submit the token Returns: The json response body from the server """ params = { "country": country, "phone_number": phone_number, "client_secret": client_secret, "send_attempt": send_attempt, } if next_link: params["next_link"] = next_link try: data = await self.http_client.post_json_get_json( id_server + "/_matrix/identity/api/v1/validate/msisdn/requestToken", params, ) except HttpResponseException as e: logger.info("Proxied requestToken failed: %r", e) raise e.to_synapse_error() except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") # we need to tell the client to send the token back to us, since it doesn't # otherwise know where to send it, so add submit_url response parameter # (see also MSC2078) data["submit_url"] = ( self.hs.config.server.public_baseurl + "_matrix/client/unstable/add_threepid/msisdn/submit_token" ) return data async def validate_threepid_session( self, client_secret: str, sid: str ) -> Optional[JsonDict]: """Validates a threepid session with only the client secret and session ID Tries validating against any configured account_threepid_delegates as well as locally. Args: client_secret: A secret provided by the client sid: The ID of the session Returns: The json response if validation was successful, otherwise None """ # XXX: We shouldn't need to keep wrapping and unwrapping this value threepid_creds = {"client_secret": client_secret, "sid": sid} # We don't actually know which medium this 3PID is. Thus we first assume it's email, # and if validation fails we try msisdn validation_session = None # Try to validate as email if self.hs.config.email.threepid_behaviour_email == ThreepidBehaviour.REMOTE: # Remote emails will only be used if a valid identity server is provided. assert ( self.hs.config.registration.account_threepid_delegate_email is not None ) # Ask our delegated email identity server validation_session = await self.threepid_from_creds( self.hs.config.registration.account_threepid_delegate_email, threepid_creds, ) elif self.hs.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: # Get a validated session matching these details validation_session = await self.store.get_threepid_validation_session( "email", client_secret, sid=sid, validated=True ) if validation_session: return validation_session # Try to validate as msisdn if self.hs.config.registration.account_threepid_delegate_msisdn: # Ask our delegated msisdn identity server validation_session = await self.threepid_from_creds( self.hs.config.registration.account_threepid_delegate_msisdn, threepid_creds, ) return validation_session async def proxy_msisdn_submit_token( self, id_server: str, client_secret: str, sid: str, token: str ) -> JsonDict: """Proxy a POST submitToken request to an identity server for verification purposes Args: id_server: The identity server URL to contact client_secret: Secret provided by the client sid: The ID of the session token: The verification token Raises: SynapseError: If we failed to contact the identity server Returns: The response dict from the identity server """ body = {"client_secret": client_secret, "sid": sid, "token": token} try: return await self.http_client.post_json_get_json( id_server + "/_matrix/identity/api/v1/validate/msisdn/submitToken", body, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except HttpResponseException as e: logger.warning("Error contacting msisdn account_threepid_delegate: %s", e) raise SynapseError(400, "Error contacting the identity server") async def lookup_3pid( self, id_server: str, medium: str, address: str, id_access_token: Optional[str] = None, ) -> Optional[str]: """Looks up a 3pid in the passed identity server. Args: id_server: The server name (including port, if required) of the identity server to use. medium: The type of the third party identifier (e.g. "email"). address: The third party identifier (e.g. "foo@example.com"). id_access_token: The access token to authenticate to the identity server with Returns: the matrix ID of the 3pid, or None if it is not recognized. """ if id_access_token is not None: try: results = await self._lookup_3pid_v2( id_server, id_access_token, medium, address ) return results except Exception as e: # Catch HttpResponseExcept for a non-200 response code # Check if this identity server does not know about v2 lookups if isinstance(e, HttpResponseException) and e.code == 404: # This is an old identity server that does not yet support v2 lookups logger.warning( "Attempted v2 lookup on v1 identity server %s. Falling " "back to v1", id_server, ) else: logger.warning("Error when looking up hashing details: %s", e) return None return await self._lookup_3pid_v1(id_server, medium, address) async def _lookup_3pid_v1( self, id_server: str, medium: str, address: str ) -> Optional[str]: """Looks up a 3pid in the passed identity server using v1 lookup. Args: id_server: The server name (including port, if required) of the identity server to use. medium: The type of the third party identifier (e.g. "email"). address: The third party identifier (e.g. "foo@example.com"). Returns: the matrix ID of the 3pid, or None if it is not recognized. """ try: data = await self.blacklisting_http_client.get_json( "%s%s/_matrix/identity/api/v1/lookup" % (id_server_scheme, id_server), {"medium": medium, "address": address}, ) if "mxid" in data: # note: we used to verify the identity server's signature here, but no longer # require or validate it. See the following for context: # https://github.com/matrix-org/synapse/issues/5253#issuecomment-666246950 return data["mxid"] except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except OSError as e: logger.warning("Error from v1 identity server lookup: %s" % (e,)) return None async def _lookup_3pid_v2( self, id_server: str, id_access_token: str, medium: str, address: str ) -> Optional[str]: """Looks up a 3pid in the passed identity server using v2 lookup. Args: id_server: The server name (including port, if required) of the identity server to use. id_access_token: The access token to authenticate to the identity server with medium: The type of the third party identifier (e.g. "email"). address: The third party identifier (e.g. "foo@example.com"). Returns: the matrix ID of the 3pid, or None if it is not recognised. """ # Check what hashing details are supported by this identity server try: hash_details = await self.blacklisting_http_client.get_json( "%s%s/_matrix/identity/v2/hash_details" % (id_server_scheme, id_server), {"access_token": id_access_token}, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") if not isinstance(hash_details, dict): logger.warning( "Got non-dict object when checking hash details of %s%s: %s", id_server_scheme, id_server, hash_details, ) raise SynapseError( 400, "Non-dict object from %s%s during v2 hash_details request: %s" % (id_server_scheme, id_server, hash_details), ) # Extract information from hash_details supported_lookup_algorithms = hash_details.get("algorithms") lookup_pepper = hash_details.get("lookup_pepper") if ( not supported_lookup_algorithms or not isinstance(supported_lookup_algorithms, list) or not lookup_pepper or not isinstance(lookup_pepper, str) ): raise SynapseError( 400, "Invalid hash details received from identity server %s%s: %s" % (id_server_scheme, id_server, hash_details), ) # Check if any of the supported lookup algorithms are present if LookupAlgorithm.SHA256 in supported_lookup_algorithms: # Perform a hashed lookup lookup_algorithm = LookupAlgorithm.SHA256 # Hash address, medium and the pepper with sha256 to_hash = "%s %s %s" % (address, medium, lookup_pepper) lookup_value = sha256_and_url_safe_base64(to_hash) elif LookupAlgorithm.NONE in supported_lookup_algorithms: # Perform a non-hashed lookup lookup_algorithm = LookupAlgorithm.NONE # Combine together plaintext address and medium lookup_value = "%s %s" % (address, medium) else: logger.warning( "None of the provided lookup algorithms of %s are supported: %s", id_server, supported_lookup_algorithms, ) raise SynapseError( 400, "Provided identity server does not support any v2 lookup " "algorithms that this homeserver supports.", ) # Authenticate with identity server given the access token from the client headers = {"Authorization": create_id_access_token_header(id_access_token)} try: lookup_results = await self.blacklisting_http_client.post_json_get_json( "%s%s/_matrix/identity/v2/lookup" % (id_server_scheme, id_server), { "addresses": [lookup_value], "algorithm": lookup_algorithm, "pepper": lookup_pepper, }, headers=headers, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except Exception as e: logger.warning("Error when performing a v2 3pid lookup: %s", e) raise SynapseError( 500, "Unknown error occurred during identity server lookup" ) # Check for a mapping from what we looked up to an MXID if "mappings" not in lookup_results or not isinstance( lookup_results["mappings"], dict ): logger.warning("No results from 3pid lookup") return None # Return the MXID if it's available, or None otherwise mxid = lookup_results["mappings"].get(lookup_value) return mxid async def ask_id_server_for_third_party_invite( self, requester: Requester, id_server: str, medium: str, address: str, room_id: str, inviter_user_id: str, room_alias: str, room_avatar_url: str, room_join_rules: str, room_name: str, room_type: Optional[str], inviter_display_name: str, inviter_avatar_url: str, id_access_token: Optional[str] = None, ) -> Tuple[str, List[Dict[str, str]], Dict[str, str], str]: """ Asks an identity server for a third party invite. Args: requester id_server: hostname + optional port for the identity server. medium: The literal string "email". address: The third party address being invited. room_id: The ID of the room to which the user is invited. inviter_user_id: The user ID of the inviter. room_alias: An alias for the room, for cosmetic notifications. room_avatar_url: The URL of the room's avatar, for cosmetic notifications. room_join_rules: The join rules of the email (e.g. "public"). room_name: The m.room.name of the room. room_type: The type of the room from its m.room.create event (e.g "m.space"). inviter_display_name: The current display name of the inviter. inviter_avatar_url: The URL of the inviter's avatar. id_access_token (str|None): The access token to authenticate to the identity server with Returns: A tuple containing: token: The token which must be signed to prove authenticity. public_keys ([{"public_key": str, "key_validity_url": str}]): public_key is a base64-encoded ed25519 public key. fallback_public_key: One element from public_keys. display_name: A user-friendly name to represent the invited user. """ invite_config = { "medium": medium, "address": address, "room_id": room_id, "room_alias": room_alias, "room_avatar_url": room_avatar_url, "room_join_rules": room_join_rules, "room_name": room_name, "sender": inviter_user_id, "sender_display_name": inviter_display_name, "sender_avatar_url": inviter_avatar_url, } if room_type is not None: invite_config["room_type"] = room_type # TODO The unstable field is deprecated and should be removed in the future. invite_config["org.matrix.msc3288.room_type"] = room_type # If a custom web client location is available, include it in the request. if self._web_client_location: invite_config["org.matrix.web_client_location"] = self._web_client_location # Add the identity service access token to the JSON body and use the v2 # Identity Service endpoints if id_access_token is present data = None base_url = "%s%s/_matrix/identity" % (id_server_scheme, id_server) if id_access_token: key_validity_url = "%s%s/_matrix/identity/v2/pubkey/isvalid" % ( id_server_scheme, id_server, ) # Attempt a v2 lookup url = base_url + "/v2/store-invite" try: data = await self.blacklisting_http_client.post_json_get_json( url, invite_config, {"Authorization": create_id_access_token_header(id_access_token)}, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except HttpResponseException as e: if e.code != 404: logger.info("Failed to POST %s with JSON: %s", url, e) raise e if data is None: key_validity_url = "%s%s/_matrix/identity/api/v1/pubkey/isvalid" % ( id_server_scheme, id_server, ) url = base_url + "/api/v1/store-invite" try: data = await self.blacklisting_http_client.post_json_get_json( url, invite_config ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except HttpResponseException as e: logger.warning( "Error trying to call /store-invite on %s%s: %s", id_server_scheme, id_server, e, ) if data is None: # Some identity servers may only support application/x-www-form-urlencoded # types. This is especially true with old instances of Sydent, see # https://github.com/matrix-org/sydent/pull/170 try: data = await self.blacklisting_http_client.post_urlencoded_get_json( url, invite_config ) except HttpResponseException as e: logger.warning( "Error calling /store-invite on %s%s with fallback " "encoding: %s", id_server_scheme, id_server, e, ) raise e # TODO: Check for success token = data["token"] public_keys = data.get("public_keys", []) if "public_key" in data: fallback_public_key = { "public_key": data["public_key"], "key_validity_url": key_validity_url, } else: fallback_public_key = public_keys[0] if not public_keys: public_keys.append(fallback_public_key) display_name = data["display_name"] return token, public_keys, fallback_public_key, display_name def create_id_access_token_header(id_access_token: str) -> List[str]: """Create an Authorization header for passing to SimpleHttpClient as the header value of an HTTP request. Args: id_access_token: An identity server access token. Returns: The ascii-encoded bearer token encased in a list. """ # Prefix with Bearer bearer_token = "Bearer %s" % id_access_token # Encode headers to standard ascii bearer_token.encode("ascii") # Return as a list as that's how SimpleHttpClient takes header values return [bearer_token] class LookupAlgorithm: """ Supported hashing algorithms when performing a 3PID lookup. SHA256 - Hashing an (address, medium, pepper) combo with sha256, then url-safe base64 encoding NONE - Not performing any hashing. Simply sending an (address, medium) combo in plaintext """ SHA256 = "sha256" NONE = "none" synapse-1.53.0/synapse/handlers/initial_sync.py000066400000000000000000000422031420514467300216120ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, List, Optional, Tuple, cast from synapse.api.constants import EduTypes, EventTypes, Membership from synapse.api.errors import SynapseError from synapse.events import EventBase from synapse.events.validator import EventValidator from synapse.handlers.presence import format_user_presence_state from synapse.handlers.receipts import ReceiptEventSource from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.storage.roommember import RoomsForUser from synapse.streams.config import PaginationConfig from synapse.types import ( JsonDict, Requester, RoomStreamToken, StateMap, StreamToken, UserID, ) from synapse.util import unwrapFirstError from synapse.util.async_helpers import concurrently_execute, gather_results from synapse.util.caches.response_cache import ResponseCache from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class InitialSyncHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.state_handler = hs.get_state_handler() self.hs = hs self.state = hs.get_state_handler() self.clock = hs.get_clock() self.validator = EventValidator() self.snapshot_cache: ResponseCache[ Tuple[ str, Optional[StreamToken], Optional[StreamToken], str, Optional[int], bool, bool, ] ] = ResponseCache(hs.get_clock(), "initial_sync_cache") self._event_serializer = hs.get_event_client_serializer() self.storage = hs.get_storage() self.state_store = self.storage.state async def snapshot_all_rooms( self, user_id: str, pagin_config: PaginationConfig, as_client_event: bool = True, include_archived: bool = False, ) -> JsonDict: """Retrieve a snapshot of all rooms the user is invited or has joined. This snapshot may include messages for all rooms where the user is joined, depending on the pagination config. Args: user_id: The ID of the user making the request. pagin_config: The pagination config used to determine how many messages *PER ROOM* to return. as_client_event: True to get events in client-server format. include_archived: True to get rooms that the user has left Returns: A JsonDict with the same format as the response to `/intialSync` API """ key = ( user_id, pagin_config.from_token, pagin_config.to_token, pagin_config.direction, pagin_config.limit, as_client_event, include_archived, ) return await self.snapshot_cache.wrap( key, self._snapshot_all_rooms, user_id, pagin_config, as_client_event, include_archived, ) async def _snapshot_all_rooms( self, user_id: str, pagin_config: PaginationConfig, as_client_event: bool = True, include_archived: bool = False, ) -> JsonDict: memberships = [Membership.INVITE, Membership.JOIN] if include_archived: memberships.append(Membership.LEAVE) room_list = await self.store.get_rooms_for_local_user_where_membership_is( user_id=user_id, membership_list=memberships ) user = UserID.from_string(user_id) rooms_ret = [] now_token = self.hs.get_event_sources().get_current_token() presence_stream = self.hs.get_event_sources().sources.presence presence, _ = await presence_stream.get_new_events( user, from_key=None, include_offline=False ) joined_rooms = [r.room_id for r in room_list if r.membership == Membership.JOIN] receipt = await self.store.get_linearized_receipts_for_rooms( joined_rooms, to_key=int(now_token.receipt_key), ) if self.hs.config.experimental.msc2285_enabled: receipt = ReceiptEventSource.filter_out_hidden(receipt, user_id) tags_by_room = await self.store.get_tags_for_user(user_id) account_data, account_data_by_room = await self.store.get_account_data_for_user( user_id ) public_room_ids = await self.store.get_public_room_ids() limit = pagin_config.limit if limit is None: limit = 10 async def handle_room(event: RoomsForUser) -> None: d: JsonDict = { "room_id": event.room_id, "membership": event.membership, "visibility": ( "public" if event.room_id in public_room_ids else "private" ), } if event.membership == Membership.INVITE: time_now = self.clock.time_msec() d["inviter"] = event.sender invite_event = await self.store.get_event(event.event_id) d["invite"] = self._event_serializer.serialize_event( invite_event, time_now, as_client_event=as_client_event, ) rooms_ret.append(d) if event.membership not in (Membership.JOIN, Membership.LEAVE): return try: if event.membership == Membership.JOIN: room_end_token = now_token.room_key deferred_room_state = run_in_background( self.state_handler.get_current_state, event.room_id ) elif event.membership == Membership.LEAVE: room_end_token = RoomStreamToken( None, event.stream_ordering, ) deferred_room_state = run_in_background( self.state_store.get_state_for_events, [event.event_id] ).addCallback( lambda states: cast(StateMap[EventBase], states[event.event_id]) ) (messages, token), current_state = await make_deferred_yieldable( gather_results( ( run_in_background( self.store.get_recent_events_for_room, event.room_id, limit=limit, end_token=room_end_token, ), deferred_room_state, ) ) ).addErrback(unwrapFirstError) messages = await filter_events_for_client( self.storage, user_id, messages ) start_token = now_token.copy_and_replace("room_key", token) end_token = now_token.copy_and_replace("room_key", room_end_token) time_now = self.clock.time_msec() d["messages"] = { "chunk": ( self._event_serializer.serialize_events( messages, time_now=time_now, as_client_event=as_client_event, ) ), "start": await start_token.to_string(self.store), "end": await end_token.to_string(self.store), } d["state"] = self._event_serializer.serialize_events( current_state.values(), time_now=time_now, as_client_event=as_client_event, ) account_data_events = [] tags = tags_by_room.get(event.room_id) if tags: account_data_events.append( {"type": "m.tag", "content": {"tags": tags}} ) account_data = account_data_by_room.get(event.room_id, {}) for account_data_type, content in account_data.items(): account_data_events.append( {"type": account_data_type, "content": content} ) d["account_data"] = account_data_events except Exception: logger.exception("Failed to get snapshot") await concurrently_execute(handle_room, room_list, 10) account_data_events = [] for account_data_type, content in account_data.items(): account_data_events.append({"type": account_data_type, "content": content}) now = self.clock.time_msec() ret = { "rooms": rooms_ret, "presence": [ { "type": "m.presence", "content": format_user_presence_state(event, now), } for event in presence ], "account_data": account_data_events, "receipts": receipt, "end": await now_token.to_string(self.store), } return ret async def room_initial_sync( self, requester: Requester, room_id: str, pagin_config: PaginationConfig ) -> JsonDict: """Capture the a snapshot of a room. If user is currently a member of the room this will be what is currently in the room. If the user left the room this will be what was in the room when they left. Args: requester: The user to get a snapshot for. room_id: The room to get a snapshot of. pagin_config: The pagination config used to determine how many messages to return. Raises: AuthError if the user wasn't in the room. Returns: A JSON serialisable dict with the snapshot of the room. """ blocked = await self.store.is_room_blocked(room_id) if blocked: raise SynapseError(403, "This room has been blocked on this server") user_id = requester.user.to_string() ( membership, member_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, user_id, allow_departed_users=True, ) is_peeking = member_event_id is None if membership == Membership.JOIN: result = await self._room_initial_sync_joined( user_id, room_id, pagin_config, membership, is_peeking ) elif membership == Membership.LEAVE: # The member_event_id will always be available if membership is set # to leave. assert member_event_id result = await self._room_initial_sync_parted( user_id, room_id, pagin_config, membership, member_event_id, is_peeking ) account_data_events = [] tags = await self.store.get_tags_for_room(user_id, room_id) if tags: account_data_events.append({"type": "m.tag", "content": {"tags": tags}}) account_data = await self.store.get_account_data_for_room(user_id, room_id) for account_data_type, content in account_data.items(): account_data_events.append({"type": account_data_type, "content": content}) result["account_data"] = account_data_events return result async def _room_initial_sync_parted( self, user_id: str, room_id: str, pagin_config: PaginationConfig, membership: str, member_event_id: str, is_peeking: bool, ) -> JsonDict: room_state = await self.state_store.get_state_for_event(member_event_id) limit = pagin_config.limit if pagin_config else None if limit is None: limit = 10 leave_position = await self.store.get_position_for_event(member_event_id) stream_token = leave_position.to_room_stream_token() messages, token = await self.store.get_recent_events_for_room( room_id, limit=limit, end_token=stream_token ) messages = await filter_events_for_client( self.storage, user_id, messages, is_peeking=is_peeking ) start_token = StreamToken.START.copy_and_replace("room_key", token) end_token = StreamToken.START.copy_and_replace("room_key", stream_token) time_now = self.clock.time_msec() return { "membership": membership, "room_id": room_id, "messages": { "chunk": ( # Don't bundle aggregations as this is a deprecated API. self._event_serializer.serialize_events(messages, time_now) ), "start": await start_token.to_string(self.store), "end": await end_token.to_string(self.store), }, "state": ( # Don't bundle aggregations as this is a deprecated API. self._event_serializer.serialize_events(room_state.values(), time_now) ), "presence": [], "receipts": [], } async def _room_initial_sync_joined( self, user_id: str, room_id: str, pagin_config: PaginationConfig, membership: str, is_peeking: bool, ) -> JsonDict: current_state = await self.state.get_current_state(room_id=room_id) # TODO: These concurrently time_now = self.clock.time_msec() # Don't bundle aggregations as this is a deprecated API. state = self._event_serializer.serialize_events( current_state.values(), time_now ) now_token = self.hs.get_event_sources().get_current_token() limit = pagin_config.limit if pagin_config else None if limit is None: limit = 10 room_members = [ m for m in current_state.values() if m.type == EventTypes.Member and m.content["membership"] == Membership.JOIN ] presence_handler = self.hs.get_presence_handler() async def get_presence() -> List[JsonDict]: # If presence is disabled, return an empty list if not self.hs.config.server.use_presence: return [] states = await presence_handler.get_states( [m.user_id for m in room_members] ) return [ { "type": EduTypes.Presence, "content": format_user_presence_state(s, time_now), } for s in states ] async def get_receipts() -> List[JsonDict]: receipts = await self.store.get_linearized_receipts_for_room( room_id, to_key=now_token.receipt_key ) if not receipts: return [] if self.hs.config.experimental.msc2285_enabled: receipts = ReceiptEventSource.filter_out_hidden(receipts, user_id) return receipts presence, receipts, (messages, token) = await make_deferred_yieldable( gather_results( ( run_in_background(get_presence), run_in_background(get_receipts), run_in_background( self.store.get_recent_events_for_room, room_id, limit=limit, end_token=now_token.room_key, ), ), consumeErrors=True, ).addErrback(unwrapFirstError) ) messages = await filter_events_for_client( self.storage, user_id, messages, is_peeking=is_peeking ) start_token = now_token.copy_and_replace("room_key", token) end_token = now_token time_now = self.clock.time_msec() ret = { "room_id": room_id, "messages": { "chunk": ( # Don't bundle aggregations as this is a deprecated API. self._event_serializer.serialize_events(messages, time_now) ), "start": await start_token.to_string(self.store), "end": await end_token.to_string(self.store), }, "state": state, "presence": presence, "receipts": receipts, } if not is_peeking: ret["membership"] = membership return ret synapse-1.53.0/synapse/handlers/message.py000066400000000000000000002227601420514467300205610ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2017-2018 New Vector Ltd # Copyright 2019-2020 The Matrix.org Foundation C.I.C. # Copyrignt 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from http import HTTPStatus from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, Tuple from canonicaljson import encode_canonical_json from twisted.internet.interfaces import IDelayedCall from synapse import event_auth from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, Membership, RelationTypes, UserTypes, ) from synapse.api.errors import ( AuthError, Codes, ConsentNotGivenError, NotFoundError, ShadowBanError, SynapseError, UnsupportedRoomVersionError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersions from synapse.api.urls import ConsentURIBuilder from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase from synapse.events.builder import EventBuilder from synapse.events.snapshot import EventContext from synapse.events.validator import EventValidator from synapse.handlers.directory import DirectoryHandler from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.http.send_event import ReplicationSendEventRestServlet from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.storage.state import StateFilter from synapse.types import Requester, RoomAlias, StreamToken, UserID, create_requester from synapse.util import json_decoder, json_encoder, log_failure from synapse.util.async_helpers import Linearizer, gather_results, unwrapFirstError from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.metrics import measure_func from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.events.third_party_rules import ThirdPartyEventRules from synapse.server import HomeServer logger = logging.getLogger(__name__) class MessageHandler: """Contains some read only APIs to get state about a room""" def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.clock = hs.get_clock() self.state = hs.get_state_handler() self.store = hs.get_datastore() self.storage = hs.get_storage() self.state_store = self.storage.state self._event_serializer = hs.get_event_client_serializer() self._ephemeral_events_enabled = hs.config.server.enable_ephemeral_messages # The scheduled call to self._expire_event. None if no call is currently # scheduled. self._scheduled_expiry: Optional[IDelayedCall] = None if not hs.config.worker.worker_app: run_as_background_process( "_schedule_next_expiry", self._schedule_next_expiry ) async def get_room_data( self, user_id: str, room_id: str, event_type: str, state_key: str, ) -> Optional[EventBase]: """Get data from a room. Args: user_id room_id event_type state_key Returns: The path data content. Raises: SynapseError or AuthError if the user is not in the room """ ( membership, membership_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, user_id, allow_departed_users=True ) if membership == Membership.JOIN: data = await self.state.get_current_state(room_id, event_type, state_key) elif membership == Membership.LEAVE: key = (event_type, state_key) # If the membership is not JOIN, then the event ID should exist. assert ( membership_event_id is not None ), "check_user_in_room_or_world_readable returned invalid data" room_state = await self.state_store.get_state_for_events( [membership_event_id], StateFilter.from_types([key]) ) data = room_state[membership_event_id].get(key) else: # check_user_in_room_or_world_readable, if it doesn't raise an AuthError, should # only ever return a Membership.JOIN/LEAVE object # # Safeguard in case it returned something else logger.error( "Attempted to retrieve data from a room for a user that has never been in it. " "This should not have happened." ) raise SynapseError(403, "User not in room", errcode=Codes.FORBIDDEN) return data async def get_state_events( self, user_id: str, room_id: str, state_filter: Optional[StateFilter] = None, at_token: Optional[StreamToken] = None, is_guest: bool = False, ) -> List[dict]: """Retrieve all state events for a given room. If the user is joined to the room then return the current state. If the user has left the room return the state events from when they left. If an explicit 'at' parameter is passed, return the state events as of that event, if visible. Args: user_id: The user requesting state events. room_id: The room ID to get all state events from. state_filter: The state filter used to fetch state from the database. at_token: the stream token of the at which we are requesting the stats. If the user is not allowed to view the state as of that stream token, we raise a 403 SynapseError. If None, returns the current state based on the current_state_events table. is_guest: whether this user is a guest Returns: A list of dicts representing state events. [{}, {}, {}] Raises: NotFoundError (404) if the at token does not yield an event AuthError (403) if the user doesn't have permission to view members of this room. """ state_filter = state_filter or StateFilter.all() if at_token: # FIXME this claims to get the state at a stream position, but # get_recent_events_for_room operates by topo ordering. This therefore # does not reliably give you the state at the given stream position. # (https://github.com/matrix-org/synapse/issues/3305) last_events, _ = await self.store.get_recent_events_for_room( room_id, end_token=at_token.room_key, limit=1 ) if not last_events: raise NotFoundError("Can't find event for token %s" % (at_token,)) last_event = last_events[0] # check whether the user is in the room at that time to determine # whether they should be treated as peeking. state_map = await self.state_store.get_state_for_event( last_event.event_id, StateFilter.from_types([(EventTypes.Member, user_id)]), ) joined = False membership_event = state_map.get((EventTypes.Member, user_id)) if membership_event: joined = membership_event.membership == Membership.JOIN is_peeking = not joined visible_events = await filter_events_for_client( self.storage, user_id, last_events, filter_send_to_client=False, is_peeking=is_peeking, ) if visible_events: room_state_events = await self.state_store.get_state_for_events( [last_event.event_id], state_filter=state_filter ) room_state: Mapping[Any, EventBase] = room_state_events[ last_event.event_id ] else: raise AuthError( 403, "User %s not allowed to view events in room %s at token %s" % (user_id, room_id, at_token), ) else: ( membership, membership_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, user_id, allow_departed_users=True ) if membership == Membership.JOIN: state_ids = await self.store.get_filtered_current_state_ids( room_id, state_filter=state_filter ) room_state = await self.store.get_events(state_ids.values()) elif membership == Membership.LEAVE: # If the membership is not JOIN, then the event ID should exist. assert ( membership_event_id is not None ), "check_user_in_room_or_world_readable returned invalid data" room_state_events = await self.state_store.get_state_for_events( [membership_event_id], state_filter=state_filter ) room_state = room_state_events[membership_event_id] now = self.clock.time_msec() events = self._event_serializer.serialize_events(room_state.values(), now) return events async def get_joined_members(self, requester: Requester, room_id: str) -> dict: """Get all the joined members in the room and their profile information. If the user has left the room return the state events from when they left. Args: requester: The user requesting state events. room_id: The room ID to get all state events from. Returns: A dict of user_id to profile info """ user_id = requester.user.to_string() if not requester.app_service: # We check AS auth after fetching the room membership, as it # requires us to pull out all joined members anyway. membership, _ = await self.auth.check_user_in_room_or_world_readable( room_id, user_id, allow_departed_users=True ) if membership != Membership.JOIN: raise NotImplementedError( "Getting joined members after leaving is not implemented" ) users_with_profile = await self.store.get_users_in_room_with_profiles(room_id) # If this is an AS, double check that they are allowed to see the members. # This can either be because the AS user is in the room or because there # is a user in the room that the AS is "interested in" if requester.app_service and user_id not in users_with_profile: for uid in users_with_profile: if requester.app_service.is_interested_in_user(uid): break else: # Loop fell through, AS has no interested users in room raise AuthError(403, "Appservice not in room") return { user_id: { "avatar_url": profile.avatar_url, "display_name": profile.display_name, } for user_id, profile in users_with_profile.items() } def maybe_schedule_expiry(self, event: EventBase) -> None: """Schedule the expiry of an event if there's not already one scheduled, or if the one running is for an event that will expire after the provided timestamp. This function needs to invalidate the event cache, which is only possible on the master process, and therefore needs to be run on there. Args: event: The event to schedule the expiry of. """ expiry_ts = event.content.get(EventContentFields.SELF_DESTRUCT_AFTER) if not isinstance(expiry_ts, int) or event.is_state(): return # _schedule_expiry_for_event won't actually schedule anything if there's already # a task scheduled for a timestamp that's sooner than the provided one. self._schedule_expiry_for_event(event.event_id, expiry_ts) async def _schedule_next_expiry(self) -> None: """Retrieve the ID and the expiry timestamp of the next event to be expired, and schedule an expiry task for it. If there's no event left to expire, set _expiry_scheduled to None so that a future call to save_expiry_ts can schedule a new expiry task. """ # Try to get the expiry timestamp of the next event to expire. res = await self.store.get_next_event_to_expire() if res: event_id, expiry_ts = res self._schedule_expiry_for_event(event_id, expiry_ts) def _schedule_expiry_for_event(self, event_id: str, expiry_ts: int) -> None: """Schedule an expiry task for the provided event if there's not already one scheduled at a timestamp that's sooner than the provided one. Args: event_id: The ID of the event to expire. expiry_ts: The timestamp at which to expire the event. """ if self._scheduled_expiry: # If the provided timestamp refers to a time before the scheduled time of the # next expiry task, cancel that task and reschedule it for this timestamp. next_scheduled_expiry_ts = self._scheduled_expiry.getTime() * 1000 if expiry_ts < next_scheduled_expiry_ts: self._scheduled_expiry.cancel() else: return # Figure out how many seconds we need to wait before expiring the event. now_ms = self.clock.time_msec() delay = (expiry_ts - now_ms) / 1000 # callLater doesn't support negative delays, so trim the delay to 0 if we're # in that case. if delay < 0: delay = 0 logger.info("Scheduling expiry for event %s in %.3fs", event_id, delay) self._scheduled_expiry = self.clock.call_later( delay, run_as_background_process, "_expire_event", self._expire_event, event_id, ) async def _expire_event(self, event_id: str) -> None: """Retrieve and expire an event that needs to be expired from the database. If the event doesn't exist in the database, log it and delete the expiry date from the database (so that we don't try to expire it again). """ assert self._ephemeral_events_enabled self._scheduled_expiry = None logger.info("Expiring event %s", event_id) try: # Expire the event if we know about it. This function also deletes the expiry # date from the database in the same database transaction. await self.store.expire_event(event_id) except Exception as e: logger.error("Could not expire event %s: %r", event_id, e) # Schedule the expiry of the next event to expire. await self._schedule_next_expiry() # The duration (in ms) after which rooms should be removed # `_rooms_to_exclude_from_dummy_event_insertion` (with the effect that we will try # to generate a dummy event for them once more) # _DUMMY_EVENT_ROOM_EXCLUSION_EXPIRY = 7 * 24 * 60 * 60 * 1000 class EventCreationHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self._event_auth_handler = hs.get_event_auth_handler() self.store = hs.get_datastore() self.storage = hs.get_storage() self.state = hs.get_state_handler() self.clock = hs.get_clock() self.validator = EventValidator() self.profile_handler = hs.get_profile_handler() self.event_builder_factory = hs.get_event_builder_factory() self.server_name = hs.hostname self.notifier = hs.get_notifier() self.config = hs.config self.require_membership_for_aliases = ( hs.config.server.require_membership_for_aliases ) self._events_shard_config = self.config.worker.events_shard_config self._instance_name = hs.get_instance_name() self.room_prejoin_state_types = self.hs.config.api.room_prejoin_state self.membership_types_to_include_profile_data_in = { Membership.JOIN, Membership.KNOCK, } if self.hs.config.server.include_profile_data_on_invite: self.membership_types_to_include_profile_data_in.add(Membership.INVITE) self.send_event = ReplicationSendEventRestServlet.make_client(hs) self.request_ratelimiter = hs.get_request_ratelimiter() # We arbitrarily limit concurrent event creation for a room to 5. # This is to stop us from diverging history *too* much. self.limiter = Linearizer(max_count=5, name="room_event_creation_limit") self.action_generator = hs.get_action_generator() self.spam_checker = hs.get_spam_checker() self.third_party_event_rules: "ThirdPartyEventRules" = ( self.hs.get_third_party_event_rules() ) self._block_events_without_consent_error = ( self.config.consent.block_events_without_consent_error ) # we need to construct a ConsentURIBuilder here, as it checks that the necessary # config options, but *only* if we have a configuration for which we are # going to need it. if self._block_events_without_consent_error: self._consent_uri_builder = ConsentURIBuilder(self.config) # Rooms which should be excluded from dummy insertion. (For instance, # those without local users who can send events into the room). # # map from room id to time-of-last-attempt. # self._rooms_to_exclude_from_dummy_event_insertion: Dict[str, int] = {} # The number of forward extremeities before a dummy event is sent. self._dummy_events_threshold = hs.config.server.dummy_events_threshold if ( self.config.worker.run_background_tasks and self.config.server.cleanup_extremities_with_dummy_events ): self.clock.looping_call( lambda: run_as_background_process( "send_dummy_events_to_fill_extremities", self._send_dummy_events_to_fill_extremities, ), 5 * 60 * 1000, ) self._message_handler = hs.get_message_handler() self._ephemeral_events_enabled = hs.config.server.enable_ephemeral_messages self._external_cache = hs.get_external_cache() # Stores the state groups we've recently added to the joined hosts # external cache. Note that the timeout must be significantly less than # the TTL on the external cache. self._external_cache_joined_hosts_updates: Optional[ExpiringCache] = None if self._external_cache.is_enabled(): self._external_cache_joined_hosts_updates = ExpiringCache( "_external_cache_joined_hosts_updates", self.clock, expiry_ms=30 * 60 * 1000, ) async def create_event( self, requester: Requester, event_dict: dict, txn_id: Optional[str] = None, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, require_consent: bool = True, outlier: bool = False, historical: bool = False, depth: Optional[int] = None, ) -> Tuple[EventBase, EventContext]: """ Given a dict from a client, create a new event. Creates an FrozenEvent object, filling out auth_events, prev_events, etc. Adds display names to Join membership events. Args: requester event_dict: An entire event txn_id allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases like MSC2716. prev_event_ids: the forward extremities to use as the prev_events for the new event. If None, they will be requested from the database. auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. If non-None, prev_event_ids must also be provided. require_consent: Whether to check if the requester has consented to the privacy policy. outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. historical: Indicates whether the message is being inserted back in time around some existing events. This is used to skip a few checks and mark the event as backfilled. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Raises: ResourceLimitError if server is blocked to some resource being exceeded Returns: Tuple of created event, Context """ await self.auth.check_auth_blocking(requester=requester) if event_dict["type"] == EventTypes.Create and event_dict["state_key"] == "": room_version_id = event_dict["content"]["room_version"] room_version_obj = KNOWN_ROOM_VERSIONS.get(room_version_id) if not room_version_obj: # this can happen if support is withdrawn for a room version raise UnsupportedRoomVersionError(room_version_id) else: try: room_version_obj = await self.store.get_room_version( event_dict["room_id"] ) except NotFoundError: raise AuthError(403, "Unknown room") builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) self.validator.validate_builder(builder) if builder.type == EventTypes.Member: membership = builder.content.get("membership", None) target = UserID.from_string(builder.state_key) if membership in self.membership_types_to_include_profile_data_in: # If event doesn't include a display name, add one. profile = self.profile_handler content = builder.content try: if "displayname" not in content: displayname = await profile.get_displayname(target) if displayname is not None: content["displayname"] = displayname if "avatar_url" not in content: avatar_url = await profile.get_avatar_url(target) if avatar_url is not None: content["avatar_url"] = avatar_url except Exception as e: logger.info( "Failed to get profile information for %r: %s", target, e ) is_exempt = await self._is_exempt_from_privacy_policy(builder, requester) if require_consent and not is_exempt: await self.assert_accepted_privacy_policy(requester) if requester.access_token_id is not None: builder.internal_metadata.token_id = requester.access_token_id if txn_id is not None: builder.internal_metadata.txn_id = txn_id builder.internal_metadata.outlier = outlier builder.internal_metadata.historical = historical event, context = await self.create_new_client_event( builder=builder, requester=requester, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, depth=depth, ) # In an ideal world we wouldn't need the second part of this condition. However, # this behaviour isn't spec'd yet, meaning we should be able to deactivate this # behaviour. Another reason is that this code is also evaluated each time a new # m.room.aliases event is created, which includes hitting a /directory route. # Therefore not including this condition here would render the similar one in # synapse.handlers.directory pointless. if builder.type == EventTypes.Aliases and self.require_membership_for_aliases: # Ideally we'd do the membership check in event_auth.check(), which # describes a spec'd algorithm for authenticating events received over # federation as well as those created locally. As of room v3, aliases events # can be created by users that are not in the room, therefore we have to # tolerate them in event_auth.check(). prev_state_ids = await context.get_prev_state_ids() prev_event_id = prev_state_ids.get((EventTypes.Member, event.sender)) prev_event = ( await self.store.get_event(prev_event_id, allow_none=True) if prev_event_id else None ) if not prev_event or prev_event.membership != Membership.JOIN: logger.warning( ( "Attempt to send `m.room.aliases` in room %s by user %s but" " membership is %s" ), event.room_id, event.sender, prev_event.membership if prev_event else None, ) raise AuthError( 403, "You must be in the room to create an alias for it" ) self.validator.validate_new(event, self.config) return event, context async def _is_exempt_from_privacy_policy( self, builder: EventBuilder, requester: Requester ) -> bool: """ "Determine if an event to be sent is exempt from having to consent to the privacy policy Args: builder: event being created requester: user requesting this event Returns: true if the event can be sent without the user consenting """ # the only thing the user can do is join the server notices room. if builder.type == EventTypes.Member: membership = builder.content.get("membership", None) if membership == Membership.JOIN: return await self._is_server_notices_room(builder.room_id) elif membership == Membership.LEAVE: # the user is always allowed to leave (but not kick people) return builder.state_key == requester.user.to_string() return False async def _is_server_notices_room(self, room_id: str) -> bool: if self.config.servernotices.server_notices_mxid is None: return False user_ids = await self.store.get_users_in_room(room_id) return self.config.servernotices.server_notices_mxid in user_ids async def assert_accepted_privacy_policy(self, requester: Requester) -> None: """Check if a user has accepted the privacy policy Called when the given user is about to do something that requires privacy consent. We see if the user is exempt and otherwise check that they have given consent. If they have not, a ConsentNotGiven error is raised. Args: requester: The user making the request Returns: Returns normally if the user has consented or is exempt Raises: ConsentNotGivenError: if the user has not given consent yet """ if self._block_events_without_consent_error is None: return # exempt AS users from needing consent if requester.app_service is not None: return user_id = requester.authenticated_entity if not user_id.startswith("@"): # The authenticated entity might not be a user, e.g. if it's the # server puppetting the user. return user = UserID.from_string(user_id) # exempt the system notices user if ( self.config.servernotices.server_notices_mxid is not None and user_id == self.config.servernotices.server_notices_mxid ): return u = await self.store.get_user_by_id(user_id) assert u is not None if u["user_type"] in (UserTypes.SUPPORT, UserTypes.BOT): # support and bot users are not required to consent return if u["appservice_id"] is not None: # users registered by an appservice are exempt return if u["consent_version"] == self.config.consent.user_consent_version: return consent_uri = self._consent_uri_builder.build_user_consent_uri(user.localpart) msg = self._block_events_without_consent_error % {"consent_uri": consent_uri} raise ConsentNotGivenError(msg=msg, consent_uri=consent_uri) async def deduplicate_state_event( self, event: EventBase, context: EventContext ) -> Optional[EventBase]: """ Checks whether event is in the latest resolved state in context. Args: event: The event to check for duplication. context: The event context. Returns: The previous version of the event is returned, if it is found in the event context. Otherwise, None is returned. """ prev_state_ids = await context.get_prev_state_ids() prev_event_id = prev_state_ids.get((event.type, event.state_key)) if not prev_event_id: return None prev_event = await self.store.get_event(prev_event_id, allow_none=True) if not prev_event: return None if prev_event and event.user_id == prev_event.user_id: prev_content = encode_canonical_json(prev_event.content) next_content = encode_canonical_json(event.content) if prev_content == next_content: return prev_event return None async def create_and_send_nonmember_event( self, requester: Requester, event_dict: dict, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, ratelimit: bool = True, txn_id: Optional[str] = None, ignore_shadow_ban: bool = False, outlier: bool = False, historical: bool = False, depth: Optional[int] = None, ) -> Tuple[EventBase, int]: """ Creates an event, then sends it. See self.create_event and self.handle_new_client_event. Args: requester: The requester sending the event. event_dict: An entire event. allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases like MSC2716. prev_event_ids: The event IDs to use as the prev events. Should normally be left as None to automatically request them from the database. auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. If non-None, prev_event_ids must also be provided. ratelimit: Whether to rate limit this send. txn_id: The transaction ID. ignore_shadow_ban: True if shadow-banned users should be allowed to send this event. outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. historical: Indicates whether the message is being inserted back in time around some existing events. This is used to skip a few checks and mark the event as backfilled. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Returns: The event, and its stream ordering (if deduplication happened, the previous, duplicate event). Raises: ShadowBanError if the requester has been shadow-banned. """ if event_dict["type"] == EventTypes.Member: raise SynapseError( 500, "Tried to send member event through non-member codepath" ) if not ignore_shadow_ban and requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() # We limit the number of concurrent event sends in a room so that we # don't fork the DAG too much. If we don't limit then we can end up in # a situation where event persistence can't keep up, causing # extremities to pile up, which in turn leads to state resolution # taking longer. with (await self.limiter.queue(event_dict["room_id"])): if txn_id and requester.access_token_id: existing_event_id = await self.store.get_event_id_from_transaction_id( event_dict["room_id"], requester.user.to_string(), requester.access_token_id, txn_id, ) if existing_event_id: event = await self.store.get_event(existing_event_id) # we know it was persisted, so must have a stream ordering assert event.internal_metadata.stream_ordering return event, event.internal_metadata.stream_ordering event, context = await self.create_event( requester, event_dict, txn_id=txn_id, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, outlier=outlier, historical=historical, depth=depth, ) assert self.hs.is_mine_id(event.sender), "User must be our own: %s" % ( event.sender, ) spam_error = await self.spam_checker.check_event_for_spam(event) if spam_error: if not isinstance(spam_error, str): spam_error = "Spam is not permitted here" raise SynapseError(403, spam_error, Codes.FORBIDDEN) ev = await self.handle_new_client_event( requester=requester, event=event, context=context, ratelimit=ratelimit, ignore_shadow_ban=ignore_shadow_ban, ) # we know it was persisted, so must have a stream ordering assert ev.internal_metadata.stream_ordering return ev, ev.internal_metadata.stream_ordering @measure_func("create_new_client_event") async def create_new_client_event( self, builder: EventBuilder, requester: Optional[Requester] = None, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, ) -> Tuple[EventBase, EventContext]: """Create a new event for a local client Args: builder: requester: allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases like MSC2716. prev_event_ids: the forward extremities to use as the prev_events for the new event. If None, they will be requested from the database. auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Returns: Tuple of created event, context """ # Strip down the auth_event_ids to only what we need to auth the event. # For example, we don't need extra m.room.member that don't match event.sender full_state_ids_at_event = None if auth_event_ids is not None: # If auth events are provided, prev events must be also. # prev_event_ids could be an empty array though. assert prev_event_ids is not None # Copy the full auth state before it stripped down full_state_ids_at_event = auth_event_ids.copy() temp_event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, depth=depth, ) auth_events = await self.store.get_events_as_list(auth_event_ids) # Create a StateMap[str] auth_event_state_map = { (e.type, e.state_key): e.event_id for e in auth_events } # Actually strip down and use the necessary auth events auth_event_ids = self._event_auth_handler.compute_auth_events( event=temp_event, current_state_ids=auth_event_state_map, for_verification=False, ) if prev_event_ids is not None: assert ( len(prev_event_ids) <= 10 ), "Attempting to create an event with %i prev_events" % ( len(prev_event_ids), ) else: prev_event_ids = await self.store.get_prev_events_for_room(builder.room_id) # Do a quick sanity check here, rather than waiting until we've created the # event and then try to auth it (which fails with a somewhat confusing "No # create event in auth events") if allow_no_prev_events: # We allow events with no `prev_events` but it better have some `auth_events` assert ( builder.type == EventTypes.Create # Allow an event to have empty list of prev_event_ids # only if it has auth_event_ids. or auth_event_ids ), "Attempting to create a non-m.room.create event with no prev_events or auth_event_ids" else: # we now ought to have some prev_events (unless it's a create event). assert ( builder.type == EventTypes.Create or prev_event_ids ), "Attempting to create a non-m.room.create event with no prev_events" event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, depth=depth, ) # Pass on the outlier property from the builder to the event # after it is created if builder.internal_metadata.outlier: event.internal_metadata.outlier = True context = EventContext.for_outlier() elif ( event.type == EventTypes.MSC2716_INSERTION and full_state_ids_at_event and builder.internal_metadata.is_historical() ): old_state = await self.store.get_events_as_list(full_state_ids_at_event) context = await self.state.compute_event_context(event, old_state=old_state) else: context = await self.state.compute_event_context(event) if requester: context.app_service = requester.app_service res, new_content = await self.third_party_event_rules.check_event_allowed( event, context ) if res is False: logger.info( "Event %s forbidden by third-party rules", event, ) raise SynapseError( 403, "This event is not allowed in this context", Codes.FORBIDDEN ) elif new_content is not None: # the third-party rules want to replace the event. We'll need to build a new # event. event, context = await self._rebuild_event_after_third_party_rules( new_content, event ) self.validator.validate_new(event, self.config) await self._validate_event_relation(event) logger.debug("Created event %s", event.event_id) return event, context async def _validate_event_relation(self, event: EventBase) -> None: """ Ensure the relation data on a new event is not bogus. Args: event: The event being created. Raises: SynapseError if the event is invalid. """ relation = event.content.get("m.relates_to") if not relation: return relation_type = relation.get("rel_type") if not relation_type: return # Ensure the parent is real. relates_to = relation.get("event_id") if not relates_to: return parent_event = await self.store.get_event(relates_to, allow_none=True) if parent_event: # And in the same room. if parent_event.room_id != event.room_id: raise SynapseError(400, "Relations must be in the same room") else: # There must be some reason that the client knows the event exists, # see if there are existing relations. If so, assume everything is fine. if not await self.store.event_is_target_of_relation(relates_to): # Otherwise, the client can't know about the parent event! raise SynapseError(400, "Can't send relation to unknown event") # If this event is an annotation then we check that that the sender # can't annotate the same way twice (e.g. stops users from liking an # event multiple times). if relation_type == RelationTypes.ANNOTATION: aggregation_key = relation["key"] already_exists = await self.store.has_user_annotated_event( relates_to, event.type, aggregation_key, event.sender ) if already_exists: raise SynapseError(400, "Can't send same reaction twice") # Don't attempt to start a thread if the parent event is a relation. elif relation_type == RelationTypes.THREAD: if await self.store.event_includes_relation(relates_to): raise SynapseError( 400, "Cannot start threads from an event with a relation" ) @measure_func("handle_new_client_event") async def handle_new_client_event( self, requester: Requester, event: EventBase, context: EventContext, ratelimit: bool = True, extra_users: Optional[List[UserID]] = None, ignore_shadow_ban: bool = False, ) -> EventBase: """Processes a new event. This includes deduplicating, checking auth, persisting, notifying users, sending to remote servers, etc. If called from a worker will hit out to the master process for final processing. Args: requester event context ratelimit extra_users: Any extra users to notify about event ignore_shadow_ban: True if shadow-banned users should be allowed to send this event. Return: If the event was deduplicated, the previous, duplicate, event. Otherwise, `event`. Raises: ShadowBanError if the requester has been shadow-banned. """ extra_users = extra_users or [] # we don't apply shadow-banning to membership events here. Invites are blocked # higher up the stack, and we allow shadow-banned users to send join and leave # events as normal. if ( event.type != EventTypes.Member and not ignore_shadow_ban and requester.shadow_banned ): # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() if event.is_state(): prev_event = await self.deduplicate_state_event(event, context) if prev_event is not None: logger.info( "Not bothering to persist state event %s duplicated by %s", event.event_id, prev_event.event_id, ) return prev_event if event.is_state() and (event.type, event.state_key) == ( EventTypes.Create, "", ): room_version_id = event.content.get( "room_version", RoomVersions.V1.identifier ) room_version_obj = KNOWN_ROOM_VERSIONS.get(room_version_id) if not room_version_obj: raise UnsupportedRoomVersionError( "Attempt to create a room with unsupported room version %s" % (room_version_id,) ) else: room_version_obj = await self.store.get_room_version(event.room_id) if event.internal_metadata.is_out_of_band_membership(): # the only sort of out-of-band-membership events we expect to see here are # invite rejections and rescinded knocks that we have generated ourselves. assert event.type == EventTypes.Member assert event.content["membership"] == Membership.LEAVE else: try: validate_event_for_room_version(room_version_obj, event) await self._event_auth_handler.check_auth_rules_from_context( room_version_obj, event, context ) except AuthError as err: logger.warning("Denying new event %r because %s", event, err) raise err # Ensure that we can round trip before trying to persist in db try: dump = json_encoder.encode(event.content) json_decoder.decode(dump) except Exception: logger.exception("Failed to encode content: %r", event.content) raise # We now persist the event (and update the cache in parallel, since we # don't want to block on it). result, _ = await make_deferred_yieldable( gather_results( ( run_in_background( self._persist_event, requester=requester, event=event, context=context, ratelimit=ratelimit, extra_users=extra_users, ), run_in_background( self.cache_joined_hosts_for_event, event, context ).addErrback(log_failure, "cache_joined_hosts_for_event failed"), ), consumeErrors=True, ) ).addErrback(unwrapFirstError) return result async def _persist_event( self, requester: Requester, event: EventBase, context: EventContext, ratelimit: bool = True, extra_users: Optional[List[UserID]] = None, ) -> EventBase: """Actually persists the event. Should only be called by `handle_new_client_event`, and see its docstring for documentation of the arguments. """ # Skip push notification actions for historical messages # because we don't want to notify people about old history back in time. # The historical messages also do not have the proper `context.current_state_ids` # and `state_groups` because they have `prev_events` that aren't persisted yet # (historical messages persisted in reverse-chronological order). if not event.internal_metadata.is_historical(): await self.action_generator.handle_push_actions_for_event(event, context) try: # If we're a worker we need to hit out to the master. writer_instance = self._events_shard_config.get_instance(event.room_id) if writer_instance != self._instance_name: result = await self.send_event( instance_name=writer_instance, event_id=event.event_id, store=self.store, requester=requester, event=event, context=context, ratelimit=ratelimit, extra_users=extra_users, ) stream_id = result["stream_id"] event_id = result["event_id"] if event_id != event.event_id: # If we get a different event back then it means that its # been de-duplicated, so we replace the given event with the # one already persisted. event = await self.store.get_event(event_id) else: # If we newly persisted the event then we need to update its # stream_ordering entry manually (as it was persisted on # another worker). event.internal_metadata.stream_ordering = stream_id return event event = await self.persist_and_notify_client_event( requester, event, context, ratelimit=ratelimit, extra_users=extra_users ) return event except Exception: # Ensure that we actually remove the entries in the push actions # staging area, if we calculated them. await self.store.remove_push_actions_from_staging(event.event_id) raise async def cache_joined_hosts_for_event( self, event: EventBase, context: EventContext ) -> None: """Precalculate the joined hosts at the event, when using Redis, so that external federation senders don't have to recalculate it themselves. """ if not self._external_cache.is_enabled(): return # If external cache is enabled we should always have this. assert self._external_cache_joined_hosts_updates is not None # We actually store two mappings, event ID -> prev state group, # state group -> joined hosts, which is much more space efficient # than event ID -> joined hosts. # # Note: We have to cache event ID -> prev state group, as we don't # store that in the DB. # # Note: We set the state group -> joined hosts cache if it hasn't been # set for a while, so that the expiry time is reset. state_entry = await self.state.resolve_state_groups_for_events( event.room_id, event_ids=event.prev_event_ids() ) if state_entry.state_group: await self._external_cache.set( "event_to_prev_state_group", event.event_id, state_entry.state_group, expiry_ms=60 * 60 * 1000, ) if state_entry.state_group in self._external_cache_joined_hosts_updates: return joined_hosts = await self.store.get_joined_hosts(event.room_id, state_entry) # Note that the expiry times must be larger than the expiry time in # _external_cache_joined_hosts_updates. await self._external_cache.set( "get_joined_hosts", str(state_entry.state_group), list(joined_hosts), expiry_ms=60 * 60 * 1000, ) self._external_cache_joined_hosts_updates[state_entry.state_group] = None async def _validate_canonical_alias( self, directory_handler: DirectoryHandler, room_alias_str: str, expected_room_id: str, ) -> None: """ Ensure that the given room alias points to the expected room ID. Args: directory_handler: The directory handler object. room_alias_str: The room alias to check. expected_room_id: The room ID that the alias should point to. """ room_alias = RoomAlias.from_string(room_alias_str) try: mapping = await directory_handler.get_association(room_alias) except SynapseError as e: # Turn M_NOT_FOUND errors into M_BAD_ALIAS errors. if e.errcode == Codes.NOT_FOUND: raise SynapseError( 400, "Room alias %s does not point to the room" % (room_alias_str,), Codes.BAD_ALIAS, ) raise if mapping["room_id"] != expected_room_id: raise SynapseError( 400, "Room alias %s does not point to the room" % (room_alias_str,), Codes.BAD_ALIAS, ) async def persist_and_notify_client_event( self, requester: Requester, event: EventBase, context: EventContext, ratelimit: bool = True, extra_users: Optional[List[UserID]] = None, ) -> EventBase: """Called when we have fully built the event, have already calculated the push actions for the event, and checked auth. This should only be run on the instance in charge of persisting events. Returns: The persisted event. This may be different than the given event if it was de-duplicated (e.g. because we had already persisted an event with the same transaction ID.) """ extra_users = extra_users or [] assert self.storage.persistence is not None assert self._events_shard_config.should_handle( self._instance_name, event.room_id ) if ratelimit: # We check if this is a room admin redacting an event so that we # can apply different ratelimiting. We do this by simply checking # it's not a self-redaction (to avoid having to look up whether the # user is actually admin or not). is_admin_redaction = False if event.type == EventTypes.Redaction: assert event.redacts is not None original_event = await self.store.get_event( event.redacts, redact_behaviour=EventRedactBehaviour.AS_IS, get_prev_content=False, allow_rejected=False, allow_none=True, ) is_admin_redaction = bool( original_event and event.sender != original_event.sender ) await self.request_ratelimiter.ratelimit( requester, is_admin_redaction=is_admin_redaction ) await self._maybe_kick_guest_users(event, context) if event.type == EventTypes.CanonicalAlias: # Validate a newly added alias or newly added alt_aliases. original_alias = None original_alt_aliases: List[str] = [] original_event_id = event.unsigned.get("replaces_state") if original_event_id: original_event = await self.store.get_event(original_event_id) if original_event: original_alias = original_event.content.get("alias", None) original_alt_aliases = original_event.content.get("alt_aliases", []) # Check the alias is currently valid (if it has changed). room_alias_str = event.content.get("alias", None) directory_handler = self.hs.get_directory_handler() if room_alias_str and room_alias_str != original_alias: await self._validate_canonical_alias( directory_handler, room_alias_str, event.room_id ) # Check that alt_aliases is the proper form. alt_aliases = event.content.get("alt_aliases", []) if not isinstance(alt_aliases, (list, tuple)): raise SynapseError( 400, "The alt_aliases property must be a list.", Codes.INVALID_PARAM ) # If the old version of alt_aliases is of an unknown form, # completely replace it. if not isinstance(original_alt_aliases, (list, tuple)): original_alt_aliases = [] # Check that each alias is currently valid. new_alt_aliases = set(alt_aliases) - set(original_alt_aliases) if new_alt_aliases: for alias_str in new_alt_aliases: await self._validate_canonical_alias( directory_handler, alias_str, event.room_id ) federation_handler = self.hs.get_federation_handler() if event.type == EventTypes.Member: if event.content["membership"] == Membership.INVITE: event.unsigned[ "invite_room_state" ] = await self.store.get_stripped_room_state_from_event_context( context, self.room_prejoin_state_types, membership_user_id=event.sender, ) invitee = UserID.from_string(event.state_key) if not self.hs.is_mine(invitee): # TODO: Can we add signature from remote server in a nicer # way? If we have been invited by a remote server, we need # to get them to sign the event. returned_invite = await federation_handler.send_invite( invitee.domain, event ) event.unsigned.pop("room_state", None) # TODO: Make sure the signatures actually are correct. event.signatures.update(returned_invite.signatures) if event.content["membership"] == Membership.KNOCK: event.unsigned[ "knock_room_state" ] = await self.store.get_stripped_room_state_from_event_context( context, self.room_prejoin_state_types, ) if event.type == EventTypes.Redaction: assert event.redacts is not None original_event = await self.store.get_event( event.redacts, redact_behaviour=EventRedactBehaviour.AS_IS, get_prev_content=False, allow_rejected=False, allow_none=True, ) room_version = await self.store.get_room_version_id(event.room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] # we can make some additional checks now if we have the original event. if original_event: if original_event.type == EventTypes.Create: raise AuthError(403, "Redacting create events is not permitted") if original_event.room_id != event.room_id: raise SynapseError(400, "Cannot redact event from a different room") if original_event.type == EventTypes.ServerACL: raise AuthError(403, "Redacting server ACL events is not permitted") # Add a little safety stop-gap to prevent people from trying to # redact MSC2716 related events when they're in a room version # which does not support it yet. We allow people to use MSC2716 # events in existing room versions but only from the room # creator since it does not require any changes to the auth # rules and in effect, the redaction algorithm . In the # supported room version, we add the `historical` power level to # auth the MSC2716 related events and adjust the redaction # algorthim to keep the `historical` field around (redacting an # event should only strip fields which don't affect the # structural protocol level). is_msc2716_event = ( original_event.type == EventTypes.MSC2716_INSERTION or original_event.type == EventTypes.MSC2716_BATCH or original_event.type == EventTypes.MSC2716_MARKER ) if not room_version_obj.msc2716_historical and is_msc2716_event: raise AuthError( 403, "Redacting MSC2716 events is not supported in this room version", ) prev_state_ids = await context.get_prev_state_ids() auth_events_ids = self._event_auth_handler.compute_auth_events( event, prev_state_ids, for_verification=True ) auth_events_map = await self.store.get_events(auth_events_ids) auth_events = {(e.type, e.state_key): e for e in auth_events_map.values()} if event_auth.check_redaction( room_version_obj, event, auth_events=auth_events ): # this user doesn't have 'redact' rights, so we need to do some more # checks on the original event. Let's start by checking the original # event exists. if not original_event: raise NotFoundError("Could not find event %s" % (event.redacts,)) if event.user_id != original_event.user_id: raise AuthError(403, "You don't have permission to redact events") # all the checks are done. event.internal_metadata.recheck_redaction = False if event.type == EventTypes.Create: prev_state_ids = await context.get_prev_state_ids() if prev_state_ids: raise AuthError(403, "Changing the room create event is forbidden") if event.type == EventTypes.MSC2716_INSERTION: room_version = await self.store.get_room_version_id(event.room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] create_event = await self.store.get_create_event_for_room(event.room_id) room_creator = create_event.content.get(EventContentFields.ROOM_CREATOR) # Only check an insertion event if the room version # supports it or the event is from the room creator. if room_version_obj.msc2716_historical or ( self.config.experimental.msc2716_enabled and event.sender == room_creator ): next_batch_id = event.content.get( EventContentFields.MSC2716_NEXT_BATCH_ID ) conflicting_insertion_event_id = None if next_batch_id: conflicting_insertion_event_id = ( await self.store.get_insertion_event_id_by_batch_id( event.room_id, next_batch_id ) ) if conflicting_insertion_event_id is not None: # The current insertion event that we're processing is invalid # because an insertion event already exists in the room with the # same next_batch_id. We can't allow multiple because the batch # pointing will get weird, e.g. we can't determine which insertion # event the batch event is pointing to. raise SynapseError( HTTPStatus.BAD_REQUEST, "Another insertion event already exists with the same next_batch_id", errcode=Codes.INVALID_PARAM, ) # Mark any `m.historical` messages as backfilled so they don't appear # in `/sync` and have the proper decrementing `stream_ordering` as we import backfilled = False if event.internal_metadata.is_historical(): backfilled = True # Note that this returns the event that was persisted, which may not be # the same as we passed in if it was deduplicated due transaction IDs. ( event, event_pos, max_stream_token, ) = await self.storage.persistence.persist_event( event, context=context, backfilled=backfilled ) if self._ephemeral_events_enabled: # If there's an expiry timestamp on the event, schedule its expiry. self._message_handler.maybe_schedule_expiry(event) async def _notify() -> None: try: await self.notifier.on_new_room_event( event, event_pos, max_stream_token, extra_users=extra_users ) except Exception: logger.exception( "Error notifying about new room event %s", event.event_id, ) run_in_background(_notify) if event.type == EventTypes.Message: # We don't want to block sending messages on any presence code. This # matters as sometimes presence code can take a while. run_in_background(self._bump_active_time, requester.user) return event async def _maybe_kick_guest_users( self, event: EventBase, context: EventContext ) -> None: if event.type != EventTypes.GuestAccess: return guest_access = event.content.get(EventContentFields.GUEST_ACCESS) if guest_access == GuestAccess.CAN_JOIN: return current_state_ids = await context.get_current_state_ids() # since this is a client-generated event, it cannot be an outlier and we must # therefore have the state ids. assert current_state_ids is not None current_state_dict = await self.store.get_events( list(current_state_ids.values()) ) current_state = list(current_state_dict.values()) logger.info("maybe_kick_guest_users %r", current_state) await self.hs.get_room_member_handler().kick_guest_users(current_state) async def _bump_active_time(self, user: UserID) -> None: try: presence = self.hs.get_presence_handler() await presence.bump_presence_active_time(user) except Exception: logger.exception("Error bumping presence active time") async def _send_dummy_events_to_fill_extremities(self) -> None: """Background task to send dummy events into rooms that have a large number of extremities """ self._expire_rooms_to_exclude_from_dummy_event_insertion() room_ids = await self.store.get_rooms_with_many_extremities( min_count=self._dummy_events_threshold, limit=5, room_id_filter=self._rooms_to_exclude_from_dummy_event_insertion.keys(), ) for room_id in room_ids: dummy_event_sent = await self._send_dummy_event_for_room(room_id) if not dummy_event_sent: # Did not find a valid user in the room, so remove from future attempts # Exclusion is time limited, so the room will be rechecked in the future # dependent on _DUMMY_EVENT_ROOM_EXCLUSION_EXPIRY logger.info( "Failed to send dummy event into room %s. Will exclude it from " "future attempts until cache expires" % (room_id,) ) now = self.clock.time_msec() self._rooms_to_exclude_from_dummy_event_insertion[room_id] = now async def _send_dummy_event_for_room(self, room_id: str) -> bool: """Attempt to send a dummy event for the given room. Args: room_id: room to try to send an event from Returns: True if a dummy event was successfully sent. False if no user was able to send an event. """ # For each room we need to find a joined member we can use to send # the dummy event with. latest_event_ids = await self.store.get_prev_events_for_room(room_id) members = await self.state.get_current_users_in_room( room_id, latest_event_ids=latest_event_ids ) for user_id in members: if not self.hs.is_mine_id(user_id): continue requester = create_requester(user_id, authenticated_entity=self.server_name) try: event, context = await self.create_event( requester, { "type": EventTypes.Dummy, "content": {}, "room_id": room_id, "sender": user_id, }, prev_event_ids=latest_event_ids, ) event.internal_metadata.proactively_send = False # Since this is a dummy-event it is OK if it is sent by a # shadow-banned user. await self.handle_new_client_event( requester, event, context, ratelimit=False, ignore_shadow_ban=True, ) return True except AuthError: logger.info( "Failed to send dummy event into room %s for user %s due to " "lack of power. Will try another user" % (room_id, user_id) ) return False def _expire_rooms_to_exclude_from_dummy_event_insertion(self) -> None: expire_before = self.clock.time_msec() - _DUMMY_EVENT_ROOM_EXCLUSION_EXPIRY to_expire = set() for room_id, time in self._rooms_to_exclude_from_dummy_event_insertion.items(): if time < expire_before: to_expire.add(room_id) for room_id in to_expire: logger.debug( "Expiring room id %s from dummy event insertion exclusion cache", room_id, ) del self._rooms_to_exclude_from_dummy_event_insertion[room_id] async def _rebuild_event_after_third_party_rules( self, third_party_result: dict, original_event: EventBase ) -> Tuple[EventBase, EventContext]: # the third_party_event_rules want to replace the event. # we do some basic checks, and then return the replacement event and context. # Construct a new EventBuilder and validate it, which helps with the # rest of these checks. try: builder = self.event_builder_factory.for_room_version( original_event.room_version, third_party_result ) self.validator.validate_builder(builder) except SynapseError as e: raise Exception( "Third party rules module created an invalid event: " + e.msg, ) immutable_fields = [ # changing the room is going to break things: we've already checked that the # room exists, and are holding a concurrency limiter token for that room. # Also, we might need to use a different room version. "room_id", # changing the type or state key might work, but we'd need to check that the # calling functions aren't making assumptions about them. "type", "state_key", ] for k in immutable_fields: if getattr(builder, k, None) != original_event.get(k): raise Exception( "Third party rules module created an invalid event: " "cannot change field " + k ) # check that the new sender belongs to this HS if not self.hs.is_mine_id(builder.sender): raise Exception( "Third party rules module created an invalid event: " "invalid sender " + builder.sender ) # copy over the original internal metadata for k, v in original_event.internal_metadata.get_dict().items(): setattr(builder.internal_metadata, k, v) # modules can send new state events, so we re-calculate the auth events just in # case. prev_event_ids = await self.store.get_prev_events_for_room(builder.room_id) event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=None, ) # we rebuild the event context, to be on the safe side. If nothing else, # delta_ids might need an update. context = await self.state.compute_event_context(event) return event, context synapse-1.53.0/synapse/handlers/oidc.py000066400000000000000000001523051420514467300200500ustar00rootroot00000000000000# Copyright 2020 Quentin Gliech # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import inspect import logging from typing import TYPE_CHECKING, Any, Dict, Generic, List, Optional, TypeVar, Union from urllib.parse import urlencode, urlparse import attr import pymacaroons from authlib.common.security import generate_token from authlib.jose import JsonWebToken, jwt from authlib.oauth2.auth import ClientAuth from authlib.oauth2.rfc6749.parameters import prepare_grant_uri from authlib.oidc.core import CodeIDToken, UserInfo from authlib.oidc.discovery import OpenIDProviderMetadata, get_well_known_url from jinja2 import Environment, Template from pymacaroons.exceptions import ( MacaroonDeserializationException, MacaroonInitException, MacaroonInvalidSignatureException, ) from typing_extensions import TypedDict from twisted.web.client import readBody from twisted.web.http_headers import Headers from synapse.config import ConfigError from synapse.config.oidc import OidcProviderClientSecretJwtKey, OidcProviderConfig from synapse.handlers.sso import MappingException, UserAttributes from synapse.http.site import SynapseRequest from synapse.logging.context import make_deferred_yieldable from synapse.types import JsonDict, UserID, map_username_to_mxid_localpart from synapse.util import Clock, json_decoder from synapse.util.caches.cached_call import RetryOnExceptionCachedCall from synapse.util.macaroons import get_value_from_macaroon, satisfy_expiry if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # we want the cookie to be returned to us even when the request is the POSTed # result of a form on another domain, as is used with `response_mode=form_post`. # # Modern browsers will not do so unless we set SameSite=None; however *older* # browsers (including all versions of Safari on iOS 12?) don't support # SameSite=None, and interpret it as SameSite=Strict: # https://bugs.webkit.org/show_bug.cgi?id=198181 # # As a rather painful workaround, we set *two* cookies, one with SameSite=None # and one with no SameSite, in the hope that at least one of them will get # back to us. # # Secure is necessary for SameSite=None (and, empirically, also breaks things # on iOS 12.) # # Here we have the names of the cookies, and the options we use to set them. _SESSION_COOKIES = [ (b"oidc_session", b"HttpOnly; Secure; SameSite=None"), (b"oidc_session_no_samesite", b"HttpOnly"), ] #: A token exchanged from the token endpoint, as per RFC6749 sec 5.1. and #: OpenID.Core sec 3.1.3.3. class Token(TypedDict): access_token: str token_type: str id_token: Optional[str] refresh_token: Optional[str] expires_in: int scope: Optional[str] #: A JWK, as per RFC7517 sec 4. The type could be more precise than that, but #: there is no real point of doing this in our case. JWK = Dict[str, str] #: A JWK Set, as per RFC7517 sec 5. class JWKS(TypedDict): keys: List[JWK] class OidcHandler: """Handles requests related to the OpenID Connect login flow.""" def __init__(self, hs: "HomeServer"): self._sso_handler = hs.get_sso_handler() provider_confs = hs.config.oidc.oidc_providers # we should not have been instantiated if there is no configured provider. assert provider_confs self._token_generator = OidcSessionTokenGenerator(hs) self._providers: Dict[str, "OidcProvider"] = { p.idp_id: OidcProvider(hs, self._token_generator, p) for p in provider_confs } async def load_metadata(self) -> None: """Validate the config and load the metadata from the remote endpoint. Called at startup to ensure we have everything we need. """ for idp_id, p in self._providers.items(): try: await p.load_metadata() if not p._uses_userinfo: await p.load_jwks() except Exception as e: raise Exception( "Error while initialising OIDC provider %r" % (idp_id,) ) from e async def handle_oidc_callback(self, request: SynapseRequest) -> None: """Handle an incoming request to /_synapse/client/oidc/callback Since we might want to display OIDC-related errors in a user-friendly way, we don't raise SynapseError from here. Instead, we call ``self._sso_handler.render_error`` which displays an HTML page for the error. Most of the OpenID Connect logic happens here: - first, we check if there was any error returned by the provider and display it - then we fetch the session cookie, decode and verify it - the ``state`` query parameter should match with the one stored in the session cookie Once we know the session is legit, we then delegate to the OIDC Provider implementation, which will exchange the code with the provider and complete the login/authentication. Args: request: the incoming request from the browser. """ # This will always be set by the time Twisted calls us. assert request.args is not None # The provider might redirect with an error. # In that case, just display it as-is. if b"error" in request.args: # error response from the auth server. see: # https://tools.ietf.org/html/rfc6749#section-4.1.2.1 # https://openid.net/specs/openid-connect-core-1_0.html#AuthError error = request.args[b"error"][0].decode() description = request.args.get(b"error_description", [b""])[0].decode() # Most of the errors returned by the provider could be due by # either the provider misbehaving or Synapse being misconfigured. # The only exception of that is "access_denied", where the user # probably cancelled the login flow. In other cases, log those errors. logger.log( logging.INFO if error == "access_denied" else logging.ERROR, "Received OIDC callback with error: %s %s", error, description, ) self._sso_handler.render_error(request, error, description) return # otherwise, it is presumably a successful response. see: # https://tools.ietf.org/html/rfc6749#section-4.1.2 # Fetch the session cookie. See the comments on SESSION_COOKIES for why there # are two. for cookie_name, _ in _SESSION_COOKIES: session: Optional[bytes] = request.getCookie(cookie_name) if session is not None: break else: logger.info("Received OIDC callback, with no session cookie") self._sso_handler.render_error( request, "missing_session", "No session cookie found" ) return # Remove the cookies. There is a good chance that if the callback failed # once, it will fail next time and the code will already be exchanged. # Removing the cookies early avoids spamming the provider with token requests. # # we have to build the header by hand rather than calling request.addCookie # because the latter does not support SameSite=None # (https://twistedmatrix.com/trac/ticket/10088) for cookie_name, options in _SESSION_COOKIES: request.cookies.append( b"%s=; Expires=Thu, Jan 01 1970 00:00:00 UTC; %s" % (cookie_name, options) ) # Check for the state query parameter if b"state" not in request.args: logger.info("Received OIDC callback, with no state parameter") self._sso_handler.render_error( request, "invalid_request", "State parameter is missing" ) return state = request.args[b"state"][0].decode() # Deserialize the session token and verify it. try: session_data = self._token_generator.verify_oidc_session_token( session, state ) except (MacaroonInitException, MacaroonDeserializationException, KeyError) as e: logger.exception("Invalid session for OIDC callback") self._sso_handler.render_error(request, "invalid_session", str(e)) return except MacaroonInvalidSignatureException as e: logger.exception("Could not verify session for OIDC callback") self._sso_handler.render_error(request, "mismatching_session", str(e)) return logger.info("Received OIDC callback for IdP %s", session_data.idp_id) oidc_provider = self._providers.get(session_data.idp_id) if not oidc_provider: logger.error("OIDC session uses unknown IdP %r", oidc_provider) self._sso_handler.render_error(request, "unknown_idp", "Unknown IdP") return if b"code" not in request.args: logger.info("Code parameter is missing") self._sso_handler.render_error( request, "invalid_request", "Code parameter is missing" ) return code = request.args[b"code"][0].decode() await oidc_provider.handle_oidc_callback(request, session_data, code) class OidcError(Exception): """Used to catch errors when calling the token_endpoint""" def __init__(self, error: str, error_description: Optional[str] = None): self.error = error self.error_description = error_description def __str__(self) -> str: if self.error_description: return f"{self.error}: {self.error_description}" return self.error class OidcProvider: """Wraps the config for a single OIDC IdentityProvider Provides methods for handling redirect requests and callbacks via that particular IdP. """ def __init__( self, hs: "HomeServer", token_generator: "OidcSessionTokenGenerator", provider: OidcProviderConfig, ): self._store = hs.get_datastore() self._token_generator = token_generator self._config = provider self._callback_url: str = hs.config.oidc.oidc_callback_url # Calculate the prefix for OIDC callback paths based on the public_baseurl. # We'll insert this into the Path= parameter of any session cookies we set. public_baseurl_path = urlparse(hs.config.server.public_baseurl).path self._callback_path_prefix = ( public_baseurl_path.encode("utf-8") + b"_synapse/client/oidc" ) self._oidc_attribute_requirements = provider.attribute_requirements self._scopes = provider.scopes self._user_profile_method = provider.user_profile_method client_secret: Optional[Union[str, JwtClientSecret]] = None if provider.client_secret: client_secret = provider.client_secret elif provider.client_secret_jwt_key: client_secret = JwtClientSecret( provider.client_secret_jwt_key, provider.client_id, provider.issuer, hs.get_clock(), ) self._client_auth = ClientAuth( provider.client_id, client_secret, provider.client_auth_method, ) self._client_auth_method = provider.client_auth_method # cache of metadata for the identity provider (endpoint uris, mostly). This is # loaded on-demand from the discovery endpoint (if discovery is enabled), with # possible overrides from the config. Access via `load_metadata`. self._provider_metadata = RetryOnExceptionCachedCall(self._load_metadata) # cache of JWKs used by the identity provider to sign tokens. Loaded on demand # from the IdP's jwks_uri, if required. self._jwks = RetryOnExceptionCachedCall(self._load_jwks) self._user_mapping_provider = provider.user_mapping_provider_class( provider.user_mapping_provider_config ) self._skip_verification = provider.skip_verification self._allow_existing_users = provider.allow_existing_users self._http_client = hs.get_proxied_http_client() self._server_name: str = hs.config.server.server_name # identifier for the external_ids table self.idp_id = provider.idp_id # user-facing name of this auth provider self.idp_name = provider.idp_name # MXC URI for icon for this auth provider self.idp_icon = provider.idp_icon # optional brand identifier for this auth provider self.idp_brand = provider.idp_brand self._sso_handler = hs.get_sso_handler() self._sso_handler.register_identity_provider(self) def _validate_metadata(self, m: OpenIDProviderMetadata) -> None: """Verifies the provider metadata. This checks the validity of the currently loaded provider. Not everything is checked, only: - ``issuer`` - ``authorization_endpoint`` - ``token_endpoint`` - ``response_types_supported`` (checks if "code" is in it) - ``jwks_uri`` Raises: ValueError: if something in the provider is not valid """ # Skip verification to allow non-compliant providers (e.g. issuers not running on a secure origin) if self._skip_verification is True: return m.validate_issuer() m.validate_authorization_endpoint() m.validate_token_endpoint() if m.get("token_endpoint_auth_methods_supported") is not None: m.validate_token_endpoint_auth_methods_supported() if ( self._client_auth_method not in m["token_endpoint_auth_methods_supported"] ): raise ValueError( '"{auth_method}" not in "token_endpoint_auth_methods_supported" ({supported!r})'.format( auth_method=self._client_auth_method, supported=m["token_endpoint_auth_methods_supported"], ) ) if m.get("response_types_supported") is not None: m.validate_response_types_supported() if "code" not in m["response_types_supported"]: raise ValueError( '"code" not in "response_types_supported" (%r)' % (m["response_types_supported"],) ) # Ensure there's a userinfo endpoint to fetch from if it is required. if self._uses_userinfo: if m.get("userinfo_endpoint") is None: raise ValueError( 'provider has no "userinfo_endpoint", even though it is required' ) else: # If we're not using userinfo, we need a valid jwks to validate the ID token m.validate_jwks_uri() @property def _uses_userinfo(self) -> bool: """Returns True if the ``userinfo_endpoint`` should be used. This is based on the requested scopes: if the scopes include ``openid``, the provider should give use an ID token containing the user information. If not, we should fetch them using the ``access_token`` with the ``userinfo_endpoint``. """ return ( "openid" not in self._scopes or self._user_profile_method == "userinfo_endpoint" ) async def load_metadata(self, force: bool = False) -> OpenIDProviderMetadata: """Return the provider metadata. If this is the first call, the metadata is built from the config and from the metadata discovery endpoint (if enabled), and then validated. If the metadata is successfully validated, it is then cached for future use. Args: force: If true, any cached metadata is discarded to force a reload. Raises: ValueError: if something in the provider is not valid Returns: The provider's metadata. """ if force: # reset the cached call to ensure we get a new result self._provider_metadata = RetryOnExceptionCachedCall(self._load_metadata) return await self._provider_metadata.get() async def _load_metadata(self) -> OpenIDProviderMetadata: # start out with just the issuer (unlike the other settings, discovered issuer # takes precedence over configured issuer, because configured issuer is # required for discovery to take place.) # metadata = OpenIDProviderMetadata(issuer=self._config.issuer) # load any data from the discovery endpoint, if enabled if self._config.discover: url = get_well_known_url(self._config.issuer, external=True) metadata_response = await self._http_client.get_json(url) metadata.update(metadata_response) # override any discovered data with any settings in our config if self._config.authorization_endpoint: metadata["authorization_endpoint"] = self._config.authorization_endpoint if self._config.token_endpoint: metadata["token_endpoint"] = self._config.token_endpoint if self._config.userinfo_endpoint: metadata["userinfo_endpoint"] = self._config.userinfo_endpoint if self._config.jwks_uri: metadata["jwks_uri"] = self._config.jwks_uri self._validate_metadata(metadata) return metadata async def load_jwks(self, force: bool = False) -> JWKS: """Load the JSON Web Key Set used to sign ID tokens. If we're not using the ``userinfo_endpoint``, user infos are extracted from the ID token, which is a JWT signed by keys given by the provider. The keys are then cached. Args: force: Force reloading the keys. Returns: The key set Looks like this:: { 'keys': [ { 'kid': 'abcdef', 'kty': 'RSA', 'alg': 'RS256', 'use': 'sig', 'e': 'XXXX', 'n': 'XXXX', } ] } """ if force: # reset the cached call to ensure we get a new result self._jwks = RetryOnExceptionCachedCall(self._load_jwks) return await self._jwks.get() async def _load_jwks(self) -> JWKS: metadata = await self.load_metadata() # Load the JWKS using the `jwks_uri` metadata. uri = metadata.get("jwks_uri") if not uri: # this should be unreachable: load_metadata validates that # there is a jwks_uri in the metadata if _uses_userinfo is unset raise RuntimeError('Missing "jwks_uri" in metadata') jwk_set = await self._http_client.get_json(uri) return jwk_set async def _exchange_code(self, code: str) -> Token: """Exchange an authorization code for a token. This calls the ``token_endpoint`` with the authorization code we received in the callback to exchange it for a token. The call uses the ``ClientAuth`` to authenticate with the client with its ID and secret. See: https://tools.ietf.org/html/rfc6749#section-3.2 https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint Args: code: The authorization code we got from the callback. Returns: A dict containing various tokens. May look like this:: { 'token_type': 'bearer', 'access_token': 'abcdef', 'expires_in': 3599, 'id_token': 'ghijkl', 'refresh_token': 'mnopqr', } Raises: OidcError: when the ``token_endpoint`` returned an error. """ metadata = await self.load_metadata() token_endpoint = metadata.get("token_endpoint") raw_headers: Dict[str, str] = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": self._http_client.user_agent.decode("ascii"), "Accept": "application/json", } args = { "grant_type": "authorization_code", "code": code, "redirect_uri": self._callback_url, } body = urlencode(args, True) # Fill the body/headers with credentials uri, raw_headers, body = self._client_auth.prepare( method="POST", uri=token_endpoint, headers=raw_headers, body=body ) headers = Headers({k: [v] for (k, v) in raw_headers.items()}) # Do the actual request # We're not using the SimpleHttpClient util methods as we don't want to # check the HTTP status code and we do the body encoding ourself. response = await self._http_client.request( method="POST", uri=uri, data=body.encode("utf-8"), headers=headers, ) # This is used in multiple error messages below status = "{code} {phrase}".format( code=response.code, phrase=response.phrase.decode("utf-8") ) resp_body = await make_deferred_yieldable(readBody(response)) if response.code >= 500: # In case of a server error, we should first try to decode the body # and check for an error field. If not, we respond with a generic # error message. try: resp = json_decoder.decode(resp_body.decode("utf-8")) error = resp["error"] description = resp.get("error_description", error) except (ValueError, KeyError): # Catch ValueError for the JSON decoding and KeyError for the "error" field error = "server_error" description = ( ( 'Authorization server responded with a "{status}" error ' "while exchanging the authorization code." ).format(status=status), ) raise OidcError(error, description) # Since it is a not a 5xx code, body should be a valid JSON. It will # raise if not. resp = json_decoder.decode(resp_body.decode("utf-8")) if "error" in resp: error = resp["error"] # In case the authorization server responded with an error field, # it should be a 4xx code. If not, warn about it but don't do # anything special and report the original error message. if response.code < 400: logger.debug( "Invalid response from the authorization server: " 'responded with a "{status}" ' "but body has an error field: {error!r}".format( status=status, error=resp["error"] ) ) description = resp.get("error_description", error) raise OidcError(error, description) # Now, this should not be an error. According to RFC6749 sec 5.1, it # should be a 200 code. We're a bit more flexible than that, and will # only throw on a 4xx code. if response.code >= 400: description = ( 'Authorization server responded with a "{status}" error ' 'but did not include an "error" field in its response.'.format( status=status ) ) logger.warning(description) # Body was still valid JSON. Might be useful to log it for debugging. logger.warning("Code exchange response: %r", resp) raise OidcError("server_error", description) return resp async def _fetch_userinfo(self, token: Token) -> UserInfo: """Fetch user information from the ``userinfo_endpoint``. Args: token: the token given by the ``token_endpoint``. Must include an ``access_token`` field. Returns: UserInfo: an object representing the user. """ logger.debug("Using the OAuth2 access_token to request userinfo") metadata = await self.load_metadata() resp = await self._http_client.get_json( metadata["userinfo_endpoint"], headers={"Authorization": ["Bearer {}".format(token["access_token"])]}, ) logger.debug("Retrieved user info from userinfo endpoint: %r", resp) return UserInfo(resp) async def _parse_id_token(self, token: Token, nonce: str) -> CodeIDToken: """Return an instance of UserInfo from token's ``id_token``. Args: token: the token given by the ``token_endpoint``. Must include an ``id_token`` field. nonce: the nonce value originally sent in the initial authorization request. This value should match the one inside the token. Returns: The decoded claims in the ID token. """ metadata = await self.load_metadata() claims_params = { "nonce": nonce, "client_id": self._client_auth.client_id, } if "access_token" in token: # If we got an `access_token`, there should be an `at_hash` claim # in the `id_token` that we can check against. claims_params["access_token"] = token["access_token"] alg_values = metadata.get("id_token_signing_alg_values_supported", ["RS256"]) jwt = JsonWebToken(alg_values) claim_options = {"iss": {"values": [metadata["issuer"]]}} id_token = token["id_token"] logger.debug("Attempting to decode JWT id_token %r", id_token) # Try to decode the keys in cache first, then retry by forcing the keys # to be reloaded jwk_set = await self.load_jwks() try: claims = jwt.decode( id_token, key=jwk_set, claims_cls=CodeIDToken, claims_options=claim_options, claims_params=claims_params, ) except ValueError: logger.info("Reloading JWKS after decode error") jwk_set = await self.load_jwks(force=True) # try reloading the jwks claims = jwt.decode( id_token, key=jwk_set, claims_cls=CodeIDToken, claims_options=claim_options, claims_params=claims_params, ) logger.debug("Decoded id_token JWT %r; validating", claims) claims.validate(leeway=120) # allows 2 min of clock skew return claims async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Handle an incoming request to /login/sso/redirect It returns a redirect to the authorization endpoint with a few parameters: - ``client_id``: the client ID set in ``oidc_config.client_id`` - ``response_type``: ``code`` - ``redirect_uri``: the callback URL ; ``{base url}/_synapse/client/oidc/callback`` - ``scope``: the list of scopes set in ``oidc_config.scopes`` - ``state``: a random string - ``nonce``: a random string In addition generating a redirect URL, we are setting a cookie with a signed macaroon token containing the state, the nonce and the client_redirect_url params. Those are then checked when the client comes back from the provider. Args: request: the incoming request from the browser. We'll respond to it with a redirect and a cookie. client_redirect_url: the URL that we should redirect the client to when everything is done (or None for UI Auth) ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: The redirect URL to the authorization endpoint. """ state = generate_token() nonce = generate_token() if not client_redirect_url: client_redirect_url = b"" cookie = self._token_generator.generate_oidc_session_token( state=state, session_data=OidcSessionData( idp_id=self.idp_id, nonce=nonce, client_redirect_url=client_redirect_url.decode(), ui_auth_session_id=ui_auth_session_id or "", ), ) # Set the cookies. See the comments on _SESSION_COOKIES for why there are two. # # we have to build the header by hand rather than calling request.addCookie # because the latter does not support SameSite=None # (https://twistedmatrix.com/trac/ticket/10088) for cookie_name, options in _SESSION_COOKIES: request.cookies.append( b"%s=%s; Max-Age=3600; Path=%s; %s" % ( cookie_name, cookie.encode("utf-8"), self._callback_path_prefix, options, ) ) metadata = await self.load_metadata() authorization_endpoint = metadata.get("authorization_endpoint") return prepare_grant_uri( authorization_endpoint, client_id=self._client_auth.client_id, response_type="code", redirect_uri=self._callback_url, scope=self._scopes, state=state, nonce=nonce, ) async def handle_oidc_callback( self, request: SynapseRequest, session_data: "OidcSessionData", code: str ) -> None: """Handle an incoming request to /_synapse/client/oidc/callback By this time we have already validated the session on the synapse side, and now need to do the provider-specific operations. This includes: - exchange the code with the provider using the ``token_endpoint`` (see ``_exchange_code``) - once we have the token, use it to either extract the UserInfo from the ``id_token`` (``_parse_id_token``), or use the ``access_token`` to fetch UserInfo from the ``userinfo_endpoint`` (``_fetch_userinfo``) - map those UserInfo to a Matrix user (``_map_userinfo_to_user``) and finish the login Args: request: the incoming request from the browser. session_data: the session data, extracted from our cookie code: The authorization code we got from the callback. """ # Exchange the code with the provider try: logger.debug("Exchanging OAuth2 code for a token") token = await self._exchange_code(code) except OidcError as e: logger.exception("Could not exchange OAuth2 code") self._sso_handler.render_error(request, e.error, e.error_description) return logger.debug("Successfully obtained OAuth2 token data: %r", token) # If there is an id_token, it should be validated, regardless of the # userinfo endpoint is used or not. if token.get("id_token") is not None: try: id_token = await self._parse_id_token(token, nonce=session_data.nonce) sid = id_token.get("sid") except Exception as e: logger.exception("Invalid id_token") self._sso_handler.render_error(request, "invalid_token", str(e)) return else: id_token = None sid = None # Now that we have a token, get the userinfo either from the `id_token` # claims or by fetching the `userinfo_endpoint`. if self._uses_userinfo: try: userinfo = await self._fetch_userinfo(token) except Exception as e: logger.exception("Could not fetch userinfo") self._sso_handler.render_error(request, "fetch_error", str(e)) return elif id_token is not None: userinfo = UserInfo(id_token) else: logger.error("Missing id_token in token response") self._sso_handler.render_error( request, "invalid_token", "Missing id_token in token response" ) return # first check if we're doing a UIA if session_data.ui_auth_session_id: try: remote_user_id = self._remote_id_from_userinfo(userinfo) except Exception as e: logger.exception("Could not extract remote user id") self._sso_handler.render_error(request, "mapping_error", str(e)) return return await self._sso_handler.complete_sso_ui_auth_request( self.idp_id, remote_user_id, session_data.ui_auth_session_id, request ) # otherwise, it's a login logger.debug("Userinfo for OIDC login: %s", userinfo) # Ensure that the attributes of the logged in user meet the required # attributes by checking the userinfo against attribute_requirements # In order to deal with the fact that OIDC userinfo can contain many # types of data, we wrap non-list values in lists. if not self._sso_handler.check_required_attributes( request, {k: v if isinstance(v, list) else [v] for k, v in userinfo.items()}, self._oidc_attribute_requirements, ): return # Call the mapper to register/login the user try: await self._complete_oidc_login( userinfo, token, request, session_data.client_redirect_url, sid ) except MappingException as e: logger.exception("Could not map user") self._sso_handler.render_error(request, "mapping_error", str(e)) async def _complete_oidc_login( self, userinfo: UserInfo, token: Token, request: SynapseRequest, client_redirect_url: str, sid: Optional[str], ) -> None: """Given a UserInfo response, complete the login flow UserInfo should have a claim that uniquely identifies users. This claim is usually `sub`, but can be configured with `oidc_config.subject_claim`. It is then used as an `external_id`. If we don't find the user that way, we should register the user, mapping the localpart and the display name from the UserInfo. If a user already exists with the mxid we've mapped and allow_existing_users is disabled, raise an exception. Otherwise, render a redirect back to the client_redirect_url with a loginToken. Args: userinfo: an object representing the user token: a dict with the tokens obtained from the provider request: The request to respond to client_redirect_url: The redirect URL passed in by the client. Raises: MappingException: if there was an error while mapping some properties """ try: remote_user_id = self._remote_id_from_userinfo(userinfo) except Exception as e: raise MappingException( "Failed to extract subject from OIDC response: %s" % (e,) ) # Older mapping providers don't accept the `failures` argument, so we # try and detect support. mapper_signature = inspect.signature( self._user_mapping_provider.map_user_attributes ) supports_failures = "failures" in mapper_signature.parameters async def oidc_response_to_user_attributes(failures: int) -> UserAttributes: """ Call the mapping provider to map the OIDC userinfo and token to user attributes. This is backwards compatibility for abstraction for the SSO handler. """ if supports_failures: attributes = await self._user_mapping_provider.map_user_attributes( userinfo, token, failures ) else: # If the mapping provider does not support processing failures, # do not continually generate the same Matrix ID since it will # continue to already be in use. Note that the error raised is # arbitrary and will get turned into a MappingException. if failures: raise MappingException( "Mapping provider does not support de-duplicating Matrix IDs" ) attributes = await self._user_mapping_provider.map_user_attributes( # type: ignore userinfo, token ) return UserAttributes(**attributes) async def grandfather_existing_users() -> Optional[str]: if self._allow_existing_users: # If allowing existing users we want to generate a single localpart # and attempt to match it. attributes = await oidc_response_to_user_attributes(failures=0) if attributes.localpart is None: # If no localpart is returned then we will generate one, so # there is no need to search for existing users. return None user_id = UserID(attributes.localpart, self._server_name).to_string() users = await self._store.get_users_by_id_case_insensitive(user_id) if users: # If an existing matrix ID is returned, then use it. if len(users) == 1: previously_registered_user_id = next(iter(users)) elif user_id in users: previously_registered_user_id = user_id else: # Do not attempt to continue generating Matrix IDs. raise MappingException( "Attempted to login as '{}' but it matches more than one user inexactly: {}".format( user_id, users ) ) return previously_registered_user_id return None # Mapping providers might not have get_extra_attributes: only call this # method if it exists. extra_attributes = None get_extra_attributes = getattr( self._user_mapping_provider, "get_extra_attributes", None ) if get_extra_attributes: extra_attributes = await get_extra_attributes(userinfo, token) await self._sso_handler.complete_sso_login_request( self.idp_id, remote_user_id, request, client_redirect_url, oidc_response_to_user_attributes, grandfather_existing_users, extra_attributes, auth_provider_session_id=sid, ) def _remote_id_from_userinfo(self, userinfo: UserInfo) -> str: """Extract the unique remote id from an OIDC UserInfo block Args: userinfo: An object representing the user given by the OIDC provider Returns: remote user id """ remote_user_id = self._user_mapping_provider.get_remote_user_id(userinfo) # Some OIDC providers use integer IDs, but Synapse expects external IDs # to be strings. return str(remote_user_id) # number of seconds a newly-generated client secret should be valid for CLIENT_SECRET_VALIDITY_SECONDS = 3600 # minimum remaining validity on a client secret before we should generate a new one CLIENT_SECRET_MIN_VALIDITY_SECONDS = 600 class JwtClientSecret: """A class which generates a new client secret on demand, based on a JWK This implementation is designed to comply with the requirements for Apple Sign in: https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens#3262048 It looks like those requirements are based on https://tools.ietf.org/html/rfc7523, but it's worth noting that we still put the generated secret in the "client_secret" field (or rather, whereever client_auth_method puts it) rather than in a client_assertion field in the body as that RFC seems to require. """ def __init__( self, key: OidcProviderClientSecretJwtKey, oauth_client_id: str, oauth_issuer: str, clock: Clock, ): self._key = key self._oauth_client_id = oauth_client_id self._oauth_issuer = oauth_issuer self._clock = clock self._cached_secret = b"" self._cached_secret_replacement_time = 0 def __str__(self) -> str: # if client_auth_method is client_secret_basic, then ClientAuth.prepare calls # encode_client_secret_basic, which calls "{}".format(secret), which ends up # here. return self._get_secret().decode("ascii") def __bytes__(self) -> bytes: # if client_auth_method is client_secret_post, then ClientAuth.prepare calls # encode_client_secret_post, which ends up here. return self._get_secret() def _get_secret(self) -> bytes: now = self._clock.time() # if we have enough validity on our existing secret, use it if now < self._cached_secret_replacement_time: return self._cached_secret issued_at = int(now) expires_at = issued_at + CLIENT_SECRET_VALIDITY_SECONDS # we copy the configured header because jwt.encode modifies it. header = dict(self._key.jwt_header) # see https://tools.ietf.org/html/rfc7523#section-3 payload = { "sub": self._oauth_client_id, "aud": self._oauth_issuer, "iat": issued_at, "exp": expires_at, **self._key.jwt_payload, } logger.info( "Generating new JWT for %s: %s %s", self._oauth_issuer, header, payload ) self._cached_secret = jwt.encode(header, payload, self._key.key) self._cached_secret_replacement_time = ( expires_at - CLIENT_SECRET_MIN_VALIDITY_SECONDS ) return self._cached_secret class OidcSessionTokenGenerator: """Methods for generating and checking OIDC Session cookies.""" def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self._server_name = hs.hostname self._macaroon_secret_key = hs.config.key.macaroon_secret_key def generate_oidc_session_token( self, state: str, session_data: "OidcSessionData", duration_in_ms: int = (60 * 60 * 1000), ) -> str: """Generates a signed token storing data about an OIDC session. When Synapse initiates an authorization flow, it creates a random state and a random nonce. Those parameters are given to the provider and should be verified when the client comes back from the provider. It is also used to store the client_redirect_url, which is used to complete the SSO login flow. Args: state: The ``state`` parameter passed to the OIDC provider. session_data: data to include in the session token. duration_in_ms: An optional duration for the token in milliseconds. Defaults to an hour. Returns: A signed macaroon token with the session information. """ macaroon = pymacaroons.Macaroon( location=self._server_name, identifier="key", key=self._macaroon_secret_key, ) macaroon.add_first_party_caveat("gen = 1") macaroon.add_first_party_caveat("type = session") macaroon.add_first_party_caveat("state = %s" % (state,)) macaroon.add_first_party_caveat("idp_id = %s" % (session_data.idp_id,)) macaroon.add_first_party_caveat("nonce = %s" % (session_data.nonce,)) macaroon.add_first_party_caveat( "client_redirect_url = %s" % (session_data.client_redirect_url,) ) macaroon.add_first_party_caveat( "ui_auth_session_id = %s" % (session_data.ui_auth_session_id,) ) now = self._clock.time_msec() expiry = now + duration_in_ms macaroon.add_first_party_caveat("time < %d" % (expiry,)) return macaroon.serialize() def verify_oidc_session_token( self, session: bytes, state: str ) -> "OidcSessionData": """Verifies and extract an OIDC session token. This verifies that a given session token was issued by this homeserver and extract the nonce and client_redirect_url caveats. Args: session: The session token to verify state: The state the OIDC provider gave back Returns: The data extracted from the session cookie Raises: KeyError if an expected caveat is missing from the macaroon. """ macaroon = pymacaroons.Macaroon.deserialize(session) v = pymacaroons.Verifier() v.satisfy_exact("gen = 1") v.satisfy_exact("type = session") v.satisfy_exact("state = %s" % (state,)) v.satisfy_general(lambda c: c.startswith("nonce = ")) v.satisfy_general(lambda c: c.startswith("idp_id = ")) v.satisfy_general(lambda c: c.startswith("client_redirect_url = ")) v.satisfy_general(lambda c: c.startswith("ui_auth_session_id = ")) satisfy_expiry(v, self._clock.time_msec) v.verify(macaroon, self._macaroon_secret_key) # Extract the session data from the token. nonce = get_value_from_macaroon(macaroon, "nonce") idp_id = get_value_from_macaroon(macaroon, "idp_id") client_redirect_url = get_value_from_macaroon(macaroon, "client_redirect_url") ui_auth_session_id = get_value_from_macaroon(macaroon, "ui_auth_session_id") return OidcSessionData( nonce=nonce, idp_id=idp_id, client_redirect_url=client_redirect_url, ui_auth_session_id=ui_auth_session_id, ) @attr.s(frozen=True, slots=True, auto_attribs=True) class OidcSessionData: """The attributes which are stored in a OIDC session cookie""" # the Identity Provider being used idp_id: str # The `nonce` parameter passed to the OIDC provider. nonce: str # The URL the client gave when it initiated the flow. ("" if this is a UI Auth) client_redirect_url: str # The session ID of the ongoing UI Auth ("" if this is a login) ui_auth_session_id: str class UserAttributeDict(TypedDict): localpart: Optional[str] display_name: Optional[str] emails: List[str] C = TypeVar("C") class OidcMappingProvider(Generic[C]): """A mapping provider maps a UserInfo object to user attributes. It should provide the API described by this class. """ def __init__(self, config: C): """ Args: config: A custom config object from this module, parsed by ``parse_config()`` """ @staticmethod def parse_config(config: dict) -> C: """Parse the dict provided by the homeserver's config Args: config: A dictionary containing configuration options for this provider Returns: A custom config object for this module """ raise NotImplementedError() def get_remote_user_id(self, userinfo: UserInfo) -> str: """Get a unique user ID for this user. Usually, in an OIDC-compliant scenario, it should be the ``sub`` claim from the UserInfo object. Args: userinfo: An object representing the user given by the OIDC provider Returns: A unique user ID """ raise NotImplementedError() async def map_user_attributes( self, userinfo: UserInfo, token: Token, failures: int ) -> UserAttributeDict: """Map a `UserInfo` object into user attributes. Args: userinfo: An object representing the user given by the OIDC provider token: A dict with the tokens returned by the provider failures: How many times a call to this function with this UserInfo has resulted in a failure. Returns: A dict containing the ``localpart`` and (optionally) the ``display_name`` """ raise NotImplementedError() async def get_extra_attributes(self, userinfo: UserInfo, token: Token) -> JsonDict: """Map a `UserInfo` object into additional attributes passed to the client during login. Args: userinfo: An object representing the user given by the OIDC provider token: A dict with the tokens returned by the provider Returns: A dict containing additional attributes. Must be JSON serializable. """ return {} # Used to clear out "None" values in templates def jinja_finalize(thing: Any) -> Any: return thing if thing is not None else "" env = Environment(finalize=jinja_finalize) @attr.s(slots=True, frozen=True, auto_attribs=True) class JinjaOidcMappingConfig: subject_claim: str localpart_template: Optional[Template] display_name_template: Optional[Template] email_template: Optional[Template] extra_attributes: Dict[str, Template] class JinjaOidcMappingProvider(OidcMappingProvider[JinjaOidcMappingConfig]): """An implementation of a mapping provider based on Jinja templates. This is the default mapping provider. """ def __init__(self, config: JinjaOidcMappingConfig): self._config = config @staticmethod def parse_config(config: dict) -> JinjaOidcMappingConfig: subject_claim = config.get("subject_claim", "sub") def parse_template_config(option_name: str) -> Optional[Template]: if option_name not in config: return None try: return env.from_string(config[option_name]) except Exception as e: raise ConfigError("invalid jinja template", path=[option_name]) from e localpart_template = parse_template_config("localpart_template") display_name_template = parse_template_config("display_name_template") email_template = parse_template_config("email_template") extra_attributes = {} # type Dict[str, Template] if "extra_attributes" in config: extra_attributes_config = config.get("extra_attributes") or {} if not isinstance(extra_attributes_config, dict): raise ConfigError("must be a dict", path=["extra_attributes"]) for key, value in extra_attributes_config.items(): try: extra_attributes[key] = env.from_string(value) except Exception as e: raise ConfigError( "invalid jinja template", path=["extra_attributes", key] ) from e return JinjaOidcMappingConfig( subject_claim=subject_claim, localpart_template=localpart_template, display_name_template=display_name_template, email_template=email_template, extra_attributes=extra_attributes, ) def get_remote_user_id(self, userinfo: UserInfo) -> str: return userinfo[self._config.subject_claim] async def map_user_attributes( self, userinfo: UserInfo, token: Token, failures: int ) -> UserAttributeDict: localpart = None if self._config.localpart_template: localpart = self._config.localpart_template.render(user=userinfo).strip() # Ensure only valid characters are included in the MXID. localpart = map_username_to_mxid_localpart(localpart) # Append suffix integer if last call to this function failed to produce # a usable mxid. localpart += str(failures) if failures else "" def render_template_field(template: Optional[Template]) -> Optional[str]: if template is None: return None return template.render(user=userinfo).strip() display_name = render_template_field(self._config.display_name_template) if display_name == "": display_name = None emails: List[str] = [] email = render_template_field(self._config.email_template) if email: emails.append(email) return UserAttributeDict( localpart=localpart, display_name=display_name, emails=emails ) async def get_extra_attributes(self, userinfo: UserInfo, token: Token) -> JsonDict: extras: Dict[str, str] = {} for key, template in self._config.extra_attributes.items(): try: extras[key] = template.render(user=userinfo).strip() except Exception as e: # Log an error and skip this value (don't break login for this). logger.error("Failed to render OIDC extra attribute %s: %s" % (key, e)) return extras synapse-1.53.0/synapse/handlers/pagination.py000066400000000000000000000700711420514467300212620ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # Copyright 2017 - 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Collection, Dict, List, Optional, Set import attr from twisted.python.failure import Failure from synapse.api.constants import EventTypes, Membership from synapse.api.errors import SynapseError from synapse.api.filtering import Filter from synapse.handlers.room import ShutdownRoomResponse from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.state import StateFilter from synapse.streams.config import PaginationConfig from synapse.types import JsonDict, Requester from synapse.util.async_helpers import ReadWriteLock from synapse.util.stringutils import random_string from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) class PurgeStatus: """Object tracking the status of a purge request This class contains information on the progress of a purge request, for return by get_purge_status. """ STATUS_ACTIVE = 0 STATUS_COMPLETE = 1 STATUS_FAILED = 2 STATUS_TEXT = { STATUS_ACTIVE: "active", STATUS_COMPLETE: "complete", STATUS_FAILED: "failed", } # Save the error message if an error occurs error: str = "" # Tracks whether this request has completed. One of STATUS_{ACTIVE,COMPLETE,FAILED}. status: int = STATUS_ACTIVE def asdict(self) -> JsonDict: ret = {"status": PurgeStatus.STATUS_TEXT[self.status]} if self.error: ret["error"] = self.error return ret @attr.s(slots=True, auto_attribs=True) class DeleteStatus: """Object tracking the status of a delete room request This class contains information on the progress of a delete room request, for return by get_delete_status. """ STATUS_PURGING = 0 STATUS_COMPLETE = 1 STATUS_FAILED = 2 STATUS_SHUTTING_DOWN = 3 STATUS_TEXT = { STATUS_PURGING: "purging", STATUS_COMPLETE: "complete", STATUS_FAILED: "failed", STATUS_SHUTTING_DOWN: "shutting_down", } # Tracks whether this request has completed. # One of STATUS_{PURGING,COMPLETE,FAILED,SHUTTING_DOWN}. status: int = STATUS_PURGING # Save the error message if an error occurs error: str = "" # Saves the result of an action to give it back to REST API shutdown_room: ShutdownRoomResponse = { "kicked_users": [], "failed_to_kick_users": [], "local_aliases": [], "new_room_id": None, } def asdict(self) -> JsonDict: ret = { "status": DeleteStatus.STATUS_TEXT[self.status], "shutdown_room": self.shutdown_room, } if self.error: ret["error"] = self.error return ret class PaginationHandler: """Handles pagination and purge history requests. These are in the same handler due to the fact we need to block clients paginating during a purge. """ # when to remove a completed deletion/purge from the results map CLEAR_PURGE_AFTER_MS = 1000 * 3600 * 24 # 24 hours def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.store = hs.get_datastore() self.storage = hs.get_storage() self.state_store = self.storage.state self.clock = hs.get_clock() self._server_name = hs.hostname self._room_shutdown_handler = hs.get_room_shutdown_handler() self.pagination_lock = ReadWriteLock() # IDs of rooms in which there currently an active purge *or delete* operation. self._purges_in_progress_by_room: Set[str] = set() # map from purge id to PurgeStatus self._purges_by_id: Dict[str, PurgeStatus] = {} # map from purge id to DeleteStatus self._delete_by_id: Dict[str, DeleteStatus] = {} # map from room id to delete ids # Dict[`room_id`, List[`delete_id`]] self._delete_by_room: Dict[str, List[str]] = {} self._event_serializer = hs.get_event_client_serializer() self._retention_default_max_lifetime = ( hs.config.retention.retention_default_max_lifetime ) self._retention_allowed_lifetime_min = ( hs.config.retention.retention_allowed_lifetime_min ) self._retention_allowed_lifetime_max = ( hs.config.retention.retention_allowed_lifetime_max ) if ( hs.config.worker.run_background_tasks and hs.config.retention.retention_enabled ): # Run the purge jobs described in the configuration file. for job in hs.config.retention.retention_purge_jobs: logger.info("Setting up purge job with config: %s", job) self.clock.looping_call( run_as_background_process, job.interval, "purge_history_for_rooms_in_range", self.purge_history_for_rooms_in_range, job.shortest_max_lifetime, job.longest_max_lifetime, ) async def purge_history_for_rooms_in_range( self, min_ms: Optional[int], max_ms: Optional[int] ) -> None: """Purge outdated events from rooms within the given retention range. If a default retention policy is defined in the server's configuration and its 'max_lifetime' is within this range, also targets rooms which don't have a retention policy. Args: min_ms: Duration in milliseconds that define the lower limit of the range to handle (exclusive). If None, it means that the range has no lower limit. max_ms: Duration in milliseconds that define the upper limit of the range to handle (inclusive). If None, it means that the range has no upper limit. """ # We want the storage layer to include rooms with no retention policy in its # return value only if a default retention policy is defined in the server's # configuration and that policy's 'max_lifetime' is either lower (or equal) than # max_ms or higher than min_ms (or both). if self._retention_default_max_lifetime is not None: include_null = True if min_ms is not None and min_ms >= self._retention_default_max_lifetime: # The default max_lifetime is lower than (or equal to) min_ms. include_null = False if max_ms is not None and max_ms < self._retention_default_max_lifetime: # The default max_lifetime is higher than max_ms. include_null = False else: include_null = False logger.info( "[purge] Running purge job for %s < max_lifetime <= %s (include NULLs = %s)", min_ms, max_ms, include_null, ) rooms = await self.store.get_rooms_for_retention_period_in_range( min_ms, max_ms, include_null ) logger.debug("[purge] Rooms to purge: %s", rooms) for room_id, retention_policy in rooms.items(): logger.info("[purge] Attempting to purge messages in room %s", room_id) if room_id in self._purges_in_progress_by_room: logger.warning( "[purge] not purging room %s as there's an ongoing purge running" " for this room", room_id, ) continue # If max_lifetime is None, it means that the room has no retention policy. # Given we only retrieve such rooms when there's a default retention policy # defined in the server's configuration, we can safely assume that's the # case and use it for this room. max_lifetime = ( retention_policy["max_lifetime"] or self._retention_default_max_lifetime ) # Cap the effective max_lifetime to be within the range allowed in the # config. # We do this in two steps: # 1. Make sure it's higher or equal to the minimum allowed value, and if # it's not replace it with that value. This is because the server # operator can be required to not delete information before a given # time, e.g. to comply with freedom of information laws. # 2. Make sure the resulting value is lower or equal to the maximum allowed # value, and if it's not replace it with that value. This is because the # server operator can be required to delete any data after a specific # amount of time. if self._retention_allowed_lifetime_min is not None: max_lifetime = max(self._retention_allowed_lifetime_min, max_lifetime) if self._retention_allowed_lifetime_max is not None: max_lifetime = min(max_lifetime, self._retention_allowed_lifetime_max) logger.debug("[purge] max_lifetime for room %s: %s", room_id, max_lifetime) # Figure out what token we should start purging at. ts = self.clock.time_msec() - max_lifetime stream_ordering = await self.store.find_first_stream_ordering_after_ts(ts) r = await self.store.get_room_event_before_stream_ordering( room_id, stream_ordering, ) if not r: logger.warning( "[purge] purging events not possible: No event found " "(ts %i => stream_ordering %i)", ts, stream_ordering, ) continue (stream, topo, _event_id) = r token = "t%d-%d" % (topo, stream) purge_id = random_string(16) self._purges_by_id[purge_id] = PurgeStatus() logger.info( "Starting purging events in room %s (purge_id %s)" % (room_id, purge_id) ) # We want to purge everything, including local events, and to run the purge in # the background so that it's not blocking any other operation apart from # other purges in the same room. run_as_background_process( "_purge_history", self._purge_history, purge_id, room_id, token, True, ) def start_purge_history( self, room_id: str, token: str, delete_local_events: bool = False ) -> str: """Start off a history purge on a room. Args: room_id: The room to purge from token: topological token to delete events before delete_local_events: True to delete local events as well as remote ones Returns: unique ID for this purge transaction. """ if room_id in self._purges_in_progress_by_room: raise SynapseError( 400, "History purge already in progress for %s" % (room_id,) ) purge_id = random_string(16) # we log the purge_id here so that it can be tied back to the # request id in the log lines. logger.info("[purge] starting purge_id %s", purge_id) self._purges_by_id[purge_id] = PurgeStatus() run_as_background_process( "purge_history", self._purge_history, purge_id, room_id, token, delete_local_events, ) return purge_id async def _purge_history( self, purge_id: str, room_id: str, token: str, delete_local_events: bool ) -> None: """Carry out a history purge on a room. Args: purge_id: The ID for this purge. room_id: The room to purge from token: topological token to delete events before delete_local_events: True to delete local events as well as remote ones """ self._purges_in_progress_by_room.add(room_id) try: with await self.pagination_lock.write(room_id): await self.storage.purge_events.purge_history( room_id, token, delete_local_events ) logger.info("[purge] complete") self._purges_by_id[purge_id].status = PurgeStatus.STATUS_COMPLETE except Exception: f = Failure() logger.error( "[purge] failed", exc_info=(f.type, f.value, f.getTracebackObject()) # type: ignore ) self._purges_by_id[purge_id].status = PurgeStatus.STATUS_FAILED self._purges_by_id[purge_id].error = f.getErrorMessage() finally: self._purges_in_progress_by_room.discard(room_id) # remove the purge from the list 24 hours after it completes def clear_purge() -> None: del self._purges_by_id[purge_id] self.hs.get_reactor().callLater( PaginationHandler.CLEAR_PURGE_AFTER_MS / 1000, clear_purge ) def get_purge_status(self, purge_id: str) -> Optional[PurgeStatus]: """Get the current status of an active purge Args: purge_id: purge_id returned by start_purge_history """ return self._purges_by_id.get(purge_id) def get_delete_status(self, delete_id: str) -> Optional[DeleteStatus]: """Get the current status of an active deleting Args: delete_id: delete_id returned by start_shutdown_and_purge_room """ return self._delete_by_id.get(delete_id) def get_delete_ids_by_room(self, room_id: str) -> Optional[Collection[str]]: """Get all active delete ids by room Args: room_id: room_id that is deleted """ return self._delete_by_room.get(room_id) async def purge_room(self, room_id: str, force: bool = False) -> None: """Purge the given room from the database. This function is part the delete room v1 API. Args: room_id: room to be purged force: set true to skip checking for joined users. """ with await self.pagination_lock.write(room_id): # first check that we have no users in this room if not force: joined = await self.store.is_host_joined(room_id, self._server_name) if joined: raise SynapseError(400, "Users are still joined to this room") await self.storage.purge_events.purge_room(room_id) async def get_messages( self, requester: Requester, room_id: str, pagin_config: PaginationConfig, as_client_event: bool = True, event_filter: Optional[Filter] = None, ) -> Dict[str, Any]: """Get messages in a room. Args: requester: The user requesting messages. room_id: The room they want messages from. pagin_config: The pagination config rules to apply, if any. as_client_event: True to get events in client-server format. event_filter: Filter to apply to results or None Returns: Pagination API results """ user_id = requester.user.to_string() if pagin_config.from_token: from_token = pagin_config.from_token else: from_token = self.hs.get_event_sources().get_current_token_for_pagination() if pagin_config.limit is None: # This shouldn't happen as we've set a default limit before this # gets called. raise Exception("limit not set") room_token = from_token.room_key with await self.pagination_lock.read(room_id): ( membership, member_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, user_id, allow_departed_users=True ) if pagin_config.direction == "b": # if we're going backwards, we might need to backfill. This # requires that we have a topo token. if room_token.topological: curr_topo = room_token.topological else: curr_topo = await self.store.get_current_topological_token( room_id, room_token.stream ) if membership == Membership.LEAVE: # If they have left the room then clamp the token to be before # they left the room, to save the effort of loading from the # database. # This is only None if the room is world_readable, in which # case "JOIN" would have been returned. assert member_event_id leave_token = await self.store.get_topological_token_for_event( member_event_id ) assert leave_token.topological is not None if leave_token.topological < curr_topo: from_token = from_token.copy_and_replace( "room_key", leave_token ) await self.hs.get_federation_handler().maybe_backfill( room_id, curr_topo, limit=pagin_config.limit, ) to_room_key = None if pagin_config.to_token: to_room_key = pagin_config.to_token.room_key events, next_key = await self.store.paginate_room_events( room_id=room_id, from_key=from_token.room_key, to_key=to_room_key, direction=pagin_config.direction, limit=pagin_config.limit, event_filter=event_filter, ) next_token = from_token.copy_and_replace("room_key", next_key) if events: if event_filter: events = await event_filter.filter(events) events = await filter_events_for_client( self.storage, user_id, events, is_peeking=(member_event_id is None) ) if not events: return { "chunk": [], "start": await from_token.to_string(self.store), "end": await next_token.to_string(self.store), } state = None if event_filter and event_filter.lazy_load_members and len(events) > 0: # TODO: remove redundant members # FIXME: we also care about invite targets etc. state_filter = StateFilter.from_types( (EventTypes.Member, event.sender) for event in events ) state_ids = await self.state_store.get_state_ids_for_event( events[0].event_id, state_filter=state_filter ) if state_ids: state_dict = await self.store.get_events(list(state_ids.values())) state = state_dict.values() aggregations = await self.store.get_bundled_aggregations(events, user_id) time_now = self.clock.time_msec() chunk = { "chunk": ( self._event_serializer.serialize_events( events, time_now, bundle_aggregations=aggregations, as_client_event=as_client_event, ) ), "start": await from_token.to_string(self.store), "end": await next_token.to_string(self.store), } if state: chunk["state"] = self._event_serializer.serialize_events( state, time_now, as_client_event=as_client_event ) return chunk async def _shutdown_and_purge_room( self, delete_id: str, room_id: str, requester_user_id: str, new_room_user_id: Optional[str] = None, new_room_name: Optional[str] = None, message: Optional[str] = None, block: bool = False, purge: bool = True, force_purge: bool = False, ) -> None: """ Shuts down and purges a room. See `RoomShutdownHandler.shutdown_room` for details of creation of the new room Args: delete_id: The ID for this delete. room_id: The ID of the room to shut down. requester_user_id: User who requested the action. Will be recorded as putting the room on the blocking list. new_room_user_id: If set, a new room will be created with this user ID as the creator and admin, and all users in the old room will be moved into that room. If not set, no new room will be created and the users will just be removed from the old room. new_room_name: A string representing the name of the room that new users will be invited to. Defaults to `Content Violation Notification` message: A string containing the first message that will be sent as `new_room_user_id` in the new room. Ideally this will clearly convey why the original room was shut down. Defaults to `Sharing illegal content on this server is not permitted and rooms in violation will be blocked.` block: If set to `true`, this room will be added to a blocking list, preventing future attempts to join the room. Defaults to `false`. purge: If set to `true`, purge the given room from the database. force_purge: If set to `true`, the room will be purged from database also if it fails to remove some users from room. Saves a `RoomShutdownHandler.ShutdownRoomResponse` in `DeleteStatus`: """ self._purges_in_progress_by_room.add(room_id) try: with await self.pagination_lock.write(room_id): self._delete_by_id[delete_id].status = DeleteStatus.STATUS_SHUTTING_DOWN self._delete_by_id[ delete_id ].shutdown_room = await self._room_shutdown_handler.shutdown_room( room_id=room_id, requester_user_id=requester_user_id, new_room_user_id=new_room_user_id, new_room_name=new_room_name, message=message, block=block, ) self._delete_by_id[delete_id].status = DeleteStatus.STATUS_PURGING if purge: logger.info("starting purge room_id %s", room_id) # first check that we have no users in this room if not force_purge: joined = await self.store.is_host_joined( room_id, self._server_name ) if joined: raise SynapseError( 400, "Users are still joined to this room" ) await self.storage.purge_events.purge_room(room_id) logger.info("complete") self._delete_by_id[delete_id].status = DeleteStatus.STATUS_COMPLETE except Exception: f = Failure() logger.error( "failed", exc_info=(f.type, f.value, f.getTracebackObject()), # type: ignore ) self._delete_by_id[delete_id].status = DeleteStatus.STATUS_FAILED self._delete_by_id[delete_id].error = f.getErrorMessage() finally: self._purges_in_progress_by_room.discard(room_id) # remove the delete from the list 24 hours after it completes def clear_delete() -> None: del self._delete_by_id[delete_id] self._delete_by_room[room_id].remove(delete_id) if not self._delete_by_room[room_id]: del self._delete_by_room[room_id] self.hs.get_reactor().callLater( PaginationHandler.CLEAR_PURGE_AFTER_MS / 1000, clear_delete ) def start_shutdown_and_purge_room( self, room_id: str, requester_user_id: str, new_room_user_id: Optional[str] = None, new_room_name: Optional[str] = None, message: Optional[str] = None, block: bool = False, purge: bool = True, force_purge: bool = False, ) -> str: """Start off shut down and purge on a room. Args: room_id: The ID of the room to shut down. requester_user_id: User who requested the action and put the room on the blocking list. new_room_user_id: If set, a new room will be created with this user ID as the creator and admin, and all users in the old room will be moved into that room. If not set, no new room will be created and the users will just be removed from the old room. new_room_name: A string representing the name of the room that new users will be invited to. Defaults to `Content Violation Notification` message: A string containing the first message that will be sent as `new_room_user_id` in the new room. Ideally this will clearly convey why the original room was shut down. Defaults to `Sharing illegal content on this server is not permitted and rooms in violation will be blocked.` block: If set to `true`, this room will be added to a blocking list, preventing future attempts to join the room. Defaults to `false`. purge: If set to `true`, purge the given room from the database. force_purge: If set to `true`, the room will be purged from database also if it fails to remove some users from room. Returns: unique ID for this delete transaction. """ if room_id in self._purges_in_progress_by_room: raise SynapseError( 400, "History purge already in progress for %s" % (room_id,) ) # This check is double to `RoomShutdownHandler.shutdown_room` # But here the requester get a direct response / error with HTTP request # and do not have to check the purge status if new_room_user_id is not None: if not self.hs.is_mine_id(new_room_user_id): raise SynapseError( 400, "User must be our own: %s" % (new_room_user_id,) ) delete_id = random_string(16) # we log the delete_id here so that it can be tied back to the # request id in the log lines. logger.info( "starting shutdown room_id %s with delete_id %s", room_id, delete_id, ) self._delete_by_id[delete_id] = DeleteStatus() self._delete_by_room.setdefault(room_id, []).append(delete_id) run_as_background_process( "shutdown_and_purge_room", self._shutdown_and_purge_room, delete_id, room_id, requester_user_id, new_room_user_id, new_room_name, message, block, purge, force_purge, ) return delete_id synapse-1.53.0/synapse/handlers/password_policy.py000066400000000000000000000064241420514467300223530ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import TYPE_CHECKING from synapse.api.errors import Codes, PasswordRefusedError if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class PasswordPolicyHandler: def __init__(self, hs: "HomeServer"): self.policy = hs.config.auth.password_policy self.enabled = hs.config.auth.password_policy_enabled # Regexps for the spec'd policy parameters. self.regexp_digit = re.compile("[0-9]") self.regexp_symbol = re.compile("[^a-zA-Z0-9]") self.regexp_uppercase = re.compile("[A-Z]") self.regexp_lowercase = re.compile("[a-z]") def validate_password(self, password: str) -> None: """Checks whether a given password complies with the server's policy. Args: password: The password to check against the server's policy. Raises: PasswordRefusedError: The password doesn't comply with the server's policy. """ if not self.enabled: return minimum_accepted_length = self.policy.get("minimum_length", 0) if len(password) < minimum_accepted_length: raise PasswordRefusedError( msg=( "The password must be at least %d characters long" % minimum_accepted_length ), errcode=Codes.PASSWORD_TOO_SHORT, ) if ( self.policy.get("require_digit", False) and self.regexp_digit.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one digit", errcode=Codes.PASSWORD_NO_DIGIT, ) if ( self.policy.get("require_symbol", False) and self.regexp_symbol.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one symbol", errcode=Codes.PASSWORD_NO_SYMBOL, ) if ( self.policy.get("require_uppercase", False) and self.regexp_uppercase.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one uppercase letter", errcode=Codes.PASSWORD_NO_UPPERCASE, ) if ( self.policy.get("require_lowercase", False) and self.regexp_lowercase.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one lowercase letter", errcode=Codes.PASSWORD_NO_LOWERCASE, ) synapse-1.53.0/synapse/handlers/presence.py000066400000000000000000002556161420514467300207470ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module is responsible for keeping track of presence status of local and remote users. The methods that define policy are: - PresenceHandler._update_states - PresenceHandler._handle_timeouts - should_notify """ import abc import contextlib import logging from bisect import bisect from contextlib import contextmanager from types import TracebackType from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, Dict, FrozenSet, Generator, Iterable, List, Optional, Set, Tuple, Type, Union, ) from prometheus_client import Counter from typing_extensions import ContextManager import synapse.metrics from synapse.api.constants import EventTypes, Membership, PresenceState from synapse.api.errors import SynapseError from synapse.api.presence import UserPresenceState from synapse.appservice import ApplicationService from synapse.events.presence_router import PresenceRouter from synapse.logging.context import run_in_background from synapse.metrics import LaterGauge from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.http.presence import ( ReplicationBumpPresenceActiveTime, ReplicationPresenceSetState, ) from synapse.replication.http.streams import ReplicationGetStreamUpdates from synapse.replication.tcp.commands import ClearUserSyncsCommand from synapse.replication.tcp.streams import PresenceFederationStream, PresenceStream from synapse.storage.databases.main import DataStore from synapse.streams import EventSource from synapse.types import JsonDict, UserID, get_domain_from_id from synapse.util.async_helpers import Linearizer from synapse.util.caches.descriptors import _CacheContext, cached from synapse.util.metrics import Measure from synapse.util.wheel_timer import WheelTimer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) notified_presence_counter = Counter("synapse_handler_presence_notified_presence", "") federation_presence_out_counter = Counter( "synapse_handler_presence_federation_presence_out", "" ) presence_updates_counter = Counter("synapse_handler_presence_presence_updates", "") timers_fired_counter = Counter("synapse_handler_presence_timers_fired", "") federation_presence_counter = Counter( "synapse_handler_presence_federation_presence", "" ) bump_active_time_counter = Counter("synapse_handler_presence_bump_active_time", "") get_updates_counter = Counter("synapse_handler_presence_get_updates", "", ["type"]) notify_reason_counter = Counter( "synapse_handler_presence_notify_reason", "", ["reason"] ) state_transition_counter = Counter( "synapse_handler_presence_state_transition", "", ["from", "to"] ) # If a user was last active in the last LAST_ACTIVE_GRANULARITY, consider them # "currently_active" LAST_ACTIVE_GRANULARITY = 60 * 1000 # How long to wait until a new /events or /sync request before assuming # the client has gone. SYNC_ONLINE_TIMEOUT = 30 * 1000 # How long to wait before marking the user as idle. Compared against last active IDLE_TIMER = 5 * 60 * 1000 # How often we expect remote servers to resend us presence. FEDERATION_TIMEOUT = 30 * 60 * 1000 # How often to resend presence to remote servers FEDERATION_PING_INTERVAL = 25 * 60 * 1000 # How long we will wait before assuming that the syncs from an external process # are dead. EXTERNAL_PROCESS_EXPIRY = 5 * 60 * 1000 # Delay before a worker tells the presence handler that a user has stopped # syncing. UPDATE_SYNCING_USERS_MS = 10 * 1000 assert LAST_ACTIVE_GRANULARITY < IDLE_TIMER class BasePresenceHandler(abc.ABC): """Parts of the PresenceHandler that are shared between workers and presence writer""" def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.store = hs.get_datastore() self.presence_router = hs.get_presence_router() self.state = hs.get_state_handler() self.is_mine_id = hs.is_mine_id self._federation = None if hs.should_send_federation(): self._federation = hs.get_federation_sender() self._federation_queue = PresenceFederationQueue(hs, self) self._busy_presence_enabled = hs.config.experimental.msc3026_enabled active_presence = self.store.take_presence_startup_info() self.user_to_current_state = {state.user_id: state for state in active_presence} @abc.abstractmethod async def user_syncing( self, user_id: str, affect_presence: bool ) -> ContextManager[None]: """Returns a context manager that should surround any stream requests from the user. This allows us to keep track of who is currently streaming and who isn't without having to have timers outside of this module to avoid flickering when users disconnect/reconnect. Args: user_id: the user that is starting a sync affect_presence: If false this function will be a no-op. Useful for streams that are not associated with an actual client that is being used by a user. """ @abc.abstractmethod def get_currently_syncing_users_for_replication(self) -> Iterable[str]: """Get an iterable of syncing users on this worker, to send to the presence handler This is called when a replication connection is established. It should return a list of user ids, which are then sent as USER_SYNC commands to inform the process handling presence about those users. Returns: An iterable of user_id strings. """ async def get_state(self, target_user: UserID) -> UserPresenceState: results = await self.get_states([target_user.to_string()]) return results[0] async def get_states( self, target_user_ids: Iterable[str] ) -> List[UserPresenceState]: """Get the presence state for users.""" updates_d = await self.current_state_for_users(target_user_ids) updates = list(updates_d.values()) for user_id in set(target_user_ids) - {u.user_id for u in updates}: updates.append(UserPresenceState.default(user_id)) return updates async def current_state_for_users( self, user_ids: Iterable[str] ) -> Dict[str, UserPresenceState]: """Get the current presence state for multiple users. Returns: dict: `user_id` -> `UserPresenceState` """ states = { user_id: self.user_to_current_state.get(user_id, None) for user_id in user_ids } missing = [user_id for user_id, state in states.items() if not state] if missing: # There are things not in our in memory cache. Lets pull them out of # the database. res = await self.store.get_presence_for_users(missing) states.update(res) missing = [user_id for user_id, state in states.items() if not state] if missing: new = { user_id: UserPresenceState.default(user_id) for user_id in missing } states.update(new) self.user_to_current_state.update(new) return states @abc.abstractmethod async def set_state( self, target_user: UserID, state: JsonDict, ignore_status_msg: bool = False, force_notify: bool = False, ) -> None: """Set the presence state of the user. Args: target_user: The ID of the user to set the presence state of. state: The presence state as a JSON dictionary. ignore_status_msg: True to ignore the "status_msg" field of the `state` dict. If False, the user's current status will be updated. force_notify: Whether to force notification of the update to clients. """ @abc.abstractmethod async def bump_presence_active_time(self, user: UserID) -> None: """We've seen the user do something that indicates they're interacting with the app. """ async def update_external_syncs_row( self, process_id: str, user_id: str, is_syncing: bool, sync_time_msec: int ) -> None: """Update the syncing users for an external process as a delta. This is a no-op when presence is handled by a different worker. Args: process_id: An identifier for the process the users are syncing against. This allows synapse to process updates as user start and stop syncing against a given process. user_id: The user who has started or stopped syncing is_syncing: Whether or not the user is now syncing sync_time_msec: Time in ms when the user was last syncing """ pass async def update_external_syncs_clear(self, process_id: str) -> None: """Marks all users that had been marked as syncing by a given process as offline. Used when the process has stopped/disappeared. This is a no-op when presence is handled by a different worker. """ pass async def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: """Process streams received over replication.""" await self._federation_queue.process_replication_rows( stream_name, instance_name, token, rows ) def get_federation_queue(self) -> "PresenceFederationQueue": """Get the presence federation queue.""" return self._federation_queue async def maybe_send_presence_to_interested_destinations( self, states: List[UserPresenceState] ) -> None: """If this instance is a federation sender, send the states to all destinations that are interested. Filters out any states for remote users. """ if not self._federation: return states = [s for s in states if self.is_mine_id(s.user_id)] if not states: return hosts_to_states = await get_interested_remotes( self.store, self.presence_router, states, ) for destination, host_states in hosts_to_states.items(): self._federation.send_presence_to_destinations(host_states, [destination]) async def send_full_presence_to_users(self, user_ids: Collection[str]) -> None: """ Adds to the list of users who should receive a full snapshot of presence upon their next sync. Note that this only works for local users. Then, grabs the current presence state for a given set of users and adds it to the top of the presence stream. Args: user_ids: The IDs of the local users to send full presence to. """ # Retrieve one of the users from the given set if not user_ids: raise Exception( "send_full_presence_to_users must be called with at least one user" ) user_id = next(iter(user_ids)) # Mark all users as receiving full presence on their next sync await self.store.add_users_to_send_full_presence_to(user_ids) # Add a new entry to the presence stream. Since we use stream tokens to determine whether a # local user should receive a full snapshot of presence when they sync, we need to bump the # presence stream so that subsequent syncs with no presence activity in between won't result # in the client receiving multiple full snapshots of presence. # # If we bump the stream ID, then the user will get a higher stream token next sync, and thus # correctly won't receive a second snapshot. # Get the current presence state for one of the users (defaults to offline if not found) current_presence_state = await self.get_state(UserID.from_string(user_id)) # Convert the UserPresenceState object into a serializable dict state = { "presence": current_presence_state.state, "status_message": current_presence_state.status_msg, } # Copy the presence state to the tip of the presence stream. # We set force_notify=True here so that this presence update is guaranteed to # increment the presence stream ID (which resending the current user's presence # otherwise would not do). await self.set_state(UserID.from_string(user_id), state, force_notify=True) async def is_visible(self, observed_user: UserID, observer_user: UserID) -> bool: raise NotImplementedError( "Attempting to check presence on a non-presence worker." ) class _NullContextManager(ContextManager[None]): """A context manager which does nothing.""" def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: pass class WorkerPresenceHandler(BasePresenceHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.hs = hs self._presence_writer_instance = hs.config.worker.writers.presence[0] self._presence_enabled = hs.config.server.use_presence # Route presence EDUs to the right worker hs.get_federation_registry().register_instances_for_edu( "m.presence", hs.config.worker.writers.presence, ) # The number of ongoing syncs on this process, by user id. # Empty if _presence_enabled is false. self._user_to_num_current_syncs: Dict[str, int] = {} self.notifier = hs.get_notifier() self.instance_id = hs.get_instance_id() # user_id -> last_sync_ms. Lists the users that have stopped syncing but # we haven't notified the presence writer of that yet self.users_going_offline: Dict[str, int] = {} self._bump_active_client = ReplicationBumpPresenceActiveTime.make_client(hs) self._set_state_client = ReplicationPresenceSetState.make_client(hs) self._send_stop_syncing_loop = self.clock.looping_call( self.send_stop_syncing, UPDATE_SYNCING_USERS_MS ) self._busy_presence_enabled = hs.config.experimental.msc3026_enabled hs.get_reactor().addSystemEventTrigger( "before", "shutdown", run_as_background_process, "generic_presence.on_shutdown", self._on_shutdown, ) async def _on_shutdown(self) -> None: if self._presence_enabled: self.hs.get_tcp_replication().send_command( ClearUserSyncsCommand(self.instance_id) ) def send_user_sync(self, user_id: str, is_syncing: bool, last_sync_ms: int) -> None: if self._presence_enabled: self.hs.get_tcp_replication().send_user_sync( self.instance_id, user_id, is_syncing, last_sync_ms ) def mark_as_coming_online(self, user_id: str) -> None: """A user has started syncing. Send a UserSync to the presence writer, unless they had recently stopped syncing. """ going_offline = self.users_going_offline.pop(user_id, None) if not going_offline: # Safe to skip because we haven't yet told the presence writer they # were offline self.send_user_sync(user_id, True, self.clock.time_msec()) def mark_as_going_offline(self, user_id: str) -> None: """A user has stopped syncing. We wait before notifying the presence writer as its likely they'll come back soon. This allows us to avoid sending a stopped syncing immediately followed by a started syncing notification to the presence writer """ self.users_going_offline[user_id] = self.clock.time_msec() def send_stop_syncing(self) -> None: """Check if there are any users who have stopped syncing a while ago and haven't come back yet. If there are poke the presence writer about them. """ now = self.clock.time_msec() for user_id, last_sync_ms in list(self.users_going_offline.items()): if now - last_sync_ms > UPDATE_SYNCING_USERS_MS: self.users_going_offline.pop(user_id, None) self.send_user_sync(user_id, False, last_sync_ms) async def user_syncing( self, user_id: str, affect_presence: bool ) -> ContextManager[None]: """Record that a user is syncing. Called by the sync and events servlets to record that a user has connected to this worker and is waiting for some events. """ if not affect_presence or not self._presence_enabled: return _NullContextManager() curr_sync = self._user_to_num_current_syncs.get(user_id, 0) self._user_to_num_current_syncs[user_id] = curr_sync + 1 # If we went from no in flight sync to some, notify replication if self._user_to_num_current_syncs[user_id] == 1: self.mark_as_coming_online(user_id) def _end() -> None: # We check that the user_id is in user_to_num_current_syncs because # user_to_num_current_syncs may have been cleared if we are # shutting down. if user_id in self._user_to_num_current_syncs: self._user_to_num_current_syncs[user_id] -= 1 # If we went from one in flight sync to non, notify replication if self._user_to_num_current_syncs[user_id] == 0: self.mark_as_going_offline(user_id) @contextlib.contextmanager def _user_syncing() -> Generator[None, None, None]: try: yield finally: _end() return _user_syncing() async def notify_from_replication( self, states: List[UserPresenceState], stream_id: int ) -> None: parties = await get_interested_parties(self.store, self.presence_router, states) room_ids_to_states, users_to_states = parties self.notifier.on_new_event( "presence_key", stream_id, rooms=room_ids_to_states.keys(), users=users_to_states.keys(), ) async def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: await super().process_replication_rows(stream_name, instance_name, token, rows) if stream_name != PresenceStream.NAME: return states = [ UserPresenceState( row.user_id, row.state, row.last_active_ts, row.last_federation_update_ts, row.last_user_sync_ts, row.status_msg, row.currently_active, ) for row in rows ] # The list of states to notify sync streams and remote servers about. # This is calculated by comparing the old and new states for each user # using `should_notify(..)`. # # Note that this is necessary as the presence writer will periodically # flush presence state changes that should not be notified about to the # DB, and so will be sent over the replication stream. state_to_notify = [] for new_state in states: old_state = self.user_to_current_state.get(new_state.user_id) self.user_to_current_state[new_state.user_id] = new_state if not old_state or should_notify(old_state, new_state): state_to_notify.append(new_state) stream_id = token await self.notify_from_replication(state_to_notify, stream_id) # If this is a federation sender, notify about presence updates. await self.maybe_send_presence_to_interested_destinations(state_to_notify) def get_currently_syncing_users_for_replication(self) -> Iterable[str]: return [ user_id for user_id, count in self._user_to_num_current_syncs.items() if count > 0 ] async def set_state( self, target_user: UserID, state: JsonDict, ignore_status_msg: bool = False, force_notify: bool = False, ) -> None: """Set the presence state of the user. Args: target_user: The ID of the user to set the presence state of. state: The presence state as a JSON dictionary. ignore_status_msg: True to ignore the "status_msg" field of the `state` dict. If False, the user's current status will be updated. force_notify: Whether to force notification of the update to clients. """ presence = state["presence"] valid_presence = ( PresenceState.ONLINE, PresenceState.UNAVAILABLE, PresenceState.OFFLINE, PresenceState.BUSY, ) if presence not in valid_presence or ( presence == PresenceState.BUSY and not self._busy_presence_enabled ): raise SynapseError(400, "Invalid presence state") user_id = target_user.to_string() # If presence is disabled, no-op if not self.hs.config.server.use_presence: return # Proxy request to instance that writes presence await self._set_state_client( instance_name=self._presence_writer_instance, user_id=user_id, state=state, ignore_status_msg=ignore_status_msg, force_notify=force_notify, ) async def bump_presence_active_time(self, user: UserID) -> None: """We've seen the user do something that indicates they're interacting with the app. """ # If presence is disabled, no-op if not self.hs.config.server.use_presence: return # Proxy request to instance that writes presence user_id = user.to_string() await self._bump_active_client( instance_name=self._presence_writer_instance, user_id=user_id ) class PresenceHandler(BasePresenceHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.hs = hs self.server_name = hs.hostname self.wheel_timer: WheelTimer[str] = WheelTimer() self.notifier = hs.get_notifier() self._presence_enabled = hs.config.server.use_presence federation_registry = hs.get_federation_registry() federation_registry.register_edu_handler("m.presence", self.incoming_presence) LaterGauge( "synapse_handlers_presence_user_to_current_state_size", "", [], lambda: len(self.user_to_current_state), ) now = self.clock.time_msec() for state in self.user_to_current_state.values(): self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_active_ts + IDLE_TIMER ) self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_user_sync_ts + SYNC_ONLINE_TIMEOUT, ) if self.is_mine_id(state.user_id): self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_federation_update_ts + FEDERATION_PING_INTERVAL, ) else: self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_federation_update_ts + FEDERATION_TIMEOUT, ) # Set of users who have presence in the `user_to_current_state` that # have not yet been persisted self.unpersisted_users_changes: Set[str] = set() hs.get_reactor().addSystemEventTrigger( "before", "shutdown", run_as_background_process, "presence.on_shutdown", self._on_shutdown, ) self._next_serial = 1 # Keeps track of the number of *ongoing* syncs on this process. While # this is non zero a user will never go offline. self.user_to_num_current_syncs: Dict[str, int] = {} # Keeps track of the number of *ongoing* syncs on other processes. # While any sync is ongoing on another process the user will never # go offline. # Each process has a unique identifier and an update frequency. If # no update is received from that process within the update period then # we assume that all the sync requests on that process have stopped. # Stored as a dict from process_id to set of user_id, and a dict of # process_id to millisecond timestamp last updated. self.external_process_to_current_syncs: Dict[str, Set[str]] = {} self.external_process_last_updated_ms: Dict[str, int] = {} self.external_sync_linearizer = Linearizer(name="external_sync_linearizer") if self._presence_enabled: # Start a LoopingCall in 30s that fires every 5s. # The initial delay is to allow disconnected clients a chance to # reconnect before we treat them as offline. def run_timeout_handler() -> Awaitable[None]: return run_as_background_process( "handle_presence_timeouts", self._handle_timeouts ) self.clock.call_later( 30, self.clock.looping_call, run_timeout_handler, 5000 ) def run_persister() -> Awaitable[None]: return run_as_background_process( "persist_presence_changes", self._persist_unpersisted_changes ) self.clock.call_later(60, self.clock.looping_call, run_persister, 60 * 1000) LaterGauge( "synapse_handlers_presence_wheel_timer_size", "", [], lambda: len(self.wheel_timer), ) # Used to handle sending of presence to newly joined users/servers if self._presence_enabled: self.notifier.add_replication_callback(self.notify_new_event) # Presence is best effort and quickly heals itself, so lets just always # stream from the current state when we restart. self._event_pos = self.store.get_room_max_stream_ordering() self._event_processing = False async def _on_shutdown(self) -> None: """Gets called when shutting down. This lets us persist any updates that we haven't yet persisted, e.g. updates that only changes some internal timers. This allows changes to persist across startup without having to persist every single change. If this does not run it simply means that some of the timers will fire earlier than they should when synapse is restarted. This affect of this is some spurious presence changes that will self-correct. """ # If the DB pool has already terminated, don't try updating if not self.store.db_pool.is_running(): return logger.info( "Performing _on_shutdown. Persisting %d unpersisted changes", len(self.user_to_current_state), ) if self.unpersisted_users_changes: await self.store.update_presence( [ self.user_to_current_state[user_id] for user_id in self.unpersisted_users_changes ] ) logger.info("Finished _on_shutdown") async def _persist_unpersisted_changes(self) -> None: """We periodically persist the unpersisted changes, as otherwise they may stack up and slow down shutdown times. """ unpersisted = self.unpersisted_users_changes self.unpersisted_users_changes = set() if unpersisted: logger.info("Persisting %d unpersisted presence updates", len(unpersisted)) await self.store.update_presence( [self.user_to_current_state[user_id] for user_id in unpersisted] ) async def _update_states( self, new_states: Iterable[UserPresenceState], force_notify: bool = False ) -> None: """Updates presence of users. Sets the appropriate timeouts. Pokes the notifier and federation if and only if the changed presence state should be sent to clients/servers. Args: new_states: The new user presence state updates to process. force_notify: Whether to force notifying clients of this presence state update, even if it doesn't change the state of a user's presence (e.g online -> online). This is currently used to bump the max presence stream ID without changing any user's presence (see PresenceHandler.add_users_to_send_full_presence_to). """ now = self.clock.time_msec() with Measure(self.clock, "presence_update_states"): # NOTE: We purposefully don't await between now and when we've # calculated what we want to do with the new states, to avoid races. to_notify = {} # Changes we want to notify everyone about to_federation_ping = {} # These need sending keep-alives # Only bother handling the last presence change for each user new_states_dict = {} for new_state in new_states: new_states_dict[new_state.user_id] = new_state new_states = new_states_dict.values() for new_state in new_states: user_id = new_state.user_id # Its fine to not hit the database here, as the only thing not in # the current state cache are OFFLINE states, where the only field # of interest is last_active which is safe enough to assume is 0 # here. prev_state = self.user_to_current_state.get( user_id, UserPresenceState.default(user_id) ) new_state, should_notify, should_ping = handle_update( prev_state, new_state, is_mine=self.is_mine_id(user_id), wheel_timer=self.wheel_timer, now=now, ) if force_notify: should_notify = True self.user_to_current_state[user_id] = new_state if should_notify: to_notify[user_id] = new_state elif should_ping: to_federation_ping[user_id] = new_state # TODO: We should probably ensure there are no races hereafter presence_updates_counter.inc(len(new_states)) if to_notify: notified_presence_counter.inc(len(to_notify)) await self._persist_and_notify(list(to_notify.values())) self.unpersisted_users_changes |= {s.user_id for s in new_states} self.unpersisted_users_changes -= set(to_notify.keys()) # Check if we need to resend any presence states to remote hosts. We # only do this for states that haven't been updated in a while to # ensure that the remote host doesn't time the presence state out. # # Note that since these are states that have *not* been updated, # they won't get sent down the normal presence replication stream, # and so we have to explicitly send them via the federation stream. to_federation_ping = { user_id: state for user_id, state in to_federation_ping.items() if user_id not in to_notify } if to_federation_ping: federation_presence_out_counter.inc(len(to_federation_ping)) hosts_to_states = await get_interested_remotes( self.store, self.presence_router, list(to_federation_ping.values()), ) for destination, states in hosts_to_states.items(): self._federation_queue.send_presence_to_destinations( states, [destination] ) async def _handle_timeouts(self) -> None: """Checks the presence of users that have timed out and updates as appropriate. """ logger.debug("Handling presence timeouts") now = self.clock.time_msec() # Fetch the list of users that *may* have timed out. Things may have # changed since the timeout was set, so we won't necessarily have to # take any action. users_to_check = set(self.wheel_timer.fetch(now)) # Check whether the lists of syncing processes from an external # process have expired. expired_process_ids = [ process_id for process_id, last_update in self.external_process_last_updated_ms.items() if now - last_update > EXTERNAL_PROCESS_EXPIRY ] for process_id in expired_process_ids: # For each expired process drop tracking info and check the users # that were syncing on that process to see if they need to be timed # out. users_to_check.update( self.external_process_to_current_syncs.pop(process_id, ()) ) self.external_process_last_updated_ms.pop(process_id) states = [ self.user_to_current_state.get(user_id, UserPresenceState.default(user_id)) for user_id in users_to_check ] timers_fired_counter.inc(len(states)) syncing_user_ids = { user_id for user_id, count in self.user_to_num_current_syncs.items() if count } for user_ids in self.external_process_to_current_syncs.values(): syncing_user_ids.update(user_ids) changes = handle_timeouts( states, is_mine_fn=self.is_mine_id, syncing_user_ids=syncing_user_ids, now=now, ) return await self._update_states(changes) async def bump_presence_active_time(self, user: UserID) -> None: """We've seen the user do something that indicates they're interacting with the app. """ # If presence is disabled, no-op if not self.hs.config.server.use_presence: return user_id = user.to_string() bump_active_time_counter.inc() prev_state = await self.current_state_for_user(user_id) new_fields: Dict[str, Any] = {"last_active_ts": self.clock.time_msec()} if prev_state.state == PresenceState.UNAVAILABLE: new_fields["state"] = PresenceState.ONLINE await self._update_states([prev_state.copy_and_replace(**new_fields)]) async def user_syncing( self, user_id: str, affect_presence: bool = True ) -> ContextManager[None]: """Returns a context manager that should surround any stream requests from the user. This allows us to keep track of who is currently streaming and who isn't without having to have timers outside of this module to avoid flickering when users disconnect/reconnect. Args: user_id affect_presence: If false this function will be a no-op. Useful for streams that are not associated with an actual client that is being used by a user. """ # Override if it should affect the user's presence, if presence is # disabled. if not self.hs.config.server.use_presence: affect_presence = False if affect_presence: curr_sync = self.user_to_num_current_syncs.get(user_id, 0) self.user_to_num_current_syncs[user_id] = curr_sync + 1 prev_state = await self.current_state_for_user(user_id) if prev_state.state == PresenceState.OFFLINE: # If they're currently offline then bring them online, otherwise # just update the last sync times. await self._update_states( [ prev_state.copy_and_replace( state=PresenceState.ONLINE, last_active_ts=self.clock.time_msec(), last_user_sync_ts=self.clock.time_msec(), ) ] ) else: await self._update_states( [ prev_state.copy_and_replace( last_user_sync_ts=self.clock.time_msec() ) ] ) async def _end() -> None: try: self.user_to_num_current_syncs[user_id] -= 1 prev_state = await self.current_state_for_user(user_id) await self._update_states( [ prev_state.copy_and_replace( last_user_sync_ts=self.clock.time_msec() ) ] ) except Exception: logger.exception("Error updating presence after sync") @contextmanager def _user_syncing() -> Generator[None, None, None]: try: yield finally: if affect_presence: run_in_background(_end) return _user_syncing() def get_currently_syncing_users_for_replication(self) -> Iterable[str]: # since we are the process handling presence, there is nothing to do here. return [] async def update_external_syncs_row( self, process_id: str, user_id: str, is_syncing: bool, sync_time_msec: int ) -> None: """Update the syncing users for an external process as a delta. Args: process_id: An identifier for the process the users are syncing against. This allows synapse to process updates as user start and stop syncing against a given process. user_id: The user who has started or stopped syncing is_syncing: Whether or not the user is now syncing sync_time_msec: Time in ms when the user was last syncing """ with (await self.external_sync_linearizer.queue(process_id)): prev_state = await self.current_state_for_user(user_id) process_presence = self.external_process_to_current_syncs.setdefault( process_id, set() ) updates = [] if is_syncing and user_id not in process_presence: if prev_state.state == PresenceState.OFFLINE: updates.append( prev_state.copy_and_replace( state=PresenceState.ONLINE, last_active_ts=sync_time_msec, last_user_sync_ts=sync_time_msec, ) ) else: updates.append( prev_state.copy_and_replace(last_user_sync_ts=sync_time_msec) ) process_presence.add(user_id) elif user_id in process_presence: updates.append( prev_state.copy_and_replace(last_user_sync_ts=sync_time_msec) ) if not is_syncing: process_presence.discard(user_id) if updates: await self._update_states(updates) self.external_process_last_updated_ms[process_id] = self.clock.time_msec() async def update_external_syncs_clear(self, process_id: str) -> None: """Marks all users that had been marked as syncing by a given process as offline. Used when the process has stopped/disappeared. """ with (await self.external_sync_linearizer.queue(process_id)): process_presence = self.external_process_to_current_syncs.pop( process_id, set() ) prev_states = await self.current_state_for_users(process_presence) time_now_ms = self.clock.time_msec() await self._update_states( [ prev_state.copy_and_replace(last_user_sync_ts=time_now_ms) for prev_state in prev_states.values() ] ) self.external_process_last_updated_ms.pop(process_id, None) async def current_state_for_user(self, user_id: str) -> UserPresenceState: """Get the current presence state for a user.""" res = await self.current_state_for_users([user_id]) return res[user_id] async def _persist_and_notify(self, states: List[UserPresenceState]) -> None: """Persist states in the database, poke the notifier and send to interested remote servers """ stream_id, max_token = await self.store.update_presence(states) parties = await get_interested_parties(self.store, self.presence_router, states) room_ids_to_states, users_to_states = parties self.notifier.on_new_event( "presence_key", stream_id, rooms=room_ids_to_states.keys(), users=[UserID.from_string(u) for u in users_to_states], ) # We only want to poke the local federation sender, if any, as other # workers will receive the presence updates via the presence replication # stream (which is updated by `store.update_presence`). await self.maybe_send_presence_to_interested_destinations(states) async def incoming_presence(self, origin: str, content: JsonDict) -> None: """Called when we receive a `m.presence` EDU from a remote server.""" if not self._presence_enabled: return now = self.clock.time_msec() updates = [] for push in content.get("push", []): # A "push" contains a list of presence that we are probably interested # in. user_id = push.get("user_id", None) if not user_id: logger.info( "Got presence update from %r with no 'user_id': %r", origin, push ) continue if get_domain_from_id(user_id) != origin: logger.info( "Got presence update from %r with bad 'user_id': %r", origin, user_id, ) continue presence_state = push.get("presence", None) if not presence_state: logger.info( "Got presence update from %r with no 'presence_state': %r", origin, push, ) continue new_fields = {"state": presence_state, "last_federation_update_ts": now} last_active_ago = push.get("last_active_ago", None) if last_active_ago is not None: new_fields["last_active_ts"] = now - last_active_ago new_fields["status_msg"] = push.get("status_msg", None) new_fields["currently_active"] = push.get("currently_active", False) prev_state = await self.current_state_for_user(user_id) updates.append(prev_state.copy_and_replace(**new_fields)) if updates: federation_presence_counter.inc(len(updates)) await self._update_states(updates) async def set_state( self, target_user: UserID, state: JsonDict, ignore_status_msg: bool = False, force_notify: bool = False, ) -> None: """Set the presence state of the user. Args: target_user: The ID of the user to set the presence state of. state: The presence state as a JSON dictionary. ignore_status_msg: True to ignore the "status_msg" field of the `state` dict. If False, the user's current status will be updated. force_notify: Whether to force notification of the update to clients. """ status_msg = state.get("status_msg", None) presence = state["presence"] valid_presence = ( PresenceState.ONLINE, PresenceState.UNAVAILABLE, PresenceState.OFFLINE, PresenceState.BUSY, ) if presence not in valid_presence or ( presence == PresenceState.BUSY and not self._busy_presence_enabled ): raise SynapseError(400, "Invalid presence state") user_id = target_user.to_string() prev_state = await self.current_state_for_user(user_id) new_fields = {"state": presence} if not ignore_status_msg: new_fields["status_msg"] = status_msg if presence == PresenceState.ONLINE or ( presence == PresenceState.BUSY and self._busy_presence_enabled ): new_fields["last_active_ts"] = self.clock.time_msec() await self._update_states( [prev_state.copy_and_replace(**new_fields)], force_notify=force_notify ) async def is_visible(self, observed_user: UserID, observer_user: UserID) -> bool: """Returns whether a user can see another user's presence.""" observer_room_ids = await self.store.get_rooms_for_user( observer_user.to_string() ) observed_room_ids = await self.store.get_rooms_for_user( observed_user.to_string() ) if observer_room_ids & observed_room_ids: return True return False async def get_all_presence_updates( self, instance_name: str, last_id: int, current_id: int, limit: int ) -> Tuple[List[Tuple[int, list]], int, bool]: """ Gets a list of presence update rows from between the given stream ids. Each row has: - stream_id(str) - user_id(str) - state(str) - last_active_ts(int) - last_federation_update_ts(int) - last_user_sync_ts(int) - status_msg(int) - currently_active(int) Args: instance_name: The writer we want to fetch updates from. Unused here since there is only ever one writer. last_id: The token to fetch updates from. Exclusive. current_id: The token to fetch updates up to. Inclusive. limit: The requested limit for the number of rows to return. The function may return more or fewer rows. Returns: A tuple consisting of: the updates, a token to use to fetch subsequent updates, and whether we returned fewer rows than exists between the requested tokens due to the limit. The token returned can be used in a subsequent call to this function to get further updates. The updates are a list of 2-tuples of stream ID and the row data """ # TODO(markjh): replicate the unpersisted changes. # This could use the in-memory stores for recent changes. rows = await self.store.get_all_presence_updates( instance_name, last_id, current_id, limit ) return rows def notify_new_event(self) -> None: """Called when new events have happened. Handles users and servers joining rooms and require being sent presence. """ if self._event_processing: return async def _process_presence() -> None: assert not self._event_processing self._event_processing = True try: await self._unsafe_process() finally: self._event_processing = False run_as_background_process("presence.notify_new_event", _process_presence) async def _unsafe_process(self) -> None: # Loop round handling deltas until we're up to date while True: with Measure(self.clock, "presence_delta"): room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self._event_pos == room_max_stream_ordering: return logger.debug( "Processing presence stats %s->%s", self._event_pos, room_max_stream_ordering, ) max_pos, deltas = await self.store.get_current_state_deltas( self._event_pos, room_max_stream_ordering ) # We may get multiple deltas for different rooms, but we want to # handle them on a room by room basis, so we batch them up by # room. deltas_by_room: Dict[str, List[JsonDict]] = {} for delta in deltas: deltas_by_room.setdefault(delta["room_id"], []).append(delta) for room_id, deltas_for_room in deltas_by_room.items(): await self._handle_state_delta(room_id, deltas_for_room) self._event_pos = max_pos # Expose current event processing position to prometheus synapse.metrics.event_processing_positions.labels("presence").set( max_pos ) async def _handle_state_delta(self, room_id: str, deltas: List[JsonDict]) -> None: """Process current state deltas for the room to find new joins that need to be handled. """ # Sets of newly joined users. Note that if the local server is # joining a remote room for the first time we'll see both the joining # user and all remote users as newly joined. newly_joined_users = set() for delta in deltas: assert room_id == delta["room_id"] typ = delta["type"] state_key = delta["state_key"] event_id = delta["event_id"] prev_event_id = delta["prev_event_id"] logger.debug("Handling: %r %r, %s", typ, state_key, event_id) # Drop any event that isn't a membership join if typ != EventTypes.Member: continue if event_id is None: # state has been deleted, so this is not a join. We only care about # joins. continue event = await self.store.get_event(event_id, allow_none=True) if not event or event.content.get("membership") != Membership.JOIN: # We only care about joins continue if prev_event_id: prev_event = await self.store.get_event(prev_event_id, allow_none=True) if ( prev_event and prev_event.content.get("membership") == Membership.JOIN ): # Ignore changes to join events. continue newly_joined_users.add(state_key) if not newly_joined_users: # If nobody has joined then there's nothing to do. return # We want to send: # 1. presence states of all local users in the room to newly joined # remote servers # 2. presence states of newly joined users to all remote servers in # the room. # # TODO: Only send presence states to remote hosts that don't already # have them (because they already share rooms). # Get all the users who were already in the room, by fetching the # current users in the room and removing the newly joined users. users = await self.store.get_users_in_room(room_id) prev_users = set(users) - newly_joined_users # Construct sets for all the local users and remote hosts that were # already in the room prev_local_users = [] prev_remote_hosts = set() for user_id in prev_users: if self.is_mine_id(user_id): prev_local_users.append(user_id) else: prev_remote_hosts.add(get_domain_from_id(user_id)) # Similarly, construct sets for all the local users and remote hosts # that were *not* already in the room. Care needs to be taken with the # calculating the remote hosts, as a host may have already been in the # room even if there is a newly joined user from that host. newly_joined_local_users = [] newly_joined_remote_hosts = set() for user_id in newly_joined_users: if self.is_mine_id(user_id): newly_joined_local_users.append(user_id) else: host = get_domain_from_id(user_id) if host not in prev_remote_hosts: newly_joined_remote_hosts.add(host) # Send presence states of all local users in the room to newly joined # remote servers. (We actually only send states for local users already # in the room, as we'll send states for newly joined local users below.) if prev_local_users and newly_joined_remote_hosts: local_states = await self.current_state_for_users(prev_local_users) # Filter out old presence, i.e. offline presence states where # the user hasn't been active for a week. We can change this # depending on what we want the UX to be, but at the least we # should filter out offline presence where the state is just the # default state. now = self.clock.time_msec() states = [ state for state in local_states.values() if state.state != PresenceState.OFFLINE or now - state.last_active_ts < 7 * 24 * 60 * 60 * 1000 or state.status_msg is not None ] self._federation_queue.send_presence_to_destinations( destinations=newly_joined_remote_hosts, states=states, ) # Send presence states of newly joined users to all remote servers in # the room if newly_joined_local_users and ( prev_remote_hosts or newly_joined_remote_hosts ): local_states = await self.current_state_for_users(newly_joined_local_users) self._federation_queue.send_presence_to_destinations( destinations=prev_remote_hosts | newly_joined_remote_hosts, states=list(local_states.values()), ) def should_notify(old_state: UserPresenceState, new_state: UserPresenceState) -> bool: """Decides if a presence state change should be sent to interested parties.""" if old_state == new_state: return False if old_state.status_msg != new_state.status_msg: notify_reason_counter.labels("status_msg_change").inc() return True if old_state.state != new_state.state: notify_reason_counter.labels("state_change").inc() state_transition_counter.labels(old_state.state, new_state.state).inc() return True if old_state.state == PresenceState.ONLINE: if new_state.currently_active != old_state.currently_active: notify_reason_counter.labels("current_active_change").inc() return True if ( new_state.last_active_ts - old_state.last_active_ts > LAST_ACTIVE_GRANULARITY ): # Only notify about last active bumps if we're not currently active if not new_state.currently_active: notify_reason_counter.labels("last_active_change_online").inc() return True elif new_state.last_active_ts - old_state.last_active_ts > LAST_ACTIVE_GRANULARITY: # Always notify for a transition where last active gets bumped. notify_reason_counter.labels("last_active_change_not_online").inc() return True return False def format_user_presence_state( state: UserPresenceState, now: int, include_user_id: bool = True ) -> JsonDict: """Convert UserPresenceState to a JSON format that can be sent down to clients and to other servers. Args: state: The user presence state to format. now: The current timestamp since the epoch in ms. include_user_id: Whether to include `user_id` in the returned dictionary. As this function can be used both to format presence updates for client /sync responses and for federation /send requests, only the latter needs the include the `user_id` field. Returns: A JSON dictionary with the following keys: * presence: The presence state as a str. * user_id: Optional. Included if `include_user_id` is truthy. The canonical Matrix ID of the user. * last_active_ago: Optional. Included if `last_active_ts` is set on `state`. The timestamp that the user was last active. * status_msg: Optional. Included if `status_msg` is set on `state`. The user's status. * currently_active: Optional. Included only if `state.state` is "online". Example: { "presence": "online", "user_id": "@alice:example.com", "last_active_ago": 16783813918, "status_msg": "Hello world!", "currently_active": True } """ content: JsonDict = {"presence": state.state} if include_user_id: content["user_id"] = state.user_id if state.last_active_ts: content["last_active_ago"] = now - state.last_active_ts if state.status_msg: content["status_msg"] = state.status_msg if state.state == PresenceState.ONLINE: content["currently_active"] = state.currently_active return content class PresenceEventSource(EventSource[int, UserPresenceState]): def __init__(self, hs: "HomeServer"): # We can't call get_presence_handler here because there's a cycle: # # Presence -> Notifier -> PresenceEventSource -> Presence # # Same with get_presence_router: # # AuthHandler -> Notifier -> PresenceEventSource -> ModuleApi -> AuthHandler self.get_presence_handler = hs.get_presence_handler self.get_presence_router = hs.get_presence_router self.clock = hs.get_clock() self.store = hs.get_datastore() async def get_new_events( self, user: UserID, from_key: Optional[int], limit: Optional[int] = None, room_ids: Optional[Collection[str]] = None, is_guest: bool = False, explicit_room_id: Optional[str] = None, include_offline: bool = True, service: Optional[ApplicationService] = None, ) -> Tuple[List[UserPresenceState], int]: # The process for getting presence events are: # 1. Get the rooms the user is in. # 2. Get the list of user in the rooms. # 3. Get the list of users that are in the user's presence list. # 4. If there is a from_key set, cross reference the list of users # with the `presence_stream_cache` to see which ones we actually # need to check. # 5. Load current state for the users. # # We don't try and limit the presence updates by the current token, as # sending down the rare duplicate is not a concern. user_id = user.to_string() stream_change_cache = self.store.presence_stream_cache with Measure(self.clock, "presence.get_new_events"): if from_key is not None: from_key = int(from_key) # Check if this user should receive all current, online user presence. We only # bother to do this if from_key is set, as otherwise the user will receive all # user presence anyways. if await self.store.should_user_receive_full_presence_with_token( user_id, from_key ): # This user has been specified by a module to receive all current, online # user presence. Removing from_key and setting include_offline to false # will do effectively this. from_key = None include_offline = False max_token = self.store.get_current_presence_token() if from_key == max_token: # This is necessary as due to the way stream ID generators work # we may get updates that have a stream ID greater than the max # token (e.g. max_token is N but stream generator may return # results for N+2, due to N+1 not having finished being # persisted yet). # # This is usually fine, as it just means that we may send down # some presence updates multiple times. However, we need to be # careful that the sync stream either actually does make some # progress or doesn't return, otherwise clients will end up # tight looping calling /sync due to it immediately returning # the same token repeatedly. # # Hence this guard where we just return nothing so that the sync # doesn't return. C.f. #5503. return [], max_token # Figure out which other users this user should receive updates for users_interested_in = await self._get_interested_in(user, explicit_room_id) # We have a set of users that we're interested in the presence of. We want to # cross-reference that with the users that have actually changed their presence. # Check whether this user should see all user updates if users_interested_in == PresenceRouter.ALL_USERS: # Provide presence state for all users presence_updates = await self._filter_all_presence_updates_for_user( user_id, include_offline, from_key ) return presence_updates, max_token # Make mypy happy. users_interested_in should now be a set assert not isinstance(users_interested_in, str) # The set of users that we're interested in and that have had a presence update. # We'll actually pull the presence updates for these users at the end. interested_and_updated_users: Union[Set[str], FrozenSet[str]] = set() if from_key: # First get all users that have had a presence update updated_users = stream_change_cache.get_all_entities_changed(from_key) # Cross-reference users we're interested in with those that have had updates. # Use a slightly-optimised method for processing smaller sets of updates. if updated_users is not None and len(updated_users) < 500: # For small deltas, it's quicker to get all changes and then # cross-reference with the users we're interested in get_updates_counter.labels("stream").inc() for other_user_id in updated_users: if other_user_id in users_interested_in: # mypy thinks this variable could be a FrozenSet as it's possibly set # to one in the `get_entities_changed` call below, and `add()` is not # method on a FrozenSet. That doesn't affect us here though, as # `interested_and_updated_users` is clearly a set() above. interested_and_updated_users.add(other_user_id) # type: ignore else: # Too many possible updates. Find all users we can see and check # if any of them have changed. get_updates_counter.labels("full").inc() interested_and_updated_users = ( stream_change_cache.get_entities_changed( users_interested_in, from_key ) ) else: # No from_key has been specified. Return the presence for all users # this user is interested in interested_and_updated_users = users_interested_in # Retrieve the current presence state for each user users_to_state = await self.get_presence_handler().current_state_for_users( interested_and_updated_users ) presence_updates = list(users_to_state.values()) if not include_offline: # Filter out offline presence states presence_updates = self._filter_offline_presence_state(presence_updates) return presence_updates, max_token async def _filter_all_presence_updates_for_user( self, user_id: str, include_offline: bool, from_key: Optional[int] = None, ) -> List[UserPresenceState]: """ Computes the presence updates a user should receive. First pulls presence updates from the database. Then consults PresenceRouter for whether any updates should be excluded by user ID. Args: user_id: The User ID of the user to compute presence updates for. include_offline: Whether to include offline presence states from the results. from_key: The minimum stream ID of updates to pull from the database before filtering. Returns: A list of presence states for the given user to receive. """ if from_key: # Only return updates since the last sync updated_users = self.store.presence_stream_cache.get_all_entities_changed( from_key ) if not updated_users: updated_users = [] # Get the actual presence update for each change users_to_state = await self.get_presence_handler().current_state_for_users( updated_users ) presence_updates = list(users_to_state.values()) if not include_offline: # Filter out offline states presence_updates = self._filter_offline_presence_state(presence_updates) else: users_to_state = await self.store.get_presence_for_all_users( include_offline=include_offline ) presence_updates = list(users_to_state.values()) # TODO: This feels wildly inefficient, and it's unfortunate we need to ask the # module for information on a number of users when we then only take the info # for a single user # Filter through the presence router users_to_state_set = await self.get_presence_router().get_users_for_states( presence_updates ) # We only want the mapping for the syncing user presence_updates = list(users_to_state_set[user_id]) # Return presence information for all users return presence_updates def _filter_offline_presence_state( self, presence_updates: Iterable[UserPresenceState] ) -> List[UserPresenceState]: """Given an iterable containing user presence updates, return a list with any offline presence states removed. Args: presence_updates: Presence states to filter Returns: A new list with any offline presence states removed. """ return [ update for update in presence_updates if update.state != PresenceState.OFFLINE ] def get_current_key(self) -> int: return self.store.get_current_presence_token() @cached(num_args=2, cache_context=True) async def _get_interested_in( self, user: UserID, explicit_room_id: Optional[str] = None, cache_context: Optional[_CacheContext] = None, ) -> Union[Set[str], str]: """Returns the set of users that the given user should see presence updates for. Args: user: The user to retrieve presence updates for. explicit_room_id: The users that are in the room will be returned. Returns: A set of user IDs to return presence updates for, or "ALL" to return all known updates. """ user_id = user.to_string() users_interested_in = set() users_interested_in.add(user_id) # So that we receive our own presence # cache_context isn't likely to ever be None due to the @cached decorator, # but we can't have a non-optional argument after the optional argument # explicit_room_id either. Assert cache_context is not None so we can use it # without mypy complaining. assert cache_context # Check with the presence router whether we should poll additional users for # their presence information additional_users = await self.get_presence_router().get_interested_users( user.to_string() ) if additional_users == PresenceRouter.ALL_USERS: # If the module requested that this user see the presence updates of *all* # users, then simply return that instead of calculating what rooms this # user shares return PresenceRouter.ALL_USERS # Add the additional users from the router users_interested_in.update(additional_users) # Find the users who share a room with this user users_who_share_room = await self.store.get_users_who_share_room_with_user( user_id, on_invalidate=cache_context.invalidate ) users_interested_in.update(users_who_share_room) if explicit_room_id: user_ids = await self.store.get_users_in_room( explicit_room_id, on_invalidate=cache_context.invalidate ) users_interested_in.update(user_ids) return users_interested_in def handle_timeouts( user_states: List[UserPresenceState], is_mine_fn: Callable[[str], bool], syncing_user_ids: Set[str], now: int, ) -> List[UserPresenceState]: """Checks the presence of users that have timed out and updates as appropriate. Args: user_states: List of UserPresenceState's to check. is_mine_fn: Function that returns if a user_id is ours syncing_user_ids: Set of user_ids with active syncs. now: Current time in ms. Returns: List of UserPresenceState updates """ changes = {} # Actual changes we need to notify people about for state in user_states: is_mine = is_mine_fn(state.user_id) new_state = handle_timeout(state, is_mine, syncing_user_ids, now) if new_state: changes[state.user_id] = new_state return list(changes.values()) def handle_timeout( state: UserPresenceState, is_mine: bool, syncing_user_ids: Set[str], now: int ) -> Optional[UserPresenceState]: """Checks the presence of the user to see if any of the timers have elapsed Args: state is_mine: Whether the user is ours syncing_user_ids: Set of user_ids with active syncs. now: Current time in ms. Returns: A UserPresenceState update or None if no update. """ if state.state == PresenceState.OFFLINE: # No timeouts are associated with offline states. return None changed = False user_id = state.user_id if is_mine: if state.state == PresenceState.ONLINE: if now - state.last_active_ts > IDLE_TIMER: # Currently online, but last activity ages ago so auto # idle state = state.copy_and_replace(state=PresenceState.UNAVAILABLE) changed = True elif now - state.last_active_ts > LAST_ACTIVE_GRANULARITY: # So that we send down a notification that we've # stopped updating. changed = True if now - state.last_federation_update_ts > FEDERATION_PING_INTERVAL: # Need to send ping to other servers to ensure they don't # timeout and set us to offline changed = True # If there are have been no sync for a while (and none ongoing), # set presence to offline if user_id not in syncing_user_ids: # If the user has done something recently but hasn't synced, # don't set them as offline. sync_or_active = max(state.last_user_sync_ts, state.last_active_ts) if now - sync_or_active > SYNC_ONLINE_TIMEOUT: state = state.copy_and_replace(state=PresenceState.OFFLINE) changed = True else: # We expect to be poked occasionally by the other side. # This is to protect against forgetful/buggy servers, so that # no one gets stuck online forever. if now - state.last_federation_update_ts > FEDERATION_TIMEOUT: # The other side seems to have disappeared. state = state.copy_and_replace(state=PresenceState.OFFLINE) changed = True return state if changed else None def handle_update( prev_state: UserPresenceState, new_state: UserPresenceState, is_mine: bool, wheel_timer: WheelTimer, now: int, ) -> Tuple[UserPresenceState, bool, bool]: """Given a presence update: 1. Add any appropriate timers. 2. Check if we should notify anyone. Args: prev_state new_state is_mine: Whether the user is ours wheel_timer now: Time now in ms Returns: 3-tuple: `(new_state, persist_and_notify, federation_ping)` where: - new_state: is the state to actually persist - persist_and_notify: whether to persist and notify people - federation_ping: whether we should send a ping over federation """ user_id = new_state.user_id persist_and_notify = False federation_ping = False # If the users are ours then we want to set up a bunch of timers # to time things out. if is_mine: if new_state.state == PresenceState.ONLINE: # Idle timer wheel_timer.insert( now=now, obj=user_id, then=new_state.last_active_ts + IDLE_TIMER ) active = now - new_state.last_active_ts < LAST_ACTIVE_GRANULARITY new_state = new_state.copy_and_replace(currently_active=active) if active: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_active_ts + LAST_ACTIVE_GRANULARITY, ) if new_state.state != PresenceState.OFFLINE: # User has stopped syncing wheel_timer.insert( now=now, obj=user_id, then=new_state.last_user_sync_ts + SYNC_ONLINE_TIMEOUT, ) last_federate = new_state.last_federation_update_ts if now - last_federate > FEDERATION_PING_INTERVAL: # Been a while since we've poked remote servers new_state = new_state.copy_and_replace(last_federation_update_ts=now) federation_ping = True else: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_federation_update_ts + FEDERATION_TIMEOUT, ) # Check whether the change was something worth notifying about if should_notify(prev_state, new_state): new_state = new_state.copy_and_replace(last_federation_update_ts=now) persist_and_notify = True return new_state, persist_and_notify, federation_ping async def get_interested_parties( store: DataStore, presence_router: PresenceRouter, states: List[UserPresenceState] ) -> Tuple[Dict[str, List[UserPresenceState]], Dict[str, List[UserPresenceState]]]: """Given a list of states return which entities (rooms, users) are interested in the given states. Args: store: The homeserver's data store. presence_router: A module for augmenting the destinations for presence updates. states: A list of incoming user presence updates. Returns: A 2-tuple of `(room_ids_to_states, users_to_states)`, with each item being a dict of `entity_name` -> `[UserPresenceState]` """ room_ids_to_states: Dict[str, List[UserPresenceState]] = {} users_to_states: Dict[str, List[UserPresenceState]] = {} for state in states: room_ids = await store.get_rooms_for_user(state.user_id) for room_id in room_ids: room_ids_to_states.setdefault(room_id, []).append(state) # Always notify self users_to_states.setdefault(state.user_id, []).append(state) # Ask a presence routing module for any additional parties if one # is loaded. router_users_to_states = await presence_router.get_users_for_states(states) # Update the dictionaries with additional destinations and state to send for user_id, user_states in router_users_to_states.items(): users_to_states.setdefault(user_id, []).extend(user_states) return room_ids_to_states, users_to_states async def get_interested_remotes( store: DataStore, presence_router: PresenceRouter, states: List[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: """Given a list of presence states figure out which remote servers should be sent which. All the presence states should be for local users only. Args: store: The homeserver's data store. presence_router: A module for augmenting the destinations for presence updates. states: A list of incoming user presence updates. Returns: A map from destinations to presence states to send to that destination. """ hosts_and_states: Dict[str, Set[UserPresenceState]] = {} # First we look up the rooms each user is in (as well as any explicit # subscriptions), then for each distinct room we look up the remote # hosts in those rooms. room_ids_to_states, users_to_states = await get_interested_parties( store, presence_router, states ) for room_id, states in room_ids_to_states.items(): user_ids = await store.get_users_in_room(room_id) hosts = {get_domain_from_id(user_id) for user_id in user_ids} for host in hosts: hosts_and_states.setdefault(host, set()).update(states) for user_id, states in users_to_states.items(): host = get_domain_from_id(user_id) hosts_and_states.setdefault(host, set()).update(states) return hosts_and_states class PresenceFederationQueue: """Handles sending ad hoc presence updates over federation, which are *not* due to state updates (that get handled via the presence stream), e.g. federation pings and sending existing present states to newly joined hosts. Only the last N minutes will be queued, so if a federation sender instance is down for longer then some updates will be dropped. This is OK as presence is ephemeral, and so it will self correct eventually. On workers the class tracks the last received position of the stream from replication, and handles querying for missed updates over HTTP replication, c.f. `get_current_token` and `get_replication_rows`. """ # How long to keep entries in the queue for. Workers that are down for # longer than this duration will miss out on older updates. _KEEP_ITEMS_IN_QUEUE_FOR_MS = 5 * 60 * 1000 # How often to check if we can expire entries from the queue. _CLEAR_ITEMS_EVERY_MS = 60 * 1000 def __init__(self, hs: "HomeServer", presence_handler: BasePresenceHandler): self._clock = hs.get_clock() self._notifier = hs.get_notifier() self._instance_name = hs.get_instance_name() self._presence_handler = presence_handler self._repl_client = ReplicationGetStreamUpdates.make_client(hs) # Should we keep a queue of recent presence updates? We only bother if # another process may be handling federation sending. self._queue_presence_updates = True # Whether this instance is a presence writer. self._presence_writer = self._instance_name in hs.config.worker.writers.presence # The FederationSender instance, if this process sends federation traffic directly. self._federation = None if hs.should_send_federation(): self._federation = hs.get_federation_sender() # We don't bother queuing up presence states if only this instance # is sending federation. if hs.config.worker.federation_shard_config.instances == [ self._instance_name ]: self._queue_presence_updates = False # The queue of recently queued updates as tuples of: `(timestamp, # stream_id, destinations, user_ids)`. We don't store the full states # for efficiency, and remote workers will already have the full states # cached. self._queue: List[Tuple[int, int, Collection[str], Set[str]]] = [] self._next_id = 1 # Map from instance name to current token self._current_tokens: Dict[str, int] = {} if self._queue_presence_updates: self._clock.looping_call(self._clear_queue, self._CLEAR_ITEMS_EVERY_MS) def _clear_queue(self) -> None: """Clear out older entries from the queue.""" clear_before = self._clock.time_msec() - self._KEEP_ITEMS_IN_QUEUE_FOR_MS # The queue is sorted by timestamp, so we can bisect to find the right # place to purge before. Note that we are searching using a 1-tuple with # the time, which does The Right Thing since the queue is a tuple where # the first item is a timestamp. index = bisect(self._queue, (clear_before,)) self._queue = self._queue[index:] def send_presence_to_destinations( self, states: Collection[UserPresenceState], destinations: Collection[str] ) -> None: """Send the presence states to the given destinations. Will forward to the local federation sender (if there is one) and queue to send over replication (if there are other federation sender instances.). Must only be called on the presence writer process. """ # This should only be called on a presence writer. assert self._presence_writer if self._federation: self._federation.send_presence_to_destinations( states=states, destinations=destinations, ) if not self._queue_presence_updates: return now = self._clock.time_msec() stream_id = self._next_id self._next_id += 1 self._queue.append((now, stream_id, destinations, {s.user_id for s in states})) self._notifier.notify_replication() def get_current_token(self, instance_name: str) -> int: """Get the current position of the stream. On workers this returns the last stream ID received from replication. """ if instance_name == self._instance_name: return self._next_id - 1 else: return self._current_tokens.get(instance_name, 0) async def get_replication_rows( self, instance_name: str, from_token: int, upto_token: int, target_row_count: int, ) -> Tuple[List[Tuple[int, Tuple[str, str]]], int, bool]: """Get all the updates between the two tokens. We return rows in the form of `(destination, user_id)` to keep the size of each row bounded (rather than returning the sets in a row). On workers this will query the presence writer process via HTTP replication. """ if instance_name != self._instance_name: # If not local we query over http replication from the presence # writer result = await self._repl_client( instance_name=instance_name, stream_name=PresenceFederationStream.NAME, from_token=from_token, upto_token=upto_token, ) return result["updates"], result["upto_token"], result["limited"] # If the from_token is the current token then there's nothing to return # and we can trivially no-op. if from_token == self._next_id - 1: return [], upto_token, False # We can find the correct position in the queue by noting that there is # exactly one entry per stream ID, and that the last entry has an ID of # `self._next_id - 1`, so we can count backwards from the end. # # Since we are returning all states in the range `from_token < stream_id # <= upto_token` we look for the index with a `stream_id` of `from_token # + 1`. # # Since the start of the queue is periodically truncated we need to # handle the case where `from_token` stream ID has already been dropped. start_idx = max(from_token + 1 - self._next_id, -len(self._queue)) to_send: List[Tuple[int, Tuple[str, str]]] = [] limited = False new_id = upto_token for _, stream_id, destinations, user_ids in self._queue[start_idx:]: if stream_id <= from_token: # Paranoia check that we are actually only sending states that # are have stream_id strictly greater than from_token. We should # never hit this. logger.warning( "Tried returning presence federation stream ID: %d less than from_token: %d (next_id: %d, len: %d)", stream_id, from_token, self._next_id, len(self._queue), ) continue if stream_id > upto_token: break new_id = stream_id to_send.extend( (stream_id, (destination, user_id)) for destination in destinations for user_id in user_ids ) if len(to_send) > target_row_count: limited = True break return to_send, new_id, limited async def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: if stream_name != PresenceFederationStream.NAME: return # We keep track of the current tokens (so that we can catch up with anything we missed after a disconnect) self._current_tokens[instance_name] = token # If we're a federation sender we pull out the presence states to send # and forward them on. if not self._federation: return hosts_to_users: Dict[str, Set[str]] = {} for row in rows: hosts_to_users.setdefault(row.destination, set()).add(row.user_id) for host, user_ids in hosts_to_users.items(): states = await self._presence_handler.current_state_for_users(user_ids) self._federation.send_presence_to_destinations( states=states.values(), destinations=[host], ) synapse-1.53.0/synapse/handlers/profile.py000066400000000000000000000500041420514467300205630ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from typing import TYPE_CHECKING, Optional from synapse.api.errors import ( AuthError, Codes, HttpResponseException, RequestSendFailed, StoreError, SynapseError, ) from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.types import ( JsonDict, Requester, UserID, create_requester, get_domain_from_id, ) from synapse.util.caches.descriptors import cached from synapse.util.stringutils import parse_and_validate_mxc_uri if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) MAX_DISPLAYNAME_LEN = 256 MAX_AVATAR_URL_LEN = 1000 class ProfileHandler: """Handles fetching and updating user profile information. ProfileHandler can be instantiated directly on workers and will delegate to master when necessary. """ PROFILE_UPDATE_MS = 60 * 1000 PROFILE_UPDATE_EVERY_MS = 24 * 60 * 60 * 1000 def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.clock = hs.get_clock() self.hs = hs self.federation = hs.get_federation_client() hs.get_federation_registry().register_query_handler( "profile", self.on_profile_query ) self.user_directory_handler = hs.get_user_directory_handler() self.request_ratelimiter = hs.get_request_ratelimiter() self.max_avatar_size = hs.config.server.max_avatar_size self.allowed_avatar_mimetypes = hs.config.server.allowed_avatar_mimetypes self.server_name = hs.config.server.server_name if hs.config.worker.run_background_tasks: self.clock.looping_call( self._update_remote_profile_cache, self.PROFILE_UPDATE_MS ) async def get_profile(self, user_id: str) -> JsonDict: target_user = UserID.from_string(user_id) if self.hs.is_mine(target_user): try: displayname = await self.store.get_profile_displayname( target_user.localpart ) avatar_url = await self.store.get_profile_avatar_url( target_user.localpart ) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return {"displayname": displayname, "avatar_url": avatar_url} else: try: result = await self.federation.make_query( destination=target_user.domain, query_type="profile", args={"user_id": user_id}, ignore_backoff=True, ) return result except RequestSendFailed as e: raise SynapseError(502, "Failed to fetch profile") from e except HttpResponseException as e: if e.code < 500 and e.code != 404: # Other codes are not allowed in c2s API logger.info( "Server replied with wrong response: %s %s", e.code, e.msg ) raise SynapseError(502, "Failed to fetch profile") raise e.to_synapse_error() async def get_profile_from_cache(self, user_id: str) -> JsonDict: """Get the profile information from our local cache. If the user is ours then the profile information will always be correct. Otherwise, it may be out of date/missing. """ target_user = UserID.from_string(user_id) if self.hs.is_mine(target_user): try: displayname = await self.store.get_profile_displayname( target_user.localpart ) avatar_url = await self.store.get_profile_avatar_url( target_user.localpart ) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return {"displayname": displayname, "avatar_url": avatar_url} else: profile = await self.store.get_from_remote_profile_cache(user_id) return profile or {} async def get_displayname(self, target_user: UserID) -> Optional[str]: if self.hs.is_mine(target_user): try: displayname = await self.store.get_profile_displayname( target_user.localpart ) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return displayname else: try: result = await self.federation.make_query( destination=target_user.domain, query_type="profile", args={"user_id": target_user.to_string(), "field": "displayname"}, ignore_backoff=True, ) except RequestSendFailed as e: raise SynapseError(502, "Failed to fetch profile") from e except HttpResponseException as e: raise e.to_synapse_error() return result.get("displayname") async def set_displayname( self, target_user: UserID, requester: Requester, new_displayname: str, by_admin: bool = False, ) -> None: """Set the displayname of a user Args: target_user: the user whose displayname is to be changed. requester: The user attempting to make this change. new_displayname: The displayname to give this user. by_admin: Whether this change was made by an administrator. """ if not self.hs.is_mine(target_user): raise SynapseError(400, "User is not hosted on this homeserver") if not by_admin and target_user != requester.user: raise AuthError(400, "Cannot set another user's displayname") if not by_admin and not self.hs.config.registration.enable_set_displayname: profile = await self.store.get_profileinfo(target_user.localpart) if profile.display_name: raise SynapseError( 400, "Changing display name is disabled on this server", Codes.FORBIDDEN, ) if not isinstance(new_displayname, str): raise SynapseError( 400, "'displayname' must be a string", errcode=Codes.INVALID_PARAM ) if len(new_displayname) > MAX_DISPLAYNAME_LEN: raise SynapseError( 400, "Displayname is too long (max %i)" % (MAX_DISPLAYNAME_LEN,) ) displayname_to_set: Optional[str] = new_displayname if new_displayname == "": displayname_to_set = None # If the admin changes the display name of a user, the requesting user cannot send # the join event to update the displayname in the rooms. # This must be done by the target user himself. if by_admin: requester = create_requester( target_user, authenticated_entity=requester.authenticated_entity, ) await self.store.set_profile_displayname( target_user.localpart, displayname_to_set ) profile = await self.store.get_profileinfo(target_user.localpart) await self.user_directory_handler.handle_local_profile_change( target_user.to_string(), profile ) await self._update_join_states(requester, target_user) async def get_avatar_url(self, target_user: UserID) -> Optional[str]: if self.hs.is_mine(target_user): try: avatar_url = await self.store.get_profile_avatar_url( target_user.localpart ) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return avatar_url else: try: result = await self.federation.make_query( destination=target_user.domain, query_type="profile", args={"user_id": target_user.to_string(), "field": "avatar_url"}, ignore_backoff=True, ) except RequestSendFailed as e: raise SynapseError(502, "Failed to fetch profile") from e except HttpResponseException as e: raise e.to_synapse_error() return result.get("avatar_url") async def set_avatar_url( self, target_user: UserID, requester: Requester, new_avatar_url: str, by_admin: bool = False, ) -> None: """Set a new avatar URL for a user. Args: target_user: the user whose avatar URL is to be changed. requester: The user attempting to make this change. new_avatar_url: The avatar URL to give this user. by_admin: Whether this change was made by an administrator. """ if not self.hs.is_mine(target_user): raise SynapseError(400, "User is not hosted on this homeserver") if not by_admin and target_user != requester.user: raise AuthError(400, "Cannot set another user's avatar_url") if not by_admin and not self.hs.config.registration.enable_set_avatar_url: profile = await self.store.get_profileinfo(target_user.localpart) if profile.avatar_url: raise SynapseError( 400, "Changing avatar is disabled on this server", Codes.FORBIDDEN ) if not isinstance(new_avatar_url, str): raise SynapseError( 400, "'avatar_url' must be a string", errcode=Codes.INVALID_PARAM ) if len(new_avatar_url) > MAX_AVATAR_URL_LEN: raise SynapseError( 400, "Avatar URL is too long (max %i)" % (MAX_AVATAR_URL_LEN,) ) if not await self.check_avatar_size_and_mime_type(new_avatar_url): raise SynapseError(403, "This avatar is not allowed", Codes.FORBIDDEN) avatar_url_to_set: Optional[str] = new_avatar_url if new_avatar_url == "": avatar_url_to_set = None # Same like set_displayname if by_admin: requester = create_requester( target_user, authenticated_entity=requester.authenticated_entity ) await self.store.set_profile_avatar_url( target_user.localpart, avatar_url_to_set ) profile = await self.store.get_profileinfo(target_user.localpart) await self.user_directory_handler.handle_local_profile_change( target_user.to_string(), profile ) await self._update_join_states(requester, target_user) @cached() async def check_avatar_size_and_mime_type(self, mxc: str) -> bool: """Check that the size and content type of the avatar at the given MXC URI are within the configured limits. Args: mxc: The MXC URI at which the avatar can be found. Returns: A boolean indicating whether the file can be allowed to be set as an avatar. """ if not self.max_avatar_size and not self.allowed_avatar_mimetypes: return True server_name, _, media_id = parse_and_validate_mxc_uri(mxc) if server_name == self.server_name: media_info = await self.store.get_local_media(media_id) else: media_info = await self.store.get_cached_remote_media(server_name, media_id) if media_info is None: # Both configuration options need to access the file's metadata, and # retrieving remote avatars just for this becomes a bit of a faff, especially # if e.g. the file is too big. It's also generally safe to assume most files # used as avatar are uploaded locally, or if the upload didn't happen as part # of a PUT request on /avatar_url that the file was at least previewed by the # user locally (and therefore downloaded to the remote media cache). logger.warning("Forbidding avatar change to %s: avatar not on server", mxc) return False if self.max_avatar_size: # Ensure avatar does not exceed max allowed avatar size if media_info["media_length"] > self.max_avatar_size: logger.warning( "Forbidding avatar change to %s: %d bytes is above the allowed size " "limit", mxc, media_info["media_length"], ) return False if self.allowed_avatar_mimetypes: # Ensure the avatar's file type is allowed if ( self.allowed_avatar_mimetypes and media_info["media_type"] not in self.allowed_avatar_mimetypes ): logger.warning( "Forbidding avatar change to %s: mimetype %s not allowed", mxc, media_info["media_type"], ) return False return True async def on_profile_query(self, args: JsonDict) -> JsonDict: """Handles federation profile query requests.""" if not self.hs.config.federation.allow_profile_lookup_over_federation: raise SynapseError( 403, "Profile lookup over federation is disabled on this homeserver", Codes.FORBIDDEN, ) user = UserID.from_string(args["user_id"]) if not self.hs.is_mine(user): raise SynapseError(400, "User is not hosted on this homeserver") just_field = args.get("field", None) response = {} try: if just_field is None or just_field == "displayname": response["displayname"] = await self.store.get_profile_displayname( user.localpart ) if just_field is None or just_field == "avatar_url": response["avatar_url"] = await self.store.get_profile_avatar_url( user.localpart ) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return response async def _update_join_states( self, requester: Requester, target_user: UserID ) -> None: if not self.hs.is_mine(target_user): return await self.request_ratelimiter.ratelimit(requester) # Do not actually update the room state for shadow-banned users. if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) return room_ids = await self.store.get_rooms_for_user(target_user.to_string()) for room_id in room_ids: handler = self.hs.get_room_member_handler() try: # Assume the target_user isn't a guest, # because we don't let guests set profile or avatar data. await handler.update_membership( requester, target_user, room_id, "join", # We treat a profile update like a join. ratelimit=False, # Try to hide that these events aren't atomic. ) except Exception as e: logger.warning( "Failed to update join event for room %s - %s", room_id, str(e) ) async def check_profile_query_allowed( self, target_user: UserID, requester: Optional[UserID] = None ) -> None: """Checks whether a profile query is allowed. If the 'require_auth_for_profile_requests' config flag is set to True and a 'requester' is provided, the query is only allowed if the two users share a room. Args: target_user: The owner of the queried profile. requester: The user querying for the profile. Raises: SynapseError(403): The two users share no room, or ne user couldn't be found to be in any room the server is in, and therefore the query is denied. """ # Implementation of MSC1301: don't allow looking up profiles if the # requester isn't in the same room as the target. We expect requester to # be None when this function is called outside of a profile query, e.g. # when building a membership event. In this case, we must allow the # lookup. if ( not self.hs.config.server.limit_profile_requests_to_users_who_share_rooms or not requester ): return # Always allow the user to query their own profile. if target_user.to_string() == requester.to_string(): return try: requester_rooms = await self.store.get_rooms_for_user(requester.to_string()) target_user_rooms = await self.store.get_rooms_for_user( target_user.to_string() ) # Check if the room lists have no elements in common. if requester_rooms.isdisjoint(target_user_rooms): raise SynapseError(403, "Profile isn't available", Codes.FORBIDDEN) except StoreError as e: if e.code == 404: # This likely means that one of the users doesn't exist, # so we act as if we couldn't find the profile. raise SynapseError(403, "Profile isn't available", Codes.FORBIDDEN) raise @wrap_as_background_process("Update remote profile") async def _update_remote_profile_cache(self) -> None: """Called periodically to check profiles of remote users we haven't checked in a while. """ entries = await self.store.get_remote_profile_cache_entries_that_expire( last_checked=self.clock.time_msec() - self.PROFILE_UPDATE_EVERY_MS ) for user_id, displayname, avatar_url in entries: is_subscribed = await self.store.is_subscribed_remote_profile_for_user( user_id ) if not is_subscribed: await self.store.maybe_delete_remote_profile_cache(user_id) continue try: profile = await self.federation.make_query( destination=get_domain_from_id(user_id), query_type="profile", args={"user_id": user_id}, ignore_backoff=True, ) except Exception: logger.exception("Failed to get avatar_url") await self.store.update_remote_profile_cache( user_id, displayname, avatar_url ) continue new_name = profile.get("displayname") if not isinstance(new_name, str): new_name = None new_avatar = profile.get("avatar_url") if not isinstance(new_avatar, str): new_avatar = None # We always hit update to update the last_check timestamp await self.store.update_remote_profile_cache(user_id, new_name, new_avatar) synapse-1.53.0/synapse/handlers/read_marker.py000066400000000000000000000043031420514467300214000ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING from synapse.util.async_helpers import Linearizer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReadMarkerHandler: def __init__(self, hs: "HomeServer"): self.server_name = hs.config.server.server_name self.store = hs.get_datastore() self.account_data_handler = hs.get_account_data_handler() self.read_marker_linearizer = Linearizer(name="read_marker") async def received_client_read_marker( self, room_id: str, user_id: str, event_id: str ) -> None: """Updates the read marker for a given user in a given room if the event ID given is ahead in the stream relative to the current read marker. This uses a notifier to indicate that account data should be sent down /sync if the read marker has changed. """ with await self.read_marker_linearizer.queue((room_id, user_id)): existing_read_marker = await self.store.get_account_data_for_room_and_type( user_id, room_id, "m.fully_read" ) should_update = True if existing_read_marker: # Only update if the new marker is ahead in the stream should_update = await self.store.is_event_after( event_id, existing_read_marker["event_id"] ) if should_update: content = {"event_id": event_id} await self.account_data_handler.add_account_data_to_room( user_id, room_id, "m.fully_read", content ) synapse-1.53.0/synapse/handlers/receipts.py000066400000000000000000000247351420514467300207550ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple from synapse.api.constants import ReadReceiptEventFields, ReceiptTypes from synapse.appservice import ApplicationService from synapse.streams import EventSource from synapse.types import JsonDict, ReadReceipt, UserID, get_domain_from_id if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReceiptsHandler: def __init__(self, hs: "HomeServer"): self.notifier = hs.get_notifier() self.server_name = hs.config.server.server_name self.store = hs.get_datastore() self.event_auth_handler = hs.get_event_auth_handler() self.hs = hs # We only need to poke the federation sender explicitly if its on the # same instance. Other federation sender instances will get notified by # `synapse.app.generic_worker.FederationSenderHandler` when it sees it # in the receipts stream. self.federation_sender = None if hs.should_send_federation(): self.federation_sender = hs.get_federation_sender() # If we can handle the receipt EDUs we do so, otherwise we route them # to the appropriate worker. if hs.get_instance_name() in hs.config.worker.writers.receipts: hs.get_federation_registry().register_edu_handler( "m.receipt", self._received_remote_receipt ) else: hs.get_federation_registry().register_instances_for_edu( "m.receipt", hs.config.worker.writers.receipts, ) self.clock = self.hs.get_clock() self.state = hs.get_state_handler() async def _received_remote_receipt(self, origin: str, content: JsonDict) -> None: """Called when we receive an EDU of type m.receipt from a remote HS.""" receipts = [] for room_id, room_values in content.items(): # If we're not in the room just ditch the event entirely. This is # probably an old server that has come back and thinks we're still in # the room (or we've been rejoined to the room by a state reset). is_in_room = await self.event_auth_handler.check_host_in_room( room_id, self.server_name ) if not is_in_room: logger.info( "Ignoring receipt for room %r from server %s as we're not in the room", room_id, origin, ) continue for receipt_type, users in room_values.items(): for user_id, user_values in users.items(): if get_domain_from_id(user_id) != origin: logger.info( "Received receipt for user %r from server %s, ignoring", user_id, origin, ) continue receipts.append( ReadReceipt( room_id=room_id, receipt_type=receipt_type, user_id=user_id, event_ids=user_values["event_ids"], data=user_values.get("data", {}), ) ) await self._handle_new_receipts(receipts) async def _handle_new_receipts(self, receipts: List[ReadReceipt]) -> bool: """Takes a list of receipts, stores them and informs the notifier.""" min_batch_id: Optional[int] = None max_batch_id: Optional[int] = None for receipt in receipts: res = await self.store.insert_receipt( receipt.room_id, receipt.receipt_type, receipt.user_id, receipt.event_ids, receipt.data, ) if not res: # res will be None if this read receipt is 'old' continue stream_id, max_persisted_id = res if min_batch_id is None or stream_id < min_batch_id: min_batch_id = stream_id if max_batch_id is None or max_persisted_id > max_batch_id: max_batch_id = max_persisted_id # Either both of these should be None or neither. if min_batch_id is None or max_batch_id is None: # no new receipts return False affected_room_ids = list({r.room_id for r in receipts}) self.notifier.on_new_event("receipt_key", max_batch_id, rooms=affected_room_ids) # Note that the min here shouldn't be relied upon to be accurate. await self.hs.get_pusherpool().on_new_receipts( min_batch_id, max_batch_id, affected_room_ids ) return True async def received_client_receipt( self, room_id: str, receipt_type: str, user_id: str, event_id: str, hidden: bool ) -> None: """Called when a client tells us a local user has read up to the given event_id in the room. """ receipt = ReadReceipt( room_id=room_id, receipt_type=receipt_type, user_id=user_id, event_ids=[event_id], data={"ts": int(self.clock.time_msec()), "hidden": hidden}, ) is_new = await self._handle_new_receipts([receipt]) if not is_new: return if self.federation_sender and not ( self.hs.config.experimental.msc2285_enabled and hidden ): await self.federation_sender.send_read_receipt(receipt) class ReceiptEventSource(EventSource[int, JsonDict]): def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.config = hs.config @staticmethod def filter_out_hidden(events: List[JsonDict], user_id: str) -> List[JsonDict]: visible_events = [] # filter out hidden receipts the user shouldn't see for event in events: content = event.get("content", {}) new_event = event.copy() new_event["content"] = {} for event_id in content.keys(): event_content = content.get(event_id, {}) m_read = event_content.get(ReceiptTypes.READ, {}) # If m_read is missing copy over the original event_content as there is nothing to process here if not m_read: new_event["content"][event_id] = event_content.copy() continue new_users = {} for rr_user_id, user_rr in m_read.items(): try: hidden = user_rr.get("hidden") except AttributeError: # Due to https://github.com/matrix-org/synapse/issues/10376 # there are cases where user_rr is a string, in those cases # we just ignore the read receipt continue if hidden is not True or rr_user_id == user_id: new_users[rr_user_id] = user_rr.copy() # If hidden has a value replace hidden with the correct prefixed key if hidden is not None: new_users[rr_user_id].pop("hidden") new_users[rr_user_id][ ReadReceiptEventFields.MSC2285_HIDDEN ] = hidden # Set new users unless empty if len(new_users.keys()) > 0: new_event["content"][event_id] = {ReceiptTypes.READ: new_users} # Append new_event to visible_events unless empty if len(new_event["content"].keys()) > 0: visible_events.append(new_event) return visible_events async def get_new_events( self, user: UserID, from_key: int, limit: Optional[int], room_ids: Iterable[str], is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[JsonDict], int]: from_key = int(from_key) to_key = self.get_current_key() if from_key == to_key: return [], to_key events = await self.store.get_linearized_receipts_for_rooms( room_ids, from_key=from_key, to_key=to_key ) if self.config.experimental.msc2285_enabled: events = ReceiptEventSource.filter_out_hidden(events, user.to_string()) return events, to_key async def get_new_events_as( self, from_key: int, service: ApplicationService ) -> Tuple[List[JsonDict], int]: """Returns a set of new read receipt events that an appservice may be interested in. Args: from_key: the stream position at which events should be fetched from service: The appservice which may be interested Returns: A two-tuple containing the following: * A list of json dictionaries derived from read receipts that the appservice may be interested in. * The current read receipt stream token. """ from_key = int(from_key) to_key = self.get_current_key() if from_key == to_key: return [], to_key # Fetch all read receipts for all rooms, up to a limit of 100. This is ordered # by most recent. rooms_to_events = await self.store.get_linearized_receipts_for_all_rooms( from_key=from_key, to_key=to_key ) # Then filter down to rooms that the AS can read events = [] for room_id, event in rooms_to_events.items(): if not await service.matches_user_in_member_list(room_id, self.store): continue events.append(event) return events, to_key def get_current_key(self, direction: str = "f") -> int: return self.store.get_max_receipt_stream_id() synapse-1.53.0/synapse/handlers/register.py000066400000000000000000001214541420514467300207570ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains functions for registering clients.""" import logging from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple from prometheus_client import Counter from typing_extensions import TypedDict from synapse import types from synapse.api.constants import ( MAX_USERID_LENGTH, EventContentFields, EventTypes, JoinRules, LoginType, ) from synapse.api.errors import AuthError, Codes, ConsentNotGivenError, SynapseError from synapse.appservice import ApplicationService from synapse.config.server import is_threepid_reserved from synapse.http.servlet import assert_params_in_dict from synapse.replication.http.login import RegisterDeviceReplicationServlet from synapse.replication.http.register import ( ReplicationPostRegisterActionsServlet, ReplicationRegisterServlet, ) from synapse.spam_checker_api import RegistrationBehaviour from synapse.storage.state import StateFilter from synapse.types import RoomAlias, UserID, create_requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) registration_counter = Counter( "synapse_user_registrations_total", "Number of new users registered (since restart)", ["guest", "shadow_banned", "auth_provider"], ) login_counter = Counter( "synapse_user_logins_total", "Number of user logins (since restart)", ["guest", "auth_provider"], ) def init_counters_for_auth_provider(auth_provider_id: str) -> None: """Ensure the prometheus counters for the given auth provider are initialised This fixes a problem where the counters are not reported for a given auth provider until the user first logs in/registers. """ for is_guest in (True, False): login_counter.labels(guest=is_guest, auth_provider=auth_provider_id) for shadow_banned in (True, False): registration_counter.labels( guest=is_guest, shadow_banned=shadow_banned, auth_provider=auth_provider_id, ) class LoginDict(TypedDict): device_id: str access_token: str valid_until_ms: Optional[int] refresh_token: Optional[str] class RegistrationHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.clock = hs.get_clock() self.hs = hs self.auth = hs.get_auth() self._auth_handler = hs.get_auth_handler() self.profile_handler = hs.get_profile_handler() self.user_directory_handler = hs.get_user_directory_handler() self.identity_handler = self.hs.get_identity_handler() self.ratelimiter = hs.get_registration_ratelimiter() self.macaroon_gen = hs.get_macaroon_generator() self._account_validity_handler = hs.get_account_validity_handler() self._user_consent_version = self.hs.config.consent.user_consent_version self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self._server_name = hs.hostname self.spam_checker = hs.get_spam_checker() if hs.config.worker.worker_app: self._register_client = ReplicationRegisterServlet.make_client(hs) self._register_device_client = RegisterDeviceReplicationServlet.make_client( hs ) self._post_registration_client = ( ReplicationPostRegisterActionsServlet.make_client(hs) ) else: self.device_handler = hs.get_device_handler() self._register_device_client = self.register_device_inner self.pusher_pool = hs.get_pusherpool() self.session_lifetime = hs.config.registration.session_lifetime self.nonrefreshable_access_token_lifetime = ( hs.config.registration.nonrefreshable_access_token_lifetime ) self.refreshable_access_token_lifetime = ( hs.config.registration.refreshable_access_token_lifetime ) self.refresh_token_lifetime = hs.config.registration.refresh_token_lifetime init_counters_for_auth_provider("") async def check_username( self, localpart: str, guest_access_token: Optional[str] = None, assigned_user_id: Optional[str] = None, inhibit_user_in_use_error: bool = False, ) -> None: if types.contains_invalid_mxid_characters(localpart): raise SynapseError( 400, "User ID can only contain characters a-z, 0-9, or '=_-./'", Codes.INVALID_USERNAME, ) if not localpart: raise SynapseError(400, "User ID cannot be empty", Codes.INVALID_USERNAME) if localpart[0] == "_": raise SynapseError( 400, "User ID may not begin with _", Codes.INVALID_USERNAME ) user = UserID(localpart, self.hs.hostname) user_id = user.to_string() if assigned_user_id: if user_id == assigned_user_id: return else: raise SynapseError( 400, "A different user ID has already been registered for this session", ) self.check_user_id_not_appservice_exclusive(user_id) if len(user_id) > MAX_USERID_LENGTH: raise SynapseError( 400, "User ID may not be longer than %s characters" % (MAX_USERID_LENGTH,), Codes.INVALID_USERNAME, ) users = await self.store.get_users_by_id_case_insensitive(user_id) if users: if not inhibit_user_in_use_error and not guest_access_token: raise SynapseError( 400, "User ID already taken.", errcode=Codes.USER_IN_USE ) if guest_access_token: user_data = await self.auth.get_user_by_access_token(guest_access_token) if ( not user_data.is_guest or UserID.from_string(user_data.user_id).localpart != localpart ): raise AuthError( 403, "Cannot register taken user ID without valid guest " "credentials for that user.", errcode=Codes.FORBIDDEN, ) if guest_access_token is None: try: int(localpart) raise SynapseError( 400, "Numeric user IDs are reserved for guest users.", errcode=Codes.INVALID_USERNAME, ) except ValueError: pass async def register_user( self, localpart: Optional[str] = None, password_hash: Optional[str] = None, guest_access_token: Optional[str] = None, make_guest: bool = False, admin: bool = False, threepid: Optional[dict] = None, user_type: Optional[str] = None, default_display_name: Optional[str] = None, address: Optional[str] = None, bind_emails: Optional[Iterable[str]] = None, by_admin: bool = False, user_agent_ips: Optional[List[Tuple[str, str]]] = None, auth_provider_id: Optional[str] = None, ) -> str: """Registers a new client on the server. Args: localpart: The local part of the user ID to register. If None, one will be generated. password_hash: The hashed password to assign to this user so they can login again. This can be None which means they cannot login again via a password (e.g. the user is an application service user). guest_access_token: The access token used when this was a guest account. make_guest: True if the the new user should be guest, false to add a regular user account. admin: True if the user should be registered as a server admin. threepid: The threepid used for registering, if any. user_type: type of user. One of the values from api.constants.UserTypes, or None for a normal user. default_display_name: if set, the new user's displayname will be set to this. Defaults to 'localpart'. address: the IP address used to perform the registration. bind_emails: list of emails to bind to this account. by_admin: True if this registration is being made via the admin api, otherwise False. user_agent_ips: Tuples of user-agents and IP addresses used during the registration process. auth_provider_id: The SSO IdP the user used, if any. Returns: The registered user_id. Raises: SynapseError if there was a problem registering. """ bind_emails = bind_emails or [] await self.check_registration_ratelimit(address) result = await self.spam_checker.check_registration_for_spam( threepid, localpart, user_agent_ips or [], auth_provider_id=auth_provider_id, ) if result == RegistrationBehaviour.DENY: logger.info( "Blocked registration of %r", localpart, ) # We return a 429 to make it not obvious that they've been # denied. raise SynapseError(429, "Rate limited") shadow_banned = result == RegistrationBehaviour.SHADOW_BAN if shadow_banned: logger.info( "Shadow banning registration of %r", localpart, ) # do not check_auth_blocking if the call is coming through the Admin API if not by_admin: await self.auth.check_auth_blocking(threepid=threepid) if localpart is not None: await self.check_username(localpart, guest_access_token=guest_access_token) was_guest = guest_access_token is not None user = UserID(localpart, self.hs.hostname) user_id = user.to_string() if was_guest: # If the user was a guest then they already have a profile default_display_name = None elif default_display_name is None: default_display_name = localpart await self.register_with_store( user_id=user_id, password_hash=password_hash, was_guest=was_guest, make_guest=make_guest, create_profile_with_displayname=default_display_name, admin=admin, user_type=user_type, address=address, shadow_banned=shadow_banned, ) profile = await self.store.get_profileinfo(localpart) await self.user_directory_handler.handle_local_profile_change( user_id, profile ) else: # autogen a sequential user ID fail_count = 0 # If a default display name is not given, generate one. generate_display_name = default_display_name is None # This breaks on successful registration *or* errors after 10 failures. while True: # Fail after being unable to find a suitable ID a few times if fail_count > 10: raise SynapseError(500, "Unable to find a suitable guest user ID") localpart = await self.store.generate_user_id() user = UserID(localpart, self.hs.hostname) user_id = user.to_string() self.check_user_id_not_appservice_exclusive(user_id) if generate_display_name: default_display_name = localpart try: await self.register_with_store( user_id=user_id, password_hash=password_hash, make_guest=make_guest, create_profile_with_displayname=default_display_name, address=address, shadow_banned=shadow_banned, ) # Successfully registered break except SynapseError: # if user id is taken, just generate another fail_count += 1 registration_counter.labels( guest=make_guest, shadow_banned=shadow_banned, auth_provider=(auth_provider_id or ""), ).inc() # If the user does not need to consent at registration, auto-join any # configured rooms. if not self.hs.config.consent.user_consent_at_registration: if ( not self.hs.config.registration.auto_join_rooms_for_guests and make_guest ): logger.info( "Skipping auto-join for %s because auto-join for guests is disabled", user_id, ) else: await self._auto_join_rooms(user_id) else: logger.info( "Skipping auto-join for %s because consent is required at registration", user_id, ) # Bind any specified emails to this account current_time = self.hs.get_clock().time_msec() for email in bind_emails: # generate threepid dict threepid_dict = { "medium": "email", "address": email, "validated_at": current_time, } # Bind email to new account await self._register_email_threepid(user_id, threepid_dict, None) return user_id async def _create_and_join_rooms(self, user_id: str) -> None: """ Create the auto-join rooms and join or invite the user to them. This should only be called when the first "real" user registers. Args: user_id: The user to join """ # Getting the handlers during init gives a dependency loop. room_creation_handler = self.hs.get_room_creation_handler() room_member_handler = self.hs.get_room_member_handler() # Generate a stub for how the rooms will be configured. stub_config = { "preset": self.hs.config.registration.autocreate_auto_join_room_preset, } # If the configuration provides a user ID to create rooms with, use # that instead of the first user registered. requires_join = False if self.hs.config.registration.auto_join_user_id: fake_requester = create_requester( self.hs.config.registration.auto_join_user_id, authenticated_entity=self._server_name, ) # If the room requires an invite, add the user to the list of invites. if self.hs.config.registration.auto_join_room_requires_invite: stub_config["invite"] = [user_id] # If the room is being created by a different user, the first user # registered needs to join it. Note that in the case of an invitation # being necessary this will occur after the invite was sent. requires_join = True else: fake_requester = create_requester( user_id, authenticated_entity=self._server_name ) # Choose whether to federate the new room. if not self.hs.config.registration.autocreate_auto_join_rooms_federated: stub_config["creation_content"] = {EventContentFields.FEDERATE: False} for r in self.hs.config.registration.auto_join_rooms: logger.info("Auto-joining %s to %s", user_id, r) try: room_alias = RoomAlias.from_string(r) if self.hs.hostname != room_alias.domain: # If the alias is remote, try to join the room. This might fail # because the room might be invite only, but we don't have any local # user in the room to invite this one with, so at this point that's # the best we can do. logger.info( "Cannot automatically create room with alias %s as it isn't" " local, trying to join the room instead", r, ) ( room, remote_room_hosts, ) = await room_member_handler.lookup_room_alias(room_alias) room_id = room.to_string() await room_member_handler.update_membership( requester=create_requester( user_id, authenticated_entity=self._server_name ), target=UserID.from_string(user_id), room_id=room_id, remote_room_hosts=remote_room_hosts, action="join", ratelimit=False, ) else: # A shallow copy is OK here since the only key that is # modified is room_alias_name. config = stub_config.copy() # create room expects the localpart of the room alias config["room_alias_name"] = room_alias.localpart info, _ = await room_creation_handler.create_room( fake_requester, config=config, ratelimit=False, ) # If the room does not require an invite, but another user # created it, then ensure the first user joins it. if requires_join: await room_member_handler.update_membership( requester=create_requester( user_id, authenticated_entity=self._server_name ), target=UserID.from_string(user_id), room_id=info["room_id"], # Since it was just created, there are no remote hosts. remote_room_hosts=[], action="join", ratelimit=False, ) except Exception as e: logger.error("Failed to join new user to %r: %r", r, e) async def _join_rooms(self, user_id: str) -> None: """ Join or invite the user to the auto-join rooms. Args: user_id: The user to join """ room_member_handler = self.hs.get_room_member_handler() for r in self.hs.config.registration.auto_join_rooms: logger.info("Auto-joining %s to %s", user_id, r) try: room_alias = RoomAlias.from_string(r) if RoomAlias.is_valid(r): ( room, remote_room_hosts, ) = await room_member_handler.lookup_room_alias(room_alias) room_id = room.to_string() else: raise SynapseError( 400, "%s was not legal room ID or room alias" % (r,) ) # Calculate whether the room requires an invite or can be # joined directly. By default, we consider the room as requiring an # invite if the homeserver is in the room (unless told otherwise by the # join rules). Otherwise we consider it as being joinable, at the risk of # failing to join, but in this case there's little more we can do since # we don't have a local user in the room to craft up an invite with. requires_invite = await self.store.is_host_joined( room_id, self._server_name, ) if requires_invite: # If the server is in the room, check if the room is public. state = await self.store.get_filtered_current_state_ids( room_id, StateFilter.from_types([(EventTypes.JoinRules, "")]) ) event_id = state.get((EventTypes.JoinRules, "")) if event_id: join_rules_event = await self.store.get_event( event_id, allow_none=True ) if join_rules_event: join_rule = join_rules_event.content.get("join_rule", None) requires_invite = ( join_rule and join_rule != JoinRules.PUBLIC ) # Send the invite, if necessary. if requires_invite: # If an invite is required, there must be a auto-join user ID. assert self.hs.config.registration.auto_join_user_id await room_member_handler.update_membership( requester=create_requester( self.hs.config.registration.auto_join_user_id, authenticated_entity=self._server_name, ), target=UserID.from_string(user_id), room_id=room_id, remote_room_hosts=remote_room_hosts, action="invite", ratelimit=False, ) # Send the join. await room_member_handler.update_membership( requester=create_requester( user_id, authenticated_entity=self._server_name ), target=UserID.from_string(user_id), room_id=room_id, remote_room_hosts=remote_room_hosts, action="join", ratelimit=False, ) except ConsentNotGivenError as e: # Technically not necessary to pull out this error though # moving away from bare excepts is a good thing to do. logger.error("Failed to join new user to %r: %r", r, e) except Exception as e: logger.error("Failed to join new user to %r: %r", r, e) async def _auto_join_rooms(self, user_id: str) -> None: """Automatically joins users to auto join rooms - creating the room in the first place if the user is the first to be created. Args: user_id: The user to join """ # auto-join the user to any rooms we're supposed to dump them into # try to create the room if we're the first real user on the server. Note # that an auto-generated support or bot user is not a real user and will never be # the user to create the room should_auto_create_rooms = False is_real_user = await self.store.is_real_user(user_id) if self.hs.config.registration.autocreate_auto_join_rooms and is_real_user: count = await self.store.count_real_users() should_auto_create_rooms = count == 1 if should_auto_create_rooms: await self._create_and_join_rooms(user_id) else: await self._join_rooms(user_id) async def post_consent_actions(self, user_id: str) -> None: """A series of registration actions that can only be carried out once consent has been granted Args: user_id: The user to join """ await self._auto_join_rooms(user_id) async def appservice_register(self, user_localpart: str, as_token: str) -> str: user = UserID(user_localpart, self.hs.hostname) user_id = user.to_string() service = self.store.get_app_service_by_token(as_token) if not service: raise AuthError(403, "Invalid application service token.") if not service.is_interested_in_user(user_id): raise SynapseError( 400, "Invalid user localpart for this application service.", errcode=Codes.EXCLUSIVE, ) service_id = service.id if service.is_exclusive_user(user_id) else None self.check_user_id_not_appservice_exclusive(user_id, allowed_appservice=service) await self.register_with_store( user_id=user_id, password_hash="", appservice_id=service_id, create_profile_with_displayname=user.localpart, ) return user_id def check_user_id_not_appservice_exclusive( self, user_id: str, allowed_appservice: Optional[ApplicationService] = None ) -> None: # don't allow people to register the server notices mxid if self._server_notices_mxid is not None: if user_id == self._server_notices_mxid: raise SynapseError( 400, "This user ID is reserved.", errcode=Codes.EXCLUSIVE ) # valid user IDs must not clash with any user ID namespaces claimed by # application services. services = self.store.get_app_services() interested_services = [ s for s in services if s.is_interested_in_user(user_id) and s != allowed_appservice ] for service in interested_services: if service.is_exclusive_user(user_id): raise SynapseError( 400, "This user ID is reserved by an application service.", errcode=Codes.EXCLUSIVE, ) async def check_registration_ratelimit(self, address: Optional[str]) -> None: """A simple helper method to check whether the registration rate limit has been hit for a given IP address Args: address: the IP address used to perform the registration. If this is None, no ratelimiting will be performed. Raises: LimitExceededError: If the rate limit has been exceeded. """ if not address: return await self.ratelimiter.ratelimit(None, address) async def register_with_store( self, user_id: str, password_hash: Optional[str] = None, was_guest: bool = False, make_guest: bool = False, appservice_id: Optional[str] = None, create_profile_with_displayname: Optional[str] = None, admin: bool = False, user_type: Optional[str] = None, address: Optional[str] = None, shadow_banned: bool = False, ) -> None: """Register user in the datastore. Args: user_id: The desired user ID to register. password_hash: Optional. The password hash for this user. was_guest: Optional. Whether this is a guest account being upgraded to a non-guest account. make_guest: True if the the new user should be guest, false to add a regular user account. appservice_id: The ID of the appservice registering the user. create_profile_with_displayname: Optionally create a profile for the user, setting their displayname to the given value admin: is an admin user? user_type: type of user. One of the values from api.constants.UserTypes, or None for a normal user. address: the IP address used to perform the registration. shadow_banned: Whether to shadow-ban the user """ if self.hs.config.worker.worker_app: await self._register_client( user_id=user_id, password_hash=password_hash, was_guest=was_guest, make_guest=make_guest, appservice_id=appservice_id, create_profile_with_displayname=create_profile_with_displayname, admin=admin, user_type=user_type, address=address, shadow_banned=shadow_banned, ) else: await self.store.register_user( user_id=user_id, password_hash=password_hash, was_guest=was_guest, make_guest=make_guest, appservice_id=appservice_id, create_profile_with_displayname=create_profile_with_displayname, admin=admin, user_type=user_type, shadow_banned=shadow_banned, ) # Only call the account validity module(s) on the main process, to avoid # repeating e.g. database writes on all of the workers. await self._account_validity_handler.on_user_registration(user_id) async def register_device( self, user_id: str, device_id: Optional[str], initial_display_name: Optional[str], is_guest: bool = False, is_appservice_ghost: bool = False, auth_provider_id: Optional[str] = None, should_issue_refresh_token: bool = False, auth_provider_session_id: Optional[str] = None, ) -> Tuple[str, str, Optional[int], Optional[str]]: """Register a device for a user and generate an access token. The access token will be limited by the homeserver's session_lifetime config. Args: user_id: full canonical @user:id device_id: The device ID to check, or None to generate a new one. initial_display_name: An optional display name for the device. is_guest: Whether this is a guest account auth_provider_id: The SSO IdP the user used, if any. should_issue_refresh_token: Whether it should also issue a refresh token auth_provider_session_id: The session ID received during login from the SSO IdP. Returns: Tuple of device ID, access token, access token expiration time and refresh token """ res = await self._register_device_client( user_id=user_id, device_id=device_id, initial_display_name=initial_display_name, is_guest=is_guest, is_appservice_ghost=is_appservice_ghost, should_issue_refresh_token=should_issue_refresh_token, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) login_counter.labels( guest=is_guest, auth_provider=(auth_provider_id or ""), ).inc() return ( res["device_id"], res["access_token"], res["valid_until_ms"], res["refresh_token"], ) async def register_device_inner( self, user_id: str, device_id: Optional[str], initial_display_name: Optional[str], is_guest: bool = False, is_appservice_ghost: bool = False, should_issue_refresh_token: bool = False, auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None, ) -> LoginDict: """Helper for register_device Does the bits that need doing on the main process. Not for use outside this class and RegisterDeviceReplicationServlet. """ assert not self.hs.config.worker.worker_app now_ms = self.clock.time_msec() access_token_expiry = None if self.session_lifetime is not None: if is_guest: raise Exception( "session_lifetime is not currently implemented for guest access" ) access_token_expiry = now_ms + self.session_lifetime if self.nonrefreshable_access_token_lifetime is not None: if access_token_expiry is not None: # Don't allow the non-refreshable access token to outlive the # session. access_token_expiry = min( now_ms + self.nonrefreshable_access_token_lifetime, access_token_expiry, ) else: access_token_expiry = now_ms + self.nonrefreshable_access_token_lifetime refresh_token = None refresh_token_id = None registered_device_id = await self.device_handler.check_device_registered( user_id, device_id, initial_display_name, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) if is_guest: assert access_token_expiry is None access_token = self.macaroon_gen.generate_guest_access_token(user_id) else: if should_issue_refresh_token: # A refreshable access token lifetime must be configured # since we're told to issue a refresh token (the caller checks # that this value is set before setting this flag). assert self.refreshable_access_token_lifetime is not None # Set the expiry time of the refreshable access token access_token_expiry = now_ms + self.refreshable_access_token_lifetime # Set the refresh token expiry time (if configured) refresh_token_expiry = None if self.refresh_token_lifetime is not None: refresh_token_expiry = now_ms + self.refresh_token_lifetime # Set an ultimate session expiry time (if configured) ultimate_session_expiry_ts = None if self.session_lifetime is not None: ultimate_session_expiry_ts = now_ms + self.session_lifetime # Also ensure that the issued tokens don't outlive the # session. # (It would be weird to configure a homeserver with a shorter # session lifetime than token lifetime, but may as well handle # it.) access_token_expiry = min( access_token_expiry, ultimate_session_expiry_ts ) if refresh_token_expiry is not None: refresh_token_expiry = min( refresh_token_expiry, ultimate_session_expiry_ts ) ( refresh_token, refresh_token_id, ) = await self._auth_handler.create_refresh_token_for_user_id( user_id, device_id=registered_device_id, expiry_ts=refresh_token_expiry, ultimate_session_expiry_ts=ultimate_session_expiry_ts, ) access_token = await self._auth_handler.create_access_token_for_user_id( user_id, device_id=registered_device_id, valid_until_ms=access_token_expiry, is_appservice_ghost=is_appservice_ghost, refresh_token_id=refresh_token_id, ) return { "device_id": registered_device_id, "access_token": access_token, "valid_until_ms": access_token_expiry, "refresh_token": refresh_token, } async def post_registration_actions( self, user_id: str, auth_result: dict, access_token: Optional[str] ) -> None: """A user has completed registration Args: user_id: The user ID that consented auth_result: The authenticated credentials of the newly registered user. access_token: The access token of the newly logged in device, or None if `inhibit_login` enabled. """ # TODO: 3pid registration can actually happen on the workers. Consider # refactoring it. if self.hs.config.worker.worker_app: await self._post_registration_client( user_id=user_id, auth_result=auth_result, access_token=access_token ) return if auth_result and LoginType.EMAIL_IDENTITY in auth_result: threepid = auth_result[LoginType.EMAIL_IDENTITY] # Necessary due to auth checks prior to the threepid being # written to the db if is_threepid_reserved( self.hs.config.server.mau_limits_reserved_threepids, threepid ): await self.store.upsert_monthly_active_user(user_id) await self._register_email_threepid(user_id, threepid, access_token) if auth_result and LoginType.MSISDN in auth_result: threepid = auth_result[LoginType.MSISDN] await self._register_msisdn_threepid(user_id, threepid) if auth_result and LoginType.TERMS in auth_result: # The terms type should only exist if consent is enabled. assert self._user_consent_version is not None await self._on_user_consented(user_id, self._user_consent_version) async def _on_user_consented(self, user_id: str, consent_version: str) -> None: """A user consented to the terms on registration Args: user_id: The user ID that consented. consent_version: version of the policy the user has consented to. """ logger.info("%s has consented to the privacy policy", user_id) await self.store.user_set_consent_version(user_id, consent_version) await self.post_consent_actions(user_id) async def _register_email_threepid( self, user_id: str, threepid: dict, token: Optional[str] ) -> None: """Add an email address as a 3pid identifier Also adds an email pusher for the email address, if configured in the HS config Must be called on master. Args: user_id: id of user threepid: m.login.email.identity auth response token: access_token for the user, or None if not logged in. """ reqd = ("medium", "address", "validated_at") if any(x not in threepid for x in reqd): # This will only happen if the ID server returns a malformed response logger.info("Can't add incomplete 3pid") return await self._auth_handler.add_threepid( user_id, threepid["medium"], threepid["address"], threepid["validated_at"], ) # And we add an email pusher for them by default, but only # if email notifications are enabled (so people don't start # getting mail spam where they weren't before if email # notifs are set up on a homeserver) if ( self.hs.config.email.email_enable_notifs and self.hs.config.email.email_notif_for_new_users and token ): # Pull the ID of the access token back out of the db # It would really make more sense for this to be passed # up when the access token is saved, but that's quite an # invasive change I'd rather do separately. user_tuple = await self.store.get_user_by_access_token(token) # The token better still exist. assert user_tuple token_id = user_tuple.token_id await self.pusher_pool.add_pusher( user_id=user_id, access_token=token_id, kind="email", app_id="m.email", app_display_name="Email Notifications", device_display_name=threepid["address"], pushkey=threepid["address"], lang=None, # We don't know a user's language here data={}, ) async def _register_msisdn_threepid(self, user_id: str, threepid: dict) -> None: """Add a phone number as a 3pid identifier Must be called on master. Args: user_id: id of user threepid: m.login.msisdn auth response """ try: assert_params_in_dict(threepid, ["medium", "address", "validated_at"]) except SynapseError as ex: if ex.errcode == Codes.MISSING_PARAM: # This will only happen if the ID server returns a malformed response logger.info("Can't add incomplete 3pid") return None raise await self._auth_handler.add_threepid( user_id, threepid["medium"], threepid["address"], threepid["validated_at"], ) synapse-1.53.0/synapse/handlers/room.py000066400000000000000000001756721420514467300201220ustar00rootroot00000000000000# Copyright 2016-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains functions for performing actions on rooms.""" import itertools import logging import math import random import string from collections import OrderedDict from typing import ( TYPE_CHECKING, Any, Awaitable, Collection, Dict, List, Optional, Tuple, ) import attr from typing_extensions import TypedDict from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, HistoryVisibility, JoinRules, Membership, RoomCreationPreset, RoomEncryptionAlgorithms, RoomTypes, ) from synapse.api.errors import ( AuthError, Codes, HttpResponseException, LimitExceededError, NotFoundError, StoreError, SynapseError, ) from synapse.api.filtering import Filter from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase from synapse.events.utils import copy_power_levels_contents from synapse.federation.federation_client import InvalidResponseError from synapse.handlers.federation import get_domains_from_state from synapse.rest.admin._base import assert_user_is_admin from synapse.storage.databases.main.relations import BundledAggregations from synapse.storage.state import StateFilter from synapse.streams import EventSource from synapse.types import ( JsonDict, MutableStateMap, Requester, RoomAlias, RoomID, RoomStreamToken, StateMap, StreamToken, UserID, create_requester, ) from synapse.util import stringutils from synapse.util.async_helpers import Linearizer from synapse.util.caches.response_cache import ResponseCache from synapse.util.stringutils import parse_and_validate_server_name from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) id_server_scheme = "https://" FIVE_MINUTES_IN_MS = 5 * 60 * 1000 @attr.s(slots=True, frozen=True, auto_attribs=True) class EventContext: events_before: List[EventBase] event: EventBase events_after: List[EventBase] state: List[EventBase] aggregations: Dict[str, BundledAggregations] start: str end: str class RoomCreationHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.clock = hs.get_clock() self.hs = hs self.spam_checker = hs.get_spam_checker() self.event_creation_handler = hs.get_event_creation_handler() self.room_member_handler = hs.get_room_member_handler() self._event_auth_handler = hs.get_event_auth_handler() self.config = hs.config self.request_ratelimiter = hs.get_request_ratelimiter() # Room state based off defined presets self._presets_dict: Dict[str, Dict[str, Any]] = { RoomCreationPreset.PRIVATE_CHAT: { "join_rules": JoinRules.INVITE, "history_visibility": HistoryVisibility.SHARED, "original_invitees_have_ops": False, "guest_can_join": True, "power_level_content_override": {"invite": 0}, }, RoomCreationPreset.TRUSTED_PRIVATE_CHAT: { "join_rules": JoinRules.INVITE, "history_visibility": HistoryVisibility.SHARED, "original_invitees_have_ops": True, "guest_can_join": True, "power_level_content_override": {"invite": 0}, }, RoomCreationPreset.PUBLIC_CHAT: { "join_rules": JoinRules.PUBLIC, "history_visibility": HistoryVisibility.SHARED, "original_invitees_have_ops": False, "guest_can_join": False, "power_level_content_override": {}, }, } # Modify presets to selectively enable encryption by default per homeserver config for preset_name, preset_config in self._presets_dict.items(): encrypted = ( preset_name in self.config.room.encryption_enabled_by_default_for_room_presets ) preset_config["encrypted"] = encrypted self._replication = hs.get_replication_data_handler() # linearizer to stop two upgrades happening at once self._upgrade_linearizer = Linearizer("room_upgrade_linearizer") # If a user tries to update the same room multiple times in quick # succession, only process the first attempt and return its result to # subsequent requests self._upgrade_response_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "room_upgrade", timeout_ms=FIVE_MINUTES_IN_MS ) self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self.third_party_event_rules = hs.get_third_party_event_rules() async def upgrade_room( self, requester: Requester, old_room_id: str, new_version: RoomVersion ) -> str: """Replace a room with a new room with a different version Args: requester: the user requesting the upgrade old_room_id: the id of the room to be replaced new_version: the new room version to use Returns: the new room id Raises: ShadowBanError if the requester is shadow-banned. """ await self.request_ratelimiter.ratelimit(requester) user_id = requester.user.to_string() # Check if this room is already being upgraded by another person for key in self._upgrade_response_cache.keys(): if key[0] == old_room_id and key[1] != user_id: # Two different people are trying to upgrade the same room. # Send the second an error. # # Note that this of course only gets caught if both users are # on the same homeserver. raise SynapseError( 400, "An upgrade for this room is currently in progress" ) # Upgrade the room # # If this user has sent multiple upgrade requests for the same room # and one of them is not complete yet, cache the response and # return it to all subsequent requests ret = await self._upgrade_response_cache.wrap( (old_room_id, user_id), self._upgrade_room, requester, old_room_id, new_version, # args for _upgrade_room ) return ret async def _upgrade_room( self, requester: Requester, old_room_id: str, new_version: RoomVersion ) -> str: """ Args: requester: the user requesting the upgrade old_room_id: the id of the room to be replaced new_versions: the version to upgrade the room to Raises: ShadowBanError if the requester is shadow-banned. """ user_id = requester.user.to_string() assert self.hs.is_mine_id(user_id), "User must be our own: %s" % (user_id,) # start by allocating a new room id r = await self.store.get_room(old_room_id) if r is None: raise NotFoundError("Unknown room id %s" % (old_room_id,)) new_room_id = await self._generate_room_id( creator_id=user_id, is_public=r["is_public"], room_version=new_version, ) logger.info("Creating new room %s to replace %s", new_room_id, old_room_id) # we create and auth the tombstone event before properly creating the new # room, to check our user has perms in the old room. ( tombstone_event, tombstone_context, ) = await self.event_creation_handler.create_event( requester, { "type": EventTypes.Tombstone, "state_key": "", "room_id": old_room_id, "sender": user_id, "content": { "body": "This room has been replaced", "replacement_room": new_room_id, }, }, ) old_room_version = await self.store.get_room_version(old_room_id) validate_event_for_room_version(old_room_version, tombstone_event) await self._event_auth_handler.check_auth_rules_from_context( old_room_version, tombstone_event, tombstone_context ) await self.clone_existing_room( requester, old_room_id=old_room_id, new_room_id=new_room_id, new_room_version=new_version, tombstone_event_id=tombstone_event.event_id, ) # now send the tombstone await self.event_creation_handler.handle_new_client_event( requester=requester, event=tombstone_event, context=tombstone_context, ) old_room_state = await tombstone_context.get_current_state_ids() # We know the tombstone event isn't an outlier so it has current state. assert old_room_state is not None # update any aliases await self._move_aliases_to_new_room( requester, old_room_id, new_room_id, old_room_state ) # Copy over user push rules, tags and migrate room directory state await self.room_member_handler.transfer_room_state_on_room_upgrade( old_room_id, new_room_id ) # finally, shut down the PLs in the old room, and update them in the new # room. await self._update_upgraded_room_pls( requester, old_room_id, new_room_id, old_room_state, ) return new_room_id async def _update_upgraded_room_pls( self, requester: Requester, old_room_id: str, new_room_id: str, old_room_state: StateMap[str], ) -> None: """Send updated power levels in both rooms after an upgrade Args: requester: the user requesting the upgrade old_room_id: the id of the room to be replaced new_room_id: the id of the replacement room old_room_state: the state map for the old room Raises: ShadowBanError if the requester is shadow-banned. """ old_room_pl_event_id = old_room_state.get((EventTypes.PowerLevels, "")) if old_room_pl_event_id is None: logger.warning( "Not supported: upgrading a room with no PL event. Not setting PLs " "in old room." ) return old_room_pl_state = await self.store.get_event(old_room_pl_event_id) # we try to stop regular users from speaking by setting the PL required # to send regular events and invites to 'Moderator' level. That's normally # 50, but if the default PL in a room is 50 or more, then we set the # required PL above that. pl_content = dict(old_room_pl_state.content) users_default = int(pl_content.get("users_default", 0)) restricted_level = max(users_default + 1, 50) updated = False for v in ("invite", "events_default"): current = int(pl_content.get(v, 0)) if current < restricted_level: logger.debug( "Setting level for %s in %s to %i (was %i)", v, old_room_id, restricted_level, current, ) pl_content[v] = restricted_level updated = True else: logger.debug("Not setting level for %s (already %i)", v, current) if updated: try: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.PowerLevels, "state_key": "", "room_id": old_room_id, "sender": requester.user.to_string(), "content": pl_content, }, ratelimit=False, ) except AuthError as e: logger.warning("Unable to update PLs in old room: %s", e) await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.PowerLevels, "state_key": "", "room_id": new_room_id, "sender": requester.user.to_string(), "content": old_room_pl_state.content, }, ratelimit=False, ) async def clone_existing_room( self, requester: Requester, old_room_id: str, new_room_id: str, new_room_version: RoomVersion, tombstone_event_id: str, ) -> None: """Populate a new room based on an old room Args: requester: the user requesting the upgrade old_room_id : the id of the room to be replaced new_room_id: the id to give the new room (should already have been created with _gemerate_room_id()) new_room_version: the new room version to use tombstone_event_id: the ID of the tombstone event in the old room. """ user_id = requester.user.to_string() if not await self.spam_checker.user_may_create_room(user_id): raise SynapseError( 403, "You are not permitted to create rooms", Codes.FORBIDDEN ) creation_content: JsonDict = { "room_version": new_room_version.identifier, "predecessor": {"room_id": old_room_id, "event_id": tombstone_event_id}, } # Check if old room was non-federatable # Get old room's create event old_room_create_event = await self.store.get_create_event_for_room(old_room_id) # Check if the create event specified a non-federatable room if not old_room_create_event.content.get(EventContentFields.FEDERATE, True): # If so, mark the new room as non-federatable as well creation_content[EventContentFields.FEDERATE] = False initial_state = {} # Replicate relevant room events types_to_copy: List[Tuple[str, Optional[str]]] = [ (EventTypes.JoinRules, ""), (EventTypes.Name, ""), (EventTypes.Topic, ""), (EventTypes.RoomHistoryVisibility, ""), (EventTypes.GuestAccess, ""), (EventTypes.RoomAvatar, ""), (EventTypes.RoomEncryption, ""), (EventTypes.ServerACL, ""), (EventTypes.RelatedGroups, ""), (EventTypes.PowerLevels, ""), ] # If the old room was a space, copy over the room type and the rooms in # the space. if ( old_room_create_event.content.get(EventContentFields.ROOM_TYPE) == RoomTypes.SPACE ): creation_content[EventContentFields.ROOM_TYPE] = RoomTypes.SPACE types_to_copy.append((EventTypes.SpaceChild, None)) old_room_state_ids = await self.store.get_filtered_current_state_ids( old_room_id, StateFilter.from_types(types_to_copy) ) # map from event_id to BaseEvent old_room_state_events = await self.store.get_events(old_room_state_ids.values()) for k, old_event_id in old_room_state_ids.items(): old_event = old_room_state_events.get(old_event_id) if old_event: # If the event is an space child event with empty content, it was # removed from the space and should be ignored. if k[0] == EventTypes.SpaceChild and not old_event.content: continue initial_state[k] = old_event.content # deep-copy the power-levels event before we start modifying it # note that if frozen_dicts are enabled, `power_levels` will be a frozen # dict so we can't just copy.deepcopy it. initial_state[ (EventTypes.PowerLevels, "") ] = power_levels = copy_power_levels_contents( initial_state[(EventTypes.PowerLevels, "")] ) # Resolve the minimum power level required to send any state event # We will give the upgrading user this power level temporarily (if necessary) such that # they are able to copy all of the state events over, then revert them back to their # original power level afterwards in _update_upgraded_room_pls # Copy over user power levels now as this will not be possible with >100PL users once # the room has been created # Calculate the minimum power level needed to clone the room event_power_levels = power_levels.get("events", {}) if not isinstance(event_power_levels, dict): event_power_levels = {} state_default = power_levels.get("state_default", 50) try: state_default_int = int(state_default) # type: ignore[arg-type] except (TypeError, ValueError): state_default_int = 50 ban = power_levels.get("ban", 50) try: ban = int(ban) # type: ignore[arg-type] except (TypeError, ValueError): ban = 50 needed_power_level = max( state_default_int, ban, max(event_power_levels.values()) ) # Get the user's current power level, this matches the logic in get_user_power_level, # but without the entire state map. user_power_levels = power_levels.setdefault("users", {}) if not isinstance(user_power_levels, dict): user_power_levels = {} users_default = power_levels.get("users_default", 0) current_power_level = user_power_levels.get(user_id, users_default) try: current_power_level_int = int(current_power_level) # type: ignore[arg-type] except (TypeError, ValueError): current_power_level_int = 0 # Raise the requester's power level in the new room if necessary if current_power_level_int < needed_power_level: user_power_levels[user_id] = needed_power_level await self._send_events_for_new_room( requester, new_room_id, # we expect to override all the presets with initial_state, so this is # somewhat arbitrary. preset_config=RoomCreationPreset.PRIVATE_CHAT, invite_list=[], initial_state=initial_state, creation_content=creation_content, ratelimit=False, ) # Transfer membership events old_room_member_state_ids = await self.store.get_filtered_current_state_ids( old_room_id, StateFilter.from_types([(EventTypes.Member, None)]) ) # map from event_id to BaseEvent old_room_member_state_events = await self.store.get_events( old_room_member_state_ids.values() ) for old_event in old_room_member_state_events.values(): # Only transfer ban events if ( "membership" in old_event.content and old_event.content["membership"] == "ban" ): await self.room_member_handler.update_membership( requester, UserID.from_string(old_event.state_key), new_room_id, "ban", ratelimit=False, content=old_event.content, ) # XXX invites/joins # XXX 3pid invites async def _move_aliases_to_new_room( self, requester: Requester, old_room_id: str, new_room_id: str, old_room_state: StateMap[str], ) -> None: # check to see if we have a canonical alias. canonical_alias_event = None canonical_alias_event_id = old_room_state.get((EventTypes.CanonicalAlias, "")) if canonical_alias_event_id: canonical_alias_event = await self.store.get_event(canonical_alias_event_id) await self.store.update_aliases_for_room(old_room_id, new_room_id) if not canonical_alias_event: return # If there is a canonical alias we need to update the one in the old # room and set one in the new one. old_canonical_alias_content = dict(canonical_alias_event.content) new_canonical_alias_content = {} canonical = canonical_alias_event.content.get("alias") if canonical and self.hs.is_mine_id(canonical): new_canonical_alias_content["alias"] = canonical old_canonical_alias_content.pop("alias", None) # We convert to a list as it will be a Tuple. old_alt_aliases = list(old_canonical_alias_content.get("alt_aliases", [])) if old_alt_aliases: old_canonical_alias_content["alt_aliases"] = old_alt_aliases new_alt_aliases = new_canonical_alias_content.setdefault("alt_aliases", []) for alias in canonical_alias_event.content.get("alt_aliases", []): try: if self.hs.is_mine_id(alias): new_alt_aliases.append(alias) old_alt_aliases.remove(alias) except Exception: logger.info( "Invalid alias %s in canonical alias event %s", alias, canonical_alias_event_id, ) if not old_alt_aliases: old_canonical_alias_content.pop("alt_aliases") # If a canonical alias event existed for the old room, fire a canonical # alias event for the new room with a copy of the information. try: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.CanonicalAlias, "state_key": "", "room_id": old_room_id, "sender": requester.user.to_string(), "content": old_canonical_alias_content, }, ratelimit=False, ) except SynapseError as e: # again I'm not really expecting this to fail, but if it does, I'd rather # we returned the new room to the client at this point. logger.error("Unable to send updated alias events in old room: %s", e) try: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.CanonicalAlias, "state_key": "", "room_id": new_room_id, "sender": requester.user.to_string(), "content": new_canonical_alias_content, }, ratelimit=False, ) except SynapseError as e: # again I'm not really expecting this to fail, but if it does, I'd rather # we returned the new room to the client at this point. logger.error("Unable to send updated alias events in new room: %s", e) async def create_room( self, requester: Requester, config: JsonDict, ratelimit: bool = True, creator_join_profile: Optional[JsonDict] = None, ) -> Tuple[dict, int]: """Creates a new room. Args: requester: The user who requested the room creation. config : A dict of configuration options. ratelimit: set to False to disable the rate limiter creator_join_profile: Set to override the displayname and avatar for the creating user in this room. If unset, displayname and avatar will be derived from the user's profile. If set, should contain the values to go in the body of the 'join' event (typically `avatar_url` and/or `displayname`. Returns: First, a dict containing the keys `room_id` and, if an alias was, requested, `room_alias`. Secondly, the stream_id of the last persisted event. Raises: SynapseError if the room ID couldn't be stored, or something went horribly wrong. ResourceLimitError if server is blocked to some resource being exceeded """ user_id = requester.user.to_string() await self.auth.check_auth_blocking(requester=requester) if ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ): # allow the server notices mxid to create rooms is_requester_admin = True else: is_requester_admin = await self.auth.is_server_admin(requester.user) # Let the third party rules modify the room creation config if needed, or abort # the room creation entirely with an exception. await self.third_party_event_rules.on_create_room( requester, config, is_requester_admin=is_requester_admin ) invite_3pid_list = config.get("invite_3pid", []) invite_list = config.get("invite", []) if not is_requester_admin and not ( await self.spam_checker.user_may_create_room(user_id) ): raise SynapseError( 403, "You are not permitted to create rooms", Codes.FORBIDDEN ) if ratelimit: await self.request_ratelimiter.ratelimit(requester) room_version_id = config.get( "room_version", self.config.server.default_room_version.identifier ) if not isinstance(room_version_id, str): raise SynapseError(400, "room_version must be a string", Codes.BAD_JSON) room_version = KNOWN_ROOM_VERSIONS.get(room_version_id) if room_version is None: raise SynapseError( 400, "Your homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) room_alias = None if "room_alias_name" in config: for wchar in string.whitespace: if wchar in config["room_alias_name"]: raise SynapseError(400, "Invalid characters in room alias") room_alias = RoomAlias(config["room_alias_name"], self.hs.hostname) mapping = await self.store.get_association_from_room_alias(room_alias) if mapping: raise SynapseError(400, "Room alias already taken", Codes.ROOM_IN_USE) for i in invite_list: try: uid = UserID.from_string(i) parse_and_validate_server_name(uid.domain) except Exception: raise SynapseError(400, "Invalid user_id: %s" % (i,)) if (invite_list or invite_3pid_list) and requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) # Allow the request to go through, but remove any associated invites. invite_3pid_list = [] invite_list = [] if invite_list or invite_3pid_list: try: # If there are invites in the request, see if the ratelimiting settings # allow that number of invites to be sent from the current user. await self.room_member_handler.ratelimit_multiple_invites( requester, room_id=None, n_invites=len(invite_list) + len(invite_3pid_list), update=False, ) except LimitExceededError: raise SynapseError(400, "Cannot invite so many users at once") await self.event_creation_handler.assert_accepted_privacy_policy(requester) power_level_content_override = config.get("power_level_content_override") if ( power_level_content_override and "users" in power_level_content_override and user_id not in power_level_content_override["users"] ): raise SynapseError( 400, "Not a valid power_level_content_override: 'users' did not contain %s" % (user_id,), ) visibility = config.get("visibility", None) is_public = visibility == "public" room_id = await self._generate_room_id( creator_id=user_id, is_public=is_public, room_version=room_version, ) # Check whether this visibility value is blocked by a third party module allowed_by_third_party_rules = await ( self.third_party_event_rules.check_visibility_can_be_modified( room_id, visibility ) ) if not allowed_by_third_party_rules: raise SynapseError(403, "Room visibility value not allowed.") if is_public: room_aliases = [] if room_alias: room_aliases.append(room_alias.to_string()) if not self.config.roomdirectory.is_publishing_room_allowed( user_id, room_id, room_aliases ): # Let's just return a generic message, as there may be all sorts of # reasons why we said no. TODO: Allow configurable error messages # per alias creation rule? raise SynapseError(403, "Not allowed to publish room") directory_handler = self.hs.get_directory_handler() if room_alias: await directory_handler.create_association( requester=requester, room_id=room_id, room_alias=room_alias, servers=[self.hs.hostname], check_membership=False, ) preset_config = config.get( "preset", RoomCreationPreset.PRIVATE_CHAT if visibility == "private" else RoomCreationPreset.PUBLIC_CHAT, ) raw_initial_state = config.get("initial_state", []) initial_state = OrderedDict() for val in raw_initial_state: initial_state[(val["type"], val.get("state_key", ""))] = val["content"] creation_content = config.get("creation_content", {}) # override any attempt to set room versions via the creation_content creation_content["room_version"] = room_version.identifier last_stream_id = await self._send_events_for_new_room( requester, room_id, preset_config=preset_config, invite_list=invite_list, initial_state=initial_state, creation_content=creation_content, room_alias=room_alias, power_level_content_override=power_level_content_override, creator_join_profile=creator_join_profile, ratelimit=ratelimit, ) if "name" in config: name = config["name"] ( _, last_stream_id, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.Name, "room_id": room_id, "sender": user_id, "state_key": "", "content": {"name": name}, }, ratelimit=False, ) if "topic" in config: topic = config["topic"] ( _, last_stream_id, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.Topic, "room_id": room_id, "sender": user_id, "state_key": "", "content": {"topic": topic}, }, ratelimit=False, ) # we avoid dropping the lock between invites, as otherwise joins can # start coming in and making the createRoom slow. # # we also don't need to check the requester's shadow-ban here, as we # have already done so above (and potentially emptied invite_list). with (await self.room_member_handler.member_linearizer.queue((room_id,))): content = {} is_direct = config.get("is_direct", None) if is_direct: content["is_direct"] = is_direct for invitee in invite_list: ( _, last_stream_id, ) = await self.room_member_handler.update_membership_locked( requester, UserID.from_string(invitee), room_id, "invite", ratelimit=False, content=content, new_room=True, ) for invite_3pid in invite_3pid_list: id_server = invite_3pid["id_server"] id_access_token = invite_3pid.get("id_access_token") # optional address = invite_3pid["address"] medium = invite_3pid["medium"] # Note that do_3pid_invite can raise a ShadowBanError, but this was # handled above by emptying invite_3pid_list. last_stream_id = await self.hs.get_room_member_handler().do_3pid_invite( room_id, requester.user, medium, address, id_server, requester, txn_id=None, id_access_token=id_access_token, ) result = {"room_id": room_id} if room_alias: result["room_alias"] = room_alias.to_string() # Always wait for room creation to propagate before returning await self._replication.wait_for_stream_position( self.hs.config.worker.events_shard_config.get_instance(room_id), "events", last_stream_id, ) return result, last_stream_id async def _send_events_for_new_room( self, creator: Requester, room_id: str, preset_config: str, invite_list: List[str], initial_state: MutableStateMap, creation_content: JsonDict, room_alias: Optional[RoomAlias] = None, power_level_content_override: Optional[JsonDict] = None, creator_join_profile: Optional[JsonDict] = None, ratelimit: bool = True, ) -> int: """Sends the initial events into a new room. `power_level_content_override` doesn't apply when initial state has power level state event content. Returns: The stream_id of the last event persisted. """ creator_id = creator.user.to_string() event_keys = {"room_id": room_id, "sender": creator_id, "state_key": ""} def create(etype: str, content: JsonDict, **kwargs: Any) -> JsonDict: e = {"type": etype, "content": content} e.update(event_keys) e.update(kwargs) return e async def send(etype: str, content: JsonDict, **kwargs: Any) -> int: event = create(etype, content, **kwargs) logger.debug("Sending %s in new room", etype) # Allow these events to be sent even if the user is shadow-banned to # allow the room creation to complete. ( _, last_stream_id, ) = await self.event_creation_handler.create_and_send_nonmember_event( creator, event, ratelimit=False, ignore_shadow_ban=True, ) return last_stream_id try: config = self._presets_dict[preset_config] except KeyError: raise SynapseError( 400, f"'{preset_config}' is not a valid preset", errcode=Codes.BAD_JSON ) creation_content.update({"creator": creator_id}) await send(etype=EventTypes.Create, content=creation_content) logger.debug("Sending %s in new room", EventTypes.Member) await self.room_member_handler.update_membership( creator, creator.user, room_id, "join", ratelimit=ratelimit, content=creator_join_profile, new_room=True, ) # We treat the power levels override specially as this needs to be one # of the first events that get sent into a room. pl_content = initial_state.pop((EventTypes.PowerLevels, ""), None) if pl_content is not None: last_sent_stream_id = await send( etype=EventTypes.PowerLevels, content=pl_content ) else: power_level_content: JsonDict = { "users": {creator_id: 100}, "users_default": 0, "events": { EventTypes.Name: 50, EventTypes.PowerLevels: 100, EventTypes.RoomHistoryVisibility: 100, EventTypes.CanonicalAlias: 50, EventTypes.RoomAvatar: 50, EventTypes.Tombstone: 100, EventTypes.ServerACL: 100, EventTypes.RoomEncryption: 100, }, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50, "historical": 100, } if config["original_invitees_have_ops"]: for invitee in invite_list: power_level_content["users"][invitee] = 100 # Power levels overrides are defined per chat preset power_level_content.update(config["power_level_content_override"]) if power_level_content_override: power_level_content.update(power_level_content_override) last_sent_stream_id = await send( etype=EventTypes.PowerLevels, content=power_level_content ) if room_alias and (EventTypes.CanonicalAlias, "") not in initial_state: last_sent_stream_id = await send( etype=EventTypes.CanonicalAlias, content={"alias": room_alias.to_string()}, ) if (EventTypes.JoinRules, "") not in initial_state: last_sent_stream_id = await send( etype=EventTypes.JoinRules, content={"join_rule": config["join_rules"]} ) if (EventTypes.RoomHistoryVisibility, "") not in initial_state: last_sent_stream_id = await send( etype=EventTypes.RoomHistoryVisibility, content={"history_visibility": config["history_visibility"]}, ) if config["guest_can_join"]: if (EventTypes.GuestAccess, "") not in initial_state: last_sent_stream_id = await send( etype=EventTypes.GuestAccess, content={EventContentFields.GUEST_ACCESS: GuestAccess.CAN_JOIN}, ) for (etype, state_key), content in initial_state.items(): last_sent_stream_id = await send( etype=etype, state_key=state_key, content=content ) if config["encrypted"]: last_sent_stream_id = await send( etype=EventTypes.RoomEncryption, state_key="", content={"algorithm": RoomEncryptionAlgorithms.DEFAULT}, ) return last_sent_stream_id async def _generate_room_id( self, creator_id: str, is_public: bool, room_version: RoomVersion, ) -> str: # autogen room IDs and try to create it. We may clash, so just # try a few times till one goes through, giving up eventually. attempts = 0 while attempts < 5: try: random_string = stringutils.random_string(18) gen_room_id = RoomID(random_string, self.hs.hostname).to_string() await self.store.store_room( room_id=gen_room_id, room_creator_user_id=creator_id, is_public=is_public, room_version=room_version, ) return gen_room_id except StoreError: attempts += 1 raise StoreError(500, "Couldn't generate a room ID.") class RoomContextHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.store = hs.get_datastore() self.storage = hs.get_storage() self.state_store = self.storage.state async def get_event_context( self, requester: Requester, room_id: str, event_id: str, limit: int, event_filter: Optional[Filter], use_admin_priviledge: bool = False, ) -> Optional[EventContext]: """Retrieves events, pagination tokens and state around a given event in a room. Args: requester room_id event_id limit: The maximum number of events to return in total (excluding state). event_filter: the filter to apply to the events returned (excluding the target event_id) use_admin_priviledge: if `True`, return all events, regardless of whether `user` has access to them. To be used **ONLY** from the admin API. Returns: dict, or None if the event isn't found """ user = requester.user if use_admin_priviledge: await assert_user_is_admin(self.auth, requester.user) before_limit = math.floor(limit / 2.0) after_limit = limit - before_limit users = await self.store.get_users_in_room(room_id) is_peeking = user.to_string() not in users async def filter_evts(events: List[EventBase]) -> List[EventBase]: if use_admin_priviledge: return events return await filter_events_for_client( self.storage, user.to_string(), events, is_peeking=is_peeking ) event = await self.store.get_event( event_id, get_prev_content=True, allow_none=True ) if not event: return None filtered = await filter_evts([event]) if not filtered: raise AuthError(403, "You don't have permission to access that event.") results = await self.store.get_events_around( room_id, event_id, before_limit, after_limit, event_filter ) events_before = results.events_before events_after = results.events_after if event_filter: events_before = await event_filter.filter(events_before) events_after = await event_filter.filter(events_after) events_before = await filter_evts(events_before) events_after = await filter_evts(events_after) # filter_evts can return a pruned event in case the user is allowed to see that # there's something there but not see the content, so use the event that's in # `filtered` rather than the event we retrieved from the datastore. event = filtered[0] # Fetch the aggregations. aggregations = await self.store.get_bundled_aggregations( itertools.chain(events_before, (event,), events_after), user.to_string(), ) if events_after: last_event_id = events_after[-1].event_id else: last_event_id = event_id if event_filter and event_filter.lazy_load_members: state_filter = StateFilter.from_lazy_load_member_list( ev.sender for ev in itertools.chain( events_before, (event,), events_after, ) ) else: state_filter = StateFilter.all() # XXX: why do we return the state as of the last event rather than the # first? Shouldn't we be consistent with /sync? # https://github.com/matrix-org/matrix-doc/issues/687 state = await self.state_store.get_state_for_events( [last_event_id], state_filter=state_filter ) state_events = list(state[last_event_id].values()) if event_filter: state_events = await event_filter.filter(state_events) # We use a dummy token here as we only care about the room portion of # the token, which we replace. token = StreamToken.START return EventContext( events_before=events_before, event=event, events_after=events_after, state=await filter_evts(state_events), aggregations=aggregations, start=await token.copy_and_replace("room_key", results.start).to_string( self.store ), end=await token.copy_and_replace("room_key", results.end).to_string( self.store ), ) class TimestampLookupHandler: def __init__(self, hs: "HomeServer"): self.server_name = hs.hostname self.store = hs.get_datastore() self.state_handler = hs.get_state_handler() self.federation_client = hs.get_federation_client() async def get_event_for_timestamp( self, requester: Requester, room_id: str, timestamp: int, direction: str, ) -> Tuple[str, int]: """Find the closest event to the given timestamp in the given direction. If we can't find an event locally or the event we have locally is next to a gap, it will ask other federated homeservers for an event. Args: requester: The user making the request according to the access token room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: ["f"|"b"] to indicate whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: A tuple containing the `event_id` closest to the given timestamp in the given direction and the `origin_server_ts`. Raises: SynapseError if unable to find any event locally in the given direction """ local_event_id = await self.store.get_event_id_for_timestamp( room_id, timestamp, direction ) logger.debug( "get_event_for_timestamp: locally, we found event_id=%s closest to timestamp=%s", local_event_id, timestamp, ) # Check for gaps in the history where events could be hiding in between # the timestamp given and the event we were able to find locally is_event_next_to_backward_gap = False is_event_next_to_forward_gap = False if local_event_id: local_event = await self.store.get_event( local_event_id, allow_none=False, allow_rejected=False ) if direction == "f": # We only need to check for a backward gap if we're looking forwards # to ensure there is nothing in between. is_event_next_to_backward_gap = ( await self.store.is_event_next_to_backward_gap(local_event) ) elif direction == "b": # We only need to check for a forward gap if we're looking backwards # to ensure there is nothing in between is_event_next_to_forward_gap = ( await self.store.is_event_next_to_forward_gap(local_event) ) # If we found a gap, we should probably ask another homeserver first # about more history in between if ( not local_event_id or is_event_next_to_backward_gap or is_event_next_to_forward_gap ): logger.debug( "get_event_for_timestamp: locally, we found event_id=%s closest to timestamp=%s which is next to a gap in event history so we're asking other homeservers first", local_event_id, timestamp, ) # Find other homeservers from the given state in the room curr_state = await self.state_handler.get_current_state(room_id) curr_domains = get_domains_from_state(curr_state) likely_domains = [ domain for domain, depth in curr_domains if domain != self.server_name ] # Loop through each homeserver candidate until we get a succesful response for domain in likely_domains: try: remote_response = await self.federation_client.timestamp_to_event( domain, room_id, timestamp, direction ) logger.debug( "get_event_for_timestamp: response from domain(%s)=%s", domain, remote_response, ) # TODO: Do we want to persist this as an extremity? # TODO: I think ideally, we would try to backfill from # this event and run this whole # `get_event_for_timestamp` function again to make sure # they didn't give us an event from their gappy history. remote_event_id = remote_response.event_id origin_server_ts = remote_response.origin_server_ts # Only return the remote event if it's closer than the local event if not local_event or ( abs(origin_server_ts - timestamp) < abs(local_event.origin_server_ts - timestamp) ): return remote_event_id, origin_server_ts except (HttpResponseException, InvalidResponseError) as ex: # Let's not put a high priority on some other homeserver # failing to respond or giving a random response logger.debug( "Failed to fetch /timestamp_to_event from %s because of exception(%s) %s args=%s", domain, type(ex).__name__, ex, ex.args, ) except Exception as ex: # But we do want to see some exceptions in our code logger.warning( "Failed to fetch /timestamp_to_event from %s because of exception(%s) %s args=%s", domain, type(ex).__name__, ex, ex.args, ) if not local_event_id: raise SynapseError( 404, "Unable to find event from %s in direction %s" % (timestamp, direction), errcode=Codes.NOT_FOUND, ) return local_event_id, local_event.origin_server_ts class RoomEventSource(EventSource[RoomStreamToken, EventBase]): def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() async def get_new_events( self, user: UserID, from_key: RoomStreamToken, limit: Optional[int], room_ids: Collection[str], is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[EventBase], RoomStreamToken]: # We just ignore the key for now. to_key = self.get_current_key() if from_key.topological: logger.warning("Stream has topological part!!!! %r", from_key) from_key = RoomStreamToken(None, from_key.stream) app_service = self.store.get_app_service_by_user_id(user.to_string()) if app_service: # We no longer support AS users using /sync directly. # See https://github.com/matrix-org/matrix-doc/issues/1144 raise NotImplementedError() else: room_events = await self.store.get_membership_changes_for_user( user.to_string(), from_key, to_key ) room_to_events = await self.store.get_room_events_stream_for_rooms( room_ids=room_ids, from_key=from_key, to_key=to_key, limit=limit or 10, order="ASC", ) events = list(room_events) events.extend(e for evs, _ in room_to_events.values() for e in evs) events.sort(key=lambda e: e.internal_metadata.order) if limit: events[:] = events[:limit] if events: end_key = events[-1].internal_metadata.after else: end_key = to_key return events, end_key def get_current_key(self) -> RoomStreamToken: return self.store.get_room_max_token() def get_current_key_for_room(self, room_id: str) -> Awaitable[str]: return self.store.get_room_events_max_id(room_id) class ShutdownRoomResponse(TypedDict): """ Attributes: kicked_users: An array of users (`user_id`) that were kicked. failed_to_kick_users: An array of users (`user_id`) that that were not kicked. local_aliases: An array of strings representing the local aliases that were migrated from the old room to the new. new_room_id: A string representing the room ID of the new room. """ kicked_users: List[str] failed_to_kick_users: List[str] local_aliases: List[str] new_room_id: Optional[str] class RoomShutdownHandler: DEFAULT_MESSAGE = ( "Sharing illegal content on this server is not permitted and rooms in" " violation will be blocked." ) DEFAULT_ROOM_NAME = "Content Violation Notification" def __init__(self, hs: "HomeServer"): self.hs = hs self.room_member_handler = hs.get_room_member_handler() self._room_creation_handler = hs.get_room_creation_handler() self._replication = hs.get_replication_data_handler() self.event_creation_handler = hs.get_event_creation_handler() self.store = hs.get_datastore() async def shutdown_room( self, room_id: str, requester_user_id: str, new_room_user_id: Optional[str] = None, new_room_name: Optional[str] = None, message: Optional[str] = None, block: bool = False, ) -> ShutdownRoomResponse: """ Shuts down a room. Moves all local users and room aliases automatically to a new room if `new_room_user_id` is set. Otherwise local users only leave the room without any information. The new room will be created with the user specified by the `new_room_user_id` parameter as room administrator and will contain a message explaining what happened. Users invited to the new room will have power level `-10` by default, and thus be unable to speak. The local server will only have the power to move local user and room aliases to the new room. Users on other servers will be unaffected. Args: room_id: The ID of the room to shut down. requester_user_id: User who requested the action and put the room on the blocking list. new_room_user_id: If set, a new room will be created with this user ID as the creator and admin, and all users in the old room will be moved into that room. If not set, no new room will be created and the users will just be removed from the old room. new_room_name: A string representing the name of the room that new users will be invited to. Defaults to `Content Violation Notification` message: A string containing the first message that will be sent as `new_room_user_id` in the new room. Ideally this will clearly convey why the original room was shut down. Defaults to `Sharing illegal content on this server is not permitted and rooms in violation will be blocked.` block: If set to `True`, users will be prevented from joining the old room. This option can also be used to pre-emptively block a room, even if it's unknown to this homeserver. In this case, the room will be blocked, and no further action will be taken. If `False`, attempting to delete an unknown room is invalid. Defaults to `False`. Returns: a dict containing the following keys: kicked_users: An array of users (`user_id`) that were kicked. failed_to_kick_users: An array of users (`user_id`) that that were not kicked. local_aliases: An array of strings representing the local aliases that were migrated from the old room to the new. new_room_id: A string representing the room ID of the new room, or None if no such room was created. """ if not new_room_name: new_room_name = self.DEFAULT_ROOM_NAME if not message: message = self.DEFAULT_MESSAGE if not RoomID.is_valid(room_id): raise SynapseError(400, "%s is not a legal room ID" % (room_id,)) # Action the block first (even if the room doesn't exist yet) if block: # This will work even if the room is already blocked, but that is # desirable in case the first attempt at blocking the room failed below. await self.store.block_room(room_id, requester_user_id) if not await self.store.get_room(room_id): # if we don't know about the room, there is nothing left to do. return { "kicked_users": [], "failed_to_kick_users": [], "local_aliases": [], "new_room_id": None, } if new_room_user_id is not None: if not self.hs.is_mine_id(new_room_user_id): raise SynapseError( 400, "User must be our own: %s" % (new_room_user_id,) ) room_creator_requester = create_requester( new_room_user_id, authenticated_entity=requester_user_id ) info, stream_id = await self._room_creation_handler.create_room( room_creator_requester, config={ "preset": RoomCreationPreset.PUBLIC_CHAT, "name": new_room_name, "power_level_content_override": {"users_default": -10}, }, ratelimit=False, ) new_room_id = info["room_id"] logger.info( "Shutting down room %r, joining to new room: %r", room_id, new_room_id ) # We now wait for the create room to come back in via replication so # that we can assume that all the joins/invites have propagated before # we try and auto join below. await self._replication.wait_for_stream_position( self.hs.config.worker.events_shard_config.get_instance(new_room_id), "events", stream_id, ) else: new_room_id = None logger.info("Shutting down room %r", room_id) users = await self.store.get_users_in_room(room_id) kicked_users = [] failed_to_kick_users = [] for user_id in users: if not self.hs.is_mine_id(user_id): continue logger.info("Kicking %r from %r...", user_id, room_id) try: # Kick users from room target_requester = create_requester( user_id, authenticated_entity=requester_user_id ) _, stream_id = await self.room_member_handler.update_membership( requester=target_requester, target=target_requester.user, room_id=room_id, action=Membership.LEAVE, content={}, ratelimit=False, require_consent=False, ) # Wait for leave to come in over replication before trying to forget. await self._replication.wait_for_stream_position( self.hs.config.worker.events_shard_config.get_instance(room_id), "events", stream_id, ) await self.room_member_handler.forget(target_requester.user, room_id) # Join users to new room if new_room_user_id: await self.room_member_handler.update_membership( requester=target_requester, target=target_requester.user, room_id=new_room_id, action=Membership.JOIN, content={}, ratelimit=False, require_consent=False, ) kicked_users.append(user_id) except Exception: logger.exception( "Failed to leave old room and join new room for %r", user_id ) failed_to_kick_users.append(user_id) # Send message in new room and move aliases if new_room_user_id: await self.event_creation_handler.create_and_send_nonmember_event( room_creator_requester, { "type": "m.room.message", "content": {"body": message, "msgtype": "m.text"}, "room_id": new_room_id, "sender": new_room_user_id, }, ratelimit=False, ) aliases_for_room = await self.store.get_aliases_for_room(room_id) await self.store.update_aliases_for_room( room_id, new_room_id, requester_user_id ) else: aliases_for_room = [] return { "kicked_users": kicked_users, "failed_to_kick_users": failed_to_kick_users, "local_aliases": aliases_for_room, "new_room_id": new_room_id, } synapse-1.53.0/synapse/handlers/room_batch.py000066400000000000000000000445351420514467300212540ustar00rootroot00000000000000import logging from typing import TYPE_CHECKING, List, Tuple from synapse.api.constants import EventContentFields, EventTypes from synapse.appservice import ApplicationService from synapse.http.servlet import assert_params_in_dict from synapse.types import JsonDict, Requester, UserID, create_requester from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomBatchHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self.state_store = hs.get_storage().state self.event_creation_handler = hs.get_event_creation_handler() self.room_member_handler = hs.get_room_member_handler() self.auth = hs.get_auth() async def inherit_depth_from_prev_ids(self, prev_event_ids: List[str]) -> int: """Finds the depth which would sort it after the most-recent prev_event_id but before the successors of those events. If no successors are found, we assume it's an historical extremity part of the current batch and use the same depth of the prev_event_ids. Args: prev_event_ids: List of prev event IDs Returns: Inherited depth """ ( most_recent_prev_event_id, most_recent_prev_event_depth, ) = await self.store.get_max_depth_of(prev_event_ids) # We want to insert the historical event after the `prev_event` but before the successor event # # We inherit depth from the successor event instead of the `prev_event` # because events returned from `/messages` are first sorted by `topological_ordering` # which is just the `depth` and then tie-break with `stream_ordering`. # # We mark these inserted historical events as "backfilled" which gives them a # negative `stream_ordering`. If we use the same depth as the `prev_event`, # then our historical event will tie-break and be sorted before the `prev_event` # when it should come after. # # We want to use the successor event depth so they appear after `prev_event` because # it has a larger `depth` but before the successor event because the `stream_ordering` # is negative before the successor event. successor_event_ids = await self.store.get_successor_events( [most_recent_prev_event_id] ) # If we can't find any successor events, then it's a forward extremity of # historical messages and we can just inherit from the previous historical # event which we can already assume has the correct depth where we want # to insert into. if not successor_event_ids: depth = most_recent_prev_event_depth else: ( _, oldest_successor_depth, ) = await self.store.get_min_depth_of(successor_event_ids) depth = oldest_successor_depth return depth def create_insertion_event_dict( self, sender: str, room_id: str, origin_server_ts: int ) -> JsonDict: """Creates an event dict for an "insertion" event with the proper fields and a random batch ID. Args: sender: The event author MXID room_id: The room ID that the event belongs to origin_server_ts: Timestamp when the event was sent Returns: The new event dictionary to insert. """ next_batch_id = random_string(8) insertion_event = { "type": EventTypes.MSC2716_INSERTION, "sender": sender, "room_id": room_id, "content": { EventContentFields.MSC2716_NEXT_BATCH_ID: next_batch_id, EventContentFields.MSC2716_HISTORICAL: True, }, "origin_server_ts": origin_server_ts, } return insertion_event async def create_requester_for_user_id_from_app_service( self, user_id: str, app_service: ApplicationService ) -> Requester: """Creates a new requester for the given user_id and validates that the app service is allowed to control the given user. Args: user_id: The author MXID that the app service is controlling app_service: The app service that controls the user Returns: Requester object """ await self.auth.validate_appservice_can_control_user_id(app_service, user_id) return create_requester(user_id, app_service=app_service) async def get_most_recent_auth_event_ids_from_event_id_list( self, event_ids: List[str] ) -> List[str]: """Find the most recent auth event ids (derived from state events) that allowed that message to be sent. We will use this as a base to auth our historical messages against. Args: event_ids: List of event ID's to look at Returns: List of event ID's """ ( most_recent_prev_event_id, _, ) = await self.store.get_max_depth_of(event_ids) # mapping from (type, state_key) -> state_event_id prev_state_map = await self.state_store.get_state_ids_for_event( most_recent_prev_event_id ) # List of state event ID's prev_state_ids = list(prev_state_map.values()) auth_event_ids = prev_state_ids return auth_event_ids async def persist_state_events_at_start( self, state_events_at_start: List[JsonDict], room_id: str, initial_auth_event_ids: List[str], app_service_requester: Requester, ) -> List[str]: """Takes all `state_events_at_start` event dictionaries and creates/persists them as floating state events which don't resolve into the current room state. They are floating because they reference a fake prev_event which doesn't connect to the normal DAG at all. Args: state_events_at_start: room_id: Room where you want the events persisted in. initial_auth_event_ids: These will be the auth_events for the first state event created. Each event created afterwards will be added to the list of auth events for the next state event created. app_service_requester: The requester of an application service. Returns: List of state event ID's we just persisted """ assert app_service_requester.app_service state_event_ids_at_start = [] auth_event_ids = initial_auth_event_ids.copy() # Make the state events float off on their own by specifying no # prev_events for the first one in the chain so we don't have a bunch of # `@mxid joined the room` noise between each batch. prev_event_ids_for_state_chain: List[str] = [] for index, state_event in enumerate(state_events_at_start): assert_params_in_dict( state_event, ["type", "origin_server_ts", "content", "sender"] ) logger.debug( "RoomBatchSendEventRestServlet inserting state_event=%s, auth_event_ids=%s", state_event, auth_event_ids, ) event_dict = { "type": state_event["type"], "origin_server_ts": state_event["origin_server_ts"], "content": state_event["content"], "room_id": room_id, "sender": state_event["sender"], "state_key": state_event["state_key"], } # Mark all events as historical event_dict["content"][EventContentFields.MSC2716_HISTORICAL] = True # TODO: This is pretty much the same as some other code to handle inserting state in this file if event_dict["type"] == EventTypes.Member: membership = event_dict["content"].get("membership", None) event_id, _ = await self.room_member_handler.update_membership( await self.create_requester_for_user_id_from_app_service( state_event["sender"], app_service_requester.app_service ), target=UserID.from_string(event_dict["state_key"]), room_id=room_id, action=membership, content=event_dict["content"], outlier=True, historical=True, # Only the first event in the chain should be floating. # The rest should hang off each other in a chain. allow_no_prev_events=index == 0, prev_event_ids=prev_event_ids_for_state_chain, # Make sure to use a copy of this list because we modify it # later in the loop here. Otherwise it will be the same # reference and also update in the event when we append later. auth_event_ids=auth_event_ids.copy(), ) else: # TODO: Add some complement tests that adds state that is not member joins # and will use this code path. Maybe we only want to support join state events # and can get rid of this `else`? ( event, _, ) = await self.event_creation_handler.create_and_send_nonmember_event( await self.create_requester_for_user_id_from_app_service( state_event["sender"], app_service_requester.app_service ), event_dict, outlier=True, historical=True, # Only the first event in the chain should be floating. # The rest should hang off each other in a chain. allow_no_prev_events=index == 0, prev_event_ids=prev_event_ids_for_state_chain, # Make sure to use a copy of this list because we modify it # later in the loop here. Otherwise it will be the same # reference and also update in the event when we append later. auth_event_ids=auth_event_ids.copy(), ) event_id = event.event_id state_event_ids_at_start.append(event_id) auth_event_ids.append(event_id) # Connect all the state in a floating chain prev_event_ids_for_state_chain = [event_id] return state_event_ids_at_start async def persist_historical_events( self, events_to_create: List[JsonDict], room_id: str, inherited_depth: int, auth_event_ids: List[str], app_service_requester: Requester, ) -> List[str]: """Create and persists all events provided sequentially. Handles the complexity of creating events in chronological order so they can reference each other by prev_event but still persists in reverse-chronoloical order so they have the correct (topological_ordering, stream_ordering) and sort correctly from /messages. Args: events_to_create: List of historical events to create in JSON dictionary format. room_id: Room where you want the events persisted in. inherited_depth: The depth to create the events at (you will probably by calling inherit_depth_from_prev_ids(...)). auth_event_ids: Define which events allow you to create the given event in the room. app_service_requester: The requester of an application service. Returns: List of persisted event IDs """ assert app_service_requester.app_service # Make the historical event chain float off on its own by specifying no # prev_events for the first event in the chain which causes the HS to # ask for the state at the start of the batch later. prev_event_ids: List[str] = [] event_ids = [] events_to_persist = [] for index, ev in enumerate(events_to_create): assert_params_in_dict(ev, ["type", "origin_server_ts", "content", "sender"]) assert self.hs.is_mine_id(ev["sender"]), "User must be our own: %s" % ( ev["sender"], ) event_dict = { "type": ev["type"], "origin_server_ts": ev["origin_server_ts"], "content": ev["content"], "room_id": room_id, "sender": ev["sender"], # requester.user.to_string(), "prev_events": prev_event_ids.copy(), } # Mark all events as historical event_dict["content"][EventContentFields.MSC2716_HISTORICAL] = True event, context = await self.event_creation_handler.create_event( await self.create_requester_for_user_id_from_app_service( ev["sender"], app_service_requester.app_service ), event_dict, # Only the first event in the chain should be floating. # The rest should hang off each other in a chain. allow_no_prev_events=index == 0, prev_event_ids=event_dict.get("prev_events"), auth_event_ids=auth_event_ids, historical=True, depth=inherited_depth, ) assert context._state_group # Normally this is done when persisting the event but we have to # pre-emptively do it here because we create all the events first, # then persist them in another pass below. And we want to share # state_groups across the whole batch so this lookup needs to work # for the next event in the batch in this loop. await self.store.store_state_group_id_for_event_id( event_id=event.event_id, state_group_id=context._state_group, ) logger.debug( "RoomBatchSendEventRestServlet inserting event=%s, prev_event_ids=%s, auth_event_ids=%s", event, prev_event_ids, auth_event_ids, ) events_to_persist.append((event, context)) event_id = event.event_id event_ids.append(event_id) prev_event_ids = [event_id] # Persist events in reverse-chronological order so they have the # correct stream_ordering as they are backfilled (which decrements). # Events are sorted by (topological_ordering, stream_ordering) # where topological_ordering is just depth. for (event, context) in reversed(events_to_persist): await self.event_creation_handler.handle_new_client_event( await self.create_requester_for_user_id_from_app_service( event.sender, app_service_requester.app_service ), event=event, context=context, ) return event_ids async def handle_batch_of_events( self, events_to_create: List[JsonDict], room_id: str, batch_id_to_connect_to: str, inherited_depth: int, auth_event_ids: List[str], app_service_requester: Requester, ) -> Tuple[List[str], str]: """ Handles creating and persisting all of the historical events as well as insertion and batch meta events to make the batch navigable in the DAG. Args: events_to_create: List of historical events to create in JSON dictionary format. room_id: Room where you want the events created in. batch_id_to_connect_to: The batch_id from the insertion event you want this batch to connect to. inherited_depth: The depth to create the events at (you will probably by calling inherit_depth_from_prev_ids(...)). auth_event_ids: Define which events allow you to create the given event in the room. app_service_requester: The requester of an application service. Returns: Tuple containing a list of created events and the next_batch_id """ # Connect this current batch to the insertion event from the previous batch last_event_in_batch = events_to_create[-1] batch_event = { "type": EventTypes.MSC2716_BATCH, "sender": app_service_requester.user.to_string(), "room_id": room_id, "content": { EventContentFields.MSC2716_BATCH_ID: batch_id_to_connect_to, EventContentFields.MSC2716_HISTORICAL: True, }, # Since the batch event is put at the end of the batch, # where the newest-in-time event is, copy the origin_server_ts from # the last event we're inserting "origin_server_ts": last_event_in_batch["origin_server_ts"], } # Add the batch event to the end of the batch (newest-in-time) events_to_create.append(batch_event) # Add an "insertion" event to the start of each batch (next to the oldest-in-time # event in the batch) so the next batch can be connected to this one. insertion_event = self.create_insertion_event_dict( sender=app_service_requester.user.to_string(), room_id=room_id, # Since the insertion event is put at the start of the batch, # where the oldest-in-time event is, copy the origin_server_ts from # the first event we're inserting origin_server_ts=events_to_create[0]["origin_server_ts"], ) next_batch_id = insertion_event["content"][ EventContentFields.MSC2716_NEXT_BATCH_ID ] # Prepend the insertion event to the start of the batch (oldest-in-time) events_to_create = [insertion_event] + events_to_create # Create and persist all of the historical events event_ids = await self.persist_historical_events( events_to_create=events_to_create, room_id=room_id, inherited_depth=inherited_depth, auth_event_ids=auth_event_ids, app_service_requester=app_service_requester, ) return event_ids, next_batch_id synapse-1.53.0/synapse/handlers/room_list.py000066400000000000000000000454551420514467300211500ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Optional, Tuple import attr import msgpack from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, HistoryVisibility, JoinRules, ) from synapse.api.errors import ( Codes, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.types import JsonDict, ThirdPartyInstanceID from synapse.util.caches.descriptors import _CacheContext, cached from synapse.util.caches.response_cache import ResponseCache if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) REMOTE_ROOM_LIST_POLL_INTERVAL = 60 * 1000 # This is used to indicate we should only return rooms published to the main list. EMPTY_THIRD_PARTY_ID = ThirdPartyInstanceID(None, None) class RoomListHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.hs = hs self.enable_room_list_search = hs.config.roomdirectory.enable_room_list_search self.response_cache: ResponseCache[ Tuple[Optional[int], Optional[str], Optional[ThirdPartyInstanceID]] ] = ResponseCache(hs.get_clock(), "room_list") self.remote_response_cache: ResponseCache[ Tuple[str, Optional[int], Optional[str], bool, Optional[str]] ] = ResponseCache(hs.get_clock(), "remote_room_list", timeout_ms=30 * 1000) async def get_local_public_room_list( self, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, network_tuple: Optional[ThirdPartyInstanceID] = EMPTY_THIRD_PARTY_ID, from_federation: bool = False, ) -> JsonDict: """Generate a local public room list. There are multiple different lists: the main one plus one per third party network. A client can ask for a specific list or to return all. Args: limit since_token search_filter network_tuple: Which public list to use. This can be (None, None) to indicate the main list, or a particular appservice and network id to use an appservice specific one. Setting to None returns all public rooms across all lists. from_federation: true iff the request comes from the federation API """ if not self.enable_room_list_search: return {"chunk": [], "total_room_count_estimate": 0} logger.info( "Getting public room list: limit=%r, since=%r, search=%r, network=%r", limit, since_token, bool(search_filter), network_tuple, ) if search_filter: # We explicitly don't bother caching searches or requests for # appservice specific lists. logger.info("Bypassing cache as search request.") return await self._get_public_room_list( limit, since_token, search_filter, network_tuple=network_tuple, from_federation=from_federation, ) key = (limit, since_token, network_tuple) return await self.response_cache.wrap( key, self._get_public_room_list, limit, since_token, network_tuple=network_tuple, from_federation=from_federation, ) async def _get_public_room_list( self, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, network_tuple: Optional[ThirdPartyInstanceID] = EMPTY_THIRD_PARTY_ID, from_federation: bool = False, ) -> JsonDict: """Generate a public room list. Args: limit: Maximum amount of rooms to return. since_token: search_filter: Dictionary to filter rooms by. network_tuple: Which public list to use. This can be (None, None) to indicate the main list, or a particular appservice and network id to use an appservice specific one. Setting to None returns all public rooms across all lists. from_federation: Whether this request originated from a federating server or a client. Used for room filtering. """ # Pagination tokens work by storing the room ID sent in the last batch, # plus the direction (forwards or backwards). Next batch tokens always # go forwards, prev batch tokens always go backwards. if since_token: batch_token = RoomListNextBatch.from_token(since_token) bounds: Optional[Tuple[int, str]] = ( batch_token.last_joined_members, batch_token.last_room_id, ) forwards = batch_token.direction_is_forward has_batch_token = True else: bounds = None forwards = True has_batch_token = False # we request one more than wanted to see if there are more pages to come probing_limit = limit + 1 if limit is not None else None results = await self.store.get_largest_public_rooms( network_tuple, search_filter, probing_limit, bounds=bounds, forwards=forwards, ignore_non_federatable=from_federation, ) def build_room_entry(room: JsonDict) -> JsonDict: entry = { "room_id": room["room_id"], "name": room["name"], "topic": room["topic"], "canonical_alias": room["canonical_alias"], "num_joined_members": room["joined_members"], "avatar_url": room["avatar"], "world_readable": room["history_visibility"] == HistoryVisibility.WORLD_READABLE, "guest_can_join": room["guest_access"] == "can_join", "join_rule": room["join_rules"], } # Filter out Nones – rather omit the field altogether return {k: v for k, v in entry.items() if v is not None} results = [build_room_entry(r) for r in results] response: JsonDict = {} num_results = len(results) if limit is not None: more_to_come = num_results == probing_limit # Depending on direction we trim either the front or back. if forwards: results = results[:limit] else: results = results[-limit:] else: more_to_come = False if num_results > 0: final_entry = results[-1] initial_entry = results[0] if forwards: if has_batch_token: # If there was a token given then we assume that there # must be previous results. response["prev_batch"] = RoomListNextBatch( last_joined_members=initial_entry["num_joined_members"], last_room_id=initial_entry["room_id"], direction_is_forward=False, ).to_token() if more_to_come: response["next_batch"] = RoomListNextBatch( last_joined_members=final_entry["num_joined_members"], last_room_id=final_entry["room_id"], direction_is_forward=True, ).to_token() else: if has_batch_token: response["next_batch"] = RoomListNextBatch( last_joined_members=final_entry["num_joined_members"], last_room_id=final_entry["room_id"], direction_is_forward=True, ).to_token() if more_to_come: response["prev_batch"] = RoomListNextBatch( last_joined_members=initial_entry["num_joined_members"], last_room_id=initial_entry["room_id"], direction_is_forward=False, ).to_token() response["chunk"] = results response["total_room_count_estimate"] = await self.store.count_public_rooms( network_tuple, ignore_non_federatable=from_federation ) return response @cached(num_args=1, cache_context=True) async def generate_room_entry( self, room_id: str, num_joined_users: int, cache_context: _CacheContext, with_alias: bool = True, allow_private: bool = False, ) -> Optional[JsonDict]: """Returns the entry for a room Args: room_id: The room's ID. num_joined_users: Number of users in the room. cache_context: Information for cached responses. with_alias: Whether to return the room's aliases in the result. allow_private: Whether invite-only rooms should be shown. Returns: Returns a room entry as a dictionary, or None if this room was determined not to be shown publicly. """ result = {"room_id": room_id, "num_joined_members": num_joined_users} if with_alias: aliases = await self.store.get_aliases_for_room( room_id, on_invalidate=cache_context.invalidate ) if aliases: result["aliases"] = aliases current_state_ids = await self.store.get_current_state_ids( room_id, on_invalidate=cache_context.invalidate ) if not current_state_ids: # We're not in the room, so may as well bail out here. return result event_map = await self.store.get_events( [ event_id for key, event_id in current_state_ids.items() if key[0] in ( EventTypes.Create, EventTypes.JoinRules, EventTypes.Name, EventTypes.Topic, EventTypes.CanonicalAlias, EventTypes.RoomHistoryVisibility, EventTypes.GuestAccess, "m.room.avatar", ) ] ) current_state = {(ev.type, ev.state_key): ev for ev in event_map.values()} # Double check that this is actually a public room. join_rules_event = current_state.get((EventTypes.JoinRules, "")) if join_rules_event: join_rule = join_rules_event.content.get("join_rule", None) if not allow_private and join_rule and join_rule != JoinRules.PUBLIC: return None # Return whether this room is open to federation users or not create_event = current_state[EventTypes.Create, ""] result["m.federate"] = create_event.content.get( EventContentFields.FEDERATE, True ) name_event = current_state.get((EventTypes.Name, "")) if name_event: name = name_event.content.get("name", None) if name: result["name"] = name topic_event = current_state.get((EventTypes.Topic, "")) if topic_event: topic = topic_event.content.get("topic", None) if topic: result["topic"] = topic canonical_event = current_state.get((EventTypes.CanonicalAlias, "")) if canonical_event: canonical_alias = canonical_event.content.get("alias", None) if canonical_alias: result["canonical_alias"] = canonical_alias visibility_event = current_state.get((EventTypes.RoomHistoryVisibility, "")) visibility = None if visibility_event: visibility = visibility_event.content.get("history_visibility", None) result["world_readable"] = visibility == HistoryVisibility.WORLD_READABLE guest_event = current_state.get((EventTypes.GuestAccess, "")) guest = None if guest_event: guest = guest_event.content.get(EventContentFields.GUEST_ACCESS) result["guest_can_join"] = guest == GuestAccess.CAN_JOIN avatar_event = current_state.get(("m.room.avatar", "")) if avatar_event: avatar_url = avatar_event.content.get("url", None) if avatar_url: result["avatar_url"] = avatar_url return result async def get_remote_public_room_list( self, server_name: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Get the public room list from remote server Raises: SynapseError """ if not self.enable_room_list_search: return {"chunk": [], "total_room_count_estimate": 0} if search_filter: # Searching across federation is defined in MSC2197. # However, the remote homeserver may or may not actually support it. # So we first try an MSC2197 remote-filtered search, then fall back # to a locally-filtered search if we must. try: res = await self._get_remote_list_cached( server_name, limit=limit, since_token=since_token, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, search_filter=search_filter, ) return res except HttpResponseException as hre: syn_err = hre.to_synapse_error() if hre.code in (404, 405) or syn_err.errcode in ( Codes.UNRECOGNIZED, Codes.NOT_FOUND, ): logger.debug("Falling back to locally-filtered /publicRooms") else: # Not an error that should trigger a fallback. raise SynapseError(502, "Failed to fetch room list") except RequestSendFailed: # Not an error that should trigger a fallback. raise SynapseError(502, "Failed to fetch room list") # if we reach this point, then we fall back to the situation where # we currently don't support searching across federation, so we have # to do it manually without pagination limit = None since_token = None try: res = await self._get_remote_list_cached( server_name, limit=limit, since_token=since_token, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) except (RequestSendFailed, HttpResponseException): raise SynapseError(502, "Failed to fetch room list") if search_filter: res = { "chunk": [ entry for entry in list(res.get("chunk", [])) if _matches_room_entry(entry, search_filter) ] } return res async def _get_remote_list_cached( self, server_name: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Wrapper around FederationClient.get_public_rooms that caches the result. """ repl_layer = self.hs.get_federation_client() if search_filter: # We can't cache when asking for search return await repl_layer.get_public_rooms( server_name, limit=limit, since_token=since_token, search_filter=search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) key = ( server_name, limit, since_token, include_all_networks, third_party_instance_id, ) return await self.remote_response_cache.wrap( key, repl_layer.get_public_rooms, server_name, limit=limit, since_token=since_token, search_filter=search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomListNextBatch: last_joined_members: int # The count to get rooms after/before last_room_id: str # The room_id to get rooms after/before direction_is_forward: bool # True if this is a next_batch, false if prev_batch KEY_DICT = { "last_joined_members": "m", "last_room_id": "r", "direction_is_forward": "d", } REVERSE_KEY_DICT = {v: k for k, v in KEY_DICT.items()} @classmethod def from_token(cls, token: str) -> "RoomListNextBatch": decoded = msgpack.loads(decode_base64(token), raw=False) return RoomListNextBatch( **{cls.REVERSE_KEY_DICT[key]: val for key, val in decoded.items()} ) def to_token(self) -> str: return encode_base64( msgpack.dumps( {self.KEY_DICT[key]: val for key, val in attr.asdict(self).items()} ) ) def copy_and_replace(self, **kwds: Any) -> "RoomListNextBatch": return attr.evolve(self, **kwds) def _matches_room_entry(room_entry: JsonDict, search_filter: dict) -> bool: if search_filter and search_filter.get("generic_search_term", None): generic_search_term = search_filter["generic_search_term"].upper() if generic_search_term in room_entry.get("name", "").upper(): return True elif generic_search_term in room_entry.get("topic", "").upper(): return True elif generic_search_term in room_entry.get("canonical_alias", "").upper(): return True else: return True return False synapse-1.53.0/synapse/handlers/room_member.py000066400000000000000000002142231420514467300214330ustar00rootroot00000000000000# Copyright 2016-2020 The Matrix.org Foundation C.I.C. # Copyright 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import logging import random from http import HTTPStatus from typing import TYPE_CHECKING, Iterable, List, Optional, Set, Tuple from synapse import types from synapse.api.constants import ( AccountDataTypes, EventContentFields, EventTypes, GuestAccess, Membership, ) from synapse.api.errors import ( AuthError, Codes, LimitExceededError, ShadowBanError, SynapseError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.event_auth import get_named_level, get_power_level_event from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.handlers.profile import MAX_AVATAR_URL_LEN, MAX_DISPLAYNAME_LEN from synapse.types import ( JsonDict, Requester, RoomAlias, RoomID, StateMap, UserID, create_requester, get_domain_from_id, ) from synapse.util.async_helpers import Linearizer from synapse.util.distributor import user_left_room if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomMemberHandler(metaclass=abc.ABCMeta): # TODO(paul): This handler currently contains a messy conflation of # low-level API that works on UserID objects and so on, and REST-level # API that takes ID strings and returns pagination chunks. These concerns # ought to be separated out a lot better. def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self.auth = hs.get_auth() self.state_handler = hs.get_state_handler() self.config = hs.config self._server_name = hs.hostname self.federation_handler = hs.get_federation_handler() self.directory_handler = hs.get_directory_handler() self.identity_handler = hs.get_identity_handler() self.registration_handler = hs.get_registration_handler() self.profile_handler = hs.get_profile_handler() self.event_creation_handler = hs.get_event_creation_handler() self.account_data_handler = hs.get_account_data_handler() self.event_auth_handler = hs.get_event_auth_handler() self.member_linearizer: Linearizer = Linearizer(name="member") self.clock = hs.get_clock() self.spam_checker = hs.get_spam_checker() self.third_party_event_rules = hs.get_third_party_event_rules() self._server_notices_mxid = self.config.servernotices.server_notices_mxid self._enable_lookup = hs.config.registration.enable_3pid_lookup self.allow_per_room_profiles = self.config.server.allow_per_room_profiles self._join_rate_limiter_local = Ratelimiter( store=self.store, clock=self.clock, rate_hz=hs.config.ratelimiting.rc_joins_local.per_second, burst_count=hs.config.ratelimiting.rc_joins_local.burst_count, ) self._join_rate_limiter_remote = Ratelimiter( store=self.store, clock=self.clock, rate_hz=hs.config.ratelimiting.rc_joins_remote.per_second, burst_count=hs.config.ratelimiting.rc_joins_remote.burst_count, ) self._invites_per_room_limiter = Ratelimiter( store=self.store, clock=self.clock, rate_hz=hs.config.ratelimiting.rc_invites_per_room.per_second, burst_count=hs.config.ratelimiting.rc_invites_per_room.burst_count, ) self._invites_per_user_limiter = Ratelimiter( store=self.store, clock=self.clock, rate_hz=hs.config.ratelimiting.rc_invites_per_user.per_second, burst_count=hs.config.ratelimiting.rc_invites_per_user.burst_count, ) self._third_party_invite_limiter = Ratelimiter( store=self.store, clock=self.clock, rate_hz=hs.config.ratelimiting.rc_third_party_invite.per_second, burst_count=hs.config.ratelimiting.rc_third_party_invite.burst_count, ) self.request_ratelimiter = hs.get_request_ratelimiter() @abc.abstractmethod async def _remote_join( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Try and join a room that this server is not in Args: requester remote_room_hosts: List of servers that can be used to join via. room_id: Room that we are trying to join user: User who is trying to join content: A dict that should be used as the content of the join event. """ raise NotImplementedError() @abc.abstractmethod async def remote_knock( self, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Try and knock on a room that this server is not in Args: remote_room_hosts: List of servers that can be used to knock via. room_id: Room that we are trying to knock on. user: User who is trying to knock. content: A dict that should be used as the content of the knock event. """ raise NotImplementedError() @abc.abstractmethod async def remote_reject_invite( self, invite_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rejects an out-of-band invite we have received from a remote server Args: invite_event_id: ID of the invite to be rejected txn_id: optional transaction ID supplied by the client requester: user making the rejection request, according to the access token content: additional content to include in the rejection event. Normally an empty dict. Returns: event id, stream_id of the leave event """ raise NotImplementedError() @abc.abstractmethod async def remote_rescind_knock( self, knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """Rescind a local knock made on a remote room. Args: knock_event_id: The ID of the knock event to rescind. txn_id: An optional transaction ID supplied by the client. requester: The user making the request, according to the access token. content: The content of the generated leave event. Returns: A tuple containing (event_id, stream_id of the leave event). """ raise NotImplementedError() @abc.abstractmethod async def _user_left_room(self, target: UserID, room_id: str) -> None: """Notifies distributor on master process that the user has left the room. Args: target room_id """ raise NotImplementedError() @abc.abstractmethod async def forget(self, user: UserID, room_id: str) -> None: raise NotImplementedError() async def ratelimit_multiple_invites( self, requester: Optional[Requester], room_id: Optional[str], n_invites: int, update: bool = True, ) -> None: """Ratelimit more than one invite sent by the given requester in the given room. Args: requester: The requester sending the invites. room_id: The room the invites are being sent in. n_invites: The amount of invites to ratelimit for. update: Whether to update the ratelimiter's cache. Raises: LimitExceededError: The requester can't send that many invites in the room. """ await self._invites_per_room_limiter.ratelimit( requester, room_id, update=update, n_actions=n_invites, ) async def ratelimit_invite( self, requester: Optional[Requester], room_id: Optional[str], invitee_user_id: str, ) -> None: """Ratelimit invites by room and by target user. If room ID is missing then we just rate limit by target user. """ if room_id: await self._invites_per_room_limiter.ratelimit(requester, room_id) await self._invites_per_user_limiter.ratelimit(requester, invitee_user_id) async def _local_membership_update( self, requester: Requester, target: UserID, room_id: str, membership: str, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, txn_id: Optional[str] = None, ratelimit: bool = True, content: Optional[dict] = None, require_consent: bool = True, outlier: bool = False, historical: bool = False, ) -> Tuple[str, int]: """ Internal membership update function to get an existing event or create and persist a new event for the new membership change. Args: requester: target: room_id: membership: allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases like MSC2716. prev_event_ids: The event IDs to use as the prev events auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. txn_id: ratelimit: content: require_consent: outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. historical: Indicates whether the message is being inserted back in time around some existing events. This is used to skip a few checks and mark the event as backfilled. Returns: Tuple of event ID and stream ordering position """ user_id = target.to_string() if content is None: content = {} content["membership"] = membership if requester.is_guest: content["kind"] = "guest" # Check if we already have an event with a matching transaction ID. (We # do this check just before we persist an event as well, but may as well # do it up front for efficiency.) if txn_id and requester.access_token_id: existing_event_id = await self.store.get_event_id_from_transaction_id( room_id, requester.user.to_string(), requester.access_token_id, txn_id, ) if existing_event_id: event_pos = await self.store.get_position_for_event(existing_event_id) return existing_event_id, event_pos.stream event, context = await self.event_creation_handler.create_event( requester, { "type": EventTypes.Member, "content": content, "room_id": room_id, "sender": requester.user.to_string(), "state_key": user_id, # For backwards compatibility: "membership": membership, }, txn_id=txn_id, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, require_consent=require_consent, outlier=outlier, historical=historical, ) prev_state_ids = await context.get_prev_state_ids() prev_member_event_id = prev_state_ids.get((EventTypes.Member, user_id), None) if event.membership == Membership.JOIN: newly_joined = True if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) newly_joined = prev_member_event.membership != Membership.JOIN # Only rate-limit if the user actually joined the room, otherwise we'll end # up blocking profile updates. if newly_joined and ratelimit: time_now_s = self.clock.time() ( allowed, time_allowed, ) = await self._join_rate_limiter_local.can_do_action(requester) if not allowed: raise LimitExceededError( retry_after_ms=int(1000 * (time_allowed - time_now_s)) ) result_event = await self.event_creation_handler.handle_new_client_event( requester, event, context, extra_users=[target], ratelimit=ratelimit, ) if event.membership == Membership.LEAVE: if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) if prev_member_event.membership == Membership.JOIN: await self._user_left_room(target, room_id) # we know it was persisted, so should have a stream ordering assert result_event.internal_metadata.stream_ordering return result_event.event_id, result_event.internal_metadata.stream_ordering async def copy_room_tags_and_direct_to_room( self, old_room_id: str, new_room_id: str, user_id: str ) -> None: """Copies the tags and direct room state from one room to another. Args: old_room_id: The room ID of the old room. new_room_id: The room ID of the new room. user_id: The user's ID. """ # Retrieve user account data for predecessor room user_account_data, _ = await self.store.get_account_data_for_user(user_id) # Copy direct message state if applicable direct_rooms = user_account_data.get(AccountDataTypes.DIRECT, {}) # Check which key this room is under if isinstance(direct_rooms, dict): for key, room_id_list in direct_rooms.items(): if old_room_id in room_id_list and new_room_id not in room_id_list: # Add new room_id to this key direct_rooms[key].append(new_room_id) # Save back to user's m.direct account data await self.account_data_handler.add_account_data_for_user( user_id, AccountDataTypes.DIRECT, direct_rooms ) break # Copy room tags if applicable room_tags = await self.store.get_tags_for_room(user_id, old_room_id) # Copy each room tag to the new room for tag, tag_content in room_tags.items(): await self.account_data_handler.add_tag_to_room( user_id, new_room_id, tag, tag_content ) async def update_membership( self, requester: Requester, target: UserID, room_id: str, action: str, txn_id: Optional[str] = None, remote_room_hosts: Optional[List[str]] = None, third_party_signed: Optional[dict] = None, ratelimit: bool = True, content: Optional[dict] = None, new_room: bool = False, require_consent: bool = True, outlier: bool = False, historical: bool = False, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, ) -> Tuple[str, int]: """Update a user's membership in a room. Params: requester: The user who is performing the update. target: The user whose membership is being updated. room_id: The room ID whose membership is being updated. action: The membership change, see synapse.api.constants.Membership. txn_id: The transaction ID, if given. remote_room_hosts: Remote servers to send the update to. third_party_signed: Information from a 3PID invite. ratelimit: Whether to rate limit the request. content: The content of the created event. new_room: Whether the membership update is happening in the context of a room creation. require_consent: Whether consent is required. outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. historical: Indicates whether the message is being inserted back in time around some existing events. This is used to skip a few checks and mark the event as backfilled. allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases like MSC2716. prev_event_ids: The event IDs to use as the prev events auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. Returns: A tuple of the new event ID and stream ID. Raises: ShadowBanError if a shadow-banned requester attempts to send an invite. """ if action == Membership.INVITE and requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() key = (room_id,) with (await self.member_linearizer.queue(key)): result = await self.update_membership_locked( requester, target, room_id, action, txn_id=txn_id, remote_room_hosts=remote_room_hosts, third_party_signed=third_party_signed, ratelimit=ratelimit, content=content, new_room=new_room, require_consent=require_consent, outlier=outlier, historical=historical, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, ) return result async def update_membership_locked( self, requester: Requester, target: UserID, room_id: str, action: str, txn_id: Optional[str] = None, remote_room_hosts: Optional[List[str]] = None, third_party_signed: Optional[dict] = None, ratelimit: bool = True, content: Optional[dict] = None, new_room: bool = False, require_consent: bool = True, outlier: bool = False, historical: bool = False, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, ) -> Tuple[str, int]: """Helper for update_membership. Assumes that the membership linearizer is already held for the room. Args: requester: target: room_id: action: txn_id: remote_room_hosts: third_party_signed: ratelimit: content: new_room: Whether the membership update is happening in the context of a room creation. require_consent: outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. historical: Indicates whether the message is being inserted back in time around some existing events. This is used to skip a few checks and mark the event as backfilled. allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases like MSC2716. prev_event_ids: The event IDs to use as the prev events auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. Returns: A tuple of the new event ID and stream ID. """ content_specified = bool(content) if content is None: content = {} else: # We do a copy here as we potentially change some keys # later on. content = dict(content) # allow the server notices mxid to set room-level profile is_requester_server_notices_user = ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ) if ( not self.allow_per_room_profiles and not is_requester_server_notices_user ) or requester.shadow_banned: # Strip profile data, knowing that new profile data will be added to the # event's content in event_creation_handler.create_event() using the target's # global profile. content.pop("displayname", None) content.pop("avatar_url", None) if len(content.get("displayname") or "") > MAX_DISPLAYNAME_LEN: raise SynapseError( 400, f"Displayname is too long (max {MAX_DISPLAYNAME_LEN})", errcode=Codes.BAD_JSON, ) if len(content.get("avatar_url") or "") > MAX_AVATAR_URL_LEN: raise SynapseError( 400, f"Avatar URL is too long (max {MAX_AVATAR_URL_LEN})", errcode=Codes.BAD_JSON, ) if "avatar_url" in content: if not await self.profile_handler.check_avatar_size_and_mime_type( content["avatar_url"], ): raise SynapseError(403, "This avatar is not allowed", Codes.FORBIDDEN) # The event content should *not* include the authorising user as # it won't be properly signed. Strip it out since it might come # back from a client updating a display name / avatar. # # This only applies to restricted rooms, but there should be no reason # for a client to include it. Unconditionally remove it. content.pop(EventContentFields.AUTHORISING_USER, None) effective_membership_state = action if action in ["kick", "unban"]: effective_membership_state = "leave" # if this is a join with a 3pid signature, we may need to turn a 3pid # invite into a normal invite before we can handle the join. if third_party_signed is not None: await self.federation_handler.exchange_third_party_invite( third_party_signed["sender"], target.to_string(), room_id, third_party_signed, ) if not remote_room_hosts: remote_room_hosts = [] if effective_membership_state not in ("leave", "ban"): is_blocked = await self.store.is_room_blocked(room_id) if is_blocked: raise SynapseError(403, "This room has been blocked on this server") if effective_membership_state == Membership.INVITE: target_id = target.to_string() if ratelimit: await self.ratelimit_invite(requester, room_id, target_id) # block any attempts to invite the server notices mxid if target_id == self._server_notices_mxid: raise SynapseError(HTTPStatus.FORBIDDEN, "Cannot invite this user") block_invite = False if ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ): # allow the server notices mxid to send invites is_requester_admin = True else: is_requester_admin = await self.auth.is_server_admin(requester.user) if not is_requester_admin: if self.config.server.block_non_admin_invites: logger.info( "Blocking invite: user is not admin and non-admin " "invites disabled" ) block_invite = True if not await self.spam_checker.user_may_invite( requester.user.to_string(), target_id, room_id ): logger.info("Blocking invite due to spam checker") block_invite = True if block_invite: raise SynapseError(403, "Invites have been disabled on this server") # An empty prev_events list is allowed as long as the auth_event_ids are present if prev_event_ids is not None: return await self._local_membership_update( requester=requester, target=target, room_id=room_id, membership=effective_membership_state, txn_id=txn_id, ratelimit=ratelimit, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, content=content, require_consent=require_consent, outlier=outlier, historical=historical, ) latest_event_ids = await self.store.get_prev_events_for_room(room_id) current_state_ids = await self.state_handler.get_current_state_ids( room_id, latest_event_ids=latest_event_ids ) # TODO: Refactor into dictionary of explicitly allowed transitions # between old and new state, with specific error messages for some # transitions and generic otherwise old_state_id = current_state_ids.get((EventTypes.Member, target.to_string())) if old_state_id: old_state = await self.store.get_event(old_state_id, allow_none=True) old_membership = old_state.content.get("membership") if old_state else None if action == "unban" and old_membership != "ban": raise SynapseError( 403, "Cannot unban user who was not banned" " (membership=%s)" % old_membership, errcode=Codes.BAD_STATE, ) if old_membership == "ban" and action not in ["ban", "unban", "leave"]: raise SynapseError( 403, "Cannot %s user who was banned" % (action,), errcode=Codes.BAD_STATE, ) if old_state: same_content = content == old_state.content same_membership = old_membership == effective_membership_state same_sender = requester.user.to_string() == old_state.sender if same_sender and same_membership and same_content: # duplicate event. # we know it was persisted, so must have a stream ordering. assert old_state.internal_metadata.stream_ordering return ( old_state.event_id, old_state.internal_metadata.stream_ordering, ) if old_membership in ["ban", "leave"] and action == "kick": raise AuthError(403, "The target user is not in the room") # we don't allow people to reject invites to the server notice # room, but they can leave it once they are joined. if ( old_membership == Membership.INVITE and effective_membership_state == Membership.LEAVE ): is_blocked = await self._is_server_notice_room(room_id) if is_blocked: raise SynapseError( HTTPStatus.FORBIDDEN, "You cannot reject this invite", errcode=Codes.CANNOT_LEAVE_SERVER_NOTICE_ROOM, ) else: if action == "kick": raise AuthError(403, "The target user is not in the room") is_host_in_room = await self._is_host_in_room(current_state_ids) if effective_membership_state == Membership.JOIN: if requester.is_guest: guest_can_join = await self._can_guest_join(current_state_ids) if not guest_can_join: # This should be an auth check, but guests are a local concept, # so don't really fit into the general auth process. raise AuthError(403, "Guest access not allowed") # Figure out whether the user is a server admin to determine whether they # should be able to bypass the spam checker. if ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ): # allow the server notices mxid to join rooms bypass_spam_checker = True else: bypass_spam_checker = await self.auth.is_server_admin(requester.user) inviter = await self._get_inviter(target.to_string(), room_id) if ( not bypass_spam_checker # We assume that if the spam checker allowed the user to create # a room then they're allowed to join it. and not new_room and not await self.spam_checker.user_may_join_room( target.to_string(), room_id, is_invited=inviter is not None ) ): raise SynapseError(403, "Not allowed to join this room") # Check if a remote join should be performed. remote_join, remote_room_hosts = await self._should_perform_remote_join( target.to_string(), room_id, remote_room_hosts, content, is_host_in_room ) if remote_join: if ratelimit: time_now_s = self.clock.time() ( allowed, time_allowed, ) = await self._join_rate_limiter_remote.can_do_action( requester, ) if not allowed: raise LimitExceededError( retry_after_ms=int(1000 * (time_allowed - time_now_s)) ) inviter = await self._get_inviter(target.to_string(), room_id) if inviter and not self.hs.is_mine(inviter): remote_room_hosts.append(inviter.domain) content["membership"] = Membership.JOIN profile = self.profile_handler if not content_specified: content["displayname"] = await profile.get_displayname(target) content["avatar_url"] = await profile.get_avatar_url(target) if requester.is_guest: content["kind"] = "guest" remote_join_response = await self._remote_join( requester, remote_room_hosts, room_id, target, content ) return remote_join_response elif effective_membership_state == Membership.LEAVE: if not is_host_in_room: # Figure out the user's current membership state for the room ( current_membership_type, current_membership_event_id, ) = await self.store.get_local_current_membership_for_user_in_room( target.to_string(), room_id ) if not current_membership_type or not current_membership_event_id: logger.info( "%s sent a leave request to %s, but that is not an active room " "on this server, or there is no pending invite or knock", target, room_id, ) raise SynapseError(404, "Not a known room") # perhaps we've been invited if current_membership_type == Membership.INVITE: invite = await self.store.get_event(current_membership_event_id) logger.info( "%s rejects invite to %s from %s", target, room_id, invite.sender, ) if not self.hs.is_mine_id(invite.sender): # send the rejection to the inviter's HS (with fallback to # local event) return await self.remote_reject_invite( invite.event_id, txn_id, requester, content, ) # the inviter was on our server, but has now left. Carry on # with the normal rejection codepath, which will also send the # rejection out to any other servers we believe are still in the room. # thanks to overzealous cleaning up of event_forward_extremities in # `delete_old_current_state_events`, it's possible to end up with no # forward extremities here. If that happens, let's just hang the # rejection off the invite event. # # see: https://github.com/matrix-org/synapse/issues/7139 if len(latest_event_ids) == 0: latest_event_ids = [invite.event_id] # or perhaps this is a remote room that a local user has knocked on elif current_membership_type == Membership.KNOCK: knock = await self.store.get_event(current_membership_event_id) return await self.remote_rescind_knock( knock.event_id, txn_id, requester, content ) elif effective_membership_state == Membership.KNOCK: if not is_host_in_room: # The knock needs to be sent over federation instead remote_room_hosts.append(get_domain_from_id(room_id)) content["membership"] = Membership.KNOCK profile = self.profile_handler if "displayname" not in content: content["displayname"] = await profile.get_displayname(target) if "avatar_url" not in content: content["avatar_url"] = await profile.get_avatar_url(target) return await self.remote_knock( remote_room_hosts, room_id, target, content ) return await self._local_membership_update( requester=requester, target=target, room_id=room_id, membership=effective_membership_state, txn_id=txn_id, ratelimit=ratelimit, prev_event_ids=latest_event_ids, auth_event_ids=auth_event_ids, content=content, require_consent=require_consent, outlier=outlier, ) async def _should_perform_remote_join( self, user_id: str, room_id: str, remote_room_hosts: List[str], content: JsonDict, is_host_in_room: bool, ) -> Tuple[bool, List[str]]: """ Check whether the server should do a remote join (as opposed to a local join) for a user. Generally a remote join is used if: * The server is not yet in the room. * The server is in the room, the room has restricted join rules, the user is not joined or invited to the room, and the server does not have another user who is capable of issuing invites. Args: user_id: The user joining the room. room_id: The room being joined. remote_room_hosts: A list of remote room hosts. content: The content to use as the event body of the join. This may be modified. is_host_in_room: True if the host is in the room. Returns: A tuple of: True if a remote join should be performed. False if the join can be done locally. A list of remote room hosts to use. This is an empty list if a local join is to be done. """ # If the host isn't in the room, pass through the prospective hosts. if not is_host_in_room: return True, remote_room_hosts # If the host is in the room, but not one of the authorised hosts # for restricted join rules, a remote join must be used. room_version = await self.store.get_room_version(room_id) current_state_ids = await self.store.get_current_state_ids(room_id) # If restricted join rules are not being used, a local join can always # be used. if not await self.event_auth_handler.has_restricted_join_rules( current_state_ids, room_version ): return False, [] # If the user is invited to the room or already joined, the join # event can always be issued locally. prev_member_event_id = current_state_ids.get((EventTypes.Member, user_id), None) prev_member_event = None if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) if prev_member_event.membership in ( Membership.JOIN, Membership.INVITE, ): return False, [] # If the local host has a user who can issue invites, then a local # join can be done. # # If not, generate a new list of remote hosts based on which # can issue invites. event_map = await self.store.get_events(current_state_ids.values()) current_state = { state_key: event_map[event_id] for state_key, event_id in current_state_ids.items() } allowed_servers = get_servers_from_users( get_users_which_can_issue_invite(current_state) ) # If the local server is not one of allowed servers, then a remote # join must be done. Return the list of prospective servers based on # which can issue invites. if self.hs.hostname not in allowed_servers: return True, list(allowed_servers) # Ensure the member should be allowed access via membership in a room. await self.event_auth_handler.check_restricted_join_rules( current_state_ids, room_version, user_id, prev_member_event ) # If this is going to be a local join, additional information must # be included in the event content in order to efficiently validate # the event. content[ EventContentFields.AUTHORISING_USER ] = await self.event_auth_handler.get_user_which_could_invite( room_id, current_state_ids, ) return False, [] async def transfer_room_state_on_room_upgrade( self, old_room_id: str, room_id: str ) -> None: """Upon our server becoming aware of an upgraded room, either by upgrading a room ourselves or joining one, we can transfer over information from the previous room. Copies user state (tags/push rules) for every local user that was in the old room, as well as migrating the room directory state. Args: old_room_id: The ID of the old room room_id: The ID of the new room """ logger.info("Transferring room state from %s to %s", old_room_id, room_id) # Find all local users that were in the old room and copy over each user's state users = await self.store.get_users_in_room(old_room_id) await self.copy_user_state_on_room_upgrade(old_room_id, room_id, users) # Add new room to the room directory if the old room was there # Remove old room from the room directory old_room = await self.store.get_room(old_room_id) if old_room is not None and old_room["is_public"]: await self.store.set_room_is_public(old_room_id, False) await self.store.set_room_is_public(room_id, True) # Transfer alias mappings in the room directory await self.store.update_aliases_for_room(old_room_id, room_id) # Check if any groups we own contain the predecessor room local_group_ids = await self.store.get_local_groups_for_room(old_room_id) for group_id in local_group_ids: # Add new the new room to those groups await self.store.add_room_to_group( group_id, room_id, old_room is not None and old_room["is_public"] ) # Remove the old room from those groups await self.store.remove_room_from_group(group_id, old_room_id) async def copy_user_state_on_room_upgrade( self, old_room_id: str, new_room_id: str, user_ids: Iterable[str] ) -> None: """Copy user-specific information when they join a new room when that new room is the result of a room upgrade Args: old_room_id: The ID of upgraded room new_room_id: The ID of the new room user_ids: User IDs to copy state for """ logger.debug( "Copying over room tags and push rules from %s to %s for users %s", old_room_id, new_room_id, user_ids, ) for user_id in user_ids: try: # It is an upgraded room. Copy over old tags await self.copy_room_tags_and_direct_to_room( old_room_id, new_room_id, user_id ) # Copy over push rules await self.store.copy_push_rules_from_room_to_room_for_user( old_room_id, new_room_id, user_id ) except Exception: logger.exception( "Error copying tags and/or push rules from rooms %s to %s for user %s. " "Skipping...", old_room_id, new_room_id, user_id, ) continue async def send_membership_event( self, requester: Optional[Requester], event: EventBase, context: EventContext, ratelimit: bool = True, ) -> None: """ Change the membership status of a user in a room. Args: requester: The local user who requested the membership event. If None, certain checks, like whether this homeserver can act as the sender, will be skipped. event: The membership event. context: The context of the event. ratelimit: Whether to rate limit this request. Raises: SynapseError if there was a problem changing the membership. """ target_user = UserID.from_string(event.state_key) room_id = event.room_id if requester is not None: sender = UserID.from_string(event.sender) assert ( sender == requester.user ), "Sender (%s) must be same as requester (%s)" % (sender, requester.user) assert self.hs.is_mine(sender), "Sender must be our own: %s" % (sender,) else: requester = types.create_requester(target_user) prev_state_ids = await context.get_prev_state_ids() if event.membership == Membership.JOIN: if requester.is_guest: guest_can_join = await self._can_guest_join(prev_state_ids) if not guest_can_join: # This should be an auth check, but guests are a local concept, # so don't really fit into the general auth process. raise AuthError(403, "Guest access not allowed") if event.membership not in (Membership.LEAVE, Membership.BAN): is_blocked = await self.store.is_room_blocked(room_id) if is_blocked: raise SynapseError(403, "This room has been blocked on this server") event = await self.event_creation_handler.handle_new_client_event( requester, event, context, extra_users=[target_user], ratelimit=ratelimit ) prev_member_event_id = prev_state_ids.get( (EventTypes.Member, event.state_key), None ) if event.membership == Membership.LEAVE: if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) if prev_member_event.membership == Membership.JOIN: await self._user_left_room(target_user, room_id) async def _can_guest_join(self, current_state_ids: StateMap[str]) -> bool: """ Returns whether a guest can join a room based on its current state. """ guest_access_id = current_state_ids.get((EventTypes.GuestAccess, ""), None) if not guest_access_id: return False guest_access = await self.store.get_event(guest_access_id) return bool( guest_access and guest_access.content and guest_access.content.get(EventContentFields.GUEST_ACCESS) == GuestAccess.CAN_JOIN ) async def kick_guest_users(self, current_state: Iterable[EventBase]) -> None: """Kick any local guest users from the room. This is called when the room state changes from guests allowed to not-allowed. Params: current_state: the current state of the room. We will iterate this to look for guest users to kick. """ for member_event in current_state: try: if member_event.type != EventTypes.Member: continue if not self.hs.is_mine_id(member_event.state_key): continue if member_event.content["membership"] not in { Membership.JOIN, Membership.INVITE, }: continue if ( "kind" not in member_event.content or member_event.content["kind"] != "guest" ): continue # We make the user choose to leave, rather than have the # event-sender kick them. This is partially because we don't # need to worry about power levels, and partially because guest # users are a concept which doesn't hugely work over federation, # and having homeservers have their own users leave keeps more # of that decision-making and control local to the guest-having # homeserver. target_user = UserID.from_string(member_event.state_key) requester = create_requester( target_user, is_guest=True, authenticated_entity=self._server_name ) handler = self.hs.get_room_member_handler() await handler.update_membership( requester, target_user, member_event.room_id, "leave", ratelimit=False, require_consent=False, ) except Exception as e: logger.exception("Error kicking guest user: %s" % (e,)) async def lookup_room_alias( self, room_alias: RoomAlias ) -> Tuple[RoomID, List[str]]: """ Get the room ID associated with a room alias. Args: room_alias: The alias to look up. Returns: A tuple of: The room ID as a RoomID object. Hosts likely to be participating in the room ([str]). Raises: SynapseError if room alias could not be found. """ directory_handler = self.directory_handler mapping = await directory_handler.get_association(room_alias) if not mapping: raise SynapseError(404, "No such room alias") room_id = mapping["room_id"] servers = mapping["servers"] # put the server which owns the alias at the front of the server list. if room_alias.domain in servers: servers.remove(room_alias.domain) servers.insert(0, room_alias.domain) return RoomID.from_string(room_id), servers async def _get_inviter(self, user_id: str, room_id: str) -> Optional[UserID]: invite = await self.store.get_invite_for_local_user_in_room( user_id=user_id, room_id=room_id ) if invite: return UserID.from_string(invite.sender) return None async def do_3pid_invite( self, room_id: str, inviter: UserID, medium: str, address: str, id_server: str, requester: Requester, txn_id: Optional[str], id_access_token: Optional[str] = None, ) -> int: """Invite a 3PID to a room. Args: room_id: The room to invite the 3PID to. inviter: The user sending the invite. medium: The 3PID's medium. address: The 3PID's address. id_server: The identity server to use. requester: The user making the request. txn_id: The transaction ID this is part of, or None if this is not part of a transaction. id_access_token: The optional identity server access token. Returns: The new stream ID. Raises: ShadowBanError if the requester has been shadow-banned. """ if self.config.server.block_non_admin_invites: is_requester_admin = await self.auth.is_server_admin(requester.user) if not is_requester_admin: raise SynapseError( 403, "Invites have been disabled on this server", Codes.FORBIDDEN ) if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() # We need to rate limit *before* we send out any 3PID invites, so we # can't just rely on the standard ratelimiting of events. await self._third_party_invite_limiter.ratelimit(requester) can_invite = await self.third_party_event_rules.check_threepid_can_be_invited( medium, address, room_id ) if not can_invite: raise SynapseError( 403, "This third-party identifier can not be invited in this room", Codes.FORBIDDEN, ) if not self._enable_lookup: raise SynapseError( 403, "Looking up third-party identifiers is denied from this server" ) invitee = await self.identity_handler.lookup_3pid( id_server, medium, address, id_access_token ) if invitee: # Note that update_membership with an action of "invite" can raise # a ShadowBanError, but this was done above already. # We don't check the invite against the spamchecker(s) here (through # user_may_invite) because we'll do it further down the line anyway (in # update_membership_locked). _, stream_id = await self.update_membership( requester, UserID.from_string(invitee), room_id, "invite", txn_id=txn_id ) else: # Check if the spamchecker(s) allow this invite to go through. if not await self.spam_checker.user_may_send_3pid_invite( inviter_userid=requester.user.to_string(), medium=medium, address=address, room_id=room_id, ): raise SynapseError(403, "Cannot send threepid invite") stream_id = await self._make_and_store_3pid_invite( requester, id_server, medium, address, room_id, inviter, txn_id=txn_id, id_access_token=id_access_token, ) return stream_id async def _make_and_store_3pid_invite( self, requester: Requester, id_server: str, medium: str, address: str, room_id: str, user: UserID, txn_id: Optional[str], id_access_token: Optional[str] = None, ) -> int: room_state = await self.state_handler.get_current_state(room_id) inviter_display_name = "" inviter_avatar_url = "" member_event = room_state.get((EventTypes.Member, user.to_string())) if member_event: inviter_display_name = member_event.content.get("displayname", "") inviter_avatar_url = member_event.content.get("avatar_url", "") # if user has no display name, default to their MXID if not inviter_display_name: inviter_display_name = user.to_string() canonical_room_alias = "" canonical_alias_event = room_state.get((EventTypes.CanonicalAlias, "")) if canonical_alias_event: canonical_room_alias = canonical_alias_event.content.get("alias", "") room_name = "" room_name_event = room_state.get((EventTypes.Name, "")) if room_name_event: room_name = room_name_event.content.get("name", "") room_type = None room_create_event = room_state.get((EventTypes.Create, "")) if room_create_event: room_type = room_create_event.content.get(EventContentFields.ROOM_TYPE) room_join_rules = "" join_rules_event = room_state.get((EventTypes.JoinRules, "")) if join_rules_event: room_join_rules = join_rules_event.content.get("join_rule", "") room_avatar_url = "" room_avatar_event = room_state.get((EventTypes.RoomAvatar, "")) if room_avatar_event: room_avatar_url = room_avatar_event.content.get("url", "") ( token, public_keys, fallback_public_key, display_name, ) = await self.identity_handler.ask_id_server_for_third_party_invite( requester=requester, id_server=id_server, medium=medium, address=address, room_id=room_id, inviter_user_id=user.to_string(), room_alias=canonical_room_alias, room_avatar_url=room_avatar_url, room_join_rules=room_join_rules, room_name=room_name, room_type=room_type, inviter_display_name=inviter_display_name, inviter_avatar_url=inviter_avatar_url, id_access_token=id_access_token, ) ( event, stream_id, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.ThirdPartyInvite, "content": { "display_name": display_name, "public_keys": public_keys, # For backwards compatibility: "key_validity_url": fallback_public_key["key_validity_url"], "public_key": fallback_public_key["public_key"], }, "room_id": room_id, "sender": user.to_string(), "state_key": token, }, ratelimit=False, txn_id=txn_id, ) return stream_id async def _is_host_in_room(self, current_state_ids: StateMap[str]) -> bool: # Have we just created the room, and is this about to be the very # first member event? create_event_id = current_state_ids.get(("m.room.create", "")) if len(current_state_ids) == 1 and create_event_id: # We can only get here if we're in the process of creating the room return True for etype, state_key in current_state_ids: if etype != EventTypes.Member or not self.hs.is_mine_id(state_key): continue event_id = current_state_ids[(etype, state_key)] event = await self.store.get_event(event_id, allow_none=True) if not event: continue if event.membership == Membership.JOIN: return True return False async def _is_server_notice_room(self, room_id: str) -> bool: if self._server_notices_mxid is None: return False user_ids = await self.store.get_users_in_room(room_id) return self._server_notices_mxid in user_ids class RoomMemberMasterHandler(RoomMemberHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.distributor = hs.get_distributor() self.distributor.declare("user_left_room") async def _is_remote_room_too_complex( self, room_id: str, remote_room_hosts: List[str] ) -> Optional[bool]: """ Check if complexity of a remote room is too great. Args: room_id remote_room_hosts Returns: bool of whether the complexity is too great, or None if unable to be fetched """ max_complexity = self.hs.config.server.limit_remote_rooms.complexity complexity = await self.federation_handler.get_room_complexity( remote_room_hosts, room_id ) if complexity: return complexity["v1"] > max_complexity return None async def _is_local_room_too_complex(self, room_id: str) -> bool: """ Check if the complexity of a local room is too great. Args: room_id: The room ID to check for complexity. """ max_complexity = self.hs.config.server.limit_remote_rooms.complexity complexity = await self.store.get_room_complexity(room_id) return complexity["v1"] > max_complexity async def _remote_join( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Implements RoomMemberHandler._remote_join""" # filter ourselves out of remote_room_hosts: do_invite_join ignores it # and if it is the only entry we'd like to return a 404 rather than a # 500. remote_room_hosts = [ host for host in remote_room_hosts if host != self.hs.hostname ] if len(remote_room_hosts) == 0: raise SynapseError(404, "No known servers") check_complexity = self.hs.config.server.limit_remote_rooms.enabled if ( check_complexity and self.hs.config.server.limit_remote_rooms.admins_can_join ): check_complexity = not await self.auth.is_server_admin(user) if check_complexity: # Fetch the room complexity too_complex = await self._is_remote_room_too_complex( room_id, remote_room_hosts ) if too_complex is True: raise SynapseError( code=400, msg=self.hs.config.server.limit_remote_rooms.complexity_error, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, ) # We don't do an auth check if we are doing an invite # join dance for now, since we're kinda implicitly checking # that we are allowed to join when we decide whether or not we # need to do the invite/join dance. event_id, stream_id = await self.federation_handler.do_invite_join( remote_room_hosts, room_id, user.to_string(), content ) # Check the room we just joined wasn't too large, if we didn't fetch the # complexity of it before. if check_complexity: if too_complex is False: # We checked, and we're under the limit. return event_id, stream_id # Check again, but with the local state events too_complex = await self._is_local_room_too_complex(room_id) if too_complex is False: # We're under the limit. return event_id, stream_id # The room is too large. Leave. requester = types.create_requester( user, authenticated_entity=self._server_name ) await self.update_membership( requester=requester, target=user, room_id=room_id, action="leave" ) raise SynapseError( code=400, msg=self.hs.config.server.limit_remote_rooms.complexity_error, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, ) return event_id, stream_id async def remote_reject_invite( self, invite_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rejects an out-of-band invite received from a remote user Implements RoomMemberHandler.remote_reject_invite """ invite_event = await self.store.get_event(invite_event_id) room_id = invite_event.room_id target_user = invite_event.state_key # first of all, try doing a rejection via the inviting server fed_handler = self.federation_handler try: inviter_id = UserID.from_string(invite_event.sender) event, stream_id = await fed_handler.do_remotely_reject_invite( [inviter_id.domain], room_id, target_user, content=content ) return event.event_id, stream_id except Exception as e: # if we were unable to reject the invite, we will generate our own # leave event. # # The 'except' clause is very broad, but we need to # capture everything from DNS failures upwards # logger.warning("Failed to reject invite: %s", e) return await self._generate_local_out_of_band_leave( invite_event, txn_id, requester, content ) async def remote_rescind_knock( self, knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rescinds a local knock made on a remote room Args: knock_event_id: The ID of the knock event to rescind. txn_id: The transaction ID to use. requester: The originator of the request. content: The content of the leave event. Implements RoomMemberHandler.remote_rescind_knock """ # TODO: We don't yet support rescinding knocks over federation # as we don't know which homeserver to send it to. An obvious # candidate is the remote homeserver we originally knocked through, # however we don't currently store that information. # Just rescind the knock locally knock_event = await self.store.get_event(knock_event_id) return await self._generate_local_out_of_band_leave( knock_event, txn_id, requester, content ) async def _generate_local_out_of_band_leave( self, previous_membership_event: EventBase, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """Generate a local leave event for a room This can be called after we e.g fail to reject an invite via a remote server. It generates an out-of-band membership event locally. Args: previous_membership_event: the previous membership event for this user txn_id: optional transaction ID supplied by the client requester: user making the request, according to the access token content: additional content to include in the leave event. Normally an empty dict. Returns: A tuple containing (event_id, stream_id of the leave event) """ room_id = previous_membership_event.room_id target_user = previous_membership_event.state_key content["membership"] = Membership.LEAVE event_dict = { "type": EventTypes.Member, "room_id": room_id, "sender": target_user, "content": content, "state_key": target_user, } # the auth events for the new event are the same as that of the previous event, plus # the event itself. # # the prev_events consist solely of the previous membership event. prev_event_ids = [previous_membership_event.event_id] auth_event_ids = ( list(previous_membership_event.auth_event_ids()) + prev_event_ids ) event, context = await self.event_creation_handler.create_event( requester, event_dict, txn_id=txn_id, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, ) event.internal_metadata.outlier = True event.internal_metadata.out_of_band_membership = True result_event = await self.event_creation_handler.handle_new_client_event( requester, event, context, extra_users=[UserID.from_string(target_user)], ) # we know it was persisted, so must have a stream ordering assert result_event.internal_metadata.stream_ordering return result_event.event_id, result_event.internal_metadata.stream_ordering async def remote_knock( self, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Sends a knock to a room. Attempts to do so via one remote out of a given list. Args: remote_room_hosts: A list of homeservers to try knocking through. room_id: The ID of the room to knock on. user: The user to knock on behalf of. content: The content of the knock event. Returns: A tuple of (event ID, stream ID). """ # filter ourselves out of remote_room_hosts remote_room_hosts = [ host for host in remote_room_hosts if host != self.hs.hostname ] if len(remote_room_hosts) == 0: raise SynapseError(404, "No known servers") return await self.federation_handler.do_knock( remote_room_hosts, room_id, user.to_string(), content=content ) async def _user_left_room(self, target: UserID, room_id: str) -> None: """Implements RoomMemberHandler._user_left_room""" user_left_room(self.distributor, target, room_id) async def forget(self, user: UserID, room_id: str) -> None: user_id = user.to_string() member = await self.state_handler.get_current_state( room_id=room_id, event_type=EventTypes.Member, state_key=user_id ) membership = member.membership if member else None if membership is not None and membership not in [ Membership.LEAVE, Membership.BAN, ]: raise SynapseError(400, "User %s in room %s" % (user_id, room_id)) if membership: await self.store.forget(user_id, room_id) def get_users_which_can_issue_invite(auth_events: StateMap[EventBase]) -> List[str]: """ Return the list of users which can issue invites. This is done by exploring the joined users and comparing their power levels to the necessyar power level to issue an invite. Args: auth_events: state in force at this point in the room Returns: The users which can issue invites. """ invite_level = get_named_level(auth_events, "invite", 0) users_default_level = get_named_level(auth_events, "users_default", 0) power_level_event = get_power_level_event(auth_events) # Custom power-levels for users. if power_level_event: users = power_level_event.content.get("users", {}) else: users = {} result = [] # Check which members are able to invite by ensuring they're joined and have # the necessary power level. for (event_type, state_key), event in auth_events.items(): if event_type != EventTypes.Member: continue if event.membership != Membership.JOIN: continue # Check if the user has a custom power level. if users.get(state_key, users_default_level) >= invite_level: result.append(state_key) return result def get_servers_from_users(users: List[str]) -> Set[str]: """ Resolve a list of users into their servers. Args: users: A list of users. Returns: A set of servers. """ servers = set() for user in users: try: servers.add(get_domain_from_id(user)) except SynapseError: pass return servers synapse-1.53.0/synapse/handlers/room_member_worker.py000066400000000000000000000112701420514467300230210ustar00rootroot00000000000000# Copyright 2018-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, List, Optional, Tuple from synapse.api.errors import SynapseError from synapse.handlers.room_member import RoomMemberHandler from synapse.replication.http.membership import ( ReplicationRemoteJoinRestServlet as ReplRemoteJoin, ReplicationRemoteKnockRestServlet as ReplRemoteKnock, ReplicationRemoteRejectInviteRestServlet as ReplRejectInvite, ReplicationRemoteRescindKnockRestServlet as ReplRescindKnock, ReplicationUserJoinedLeftRoomRestServlet as ReplJoinedLeft, ) from synapse.types import JsonDict, Requester, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomMemberWorkerHandler(RoomMemberHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self._remote_join_client = ReplRemoteJoin.make_client(hs) self._remote_knock_client = ReplRemoteKnock.make_client(hs) self._remote_reject_client = ReplRejectInvite.make_client(hs) self._remote_rescind_client = ReplRescindKnock.make_client(hs) self._notify_change_client = ReplJoinedLeft.make_client(hs) async def _remote_join( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Implements RoomMemberHandler._remote_join""" if len(remote_room_hosts) == 0: raise SynapseError(404, "No known servers") ret = await self._remote_join_client( requester=requester, remote_room_hosts=remote_room_hosts, room_id=room_id, user_id=user.to_string(), content=content, ) return ret["event_id"], ret["stream_id"] async def remote_reject_invite( self, invite_event_id: str, txn_id: Optional[str], requester: Requester, content: dict, ) -> Tuple[str, int]: """ Rejects an out-of-band invite received from a remote user Implements RoomMemberHandler.remote_reject_invite """ ret = await self._remote_reject_client( invite_event_id=invite_event_id, txn_id=txn_id, requester=requester, content=content, ) return ret["event_id"], ret["stream_id"] async def remote_rescind_knock( self, knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rescinds a local knock made on a remote room Args: knock_event_id: the knock event txn_id: optional transaction ID supplied by the client requester: user making the request, according to the access token content: additional content to include in the leave event. Normally an empty dict. Returns: A tuple containing (event_id, stream_id of the leave event) """ ret = await self._remote_rescind_client( knock_event_id=knock_event_id, txn_id=txn_id, requester=requester, content=content, ) return ret["event_id"], ret["stream_id"] async def remote_knock( self, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Sends a knock to a room. Implements RoomMemberHandler.remote_knock """ ret = await self._remote_knock_client( remote_room_hosts=remote_room_hosts, room_id=room_id, user=user, content=content, ) return ret["event_id"], ret["stream_id"] async def _user_left_room(self, target: UserID, room_id: str) -> None: """Implements RoomMemberHandler._user_left_room""" await self._notify_change_client( user_id=target.to_string(), room_id=room_id, change="left" ) async def forget(self, target: UserID, room_id: str) -> None: raise RuntimeError("Cannot forget rooms on workers.") synapse-1.53.0/synapse/handlers/room_summary.py000066400000000000000000001324541420514467300216660ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging import re from collections import deque from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Sequence, Set, Tuple import attr from synapse.api.constants import ( EventContentFields, EventTypes, HistoryVisibility, JoinRules, Membership, RoomTypes, ) from synapse.api.errors import ( AuthError, Codes, NotFoundError, StoreError, SynapseError, UnsupportedRoomVersionError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.events import EventBase from synapse.types import JsonDict, Requester from synapse.util.caches.response_cache import ResponseCache if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # number of rooms to return. We'll stop once we hit this limit. MAX_ROOMS = 50 # max number of events to return per room. MAX_ROOMS_PER_SPACE = 50 # max number of federation servers to hit per room MAX_SERVERS_PER_SPACE = 3 @attr.s(slots=True, frozen=True, auto_attribs=True) class _PaginationKey: """The key used to find unique pagination session.""" # The first three entries match the request parameters (and cannot change # during a pagination session). room_id: str suggested_only: bool max_depth: Optional[int] # The randomly generated token. token: str @attr.s(slots=True, frozen=True, auto_attribs=True) class _PaginationSession: """The information that is stored for pagination.""" # The time the pagination session was created, in milliseconds. creation_time_ms: int # The queue of rooms which are still to process. room_queue: List["_RoomQueueEntry"] # A set of rooms which have been processed. processed_rooms: Set[str] class RoomSummaryHandler: # A unique key used for pagination sessions for the room hierarchy endpoint. _PAGINATION_SESSION_TYPE = "room_hierarchy_pagination" # The time a pagination session remains valid for. _PAGINATION_SESSION_VALIDITY_PERIOD_MS = 5 * 60 * 1000 def __init__(self, hs: "HomeServer"): self._event_auth_handler = hs.get_event_auth_handler() self._store = hs.get_datastore() self._event_serializer = hs.get_event_client_serializer() self._server_name = hs.hostname self._federation_client = hs.get_federation_client() self._ratelimiter = Ratelimiter( store=self._store, clock=hs.get_clock(), rate_hz=5, burst_count=10 ) # If a user tries to fetch the same page multiple times in quick succession, # only process the first attempt and return its result to subsequent requests. self._pagination_response_cache: ResponseCache[ Tuple[str, str, bool, Optional[int], Optional[int], Optional[str]] ] = ResponseCache( hs.get_clock(), "get_room_hierarchy", ) async def get_space_summary( self, requester: str, room_id: str, suggested_only: bool = False, max_rooms_per_space: Optional[int] = None, ) -> JsonDict: """ Implementation of the space summary C-S API Args: requester: user id of the user making this request room_id: room id to start the summary at suggested_only: whether we should only return children with the "suggested" flag set. max_rooms_per_space: an optional limit on the number of child rooms we will return. This does not apply to the root room (ie, room_id), and is overridden by MAX_ROOMS_PER_SPACE. Returns: summary dict to return """ # First of all, check that the room is accessible. if not await self._is_local_room_accessible(room_id, requester): raise AuthError( 403, "User %s not in room %s, and room previews are disabled" % (requester, room_id), ) # the queue of rooms to process room_queue = deque((_RoomQueueEntry(room_id, ()),)) # rooms we have already processed processed_rooms: Set[str] = set() # events we have already processed. We don't necessarily have their event ids, # so instead we key on (room id, state key) processed_events: Set[Tuple[str, str]] = set() rooms_result: List[JsonDict] = [] events_result: List[JsonDict] = [] if max_rooms_per_space is None or max_rooms_per_space > MAX_ROOMS_PER_SPACE: max_rooms_per_space = MAX_ROOMS_PER_SPACE while room_queue and len(rooms_result) < MAX_ROOMS: queue_entry = room_queue.popleft() room_id = queue_entry.room_id if room_id in processed_rooms: # already done this room continue logger.debug("Processing room %s", room_id) is_in_room = await self._store.is_host_joined(room_id, self._server_name) # The client-specified max_rooms_per_space limit doesn't apply to the # room_id specified in the request, so we ignore it if this is the # first room we are processing. max_children = max_rooms_per_space if processed_rooms else MAX_ROOMS if is_in_room: room_entry = await self._summarize_local_room( requester, None, room_id, suggested_only, max_children ) events: Sequence[JsonDict] = [] if room_entry: rooms_result.append(room_entry.room) events = room_entry.children_state_events logger.debug( "Query of local room %s returned events %s", room_id, ["%s->%s" % (ev["room_id"], ev["state_key"]) for ev in events], ) else: fed_rooms = await self._summarize_remote_room( queue_entry, suggested_only, max_children, exclude_rooms=processed_rooms, ) # The results over federation might include rooms that the we, # as the requesting server, are allowed to see, but the requesting # user is not permitted see. # # Filter the returned results to only what is accessible to the user. events = [] for room_entry in fed_rooms: room = room_entry.room fed_room_id = room_entry.room_id # The user can see the room, include it! if await self._is_remote_room_accessible( requester, fed_room_id, room ): # Before returning to the client, remove the allowed_room_ids # and allowed_spaces keys. room.pop("allowed_room_ids", None) room.pop("allowed_spaces", None) # historical rooms_result.append(room) events.extend(room_entry.children_state_events) # All rooms returned don't need visiting again (even if the user # didn't have access to them). processed_rooms.add(fed_room_id) logger.debug( "Query of %s returned rooms %s, events %s", room_id, [room_entry.room.get("room_id") for room_entry in fed_rooms], ["%s->%s" % (ev["room_id"], ev["state_key"]) for ev in events], ) # the room we queried may or may not have been returned, but don't process # it again, anyway. processed_rooms.add(room_id) # XXX: is it ok that we blindly iterate through any events returned by # a remote server, whether or not they actually link to any rooms in our # tree? for ev in events: # remote servers might return events we have already processed # (eg, Dendrite returns inward pointers as well as outward ones), so # we need to filter them out, to avoid returning duplicate links to the # client. ev_key = (ev["room_id"], ev["state_key"]) if ev_key in processed_events: continue events_result.append(ev) # add the child to the queue. we have already validated # that the vias are a list of server names. room_queue.append( _RoomQueueEntry(ev["state_key"], ev["content"]["via"]) ) processed_events.add(ev_key) return {"rooms": rooms_result, "events": events_result} async def get_room_hierarchy( self, requester: Requester, requested_room_id: str, suggested_only: bool = False, max_depth: Optional[int] = None, limit: Optional[int] = None, from_token: Optional[str] = None, ) -> JsonDict: """ Implementation of the room hierarchy C-S API. Args: requester: The user ID of the user making this request. requested_room_id: The room ID to start the hierarchy at (the "root" room). suggested_only: Whether we should only return children with the "suggested" flag set. max_depth: The maximum depth in the tree to explore, must be a non-negative integer. 0 would correspond to just the root room, 1 would include just the root room's children, etc. limit: An optional limit on the number of rooms to return per page. Must be a positive integer. from_token: An optional pagination token. Returns: The JSON hierarchy dictionary. """ await self._ratelimiter.ratelimit(requester) # If a user tries to fetch the same page multiple times in quick succession, # only process the first attempt and return its result to subsequent requests. # # This is due to the pagination process mutating internal state, attempting # to process multiple requests for the same page will result in errors. return await self._pagination_response_cache.wrap( ( requester.user.to_string(), requested_room_id, suggested_only, max_depth, limit, from_token, ), self._get_room_hierarchy, requester.user.to_string(), requested_room_id, suggested_only, max_depth, limit, from_token, ) async def _get_room_hierarchy( self, requester: str, requested_room_id: str, suggested_only: bool = False, max_depth: Optional[int] = None, limit: Optional[int] = None, from_token: Optional[str] = None, ) -> JsonDict: """See docstring for SpaceSummaryHandler.get_room_hierarchy.""" # First of all, check that the room is accessible. if not await self._is_local_room_accessible(requested_room_id, requester): raise AuthError( 403, "User %s not in room %s, and room previews are disabled" % (requester, requested_room_id), ) # If this is continuing a previous session, pull the persisted data. if from_token: try: pagination_session = await self._store.get_session( session_type=self._PAGINATION_SESSION_TYPE, session_id=from_token, ) except StoreError: raise SynapseError(400, "Unknown pagination token", Codes.INVALID_PARAM) # If the requester, room ID, suggested-only, or max depth were modified # the session is invalid. if ( requester != pagination_session["requester"] or requested_room_id != pagination_session["room_id"] or suggested_only != pagination_session["suggested_only"] or max_depth != pagination_session["max_depth"] ): raise SynapseError(400, "Unknown pagination token", Codes.INVALID_PARAM) # Load the previous state. room_queue = [ _RoomQueueEntry(*fields) for fields in pagination_session["room_queue"] ] processed_rooms = set(pagination_session["processed_rooms"]) else: # The queue of rooms to process, the next room is last on the stack. room_queue = [_RoomQueueEntry(requested_room_id, ())] # Rooms we have already processed. processed_rooms = set() rooms_result: List[JsonDict] = [] # Cap the limit to a server-side maximum. if limit is None: limit = MAX_ROOMS else: limit = min(limit, MAX_ROOMS) # Iterate through the queue until we reach the limit or run out of # rooms to include. while room_queue and len(rooms_result) < limit: queue_entry = room_queue.pop() room_id = queue_entry.room_id current_depth = queue_entry.depth if room_id in processed_rooms: # already done this room continue logger.debug("Processing room %s", room_id) # A map of summaries for children rooms that might be returned over # federation. The rationale for caching these and *maybe* using them # is to prefer any information local to the homeserver before trusting # data received over federation. children_room_entries: Dict[str, JsonDict] = {} # A set of room IDs which are children that did not have information # returned over federation and are known to be inaccessible to the # current server. We should not reach out over federation to try to # summarise these rooms. inaccessible_children: Set[str] = set() # If the room is known locally, summarise it! is_in_room = await self._store.is_host_joined(room_id, self._server_name) if is_in_room: room_entry = await self._summarize_local_room( requester, None, room_id, suggested_only, # Do not limit the maximum children. max_children=None, ) # Otherwise, attempt to use information for federation. else: # A previous call might have included information for this room. # It can be used if either: # # 1. The room is not a space. # 2. The maximum depth has been achieved (since no children # information is needed). if queue_entry.remote_room and ( queue_entry.remote_room.get("room_type") != RoomTypes.SPACE or (max_depth is not None and current_depth >= max_depth) ): room_entry = _RoomEntry( queue_entry.room_id, queue_entry.remote_room ) # If the above isn't true, attempt to fetch the room # information over federation. else: ( room_entry, children_room_entries, inaccessible_children, ) = await self._summarize_remote_room_hierarchy( queue_entry, suggested_only, ) # Ensure this room is accessible to the requester (and not just # the homeserver). if room_entry and not await self._is_remote_room_accessible( requester, queue_entry.room_id, room_entry.room ): room_entry = None # This room has been processed and should be ignored if it appears # elsewhere in the hierarchy. processed_rooms.add(room_id) # There may or may not be a room entry based on whether it is # inaccessible to the requesting user. if room_entry: # Add the room (including the stripped m.space.child events). rooms_result.append(room_entry.as_json()) # If this room is not at the max-depth, check if there are any # children to process. if max_depth is None or current_depth < max_depth: # The children get added in reverse order so that the next # room to process, according to the ordering, is the last # item in the list. room_queue.extend( _RoomQueueEntry( ev["state_key"], ev["content"]["via"], current_depth + 1, children_room_entries.get(ev["state_key"]), ) for ev in reversed(room_entry.children_state_events) if ev["type"] == EventTypes.SpaceChild and ev["state_key"] not in inaccessible_children ) result: JsonDict = {"rooms": rooms_result} # If there's additional data, generate a pagination token (and persist state). if room_queue: result["next_batch"] = await self._store.create_session( session_type=self._PAGINATION_SESSION_TYPE, value={ # Information which must be identical across pagination. "requester": requester, "room_id": requested_room_id, "suggested_only": suggested_only, "max_depth": max_depth, # The stored state. "room_queue": [ attr.astuple(room_entry) for room_entry in room_queue ], "processed_rooms": list(processed_rooms), }, expiry_ms=self._PAGINATION_SESSION_VALIDITY_PERIOD_MS, ) return result async def federation_space_summary( self, origin: str, room_id: str, suggested_only: bool, max_rooms_per_space: Optional[int], exclude_rooms: Iterable[str], ) -> JsonDict: """ Implementation of the space summary Federation API Args: origin: The server requesting the spaces summary. room_id: room id to start the summary at suggested_only: whether we should only return children with the "suggested" flag set. max_rooms_per_space: an optional limit on the number of child rooms we will return. Unlike the C-S API, this applies to the root room (room_id). It is clipped to MAX_ROOMS_PER_SPACE. exclude_rooms: a list of rooms to skip over (presumably because the calling server has already seen them). Returns: summary dict to return """ # the queue of rooms to process room_queue = deque((room_id,)) # the set of rooms that we should not walk further. Initialise it with the # excluded-rooms list; we will add other rooms as we process them so that # we do not loop. processed_rooms: Set[str] = set(exclude_rooms) rooms_result: List[JsonDict] = [] events_result: List[JsonDict] = [] # Set a limit on the number of rooms to return. if max_rooms_per_space is None or max_rooms_per_space > MAX_ROOMS_PER_SPACE: max_rooms_per_space = MAX_ROOMS_PER_SPACE while room_queue and len(rooms_result) < MAX_ROOMS: room_id = room_queue.popleft() if room_id in processed_rooms: # already done this room continue room_entry = await self._summarize_local_room( None, origin, room_id, suggested_only, max_rooms_per_space ) processed_rooms.add(room_id) if room_entry: rooms_result.append(room_entry.room) events_result.extend(room_entry.children_state_events) # add any children to the queue room_queue.extend( edge_event["state_key"] for edge_event in room_entry.children_state_events ) return {"rooms": rooms_result, "events": events_result} async def get_federation_hierarchy( self, origin: str, requested_room_id: str, suggested_only: bool, ) -> JsonDict: """ Implementation of the room hierarchy Federation API. This is similar to get_room_hierarchy, but does not recurse into the space. It also considers whether anyone on the server may be able to access the room, as opposed to whether a specific user can. Args: origin: The server requesting the spaces summary. requested_room_id: The room ID to start the hierarchy at (the "root" room). suggested_only: whether we should only return children with the "suggested" flag set. Returns: The JSON hierarchy dictionary. """ root_room_entry = await self._summarize_local_room( None, origin, requested_room_id, suggested_only, max_children=None ) if root_room_entry is None: # Room is inaccessible to the requesting server. raise SynapseError(404, "Unknown room: %s" % (requested_room_id,)) children_rooms_result: List[JsonDict] = [] inaccessible_children: List[str] = [] # Iterate through each child and potentially add it, but not its children, # to the response. for child_room in itertools.islice( root_room_entry.children_state_events, MAX_ROOMS_PER_SPACE ): room_id = child_room.get("state_key") assert isinstance(room_id, str) # If the room is unknown, skip it. if not await self._store.is_host_joined(room_id, self._server_name): continue room_entry = await self._summarize_local_room( None, origin, room_id, suggested_only, max_children=0 ) # If the room is accessible, include it in the results. # # Note that only the room summary (without information on children) # is included in the summary. if room_entry: children_rooms_result.append(room_entry.room) # Otherwise, note that the requesting server shouldn't bother # trying to summarize this room - they do not have access to it. else: inaccessible_children.append(room_id) return { # Include the requested room (including the stripped children events). "room": root_room_entry.as_json(), "children": children_rooms_result, "inaccessible_children": inaccessible_children, } async def _summarize_local_room( self, requester: Optional[str], origin: Optional[str], room_id: str, suggested_only: bool, max_children: Optional[int], ) -> Optional["_RoomEntry"]: """ Generate a room entry and a list of event entries for a given room. Args: requester: The user requesting the summary, if it is a local request. None if this is a federation request. origin: The server requesting the summary, if it is a federation request. None if this is a local request. room_id: The room ID to summarize. suggested_only: True if only suggested children should be returned. Otherwise, all children are returned. max_children: The maximum number of children rooms to include. A value of None means no limit. Returns: A room entry if the room should be returned. None, otherwise. """ if not await self._is_local_room_accessible(room_id, requester, origin): return None room_entry = await self._build_room_entry(room_id, for_federation=bool(origin)) # If the room is not a space or the children don't matter, return just # the room information. if room_entry.get("room_type") != RoomTypes.SPACE or max_children == 0: return _RoomEntry(room_id, room_entry) # Otherwise, look for child rooms/spaces. child_events = await self._get_child_events(room_id) if suggested_only: # we only care about suggested children child_events = filter(_is_suggested_child_event, child_events) # TODO max_children is legacy code for the /spaces endpoint. if max_children is not None: child_iter: Iterable[EventBase] = itertools.islice( child_events, max_children ) else: child_iter = child_events stripped_events: List[JsonDict] = [ { "type": e.type, "state_key": e.state_key, "content": e.content, "room_id": e.room_id, "sender": e.sender, "origin_server_ts": e.origin_server_ts, } for e in child_iter ] return _RoomEntry(room_id, room_entry, stripped_events) async def _summarize_remote_room( self, room: "_RoomQueueEntry", suggested_only: bool, max_children: Optional[int], exclude_rooms: Iterable[str], ) -> Iterable["_RoomEntry"]: """ Request room entries and a list of event entries for a given room by querying a remote server. Args: room: The room to summarize. suggested_only: True if only suggested children should be returned. Otherwise, all children are returned. max_children: The maximum number of children rooms to include. This is capped to a server-set limit. exclude_rooms: Rooms IDs which do not need to be summarized. Returns: An iterable of room entries. """ room_id = room.room_id logger.info("Requesting summary for %s via %s", room_id, room.via) # we need to make the exclusion list json-serialisable exclude_rooms = list(exclude_rooms) via = itertools.islice(room.via, MAX_SERVERS_PER_SPACE) try: res = await self._federation_client.get_space_summary( via, room_id, suggested_only=suggested_only, max_rooms_per_space=max_children, exclude_rooms=exclude_rooms, ) except Exception as e: logger.warning( "Unable to get summary of %s via federation: %s", room_id, e, exc_info=logger.isEnabledFor(logging.DEBUG), ) return () # Group the events by their room. children_by_room: Dict[str, List[JsonDict]] = {} for ev in res.events: if ev.event_type == EventTypes.SpaceChild: children_by_room.setdefault(ev.room_id, []).append(ev.data) # Generate the final results. results = [] for fed_room in res.rooms: fed_room_id = fed_room.get("room_id") if not fed_room_id or not isinstance(fed_room_id, str): continue results.append( _RoomEntry( fed_room_id, fed_room, children_by_room.get(fed_room_id, []), ) ) return results async def _summarize_remote_room_hierarchy( self, room: "_RoomQueueEntry", suggested_only: bool ) -> Tuple[Optional["_RoomEntry"], Dict[str, JsonDict], Set[str]]: """ Request room entries and a list of event entries for a given room by querying a remote server. Args: room: The room to summarize. suggested_only: True if only suggested children should be returned. Otherwise, all children are returned. Returns: A tuple of: The room entry. Partial room data return over federation. A set of inaccessible children room IDs. """ room_id = room.room_id logger.info("Requesting summary for %s via %s", room_id, room.via) via = itertools.islice(room.via, MAX_SERVERS_PER_SPACE) try: ( room_response, children_state_events, children, inaccessible_children, ) = await self._federation_client.get_room_hierarchy( via, room_id, suggested_only=suggested_only, ) except Exception as e: logger.warning( "Unable to get hierarchy of %s via federation: %s", room_id, e, exc_info=logger.isEnabledFor(logging.DEBUG), ) return None, {}, set() # Map the children to their room ID. children_by_room_id = { c["room_id"]: c for c in children if "room_id" in c and isinstance(c["room_id"], str) } return ( _RoomEntry(room_id, room_response, children_state_events), children_by_room_id, set(inaccessible_children), ) async def _is_local_room_accessible( self, room_id: str, requester: Optional[str], origin: Optional[str] = None ) -> bool: """ Calculate whether the room should be shown to the requester. It should return true if: * The requester is joined or can join the room (per MSC3173). * The origin server has any user that is joined or can join the room. * The history visibility is set to world readable. Args: room_id: The room ID to check accessibility of. requester: The user making the request, if it is a local request. None if this is a federation request. origin: The server making the request, if it is a federation request. None if this is a local request. Returns: True if the room is accessible to the requesting user or server. """ state_ids = await self._store.get_current_state_ids(room_id) # If there's no state for the room, it isn't known. if not state_ids: # The user might have a pending invite for the room. if requester and await self._store.get_invite_for_local_user_in_room( requester, room_id ): return True logger.info("room %s is unknown, omitting from summary", room_id) return False try: room_version = await self._store.get_room_version(room_id) except UnsupportedRoomVersionError: # If a room with an unsupported room version is encountered, ignore # it to avoid breaking the entire summary response. return False # Include the room if it has join rules of public or knock. join_rules_event_id = state_ids.get((EventTypes.JoinRules, "")) if join_rules_event_id: join_rules_event = await self._store.get_event(join_rules_event_id) join_rule = join_rules_event.content.get("join_rule") if join_rule == JoinRules.PUBLIC or ( room_version.msc2403_knocking and join_rule == JoinRules.KNOCK ): return True # Include the room if it is peekable. hist_vis_event_id = state_ids.get((EventTypes.RoomHistoryVisibility, "")) if hist_vis_event_id: hist_vis_ev = await self._store.get_event(hist_vis_event_id) hist_vis = hist_vis_ev.content.get("history_visibility") if hist_vis == HistoryVisibility.WORLD_READABLE: return True # Otherwise we need to check information specific to the user or server. # If we have an authenticated requesting user, check if they are a member # of the room (or can join the room). if requester: member_event_id = state_ids.get((EventTypes.Member, requester), None) # If they're in the room they can see info on it. if member_event_id: member_event = await self._store.get_event(member_event_id) if member_event.membership in (Membership.JOIN, Membership.INVITE): return True # Otherwise, check if they should be allowed access via membership in a space. if await self._event_auth_handler.has_restricted_join_rules( state_ids, room_version ): allowed_rooms = ( await self._event_auth_handler.get_rooms_that_allow_join(state_ids) ) if await self._event_auth_handler.is_user_in_rooms( allowed_rooms, requester ): return True # If this is a request over federation, check if the host is in the room or # has a user who could join the room. elif origin: if await self._event_auth_handler.check_host_in_room( room_id, origin ) or await self._store.is_host_invited(room_id, origin): return True # Alternately, if the host has a user in any of the spaces specified # for access, then the host can see this room (and should do filtering # if the requester cannot see it). if await self._event_auth_handler.has_restricted_join_rules( state_ids, room_version ): allowed_rooms = ( await self._event_auth_handler.get_rooms_that_allow_join(state_ids) ) for space_id in allowed_rooms: if await self._event_auth_handler.check_host_in_room( space_id, origin ): return True logger.info( "room %s is unpeekable and requester %s is not a member / not allowed to join, omitting from summary", room_id, requester or origin, ) return False async def _is_remote_room_accessible( self, requester: str, room_id: str, room: JsonDict ) -> bool: """ Calculate whether the room received over federation should be shown to the requester. It should return true if: * The requester is joined or can join the room (per MSC3173). * The history visibility is set to world readable. Note that the local server is not in the requested room (which is why the remote call was made in the first place), but the user could have access due to an invite, etc. Args: requester: The user requesting the summary. room_id: The room ID returned over federation. room: The summary of the room returned over federation. Returns: True if the room is accessible to the requesting user. """ # The API doesn't return the room version so assume that a # join rule of knock is valid. if ( room.get("join_rules") in (JoinRules.PUBLIC, JoinRules.KNOCK) or room.get("world_readable") is True ): return True # Check if the user is a member of any of the allowed spaces # from the response. allowed_rooms = room.get("allowed_room_ids") or room.get("allowed_spaces") if allowed_rooms and isinstance(allowed_rooms, list): if await self._event_auth_handler.is_user_in_rooms( allowed_rooms, requester ): return True # Finally, check locally if we can access the room. The user might # already be in the room (if it was a child room), or there might be a # pending invite, etc. return await self._is_local_room_accessible(room_id, requester) async def _build_room_entry(self, room_id: str, for_federation: bool) -> JsonDict: """ Generate en entry summarising a single room. Args: room_id: The room ID to summarize. for_federation: True if this is a summary requested over federation (which includes additional fields). Returns: The JSON dictionary for the room. """ stats = await self._store.get_room_with_stats(room_id) # currently this should be impossible because we call # _is_local_room_accessible on the room before we get here, so # there should always be an entry assert stats is not None, "unable to retrieve stats for %s" % (room_id,) current_state_ids = await self._store.get_current_state_ids(room_id) create_event = await self._store.get_event( current_state_ids[(EventTypes.Create, "")] ) entry = { "room_id": stats["room_id"], "name": stats["name"], "topic": stats["topic"], "canonical_alias": stats["canonical_alias"], "num_joined_members": stats["joined_members"], "avatar_url": stats["avatar"], # plural join_rules is a documentation error but kept for historical # purposes. Should match /publicRooms. "join_rules": stats["join_rules"], "join_rule": stats["join_rules"], "world_readable": ( stats["history_visibility"] == HistoryVisibility.WORLD_READABLE ), "guest_can_join": stats["guest_access"] == "can_join", "room_type": create_event.content.get(EventContentFields.ROOM_TYPE), } # Federation requests need to provide additional information so the # requested server is able to filter the response appropriately. if for_federation: room_version = await self._store.get_room_version(room_id) if await self._event_auth_handler.has_restricted_join_rules( current_state_ids, room_version ): allowed_rooms = ( await self._event_auth_handler.get_rooms_that_allow_join( current_state_ids ) ) if allowed_rooms: entry["allowed_room_ids"] = allowed_rooms # TODO Remove this key once the API is stable. entry["allowed_spaces"] = allowed_rooms # Filter out Nones – rather omit the field altogether room_entry = {k: v for k, v in entry.items() if v is not None} return room_entry async def _get_child_events(self, room_id: str) -> Iterable[EventBase]: """ Get the child events for a given room. The returned results are sorted for stability. Args: room_id: The room id to get the children of. Returns: An iterable of sorted child events. """ # look for child rooms/spaces. current_state_ids = await self._store.get_current_state_ids(room_id) events = await self._store.get_events_as_list( [ event_id for key, event_id in current_state_ids.items() if key[0] == EventTypes.SpaceChild ] ) # filter out any events without a "via" (which implies it has been redacted), # and order to ensure we return stable results. return sorted(filter(_has_valid_via, events), key=_child_events_comparison_key) async def get_room_summary( self, requester: Optional[str], room_id: str, remote_room_hosts: Optional[List[str]] = None, ) -> JsonDict: """ Implementation of the room summary C-S API from MSC3266 Args: requester: user id of the user making this request, will be None for unauthenticated requests room_id: room id to summarise. remote_room_hosts: a list of homeservers to try fetching data through if we don't know it ourselves Returns: summary dict to return """ is_in_room = await self._store.is_host_joined(room_id, self._server_name) if is_in_room: room_entry = await self._summarize_local_room( requester, None, room_id, # Suggested-only doesn't matter since no children are requested. suggested_only=False, max_children=0, ) if not room_entry: raise NotFoundError("Room not found or is not accessible") room_summary = room_entry.room # If there was a requester, add their membership. if requester: ( membership, _, ) = await self._store.get_local_current_membership_for_user_in_room( requester, room_id ) room_summary["membership"] = membership or "leave" else: # TODO federation API, descoped from initial unstable implementation # as MSC needs more maturing on that side. raise SynapseError(400, "Federation is not currently supported.") return room_summary @attr.s(frozen=True, slots=True, auto_attribs=True) class _RoomQueueEntry: # The room ID of this entry. room_id: str # The server to query if the room is not known locally. via: Sequence[str] # The minimum number of hops necessary to get to this room (compared to the # originally requested room). depth: int = 0 # The room summary for this room returned via federation. This will only be # used if the room is not known locally (and is not a space). remote_room: Optional[JsonDict] = None @attr.s(frozen=True, slots=True, auto_attribs=True) class _RoomEntry: room_id: str # The room summary for this room. room: JsonDict # An iterable of the sorted, stripped children events for children of this room. # # This may not include all children. children_state_events: Sequence[JsonDict] = () def as_json(self) -> JsonDict: """ Returns a JSON dictionary suitable for the room hierarchy endpoint. It returns the room summary including the stripped m.space.child events as a sub-key. """ result = dict(self.room) result["children_state"] = self.children_state_events return result def _has_valid_via(e: EventBase) -> bool: via = e.content.get("via") if not via or not isinstance(via, Sequence): return False for v in via: if not isinstance(v, str): logger.debug("Ignoring edge event %s with invalid via entry", e.event_id) return False return True def _is_suggested_child_event(edge_event: EventBase) -> bool: suggested = edge_event.content.get("suggested") if isinstance(suggested, bool) and suggested: return True logger.debug("Ignorning not-suggested child %s", edge_event.state_key) return False # Order may only contain characters in the range of \x20 (space) to \x7E (~) inclusive. _INVALID_ORDER_CHARS_RE = re.compile(r"[^\x20-\x7E]") def _child_events_comparison_key( child: EventBase, ) -> Tuple[bool, Optional[str], int, str]: """ Generate a value for comparing two child events for ordering. The rules for ordering are: 1. The 'order' key, if it is valid. 2. The 'origin_server_ts' of the 'm.space.child' event. 3. The 'room_id'. Args: child: The event for generating a comparison key. Returns: The comparison key as a tuple of: False if the ordering is valid. The 'order' field or None if it is not given or invalid. The 'origin_server_ts' field. The room ID. """ order = child.content.get("order") # If order is not a string or doesn't meet the requirements, ignore it. if not isinstance(order, str): order = None elif len(order) > 50 or _INVALID_ORDER_CHARS_RE.search(order): order = None # Items without an order come last. return order is None, order, child.origin_server_ts, child.room_id synapse-1.53.0/synapse/handlers/saml.py000066400000000000000000000454621420514467300200730ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import TYPE_CHECKING, Callable, Dict, Optional, Set, Tuple import attr import saml2 import saml2.response from saml2.client import Saml2Client from synapse.api.errors import SynapseError from synapse.config import ConfigError from synapse.handlers.sso import MappingException, UserAttributes from synapse.http.servlet import parse_string from synapse.http.site import SynapseRequest from synapse.module_api import ModuleApi from synapse.types import ( UserID, map_username_to_mxid_localpart, mxid_localpart_allowed_characters, ) from synapse.util.iterutils import chunk_seq if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) class Saml2SessionData: """Data we track about SAML2 sessions""" # time the session was created, in milliseconds creation_time: int # The user interactive authentication session ID associated with this SAML # session (or None if this SAML session is for an initial login). ui_auth_session_id: Optional[str] = None class SamlHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.clock = hs.get_clock() self.server_name = hs.hostname self._saml_client = Saml2Client(hs.config.saml2.saml2_sp_config) self._saml_idp_entityid = hs.config.saml2.saml2_idp_entityid self._saml2_session_lifetime = hs.config.saml2.saml2_session_lifetime self._grandfathered_mxid_source_attribute = ( hs.config.saml2.saml2_grandfathered_mxid_source_attribute ) self._saml2_attribute_requirements = hs.config.saml2.attribute_requirements # plugin to do custom mapping from saml response to mxid self._user_mapping_provider = hs.config.saml2.saml2_user_mapping_provider_class( hs.config.saml2.saml2_user_mapping_provider_config, ModuleApi(hs, hs.get_auth_handler()), ) # identifier for the external_ids table self.idp_id = "saml" # user-facing name of this auth provider self.idp_name = "SAML" # we do not currently support icons/brands for SAML auth, but this is required by # the SsoIdentityProvider protocol type. self.idp_icon = None self.idp_brand = None # a map from saml session id to Saml2SessionData object self._outstanding_requests_dict: Dict[str, Saml2SessionData] = {} self._sso_handler = hs.get_sso_handler() self._sso_handler.register_identity_provider(self) async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Handle an incoming request to /login/sso/redirect Args: request: the incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login (or None for UI Auth). ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: URL to redirect to """ if not client_redirect_url: # Some SAML identity providers (e.g. Google) require a # RelayState parameter on requests, so pass in a dummy redirect URL # (which will never get used). client_redirect_url = b"unused" reqid, info = self._saml_client.prepare_for_authenticate( entityid=self._saml_idp_entityid, relay_state=client_redirect_url ) # Since SAML sessions timeout it is useful to log when they were created. logger.info("Initiating a new SAML session: %s" % (reqid,)) now = self.clock.time_msec() self._outstanding_requests_dict[reqid] = Saml2SessionData( creation_time=now, ui_auth_session_id=ui_auth_session_id, ) for key, value in info["headers"]: if key == "Location": return value # this shouldn't happen! raise Exception("prepare_for_authenticate didn't return a Location header") async def handle_saml_response(self, request: SynapseRequest) -> None: """Handle an incoming request to /_synapse/client/saml2/authn_response Args: request: the incoming request from the browser. We'll respond to it with a redirect. Returns: Completes once we have handled the request. """ resp_bytes = parse_string(request, "SAMLResponse", required=True) relay_state = parse_string(request, "RelayState", required=True) # expire outstanding sessions before parse_authn_request_response checks # the dict. self.expire_sessions() try: saml2_auth = self._saml_client.parse_authn_request_response( resp_bytes, saml2.BINDING_HTTP_POST, outstanding=self._outstanding_requests_dict, ) except saml2.response.UnsolicitedResponse as e: # the pysaml2 library helpfully logs an ERROR here, but neglects to log # the session ID. I don't really want to put the full text of the exception # in the (user-visible) exception message, so let's log the exception here # so we can track down the session IDs later. logger.warning(str(e)) self._sso_handler.render_error( request, "unsolicited_response", "Unexpected SAML2 login." ) return except Exception as e: self._sso_handler.render_error( request, "invalid_response", "Unable to parse SAML2 response: %s." % (e,), ) return if saml2_auth.not_signed: self._sso_handler.render_error( request, "unsigned_respond", "SAML2 response was not signed." ) return logger.debug("SAML2 response: %s", saml2_auth.origxml) await self._handle_authn_response(request, saml2_auth, relay_state) async def _handle_authn_response( self, request: SynapseRequest, saml2_auth: saml2.response.AuthnResponse, relay_state: str, ) -> None: """Handle an AuthnResponse, having parsed it from the request params Assumes that the signature on the response object has been checked. Maps the user onto an MXID, registering them if necessary, and returns a response to the browser. Args: request: the incoming request from the browser. We'll respond to it with an HTML page or a redirect saml2_auth: the parsed AuthnResponse object relay_state: the RelayState query param, which encodes the URI to rediret back to """ for assertion in saml2_auth.assertions: # kibana limits the length of a log field, whereas this is all rather # useful, so split it up. count = 0 for part in chunk_seq(str(assertion), 10000): logger.info( "SAML2 assertion: %s%s", "(%i)..." % (count,) if count else "", part ) count += 1 logger.info("SAML2 mapped attributes: %s", saml2_auth.ava) current_session = self._outstanding_requests_dict.pop( saml2_auth.in_response_to, None ) # first check if we're doing a UIA if current_session and current_session.ui_auth_session_id: try: remote_user_id = self._remote_id_from_saml_response(saml2_auth, None) except MappingException as e: logger.exception("Failed to extract remote user id from SAML response") self._sso_handler.render_error(request, "mapping_error", str(e)) return return await self._sso_handler.complete_sso_ui_auth_request( self.idp_id, remote_user_id, current_session.ui_auth_session_id, request, ) # otherwise, we're handling a login request. # Ensure that the attributes of the logged in user meet the required # attributes. if not self._sso_handler.check_required_attributes( request, saml2_auth.ava, self._saml2_attribute_requirements ): return # Call the mapper to register/login the user try: await self._complete_saml_login(saml2_auth, request, relay_state) except MappingException as e: logger.exception("Could not map user") self._sso_handler.render_error(request, "mapping_error", str(e)) async def _complete_saml_login( self, saml2_auth: saml2.response.AuthnResponse, request: SynapseRequest, client_redirect_url: str, ) -> None: """ Given a SAML response, complete the login flow Retrieves the remote user ID, registers the user if necessary, and serves a redirect back to the client with a login-token. Args: saml2_auth: The parsed SAML2 response. request: The request to respond to client_redirect_url: The redirect URL passed in by the client. Raises: MappingException if there was a problem mapping the response to a user. RedirectException: some mapping providers may raise this if they need to redirect to an interstitial page. """ remote_user_id = self._remote_id_from_saml_response( saml2_auth, client_redirect_url ) async def saml_response_to_remapped_user_attributes( failures: int, ) -> UserAttributes: """ Call the mapping provider to map a SAML response to user attributes and coerce the result into the standard form. This is backwards compatibility for abstraction for the SSO handler. """ # Call the mapping provider. result = self._user_mapping_provider.saml_response_to_user_attributes( saml2_auth, failures, client_redirect_url ) # Remap some of the results. return UserAttributes( localpart=result.get("mxid_localpart"), display_name=result.get("displayname"), emails=result.get("emails", []), ) async def grandfather_existing_users() -> Optional[str]: # backwards-compatibility hack: see if there is an existing user with a # suitable mapping from the uid if ( self._grandfathered_mxid_source_attribute and self._grandfathered_mxid_source_attribute in saml2_auth.ava ): attrval = saml2_auth.ava[self._grandfathered_mxid_source_attribute][0] user_id = UserID( map_username_to_mxid_localpart(attrval), self.server_name ).to_string() logger.debug( "Looking for existing account based on mapped %s %s", self._grandfathered_mxid_source_attribute, user_id, ) users = await self.store.get_users_by_id_case_insensitive(user_id) if users: registered_user_id = list(users.keys())[0] logger.info("Grandfathering mapping to %s", registered_user_id) return registered_user_id return None await self._sso_handler.complete_sso_login_request( self.idp_id, remote_user_id, request, client_redirect_url, saml_response_to_remapped_user_attributes, grandfather_existing_users, ) def _remote_id_from_saml_response( self, saml2_auth: saml2.response.AuthnResponse, client_redirect_url: Optional[str], ) -> str: """Extract the unique remote id from a SAML2 AuthnResponse Args: saml2_auth: The parsed SAML2 response. client_redirect_url: The redirect URL passed in by the client. Returns: remote user id Raises: MappingException if there was an error extracting the user id """ # It's not obvious why we need to pass in the redirect URI to the mapping # provider, but we do :/ remote_user_id = self._user_mapping_provider.get_remote_user_id( saml2_auth, client_redirect_url ) if not remote_user_id: raise MappingException( "Failed to extract remote user id from SAML response" ) return remote_user_id def expire_sessions(self) -> None: expire_before = self.clock.time_msec() - self._saml2_session_lifetime to_expire = set() for reqid, data in self._outstanding_requests_dict.items(): if data.creation_time < expire_before: to_expire.add(reqid) for reqid in to_expire: logger.debug("Expiring session id %s", reqid) del self._outstanding_requests_dict[reqid] DOT_REPLACE_PATTERN = re.compile( "[^%s]" % (re.escape("".join(mxid_localpart_allowed_characters)),) ) def dot_replace_for_mxid(username: str) -> str: """Replace any characters which are not allowed in Matrix IDs with a dot.""" username = username.lower() username = DOT_REPLACE_PATTERN.sub(".", username) # regular mxids aren't allowed to start with an underscore either username = re.sub("^_", "", username) return username MXID_MAPPER_MAP: Dict[str, Callable[[str], str]] = { "hexencode": map_username_to_mxid_localpart, "dotreplace": dot_replace_for_mxid, } @attr.s(auto_attribs=True) class SamlConfig: mxid_source_attribute: str mxid_mapper: Callable[[str], str] class DefaultSamlMappingProvider: __version__ = "0.0.1" def __init__(self, parsed_config: SamlConfig, module_api: ModuleApi): """The default SAML user mapping provider Args: parsed_config: Module configuration module_api: module api proxy """ self._mxid_source_attribute = parsed_config.mxid_source_attribute self._mxid_mapper = parsed_config.mxid_mapper self._grandfathered_mxid_source_attribute = ( module_api._hs.config.saml2.saml2_grandfathered_mxid_source_attribute ) def get_remote_user_id( self, saml_response: saml2.response.AuthnResponse, client_redirect_url: str ) -> str: """Extracts the remote user id from the SAML response""" try: return saml_response.ava["uid"][0] except KeyError: logger.warning("SAML2 response lacks a 'uid' attestation") raise MappingException("'uid' not in SAML2 response") def saml_response_to_user_attributes( self, saml_response: saml2.response.AuthnResponse, failures: int, client_redirect_url: str, ) -> dict: """Maps some text from a SAML response to attributes of a new user Args: saml_response: A SAML auth response object failures: How many times a call to this function with this saml_response has resulted in a failure client_redirect_url: where the client wants to redirect to Returns: dict: A dict containing new user attributes. Possible keys: * mxid_localpart (str): Required. The localpart of the user's mxid * displayname (str): The displayname of the user * emails (list[str]): Any emails for the user """ try: mxid_source = saml_response.ava[self._mxid_source_attribute][0] except KeyError: logger.warning( "SAML2 response lacks a '%s' attestation", self._mxid_source_attribute, ) raise SynapseError( 400, "%s not in SAML2 response" % (self._mxid_source_attribute,) ) # Use the configured mapper for this mxid_source localpart = self._mxid_mapper(mxid_source) # Append suffix integer if last call to this function failed to produce # a usable mxid. localpart += str(failures) if failures else "" # Retrieve the display name from the saml response # If displayname is None, the mxid_localpart will be used instead displayname = saml_response.ava.get("displayName", [None])[0] # Retrieve any emails present in the saml response emails = saml_response.ava.get("email", []) return { "mxid_localpart": localpart, "displayname": displayname, "emails": emails, } @staticmethod def parse_config(config: dict) -> SamlConfig: """Parse the dict provided by the homeserver's config Args: config: A dictionary containing configuration options for this provider Returns: SamlConfig: A custom config object for this module """ # Parse config options and use defaults where necessary mxid_source_attribute = config.get("mxid_source_attribute", "uid") mapping_type = config.get("mxid_mapping", "hexencode") # Retrieve the associating mapping function try: mxid_mapper = MXID_MAPPER_MAP[mapping_type] except KeyError: raise ConfigError( "saml2_config.user_mapping_provider.config: '%s' is not a valid " "mxid_mapping value" % (mapping_type,) ) return SamlConfig(mxid_source_attribute, mxid_mapper) @staticmethod def get_saml_attributes(config: SamlConfig) -> Tuple[Set[str], Set[str]]: """Returns the required attributes of a SAML Args: config: A SamlConfig object containing configuration params for this provider Returns: The first set equates to the saml auth response attributes that are required for the module to function, whereas the second set consists of those attributes which can be used if available, but are not necessary """ return {"uid", config.mxid_source_attribute}, {"displayName", "email"} synapse-1.53.0/synapse/handlers/search.py000066400000000000000000000437401420514467300204010ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Optional from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.constants import EventTypes, Membership from synapse.api.errors import NotFoundError, SynapseError from synapse.api.filtering import Filter from synapse.events import EventBase from synapse.storage.state import StateFilter from synapse.types import JsonDict, UserID from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class SearchHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.state_handler = hs.get_state_handler() self.clock = hs.get_clock() self.hs = hs self._event_serializer = hs.get_event_client_serializer() self.storage = hs.get_storage() self.state_store = self.storage.state self.auth = hs.get_auth() self._msc3666_enabled = hs.config.experimental.msc3666_enabled async def get_old_rooms_from_upgraded_room(self, room_id: str) -> Iterable[str]: """Retrieves room IDs of old rooms in the history of an upgraded room. We do so by checking the m.room.create event of the room for a `predecessor` key. If it exists, we add the room ID to our return list and then check that room for a m.room.create event and so on until we can no longer find any more previous rooms. The full list of all found rooms in then returned. Args: room_id: id of the room to search through. Returns: Predecessor room ids """ historical_room_ids = [] # The initial room must have been known for us to get this far predecessor = await self.store.get_room_predecessor(room_id) while True: if not predecessor: # We have reached the end of the chain of predecessors break if not isinstance(predecessor.get("room_id"), str): # This predecessor object is malformed. Exit here break predecessor_room_id = predecessor["room_id"] # Don't add it to the list until we have checked that we are in the room try: next_predecessor_room = await self.store.get_room_predecessor( predecessor_room_id ) except NotFoundError: # The predecessor is not a known room, so we are done here break historical_room_ids.append(predecessor_room_id) # And repeat predecessor = next_predecessor_room return historical_room_ids async def search( self, user: UserID, content: JsonDict, batch: Optional[str] = None ) -> JsonDict: """Performs a full text search for a user. Args: user content: Search parameters batch: The next_batch parameter. Used for pagination. Returns: dict to be returned to the client with results of search """ if not self.hs.config.server.enable_search: raise SynapseError(400, "Search is disabled on this homeserver") batch_group = None batch_group_key = None batch_token = None if batch: try: b = decode_base64(batch).decode("ascii") batch_group, batch_group_key, batch_token = b.split("\n") assert batch_group is not None assert batch_group_key is not None assert batch_token is not None except Exception: raise SynapseError(400, "Invalid batch") logger.info( "Search batch properties: %r, %r, %r", batch_group, batch_group_key, batch_token, ) logger.info("Search content: %s", content) try: room_cat = content["search_categories"]["room_events"] # The actual thing to query in FTS search_term = room_cat["search_term"] # Which "keys" to search over in FTS query keys = room_cat.get( "keys", ["content.body", "content.name", "content.topic"] ) # Filter to apply to results filter_dict = room_cat.get("filter", {}) # What to order results by (impacts whether pagination can be done) order_by = room_cat.get("order_by", "rank") # Return the current state of the rooms? include_state = room_cat.get("include_state", False) # Include context around each event? event_context = room_cat.get("event_context", None) # Group results together? May allow clients to paginate within a # group group_by = room_cat.get("groupings", {}).get("group_by", {}) group_keys = [g["key"] for g in group_by] if event_context is not None: before_limit = int(event_context.get("before_limit", 5)) after_limit = int(event_context.get("after_limit", 5)) # Return the historic display name and avatar for the senders # of the events? include_profile = bool(event_context.get("include_profile", False)) except KeyError: raise SynapseError(400, "Invalid search query") if order_by not in ("rank", "recent"): raise SynapseError(400, "Invalid order by: %r" % (order_by,)) if set(group_keys) - {"room_id", "sender"}: raise SynapseError( 400, "Invalid group by keys: %r" % (set(group_keys) - {"room_id", "sender"},), ) search_filter = Filter(self.hs, filter_dict) # TODO: Search through left rooms too rooms = await self.store.get_rooms_for_local_user_where_membership_is( user.to_string(), membership_list=[Membership.JOIN], # membership_list=[Membership.JOIN, Membership.LEAVE, Membership.Ban], ) room_ids = {r.room_id for r in rooms} # If doing a subset of all rooms seearch, check if any of the rooms # are from an upgraded room, and search their contents as well if search_filter.rooms: historical_room_ids: List[str] = [] for room_id in search_filter.rooms: # Add any previous rooms to the search if they exist ids = await self.get_old_rooms_from_upgraded_room(room_id) historical_room_ids += ids # Prevent any historical events from being filtered search_filter = search_filter.with_room_ids(historical_room_ids) room_ids = search_filter.filter_rooms(room_ids) if batch_group == "room_id": room_ids.intersection_update({batch_group_key}) if not room_ids: return { "search_categories": { "room_events": {"results": [], "count": 0, "highlights": []} } } rank_map = {} # event_id -> rank of event allowed_events = [] # Holds result of grouping by room, if applicable room_groups: Dict[str, JsonDict] = {} # Holds result of grouping by sender, if applicable sender_group: Dict[str, JsonDict] = {} # Holds the next_batch for the entire result set if one of those exists global_next_batch = None highlights = set() count = None if order_by == "rank": search_result = await self.store.search_msgs(room_ids, search_term, keys) count = search_result["count"] if search_result["highlights"]: highlights.update(search_result["highlights"]) results = search_result["results"] rank_map.update({r["event"].event_id: r["rank"] for r in results}) filtered_events = await search_filter.filter([r["event"] for r in results]) events = await filter_events_for_client( self.storage, user.to_string(), filtered_events ) events.sort(key=lambda e: -rank_map[e.event_id]) allowed_events = events[: search_filter.limit] for e in allowed_events: rm = room_groups.setdefault( e.room_id, {"results": [], "order": rank_map[e.event_id]} ) rm["results"].append(e.event_id) s = sender_group.setdefault( e.sender, {"results": [], "order": rank_map[e.event_id]} ) s["results"].append(e.event_id) elif order_by == "recent": room_events: List[EventBase] = [] i = 0 pagination_token = batch_token # We keep looping and we keep filtering until we reach the limit # or we run out of things. # But only go around 5 times since otherwise synapse will be sad. while len(room_events) < search_filter.limit and i < 5: i += 1 search_result = await self.store.search_rooms( room_ids, search_term, keys, search_filter.limit * 2, pagination_token=pagination_token, ) if search_result["highlights"]: highlights.update(search_result["highlights"]) count = search_result["count"] results = search_result["results"] results_map = {r["event"].event_id: r for r in results} rank_map.update({r["event"].event_id: r["rank"] for r in results}) filtered_events = await search_filter.filter( [r["event"] for r in results] ) events = await filter_events_for_client( self.storage, user.to_string(), filtered_events ) room_events.extend(events) room_events = room_events[: search_filter.limit] if len(results) < search_filter.limit * 2: pagination_token = None break else: pagination_token = results[-1]["pagination_token"] for event in room_events: group = room_groups.setdefault(event.room_id, {"results": []}) group["results"].append(event.event_id) if room_events and len(room_events) >= search_filter.limit: last_event_id = room_events[-1].event_id pagination_token = results_map[last_event_id]["pagination_token"] # We want to respect the given batch group and group keys so # that if people blindly use the top level `next_batch` token # it returns more from the same group (if applicable) rather # than reverting to searching all results again. if batch_group and batch_group_key: global_next_batch = encode_base64( ( "%s\n%s\n%s" % (batch_group, batch_group_key, pagination_token) ).encode("ascii") ) else: global_next_batch = encode_base64( ("%s\n%s\n%s" % ("all", "", pagination_token)).encode("ascii") ) for room_id, group in room_groups.items(): group["next_batch"] = encode_base64( ("%s\n%s\n%s" % ("room_id", room_id, pagination_token)).encode( "ascii" ) ) allowed_events.extend(room_events) else: # We should never get here due to the guard earlier. raise NotImplementedError() logger.info("Found %d events to return", len(allowed_events)) # If client has asked for "context" for each event (i.e. some surrounding # events and state), fetch that if event_context is not None: now_token = self.hs.get_event_sources().get_current_token() contexts = {} for event in allowed_events: res = await self.store.get_events_around( event.room_id, event.event_id, before_limit, after_limit ) logger.info( "Context for search returned %d and %d events", len(res.events_before), len(res.events_after), ) events_before = await filter_events_for_client( self.storage, user.to_string(), res.events_before ) events_after = await filter_events_for_client( self.storage, user.to_string(), res.events_after ) context = { "events_before": events_before, "events_after": events_after, "start": await now_token.copy_and_replace( "room_key", res.start ).to_string(self.store), "end": await now_token.copy_and_replace( "room_key", res.end ).to_string(self.store), } if include_profile: senders = { ev.sender for ev in itertools.chain(events_before, [event], events_after) } if events_after: last_event_id = events_after[-1].event_id else: last_event_id = event.event_id state_filter = StateFilter.from_types( [(EventTypes.Member, sender) for sender in senders] ) state = await self.state_store.get_state_for_event( last_event_id, state_filter ) context["profile_info"] = { s.state_key: { "displayname": s.content.get("displayname", None), "avatar_url": s.content.get("avatar_url", None), } for s in state.values() if s.type == EventTypes.Member and s.state_key in senders } contexts[event.event_id] = context else: contexts = {} # TODO: Add a limit time_now = self.clock.time_msec() aggregations = None if self._msc3666_enabled: aggregations = await self.store.get_bundled_aggregations( # Generate an iterable of EventBase for all the events that will be # returned, including contextual events. itertools.chain( # The events_before and events_after for each context. itertools.chain.from_iterable( itertools.chain(context["events_before"], context["events_after"]) # type: ignore[arg-type] for context in contexts.values() ), # The returned events. allowed_events, ), user.to_string(), ) for context in contexts.values(): context["events_before"] = self._event_serializer.serialize_events( context["events_before"], time_now, bundle_aggregations=aggregations # type: ignore[arg-type] ) context["events_after"] = self._event_serializer.serialize_events( context["events_after"], time_now, bundle_aggregations=aggregations # type: ignore[arg-type] ) state_results = {} if include_state: for room_id in {e.room_id for e in allowed_events}: state = await self.state_handler.get_current_state(room_id) state_results[room_id] = list(state.values()) # We're now about to serialize the events. We should not make any # blocking calls after this. Otherwise the 'age' will be wrong results = [] for e in allowed_events: results.append( { "rank": rank_map[e.event_id], "result": self._event_serializer.serialize_event( e, time_now, bundle_aggregations=aggregations ), "context": contexts.get(e.event_id, {}), } ) rooms_cat_res = { "results": results, "count": count, "highlights": list(highlights), } if state_results: s = {} for room_id, state_events in state_results.items(): s[room_id] = self._event_serializer.serialize_events( state_events, time_now ) rooms_cat_res["state"] = s if room_groups and "room_id" in group_keys: rooms_cat_res.setdefault("groups", {})["room_id"] = room_groups if sender_group and "sender" in group_keys: rooms_cat_res.setdefault("groups", {})["sender"] = sender_group if global_next_batch: rooms_cat_res["next_batch"] = global_next_batch return {"search_categories": {"room_events": rooms_cat_res}} synapse-1.53.0/synapse/handlers/send_email.py000066400000000000000000000143441420514467300212320ustar00rootroot00000000000000# Copyright 2021 The Matrix.org C.I.C. Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import email.utils import logging from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from io import BytesIO from typing import TYPE_CHECKING, Any, Optional from pkg_resources import parse_version import twisted from twisted.internet.defer import Deferred from twisted.internet.interfaces import IOpenSSLContextFactory, IReactorTCP from twisted.mail.smtp import ESMTPSender, ESMTPSenderFactory from synapse.logging.context import make_deferred_yieldable if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) _is_old_twisted = parse_version(twisted.__version__) < parse_version("21") class _NoTLSESMTPSender(ESMTPSender): """Extend ESMTPSender to disable TLS Unfortunately, before Twisted 21.2, ESMTPSender doesn't give an easy way to disable TLS, so we override its internal method which it uses to generate a context factory. """ def _getContextFactory(self) -> Optional[IOpenSSLContextFactory]: return None async def _sendmail( reactor: IReactorTCP, smtphost: str, smtpport: int, from_addr: str, to_addr: str, msg_bytes: bytes, username: Optional[bytes] = None, password: Optional[bytes] = None, require_auth: bool = False, require_tls: bool = False, enable_tls: bool = True, ) -> None: """A simple wrapper around ESMTPSenderFactory, to allow substitution in tests Params: reactor: reactor to use to make the outbound connection smtphost: hostname to connect to smtpport: port to connect to from_addr: "From" address for email to_addr: "To" address for email msg_bytes: Message content username: username to authenticate with, if auth is enabled password: password to give when authenticating require_auth: if auth is not offered, fail the request require_tls: if TLS is not offered, fail the reqest enable_tls: True to enable TLS. If this is False and require_tls is True, the request will fail. """ msg = BytesIO(msg_bytes) d: "Deferred[object]" = Deferred() def build_sender_factory(**kwargs: Any) -> ESMTPSenderFactory: return ESMTPSenderFactory( username, password, from_addr, to_addr, msg, d, heloFallback=True, requireAuthentication=require_auth, requireTransportSecurity=require_tls, **kwargs, ) if _is_old_twisted: # before twisted 21.2, we have to override the ESMTPSender protocol to disable # TLS factory = build_sender_factory() if not enable_tls: factory.protocol = _NoTLSESMTPSender else: # for twisted 21.2 and later, there is a 'hostname' parameter which we should # set to enable TLS. factory = build_sender_factory(hostname=smtphost if enable_tls else None) reactor.connectTCP( smtphost, smtpport, factory, timeout=30, bindAddress=None, ) await make_deferred_yieldable(d) class SendEmailHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self._reactor = hs.get_reactor() self._from = hs.config.email.email_notif_from self._smtp_host = hs.config.email.email_smtp_host self._smtp_port = hs.config.email.email_smtp_port user = hs.config.email.email_smtp_user self._smtp_user = user.encode("utf-8") if user is not None else None passwd = hs.config.email.email_smtp_pass self._smtp_pass = passwd.encode("utf-8") if passwd is not None else None self._require_transport_security = hs.config.email.require_transport_security self._enable_tls = hs.config.email.enable_smtp_tls self._sendmail = _sendmail async def send_email( self, email_address: str, subject: str, app_name: str, html: str, text: str, ) -> None: """Send a multipart email with the given information. Args: email_address: The address to send the email to. subject: The email's subject. app_name: The app name to include in the From header. html: The HTML content to include in the email. text: The plain text content to include in the email. """ try: from_string = self._from % {"app": app_name} except (KeyError, TypeError): from_string = self._from raw_from = email.utils.parseaddr(from_string)[1] raw_to = email.utils.parseaddr(email_address)[1] if raw_to == "": raise RuntimeError("Invalid 'to' address") html_part = MIMEText(html, "html", "utf8") text_part = MIMEText(text, "plain", "utf8") multipart_msg = MIMEMultipart("alternative") multipart_msg["Subject"] = subject multipart_msg["From"] = from_string multipart_msg["To"] = email_address multipart_msg["Date"] = email.utils.formatdate() multipart_msg["Message-ID"] = email.utils.make_msgid() multipart_msg.attach(text_part) multipart_msg.attach(html_part) logger.info("Sending email to %s" % email_address) await self._sendmail( self._reactor, self._smtp_host, self._smtp_port, raw_from, raw_to, multipart_msg.as_string().encode("utf8"), username=self._smtp_user, password=self._smtp_pass, require_auth=self._smtp_user is not None, require_tls=self._require_transport_security, enable_tls=self._enable_tls, ) synapse-1.53.0/synapse/handlers/set_password.py000066400000000000000000000045751420514467300216540ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional from synapse.api.errors import Codes, StoreError, SynapseError from synapse.types import Requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class SetPasswordHandler: """Handler which deals with changing user account passwords""" def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self._auth_handler = hs.get_auth_handler() self._device_handler = hs.get_device_handler() async def set_password( self, user_id: str, password_hash: str, logout_devices: bool, requester: Optional[Requester] = None, ) -> None: if not self._auth_handler.can_change_password(): raise SynapseError(403, "Password change disabled", errcode=Codes.FORBIDDEN) try: await self.store.user_set_password_hash(user_id, password_hash) except StoreError as e: if e.code == 404: raise SynapseError(404, "Unknown user", Codes.NOT_FOUND) raise e # Optionally, log out all of the user's other sessions. if logout_devices: except_device_id = requester.device_id if requester else None except_access_token_id = requester.access_token_id if requester else None # First delete all of their other devices. await self._device_handler.delete_all_devices_for_user( user_id, except_device_id=except_device_id ) # and now delete any access tokens which weren't associated with # devices (or were associated with this device). await self._auth_handler.delete_access_tokens_for_user( user_id, except_token_id=except_access_token_id ) synapse-1.53.0/synapse/handlers/sso.py000066400000000000000000001125641420514467300177410ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, Dict, Iterable, List, Mapping, Optional, Set, ) from urllib.parse import urlencode import attr from typing_extensions import NoReturn, Protocol from twisted.web.iweb import IRequest from twisted.web.server import Request from synapse.api.constants import LoginType from synapse.api.errors import Codes, NotFoundError, RedirectException, SynapseError from synapse.config.sso import SsoAttributeRequirement from synapse.handlers.register import init_counters_for_auth_provider from synapse.handlers.ui_auth import UIAuthSessionDataConstants from synapse.http import get_request_user_agent from synapse.http.server import respond_with_html, respond_with_redirect from synapse.http.site import SynapseRequest from synapse.types import ( JsonDict, UserID, contains_invalid_mxid_characters, create_requester, ) from synapse.util.async_helpers import Linearizer from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class MappingException(Exception): """Used to catch errors when mapping an SSO response to user attributes. Note that the msg that is raised is shown to end-users. """ class SsoIdentityProvider(Protocol): """Abstract base class to be implemented by SSO Identity Providers An Identity Provider, or IdP, is an external HTTP service which authenticates a user to say whether they should be allowed to log in, or perform a given action. Synapse supports various implementations of IdPs, including OpenID Connect, SAML, and CAS. The main entry point is `handle_redirect_request`, which should return a URI to redirect the user's browser to the IdP's authentication page. Each IdP should be registered with the SsoHandler via `hs.get_sso_handler().register_identity_provider()`, so that requests to `/_matrix/client/r0/login/sso/redirect` can be correctly dispatched. """ @property @abc.abstractmethod def idp_id(self) -> str: """A unique identifier for this SSO provider Eg, "saml", "cas", "github" """ @property @abc.abstractmethod def idp_name(self) -> str: """User-facing name for this provider""" @property def idp_icon(self) -> Optional[str]: """Optional MXC URI for user-facing icon""" return None @property def idp_brand(self) -> Optional[str]: """Optional branding identifier""" return None @abc.abstractmethod async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Handle an incoming request to /login/sso/redirect Args: request: the incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login (or None for UI Auth). ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: URL to redirect to """ raise NotImplementedError() @attr.s(auto_attribs=True) class UserAttributes: # the localpart of the mxid that the mapper has assigned to the user. # if `None`, the mapper has not picked a userid, and the user should be prompted to # enter one. localpart: Optional[str] display_name: Optional[str] = None emails: Collection[str] = attr.Factory(list) @attr.s(slots=True, auto_attribs=True) class UsernameMappingSession: """Data we track about SSO sessions""" # A unique identifier for this SSO provider, e.g. "oidc" or "saml". auth_provider_id: str # user ID on the IdP server remote_user_id: str # attributes returned by the ID mapper display_name: Optional[str] emails: Collection[str] # An optional dictionary of extra attributes to be provided to the client in the # login response. extra_login_attributes: Optional[JsonDict] # where to redirect the client back to client_redirect_url: str # expiry time for the session, in milliseconds expiry_time_ms: int # choices made by the user chosen_localpart: Optional[str] = None use_display_name: bool = True emails_to_use: Collection[str] = () terms_accepted_version: Optional[str] = None # the HTTP cookie used to track the mapping session id USERNAME_MAPPING_SESSION_COOKIE_NAME = b"username_mapping_session" class SsoHandler: # The number of attempts to ask the mapping provider for when generating an MXID. _MAP_USERNAME_RETRIES = 1000 # the time a UsernameMappingSession remains valid for _MAPPING_SESSION_VALIDITY_PERIOD_MS = 15 * 60 * 1000 def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self._store = hs.get_datastore() self._server_name = hs.hostname self._registration_handler = hs.get_registration_handler() self._auth_handler = hs.get_auth_handler() self._error_template = hs.config.sso.sso_error_template self._bad_user_template = hs.config.sso.sso_auth_bad_user_template self._profile_handler = hs.get_profile_handler() # The following template is shown after a successful user interactive # authentication session. It tells the user they can close the window. self._sso_auth_success_template = hs.config.sso.sso_auth_success_template self._sso_update_profile_information = ( hs.config.sso.sso_update_profile_information ) # a lock on the mappings self._mapping_lock = Linearizer(name="sso_user_mapping", clock=hs.get_clock()) # a map from session id to session data self._username_mapping_sessions: Dict[str, UsernameMappingSession] = {} # map from idp_id to SsoIdentityProvider self._identity_providers: Dict[str, SsoIdentityProvider] = {} self._consent_at_registration = hs.config.consent.user_consent_at_registration def register_identity_provider(self, p: SsoIdentityProvider) -> None: p_id = p.idp_id assert p_id not in self._identity_providers self._identity_providers[p_id] = p init_counters_for_auth_provider(p_id) def get_identity_providers(self) -> Mapping[str, SsoIdentityProvider]: """Get the configured identity providers""" return self._identity_providers async def get_identity_providers_for_user( self, user_id: str ) -> Mapping[str, SsoIdentityProvider]: """Get the SsoIdentityProviders which a user has used Given a user id, get the identity providers that that user has used to log in with in the past (and thus could use to re-identify themselves for UI Auth). Args: user_id: MXID of user to look up Raises: a map of idp_id to SsoIdentityProvider """ external_ids = await self._store.get_external_ids_by_user(user_id) valid_idps = {} for idp_id, _ in external_ids: idp = self._identity_providers.get(idp_id) if not idp: logger.warning( "User %r has an SSO mapping for IdP %r, but this is no longer " "configured.", user_id, idp_id, ) else: valid_idps[idp_id] = idp return valid_idps def render_error( self, request: Request, error: str, error_description: Optional[str] = None, code: int = 400, ) -> None: """Renders the error template and responds with it. This is used to show errors to the user. The template of this page can be found under `synapse/res/templates/sso_error.html`. Args: request: The incoming request from the browser. We'll respond with an HTML page describing the error. error: A technical identifier for this error. error_description: A human-readable description of the error. code: The integer error code (an HTTP response code) """ html = self._error_template.render( error=error, error_description=error_description ) respond_with_html(request, code, html) async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: bytes, idp_id: Optional[str], ) -> str: """Handle a request to /login/sso/redirect Args: request: incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login. idp_id: optional identity provider chosen by the client Returns: the URI to redirect to """ if not self._identity_providers: raise SynapseError( 400, "Homeserver not configured for SSO.", errcode=Codes.UNRECOGNIZED ) # if the client chose an IdP, use that idp: Optional[SsoIdentityProvider] = None if idp_id: idp = self._identity_providers.get(idp_id) if not idp: raise NotFoundError("Unknown identity provider") # if we only have one auth provider, redirect to it directly elif len(self._identity_providers) == 1: idp = next(iter(self._identity_providers.values())) if idp: return await idp.handle_redirect_request(request, client_redirect_url) # otherwise, redirect to the IDP picker return "/_synapse/client/pick_idp?" + urlencode( (("redirectUrl", client_redirect_url),) ) async def get_sso_user_by_remote_user_id( self, auth_provider_id: str, remote_user_id: str ) -> Optional[str]: """ Maps the user ID of a remote IdP to a mxid for a previously seen user. If the user has not been seen yet, this will return None. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The user ID according to the remote IdP. This might be an e-mail address, a GUID, or some other form. It must be unique and immutable. Returns: The mxid of a previously seen user. """ logger.debug( "Looking for existing mapping for user %s:%s", auth_provider_id, remote_user_id, ) # Check if we already have a mapping for this user. previously_registered_user_id = await self._store.get_user_by_external_id( auth_provider_id, remote_user_id, ) # A match was found, return the user ID. if previously_registered_user_id is not None: logger.info( "Found existing mapping for IdP '%s' and remote_user_id '%s': %s", auth_provider_id, remote_user_id, previously_registered_user_id, ) return previously_registered_user_id # No match. return None async def complete_sso_login_request( self, auth_provider_id: str, remote_user_id: str, request: SynapseRequest, client_redirect_url: str, sso_to_matrix_id_mapper: Callable[[int], Awaitable[UserAttributes]], grandfather_existing_users: Callable[[], Awaitable[Optional[str]]], extra_login_attributes: Optional[JsonDict] = None, auth_provider_session_id: Optional[str] = None, ) -> None: """ Given an SSO ID, retrieve the user ID for it and possibly register the user. This first checks if the SSO ID has previously been linked to a matrix ID, if it has that matrix ID is returned regardless of the current mapping logic. If a callable is provided for grandfathering users, it is called and can potentially return a matrix ID to use. If it does, the SSO ID is linked to this matrix ID for subsequent calls. The mapping function is called (potentially multiple times) to generate a localpart for the user. If an unused localpart is generated, the user is registered from the given user-agent and IP address and the SSO ID is linked to this matrix ID for subsequent calls. Finally, we generate a redirect to the supplied redirect uri, with a login token Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. request: The request to respond to client_redirect_url: The redirect URL passed in by the client. sso_to_matrix_id_mapper: A callable to generate the user attributes. The only parameter is an integer which represents the amount of times the returned mxid localpart mapping has failed. It is expected that the mapper can raise two exceptions, which will get passed through to the caller: MappingException if there was a problem mapping the response to the user. RedirectException to redirect to an additional page (e.g. to prompt the user for more information). grandfather_existing_users: A callable which can return an previously existing matrix ID. The SSO ID is then linked to the returned matrix ID. extra_login_attributes: An optional dictionary of extra attributes to be provided to the client in the login response. auth_provider_session_id: An optional session ID from the IdP. Raises: MappingException if there was a problem mapping the response to a user. RedirectException: if the mapping provider needs to redirect the user to an additional page. (e.g. to prompt for more information) """ new_user = False # grab a lock while we try to find a mapping for this user. This seems... # optimistic, especially for implementations that end up redirecting to # interstitial pages. with await self._mapping_lock.queue(auth_provider_id): # first of all, check if we already have a mapping for this user user_id = await self.get_sso_user_by_remote_user_id( auth_provider_id, remote_user_id, ) # Check for grandfathering of users. if not user_id: user_id = await grandfather_existing_users() if user_id: # Future logins should also match this user ID. await self._store.record_user_external_id( auth_provider_id, remote_user_id, user_id ) # Otherwise, generate a new user. if not user_id: attributes = await self._call_attribute_mapper(sso_to_matrix_id_mapper) next_step_url = self._get_url_for_next_new_user_step( attributes=attributes ) if next_step_url: await self._redirect_to_next_new_user_step( auth_provider_id, remote_user_id, attributes, client_redirect_url, next_step_url, extra_login_attributes, ) user_id = await self._register_mapped_user( attributes, auth_provider_id, remote_user_id, get_request_user_agent(request), request.getClientIP(), ) new_user = True elif self._sso_update_profile_information: attributes = await self._call_attribute_mapper(sso_to_matrix_id_mapper) if attributes.display_name: user_id_obj = UserID.from_string(user_id) profile_display_name = await self._profile_handler.get_displayname( user_id_obj ) if profile_display_name != attributes.display_name: requester = create_requester( user_id, authenticated_entity=user_id, ) await self._profile_handler.set_displayname( user_id_obj, requester, attributes.display_name, True ) await self._auth_handler.complete_sso_login( user_id, auth_provider_id, request, client_redirect_url, extra_login_attributes, new_user=new_user, auth_provider_session_id=auth_provider_session_id, ) async def _call_attribute_mapper( self, sso_to_matrix_id_mapper: Callable[[int], Awaitable[UserAttributes]], ) -> UserAttributes: """Call the attribute mapper function in a loop, until we get a unique userid""" for i in range(self._MAP_USERNAME_RETRIES): try: attributes = await sso_to_matrix_id_mapper(i) except (RedirectException, MappingException): # Mapping providers are allowed to issue a redirect (e.g. to ask # the user for more information) and can issue a mapping exception # if a name cannot be generated. raise except Exception as e: # Any other exception is unexpected. raise MappingException( "Could not extract user attributes from SSO response." ) from e logger.debug( "Retrieved user attributes from user mapping provider: %r (attempt %d)", attributes, i, ) if not attributes.localpart: # the mapper has not picked a localpart return attributes # Check if this mxid already exists user_id = UserID(attributes.localpart, self._server_name).to_string() if not await self._store.get_users_by_id_case_insensitive(user_id): # This mxid is free break else: # Unable to generate a username in 1000 iterations # Break and return error to the user raise MappingException( "Unable to generate a Matrix ID from the SSO response" ) return attributes def _get_url_for_next_new_user_step( self, attributes: Optional[UserAttributes] = None, session: Optional[UsernameMappingSession] = None, ) -> bytes: """Returns the URL to redirect to for the next step of new user registration Given attributes from the user mapping provider or a UsernameMappingSession, returns the URL to redirect to for the next step of the registration flow. Args: attributes: the user attributes returned by the user mapping provider, from before a UsernameMappingSession has begun. session: an active UsernameMappingSession, possibly with some of its attributes chosen by the user. Returns: The URL to redirect to, or an empty value if no redirect is necessary """ # Must provide either attributes or session, not both assert (attributes is not None) != (session is not None) if (attributes and attributes.localpart is None) or ( session and session.chosen_localpart is None ): return b"/_synapse/client/pick_username/account_details" elif self._consent_at_registration and not ( session and session.terms_accepted_version ): return b"/_synapse/client/new_user_consent" else: return b"/_synapse/client/sso_register" if session else b"" async def _redirect_to_next_new_user_step( self, auth_provider_id: str, remote_user_id: str, attributes: UserAttributes, client_redirect_url: str, next_step_url: bytes, extra_login_attributes: Optional[JsonDict], ) -> NoReturn: """Creates a UsernameMappingSession and redirects the browser Called if the user mapping provider doesn't return complete information for a new user. Raises a RedirectException which redirects the browser to a specified URL. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. attributes: the user attributes returned by the user mapping provider. client_redirect_url: The redirect URL passed in by the client, which we will eventually redirect back to. next_step_url: The URL to redirect to for the next step of the new user flow. extra_login_attributes: An optional dictionary of extra attributes to be provided to the client in the login response. Raises: RedirectException """ # TODO: If needed, allow using/looking up an existing session here. session_id = random_string(16) now = self._clock.time_msec() session = UsernameMappingSession( auth_provider_id=auth_provider_id, remote_user_id=remote_user_id, display_name=attributes.display_name, emails=attributes.emails, client_redirect_url=client_redirect_url, expiry_time_ms=now + self._MAPPING_SESSION_VALIDITY_PERIOD_MS, extra_login_attributes=extra_login_attributes, # Treat the localpart returned by the user mapping provider as though # it was chosen by the user. If it's None, it must be chosen eventually. chosen_localpart=attributes.localpart, # TODO: Consider letting the user mapping provider specify defaults for # other user-chosen attributes. ) self._username_mapping_sessions[session_id] = session logger.info("Recorded registration session id %s", session_id) # Set the cookie and redirect to the next step e = RedirectException(next_step_url) e.cookies.append( b"%s=%s; path=/" % (USERNAME_MAPPING_SESSION_COOKIE_NAME, session_id.encode("ascii")) ) raise e async def _register_mapped_user( self, attributes: UserAttributes, auth_provider_id: str, remote_user_id: str, user_agent: str, ip_address: str, ) -> str: """Register a new SSO user. This is called once we have successfully mapped the remote user id onto a local user id, one way or another. Args: attributes: user attributes returned by the user mapping provider, including a non-empty localpart. auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. user_agent: The user-agent in the HTTP request (used for potential shadow-banning.) ip_address: The IP address of the requester (used for potential shadow-banning.) Raises: a MappingException if the localpart is invalid. a SynapseError with code 400 and errcode Codes.USER_IN_USE if the localpart is already taken. """ # Since the localpart is provided via a potentially untrusted module, # ensure the MXID is valid before registering. if not attributes.localpart or contains_invalid_mxid_characters( attributes.localpart ): raise MappingException("localpart is invalid: %s" % (attributes.localpart,)) logger.debug("Mapped SSO user to local part %s", attributes.localpart) registered_user_id = await self._registration_handler.register_user( localpart=attributes.localpart, default_display_name=attributes.display_name, bind_emails=attributes.emails, user_agent_ips=[(user_agent, ip_address)], auth_provider_id=auth_provider_id, ) await self._store.record_user_external_id( auth_provider_id, remote_user_id, registered_user_id ) return registered_user_id async def complete_sso_ui_auth_request( self, auth_provider_id: str, remote_user_id: str, ui_auth_session_id: str, request: Request, ) -> None: """ Given an SSO ID, retrieve the user ID for it and complete UIA. Note that this requires that the user is mapped in the "user_external_ids" table. This will be the case if they have ever logged in via SAML or OIDC in recentish synapse versions, but may not be for older users. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. ui_auth_session_id: The ID of the user-interactive auth session. request: The request to complete. """ user_id = await self.get_sso_user_by_remote_user_id( auth_provider_id, remote_user_id, ) user_id_to_verify: str = await self._auth_handler.get_session_data( ui_auth_session_id, UIAuthSessionDataConstants.REQUEST_USER_ID ) if not user_id: logger.warning( "Remote user %s/%s has not previously logged in here: UIA will fail", auth_provider_id, remote_user_id, ) elif user_id != user_id_to_verify: logger.warning( "Remote user %s/%s mapped onto incorrect user %s: UIA will fail", auth_provider_id, remote_user_id, user_id, ) else: # success! # Mark the stage of the authentication as successful. await self._store.mark_ui_auth_stage_complete( ui_auth_session_id, LoginType.SSO, user_id ) # Render the HTML confirmation page and return. html = self._sso_auth_success_template respond_with_html(request, 200, html) return # the user_id didn't match: mark the stage of the authentication as unsuccessful await self._store.mark_ui_auth_stage_complete( ui_auth_session_id, LoginType.SSO, "" ) # render an error page. html = self._bad_user_template.render( server_name=self._server_name, user_id_to_verify=user_id_to_verify, ) respond_with_html(request, 200, html) def get_mapping_session(self, session_id: str) -> UsernameMappingSession: """Look up the given username mapping session If it is not found, raises a SynapseError with an http code of 400 Args: session_id: session to look up Returns: active mapping session Raises: SynapseError if the session is not found/has expired """ self._expire_old_sessions() session = self._username_mapping_sessions.get(session_id) if session: return session logger.info("Couldn't find session id %s", session_id) raise SynapseError(400, "unknown session") async def check_username_availability( self, localpart: str, session_id: str, ) -> bool: """Handle an "is username available" callback check Args: localpart: desired localpart session_id: the session id for the username picker Returns: True if the username is available Raises: SynapseError if the localpart is invalid or the session is unknown """ # make sure that there is a valid mapping session, to stop people dictionary- # scanning for accounts self.get_mapping_session(session_id) logger.info( "[session %s] Checking for availability of username %s", session_id, localpart, ) if contains_invalid_mxid_characters(localpart): raise SynapseError(400, "localpart is invalid: %s" % (localpart,)) user_id = UserID(localpart, self._server_name).to_string() user_infos = await self._store.get_users_by_id_case_insensitive(user_id) logger.info("[session %s] users: %s", session_id, user_infos) return not user_infos async def handle_submit_username_request( self, request: SynapseRequest, session_id: str, localpart: str, use_display_name: bool, emails_to_use: Iterable[str], ) -> None: """Handle a request to the username-picker 'submit' endpoint Will serve an HTTP response to the request. Args: request: HTTP request localpart: localpart requested by the user session_id: ID of the username mapping session, extracted from a cookie use_display_name: whether the user wants to use the suggested display name emails_to_use: emails that the user would like to use """ try: session = self.get_mapping_session(session_id) except SynapseError as e: self.render_error(request, "bad_session", e.msg, code=e.code) return # update the session with the user's choices session.chosen_localpart = localpart session.use_display_name = use_display_name emails_from_idp = set(session.emails) filtered_emails: Set[str] = set() # we iterate through the list rather than just building a set conjunction, so # that we can log attempts to use unknown addresses for email in emails_to_use: if email in emails_from_idp: filtered_emails.add(email) else: logger.warning( "[session %s] ignoring user request to use unknown email address %r", session_id, email, ) session.emails_to_use = filtered_emails respond_with_redirect( request, self._get_url_for_next_new_user_step(session=session) ) async def handle_terms_accepted( self, request: Request, session_id: str, terms_version: str ) -> None: """Handle a request to the new-user 'consent' endpoint Will serve an HTTP response to the request. Args: request: HTTP request session_id: ID of the username mapping session, extracted from a cookie terms_version: the version of the terms which the user viewed and consented to """ logger.info( "[session %s] User consented to terms version %s", session_id, terms_version, ) try: session = self.get_mapping_session(session_id) except SynapseError as e: self.render_error(request, "bad_session", e.msg, code=e.code) return session.terms_accepted_version = terms_version respond_with_redirect( request, self._get_url_for_next_new_user_step(session=session) ) async def register_sso_user(self, request: Request, session_id: str) -> None: """Called once we have all the info we need to register a new user. Does so and serves an HTTP response Args: request: HTTP request session_id: ID of the username mapping session, extracted from a cookie """ try: session = self.get_mapping_session(session_id) except SynapseError as e: self.render_error(request, "bad_session", e.msg, code=e.code) return logger.info( "[session %s] Registering localpart %s", session_id, session.chosen_localpart, ) attributes = UserAttributes( localpart=session.chosen_localpart, emails=session.emails_to_use, ) if session.use_display_name: attributes.display_name = session.display_name # the following will raise a 400 error if the username has been taken in the # meantime. user_id = await self._register_mapped_user( attributes, session.auth_provider_id, session.remote_user_id, get_request_user_agent(request), request.getClientIP(), ) logger.info( "[session %s] Registered userid %s with attributes %s", session_id, user_id, attributes, ) # delete the mapping session and the cookie del self._username_mapping_sessions[session_id] # delete the cookie request.addCookie( USERNAME_MAPPING_SESSION_COOKIE_NAME, b"", expires=b"Thu, 01 Jan 1970 00:00:00 GMT", path=b"/", ) auth_result = {} if session.terms_accepted_version: # TODO: make this less awful. auth_result[LoginType.TERMS] = True await self._registration_handler.post_registration_actions( user_id, auth_result, access_token=None ) await self._auth_handler.complete_sso_login( user_id, session.auth_provider_id, request, session.client_redirect_url, session.extra_login_attributes, new_user=True, ) def _expire_old_sessions(self) -> None: to_expire = [] now = int(self._clock.time_msec()) for session_id, session in self._username_mapping_sessions.items(): if session.expiry_time_ms <= now: to_expire.append(session_id) for session_id in to_expire: logger.info("Expiring mapping session %s", session_id) del self._username_mapping_sessions[session_id] def check_required_attributes( self, request: SynapseRequest, attributes: Mapping[str, List[Any]], attribute_requirements: Iterable[SsoAttributeRequirement], ) -> bool: """ Confirm that the required attributes were present in the SSO response. If all requirements are met, this will return True. If any requirement is not met, then the request will be finalized by showing an error page to the user and False will be returned. Args: request: The request to (potentially) respond to. attributes: The attributes from the SSO IdP. attribute_requirements: The requirements that attributes must meet. Returns: True if all requirements are met, False if any attribute fails to meet the requirement. """ # Ensure that the attributes of the logged in user meet the required # attributes. for requirement in attribute_requirements: if not _check_attribute_requirement(attributes, requirement): self.render_error( request, "unauthorised", "You are not authorised to log in here." ) return False return True def get_username_mapping_session_cookie_from_request(request: IRequest) -> str: """Extract the session ID from the cookie Raises a SynapseError if the cookie isn't found """ session_id = request.getCookie(USERNAME_MAPPING_SESSION_COOKIE_NAME) if not session_id: raise SynapseError(code=400, msg="missing session_id") return session_id.decode("ascii", errors="replace") def _check_attribute_requirement( attributes: Mapping[str, List[Any]], req: SsoAttributeRequirement ) -> bool: """Check if SSO attributes meet the proper requirements. Args: attributes: A mapping of attributes to an iterable of one or more values. requirement: The configured requirement to check. Returns: True if the required attribute was found and had a proper value. """ if req.attribute not in attributes: logger.info("SSO attribute missing: %s", req.attribute) return False # If the requirement is None, the attribute existing is enough. if req.value is None: return True values = attributes[req.attribute] if req.value in values: return True logger.info( "SSO attribute %s did not match required value '%s' (was '%s')", req.attribute, req.value, values, ) return False synapse-1.53.0/synapse/handlers/state_deltas.py000066400000000000000000000045251420514467300216060ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from enum import Enum, auto from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class MatchChange(Enum): no_change = auto() now_true = auto() now_false = auto() class StateDeltasHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() async def _get_key_change( self, prev_event_id: Optional[str], event_id: Optional[str], key_name: str, public_value: str, ) -> MatchChange: """Given two events check if the `key_name` field in content changed from not matching `public_value` to doing so. For example, check if `history_visibility` (`key_name`) changed from `shared` to `world_readable` (`public_value`). """ prev_event = None event = None if prev_event_id: prev_event = await self.store.get_event(prev_event_id, allow_none=True) if event_id: event = await self.store.get_event(event_id, allow_none=True) if not event and not prev_event: logger.debug("Neither event exists: %r %r", prev_event_id, event_id) return MatchChange.no_change prev_value = None value = None if prev_event: prev_value = prev_event.content.get(key_name) if event: value = event.content.get(key_name) logger.debug("prev_value: %r -> value: %r", prev_value, value) if value == public_value and prev_value != public_value: return MatchChange.now_true elif value != public_value and prev_value == public_value: return MatchChange.now_false else: return MatchChange.no_change synapse-1.53.0/synapse/handlers/stats.py000066400000000000000000000304231420514467300202640ustar00rootroot00000000000000# Copyright 2018-2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Sorunome # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from collections import Counter from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Tuple from typing_extensions import Counter as CounterType from synapse.api.constants import EventContentFields, EventTypes, Membership from synapse.metrics import event_processing_positions from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class StatsHandler: """Handles keeping the *_stats tables updated with a simple time-series of information about the users, rooms and media on the server, such that admins have some idea of who is consuming their resources. Heavily derived from UserDirectoryHandler """ def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self.state = hs.get_state_handler() self.server_name = hs.hostname self.clock = hs.get_clock() self.notifier = hs.get_notifier() self.is_mine_id = hs.is_mine_id self.stats_enabled = hs.config.stats.stats_enabled # The current position in the current_state_delta stream self.pos: Optional[int] = None # Guard to ensure we only process deltas one at a time self._is_processing = False if self.stats_enabled and hs.config.worker.run_background_tasks: self.notifier.add_replication_callback(self.notify_new_event) # We kick this off so that we don't have to wait for a change before # we start populating stats self.clock.call_later(0, self.notify_new_event) def notify_new_event(self) -> None: """Called when there may be more deltas to process""" if not self.stats_enabled or self._is_processing: return self._is_processing = True async def process() -> None: try: await self._unsafe_process() finally: self._is_processing = False run_as_background_process("stats.notify_new_event", process) async def _unsafe_process(self) -> None: # If self.pos is None then means we haven't fetched it from DB if self.pos is None: self.pos = await self.store.get_stats_positions() room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos > room_max_stream_ordering: # apparently, we've processed more events than exist in the database! # this can happen if events are removed with history purge or similar. logger.warning( "Event stream ordering appears to have gone backwards (%i -> %i): " "rewinding stats processor", self.pos, room_max_stream_ordering, ) self.pos = room_max_stream_ordering # Loop round handling deltas until we're up to date while True: # Be sure to read the max stream_ordering *before* checking if there are any outstanding # deltas, since there is otherwise a chance that we could miss updates which arrive # after we check the deltas. room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos == room_max_stream_ordering: break logger.debug( "Processing room stats %s->%s", self.pos, room_max_stream_ordering ) max_pos, deltas = await self.store.get_current_state_deltas( self.pos, room_max_stream_ordering ) if deltas: logger.debug("Handling %d state deltas", len(deltas)) room_deltas, user_deltas = await self._handle_deltas(deltas) else: room_deltas = {} user_deltas = {} logger.debug("room_deltas: %s", room_deltas) logger.debug("user_deltas: %s", user_deltas) # Always call this so that we update the stats position. await self.store.bulk_update_stats_delta( self.clock.time_msec(), updates={"room": room_deltas, "user": user_deltas}, stream_id=max_pos, ) logger.debug("Handled room stats to %s -> %s", self.pos, max_pos) event_processing_positions.labels("stats").set(max_pos) self.pos = max_pos async def _handle_deltas( self, deltas: Iterable[JsonDict] ) -> Tuple[Dict[str, CounterType[str]], Dict[str, CounterType[str]]]: """Called with the state deltas to process Returns: Two dicts: the room deltas and the user deltas, mapping from room/user ID to changes in the various fields. """ room_to_stats_deltas: Dict[str, CounterType[str]] = {} user_to_stats_deltas: Dict[str, CounterType[str]] = {} room_to_state_updates: Dict[str, Dict[str, Any]] = {} for delta in deltas: typ = delta["type"] state_key = delta["state_key"] room_id = delta["room_id"] event_id = delta["event_id"] stream_id = delta["stream_id"] prev_event_id = delta["prev_event_id"] logger.debug("Handling: %r, %r %r, %s", room_id, typ, state_key, event_id) token = await self.store.get_earliest_token_for_stats("room", room_id) # If the earliest token to begin from is larger than our current # stream ID, skip processing this delta. if token is not None and token >= stream_id: logger.debug( "Ignoring: %s as earlier than this room's initial ingestion event", event_id, ) continue if event_id is None and prev_event_id is None: logger.error( "event ID is None and so is the previous event ID. stream_id: %s", stream_id, ) continue event_content: JsonDict = {} if event_id is not None: event = await self.store.get_event(event_id, allow_none=True) if event: event_content = event.content or {} # All the values in this dict are deltas (RELATIVE changes) room_stats_delta = room_to_stats_deltas.setdefault(room_id, Counter()) room_state = room_to_state_updates.setdefault(room_id, {}) if prev_event_id is None: # this state event doesn't overwrite another, # so it is a new effective/current state event room_stats_delta["current_state_events"] += 1 if typ == EventTypes.Member: # we could use StateDeltasHandler._get_key_change here but it's # a bit inefficient given we're not testing for a specific # result; might as well just grab the prev_membership and # membership strings and compare them. # We take None rather than leave as a previous membership # in the absence of a previous event because we do not want to # reduce the leave count when a new-to-the-room user joins. prev_membership = None if prev_event_id is not None: prev_event = await self.store.get_event( prev_event_id, allow_none=True ) if prev_event: prev_event_content = prev_event.content prev_membership = prev_event_content.get( "membership", Membership.LEAVE ) membership = event_content.get("membership", Membership.LEAVE) if prev_membership is None: logger.debug("No previous membership for this user.") elif membership == prev_membership: pass # noop elif prev_membership == Membership.JOIN: room_stats_delta["joined_members"] -= 1 elif prev_membership == Membership.INVITE: room_stats_delta["invited_members"] -= 1 elif prev_membership == Membership.LEAVE: room_stats_delta["left_members"] -= 1 elif prev_membership == Membership.BAN: room_stats_delta["banned_members"] -= 1 elif prev_membership == Membership.KNOCK: room_stats_delta["knocked_members"] -= 1 else: raise ValueError( "%r is not a valid prev_membership" % (prev_membership,) ) if membership == prev_membership: pass # noop elif membership == Membership.JOIN: room_stats_delta["joined_members"] += 1 elif membership == Membership.INVITE: room_stats_delta["invited_members"] += 1 elif membership == Membership.LEAVE: room_stats_delta["left_members"] += 1 elif membership == Membership.BAN: room_stats_delta["banned_members"] += 1 elif membership == Membership.KNOCK: room_stats_delta["knocked_members"] += 1 else: raise ValueError("%r is not a valid membership" % (membership,)) user_id = state_key if self.is_mine_id(user_id): # this accounts for transitions like leave → ban and so on. has_changed_joinedness = (prev_membership == Membership.JOIN) != ( membership == Membership.JOIN ) if has_changed_joinedness: membership_delta = +1 if membership == Membership.JOIN else -1 user_to_stats_deltas.setdefault(user_id, Counter())[ "joined_rooms" ] += membership_delta room_stats_delta["local_users_in_room"] += membership_delta elif typ == EventTypes.Create: room_state["is_federatable"] = ( event_content.get(EventContentFields.FEDERATE, True) is True ) elif typ == EventTypes.JoinRules: room_state["join_rules"] = event_content.get("join_rule") elif typ == EventTypes.RoomHistoryVisibility: room_state["history_visibility"] = event_content.get( "history_visibility" ) elif typ == EventTypes.RoomEncryption: room_state["encryption"] = event_content.get("algorithm") elif typ == EventTypes.Name: room_state["name"] = event_content.get("name") elif typ == EventTypes.Topic: room_state["topic"] = event_content.get("topic") elif typ == EventTypes.RoomAvatar: room_state["avatar"] = event_content.get("url") elif typ == EventTypes.CanonicalAlias: room_state["canonical_alias"] = event_content.get("alias") elif typ == EventTypes.GuestAccess: room_state["guest_access"] = event_content.get( EventContentFields.GUEST_ACCESS ) for room_id, state in room_to_state_updates.items(): logger.debug("Updating room_stats_state for %s: %s", room_id, state) await self.store.update_room_state(room_id, state) return room_to_stats_deltas, user_to_stats_deltas synapse-1.53.0/synapse/handlers/sync.py000066400000000000000000002747011420514467300201130ustar00rootroot00000000000000# Copyright 2015-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging from typing import ( TYPE_CHECKING, Any, Collection, Dict, FrozenSet, List, Optional, Set, Tuple, ) import attr from prometheus_client import Counter from synapse.api.constants import AccountDataTypes, EventTypes, Membership, ReceiptTypes from synapse.api.filtering import FilterCollection from synapse.api.presence import UserPresenceState from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.events import EventBase from synapse.logging.context import current_context from synapse.logging.opentracing import SynapseTags, log_kv, set_tag, start_active_span from synapse.push.clientformat import format_push_rules_for_user from synapse.storage.databases.main.event_push_actions import NotifCounts from synapse.storage.databases.main.relations import BundledAggregations from synapse.storage.roommember import MemberSummary from synapse.storage.state import StateFilter from synapse.types import ( JsonDict, MutableStateMap, Requester, RoomStreamToken, StateMap, StreamToken, UserID, ) from synapse.util.async_helpers import concurrently_execute from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.caches.lrucache import LruCache from synapse.util.caches.response_cache import ResponseCache, ResponseCacheContext from synapse.util.metrics import Measure, measure_func from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Counts the number of times we returned a non-empty sync. `type` is one of # "initial_sync", "full_state_sync" or "incremental_sync", `lazy_loaded` is # "true" or "false" depending on if the request asked for lazy loaded members or # not. non_empty_sync_counter = Counter( "synapse_handlers_sync_nonempty_total", "Count of non empty sync responses. type is initial_sync/full_state_sync" "/incremental_sync. lazy_loaded indicates if lazy loaded members were " "enabled for that request.", ["type", "lazy_loaded"], ) # Store the cache that tracks which lazy-loaded members have been sent to a given # client for no more than 30 minutes. LAZY_LOADED_MEMBERS_CACHE_MAX_AGE = 30 * 60 * 1000 # Remember the last 100 members we sent to a client for the purposes of # avoiding redundantly sending the same lazy-loaded members to the client LAZY_LOADED_MEMBERS_CACHE_MAX_SIZE = 100 SyncRequestKey = Tuple[Any, ...] @attr.s(slots=True, frozen=True, auto_attribs=True) class SyncConfig: user: UserID filter_collection: FilterCollection is_guest: bool request_key: SyncRequestKey device_id: Optional[str] @attr.s(slots=True, frozen=True, auto_attribs=True) class TimelineBatch: prev_batch: StreamToken events: List[EventBase] limited: bool # A mapping of event ID to the bundled aggregations for the above events. # This is only calculated if limited is true. bundled_aggregations: Optional[Dict[str, BundledAggregations]] = None def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if room needs to be part of the sync result. """ return bool(self.events) # We can't freeze this class, because we need to update it after it's instantiated to # update its unread count. This is because we calculate the unread count for a room only # if there are updates for it, which we check after the instance has been created. # This should not be a big deal because we update the notification counts afterwards as # well anyway. @attr.s(slots=True, auto_attribs=True) class JoinedSyncResult: room_id: str timeline: TimelineBatch state: StateMap[EventBase] ephemeral: List[JsonDict] account_data: List[JsonDict] unread_notifications: JsonDict summary: Optional[JsonDict] unread_count: int def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if room needs to be part of the sync result. """ return bool( self.timeline or self.state or self.ephemeral or self.account_data # nb the notification count does not, er, count: if there's nothing # else in the result, we don't need to send it. ) @attr.s(slots=True, frozen=True, auto_attribs=True) class ArchivedSyncResult: room_id: str timeline: TimelineBatch state: StateMap[EventBase] account_data: List[JsonDict] def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if room needs to be part of the sync result. """ return bool(self.timeline or self.state or self.account_data) @attr.s(slots=True, frozen=True, auto_attribs=True) class InvitedSyncResult: room_id: str invite: EventBase def __bool__(self) -> bool: """Invited rooms should always be reported to the client""" return True @attr.s(slots=True, frozen=True, auto_attribs=True) class KnockedSyncResult: room_id: str knock: EventBase def __bool__(self) -> bool: """Knocked rooms should always be reported to the client""" return True @attr.s(slots=True, frozen=True, auto_attribs=True) class GroupsSyncResult: join: JsonDict invite: JsonDict leave: JsonDict def __bool__(self) -> bool: return bool(self.join or self.invite or self.leave) @attr.s(slots=True, frozen=True, auto_attribs=True) class DeviceLists: """ Attributes: changed: List of user_ids whose devices may have changed left: List of user_ids whose devices we no longer track """ changed: Collection[str] left: Collection[str] def __bool__(self) -> bool: return bool(self.changed or self.left) @attr.s(slots=True, auto_attribs=True) class _RoomChanges: """The set of room entries to include in the sync, plus the set of joined and left room IDs since last sync. """ room_entries: List["RoomSyncResultBuilder"] invited: List[InvitedSyncResult] knocked: List[KnockedSyncResult] newly_joined_rooms: List[str] newly_left_rooms: List[str] @attr.s(slots=True, frozen=True, auto_attribs=True) class SyncResult: """ Attributes: next_batch: Token for the next sync presence: List of presence events for the user. account_data: List of account_data events for the user. joined: JoinedSyncResult for each joined room. invited: InvitedSyncResult for each invited room. knocked: KnockedSyncResult for each knocked on room. archived: ArchivedSyncResult for each archived room. to_device: List of direct messages for the device. device_lists: List of user_ids whose devices have changed device_one_time_keys_count: Dict of algorithm to count for one time keys for this device device_unused_fallback_key_types: List of key types that have an unused fallback key groups: Group updates, if any """ next_batch: StreamToken presence: List[UserPresenceState] account_data: List[JsonDict] joined: List[JoinedSyncResult] invited: List[InvitedSyncResult] knocked: List[KnockedSyncResult] archived: List[ArchivedSyncResult] to_device: List[JsonDict] device_lists: DeviceLists device_one_time_keys_count: JsonDict device_unused_fallback_key_types: List[str] groups: Optional[GroupsSyncResult] def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if the notifier needs to wait for more events when polling for events. """ return bool( self.presence or self.joined or self.invited or self.knocked or self.archived or self.account_data or self.to_device or self.device_lists or self.groups ) class SyncHandler: def __init__(self, hs: "HomeServer"): self.hs_config = hs.config self.store = hs.get_datastore() self.notifier = hs.get_notifier() self.presence_handler = hs.get_presence_handler() self.event_sources = hs.get_event_sources() self.clock = hs.get_clock() self.state = hs.get_state_handler() self.auth = hs.get_auth() self.storage = hs.get_storage() self.state_store = self.storage.state # TODO: flush cache entries on subsequent sync request. # Once we get the next /sync request (ie, one with the same access token # that sets 'since' to 'next_batch'), we know that device won't need a # cached result any more, and we could flush the entry from the cache to save # memory. self.response_cache: ResponseCache[SyncRequestKey] = ResponseCache( hs.get_clock(), "sync", timeout_ms=hs.config.caches.sync_response_cache_duration, ) # ExpiringCache((User, Device)) -> LruCache(user_id => event_id) self.lazy_loaded_members_cache: ExpiringCache[ Tuple[str, Optional[str]], LruCache[str, str] ] = ExpiringCache( "lazy_loaded_members_cache", self.clock, max_len=0, expiry_ms=LAZY_LOADED_MEMBERS_CACHE_MAX_AGE, ) async def wait_for_sync_for_user( self, requester: Requester, sync_config: SyncConfig, since_token: Optional[StreamToken] = None, timeout: int = 0, full_state: bool = False, ) -> SyncResult: """Get the sync for a client if we have new data for it now. Otherwise wait for new data to arrive on the server. If the timeout expires, then return an empty sync result. """ # If the user is not part of the mau group, then check that limits have # not been exceeded (if not part of the group by this point, almost certain # auth_blocking will occur) user_id = sync_config.user.to_string() await self.auth.check_auth_blocking(requester=requester) res = await self.response_cache.wrap( sync_config.request_key, self._wait_for_sync_for_user, sync_config, since_token, timeout, full_state, cache_context=True, ) logger.debug("Returning sync response for %s", user_id) return res async def _wait_for_sync_for_user( self, sync_config: SyncConfig, since_token: Optional[StreamToken], timeout: int, full_state: bool, cache_context: ResponseCacheContext[SyncRequestKey], ) -> SyncResult: """The start of the machinery that produces a /sync response. See https://spec.matrix.org/v1.1/client-server-api/#syncing for full details. This method does high-level bookkeeping: - tracking the kind of sync in the logging context - deleting any to_device messages whose delivery has been acknowledged. - deciding if we should dispatch an instant or delayed response - marking the sync as being lazily loaded, if appropriate Computing the body of the response begins in the next method, `current_sync_for_user`. """ if since_token is None: sync_type = "initial_sync" elif full_state: sync_type = "full_state_sync" else: sync_type = "incremental_sync" context = current_context() if context: context.tag = sync_type # if we have a since token, delete any to-device messages before that token # (since we now know that the device has received them) if since_token is not None: since_stream_id = since_token.to_device_key deleted = await self.store.delete_messages_for_device( sync_config.user.to_string(), sync_config.device_id, since_stream_id ) logger.debug( "Deleted %d to-device messages up to %d", deleted, since_stream_id ) if timeout == 0 or since_token is None or full_state: # we are going to return immediately, so don't bother calling # notifier.wait_for_events. result: SyncResult = await self.current_sync_for_user( sync_config, since_token, full_state=full_state ) else: # Otherwise, we wait for something to happen and report it to the user. async def current_sync_callback( before_token: StreamToken, after_token: StreamToken ) -> SyncResult: return await self.current_sync_for_user(sync_config, since_token) result = await self.notifier.wait_for_events( sync_config.user.to_string(), timeout, current_sync_callback, from_token=since_token, ) # if nothing has happened in any of the users' rooms since /sync was called, # the resultant next_batch will be the same as since_token (since the result # is generated when wait_for_events is first called, and not regenerated # when wait_for_events times out). # # If that happens, we mustn't cache it, so that when the client comes back # with the same cache token, we don't immediately return the same empty # result, causing a tightloop. (#8518) if result.next_batch == since_token: cache_context.should_cache = False if result: if sync_config.filter_collection.lazy_load_members(): lazy_loaded = "true" else: lazy_loaded = "false" non_empty_sync_counter.labels(sync_type, lazy_loaded).inc() return result async def current_sync_for_user( self, sync_config: SyncConfig, since_token: Optional[StreamToken] = None, full_state: bool = False, ) -> SyncResult: """Generates the response body of a sync result, represented as a SyncResult. This is a wrapper around `generate_sync_result` which starts an open tracing span to track the sync. See `generate_sync_result` for the next part of your indoctrination. """ with start_active_span("sync.current_sync_for_user"): log_kv({"since_token": since_token}) sync_result = await self.generate_sync_result( sync_config, since_token, full_state ) set_tag(SynapseTags.SYNC_RESULT, bool(sync_result)) return sync_result async def push_rules_for_user(self, user: UserID) -> JsonDict: user_id = user.to_string() rules = await self.store.get_push_rules_for_user(user_id) rules = format_push_rules_for_user(user, rules) return rules async def ephemeral_by_room( self, sync_result_builder: "SyncResultBuilder", now_token: StreamToken, since_token: Optional[StreamToken] = None, ) -> Tuple[StreamToken, Dict[str, List[JsonDict]]]: """Get the ephemeral events for each room the user is in Args: sync_result_builder now_token: Where the server is currently up to. since_token: Where the server was when the client last synced. Returns: A tuple of the now StreamToken, updated to reflect the which typing events are included, and a dict mapping from room_id to a list of typing events for that room. """ sync_config = sync_result_builder.sync_config with Measure(self.clock, "ephemeral_by_room"): typing_key = since_token.typing_key if since_token else 0 room_ids = sync_result_builder.joined_room_ids typing_source = self.event_sources.sources.typing typing, typing_key = await typing_source.get_new_events( user=sync_config.user, from_key=typing_key, limit=sync_config.filter_collection.ephemeral_limit(), room_ids=room_ids, is_guest=sync_config.is_guest, ) now_token = now_token.copy_and_replace("typing_key", typing_key) ephemeral_by_room: JsonDict = {} for event in typing: # we want to exclude the room_id from the event, but modifying the # result returned by the event source is poor form (it might cache # the object) room_id = event["room_id"] event_copy = {k: v for (k, v) in event.items() if k != "room_id"} ephemeral_by_room.setdefault(room_id, []).append(event_copy) receipt_key = since_token.receipt_key if since_token else 0 receipt_source = self.event_sources.sources.receipt receipts, receipt_key = await receipt_source.get_new_events( user=sync_config.user, from_key=receipt_key, limit=sync_config.filter_collection.ephemeral_limit(), room_ids=room_ids, is_guest=sync_config.is_guest, ) now_token = now_token.copy_and_replace("receipt_key", receipt_key) for event in receipts: room_id = event["room_id"] # exclude room id, as above event_copy = {k: v for (k, v) in event.items() if k != "room_id"} ephemeral_by_room.setdefault(room_id, []).append(event_copy) return now_token, ephemeral_by_room async def _load_filtered_recents( self, room_id: str, sync_config: SyncConfig, now_token: StreamToken, since_token: Optional[StreamToken] = None, potential_recents: Optional[List[EventBase]] = None, newly_joined_room: bool = False, ) -> TimelineBatch: with Measure(self.clock, "load_filtered_recents"): timeline_limit = sync_config.filter_collection.timeline_limit() block_all_timeline = ( sync_config.filter_collection.blocks_all_room_timeline() ) if ( potential_recents is None or newly_joined_room or timeline_limit < len(potential_recents) ): limited = True else: limited = False log_kv({"limited": limited}) if potential_recents: recents = await sync_config.filter_collection.filter_room_timeline( potential_recents ) log_kv({"recents_after_sync_filtering": len(recents)}) # We check if there are any state events, if there are then we pass # all current state events to the filter_events function. This is to # ensure that we always include current state in the timeline current_state_ids: FrozenSet[str] = frozenset() if any(e.is_state() for e in recents): current_state_ids_map = await self.store.get_current_state_ids( room_id ) current_state_ids = frozenset(current_state_ids_map.values()) recents = await filter_events_for_client( self.storage, sync_config.user.to_string(), recents, always_include_ids=current_state_ids, ) log_kv({"recents_after_visibility_filtering": len(recents)}) else: recents = [] if not limited or block_all_timeline: prev_batch_token = now_token if recents: room_key = recents[0].internal_metadata.before prev_batch_token = now_token.copy_and_replace("room_key", room_key) return TimelineBatch( events=recents, prev_batch=prev_batch_token, limited=False ) filtering_factor = 2 load_limit = max(timeline_limit * filtering_factor, 10) max_repeat = 5 # Only try a few times per room, otherwise room_key = now_token.room_key end_key = room_key since_key = None if since_token and not newly_joined_room: since_key = since_token.room_key while limited and len(recents) < timeline_limit and max_repeat: # If we have a since_key then we are trying to get any events # that have happened since `since_key` up to `end_key`, so we # can just use `get_room_events_stream_for_room`. # Otherwise, we want to return the last N events in the room # in topological ordering. if since_key: events, end_key = await self.store.get_room_events_stream_for_room( room_id, limit=load_limit + 1, from_key=since_key, to_key=end_key, ) else: events, end_key = await self.store.get_recent_events_for_room( room_id, limit=load_limit + 1, end_token=end_key ) log_kv({"loaded_recents": len(events)}) loaded_recents = ( await sync_config.filter_collection.filter_room_timeline(events) ) log_kv({"loaded_recents_after_sync_filtering": len(loaded_recents)}) # We check if there are any state events, if there are then we pass # all current state events to the filter_events function. This is to # ensure that we always include current state in the timeline current_state_ids = frozenset() if any(e.is_state() for e in loaded_recents): current_state_ids_map = await self.store.get_current_state_ids( room_id ) current_state_ids = frozenset(current_state_ids_map.values()) loaded_recents = await filter_events_for_client( self.storage, sync_config.user.to_string(), loaded_recents, always_include_ids=current_state_ids, ) log_kv({"loaded_recents_after_client_filtering": len(loaded_recents)}) loaded_recents.extend(recents) recents = loaded_recents if len(events) <= load_limit: limited = False break max_repeat -= 1 if len(recents) > timeline_limit: limited = True recents = recents[-timeline_limit:] room_key = recents[0].internal_metadata.before prev_batch_token = now_token.copy_and_replace("room_key", room_key) # Don't bother to bundle aggregations if the timeline is unlimited, # as clients will have all the necessary information. bundled_aggregations = None if limited or newly_joined_room: bundled_aggregations = await self.store.get_bundled_aggregations( recents, sync_config.user.to_string() ) return TimelineBatch( events=recents, prev_batch=prev_batch_token, limited=limited or newly_joined_room, bundled_aggregations=bundled_aggregations, ) async def get_state_after_event( self, event: EventBase, state_filter: Optional[StateFilter] = None ) -> StateMap[str]: """ Get the room state after the given event Args: event: event of interest state_filter: The state filter used to fetch state from the database. """ state_ids = await self.state_store.get_state_ids_for_event( event.event_id, state_filter=state_filter or StateFilter.all() ) if event.is_state(): state_ids = dict(state_ids) state_ids[(event.type, event.state_key)] = event.event_id return state_ids async def get_state_at( self, room_id: str, stream_position: StreamToken, state_filter: Optional[StateFilter] = None, ) -> StateMap[str]: """Get the room state at a particular stream position Args: room_id: room for which to get state stream_position: point at which to get state state_filter: The state filter used to fetch state from the database. """ # FIXME this claims to get the state at a stream position, but # get_recent_events_for_room operates by topo ordering. This therefore # does not reliably give you the state at the given stream position. # (https://github.com/matrix-org/synapse/issues/3305) last_events, _ = await self.store.get_recent_events_for_room( room_id, end_token=stream_position.room_key, limit=1 ) if last_events: last_event = last_events[-1] state = await self.get_state_after_event( last_event, state_filter=state_filter or StateFilter.all() ) else: # no events in this room - so presumably no state state = {} return state async def compute_summary( self, room_id: str, sync_config: SyncConfig, batch: TimelineBatch, state: MutableStateMap[EventBase], now_token: StreamToken, ) -> Optional[JsonDict]: """Works out a room summary block for this room, summarising the number of joined members in the room, and providing the 'hero' members if the room has no name so clients can consistently name rooms. Also adds state events to 'state' if needed to describe the heroes. Args room_id sync_config batch: The timeline batch for the room that will be sent to the user. state: State as returned by compute_state_delta now_token: Token of the end of the current batch. """ # FIXME: we could/should get this from room_stats when matthew/stats lands # FIXME: this promulgates https://github.com/matrix-org/synapse/issues/3305 last_events, _ = await self.store.get_recent_event_ids_for_room( room_id, end_token=now_token.room_key, limit=1 ) if not last_events: return None last_event = last_events[-1] state_ids = await self.state_store.get_state_ids_for_event( last_event.event_id, state_filter=StateFilter.from_types( [(EventTypes.Name, ""), (EventTypes.CanonicalAlias, "")] ), ) # this is heavily cached, thus: fast. details = await self.store.get_room_summary(room_id) name_id = state_ids.get((EventTypes.Name, "")) canonical_alias_id = state_ids.get((EventTypes.CanonicalAlias, "")) summary: JsonDict = {} empty_ms = MemberSummary([], 0) # TODO: only send these when they change. summary["m.joined_member_count"] = details.get(Membership.JOIN, empty_ms).count summary["m.invited_member_count"] = details.get( Membership.INVITE, empty_ms ).count # if the room has a name or canonical_alias set, we can skip # calculating heroes. Empty strings are falsey, so we check # for the "name" value and default to an empty string. if name_id: name = await self.store.get_event(name_id, allow_none=True) if name and name.content.get("name"): return summary if canonical_alias_id: canonical_alias = await self.store.get_event( canonical_alias_id, allow_none=True ) if canonical_alias and canonical_alias.content.get("alias"): return summary me = sync_config.user.to_string() joined_user_ids = [ r[0] for r in details.get(Membership.JOIN, empty_ms).members if r[0] != me ] invited_user_ids = [ r[0] for r in details.get(Membership.INVITE, empty_ms).members if r[0] != me ] gone_user_ids = [ r[0] for r in details.get(Membership.LEAVE, empty_ms).members if r[0] != me ] + [r[0] for r in details.get(Membership.BAN, empty_ms).members if r[0] != me] # FIXME: only build up a member_ids list for our heroes member_ids = {} for membership in ( Membership.JOIN, Membership.INVITE, Membership.LEAVE, Membership.BAN, ): for user_id, event_id in details.get(membership, empty_ms).members: member_ids[user_id] = event_id # FIXME: order by stream ordering rather than as returned by SQL if joined_user_ids or invited_user_ids: summary["m.heroes"] = sorted(joined_user_ids + invited_user_ids)[0:5] else: summary["m.heroes"] = sorted(gone_user_ids)[0:5] if not sync_config.filter_collection.lazy_load_members(): return summary # ensure we send membership events for heroes if needed cache_key = (sync_config.user.to_string(), sync_config.device_id) cache = self.get_lazy_loaded_members_cache(cache_key) # track which members the client should already know about via LL: # Ones which are already in state... existing_members = { user_id for (typ, user_id) in state.keys() if typ == EventTypes.Member } # ...or ones which are in the timeline... for ev in batch.events: if ev.type == EventTypes.Member: existing_members.add(ev.state_key) # ...and then ensure any missing ones get included in state. missing_hero_event_ids = [ member_ids[hero_id] for hero_id in summary["m.heroes"] if ( cache.get(hero_id) != member_ids[hero_id] and hero_id not in existing_members ) ] missing_hero_state = await self.store.get_events(missing_hero_event_ids) for s in missing_hero_state.values(): cache.set(s.state_key, s.event_id) state[(EventTypes.Member, s.state_key)] = s return summary def get_lazy_loaded_members_cache( self, cache_key: Tuple[str, Optional[str]] ) -> LruCache[str, str]: cache: Optional[LruCache[str, str]] = self.lazy_loaded_members_cache.get( cache_key ) if cache is None: logger.debug("creating LruCache for %r", cache_key) cache = LruCache(LAZY_LOADED_MEMBERS_CACHE_MAX_SIZE) self.lazy_loaded_members_cache[cache_key] = cache else: logger.debug("found LruCache for %r", cache_key) return cache async def compute_state_delta( self, room_id: str, batch: TimelineBatch, sync_config: SyncConfig, since_token: Optional[StreamToken], now_token: StreamToken, full_state: bool, ) -> MutableStateMap[EventBase]: """Works out the difference in state between the start of the timeline and the previous sync. Args: room_id: batch: The timeline batch for the room that will be sent to the user. sync_config: since_token: Token of the end of the previous batch. May be None. now_token: Token of the end of the current batch. full_state: Whether to force returning the full state. """ # TODO(mjark) Check if the state events were received by the server # after the previous sync, since we need to include those state # updates even if they occurred logically before the previous event. # TODO(mjark) Check for new redactions in the state events. with Measure(self.clock, "compute_state_delta"): members_to_fetch = None lazy_load_members = sync_config.filter_collection.lazy_load_members() include_redundant_members = ( sync_config.filter_collection.include_redundant_members() ) if lazy_load_members: # We only request state for the members needed to display the # timeline: members_to_fetch = { event.sender # FIXME: we also care about invite targets etc. for event in batch.events } if full_state: # always make sure we LL ourselves so we know we're in the room # (if we are) to fix https://github.com/vector-im/riot-web/issues/7209 # We only need apply this on full state syncs given we disabled # LL for incr syncs in #3840. members_to_fetch.add(sync_config.user.to_string()) state_filter = StateFilter.from_lazy_load_member_list(members_to_fetch) else: state_filter = StateFilter.all() timeline_state = { (event.type, event.state_key): event.event_id for event in batch.events if event.is_state() } if full_state: if batch: current_state_ids = await self.state_store.get_state_ids_for_event( batch.events[-1].event_id, state_filter=state_filter ) state_ids = await self.state_store.get_state_ids_for_event( batch.events[0].event_id, state_filter=state_filter ) else: current_state_ids = await self.get_state_at( room_id, stream_position=now_token, state_filter=state_filter ) state_ids = current_state_ids state_ids = _calculate_state( timeline_contains=timeline_state, timeline_start=state_ids, previous={}, current=current_state_ids, lazy_load_members=lazy_load_members, ) elif batch.limited: if batch: state_at_timeline_start = ( await self.state_store.get_state_ids_for_event( batch.events[0].event_id, state_filter=state_filter ) ) else: # We can get here if the user has ignored the senders of all # the recent events. state_at_timeline_start = await self.get_state_at( room_id, stream_position=now_token, state_filter=state_filter ) # for now, we disable LL for gappy syncs - see # https://github.com/vector-im/riot-web/issues/7211#issuecomment-419976346 # N.B. this slows down incr syncs as we are now processing way # more state in the server than if we were LLing. # # We still have to filter timeline_start to LL entries (above) in order # for _calculate_state's LL logic to work, as we have to include LL # members for timeline senders in case they weren't loaded in the initial # sync. We do this by (counterintuitively) by filtering timeline_start # members to just be ones which were timeline senders, which then ensures # all of the rest get included in the state block (if we need to know # about them). state_filter = StateFilter.all() # If this is an initial sync then full_state should be set, and # that case is handled above. We assert here to ensure that this # is indeed the case. assert since_token is not None state_at_previous_sync = await self.get_state_at( room_id, stream_position=since_token, state_filter=state_filter ) if batch: current_state_ids = await self.state_store.get_state_ids_for_event( batch.events[-1].event_id, state_filter=state_filter ) else: # Its not clear how we get here, but empirically we do # (#5407). Logging has been added elsewhere to try and # figure out where this state comes from. current_state_ids = await self.get_state_at( room_id, stream_position=now_token, state_filter=state_filter ) state_ids = _calculate_state( timeline_contains=timeline_state, timeline_start=state_at_timeline_start, previous=state_at_previous_sync, current=current_state_ids, # we have to include LL members in case LL initial sync missed them lazy_load_members=lazy_load_members, ) else: state_ids = {} if lazy_load_members: if members_to_fetch and batch.events: # We're returning an incremental sync, with no # "gap" since the previous sync, so normally there would be # no state to return. # But we're lazy-loading, so the client might need some more # member events to understand the events in this timeline. # So we fish out all the member events corresponding to the # timeline here, and then dedupe any redundant ones below. state_ids = await self.state_store.get_state_ids_for_event( batch.events[0].event_id, # we only want members! state_filter=StateFilter.from_types( (EventTypes.Member, member) for member in members_to_fetch ), ) if lazy_load_members and not include_redundant_members: cache_key = (sync_config.user.to_string(), sync_config.device_id) cache = self.get_lazy_loaded_members_cache(cache_key) # if it's a new sync sequence, then assume the client has had # amnesia and doesn't want any recent lazy-loaded members # de-duplicated. if since_token is None: logger.debug("clearing LruCache for %r", cache_key) cache.clear() else: # only send members which aren't in our LruCache (either # because they're new to this client or have been pushed out # of the cache) logger.debug("filtering state from %r...", state_ids) state_ids = { t: event_id for t, event_id in state_ids.items() if cache.get(t[1]) != event_id } logger.debug("...to %r", state_ids) # add any member IDs we are about to send into our LruCache for t, event_id in itertools.chain( state_ids.items(), timeline_state.items() ): if t[0] == EventTypes.Member: cache.set(t[1], event_id) state: Dict[str, EventBase] = {} if state_ids: state = await self.store.get_events(list(state_ids.values())) return { (e.type, e.state_key): e for e in await sync_config.filter_collection.filter_room_state( list(state.values()) ) if e.type != EventTypes.Aliases # until MSC2261 or alternative solution } async def unread_notifs_for_room_id( self, room_id: str, sync_config: SyncConfig ) -> NotifCounts: with Measure(self.clock, "unread_notifs_for_room_id"): last_unread_event_id = await self.store.get_last_receipt_event_id_for_user( user_id=sync_config.user.to_string(), room_id=room_id, receipt_type=ReceiptTypes.READ, ) return await self.store.get_unread_event_push_actions_by_room_for_user( room_id, sync_config.user.to_string(), last_unread_event_id ) async def generate_sync_result( self, sync_config: SyncConfig, since_token: Optional[StreamToken] = None, full_state: bool = False, ) -> SyncResult: """Generates the response body of a sync result. This is represented by a `SyncResult` struct, which is built from small pieces using a `SyncResultBuilder`. See also https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3sync the `sync_result_builder` is passed as a mutable ("inout") parameter to various helper functions. These retrieve and process the data which forms the sync body, often writing to the `sync_result_builder` to store their output. At the end, we transfer data from the `sync_result_builder` to a new `SyncResult` instance to signify that the sync calculation is complete. """ # NB: The now_token gets changed by some of the generate_sync_* methods, # this is due to some of the underlying streams not supporting the ability # to query up to a given point. # Always use the `now_token` in `SyncResultBuilder` now_token = self.event_sources.get_current_token() log_kv({"now_token": now_token}) logger.debug( "Calculating sync response for %r between %s and %s", sync_config.user, since_token, now_token, ) user_id = sync_config.user.to_string() app_service = self.store.get_app_service_by_user_id(user_id) if app_service: # We no longer support AS users using /sync directly. # See https://github.com/matrix-org/matrix-doc/issues/1144 raise NotImplementedError() else: joined_room_ids = await self.get_rooms_for_user_at( user_id, now_token.room_key ) sync_result_builder = SyncResultBuilder( sync_config, full_state, since_token=since_token, now_token=now_token, joined_room_ids=joined_room_ids, ) logger.debug("Fetching account data") account_data_by_room = await self._generate_sync_entry_for_account_data( sync_result_builder ) logger.debug("Fetching room data") res = await self._generate_sync_entry_for_rooms( sync_result_builder, account_data_by_room ) newly_joined_rooms, newly_joined_or_invited_or_knocked_users, _, _ = res _, _, newly_left_rooms, newly_left_users = res block_all_presence_data = ( since_token is None and sync_config.filter_collection.blocks_all_presence() ) if self.hs_config.server.use_presence and not block_all_presence_data: logger.debug("Fetching presence data") await self._generate_sync_entry_for_presence( sync_result_builder, newly_joined_rooms, newly_joined_or_invited_or_knocked_users, ) logger.debug("Fetching to-device data") await self._generate_sync_entry_for_to_device(sync_result_builder) device_lists = await self._generate_sync_entry_for_device_list( sync_result_builder, newly_joined_rooms=newly_joined_rooms, newly_joined_or_invited_or_knocked_users=newly_joined_or_invited_or_knocked_users, newly_left_rooms=newly_left_rooms, newly_left_users=newly_left_users, ) logger.debug("Fetching OTK data") device_id = sync_config.device_id one_time_key_counts: JsonDict = {} unused_fallback_key_types: List[str] = [] if device_id: # TODO: We should have a way to let clients differentiate between the states of: # * no change in OTK count since the provided since token # * the server has zero OTKs left for this device # Spec issue: https://github.com/matrix-org/matrix-doc/issues/3298 one_time_key_counts = await self.store.count_e2e_one_time_keys( user_id, device_id ) unused_fallback_key_types = ( await self.store.get_e2e_unused_fallback_key_types(user_id, device_id) ) logger.debug("Fetching group data") await self._generate_sync_entry_for_groups(sync_result_builder) num_events = 0 # debug for https://github.com/matrix-org/synapse/issues/9424 for joined_room in sync_result_builder.joined: num_events += len(joined_room.timeline.events) log_kv( { "joined_rooms_in_result": len(sync_result_builder.joined), "events_in_result": num_events, } ) logger.debug("Sync response calculation complete") return SyncResult( presence=sync_result_builder.presence, account_data=sync_result_builder.account_data, joined=sync_result_builder.joined, invited=sync_result_builder.invited, knocked=sync_result_builder.knocked, archived=sync_result_builder.archived, to_device=sync_result_builder.to_device, device_lists=device_lists, groups=sync_result_builder.groups, device_one_time_keys_count=one_time_key_counts, device_unused_fallback_key_types=unused_fallback_key_types, next_batch=sync_result_builder.now_token, ) @measure_func("_generate_sync_entry_for_groups") async def _generate_sync_entry_for_groups( self, sync_result_builder: "SyncResultBuilder" ) -> None: user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token now_token = sync_result_builder.now_token if since_token and since_token.groups_key: results = await self.store.get_groups_changes_for_user( user_id, since_token.groups_key, now_token.groups_key ) else: results = await self.store.get_all_groups_for_user( user_id, now_token.groups_key ) invited = {} joined = {} left = {} for result in results: membership = result["membership"] group_id = result["group_id"] gtype = result["type"] content = result["content"] if membership == "join": if gtype == "membership": # TODO: Add profile content.pop("membership", None) joined[group_id] = content["content"] else: joined.setdefault(group_id, {})[gtype] = content elif membership == "invite": if gtype == "membership": content.pop("membership", None) invited[group_id] = content["content"] else: if gtype == "membership": left[group_id] = content["content"] sync_result_builder.groups = GroupsSyncResult( join=joined, invite=invited, leave=left ) @measure_func("_generate_sync_entry_for_device_list") async def _generate_sync_entry_for_device_list( self, sync_result_builder: "SyncResultBuilder", newly_joined_rooms: Set[str], newly_joined_or_invited_or_knocked_users: Set[str], newly_left_rooms: Set[str], newly_left_users: Set[str], ) -> DeviceLists: """Generate the DeviceLists section of sync Args: sync_result_builder newly_joined_rooms: Set of rooms user has joined since previous sync newly_joined_or_invited_or_knocked_users: Set of users that have joined, been invited to a room or are knocking on a room since previous sync. newly_left_rooms: Set of rooms user has left since previous sync newly_left_users: Set of users that have left a room we're in since previous sync """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token # We're going to mutate these fields, so lets copy them rather than # assume they won't get used later. newly_joined_or_invited_or_knocked_users = set( newly_joined_or_invited_or_knocked_users ) newly_left_users = set(newly_left_users) if since_token and since_token.device_list_key: # We want to figure out what user IDs the client should refetch # device keys for, and which users we aren't going to track changes # for anymore. # # For the first step we check: # a. if any users we share a room with have updated their devices, # and # b. we also check if we've joined any new rooms, or if a user has # joined a room we're in. # # For the second step we just find any users we no longer share a # room with by looking at all users that have left a room plus users # that were in a room we've left. users_who_share_room = await self.store.get_users_who_share_room_with_user( user_id ) # Always tell the user about their own devices. We check as the user # ID is almost certainly already included (unless they're not in any # rooms) and taking a copy of the set is relatively expensive. if user_id not in users_who_share_room: users_who_share_room = set(users_who_share_room) users_who_share_room.add(user_id) tracked_users = users_who_share_room # Step 1a, check for changes in devices of users we share a room with users_that_have_changed = await self.store.get_users_whose_devices_changed( since_token.device_list_key, tracked_users ) # Step 1b, check for newly joined rooms for room_id in newly_joined_rooms: joined_users = await self.store.get_users_in_room(room_id) newly_joined_or_invited_or_knocked_users.update(joined_users) # TODO: Check that these users are actually new, i.e. either they # weren't in the previous sync *or* they left and rejoined. users_that_have_changed.update(newly_joined_or_invited_or_knocked_users) user_signatures_changed = ( await self.store.get_users_whose_signatures_changed( user_id, since_token.device_list_key ) ) users_that_have_changed.update(user_signatures_changed) # Now find users that we no longer track for room_id in newly_left_rooms: left_users = await self.store.get_users_in_room(room_id) newly_left_users.update(left_users) # Remove any users that we still share a room with. newly_left_users -= users_who_share_room return DeviceLists(changed=users_that_have_changed, left=newly_left_users) else: return DeviceLists(changed=[], left=[]) async def _generate_sync_entry_for_to_device( self, sync_result_builder: "SyncResultBuilder" ) -> None: """Generates the portion of the sync response. Populates `sync_result_builder` with the result. """ user_id = sync_result_builder.sync_config.user.to_string() device_id = sync_result_builder.sync_config.device_id now_token = sync_result_builder.now_token since_stream_id = 0 if sync_result_builder.since_token is not None: since_stream_id = int(sync_result_builder.since_token.to_device_key) if device_id is not None and since_stream_id != int(now_token.to_device_key): messages, stream_id = await self.store.get_messages_for_device( user_id, device_id, since_stream_id, now_token.to_device_key ) for message in messages: # We pop here as we shouldn't be sending the message ID down # `/sync` message_id = message.pop("message_id", None) if message_id: set_tag(SynapseTags.TO_DEVICE_MESSAGE_ID, message_id) logger.debug( "Returning %d to-device messages between %d and %d (current token: %d)", len(messages), since_stream_id, stream_id, now_token.to_device_key, ) sync_result_builder.now_token = now_token.copy_and_replace( "to_device_key", stream_id ) sync_result_builder.to_device = messages else: sync_result_builder.to_device = [] async def _generate_sync_entry_for_account_data( self, sync_result_builder: "SyncResultBuilder" ) -> Dict[str, Dict[str, JsonDict]]: """Generates the account data portion of the sync response. Account data (called "Client Config" in the spec) can be set either globally or for a specific room. Account data consists of a list of events which accumulate state, much like a room. This function retrieves global and per-room account data. The former is written to the given `sync_result_builder`. The latter is returned directly, to be later written to the `sync_result_builder` on a room-by-room basis. Args: sync_result_builder Returns: A dictionary whose keys (room ids) map to the per room account data for that room. """ sync_config = sync_result_builder.sync_config user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token if since_token and not sync_result_builder.full_state: ( global_account_data, account_data_by_room, ) = await self.store.get_updated_account_data_for_user( user_id, since_token.account_data_key ) push_rules_changed = await self.store.have_push_rules_changed_for_user( user_id, int(since_token.push_rules_key) ) if push_rules_changed: global_account_data["m.push_rules"] = await self.push_rules_for_user( sync_config.user ) else: ( global_account_data, account_data_by_room, ) = await self.store.get_account_data_for_user(sync_config.user.to_string()) global_account_data["m.push_rules"] = await self.push_rules_for_user( sync_config.user ) account_data_for_user = await sync_config.filter_collection.filter_account_data( [ {"type": account_data_type, "content": content} for account_data_type, content in global_account_data.items() ] ) sync_result_builder.account_data = account_data_for_user return account_data_by_room async def _generate_sync_entry_for_presence( self, sync_result_builder: "SyncResultBuilder", newly_joined_rooms: Set[str], newly_joined_or_invited_users: Set[str], ) -> None: """Generates the presence portion of the sync response. Populates the `sync_result_builder` with the result. Args: sync_result_builder newly_joined_rooms: Set of rooms that the user has joined since the last sync (or empty if an initial sync) newly_joined_or_invited_users: Set of users that have joined or been invited to rooms since the last sync (or empty if an initial sync) """ now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config user = sync_result_builder.sync_config.user presence_source = self.event_sources.sources.presence since_token = sync_result_builder.since_token presence_key = None include_offline = False if since_token and not sync_result_builder.full_state: presence_key = since_token.presence_key include_offline = True presence, presence_key = await presence_source.get_new_events( user=user, from_key=presence_key, is_guest=sync_config.is_guest, include_offline=include_offline, ) assert presence_key sync_result_builder.now_token = now_token.copy_and_replace( "presence_key", presence_key ) extra_users_ids = set(newly_joined_or_invited_users) for room_id in newly_joined_rooms: users = await self.store.get_users_in_room(room_id) extra_users_ids.update(users) extra_users_ids.discard(user.to_string()) if extra_users_ids: states = await self.presence_handler.get_states(extra_users_ids) presence.extend(states) # Deduplicate the presence entries so that there's at most one per user presence = list({p.user_id: p for p in presence}.values()) presence = await sync_config.filter_collection.filter_presence(presence) sync_result_builder.presence = presence async def _generate_sync_entry_for_rooms( self, sync_result_builder: "SyncResultBuilder", account_data_by_room: Dict[str, Dict[str, JsonDict]], ) -> Tuple[Set[str], Set[str], Set[str], Set[str]]: """Generates the rooms portion of the sync response. Populates the `sync_result_builder` with the result. In the response that reaches the client, rooms are divided into four categories: `invite`, `join`, `knock`, `leave`. These aren't the same as the four sets of room ids returned by this function. Args: sync_result_builder account_data_by_room: Dictionary of per room account data Returns: Returns a 4-tuple describing rooms the user has joined or left, and users who've joined or left rooms any rooms the user is in. This gets used later in `_generate_sync_entry_for_device_list`. Its entries are: - newly_joined_rooms - newly_joined_or_invited_or_knocked_users - newly_left_rooms - newly_left_users """ since_token = sync_result_builder.since_token # 1. Start by fetching all ephemeral events in rooms we've joined (if required). user_id = sync_result_builder.sync_config.user.to_string() block_all_room_ephemeral = ( since_token is None and sync_result_builder.sync_config.filter_collection.blocks_all_room_ephemeral() ) if block_all_room_ephemeral: ephemeral_by_room: Dict[str, List[JsonDict]] = {} else: now_token, ephemeral_by_room = await self.ephemeral_by_room( sync_result_builder, now_token=sync_result_builder.now_token, since_token=sync_result_builder.since_token, ) sync_result_builder.now_token = now_token # 2. We check up front if anything has changed, if it hasn't then there is # no point in going further. if not sync_result_builder.full_state: if since_token and not ephemeral_by_room and not account_data_by_room: have_changed = await self._have_rooms_changed(sync_result_builder) log_kv({"rooms_have_changed": have_changed}) if not have_changed: tags_by_room = await self.store.get_updated_tags( user_id, since_token.account_data_key ) if not tags_by_room: logger.debug("no-oping sync") return set(), set(), set(), set() # 3. Work out which rooms need reporting in the sync response. ignored_users = await self._get_ignored_users(user_id) if since_token: room_changes = await self._get_rooms_changed( sync_result_builder, ignored_users ) tags_by_room = await self.store.get_updated_tags( user_id, since_token.account_data_key ) else: room_changes = await self._get_all_rooms(sync_result_builder, ignored_users) tags_by_room = await self.store.get_tags_for_user(user_id) log_kv({"rooms_changed": len(room_changes.room_entries)}) room_entries = room_changes.room_entries invited = room_changes.invited knocked = room_changes.knocked newly_joined_rooms = room_changes.newly_joined_rooms newly_left_rooms = room_changes.newly_left_rooms # 4. We need to apply further processing to `room_entries` (rooms considered # joined or archived). async def handle_room_entries(room_entry: "RoomSyncResultBuilder") -> None: logger.debug("Generating room entry for %s", room_entry.room_id) await self._generate_room_entry( sync_result_builder, ignored_users, room_entry, ephemeral=ephemeral_by_room.get(room_entry.room_id, []), tags=tags_by_room.get(room_entry.room_id), account_data=account_data_by_room.get(room_entry.room_id, {}), always_include=sync_result_builder.full_state, ) logger.debug("Generated room entry for %s", room_entry.room_id) with start_active_span("sync.generate_room_entries"): await concurrently_execute(handle_room_entries, room_entries, 10) sync_result_builder.invited.extend(invited) sync_result_builder.knocked.extend(knocked) # 5. Work out which users have joined or left rooms we're in. We use this # to build the device_list part of the sync response in # `_generate_sync_entry_for_device_list`. ( newly_joined_or_invited_or_knocked_users, newly_left_users, ) = sync_result_builder.calculate_user_changes() return ( set(newly_joined_rooms), newly_joined_or_invited_or_knocked_users, set(newly_left_rooms), newly_left_users, ) async def _get_ignored_users(self, user_id: str) -> FrozenSet[str]: """Retrieve the users ignored by the given user from their global account_data. Returns an empty set if - there is no global account_data entry for ignored_users - there is such an entry, but it's not a JSON object. """ # TODO: Can we `SELECT ignored_user_id FROM ignored_users WHERE ignorer_user_id=?;` instead? ignored_account_data = ( await self.store.get_global_account_data_by_type_for_user( user_id=user_id, data_type=AccountDataTypes.IGNORED_USER_LIST ) ) # If there is ignored users account data and it matches the proper type, # then use it. ignored_users: FrozenSet[str] = frozenset() if ignored_account_data: ignored_users_data = ignored_account_data.get("ignored_users", {}) if isinstance(ignored_users_data, dict): ignored_users = frozenset(ignored_users_data.keys()) return ignored_users async def _have_rooms_changed( self, sync_result_builder: "SyncResultBuilder" ) -> bool: """Returns whether there may be any new events that should be sent down the sync. Returns True if there are. Does not modify the `sync_result_builder`. """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token now_token = sync_result_builder.now_token assert since_token # Get a list of membership change events that have happened to the user # requesting the sync. membership_changes = await self.store.get_membership_changes_for_user( user_id, since_token.room_key, now_token.room_key ) if membership_changes: return True stream_id = since_token.room_key.stream for room_id in sync_result_builder.joined_room_ids: if self.store.has_room_changed_since(room_id, stream_id): return True return False async def _get_rooms_changed( self, sync_result_builder: "SyncResultBuilder", ignored_users: FrozenSet[str] ) -> _RoomChanges: """Determine the changes in rooms to report to the user. This function is a first pass at generating the rooms part of the sync response. It determines which rooms have changed during the sync period, and categorises them into four buckets: "knock", "invite", "join" and "leave". 1. Finds all membership changes for the user in the sync period (from `since_token` up to `now_token`). 2. Uses those to place the room in one of the four categories above. 3. Builds a `_RoomChanges` struct to record this, and return that struct. For rooms classified as "knock", "invite" or "leave", we just need to report a single membership event in the eventual /sync response. For "join" we need to fetch additional non-membership events, e.g. messages in the room. That is more complicated, so instead we report an intermediary `RoomSyncResultBuilder` struct, and leave the additional work to `_generate_room_entry`. The sync_result_builder is not modified by this function. """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config assert since_token # TODO: we've already called this function and ran this query in # _have_rooms_changed. We could keep the results in memory to avoid a # second query, at the cost of more complicated source code. membership_change_events = await self.store.get_membership_changes_for_user( user_id, since_token.room_key, now_token.room_key ) mem_change_events_by_room_id: Dict[str, List[EventBase]] = {} for event in membership_change_events: mem_change_events_by_room_id.setdefault(event.room_id, []).append(event) newly_joined_rooms: List[str] = [] newly_left_rooms: List[str] = [] room_entries: List[RoomSyncResultBuilder] = [] invited: List[InvitedSyncResult] = [] knocked: List[KnockedSyncResult] = [] for room_id, events in mem_change_events_by_room_id.items(): # The body of this loop will add this room to at least one of the five lists # above. Things get messy if you've e.g. joined, left, joined then left the # room all in the same sync period. logger.debug( "Membership changes in %s: [%s]", room_id, ", ".join("%s (%s)" % (e.event_id, e.membership) for e in events), ) non_joins = [e for e in events if e.membership != Membership.JOIN] has_join = len(non_joins) != len(events) # We want to figure out if we joined the room at some point since # the last sync (even if we have since left). This is to make sure # we do send down the room, and with full state, where necessary old_state_ids = None if room_id in sync_result_builder.joined_room_ids and non_joins: # Always include if the user (re)joined the room, especially # important so that device list changes are calculated correctly. # If there are non-join member events, but we are still in the room, # then the user must have left and joined newly_joined_rooms.append(room_id) # User is in the room so we don't need to do the invite/leave checks continue if room_id in sync_result_builder.joined_room_ids or has_join: old_state_ids = await self.get_state_at(room_id, since_token) old_mem_ev_id = old_state_ids.get((EventTypes.Member, user_id), None) old_mem_ev = None if old_mem_ev_id: old_mem_ev = await self.store.get_event( old_mem_ev_id, allow_none=True ) if not old_mem_ev or old_mem_ev.membership != Membership.JOIN: newly_joined_rooms.append(room_id) # If user is in the room then we don't need to do the invite/leave checks if room_id in sync_result_builder.joined_room_ids: continue if not non_joins: continue last_non_join = non_joins[-1] # Check if we have left the room. This can either be because we were # joined before *or* that we since joined and then left. if events[-1].membership != Membership.JOIN: if has_join: newly_left_rooms.append(room_id) else: if not old_state_ids: old_state_ids = await self.get_state_at(room_id, since_token) old_mem_ev_id = old_state_ids.get( (EventTypes.Member, user_id), None ) old_mem_ev = None if old_mem_ev_id: old_mem_ev = await self.store.get_event( old_mem_ev_id, allow_none=True ) if old_mem_ev and old_mem_ev.membership == Membership.JOIN: newly_left_rooms.append(room_id) # Only bother if we're still currently invited should_invite = last_non_join.membership == Membership.INVITE if should_invite: if last_non_join.sender not in ignored_users: invite_room_sync = InvitedSyncResult(room_id, invite=last_non_join) if invite_room_sync: invited.append(invite_room_sync) # Only bother if our latest membership in the room is knock (and we haven't # been accepted/rejected in the meantime). should_knock = last_non_join.membership == Membership.KNOCK if should_knock: knock_room_sync = KnockedSyncResult(room_id, knock=last_non_join) if knock_room_sync: knocked.append(knock_room_sync) # Always include leave/ban events. Just take the last one. # TODO: How do we handle ban -> leave in same batch? leave_events = [ e for e in non_joins if e.membership in (Membership.LEAVE, Membership.BAN) ] if leave_events: leave_event = leave_events[-1] leave_position = await self.store.get_position_for_event( leave_event.event_id ) # If the leave event happened before the since token then we # bail. if since_token and not leave_position.persisted_after( since_token.room_key ): continue # We can safely convert the position of the leave event into a # stream token as it'll only be used in the context of this # room. (c.f. the docstring of `to_room_stream_token`). leave_token = since_token.copy_and_replace( "room_key", leave_position.to_room_stream_token() ) # If this is an out of band message, like a remote invite # rejection, we include it in the recents batch. Otherwise, we # let _load_filtered_recents handle fetching the correct # batches. # # This is all screaming out for a refactor, as the logic here is # subtle and the moving parts numerous. if leave_event.internal_metadata.is_out_of_band_membership(): batch_events: Optional[List[EventBase]] = [leave_event] else: batch_events = None room_entries.append( RoomSyncResultBuilder( room_id=room_id, rtype="archived", events=batch_events, newly_joined=room_id in newly_joined_rooms, full_state=False, since_token=since_token, upto_token=leave_token, ) ) timeline_limit = sync_config.filter_collection.timeline_limit() # Get all events since the `from_key` in rooms we're currently joined to. # If there are too many, we get the most recent events only. This leaves # a "gap" in the timeline, as described by the spec for /sync. room_to_events = await self.store.get_room_events_stream_for_rooms( room_ids=sync_result_builder.joined_room_ids, from_key=since_token.room_key, to_key=now_token.room_key, limit=timeline_limit + 1, ) # We loop through all room ids, even if there are no new events, in case # there are non room events that we need to notify about. for room_id in sync_result_builder.joined_room_ids: room_entry = room_to_events.get(room_id, None) newly_joined = room_id in newly_joined_rooms if room_entry: events, start_key = room_entry prev_batch_token = now_token.copy_and_replace("room_key", start_key) entry = RoomSyncResultBuilder( room_id=room_id, rtype="joined", events=events, newly_joined=newly_joined, full_state=False, since_token=None if newly_joined else since_token, upto_token=prev_batch_token, ) else: entry = RoomSyncResultBuilder( room_id=room_id, rtype="joined", events=[], newly_joined=newly_joined, full_state=False, since_token=since_token, upto_token=since_token, ) room_entries.append(entry) return _RoomChanges( room_entries, invited, knocked, newly_joined_rooms, newly_left_rooms, ) async def _get_all_rooms( self, sync_result_builder: "SyncResultBuilder", ignored_users: FrozenSet[str] ) -> _RoomChanges: """Returns entries for all rooms for the user. Like `_get_rooms_changed`, but assumes the `since_token` is `None`. This function does not modify the sync_result_builder. Args: sync_result_builder ignored_users: Set of users ignored by user. """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config room_list = await self.store.get_rooms_for_local_user_where_membership_is( user_id=user_id, membership_list=Membership.LIST, ) room_entries = [] invited = [] knocked = [] for event in room_list: if event.room_version_id not in KNOWN_ROOM_VERSIONS: continue if event.membership == Membership.JOIN: room_entries.append( RoomSyncResultBuilder( room_id=event.room_id, rtype="joined", events=None, newly_joined=False, full_state=True, since_token=since_token, upto_token=now_token, ) ) elif event.membership == Membership.INVITE: if event.sender in ignored_users: continue invite = await self.store.get_event(event.event_id) invited.append(InvitedSyncResult(room_id=event.room_id, invite=invite)) elif event.membership == Membership.KNOCK: knock = await self.store.get_event(event.event_id) knocked.append(KnockedSyncResult(room_id=event.room_id, knock=knock)) elif event.membership in (Membership.LEAVE, Membership.BAN): # Always send down rooms we were banned from or kicked from. if not sync_config.filter_collection.include_leave: if event.membership == Membership.LEAVE: if user_id == event.sender: continue leave_token = now_token.copy_and_replace( "room_key", RoomStreamToken(None, event.stream_ordering) ) room_entries.append( RoomSyncResultBuilder( room_id=event.room_id, rtype="archived", events=None, newly_joined=False, full_state=True, since_token=since_token, upto_token=leave_token, ) ) return _RoomChanges(room_entries, invited, knocked, [], []) async def _generate_room_entry( self, sync_result_builder: "SyncResultBuilder", ignored_users: FrozenSet[str], room_builder: "RoomSyncResultBuilder", ephemeral: List[JsonDict], tags: Optional[Dict[str, Dict[str, Any]]], account_data: Dict[str, JsonDict], always_include: bool = False, ) -> None: """Populates the `joined` and `archived` section of `sync_result_builder` based on the `room_builder`. Ideally, we want to report all events whose stream ordering `s` lies in the range `since_token < s <= now_token`, where the two tokens are read from the sync_result_builder. If there are too many events in that range to report, things get complicated. In this situation we return a truncated list of the most recent events, and indicate in the response that there is a "gap" of omitted events. Lots of this is handled in `_load_filtered_recents`, but some of is handled in this method. Additionally: - we include a "state_delta", to describe the changes in state over the gap, - we include all membership events applying to the user making the request, even those in the gap. See the spec for the rationale: https://spec.matrix.org/v1.1/client-server-api/#syncing Args: sync_result_builder ignored_users: Set of users ignored by user. room_builder ephemeral: List of new ephemeral events for room tags: List of *all* tags for room, or None if there has been no change. account_data: List of new account data for room always_include: Always include this room in the sync response, even if empty. """ newly_joined = room_builder.newly_joined full_state = ( room_builder.full_state or newly_joined or sync_result_builder.full_state ) events = room_builder.events # We want to shortcut out as early as possible. if not (always_include or account_data or ephemeral or full_state): if events == [] and tags is None: return now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config room_id = room_builder.room_id since_token = room_builder.since_token upto_token = room_builder.upto_token with start_active_span("sync.generate_room_entry"): set_tag("room_id", room_id) log_kv({"events": len(events or ())}) log_kv( { "since_token": since_token, "upto_token": upto_token, } ) batch = await self._load_filtered_recents( room_id, sync_config, now_token=upto_token, since_token=since_token, potential_recents=events, newly_joined_room=newly_joined, ) log_kv( { "batch_events": len(batch.events), "prev_batch": batch.prev_batch, "batch_limited": batch.limited, } ) # Note: `batch` can be both empty and limited here in the case where # `_load_filtered_recents` can't find any events the user should see # (e.g. due to having ignored the sender of the last 50 events). # When we join the room (or the client requests full_state), we should # send down any existing tags. Usually the user won't have tags in a # newly joined room, unless either a) they've joined before or b) the # tag was added by synapse e.g. for server notice rooms. if full_state: user_id = sync_result_builder.sync_config.user.to_string() tags = await self.store.get_tags_for_room(user_id, room_id) # If there aren't any tags, don't send the empty tags list down # sync if not tags: tags = None account_data_events = [] if tags is not None: account_data_events.append({"type": "m.tag", "content": {"tags": tags}}) for account_data_type, content in account_data.items(): account_data_events.append( {"type": account_data_type, "content": content} ) account_data_events = ( await sync_config.filter_collection.filter_room_account_data( account_data_events ) ) ephemeral = await sync_config.filter_collection.filter_room_ephemeral( ephemeral ) if not ( always_include or batch or account_data_events or ephemeral or full_state ): return state = await self.compute_state_delta( room_id, batch, sync_config, since_token, now_token, full_state=full_state, ) summary: Optional[JsonDict] = {} # we include a summary in room responses when we're lazy loading # members (as the client otherwise doesn't have enough info to form # the name itself). if sync_config.filter_collection.lazy_load_members() and ( # we recalculate the summary: # if there are membership changes in the timeline, or # if membership has changed during a gappy sync, or # if this is an initial sync. any(ev.type == EventTypes.Member for ev in batch.events) or ( # XXX: this may include false positives in the form of LL # members which have snuck into state batch.limited and any(t == EventTypes.Member for (t, k) in state) ) or since_token is None ): summary = await self.compute_summary( room_id, sync_config, batch, state, now_token ) if room_builder.rtype == "joined": unread_notifications: Dict[str, int] = {} room_sync = JoinedSyncResult( room_id=room_id, timeline=batch, state=state, ephemeral=ephemeral, account_data=account_data_events, unread_notifications=unread_notifications, summary=summary, unread_count=0, ) if room_sync or always_include: notifs = await self.unread_notifs_for_room_id(room_id, sync_config) unread_notifications["notification_count"] = notifs.notify_count unread_notifications["highlight_count"] = notifs.highlight_count room_sync.unread_count = notifs.unread_count sync_result_builder.joined.append(room_sync) if batch.limited and since_token: user_id = sync_result_builder.sync_config.user.to_string() logger.debug( "Incremental gappy sync of %s for user %s with %d state events" % (room_id, user_id, len(state)) ) elif room_builder.rtype == "archived": archived_room_sync = ArchivedSyncResult( room_id=room_id, timeline=batch, state=state, account_data=account_data_events, ) if archived_room_sync or always_include: sync_result_builder.archived.append(archived_room_sync) else: raise Exception("Unrecognized rtype: %r", room_builder.rtype) async def get_rooms_for_user_at( self, user_id: str, room_key: RoomStreamToken ) -> FrozenSet[str]: """Get set of joined rooms for a user at the given stream ordering. The stream ordering *must* be recent, otherwise this may throw an exception if older than a month. (This function is called with the current token, which should be perfectly fine). Args: user_id stream_ordering ReturnValue: Set of room_ids the user is in at given stream_ordering. """ joined_rooms = await self.store.get_rooms_for_user_with_stream_ordering(user_id) joined_room_ids = set() # We need to check that the stream ordering of the join for each room # is before the stream_ordering asked for. This might not be the case # if the user joins a room between us getting the current token and # calling `get_rooms_for_user_with_stream_ordering`. # If the membership's stream ordering is after the given stream # ordering, we need to go and work out if the user was in the room # before. for joined_room in joined_rooms: if not joined_room.event_pos.persisted_after(room_key): joined_room_ids.add(joined_room.room_id) continue logger.info("User joined room after current token: %s", joined_room.room_id) extrems = ( await self.store.get_forward_extremities_for_room_at_stream_ordering( joined_room.room_id, joined_room.event_pos.stream ) ) users_in_room = await self.state.get_current_users_in_room( joined_room.room_id, extrems ) if user_id in users_in_room: joined_room_ids.add(joined_room.room_id) return frozenset(joined_room_ids) def _action_has_highlight(actions: List[JsonDict]) -> bool: for action in actions: try: if action.get("set_tweak", None) == "highlight": return action.get("value", True) except AttributeError: pass return False def _calculate_state( timeline_contains: StateMap[str], timeline_start: StateMap[str], previous: StateMap[str], current: StateMap[str], lazy_load_members: bool, ) -> StateMap[str]: """Works out what state to include in a sync response. Args: timeline_contains: state in the timeline timeline_start: state at the start of the timeline previous: state at the end of the previous sync (or empty dict if this is an initial sync) current: state at the end of the timeline lazy_load_members: whether to return members from timeline_start or not. assumes that timeline_start has already been filtered to include only the members the client needs to know about. """ event_id_to_key = { e: key for key, e in itertools.chain( timeline_contains.items(), previous.items(), timeline_start.items(), current.items(), ) } c_ids = set(current.values()) ts_ids = set(timeline_start.values()) p_ids = set(previous.values()) tc_ids = set(timeline_contains.values()) # If we are lazyloading room members, we explicitly add the membership events # for the senders in the timeline into the state block returned by /sync, # as we may not have sent them to the client before. We find these membership # events by filtering them out of timeline_start, which has already been filtered # to only include membership events for the senders in the timeline. # In practice, we can do this by removing them from the p_ids list, # which is the list of relevant state we know we have already sent to the client. # see https://github.com/matrix-org/synapse/pull/2970/files/efcdacad7d1b7f52f879179701c7e0d9b763511f#r204732809 if lazy_load_members: p_ids.difference_update( e for t, e in timeline_start.items() if t[0] == EventTypes.Member ) state_ids = ((c_ids | ts_ids) - p_ids) - tc_ids return {event_id_to_key[e]: e for e in state_ids} @attr.s(slots=True, auto_attribs=True) class SyncResultBuilder: """Used to help build up a new SyncResult for a user Attributes: sync_config full_state: The full_state flag as specified by user since_token: The token supplied by user, or None. now_token: The token to sync up to. joined_room_ids: List of rooms the user is joined to # The following mirror the fields in a sync response presence account_data joined invited knocked archived groups to_device """ sync_config: SyncConfig full_state: bool since_token: Optional[StreamToken] now_token: StreamToken joined_room_ids: FrozenSet[str] presence: List[UserPresenceState] = attr.Factory(list) account_data: List[JsonDict] = attr.Factory(list) joined: List[JoinedSyncResult] = attr.Factory(list) invited: List[InvitedSyncResult] = attr.Factory(list) knocked: List[KnockedSyncResult] = attr.Factory(list) archived: List[ArchivedSyncResult] = attr.Factory(list) groups: Optional[GroupsSyncResult] = None to_device: List[JsonDict] = attr.Factory(list) def calculate_user_changes(self) -> Tuple[Set[str], Set[str]]: """Work out which other users have joined or left rooms we are joined to. This data only is only useful for an incremental sync. The SyncResultBuilder is not modified by this function. """ newly_joined_or_invited_or_knocked_users = set() newly_left_users = set() if self.since_token: for joined_sync in self.joined: it = itertools.chain( joined_sync.timeline.events, joined_sync.state.values() ) for event in it: if event.type == EventTypes.Member: if ( event.membership == Membership.JOIN or event.membership == Membership.INVITE or event.membership == Membership.KNOCK ): newly_joined_or_invited_or_knocked_users.add( event.state_key ) else: prev_content = event.unsigned.get("prev_content", {}) prev_membership = prev_content.get("membership", None) if prev_membership == Membership.JOIN: newly_left_users.add(event.state_key) newly_left_users -= newly_joined_or_invited_or_knocked_users return newly_joined_or_invited_or_knocked_users, newly_left_users @attr.s(slots=True, auto_attribs=True) class RoomSyncResultBuilder: """Stores information needed to create either a `JoinedSyncResult` or `ArchivedSyncResult`. Attributes: room_id rtype: One of `"joined"` or `"archived"` events: List of events to include in the room (more events may be added when generating result). newly_joined: If the user has newly joined the room full_state: Whether the full state should be sent in result since_token: Earliest point to return events from, or None upto_token: Latest point to return events from. """ room_id: str rtype: str events: Optional[List[EventBase]] newly_joined: bool full_state: bool since_token: Optional[StreamToken] upto_token: StreamToken synapse-1.53.0/synapse/handlers/typing.py000066400000000000000000000454101420514467300204420ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple import attr from synapse.api.errors import AuthError, ShadowBanError, SynapseError from synapse.appservice import ApplicationService from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.replication.tcp.streams import TypingStream from synapse.streams import EventSource from synapse.types import JsonDict, Requester, UserID, get_domain_from_id from synapse.util.caches.stream_change_cache import StreamChangeCache from synapse.util.metrics import Measure from synapse.util.wheel_timer import WheelTimer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # A tiny object useful for storing a user's membership in a room, as a mapping # key @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomMember: room_id: str user_id: str # How often we expect remote servers to resend us presence. FEDERATION_TIMEOUT = 60 * 1000 # How often to resend typing across federation. FEDERATION_PING_INTERVAL = 40 * 1000 class FollowerTypingHandler: """A typing handler on a different process than the writer that is updated via replication. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.server_name = hs.config.server.server_name self.clock = hs.get_clock() self.is_mine_id = hs.is_mine_id self.federation = None if hs.should_send_federation(): self.federation = hs.get_federation_sender() if hs.get_instance_name() not in hs.config.worker.writers.typing: hs.get_federation_registry().register_instances_for_edu( "m.typing", hs.config.worker.writers.typing, ) # map room IDs to serial numbers self._room_serials: Dict[str, int] = {} # map room IDs to sets of users currently typing self._room_typing: Dict[str, Set[str]] = {} self._member_last_federation_poke: Dict[RoomMember, int] = {} self.wheel_timer: WheelTimer[RoomMember] = WheelTimer(bucket_size=5000) self._latest_room_serial = 0 self.clock.looping_call(self._handle_timeouts, 5000) def _reset(self) -> None: """Reset the typing handler's data caches.""" # map room IDs to serial numbers self._room_serials = {} # map room IDs to sets of users currently typing self._room_typing = {} self._member_last_federation_poke = {} self.wheel_timer = WheelTimer(bucket_size=5000) @wrap_as_background_process("typing._handle_timeouts") async def _handle_timeouts(self) -> None: logger.debug("Checking for typing timeouts") now = self.clock.time_msec() members = set(self.wheel_timer.fetch(now)) for member in members: self._handle_timeout_for_member(now, member) def _handle_timeout_for_member(self, now: int, member: RoomMember) -> None: if not self.is_typing(member): # Nothing to do if they're no longer typing return # Check if we need to resend a keep alive over federation for this # user. if self.federation and self.is_mine_id(member.user_id): last_fed_poke = self._member_last_federation_poke.get(member, None) if not last_fed_poke or last_fed_poke + FEDERATION_PING_INTERVAL <= now: run_as_background_process( "typing._push_remote", self._push_remote, member=member, typing=True ) # Add a paranoia timer to ensure that we always have a timer for # each person typing. self.wheel_timer.insert(now=now, obj=member, then=now + 60 * 1000) def is_typing(self, member: RoomMember) -> bool: return member.user_id in self._room_typing.get(member.room_id, set()) async def _push_remote(self, member: RoomMember, typing: bool) -> None: if not self.federation: return try: users = await self.store.get_users_in_room(member.room_id) self._member_last_federation_poke[member] = self.clock.time_msec() now = self.clock.time_msec() self.wheel_timer.insert( now=now, obj=member, then=now + FEDERATION_PING_INTERVAL ) for domain in {get_domain_from_id(u) for u in users}: if domain != self.server_name: logger.debug("sending typing update to %s", domain) self.federation.build_and_send_edu( destination=domain, edu_type="m.typing", content={ "room_id": member.room_id, "user_id": member.user_id, "typing": typing, }, key=member, ) except Exception: logger.exception("Error pushing typing notif to remotes") def process_replication_rows( self, token: int, rows: List[TypingStream.TypingStreamRow] ) -> None: """Should be called whenever we receive updates for typing stream.""" if self._latest_room_serial > token: # The master has gone backwards. To prevent inconsistent data, just # clear everything. self._reset() # Set the latest serial token to whatever the server gave us. self._latest_room_serial = token for row in rows: self._room_serials[row.room_id] = token prev_typing = self._room_typing.get(row.room_id, set()) now_typing = set(row.user_ids) self._room_typing[row.room_id] = now_typing if self.federation: run_as_background_process( "_send_changes_in_typing_to_remotes", self._send_changes_in_typing_to_remotes, row.room_id, prev_typing, now_typing, ) async def _send_changes_in_typing_to_remotes( self, room_id: str, prev_typing: Set[str], now_typing: Set[str] ) -> None: """Process a change in typing of a room from replication, sending EDUs for any local users. """ if not self.federation: return for user_id in now_typing - prev_typing: if self.is_mine_id(user_id): await self._push_remote(RoomMember(room_id, user_id), True) for user_id in prev_typing - now_typing: if self.is_mine_id(user_id): await self._push_remote(RoomMember(room_id, user_id), False) def get_current_token(self) -> int: return self._latest_room_serial class TypingWriterHandler(FollowerTypingHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) assert hs.get_instance_name() in hs.config.worker.writers.typing self.auth = hs.get_auth() self.notifier = hs.get_notifier() self.event_auth_handler = hs.get_event_auth_handler() self.hs = hs hs.get_federation_registry().register_edu_handler("m.typing", self._recv_edu) hs.get_distributor().observe("user_left_room", self.user_left_room) # clock time we expect to stop self._member_typing_until: Dict[RoomMember, int] = {} # caches which room_ids changed at which serials self._typing_stream_change_cache = StreamChangeCache( "TypingStreamChangeCache", self._latest_room_serial ) def _handle_timeout_for_member(self, now: int, member: RoomMember) -> None: super()._handle_timeout_for_member(now, member) if not self.is_typing(member): # Nothing to do if they're no longer typing return until = self._member_typing_until.get(member, None) if not until or until <= now: logger.info("Timing out typing for: %s", member.user_id) self._stopped_typing(member) return async def started_typing( self, target_user: UserID, requester: Requester, room_id: str, timeout: int ) -> None: target_user_id = target_user.to_string() auth_user_id = requester.user.to_string() if not self.is_mine_id(target_user_id): raise SynapseError(400, "User is not hosted on this homeserver") if target_user_id != auth_user_id: raise AuthError(400, "Cannot set another user's typing state") if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() await self.auth.check_user_in_room(room_id, target_user_id) logger.debug("%s has started typing in %s", target_user_id, room_id) member = RoomMember(room_id=room_id, user_id=target_user_id) was_present = member.user_id in self._room_typing.get(room_id, set()) now = self.clock.time_msec() self._member_typing_until[member] = now + timeout self.wheel_timer.insert(now=now, obj=member, then=now + timeout) if was_present: # No point sending another notification return self._push_update(member=member, typing=True) async def stopped_typing( self, target_user: UserID, requester: Requester, room_id: str ) -> None: target_user_id = target_user.to_string() auth_user_id = requester.user.to_string() if not self.is_mine_id(target_user_id): raise SynapseError(400, "User is not hosted on this homeserver") if target_user_id != auth_user_id: raise AuthError(400, "Cannot set another user's typing state") if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() await self.auth.check_user_in_room(room_id, target_user_id) logger.debug("%s has stopped typing in %s", target_user_id, room_id) member = RoomMember(room_id=room_id, user_id=target_user_id) self._stopped_typing(member) def user_left_room(self, user: UserID, room_id: str) -> None: user_id = user.to_string() if self.is_mine_id(user_id): member = RoomMember(room_id=room_id, user_id=user_id) self._stopped_typing(member) def _stopped_typing(self, member: RoomMember) -> None: if member.user_id not in self._room_typing.get(member.room_id, set()): # No point return self._member_typing_until.pop(member, None) self._member_last_federation_poke.pop(member, None) self._push_update(member=member, typing=False) def _push_update(self, member: RoomMember, typing: bool) -> None: if self.hs.is_mine_id(member.user_id): # Only send updates for changes to our own users. run_as_background_process( "typing._push_remote", self._push_remote, member, typing ) self._push_update_local(member=member, typing=typing) async def _recv_edu(self, origin: str, content: JsonDict) -> None: room_id = content["room_id"] user_id = content["user_id"] # If we're not in the room just ditch the event entirely. This is # probably an old server that has come back and thinks we're still in # the room (or we've been rejoined to the room by a state reset). is_in_room = await self.event_auth_handler.check_host_in_room( room_id, self.server_name ) if not is_in_room: logger.info( "Ignoring typing update for room %r from server %s as we're not in the room", room_id, origin, ) return member = RoomMember(user_id=user_id, room_id=room_id) # Check that the string is a valid user id user = UserID.from_string(user_id) if user.domain != origin: logger.info( "Got typing update from %r with bad 'user_id': %r", origin, user_id ) return users = await self.store.get_users_in_room(room_id) domains = {get_domain_from_id(u) for u in users} if self.server_name in domains: logger.info("Got typing update from %s: %r", user_id, content) now = self.clock.time_msec() self._member_typing_until[member] = now + FEDERATION_TIMEOUT self.wheel_timer.insert(now=now, obj=member, then=now + FEDERATION_TIMEOUT) self._push_update_local(member=member, typing=content["typing"]) def _push_update_local(self, member: RoomMember, typing: bool) -> None: room_set = self._room_typing.setdefault(member.room_id, set()) if typing: room_set.add(member.user_id) else: room_set.discard(member.user_id) self._latest_room_serial += 1 self._room_serials[member.room_id] = self._latest_room_serial self._typing_stream_change_cache.entity_has_changed( member.room_id, self._latest_room_serial ) self.notifier.on_new_event( "typing_key", self._latest_room_serial, rooms=[member.room_id] ) async def get_all_typing_updates( self, instance_name: str, last_id: int, current_id: int, limit: int ) -> Tuple[List[Tuple[int, list]], int, bool]: """Get updates for typing replication stream. Args: instance_name: The writer we want to fetch updates from. Unused here since there is only ever one writer. last_id: The token to fetch updates from. Exclusive. current_id: The token to fetch updates up to. Inclusive. limit: The requested limit for the number of rows to return. The function may return more or fewer rows. Returns: A tuple consisting of: the updates, a token to use to fetch subsequent updates, and whether we returned fewer rows than exists between the requested tokens due to the limit. The token returned can be used in a subsequent call to this function to get further updates. The updates are a list of 2-tuples of stream ID and the row data """ if last_id == current_id: return [], current_id, False changed_rooms: Optional[ Iterable[str] ] = self._typing_stream_change_cache.get_all_entities_changed(last_id) if changed_rooms is None: changed_rooms = self._room_serials rows = [] for room_id in changed_rooms: serial = self._room_serials[room_id] if last_id < serial <= current_id: typing = self._room_typing[room_id] rows.append((serial, [room_id, list(typing)])) rows.sort() limited = False # We, unusually, use a strict limit here as we have all the rows in # memory rather than pulling them out of the database with a `LIMIT ?` # clause. if len(rows) > limit: rows = rows[:limit] current_id = rows[-1][0] limited = True return rows, current_id, limited def process_replication_rows( self, token: int, rows: List[TypingStream.TypingStreamRow] ) -> None: # The writing process should never get updates from replication. raise Exception("Typing writer instance got typing info over replication") class TypingNotificationEventSource(EventSource[int, JsonDict]): def __init__(self, hs: "HomeServer"): self._main_store = hs.get_datastore() self.clock = hs.get_clock() # We can't call get_typing_handler here because there's a cycle: # # Typing -> Notifier -> TypingNotificationEventSource -> Typing # self.get_typing_handler = hs.get_typing_handler def _make_event_for(self, room_id: str) -> JsonDict: typing = self.get_typing_handler()._room_typing[room_id] return { "type": "m.typing", "room_id": room_id, "content": {"user_ids": list(typing)}, } async def get_new_events_as( self, from_key: int, service: ApplicationService ) -> Tuple[List[JsonDict], int]: """Returns a set of new typing events that an appservice may be interested in. Args: from_key: the stream position at which events should be fetched from. service: The appservice which may be interested. Returns: A two-tuple containing the following: * A list of json dictionaries derived from typing events that the appservice may be interested in. * The latest known room serial. """ with Measure(self.clock, "typing.get_new_events_as"): handler = self.get_typing_handler() events = [] for room_id in handler._room_serials.keys(): if handler._room_serials[room_id] <= from_key: continue if not await service.matches_user_in_member_list( room_id, self._main_store ): continue events.append(self._make_event_for(room_id)) return events, handler._latest_room_serial async def get_new_events( self, user: UserID, from_key: int, limit: Optional[int], room_ids: Iterable[str], is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[JsonDict], int]: with Measure(self.clock, "typing.get_new_events"): from_key = int(from_key) handler = self.get_typing_handler() events = [] for room_id in room_ids: if room_id not in handler._room_serials: continue if handler._room_serials[room_id] <= from_key: continue events.append(self._make_event_for(room_id)) return events, handler._latest_room_serial def get_current_key(self) -> int: return self.get_typing_handler()._latest_room_serial synapse-1.53.0/synapse/handlers/ui_auth/000077500000000000000000000000001420514467300202105ustar00rootroot00000000000000synapse-1.53.0/synapse/handlers/ui_auth/__init__.py000066400000000000000000000031461420514467300223250ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module implements user-interactive auth verification. TODO: move more stuff out of AuthHandler in here. """ from synapse.handlers.ui_auth.checkers import INTERACTIVE_AUTH_CHECKERS # noqa: F401 class UIAuthSessionDataConstants: """Constants for use with AuthHandler.set_session_data""" # used during registration and password reset to store a hashed copy of the # password, so that the client does not need to submit it each time. PASSWORD_HASH = "password_hash" # used during registration to store the mxid of the registered user REGISTERED_USER_ID = "registered_user_id" # used by validate_user_via_ui_auth to store the mxid of the user we are validating # for. REQUEST_USER_ID = "request_user_id" # used during registration to store the registration token used (if required) so that: # - we can prevent a token being used twice by one session # - we can 'use up' the token after registration has successfully completed REGISTRATION_TOKEN = "m.login.registration_token" synapse-1.53.0/synapse/handlers/ui_auth/checkers.py000066400000000000000000000265111420514467300223560ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any from twisted.web.client import PartialDownloadError from synapse.api.constants import LoginType from synapse.api.errors import Codes, LoginError, SynapseError from synapse.config.emailconfig import ThreepidBehaviour from synapse.util import json_decoder if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UserInteractiveAuthChecker: """Abstract base class for an interactive auth checker""" def __init__(self, hs: "HomeServer"): pass def is_enabled(self) -> bool: """Check if the configuration of the homeserver allows this checker to work Returns: True if this login type is enabled. """ async def check_auth(self, authdict: dict, clientip: str) -> Any: """Given the authentication dict from the client, attempt to check this step Args: authdict: authentication dictionary from the client clientip: The IP address of the client. Raises: LoginError if authentication failed. Returns: The result of authentication (to pass back to the client?) """ raise NotImplementedError() class DummyAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.DUMMY def is_enabled(self) -> bool: return True async def check_auth(self, authdict: dict, clientip: str) -> Any: return True class TermsAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.TERMS def is_enabled(self) -> bool: return True async def check_auth(self, authdict: dict, clientip: str) -> Any: return True class RecaptchaAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.RECAPTCHA def __init__(self, hs: "HomeServer"): super().__init__(hs) self._enabled = bool(hs.config.captcha.recaptcha_private_key) self._http_client = hs.get_proxied_http_client() self._url = hs.config.captcha.recaptcha_siteverify_api self._secret = hs.config.captcha.recaptcha_private_key def is_enabled(self) -> bool: return self._enabled async def check_auth(self, authdict: dict, clientip: str) -> Any: try: user_response = authdict["response"] except KeyError: # Client tried to provide captcha but didn't give the parameter: # bad request. raise LoginError( 400, "Captcha response is required", errcode=Codes.CAPTCHA_NEEDED ) logger.info( "Submitting recaptcha response %s with remoteip %s", user_response, clientip ) # TODO: get this from the homeserver rather than creating a new one for # each request try: resp_body = await self._http_client.post_urlencoded_get_json( self._url, args={ "secret": self._secret, "response": user_response, "remoteip": clientip, }, ) except PartialDownloadError as pde: # Twisted is silly data = pde.response resp_body = json_decoder.decode(data.decode("utf-8")) if "success" in resp_body: # Note that we do NOT check the hostname here: we explicitly # intend the CAPTCHA to be presented by whatever client the # user is using, we just care that they have completed a CAPTCHA. logger.info( "%s reCAPTCHA from hostname %s", "Successful" if resp_body["success"] else "Failed", resp_body.get("hostname"), ) if resp_body["success"]: return True raise LoginError( 401, "Captcha authentication failed", errcode=Codes.UNAUTHORIZED ) class _BaseThreepidAuthChecker: def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() async def _check_threepid(self, medium: str, authdict: dict) -> dict: if "threepid_creds" not in authdict: raise LoginError(400, "Missing threepid_creds", Codes.MISSING_PARAM) threepid_creds = authdict["threepid_creds"] identity_handler = self.hs.get_identity_handler() logger.info("Getting validated threepid. threepidcreds: %r", (threepid_creds,)) # msisdns are currently always ThreepidBehaviour.REMOTE if medium == "msisdn": if not self.hs.config.registration.account_threepid_delegate_msisdn: raise SynapseError( 400, "Phone number verification is not enabled on this homeserver" ) threepid = await identity_handler.threepid_from_creds( self.hs.config.registration.account_threepid_delegate_msisdn, threepid_creds, ) elif medium == "email": if ( self.hs.config.email.threepid_behaviour_email == ThreepidBehaviour.REMOTE ): assert self.hs.config.registration.account_threepid_delegate_email threepid = await identity_handler.threepid_from_creds( self.hs.config.registration.account_threepid_delegate_email, threepid_creds, ) elif ( self.hs.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL ): threepid = None row = await self.store.get_threepid_validation_session( medium, threepid_creds["client_secret"], sid=threepid_creds["sid"], validated=True, ) if row: threepid = { "medium": row["medium"], "address": row["address"], "validated_at": row["validated_at"], } # Valid threepid returned, delete from the db await self.store.delete_threepid_session(threepid_creds["sid"]) else: raise SynapseError( 400, "Email address verification is not enabled on this homeserver" ) else: # this can't happen! raise AssertionError("Unrecognized threepid medium: %s" % (medium,)) if not threepid: raise LoginError( 401, "Unable to get validated threepid", errcode=Codes.UNAUTHORIZED ) if threepid["medium"] != medium: raise LoginError( 401, "Expecting threepid of type '%s', got '%s'" % (medium, threepid["medium"]), errcode=Codes.UNAUTHORIZED, ) threepid["threepid_creds"] = authdict["threepid_creds"] return threepid class EmailIdentityAuthChecker(UserInteractiveAuthChecker, _BaseThreepidAuthChecker): AUTH_TYPE = LoginType.EMAIL_IDENTITY def __init__(self, hs: "HomeServer"): UserInteractiveAuthChecker.__init__(self, hs) _BaseThreepidAuthChecker.__init__(self, hs) def is_enabled(self) -> bool: return self.hs.config.email.threepid_behaviour_email in ( ThreepidBehaviour.REMOTE, ThreepidBehaviour.LOCAL, ) async def check_auth(self, authdict: dict, clientip: str) -> Any: return await self._check_threepid("email", authdict) class MsisdnAuthChecker(UserInteractiveAuthChecker, _BaseThreepidAuthChecker): AUTH_TYPE = LoginType.MSISDN def __init__(self, hs: "HomeServer"): UserInteractiveAuthChecker.__init__(self, hs) _BaseThreepidAuthChecker.__init__(self, hs) def is_enabled(self) -> bool: return bool(self.hs.config.registration.account_threepid_delegate_msisdn) async def check_auth(self, authdict: dict, clientip: str) -> Any: return await self._check_threepid("msisdn", authdict) class RegistrationTokenAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.REGISTRATION_TOKEN def __init__(self, hs: "HomeServer"): super().__init__(hs) self.hs = hs self._enabled = bool(hs.config.registration.registration_requires_token) self.store = hs.get_datastore() def is_enabled(self) -> bool: return self._enabled async def check_auth(self, authdict: dict, clientip: str) -> Any: if "token" not in authdict: raise LoginError(400, "Missing registration token", Codes.MISSING_PARAM) if not isinstance(authdict["token"], str): raise LoginError( 400, "Registration token must be a string", Codes.INVALID_PARAM ) if "session" not in authdict: raise LoginError(400, "Missing UIA session", Codes.MISSING_PARAM) # Get these here to avoid cyclic dependencies from synapse.handlers.ui_auth import UIAuthSessionDataConstants auth_handler = self.hs.get_auth_handler() session = authdict["session"] token = authdict["token"] # If the LoginType.REGISTRATION_TOKEN stage has already been completed, # return early to avoid incrementing `pending` again. stored_token = await auth_handler.get_session_data( session, UIAuthSessionDataConstants.REGISTRATION_TOKEN ) if stored_token: if token != stored_token: raise LoginError( 400, "Registration token has changed", Codes.INVALID_PARAM ) else: return token if await self.store.registration_token_is_valid(token): # Increment pending counter, so that if token has limited uses it # can't be used up by someone else in the meantime. await self.store.set_registration_token_pending(token) # Store the token in the UIA session, so that once registration # is complete `completed` can be incremented. await auth_handler.set_session_data( session, UIAuthSessionDataConstants.REGISTRATION_TOKEN, token, ) # The token will be stored as the result of the authentication stage # in ui_auth_sessions_credentials. This allows the pending counter # for tokens to be decremented when expired sessions are deleted. return token else: raise LoginError( 401, "Invalid registration token", errcode=Codes.UNAUTHORIZED ) INTERACTIVE_AUTH_CHECKERS = [ DummyAuthChecker, TermsAuthChecker, RecaptchaAuthChecker, EmailIdentityAuthChecker, MsisdnAuthChecker, RegistrationTokenAuthChecker, ] """A list of UserInteractiveAuthChecker classes""" synapse-1.53.0/synapse/handlers/user_directory.py000066400000000000000000000462201420514467300221720ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional import synapse.metrics from synapse.api.constants import EventTypes, HistoryVisibility, JoinRules, Membership from synapse.handlers.state_deltas import MatchChange, StateDeltasHandler from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.roommember import ProfileInfo from synapse.types import JsonDict from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UserDirectoryHandler(StateDeltasHandler): """Handles queries and updates for the user_directory. N.B.: ASSUMES IT IS THE ONLY THING THAT MODIFIES THE USER DIRECTORY When a local user searches the user_directory, we report two kinds of users: - users this server can see are joined to a world_readable or publicly joinable room, and - users belonging to a private room shared by that local user. The two cases are tracked separately in the `users_in_public_rooms` and `users_who_share_private_rooms` tables. Both kinds of users have their username and avatar tracked in a `user_directory` table. This handler has three responsibilities: 1. Forwarding requests to `/user_directory/search` to the UserDirectoryStore. 2. Providing hooks for the application to call when local users are added, removed, or have their profile changed. 3. Listening for room state changes that indicate remote users have joined or left a room, or that their profile has changed. """ def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.server_name = hs.hostname self.clock = hs.get_clock() self.notifier = hs.get_notifier() self.is_mine_id = hs.is_mine_id self.update_user_directory = hs.config.server.update_user_directory self.search_all_users = hs.config.userdirectory.user_directory_search_all_users self.spam_checker = hs.get_spam_checker() # The current position in the current_state_delta stream self.pos: Optional[int] = None # Guard to ensure we only process deltas one at a time self._is_processing = False if self.update_user_directory: self.notifier.add_replication_callback(self.notify_new_event) # We kick this off so that we don't have to wait for a change before # we start populating the user directory self.clock.call_later(0, self.notify_new_event) async def search_users( self, user_id: str, search_term: str, limit: int ) -> JsonDict: """Searches for users in directory Returns: dict of the form:: { "limited": , # whether there were more results or not "results": [ # Ordered by best match first { "user_id": , "display_name": , "avatar_url": } ] } """ results = await self.store.search_user_dir(user_id, search_term, limit) # Remove any spammy users from the results. non_spammy_users = [] for user in results["results"]: if not await self.spam_checker.check_username_for_spam(user): non_spammy_users.append(user) results["results"] = non_spammy_users return results def notify_new_event(self) -> None: """Called when there may be more deltas to process""" if not self.update_user_directory: return if self._is_processing: return async def process() -> None: try: await self._unsafe_process() finally: self._is_processing = False self._is_processing = True run_as_background_process("user_directory.notify_new_event", process) async def handle_local_profile_change( self, user_id: str, profile: ProfileInfo ) -> None: """Called to update index of our local user profiles when they change irrespective of any rooms the user may be in. """ # FIXME(#3714): We should probably do this in the same worker as all # the other changes. if await self.store.should_include_local_user_in_dir(user_id): await self.store.update_profile_in_user_dir( user_id, profile.display_name, profile.avatar_url ) async def handle_local_user_deactivated(self, user_id: str) -> None: """Called when a user ID is deactivated""" # FIXME(#3714): We should probably do this in the same worker as all # the other changes. await self.store.remove_from_user_dir(user_id) async def _unsafe_process(self) -> None: # If self.pos is None then means we haven't fetched it from DB if self.pos is None: self.pos = await self.store.get_user_directory_stream_pos() # If still None then the initial background update hasn't happened yet. if self.pos is None: return None room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos > room_max_stream_ordering: # apparently, we've processed more events than exist in the database! # this can happen if events are removed with history purge or similar. logger.warning( "Event stream ordering appears to have gone backwards (%i -> %i): " "rewinding user directory processor", self.pos, room_max_stream_ordering, ) self.pos = room_max_stream_ordering # Loop round handling deltas until we're up to date while True: with Measure(self.clock, "user_dir_delta"): room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos == room_max_stream_ordering: return logger.debug( "Processing user stats %s->%s", self.pos, room_max_stream_ordering ) max_pos, deltas = await self.store.get_current_state_deltas( self.pos, room_max_stream_ordering ) logger.debug("Handling %d state deltas", len(deltas)) await self._handle_deltas(deltas) self.pos = max_pos # Expose current event processing position to prometheus synapse.metrics.event_processing_positions.labels("user_dir").set( max_pos ) await self.store.update_user_directory_stream_pos(max_pos) async def _handle_deltas(self, deltas: List[Dict[str, Any]]) -> None: """Called with the state deltas to process""" for delta in deltas: typ = delta["type"] state_key = delta["state_key"] room_id = delta["room_id"] event_id = delta["event_id"] prev_event_id = delta["prev_event_id"] logger.debug("Handling: %r %r, %s", typ, state_key, event_id) # For join rule and visibility changes we need to check if the room # may have become public or not and add/remove the users in said room if typ in (EventTypes.RoomHistoryVisibility, EventTypes.JoinRules): await self._handle_room_publicity_change( room_id, prev_event_id, event_id, typ ) elif typ == EventTypes.Member: await self._handle_room_membership_event( room_id, prev_event_id, event_id, state_key, ) else: logger.debug("Ignoring irrelevant type: %r", typ) async def _handle_room_publicity_change( self, room_id: str, prev_event_id: Optional[str], event_id: Optional[str], typ: str, ) -> None: """Handle a room having potentially changed from/to world_readable/publicly joinable. Args: room_id: The ID of the room which changed. prev_event_id: The previous event before the state change event_id: The new event after the state change typ: Type of the event """ logger.debug("Handling change for %s: %s", typ, room_id) if typ == EventTypes.RoomHistoryVisibility: publicness = await self._get_key_change( prev_event_id, event_id, key_name="history_visibility", public_value=HistoryVisibility.WORLD_READABLE, ) elif typ == EventTypes.JoinRules: publicness = await self._get_key_change( prev_event_id, event_id, key_name="join_rule", public_value=JoinRules.PUBLIC, ) else: raise Exception("Invalid event type") if publicness is MatchChange.no_change: logger.debug("No change") return # There's been a change to or from being world readable. is_public = await self.store.is_room_world_readable_or_publicly_joinable( room_id ) logger.debug("Publicness change: %r, is_public: %r", publicness, is_public) if publicness is MatchChange.now_true and not is_public: # If we became world readable but room isn't currently public then # we ignore the change return elif publicness is MatchChange.now_false and is_public: # If we stopped being world readable but are still public, # ignore the change return users_in_room = await self.store.get_users_in_room(room_id) # Remove every user from the sharing tables for that room. for user_id in users_in_room: await self.store.remove_user_who_share_room(user_id, room_id) # Then, re-add all remote users and some local users to the tables. # NOTE: this is not the most efficient method, as _track_user_joined_room sets # up local_user -> other_user and other_user_whos_local -> local_user, # which when ran over an entire room, will result in the same values # being added multiple times. The batching upserts shouldn't make this # too bad, though. for user_id in users_in_room: if not self.is_mine_id( user_id ) or await self.store.should_include_local_user_in_dir(user_id): await self._track_user_joined_room(room_id, user_id) async def _handle_room_membership_event( self, room_id: str, prev_event_id: str, event_id: str, state_key: str, ) -> None: """Process a single room membershp event. We have to do two things: 1. Update the room-sharing tables. This applies to remote users and non-excluded local users. 2. Update the user_directory and user_directory_search tables. This applies to remote users only, because we only become aware of the (and any profile changes) by listening to these events. The rest of the application knows exactly when local users are created or their profile changed---it will directly call methods on this class. """ joined = await self._get_key_change( prev_event_id, event_id, key_name="membership", public_value=Membership.JOIN, ) # Both cases ignore excluded local users, so start by discarding them. is_remote = not self.is_mine_id(state_key) if not is_remote and not await self.store.should_include_local_user_in_dir( state_key ): return if joined is MatchChange.now_false: # Need to check if the server left the room entirely, if so # we might need to remove all the users in that room is_in_room = await self.store.is_host_joined(room_id, self.server_name) if not is_in_room: logger.debug("Server left room: %r", room_id) # Fetch all the users that we marked as being in user # directory due to being in the room and then check if # need to remove those users or not user_ids = await self.store.get_users_in_dir_due_to_room(room_id) for user_id in user_ids: await self._handle_remove_user(room_id, user_id) else: logger.debug("Server is still in room: %r", room_id) await self._handle_remove_user(room_id, state_key) elif joined is MatchChange.no_change: # Handle any profile changes for remote users. # (For local users the rest of the application calls # `handle_local_profile_change`.) if is_remote: await self._handle_possible_remote_profile_change( state_key, room_id, prev_event_id, event_id ) elif joined is MatchChange.now_true: # The user joined # This may be the first time we've seen a remote user. If # so, ensure we have a directory entry for them. (For local users, # the rest of the application calls `handle_local_profile_change`.) if is_remote: await self._upsert_directory_entry_for_remote_user(state_key, event_id) await self._track_user_joined_room(room_id, state_key) async def _upsert_directory_entry_for_remote_user( self, user_id: str, event_id: str ) -> None: """A remote user has just joined a room. Ensure they have an entry in the user directory. The caller is responsible for making sure they're remote. """ event = await self.store.get_event(event_id, allow_none=True) # It isn't expected for this event to not exist, but we # don't want the entire background process to break. if event is None: return logger.debug("Adding new user to dir, %r", user_id) await self.store.update_profile_in_user_dir( user_id, event.content.get("displayname"), event.content.get("avatar_url") ) async def _track_user_joined_room(self, room_id: str, user_id: str) -> None: """Someone's just joined a room. Update `users_in_public_rooms` or `users_who_share_private_rooms` as appropriate. The caller is responsible for ensuring that the given user should be included in the user directory. """ is_public = await self.store.is_room_world_readable_or_publicly_joinable( room_id ) if is_public: await self.store.add_users_in_public_rooms(room_id, (user_id,)) else: users_in_room = await self.store.get_users_in_room(room_id) other_users_in_room = [ other for other in users_in_room if other != user_id and ( not self.is_mine_id(other) or await self.store.should_include_local_user_in_dir(other) ) ] to_insert = set() # First, if they're our user then we need to update for every user if self.is_mine_id(user_id): for other_user_id in other_users_in_room: to_insert.add((user_id, other_user_id)) # Next we need to update for every local user in the room for other_user_id in other_users_in_room: if self.is_mine_id(other_user_id): to_insert.add((other_user_id, user_id)) if to_insert: await self.store.add_users_who_share_private_room(room_id, to_insert) async def _handle_remove_user(self, room_id: str, user_id: str) -> None: """Called when when someone leaves a room. The user may be local or remote. (If the person who left was the last local user in this room, the server is no longer in the room. We call this function to forget that the remaining remote users are in the room, even though they haven't left. So the name is a little misleading!) Args: room_id: The room ID that user left or stopped being public that user_id """ logger.debug("Removing user %r from room %r", user_id, room_id) # Remove user from sharing tables await self.store.remove_user_who_share_room(user_id, room_id) # Additionally, if they're a remote user and we're no longer joined # to any rooms they're in, remove them from the user directory. if not self.is_mine_id(user_id): rooms_user_is_in = await self.store.get_user_dir_rooms_user_is_in(user_id) if len(rooms_user_is_in) == 0: logger.debug("Removing user %r from directory", user_id) await self.store.remove_from_user_dir(user_id) async def _handle_possible_remote_profile_change( self, user_id: str, room_id: str, prev_event_id: Optional[str], event_id: Optional[str], ) -> None: """Check member event changes for any profile changes and update the database if there are. This is intended for remote users only. The caller is responsible for checking that the given user is remote. """ if not prev_event_id or not event_id: return prev_event = await self.store.get_event(prev_event_id, allow_none=True) event = await self.store.get_event(event_id, allow_none=True) if not prev_event or not event: return if event.membership != Membership.JOIN: return prev_name = prev_event.content.get("displayname") new_name = event.content.get("displayname") # If the new name is an unexpected form, do not update the directory. if not isinstance(new_name, str): new_name = prev_name prev_avatar = prev_event.content.get("avatar_url") new_avatar = event.content.get("avatar_url") # If the new avatar is an unexpected form, do not update the directory. if not isinstance(new_avatar, str): new_avatar = prev_avatar if prev_name != new_name or prev_avatar != new_avatar: await self.store.update_profile_in_user_dir(user_id, new_name, new_avatar) synapse-1.53.0/synapse/http/000077500000000000000000000000001420514467300157315ustar00rootroot00000000000000synapse-1.53.0/synapse/http/__init__.py000066400000000000000000000062701420514467300200470ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import re from typing import Union from twisted.internet import address, task from twisted.web.client import FileBodyProducer from twisted.web.iweb import IRequest from synapse.api.errors import SynapseError class RequestTimedOutError(SynapseError): """Exception representing timeout of an outbound request""" def __init__(self, msg: str): super().__init__(504, msg) ACCESS_TOKEN_RE = re.compile(r"(\?.*access(_|%5[Ff])token=)[^&]*(.*)$") CLIENT_SECRET_RE = re.compile(r"(\?.*client(_|%5[Ff])secret=)[^&]*(.*)$") def redact_uri(uri: str) -> str: """Strips sensitive information from the uri replaces with """ uri = ACCESS_TOKEN_RE.sub(r"\1\3", uri) return CLIENT_SECRET_RE.sub(r"\1\3", uri) class QuieterFileBodyProducer(FileBodyProducer): """Wrapper for FileBodyProducer that avoids CRITICAL errors when the connection drops. Workaround for https://github.com/matrix-org/synapse/issues/4003 / https://twistedmatrix.com/trac/ticket/6528 """ def stopProducing(self) -> None: try: FileBodyProducer.stopProducing(self) except task.TaskStopped: pass def get_request_uri(request: IRequest) -> bytes: """Return the full URI that was requested by the client""" return b"%s://%s%s" % ( b"https" if request.isSecure() else b"http", _get_requested_host(request), # despite its name, "request.uri" is only the path and query-string. request.uri, ) def _get_requested_host(request: IRequest) -> bytes: hostname = request.getHeader(b"host") if hostname: return hostname # no Host header, use the address/port that the request arrived on host: Union[address.IPv4Address, address.IPv6Address] = request.getHost() hostname = host.host.encode("ascii") if request.isSecure() and host.port == 443: # default port for https return hostname if not request.isSecure() and host.port == 80: # default port for http return hostname return b"%s:%i" % ( hostname, host.port, ) def get_request_user_agent(request: IRequest, default: str = "") -> str: """Return the last User-Agent header, or the given default.""" # There could be raw utf-8 bytes in the User-Agent header. # N.B. if you don't do this, the logger explodes cryptically # with maximum recursion trying to log errors about # the charset problem. # c.f. https://github.com/matrix-org/synapse/issues/3471 h = request.getHeader(b"User-Agent") return h.decode("ascii", "replace") if h else default synapse-1.53.0/synapse/http/additional_resource.py000066400000000000000000000040371420514467300223260ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Any, Awaitable, Callable, Optional, Tuple from twisted.web.server import Request from synapse.http.server import DirectServeJsonResource if TYPE_CHECKING: from synapse.server import HomeServer class AdditionalResource(DirectServeJsonResource): """Resource wrapper for additional_resources If the user has configured additional_resources, we need to wrap the handler class with a Resource so that we can map it into the resource tree. This class is also where we wrap the request handler with logging, metrics, and exception handling. """ def __init__( self, hs: "HomeServer", handler: Callable[[Request], Awaitable[Optional[Tuple[int, Any]]]], ): """Initialise AdditionalResource The ``handler`` should return a deferred which completes when it has done handling the request. It should write a response with ``request.write()``, and call ``request.finish()``. Args: hs: homeserver handler ((twisted.web.server.Request) -> twisted.internet.defer.Deferred): function to be called to handle the request. """ super().__init__() self._handler = handler async def _async_render(self, request: Request) -> Optional[Tuple[int, Any]]: # Cheekily pass the result straight through, so we don't need to worry # if its an awaitable or not. return await self._handler(request) synapse-1.53.0/synapse/http/client.py000066400000000000000000001000151420514467300175560ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from http import HTTPStatus from io import BytesIO from typing import ( TYPE_CHECKING, Any, BinaryIO, Callable, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple, Union, ) import treq from canonicaljson import encode_canonical_json from netaddr import AddrFormatError, IPAddress, IPSet from prometheus_client import Counter from typing_extensions import Protocol from zope.interface import implementer, provider from OpenSSL import SSL from OpenSSL.SSL import VERIFY_NONE from twisted.internet import defer, error as twisted_error, protocol, ssl from twisted.internet.address import IPv4Address, IPv6Address from twisted.internet.interfaces import ( IAddress, IHostResolution, IReactorPluggableNameResolver, IResolutionReceiver, ITCPTransport, ) from twisted.internet.protocol import connectionDone from twisted.internet.task import Cooperator from twisted.python.failure import Failure from twisted.web._newclient import ResponseDone from twisted.web.client import ( Agent, HTTPConnectionPool, ResponseNeverReceived, readBody, ) from twisted.web.http import PotentialDataLoss from twisted.web.http_headers import Headers from twisted.web.iweb import ( UNKNOWN_LENGTH, IAgent, IBodyProducer, IPolicyForHTTPS, IResponse, ) from synapse.api.errors import Codes, HttpResponseException, SynapseError from synapse.http import QuieterFileBodyProducer, RequestTimedOutError, redact_uri from synapse.http.proxyagent import ProxyAgent from synapse.logging.context import make_deferred_yieldable from synapse.logging.opentracing import set_tag, start_active_span, tags from synapse.types import ISynapseReactor from synapse.util import json_decoder from synapse.util.async_helpers import timeout_deferred if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) outgoing_requests_counter = Counter("synapse_http_client_requests", "", ["method"]) incoming_responses_counter = Counter( "synapse_http_client_responses", "", ["method", "code"] ) # the type of the headers list, to be passed to the t.w.h.Headers. # Actually we can mix str and bytes keys, but Mapping treats 'key' as invariant so # we simplify. RawHeaders = Union[Mapping[str, "RawHeaderValue"], Mapping[bytes, "RawHeaderValue"]] # the value actually has to be a List, but List is invariant so we can't specify that # the entries can either be Lists or bytes. RawHeaderValue = Sequence[Union[str, bytes]] # the type of the query params, to be passed into `urlencode` QueryParamValue = Union[str, bytes, Iterable[Union[str, bytes]]] QueryParams = Union[Mapping[str, QueryParamValue], Mapping[bytes, QueryParamValue]] def check_against_blacklist( ip_address: IPAddress, ip_whitelist: Optional[IPSet], ip_blacklist: IPSet ) -> bool: """ Compares an IP address to allowed and disallowed IP sets. Args: ip_address: The IP address to check ip_whitelist: Allowed IP addresses. ip_blacklist: Disallowed IP addresses. Returns: True if the IP address is in the blacklist and not in the whitelist. """ if ip_address in ip_blacklist: if ip_whitelist is None or ip_address not in ip_whitelist: return True return False _EPSILON = 0.00000001 def _make_scheduler(reactor): """Makes a schedular suitable for a Cooperator using the given reactor. (This is effectively just a copy from `twisted.internet.task`) """ def _scheduler(x): return reactor.callLater(_EPSILON, x) return _scheduler class _IPBlacklistingResolver: """ A proxy for reactor.nameResolver which only produces non-blacklisted IP addresses, preventing DNS rebinding attacks on URL preview. """ def __init__( self, reactor: IReactorPluggableNameResolver, ip_whitelist: Optional[IPSet], ip_blacklist: IPSet, ): """ Args: reactor: The twisted reactor. ip_whitelist: IP addresses to allow. ip_blacklist: IP addresses to disallow. """ self._reactor = reactor self._ip_whitelist = ip_whitelist self._ip_blacklist = ip_blacklist def resolveHostName( self, recv: IResolutionReceiver, hostname: str, portNumber: int = 0 ) -> IResolutionReceiver: addresses: List[IAddress] = [] def _callback() -> None: has_bad_ip = False for address in addresses: # We only expect IPv4 and IPv6 addresses since only A/AAAA lookups # should go through this path. if not isinstance(address, (IPv4Address, IPv6Address)): continue ip_address = IPAddress(address.host) if check_against_blacklist( ip_address, self._ip_whitelist, self._ip_blacklist ): logger.info( "Dropped %s from DNS resolution to %s due to blacklist" % (ip_address, hostname) ) has_bad_ip = True # if we have a blacklisted IP, we'd like to raise an error to block the # request, but all we can really do from here is claim that there were no # valid results. if not has_bad_ip: for address in addresses: recv.addressResolved(address) recv.resolutionComplete() @provider(IResolutionReceiver) class EndpointReceiver: @staticmethod def resolutionBegan(resolutionInProgress: IHostResolution) -> None: recv.resolutionBegan(resolutionInProgress) @staticmethod def addressResolved(address: IAddress) -> None: addresses.append(address) @staticmethod def resolutionComplete() -> None: _callback() self._reactor.nameResolver.resolveHostName( EndpointReceiver, hostname, portNumber=portNumber ) return recv @implementer(ISynapseReactor) class BlacklistingReactorWrapper: """ A Reactor wrapper which will prevent DNS resolution to blacklisted IP addresses, to prevent DNS rebinding. """ def __init__( self, reactor: IReactorPluggableNameResolver, ip_whitelist: Optional[IPSet], ip_blacklist: IPSet, ): self._reactor = reactor # We need to use a DNS resolver which filters out blacklisted IP # addresses, to prevent DNS rebinding. self._nameResolver = _IPBlacklistingResolver( self._reactor, ip_whitelist, ip_blacklist ) def __getattr__(self, attr: str) -> Any: # Passthrough to the real reactor except for the DNS resolver. if attr == "nameResolver": return self._nameResolver else: return getattr(self._reactor, attr) class BlacklistingAgentWrapper(Agent): """ An Agent wrapper which will prevent access to IP addresses being accessed directly (without an IP address lookup). """ def __init__( self, agent: IAgent, ip_whitelist: Optional[IPSet] = None, ip_blacklist: Optional[IPSet] = None, ): """ Args: agent: The Agent to wrap. ip_whitelist: IP addresses to allow. ip_blacklist: IP addresses to disallow. """ self._agent = agent self._ip_whitelist = ip_whitelist self._ip_blacklist = ip_blacklist def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> defer.Deferred: h = urllib.parse.urlparse(uri.decode("ascii")) try: ip_address = IPAddress(h.hostname) except AddrFormatError: # Not an IP pass else: if check_against_blacklist( ip_address, self._ip_whitelist, self._ip_blacklist ): logger.info("Blocking access to %s due to blacklist" % (ip_address,)) e = SynapseError( HTTPStatus.FORBIDDEN, "IP address blocked by IP blacklist entry" ) return defer.fail(Failure(e)) return self._agent.request( method, uri, headers=headers, bodyProducer=bodyProducer ) class SimpleHttpClient: """ A simple, no-frills HTTP client with methods that wrap up common ways of using HTTP in Matrix """ def __init__( self, hs: "HomeServer", treq_args: Optional[Dict[str, Any]] = None, ip_whitelist: Optional[IPSet] = None, ip_blacklist: Optional[IPSet] = None, use_proxy: bool = False, ): """ Args: hs treq_args: Extra keyword arguments to be given to treq.request. ip_blacklist: The IP addresses that are blacklisted that we may not request. ip_whitelist: The whitelisted IP addresses, that we can request if it were otherwise caught in a blacklist. use_proxy: Whether proxy settings should be discovered and used from conventional environment variables. """ self.hs = hs self._ip_whitelist = ip_whitelist self._ip_blacklist = ip_blacklist self._extra_treq_args = treq_args or {} self.clock = hs.get_clock() user_agent = hs.version_string if hs.config.server.user_agent_suffix: user_agent = "%s %s" % ( user_agent, hs.config.server.user_agent_suffix, ) self.user_agent = user_agent.encode("ascii") # We use this for our body producers to ensure that they use the correct # reactor. self._cooperator = Cooperator(scheduler=_make_scheduler(hs.get_reactor())) if self._ip_blacklist: # If we have an IP blacklist, we need to use a DNS resolver which # filters out blacklisted IP addresses, to prevent DNS rebinding. self.reactor: ISynapseReactor = BlacklistingReactorWrapper( hs.get_reactor(), self._ip_whitelist, self._ip_blacklist ) else: self.reactor = hs.get_reactor() # the pusher makes lots of concurrent SSL connections to sygnal, and # tends to do so in batches, so we need to allow the pool to keep # lots of idle connections around. pool = HTTPConnectionPool(self.reactor) # XXX: The justification for using the cache factor here is that larger instances # will need both more cache and more connections. # Still, this should probably be a separate dial pool.maxPersistentPerHost = max((100 * hs.config.caches.global_factor, 5)) pool.cachedConnectionTimeout = 2 * 60 self.agent: IAgent = ProxyAgent( self.reactor, hs.get_reactor(), connectTimeout=15, contextFactory=self.hs.get_http_client_context_factory(), pool=pool, use_proxy=use_proxy, ) if self._ip_blacklist: # If we have an IP blacklist, we then install the blacklisting Agent # which prevents direct access to IP addresses, that are not caught # by the DNS resolution. self.agent = BlacklistingAgentWrapper( self.agent, ip_whitelist=self._ip_whitelist, ip_blacklist=self._ip_blacklist, ) async def request( self, method: str, uri: str, data: Optional[bytes] = None, headers: Optional[Headers] = None, ) -> IResponse: """ Args: method: HTTP method to use. uri: URI to query. data: Data to send in the request body, if applicable. headers: Request headers. Returns: Response object, once the headers have been read. Raises: RequestTimedOutError if the request times out before the headers are read """ outgoing_requests_counter.labels(method).inc() # log request but strip `access_token` (AS requests for example include this) logger.debug("Sending request %s %s", method, redact_uri(uri)) with start_active_span( "outgoing-client-request", tags={ tags.SPAN_KIND: tags.SPAN_KIND_RPC_CLIENT, tags.HTTP_METHOD: method, tags.HTTP_URL: uri, }, finish_on_close=True, ): try: body_producer = None if data is not None: body_producer = QuieterFileBodyProducer( BytesIO(data), cooperator=self._cooperator, ) request_deferred: defer.Deferred = treq.request( method, uri, agent=self.agent, data=body_producer, headers=headers, # Avoid buffering the body in treq since we do not reuse # response bodies. unbuffered=True, **self._extra_treq_args, ) # we use our own timeout mechanism rather than treq's as a workaround # for https://twistedmatrix.com/trac/ticket/9534. request_deferred = timeout_deferred( request_deferred, 60, self.hs.get_reactor(), ) # turn timeouts into RequestTimedOutErrors request_deferred.addErrback(_timeout_to_request_timed_out_error) response = await make_deferred_yieldable(request_deferred) incoming_responses_counter.labels(method, response.code).inc() logger.info( "Received response to %s %s: %s", method, redact_uri(uri), response.code, ) return response except Exception as e: incoming_responses_counter.labels(method, "ERR").inc() logger.info( "Error sending request to %s %s: %s %s", method, redact_uri(uri), type(e).__name__, e.args[0], ) set_tag(tags.ERROR, True) set_tag("error_reason", e.args[0]) raise async def post_urlencoded_get_json( self, uri: str, args: Optional[Mapping[str, Union[str, List[str]]]] = None, headers: Optional[RawHeaders] = None, ) -> Any: """ Args: uri: uri to query args: parameters to be url-encoded in the body headers: a map from header name to a list of values for that header Returns: parsed json Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException: On a non-2xx HTTP response. ValueError: if the response was not JSON """ # TODO: Do we ever want to log message contents? logger.debug("post_urlencoded_get_json args: %s", args) query_bytes = encode_query_args(args) actual_headers = { b"Content-Type": [b"application/x-www-form-urlencoded"], b"User-Agent": [self.user_agent], b"Accept": [b"application/json"], } if headers: actual_headers.update(headers) # type: ignore response = await self.request( "POST", uri, headers=Headers(actual_headers), data=query_bytes ) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return json_decoder.decode(body.decode("utf-8")) else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) async def post_json_get_json( self, uri: str, post_json: Any, headers: Optional[RawHeaders] = None ) -> Any: """ Args: uri: URI to query. post_json: request body, to be encoded as json headers: a map from header name to a list of values for that header Returns: parsed json Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException: On a non-2xx HTTP response. ValueError: if the response was not JSON """ json_str = encode_canonical_json(post_json) logger.debug("HTTP POST %s -> %s", json_str, uri) actual_headers = { b"Content-Type": [b"application/json"], b"User-Agent": [self.user_agent], b"Accept": [b"application/json"], } if headers: actual_headers.update(headers) # type: ignore response = await self.request( "POST", uri, headers=Headers(actual_headers), data=json_str ) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return json_decoder.decode(body.decode("utf-8")) else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) async def get_json( self, uri: str, args: Optional[QueryParams] = None, headers: Optional[RawHeaders] = None, ) -> Any: """Gets some json from the given URI. Args: uri: The URI to request, not including query parameters args: A dictionary used to create query string headers: a map from header name to a list of values for that header Returns: Succeeds when we get a 2xx HTTP response, with the HTTP body as JSON. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException On a non-2xx HTTP response. ValueError: if the response was not JSON """ actual_headers = {b"Accept": [b"application/json"]} if headers: actual_headers.update(headers) # type: ignore body = await self.get_raw(uri, args, headers=actual_headers) return json_decoder.decode(body.decode("utf-8")) async def put_json( self, uri: str, json_body: Any, args: Optional[QueryParams] = None, headers: Optional[RawHeaders] = None, ) -> Any: """Puts some json to the given URI. Args: uri: The URI to request, not including query parameters json_body: The JSON to put in the HTTP body, args: A dictionary used to create query strings headers: a map from header name to a list of values for that header Returns: Succeeds when we get a 2xx HTTP response, with the HTTP body as JSON. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException On a non-2xx HTTP response. ValueError: if the response was not JSON """ if args: query_str = urllib.parse.urlencode(args, True) uri = "%s?%s" % (uri, query_str) json_str = encode_canonical_json(json_body) actual_headers = { b"Content-Type": [b"application/json"], b"User-Agent": [self.user_agent], b"Accept": [b"application/json"], } if headers: actual_headers.update(headers) # type: ignore response = await self.request( "PUT", uri, headers=Headers(actual_headers), data=json_str ) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return json_decoder.decode(body.decode("utf-8")) else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) async def get_raw( self, uri: str, args: Optional[QueryParams] = None, headers: Optional[RawHeaders] = None, ) -> bytes: """Gets raw text from the given URI. Args: uri: The URI to request, not including query parameters args: A dictionary used to create query strings headers: a map from header name to a list of values for that header Returns: Succeeds when we get a 2xx HTTP response, with the HTTP body as bytes. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException on a non-2xx HTTP response. """ if args: query_str = urllib.parse.urlencode(args, True) uri = "%s?%s" % (uri, query_str) actual_headers = {b"User-Agent": [self.user_agent]} if headers: actual_headers.update(headers) # type: ignore response = await self.request("GET", uri, headers=Headers(actual_headers)) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return body else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) # XXX: FIXME: This is horribly copy-pasted from matrixfederationclient. # The two should be factored out. async def get_file( self, url: str, output_stream: BinaryIO, max_size: Optional[int] = None, headers: Optional[RawHeaders] = None, is_allowed_content_type: Optional[Callable[[str], bool]] = None, ) -> Tuple[int, Dict[bytes, List[bytes]], str, int]: """GETs a file from a given URL Args: url: The URL to GET output_stream: File to write the response body to. headers: A map from header name to a list of values for that header is_allowed_content_type: A predicate to determine whether the content type of the file we're downloading is allowed. If set and it evaluates to False when called with the content type, the request will be terminated before completing the download by raising SynapseError. Returns: A tuple of the file length, dict of the response headers, absolute URI of the response and HTTP response code. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. SynapseError: if the response is not a 2xx, the remote file is too large, or another exception happens during the download. """ actual_headers = {b"User-Agent": [self.user_agent]} if headers: actual_headers.update(headers) # type: ignore response = await self.request("GET", url, headers=Headers(actual_headers)) resp_headers = dict(response.headers.getAllRawHeaders()) if response.code > 299: logger.warning("Got %d when downloading %s" % (response.code, url)) raise SynapseError( HTTPStatus.BAD_GATEWAY, "Got error %d" % (response.code,), Codes.UNKNOWN ) if is_allowed_content_type and b"Content-Type" in resp_headers: content_type = resp_headers[b"Content-Type"][0].decode("ascii") if not is_allowed_content_type(content_type): raise SynapseError( HTTPStatus.BAD_GATEWAY, ( "Requested file's content type not allowed for this operation: %s" % content_type ), ) # TODO: if our Content-Type is HTML or something, just read the first # N bytes into RAM rather than saving it all to disk only to read it # straight back in again try: d = read_body_with_max_size(response, output_stream, max_size) # Ensure that the body is not read forever. d = timeout_deferred(d, 30, self.hs.get_reactor()) length = await make_deferred_yieldable(d) except BodyExceededMaxSize: raise SynapseError( HTTPStatus.BAD_GATEWAY, "Requested file is too large > %r bytes" % (max_size,), Codes.TOO_LARGE, ) except defer.TimeoutError: raise SynapseError( HTTPStatus.BAD_GATEWAY, "Requested file took too long to download", Codes.TOO_LARGE, ) except Exception as e: raise SynapseError( HTTPStatus.BAD_GATEWAY, ("Failed to download remote body: %s" % e) ) from e return ( length, resp_headers, response.request.absoluteURI.decode("ascii"), response.code, ) def _timeout_to_request_timed_out_error(f: Failure): if f.check(twisted_error.TimeoutError, twisted_error.ConnectingCancelledError): # The TCP connection has its own timeout (set by the 'connectTimeout' param # on the Agent), which raises twisted_error.TimeoutError exception. raise RequestTimedOutError("Timeout connecting to remote server") elif f.check(defer.TimeoutError, ResponseNeverReceived): # this one means that we hit our overall timeout on the request raise RequestTimedOutError("Timeout waiting for response from remote server") return f class ByteWriteable(Protocol): """The type of object which must be passed into read_body_with_max_size. Typically this is a file object. """ def write(self, data: bytes) -> int: pass class BodyExceededMaxSize(Exception): """The maximum allowed size of the HTTP body was exceeded.""" class _DiscardBodyWithMaxSizeProtocol(protocol.Protocol): """A protocol which immediately errors upon receiving data.""" transport: Optional[ITCPTransport] = None def __init__(self, deferred: defer.Deferred): self.deferred = deferred def _maybe_fail(self): """ Report a max size exceed error and disconnect the first time this is called. """ if not self.deferred.called: self.deferred.errback(BodyExceededMaxSize()) # Close the connection (forcefully) since all the data will get # discarded anyway. assert self.transport is not None self.transport.abortConnection() def dataReceived(self, data: bytes) -> None: self._maybe_fail() def connectionLost(self, reason: Failure = connectionDone) -> None: self._maybe_fail() class _ReadBodyWithMaxSizeProtocol(protocol.Protocol): """A protocol which reads body to a stream, erroring if the body exceeds a maximum size.""" transport: Optional[ITCPTransport] = None def __init__( self, stream: ByteWriteable, deferred: defer.Deferred, max_size: Optional[int] ): self.stream = stream self.deferred = deferred self.length = 0 self.max_size = max_size def dataReceived(self, data: bytes) -> None: # If the deferred was called, bail early. if self.deferred.called: return try: self.stream.write(data) except Exception: self.deferred.errback() return self.length += len(data) # The first time the maximum size is exceeded, error and cancel the # connection. dataReceived might be called again if data was received # in the meantime. if self.max_size is not None and self.length >= self.max_size: self.deferred.errback(BodyExceededMaxSize()) # Close the connection (forcefully) since all the data will get # discarded anyway. assert self.transport is not None self.transport.abortConnection() def connectionLost(self, reason: Failure = connectionDone) -> None: # If the maximum size was already exceeded, there's nothing to do. if self.deferred.called: return if reason.check(ResponseDone): self.deferred.callback(self.length) elif reason.check(PotentialDataLoss): # stolen from https://github.com/twisted/treq/pull/49/files # http://twistedmatrix.com/trac/ticket/4840 self.deferred.callback(self.length) else: self.deferred.errback(reason) def read_body_with_max_size( response: IResponse, stream: ByteWriteable, max_size: Optional[int] ) -> "defer.Deferred[int]": """ Read a HTTP response body to a file-object. Optionally enforcing a maximum file size. If the maximum file size is reached, the returned Deferred will resolve to a Failure with a BodyExceededMaxSize exception. Args: response: The HTTP response to read from. stream: The file-object to write to. max_size: The maximum file size to allow. Returns: A Deferred which resolves to the length of the read body. """ d: "defer.Deferred[int]" = defer.Deferred() # If the Content-Length header gives a size larger than the maximum allowed # size, do not bother downloading the body. if max_size is not None and response.length != UNKNOWN_LENGTH: if response.length > max_size: response.deliverBody(_DiscardBodyWithMaxSizeProtocol(d)) return d response.deliverBody(_ReadBodyWithMaxSizeProtocol(stream, d, max_size)) return d def encode_query_args(args: Optional[Mapping[str, Union[str, List[str]]]]) -> bytes: """ Encodes a map of query arguments to bytes which can be appended to a URL. Args: args: The query arguments, a mapping of string to string or list of strings. Returns: The query arguments encoded as bytes. """ if args is None: return b"" encoded_args = {} for k, vs in args.items(): if isinstance(vs, str): vs = [vs] encoded_args[k] = [v.encode("utf8") for v in vs] query_str = urllib.parse.urlencode(encoded_args, True) return query_str.encode("utf8") @implementer(IPolicyForHTTPS) class InsecureInterceptableContextFactory(ssl.ContextFactory): """ Factory for PyOpenSSL SSL contexts which accepts any certificate for any domain. Do not use this since it allows an attacker to intercept your communications. """ def __init__(self): self._context = SSL.Context(SSL.SSLv23_METHOD) self._context.set_verify(VERIFY_NONE, lambda *_: False) def getContext(self, hostname=None, port=None): return self._context def creatorForNetloc(self, hostname, port): return self synapse-1.53.0/synapse/http/connectproxyclient.py000066400000000000000000000223551420514467300222440ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import base64 import logging from typing import Optional import attr from zope.interface import implementer from twisted.internet import defer, protocol from twisted.internet.error import ConnectError from twisted.internet.interfaces import IReactorCore, IStreamClientEndpoint from twisted.internet.protocol import ClientFactory, Protocol, connectionDone from twisted.web import http logger = logging.getLogger(__name__) class ProxyConnectError(ConnectError): pass @attr.s(auto_attribs=True) class ProxyCredentials: username_password: bytes def as_proxy_authorization_value(self) -> bytes: """ Return the value for a Proxy-Authorization header (i.e. 'Basic abdef=='). Returns: A transformation of the authentication string the encoded value for a Proxy-Authorization header. """ # Encode as base64 and prepend the authorization type return b"Basic " + base64.encodebytes(self.username_password) @implementer(IStreamClientEndpoint) class HTTPConnectProxyEndpoint: """An Endpoint implementation which will send a CONNECT request to an http proxy Wraps an existing HostnameEndpoint for the proxy. When we get the connect() request from the connection pool (via the TLS wrapper), we'll first connect to the proxy endpoint with a ProtocolFactory which will make the CONNECT request. Once that completes, we invoke the protocolFactory which was passed in. Args: reactor: the Twisted reactor to use for the connection proxy_endpoint: the endpoint to use to connect to the proxy host: hostname that we want to CONNECT to port: port that we want to connect to proxy_creds: credentials to authenticate at proxy """ def __init__( self, reactor: IReactorCore, proxy_endpoint: IStreamClientEndpoint, host: bytes, port: int, proxy_creds: Optional[ProxyCredentials], ): self._reactor = reactor self._proxy_endpoint = proxy_endpoint self._host = host self._port = port self._proxy_creds = proxy_creds def __repr__(self): return "" % (self._proxy_endpoint,) # Mypy encounters a false positive here: it complains that ClientFactory # is incompatible with IProtocolFactory. But ClientFactory inherits from # Factory, which implements IProtocolFactory. So I think this is a bug # in mypy-zope. def connect(self, protocolFactory: ClientFactory): # type: ignore[override] f = HTTPProxiedClientFactory( self._host, self._port, protocolFactory, self._proxy_creds ) d = self._proxy_endpoint.connect(f) # once the tcp socket connects successfully, we need to wait for the # CONNECT to complete. d.addCallback(lambda conn: f.on_connection) return d class HTTPProxiedClientFactory(protocol.ClientFactory): """ClientFactory wrapper that triggers an HTTP proxy CONNECT on connect. Once the CONNECT completes, invokes the original ClientFactory to build the HTTP Protocol object and run the rest of the connection. Args: dst_host: hostname that we want to CONNECT to dst_port: port that we want to connect to wrapped_factory: The original Factory proxy_creds: credentials to authenticate at proxy """ def __init__( self, dst_host: bytes, dst_port: int, wrapped_factory: ClientFactory, proxy_creds: Optional[ProxyCredentials], ): self.dst_host = dst_host self.dst_port = dst_port self.wrapped_factory = wrapped_factory self.proxy_creds = proxy_creds self.on_connection: "defer.Deferred[None]" = defer.Deferred() def startedConnecting(self, connector): return self.wrapped_factory.startedConnecting(connector) def buildProtocol(self, addr): wrapped_protocol = self.wrapped_factory.buildProtocol(addr) if wrapped_protocol is None: raise TypeError("buildProtocol produced None instead of a Protocol") return HTTPConnectProtocol( self.dst_host, self.dst_port, wrapped_protocol, self.on_connection, self.proxy_creds, ) def clientConnectionFailed(self, connector, reason): logger.debug("Connection to proxy failed: %s", reason) if not self.on_connection.called: self.on_connection.errback(reason) return self.wrapped_factory.clientConnectionFailed(connector, reason) def clientConnectionLost(self, connector, reason): logger.debug("Connection to proxy lost: %s", reason) if not self.on_connection.called: self.on_connection.errback(reason) return self.wrapped_factory.clientConnectionLost(connector, reason) class HTTPConnectProtocol(protocol.Protocol): """Protocol that wraps an existing Protocol to do a CONNECT handshake at connect Args: host: The original HTTP(s) hostname or IPv4 or IPv6 address literal to put in the CONNECT request port: The original HTTP(s) port to put in the CONNECT request wrapped_protocol: the original protocol (probably HTTPChannel or TLSMemoryBIOProtocol, but could be anything really) connected_deferred: a Deferred which will be callbacked with wrapped_protocol when the CONNECT completes proxy_creds: credentials to authenticate at proxy """ def __init__( self, host: bytes, port: int, wrapped_protocol: Protocol, connected_deferred: defer.Deferred, proxy_creds: Optional[ProxyCredentials], ): self.host = host self.port = port self.wrapped_protocol = wrapped_protocol self.connected_deferred = connected_deferred self.proxy_creds = proxy_creds self.http_setup_client = HTTPConnectSetupClient( self.host, self.port, self.proxy_creds ) self.http_setup_client.on_connected.addCallback(self.proxyConnected) def connectionMade(self): self.http_setup_client.makeConnection(self.transport) def connectionLost(self, reason=connectionDone): if self.wrapped_protocol.connected: self.wrapped_protocol.connectionLost(reason) self.http_setup_client.connectionLost(reason) if not self.connected_deferred.called: self.connected_deferred.errback(reason) def proxyConnected(self, _): self.wrapped_protocol.makeConnection(self.transport) self.connected_deferred.callback(self.wrapped_protocol) # Get any pending data from the http buf and forward it to the original protocol buf = self.http_setup_client.clearLineBuffer() if buf: self.wrapped_protocol.dataReceived(buf) def dataReceived(self, data: bytes): # if we've set up the HTTP protocol, we can send the data there if self.wrapped_protocol.connected: return self.wrapped_protocol.dataReceived(data) # otherwise, we must still be setting up the connection: send the data to the # setup client return self.http_setup_client.dataReceived(data) class HTTPConnectSetupClient(http.HTTPClient): """HTTPClient protocol to send a CONNECT message for proxies and read the response. Args: host: The hostname to send in the CONNECT message port: The port to send in the CONNECT message proxy_creds: credentials to authenticate at proxy """ def __init__( self, host: bytes, port: int, proxy_creds: Optional[ProxyCredentials], ): self.host = host self.port = port self.proxy_creds = proxy_creds self.on_connected: "defer.Deferred[None]" = defer.Deferred() def connectionMade(self): logger.debug("Connected to proxy, sending CONNECT") self.sendCommand(b"CONNECT", b"%s:%d" % (self.host, self.port)) # Determine whether we need to set Proxy-Authorization headers if self.proxy_creds: # Set a Proxy-Authorization header self.sendHeader( b"Proxy-Authorization", self.proxy_creds.as_proxy_authorization_value(), ) self.endHeaders() def handleStatus(self, version: bytes, status: bytes, message: bytes): logger.debug("Got Status: %s %s %s", status, message, version) if status != b"200": raise ProxyConnectError(f"Unexpected status on CONNECT: {status!s}") def handleEndHeaders(self): logger.debug("End Headers") self.on_connected.callback(None) def handleResponse(self, body): pass synapse-1.53.0/synapse/http/federation/000077500000000000000000000000001420514467300200515ustar00rootroot00000000000000synapse-1.53.0/synapse/http/federation/__init__.py000066400000000000000000000011021420514467300221540ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/http/federation/matrix_federation_agent.py000066400000000000000000000370721420514467300253160ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from typing import Any, Generator, List, Optional from urllib.request import ( # type: ignore[attr-defined] getproxies_environment, proxy_bypass_environment, ) from netaddr import AddrFormatError, IPAddress, IPSet from zope.interface import implementer from twisted.internet import defer from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS from twisted.internet.interfaces import ( IProtocol, IProtocolFactory, IReactorCore, IStreamClientEndpoint, ) from twisted.web.client import URI, Agent, HTTPConnectionPool from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IAgentEndpointFactory, IBodyProducer, IResponse from synapse.crypto.context_factory import FederationPolicyForHTTPS from synapse.http import proxyagent from synapse.http.client import BlacklistingAgentWrapper, BlacklistingReactorWrapper from synapse.http.connectproxyclient import HTTPConnectProxyEndpoint from synapse.http.federation.srv_resolver import Server, SrvResolver from synapse.http.federation.well_known_resolver import WellKnownResolver from synapse.http.proxyagent import ProxyAgent from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.types import ISynapseReactor from synapse.util import Clock logger = logging.getLogger(__name__) @implementer(IAgent) class MatrixFederationAgent: """An Agent-like thing which provides a `request` method which correctly handles resolving matrix server names when using matrix://. Handles standard https URIs as normal. Doesn't implement any retries. (Those are done in MatrixFederationHttpClient.) Args: reactor: twisted reactor to use for underlying requests tls_client_options_factory: factory to use for fetching client tls options, or none to disable TLS. user_agent: The user agent header to use for federation requests. ip_whitelist: Allowed IP addresses. ip_blacklist: Disallowed IP addresses. proxy_reactor: twisted reactor to use for connections to the proxy server reactor might have some blacklisting applied (i.e. for DNS queries), but we need unblocked access to the proxy. _srv_resolver: SrvResolver implementation to use for looking up SRV records. None to use a default implementation. _well_known_resolver: WellKnownResolver to use to perform well-known lookups. None to use a default implementation. """ def __init__( self, reactor: ISynapseReactor, tls_client_options_factory: Optional[FederationPolicyForHTTPS], user_agent: bytes, ip_whitelist: IPSet, ip_blacklist: IPSet, _srv_resolver: Optional[SrvResolver] = None, _well_known_resolver: Optional[WellKnownResolver] = None, ): # proxy_reactor is not blacklisted proxy_reactor = reactor # We need to use a DNS resolver which filters out blacklisted IP # addresses, to prevent DNS rebinding. reactor = BlacklistingReactorWrapper(reactor, ip_whitelist, ip_blacklist) self._clock = Clock(reactor) self._pool = HTTPConnectionPool(reactor) self._pool.retryAutomatically = False self._pool.maxPersistentPerHost = 5 self._pool.cachedConnectionTimeout = 2 * 60 self._agent = Agent.usingEndpointFactory( reactor, MatrixHostnameEndpointFactory( reactor, proxy_reactor, tls_client_options_factory, _srv_resolver, ), pool=self._pool, ) self.user_agent = user_agent if _well_known_resolver is None: _well_known_resolver = WellKnownResolver( reactor, agent=BlacklistingAgentWrapper( ProxyAgent( reactor, proxy_reactor, pool=self._pool, contextFactory=tls_client_options_factory, use_proxy=True, ), ip_blacklist=ip_blacklist, ), user_agent=self.user_agent, ) self._well_known_resolver = _well_known_resolver @defer.inlineCallbacks def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> Generator[defer.Deferred, Any, IResponse]: """ Args: method: HTTP method: GET/POST/etc uri: Absolute URI to be retrieved headers: HTTP headers to send with the request, or None to send no extra headers. bodyProducer: An object which can generate bytes to make up the body of this request (for example, the properly encoded contents of a file for a file upload). Or None if the request is to have no body. Returns: Deferred[twisted.web.iweb.IResponse]: fires when the header of the response has been received (regardless of the response status code). Fails if there is any problem which prevents that response from being received (including problems that prevent the request from being sent). """ # We use urlparse as that will set `port` to None if there is no # explicit port. parsed_uri = urllib.parse.urlparse(uri) # There must be a valid hostname. assert parsed_uri.hostname # If this is a matrix:// URI check if the server has delegated matrix # traffic using well-known delegation. # # We have to do this here and not in the endpoint as we need to rewrite # the host header with the delegated server name. delegated_server = None if ( parsed_uri.scheme == b"matrix" and not _is_ip_literal(parsed_uri.hostname) and not parsed_uri.port ): well_known_result = yield defer.ensureDeferred( self._well_known_resolver.get_well_known(parsed_uri.hostname) ) delegated_server = well_known_result.delegated_server if delegated_server: # Ok, the server has delegated matrix traffic to somewhere else, so # lets rewrite the URL to replace the server with the delegated # server name. uri = urllib.parse.urlunparse( ( parsed_uri.scheme, delegated_server, parsed_uri.path, parsed_uri.params, parsed_uri.query, parsed_uri.fragment, ) ) parsed_uri = urllib.parse.urlparse(uri) # We need to make sure the host header is set to the netloc of the # server and that a user-agent is provided. if headers is None: request_headers = Headers() else: request_headers = headers.copy() if not request_headers.hasHeader(b"host"): request_headers.addRawHeader(b"host", parsed_uri.netloc) if not request_headers.hasHeader(b"user-agent"): request_headers.addRawHeader(b"user-agent", self.user_agent) res = yield make_deferred_yieldable( self._agent.request(method, uri, request_headers, bodyProducer) ) return res @implementer(IAgentEndpointFactory) class MatrixHostnameEndpointFactory: """Factory for MatrixHostnameEndpoint for parsing to an Agent.""" def __init__( self, reactor: IReactorCore, proxy_reactor: IReactorCore, tls_client_options_factory: Optional[FederationPolicyForHTTPS], srv_resolver: Optional[SrvResolver], ): self._reactor = reactor self._proxy_reactor = proxy_reactor self._tls_client_options_factory = tls_client_options_factory if srv_resolver is None: srv_resolver = SrvResolver() self._srv_resolver = srv_resolver def endpointForURI(self, parsed_uri: URI): return MatrixHostnameEndpoint( self._reactor, self._proxy_reactor, self._tls_client_options_factory, self._srv_resolver, parsed_uri, ) @implementer(IStreamClientEndpoint) class MatrixHostnameEndpoint: """An endpoint that resolves matrix:// URLs using Matrix server name resolution (i.e. via SRV). Does not check for well-known delegation. Args: reactor: twisted reactor to use for underlying requests proxy_reactor: twisted reactor to use for connections to the proxy server. 'reactor' might have some blacklisting applied (i.e. for DNS queries), but we need unblocked access to the proxy. tls_client_options_factory: factory to use for fetching client tls options, or none to disable TLS. srv_resolver: The SRV resolver to use parsed_uri: The parsed URI that we're wanting to connect to. Raises: ValueError if the environment variables contain an invalid proxy specification. RuntimeError if no tls_options_factory is given for a https connection """ def __init__( self, reactor: IReactorCore, proxy_reactor: IReactorCore, tls_client_options_factory: Optional[FederationPolicyForHTTPS], srv_resolver: SrvResolver, parsed_uri: URI, ): self._reactor = reactor self._parsed_uri = parsed_uri # http_proxy is not needed because federation is always over TLS proxies = getproxies_environment() https_proxy = proxies["https"].encode() if "https" in proxies else None self.no_proxy = proxies["no"] if "no" in proxies else None # endpoint and credentials to use to connect to the outbound https proxy, if any. ( self._https_proxy_endpoint, self._https_proxy_creds, ) = proxyagent.http_proxy_endpoint( https_proxy, proxy_reactor, tls_client_options_factory, ) # set up the TLS connection params # # XXX disabling TLS is really only supported here for the benefit of the # unit tests. We should make the UTs cope with TLS rather than having to make # the code support the unit tests. if tls_client_options_factory is None: self._tls_options = None else: self._tls_options = tls_client_options_factory.get_options( self._parsed_uri.host ) self._srv_resolver = srv_resolver def connect( self, protocol_factory: IProtocolFactory ) -> "defer.Deferred[IProtocol]": """Implements IStreamClientEndpoint interface""" return run_in_background(self._do_connect, protocol_factory) async def _do_connect(self, protocol_factory: IProtocolFactory) -> IProtocol: first_exception = None server_list = await self._resolve_server() for server in server_list: host = server.host port = server.port should_skip_proxy = False if self.no_proxy is not None: should_skip_proxy = proxy_bypass_environment( host.decode(), proxies={"no": self.no_proxy}, ) endpoint: IStreamClientEndpoint try: if self._https_proxy_endpoint and not should_skip_proxy: logger.debug( "Connecting to %s:%i via %s", host.decode("ascii"), port, self._https_proxy_endpoint, ) endpoint = HTTPConnectProxyEndpoint( self._reactor, self._https_proxy_endpoint, host, port, proxy_creds=self._https_proxy_creds, ) else: logger.debug("Connecting to %s:%i", host.decode("ascii"), port) # not using a proxy endpoint = HostnameEndpoint(self._reactor, host, port) if self._tls_options: endpoint = wrapClientTLS(self._tls_options, endpoint) result = await make_deferred_yieldable( endpoint.connect(protocol_factory) ) return result except Exception as e: logger.info( "Failed to connect to %s:%i: %s", host.decode("ascii"), port, e ) if not first_exception: first_exception = e # We return the first failure because that's probably the most interesting. if first_exception: raise first_exception # This shouldn't happen as we should always have at least one host/port # to try and if that doesn't work then we'll have an exception. raise Exception("Failed to resolve server %r" % (self._parsed_uri.netloc,)) async def _resolve_server(self) -> List[Server]: """Resolves the server name to a list of hosts and ports to attempt to connect to. """ if self._parsed_uri.scheme != b"matrix": return [Server(host=self._parsed_uri.host, port=self._parsed_uri.port)] # Note: We don't do well-known lookup as that needs to have happened # before now, due to needing to rewrite the Host header of the HTTP # request. # We reparse the URI so that defaultPort is -1 rather than 80 parsed_uri = urllib.parse.urlparse(self._parsed_uri.toBytes()) host = parsed_uri.hostname port = parsed_uri.port # If there is an explicit port or the host is an IP address we bypass # SRV lookups and just use the given host/port. if port or _is_ip_literal(host): return [Server(host, port or 8448)] logger.debug("Looking up SRV record for %s", host.decode(errors="replace")) server_list = await self._srv_resolver.resolve_service(b"_matrix._tcp." + host) if server_list: logger.debug( "Got %s from SRV lookup for %s", ", ".join(map(str, server_list)), host.decode(errors="replace"), ) return server_list # No SRV records, so we fallback to host and 8448 logger.debug("No SRV records for %s", host.decode(errors="replace")) return [Server(host, 8448)] def _is_ip_literal(host: bytes) -> bool: """Test if the given host name is either an IPv4 or IPv6 literal. Args: host: The host name to check Returns: True if the hostname is an IP address literal. """ host_str = host.decode("ascii") try: IPAddress(host_str) return True except AddrFormatError: return False synapse-1.53.0/synapse/http/federation/srv_resolver.py000066400000000000000000000133051420514467300231600ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random import time from typing import Callable, Dict, List import attr from twisted.internet.error import ConnectError from twisted.names import client, dns from twisted.names.error import DNSNameError, DomainError from synapse.logging.context import make_deferred_yieldable logger = logging.getLogger(__name__) SERVER_CACHE: Dict[bytes, List["Server"]] = {} @attr.s(auto_attribs=True, slots=True, frozen=True) class Server: """ Our record of an individual server which can be tried to reach a destination. Attributes: host: target hostname port: priority: weight: expires: when the cache should expire this record - in *seconds* since the epoch """ host: bytes port: int priority: int = 0 weight: int = 0 expires: int = 0 def _sort_server_list(server_list: List[Server]) -> List[Server]: """Given a list of SRV records sort them into priority order and shuffle each priority with the given weight. """ priority_map: Dict[int, List[Server]] = {} for server in server_list: priority_map.setdefault(server.priority, []).append(server) results = [] for priority in sorted(priority_map): servers = priority_map[priority] # This algorithms roughly follows the algorithm described in RFC2782, # changed to remove an off-by-one error. # # N.B. Weights can be zero, which means that they should be picked # rarely. total_weight = sum(s.weight for s in servers) # Total weight can become zero if there are only zero weight servers # left, which we handle by just shuffling and appending to the results. while servers and total_weight: target_weight = random.randint(1, total_weight) for s in servers: target_weight -= s.weight if target_weight <= 0: break results.append(s) servers.remove(s) total_weight -= s.weight if servers: random.shuffle(servers) results.extend(servers) return results class SrvResolver: """Interface to the dns client to do SRV lookups, with result caching. The default resolver in twisted.names doesn't do any caching (it has a CacheResolver, but the cache never gets populated), so we add our own caching layer here. Args: dns_client (twisted.internet.interfaces.IResolver): twisted resolver impl cache: cache object get_time: clock implementation. Should return seconds since the epoch """ def __init__( self, dns_client=client, cache: Dict[bytes, List[Server]] = SERVER_CACHE, get_time: Callable[[], float] = time.time, ): self._dns_client = dns_client self._cache = cache self._get_time = get_time async def resolve_service(self, service_name: bytes) -> List[Server]: """Look up a SRV record Args: service_name: record to look up Returns: a list of the SRV records, or an empty list if none found """ now = int(self._get_time()) if not isinstance(service_name, bytes): raise TypeError("%r is not a byte string" % (service_name,)) cache_entry = self._cache.get(service_name, None) if cache_entry: if all(s.expires > now for s in cache_entry): servers = list(cache_entry) return _sort_server_list(servers) try: answers, _, _ = await make_deferred_yieldable( self._dns_client.lookupService(service_name) ) except DNSNameError: # TODO: cache this. We can get the SOA out of the exception, and use # the negative-TTL value. return [] except DomainError as e: # We failed to resolve the name (other than a NameError) # Try something in the cache, else rereaise cache_entry = self._cache.get(service_name, None) if cache_entry: logger.warning( "Failed to resolve %r, falling back to cache. %r", service_name, e ) return list(cache_entry) else: raise e if ( len(answers) == 1 and answers[0].type == dns.SRV and answers[0].payload and answers[0].payload.target == dns.Name(b".") ): raise ConnectError(f"Service {service_name!r} unavailable") servers = [] for answer in answers: if answer.type != dns.SRV or not answer.payload: continue payload = answer.payload servers.append( Server( host=payload.target.name, port=payload.port, priority=payload.priority, weight=payload.weight, expires=now + answer.ttl, ) ) self._cache[service_name] = list(servers) return _sort_server_list(servers) synapse-1.53.0/synapse/http/federation/well_known_resolver.py000066400000000000000000000300061420514467300245220ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random import time from io import BytesIO from typing import Callable, Dict, Optional, Tuple import attr from twisted.internet import defer from twisted.internet.interfaces import IReactorTime from twisted.web.client import RedirectAgent from twisted.web.http import stringToDatetime from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IResponse from synapse.http.client import BodyExceededMaxSize, read_body_with_max_size from synapse.logging.context import make_deferred_yieldable from synapse.util import Clock, json_decoder from synapse.util.caches.ttlcache import TTLCache from synapse.util.metrics import Measure # period to cache .well-known results for by default WELL_KNOWN_DEFAULT_CACHE_PERIOD = 24 * 3600 # jitter factor to add to the .well-known default cache ttls WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER = 0.1 # period to cache failure to fetch .well-known for WELL_KNOWN_INVALID_CACHE_PERIOD = 1 * 3600 # period to cache failure to fetch .well-known if there has recently been a # valid well-known for that domain. WELL_KNOWN_DOWN_CACHE_PERIOD = 2 * 60 # period to remember there was a valid well-known after valid record expires WELL_KNOWN_REMEMBER_DOMAIN_HAD_VALID = 2 * 3600 # cap for .well-known cache period WELL_KNOWN_MAX_CACHE_PERIOD = 48 * 3600 # lower bound for .well-known cache period WELL_KNOWN_MIN_CACHE_PERIOD = 5 * 60 # The maximum size (in bytes) to allow a well-known file to be. WELL_KNOWN_MAX_SIZE = 50 * 1024 # 50 KiB # Attempt to refetch a cached well-known N% of the TTL before it expires. # e.g. if set to 0.2 and we have a cached entry with a TTL of 5mins, then # we'll start trying to refetch 1 minute before it expires. WELL_KNOWN_GRACE_PERIOD_FACTOR = 0.2 # Number of times we retry fetching a well-known for a domain we know recently # had a valid entry. WELL_KNOWN_RETRY_ATTEMPTS = 3 logger = logging.getLogger(__name__) _well_known_cache: TTLCache[bytes, Optional[bytes]] = TTLCache("well-known") _had_valid_well_known_cache: TTLCache[bytes, bool] = TTLCache("had-valid-well-known") @attr.s(slots=True, frozen=True) class WellKnownLookupResult: delegated_server = attr.ib() class WellKnownResolver: """Handles well-known lookups for matrix servers.""" def __init__( self, reactor: IReactorTime, agent: IAgent, user_agent: bytes, well_known_cache: Optional[TTLCache[bytes, Optional[bytes]]] = None, had_well_known_cache: Optional[TTLCache[bytes, bool]] = None, ): self._reactor = reactor self._clock = Clock(reactor) if well_known_cache is None: well_known_cache = _well_known_cache if had_well_known_cache is None: had_well_known_cache = _had_valid_well_known_cache self._well_known_cache = well_known_cache self._had_valid_well_known_cache = had_well_known_cache self._well_known_agent = RedirectAgent(agent) self.user_agent = user_agent async def get_well_known(self, server_name: bytes) -> WellKnownLookupResult: """Attempt to fetch and parse a .well-known file for the given server Args: server_name: name of the server, from the requested url Returns: The result of the lookup """ try: prev_result, expiry, ttl = self._well_known_cache.get_with_expiry( server_name ) now = self._clock.time() if now < expiry - WELL_KNOWN_GRACE_PERIOD_FACTOR * ttl: return WellKnownLookupResult(delegated_server=prev_result) except KeyError: prev_result = None # TODO: should we linearise so that we don't end up doing two .well-known # requests for the same server in parallel? try: with Measure(self._clock, "get_well_known"): result: Optional[bytes] cache_period: float result, cache_period = await self._fetch_well_known(server_name) except _FetchWellKnownFailure as e: if prev_result and e.temporary: # This is a temporary failure and we have a still valid cached # result, so lets return that. Hopefully the next time we ask # the remote will be back up again. return WellKnownLookupResult(delegated_server=prev_result) result = None if self._had_valid_well_known_cache.get(server_name, False): # We have recently seen a valid well-known record for this # server, so we cache the lack of well-known for a shorter time. cache_period = WELL_KNOWN_DOWN_CACHE_PERIOD else: cache_period = WELL_KNOWN_INVALID_CACHE_PERIOD # add some randomness to the TTL to avoid a stampeding herd cache_period *= random.uniform( 1 - WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, 1 + WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, ) if cache_period > 0: self._well_known_cache.set(server_name, result, cache_period) return WellKnownLookupResult(delegated_server=result) async def _fetch_well_known(self, server_name: bytes) -> Tuple[bytes, float]: """Actually fetch and parse a .well-known, without checking the cache Args: server_name: name of the server, from the requested url Raises: _FetchWellKnownFailure if we fail to lookup a result Returns: The lookup result and cache period. """ had_valid_well_known = self._had_valid_well_known_cache.get(server_name, False) # We do this in two steps to differentiate between possibly transient # errors (e.g. can't connect to host, 503 response) and more permanent # errors (such as getting a 404 response). response, body = await self._make_well_known_request( server_name, retry=had_valid_well_known ) try: if response.code != 200: raise Exception("Non-200 response %s" % (response.code,)) parsed_body = json_decoder.decode(body.decode("utf-8")) logger.info("Response from .well-known: %s", parsed_body) result = parsed_body["m.server"].encode("ascii") except defer.CancelledError: # Bail if we've been cancelled raise except Exception as e: logger.info("Error parsing well-known for %s: %s", server_name, e) raise _FetchWellKnownFailure(temporary=False) cache_period = _cache_period_from_headers( response.headers, time_now=self._reactor.seconds ) if cache_period is None: cache_period = WELL_KNOWN_DEFAULT_CACHE_PERIOD # add some randomness to the TTL to avoid a stampeding herd every 24 hours # after startup cache_period *= random.uniform( 1 - WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, 1 + WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, ) else: cache_period = min(cache_period, WELL_KNOWN_MAX_CACHE_PERIOD) cache_period = max(cache_period, WELL_KNOWN_MIN_CACHE_PERIOD) # We got a success, mark as such in the cache self._had_valid_well_known_cache.set( server_name, bool(result), cache_period + WELL_KNOWN_REMEMBER_DOMAIN_HAD_VALID, ) return result, cache_period async def _make_well_known_request( self, server_name: bytes, retry: bool ) -> Tuple[IResponse, bytes]: """Make the well known request. This will retry the request if requested and it fails (with unable to connect or receives a 5xx error). Args: server_name: name of the server, from the requested url retry: Whether to retry the request if it fails. Raises: _FetchWellKnownFailure if we fail to lookup a result Returns: Returns the response object and body. Response may be a non-200 response. """ uri = b"https://%s/.well-known/matrix/server" % (server_name,) uri_str = uri.decode("ascii") headers = { b"User-Agent": [self.user_agent], } i = 0 while True: i += 1 logger.info("Fetching %s", uri_str) try: response = await make_deferred_yieldable( self._well_known_agent.request( b"GET", uri, headers=Headers(headers) ) ) body_stream = BytesIO() await make_deferred_yieldable( read_body_with_max_size(response, body_stream, WELL_KNOWN_MAX_SIZE) ) body = body_stream.getvalue() if 500 <= response.code < 600: raise Exception("Non-200 response %s" % (response.code,)) return response, body except defer.CancelledError: # Bail if we've been cancelled raise except BodyExceededMaxSize: # If the well-known file was too large, do not keep attempting # to download it, but consider it a temporary error. logger.warning( "Requested .well-known file for %s is too large > %r bytes", server_name.decode("ascii"), WELL_KNOWN_MAX_SIZE, ) raise _FetchWellKnownFailure(temporary=True) except Exception as e: if not retry or i >= WELL_KNOWN_RETRY_ATTEMPTS: logger.info("Error fetching %s: %s", uri_str, e) raise _FetchWellKnownFailure(temporary=True) logger.info("Error fetching %s: %s. Retrying", uri_str, e) # Sleep briefly in the hopes that they come back up await self._clock.sleep(0.5) def _cache_period_from_headers( headers: Headers, time_now: Callable[[], float] = time.time ) -> Optional[float]: cache_controls = _parse_cache_control(headers) if b"no-store" in cache_controls: return 0 if b"max-age" in cache_controls: max_age = cache_controls[b"max-age"] if max_age: try: return int(max_age) except ValueError: pass expires = headers.getRawHeaders(b"expires") if expires is not None: try: expires_date = stringToDatetime(expires[-1]) return expires_date - time_now() except ValueError: # RFC7234 says 'A cache recipient MUST interpret invalid date formats, # especially the value "0", as representing a time in the past (i.e., # "already expired"). return 0 return None def _parse_cache_control(headers: Headers) -> Dict[bytes, Optional[bytes]]: cache_controls = {} cache_control_headers = headers.getRawHeaders(b"cache-control") or [] for hdr in cache_control_headers: for directive in hdr.split(b","): splits = [x.strip() for x in directive.split(b"=", 1)] k = splits[0].lower() v = splits[1] if len(splits) > 1 else None cache_controls[k] = v return cache_controls @attr.s(slots=True) class _FetchWellKnownFailure(Exception): # True if we didn't get a non-5xx HTTP response, i.e. this may or may not be # a temporary failure. temporary = attr.ib() synapse-1.53.0/synapse/http/matrixfederationclient.py000066400000000000000000001257531420514467300230640ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import cgi import codecs import logging import random import sys import typing import urllib.parse from http import HTTPStatus from io import BytesIO, StringIO from typing import ( TYPE_CHECKING, Callable, Dict, Generic, List, Optional, Tuple, TypeVar, Union, overload, ) import attr import treq from canonicaljson import encode_canonical_json from prometheus_client import Counter from signedjson.sign import sign_json from typing_extensions import Literal from twisted.internet import defer from twisted.internet.error import DNSLookupError from twisted.internet.interfaces import IReactorTime from twisted.internet.task import _EPSILON, Cooperator from twisted.web.client import ResponseFailed from twisted.web.http_headers import Headers from twisted.web.iweb import IBodyProducer, IResponse import synapse.metrics import synapse.util.retryutils from synapse.api.errors import ( Codes, FederationDeniedError, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.http import QuieterFileBodyProducer from synapse.http.client import ( BlacklistingAgentWrapper, BodyExceededMaxSize, ByteWriteable, encode_query_args, read_body_with_max_size, ) from synapse.http.federation.matrix_federation_agent import MatrixFederationAgent from synapse.logging import opentracing from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import set_tag, start_active_span, tags from synapse.types import JsonDict from synapse.util import json_decoder from synapse.util.async_helpers import timeout_deferred from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) outgoing_requests_counter = Counter( "synapse_http_matrixfederationclient_requests", "", ["method"] ) incoming_responses_counter = Counter( "synapse_http_matrixfederationclient_responses", "", ["method", "code"] ) # a federation response can be rather large (eg a big state_ids is 50M or so), so we # need a generous limit here. MAX_RESPONSE_SIZE = 100 * 1024 * 1024 MAX_LONG_RETRIES = 10 MAX_SHORT_RETRIES = 3 MAXINT = sys.maxsize _next_id = 1 QueryArgs = Dict[str, Union[str, List[str]]] T = TypeVar("T") class ByteParser(ByteWriteable, Generic[T], abc.ABC): """A `ByteWriteable` that has an additional `finish` function that returns the parsed data. """ CONTENT_TYPE: str = abc.abstractproperty() # type: ignore """The expected content type of the response, e.g. `application/json`. If the content type doesn't match we fail the request. """ @abc.abstractmethod def finish(self) -> T: """Called when response has finished streaming and the parser should return the final result (or error). """ pass @attr.s(slots=True, frozen=True, auto_attribs=True) class MatrixFederationRequest: method: str """HTTP method """ path: str """HTTP path """ destination: str """The remote server to send the HTTP request to. """ json: Optional[JsonDict] = None """JSON to send in the body. """ json_callback: Optional[Callable[[], JsonDict]] = None """A callback to generate the JSON. """ query: Optional[dict] = None """Query arguments. """ txn_id: Optional[str] = None """Unique ID for this request (for logging) """ uri: bytes = attr.ib(init=False) """The URI of this request """ def __attrs_post_init__(self) -> None: global _next_id txn_id = "%s-O-%s" % (self.method, _next_id) _next_id = (_next_id + 1) % (MAXINT - 1) object.__setattr__(self, "txn_id", txn_id) destination_bytes = self.destination.encode("ascii") path_bytes = self.path.encode("ascii") if self.query: query_bytes = encode_query_args(self.query) else: query_bytes = b"" # The object is frozen so we can pre-compute this. uri = urllib.parse.urlunparse( (b"matrix", destination_bytes, path_bytes, None, query_bytes, b"") ) object.__setattr__(self, "uri", uri) def get_json(self) -> Optional[JsonDict]: if self.json_callback: return self.json_callback() return self.json class JsonParser(ByteParser[Union[JsonDict, list]]): """A parser that buffers the response and tries to parse it as JSON.""" CONTENT_TYPE = "application/json" def __init__(self): self._buffer = StringIO() self._binary_wrapper = BinaryIOWrapper(self._buffer) def write(self, data: bytes) -> int: return self._binary_wrapper.write(data) def finish(self) -> Union[JsonDict, list]: return json_decoder.decode(self._buffer.getvalue()) async def _handle_response( reactor: IReactorTime, timeout_sec: float, request: MatrixFederationRequest, response: IResponse, start_ms: int, parser: ByteParser[T], max_response_size: Optional[int] = None, ) -> T: """ Reads the body of a response with a timeout and sends it to a parser Args: reactor: twisted reactor, for the timeout timeout_sec: number of seconds to wait for response to complete request: the request that triggered the response response: response to the request start_ms: Timestamp when request was made parser: The parser for the response max_response_size: The maximum size to read from the response, if None uses the default. Returns: The parsed response """ if max_response_size is None: max_response_size = MAX_RESPONSE_SIZE try: check_content_type_is(response.headers, parser.CONTENT_TYPE) d = read_body_with_max_size(response, parser, max_response_size) d = timeout_deferred(d, timeout=timeout_sec, reactor=reactor) length = await make_deferred_yieldable(d) value = parser.finish() except BodyExceededMaxSize as e: # The response was too big. logger.warning( "{%s} [%s] JSON response exceeded max size %i - %s %s", request.txn_id, request.destination, MAX_RESPONSE_SIZE, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=False) from e except ValueError as e: # The content was invalid. logger.warning( "{%s} [%s] Failed to parse response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=False) from e except defer.TimeoutError as e: logger.warning( "{%s} [%s] Timed out reading response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except ResponseFailed as e: logger.warning( "{%s} [%s] Failed to read response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except Exception as e: logger.warning( "{%s} [%s] Error reading response %s %s: %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), e, ) raise time_taken_secs = reactor.seconds() - start_ms / 1000 logger.info( "{%s} [%s] Completed request: %d %s in %.2f secs, got %d bytes - %s %s", request.txn_id, request.destination, response.code, response.phrase.decode("ascii", errors="replace"), time_taken_secs, length, request.method, request.uri.decode("ascii"), ) return value class BinaryIOWrapper: """A wrapper for a TextIO which converts from bytes on the fly.""" def __init__(self, file: typing.TextIO, encoding="utf-8", errors="strict"): self.decoder = codecs.getincrementaldecoder(encoding)(errors) self.file = file def write(self, b: Union[bytes, bytearray]) -> int: self.file.write(self.decoder.decode(b)) return len(b) class MatrixFederationHttpClient: """HTTP client used to talk to other homeservers over the federation protocol. Send client certificates and signs requests. Attributes: agent (twisted.web.client.Agent): The twisted Agent used to send the requests. """ def __init__(self, hs: "HomeServer", tls_client_options_factory): self.hs = hs self.signing_key = hs.signing_key self.server_name = hs.hostname self.reactor = hs.get_reactor() user_agent = hs.version_string if hs.config.server.user_agent_suffix: user_agent = "%s %s" % (user_agent, hs.config.server.user_agent_suffix) federation_agent = MatrixFederationAgent( self.reactor, tls_client_options_factory, user_agent.encode("ascii"), hs.config.server.federation_ip_range_whitelist, hs.config.server.federation_ip_range_blacklist, ) # Use a BlacklistingAgentWrapper to prevent circumventing the IP # blacklist via IP literals in server names self.agent = BlacklistingAgentWrapper( federation_agent, ip_blacklist=hs.config.server.federation_ip_range_blacklist, ) self.clock = hs.get_clock() self._store = hs.get_datastore() self.version_string_bytes = hs.version_string.encode("ascii") self.default_timeout = 60 def schedule(x): self.reactor.callLater(_EPSILON, x) self._cooperator = Cooperator(scheduler=schedule) async def _send_request_with_optional_trailing_slash( self, request: MatrixFederationRequest, try_trailing_slash_on_400: bool = False, **send_request_args, ) -> IResponse: """Wrapper for _send_request which can optionally retry the request upon receiving a combination of a 400 HTTP response code and a 'M_UNRECOGNIZED' errcode. This is a workaround for Synapse <= v0.99.3 due to #3622. Args: request: details of request to be sent try_trailing_slash_on_400: Whether on receiving a 400 'M_UNRECOGNIZED' from the server to retry the request with a trailing slash appended to the request path. send_request_args: A dictionary of arguments to pass to `_send_request()`. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). Returns: Parsed JSON response body. """ try: response = await self._send_request(request, **send_request_args) except HttpResponseException as e: # Received an HTTP error > 300. Check if it meets the requirements # to retry with a trailing slash if not try_trailing_slash_on_400: raise if e.code != 400 or e.to_synapse_error().errcode != "M_UNRECOGNIZED": raise # Retry with a trailing slash if we received a 400 with # 'M_UNRECOGNIZED' which some endpoints can return when omitting a # trailing slash on Synapse <= v0.99.3. logger.info("Retrying request with trailing slash") # Request is frozen so we create a new instance request = attr.evolve(request, path=request.path + "/") response = await self._send_request(request, **send_request_args) return response async def _send_request( self, request: MatrixFederationRequest, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, long_retries: bool = False, ignore_backoff: bool = False, backoff_on_404: bool = False, ) -> IResponse: """ Sends a request to the given server. Args: request: details of request to be sent retry_on_dns_fail: true if the request should be retied on DNS failures timeout: number of milliseconds to wait for the response headers (including connecting to the server), *for each attempt*. 60s by default. long_retries: whether to use the long retry algorithm. The regular retry algorithm makes 4 attempts, with intervals [0.5s, 1s, 2s]. The long retry algorithm makes 11 attempts, with intervals [4s, 16s, 60s, 60s, ...] Both algorithms add -20%/+40% jitter to the retry intervals. Note that the above intervals are *in addition* to the time spent waiting for the request to complete (up to `timeout` ms). NB: the long retry algorithm takes over 20 minutes to complete, with a default timeout of 60s! ignore_backoff: true to ignore the historical backoff data and try the request anyway. backoff_on_404: Back off if we get a 404 Returns: Resolves with the HTTP response object on success. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ if timeout: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout if ( self.hs.config.federation.federation_domain_whitelist is not None and request.destination not in self.hs.config.federation.federation_domain_whitelist ): raise FederationDeniedError(request.destination) limiter = await synapse.util.retryutils.get_retry_limiter( request.destination, self.clock, self._store, backoff_on_404=backoff_on_404, ignore_backoff=ignore_backoff, ) method_bytes = request.method.encode("ascii") destination_bytes = request.destination.encode("ascii") path_bytes = request.path.encode("ascii") if request.query: query_bytes = encode_query_args(request.query) else: query_bytes = b"" scope = start_active_span( "outgoing-federation-request", tags={ tags.SPAN_KIND: tags.SPAN_KIND_RPC_CLIENT, tags.PEER_ADDRESS: request.destination, tags.HTTP_METHOD: request.method, tags.HTTP_URL: request.path, }, finish_on_close=True, ) # Inject the span into the headers headers_dict: Dict[bytes, List[bytes]] = {} opentracing.inject_header_dict(headers_dict, request.destination) headers_dict[b"User-Agent"] = [self.version_string_bytes] with limiter, scope: # XXX: Would be much nicer to retry only at the transaction-layer # (once we have reliable transactions in place) if long_retries: retries_left = MAX_LONG_RETRIES else: retries_left = MAX_SHORT_RETRIES url_bytes = request.uri url_str = url_bytes.decode("ascii") url_to_sign_bytes = urllib.parse.urlunparse( (b"", b"", path_bytes, None, query_bytes, b"") ) while True: try: json = request.get_json() if json: headers_dict[b"Content-Type"] = [b"application/json"] auth_headers = self.build_auth_headers( destination_bytes, method_bytes, url_to_sign_bytes, json ) data = encode_canonical_json(json) producer: Optional[IBodyProducer] = QuieterFileBodyProducer( BytesIO(data), cooperator=self._cooperator ) else: producer = None auth_headers = self.build_auth_headers( destination_bytes, method_bytes, url_to_sign_bytes ) headers_dict[b"Authorization"] = auth_headers logger.debug( "{%s} [%s] Sending request: %s %s; timeout %fs", request.txn_id, request.destination, request.method, url_str, _sec_timeout, ) outgoing_requests_counter.labels(request.method).inc() try: with Measure(self.clock, "outbound_request"): # we don't want all the fancy cookie and redirect handling # that treq.request gives: just use the raw Agent. # To preserve the logging context, the timeout is treated # in a similar way to `defer.gatherResults`: # * Each logging context-preserving fork is wrapped in # `run_in_background`. In this case there is only one, # since the timeout fork is not logging-context aware. # * The `Deferred` that joins the forks back together is # wrapped in `make_deferred_yieldable` to restore the # logging context regardless of the path taken. request_deferred = run_in_background( self.agent.request, method_bytes, url_bytes, headers=Headers(headers_dict), bodyProducer=producer, ) request_deferred = timeout_deferred( request_deferred, timeout=_sec_timeout, reactor=self.reactor, ) response = await make_deferred_yieldable(request_deferred) except DNSLookupError as e: raise RequestSendFailed(e, can_retry=retry_on_dns_fail) from e except Exception as e: raise RequestSendFailed(e, can_retry=True) from e incoming_responses_counter.labels( request.method, response.code ).inc() set_tag(tags.HTTP_STATUS_CODE, response.code) response_phrase = response.phrase.decode("ascii", errors="replace") if 200 <= response.code < 300: logger.debug( "{%s} [%s] Got response headers: %d %s", request.txn_id, request.destination, response.code, response_phrase, ) pass else: logger.info( "{%s} [%s] Got response headers: %d %s", request.txn_id, request.destination, response.code, response_phrase, ) # :'( # Update transactions table? d = treq.content(response) d = timeout_deferred( d, timeout=_sec_timeout, reactor=self.reactor ) try: body = await make_deferred_yieldable(d) except Exception as e: # Eh, we're already going to raise an exception so lets # ignore if this fails. logger.warning( "{%s} [%s] Failed to get error response: %s %s: %s", request.txn_id, request.destination, request.method, url_str, _flatten_response_never_received(e), ) body = None exc = HttpResponseException( response.code, response_phrase, body ) # Retry if the error is a 5xx or a 429 (Too Many # Requests), otherwise just raise a standard # `HttpResponseException` if 500 <= response.code < 600 or response.code == 429: raise RequestSendFailed(exc, can_retry=True) from exc else: raise exc break except RequestSendFailed as e: logger.info( "{%s} [%s] Request failed: %s %s: %s", request.txn_id, request.destination, request.method, url_str, _flatten_response_never_received(e.inner_exception), ) if not e.can_retry: raise if retries_left and not timeout: if long_retries: delay = 4 ** (MAX_LONG_RETRIES + 1 - retries_left) delay = min(delay, 60) delay *= random.uniform(0.8, 1.4) else: delay = 0.5 * 2 ** (MAX_SHORT_RETRIES - retries_left) delay = min(delay, 2) delay *= random.uniform(0.8, 1.4) logger.debug( "{%s} [%s] Waiting %ss before re-sending...", request.txn_id, request.destination, delay, ) await self.clock.sleep(delay) retries_left -= 1 else: raise except Exception as e: logger.warning( "{%s} [%s] Request failed: %s %s: %s", request.txn_id, request.destination, request.method, url_str, _flatten_response_never_received(e), ) raise return response def build_auth_headers( self, destination: Optional[bytes], method: bytes, url_bytes: bytes, content: Optional[JsonDict] = None, destination_is: Optional[bytes] = None, ) -> List[bytes]: """ Builds the Authorization headers for a federation request Args: destination: The destination homeserver of the request. May be None if the destination is an identity server, in which case destination_is must be non-None. method: The HTTP method of the request url_bytes: The URI path of the request content: The body of the request destination_is: As 'destination', but if the destination is an identity server Returns: A list of headers to be added as "Authorization:" headers """ request: JsonDict = { "method": method.decode("ascii"), "uri": url_bytes.decode("ascii"), "origin": self.server_name, } if destination is not None: request["destination"] = destination.decode("ascii") if destination_is is not None: request["destination_is"] = destination_is.decode("ascii") if content is not None: request["content"] = content request = sign_json(request, self.server_name, self.signing_key) auth_headers = [] for key, sig in request["signatures"][self.server_name].items(): auth_headers.append( ( 'X-Matrix origin=%s,key="%s",sig="%s"' % (self.server_name, key, sig) ).encode("ascii") ) return auth_headers @overload async def put_json( self, destination: str, path: str, args: Optional[QueryArgs] = None, data: Optional[JsonDict] = None, json_data_callback: Optional[Callable[[], JsonDict]] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, backoff_on_404: bool = False, try_trailing_slash_on_400: bool = False, parser: Literal[None] = None, max_response_size: Optional[int] = None, ) -> Union[JsonDict, list]: ... @overload async def put_json( self, destination: str, path: str, args: Optional[QueryArgs] = None, data: Optional[JsonDict] = None, json_data_callback: Optional[Callable[[], JsonDict]] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, backoff_on_404: bool = False, try_trailing_slash_on_400: bool = False, parser: Optional[ByteParser[T]] = None, max_response_size: Optional[int] = None, ) -> T: ... async def put_json( self, destination: str, path: str, args: Optional[QueryArgs] = None, data: Optional[JsonDict] = None, json_data_callback: Optional[Callable[[], JsonDict]] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, backoff_on_404: bool = False, try_trailing_slash_on_400: bool = False, parser: Optional[ByteParser] = None, max_response_size: Optional[int] = None, ): """Sends the specified json data using PUT Args: destination: The remote server to send the HTTP request to. path: The HTTP path. args: query params data: A dict containing the data that will be used as the request body. This will be encoded as JSON. json_data_callback: A callable returning the dict to use as the request body. long_retries: whether to use the long retry algorithm. See docs on _send_request for details. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. backoff_on_404: True if we should count a 404 response as a failure of the server (and should therefore back off future requests). try_trailing_slash_on_400: True if on a 400 M_UNRECOGNIZED response we should try appending a trailing slash to the end of the request. Workaround for #3622 in Synapse <= v0.99.3. This will be attempted before backing off if backing off has been enabled. parser: The parser to use to decode the response. Defaults to parsing as JSON. max_response_size: The maximum size to read from the response, if None uses the default. Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="PUT", destination=destination, path=path, query=args, json_callback=json_data_callback, json=data, ) start_ms = self.clock.time_msec() response = await self._send_request_with_optional_trailing_slash( request, try_trailing_slash_on_400, backoff_on_404=backoff_on_404, ignore_backoff=ignore_backoff, long_retries=long_retries, timeout=timeout, ) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout if parser is None: parser = JsonParser() body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=parser, max_response_size=max_response_size, ) return body async def post_json( self, destination: str, path: str, data: Optional[JsonDict] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, args: Optional[QueryArgs] = None, ) -> Union[JsonDict, list]: """Sends the specified json data using POST Args: destination: The remote server to send the HTTP request to. path: The HTTP path. data: A dict containing the data that will be used as the request body. This will be encoded as JSON. long_retries: whether to use the long retry algorithm. See docs on _send_request for details. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. args: query params Returns: dict|list: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="POST", destination=destination, path=path, query=args, json=data ) start_ms = self.clock.time_msec() response = await self._send_request( request, long_retries=long_retries, timeout=timeout, ignore_backoff=ignore_backoff, ) if timeout: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser() ) return body async def get_json( self, destination: str, path: str, args: Optional[QueryArgs] = None, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, ignore_backoff: bool = False, try_trailing_slash_on_400: bool = False, ) -> Union[JsonDict, list]: """GETs some json from the given host homeserver and path Args: destination: The remote server to send the HTTP request to. path: The HTTP path. args: A dictionary used to create query strings, defaults to None. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. try_trailing_slash_on_400: True if on a 400 M_UNRECOGNIZED response we should try appending a trailing slash to the end of the request. Workaround for #3622 in Synapse <= v0.99.3. Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="GET", destination=destination, path=path, query=args ) start_ms = self.clock.time_msec() response = await self._send_request_with_optional_trailing_slash( request, try_trailing_slash_on_400, backoff_on_404=False, ignore_backoff=ignore_backoff, retry_on_dns_fail=retry_on_dns_fail, timeout=timeout, ) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser() ) return body async def delete_json( self, destination: str, path: str, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, args: Optional[QueryArgs] = None, ) -> Union[JsonDict, list]: """Send a DELETE request to the remote expecting some json response Args: destination: The remote server to send the HTTP request to. path: The HTTP path. long_retries: whether to use the long retry algorithm. See docs on _send_request for details. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. args: query params Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="DELETE", destination=destination, path=path, query=args ) start_ms = self.clock.time_msec() response = await self._send_request( request, long_retries=long_retries, timeout=timeout, ignore_backoff=ignore_backoff, ) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser() ) return body async def get_file( self, destination: str, path: str, output_stream, args: Optional[QueryArgs] = None, retry_on_dns_fail: bool = True, max_size: Optional[int] = None, ignore_backoff: bool = False, ) -> Tuple[int, Dict[bytes, List[bytes]]]: """GETs a file from a given homeserver Args: destination: The remote server to send the HTTP request to. path: The HTTP path to GET. output_stream: File to write the response body to. args: Optional dictionary used to create the query string. ignore_backoff: true to ignore the historical backoff data and try the request anyway. Returns: Resolves with an (int,dict) tuple of the file length and a dict of the response headers. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="GET", destination=destination, path=path, query=args ) response = await self._send_request( request, retry_on_dns_fail=retry_on_dns_fail, ignore_backoff=ignore_backoff ) headers = dict(response.headers.getAllRawHeaders()) try: d = read_body_with_max_size(response, output_stream, max_size) d.addTimeout(self.default_timeout, self.reactor) length = await make_deferred_yieldable(d) except BodyExceededMaxSize: msg = "Requested file is too large > %r bytes" % (max_size,) logger.warning( "{%s} [%s] %s", request.txn_id, request.destination, msg, ) raise SynapseError(HTTPStatus.BAD_GATEWAY, msg, Codes.TOO_LARGE) except defer.TimeoutError as e: logger.warning( "{%s} [%s] Timed out reading response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except ResponseFailed as e: logger.warning( "{%s} [%s] Failed to read response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except Exception as e: logger.warning( "{%s} [%s] Error reading response: %s", request.txn_id, request.destination, e, ) raise logger.info( "{%s} [%s] Completed: %d %s [%d bytes] %s %s", request.txn_id, request.destination, response.code, response.phrase.decode("ascii", errors="replace"), length, request.method, request.uri.decode("ascii"), ) return length, headers def _flatten_response_never_received(e): if hasattr(e, "reasons"): reasons = ", ".join( _flatten_response_never_received(f.value) for f in e.reasons ) return "%s:[%s]" % (type(e).__name__, reasons) else: return repr(e) def check_content_type_is(headers: Headers, expected_content_type: str) -> None: """ Check that a set of HTTP headers have a Content-Type header, and that it is the expected value.. Args: headers: headers to check Raises: RequestSendFailed: if the Content-Type header is missing or doesn't match """ content_type_headers = headers.getRawHeaders(b"Content-Type") if content_type_headers is None: raise RequestSendFailed( RuntimeError("No Content-Type header received from remote server"), can_retry=False, ) c_type = content_type_headers[0].decode("ascii") # only the first header val, options = cgi.parse_header(c_type) if val != expected_content_type: raise RequestSendFailed( RuntimeError( f"Remote server sent Content-Type header of '{c_type}', not '{expected_content_type}'", ), can_retry=False, ) synapse-1.53.0/synapse/http/proxyagent.py000066400000000000000000000303041420514467300205030ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import Any, Dict, Optional, Tuple from urllib.parse import urlparse from urllib.request import ( # type: ignore[attr-defined] getproxies_environment, proxy_bypass_environment, ) from zope.interface import implementer from twisted.internet import defer from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS from twisted.internet.interfaces import IReactorCore, IStreamClientEndpoint from twisted.python.failure import Failure from twisted.web.client import ( URI, BrowserLikePolicyForHTTPS, HTTPConnectionPool, _AgentBase, ) from twisted.web.error import SchemeNotSupported from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IBodyProducer, IPolicyForHTTPS from synapse.http.connectproxyclient import HTTPConnectProxyEndpoint, ProxyCredentials from synapse.types import ISynapseReactor logger = logging.getLogger(__name__) _VALID_URI = re.compile(br"\A[\x21-\x7e]+\Z") @implementer(IAgent) class ProxyAgent(_AgentBase): """An Agent implementation which will use an HTTP proxy if one was requested Args: reactor: twisted reactor to place outgoing connections. proxy_reactor: twisted reactor to use for connections to the proxy server reactor might have some blacklisting applied (i.e. for DNS queries), but we need unblocked access to the proxy. contextFactory: A factory for TLS contexts, to control the verification parameters of OpenSSL. The default is to use a `BrowserLikePolicyForHTTPS`, so unless you have special requirements you can leave this as-is. connectTimeout: The amount of time that this Agent will wait for the peer to accept a connection, in seconds. If 'None', HostnameEndpoint's default (30s) will be used. This is used for connections to both proxies and destination servers. bindAddress: The local address for client sockets to bind to. pool: connection pool to be used. If None, a non-persistent pool instance will be created. use_proxy: Whether proxy settings should be discovered and used from conventional environment variables. Raises: ValueError if use_proxy is set and the environment variables contain an invalid proxy specification. RuntimeError if no tls_options_factory is given for a https connection """ def __init__( self, reactor: IReactorCore, proxy_reactor: Optional[ISynapseReactor] = None, contextFactory: Optional[IPolicyForHTTPS] = None, connectTimeout: Optional[float] = None, bindAddress: Optional[bytes] = None, pool: Optional[HTTPConnectionPool] = None, use_proxy: bool = False, ): contextFactory = contextFactory or BrowserLikePolicyForHTTPS() _AgentBase.__init__(self, reactor, pool) if proxy_reactor is None: self.proxy_reactor = reactor else: self.proxy_reactor = proxy_reactor self._endpoint_kwargs: Dict[str, Any] = {} if connectTimeout is not None: self._endpoint_kwargs["timeout"] = connectTimeout if bindAddress is not None: self._endpoint_kwargs["bindAddress"] = bindAddress http_proxy = None https_proxy = None no_proxy = None if use_proxy: proxies = getproxies_environment() http_proxy = proxies["http"].encode() if "http" in proxies else None https_proxy = proxies["https"].encode() if "https" in proxies else None no_proxy = proxies["no"] if "no" in proxies else None self.http_proxy_endpoint, self.http_proxy_creds = http_proxy_endpoint( http_proxy, self.proxy_reactor, contextFactory, **self._endpoint_kwargs ) self.https_proxy_endpoint, self.https_proxy_creds = http_proxy_endpoint( https_proxy, self.proxy_reactor, contextFactory, **self._endpoint_kwargs ) self.no_proxy = no_proxy self._policy_for_https = contextFactory self._reactor = reactor def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> defer.Deferred: """ Issue a request to the server indicated by the given uri. Supports `http` and `https` schemes. An existing connection from the connection pool may be used or a new one may be created. See also: twisted.web.iweb.IAgent.request Args: method: The request method to use, such as `GET`, `POST`, etc uri: The location of the resource to request. headers: Extra headers to send with the request bodyProducer: An object which can generate bytes to make up the body of this request (for example, the properly encoded contents of a file for a file upload). Or, None if the request is to have no body. Returns: Deferred[IResponse]: completes when the header of the response has been received (regardless of the response status code). Can fail with: SchemeNotSupported: if the uri is not http or https twisted.internet.error.TimeoutError if the server we are connecting to (proxy or destination) does not accept a connection before connectTimeout. ... other things too. """ uri = uri.strip() if not _VALID_URI.match(uri): raise ValueError(f"Invalid URI {uri!r}") parsed_uri = URI.fromBytes(uri) pool_key = f"{parsed_uri.scheme!r}{parsed_uri.host!r}{parsed_uri.port}" request_path = parsed_uri.originForm should_skip_proxy = False if self.no_proxy is not None: should_skip_proxy = proxy_bypass_environment( parsed_uri.host.decode(), proxies={"no": self.no_proxy}, ) if ( parsed_uri.scheme == b"http" and self.http_proxy_endpoint and not should_skip_proxy ): # Determine whether we need to set Proxy-Authorization headers if self.http_proxy_creds: # Set a Proxy-Authorization header if headers is None: headers = Headers() headers.addRawHeader( b"Proxy-Authorization", self.http_proxy_creds.as_proxy_authorization_value(), ) # Cache *all* connections under the same key, since we are only # connecting to a single destination, the proxy: pool_key = "http-proxy" endpoint = self.http_proxy_endpoint request_path = uri elif ( parsed_uri.scheme == b"https" and self.https_proxy_endpoint and not should_skip_proxy ): endpoint = HTTPConnectProxyEndpoint( self.proxy_reactor, self.https_proxy_endpoint, parsed_uri.host, parsed_uri.port, self.https_proxy_creds, ) else: # not using a proxy endpoint = HostnameEndpoint( self._reactor, parsed_uri.host, parsed_uri.port, **self._endpoint_kwargs ) logger.debug("Requesting %s via %s", uri, endpoint) if parsed_uri.scheme == b"https": tls_connection_creator = self._policy_for_https.creatorForNetloc( parsed_uri.host, parsed_uri.port ) endpoint = wrapClientTLS(tls_connection_creator, endpoint) elif parsed_uri.scheme == b"http": pass else: return defer.fail( Failure( SchemeNotSupported("Unsupported scheme: %r" % (parsed_uri.scheme,)) ) ) return self._requestWithEndpoint( pool_key, endpoint, method, parsed_uri, headers, bodyProducer, request_path ) def http_proxy_endpoint( proxy: Optional[bytes], reactor: IReactorCore, tls_options_factory: Optional[IPolicyForHTTPS], **kwargs, ) -> Tuple[Optional[IStreamClientEndpoint], Optional[ProxyCredentials]]: """Parses an http proxy setting and returns an endpoint for the proxy Args: proxy: the proxy setting in the form: [scheme://][:@][:] This currently supports http:// and https:// proxies. A hostname without scheme is assumed to be http. reactor: reactor to be used to connect to the proxy tls_options_factory: the TLS options to use when connecting through a https proxy kwargs: other args to be passed to HostnameEndpoint Returns: a tuple of endpoint to use to connect to the proxy, or None ProxyCredentials or if no credentials were found, or None Raise: ValueError if proxy has no hostname or unsupported scheme. RuntimeError if no tls_options_factory is given for a https connection """ if proxy is None: return None, None # Note: urlsplit/urlparse cannot be used here as that does not work (for Python # 3.9+) on scheme-less proxies, e.g. host:port. scheme, host, port, credentials = parse_proxy(proxy) proxy_endpoint = HostnameEndpoint(reactor, host, port, **kwargs) if scheme == b"https": if tls_options_factory: tls_options = tls_options_factory.creatorForNetloc(host, port) proxy_endpoint = wrapClientTLS(tls_options, proxy_endpoint) else: raise RuntimeError( f"No TLS options for a https connection via proxy {proxy!s}" ) return proxy_endpoint, credentials def parse_proxy( proxy: bytes, default_scheme: bytes = b"http", default_port: int = 1080 ) -> Tuple[bytes, bytes, int, Optional[ProxyCredentials]]: """ Parse a proxy connection string. Given a HTTP proxy URL, breaks it down into components and checks that it has a hostname (otherwise it is not useful to us when trying to find a proxy) and asserts that the URL has a scheme we support. Args: proxy: The proxy connection string. Must be in the form '[scheme://][:@]host[:port]'. default_scheme: The default scheme to return if one is not found in `proxy`. Defaults to http default_port: The default port to return if one is not found in `proxy`. Defaults to 1080 Returns: A tuple containing the scheme, hostname, port and ProxyCredentials. If no credentials were found, the ProxyCredentials instance is replaced with None. Raise: ValueError if proxy has no hostname or unsupported scheme. """ # First check if we have a scheme present # Note: urlsplit/urlparse cannot be used (for Python # 3.9+) on scheme-less proxies, e.g. host:port. if b"://" not in proxy: proxy = b"".join([default_scheme, b"://", proxy]) url = urlparse(proxy) if not url.hostname: raise ValueError("Proxy URL did not contain a hostname! Please specify one.") if url.scheme not in (b"http", b"https"): raise ValueError( f"Unknown proxy scheme {url.scheme!s}; only 'http' and 'https' is supported." ) credentials = None if url.username and url.password: credentials = ProxyCredentials(b"".join([url.username, b":", url.password])) return url.scheme, url.hostname, url.port or default_port, credentials synapse-1.53.0/synapse/http/request_metrics.py000066400000000000000000000202651420514467300215260ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import threading import traceback from typing import Dict, Mapping, Set, Tuple from prometheus_client.core import Counter, Histogram from synapse.logging.context import current_context from synapse.metrics import LaterGauge logger = logging.getLogger(__name__) # total number of responses served, split by method/servlet/tag response_count = Counter( "synapse_http_server_response_count", "", ["method", "servlet", "tag"] ) requests_counter = Counter( "synapse_http_server_requests_received", "", ["method", "servlet"] ) outgoing_responses_counter = Counter( "synapse_http_server_responses", "", ["method", "code"] ) response_timer = Histogram( "synapse_http_server_response_time_seconds", "sec", ["method", "servlet", "tag", "code"], ) response_ru_utime = Counter( "synapse_http_server_response_ru_utime_seconds", "sec", ["method", "servlet", "tag"] ) response_ru_stime = Counter( "synapse_http_server_response_ru_stime_seconds", "sec", ["method", "servlet", "tag"] ) response_db_txn_count = Counter( "synapse_http_server_response_db_txn_count", "", ["method", "servlet", "tag"] ) # seconds spent waiting for db txns, excluding scheduling time, when processing # this request response_db_txn_duration = Counter( "synapse_http_server_response_db_txn_duration_seconds", "", ["method", "servlet", "tag"], ) # seconds spent waiting for a db connection, when processing this request response_db_sched_duration = Counter( "synapse_http_server_response_db_sched_duration_seconds", "", ["method", "servlet", "tag"], ) # size in bytes of the response written response_size = Counter( "synapse_http_server_response_size", "", ["method", "servlet", "tag"] ) # In flight metrics are incremented while the requests are in flight, rather # than when the response was written. in_flight_requests_ru_utime = Counter( "synapse_http_server_in_flight_requests_ru_utime_seconds", "", ["method", "servlet"] ) in_flight_requests_ru_stime = Counter( "synapse_http_server_in_flight_requests_ru_stime_seconds", "", ["method", "servlet"] ) in_flight_requests_db_txn_count = Counter( "synapse_http_server_in_flight_requests_db_txn_count", "", ["method", "servlet"] ) # seconds spent waiting for db txns, excluding scheduling time, when processing # this request in_flight_requests_db_txn_duration = Counter( "synapse_http_server_in_flight_requests_db_txn_duration_seconds", "", ["method", "servlet"], ) # seconds spent waiting for a db connection, when processing this request in_flight_requests_db_sched_duration = Counter( "synapse_http_server_in_flight_requests_db_sched_duration_seconds", "", ["method", "servlet"], ) _in_flight_requests: Set["RequestMetrics"] = set() # Protects the _in_flight_requests set from concurrent access _in_flight_requests_lock = threading.Lock() def _get_in_flight_counts() -> Mapping[Tuple[str, ...], int]: """Returns a count of all in flight requests by (method, server_name)""" # Cast to a list to prevent it changing while the Prometheus # thread is collecting metrics with _in_flight_requests_lock: reqs = list(_in_flight_requests) for rm in reqs: rm.update_metrics() # Map from (method, name) -> int, the number of in flight requests of that # type. The key type is Tuple[str, str], but we leave the length unspecified # for compatability with LaterGauge's annotations. counts: Dict[Tuple[str, ...], int] = {} for rm in reqs: key = (rm.method, rm.name) counts[key] = counts.get(key, 0) + 1 return counts LaterGauge( "synapse_http_server_in_flight_requests_count", "", ["method", "servlet"], _get_in_flight_counts, ) class RequestMetrics: def start(self, time_sec: float, name: str, method: str) -> None: self.start_ts = time_sec self.start_context = current_context() self.name = name self.method = method if self.start_context: # _request_stats records resource usage that we have already added # to the "in flight" metrics. self._request_stats = self.start_context.get_resource_usage() else: logger.error( "Tried to start a RequestMetric from the sentinel context.\n%s", "".join(traceback.format_stack()), ) with _in_flight_requests_lock: _in_flight_requests.add(self) def stop(self, time_sec, response_code, sent_bytes): with _in_flight_requests_lock: _in_flight_requests.discard(self) context = current_context() tag = "" if context: tag = context.tag if context != self.start_context: logger.error( "Context have unexpectedly changed %r, %r", context, self.start_context, ) return else: logger.error( "Trying to stop RequestMetrics in the sentinel context.\n%s", "".join(traceback.format_stack()), ) return response_code = str(response_code) outgoing_responses_counter.labels(self.method, response_code).inc() response_count.labels(self.method, self.name, tag).inc() response_timer.labels(self.method, self.name, tag, response_code).observe( time_sec - self.start_ts ) resource_usage = context.get_resource_usage() response_ru_utime.labels(self.method, self.name, tag).inc( resource_usage.ru_utime ) response_ru_stime.labels(self.method, self.name, tag).inc( resource_usage.ru_stime ) response_db_txn_count.labels(self.method, self.name, tag).inc( resource_usage.db_txn_count ) response_db_txn_duration.labels(self.method, self.name, tag).inc( resource_usage.db_txn_duration_sec ) response_db_sched_duration.labels(self.method, self.name, tag).inc( resource_usage.db_sched_duration_sec ) response_size.labels(self.method, self.name, tag).inc(sent_bytes) # We always call this at the end to ensure that we update the metrics # regardless of whether a call to /metrics while the request was in # flight. self.update_metrics() def update_metrics(self): """Updates the in flight metrics with values from this request.""" if not self.start_context: logger.error( "Tried to update a RequestMetric from the sentinel context.\n%s", "".join(traceback.format_stack()), ) return new_stats = self.start_context.get_resource_usage() diff = new_stats - self._request_stats self._request_stats = new_stats # max() is used since rapid use of ru_stime/ru_utime can end up with the # count going backwards due to NTP, time smearing, fine-grained # correction, or floating points. Who knows, really? in_flight_requests_ru_utime.labels(self.method, self.name).inc( max(diff.ru_utime, 0) ) in_flight_requests_ru_stime.labels(self.method, self.name).inc( max(diff.ru_stime, 0) ) in_flight_requests_db_txn_count.labels(self.method, self.name).inc( diff.db_txn_count ) in_flight_requests_db_txn_duration.labels(self.method, self.name).inc( diff.db_txn_duration_sec ) in_flight_requests_db_sched_duration.labels(self.method, self.name).inc( diff.db_sched_duration_sec ) synapse-1.53.0/synapse/http/server.py000066400000000000000000000740451420514467300176230ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import html import logging import types import urllib from http import HTTPStatus from inspect import isawaitable from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, Iterator, List, NoReturn, Optional, Pattern, Tuple, Union, ) import attr import jinja2 from canonicaljson import encode_canonical_json from typing_extensions import Protocol from zope.interface import implementer from twisted.internet import defer, interfaces from twisted.python import failure from twisted.web import resource from twisted.web.server import NOT_DONE_YET, Request from twisted.web.static import File from twisted.web.util import redirectTo from synapse.api.errors import ( CodeMessageException, Codes, RedirectException, SynapseError, UnrecognizedRequestError, ) from synapse.http.site import SynapseRequest from synapse.logging.context import defer_to_thread, preserve_fn, run_in_background from synapse.logging.opentracing import active_span, start_active_span, trace_servlet from synapse.util import json_encoder from synapse.util.caches import intern_dict from synapse.util.iterutils import chunk_seq if TYPE_CHECKING: import opentracing from synapse.server import HomeServer logger = logging.getLogger(__name__) HTML_ERROR_TEMPLATE = """ Error {code}

{msg}

""" def return_json_error(f: failure.Failure, request: SynapseRequest) -> None: """Sends a JSON error response to clients.""" if f.check(SynapseError): # mypy doesn't understand that f.check asserts the type. exc: SynapseError = f.value # type: ignore error_code = exc.code error_dict = exc.error_dict() logger.info("%s SynapseError: %s - %s", request, error_code, exc.msg) else: error_code = 500 error_dict = {"error": "Internal server error", "errcode": Codes.UNKNOWN} logger.error( "Failed handle request via %r: %r", request.request_metrics.name, request, exc_info=(f.type, f.value, f.getTracebackObject()), # type: ignore[arg-type] ) # Only respond with an error response if we haven't already started writing, # otherwise lets just kill the connection if request.startedWriting: if request.transport: try: request.transport.abortConnection() except Exception: # abortConnection throws if the connection is already closed pass else: respond_with_json( request, error_code, error_dict, send_cors=True, ) def return_html_error( f: failure.Failure, request: Request, error_template: Union[str, jinja2.Template], ) -> None: """Sends an HTML error page corresponding to the given failure. Handles RedirectException and other CodeMessageExceptions (such as SynapseError) Args: f: the error to report request: the failing request error_template: the HTML template. Can be either a string (with `{code}`, `{msg}` placeholders), or a jinja2 template """ if f.check(CodeMessageException): # mypy doesn't understand that f.check asserts the type. cme: CodeMessageException = f.value # type: ignore code = cme.code msg = cme.msg if isinstance(cme, RedirectException): logger.info("%s redirect to %s", request, cme.location) request.setHeader(b"location", cme.location) request.cookies.extend(cme.cookies) elif isinstance(cme, SynapseError): logger.info("%s SynapseError: %s - %s", request, code, msg) else: logger.error( "Failed handle request %r", request, exc_info=(f.type, f.value, f.getTracebackObject()), # type: ignore[arg-type] ) else: code = HTTPStatus.INTERNAL_SERVER_ERROR msg = "Internal server error" logger.error( "Failed handle request %r", request, exc_info=(f.type, f.value, f.getTracebackObject()), # type: ignore[arg-type] ) if isinstance(error_template, str): body = error_template.format(code=code, msg=html.escape(msg)) else: body = error_template.render(code=code, msg=msg) respond_with_html(request, code, body) def wrap_async_request_handler( h: Callable[["_AsyncResource", SynapseRequest], Awaitable[None]] ) -> Callable[["_AsyncResource", SynapseRequest], "defer.Deferred[None]"]: """Wraps an async request handler so that it calls request.processing. This helps ensure that work done by the request handler after the request is completed is correctly recorded against the request metrics/logs. The handler method must have a signature of "handle_foo(self, request)", where "request" must be a SynapseRequest. The handler may return a deferred, in which case the completion of the request isn't logged until the deferred completes. """ async def wrapped_async_request_handler( self: "_AsyncResource", request: SynapseRequest ) -> None: with request.processing(): await h(self, request) # we need to preserve_fn here, because the synchronous render method won't yield for # us (obviously) return preserve_fn(wrapped_async_request_handler) # Type of a callback method for processing requests # it is actually called with a SynapseRequest and a kwargs dict for the params, # but I can't figure out how to represent that. ServletCallback = Callable[ ..., Union[None, Awaitable[None], Tuple[int, Any], Awaitable[Tuple[int, Any]]] ] class HttpServer(Protocol): """Interface for registering callbacks on a HTTP server""" def register_paths( self, method: str, path_patterns: Iterable[Pattern], callback: ServletCallback, servlet_classname: str, ) -> None: """Register a callback that gets fired if we receive a http request with the given method for a path that matches the given regex. If the regex contains groups these gets passed to the callback via an unpacked tuple. Args: method: The HTTP method to listen to. path_patterns: The regex used to match requests. callback: The function to fire if we receive a matched request. The first argument will be the request object and subsequent arguments will be any matched groups from the regex. This should return either tuple of (code, response), or None. servlet_classname (str): The name of the handler to be used in prometheus and opentracing logs. """ pass class _AsyncResource(resource.Resource, metaclass=abc.ABCMeta): """Base class for resources that have async handlers. Sub classes can either implement `_async_render_` to handle requests by method, or override `_async_render` to handle all requests. Args: extract_context: Whether to attempt to extract the opentracing context from the request the servlet is handling. """ def __init__(self, extract_context: bool = False): super().__init__() self._extract_context = extract_context def render(self, request: SynapseRequest) -> int: """This gets called by twisted every time someone sends us a request.""" defer.ensureDeferred(self._async_render_wrapper(request)) return NOT_DONE_YET @wrap_async_request_handler async def _async_render_wrapper(self, request: SynapseRequest) -> None: """This is a wrapper that delegates to `_async_render` and handles exceptions, return values, metrics, etc. """ try: request.request_metrics.name = self.__class__.__name__ with trace_servlet(request, self._extract_context): callback_return = await self._async_render(request) if callback_return is not None: code, response = callback_return self._send_response(request, code, response) except Exception: # failure.Failure() fishes the original Failure out # of our stack, and thus gives us a sensible stack # trace. f = failure.Failure() self._send_error_response(f, request) async def _async_render(self, request: SynapseRequest) -> Optional[Tuple[int, Any]]: """Delegates to `_async_render_` methods, or returns a 400 if no appropriate method exists. Can be overridden in sub classes for different routing. """ # Treat HEAD requests as GET requests. request_method = request.method.decode("ascii") if request_method == "HEAD": request_method = "GET" method_handler = getattr(self, "_async_render_%s" % (request_method,), None) if method_handler: raw_callback_return = method_handler(request) # Is it synchronous? We'll allow this for now. if isawaitable(raw_callback_return): callback_return = await raw_callback_return else: callback_return = raw_callback_return # type: ignore return callback_return _unrecognised_request_handler(request) @abc.abstractmethod def _send_response( self, request: SynapseRequest, code: int, response_object: Any, ) -> None: raise NotImplementedError() @abc.abstractmethod def _send_error_response( self, f: failure.Failure, request: SynapseRequest, ) -> None: raise NotImplementedError() class DirectServeJsonResource(_AsyncResource): """A resource that will call `self._async_on_` on new requests, formatting responses and errors as JSON. """ def __init__(self, canonical_json: bool = False, extract_context: bool = False): super().__init__(extract_context) self.canonical_json = canonical_json def _send_response( self, request: SynapseRequest, code: int, response_object: Any, ) -> None: """Implements _AsyncResource._send_response""" # TODO: Only enable CORS for the requests that need it. respond_with_json( request, code, response_object, send_cors=True, canonical_json=self.canonical_json, ) def _send_error_response( self, f: failure.Failure, request: SynapseRequest, ) -> None: """Implements _AsyncResource._send_error_response""" return_json_error(f, request) @attr.s(slots=True, frozen=True, auto_attribs=True) class _PathEntry: pattern: Pattern callback: ServletCallback servlet_classname: str class JsonResource(DirectServeJsonResource): """This implements the HttpServer interface and provides JSON support for Resources. Register callbacks via register_paths() Callbacks can return a tuple of status code and a dict in which case the the dict will automatically be sent to the client as a JSON object. The JsonResource is primarily intended for returning JSON, but callbacks may send something other than JSON, they may do so by using the methods on the request object and instead returning None. """ isLeaf = True def __init__( self, hs: "HomeServer", canonical_json: bool = True, extract_context: bool = False, ): super().__init__(canonical_json, extract_context) self.clock = hs.get_clock() self.path_regexs: Dict[bytes, List[_PathEntry]] = {} self.hs = hs def register_paths( self, method: str, path_patterns: Iterable[Pattern], callback: ServletCallback, servlet_classname: str, ) -> None: """ Registers a request handler against a regular expression. Later request URLs are checked against these regular expressions in order to identify an appropriate handler for that request. Args: method: GET, POST etc path_patterns: A list of regular expressions to which the request URLs are compared. callback: The handler for the request. Usually a Servlet servlet_classname: The name of the handler to be used in prometheus and opentracing logs. """ method_bytes = method.encode("utf-8") for path_pattern in path_patterns: logger.debug("Registering for %s %s", method, path_pattern.pattern) self.path_regexs.setdefault(method_bytes, []).append( _PathEntry(path_pattern, callback, servlet_classname) ) def _get_handler_for_request( self, request: SynapseRequest ) -> Tuple[ServletCallback, str, Dict[str, str]]: """Finds a callback method to handle the given request. Returns: A tuple of the callback to use, the name of the servlet, and the key word arguments to pass to the callback """ # At this point the path must be bytes. request_path_bytes: bytes = request.path # type: ignore request_path = request_path_bytes.decode("ascii") # Treat HEAD requests as GET requests. request_method = request.method if request_method == b"HEAD": request_method = b"GET" # Loop through all the registered callbacks to check if the method # and path regex match for path_entry in self.path_regexs.get(request_method, []): m = path_entry.pattern.match(request_path) if m: # We found a match! return path_entry.callback, path_entry.servlet_classname, m.groupdict() # Huh. No one wanted to handle that? Fiiiiiine. Send 400. return _unrecognised_request_handler, "unrecognised_request_handler", {} async def _async_render(self, request: SynapseRequest) -> Tuple[int, Any]: callback, servlet_classname, group_dict = self._get_handler_for_request(request) # Make sure we have an appropriate name for this handler in prometheus # (rather than the default of JsonResource). request.request_metrics.name = servlet_classname # Now trigger the callback. If it returns a response, we send it # here. If it throws an exception, that is handled by the wrapper # installed by @request_handler. kwargs = intern_dict( { name: urllib.parse.unquote(value) if value else value for name, value in group_dict.items() } ) raw_callback_return = callback(request, **kwargs) # Is it synchronous? We'll allow this for now. if isinstance(raw_callback_return, (defer.Deferred, types.CoroutineType)): callback_return = await raw_callback_return else: callback_return = raw_callback_return # type: ignore return callback_return class DirectServeHtmlResource(_AsyncResource): """A resource that will call `self._async_on_` on new requests, formatting responses and errors as HTML. """ # The error template to use for this resource ERROR_TEMPLATE = HTML_ERROR_TEMPLATE def _send_response( self, request: SynapseRequest, code: int, response_object: Any, ) -> None: """Implements _AsyncResource._send_response""" # We expect to get bytes for us to write assert isinstance(response_object, bytes) html_bytes = response_object respond_with_html_bytes(request, 200, html_bytes) def _send_error_response( self, f: failure.Failure, request: SynapseRequest, ) -> None: """Implements _AsyncResource._send_error_response""" return_html_error(f, request, self.ERROR_TEMPLATE) class StaticResource(File): """ A resource that represents a plain non-interpreted file or directory. Differs from the File resource by adding clickjacking protection. """ def render_GET(self, request: Request) -> bytes: set_clickjacking_protection_headers(request) return super().render_GET(request) def _unrecognised_request_handler(request: Request) -> NoReturn: """Request handler for unrecognised requests This is a request handler suitable for return from _get_handler_for_request. It actually just raises an UnrecognizedRequestError. Args: request: Unused, but passed in to match the signature of ServletCallback. """ raise UnrecognizedRequestError() class RootRedirect(resource.Resource): """Redirects the root '/' path to another path.""" def __init__(self, path: str): super().__init__() self.url = path def render_GET(self, request: Request) -> bytes: return redirectTo(self.url.encode("ascii"), request) def getChild(self, name: str, request: Request) -> resource.Resource: if len(name) == 0: return self # select ourselves as the child to render return super().getChild(name, request) class OptionsResource(resource.Resource): """Responds to OPTION requests for itself and all children.""" def render_OPTIONS(self, request: Request) -> bytes: request.setResponseCode(204) request.setHeader(b"Content-Length", b"0") set_cors_headers(request) return b"" def getChildWithDefault(self, path: str, request: Request) -> resource.Resource: if request.method == b"OPTIONS": return self # select ourselves as the child to render return super().getChildWithDefault(path, request) class RootOptionsRedirectResource(OptionsResource, RootRedirect): pass @implementer(interfaces.IPushProducer) class _ByteProducer: """ Iteratively write bytes to the request. """ # The minimum number of bytes for each chunk. Note that the last chunk will # usually be smaller than this. min_chunk_size = 1024 def __init__( self, request: Request, iterator: Iterator[bytes], ): self._request: Optional[Request] = request self._iterator = iterator self._paused = False try: self._request.registerProducer(self, True) except AttributeError as e: # Calling self._request.registerProducer might raise an AttributeError since # the underlying Twisted code calls self._request.channel.registerProducer, # however self._request.channel will be None if the connection was lost. logger.info("Connection disconnected before response was written: %r", e) # We drop our references to data we'll not use. self._request = None self._iterator = iter(()) else: # Start producing if `registerProducer` was successful self.resumeProducing() def _send_data(self, data: List[bytes]) -> None: """ Send a list of bytes as a chunk of a response. """ if not data or not self._request: return self._request.write(b"".join(data)) def pauseProducing(self) -> None: self._paused = True def resumeProducing(self) -> None: # We've stopped producing in the meantime (note that this might be # re-entrant after calling write). if not self._request: return self._paused = False # Write until there's backpressure telling us to stop. while not self._paused: # Get the next chunk and write it to the request. # # The output of the JSON encoder is buffered and coalesced until # min_chunk_size is reached. This is because JSON encoders produce # very small output per iteration and the Request object converts # each call to write() to a separate chunk. Without this there would # be an explosion in bytes written (e.g. b"{" becoming "1\r\n{\r\n"). # # Note that buffer stores a list of bytes (instead of appending to # bytes) to hopefully avoid many allocations. buffer = [] buffered_bytes = 0 while buffered_bytes < self.min_chunk_size: try: data = next(self._iterator) buffer.append(data) buffered_bytes += len(data) except StopIteration: # The entire JSON object has been serialized, write any # remaining data, finalize the producer and the request, and # clean-up any references. self._send_data(buffer) self._request.unregisterProducer() self._request.finish() self.stopProducing() return self._send_data(buffer) def stopProducing(self) -> None: # Clear a circular reference. self._request = None def _encode_json_bytes(json_object: Any) -> bytes: """ Encode an object into JSON. Returns an iterator of bytes. """ return json_encoder.encode(json_object).encode("utf-8") def respond_with_json( request: SynapseRequest, code: int, json_object: Any, send_cors: bool = False, canonical_json: bool = True, ) -> Optional[int]: """Sends encoded JSON in response to the given request. Args: request: The http request to respond to. code: The HTTP response code. json_object: The object to serialize to JSON. send_cors: Whether to send Cross-Origin Resource Sharing headers https://fetch.spec.whatwg.org/#http-cors-protocol canonical_json: Whether to use the canonicaljson algorithm when encoding the JSON bytes. Returns: twisted.web.server.NOT_DONE_YET if the request is still active. """ # could alternatively use request.notifyFinish() and flip a flag when # the Deferred fires, but since the flag is RIGHT THERE it seems like # a waste. if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return None if canonical_json: encoder = encode_canonical_json else: encoder = _encode_json_bytes request.setResponseCode(code) request.setHeader(b"Content-Type", b"application/json") request.setHeader(b"Cache-Control", b"no-cache, no-store, must-revalidate") if send_cors: set_cors_headers(request) run_in_background( _async_write_json_to_request_in_thread, request, encoder, json_object ) return NOT_DONE_YET def respond_with_json_bytes( request: Request, code: int, json_bytes: bytes, send_cors: bool = False, ) -> Optional[int]: """Sends encoded JSON in response to the given request. Args: request: The http request to respond to. code: The HTTP response code. json_bytes: The json bytes to use as the response body. send_cors: Whether to send Cross-Origin Resource Sharing headers https://fetch.spec.whatwg.org/#http-cors-protocol Returns: twisted.web.server.NOT_DONE_YET if the request is still active. """ if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return None request.setResponseCode(code) request.setHeader(b"Content-Type", b"application/json") request.setHeader(b"Content-Length", b"%d" % (len(json_bytes),)) request.setHeader(b"Cache-Control", b"no-cache, no-store, must-revalidate") if send_cors: set_cors_headers(request) _write_bytes_to_request(request, json_bytes) return NOT_DONE_YET async def _async_write_json_to_request_in_thread( request: SynapseRequest, json_encoder: Callable[[Any], bytes], json_object: Any, ) -> None: """Encodes the given JSON object on a thread and then writes it to the request. This is done so that encoding large JSON objects doesn't block the reactor thread. Note: We don't use JsonEncoder.iterencode here as that falls back to the Python implementation (rather than the C backend), which is *much* more expensive. """ def encode(opentracing_span: "Optional[opentracing.Span]") -> bytes: # it might take a while for the threadpool to schedule us, so we write # opentracing logs once we actually get scheduled, so that we can see how # much that contributed. if opentracing_span: opentracing_span.log_kv({"event": "scheduled"}) res = json_encoder(json_object) if opentracing_span: opentracing_span.log_kv({"event": "encoded"}) return res with start_active_span("encode_json_response"): span = active_span() json_str = await defer_to_thread(request.reactor, encode, span) _write_bytes_to_request(request, json_str) def _write_bytes_to_request(request: Request, bytes_to_write: bytes) -> None: """Writes the bytes to the request using an appropriate producer. Note: This should be used instead of `Request.write` to correctly handle large response bodies. """ # The problem with dumping all of the response into the `Request` object at # once (via `Request.write`) is that doing so starts the timeout for the # next request to be received: so if it takes longer than 60s to stream back # the response to the client, the client never gets it. # # The correct solution is to use a Producer; then the timeout is only # started once all of the content is sent over the TCP connection. # To make sure we don't write all of the bytes at once we split it up into # chunks. chunk_size = 4096 bytes_generator = chunk_seq(bytes_to_write, chunk_size) # We use a `_ByteProducer` here rather than `NoRangeStaticProducer` as the # unit tests can't cope with being given a pull producer. _ByteProducer(request, bytes_generator) def set_cors_headers(request: Request) -> None: """Set the CORS headers so that javascript running in a web browsers can use this API Args: request: The http request to add CORS to. """ request.setHeader(b"Access-Control-Allow-Origin", b"*") request.setHeader( b"Access-Control-Allow-Methods", b"GET, HEAD, POST, PUT, DELETE, OPTIONS" ) request.setHeader( b"Access-Control-Allow-Headers", b"X-Requested-With, Content-Type, Authorization, Date", ) def respond_with_html(request: Request, code: int, html: str) -> None: """ Wraps `respond_with_html_bytes` by first encoding HTML from a str to UTF-8 bytes. """ respond_with_html_bytes(request, code, html.encode("utf-8")) def respond_with_html_bytes(request: Request, code: int, html_bytes: bytes) -> None: """ Sends HTML (encoded as UTF-8 bytes) as the response to the given request. Note that this adds clickjacking protection headers and finishes the request. Args: request: The http request to respond to. code: The HTTP response code. html_bytes: The HTML bytes to use as the response body. """ # could alternatively use request.notifyFinish() and flip a flag when # the Deferred fires, but since the flag is RIGHT THERE it seems like # a waste. if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return None request.setResponseCode(code) request.setHeader(b"Content-Type", b"text/html; charset=utf-8") request.setHeader(b"Content-Length", b"%d" % (len(html_bytes),)) # Ensure this content cannot be embedded. set_clickjacking_protection_headers(request) request.write(html_bytes) finish_request(request) def set_clickjacking_protection_headers(request: Request) -> None: """ Set headers to guard against clickjacking of embedded content. This sets the X-Frame-Options and Content-Security-Policy headers which instructs browsers to not allow the HTML of the response to be embedded onto another page. Args: request: The http request to add the headers to. """ request.setHeader(b"X-Frame-Options", b"DENY") request.setHeader(b"Content-Security-Policy", b"frame-ancestors 'none';") def respond_with_redirect(request: Request, url: bytes) -> None: """Write a 302 response to the request, if it is still alive.""" logger.debug("Redirect to %s", url.decode("utf-8")) request.redirect(url) finish_request(request) def finish_request(request: Request) -> None: """Finish writing the response to the request. Twisted throws a RuntimeException if the connection closed before the response was written but doesn't provide a convenient or reliable way to determine if the connection was closed. So we catch and log the RuntimeException You might think that ``request.notifyFinish`` could be used to tell if the request was finished. However the deferred it returns won't fire if the connection was already closed, meaning we'd have to have called the method right at the start of the request. By the time we want to write the response it will already be too late. """ try: request.finish() except RuntimeError as e: logger.info("Connection disconnected before response was written: %r", e) synapse-1.53.0/synapse/http/servlet.py000066400000000000000000000533411420514467300177750ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This module contains base REST classes for constructing REST servlets. """ import logging from http import HTTPStatus from typing import ( TYPE_CHECKING, Iterable, List, Mapping, Optional, Sequence, Tuple, overload, ) from typing_extensions import Literal from twisted.web.server import Request from synapse.api.errors import Codes, SynapseError from synapse.http.server import HttpServer from synapse.types import JsonDict, RoomAlias, RoomID from synapse.util import json_decoder if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @overload def parse_integer(request: Request, name: str, default: int) -> int: ... @overload def parse_integer(request: Request, name: str, *, required: Literal[True]) -> int: ... @overload def parse_integer( request: Request, name: str, default: Optional[int] = None, required: bool = False ) -> Optional[int]: ... def parse_integer( request: Request, name: str, default: Optional[int] = None, required: bool = False ) -> Optional[int]: """Parse an integer parameter from the request string Args: request: the twisted HTTP request. name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: An int value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not an integer. """ args: Mapping[bytes, Sequence[bytes]] = request.args # type: ignore return parse_integer_from_args(args, name, default, required) @overload def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[int] = None, ) -> Optional[int]: ... @overload def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, required: Literal[True], ) -> int: ... @overload def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[int] = None, required: bool = False, ) -> Optional[int]: ... def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[int] = None, required: bool = False, ) -> Optional[int]: """Parse an integer parameter from the request string Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: An int value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not an integer. """ name_bytes = name.encode("ascii") if name_bytes in args: try: return int(args[name_bytes][0]) except Exception: message = "Query parameter %r must be an integer" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM ) else: if required: message = "Missing integer query parameter %r" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM ) else: return default @overload def parse_boolean(request: Request, name: str, default: bool) -> bool: ... @overload def parse_boolean(request: Request, name: str, *, required: Literal[True]) -> bool: ... @overload def parse_boolean( request: Request, name: str, default: Optional[bool] = None, required: bool = False ) -> Optional[bool]: ... def parse_boolean( request: Request, name: str, default: Optional[bool] = None, required: bool = False ) -> Optional[bool]: """Parse a boolean parameter from the request query string Args: request: the twisted HTTP request. name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: A bool value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not one of "true" or "false". """ args: Mapping[bytes, Sequence[bytes]] = request.args # type: ignore return parse_boolean_from_args(args, name, default, required) @overload def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: bool, ) -> bool: ... @overload def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, required: Literal[True], ) -> bool: ... @overload def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bool] = None, required: bool = False, ) -> Optional[bool]: ... def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bool] = None, required: bool = False, ) -> Optional[bool]: """Parse a boolean parameter from the request query string Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: A bool value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not one of "true" or "false". """ name_bytes = name.encode("ascii") if name_bytes in args: try: return {b"true": True, b"false": False}[args[name_bytes][0]] except Exception: message = ( "Boolean query parameter %r must be one of ['true', 'false']" ) % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM ) else: if required: message = "Missing boolean query parameter %r" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM ) else: return default @overload def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bytes] = None, ) -> Optional[bytes]: ... @overload def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Literal[None] = None, *, required: Literal[True], ) -> bytes: ... @overload def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bytes] = None, required: bool = False, ) -> Optional[bytes]: ... def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bytes] = None, required: bool = False, ) -> Optional[bytes]: """ Parse a string parameter as bytes from the request query string. Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. Must be bytes if encoding is None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: Bytes or the default value. Raises: SynapseError if the parameter is absent and required. """ name_bytes = name.encode("ascii") if name_bytes in args: return args[name_bytes][0] elif required: message = "Missing string query parameter %s" % (name,) raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM) return default @overload def parse_string( request: Request, name: str, default: str, *, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> str: ... @overload def parse_string( request: Request, name: str, *, required: Literal[True], allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> str: ... @overload def parse_string( request: Request, name: str, *, required: bool = False, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[str]: ... def parse_string( request: Request, name: str, default: Optional[str] = None, required: bool = False, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[str]: """ Parse a string parameter from the request query string. If encoding is not None, the content of the query param will be decoded to Unicode using the encoding, otherwise it will be encoded Args: request: the twisted HTTP request. name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. allowed_values: List of allowed values for the string, or None if any value is allowed, defaults to None. Must be the same type as name, if given. encoding: The encoding to decode the string content with. Returns: A string value or the default. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ args: Mapping[bytes, Sequence[bytes]] = request.args # type: ignore return parse_string_from_args( args, name, default, required=required, allowed_values=allowed_values, encoding=encoding, ) def _parse_string_value( value: bytes, allowed_values: Optional[Iterable[str]], name: str, encoding: str, ) -> str: try: value_str = value.decode(encoding) except ValueError: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter %r must be %s" % (name, encoding) ) if allowed_values is not None and value_str not in allowed_values: message = "Query parameter %r must be one of [%s]" % ( name, ", ".join(repr(v) for v in allowed_values), ) raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM) else: return value_str @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[List[str]]: ... @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: List[str], *, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> List[str]: ... @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, required: Literal[True], allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> List[str]: ... @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[List[str]] = None, *, required: bool = False, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[List[str]]: ... def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[List[str]] = None, required: bool = False, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[List[str]]: """ Parse a string parameter from the request query string list. The content of the query param will be decoded to Unicode using the encoding. Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. allowed_values: List of allowed values for the string, or None if any value is allowed, defaults to None. encoding: The encoding to decode the string content with. Returns: A string value or the default. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ name_bytes = name.encode("ascii") if name_bytes in args: values = args[name_bytes] return [ _parse_string_value(value, allowed_values, name=name, encoding=encoding) for value in values ] else: if required: message = "Missing string query parameter %r" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM ) return default @overload def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, *, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[str]: ... @overload def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, *, required: Literal[True], allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> str: ... @overload def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, required: bool = False, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[str]: ... def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, required: bool = False, allowed_values: Optional[Iterable[str]] = None, encoding: str = "ascii", ) -> Optional[str]: """ Parse the string parameter from the request query string list and return the first result. The content of the query param will be decoded to Unicode using the encoding. Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. allowed_values: List of allowed values for the string, or None if any value is allowed, defaults to None. Must be the same type as name, if given. encoding: The encoding to decode the string content with. Returns: A string value or the default. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ strings = parse_strings_from_args( args, name, default=[default] if default is not None else None, required=required, allowed_values=allowed_values, encoding=encoding, ) if strings is None: return None return strings[0] @overload def parse_json_value_from_request(request: Request) -> JsonDict: ... @overload def parse_json_value_from_request( request: Request, allow_empty_body: Literal[False] ) -> JsonDict: ... @overload def parse_json_value_from_request( request: Request, allow_empty_body: bool = False ) -> Optional[JsonDict]: ... def parse_json_value_from_request( request: Request, allow_empty_body: bool = False ) -> Optional[JsonDict]: """Parse a JSON value from the body of a twisted HTTP request. Args: request: the twisted HTTP request. allow_empty_body: if True, an empty body will be accepted and turned into None Returns: The JSON value. Raises: SynapseError if the request body couldn't be decoded as JSON. """ try: content_bytes = request.content.read() # type: ignore except Exception: raise SynapseError(HTTPStatus.BAD_REQUEST, "Error reading JSON content.") if not content_bytes and allow_empty_body: return None try: content = json_decoder.decode(content_bytes.decode("utf-8")) except Exception as e: logger.warning("Unable to parse JSON: %s (%s)", e, content_bytes) raise SynapseError( HTTPStatus.BAD_REQUEST, "Content not JSON.", errcode=Codes.NOT_JSON ) return content def parse_json_object_from_request( request: Request, allow_empty_body: bool = False ) -> JsonDict: """Parse a JSON object from the body of a twisted HTTP request. Args: request: the twisted HTTP request. allow_empty_body: if True, an empty body will be accepted and turned into an empty dict. Raises: SynapseError if the request body couldn't be decoded as JSON or if it wasn't a JSON object. """ content = parse_json_value_from_request(request, allow_empty_body=allow_empty_body) if allow_empty_body and content is None: return {} if not isinstance(content, dict): message = "Content must be a JSON object." raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.BAD_JSON) return content def assert_params_in_dict(body: JsonDict, required: Iterable[str]) -> None: absent = [] for k in required: if k not in body: absent.append(k) if len(absent) > 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Missing params: %r" % absent, Codes.MISSING_PARAM ) class RestServlet: """A Synapse REST Servlet. An implementing class can either provide its own custom 'register' method, or use the automatic pattern handling provided by the base class. To use this latter, the implementing class instead provides a `PATTERN` class attribute containing a pre-compiled regular expression. The automatic register method will then use this method to register any of the following instance methods associated with the corresponding HTTP method: on_GET on_PUT on_POST on_DELETE Automatically handles turning CodeMessageExceptions thrown by these methods into the appropriate HTTP response. """ def register(self, http_server: HttpServer) -> None: """Register this servlet with the given HTTP server.""" patterns = getattr(self, "PATTERNS", None) if patterns: for method in ("GET", "PUT", "POST", "DELETE"): if hasattr(self, "on_%s" % (method,)): servlet_classname = self.__class__.__name__ method_handler = getattr(self, "on_%s" % (method,)) http_server.register_paths( method, patterns, method_handler, servlet_classname ) else: raise NotImplementedError("RestServlet must register something.") class ResolveRoomIdMixin: def __init__(self, hs: "HomeServer"): self.room_member_handler = hs.get_room_member_handler() async def resolve_room_id( self, room_identifier: str, remote_room_hosts: Optional[List[str]] = None ) -> Tuple[str, Optional[List[str]]]: """ Resolve a room identifier to a room ID, if necessary. This also performanes checks to ensure the room ID is of the proper form. Args: room_identifier: The room ID or alias. remote_room_hosts: The potential remote room hosts to use. Returns: The resolved room ID. Raises: SynapseError if the room ID is of the wrong form. """ if RoomID.is_valid(room_identifier): resolved_room_id = room_identifier elif RoomAlias.is_valid(room_identifier): room_alias = RoomAlias.from_string(room_identifier) ( room_id, remote_room_hosts, ) = await self.room_member_handler.lookup_room_alias(room_alias) resolved_room_id = room_id.to_string() else: raise SynapseError( HTTPStatus.BAD_REQUEST, "%s was not legal room ID or room alias" % (room_identifier,), ) if not resolved_room_id: raise SynapseError( HTTPStatus.BAD_REQUEST, "Unknown room ID or room alias %s" % room_identifier, ) return resolved_room_id, remote_room_hosts synapse-1.53.0/synapse/http/site.py000066400000000000000000000552321420514467300172560ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import contextlib import logging import time from typing import TYPE_CHECKING, Any, Generator, Optional, Tuple, Union import attr from zope.interface import implementer from twisted.internet.interfaces import IAddress, IReactorTime from twisted.python.failure import Failure from twisted.web.http import HTTPChannel from twisted.web.resource import IResource, Resource from twisted.web.server import Request, Site from synapse.config.server import ListenerConfig from synapse.http import get_request_user_agent, redact_uri from synapse.http.request_metrics import RequestMetrics, requests_counter from synapse.logging.context import ( ContextRequest, LoggingContext, PreserveLoggingContext, ) from synapse.types import Requester if TYPE_CHECKING: import opentracing logger = logging.getLogger(__name__) _next_request_seq = 0 class SynapseRequest(Request): """Class which encapsulates an HTTP request to synapse. All of the requests processed in synapse are of this type. It extends twisted's twisted.web.server.Request, and adds: * Unique request ID * A log context associated with the request * Redaction of access_token query-params in __repr__ * Logging at start and end * Metrics to record CPU, wallclock and DB time by endpoint. * A limit to the size of request which will be accepted It also provides a method `processing`, which returns a context manager. If this method is called, the request won't be logged until the context manager is closed; this is useful for asynchronous request handlers which may go on processing the request even after the client has disconnected. Attributes: logcontext: the log context for this request """ def __init__( self, channel: HTTPChannel, site: "SynapseSite", *args: Any, max_request_body_size: int = 1024, **kw: Any, ): super().__init__(channel, *args, **kw) self._max_request_body_size = max_request_body_size self.synapse_site = site self.reactor = site.reactor self._channel = channel # this is used by the tests self.start_time = 0.0 # The requester, if authenticated. For federation requests this is the # server name, for client requests this is the Requester object. self._requester: Optional[Union[Requester, str]] = None # An opentracing span for this request. Will be closed when the request is # completely processed. self._opentracing_span: "Optional[opentracing.Span]" = None # we can't yet create the logcontext, as we don't know the method. self.logcontext: Optional[LoggingContext] = None global _next_request_seq self.request_seq = _next_request_seq _next_request_seq += 1 # whether an asynchronous request handler has called processing() self._is_processing = False # the time when the asynchronous request handler completed its processing self._processing_finished_time: Optional[float] = None # what time we finished sending the response to the client (or the connection # dropped) self.finish_time: Optional[float] = None def __repr__(self) -> str: # We overwrite this so that we don't log ``access_token`` return "<%s at 0x%x method=%r uri=%r clientproto=%r site=%r>" % ( self.__class__.__name__, id(self), self.get_method(), self.get_redacted_uri(), self.clientproto.decode("ascii", errors="replace"), self.synapse_site.site_tag, ) def handleContentChunk(self, data: bytes) -> None: # we should have a `content` by now. assert self.content, "handleContentChunk() called before gotLength()" if self.content.tell() + len(data) > self._max_request_body_size: logger.warning( "Aborting connection from %s because the request exceeds maximum size: %s %s", self.client, self.get_method(), self.get_redacted_uri(), ) self.transport.abortConnection() return super().handleContentChunk(data) @property def requester(self) -> Optional[Union[Requester, str]]: return self._requester @requester.setter def requester(self, value: Union[Requester, str]) -> None: # Store the requester, and update some properties based on it. # This should only be called once. assert self._requester is None self._requester = value # A logging context should exist by now (and have a ContextRequest). assert self.logcontext is not None assert self.logcontext.request is not None ( requester, authenticated_entity, ) = self.get_authenticated_entity() self.logcontext.request.requester = requester # If there's no authenticated entity, it was the requester. self.logcontext.request.authenticated_entity = authenticated_entity or requester def set_opentracing_span(self, span: "opentracing.Span") -> None: """attach an opentracing span to this request Doing so will cause the span to be closed when we finish processing the request """ self._opentracing_span = span def get_request_id(self) -> str: return "%s-%i" % (self.get_method(), self.request_seq) def get_redacted_uri(self) -> str: """Gets the redacted URI associated with the request (or placeholder if the URI has not yet been received). Note: This is necessary as the placeholder value in twisted is str rather than bytes, so we need to sanitise `self.uri`. Returns: The redacted URI as a string. """ uri: Union[bytes, str] = self.uri if isinstance(uri, bytes): uri = uri.decode("ascii", errors="replace") return redact_uri(uri) def get_method(self) -> str: """Gets the method associated with the request (or placeholder if method has not yet been received). Note: This is necessary as the placeholder value in twisted is str rather than bytes, so we need to sanitise `self.method`. Returns: The request method as a string. """ method: Union[bytes, str] = self.method if isinstance(method, bytes): return self.method.decode("ascii") return method def get_authenticated_entity(self) -> Tuple[Optional[str], Optional[str]]: """ Get the "authenticated" entity of the request, which might be the user performing the action, or a user being puppeted by a server admin. Returns: A tuple: The first item is a string representing the user making the request. The second item is a string or None representing the user who authenticated when making this request. See Requester.authenticated_entity. """ # Convert the requester into a string that we can log if isinstance(self._requester, str): return self._requester, None elif isinstance(self._requester, Requester): requester = self._requester.user.to_string() authenticated_entity = self._requester.authenticated_entity # If this is a request where the target user doesn't match the user who # authenticated (e.g. and admin is puppetting a user) then we return both. if self._requester.user.to_string() != authenticated_entity: return requester, authenticated_entity return requester, None elif self._requester is not None: # This shouldn't happen, but we log it so we don't lose information # and can see that we're doing something wrong. return repr(self._requester), None # type: ignore[unreachable] return None, None def render(self, resrc: Resource) -> None: # this is called once a Resource has been found to serve the request; in our # case the Resource in question will normally be a JsonResource. # create a LogContext for this request request_id = self.get_request_id() self.logcontext = LoggingContext( request_id, request=ContextRequest( request_id=request_id, ip_address=self.getClientIP(), site_tag=self.synapse_site.site_tag, # The requester is going to be unknown at this point. requester=None, authenticated_entity=None, method=self.get_method(), url=self.get_redacted_uri(), protocol=self.clientproto.decode("ascii", errors="replace"), user_agent=get_request_user_agent(self), ), ) # override the Server header which is set by twisted self.setHeader("Server", self.synapse_site.server_version_string) with PreserveLoggingContext(self.logcontext): # we start the request metrics timer here with an initial stab # at the servlet name. For most requests that name will be # JsonResource (or a subclass), and JsonResource._async_render # will update it once it picks a servlet. servlet_name = resrc.__class__.__name__ self._started_processing(servlet_name) Request.render(self, resrc) # record the arrival of the request *after* # dispatching to the handler, so that the handler # can update the servlet name in the request # metrics requests_counter.labels(self.get_method(), self.request_metrics.name).inc() @contextlib.contextmanager def processing(self) -> Generator[None, None, None]: """Record the fact that we are processing this request. Returns a context manager; the correct way to use this is: async def handle_request(request): with request.processing("FooServlet"): await really_handle_the_request() Once the context manager is closed, the completion of the request will be logged, and the various metrics will be updated. """ if self._is_processing: raise RuntimeError("Request is already processing") self._is_processing = True try: yield except Exception: # this should already have been caught, and sent back to the client as a 500. logger.exception( "Asynchronous message handler raised an uncaught exception" ) finally: # the request handler has finished its work and either sent the whole response # back, or handed over responsibility to a Producer. self._processing_finished_time = time.time() self._is_processing = False if self._opentracing_span: self._opentracing_span.log_kv({"event": "finished processing"}) # if we've already sent the response, log it now; otherwise, we wait for the # response to be sent. if self.finish_time is not None: self._finished_processing() def finish(self) -> None: """Called when all response data has been written to this Request. Overrides twisted.web.server.Request.finish to record the finish time and do logging. """ self.finish_time = time.time() Request.finish(self) if self._opentracing_span: self._opentracing_span.log_kv({"event": "response sent"}) if not self._is_processing: assert self.logcontext is not None with PreserveLoggingContext(self.logcontext): self._finished_processing() def connectionLost(self, reason: Union[Failure, Exception]) -> None: """Called when the client connection is closed before the response is written. Overrides twisted.web.server.Request.connectionLost to record the finish time and do logging. """ # There is a bug in Twisted where reason is not wrapped in a Failure object # Detect this and wrap it manually as a workaround # More information: https://github.com/matrix-org/synapse/issues/7441 if not isinstance(reason, Failure): reason = Failure(reason) self.finish_time = time.time() Request.connectionLost(self, reason) if self.logcontext is None: logger.info( "Connection from %s lost before request headers were read", self.client ) return # we only get here if the connection to the client drops before we send # the response. # # It's useful to log it here so that we can get an idea of when # the client disconnects. with PreserveLoggingContext(self.logcontext): logger.info("Connection from client lost before response was sent") if self._opentracing_span: self._opentracing_span.log_kv( {"event": "client connection lost", "reason": str(reason.value)} ) if not self._is_processing: self._finished_processing() def _started_processing(self, servlet_name: str) -> None: """Record the fact that we are processing this request. This will log the request's arrival. Once the request completes, be sure to call finished_processing. Args: servlet_name (str): the name of the servlet which will be processing this request. This is used in the metrics. It is possible to update this afterwards by updating self.request_metrics.name. """ self.start_time = time.time() self.request_metrics = RequestMetrics() self.request_metrics.start( self.start_time, name=servlet_name, method=self.get_method() ) self.synapse_site.access_logger.debug( "%s - %s - Received request: %s %s", self.getClientIP(), self.synapse_site.site_tag, self.get_method(), self.get_redacted_uri(), ) def _finished_processing(self) -> None: """Log the completion of this request and update the metrics""" assert self.logcontext is not None assert self.finish_time is not None usage = self.logcontext.get_resource_usage() if self._processing_finished_time is None: # we completed the request without anything calling processing() self._processing_finished_time = time.time() # the time between receiving the request and the request handler finishing processing_time = self._processing_finished_time - self.start_time # the time between the request handler finishing and the response being sent # to the client (nb may be negative) response_send_time = self.finish_time - self._processing_finished_time user_agent = get_request_user_agent(self, "-") # int(self.code) looks redundant, because self.code is already an int. # But self.code might be an HTTPStatus (which inherits from int)---which has # a different string representation. So ensure we really have an integer. code = str(int(self.code)) if not self.finished: # we didn't send the full response before we gave up (presumably because # the connection dropped) code += "!" log_level = logging.INFO if self._should_log_request() else logging.DEBUG # If this is a request where the target user doesn't match the user who # authenticated (e.g. and admin is puppetting a user) then we log both. requester, authenticated_entity = self.get_authenticated_entity() if authenticated_entity: requester = f"{authenticated_entity}|{requester}" self.synapse_site.access_logger.log( log_level, "%s - %s - {%s}" " Processed request: %.3fsec/%.3fsec (%.3fsec, %.3fsec) (%.3fsec/%.3fsec/%d)" ' %sB %s "%s %s %s" "%s" [%d dbevts]', self.getClientIP(), self.synapse_site.site_tag, requester, processing_time, response_send_time, usage.ru_utime, usage.ru_stime, usage.db_sched_duration_sec, usage.db_txn_duration_sec, int(usage.db_txn_count), self.sentLength, code, self.get_method(), self.get_redacted_uri(), self.clientproto.decode("ascii", errors="replace"), user_agent, usage.evt_db_fetch_count, ) # complete the opentracing span, if any. if self._opentracing_span: self._opentracing_span.finish() try: self.request_metrics.stop(self.finish_time, self.code, self.sentLength) except Exception as e: logger.warning("Failed to stop metrics: %r", e) def _should_log_request(self) -> bool: """Whether we should log at INFO that we processed the request.""" if self.path == b"/health": return False if self.method == b"OPTIONS": return False return True class XForwardedForRequest(SynapseRequest): """Request object which honours proxy headers Extends SynapseRequest to replace getClientIP, getClientAddress, and isSecure with information from request headers. """ # the client IP and ssl flag, as extracted from the headers. _forwarded_for: "Optional[_XForwardedForAddress]" = None _forwarded_https: bool = False def requestReceived(self, command: bytes, path: bytes, version: bytes) -> None: # this method is called by the Channel once the full request has been # received, to dispatch the request to a resource. # We can use it to set the IP address and protocol according to the # headers. self._process_forwarded_headers() return super().requestReceived(command, path, version) def _process_forwarded_headers(self) -> None: headers = self.requestHeaders.getRawHeaders(b"x-forwarded-for") if not headers: return # for now, we just use the first x-forwarded-for header. Really, we ought # to start from the client IP address, and check whether it is trusted; if it # is, work backwards through the headers until we find an untrusted address. # see https://github.com/matrix-org/synapse/issues/9471 self._forwarded_for = _XForwardedForAddress( headers[0].split(b",")[0].strip().decode("ascii") ) # if we got an x-forwarded-for header, also look for an x-forwarded-proto header header = self.getHeader(b"x-forwarded-proto") if header is not None: self._forwarded_https = header.lower() == b"https" else: # this is done largely for backwards-compatibility so that people that # haven't set an x-forwarded-proto header don't get a redirect loop. logger.warning( "forwarded request lacks an x-forwarded-proto header: assuming https" ) self._forwarded_https = True def isSecure(self) -> bool: if self._forwarded_https: return True return super().isSecure() def getClientIP(self) -> str: """ Return the IP address of the client who submitted this request. This method is deprecated. Use getClientAddress() instead. """ if self._forwarded_for is not None: return self._forwarded_for.host return super().getClientIP() def getClientAddress(self) -> IAddress: """ Return the address of the client who submitted this request. """ if self._forwarded_for is not None: return self._forwarded_for return super().getClientAddress() @implementer(IAddress) @attr.s(frozen=True, slots=True, auto_attribs=True) class _XForwardedForAddress: host: str class SynapseSite(Site): """ Synapse-specific twisted http Site This does two main things. First, it replaces the requestFactory in use so that we build SynapseRequests instead of regular t.w.server.Requests. All of the constructor params are really just parameters for SynapseRequest. Second, it inhibits the log() method called by Request.finish, since SynapseRequest does its own logging. """ def __init__( self, logger_name: str, site_tag: str, config: ListenerConfig, resource: IResource, server_version_string: str, max_request_body_size: int, reactor: IReactorTime, ): """ Args: logger_name: The name of the logger to use for access logs. site_tag: A tag to use for this site - mostly in access logs. config: Configuration for the HTTP listener corresponding to this site resource: The base of the resource tree to be used for serving requests on this site server_version_string: A string to present for the Server header max_request_body_size: Maximum request body length to allow before dropping the connection reactor: reactor to be used to manage connection timeouts """ Site.__init__(self, resource, reactor=reactor) self.site_tag = site_tag self.reactor = reactor assert config.http_options is not None proxied = config.http_options.x_forwarded request_class = XForwardedForRequest if proxied else SynapseRequest def request_factory(channel: HTTPChannel, queued: bool) -> Request: return request_class( channel, self, max_request_body_size=max_request_body_size, queued=queued, ) self.requestFactory = request_factory # type: ignore self.access_logger = logging.getLogger(logger_name) self.server_version_string = server_version_string.encode("ascii") def log(self, request: SynapseRequest) -> None: pass synapse-1.53.0/synapse/logging/000077500000000000000000000000001420514467300164005ustar00rootroot00000000000000synapse-1.53.0/synapse/logging/__init__.py000066400000000000000000000017571420514467300205230ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from synapse.logging._remote import RemoteHandler from synapse.logging._terse_json import JsonFormatter, TerseJsonFormatter # These are imported to allow for nicer logging configuration files. __all__ = ["RemoteHandler", "JsonFormatter", "TerseJsonFormatter"] # Debug logger for https://github.com/matrix-org/synapse/issues/9533 etc issue9533_logger = logging.getLogger("synapse.9533_debug") synapse-1.53.0/synapse/logging/_remote.py000066400000000000000000000203451420514467300204100ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import sys import traceback from collections import deque from ipaddress import IPv4Address, IPv6Address, ip_address from math import floor from typing import Callable, Optional import attr from typing_extensions import Deque from zope.interface import implementer from twisted.application.internet import ClientService from twisted.internet.defer import CancelledError, Deferred from twisted.internet.endpoints import ( HostnameEndpoint, TCP4ClientEndpoint, TCP6ClientEndpoint, ) from twisted.internet.interfaces import IPushProducer, IStreamClientEndpoint from twisted.internet.protocol import Factory, Protocol from twisted.internet.tcp import Connection from twisted.python.failure import Failure logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) @implementer(IPushProducer) class LogProducer: """ An IPushProducer that writes logs from its buffer to its transport when it is resumed. Args: buffer: Log buffer to read logs from. transport: Transport to write to. format: A callable to format the log record to a string. """ # This is essentially ITCPTransport, but that is missing certain fields # (connected and registerProducer) which are part of the implementation. transport: Connection _format: Callable[[logging.LogRecord], str] _buffer: Deque[logging.LogRecord] _paused: bool = attr.ib(default=False, init=False) def pauseProducing(self): self._paused = True def stopProducing(self): self._paused = True self._buffer = deque() def resumeProducing(self): # If we're already producing, nothing to do. self._paused = False # Loop until paused. while self._paused is False and (self._buffer and self.transport.connected): try: # Request the next record and format it. record = self._buffer.popleft() msg = self._format(record) # Send it as a new line over the transport. self.transport.write(msg.encode("utf8")) self.transport.write(b"\n") except Exception: # Something has gone wrong writing to the transport -- log it # and break out of the while. traceback.print_exc(file=sys.__stderr__) break class RemoteHandler(logging.Handler): """ An logging handler that writes logs to a TCP target. Args: host: The host of the logging target. port: The logging target's port. maximum_buffer: The maximum buffer size. """ def __init__( self, host: str, port: int, maximum_buffer: int = 1000, level=logging.NOTSET, _reactor=None, ): super().__init__(level=level) self.host = host self.port = port self.maximum_buffer = maximum_buffer self._buffer: Deque[logging.LogRecord] = deque() self._connection_waiter: Optional[Deferred] = None self._producer: Optional[LogProducer] = None # Connect without DNS lookups if it's a direct IP. if _reactor is None: from twisted.internet import reactor _reactor = reactor try: ip = ip_address(self.host) if isinstance(ip, IPv4Address): endpoint: IStreamClientEndpoint = TCP4ClientEndpoint( _reactor, self.host, self.port ) elif isinstance(ip, IPv6Address): endpoint = TCP6ClientEndpoint(_reactor, self.host, self.port) else: raise ValueError("Unknown IP address provided: %s" % (self.host,)) except ValueError: endpoint = HostnameEndpoint(_reactor, self.host, self.port) factory = Factory.forProtocol(Protocol) self._service = ClientService(endpoint, factory, clock=_reactor) self._service.startService() self._stopping = False self._connect() def close(self): self._stopping = True self._service.stopService() def _connect(self) -> None: """ Triggers an attempt to connect then write to the remote if not already writing. """ # Do not attempt to open multiple connections. if self._connection_waiter: return def fail(failure: Failure) -> None: # If the Deferred was cancelled (e.g. during shutdown) do not try to # reconnect (this will cause an infinite loop of errors). if failure.check(CancelledError) and self._stopping: return # For a different error, print the traceback and re-connect. failure.printTraceback(file=sys.__stderr__) self._connection_waiter = None self._connect() def writer(result: Protocol) -> None: # Force recognising transport as a Connection and not the more # generic ITransport. transport: Connection = result.transport # type: ignore # We have a connection. If we already have a producer, and its # transport is the same, just trigger a resumeProducing. if self._producer and transport is self._producer.transport: self._producer.resumeProducing() self._connection_waiter = None return # If the producer is still producing, stop it. if self._producer: self._producer.stopProducing() # Make a new producer and start it. self._producer = LogProducer( buffer=self._buffer, transport=transport, format=self.format, ) transport.registerProducer(self._producer, True) self._producer.resumeProducing() self._connection_waiter = None deferred: Deferred = self._service.whenConnected(failAfterFailures=1) deferred.addCallbacks(writer, fail) self._connection_waiter = deferred def _handle_pressure(self) -> None: """ Handle backpressure by shedding records. The buffer will, in this order, until the buffer is below the maximum: - Shed DEBUG records. - Shed INFO records. - Shed the middle 50% of the records. """ if len(self._buffer) <= self.maximum_buffer: return # Strip out DEBUGs self._buffer = deque( filter(lambda record: record.levelno > logging.DEBUG, self._buffer) ) if len(self._buffer) <= self.maximum_buffer: return # Strip out INFOs self._buffer = deque( filter(lambda record: record.levelno > logging.INFO, self._buffer) ) if len(self._buffer) <= self.maximum_buffer: return # Cut the middle entries out buffer_split = floor(self.maximum_buffer / 2) old_buffer = self._buffer self._buffer = deque() for _ in range(buffer_split): self._buffer.append(old_buffer.popleft()) end_buffer = [] for _ in range(buffer_split): end_buffer.append(old_buffer.pop()) self._buffer.extend(reversed(end_buffer)) def emit(self, record: logging.LogRecord) -> None: self._buffer.append(record) # Handle backpressure, if it exists. try: self._handle_pressure() except Exception: # If handling backpressure fails, clear the buffer and log the # exception. self._buffer.clear() logger.warning("Failed clearing backpressure") # Try and write immediately. self._connect() synapse-1.53.0/synapse/logging/_structured.py000066400000000000000000000122021420514467300213120ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os.path from typing import Any, Dict, Generator, Optional, Tuple from constantly import NamedConstant, Names from synapse.config._base import ConfigError class DrainType(Names): CONSOLE = NamedConstant() CONSOLE_JSON = NamedConstant() CONSOLE_JSON_TERSE = NamedConstant() FILE = NamedConstant() FILE_JSON = NamedConstant() NETWORK_JSON_TERSE = NamedConstant() DEFAULT_LOGGERS = {"synapse": {"level": "info"}} def parse_drain_configs( drains: dict, ) -> Generator[Tuple[str, Dict[str, Any]], None, None]: """ Parse the drain configurations. Args: drains (dict): A list of drain configurations. Yields: dict instances representing a logging handler. Raises: ConfigError: If any of the drain configuration items are invalid. """ for name, config in drains.items(): if "type" not in config: raise ConfigError("Logging drains require a 'type' key.") try: logging_type = DrainType.lookupByName(config["type"].upper()) except ValueError: raise ConfigError( "%s is not a known logging drain type." % (config["type"],) ) # Either use the default formatter or the tersejson one. if logging_type in ( DrainType.CONSOLE_JSON, DrainType.FILE_JSON, ): formatter: Optional[str] = "json" elif logging_type in ( DrainType.CONSOLE_JSON_TERSE, DrainType.NETWORK_JSON_TERSE, ): formatter = "tersejson" else: # A formatter of None implies using the default formatter. formatter = None if logging_type in [ DrainType.CONSOLE, DrainType.CONSOLE_JSON, DrainType.CONSOLE_JSON_TERSE, ]: location = config.get("location") if location is None or location not in ["stdout", "stderr"]: raise ConfigError( ( "The %s drain needs the 'location' key set to " "either 'stdout' or 'stderr'." ) % (logging_type,) ) yield name, { "class": "logging.StreamHandler", "formatter": formatter, "stream": "ext://sys." + location, } elif logging_type in [DrainType.FILE, DrainType.FILE_JSON]: if "location" not in config: raise ConfigError( "The %s drain needs the 'location' key set." % (logging_type,) ) location = config.get("location") if os.path.abspath(location) != location: raise ConfigError( "File paths need to be absolute, '%s' is a relative path" % (location,) ) yield name, { "class": "logging.FileHandler", "formatter": formatter, "filename": location, } elif logging_type in [DrainType.NETWORK_JSON_TERSE]: host = config.get("host") port = config.get("port") maximum_buffer = config.get("maximum_buffer", 1000) yield name, { "class": "synapse.logging.RemoteHandler", "formatter": formatter, "host": host, "port": port, "maximum_buffer": maximum_buffer, } else: raise ConfigError( "The %s drain type is currently not implemented." % (config["type"].upper(),) ) def setup_structured_logging( log_config: dict, ) -> dict: """ Convert a legacy structured logging configuration (from Synapse < v1.23.0) to one compatible with the new standard library handlers. """ if "drains" not in log_config: raise ConfigError("The logging configuration requires a list of drains.") new_config = { "version": 1, "formatters": { "json": {"class": "synapse.logging.JsonFormatter"}, "tersejson": {"class": "synapse.logging.TerseJsonFormatter"}, }, "handlers": {}, "loggers": log_config.get("loggers", DEFAULT_LOGGERS), "root": {"handlers": []}, } for handler_name, handler in parse_drain_configs(log_config["drains"]): new_config["handlers"][handler_name] = handler # Add each handler to the root logger. new_config["root"]["handlers"].append(handler_name) return new_config synapse-1.53.0/synapse/logging/_terse_json.py000066400000000000000000000046561420514467300212770ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Log formatters that output terse JSON. """ import json import logging _encoder = json.JSONEncoder(ensure_ascii=False, separators=(",", ":")) # The properties of a standard LogRecord that should be ignored when generating # JSON logs. _IGNORED_LOG_RECORD_ATTRIBUTES = { "args", "asctime", "created", "exc_info", # exc_text isn't a public attribute, but is used to cache the result of formatException. "exc_text", "filename", "funcName", "levelname", "levelno", "lineno", "message", "module", "msecs", "msg", "name", "pathname", "process", "processName", "relativeCreated", "stack_info", "thread", "threadName", } class JsonFormatter(logging.Formatter): def format(self, record: logging.LogRecord) -> str: event = { "log": record.getMessage(), "namespace": record.name, "level": record.levelname, } return self._format(record, event) def _format(self, record: logging.LogRecord, event: dict) -> str: # Add attributes specified via the extra keyword to the logged event. for key, value in record.__dict__.items(): if key not in _IGNORED_LOG_RECORD_ATTRIBUTES: event[key] = value if record.exc_info: exc_type, exc_value, _ = record.exc_info if exc_type: event["exc_type"] = f"{exc_type.__name__}" event["exc_value"] = f"{exc_value}" return _encoder.encode(event) class TerseJsonFormatter(JsonFormatter): def format(self, record: logging.LogRecord) -> str: event = { "log": record.getMessage(), "namespace": record.name, "level": record.levelname, "time": round(record.created, 2), } return self._format(record, event) synapse-1.53.0/synapse/logging/context.py000066400000000000000000000774041420514467300204520ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Thread-local-alike tracking of log contexts within synapse This module provides objects and utilities for tracking contexts through synapse code, so that log lines can include a request identifier, and so that CPU and database activity can be accounted for against the request that caused them. See doc/log_contexts.rst for details on how this works. """ import logging import threading import typing import warnings from types import TracebackType from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Optional, Tuple, Type, TypeVar, Union, overload, ) import attr from typing_extensions import Literal from twisted.internet import defer, threads from twisted.python.threadpool import ThreadPool if TYPE_CHECKING: from synapse.logging.scopecontextmanager import _LogContextScope from synapse.types import ISynapseReactor logger = logging.getLogger(__name__) try: import resource # Python doesn't ship with a definition of RUSAGE_THREAD but it's defined # to be 1 on linux so we hard code it. RUSAGE_THREAD = 1 # If the system doesn't support RUSAGE_THREAD then this should throw an # exception. resource.getrusage(RUSAGE_THREAD) is_thread_resource_usage_supported = True def get_thread_resource_usage() -> "Optional[resource.struct_rusage]": return resource.getrusage(RUSAGE_THREAD) except Exception: # If the system doesn't support resource.getrusage(RUSAGE_THREAD) then we # won't track resource usage. is_thread_resource_usage_supported = False def get_thread_resource_usage() -> "Optional[resource.struct_rusage]": return None # a hook which can be set during testing to assert that we aren't abusing logcontexts. def logcontext_error(msg: str) -> None: logger.warning(msg) # get an id for the current thread. # # threading.get_ident doesn't actually return an OS-level tid, and annoyingly, # on Linux it actually returns the same value either side of a fork() call. However # we only fork in one place, so it's not worth the hoop-jumping to get a real tid. # get_thread_id = threading.get_ident class ContextResourceUsage: """Object for tracking the resources used by a log context Attributes: ru_utime (float): user CPU time (in seconds) ru_stime (float): system CPU time (in seconds) db_txn_count (int): number of database transactions done db_sched_duration_sec (float): amount of time spent waiting for a database connection db_txn_duration_sec (float): amount of time spent doing database transactions (excluding scheduling time) evt_db_fetch_count (int): number of events requested from the database """ __slots__ = [ "ru_stime", "ru_utime", "db_txn_count", "db_txn_duration_sec", "db_sched_duration_sec", "evt_db_fetch_count", ] def __init__(self, copy_from: "Optional[ContextResourceUsage]" = None) -> None: """Create a new ContextResourceUsage Args: copy_from (ContextResourceUsage|None): if not None, an object to copy stats from """ if copy_from is None: self.reset() else: # FIXME: mypy can't infer the types set via reset() above, so specify explicitly for now self.ru_utime: float = copy_from.ru_utime self.ru_stime: float = copy_from.ru_stime self.db_txn_count: int = copy_from.db_txn_count self.db_txn_duration_sec: float = copy_from.db_txn_duration_sec self.db_sched_duration_sec: float = copy_from.db_sched_duration_sec self.evt_db_fetch_count: int = copy_from.evt_db_fetch_count def copy(self) -> "ContextResourceUsage": return ContextResourceUsage(copy_from=self) def reset(self) -> None: self.ru_stime = 0.0 self.ru_utime = 0.0 self.db_txn_count = 0 self.db_txn_duration_sec = 0.0 self.db_sched_duration_sec = 0.0 self.evt_db_fetch_count = 0 def __repr__(self) -> str: return ( "" ) % ( self.ru_stime, self.ru_utime, self.db_txn_count, self.db_txn_duration_sec, self.db_sched_duration_sec, self.evt_db_fetch_count, ) def __iadd__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": """Add another ContextResourceUsage's stats to this one's. Args: other (ContextResourceUsage): the other resource usage object """ self.ru_utime += other.ru_utime self.ru_stime += other.ru_stime self.db_txn_count += other.db_txn_count self.db_txn_duration_sec += other.db_txn_duration_sec self.db_sched_duration_sec += other.db_sched_duration_sec self.evt_db_fetch_count += other.evt_db_fetch_count return self def __isub__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": self.ru_utime -= other.ru_utime self.ru_stime -= other.ru_stime self.db_txn_count -= other.db_txn_count self.db_txn_duration_sec -= other.db_txn_duration_sec self.db_sched_duration_sec -= other.db_sched_duration_sec self.evt_db_fetch_count -= other.evt_db_fetch_count return self def __add__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": res = ContextResourceUsage(copy_from=self) res += other return res def __sub__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": res = ContextResourceUsage(copy_from=self) res -= other return res @attr.s(slots=True, auto_attribs=True) class ContextRequest: """ A bundle of attributes from the SynapseRequest object. This exists to: * Avoid a cycle between LoggingContext and SynapseRequest. * Be a single variable that can be passed from parent LoggingContexts to their children. """ request_id: str ip_address: str site_tag: str requester: Optional[str] authenticated_entity: Optional[str] method: str url: str protocol: str user_agent: str LoggingContextOrSentinel = Union["LoggingContext", "_Sentinel"] class _Sentinel: """Sentinel to represent the root context""" __slots__ = ["previous_context", "finished", "request", "scope", "tag"] def __init__(self) -> None: # Minimal set for compatibility with LoggingContext self.previous_context = None self.finished = False self.request = None self.scope = None self.tag = None def __str__(self) -> str: return "sentinel" def start(self, rusage: "Optional[resource.struct_rusage]") -> None: pass def stop(self, rusage: "Optional[resource.struct_rusage]") -> None: pass def add_database_transaction(self, duration_sec: float) -> None: pass def add_database_scheduled(self, sched_sec: float) -> None: pass def record_event_fetch(self, event_count: int) -> None: pass def __bool__(self) -> Literal[False]: return False SENTINEL_CONTEXT = _Sentinel() class LoggingContext: """Additional context for log formatting. Contexts are scoped within a "with" block. If a parent is given when creating a new context, then: - logging fields are copied from the parent to the new context on entry - when the new context exits, the cpu usage stats are copied from the child to the parent Args: name: Name for the context for logging. If this is omitted, it is inherited from the parent context. parent_context (LoggingContext|None): The parent of the new context """ __slots__ = [ "previous_context", "name", "parent_context", "_resource_usage", "usage_start", "main_thread", "finished", "request", "tag", "scope", ] def __init__( self, name: Optional[str] = None, parent_context: "Optional[LoggingContext]" = None, request: Optional[ContextRequest] = None, ) -> None: self.previous_context = current_context() # track the resources used by this context so far self._resource_usage = ContextResourceUsage() # The thread resource usage when the logcontext became active. None # if the context is not currently active. self.usage_start: Optional[resource.struct_rusage] = None self.main_thread = get_thread_id() self.request = None self.tag = "" self.scope: Optional["_LogContextScope"] = None # keep track of whether we have hit the __exit__ block for this context # (suggesting that the the thing that created the context thinks it should # be finished, and that re-activating it would suggest an error). self.finished = False self.parent_context = parent_context if self.parent_context is not None: # we track the current request_id self.request = self.parent_context.request # we also track the current scope: self.scope = self.parent_context.scope if request is not None: # the request param overrides the request from the parent context self.request = request # if we don't have a `name`, but do have a parent context, use its name. if self.parent_context and name is None: name = str(self.parent_context) if name is None: raise ValueError( "LoggingContext must be given either a name or a parent context" ) self.name = name def __str__(self) -> str: return self.name @classmethod def current_context(cls) -> LoggingContextOrSentinel: """Get the current logging context from thread local storage This exists for backwards compatibility. ``current_context()`` should be called directly. Returns: LoggingContext: the current logging context """ warnings.warn( "synapse.logging.context.LoggingContext.current_context() is deprecated " "in favor of synapse.logging.context.current_context().", DeprecationWarning, stacklevel=2, ) return current_context() @classmethod def set_current_context( cls, context: LoggingContextOrSentinel ) -> LoggingContextOrSentinel: """Set the current logging context in thread local storage This exists for backwards compatibility. ``set_current_context()`` should be called directly. Args: context(LoggingContext): The context to activate. Returns: The context that was previously active """ warnings.warn( "synapse.logging.context.LoggingContext.set_current_context() is deprecated " "in favor of synapse.logging.context.set_current_context().", DeprecationWarning, stacklevel=2, ) return set_current_context(context) def __enter__(self) -> "LoggingContext": """Enters this logging context into thread local storage""" old_context = set_current_context(self) if self.previous_context != old_context: logcontext_error( "Expected previous context %r, found %r" % ( self.previous_context, old_context, ) ) return self def __exit__( self, type: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> None: """Restore the logging context in thread local storage to the state it was before this context was entered. Returns: None to avoid suppressing any exceptions that were thrown. """ current = set_current_context(self.previous_context) if current is not self: if current is SENTINEL_CONTEXT: logcontext_error("Expected logging context %s was lost" % (self,)) else: logcontext_error( "Expected logging context %s but found %s" % (self, current) ) # the fact that we are here suggests that the caller thinks that everything # is done and dusted for this logcontext, and further activity will not get # recorded against the correct metrics. self.finished = True def start(self, rusage: "Optional[resource.struct_rusage]") -> None: """ Record that this logcontext is currently running. This should not be called directly: use set_current_context Args: rusage: the resources used by the current thread, at the point of switching to this logcontext. May be None if this platform doesn't support getrusuage. """ if get_thread_id() != self.main_thread: logcontext_error("Started logcontext %s on different thread" % (self,)) return if self.finished: logcontext_error("Re-starting finished log context %s" % (self,)) # If we haven't already started record the thread resource usage so # far if self.usage_start: logcontext_error("Re-starting already-active log context %s" % (self,)) else: self.usage_start = rusage def stop(self, rusage: "Optional[resource.struct_rusage]") -> None: """ Record that this logcontext is no longer running. This should not be called directly: use set_current_context Args: rusage: the resources used by the current thread, at the point of switching away from this logcontext. May be None if this platform doesn't support getrusuage. """ try: if get_thread_id() != self.main_thread: logcontext_error("Stopped logcontext %s on different thread" % (self,)) return if not rusage: return # Record the cpu used since we started if not self.usage_start: logcontext_error( "Called stop on logcontext %s without recording a start rusage" % (self,) ) return utime_delta, stime_delta = self._get_cputime(rusage) self.add_cputime(utime_delta, stime_delta) finally: self.usage_start = None def get_resource_usage(self) -> ContextResourceUsage: """Get resources used by this logcontext so far. Returns: ContextResourceUsage: a *copy* of the object tracking resource usage so far """ # we always return a copy, for consistency res = self._resource_usage.copy() # If we are on the correct thread and we're currently running then we # can include resource usage so far. is_main_thread = get_thread_id() == self.main_thread if self.usage_start and is_main_thread: rusage = get_thread_resource_usage() assert rusage is not None utime_delta, stime_delta = self._get_cputime(rusage) res.ru_utime += utime_delta res.ru_stime += stime_delta return res def _get_cputime(self, current: "resource.struct_rusage") -> Tuple[float, float]: """Get the cpu usage time between start() and the given rusage Args: rusage: the current resource usage Returns: Tuple[float, float]: seconds in user mode, seconds in system mode """ assert self.usage_start is not None utime_delta = current.ru_utime - self.usage_start.ru_utime stime_delta = current.ru_stime - self.usage_start.ru_stime # sanity check if utime_delta < 0: logger.error( "utime went backwards! %f < %f", current.ru_utime, self.usage_start.ru_utime, ) utime_delta = 0 if stime_delta < 0: logger.error( "stime went backwards! %f < %f", current.ru_stime, self.usage_start.ru_stime, ) stime_delta = 0 return utime_delta, stime_delta def add_cputime(self, utime_delta: float, stime_delta: float) -> None: """Update the CPU time usage of this context (and any parents, recursively). Args: utime_delta: additional user time, in seconds, spent in this context. stime_delta: additional system time, in seconds, spent in this context. """ self._resource_usage.ru_utime += utime_delta self._resource_usage.ru_stime += stime_delta if self.parent_context: self.parent_context.add_cputime(utime_delta, stime_delta) def add_database_transaction(self, duration_sec: float) -> None: """Record the use of a database transaction and the length of time it took. Args: duration_sec: The number of seconds the database transaction took. """ if duration_sec < 0: raise ValueError("DB txn time can only be non-negative") self._resource_usage.db_txn_count += 1 self._resource_usage.db_txn_duration_sec += duration_sec if self.parent_context: self.parent_context.add_database_transaction(duration_sec) def add_database_scheduled(self, sched_sec: float) -> None: """Record a use of the database pool Args: sched_sec: number of seconds it took us to get a connection """ if sched_sec < 0: raise ValueError("DB scheduling time can only be non-negative") self._resource_usage.db_sched_duration_sec += sched_sec if self.parent_context: self.parent_context.add_database_scheduled(sched_sec) def record_event_fetch(self, event_count: int) -> None: """Record a number of events being fetched from the db Args: event_count: number of events being fetched """ self._resource_usage.evt_db_fetch_count += event_count if self.parent_context: self.parent_context.record_event_fetch(event_count) class LoggingContextFilter(logging.Filter): """Logging filter that adds values from the current logging context to each record. """ def __init__(self, request: str = ""): self._default_request = request def filter(self, record: logging.LogRecord) -> Literal[True]: """Add each fields from the logging contexts to the record. Returns: True to include the record in the log output. """ context = current_context() record.request = self._default_request # type: ignore # context should never be None, but if it somehow ends up being, then # we end up in a death spiral of infinite loops, so let's check, for # robustness' sake. if context is not None: # Logging is interested in the request ID. Note that for backwards # compatibility this is stored as the "request" on the record. record.request = str(context) # type: ignore # Add some data from the HTTP request. request = context.request if request is None: return True record.ip_address = request.ip_address # type: ignore record.site_tag = request.site_tag # type: ignore record.requester = request.requester # type: ignore record.authenticated_entity = request.authenticated_entity # type: ignore record.method = request.method # type: ignore record.url = request.url # type: ignore record.protocol = request.protocol # type: ignore record.user_agent = request.user_agent # type: ignore return True class PreserveLoggingContext: """Context manager which replaces the logging context The previous logging context is restored on exit.""" __slots__ = ["_old_context", "_new_context"] def __init__( self, new_context: LoggingContextOrSentinel = SENTINEL_CONTEXT ) -> None: self._new_context = new_context def __enter__(self) -> None: self._old_context = set_current_context(self._new_context) def __exit__( self, type: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> None: context = set_current_context(self._old_context) if context != self._new_context: if not context: logcontext_error( "Expected logging context %s was lost" % (self._new_context,) ) else: logcontext_error( "Expected logging context %s but found %s" % ( self._new_context, context, ) ) _thread_local = threading.local() _thread_local.current_context = SENTINEL_CONTEXT def current_context() -> LoggingContextOrSentinel: """Get the current logging context from thread local storage""" return getattr(_thread_local, "current_context", SENTINEL_CONTEXT) def set_current_context(context: LoggingContextOrSentinel) -> LoggingContextOrSentinel: """Set the current logging context in thread local storage Args: context(LoggingContext): The context to activate. Returns: The context that was previously active """ # everything blows up if we allow current_context to be set to None, so sanity-check # that now. if context is None: raise TypeError("'context' argument may not be None") current = current_context() if current is not context: rusage = get_thread_resource_usage() current.stop(rusage) _thread_local.current_context = context context.start(rusage) return current def nested_logging_context(suffix: str) -> LoggingContext: """Creates a new logging context as a child of another. The nested logging context will have a 'name' made up of the parent context's name, plus the given suffix. CPU/db usage stats will be added to the parent context's on exit. Normal usage looks like: with nested_logging_context(suffix): # ... do stuff Args: suffix: suffix to add to the parent context's 'name'. Returns: LoggingContext: new logging context. """ curr_context = current_context() if not curr_context: logger.warning( "Starting nested logging context from sentinel context: metrics will be lost" ) parent_context = None else: assert isinstance(curr_context, LoggingContext) parent_context = curr_context prefix = str(curr_context) return LoggingContext( prefix + "-" + suffix, parent_context=parent_context, ) R = TypeVar("R") @overload def preserve_fn( # type: ignore[misc] f: Callable[..., Awaitable[R]], ) -> Callable[..., "defer.Deferred[R]"]: # The `type: ignore[misc]` above suppresses # "Overloaded function signatures 1 and 2 overlap with incompatible return types" ... @overload def preserve_fn(f: Callable[..., R]) -> Callable[..., "defer.Deferred[R]"]: ... def preserve_fn( f: Union[ Callable[..., R], Callable[..., Awaitable[R]], ] ) -> Callable[..., "defer.Deferred[R]"]: """Function decorator which wraps the function with run_in_background""" def g(*args: Any, **kwargs: Any) -> "defer.Deferred[R]": return run_in_background(f, *args, **kwargs) return g @overload def run_in_background( # type: ignore[misc] f: Callable[..., Awaitable[R]], *args: Any, **kwargs: Any ) -> "defer.Deferred[R]": # The `type: ignore[misc]` above suppresses # "Overloaded function signatures 1 and 2 overlap with incompatible return types" ... @overload def run_in_background( f: Callable[..., R], *args: Any, **kwargs: Any ) -> "defer.Deferred[R]": ... def run_in_background( f: Union[ Callable[..., R], Callable[..., Awaitable[R]], ], *args: Any, **kwargs: Any, ) -> "defer.Deferred[R]": """Calls a function, ensuring that the current context is restored after return from the function, and that the sentinel context is set once the deferred returned by the function completes. Useful for wrapping functions that return a deferred or coroutine, which you don't yield or await on (for instance because you want to pass it to deferred.gatherResults()). If f returns a Coroutine object, it will be wrapped into a Deferred (which will have the side effect of executing the coroutine). Note that if you completely discard the result, you should make sure that `f` doesn't raise any deferred exceptions, otherwise a scary-looking CRITICAL error about an unhandled error will be logged without much indication about where it came from. """ current = current_context() try: res = f(*args, **kwargs) except Exception: # the assumption here is that the caller doesn't want to be disturbed # by synchronous exceptions, so let's turn them into Failures. return defer.fail() if isinstance(res, typing.Coroutine): res = defer.ensureDeferred(res) # At this point we should have a Deferred, if not then f was a synchronous # function, wrap it in a Deferred for consistency. if not isinstance(res, defer.Deferred): # `res` is not a `Deferred` and not a `Coroutine`. # There are no other types of `Awaitable`s we expect to encounter in Synapse. assert not isinstance(res, Awaitable) return defer.succeed(res) if res.called and not res.paused: # The function should have maintained the logcontext, so we can # optimise out the messing about return res # The function may have reset the context before returning, so # we need to restore it now. ctx = set_current_context(current) # The original context will be restored when the deferred # completes, but there is nothing waiting for it, so it will # get leaked into the reactor or some other function which # wasn't expecting it. We therefore need to reset the context # here. # # (If this feels asymmetric, consider it this way: we are # effectively forking a new thread of execution. We are # probably currently within a ``with LoggingContext()`` block, # which is supposed to have a single entry and exit point. But # by spawning off another deferred, we are effectively # adding a new exit point.) res.addBoth(_set_context_cb, ctx) return res T = TypeVar("T") def make_deferred_yieldable(deferred: "defer.Deferred[T]") -> "defer.Deferred[T]": """Given a deferred, make it follow the Synapse logcontext rules: If the deferred has completed, essentially does nothing (just returns another completed deferred with the result/failure). If the deferred has not yet completed, resets the logcontext before returning a deferred. Then, when the deferred completes, restores the current logcontext before running callbacks/errbacks. (This is more-or-less the opposite operation to run_in_background.) """ if deferred.called and not deferred.paused: # it looks like this deferred is ready to run any callbacks we give it # immediately. We may as well optimise out the logcontext faffery. return deferred # ok, we can't be sure that a yield won't block, so let's reset the # logcontext, and add a callback to the deferred to restore it. prev_context = set_current_context(SENTINEL_CONTEXT) deferred.addBoth(_set_context_cb, prev_context) return deferred ResultT = TypeVar("ResultT") def _set_context_cb(result: ResultT, context: LoggingContext) -> ResultT: """A callback function which just sets the logging context""" set_current_context(context) return result def defer_to_thread( reactor: "ISynapseReactor", f: Callable[..., R], *args: Any, **kwargs: Any ) -> "defer.Deferred[R]": """ Calls the function `f` using a thread from the reactor's default threadpool and returns the result as a Deferred. Creates a new logcontext for `f`, which is created as a child of the current logcontext (so its CPU usage metrics will get attributed to the current logcontext). `f` should preserve the logcontext it is given. The result deferred follows the Synapse logcontext rules: you should `yield` on it. Args: reactor (twisted.internet.base.ReactorBase): The reactor in whose main thread the Deferred will be invoked, and whose threadpool we should use for the function. Normally this will be hs.get_reactor(). f (callable): The function to call. args: positional arguments to pass to f. kwargs: keyword arguments to pass to f. Returns: Deferred: A Deferred which fires a callback with the result of `f`, or an errback if `f` throws an exception. """ return defer_to_threadpool(reactor, reactor.getThreadPool(), f, *args, **kwargs) def defer_to_threadpool( reactor: "ISynapseReactor", threadpool: ThreadPool, f: Callable[..., R], *args: Any, **kwargs: Any, ) -> "defer.Deferred[R]": """ A wrapper for twisted.internet.threads.deferToThreadpool, which handles logcontexts correctly. Calls the function `f` using a thread from the given threadpool and returns the result as a Deferred. Creates a new logcontext for `f`, which is created as a child of the current logcontext (so its CPU usage metrics will get attributed to the current logcontext). `f` should preserve the logcontext it is given. The result deferred follows the Synapse logcontext rules: you should `yield` on it. Args: reactor (twisted.internet.base.ReactorBase): The reactor in whose main thread the Deferred will be invoked. Normally this will be hs.get_reactor(). threadpool (twisted.python.threadpool.ThreadPool): The threadpool to use for running `f`. Normally this will be hs.get_reactor().getThreadPool(). f (callable): The function to call. args: positional arguments to pass to f. kwargs: keyword arguments to pass to f. Returns: Deferred: A Deferred which fires a callback with the result of `f`, or an errback if `f` throws an exception. """ curr_context = current_context() if not curr_context: logger.warning( "Calling defer_to_threadpool from sentinel context: metrics will be lost" ) parent_context = None else: assert isinstance(curr_context, LoggingContext) parent_context = curr_context def g() -> R: with LoggingContext(str(curr_context), parent_context=parent_context): return f(*args, **kwargs) return make_deferred_yieldable(threads.deferToThreadPool(reactor, threadpool, g)) synapse-1.53.0/synapse/logging/filter.py000066400000000000000000000020721420514467300202400ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing_extensions import Literal class MetadataFilter(logging.Filter): """Logging filter that adds constant values to each record. Args: metadata: Key-value pairs to add to each record. """ def __init__(self, metadata: dict): self._metadata = metadata def filter(self, record: logging.LogRecord) -> Literal[True]: for key, value in self._metadata.items(): setattr(record, key, value) return True synapse-1.53.0/synapse/logging/formatter.py000066400000000000000000000034301420514467300207550ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import traceback from io import StringIO class LogFormatter(logging.Formatter): """Log formatter which gives more detail for exceptions This is the same as the standard log formatter, except that when logging exceptions [typically via log.foo("msg", exc_info=1)], it prints the sequence that led up to the point at which the exception was caught. (Normally only stack frames between the point the exception was raised and where it was caught are logged). """ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def formatException(self, ei): sio = StringIO() (typ, val, tb) = ei # log the stack above the exception capture point if possible, but # check that we actually have an f_back attribute to work around # https://twistedmatrix.com/trac/ticket/9305 if tb and hasattr(tb.tb_frame, "f_back"): sio.write("Capture point (most recent call last):\n") traceback.print_stack(tb.tb_frame.f_back, None, sio) traceback.print_exception(typ, val, tb, None, sio) s = sio.getvalue() sio.close() if s[-1:] == "\n": s = s[:-1] return s synapse-1.53.0/synapse/logging/handlers.py000066400000000000000000000053031420514467300205530ustar00rootroot00000000000000import logging import time from logging import Handler, LogRecord from logging.handlers import MemoryHandler from threading import Thread from typing import Optional, cast from twisted.internet.interfaces import IReactorCore class PeriodicallyFlushingMemoryHandler(MemoryHandler): """ This is a subclass of MemoryHandler that additionally spawns a background thread to periodically flush the buffer. This prevents messages from being buffered for too long. Additionally, all messages will be immediately flushed if the reactor has not yet been started. """ def __init__( self, capacity: int, flushLevel: int = logging.ERROR, target: Optional[Handler] = None, flushOnClose: bool = True, period: float = 5.0, reactor: Optional[IReactorCore] = None, ) -> None: """ period: the period between automatic flushes reactor: if specified, a custom reactor to use. If not specifies, defaults to the globally-installed reactor. Log entries will be flushed immediately until this reactor has started. """ super().__init__(capacity, flushLevel, target, flushOnClose) self._flush_period: float = period self._active: bool = True self._reactor_started = False self._flushing_thread: Thread = Thread( name="PeriodicallyFlushingMemoryHandler flushing thread", target=self._flush_periodically, daemon=True, ) self._flushing_thread.start() def on_reactor_running(): self._reactor_started = True reactor_to_use: IReactorCore if reactor is None: from twisted.internet import reactor as global_reactor reactor_to_use = cast(IReactorCore, global_reactor) else: reactor_to_use = reactor # call our hook when the reactor start up reactor_to_use.callWhenRunning(on_reactor_running) def shouldFlush(self, record: LogRecord) -> bool: """ Before reactor start-up, log everything immediately. Otherwise, fall back to original behaviour of waiting for the buffer to fill. """ if self._reactor_started: return super().shouldFlush(record) else: return True def _flush_periodically(self): """ Whilst this handler is active, flush the handler periodically. """ while self._active: # flush is thread-safe; it acquires and releases the lock internally self.flush() time.sleep(self._flush_period) def close(self) -> None: self._active = False super().close() synapse-1.53.0/synapse/logging/opentracing.py000066400000000000000000000710511420514467300212670ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # NOTE # This is a small wrapper around opentracing because opentracing is not currently # packaged downstream (specifically debian). Since opentracing instrumentation is # fairly invasive it was awkward to make it optional. As a result we opted to encapsulate # all opentracing state in these methods which effectively noop if opentracing is # not present. We should strongly consider encouraging the downstream distributers # to package opentracing and making opentracing a full dependency. In order to facilitate # this move the methods have work very similarly to opentracing's and it should only # be a matter of few regexes to move over to opentracing's access patterns proper. """ ============================ Using OpenTracing in Synapse ============================ Python-specific tracing concepts are at https://opentracing.io/guides/python/. Note that Synapse wraps OpenTracing in a small module (this one) in order to make the OpenTracing dependency optional. That means that the access patterns are different to those demonstrated in the OpenTracing guides. However, it is still useful to know, especially if OpenTracing is included as a full dependency in the future or if you are modifying this module. OpenTracing is encapsulated so that no span objects from OpenTracing are exposed in Synapse's code. This allows OpenTracing to be easily disabled in Synapse and thereby have OpenTracing as an optional dependency. This does however limit the number of modifiable spans at any point in the code to one. From here out references to `opentracing` in the code snippets refer to the Synapses module. Most methods provided in the module have a direct correlation to those provided by opentracing. Refer to docs there for a more in-depth documentation on some of the args and methods. Tracing ------- In Synapse it is not possible to start a non-active span. Spans can be started using the ``start_active_span`` method. This returns a scope (see OpenTracing docs) which is a context manager that needs to be entered and exited. This is usually done by using ``with``. .. code-block:: python from synapse.logging.opentracing import start_active_span with start_active_span("operation name"): # Do something we want to tracer Forgetting to enter or exit a scope will result in some mysterious and grievous log context errors. At anytime where there is an active span ``opentracing.set_tag`` can be used to set a tag on the current active span. Tracing functions ----------------- Functions can be easily traced using decorators. The name of the function becomes the operation name for the span. .. code-block:: python from synapse.logging.opentracing import trace # Start a span using 'interesting_function' as the operation name @trace def interesting_function(*args, **kwargs): # Does all kinds of cool and expected things return something_usual_and_useful Operation names can be explicitly set for a function by passing the operation name to ``trace`` .. code-block:: python from synapse.logging.opentracing import trace @trace(opname="a_better_operation_name") def interesting_badly_named_function(*args, **kwargs): # Does all kinds of cool and expected things return something_usual_and_useful Setting Tags ------------ To set a tag on the active span do .. code-block:: python from synapse.logging.opentracing import set_tag set_tag(tag_name, tag_value) There's a convenient decorator to tag all the args of the method. It uses inspection in order to use the formal parameter names prefixed with 'ARG_' as tag names. It uses kwarg names as tag names without the prefix. .. code-block:: python from synapse.logging.opentracing import tag_args @tag_args def set_fates(clotho, lachesis, atropos, father="Zues", mother="Themis"): pass set_fates("the story", "the end", "the act") # This will have the following tags # - ARG_clotho: "the story" # - ARG_lachesis: "the end" # - ARG_atropos: "the act" # - father: "Zues" # - mother: "Themis" Contexts and carriers --------------------- There are a selection of wrappers for injecting and extracting contexts from carriers provided. Unfortunately OpenTracing's three context injection techniques are not adequate for our inject of OpenTracing span-contexts into Twisted's http headers, EDU contents and our database tables. Also note that the binary encoding format mandated by OpenTracing is not actually implemented by jaeger_client v4.0.0 - it will silently noop. Please refer to the end of ``logging/opentracing.py`` for the available injection and extraction methods. Homeserver whitelisting ----------------------- Most of the whitelist checks are encapsulated in the modules's injection and extraction method but be aware that using custom carriers or crossing unchartered waters will require the enforcement of the whitelist. ``logging/opentracing.py`` has a ``whitelisted_homeserver`` method which takes in a destination and compares it to the whitelist. Most injection methods take a 'destination' arg. The context will only be injected if the destination matches the whitelist or the destination is None. ======= Gotchas ======= - Checking whitelists on span propagation - Inserting pii - Forgetting to enter or exit a scope - Span source: make sure that the span you expect to be active across a function call really will be that one. Does the current function have more than one caller? Will all of those calling functions have be in a context with an active span? """ import contextlib import inspect import logging import re from functools import wraps from typing import TYPE_CHECKING, Collection, Dict, List, Optional, Pattern, Type import attr from twisted.internet import defer from twisted.web.http import Request from twisted.web.http_headers import Headers from synapse.config import ConfigError from synapse.util import json_decoder, json_encoder if TYPE_CHECKING: from synapse.http.site import SynapseRequest from synapse.server import HomeServer # Helper class class _DummyTagNames: """wrapper of opentracings tags. We need to have them if we want to reference them without opentracing around. Clearly they should never actually show up in a trace. `set_tags` overwrites these with the correct ones.""" INVALID_TAG = "invalid-tag" COMPONENT = INVALID_TAG DATABASE_INSTANCE = INVALID_TAG DATABASE_STATEMENT = INVALID_TAG DATABASE_TYPE = INVALID_TAG DATABASE_USER = INVALID_TAG ERROR = INVALID_TAG HTTP_METHOD = INVALID_TAG HTTP_STATUS_CODE = INVALID_TAG HTTP_URL = INVALID_TAG MESSAGE_BUS_DESTINATION = INVALID_TAG PEER_ADDRESS = INVALID_TAG PEER_HOSTNAME = INVALID_TAG PEER_HOST_IPV4 = INVALID_TAG PEER_HOST_IPV6 = INVALID_TAG PEER_PORT = INVALID_TAG PEER_SERVICE = INVALID_TAG SAMPLING_PRIORITY = INVALID_TAG SERVICE = INVALID_TAG SPAN_KIND = INVALID_TAG SPAN_KIND_CONSUMER = INVALID_TAG SPAN_KIND_PRODUCER = INVALID_TAG SPAN_KIND_RPC_CLIENT = INVALID_TAG SPAN_KIND_RPC_SERVER = INVALID_TAG try: import opentracing import opentracing.tags tags = opentracing.tags except ImportError: opentracing = None # type: ignore[assignment] tags = _DummyTagNames # type: ignore[assignment] try: from jaeger_client import Config as JaegerConfig from synapse.logging.scopecontextmanager import LogContextScopeManager except ImportError: JaegerConfig = None # type: ignore LogContextScopeManager = None # type: ignore try: from rust_python_jaeger_reporter import Reporter # jaeger-client 4.7.0 requires that reporters inherit from BaseReporter, which # didn't exist before that version. try: from jaeger_client.reporter import BaseReporter except ImportError: class BaseReporter: # type: ignore[no-redef] pass @attr.s(slots=True, frozen=True, auto_attribs=True) class _WrappedRustReporter(BaseReporter): """Wrap the reporter to ensure `report_span` never throws.""" _reporter: Reporter = attr.Factory(Reporter) def set_process(self, *args, **kwargs): return self._reporter.set_process(*args, **kwargs) def report_span(self, span): try: return self._reporter.report_span(span) except Exception: logger.exception("Failed to report span") RustReporter: Optional[Type[_WrappedRustReporter]] = _WrappedRustReporter except ImportError: RustReporter = None logger = logging.getLogger(__name__) class SynapseTags: # The message ID of any to_device message processed TO_DEVICE_MESSAGE_ID = "to_device.message_id" # Whether the sync response has new data to be returned to the client. SYNC_RESULT = "sync.new_data" # incoming HTTP request ID (as written in the logs) REQUEST_ID = "request_id" # HTTP request tag (used to distinguish full vs incremental syncs, etc) REQUEST_TAG = "request_tag" # Text description of a database transaction DB_TXN_DESC = "db.txn_desc" # Uniqueish ID of a database transaction DB_TXN_ID = "db.txn_id" class SynapseBaggage: FORCE_TRACING = "synapse-force-tracing" # Block everything by default # A regex which matches the server_names to expose traces for. # None means 'block everything'. _homeserver_whitelist: Optional[Pattern[str]] = None # Util methods Sentinel = object() def only_if_tracing(func): """Executes the function only if we're tracing. Otherwise returns None.""" @wraps(func) def _only_if_tracing_inner(*args, **kwargs): if opentracing: return func(*args, **kwargs) else: return return _only_if_tracing_inner def ensure_active_span(message, ret=None): """Executes the operation only if opentracing is enabled and there is an active span. If there is no active span it logs message at the error level. Args: message (str): Message which fills in "There was no active span when trying to %s" in the error log if there is no active span and opentracing is enabled. ret (object): return value if opentracing is None or there is no active span. Returns (object): The result of the func or ret if opentracing is disabled or there was no active span. """ def ensure_active_span_inner_1(func): @wraps(func) def ensure_active_span_inner_2(*args, **kwargs): if not opentracing: return ret if not opentracing.tracer.active_span: logger.error( "There was no active span when trying to %s." " Did you forget to start one or did a context slip?", message, stack_info=True, ) return ret return func(*args, **kwargs) return ensure_active_span_inner_2 return ensure_active_span_inner_1 @contextlib.contextmanager def noop_context_manager(*args, **kwargs): """Does exactly what it says on the tin""" # TODO: replace with contextlib.nullcontext once we drop support for Python 3.6 yield # Setup def init_tracer(hs: "HomeServer"): """Set the whitelists and initialise the JaegerClient tracer""" global opentracing if not hs.config.tracing.opentracer_enabled: # We don't have a tracer opentracing = None # type: ignore[assignment] return if not opentracing or not JaegerConfig: raise ConfigError( "The server has been configured to use opentracing but opentracing is not " "installed." ) # Pull out the jaeger config if it was given. Otherwise set it to something sensible. # See https://github.com/jaegertracing/jaeger-client-python/blob/master/jaeger_client/config.py set_homeserver_whitelist(hs.config.tracing.opentracer_whitelist) from jaeger_client.metrics.prometheus import PrometheusMetricsFactory config = JaegerConfig( config=hs.config.tracing.jaeger_config, service_name=f"{hs.config.server.server_name} {hs.get_instance_name()}", scope_manager=LogContextScopeManager(hs.config), metrics_factory=PrometheusMetricsFactory(), ) # If we have the rust jaeger reporter available let's use that. if RustReporter: logger.info("Using rust_python_jaeger_reporter library") assert config.sampler is not None tracer = config.create_tracer(RustReporter(), config.sampler) opentracing.set_global_tracer(tracer) else: config.initialize_tracer() # Whitelisting @only_if_tracing def set_homeserver_whitelist(homeserver_whitelist): """Sets the homeserver whitelist Args: homeserver_whitelist (Iterable[str]): regex of whitelisted homeservers """ global _homeserver_whitelist if homeserver_whitelist: # Makes a single regex which accepts all passed in regexes in the list _homeserver_whitelist = re.compile( "({})".format(")|(".join(homeserver_whitelist)) ) @only_if_tracing def whitelisted_homeserver(destination): """Checks if a destination matches the whitelist Args: destination (str) """ if _homeserver_whitelist: return _homeserver_whitelist.match(destination) return False # Start spans and scopes # Could use kwargs but I want these to be explicit def start_active_span( operation_name, child_of=None, references=None, tags=None, start_time=None, ignore_active_span=False, finish_on_close=True, *, tracer=None, ): """Starts an active opentracing span. Records the start time for the span, and sets it as the "active span" in the scope manager. Args: See opentracing.tracer Returns: scope (Scope) or noop_context_manager """ if opentracing is None: return noop_context_manager() # type: ignore[unreachable] if tracer is None: # use the global tracer by default tracer = opentracing.tracer return tracer.start_active_span( operation_name, child_of=child_of, references=references, tags=tags, start_time=start_time, ignore_active_span=ignore_active_span, finish_on_close=finish_on_close, ) def start_active_span_follows_from( operation_name: str, contexts: Collection, child_of=None, start_time: Optional[float] = None, *, inherit_force_tracing=False, tracer=None, ): """Starts an active opentracing span, with additional references to previous spans Args: operation_name: name of the operation represented by the new span contexts: the previous spans to inherit from child_of: optionally override the parent span. If unset, the currently active span will be the parent. (If there is no currently active span, the first span in `contexts` will be the parent.) start_time: optional override for the start time of the created span. Seconds since the epoch. inherit_force_tracing: if set, and any of the previous contexts have had tracing forced, the new span will also have tracing forced. tracer: override the opentracing tracer. By default the global tracer is used. """ if opentracing is None: return noop_context_manager() # type: ignore[unreachable] references = [opentracing.follows_from(context) for context in contexts] scope = start_active_span( operation_name, child_of=child_of, references=references, start_time=start_time, tracer=tracer, ) if inherit_force_tracing and any( is_context_forced_tracing(ctx) for ctx in contexts ): force_tracing(scope.span) return scope def start_active_span_from_edu( edu_content, operation_name, references: Optional[list] = None, tags=None, start_time=None, ignore_active_span=False, finish_on_close=True, ): """ Extracts a span context from an edu and uses it to start a new active span Args: edu_content (dict): and edu_content with a `context` field whose value is canonical json for a dict which contains opentracing information. For the other args see opentracing.tracer """ references = references or [] if opentracing is None: return noop_context_manager() # type: ignore[unreachable] carrier = json_decoder.decode(edu_content.get("context", "{}")).get( "opentracing", {} ) context = opentracing.tracer.extract(opentracing.Format.TEXT_MAP, carrier) _references = [ opentracing.child_of(span_context_from_string(x)) for x in carrier.get("references", []) ] # For some reason jaeger decided not to support the visualization of multiple parent # spans or explicitly show references. I include the span context as a tag here as # an aid to people debugging but it's really not an ideal solution. references += _references scope = opentracing.tracer.start_active_span( operation_name, child_of=context, references=references, tags=tags, start_time=start_time, ignore_active_span=ignore_active_span, finish_on_close=finish_on_close, ) scope.span.set_tag("references", carrier.get("references", [])) return scope # Opentracing setters for tags, logs, etc @only_if_tracing def active_span(): """Get the currently active span, if any""" return opentracing.tracer.active_span @ensure_active_span("set a tag") def set_tag(key, value): """Sets a tag on the active span""" assert opentracing.tracer.active_span is not None opentracing.tracer.active_span.set_tag(key, value) @ensure_active_span("log") def log_kv(key_values, timestamp=None): """Log to the active span""" assert opentracing.tracer.active_span is not None opentracing.tracer.active_span.log_kv(key_values, timestamp) @ensure_active_span("set the traces operation name") def set_operation_name(operation_name): """Sets the operation name of the active span""" assert opentracing.tracer.active_span is not None opentracing.tracer.active_span.set_operation_name(operation_name) @only_if_tracing def force_tracing(span=Sentinel) -> None: """Force sampling for the active/given span and its children. Args: span: span to force tracing for. By default, the active span. """ if span is Sentinel: span = opentracing.tracer.active_span if span is None: logger.error("No active span in force_tracing") return span.set_tag(opentracing.tags.SAMPLING_PRIORITY, 1) # also set a bit of baggage, so that we have a way of figuring out if # it is enabled later span.set_baggage_item(SynapseBaggage.FORCE_TRACING, "1") def is_context_forced_tracing(span_context) -> bool: """Check if sampling has been force for the given span context.""" if span_context is None: return False return span_context.baggage.get(SynapseBaggage.FORCE_TRACING) is not None # Injection and extraction @ensure_active_span("inject the span into a header dict") def inject_header_dict( headers: Dict[bytes, List[bytes]], destination: Optional[str] = None, check_destination: bool = True, ) -> None: """ Injects a span context into a dict of HTTP headers Args: headers: the dict to inject headers into destination: address of entity receiving the span context. Must be given unless check_destination is False. The context will only be injected if the destination matches the opentracing whitelist check_destination (bool): If false, destination will be ignored and the context will always be injected. Note: The headers set by the tracer are custom to the tracer implementation which should be unique enough that they don't interfere with any headers set by synapse or twisted. If we're still using jaeger these headers would be those here: https://github.com/jaegertracing/jaeger-client-python/blob/master/jaeger_client/constants.py """ if check_destination: if destination is None: raise ValueError( "destination must be given unless check_destination is False" ) if not whitelisted_homeserver(destination): return span = opentracing.tracer.active_span carrier: Dict[str, str] = {} assert span is not None opentracing.tracer.inject(span.context, opentracing.Format.HTTP_HEADERS, carrier) for key, value in carrier.items(): headers[key.encode()] = [value.encode()] def inject_response_headers(response_headers: Headers) -> None: """Inject the current trace id into the HTTP response headers""" if not opentracing: return span = opentracing.tracer.active_span if not span: return # This is a bit implementation-specific. # # Jaeger's Spans have a trace_id property; other implementations (including the # dummy opentracing.span.Span which we use if init_tracer is not called) do not # expose it trace_id = getattr(span, "trace_id", None) if trace_id is not None: response_headers.addRawHeader("Synapse-Trace-Id", f"{trace_id:x}") @ensure_active_span("get the active span context as a dict", ret={}) def get_active_span_text_map(destination=None): """ Gets a span context as a dict. This can be used instead of manually injecting a span into an empty carrier. Args: destination (str): the name of the remote server. Returns: dict: the active span's context if opentracing is enabled, otherwise empty. """ if destination and not whitelisted_homeserver(destination): return {} carrier: Dict[str, str] = {} assert opentracing.tracer.active_span is not None opentracing.tracer.inject( opentracing.tracer.active_span.context, opentracing.Format.TEXT_MAP, carrier ) return carrier @ensure_active_span("get the span context as a string.", ret={}) def active_span_context_as_string(): """ Returns: The active span context encoded as a string. """ carrier: Dict[str, str] = {} if opentracing: assert opentracing.tracer.active_span is not None opentracing.tracer.inject( opentracing.tracer.active_span.context, opentracing.Format.TEXT_MAP, carrier ) return json_encoder.encode(carrier) def span_context_from_request(request: Request) -> "Optional[opentracing.SpanContext]": """Extract an opentracing context from the headers on an HTTP request This is useful when we have received an HTTP request from another part of our system, and want to link our spans to those of the remote system. """ if not opentracing: return None header_dict = { k.decode(): v[0].decode() for k, v in request.requestHeaders.getAllRawHeaders() } return opentracing.tracer.extract(opentracing.Format.HTTP_HEADERS, header_dict) @only_if_tracing def span_context_from_string(carrier): """ Returns: The active span context decoded from a string. """ carrier = json_decoder.decode(carrier) return opentracing.tracer.extract(opentracing.Format.TEXT_MAP, carrier) @only_if_tracing def extract_text_map(carrier): """ Wrapper method for opentracing's tracer.extract for TEXT_MAP. Args: carrier (dict): a dict possibly containing a span context. Returns: The active span context extracted from carrier. """ return opentracing.tracer.extract(opentracing.Format.TEXT_MAP, carrier) # Tracing decorators def trace(func=None, opname=None): """ Decorator to trace a function. Sets the operation name to that of the function's or that given as operation_name. See the module's doc string for usage examples. """ def decorator(func): if opentracing is None: return func # type: ignore[unreachable] _opname = opname if opname else func.__name__ if inspect.iscoroutinefunction(func): @wraps(func) async def _trace_inner(*args, **kwargs): with start_active_span(_opname): return await func(*args, **kwargs) else: # The other case here handles both sync functions and those # decorated with inlineDeferred. @wraps(func) def _trace_inner(*args, **kwargs): scope = start_active_span(_opname) scope.__enter__() try: result = func(*args, **kwargs) if isinstance(result, defer.Deferred): def call_back(result): scope.__exit__(None, None, None) return result def err_back(result): scope.__exit__(None, None, None) return result result.addCallbacks(call_back, err_back) else: if inspect.isawaitable(result): logger.error( "@trace may not have wrapped %s correctly! " "The function is not async but returned a %s.", func.__qualname__, type(result).__name__, ) scope.__exit__(None, None, None) return result except Exception as e: scope.__exit__(type(e), None, e.__traceback__) raise return _trace_inner if func: return decorator(func) else: return decorator def tag_args(func): """ Tags all of the args to the active span. """ if not opentracing: return func @wraps(func) def _tag_args_inner(*args, **kwargs): argspec = inspect.getfullargspec(func) for i, arg in enumerate(argspec.args[1:]): set_tag("ARG_" + arg, args[i]) set_tag("args", args[len(argspec.args) :]) set_tag("kwargs", kwargs) return func(*args, **kwargs) return _tag_args_inner @contextlib.contextmanager def trace_servlet(request: "SynapseRequest", extract_context: bool = False): """Returns a context manager which traces a request. It starts a span with some servlet specific tags such as the request metrics name and request information. Args: request extract_context: Whether to attempt to extract the opentracing context from the request the servlet is handling. """ if opentracing is None: yield # type: ignore[unreachable] return request_tags = { SynapseTags.REQUEST_ID: request.get_request_id(), tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER, tags.HTTP_METHOD: request.get_method(), tags.HTTP_URL: request.get_redacted_uri(), tags.PEER_HOST_IPV6: request.getClientIP(), } request_name = request.request_metrics.name context = span_context_from_request(request) if extract_context else None # we configure the scope not to finish the span immediately on exit, and instead # pass the span into the SynapseRequest, which will finish it once we've finished # sending the response to the client. scope = start_active_span(request_name, child_of=context, finish_on_close=False) request.set_opentracing_span(scope.span) with scope: inject_response_headers(request.responseHeaders) try: yield finally: # We set the operation name again in case its changed (which happens # with JsonResource). scope.span.set_operation_name(request.request_metrics.name) # set the tags *after* the servlet completes, in case it decided to # prioritise the span (tags will get dropped on unprioritised spans) request_tags[ SynapseTags.REQUEST_TAG ] = request.request_metrics.start_context.tag for k, v in request_tags.items(): scope.span.set_tag(k, v) synapse-1.53.0/synapse/logging/scopecontextmanager.py000066400000000000000000000126011420514467300230230ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.import logging import logging from opentracing import Scope, ScopeManager import twisted from synapse.logging.context import current_context, nested_logging_context logger = logging.getLogger(__name__) class LogContextScopeManager(ScopeManager): """ The LogContextScopeManager tracks the active scope in opentracing by using the log contexts which are native to synapse. This is so that the basic opentracing api can be used across twisted defereds. It would be nice just to use opentracing's ContextVarsScopeManager, but currently that doesn't work due to https://twistedmatrix.com/trac/ticket/10301. """ def __init__(self, config): pass @property def active(self): """ Returns the currently active Scope which can be used to access the currently active Scope.span. If there is a non-null Scope, its wrapped Span becomes an implicit parent of any newly-created Span at Tracer.start_active_span() time. Return: (Scope) : the Scope that is active, or None if not available. """ ctx = current_context() return ctx.scope def activate(self, span, finish_on_close): """ Makes a Span active. Args span (Span): the span that should become active. finish_on_close (Boolean): whether Span should be automatically finished when Scope.close() is called. Returns: Scope to control the end of the active period for *span*. It is a programming error to neglect to call Scope.close() on the returned instance. """ ctx = current_context() if not ctx: logger.error("Tried to activate scope outside of loggingcontext") return Scope(None, span) # type: ignore[arg-type] if ctx.scope is not None: # start a new logging context as a child of the existing one. # Doing so -- rather than updating the existing logcontext -- means that # creating several concurrent spans under the same logcontext works # correctly. ctx = nested_logging_context("") enter_logcontext = True else: # if there is no span currently associated with the current logcontext, we # just store the scope in it. # # This feels a bit dubious, but it does hack around a problem where a # span outlasts its parent logcontext (which would otherwise lead to # "Re-starting finished log context" errors). enter_logcontext = False scope = _LogContextScope(self, span, ctx, enter_logcontext, finish_on_close) ctx.scope = scope if enter_logcontext: ctx.__enter__() return scope class _LogContextScope(Scope): """ A custom opentracing scope, associated with a LogContext * filters out _DefGen_Return exceptions which arise from calling `defer.returnValue` in Twisted code * When the scope is closed, the logcontext's active scope is reset to None. and - if enter_logcontext was set - the logcontext is finished too. """ def __init__(self, manager, span, logcontext, enter_logcontext, finish_on_close): """ Args: manager (LogContextScopeManager): the manager that is responsible for this scope. span (Span): the opentracing span which this scope represents the local lifetime for. logcontext (LogContext): the logcontext to which this scope is attached. enter_logcontext (Boolean): if True the logcontext will be exited when the scope is finished finish_on_close (Boolean): if True finish the span when the scope is closed """ super().__init__(manager, span) self.logcontext = logcontext self._finish_on_close = finish_on_close self._enter_logcontext = enter_logcontext def __exit__(self, exc_type, value, traceback): if exc_type == twisted.internet.defer._DefGen_Return: # filter out defer.returnValue() calls exc_type = value = traceback = None super().__exit__(exc_type, value, traceback) def __str__(self): return f"Scope<{self.span}>" def close(self): active_scope = self.manager.active if active_scope is not self: logger.error( "Closing scope %s which is not the currently-active one %s", self, active_scope, ) if self._finish_on_close: self.span.finish() self.logcontext.scope = None if self._enter_logcontext: self.logcontext.__exit__(None, None, None) synapse-1.53.0/synapse/metrics/000077500000000000000000000000001420514467300164205ustar00rootroot00000000000000synapse-1.53.0/synapse/metrics/__init__.py000066400000000000000000000350661420514467300205430ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging import os import platform import threading from typing import ( Callable, Dict, Generic, Iterable, Mapping, Optional, Sequence, Set, Tuple, Type, TypeVar, Union, cast, ) import attr from matrix_common.versionstring import get_distribution_version_string from prometheus_client import CollectorRegistry, Counter, Gauge, Histogram, Metric from prometheus_client.core import ( REGISTRY, GaugeHistogramMetricFamily, GaugeMetricFamily, ) from twisted.python.threadpool import ThreadPool # This module is imported for its side effects; flake8 needn't warn that it's unused. import synapse.metrics._reactor_metrics # noqa: F401 from synapse.metrics._exposition import ( MetricsResource, generate_latest, start_http_server, ) from synapse.metrics._gc import MIN_TIME_BETWEEN_GCS, install_gc_manager logger = logging.getLogger(__name__) METRICS_PREFIX = "/_synapse/metrics" all_gauges: "Dict[str, Union[LaterGauge, InFlightGauge]]" = {} HAVE_PROC_SELF_STAT = os.path.exists("/proc/self/stat") class _RegistryProxy: @staticmethod def collect() -> Iterable[Metric]: for metric in REGISTRY.collect(): if not metric.name.startswith("__"): yield metric # A little bit nasty, but collect() above is static so a Protocol doesn't work. # _RegistryProxy matches the signature of a CollectorRegistry instance enough # for it to be usable in the contexts in which we use it. # TODO Do something nicer about this. RegistryProxy = cast(CollectorRegistry, _RegistryProxy) @attr.s(slots=True, hash=True, auto_attribs=True) class LaterGauge: name: str desc: str labels: Optional[Iterable[str]] = attr.ib(hash=False) # callback: should either return a value (if there are no labels for this metric), # or dict mapping from a label tuple to a value caller: Callable[ [], Union[Mapping[Tuple[str, ...], Union[int, float]], Union[int, float]] ] def collect(self) -> Iterable[Metric]: g = GaugeMetricFamily(self.name, self.desc, labels=self.labels) try: calls = self.caller() except Exception: logger.exception("Exception running callback for LaterGauge(%s)", self.name) yield g return if isinstance(calls, (int, float)): g.add_metric([], calls) else: for k, v in calls.items(): g.add_metric(k, v) yield g def __attrs_post_init__(self) -> None: self._register() def _register(self) -> None: if self.name in all_gauges.keys(): logger.warning("%s already registered, reregistering" % (self.name,)) REGISTRY.unregister(all_gauges.pop(self.name)) REGISTRY.register(self) all_gauges[self.name] = self # `MetricsEntry` only makes sense when it is a `Protocol`, # but `Protocol` can't be used as a `TypeVar` bound. MetricsEntry = TypeVar("MetricsEntry") class InFlightGauge(Generic[MetricsEntry]): """Tracks number of things (e.g. requests, Measure blocks, etc) in flight at any given time. Each InFlightGauge will create a metric called `_total` that counts the number of in flight blocks, as well as a metrics for each item in the given `sub_metrics` as `_` which will get updated by the callbacks. Args: name desc labels sub_metrics: A list of sub metrics that the callbacks will update. """ def __init__( self, name: str, desc: str, labels: Sequence[str], sub_metrics: Sequence[str], ): self.name = name self.desc = desc self.labels = labels self.sub_metrics = sub_metrics # Create a class which have the sub_metrics values as attributes, which # default to 0 on initialization. Used to pass to registered callbacks. self._metrics_class: Type[MetricsEntry] = attr.make_class( "_MetricsEntry", attrs={x: attr.ib(default=0) for x in sub_metrics}, slots=True, ) # Counts number of in flight blocks for a given set of label values self._registrations: Dict[ Tuple[str, ...], Set[Callable[[MetricsEntry], None]] ] = {} # Protects access to _registrations self._lock = threading.Lock() self._register_with_collector() def register( self, key: Tuple[str, ...], callback: Callable[[MetricsEntry], None], ) -> None: """Registers that we've entered a new block with labels `key`. `callback` gets called each time the metrics are collected. The same value must also be given to `unregister`. `callback` gets called with an object that has an attribute per sub_metric, which should be updated with the necessary values. Note that the metrics object is shared between all callbacks registered with the same key. Note that `callback` may be called on a separate thread. """ with self._lock: self._registrations.setdefault(key, set()).add(callback) def unregister( self, key: Tuple[str, ...], callback: Callable[[MetricsEntry], None], ) -> None: """Registers that we've exited a block with labels `key`.""" with self._lock: self._registrations.setdefault(key, set()).discard(callback) def collect(self) -> Iterable[Metric]: """Called by prometheus client when it reads metrics. Note: may be called by a separate thread. """ in_flight = GaugeMetricFamily( self.name + "_total", self.desc, labels=self.labels ) metrics_by_key = {} # We copy so that we don't mutate the list while iterating with self._lock: keys = list(self._registrations) for key in keys: with self._lock: callbacks = set(self._registrations[key]) in_flight.add_metric(key, len(callbacks)) metrics = self._metrics_class() metrics_by_key[key] = metrics for callback in callbacks: callback(metrics) yield in_flight for name in self.sub_metrics: gauge = GaugeMetricFamily( "_".join([self.name, name]), "", labels=self.labels ) for key, metrics in metrics_by_key.items(): gauge.add_metric(key, getattr(metrics, name)) yield gauge def _register_with_collector(self) -> None: if self.name in all_gauges.keys(): logger.warning("%s already registered, reregistering" % (self.name,)) REGISTRY.unregister(all_gauges.pop(self.name)) REGISTRY.register(self) all_gauges[self.name] = self class GaugeBucketCollector: """Like a Histogram, but the buckets are Gauges which are updated atomically. The data is updated by calling `update_data` with an iterable of measurements. We assume that the data is updated less frequently than it is reported to Prometheus, and optimise for that case. """ __slots__ = ( "_name", "_documentation", "_bucket_bounds", "_metric", ) def __init__( self, name: str, documentation: str, buckets: Iterable[float], registry: CollectorRegistry = REGISTRY, ): """ Args: name: base name of metric to be exported to Prometheus. (a _bucket suffix will be added.) documentation: help text for the metric buckets: The top bounds of the buckets to report registry: metric registry to register with """ self._name = name self._documentation = documentation # the tops of the buckets self._bucket_bounds = [float(b) for b in buckets] if self._bucket_bounds != sorted(self._bucket_bounds): raise ValueError("Buckets not in sorted order") if self._bucket_bounds[-1] != float("inf"): self._bucket_bounds.append(float("inf")) # We initially set this to None. We won't report metrics until # this has been initialised after a successful data update self._metric: Optional[GaugeHistogramMetricFamily] = None registry.register(self) def collect(self) -> Iterable[Metric]: # Don't report metrics unless we've already collected some data if self._metric is not None: yield self._metric def update_data(self, values: Iterable[float]) -> None: """Update the data to be reported by the metric The existing data is cleared, and each measurement in the input is assigned to the relevant bucket. """ self._metric = self._values_to_metric(values) def _values_to_metric(self, values: Iterable[float]) -> GaugeHistogramMetricFamily: total = 0.0 bucket_values = [0 for _ in self._bucket_bounds] for v in values: # assign each value to a bucket for i, bound in enumerate(self._bucket_bounds): if v <= bound: bucket_values[i] += 1 break # ... and increment the sum total += v # now, aggregate the bucket values so that they count the number of entries in # that bucket or below. accumulated_values = itertools.accumulate(bucket_values) return GaugeHistogramMetricFamily( self._name, self._documentation, buckets=list( zip((str(b) for b in self._bucket_bounds), accumulated_values) ), gsum_value=total, ) # # Detailed CPU metrics # class CPUMetrics: def __init__(self) -> None: ticks_per_sec = 100 try: # Try and get the system config ticks_per_sec = os.sysconf("SC_CLK_TCK") except (ValueError, TypeError, AttributeError): pass self.ticks_per_sec = ticks_per_sec def collect(self) -> Iterable[Metric]: if not HAVE_PROC_SELF_STAT: return with open("/proc/self/stat") as s: line = s.read() raw_stats = line.split(") ", 1)[1].split(" ") user = GaugeMetricFamily("process_cpu_user_seconds_total", "") user.add_metric([], float(raw_stats[11]) / self.ticks_per_sec) yield user sys = GaugeMetricFamily("process_cpu_system_seconds_total", "") sys.add_metric([], float(raw_stats[12]) / self.ticks_per_sec) yield sys REGISTRY.register(CPUMetrics()) # # Federation Metrics # sent_transactions_counter = Counter("synapse_federation_client_sent_transactions", "") events_processed_counter = Counter("synapse_federation_client_events_processed", "") event_processing_loop_counter = Counter( "synapse_event_processing_loop_count", "Event processing loop iterations", ["name"] ) event_processing_loop_room_count = Counter( "synapse_event_processing_loop_room_count", "Rooms seen per event processing loop iteration", ["name"], ) # Used to track where various components have processed in the event stream, # e.g. federation sending, appservice sending, etc. event_processing_positions = Gauge("synapse_event_processing_positions", "", ["name"]) # Used to track the current max events stream position event_persisted_position = Gauge("synapse_event_persisted_position", "") # Used to track the received_ts of the last event processed by various # components event_processing_last_ts = Gauge("synapse_event_processing_last_ts", "", ["name"]) # Used to track the lag processing events. This is the time difference # between the last processed event's received_ts and the time it was # finished being processed. event_processing_lag = Gauge("synapse_event_processing_lag", "", ["name"]) event_processing_lag_by_event = Histogram( "synapse_event_processing_lag_by_event", "Time between an event being persisted and it being queued up to be sent to the relevant remote servers", ["name"], ) # Build info of the running server. build_info = Gauge( "synapse_build_info", "Build information", ["pythonversion", "version", "osversion"] ) build_info.labels( " ".join([platform.python_implementation(), platform.python_version()]), get_distribution_version_string("matrix-synapse"), " ".join([platform.system(), platform.release()]), ).set(1) # 3PID send info threepid_send_requests = Histogram( "synapse_threepid_send_requests_with_tries", documentation="Number of requests for a 3pid token by try count. Note if" " there is a request with try count of 4, then there would have been one" " each for 1, 2 and 3", buckets=(1, 2, 3, 4, 5, 10), labelnames=("type", "reason"), ) threadpool_total_threads = Gauge( "synapse_threadpool_total_threads", "Total number of threads currently in the threadpool", ["name"], ) threadpool_total_working_threads = Gauge( "synapse_threadpool_working_threads", "Number of threads currently working in the threadpool", ["name"], ) threadpool_total_min_threads = Gauge( "synapse_threadpool_min_threads", "Minimum number of threads configured in the threadpool", ["name"], ) threadpool_total_max_threads = Gauge( "synapse_threadpool_max_threads", "Maximum number of threads configured in the threadpool", ["name"], ) def register_threadpool(name: str, threadpool: ThreadPool) -> None: """Add metrics for the threadpool.""" threadpool_total_min_threads.labels(name).set(threadpool.min) threadpool_total_max_threads.labels(name).set(threadpool.max) threadpool_total_threads.labels(name).set_function(lambda: len(threadpool.threads)) threadpool_total_working_threads.labels(name).set_function( lambda: len(threadpool.working) ) __all__ = [ "MetricsResource", "generate_latest", "start_http_server", "LaterGauge", "InFlightGauge", "GaugeBucketCollector", "MIN_TIME_BETWEEN_GCS", "install_gc_manager", ] synapse-1.53.0/synapse/metrics/_exposition.py000066400000000000000000000216041420514467300213350ustar00rootroot00000000000000# Copyright 2015-2019 Prometheus Python Client Developers # Copyright 2019 Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This code is based off `prometheus_client/exposition.py` from version 0.7.1. Due to the renaming of metrics in prometheus_client 0.4.0, this customised vendoring of the code will emit both the old versions that Synapse dashboards expect, and the newer "best practice" version of the up-to-date official client. """ import math import threading from http.server import BaseHTTPRequestHandler, HTTPServer from socketserver import ThreadingMixIn from typing import Any, Dict, List, Type, Union from urllib.parse import parse_qs, urlparse from prometheus_client import REGISTRY, CollectorRegistry from prometheus_client.core import Sample from twisted.web.resource import Resource from twisted.web.server import Request from synapse.util import caches CONTENT_TYPE_LATEST = "text/plain; version=0.0.4; charset=utf-8" def floatToGoString(d: Union[int, float]) -> str: d = float(d) if d == math.inf: return "+Inf" elif d == -math.inf: return "-Inf" elif math.isnan(d): return "NaN" else: s = repr(d) dot = s.find(".") # Go switches to exponents sooner than Python. # We only need to care about positive values for le/quantile. if d > 0 and dot > 6: mantissa = f"{s[0]}.{s[1:dot]}{s[dot + 1 :]}".rstrip("0.") return f"{mantissa}e+0{dot - 1}" return s def sample_line(line: Sample, name: str) -> str: if line.labels: labelstr = "{{{0}}}".format( ",".join( [ '{}="{}"'.format( k, v.replace("\\", r"\\").replace("\n", r"\n").replace('"', r"\""), ) for k, v in sorted(line.labels.items()) ] ) ) else: labelstr = "" timestamp = "" if line.timestamp is not None: # Convert to milliseconds. timestamp = f" {int(float(line.timestamp) * 1000):d}" return "{}{} {}{}\n".format(name, labelstr, floatToGoString(line.value), timestamp) def generate_latest(registry: CollectorRegistry, emit_help: bool = False) -> bytes: # Trigger the cache metrics to be rescraped, which updates the common # metrics but do not produce metrics themselves for collector in caches.collectors_by_name.values(): collector.collect() output = [] for metric in registry.collect(): if not metric.samples: # No samples, don't bother. continue mname = metric.name mnewname = metric.name mtype = metric.type # OpenMetrics -> Prometheus if mtype == "counter": mnewname = mnewname + "_total" elif mtype == "info": mtype = "gauge" mnewname = mnewname + "_info" elif mtype == "stateset": mtype = "gauge" elif mtype == "gaugehistogram": mtype = "histogram" elif mtype == "unknown": mtype = "untyped" # Output in the old format for compatibility. if emit_help: output.append( "# HELP {} {}\n".format( mname, metric.documentation.replace("\\", r"\\").replace("\n", r"\n"), ) ) output.append(f"# TYPE {mname} {mtype}\n") om_samples: Dict[str, List[str]] = {} for s in metric.samples: for suffix in ["_created", "_gsum", "_gcount"]: if s.name == metric.name + suffix: # OpenMetrics specific sample, put in a gauge at the end. # (these come from gaugehistograms which don't get renamed, # so no need to faff with mnewname) om_samples.setdefault(suffix, []).append(sample_line(s, s.name)) break else: newname = s.name.replace(mnewname, mname) if ":" in newname and newname.endswith("_total"): newname = newname[: -len("_total")] output.append(sample_line(s, newname)) for suffix, lines in sorted(om_samples.items()): if emit_help: output.append( "# HELP {}{} {}\n".format( metric.name, suffix, metric.documentation.replace("\\", r"\\").replace("\n", r"\n"), ) ) output.append(f"# TYPE {metric.name}{suffix} gauge\n") output.extend(lines) # Get rid of the weird colon things while we're at it if mtype == "counter": mnewname = mnewname.replace(":total", "") mnewname = mnewname.replace(":", "_") if mname == mnewname: continue # Also output in the new format, if it's different. if emit_help: output.append( "# HELP {} {}\n".format( mnewname, metric.documentation.replace("\\", r"\\").replace("\n", r"\n"), ) ) output.append(f"# TYPE {mnewname} {mtype}\n") for s in metric.samples: # Get rid of the OpenMetrics specific samples (we should already have # dealt with them above anyway.) for suffix in ["_created", "_gsum", "_gcount"]: if s.name == metric.name + suffix: break else: output.append( sample_line(s, s.name.replace(":total", "").replace(":", "_")) ) return "".join(output).encode("utf-8") class MetricsHandler(BaseHTTPRequestHandler): """HTTP handler that gives metrics from ``REGISTRY``.""" registry = REGISTRY def do_GET(self) -> None: registry = self.registry params = parse_qs(urlparse(self.path).query) if "help" in params: emit_help = True else: emit_help = False try: output = generate_latest(registry, emit_help=emit_help) except Exception: self.send_error(500, "error generating metric output") raise self.send_response(200) self.send_header("Content-Type", CONTENT_TYPE_LATEST) self.send_header("Content-Length", str(len(output))) self.end_headers() self.wfile.write(output) def log_message(self, format: str, *args: Any) -> None: """Log nothing.""" @classmethod def factory(cls, registry: CollectorRegistry) -> Type: """Returns a dynamic MetricsHandler class tied to the passed registry. """ # This implementation relies on MetricsHandler.registry # (defined above and defaulted to REGISTRY). # As we have unicode_literals, we need to create a str() # object for type(). cls_name = str(cls.__name__) MyMetricsHandler = type(cls_name, (cls, object), {"registry": registry}) return MyMetricsHandler class _ThreadingSimpleServer(ThreadingMixIn, HTTPServer): """Thread per request HTTP server.""" # Make worker threads "fire and forget". Beginning with Python 3.7 this # prevents a memory leak because ``ThreadingMixIn`` starts to gather all # non-daemon threads in a list in order to join on them at server close. # Enabling daemon threads virtually makes ``_ThreadingSimpleServer`` the # same as Python 3.7's ``ThreadingHTTPServer``. daemon_threads = True def start_http_server( port: int, addr: str = "", registry: CollectorRegistry = REGISTRY ) -> None: """Starts an HTTP server for prometheus metrics as a daemon thread""" CustomMetricsHandler = MetricsHandler.factory(registry) httpd = _ThreadingSimpleServer((addr, port), CustomMetricsHandler) t = threading.Thread(target=httpd.serve_forever) t.daemon = True t.start() class MetricsResource(Resource): """ Twisted ``Resource`` that serves prometheus metrics. """ isLeaf = True def __init__(self, registry: CollectorRegistry = REGISTRY): self.registry = registry def render_GET(self, request: Request) -> bytes: request.setHeader(b"Content-Type", CONTENT_TYPE_LATEST.encode("ascii")) response = generate_latest(self.registry) request.setHeader(b"Content-Length", str(len(response))) return response synapse-1.53.0/synapse/metrics/_gc.py000066400000000000000000000156731420514467300175360ustar00rootroot00000000000000# Copyright 2015-2022 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import gc import logging import platform import time from typing import Iterable from prometheus_client.core import ( REGISTRY, CounterMetricFamily, Gauge, GaugeMetricFamily, Histogram, Metric, ) from twisted.internet import task """Prometheus metrics for garbage collection""" logger = logging.getLogger(__name__) # The minimum time in seconds between GCs for each generation, regardless of the current GC # thresholds and counts. MIN_TIME_BETWEEN_GCS = (1.0, 10.0, 30.0) running_on_pypy = platform.python_implementation() == "PyPy" # # Python GC metrics # gc_unreachable = Gauge("python_gc_unreachable_total", "Unreachable GC objects", ["gen"]) gc_time = Histogram( "python_gc_time", "Time taken to GC (sec)", ["gen"], buckets=[ 0.0025, 0.005, 0.01, 0.025, 0.05, 0.10, 0.25, 0.50, 1.00, 2.50, 5.00, 7.50, 15.00, 30.00, 45.00, 60.00, ], ) class GCCounts: def collect(self) -> Iterable[Metric]: cm = GaugeMetricFamily("python_gc_counts", "GC object counts", labels=["gen"]) for n, m in enumerate(gc.get_count()): cm.add_metric([str(n)], m) yield cm def install_gc_manager() -> None: """Disable automatic GC, and replace it with a task that runs every 100ms This means that (a) we can limit how often GC runs; (b) we can get some metrics about GC activity. It does nothing on PyPy. """ if running_on_pypy: return REGISTRY.register(GCCounts()) gc.disable() # The time (in seconds since the epoch) of the last time we did a GC for each generation. _last_gc = [0.0, 0.0, 0.0] def _maybe_gc() -> None: # Check if we need to do a manual GC (since its been disabled), and do # one if necessary. Note we go in reverse order as e.g. a gen 1 GC may # promote an object into gen 2, and we don't want to handle the same # object multiple times. threshold = gc.get_threshold() counts = gc.get_count() end = time.time() for i in (2, 1, 0): # We check if we need to do one based on a straightforward # comparison between the threshold and count. We also do an extra # check to make sure that we don't a GC too often. if threshold[i] < counts[i] and MIN_TIME_BETWEEN_GCS[i] < end - _last_gc[i]: if i == 0: logger.debug("Collecting gc %d", i) else: logger.info("Collecting gc %d", i) start = time.time() unreachable = gc.collect(i) end = time.time() _last_gc[i] = end gc_time.labels(i).observe(end - start) gc_unreachable.labels(i).set(unreachable) gc_task = task.LoopingCall(_maybe_gc) gc_task.start(0.1) # # PyPy GC / memory metrics # class PyPyGCStats: def collect(self) -> Iterable[Metric]: # @stats is a pretty-printer object with __str__() returning a nice table, # plus some fields that contain data from that table. # unfortunately, fields are pretty-printed themselves (i. e. '4.5MB'). stats = gc.get_stats(memory_pressure=False) # type: ignore # @s contains same fields as @stats, but as actual integers. s = stats._s # type: ignore # also note that field naming is completely braindead # and only vaguely correlates with the pretty-printed table. # >>>> gc.get_stats(False) # Total memory consumed: # GC used: 8.7MB (peak: 39.0MB) # s.total_gc_memory, s.peak_memory # in arenas: 3.0MB # s.total_arena_memory # rawmalloced: 1.7MB # s.total_rawmalloced_memory # nursery: 4.0MB # s.nursery_size # raw assembler used: 31.0kB # s.jit_backend_used # ----------------------------- # Total: 8.8MB # stats.memory_used_sum # # Total memory allocated: # GC allocated: 38.7MB (peak: 41.1MB) # s.total_allocated_memory, s.peak_allocated_memory # in arenas: 30.9MB # s.peak_arena_memory # rawmalloced: 4.1MB # s.peak_rawmalloced_memory # nursery: 4.0MB # s.nursery_size # raw assembler allocated: 1.0MB # s.jit_backend_allocated # ----------------------------- # Total: 39.7MB # stats.memory_allocated_sum # # Total time spent in GC: 0.073 # s.total_gc_time pypy_gc_time = CounterMetricFamily( "pypy_gc_time_seconds_total", "Total time spent in PyPy GC", labels=[], ) pypy_gc_time.add_metric([], s.total_gc_time / 1000) yield pypy_gc_time pypy_mem = GaugeMetricFamily( "pypy_memory_bytes", "Memory tracked by PyPy allocator", labels=["state", "class", "kind"], ) # memory used by JIT assembler pypy_mem.add_metric(["used", "", "jit"], s.jit_backend_used) pypy_mem.add_metric(["allocated", "", "jit"], s.jit_backend_allocated) # memory used by GCed objects pypy_mem.add_metric(["used", "", "arenas"], s.total_arena_memory) pypy_mem.add_metric(["allocated", "", "arenas"], s.peak_arena_memory) pypy_mem.add_metric(["used", "", "rawmalloced"], s.total_rawmalloced_memory) pypy_mem.add_metric(["allocated", "", "rawmalloced"], s.peak_rawmalloced_memory) pypy_mem.add_metric(["used", "", "nursery"], s.nursery_size) pypy_mem.add_metric(["allocated", "", "nursery"], s.nursery_size) # totals pypy_mem.add_metric(["used", "totals", "gc"], s.total_gc_memory) pypy_mem.add_metric(["allocated", "totals", "gc"], s.total_allocated_memory) pypy_mem.add_metric(["used", "totals", "gc_peak"], s.peak_memory) pypy_mem.add_metric(["allocated", "totals", "gc_peak"], s.peak_allocated_memory) yield pypy_mem if running_on_pypy: REGISTRY.register(PyPyGCStats()) synapse-1.53.0/synapse/metrics/_reactor_metrics.py000066400000000000000000000054251420514467300223240ustar00rootroot00000000000000# Copyright 2022 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import select import time from typing import Any, Iterable, List, Tuple from prometheus_client import Histogram, Metric from prometheus_client.core import REGISTRY, GaugeMetricFamily from twisted.internet import reactor # # Twisted reactor metrics # tick_time = Histogram( "python_twisted_reactor_tick_time", "Tick time of the Twisted reactor (sec)", buckets=[0.001, 0.002, 0.005, 0.01, 0.025, 0.05, 0.1, 0.2, 0.5, 1, 2, 5], ) class EpollWrapper: """a wrapper for an epoll object which records the time between polls""" def __init__(self, poller: "select.epoll"): # type: ignore[name-defined] self.last_polled = time.time() self._poller = poller def poll(self, *args, **kwargs) -> List[Tuple[int, int]]: # type: ignore[no-untyped-def] # record the time since poll() was last called. This gives a good proxy for # how long it takes to run everything in the reactor - ie, how long anything # waiting for the next tick will have to wait. tick_time.observe(time.time() - self.last_polled) ret = self._poller.poll(*args, **kwargs) self.last_polled = time.time() return ret def __getattr__(self, item: str) -> Any: return getattr(self._poller, item) class ReactorLastSeenMetric: def __init__(self, epoll_wrapper: EpollWrapper): self._epoll_wrapper = epoll_wrapper def collect(self) -> Iterable[Metric]: cm = GaugeMetricFamily( "python_twisted_reactor_last_seen", "Seconds since the Twisted reactor was last seen", ) cm.add_metric([], time.time() - self._epoll_wrapper.last_polled) yield cm try: # if the reactor has a `_poller` attribute, which is an `epoll` object # (ie, it's an EPollReactor), we wrap the `epoll` with a thing that will # measure the time between ticks from select import epoll # type: ignore[attr-defined] poller = reactor._poller # type: ignore[attr-defined] except (AttributeError, ImportError): pass else: if isinstance(poller, epoll): poller = EpollWrapper(poller) reactor._poller = poller # type: ignore[attr-defined] REGISTRY.register(ReactorLastSeenMetric(poller)) synapse-1.53.0/synapse/metrics/background_process_metrics.py000066400000000000000000000255721420514467300244100ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import threading from functools import wraps from types import TracebackType from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, Optional, Set, Type, TypeVar, Union, cast, ) from prometheus_client import Metric from prometheus_client.core import REGISTRY, Counter, Gauge from twisted.internet import defer from synapse.logging.context import ( ContextResourceUsage, LoggingContext, PreserveLoggingContext, ) from synapse.logging.opentracing import ( SynapseTags, noop_context_manager, start_active_span, ) if TYPE_CHECKING: import resource logger = logging.getLogger(__name__) _background_process_start_count = Counter( "synapse_background_process_start_count", "Number of background processes started", ["name"], ) _background_process_in_flight_count = Gauge( "synapse_background_process_in_flight_count", "Number of background processes in flight", labelnames=["name"], ) # we set registry=None in all of these to stop them getting registered with # the default registry. Instead we collect them all via the CustomCollector, # which ensures that we can update them before they are collected. # _background_process_ru_utime = Counter( "synapse_background_process_ru_utime_seconds", "User CPU time used by background processes, in seconds", ["name"], registry=None, ) _background_process_ru_stime = Counter( "synapse_background_process_ru_stime_seconds", "System CPU time used by background processes, in seconds", ["name"], registry=None, ) _background_process_db_txn_count = Counter( "synapse_background_process_db_txn_count", "Number of database transactions done by background processes", ["name"], registry=None, ) _background_process_db_txn_duration = Counter( "synapse_background_process_db_txn_duration_seconds", ( "Seconds spent by background processes waiting for database " "transactions, excluding scheduling time" ), ["name"], registry=None, ) _background_process_db_sched_duration = Counter( "synapse_background_process_db_sched_duration_seconds", "Seconds spent by background processes waiting for database connections", ["name"], registry=None, ) # map from description to a counter, so that we can name our logcontexts # incrementally. (It actually duplicates _background_process_start_count, but # it's much simpler to do so than to try to combine them.) _background_process_counts: Dict[str, int] = {} # Set of all running background processes that became active active since the # last time metrics were scraped (i.e. background processes that performed some # work since the last scrape.) # # We do it like this to handle the case where we have a large number of # background processes stacking up behind a lock or linearizer, where we then # only need to iterate over and update metrics for the process that have # actually been active and can ignore the idle ones. _background_processes_active_since_last_scrape: "Set[_BackgroundProcess]" = set() # A lock that covers the above set and dict _bg_metrics_lock = threading.Lock() class _Collector: """A custom metrics collector for the background process metrics. Ensures that all of the metrics are up-to-date with any in-flight processes before they are returned. """ def collect(self) -> Iterable[Metric]: global _background_processes_active_since_last_scrape # We swap out the _background_processes set with an empty one so that # we can safely iterate over the set without holding the lock. with _bg_metrics_lock: _background_processes_copy = _background_processes_active_since_last_scrape _background_processes_active_since_last_scrape = set() for process in _background_processes_copy: process.update_metrics() # now we need to run collect() over each of the static Counters, and # yield each metric they return. for m in ( _background_process_ru_utime, _background_process_ru_stime, _background_process_db_txn_count, _background_process_db_txn_duration, _background_process_db_sched_duration, ): yield from m.collect() REGISTRY.register(_Collector()) class _BackgroundProcess: def __init__(self, desc: str, ctx: LoggingContext): self.desc = desc self._context = ctx self._reported_stats: Optional[ContextResourceUsage] = None def update_metrics(self) -> None: """Updates the metrics with values from this process.""" new_stats = self._context.get_resource_usage() if self._reported_stats is None: diff = new_stats else: diff = new_stats - self._reported_stats self._reported_stats = new_stats _background_process_ru_utime.labels(self.desc).inc(diff.ru_utime) _background_process_ru_stime.labels(self.desc).inc(diff.ru_stime) _background_process_db_txn_count.labels(self.desc).inc(diff.db_txn_count) _background_process_db_txn_duration.labels(self.desc).inc( diff.db_txn_duration_sec ) _background_process_db_sched_duration.labels(self.desc).inc( diff.db_sched_duration_sec ) R = TypeVar("R") def run_as_background_process( desc: str, func: Callable[..., Awaitable[Optional[R]]], *args: Any, bg_start_span: bool = True, **kwargs: Any, ) -> "defer.Deferred[Optional[R]]": """Run the given function in its own logcontext, with resource metrics This should be used to wrap processes which are fired off to run in the background, instead of being associated with a particular request. It returns a Deferred which completes when the function completes, but it doesn't follow the synapse logcontext rules, which makes it appropriate for passing to clock.looping_call and friends (or for firing-and-forgetting in the middle of a normal synapse async function). Args: desc: a description for this background process type func: a function, which may return a Deferred or a coroutine bg_start_span: Whether to start an opentracing span. Defaults to True. Should only be disabled for processes that will not log to or tag a span. args: positional args for func kwargs: keyword args for func Returns: Deferred which returns the result of func, or `None` if func raises. Note that the returned Deferred does not follow the synapse logcontext rules. """ async def run() -> Optional[R]: with _bg_metrics_lock: count = _background_process_counts.get(desc, 0) _background_process_counts[desc] = count + 1 _background_process_start_count.labels(desc).inc() _background_process_in_flight_count.labels(desc).inc() with BackgroundProcessLoggingContext(desc, count) as context: try: if bg_start_span: ctx = start_active_span( f"bgproc.{desc}", tags={SynapseTags.REQUEST_ID: str(context)} ) else: ctx = noop_context_manager() with ctx: return await func(*args, **kwargs) except Exception: logger.exception( "Background process '%s' threw an exception", desc, ) return None finally: _background_process_in_flight_count.labels(desc).dec() with PreserveLoggingContext(): # Note that we return a Deferred here so that it can be used in a # looping_call and other places that expect a Deferred. return defer.ensureDeferred(run()) F = TypeVar("F", bound=Callable[..., Awaitable[Optional[Any]]]) def wrap_as_background_process(desc: str) -> Callable[[F], F]: """Decorator that wraps a function that gets called as a background process. Equivalent to calling the function with `run_as_background_process` """ def wrap_as_background_process_inner(func: F) -> F: @wraps(func) def wrap_as_background_process_inner_2( *args: Any, **kwargs: Any ) -> "defer.Deferred[Optional[R]]": return run_as_background_process(desc, func, *args, **kwargs) return cast(F, wrap_as_background_process_inner_2) return wrap_as_background_process_inner class BackgroundProcessLoggingContext(LoggingContext): """A logging context that tracks in flight metrics for background processes. """ __slots__ = ["_proc"] def __init__(self, name: str, instance_id: Optional[Union[int, str]] = None): """ Args: name: The name of the background process. Each distinct `name` gets a separate prometheus time series. instance_id: an identifer to add to `name` to distinguish this instance of the named background process in the logs. If this is `None`, one is made up based on id(self). """ if instance_id is None: instance_id = id(self) super().__init__("%s-%s" % (name, instance_id)) self._proc = _BackgroundProcess(name, self) def start(self, rusage: "Optional[resource.struct_rusage]") -> None: """Log context has started running (again).""" super().start(rusage) # We've become active again so we make sure we're in the list of active # procs. (Note that "start" here means we've become active, as opposed # to starting for the first time.) with _bg_metrics_lock: _background_processes_active_since_last_scrape.add(self._proc) def __exit__( self, type: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> None: """Log context has finished.""" super().__exit__(type, value, traceback) # The background process has finished. We explicitly remove and manually # update the metrics here so that if nothing is scraping metrics the set # doesn't infinitely grow. with _bg_metrics_lock: _background_processes_active_since_last_scrape.discard(self._proc) self._proc.update_metrics() synapse-1.53.0/synapse/metrics/jemalloc.py000066400000000000000000000153101420514467300205600ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import ctypes import logging import os import re from typing import Iterable, Optional from prometheus_client import Metric from synapse.metrics import REGISTRY, GaugeMetricFamily logger = logging.getLogger(__name__) def _setup_jemalloc_stats() -> None: """Checks to see if jemalloc is loaded, and hooks up a collector to record statistics exposed by jemalloc. """ # Try to find the loaded jemalloc shared library, if any. We need to # introspect into what is loaded, rather than loading whatever is on the # path, as if we load a *different* jemalloc version things will seg fault. # We look in `/proc/self/maps`, which only exists on linux. if not os.path.exists("/proc/self/maps"): logger.debug("Not looking for jemalloc as no /proc/self/maps exist") return # We're looking for a path at the end of the line that includes # "libjemalloc". regex = re.compile(r"/\S+/libjemalloc.*$") jemalloc_path = None with open("/proc/self/maps") as f: for line in f: match = regex.search(line.strip()) if match: jemalloc_path = match.group() if not jemalloc_path: # No loaded jemalloc was found. logger.debug("jemalloc not found") return logger.debug("Found jemalloc at %s", jemalloc_path) jemalloc = ctypes.CDLL(jemalloc_path) def _mallctl( name: str, read: bool = True, write: Optional[int] = None ) -> Optional[int]: """Wrapper around `mallctl` for reading and writing integers to jemalloc. Args: name: The name of the option to read from/write to. read: Whether to try and read the value. write: The value to write, if given. Returns: The value read if `read` is True, otherwise None. Raises: An exception if `mallctl` returns a non-zero error code. """ input_var = None input_var_ref = None input_len_ref = None if read: input_var = ctypes.c_size_t(0) input_len = ctypes.c_size_t(ctypes.sizeof(input_var)) input_var_ref = ctypes.byref(input_var) input_len_ref = ctypes.byref(input_len) write_var_ref = None write_len = ctypes.c_size_t(0) if write is not None: write_var = ctypes.c_size_t(write) write_len = ctypes.c_size_t(ctypes.sizeof(write_var)) write_var_ref = ctypes.byref(write_var) # The interface is: # # int mallctl( # const char *name, # void *oldp, # size_t *oldlenp, # void *newp, # size_t newlen # ) # # Where oldp/oldlenp is a buffer where the old value will be written to # (if not null), and newp/newlen is the buffer with the new value to set # (if not null). Note that they're all references *except* newlen. result = jemalloc.mallctl( name.encode("ascii"), input_var_ref, input_len_ref, write_var_ref, write_len, ) if result != 0: raise Exception("Failed to call mallctl") if input_var is None: return None return input_var.value def _jemalloc_refresh_stats() -> None: """Request that jemalloc updates its internal statistics. This needs to be called before querying for stats, otherwise it will return stale values. """ try: _mallctl("epoch", read=False, write=1) except Exception as e: logger.warning("Failed to reload jemalloc stats: %s", e) class JemallocCollector: """Metrics for internal jemalloc stats.""" def collect(self) -> Iterable[Metric]: _jemalloc_refresh_stats() g = GaugeMetricFamily( "jemalloc_stats_app_memory_bytes", "The stats reported by jemalloc", labels=["type"], ) # Read the relevant global stats from jemalloc. Note that these may # not be accurate if python is configured to use its internal small # object allocator (which is on by default, disable by setting the # env `PYTHONMALLOC=malloc`). # # See the jemalloc manpage for details about what each value means, # roughly: # - allocated ─ Total number of bytes allocated by the app # - active ─ Total number of bytes in active pages allocated by # the application, this is bigger than `allocated`. # - resident ─ Maximum number of bytes in physically resident data # pages mapped by the allocator, comprising all pages dedicated # to allocator metadata, pages backing active allocations, and # unused dirty pages. This is bigger than `active`. # - mapped ─ Total number of bytes in active extents mapped by the # allocator. # - metadata ─ Total number of bytes dedicated to jemalloc # metadata. for t in ( "allocated", "active", "resident", "mapped", "metadata", ): try: value = _mallctl(f"stats.{t}") except Exception as e: # There was an error fetching the value, skip. logger.warning("Failed to read jemalloc stats.%s: %s", t, e) continue g.add_metric([t], value=value) yield g REGISTRY.register(JemallocCollector()) logger.debug("Added jemalloc stats") def setup_jemalloc_stats() -> None: """Try to setup jemalloc stats, if jemalloc is loaded.""" try: _setup_jemalloc_stats() except Exception as e: # This should only happen if we find the loaded jemalloc library, but # fail to load it somehow (e.g. we somehow picked the wrong version). logger.info("Failed to setup collector to record jemalloc stats: %s", e) synapse-1.53.0/synapse/module_api/000077500000000000000000000000001420514467300170705ustar00rootroot00000000000000synapse-1.53.0/synapse/module_api/__init__.py000066400000000000000000001334161420514467300212110ustar00rootroot00000000000000# Copyright 2017 New Vector Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import email.utils import logging from typing import ( TYPE_CHECKING, Any, Callable, Dict, Generator, Iterable, List, Optional, Tuple, TypeVar, Union, ) import attr import jinja2 from twisted.internet import defer from twisted.web.resource import Resource from synapse.api.errors import SynapseError from synapse.events import EventBase from synapse.events.presence_router import ( GET_INTERESTED_USERS_CALLBACK, GET_USERS_FOR_STATES_CALLBACK, PresenceRouter, ) from synapse.events.spamcheck import ( CHECK_EVENT_FOR_SPAM_CALLBACK, CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK, CHECK_REGISTRATION_FOR_SPAM_CALLBACK, CHECK_USERNAME_FOR_SPAM_CALLBACK, USER_MAY_CREATE_ROOM_ALIAS_CALLBACK, USER_MAY_CREATE_ROOM_CALLBACK, USER_MAY_INVITE_CALLBACK, USER_MAY_JOIN_ROOM_CALLBACK, USER_MAY_PUBLISH_ROOM_CALLBACK, USER_MAY_SEND_3PID_INVITE_CALLBACK, ) from synapse.events.third_party_rules import ( CHECK_EVENT_ALLOWED_CALLBACK, CHECK_THREEPID_CAN_BE_INVITED_CALLBACK, CHECK_VISIBILITY_CAN_BE_MODIFIED_CALLBACK, ON_CREATE_ROOM_CALLBACK, ON_NEW_EVENT_CALLBACK, ) from synapse.handlers.account_validity import ( IS_USER_EXPIRED_CALLBACK, ON_LEGACY_ADMIN_REQUEST, ON_LEGACY_RENEW_CALLBACK, ON_LEGACY_SEND_MAIL_CALLBACK, ON_USER_REGISTRATION_CALLBACK, ) from synapse.handlers.auth import ( CHECK_3PID_AUTH_CALLBACK, CHECK_AUTH_CALLBACK, GET_USERNAME_FOR_REGISTRATION_CALLBACK, IS_3PID_ALLOWED_CALLBACK, ON_LOGGED_OUT_CALLBACK, AuthHandler, ) from synapse.http.client import SimpleHttpClient from synapse.http.server import ( DirectServeHtmlResource, DirectServeJsonResource, respond_with_html, ) from synapse.http.servlet import parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.logging.context import ( defer_to_thread, make_deferred_yieldable, run_in_background, ) from synapse.metrics.background_process_metrics import run_as_background_process from synapse.rest.client.login import LoginResponse from synapse.storage import DataStore from synapse.storage.background_updates import ( DEFAULT_BATCH_SIZE_CALLBACK, MIN_BATCH_SIZE_CALLBACK, ON_UPDATE_CALLBACK, ) from synapse.storage.database import DatabasePool, LoggingTransaction from synapse.storage.databases.main.roommember import ProfileInfo from synapse.storage.state import StateFilter from synapse.types import ( DomainSpecificString, JsonDict, Requester, StateMap, UserID, UserInfo, create_requester, ) from synapse.util import Clock from synapse.util.async_helpers import maybe_awaitable from synapse.util.caches.descriptors import cached if TYPE_CHECKING: from synapse.app.generic_worker import GenericWorkerSlavedStore from synapse.server import HomeServer T = TypeVar("T") """ This package defines the 'stable' API which can be used by extension modules which are loaded into Synapse. """ PRESENCE_ALL_USERS = PresenceRouter.ALL_USERS __all__ = [ "errors", "make_deferred_yieldable", "parse_json_object_from_request", "respond_with_html", "run_in_background", "cached", "UserID", "DatabasePool", "LoggingTransaction", "DirectServeHtmlResource", "DirectServeJsonResource", "ModuleApi", "PRESENCE_ALL_USERS", "LoginResponse", "JsonDict", "EventBase", "StateMap", ] logger = logging.getLogger(__name__) @attr.s(auto_attribs=True) class UserIpAndAgent: """ An IP address and user agent used by a user to connect to this homeserver. """ ip: str user_agent: str # The time at which this user agent/ip was last seen. last_seen: int class ModuleApi: """A proxy object that gets passed to various plugin modules so they can register new users etc if necessary. """ def __init__(self, hs: "HomeServer", auth_handler: AuthHandler) -> None: self._hs = hs # TODO: Fix this type hint once the types for the data stores have been ironed # out. self._store: Union[DataStore, "GenericWorkerSlavedStore"] = hs.get_datastore() self._auth = hs.get_auth() self._auth_handler = auth_handler self._server_name = hs.hostname self._presence_stream = hs.get_event_sources().sources.presence self._state = hs.get_state_handler() self._clock: Clock = hs.get_clock() self._registration_handler = hs.get_registration_handler() self._send_email_handler = hs.get_send_email_handler() self.custom_template_dir = hs.config.server.custom_template_directory try: app_name = self._hs.config.email.email_app_name self._from_string = self._hs.config.email.email_notif_from % { "app": app_name } except (KeyError, TypeError): # If substitution failed (which can happen if the string contains # placeholders other than just "app", or if the type of the placeholder is # not a string), fall back to the bare strings. self._from_string = self._hs.config.email.email_notif_from self._raw_from = email.utils.parseaddr(self._from_string)[1] # We expose these as properties below in order to attach a helpful docstring. self._http_client: SimpleHttpClient = hs.get_simple_http_client() self._public_room_list_manager = PublicRoomListManager(hs) self._spam_checker = hs.get_spam_checker() self._account_validity_handler = hs.get_account_validity_handler() self._third_party_event_rules = hs.get_third_party_event_rules() self._password_auth_provider = hs.get_password_auth_provider() self._presence_router = hs.get_presence_router() ################################################################################# # The following methods should only be called during the module's initialisation. def register_spam_checker_callbacks( self, *, check_event_for_spam: Optional[CHECK_EVENT_FOR_SPAM_CALLBACK] = None, user_may_join_room: Optional[USER_MAY_JOIN_ROOM_CALLBACK] = None, user_may_invite: Optional[USER_MAY_INVITE_CALLBACK] = None, user_may_send_3pid_invite: Optional[USER_MAY_SEND_3PID_INVITE_CALLBACK] = None, user_may_create_room: Optional[USER_MAY_CREATE_ROOM_CALLBACK] = None, user_may_create_room_alias: Optional[ USER_MAY_CREATE_ROOM_ALIAS_CALLBACK ] = None, user_may_publish_room: Optional[USER_MAY_PUBLISH_ROOM_CALLBACK] = None, check_username_for_spam: Optional[CHECK_USERNAME_FOR_SPAM_CALLBACK] = None, check_registration_for_spam: Optional[ CHECK_REGISTRATION_FOR_SPAM_CALLBACK ] = None, check_media_file_for_spam: Optional[CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK] = None, ) -> None: """Registers callbacks for spam checking capabilities. Added in Synapse v1.37.0. """ return self._spam_checker.register_callbacks( check_event_for_spam=check_event_for_spam, user_may_join_room=user_may_join_room, user_may_invite=user_may_invite, user_may_send_3pid_invite=user_may_send_3pid_invite, user_may_create_room=user_may_create_room, user_may_create_room_alias=user_may_create_room_alias, user_may_publish_room=user_may_publish_room, check_username_for_spam=check_username_for_spam, check_registration_for_spam=check_registration_for_spam, check_media_file_for_spam=check_media_file_for_spam, ) def register_account_validity_callbacks( self, *, is_user_expired: Optional[IS_USER_EXPIRED_CALLBACK] = None, on_user_registration: Optional[ON_USER_REGISTRATION_CALLBACK] = None, on_legacy_send_mail: Optional[ON_LEGACY_SEND_MAIL_CALLBACK] = None, on_legacy_renew: Optional[ON_LEGACY_RENEW_CALLBACK] = None, on_legacy_admin_request: Optional[ON_LEGACY_ADMIN_REQUEST] = None, ) -> None: """Registers callbacks for account validity capabilities. Added in Synapse v1.39.0. """ return self._account_validity_handler.register_account_validity_callbacks( is_user_expired=is_user_expired, on_user_registration=on_user_registration, on_legacy_send_mail=on_legacy_send_mail, on_legacy_renew=on_legacy_renew, on_legacy_admin_request=on_legacy_admin_request, ) def register_third_party_rules_callbacks( self, *, check_event_allowed: Optional[CHECK_EVENT_ALLOWED_CALLBACK] = None, on_create_room: Optional[ON_CREATE_ROOM_CALLBACK] = None, check_threepid_can_be_invited: Optional[ CHECK_THREEPID_CAN_BE_INVITED_CALLBACK ] = None, check_visibility_can_be_modified: Optional[ CHECK_VISIBILITY_CAN_BE_MODIFIED_CALLBACK ] = None, on_new_event: Optional[ON_NEW_EVENT_CALLBACK] = None, ) -> None: """Registers callbacks for third party event rules capabilities. Added in Synapse v1.39.0. """ return self._third_party_event_rules.register_third_party_rules_callbacks( check_event_allowed=check_event_allowed, on_create_room=on_create_room, check_threepid_can_be_invited=check_threepid_can_be_invited, check_visibility_can_be_modified=check_visibility_can_be_modified, on_new_event=on_new_event, ) def register_presence_router_callbacks( self, *, get_users_for_states: Optional[GET_USERS_FOR_STATES_CALLBACK] = None, get_interested_users: Optional[GET_INTERESTED_USERS_CALLBACK] = None, ) -> None: """Registers callbacks for presence router capabilities. Added in Synapse v1.42.0. """ return self._presence_router.register_presence_router_callbacks( get_users_for_states=get_users_for_states, get_interested_users=get_interested_users, ) def register_password_auth_provider_callbacks( self, *, check_3pid_auth: Optional[CHECK_3PID_AUTH_CALLBACK] = None, on_logged_out: Optional[ON_LOGGED_OUT_CALLBACK] = None, auth_checkers: Optional[ Dict[Tuple[str, Tuple[str, ...]], CHECK_AUTH_CALLBACK] ] = None, is_3pid_allowed: Optional[IS_3PID_ALLOWED_CALLBACK] = None, get_username_for_registration: Optional[ GET_USERNAME_FOR_REGISTRATION_CALLBACK ] = None, ) -> None: """Registers callbacks for password auth provider capabilities. Added in Synapse v1.46.0. """ return self._password_auth_provider.register_password_auth_provider_callbacks( check_3pid_auth=check_3pid_auth, on_logged_out=on_logged_out, is_3pid_allowed=is_3pid_allowed, auth_checkers=auth_checkers, get_username_for_registration=get_username_for_registration, ) def register_background_update_controller_callbacks( self, *, on_update: ON_UPDATE_CALLBACK, default_batch_size: Optional[DEFAULT_BATCH_SIZE_CALLBACK] = None, min_batch_size: Optional[MIN_BATCH_SIZE_CALLBACK] = None, ) -> None: """Registers background update controller callbacks. Added in Synapse v1.49.0. """ for db in self._hs.get_datastores().databases: db.updates.register_update_controller_callbacks( on_update=on_update, default_batch_size=default_batch_size, min_batch_size=min_batch_size, ) def register_web_resource(self, path: str, resource: Resource) -> None: """Registers a web resource to be served at the given path. This function should be called during initialisation of the module. If multiple modules register a resource for the same path, the module that appears the highest in the configuration file takes priority. Added in Synapse v1.37.0. Args: path: The path to register the resource for. resource: The resource to attach to this path. """ self._hs.register_module_web_resource(path, resource) ######################################################################### # The following methods can be called by the module at any point in time. @property def http_client(self) -> SimpleHttpClient: """Allows making outbound HTTP requests to remote resources. An instance of synapse.http.client.SimpleHttpClient Added in Synapse v1.22.0. """ return self._http_client @property def public_room_list_manager(self) -> "PublicRoomListManager": """Allows adding to, removing from and checking the status of rooms in the public room list. An instance of synapse.module_api.PublicRoomListManager Added in Synapse v1.22.0. """ return self._public_room_list_manager @property def public_baseurl(self) -> str: """The configured public base URL for this homeserver. Added in Synapse v1.39.0. """ return self._hs.config.server.public_baseurl @property def email_app_name(self) -> str: """The application name configured in the homeserver's configuration. Added in Synapse v1.39.0. """ return self._hs.config.email.email_app_name @property def server_name(self) -> str: """The server name for the local homeserver. Added in Synapse v1.53.0. """ return self._server_name @property def worker_name(self) -> Optional[str]: """The name of the worker this specific instance is running as per the "worker_name" configuration setting, or None if it's the main process. Added in Synapse v1.53.0. """ return self._hs.config.worker.worker_name @property def worker_app(self) -> Optional[str]: """The name of the worker app this specific instance is running as per the "worker_app" configuration setting, or None if it's the main process. Added in Synapse v1.53.0. """ return self._hs.config.worker.worker_app async def get_userinfo_by_id(self, user_id: str) -> Optional[UserInfo]: """Get user info by user_id Added in Synapse v1.41.0. Args: user_id: Fully qualified user id. Returns: UserInfo object if a user was found, otherwise None """ return await self._store.get_userinfo_by_id(user_id) async def get_user_by_req( self, req: SynapseRequest, allow_guest: bool = False, allow_expired: bool = False, ) -> Requester: """Check the access_token provided for a request Added in Synapse v1.39.0. Args: req: Incoming HTTP request allow_guest: True if guest users should be allowed. If this is False, and the access token is for a guest user, an AuthError will be thrown allow_expired: True if expired users should be allowed. If this is False, and the access token is for an expired user, an AuthError will be thrown Returns: The requester for this request Raises: InvalidClientCredentialsError: if no user by that token exists, or the token is invalid. """ return await self._auth.get_user_by_req( req, allow_guest, allow_expired=allow_expired, ) async def is_user_admin(self, user_id: str) -> bool: """Checks if a user is a server admin. Added in Synapse v1.39.0. Args: user_id: The Matrix ID of the user to check. Returns: True if the user is a server admin, False otherwise. """ return await self._store.is_server_admin(UserID.from_string(user_id)) def get_qualified_user_id(self, username: str) -> str: """Qualify a user id, if necessary Takes a user id provided by the user and adds the @ and :domain to qualify it, if necessary Added in Synapse v0.25.0. Args: username: provided user id Returns: qualified @user:id """ if username.startswith("@"): return username return UserID(username, self._hs.hostname).to_string() async def get_profile_for_user(self, localpart: str) -> ProfileInfo: """Look up the profile info for the user with the given localpart. Added in Synapse v1.39.0. Args: localpart: The localpart to look up profile information for. Returns: The profile information (i.e. display name and avatar URL). """ return await self._store.get_profileinfo(localpart) async def get_threepids_for_user(self, user_id: str) -> List[Dict[str, str]]: """Look up the threepids (email addresses and phone numbers) associated with the given Matrix user ID. Added in Synapse v1.39.0. Args: user_id: The Matrix user ID to look up threepids for. Returns: A list of threepids, each threepid being represented by a dictionary containing a "medium" key which value is "email" for email addresses and "msisdn" for phone numbers, and an "address" key which value is the threepid's address. """ return await self._store.user_get_threepids(user_id) def check_user_exists(self, user_id: str) -> "defer.Deferred[Optional[str]]": """Check if user exists. Added in Synapse v0.25.0. Args: user_id: Complete @user:id Returns: Canonical (case-corrected) user_id, or None if the user is not registered. """ return defer.ensureDeferred(self._auth_handler.check_user_exists(user_id)) @defer.inlineCallbacks def register( self, localpart: str, displayname: Optional[str] = None, emails: Optional[List[str]] = None, ) -> Generator["defer.Deferred[Any]", Any, Tuple[str, str]]: """Registers a new user with given localpart and optional displayname, emails. Also returns an access token for the new user. Deprecated: avoid this, as it generates a new device with no way to return that device to the user. Prefer separate calls to register_user and register_device. Added in Synapse v0.25.0. Args: localpart: The localpart of the new user. displayname: The displayname of the new user. emails: Emails to bind to the new user. Returns: a 2-tuple of (user_id, access_token) """ logger.warning( "Using deprecated ModuleApi.register which creates a dummy user device." ) user_id = yield self.register_user(localpart, displayname, emails or []) _, access_token, _, _ = yield self.register_device(user_id) return user_id, access_token def register_user( self, localpart: str, displayname: Optional[str] = None, emails: Optional[List[str]] = None, ) -> "defer.Deferred[str]": """Registers a new user with given localpart and optional displayname, emails. Added in Synapse v1.2.0. Args: localpart: The localpart of the new user. displayname: The displayname of the new user. emails: Emails to bind to the new user. Raises: SynapseError if there is an error performing the registration. Check the 'errcode' property for more information on the reason for failure Returns: user_id """ return defer.ensureDeferred( self._hs.get_registration_handler().register_user( localpart=localpart, default_display_name=displayname, bind_emails=emails or [], ) ) def register_device( self, user_id: str, device_id: Optional[str] = None, initial_display_name: Optional[str] = None, ) -> "defer.Deferred[Tuple[str, str, Optional[int], Optional[str]]]": """Register a device for a user and generate an access token. Added in Synapse v1.2.0. Args: user_id: full canonical @user:id device_id: The device ID to check, or None to generate a new one. initial_display_name: An optional display name for the device. Returns: Tuple of device ID, access token, access token expiration time and refresh token """ return defer.ensureDeferred( self._hs.get_registration_handler().register_device( user_id=user_id, device_id=device_id, initial_display_name=initial_display_name, ) ) def record_user_external_id( self, auth_provider_id: str, remote_user_id: str, registered_user_id: str ) -> defer.Deferred: """Record a mapping from an external user id to a mxid Added in Synapse v1.9.0. Args: auth_provider: identifier for the remote auth provider external_id: id on that system user_id: complete mxid that it is mapped to """ return defer.ensureDeferred( self._store.record_user_external_id( auth_provider_id, remote_user_id, registered_user_id ) ) def generate_short_term_login_token( self, user_id: str, duration_in_ms: int = (2 * 60 * 1000), auth_provider_id: str = "", auth_provider_session_id: Optional[str] = None, ) -> str: """Generate a login token suitable for m.login.token authentication Added in Synapse v1.9.0. Args: user_id: gives the ID of the user that the token is for duration_in_ms: the time that the token will be valid for auth_provider_id: the ID of the SSO IdP that the user used to authenticate to get this token, if any. This is encoded in the token so that /login can report stats on number of successful logins by IdP. """ return self._hs.get_macaroon_generator().generate_short_term_login_token( user_id, auth_provider_id, auth_provider_session_id, duration_in_ms, ) @defer.inlineCallbacks def invalidate_access_token( self, access_token: str ) -> Generator["defer.Deferred[Any]", Any, None]: """Invalidate an access token for a user Added in Synapse v0.25.0. Args: access_token(str): access token Returns: twisted.internet.defer.Deferred - resolves once the access token has been removed. Raises: synapse.api.errors.AuthError: the access token is invalid """ # see if the access token corresponds to a device user_info = yield defer.ensureDeferred( self._auth.get_user_by_access_token(access_token) ) device_id = user_info.get("device_id") user_id = user_info["user"].to_string() if device_id: # delete the device, which will also delete its access tokens yield defer.ensureDeferred( self._hs.get_device_handler().delete_device(user_id, device_id) ) else: # no associated device. Just delete the access token. yield defer.ensureDeferred( self._auth_handler.delete_access_token(access_token) ) def run_db_interaction( self, desc: str, func: Callable[..., T], *args: Any, **kwargs: Any, ) -> "defer.Deferred[T]": """Run a function with a database connection Added in Synapse v0.25.0. Args: desc: description for the transaction, for metrics etc func: function to be run. Passed a database cursor object as well as *args and **kwargs *args: positional args to be passed to func **kwargs: named args to be passed to func Returns: Deferred[object]: result of func """ return defer.ensureDeferred( self._store.db_pool.runInteraction(desc, func, *args, **kwargs) ) def complete_sso_login( self, registered_user_id: str, request: SynapseRequest, client_redirect_url: str ) -> None: """Complete a SSO login by redirecting the user to a page to confirm whether they want their access token sent to `client_redirect_url`, or redirect them to that URL with a token directly if the URL matches with one of the whitelisted clients. This is deprecated in favor of complete_sso_login_async. Added in Synapse v1.11.1. Args: registered_user_id: The MXID that has been registered as a previous step of of this SSO login. request: The request to respond to. client_redirect_url: The URL to which to offer to redirect the user (or to redirect them directly if whitelisted). """ self._auth_handler._complete_sso_login( registered_user_id, "", request, client_redirect_url, ) async def complete_sso_login_async( self, registered_user_id: str, request: SynapseRequest, client_redirect_url: str, new_user: bool = False, auth_provider_id: str = "", ) -> None: """Complete a SSO login by redirecting the user to a page to confirm whether they want their access token sent to `client_redirect_url`, or redirect them to that URL with a token directly if the URL matches with one of the whitelisted clients. Added in Synapse v1.13.0. Args: registered_user_id: The MXID that has been registered as a previous step of of this SSO login. request: The request to respond to. client_redirect_url: The URL to which to offer to redirect the user (or to redirect them directly if whitelisted). new_user: set to true to use wording for the consent appropriate to a user who has just registered. auth_provider_id: the ID of the SSO IdP which was used to log in. This is used to track counts of sucessful logins by IdP. """ await self._auth_handler.complete_sso_login( registered_user_id, auth_provider_id, request, client_redirect_url, new_user=new_user, ) @defer.inlineCallbacks def get_state_events_in_room( self, room_id: str, types: Iterable[Tuple[str, Optional[str]]] ) -> Generator[defer.Deferred, Any, Iterable[EventBase]]: """Gets current state events for the given room. (This is exposed for compatibility with the old SpamCheckerApi. We should probably deprecate it and replace it with an async method in a subclass.) Added in Synapse v1.22.0. Args: room_id: The room ID to get state events in. types: The event type and state key (using None to represent 'any') of the room state to acquire. Returns: twisted.internet.defer.Deferred[list(synapse.events.FrozenEvent)]: The filtered state events in the room. """ state_ids = yield defer.ensureDeferred( self._store.get_filtered_current_state_ids( room_id=room_id, state_filter=StateFilter.from_types(types) ) ) state = yield defer.ensureDeferred(self._store.get_events(state_ids.values())) return state.values() async def update_room_membership( self, sender: str, target: str, room_id: str, new_membership: str, content: Optional[JsonDict] = None, ) -> EventBase: """Updates the membership of a user to the given value. Added in Synapse v1.46.0. Args: sender: The user performing the membership change. Must be a user local to this homeserver. target: The user whose membership is changing. This is often the same value as `sender`, but it might differ in some cases (e.g. when kicking a user, the `sender` is the user performing the kick and the `target` is the user being kicked). room_id: The room in which to change the membership. new_membership: The new membership state of `target` after this operation. See https://spec.matrix.org/unstable/client-server-api/#mroommember for the list of allowed values. content: Additional values to include in the resulting event's content. Returns: The newly created membership event. Raises: RuntimeError if the `sender` isn't a local user. ShadowBanError if a shadow-banned requester attempts to send an invite. SynapseError if the module attempts to send a membership event that isn't allowed, either by the server's configuration (e.g. trying to set a per-room display name that's too long) or by the validation rules around membership updates (e.g. the `membership` value is invalid). """ if not self.is_mine(sender): raise RuntimeError( "Tried to send an event as a user that isn't local to this homeserver", ) requester = create_requester(sender) target_user_id = UserID.from_string(target) if content is None: content = {} # Set the profile if not already done by the module. if "avatar_url" not in content or "displayname" not in content: try: # Try to fetch the user's profile. profile = await self._hs.get_profile_handler().get_profile( target_user_id.to_string(), ) except SynapseError as e: # If the profile couldn't be found, use default values. profile = { "displayname": target_user_id.localpart, "avatar_url": None, } if e.code != 404: # If the error isn't 404, it means we tried to fetch the profile over # federation but the remote server responded with a non-standard # status code. logger.error( "Got non-404 error status when fetching profile for %s", target_user_id.to_string(), ) # Set the profile where it needs to be set. if "avatar_url" not in content: content["avatar_url"] = profile["avatar_url"] if "displayname" not in content: content["displayname"] = profile["displayname"] event_id, _ = await self._hs.get_room_member_handler().update_membership( requester=requester, target=target_user_id, room_id=room_id, action=new_membership, content=content, ) # Try to retrieve the resulting event. event = await self._hs.get_datastore().get_event(event_id) # update_membership is supposed to always return after the event has been # successfully persisted. assert event is not None return event async def create_and_send_event_into_room(self, event_dict: JsonDict) -> EventBase: """Create and send an event into a room. Membership events are not supported by this method. To update a user's membership in a room, please use the `update_room_membership` method instead. Added in Synapse v1.22.0. Args: event_dict: A dictionary representing the event to send. Required keys are `type`, `room_id`, `sender` and `content`. Returns: The event that was sent. If state event deduplication happened, then the previous, duplicate event instead. Raises: SynapseError if the event was not allowed. """ # Create a requester object requester = create_requester( event_dict["sender"], authenticated_entity=self._server_name ) # Create and send the event ( event, _, ) = await self._hs.get_event_creation_handler().create_and_send_nonmember_event( requester, event_dict, ratelimit=False, ignore_shadow_ban=True, ) return event async def send_local_online_presence_to(self, users: Iterable[str]) -> None: """ Forces the equivalent of a presence initial_sync for a set of local or remote users. The users will receive presence for all currently online users that they are considered interested in. Updates to remote users will be sent immediately, whereas local users will receive them on their next sync attempt. Note that this method can only be run on the process that is configured to write to the presence stream. By default this is the main process. Added in Synapse v1.32.0. """ if self._hs._instance_name not in self._hs.config.worker.writers.presence: raise Exception( "send_local_online_presence_to can only be run " "on the process that is configured to write to the " "presence stream (by default this is the main process)", ) local_users = set() remote_users = set() for user in users: if self._hs.is_mine_id(user): local_users.add(user) else: remote_users.add(user) # We pull out the presence handler here to break a cyclic # dependency between the presence router and module API. presence_handler = self._hs.get_presence_handler() if local_users: # Force a presence initial_sync for these users next time they sync. await presence_handler.send_full_presence_to_users(local_users) for user in remote_users: # Retrieve presence state for currently online users that this user # is considered interested in. presence_events, _ = await self._presence_stream.get_new_events( UserID.from_string(user), from_key=None, include_offline=False ) # Send to remote destinations. destination = UserID.from_string(user).domain presence_handler.get_federation_queue().send_presence_to_destinations( presence_events, destination ) def looping_background_call( self, f: Callable, msec: float, *args: object, desc: Optional[str] = None, run_on_all_instances: bool = False, **kwargs: object, ) -> None: """Wraps a function as a background process and calls it repeatedly. NOTE: Will only run on the instance that is configured to run background processes (which is the main process by default), unless `run_on_all_workers` is set. Waits `msec` initially before calling `f` for the first time. Added in Synapse v1.39.0. Args: f: The function to call repeatedly. f can be either synchronous or asynchronous, and must follow Synapse's logcontext rules. More info about logcontexts is available at https://matrix-org.github.io/synapse/latest/log_contexts.html msec: How long to wait between calls in milliseconds. *args: Positional arguments to pass to function. desc: The background task's description. Default to the function's name. run_on_all_instances: Whether to run this on all instances, rather than just the instance configured to run background tasks. **kwargs: Key arguments to pass to function. """ if desc is None: desc = f.__name__ if self._hs.config.worker.run_background_tasks or run_on_all_instances: self._clock.looping_call( run_as_background_process, msec, desc, lambda: maybe_awaitable(f(*args, **kwargs)), ) else: logger.warning( "Not running looping call %s as the configuration forbids it", f, ) async def sleep(self, seconds: float) -> None: """Sleeps for the given number of seconds.""" await self._clock.sleep(seconds) async def send_mail( self, recipient: str, subject: str, html: str, text: str, ) -> None: """Send an email on behalf of the homeserver. Added in Synapse v1.39.0. Args: recipient: The email address for the recipient. subject: The email's subject. html: The email's HTML content. text: The email's text content. """ await self._send_email_handler.send_email( email_address=recipient, subject=subject, app_name=self.email_app_name, html=html, text=text, ) def read_templates( self, filenames: List[str], custom_template_directory: Optional[str] = None, ) -> List[jinja2.Template]: """Read and load the content of the template files at the given location. By default, Synapse will look for these templates in its configured template directory, but another directory to search in can be provided. Added in Synapse v1.39.0. Args: filenames: The name of the template files to look for. custom_template_directory: An additional directory to look for the files in. Returns: A list containing the loaded templates, with the orders matching the one of the filenames parameter. """ return self._hs.config.server.read_templates( filenames, (td for td in (self.custom_template_dir, custom_template_directory) if td), ) def is_mine(self, id: Union[str, DomainSpecificString]) -> bool: """ Checks whether an ID (user id, room, ...) comes from this homeserver. Added in Synapse v1.44.0. Args: id: any Matrix id (e.g. user id, room id, ...), either as a raw id, e.g. string "@user:example.com" or as a parsed UserID, RoomID, ... Returns: True if id comes from this homeserver, False otherwise. """ if isinstance(id, DomainSpecificString): return self._hs.is_mine(id) else: return self._hs.is_mine_id(id) async def get_user_ip_and_agents( self, user_id: str, since_ts: int = 0 ) -> List[UserIpAndAgent]: """ Return the list of user IPs and agents for a user. Added in Synapse v1.44.0. Args: user_id: the id of a user, local or remote since_ts: a timestamp in seconds since the epoch, or the epoch itself if not specified. Returns: The list of all UserIpAndAgent that the user has used to connect to this homeserver since `since_ts`. If the user is remote, this list is empty. """ # Don't hit the db if this is not a local user. is_mine = False try: # Let's be defensive against ill-formed strings. if self.is_mine(user_id): is_mine = True except Exception: pass if is_mine: raw_data = await self._store.get_user_ip_and_agents( UserID.from_string(user_id), since_ts ) # Sanitize some of the data. We don't want to return tokens. return [ UserIpAndAgent( ip=data["ip"], user_agent=data["user_agent"], last_seen=data["last_seen"], ) for data in raw_data ] else: return [] async def get_room_state( self, room_id: str, event_filter: Optional[Iterable[Tuple[str, Optional[str]]]] = None, ) -> StateMap[EventBase]: """Returns the current state of the given room. The events are returned as a mapping, in which the key for each event is a tuple which first element is the event's type and the second one is its state key. Added in Synapse v1.47.0 Args: room_id: The ID of the room to get state from. event_filter: A filter to apply when retrieving events. None if no filter should be applied. If provided, must be an iterable of tuples. A tuple's first element is the event type and the second is the state key, or is None if the state key should not be filtered on. An example of a filter is: [ ("m.room.member", "@alice:example.com"), # Member event for @alice:example.com ("org.matrix.some_event", ""), # State event of type "org.matrix.some_event" # with an empty string as its state key ("org.matrix.some_other_event", None), # State events of type "org.matrix.some_other_event" # regardless of their state key ] """ if event_filter: # If a filter was provided, turn it into a StateFilter and retrieve a filtered # view of the state. state_filter = StateFilter.from_types(event_filter) state_ids = await self._store.get_filtered_current_state_ids( room_id, state_filter, ) else: # If no filter was provided, get the whole state. We could also reuse the call # to get_filtered_current_state_ids above, with `state_filter = StateFilter.all()`, # but get_filtered_current_state_ids isn't cached and `get_current_state_ids` # is, so using the latter when we can is better for perf. state_ids = await self._store.get_current_state_ids(room_id) state_events = await self._store.get_events(state_ids.values()) return {key: state_events[event_id] for key, event_id in state_ids.items()} async def defer_to_thread( self, f: Callable[..., T], *args: Any, **kwargs: Any, ) -> T: """Runs the given function in a separate thread from Synapse's thread pool. Added in Synapse v1.49.0. Args: f: The function to run. args: The function's arguments. kwargs: The function's keyword arguments. Returns: The return value of the function once ran in a thread. """ return await defer_to_thread(self._hs.get_reactor(), f, *args, **kwargs) async def check_username(self, username: str) -> None: """Checks if the provided username uses the grammar defined in the Matrix specification, and is already being used by an existing user. Added in Synapse v1.52.0. Args: username: The username to check. This is the local part of the user's full Matrix user ID, i.e. it's "alice" if the full user ID is "@alice:foo.com". Raises: SynapseError with the errcode "M_USER_IN_USE" if the username is already in use. """ await self._registration_handler.check_username(username) class PublicRoomListManager: """Contains methods for adding to, removing from and querying whether a room is in the public room list. """ def __init__(self, hs: "HomeServer"): self._store = hs.get_datastore() async def room_is_in_public_room_list(self, room_id: str) -> bool: """Checks whether a room is in the public room list. Added in Synapse v1.22.0. Args: room_id: The ID of the room. Returns: Whether the room is in the public room list. Returns False if the room does not exist. """ room = await self._store.get_room(room_id) if not room: return False return room.get("is_public", False) async def add_room_to_public_room_list(self, room_id: str) -> None: """Publishes a room to the public room list. Added in Synapse v1.22.0. Args: room_id: The ID of the room. """ await self._store.set_room_is_public(room_id, True) async def remove_room_from_public_room_list(self, room_id: str) -> None: """Removes a room from the public room list. Added in Synapse v1.22.0. Args: room_id: The ID of the room. """ await self._store.set_room_is_public(room_id, False) synapse-1.53.0/synapse/module_api/errors.py000066400000000000000000000016571420514467300207670ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Exception types which are exposed as part of the stable module API""" from synapse.api.errors import ( InvalidClientCredentialsError, RedirectException, SynapseError, ) from synapse.config._base import ConfigError __all__ = [ "InvalidClientCredentialsError", "RedirectException", "SynapseError", "ConfigError", ] synapse-1.53.0/synapse/notifier.py000066400000000000000000000637311420514467300171550ustar00rootroot00000000000000# Copyright 2014 - 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import ( TYPE_CHECKING, Awaitable, Callable, Collection, Dict, Iterable, List, Optional, Set, Tuple, TypeVar, Union, ) import attr from prometheus_client import Counter from twisted.internet import defer from synapse.api.constants import EventTypes, HistoryVisibility, Membership from synapse.api.errors import AuthError from synapse.events import EventBase from synapse.handlers.presence import format_user_presence_state from synapse.logging import issue9533_logger from synapse.logging.context import PreserveLoggingContext from synapse.logging.opentracing import log_kv, start_active_span from synapse.metrics import LaterGauge from synapse.streams.config import PaginationConfig from synapse.types import ( JsonDict, PersistedEventPosition, RoomStreamToken, StreamToken, UserID, ) from synapse.util.async_helpers import ObservableDeferred, timeout_deferred from synapse.util.metrics import Measure from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) notified_events_counter = Counter("synapse_notifier_notified_events", "") users_woken_by_stream_counter = Counter( "synapse_notifier_users_woken_by_stream", "", ["stream"] ) T = TypeVar("T") # TODO(paul): Should be shared somewhere def count(func: Callable[[T], bool], it: Iterable[T]) -> int: """Return the number of items in it for which func returns true.""" n = 0 for x in it: if func(x): n += 1 return n class _NotificationListener: """This represents a single client connection to the events stream. The events stream handler will have yielded to the deferred, so to notify the handler it is sufficient to resolve the deferred. """ __slots__ = ["deferred"] def __init__(self, deferred: "defer.Deferred"): self.deferred = deferred class _NotifierUserStream: """This represents a user connected to the event stream. It tracks the most recent stream token for that user. At a given point a user may have a number of streams listening for events. This listener will also keep track of which rooms it is listening in so that it can remove itself from the indexes in the Notifier class. """ def __init__( self, user_id: str, rooms: Collection[str], current_token: StreamToken, time_now_ms: int, ): self.user_id = user_id self.rooms = set(rooms) self.current_token = current_token # The last token for which we should wake up any streams that have a # token that comes before it. This gets updated every time we get poked. # We start it at the current token since if we get any streams # that have a token from before we have no idea whether they should be # woken up or not, so lets just wake them up. self.last_notified_token = current_token self.last_notified_ms = time_now_ms self.notify_deferred: ObservableDeferred[StreamToken] = ObservableDeferred( defer.Deferred() ) def notify( self, stream_key: str, stream_id: Union[int, RoomStreamToken], time_now_ms: int, ) -> None: """Notify any listeners for this user of a new event from an event source. Args: stream_key: The stream the event came from. stream_id: The new id for the stream the event came from. time_now_ms: The current time in milliseconds. """ self.current_token = self.current_token.copy_and_advance(stream_key, stream_id) self.last_notified_token = self.current_token self.last_notified_ms = time_now_ms noify_deferred = self.notify_deferred log_kv( { "notify": self.user_id, "stream": stream_key, "stream_id": stream_id, "listeners": self.count_listeners(), } ) users_woken_by_stream_counter.labels(stream_key).inc() with PreserveLoggingContext(): self.notify_deferred = ObservableDeferred(defer.Deferred()) noify_deferred.callback(self.current_token) def remove(self, notifier: "Notifier") -> None: """Remove this listener from all the indexes in the Notifier it knows about. """ for room in self.rooms: lst = notifier.room_to_user_streams.get(room, set()) lst.discard(self) notifier.user_to_user_stream.pop(self.user_id) def count_listeners(self) -> int: return len(self.notify_deferred.observers()) def new_listener(self, token: StreamToken) -> _NotificationListener: """Returns a deferred that is resolved when there is a new token greater than the given token. Args: token: The token from which we are streaming from, i.e. we shouldn't notify for things that happened before this. """ # Immediately wake up stream if something has already since happened # since their last token. if self.last_notified_token != token: return _NotificationListener(defer.succeed(self.current_token)) else: return _NotificationListener(self.notify_deferred.observe()) @attr.s(slots=True, frozen=True, auto_attribs=True) class EventStreamResult: events: List[Union[JsonDict, EventBase]] start_token: StreamToken end_token: StreamToken def __bool__(self) -> bool: return bool(self.events) @attr.s(slots=True, frozen=True, auto_attribs=True) class _PendingRoomEventEntry: event_pos: PersistedEventPosition extra_users: Collection[UserID] room_id: str type: str state_key: Optional[str] membership: Optional[str] class Notifier: """This class is responsible for notifying any listeners when there are new events available for it. Primarily used from the /events stream. """ UNUSED_STREAM_EXPIRY_MS = 10 * 60 * 1000 def __init__(self, hs: "HomeServer"): self.user_to_user_stream: Dict[str, _NotifierUserStream] = {} self.room_to_user_streams: Dict[str, Set[_NotifierUserStream]] = {} self.hs = hs self.storage = hs.get_storage() self.event_sources = hs.get_event_sources() self.store = hs.get_datastore() self.pending_new_room_events: List[_PendingRoomEventEntry] = [] # Called when there are new things to stream over replication self.replication_callbacks: List[Callable[[], None]] = [] # Called when remote servers have come back online after having been # down. self.remote_server_up_callbacks: List[Callable[[str], None]] = [] self._third_party_rules = hs.get_third_party_event_rules() self.clock = hs.get_clock() self.appservice_handler = hs.get_application_service_handler() self._pusher_pool = hs.get_pusherpool() self.federation_sender = None if hs.should_send_federation(): self.federation_sender = hs.get_federation_sender() self.state_handler = hs.get_state_handler() self.clock.looping_call( self.remove_expired_streams, self.UNUSED_STREAM_EXPIRY_MS ) # This is not a very cheap test to perform, but it's only executed # when rendering the metrics page, which is likely once per minute at # most when scraping it. def count_listeners() -> int: all_user_streams: Set[_NotifierUserStream] = set() for streams in list(self.room_to_user_streams.values()): all_user_streams |= streams for stream in list(self.user_to_user_stream.values()): all_user_streams.add(stream) return sum(stream.count_listeners() for stream in all_user_streams) LaterGauge("synapse_notifier_listeners", "", [], count_listeners) LaterGauge( "synapse_notifier_rooms", "", [], lambda: count(bool, list(self.room_to_user_streams.values())), ) LaterGauge( "synapse_notifier_users", "", [], lambda: len(self.user_to_user_stream) ) def add_replication_callback(self, cb: Callable[[], None]) -> None: """Add a callback that will be called when some new data is available. Callback is not given any arguments. It should *not* return a Deferred - if it needs to do any asynchronous work, a background thread should be started and wrapped with run_as_background_process. """ self.replication_callbacks.append(cb) async def on_new_room_event( self, event: EventBase, event_pos: PersistedEventPosition, max_room_stream_token: RoomStreamToken, extra_users: Optional[Collection[UserID]] = None, ) -> None: """Unwraps event and calls `on_new_room_event_args`.""" await self.on_new_room_event_args( event_pos=event_pos, room_id=event.room_id, event_id=event.event_id, event_type=event.type, state_key=event.get("state_key"), membership=event.content.get("membership"), max_room_stream_token=max_room_stream_token, extra_users=extra_users or [], ) async def on_new_room_event_args( self, room_id: str, event_id: str, event_type: str, state_key: Optional[str], membership: Optional[str], event_pos: PersistedEventPosition, max_room_stream_token: RoomStreamToken, extra_users: Optional[Collection[UserID]] = None, ) -> None: """Used by handlers to inform the notifier something has happened in the room, room event wise. This triggers the notifier to wake up any listeners that are listening to the room, and any listeners for the users in the `extra_users` param. This also notifies modules listening on new events via the `on_new_event` callback. The events can be persisted out of order. The notifier will wait until all previous events have been persisted before notifying the client streams. """ self.pending_new_room_events.append( _PendingRoomEventEntry( event_pos=event_pos, extra_users=extra_users or [], room_id=room_id, type=event_type, state_key=state_key, membership=membership, ) ) self._notify_pending_new_room_events(max_room_stream_token) await self._third_party_rules.on_new_event(event_id) self.notify_replication() def _notify_pending_new_room_events( self, max_room_stream_token: RoomStreamToken ) -> None: """Notify for the room events that were queued waiting for a previous event to be persisted. Args: max_room_stream_token: The highest stream_id below which all events have been persisted. """ pending = self.pending_new_room_events self.pending_new_room_events = [] users: Set[UserID] = set() rooms: Set[str] = set() for entry in pending: if entry.event_pos.persisted_after(max_room_stream_token): self.pending_new_room_events.append(entry) else: if ( entry.type == EventTypes.Member and entry.membership == Membership.JOIN and entry.state_key ): self._user_joined_room(entry.state_key, entry.room_id) users.update(entry.extra_users) rooms.add(entry.room_id) if users or rooms: self.on_new_event( "room_key", max_room_stream_token, users=users, rooms=rooms, ) self._on_updated_room_token(max_room_stream_token) def _on_updated_room_token(self, max_room_stream_token: RoomStreamToken) -> None: """Poke services that might care that the room position has been updated. """ # poke any interested application service. self._notify_app_services(max_room_stream_token) self._notify_pusher_pool(max_room_stream_token) if self.federation_sender: self.federation_sender.notify_new_events(max_room_stream_token) def _notify_app_services(self, max_room_stream_token: RoomStreamToken) -> None: try: self.appservice_handler.notify_interested_services(max_room_stream_token) except Exception: logger.exception("Error notifying application services of event") def _notify_pusher_pool(self, max_room_stream_token: RoomStreamToken) -> None: try: self._pusher_pool.on_new_notifications(max_room_stream_token) except Exception: logger.exception("Error pusher pool of event") def on_new_event( self, stream_key: str, new_token: Union[int, RoomStreamToken], users: Optional[Collection[Union[str, UserID]]] = None, rooms: Optional[Collection[str]] = None, ) -> None: """Used to inform listeners that something has happened event wise. Will wake up all listeners for the given users and rooms. Args: stream_key: The stream the event came from. new_token: The value of the new stream token. users: The users that should be informed of the new event. rooms: A collection of room IDs for which each joined member will be informed of the new event. """ users = users or [] rooms = rooms or [] with Measure(self.clock, "on_new_event"): user_streams = set() log_kv( { "waking_up_explicit_users": len(users), "waking_up_explicit_rooms": len(rooms), } ) for user in users: user_stream = self.user_to_user_stream.get(str(user)) if user_stream is not None: user_streams.add(user_stream) for room in rooms: user_streams |= self.room_to_user_streams.get(room, set()) if stream_key == "to_device_key": issue9533_logger.debug( "to-device messages stream id %s, awaking streams for %s", new_token, users, ) time_now_ms = self.clock.time_msec() for user_stream in user_streams: try: user_stream.notify(stream_key, new_token, time_now_ms) except Exception: logger.exception("Failed to notify listener") self.notify_replication() # Notify appservices. try: self.appservice_handler.notify_interested_services_ephemeral( stream_key, new_token, users, ) except Exception: logger.exception( "Error notifying application services of ephemeral events" ) def on_new_replication_data(self) -> None: """Used to inform replication listeners that something has happened without waking up any of the normal user event streams""" self.notify_replication() async def wait_for_events( self, user_id: str, timeout: int, callback: Callable[[StreamToken, StreamToken], Awaitable[T]], room_ids: Optional[Collection[str]] = None, from_token: StreamToken = StreamToken.START, ) -> T: """Wait until the callback returns a non empty response or the timeout fires. """ user_stream = self.user_to_user_stream.get(user_id) if user_stream is None: current_token = self.event_sources.get_current_token() if room_ids is None: room_ids = await self.store.get_rooms_for_user(user_id) user_stream = _NotifierUserStream( user_id=user_id, rooms=room_ids, current_token=current_token, time_now_ms=self.clock.time_msec(), ) self._register_with_keys(user_stream) result = None prev_token = from_token if timeout: end_time = self.clock.time_msec() + timeout while not result: with start_active_span("wait_for_events"): try: now = self.clock.time_msec() if end_time <= now: break # Now we wait for the _NotifierUserStream to be told there # is a new token. listener = user_stream.new_listener(prev_token) listener.deferred = timeout_deferred( listener.deferred, (end_time - now) / 1000.0, self.hs.get_reactor(), ) log_kv( { "wait_for_events": "sleep", "token": prev_token, } ) with PreserveLoggingContext(): await listener.deferred log_kv( { "wait_for_events": "woken", "token": user_stream.current_token, } ) current_token = user_stream.current_token result = await callback(prev_token, current_token) log_kv( { "wait_for_events": "result", "result": bool(result), } ) if result: break # Update the prev_token to the current_token since nothing # has happened between the old prev_token and the current_token prev_token = current_token except defer.TimeoutError: log_kv({"wait_for_events": "timeout"}) break except defer.CancelledError: log_kv({"wait_for_events": "cancelled"}) break if result is None: # This happened if there was no timeout or if the timeout had # already expired. current_token = user_stream.current_token result = await callback(prev_token, current_token) return result async def get_events_for( self, user: UserID, pagination_config: PaginationConfig, timeout: int, is_guest: bool = False, explicit_room_id: Optional[str] = None, ) -> EventStreamResult: """For the given user and rooms, return any new events for them. If there are no new events wait for up to `timeout` milliseconds for any new events to happen before returning. If explicit_room_id is not set, the user's joined rooms will be polled for events. If explicit_room_id is set, that room will be polled for events only if it is world readable or the user has joined the room. """ if pagination_config.from_token: from_token = pagination_config.from_token else: from_token = self.event_sources.get_current_token() limit = pagination_config.limit room_ids, is_joined = await self._get_room_ids(user, explicit_room_id) is_peeking = not is_joined async def check_for_updates( before_token: StreamToken, after_token: StreamToken ) -> EventStreamResult: if after_token == before_token: return EventStreamResult([], from_token, from_token) # The events fetched from each source are a JsonDict, EventBase, or # UserPresenceState, but see below for UserPresenceState being # converted to JsonDict. events: List[Union[JsonDict, EventBase]] = [] end_token = from_token for name, source in self.event_sources.sources.get_sources(): keyname = "%s_key" % name before_id = getattr(before_token, keyname) after_id = getattr(after_token, keyname) if before_id == after_id: continue new_events, new_key = await source.get_new_events( user=user, from_key=getattr(from_token, keyname), limit=limit, is_guest=is_peeking, room_ids=room_ids, explicit_room_id=explicit_room_id, ) if name == "room": new_events = await filter_events_for_client( self.storage, user.to_string(), new_events, is_peeking=is_peeking, ) elif name == "presence": now = self.clock.time_msec() new_events[:] = [ { "type": "m.presence", "content": format_user_presence_state(event, now), } for event in new_events ] events.extend(new_events) end_token = end_token.copy_and_replace(keyname, new_key) return EventStreamResult(events, from_token, end_token) user_id_for_stream = user.to_string() if is_peeking: # Internally, the notifier keeps an event stream per user_id. # This is used by both /sync and /events. # We want /events to be used for peeking independently of /sync, # without polluting its contents. So we invent an illegal user ID # (which thus cannot clash with any real users) for keying peeking # over /events. # # I am sorry for what I have done. user_id_for_stream = "_PEEKING_%s_%s" % ( explicit_room_id, user_id_for_stream, ) result = await self.wait_for_events( user_id_for_stream, timeout, check_for_updates, room_ids=room_ids, from_token=from_token, ) return result async def _get_room_ids( self, user: UserID, explicit_room_id: Optional[str] ) -> Tuple[Collection[str], bool]: joined_room_ids = await self.store.get_rooms_for_user(user.to_string()) if explicit_room_id: if explicit_room_id in joined_room_ids: return [explicit_room_id], True if await self._is_world_readable(explicit_room_id): return [explicit_room_id], False raise AuthError(403, "Non-joined access not allowed") return joined_room_ids, True async def _is_world_readable(self, room_id: str) -> bool: state = await self.state_handler.get_current_state( room_id, EventTypes.RoomHistoryVisibility, "" ) if state and "history_visibility" in state.content: return ( state.content["history_visibility"] == HistoryVisibility.WORLD_READABLE ) else: return False def remove_expired_streams(self) -> None: time_now_ms = self.clock.time_msec() expired_streams = [] expire_before_ts = time_now_ms - self.UNUSED_STREAM_EXPIRY_MS for stream in self.user_to_user_stream.values(): if stream.count_listeners(): continue if stream.last_notified_ms < expire_before_ts: expired_streams.append(stream) for expired_stream in expired_streams: expired_stream.remove(self) def _register_with_keys(self, user_stream: _NotifierUserStream) -> None: self.user_to_user_stream[user_stream.user_id] = user_stream for room in user_stream.rooms: s = self.room_to_user_streams.setdefault(room, set()) s.add(user_stream) def _user_joined_room(self, user_id: str, room_id: str) -> None: new_user_stream = self.user_to_user_stream.get(user_id) if new_user_stream is not None: room_streams = self.room_to_user_streams.setdefault(room_id, set()) room_streams.add(new_user_stream) new_user_stream.rooms.add(room_id) def notify_replication(self) -> None: """Notify the any replication listeners that there's a new event""" for cb in self.replication_callbacks: cb() def notify_remote_server_up(self, server: str) -> None: """Notify any replication that a remote server has come back up""" # We call federation_sender directly rather than registering as a # callback as a) we already have a reference to it and b) it introduces # circular dependencies. if self.federation_sender: self.federation_sender.wake_destination(server) synapse-1.53.0/synapse/push/000077500000000000000000000000001420514467300157315ustar00rootroot00000000000000synapse-1.53.0/synapse/push/__init__.py000066400000000000000000000076651420514467300200600ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc from typing import TYPE_CHECKING, Any, Dict, Optional import attr from synapse.types import JsonDict, RoomStreamToken if TYPE_CHECKING: from synapse.server import HomeServer @attr.s(slots=True, auto_attribs=True) class PusherConfig: """Parameters necessary to configure a pusher.""" id: Optional[str] user_name: str access_token: Optional[int] profile_tag: str kind: str app_id: str app_display_name: str device_display_name: str pushkey: str ts: int lang: Optional[str] data: Optional[JsonDict] last_stream_ordering: int last_success: Optional[int] failing_since: Optional[int] def as_dict(self) -> Dict[str, Any]: """Information that can be retrieved about a pusher after creation.""" return { "app_display_name": self.app_display_name, "app_id": self.app_id, "data": self.data, "device_display_name": self.device_display_name, "kind": self.kind, "lang": self.lang, "profile_tag": self.profile_tag, "pushkey": self.pushkey, } @attr.s(slots=True, auto_attribs=True) class ThrottleParams: """Parameters for controlling the rate of sending pushes via email.""" last_sent_ts: int throttle_ms: int class Pusher(metaclass=abc.ABCMeta): def __init__(self, hs: "HomeServer", pusher_config: PusherConfig): self.hs = hs self.store = self.hs.get_datastore() self.clock = self.hs.get_clock() self.pusher_id = pusher_config.id self.user_id = pusher_config.user_name self.app_id = pusher_config.app_id self.pushkey = pusher_config.pushkey self.last_stream_ordering = pusher_config.last_stream_ordering # This is the highest stream ordering we know it's safe to process. # When new events arrive, we'll be given a window of new events: we # should honour this rather than just looking for anything higher # because of potential out-of-order event serialisation. self.max_stream_ordering = self.store.get_room_max_stream_ordering() def on_new_notifications(self, max_token: RoomStreamToken) -> None: # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. max_stream_ordering = max_token.stream self.max_stream_ordering = max(max_stream_ordering, self.max_stream_ordering) self._start_processing() @abc.abstractmethod def _start_processing(self) -> None: """Start processing push notifications.""" raise NotImplementedError() @abc.abstractmethod def on_new_receipts(self, min_stream_id: int, max_stream_id: int) -> None: raise NotImplementedError() @abc.abstractmethod def on_started(self, have_notifs: bool) -> None: """Called when this pusher has been started. Args: should_check_for_notifs: Whether we should immediately check for push to send. Set to False only if it's known there is nothing to send """ raise NotImplementedError() @abc.abstractmethod def on_stop(self) -> None: raise NotImplementedError() class PusherConfigException(Exception): """An error occurred when creating a pusher.""" synapse-1.53.0/synapse/push/action_generator.py000066400000000000000000000033351420514467300216320ustar00rootroot00000000000000# Copyright 2015 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.push.bulk_push_rule_evaluator import BulkPushRuleEvaluator from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ActionGenerator: def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.bulk_evaluator = BulkPushRuleEvaluator(hs) # really we want to get all user ids and all profile tags too, # since we want the actions for each profile tag for every user and # also actions for a client with no profile tag for each user. # Currently the event stream doesn't support profile tags on an # event stream, so we just run the rules for a client with no profile # tag (ie. we just need all the users). async def handle_push_actions_for_event( self, event: EventBase, context: EventContext ) -> None: with Measure(self.clock, "action_for_event_by_user"): await self.bulk_evaluator.action_for_event_by_user(event, context) synapse-1.53.0/synapse/push/baserules.py000066400000000000000000000311201420514467300202650ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import copy from typing import Any, Dict, List from synapse.push.rulekinds import PRIORITY_CLASS_INVERSE_MAP, PRIORITY_CLASS_MAP def list_with_base_rules(rawrules: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """Combine the list of rules set by the user with the default push rules Args: rawrules: The rules the user has modified or set. Returns: A new list with the rules set by the user combined with the defaults. """ ruleslist = [] # Grab the base rules that the user has modified. # The modified base rules have a priority_class of -1. modified_base_rules = {r["rule_id"]: r for r in rawrules if r["priority_class"] < 0} # Remove the modified base rules from the list, They'll be added back # in the default positions in the list. rawrules = [r for r in rawrules if r["priority_class"] >= 0] # shove the server default rules for each kind onto the end of each current_prio_class = list(PRIORITY_CLASS_INVERSE_MAP)[-1] ruleslist.extend( make_base_prepend_rules( PRIORITY_CLASS_INVERSE_MAP[current_prio_class], modified_base_rules ) ) for r in rawrules: if r["priority_class"] < current_prio_class: while r["priority_class"] < current_prio_class: ruleslist.extend( make_base_append_rules( PRIORITY_CLASS_INVERSE_MAP[current_prio_class], modified_base_rules, ) ) current_prio_class -= 1 if current_prio_class > 0: ruleslist.extend( make_base_prepend_rules( PRIORITY_CLASS_INVERSE_MAP[current_prio_class], modified_base_rules, ) ) ruleslist.append(r) while current_prio_class > 0: ruleslist.extend( make_base_append_rules( PRIORITY_CLASS_INVERSE_MAP[current_prio_class], modified_base_rules ) ) current_prio_class -= 1 if current_prio_class > 0: ruleslist.extend( make_base_prepend_rules( PRIORITY_CLASS_INVERSE_MAP[current_prio_class], modified_base_rules ) ) return ruleslist def make_base_append_rules( kind: str, modified_base_rules: Dict[str, Dict[str, Any]] ) -> List[Dict[str, Any]]: rules = [] if kind == "override": rules = BASE_APPEND_OVERRIDE_RULES elif kind == "underride": rules = BASE_APPEND_UNDERRIDE_RULES elif kind == "content": rules = BASE_APPEND_CONTENT_RULES # Copy the rules before modifying them rules = copy.deepcopy(rules) for r in rules: # Only modify the actions, keep the conditions the same. assert isinstance(r["rule_id"], str) modified = modified_base_rules.get(r["rule_id"]) if modified: r["actions"] = modified["actions"] return rules def make_base_prepend_rules( kind: str, modified_base_rules: Dict[str, Dict[str, Any]], ) -> List[Dict[str, Any]]: rules = [] if kind == "override": rules = BASE_PREPEND_OVERRIDE_RULES # Copy the rules before modifying them rules = copy.deepcopy(rules) for r in rules: # Only modify the actions, keep the conditions the same. assert isinstance(r["rule_id"], str) modified = modified_base_rules.get(r["rule_id"]) if modified: r["actions"] = modified["actions"] return rules BASE_APPEND_CONTENT_RULES = [ { "rule_id": "global/content/.m.rule.contains_user_name", "conditions": [ { "kind": "event_match", "key": "content.body", "pattern_type": "user_localpart", } ], "actions": [ "notify", {"set_tweak": "sound", "value": "default"}, {"set_tweak": "highlight"}, ], } ] BASE_PREPEND_OVERRIDE_RULES = [ { "rule_id": "global/override/.m.rule.master", "enabled": False, "conditions": [], "actions": ["dont_notify"], } ] BASE_APPEND_OVERRIDE_RULES = [ { "rule_id": "global/override/.m.rule.suppress_notices", "conditions": [ { "kind": "event_match", "key": "content.msgtype", "pattern": "m.notice", "_id": "_suppress_notices", } ], "actions": ["dont_notify"], }, # NB. .m.rule.invite_for_me must be higher prio than .m.rule.member_event # otherwise invites will be matched by .m.rule.member_event { "rule_id": "global/override/.m.rule.invite_for_me", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.room.member", "_id": "_member", }, { "kind": "event_match", "key": "content.membership", "pattern": "invite", "_id": "_invite_member", }, {"kind": "event_match", "key": "state_key", "pattern_type": "user_id"}, ], "actions": [ "notify", {"set_tweak": "sound", "value": "default"}, {"set_tweak": "highlight", "value": False}, ], }, # Will we sometimes want to know about people joining and leaving? # Perhaps: if so, this could be expanded upon. Seems the most usual case # is that we don't though. We add this override rule so that even if # the room rule is set to notify, we don't get notifications about # join/leave/avatar/displayname events. # See also: https://matrix.org/jira/browse/SYN-607 { "rule_id": "global/override/.m.rule.member_event", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.room.member", "_id": "_member", } ], "actions": ["dont_notify"], }, # This was changed from underride to override so it's closer in priority # to the content rules where the user name highlight rule lives. This # way a room rule is lower priority than both but a custom override rule # is higher priority than both. { "rule_id": "global/override/.m.rule.contains_display_name", "conditions": [{"kind": "contains_display_name"}], "actions": [ "notify", {"set_tweak": "sound", "value": "default"}, {"set_tweak": "highlight"}, ], }, { "rule_id": "global/override/.m.rule.roomnotif", "conditions": [ { "kind": "event_match", "key": "content.body", "pattern": "@room", "_id": "_roomnotif_content", }, { "kind": "sender_notification_permission", "key": "room", "_id": "_roomnotif_pl", }, ], "actions": ["notify", {"set_tweak": "highlight", "value": True}], }, { "rule_id": "global/override/.m.rule.tombstone", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.room.tombstone", "_id": "_tombstone", }, { "kind": "event_match", "key": "state_key", "pattern": "", "_id": "_tombstone_statekey", }, ], "actions": ["notify", {"set_tweak": "highlight", "value": True}], }, { "rule_id": "global/override/.m.rule.reaction", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.reaction", "_id": "_reaction", } ], "actions": ["dont_notify"], }, ] BASE_APPEND_UNDERRIDE_RULES = [ { "rule_id": "global/underride/.m.rule.call", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.call.invite", "_id": "_call", } ], "actions": [ "notify", {"set_tweak": "sound", "value": "ring"}, {"set_tweak": "highlight", "value": False}, ], }, # XXX: once m.direct is standardised everywhere, we should use it to detect # a DM from the user's perspective rather than this heuristic. { "rule_id": "global/underride/.m.rule.room_one_to_one", "conditions": [ {"kind": "room_member_count", "is": "2", "_id": "member_count"}, { "kind": "event_match", "key": "type", "pattern": "m.room.message", "_id": "_message", }, ], "actions": [ "notify", {"set_tweak": "sound", "value": "default"}, {"set_tweak": "highlight", "value": False}, ], }, # XXX: this is going to fire for events which aren't m.room.messages # but are encrypted (e.g. m.call.*)... { "rule_id": "global/underride/.m.rule.encrypted_room_one_to_one", "conditions": [ {"kind": "room_member_count", "is": "2", "_id": "member_count"}, { "kind": "event_match", "key": "type", "pattern": "m.room.encrypted", "_id": "_encrypted", }, ], "actions": [ "notify", {"set_tweak": "sound", "value": "default"}, {"set_tweak": "highlight", "value": False}, ], }, { "rule_id": "global/underride/.m.rule.message", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.room.message", "_id": "_message", } ], "actions": ["notify", {"set_tweak": "highlight", "value": False}], }, # XXX: this is going to fire for events which aren't m.room.messages # but are encrypted (e.g. m.call.*)... { "rule_id": "global/underride/.m.rule.encrypted", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.room.encrypted", "_id": "_encrypted", } ], "actions": ["notify", {"set_tweak": "highlight", "value": False}], }, { "rule_id": "global/underride/.im.vector.jitsi", "conditions": [ { "kind": "event_match", "key": "type", "pattern": "im.vector.modular.widgets", "_id": "_type_modular_widgets", }, { "kind": "event_match", "key": "content.type", "pattern": "jitsi", "_id": "_content_type_jitsi", }, { "kind": "event_match", "key": "state_key", "pattern": "*", "_id": "_is_state_event", }, ], "actions": ["notify", {"set_tweak": "highlight", "value": False}], }, ] BASE_RULE_IDS = set() for r in BASE_APPEND_CONTENT_RULES: r["priority_class"] = PRIORITY_CLASS_MAP["content"] r["default"] = True BASE_RULE_IDS.add(r["rule_id"]) for r in BASE_PREPEND_OVERRIDE_RULES: r["priority_class"] = PRIORITY_CLASS_MAP["override"] r["default"] = True BASE_RULE_IDS.add(r["rule_id"]) for r in BASE_APPEND_OVERRIDE_RULES: r["priority_class"] = PRIORITY_CLASS_MAP["override"] r["default"] = True BASE_RULE_IDS.add(r["rule_id"]) for r in BASE_APPEND_UNDERRIDE_RULES: r["priority_class"] = PRIORITY_CLASS_MAP["underride"] r["default"] = True BASE_RULE_IDS.add(r["rule_id"]) synapse-1.53.0/synapse/push/bulk_push_rule_evaluator.py000066400000000000000000000532471420514467300234230ustar00rootroot00000000000000# Copyright 2015 OpenMarket Ltd # Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Tuple, Union import attr from prometheus_client import Counter from synapse.api.constants import EventTypes, Membership, RelationTypes from synapse.event_auth import get_user_power_level from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.state import POWER_KEY from synapse.util.async_helpers import Linearizer from synapse.util.caches import CacheMetric, register_cache from synapse.util.caches.descriptors import lru_cache from synapse.util.caches.lrucache import LruCache from .push_rule_evaluator import PushRuleEvaluatorForEvent if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) push_rules_invalidation_counter = Counter( "synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter", "" ) push_rules_state_size_counter = Counter( "synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter", "" ) # Measures whether we use the fast path of using state deltas, or if we have to # recalculate from scratch push_rules_delta_state_cache_metric = register_cache( "cache", "push_rules_delta_state_cache_metric", cache=[], # Meaningless size, as this isn't a cache that stores values resizable=False, ) STATE_EVENT_TYPES_TO_MARK_UNREAD = { EventTypes.Topic, EventTypes.Name, EventTypes.RoomAvatar, EventTypes.Tombstone, } def _should_count_as_unread(event: EventBase, context: EventContext) -> bool: # Exclude rejected and soft-failed events. if context.rejected or event.internal_metadata.is_soft_failed(): return False # Exclude notices. if ( not event.is_state() and event.type == EventTypes.Message and event.content.get("msgtype") == "m.notice" ): return False # Exclude edits. relates_to = event.content.get("m.relates_to", {}) if relates_to.get("rel_type") == RelationTypes.REPLACE: return False # Mark events that have a non-empty string body as unread. body = event.content.get("body") if isinstance(body, str) and body: return True # Mark some state events as unread. if event.is_state() and event.type in STATE_EVENT_TYPES_TO_MARK_UNREAD: return True # Mark encrypted events as unread. if not event.is_state() and event.type == EventTypes.Encrypted: return True return False class BulkPushRuleEvaluator: """Calculates the outcome of push rules for an event for all users in the room at once. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastore() self._event_auth_handler = hs.get_event_auth_handler() # Used by `RulesForRoom` to ensure only one thing mutates the cache at a # time. Keyed off room_id. self._rules_linearizer = Linearizer(name="rules_for_room") self.room_push_rule_cache_metrics = register_cache( "cache", "room_push_rule_cache", cache=[], # Meaningless size, as this isn't a cache that stores values, resizable=False, ) async def _get_rules_for_event( self, event: EventBase, context: EventContext ) -> Dict[str, List[Dict[str, Any]]]: """This gets the rules for all users in the room at the time of the event, as well as the push rules for the invitee if the event is an invite. Returns: dict of user_id -> push_rules """ room_id = event.room_id rules_for_room_data = self._get_rules_for_room(room_id) rules_for_room = RulesForRoom( hs=self.hs, room_id=room_id, rules_for_room_cache=self._get_rules_for_room.cache, room_push_rule_cache_metrics=self.room_push_rule_cache_metrics, linearizer=self._rules_linearizer, cached_data=rules_for_room_data, ) rules_by_user = await rules_for_room.get_rules(event, context) # if this event is an invite event, we may need to run rules for the user # who's been invited, otherwise they won't get told they've been invited if event.type == "m.room.member" and event.content["membership"] == "invite": invited = event.state_key if invited and self.hs.is_mine_id(invited): has_pusher = await self.store.user_has_pusher(invited) if has_pusher: rules_by_user = dict(rules_by_user) rules_by_user[invited] = await self.store.get_push_rules_for_user( invited ) return rules_by_user @lru_cache() def _get_rules_for_room(self, room_id: str) -> "RulesForRoomData": """Get the current RulesForRoomData object for the given room id""" # It's important that the RulesForRoomData object gets added to self._get_rules_for_room.cache # before any lookup methods get called on it as otherwise there may be # a race if invalidate_all gets called (which assumes its in the cache) return RulesForRoomData() async def _get_power_levels_and_sender_level( self, event: EventBase, context: EventContext ) -> Tuple[dict, int]: prev_state_ids = await context.get_prev_state_ids() pl_event_id = prev_state_ids.get(POWER_KEY) if pl_event_id: # fastpath: if there's a power level event, that's all we need, and # not having a power level event is an extreme edge case auth_events = {POWER_KEY: await self.store.get_event(pl_event_id)} else: auth_events_ids = self._event_auth_handler.compute_auth_events( event, prev_state_ids, for_verification=False ) auth_events_dict = await self.store.get_events(auth_events_ids) auth_events = {(e.type, e.state_key): e for e in auth_events_dict.values()} sender_level = get_user_power_level(event.sender, auth_events) pl_event = auth_events.get(POWER_KEY) return pl_event.content if pl_event else {}, sender_level async def action_for_event_by_user( self, event: EventBase, context: EventContext ) -> None: """Given an event and context, evaluate the push rules, check if the message should increment the unread count, and insert the results into the event_push_actions_staging table. """ count_as_unread = _should_count_as_unread(event, context) rules_by_user = await self._get_rules_for_event(event, context) actions_by_user: Dict[str, List[Union[dict, str]]] = {} room_members = await self.store.get_joined_users_from_context(event, context) ( power_levels, sender_power_level, ) = await self._get_power_levels_and_sender_level(event, context) evaluator = PushRuleEvaluatorForEvent( event, len(room_members), sender_power_level, power_levels ) condition_cache: Dict[str, bool] = {} # If the event is not a state event check if any users ignore the sender. if not event.is_state(): ignorers = await self.store.ignored_by(event.sender) else: ignorers = set() for uid, rules in rules_by_user.items(): if event.sender == uid: continue if uid in ignorers: continue display_name = None profile_info = room_members.get(uid) if profile_info: display_name = profile_info.display_name if not display_name: # Handle the case where we are pushing a membership event to # that user, as they might not be already joined. if event.type == EventTypes.Member and event.state_key == uid: display_name = event.content.get("displayname", None) if not isinstance(display_name, str): display_name = None if count_as_unread: # Add an element for the current user if the event needs to be marked as # unread, so that add_push_actions_to_staging iterates over it. # If the event shouldn't be marked as unread but should notify the # current user, it'll be added to the dict later. actions_by_user[uid] = [] for rule in rules: if "enabled" in rule and not rule["enabled"]: continue matches = _condition_checker( evaluator, rule["conditions"], uid, display_name, condition_cache ) if matches: actions = [x for x in rule["actions"] if x != "dont_notify"] if actions and "notify" in actions: # Push rules say we should notify the user of this event actions_by_user[uid] = actions break # Mark in the DB staging area the push actions for users who should be # notified for this event. (This will then get handled when we persist # the event) await self.store.add_push_actions_to_staging( event.event_id, actions_by_user, count_as_unread, ) def _condition_checker( evaluator: PushRuleEvaluatorForEvent, conditions: List[dict], uid: str, display_name: Optional[str], cache: Dict[str, bool], ) -> bool: for cond in conditions: _id = cond.get("_id", None) if _id: res = cache.get(_id, None) if res is False: return False elif res is True: continue res = evaluator.matches(cond, uid, display_name) if _id: cache[_id] = bool(res) if not res: return False return True MemberMap = Dict[str, Tuple[str, str]] Rule = Dict[str, dict] RulesByUser = Dict[str, List[Rule]] StateGroup = Union[object, int] @attr.s(slots=True, auto_attribs=True) class RulesForRoomData: """The data stored in the cache by `RulesForRoom`. We don't store `RulesForRoom` directly in the cache as we want our caches to *only* include data, and not references to e.g. the data stores. """ # event_id -> (user_id, state) member_map: MemberMap = attr.Factory(dict) # user_id -> rules rules_by_user: RulesByUser = attr.Factory(dict) # The last state group we updated the caches for. If the state_group of # a new event comes along, we know that we can just return the cached # result. # On invalidation of the rules themselves (if the user changes them), # we invalidate everything and set state_group to `object()` state_group: StateGroup = attr.Factory(object) # A sequence number to keep track of when we're allowed to update the # cache. We bump the sequence number when we invalidate the cache. If # the sequence number changes while we're calculating stuff we should # not update the cache with it. sequence: int = 0 # A cache of user_ids that we *know* aren't interesting, e.g. user_ids # owned by AS's, or remote users, etc. (I.e. users we will never need to # calculate push for) # These never need to be invalidated as we will never set up push for # them. uninteresting_user_set: Set[str] = attr.Factory(set) class RulesForRoom: """Caches push rules for users in a room. This efficiently handles users joining/leaving the room by not invalidating the entire cache for the room. A new instance is constructed for each call to `BulkPushRuleEvaluator._get_rules_for_event`, with the cached data from previous calls passed in. """ def __init__( self, hs: "HomeServer", room_id: str, rules_for_room_cache: LruCache, room_push_rule_cache_metrics: CacheMetric, linearizer: Linearizer, cached_data: RulesForRoomData, ): """ Args: hs: The HomeServer object. room_id: The room ID. rules_for_room_cache: The cache object that caches these RoomsForUser objects. room_push_rule_cache_metrics: The metrics object linearizer: The linearizer used to ensure only one thing mutates the cache at a time. Keyed off room_id cached_data: Cached data from previous calls to `self.get_rules`, can be mutated. """ self.room_id = room_id self.is_mine_id = hs.is_mine_id self.store = hs.get_datastore() self.room_push_rule_cache_metrics = room_push_rule_cache_metrics # Used to ensure only one thing mutates the cache at a time. Keyed off # room_id. self.linearizer = linearizer self.data = cached_data # We need to be clever on the invalidating caches callbacks, as # otherwise the invalidation callback holds a reference to the object, # potentially causing it to leak. # To get around this we pass a function that on invalidations looks ups # the RoomsForUser entry in the cache, rather than keeping a reference # to self around in the callback. self.invalidate_all_cb = _Invalidation(rules_for_room_cache, room_id) async def get_rules( self, event: EventBase, context: EventContext ) -> Dict[str, List[Dict[str, dict]]]: """Given an event context return the rules for all users who are currently in the room. """ state_group = context.state_group if state_group and self.data.state_group == state_group: logger.debug("Using cached rules for %r", self.room_id) self.room_push_rule_cache_metrics.inc_hits() return self.data.rules_by_user with (await self.linearizer.queue(self.room_id)): if state_group and self.data.state_group == state_group: logger.debug("Using cached rules for %r", self.room_id) self.room_push_rule_cache_metrics.inc_hits() return self.data.rules_by_user self.room_push_rule_cache_metrics.inc_misses() ret_rules_by_user = {} missing_member_event_ids = {} if state_group and self.data.state_group == context.prev_group: # If we have a simple delta then we can reuse most of the previous # results. ret_rules_by_user = self.data.rules_by_user current_state_ids = context.delta_ids push_rules_delta_state_cache_metric.inc_hits() else: current_state_ids = await context.get_current_state_ids() push_rules_delta_state_cache_metric.inc_misses() # Ensure the state IDs exist. assert current_state_ids is not None push_rules_state_size_counter.inc(len(current_state_ids)) logger.debug( "Looking for member changes in %r %r", state_group, current_state_ids ) # Loop through to see which member events we've seen and have rules # for and which we need to fetch for key in current_state_ids: typ, user_id = key if typ != EventTypes.Member: continue if user_id in self.data.uninteresting_user_set: continue if not self.is_mine_id(user_id): self.data.uninteresting_user_set.add(user_id) continue if self.store.get_if_app_services_interested_in_user(user_id): self.data.uninteresting_user_set.add(user_id) continue event_id = current_state_ids[key] res = self.data.member_map.get(event_id, None) if res: user_id, state = res if state == Membership.JOIN: rules = self.data.rules_by_user.get(user_id, None) if rules: ret_rules_by_user[user_id] = rules continue # If a user has left a room we remove their push rule. If they # joined then we re-add it later in _update_rules_with_member_event_ids ret_rules_by_user.pop(user_id, None) missing_member_event_ids[user_id] = event_id if missing_member_event_ids: # If we have some member events we haven't seen, look them up # and fetch push rules for them if appropriate. logger.debug("Found new member events %r", missing_member_event_ids) await self._update_rules_with_member_event_ids( ret_rules_by_user, missing_member_event_ids, state_group, event ) else: # The push rules didn't change but lets update the cache anyway self.update_cache( self.data.sequence, members={}, # There were no membership changes rules_by_user=ret_rules_by_user, state_group=state_group, ) if logger.isEnabledFor(logging.DEBUG): logger.debug( "Returning push rules for %r %r", self.room_id, ret_rules_by_user.keys() ) return ret_rules_by_user async def _update_rules_with_member_event_ids( self, ret_rules_by_user: Dict[str, list], member_event_ids: Dict[str, str], state_group: Optional[int], event: EventBase, ) -> None: """Update the partially filled rules_by_user dict by fetching rules for any newly joined users in the `member_event_ids` list. Args: ret_rules_by_user: Partially filled dict of push rules. Gets updated with any new rules. member_event_ids: Dict of user id to event id for membership events that have happened since the last time we filled rules_by_user state_group: The state group we are currently computing push rules for. Used when updating the cache. event: The event we are currently computing push rules for. """ sequence = self.data.sequence rows = await self.store.get_membership_from_event_ids(member_event_ids.values()) members = {row["event_id"]: (row["user_id"], row["membership"]) for row in rows} # If the event is a join event then it will be in current state evnts # map but not in the DB, so we have to explicitly insert it. if event.type == EventTypes.Member: for event_id in member_event_ids.values(): if event_id == event.event_id: members[event_id] = (event.state_key, event.membership) if logger.isEnabledFor(logging.DEBUG): logger.debug("Found members %r: %r", self.room_id, members.values()) joined_user_ids = { user_id for user_id, membership in members.values() if membership == Membership.JOIN } logger.debug("Joined: %r", joined_user_ids) # Previously we only considered users with pushers or read receipts in that # room. We can't do this anymore because we use push actions to calculate unread # counts, which don't rely on the user having pushers or sent a read receipt into # the room. Therefore we just need to filter for local users here. user_ids = list(filter(self.is_mine_id, joined_user_ids)) rules_by_user = await self.store.bulk_get_push_rules( user_ids, on_invalidate=self.invalidate_all_cb ) ret_rules_by_user.update( item for item in rules_by_user.items() if item[0] is not None ) self.update_cache(sequence, members, ret_rules_by_user, state_group) def update_cache( self, sequence: int, members: MemberMap, rules_by_user: RulesByUser, state_group: StateGroup, ) -> None: if sequence == self.data.sequence: self.data.member_map.update(members) self.data.rules_by_user = rules_by_user self.data.state_group = state_group @attr.attrs(slots=True, frozen=True, auto_attribs=True) class _Invalidation: # _Invalidation is passed as an `on_invalidate` callback to bulk_get_push_rules, # which means that it it is stored on the bulk_get_push_rules cache entry. In order # to ensure that we don't accumulate lots of redundant callbacks on the cache entry, # we need to ensure that two _Invalidation objects are "equal" if they refer to the # same `cache` and `room_id`. # # attrs provides suitable __hash__ and __eq__ methods, provided we remember to # set `frozen=True`. cache: LruCache room_id: str def __call__(self) -> None: rules_data = self.cache.get(self.room_id, None, update_metrics=False) if rules_data: rules_data.sequence += 1 rules_data.state_group = object() rules_data.member_map = {} rules_data.rules_by_user = {} push_rules_invalidation_counter.inc() synapse-1.53.0/synapse/push/clientformat.py000066400000000000000000000071101420514467300207710ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import copy from typing import Any, Dict, List, Optional from synapse.push.rulekinds import PRIORITY_CLASS_INVERSE_MAP, PRIORITY_CLASS_MAP from synapse.types import UserID def format_push_rules_for_user( user: UserID, ruleslist: List ) -> Dict[str, Dict[str, list]]: """Converts a list of rawrules and a enabled map into nested dictionaries to match the Matrix client-server format for push rules""" # We're going to be mutating this a lot, so do a deep copy ruleslist = copy.deepcopy(ruleslist) rules: Dict[str, Dict[str, List[Dict[str, Any]]]] = { "global": {}, "device": {}, } rules["global"] = _add_empty_priority_class_arrays(rules["global"]) for r in ruleslist: template_name = _priority_class_to_template_name(r["priority_class"]) # Remove internal stuff. for c in r["conditions"]: c.pop("_id", None) pattern_type = c.pop("pattern_type", None) if pattern_type == "user_id": c["pattern"] = user.to_string() elif pattern_type == "user_localpart": c["pattern"] = user.localpart rulearray = rules["global"][template_name] template_rule = _rule_to_template(r) if template_rule: if "enabled" in r: template_rule["enabled"] = r["enabled"] else: template_rule["enabled"] = True rulearray.append(template_rule) return rules def _add_empty_priority_class_arrays(d: Dict[str, list]) -> Dict[str, list]: for pc in PRIORITY_CLASS_MAP.keys(): d[pc] = [] return d def _rule_to_template(rule: Dict[str, Any]) -> Optional[Dict[str, Any]]: unscoped_rule_id = None if "rule_id" in rule: unscoped_rule_id = _rule_id_from_namespaced(rule["rule_id"]) template_name = _priority_class_to_template_name(rule["priority_class"]) if template_name in ["override", "underride"]: templaterule = {k: rule[k] for k in ["conditions", "actions"]} elif template_name in ["sender", "room"]: templaterule = {"actions": rule["actions"]} unscoped_rule_id = rule["conditions"][0]["pattern"] elif template_name == "content": if len(rule["conditions"]) != 1: return None thecond = rule["conditions"][0] if "pattern" not in thecond: return None templaterule = {"actions": rule["actions"]} templaterule["pattern"] = thecond["pattern"] else: # This should not be reached unless this function is not kept in sync # with PRIORITY_CLASS_INVERSE_MAP. raise ValueError("Unexpected template_name: %s" % (template_name,)) if unscoped_rule_id: templaterule["rule_id"] = unscoped_rule_id if "default" in rule: templaterule["default"] = rule["default"] return templaterule def _rule_id_from_namespaced(in_rule_id: str) -> str: return in_rule_id.split("/")[-1] def _priority_class_to_template_name(pc: int) -> str: return PRIORITY_CLASS_INVERSE_MAP[pc] synapse-1.53.0/synapse/push/emailpusher.py000066400000000000000000000304101420514467300206170ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict, List, Optional from twisted.internet.error import AlreadyCalled, AlreadyCancelled from twisted.internet.interfaces import IDelayedCall from synapse.metrics.background_process_metrics import run_as_background_process from synapse.push import Pusher, PusherConfig, PusherConfigException, ThrottleParams from synapse.push.mailer import Mailer from synapse.push.push_types import EmailReason from synapse.storage.databases.main.event_push_actions import EmailPushAction from synapse.util.threepids import validate_email if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # The amount of time we always wait before ever emailing about a notification # (to give the user a chance to respond to other push or notice the window) DELAY_BEFORE_MAIL_MS = 10 * 60 * 1000 # THROTTLE is the minimum time between mail notifications sent for a given room. # Each room maintains its own throttle counter, but each new mail notification # sends the pending notifications for all rooms. THROTTLE_START_MS = 10 * 60 * 1000 THROTTLE_MAX_MS = 24 * 60 * 60 * 1000 # 24h # THROTTLE_MULTIPLIER = 6 # 10 mins, 1 hour, 6 hours, 24 hours THROTTLE_MULTIPLIER = 144 # 10 mins, 24 hours - i.e. jump straight to 1 day # If no event triggers a notification for this long after the previous, # the throttle is released. # 12 hours - a gap of 12 hours in conversation is surely enough to merit a new # notification when things get going again... THROTTLE_RESET_AFTER_MS = 12 * 60 * 60 * 1000 # does each email include all unread notifs, or just the ones which have happened # since the last mail? # XXX: this is currently broken as it includes ones from parted rooms(!) INCLUDE_ALL_UNREAD_NOTIFS = False class EmailPusher(Pusher): """ A pusher that sends email notifications about events (approximately) when they happen. This shares quite a bit of code with httpusher: it would be good to factor out the common parts """ def __init__(self, hs: "HomeServer", pusher_config: PusherConfig, mailer: Mailer): super().__init__(hs, pusher_config) self.mailer = mailer self.store = self.hs.get_datastore() self.email = pusher_config.pushkey self.timed_call: Optional[IDelayedCall] = None self.throttle_params: Dict[str, ThrottleParams] = {} self._inited = False self._is_processing = False # Make sure that the email is valid. try: validate_email(self.email) except ValueError: raise PusherConfigException("Invalid email") def on_started(self, should_check_for_notifs: bool) -> None: """Called when this pusher has been started. Args: should_check_for_notifs: Whether we should immediately check for push to send. Set to False only if it's known there is nothing to send """ if should_check_for_notifs and self.mailer is not None: self._start_processing() def on_stop(self) -> None: if self.timed_call: try: self.timed_call.cancel() except (AlreadyCalled, AlreadyCancelled): pass self.timed_call = None def on_new_receipts(self, min_stream_id: int, max_stream_id: int) -> None: # We could wake up and cancel the timer but there tend to be quite a # lot of read receipts so it's probably less work to just let the # timer fire pass def on_timer(self) -> None: self.timed_call = None self._start_processing() def _start_processing(self) -> None: if self._is_processing: return run_as_background_process("emailpush.process", self._process) def _pause_processing(self) -> None: """Used by tests to temporarily pause processing of events. Asserts that its not currently processing. """ assert not self._is_processing self._is_processing = True def _resume_processing(self) -> None: """Used by tests to resume processing of events after pausing.""" assert self._is_processing self._is_processing = False self._start_processing() async def _process(self) -> None: # we should never get here if we are already processing assert not self._is_processing try: self._is_processing = True if not self._inited: # this is our first loop: load up the throttle params assert self.pusher_id is not None self.throttle_params = await self.store.get_throttle_params_by_room( self.pusher_id ) self._inited = True # if the max ordering changes while we're running _unsafe_process, # call it again, and so on until we've caught up. while True: starting_max_ordering = self.max_stream_ordering try: await self._unsafe_process() except Exception: logger.exception("Exception processing notifs") if self.max_stream_ordering == starting_max_ordering: break finally: self._is_processing = False async def _unsafe_process(self) -> None: """ Main logic of the push loop without the wrapper function that sets up logging, measures and guards against multiple instances of it being run. """ start = 0 if INCLUDE_ALL_UNREAD_NOTIFS else self.last_stream_ordering unprocessed = ( await self.store.get_unread_push_actions_for_user_in_range_for_email( self.user_id, start, self.max_stream_ordering ) ) soonest_due_at: Optional[int] = None if not unprocessed: await self.save_last_stream_ordering_and_success(self.max_stream_ordering) return for push_action in unprocessed: received_at = push_action.received_ts if received_at is None: received_at = 0 notif_ready_at = received_at + DELAY_BEFORE_MAIL_MS room_ready_at = self.room_ready_to_notify_at(push_action.room_id) should_notify_at = max(notif_ready_at, room_ready_at) if should_notify_at <= self.clock.time_msec(): # one of our notifications is ready for sending, so we send # *one* email updating the user on their notifications, # we then consider all previously outstanding notifications # to be delivered. reason: EmailReason = { "room_id": push_action.room_id, "now": self.clock.time_msec(), "received_at": received_at, "delay_before_mail_ms": DELAY_BEFORE_MAIL_MS, "last_sent_ts": self.get_room_last_sent_ts(push_action.room_id), "throttle_ms": self.get_room_throttle_ms(push_action.room_id), } await self.send_notification(unprocessed, reason) await self.save_last_stream_ordering_and_success( max(ea.stream_ordering for ea in unprocessed) ) # we update the throttle on all the possible unprocessed push actions for ea in unprocessed: await self.sent_notif_update_throttle(ea.room_id, ea) break else: if soonest_due_at is None or should_notify_at < soonest_due_at: soonest_due_at = should_notify_at if self.timed_call is not None: try: self.timed_call.cancel() except (AlreadyCalled, AlreadyCancelled): pass self.timed_call = None if soonest_due_at is not None: self.timed_call = self.hs.get_reactor().callLater( self.seconds_until(soonest_due_at), self.on_timer ) async def save_last_stream_ordering_and_success( self, last_stream_ordering: int ) -> None: self.last_stream_ordering = last_stream_ordering pusher_still_exists = ( await self.store.update_pusher_last_stream_ordering_and_success( self.app_id, self.email, self.user_id, last_stream_ordering, self.clock.time_msec(), ) ) if not pusher_still_exists: # The pusher has been deleted while we were processing, so # lets just stop and return. self.on_stop() def seconds_until(self, ts_msec: int) -> float: secs = (ts_msec - self.clock.time_msec()) / 1000 return max(secs, 0) def get_room_throttle_ms(self, room_id: str) -> int: if room_id in self.throttle_params: return self.throttle_params[room_id].throttle_ms else: return 0 def get_room_last_sent_ts(self, room_id: str) -> int: if room_id in self.throttle_params: return self.throttle_params[room_id].last_sent_ts else: return 0 def room_ready_to_notify_at(self, room_id: str) -> int: """ Determines whether throttling should prevent us from sending an email for the given room Returns: The timestamp when we are next allowed to send an email notif for this room """ last_sent_ts = self.get_room_last_sent_ts(room_id) throttle_ms = self.get_room_throttle_ms(room_id) may_send_at = last_sent_ts + throttle_ms return may_send_at async def sent_notif_update_throttle( self, room_id: str, notified_push_action: EmailPushAction ) -> None: # We have sent a notification, so update the throttle accordingly. # If the event that triggered the notif happened more than # THROTTLE_RESET_AFTER_MS after the previous one that triggered a # notif, we release the throttle. Otherwise, the throttle is increased. time_of_previous_notifs = await self.store.get_time_of_last_push_action_before( notified_push_action.stream_ordering ) time_of_this_notifs = notified_push_action.received_ts if time_of_previous_notifs is not None and time_of_this_notifs is not None: gap = time_of_this_notifs - time_of_previous_notifs else: # if we don't know the arrival time of one of the notifs (it was not # stored prior to email notification code) then assume a gap of # zero which will just not reset the throttle gap = 0 current_throttle_ms = self.get_room_throttle_ms(room_id) if gap > THROTTLE_RESET_AFTER_MS: new_throttle_ms = THROTTLE_START_MS else: if current_throttle_ms == 0: new_throttle_ms = THROTTLE_START_MS else: new_throttle_ms = min( current_throttle_ms * THROTTLE_MULTIPLIER, THROTTLE_MAX_MS ) self.throttle_params[room_id] = ThrottleParams( self.clock.time_msec(), new_throttle_ms, ) assert self.pusher_id is not None await self.store.set_throttle_params( self.pusher_id, room_id, self.throttle_params[room_id] ) async def send_notification( self, push_actions: List[EmailPushAction], reason: EmailReason ) -> None: logger.info("Sending notif email for user %r", self.user_id) await self.mailer.send_notification_mail( self.app_id, self.user_id, self.email, push_actions, reason ) synapse-1.53.0/synapse/push/httppusher.py000066400000000000000000000406731420514467300205230ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Union from prometheus_client import Counter from twisted.internet.error import AlreadyCalled, AlreadyCancelled from twisted.internet.interfaces import IDelayedCall from synapse.api.constants import EventTypes from synapse.events import EventBase from synapse.logging import opentracing from synapse.metrics.background_process_metrics import run_as_background_process from synapse.push import Pusher, PusherConfig, PusherConfigException from synapse.storage.databases.main.event_push_actions import HttpPushAction from . import push_rule_evaluator, push_tools if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) http_push_processed_counter = Counter( "synapse_http_httppusher_http_pushes_processed", "Number of push notifications successfully sent", ) http_push_failed_counter = Counter( "synapse_http_httppusher_http_pushes_failed", "Number of push notifications which failed", ) http_badges_processed_counter = Counter( "synapse_http_httppusher_badge_updates_processed", "Number of badge updates successfully sent", ) http_badges_failed_counter = Counter( "synapse_http_httppusher_badge_updates_failed", "Number of badge updates which failed", ) class HttpPusher(Pusher): INITIAL_BACKOFF_SEC = 1 # in seconds because that's what Twisted takes MAX_BACKOFF_SEC = 60 * 60 # This one's in ms because we compare it against the clock GIVE_UP_AFTER_MS = 24 * 60 * 60 * 1000 def __init__(self, hs: "HomeServer", pusher_config: PusherConfig): super().__init__(hs, pusher_config) self.storage = self.hs.get_storage() self.app_display_name = pusher_config.app_display_name self.device_display_name = pusher_config.device_display_name self.pushkey_ts = pusher_config.ts self.data = pusher_config.data self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC self.failing_since = pusher_config.failing_since self.timed_call: Optional[IDelayedCall] = None self._is_processing = False self._group_unread_count_by_room = ( hs.config.push.push_group_unread_count_by_room ) self._pusherpool = hs.get_pusherpool() self.data = pusher_config.data if self.data is None: raise PusherConfigException("'data' key can not be null for HTTP pusher") self.name = "%s/%s/%s" % ( pusher_config.user_name, pusher_config.app_id, pusher_config.pushkey, ) # Validate that there's a URL and it is of the proper form. if "url" not in self.data: raise PusherConfigException("'url' required in data for HTTP pusher") url = self.data["url"] if not isinstance(url, str): raise PusherConfigException("'url' must be a string") url_parts = urllib.parse.urlparse(url) # Note that the specification also says the scheme must be HTTPS, but # it isn't up to the homeserver to verify that. if url_parts.path != "/_matrix/push/v1/notify": raise PusherConfigException( "'url' must have a path of '/_matrix/push/v1/notify'" ) self.url = url self.http_client = hs.get_proxied_blacklisted_http_client() self.data_minus_url = {} self.data_minus_url.update(self.data) del self.data_minus_url["url"] def on_started(self, should_check_for_notifs: bool) -> None: """Called when this pusher has been started. Args: should_check_for_notifs: Whether we should immediately check for push to send. Set to False only if it's known there is nothing to send """ if should_check_for_notifs: self._start_processing() def on_new_receipts(self, min_stream_id: int, max_stream_id: int) -> None: # Note that the min here shouldn't be relied upon to be accurate. # We could check the receipts are actually m.read receipts here, # but currently that's the only type of receipt anyway... run_as_background_process("http_pusher.on_new_receipts", self._update_badge) async def _update_badge(self) -> None: # XXX as per https://github.com/matrix-org/matrix-doc/issues/2627, this seems # to be largely redundant. perhaps we can remove it. badge = await push_tools.get_badge_count( self.hs.get_datastore(), self.user_id, group_by_room=self._group_unread_count_by_room, ) await self._send_badge(badge) def on_timer(self) -> None: self._start_processing() def on_stop(self) -> None: if self.timed_call: try: self.timed_call.cancel() except (AlreadyCalled, AlreadyCancelled): pass self.timed_call = None def _start_processing(self) -> None: if self._is_processing: return run_as_background_process("httppush.process", self._process) async def _process(self) -> None: # we should never get here if we are already processing assert not self._is_processing try: self._is_processing = True # if the max ordering changes while we're running _unsafe_process, # call it again, and so on until we've caught up. while True: starting_max_ordering = self.max_stream_ordering try: await self._unsafe_process() except Exception: logger.exception("Exception processing notifs") if self.max_stream_ordering == starting_max_ordering: break finally: self._is_processing = False async def _unsafe_process(self) -> None: """ Looks for unset notifications and dispatch them, in order Never call this directly: use _process which will only allow this to run once per pusher. """ unprocessed = ( await self.store.get_unread_push_actions_for_user_in_range_for_http( self.user_id, self.last_stream_ordering, self.max_stream_ordering ) ) logger.info( "Processing %i unprocessed push actions for %s starting at " "stream_ordering %s", len(unprocessed), self.name, self.last_stream_ordering, ) for push_action in unprocessed: with opentracing.start_active_span( "http-push", tags={ "authenticated_entity": self.user_id, "event_id": push_action.event_id, "app_id": self.app_id, "app_display_name": self.app_display_name, }, ): processed = await self._process_one(push_action) if processed: http_push_processed_counter.inc() self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC self.last_stream_ordering = push_action.stream_ordering pusher_still_exists = ( await self.store.update_pusher_last_stream_ordering_and_success( self.app_id, self.pushkey, self.user_id, self.last_stream_ordering, self.clock.time_msec(), ) ) if not pusher_still_exists: # The pusher has been deleted while we were processing, so # lets just stop and return. self.on_stop() return if self.failing_since: self.failing_since = None await self.store.update_pusher_failing_since( self.app_id, self.pushkey, self.user_id, self.failing_since ) else: http_push_failed_counter.inc() if not self.failing_since: self.failing_since = self.clock.time_msec() await self.store.update_pusher_failing_since( self.app_id, self.pushkey, self.user_id, self.failing_since ) if ( self.failing_since and self.failing_since < self.clock.time_msec() - HttpPusher.GIVE_UP_AFTER_MS ): # we really only give up so that if the URL gets # fixed, we don't suddenly deliver a load # of old notifications. logger.warning( "Giving up on a notification to user %s, pushkey %s", self.user_id, self.pushkey, ) self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC self.last_stream_ordering = push_action.stream_ordering await self.store.update_pusher_last_stream_ordering( self.app_id, self.pushkey, self.user_id, self.last_stream_ordering, ) self.failing_since = None await self.store.update_pusher_failing_since( self.app_id, self.pushkey, self.user_id, self.failing_since ) else: logger.info("Push failed: delaying for %ds", self.backoff_delay) self.timed_call = self.hs.get_reactor().callLater( self.backoff_delay, self.on_timer ) self.backoff_delay = min( self.backoff_delay * 2, self.MAX_BACKOFF_SEC ) break async def _process_one(self, push_action: HttpPushAction) -> bool: if "notify" not in push_action.actions: return True tweaks = push_rule_evaluator.tweaks_for_actions(push_action.actions) badge = await push_tools.get_badge_count( self.hs.get_datastore(), self.user_id, group_by_room=self._group_unread_count_by_room, ) event = await self.store.get_event(push_action.event_id, allow_none=True) if event is None: return True # It's been redacted rejected = await self.dispatch_push(event, tweaks, badge) if rejected is False: return False if isinstance(rejected, (list, tuple)): for pk in rejected: if pk != self.pushkey: # for sanity, we only remove the pushkey if it # was the one we actually sent... logger.warning( ("Ignoring rejected pushkey %s because we didn't send it"), pk, ) else: logger.info("Pushkey %s was rejected: removing", pk) await self._pusherpool.remove_pusher(self.app_id, pk, self.user_id) return True async def _build_notification_dict( self, event: EventBase, tweaks: Dict[str, bool], badge: int ) -> Dict[str, Any]: priority = "low" if ( event.type == EventTypes.Encrypted or tweaks.get("highlight") or tweaks.get("sound") ): # HACK send our push as high priority only if it generates a sound, highlight # or may do so (i.e. is encrypted so has unknown effects). priority = "high" # This was checked in the __init__, but mypy doesn't seem to know that. assert self.data is not None if self.data.get("format") == "event_id_only": d = { "notification": { "event_id": event.event_id, "room_id": event.room_id, "counts": {"unread": badge}, "prio": priority, "devices": [ { "app_id": self.app_id, "pushkey": self.pushkey, "pushkey_ts": int(self.pushkey_ts / 1000), "data": self.data_minus_url, } ], } } return d ctx = await push_tools.get_context_for_event(self.storage, event, self.user_id) d = { "notification": { "id": event.event_id, # deprecated: remove soon "event_id": event.event_id, "room_id": event.room_id, "type": event.type, "sender": event.user_id, "prio": priority, "counts": { "unread": badge, # 'missed_calls': 2 }, "devices": [ { "app_id": self.app_id, "pushkey": self.pushkey, "pushkey_ts": int(self.pushkey_ts / 1000), "data": self.data_minus_url, "tweaks": tweaks, } ], } } if event.type == "m.room.member" and event.is_state(): d["notification"]["membership"] = event.content["membership"] d["notification"]["user_is_target"] = event.state_key == self.user_id if self.hs.config.push.push_include_content and event.content: d["notification"]["content"] = event.content # We no longer send aliases separately, instead, we send the human # readable name of the room, which may be an alias. if "sender_display_name" in ctx and len(ctx["sender_display_name"]) > 0: d["notification"]["sender_display_name"] = ctx["sender_display_name"] if "name" in ctx and len(ctx["name"]) > 0: d["notification"]["room_name"] = ctx["name"] return d async def dispatch_push( self, event: EventBase, tweaks: Dict[str, bool], badge: int ) -> Union[bool, Iterable[str]]: notification_dict = await self._build_notification_dict(event, tweaks, badge) if not notification_dict: return [] try: resp = await self.http_client.post_json_get_json( self.url, notification_dict ) except Exception as e: logger.warning( "Failed to push event %s to %s: %s %s", event.event_id, self.name, type(e), e, ) return False rejected = [] if "rejected" in resp: rejected = resp["rejected"] return rejected async def _send_badge(self, badge: int) -> None: """ Args: badge: number of unread messages """ logger.debug("Sending updated badge count %d to %s", badge, self.name) d = { "notification": { "id": "", "type": None, "sender": "", "counts": {"unread": badge}, "devices": [ { "app_id": self.app_id, "pushkey": self.pushkey, "pushkey_ts": int(self.pushkey_ts / 1000), "data": self.data_minus_url, } ], } } try: await self.http_client.post_json_get_json(self.url, d) http_badges_processed_counter.inc() except Exception as e: logger.warning( "Failed to send badge count to %s: %s %s", self.name, type(e), e ) http_badges_failed_counter.inc() synapse-1.53.0/synapse/push/mailer.py000066400000000000000000000772441420514467300175720ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, TypeVar import bleach import jinja2 from synapse.api.constants import EventTypes, Membership, RoomTypes from synapse.api.errors import StoreError from synapse.config.emailconfig import EmailSubjectConfig from synapse.events import EventBase from synapse.push.presentable_names import ( calculate_room_name, descriptor_from_member_events, name_from_member_event, ) from synapse.push.push_types import ( EmailReason, MessageVars, NotifVars, RoomVars, TemplateVars, ) from synapse.storage.databases.main.event_push_actions import EmailPushAction from synapse.storage.state import StateFilter from synapse.types import StateMap, UserID from synapse.util.async_helpers import concurrently_execute from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) T = TypeVar("T") CONTEXT_BEFORE = 1 CONTEXT_AFTER = 1 # From https://github.com/matrix-org/matrix-react-sdk/blob/master/src/HtmlUtils.js ALLOWED_TAGS = [ "font", # custom to matrix for IRC-style font coloring "del", # for markdown # deliberately no h1/h2 to stop people shouting. "h3", "h4", "h5", "h6", "blockquote", "p", "a", "ul", "ol", "nl", "li", "b", "i", "u", "strong", "em", "strike", "code", "hr", "br", "div", "table", "thead", "caption", "tbody", "tr", "th", "td", "pre", ] ALLOWED_ATTRS = { # custom ones first: "font": ["color"], # custom to matrix "a": ["href", "name", "target"], # remote target: custom to matrix # We don't currently allow img itself by default, but this # would make sense if we did "img": ["src"], } # When bleach release a version with this option, we can specify schemes # ALLOWED_SCHEMES = ["http", "https", "ftp", "mailto"] class Mailer: def __init__( self, hs: "HomeServer", app_name: str, template_html: jinja2.Template, template_text: jinja2.Template, ): self.hs = hs self.template_html = template_html self.template_text = template_text self.send_email_handler = hs.get_send_email_handler() self.store = self.hs.get_datastore() self.state_store = self.hs.get_storage().state self.macaroon_gen = self.hs.get_macaroon_generator() self.state_handler = self.hs.get_state_handler() self.storage = hs.get_storage() self.app_name = app_name self.email_subjects: EmailSubjectConfig = hs.config.email.email_subjects logger.info("Created Mailer for app_name %s" % app_name) async def send_password_reset_mail( self, email_address: str, token: str, client_secret: str, sid: str ) -> None: """Send an email with a password reset link to a user Args: email_address: Email address we're sending the password reset to token: Unique token generated by the server to verify the email was received client_secret: Unique token generated by the client to group together multiple email sending attempts sid: The generated session ID """ params = {"token": token, "client_secret": client_secret, "sid": sid} link = ( self.hs.config.server.public_baseurl + "_synapse/client/password_reset/email/submit_token?%s" % urllib.parse.urlencode(params) ) template_vars: TemplateVars = {"link": link} await self.send_email( email_address, self.email_subjects.password_reset % {"server_name": self.hs.config.server.server_name}, template_vars, ) async def send_registration_mail( self, email_address: str, token: str, client_secret: str, sid: str ) -> None: """Send an email with a registration confirmation link to a user Args: email_address: Email address we're sending the registration link to token: Unique token generated by the server to verify the email was received client_secret: Unique token generated by the client to group together multiple email sending attempts sid: The generated session ID """ params = {"token": token, "client_secret": client_secret, "sid": sid} link = ( self.hs.config.server.public_baseurl + "_matrix/client/unstable/registration/email/submit_token?%s" % urllib.parse.urlencode(params) ) template_vars: TemplateVars = {"link": link} await self.send_email( email_address, self.email_subjects.email_validation % {"server_name": self.hs.config.server.server_name, "app": self.app_name}, template_vars, ) async def send_add_threepid_mail( self, email_address: str, token: str, client_secret: str, sid: str ) -> None: """Send an email with a validation link to a user for adding a 3pid to their account Args: email_address: Email address we're sending the validation link to token: Unique token generated by the server to verify the email was received client_secret: Unique token generated by the client to group together multiple email sending attempts sid: The generated session ID """ params = {"token": token, "client_secret": client_secret, "sid": sid} link = ( self.hs.config.server.public_baseurl + "_matrix/client/unstable/add_threepid/email/submit_token?%s" % urllib.parse.urlencode(params) ) template_vars: TemplateVars = {"link": link} await self.send_email( email_address, self.email_subjects.email_validation % {"server_name": self.hs.config.server.server_name, "app": self.app_name}, template_vars, ) async def send_notification_mail( self, app_id: str, user_id: str, email_address: str, push_actions: Iterable[EmailPushAction], reason: EmailReason, ) -> None: """ Send email regarding a user's room notifications Params: app_id: The application receiving the notification. user_id: The user receiving the notification. email_address: The email address receiving the notification. push_actions: All outstanding notifications. reason: The notification that was ready and is the cause of an email being sent. """ rooms_in_order = deduped_ordered_list([pa.room_id for pa in push_actions]) notif_events = await self.store.get_events([pa.event_id for pa in push_actions]) notifs_by_room: Dict[str, List[EmailPushAction]] = {} for pa in push_actions: notifs_by_room.setdefault(pa.room_id, []).append(pa) # collect the current state for all the rooms in which we have # notifications state_by_room = {} try: user_display_name = await self.store.get_profile_displayname( UserID.from_string(user_id).localpart ) if user_display_name is None: user_display_name = user_id except StoreError: user_display_name = user_id async def _fetch_room_state(room_id: str) -> None: room_state = await self.store.get_current_state_ids(room_id) state_by_room[room_id] = room_state # Run at most 3 of these at once: sync does 10 at a time but email # notifs are much less realtime than sync so we can afford to wait a bit. await concurrently_execute(_fetch_room_state, rooms_in_order, 3) # actually sort our so-called rooms_in_order list, most recent room first rooms_in_order.sort(key=lambda r: -(notifs_by_room[r][-1].received_ts or 0)) rooms: List[RoomVars] = [] for r in rooms_in_order: roomvars = await self._get_room_vars( r, user_id, notifs_by_room[r], notif_events, state_by_room[r] ) rooms.append(roomvars) reason["room_name"] = await calculate_room_name( self.store, state_by_room[reason["room_id"]], user_id, fallback_to_members=True, ) if len(notifs_by_room) == 1: # Only one room has new stuff room_id = list(notifs_by_room.keys())[0] summary_text = await self._make_summary_text_single_room( room_id, notifs_by_room[room_id], state_by_room[room_id], notif_events, user_id, ) else: summary_text = await self._make_summary_text( notifs_by_room, state_by_room, notif_events, reason ) template_vars: TemplateVars = { "user_display_name": user_display_name, "unsubscribe_link": self._make_unsubscribe_link( user_id, app_id, email_address ), "summary_text": summary_text, "rooms": rooms, "reason": reason, } await self.send_email(email_address, summary_text, template_vars) async def send_email( self, email_address: str, subject: str, extra_template_vars: TemplateVars ) -> None: """Send an email with the given information and template text""" template_vars: TemplateVars = { "app_name": self.app_name, "server_name": self.hs.config.server.server_name, } template_vars.update(extra_template_vars) html_text = self.template_html.render(**template_vars) plain_text = self.template_text.render(**template_vars) await self.send_email_handler.send_email( email_address=email_address, subject=subject, app_name=self.app_name, html=html_text, text=plain_text, ) async def _get_room_vars( self, room_id: str, user_id: str, notifs: Iterable[EmailPushAction], notif_events: Dict[str, EventBase], room_state_ids: StateMap[str], ) -> RoomVars: """ Generate the variables for notifications on a per-room basis. Args: room_id: The room ID user_id: The user receiving the notification. notifs: The outstanding push actions for this room. notif_events: The events related to the above notifications. room_state_ids: The event IDs of the current room state. Returns: A dictionary to be added to the template context. """ # Check if one of the notifs is an invite event for the user. is_invite = False for n in notifs: ev = notif_events[n.event_id] if ev.type == EventTypes.Member and ev.state_key == user_id: if ev.content.get("membership") == Membership.INVITE: is_invite = True break room_name = await calculate_room_name(self.store, room_state_ids, user_id) room_vars: RoomVars = { "title": room_name, "hash": string_ordinal_total(room_id), # See sender avatar hash "notifs": [], "invite": is_invite, "link": self._make_room_link(room_id), "avatar_url": await self._get_room_avatar(room_state_ids), } if not is_invite: for n in notifs: notifvars = await self._get_notif_vars( n, user_id, notif_events[n.event_id], room_state_ids ) # merge overlapping notifs together. # relies on the notifs being in chronological order. merge = False if room_vars["notifs"] and "messages" in room_vars["notifs"][-1]: prev_messages = room_vars["notifs"][-1]["messages"] for message in notifvars["messages"]: pm = list( filter(lambda pm: pm["id"] == message["id"], prev_messages) ) if pm: if not message["is_historical"]: pm[0]["is_historical"] = False merge = True elif merge: # we're merging, so append any remaining messages # in this notif to the previous one prev_messages.append(message) if not merge: room_vars["notifs"].append(notifvars) return room_vars async def _get_room_avatar( self, room_state_ids: StateMap[str], ) -> Optional[str]: """ Retrieve the avatar url for this room---if it exists. Args: room_state_ids: The event IDs of the current room state. Returns: room's avatar url if it's present and a string; otherwise None. """ event_id = room_state_ids.get((EventTypes.RoomAvatar, "")) if event_id: ev = await self.store.get_event(event_id) url = ev.content.get("url") if isinstance(url, str): return url return None async def _get_notif_vars( self, notif: EmailPushAction, user_id: str, notif_event: EventBase, room_state_ids: StateMap[str], ) -> NotifVars: """ Generate the variables for a single notification. Args: notif: The outstanding notification for this room. user_id: The user receiving the notification. notif_event: The event related to the above notification. room_state_ids: The event IDs of the current room state. Returns: A dictionary to be added to the template context. """ results = await self.store.get_events_around( notif.room_id, notif.event_id, before_limit=CONTEXT_BEFORE, after_limit=CONTEXT_AFTER, ) ret: NotifVars = { "link": self._make_notif_link(notif), "ts": notif.received_ts, "messages": [], } the_events = await filter_events_for_client( self.storage, user_id, results.events_before ) the_events.append(notif_event) for event in the_events: messagevars = await self._get_message_vars(notif, event, room_state_ids) if messagevars is not None: ret["messages"].append(messagevars) return ret async def _get_message_vars( self, notif: EmailPushAction, event: EventBase, room_state_ids: StateMap[str] ) -> Optional[MessageVars]: """ Generate the variables for a single event, if possible. Args: notif: The outstanding notification for this room. event: The event under consideration. room_state_ids: The event IDs of the current room state. Returns: A dictionary to be added to the template context, or None if the event cannot be processed. """ if event.type != EventTypes.Message and event.type != EventTypes.Encrypted: return None # Get the sender's name and avatar from the room state. type_state_key = ("m.room.member", event.sender) sender_state_event_id = room_state_ids.get(type_state_key) if sender_state_event_id: sender_state_event: Optional[EventBase] = await self.store.get_event( sender_state_event_id ) else: # Attempt to check the historical state for the room. historical_state = await self.state_store.get_state_for_event( event.event_id, StateFilter.from_types((type_state_key,)) ) sender_state_event = historical_state.get(type_state_key) if sender_state_event: sender_name = name_from_member_event(sender_state_event) sender_avatar_url: Optional[str] = sender_state_event.content.get( "avatar_url" ) else: # No state could be found, fallback to the MXID. sender_name = event.sender sender_avatar_url = None # 'hash' for deterministically picking default images: use # sender_hash % the number of default images to choose from sender_hash = string_ordinal_total(event.sender) ret: MessageVars = { "event_type": event.type, "is_historical": event.event_id != notif.event_id, "id": event.event_id, "ts": event.origin_server_ts, "sender_name": sender_name, "sender_avatar_url": sender_avatar_url, "sender_hash": sender_hash, } # Encrypted messages don't have any additional useful information. if event.type == EventTypes.Encrypted: return ret msgtype = event.content.get("msgtype") if not isinstance(msgtype, str): msgtype = None ret["msgtype"] = msgtype if msgtype == "m.text": self._add_text_message_vars(ret, event) elif msgtype == "m.image": self._add_image_message_vars(ret, event) if "body" in event.content: ret["body_text_plain"] = event.content["body"] return ret def _add_text_message_vars( self, messagevars: MessageVars, event: EventBase ) -> None: """ Potentially add a sanitised message body to the message variables. Args: messagevars: The template context to be modified. event: The event under consideration. """ msgformat = event.content.get("format") if not isinstance(msgformat, str): msgformat = None formatted_body = event.content.get("formatted_body") body = event.content.get("body") if msgformat == "org.matrix.custom.html" and formatted_body: messagevars["body_text_html"] = safe_markup(formatted_body) elif body: messagevars["body_text_html"] = safe_text(body) def _add_image_message_vars( self, messagevars: MessageVars, event: EventBase ) -> None: """ Potentially add an image URL to the message variables. Args: messagevars: The template context to be modified. event: The event under consideration. """ if "url" in event.content: messagevars["image_url"] = event.content["url"] async def _make_summary_text_single_room( self, room_id: str, notifs: List[EmailPushAction], room_state_ids: StateMap[str], notif_events: Dict[str, EventBase], user_id: str, ) -> str: """ Make a summary text for the email when only a single room has notifications. Args: room_id: The ID of the room. notifs: The push actions for this room. room_state_ids: The state map for the room. notif_events: A map of event ID -> notification event. user_id: The user receiving the notification. Returns: The summary text. """ # If the room has some kind of name, use it, but we don't # want the generated-from-names one here otherwise we'll # end up with, "new message from Bob in the Bob room" room_name = await calculate_room_name( self.store, room_state_ids, user_id, fallback_to_members=False ) # See if one of the notifs is an invite event for the user invite_event = None for n in notifs: ev = notif_events[n.event_id] if ev.type == EventTypes.Member and ev.state_key == user_id: if ev.content.get("membership") == Membership.INVITE: invite_event = ev break if invite_event: inviter_member_event_id = room_state_ids.get( ("m.room.member", invite_event.sender) ) inviter_name = invite_event.sender if inviter_member_event_id: inviter_member_event = await self.store.get_event( inviter_member_event_id, allow_none=True ) if inviter_member_event: inviter_name = name_from_member_event(inviter_member_event) if room_name is None: return self.email_subjects.invite_from_person % { "person": inviter_name, "app": self.app_name, } # If the room is a space, it gets a slightly different topic. create_event_id = room_state_ids.get(("m.room.create", "")) if create_event_id: create_event = await self.store.get_event( create_event_id, allow_none=True ) if ( create_event and create_event.content.get("room_type") == RoomTypes.SPACE ): return self.email_subjects.invite_from_person_to_space % { "person": inviter_name, "space": room_name, "app": self.app_name, } return self.email_subjects.invite_from_person_to_room % { "person": inviter_name, "room": room_name, "app": self.app_name, } if len(notifs) == 1: # There is just the one notification, so give some detail sender_name = None event = notif_events[notifs[0].event_id] if ("m.room.member", event.sender) in room_state_ids: state_event_id = room_state_ids[("m.room.member", event.sender)] state_event = await self.store.get_event(state_event_id) sender_name = name_from_member_event(state_event) if sender_name is not None and room_name is not None: return self.email_subjects.message_from_person_in_room % { "person": sender_name, "room": room_name, "app": self.app_name, } elif sender_name is not None: return self.email_subjects.message_from_person % { "person": sender_name, "app": self.app_name, } # The sender is unknown, just use the room name (or ID). return self.email_subjects.messages_in_room % { "room": room_name or room_id, "app": self.app_name, } else: # There's more than one notification for this room, so just # say there are several if room_name is not None: return self.email_subjects.messages_in_room % { "room": room_name, "app": self.app_name, } return await self._make_summary_text_from_member_events( room_id, notifs, room_state_ids, notif_events ) async def _make_summary_text( self, notifs_by_room: Dict[str, List[EmailPushAction]], room_state_ids: Dict[str, StateMap[str]], notif_events: Dict[str, EventBase], reason: EmailReason, ) -> str: """ Make a summary text for the email when multiple rooms have notifications. Args: notifs_by_room: A map of room ID to the push actions for that room. room_state_ids: A map of room ID to the state map for that room. notif_events: A map of event ID -> notification event. reason: The reason this notification is being sent. Returns: The summary text. """ # Stuff's happened in multiple different rooms # ...but we still refer to the 'reason' room which triggered the mail if reason["room_name"] is not None: return self.email_subjects.messages_in_room_and_others % { "room": reason["room_name"], "app": self.app_name, } room_id = reason["room_id"] return await self._make_summary_text_from_member_events( room_id, notifs_by_room[room_id], room_state_ids[room_id], notif_events ) async def _make_summary_text_from_member_events( self, room_id: str, notifs: List[EmailPushAction], room_state_ids: StateMap[str], notif_events: Dict[str, EventBase], ) -> str: """ Make a summary text for the email when only a single room has notifications. Args: room_id: The ID of the room. notifs: The push actions for this room. room_state_ids: The state map for the room. notif_events: A map of event ID -> notification event. Returns: The summary text. """ # If the room doesn't have a name, say who the messages # are from explicitly to avoid, "messages in the Bob room" # Find the latest event ID for each sender, note that the notifications # are already in descending received_ts. sender_ids = {} for n in notifs: sender = notif_events[n.event_id].sender if sender not in sender_ids: sender_ids[sender] = n.event_id # Get the actual member events (in order to calculate a pretty name for # the room). member_event_ids = [] member_events = {} for sender_id, event_id in sender_ids.items(): type_state_key = ("m.room.member", sender_id) sender_state_event_id = room_state_ids.get(type_state_key) if sender_state_event_id: member_event_ids.append(sender_state_event_id) else: # Attempt to check the historical state for the room. historical_state = await self.state_store.get_state_for_event( event_id, StateFilter.from_types((type_state_key,)) ) sender_state_event = historical_state.get(type_state_key) if sender_state_event: member_events[event_id] = sender_state_event member_events.update(await self.store.get_events(member_event_ids)) if not member_events: # No member events were found! Maybe the room is empty? # Fallback to the room ID (note that if there was a room name this # would already have been used previously). return self.email_subjects.messages_in_room % { "room": room_id, "app": self.app_name, } # There was a single sender. if len(member_events) == 1: return self.email_subjects.messages_from_person % { "person": descriptor_from_member_events(member_events.values()), "app": self.app_name, } # There was more than one sender, use the first one and a tweaked template. return self.email_subjects.messages_from_person_and_others % { "person": descriptor_from_member_events(list(member_events.values())[:1]), "app": self.app_name, } def _make_room_link(self, room_id: str) -> str: """ Generate a link to open a room in the web client. Args: room_id: The room ID to generate a link to. Returns: A link to open a room in the web client. """ if self.hs.config.email.email_riot_base_url: base_url = "%s/#/room" % (self.hs.config.email.email_riot_base_url) elif self.app_name == "Vector": # need /beta for Universal Links to work on iOS base_url = "https://vector.im/beta/#/room" else: base_url = "https://matrix.to/#" return "%s/%s" % (base_url, room_id) def _make_notif_link(self, notif: EmailPushAction) -> str: """ Generate a link to open an event in the web client. Args: notif: The notification to generate a link for. Returns: A link to open the notification in the web client. """ if self.hs.config.email.email_riot_base_url: return "%s/#/room/%s/%s" % ( self.hs.config.email.email_riot_base_url, notif.room_id, notif.event_id, ) elif self.app_name == "Vector": # need /beta for Universal Links to work on iOS return "https://vector.im/beta/#/room/%s/%s" % ( notif.room_id, notif.event_id, ) else: return "https://matrix.to/#/%s/%s" % (notif.room_id, notif.event_id) def _make_unsubscribe_link( self, user_id: str, app_id: str, email_address: str ) -> str: """ Generate a link to unsubscribe from email notifications. Args: user_id: The user receiving the notification. app_id: The application receiving the notification. email_address: The email address receiving the notification. Returns: A link to unsubscribe from email notifications. """ params = { "access_token": self.macaroon_gen.generate_delete_pusher_token(user_id), "app_id": app_id, "pushkey": email_address, } # XXX: make r0 once API is stable return "%s_matrix/client/unstable/pushers/remove?%s" % ( self.hs.config.server.public_baseurl, urllib.parse.urlencode(params), ) def safe_markup(raw_html: str) -> jinja2.Markup: """ Sanitise a raw HTML string to a set of allowed tags and attributes, and linkify any bare URLs. Args raw_html: Unsafe HTML. Returns: A Markup object ready to safely use in a Jinja template. """ return jinja2.Markup( bleach.linkify( bleach.clean( raw_html, tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRS, # bleach master has this, but it isn't released yet # protocols=ALLOWED_SCHEMES, strip=True, ) ) ) def safe_text(raw_text: str) -> jinja2.Markup: """ Sanitise text (escape any HTML tags), and then linkify any bare URLs. Args raw_text: Unsafe text which might include HTML markup. Returns: A Markup object ready to safely use in a Jinja template. """ return jinja2.Markup( bleach.linkify(bleach.clean(raw_text, tags=[], attributes=[], strip=False)) ) def deduped_ordered_list(it: Iterable[T]) -> List[T]: seen = set() ret = [] for item in it: if item not in seen: seen.add(item) ret.append(item) return ret def string_ordinal_total(s: str) -> int: tot = 0 for c in s: tot += ord(c) return tot synapse-1.53.0/synapse/push/presentable_names.py000066400000000000000000000170731420514467300220020ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import TYPE_CHECKING, Dict, Iterable, Optional from synapse.api.constants import EventTypes, Membership from synapse.events import EventBase from synapse.types import StateMap if TYPE_CHECKING: from synapse.storage.databases.main import DataStore logger = logging.getLogger(__name__) # intentionally looser than what aliases we allow to be registered since # other HSes may allow aliases that we would not ALIAS_RE = re.compile(r"^#.*:.+$") ALL_ALONE = "Empty Room" async def calculate_room_name( store: "DataStore", room_state_ids: StateMap[str], user_id: str, fallback_to_members: bool = True, fallback_to_single_member: bool = True, ) -> Optional[str]: """ Works out a user-facing name for the given room as per Matrix spec recommendations. Does not yet support internationalisation. Args: store: The data store to query. room_state_ids: Dictionary of the room's state IDs. user_id: The ID of the user to whom the room name is being presented fallback_to_members: If False, return None instead of generating a name based on the room's members if the room has no title or aliases. fallback_to_single_member: If False, return None instead of generating a name based on the user who invited this user to the room if the room has no title or aliases. Returns: A human readable name for the room, if possible. """ # does it have a name? if (EventTypes.Name, "") in room_state_ids: m_room_name = await store.get_event( room_state_ids[(EventTypes.Name, "")], allow_none=True ) if m_room_name and m_room_name.content and m_room_name.content.get("name"): return m_room_name.content["name"] # does it have a canonical alias? if (EventTypes.CanonicalAlias, "") in room_state_ids: canon_alias = await store.get_event( room_state_ids[(EventTypes.CanonicalAlias, "")], allow_none=True ) if ( canon_alias and canon_alias.content and canon_alias.content.get("alias") and _looks_like_an_alias(canon_alias.content["alias"]) ): return canon_alias.content["alias"] if not fallback_to_members: return None my_member_event = None if (EventTypes.Member, user_id) in room_state_ids: my_member_event = await store.get_event( room_state_ids[(EventTypes.Member, user_id)], allow_none=True ) if ( my_member_event is not None and my_member_event.content.get("membership") == Membership.INVITE ): if (EventTypes.Member, my_member_event.sender) in room_state_ids: inviter_member_event = await store.get_event( room_state_ids[(EventTypes.Member, my_member_event.sender)], allow_none=True, ) if inviter_member_event: if fallback_to_single_member: return "Invite from %s" % ( name_from_member_event(inviter_member_event), ) else: return None else: return "Room Invite" # at this point we're going to need to search the state by all state keys # for an event type, so rearrange the data structure room_state_bytype_ids = _state_as_two_level_dict(room_state_ids) # we're going to have to generate a name based on who's in the room, # so find out who is in the room that isn't the user. if EventTypes.Member in room_state_bytype_ids: member_events = await store.get_events( list(room_state_bytype_ids[EventTypes.Member].values()) ) all_members = [ ev for ev in member_events.values() if ev.content.get("membership") == Membership.JOIN or ev.content.get("membership") == Membership.INVITE ] # Sort the member events oldest-first so the we name people in the # order the joined (it should at least be deterministic rather than # dictionary iteration order) all_members.sort(key=lambda e: e.origin_server_ts) other_members = [m for m in all_members if m.state_key != user_id] else: other_members = [] all_members = [] if len(other_members) == 0: if len(all_members) == 1: # self-chat, peeked room with 1 participant, # or inbound invite, or outbound 3PID invite. if all_members[0].sender == user_id: if EventTypes.ThirdPartyInvite in room_state_bytype_ids: third_party_invites = room_state_bytype_ids[ EventTypes.ThirdPartyInvite ].values() if len(third_party_invites) > 0: # technically third party invite events are not member # events, but they are close enough # FIXME: no they're not - they look nothing like a member; # they have a great big encrypted thing as their name to # prevent leaking the 3PID name... # return "Inviting %s" % ( # descriptor_from_member_events(third_party_invites) # ) return "Inviting email address" else: return ALL_ALONE else: return name_from_member_event(all_members[0]) else: return ALL_ALONE elif len(other_members) == 1 and not fallback_to_single_member: return None return descriptor_from_member_events(other_members) def descriptor_from_member_events(member_events: Iterable[EventBase]) -> str: """Get a description of the room based on the member events. Args: member_events: The events of a room. Returns: The room description """ member_events = list(member_events) if len(member_events) == 0: return "nobody" elif len(member_events) == 1: return name_from_member_event(member_events[0]) elif len(member_events) == 2: return "%s and %s" % ( name_from_member_event(member_events[0]), name_from_member_event(member_events[1]), ) else: return "%s and %d others" % ( name_from_member_event(member_events[0]), len(member_events) - 1, ) def name_from_member_event(member_event: EventBase) -> str: if member_event.content and member_event.content.get("displayname"): return member_event.content["displayname"] return member_event.state_key def _state_as_two_level_dict(state: StateMap[str]) -> Dict[str, Dict[str, str]]: ret: Dict[str, Dict[str, str]] = {} for k, v in state.items(): ret.setdefault(k[0], {})[k[1]] = v return ret def _looks_like_an_alias(string: str) -> bool: return ALIAS_RE.match(string) is not None synapse-1.53.0/synapse/push/push_rule_evaluator.py000066400000000000000000000172751420514467300224070ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import Any, Dict, List, Optional, Pattern, Tuple, Union from matrix_common.regex import glob_to_regex, to_word_pattern from synapse.events import EventBase from synapse.types import JsonDict, UserID from synapse.util.caches.lrucache import LruCache logger = logging.getLogger(__name__) GLOB_REGEX = re.compile(r"\\\[(\\\!|)(.*)\\\]") IS_GLOB = re.compile(r"[\?\*\[\]]") INEQUALITY_EXPR = re.compile("^([=<>]*)([0-9]*)$") def _room_member_count( ev: EventBase, condition: Dict[str, Any], room_member_count: int ) -> bool: return _test_ineq_condition(condition, room_member_count) def _sender_notification_permission( ev: EventBase, condition: Dict[str, Any], sender_power_level: int, power_levels: Dict[str, Union[int, Dict[str, int]]], ) -> bool: notif_level_key = condition.get("key") if notif_level_key is None: return False notif_levels = power_levels.get("notifications", {}) assert isinstance(notif_levels, dict) room_notif_level = notif_levels.get(notif_level_key, 50) return sender_power_level >= room_notif_level def _test_ineq_condition(condition: Dict[str, Any], number: int) -> bool: if "is" not in condition: return False m = INEQUALITY_EXPR.match(condition["is"]) if not m: return False ineq = m.group(1) rhs = m.group(2) if not rhs.isdigit(): return False rhs_int = int(rhs) if ineq == "" or ineq == "==": return number == rhs_int elif ineq == "<": return number < rhs_int elif ineq == ">": return number > rhs_int elif ineq == ">=": return number >= rhs_int elif ineq == "<=": return number <= rhs_int else: return False def tweaks_for_actions(actions: List[Union[str, Dict]]) -> Dict[str, Any]: """ Converts a list of actions into a `tweaks` dict (which can then be passed to the push gateway). This function ignores all actions other than `set_tweak` actions, and treats absent `value`s as `True`, which agrees with the only spec-defined treatment of absent `value`s (namely, for `highlight` tweaks). Args: actions: list of actions e.g. [ {"set_tweak": "a", "value": "AAA"}, {"set_tweak": "b", "value": "BBB"}, {"set_tweak": "highlight"}, "notify" ] Returns: dictionary of tweaks for those actions e.g. {"a": "AAA", "b": "BBB", "highlight": True} """ tweaks = {} for a in actions: if not isinstance(a, dict): continue if "set_tweak" in a: # value is allowed to be absent in which case the value assumed # should be True. tweaks[a["set_tweak"]] = a.get("value", True) return tweaks class PushRuleEvaluatorForEvent: def __init__( self, event: EventBase, room_member_count: int, sender_power_level: int, power_levels: Dict[str, Union[int, Dict[str, int]]], ): self._event = event self._room_member_count = room_member_count self._sender_power_level = sender_power_level self._power_levels = power_levels # Maps strings of e.g. 'content.body' -> event["content"]["body"] self._value_cache = _flatten_dict(event) def matches( self, condition: Dict[str, Any], user_id: str, display_name: Optional[str] ) -> bool: if condition["kind"] == "event_match": return self._event_match(condition, user_id) elif condition["kind"] == "contains_display_name": return self._contains_display_name(display_name) elif condition["kind"] == "room_member_count": return _room_member_count(self._event, condition, self._room_member_count) elif condition["kind"] == "sender_notification_permission": return _sender_notification_permission( self._event, condition, self._sender_power_level, self._power_levels ) else: return True def _event_match(self, condition: dict, user_id: str) -> bool: pattern = condition.get("pattern", None) if not pattern: pattern_type = condition.get("pattern_type", None) if pattern_type == "user_id": pattern = user_id elif pattern_type == "user_localpart": pattern = UserID.from_string(user_id).localpart if not pattern: logger.warning("event_match condition with no pattern") return False # XXX: optimisation: cache our pattern regexps if condition["key"] == "content.body": body = self._event.content.get("body", None) if not body or not isinstance(body, str): return False return _glob_matches(pattern, body, word_boundary=True) else: haystack = self._get_value(condition["key"]) if haystack is None: return False return _glob_matches(pattern, haystack) def _contains_display_name(self, display_name: Optional[str]) -> bool: if not display_name: return False body = self._event.content.get("body", None) if not body or not isinstance(body, str): return False # Similar to _glob_matches, but do not treat display_name as a glob. r = regex_cache.get((display_name, False, True), None) if not r: r1 = re.escape(display_name) r1 = to_word_pattern(r1) r = re.compile(r1, flags=re.IGNORECASE) regex_cache[(display_name, False, True)] = r return bool(r.search(body)) def _get_value(self, dotted_key: str) -> Optional[str]: return self._value_cache.get(dotted_key, None) # Caches (string, is_glob, word_boundary) -> regex for push. See _glob_matches regex_cache: LruCache[Tuple[str, bool, bool], Pattern] = LruCache( 50000, "regex_push_cache" ) def _glob_matches(glob: str, value: str, word_boundary: bool = False) -> bool: """Tests if value matches glob. Args: glob value: String to test against glob. word_boundary: Whether to match against word boundaries or entire string. Defaults to False. """ try: r = regex_cache.get((glob, True, word_boundary), None) if not r: r = glob_to_regex(glob, word_boundary=word_boundary) regex_cache[(glob, True, word_boundary)] = r return bool(r.search(value)) except re.error: logger.warning("Failed to parse glob to regex: %r", glob) return False def _flatten_dict( d: Union[EventBase, JsonDict], prefix: Optional[List[str]] = None, result: Optional[Dict[str, str]] = None, ) -> Dict[str, str]: if prefix is None: prefix = [] if result is None: result = {} for key, value in d.items(): if isinstance(value, str): result[".".join(prefix + [key])] = value.lower() elif isinstance(value, dict): _flatten_dict(value, prefix=(prefix + [key]), result=result) return result synapse-1.53.0/synapse/push/push_tools.py000066400000000000000000000051261420514467300205060ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Dict from synapse.api.constants import ReceiptTypes from synapse.events import EventBase from synapse.push.presentable_names import calculate_room_name, name_from_member_event from synapse.storage import Storage from synapse.storage.databases.main import DataStore async def get_badge_count(store: DataStore, user_id: str, group_by_room: bool) -> int: invites = await store.get_invited_rooms_for_local_user(user_id) joins = await store.get_rooms_for_user(user_id) my_receipts_by_room = await store.get_receipts_for_user(user_id, ReceiptTypes.READ) badge = len(invites) for room_id in joins: if room_id in my_receipts_by_room: last_unread_event_id = my_receipts_by_room[room_id] notifs = await ( store.get_unread_event_push_actions_by_room_for_user( room_id, user_id, last_unread_event_id ) ) if notifs.notify_count == 0: continue if group_by_room: # return one badge count per conversation badge += 1 else: # increment the badge count by the number of unread messages in the room badge += notifs.notify_count return badge async def get_context_for_event( storage: Storage, ev: EventBase, user_id: str ) -> Dict[str, str]: ctx = {} room_state_ids = await storage.state.get_state_ids_for_event(ev.event_id) # we no longer bother setting room_alias, and make room_name the # human-readable name instead, be that m.room.name, an alias or # a list of people in the room name = await calculate_room_name( storage.main, room_state_ids, user_id, fallback_to_single_member=False ) if name: ctx["name"] = name sender_state_event_id = room_state_ids[("m.room.member", ev.sender)] sender_state_event = await storage.main.get_event(sender_state_event_id) ctx["sender_display_name"] = name_from_member_event(sender_state_event) return ctx synapse-1.53.0/synapse/push/push_types.py000066400000000000000000000113051420514467300205060ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import List, Optional from typing_extensions import TypedDict class EmailReason(TypedDict, total=False): """ Information on the event that triggered the email to be sent room_id: the ID of the room the event was sent in now: timestamp in ms when the email is being sent out room_name: a human-readable name for the room the event was sent in received_at: the time in milliseconds at which the event was received delay_before_mail_ms: the amount of time in milliseconds Synapse always waits before ever emailing about a notification (to give the user a chance to respond to other push or notice the window) last_sent_ts: the time in milliseconds at which a notification was last sent for an event in this room throttle_ms: the minimum amount of time in milliseconds between two notifications can be sent for this room """ room_id: str now: int room_name: Optional[str] received_at: int delay_before_mail_ms: int last_sent_ts: int throttle_ms: int class MessageVars(TypedDict, total=False): """ Details about a specific message to include in a notification event_type: the type of the event is_historical: a boolean, which is `False` if the message is the one that triggered the notification, `True` otherwise id: the ID of the event ts: the time in milliseconds at which the event was sent sender_name: the display name for the event's sender sender_avatar_url: the avatar URL (as a `mxc://` URL) for the event's sender sender_hash: a hash of the user ID of the sender msgtype: the type of the message body_text_html: html representation of the message body_text_plain: plaintext representation of the message image_url: mxc url of an image, when "msgtype" is "m.image" """ event_type: str is_historical: bool id: str ts: int sender_name: str sender_avatar_url: Optional[str] sender_hash: int msgtype: Optional[str] body_text_html: str body_text_plain: str image_url: str class NotifVars(TypedDict): """ Details about an event we are about to include in a notification link: a `matrix.to` link to the event ts: the time in milliseconds at which the event was received messages: a list of messages containing one message before the event, the message in the event, and one message after the event. """ link: str ts: Optional[int] messages: List[MessageVars] class RoomVars(TypedDict): """ Represents a room containing events to include in the email. title: a human-readable name for the room hash: a hash of the ID of the room invite: a boolean, which is `True` if the room is an invite the user hasn't accepted yet, `False` otherwise notifs: a list of events, or an empty list if `invite` is `True`. link: a `matrix.to` link to the room avator_url: url to the room's avator """ title: Optional[str] hash: int invite: bool notifs: List[NotifVars] link: str avatar_url: Optional[str] class TemplateVars(TypedDict, total=False): """ Generic structure for passing to the email sender, can hold all the fields used in email templates. app_name: name of the app/service this homeserver is associated with server_name: name of our own homeserver link: a link to include into the email to be sent user_display_name: the display name for the user receiving the notification unsubscribe_link: the link users can click to unsubscribe from email notifications summary_text: a summary of the notification(s). The text used can be customised by configuring the various settings in the `email.subjects` section of the configuration file. rooms: a list of rooms containing events to include in the email reason: information on the event that triggered the email to be sent """ app_name: str server_name: str link: str user_display_name: str unsubscribe_link: str summary_text: str rooms: List[RoomVars] reason: EmailReason synapse-1.53.0/synapse/push/pusher.py000066400000000000000000000054301420514467300176130ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Callable, Dict, Optional from synapse.push import Pusher, PusherConfig from synapse.push.emailpusher import EmailPusher from synapse.push.httppusher import HttpPusher from synapse.push.mailer import Mailer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class PusherFactory: def __init__(self, hs: "HomeServer"): self.hs = hs self.config = hs.config self.pusher_types: Dict[str, Callable[[HomeServer, PusherConfig], Pusher]] = { "http": HttpPusher } logger.info("email enable notifs: %r", hs.config.email.email_enable_notifs) if hs.config.email.email_enable_notifs: self.mailers: Dict[str, Mailer] = {} self._notif_template_html = hs.config.email.email_notif_template_html self._notif_template_text = hs.config.email.email_notif_template_text self.pusher_types["email"] = self._create_email_pusher logger.info("defined email pusher type") def create_pusher(self, pusher_config: PusherConfig) -> Optional[Pusher]: kind = pusher_config.kind f = self.pusher_types.get(kind, None) if not f: return None logger.debug("creating %s pusher for %r", kind, pusher_config) return f(self.hs, pusher_config) def _create_email_pusher( self, _hs: "HomeServer", pusher_config: PusherConfig ) -> EmailPusher: app_name = self._app_name_from_pusherdict(pusher_config) mailer = self.mailers.get(app_name) if not mailer: mailer = Mailer( hs=self.hs, app_name=app_name, template_html=self._notif_template_html, template_text=self._notif_template_text, ) self.mailers[app_name] = mailer return EmailPusher(self.hs, pusher_config, mailer) def _app_name_from_pusherdict(self, pusher_config: PusherConfig) -> str: data = pusher_config.data if isinstance(data, dict): brand = data.get("brand") if isinstance(brand, str): return brand return self.config.email.email_app_name synapse-1.53.0/synapse/push/pusherpool.py000066400000000000000000000341221420514467300205050ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict, Iterable, Optional from prometheus_client import Gauge from synapse.api.errors import Codes, SynapseError from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.push import Pusher, PusherConfig, PusherConfigException from synapse.push.pusher import PusherFactory from synapse.replication.http.push import ReplicationRemovePusherRestServlet from synapse.types import JsonDict, RoomStreamToken from synapse.util.async_helpers import concurrently_execute from synapse.util.threepids import canonicalise_email if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) synapse_pushers = Gauge( "synapse_pushers", "Number of active synapse pushers", ["kind", "app_id"] ) class PusherPool: """ The pusher pool. This is responsible for dispatching notifications of new events to the http and email pushers. It provides three methods which are designed to be called by the rest of the application: `start`, `on_new_notifications`, and `on_new_receipts`: each of these delegates to each of the relevant pushers. Note that it is expected that each pusher will have its own 'processing' loop which will send out the notifications in the background, rather than blocking until the notifications are sent; accordingly Pusher.on_started, Pusher.on_new_notifications and Pusher.on_new_receipts are not expected to return awaitables. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.pusher_factory = PusherFactory(hs) self.store = self.hs.get_datastore() self.clock = self.hs.get_clock() # We shard the handling of push notifications by user ID. self._pusher_shard_config = hs.config.worker.pusher_shard_config self._instance_name = hs.get_instance_name() self._should_start_pushers = ( self._instance_name in self._pusher_shard_config.instances ) # We can only delete pushers on master. self._remove_pusher_client = None if hs.config.worker.worker_app: self._remove_pusher_client = ReplicationRemovePusherRestServlet.make_client( hs ) # Record the last stream ID that we were poked about so we can get # changes since then. We set this to the current max stream ID on # startup as every individual pusher will have checked for changes on # startup. self._last_room_stream_id_seen = self.store.get_room_max_stream_ordering() # map from user id to app_id:pushkey to pusher self.pushers: Dict[str, Dict[str, Pusher]] = {} self._account_validity_handler = hs.get_account_validity_handler() def start(self) -> None: """Starts the pushers off in a background process.""" if not self._should_start_pushers: logger.info("Not starting pushers because they are disabled in the config") return run_as_background_process("start_pushers", self._start_pushers) async def add_pusher( self, user_id: str, access_token: Optional[int], kind: str, app_id: str, app_display_name: str, device_display_name: str, pushkey: str, lang: Optional[str], data: JsonDict, profile_tag: str = "", ) -> Optional[Pusher]: """Creates a new pusher and adds it to the pool Returns: The newly created pusher. """ if kind == "email": email_owner = await self.store.get_user_id_by_threepid( "email", canonicalise_email(pushkey) ) if email_owner != user_id: raise SynapseError(400, "Email not found", Codes.THREEPID_NOT_FOUND) time_now_msec = self.clock.time_msec() # create the pusher setting last_stream_ordering to the current maximum # stream ordering, so it will process pushes from this point onwards. last_stream_ordering = self.store.get_room_max_stream_ordering() # we try to create the pusher just to validate the config: it # will then get pulled out of the database, # recreated, added and started: this means we have only one # code path adding pushers. self.pusher_factory.create_pusher( PusherConfig( id=None, user_name=user_id, access_token=access_token, profile_tag=profile_tag, kind=kind, app_id=app_id, app_display_name=app_display_name, device_display_name=device_display_name, pushkey=pushkey, ts=time_now_msec, lang=lang, data=data, last_stream_ordering=last_stream_ordering, last_success=None, failing_since=None, ) ) await self.store.add_pusher( user_id=user_id, access_token=access_token, kind=kind, app_id=app_id, app_display_name=app_display_name, device_display_name=device_display_name, pushkey=pushkey, pushkey_ts=time_now_msec, lang=lang, data=data, last_stream_ordering=last_stream_ordering, profile_tag=profile_tag, ) pusher = await self.start_pusher_by_id(app_id, pushkey, user_id) return pusher async def remove_pushers_by_app_id_and_pushkey_not_user( self, app_id: str, pushkey: str, not_user_id: str ) -> None: to_remove = await self.store.get_pushers_by_app_id_and_pushkey(app_id, pushkey) for p in to_remove: if p.user_name != not_user_id: logger.info( "Removing pusher for app id %s, pushkey %s, user %s", app_id, pushkey, p.user_name, ) await self.remove_pusher(p.app_id, p.pushkey, p.user_name) async def remove_pushers_by_access_token( self, user_id: str, access_tokens: Iterable[int] ) -> None: """Remove the pushers for a given user corresponding to a set of access_tokens. Args: user_id: user to remove pushers for access_tokens: access token *ids* to remove pushers for """ tokens = set(access_tokens) for p in await self.store.get_pushers_by_user_id(user_id): if p.access_token in tokens: logger.info( "Removing pusher for app id %s, pushkey %s, user %s", p.app_id, p.pushkey, p.user_name, ) await self.remove_pusher(p.app_id, p.pushkey, p.user_name) def on_new_notifications(self, max_token: RoomStreamToken) -> None: if not self.pushers: # nothing to do here. return # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. max_stream_id = max_token.stream if max_stream_id < self._last_room_stream_id_seen: # Nothing to do return # We only start a new background process if necessary rather than # optimistically (to cut down on overhead). self._on_new_notifications(max_token) @wrap_as_background_process("on_new_notifications") async def _on_new_notifications(self, max_token: RoomStreamToken) -> None: # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. max_stream_id = max_token.stream prev_stream_id = self._last_room_stream_id_seen self._last_room_stream_id_seen = max_stream_id try: users_affected = await self.store.get_push_action_users_in_range( prev_stream_id, max_stream_id ) for u in users_affected: # Don't push if the user account has expired expired = await self._account_validity_handler.is_user_expired(u) if expired: continue if u in self.pushers: for p in self.pushers[u].values(): p.on_new_notifications(max_token) except Exception: logger.exception("Exception in pusher on_new_notifications") async def on_new_receipts( self, min_stream_id: int, max_stream_id: int, affected_room_ids: Iterable[str] ) -> None: if not self.pushers: # nothing to do here. return try: # Need to subtract 1 from the minimum because the lower bound here # is not inclusive users_affected = await self.store.get_users_sent_receipts_between( min_stream_id - 1, max_stream_id ) for u in users_affected: # Don't push if the user account has expired expired = await self._account_validity_handler.is_user_expired(u) if expired: continue if u in self.pushers: for p in self.pushers[u].values(): p.on_new_receipts(min_stream_id, max_stream_id) except Exception: logger.exception("Exception in pusher on_new_receipts") async def start_pusher_by_id( self, app_id: str, pushkey: str, user_id: str ) -> Optional[Pusher]: """Look up the details for the given pusher, and start it Returns: The pusher started, if any """ if not self._should_start_pushers: return None if not self._pusher_shard_config.should_handle(self._instance_name, user_id): return None resultlist = await self.store.get_pushers_by_app_id_and_pushkey(app_id, pushkey) pusher_config = None for r in resultlist: if r.user_name == user_id: pusher_config = r pusher = None if pusher_config: pusher = await self._start_pusher(pusher_config) return pusher async def _start_pushers(self) -> None: """Start all the pushers""" pushers = await self.store.get_all_pushers() # Stagger starting up the pushers so we don't completely drown the # process on start up. await concurrently_execute(self._start_pusher, pushers, 10) logger.info("Started pushers") async def _start_pusher(self, pusher_config: PusherConfig) -> Optional[Pusher]: """Start the given pusher Args: pusher_config: The pusher configuration with the values pulled from the db table Returns: The newly created pusher or None. """ if not self._pusher_shard_config.should_handle( self._instance_name, pusher_config.user_name ): return None try: p = self.pusher_factory.create_pusher(pusher_config) except PusherConfigException as e: logger.warning( "Pusher incorrectly configured id=%i, user=%s, appid=%s, pushkey=%s: %s", pusher_config.id, pusher_config.user_name, pusher_config.app_id, pusher_config.pushkey, e, ) return None except Exception: logger.exception( "Couldn't start pusher id %i: caught Exception", pusher_config.id, ) return None if not p: return None appid_pushkey = "%s:%s" % (pusher_config.app_id, pusher_config.pushkey) byuser = self.pushers.setdefault(pusher_config.user_name, {}) if appid_pushkey in byuser: byuser[appid_pushkey].on_stop() byuser[appid_pushkey] = p synapse_pushers.labels(type(p).__name__, p.app_id).inc() # Check if there *may* be push to process. We do this as this check is a # lot cheaper to do than actually fetching the exact rows we need to # push. user_id = pusher_config.user_name last_stream_ordering = pusher_config.last_stream_ordering if last_stream_ordering: have_notifs = await self.store.get_if_maybe_push_in_range_for_user( user_id, last_stream_ordering ) else: # We always want to default to starting up the pusher rather than # risk missing push. have_notifs = True p.on_started(have_notifs) return p async def remove_pusher(self, app_id: str, pushkey: str, user_id: str) -> None: appid_pushkey = "%s:%s" % (app_id, pushkey) byuser = self.pushers.get(user_id, {}) if appid_pushkey in byuser: logger.info("Stopping pusher %s / %s", user_id, appid_pushkey) pusher = byuser.pop(appid_pushkey) pusher.on_stop() synapse_pushers.labels(type(pusher).__name__, pusher.app_id).dec() # We can only delete pushers on master. if self._remove_pusher_client: await self._remove_pusher_client( app_id=app_id, pushkey=pushkey, user_id=user_id ) else: await self.store.delete_pusher_by_app_id_pushkey_user_id( app_id, pushkey, user_id ) synapse-1.53.0/synapse/push/rulekinds.py000066400000000000000000000014061420514467300203040ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. PRIORITY_CLASS_MAP = { "underride": 1, "sender": 2, "room": 3, "content": 4, "override": 5, } PRIORITY_CLASS_INVERSE_MAP = {v: k for k, v in PRIORITY_CLASS_MAP.items()} synapse-1.53.0/synapse/py.typed000066400000000000000000000000001420514467300164370ustar00rootroot00000000000000synapse-1.53.0/synapse/python_dependencies.py000066400000000000000000000204541420514467300213600ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2018 New Vector Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging from typing import List, Set from pkg_resources import ( DistributionNotFound, Requirement, VersionConflict, get_provider, ) logger = logging.getLogger(__name__) # REQUIREMENTS is a simple list of requirement specifiers[1], and must be # installed. It is passed to setup() as install_requires in setup.py. # # CONDITIONAL_REQUIREMENTS is the optional dependencies, represented as a dict # of lists. The dict key is the optional dependency name and can be passed to # pip when installing. The list is a series of requirement specifiers[1] to be # installed when that optional dependency requirement is specified. It is passed # to setup() as extras_require in setup.py # # Note that these both represent runtime dependencies (and the versions # installed are checked at runtime). # # Also note that we replicate these constraints in the Synapse Dockerfile while # pre-installing dependencies. If these constraints are updated here, the same # change should be made in the Dockerfile. # # [1] https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers. REQUIREMENTS = [ # we use the TYPE_CHECKER.redefine method added in jsonschema 3.0.0 "jsonschema>=3.0.0", # frozendict 2.1.2 is broken on Debian 10: https://github.com/Marco-Sulla/python-frozendict/issues/41 "frozendict>=1,!=2.1.2", "unpaddedbase64>=1.1.0", "canonicaljson>=1.4.0", # we use the type definitions added in signedjson 1.1. "signedjson>=1.1.0", "pynacl>=1.2.1", "idna>=2.5", # validating SSL certs for IP addresses requires service_identity 18.1. "service_identity>=18.1.0", # Twisted 18.9 introduces some logger improvements that the structured # logger utilises "Twisted>=18.9.0", "treq>=15.1", # Twisted has required pyopenssl 16.0 since about Twisted 16.6. "pyopenssl>=16.0.0", "pyyaml>=3.11", "pyasn1>=0.1.9", "pyasn1-modules>=0.0.7", "bcrypt>=3.1.0", "pillow>=5.4.0", "sortedcontainers>=1.4.4", "pymacaroons>=0.13.0", "msgpack>=0.5.2", "phonenumbers>=8.2.0", # we use GaugeHistogramMetric, which was added in prom-client 0.4.0. "prometheus_client>=0.4.0", # we use `order`, which arrived in attrs 19.2.0. # Note: 21.1.0 broke `/sync`, see #9936 "attrs>=19.2.0,!=21.1.0", "netaddr>=0.7.18", "Jinja2>=2.9", "bleach>=1.4.3", "typing-extensions>=3.7.4", # We enforce that we have a `cryptography` version that bundles an `openssl` # with the latest security patches. "cryptography>=3.4.7", "ijson>=3.1", "matrix-common~=1.1.0", ] CONDITIONAL_REQUIREMENTS = { "matrix-synapse-ldap3": ["matrix-synapse-ldap3>=0.1"], "postgres": [ # we use execute_values with the fetch param, which arrived in psycopg 2.8. "psycopg2>=2.8 ; platform_python_implementation != 'PyPy'", "psycopg2cffi>=2.8 ; platform_python_implementation == 'PyPy'", "psycopg2cffi-compat==1.1 ; platform_python_implementation == 'PyPy'", ], "saml2": [ "pysaml2>=4.5.0", ], "oidc": ["authlib>=0.14.0"], # systemd-python is necessary for logging to the systemd journal via # `systemd.journal.JournalHandler`, as is documented in # `contrib/systemd/log_config.yaml`. "systemd": ["systemd-python>=231"], "url_preview": ["lxml>=4.2.0"], "sentry": ["sentry-sdk>=0.7.2"], "opentracing": ["jaeger-client>=4.0.0", "opentracing>=2.2.0"], "jwt": ["pyjwt>=1.6.4"], # hiredis is not a *strict* dependency, but it makes things much faster. # (if it is not installed, we fall back to slow code.) "redis": ["txredisapi>=1.4.7", "hiredis"], # Required to use experimental `caches.track_memory_usage` config option. "cache_memory": ["pympler"], } ALL_OPTIONAL_REQUIREMENTS: Set[str] = set() for name, optional_deps in CONDITIONAL_REQUIREMENTS.items(): # Exclude systemd as it's a system-based requirement. # Exclude lint as it's a dev-based requirement. if name not in ["systemd"]: ALL_OPTIONAL_REQUIREMENTS = set(optional_deps) | ALL_OPTIONAL_REQUIREMENTS # ensure there are no double-quote characters in any of the deps (otherwise the # 'pip install' incantation in DependencyException will break) for dep in itertools.chain( REQUIREMENTS, *CONDITIONAL_REQUIREMENTS.values(), ): if '"' in dep: raise Exception( "Dependency `%s` contains double-quote; use single-quotes instead" % (dep,) ) def list_requirements(): return list(set(REQUIREMENTS) | ALL_OPTIONAL_REQUIREMENTS) class DependencyException(Exception): @property def message(self): return "\n".join( [ "Missing Requirements: %s" % (", ".join(self.dependencies),), "To install run:", " pip install --upgrade --force %s" % (" ".join(self.dependencies),), "", ] ) @property def dependencies(self): for i in self.args[0]: yield '"' + i + '"' def check_requirements(for_feature=None): deps_needed = [] errors = [] if for_feature: reqs = CONDITIONAL_REQUIREMENTS[for_feature] else: reqs = REQUIREMENTS for dependency in reqs: try: _check_requirement(dependency) except VersionConflict as e: deps_needed.append(dependency) errors.append( "Needed %s, got %s==%s" % ( dependency, e.dist.project_name, # type: ignore[attr-defined] # noqa e.dist.version, # type: ignore[attr-defined] # noqa ) ) except DistributionNotFound: deps_needed.append(dependency) if for_feature: errors.append( "Needed %s for the '%s' feature but it was not installed" % (dependency, for_feature) ) else: errors.append("Needed %s but it was not installed" % (dependency,)) if not for_feature: # Check the optional dependencies are up to date. We allow them to not be # installed. OPTS: List[str] = sum(CONDITIONAL_REQUIREMENTS.values(), []) for dependency in OPTS: try: _check_requirement(dependency) except VersionConflict as e: deps_needed.append(dependency) errors.append( "Needed optional %s, got %s==%s" % ( dependency, e.dist.project_name, # type: ignore[attr-defined] # noqa e.dist.version, # type: ignore[attr-defined] # noqa ) ) except DistributionNotFound: # If it's not found, we don't care pass if deps_needed: for err in errors: logging.error(err) raise DependencyException(deps_needed) def _check_requirement(dependency_string): """Parses a dependency string, and checks if the specified requirement is installed Raises: VersionConflict if the requirement is installed, but with the the wrong version DistributionNotFound if nothing is found to provide the requirement """ req = Requirement.parse(dependency_string) # first check if the markers specify that this requirement needs installing if req.marker is not None and not req.marker.evaluate(): # not required for this environment return get_provider(req) if __name__ == "__main__": import sys sys.stdout.writelines(req + "\n" for req in list_requirements()) synapse-1.53.0/synapse/replication/000077500000000000000000000000001420514467300172635ustar00rootroot00000000000000synapse-1.53.0/synapse/replication/__init__.py000066400000000000000000000011021420514467300213660ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/replication/http/000077500000000000000000000000001420514467300202425ustar00rootroot00000000000000synapse-1.53.0/synapse/replication/http/__init__.py000066400000000000000000000035101420514467300223520ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING from synapse.http.server import JsonResource from synapse.replication.http import ( account_data, devices, federation, login, membership, presence, push, register, send_event, streams, ) if TYPE_CHECKING: from synapse.server import HomeServer REPLICATION_PREFIX = "/_synapse/replication" class ReplicationRestResource(JsonResource): def __init__(self, hs: "HomeServer"): # We enable extracting jaeger contexts here as these are internal APIs. super().__init__(hs, canonical_json=False, extract_context=True) self.register_servlets(hs) def register_servlets(self, hs: "HomeServer") -> None: send_event.register_servlets(hs, self) federation.register_servlets(hs, self) presence.register_servlets(hs, self) membership.register_servlets(hs, self) streams.register_servlets(hs, self) account_data.register_servlets(hs, self) push.register_servlets(hs, self) # The following can't currently be instantiated on workers. if hs.config.worker.worker_app is None: login.register_servlets(hs, self) register.register_servlets(hs, self) devices.register_servlets(hs, self) synapse-1.53.0/synapse/replication/http/_base.py000066400000000000000000000311761420514467300216750ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import abc import logging import re import urllib.parse from inspect import signature from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, List, Tuple from prometheus_client import Counter, Gauge from twisted.web.server import Request from synapse.api.errors import HttpResponseException, SynapseError from synapse.http import RequestTimedOutError from synapse.http.server import HttpServer from synapse.logging import opentracing from synapse.logging.opentracing import trace from synapse.types import JsonDict from synapse.util.caches.response_cache import ResponseCache from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) _pending_outgoing_requests = Gauge( "synapse_pending_outgoing_replication_requests", "Number of active outgoing replication requests, by replication method name", ["name"], ) _outgoing_request_counter = Counter( "synapse_outgoing_replication_requests", "Number of outgoing replication requests, by replication method name and result", ["name", "code"], ) class ReplicationEndpoint(metaclass=abc.ABCMeta): """Helper base class for defining new replication HTTP endpoints. This creates an endpoint under `/_synapse/replication/:NAME/:PATH_ARGS..` (with a `/:txn_id` suffix for cached requests), where NAME is a name, PATH_ARGS are a tuple of parameters to be encoded in the URL. For example, if `NAME` is "send_event" and `PATH_ARGS` is `("event_id",)`, with `CACHE` set to true then this generates an endpoint: /_synapse/replication/send_event/:event_id/:txn_id For POST/PUT requests the payload is serialized to json and sent as the body, while for GET requests the payload is added as query parameters. See `_serialize_payload` for details. Incoming requests are handled by overriding `_handle_request`. Servers must call `register` to register the path with the HTTP server. Requests can be sent by calling the client returned by `make_client`. Requests are sent to master process by default, but can be sent to other named processes by specifying an `instance_name` keyword argument. Attributes: NAME (str): A name for the endpoint, added to the path as well as used in logging and metrics. PATH_ARGS (tuple[str]): A list of parameters to be added to the path. Adding parameters to the path (rather than payload) can make it easier to follow along in the log files. METHOD (str): The method of the HTTP request, defaults to POST. Can be one of POST, PUT or GET. If GET then the payload is sent as query parameters rather than a JSON body. CACHE (bool): Whether server should cache the result of the request/ If true then transparently adds a txn_id to all requests, and `_handle_request` must return a Deferred. RETRY_ON_TIMEOUT(bool): Whether or not to retry the request when a 504 is received. """ NAME: str = abc.abstractproperty() # type: ignore PATH_ARGS: Tuple[str, ...] = abc.abstractproperty() # type: ignore METHOD = "POST" CACHE = True RETRY_ON_TIMEOUT = True def __init__(self, hs: "HomeServer"): if self.CACHE: self.response_cache: ResponseCache[str] = ResponseCache( hs.get_clock(), "repl." + self.NAME, timeout_ms=30 * 60 * 1000 ) # We reserve `instance_name` as a parameter to sending requests, so we # assert here that sub classes don't try and use the name. assert ( "instance_name" not in self.PATH_ARGS ), "`instance_name` is a reserved parameter name" assert ( "instance_name" not in signature(self.__class__._serialize_payload).parameters ), "`instance_name` is a reserved parameter name" assert self.METHOD in ("PUT", "POST", "GET") self._replication_secret = None if hs.config.worker.worker_replication_secret: self._replication_secret = hs.config.worker.worker_replication_secret def _check_auth(self, request: Request) -> None: # Get the authorization header. auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") if not auth_headers: raise RuntimeError("Missing Authorization header.") if len(auth_headers) > 1: raise RuntimeError("Too many Authorization headers.") parts = auth_headers[0].split(b" ") if parts[0] == b"Bearer" and len(parts) == 2: received_secret = parts[1].decode("ascii") if self._replication_secret == received_secret: # Success! return raise RuntimeError("Invalid Authorization header.") @abc.abstractmethod async def _serialize_payload(**kwargs) -> JsonDict: """Static method that is called when creating a request. Concrete implementations should have explicit parameters (rather than kwargs) so that an appropriate exception is raised if the client is called with unexpected parameters. All PATH_ARGS must appear in argument list. Returns: dict: If POST/PUT request then dictionary must be JSON serialisable, otherwise must be appropriate for adding as query args. """ return {} @abc.abstractmethod async def _handle_request( self, request: Request, **kwargs: Any ) -> Tuple[int, JsonDict]: """Handle incoming request. This is called with the request object and PATH_ARGS. Returns: HTTP status code and a JSON serialisable dict to be used as response body of request. """ @classmethod def make_client(cls, hs: "HomeServer") -> Callable: """Create a client that makes requests. Returns a callable that accepts the same parameters as `_serialize_payload`, and also accepts an optional `instance_name` parameter to specify which instance to hit (the instance must be in the `instance_map` config). """ clock = hs.get_clock() client = hs.get_simple_http_client() local_instance_name = hs.get_instance_name() master_host = hs.config.worker.worker_replication_host master_port = hs.config.worker.worker_replication_http_port instance_map = hs.config.worker.instance_map outgoing_gauge = _pending_outgoing_requests.labels(cls.NAME) replication_secret = None if hs.config.worker.worker_replication_secret: replication_secret = hs.config.worker.worker_replication_secret.encode( "ascii" ) @trace(opname="outgoing_replication_request") async def send_request(*, instance_name: str = "master", **kwargs: Any) -> Any: with outgoing_gauge.track_inprogress(): if instance_name == local_instance_name: raise Exception("Trying to send HTTP request to self") if instance_name == "master": host = master_host port = master_port elif instance_name in instance_map: host = instance_map[instance_name].host port = instance_map[instance_name].port else: raise Exception( "Instance %r not in 'instance_map' config" % (instance_name,) ) data = await cls._serialize_payload(**kwargs) url_args = [ urllib.parse.quote(kwargs[name], safe="") for name in cls.PATH_ARGS ] if cls.CACHE: txn_id = random_string(10) url_args.append(txn_id) if cls.METHOD == "POST": request_func: Callable[ ..., Awaitable[Any] ] = client.post_json_get_json elif cls.METHOD == "PUT": request_func = client.put_json elif cls.METHOD == "GET": request_func = client.get_json else: # We have already asserted in the constructor that a # compatible was picked, but lets be paranoid. raise Exception( "Unknown METHOD on %s replication endpoint" % (cls.NAME,) ) uri = "http://%s:%s/_synapse/replication/%s/%s" % ( host, port, cls.NAME, "/".join(url_args), ) try: # We keep retrying the same request for timeouts. This is so that we # have a good idea that the request has either succeeded or failed # on the master, and so whether we should clean up or not. while True: headers: Dict[bytes, List[bytes]] = {} # Add an authorization header, if configured. if replication_secret: headers[b"Authorization"] = [ b"Bearer " + replication_secret ] opentracing.inject_header_dict(headers, check_destination=False) try: result = await request_func(uri, data, headers=headers) break except RequestTimedOutError: if not cls.RETRY_ON_TIMEOUT: raise logger.warning("%s request timed out; retrying", cls.NAME) # If we timed out we probably don't need to worry about backing # off too much, but lets just wait a little anyway. await clock.sleep(1) except HttpResponseException as e: # We convert to SynapseError as we know that it was a SynapseError # on the main process that we should send to the client. (And # importantly, not stack traces everywhere) _outgoing_request_counter.labels(cls.NAME, e.code).inc() raise e.to_synapse_error() except Exception as e: _outgoing_request_counter.labels(cls.NAME, "ERR").inc() raise SynapseError(502, "Failed to talk to main process") from e _outgoing_request_counter.labels(cls.NAME, 200).inc() return result return send_request def register(self, http_server: HttpServer) -> None: """Called by the server to register this as a handler to the appropriate path. """ url_args = list(self.PATH_ARGS) method = self.METHOD if self.CACHE: url_args.append("txn_id") args = "/".join("(?P<%s>[^/]+)" % (arg,) for arg in url_args) pattern = re.compile("^/_synapse/replication/%s/%s$" % (self.NAME, args)) http_server.register_paths( method, [pattern], self._check_auth_and_handle, self.__class__.__name__, ) async def _check_auth_and_handle( self, request: Request, **kwargs: Any ) -> Tuple[int, JsonDict]: """Called on new incoming requests when caching is enabled. Checks if there is a cached response for the request and returns that, otherwise calls `_handle_request` and caches its response. """ # We just use the txn_id here, but we probably also want to use the # other PATH_ARGS as well. # Check the authorization headers before handling the request. if self._replication_secret: self._check_auth(request) if self.CACHE: txn_id = kwargs.pop("txn_id") return await self.response_cache.wrap( txn_id, self._handle_request, request, **kwargs ) return await self._handle_request(request, **kwargs) synapse-1.53.0/synapse/replication/http/account_data.py000066400000000000000000000135521420514467300232470ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationUserAccountDataRestServlet(ReplicationEndpoint): """Add user account data on the appropriate account data worker. Request format: POST /_synapse/replication/add_user_account_data/:user_id/:type { "content": { ... }, } """ NAME = "add_user_account_data" PATH_ARGS = ("user_id", "account_data_type") CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.handler = hs.get_account_data_handler() self.clock = hs.get_clock() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, account_data_type: str, content: JsonDict ) -> JsonDict: payload = { "content": content, } return payload async def _handle_request( # type: ignore[override] self, request: Request, user_id: str, account_data_type: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) max_stream_id = await self.handler.add_account_data_for_user( user_id, account_data_type, content["content"] ) return 200, {"max_stream_id": max_stream_id} class ReplicationRoomAccountDataRestServlet(ReplicationEndpoint): """Add room account data on the appropriate account data worker. Request format: POST /_synapse/replication/add_room_account_data/:user_id/:room_id/:account_data_type { "content": { ... }, } """ NAME = "add_room_account_data" PATH_ARGS = ("user_id", "room_id", "account_data_type") CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.handler = hs.get_account_data_handler() self.clock = hs.get_clock() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, room_id: str, account_data_type: str, content: JsonDict ) -> JsonDict: payload = { "content": content, } return payload async def _handle_request( # type: ignore[override] self, request: Request, user_id: str, room_id: str, account_data_type: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) max_stream_id = await self.handler.add_account_data_to_room( user_id, room_id, account_data_type, content["content"] ) return 200, {"max_stream_id": max_stream_id} class ReplicationAddTagRestServlet(ReplicationEndpoint): """Add tag on the appropriate account data worker. Request format: POST /_synapse/replication/add_tag/:user_id/:room_id/:tag { "content": { ... }, } """ NAME = "add_tag" PATH_ARGS = ("user_id", "room_id", "tag") CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.handler = hs.get_account_data_handler() self.clock = hs.get_clock() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, room_id: str, tag: str, content: JsonDict ) -> JsonDict: payload = { "content": content, } return payload async def _handle_request( # type: ignore[override] self, request: Request, user_id: str, room_id: str, tag: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) max_stream_id = await self.handler.add_tag_to_room( user_id, room_id, tag, content["content"] ) return 200, {"max_stream_id": max_stream_id} class ReplicationRemoveTagRestServlet(ReplicationEndpoint): """Remove tag on the appropriate account data worker. Request format: POST /_synapse/replication/remove_tag/:user_id/:room_id/:tag {} """ NAME = "remove_tag" PATH_ARGS = ( "user_id", "room_id", "tag", ) CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.handler = hs.get_account_data_handler() self.clock = hs.get_clock() @staticmethod async def _serialize_payload(user_id: str, room_id: str, tag: str) -> JsonDict: # type: ignore[override] return {} async def _handle_request( # type: ignore[override] self, request: Request, user_id: str, room_id: str, tag: str ) -> Tuple[int, JsonDict]: max_stream_id = await self.handler.remove_tag_from_room( user_id, room_id, tag, ) return 200, {"max_stream_id": max_stream_id} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationUserAccountDataRestServlet(hs).register(http_server) ReplicationRoomAccountDataRestServlet(hs).register(http_server) ReplicationAddTagRestServlet(hs).register(http_server) ReplicationRemoveTagRestServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/devices.py000066400000000000000000000047231420514467300222440ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationUserDevicesResyncRestServlet(ReplicationEndpoint): """Ask master to resync the device list for a user by contacting their server. This must happen on master so that the results can be correctly cached in the database and streamed to workers. Request format: POST /_synapse/replication/user_device_resync/:user_id {} Response is equivalent to ` /_matrix/federation/v1/user/devices/:user_id` response, e.g.: { "user_id": "@alice:example.org", "devices": [ { "device_id": "JLAFKJWSCS", "keys": { ... }, "device_display_name": "Alice's Mobile Phone" } ] } """ NAME = "user_device_resync" PATH_ARGS = ("user_id",) CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.device_list_updater = hs.get_device_handler().device_list_updater self.store = hs.get_datastore() self.clock = hs.get_clock() @staticmethod async def _serialize_payload(user_id: str) -> JsonDict: # type: ignore[override] return {} async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: user_devices = await self.device_list_updater.user_device_resync(user_id) return 200, user_devices def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationUserDevicesResyncRestServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/federation.py000066400000000000000000000240711420514467300227400ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, List, Tuple from twisted.web.server import Request from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.events import EventBase, make_event_from_dict from synapse.events.snapshot import EventContext from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer from synapse.storage.databases.main import DataStore logger = logging.getLogger(__name__) class ReplicationFederationSendEventsRestServlet(ReplicationEndpoint): """Handles events newly received from federation, including persisting and notifying. Returns the maximum stream ID of the persisted events. The API looks like: POST /_synapse/replication/fed_send_events/:txn_id { "events": [{ "event": { .. serialized event .. }, "room_version": .., // "1", "2", "3", etc: the version of the room // containing the event "event_format_version": .., // 1,2,3 etc: the event format version "internal_metadata": { .. serialized internal_metadata .. }, "outlier": true|false, "rejected_reason": .., // The event.rejected_reason field "context": { .. serialized event context .. }, }], "backfilled": false } 200 OK { "max_stream_id": 32443, } """ NAME = "fed_send_events" PATH_ARGS = () def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.storage = hs.get_storage() self.clock = hs.get_clock() self.federation_event_handler = hs.get_federation_event_handler() @staticmethod async def _serialize_payload( # type: ignore[override] store: "DataStore", room_id: str, event_and_contexts: List[Tuple[EventBase, EventContext]], backfilled: bool, ) -> JsonDict: """ Args: store room_id event_and_contexts backfilled: Whether or not the events are the result of backfilling """ event_payloads = [] for event, context in event_and_contexts: serialized_context = await context.serialize(event, store) event_payloads.append( { "event": event.get_pdu_json(), "room_version": event.room_version.identifier, "event_format_version": event.format_version, "internal_metadata": event.internal_metadata.get_dict(), "outlier": event.internal_metadata.is_outlier(), "rejected_reason": event.rejected_reason, "context": serialized_context, } ) payload = { "events": event_payloads, "backfilled": backfilled, "room_id": room_id, } return payload async def _handle_request(self, request: Request) -> Tuple[int, JsonDict]: # type: ignore[override] with Measure(self.clock, "repl_fed_send_events_parse"): content = parse_json_object_from_request(request) room_id = content["room_id"] backfilled = content["backfilled"] event_payloads = content["events"] event_and_contexts = [] for event_payload in event_payloads: event_dict = event_payload["event"] room_ver = KNOWN_ROOM_VERSIONS[event_payload["room_version"]] internal_metadata = event_payload["internal_metadata"] rejected_reason = event_payload["rejected_reason"] event = make_event_from_dict( event_dict, room_ver, internal_metadata, rejected_reason ) event.internal_metadata.outlier = event_payload["outlier"] context = EventContext.deserialize( self.storage, event_payload["context"] ) event_and_contexts.append((event, context)) logger.info("Got %d events from federation", len(event_and_contexts)) max_stream_id = await self.federation_event_handler.persist_events_and_notify( room_id, event_and_contexts, backfilled ) return 200, {"max_stream_id": max_stream_id} class ReplicationFederationSendEduRestServlet(ReplicationEndpoint): """Handles EDUs newly received from federation, including persisting and notifying. Request format: POST /_synapse/replication/fed_send_edu/:edu_type/:txn_id { "origin": ..., "content: { ... } } """ NAME = "fed_send_edu" PATH_ARGS = ("edu_type",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.clock = hs.get_clock() self.registry = hs.get_federation_registry() @staticmethod async def _serialize_payload( # type: ignore[override] edu_type: str, origin: str, content: JsonDict ) -> JsonDict: return {"origin": origin, "content": content} async def _handle_request( # type: ignore[override] self, request: Request, edu_type: str ) -> Tuple[int, JsonDict]: with Measure(self.clock, "repl_fed_send_edu_parse"): content = parse_json_object_from_request(request) origin = content["origin"] edu_content = content["content"] logger.info("Got %r edu from %s", edu_type, origin) await self.registry.on_edu(edu_type, origin, edu_content) return 200, {} class ReplicationGetQueryRestServlet(ReplicationEndpoint): """Handle responding to queries from federation. Request format: POST /_synapse/replication/fed_query/:query_type { "args": { ... } } """ NAME = "fed_query" PATH_ARGS = ("query_type",) # This is a query, so let's not bother caching CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.clock = hs.get_clock() self.registry = hs.get_federation_registry() @staticmethod async def _serialize_payload(query_type: str, args: JsonDict) -> JsonDict: # type: ignore[override] """ Args: query_type args: The arguments received for the given query type """ return {"args": args} async def _handle_request( # type: ignore[override] self, request: Request, query_type: str ) -> Tuple[int, JsonDict]: with Measure(self.clock, "repl_fed_query_parse"): content = parse_json_object_from_request(request) args = content["args"] args["origin"] = content["origin"] logger.info("Got %r query from %s", query_type, args["origin"]) result = await self.registry.on_query(query_type, args) return 200, result class ReplicationCleanRoomRestServlet(ReplicationEndpoint): """Called to clean up any data in DB for a given room, ready for the server to join the room. Request format: POST /_synapse/replication/fed_cleanup_room/:room_id/:txn_id {} """ NAME = "fed_cleanup_room" PATH_ARGS = ("room_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() @staticmethod async def _serialize_payload(room_id: str) -> JsonDict: # type: ignore[override] """ Args: room_id """ return {} async def _handle_request( # type: ignore[override] self, request: Request, room_id: str ) -> Tuple[int, JsonDict]: await self.store.clean_room_for_join(room_id) return 200, {} class ReplicationStoreRoomOnOutlierMembershipRestServlet(ReplicationEndpoint): """Called to clean up any data in DB for a given room, ready for the server to join the room. Request format: POST /_synapse/replication/store_room_on_outlier_membership/:room_id/:txn_id { "room_version": "1", } """ NAME = "store_room_on_outlier_membership" PATH_ARGS = ("room_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() @staticmethod async def _serialize_payload(room_id: str, room_version: RoomVersion) -> JsonDict: # type: ignore[override] return {"room_version": room_version.identifier} async def _handle_request( # type: ignore[override] self, request: Request, room_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) room_version = KNOWN_ROOM_VERSIONS[content["room_version"]] await self.store.maybe_store_room_on_outlier_membership(room_id, room_version) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationFederationSendEventsRestServlet(hs).register(http_server) ReplicationFederationSendEduRestServlet(hs).register(http_server) ReplicationGetQueryRestServlet(hs).register(http_server) ReplicationCleanRoomRestServlet(hs).register(http_server) ReplicationStoreRoomOnOutlierMembershipRestServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/login.py000066400000000000000000000070571420514467300217350ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional, Tuple, cast from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RegisterDeviceReplicationServlet(ReplicationEndpoint): """Ensure a device is registered, generating a new access token for the device. Used during registration and login. """ NAME = "device_check_registered" PATH_ARGS = ("user_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.registration_handler = hs.get_registration_handler() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, device_id: Optional[str], initial_display_name: Optional[str], is_guest: bool, is_appservice_ghost: bool, should_issue_refresh_token: bool, auth_provider_id: Optional[str], auth_provider_session_id: Optional[str], ) -> JsonDict: """ Args: user_id device_id: Device ID to use, if None a new one is generated. initial_display_name is_guest is_appservice_ghost should_issue_refresh_token """ return { "device_id": device_id, "initial_display_name": initial_display_name, "is_guest": is_guest, "is_appservice_ghost": is_appservice_ghost, "should_issue_refresh_token": should_issue_refresh_token, "auth_provider_id": auth_provider_id, "auth_provider_session_id": auth_provider_session_id, } async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) device_id = content["device_id"] initial_display_name = content["initial_display_name"] is_guest = content["is_guest"] is_appservice_ghost = content["is_appservice_ghost"] should_issue_refresh_token = content["should_issue_refresh_token"] auth_provider_id = content["auth_provider_id"] auth_provider_session_id = content["auth_provider_session_id"] res = await self.registration_handler.register_device_inner( user_id, device_id, initial_display_name, is_guest, is_appservice_ghost=is_appservice_ghost, should_issue_refresh_token=should_issue_refresh_token, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) return 200, cast(JsonDict, res) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: RegisterDeviceReplicationServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/membership.py000066400000000000000000000262001420514467300227470ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, List, Optional, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict, Requester, UserID from synapse.util.distributor import user_left_room if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationRemoteJoinRestServlet(ReplicationEndpoint): """Does a remote join for the given user to the given room Request format: POST /_synapse/replication/remote_join/:room_id/:user_id { "requester": ..., "remote_room_hosts": [...], "content": { ... } } """ NAME = "remote_join" PATH_ARGS = ("room_id", "user_id") def __init__(self, hs: "HomeServer"): super().__init__(hs) self.federation_handler = hs.get_federation_handler() self.store = hs.get_datastore() self.clock = hs.get_clock() @staticmethod async def _serialize_payload( # type: ignore[override] requester: Requester, room_id: str, user_id: str, remote_room_hosts: List[str], content: JsonDict, ) -> JsonDict: """ Args: requester: The user making the request according to the access token room_id: The ID of the room. user_id: The ID of the user. remote_room_hosts: Servers to try and join via content: The event content to use for the join event Returns: A dict representing the payload of the request. """ return { "requester": requester.serialize(), "remote_room_hosts": remote_room_hosts, "content": content, } async def _handle_request( # type: ignore[override] self, request: SynapseRequest, room_id: str, user_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester logger.info("remote_join: %s into room: %s", user_id, room_id) event_id, stream_id = await self.federation_handler.do_invite_join( remote_room_hosts, room_id, user_id, event_content ) return 200, {"event_id": event_id, "stream_id": stream_id} class ReplicationRemoteKnockRestServlet(ReplicationEndpoint): """Perform a remote knock for the given user on the given room Request format: POST /_synapse/replication/remote_knock/:room_id/:user_id { "requester": ..., "remote_room_hosts": [...], "content": { ... } } """ NAME = "remote_knock" PATH_ARGS = ("room_id", "user_id") def __init__(self, hs: "HomeServer"): super().__init__(hs) self.federation_handler = hs.get_federation_handler() self.store = hs.get_datastore() self.clock = hs.get_clock() @staticmethod async def _serialize_payload( # type: ignore[override] requester: Requester, room_id: str, user_id: str, remote_room_hosts: List[str], content: JsonDict, ) -> JsonDict: """ Args: requester: The user making the request, according to the access token. room_id: The ID of the room to knock on. user_id: The ID of the knocking user. remote_room_hosts: Servers to try and send the knock via. content: The event content to use for the knock event. """ return { "requester": requester.serialize(), "remote_room_hosts": remote_room_hosts, "content": content, } async def _handle_request( # type: ignore[override] self, request: SynapseRequest, room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester logger.debug("remote_knock: %s on room: %s", user_id, room_id) event_id, stream_id = await self.federation_handler.do_knock( remote_room_hosts, room_id, user_id, event_content ) return 200, {"event_id": event_id, "stream_id": stream_id} class ReplicationRemoteRejectInviteRestServlet(ReplicationEndpoint): """Rejects an out-of-band invite we have received from a remote server Request format: POST /_synapse/replication/remote_reject_invite/:event_id { "txn_id": ..., "requester": ..., "content": { ... } } """ NAME = "remote_reject_invite" PATH_ARGS = ("invite_event_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.clock = hs.get_clock() self.member_handler = hs.get_room_member_handler() @staticmethod async def _serialize_payload( # type: ignore[override] invite_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> JsonDict: """ Args: invite_event_id: The ID of the invite to be rejected. txn_id: Optional transaction ID supplied by the client requester: User making the rejection request, according to the access token content: Additional content to include in the rejection event. Normally an empty dict. Returns: A dict representing the payload of the request. """ return { "txn_id": txn_id, "requester": requester.serialize(), "content": content, } async def _handle_request( # type: ignore[override] self, request: SynapseRequest, invite_event_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) txn_id = content["txn_id"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester # hopefully we're now on the master, so this won't recurse! event_id, stream_id = await self.member_handler.remote_reject_invite( invite_event_id, txn_id, requester, event_content, ) return 200, {"event_id": event_id, "stream_id": stream_id} class ReplicationRemoteRescindKnockRestServlet(ReplicationEndpoint): """Rescinds a local knock made on a remote room Request format: POST /_synapse/replication/remote_rescind_knock/:event_id { "txn_id": ..., "requester": ..., "content": { ... } } """ NAME = "remote_rescind_knock" PATH_ARGS = ("knock_event_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.clock = hs.get_clock() self.member_handler = hs.get_room_member_handler() @staticmethod async def _serialize_payload( # type: ignore[override] knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> JsonDict: """ Args: knock_event_id: The ID of the knock to be rescinded. txn_id: An optional transaction ID supplied by the client. requester: The user making the rescind request, according to the access token. content: The content to include in the rescind event. """ return { "txn_id": txn_id, "requester": requester.serialize(), "content": content, } async def _handle_request( # type: ignore[override] self, request: SynapseRequest, knock_event_id: str, ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) txn_id = content["txn_id"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester # hopefully we're now on the master, so this won't recurse! event_id, stream_id = await self.member_handler.remote_rescind_knock( knock_event_id, txn_id, requester, event_content, ) return 200, {"event_id": event_id, "stream_id": stream_id} class ReplicationUserJoinedLeftRoomRestServlet(ReplicationEndpoint): """Notifies that a user has joined or left the room Request format: POST /_synapse/replication/membership_change/:room_id/:user_id/:change {} """ NAME = "membership_change" PATH_ARGS = ("room_id", "user_id", "change") CACHE = False # No point caching as should return instantly. def __init__(self, hs: "HomeServer"): super().__init__(hs) self.registeration_handler = hs.get_registration_handler() self.store = hs.get_datastore() self.clock = hs.get_clock() self.distributor = hs.get_distributor() @staticmethod async def _serialize_payload( # type: ignore[override] room_id: str, user_id: str, change: str ) -> JsonDict: """ Args: room_id: The ID of the room. user_id: The ID of the user. change: "left" Returns: A dict representing the payload of the request. """ assert change == "left" return {} async def _handle_request( # type: ignore[override] self, request: Request, room_id: str, user_id: str, change: str ) -> Tuple[int, JsonDict]: logger.info("user membership change: %s in %s", user_id, room_id) user = UserID.from_string(user_id) if change == "left": user_left_room(self.distributor, user, room_id) else: raise Exception("Unrecognized change: %r", change) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationRemoteJoinRestServlet(hs).register(http_server) ReplicationRemoteRejectInviteRestServlet(hs).register(http_server) ReplicationUserJoinedLeftRoomRestServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/presence.py000066400000000000000000000066701420514467300224310ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationBumpPresenceActiveTime(ReplicationEndpoint): """We've seen the user do something that indicates they're interacting with the app. The POST looks like: POST /_synapse/replication/bump_presence_active_time/ 200 OK {} """ NAME = "bump_presence_active_time" PATH_ARGS = ("user_id",) METHOD = "POST" CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self._presence_handler = hs.get_presence_handler() @staticmethod async def _serialize_payload(user_id: str) -> JsonDict: # type: ignore[override] return {} async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: await self._presence_handler.bump_presence_active_time( UserID.from_string(user_id) ) return (200, {}) class ReplicationPresenceSetState(ReplicationEndpoint): """Set the presence state for a user. The POST looks like: POST /_synapse/replication/presence_set_state/ { "state": { ... }, "ignore_status_msg": false, "force_notify": false } 200 OK {} """ NAME = "presence_set_state" PATH_ARGS = ("user_id",) METHOD = "POST" CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self._presence_handler = hs.get_presence_handler() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, state: JsonDict, ignore_status_msg: bool = False, force_notify: bool = False, ) -> JsonDict: return { "state": state, "ignore_status_msg": ignore_status_msg, "force_notify": force_notify, } async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) await self._presence_handler.set_state( UserID.from_string(user_id), content["state"], content["ignore_status_msg"], content["force_notify"], ) return (200, {}) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationBumpPresenceActiveTime(hs).register(http_server) ReplicationPresenceSetState(hs).register(http_server) synapse-1.53.0/synapse/replication/http/push.py000066400000000000000000000042651420514467300216020ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationRemovePusherRestServlet(ReplicationEndpoint): """Deletes the given pusher. Request format: POST /_synapse/replication/remove_pusher/:user_id { "app_id": "", "pushkey": "" } """ NAME = "add_user_account_data" PATH_ARGS = ("user_id",) CACHE = False def __init__(self, hs: "HomeServer"): super().__init__(hs) self.pusher_pool = hs.get_pusherpool() @staticmethod async def _serialize_payload(app_id: str, pushkey: str, user_id: str) -> JsonDict: # type: ignore[override] payload = { "app_id": app_id, "pushkey": pushkey, } return payload async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) app_id = content["app_id"] pushkey = content["pushkey"] await self.pusher_pool.remove_pusher(app_id, pushkey, user_id) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationRemovePusherRestServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/register.py000066400000000000000000000125401420514467300224420ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationRegisterServlet(ReplicationEndpoint): """Register a new user""" NAME = "register_user" PATH_ARGS = ("user_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.registration_handler = hs.get_registration_handler() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, password_hash: Optional[str], was_guest: bool, make_guest: bool, appservice_id: Optional[str], create_profile_with_displayname: Optional[str], admin: bool, user_type: Optional[str], address: Optional[str], shadow_banned: bool, ) -> JsonDict: """ Args: user_id: The desired user ID to register. password_hash: Optional. The password hash for this user. was_guest: Optional. Whether this is a guest account being upgraded to a non-guest account. make_guest: True if the the new user should be guest, false to add a regular user account. appservice_id: The ID of the appservice registering the user. create_profile_with_displayname: Optionally create a profile for the user, setting their displayname to the given value admin: is an admin user? user_type: type of user. One of the values from api.constants.UserTypes, or None for a normal user. address: the IP address used to perform the regitration. shadow_banned: Whether to shadow-ban the user """ return { "password_hash": password_hash, "was_guest": was_guest, "make_guest": make_guest, "appservice_id": appservice_id, "create_profile_with_displayname": create_profile_with_displayname, "admin": admin, "user_type": user_type, "address": address, "shadow_banned": shadow_banned, } async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) await self.registration_handler.check_registration_ratelimit(content["address"]) await self.registration_handler.register_with_store( user_id=user_id, password_hash=content["password_hash"], was_guest=content["was_guest"], make_guest=content["make_guest"], appservice_id=content["appservice_id"], create_profile_with_displayname=content["create_profile_with_displayname"], admin=content["admin"], user_type=content["user_type"], address=content["address"], shadow_banned=content["shadow_banned"], ) return 200, {} class ReplicationPostRegisterActionsServlet(ReplicationEndpoint): """Run any post registration actions""" NAME = "post_register" PATH_ARGS = ("user_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastore() self.registration_handler = hs.get_registration_handler() @staticmethod async def _serialize_payload( # type: ignore[override] user_id: str, auth_result: JsonDict, access_token: Optional[str] ) -> JsonDict: """ Args: user_id: The user ID that consented auth_result: The authenticated credentials of the newly registered user. access_token: The access token of the newly logged in device, or None if `inhibit_login` enabled. """ return {"auth_result": auth_result, "access_token": access_token} async def _handle_request( # type: ignore[override] self, request: Request, user_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) auth_result = content["auth_result"] access_token = content["access_token"] await self.registration_handler.post_registration_actions( user_id=user_id, auth_result=auth_result, access_token=access_token ) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationRegisterServlet(hs).register(http_server) ReplicationPostRegisterActionsServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/send_event.py000066400000000000000000000124251420514467300227520ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, List, Tuple from twisted.web.server import Request from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.events import EventBase, make_event_from_dict from synapse.events.snapshot import EventContext from synapse.http.server import HttpServer from synapse.http.servlet import parse_json_object_from_request from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict, Requester, UserID from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer from synapse.storage.databases.main import DataStore logger = logging.getLogger(__name__) class ReplicationSendEventRestServlet(ReplicationEndpoint): """Handles events newly created on workers, including persisting and notifying. The API looks like: POST /_synapse/replication/send_event/:event_id/:txn_id { "event": { .. serialized event .. }, "room_version": .., // "1", "2", "3", etc: the version of the room // containing the event "event_format_version": .., // 1,2,3 etc: the event format version "internal_metadata": { .. serialized internal_metadata .. }, "outlier": true|false, "rejected_reason": .., // The event.rejected_reason field "context": { .. serialized event context .. }, "requester": { .. serialized requester .. }, "ratelimit": true, "extra_users": [], } 200 OK { "stream_id": 12345, "event_id": "$abcdef..." } The returned event ID may not match the sent event if it was deduplicated. """ NAME = "send_event" PATH_ARGS = ("event_id",) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.event_creation_handler = hs.get_event_creation_handler() self.store = hs.get_datastore() self.storage = hs.get_storage() self.clock = hs.get_clock() @staticmethod async def _serialize_payload( # type: ignore[override] event_id: str, store: "DataStore", event: EventBase, context: EventContext, requester: Requester, ratelimit: bool, extra_users: List[UserID], ) -> JsonDict: """ Args: event_id store requester event context ratelimit extra_users: Any extra users to notify about event """ serialized_context = await context.serialize(event, store) payload = { "event": event.get_pdu_json(), "room_version": event.room_version.identifier, "event_format_version": event.format_version, "internal_metadata": event.internal_metadata.get_dict(), "outlier": event.internal_metadata.is_outlier(), "rejected_reason": event.rejected_reason, "context": serialized_context, "requester": requester.serialize(), "ratelimit": ratelimit, "extra_users": [u.to_string() for u in extra_users], } return payload async def _handle_request( # type: ignore[override] self, request: Request, event_id: str ) -> Tuple[int, JsonDict]: with Measure(self.clock, "repl_send_event_parse"): content = parse_json_object_from_request(request) event_dict = content["event"] room_ver = KNOWN_ROOM_VERSIONS[content["room_version"]] internal_metadata = content["internal_metadata"] rejected_reason = content["rejected_reason"] event = make_event_from_dict( event_dict, room_ver, internal_metadata, rejected_reason ) event.internal_metadata.outlier = content["outlier"] requester = Requester.deserialize(self.store, content["requester"]) context = EventContext.deserialize(self.storage, content["context"]) ratelimit = content["ratelimit"] extra_users = [UserID.from_string(u) for u in content["extra_users"]] logger.info( "Got event to send with ID: %s into room: %s", event.event_id, event.room_id ) event = await self.event_creation_handler.persist_and_notify_client_event( requester, event, context, ratelimit=ratelimit, extra_users=extra_users ) return ( 200, { "stream_id": event.internal_metadata.stream_ordering, "event_id": event.event_id, }, ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationSendEventRestServlet(hs).register(http_server) synapse-1.53.0/synapse/replication/http/streams.py000066400000000000000000000055601420514467300223000ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.api.errors import SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import parse_integer from synapse.replication.http._base import ReplicationEndpoint from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReplicationGetStreamUpdates(ReplicationEndpoint): """Fetches stream updates from a server. Used for streams not persisted to the database, e.g. typing notifications. The API looks like: GET /_synapse/replication/get_repl_stream_updates/?from_token=0&to_token=10 200 OK { updates: [ ... ], upto_token: 10, limited: False, } If there are more rows than can sensibly be returned in one lump, `limited` will be set to true, and the caller should call again with a new `from_token`. """ NAME = "get_repl_stream_updates" PATH_ARGS = ("stream_name",) METHOD = "GET" def __init__(self, hs: "HomeServer"): super().__init__(hs) self._instance_name = hs.get_instance_name() self.streams = hs.get_replication_streams() @staticmethod async def _serialize_payload( # type: ignore[override] stream_name: str, from_token: int, upto_token: int ) -> JsonDict: return {"from_token": from_token, "upto_token": upto_token} async def _handle_request( # type: ignore[override] self, request: Request, stream_name: str ) -> Tuple[int, JsonDict]: stream = self.streams.get(stream_name) if stream is None: raise SynapseError(400, "Unknown stream") from_token = parse_integer(request, "from_token", required=True) upto_token = parse_integer(request, "upto_token", required=True) updates, upto_token, limited = await stream.get_updates_since( self._instance_name, from_token, upto_token ) return ( 200, {"updates": updates, "upto_token": upto_token, "limited": limited}, ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReplicationGetStreamUpdates(hs).register(http_server) synapse-1.53.0/synapse/replication/slave/000077500000000000000000000000001420514467300203755ustar00rootroot00000000000000synapse-1.53.0/synapse/replication/slave/__init__.py000066400000000000000000000011021420514467300225000ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/replication/slave/storage/000077500000000000000000000000001420514467300220415ustar00rootroot00000000000000synapse-1.53.0/synapse/replication/slave/storage/__init__.py000066400000000000000000000011021420514467300241440ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/replication/slave/storage/_base.py000066400000000000000000000037101420514467300234650ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore from synapse.storage.engines import PostgresEngine from synapse.storage.util.id_generators import MultiWriterIdGenerator if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class BaseSlavedStore(CacheInvalidationWorkerStore): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) if isinstance(self.database_engine, PostgresEngine): self._cache_id_gen: Optional[ MultiWriterIdGenerator ] = MultiWriterIdGenerator( db_conn, database, stream_name="caches", instance_name=hs.get_instance_name(), tables=[ ( "cache_invalidation_stream_by_instance", "instance_name", "stream_id", ) ], sequence_name="cache_invalidation_stream_seq", writers=[], ) else: self._cache_id_gen = None self.hs = hs synapse-1.53.0/synapse/replication/slave/storage/_slaved_id_tracker.py000066400000000000000000000034511420514467300262220ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import List, Optional, Tuple from synapse.storage.database import LoggingDatabaseConnection from synapse.storage.util.id_generators import AbstractStreamIdTracker, _load_current_id class SlavedIdTracker(AbstractStreamIdTracker): """Tracks the "current" stream ID of a stream with a single writer. See `AbstractStreamIdTracker` for more details. Note that this class does not work correctly when there are multiple writers. """ def __init__( self, db_conn: LoggingDatabaseConnection, table: str, column: str, extra_tables: Optional[List[Tuple[str, str]]] = None, step: int = 1, ): self.step = step self._current = _load_current_id(db_conn, table, column, step) if extra_tables: for table, column in extra_tables: self.advance(None, _load_current_id(db_conn, table, column)) def advance(self, instance_name: Optional[str], new_id: int) -> None: self._current = (max if self.step > 0 else min)(self._current, new_id) def get_current_token(self) -> int: return self._current def get_current_token_for_writer(self, instance_name: str) -> int: return self.get_current_token() synapse-1.53.0/synapse/replication/slave/storage/account_data.py000066400000000000000000000016311420514467300250410ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.storage.databases.main.account_data import AccountDataWorkerStore from synapse.storage.databases.main.tags import TagsWorkerStore class SlavedAccountDataStore(TagsWorkerStore, AccountDataWorkerStore, BaseSlavedStore): pass synapse-1.53.0/synapse/replication/slave/storage/appservice.py000066400000000000000000000015631420514467300245610ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.storage.databases.main.appservice import ( ApplicationServiceTransactionWorkerStore, ApplicationServiceWorkerStore, ) class SlavedApplicationServiceStore( ApplicationServiceTransactionWorkerStore, ApplicationServiceWorkerStore ): pass synapse-1.53.0/synapse/replication/slave/storage/client_ips.py000066400000000000000000000036341420514467300245520ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.client_ips import LAST_SEEN_GRANULARITY from synapse.util.caches.lrucache import LruCache from ._base import BaseSlavedStore if TYPE_CHECKING: from synapse.server import HomeServer class SlavedClientIpStore(BaseSlavedStore): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) self.client_ip_last_seen: LruCache[tuple, int] = LruCache( cache_name="client_ip_last_seen", max_size=50000 ) async def insert_client_ip( self, user_id: str, access_token: str, ip: str, user_agent: str, device_id: str ) -> None: now = int(self._clock.time_msec()) key = (user_id, access_token, ip) try: last_seen = self.client_ip_last_seen.get(key) except KeyError: last_seen = None # Rate-limited inserts if last_seen is not None and (now - last_seen) < LAST_SEEN_GRANULARITY: return self.client_ip_last_seen.set(key, now) self.hs.get_tcp_replication().send_user_ip( user_id, access_token, ip, user_agent, device_id, now ) synapse-1.53.0/synapse/replication/slave/storage/deviceinbox.py000066400000000000000000000014471420514467300247200ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.storage.databases.main.deviceinbox import DeviceInboxWorkerStore class SlavedDeviceInboxStore(DeviceInboxWorkerStore, BaseSlavedStore): pass synapse-1.53.0/synapse/replication/slave/storage/devices.py000066400000000000000000000075121420514467300240420ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Any, Iterable from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker from synapse.replication.tcp.streams._base import DeviceListsStream, UserSignatureStream from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.devices import DeviceWorkerStore from synapse.storage.databases.main.end_to_end_keys import EndToEndKeyWorkerStore from synapse.util.caches.stream_change_cache import StreamChangeCache if TYPE_CHECKING: from synapse.server import HomeServer class SlavedDeviceStore(EndToEndKeyWorkerStore, DeviceWorkerStore, BaseSlavedStore): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) self.hs = hs self._device_list_id_gen = SlavedIdTracker( db_conn, "device_lists_stream", "stream_id", extra_tables=[ ("user_signature_stream", "stream_id"), ("device_lists_outbound_pokes", "stream_id"), ], ) device_list_max = self._device_list_id_gen.get_current_token() self._device_list_stream_cache = StreamChangeCache( "DeviceListStreamChangeCache", device_list_max ) self._user_signature_stream_cache = StreamChangeCache( "UserSignatureStreamChangeCache", device_list_max ) self._device_list_federation_stream_cache = StreamChangeCache( "DeviceListFederationStreamChangeCache", device_list_max ) def get_device_stream_token(self) -> int: return self._device_list_id_gen.get_current_token() def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: Iterable[Any] ) -> None: if stream_name == DeviceListsStream.NAME: self._device_list_id_gen.advance(instance_name, token) self._invalidate_caches_for_devices(token, rows) elif stream_name == UserSignatureStream.NAME: self._device_list_id_gen.advance(instance_name, token) for row in rows: self._user_signature_stream_cache.entity_has_changed(row.user_id, token) return super().process_replication_rows(stream_name, instance_name, token, rows) def _invalidate_caches_for_devices( self, token: int, rows: Iterable[DeviceListsStream.DeviceListsStreamRow] ) -> None: for row in rows: # The entities are either user IDs (starting with '@') whose devices # have changed, or remote servers that we need to tell about # changes. if row.entity.startswith("@"): self._device_list_stream_cache.entity_has_changed(row.entity, token) self.get_cached_devices_for_user.invalidate((row.entity,)) self._get_cached_user_device.invalidate((row.entity,)) self.get_device_list_last_stream_id_for_remote.invalidate((row.entity,)) else: self._device_list_federation_stream_cache.entity_has_changed( row.entity, token ) synapse-1.53.0/synapse/replication/slave/storage/directory.py000066400000000000000000000013771420514467300244270ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.storage.databases.main.directory import DirectoryWorkerStore from ._base import BaseSlavedStore class DirectoryStore(DirectoryWorkerStore, BaseSlavedStore): pass synapse-1.53.0/synapse/replication/slave/storage/events.py000066400000000000000000000061741420514467300237270ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.event_federation import EventFederationWorkerStore from synapse.storage.databases.main.event_push_actions import ( EventPushActionsWorkerStore, ) from synapse.storage.databases.main.events_worker import EventsWorkerStore from synapse.storage.databases.main.relations import RelationsWorkerStore from synapse.storage.databases.main.roommember import RoomMemberWorkerStore from synapse.storage.databases.main.signatures import SignatureWorkerStore from synapse.storage.databases.main.state import StateGroupWorkerStore from synapse.storage.databases.main.stream import StreamWorkerStore from synapse.storage.databases.main.user_erasure_store import UserErasureWorkerStore from synapse.util.caches.stream_change_cache import StreamChangeCache from ._base import BaseSlavedStore if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # So, um, we want to borrow a load of functions intended for reading from # a DataStore, but we don't want to take functions that either write to the # DataStore or are cached and don't have cache invalidation logic. # # Rather than write duplicate versions of those functions, or lift them to # a common base class, we going to grab the underlying __func__ object from # the method descriptor on the DataStore and chuck them into our class. class SlavedEventStore( EventFederationWorkerStore, RoomMemberWorkerStore, EventPushActionsWorkerStore, StreamWorkerStore, StateGroupWorkerStore, SignatureWorkerStore, EventsWorkerStore, UserErasureWorkerStore, RelationsWorkerStore, BaseSlavedStore, ): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) events_max = self._stream_id_gen.get_current_token() curr_state_delta_prefill, min_curr_state_delta_id = self.db_pool.get_cache_dict( db_conn, "current_state_delta_stream", entity_column="room_id", stream_column="stream_id", max_value=events_max, # As we share the stream id with events token limit=1000, ) self._curr_state_delta_stream_cache = StreamChangeCache( "_curr_state_delta_stream_cache", min_curr_state_delta_id, prefilled_cache=curr_state_delta_prefill, ) synapse-1.53.0/synapse/replication/slave/storage/filtering.py000066400000000000000000000023201420514467300243730ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.filtering import FilteringStore from ._base import BaseSlavedStore if TYPE_CHECKING: from synapse.server import HomeServer class SlavedFilteringStore(BaseSlavedStore): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) # Filters are immutable so this cache doesn't need to be expired get_user_filter = FilteringStore.__dict__["get_user_filter"] synapse-1.53.0/synapse/replication/slave/storage/groups.py000066400000000000000000000043421420514467300237350ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Any, Iterable from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker from synapse.replication.tcp.streams import GroupServerStream from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.group_server import GroupServerWorkerStore from synapse.util.caches.stream_change_cache import StreamChangeCache if TYPE_CHECKING: from synapse.server import HomeServer class SlavedGroupServerStore(GroupServerWorkerStore, BaseSlavedStore): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) self.hs = hs self._group_updates_id_gen = SlavedIdTracker( db_conn, "local_group_updates", "stream_id" ) self._group_updates_stream_cache = StreamChangeCache( "_group_updates_stream_cache", self._group_updates_id_gen.get_current_token(), ) def get_group_stream_token(self) -> int: return self._group_updates_id_gen.get_current_token() def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: Iterable[Any] ) -> None: if stream_name == GroupServerStream.NAME: self._group_updates_id_gen.advance(instance_name, token) for row in rows: self._group_updates_stream_cache.entity_has_changed(row.user_id, token) return super().process_replication_rows(stream_name, instance_name, token, rows) synapse-1.53.0/synapse/replication/slave/storage/keys.py000066400000000000000000000014331420514467300233670ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.storage.databases.main.keys import KeyStore # KeyStore isn't really safe to use from a worker, but for now we do so and hope that # the races it creates aren't too bad. SlavedKeyStore = KeyStore synapse-1.53.0/synapse/replication/slave/storage/profile.py000066400000000000000000000014271420514467300240570ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.replication.slave.storage._base import BaseSlavedStore from synapse.storage.databases.main.profile import ProfileWorkerStore class SlavedProfileStore(ProfileWorkerStore, BaseSlavedStore): pass synapse-1.53.0/synapse/replication/slave/storage/push_rule.py000066400000000000000000000031211420514467300244160ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Any, Iterable from synapse.replication.tcp.streams import PushRulesStream from synapse.storage.databases.main.push_rule import PushRulesWorkerStore from .events import SlavedEventStore class SlavedPushRuleStore(SlavedEventStore, PushRulesWorkerStore): def get_max_push_rules_stream_id(self) -> int: return self._push_rules_stream_id_gen.get_current_token() def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: Iterable[Any] ) -> None: if stream_name == PushRulesStream.NAME: self._push_rules_stream_id_gen.advance(instance_name, token) for row in rows: self.get_push_rules_for_user.invalidate((row.user_id,)) self.get_push_rules_enabled_for_user.invalidate((row.user_id,)) self.push_rules_stream_cache.entity_has_changed(row.user_id, token) return super().process_replication_rows(stream_name, instance_name, token, rows) synapse-1.53.0/synapse/replication/slave/storage/pushers.py000066400000000000000000000034771420514467300241170ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Any, Iterable from synapse.replication.tcp.streams import PushersStream from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.pusher import PusherWorkerStore from ._base import BaseSlavedStore from ._slaved_id_tracker import SlavedIdTracker if TYPE_CHECKING: from synapse.server import HomeServer class SlavedPusherStore(PusherWorkerStore, BaseSlavedStore): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) self._pushers_id_gen = SlavedIdTracker( # type: ignore db_conn, "pushers", "id", extra_tables=[("deleted_pushers", "stream_id")] ) def get_pushers_stream_token(self) -> int: return self._pushers_id_gen.get_current_token() def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: Iterable[Any] ) -> None: if stream_name == PushersStream.NAME: self._pushers_id_gen.advance(instance_name, token) return super().process_replication_rows(stream_name, instance_name, token, rows) synapse-1.53.0/synapse/replication/slave/storage/receipts.py000066400000000000000000000014331420514467300242320ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.storage.databases.main.receipts import ReceiptsWorkerStore from ._base import BaseSlavedStore class SlavedReceiptsStore(ReceiptsWorkerStore, BaseSlavedStore): pass synapse-1.53.0/synapse/replication/slave/storage/registration.py000066400000000000000000000014211420514467300251230ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from synapse.storage.databases.main.registration import RegistrationWorkerStore from ._base import BaseSlavedStore class SlavedRegistrationStore(RegistrationWorkerStore, BaseSlavedStore): pass synapse-1.53.0/synapse/replication/tcp/000077500000000000000000000000001420514467300200515ustar00rootroot00000000000000synapse-1.53.0/synapse/replication/tcp/__init__.py000066400000000000000000000033721420514467300221670ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module implements the TCP replication protocol used by synapse to communicate between the master process and its workers (when they're enabled). Further details can be found in docs/tcp_replication.rst Structure of the module: * handler.py - the classes used to handle sending/receiving commands to replication * command.py - the definitions of all the valid commands * protocol.py - the TCP protocol classes * resource.py - handles streaming stream updates to replications * streams/ - the definitions of all the valid streams The general interaction of the classes are: +---------------------+ | ReplicationStreamer | +---------------------+ | v +---------------------------+ +----------------------+ | ReplicationCommandHandler |---->|ReplicationDataHandler| +---------------------------+ +----------------------+ | ^ v | +-------------+ | Protocols | | (TCP/redis) | +-------------+ Where the ReplicationDataHandler (or subclasses) handles incoming stream updates. """ synapse-1.53.0/synapse/replication/tcp/client.py000066400000000000000000000464401420514467300217110ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """A replication client for use by synapse workers. """ import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple from twisted.internet.defer import Deferred from twisted.internet.interfaces import IAddress, IConnector from twisted.internet.protocol import ReconnectingClientFactory from twisted.python.failure import Failure from synapse.api.constants import EventTypes from synapse.federation import send_queue from synapse.federation.sender import FederationSender from synapse.logging.context import PreserveLoggingContext, make_deferred_yieldable from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.tcp.protocol import ClientReplicationStreamProtocol from synapse.replication.tcp.streams import ( AccountDataStream, DeviceListsStream, GroupServerStream, PushersStream, PushRulesStream, ReceiptsStream, TagAccountDataStream, ToDeviceStream, TypingStream, ) from synapse.replication.tcp.streams.events import ( EventsStream, EventsStreamEventRow, EventsStreamRow, ) from synapse.types import PersistedEventPosition, ReadReceipt, UserID from synapse.util.async_helpers import Linearizer, timeout_deferred from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.replication.tcp.handler import ReplicationCommandHandler from synapse.server import HomeServer logger = logging.getLogger(__name__) # How long we allow callers to wait for replication updates before timing out. _WAIT_FOR_REPLICATION_TIMEOUT_SECONDS = 30 class DirectTcpReplicationClientFactory(ReconnectingClientFactory): """Factory for building connections to the master. Will reconnect if the connection is lost. Accepts a handler that is passed to `ClientReplicationStreamProtocol`. """ initialDelay = 0.1 maxDelay = 1 # Try at least once every N seconds def __init__( self, hs: "HomeServer", client_name: str, command_handler: "ReplicationCommandHandler", ): self.client_name = client_name self.command_handler = command_handler self.server_name = hs.config.server.server_name self.hs = hs self._clock = hs.get_clock() # As self.clock is defined in super class hs.get_reactor().addSystemEventTrigger("before", "shutdown", self.stopTrying) def startedConnecting(self, connector: IConnector) -> None: logger.info("Connecting to replication: %r", connector.getDestination()) def buildProtocol(self, addr: IAddress) -> ClientReplicationStreamProtocol: logger.info("Connected to replication: %r", addr) return ClientReplicationStreamProtocol( self.hs, self.client_name, self.server_name, self._clock, self.command_handler, ) def clientConnectionLost(self, connector: IConnector, reason: Failure) -> None: logger.error("Lost replication conn: %r", reason) ReconnectingClientFactory.clientConnectionLost(self, connector, reason) def clientConnectionFailed(self, connector: IConnector, reason: Failure) -> None: logger.error("Failed to connect to replication: %r", reason) ReconnectingClientFactory.clientConnectionFailed(self, connector, reason) class ReplicationDataHandler: """Handles incoming stream updates from replication. This instance notifies the slave data store about updates. Can be subclassed to handle updates in additional ways. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.notifier = hs.get_notifier() self._reactor = hs.get_reactor() self._clock = hs.get_clock() self._streams = hs.get_replication_streams() self._instance_name = hs.get_instance_name() self._typing_handler = hs.get_typing_handler() self._notify_pushers = hs.config.worker.start_pushers self._pusher_pool = hs.get_pusherpool() self._presence_handler = hs.get_presence_handler() self.send_handler: Optional[FederationSenderHandler] = None if hs.should_send_federation(): self.send_handler = FederationSenderHandler(hs) # Map from stream to list of deferreds waiting for the stream to # arrive at a particular position. The lists are sorted by stream position. self._streams_to_waiters: Dict[str, List[Tuple[int, Deferred]]] = {} async def on_rdata( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: """Called to handle a batch of replication data with a given stream token. By default this just pokes the slave store. Can be overridden in subclasses to handle more. Args: stream_name: name of the replication stream for this batch of rows instance_name: the instance that wrote the rows. token: stream token for this batch of rows rows: a list of Stream.ROW_TYPE objects as returned by Stream.parse_row. """ self.store.process_replication_rows(stream_name, instance_name, token, rows) if self.send_handler: await self.send_handler.process_replication_rows(stream_name, token, rows) if stream_name == TypingStream.NAME: self._typing_handler.process_replication_rows(token, rows) self.notifier.on_new_event( "typing_key", token, rooms=[row.room_id for row in rows] ) elif stream_name == PushRulesStream.NAME: self.notifier.on_new_event( "push_rules_key", token, users=[row.user_id for row in rows] ) elif stream_name in (AccountDataStream.NAME, TagAccountDataStream.NAME): self.notifier.on_new_event( "account_data_key", token, users=[row.user_id for row in rows] ) elif stream_name == ReceiptsStream.NAME: self.notifier.on_new_event( "receipt_key", token, rooms=[row.room_id for row in rows] ) await self._pusher_pool.on_new_receipts( token, token, {row.room_id for row in rows} ) elif stream_name == ToDeviceStream.NAME: entities = [row.entity for row in rows if row.entity.startswith("@")] if entities: self.notifier.on_new_event("to_device_key", token, users=entities) elif stream_name == DeviceListsStream.NAME: all_room_ids: Set[str] = set() for row in rows: if row.entity.startswith("@"): room_ids = await self.store.get_rooms_for_user(row.entity) all_room_ids.update(room_ids) self.notifier.on_new_event("device_list_key", token, rooms=all_room_ids) elif stream_name == GroupServerStream.NAME: self.notifier.on_new_event( "groups_key", token, users=[row.user_id for row in rows] ) elif stream_name == PushersStream.NAME: for row in rows: if row.deleted: self.stop_pusher(row.user_id, row.app_id, row.pushkey) else: await self.start_pusher(row.user_id, row.app_id, row.pushkey) elif stream_name == EventsStream.NAME: # We shouldn't get multiple rows per token for events stream, so # we don't need to optimise this for multiple rows. for row in rows: if row.type != EventsStreamEventRow.TypeId: continue assert isinstance(row, EventsStreamRow) assert isinstance(row.data, EventsStreamEventRow) if row.data.rejected: continue extra_users: Tuple[UserID, ...] = () if row.data.type == EventTypes.Member and row.data.state_key: extra_users = (UserID.from_string(row.data.state_key),) max_token = self.store.get_room_max_token() event_pos = PersistedEventPosition(instance_name, token) await self.notifier.on_new_room_event_args( event_pos=event_pos, max_room_stream_token=max_token, extra_users=extra_users, room_id=row.data.room_id, event_id=row.data.event_id, event_type=row.data.type, state_key=row.data.state_key, membership=row.data.membership, ) await self._presence_handler.process_replication_rows( stream_name, instance_name, token, rows ) # Notify any waiting deferreds. The list is ordered by position so we # just iterate through the list until we reach a position that is # greater than the received row position. waiting_list = self._streams_to_waiters.get(stream_name, []) # Index of first item with a position after the current token, i.e we # have called all deferreds before this index. If not overwritten by # loop below means either a) no items in list so no-op or b) all items # in list were called and so the list should be cleared. Setting it to # `len(list)` works for both cases. index_of_first_deferred_not_called = len(waiting_list) for idx, (position, deferred) in enumerate(waiting_list): if position <= token: try: with PreserveLoggingContext(): deferred.callback(None) except Exception: # The deferred has been cancelled or timed out. pass else: # The list is sorted by position so we don't need to continue # checking any further entries in the list. index_of_first_deferred_not_called = idx break # Drop all entries in the waiting list that were called in the above # loop. (This maintains the order so no need to resort) waiting_list[:] = waiting_list[index_of_first_deferred_not_called:] async def on_position( self, stream_name: str, instance_name: str, token: int ) -> None: await self.on_rdata(stream_name, instance_name, token, []) # We poke the generic "replication" notifier to wake anything up that # may be streaming. self.notifier.notify_replication() def on_remote_server_up(self, server: str) -> None: """Called when get a new REMOTE_SERVER_UP command.""" # Let's wake up the transaction queue for the server in case we have # pending stuff to send to it. if self.send_handler: self.send_handler.wake_destination(server) async def wait_for_stream_position( self, instance_name: str, stream_name: str, position: int ) -> None: """Wait until this instance has received updates up to and including the given stream position. """ if instance_name == self._instance_name: # We don't get told about updates written by this process, and # anyway in that case we don't need to wait. return current_position = self._streams[stream_name].current_token(self._instance_name) if position <= current_position: # We're already past the position return # Create a new deferred that times out after N seconds, as we don't want # to wedge here forever. deferred: "Deferred[None]" = Deferred() deferred = timeout_deferred( deferred, _WAIT_FOR_REPLICATION_TIMEOUT_SECONDS, self._reactor ) waiting_list = self._streams_to_waiters.setdefault(stream_name, []) waiting_list.append((position, deferred)) waiting_list.sort(key=lambda t: t[0]) # We measure here to get in flight counts and average waiting time. with Measure(self._clock, "repl.wait_for_stream_position"): logger.info("Waiting for repl stream %r to reach %s", stream_name, position) await make_deferred_yieldable(deferred) logger.info( "Finished waiting for repl stream %r to reach %s", stream_name, position ) def stop_pusher(self, user_id: str, app_id: str, pushkey: str) -> None: if not self._notify_pushers: return key = "%s:%s" % (app_id, pushkey) pushers_for_user = self._pusher_pool.pushers.get(user_id, {}) pusher = pushers_for_user.pop(key, None) if pusher is None: return logger.info("Stopping pusher %r / %r", user_id, key) pusher.on_stop() async def start_pusher(self, user_id: str, app_id: str, pushkey: str) -> None: if not self._notify_pushers: return key = "%s:%s" % (app_id, pushkey) logger.info("Starting pusher %r / %r", user_id, key) await self._pusher_pool.start_pusher_by_id(app_id, pushkey, user_id) class FederationSenderHandler: """Processes the fedration replication stream This class is only instantiate on the worker responsible for sending outbound federation transactions. It receives rows from the replication stream and forwards the appropriate entries to the FederationSender class. """ def __init__(self, hs: "HomeServer"): assert hs.should_send_federation() self.store = hs.get_datastore() self._is_mine_id = hs.is_mine_id self._hs = hs # We need to make a temporary value to ensure that mypy picks up the # right type. We know we should have a federation sender instance since # `should_send_federation` is True. sender = hs.get_federation_sender() assert isinstance(sender, FederationSender) self.federation_sender = sender # Stores the latest position in the federation stream we've gotten up # to. This is always set before we use it. self.federation_position: Optional[int] = None self._fed_position_linearizer = Linearizer(name="_fed_position_linearizer") def wake_destination(self, server: str) -> None: self.federation_sender.wake_destination(server) async def process_replication_rows( self, stream_name: str, token: int, rows: list ) -> None: # The federation stream contains things that we want to send out, e.g. # presence, typing, etc. if stream_name == "federation": send_queue.process_rows_for_federation(self.federation_sender, rows) await self.update_token(token) # ... and when new receipts happen elif stream_name == ReceiptsStream.NAME: await self._on_new_receipts(rows) # ... as well as device updates and messages elif stream_name == DeviceListsStream.NAME: # The entities are either user IDs (starting with '@') whose devices # have changed, or remote servers that we need to tell about # changes. hosts = {row.entity for row in rows if not row.entity.startswith("@")} for host in hosts: self.federation_sender.send_device_messages(host) elif stream_name == ToDeviceStream.NAME: # The to_device stream includes stuff to be pushed to both local # clients and remote servers, so we ignore entities that start with # '@' (since they'll be local users rather than destinations). hosts = {row.entity for row in rows if not row.entity.startswith("@")} for host in hosts: self.federation_sender.send_device_messages(host) async def _on_new_receipts( self, rows: Iterable[ReceiptsStream.ReceiptsStreamRow] ) -> None: """ Args: rows: new receipts to be processed """ for receipt in rows: # we only want to send on receipts for our own users if not self._is_mine_id(receipt.user_id): continue if ( receipt.data.get("hidden", False) and self._hs.config.experimental.msc2285_enabled ): continue receipt_info = ReadReceipt( receipt.room_id, receipt.receipt_type, receipt.user_id, [receipt.event_id], receipt.data, ) await self.federation_sender.send_read_receipt(receipt_info) async def update_token(self, token: int) -> None: """Update the record of where we have processed to in the federation stream. Called after we have processed a an update received over replication. Sends a FEDERATION_ACK back to the master, and stores the token that we have processed in `federation_stream_position` so that we can restart where we left off. """ self.federation_position = token # We save and send the ACK to master asynchronously, so we don't block # processing on persistence. We don't need to do this operation for # every single RDATA we receive, we just need to do it periodically. if self._fed_position_linearizer.is_queued(None): # There is already a task queued up to save and send the token, so # no need to queue up another task. return run_as_background_process("_save_and_send_ack", self._save_and_send_ack) async def _save_and_send_ack(self) -> None: """Save the current federation position in the database and send an ACK to master with where we're up to. """ # We should only be calling this once we've got a token. assert self.federation_position is not None try: # We linearize here to ensure we don't have races updating the token # # XXX this appears to be redundant, since the ReplicationCommandHandler # has a linearizer which ensures that we only process one line of # replication data at a time. Should we remove it, or is it doing useful # service for robustness? Or could we replace it with an assertion that # we're not being re-entered? with (await self._fed_position_linearizer.queue(None)): # We persist and ack the same position, so we take a copy of it # here as otherwise it can get modified from underneath us. current_position = self.federation_position await self.store.update_federation_out_pos( "federation", current_position ) # We ACK this token over replication so that the master can drop # its in memory queues self._hs.get_tcp_replication().send_federation_ack(current_position) except Exception: logger.exception("Error updating federation stream position") synapse-1.53.0/synapse/replication/tcp/commands.py000066400000000000000000000306311420514467300222270ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Defines the various valid commands The VALID_SERVER_COMMANDS and VALID_CLIENT_COMMANDS define which commands are allowed to be sent by which side. """ import abc import logging from typing import Optional, Tuple, Type, TypeVar from synapse.replication.tcp.streams._base import StreamRow from synapse.util import json_decoder, json_encoder logger = logging.getLogger(__name__) T = TypeVar("T", bound="Command") class Command(metaclass=abc.ABCMeta): """The base command class. All subclasses must set the NAME variable which equates to the name of the command on the wire. A full command line on the wire is constructed from `NAME + " " + to_line()` """ NAME: str @classmethod @abc.abstractmethod def from_line(cls: Type[T], line: str) -> T: """Deserialises a line from the wire into this command. `line` does not include the command. """ @abc.abstractmethod def to_line(self) -> str: """Serialises the command for the wire. Does not include the command prefix. """ def get_logcontext_id(self) -> str: """Get a suitable string for the logcontext when processing this command""" # by default, we just use the command name. return self.NAME SC = TypeVar("SC", bound="_SimpleCommand") class _SimpleCommand(Command): """An implementation of Command whose argument is just a 'data' string.""" def __init__(self, data: str): self.data = data @classmethod def from_line(cls: Type[SC], line: str) -> SC: return cls(line) def to_line(self) -> str: return self.data class ServerCommand(_SimpleCommand): """Sent by the server on new connection and includes the server_name. Format:: SERVER """ NAME = "SERVER" class RdataCommand(Command): """Sent by server when a subscribed stream has an update. Format:: RDATA The `` may either be a numeric stream id OR "batch". The latter case is used to support sending multiple updates with the same stream ID. This is done by sending an RDATA for each row, with all but the last RDATA having a token of "batch" and the last having the final stream ID. The client should batch all incoming RDATA with a token of "batch" (per stream_name) until it sees an RDATA with a numeric stream ID. The `` is the source of the new data (usually "master"). `` of "batch" maps to the instance variable `token` being None. An example of a batched series of RDATA:: RDATA presence master batch ["@foo:example.com", "online", ...] RDATA presence master batch ["@bar:example.com", "online", ...] RDATA presence master 59 ["@baz:example.com", "online", ...] """ NAME = "RDATA" def __init__( self, stream_name: str, instance_name: str, token: Optional[int], row: StreamRow ): self.stream_name = stream_name self.instance_name = instance_name self.token = token self.row = row @classmethod def from_line(cls: Type["RdataCommand"], line: str) -> "RdataCommand": stream_name, instance_name, token, row_json = line.split(" ", 3) return cls( stream_name, instance_name, None if token == "batch" else int(token), json_decoder.decode(row_json), ) def to_line(self) -> str: return " ".join( ( self.stream_name, self.instance_name, str(self.token) if self.token is not None else "batch", json_encoder.encode(self.row), ) ) def get_logcontext_id(self) -> str: return "RDATA-" + self.stream_name class PositionCommand(Command): """Sent by an instance to tell others the stream position without needing to send an RDATA. Two tokens are sent, the new position and the last position sent by the instance (in an RDATA or other POSITION). The tokens are chosen so that *no* rows were written by the instance between the `prev_token` and `new_token`. (If an instance hasn't sent a position before then the new position can be used for both.) Format:: POSITION On receipt of a POSITION command instances should check if they have missed any updates, and if so then fetch them out of band. Instances can check this by comparing their view of the current token for the sending instance with the included `prev_token`. The `` is the process that sent the command and is the source of the stream. """ NAME = "POSITION" def __init__( self, stream_name: str, instance_name: str, prev_token: int, new_token: int ): self.stream_name = stream_name self.instance_name = instance_name self.prev_token = prev_token self.new_token = new_token @classmethod def from_line(cls: Type["PositionCommand"], line: str) -> "PositionCommand": stream_name, instance_name, prev_token, new_token = line.split(" ", 3) return cls(stream_name, instance_name, int(prev_token), int(new_token)) def to_line(self) -> str: return " ".join( ( self.stream_name, self.instance_name, str(self.prev_token), str(self.new_token), ) ) class ErrorCommand(_SimpleCommand): """Sent by either side if there was an ERROR. The data is a string describing the error. """ NAME = "ERROR" class PingCommand(_SimpleCommand): """Sent by either side as a keep alive. The data is arbitrary (often timestamp)""" NAME = "PING" class NameCommand(_SimpleCommand): """Sent by client to inform the server of the client's identity. The data is the name """ NAME = "NAME" class ReplicateCommand(Command): """Sent by the client to subscribe to streams. Format:: REPLICATE """ NAME = "REPLICATE" def __init__(self) -> None: pass @classmethod def from_line(cls: Type[T], line: str) -> T: return cls() def to_line(self) -> str: return "" class UserSyncCommand(Command): """Sent by the client to inform the server that a user has started or stopped syncing on this process. This is used by the process handling presence (typically the master) to calculate who is online and who is not. Includes a timestamp of when the last user sync was. Format:: USER_SYNC Where is either "start" or "end" """ NAME = "USER_SYNC" def __init__( self, instance_id: str, user_id: str, is_syncing: bool, last_sync_ms: int ): self.instance_id = instance_id self.user_id = user_id self.is_syncing = is_syncing self.last_sync_ms = last_sync_ms @classmethod def from_line(cls: Type["UserSyncCommand"], line: str) -> "UserSyncCommand": instance_id, user_id, state, last_sync_ms = line.split(" ", 3) if state not in ("start", "end"): raise Exception("Invalid USER_SYNC state %r" % (state,)) return cls(instance_id, user_id, state == "start", int(last_sync_ms)) def to_line(self) -> str: return " ".join( ( self.instance_id, self.user_id, "start" if self.is_syncing else "end", str(self.last_sync_ms), ) ) class ClearUserSyncsCommand(Command): """Sent by the client to inform the server that it should drop all information about syncing users sent by the client. Mainly used when client is about to shut down. Format:: CLEAR_USER_SYNC """ NAME = "CLEAR_USER_SYNC" def __init__(self, instance_id: str): self.instance_id = instance_id @classmethod def from_line( cls: Type["ClearUserSyncsCommand"], line: str ) -> "ClearUserSyncsCommand": return cls(line) def to_line(self) -> str: return self.instance_id class FederationAckCommand(Command): """Sent by the client when it has processed up to a given point in the federation stream. This allows the master to drop in-memory caches of the federation stream. This must only be sent from one worker (i.e. the one sending federation) Format:: FEDERATION_ACK """ NAME = "FEDERATION_ACK" def __init__(self, instance_name: str, token: int): self.instance_name = instance_name self.token = token @classmethod def from_line( cls: Type["FederationAckCommand"], line: str ) -> "FederationAckCommand": instance_name, token = line.split(" ") return cls(instance_name, int(token)) def to_line(self) -> str: return "%s %s" % (self.instance_name, self.token) class UserIpCommand(Command): """Sent periodically when a worker sees activity from a client. Format:: USER_IP , , , , , """ NAME = "USER_IP" def __init__( self, user_id: str, access_token: str, ip: str, user_agent: str, device_id: str, last_seen: int, ): self.user_id = user_id self.access_token = access_token self.ip = ip self.user_agent = user_agent self.device_id = device_id self.last_seen = last_seen @classmethod def from_line(cls: Type["UserIpCommand"], line: str) -> "UserIpCommand": user_id, jsn = line.split(" ", 1) access_token, ip, user_agent, device_id, last_seen = json_decoder.decode(jsn) return cls(user_id, access_token, ip, user_agent, device_id, last_seen) def to_line(self) -> str: return ( self.user_id + " " + json_encoder.encode( ( self.access_token, self.ip, self.user_agent, self.device_id, self.last_seen, ) ) ) class RemoteServerUpCommand(_SimpleCommand): """Sent when a worker has detected that a remote server is no longer "down" and retry timings should be reset. If sent from a client the server will relay to all other workers. Format:: REMOTE_SERVER_UP """ NAME = "REMOTE_SERVER_UP" _COMMANDS: Tuple[Type[Command], ...] = ( ServerCommand, RdataCommand, PositionCommand, ErrorCommand, PingCommand, NameCommand, ReplicateCommand, UserSyncCommand, FederationAckCommand, UserIpCommand, RemoteServerUpCommand, ClearUserSyncsCommand, ) # Map of command name to command type. COMMAND_MAP = {cmd.NAME: cmd for cmd in _COMMANDS} # The commands the server is allowed to send VALID_SERVER_COMMANDS = ( ServerCommand.NAME, RdataCommand.NAME, PositionCommand.NAME, ErrorCommand.NAME, PingCommand.NAME, RemoteServerUpCommand.NAME, ) # The commands the client is allowed to send VALID_CLIENT_COMMANDS = ( NameCommand.NAME, ReplicateCommand.NAME, PingCommand.NAME, UserSyncCommand.NAME, ClearUserSyncsCommand.NAME, FederationAckCommand.NAME, UserIpCommand.NAME, ErrorCommand.NAME, RemoteServerUpCommand.NAME, ) def parse_command_from_line(line: str) -> Command: """Parses a command from a received line. Line should already be stripped of whitespace and be checked if blank. """ idx = line.find(" ") if idx >= 0: cmd_name = line[:idx] rest_of_line = line[idx + 1 :] else: cmd_name = line rest_of_line = "" cmd_cls = COMMAND_MAP[cmd_name] return cmd_cls.from_line(rest_of_line) synapse-1.53.0/synapse/replication/tcp/external_cache.py000066400000000000000000000075321420514467300233770ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Optional from prometheus_client import Counter, Histogram from synapse.logging.context import make_deferred_yieldable from synapse.util import json_decoder, json_encoder if TYPE_CHECKING: from txredisapi import RedisProtocol from synapse.server import HomeServer set_counter = Counter( "synapse_external_cache_set", "Number of times we set a cache", labelnames=["cache_name"], ) get_counter = Counter( "synapse_external_cache_get", "Number of times we get a cache", labelnames=["cache_name", "hit"], ) response_timer = Histogram( "synapse_external_cache_response_time_seconds", "Time taken to get a response from Redis for a cache get/set request", labelnames=["method"], buckets=( 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, ), ) logger = logging.getLogger(__name__) class ExternalCache: """A cache backed by an external Redis. Does nothing if no Redis is configured. """ def __init__(self, hs: "HomeServer"): if hs.config.redis.redis_enabled: self._redis_connection: Optional[ "RedisProtocol" ] = hs.get_outbound_redis_connection() else: self._redis_connection = None def _get_redis_key(self, cache_name: str, key: str) -> str: return "cache_v1:%s:%s" % (cache_name, key) def is_enabled(self) -> bool: """Whether the external cache is used or not. It's safe to use the cache when this returns false, the methods will just no-op, but the function is useful to avoid doing unnecessary work. """ return self._redis_connection is not None async def set(self, cache_name: str, key: str, value: Any, expiry_ms: int) -> None: """Add the key/value to the named cache, with the expiry time given.""" if self._redis_connection is None: return set_counter.labels(cache_name).inc() # txredisapi requires the value to be string, bytes or numbers, so we # encode stuff in JSON. encoded_value = json_encoder.encode(value) logger.debug("Caching %s %s: %r", cache_name, key, encoded_value) with response_timer.labels("set").time(): return await make_deferred_yieldable( self._redis_connection.set( self._get_redis_key(cache_name, key), encoded_value, pexpire=expiry_ms, ) ) async def get(self, cache_name: str, key: str) -> Optional[Any]: """Look up a key/value in the named cache.""" if self._redis_connection is None: return None with response_timer.labels("get").time(): result = await make_deferred_yieldable( self._redis_connection.get(self._get_redis_key(cache_name, key)) ) logger.debug("Got cache result %s %s: %r", cache_name, key, result) get_counter.labels(cache_name, result is not None).inc() if not result: return None # For some reason the integers get magically converted back to integers if isinstance(result, int): return result return json_decoder.decode(result) synapse-1.53.0/synapse/replication/tcp/handler.py000066400000000000000000000702311420514467300220430ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Dict, Iterable, Iterator, List, Optional, Set, Tuple, TypeVar, Union, ) from prometheus_client import Counter from typing_extensions import Deque from twisted.internet.protocol import ReconnectingClientFactory from synapse.metrics import LaterGauge from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.tcp.client import DirectTcpReplicationClientFactory from synapse.replication.tcp.commands import ( ClearUserSyncsCommand, Command, FederationAckCommand, PositionCommand, RdataCommand, RemoteServerUpCommand, ReplicateCommand, UserIpCommand, UserSyncCommand, ) from synapse.replication.tcp.protocol import IReplicationConnection from synapse.replication.tcp.streams import ( STREAMS_MAP, AccountDataStream, BackfillStream, CachesStream, EventsStream, FederationStream, PresenceFederationStream, PresenceStream, ReceiptsStream, Stream, TagAccountDataStream, ToDeviceStream, TypingStream, ) if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # number of updates received for each RDATA stream inbound_rdata_count = Counter( "synapse_replication_tcp_protocol_inbound_rdata_count", "", ["stream_name"] ) user_sync_counter = Counter("synapse_replication_tcp_resource_user_sync", "") federation_ack_counter = Counter("synapse_replication_tcp_resource_federation_ack", "") remove_pusher_counter = Counter("synapse_replication_tcp_resource_remove_pusher", "") user_ip_cache_counter = Counter("synapse_replication_tcp_resource_user_ip_cache", "") # the type of the entries in _command_queues_by_stream _StreamCommandQueue = Deque[ Tuple[Union[RdataCommand, PositionCommand], IReplicationConnection] ] class ReplicationCommandHandler: """Handles incoming commands from replication as well as sending commands back out to connections. """ def __init__(self, hs: "HomeServer"): self._replication_data_handler = hs.get_replication_data_handler() self._presence_handler = hs.get_presence_handler() self._store = hs.get_datastore() self._notifier = hs.get_notifier() self._clock = hs.get_clock() self._instance_id = hs.get_instance_id() self._instance_name = hs.get_instance_name() self._is_presence_writer = ( hs.get_instance_name() in hs.config.worker.writers.presence ) self._streams: Dict[str, Stream] = { stream.NAME: stream(hs) for stream in STREAMS_MAP.values() } # List of streams that this instance is the source of self._streams_to_replicate: List[Stream] = [] for stream in self._streams.values(): if hs.config.redis.redis_enabled and stream.NAME == CachesStream.NAME: # All workers can write to the cache invalidation stream when # using redis. self._streams_to_replicate.append(stream) continue if isinstance(stream, (EventsStream, BackfillStream)): # Only add EventStream and BackfillStream as a source on the # instance in charge of event persistence. if hs.get_instance_name() in hs.config.worker.writers.events: self._streams_to_replicate.append(stream) continue if isinstance(stream, ToDeviceStream): # Only add ToDeviceStream as a source on instances in charge of # sending to device messages. if hs.get_instance_name() in hs.config.worker.writers.to_device: self._streams_to_replicate.append(stream) continue if isinstance(stream, TypingStream): # Only add TypingStream as a source on the instance in charge of # typing. if hs.get_instance_name() in hs.config.worker.writers.typing: self._streams_to_replicate.append(stream) continue if isinstance(stream, (AccountDataStream, TagAccountDataStream)): # Only add AccountDataStream and TagAccountDataStream as a source on the # instance in charge of account_data persistence. if hs.get_instance_name() in hs.config.worker.writers.account_data: self._streams_to_replicate.append(stream) continue if isinstance(stream, ReceiptsStream): # Only add ReceiptsStream as a source on the instance in charge of # receipts. if hs.get_instance_name() in hs.config.worker.writers.receipts: self._streams_to_replicate.append(stream) continue if isinstance(stream, (PresenceStream, PresenceFederationStream)): # Only add PresenceStream as a source on the instance in charge # of presence. if self._is_presence_writer: self._streams_to_replicate.append(stream) continue # Only add any other streams if we're on master. if hs.config.worker.worker_app is not None: continue if ( stream.NAME == FederationStream.NAME and hs.config.worker.send_federation ): # We only support federation stream if federation sending # has been disabled on the master. continue self._streams_to_replicate.append(stream) # Map of stream name to batched updates. See RdataCommand for info on # how batching works. self._pending_batches: Dict[str, List[Any]] = {} # The factory used to create connections. self._factory: Optional[ReconnectingClientFactory] = None # The currently connected connections. (The list of places we need to send # outgoing replication commands to.) self._connections: List[IReplicationConnection] = [] LaterGauge( "synapse_replication_tcp_resource_total_connections", "", [], lambda: len(self._connections), ) # When POSITION or RDATA commands arrive, we stick them in a queue and process # them in order in a separate background process. # the streams which are currently being processed by _unsafe_process_queue self._processing_streams: Set[str] = set() # for each stream, a queue of commands that are awaiting processing, and the # connection that they arrived on. self._command_queues_by_stream = { stream_name: _StreamCommandQueue() for stream_name in self._streams } # For each connection, the incoming stream names that have received a POSITION # from that connection. self._streams_by_connection: Dict[IReplicationConnection, Set[str]] = {} LaterGauge( "synapse_replication_tcp_command_queue", "Number of inbound RDATA/POSITION commands queued for processing", ["stream_name"], lambda: { (stream_name,): len(queue) for stream_name, queue in self._command_queues_by_stream.items() }, ) self._is_master = hs.config.worker.worker_app is None self._federation_sender = None if self._is_master and not hs.config.worker.send_federation: self._federation_sender = hs.get_federation_sender() self._server_notices_sender = None if self._is_master: self._server_notices_sender = hs.get_server_notices_sender() def _add_command_to_stream_queue( self, conn: IReplicationConnection, cmd: Union[RdataCommand, PositionCommand] ) -> None: """Queue the given received command for processing Adds the given command to the per-stream queue, and processes the queue if necessary """ stream_name = cmd.stream_name queue = self._command_queues_by_stream.get(stream_name) if queue is None: logger.error("Got %s for unknown stream: %s", cmd.NAME, stream_name) return queue.append((cmd, conn)) # if we're already processing this stream, there's nothing more to do: # the new entry on the queue will get picked up in due course if stream_name in self._processing_streams: return # fire off a background process to start processing the queue. run_as_background_process( "process-replication-data", self._unsafe_process_queue, stream_name ) async def _unsafe_process_queue(self, stream_name: str) -> None: """Processes the command queue for the given stream, until it is empty Does not check if there is already a thread processing the queue, hence "unsafe" """ assert stream_name not in self._processing_streams self._processing_streams.add(stream_name) try: queue = self._command_queues_by_stream.get(stream_name) while queue: cmd, conn = queue.popleft() try: await self._process_command(cmd, conn, stream_name) except Exception: logger.exception("Failed to handle command %s", cmd) finally: self._processing_streams.discard(stream_name) async def _process_command( self, cmd: Union[PositionCommand, RdataCommand], conn: IReplicationConnection, stream_name: str, ) -> None: if isinstance(cmd, PositionCommand): await self._process_position(stream_name, conn, cmd) elif isinstance(cmd, RdataCommand): await self._process_rdata(stream_name, conn, cmd) else: # This shouldn't be possible raise Exception("Unrecognised command %s in stream queue", cmd.NAME) def start_replication(self, hs: "HomeServer") -> None: """Helper method to start a replication connection to the remote server using TCP. """ if hs.config.redis.redis_enabled: from synapse.replication.tcp.redis import ( RedisDirectTcpReplicationClientFactory, ) # First let's ensure that we have a ReplicationStreamer started. hs.get_replication_streamer() # We need two connections to redis, one for the subscription stream and # one to send commands to (as you can't send further redis commands to a # connection after SUBSCRIBE is called). # First create the connection for sending commands. outbound_redis_connection = hs.get_outbound_redis_connection() # Now create the factory/connection for the subscription stream. self._factory = RedisDirectTcpReplicationClientFactory( hs, outbound_redis_connection ) hs.get_reactor().connectTCP( hs.config.redis.redis_host, hs.config.redis.redis_port, self._factory, timeout=30, bindAddress=None, ) else: client_name = hs.get_instance_name() self._factory = DirectTcpReplicationClientFactory(hs, client_name, self) host = hs.config.worker.worker_replication_host port = hs.config.worker.worker_replication_port hs.get_reactor().connectTCP( host, port, self._factory, timeout=30, bindAddress=None, ) def get_streams(self) -> Dict[str, Stream]: """Get a map from stream name to all streams.""" return self._streams def get_streams_to_replicate(self) -> List[Stream]: """Get a list of streams that this instances replicates.""" return self._streams_to_replicate def on_REPLICATE(self, conn: IReplicationConnection, cmd: ReplicateCommand) -> None: self.send_positions_to_connection(conn) def send_positions_to_connection(self, conn: IReplicationConnection) -> None: """Send current position of all streams this process is source of to the connection. """ # We respond with current position of all streams this instance # replicates. for stream in self.get_streams_to_replicate(): # Note that we use the current token as the prev token here (rather # than stream.last_token), as we can't be sure that there have been # no rows written between last token and the current token (since we # might be racing with the replication sending bg process). current_token = stream.current_token(self._instance_name) self.send_command( PositionCommand( stream.NAME, self._instance_name, current_token, current_token, ) ) def on_USER_SYNC( self, conn: IReplicationConnection, cmd: UserSyncCommand ) -> Optional[Awaitable[None]]: user_sync_counter.inc() if self._is_presence_writer: return self._presence_handler.update_external_syncs_row( cmd.instance_id, cmd.user_id, cmd.is_syncing, cmd.last_sync_ms ) else: return None def on_CLEAR_USER_SYNC( self, conn: IReplicationConnection, cmd: ClearUserSyncsCommand ) -> Optional[Awaitable[None]]: if self._is_presence_writer: return self._presence_handler.update_external_syncs_clear(cmd.instance_id) else: return None def on_FEDERATION_ACK( self, conn: IReplicationConnection, cmd: FederationAckCommand ) -> None: federation_ack_counter.inc() if self._federation_sender: self._federation_sender.federation_ack(cmd.instance_name, cmd.token) def on_USER_IP( self, conn: IReplicationConnection, cmd: UserIpCommand ) -> Optional[Awaitable[None]]: user_ip_cache_counter.inc() if self._is_master: return self._handle_user_ip(cmd) else: return None async def _handle_user_ip(self, cmd: UserIpCommand) -> None: await self._store.insert_client_ip( cmd.user_id, cmd.access_token, cmd.ip, cmd.user_agent, cmd.device_id, cmd.last_seen, ) assert self._server_notices_sender is not None await self._server_notices_sender.on_user_ip(cmd.user_id) def on_RDATA(self, conn: IReplicationConnection, cmd: RdataCommand) -> None: if cmd.instance_name == self._instance_name: # Ignore RDATA that are just our own echoes return stream_name = cmd.stream_name inbound_rdata_count.labels(stream_name).inc() # We put the received command into a queue here for two reasons: # 1. so we don't try and concurrently handle multiple rows for the # same stream, and # 2. so we don't race with getting a POSITION command and fetching # missing RDATA. self._add_command_to_stream_queue(conn, cmd) async def _process_rdata( self, stream_name: str, conn: IReplicationConnection, cmd: RdataCommand ) -> None: """Process an RDATA command Called after the command has been popped off the queue of inbound commands """ try: row = STREAMS_MAP[stream_name].parse_row(cmd.row) except Exception as e: raise Exception( "Failed to parse RDATA: %r %r" % (stream_name, cmd.row) ) from e # make sure that we've processed a POSITION for this stream *on this # connection*. (A POSITION on another connection is no good, as there # is no guarantee that we have seen all the intermediate updates.) sbc = self._streams_by_connection.get(conn) if not sbc or stream_name not in sbc: # Let's drop the row for now, on the assumption we'll receive a # `POSITION` soon and we'll catch up correctly then. logger.debug( "Discarding RDATA for unconnected stream %s -> %s", stream_name, cmd.token, ) return if cmd.token is None: # I.e. this is part of a batch of updates for this stream (in # which case batch until we get an update for the stream with a non # None token). self._pending_batches.setdefault(stream_name, []).append(row) return # Check if this is the last of a batch of updates rows = self._pending_batches.pop(stream_name, []) rows.append(row) stream = self._streams[stream_name] # Find where we previously streamed up to. current_token = stream.current_token(cmd.instance_name) # Discard this data if this token is earlier than the current # position. Note that streams can be reset (in which case you # expect an earlier token), but that must be preceded by a # POSITION command. if cmd.token <= current_token: logger.debug( "Discarding RDATA from stream %s at position %s before previous position %s", stream_name, cmd.token, current_token, ) else: await self.on_rdata(stream_name, cmd.instance_name, cmd.token, rows) async def on_rdata( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: """Called to handle a batch of replication data with a given stream token. Args: stream_name: name of the replication stream for this batch of rows instance_name: the instance that wrote the rows. token: stream token for this batch of rows rows: a list of Stream.ROW_TYPE objects as returned by Stream.parse_row. """ logger.debug("Received rdata %s (%s) -> %s", stream_name, instance_name, token) await self._replication_data_handler.on_rdata( stream_name, instance_name, token, rows ) def on_POSITION(self, conn: IReplicationConnection, cmd: PositionCommand) -> None: if cmd.instance_name == self._instance_name: # Ignore POSITION that are just our own echoes return logger.info("Handling '%s %s'", cmd.NAME, cmd.to_line()) self._add_command_to_stream_queue(conn, cmd) async def _process_position( self, stream_name: str, conn: IReplicationConnection, cmd: PositionCommand ) -> None: """Process a POSITION command Called after the command has been popped off the queue of inbound commands """ stream = self._streams[stream_name] # We're about to go and catch up with the stream, so remove from set # of connected streams. for streams in self._streams_by_connection.values(): streams.discard(stream_name) # We clear the pending batches for the stream as the fetching of the # missing updates below will fetch all rows in the batch. self._pending_batches.pop(stream_name, []) # Find where we previously streamed up to. current_token = stream.current_token(cmd.instance_name) # If the position token matches our current token then we're up to # date and there's nothing to do. Otherwise, fetch all updates # between then and now. missing_updates = cmd.prev_token != current_token while missing_updates: logger.info( "Fetching replication rows for '%s' between %i and %i", stream_name, current_token, cmd.new_token, ) (updates, current_token, missing_updates) = await stream.get_updates_since( cmd.instance_name, current_token, cmd.new_token ) # TODO: add some tests for this # Some streams return multiple rows with the same stream IDs, # which need to be processed in batches. for token, rows in _batch_updates(updates): await self.on_rdata( stream_name, cmd.instance_name, token, [stream.parse_row(row) for row in rows], ) logger.info("Caught up with stream '%s' to %i", stream_name, cmd.new_token) # We've now caught up to position sent to us, notify handler. await self._replication_data_handler.on_position( cmd.stream_name, cmd.instance_name, cmd.new_token ) self._streams_by_connection.setdefault(conn, set()).add(stream_name) def on_REMOTE_SERVER_UP( self, conn: IReplicationConnection, cmd: RemoteServerUpCommand ) -> None: """Called when get a new REMOTE_SERVER_UP command.""" self._replication_data_handler.on_remote_server_up(cmd.data) self._notifier.notify_remote_server_up(cmd.data) # We relay to all other connections to ensure every instance gets the # notification. # # When configured to use redis we'll always only have one connection and # so this is a no-op (all instances will have already received the same # REMOTE_SERVER_UP command). # # For direct TCP connections this will relay to all other connections # connected to us. When on master this will correctly fan out to all # other direct TCP clients and on workers there'll only be the one # connection to master. # # (The logic here should also be sound if we have a mix of Redis and # direct TCP connections so long as there is only one traffic route # between two instances, but that is not currently supported). self.send_command(cmd, ignore_conn=conn) def new_connection(self, connection: IReplicationConnection) -> None: """Called when we have a new connection.""" self._connections.append(connection) # If we are connected to replication as a client (rather than a server) # we need to reset the reconnection delay on the client factory (which # is used to do exponential back off when the connection drops). # # Ideally we would reset the delay when we've "fully established" the # connection (for some definition thereof) to stop us from tightlooping # on reconnection if something fails after this point and we drop the # connection. Unfortunately, we don't really have a better definition of # "fully established" than the connection being established. if self._factory: self._factory.resetDelay() # Tell the other end if we have any users currently syncing. currently_syncing = ( self._presence_handler.get_currently_syncing_users_for_replication() ) now = self._clock.time_msec() for user_id in currently_syncing: connection.send_command( UserSyncCommand(self._instance_id, user_id, True, now) ) def lost_connection(self, connection: IReplicationConnection) -> None: """Called when a connection is closed/lost.""" # we no longer need _streams_by_connection for this connection. streams = self._streams_by_connection.pop(connection, None) if streams: logger.info( "Lost replication connection; streams now disconnected: %s", streams ) try: self._connections.remove(connection) except ValueError: pass def connected(self) -> bool: """Do we have any replication connections open? Is used by e.g. `ReplicationStreamer` to no-op if nothing is connected. """ return bool(self._connections) def send_command( self, cmd: Command, ignore_conn: Optional[IReplicationConnection] = None ) -> None: """Send a command to all connected connections. Args: cmd ignore_conn: If set don't send command to the given connection. Used when relaying commands from one connection to all others. """ if self._connections: for connection in self._connections: if connection == ignore_conn: continue try: connection.send_command(cmd) except Exception: # We probably want to catch some types of exceptions here # and log them as warnings (e.g. connection gone), but I # can't find what those exception types they would be. logger.exception( "Failed to write command %s to connection %s", cmd.NAME, connection, ) else: logger.warning("Dropping command as not connected: %r", cmd.NAME) def send_federation_ack(self, token: int) -> None: """Ack data for the federation stream. This allows the master to drop data stored purely in memory. """ self.send_command(FederationAckCommand(self._instance_name, token)) def send_user_sync( self, instance_id: str, user_id: str, is_syncing: bool, last_sync_ms: int ) -> None: """Poke the master that a user has started/stopped syncing.""" self.send_command( UserSyncCommand(instance_id, user_id, is_syncing, last_sync_ms) ) def send_user_ip( self, user_id: str, access_token: str, ip: str, user_agent: str, device_id: str, last_seen: int, ) -> None: """Tell the master that the user made a request.""" cmd = UserIpCommand(user_id, access_token, ip, user_agent, device_id, last_seen) self.send_command(cmd) def send_remote_server_up(self, server: str) -> None: self.send_command(RemoteServerUpCommand(server)) def stream_update(self, stream_name: str, token: Optional[int], data: Any) -> None: """Called when a new update is available to stream to clients. We need to check if the client is interested in the stream or not """ self.send_command(RdataCommand(stream_name, self._instance_name, token, data)) UpdateToken = TypeVar("UpdateToken") UpdateRow = TypeVar("UpdateRow") def _batch_updates( updates: Iterable[Tuple[UpdateToken, UpdateRow]] ) -> Iterator[Tuple[UpdateToken, List[UpdateRow]]]: """Collect stream updates with the same token together Given a series of updates returned by Stream.get_updates_since(), collects the updates which share the same stream_id together. For example: [(1, a), (1, b), (2, c), (3, d), (3, e)] becomes: [ (1, [a, b]), (2, [c]), (3, [d, e]), ] """ update_iter = iter(updates) first_update = next(update_iter, None) if first_update is None: # empty input return current_batch_token = first_update[0] current_batch = [first_update[1]] for token, row in update_iter: if token != current_batch_token: # different token to the previous row: flush the previous # batch and start anew yield current_batch_token, current_batch current_batch_token = token current_batch = [] current_batch.append(row) # flush the final batch yield current_batch_token, current_batch synapse-1.53.0/synapse/replication/tcp/protocol.py000066400000000000000000000472031420514467300222720ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module contains the implementation of both the client and server protocols. The basic structure of the protocol is line based, where the initial word of each line specifies the command. The rest of the line is parsed based on the command. For example, the `RDATA` command is defined as:: RDATA (Note that `` may contains spaces, but cannot contain newlines.) Blank lines are ignored. # Example An example iteraction is shown below. Each line is prefixed with '>' or '<' to indicate which side is sending, these are *not* included on the wire:: * connection established * > SERVER localhost:8823 > PING 1490197665618 < NAME synapse.app.appservice < PING 1490197665618 < REPLICATE > POSITION events 1 > POSITION backfill 1 > POSITION caches 1 > RDATA caches 2 ["get_user_by_id",["@01register-user:localhost:8823"],1490197670513] > RDATA events 14 ["ev", ["$149019767112vOHxz:localhost:8823", "!AFDCvgApUmpdfVjIXm:localhost:8823","m.room.guest_access","",null]] < PING 1490197675618 > ERROR server stopping * connection closed by server * """ import fcntl import logging import struct from inspect import isawaitable from typing import TYPE_CHECKING, Any, Collection, List, Optional from prometheus_client import Counter from zope.interface import Interface, implementer from twisted.internet import task from twisted.internet.tcp import Connection from twisted.protocols.basic import LineOnlyReceiver from twisted.python.failure import Failure from synapse.logging.context import PreserveLoggingContext from synapse.metrics import LaterGauge from synapse.metrics.background_process_metrics import ( BackgroundProcessLoggingContext, run_as_background_process, ) from synapse.replication.tcp.commands import ( VALID_CLIENT_COMMANDS, VALID_SERVER_COMMANDS, Command, ErrorCommand, NameCommand, PingCommand, ReplicateCommand, ServerCommand, parse_command_from_line, ) from synapse.util import Clock from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.replication.tcp.handler import ReplicationCommandHandler from synapse.server import HomeServer connection_close_counter = Counter( "synapse_replication_tcp_protocol_close_reason", "", ["reason_type"] ) tcp_inbound_commands_counter = Counter( "synapse_replication_tcp_protocol_inbound_commands", "Number of commands received from replication, by command and name of process connected to", ["command", "name"], ) tcp_outbound_commands_counter = Counter( "synapse_replication_tcp_protocol_outbound_commands", "Number of commands sent to replication, by command and name of process connected to", ["command", "name"], ) # A list of all connected protocols. This allows us to send metrics about the # connections. connected_connections: "List[BaseReplicationStreamProtocol]" = [] logger = logging.getLogger(__name__) PING_TIME = 5000 PING_TIMEOUT_MULTIPLIER = 5 PING_TIMEOUT_MS = PING_TIME * PING_TIMEOUT_MULTIPLIER class ConnectionStates: CONNECTING = "connecting" ESTABLISHED = "established" PAUSED = "paused" CLOSED = "closed" class IReplicationConnection(Interface): """An interface for replication connections.""" def send_command(cmd: Command) -> None: """Send the command down the connection""" @implementer(IReplicationConnection) class BaseReplicationStreamProtocol(LineOnlyReceiver): """Base replication protocol shared between client and server. Reads lines (ignoring blank ones) and parses them into command classes, asserting that they are valid for the given direction, i.e. server commands are only sent by the server. On receiving a new command it calls `on_` with the parsed command before delegating to `ReplicationCommandHandler.on_`. `ReplicationCommandHandler.on_` can optionally return a coroutine; if so, that will get run as a background process. It also sends `PING` periodically, and correctly times out remote connections (if they send a `PING` command) """ # The transport is going to be an ITCPTransport, but that doesn't have the # (un)registerProducer methods, those are only on the implementation. transport: Connection delimiter = b"\n" # Valid commands we expect to receive VALID_INBOUND_COMMANDS: Collection[str] = [] # Valid commands we can send VALID_OUTBOUND_COMMANDS: Collection[str] = [] max_line_buffer = 10000 def __init__(self, clock: Clock, handler: "ReplicationCommandHandler"): self.clock = clock self.command_handler = handler self.last_received_command = self.clock.time_msec() self.last_sent_command = 0 # When we requested the connection be closed self.time_we_closed: Optional[int] = None self.received_ping = False # Have we received a ping from the other side self.state = ConnectionStates.CONNECTING self.name = "anon" # The name sent by a client. self.conn_id = random_string(5) # To dedupe in case of name clashes. # List of pending commands to send once we've established the connection self.pending_commands: List[Command] = [] # The LoopingCall for sending pings. self._send_ping_loop: Optional[task.LoopingCall] = None # a logcontext which we use for processing incoming commands. We declare it as a # background process so that the CPU stats get reported to prometheus. with PreserveLoggingContext(): # thanks to `PreserveLoggingContext()`, the new logcontext is guaranteed to # capture the sentinel context as its containing context and won't prevent # GC of / unintentionally reactivate what would be the current context. self._logging_context = BackgroundProcessLoggingContext( "replication-conn", self.conn_id ) def connectionMade(self) -> None: logger.info("[%s] Connection established", self.id()) self.state = ConnectionStates.ESTABLISHED connected_connections.append(self) # Register connection for metrics assert self.transport is not None self.transport.registerProducer(self, True) # For the *Producing callbacks self._send_pending_commands() # Starts sending pings self._send_ping_loop = self.clock.looping_call(self.send_ping, 5000) # Always send the initial PING so that the other side knows that they # can time us out. self.send_command(PingCommand(str(self.clock.time_msec()))) self.command_handler.new_connection(self) def send_ping(self) -> None: """Periodically sends a ping and checks if we should close the connection due to the other side timing out. """ now = self.clock.time_msec() if self.time_we_closed: if now - self.time_we_closed > PING_TIMEOUT_MS: logger.info( "[%s] Failed to close connection gracefully, aborting", self.id() ) assert self.transport is not None self.transport.abortConnection() else: if now - self.last_sent_command >= PING_TIME: self.send_command(PingCommand(str(now))) if ( self.received_ping and now - self.last_received_command > PING_TIMEOUT_MS ): logger.info( "[%s] Connection hasn't received command in %r ms. Closing.", self.id(), now - self.last_received_command, ) self.send_error("ping timeout") def lineReceived(self, line: bytes) -> None: """Called when we've received a line""" with PreserveLoggingContext(self._logging_context): self._parse_and_dispatch_line(line) def _parse_and_dispatch_line(self, line: bytes) -> None: if line.strip() == "": # Ignore blank lines return linestr = line.decode("utf-8") try: cmd = parse_command_from_line(linestr) except Exception as e: logger.exception("[%s] failed to parse line: %r", self.id(), linestr) self.send_error("failed to parse line: %r (%r):" % (e, linestr)) return if cmd.NAME not in self.VALID_INBOUND_COMMANDS: logger.error("[%s] invalid command %s", self.id(), cmd.NAME) self.send_error("invalid command: %s", cmd.NAME) return self.last_received_command = self.clock.time_msec() tcp_inbound_commands_counter.labels(cmd.NAME, self.name).inc() self.handle_command(cmd) def handle_command(self, cmd: Command) -> None: """Handle a command we have received over the replication stream. First calls `self.on_` if it exists, then calls `self.command_handler.on_` if it exists (which can optionally return an Awaitable). This allows for protocol level handling of commands (e.g. PINGs), before delegating to the handler. Args: cmd: received command """ handled = False # First call any command handlers on this instance. These are for TCP # specific handling. cmd_func = getattr(self, "on_%s" % (cmd.NAME,), None) if cmd_func: cmd_func(cmd) handled = True # Then call out to the handler. cmd_func = getattr(self.command_handler, "on_%s" % (cmd.NAME,), None) if cmd_func: res = cmd_func(self, cmd) # the handler might be a coroutine: fire it off as a background process # if so. if isawaitable(res): run_as_background_process( "replication-" + cmd.get_logcontext_id(), lambda: res ) handled = True if not handled: logger.warning("Unhandled command: %r", cmd) def close(self) -> None: logger.warning("[%s] Closing connection", self.id()) self.time_we_closed = self.clock.time_msec() assert self.transport is not None self.transport.loseConnection() self.on_connection_closed() def send_error(self, error_string: str, *args: Any) -> None: """Send an error to remote and close the connection.""" self.send_command(ErrorCommand(error_string % args)) self.close() def send_command(self, cmd: Command, do_buffer: bool = True) -> None: """Send a command if connection has been established. Args: cmd do_buffer: Whether to buffer the message or always attempt to send the command. This is mostly used to send an error message if we're about to close the connection due our buffers becoming full. """ if self.state == ConnectionStates.CLOSED: logger.debug("[%s] Not sending, connection closed", self.id()) return if do_buffer and self.state != ConnectionStates.ESTABLISHED: self._queue_command(cmd) return tcp_outbound_commands_counter.labels(cmd.NAME, self.name).inc() string = "%s %s" % (cmd.NAME, cmd.to_line()) if "\n" in string: raise Exception("Unexpected newline in command: %r", string) encoded_string = string.encode("utf-8") if len(encoded_string) > self.MAX_LENGTH: raise Exception( "Failed to send command %s as too long (%d > %d)" % (cmd.NAME, len(encoded_string), self.MAX_LENGTH) ) self.sendLine(encoded_string) self.last_sent_command = self.clock.time_msec() def _queue_command(self, cmd: Command) -> None: """Queue the command until the connection is ready to write to again.""" logger.debug("[%s] Queueing as conn %r, cmd: %r", self.id(), self.state, cmd) self.pending_commands.append(cmd) if len(self.pending_commands) > self.max_line_buffer: # The other side is failing to keep up and out buffers are becoming # full, so lets close the connection. # XXX: should we squawk more loudly? logger.error("[%s] Remote failed to keep up", self.id()) self.send_command(ErrorCommand("Failed to keep up"), do_buffer=False) self.close() def _send_pending_commands(self) -> None: """Send any queued commandes""" pending = self.pending_commands self.pending_commands = [] for cmd in pending: self.send_command(cmd) def on_PING(self, cmd: PingCommand) -> None: self.received_ping = True def on_ERROR(self, cmd: ErrorCommand) -> None: logger.error("[%s] Remote reported error: %r", self.id(), cmd.data) def pauseProducing(self) -> None: """This is called when both the kernel send buffer and the twisted tcp connection send buffers have become full. We don't actually have any control over those sizes, so we buffer some commands ourselves before knifing the connection due to the remote failing to keep up. """ logger.info("[%s] Pause producing", self.id()) self.state = ConnectionStates.PAUSED def resumeProducing(self) -> None: """The remote has caught up after we started buffering!""" logger.info("[%s] Resume producing", self.id()) self.state = ConnectionStates.ESTABLISHED self._send_pending_commands() def stopProducing(self) -> None: """We're never going to send any more data (normally because either we or the remote has closed the connection) """ logger.info("[%s] Stop producing", self.id()) self.on_connection_closed() def connectionLost(self, reason: Failure) -> None: # type: ignore[override] logger.info("[%s] Replication connection closed: %r", self.id(), reason) if isinstance(reason, Failure): assert reason.type is not None connection_close_counter.labels(reason.type.__name__).inc() else: connection_close_counter.labels(reason.__class__.__name__).inc() # type: ignore[unreachable] try: # Remove us from list of connections to be monitored connected_connections.remove(self) except ValueError: pass # Stop the looping call sending pings. if self._send_ping_loop and self._send_ping_loop.running: self._send_ping_loop.stop() self.on_connection_closed() def on_connection_closed(self) -> None: logger.info("[%s] Connection was closed", self.id()) self.state = ConnectionStates.CLOSED self.pending_commands = [] self.command_handler.lost_connection(self) if self.transport: self.transport.unregisterProducer() # mark the logging context as finished by triggering `__exit__()` with PreserveLoggingContext(): with self._logging_context: pass # the sentinel context is now active, which may not be correct. # PreserveLoggingContext() will restore the correct logging context. def __str__(self) -> str: addr = None if self.transport: addr = str(self.transport.getPeer()) return "ReplicationConnection" % ( self.name, self.conn_id, addr, ) def id(self) -> str: return "%s-%s" % (self.name, self.conn_id) def lineLengthExceeded(self, line: str) -> None: """Called when we receive a line that is above the maximum line length""" self.send_error("Line length exceeded") class ServerReplicationStreamProtocol(BaseReplicationStreamProtocol): VALID_INBOUND_COMMANDS = VALID_CLIENT_COMMANDS VALID_OUTBOUND_COMMANDS = VALID_SERVER_COMMANDS def __init__( self, server_name: str, clock: Clock, handler: "ReplicationCommandHandler" ): super().__init__(clock, handler) self.server_name = server_name def connectionMade(self) -> None: self.send_command(ServerCommand(self.server_name)) super().connectionMade() def on_NAME(self, cmd: NameCommand) -> None: logger.info("[%s] Renamed to %r", self.id(), cmd.data) self.name = cmd.data class ClientReplicationStreamProtocol(BaseReplicationStreamProtocol): VALID_INBOUND_COMMANDS = VALID_SERVER_COMMANDS VALID_OUTBOUND_COMMANDS = VALID_CLIENT_COMMANDS def __init__( self, hs: "HomeServer", client_name: str, server_name: str, clock: Clock, command_handler: "ReplicationCommandHandler", ): super().__init__(clock, command_handler) self.client_name = client_name self.server_name = server_name def connectionMade(self) -> None: self.send_command(NameCommand(self.client_name)) super().connectionMade() # Once we've connected subscribe to the necessary streams self.replicate() def on_SERVER(self, cmd: ServerCommand) -> None: if cmd.data != self.server_name: logger.error("[%s] Connected to wrong remote: %r", self.id(), cmd.data) self.send_error("Wrong remote") def replicate(self) -> None: """Send the subscription request to the server""" logger.info("[%s] Subscribing to replication streams", self.id()) self.send_command(ReplicateCommand()) # The following simply registers metrics for the replication connections pending_commands = LaterGauge( "synapse_replication_tcp_protocol_pending_commands", "", ["name"], lambda: {(p.name,): len(p.pending_commands) for p in connected_connections}, ) def transport_buffer_size(protocol: BaseReplicationStreamProtocol) -> int: if protocol.transport: size = len(protocol.transport.dataBuffer) + protocol.transport._tempDataLen return size return 0 transport_send_buffer = LaterGauge( "synapse_replication_tcp_protocol_transport_send_buffer", "", ["name"], lambda: {(p.name,): transport_buffer_size(p) for p in connected_connections}, ) def transport_kernel_read_buffer_size( protocol: BaseReplicationStreamProtocol, read: bool = True ) -> int: SIOCINQ = 0x541B SIOCOUTQ = 0x5411 if protocol.transport: fileno = protocol.transport.getHandle().fileno() if read: op = SIOCINQ else: op = SIOCOUTQ size = struct.unpack("I", fcntl.ioctl(fileno, op, b"\0\0\0\0"))[0] return size return 0 tcp_transport_kernel_send_buffer = LaterGauge( "synapse_replication_tcp_protocol_transport_kernel_send_buffer", "", ["name"], lambda: { (p.name,): transport_kernel_read_buffer_size(p, False) for p in connected_connections }, ) tcp_transport_kernel_read_buffer = LaterGauge( "synapse_replication_tcp_protocol_transport_kernel_read_buffer", "", ["name"], lambda: { (p.name,): transport_kernel_read_buffer_size(p, True) for p in connected_connections }, ) synapse-1.53.0/synapse/replication/tcp/redis.py000066400000000000000000000317361420514467300215430ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from inspect import isawaitable from typing import TYPE_CHECKING, Any, Generic, Optional, Type, TypeVar, cast import attr import txredisapi from zope.interface import implementer from twisted.internet.address import IPv4Address, IPv6Address from twisted.internet.interfaces import IAddress, IConnector from twisted.python.failure import Failure from synapse.logging.context import PreserveLoggingContext, make_deferred_yieldable from synapse.metrics.background_process_metrics import ( BackgroundProcessLoggingContext, run_as_background_process, wrap_as_background_process, ) from synapse.replication.tcp.commands import ( Command, ReplicateCommand, parse_command_from_line, ) from synapse.replication.tcp.protocol import ( IReplicationConnection, tcp_inbound_commands_counter, tcp_outbound_commands_counter, ) if TYPE_CHECKING: from synapse.replication.tcp.handler import ReplicationCommandHandler from synapse.server import HomeServer logger = logging.getLogger(__name__) T = TypeVar("T") V = TypeVar("V") @attr.s class ConstantProperty(Generic[T, V]): """A descriptor that returns the given constant, ignoring attempts to set it. """ constant: V = attr.ib() def __get__(self, obj: Optional[T], objtype: Optional[Type[T]] = None) -> V: return self.constant def __set__(self, obj: Optional[T], value: V) -> None: pass @implementer(IReplicationConnection) class RedisSubscriber(txredisapi.SubscriberProtocol): """Connection to redis subscribed to replication stream. This class fulfils two functions: (a) it implements the twisted Protocol API, where it handles the SUBSCRIBEd redis connection, parsing *incoming* messages into replication commands, and passing them to `ReplicationCommandHandler` (b) it implements the IReplicationConnection API, where it sends *outgoing* commands onto outbound_redis_connection. Due to the vagaries of `txredisapi` we don't want to have a custom constructor, so instead we expect the defined attributes below to be set immediately after initialisation. Attributes: synapse_handler: The command handler to handle incoming commands. synapse_stream_name: The *redis* stream name to subscribe to and publish from (not anything to do with Synapse replication streams). synapse_outbound_redis_connection: The connection to redis to use to send commands. """ synapse_handler: "ReplicationCommandHandler" synapse_stream_name: str synapse_outbound_redis_connection: txredisapi.RedisProtocol def __init__(self, *args: Any, **kwargs: Any): super().__init__(*args, **kwargs) # a logcontext which we use for processing incoming commands. We declare it as a # background process so that the CPU stats get reported to prometheus. with PreserveLoggingContext(): # thanks to `PreserveLoggingContext()`, the new logcontext is guaranteed to # capture the sentinel context as its containing context and won't prevent # GC of / unintentionally reactivate what would be the current context. self._logging_context = BackgroundProcessLoggingContext( "replication_command_handler" ) def connectionMade(self) -> None: logger.info("Connected to redis") super().connectionMade() run_as_background_process("subscribe-replication", self._send_subscribe) async def _send_subscribe(self) -> None: # it's important to make sure that we only send the REPLICATE command once we # have successfully subscribed to the stream - otherwise we might miss the # POSITION response sent back by the other end. logger.info("Sending redis SUBSCRIBE for %s", self.synapse_stream_name) await make_deferred_yieldable(self.subscribe(self.synapse_stream_name)) logger.info( "Successfully subscribed to redis stream, sending REPLICATE command" ) self.synapse_handler.new_connection(self) await self._async_send_command(ReplicateCommand()) logger.info("REPLICATE successfully sent") # We send out our positions when there is a new connection in case the # other side missed updates. We do this for Redis connections as the # otherside won't know we've connected and so won't issue a REPLICATE. self.synapse_handler.send_positions_to_connection(self) def messageReceived(self, pattern: str, channel: str, message: str) -> None: """Received a message from redis.""" with PreserveLoggingContext(self._logging_context): self._parse_and_dispatch_message(message) def _parse_and_dispatch_message(self, message: str) -> None: if message.strip() == "": # Ignore blank lines return try: cmd = parse_command_from_line(message) except Exception: logger.exception( "Failed to parse replication line: %r", message, ) return # We use "redis" as the name here as we don't have 1:1 connections to # remote instances. tcp_inbound_commands_counter.labels(cmd.NAME, "redis").inc() self.handle_command(cmd) def handle_command(self, cmd: Command) -> None: """Handle a command we have received over the replication stream. Delegates to `self.handler.on_` (which can optionally return an Awaitable). Args: cmd: received command """ cmd_func = getattr(self.synapse_handler, "on_%s" % (cmd.NAME,), None) if not cmd_func: logger.warning("Unhandled command: %r", cmd) return res = cmd_func(self, cmd) # the handler might be a coroutine: fire it off as a background process # if so. if isawaitable(res): run_as_background_process( "replication-" + cmd.get_logcontext_id(), lambda: res ) def connectionLost(self, reason: Failure) -> None: # type: ignore[override] logger.info("Lost connection to redis") super().connectionLost(reason) self.synapse_handler.lost_connection(self) # mark the logging context as finished by triggering `__exit__()` with PreserveLoggingContext(): with self._logging_context: pass # the sentinel context is now active, which may not be correct. # PreserveLoggingContext() will restore the correct logging context. def send_command(self, cmd: Command) -> None: """Send a command if connection has been established. Args: cmd: The command to send """ run_as_background_process( "send-cmd", self._async_send_command, cmd, bg_start_span=False ) async def _async_send_command(self, cmd: Command) -> None: """Encode a replication command and send it over our outbound connection""" string = "%s %s" % (cmd.NAME, cmd.to_line()) if "\n" in string: raise Exception("Unexpected newline in command: %r", string) encoded_string = string.encode("utf-8") # We use "redis" as the name here as we don't have 1:1 connections to # remote instances. tcp_outbound_commands_counter.labels(cmd.NAME, "redis").inc() await make_deferred_yieldable( self.synapse_outbound_redis_connection.publish( self.synapse_stream_name, encoded_string ) ) class SynapseRedisFactory(txredisapi.RedisFactory): """A subclass of RedisFactory that periodically sends pings to ensure that we detect dead connections. """ # We want to *always* retry connecting, txredisapi will stop if there is a # failure during certain operations, e.g. during AUTH. continueTrying = cast(bool, ConstantProperty(True)) def __init__( self, hs: "HomeServer", uuid: str, dbid: Optional[int], poolsize: int, isLazy: bool = False, handler: Type = txredisapi.ConnectionHandler, charset: str = "utf-8", password: Optional[str] = None, replyTimeout: int = 30, convertNumbers: Optional[int] = True, ): super().__init__( uuid=uuid, dbid=dbid, poolsize=poolsize, isLazy=isLazy, handler=handler, charset=charset, password=password, replyTimeout=replyTimeout, convertNumbers=convertNumbers, ) hs.get_clock().looping_call(self._send_ping, 30 * 1000) @wrap_as_background_process("redis_ping") async def _send_ping(self) -> None: for connection in self.pool: try: await make_deferred_yieldable(connection.ping()) except Exception: logger.warning("Failed to send ping to a redis connection") # ReconnectingClientFactory has some logging (if you enable `self.noisy`), but # it's rubbish. We add our own here. def startedConnecting(self, connector: IConnector) -> None: logger.info( "Connecting to redis server %s", format_address(connector.getDestination()) ) super().startedConnecting(connector) def clientConnectionFailed(self, connector: IConnector, reason: Failure) -> None: logger.info( "Connection to redis server %s failed: %s", format_address(connector.getDestination()), reason.value, ) super().clientConnectionFailed(connector, reason) def clientConnectionLost(self, connector: IConnector, reason: Failure) -> None: logger.info( "Connection to redis server %s lost: %s", format_address(connector.getDestination()), reason.value, ) super().clientConnectionLost(connector, reason) def format_address(address: IAddress) -> str: if isinstance(address, (IPv4Address, IPv6Address)): return "%s:%i" % (address.host, address.port) return str(address) class RedisDirectTcpReplicationClientFactory(SynapseRedisFactory): """This is a reconnecting factory that connects to redis and immediately subscribes to a stream. Args: hs outbound_redis_connection: A connection to redis that will be used to send outbound commands (this is separate to the redis connection used to subscribe). """ maxDelay = 5 protocol = RedisSubscriber def __init__( self, hs: "HomeServer", outbound_redis_connection: txredisapi.RedisProtocol ): super().__init__( hs, uuid="subscriber", dbid=None, poolsize=1, replyTimeout=30, password=hs.config.redis.redis_password, ) self.synapse_handler = hs.get_tcp_replication() self.synapse_stream_name = hs.hostname self.synapse_outbound_redis_connection = outbound_redis_connection def buildProtocol(self, addr: IAddress) -> RedisSubscriber: p = super().buildProtocol(addr) p = cast(RedisSubscriber, p) # We do this here rather than add to the constructor of `RedisSubcriber` # as to do so would involve overriding `buildProtocol` entirely, however # the base method does some other things than just instantiating the # protocol. p.synapse_handler = self.synapse_handler p.synapse_outbound_redis_connection = self.synapse_outbound_redis_connection p.synapse_stream_name = self.synapse_stream_name return p def lazyConnection( hs: "HomeServer", host: str = "localhost", port: int = 6379, dbid: Optional[int] = None, reconnect: bool = True, password: Optional[str] = None, replyTimeout: int = 30, ) -> txredisapi.RedisProtocol: """Creates a connection to Redis that is lazily set up and reconnects if the connections is lost. """ uuid = "%s:%d" % (host, port) factory = SynapseRedisFactory( hs, uuid=uuid, dbid=dbid, poolsize=1, isLazy=True, handler=txredisapi.ConnectionHandler, password=password, replyTimeout=replyTimeout, ) factory.continueTrying = reconnect reactor = hs.get_reactor() reactor.connectTCP( host, port, factory, timeout=30, bindAddress=None, ) return factory.handler synapse-1.53.0/synapse/replication/tcp/resource.py000066400000000000000000000255561420514467300222670ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """The server side of the replication stream. """ import logging import random from typing import TYPE_CHECKING, List, Optional, Tuple from prometheus_client import Counter from twisted.internet.interfaces import IAddress from twisted.internet.protocol import ServerFactory from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.tcp.commands import PositionCommand from synapse.replication.tcp.protocol import ServerReplicationStreamProtocol from synapse.replication.tcp.streams import EventsStream from synapse.replication.tcp.streams._base import StreamRow, Token from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer stream_updates_counter = Counter( "synapse_replication_tcp_resource_stream_updates", "", ["stream_name"] ) logger = logging.getLogger(__name__) class ReplicationStreamProtocolFactory(ServerFactory): """Factory for new replication connections.""" def __init__(self, hs: "HomeServer"): self.command_handler = hs.get_tcp_replication() self.clock = hs.get_clock() self.server_name = hs.config.server.server_name # If we've created a `ReplicationStreamProtocolFactory` then we're # almost certainly registering a replication listener, so let's ensure # that we've started a `ReplicationStreamer` instance to actually push # data. # # (This is a bit of a weird place to do this, but the alternatives such # as putting this in `HomeServer.setup()`, requires either passing the # listener config again or always starting a `ReplicationStreamer`.) hs.get_replication_streamer() def buildProtocol(self, addr: IAddress) -> ServerReplicationStreamProtocol: return ServerReplicationStreamProtocol( self.server_name, self.clock, self.command_handler ) class ReplicationStreamer: """Handles replication connections. This needs to be poked when new replication data may be available. When new data is available it will propagate to all connected clients. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.clock = hs.get_clock() self.notifier = hs.get_notifier() self._instance_name = hs.get_instance_name() self._replication_torture_level = hs.config.server.replication_torture_level self.notifier.add_replication_callback(self.on_notifier_poke) # Keeps track of whether we are currently checking for updates self.is_looping = False self.pending_updates = False self.command_handler = hs.get_tcp_replication() # Set of streams to replicate. self.streams = self.command_handler.get_streams_to_replicate() # If we have streams then we must have redis enabled or on master assert ( not self.streams or hs.config.redis.redis_enabled or not hs.config.worker.worker_app ) # If we are replicating an event stream we want to periodically check if # we should send updated POSITIONs. We do this as a looping call rather # explicitly poking when the position advances (without new data to # replicate) to reduce replication traffic (otherwise each writer would # likely send a POSITION for each new event received over replication). # # Note that if the position hasn't advanced then we won't send anything. if any(EventsStream.NAME == s.NAME for s in self.streams): self.clock.looping_call(self.on_notifier_poke, 1000) def on_notifier_poke(self) -> None: """Checks if there is actually any new data and sends it to the connections if there are. This should get called each time new data is available, even if it is currently being executed, so that nothing gets missed """ if not self.command_handler.connected() or not self.streams: # Don't bother if nothing is listening. We still need to advance # the stream tokens otherwise they'll fall behind forever for stream in self.streams: stream.discard_updates_and_advance() return # We check up front to see if anything has actually changed, as we get # poked because of changes that happened on other instances. if all( stream.last_token == stream.current_token(self._instance_name) for stream in self.streams ): return # If there are updates then we need to set this even if we're already # looping, as the loop needs to know that he might need to loop again. self.pending_updates = True if self.is_looping: logger.debug("Notifier poke loop already running") return run_as_background_process("replication_notifier", self._run_notifier_loop) async def _run_notifier_loop(self) -> None: self.is_looping = True try: # Keep looping while there have been pokes about potential updates. # This protects against the race where a stream we already checked # gets an update while we're handling other streams. while self.pending_updates: self.pending_updates = False with Measure(self.clock, "repl.stream.get_updates"): all_streams = self.streams if self._replication_torture_level is not None: # there is no guarantee about ordering between the streams, # so let's shuffle them around a bit when we are in torture mode. all_streams = list(all_streams) random.shuffle(all_streams) for stream in all_streams: if stream.last_token == stream.current_token( self._instance_name ): continue if self._replication_torture_level: await self.clock.sleep( self._replication_torture_level / 1000.0 ) last_token = stream.last_token logger.debug( "Getting stream: %s: %s -> %s", stream.NAME, stream.last_token, stream.current_token(self._instance_name), ) try: updates, current_token, limited = await stream.get_updates() self.pending_updates |= limited except Exception: logger.info("Failed to handle stream %s", stream.NAME) raise logger.debug( "Sending %d updates", len(updates), ) if updates: logger.info( "Streaming: %s -> %s", stream.NAME, updates[-1][0] ) stream_updates_counter.labels(stream.NAME).inc(len(updates)) else: # The token has advanced but there is no data to # send, so we send a `POSITION` to inform other # workers of the updated position. if stream.NAME == EventsStream.NAME: # XXX: We only do this for the EventStream as it # turns out that e.g. account data streams share # their "current token" with each other, meaning # that it is *not* safe to send a POSITION. logger.info( "Sending position: %s -> %s", stream.NAME, current_token, ) self.command_handler.send_command( PositionCommand( stream.NAME, self._instance_name, last_token, current_token, ) ) continue # Some streams return multiple rows with the same stream IDs, # we need to make sure they get sent out in batches. We do # this by setting the current token to all but the last of # a series of updates with the same token to have a None # token. See RdataCommand for more details. batched_updates = _batch_updates(updates) for token, row in batched_updates: try: self.command_handler.stream_update( stream.NAME, token, row ) except Exception: logger.exception("Failed to replicate") logger.debug("No more pending updates, breaking poke loop") finally: self.pending_updates = False self.is_looping = False def _batch_updates( updates: List[Tuple[Token, StreamRow]] ) -> List[Tuple[Optional[Token], StreamRow]]: """Takes a list of updates of form [(token, row)] and sets the token to None for all rows where the next row has the same token. This is used to implement batching. For example: [(1, _), (1, _), (2, _), (3, _), (3, _)] becomes: [(None, _), (1, _), (2, _), (None, _), (3, _)] """ if not updates: return [] new_updates: List[Tuple[Optional[Token], StreamRow]] = [] for i, update in enumerate(updates[:-1]): if update[0] == updates[i + 1][0]: new_updates.append((None, update[1])) else: new_updates.append(update) new_updates.append(updates[-1]) return new_updates synapse-1.53.0/synapse/replication/tcp/streams/000077500000000000000000000000001420514467300215275ustar00rootroot00000000000000synapse-1.53.0/synapse/replication/tcp/streams/__init__.py000066400000000000000000000046311420514467300236440ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Defines all the valid streams that clients can subscribe to, and the format of the rows returned by each stream. Each stream is defined by the following information: stream name: The name of the stream row type: The type that is used to serialise/deserialse the row current_token: The function that returns the current token for the stream update_function: The function that returns a list of updates between two tokens """ from synapse.replication.tcp.streams._base import ( AccountDataStream, BackfillStream, CachesStream, DeviceListsStream, GroupServerStream, PresenceFederationStream, PresenceStream, PushersStream, PushRulesStream, ReceiptsStream, Stream, TagAccountDataStream, ToDeviceStream, TypingStream, UserSignatureStream, ) from synapse.replication.tcp.streams.events import EventsStream from synapse.replication.tcp.streams.federation import FederationStream STREAMS_MAP = { stream.NAME: stream for stream in ( EventsStream, BackfillStream, PresenceStream, PresenceFederationStream, TypingStream, ReceiptsStream, PushRulesStream, PushersStream, CachesStream, DeviceListsStream, ToDeviceStream, FederationStream, TagAccountDataStream, AccountDataStream, GroupServerStream, UserSignatureStream, ) } __all__ = [ "STREAMS_MAP", "Stream", "BackfillStream", "PresenceStream", "PresenceFederationStream", "TypingStream", "ReceiptsStream", "PushRulesStream", "PushersStream", "CachesStream", "DeviceListsStream", "ToDeviceStream", "TagAccountDataStream", "AccountDataStream", "GroupServerStream", "UserSignatureStream", ] synapse-1.53.0/synapse/replication/tcp/streams/_base.py000066400000000000000000000471241420514467300231620ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import heapq import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, List, Optional, Tuple, TypeVar, ) import attr from synapse.replication.http.streams import ReplicationGetStreamUpdates from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # the number of rows to request from an update_function. _STREAM_UPDATE_TARGET_ROW_COUNT = 100 # Some type aliases to make things a bit easier. # A stream position token Token = int # The type of a stream update row, after JSON deserialisation, but before # parsing with Stream.parse_row (which turns it into a `ROW_TYPE`). Normally it's # just a row from a database query, though this is dependent on the stream in question. # StreamRow = TypeVar("StreamRow", bound=Tuple) # The type returned by the update_function of a stream, as well as get_updates(), # get_updates_since, etc. # # It consists of a triplet `(updates, new_last_token, limited)`, where: # * `updates` is a list of `(token, row)` entries. # * `new_last_token` is the new position in stream. # * `limited` is whether there are more updates to fetch. # StreamUpdateResult = Tuple[List[Tuple[Token, StreamRow]], Token, bool] # The type of an update_function for a stream # # The arguments are: # # * instance_name: the writer of the stream # * from_token: the previous stream token: the starting point for fetching the # updates # * to_token: the new stream token: the point to get updates up to # * target_row_count: a target for the number of rows to be returned. # # The update_function is expected to return up to _approximately_ target_row_count rows. # If there are more updates available, it should set `limited` in the result, and # it will be called again to get the next batch. # UpdateFunction = Callable[[str, Token, Token, int], Awaitable[StreamUpdateResult]] class Stream: """Base class for the streams. Provides a `get_updates()` function that returns new updates since the last time it was called. """ NAME: str # The name of the stream # The type of the row. Used by the default impl of parse_row. ROW_TYPE: Any = None @classmethod def parse_row(cls, row: StreamRow) -> Any: """Parse a row received over replication By default, assumes that the row data is an array object and passes its contents to the constructor of the ROW_TYPE for this stream. Args: row: row data from the incoming RDATA command, after json decoding Returns: ROW_TYPE object for this stream """ return cls.ROW_TYPE(*row) def __init__( self, local_instance_name: str, current_token_function: Callable[[str], Token], update_function: UpdateFunction, ): """Instantiate a Stream `current_token_function` and `update_function` are callbacks which should be implemented by subclasses. `current_token_function` takes an instance name, which is a writer to the stream, and returns the position in the stream of the writer (as viewed from the current process). On the writer process this is where the writer has successfully written up to, whereas on other processes this is the position which we have received updates up to over replication. (Note that most streams have a single writer and so their implementations ignore the instance name passed in). `update_function` is called to get updates for this stream between a pair of stream tokens. See the `UpdateFunction` type definition for more info. Args: local_instance_name: The instance name of the current process current_token_function: callback to get the current token, as above update_function: callback go get stream updates, as above """ self.local_instance_name = local_instance_name self.current_token = current_token_function self.update_function = update_function # The token from which we last asked for updates self.last_token = self.current_token(self.local_instance_name) def discard_updates_and_advance(self) -> None: """Called when the stream should advance but the updates would be discarded, e.g. when there are no currently connected workers. """ self.last_token = self.current_token(self.local_instance_name) async def get_updates(self) -> StreamUpdateResult: """Gets all updates since the last time this function was called (or since the stream was constructed if it hadn't been called before). Returns: A triplet `(updates, new_last_token, limited)`, where `updates` is a list of `(token, row)` entries, `new_last_token` is the new position in stream, and `limited` is whether there are more updates to fetch. """ current_token = self.current_token(self.local_instance_name) updates, current_token, limited = await self.get_updates_since( self.local_instance_name, self.last_token, current_token ) self.last_token = current_token return updates, current_token, limited async def get_updates_since( self, instance_name: str, from_token: Token, upto_token: Token ) -> StreamUpdateResult: """Like get_updates except allows specifying from when we should stream updates Returns: A triplet `(updates, new_last_token, limited)`, where `updates` is a list of `(token, row)` entries, `new_last_token` is the new position in stream, and `limited` is whether there are more updates to fetch. """ from_token = int(from_token) if from_token == upto_token: return [], upto_token, False updates, upto_token, limited = await self.update_function( instance_name, from_token, upto_token, _STREAM_UPDATE_TARGET_ROW_COUNT, ) return updates, upto_token, limited def current_token_without_instance( current_token: Callable[[], int] ) -> Callable[[str], int]: """Takes a current token callback function for a single writer stream that doesn't take an instance name parameter and wraps it in a function that does accept an instance name parameter but ignores it. """ return lambda instance_name: current_token() def make_http_update_function(hs: "HomeServer", stream_name: str) -> UpdateFunction: """Makes a suitable function for use as an `update_function` that queries the master process for updates. """ client = ReplicationGetStreamUpdates.make_client(hs) async def update_function( instance_name: str, from_token: int, upto_token: int, limit: int ) -> StreamUpdateResult: result = await client( instance_name=instance_name, stream_name=stream_name, from_token=from_token, upto_token=upto_token, ) return result["updates"], result["upto_token"], result["limited"] return update_function class BackfillStream(Stream): """We fetched some old events and either we had never seen that event before or it went from being an outlier to not. """ @attr.s(slots=True, frozen=True, auto_attribs=True) class BackfillStreamRow: event_id: str room_id: str type: str state_key: Optional[str] redacts: Optional[str] relates_to: Optional[str] NAME = "backfill" ROW_TYPE = BackfillStreamRow def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() super().__init__( hs.get_instance_name(), self._current_token, self.store.get_all_new_backfill_event_rows, ) def _current_token(self, instance_name: str) -> int: # The backfill stream over replication operates on *positive* numbers, # which means we need to negate it. return -self.store._backfill_id_gen.get_current_token_for_writer(instance_name) class PresenceStream(Stream): @attr.s(slots=True, frozen=True, auto_attribs=True) class PresenceStreamRow: user_id: str state: str last_active_ts: int last_federation_update_ts: int last_user_sync_ts: int status_msg: str currently_active: bool NAME = "presence" ROW_TYPE = PresenceStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() if hs.get_instance_name() in hs.config.worker.writers.presence: # on the presence writer, query the presence handler presence_handler = hs.get_presence_handler() from synapse.handlers.presence import PresenceHandler assert isinstance(presence_handler, PresenceHandler) update_function: UpdateFunction = presence_handler.get_all_presence_updates else: # Query presence writer process update_function = make_http_update_function(hs, self.NAME) super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_current_presence_token), update_function, ) class PresenceFederationStream(Stream): """A stream used to send ad hoc presence updates over federation. Streams the remote destination and the user ID of the presence state to send. """ @attr.s(slots=True, frozen=True, auto_attribs=True) class PresenceFederationStreamRow: destination: str user_id: str NAME = "presence_federation" ROW_TYPE = PresenceFederationStreamRow def __init__(self, hs: "HomeServer"): federation_queue = hs.get_presence_handler().get_federation_queue() super().__init__( hs.get_instance_name(), federation_queue.get_current_token, federation_queue.get_replication_rows, ) class TypingStream(Stream): @attr.s(slots=True, frozen=True, auto_attribs=True) class TypingStreamRow: room_id: str user_ids: List[str] NAME = "typing" ROW_TYPE = TypingStreamRow def __init__(self, hs: "HomeServer"): if hs.get_instance_name() in hs.config.worker.writers.typing: # On the writer, query the typing handler typing_writer_handler = hs.get_typing_writer_handler() update_function: Callable[ [str, int, int, int], Awaitable[Tuple[List[Tuple[int, Any]], int, bool]] ] = typing_writer_handler.get_all_typing_updates current_token_function = typing_writer_handler.get_current_token else: # Query the typing writer process update_function = make_http_update_function(hs, self.NAME) current_token_function = hs.get_typing_handler().get_current_token super().__init__( hs.get_instance_name(), current_token_without_instance(current_token_function), update_function, ) class ReceiptsStream(Stream): @attr.s(slots=True, frozen=True, auto_attribs=True) class ReceiptsStreamRow: room_id: str receipt_type: str user_id: str event_id: str data: dict NAME = "receipts" ROW_TYPE = ReceiptsStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_max_receipt_stream_id), store.get_all_updated_receipts, ) class PushRulesStream(Stream): """A user has changed their push rules""" @attr.s(slots=True, frozen=True, auto_attribs=True) class PushRulesStreamRow: user_id: str NAME = "push_rules" ROW_TYPE = PushRulesStreamRow def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() super().__init__( hs.get_instance_name(), self._current_token, self.store.get_all_push_rule_updates, ) def _current_token(self, instance_name: str) -> int: push_rules_token = self.store.get_max_push_rules_stream_id() return push_rules_token class PushersStream(Stream): """A user has added/changed/removed a pusher""" @attr.s(slots=True, frozen=True, auto_attribs=True) class PushersStreamRow: user_id: str app_id: str pushkey: str deleted: bool NAME = "pushers" ROW_TYPE = PushersStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_pushers_stream_token), store.get_all_updated_pushers_rows, ) class CachesStream(Stream): """A cache was invalidated on the master and no other stream would invalidate the cache on the workers """ @attr.s(slots=True, frozen=True, auto_attribs=True) class CachesStreamRow: """Stream to inform workers they should invalidate their cache. Attributes: cache_func: Name of the cached function. keys: The entry in the cache to invalidate. If None then will invalidate all. invalidation_ts: Timestamp of when the invalidation took place. """ cache_func: str keys: Optional[List[Any]] invalidation_ts: int NAME = "caches" ROW_TYPE = CachesStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), store.get_cache_stream_token_for_writer, store.get_all_updated_caches, ) class DeviceListsStream(Stream): """Either a user has updated their devices or a remote server needs to be told about a device update. """ @attr.s(slots=True, frozen=True, auto_attribs=True) class DeviceListsStreamRow: entity: str NAME = "device_lists" ROW_TYPE = DeviceListsStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_device_stream_token), store.get_all_device_list_changes_for_remotes, ) class ToDeviceStream(Stream): """New to_device messages for a client""" @attr.s(slots=True, frozen=True, auto_attribs=True) class ToDeviceStreamRow: entity: str NAME = "to_device" ROW_TYPE = ToDeviceStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_to_device_stream_token), store.get_all_new_device_messages, ) class TagAccountDataStream(Stream): """Someone added/removed a tag for a room""" @attr.s(slots=True, frozen=True, auto_attribs=True) class TagAccountDataStreamRow: user_id: str room_id: str data: JsonDict NAME = "tag_account_data" ROW_TYPE = TagAccountDataStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_max_account_data_stream_id), store.get_all_updated_tags, ) class AccountDataStream(Stream): """Global or per room account data was changed""" @attr.s(slots=True, frozen=True, auto_attribs=True) class AccountDataStreamRow: user_id: str room_id: Optional[str] data_type: str NAME = "account_data" ROW_TYPE = AccountDataStreamRow def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(self.store.get_max_account_data_stream_id), self._update_function, ) async def _update_function( self, instance_name: str, from_token: int, to_token: int, limit: int ) -> StreamUpdateResult: limited = False global_results = await self.store.get_updated_global_account_data( from_token, to_token, limit ) # if the global results hit the limit, we'll need to limit the room results to # the same stream token. if len(global_results) >= limit: to_token = global_results[-1][0] limited = True room_results = await self.store.get_updated_room_account_data( from_token, to_token, limit ) # likewise, if the room results hit the limit, limit the global results to # the same stream token. if len(room_results) >= limit: to_token = room_results[-1][0] limited = True # convert the global results to the right format, and limit them to the to_token # at the same time global_rows = ( (stream_id, (user_id, None, account_data_type)) for stream_id, user_id, account_data_type in global_results if stream_id <= to_token ) # we know that the room_results are already limited to `to_token` so no need # for a check on `stream_id` here. room_rows = ( (stream_id, (user_id, room_id, account_data_type)) for stream_id, user_id, room_id, account_data_type in room_results ) # We need to return a sorted list, so merge them together. # # Note: We order only by the stream ID to work around a bug where the # same stream ID could appear in both `global_rows` and `room_rows`, # leading to a comparison between the data tuples. The comparison could # fail due to attempting to compare the `room_id` which results in a # `TypeError` from comparing a `str` vs `None`. updates = list(heapq.merge(room_rows, global_rows, key=lambda row: row[0])) return updates, to_token, limited class GroupServerStream(Stream): @attr.s(slots=True, frozen=True, auto_attribs=True) class GroupsStreamRow: group_id: str user_id: str type: str content: JsonDict NAME = "groups" ROW_TYPE = GroupsStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_group_stream_token), store.get_all_groups_changes, ) class UserSignatureStream(Stream): """A user has signed their own device with their user-signing key""" @attr.s(slots=True, frozen=True, auto_attribs=True) class UserSignatureStreamRow: user_id: str NAME = "user_signature" ROW_TYPE = UserSignatureStreamRow def __init__(self, hs: "HomeServer"): store = hs.get_datastore() super().__init__( hs.get_instance_name(), current_token_without_instance(store.get_device_stream_token), store.get_all_user_signature_changes_for_remotes, ) synapse-1.53.0/synapse/replication/tcp/streams/events.py000066400000000000000000000175501420514467300234150ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import heapq from typing import TYPE_CHECKING, Iterable, Optional, Tuple, Type, TypeVar, cast import attr from synapse.replication.tcp.streams._base import ( Stream, StreamRow, StreamUpdateResult, Token, ) if TYPE_CHECKING: from synapse.server import HomeServer """Handling of the 'events' replication stream This stream contains rows of various types. Each row therefore contains a 'type' identifier before the real data. For example:: RDATA events batch ["state", ["!room:id", "m.type", "", "$event:id"]] RDATA events 12345 ["ev", ["$event:id", "!room:id", "m.type", null, null]] An "ev" row is sent for each new event. The fields in the data part are: * The new event id * The room id for the event * The type of the new event * The state key of the event, for state events * The event id of an event which is redacted by this event. A "state" row is sent whenever the "current state" in a room changes. The fields in the data part are: * The room id for the state change * The event type of the state which has changed * The state_key of the state which has changed * The event id of the new state """ @attr.s(slots=True, frozen=True, auto_attribs=True) class EventsStreamRow: """A parsed row from the events replication stream""" type: str # the TypeId of one of the *EventsStreamRows data: "BaseEventsStreamRow" T = TypeVar("T", bound="BaseEventsStreamRow") class BaseEventsStreamRow: """Base class for rows to be sent in the events stream. Specifies how to identify, serialize and deserialize the different types. """ # Unique string that ids the type. Must be overridden in sub classes. TypeId: str @classmethod def from_data(cls: Type[T], data: Iterable[Optional[str]]) -> T: """Parse the data from the replication stream into a row. By default we just call the constructor with the data list as arguments Args: data: The value of the data object from the replication stream """ return cls(*data) @attr.s(slots=True, frozen=True, auto_attribs=True) class EventsStreamEventRow(BaseEventsStreamRow): TypeId = "ev" event_id: str room_id: str type: str state_key: Optional[str] redacts: Optional[str] relates_to: Optional[str] membership: Optional[str] rejected: bool @attr.s(slots=True, frozen=True, auto_attribs=True) class EventsStreamCurrentStateRow(BaseEventsStreamRow): TypeId = "state" room_id: str type: str state_key: str event_id: Optional[str] _EventRows: Tuple[Type[BaseEventsStreamRow], ...] = ( EventsStreamEventRow, EventsStreamCurrentStateRow, ) TypeToRow = {Row.TypeId: Row for Row in _EventRows} class EventsStream(Stream): """We received a new event, or an event went from being an outlier to not""" NAME = "events" def __init__(self, hs: "HomeServer"): self._store = hs.get_datastore() super().__init__( hs.get_instance_name(), self._store._stream_id_gen.get_current_token_for_writer, self._update_function, ) async def _update_function( self, instance_name: str, from_token: Token, current_token: Token, target_row_count: int, ) -> StreamUpdateResult: # the events stream merges together three separate sources: # * new events # * current_state changes # * events which were previously outliers, but have now been de-outliered. # # The merge operation is complicated by the fact that we only have a single # "stream token" which is supposed to indicate how far we have got through # all three streams. It's therefore no good to return rows 1-1000 from the # "new events" table if the state_deltas are limited to rows 1-100 by the # target_row_count. # # In other words: we must pick a new upper limit, and must return *all* rows # up to that point for each of the three sources. # # Start by trying to split the target_row_count up. We expect to have a # negligible number of ex-outliers, and a rough approximation based on recent # traffic on sw1v.org shows that there are approximately the same number of # event rows between a given pair of stream ids as there are state # updates, so let's split our target_row_count among those two types. The target # is only an approximation - it doesn't matter if we end up going a bit over it. target_row_count //= 2 # now we fetch up to that many rows from the events table event_rows = await self._store.get_all_new_forward_event_rows( instance_name, from_token, current_token, target_row_count ) # we rely on get_all_new_forward_event_rows strictly honouring the limit, so # that we know it is safe to just take upper_limit = event_rows[-1][0]. assert ( len(event_rows) <= target_row_count ), "get_all_new_forward_event_rows did not honour row limit" # if we hit the limit on event_updates, there's no point in going beyond the # last stream_id in the batch for the other sources. if len(event_rows) == target_row_count: limited = True upper_limit: int = event_rows[-1][0] else: limited = False upper_limit = current_token # next up is the state delta table. ( state_rows, upper_limit, state_rows_limited, ) = await self._store.get_all_updated_current_state_deltas( instance_name, from_token, upper_limit, target_row_count ) limited = limited or state_rows_limited # finally, fetch the ex-outliers rows. We assume there are few enough of these # not to bother with the limit. ex_outliers_rows = await self._store.get_ex_outlier_stream_rows( instance_name, from_token, upper_limit ) # we now need to turn the raw database rows returned into tuples suitable # for the replication protocol (basically, we add an identifier to # distinguish the row type). At the same time, we can limit the event_rows # to the max stream_id from state_rows. event_updates: Iterable[Tuple[int, Tuple]] = ( (stream_id, (EventsStreamEventRow.TypeId, rest)) for (stream_id, *rest) in event_rows if stream_id <= upper_limit ) state_updates: Iterable[Tuple[int, Tuple]] = ( (stream_id, (EventsStreamCurrentStateRow.TypeId, rest)) for (stream_id, *rest) in state_rows ) ex_outliers_updates: Iterable[Tuple[int, Tuple]] = ( (stream_id, (EventsStreamEventRow.TypeId, rest)) for (stream_id, *rest) in ex_outliers_rows ) # we need to return a sorted list, so merge them together. updates = list(heapq.merge(event_updates, state_updates, ex_outliers_updates)) return updates, upper_limit, limited @classmethod def parse_row(cls, row: StreamRow) -> "EventsStreamRow": (typ, data) = cast(Tuple[str, Iterable[Optional[str]]], row) event_stream_row_data = TypeToRow[typ].from_data(data) return EventsStreamRow(typ, event_stream_row_data) synapse-1.53.0/synapse/replication/tcp/streams/federation.py000066400000000000000000000057601420514467300242310ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Any, Awaitable, Callable, List, Tuple import attr from synapse.replication.tcp.streams._base import ( Stream, current_token_without_instance, make_http_update_function, ) from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer class FederationStream(Stream): """Data to be sent over federation. Only available when master has federation sending disabled. """ @attr.s(slots=True, frozen=True, auto_attribs=True) class FederationStreamRow: type: str # the type of data as defined in the BaseFederationRows data: JsonDict # serialization of a federation.send_queue.BaseFederationRow NAME = "federation" ROW_TYPE = FederationStreamRow def __init__(self, hs: "HomeServer"): if hs.config.worker.worker_app is None: # master process: get updates from the FederationRemoteSendQueue. # (if the master is configured to send federation itself, federation_sender # will be a real FederationSender, which has stubs for current_token and # get_replication_rows.) federation_sender = hs.get_federation_sender() current_token = current_token_without_instance( federation_sender.get_current_token ) update_function: Callable[ [str, int, int, int], Awaitable[Tuple[List[Tuple[int, Any]], int, bool]] ] = federation_sender.get_replication_rows elif hs.should_send_federation(): # federation sender: Query master process update_function = make_http_update_function(hs, self.NAME) current_token = self._stub_current_token else: # other worker: stub out the update function (we're not interested in # any updates so when we get a POSITION we do nothing) update_function = self._stub_update_function current_token = self._stub_current_token super().__init__(hs.get_instance_name(), current_token, update_function) @staticmethod def _stub_current_token(instance_name: str) -> int: # dummy current-token method for use on workers return 0 @staticmethod async def _stub_update_function( instance_name: str, from_token: int, upto_token: int, limit: int ) -> Tuple[list, int, bool]: return [], upto_token, False synapse-1.53.0/synapse/res/000077500000000000000000000000001420514467300155435ustar00rootroot00000000000000synapse-1.53.0/synapse/res/providers.json000066400000000000000000000007541420514467300204610ustar00rootroot00000000000000[ { "provider_name": "Twitter", "provider_url": "http://www.twitter.com/", "endpoints": [ { "schemes": [ "https://twitter.com/*/status/*", "https://*.twitter.com/*/status/*", "https://twitter.com/*/moments/*", "https://*.twitter.com/*/moments/*" ], "url": "https://publish.twitter.com/oembed" } ] } ]synapse-1.53.0/synapse/res/templates/000077500000000000000000000000001420514467300175415ustar00rootroot00000000000000synapse-1.53.0/synapse/res/templates/account_previously_renewed.html000066400000000000000000000001401420514467300260700ustar00rootroot00000000000000Your account is valid until {{ expiration_ts|format_ts("%d-%m-%Y") }}. synapse-1.53.0/synapse/res/templates/account_renewed.html000066400000000000000000000002021420514467300235660ustar00rootroot00000000000000Your account has been successfully renewed and is valid until {{ expiration_ts|format_ts("%d-%m-%Y") }}. synapse-1.53.0/synapse/res/templates/add_threepid.html000066400000000000000000000004671420514467300230520ustar00rootroot00000000000000

A request to add an email address to your Matrix account has been received. If this was you, please click the link below to confirm adding this email:

{{ link }}

If this was not you, you can safely ignore this email. Thank you.

synapse-1.53.0/synapse/res/templates/add_threepid.txt000066400000000000000000000003461420514467300227210ustar00rootroot00000000000000A request to add an email address to your Matrix account has been received. If this was you, please click the link below to confirm adding this email: {{ link }} If this was not you, you can safely ignore this email. Thank you. synapse-1.53.0/synapse/res/templates/add_threepid_failure.html000066400000000000000000000002511420514467300245500ustar00rootroot00000000000000

The request failed for the following reason: {{ failure_reason }}.

No changes have been made to your account.

synapse-1.53.0/synapse/res/templates/add_threepid_success.html000066400000000000000000000002231420514467300245700ustar00rootroot00000000000000

Your email has now been validated, please return to your client. You may now close this window.

synapse-1.53.0/synapse/res/templates/auth_success.html000066400000000000000000000010711420514467300231170ustar00rootroot00000000000000 Success!

Thank you

You may now close this window and return to the application

synapse-1.53.0/synapse/res/templates/invalid_token.html000066400000000000000000000000601420514467300232510ustar00rootroot00000000000000Invalid renewal token. synapse-1.53.0/synapse/res/templates/mail-Element.css000066400000000000000000000001741420514467300225660ustar00rootroot00000000000000.header { border-bottom: 4px solid #e4f7ed ! important; } .notif_link a, .footer a { color: #76CFA6 ! important; } synapse-1.53.0/synapse/res/templates/mail-Vector.css000066400000000000000000000001741420514467300224370ustar00rootroot00000000000000.header { border-bottom: 4px solid #e4f7ed ! important; } .notif_link a, .footer a { color: #76CFA6 ! important; } synapse-1.53.0/synapse/res/templates/mail-expiry.css000066400000000000000000000000771420514467300225170ustar00rootroot00000000000000.noticetext { margin-top: 10px; margin-bottom: 10px; } synapse-1.53.0/synapse/res/templates/mail.css000066400000000000000000000043141420514467300211770ustar00rootroot00000000000000body { margin: 0px; } pre, code { word-break: break-word; white-space: pre-wrap; } #page { font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; font-color: #454545; font-size: 12pt; width: 100%; padding: 20px; } #inner { width: 640px; } .header { width: 100%; height: 87px; color: #454545; border-bottom: 4px solid #e5e5e5; } .logo { text-align: right; margin-left: 20px; } .salutation { padding-top: 10px; font-weight: bold; } .summarytext { } .room { width: 100%; color: #454545; border-bottom: 1px solid #e5e5e5; } .room_header td { padding-top: 38px; padding-bottom: 10px; border-bottom: 1px solid #e5e5e5; } .room_name { vertical-align: middle; font-size: 18px; font-weight: bold; } .room_header h2 { margin-top: 0px; margin-left: 75px; font-size: 20px; } .room_avatar { width: 56px; line-height: 0px; text-align: center; vertical-align: middle; } .room_avatar img { width: 48px; height: 48px; object-fit: cover; border-radius: 24px; } .notif { border-bottom: 1px solid #e5e5e5; margin-top: 16px; padding-bottom: 16px; } .historical_message .sender_avatar { opacity: 0.3; } /* spell out opacity and historical_message class names for Outlook aka Word */ .historical_message .sender_name { color: #e3e3e3; } .historical_message .message_time { color: #e3e3e3; } .historical_message .message_body { color: #c7c7c7; } .historical_message td, .message td { padding-top: 10px; } .sender_avatar { width: 56px; text-align: center; vertical-align: top; } .sender_avatar img { margin-top: -2px; width: 32px; height: 32px; border-radius: 16px; } .sender_name { display: inline; font-size: 13px; color: #a2a2a2; } .message_time { text-align: right; width: 100px; font-size: 11px; color: #a2a2a2; } .message_body { } .notif_link td { padding-top: 10px; padding-bottom: 10px; font-weight: bold; } .notif_link a, .footer a { color: #454545; text-decoration: none; } .debug { font-size: 10px; color: #888; } .footer { margin-top: 20px; text-align: center; }synapse-1.53.0/synapse/res/templates/notice_expiry.html000066400000000000000000000043551420514467300233170ustar00rootroot00000000000000
Hi {{ display_name }},
Your account will expire on {{ expiration_ts|format_ts("%d-%m-%Y") }}. This means that you will lose access to your account after this date.
To extend the validity of your account, please click on the link below (or copy and paste it into a new browser tab):
synapse-1.53.0/synapse/res/templates/notice_expiry.txt000066400000000000000000000004451420514467300231660ustar00rootroot00000000000000Hi {{ display_name }}, Your account will expire on {{ expiration_ts|format_ts("%d-%m-%Y") }}. This means that you will lose access to your account after this date. To extend the validity of your account, please click on the link below (or copy and paste it to a new browser tab): {{ url }} synapse-1.53.0/synapse/res/templates/notif.html000066400000000000000000000051401420514467300215460ustar00rootroot00000000000000{%- for message in notif.messages %} {%- if loop.index0 == 0 or notif.messages[loop.index0 - 1].sender_name != notif.messages[loop.index0].sender_name %} {%- if message.sender_avatar_url %} {%- else %} {%- if message.sender_hash % 3 == 0 %} {%- elif message.sender_hash % 3 == 1 %} {%- else %} {%- endif %} {%- endif %} {%- endif %} {%- if loop.index0 == 0 or notif.messages[loop.index0 - 1].sender_name != notif.messages[loop.index0].sender_name %}
{%- if message.msgtype == "m.emote" %}*{%- endif %} {{ message.sender_name }}
{%- endif %}
{%- if message.event_type == "m.room.encrypted" %} An encrypted message. {%- elif message.event_type == "m.room.message" %} {%- if message.msgtype == "m.text" %} {{ message.body_text_html }} {%- elif message.msgtype == "m.emote" %} {{ message.body_text_html }} {%- elif message.msgtype == "m.notice" %} {{ message.body_text_html }} {%- elif message.msgtype == "m.image" and message.image_url %} {%- elif message.msgtype == "m.file" %} {{ message.body_text_plain }} {%- else %} A message with unrecognised content. {%- endif %} {%- endif %}
{{ message.ts|format_ts("%H:%M") }} {%- endfor %} View {{ room.title }} synapse-1.53.0/synapse/res/templates/notif.txt000066400000000000000000000013711420514467300214230ustar00rootroot00000000000000{%- for message in notif.messages %} {%- if message.event_type == "m.room.encrypted" %} An encrypted message. {%- elif message.event_type == "m.room.message" %} {%- if message.msgtype == "m.emote" %}* {%- endif %}{{ message.sender_name }} ({{ message.ts|format_ts("%H:%M") }}) {%- if message.msgtype == "m.text" %} {{ message.body_text_plain }} {%- elif message.msgtype == "m.emote" %} {{ message.body_text_plain }} {%- elif message.msgtype == "m.notice" %} {{ message.body_text_plain }} {%- elif message.msgtype == "m.image" %} {{ message.body_text_plain }} {%- elif message.msgtype == "m.file" %} {{ message.body_text_plain }} {%- else %} A message with unrecognised content. {%- endif %} {%- endif %} {%- endfor %} View {{ room.title }} at {{ notif.link }} synapse-1.53.0/synapse/res/templates/notif_mail.html000066400000000000000000000057021420514467300225540ustar00rootroot00000000000000
Hi {{ user_display_name }},
{{ summary_text }}
{%- for room in rooms %} {%- include 'room.html' with context %} {%- endfor %}
synapse-1.53.0/synapse/res/templates/notif_mail.txt000066400000000000000000000002771420514467300224310ustar00rootroot00000000000000Hi {{ user_display_name }}, {{ summary_text }} {%- for room in rooms %} {%- include 'room.txt' with context %} {%- endfor %} You can disable these notifications at {{ unsubscribe_link }} synapse-1.53.0/synapse/res/templates/password_reset.html000066400000000000000000000005571420514467300235020ustar00rootroot00000000000000

A password reset request has been received for your Matrix account. If this was you, please click the link below to confirm resetting your password:

{{ link }}

If this was not you, do not click the link above and instead contact your server administrator. Thank you.

synapse-1.53.0/synapse/res/templates/password_reset.txt000066400000000000000000000004151420514467300233460ustar00rootroot00000000000000A password reset request has been received for your Matrix account. If this was you, please click the link below to confirm resetting your password: {{ link }} If this was not you, DO NOT click the link above and instead contact your server administrator. Thank you. synapse-1.53.0/synapse/res/templates/password_reset_confirmation.html000066400000000000000000000012321420514467300262410ustar00rootroot00000000000000

You have requested to reset your Matrix account password. Click the link below to confirm this action.

If you did not mean to do this, please close this page and your password will not be changed.

synapse-1.53.0/synapse/res/templates/password_reset_failure.html000066400000000000000000000002401420514467300251760ustar00rootroot00000000000000

The request failed for the following reason: {{ failure_reason }}.

Your password has not been reset.

synapse-1.53.0/synapse/res/templates/password_reset_success.html000066400000000000000000000002521420514467300252220ustar00rootroot00000000000000

Your email has now been validated, please return to your client to reset your password. You may now close this window.

synapse-1.53.0/synapse/res/templates/recaptcha.html000066400000000000000000000023371420514467300223660ustar00rootroot00000000000000 Authentication
{% if error is defined %}

Error: {{ error }}

{% endif %}

Hello! We need to prevent computer programs and other automated things from creating accounts on this server.

Please verify that you're not a robot.

synapse-1.53.0/synapse/res/templates/registration.html000066400000000000000000000005161420514467300231430ustar00rootroot00000000000000

You have asked us to register this email with a new Matrix account. If this was you, please click the link below to confirm your email address:

Verify Your Email Address

If this was not you, you can safely disregard this email.

Thank you.

synapse-1.53.0/synapse/res/templates/registration.txt000066400000000000000000000003611420514467300230140ustar00rootroot00000000000000Hello there, You have asked us to register this email with a new Matrix account. If this was you, please click the link below to confirm your email address: {{ link }} If this was not you, you can safely disregard this email. Thank you. synapse-1.53.0/synapse/res/templates/registration_failure.html000066400000000000000000000001651420514467300246520ustar00rootroot00000000000000

Validation failed for the following reason: {{ failure_reason }}.

synapse-1.53.0/synapse/res/templates/registration_success.html000066400000000000000000000002231420514467300246660ustar00rootroot00000000000000

Your email has now been validated, please return to your client. You may now close this window.

synapse-1.53.0/synapse/res/templates/registration_token.html000066400000000000000000000013311420514467300243370ustar00rootroot00000000000000 Authentication
{% if error is defined %}

Error: {{ error }}

{% endif %}

Please enter a registration token.

synapse-1.53.0/synapse/res/templates/room.html000066400000000000000000000021351420514467300214040ustar00rootroot00000000000000 {%- if room.invite %} {%- else %} {%- for notif in room.notifs %} {%- include 'notif.html' with context %} {%- endfor %} {%- endif %}
{%- if room.avatar_url %} {%- else %} {%- if room.hash % 3 == 0 %} {%- elif room.hash % 3 == 1 %} {%- else %} {%- endif %} {%- endif %} {{ room.title }}
Join the conversation.
synapse-1.53.0/synapse/res/templates/room.txt000066400000000000000000000003301420514467300212520ustar00rootroot00000000000000{{ room.title }} {%- if room.invite %} You've been invited, join at {{ room.link }} {%- else %} {%- for notif in room.notifs %} {%- include 'notif.txt' with context %} {%- endfor %} {%- endif %} synapse-1.53.0/synapse/res/templates/sso.css000066400000000000000000000033671420514467300210700ustar00rootroot00000000000000body, input, select, textarea { font-family: "Inter", "Helvetica", "Arial", sans-serif; font-size: 14px; color: #17191C; } header, footer { max-width: 480px; width: 100%; margin: 24px auto; text-align: center; } @media screen and (min-width: 800px) { header { margin-top: 90px; } } header { min-height: 60px; } header p { color: #737D8C; line-height: 24px; } h1 { font-size: 24px; } a { color: #418DED; } .error_page h1 { color: #FE2928; } h2 { font-size: 14px; } h2 img { vertical-align: middle; margin-right: 8px; width: 24px; height: 24px; } label { cursor: pointer; } main { max-width: 360px; width: 100%; margin: 24px auto; } .primary-button { border: none; -webkit-appearance: none; -moz-appearance: none; appearance: none; text-decoration: none; padding: 12px; color: white; background-color: #418DED; font-weight: bold; display: block; border-radius: 12px; width: 100%; box-sizing: border-box; margin: 16px 0; cursor: pointer; text-align: center; } .profile { display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 24px; padding: 13px; border: 1px solid #E9ECF1; border-radius: 4px; } .profile.with-avatar { margin-top: 42px; /* (36px / 2) + 24px*/ } .profile .avatar { width: 36px; height: 36px; border-radius: 100%; display: block; margin-top: -32px; margin-bottom: 8px; } .profile .display-name { font-weight: bold; margin-bottom: 4px; font-size: 15px; line-height: 18px; } .profile .user-id { color: #737D8C; font-size: 12px; line-height: 12px; } footer { margin-top: 80px; } footer svg { display: block; width: 46px; margin: 0px auto 12px auto; } footer p { color: #737D8C; }synapse-1.53.0/synapse/res/templates/sso_account_deactivated.html000066400000000000000000000014731420514467300253110ustar00rootroot00000000000000 SSO account deactivated

Your account has been deactivated

No account found

Your account might have been deactivated by the server administrator. You can either try to create a new account or contact the server’s administrator.

{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_auth_account_details.html000066400000000000000000000130501420514467300254740ustar00rootroot00000000000000 Create your account

Your account is nearly ready

Check your details before creating an account on {{ server_name }}

@
:{{ server_name }}
{% if user_attributes.avatar_url or user_attributes.display_name or user_attributes.emails %}

{% if idp.idp_icon %}{% endif %}Information from {{ idp.idp_name }}

{% if user_attributes.avatar_url %} {% endif %} {% if user_attributes.display_name %} {% endif %} {% for email in user_attributes.emails %} {% endfor %}
{% endif %}
{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_auth_account_details.js000066400000000000000000000071551420514467300251550ustar00rootroot00000000000000const usernameField = document.getElementById("field-username"); const usernameOutput = document.getElementById("field-username-output"); const form = document.getElementById("form"); // needed to validate on change event when no input was changed let needsValidation = true; let isValid = false; function throttle(fn, wait) { let timeout; const throttleFn = function() { const args = Array.from(arguments); if (timeout) { clearTimeout(timeout); } timeout = setTimeout(fn.bind.apply(fn, [null].concat(args)), wait); }; throttleFn.cancelQueued = function() { clearTimeout(timeout); }; return throttleFn; } function checkUsernameAvailable(username) { let check_uri = 'check?username=' + encodeURIComponent(username); return fetch(check_uri, { // include the cookie "credentials": "same-origin", }).then(function(response) { if(!response.ok) { // for non-200 responses, raise the body of the response as an exception return response.text().then((text) => { throw new Error(text); }); } else { return response.json(); } }).then(function(json) { if(json.error) { return {message: json.error}; } else if(json.available) { return {available: true}; } else { return {message: username + " is not available, please choose another."}; } }); } const allowedUsernameCharacters = new RegExp("^[a-z0-9\\.\\_\\-\\/\\=]+$"); const allowedCharactersString = "lowercase letters, digits, ., _, -, /, ="; function reportError(error) { throttledCheckUsernameAvailable.cancelQueued(); usernameOutput.innerText = error; usernameOutput.classList.add("error"); usernameField.parentElement.classList.add("invalid"); usernameField.focus(); } function validateUsername(username) { isValid = false; needsValidation = false; usernameOutput.innerText = ""; usernameField.parentElement.classList.remove("invalid"); usernameOutput.classList.remove("error"); if (!username) { return reportError("Please provide a username"); } if (username.length > 255) { return reportError("Too long, please choose something shorter"); } if (!allowedUsernameCharacters.test(username)) { return reportError("Invalid username, please only use " + allowedCharactersString); } usernameOutput.innerText = "Checking if username is available …"; throttledCheckUsernameAvailable(username); } const throttledCheckUsernameAvailable = throttle(function(username) { const handleError = function(err) { // don't prevent form submission on error usernameOutput.innerText = ""; isValid = true; }; try { checkUsernameAvailable(username).then(function(result) { if (!result.available) { reportError(result.message); } else { isValid = true; usernameOutput.innerText = ""; } }, handleError); } catch (err) { handleError(err); } }, 500); form.addEventListener("submit", function(evt) { if (needsValidation) { validateUsername(usernameField.value); evt.preventDefault(); return; } if (!isValid) { evt.preventDefault(); usernameField.focus(); return; } }); usernameField.addEventListener("input", function(evt) { validateUsername(usernameField.value); }); usernameField.addEventListener("change", function(evt) { if (needsValidation) { validateUsername(usernameField.value); } }); synapse-1.53.0/synapse/res/templates/sso_auth_bad_user.html000066400000000000000000000017141420514467300241230ustar00rootroot00000000000000 Authentication failed

That doesn't look right

We were unable to validate your {{ server_name }} account via single sign‑on (SSO), because the SSO Identity Provider returned different details than when you logged in.

Try the operation again, and ensure that you use the same details on the Identity Provider as when you log into your account.

{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_auth_confirm.html000066400000000000000000000016571420514467300240020ustar00rootroot00000000000000 Confirm it's you

Confirm it's you to continue

A client is trying to {{ description }}. To confirm this action re-authorize your account with single sign-on.

If you did not expect this, your account may be compromised.

Continue with {{ idp.idp_name }}
{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_auth_success.html000066400000000000000000000015421420514467300240060ustar00rootroot00000000000000 Authentication successful

Thank you

Now we know it’s you, you can close this window and return to the application.

{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_error.html000066400000000000000000000055061420514467300224520ustar00rootroot00000000000000 Authentication failed {# If an error of unauthorised is returned it means we have actively rejected their login #} {% if error == "unauthorised" %}

You are not allowed to log in here.

{% else %}

There was an error

{{ error_description }}

If you are seeing this page after clicking a link sent to you via email, make sure you only click the confirmation link once, and that you open the validation link in the same client you're logging in from.

Try logging in again from your Matrix client and if the problem persists please contact the server's administrator.

Error code

{{ error }}

{% include "sso_footer.html" without context %} {% endif %} synapse-1.53.0/synapse/res/templates/sso_footer.html000066400000000000000000000215451420514467300226200ustar00rootroot00000000000000

An open network for secure, decentralized communication.
© 2021 The Matrix.org Foundation C.I.C.

synapse-1.53.0/synapse/res/templates/sso_login_idp_picker.html000066400000000000000000000031711420514467300246160ustar00rootroot00000000000000 Choose identity provider

Log in to {{ server_name }}

Choose an identity provider to log in

{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_new_user_consent.html000066400000000000000000000022221420514467300246710ustar00rootroot00000000000000 Agree to terms and conditions

Your account is nearly ready

Agree to the terms to create your account.

{% include "sso_partial_profile.html" %}
{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/sso_partial_profile.html000066400000000000000000000015511420514467300244710ustar00rootroot00000000000000{# html fragment to be included in SSO pages, to show the user's profile #}
{% if user_profile.avatar_url %} {% endif %} {# users that signed up with SSO will have a display_name of some sort; however that is not the case for users who signed up via other methods, so we need to handle that. #} {% if user_profile.display_name %}
{{ user_profile.display_name }}
{% else %} {# split the userid on ':', take the part before the first ':', and then remove the leading '@'. #}
{{ user_id.split(":")[0][1:] }}
{% endif %}
{{ user_id }}
synapse-1.53.0/synapse/res/templates/sso_redirect_confirm.html000066400000000000000000000041151420514467300246320ustar00rootroot00000000000000 Continue to your account

Continue to your account

{% include "sso_partial_profile.html" %}

Continuing will grant {{ display_url }} access to your account.

Continue
{% include "sso_footer.html" without context %} synapse-1.53.0/synapse/res/templates/terms.html000066400000000000000000000014041420514467300215600ustar00rootroot00000000000000 Authentication
{% if error is defined %}

Error: {{ error }}

{% endif %}

Please click the button below if you agree to the privacy policy of this homeserver.

synapse-1.53.0/synapse/rest/000077500000000000000000000000001420514467300157275ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/__init__.py000066400000000000000000000107501420514467300200430ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Callable from synapse.http.server import HttpServer, JsonResource from synapse.rest import admin from synapse.rest.client import ( account, account_data, account_validity, auth, capabilities, devices, directory, events, filter, groups, initial_sync, keys, knock, login as v1_login, logout, notifications, openid, password_policy, presence, profile, push_rule, pusher, read_marker, receipts, register, relations, report_event, room, room_batch, room_keys, room_upgrade_rest_servlet, sendtodevice, shared_rooms, sync, tags, thirdparty, tokenrefresh, user_directory, versions, voip, ) if TYPE_CHECKING: from synapse.server import HomeServer RegisterServletsFunc = Callable[["HomeServer", HttpServer], None] class ClientRestResource(JsonResource): """Matrix Client API REST resource. This gets mounted at various points under /_matrix/client, including: * /_matrix/client/r0 * /_matrix/client/api/v1 * /_matrix/client/unstable * etc """ def __init__(self, hs: "HomeServer"): JsonResource.__init__(self, hs, canonical_json=False) self.register_servlets(self, hs) @staticmethod def register_servlets(client_resource: HttpServer, hs: "HomeServer") -> None: versions.register_servlets(hs, client_resource) # Deprecated in r0 initial_sync.register_servlets(hs, client_resource) room.register_deprecated_servlets(hs, client_resource) # Partially deprecated in r0 events.register_servlets(hs, client_resource) room.register_servlets(hs, client_resource) v1_login.register_servlets(hs, client_resource) profile.register_servlets(hs, client_resource) presence.register_servlets(hs, client_resource) directory.register_servlets(hs, client_resource) voip.register_servlets(hs, client_resource) pusher.register_servlets(hs, client_resource) push_rule.register_servlets(hs, client_resource) logout.register_servlets(hs, client_resource) sync.register_servlets(hs, client_resource) filter.register_servlets(hs, client_resource) account.register_servlets(hs, client_resource) register.register_servlets(hs, client_resource) auth.register_servlets(hs, client_resource) receipts.register_servlets(hs, client_resource) read_marker.register_servlets(hs, client_resource) room_keys.register_servlets(hs, client_resource) keys.register_servlets(hs, client_resource) tokenrefresh.register_servlets(hs, client_resource) tags.register_servlets(hs, client_resource) account_data.register_servlets(hs, client_resource) report_event.register_servlets(hs, client_resource) openid.register_servlets(hs, client_resource) notifications.register_servlets(hs, client_resource) devices.register_servlets(hs, client_resource) thirdparty.register_servlets(hs, client_resource) sendtodevice.register_servlets(hs, client_resource) user_directory.register_servlets(hs, client_resource) groups.register_servlets(hs, client_resource) room_upgrade_rest_servlet.register_servlets(hs, client_resource) room_batch.register_servlets(hs, client_resource) capabilities.register_servlets(hs, client_resource) account_validity.register_servlets(hs, client_resource) relations.register_servlets(hs, client_resource) password_policy.register_servlets(hs, client_resource) knock.register_servlets(hs, client_resource) # moving to /_synapse/admin admin.register_servlets_for_client_rest_resource(hs, client_resource) # unstable shared_rooms.register_servlets(hs, client_resource) synapse-1.53.0/synapse/rest/admin/000077500000000000000000000000001420514467300170175ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/admin/__init__.py000066400000000000000000000272531420514467300211410ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018-2019 New Vector Ltd # Copyright 2020, 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import platform from http import HTTPStatus from typing import TYPE_CHECKING, Optional, Tuple from matrix_common.versionstring import get_distribution_version_string from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.http.server import HttpServer, JsonResource from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.rest.admin.background_updates import ( BackgroundUpdateEnabledRestServlet, BackgroundUpdateRestServlet, BackgroundUpdateStartJobRestServlet, ) from synapse.rest.admin.devices import ( DeleteDevicesRestServlet, DeviceRestServlet, DevicesRestServlet, ) from synapse.rest.admin.event_reports import ( EventReportDetailRestServlet, EventReportsRestServlet, ) from synapse.rest.admin.federation import ( DestinationMembershipRestServlet, DestinationResetConnectionRestServlet, DestinationRestServlet, ListDestinationsRestServlet, ) from synapse.rest.admin.groups import DeleteGroupAdminRestServlet from synapse.rest.admin.media import ListMediaInRoom, register_servlets_for_media_repo from synapse.rest.admin.registration_tokens import ( ListRegistrationTokensRestServlet, NewRegistrationTokenRestServlet, RegistrationTokenRestServlet, ) from synapse.rest.admin.rooms import ( BlockRoomRestServlet, DeleteRoomStatusByDeleteIdRestServlet, DeleteRoomStatusByRoomIdRestServlet, ForwardExtremitiesRestServlet, JoinRoomAliasServlet, ListRoomRestServlet, MakeRoomAdminRestServlet, RoomEventContextServlet, RoomMembersRestServlet, RoomRestServlet, RoomRestV2Servlet, RoomStateRestServlet, ) from synapse.rest.admin.server_notice_servlet import SendServerNoticeServlet from synapse.rest.admin.statistics import UserMediaStatisticsRestServlet from synapse.rest.admin.username_available import UsernameAvailableRestServlet from synapse.rest.admin.users import ( AccountDataRestServlet, AccountValidityRenewServlet, DeactivateAccountRestServlet, PushersRestServlet, RateLimitRestServlet, ResetPasswordRestServlet, SearchUsersRestServlet, ShadowBanRestServlet, UserAdminServlet, UserMembershipRestServlet, UserRegisterServlet, UserRestServletV2, UsersRestServletV2, UserTokenRestServlet, WhoisRestServlet, ) from synapse.types import JsonDict, RoomStreamToken if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class VersionServlet(RestServlet): PATTERNS = admin_patterns("/server_version$") def __init__(self, hs: "HomeServer"): self.res = { "server_version": get_distribution_version_string("matrix-synapse"), "python_version": platform.python_version(), } def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: return HTTPStatus.OK, self.res class PurgeHistoryRestServlet(RestServlet): PATTERNS = admin_patterns( "/purge_history/(?P[^/]*)(/(?P[^/]*))?$" ) def __init__(self, hs: "HomeServer"): self.pagination_handler = hs.get_pagination_handler() self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, room_id: str, event_id: Optional[str] ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) body = parse_json_object_from_request(request, allow_empty_body=True) delete_local_events = bool(body.get("delete_local_events", False)) # establish the topological ordering we should keep events from. The # user can provide an event_id in the URL or the request body, or can # provide a timestamp in the request body. if event_id is None: event_id = body.get("purge_up_to_event_id") if event_id is not None: event = await self.store.get_event(event_id) if event.room_id != room_id: raise SynapseError(HTTPStatus.BAD_REQUEST, "Event is for wrong room.") # RoomStreamToken expects [int] not Optional[int] assert event.internal_metadata.stream_ordering is not None room_token = RoomStreamToken( event.depth, event.internal_metadata.stream_ordering ) token = await room_token.to_string(self.store) logger.info("[purge] purging up to token %s (event_id %s)", token, event_id) elif "purge_up_to_ts" in body: ts = body["purge_up_to_ts"] if not isinstance(ts, int): raise SynapseError( HTTPStatus.BAD_REQUEST, "purge_up_to_ts must be an int", errcode=Codes.BAD_JSON, ) stream_ordering = await self.store.find_first_stream_ordering_after_ts(ts) r = await self.store.get_room_event_before_stream_ordering( room_id, stream_ordering ) if not r: logger.warning( "[purge] purging events not possible: No event found " "(received_ts %i => stream_ordering %i)", ts, stream_ordering, ) raise SynapseError( HTTPStatus.NOT_FOUND, "there is no event to be purged", errcode=Codes.NOT_FOUND, ) (stream, topo, _event_id) = r token = "t%d-%d" % (topo, stream) logger.info( "[purge] purging up to token %s (received_ts %i => " "stream_ordering %i)", token, ts, stream_ordering, ) else: raise SynapseError( HTTPStatus.BAD_REQUEST, "must specify purge_up_to_event_id or purge_up_to_ts", errcode=Codes.BAD_JSON, ) purge_id = self.pagination_handler.start_purge_history( room_id, token, delete_local_events=delete_local_events ) return HTTPStatus.OK, {"purge_id": purge_id} class PurgeHistoryStatusRestServlet(RestServlet): PATTERNS = admin_patterns("/purge_history_status/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.pagination_handler = hs.get_pagination_handler() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, purge_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) purge_status = self.pagination_handler.get_purge_status(purge_id) if purge_status is None: raise NotFoundError("purge id '%s' not found" % purge_id) return HTTPStatus.OK, purge_status.asdict() ######################################################################################## # # please don't add more servlets here: this file is already long and unwieldy. Put # them in separate files within the 'admin' package. # ######################################################################################## class AdminRestResource(JsonResource): """The REST resource which gets mounted at /_synapse/admin""" def __init__(self, hs: "HomeServer"): JsonResource.__init__(self, hs, canonical_json=False) register_servlets(hs, self) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: """ Register all the admin servlets. """ register_servlets_for_client_rest_resource(hs, http_server) BlockRoomRestServlet(hs).register(http_server) ListRoomRestServlet(hs).register(http_server) RoomStateRestServlet(hs).register(http_server) RoomRestServlet(hs).register(http_server) RoomRestV2Servlet(hs).register(http_server) RoomMembersRestServlet(hs).register(http_server) DeleteRoomStatusByDeleteIdRestServlet(hs).register(http_server) DeleteRoomStatusByRoomIdRestServlet(hs).register(http_server) JoinRoomAliasServlet(hs).register(http_server) VersionServlet(hs).register(http_server) UserAdminServlet(hs).register(http_server) UserMembershipRestServlet(hs).register(http_server) UserTokenRestServlet(hs).register(http_server) UserRestServletV2(hs).register(http_server) UsersRestServletV2(hs).register(http_server) DeviceRestServlet(hs).register(http_server) DevicesRestServlet(hs).register(http_server) DeleteDevicesRestServlet(hs).register(http_server) UserMediaStatisticsRestServlet(hs).register(http_server) EventReportDetailRestServlet(hs).register(http_server) EventReportsRestServlet(hs).register(http_server) AccountDataRestServlet(hs).register(http_server) PushersRestServlet(hs).register(http_server) MakeRoomAdminRestServlet(hs).register(http_server) ShadowBanRestServlet(hs).register(http_server) ForwardExtremitiesRestServlet(hs).register(http_server) RoomEventContextServlet(hs).register(http_server) RateLimitRestServlet(hs).register(http_server) UsernameAvailableRestServlet(hs).register(http_server) ListRegistrationTokensRestServlet(hs).register(http_server) NewRegistrationTokenRestServlet(hs).register(http_server) RegistrationTokenRestServlet(hs).register(http_server) DestinationMembershipRestServlet(hs).register(http_server) DestinationResetConnectionRestServlet(hs).register(http_server) DestinationRestServlet(hs).register(http_server) ListDestinationsRestServlet(hs).register(http_server) # Some servlets only get registered for the main process. if hs.config.worker.worker_app is None: SendServerNoticeServlet(hs).register(http_server) BackgroundUpdateEnabledRestServlet(hs).register(http_server) BackgroundUpdateRestServlet(hs).register(http_server) BackgroundUpdateStartJobRestServlet(hs).register(http_server) def register_servlets_for_client_rest_resource( hs: "HomeServer", http_server: HttpServer ) -> None: """Register only the servlets which need to be exposed on /_matrix/client/xxx""" WhoisRestServlet(hs).register(http_server) PurgeHistoryStatusRestServlet(hs).register(http_server) DeactivateAccountRestServlet(hs).register(http_server) PurgeHistoryRestServlet(hs).register(http_server) ResetPasswordRestServlet(hs).register(http_server) SearchUsersRestServlet(hs).register(http_server) UserRegisterServlet(hs).register(http_server) DeleteGroupAdminRestServlet(hs).register(http_server) AccountValidityRenewServlet(hs).register(http_server) # Load the media repo ones if we're using them. Otherwise load the servlets which # don't need a media repo (typically readonly admin APIs). if hs.config.media.can_load_media_repo: register_servlets_for_media_repo(hs, http_server) else: ListMediaInRoom(hs).register(http_server) # don't add more things here: new servlets should only be exposed on # /_synapse/admin so should not go here. Instead register them in AdminRestResource. synapse-1.53.0/synapse/rest/admin/_base.py000066400000000000000000000040051420514467300204410ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import re from http import HTTPStatus from typing import Iterable, Pattern from synapse.api.auth import Auth from synapse.api.errors import AuthError from synapse.http.site import SynapseRequest from synapse.types import UserID def admin_patterns(path_regex: str, version: str = "v1") -> Iterable[Pattern]: """Returns the list of patterns for an admin endpoint Args: path_regex: The regex string to match. This should NOT have a ^ as this will be prefixed. Returns: A list of regex patterns. """ admin_prefix = "^/_synapse/admin/" + version patterns = [re.compile(admin_prefix + path_regex)] return patterns async def assert_requester_is_admin(auth: Auth, request: SynapseRequest) -> None: """Verify that the requester is an admin user Args: auth: Auth singleton request: incoming request Raises: AuthError if the requester is not a server admin """ requester = await auth.get_user_by_req(request) await assert_user_is_admin(auth, requester.user) async def assert_user_is_admin(auth: Auth, user_id: UserID) -> None: """Verify that the given user is an admin user Args: auth: Auth singleton user_id: user to check Raises: AuthError if the user is not a server admin """ is_admin = await auth.is_server_admin(user_id) if not is_admin: raise AuthError(HTTPStatus.FORBIDDEN, "You are not a server admin") synapse-1.53.0/synapse/rest/admin/background_updates.py000066400000000000000000000133121420514467300232350ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import SynapseError from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class BackgroundUpdateEnabledRestServlet(RestServlet): """Allows temporarily disabling background updates""" PATTERNS = admin_patterns("/background_updates/enabled$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._data_stores = hs.get_datastores() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) # We need to check that all configured databases have updates enabled. # (They *should* all be in sync.) enabled = all(db.updates.enabled for db in self._data_stores.databases) return HTTPStatus.OK, {"enabled": enabled} async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) body = parse_json_object_from_request(request) enabled = body.get("enabled", True) if not isinstance(enabled, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "'enabled' parameter must be a boolean" ) for db in self._data_stores.databases: db.updates.enabled = enabled # If we're re-enabling them ensure that we start the background # process again. if enabled: db.updates.start_doing_background_updates() return HTTPStatus.OK, {"enabled": enabled} class BackgroundUpdateRestServlet(RestServlet): """Fetch information about background updates""" PATTERNS = admin_patterns("/background_updates/status$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._data_stores = hs.get_datastores() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) # We need to check that all configured databases have updates enabled. # (They *should* all be in sync.) enabled = all(db.updates.enabled for db in self._data_stores.databases) current_updates = {} for db in self._data_stores.databases: update = db.updates.get_current_update() if not update: continue current_updates[db.name()] = { "name": update.name, "total_item_count": update.total_item_count, "total_duration_ms": update.total_duration_ms, "average_items_per_ms": update.average_items_per_ms(), } return HTTPStatus.OK, {"enabled": enabled, "current_updates": current_updates} class BackgroundUpdateStartJobRestServlet(RestServlet): """Allows to start specific background updates""" PATTERNS = admin_patterns("/background_updates/start_job$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["job_name"]) job_name = body["job_name"] if job_name == "populate_stats_process_rooms": jobs = [("populate_stats_process_rooms", "{}", "")] elif job_name == "regenerate_directory": jobs = [ ("populate_user_directory_createtables", "{}", ""), ( "populate_user_directory_process_rooms", "{}", "populate_user_directory_createtables", ), ( "populate_user_directory_process_users", "{}", "populate_user_directory_process_rooms", ), ( "populate_user_directory_cleanup", "{}", "populate_user_directory_process_users", ), ] else: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid job_name") try: await self._store.db_pool.simple_insert_many( table="background_updates", keys=("update_name", "progress_json", "depends_on"), values=jobs, desc=f"admin_api_run_{job_name}", ) except self._store.db_pool.engine.module.IntegrityError: raise SynapseError( HTTPStatus.BAD_REQUEST, "Job %s is already in queue of background updates." % (job_name,), ) self._store.db_pool.updates.start_doing_background_updates() return HTTPStatus.OK, {} synapse-1.53.0/synapse/rest/admin/devices.py000066400000000000000000000133731420514467300210220ustar00rootroot00000000000000# Copyright 2020 Dirk Klimpel # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import NotFoundError, SynapseError from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DeviceRestServlet(RestServlet): """ Get, update or delete the given user's device """ PATTERNS = admin_patterns( "/users/(?P[^/]*)/devices/(?P[^/]*)$", "v2" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() self.store = hs.get_datastore() self.is_mine = hs.is_mine async def on_GET( self, request: SynapseRequest, user_id: str, device_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users") u = await self.store.get_user_by_id(target_user.to_string()) if u is None: raise NotFoundError("Unknown user") device = await self.device_handler.get_device( target_user.to_string(), device_id ) if device is None: raise NotFoundError("No device found") return HTTPStatus.OK, device async def on_DELETE( self, request: SynapseRequest, user_id: str, device_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users") u = await self.store.get_user_by_id(target_user.to_string()) if u is None: raise NotFoundError("Unknown user") await self.device_handler.delete_device(target_user.to_string(), device_id) return HTTPStatus.OK, {} async def on_PUT( self, request: SynapseRequest, user_id: str, device_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users") u = await self.store.get_user_by_id(target_user.to_string()) if u is None: raise NotFoundError("Unknown user") body = parse_json_object_from_request(request, allow_empty_body=True) await self.device_handler.update_device( target_user.to_string(), device_id, body ) return HTTPStatus.OK, {} class DevicesRestServlet(RestServlet): """ Retrieve the given user's devices """ PATTERNS = admin_patterns("/users/(?P[^/]*)/devices$", "v2") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() self.store = hs.get_datastore() self.is_mine = hs.is_mine async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users") u = await self.store.get_user_by_id(target_user.to_string()) if u is None: raise NotFoundError("Unknown user") devices = await self.device_handler.get_devices_by_user(target_user.to_string()) return HTTPStatus.OK, {"devices": devices, "total": len(devices)} class DeleteDevicesRestServlet(RestServlet): """ API for bulk deletion of devices. Accepts a JSON object with a devices key which lists the device_ids to delete. """ PATTERNS = admin_patterns("/users/(?P[^/]*)/delete_devices$", "v2") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() self.store = hs.get_datastore() self.is_mine = hs.is_mine async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users") u = await self.store.get_user_by_id(target_user.to_string()) if u is None: raise NotFoundError("Unknown user") body = parse_json_object_from_request(request, allow_empty_body=False) assert_params_in_dict(body, ["devices"]) await self.device_handler.delete_devices( target_user.to_string(), body["devices"] ) return HTTPStatus.OK, {} synapse-1.53.0/synapse/rest/admin/event_reports.py000066400000000000000000000120051420514467300222660ustar00rootroot00000000000000# Copyright 2020 Dirk Klimpel # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.http.servlet import RestServlet, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EventReportsRestServlet(RestServlet): """ List all reported events that are known to the homeserver. Results are returned in a dictionary containing report information. Supports pagination. The requester must have administrator access in Synapse. GET /_synapse/admin/v1/event_reports returns: 200 OK with list of reports if success otherwise an error. Args: The parameters `from` and `limit` are required only for pagination. By default, a `limit` of 100 is used. The parameter `dir` can be used to define the order of results. The parameter `user_id` can be used to filter by user id. The parameter `room_id` can be used to filter by room id. Returns: A list of reported events and an integer representing the total number of reported events that exist given this query """ PATTERNS = admin_patterns("/event_reports$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) direction = parse_string(request, "dir", default="b") user_id = parse_string(request, "user_id") room_id = parse_string(request, "room_id") if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "The start parameter must be a positive integer.", errcode=Codes.INVALID_PARAM, ) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "The limit parameter must be a positive integer.", errcode=Codes.INVALID_PARAM, ) if direction not in ("f", "b"): raise SynapseError( HTTPStatus.BAD_REQUEST, "Unknown direction: %s" % (direction,), errcode=Codes.INVALID_PARAM, ) event_reports, total = await self.store.get_event_reports_paginate( start, limit, direction, user_id, room_id ) ret = {"event_reports": event_reports, "total": total} if (start + limit) < total: ret["next_token"] = start + len(event_reports) return HTTPStatus.OK, ret class EventReportDetailRestServlet(RestServlet): """ Get a specific reported event that is known to the homeserver. Results are returned in a dictionary containing report information. The requester must have administrator access in Synapse. GET /_synapse/admin/v1/event_reports/ returns: 200 OK with details report if success otherwise an error. Args: The parameter `report_id` is the ID of the event report in the database. Returns: JSON blob of information about the event report """ PATTERNS = admin_patterns("/event_reports/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, report_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) message = ( "The report_id parameter must be a string representing a positive integer." ) try: resolved_report_id = int(report_id) except ValueError: raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM ) if resolved_report_id < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM ) ret = await self.store.get_event_report(resolved_report_id) if not ret: raise NotFoundError("Event report not found") return HTTPStatus.OK, ret synapse-1.53.0/synapse/rest/admin/federation.py000066400000000000000000000206231420514467300215140ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.federation.transport.server import Authenticator from synapse.http.servlet import RestServlet, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.storage.databases.main.transactions import DestinationSortOrder from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ListDestinationsRestServlet(RestServlet): """Get request to list all destinations. This needs user to have administrator access in Synapse. GET /_synapse/admin/v1/federation/destinations?from=0&limit=10 returns: 200 OK with list of destinations if success otherwise an error. The parameters `from` and `limit` are required only for pagination. By default, a `limit` of 100 is used. The parameter `destination` can be used to filter by destination. The parameter `order_by` can be used to order the result. """ PATTERNS = admin_patterns("/federation/destinations$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter limit must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) destination = parse_string(request, "destination") order_by = parse_string( request, "order_by", default=DestinationSortOrder.DESTINATION.value, allowed_values=[dest.value for dest in DestinationSortOrder], ) direction = parse_string(request, "dir", default="f", allowed_values=("f", "b")) destinations, total = await self._store.get_destinations_paginate( start, limit, destination, order_by, direction ) response = {"destinations": destinations, "total": total} if (start + limit) < total: response["next_token"] = str(start + len(destinations)) return HTTPStatus.OK, response class DestinationRestServlet(RestServlet): """Get details of a destination. This needs user to have administrator access in Synapse. GET /_synapse/admin/v1/federation/destinations/ returns: 200 OK with details of a destination if success otherwise an error. """ PATTERNS = admin_patterns("/federation/destinations/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, destination: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) if not await self._store.is_destination_known(destination): raise NotFoundError("Unknown destination") destination_retry_timings = await self._store.get_destination_retry_timings( destination ) last_successful_stream_ordering = ( await self._store.get_destination_last_successful_stream_ordering( destination ) ) response: JsonDict = { "destination": destination, "last_successful_stream_ordering": last_successful_stream_ordering, } if destination_retry_timings: response = { **response, "failure_ts": destination_retry_timings.failure_ts, "retry_last_ts": destination_retry_timings.retry_last_ts, "retry_interval": destination_retry_timings.retry_interval, } else: response = { **response, "failure_ts": None, "retry_last_ts": 0, "retry_interval": 0, } return HTTPStatus.OK, response class DestinationMembershipRestServlet(RestServlet): """Get list of rooms of a destination. This needs user to have administrator access in Synapse. GET /_synapse/admin/v1/federation/destinations//rooms?from=0&limit=10 returns: 200 OK with a list of rooms if success otherwise an error. The parameters `from` and `limit` are required only for pagination. By default, a `limit` of 100 is used. """ PATTERNS = admin_patterns("/federation/destinations/(?P[^/]*)/rooms$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, destination: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) if not await self._store.is_destination_known(destination): raise NotFoundError("Unknown destination") start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter limit must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) direction = parse_string(request, "dir", default="f", allowed_values=("f", "b")) rooms, total = await self._store.get_destination_rooms_paginate( destination, start, limit, direction ) response = {"rooms": rooms, "total": total} if (start + limit) < total: response["next_token"] = str(start + len(rooms)) return HTTPStatus.OK, response class DestinationResetConnectionRestServlet(RestServlet): """Reset destinations' connection timeouts and wake it up. This needs user to have administrator access in Synapse. POST /_synapse/admin/v1/federation/destinations//reset_connection {} returns: 200 OK otherwise an error. """ PATTERNS = admin_patterns( "/federation/destinations/(?P[^/]+)/reset_connection$" ) def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() self._authenticator = Authenticator(hs) async def on_POST( self, request: SynapseRequest, destination: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) if not await self._store.is_destination_known(destination): raise NotFoundError("Unknown destination") retry_timings = await self._store.get_destination_retry_timings(destination) if not (retry_timings and retry_timings.retry_last_ts): raise SynapseError( HTTPStatus.BAD_REQUEST, "The retry timing does not need to be reset for this destination.", ) # reset timings and wake up await self._authenticator.reset_retry_timings(destination) return HTTPStatus.OK, {} synapse-1.53.0/synapse/rest/admin/groups.py000066400000000000000000000034551420514467300207170ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import SynapseError from synapse.http.servlet import RestServlet from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_user_is_admin from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DeleteGroupAdminRestServlet(RestServlet): """Allows deleting of local groups""" PATTERNS = admin_patterns("/delete_group/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.group_server = hs.get_groups_server_handler() self.is_mine_id = hs.is_mine_id self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) if not self.is_mine_id(group_id): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only delete local groups") await self.group_server.delete_group(group_id, requester.user.to_string()) return HTTPStatus.OK, {} synapse-1.53.0/synapse/rest/admin/media.py000066400000000000000000000415261420514467300204600ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018-2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_boolean, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.rest.admin._base import ( admin_patterns, assert_requester_is_admin, assert_user_is_admin, ) from synapse.storage.databases.main.media_repository import MediaSortOrder from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class QuarantineMediaInRoom(RestServlet): """Quarantines all media in a room so that no one can download it via this server. """ PATTERNS = [ *admin_patterns("/room/(?P[^/]*)/media/quarantine$"), # This path kept around for legacy reasons *admin_patterns("/quarantine_media/(?P[^/]*)$"), ] def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) logging.info("Quarantining room: %s", room_id) # Quarantine all media in this room num_quarantined = await self.store.quarantine_media_ids_in_room( room_id, requester.user.to_string() ) return HTTPStatus.OK, {"num_quarantined": num_quarantined} class QuarantineMediaByUser(RestServlet): """Quarantines all local media by a given user so that no one can download it via this server. """ PATTERNS = admin_patterns("/user/(?P[^/]*)/media/quarantine$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) logging.info("Quarantining local media by user: %s", user_id) # Quarantine all media this user has uploaded num_quarantined = await self.store.quarantine_media_ids_by_user( user_id, requester.user.to_string() ) return HTTPStatus.OK, {"num_quarantined": num_quarantined} class QuarantineMediaByID(RestServlet): """Quarantines local or remote media by a given ID so that no one can download it via this server. """ PATTERNS = admin_patterns( "/media/quarantine/(?P[^/]*)/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, server_name: str, media_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) logging.info("Quarantining local media by ID: %s/%s", server_name, media_id) # Quarantine this media id await self.store.quarantine_media_by_id( server_name, media_id, requester.user.to_string() ) return HTTPStatus.OK, {} class UnquarantineMediaByID(RestServlet): """Quarantines local or remote media by a given ID so that no one can download it via this server. """ PATTERNS = admin_patterns( "/media/unquarantine/(?P[^/]*)/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, server_name: str, media_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) logging.info( "Remove from quarantine local media by ID: %s/%s", server_name, media_id ) # Remove from quarantine this media id await self.store.quarantine_media_by_id(server_name, media_id, None) return HTTPStatus.OK, {} class ProtectMediaByID(RestServlet): """Protect local media from being quarantined.""" PATTERNS = admin_patterns("/media/protect/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, media_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) logging.info("Protecting local media by ID: %s", media_id) # Protect this media id await self.store.mark_local_media_as_safe(media_id, safe=True) return HTTPStatus.OK, {} class UnprotectMediaByID(RestServlet): """Unprotect local media from being quarantined.""" PATTERNS = admin_patterns("/media/unprotect/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, media_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) logging.info("Unprotecting local media by ID: %s", media_id) # Unprotect this media id await self.store.mark_local_media_as_safe(media_id, safe=False) return HTTPStatus.OK, {} class ListMediaInRoom(RestServlet): """Lists all of the media in a given room.""" PATTERNS = admin_patterns("/room/(?P[^/]*)/media$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) local_mxcs, remote_mxcs = await self.store.get_media_mxcs_in_room(room_id) return HTTPStatus.OK, {"local": local_mxcs, "remote": remote_mxcs} class PurgeMediaCacheRestServlet(RestServlet): PATTERNS = admin_patterns("/purge_media_cache$") def __init__(self, hs: "HomeServer"): self.media_repository = hs.get_media_repository() self.auth = hs.get_auth() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) before_ts = parse_integer(request, "before_ts", required=True) logger.info("before_ts: %r", before_ts) if before_ts < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter before_ts must be a positive integer.", errcode=Codes.INVALID_PARAM, ) elif before_ts < 30000000000: # Dec 1970 in milliseconds, Aug 2920 in seconds raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter before_ts you provided is from the year 1970. " + "Double check that you are providing a timestamp in milliseconds.", errcode=Codes.INVALID_PARAM, ) ret = await self.media_repository.delete_old_remote_media(before_ts) return HTTPStatus.OK, ret class DeleteMediaByID(RestServlet): """Delete local media by a given ID. Removes it from this server.""" PATTERNS = admin_patterns("/media/(?P[^/]*)/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.server_name = hs.hostname self.media_repository = hs.get_media_repository() async def on_DELETE( self, request: SynapseRequest, server_name: str, media_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if self.server_name != server_name: raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only delete local media") if await self.store.get_local_media(media_id) is None: raise NotFoundError("Unknown media") logging.info("Deleting local media by ID: %s", media_id) deleted_media, total = await self.media_repository.delete_local_media_ids( [media_id] ) return HTTPStatus.OK, {"deleted_media": deleted_media, "total": total} class DeleteMediaByDateSize(RestServlet): """Delete local media and local copies of remote media by timestamp and size. """ PATTERNS = admin_patterns("/media/(?P[^/]*)/delete$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.server_name = hs.hostname self.media_repository = hs.get_media_repository() async def on_POST( self, request: SynapseRequest, server_name: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) before_ts = parse_integer(request, "before_ts", required=True) size_gt = parse_integer(request, "size_gt", default=0) keep_profiles = parse_boolean(request, "keep_profiles", default=True) if before_ts < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter before_ts must be a positive integer.", errcode=Codes.INVALID_PARAM, ) elif before_ts < 30000000000: # Dec 1970 in milliseconds, Aug 2920 in seconds raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter before_ts you provided is from the year 1970. " + "Double check that you are providing a timestamp in milliseconds.", errcode=Codes.INVALID_PARAM, ) if size_gt < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter size_gt must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if self.server_name != server_name: raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only delete local media") logging.info( "Deleting local media by timestamp: %s, size larger than: %s, keep profile media: %s" % (before_ts, size_gt, keep_profiles) ) deleted_media, total = await self.media_repository.delete_old_local_media( before_ts, size_gt, keep_profiles ) return HTTPStatus.OK, {"deleted_media": deleted_media, "total": total} class UserMediaRestServlet(RestServlet): """ Gets information about all uploaded local media for a specific `user_id`. With DELETE request you can delete all this media. Example: http://localhost:8008/_synapse/admin/v1/users/@user:server/media Args: The parameters `from` and `limit` are required for pagination. By default, a `limit` of 100 is used. Returns: A list of media and an integer representing the total number of media that exist given for this user """ PATTERNS = admin_patterns("/users/(?P[^/]*)/media$") def __init__(self, hs: "HomeServer"): self.is_mine = hs.is_mine self.auth = hs.get_auth() self.store = hs.get_datastore() self.media_repository = hs.get_media_repository() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: # This will always be set by the time Twisted calls us. assert request.args is not None await assert_requester_is_admin(self.auth, request) if not self.is_mine(UserID.from_string(user_id)): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only look up local users") user = await self.store.get_user_by_id(user_id) if user is None: raise NotFoundError("Unknown user") start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter limit must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) # If neither `order_by` nor `dir` is set, set the default order # to newest media is on top for backward compatibility. if b"order_by" not in request.args and b"dir" not in request.args: order_by = MediaSortOrder.CREATED_TS.value direction = "b" else: order_by = parse_string( request, "order_by", default=MediaSortOrder.CREATED_TS.value, allowed_values=[sort_order.value for sort_order in MediaSortOrder], ) direction = parse_string( request, "dir", default="f", allowed_values=("f", "b") ) media, total = await self.store.get_local_media_by_user_paginate( start, limit, user_id, order_by, direction ) ret = {"media": media, "total": total} if (start + limit) < total: ret["next_token"] = start + len(media) return HTTPStatus.OK, ret async def on_DELETE( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: # This will always be set by the time Twisted calls us. assert request.args is not None await assert_requester_is_admin(self.auth, request) if not self.is_mine(UserID.from_string(user_id)): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only look up local users") user = await self.store.get_user_by_id(user_id) if user is None: raise NotFoundError("Unknown user") start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter limit must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) # If neither `order_by` nor `dir` is set, set the default order # to newest media is on top for backward compatibility. if b"order_by" not in request.args and b"dir" not in request.args: order_by = MediaSortOrder.CREATED_TS.value direction = "b" else: order_by = parse_string( request, "order_by", default=MediaSortOrder.CREATED_TS.value, allowed_values=[sort_order.value for sort_order in MediaSortOrder], ) direction = parse_string( request, "dir", default="f", allowed_values=("f", "b") ) media, _ = await self.store.get_local_media_by_user_paginate( start, limit, user_id, order_by, direction ) deleted_media, total = await self.media_repository.delete_local_media_ids( [row["media_id"] for row in media] ) return HTTPStatus.OK, {"deleted_media": deleted_media, "total": total} def register_servlets_for_media_repo(hs: "HomeServer", http_server: HttpServer) -> None: """ Media repo specific APIs. """ PurgeMediaCacheRestServlet(hs).register(http_server) QuarantineMediaInRoom(hs).register(http_server) QuarantineMediaByID(hs).register(http_server) UnquarantineMediaByID(hs).register(http_server) QuarantineMediaByUser(hs).register(http_server) ProtectMediaByID(hs).register(http_server) UnprotectMediaByID(hs).register(http_server) ListMediaInRoom(hs).register(http_server) DeleteMediaByID(hs).register(http_server) DeleteMediaByDateSize(hs).register(http_server) UserMediaRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/admin/registration_tokens.py000066400000000000000000000251151420514467300234720ustar00rootroot00000000000000# Copyright 2021 Callum Brown # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import string from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.http.servlet import ( RestServlet, parse_boolean, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ListRegistrationTokensRestServlet(RestServlet): """List registration tokens. To list all tokens: GET /_synapse/admin/v1/registration_tokens 200 OK { "registration_tokens": [ { "token": "abcd", "uses_allowed": 3, "pending": 0, "completed": 1, "expiry_time": null }, { "token": "wxyz", "uses_allowed": null, "pending": 0, "completed": 9, "expiry_time": 1625394937000 } ] } The optional query parameter `valid` can be used to filter the response. If it is `true`, only valid tokens are returned. If it is `false`, only tokens that have expired or have had all uses exhausted are returned. If it is omitted, all tokens are returned regardless of validity. """ PATTERNS = admin_patterns("/registration_tokens$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) valid = parse_boolean(request, "valid") token_list = await self.store.get_registration_tokens(valid) return HTTPStatus.OK, {"registration_tokens": token_list} class NewRegistrationTokenRestServlet(RestServlet): """Create a new registration token. For example, to create a token specifying some fields: POST /_synapse/admin/v1/registration_tokens/new { "token": "defg", "uses_allowed": 1 } 200 OK { "token": "defg", "uses_allowed": 1, "pending": 0, "completed": 0, "expiry_time": null } Defaults are used for any fields not specified. """ PATTERNS = admin_patterns("/registration_tokens/new$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() self.clock = hs.get_clock() # A string of all the characters allowed to be in a registration_token self.allowed_chars = string.ascii_letters + string.digits + "._~-" self.allowed_chars_set = set(self.allowed_chars) async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) body = parse_json_object_from_request(request) if "token" in body: token = body["token"] if not isinstance(token, str): raise SynapseError( HTTPStatus.BAD_REQUEST, "token must be a string", Codes.INVALID_PARAM, ) if not (0 < len(token) <= 64): raise SynapseError( HTTPStatus.BAD_REQUEST, "token must not be empty and must not be longer than 64 characters", Codes.INVALID_PARAM, ) if not set(token).issubset(self.allowed_chars_set): raise SynapseError( HTTPStatus.BAD_REQUEST, "token must consist only of characters matched by the regex [A-Za-z0-9-_]", Codes.INVALID_PARAM, ) else: # Get length of token to generate (default is 16) length = body.get("length", 16) if not isinstance(length, int): raise SynapseError( HTTPStatus.BAD_REQUEST, "length must be an integer", Codes.INVALID_PARAM, ) if not (0 < length <= 64): raise SynapseError( HTTPStatus.BAD_REQUEST, "length must be greater than zero and not greater than 64", Codes.INVALID_PARAM, ) # Generate token token = await self.store.generate_registration_token( length, self.allowed_chars ) uses_allowed = body.get("uses_allowed", None) if not ( uses_allowed is None or (isinstance(uses_allowed, int) and uses_allowed >= 0) ): raise SynapseError( HTTPStatus.BAD_REQUEST, "uses_allowed must be a non-negative integer or null", Codes.INVALID_PARAM, ) expiry_time = body.get("expiry_time", None) if not isinstance(expiry_time, (int, type(None))): raise SynapseError( HTTPStatus.BAD_REQUEST, "expiry_time must be an integer or null", Codes.INVALID_PARAM, ) if isinstance(expiry_time, int) and expiry_time < self.clock.time_msec(): raise SynapseError( HTTPStatus.BAD_REQUEST, "expiry_time must not be in the past", Codes.INVALID_PARAM, ) created = await self.store.create_registration_token( token, uses_allowed, expiry_time ) if not created: raise SynapseError( HTTPStatus.BAD_REQUEST, f"Token already exists: {token}", Codes.INVALID_PARAM, ) resp = { "token": token, "uses_allowed": uses_allowed, "pending": 0, "completed": 0, "expiry_time": expiry_time, } return HTTPStatus.OK, resp class RegistrationTokenRestServlet(RestServlet): """Retrieve, update, or delete the given token. For example, to retrieve a token: GET /_synapse/admin/v1/registration_tokens/abcd 200 OK { "token": "abcd", "uses_allowed": 3, "pending": 0, "completed": 1, "expiry_time": null } to update a token: PUT /_synapse/admin/v1/registration_tokens/defg { "uses_allowed": 5, "expiry_time": 4781243146000 } 200 OK { "token": "defg", "uses_allowed": 5, "pending": 0, "completed": 0, "expiry_time": 4781243146000 } to delete a token: DELETE /_synapse/admin/v1/registration_tokens/wxyz 200 OK {} """ PATTERNS = admin_patterns("/registration_tokens/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest, token: str) -> Tuple[int, JsonDict]: """Retrieve a registration token.""" await assert_requester_is_admin(self.auth, request) token_info = await self.store.get_one_registration_token(token) # If no result return a 404 if token_info is None: raise NotFoundError(f"No such registration token: {token}") return HTTPStatus.OK, token_info async def on_PUT(self, request: SynapseRequest, token: str) -> Tuple[int, JsonDict]: """Update a registration token.""" await assert_requester_is_admin(self.auth, request) body = parse_json_object_from_request(request) new_attributes = {} # Only add uses_allowed to new_attributes if it is present and valid if "uses_allowed" in body: uses_allowed = body["uses_allowed"] if not ( uses_allowed is None or (isinstance(uses_allowed, int) and uses_allowed >= 0) ): raise SynapseError( HTTPStatus.BAD_REQUEST, "uses_allowed must be a non-negative integer or null", Codes.INVALID_PARAM, ) new_attributes["uses_allowed"] = uses_allowed if "expiry_time" in body: expiry_time = body["expiry_time"] if not isinstance(expiry_time, (int, type(None))): raise SynapseError( HTTPStatus.BAD_REQUEST, "expiry_time must be an integer or null", Codes.INVALID_PARAM, ) if isinstance(expiry_time, int) and expiry_time < self.clock.time_msec(): raise SynapseError( HTTPStatus.BAD_REQUEST, "expiry_time must not be in the past", Codes.INVALID_PARAM, ) new_attributes["expiry_time"] = expiry_time if len(new_attributes) == 0: # Nothing to update, get token info to return token_info = await self.store.get_one_registration_token(token) else: token_info = await self.store.update_registration_token( token, new_attributes ) # If no result return a 404 if token_info is None: raise NotFoundError(f"No such registration token: {token}") return HTTPStatus.OK, token_info async def on_DELETE( self, request: SynapseRequest, token: str ) -> Tuple[int, JsonDict]: """Delete a registration token.""" await assert_requester_is_admin(self.auth, request) if await self.store.delete_registration_token(token): return HTTPStatus.OK, {} raise NotFoundError(f"No such registration token: {token}") synapse-1.53.0/synapse/rest/admin/rooms.py000066400000000000000000000714371420514467300205440ustar00rootroot00000000000000# Copyright 2019-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, List, Optional, Tuple, cast from urllib import parse as urlparse from synapse.api.constants import EventTypes, JoinRules, Membership from synapse.api.errors import AuthError, Codes, NotFoundError, SynapseError from synapse.api.filtering import Filter from synapse.http.servlet import ( ResolveRoomIdMixin, RestServlet, assert_params_in_dict, parse_integer, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.rest.admin._base import ( admin_patterns, assert_requester_is_admin, assert_user_is_admin, ) from synapse.storage.databases.main.room import RoomSortOrder from synapse.types import JsonDict, RoomID, UserID, create_requester from synapse.util import json_decoder if TYPE_CHECKING: from synapse.api.auth import Auth from synapse.handlers.pagination import PaginationHandler from synapse.handlers.room import RoomShutdownHandler from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomRestV2Servlet(RestServlet): """Delete a room from server asynchronously with a background task. It is a combination and improvement of shutdown and purge room. Shuts down a room by removing all local users from the room. Blocking all future invites and joins to the room is optional. If desired any local aliases will be repointed to a new room created by `new_room_user_id` and kicked users will be auto- joined to the new room. If 'purge' is true, it will remove all traces of a room from the database. """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)$", "v2") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() self._pagination_handler = hs.get_pagination_handler() async def on_DELETE( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request) await assert_user_is_admin(self._auth, requester.user) content = parse_json_object_from_request(request) block = content.get("block", False) if not isinstance(block, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'block' must be a boolean, if given", Codes.BAD_JSON, ) purge = content.get("purge", True) if not isinstance(purge, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'purge' must be a boolean, if given", Codes.BAD_JSON, ) force_purge = content.get("force_purge", False) if not isinstance(force_purge, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'force_purge' must be a boolean, if given", Codes.BAD_JSON, ) if not RoomID.is_valid(room_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "%s is not a legal room ID" % (room_id,) ) delete_id = self._pagination_handler.start_shutdown_and_purge_room( room_id=room_id, new_room_user_id=content.get("new_room_user_id"), new_room_name=content.get("room_name"), message=content.get("message"), requester_user_id=requester.user.to_string(), block=block, purge=purge, force_purge=force_purge, ) return HTTPStatus.OK, {"delete_id": delete_id} class DeleteRoomStatusByRoomIdRestServlet(RestServlet): """Get the status of the delete room background task.""" PATTERNS = admin_patterns("/rooms/(?P[^/]*)/delete_status$", "v2") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._pagination_handler = hs.get_pagination_handler() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) if not RoomID.is_valid(room_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "%s is not a legal room ID" % (room_id,) ) delete_ids = self._pagination_handler.get_delete_ids_by_room(room_id) if delete_ids is None: raise NotFoundError("No delete task for room_id '%s' found" % room_id) response = [] for delete_id in delete_ids: delete = self._pagination_handler.get_delete_status(delete_id) if delete: response += [ { "delete_id": delete_id, **delete.asdict(), } ] return HTTPStatus.OK, {"results": cast(JsonDict, response)} class DeleteRoomStatusByDeleteIdRestServlet(RestServlet): """Get the status of the delete room background task.""" PATTERNS = admin_patterns("/rooms/delete_status/(?P[^/]*)$", "v2") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._pagination_handler = hs.get_pagination_handler() async def on_GET( self, request: SynapseRequest, delete_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) delete_status = self._pagination_handler.get_delete_status(delete_id) if delete_status is None: raise NotFoundError("delete id '%s' not found" % delete_id) return HTTPStatus.OK, cast(JsonDict, delete_status.asdict()) class ListRoomRestServlet(RestServlet): """ List all rooms that are known to the homeserver. Results are returned in a dictionary containing room information. Supports pagination. """ PATTERNS = admin_patterns("/rooms$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.admin_handler = hs.get_admin_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) # Extract query parameters start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) order_by = parse_string( request, "order_by", default=RoomSortOrder.NAME.value, allowed_values=[sort_order.value for sort_order in RoomSortOrder], ) search_term = parse_string(request, "search_term", encoding="utf-8") if search_term == "": raise SynapseError( HTTPStatus.BAD_REQUEST, "search_term cannot be an empty string", errcode=Codes.INVALID_PARAM, ) direction = parse_string(request, "dir", default="f") if direction not in ("f", "b"): raise SynapseError( HTTPStatus.BAD_REQUEST, "Unknown direction: %s" % (direction,), errcode=Codes.INVALID_PARAM, ) reverse_order = True if direction == "b" else False # Return list of rooms according to parameters rooms, total_rooms = await self.store.get_rooms_paginate( start, limit, order_by, reverse_order, search_term ) response = { # next_token should be opaque, so return a value the client can parse "offset": start, "rooms": rooms, "total_rooms": total_rooms, } # Are there more rooms to paginate through after this? if (start + limit) < total_rooms: # There are. Calculate where the query should start from next time # to get the next part of the list response["next_batch"] = start + limit # Is it possible to paginate backwards? Check if we currently have an # offset if start > 0: if start > limit: # Going back one iteration won't take us to the start. # Calculate new offset response["prev_batch"] = start - limit else: response["prev_batch"] = 0 return HTTPStatus.OK, response class RoomRestServlet(RestServlet): """Manage a room. On GET : Get details of a room. On DELETE : Delete a room from server. It is a combination and improvement of shutdown and purge room. Shuts down a room by removing all local users from the room. Blocking all future invites and joins to the room is optional. If desired any local aliases will be repointed to a new room created by `new_room_user_id` and kicked users will be auto- joined to the new room. If 'purge' is true, it will remove all traces of a room from the database. TODO: Add on_POST to allow room creation without joining the room """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() self.room_shutdown_handler = hs.get_room_shutdown_handler() self.pagination_handler = hs.get_pagination_handler() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) ret = await self.store.get_room_with_stats(room_id) if not ret: raise NotFoundError("Room not found") members = await self.store.get_users_in_room(room_id) ret["joined_local_devices"] = await self.store.count_devices_by_users(members) return HTTPStatus.OK, ret async def on_DELETE( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: return await self._delete_room( request, room_id, self.auth, self.room_shutdown_handler, self.pagination_handler, ) async def _delete_room( self, request: SynapseRequest, room_id: str, auth: "Auth", room_shutdown_handler: "RoomShutdownHandler", pagination_handler: "PaginationHandler", ) -> Tuple[int, JsonDict]: requester = await auth.get_user_by_req(request) await assert_user_is_admin(auth, requester.user) content = parse_json_object_from_request(request) block = content.get("block", False) if not isinstance(block, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'block' must be a boolean, if given", Codes.BAD_JSON, ) purge = content.get("purge", True) if not isinstance(purge, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'purge' must be a boolean, if given", Codes.BAD_JSON, ) force_purge = content.get("force_purge", False) if not isinstance(force_purge, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'force_purge' must be a boolean, if given", Codes.BAD_JSON, ) ret = await room_shutdown_handler.shutdown_room( room_id=room_id, new_room_user_id=content.get("new_room_user_id"), new_room_name=content.get("room_name"), message=content.get("message"), requester_user_id=requester.user.to_string(), block=block, ) # Purge room if purge: try: await pagination_handler.purge_room(room_id, force=force_purge) except NotFoundError: if block: # We can block unknown rooms with this endpoint, in which case # a failed purge is expected. pass else: # But otherwise, we expect this purge to have succeeded. raise # Cast safety: cast away the knowledge that this is a TypedDict. # See https://github.com/python/mypy/issues/4976#issuecomment-579883622 # for some discussion on why this is necessary. Either way, # `ret` is an opaque dictionary blob as far as the rest of the app cares. return HTTPStatus.OK, cast(JsonDict, ret) class RoomMembersRestServlet(RestServlet): """ Get members list of a room. """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)/members$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) ret = await self.store.get_room(room_id) if not ret: raise NotFoundError("Room not found") members = await self.store.get_users_in_room(room_id) ret = {"members": members, "total": len(members)} return HTTPStatus.OK, ret class RoomStateRestServlet(RestServlet): """ Get full state within a room. """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)/state$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() self.clock = hs.get_clock() self._event_serializer = hs.get_event_client_serializer() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) ret = await self.store.get_room(room_id) if not ret: raise NotFoundError("Room not found") event_ids = await self.store.get_current_state_ids(room_id) events = await self.store.get_events(event_ids.values()) now = self.clock.time_msec() room_state = self._event_serializer.serialize_events(events.values(), now) ret = {"state": room_state} return HTTPStatus.OK, ret class JoinRoomAliasServlet(ResolveRoomIdMixin, RestServlet): PATTERNS = admin_patterns("/join/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): super().__init__(hs) self.auth = hs.get_auth() self.admin_handler = hs.get_admin_handler() self.state_handler = hs.get_state_handler() self.is_mine = hs.is_mine async def on_POST( self, request: SynapseRequest, room_identifier: str ) -> Tuple[int, JsonDict]: # This will always be set by the time Twisted calls us. assert request.args is not None requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) content = parse_json_object_from_request(request) assert_params_in_dict(content, ["user_id"]) target_user = UserID.from_string(content["user_id"]) if not self.is_mine(target_user): raise SynapseError( HTTPStatus.BAD_REQUEST, "This endpoint can only be used with local users", ) if not await self.admin_handler.get_user(target_user): raise NotFoundError("User not found") # Get the room ID from the identifier. try: remote_room_hosts: Optional[List[str]] = [ x.decode("ascii") for x in request.args[b"server_name"] ] except Exception: remote_room_hosts = None room_id, remote_room_hosts = await self.resolve_room_id( room_identifier, remote_room_hosts ) fake_requester = create_requester( target_user, authenticated_entity=requester.authenticated_entity ) # send invite if room has "JoinRules.INVITE" room_state = await self.state_handler.get_current_state(room_id) join_rules_event = room_state.get((EventTypes.JoinRules, "")) if join_rules_event: if not (join_rules_event.content.get("join_rule") == JoinRules.PUBLIC): # update_membership with an action of "invite" can raise a # ShadowBanError. This is not handled since it is assumed that # an admin isn't going to call this API with a shadow-banned user. await self.room_member_handler.update_membership( requester=requester, target=fake_requester.user, room_id=room_id, action="invite", remote_room_hosts=remote_room_hosts, ratelimit=False, ) await self.room_member_handler.update_membership( requester=fake_requester, target=fake_requester.user, room_id=room_id, action="join", remote_room_hosts=remote_room_hosts, ratelimit=False, ) return HTTPStatus.OK, {"room_id": room_id} class MakeRoomAdminRestServlet(ResolveRoomIdMixin, RestServlet): """Allows a server admin to get power in a room if a local user has power in a room. Will also invite the user if they're not in the room and it's a private room. Can specify another user (rather than the admin user) to be granted power, e.g.: POST/_synapse/admin/v1/rooms//make_room_admin { "user_id": "@foo:example.com" } """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)/make_room_admin$") def __init__(self, hs: "HomeServer"): super().__init__(hs) self.auth = hs.get_auth() self.store = hs.get_datastore() self.event_creation_handler = hs.get_event_creation_handler() self.state_handler = hs.get_state_handler() self.is_mine_id = hs.is_mine_id async def on_POST( self, request: SynapseRequest, room_identifier: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) content = parse_json_object_from_request(request, allow_empty_body=True) room_id, _ = await self.resolve_room_id(room_identifier) # Which user to grant room admin rights to. user_to_add = content.get("user_id", requester.user.to_string()) # Figure out which local users currently have power in the room, if any. room_state = await self.state_handler.get_current_state(room_id) if not room_state: raise SynapseError(HTTPStatus.BAD_REQUEST, "Server not in room") create_event = room_state[(EventTypes.Create, "")] power_levels = room_state.get((EventTypes.PowerLevels, "")) if power_levels is not None: # We pick the local user with the highest power. user_power = power_levels.content.get("users", {}) admin_users = [ user_id for user_id in user_power if self.is_mine_id(user_id) ] admin_users.sort(key=lambda user: user_power[user]) if not admin_users: raise SynapseError( HTTPStatus.BAD_REQUEST, "No local admin user in room" ) admin_user_id = None for admin_user in reversed(admin_users): ( current_membership_type, _, ) = await self.store.get_local_current_membership_for_user_in_room( admin_user, room_id ) if current_membership_type == "join": admin_user_id = admin_user break if not admin_user_id: raise SynapseError( HTTPStatus.BAD_REQUEST, "No local admin user in room", ) pl_content = power_levels.content else: # If there is no power level events then the creator has rights. pl_content = {} admin_user_id = create_event.sender if not self.is_mine_id(admin_user_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "No local admin user in room", ) # Grant the user power equal to the room admin by attempting to send an # updated power level event. new_pl_content = dict(pl_content) new_pl_content["users"] = dict(pl_content.get("users", {})) new_pl_content["users"][user_to_add] = new_pl_content["users"][admin_user_id] fake_requester = create_requester( admin_user_id, authenticated_entity=requester.authenticated_entity, ) try: await self.event_creation_handler.create_and_send_nonmember_event( fake_requester, event_dict={ "content": new_pl_content, "sender": admin_user_id, "type": EventTypes.PowerLevels, "state_key": "", "room_id": room_id, }, ) except AuthError: # The admin user we found turned out not to have enough power. raise SynapseError( HTTPStatus.BAD_REQUEST, "No local admin user in room with power to update power levels.", ) # Now we check if the user we're granting admin rights to is already in # the room. If not and it's not a public room we invite them. member_event = room_state.get((EventTypes.Member, user_to_add)) is_joined = False if member_event: is_joined = member_event.content["membership"] in ( Membership.JOIN, Membership.INVITE, ) if is_joined: return HTTPStatus.OK, {} join_rules = room_state.get((EventTypes.JoinRules, "")) is_public = False if join_rules: is_public = join_rules.content.get("join_rule") == JoinRules.PUBLIC if is_public: return HTTPStatus.OK, {} await self.room_member_handler.update_membership( fake_requester, target=UserID.from_string(user_to_add), room_id=room_id, action=Membership.INVITE, ) return HTTPStatus.OK, {} class ForwardExtremitiesRestServlet(ResolveRoomIdMixin, RestServlet): """Allows a server admin to get or clear forward extremities. Clearing does not require restarting the server. Clear forward extremities: DELETE /_synapse/admin/v1/rooms//forward_extremities Get forward_extremities: GET /_synapse/admin/v1/rooms//forward_extremities """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)/forward_extremities$") def __init__(self, hs: "HomeServer"): super().__init__(hs) self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_DELETE( self, request: SynapseRequest, room_identifier: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) room_id, _ = await self.resolve_room_id(room_identifier) deleted_count = await self.store.delete_forward_extremities_for_room(room_id) return HTTPStatus.OK, {"deleted": deleted_count} async def on_GET( self, request: SynapseRequest, room_identifier: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) room_id, _ = await self.resolve_room_id(room_identifier) extremities = await self.store.get_forward_extremities_for_room(room_id) return HTTPStatus.OK, {"count": len(extremities), "results": extremities} class RoomEventContextServlet(RestServlet): """ Provide the context for an event. This API is designed to be used when system administrators wish to look at an abuse report and understand what happened during and immediately prior to this event. """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)/context/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): super().__init__() self._hs = hs self.clock = hs.get_clock() self.room_context_handler = hs.get_room_context_handler() self._event_serializer = hs.get_event_client_serializer() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=False) await assert_user_is_admin(self.auth, requester.user) limit = parse_integer(request, "limit", default=10) # picking the API shape for symmetry with /messages filter_str = parse_string(request, "filter", encoding="utf-8") if filter_str: filter_json = urlparse.unquote(filter_str) event_filter: Optional[Filter] = Filter( self._hs, json_decoder.decode(filter_json) ) else: event_filter = None event_context = await self.room_context_handler.get_event_context( requester, room_id, event_id, limit, event_filter, use_admin_priviledge=True, ) if not event_context: raise SynapseError( HTTPStatus.NOT_FOUND, "Event not found.", errcode=Codes.NOT_FOUND ) time_now = self.clock.time_msec() results = { "events_before": self._event_serializer.serialize_events( event_context.events_before, time_now, bundle_aggregations=event_context.aggregations, ), "event": self._event_serializer.serialize_event( event_context.event, time_now, bundle_aggregations=event_context.aggregations, ), "events_after": self._event_serializer.serialize_events( event_context.events_after, time_now, bundle_aggregations=event_context.aggregations, ), "state": self._event_serializer.serialize_events( event_context.state, time_now ), "start": event_context.start, "end": event_context.end, } return HTTPStatus.OK, results class BlockRoomRestServlet(RestServlet): """ Manage blocking of rooms. On PUT: Add or remove a room from blocking list. On GET: Get blocking status of room and user who has blocked this room. """ PATTERNS = admin_patterns("/rooms/(?P[^/]*)/block$") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) if not RoomID.is_valid(room_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "%s is not a legal room ID" % (room_id,) ) blocked_by = await self._store.room_is_blocked_by(room_id) # Test `not None` if `user_id` is an empty string # if someone add manually an entry in database if blocked_by is not None: response = {"block": True, "user_id": blocked_by} else: response = {"block": False} return HTTPStatus.OK, response async def on_PUT( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request) await assert_user_is_admin(self._auth, requester.user) content = parse_json_object_from_request(request) if not RoomID.is_valid(room_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "%s is not a legal room ID" % (room_id,) ) assert_params_in_dict(content, ["block"]) block = content.get("block") if not isinstance(block, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'block' must be a boolean.", Codes.BAD_JSON, ) if block: await self._store.block_room(room_id, requester.user.to_string()) else: await self._store.unblock_room(room_id) return HTTPStatus.OK, {"block": block} synapse-1.53.0/synapse/rest/admin/server_notice_servlet.py000066400000000000000000000077441420514467300240200ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from http import HTTPStatus from typing import TYPE_CHECKING, Awaitable, Optional, Tuple from synapse.api.constants import EventTypes from synapse.api.errors import NotFoundError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.rest.admin import assert_requester_is_admin from synapse.rest.admin._base import admin_patterns from synapse.rest.client.transactions import HttpTransactionCache from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer class SendServerNoticeServlet(RestServlet): """Servlet which will send a server notice to a given user POST /_synapse/admin/v1/send_server_notice { "user_id": "@target_user:server_name", "content": { "msgtype": "m.text", "body": "This is my message" } } returns: { "event_id": "$1895723857jgskldgujpious" } """ def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.server_notices_manager = hs.get_server_notices_manager() self.admin_handler = hs.get_admin_handler() self.txns = HttpTransactionCache(hs) self.is_mine = hs.is_mine def register(self, json_resource: HttpServer) -> None: PATTERN = "/send_server_notice" json_resource.register_paths( "POST", admin_patterns(PATTERN + "$"), self.on_POST, self.__class__.__name__ ) json_resource.register_paths( "PUT", admin_patterns(PATTERN + "/(?P[^/]*)$"), self.on_PUT, self.__class__.__name__, ) async def on_POST( self, request: SynapseRequest, txn_id: Optional[str] = None ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) body = parse_json_object_from_request(request) assert_params_in_dict(body, ("user_id", "content")) event_type = body.get("type", EventTypes.Message) state_key = body.get("state_key") # We grab the server notices manager here as its initialisation has a check for worker processes, # but worker processes still need to initialise SendServerNoticeServlet (as it is part of the # admin api). if not self.server_notices_manager.is_enabled(): raise SynapseError( HTTPStatus.BAD_REQUEST, "Server notices are not enabled on this server" ) target_user = UserID.from_string(body["user_id"]) if not self.is_mine(target_user): raise SynapseError( HTTPStatus.BAD_REQUEST, "Server notices can only be sent to local users" ) if not await self.admin_handler.get_user(target_user): raise NotFoundError("User not found") event = await self.server_notices_manager.send_notice( user_id=target_user.to_string(), type=event_type, state_key=state_key, event_content=body["content"], txn_id=txn_id, ) return HTTPStatus.OK, {"event_id": event.event_id} def on_PUT( self, request: SynapseRequest, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: return self.txns.fetch_or_execute_request( request, self.on_POST, request, txn_id ) synapse-1.53.0/synapse/rest/admin/statistics.py000066400000000000000000000104471420514467300215710ustar00rootroot00000000000000# Copyright 2020 Dirk Klimpel # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, SynapseError from synapse.http.servlet import RestServlet, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.storage.databases.main.stats import UserSortOrder from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UserMediaStatisticsRestServlet(RestServlet): """ Get statistics about uploaded media by users. """ PATTERNS = admin_patterns("/statistics/users/media$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) order_by = parse_string( request, "order_by", default=UserSortOrder.USER_ID.value, allowed_values=( UserSortOrder.MEDIA_LENGTH.value, UserSortOrder.MEDIA_COUNT.value, UserSortOrder.USER_ID.value, UserSortOrder.DISPLAYNAME.value, ), ) start = parse_integer(request, "from", default=0) if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) limit = parse_integer(request, "limit", default=100) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter limit must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) from_ts = parse_integer(request, "from_ts", default=0) if from_ts < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from_ts must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) until_ts = parse_integer(request, "until_ts") if until_ts is not None: if until_ts < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter until_ts must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if until_ts <= from_ts: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter until_ts must be greater than from_ts.", errcode=Codes.INVALID_PARAM, ) search_term = parse_string(request, "search_term") if search_term == "": raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter search_term cannot be an empty string.", errcode=Codes.INVALID_PARAM, ) direction = parse_string(request, "dir", default="f") if direction not in ("f", "b"): raise SynapseError( HTTPStatus.BAD_REQUEST, "Unknown direction: %s" % (direction,), errcode=Codes.INVALID_PARAM, ) users_media, total = await self.store.get_users_media_usage_paginate( start, limit, from_ts, until_ts, order_by, direction, search_term ) ret = {"users": users_media, "total": total} if (start + limit) < total: ret["next_token"] = start + len(users_media) return HTTPStatus.OK, ret synapse-1.53.0/synapse/rest/admin/username_available.py000066400000000000000000000034441420514467300232150ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.http.servlet import RestServlet, parse_string from synapse.http.site import SynapseRequest from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UsernameAvailableRestServlet(RestServlet): """An admin API to check if a given username is available, regardless of whether registration is enabled. Example: GET /_synapse/admin/v1/username_available?username=foo 200 OK { "available": true } """ PATTERNS = admin_patterns("/username_available$") def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.registration_handler = hs.get_registration_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) username = parse_string(request, "username", required=True) await self.registration_handler.check_username(username) return HTTPStatus.OK, {"available": True} synapse-1.53.0/synapse/rest/admin/users.py000066400000000000000000001172331420514467300205410ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import hashlib import hmac import logging import secrets from http import HTTPStatus from typing import TYPE_CHECKING, Dict, List, Optional, Tuple from synapse.api.constants import UserTypes from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_boolean, parse_integer, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.rest.admin._base import ( admin_patterns, assert_requester_is_admin, assert_user_is_admin, ) from synapse.rest.client._base import client_patterns from synapse.storage.databases.main.registration import ExternalIDReuseException from synapse.storage.databases.main.stats import UserSortOrder from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UsersRestServletV2(RestServlet): PATTERNS = admin_patterns("/users$", "v2") """Get request to list all local users. This needs user to have administrator access in Synapse. GET /_synapse/admin/v2/users?from=0&limit=10&guests=false returns: 200 OK with list of users if success otherwise an error. The parameters `from` and `limit` are required only for pagination. By default, a `limit` of 100 is used. The parameter `user_id` can be used to filter by user id. The parameter `name` can be used to filter by user id or display name. The parameter `guests` can be used to exclude guest users. The parameter `deactivated` can be used to include deactivated users. The parameter `order_by` can be used to order the result. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.admin_handler = hs.get_admin_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) start = parse_integer(request, "from", default=0) limit = parse_integer(request, "limit", default=100) if start < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter from must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) if limit < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter limit must be a string representing a positive integer.", errcode=Codes.INVALID_PARAM, ) user_id = parse_string(request, "user_id") name = parse_string(request, "name") guests = parse_boolean(request, "guests", default=True) deactivated = parse_boolean(request, "deactivated", default=False) order_by = parse_string( request, "order_by", default=UserSortOrder.NAME.value, allowed_values=( UserSortOrder.NAME.value, UserSortOrder.DISPLAYNAME.value, UserSortOrder.GUEST.value, UserSortOrder.ADMIN.value, UserSortOrder.DEACTIVATED.value, UserSortOrder.USER_TYPE.value, UserSortOrder.AVATAR_URL.value, UserSortOrder.SHADOW_BANNED.value, UserSortOrder.CREATION_TS.value, ), ) direction = parse_string(request, "dir", default="f", allowed_values=("f", "b")) users, total = await self.store.get_users_paginate( start, limit, user_id, name, guests, deactivated, order_by, direction ) ret = {"users": users, "total": total} if (start + limit) < total: ret["next_token"] = str(start + len(users)) return HTTPStatus.OK, ret class UserRestServletV2(RestServlet): PATTERNS = admin_patterns("/users/(?P[^/]*)$", "v2") """Get request to list user details. This needs user to have administrator access in Synapse. GET /_synapse/admin/v2/users/ returns: 200 OK with user details if success otherwise an error. Put request to allow an administrator to add or modify a user. This needs user to have administrator access in Synapse. We use PUT instead of POST since we already know the id of the user object to create. POST could be used to create guests. PUT /_synapse/admin/v2/users/ { "password": "secret", "displayname": "User" } returns: 201 OK with new user object if user was created or 200 OK with modified user object if user was modified otherwise an error. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.admin_handler = hs.get_admin_handler() self.store = hs.get_datastore() self.auth_handler = hs.get_auth_handler() self.profile_handler = hs.get_profile_handler() self.set_password_handler = hs.get_set_password_handler() self.deactivate_account_handler = hs.get_deactivate_account_handler() self.registration_handler = hs.get_registration_handler() self.pusher_pool = hs.get_pusherpool() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.hs.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only look up local users") user_info_dict = await self.admin_handler.get_user(target_user) if not user_info_dict: raise NotFoundError("User not found") return HTTPStatus.OK, user_info_dict async def on_PUT( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) target_user = UserID.from_string(user_id) body = parse_json_object_from_request(request) if not self.hs.is_mine(target_user): raise SynapseError( HTTPStatus.BAD_REQUEST, "This endpoint can only be used with local users", ) user = await self.admin_handler.get_user(target_user) user_id = target_user.to_string() # check for required parameters for each threepid threepids = body.get("threepids") if threepids is not None: for threepid in threepids: assert_params_in_dict(threepid, ["medium", "address"]) # check for required parameters for each external_id external_ids = body.get("external_ids") if external_ids is not None: for external_id in external_ids: assert_params_in_dict(external_id, ["auth_provider", "external_id"]) user_type = body.get("user_type", None) if user_type is not None and user_type not in UserTypes.ALL_USER_TYPES: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid user type") set_admin_to = body.get("admin", False) if not isinstance(set_admin_to, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'admin' must be a boolean, if given", Codes.BAD_JSON, ) password = body.get("password", None) if password is not None: if not isinstance(password, str) or len(password) > 512: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid password") deactivate = body.get("deactivated", False) if not isinstance(deactivate, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "'deactivated' parameter is not of type boolean" ) # convert List[Dict[str, str]] into List[Tuple[str, str]] if external_ids is not None: new_external_ids = [ (external_id["auth_provider"], external_id["external_id"]) for external_id in external_ids ] # convert List[Dict[str, str]] into Set[Tuple[str, str]] if threepids is not None: new_threepids = { (threepid["medium"], threepid["address"]) for threepid in threepids } if user: # modify user if "displayname" in body: await self.profile_handler.set_displayname( target_user, requester, body["displayname"], True ) if threepids is not None: # get changed threepids (added and removed) # convert List[Dict[str, Any]] into Set[Tuple[str, str]] cur_threepids = { (threepid["medium"], threepid["address"]) for threepid in await self.store.user_get_threepids(user_id) } add_threepids = new_threepids - cur_threepids del_threepids = cur_threepids - new_threepids # remove old threepids for medium, address in del_threepids: try: await self.auth_handler.delete_threepid( user_id, medium, address, None ) except Exception: logger.exception("Failed to remove threepids") raise SynapseError(500, "Failed to remove threepids") # add new threepids current_time = self.hs.get_clock().time_msec() for medium, address in add_threepids: await self.auth_handler.add_threepid( user_id, medium, address, current_time ) if external_ids is not None: try: await self.store.replace_user_external_id( new_external_ids, user_id, ) except ExternalIDReuseException: raise SynapseError( HTTPStatus.CONFLICT, "External id is already in use." ) if "avatar_url" in body and isinstance(body["avatar_url"], str): await self.profile_handler.set_avatar_url( target_user, requester, body["avatar_url"], True ) if "admin" in body: if set_admin_to != user["admin"]: auth_user = requester.user if target_user == auth_user and not set_admin_to: raise SynapseError( HTTPStatus.BAD_REQUEST, "You may not demote yourself." ) await self.store.set_server_admin(target_user, set_admin_to) if password is not None: logout_devices = True new_password_hash = await self.auth_handler.hash(password) await self.set_password_handler.set_password( target_user.to_string(), new_password_hash, logout_devices, requester, ) if "deactivated" in body: if deactivate and not user["deactivated"]: await self.deactivate_account_handler.deactivate_account( target_user.to_string(), False, requester, by_admin=True ) elif not deactivate and user["deactivated"]: if ( "password" not in body and self.auth_handler.can_change_password() ): raise SynapseError( HTTPStatus.BAD_REQUEST, "Must provide a password to re-activate an account.", ) await self.deactivate_account_handler.activate_account( target_user.to_string() ) if "user_type" in body: await self.store.set_user_type(target_user, user_type) user = await self.admin_handler.get_user(target_user) assert user is not None return HTTPStatus.OK, user else: # create user displayname = body.get("displayname", None) password_hash = None if password is not None: password_hash = await self.auth_handler.hash(password) user_id = await self.registration_handler.register_user( localpart=target_user.localpart, password_hash=password_hash, admin=set_admin_to, default_display_name=displayname, user_type=user_type, by_admin=True, ) if threepids is not None: current_time = self.hs.get_clock().time_msec() for medium, address in new_threepids: await self.auth_handler.add_threepid( user_id, medium, address, current_time ) if ( self.hs.config.email.email_enable_notifs and self.hs.config.email.email_notif_for_new_users ): await self.pusher_pool.add_pusher( user_id=user_id, access_token=None, kind="email", app_id="m.email", app_display_name="Email Notifications", device_display_name=address, pushkey=address, lang=None, # We don't know a user's language here data={}, ) if external_ids is not None: try: for auth_provider, external_id in new_external_ids: await self.store.record_user_external_id( auth_provider, external_id, user_id, ) except ExternalIDReuseException: raise SynapseError( HTTPStatus.CONFLICT, "External id is already in use." ) if "avatar_url" in body and isinstance(body["avatar_url"], str): await self.profile_handler.set_avatar_url( target_user, requester, body["avatar_url"], True ) user_info_dict = await self.admin_handler.get_user(target_user) assert user_info_dict is not None return HTTPStatus.CREATED, user_info_dict class UserRegisterServlet(RestServlet): """ Attributes: NONCE_TIMEOUT (int): Seconds until a generated nonce won't be accepted nonces (dict[str, int]): The nonces that we will accept. A dict of nonce to the time it was generated, in int seconds. """ PATTERNS = admin_patterns("/register$") NONCE_TIMEOUT = 60 def __init__(self, hs: "HomeServer"): self.auth_handler = hs.get_auth_handler() self.reactor = hs.get_reactor() self.nonces: Dict[str, int] = {} self.hs = hs def _clear_old_nonces(self) -> None: """ Clear out old nonces that are older than NONCE_TIMEOUT. """ now = int(self.reactor.seconds()) for k, v in list(self.nonces.items()): if now - v > self.NONCE_TIMEOUT: del self.nonces[k] def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: """ Generate a new nonce. """ self._clear_old_nonces() nonce = secrets.token_hex(64) self.nonces[nonce] = int(self.reactor.seconds()) return HTTPStatus.OK, {"nonce": nonce} async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: self._clear_old_nonces() if not self.hs.config.registration.registration_shared_secret: raise SynapseError( HTTPStatus.BAD_REQUEST, "Shared secret registration is not enabled" ) body = parse_json_object_from_request(request) if "nonce" not in body: raise SynapseError( HTTPStatus.BAD_REQUEST, "nonce must be specified", errcode=Codes.BAD_JSON, ) nonce = body["nonce"] if nonce not in self.nonces: raise SynapseError(HTTPStatus.BAD_REQUEST, "unrecognised nonce") # Delete the nonce, so it can't be reused, even if it's invalid del self.nonces[nonce] if "username" not in body: raise SynapseError( HTTPStatus.BAD_REQUEST, "username must be specified", errcode=Codes.BAD_JSON, ) else: if not isinstance(body["username"], str) or len(body["username"]) > 512: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid username") username = body["username"].encode("utf-8") if b"\x00" in username: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid username") if "password" not in body: raise SynapseError( HTTPStatus.BAD_REQUEST, "password must be specified", errcode=Codes.BAD_JSON, ) else: password = body["password"] if not isinstance(password, str) or len(password) > 512: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid password") password_bytes = password.encode("utf-8") if b"\x00" in password_bytes: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid password") password_hash = await self.auth_handler.hash(password) admin = body.get("admin", None) user_type = body.get("user_type", None) displayname = body.get("displayname", None) if user_type is not None and user_type not in UserTypes.ALL_USER_TYPES: raise SynapseError(HTTPStatus.BAD_REQUEST, "Invalid user type") if "mac" not in body: raise SynapseError( HTTPStatus.BAD_REQUEST, "mac must be specified", errcode=Codes.BAD_JSON ) got_mac = body["mac"] want_mac_builder = hmac.new( key=self.hs.config.registration.registration_shared_secret.encode(), digestmod=hashlib.sha1, ) want_mac_builder.update(nonce.encode("utf8")) want_mac_builder.update(b"\x00") want_mac_builder.update(username) want_mac_builder.update(b"\x00") want_mac_builder.update(password_bytes) want_mac_builder.update(b"\x00") want_mac_builder.update(b"admin" if admin else b"notadmin") if user_type: want_mac_builder.update(b"\x00") want_mac_builder.update(user_type.encode("utf8")) want_mac = want_mac_builder.hexdigest() if not hmac.compare_digest(want_mac.encode("ascii"), got_mac.encode("ascii")): raise SynapseError(HTTPStatus.FORBIDDEN, "HMAC incorrect") # Reuse the parts of RegisterRestServlet to reduce code duplication from synapse.rest.client.register import RegisterRestServlet register = RegisterRestServlet(self.hs) user_id = await register.registration_handler.register_user( localpart=body["username"].lower(), password_hash=password_hash, admin=bool(admin), user_type=user_type, default_display_name=displayname, by_admin=True, ) result = await register._create_registration_details(user_id, body) return HTTPStatus.OK, result class WhoisRestServlet(RestServlet): path_regex = "/whois/(?P[^/]*)$" PATTERNS = [ *admin_patterns(path_regex), # URL for spec reason # https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-admin-whois-userid *client_patterns("/admin" + path_regex, v1=True), ] def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.admin_handler = hs.get_admin_handler() self.is_mine = hs.is_mine async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: target_user = UserID.from_string(user_id) requester = await self.auth.get_user_by_req(request) auth_user = requester.user if target_user != auth_user: await assert_user_is_admin(self.auth, auth_user) if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only whois a local user") ret = await self.admin_handler.get_whois(target_user) return HTTPStatus.OK, ret class DeactivateAccountRestServlet(RestServlet): PATTERNS = admin_patterns("/deactivate/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self._deactivate_account_handler = hs.get_deactivate_account_handler() self.auth = hs.get_auth() self.is_mine = hs.is_mine self.store = hs.get_datastore() async def on_POST( self, request: SynapseRequest, target_user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) if not self.is_mine(UserID.from_string(target_user_id)): raise SynapseError( HTTPStatus.BAD_REQUEST, "Can only deactivate local users" ) if not await self.store.get_user_by_id(target_user_id): raise NotFoundError("User not found") body = parse_json_object_from_request(request, allow_empty_body=True) erase = body.get("erase", False) if not isinstance(erase, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'erase' must be a boolean, if given", Codes.BAD_JSON, ) result = await self._deactivate_account_handler.deactivate_account( target_user_id, erase, requester, by_admin=True ) if result: id_server_unbind_result = "success" else: id_server_unbind_result = "no-support" return HTTPStatus.OK, {"id_server_unbind_result": id_server_unbind_result} class AccountValidityRenewServlet(RestServlet): PATTERNS = admin_patterns("/account_validity/validity$") def __init__(self, hs: "HomeServer"): self.account_activity_handler = hs.get_account_validity_handler() self.auth = hs.get_auth() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if self.account_activity_handler.on_legacy_admin_request_callback: expiration_ts = await ( self.account_activity_handler.on_legacy_admin_request_callback(request) ) else: body = parse_json_object_from_request(request) if "user_id" not in body: raise SynapseError( HTTPStatus.BAD_REQUEST, "Missing property 'user_id' in the request body", ) expiration_ts = await self.account_activity_handler.renew_account_for_user( body["user_id"], body.get("expiration_ts"), not body.get("enable_renewal_emails", True), ) res = {"expiration_ts": expiration_ts} return HTTPStatus.OK, res class ResetPasswordRestServlet(RestServlet): """Post request to allow an administrator reset password for a user. This needs user to have administrator access in Synapse. Example: http://localhost:8008/_synapse/admin/v1/reset_password/ @user:to_reset_password?access_token=admin_access_token JsonBodyToSend: { "new_password": "secret" } Returns: 200 OK with empty object if success otherwise an error. """ PATTERNS = admin_patterns("/reset_password/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() self._set_password_handler = hs.get_set_password_handler() async def on_POST( self, request: SynapseRequest, target_user_id: str ) -> Tuple[int, JsonDict]: """Post request to allow an administrator reset password for a user. This needs user to have administrator access in Synapse. """ requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) UserID.from_string(target_user_id) params = parse_json_object_from_request(request) assert_params_in_dict(params, ["new_password"]) new_password = params["new_password"] logout_devices = params.get("logout_devices", True) new_password_hash = await self.auth_handler.hash(new_password) await self._set_password_handler.set_password( target_user_id, new_password_hash, logout_devices, requester ) return HTTPStatus.OK, {} class SearchUsersRestServlet(RestServlet): """Get request to search user table for specific users according to search term. This needs user to have administrator access in Synapse. Example: http://localhost:8008/_synapse/admin/v1/search_users/ @admin:user?access_token=admin_access_token&term=alice Returns: 200 OK with json object {list[dict[str, Any]], count} or empty object. """ PATTERNS = admin_patterns("/search_users/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.is_mine = hs.is_mine async def on_GET( self, request: SynapseRequest, target_user_id: str ) -> Tuple[int, Optional[List[JsonDict]]]: """Get request to search user table for specific users according to search term. This needs user to have a administrator access in Synapse. """ await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(target_user_id) # To allow all users to get the users list # if not is_admin and target_user != auth_user: # raise AuthError(HTTPStatus.FORBIDDEN, "You are not a server admin") if not self.is_mine(target_user): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only users a local user") term = parse_string(request, "term", required=True) logger.info("term: %s ", term) ret = await self.store.search_users(term) return HTTPStatus.OK, ret class UserAdminServlet(RestServlet): """ Get or set whether or not a user is a server administrator. Note that only local users can be server administrators, and that an administrator may not demote themselves. Only server administrators can use this API. Examples: * Get GET /_synapse/admin/v1/users/@nonadmin:example.com/admin response on success: { "admin": false } * Set PUT /_synapse/admin/v1/users/@reivilibre:librepush.net/admin request body: { "admin": true } response on success: {} """ PATTERNS = admin_patterns("/users/(?P[^/]*)/admin$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.is_mine = hs.is_mine async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) target_user = UserID.from_string(user_id) if not self.is_mine(target_user): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be admins of this homeserver", ) is_admin = await self.store.is_server_admin(target_user) return HTTPStatus.OK, {"admin": is_admin} async def on_PUT( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) auth_user = requester.user target_user = UserID.from_string(user_id) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["admin"]) if not self.is_mine(target_user): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be admins of this homeserver", ) set_admin_to = bool(body["admin"]) if target_user == auth_user and not set_admin_to: raise SynapseError(HTTPStatus.BAD_REQUEST, "You may not demote yourself.") await self.store.set_server_admin(target_user, set_admin_to) return HTTPStatus.OK, {} class UserMembershipRestServlet(RestServlet): """ Get room list of an user. """ PATTERNS = admin_patterns("/users/(?P[^/]*)/joined_rooms$") def __init__(self, hs: "HomeServer"): self.is_mine = hs.is_mine self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) room_ids = await self.store.get_rooms_for_user(user_id) ret = {"joined_rooms": list(room_ids), "total": len(room_ids)} return HTTPStatus.OK, ret class PushersRestServlet(RestServlet): """ Gets information about all pushers for a specific `user_id`. Example: http://localhost:8008/_synapse/admin/v1/users/ @user:server/pushers Returns: pushers: Dictionary containing pushers information. total: Number of pushers in dictionary `pushers`. """ PATTERNS = admin_patterns("/users/(?P[^/]*)/pushers$") def __init__(self, hs: "HomeServer"): self.is_mine = hs.is_mine self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if not self.is_mine(UserID.from_string(user_id)): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only look up local users") if not await self.store.get_user_by_id(user_id): raise NotFoundError("User not found") pushers = await self.store.get_pushers_by_user_id(user_id) filtered_pushers = [p.as_dict() for p in pushers] return HTTPStatus.OK, { "pushers": filtered_pushers, "total": len(filtered_pushers), } class UserTokenRestServlet(RestServlet): """An admin API for logging in as a user. Example: POST /_synapse/admin/v1/users/@test:example.com/login {} 200 OK { "access_token": "" } """ PATTERNS = admin_patterns("/users/(?P[^/]*)/login$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() self.is_mine_id = hs.is_mine_id async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await assert_user_is_admin(self.auth, requester.user) auth_user = requester.user if not self.is_mine_id(user_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be logged in as" ) body = parse_json_object_from_request(request, allow_empty_body=True) valid_until_ms = body.get("valid_until_ms") if valid_until_ms and not isinstance(valid_until_ms, int): raise SynapseError( HTTPStatus.BAD_REQUEST, "'valid_until_ms' parameter must be an int" ) if auth_user.to_string() == user_id: raise SynapseError( HTTPStatus.BAD_REQUEST, "Cannot use admin API to login as self" ) token = await self.auth_handler.create_access_token_for_user_id( user_id=auth_user.to_string(), device_id=None, valid_until_ms=valid_until_ms, puppets_user_id=user_id, ) return HTTPStatus.OK, {"access_token": token} class ShadowBanRestServlet(RestServlet): """An admin API for controlling whether a user is shadow-banned. A shadow-banned users receives successful responses to their client-server API requests, but the events are not propagated into rooms. Shadow-banning a user should be used as a tool of last resort and may lead to confusing or broken behaviour for the client. Example of shadow-banning a user: POST /_synapse/admin/v1/users/@test:example.com/shadow_ban {} 200 OK {} Example of removing a user from being shadow-banned: DELETE /_synapse/admin/v1/users/@test:example.com/shadow_ban {} 200 OK {} """ PATTERNS = admin_patterns("/users/(?P[^/]*)/shadow_ban$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.is_mine_id = hs.is_mine_id async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if not self.is_mine_id(user_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be shadow-banned" ) await self.store.set_shadow_banned(UserID.from_string(user_id), True) return HTTPStatus.OK, {} async def on_DELETE( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if not self.is_mine_id(user_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be shadow-banned" ) await self.store.set_shadow_banned(UserID.from_string(user_id), False) return HTTPStatus.OK, {} class RateLimitRestServlet(RestServlet): """An admin API to override ratelimiting for an user. Example: POST /_synapse/admin/v1/users/@test:example.com/override_ratelimit { "messages_per_second": 0, "burst_count": 0 } 200 OK { "messages_per_second": 0, "burst_count": 0 } """ PATTERNS = admin_patterns("/users/(?P[^/]*)/override_ratelimit$") def __init__(self, hs: "HomeServer"): self.store = hs.get_datastore() self.auth = hs.get_auth() self.is_mine_id = hs.is_mine_id async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if not self.is_mine_id(user_id): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only look up local users") if not await self.store.get_user_by_id(user_id): raise NotFoundError("User not found") ratelimit = await self.store.get_ratelimit_for_user(user_id) if ratelimit: # convert `null` to `0` for consistency # both values do the same in retelimit handler ret = { "messages_per_second": 0 if ratelimit.messages_per_second is None else ratelimit.messages_per_second, "burst_count": 0 if ratelimit.burst_count is None else ratelimit.burst_count, } else: ret = {} return HTTPStatus.OK, ret async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if not self.is_mine_id(user_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be ratelimited" ) if not await self.store.get_user_by_id(user_id): raise NotFoundError("User not found") body = parse_json_object_from_request(request, allow_empty_body=True) messages_per_second = body.get("messages_per_second", 0) burst_count = body.get("burst_count", 0) if not isinstance(messages_per_second, int) or messages_per_second < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "%r parameter must be a positive int" % (messages_per_second,), errcode=Codes.INVALID_PARAM, ) if not isinstance(burst_count, int) or burst_count < 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "%r parameter must be a positive int" % (burst_count,), errcode=Codes.INVALID_PARAM, ) await self.store.set_ratelimit_for_user( user_id, messages_per_second, burst_count ) ratelimit = await self.store.get_ratelimit_for_user(user_id) assert ratelimit is not None ret = { "messages_per_second": ratelimit.messages_per_second, "burst_count": ratelimit.burst_count, } return HTTPStatus.OK, ret async def on_DELETE( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self.auth, request) if not self.is_mine_id(user_id): raise SynapseError( HTTPStatus.BAD_REQUEST, "Only local users can be ratelimited" ) if not await self.store.get_user_by_id(user_id): raise NotFoundError("User not found") await self.store.delete_ratelimit_for_user(user_id) return HTTPStatus.OK, {} class AccountDataRestServlet(RestServlet): """Retrieve the given user's account data""" PATTERNS = admin_patterns("/users/(?P[^/]*)/accountdata") def __init__(self, hs: "HomeServer"): self._auth = hs.get_auth() self._store = hs.get_datastore() self._is_mine_id = hs.is_mine_id async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await assert_requester_is_admin(self._auth, request) if not self._is_mine_id(user_id): raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only look up local users") if not await self._store.get_user_by_id(user_id): raise NotFoundError("User not found") global_data, by_room_data = await self._store.get_account_data_for_user(user_id) return HTTPStatus.OK, { "account_data": { "global": global_data, "rooms": by_room_data, }, } synapse-1.53.0/synapse/rest/client/000077500000000000000000000000001420514467300172055ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/client/__init__.py000066400000000000000000000011311420514467300213120ustar00rootroot00000000000000# Copyright 2014-2016 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/rest/client/_base.py000066400000000000000000000066371420514467300206440ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module contains base REST classes for constructing client v1 servlets. """ import logging import re from typing import Any, Awaitable, Callable, Iterable, Pattern, Tuple, TypeVar, cast from synapse.api.errors import InteractiveAuthIncompleteError from synapse.api.urls import CLIENT_API_PREFIX from synapse.types import JsonDict logger = logging.getLogger(__name__) def client_patterns( path_regex: str, releases: Iterable[str] = ("r0", "v3"), unstable: bool = True, v1: bool = False, ) -> Iterable[Pattern]: """Creates a regex compiled client path with the correct client path prefix. Args: path_regex: The regex string to match. This should NOT have a ^ as this will be prefixed. releases: An iterable of releases to include this endpoint under. unstable: If true, include this endpoint under the "unstable" prefix. v1: If true, include this endpoint under the "api/v1" prefix. Returns: An iterable of patterns. """ patterns = [] if unstable: unstable_prefix = CLIENT_API_PREFIX + "/unstable" patterns.append(re.compile("^" + unstable_prefix + path_regex)) if v1: v1_prefix = CLIENT_API_PREFIX + "/api/v1" patterns.append(re.compile("^" + v1_prefix + path_regex)) for release in releases: new_prefix = CLIENT_API_PREFIX + f"/{release}" patterns.append(re.compile("^" + new_prefix + path_regex)) return patterns def set_timeline_upper_limit(filter_json: JsonDict, filter_timeline_limit: int) -> None: """ Enforces a maximum limit of a timeline query. Params: filter_json: The timeline query to modify. filter_timeline_limit: The maximum limit to allow, passing -1 will disable enforcing a maximum limit. """ if filter_timeline_limit < 0: return # no upper limits timeline = filter_json.get("room", {}).get("timeline", {}) if "limit" in timeline: filter_json["room"]["timeline"]["limit"] = min( filter_json["room"]["timeline"]["limit"], filter_timeline_limit ) C = TypeVar("C", bound=Callable[..., Awaitable[Tuple[int, JsonDict]]]) def interactive_auth_handler(orig: C) -> C: """Wraps an on_POST method to handle InteractiveAuthIncompleteErrors Takes a on_POST method which returns an Awaitable (errcode, body) response and adds exception handling to turn a InteractiveAuthIncompleteError into a 401 response. Normal usage is: @interactive_auth_handler async def on_POST(self, request): # ... await self.auth_handler.check_auth """ async def wrapped(*args: Any, **kwargs: Any) -> Tuple[int, JsonDict]: try: return await orig(*args, **kwargs) except InteractiveAuthIncompleteError as e: return 401, e.result return cast(C, wrapped) synapse-1.53.0/synapse/rest/client/account.py000066400000000000000000001054761420514467300212300ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from http import HTTPStatus from typing import TYPE_CHECKING, Optional, Tuple from urllib.parse import urlparse from twisted.web.server import Request from synapse.api.constants import LoginType from synapse.api.errors import ( Codes, InteractiveAuthIncompleteError, SynapseError, ThreepidValidationError, ) from synapse.config.emailconfig import ThreepidBehaviour from synapse.handlers.ui_auth import UIAuthSessionDataConstants from synapse.http.server import HttpServer, finish_request, respond_with_html from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.metrics import threepid_send_requests from synapse.push.mailer import Mailer from synapse.types import JsonDict from synapse.util.msisdn import phone_number_to_msisdn from synapse.util.stringutils import assert_valid_client_secret, random_string from synapse.util.threepids import check_3pid_allowed, validate_email from ._base import client_patterns, interactive_auth_handler if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EmailPasswordRequestTokenRestServlet(RestServlet): PATTERNS = client_patterns("/account/password/email/requestToken$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.datastore = hs.get_datastore() self.config = hs.config self.identity_handler = hs.get_identity_handler() if self.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: self.mailer = Mailer( hs=self.hs, app_name=self.config.email.email_app_name, template_html=self.config.email.email_password_reset_template_html, template_text=self.config.email.email_password_reset_template_text, ) async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: if self.config.email.threepid_behaviour_email == ThreepidBehaviour.OFF: if self.config.email.local_threepid_handling_disabled_due_to_email_config: logger.warning( "User password resets have been disabled due to lack of email config" ) raise SynapseError( 400, "Email-based password resets have been disabled on this server" ) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["client_secret", "email", "send_attempt"]) # Extract params from body client_secret = body["client_secret"] assert_valid_client_secret(client_secret) # Canonicalise the email address. The addresses are all stored canonicalised # in the database. This allows the user to reset his password without having to # know the exact spelling (eg. upper and lower case) of address in the database. # Stored in the database "foo@bar.com" # User requests with "FOO@bar.com" would raise a Not Found error try: email = validate_email(body["email"]) except ValueError as e: raise SynapseError(400, str(e)) send_attempt = body["send_attempt"] next_link = body.get("next_link") # Optional param if next_link: # Raise if the provided next_link value isn't valid assert_valid_next_link(self.hs, next_link) await self.identity_handler.ratelimit_request_token_requests( request, "email", email ) # The email will be sent to the stored address. # This avoids a potential account hijack by requesting a password reset to # an email address which is controlled by the attacker but which, after # canonicalisation, matches the one in our database. existing_user_id = await self.hs.get_datastore().get_user_id_by_threepid( "email", email ) if existing_user_id is None: if self.config.server.request_token_inhibit_3pid_errors: # Make the client think the operation succeeded. See the rationale in the # comments for request_token_inhibit_3pid_errors. # Also wait for some random amount of time between 100ms and 1s to make it # look like we did something. await self.hs.get_clock().sleep(random.randint(1, 10) / 10) return 200, {"sid": random_string(16)} raise SynapseError(400, "Email not found", Codes.THREEPID_NOT_FOUND) if self.config.email.threepid_behaviour_email == ThreepidBehaviour.REMOTE: assert self.hs.config.registration.account_threepid_delegate_email # Have the configured identity server handle the request ret = await self.identity_handler.requestEmailToken( self.hs.config.registration.account_threepid_delegate_email, email, client_secret, send_attempt, next_link, ) else: # Send password reset emails from Synapse sid = await self.identity_handler.send_threepid_validation( email, client_secret, send_attempt, self.mailer.send_password_reset_mail, next_link, ) # Wrap the session id in a JSON object ret = {"sid": sid} threepid_send_requests.labels(type="email", reason="password_reset").observe( send_attempt ) return 200, ret class PasswordRestServlet(RestServlet): PATTERNS = client_patterns("/account/password$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() self.datastore = self.hs.get_datastore() self.password_policy_handler = hs.get_password_policy_handler() self._set_password_handler = hs.get_set_password_handler() @interactive_auth_handler async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: body = parse_json_object_from_request(request) # we do basic sanity checks here because the auth layer will store these # in sessions. Pull out the new password provided to us. new_password = body.pop("new_password", None) if new_password is not None: if not isinstance(new_password, str) or len(new_password) > 512: raise SynapseError(400, "Invalid password") self.password_policy_handler.validate_password(new_password) # there are two possibilities here. Either the user does not have an # access token, and needs to do a password reset; or they have one and # need to validate their identity. # # In the first case, we offer a couple of means of identifying # themselves (email and msisdn, though it's unclear if msisdn actually # works). # # In the second case, we require a password to confirm their identity. requester = None if self.auth.has_access_token(request): requester = await self.auth.get_user_by_req(request) try: params, session_id = await self.auth_handler.validate_user_via_ui_auth( requester, request, body, "modify your account password", ) except InteractiveAuthIncompleteError as e: # The user needs to provide more steps to complete auth, but # they're not required to provide the password again. # # If a password is available now, hash the provided password and # store it for later. if new_password: new_password_hash = await self.auth_handler.hash(new_password) await self.auth_handler.set_session_data( e.session_id, UIAuthSessionDataConstants.PASSWORD_HASH, new_password_hash, ) raise user_id = requester.user.to_string() else: try: result, params, session_id = await self.auth_handler.check_ui_auth( [[LoginType.EMAIL_IDENTITY]], request, body, "modify your account password", ) except InteractiveAuthIncompleteError as e: # The user needs to provide more steps to complete auth, but # they're not required to provide the password again. # # If a password is available now, hash the provided password and # store it for later. if new_password: new_password_hash = await self.auth_handler.hash(new_password) await self.auth_handler.set_session_data( e.session_id, UIAuthSessionDataConstants.PASSWORD_HASH, new_password_hash, ) raise if LoginType.EMAIL_IDENTITY in result: threepid = result[LoginType.EMAIL_IDENTITY] if "medium" not in threepid or "address" not in threepid: raise SynapseError(500, "Malformed threepid") if threepid["medium"] == "email": # For emails, canonicalise the address. # We store all email addresses canonicalised in the DB. # (See add_threepid in synapse/handlers/auth.py) try: threepid["address"] = validate_email(threepid["address"]) except ValueError as e: raise SynapseError(400, str(e)) # if using email, we must know about the email they're authing with! threepid_user_id = await self.datastore.get_user_id_by_threepid( threepid["medium"], threepid["address"] ) if not threepid_user_id: raise SynapseError(404, "Email address not found", Codes.NOT_FOUND) user_id = threepid_user_id else: logger.error("Auth succeeded but no known type! %r", result.keys()) raise SynapseError(500, "", Codes.UNKNOWN) # If we have a password in this request, prefer it. Otherwise, use the # password hash from an earlier request. if new_password: password_hash: Optional[str] = await self.auth_handler.hash(new_password) elif session_id is not None: password_hash = await self.auth_handler.get_session_data( session_id, UIAuthSessionDataConstants.PASSWORD_HASH, None ) else: # UI validation was skipped, but the request did not include a new # password. password_hash = None if not password_hash: raise SynapseError(400, "Missing params: password", Codes.MISSING_PARAM) logout_devices = params.get("logout_devices", True) await self._set_password_handler.set_password( user_id, password_hash, logout_devices, requester ) return 200, {} class DeactivateAccountRestServlet(RestServlet): PATTERNS = client_patterns("/account/deactivate$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() self._deactivate_account_handler = hs.get_deactivate_account_handler() @interactive_auth_handler async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: body = parse_json_object_from_request(request) erase = body.get("erase", False) if not isinstance(erase, bool): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'erase' must be a boolean, if given", Codes.BAD_JSON, ) requester = await self.auth.get_user_by_req(request) # allow ASes to deactivate their own users if requester.app_service: await self._deactivate_account_handler.deactivate_account( requester.user.to_string(), erase, requester ) return 200, {} await self.auth_handler.validate_user_via_ui_auth( requester, request, body, "deactivate your account", ) result = await self._deactivate_account_handler.deactivate_account( requester.user.to_string(), erase, requester, id_server=body.get("id_server"), ) if result: id_server_unbind_result = "success" else: id_server_unbind_result = "no-support" return 200, {"id_server_unbind_result": id_server_unbind_result} class EmailThreepidRequestTokenRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid/email/requestToken$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.config = hs.config self.identity_handler = hs.get_identity_handler() self.store = self.hs.get_datastore() if self.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: self.mailer = Mailer( hs=self.hs, app_name=self.config.email.email_app_name, template_html=self.config.email.email_add_threepid_template_html, template_text=self.config.email.email_add_threepid_template_text, ) async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: if self.config.email.threepid_behaviour_email == ThreepidBehaviour.OFF: if self.config.email.local_threepid_handling_disabled_due_to_email_config: logger.warning( "Adding emails have been disabled due to lack of an email config" ) raise SynapseError( 400, "Adding an email to your account is disabled on this server" ) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["client_secret", "email", "send_attempt"]) client_secret = body["client_secret"] assert_valid_client_secret(client_secret) # Canonicalise the email address. The addresses are all stored canonicalised # in the database. # This ensures that the validation email is sent to the canonicalised address # as it will later be entered into the database. # Otherwise the email will be sent to "FOO@bar.com" and stored as # "foo@bar.com" in database. try: email = validate_email(body["email"]) except ValueError as e: raise SynapseError(400, str(e)) send_attempt = body["send_attempt"] next_link = body.get("next_link") # Optional param if not await check_3pid_allowed(self.hs, "email", email): raise SynapseError( 403, "Your email domain is not authorized on this server", Codes.THREEPID_DENIED, ) await self.identity_handler.ratelimit_request_token_requests( request, "email", email ) if next_link: # Raise if the provided next_link value isn't valid assert_valid_next_link(self.hs, next_link) existing_user_id = await self.store.get_user_id_by_threepid("email", email) if existing_user_id is not None: if self.config.server.request_token_inhibit_3pid_errors: # Make the client think the operation succeeded. See the rationale in the # comments for request_token_inhibit_3pid_errors. # Also wait for some random amount of time between 100ms and 1s to make it # look like we did something. await self.hs.get_clock().sleep(random.randint(1, 10) / 10) return 200, {"sid": random_string(16)} raise SynapseError(400, "Email is already in use", Codes.THREEPID_IN_USE) if self.config.email.threepid_behaviour_email == ThreepidBehaviour.REMOTE: assert self.hs.config.registration.account_threepid_delegate_email # Have the configured identity server handle the request ret = await self.identity_handler.requestEmailToken( self.hs.config.registration.account_threepid_delegate_email, email, client_secret, send_attempt, next_link, ) else: # Send threepid validation emails from Synapse sid = await self.identity_handler.send_threepid_validation( email, client_secret, send_attempt, self.mailer.send_add_threepid_mail, next_link, ) # Wrap the session id in a JSON object ret = {"sid": sid} threepid_send_requests.labels(type="email", reason="add_threepid").observe( send_attempt ) return 200, ret class MsisdnThreepidRequestTokenRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid/msisdn/requestToken$") def __init__(self, hs: "HomeServer"): self.hs = hs super().__init__() self.store = self.hs.get_datastore() self.identity_handler = hs.get_identity_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: body = parse_json_object_from_request(request) assert_params_in_dict( body, ["client_secret", "country", "phone_number", "send_attempt"] ) client_secret = body["client_secret"] assert_valid_client_secret(client_secret) country = body["country"] phone_number = body["phone_number"] send_attempt = body["send_attempt"] next_link = body.get("next_link") # Optional param msisdn = phone_number_to_msisdn(country, phone_number) if not await check_3pid_allowed(self.hs, "msisdn", msisdn): raise SynapseError( 403, "Account phone numbers are not authorized on this server", Codes.THREEPID_DENIED, ) await self.identity_handler.ratelimit_request_token_requests( request, "msisdn", msisdn ) if next_link: # Raise if the provided next_link value isn't valid assert_valid_next_link(self.hs, next_link) existing_user_id = await self.store.get_user_id_by_threepid("msisdn", msisdn) if existing_user_id is not None: if self.hs.config.server.request_token_inhibit_3pid_errors: # Make the client think the operation succeeded. See the rationale in the # comments for request_token_inhibit_3pid_errors. # Also wait for some random amount of time between 100ms and 1s to make it # look like we did something. await self.hs.get_clock().sleep(random.randint(1, 10) / 10) return 200, {"sid": random_string(16)} raise SynapseError(400, "MSISDN is already in use", Codes.THREEPID_IN_USE) if not self.hs.config.registration.account_threepid_delegate_msisdn: logger.warning( "No upstream msisdn account_threepid_delegate configured on the server to " "handle this request" ) raise SynapseError( 400, "Adding phone numbers to user account is not supported by this homeserver", ) ret = await self.identity_handler.requestMsisdnToken( self.hs.config.registration.account_threepid_delegate_msisdn, country, phone_number, client_secret, send_attempt, next_link, ) threepid_send_requests.labels(type="msisdn", reason="add_threepid").observe( send_attempt ) return 200, ret class AddThreepidEmailSubmitTokenServlet(RestServlet): """Handles 3PID validation token submission for adding an email to a user's account""" PATTERNS = client_patterns( "/add_threepid/email/submit_token$", releases=(), unstable=True ) def __init__(self, hs: "HomeServer"): super().__init__() self.config = hs.config self.clock = hs.get_clock() self.store = hs.get_datastore() if self.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: self._failure_email_template = ( self.config.email.email_add_threepid_template_failure_html ) async def on_GET(self, request: Request) -> None: if self.config.email.threepid_behaviour_email == ThreepidBehaviour.OFF: if self.config.email.local_threepid_handling_disabled_due_to_email_config: logger.warning( "Adding emails have been disabled due to lack of an email config" ) raise SynapseError( 400, "Adding an email to your account is disabled on this server" ) elif self.config.email.threepid_behaviour_email == ThreepidBehaviour.REMOTE: raise SynapseError( 400, "This homeserver is not validating threepids. Use an identity server " "instead.", ) sid = parse_string(request, "sid", required=True) token = parse_string(request, "token", required=True) client_secret = parse_string(request, "client_secret", required=True) assert_valid_client_secret(client_secret) # Attempt to validate a 3PID session try: # Mark the session as valid next_link = await self.store.validate_threepid_session( sid, client_secret, token, self.clock.time_msec() ) # Perform a 302 redirect if next_link is set if next_link: request.setResponseCode(302) request.setHeader("Location", next_link) finish_request(request) return None # Otherwise show the success template html = self.config.email.email_add_threepid_template_success_html_content status_code = 200 except ThreepidValidationError as e: status_code = e.code # Show a failure page with a reason template_vars = {"failure_reason": e.msg} html = self._failure_email_template.render(**template_vars) respond_with_html(request, status_code, html) class AddThreepidMsisdnSubmitTokenServlet(RestServlet): """Handles 3PID validation token submission for adding a phone number to a user's account """ PATTERNS = client_patterns( "/add_threepid/msisdn/submit_token$", releases=(), unstable=True ) def __init__(self, hs: "HomeServer"): super().__init__() self.config = hs.config self.clock = hs.get_clock() self.store = hs.get_datastore() self.identity_handler = hs.get_identity_handler() async def on_POST(self, request: Request) -> Tuple[int, JsonDict]: if not self.config.registration.account_threepid_delegate_msisdn: raise SynapseError( 400, "This homeserver is not validating phone numbers. Use an identity server " "instead.", ) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["client_secret", "sid", "token"]) assert_valid_client_secret(body["client_secret"]) # Proxy submit_token request to msisdn threepid delegate response = await self.identity_handler.proxy_msisdn_submit_token( self.config.registration.account_threepid_delegate_msisdn, body["client_secret"], body["sid"], body["token"], ) return 200, response class ThreepidRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.identity_handler = hs.get_identity_handler() self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() self.datastore = self.hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) threepids = await self.datastore.user_get_threepids(requester.user.to_string()) return 200, {"threepids": threepids} async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: if not self.hs.config.registration.enable_3pid_changes: raise SynapseError( 400, "3PID changes are disabled on this server", Codes.FORBIDDEN ) requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() body = parse_json_object_from_request(request) threepid_creds = body.get("threePidCreds") or body.get("three_pid_creds") if threepid_creds is None: raise SynapseError( 400, "Missing param three_pid_creds", Codes.MISSING_PARAM ) assert_params_in_dict(threepid_creds, ["client_secret", "sid"]) sid = threepid_creds["sid"] client_secret = threepid_creds["client_secret"] assert_valid_client_secret(client_secret) validation_session = await self.identity_handler.validate_threepid_session( client_secret, sid ) if validation_session: await self.auth_handler.add_threepid( user_id, validation_session["medium"], validation_session["address"], validation_session["validated_at"], ) return 200, {} raise SynapseError( 400, "No validated 3pid session found", Codes.THREEPID_AUTH_FAILED ) class ThreepidAddRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid/add$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.identity_handler = hs.get_identity_handler() self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() @interactive_auth_handler async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: if not self.hs.config.registration.enable_3pid_changes: raise SynapseError( 400, "3PID changes are disabled on this server", Codes.FORBIDDEN ) requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() body = parse_json_object_from_request(request) assert_params_in_dict(body, ["client_secret", "sid"]) sid = body["sid"] client_secret = body["client_secret"] assert_valid_client_secret(client_secret) await self.auth_handler.validate_user_via_ui_auth( requester, request, body, "add a third-party identifier to your account", ) validation_session = await self.identity_handler.validate_threepid_session( client_secret, sid ) if validation_session: await self.auth_handler.add_threepid( user_id, validation_session["medium"], validation_session["address"], validation_session["validated_at"], ) return 200, {} raise SynapseError( 400, "No validated 3pid session found", Codes.THREEPID_AUTH_FAILED ) class ThreepidBindRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid/bind$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.identity_handler = hs.get_identity_handler() self.auth = hs.get_auth() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: body = parse_json_object_from_request(request) assert_params_in_dict(body, ["id_server", "sid", "client_secret"]) id_server = body["id_server"] sid = body["sid"] id_access_token = body.get("id_access_token") # optional client_secret = body["client_secret"] assert_valid_client_secret(client_secret) requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() await self.identity_handler.bind_threepid( client_secret, sid, user_id, id_server, id_access_token ) return 200, {} class ThreepidUnbindRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid/unbind$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.identity_handler = hs.get_identity_handler() self.auth = hs.get_auth() self.datastore = self.hs.get_datastore() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: """Unbind the given 3pid from a specific identity server, or identity servers that are known to have this 3pid bound """ requester = await self.auth.get_user_by_req(request) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["medium", "address"]) medium = body.get("medium") address = body.get("address") id_server = body.get("id_server") # Attempt to unbind the threepid from an identity server. If id_server is None, try to # unbind from all identity servers this threepid has been added to in the past result = await self.identity_handler.try_unbind_threepid( requester.user.to_string(), {"address": address, "medium": medium, "id_server": id_server}, ) return 200, {"id_server_unbind_result": "success" if result else "no-support"} class ThreepidDeleteRestServlet(RestServlet): PATTERNS = client_patterns("/account/3pid/delete$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: if not self.hs.config.registration.enable_3pid_changes: raise SynapseError( 400, "3PID changes are disabled on this server", Codes.FORBIDDEN ) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["medium", "address"]) requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() try: ret = await self.auth_handler.delete_threepid( user_id, body["medium"], body["address"], body.get("id_server") ) except Exception: # NB. This endpoint should succeed if there is nothing to # delete, so it should only throw if something is wrong # that we ought to care about. logger.exception("Failed to remove threepid") raise SynapseError(500, "Failed to remove threepid") if ret: id_server_unbind_result = "success" else: id_server_unbind_result = "no-support" return 200, {"id_server_unbind_result": id_server_unbind_result} def assert_valid_next_link(hs: "HomeServer", next_link: str) -> None: """ Raises a SynapseError if a given next_link value is invalid next_link is valid if the scheme is http(s) and the next_link.domain_whitelist config option is either empty or contains a domain that matches the one in the given next_link Args: hs: The homeserver object next_link: The next_link value given by the client Raises: SynapseError: If the next_link is invalid """ valid = True # Parse the contents of the URL next_link_parsed = urlparse(next_link) # Scheme must not point to the local drive if next_link_parsed.scheme == "file": valid = False # If the domain whitelist is set, the domain must be in it if ( valid and hs.config.server.next_link_domain_whitelist is not None and next_link_parsed.hostname not in hs.config.server.next_link_domain_whitelist ): valid = False if not valid: raise SynapseError( 400, "'next_link' domain not included in whitelist, or not http(s)", errcode=Codes.INVALID_PARAM, ) class WhoamiRestServlet(RestServlet): PATTERNS = client_patterns("/account/whoami$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) response = { "user_id": requester.user.to_string(), # MSC: https://github.com/matrix-org/matrix-doc/pull/3069 "org.matrix.msc3069.is_guest": bool(requester.is_guest), } # Appservices and similar accounts do not have device IDs # that we can report on, so exclude them for compliance. if requester.device_id is not None: response["device_id"] = requester.device_id return 200, response def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: EmailPasswordRequestTokenRestServlet(hs).register(http_server) PasswordRestServlet(hs).register(http_server) DeactivateAccountRestServlet(hs).register(http_server) EmailThreepidRequestTokenRestServlet(hs).register(http_server) MsisdnThreepidRequestTokenRestServlet(hs).register(http_server) AddThreepidEmailSubmitTokenServlet(hs).register(http_server) AddThreepidMsisdnSubmitTokenServlet(hs).register(http_server) ThreepidRestServlet(hs).register(http_server) ThreepidAddRestServlet(hs).register(http_server) ThreepidBindRestServlet(hs).register(http_server) ThreepidUnbindRestServlet(hs).register(http_server) ThreepidDeleteRestServlet(hs).register(http_server) WhoamiRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/account_data.py000066400000000000000000000112311420514467300222020ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import AuthError, NotFoundError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AccountDataServlet(RestServlet): """ PUT /user/{user_id}/account_data/{account_dataType} HTTP/1.1 GET /user/{user_id}/account_data/{account_dataType} HTTP/1.1 """ PATTERNS = client_patterns( "/user/(?P[^/]*)/account_data/(?P[^/]*)" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.handler = hs.get_account_data_handler() async def on_PUT( self, request: SynapseRequest, user_id: str, account_data_type: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot add account data for other users.") body = parse_json_object_from_request(request) await self.handler.add_account_data_for_user(user_id, account_data_type, body) return 200, {} async def on_GET( self, request: SynapseRequest, user_id: str, account_data_type: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot get account data for other users.") event = await self.store.get_global_account_data_by_type_for_user( user_id, account_data_type ) if event is None: raise NotFoundError("Account data not found") return 200, event class RoomAccountDataServlet(RestServlet): """ PUT /user/{user_id}/rooms/{room_id}/account_data/{account_dataType} HTTP/1.1 GET /user/{user_id}/rooms/{room_id}/account_data/{account_dataType} HTTP/1.1 """ PATTERNS = client_patterns( "/user/(?P[^/]*)" "/rooms/(?P[^/]*)" "/account_data/(?P[^/]*)" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.handler = hs.get_account_data_handler() async def on_PUT( self, request: SynapseRequest, user_id: str, room_id: str, account_data_type: str, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot add account data for other users.") body = parse_json_object_from_request(request) if account_data_type == "m.fully_read": raise SynapseError( 405, "Cannot set m.fully_read through this API." " Use /rooms/!roomId:server.name/read_markers", ) await self.handler.add_account_data_to_room( user_id, room_id, account_data_type, body ) return 200, {} async def on_GET( self, request: SynapseRequest, user_id: str, room_id: str, account_data_type: str, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot get account data for other users.") event = await self.store.get_account_data_for_room_and_type( user_id, room_id, account_data_type ) if event is None: raise NotFoundError("Room account data not found") return 200, event def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: AccountDataServlet(hs).register(http_server) RoomAccountDataServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/account_validity.py000066400000000000000000000066711420514467300231320ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer, respond_with_html from synapse.http.servlet import RestServlet, parse_string from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AccountValidityRenewServlet(RestServlet): PATTERNS = client_patterns("/account_validity/renew$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.account_activity_handler = hs.get_account_validity_handler() self.auth = hs.get_auth() self.account_renewed_template = ( hs.config.account_validity.account_validity_account_renewed_template ) self.account_previously_renewed_template = ( hs.config.account_validity.account_validity_account_previously_renewed_template ) self.invalid_token_template = ( hs.config.account_validity.account_validity_invalid_token_template ) async def on_GET(self, request: Request) -> None: renewal_token = parse_string(request, "token", required=True) ( token_valid, token_stale, expiration_ts, ) = await self.account_activity_handler.renew_account(renewal_token) if token_valid: status_code = 200 response = self.account_renewed_template.render(expiration_ts=expiration_ts) elif token_stale: status_code = 200 response = self.account_previously_renewed_template.render( expiration_ts=expiration_ts ) else: status_code = 404 response = self.invalid_token_template.render(expiration_ts=expiration_ts) respond_with_html(request, status_code, response) class AccountValiditySendMailServlet(RestServlet): PATTERNS = client_patterns("/account_validity/send_mail$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.account_activity_handler = hs.get_account_validity_handler() self.auth = hs.get_auth() self.account_validity_renew_by_email_enabled = ( hs.config.account_validity.account_validity_renew_by_email_enabled ) async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_expired=True) user_id = requester.user.to_string() await self.account_activity_handler.send_renewal_email_to_user(user_id) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: AccountValidityRenewServlet(hs).register(http_server) AccountValiditySendMailServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/auth.py000066400000000000000000000157351420514467300205330ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING from twisted.web.server import Request from synapse.api.constants import LoginType from synapse.api.errors import LoginError, SynapseError from synapse.api.urls import CLIENT_API_PREFIX from synapse.http.server import HttpServer, respond_with_html from synapse.http.servlet import RestServlet, parse_string from synapse.http.site import SynapseRequest from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AuthRestServlet(RestServlet): """ Handles Client / Server API authentication in any situations where it cannot be handled in the normal flow (with requests to the same endpoint). Current use is for web fallback auth. """ PATTERNS = client_patterns(r"/auth/(?P[\w\.]*)/fallback/web") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() self.registration_handler = hs.get_registration_handler() self.recaptcha_template = hs.config.captcha.recaptcha_template self.terms_template = hs.config.consent.terms_template self.registration_token_template = ( hs.config.registration.registration_token_template ) self.success_template = hs.config.registration.fallback_success_template async def on_GET(self, request: SynapseRequest, stagetype: str) -> None: session = parse_string(request, "session") if not session: raise SynapseError(400, "No session supplied") if stagetype == LoginType.RECAPTCHA: html = self.recaptcha_template.render( session=session, myurl="%s/r0/auth/%s/fallback/web" % (CLIENT_API_PREFIX, LoginType.RECAPTCHA), sitekey=self.hs.config.captcha.recaptcha_public_key, ) elif stagetype == LoginType.TERMS: html = self.terms_template.render( session=session, terms_url="%s_matrix/consent?v=%s" % ( self.hs.config.server.public_baseurl, self.hs.config.consent.user_consent_version, ), myurl="%s/r0/auth/%s/fallback/web" % (CLIENT_API_PREFIX, LoginType.TERMS), ) elif stagetype == LoginType.SSO: # Display a confirmation page which prompts the user to # re-authenticate with their SSO provider. html = await self.auth_handler.start_sso_ui_auth(request, session) elif stagetype == LoginType.REGISTRATION_TOKEN: html = self.registration_token_template.render( session=session, myurl=f"{CLIENT_API_PREFIX}/r0/auth/{LoginType.REGISTRATION_TOKEN}/fallback/web", ) else: raise SynapseError(404, "Unknown auth stage type") # Render the HTML and return. respond_with_html(request, 200, html) return None async def on_POST(self, request: Request, stagetype: str) -> None: session = parse_string(request, "session") if not session: raise SynapseError(400, "No session supplied") if stagetype == LoginType.RECAPTCHA: response = parse_string(request, "g-recaptcha-response") if not response: raise SynapseError(400, "No captcha response supplied") authdict = {"response": response, "session": session} try: await self.auth_handler.add_oob_auth( LoginType.RECAPTCHA, authdict, request.getClientIP() ) except LoginError as e: # Authentication failed, let user try again html = self.recaptcha_template.render( session=session, myurl="%s/r0/auth/%s/fallback/web" % (CLIENT_API_PREFIX, LoginType.RECAPTCHA), sitekey=self.hs.config.captcha.recaptcha_public_key, error=e.msg, ) else: # No LoginError was raised, so authentication was successful html = self.success_template.render() elif stagetype == LoginType.TERMS: authdict = {"session": session} try: await self.auth_handler.add_oob_auth( LoginType.TERMS, authdict, request.getClientIP() ) except LoginError as e: # Authentication failed, let user try again html = self.terms_template.render( session=session, terms_url="%s_matrix/consent?v=%s" % ( self.hs.config.server.public_baseurl, self.hs.config.consent.user_consent_version, ), myurl="%s/r0/auth/%s/fallback/web" % (CLIENT_API_PREFIX, LoginType.TERMS), error=e.msg, ) else: # No LoginError was raised, so authentication was successful html = self.success_template.render() elif stagetype == LoginType.SSO: # The SSO fallback workflow should not post here, raise SynapseError(404, "Fallback SSO auth does not support POST requests.") elif stagetype == LoginType.REGISTRATION_TOKEN: token = parse_string(request, "token", required=True) authdict = {"session": session, "token": token} try: await self.auth_handler.add_oob_auth( LoginType.REGISTRATION_TOKEN, authdict, request.getClientIP() ) except LoginError as e: html = self.registration_token_template.render( session=session, myurl=f"{CLIENT_API_PREFIX}/r0/auth/{LoginType.REGISTRATION_TOKEN}/fallback/web", error=e.msg, ) else: html = self.success_template.render() else: raise SynapseError(404, "Unknown auth stage type") # Render the HTML and return. respond_with_html(request, 200, html) return None def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: AuthRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/capabilities.py000066400000000000000000000071501420514467300222130ustar00rootroot00000000000000# Copyright 2019 New Vector # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, MSC3244_CAPABILITIES from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class CapabilitiesRestServlet(RestServlet): """End point to expose the capabilities of the server.""" PATTERNS = client_patterns("/capabilities$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.config = hs.config self.auth = hs.get_auth() self.auth_handler = hs.get_auth_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) change_password = self.auth_handler.can_change_password() response: JsonDict = { "capabilities": { "m.room_versions": { "default": self.config.server.default_room_version.identifier, "available": { v.identifier: v.disposition for v in KNOWN_ROOM_VERSIONS.values() }, }, "m.change_password": {"enabled": change_password}, "m.set_displayname": { "enabled": self.config.registration.enable_set_displayname }, "m.set_avatar_url": { "enabled": self.config.registration.enable_set_avatar_url }, "m.3pid_changes": { "enabled": self.config.registration.enable_3pid_changes }, } } if self.config.experimental.msc3244_enabled: response["capabilities"]["m.room_versions"][ "org.matrix.msc3244.room_capabilities" ] = MSC3244_CAPABILITIES # Must be removed in later versions. # Is only included for migration. # Also the parts in `synapse/config/experimental.py`. if self.config.experimental.msc3283_enabled: response["capabilities"]["org.matrix.msc3283.set_displayname"] = { "enabled": self.config.registration.enable_set_displayname } response["capabilities"]["org.matrix.msc3283.set_avatar_url"] = { "enabled": self.config.registration.enable_set_avatar_url } response["capabilities"]["org.matrix.msc3283.3pid_changes"] = { "enabled": self.config.registration.enable_3pid_changes } if self.config.experimental.msc3440_enabled: response["capabilities"]["io.element.thread"] = {"enabled": True} return HTTPStatus.OK, response def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: CapabilitiesRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/devices.py000066400000000000000000000231771420514467300212130ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api import errors from synapse.api.errors import NotFoundError from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns, interactive_auth_handler from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DevicesRestServlet(RestServlet): PATTERNS = client_patterns("/devices$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) devices = await self.device_handler.get_devices_by_user( requester.user.to_string() ) return 200, {"devices": devices} class DeleteDevicesRestServlet(RestServlet): """ API for bulk deletion of devices. Accepts a JSON object with a devices key which lists the device_ids to delete. Requires user interactive auth. """ PATTERNS = client_patterns("/delete_devices") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() self.auth_handler = hs.get_auth_handler() @interactive_auth_handler async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) try: body = parse_json_object_from_request(request) except errors.SynapseError as e: if e.errcode == errors.Codes.NOT_JSON: # DELETE # deal with older clients which didn't pass a JSON dict # the same as those that pass an empty dict body = {} else: raise e assert_params_in_dict(body, ["devices"]) await self.auth_handler.validate_user_via_ui_auth( requester, request, body, "remove device(s) from your account", # Users might call this multiple times in a row while cleaning up # devices, allow a single UI auth session to be re-used. can_skip_ui_auth=True, ) await self.device_handler.delete_devices( requester.user.to_string(), body["devices"] ) return 200, {} class DeviceRestServlet(RestServlet): PATTERNS = client_patterns("/devices/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() self.auth_handler = hs.get_auth_handler() async def on_GET( self, request: SynapseRequest, device_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) device = await self.device_handler.get_device( requester.user.to_string(), device_id ) if device is None: raise NotFoundError("No device found") return 200, device @interactive_auth_handler async def on_DELETE( self, request: SynapseRequest, device_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) try: body = parse_json_object_from_request(request) except errors.SynapseError as e: if e.errcode == errors.Codes.NOT_JSON: # deal with older clients which didn't pass a JSON dict # the same as those that pass an empty dict body = {} else: raise await self.auth_handler.validate_user_via_ui_auth( requester, request, body, "remove a device from your account", # Users might call this multiple times in a row while cleaning up # devices, allow a single UI auth session to be re-used. can_skip_ui_auth=True, ) await self.device_handler.delete_device(requester.user.to_string(), device_id) return 200, {} async def on_PUT( self, request: SynapseRequest, device_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) body = parse_json_object_from_request(request) await self.device_handler.update_device( requester.user.to_string(), device_id, body ) return 200, {} class DehydratedDeviceServlet(RestServlet): """Retrieve or store a dehydrated device. GET /org.matrix.msc2697.v2/dehydrated_device HTTP/1.1 200 OK Content-Type: application/json { "device_id": "dehydrated_device_id", "device_data": { "algorithm": "org.matrix.msc2697.v1.dehydration.v1.olm", "account": "dehydrated_device" } } PUT /org.matrix.msc2697/dehydrated_device Content-Type: application/json { "device_data": { "algorithm": "org.matrix.msc2697.v1.dehydration.v1.olm", "account": "dehydrated_device" } } HTTP/1.1 200 OK Content-Type: application/json { "device_id": "dehydrated_device_id" } """ PATTERNS = client_patterns("/org.matrix.msc2697.v2/dehydrated_device", releases=()) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) dehydrated_device = await self.device_handler.get_dehydrated_device( requester.user.to_string() ) if dehydrated_device is not None: (device_id, device_data) = dehydrated_device result = {"device_id": device_id, "device_data": device_data} return 200, result else: raise errors.NotFoundError("No dehydrated device available") async def on_PUT(self, request: SynapseRequest) -> Tuple[int, JsonDict]: submission = parse_json_object_from_request(request) requester = await self.auth.get_user_by_req(request) if "device_data" not in submission: raise errors.SynapseError( 400, "device_data missing", errcode=errors.Codes.MISSING_PARAM, ) elif not isinstance(submission["device_data"], dict): raise errors.SynapseError( 400, "device_data must be an object", errcode=errors.Codes.INVALID_PARAM, ) device_id = await self.device_handler.store_dehydrated_device( requester.user.to_string(), submission["device_data"], submission.get("initial_device_display_name", None), ) return 200, {"device_id": device_id} class ClaimDehydratedDeviceServlet(RestServlet): """Claim a dehydrated device. POST /org.matrix.msc2697.v2/dehydrated_device/claim Content-Type: application/json { "device_id": "dehydrated_device_id" } HTTP/1.1 200 OK Content-Type: application/json { "success": true, } """ PATTERNS = client_patterns( "/org.matrix.msc2697.v2/dehydrated_device/claim", releases=() ) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) submission = parse_json_object_from_request(request) if "device_id" not in submission: raise errors.SynapseError( 400, "device_id missing", errcode=errors.Codes.MISSING_PARAM, ) elif not isinstance(submission["device_id"], str): raise errors.SynapseError( 400, "device_id must be a string", errcode=errors.Codes.INVALID_PARAM, ) result = await self.device_handler.rehydrate_device( requester.user.to_string(), self.auth.get_access_token_from_request(request), submission["device_id"], ) return 200, result def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: DeleteDevicesRestServlet(hs).register(http_server) DevicesRestServlet(hs).register(http_server) DeviceRestServlet(hs).register(http_server) DehydratedDeviceServlet(hs).register(http_server) ClaimDehydratedDeviceServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/directory.py000066400000000000000000000154201420514467300215650ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.api.errors import ( AuthError, Codes, InvalidClientCredentialsError, NotFoundError, SynapseError, ) from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.types import JsonDict, RoomAlias if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ClientDirectoryServer(hs).register(http_server) ClientDirectoryListServer(hs).register(http_server) ClientAppserviceDirectoryListServer(hs).register(http_server) class ClientDirectoryServer(RestServlet): PATTERNS = client_patterns("/directory/room/(?P[^/]*)$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.store = hs.get_datastore() self.directory_handler = hs.get_directory_handler() self.auth = hs.get_auth() async def on_GET(self, request: Request, room_alias: str) -> Tuple[int, JsonDict]: room_alias_obj = RoomAlias.from_string(room_alias) res = await self.directory_handler.get_association(room_alias_obj) return 200, res async def on_PUT( self, request: SynapseRequest, room_alias: str ) -> Tuple[int, JsonDict]: room_alias_obj = RoomAlias.from_string(room_alias) content = parse_json_object_from_request(request) if "room_id" not in content: raise SynapseError( 400, 'Missing params: ["room_id"]', errcode=Codes.BAD_JSON ) logger.debug("Got content: %s", content) logger.debug("Got room name: %s", room_alias_obj.to_string()) room_id = content["room_id"] servers = content["servers"] if "servers" in content else None logger.debug("Got room_id: %s", room_id) logger.debug("Got servers: %s", servers) # TODO(erikj): Check types. room = await self.store.get_room(room_id) if room is None: raise SynapseError(400, "Room does not exist") requester = await self.auth.get_user_by_req(request) await self.directory_handler.create_association( requester, room_alias_obj, room_id, servers ) return 200, {} async def on_DELETE( self, request: SynapseRequest, room_alias: str ) -> Tuple[int, JsonDict]: room_alias_obj = RoomAlias.from_string(room_alias) try: service = self.auth.get_appservice_by_req(request) await self.directory_handler.delete_appservice_association( service, room_alias_obj ) logger.info( "Application service at %s deleted alias %s", service.url, room_alias_obj.to_string(), ) return 200, {} except InvalidClientCredentialsError: # fallback to default user behaviour if they aren't an AS pass requester = await self.auth.get_user_by_req(request) user = requester.user await self.directory_handler.delete_association(requester, room_alias_obj) logger.info( "User %s deleted alias %s", user.to_string(), room_alias_obj.to_string() ) return 200, {} class ClientDirectoryListServer(RestServlet): PATTERNS = client_patterns("/directory/list/room/(?P[^/]*)$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.store = hs.get_datastore() self.directory_handler = hs.get_directory_handler() self.auth = hs.get_auth() async def on_GET(self, request: Request, room_id: str) -> Tuple[int, JsonDict]: room = await self.store.get_room(room_id) if room is None: raise NotFoundError("Unknown room") return 200, {"visibility": "public" if room["is_public"] else "private"} async def on_PUT( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) content = parse_json_object_from_request(request) visibility = content.get("visibility", "public") await self.directory_handler.edit_published_room_list( requester, room_id, visibility ) return 200, {} async def on_DELETE( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await self.directory_handler.edit_published_room_list( requester, room_id, "private" ) return 200, {} class ClientAppserviceDirectoryListServer(RestServlet): PATTERNS = client_patterns( "/directory/list/appservice/(?P[^/]*)/(?P[^/]*)$", v1=True ) def __init__(self, hs: "HomeServer"): super().__init__() self.store = hs.get_datastore() self.directory_handler = hs.get_directory_handler() self.auth = hs.get_auth() async def on_PUT( self, request: SynapseRequest, network_id: str, room_id: str ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) visibility = content.get("visibility", "public") return await self._edit(request, network_id, room_id, visibility) async def on_DELETE( self, request: SynapseRequest, network_id: str, room_id: str ) -> Tuple[int, JsonDict]: return await self._edit(request, network_id, room_id, "private") async def _edit( self, request: SynapseRequest, network_id: str, room_id: str, visibility: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if not requester.app_service: raise AuthError( 403, "Only appservices can edit the appservice published room list" ) await self.directory_handler.edit_published_appservice_room_list( requester.app_service.id, network_id, room_id, visibility ) return 200, {} synapse-1.53.0/synapse/rest/client/events.py000066400000000000000000000072421420514467300210700ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module contains REST servlets to do with event streaming, /events.""" import logging from typing import TYPE_CHECKING, Dict, List, Tuple, Union from synapse.api.errors import SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_string from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.streams.config import PaginationConfig from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EventStreamRestServlet(RestServlet): PATTERNS = client_patterns("/events$", v1=True) DEFAULT_LONGPOLL_TIME_MS = 30000 def __init__(self, hs: "HomeServer"): super().__init__() self.event_stream_handler = hs.get_event_stream_handler() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) is_guest = requester.is_guest args: Dict[bytes, List[bytes]] = request.args # type: ignore if is_guest: if b"room_id" not in args: raise SynapseError(400, "Guest users must specify room_id param") room_id = parse_string(request, "room_id") pagin_config = await PaginationConfig.from_request(self.store, request) timeout = EventStreamRestServlet.DEFAULT_LONGPOLL_TIME_MS if b"timeout" in args: try: timeout = int(args[b"timeout"][0]) except ValueError: raise SynapseError(400, "timeout must be in milliseconds.") as_client_event = b"raw" not in args chunk = await self.event_stream_handler.get_stream( requester.user.to_string(), pagin_config, timeout=timeout, as_client_event=as_client_event, affect_presence=(not is_guest), room_id=room_id, is_guest=is_guest, ) return 200, chunk class EventRestServlet(RestServlet): PATTERNS = client_patterns("/events/(?P[^/]*)$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.clock = hs.get_clock() self.event_handler = hs.get_event_handler() self.auth = hs.get_auth() self._event_serializer = hs.get_event_client_serializer() async def on_GET( self, request: SynapseRequest, event_id: str ) -> Tuple[int, Union[str, JsonDict]]: requester = await self.auth.get_user_by_req(request) event = await self.event_handler.get_event(requester.user, None, event_id) time_now = self.clock.time_msec() if event: result = self._event_serializer.serialize_event(event, time_now) return 200, result else: return 404, "Event not found." def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: EventStreamRestServlet(hs).register(http_server) EventRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/filter.py000066400000000000000000000070441420514467300210510ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import AuthError, NotFoundError, StoreError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict, UserID from ._base import client_patterns, set_timeline_upper_limit if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class GetFilterRestServlet(RestServlet): PATTERNS = client_patterns("/user/(?P[^/]*)/filter/(?P[^/]*)") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.filtering = hs.get_filtering() async def on_GET( self, request: SynapseRequest, user_id: str, filter_id: str ) -> Tuple[int, JsonDict]: target_user = UserID.from_string(user_id) requester = await self.auth.get_user_by_req(request) if target_user != requester.user: raise AuthError(403, "Cannot get filters for other users") if not self.hs.is_mine(target_user): raise AuthError(403, "Can only get filters for local users") try: filter_id_int = int(filter_id) except Exception: raise SynapseError(400, "Invalid filter_id") try: filter_collection = await self.filtering.get_user_filter( user_localpart=target_user.localpart, filter_id=filter_id_int ) except StoreError as e: if e.code != 404: raise raise NotFoundError("No such filter") return 200, filter_collection.get_filter_json() class CreateFilterRestServlet(RestServlet): PATTERNS = client_patterns("/user/(?P[^/]*)/filter") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.filtering = hs.get_filtering() async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: target_user = UserID.from_string(user_id) requester = await self.auth.get_user_by_req(request) if target_user != requester.user: raise AuthError(403, "Cannot create filters for other users") if not self.hs.is_mine(target_user): raise AuthError(403, "Can only create filters for local users") content = parse_json_object_from_request(request) set_timeline_upper_limit(content, self.hs.config.server.filter_timeline_limit) filter_id = await self.filtering.add_user_filter( user_localpart=target_user.localpart, user_filter=content ) return 200, {"filter_id": str(filter_id)} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: GetFilterRestServlet(hs).register(http_server) CreateFilterRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/groups.py000066400000000000000000000762411420514467300211100ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from functools import wraps from typing import TYPE_CHECKING, Any, Awaitable, Callable, Optional, Tuple from twisted.web.server import Request from synapse.api.constants import ( MAX_GROUP_CATEGORYID_LENGTH, MAX_GROUP_ROLEID_LENGTH, MAX_GROUPID_LENGTH, ) from synapse.api.errors import Codes, SynapseError from synapse.handlers.groups_local import GroupsLocalHandler from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.types import GroupID, JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) def _validate_group_id( f: Callable[..., Awaitable[Tuple[int, JsonDict]]] ) -> Callable[..., Awaitable[Tuple[int, JsonDict]]]: """Wrapper to validate the form of the group ID. Can be applied to any on_FOO methods that accepts a group ID as a URL parameter. """ @wraps(f) def wrapper( self: RestServlet, request: Request, group_id: str, *args: Any, **kwargs: Any ) -> Awaitable[Tuple[int, JsonDict]]: if not GroupID.is_valid(group_id): raise SynapseError(400, "%s is not a legal group ID" % (group_id,)) return f(self, request, group_id, *args, **kwargs) return wrapper class GroupServlet(RestServlet): """Get the group profile""" PATTERNS = client_patterns("/groups/(?P[^/]*)/profile$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() group_description = await self.groups_handler.get_group_profile( group_id, requester_user_id ) return 200, group_description @_validate_group_id async def on_POST( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert_params_in_dict( content, ("name", "avatar_url", "short_description", "long_description") ) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot create group profiles." await self.groups_handler.update_group_profile( group_id, requester_user_id, content ) return 200, {} class GroupSummaryServlet(RestServlet): """Get the full group summary""" PATTERNS = client_patterns("/groups/(?P[^/]*)/summary$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() get_group_summary = await self.groups_handler.get_group_summary( group_id, requester_user_id ) return 200, get_group_summary class GroupSummaryRoomsCatServlet(RestServlet): """Update/delete a rooms entry in the summary. Matches both: - /groups/:group/summary/rooms/:room_id - /groups/:group/summary/categories/:category/rooms/:room_id """ PATTERNS = client_patterns( "/groups/(?P[^/]*)/summary" "(/categories/(?P[^/]+))?" "/rooms/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, category_id: Optional[str], room_id: str, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() if category_id == "": raise SynapseError(400, "category_id cannot be empty", Codes.INVALID_PARAM) if category_id and len(category_id) > MAX_GROUP_CATEGORYID_LENGTH: raise SynapseError( 400, "category_id may not be longer than %s characters" % (MAX_GROUP_CATEGORYID_LENGTH,), Codes.INVALID_PARAM, ) content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group summaries." resp = await self.groups_handler.update_group_summary_room( group_id, requester_user_id, room_id=room_id, category_id=category_id, content=content, ) return 200, resp @_validate_group_id async def on_DELETE( self, request: SynapseRequest, group_id: str, category_id: str, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group profiles." resp = await self.groups_handler.delete_group_summary_room( group_id, requester_user_id, room_id=room_id, category_id=category_id ) return 200, resp class GroupCategoryServlet(RestServlet): """Get/add/update/delete a group category""" PATTERNS = client_patterns( "/groups/(?P[^/]*)/categories/(?P[^/]+)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str, category_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() category = await self.groups_handler.get_group_category( group_id, requester_user_id, category_id=category_id ) return 200, category @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, category_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() if not category_id: raise SynapseError(400, "category_id cannot be empty", Codes.INVALID_PARAM) if len(category_id) > MAX_GROUP_CATEGORYID_LENGTH: raise SynapseError( 400, "category_id may not be longer than %s characters" % (MAX_GROUP_CATEGORYID_LENGTH,), Codes.INVALID_PARAM, ) content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group categories." resp = await self.groups_handler.update_group_category( group_id, requester_user_id, category_id=category_id, content=content ) return 200, resp @_validate_group_id async def on_DELETE( self, request: SynapseRequest, group_id: str, category_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group categories." resp = await self.groups_handler.delete_group_category( group_id, requester_user_id, category_id=category_id ) return 200, resp class GroupCategoriesServlet(RestServlet): """Get all group categories""" PATTERNS = client_patterns("/groups/(?P[^/]*)/categories/$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() category = await self.groups_handler.get_group_categories( group_id, requester_user_id ) return 200, category class GroupRoleServlet(RestServlet): """Get/add/update/delete a group role""" PATTERNS = client_patterns("/groups/(?P[^/]*)/roles/(?P[^/]+)$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str, role_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() category = await self.groups_handler.get_group_role( group_id, requester_user_id, role_id=role_id ) return 200, category @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, role_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() if not role_id: raise SynapseError(400, "role_id cannot be empty", Codes.INVALID_PARAM) if len(role_id) > MAX_GROUP_ROLEID_LENGTH: raise SynapseError( 400, "role_id may not be longer than %s characters" % (MAX_GROUP_ROLEID_LENGTH,), Codes.INVALID_PARAM, ) content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group roles." resp = await self.groups_handler.update_group_role( group_id, requester_user_id, role_id=role_id, content=content ) return 200, resp @_validate_group_id async def on_DELETE( self, request: SynapseRequest, group_id: str, role_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group roles." resp = await self.groups_handler.delete_group_role( group_id, requester_user_id, role_id=role_id ) return 200, resp class GroupRolesServlet(RestServlet): """Get all group roles""" PATTERNS = client_patterns("/groups/(?P[^/]*)/roles/$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() category = await self.groups_handler.get_group_roles( group_id, requester_user_id ) return 200, category class GroupSummaryUsersRoleServlet(RestServlet): """Update/delete a user's entry in the summary. Matches both: - /groups/:group/summary/users/:room_id - /groups/:group/summary/roles/:role/users/:user_id """ PATTERNS = client_patterns( "/groups/(?P[^/]*)/summary" "(/roles/(?P[^/]+))?" "/users/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, role_id: Optional[str], user_id: str, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() if role_id == "": raise SynapseError(400, "role_id cannot be empty", Codes.INVALID_PARAM) if role_id and len(role_id) > MAX_GROUP_ROLEID_LENGTH: raise SynapseError( 400, "role_id may not be longer than %s characters" % (MAX_GROUP_ROLEID_LENGTH,), Codes.INVALID_PARAM, ) content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group summaries." resp = await self.groups_handler.update_group_summary_user( group_id, requester_user_id, user_id=user_id, role_id=role_id, content=content, ) return 200, resp @_validate_group_id async def on_DELETE( self, request: SynapseRequest, group_id: str, role_id: str, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group summaries." resp = await self.groups_handler.delete_group_summary_user( group_id, requester_user_id, user_id=user_id, role_id=role_id ) return 200, resp class GroupRoomServlet(RestServlet): """Get all rooms in a group""" PATTERNS = client_patterns("/groups/(?P[^/]*)/rooms$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() result = await self.groups_handler.get_rooms_in_group( group_id, requester_user_id ) return 200, result class GroupUsersServlet(RestServlet): """Get all users in a group""" PATTERNS = client_patterns("/groups/(?P[^/]*)/users$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() result = await self.groups_handler.get_users_in_group( group_id, requester_user_id ) return 200, result class GroupInvitedUsersServlet(RestServlet): """Get users invited to a group""" PATTERNS = client_patterns("/groups/(?P[^/]*)/invited_users$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_GET( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() result = await self.groups_handler.get_invited_users_in_group( group_id, requester_user_id ) return 200, result class GroupSettingJoinPolicyServlet(RestServlet): """Set group join policy""" PATTERNS = client_patterns("/groups/(?P[^/]*)/settings/m.join_policy$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group join policy." result = await self.groups_handler.set_group_join_policy( group_id, requester_user_id, content ) return 200, result class GroupCreateServlet(RestServlet): """Create a group""" PATTERNS = client_patterns("/create_group$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() self.server_name = hs.hostname async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() # TODO: Create group on remote server content = parse_json_object_from_request(request) localpart = content.pop("localpart") group_id = GroupID(localpart, self.server_name).to_string() if not localpart: raise SynapseError(400, "Group ID cannot be empty", Codes.INVALID_PARAM) if len(group_id) > MAX_GROUPID_LENGTH: raise SynapseError( 400, "Group ID may not be longer than %s characters" % (MAX_GROUPID_LENGTH,), Codes.INVALID_PARAM, ) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot create groups." result = await self.groups_handler.create_group( group_id, requester_user_id, content ) return 200, result class GroupAdminRoomsServlet(RestServlet): """Add a room to the group""" PATTERNS = client_patterns( "/groups/(?P[^/]*)/admin/rooms/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify rooms in a group." result = await self.groups_handler.add_room_to_group( group_id, requester_user_id, room_id, content ) return 200, result @_validate_group_id async def on_DELETE( self, request: SynapseRequest, group_id: str, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group categories." result = await self.groups_handler.remove_room_from_group( group_id, requester_user_id, room_id ) return 200, result class GroupAdminRoomsConfigServlet(RestServlet): """Update the config of a room in a group""" PATTERNS = client_patterns( "/groups/(?P[^/]*)/admin/rooms/(?P[^/]*)" "/config/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, room_id: str, config_key: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot modify group categories." result = await self.groups_handler.update_room_in_group( group_id, requester_user_id, room_id, config_key, content ) return 200, result class GroupAdminUsersInviteServlet(RestServlet): """Invite a user to the group""" PATTERNS = client_patterns( "/groups/(?P[^/]*)/admin/users/invite/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() self.store = hs.get_datastore() self.is_mine_id = hs.is_mine_id @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) config = content.get("config", {}) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot invite users to a group." result = await self.groups_handler.invite( group_id, user_id, requester_user_id, config ) return 200, result class GroupAdminUsersKickServlet(RestServlet): """Kick a user from the group""" PATTERNS = client_patterns( "/groups/(?P[^/]*)/admin/users/remove/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot kick users from a group." result = await self.groups_handler.remove_user_from_group( group_id, user_id, requester_user_id, content ) return 200, result class GroupSelfLeaveServlet(RestServlet): """Leave a joined group""" PATTERNS = client_patterns("/groups/(?P[^/]*)/self/leave$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot leave a group for a users." result = await self.groups_handler.remove_user_from_group( group_id, requester_user_id, requester_user_id, content ) return 200, result class GroupSelfJoinServlet(RestServlet): """Attempt to join a group, or knock""" PATTERNS = client_patterns("/groups/(?P[^/]*)/self/join$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot join a user to a group." result = await self.groups_handler.join_group( group_id, requester_user_id, content ) return 200, result class GroupSelfAcceptInviteServlet(RestServlet): """Accept a group invite""" PATTERNS = client_patterns("/groups/(?P[^/]*)/self/accept_invite$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) assert isinstance( self.groups_handler, GroupsLocalHandler ), "Workers cannot accept an invite to a group." result = await self.groups_handler.accept_invite( group_id, requester_user_id, content ) return 200, result class GroupSelfUpdatePublicityServlet(RestServlet): """Update whether we publicise a users membership of a group""" PATTERNS = client_patterns("/groups/(?P[^/]*)/self/update_publicity$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.store = hs.get_datastore() @_validate_group_id async def on_PUT( self, request: SynapseRequest, group_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) requester_user_id = requester.user.to_string() content = parse_json_object_from_request(request) publicise = content["publicise"] await self.store.update_group_publicity(group_id, requester_user_id, publicise) return 200, {} class PublicisedGroupsForUserServlet(RestServlet): """Get the list of groups a user is advertising""" PATTERNS = client_patterns("/publicised_groups/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.store = hs.get_datastore() self.groups_handler = hs.get_groups_local_handler() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) result = await self.groups_handler.get_publicised_groups_for_user(user_id) return 200, result class PublicisedGroupsForUsersServlet(RestServlet): """Get the list of groups a user is advertising""" PATTERNS = client_patterns("/publicised_groups$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.store = hs.get_datastore() self.groups_handler = hs.get_groups_local_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) content = parse_json_object_from_request(request) user_ids = content["user_ids"] result = await self.groups_handler.bulk_get_publicised_groups(user_ids) return 200, result class GroupsForUserServlet(RestServlet): """Get all groups the logged in user is joined to""" PATTERNS = client_patterns("/joined_groups$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.clock = hs.get_clock() self.groups_handler = hs.get_groups_local_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) requester_user_id = requester.user.to_string() result = await self.groups_handler.get_joined_groups(requester_user_id) return 200, result def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: GroupServlet(hs).register(http_server) GroupSummaryServlet(hs).register(http_server) GroupInvitedUsersServlet(hs).register(http_server) GroupUsersServlet(hs).register(http_server) GroupRoomServlet(hs).register(http_server) GroupSettingJoinPolicyServlet(hs).register(http_server) GroupCreateServlet(hs).register(http_server) GroupAdminRoomsServlet(hs).register(http_server) GroupAdminRoomsConfigServlet(hs).register(http_server) GroupAdminUsersInviteServlet(hs).register(http_server) GroupAdminUsersKickServlet(hs).register(http_server) GroupSelfLeaveServlet(hs).register(http_server) GroupSelfJoinServlet(hs).register(http_server) GroupSelfAcceptInviteServlet(hs).register(http_server) GroupsForUserServlet(hs).register(http_server) GroupCategoryServlet(hs).register(http_server) GroupCategoriesServlet(hs).register(http_server) GroupSummaryRoomsCatServlet(hs).register(http_server) GroupRoleServlet(hs).register(http_server) GroupRolesServlet(hs).register(http_server) GroupSelfUpdatePublicityServlet(hs).register(http_server) GroupSummaryUsersRoleServlet(hs).register(http_server) PublicisedGroupsForUserServlet(hs).register(http_server) PublicisedGroupsForUsersServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/initial_sync.py000066400000000000000000000041641420514467300222510ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, Dict, List, Tuple from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_boolean from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.streams.config import PaginationConfig from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer # TODO: Needs unit testing class InitialSyncRestServlet(RestServlet): PATTERNS = client_patterns("/initialSync$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.initial_sync_handler = hs.get_initial_sync_handler() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) args: Dict[bytes, List[bytes]] = request.args # type: ignore as_client_event = b"raw" not in args pagination_config = await PaginationConfig.from_request(self.store, request) include_archived = parse_boolean(request, "archived", default=False) content = await self.initial_sync_handler.snapshot_all_rooms( user_id=requester.user.to_string(), pagin_config=pagination_config, as_client_event=as_client_event, include_archived=include_archived, ) return 200, content def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: InitialSyncRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/keys.py000066400000000000000000000263201420514467300205350ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # Copyright 2019 New Vector Ltd # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Any, Optional, Tuple from synapse.api.errors import InvalidAPICallError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, parse_integer, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.logging.opentracing import log_kv, set_tag, trace from synapse.types import JsonDict, StreamToken from ._base import client_patterns, interactive_auth_handler if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class KeyUploadServlet(RestServlet): """ POST /keys/upload HTTP/1.1 Content-Type: application/json { "device_keys": { "user_id": "", "device_id": "", "valid_until_ts": , "algorithms": [ "m.olm.curve25519-aes-sha2", ] "keys": { ":": "", }, "signatures:" { "" { ":": "" } } }, "one_time_keys": { ":": "" }, } """ PATTERNS = client_patterns("/keys/upload(/(?P[^/]+))?$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_keys_handler = hs.get_e2e_keys_handler() self.device_handler = hs.get_device_handler() @trace(opname="upload_keys") async def on_POST( self, request: SynapseRequest, device_id: Optional[str] ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) user_id = requester.user.to_string() body = parse_json_object_from_request(request) if device_id is not None: # Providing the device_id should only be done for setting keys # for dehydrated devices; however, we allow it for any device for # compatibility with older clients. if requester.device_id is not None and device_id != requester.device_id: dehydrated_device = await self.device_handler.get_dehydrated_device( user_id ) if dehydrated_device is not None and device_id != dehydrated_device[0]: set_tag("error", True) log_kv( { "message": "Client uploading keys for a different device", "logged_in_id": requester.device_id, "key_being_uploaded": device_id, } ) logger.warning( "Client uploading keys for a different device " "(logged in as %s, uploading for %s)", requester.device_id, device_id, ) else: device_id = requester.device_id if device_id is None: raise SynapseError( 400, "To upload keys, you must pass device_id when authenticating" ) result = await self.e2e_keys_handler.upload_keys_for_user( user_id, device_id, body ) return 200, result class KeyQueryServlet(RestServlet): """ POST /keys/query HTTP/1.1 Content-Type: application/json { "device_keys": { "": [""] } } HTTP/1.1 200 OK { "device_keys": { "": { "": { "user_id": "", // Duplicated to be signed "device_id": "", // Duplicated to be signed "valid_until_ts": , "algorithms": [ // List of supported algorithms "m.olm.curve25519-aes-sha2", ], "keys": { // Must include a ed25519 signing key ":": "", }, "signatures:" { // Must be signed with device's ed25519 key "/": { ":": "" } // Must be signed by this server. "": { ":": "" } } } } } } """ PATTERNS = client_patterns("/keys/query$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_keys_handler = hs.get_e2e_keys_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) user_id = requester.user.to_string() device_id = requester.device_id timeout = parse_integer(request, "timeout", 10 * 1000) body = parse_json_object_from_request(request) device_keys = body.get("device_keys") if not isinstance(device_keys, dict): raise InvalidAPICallError("'device_keys' must be a JSON object") def is_list_of_strings(values: Any) -> bool: return isinstance(values, list) and all(isinstance(v, str) for v in values) if any(not is_list_of_strings(keys) for keys in device_keys.values()): raise InvalidAPICallError( "'device_keys' values must be a list of strings", ) result = await self.e2e_keys_handler.query_devices( body, timeout, user_id, device_id ) return 200, result class KeyChangesServlet(RestServlet): """Returns the list of changes of keys between two stream tokens (may return spurious extra results, since we currently ignore the `to` param). GET /keys/changes?from=...&to=... 200 OK { "changed": ["@foo:example.com"] } """ PATTERNS = client_patterns("/keys/changes$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.device_handler = hs.get_device_handler() self.store = hs.get_datastore() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) from_token_string = parse_string(request, "from", required=True) set_tag("from", from_token_string) # We want to enforce they do pass us one, but we ignore it and return # changes after the "to" as well as before. set_tag("to", parse_string(request, "to")) from_token = await StreamToken.from_string(self.store, from_token_string) user_id = requester.user.to_string() results = await self.device_handler.get_user_ids_changed(user_id, from_token) return 200, results class OneTimeKeyServlet(RestServlet): """ POST /keys/claim HTTP/1.1 { "one_time_keys": { "": { "": "" } } } HTTP/1.1 200 OK { "one_time_keys": { "": { "": { ":": "" } } } } """ PATTERNS = client_patterns("/keys/claim$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_keys_handler = hs.get_e2e_keys_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) timeout = parse_integer(request, "timeout", 10 * 1000) body = parse_json_object_from_request(request) result = await self.e2e_keys_handler.claim_one_time_keys(body, timeout) return 200, result class SigningKeyUploadServlet(RestServlet): """ POST /keys/device_signing/upload HTTP/1.1 Content-Type: application/json { } """ PATTERNS = client_patterns("/keys/device_signing/upload$", releases=("v3",)) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.e2e_keys_handler = hs.get_e2e_keys_handler() self.auth_handler = hs.get_auth_handler() @interactive_auth_handler async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() body = parse_json_object_from_request(request) await self.auth_handler.validate_user_via_ui_auth( requester, request, body, "add a device signing key to your account", # Allow skipping of UI auth since this is frequently called directly # after login and it is silly to ask users to re-auth immediately. can_skip_ui_auth=True, ) result = await self.e2e_keys_handler.upload_signing_keys_for_user(user_id, body) return 200, result class SignaturesUploadServlet(RestServlet): """ POST /keys/signatures/upload HTTP/1.1 Content-Type: application/json { "@alice:example.com": { "": { "user_id": "", "device_id": "", "algorithms": [ "m.olm.curve25519-aes-sha2", "m.megolm.v1.aes-sha2" ], "keys": { ":": "", }, "signatures": { "": { ":": ">" } } } } } """ PATTERNS = client_patterns("/keys/signatures/upload$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_keys_handler = hs.get_e2e_keys_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) user_id = requester.user.to_string() body = parse_json_object_from_request(request) result = await self.e2e_keys_handler.upload_signatures_for_device_keys( user_id, body ) return 200, result def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: KeyUploadServlet(hs).register(http_server) KeyQueryServlet(hs).register(http_server) KeyChangesServlet(hs).register(http_server) OneTimeKeyServlet(hs).register(http_server) SigningKeyUploadServlet(hs).register(http_server) SignaturesUploadServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/knock.py000066400000000000000000000072571420514467300206770ustar00rootroot00000000000000# Copyright 2020 Sorunome # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Awaitable, Dict, List, Optional, Tuple from twisted.web.server import Request from synapse.api.constants import Membership from synapse.api.errors import SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, parse_json_object_from_request, parse_strings_from_args, ) from synapse.http.site import SynapseRequest from synapse.logging.opentracing import set_tag from synapse.rest.client.transactions import HttpTransactionCache from synapse.types import JsonDict, RoomAlias, RoomID if TYPE_CHECKING: from synapse.app.homeserver import HomeServer from ._base import client_patterns logger = logging.getLogger(__name__) class KnockRoomAliasServlet(RestServlet): """ POST /knock/{roomIdOrAlias} """ PATTERNS = client_patterns("/knock/(?P[^/]*)") def __init__(self, hs: "HomeServer"): super().__init__() self.txns = HttpTransactionCache(hs) self.room_member_handler = hs.get_room_member_handler() self.auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, room_identifier: str, txn_id: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) content = parse_json_object_from_request(request) event_content = None if "reason" in content: event_content = {"reason": content["reason"]} if RoomID.is_valid(room_identifier): room_id = room_identifier # twisted.web.server.Request.args is incorrectly defined as Optional[Any] args: Dict[bytes, List[bytes]] = request.args # type: ignore remote_room_hosts = parse_strings_from_args( args, "server_name", required=False ) elif RoomAlias.is_valid(room_identifier): handler = self.room_member_handler room_alias = RoomAlias.from_string(room_identifier) room_id_obj, remote_room_hosts = await handler.lookup_room_alias(room_alias) room_id = room_id_obj.to_string() else: raise SynapseError( 400, "%s was not legal room ID or room alias" % (room_identifier,) ) await self.room_member_handler.update_membership( requester=requester, target=requester.user, room_id=room_id, action=Membership.KNOCK, txn_id=txn_id, third_party_signed=None, remote_room_hosts=remote_room_hosts, content=event_content, ) return 200, {"room_id": room_id} def on_PUT( self, request: Request, room_identifier: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_identifier, txn_id ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: KnockRoomAliasServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/login.py000066400000000000000000000553671420514467300207070ustar00rootroot00000000000000# Copyright 2014-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, List, Optional, Tuple, Union, ) from typing_extensions import TypedDict from synapse.api.errors import Codes, LoginError, SynapseError from synapse.api.ratelimiting import Ratelimiter from synapse.api.urls import CLIENT_API_PREFIX from synapse.appservice import ApplicationService from synapse.handlers.sso import SsoIdentityProvider from synapse.http import get_request_uri from synapse.http.server import HttpServer, finish_request from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_bytes_from_args, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.rest.well_known import WellKnownBuilder from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class LoginResponse(TypedDict, total=False): user_id: str access_token: str home_server: str expires_in_ms: Optional[int] refresh_token: Optional[str] device_id: str well_known: Optional[Dict[str, Any]] class LoginRestServlet(RestServlet): PATTERNS = client_patterns("/login$", v1=True) CAS_TYPE = "m.login.cas" SSO_TYPE = "m.login.sso" TOKEN_TYPE = "m.login.token" JWT_TYPE = "org.matrix.login.jwt" JWT_TYPE_DEPRECATED = "m.login.jwt" APPSERVICE_TYPE = "m.login.application_service" APPSERVICE_TYPE_UNSTABLE = "uk.half-shot.msc2778.login.application_service" REFRESH_TOKEN_PARAM = "refresh_token" def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs # JWT configuration variables. self.jwt_enabled = hs.config.jwt.jwt_enabled self.jwt_secret = hs.config.jwt.jwt_secret self.jwt_subject_claim = hs.config.jwt.jwt_subject_claim self.jwt_algorithm = hs.config.jwt.jwt_algorithm self.jwt_issuer = hs.config.jwt.jwt_issuer self.jwt_audiences = hs.config.jwt.jwt_audiences # SSO configuration. self.saml2_enabled = hs.config.saml2.saml2_enabled self.cas_enabled = hs.config.cas.cas_enabled self.oidc_enabled = hs.config.oidc.oidc_enabled self._refresh_tokens_enabled = ( hs.config.registration.refreshable_access_token_lifetime is not None ) self.auth = hs.get_auth() self.clock = hs.get_clock() self.auth_handler = self.hs.get_auth_handler() self.registration_handler = hs.get_registration_handler() self._sso_handler = hs.get_sso_handler() self._well_known_builder = WellKnownBuilder(hs) self._address_ratelimiter = Ratelimiter( store=hs.get_datastore(), clock=hs.get_clock(), rate_hz=self.hs.config.ratelimiting.rc_login_address.per_second, burst_count=self.hs.config.ratelimiting.rc_login_address.burst_count, ) self._account_ratelimiter = Ratelimiter( store=hs.get_datastore(), clock=hs.get_clock(), rate_hz=self.hs.config.ratelimiting.rc_login_account.per_second, burst_count=self.hs.config.ratelimiting.rc_login_account.burst_count, ) # ensure the CAS/SAML/OIDC handlers are loaded on this worker instance. # The reason for this is to ensure that the auth_provider_ids are registered # with SsoHandler, which in turn ensures that the login/registration prometheus # counters are initialised for the auth_provider_ids. _load_sso_handlers(hs) def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: flows: List[JsonDict] = [] if self.jwt_enabled: flows.append({"type": LoginRestServlet.JWT_TYPE}) flows.append({"type": LoginRestServlet.JWT_TYPE_DEPRECATED}) if self.cas_enabled: # we advertise CAS for backwards compat, though MSC1721 renamed it # to SSO. flows.append({"type": LoginRestServlet.CAS_TYPE}) if self.cas_enabled or self.saml2_enabled or self.oidc_enabled: flows.append( { "type": LoginRestServlet.SSO_TYPE, "identity_providers": [ _get_auth_flow_dict_for_idp(idp) for idp in self._sso_handler.get_identity_providers().values() ], } ) # While it's valid for us to advertise this login type generally, # synapse currently only gives out these tokens as part of the # SSO login flow. # Generally we don't want to advertise login flows that clients # don't know how to implement, since they (currently) will always # fall back to the fallback API if they don't understand one of the # login flow types returned. flows.append({"type": LoginRestServlet.TOKEN_TYPE}) flows.extend({"type": t} for t in self.auth_handler.get_supported_login_types()) flows.append({"type": LoginRestServlet.APPSERVICE_TYPE}) flows.append({"type": LoginRestServlet.APPSERVICE_TYPE_UNSTABLE}) return 200, {"flows": flows} async def on_POST(self, request: SynapseRequest) -> Tuple[int, LoginResponse]: login_submission = parse_json_object_from_request(request) # Check to see if the client requested a refresh token. client_requested_refresh_token = login_submission.get( LoginRestServlet.REFRESH_TOKEN_PARAM, False ) if not isinstance(client_requested_refresh_token, bool): raise SynapseError(400, "`refresh_token` should be true or false.") should_issue_refresh_token = ( self._refresh_tokens_enabled and client_requested_refresh_token ) try: if login_submission["type"] in ( LoginRestServlet.APPSERVICE_TYPE, LoginRestServlet.APPSERVICE_TYPE_UNSTABLE, ): appservice = self.auth.get_appservice_by_req(request) if appservice.is_rate_limited(): await self._address_ratelimiter.ratelimit( None, request.getClientIP() ) result = await self._do_appservice_login( login_submission, appservice, should_issue_refresh_token=should_issue_refresh_token, ) elif self.jwt_enabled and ( login_submission["type"] == LoginRestServlet.JWT_TYPE or login_submission["type"] == LoginRestServlet.JWT_TYPE_DEPRECATED ): await self._address_ratelimiter.ratelimit(None, request.getClientIP()) result = await self._do_jwt_login( login_submission, should_issue_refresh_token=should_issue_refresh_token, ) elif login_submission["type"] == LoginRestServlet.TOKEN_TYPE: await self._address_ratelimiter.ratelimit(None, request.getClientIP()) result = await self._do_token_login( login_submission, should_issue_refresh_token=should_issue_refresh_token, ) else: await self._address_ratelimiter.ratelimit(None, request.getClientIP()) result = await self._do_other_login( login_submission, should_issue_refresh_token=should_issue_refresh_token, ) except KeyError: raise SynapseError(400, "Missing JSON keys.") well_known_data = self._well_known_builder.get_well_known() if well_known_data: result["well_known"] = well_known_data return 200, result async def _do_appservice_login( self, login_submission: JsonDict, appservice: ApplicationService, should_issue_refresh_token: bool = False, ) -> LoginResponse: identifier = login_submission.get("identifier") logger.info("Got appservice login request with identifier: %r", identifier) if not isinstance(identifier, dict): raise SynapseError( 400, "Invalid identifier in login submission", Codes.INVALID_PARAM ) # this login flow only supports identifiers of type "m.id.user". if identifier.get("type") != "m.id.user": raise SynapseError( 400, "Unknown login identifier type", Codes.INVALID_PARAM ) user = identifier.get("user") if not isinstance(user, str): raise SynapseError(400, "Invalid user in identifier", Codes.INVALID_PARAM) if user.startswith("@"): qualified_user_id = user else: qualified_user_id = UserID(user, self.hs.hostname).to_string() if not appservice.is_interested_in_user(qualified_user_id): raise LoginError(403, "Invalid access_token", errcode=Codes.FORBIDDEN) return await self._complete_login( qualified_user_id, login_submission, ratelimit=appservice.is_rate_limited(), should_issue_refresh_token=should_issue_refresh_token, ) async def _do_other_login( self, login_submission: JsonDict, should_issue_refresh_token: bool = False ) -> LoginResponse: """Handle non-token/saml/jwt logins Args: login_submission: should_issue_refresh_token: True if this login should issue a refresh token alongside the access token. Returns: HTTP response """ # Log the request we got, but only certain fields to minimise the chance of # logging someone's password (even if they accidentally put it in the wrong # field) logger.info( "Got login request with identifier: %r, medium: %r, address: %r, user: %r", login_submission.get("identifier"), login_submission.get("medium"), login_submission.get("address"), login_submission.get("user"), ) canonical_user_id, callback = await self.auth_handler.validate_login( login_submission, ratelimit=True ) result = await self._complete_login( canonical_user_id, login_submission, callback, should_issue_refresh_token=should_issue_refresh_token, ) return result async def _complete_login( self, user_id: str, login_submission: JsonDict, callback: Optional[Callable[[LoginResponse], Awaitable[None]]] = None, create_non_existent_users: bool = False, ratelimit: bool = True, auth_provider_id: Optional[str] = None, should_issue_refresh_token: bool = False, auth_provider_session_id: Optional[str] = None, ) -> LoginResponse: """Called when we've successfully authed the user and now need to actually login them in (e.g. create devices). This gets called on all successful logins. Applies the ratelimiting for successful login attempts against an account. Args: user_id: ID of the user to register. login_submission: Dictionary of login information. callback: Callback function to run after login. create_non_existent_users: Whether to create the user if they don't exist. Defaults to False. ratelimit: Whether to ratelimit the login request. auth_provider_id: The SSO IdP the user used, if any. should_issue_refresh_token: True if this login should issue a refresh token alongside the access token. auth_provider_session_id: The session ID got during login from the SSO IdP. Returns: result: Dictionary of account information after successful login. """ # Before we actually log them in we check if they've already logged in # too often. This happens here rather than before as we don't # necessarily know the user before now. if ratelimit: await self._account_ratelimiter.ratelimit(None, user_id.lower()) if create_non_existent_users: canonical_uid = await self.auth_handler.check_user_exists(user_id) if not canonical_uid: canonical_uid = await self.registration_handler.register_user( localpart=UserID.from_string(user_id).localpart ) user_id = canonical_uid device_id = login_submission.get("device_id") initial_display_name = login_submission.get("initial_device_display_name") ( device_id, access_token, valid_until_ms, refresh_token, ) = await self.registration_handler.register_device( user_id, device_id, initial_display_name, auth_provider_id=auth_provider_id, should_issue_refresh_token=should_issue_refresh_token, auth_provider_session_id=auth_provider_session_id, ) result = LoginResponse( user_id=user_id, access_token=access_token, home_server=self.hs.hostname, device_id=device_id, ) if valid_until_ms is not None: expires_in_ms = valid_until_ms - self.clock.time_msec() result["expires_in_ms"] = expires_in_ms if refresh_token is not None: result["refresh_token"] = refresh_token if callback is not None: await callback(result) return result async def _do_token_login( self, login_submission: JsonDict, should_issue_refresh_token: bool = False ) -> LoginResponse: """ Handle the final stage of SSO login. Args: login_submission: The JSON request body. should_issue_refresh_token: True if this login should issue a refresh token alongside the access token. Returns: The body of the JSON response. """ token = login_submission["token"] auth_handler = self.auth_handler res = await auth_handler.validate_short_term_login_token(token) return await self._complete_login( res.user_id, login_submission, self.auth_handler._sso_login_callback, auth_provider_id=res.auth_provider_id, should_issue_refresh_token=should_issue_refresh_token, auth_provider_session_id=res.auth_provider_session_id, ) async def _do_jwt_login( self, login_submission: JsonDict, should_issue_refresh_token: bool = False ) -> LoginResponse: token = login_submission.get("token", None) if token is None: raise LoginError( 403, "Token field for JWT is missing", errcode=Codes.FORBIDDEN ) import jwt try: payload = jwt.decode( token, self.jwt_secret, algorithms=[self.jwt_algorithm], issuer=self.jwt_issuer, audience=self.jwt_audiences, ) except jwt.PyJWTError as e: # A JWT error occurred, return some info back to the client. raise LoginError( 403, "JWT validation failed: %s" % (str(e),), errcode=Codes.FORBIDDEN, ) user = payload.get(self.jwt_subject_claim, None) if user is None: raise LoginError(403, "Invalid JWT", errcode=Codes.FORBIDDEN) user_id = UserID(user, self.hs.hostname).to_string() result = await self._complete_login( user_id, login_submission, create_non_existent_users=True, should_issue_refresh_token=should_issue_refresh_token, ) return result def _get_auth_flow_dict_for_idp(idp: SsoIdentityProvider) -> JsonDict: """Return an entry for the login flow dict Returns an entry suitable for inclusion in "identity_providers" in the response to GET /_matrix/client/r0/login Args: idp: the identity provider to describe """ e: JsonDict = {"id": idp.idp_id, "name": idp.idp_name} if idp.idp_icon: e["icon"] = idp.idp_icon if idp.idp_brand: e["brand"] = idp.idp_brand return e class RefreshTokenServlet(RestServlet): PATTERNS = (re.compile("^/_matrix/client/v1/refresh$"),) def __init__(self, hs: "HomeServer"): self._auth_handler = hs.get_auth_handler() self._clock = hs.get_clock() self.refreshable_access_token_lifetime = ( hs.config.registration.refreshable_access_token_lifetime ) self.refresh_token_lifetime = hs.config.registration.refresh_token_lifetime async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: refresh_submission = parse_json_object_from_request(request) assert_params_in_dict(refresh_submission, ["refresh_token"]) token = refresh_submission["refresh_token"] if not isinstance(token, str): raise SynapseError(400, "Invalid param: refresh_token", Codes.INVALID_PARAM) now = self._clock.time_msec() access_valid_until_ms = None if self.refreshable_access_token_lifetime is not None: access_valid_until_ms = now + self.refreshable_access_token_lifetime refresh_valid_until_ms = None if self.refresh_token_lifetime is not None: refresh_valid_until_ms = now + self.refresh_token_lifetime ( access_token, refresh_token, actual_access_token_expiry, ) = await self._auth_handler.refresh_token( token, access_valid_until_ms, refresh_valid_until_ms ) response: Dict[str, Union[str, int]] = { "access_token": access_token, "refresh_token": refresh_token, } # expires_in_ms is only present if the token expires if actual_access_token_expiry is not None: response["expires_in_ms"] = actual_access_token_expiry - now return 200, response class SsoRedirectServlet(RestServlet): PATTERNS = list(client_patterns("/login/(cas|sso)/redirect$", v1=True)) + [ re.compile( "^" + CLIENT_API_PREFIX + "/(r0|v3)/login/sso/redirect/(?P[A-Za-z0-9_.~-]+)$" ) ] def __init__(self, hs: "HomeServer"): # make sure that the relevant handlers are instantiated, so that they # register themselves with the main SSOHandler. _load_sso_handlers(hs) self._sso_handler = hs.get_sso_handler() self._public_baseurl = hs.config.server.public_baseurl async def on_GET( self, request: SynapseRequest, idp_id: Optional[str] = None ) -> None: if not self._public_baseurl: raise SynapseError(400, "SSO requires a valid public_baseurl") # if this isn't the expected hostname, redirect to the right one, so that we # get our cookies back. requested_uri = get_request_uri(request) baseurl_bytes = self._public_baseurl.encode("utf-8") if not requested_uri.startswith(baseurl_bytes): # swap out the incorrect base URL for the right one. # # The idea here is to redirect from # https://foo.bar/whatever/_matrix/... # to # https://public.baseurl/_matrix/... # i = requested_uri.index(b"/_matrix") new_uri = baseurl_bytes[:-1] + requested_uri[i:] logger.info( "Requested URI %s is not canonical: redirecting to %s", requested_uri.decode("utf-8", errors="replace"), new_uri.decode("utf-8", errors="replace"), ) request.redirect(new_uri) finish_request(request) return args: Dict[bytes, List[bytes]] = request.args # type: ignore client_redirect_url = parse_bytes_from_args(args, "redirectUrl", required=True) sso_url = await self._sso_handler.handle_redirect_request( request, client_redirect_url, idp_id, ) logger.info("Redirecting to %s", sso_url) request.redirect(sso_url) finish_request(request) class CasTicketServlet(RestServlet): PATTERNS = client_patterns("/login/cas/ticket", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self._cas_handler = hs.get_cas_handler() async def on_GET(self, request: SynapseRequest) -> None: client_redirect_url = parse_string(request, "redirectUrl") ticket = parse_string(request, "ticket", required=True) # Maybe get a session ID (if this ticket is from user interactive # authentication). session = parse_string(request, "session") # Either client_redirect_url or session must be provided. if not client_redirect_url and not session: message = "Missing string query parameter redirectUrl or session" raise SynapseError(400, message, errcode=Codes.MISSING_PARAM) await self._cas_handler.handle_ticket( request, ticket, client_redirect_url, session ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: LoginRestServlet(hs).register(http_server) if hs.config.registration.refreshable_access_token_lifetime is not None: RefreshTokenServlet(hs).register(http_server) SsoRedirectServlet(hs).register(http_server) if hs.config.cas.cas_enabled: CasTicketServlet(hs).register(http_server) def _load_sso_handlers(hs: "HomeServer") -> None: """Ensure that the SSO handlers are loaded, if they are enabled by configuration. This is mostly useful to ensure that the CAS/SAML/OIDC handlers register themselves with the main SsoHandler. It's safe to call this multiple times. """ if hs.config.cas.cas_enabled: hs.get_cas_handler() if hs.config.saml2.saml2_enabled: hs.get_saml_handler() if hs.config.oidc.oidc_enabled: hs.get_oidc_handler() synapse-1.53.0/synapse/rest/client/logout.py000066400000000000000000000055061420514467300210760ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class LogoutRestServlet(RestServlet): PATTERNS = client_patterns("/logout$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self._auth_handler = hs.get_auth_handler() self._device_handler = hs.get_device_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_expired=True) if requester.device_id is None: # The access token wasn't associated with a device. # Just delete the access token access_token = self.auth.get_access_token_from_request(request) await self._auth_handler.delete_access_token(access_token) else: await self._device_handler.delete_device( requester.user.to_string(), requester.device_id ) return 200, {} class LogoutAllRestServlet(RestServlet): PATTERNS = client_patterns("/logout/all$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self._auth_handler = hs.get_auth_handler() self._device_handler = hs.get_device_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_expired=True) user_id = requester.user.to_string() # first delete all of the user's devices await self._device_handler.delete_all_devices_for_user(user_id) # .. and then delete any access tokens which weren't associated with # devices. await self._auth_handler.delete_access_tokens_for_user(user_id) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: LogoutRestServlet(hs).register(http_server) LogoutAllRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/notifications.py000066400000000000000000000067471420514467300224460ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.constants import ReceiptTypes from synapse.events.utils import format_event_for_client_v2_without_room_id from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class NotificationsServlet(RestServlet): PATTERNS = client_patterns("/notifications$") def __init__(self, hs: "HomeServer"): super().__init__() self.store = hs.get_datastore() self.auth = hs.get_auth() self.clock = hs.get_clock() self._event_serializer = hs.get_event_client_serializer() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() from_token = parse_string(request, "from", required=False) limit = parse_integer(request, "limit", default=50) only = parse_string(request, "only", required=False) limit = min(limit, 500) push_actions = await self.store.get_push_actions_for_user( user_id, from_token, limit, only_highlight=(only == "highlight") ) receipts_by_room = await self.store.get_receipts_for_user_with_orderings( user_id, ReceiptTypes.READ ) notif_event_ids = [pa.event_id for pa in push_actions] notif_events = await self.store.get_events(notif_event_ids) returned_push_actions = [] next_token = None for pa in push_actions: returned_pa = { "room_id": pa.room_id, "profile_tag": pa.profile_tag, "actions": pa.actions, "ts": pa.received_ts, "event": ( self._event_serializer.serialize_event( notif_events[pa.event_id], self.clock.time_msec(), event_format=format_event_for_client_v2_without_room_id, ) ), } if pa.room_id not in receipts_by_room: returned_pa["read"] = False else: receipt = receipts_by_room[pa.room_id] returned_pa["read"] = ( receipt["topological_ordering"], receipt["stream_ordering"], ) >= (pa.topological_ordering, pa.stream_ordering) returned_push_actions.append(returned_pa) next_token = str(pa.stream_ordering) return 200, {"notifications": returned_push_actions, "next_token": next_token} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: NotificationsServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/openid.py000066400000000000000000000063531420514467300210440ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import AuthError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from synapse.util.stringutils import random_string from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class IdTokenServlet(RestServlet): """ Get a bearer token that may be passed to a third party to confirm ownership of a matrix user id. The format of the response could be made compatible with the format given in http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse But instead of returning a signed "id_token" the response contains the name of the issuing matrix homeserver. This means that for now the third party will need to check the validity of the "id_token" against the federation /openid/userinfo endpoint of the homeserver. Request: POST /user/{user_id}/openid/request_token?access_token=... HTTP/1.1 {} Response: HTTP/1.1 200 OK { "access_token": "ABDEFGH", "token_type": "Bearer", "matrix_server_name": "example.com", "expires_in": 3600, } """ PATTERNS = client_patterns("/user/(?P[^/]*)/openid/request_token") EXPIRES_MS = 3600 * 1000 def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.clock = hs.get_clock() self.server_name = hs.config.server.server_name async def on_POST( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot request tokens for other users.") # Parse the request body to make sure it's JSON, but ignore the contents # for now. parse_json_object_from_request(request) token = random_string(24) ts_valid_until_ms = self.clock.time_msec() + self.EXPIRES_MS await self.store.insert_open_id_token(token, ts_valid_until_ms, user_id) return ( 200, { "access_token": token, "token_type": "Bearer", "matrix_server_name": self.server_name, "expires_in": self.EXPIRES_MS // 1000, }, ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: IdTokenServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/password_policy.py000066400000000000000000000034551420514467300230070ustar00rootroot00000000000000# Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class PasswordPolicyServlet(RestServlet): PATTERNS = client_patterns("/password_policy$") def __init__(self, hs: "HomeServer"): super().__init__() self.policy = hs.config.auth.password_policy self.enabled = hs.config.auth.password_policy_enabled def on_GET(self, request: Request) -> Tuple[int, JsonDict]: if not self.enabled or not self.policy: return 200, {} policy = {} for param in [ "minimum_length", "require_digit", "require_symbol", "require_lowercase", "require_uppercase", ]: if param in self.policy: policy["m.%s" % param] = self.policy[param] return 200, policy def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: PasswordPolicyServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/presence.py000066400000000000000000000067651420514467300214010ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This module contains REST servlets to do with presence: /presence/ """ import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import AuthError, SynapseError from synapse.handlers.presence import format_user_presence_state from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class PresenceStatusRestServlet(RestServlet): PATTERNS = client_patterns("/presence/(?P[^/]*)/status", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.presence_handler = hs.get_presence_handler() self.clock = hs.get_clock() self.auth = hs.get_auth() self._use_presence = hs.config.server.use_presence async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user = UserID.from_string(user_id) if not self._use_presence: return 200, {"presence": "offline"} if requester.user != user: allowed = await self.presence_handler.is_visible( observed_user=user, observer_user=requester.user ) if not allowed: raise AuthError(403, "You are not allowed to see their presence.") state = await self.presence_handler.get_state(target_user=user) result = format_user_presence_state( state, self.clock.time_msec(), include_user_id=False ) return 200, result async def on_PUT( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user = UserID.from_string(user_id) if requester.user != user: raise AuthError(403, "Can only set your own presence state") state = {} content = parse_json_object_from_request(request) try: state["presence"] = content.pop("presence") if "status_msg" in content: state["status_msg"] = content.pop("status_msg") if not isinstance(state["status_msg"], str): raise SynapseError(400, "status_msg must be a string.") if content: raise KeyError() except SynapseError as e: raise e except Exception: raise SynapseError(400, "Unable to parse state") if self._use_presence: await self.presence_handler.set_state(user, state) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: PresenceStatusRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/profile.py000066400000000000000000000131101420514467300212130ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This module contains REST servlets to do with profile: /profile/ """ from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer class ProfileDisplaynameRestServlet(RestServlet): PATTERNS = client_patterns("/profile/(?P[^/]*)/displayname", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.profile_handler = hs.get_profile_handler() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester_user = None if self.hs.config.server.require_auth_for_profile_requests: requester = await self.auth.get_user_by_req(request) requester_user = requester.user user = UserID.from_string(user_id) await self.profile_handler.check_profile_query_allowed(user, requester_user) displayname = await self.profile_handler.get_displayname(user) ret = {} if displayname is not None: ret["displayname"] = displayname return 200, ret async def on_PUT( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) user = UserID.from_string(user_id) is_admin = await self.auth.is_server_admin(requester.user) content = parse_json_object_from_request(request) try: new_name = content["displayname"] except Exception: raise SynapseError( code=400, msg="Unable to parse name", errcode=Codes.BAD_JSON, ) await self.profile_handler.set_displayname(user, requester, new_name, is_admin) return 200, {} class ProfileAvatarURLRestServlet(RestServlet): PATTERNS = client_patterns("/profile/(?P[^/]*)/avatar_url", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.profile_handler = hs.get_profile_handler() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester_user = None if self.hs.config.server.require_auth_for_profile_requests: requester = await self.auth.get_user_by_req(request) requester_user = requester.user user = UserID.from_string(user_id) await self.profile_handler.check_profile_query_allowed(user, requester_user) avatar_url = await self.profile_handler.get_avatar_url(user) ret = {} if avatar_url is not None: ret["avatar_url"] = avatar_url return 200, ret async def on_PUT( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user = UserID.from_string(user_id) is_admin = await self.auth.is_server_admin(requester.user) content = parse_json_object_from_request(request) try: new_avatar_url = content["avatar_url"] except KeyError: raise SynapseError( 400, "Missing key 'avatar_url'", errcode=Codes.MISSING_PARAM ) await self.profile_handler.set_avatar_url( user, requester, new_avatar_url, is_admin ) return 200, {} class ProfileRestServlet(RestServlet): PATTERNS = client_patterns("/profile/(?P[^/]*)", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.profile_handler = hs.get_profile_handler() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: requester_user = None if self.hs.config.server.require_auth_for_profile_requests: requester = await self.auth.get_user_by_req(request) requester_user = requester.user user = UserID.from_string(user_id) await self.profile_handler.check_profile_query_allowed(user, requester_user) displayname = await self.profile_handler.get_displayname(user) avatar_url = await self.profile_handler.get_avatar_url(user) ret = {} if displayname is not None: ret["displayname"] = displayname if avatar_url is not None: ret["avatar_url"] = avatar_url return 200, ret def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ProfileDisplaynameRestServlet(hs).register(http_server) ProfileAvatarURLRestServlet(hs).register(http_server) ProfileRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/push_rule.py000066400000000000000000000305511420514467300215710ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING, List, Optional, Sequence, Tuple, Union import attr from synapse.api.errors import ( NotFoundError, StoreError, SynapseError, UnrecognizedRequestError, ) from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, parse_json_value_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.push.baserules import BASE_RULE_IDS from synapse.push.clientformat import format_push_rules_for_user from synapse.push.rulekinds import PRIORITY_CLASS_MAP from synapse.rest.client._base import client_patterns from synapse.storage.push_rule import InconsistentRuleException, RuleNotFoundException from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer @attr.s(slots=True, frozen=True, auto_attribs=True) class RuleSpec: scope: str template: str rule_id: str attr: Optional[str] class PushRuleRestServlet(RestServlet): PATTERNS = client_patterns("/(?Ppushrules/.*)$", v1=True) SLIGHTLY_PEDANTIC_TRAILING_SLASH_ERROR = ( "Unrecognised request: You probably wanted a trailing slash" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.notifier = hs.get_notifier() self._is_worker = hs.config.worker.worker_app is not None async def on_PUT(self, request: SynapseRequest, path: str) -> Tuple[int, JsonDict]: if self._is_worker: raise Exception("Cannot handle PUT /push_rules on worker") spec = _rule_spec_from_path(path.split("/")) try: priority_class = _priority_class_from_spec(spec) except InvalidRuleException as e: raise SynapseError(400, str(e)) requester = await self.auth.get_user_by_req(request) if "/" in spec.rule_id or "\\" in spec.rule_id: raise SynapseError(400, "rule_id may not contain slashes") content = parse_json_value_from_request(request) user_id = requester.user.to_string() if spec.attr: await self.set_rule_attr(user_id, spec, content) self.notify_user(user_id) return 200, {} if spec.rule_id.startswith("."): # Rule ids starting with '.' are reserved for server default rules. raise SynapseError(400, "cannot add new rule_ids that start with '.'") try: (conditions, actions) = _rule_tuple_from_request_object( spec.template, spec.rule_id, content ) except InvalidRuleException as e: raise SynapseError(400, str(e)) before = parse_string(request, "before") if before: before = _namespaced_rule_id(spec, before) after = parse_string(request, "after") if after: after = _namespaced_rule_id(spec, after) try: await self.store.add_push_rule( user_id=user_id, rule_id=_namespaced_rule_id_from_spec(spec), priority_class=priority_class, conditions=conditions, actions=actions, before=before, after=after, ) self.notify_user(user_id) except InconsistentRuleException as e: raise SynapseError(400, str(e)) except RuleNotFoundException as e: raise SynapseError(400, str(e)) return 200, {} async def on_DELETE( self, request: SynapseRequest, path: str ) -> Tuple[int, JsonDict]: if self._is_worker: raise Exception("Cannot handle DELETE /push_rules on worker") spec = _rule_spec_from_path(path.split("/")) requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() namespaced_rule_id = _namespaced_rule_id_from_spec(spec) try: await self.store.delete_push_rule(user_id, namespaced_rule_id) self.notify_user(user_id) return 200, {} except StoreError as e: if e.code == 404: raise NotFoundError() else: raise async def on_GET(self, request: SynapseRequest, path: str) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() # we build up the full structure and then decide which bits of it # to send which means doing unnecessary work sometimes but is # is probably not going to make a whole lot of difference rules = await self.store.get_push_rules_for_user(user_id) rules = format_push_rules_for_user(requester.user, rules) path_parts = path.split("/")[1:] if path_parts == []: # we're a reference impl: pedantry is our job. raise UnrecognizedRequestError( PushRuleRestServlet.SLIGHTLY_PEDANTIC_TRAILING_SLASH_ERROR ) if path_parts[0] == "": return 200, rules elif path_parts[0] == "global": result = _filter_ruleset_with_path(rules["global"], path_parts[1:]) return 200, result else: raise UnrecognizedRequestError() def notify_user(self, user_id: str) -> None: stream_id = self.store.get_max_push_rules_stream_id() self.notifier.on_new_event("push_rules_key", stream_id, users=[user_id]) async def set_rule_attr( self, user_id: str, spec: RuleSpec, val: Union[bool, JsonDict] ) -> None: if spec.attr not in ("enabled", "actions"): # for the sake of potential future expansion, shouldn't report # 404 in the case of an unknown request so check it corresponds to # a known attribute first. raise UnrecognizedRequestError() namespaced_rule_id = _namespaced_rule_id_from_spec(spec) rule_id = spec.rule_id is_default_rule = rule_id.startswith(".") if is_default_rule: if namespaced_rule_id not in BASE_RULE_IDS: raise NotFoundError("Unknown rule %s" % (namespaced_rule_id,)) if spec.attr == "enabled": if isinstance(val, dict) and "enabled" in val: val = val["enabled"] if not isinstance(val, bool): # Legacy fallback # This should *actually* take a dict, but many clients pass # bools directly, so let's not break them. raise SynapseError(400, "Value for 'enabled' must be boolean") await self.store.set_push_rule_enabled( user_id, namespaced_rule_id, val, is_default_rule ) elif spec.attr == "actions": if not isinstance(val, dict): raise SynapseError(400, "Value must be a dict") actions = val.get("actions") if not isinstance(actions, list): raise SynapseError(400, "Value for 'actions' must be dict") _check_actions(actions) namespaced_rule_id = _namespaced_rule_id_from_spec(spec) rule_id = spec.rule_id is_default_rule = rule_id.startswith(".") if is_default_rule: if namespaced_rule_id not in BASE_RULE_IDS: raise SynapseError(404, "Unknown rule %r" % (namespaced_rule_id,)) await self.store.set_push_rule_actions( user_id, namespaced_rule_id, actions, is_default_rule ) else: raise UnrecognizedRequestError() def _rule_spec_from_path(path: Sequence[str]) -> RuleSpec: """Turn a sequence of path components into a rule spec Args: path: the URL path components. Returns: rule spec, containing scope/template/rule_id entries, and possibly attr. Raises: UnrecognizedRequestError if the path components cannot be parsed. """ if len(path) < 2: raise UnrecognizedRequestError() if path[0] != "pushrules": raise UnrecognizedRequestError() scope = path[1] path = path[2:] if scope != "global": raise UnrecognizedRequestError() if len(path) == 0: raise UnrecognizedRequestError() template = path[0] path = path[1:] if len(path) == 0 or len(path[0]) == 0: raise UnrecognizedRequestError() rule_id = path[0] path = path[1:] attr = None if len(path) > 0 and len(path[0]) > 0: attr = path[0] return RuleSpec(scope, template, rule_id, attr) def _rule_tuple_from_request_object( rule_template: str, rule_id: str, req_obj: JsonDict ) -> Tuple[List[JsonDict], List[Union[str, JsonDict]]]: if rule_template in ["override", "underride"]: if "conditions" not in req_obj: raise InvalidRuleException("Missing 'conditions'") conditions = req_obj["conditions"] for c in conditions: if "kind" not in c: raise InvalidRuleException("Condition without 'kind'") elif rule_template == "room": conditions = [{"kind": "event_match", "key": "room_id", "pattern": rule_id}] elif rule_template == "sender": conditions = [{"kind": "event_match", "key": "user_id", "pattern": rule_id}] elif rule_template == "content": if "pattern" not in req_obj: raise InvalidRuleException("Content rule missing 'pattern'") pat = req_obj["pattern"] conditions = [{"kind": "event_match", "key": "content.body", "pattern": pat}] else: raise InvalidRuleException("Unknown rule template: %s" % (rule_template,)) if "actions" not in req_obj: raise InvalidRuleException("No actions found") actions = req_obj["actions"] _check_actions(actions) return conditions, actions def _check_actions(actions: List[Union[str, JsonDict]]) -> None: if not isinstance(actions, list): raise InvalidRuleException("No actions found") for a in actions: if a in ["notify", "dont_notify", "coalesce"]: pass elif isinstance(a, dict) and "set_tweak" in a: pass else: raise InvalidRuleException("Unrecognised action") def _filter_ruleset_with_path(ruleset: JsonDict, path: List[str]) -> JsonDict: if path == []: raise UnrecognizedRequestError( PushRuleRestServlet.SLIGHTLY_PEDANTIC_TRAILING_SLASH_ERROR ) if path[0] == "": return ruleset template_kind = path[0] if template_kind not in ruleset: raise UnrecognizedRequestError() path = path[1:] if path == []: raise UnrecognizedRequestError( PushRuleRestServlet.SLIGHTLY_PEDANTIC_TRAILING_SLASH_ERROR ) if path[0] == "": return ruleset[template_kind] rule_id = path[0] the_rule = None for r in ruleset[template_kind]: if r["rule_id"] == rule_id: the_rule = r if the_rule is None: raise NotFoundError() path = path[1:] if len(path) == 0: return the_rule attr = path[0] if attr in the_rule: # Make sure we return a JSON object as the attribute may be a # JSON value. return {attr: the_rule[attr]} else: raise UnrecognizedRequestError() def _priority_class_from_spec(spec: RuleSpec) -> int: if spec.template not in PRIORITY_CLASS_MAP.keys(): raise InvalidRuleException("Unknown template: %s" % (spec.template)) pc = PRIORITY_CLASS_MAP[spec.template] return pc def _namespaced_rule_id_from_spec(spec: RuleSpec) -> str: return _namespaced_rule_id(spec, spec.rule_id) def _namespaced_rule_id(spec: RuleSpec, rule_id: str) -> str: return "global/%s/%s" % (spec.template, rule_id) class InvalidRuleException(Exception): pass def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: PushRuleRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/pusher.py000066400000000000000000000132341420514467300210700ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, StoreError, SynapseError from synapse.http.server import HttpServer, respond_with_html_bytes from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.push import PusherConfigException from synapse.rest.client._base import client_patterns from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class PushersRestServlet(RestServlet): PATTERNS = client_patterns("/pushers$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user = requester.user pushers = await self.hs.get_datastore().get_pushers_by_user_id(user.to_string()) filtered_pushers = [p.as_dict() for p in pushers] return 200, {"pushers": filtered_pushers} class PushersSetRestServlet(RestServlet): PATTERNS = client_patterns("/pushers/set$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.notifier = hs.get_notifier() self.pusher_pool = self.hs.get_pusherpool() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user = requester.user content = parse_json_object_from_request(request) if ( "pushkey" in content and "app_id" in content and "kind" in content and content["kind"] is None ): await self.pusher_pool.remove_pusher( content["app_id"], content["pushkey"], user_id=user.to_string() ) return 200, {} assert_params_in_dict( content, [ "kind", "app_id", "app_display_name", "device_display_name", "pushkey", "lang", "data", ], ) logger.debug("set pushkey %s to kind %s", content["pushkey"], content["kind"]) logger.debug("Got pushers request with body: %r", content) append = False if "append" in content: append = content["append"] if not append: await self.pusher_pool.remove_pushers_by_app_id_and_pushkey_not_user( app_id=content["app_id"], pushkey=content["pushkey"], not_user_id=user.to_string(), ) try: await self.pusher_pool.add_pusher( user_id=user.to_string(), access_token=requester.access_token_id, kind=content["kind"], app_id=content["app_id"], app_display_name=content["app_display_name"], device_display_name=content["device_display_name"], pushkey=content["pushkey"], lang=content["lang"], data=content["data"], profile_tag=content.get("profile_tag", ""), ) except PusherConfigException as pce: raise SynapseError( 400, "Config Error: " + str(pce), errcode=Codes.MISSING_PARAM ) self.notifier.on_new_replication_data() return 200, {} class PushersRemoveRestServlet(RestServlet): """ To allow pusher to be delete by clicking a link (ie. GET request) """ PATTERNS = client_patterns("/pushers/remove$", v1=True) SUCCESS_HTML = b"You have been unsubscribed" def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.notifier = hs.get_notifier() self.auth = hs.get_auth() self.pusher_pool = self.hs.get_pusherpool() async def on_GET(self, request: SynapseRequest) -> None: requester = await self.auth.get_user_by_req(request, rights="delete_pusher") user = requester.user app_id = parse_string(request, "app_id", required=True) pushkey = parse_string(request, "pushkey", required=True) try: await self.pusher_pool.remove_pusher( app_id=app_id, pushkey=pushkey, user_id=user.to_string() ) except StoreError as se: if se.code != 404: # This is fine: they're already unsubscribed raise self.notifier.on_new_replication_data() respond_with_html_bytes( request, 200, PushersRemoveRestServlet.SUCCESS_HTML, ) return None def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: PushersRestServlet(hs).register(http_server) PushersSetRestServlet(hs).register(http_server) PushersRemoveRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/read_marker.py000066400000000000000000000055651420514467300220460ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.constants import ReadReceiptEventFields, ReceiptTypes from synapse.api.errors import Codes, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReadMarkerRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/read_markers$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.receipts_handler = hs.get_receipts_handler() self.read_marker_handler = hs.get_read_marker_handler() self.presence_handler = hs.get_presence_handler() async def on_POST( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) await self.presence_handler.bump_presence_active_time(requester.user) body = parse_json_object_from_request(request) read_event_id = body.get(ReceiptTypes.READ, None) hidden = body.get(ReadReceiptEventFields.MSC2285_HIDDEN, False) if not isinstance(hidden, bool): raise SynapseError( 400, "Param %s must be a boolean, if given" % ReadReceiptEventFields.MSC2285_HIDDEN, Codes.BAD_JSON, ) if read_event_id: await self.receipts_handler.received_client_receipt( room_id, ReceiptTypes.READ, user_id=requester.user.to_string(), event_id=read_event_id, hidden=hidden, ) read_marker_event_id = body.get("m.fully_read", None) if read_marker_event_id: await self.read_marker_handler.received_client_read_marker( room_id, user_id=requester.user.to_string(), event_id=read_marker_event_id, ) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReadMarkerRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/receipts.py000066400000000000000000000061371420514467300214040ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import TYPE_CHECKING, Tuple from synapse.api.constants import ReadReceiptEventFields, ReceiptTypes from synapse.api.errors import Codes, SynapseError from synapse.http import get_request_user_agent from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns pattern = re.compile(r"(?:Element|SchildiChat)/1\.[012]\.") if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReceiptRestServlet(RestServlet): PATTERNS = client_patterns( "/rooms/(?P[^/]*)" "/receipt/(?P[^/]*)" "/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.receipts_handler = hs.get_receipts_handler() self.presence_handler = hs.get_presence_handler() async def on_POST( self, request: SynapseRequest, room_id: str, receipt_type: str, event_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if receipt_type != ReceiptTypes.READ: raise SynapseError(400, "Receipt type must be 'm.read'") # Do not allow older SchildiChat and Element Android clients (prior to Element/1.[012].x) to send an empty body. user_agent = get_request_user_agent(request) allow_empty_body = False if "Android" in user_agent: if pattern.match(user_agent) or "Riot" in user_agent: allow_empty_body = True body = parse_json_object_from_request(request, allow_empty_body) hidden = body.get(ReadReceiptEventFields.MSC2285_HIDDEN, False) if not isinstance(hidden, bool): raise SynapseError( 400, "Param %s must be a boolean, if given" % ReadReceiptEventFields.MSC2285_HIDDEN, Codes.BAD_JSON, ) await self.presence_handler.bump_presence_active_time(requester.user) await self.receipts_handler.received_client_receipt( room_id, receipt_type, user_id=requester.user.to_string(), event_id=event_id, hidden=hidden, ) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReceiptRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/register.py000066400000000000000000001111701420514467300214040ustar00rootroot00000000000000# Copyright 2015 - 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import random from typing import TYPE_CHECKING, List, Optional, Tuple from twisted.web.server import Request import synapse import synapse.api.auth import synapse.types from synapse.api.constants import APP_SERVICE_REGISTRATION_TYPE, LoginType from synapse.api.errors import ( Codes, InteractiveAuthIncompleteError, SynapseError, ThreepidValidationError, UnrecognizedRequestError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.config import ConfigError from synapse.config.emailconfig import ThreepidBehaviour from synapse.config.homeserver import HomeServerConfig from synapse.config.ratelimiting import FederationRateLimitConfig from synapse.config.server import is_threepid_reserved from synapse.handlers.auth import AuthHandler from synapse.handlers.ui_auth import UIAuthSessionDataConstants from synapse.http.server import HttpServer, finish_request, respond_with_html from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.metrics import threepid_send_requests from synapse.push.mailer import Mailer from synapse.types import JsonDict from synapse.util.msisdn import phone_number_to_msisdn from synapse.util.ratelimitutils import FederationRateLimiter from synapse.util.stringutils import assert_valid_client_secret, random_string from synapse.util.threepids import ( canonicalise_email, check_3pid_allowed, validate_email, ) from ._base import client_patterns, interactive_auth_handler if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EmailRegisterRequestTokenRestServlet(RestServlet): PATTERNS = client_patterns("/register/email/requestToken$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.identity_handler = hs.get_identity_handler() self.config = hs.config if self.hs.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: self.mailer = Mailer( hs=self.hs, app_name=self.config.email.email_app_name, template_html=self.config.email.email_registration_template_html, template_text=self.config.email.email_registration_template_text, ) async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: if self.hs.config.email.threepid_behaviour_email == ThreepidBehaviour.OFF: if ( self.hs.config.email.local_threepid_handling_disabled_due_to_email_config ): logger.warning( "Email registration has been disabled due to lack of email config" ) raise SynapseError( 400, "Email-based registration has been disabled on this server" ) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["client_secret", "email", "send_attempt"]) # Extract params from body client_secret = body["client_secret"] assert_valid_client_secret(client_secret) # For emails, canonicalise the address. # We store all email addresses canonicalised in the DB. # (See on_POST in EmailThreepidRequestTokenRestServlet # in synapse/rest/client/account.py) try: email = validate_email(body["email"]) except ValueError as e: raise SynapseError(400, str(e)) send_attempt = body["send_attempt"] next_link = body.get("next_link") # Optional param if not await check_3pid_allowed(self.hs, "email", email, registration=True): raise SynapseError( 403, "Your email domain is not authorized to register on this server", Codes.THREEPID_DENIED, ) await self.identity_handler.ratelimit_request_token_requests( request, "email", email ) existing_user_id = await self.hs.get_datastore().get_user_id_by_threepid( "email", email ) if existing_user_id is not None: if self.hs.config.server.request_token_inhibit_3pid_errors: # Make the client think the operation succeeded. See the rationale in the # comments for request_token_inhibit_3pid_errors. # Also wait for some random amount of time between 100ms and 1s to make it # look like we did something. await self.hs.get_clock().sleep(random.randint(1, 10) / 10) return 200, {"sid": random_string(16)} raise SynapseError(400, "Email is already in use", Codes.THREEPID_IN_USE) if self.config.email.threepid_behaviour_email == ThreepidBehaviour.REMOTE: assert self.hs.config.registration.account_threepid_delegate_email # Have the configured identity server handle the request ret = await self.identity_handler.requestEmailToken( self.hs.config.registration.account_threepid_delegate_email, email, client_secret, send_attempt, next_link, ) else: # Send registration emails from Synapse sid = await self.identity_handler.send_threepid_validation( email, client_secret, send_attempt, self.mailer.send_registration_mail, next_link, ) # Wrap the session id in a JSON object ret = {"sid": sid} threepid_send_requests.labels(type="email", reason="register").observe( send_attempt ) return 200, ret class MsisdnRegisterRequestTokenRestServlet(RestServlet): PATTERNS = client_patterns("/register/msisdn/requestToken$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.identity_handler = hs.get_identity_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: body = parse_json_object_from_request(request) assert_params_in_dict( body, ["client_secret", "country", "phone_number", "send_attempt"] ) client_secret = body["client_secret"] assert_valid_client_secret(client_secret) country = body["country"] phone_number = body["phone_number"] send_attempt = body["send_attempt"] next_link = body.get("next_link") # Optional param msisdn = phone_number_to_msisdn(country, phone_number) if not await check_3pid_allowed(self.hs, "msisdn", msisdn, registration=True): raise SynapseError( 403, "Phone numbers are not authorized to register on this server", Codes.THREEPID_DENIED, ) await self.identity_handler.ratelimit_request_token_requests( request, "msisdn", msisdn ) existing_user_id = await self.hs.get_datastore().get_user_id_by_threepid( "msisdn", msisdn ) if existing_user_id is not None: if self.hs.config.server.request_token_inhibit_3pid_errors: # Make the client think the operation succeeded. See the rationale in the # comments for request_token_inhibit_3pid_errors. # Also wait for some random amount of time between 100ms and 1s to make it # look like we did something. await self.hs.get_clock().sleep(random.randint(1, 10) / 10) return 200, {"sid": random_string(16)} raise SynapseError( 400, "Phone number is already in use", Codes.THREEPID_IN_USE ) if not self.hs.config.registration.account_threepid_delegate_msisdn: logger.warning( "No upstream msisdn account_threepid_delegate configured on the server to " "handle this request" ) raise SynapseError( 400, "Registration by phone number is not supported on this homeserver" ) ret = await self.identity_handler.requestMsisdnToken( self.hs.config.registration.account_threepid_delegate_msisdn, country, phone_number, client_secret, send_attempt, next_link, ) threepid_send_requests.labels(type="msisdn", reason="register").observe( send_attempt ) return 200, ret class RegistrationSubmitTokenServlet(RestServlet): """Handles registration 3PID validation token submission""" PATTERNS = client_patterns( "/registration/(?P[^/]*)/submit_token$", releases=(), unstable=True ) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.config = hs.config self.clock = hs.get_clock() self.store = hs.get_datastore() if self.config.email.threepid_behaviour_email == ThreepidBehaviour.LOCAL: self._failure_email_template = ( self.config.email.email_registration_template_failure_html ) async def on_GET(self, request: Request, medium: str) -> None: if medium != "email": raise SynapseError( 400, "This medium is currently not supported for registration" ) if self.config.email.threepid_behaviour_email == ThreepidBehaviour.OFF: if self.config.email.local_threepid_handling_disabled_due_to_email_config: logger.warning( "User registration via email has been disabled due to lack of email config" ) raise SynapseError( 400, "Email-based registration is disabled on this server" ) sid = parse_string(request, "sid", required=True) client_secret = parse_string(request, "client_secret", required=True) assert_valid_client_secret(client_secret) token = parse_string(request, "token", required=True) # Attempt to validate a 3PID session try: # Mark the session as valid next_link = await self.store.validate_threepid_session( sid, client_secret, token, self.clock.time_msec() ) # Perform a 302 redirect if next_link is set if next_link: if next_link.startswith("file:///"): logger.warning( "Not redirecting to next_link as it is a local file: address" ) else: request.setResponseCode(302) request.setHeader("Location", next_link) finish_request(request) return None # Otherwise show the success template html = self.config.email.email_registration_template_success_html_content status_code = 200 except ThreepidValidationError as e: status_code = e.code # Show a failure page with a reason template_vars = {"failure_reason": e.msg} html = self._failure_email_template.render(**template_vars) respond_with_html(request, status_code, html) class UsernameAvailabilityRestServlet(RestServlet): PATTERNS = client_patterns("/register/available") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.registration_handler = hs.get_registration_handler() self.ratelimiter = FederationRateLimiter( hs.get_clock(), FederationRateLimitConfig( # Time window of 2s window_size=2000, # Artificially delay requests if rate > sleep_limit/window_size sleep_limit=1, # Amount of artificial delay to apply sleep_delay=1000, # Error with 429 if more than reject_limit requests are queued reject_limit=1, # Allow 1 request at a time concurrent=1, ), ) self.inhibit_user_in_use_error = ( hs.config.registration.inhibit_user_in_use_error ) async def on_GET(self, request: Request) -> Tuple[int, JsonDict]: if not self.hs.config.registration.enable_registration: raise SynapseError( 403, "Registration has been disabled", errcode=Codes.FORBIDDEN ) if self.inhibit_user_in_use_error: return 200, {"available": True} ip = request.getClientIP() with self.ratelimiter.ratelimit(ip) as wait_deferred: await wait_deferred username = parse_string(request, "username", required=True) await self.registration_handler.check_username(username) return 200, {"available": True} class RegistrationTokenValidityRestServlet(RestServlet): """Check the validity of a registration token. Example: GET /_matrix/client/v1/register/m.login.registration_token/validity?token=abcd 200 OK { "valid": true } """ PATTERNS = client_patterns( f"/register/{LoginType.REGISTRATION_TOKEN}/validity", releases=("v1",), ) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.store = hs.get_datastore() self.ratelimiter = Ratelimiter( store=self.store, clock=hs.get_clock(), rate_hz=hs.config.ratelimiting.rc_registration_token_validity.per_second, burst_count=hs.config.ratelimiting.rc_registration_token_validity.burst_count, ) async def on_GET(self, request: Request) -> Tuple[int, JsonDict]: await self.ratelimiter.ratelimit(None, (request.getClientIP(),)) if not self.hs.config.registration.enable_registration: raise SynapseError( 403, "Registration has been disabled", errcode=Codes.FORBIDDEN ) token = parse_string(request, "token", required=True) valid = await self.store.registration_token_is_valid(token) return 200, {"valid": valid} class RegisterRestServlet(RestServlet): PATTERNS = client_patterns("/register$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.store = hs.get_datastore() self.auth_handler = hs.get_auth_handler() self.registration_handler = hs.get_registration_handler() self.identity_handler = hs.get_identity_handler() self.room_member_handler = hs.get_room_member_handler() self.macaroon_gen = hs.get_macaroon_generator() self.ratelimiter = hs.get_registration_ratelimiter() self.password_policy_handler = hs.get_password_policy_handler() self.clock = hs.get_clock() self.password_auth_provider = hs.get_password_auth_provider() self._registration_enabled = self.hs.config.registration.enable_registration self._refresh_tokens_enabled = ( hs.config.registration.refreshable_access_token_lifetime is not None ) self._inhibit_user_in_use_error = ( hs.config.registration.inhibit_user_in_use_error ) self._registration_flows = _calculate_registration_flows( hs.config, self.auth_handler ) @interactive_auth_handler async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: body = parse_json_object_from_request(request) client_addr = request.getClientIP() await self.ratelimiter.ratelimit(None, client_addr, update=False) kind = parse_string(request, "kind", default="user") if kind == "guest": ret = await self._do_guest_registration(body, address=client_addr) return ret elif kind != "user": raise UnrecognizedRequestError( f"Do not understand membership kind: {kind}", ) # Check if the clients wishes for this registration to issue a refresh # token. client_requested_refresh_tokens = body.get("refresh_token", False) if not isinstance(client_requested_refresh_tokens, bool): raise SynapseError(400, "`refresh_token` should be true or false.") should_issue_refresh_token = ( self._refresh_tokens_enabled and client_requested_refresh_tokens ) # Pull out the provided username and do basic sanity checks early since # the auth layer will store these in sessions. desired_username = None if "username" in body: if not isinstance(body["username"], str) or len(body["username"]) > 512: raise SynapseError(400, "Invalid username") desired_username = body["username"] # fork off as soon as possible for ASes which have completely # different registration flows to normal users # == Application Service Registration == if body.get("type") == APP_SERVICE_REGISTRATION_TYPE: if not self.auth.has_access_token(request): raise SynapseError( 400, "Appservice token must be provided when using a type of m.login.application_service", ) # Verify the AS self.auth.get_appservice_by_req(request) # Set the desired user according to the AS API (which uses the # 'user' key not 'username'). Since this is a new addition, we'll # fallback to 'username' if they gave one. desired_username = body.get("user", desired_username) # XXX we should check that desired_username is valid. Currently # we give appservices carte blanche for any insanity in mxids, # because the IRC bridges rely on being able to register stupid # IDs. access_token = self.auth.get_access_token_from_request(request) if not isinstance(desired_username, str): raise SynapseError(400, "Desired Username is missing or not a string") result = await self._do_appservice_registration( desired_username, access_token, body, should_issue_refresh_token=should_issue_refresh_token, ) return 200, result elif self.auth.has_access_token(request): raise SynapseError( 400, "An access token should not be provided on requests to /register (except if type is m.login.application_service)", ) # == Normal User Registration == (everyone else) if not self._registration_enabled: raise SynapseError(403, "Registration has been disabled", Codes.FORBIDDEN) # For regular registration, convert the provided username to lowercase # before attempting to register it. This should mean that people who try # to register with upper-case in their usernames don't get a nasty surprise. # # Note that we treat usernames case-insensitively in login, so they are # free to carry on imagining that their username is CrAzYh4cKeR if that # keeps them happy. if desired_username is not None: desired_username = desired_username.lower() # Check if this account is upgrading from a guest account. guest_access_token = body.get("guest_access_token", None) # Pull out the provided password and do basic sanity checks early. # # Note that we remove the password from the body since the auth layer # will store the body in the session and we don't want a plaintext # password store there. password = body.pop("password", None) if password is not None: if not isinstance(password, str) or len(password) > 512: raise SynapseError(400, "Invalid password") self.password_policy_handler.validate_password(password) if "initial_device_display_name" in body and password is None: # ignore 'initial_device_display_name' if sent without # a password to work around a client bug where it sent # the 'initial_device_display_name' param alone, wiping out # the original registration params logger.warning("Ignoring initial_device_display_name without password") del body["initial_device_display_name"] session_id = self.auth_handler.get_session_id(body) registered_user_id = None password_hash = None if session_id: # if we get a registered user id out of here, it means we previously # registered a user for this session, so we could just return the # user here. We carry on and go through the auth checks though, # for paranoia. registered_user_id = await self.auth_handler.get_session_data( session_id, UIAuthSessionDataConstants.REGISTERED_USER_ID, None ) # Extract the previously-hashed password from the session. password_hash = await self.auth_handler.get_session_data( session_id, UIAuthSessionDataConstants.PASSWORD_HASH, None ) # Ensure that the username is valid. if desired_username is not None: await self.registration_handler.check_username( desired_username, guest_access_token=guest_access_token, assigned_user_id=registered_user_id, inhibit_user_in_use_error=self._inhibit_user_in_use_error, ) # Check if the user-interactive authentication flows are complete, if # not this will raise a user-interactive auth error. try: auth_result, params, session_id = await self.auth_handler.check_ui_auth( self._registration_flows, request, body, "register a new account", ) except InteractiveAuthIncompleteError as e: # The user needs to provide more steps to complete auth. # # Hash the password and store it with the session since the client # is not required to provide the password again. # # If a password hash was previously stored we will not attempt to # re-hash and store it for efficiency. This assumes the password # does not change throughout the authentication flow, but this # should be fine since the data is meant to be consistent. if not password_hash and password: password_hash = await self.auth_handler.hash(password) await self.auth_handler.set_session_data( e.session_id, UIAuthSessionDataConstants.PASSWORD_HASH, password_hash, ) raise # Check that we're not trying to register a denied 3pid. # # the user-facing checks will probably already have happened in # /register/email/requestToken when we requested a 3pid, but that's not # guaranteed. if auth_result: for login_type in [LoginType.EMAIL_IDENTITY, LoginType.MSISDN]: if login_type in auth_result: medium = auth_result[login_type]["medium"] address = auth_result[login_type]["address"] if not await check_3pid_allowed( self.hs, medium, address, registration=True ): raise SynapseError( 403, "Third party identifiers (email/phone numbers)" + " are not authorized on this server", Codes.THREEPID_DENIED, ) if registered_user_id is not None: logger.info( "Already registered user ID %r for this session", registered_user_id ) # don't re-register the threepids registered = False else: # If we have a password in this request, prefer it. Otherwise, there # might be a password hash from an earlier request. if password: password_hash = await self.auth_handler.hash(password) if not password_hash: raise SynapseError(400, "Missing params: password", Codes.MISSING_PARAM) desired_username = await ( self.password_auth_provider.get_username_for_registration( auth_result, params, ) ) if desired_username is None: desired_username = params.get("username", None) guest_access_token = params.get("guest_access_token", None) if desired_username is not None: desired_username = desired_username.lower() threepid = None if auth_result: threepid = auth_result.get(LoginType.EMAIL_IDENTITY) # Also check that we're not trying to register a 3pid that's already # been registered. # # This has probably happened in /register/email/requestToken as well, # but if a user hits this endpoint twice then clicks on each link from # the two activation emails, they would register the same 3pid twice. for login_type in [LoginType.EMAIL_IDENTITY, LoginType.MSISDN]: if login_type in auth_result: medium = auth_result[login_type]["medium"] address = auth_result[login_type]["address"] # For emails, canonicalise the address. # We store all email addresses canonicalised in the DB. # (See on_POST in EmailThreepidRequestTokenRestServlet # in synapse/rest/client/account.py) if medium == "email": try: address = canonicalise_email(address) except ValueError as e: raise SynapseError(400, str(e)) existing_user_id = await self.store.get_user_id_by_threepid( medium, address ) if existing_user_id is not None: raise SynapseError( 400, "%s is already in use" % medium, Codes.THREEPID_IN_USE, ) entries = await self.store.get_user_agents_ips_to_ui_auth_session( session_id ) registered_user_id = await self.registration_handler.register_user( localpart=desired_username, password_hash=password_hash, guest_access_token=guest_access_token, threepid=threepid, address=client_addr, user_agent_ips=entries, ) # Necessary due to auth checks prior to the threepid being # written to the db if threepid: if is_threepid_reserved( self.hs.config.server.mau_limits_reserved_threepids, threepid ): await self.store.upsert_monthly_active_user(registered_user_id) # Remember that the user account has been registered (and the user # ID it was registered with, since it might not have been specified). await self.auth_handler.set_session_data( session_id, UIAuthSessionDataConstants.REGISTERED_USER_ID, registered_user_id, ) registered = True return_dict = await self._create_registration_details( registered_user_id, params, should_issue_refresh_token=should_issue_refresh_token, ) if registered: # Check if a token was used to authenticate registration registration_token = await self.auth_handler.get_session_data( session_id, UIAuthSessionDataConstants.REGISTRATION_TOKEN, ) if registration_token: # Increment the `completed` counter for the token await self.store.use_registration_token(registration_token) # Indicate that the token has been successfully used so that # pending is not decremented again when expiring old UIA sessions. await self.store.mark_ui_auth_stage_complete( session_id, LoginType.REGISTRATION_TOKEN, True, ) await self.registration_handler.post_registration_actions( user_id=registered_user_id, auth_result=auth_result, access_token=return_dict.get("access_token"), ) return 200, return_dict async def _do_appservice_registration( self, username: str, as_token: str, body: JsonDict, should_issue_refresh_token: bool = False, ) -> JsonDict: user_id = await self.registration_handler.appservice_register( username, as_token ) return await self._create_registration_details( user_id, body, is_appservice_ghost=True, should_issue_refresh_token=should_issue_refresh_token, ) async def _create_registration_details( self, user_id: str, params: JsonDict, is_appservice_ghost: bool = False, should_issue_refresh_token: bool = False, ) -> JsonDict: """Complete registration of newly-registered user Allocates device_id if one was not given; also creates access_token. Args: user_id: full canonical @user:id params: registration parameters, from which we pull device_id, initial_device_name and inhibit_login is_appservice_ghost should_issue_refresh_token: True if this registration should issue a refresh token alongside the access token. Returns: dictionary for response from /register """ result: JsonDict = { "user_id": user_id, "home_server": self.hs.hostname, } if not params.get("inhibit_login", False): device_id = params.get("device_id") initial_display_name = params.get("initial_device_display_name") ( device_id, access_token, valid_until_ms, refresh_token, ) = await self.registration_handler.register_device( user_id, device_id, initial_display_name, is_guest=False, is_appservice_ghost=is_appservice_ghost, should_issue_refresh_token=should_issue_refresh_token, ) result.update({"access_token": access_token, "device_id": device_id}) if valid_until_ms is not None: expires_in_ms = valid_until_ms - self.clock.time_msec() result["expires_in_ms"] = expires_in_ms if refresh_token is not None: result["refresh_token"] = refresh_token return result async def _do_guest_registration( self, params: JsonDict, address: Optional[str] = None ) -> Tuple[int, JsonDict]: if not self.hs.config.registration.allow_guest_access: raise SynapseError(403, "Guest access is disabled") user_id = await self.registration_handler.register_user( make_guest=True, address=address ) # we don't allow guests to specify their own device_id, because # we have nowhere to store it. device_id = synapse.api.auth.GUEST_DEVICE_ID initial_display_name = params.get("initial_device_display_name") ( device_id, access_token, valid_until_ms, refresh_token, ) = await self.registration_handler.register_device( user_id, device_id, initial_display_name, is_guest=True ) result: JsonDict = { "user_id": user_id, "device_id": device_id, "access_token": access_token, "home_server": self.hs.hostname, } if valid_until_ms is not None: expires_in_ms = valid_until_ms - self.clock.time_msec() result["expires_in_ms"] = expires_in_ms if refresh_token is not None: result["refresh_token"] = refresh_token return 200, result def _calculate_registration_flows( config: HomeServerConfig, auth_handler: AuthHandler ) -> List[List[str]]: """Get a suitable flows list for registration Args: config: server configuration auth_handler: authorization handler Returns: a list of supported flows """ # FIXME: need a better error than "no auth flow found" for scenarios # where we required 3PID for registration but the user didn't give one require_email = "email" in config.registration.registrations_require_3pid require_msisdn = "msisdn" in config.registration.registrations_require_3pid show_msisdn = True show_email = True if config.registration.disable_msisdn_registration: show_msisdn = False require_msisdn = False enabled_auth_types = auth_handler.get_enabled_auth_types() if LoginType.EMAIL_IDENTITY not in enabled_auth_types: show_email = False if require_email: raise ConfigError( "Configuration requires email address at registration, but email " "validation is not configured" ) if LoginType.MSISDN not in enabled_auth_types: show_msisdn = False if require_msisdn: raise ConfigError( "Configuration requires msisdn at registration, but msisdn " "validation is not configured" ) flows = [] # only support 3PIDless registration if no 3PIDs are required if not require_email and not require_msisdn: # Add a dummy step here, otherwise if a client completes # recaptcha first we'll assume they were going for this flow # and complete the request, when they could have been trying to # complete one of the flows with email/msisdn auth. flows.append([LoginType.DUMMY]) # only support the email-only flow if we don't require MSISDN 3PIDs if show_email and not require_msisdn: flows.append([LoginType.EMAIL_IDENTITY]) # only support the MSISDN-only flow if we don't require email 3PIDs if show_msisdn and not require_email: flows.append([LoginType.MSISDN]) if show_email and show_msisdn: # always let users provide both MSISDN & email flows.append([LoginType.MSISDN, LoginType.EMAIL_IDENTITY]) # Prepend m.login.terms to all flows if we're requiring consent if config.consent.user_consent_at_registration: for flow in flows: flow.insert(0, LoginType.TERMS) # Prepend recaptcha to all flows if we're requiring captcha if config.captcha.enable_registration_captcha: for flow in flows: flow.insert(0, LoginType.RECAPTCHA) # Prepend registration token to all flows if we're requiring a token if config.registration.registration_requires_token: for flow in flows: flow.insert(0, LoginType.REGISTRATION_TOKEN) return flows def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: EmailRegisterRequestTokenRestServlet(hs).register(http_server) MsisdnRegisterRequestTokenRestServlet(hs).register(http_server) UsernameAvailabilityRestServlet(hs).register(http_server) RegistrationSubmitTokenServlet(hs).register(http_server) RegistrationTokenValidityRestServlet(hs).register(http_server) RegisterRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/relations.py000066400000000000000000000300201420514467300215520ustar00rootroot00000000000000# Copyright 2019 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This class implements the proposed relation APIs from MSC 1849. Since the MSC has not been approved all APIs here are unstable and may change at any time to reflect changes in the MSC. """ import logging from typing import TYPE_CHECKING, Optional, Tuple from synapse.api.constants import RelationTypes from synapse.api.errors import SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.storage.relations import ( AggregationPaginationToken, PaginationChunk, RelationPaginationToken, ) from synapse.types import JsonDict, RoomStreamToken, StreamToken if TYPE_CHECKING: from synapse.server import HomeServer from synapse.storage.databases.main import DataStore logger = logging.getLogger(__name__) async def _parse_token( store: "DataStore", token: Optional[str] ) -> Optional[StreamToken]: """ For backwards compatibility support RelationPaginationToken, but new pagination tokens are generated as full StreamTokens, to be compatible with /sync and /messages. """ if not token: return None # Luckily the format for StreamToken and RelationPaginationToken differ enough # that they can easily be separated. An "_" appears in the serialization of # RoomStreamToken (as part of StreamToken), but RelationPaginationToken uses # "-" only for separators. if "_" in token: return await StreamToken.from_string(store, token) else: relation_token = RelationPaginationToken.from_string(token) return StreamToken( room_key=RoomStreamToken(relation_token.topological, relation_token.stream), presence_key=0, typing_key=0, receipt_key=0, account_data_key=0, push_rules_key=0, to_device_key=0, device_list_key=0, groups_key=0, ) class RelationPaginationServlet(RestServlet): """API to paginate relations on an event by topological ordering, optionally filtered by relation type and event type. """ PATTERNS = client_patterns( "/rooms/(?P[^/]*)/relations/(?P[^/]*)" "(/(?P[^/]*)(/(?P[^/]*))?)?$", releases=(), ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.clock = hs.get_clock() self._event_serializer = hs.get_event_client_serializer() self.event_handler = hs.get_event_handler() async def on_GET( self, request: SynapseRequest, room_id: str, parent_id: str, relation_type: Optional[str] = None, event_type: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) await self.auth.check_user_in_room_or_world_readable( room_id, requester.user.to_string(), allow_departed_users=True ) # This gets the original event and checks that a) the event exists and # b) the user is allowed to view it. event = await self.event_handler.get_event(requester.user, room_id, parent_id) if event is None: raise SynapseError(404, "Unknown parent event.") limit = parse_integer(request, "limit", default=5) direction = parse_string( request, "org.matrix.msc3715.dir", default="b", allowed_values=["f", "b"] ) from_token_str = parse_string(request, "from") to_token_str = parse_string(request, "to") if event.internal_metadata.is_redacted(): # If the event is redacted, return an empty list of relations pagination_chunk = PaginationChunk(chunk=[]) else: # Return the relations from_token = await _parse_token(self.store, from_token_str) to_token = await _parse_token(self.store, to_token_str) pagination_chunk = await self.store.get_relations_for_event( event_id=parent_id, room_id=room_id, relation_type=relation_type, event_type=event_type, limit=limit, direction=direction, from_token=from_token, to_token=to_token, ) events = await self.store.get_events_as_list( [c["event_id"] for c in pagination_chunk.chunk] ) now = self.clock.time_msec() # Do not bundle aggregations when retrieving the original event because # we want the content before relations are applied to it. original_event = self._event_serializer.serialize_event( event, now, bundle_aggregations=None ) # The relations returned for the requested event do include their # bundled aggregations. aggregations = await self.store.get_bundled_aggregations( events, requester.user.to_string() ) serialized_events = self._event_serializer.serialize_events( events, now, bundle_aggregations=aggregations ) return_value = await pagination_chunk.to_dict(self.store) return_value["chunk"] = serialized_events return_value["original_event"] = original_event return 200, return_value class RelationAggregationPaginationServlet(RestServlet): """API to paginate aggregation groups of relations, e.g. paginate the types and counts of the reactions on the events. Example request and response: GET /rooms/{room_id}/aggregations/{parent_id} { chunk: [ { "type": "m.reaction", "key": "👍", "count": 3 } ] } """ PATTERNS = client_patterns( "/rooms/(?P[^/]*)/aggregations/(?P[^/]*)" "(/(?P[^/]*)(/(?P[^/]*))?)?$", releases=(), ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.event_handler = hs.get_event_handler() async def on_GET( self, request: SynapseRequest, room_id: str, parent_id: str, relation_type: Optional[str] = None, event_type: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) await self.auth.check_user_in_room_or_world_readable( room_id, requester.user.to_string(), allow_departed_users=True, ) # This checks that a) the event exists and b) the user is allowed to # view it. event = await self.event_handler.get_event(requester.user, room_id, parent_id) if event is None: raise SynapseError(404, "Unknown parent event.") if relation_type not in (RelationTypes.ANNOTATION, None): raise SynapseError( 400, f"Relation type must be '{RelationTypes.ANNOTATION}'" ) limit = parse_integer(request, "limit", default=5) from_token_str = parse_string(request, "from") to_token_str = parse_string(request, "to") if event.internal_metadata.is_redacted(): # If the event is redacted, return an empty list of relations pagination_chunk = PaginationChunk(chunk=[]) else: # Return the relations from_token = None if from_token_str: from_token = AggregationPaginationToken.from_string(from_token_str) to_token = None if to_token_str: to_token = AggregationPaginationToken.from_string(to_token_str) pagination_chunk = await self.store.get_aggregation_groups_for_event( event_id=parent_id, room_id=room_id, event_type=event_type, limit=limit, from_token=from_token, to_token=to_token, ) return 200, await pagination_chunk.to_dict(self.store) class RelationAggregationGroupPaginationServlet(RestServlet): """API to paginate within an aggregation group of relations, e.g. paginate all the 👍 reactions on an event. Example request and response: GET /rooms/{room_id}/aggregations/{parent_id}/m.annotation/m.reaction/👍 { chunk: [ { "type": "m.reaction", "content": { "m.relates_to": { "rel_type": "m.annotation", "key": "👍" } } }, ... ] } """ PATTERNS = client_patterns( "/rooms/(?P[^/]*)/aggregations/(?P[^/]*)" "/(?P[^/]*)/(?P[^/]*)/(?P[^/]*)$", releases=(), ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.clock = hs.get_clock() self._event_serializer = hs.get_event_client_serializer() self.event_handler = hs.get_event_handler() async def on_GET( self, request: SynapseRequest, room_id: str, parent_id: str, relation_type: str, event_type: str, key: str, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) await self.auth.check_user_in_room_or_world_readable( room_id, requester.user.to_string(), allow_departed_users=True, ) # This checks that a) the event exists and b) the user is allowed to # view it. event = await self.event_handler.get_event(requester.user, room_id, parent_id) if event is None: raise SynapseError(404, "Unknown parent event.") if relation_type != RelationTypes.ANNOTATION: raise SynapseError(400, "Relation type must be 'annotation'") limit = parse_integer(request, "limit", default=5) from_token_str = parse_string(request, "from") to_token_str = parse_string(request, "to") from_token = await _parse_token(self.store, from_token_str) to_token = await _parse_token(self.store, to_token_str) result = await self.store.get_relations_for_event( event_id=parent_id, room_id=room_id, relation_type=relation_type, event_type=event_type, aggregation_key=key, limit=limit, from_token=from_token, to_token=to_token, ) events = await self.store.get_events_as_list( [c["event_id"] for c in result.chunk] ) now = self.clock.time_msec() serialized_events = self._event_serializer.serialize_events(events, now) return_value = await result.to_dict(self.store) return_value["chunk"] = serialized_events return 200, return_value def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: RelationPaginationServlet(hs).register(http_server) RelationAggregationPaginationServlet(hs).register(http_server) RelationAggregationGroupPaginationServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/report_event.py000066400000000000000000000047361420514467300223050ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReportEventRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/report/(?P[^/]*)$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.clock = hs.get_clock() self.store = hs.get_datastore() async def on_POST( self, request: SynapseRequest, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) user_id = requester.user.to_string() body = parse_json_object_from_request(request) if not isinstance(body.get("reason", ""), str): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'reason' must be a string", Codes.BAD_JSON, ) if not isinstance(body.get("score", 0), int): raise SynapseError( HTTPStatus.BAD_REQUEST, "Param 'score' must be an integer", Codes.BAD_JSON, ) await self.store.add_event_report( room_id=room_id, event_id=event_id, user_id=user_id, reason=body.get("reason"), content=body, received_ts=self.clock.time_msec(), ) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ReportEventRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/room.py000066400000000000000000001332201420514467300205340ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This module contains REST servlets to do with rooms: /rooms/ """ import logging import re from typing import TYPE_CHECKING, Awaitable, Dict, List, Optional, Tuple from urllib import parse as urlparse from twisted.web.server import Request from synapse.api.constants import EventTypes, Membership from synapse.api.errors import ( AuthError, Codes, InvalidClientCredentialsError, MissingClientTokenError, ShadowBanError, SynapseError, ) from synapse.api.filtering import Filter from synapse.events.utils import format_event_for_client_v2 from synapse.http.server import HttpServer from synapse.http.servlet import ( ResolveRoomIdMixin, RestServlet, assert_params_in_dict, parse_boolean, parse_integer, parse_json_object_from_request, parse_string, parse_strings_from_args, ) from synapse.http.site import SynapseRequest from synapse.logging.opentracing import set_tag from synapse.rest.client._base import client_patterns from synapse.rest.client.transactions import HttpTransactionCache from synapse.storage.state import StateFilter from synapse.streams.config import PaginationConfig from synapse.types import JsonDict, StreamToken, ThirdPartyInstanceID, UserID from synapse.util import json_decoder from synapse.util.stringutils import parse_and_validate_server_name, random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class TransactionRestServlet(RestServlet): def __init__(self, hs: "HomeServer"): super().__init__() self.txns = HttpTransactionCache(hs) class RoomCreateRestServlet(TransactionRestServlet): # No PATTERN; we have custom dispatch rules here def __init__(self, hs: "HomeServer"): super().__init__(hs) self._room_creation_handler = hs.get_room_creation_handler() self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: PATTERNS = "/createRoom" register_txn_path(self, PATTERNS, http_server) def on_PUT( self, request: SynapseRequest, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request(request, self.on_POST, request) async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) info, _ = await self._room_creation_handler.create_room( requester, self.get_room_config(request) ) return 200, info def get_room_config(self, request: Request) -> JsonDict: user_supplied_config = parse_json_object_from_request(request) return user_supplied_config # TODO: Needs unit testing for generic events class RoomStateEventRestServlet(TransactionRestServlet): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.event_creation_handler = hs.get_event_creation_handler() self.room_member_handler = hs.get_room_member_handler() self.message_handler = hs.get_message_handler() self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: # /room/$roomid/state/$eventtype no_state_key = "/rooms/(?P[^/]*)/state/(?P[^/]*)$" # /room/$roomid/state/$eventtype/$statekey state_key = ( "/rooms/(?P[^/]*)/state/" "(?P[^/]*)/(?P[^/]*)$" ) http_server.register_paths( "GET", client_patterns(state_key, v1=True), self.on_GET, self.__class__.__name__, ) http_server.register_paths( "PUT", client_patterns(state_key, v1=True), self.on_PUT, self.__class__.__name__, ) http_server.register_paths( "GET", client_patterns(no_state_key, v1=True), self.on_GET_no_state_key, self.__class__.__name__, ) http_server.register_paths( "PUT", client_patterns(no_state_key, v1=True), self.on_PUT_no_state_key, self.__class__.__name__, ) def on_GET_no_state_key( self, request: SynapseRequest, room_id: str, event_type: str ) -> Awaitable[Tuple[int, JsonDict]]: return self.on_GET(request, room_id, event_type, "") def on_PUT_no_state_key( self, request: SynapseRequest, room_id: str, event_type: str ) -> Awaitable[Tuple[int, JsonDict]]: return self.on_PUT(request, room_id, event_type, "") async def on_GET( self, request: SynapseRequest, room_id: str, event_type: str, state_key: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) format = parse_string( request, "format", default="content", allowed_values=["content", "event"] ) msg_handler = self.message_handler data = await msg_handler.get_room_data( user_id=requester.user.to_string(), room_id=room_id, event_type=event_type, state_key=state_key, ) if not data: raise SynapseError(404, "Event not found.", errcode=Codes.NOT_FOUND) if format == "event": event = format_event_for_client_v2(data.get_dict()) return 200, event elif format == "content": return 200, data.get_dict()["content"] # Format must be event or content, per the parse_string call above. raise RuntimeError(f"Unknown format: {format:r}.") async def on_PUT( self, request: SynapseRequest, room_id: str, event_type: str, state_key: str, txn_id: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) if txn_id: set_tag("txn_id", txn_id) content = parse_json_object_from_request(request) event_dict = { "type": event_type, "content": content, "room_id": room_id, "sender": requester.user.to_string(), } if state_key is not None: event_dict["state_key"] = state_key try: if event_type == EventTypes.Member: membership = content.get("membership", None) event_id, _ = await self.room_member_handler.update_membership( requester, target=UserID.from_string(state_key), room_id=room_id, action=membership, content=content, ) else: ( event, _, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, event_dict, txn_id=txn_id ) event_id = event.event_id except ShadowBanError: event_id = "$" + random_string(43) set_tag("event_id", event_id) ret = {"event_id": event_id} return 200, ret # TODO: Needs unit testing for generic events + feedback class RoomSendEventRestServlet(TransactionRestServlet): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.event_creation_handler = hs.get_event_creation_handler() self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: # /rooms/$roomid/send/$event_type[/$txn_id] PATTERNS = "/rooms/(?P[^/]*)/send/(?P[^/]*)" register_txn_path(self, PATTERNS, http_server, with_get=True) async def on_POST( self, request: SynapseRequest, room_id: str, event_type: str, txn_id: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) content = parse_json_object_from_request(request) event_dict: JsonDict = { "type": event_type, "content": content, "room_id": room_id, "sender": requester.user.to_string(), } # Twisted will have processed the args by now. assert request.args is not None if b"ts" in request.args and requester.app_service: event_dict["origin_server_ts"] = parse_integer(request, "ts", 0) try: ( event, _, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, event_dict, txn_id=txn_id ) event_id = event.event_id except ShadowBanError: event_id = "$" + random_string(43) set_tag("event_id", event_id) return 200, {"event_id": event_id} def on_GET( self, request: SynapseRequest, room_id: str, event_type: str, txn_id: str ) -> Tuple[int, str]: return 200, "Not implemented" def on_PUT( self, request: SynapseRequest, room_id: str, event_type: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_id, event_type, txn_id ) # TODO: Needs unit testing for room ID + alias joins class JoinRoomAliasServlet(ResolveRoomIdMixin, TransactionRestServlet): def __init__(self, hs: "HomeServer"): super().__init__(hs) super(ResolveRoomIdMixin, self).__init__(hs) # ensure the Mixin is set up self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: # /join/$room_identifier[/$txn_id] PATTERNS = "/join/(?P[^/]*)" register_txn_path(self, PATTERNS, http_server) async def on_POST( self, request: SynapseRequest, room_identifier: str, txn_id: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) try: content = parse_json_object_from_request(request) except Exception: # Turns out we used to ignore the body entirely, and some clients # cheekily send invalid bodies. content = {} # twisted.web.server.Request.args is incorrectly defined as Optional[Any] args: Dict[bytes, List[bytes]] = request.args # type: ignore remote_room_hosts = parse_strings_from_args(args, "server_name", required=False) room_id, remote_room_hosts = await self.resolve_room_id( room_identifier, remote_room_hosts, ) await self.room_member_handler.update_membership( requester=requester, target=requester.user, room_id=room_id, action="join", txn_id=txn_id, remote_room_hosts=remote_room_hosts, content=content, third_party_signed=content.get("third_party_signed", None), ) return 200, {"room_id": room_id} def on_PUT( self, request: SynapseRequest, room_identifier: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_identifier, txn_id ) # TODO: Needs unit testing class PublicRoomListRestServlet(TransactionRestServlet): PATTERNS = client_patterns("/publicRooms$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__(hs) self.hs = hs self.auth = hs.get_auth() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: server = parse_string(request, "server") try: await self.auth.get_user_by_req(request, allow_guest=True) except InvalidClientCredentialsError as e: # Option to allow servers to require auth when accessing # /publicRooms via CS API. This is especially helpful in private # federations. if not self.hs.config.server.allow_public_rooms_without_auth: raise # We allow people to not be authed if they're just looking at our # room list, but require auth when we proxy the request. # In both cases we call the auth function, as that has the side # effect of logging who issued this request if an access token was # provided. if server: raise e limit: Optional[int] = parse_integer(request, "limit", 0) since_token = parse_string(request, "since") if limit == 0: # zero is a special value which corresponds to no limit. limit = None handler = self.hs.get_room_list_handler() if server and server != self.hs.config.server.server_name: # Ensure the server is valid. try: parse_and_validate_server_name(server) except ValueError: raise SynapseError( 400, "Invalid server name: %s" % (server,), Codes.INVALID_PARAM, ) data = await handler.get_remote_public_room_list( server, limit=limit, since_token=since_token ) else: data = await handler.get_local_public_room_list( limit=limit, since_token=since_token ) return 200, data async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) server = parse_string(request, "server") content = parse_json_object_from_request(request) limit: Optional[int] = int(content.get("limit", 100)) since_token = content.get("since", None) search_filter = content.get("filter", None) include_all_networks = content.get("include_all_networks", False) third_party_instance_id = content.get("third_party_instance_id", None) if include_all_networks: network_tuple = None if third_party_instance_id is not None: raise SynapseError( 400, "Can't use include_all_networks with an explicit network" ) elif third_party_instance_id is None: network_tuple = ThirdPartyInstanceID(None, None) else: network_tuple = ThirdPartyInstanceID.from_string(third_party_instance_id) if limit == 0: # zero is a special value which corresponds to no limit. limit = None handler = self.hs.get_room_list_handler() if server and server != self.hs.config.server.server_name: # Ensure the server is valid. try: parse_and_validate_server_name(server) except ValueError: raise SynapseError( 400, "Invalid server name: %s" % (server,), Codes.INVALID_PARAM, ) data = await handler.get_remote_public_room_list( server, limit=limit, since_token=since_token, search_filter=search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) else: data = await handler.get_local_public_room_list( limit=limit, since_token=since_token, search_filter=search_filter, network_tuple=network_tuple, ) return 200, data # TODO: Needs unit testing class RoomMemberListRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/members$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.message_handler = hs.get_message_handler() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: # TODO support Pagination stream API (limit/tokens) requester = await self.auth.get_user_by_req(request, allow_guest=True) handler = self.message_handler # request the state as of a given event, as identified by a stream token, # for consistency with /messages etc. # useful for getting the membership in retrospect as of a given /sync # response. at_token_string = parse_string(request, "at") if at_token_string is None: at_token = None else: at_token = await StreamToken.from_string(self.store, at_token_string) # let you filter down on particular memberships. # XXX: this may not be the best shape for this API - we could pass in a filter # instead, except filters aren't currently aware of memberships. # See https://github.com/matrix-org/matrix-doc/issues/1337 for more details. membership = parse_string(request, "membership") not_membership = parse_string(request, "not_membership") events = await handler.get_state_events( room_id=room_id, user_id=requester.user.to_string(), at_token=at_token, state_filter=StateFilter.from_types([(EventTypes.Member, None)]), ) chunk = [] for event in events: if (membership and event["content"].get("membership") != membership) or ( not_membership and event["content"].get("membership") == not_membership ): continue chunk.append(event) return 200, {"chunk": chunk} # deprecated in favour of /members?membership=join? # except it does custom AS logic and has a simpler return format class JoinedRoomMemberListRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/joined_members$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.message_handler = hs.get_message_handler() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) users_with_profile = await self.message_handler.get_joined_members( requester, room_id ) return 200, {"joined": users_with_profile} # TODO: Needs better unit testing class RoomMessageListRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/messages$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self._hs = hs self.pagination_handler = hs.get_pagination_handler() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) pagination_config = await PaginationConfig.from_request( self.store, request, default_limit=10 ) # Twisted will have processed the args by now. assert request.args is not None as_client_event = b"raw" not in request.args filter_str = parse_string(request, "filter", encoding="utf-8") if filter_str: filter_json = urlparse.unquote(filter_str) event_filter: Optional[Filter] = Filter( self._hs, json_decoder.decode(filter_json) ) if ( event_filter and event_filter.filter_json.get("event_format", "client") == "federation" ): as_client_event = False else: event_filter = None msgs = await self.pagination_handler.get_messages( room_id=room_id, requester=requester, pagin_config=pagination_config, as_client_event=as_client_event, event_filter=event_filter, ) return 200, msgs # TODO: Needs unit testing class RoomStateRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/state$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.message_handler = hs.get_message_handler() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, List[JsonDict]]: requester = await self.auth.get_user_by_req(request, allow_guest=True) # Get all the current state for this room events = await self.message_handler.get_state_events( room_id=room_id, user_id=requester.user.to_string(), is_guest=requester.is_guest, ) return 200, events # TODO: Needs unit testing class RoomInitialSyncRestServlet(RestServlet): PATTERNS = client_patterns("/rooms/(?P[^/]*)/initialSync$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.initial_sync_handler = hs.get_initial_sync_handler() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) pagination_config = await PaginationConfig.from_request(self.store, request) content = await self.initial_sync_handler.room_initial_sync( room_id=room_id, requester=requester, pagin_config=pagination_config ) return 200, content class RoomEventServlet(RestServlet): PATTERNS = client_patterns( "/rooms/(?P[^/]*)/event/(?P[^/]*)$", v1=True ) def __init__(self, hs: "HomeServer"): super().__init__() self.clock = hs.get_clock() self._store = hs.get_datastore() self.event_handler = hs.get_event_handler() self._event_serializer = hs.get_event_client_serializer() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) try: event = await self.event_handler.get_event( requester.user, room_id, event_id ) except AuthError: # This endpoint is supposed to return a 404 when the requester does # not have permission to access the event # https://matrix.org/docs/spec/client_server/r0.5.0#get-matrix-client-r0-rooms-roomid-event-eventid raise SynapseError(404, "Event not found.", errcode=Codes.NOT_FOUND) if event: # Ensure there are bundled aggregations available. aggregations = await self._store.get_bundled_aggregations( [event], requester.user.to_string() ) time_now = self.clock.time_msec() event_dict = self._event_serializer.serialize_event( event, time_now, bundle_aggregations=aggregations ) return 200, event_dict raise SynapseError(404, "Event not found.", errcode=Codes.NOT_FOUND) class RoomEventContextServlet(RestServlet): PATTERNS = client_patterns( "/rooms/(?P[^/]*)/context/(?P[^/]*)$", v1=True ) def __init__(self, hs: "HomeServer"): super().__init__() self._hs = hs self.clock = hs.get_clock() self.room_context_handler = hs.get_room_context_handler() self._event_serializer = hs.get_event_client_serializer() self.auth = hs.get_auth() async def on_GET( self, request: SynapseRequest, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) limit = parse_integer(request, "limit", default=10) # picking the API shape for symmetry with /messages filter_str = parse_string(request, "filter", encoding="utf-8") if filter_str: filter_json = urlparse.unquote(filter_str) event_filter: Optional[Filter] = Filter( self._hs, json_decoder.decode(filter_json) ) else: event_filter = None event_context = await self.room_context_handler.get_event_context( requester, room_id, event_id, limit, event_filter ) if not event_context: raise SynapseError(404, "Event not found.", errcode=Codes.NOT_FOUND) time_now = self.clock.time_msec() results = { "events_before": self._event_serializer.serialize_events( event_context.events_before, time_now, bundle_aggregations=event_context.aggregations, ), "event": self._event_serializer.serialize_event( event_context.event, time_now, bundle_aggregations=event_context.aggregations, ), "events_after": self._event_serializer.serialize_events( event_context.events_after, time_now, bundle_aggregations=event_context.aggregations, ), "state": self._event_serializer.serialize_events( event_context.state, time_now ), "start": event_context.start, "end": event_context.end, } return 200, results class RoomForgetRestServlet(TransactionRestServlet): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.room_member_handler = hs.get_room_member_handler() self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: PATTERNS = "/rooms/(?P[^/]*)/forget" register_txn_path(self, PATTERNS, http_server) async def on_POST( self, request: SynapseRequest, room_id: str, txn_id: Optional[str] = None ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=False) await self.room_member_handler.forget(user=requester.user, room_id=room_id) return 200, {} def on_PUT( self, request: SynapseRequest, room_id: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_id, txn_id ) # TODO: Needs unit testing class RoomMembershipRestServlet(TransactionRestServlet): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.room_member_handler = hs.get_room_member_handler() self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: # /rooms/$roomid/[invite|join|leave] PATTERNS = ( "/rooms/(?P[^/]*)/" "(?Pjoin|invite|leave|ban|unban|kick)" ) register_txn_path(self, PATTERNS, http_server) async def on_POST( self, request: SynapseRequest, room_id: str, membership_action: str, txn_id: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) if requester.is_guest and membership_action not in { Membership.JOIN, Membership.LEAVE, }: raise AuthError(403, "Guest access not allowed") try: content = parse_json_object_from_request(request) except Exception: # Turns out we used to ignore the body entirely, and some clients # cheekily send invalid bodies. content = {} if membership_action == "invite" and self._has_3pid_invite_keys(content): try: await self.room_member_handler.do_3pid_invite( room_id, requester.user, content["medium"], content["address"], content["id_server"], requester, txn_id, content.get("id_access_token"), ) except ShadowBanError: # Pretend the request succeeded. pass return 200, {} target = requester.user if membership_action in ["invite", "ban", "unban", "kick"]: assert_params_in_dict(content, ["user_id"]) target = UserID.from_string(content["user_id"]) event_content = None if "reason" in content: event_content = {"reason": content["reason"]} try: await self.room_member_handler.update_membership( requester=requester, target=target, room_id=room_id, action=membership_action, txn_id=txn_id, third_party_signed=content.get("third_party_signed", None), content=event_content, ) except ShadowBanError: # Pretend the request succeeded. pass return_value = {} if membership_action == "join": return_value["room_id"] = room_id return 200, return_value def _has_3pid_invite_keys(self, content: JsonDict) -> bool: for key in {"id_server", "medium", "address"}: if key not in content: return False return True def on_PUT( self, request: SynapseRequest, room_id: str, membership_action: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_id, membership_action, txn_id ) class RoomRedactEventRestServlet(TransactionRestServlet): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.event_creation_handler = hs.get_event_creation_handler() self.auth = hs.get_auth() def register(self, http_server: HttpServer) -> None: PATTERNS = "/rooms/(?P[^/]*)/redact/(?P[^/]*)" register_txn_path(self, PATTERNS, http_server) async def on_POST( self, request: SynapseRequest, room_id: str, event_id: str, txn_id: Optional[str] = None, ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) content = parse_json_object_from_request(request) try: ( event, _, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.Redaction, "content": content, "room_id": room_id, "sender": requester.user.to_string(), "redacts": event_id, }, txn_id=txn_id, ) event_id = event.event_id except ShadowBanError: event_id = "$" + random_string(43) set_tag("event_id", event_id) return 200, {"event_id": event_id} def on_PUT( self, request: SynapseRequest, room_id: str, event_id: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_id, event_id, txn_id ) class RoomTypingRestServlet(RestServlet): PATTERNS = client_patterns( "/rooms/(?P[^/]*)/typing/(?P[^/]*)$", v1=True ) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.presence_handler = hs.get_presence_handler() self.auth = hs.get_auth() # If we're not on the typing writer instance we should scream if we get # requests. self._is_typing_writer = ( hs.get_instance_name() in hs.config.worker.writers.typing ) async def on_PUT( self, request: SynapseRequest, room_id: str, user_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if not self._is_typing_writer: raise Exception("Got /typing request on instance that is not typing writer") room_id = urlparse.unquote(room_id) target_user = UserID.from_string(urlparse.unquote(user_id)) content = parse_json_object_from_request(request) await self.presence_handler.bump_presence_active_time(requester.user) # Limit timeout to stop people from setting silly typing timeouts. timeout = min(content.get("timeout", 30000), 120000) # Defer getting the typing handler since it will raise on workers. typing_handler = self.hs.get_typing_writer_handler() try: if content["typing"]: await typing_handler.started_typing( target_user=target_user, requester=requester, room_id=room_id, timeout=timeout, ) else: await typing_handler.stopped_typing( target_user=target_user, requester=requester, room_id=room_id ) except ShadowBanError: # Pretend this worked without error. pass return 200, {} class RoomAliasListServlet(RestServlet): PATTERNS = [ re.compile( r"^/_matrix/client/unstable/org\.matrix\.msc2432" r"/rooms/(?P[^/]*)/aliases" ), ] + list(client_patterns("/rooms/(?P[^/]*)/aliases$", unstable=False)) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.directory_handler = hs.get_directory_handler() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) alias_list = await self.directory_handler.get_aliases_for_room( requester, room_id ) return 200, {"aliases": alias_list} class SearchRestServlet(RestServlet): PATTERNS = client_patterns("/search$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.search_handler = hs.get_search_handler() self.auth = hs.get_auth() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) content = parse_json_object_from_request(request) batch = parse_string(request, "next_batch") results = await self.search_handler.search(requester.user, content, batch) return 200, results class JoinedRoomsRestServlet(RestServlet): PATTERNS = client_patterns("/joined_rooms$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.store = hs.get_datastore() self.auth = hs.get_auth() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) room_ids = await self.store.get_rooms_for_user(requester.user.to_string()) return 200, {"joined_rooms": list(room_ids)} def register_txn_path( servlet: RestServlet, regex_string: str, http_server: HttpServer, with_get: bool = False, ) -> None: """Registers a transaction-based path. This registers two paths: PUT regex_string/$txnid POST regex_string Args: regex_string: The regex string to register. Must NOT have a trailing $ as this string will be appended to. http_server: The http_server to register paths with. with_get: True to also register respective GET paths for the PUTs. """ on_POST = getattr(servlet, "on_POST", None) on_PUT = getattr(servlet, "on_PUT", None) if on_POST is None or on_PUT is None: raise RuntimeError("on_POST and on_PUT must exist when using register_txn_path") http_server.register_paths( "POST", client_patterns(regex_string + "$", v1=True), on_POST, servlet.__class__.__name__, ) http_server.register_paths( "PUT", client_patterns(regex_string + "/(?P[^/]*)$", v1=True), on_PUT, servlet.__class__.__name__, ) on_GET = getattr(servlet, "on_GET", None) if with_get: if on_GET is None: raise RuntimeError( "register_txn_path called with with_get = True, but no on_GET method exists" ) http_server.register_paths( "GET", client_patterns(regex_string + "/(?P[^/]*)$", v1=True), on_GET, servlet.__class__.__name__, ) class TimestampLookupRestServlet(RestServlet): """ API endpoint to fetch the `event_id` of the closest event to the given timestamp (`ts` query parameter) in the given direction (`dir` query parameter). Useful for cases like jump to date so you can start paginating messages from a given date in the archive. `ts` is a timestamp in milliseconds where we will find the closest event in the given direction. `dir` can be `f` or `b` to indicate forwards and backwards in time from the given timestamp. GET /_matrix/client/unstable/org.matrix.msc3030/rooms//timestamp_to_event?ts=&dir= { "event_id": ... } """ PATTERNS = ( re.compile( "^/_matrix/client/unstable/org.matrix.msc3030" "/rooms/(?P[^/]*)/timestamp_to_event$" ), ) def __init__(self, hs: "HomeServer"): super().__init__() self._auth = hs.get_auth() self._store = hs.get_datastore() self.timestamp_lookup_handler = hs.get_timestamp_lookup_handler() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request) await self._auth.check_user_in_room(room_id, requester.user.to_string()) timestamp = parse_integer(request, "ts", required=True) direction = parse_string(request, "dir", default="f", allowed_values=["f", "b"]) ( event_id, origin_server_ts, ) = await self.timestamp_lookup_handler.get_event_for_timestamp( requester, room_id, timestamp, direction ) return 200, { "event_id": event_id, "origin_server_ts": origin_server_ts, } class RoomSpaceSummaryRestServlet(RestServlet): PATTERNS = ( re.compile( "^/_matrix/client/unstable/org.matrix.msc2946" "/rooms/(?P[^/]*)/spaces$" ), ) def __init__(self, hs: "HomeServer"): super().__init__() self._auth = hs.get_auth() self._room_summary_handler = hs.get_room_summary_handler() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request, allow_guest=True) max_rooms_per_space = parse_integer(request, "max_rooms_per_space") if max_rooms_per_space is not None and max_rooms_per_space < 0: raise SynapseError( 400, "Value for 'max_rooms_per_space' must be a non-negative integer", Codes.BAD_JSON, ) return 200, await self._room_summary_handler.get_space_summary( requester.user.to_string(), room_id, suggested_only=parse_boolean(request, "suggested_only", default=False), max_rooms_per_space=max_rooms_per_space, ) # TODO When switching to the stable endpoint, remove the POST handler. async def on_POST( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request, allow_guest=True) content = parse_json_object_from_request(request) suggested_only = content.get("suggested_only", False) if not isinstance(suggested_only, bool): raise SynapseError( 400, "'suggested_only' must be a boolean", Codes.BAD_JSON ) max_rooms_per_space = content.get("max_rooms_per_space") if max_rooms_per_space is not None: if not isinstance(max_rooms_per_space, int): raise SynapseError( 400, "'max_rooms_per_space' must be an integer", Codes.BAD_JSON ) if max_rooms_per_space < 0: raise SynapseError( 400, "Value for 'max_rooms_per_space' must be a non-negative integer", Codes.BAD_JSON, ) return 200, await self._room_summary_handler.get_space_summary( requester.user.to_string(), room_id, suggested_only=suggested_only, max_rooms_per_space=max_rooms_per_space, ) class RoomHierarchyRestServlet(RestServlet): PATTERNS = ( re.compile( "^/_matrix/client/(v1|unstable/org.matrix.msc2946)" "/rooms/(?P[^/]*)/hierarchy$" ), ) def __init__(self, hs: "HomeServer"): super().__init__() self._auth = hs.get_auth() self._room_summary_handler = hs.get_room_summary_handler() async def on_GET( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request, allow_guest=True) max_depth = parse_integer(request, "max_depth") if max_depth is not None and max_depth < 0: raise SynapseError( 400, "'max_depth' must be a non-negative integer", Codes.BAD_JSON ) limit = parse_integer(request, "limit") if limit is not None and limit <= 0: raise SynapseError( 400, "'limit' must be a positive integer", Codes.BAD_JSON ) return 200, await self._room_summary_handler.get_room_hierarchy( requester, room_id, suggested_only=parse_boolean(request, "suggested_only", default=False), max_depth=max_depth, limit=limit, from_token=parse_string(request, "from"), ) class RoomSummaryRestServlet(ResolveRoomIdMixin, RestServlet): PATTERNS = ( re.compile( "^/_matrix/client/unstable/im.nheko.summary" "/rooms/(?P[^/]*)/summary$" ), ) def __init__(self, hs: "HomeServer"): super().__init__(hs) self._auth = hs.get_auth() self._room_summary_handler = hs.get_room_summary_handler() async def on_GET( self, request: SynapseRequest, room_identifier: str ) -> Tuple[int, JsonDict]: try: requester = await self._auth.get_user_by_req(request, allow_guest=True) requester_user_id: Optional[str] = requester.user.to_string() except MissingClientTokenError: # auth is optional requester_user_id = None # twisted.web.server.Request.args is incorrectly defined as Optional[Any] args: Dict[bytes, List[bytes]] = request.args # type: ignore remote_room_hosts = parse_strings_from_args(args, "via", required=False) room_id, remote_room_hosts = await self.resolve_room_id( room_identifier, remote_room_hosts, ) return 200, await self._room_summary_handler.get_room_summary( requester_user_id, room_id, remote_room_hosts, ) def register_servlets( hs: "HomeServer", http_server: HttpServer, is_worker: bool = False ) -> None: RoomStateEventRestServlet(hs).register(http_server) RoomMemberListRestServlet(hs).register(http_server) JoinedRoomMemberListRestServlet(hs).register(http_server) RoomMessageListRestServlet(hs).register(http_server) JoinRoomAliasServlet(hs).register(http_server) RoomMembershipRestServlet(hs).register(http_server) RoomSendEventRestServlet(hs).register(http_server) PublicRoomListRestServlet(hs).register(http_server) RoomStateRestServlet(hs).register(http_server) RoomRedactEventRestServlet(hs).register(http_server) RoomTypingRestServlet(hs).register(http_server) RoomEventContextServlet(hs).register(http_server) RoomSpaceSummaryRestServlet(hs).register(http_server) RoomHierarchyRestServlet(hs).register(http_server) if hs.config.experimental.msc3266_enabled: RoomSummaryRestServlet(hs).register(http_server) RoomEventServlet(hs).register(http_server) JoinedRoomsRestServlet(hs).register(http_server) RoomAliasListServlet(hs).register(http_server) SearchRestServlet(hs).register(http_server) RoomCreateRestServlet(hs).register(http_server) if hs.config.experimental.msc3030_enabled: TimestampLookupRestServlet(hs).register(http_server) # Some servlets only get registered for the main process. if not is_worker: RoomForgetRestServlet(hs).register(http_server) def register_deprecated_servlets(hs: "HomeServer", http_server: HttpServer) -> None: RoomInitialSyncRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/room_batch.py000066400000000000000000000237031420514467300217010ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from http import HTTPStatus from typing import TYPE_CHECKING, Awaitable, Tuple from twisted.web.server import Request from synapse.api.constants import EventContentFields from synapse.api.errors import AuthError, Codes, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, parse_string, parse_strings_from_args, ) from synapse.http.site import SynapseRequest from synapse.rest.client.transactions import HttpTransactionCache from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomBatchSendEventRestServlet(RestServlet): """ API endpoint which can insert a batch of events historically back in time next to the given `prev_event`. `batch_id` comes from `next_batch_id `in the response of the batch send endpoint and is derived from the "insertion" events added to each batch. It's not required for the first batch send. `state_events_at_start` is used to define the historical state events needed to auth the events like join events. These events will float outside of the normal DAG as outlier's and won't be visible in the chat history which also allows us to insert multiple batches without having a bunch of `@mxid joined the room` noise between each batch. `events` is chronological list of events you want to insert. There is a reverse-chronological constraint on batches so once you insert some messages, you can only insert older ones after that. tldr; Insert batches from your most recent history -> oldest history. POST /_matrix/client/unstable/org.matrix.msc2716/rooms//batch_send?prev_event_id=&batch_id= { "events": [ ... ], "state_events_at_start": [ ... ] } """ PATTERNS = ( re.compile( "^/_matrix/client/unstable/org.matrix.msc2716" "/rooms/(?P[^/]*)/batch_send$" ), ) def __init__(self, hs: "HomeServer"): super().__init__() self.store = hs.get_datastore() self.event_creation_handler = hs.get_event_creation_handler() self.auth = hs.get_auth() self.room_batch_handler = hs.get_room_batch_handler() self.txns = HttpTransactionCache(hs) async def on_POST( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=False) if not requester.app_service: raise AuthError( HTTPStatus.FORBIDDEN, "Only application services can use the /batchsend endpoint", ) body = parse_json_object_from_request(request) assert_params_in_dict(body, ["state_events_at_start", "events"]) assert request.args is not None prev_event_ids_from_query = parse_strings_from_args( request.args, "prev_event_id" ) batch_id_from_query = parse_string(request, "batch_id") if prev_event_ids_from_query is None: raise SynapseError( HTTPStatus.BAD_REQUEST, "prev_event query parameter is required when inserting historical messages back in time", errcode=Codes.MISSING_PARAM, ) # Verify the batch_id_from_query corresponds to an actual insertion event # and have the batch connected. if batch_id_from_query: corresponding_insertion_event_id = ( await self.store.get_insertion_event_id_by_batch_id( room_id, batch_id_from_query ) ) if corresponding_insertion_event_id is None: raise SynapseError( HTTPStatus.BAD_REQUEST, "No insertion event corresponds to the given ?batch_id", errcode=Codes.INVALID_PARAM, ) # For the event we are inserting next to (`prev_event_ids_from_query`), # find the most recent auth events (derived from state events) that # allowed that message to be sent. We will use that as a base # to auth our historical messages against. auth_event_ids = await self.room_batch_handler.get_most_recent_auth_event_ids_from_event_id_list( prev_event_ids_from_query ) if not auth_event_ids: raise SynapseError( HTTPStatus.BAD_REQUEST, "No auth events found for given prev_event query parameter. The prev_event=%s probably does not exist." % prev_event_ids_from_query, errcode=Codes.INVALID_PARAM, ) state_event_ids_at_start = [] # Create and persist all of the state events that float off on their own # before the batch. These will most likely be all of the invite/member # state events used to auth the upcoming historical messages. if body["state_events_at_start"]: state_event_ids_at_start = ( await self.room_batch_handler.persist_state_events_at_start( state_events_at_start=body["state_events_at_start"], room_id=room_id, initial_auth_event_ids=auth_event_ids, app_service_requester=requester, ) ) # Update our ongoing auth event ID list with all of the new state we # just created auth_event_ids.extend(state_event_ids_at_start) inherited_depth = await self.room_batch_handler.inherit_depth_from_prev_ids( prev_event_ids_from_query ) events_to_create = body["events"] # Figure out which batch to connect to. If they passed in # batch_id_from_query let's use it. The batch ID passed in comes # from the batch_id in the "insertion" event from the previous batch. last_event_in_batch = events_to_create[-1] base_insertion_event = None if batch_id_from_query: batch_id_to_connect_to = batch_id_from_query # Otherwise, create an insertion event to act as a starting point. # # We don't always have an insertion event to start hanging more history # off of (ideally there would be one in the main DAG, but that's not the # case if we're wanting to add history to e.g. existing rooms without # an insertion event), in which case we just create a new insertion event # that can then get pointed to by a "marker" event later. else: base_insertion_event_dict = ( self.room_batch_handler.create_insertion_event_dict( sender=requester.user.to_string(), room_id=room_id, origin_server_ts=last_event_in_batch["origin_server_ts"], ) ) base_insertion_event_dict["prev_events"] = prev_event_ids_from_query.copy() ( base_insertion_event, _, ) = await self.event_creation_handler.create_and_send_nonmember_event( await self.room_batch_handler.create_requester_for_user_id_from_app_service( base_insertion_event_dict["sender"], requester.app_service, ), base_insertion_event_dict, prev_event_ids=base_insertion_event_dict.get("prev_events"), auth_event_ids=auth_event_ids, historical=True, depth=inherited_depth, ) batch_id_to_connect_to = base_insertion_event.content[ EventContentFields.MSC2716_NEXT_BATCH_ID ] # Create and persist all of the historical events as well as insertion # and batch meta events to make the batch navigable in the DAG. event_ids, next_batch_id = await self.room_batch_handler.handle_batch_of_events( events_to_create=events_to_create, room_id=room_id, batch_id_to_connect_to=batch_id_to_connect_to, inherited_depth=inherited_depth, auth_event_ids=auth_event_ids, app_service_requester=requester, ) insertion_event_id = event_ids[0] batch_event_id = event_ids[-1] historical_event_ids = event_ids[1:-1] response_dict = { "state_event_ids": state_event_ids_at_start, "event_ids": historical_event_ids, "next_batch_id": next_batch_id, "insertion_event_id": insertion_event_id, "batch_event_id": batch_event_id, } if base_insertion_event is not None: response_dict["base_insertion_event_id"] = base_insertion_event.event_id return HTTPStatus.OK, response_dict def on_GET(self, request: Request, room_id: str) -> Tuple[int, str]: return HTTPStatus.NOT_IMPLEMENTED, "Not implemented" def on_PUT( self, request: SynapseRequest, room_id: str ) -> Awaitable[Tuple[int, JsonDict]]: return self.txns.fetch_or_execute_request( request, self.on_POST, request, room_id ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: msc2716_enabled = hs.config.experimental.msc2716_enabled if msc2716_enabled: RoomBatchSendEventRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/room_keys.py000066400000000000000000000345221420514467300215740ustar00rootroot00000000000000# Copyright 2017, 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional, Tuple from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, parse_json_object_from_request, parse_string, ) from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomKeysServlet(RestServlet): PATTERNS = client_patterns( "/room_keys/keys(/(?P[^/]+))?(/(?P[^/]+))?$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler() async def on_PUT( self, request: SynapseRequest, room_id: Optional[str], session_id: Optional[str] ) -> Tuple[int, JsonDict]: """ Uploads one or more encrypted E2E room keys for backup purposes. room_id: the ID of the room the keys are for (optional) session_id: the ID for the E2E room keys for the room (optional) version: the version of the user's backup which this data is for. the version must already have been created via the /room_keys/version API. Each session has: * first_message_index: a numeric index indicating the oldest message encrypted by this session. * forwarded_count: how many times the uploading client claims this key has been shared (forwarded) * is_verified: whether the client that uploaded the keys claims they were sent by a device which they've verified * session_data: base64-encrypted data describing the session. Returns 200 OK on success with body {} Returns 403 Forbidden if the version in question is not the most recently created version (i.e. if this is an old client trying to write to a stale backup) Returns 404 Not Found if the version in question doesn't exist The API is designed to be otherwise agnostic to the room_key encryption algorithm being used. Sessions are merged with existing ones in the backup using the heuristics: * is_verified sessions always win over unverified sessions * older first_message_index always win over newer sessions * lower forwarded_count always wins over higher forwarded_count We trust the clients not to lie and corrupt their own backups. It also means that if your access_token is stolen, the attacker could delete your backup. POST /room_keys/keys/!abc:matrix.org/c0ff33?version=1 HTTP/1.1 Content-Type: application/json { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } Or... POST /room_keys/keys/!abc:matrix.org?version=1 HTTP/1.1 Content-Type: application/json { "sessions": { "c0ff33": { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } } } Or... POST /room_keys/keys?version=1 HTTP/1.1 Content-Type: application/json { "rooms": { "!abc:matrix.org": { "sessions": { "c0ff33": { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } } } } } """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() body = parse_json_object_from_request(request) version = parse_string(request, "version") if session_id: body = {"sessions": {session_id: body}} if room_id: body = {"rooms": {room_id: body}} ret = await self.e2e_room_keys_handler.upload_room_keys(user_id, version, body) return 200, ret async def on_GET( self, request: SynapseRequest, room_id: Optional[str], session_id: Optional[str] ) -> Tuple[int, JsonDict]: """ Retrieves one or more encrypted E2E room keys for backup purposes. Symmetric with the PUT version of the API. room_id: the ID of the room to retrieve the keys for (optional) session_id: the ID for the E2E room keys to retrieve the keys for (optional) version: the version of the user's backup which this data is for. the version must already have been created via the /change_secret API. Returns as follows: GET /room_keys/keys/!abc:matrix.org/c0ff33?version=1 HTTP/1.1 { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } Or... GET /room_keys/keys/!abc:matrix.org?version=1 HTTP/1.1 { "sessions": { "c0ff33": { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } } } Or... GET /room_keys/keys?version=1 HTTP/1.1 { "rooms": { "!abc:matrix.org": { "sessions": { "c0ff33": { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } } } } } """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() version = parse_string(request, "version", required=True) room_keys = await self.e2e_room_keys_handler.get_room_keys( user_id, version, room_id, session_id ) # Convert room_keys to the right format to return. if session_id: # If the client requests a specific session, but that session was # not backed up, then return an M_NOT_FOUND. if room_keys["rooms"] == {}: raise NotFoundError("No room_keys found") else: room_keys = room_keys["rooms"][room_id]["sessions"][session_id] elif room_id: # If the client requests all sessions from a room, but no sessions # are found, then return an empty result rather than an error, so # that clients don't have to handle an error condition, and an # empty result is valid. (Similarly if the client requests all # sessions from the backup, but in that case, room_keys is already # in the right format, so we don't need to do anything about it.) if room_keys["rooms"] == {}: room_keys = {"sessions": {}} else: room_keys = room_keys["rooms"][room_id] return 200, room_keys async def on_DELETE( self, request: SynapseRequest, room_id: Optional[str], session_id: Optional[str] ) -> Tuple[int, JsonDict]: """ Deletes one or more encrypted E2E room keys for a user for backup purposes. DELETE /room_keys/keys/!abc:matrix.org/c0ff33?version=1 HTTP/1.1 200 OK {} room_id: the ID of the room whose keys to delete (optional) session_id: the ID for the E2E session to delete (optional) version: the version of the user's backup which this data is for. the version must already have been created via the /change_secret API. """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() version = parse_string(request, "version") ret = await self.e2e_room_keys_handler.delete_room_keys( user_id, version, room_id, session_id ) return 200, ret class RoomKeysNewVersionServlet(RestServlet): PATTERNS = client_patterns("/room_keys/version$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: """ Create a new backup version for this user's room_keys with the given info. The version is allocated by the server and returned to the user in the response. This API is intended to be used whenever the user changes the encryption key for their backups, ensuring that backups encrypted with different keys don't collide. It takes out an exclusive lock on this user's room_key backups, to ensure clients only upload to the current backup. The algorithm passed in the version info is a reverse-DNS namespaced identifier to describe the format of the encrypted backupped keys. The auth_data is { user_id: "user_id", nonce: } encrypted using the algorithm and current encryption key described above. POST /room_keys/version Content-Type: application/json { "algorithm": "m.megolm_backup.v1", "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" } HTTP/1.1 200 OK Content-Type: application/json { "version": 12345 } """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() info = parse_json_object_from_request(request) new_version = await self.e2e_room_keys_handler.create_version(user_id, info) return 200, {"version": new_version} # we deliberately don't have a PUT /version, as these things really should # be immutable to avoid people footgunning class RoomKeysVersionServlet(RestServlet): PATTERNS = client_patterns("/room_keys/version(/(?P[^/]+))?$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler() async def on_GET( self, request: SynapseRequest, version: Optional[str] ) -> Tuple[int, JsonDict]: """ Retrieve the version information about a given version of the user's room_keys backup. If the version part is missing, returns info about the most current backup version (if any) It takes out an exclusive lock on this user's room_key backups, to ensure clients only upload to the current backup. Returns 404 if the given version does not exist. GET /room_keys/version/12345 HTTP/1.1 { "version": "12345", "algorithm": "m.megolm_backup.v1", "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" } """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() try: info = await self.e2e_room_keys_handler.get_version_info(user_id, version) except SynapseError as e: if e.code == 404: raise SynapseError(404, "No backup found", Codes.NOT_FOUND) return 200, info async def on_DELETE( self, request: SynapseRequest, version: Optional[str] ) -> Tuple[int, JsonDict]: """ Delete the information about a given version of the user's room_keys backup. If the version part is missing, deletes the most current backup version (if any). Doesn't delete the actual room data. DELETE /room_keys/version/12345 HTTP/1.1 HTTP/1.1 200 OK {} """ if version is None: raise SynapseError(400, "No version specified to delete", Codes.NOT_FOUND) requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() await self.e2e_room_keys_handler.delete_version(user_id, version) return 200, {} async def on_PUT( self, request: SynapseRequest, version: Optional[str] ) -> Tuple[int, JsonDict]: """ Update the information about a given version of the user's room_keys backup. POST /room_keys/version/12345 HTTP/1.1 Content-Type: application/json { "algorithm": "m.megolm_backup.v1", "auth_data": { "public_key": "abcdefg", "signatures": { "ed25519:something": "hijklmnop" } }, "version": "12345" } HTTP/1.1 200 OK Content-Type: application/json {} """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() info = parse_json_object_from_request(request) if version is None: raise SynapseError( 400, "No version specified to update", Codes.MISSING_PARAM ) await self.e2e_room_keys_handler.update_version(user_id, version, info) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: RoomKeysServlet(hs).register(http_server) RoomKeysVersionServlet(hs).register(http_server) RoomKeysNewVersionServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/room_upgrade_rest_servlet.py000066400000000000000000000055351420514467300250530ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, ShadowBanError, SynapseError from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.http.server import HttpServer from synapse.http.servlet import ( RestServlet, assert_params_in_dict, parse_json_object_from_request, ) from synapse.http.site import SynapseRequest from synapse.types import JsonDict from synapse.util import stringutils from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomUpgradeRestServlet(RestServlet): """Handler for room upgrade requests. Handles requests of the form: POST /_matrix/client/r0/rooms/$roomid/upgrade HTTP/1.1 Content-Type: application/json { "new_version": "2", } Creates a new room and shuts down the old one. Returns the ID of the new room. """ PATTERNS = client_patterns( # /rooms/$roomid/upgrade "/rooms/(?P[^/]*)/upgrade$" ) def __init__(self, hs: "HomeServer"): super().__init__() self._hs = hs self._room_creation_handler = hs.get_room_creation_handler() self._auth = hs.get_auth() async def on_POST( self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self._auth.get_user_by_req(request) content = parse_json_object_from_request(request) assert_params_in_dict(content, ("new_version",)) new_version = KNOWN_ROOM_VERSIONS.get(content["new_version"]) if new_version is None: raise SynapseError( 400, "Your homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) try: new_room_id = await self._room_creation_handler.upgrade_room( requester, room_id, new_version ) except ShadowBanError: # Generate a random room ID. new_room_id = stringutils.random_string(18) ret = {"replacement_room": new_room_id} return 200, ret def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: RoomUpgradeRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/sendtodevice.py000066400000000000000000000047151420514467300222420ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Awaitable, Tuple from synapse.http import servlet from synapse.http.server import HttpServer from synapse.http.servlet import assert_params_in_dict, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.logging.opentracing import set_tag, trace from synapse.rest.client.transactions import HttpTransactionCache from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class SendToDeviceRestServlet(servlet.RestServlet): PATTERNS = client_patterns( "/sendToDevice/(?P[^/]*)/(?P[^/]*)$" ) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.txns = HttpTransactionCache(hs) self.device_message_handler = hs.get_device_message_handler() @trace(opname="sendToDevice") def on_PUT( self, request: SynapseRequest, message_type: str, txn_id: str ) -> Awaitable[Tuple[int, JsonDict]]: set_tag("message_type", message_type) set_tag("txn_id", txn_id) return self.txns.fetch_or_execute_request( request, self._put, request, message_type, txn_id ) async def _put( self, request: SynapseRequest, message_type: str, txn_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=True) content = parse_json_object_from_request(request) assert_params_in_dict(content, ("messages",)) await self.device_message_handler.send_device_message( requester, message_type, content["messages"] ) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: SendToDeviceRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/shared_rooms.py000066400000000000000000000047021420514467300222470ustar00rootroot00000000000000# Copyright 2020 Half-Shot # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import Codes, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.http.site import SynapseRequest from synapse.types import JsonDict, UserID from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UserSharedRoomsServlet(RestServlet): """ GET /uk.half-shot.msc2666/user/shared_rooms/{user_id} HTTP/1.1 """ PATTERNS = client_patterns( "/uk.half-shot.msc2666/user/shared_rooms/(?P[^/]*)", releases=(), # This is an unstable feature ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() self.user_directory_active = hs.config.server.update_user_directory async def on_GET( self, request: SynapseRequest, user_id: str ) -> Tuple[int, JsonDict]: if not self.user_directory_active: raise SynapseError( code=400, msg="The user directory is disabled on this server. Cannot determine shared rooms.", errcode=Codes.FORBIDDEN, ) UserID.from_string(user_id) requester = await self.auth.get_user_by_req(request) if user_id == requester.user.to_string(): raise SynapseError( code=400, msg="You cannot request a list of shared rooms with yourself", errcode=Codes.FORBIDDEN, ) rooms = await self.store.get_shared_rooms_for_users( requester.user.to_string(), user_id ) return 200, {"joined": list(rooms)} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: UserSharedRoomsServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/sync.py000066400000000000000000000526721420514467300205470ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import itertools import logging from collections import defaultdict from typing import ( TYPE_CHECKING, Any, Callable, Dict, Iterable, List, Optional, Tuple, Union, ) from synapse.api.constants import Membership, PresenceState from synapse.api.errors import Codes, StoreError, SynapseError from synapse.api.filtering import FilterCollection from synapse.api.presence import UserPresenceState from synapse.events import EventBase from synapse.events.utils import ( format_event_for_client_v2_without_room_id, format_event_raw, ) from synapse.handlers.presence import format_user_presence_state from synapse.handlers.sync import ( ArchivedSyncResult, InvitedSyncResult, JoinedSyncResult, KnockedSyncResult, SyncConfig, SyncResult, ) from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_boolean, parse_integer, parse_string from synapse.http.site import SynapseRequest from synapse.logging.opentracing import trace from synapse.storage.databases.main.relations import BundledAggregations from synapse.types import JsonDict, StreamToken from synapse.util import json_decoder from ._base import client_patterns, set_timeline_upper_limit if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class SyncRestServlet(RestServlet): """ GET parameters:: timeout(int): How long to wait for new events in milliseconds. since(batch_token): Batch token when asking for incremental deltas. set_presence(str): What state the device presence should be set to. default is "online". filter(filter_id): A filter to apply to the events returned. Response JSON:: { "next_batch": // batch token for the next /sync "presence": // presence data for the user. "rooms": { "join": { // Joined rooms being updated. "${room_id}": { // Id of the room being updated "event_map": // Map of EventID -> event JSON. "timeline": { // The recent events in the room if gap is "true" "limited": // Was the per-room event limit exceeded? // otherwise the next events in the room. "events": [] // list of EventIDs in the "event_map". "prev_batch": // back token for getting previous events. } "state": {"events": []} // list of EventIDs updating the // current state to be what it should // be at the end of the batch. "ephemeral": {"events": []} // list of event objects } }, "invite": {}, // Invited rooms being updated. "leave": {} // Archived rooms being updated. } } """ PATTERNS = client_patterns("/sync$") ALLOWED_PRESENCE = {"online", "offline", "unavailable"} def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.store = hs.get_datastore() self.sync_handler = hs.get_sync_handler() self.clock = hs.get_clock() self.filtering = hs.get_filtering() self.presence_handler = hs.get_presence_handler() self._server_notices_sender = hs.get_server_notices_sender() self._event_serializer = hs.get_event_client_serializer() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: # This will always be set by the time Twisted calls us. assert request.args is not None if b"from" in request.args: # /events used to use 'from', but /sync uses 'since'. # Lets be helpful and whine if we see a 'from'. raise SynapseError( 400, "'from' is not a valid query parameter. Did you mean 'since'?" ) requester = await self.auth.get_user_by_req(request, allow_guest=True) user = requester.user device_id = requester.device_id timeout = parse_integer(request, "timeout", default=0) since = parse_string(request, "since") set_presence = parse_string( request, "set_presence", default="online", allowed_values=self.ALLOWED_PRESENCE, ) filter_id = parse_string(request, "filter") full_state = parse_boolean(request, "full_state", default=False) logger.debug( "/sync: user=%r, timeout=%r, since=%r, " "set_presence=%r, filter_id=%r, device_id=%r", user, timeout, since, set_presence, filter_id, device_id, ) request_key = (user, timeout, since, filter_id, full_state, device_id) if filter_id is None: filter_collection = self.filtering.DEFAULT_FILTER_COLLECTION elif filter_id.startswith("{"): try: filter_object = json_decoder.decode(filter_id) set_timeline_upper_limit( filter_object, self.hs.config.server.filter_timeline_limit ) except Exception: raise SynapseError(400, "Invalid filter JSON") self.filtering.check_valid_filter(filter_object) filter_collection = FilterCollection(self.hs, filter_object) else: try: filter_collection = await self.filtering.get_user_filter( user.localpart, filter_id ) except StoreError as err: if err.code != 404: raise # fix up the description and errcode to be more useful raise SynapseError(400, "No such filter", errcode=Codes.INVALID_PARAM) sync_config = SyncConfig( user=user, filter_collection=filter_collection, is_guest=requester.is_guest, request_key=request_key, device_id=device_id, ) since_token = None if since is not None: since_token = await StreamToken.from_string(self.store, since) # send any outstanding server notices to the user. await self._server_notices_sender.on_user_syncing(user.to_string()) affect_presence = set_presence != PresenceState.OFFLINE if affect_presence: await self.presence_handler.set_state( user, {"presence": set_presence}, True ) context = await self.presence_handler.user_syncing( user.to_string(), affect_presence=affect_presence ) with context: sync_result = await self.sync_handler.wait_for_sync_for_user( requester, sync_config, since_token=since_token, timeout=timeout, full_state=full_state, ) # the client may have disconnected by now; don't bother to serialize the # response if so. if request._disconnected: logger.info("Client has disconnected; not serializing response.") return 200, {} time_now = self.clock.time_msec() # We know that the the requester has an access token since appservices # cannot use sync. response_content = await self.encode_response( time_now, sync_result, requester.access_token_id, filter_collection ) logger.debug("Event formatting complete") return 200, response_content @trace(opname="sync.encode_response") async def encode_response( self, time_now: int, sync_result: SyncResult, access_token_id: Optional[int], filter: FilterCollection, ) -> JsonDict: logger.debug("Formatting events in sync response") if filter.event_format == "client": event_formatter = format_event_for_client_v2_without_room_id elif filter.event_format == "federation": event_formatter = format_event_raw else: raise Exception("Unknown event format %s" % (filter.event_format,)) joined = await self.encode_joined( sync_result.joined, time_now, access_token_id, filter.event_fields, event_formatter, ) invited = await self.encode_invited( sync_result.invited, time_now, access_token_id, event_formatter ) knocked = await self.encode_knocked( sync_result.knocked, time_now, access_token_id, event_formatter ) archived = await self.encode_archived( sync_result.archived, time_now, access_token_id, filter.event_fields, event_formatter, ) logger.debug("building sync response dict") response: JsonDict = defaultdict(dict) response["next_batch"] = await sync_result.next_batch.to_string(self.store) if sync_result.account_data: response["account_data"] = {"events": sync_result.account_data} if sync_result.presence: response["presence"] = SyncRestServlet.encode_presence( sync_result.presence, time_now ) if sync_result.to_device: response["to_device"] = {"events": sync_result.to_device} if sync_result.device_lists.changed: response["device_lists"]["changed"] = list(sync_result.device_lists.changed) if sync_result.device_lists.left: response["device_lists"]["left"] = list(sync_result.device_lists.left) # We always include this because https://github.com/vector-im/element-android/issues/3725 # The spec isn't terribly clear on when this can be omitted and how a client would tell # the difference between "no keys present" and "nothing changed" in terms of whole field # absent / individual key type entry absent # Corresponding synapse issue: https://github.com/matrix-org/synapse/issues/10456 response["device_one_time_keys_count"] = sync_result.device_one_time_keys_count # https://github.com/matrix-org/matrix-doc/blob/54255851f642f84a4f1aaf7bc063eebe3d76752b/proposals/2732-olm-fallback-keys.md # states that this field should always be included, as long as the server supports the feature. response[ "org.matrix.msc2732.device_unused_fallback_key_types" ] = sync_result.device_unused_fallback_key_types response[ "device_unused_fallback_key_types" ] = sync_result.device_unused_fallback_key_types if joined: response["rooms"][Membership.JOIN] = joined if invited: response["rooms"][Membership.INVITE] = invited if knocked: response["rooms"][Membership.KNOCK] = knocked if archived: response["rooms"][Membership.LEAVE] = archived # By the time we get here groups is no longer optional. assert sync_result.groups is not None if sync_result.groups.join: response["groups"][Membership.JOIN] = sync_result.groups.join if sync_result.groups.invite: response["groups"][Membership.INVITE] = sync_result.groups.invite if sync_result.groups.leave: response["groups"][Membership.LEAVE] = sync_result.groups.leave return response @staticmethod def encode_presence(events: List[UserPresenceState], time_now: int) -> JsonDict: return { "events": [ { "type": "m.presence", "sender": event.user_id, "content": format_user_presence_state( event, time_now, include_user_id=False ), } for event in events ] } @trace(opname="sync.encode_joined") async def encode_joined( self, rooms: List[JoinedSyncResult], time_now: int, token_id: Optional[int], event_fields: List[str], event_formatter: Callable[[JsonDict], JsonDict], ) -> JsonDict: """ Encode the joined rooms in a sync result Args: rooms: list of sync results for rooms this user is joined to time_now: current time - used as a baseline for age calculations token_id: ID of the user's auth token - used for namespacing of transaction IDs event_fields: List of event fields to include. If empty, all fields will be returned. event_formatter: function to convert from federation format to client format Returns: The joined rooms list, in our response format """ joined = {} for room in rooms: joined[room.room_id] = await self.encode_room( room, time_now, token_id, joined=True, only_fields=event_fields, event_formatter=event_formatter, ) return joined @trace(opname="sync.encode_invited") async def encode_invited( self, rooms: List[InvitedSyncResult], time_now: int, token_id: Optional[int], event_formatter: Callable[[JsonDict], JsonDict], ) -> JsonDict: """ Encode the invited rooms in a sync result Args: rooms: list of sync results for rooms this user is invited to time_now: current time - used as a baseline for age calculations token_id: ID of the user's auth token - used for namespacing of transaction IDs event_formatter: function to convert from federation format to client format Returns: The invited rooms list, in our response format """ invited = {} for room in rooms: invite = self._event_serializer.serialize_event( room.invite, time_now, token_id=token_id, event_format=event_formatter, include_stripped_room_state=True, ) unsigned = dict(invite.get("unsigned", {})) invite["unsigned"] = unsigned invited_state = list(unsigned.pop("invite_room_state", [])) invited_state.append(invite) invited[room.room_id] = {"invite_state": {"events": invited_state}} return invited @trace(opname="sync.encode_knocked") async def encode_knocked( self, rooms: List[KnockedSyncResult], time_now: int, token_id: Optional[int], event_formatter: Callable[[Dict], Dict], ) -> Dict[str, Dict[str, Any]]: """ Encode the rooms we've knocked on in a sync result. Args: rooms: list of sync results for rooms this user is knocking on time_now: current time - used as a baseline for age calculations token_id: ID of the user's auth token - used for namespacing of transaction IDs event_formatter: function to convert from federation format to client format Returns: The list of rooms the user has knocked on, in our response format. """ knocked = {} for room in rooms: knock = self._event_serializer.serialize_event( room.knock, time_now, token_id=token_id, event_format=event_formatter, include_stripped_room_state=True, ) # Extract the `unsigned` key from the knock event. # This is where we (cheekily) store the knock state events unsigned = knock.setdefault("unsigned", {}) # Duplicate the dictionary in order to avoid modifying the original unsigned = dict(unsigned) # Extract the stripped room state from the unsigned dict # This is for clients to get a little bit of information about # the room they've knocked on, without revealing any sensitive information knocked_state = list(unsigned.pop("knock_room_state", [])) # Append the actual knock membership event itself as well. This provides # the client with: # # * A knock state event that they can use for easier internal tracking # * The rough timestamp of when the knock occurred contained within the event knocked_state.append(knock) # Build the `knock_state` dictionary, which will contain the state of the # room that the client has knocked on knocked[room.room_id] = {"knock_state": {"events": knocked_state}} return knocked @trace(opname="sync.encode_archived") async def encode_archived( self, rooms: List[ArchivedSyncResult], time_now: int, token_id: Optional[int], event_fields: List[str], event_formatter: Callable[[JsonDict], JsonDict], ) -> JsonDict: """ Encode the archived rooms in a sync result Args: rooms: list of sync results for rooms this user is joined to time_now: current time - used as a baseline for age calculations token_id: ID of the user's auth token - used for namespacing of transaction IDs event_fields: List of event fields to include. If empty, all fields will be returned. event_formatter: function to convert from federation format to client format Returns: The archived rooms list, in our response format """ joined = {} for room in rooms: joined[room.room_id] = await self.encode_room( room, time_now, token_id, joined=False, only_fields=event_fields, event_formatter=event_formatter, ) return joined async def encode_room( self, room: Union[JoinedSyncResult, ArchivedSyncResult], time_now: int, token_id: Optional[int], joined: bool, only_fields: Optional[List[str]], event_formatter: Callable[[JsonDict], JsonDict], ) -> JsonDict: """ Args: room: sync result for a single room time_now: current time - used as a baseline for age calculations token_id: ID of the user's auth token - used for namespacing of transaction IDs joined: True if the user is joined to this room - will mean we handle ephemeral events only_fields: Optional. The list of event fields to include. event_formatter: function to convert from federation format to client format Returns: The room, encoded in our response format """ def serialize( events: Iterable[EventBase], aggregations: Optional[Dict[str, BundledAggregations]] = None, ) -> List[JsonDict]: return self._event_serializer.serialize_events( events, time_now=time_now, bundle_aggregations=aggregations, token_id=token_id, event_format=event_formatter, only_event_fields=only_fields, ) state_dict = room.state timeline_events = room.timeline.events state_events = state_dict.values() for event in itertools.chain(state_events, timeline_events): # We've had bug reports that events were coming down under the # wrong room. if event.room_id != room.room_id: logger.warning( "Event %r is under room %r instead of %r", event.event_id, room.room_id, event.room_id, ) serialized_state = serialize(state_events) serialized_timeline = serialize( timeline_events, room.timeline.bundled_aggregations ) account_data = room.account_data result: JsonDict = { "timeline": { "events": serialized_timeline, "prev_batch": await room.timeline.prev_batch.to_string(self.store), "limited": room.timeline.limited, }, "state": {"events": serialized_state}, "account_data": {"events": account_data}, } if joined: assert isinstance(room, JoinedSyncResult) ephemeral_events = room.ephemeral result["ephemeral"] = {"events": ephemeral_events} result["unread_notifications"] = room.unread_notifications result["summary"] = room.summary result["org.matrix.msc2654.unread_count"] = room.unread_count return result def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: SyncRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/tags.py000066400000000000000000000062551420514467300205250ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import AuthError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class TagListServlet(RestServlet): """ GET /user/{user_id}/rooms/{room_id}/tags HTTP/1.1 """ PATTERNS = client_patterns("/user/(?P[^/]*)/rooms/(?P[^/]*)/tags") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.store = hs.get_datastore() async def on_GET( self, request: SynapseRequest, user_id: str, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot get tags for other users.") tags = await self.store.get_tags_for_room(user_id, room_id) return 200, {"tags": tags} class TagServlet(RestServlet): """ PUT /user/{user_id}/rooms/{room_id}/tags/{tag} HTTP/1.1 DELETE /user/{user_id}/rooms/{room_id}/tags/{tag} HTTP/1.1 """ PATTERNS = client_patterns( "/user/(?P[^/]*)/rooms/(?P[^/]*)/tags/(?P[^/]*)" ) def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.handler = hs.get_account_data_handler() async def on_PUT( self, request: SynapseRequest, user_id: str, room_id: str, tag: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot add tags for other users.") body = parse_json_object_from_request(request) await self.handler.add_tag_to_room(user_id, room_id, tag, body) return 200, {} async def on_DELETE( self, request: SynapseRequest, user_id: str, room_id: str, tag: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request) if user_id != requester.user.to_string(): raise AuthError(403, "Cannot add tags for other users.") await self.handler.remove_tag_from_room(user_id, room_id, tag) return 200, {} def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: TagListServlet(hs).register(http_server) TagServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/thirdparty.py000066400000000000000000000100001420514467300217400ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict, List, Tuple from synapse.api.constants import ThirdPartyEntityKind from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ThirdPartyProtocolsServlet(RestServlet): PATTERNS = client_patterns("/thirdparty/protocols") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.appservice_handler = hs.get_application_service_handler() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) protocols = await self.appservice_handler.get_3pe_protocols() return 200, protocols class ThirdPartyProtocolServlet(RestServlet): PATTERNS = client_patterns("/thirdparty/protocol/(?P[^/]+)$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.appservice_handler = hs.get_application_service_handler() async def on_GET( self, request: SynapseRequest, protocol: str ) -> Tuple[int, JsonDict]: await self.auth.get_user_by_req(request, allow_guest=True) protocols = await self.appservice_handler.get_3pe_protocols( only_protocol=protocol ) if protocol in protocols: return 200, protocols[protocol] else: return 404, {"error": "Unknown protocol"} class ThirdPartyUserServlet(RestServlet): PATTERNS = client_patterns("/thirdparty/user(/(?P[^/]+))?$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.appservice_handler = hs.get_application_service_handler() async def on_GET( self, request: SynapseRequest, protocol: str ) -> Tuple[int, List[JsonDict]]: await self.auth.get_user_by_req(request, allow_guest=True) fields: Dict[bytes, List[bytes]] = request.args # type: ignore[assignment] fields.pop(b"access_token", None) results = await self.appservice_handler.query_3pe( ThirdPartyEntityKind.USER, protocol, fields ) return 200, results class ThirdPartyLocationServlet(RestServlet): PATTERNS = client_patterns("/thirdparty/location(/(?P[^/]+))?$") def __init__(self, hs: "HomeServer"): super().__init__() self.auth = hs.get_auth() self.appservice_handler = hs.get_application_service_handler() async def on_GET( self, request: SynapseRequest, protocol: str ) -> Tuple[int, List[JsonDict]]: await self.auth.get_user_by_req(request, allow_guest=True) fields: Dict[bytes, List[bytes]] = request.args # type: ignore[assignment] fields.pop(b"access_token", None) results = await self.appservice_handler.query_3pe( ThirdPartyEntityKind.LOCATION, protocol, fields ) return 200, results def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: ThirdPartyProtocolsServlet(hs).register(http_server) ThirdPartyProtocolServlet(hs).register(http_server) ThirdPartyUserServlet(hs).register(http_server) ThirdPartyLocationServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/tokenrefresh.py000066400000000000000000000026011420514467300222550ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING from twisted.web.server import Request from synapse.api.errors import AuthError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer class TokenRefreshRestServlet(RestServlet): """ Exchanges refresh tokens for a pair of an access token and a new refresh token. """ PATTERNS = client_patterns("/tokenrefresh") def __init__(self, hs: "HomeServer"): super().__init__() async def on_POST(self, request: Request) -> None: raise AuthError(403, "tokenrefresh is no longer supported.") def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: TokenRefreshRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/transactions.py000066400000000000000000000116131420514467300222710ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This module contains logic for storing HTTP PUT transactions. This is used to ensure idempotency when performing PUTs using the REST API.""" import logging from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Tuple from twisted.python.failure import Failure from twisted.web.server import Request from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.types import JsonDict from synapse.util.async_helpers import ObservableDeferred if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) CLEANUP_PERIOD_MS = 1000 * 60 * 30 # 30 mins class HttpTransactionCache: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = self.hs.get_auth() self.clock = self.hs.get_clock() # $txn_key: (ObservableDeferred<(res_code, res_json_body)>, timestamp) self.transactions: Dict[ str, Tuple[ObservableDeferred[Tuple[int, JsonDict]], int] ] = {} # Try to clean entries every 30 mins. This means entries will exist # for at *LEAST* 30 mins, and at *MOST* 60 mins. self.cleaner = self.clock.looping_call(self._cleanup, CLEANUP_PERIOD_MS) def _get_transaction_key(self, request: Request) -> str: """A helper function which returns a transaction key that can be used with TransactionCache for idempotent requests. Idempotency is based on the returned key being the same for separate requests to the same endpoint. The key is formed from the HTTP request path and the access_token for the requesting user. Args: request: The incoming request. Must contain an access_token. Returns: A transaction key """ assert request.path is not None token = self.auth.get_access_token_from_request(request) return request.path.decode("utf8") + "/" + token def fetch_or_execute_request( self, request: Request, fn: Callable[..., Awaitable[Tuple[int, JsonDict]]], *args: Any, **kwargs: Any, ) -> Awaitable[Tuple[int, JsonDict]]: """A helper function for fetch_or_execute which extracts a transaction key from the given request. See: fetch_or_execute """ return self.fetch_or_execute( self._get_transaction_key(request), fn, *args, **kwargs ) def fetch_or_execute( self, txn_key: str, fn: Callable[..., Awaitable[Tuple[int, JsonDict]]], *args: Any, **kwargs: Any, ) -> Awaitable[Tuple[int, JsonDict]]: """Fetches the response for this transaction, or executes the given function to produce a response for this transaction. Args: txn_key: A key to ensure idempotency should fetch_or_execute be called again at a later point in time. fn: A function which returns a tuple of (response_code, response_dict). *args: Arguments to pass to fn. **kwargs: Keyword arguments to pass to fn. Returns: Deferred which resolves to a tuple of (response_code, response_dict). """ if txn_key in self.transactions: observable = self.transactions[txn_key][0] else: # execute the function instead. deferred = run_in_background(fn, *args, **kwargs) observable = ObservableDeferred(deferred) self.transactions[txn_key] = (observable, self.clock.time_msec()) # if the request fails with an exception, remove it # from the transaction map. This is done to ensure that we don't # cache transient errors like rate-limiting errors, etc. def remove_from_map(err: Failure) -> None: self.transactions.pop(txn_key, None) # we deliberately do not propagate the error any further, as we # expect the observers to have reported it. deferred.addErrback(remove_from_map) return make_deferred_yieldable(observable.observe()) def _cleanup(self) -> None: now = self.clock.time_msec() for key in list(self.transactions): ts = self.transactions[key][1] if now > (ts + CLEANUP_PERIOD_MS): # after cleanup period del self.transactions[key] synapse-1.53.0/synapse/rest/client/user_directory.py000066400000000000000000000053031420514467300226220ustar00rootroot00000000000000# Copyright 2017 Vector Creations Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Tuple from synapse.api.errors import SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from ._base import client_patterns if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UserDirectorySearchRestServlet(RestServlet): PATTERNS = client_patterns("/user_directory/search$") def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() self.user_directory_handler = hs.get_user_directory_handler() async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]: """Searches for users in directory Returns: dict of the form:: { "limited": , # whether there were more results or not "results": [ # Ordered by best match first { "user_id": , "display_name": , "avatar_url": } ] } """ requester = await self.auth.get_user_by_req(request, allow_guest=False) user_id = requester.user.to_string() if not self.hs.config.userdirectory.user_directory_search_enabled: return 200, {"limited": False, "results": []} body = parse_json_object_from_request(request) limit = body.get("limit", 10) limit = min(limit, 50) try: search_term = body["search_term"] except Exception: raise SynapseError(400, "`search_term` is required field") results = await self.user_directory_handler.search_users( user_id, search_term, limit ) return 200, results def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: UserDirectorySearchRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/versions.py000066400000000000000000000111661420514467300214340ustar00rootroot00000000000000# Copyright 2016 OpenMarket Ltd # Copyright 2017 Vector Creations Ltd # Copyright 2018-2019 New Vector Ltd # Copyright 2019 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import re from typing import TYPE_CHECKING, Tuple from twisted.web.server import Request from synapse.api.constants import RoomCreationPreset from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class VersionsRestServlet(RestServlet): PATTERNS = [re.compile("^/_matrix/client/versions$")] def __init__(self, hs: "HomeServer"): super().__init__() self.config = hs.config # Calculate these once since they shouldn't change after start-up. self.e2ee_forced_public = ( RoomCreationPreset.PUBLIC_CHAT in self.config.room.encryption_enabled_by_default_for_room_presets ) self.e2ee_forced_private = ( RoomCreationPreset.PRIVATE_CHAT in self.config.room.encryption_enabled_by_default_for_room_presets ) self.e2ee_forced_trusted_private = ( RoomCreationPreset.TRUSTED_PRIVATE_CHAT in self.config.room.encryption_enabled_by_default_for_room_presets ) def on_GET(self, request: Request) -> Tuple[int, JsonDict]: return ( 200, { "versions": [ # XXX: at some point we need to decide whether we need to include # the previous version numbers, given we've defined r0.3.0 to be # backwards compatible with r0.2.0. But need to check how # conscientious we've been in compatibility, and decide whether the # middle number is the major revision when at 0.X.Y (as opposed to # X.Y.Z). And we need to decide whether it's fair to make clients # parse the version string to figure out what's going on. "r0.0.1", "r0.1.0", "r0.2.0", "r0.3.0", "r0.4.0", "r0.5.0", "r0.6.0", "r0.6.1", ], # as per MSC1497: "unstable_features": { # Implements support for label-based filtering as described in # MSC2326. "org.matrix.label_based_filtering": True, # Implements support for cross signing as described in MSC1756 "org.matrix.e2e_cross_signing": True, # Implements additional endpoints as described in MSC2432 "org.matrix.msc2432": True, # Implements additional endpoints as described in MSC2666 "uk.half-shot.msc2666": True, # Whether new rooms will be set to encrypted or not (based on presets). "io.element.e2ee_forced.public": self.e2ee_forced_public, "io.element.e2ee_forced.private": self.e2ee_forced_private, "io.element.e2ee_forced.trusted_private": self.e2ee_forced_trusted_private, # Supports the busy presence state described in MSC3026. "org.matrix.msc3026.busy_presence": self.config.experimental.msc3026_enabled, # Supports receiving hidden read receipts as per MSC2285 "org.matrix.msc2285": self.config.experimental.msc2285_enabled, # Adds support for importing historical messages as per MSC2716 "org.matrix.msc2716": self.config.experimental.msc2716_enabled, # Adds support for jump to date endpoints (/timestamp_to_event) as per MSC3030 "org.matrix.msc3030": self.config.experimental.msc3030_enabled, }, }, ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: VersionsRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/client/voip.py000066400000000000000000000053471420514467300205450ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import base64 import hashlib import hmac from typing import TYPE_CHECKING, Tuple from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet from synapse.http.site import SynapseRequest from synapse.rest.client._base import client_patterns from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer class VoipRestServlet(RestServlet): PATTERNS = client_patterns("/voip/turnServer$", v1=True) def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.auth = hs.get_auth() async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req( request, self.hs.config.voip.turn_allow_guests ) turnUris = self.hs.config.voip.turn_uris turnSecret = self.hs.config.voip.turn_shared_secret turnUsername = self.hs.config.voip.turn_username turnPassword = self.hs.config.voip.turn_password userLifetime = self.hs.config.voip.turn_user_lifetime if turnUris and turnSecret and userLifetime: expiry = (self.hs.get_clock().time_msec() + userLifetime) / 1000 username = "%d:%s" % (expiry, requester.user.to_string()) mac = hmac.new( turnSecret.encode(), msg=username.encode(), digestmod=hashlib.sha1 ) # We need to use standard padded base64 encoding here # encode_base64 because we need to add the standard padding to get the # same result as the TURN server. password = base64.b64encode(mac.digest()).decode("ascii") elif turnUris and turnUsername and turnPassword and userLifetime: username = turnUsername password = turnPassword else: return 200, {} return ( 200, { "username": username, "password": password, "ttl": userLifetime // 1000, "uris": turnUris, }, ) def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: VoipRestServlet(hs).register(http_server) synapse-1.53.0/synapse/rest/consent/000077500000000000000000000000001420514467300174005ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/consent/__init__.py000066400000000000000000000000001420514467300214770ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/consent/consent_resource.py000066400000000000000000000170571420514467300233440ustar00rootroot00000000000000# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import hmac import logging from hashlib import sha256 from http import HTTPStatus from os import path from typing import TYPE_CHECKING, Any, Dict, List import jinja2 from jinja2 import TemplateNotFound from twisted.web.server import Request from synapse.api.errors import NotFoundError, StoreError, SynapseError from synapse.config import ConfigError from synapse.http.server import DirectServeHtmlResource, respond_with_html from synapse.http.servlet import parse_bytes_from_args, parse_string from synapse.types import UserID if TYPE_CHECKING: from synapse.server import HomeServer # language to use for the templates. TODO: figure this out from Accept-Language TEMPLATE_LANGUAGE = "en" logger = logging.getLogger(__name__) class ConsentResource(DirectServeHtmlResource): """A twisted Resource to display a privacy policy and gather consent to it When accessed via GET, returns the privacy policy via a template. When accessed via POST, records the user's consent in the database and displays a success page. The config should include a template_dir setting which contains templates for the HTML. The directory should contain one subdirectory per language (eg, 'en', 'fr'), and each language directory should contain the policy document (named as '.html') and a success page (success.html). Both forms take a set of parameters from the browser. For the POST form, these are normally sent as form parameters (but may be query-params); for GET requests they must be query params. These are: u: the complete mxid, or the localpart of the user giving their consent. Required for both GET (where it is used as an input to the template) and for POST (where it is used to find the row in the db to update). h: hmac_sha256(secret, u), where 'secret' is the privacy_secret in the config file. If it doesn't match, the request is 403ed. v: the version of the privacy policy being agreed to. For GET: optional, and defaults to whatever was set in the config file. Used to choose the version of the policy to pick from the templates directory. For POST: required; gives the value to be recorded in the database against the user. """ def __init__(self, hs: "HomeServer"): super().__init__() self.hs = hs self.store = hs.get_datastore() self.registration_handler = hs.get_registration_handler() # this is required by the request_handler wrapper self.clock = hs.get_clock() # Consent must be configured to create this resource. default_consent_version = hs.config.consent.user_consent_version consent_template_directory = hs.config.consent.user_consent_template_dir if default_consent_version is None or consent_template_directory is None: raise ConfigError( "Consent resource is enabled but user_consent section is " "missing in config file." ) self._default_consent_version = default_consent_version # TODO: switch to synapse.util.templates.build_jinja_env loader = jinja2.FileSystemLoader(consent_template_directory) self._jinja_env = jinja2.Environment( loader=loader, autoescape=jinja2.select_autoescape(["html", "htm", "xml"]) ) if hs.config.key.form_secret is None: raise ConfigError( "Consent resource is enabled but form_secret is not set in " "config file. It should be set to an arbitrary secret string." ) self._hmac_secret = hs.config.key.form_secret.encode("utf-8") async def _async_render_GET(self, request: Request) -> None: version = parse_string(request, "v", default=self._default_consent_version) username = parse_string(request, "u", default="") userhmac = None has_consented = False public_version = username == "" if not public_version: args: Dict[bytes, List[bytes]] = request.args # type: ignore userhmac_bytes = parse_bytes_from_args(args, "h", required=True) self._check_hash(username, userhmac_bytes) if username.startswith("@"): qualified_user_id = username else: qualified_user_id = UserID(username, self.hs.hostname).to_string() u = await self.store.get_user_by_id(qualified_user_id) if u is None: raise NotFoundError("Unknown user") has_consented = u["consent_version"] == version userhmac = userhmac_bytes.decode("ascii") try: self._render_template( request, "%s.html" % (version,), user=username, userhmac=userhmac, version=version, has_consented=has_consented, public_version=public_version, ) except TemplateNotFound: raise NotFoundError("Unknown policy version") async def _async_render_POST(self, request: Request) -> None: version = parse_string(request, "v", required=True) username = parse_string(request, "u", required=True) args: Dict[bytes, List[bytes]] = request.args # type: ignore userhmac = parse_bytes_from_args(args, "h", required=True) self._check_hash(username, userhmac) if username.startswith("@"): qualified_user_id = username else: qualified_user_id = UserID(username, self.hs.hostname).to_string() try: await self.store.user_set_consent_version(qualified_user_id, version) except StoreError as e: if e.code != 404: raise raise NotFoundError("Unknown user") await self.registration_handler.post_consent_actions(qualified_user_id) try: self._render_template(request, "success.html") except TemplateNotFound: raise NotFoundError("success.html not found") def _render_template( self, request: Request, template_name: str, **template_args: Any ) -> None: # get_template checks for ".." so we don't need to worry too much # about path traversal here. template_html = self._jinja_env.get_template( path.join(TEMPLATE_LANGUAGE, template_name) ) html = template_html.render(**template_args) respond_with_html(request, 200, html) def _check_hash(self, userid: str, userhmac: bytes) -> None: """ Args: userid: userhmac: Raises: SynapseError if the hash doesn't match """ want_mac = ( hmac.new( key=self._hmac_secret, msg=userid.encode("utf-8"), digestmod=sha256 ) .hexdigest() .encode("ascii") ) if not hmac.compare_digest(want_mac, userhmac): raise SynapseError(HTTPStatus.FORBIDDEN, "HMAC incorrect") synapse-1.53.0/synapse/rest/health.py000066400000000000000000000021151420514467300175450ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from twisted.web.resource import Resource from twisted.web.server import Request class HealthResource(Resource): """A resource that does nothing except return a 200 with a body of `OK`, which can be used as a health check. Note: `SynapseRequest._should_log_request` ensures that requests to `/health` do not get logged at INFO. """ isLeaf = 1 def render_GET(self, request: Request) -> bytes: request.setHeader(b"Content-Type", b"text/plain") return b"OK" synapse-1.53.0/synapse/rest/key/000077500000000000000000000000001420514467300165175ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/key/__init__.py000066400000000000000000000011101420514467300206210ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. synapse-1.53.0/synapse/rest/key/v2/000077500000000000000000000000001420514467300170465ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/key/v2/__init__.py000066400000000000000000000017631420514467300211660ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import TYPE_CHECKING from twisted.web.resource import Resource from .local_key_resource import LocalKey from .remote_key_resource import RemoteKey if TYPE_CHECKING: from synapse.server import HomeServer class KeyApiV2Resource(Resource): def __init__(self, hs: "HomeServer"): Resource.__init__(self) self.putChild(b"server", LocalKey(hs)) self.putChild(b"query", RemoteKey(hs)) synapse-1.53.0/synapse/rest/key/v2/local_key_resource.py000066400000000000000000000075661420514467300233070ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Optional from canonicaljson import encode_canonical_json from signedjson.sign import sign_json from unpaddedbase64 import encode_base64 from twisted.web.resource import Resource from twisted.web.server import Request from synapse.http.server import respond_with_json_bytes from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class LocalKey(Resource): """HTTP resource containing encoding the TLS X.509 certificate and NACL signature verification keys for this server:: GET /_matrix/key/v2/server/a.key.id HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json { "valid_until_ts": # integer posix timestamp when this result expires. "server_name": "this.server.example.com" "verify_keys": { "algorithm:version": { "key": # base64 encoded NACL verification key. } }, "old_verify_keys": { "algorithm:version": { "expired_ts": # integer posix timestamp when the key expired. "key": # base64 encoded NACL verification key. } }, "signatures": { "this.server.example.com": { "algorithm:version": # NACL signature for this server } } } """ isLeaf = True def __init__(self, hs: "HomeServer"): self.config = hs.config self.clock = hs.get_clock() self.update_response_body(self.clock.time_msec()) Resource.__init__(self) def update_response_body(self, time_now_msec: int) -> None: refresh_interval = self.config.key.key_refresh_interval self.valid_until_ts = int(time_now_msec + refresh_interval) self.response_body = encode_canonical_json(self.response_json_object()) def response_json_object(self) -> JsonDict: verify_keys = {} for key in self.config.key.signing_key: verify_key_bytes = key.verify_key.encode() key_id = "%s:%s" % (key.alg, key.version) verify_keys[key_id] = {"key": encode_base64(verify_key_bytes)} old_verify_keys = {} for key_id, key in self.config.key.old_signing_keys.items(): verify_key_bytes = key.encode() old_verify_keys[key_id] = { "key": encode_base64(verify_key_bytes), "expired_ts": key.expired_ts, } json_object = { "valid_until_ts": self.valid_until_ts, "server_name": self.config.server.server_name, "verify_keys": verify_keys, "old_verify_keys": old_verify_keys, } for key in self.config.key.signing_key: json_object = sign_json(json_object, self.config.server.server_name, key) return json_object def render_GET(self, request: Request) -> Optional[int]: time_now = self.clock.time_msec() # Update the expiry time if less than half the interval remains. if time_now + self.config.key.key_refresh_interval / 2 > self.valid_until_ts: self.update_response_body(time_now) return respond_with_json_bytes(request, 200, self.response_body) synapse-1.53.0/synapse/rest/key/v2/remote_key_resource.py000066400000000000000000000225651420514467300235040ustar00rootroot00000000000000# Copyright 2015, 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING, Dict from signedjson.sign import sign_json from synapse.api.errors import Codes, SynapseError from synapse.crypto.keyring import ServerKeyFetcher from synapse.http.server import DirectServeJsonResource, respond_with_json from synapse.http.servlet import parse_integer, parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.types import JsonDict from synapse.util import json_decoder from synapse.util.async_helpers import yieldable_gather_results if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RemoteKey(DirectServeJsonResource): """HTTP resource for retrieving the TLS certificate and NACL signature verification keys for a collection of servers. Checks that the reported X.509 TLS certificate matches the one used in the HTTPS connection. Checks that the NACL signature for the remote server is valid. Returns a dict of JSON signed by both the remote server and by this server. Supports individual GET APIs and a bulk query POST API. Requests: GET /_matrix/key/v2/query/remote.server.example.com HTTP/1.1 GET /_matrix/key/v2/query/remote.server.example.com/a.key.id HTTP/1.1 POST /_matrix/v2/query HTTP/1.1 Content-Type: application/json { "server_keys": { "remote.server.example.com": { "a.key.id": { "minimum_valid_until_ts": 1234567890123 } } } } Response: HTTP/1.1 200 OK Content-Type: application/json { "server_keys": [ { "server_name": "remote.server.example.com" "valid_until_ts": # posix timestamp "verify_keys": { "a.key.id": { # The identifier for a key. key: "" # base64 encoded verification key. } } "old_verify_keys": { "an.old.key.id": { # The identifier for an old key. key: "", # base64 encoded key "expired_ts": 0, # when the key stop being used. } } "signatures": { "remote.server.example.com": {...} "this.server.example.com": {...} } } ] } """ isLeaf = True def __init__(self, hs: "HomeServer"): super().__init__() self.fetcher = ServerKeyFetcher(hs) self.store = hs.get_datastore() self.clock = hs.get_clock() self.federation_domain_whitelist = ( hs.config.federation.federation_domain_whitelist ) self.config = hs.config async def _async_render_GET(self, request: SynapseRequest) -> None: assert request.postpath is not None if len(request.postpath) == 1: (server,) = request.postpath query: dict = {server.decode("ascii"): {}} elif len(request.postpath) == 2: server, key_id = request.postpath minimum_valid_until_ts = parse_integer(request, "minimum_valid_until_ts") arguments = {} if minimum_valid_until_ts is not None: arguments["minimum_valid_until_ts"] = minimum_valid_until_ts query = {server.decode("ascii"): {key_id.decode("ascii"): arguments}} else: raise SynapseError(404, "Not found %r" % request.postpath, Codes.NOT_FOUND) await self.query_keys(request, query, query_remote_on_cache_miss=True) async def _async_render_POST(self, request: SynapseRequest) -> None: content = parse_json_object_from_request(request) query = content["server_keys"] await self.query_keys(request, query, query_remote_on_cache_miss=True) async def query_keys( self, request: SynapseRequest, query: JsonDict, query_remote_on_cache_miss: bool = False, ) -> None: logger.info("Handling query for keys %r", query) store_queries = [] for server_name, key_ids in query.items(): if ( self.federation_domain_whitelist is not None and server_name not in self.federation_domain_whitelist ): logger.debug("Federation denied with %s", server_name) continue if not key_ids: key_ids = (None,) for key_id in key_ids: store_queries.append((server_name, key_id, None)) cached = await self.store.get_server_keys_json(store_queries) json_results = set() time_now_ms = self.clock.time_msec() # Note that the value is unused. cache_misses: Dict[str, Dict[str, int]] = {} for (server_name, key_id, _), key_results in cached.items(): results = [(result["ts_added_ms"], result) for result in key_results] if not results and key_id is not None: cache_misses.setdefault(server_name, {})[key_id] = 0 continue if key_id is not None: ts_added_ms, most_recent_result = max(results) ts_valid_until_ms = most_recent_result["ts_valid_until_ms"] req_key = query.get(server_name, {}).get(key_id, {}) req_valid_until = req_key.get("minimum_valid_until_ts") miss = False if req_valid_until is not None: if ts_valid_until_ms < req_valid_until: logger.debug( "Cached response for %r/%r is older than requested" ": valid_until (%r) < minimum_valid_until (%r)", server_name, key_id, ts_valid_until_ms, req_valid_until, ) miss = True else: logger.debug( "Cached response for %r/%r is newer than requested" ": valid_until (%r) >= minimum_valid_until (%r)", server_name, key_id, ts_valid_until_ms, req_valid_until, ) elif (ts_added_ms + ts_valid_until_ms) / 2 < time_now_ms: logger.debug( "Cached response for %r/%r is too old" ": (added (%r) + valid_until (%r)) / 2 < now (%r)", server_name, key_id, ts_added_ms, ts_valid_until_ms, time_now_ms, ) # We more than half way through the lifetime of the # response. We should fetch a fresh copy. miss = True else: logger.debug( "Cached response for %r/%r is still valid" ": (added (%r) + valid_until (%r)) / 2 < now (%r)", server_name, key_id, ts_added_ms, ts_valid_until_ms, time_now_ms, ) if miss: cache_misses.setdefault(server_name, {})[key_id] = 0 # Cast to bytes since postgresql returns a memoryview. json_results.add(bytes(most_recent_result["key_json"])) else: for _, result in results: # Cast to bytes since postgresql returns a memoryview. json_results.add(bytes(result["key_json"])) # If there is a cache miss, request the missing keys, then recurse (and # ensure the result is sent). if cache_misses and query_remote_on_cache_miss: await yieldable_gather_results( lambda t: self.fetcher.get_keys(*t), ( (server_name, list(keys), 0) for server_name, keys in cache_misses.items() ), ) await self.query_keys(request, query, query_remote_on_cache_miss=False) else: signed_keys = [] for key_json in json_results: key_json = json_decoder.decode(key_json.decode("utf-8")) for signing_key in self.config.key.key_server_signing_keys: key_json = sign_json( key_json, self.config.server.server_name, signing_key ) signed_keys.append(key_json) response = {"server_keys": signed_keys} respond_with_json(request, 200, response, canonical_json=True) synapse-1.53.0/synapse/rest/media/000077500000000000000000000000001420514467300170065ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/media/__init__.py000066400000000000000000000000001420514467300211050ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/media/v1/000077500000000000000000000000001420514467300173345ustar00rootroot00000000000000synapse-1.53.0/synapse/rest/media/v1/__init__.py000066400000000000000000000021771420514467300214540ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from PIL.features import check_codec # check for JPEG support. if not check_codec("jpg"): raise Exception( "FATAL: jpeg codec not supported. Install pillow correctly! " " 'sudo apt-get install libjpeg-dev' then 'pip uninstall pillow &&" " pip install pillow --user'" ) # check for PNG support. if not check_codec("zlib"): raise Exception( "FATAL: zip codec not supported. Install pillow correctly! " " 'sudo apt-get install libjpeg-dev' then 'pip uninstall pillow &&" " pip install pillow --user'" ) synapse-1.53.0/synapse/rest/media/v1/_base.py000066400000000000000000000353161420514467300207670ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2019-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import os import urllib from types import TracebackType from typing import Awaitable, Dict, Generator, List, Optional, Tuple, Type import attr from twisted.internet.interfaces import IConsumer from twisted.protocols.basic import FileSender from twisted.web.server import Request from synapse.api.errors import Codes, SynapseError, cs_error from synapse.http.server import finish_request, respond_with_json from synapse.http.site import SynapseRequest from synapse.logging.context import make_deferred_yieldable from synapse.util.stringutils import is_ascii, parse_and_validate_server_name logger = logging.getLogger(__name__) # list all text content types that will have the charset default to UTF-8 when # none is given TEXT_CONTENT_TYPES = [ "text/css", "text/csv", "text/html", "text/calendar", "text/plain", "text/javascript", "application/json", "application/ld+json", "application/rtf", "image/svg+xml", "text/xml", ] def parse_media_id(request: Request) -> Tuple[str, str, Optional[str]]: """Parses the server name, media ID and optional file name from the request URI Also performs some rough validation on the server name. Args: request: The `Request`. Returns: A tuple containing the parsed server name, media ID and optional file name. Raises: SynapseError(404): if parsing or validation fail for any reason """ try: # The type on postpath seems incorrect in Twisted 21.2.0. postpath: List[bytes] = request.postpath # type: ignore assert postpath # This allows users to append e.g. /test.png to the URL. Useful for # clients that parse the URL to see content type. server_name_bytes, media_id_bytes = postpath[:2] server_name = server_name_bytes.decode("utf-8") media_id = media_id_bytes.decode("utf8") # Validate the server name, raising if invalid parse_and_validate_server_name(server_name) file_name = None if len(postpath) > 2: try: file_name = urllib.parse.unquote(postpath[-1].decode("utf-8")) except UnicodeDecodeError: pass return server_name, media_id, file_name except Exception: raise SynapseError( 404, "Invalid media id token %r" % (request.postpath,), Codes.UNKNOWN ) def respond_404(request: SynapseRequest) -> None: respond_with_json( request, 404, cs_error("Not found %r" % (request.postpath,), code=Codes.NOT_FOUND), send_cors=True, ) async def respond_with_file( request: SynapseRequest, media_type: str, file_path: str, file_size: Optional[int] = None, upload_name: Optional[str] = None, ) -> None: logger.debug("Responding with %r", file_path) if os.path.isfile(file_path): if file_size is None: stat = os.stat(file_path) file_size = stat.st_size add_file_headers(request, media_type, file_size, upload_name) with open(file_path, "rb") as f: await make_deferred_yieldable(FileSender().beginFileTransfer(f, request)) finish_request(request) else: respond_404(request) def add_file_headers( request: Request, media_type: str, file_size: Optional[int], upload_name: Optional[str], ) -> None: """Adds the correct response headers in preparation for responding with the media. Args: request media_type: The media/content type. file_size: Size in bytes of the media, if known. upload_name: The name of the requested file, if any. """ def _quote(x: str) -> str: return urllib.parse.quote(x.encode("utf-8")) # Default to a UTF-8 charset for text content types. # ex, uses UTF-8 for 'text/css' but not 'text/css; charset=UTF-16' if media_type.lower() in TEXT_CONTENT_TYPES: content_type = media_type + "; charset=UTF-8" else: content_type = media_type request.setHeader(b"Content-Type", content_type.encode("UTF-8")) if upload_name: # RFC6266 section 4.1 [1] defines both `filename` and `filename*`. # # `filename` is defined to be a `value`, which is defined by RFC2616 # section 3.6 [2] to be a `token` or a `quoted-string`, where a `token` # is (essentially) a single US-ASCII word, and a `quoted-string` is a # US-ASCII string surrounded by double-quotes, using backslash as an # escape character. Note that %-encoding is *not* permitted. # # `filename*` is defined to be an `ext-value`, which is defined in # RFC5987 section 3.2.1 [3] to be `charset "'" [ language ] "'" value-chars`, # where `value-chars` is essentially a %-encoded string in the given charset. # # [1]: https://tools.ietf.org/html/rfc6266#section-4.1 # [2]: https://tools.ietf.org/html/rfc2616#section-3.6 # [3]: https://tools.ietf.org/html/rfc5987#section-3.2.1 # We avoid the quoted-string version of `filename`, because (a) synapse didn't # correctly interpret those as of 0.99.2 and (b) they are a bit of a pain and we # may as well just do the filename* version. if _can_encode_filename_as_token(upload_name): disposition = "inline; filename=%s" % (upload_name,) else: disposition = "inline; filename*=utf-8''%s" % (_quote(upload_name),) request.setHeader(b"Content-Disposition", disposition.encode("ascii")) # cache for at least a day. # XXX: we might want to turn this off for data we don't want to # recommend caching as it's sensitive or private - or at least # select private. don't bother setting Expires as all our # clients are smart enough to be happy with Cache-Control request.setHeader(b"Cache-Control", b"public,max-age=86400,s-maxage=86400") if file_size is not None: request.setHeader(b"Content-Length", b"%d" % (file_size,)) # Tell web crawlers to not index, archive, or follow links in media. This # should help to prevent things in the media repo from showing up in web # search results. request.setHeader(b"X-Robots-Tag", "noindex, nofollow, noarchive, noimageindex") # separators as defined in RFC2616. SP and HT are handled separately. # see _can_encode_filename_as_token. _FILENAME_SEPARATOR_CHARS = { "(", ")", "<", ">", "@", ",", ";", ":", "\\", '"', "/", "[", "]", "?", "=", "{", "}", } def _can_encode_filename_as_token(x: str) -> bool: for c in x: # from RFC2616: # # token = 1* # # separators = "(" | ")" | "<" | ">" | "@" # | "," | ";" | ":" | "\" | <"> # | "/" | "[" | "]" | "?" | "=" # | "{" | "}" | SP | HT # # CHAR = # # CTL = # if ord(c) >= 127 or ord(c) <= 32 or c in _FILENAME_SEPARATOR_CHARS: return False return True async def respond_with_responder( request: SynapseRequest, responder: "Optional[Responder]", media_type: str, file_size: Optional[int], upload_name: Optional[str] = None, ) -> None: """Responds to the request with given responder. If responder is None then returns 404. Args: request responder media_type: The media/content type. file_size: Size in bytes of the media. If not known it should be None upload_name: The name of the requested file, if any. """ if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return if not responder: respond_404(request) return logger.debug("Responding to media request with responder %s", responder) add_file_headers(request, media_type, file_size, upload_name) try: with responder: await responder.write_to_consumer(request) except Exception as e: # The majority of the time this will be due to the client having gone # away. Unfortunately, Twisted simply throws a generic exception at us # in that case. logger.warning("Failed to write to consumer: %s %s", type(e), e) # Unregister the producer, if it has one, so Twisted doesn't complain if request.producer: request.unregisterProducer() finish_request(request) class Responder: """Represents a response that can be streamed to the requester. Responder is a context manager which *must* be used, so that any resources held can be cleaned up. """ def write_to_consumer(self, consumer: IConsumer) -> Awaitable: """Stream response into consumer Args: consumer: The consumer to stream into. Returns: Resolves once the response has finished being written """ pass def __enter__(self) -> None: pass def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: pass @attr.s(slots=True, frozen=True, auto_attribs=True) class ThumbnailInfo: """Details about a generated thumbnail.""" width: int height: int method: str # Content type of thumbnail, e.g. image/png type: str # The size of the media file, in bytes. length: Optional[int] = None @attr.s(slots=True, frozen=True, auto_attribs=True) class FileInfo: """Details about a requested/uploaded file.""" # The server name where the media originated from, or None if local. server_name: Optional[str] # The local ID of the file. For local files this is the same as the media_id file_id: str # If the file is for the url preview cache url_cache: bool = False # Whether the file is a thumbnail or not. thumbnail: Optional[ThumbnailInfo] = None # The below properties exist to maintain compatibility with third-party modules. @property def thumbnail_width(self) -> Optional[int]: if not self.thumbnail: return None return self.thumbnail.width @property def thumbnail_height(self) -> Optional[int]: if not self.thumbnail: return None return self.thumbnail.height @property def thumbnail_method(self) -> Optional[str]: if not self.thumbnail: return None return self.thumbnail.method @property def thumbnail_type(self) -> Optional[str]: if not self.thumbnail: return None return self.thumbnail.type @property def thumbnail_length(self) -> Optional[int]: if not self.thumbnail: return None return self.thumbnail.length def get_filename_from_headers(headers: Dict[bytes, List[bytes]]) -> Optional[str]: """ Get the filename of the downloaded file by inspecting the Content-Disposition HTTP header. Args: headers: The HTTP request headers. Returns: The filename, or None. """ content_disposition = headers.get(b"Content-Disposition", [b""]) # No header, bail out. if not content_disposition[0]: return None _, params = _parse_header(content_disposition[0]) upload_name = None # First check if there is a valid UTF-8 filename upload_name_utf8 = params.get(b"filename*", None) if upload_name_utf8: if upload_name_utf8.lower().startswith(b"utf-8''"): upload_name_utf8 = upload_name_utf8[7:] # We have a filename*= section. This MUST be ASCII, and any UTF-8 # bytes are %-quoted. try: # Once it is decoded, we can then unquote the %-encoded # parts strictly into a unicode string. upload_name = urllib.parse.unquote( upload_name_utf8.decode("ascii"), errors="strict" ) except UnicodeDecodeError: # Incorrect UTF-8. pass # If there isn't check for an ascii name. if not upload_name: upload_name_ascii = params.get(b"filename", None) if upload_name_ascii and is_ascii(upload_name_ascii): upload_name = upload_name_ascii.decode("ascii") # This may be None here, indicating we did not find a matching name. return upload_name def _parse_header(line: bytes) -> Tuple[bytes, Dict[bytes, bytes]]: """Parse a Content-type like header. Cargo-culted from `cgi`, but works on bytes rather than strings. Args: line: header to be parsed Returns: The main content-type, followed by the parameter dictionary """ parts = _parseparam(b";" + line) key = next(parts) pdict = {} for p in parts: i = p.find(b"=") if i >= 0: name = p[:i].strip().lower() value = p[i + 1 :].strip() # strip double-quotes if len(value) >= 2 and value[0:1] == value[-1:] == b'"': value = value[1:-1] value = value.replace(b"\\\\", b"\\").replace(b'\\"', b'"') pdict[name] = value return key, pdict def _parseparam(s: bytes) -> Generator[bytes, None, None]: """Generator which splits the input on ;, respecting double-quoted sequences Cargo-culted from `cgi`, but works on bytes rather than strings. Args: s: header to be parsed Returns: The split input """ while s[:1] == b";": s = s[1:] # look for the next ; end = s.find(b";") # if there is an odd number of " marks between here and the next ;, skip to the # next ; instead while end > 0 and (s.count(b'"', 0, end) - s.count(b'\\"', 0, end)) % 2: end = s.find(b";", end + 1) if end < 0: end = len(s) f = s[:end] yield f.strip() s = s[end:] synapse-1.53.0/synapse/rest/media/v1/config_resource.py000066400000000000000000000027511420514467300230670ustar00rootroot00000000000000# Copyright 2018 Will Hunt # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from typing import TYPE_CHECKING from synapse.http.server import DirectServeJsonResource, respond_with_json from synapse.http.site import SynapseRequest if TYPE_CHECKING: from synapse.server import HomeServer class MediaConfigResource(DirectServeJsonResource): isLeaf = True def __init__(self, hs: "HomeServer"): super().__init__() config = hs.config self.clock = hs.get_clock() self.auth = hs.get_auth() self.limits_dict = {"m.upload.size": config.media.max_upload_size} async def _async_render_GET(self, request: SynapseRequest) -> None: await self.auth.get_user_by_req(request) respond_with_json(request, 200, self.limits_dict, send_cors=True) async def _async_render_OPTIONS(self, request: SynapseRequest) -> None: respond_with_json(request, 200, {}, send_cors=True) synapse-1.53.0/synapse/rest/media/v1/download_resource.py000066400000000000000000000051011420514467300234210ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import TYPE_CHECKING from synapse.http.server import DirectServeJsonResource, set_cors_headers from synapse.http.servlet import parse_boolean from synapse.http.site import SynapseRequest from ._base import parse_media_id, respond_404 if TYPE_CHECKING: from synapse.rest.media.v1.media_repository import MediaRepository from synapse.server import HomeServer logger = logging.getLogger(__name__) class DownloadResource(DirectServeJsonResource): isLeaf = True def __init__(self, hs: "HomeServer", media_repo: "MediaRepository"): super().__init__() self.media_repo = media_repo self.server_name = hs.hostname async def _async_render_GET(self, request: SynapseRequest) -> None: set_cors_headers(request) request.setHeader( b"Content-Security-Policy", b"sandbox;" b" default-src 'none';" b" script-src 'none';" b" plugin-types application/pdf;" b" style-src 'unsafe-inline';" b" media-src 'self';" b" object-src 'self';", ) # Limited non-standard form of CSP for IE11 request.setHeader(b"X-Content-Security-Policy", b"sandbox;") request.setHeader( b"Referrer-Policy", b"no-referrer", ) server_name, media_id, name = parse_media_id(request) if server_name == self.server_name: await self.media_repo.get_local_media(request, media_id, name) else: allow_remote = parse_boolean(request, "allow_remote", default=True) if not allow_remote: logger.info( "Rejecting request for remote media %s/%s due to allow_remote", server_name, media_id, ) respond_404(request) return await self.media_repo.get_remote_media(request, server_name, media_id, name) synapse-1.53.0/synapse/rest/media/v1/filepath.py000066400000000000000000000367051420514467300215150ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import functools import os import re import string from typing import Any, Callable, List, TypeVar, Union, cast NEW_FORMAT_ID_RE = re.compile(r"^\d\d\d\d-\d\d-\d\d") F = TypeVar("F", bound=Callable[..., str]) def _wrap_in_base_path(func: F) -> F: """Takes a function that returns a relative path and turns it into an absolute path based on the location of the primary media store """ @functools.wraps(func) def _wrapped(self: "MediaFilePaths", *args: Any, **kwargs: Any) -> str: path = func(self, *args, **kwargs) return os.path.join(self.base_path, path) return cast(F, _wrapped) GetPathMethod = TypeVar( "GetPathMethod", bound=Union[Callable[..., str], Callable[..., List[str]]] ) def _wrap_with_jail_check(relative: bool) -> Callable[[GetPathMethod], GetPathMethod]: """Wraps a path-returning method to check that the returned path(s) do not escape the media store directory. The path-returning method may return either a single path, or a list of paths. The check is not expected to ever fail, unless `func` is missing a call to `_validate_path_component`, or `_validate_path_component` is buggy. Args: relative: A boolean indicating whether the wrapped method returns paths relative to the media store directory. Returns: A method which will wrap a path-returning method, adding a check to ensure that the returned path(s) lie within the media store directory. The check will raise a `ValueError` if it fails. """ def _wrap_with_jail_check_inner(func: GetPathMethod) -> GetPathMethod: @functools.wraps(func) def _wrapped( self: "MediaFilePaths", *args: Any, **kwargs: Any ) -> Union[str, List[str]]: path_or_paths = func(self, *args, **kwargs) if isinstance(path_or_paths, list): paths_to_check = path_or_paths else: paths_to_check = [path_or_paths] for path in paths_to_check: # Construct the path that will ultimately be used. # We cannot guess whether `path` is relative to the media store # directory, since the media store directory may itself be a relative # path. if relative: path = os.path.join(self.base_path, path) normalized_path = os.path.normpath(path) # Now that `normpath` has eliminated `../`s and `./`s from the path, # `os.path.commonpath` can be used to check whether it lies within the # media store directory. if ( os.path.commonpath([normalized_path, self.normalized_base_path]) != self.normalized_base_path ): # The path resolves to outside the media store directory, # or `self.base_path` is `.`, which is an unlikely configuration. raise ValueError(f"Invalid media store path: {path!r}") # Note that `os.path.normpath`/`abspath` has a subtle caveat: # `a/b/c/../c` will normalize to `a/b/c`, but the former refers to a # different path if `a/b/c` is a symlink. That is, the check above is # not perfect and may allow a certain restricted subset of untrustworthy # paths through. Since the check above is secondary to the main # `_validate_path_component` checks, it's less important for it to be # perfect. # # As an alternative, `os.path.realpath` will resolve symlinks, but # proves problematic if there are symlinks inside the media store. # eg. if `url_store/` is symlinked to elsewhere, its canonical path # won't match that of the main media store directory. return path_or_paths return cast(GetPathMethod, _wrapped) return _wrap_with_jail_check_inner ALLOWED_CHARACTERS = set( string.ascii_letters + string.digits + "_-" + ".[]:" # Domain names, IPv6 addresses and ports in server names ) FORBIDDEN_NAMES = { "", os.path.curdir, # "." for the current platform os.path.pardir, # ".." for the current platform } def _validate_path_component(name: str) -> str: """Checks that the given string can be safely used as a path component Args: name: The path component to check. Returns: The path component if valid. Raises: ValueError: If `name` cannot be safely used as a path component. """ if not ALLOWED_CHARACTERS.issuperset(name) or name in FORBIDDEN_NAMES: raise ValueError(f"Invalid path component: {name!r}") return name class MediaFilePaths: """Describes where files are stored on disk. Most of the functions have a `*_rel` variant which returns a file path that is relative to the base media store path. This is mainly used when we want to write to the backup media store (when one is configured) """ def __init__(self, primary_base_path: str): self.base_path = primary_base_path self.normalized_base_path = os.path.normpath(self.base_path) # Refuse to initialize if paths cannot be validated correctly for the current # platform. assert os.path.sep not in ALLOWED_CHARACTERS assert os.path.altsep not in ALLOWED_CHARACTERS # On Windows, paths have all sorts of weirdness which `_validate_path_component` # does not consider. In any case, the remote media store can't work correctly # for certain homeservers there, since ":"s aren't allowed in paths. assert os.name == "posix" @_wrap_with_jail_check(relative=True) def local_media_filepath_rel(self, media_id: str) -> str: return os.path.join( "local_content", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) local_media_filepath = _wrap_in_base_path(local_media_filepath_rel) @_wrap_with_jail_check(relative=True) def local_media_thumbnail_rel( self, media_id: str, width: int, height: int, content_type: str, method: str ) -> str: top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s-%s" % (width, height, top_level_type, sub_type, method) return os.path.join( "local_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), _validate_path_component(file_name), ) local_media_thumbnail = _wrap_in_base_path(local_media_thumbnail_rel) @_wrap_with_jail_check(relative=False) def local_media_thumbnail_dir(self, media_id: str) -> str: """ Retrieve the local store path of thumbnails of a given media_id Args: media_id: The media ID to query. Returns: Path of local_thumbnails from media_id """ return os.path.join( self.base_path, "local_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) @_wrap_with_jail_check(relative=True) def remote_media_filepath_rel(self, server_name: str, file_id: str) -> str: return os.path.join( "remote_content", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), ) remote_media_filepath = _wrap_in_base_path(remote_media_filepath_rel) @_wrap_with_jail_check(relative=True) def remote_media_thumbnail_rel( self, server_name: str, file_id: str, width: int, height: int, content_type: str, method: str, ) -> str: top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s-%s" % (width, height, top_level_type, sub_type, method) return os.path.join( "remote_thumbnail", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), _validate_path_component(file_name), ) remote_media_thumbnail = _wrap_in_base_path(remote_media_thumbnail_rel) # Legacy path that was used to store thumbnails previously. # Should be removed after some time, when most of the thumbnails are stored # using the new path. @_wrap_with_jail_check(relative=True) def remote_media_thumbnail_rel_legacy( self, server_name: str, file_id: str, width: int, height: int, content_type: str ) -> str: top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s" % (width, height, top_level_type, sub_type) return os.path.join( "remote_thumbnail", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), _validate_path_component(file_name), ) @_wrap_with_jail_check(relative=False) def remote_media_thumbnail_dir(self, server_name: str, file_id: str) -> str: return os.path.join( self.base_path, "remote_thumbnail", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), ) @_wrap_with_jail_check(relative=True) def url_cache_filepath_rel(self, media_id: str) -> str: if NEW_FORMAT_ID_RE.match(media_id): # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf return os.path.join( "url_cache", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), ) else: return os.path.join( "url_cache", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) url_cache_filepath = _wrap_in_base_path(url_cache_filepath_rel) @_wrap_with_jail_check(relative=False) def url_cache_filepath_dirs_to_delete(self, media_id: str) -> List[str]: "The dirs to try and remove if we delete the media_id file" if NEW_FORMAT_ID_RE.match(media_id): return [ os.path.join( self.base_path, "url_cache", _validate_path_component(media_id[:10]) ) ] else: return [ os.path.join( self.base_path, "url_cache", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), ), os.path.join( self.base_path, "url_cache", _validate_path_component(media_id[0:2]) ), ] @_wrap_with_jail_check(relative=True) def url_cache_thumbnail_rel( self, media_id: str, width: int, height: int, content_type: str, method: str ) -> str: # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s-%s" % (width, height, top_level_type, sub_type, method) if NEW_FORMAT_ID_RE.match(media_id): return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), _validate_path_component(file_name), ) else: return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), _validate_path_component(file_name), ) url_cache_thumbnail = _wrap_in_base_path(url_cache_thumbnail_rel) @_wrap_with_jail_check(relative=True) def url_cache_thumbnail_directory_rel(self, media_id: str) -> str: # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf if NEW_FORMAT_ID_RE.match(media_id): return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), ) else: return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) url_cache_thumbnail_directory = _wrap_in_base_path( url_cache_thumbnail_directory_rel ) @_wrap_with_jail_check(relative=False) def url_cache_thumbnail_dirs_to_delete(self, media_id: str) -> List[str]: "The dirs to try and remove if we delete the media_id thumbnails" # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf if NEW_FORMAT_ID_RE.match(media_id): return [ os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), ), os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[:10]), ), ] else: return [ os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ), os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), ), os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[0:2]), ), ] synapse-1.53.0/synapse/rest/media/v1/media_repository.py000066400000000000000000001065361420514467300232770ustar00rootroot00000000000000# Copyright 2014-2016 OpenMarket Ltd # Copyright 2018-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import errno import logging import os import shutil from io import BytesIO from typing import IO, TYPE_CHECKING, Dict, List, Optional, Set, Tuple import twisted.internet.error import twisted.web.http from twisted.internet.defer import Deferred from twisted.web.resource import Resource from synapse.api.errors import ( FederationDeniedError, HttpResponseException, NotFoundError, RequestSendFailed, SynapseError, ) from synapse.config._base import ConfigError from synapse.config.repository import ThumbnailRequirement from synapse.http.site import SynapseRequest from synapse.logging.context import defer_to_thread from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import UserID from synapse.util.async_helpers import Linearizer from synapse.util.retryutils import NotRetryingDestination from synapse.util.stringutils import random_string from ._base import ( FileInfo, Responder, ThumbnailInfo, get_filename_from_headers, respond_404, respond_with_responder, ) from .config_resource import MediaConfigResource from .download_resource import DownloadResource from .filepath import MediaFilePaths from .media_storage import MediaStorage from .preview_url_resource import PreviewUrlResource from .storage_provider import StorageProviderWrapper from .thumbnail_resource import ThumbnailResource from .thumbnailer import Thumbnailer, ThumbnailError from .upload_resource import UploadResource if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) UPDATE_RECENTLY_ACCESSED_TS = 60 * 1000 class MediaRepository: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.client = hs.get_federation_http_client() self.clock = hs.get_clock() self.server_name = hs.hostname self.store = hs.get_datastore() self.max_upload_size = hs.config.media.max_upload_size self.max_image_pixels = hs.config.media.max_image_pixels Thumbnailer.set_limits(self.max_image_pixels) self.primary_base_path: str = hs.config.media.media_store_path self.filepaths: MediaFilePaths = MediaFilePaths(self.primary_base_path) self.dynamic_thumbnails = hs.config.media.dynamic_thumbnails self.thumbnail_requirements = hs.config.media.thumbnail_requirements self.remote_media_linearizer = Linearizer(name="media_remote") self.recently_accessed_remotes: Set[Tuple[str, str]] = set() self.recently_accessed_locals: Set[str] = set() self.federation_domain_whitelist = ( hs.config.federation.federation_domain_whitelist ) # List of StorageProviders where we should search for media and # potentially upload to. storage_providers = [] for ( clz, provider_config, wrapper_config, ) in hs.config.media.media_storage_providers: backend = clz(hs, provider_config) provider = StorageProviderWrapper( backend, store_local=wrapper_config.store_local, store_remote=wrapper_config.store_remote, store_synchronous=wrapper_config.store_synchronous, ) storage_providers.append(provider) self.media_storage = MediaStorage( self.hs, self.primary_base_path, self.filepaths, storage_providers ) self.clock.looping_call( self._start_update_recently_accessed, UPDATE_RECENTLY_ACCESSED_TS ) def _start_update_recently_accessed(self) -> Deferred: return run_as_background_process( "update_recently_accessed_media", self._update_recently_accessed ) async def _update_recently_accessed(self) -> None: remote_media = self.recently_accessed_remotes self.recently_accessed_remotes = set() local_media = self.recently_accessed_locals self.recently_accessed_locals = set() await self.store.update_cached_last_access_time( local_media, remote_media, self.clock.time_msec() ) def mark_recently_accessed(self, server_name: Optional[str], media_id: str) -> None: """Mark the given media as recently accessed. Args: server_name: Origin server of media, or None if local media_id: The media ID of the content """ if server_name: self.recently_accessed_remotes.add((server_name, media_id)) else: self.recently_accessed_locals.add(media_id) async def create_content( self, media_type: str, upload_name: Optional[str], content: IO, content_length: int, auth_user: UserID, ) -> str: """Store uploaded content for a local user and return the mxc URL Args: media_type: The content type of the file. upload_name: The name of the file, if provided. content: A file like object that is the content to store content_length: The length of the content auth_user: The user_id of the uploader Returns: The mxc url of the stored content """ media_id = random_string(24) file_info = FileInfo(server_name=None, file_id=media_id) fname = await self.media_storage.store_file(content, file_info) logger.info("Stored local media in file %r", fname) await self.store.store_local_media( media_id=media_id, media_type=media_type, time_now_ms=self.clock.time_msec(), upload_name=upload_name, media_length=content_length, user_id=auth_user, ) await self._generate_thumbnails(None, media_id, media_id, media_type) return "mxc://%s/%s" % (self.server_name, media_id) async def get_local_media( self, request: SynapseRequest, media_id: str, name: Optional[str] ) -> None: """Responds to requests for local media, if exists, or returns 404. Args: request: The incoming request. media_id: The media ID of the content. (This is the same as the file_id for local content.) name: Optional name that, if specified, will be used as the filename in the Content-Disposition header of the response. Returns: Resolves once a response has successfully been written to request """ media_info = await self.store.get_local_media(media_id) if not media_info or media_info["quarantined_by"]: respond_404(request) return self.mark_recently_accessed(None, media_id) media_type = media_info["media_type"] if not media_type: media_type = "application/octet-stream" media_length = media_info["media_length"] upload_name = name if name else media_info["upload_name"] url_cache = media_info["url_cache"] file_info = FileInfo(None, media_id, url_cache=bool(url_cache)) responder = await self.media_storage.fetch_media(file_info) await respond_with_responder( request, responder, media_type, media_length, upload_name ) async def get_remote_media( self, request: SynapseRequest, server_name: str, media_id: str, name: Optional[str], ) -> None: """Respond to requests for remote media. Args: request: The incoming request. server_name: Remote server_name where the media originated. media_id: The media ID of the content (as defined by the remote server). name: Optional name that, if specified, will be used as the filename in the Content-Disposition header of the response. Returns: Resolves once a response has successfully been written to request """ if ( self.federation_domain_whitelist is not None and server_name not in self.federation_domain_whitelist ): raise FederationDeniedError(server_name) self.mark_recently_accessed(server_name, media_id) # We linearize here to ensure that we don't try and download remote # media multiple times concurrently key = (server_name, media_id) with (await self.remote_media_linearizer.queue(key)): responder, media_info = await self._get_remote_media_impl( server_name, media_id ) # We deliberately stream the file outside the lock if responder: media_type = media_info["media_type"] media_length = media_info["media_length"] upload_name = name if name else media_info["upload_name"] await respond_with_responder( request, responder, media_type, media_length, upload_name ) else: respond_404(request) async def get_remote_media_info(self, server_name: str, media_id: str) -> dict: """Gets the media info associated with the remote file, downloading if necessary. Args: server_name: Remote server_name where the media originated. media_id: The media ID of the content (as defined by the remote server). Returns: The media info of the file """ if ( self.federation_domain_whitelist is not None and server_name not in self.federation_domain_whitelist ): raise FederationDeniedError(server_name) # We linearize here to ensure that we don't try and download remote # media multiple times concurrently key = (server_name, media_id) with (await self.remote_media_linearizer.queue(key)): responder, media_info = await self._get_remote_media_impl( server_name, media_id ) # Ensure we actually use the responder so that it releases resources if responder: with responder: pass return media_info async def _get_remote_media_impl( self, server_name: str, media_id: str ) -> Tuple[Optional[Responder], dict]: """Looks for media in local cache, if not there then attempt to download from remote server. Args: server_name (str): Remote server_name where the media originated. media_id (str): The media ID of the content (as defined by the remote server). Returns: A tuple of responder and the media info of the file. """ media_info = await self.store.get_cached_remote_media(server_name, media_id) # file_id is the ID we use to track the file locally. If we've already # seen the file then reuse the existing ID, otherwise generate a new # one. # If we have an entry in the DB, try and look for it if media_info: file_id = media_info["filesystem_id"] file_info = FileInfo(server_name, file_id) if media_info["quarantined_by"]: logger.info("Media is quarantined") raise NotFoundError() if not media_info["media_type"]: media_info["media_type"] = "application/octet-stream" responder = await self.media_storage.fetch_media(file_info) if responder: return responder, media_info # Failed to find the file anywhere, lets download it. try: media_info = await self._download_remote_file( server_name, media_id, ) except SynapseError: raise except Exception as e: # An exception may be because we downloaded media in another # process, so let's check if we magically have the media. media_info = await self.store.get_cached_remote_media(server_name, media_id) if not media_info: raise e file_id = media_info["filesystem_id"] if not media_info["media_type"]: media_info["media_type"] = "application/octet-stream" file_info = FileInfo(server_name, file_id) # We generate thumbnails even if another process downloaded the media # as a) it's conceivable that the other download request dies before it # generates thumbnails, but mainly b) we want to be sure the thumbnails # have finished being generated before responding to the client, # otherwise they'll request thumbnails and get a 404 if they're not # ready yet. await self._generate_thumbnails( server_name, media_id, file_id, media_info["media_type"] ) responder = await self.media_storage.fetch_media(file_info) return responder, media_info async def _download_remote_file( self, server_name: str, media_id: str, ) -> dict: """Attempt to download the remote file from the given server name, using the given file_id as the local id. Args: server_name: Originating server media_id: The media ID of the content (as defined by the remote server). This is different than the file_id, which is locally generated. file_id: Local file ID Returns: The media info of the file. """ file_id = random_string(24) file_info = FileInfo(server_name=server_name, file_id=file_id) with self.media_storage.store_into_file(file_info) as (f, fname, finish): request_path = "/".join( ("/_matrix/media/r0/download", server_name, media_id) ) try: length, headers = await self.client.get_file( server_name, request_path, output_stream=f, max_size=self.max_upload_size, args={ # tell the remote server to 404 if it doesn't # recognise the server_name, to make sure we don't # end up with a routing loop. "allow_remote": "false" }, ) except RequestSendFailed as e: logger.warning( "Request failed fetching remote media %s/%s: %r", server_name, media_id, e, ) raise SynapseError(502, "Failed to fetch remote media") except HttpResponseException as e: logger.warning( "HTTP error fetching remote media %s/%s: %s", server_name, media_id, e.response, ) if e.code == twisted.web.http.NOT_FOUND: raise e.to_synapse_error() raise SynapseError(502, "Failed to fetch remote media") except SynapseError: logger.warning( "Failed to fetch remote media %s/%s", server_name, media_id ) raise except NotRetryingDestination: logger.warning("Not retrying destination %r", server_name) raise SynapseError(502, "Failed to fetch remote media") except Exception: logger.exception( "Failed to fetch remote media %s/%s", server_name, media_id ) raise SynapseError(502, "Failed to fetch remote media") await finish() if b"Content-Type" in headers: media_type = headers[b"Content-Type"][0].decode("ascii") else: media_type = "application/octet-stream" upload_name = get_filename_from_headers(headers) time_now_ms = self.clock.time_msec() # Multiple remote media download requests can race (when using # multiple media repos), so this may throw a violation constraint # exception. If it does we'll delete the newly downloaded file from # disk (as we're in the ctx manager). # # However: we've already called `finish()` so we may have also # written to the storage providers. This is preferable to the # alternative where we call `finish()` *after* this, where we could # end up having an entry in the DB but fail to write the files to # the storage providers. await self.store.store_cached_remote_media( origin=server_name, media_id=media_id, media_type=media_type, time_now_ms=self.clock.time_msec(), upload_name=upload_name, media_length=length, filesystem_id=file_id, ) logger.info("Stored remote media in file %r", fname) media_info = { "media_type": media_type, "media_length": length, "upload_name": upload_name, "created_ts": time_now_ms, "filesystem_id": file_id, } return media_info def _get_thumbnail_requirements( self, media_type: str ) -> Tuple[ThumbnailRequirement, ...]: scpos = media_type.find(";") if scpos > 0: media_type = media_type[:scpos] return self.thumbnail_requirements.get(media_type, ()) def _generate_thumbnail( self, thumbnailer: Thumbnailer, t_width: int, t_height: int, t_method: str, t_type: str, ) -> Optional[BytesIO]: m_width = thumbnailer.width m_height = thumbnailer.height if m_width * m_height >= self.max_image_pixels: logger.info( "Image too large to thumbnail %r x %r > %r", m_width, m_height, self.max_image_pixels, ) return None if thumbnailer.transpose_method is not None: m_width, m_height = thumbnailer.transpose() if t_method == "crop": return thumbnailer.crop(t_width, t_height, t_type) elif t_method == "scale": t_width, t_height = thumbnailer.aspect(t_width, t_height) t_width = min(m_width, t_width) t_height = min(m_height, t_height) return thumbnailer.scale(t_width, t_height, t_type) return None async def generate_local_exact_thumbnail( self, media_id: str, t_width: int, t_height: int, t_method: str, t_type: str, url_cache: bool, ) -> Optional[str]: input_path = await self.media_storage.ensure_media_is_in_local_cache( FileInfo(None, media_id, url_cache=url_cache) ) try: thumbnailer = Thumbnailer(input_path) except ThumbnailError as e: logger.warning( "Unable to generate a thumbnail for local media %s using a method of %s and type of %s: %s", media_id, t_method, t_type, e, ) return None t_byte_source = await defer_to_thread( self.hs.get_reactor(), self._generate_thumbnail, thumbnailer, t_width, t_height, t_method, t_type, ) if t_byte_source: try: file_info = FileInfo( server_name=None, file_id=media_id, url_cache=url_cache, thumbnail=ThumbnailInfo( width=t_width, height=t_height, method=t_method, type=t_type, ), ) output_path = await self.media_storage.store_file( t_byte_source, file_info ) finally: t_byte_source.close() logger.info("Stored thumbnail in file %r", output_path) t_len = os.path.getsize(output_path) await self.store.store_local_thumbnail( media_id, t_width, t_height, t_type, t_method, t_len ) return output_path # Could not generate thumbnail. return None async def generate_remote_exact_thumbnail( self, server_name: str, file_id: str, media_id: str, t_width: int, t_height: int, t_method: str, t_type: str, ) -> Optional[str]: input_path = await self.media_storage.ensure_media_is_in_local_cache( FileInfo(server_name, file_id) ) try: thumbnailer = Thumbnailer(input_path) except ThumbnailError as e: logger.warning( "Unable to generate a thumbnail for remote media %s from %s using a method of %s and type of %s: %s", media_id, server_name, t_method, t_type, e, ) return None t_byte_source = await defer_to_thread( self.hs.get_reactor(), self._generate_thumbnail, thumbnailer, t_width, t_height, t_method, t_type, ) if t_byte_source: try: file_info = FileInfo( server_name=server_name, file_id=file_id, thumbnail=ThumbnailInfo( width=t_width, height=t_height, method=t_method, type=t_type, ), ) output_path = await self.media_storage.store_file( t_byte_source, file_info ) finally: t_byte_source.close() logger.info("Stored thumbnail in file %r", output_path) t_len = os.path.getsize(output_path) await self.store.store_remote_media_thumbnail( server_name, media_id, file_id, t_width, t_height, t_type, t_method, t_len, ) return output_path # Could not generate thumbnail. return None async def _generate_thumbnails( self, server_name: Optional[str], media_id: str, file_id: str, media_type: str, url_cache: bool = False, ) -> Optional[dict]: """Generate and store thumbnails for an image. Args: server_name: The server name if remote media, else None if local media_id: The media ID of the content. (This is the same as the file_id for local content) file_id: Local file ID media_type: The content type of the file url_cache: If we are thumbnailing images downloaded for the URL cache, used exclusively by the url previewer Returns: Dict with "width" and "height" keys of original image or None if the media cannot be thumbnailed. """ requirements = self._get_thumbnail_requirements(media_type) if not requirements: return None input_path = await self.media_storage.ensure_media_is_in_local_cache( FileInfo(server_name, file_id, url_cache=url_cache) ) try: thumbnailer = Thumbnailer(input_path) except ThumbnailError as e: logger.warning( "Unable to generate thumbnails for remote media %s from %s of type %s: %s", media_id, server_name, media_type, e, ) return None m_width = thumbnailer.width m_height = thumbnailer.height if m_width * m_height >= self.max_image_pixels: logger.info( "Image too large to thumbnail %r x %r > %r", m_width, m_height, self.max_image_pixels, ) return None if thumbnailer.transpose_method is not None: m_width, m_height = await defer_to_thread( self.hs.get_reactor(), thumbnailer.transpose ) # We deduplicate the thumbnail sizes by ignoring the cropped versions if # they have the same dimensions of a scaled one. thumbnails: Dict[Tuple[int, int, str], str] = {} for requirement in requirements: if requirement.method == "crop": thumbnails.setdefault( (requirement.width, requirement.height, requirement.media_type), requirement.method, ) elif requirement.method == "scale": t_width, t_height = thumbnailer.aspect( requirement.width, requirement.height ) t_width = min(m_width, t_width) t_height = min(m_height, t_height) thumbnails[ (t_width, t_height, requirement.media_type) ] = requirement.method # Now we generate the thumbnails for each dimension, store it for (t_width, t_height, t_type), t_method in thumbnails.items(): # Generate the thumbnail if t_method == "crop": t_byte_source = await defer_to_thread( self.hs.get_reactor(), thumbnailer.crop, t_width, t_height, t_type ) elif t_method == "scale": t_byte_source = await defer_to_thread( self.hs.get_reactor(), thumbnailer.scale, t_width, t_height, t_type ) else: logger.error("Unrecognized method: %r", t_method) continue if not t_byte_source: continue file_info = FileInfo( server_name=server_name, file_id=file_id, url_cache=url_cache, thumbnail=ThumbnailInfo( width=t_width, height=t_height, method=t_method, type=t_type, ), ) with self.media_storage.store_into_file(file_info) as (f, fname, finish): try: await self.media_storage.write_to_file(t_byte_source, f) await finish() finally: t_byte_source.close() t_len = os.path.getsize(fname) # Write to database if server_name: # Multiple remote media download requests can race (when # using multiple media repos), so this may throw a violation # constraint exception. If it does we'll delete the newly # generated thumbnail from disk (as we're in the ctx # manager). # # However: we've already called `finish()` so we may have # also written to the storage providers. This is preferable # to the alternative where we call `finish()` *after* this, # where we could end up having an entry in the DB but fail # to write the files to the storage providers. try: await self.store.store_remote_media_thumbnail( server_name, media_id, file_id, t_width, t_height, t_type, t_method, t_len, ) except Exception as e: thumbnail_exists = await self.store.get_remote_media_thumbnail( server_name, media_id, t_width, t_height, t_type, ) if not thumbnail_exists: raise e else: await self.store.store_local_thumbnail( media_id, t_width, t_height, t_type, t_method, t_len ) return {"width": m_width, "height": m_height} async def delete_old_remote_media(self, before_ts: int) -> Dict[str, int]: old_media = await self.store.get_remote_media_before(before_ts) deleted = 0 for media in old_media: origin = media["media_origin"] media_id = media["media_id"] file_id = media["filesystem_id"] key = (origin, media_id) logger.info("Deleting: %r", key) # TODO: Should we delete from the backup store with (await self.remote_media_linearizer.queue(key)): full_path = self.filepaths.remote_media_filepath(origin, file_id) try: os.remove(full_path) except OSError as e: logger.warning("Failed to remove file: %r", full_path) if e.errno == errno.ENOENT: pass else: continue thumbnail_dir = self.filepaths.remote_media_thumbnail_dir( origin, file_id ) shutil.rmtree(thumbnail_dir, ignore_errors=True) await self.store.delete_remote_media(origin, media_id) deleted += 1 return {"deleted": deleted} async def delete_local_media_ids( self, media_ids: List[str] ) -> Tuple[List[str], int]: """ Delete the given local or remote media ID from this server Args: media_id: The media ID to delete. Returns: A tuple of (list of deleted media IDs, total deleted media IDs). """ return await self._remove_local_media_from_disk(media_ids) async def delete_old_local_media( self, before_ts: int, size_gt: int = 0, keep_profiles: bool = True, ) -> Tuple[List[str], int]: """ Delete local or remote media from this server by size and timestamp. Removes media files, any thumbnails and cached URLs. Args: before_ts: Unix timestamp in ms. Files that were last used before this timestamp will be deleted size_gt: Size of the media in bytes. Files that are larger will be deleted keep_profiles: Switch to delete also files that are still used in image data (e.g user profile, room avatar) If false these files will be deleted Returns: A tuple of (list of deleted media IDs, total deleted media IDs). """ old_media = await self.store.get_local_media_before( before_ts, size_gt, keep_profiles, ) return await self._remove_local_media_from_disk(old_media) async def _remove_local_media_from_disk( self, media_ids: List[str] ) -> Tuple[List[str], int]: """ Delete local or remote media from this server. Removes media files, any thumbnails and cached URLs. Args: media_ids: List of media_id to delete Returns: A tuple of (list of deleted media IDs, total deleted media IDs). """ removed_media = [] for media_id in media_ids: logger.info("Deleting media with ID '%s'", media_id) full_path = self.filepaths.local_media_filepath(media_id) try: os.remove(full_path) except OSError as e: logger.warning("Failed to remove file: %r: %s", full_path, e) if e.errno == errno.ENOENT: pass else: continue thumbnail_dir = self.filepaths.local_media_thumbnail_dir(media_id) shutil.rmtree(thumbnail_dir, ignore_errors=True) await self.store.delete_remote_media(self.server_name, media_id) await self.store.delete_url_cache((media_id,)) await self.store.delete_url_cache_media((media_id,)) removed_media.append(media_id) return removed_media, len(removed_media) class MediaRepositoryResource(Resource): """File uploading and downloading. Uploads are POSTed to a resource which returns a token which is used to GET the download:: => POST /_matrix/media/r0/upload HTTP/1.1 Content-Type: Content-Length: <= HTTP/1.1 200 OK Content-Type: application/json { "content_uri": "mxc:///" } => GET /_matrix/media/r0/download// HTTP/1.1 <= HTTP/1.1 200 OK Content-Type: Content-Disposition: attachment;filename= Clients can get thumbnails by supplying a desired width and height and thumbnailing method:: => GET /_matrix/media/r0/thumbnail/ /?width=&height=&method= HTTP/1.1 <= HTTP/1.1 200 OK Content-Type: image/jpeg or image/png The thumbnail methods are "crop" and "scale". "scale" tries to return an image where either the width or the height is smaller than the requested size. The client should then scale and letterbox the image if it needs to fit within a given rectangle. "crop" tries to return an image where the width and height are close to the requested size and the aspect matches the requested size. The client should scale the image if it needs to fit within a given rectangle. """ def __init__(self, hs: "HomeServer"): # If we're not configured to use it, raise if we somehow got here. if not hs.config.media.can_load_media_repo: raise ConfigError("Synapse is not configured to use a media repo.") super().__init__() media_repo = hs.get_media_repository() self.putChild(b"upload", UploadResource(hs, media_repo)) self.putChild(b"download", DownloadResource(hs, media_repo)) self.putChild( b"thumbnail", ThumbnailResource(hs, media_repo, media_repo.media_storage) ) if hs.config.media.url_preview_enabled: self.putChild( b"preview_url", PreviewUrlResource(hs, media_repo, media_repo.media_storage), ) self.putChild(b"config", MediaConfigResource(hs)) synapse-1.53.0/synapse/rest/media/v1/media_storage.py000066400000000000000000000310541420514467300225140ustar00rootroot00000000000000# Copyright 2018-2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import contextlib import logging import os import shutil from types import TracebackType from typing import ( IO, TYPE_CHECKING, Any, Awaitable, BinaryIO, Callable, Generator, Optional, Sequence, Tuple, Type, ) import attr from twisted.internet.defer import Deferred from twisted.internet.interfaces import IConsumer from twisted.protocols.basic import FileSender from synapse.api.errors import NotFoundError from synapse.logging.context import defer_to_thread, make_deferred_yieldable from synapse.util import Clock from synapse.util.file_consumer import BackgroundFileConsumer from ._base import FileInfo, Responder from .filepath import MediaFilePaths if TYPE_CHECKING: from synapse.server import HomeServer from .storage_provider import StorageProviderWrapper logger = logging.getLogger(__name__) class MediaStorage: """Responsible for storing/fetching files from local sources. Args: hs local_media_directory: Base path where we store media on disk filepaths storage_providers: List of StorageProvider that are used to fetch and store files. """ def __init__( self, hs: "HomeServer", local_media_directory: str, filepaths: MediaFilePaths, storage_providers: Sequence["StorageProviderWrapper"], ): self.hs = hs self.reactor = hs.get_reactor() self.local_media_directory = local_media_directory self.filepaths = filepaths self.storage_providers = storage_providers self.spam_checker = hs.get_spam_checker() self.clock = hs.get_clock() async def store_file(self, source: IO, file_info: FileInfo) -> str: """Write `source` to the on disk media store, and also any other configured storage providers Args: source: A file like object that should be written file_info: Info about the file to store Returns: the file path written to in the primary media store """ with self.store_into_file(file_info) as (f, fname, finish_cb): # Write to the main repository await self.write_to_file(source, f) await finish_cb() return fname async def write_to_file(self, source: IO, output: IO) -> None: """Asynchronously write the `source` to `output`.""" await defer_to_thread(self.reactor, _write_file_synchronously, source, output) @contextlib.contextmanager def store_into_file( self, file_info: FileInfo ) -> Generator[Tuple[BinaryIO, str, Callable[[], Awaitable[None]]], None, None]: """Context manager used to get a file like object to write into, as described by file_info. Actually yields a 3-tuple (file, fname, finish_cb), where file is a file like object that can be written to, fname is the absolute path of file on disk, and finish_cb is a function that returns an awaitable. fname can be used to read the contents from after upload, e.g. to generate thumbnails. finish_cb must be called and waited on after the file has been successfully been written to. Should not be called if there was an error. Args: file_info: Info about the file to store Example: with media_storage.store_into_file(info) as (f, fname, finish_cb): # .. write into f ... await finish_cb() """ path = self._file_info_to_path(file_info) fname = os.path.join(self.local_media_directory, path) dirname = os.path.dirname(fname) os.makedirs(dirname, exist_ok=True) finished_called = [False] try: with open(fname, "wb") as f: async def finish() -> None: # Ensure that all writes have been flushed and close the # file. f.flush() f.close() spam = await self.spam_checker.check_media_file_for_spam( ReadableFileWrapper(self.clock, fname), file_info ) if spam: logger.info("Blocking media due to spam checker") # Note that we'll delete the stored media, due to the # try/except below. The media also won't be stored in # the DB. raise SpamMediaException() for provider in self.storage_providers: await provider.store_file(path, file_info) finished_called[0] = True yield f, fname, finish except Exception as e: try: os.remove(fname) except Exception: pass raise e from None if not finished_called: raise Exception("Finished callback not called") async def fetch_media(self, file_info: FileInfo) -> Optional[Responder]: """Attempts to fetch media described by file_info from the local cache and configured storage providers. Args: file_info Returns: Returns a Responder if the file was found, otherwise None. """ paths = [self._file_info_to_path(file_info)] # fallback for remote thumbnails with no method in the filename if file_info.thumbnail and file_info.server_name: paths.append( self.filepaths.remote_media_thumbnail_rel_legacy( server_name=file_info.server_name, file_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, ) ) for path in paths: local_path = os.path.join(self.local_media_directory, path) if os.path.exists(local_path): logger.debug("responding with local file %s", local_path) return FileResponder(open(local_path, "rb")) logger.debug("local file %s did not exist", local_path) for provider in self.storage_providers: for path in paths: res: Any = await provider.fetch(path, file_info) if res: logger.debug("Streaming %s from %s", path, provider) return res logger.debug("%s not found on %s", path, provider) return None async def ensure_media_is_in_local_cache(self, file_info: FileInfo) -> str: """Ensures that the given file is in the local cache. Attempts to download it from storage providers if it isn't. Args: file_info Returns: Full path to local file """ path = self._file_info_to_path(file_info) local_path = os.path.join(self.local_media_directory, path) if os.path.exists(local_path): return local_path # Fallback for paths without method names # Should be removed in the future if file_info.thumbnail and file_info.server_name: legacy_path = self.filepaths.remote_media_thumbnail_rel_legacy( server_name=file_info.server_name, file_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, ) legacy_local_path = os.path.join(self.local_media_directory, legacy_path) if os.path.exists(legacy_local_path): return legacy_local_path dirname = os.path.dirname(local_path) os.makedirs(dirname, exist_ok=True) for provider in self.storage_providers: res: Any = await provider.fetch(path, file_info) if res: with res: consumer = BackgroundFileConsumer( open(local_path, "wb"), self.reactor ) await res.write_to_consumer(consumer) await consumer.wait() return local_path raise NotFoundError() def _file_info_to_path(self, file_info: FileInfo) -> str: """Converts file_info into a relative path. The path is suitable for storing files under a directory, e.g. used to store files on local FS under the base media repository directory. """ if file_info.url_cache: if file_info.thumbnail: return self.filepaths.url_cache_thumbnail_rel( media_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, method=file_info.thumbnail.method, ) return self.filepaths.url_cache_filepath_rel(file_info.file_id) if file_info.server_name: if file_info.thumbnail: return self.filepaths.remote_media_thumbnail_rel( server_name=file_info.server_name, file_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, method=file_info.thumbnail.method, ) return self.filepaths.remote_media_filepath_rel( file_info.server_name, file_info.file_id ) if file_info.thumbnail: return self.filepaths.local_media_thumbnail_rel( media_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, method=file_info.thumbnail.method, ) return self.filepaths.local_media_filepath_rel(file_info.file_id) def _write_file_synchronously(source: IO, dest: IO) -> None: """Write `source` to the file like `dest` synchronously. Should be called from a thread. Args: source: A file like object that's to be written dest: A file like object to be written to """ source.seek(0) # Ensure we read from the start of the file shutil.copyfileobj(source, dest) class FileResponder(Responder): """Wraps an open file that can be sent to a request. Args: open_file: A file like object to be streamed ot the client, is closed when finished streaming. """ def __init__(self, open_file: IO): self.open_file = open_file def write_to_consumer(self, consumer: IConsumer) -> Deferred: return make_deferred_yieldable( FileSender().beginFileTransfer(self.open_file, consumer) ) def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: self.open_file.close() class SpamMediaException(NotFoundError): """The media was blocked by a spam checker, so we simply 404 the request (in the same way as if it was quarantined). """ @attr.s(slots=True, auto_attribs=True) class ReadableFileWrapper: """Wrapper that allows reading a file in chunks, yielding to the reactor, and writing to a callback. This is simplified `FileSender` that takes an IO object rather than an `IConsumer`. """ CHUNK_SIZE = 2 ** 14 clock: Clock path: str async def write_chunks_to(self, callback: Callable[[bytes], None]) -> None: """Reads the file in chunks and calls the callback with each chunk.""" with open(self.path, "rb") as file: while True: chunk = file.read(self.CHUNK_SIZE) if not chunk: break callback(chunk) # We yield to the reactor by sleeping for 0 seconds. await self.clock.sleep(0) synapse-1.53.0/synapse/rest/media/v1/oembed.py000066400000000000000000000217531420514467300211510ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import urllib.parse from typing import TYPE_CHECKING, List, Optional import attr from synapse.rest.media.v1.preview_html import parse_html_description from synapse.types import JsonDict from synapse.util import json_decoder if TYPE_CHECKING: from lxml import etree from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class OEmbedResult: # The Open Graph result (converted from the oEmbed result). open_graph_result: JsonDict # The author_name of the oEmbed result author_name: Optional[str] # Number of milliseconds to cache the content, according to the oEmbed response. # # This will be None if no cache-age is provided in the oEmbed response (or # if the oEmbed response cannot be turned into an Open Graph response). cache_age: Optional[int] class OEmbedProvider: """ A helper for accessing oEmbed content. It can be used to check if a URL should be accessed via oEmbed and for requesting/parsing oEmbed content. """ def __init__(self, hs: "HomeServer"): self._oembed_patterns = {} for oembed_endpoint in hs.config.oembed.oembed_patterns: api_endpoint = oembed_endpoint.api_endpoint # Only JSON is supported at the moment. This could be declared in # the formats field. Otherwise, if the endpoint ends in .xml assume # it doesn't support JSON. if ( oembed_endpoint.formats is not None and "json" not in oembed_endpoint.formats ) or api_endpoint.endswith(".xml"): logger.info( "Ignoring oEmbed endpoint due to not supporting JSON: %s", api_endpoint, ) continue # Iterate through each URL pattern and point it to the endpoint. for pattern in oembed_endpoint.url_patterns: self._oembed_patterns[pattern] = api_endpoint def get_oembed_url(self, url: str) -> Optional[str]: """ Check whether the URL should be downloaded as oEmbed content instead. Args: url: The URL to check. Returns: A URL to use instead or None if the original URL should be used. """ for url_pattern, endpoint in self._oembed_patterns.items(): if url_pattern.fullmatch(url): # TODO Specify max height / width. # Note that only the JSON format is supported, some endpoints want # this in the URL, others want it as an argument. endpoint = endpoint.replace("{format}", "json") args = {"url": url, "format": "json"} query_str = urllib.parse.urlencode(args, True) return f"{endpoint}?{query_str}" # No match. return None def autodiscover_from_html(self, tree: "etree.Element") -> Optional[str]: """ Search an HTML document for oEmbed autodiscovery information. Args: tree: The parsed HTML body. Returns: The URL to use for oEmbed information, or None if no URL was found. """ # Search for link elements with the proper rel and type attributes. for tag in tree.xpath( "//link[@rel='alternate'][@type='application/json+oembed']" ): if "href" in tag.attrib: return tag.attrib["href"] # Some providers (e.g. Flickr) use alternative instead of alternate. for tag in tree.xpath( "//link[@rel='alternative'][@type='application/json+oembed']" ): if "href" in tag.attrib: return tag.attrib["href"] return None def parse_oembed_response(self, url: str, raw_body: bytes) -> OEmbedResult: """ Parse the oEmbed response into an Open Graph response. Args: url: The URL which is being previewed (not the one which was requested). raw_body: The oEmbed response as JSON encoded as bytes. Returns: json-encoded Open Graph data """ try: # oEmbed responses *must* be UTF-8 according to the spec. oembed = json_decoder.decode(raw_body.decode("utf-8")) # The version is a required string field, but not always provided, # or sometimes provided as a float. Be lenient. oembed_version = oembed.get("version", "1.0") if oembed_version != "1.0" and oembed_version != 1: raise RuntimeError(f"Invalid oEmbed version: {oembed_version}") # Ensure the cache age is None or an int. cache_age = oembed.get("cache_age") if cache_age: cache_age = int(cache_age) * 1000 # The results. open_graph_response = { "og:url": url, } title = oembed.get("title") if title: open_graph_response["og:title"] = title author_name = oembed.get("author_name") # Use the provider name and as the site. provider_name = oembed.get("provider_name") if provider_name: open_graph_response["og:site_name"] = provider_name # If a thumbnail exists, use it. Note that dimensions will be calculated later. if "thumbnail_url" in oembed: open_graph_response["og:image"] = oembed["thumbnail_url"] # Process each type separately. oembed_type = oembed["type"] if oembed_type == "rich": calc_description_and_urls(open_graph_response, oembed["html"]) elif oembed_type == "photo": # If this is a photo, use the full image, not the thumbnail. open_graph_response["og:image"] = oembed["url"] elif oembed_type == "video": open_graph_response["og:type"] = "video.other" calc_description_and_urls(open_graph_response, oembed["html"]) open_graph_response["og:video:width"] = oembed["width"] open_graph_response["og:video:height"] = oembed["height"] elif oembed_type == "link": open_graph_response["og:type"] = "website" else: raise RuntimeError(f"Unknown oEmbed type: {oembed_type}") except Exception as e: # Trap any exception and let the code follow as usual. logger.warning("Error parsing oEmbed metadata from %s: %r", url, e) open_graph_response = {} author_name = None cache_age = None return OEmbedResult(open_graph_response, author_name, cache_age) def _fetch_urls(tree: "etree.Element", tag_name: str) -> List[str]: results = [] for tag in tree.xpath("//*/" + tag_name): if "src" in tag.attrib: results.append(tag.attrib["src"]) return results def calc_description_and_urls(open_graph_response: JsonDict, html_body: str) -> None: """ Calculate description for an HTML document. This uses lxml to convert the HTML document into plaintext. If errors occur during processing of the document, an empty response is returned. Args: open_graph_response: The current Open Graph summary. This is updated with additional fields. html_body: The HTML document, as bytes. Returns: The summary """ # If there's no body, nothing useful is going to be found. if not html_body: return from lxml import etree # Create an HTML parser. If this fails, log and return no metadata. parser = etree.HTMLParser(recover=True, encoding="utf-8") # Attempt to parse the body. If this fails, log and return no metadata. tree = etree.fromstring(html_body, parser) # The data was successfully parsed, but no tree was found. if tree is None: return # Attempt to find interesting URLs (images, videos, embeds). if "og:image" not in open_graph_response: image_urls = _fetch_urls(tree, "img") if image_urls: open_graph_response["og:image"] = image_urls[0] video_urls = _fetch_urls(tree, "video") + _fetch_urls(tree, "embed") if video_urls: open_graph_response["og:video"] = video_urls[0] description = parse_html_description(tree) if description: open_graph_response["og:description"] = description synapse-1.53.0/synapse/rest/media/v1/preview_html.py000066400000000000000000000347571420514467300224330ustar00rootroot00000000000000# Copyright 2021 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import codecs import itertools import logging import re from typing import TYPE_CHECKING, Dict, Generator, Iterable, Optional, Set, Union from urllib import parse as urlparse if TYPE_CHECKING: from lxml import etree logger = logging.getLogger(__name__) _charset_match = re.compile( br'<\s*meta[^>]*charset\s*=\s*"?([a-z0-9_-]+)"?', flags=re.I ) _xml_encoding_match = re.compile( br'\s*<\s*\?\s*xml[^>]*encoding="([a-z0-9_-]+)"', flags=re.I ) _content_type_match = re.compile(r'.*; *charset="?(.*?)"?(;|$)', flags=re.I) def _normalise_encoding(encoding: str) -> Optional[str]: """Use the Python codec's name as the normalised entry.""" try: return codecs.lookup(encoding).name except LookupError: return None def _get_html_media_encodings( body: bytes, content_type: Optional[str] ) -> Iterable[str]: """ Get potential encoding of the body based on the (presumably) HTML body or the content-type header. The precedence used for finding a character encoding is: 1. tag with a charset declared. 2. The XML document's character encoding attribute. 3. The Content-Type header. 4. Fallback to utf-8. 5. Fallback to windows-1252. This roughly follows the algorithm used by BeautifulSoup's bs4.dammit.EncodingDetector. Args: body: The HTML document, as bytes. content_type: The Content-Type header. Returns: The character encoding of the body, as a string. """ # There's no point in returning an encoding more than once. attempted_encodings: Set[str] = set() # Limit searches to the first 1kb, since it ought to be at the top. body_start = body[:1024] # Check if it has an encoding set in a meta tag. match = _charset_match.search(body_start) if match: encoding = _normalise_encoding(match.group(1).decode("ascii")) if encoding: attempted_encodings.add(encoding) yield encoding # TODO Support # Check if it has an XML document with an encoding. match = _xml_encoding_match.match(body_start) if match: encoding = _normalise_encoding(match.group(1).decode("ascii")) if encoding and encoding not in attempted_encodings: attempted_encodings.add(encoding) yield encoding # Check the HTTP Content-Type header for a character set. if content_type: content_match = _content_type_match.match(content_type) if content_match: encoding = _normalise_encoding(content_match.group(1)) if encoding and encoding not in attempted_encodings: attempted_encodings.add(encoding) yield encoding # Finally, fallback to UTF-8, then windows-1252. for fallback in ("utf-8", "cp1252"): if fallback not in attempted_encodings: yield fallback def decode_body( body: bytes, uri: str, content_type: Optional[str] = None ) -> Optional["etree.Element"]: """ This uses lxml to parse the HTML document. Args: body: The HTML document, as bytes. uri: The URI used to download the body. content_type: The Content-Type header. Returns: The parsed HTML body, or None if an error occurred during processed. """ # If there's no body, nothing useful is going to be found. if not body: return None # The idea here is that multiple encodings are tried until one works. # Unfortunately the result is never used and then LXML will decode the string # again with the found encoding. for encoding in _get_html_media_encodings(body, content_type): try: body.decode(encoding) except Exception: pass else: break else: logger.warning("Unable to decode HTML body for %s", uri) return None from lxml import etree # Create an HTML parser. parser = etree.HTMLParser(recover=True, encoding=encoding) # Attempt to parse the body. Returns None if the body was successfully # parsed, but no tree was found. return etree.fromstring(body, parser) def parse_html_to_open_graph( tree: "etree.Element", media_uri: str ) -> Dict[str, Optional[str]]: """ Parse the HTML document into an Open Graph response. This uses lxml to search the HTML document for Open Graph data (or synthesizes it from the document). Args: tree: The parsed HTML document. media_url: The URI used to download the body. Returns: The Open Graph response as a dictionary. """ # if we see any image URLs in the OG response, then spider them # (although the client could choose to do this by asking for previews of those # URLs to avoid DoSing the server) # "og:type" : "video", # "og:url" : "https://www.youtube.com/watch?v=LXDBoHyjmtw", # "og:site_name" : "YouTube", # "og:video:type" : "application/x-shockwave-flash", # "og:description" : "Fun stuff happening here", # "og:title" : "RemoteJam - Matrix team hack for Disrupt Europe Hackathon", # "og:image" : "https://i.ytimg.com/vi/LXDBoHyjmtw/maxresdefault.jpg", # "og:video:url" : "http://www.youtube.com/v/LXDBoHyjmtw?version=3&autohide=1", # "og:video:width" : "1280" # "og:video:height" : "720", # "og:video:secure_url": "https://www.youtube.com/v/LXDBoHyjmtw?version=3", og: Dict[str, Optional[str]] = {} for tag in tree.xpath("//*/meta[starts-with(@property, 'og:')]"): if "content" in tag.attrib: # if we've got more than 50 tags, someone is taking the piss if len(og) >= 50: logger.warning("Skipping OG for page with too many 'og:' tags") return {} og[tag.attrib["property"]] = tag.attrib["content"] # TODO: grab article: meta tags too, e.g.: # "article:publisher" : "https://www.facebook.com/thethudonline" /> # "article:author" content="https://www.facebook.com/thethudonline" /> # "article:tag" content="baby" /> # "article:section" content="Breaking News" /> # "article:published_time" content="2016-03-31T19:58:24+00:00" /> # "article:modified_time" content="2016-04-01T18:31:53+00:00" /> if "og:title" not in og: # do some basic spidering of the HTML title = tree.xpath("(//title)[1] | (//h1)[1] | (//h2)[1] | (//h3)[1]") if title and title[0].text is not None: og["og:title"] = title[0].text.strip() else: og["og:title"] = None if "og:image" not in og: # TODO: extract a favicon failing all else meta_image = tree.xpath( "//*/meta[translate(@itemprop, 'IMAGE', 'image')='image']/@content" ) if meta_image: og["og:image"] = rebase_url(meta_image[0], media_uri) else: # TODO: consider inlined CSS styles as well as width & height attribs images = tree.xpath("//img[@src][number(@width)>10][number(@height)>10]") images = sorted( images, key=lambda i: ( -1 * float(i.attrib["width"]) * float(i.attrib["height"]) ), ) if not images: images = tree.xpath("//img[@src]") if images: og["og:image"] = images[0].attrib["src"] if "og:description" not in og: meta_description = tree.xpath( "//*/meta" "[translate(@name, 'DESCRIPTION', 'description')='description']" "/@content" ) if meta_description: og["og:description"] = meta_description[0] else: og["og:description"] = parse_html_description(tree) elif og["og:description"]: # This must be a non-empty string at this point. assert isinstance(og["og:description"], str) og["og:description"] = summarize_paragraphs([og["og:description"]]) # TODO: delete the url downloads to stop diskfilling, # as we only ever cared about its OG return og def parse_html_description(tree: "etree.Element") -> Optional[str]: """ Calculate a text description based on an HTML document. Grabs any text nodes which are inside the tag, unless they are within an HTML5 semantic markup tag (
,